diff --git a/.gitignore b/.gitignore index bb4b4700b..7a3cf252e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,16 @@ *~ *.tmp *.swp -.buildpath -.project -.settings/ -nbproject/ -library/Zend/ -library/Zend.arc/ tests/report/* +html/styles/default/old +html/scripts/old # # data : cache, tmp, session # data/cache/* data/tmp/* data/session/* +!.gitignore # # latex # @@ -27,4 +24,4 @@ docs/src/*.toc docs/src/*.pdf #docs/html/* #docs/txt/* -#docs/pdf/* \ No newline at end of file +#docs/pdf/* diff --git a/4CONTRIBUTORS b/4CONTRIBUTORS old mode 100644 new mode 100755 diff --git a/4CONTRIBUTORS.ru b/4CONTRIBUTORS.ru old mode 100644 new mode 100755 diff --git a/AUTHORS b/AUTHORS old mode 100644 new mode 100755 index 2b1924dd4..c0401a259 --- a/AUTHORS +++ b/AUTHORS @@ -21,5 +21,6 @@ Sébastien Ursini : documentation to install Sven-Hendrik Haase : German translation Tomáš Rybička : Czech translation Venkatakrishnan Ganesh : wterminal +Wanderlei Hüttel : Portuguese Translations, patchs, new visual Yuriy Timofeev : Webacula developer diff --git a/COPYING b/COPYING old mode 100644 new mode 100755 diff --git a/ChangeLog b/ChangeLog old mode 100644 new mode 100755 index 5c5326056..74e03a91c --- a/ChangeLog +++ b/ChangeLog @@ -1,18 +1,65 @@ Webacula ChangeLog ------------------ -=== 7.0.0 (Sat Oct 4 2014) +=== 7.5.3 (Tue Nov 07, 2017) + - New feature added to get File size before compression (need run scripts) + - Included the database size in the About Page + - Updated webacula tables + - Update translations + - Minor bugfixes + + +=== 7.5.2 (Mon July 10, 2017) + - Fix Model method "getListJobs" to work with Bacula 9.0 + - Fix bacula logo href + - Update version + +=== 7.5.1 (Tue May 30, 2017) + - Bugfixes + - Modify library JS and CSS from scripts/bconsole + - Fix bconsole command execution and add translations + - Change position of buttons wbjobdesc/wblogbook and fix button wblogbook that was not showing correct + - Fix the schedules when their names are similar and didn't show correctly + - Modified wbjobdesc and add option to select jobs instead to write + - Add an index (FileIndex) in table WbTmpTable + - Change WBLogBook query to use LIKE + - Fix wrong number of jobs in the volumes + - Modify dialog confirm, add new CSS and new translations + - Add CSS for menu multilevel + - Include configuration of catalog version in config.ini + - Allow dots in login + +=== 7.5.0 (Fri May 05, 2017) + - The main change is that the interface was updated to use Boostrap CSS themes + - All libraries CSS and JavaScript was updated + - Some libraries CSS and JS were removed + - New show outputs from bconsole (schedule, pool) + +=== 7.4.0 (It was not released as version, just in the git Branch-7.4 + - Huge speed improvement in restore file selection (https://github.com/tim4dev/webacula/pull/4 and https://github.com/bareos/contrib-webacula/commit/cecacf944c57a3f4a966a3d6a9aab20d57ba6149) + - Minor changes in styles CSS + - A small changes in layout of volume/pools + - Better method to convert bytes to humanreadable + - Added new setting days_to_show_jobs_terminated feature (Terminated jobs can show more than 1 day) (https://github.com/tim4dev/webacula/pull/8) + - Added new setting date_format and and datetime_format (Option to modify date/time format) + - Better translation for Brazilian Portuguese (pt_BR) + - New field to show when volumes will expire in Volumes + - Set default password for root: bacula (just leave 'webacula_root_pwd' empty in db.conf) + - New feature. Menu option to show the schedules + + +=== 7.0.0 (Sat Oct 04, 2014) WARNING! Webacula 7.x incompatible with prior versions! Please see the "Upgrade from prior version" chapter of file docs/txt/install.txt The Webacula Users password hasher implements the Portable PHP password hashing framework http://www.openwall.com/phpass/, which is used in WordPress, Drupal and other. Now encrypted Webacula users passwords on all supported databases: MySQL, PostgreSQL, Sqlite3. -=== 5.5.2 (Sun Oct 30 2011) +=== 5.5.2 (Sun Oct 30, 2011) Show human readable short Job description instead (or both) of Bacula Job names (see config.ini for details). Show Bacula Job resource record (bconsole> show job="xxx"). Small bugfixes. -=== 5.5.1 (Sat Sep 10 2011) +=== 5.5.1 (Sat Sep 10, 2011) Small bugfixes. === 5.5.0 @@ -25,23 +72,23 @@ Webacula ChangeLog Documentation to install Webacula on Ubuntu/Debian based. PHP session is stored in the table. -=== 5.0.3 (Mon Jan 24 2011) +=== 5.0.3 (Mon Jan 24, 2011) Fix bug #3151906 -- "Single" files missing from "Select Files for Restore" -=== 5.0.2 (Wed Aug 11 2010) +=== 5.0.2 (Wed Aug 11, 2010) Fresh Portuguese Brazil translation by Samuel Rios Carvalho -=== 5.0.1 (Thu May 12 2010) +=== 5.0.1 (Thu May 12, 2010) fix bug #3000461 Restore selected files -=== 5.0 (Thu Feb 20 2010) +=== 5.0 (Thu Feb 20, 2010) Important : required Bacula 5.0 or later. Important : now database 'webacula' NOT required for Restore Jobs. Now create a tree of files to Job Restore is faster at 30%--50% Add few options into restore pages. Add Spanish translation by Efren Bravo Implements "Reviewed" feature: if the Job completed with an error, then you can click on the link "Written in Logbook" and "Reviewed" this Job. Then don't show this Job in list "Jobs with errors" in future. See also trac ticket #43. -=== 3.5 (Tue Feb 16 2010) +=== 3.5 (Tue Feb 16, 2010) Job->Search->File name (LIKE, REGEX) and restore single file. Support mount/unmount Autochanger. Display Autochanger content. @@ -56,7 +103,7 @@ PurgedFiles (set when all File records purged). See 'developers/Database_Tables. === 3.4.1 Fix bug #545471 in bugzilla RedHat. -=== 3.4 (Wed Dec 2 2009) +=== 3.4 (Wed Dec 2, 2009) Add "Select full restore to a specified JobId". Add web/ajax terminal to Bacula Console. Add on "List of Running Jobs" the view of "joblog", so is possible to check the running session. diff --git a/UPGRADE b/UPGRADE old mode 100644 new mode 100755 diff --git a/application/.htaccess b/application/.htaccess old mode 100644 new mode 100755 diff --git a/application/cli/.htaccess b/application/cli/.htaccess old mode 100644 new mode 100755 diff --git a/application/cli/test.php b/application/cli/test.php old mode 100644 new mode 100755 diff --git a/application/config.ini b/application/config.ini old mode 100644 new mode 100755 index 0e29ad19a..a3a8f1a20 --- a/application/config.ini +++ b/application/config.ini @@ -7,25 +7,30 @@ [general] ;; supported adapters : PDO_MYSQL, PDO_PGSQL, PDO_SQLITE -db.adapter = PDO_MYSQL +db.adapter = PDO_PGSQL db.config.host = localhost -db.config.username = root -db.config.password = +db.config.username = bacula +db.config.password = bacula db.config.dbname = bacula ;; for Sqlite db.config.dbname = "/opt/bacula/working/bacula.db" + +;; Version of Bacula Catalog +catalog.version = 1022 + + ;; see http://www.php.net/timezones ; def.timezone = "UTC" -def.timezone = "Europe/Minsk" +def.timezone = "America/Sao_Paulo" ;; if locale undefined, webacula use autodetect ;; avaliable locales : en, cs, de, fr, pt_BR, ru, it, es -; locale = "en" +locale = "pt_BR" ;; see INSTALL file for details bacula.sudo = "/usr/bin/sudo" -bacula.bconsole = "/opt/bacula/sbin/bconsole" -bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" +bacula.bconsole = "/usr/sbin/bconsole" +bacula.bconsolecmd = "-n -c /etc/bacula/bconsole.conf" ;; time to live data (session and temporary data tables) for restore files (sec) ; default = 1h @@ -34,14 +39,13 @@ bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" ;; the text, which will be placed in the header of the page ; head_title = "webacula :: domain.tld" -;; Main menu floating (default = 0) -;; A floating menu stays visible even if you scroll down a web page. -;; They're animated, so they move up and down as you scroll the browser window up or down. -; mainmenu_floating = 1 - ;; As many days to show those Jobs that are completed with errors (default = 7) ;; Jobs with errors (last NN day(s) -; days_to_show_jobs_with_errors = 7 +days_to_show_jobs_with_errors = 1 + +;; As many days to show those Jobs that are terminated (default = 1) +;; Jobs terminated (last NN day(s) +days_to_show_jobs_terminated = 7 ;; Show human readable short Job description instead of Bacula Job names (default = 0) ; avaliable optins : 0 | 1 | 2 @@ -59,6 +63,12 @@ bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" ; bacula_restore_job[] = "Restore_Files_2" ; and so on. +; Option to set date and time format +; Default values +; date_format = "Y-m-d" +; datetime_format = "Y-m-d H:i:s" +date_format = "d/m/Y" +datetime_format = "d/m/Y H:i:s" [timeline] @@ -68,19 +78,16 @@ bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" fontsize = 10 - [webacula] email.to_admin = root@localhost email.from = webacula@localhost - [feed] feed_title = "My Bacula backup server #1" feed_desc = "Description feed here" - [layout] ;; available values : "default" path = "default" diff --git a/application/config.ini.original b/application/config.ini.original old mode 100644 new mode 100755 index 0e29ad19a..304b68302 --- a/application/config.ini.original +++ b/application/config.ini.original @@ -14,9 +14,14 @@ db.config.password = db.config.dbname = bacula ;; for Sqlite db.config.dbname = "/opt/bacula/working/bacula.db" + +;; Version of Bacula Catalog +catalog.version = 15 + + ;; see http://www.php.net/timezones ; def.timezone = "UTC" -def.timezone = "Europe/Minsk" +def.timezone = "America/Sao_Paulo" ;; if locale undefined, webacula use autodetect ;; avaliable locales : en, cs, de, fr, pt_BR, ru, it, es @@ -24,8 +29,8 @@ def.timezone = "Europe/Minsk" ;; see INSTALL file for details bacula.sudo = "/usr/bin/sudo" -bacula.bconsole = "/opt/bacula/sbin/bconsole" -bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" +bacula.bconsole = "/usr/sbin/bconsole" +bacula.bconsolecmd = "-n -c /etc/bacula/bconsole.conf" ;; time to live data (session and temporary data tables) for restore files (sec) ; default = 1h @@ -34,14 +39,13 @@ bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" ;; the text, which will be placed in the header of the page ; head_title = "webacula :: domain.tld" -;; Main menu floating (default = 0) -;; A floating menu stays visible even if you scroll down a web page. -;; They're animated, so they move up and down as you scroll the browser window up or down. -; mainmenu_floating = 1 - ;; As many days to show those Jobs that are completed with errors (default = 7) ;; Jobs with errors (last NN day(s) -; days_to_show_jobs_with_errors = 7 +days_to_show_jobs_with_errors = 1 + +;; As many days to show those Jobs that are terminated (default = 1) +;; Jobs terminated (last NN day(s) +days_to_show_jobs_terminated = 7 ;; Show human readable short Job description instead of Bacula Job names (default = 0) ; avaliable optins : 0 | 1 | 2 @@ -59,6 +63,10 @@ bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" ; bacula_restore_job[] = "Restore_Files_2" ; and so on. +; Option to set date and time format +; Default values +; date_format = "Y-m-d" +; datetime_format = "Y-m-d H:i:s" [timeline] @@ -68,19 +76,16 @@ bacula.bconsolecmd = "-n -c /opt/bacula/etc/bconsole.conf" fontsize = 10 - [webacula] email.to_admin = root@localhost email.from = webacula@localhost - [feed] feed_title = "My Bacula backup server #1" feed_desc = "Description feed here" - [layout] ;; available values : "default" path = "default" diff --git a/application/controllers/AdminController.php b/application/controllers/AdminController.php old mode 100644 new mode 100755 index 04c7810e5..415716c58 --- a/application/controllers/AdminController.php +++ b/application/controllers/AdminController.php @@ -32,7 +32,7 @@ class AdminController extends MyClass_ControllerAclAction * jQuery UI Tabs, Options, selected: * Zero-based index of the tab to be selected on initialization. * To set all tabs to unselected pass -1 as value. - * $('.selector').tabs({ selected: 3 }); + * $('.selector').tabs({ active: 3 }); */ private $_jQueryUItabSelected = array( 'role' => 0, @@ -86,7 +86,7 @@ public function indexAction() { public function roleIndexAction() { $roles = new Wbroles(); $this->view->result = $roles->fetchAllRoles(); - $this->view->title = 'Webacula :: ' . $this->view->translate->_('Roles'); + $this->view->title = $this->view->translate->_('Roles'); } @@ -121,9 +121,10 @@ public function roleAddAction() return; } } - $form->setAction( $this->view->baseUrl . '/admin/role-add' ); + $form->setAction( $this->view->baseUrl . '/admin/role-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form = $form; - $this->view->title = 'Webacula :: ' . $this->view->translate->_('Role add'); + $this->view->title = $this->view->translate->_('Role add'); $this->renderScript('admin/form-role.phtml'); } @@ -137,7 +138,7 @@ public function roleUpdateAction() $form = new FormRole(null, $role_id); $table = new Wbroles(); if ( $this->_request->isPost() ) { - // Проверяем валидность данных формы + // We check the validity of the form data if ( $form->isValid($this->_getAllParams()) ) { // update data @@ -175,9 +176,10 @@ public function roleUpdateAction() 'inherit_id' => $row->inherit_id )); $form->submit->setLabel($this->view->translate->_('Update')); - $form->setAction( $this->view->baseUrl . '/admin/role-update' ); + $form->setAction( $this->view->baseUrl . '/admin/role-update' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form = $form; - $this->view->title = 'Webacula :: ' . $this->view->translate->_('Role update'); + $this->view->title = $this->view->translate->_('Role update'); $this->renderScript('admin/form-role.phtml'); } @@ -198,6 +200,7 @@ public function roleDeleteAction() $this->cache_helper->clearAllCache(); // render $this->_forward('role-index', 'admin'); // action, controller + $this->_redirect('admin/role-index'); } @@ -214,7 +217,7 @@ public function webaculaUpdateAction() $form = new FormWebaculaACL(); $table = new Wbresources(); if ( $this->_request->isPost() ) { - // Проверяем валидность данных формы + // We check the validity of the form data if ( $form->isValid($this->_getAllParams()) ) { // update data @@ -251,7 +254,8 @@ public function webaculaUpdateAction() $form->populate( array( 'webacula_resources' => $webacula_resources )); - $form->setAction( $this->view->baseUrl . '/admin/role-main-form' ); + $form->setAction( $this->view->baseUrl . '/admin/role-main-form' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form = $form; $this->view->tabs_selected = $this->_jQueryUItabSelected['webacula']; // jQuery UI Tabs $this->renderScript('admin/role-main-form.phtml'); @@ -271,7 +275,7 @@ public function commandsUpdateAction() $form = new FormBaculaCommandACL(); $table = new WbCommandACL(); if ( $this->_request->isPost() ) { - // Проверяем валидность данных формы + // We check the validity of the form data if ( $form->isValid($this->_getAllParams()) ) { // update data @@ -308,7 +312,8 @@ public function commandsUpdateAction() $form->populate( array( 'bacula_commands' => $bacula_commands )); - $form->setAction( $this->view->baseUrl . '/admin/role-main-form' ); + $form->setAction( $this->view->baseUrl . '/admin/role-main-form' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form = $form; $this->view->tabs_selected = $this->_jQueryUItabSelected['command']; // jQuery UI Tabs $this->renderScript('admin/role-main-form.phtml'); @@ -372,7 +377,7 @@ public function aclAddDispatcher($acl) $this->view->errors = $form->getMessages(); $form->setAction( $this->view->baseUrl . '/admin/'.$acl.'-add' ); $this->view->form = $form; - $this->view->title = 'Webacula :: ' . $this->view->translate->_(ucfirst($acl).' ACL add') . + $this->view->title = $this->view->translate->_(ucfirst($acl).' ACL add') . ' :: [' . $role_id . '] ' . $role_name; $this->renderScript('admin/form-bacula-acl.phtml'); return; @@ -421,7 +426,7 @@ public function aclUpdateDispatcher($acl) throw new Exception(__METHOD__.' : Empty input parameters'); $form = new FormBaculaACL(); if ( $this->_request->isPost() ) { - // Проверяем валидность данных формы + // We check the validity of the form data if ( $form->isValid($this->_getAllParams()) ) { // update data @@ -456,10 +461,11 @@ public function aclUpdateDispatcher($acl) 'order' => $row->order_acl, 'role_id'=> $role_id )); - $form->submit->setLabel($this->view->translate->_('Update')); - $form->setAction( $this->view->baseUrl . '/admin/'.$acl.'-update' ); + $form->submit_button->setLabel($this->view->translate->_('Update')); + $form->setAction( $this->view->baseUrl . '/admin/'.$acl.'-update' ) + ->setActionCancel( $this->view->baseUrl . '/admin/role-main-form/role_id/'.$role_id); $this->view->form = $form; - $this->view->title = 'Webacula :: ' . $this->view->translate->_(ucfirst($acl).' ACL update'); + $this->view->title = $this->view->translate->_(ucfirst($acl).' ACL update'); $this->renderScript('admin/form-bacula-acl.phtml'); } @@ -710,7 +716,8 @@ public function roleMainFormAction() 'order' => $role->order_role, 'inherit_id' => $role->inherit_id )); - $form_role->setAction( $this->view->baseUrl . '/admin/role-update' ); + $form_role->setAction( $this->view->baseUrl . '/admin/role-update' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_role = $form_role; /********************************** * Webacula ACL form @@ -735,7 +742,8 @@ public function roleMainFormAction() 'webacula_resources' => $webacula_resources, 'role_id' => $role_id )); - $form_webacula->setAction( $this->view->baseUrl . '/admin/webacula-update' ); + $form_webacula->setAction( $this->view->baseUrl . '/admin/webacula-update' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_webacula = $form_webacula; /********************************** * Command ACL form @@ -760,7 +768,8 @@ public function roleMainFormAction() 'bacula_commands' => $bacula_commands, 'role_id' => $role_id )); - $form_commands->setAction( $this->view->baseUrl . '/admin/commands-update' ); + $form_commands->setAction( $this->view->baseUrl . '/admin/commands-update' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_commands = $form_commands; /********************************** * Client ACL form @@ -776,7 +785,8 @@ public function roleMainFormAction() 'role_id' => $role_id, 'role_name' => $role->name )); - $form_client->setAction( $this->view->baseUrl . '/admin/client-add' ); + $form_client->setAction( $this->view->baseUrl . '/admin/client-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_client = $form_client; // Fill data from Bacula database $this->view->form_bacula_fill_client = new FormBaculaFill('Client', 'webacula_client_acl', $role_id, $role->name); @@ -795,7 +805,8 @@ public function roleMainFormAction() 'role_id' => $role_id, 'role_name' => $role->name )); - $form_fileset->setAction( $this->view->baseUrl . '/admin/fileset-add' ); + $form_fileset->setAction( $this->view->baseUrl . '/admin/fileset-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_fileset = $form_fileset; // Fill data from Bacula database $this->view->form_bacula_fill_fileset = new FormBaculaFill('FileSet', 'webacula_fileset_acl', $role_id, $role->name); @@ -814,7 +825,8 @@ public function roleMainFormAction() 'role_id' => $role_id, 'role_name' => $role->name )); - $form_job->setAction( $this->view->baseUrl . '/admin/job-add' ); + $form_job->setAction( $this->view->baseUrl . '/admin/job-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_job = $form_job; // Fill data from Bacula database $this->view->form_bacula_fill_job = new FormBaculaFill('Job', 'webacula_job_acl', $role_id, $role->name); @@ -833,7 +845,8 @@ public function roleMainFormAction() 'role_id' => $role_id, 'role_name' => $role->name )); - $form_pool->setAction( $this->view->baseUrl . '/admin/pool-add' ); + $form_pool->setAction( $this->view->baseUrl . '/admin/pool-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_pool = $form_pool; // Fill data from Bacula database $this->view->form_bacula_fill_pool = new FormBaculaFill('Pool', 'webacula_pool_acl', $role_id, $role->name); @@ -852,7 +865,8 @@ public function roleMainFormAction() 'role_id' => $role_id, 'role_name' => $role->name )); - $form_storage->setAction( $this->view->baseUrl . '/admin/storage-add' ); + $form_storage->setAction( $this->view->baseUrl . '/admin/storage-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_storage = $form_storage; // Fill data from Bacula database $this->view->form_bacula_fill_storage = new FormBaculaFill('Storage', 'webacula_storage_acl', $role_id, $role->name); @@ -871,14 +885,15 @@ public function roleMainFormAction() 'role_id' => $role_id, 'role_name' => $role->name )); - $form_where->setAction( $this->view->baseUrl . '/admin/where-add' ); + $form_where->setAction( $this->view->baseUrl . '/admin/where-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/role-index' ); $this->view->form_where = $form_where; /********************************** * view **********************************/ // title - $this->view->title = 'Webacula :: ' . $this->view->translate->_('Role') .' :: '. $role->name; + $this->view->title = $this->view->translate->_('Role') .': '. $role->name; $this->view->role_id = $role_id; // jQuery UI Tabs $tabs_selected = $this->_request->getParam('tabs_selected', 'role'); @@ -895,7 +910,7 @@ public function roleMoreInfoAction() // get Role name $table = new Wbroles(); $role = $table->fetchRow($table->getAdapter()->quoteInto('id = ?', $role_id)); - $this->view->title = 'Webacula :: ' . $this->view->translate->_('Role') .' :: '. $role->name; + $this->view->title = $this->view->translate->_('Role') .': '. $role->name; // inherited roles $this->view->inherited_roles = $table->getParentNames( $role_id ); // who use @@ -913,7 +928,9 @@ public function userIndexAction() { $order = addslashes( $this->_request->getParam('order') ); $users = new Wbusers(); $this->view->result = $users->fetchAllUsers($order); - $this->view->title = 'Webacula :: ' . $this->view->translate->_('Users'); + $this->view->title = $this->view->translate->_('Users'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } @@ -926,7 +943,7 @@ public function userUpdateAction() $form = new FormUser(null, 'update'); $table = new Wbusers(); if ( $this->_request->isPost() ) { - // Проверяем валидность данных формы + // We check the validity of the form data if ( $form->isValid($this->_getAllParams()) ) { // update data @@ -962,10 +979,11 @@ public function userUpdateAction() 'active' => $row->active, 'role_id' => $row->role_id )); - $form->submit->setLabel($this->view->translate->_('Update')); - $form->setAction( $this->view->baseUrl . '/admin/user-update' ); + $form->submit_button->setLabel($this->view->translate->_('Update')); + $form->setAction( $this->view->baseUrl . '/admin/user-update' ) + ->setActionCancel( $this->view->baseUrl .'/admin/user-index' ); $this->view->form = $form; - $this->view->title = 'Webacula :: ' . $this->view->translate->_('User update'); + $this->view->title = $this->view->translate->_('User update'); $this->renderScript('admin/form-user.phtml'); } @@ -1000,10 +1018,11 @@ public function userAddAction() } } $form->populate( array('action_id' => 'add') ); - $form->submit->setLabel($this->view->translate->_('Add')); - $form->setAction( $this->view->baseUrl . '/admin/user-add' ); + $form->submit_button->setLabel($this->view->translate->_('Add')); + $form->setAction( $this->view->baseUrl . '/admin/user-add' ) + ->setActionCancel( $this->view->baseUrl .'/admin/user-index' ); $this->view->form = $form; - $this->view->title = 'Webacula :: ' . $this->view->translate->_('User add'); + $this->view->title = $this->view->translate->_('User add'); $this->renderScript('admin/form-user.phtml'); } @@ -1028,9 +1047,10 @@ public function userDeleteAction() // clear all cache $this->cache_helper->clearAllCache(); // render - $this->_forward('user-index', 'admin'); // action, controller + //$this->_forward('user-index', 'admin'); // action, controller + $this->_redirect('admin/user-index'); } -} \ No newline at end of file +} diff --git a/application/controllers/AuthController.php b/application/controllers/AuthController.php old mode 100644 new mode 100755 index fd137ee33..77bdb284f --- a/application/controllers/AuthController.php +++ b/application/controllers/AuthController.php @@ -42,9 +42,9 @@ public function init() $this->_helper->layout->setLayout('login'); // translate $this->view->translate = Zend_Registry::get('translate'); - // для переадресаций + // For redirects $this->_redirector = $this->_helper->getHelper('Redirector'); - // для подсчета кол-ва неудачных логинов для вывода капчи + // To count the number of failed logins for captcha output $this->defNamespace = new Zend_Session_Namespace('Default'); // Get current role_id, role_name $auth = Zend_Auth::getInstance(); @@ -54,10 +54,10 @@ public function init() /* - * @return true если юзер залогинился + * @return true If the user is logged in */ - /* Использование : - * // это действие недоступно без регистрации + /* Using : + * // This action is not available without registration if ( !$this->isAuth() ) { $this->_redirect('auth/login'); } @@ -73,12 +73,12 @@ function isAuth() public function loginAction() { if ( $this->isAuth() ) { - $this->_forward('index', 'index'); // если уже залогинен: action, controller + $this->_forward('index', 'index'); // If already logged in: action, controller return; } $form = new formLogin(); if ( $this->_request->isPost() ) { - /* Проверяем валидность данных формы */ + /* We check the validity of the form data */ if ( $form->isValid($this->_getAllParams()) ) { $users = new Wbusers(); @@ -86,14 +86,14 @@ public function loginAction() if( $users->checkPassword( $login, $form->getValue('pwd') ) ) { $user = $users->fetchUser($login); - $user[0]['pwd'] = ''; // пароль обнуляем + $user[0]['pwd'] = ''; // Password reset to zero $user = (object)$user[0]; - /* Пишем в сессию (default) необходимые нам данные */ + /* We write to the session (default) the data we need */ $auth = Zend_Auth::getInstance(); $storage = $auth->getStorage(); // find role name $storage->write( $user ); - // обнуляем счетчик неудачных логинов + // Reset the counter of failed login if (isset($this->defNamespace->numLoginFails)) $this->defNamespace->numLoginFails = 0; // remember me @@ -108,15 +108,16 @@ public function loginAction() } else { sleep(7); $this->view->msg = $this->view->translate->_("Username or password is incorrect"); - // включаем счетчик, если кол-во неудачных логинов большое то включаем капчу + // Turn on the counter, if the number of unsuccessful logins is large, then we include captcha $this->defNamespace->numLoginFails++; } } } - /* Если данные не передавались или неверный логин, то выводим форму для авторизации */ - $this->view->caption = sprintf( $this->view->translate->_("Login with your %sWe%sbacula%s account"), - '', '', ''); - $this->view->title = $this->view->translate->_('Login with your Webacula account'); + /* If the data was not transmitted or the login was incorrect, we print the form for authorization */ + //$this->view->caption = sprintf( $this->view->translate->_("Login with your %sWe%sbacula%s account"), + // '', '', ''); + $this->view->caption = $this->view->translate->_('Log in'); + $this->view->title = $this->view->translate->_('Login with your Webacula account'); $this->view->form = $form; // workaround for unit tests 'Action Helper by name Layout not found' @@ -127,7 +128,7 @@ public function loginAction() /** - * "Выход" пользователя + * "Exit" of the user **/ public function logoutAction() { @@ -136,10 +137,10 @@ public function logoutAction() /* * Final */ - /* "Очищаем" данные об идентификации пользоваля */ + /* "Clear" user authentication data */ Zend_Auth::getInstance()->clearIdentity(); Zend_Session::forgetMe(); - /* Перебрасываем его на главную */ + /* We throw it on the main */ $this->_redirect('/'); } @@ -189,25 +190,25 @@ public function forgotPasswordAction() Zend_Loader::loadClass('FormForgotPassword'); $form = new formForgotPassword(); if( $this->_request->isPost() ) { - /* Проверяем валидность данных формы */ + /* We check the validity of the form data */ if ( $form->isValid($this->_getAllParams()) ) { $db = Zend_Registry::get('db_bacula'); Zend_Loader::loadClass('Wbusers'); $table = new Wbusers(); - // ищем email + // Looking for email $select = $table->select()->where('login = ?', $this->_getParam('login')) ->where('email = ?', $this->_getParam('email')); $row = $table->fetchRow($select); - /* login + email найдены ? */ + /* login + email found ? */ if( $row ) { - // генерируем новый пароль + // Generate a new password $new_password = md5( uniqid( rand() ) ); - // высылаем пароль + // Send password $res = $this->emailForgotPassword($row->email, $row->name, $new_password); if ( $res ) { - // сохраняем пароль в БД + // Save password in database $data = array( 'pwd' => $new_password // password hash ); @@ -225,7 +226,8 @@ public function forgotPasswordAction() } } } - /* Если данные не передавались или неверный логин, то выводим форму для авторизации */ + /* If the data was not transmitted or the login was incorrect, we print the form for authorization */ + $this->view->caption = $this->view->translate->_('Reset password'); $this->view->title = $this->view->translate->_('Reset password'); $this->view->form = $form; } diff --git a/application/controllers/BconsoleController.php b/application/controllers/BconsoleController.php old mode 100644 new mode 100755 index 22f4106aa..c35be3d30 --- a/application/controllers/BconsoleController.php +++ b/application/controllers/BconsoleController.php @@ -34,6 +34,7 @@ function init() function wterminalAction() { + $this->view->title = "Webacula Bconsole"; } @@ -62,12 +63,11 @@ function cmdAction() "<view->command_output = $astatusdir['command_output']; // check return status of the executed command $this->view->return_var = $astatusdir['return_var']; } -} \ No newline at end of file +} diff --git a/application/controllers/ChartController.php b/application/controllers/ChartController.php old mode 100644 new mode 100755 diff --git a/application/controllers/ClientController.php b/application/controllers/ClientController.php old mode 100644 new mode 100755 index e1442265e..8605f09eb --- a/application/controllers/ClientController.php +++ b/application/controllers/ClientController.php @@ -48,7 +48,7 @@ function statusClientIdAction() { // http://localhost/webacula/client/status-client-id/id/1/name/local.fd $client_name = $this->_getParam('name'); - $this->view->title = $this->view->translate->_("Client") . " " . $client_name; + $this->view->title = $this->view->translate->_("Status Client") . ": " . $client_name; // do Bacula ACLs $command = 'status'; if ( !$this->bacula_acl->doOneBaculaAcl($command, 'command') ) { diff --git a/application/controllers/DirectorController.php b/application/controllers/DirectorController.php old mode 100644 new mode 100755 diff --git a/application/controllers/ErrorController.php b/application/controllers/ErrorController.php old mode 100644 new mode 100755 index 1cd2b5ab9..06c599d59 --- a/application/controllers/ErrorController.php +++ b/application/controllers/ErrorController.php @@ -45,7 +45,7 @@ public function errorAction() $this->view->db_server_version_bacula = $db->getServerVersion(); $ver = new Version(); - $this->view->catalog_version_bacula = $ver->getVesion(); + $this->view->catalog_version_bacula = $ver->getVersion(); Zend_Loader::loadClass('Director'); $dir = new Director(); $this->view->director_version = $dir->getDirectorVersion(); diff --git a/application/controllers/FeedController.php b/application/controllers/FeedController.php old mode 100644 new mode 100755 index c4b190471..a612ab486 --- a/application/controllers/FeedController.php +++ b/application/controllers/FeedController.php @@ -52,7 +52,7 @@ function feedAction () ); // terminated Jobs $jobs = new Job(); - $result = $jobs->getTerminatedJobs(); + $result = $jobs->getTerminatedJobs(1); foreach ($result as $item) { // convert date to timestamp format $date = new Zend_Date($item['starttime'], 'YYYY-MM-dd HH:mm:ss'); diff --git a/application/controllers/FileController.php b/application/controllers/FileController.php old mode 100644 new mode 100755 index d2b6401fd..be5a3df5c --- a/application/controllers/FileController.php +++ b/application/controllers/FileController.php @@ -54,7 +54,7 @@ function listAction () $this->view->result = null; return; } - $this->view->titleFile = $this->view->translate->_("List Files for JobId") . " " . $jobid; + $this->view->titleFile = $this->view->translate->_("List Files of JobId") . " " . $jobid; $files = new Files(); $select = $files->getSelectFilesByJobId($jobid); // do Bacula ACKs //echo '
',$select->__toString(),'
'; exit; // for !!!debug!!! diff --git a/application/controllers/HelpController.php b/application/controllers/HelpController.php old mode 100644 new mode 100755 index 0f194c0d3..08bda8608 --- a/application/controllers/HelpController.php +++ b/application/controllers/HelpController.php @@ -37,7 +37,7 @@ function indexAction () if ($this->_helper->hasHelper('layout')) { $this->_helper->layout->setLayout('main'); } - $this->view->title = $this->view->translate('Webacula help'); + $this->view->title = $this->view->translate->_('Webacula about'); Zend_Loader::loadClass('Zend_Version'); $this->view->zend_version = Zend_Version::VERSION; $this->view->db_adapter_bacula = Zend_Registry::get('DB_ADAPTER'); @@ -46,16 +46,20 @@ function indexAction () Zend_Loader::loadClass('Version'); $ver = new Version(); - $this->view->catalog_version_bacula = $ver->getVesion(); + $this->view->catalog_version_bacula = $ver->getVersion(); Zend_Loader::loadClass('Director'); $dir = new Director(); $this->view->director_version = $dir->getDirectorVersion(); $this->view->bconsole_version = $dir->getBconsoleVersion(); + + + $this->view->db_size = $ver->getDatabaseSize(); } - function myPhpInfoAction () { + function myPhpInfoAction () + { } -} \ No newline at end of file +} diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php old mode 100644 new mode 100755 index f2fe72215..f6180604b --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -39,7 +39,7 @@ function indexAction () $this->_helper->actionStack('terminated-dashboard', 'job'); $this->_helper->actionStack('timeline-dashboard', 'job'); if (empty($this->view->config->general->head_title)) { - $this->view->titleDashboard = $this->view->translate('Webacula Main Page'); + $this->view->titleDashboard = $this->view->translate->_('Webacula Main Page'); } else { $this->view->titleDashboard = $this->view->config->general->head_title; } diff --git a/application/controllers/JobController.php b/application/controllers/JobController.php old mode 100644 new mode 100755 index 320642f76..595d7db54 --- a/application/controllers/JobController.php +++ b/application/controllers/JobController.php @@ -42,12 +42,15 @@ function init() */ function terminatedAction() { - $this->view->title = $this->view->translate->_("Terminated Jobs (executed in last 24 hours)"); + $terminatedDays = Zend_Registry::get('days_to_show_jobs_terminated'); + $this->view->title = sprintf($this->view->translate->_("Terminated Jobs (executed in last %s days)"), $terminatedDays ); // get data from model $jobs = new Job(); - $this->view->result = $jobs->getTerminatedJobs(); + $this->view->result = $jobs->getTerminatedJobs($terminatedDays,array('JobId DESC')); $this->view->meta_refresh = 300; // meta http-equiv="refresh" $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } @@ -62,11 +65,13 @@ function runningAction() // get data from model $jobs = new Job(); $this->view->resultRunningJobs = $jobs->getRunningJobs(); - // получаем информацию от Директора + // Receive information from Director $this->view->titleDirRunningJobs = $this->view->translate->_("Information from Director : List of Running Jobs"); $this->view->resultDirRunningJobs = $jobs->getDirRunningJobs(); $this->view->meta_refresh = 300; // meta http-equiv="refresh" $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } /** @@ -80,7 +85,7 @@ function runningDashboardAction() // get data from model $jobs = new Job(); $this->view->resultRunningJobs = $jobs->getRunningJobs(); - // получаем информацию от Директора + // Receive information from Director $this->view->titleDirRunningJobs = $this->view->translate->_("Information from Director : List of Running Jobs"); $this->view->resultDirRunningJobs = $jobs->getDirRunningJobs(); if ( empty($this->view->resultRunningJobs) && empty($this->view->resultDirRunningJobs) ) { @@ -89,6 +94,8 @@ function runningDashboardAction() $this->_helper->viewRenderer->setResponseSegment('job_running'); } $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } @@ -108,6 +115,8 @@ function nextAction() $this->view->result = $jobs->getScheduledJobs(); $this->view->meta_refresh = 300; // meta http-equiv="refresh" $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } /** @@ -132,6 +141,8 @@ function nextDashboardAction() $this->_helper->viewRenderer->setResponseSegment('job_next'); } $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } @@ -145,13 +156,13 @@ function findFiltersAction() $this->view->title = $this->view->translate->_("List Jobs with filters"); if ( $this->_request->isPost() ) { - // данные из формы поиска + // Search form data $date_begin = addslashes( trim( $this->_request->getPost('date_begin') )); $time_begin = addslashes( trim( $this->_request->getPost('time_begin') )); $date_end = addslashes( trim( $this->_request->getPost('date_end') )); $time_end = addslashes( trim( $this->_request->getPost('time_end') )); } else { - // данные от Paginator + // Paginator data $date_begin = date('Y-m-d', intval($this->_request->getParam('date_begin')) ); $time_begin = date('H:i:s', intval($this->_request->getParam('time_begin')) ); $date_end = date('Y-m-d', intval($this->_request->getParam('date_end')) ); @@ -180,6 +191,8 @@ function findFiltersAction() $this->view->jtype = $jtype; $this->view->volname = $volname; $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); if ($jobs) { $paginator = Zend_Paginator::factory($jobs); @@ -206,6 +219,8 @@ function findJobIdAction() $job = new Job(); $this->view->result = $job->getByJobId($jobid); $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); echo $this->renderScript('job/terminated.phtml'); } @@ -224,6 +239,8 @@ function findJobNameAction() $job = new Job(); $this->view->result = $job->getByJobName($jobname); $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); echo $this->renderScript('job/terminated.phtml'); } @@ -236,12 +253,13 @@ function findJobNameAction() function findVolumeNameAction() { $this->view->title = $this->view->translate->_("List Jobs by Volume Name") . - ' : ' . $this->_request->getParam('volname'); - $this->view->title = $this->view->translate->_("List Jobs by Volume Name"); + ': ' . $this->_request->getParam('volname'); $volname = addslashes(trim( $this->_request->getParam('volname') )); $job = new Job(); $this->view->result = $job->getByVolumeName($volname); $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); echo $this->renderScript('job/terminated.phtml'); } @@ -292,6 +310,8 @@ function detailAction() $this->view->resultJob = $adetail['job']; $this->view->resultVol = $adetail['volume']; $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } @@ -314,6 +334,8 @@ function problemAction() $this->view->result = $jobs->getProblemJobs($last_days); $this->view->meta_refresh = 300; // meta http-equiv="refresh" $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } /** @@ -329,6 +351,8 @@ function problemDashboardAction() $jobs = new Job(); $this->view->result = $jobs->getProblemJobs($last_days); $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); if ( empty($this->view->result) ) { $this->_helper->viewRenderer->setNoRender(); } else { @@ -361,6 +385,8 @@ function timelineAction() $timeline = new Timeline; $this->view->datetimeline = $datetimeline; $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); // for image map $this->view->img_map = $timeline->createTimelineImage($datetimeline, false, null, 'normal'); } @@ -377,11 +403,13 @@ function timelineDashboardAction() $this->_helper->viewRenderer->setNoRender(); return; } - $datetimeline = date('Y-m-d', time()); - $this->view->title = $this->view->translate->_("Timeline for date") . " " . $datetimeline; + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); + $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $datetimeline = date("Y-m-d", time()); + $this->view->title = $this->view->translate->_("Timeline for date") . " " . date($this->view->date_format, strtotime($datetimeline)); $timeline = new Timeline; $this->view->img_map = $timeline->createTimelineImage($datetimeline, false, null, 'small'); - $this->view->show_job_description = Zend_Registry::get('show_job_description'); if ( empty($this->view->img_map) ) { $this->_helper->viewRenderer->setNoRender(); } else { @@ -418,12 +446,13 @@ function runJobAction() $from_form = intval( $this->_request->getParam('from_form', 0) ); if ($from_form == 1) { //if( $this->_request->isPost() ) { if ( $form->isValid($this->_getAllParams()) ) { - // данные из формы + // Form data $jobname = trim( $this->_request->getParam('jobname') ); $client = addslashes(trim( $this->_request->getParam('client', '') )); $fileset = addslashes(trim( $this->_request->getParam('fileset', '') )); $storage = addslashes(trim( $this->_request->getParam('storage', '') )); $level = addslashes(trim( $this->_request->getParam('level', '') )); + $pool = addslashes(trim( $this->_request->getParam('pool', '') )); $spool = addslashes(trim( $this->_request->getParam('spool', 'yes') )); $checkbox_now = addslashes(trim( $this->_request->getParam('checkbox_now') )); if ($checkbox_now) { @@ -447,6 +476,7 @@ function runJobAction() if ( !empty($client) ) $cmdrun .= 'client="'.$client.'" '; if ( !empty($fileset) ) $cmdrun .= 'fileset="'.$fileset.'" '; if ( !empty($level) ) $cmdrun .= 'level="'.$level.'" '; + if ( !empty($pool) ) $cmdrun .= 'pool="'.$pool.'" '; if ( !empty($storage) ) $cmdrun .= 'storage="'.$storage.'" '; if ( !empty($when) ) $cmdrun .= 'when="'.$when.'" '; if ( !empty($spool) ) $cmdrun .= 'spooldata="'.$spool.'" '; @@ -455,6 +485,7 @@ function runJobAction() * client= * fileset= * level= + * pool= * storage= * where= * when= @@ -475,12 +506,13 @@ function runJobAction() if ( $astatusdir['return_var'] != 0 ) { $this->view->result_error = $astatusdir['result_error']; } - // показываем вывод Director + // Show the output of director echo $this->renderScript('/job/run-job-output.phtml'); return; } } else { $form->init(); + $this->view->title = $this->view->translate->_('Run Job'); } /* * fill form @@ -508,11 +540,13 @@ function listLastJobsRunAction() $num_max = 200; if ( $numjob <= 0 ) { $numjob = 20; } if ( $numjob > $num_max ) { $numjob = $num_max; } - + $datetimeline = date("Y-m-d", time()); $this->view->title = sprintf($this->view->translate->_("List last %s Jobs run"), $numjob); $job = new Job(); $this->view->result = $job->getLastJobRun($numjob); $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); echo $this->renderScript('job/terminated.phtml'); } @@ -527,7 +561,7 @@ function terminatedDashboardAction() $this->_helper->layout->setLayout('dashboard'); $this->view->title = $this->view->translate->_("Terminated Jobs (executed in last 24 hours)"); $job = new Job(); - $this->view->result = $job->getTerminatedJobs(); + $this->view->result = $job->getTerminatedJobs(1); if ( empty($this->view->result) ) $this->_helper->viewRenderer->setNoRender(); else @@ -559,9 +593,11 @@ function findFileNameAction() $type_search = addslashes( $this->_request->getParam('type_file_search') ); $job = new Job(); $this->view->result = $job->getByFileName($path, $namefile, $client, $limit, $type_search); - $this->view->title = sprintf($this->view->translate->_("List Jobs (%s found) where '%s' is saved (limit %s)"), - sizeof($this->view->result), $namefile, $limit); + $this->view->title = sprintf($this->view->translate->_("List Jobs where file '%s' is saved (%s found) (limit %s)"), + $namefile, sizeof($this->view->result), $limit); $this->view->show_job_description = Zend_Registry::get('show_job_description'); + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } @@ -622,7 +658,7 @@ function showJobAction() $this->_forward('bacula-access-denied', 'error', null, array('msg' => $msg ) ); // action, controller return; } - $this->view->title = $this->view->translate->_("Show Job resource"); + $this->view->title = $this->view->translate->_("Job"); $jobname = trim( $this->_request->getParam('jobname') ); $this->view->jobname = $jobname; $director = new Director(); diff --git a/application/controllers/LogController.php b/application/controllers/LogController.php old mode 100644 new mode 100755 diff --git a/application/controllers/PoolController.php b/application/controllers/PoolController.php old mode 100644 new mode 100755 index fdbe13878..3611f9e2f --- a/application/controllers/PoolController.php +++ b/application/controllers/PoolController.php @@ -31,6 +31,7 @@ function init() { parent::init(); Zend_Loader::loadClass('Pool'); + Zend_Loader::loadClass('Director'); } function allAction() @@ -43,5 +44,40 @@ function allAction() $this->view->pools = $pools->fetchAll(null, $order); } + + /** + * show pool + * http://www.bacula.org/3.0.x-manuals/en/console/console/Bacula_Console.html + * show pool= + */ + function showAction() + { + // do Bacula ACLs + $command = 'show'; + if ( !$this->bacula_acl->doOneBaculaAcl($command, 'command') ) { + $msg = sprintf( $this->view->translate->_('You try to run Bacula Console with command "%s".'), $command ); + $this->_forward('bacula-access-denied', 'error', null, array('msg' => $msg ) ); // action, controller + return; + } + $this->view->title = $this->view->translate->_("Show Pool"); + $poolname = trim( $this->_request->getParam('name') ); + $this->view->poolname = $poolname; + $director = new Director(); + if ( !$director->isFoundBconsole() ) { + $this->view->result_error = 'NOFOUND_BCONSOLE'; + $this->render(); + return; + } + $astatusdir = $director->execDirector( +" <view->command_output = $astatusdir['command_output']; + // check return status of the executed command + if ( $astatusdir['return_var'] != 0 ) { + $this->view->result_error = $astatusdir['result_error']; + } + } } \ No newline at end of file diff --git a/application/controllers/RestorejobController.php b/application/controllers/RestorejobController.php old mode 100644 new mode 100755 index 8e4535314..b174d560e --- a/application/controllers/RestorejobController.php +++ b/application/controllers/RestorejobController.php @@ -22,7 +22,7 @@ */ /* - * формат хранения данных в сессии / data storage format in the session + * Data storage format in the session / data storage format in the session * * *** common parameters * @@ -59,7 +59,7 @@ class RestorejobController extends MyClass_ControllerAclAction const ROW_LIMIT_FILES = 500; public $db_adapter; - // для хранения данных для Restore + // To store data for Restore protected $restoreNamespace; const RESTORE_NAME_SPACE = 'RestoreSessionNamespace'; protected $ttl_restore_session = 3900; // time to live session (65 min) @@ -121,7 +121,7 @@ function mySessionStart() { function mySessionStop() { - // close session / удаляем данные сессии + // close session / Delete session data $this->restoreNamespace->unsetAll(); } @@ -187,7 +187,7 @@ function routeDrawTreeToRestore() { function cloneBaculaTables($jobidhash) { - /* извлекаем данные о jobid из сессии */ + /* Retrieve jobid data from session */ $jobid = $this->restoreNamespace->JobId; $tmp_tables = new WbTmpTable($jobidhash, $this->ttl_restore_session); $tmp_tables->cloneBaculaToTmp($jobid); @@ -202,7 +202,7 @@ function cloneBaculaTables($jobidhash) */ function cloneRecentBaculaTables($jobidhash) { - /* извлекаем данные обо всех jobids из сессии */ + /* Retrieve data about all jobids from the session */ $sjobids = implode(",", $this->restoreNamespace->aJobId); $tmp_tables = new WbTmpTable($jobidhash, $this->ttl_restore_session); $tmp_tables->cloneRecentBaculaToTmp($sjobids); @@ -210,7 +210,7 @@ function cloneRecentBaculaTables($jobidhash) /** * Delete temporary table after starting the job to restore - * (Удалить временные таблицы после запуска задания на восстановление) + * (Delete temporary tables after running a restore job) */ public function deleteTmpTables() { @@ -251,12 +251,12 @@ public function mainFormAction() $this->view->title = $this->view->translate->_("Restore Job"); $this->view->jobid = intval( $this->_request->getParam('jobid', null) ); /* - * перенаправления из др. форм (RestoreAll и т.п.) + * Redirects from other forms (RestoreAll, etc.) */ - // выдача сообщения, что такого joid не существует + // Issuing a message that such a joid does not exist $this->view->msgNoJobId1 = $this->_request->getParam('msgNoJobId1', null); $this->view->msgNoJobId2 = $this->_request->getParam('msgNoJobId2', null); - // какая закладка д.б. активной, def = 0 (first child) + //What is the bookmark? Active, def = 0 (first child) $this->view->accordion_active = $this->_request->getParam('accordion_active', 0); // do view $this->render(); @@ -266,16 +266,16 @@ public function mainFormAction() /** * Manager of action depending on the user's choice - * Диспетчер действий в зависимости от выбора пользователя + * Action Manager based on user choice * */ public function restoreChoiceAction() { // user made a choice in the form of "Restore Job" restorejob/main-form - // сделан выбор в форме "Restore Job" restorejob/main-form + // A choice is made in the form "Restore Job" restorejob/main-form $choice = addslashes( $this->_request->getParam('choice', '') ); $jobid = intval( $this->_request->getParam('jobid', null) ); - // store the data in the session / запоминаем данные в сессии + // store the data in the session / Remember the data in the session $this->mySessionStart(); $this->restoreNamespace->typeRestore = 'restore'; $this->restoreNamespace->JobId = $jobid; @@ -292,14 +292,14 @@ public function restoreChoiceAction() /** * Manager of action depending on the user's choice - * Диспетчер действий в зависимости от выбора пользователя + * Action Manager based on user choice * */ function restoreRecentChoiceAction() { - // в форме "Restore Job" сделан выбор + // в форме "Restore Job" The choice is made $choice_recent = addslashes( $this->_request->getParam('choice_recent', '') ); - // store the data in the session / запоминаем данные в сессии + // store the data in the session / Remember the data in the session $this->mySessionStart(); $this->restoreNamespace->typeRestore = 'restore_recent'; $this->restoreNamespace->ClientNameFrom = addslashes( $this->_request->getParam('client_name_from', null) ); @@ -320,19 +320,19 @@ function restoreRecentChoiceAction() /** * 12: Select full restore to a specified JobId + Bacula ACLs * Manager of action depending on the user's choice - * Диспетчер действий в зависимости от выбора пользователя + * Action Manager based on user choice * */ public function restoreFullJobidChoiceAction() { // user made a choice in the form of "Restore Job" restorejob/main-form - // сделан выбор в форме "Restore Job" restorejob/main-form + // A choice is made in the form "Restore Job" restorejob/main-form $choice = addslashes( $this->_request->getParam('choice_full_jobid', '') ); $jobid = intval( $this->_request->getParam('jobid', null) ); // get job record Zend_Loader::loadClass('Job'); $job = new Job(); - // существует ли такое jobid + // Does such jobid exist if ( !$job->isJobIdExists($jobid) ) { // do Bacula ACLs $this->_forward('main-form', 'restorejob', null, array( @@ -346,7 +346,7 @@ public function restoreFullJobidChoiceAction() $ajob = $job->getByJobId($jobid); // see also cats/sql_get.c : db_accurate_get_jobids() $job_row = $ajob[0]; $this->mySessionStart(); - // store the data in the session / запоминаем данные в сессии + // store the data in the session / Remember the data in the session $this->restoreNamespace->typeRestore = 'restore_recent'; $this->restoreNamespace->ClientNameFrom = $job_row['clientname']; $this->restoreNamespace->FileSet = $job_row['fileset']; @@ -388,14 +388,14 @@ function restoreAllAction() Zend_Loader::loadClass('Client'); $client = new Client(); $jobid = intval( $this->_request->getParam('jobid', 0) ); - /* запоминаем "левый" jobid в сессии, чтобы не было ошибок при завершении restore */ + /* Remember the "left" jobid in the session so that there are no errors when the restore completes */ $jobidhash = md5('fake_jobid'); $this->restoreNamespace->aJobId = array(0 => $jobidhash, 1 => $jobid); $this->view->title = $this->view->translate->_("Restore All files for JobId"); $this->view->jobid = $jobid; - // существует ли такое jobid + // Does such jobid exist if ( !$job->isJobIdExists($jobid) ) { // do Bacula ACLs $this->_forward('main-form', 'restorejob', null, array( @@ -417,9 +417,9 @@ function restoreAllAction() */ if ( $this->_request->isPost() && $this->_request->getParam('from_form') ) { - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); - // переопределяем некоторые переменные + // Override some variables $this->client_name = $client->getClientName($jobid); // $this->client_name_to = $this->restoreNamespace->ClientNameTo; $this->client_name_to = $this->_request->getParam('client_name_to'); @@ -441,7 +441,7 @@ function restoreAllAction() $cmd_sleep = '@sleep 10'; } //******************************* run job *************************************** - // create command / формируем командную строку + // create command / Form the command line // restore client=Rufus select current all done yes $cmd = 'restore '. $this->getCmdRestore() .' all done yes'; @@ -465,7 +465,7 @@ function restoreAllAction() $this->renderScript('restorejob/run-restore.phtml'); return; } else { - // форма не прошла валидацию + // Form failed validation $messages = $validator_where->getMessages(); $this->view->msgNoValid = $messages[0]; } @@ -510,9 +510,19 @@ function restoreRecentAllAction() } Zend_Loader::loadClass('Director'); // http://www.bacula.org/en/rel-manual/Restore_Command.html#SECTION002240000000000000000 - /* запоминаем "левый" jobid в сессии, чтобы не было ошибок при завершении restore */ + /* Remember the "left" jobid in the session so that there are no errors when the restore completes */ $this->restoreNamespace->JobHash = md5('fake_jobid'); $this->view->title = $this->view->translate->_("Restore All files"); + + //$this->client_name = addslashes($this->_request->getParam('client_name', $this->restoreNamespace->ClientNameFrom )); + //$this->fileset = addslashes($this->_request->getParam('fileset', $this->restoreNamespace->FileSet)); + //$this->restoreNamespace->ClientNameTo = $this->client_name_to; + + $this->view->client_from_restore = addslashes($this->_request->getParam('client_name', $this->restoreNamespace->ClientNameFrom )); + $this->view->fileset_restore = addslashes($this->_request->getParam('fileset', $this->restoreNamespace->FileSet )); + + + // bconsole available ? $director = new Director(); if ( !$director->isFoundBconsole() ) { @@ -533,12 +543,15 @@ function restoreRecentAllAction() */ if ( $this->_request->isPost() && $this->_request->getParam('from_form') ) { - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); - // переопределение некоторых переменных + // Redefinition of some variables $this->client_name = addslashes($this->_request->getParam('client_name', $this->restoreNamespace->ClientNameFrom )); $this->fileset = addslashes($this->_request->getParam('fileset', $this->restoreNamespace->FileSet)); $this->restoreNamespace->ClientNameTo = $this->client_name_to; + + $this->view->client_from_restore = $this->restoreNamespace->ClientNameFrom; + // validator "Where" if ( $validator_where->isValid( $this->where ) ) { if ( empty($this->restoreNamespace->DateBefore) ) @@ -546,7 +559,7 @@ function restoreRecentAllAction() else $cmd_date_before = ' before="'. $this->restoreNamespace->DateBefore . '" '; //******************************* run job *************************************** - // create command / формируем командную строку + // create command / Form the command line // restore client="local.fd" restoreclient="local.fd" fileset="test1" where="/home/test/11111" current select all done yes // restore client="local.fd" fileset="test1" before="2009-05-11 11:36:56" select all done yes // restore client="local.fd" restoreclient="srv1.fd" fileset="test1" before="2009-05-11 11:36:56" select all done yes @@ -570,7 +583,7 @@ function restoreRecentAllAction() $this->renderScript('restorejob/run-restore.phtml'); return; } else { - // форма не прошла валидацию + // Form failed validation $messages = $validator_where->getMessages(); $this->view->msgNoValid = $messages[0]; } @@ -612,11 +625,11 @@ function selectFilesAction() // routing $this->routeDrawTreeToRestore(); - // начало отрисовки дерева каталогов ? + // The beginning of the directory tree? $beginr = intval( $this->_request->getParam('beginr', 0) ); if ( $beginr == 1 ) { - /* Начало отрисовки дерева каталогов */ - // существует ли такое jobid + /* Beginning of the directory tree */ + // Does such jobid exist if ( !$job->isJobIdExists($this->restoreNamespace->JobId) ) { // do Bacula ACLs $this->_forward('main-form', 'restorejob', null, array( @@ -630,22 +643,22 @@ function selectFilesAction() $client = new Client(); $this->restoreNamespace->ClientNameFrom = $client->getClientName($this->restoreNamespace->JobId); - // tmp таблицы существуют ? + // Tmp tables exist ? $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); if ( $tmp_tables->isAllTmpTablesExists() ) { - // tmp таблицы устарели ? + // Tmp tables are outdated ? if ( $tmp_tables->isOldTmpTables() ) { - // tmp-таблицы устарели + // Tmp-tables are outdated $tmp_tables->dropOldTmpTables(); // delete all old tmp tables // create tmp tables $this->cloneBaculaTables($this->restoreNamespace->JobHash); - // рисуем дерево + // Drawing a tree $this->_forward('draw-file-tree', null, null, array('curdir'=>'') ); $curdir = addslashes( $this->_request->getParam('curdir', '') ); $this->_forward('draw-file-tree', null, null, array('curdir'=>$curdir) ); } else { - // tmp таблицы не устарели - // выдать сообщение: 1. пересоздать временные таблицы 2. работать со старыми 3. выход + // Tmp tables are not outdated + // Issue a message: 1. re-create temporary tables 2. work with old ones 3. exit $this->view->jobid = $this->restoreNamespace->JobId; $this->view->title = $this->view->translate->_('Restore Job'); echo $this->renderScript('restorejob/msg01.phtml'); @@ -656,7 +669,7 @@ function selectFilesAction() $this->_forward('draw-file-tree', null, null, array('curdir'=>'') ); } } else { - // продолжаем показывать дерево каталогов + // Continue to show the directory tree $curdir = addslashes( $this->_request->getParam('curdir', '') ); $this->_forward('draw-file-tree', null, null, array('curdir'=>$curdir)); } @@ -675,7 +688,7 @@ function selectBackupsBeforeDateAction() } Zend_Loader::loadClass('Client'); Zend_Loader::loadClass('Job'); - // поиск ClientId + // Search ClientId $client = new Client(); $this->restoreNamespace->ClientIdFrom = $client->getClientId($this->restoreNamespace->ClientNameFrom); @@ -691,13 +704,14 @@ function selectBackupsBeforeDateAction() $this->restoreNamespace->ClientIdFrom, $this->restoreNamespace->FileSet); // with Bacula ACLs if ( !$ajobs ) { - // сообщение, что не найден Full backup: No Full backup before 2009-05-20 15:19:49 found. + // Message that is not found Full backup: No Full backup before 2009-05-20 15:19:49 found. + $this->view->title = $this->view->translate->_("Error"); $this->view->msg = sprintf($this->view->translate->_("No Full backup before %s found."), $this->restoreNamespace->DateBefore); echo $this->renderScript('msg-note.phtml'); return; } - /* запоминаем данные о jobids в сессии */ + /* Remember the jobids data in the session */ $this->restoreNamespace->JobHash = md5($ajobs['hash']); $this->restoreNamespace->aJobId = $ajobs['ajob_all']; @@ -706,6 +720,7 @@ function selectBackupsBeforeDateAction() $this->view->ajob_inc = $ajobs['ajob_inc']; $this->view->ajob_all = $ajobs['ajob_all']; $this->view->title = $this->view->translate->_("You have selected the following JobIds"); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); $this->view->beginrecent = 1; $this->render(); } @@ -721,27 +736,27 @@ function selectRecentFilesAction() // routing $this->routeDrawTreeToRestore(); // http://www.bacula.org/en/rel-manual/Restore_Command.html#SECTION002240000000000000000 - // начало отрисовки дерева каталогов ? + // The beginning of the directory tree? $beginrecent = intval( $this->_request->getParam('beginrecent', 0) ); if ( $beginrecent == 1 ) { - /* начало отрисовки дерева каталогов. */ - // данные в сессии уже запомнены в selectBackupsBeforeDateAction() - // tmp таблицы существуют ? + /* The beginning of the directory tree. */ + // Data in the session are already stored in the selectBackupsBeforeDateAction() + // Tmp tables exist? $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); if ( $tmp_tables->isAllTmpTablesExists() ) { - // tmp таблицы устарели ? + // Tmp tables are outdated? if ( $tmp_tables->isOldTmpTables() ) { - // tmp-таблицы устарели + // Tmp-tables are outdated $tmp_tables->dropOldTmpTables(); // delete all old tmp tables // create tmp tables $this->cloneRecentBaculaTables($this->restoreNamespace->JobHash); - // рисуем дерево + // Drawing a tree $this->_forward('draw-file-tree', null, null, array('curdir'=>'') ); $curdir = addslashes( $this->_request->getParam('curdir', '') ); $this->_forward('draw-file-tree', null, null, array('curdir'=>$curdir) ); } else { - // tmp таблицы не устарели - // выдать сообщение: 1. пересоздать временные таблицы 2. работать со старыми 3. выход + // Tmp tables are not outdated + // Issue a message: 1. re-create temporary tables 2. work with old ones 3. exit $this->view->jobid = ''; $this->view->title = $this->view->translate->_('Restore Job'); echo $this->renderScript('restorejob/msg01.phtml'); @@ -752,7 +767,7 @@ function selectRecentFilesAction() $this->_forward('draw-file-tree', null, null, array('curdir'=>'') ); } } else { - // продолжаем показывать дерево каталогов + // Continue to show the directory tree $curdir = addslashes( $this->_request->getParam('curdir', '') ); $this->_forward('draw-file-tree', null, null, array('curdir'=>$curdir) ); } @@ -761,10 +776,10 @@ function selectRecentFilesAction() /** * The main function of rendering of a directory tree - * Главная функция по отрисовке дерева каталогов + * The main function for drawing a directory tree * * @param string jobidhash - * @param string curdir если это начало отрисовки, то $curdir = '' + * @param string curdir If this is the beginning of the drawing, то $curdir = '' * */ function drawFileTreeAction() @@ -784,7 +799,7 @@ function drawFileTreeAction() $adir = array(); if ( $this->restoreNamespace->JobHash ) { $this->routeDrawTreeToRestore(); - //************ get a list of all directories + LStat (получаем список всех каталогов + их атрибуты LStat) ****** + //************ get a list of all directories + LStat (Get a list of all directories + their attributes LStat) ****** $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); $db = $tmp_tables->getDb(); // $this->_db->quote(); @@ -797,7 +812,7 @@ function drawFileTreeAction() ON t.FileId = f.FileId ORDER BY p.Path "); - // get a list of directories on the current (получаем список каталогов относительно текущего) + // get a list of directories on the current (Get a list of directories relative to the current) while($line = $stmt->fetch()) { if ( empty($curdir) ) { $pos = 0; @@ -805,30 +820,30 @@ function drawFileTreeAction() //elseif ( $line['path'][1] === ':') $curdir = $line['path'][0] . ':/'; // windows path } else $pos = strpos($line['path'], $curdir); - // найден текущий каталог + // The current directory is found if ( $pos === 0 ) { - // удаляем текущий каталог из полного пути + // Delete the current directory from the full path $nextdir = preg_replace('/^' . addcslashes($curdir, '/') . '/', '', $line['path']); - // если есть еще подкаталоги + // If there are more subdirectories if ( !empty($nextdir) ) { - // получаем следующий уровень подкаталога + // Get the next level of the subdirectory $atmp = explode("/", $nextdir, 3); $dir = $atmp[0]; if ( !empty($dir) ) { if ($line['md5'] === 0) { - // это однозначно каталог + // This is definitely a catalog if ( isset($atmp[2]) ) { - $adir[$dir]['lstat'] = ''; // данных LStat нет, это просто часть пути + $adir[$dir]['lstat'] = ''; // There is no LStat data, it's just part of the way } else { - $adir[$dir]['lstat'] = $line['lstat']; // точное совпадение, зн. есть данные об LStat + $adir[$dir]['lstat'] = $line['lstat']; // Exact match, characters. There is data about LStat } $adir[$dir]['pathid'] = $line['pathid']; $adir[$dir]['dir'] = $dir; $adir[$dir]['ismarked'] = $line['ismarked']; } else { - // возможно это каталог + // Perhaps this is the catalog if ( empty($adir[$dir]) ) { - $adir[$dir]['lstat'] = ''; // данные LStat будут от файла, что не нужно + $adir[$dir]['lstat'] = ''; // The LStat data will be from a file that is not needed $adir[$dir]['pathid'] = $line['pathid']; $adir[$dir]['dir'] = $dir; $adir[$dir]['ismarked'] = $line['ismarked']; @@ -840,7 +855,7 @@ function drawFileTreeAction() } unset($stmt); unset($db); - //****** получаем список файлов в текущем каталоге ****** + //****** Get the list of files in the current directory ****** $afile = array(); if ( $curdir ) { $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); @@ -848,21 +863,19 @@ function drawFileTreeAction() $select = $db->select(); switch ($this->db_adapter) { case 'PDO_SQLITE': - $sql = 'SELECT DISTINCT f.FileId as fileid, f.LStat as lstat, f.PathId as pathid, t.isMarked as ismarked, n.Name as name, p.Path as path + $sql = 'SELECT DISTINCT f.FileId as fileid, f.LStat as lstat, f.PathId as pathid, t.isMarked as ismarked, f.Filename as name, p.Path as path FROM ' . $tmp_tables->getTableNameFile() .' AS t, - Filename AS n, Path AS p, File AS f - WHERE (t.FileId = f.FileId) AND - (f.FileNameId = n.FileNameId) AND (f.PathId = p.PathId) AND - (p.Path = '. $db->quote($curdir) .')'."AND (n.Name != '')". + Path AS p, File AS f + WHERE (t.FileId = f.FileId) AND (f.PathId = p.PathId) AND + (p.Path = '. $db->quote($curdir) .')'."AND (f.Filename != '')". ' ORDER BY Name ASC'; break; default: // include mysql, postgresql - $sql = 'SELECT DISTINCT f.FileId, f.LStat, f.PathId, t.isMarked, n.Name, p.Path + $sql = 'SELECT DISTINCT f.FileId, f.LStat, f.PathId, t.isMarked, f.FileName as Name, p.Path FROM ' . $tmp_tables->getTableNameFile() .' AS t, - Filename AS n, Path AS p, File AS f - WHERE (t.FileId = f.FileId) AND - (f.FileNameId = n.FileNameId) AND (f.PathId = p.PathId) AND - (p.Path = '. $db->quote($curdir) .')'."AND (n.Name != '')". + Path AS p, File AS f + WHERE (t.FileId = f.FileId) AND (f.PathId = p.PathId) AND + (p.Path = '. $db->quote($curdir) .')'."AND (f.FileName != '')". ' ORDER BY Name ASC'; break; } @@ -880,7 +893,7 @@ function drawFileTreeAction() $this->view->afile = $afile; $this->view->curdir = $curdir; $this->view->jobidhash = $this->restoreNamespace->JobHash; - // получаем суммарную статистику + // We obtain the summary statistics $atotal = $tmp_tables->getTotalSummaryMark(); $this->view->total_size = $atotal['total_size']; $this->view->total_files = $atotal['total_files']; @@ -897,7 +910,7 @@ function drawFileTreeAction() /** * Mark file for restore - * Пометить файл для восстановления + * Mark recovery file * See also javascript in draw-file-tree.pthml * * @return json @@ -909,24 +922,24 @@ function markFileAction() $this->_helper->layout->disableLayout(); // disable layouts $encodedValue = $this->_request->getParam('data', ''); if ( $encodedValue ) { - // Получение значения + // Getting the value $phpNative = Zend_Json::decode($encodedValue); $fileid = $phpNative['fileid']; $jobidhash = $phpNative['jobidhash']; - // производим действия в БД + // We make actions in a DB $tmp_tables = new WbTmpTable($jobidhash, $this->ttl_restore_session); $tmp_tables->markFile($fileid); $filename = $tmp_tables->getFileName($fileid); - // получаем суммарную статистику + // We obtain the summary statistics $atotal = $tmp_tables->getTotalSummaryMark(); - // формируем массив для отправки назад + // Form an array to send back $aout['total_size'] = $this->view->convBytes($atotal['total_size']); $aout['total_files'] = $atotal['total_files']; $aout['filename'] = $filename; - $aout['allok'] = 1; // действия успешны - // Преобразование для возвращения клиенту + $aout['allok'] = 1; // Actions are successful + // Transformation for returning to the client $json = Zend_Json::encode($aout); - // возвращаем данные в javascript + // Return the data to javascript echo $json; } else { $aout['allok'] = 0; @@ -938,7 +951,7 @@ function markFileAction() /** * Remove the mark with a file for restore - * Снять отметку с файла для восстановления + * Unmark a file to restore * See also javascript in draw-file-tree.pthml * * @return json @@ -951,24 +964,24 @@ function unmarkFileAction() } $encodedValue = $this->_request->getParam('data', ''); if ( $encodedValue ) { - // Получение значения + // Getting the value $phpNative = Zend_Json::decode($encodedValue); $fileid = $phpNative['fileid']; $jobidhash = $phpNative['jobidhash']; - // производим действия в БД + // We make actions in a DB $tmp_tables = new WbTmpTable($jobidhash, $this->ttl_restore_session); $tmp_tables->unmarkFile($fileid); $filename = $tmp_tables->getFileName($fileid); - // получаем суммарную статистику + // We obtain the summary statistics $atotal = $tmp_tables->getTotalSummaryMark(); - // формируем массив для отправки назад + // Form an array to send back $aout['total_size'] = $this->view->convBytes($atotal['total_size']); $aout['total_files'] = $atotal['total_files']; $aout['filename'] = $filename; - $aout['allok'] = 1; // действия успешны - // Преобразование для возвращения клиенту + $aout['allok'] = 1; // Actions are successful + // Transformation for returning to the client $json = Zend_Json::encode($aout); - // возвращаем данные в javascript + // Return the data to javascript echo $json; } else { $aout['allok'] = 0; @@ -979,8 +992,8 @@ function unmarkFileAction() /** - * Пометить каталог + файлы в каталоге + подкаталоги + файлы в них для восстановления. - * См. javascript в draw-file-tree.pthml + * Mark the directory + files in the directory + subdirectories + files in them for recovery. + * See javascript in draw-file-tree.pthml */ function markDirAction() { @@ -989,27 +1002,27 @@ function markDirAction() $this->_helper->layout->disableLayout(); // disable layouts $encodedValue = $this->_request->getParam('data', ''); if ( $encodedValue ) { - // Получение значения + // Getting the value $phpNative = Zend_Json::decode($encodedValue); $path = $phpNative['path']; $jobidhash = $phpNative['jobidhash']; - // производим действия в БД + // We make actions in a DB $tmp_tables = new WbTmpTable($jobidhash, $this->ttl_restore_session); $res = $tmp_tables->markDir($path, 1); // isMarked = 1 if ( $res ) - $aout['msg'] = sprintf($this->view->translate->_("%s
(%s dirs and files affected)"), $res['path'], $res['files']); + $aout['msg'] = sprintf($this->view->translate->_("%s
(%s dirs and files affected)"), $res['path'], $res['files']); else $aout['msg'] = $this->view->translate->_('internal program error !'); - // получаем суммарную статистику + // We obtain the summary statistics $atotal = $tmp_tables->getTotalSummaryMark(); - // формируем массив для отправки назад + // Form an array to send back $aout['total_size'] = $this->view->convBytes($atotal['total_size']); $aout['total_files'] = $atotal['total_files']; $aout['path'] = $path; - $aout['allok'] = 1; // действия успешны - // Преобразование для возвращения клиенту + $aout['allok'] = 1; // Actions are successful + // Transformation for returning to the client $json = Zend_Json::encode($aout); - // возвращаем данные в javascript + // Return the data to javascript echo $json; } else { $aout['allok'] = 0; @@ -1021,7 +1034,7 @@ function markDirAction() /** * Remove the marker catalog files in the directory and subdirectories + + files in order to restore them. - * Убрать пометку каталога и файлов в каталоге + подкаталоги + файлы в них для восстановления. + * Remove the markup of the directory and files in the directory + subdirectories + files in them for recovery. * See javascript in draw-file-tree.pthml */ function unmarkDirAction() @@ -1031,27 +1044,27 @@ function unmarkDirAction() $this->_helper->layout->disableLayout(); // disable layouts $encodedValue = $this->_request->getParam('data', ''); if ( $encodedValue ) { - // Получение значения + // Getting the value $phpNative = Zend_Json::decode($encodedValue); $path = $phpNative['path']; $jobidhash = $phpNative['jobidhash']; - // производим действия в БД + // We make actions in a DB $tmp_tables = new WbTmpTable($jobidhash, $this->ttl_restore_session); $res = $tmp_tables->markDir($path, 0); // isMarked = 0 if ( $res ) - $aout['msg'] = sprintf($this->view->translate->_("%s
(%s dirs and files affected)"), $res['path'], $res['files']); + $aout['msg'] = sprintf($this->view->translate->_("%s
(%s dirs and files affected)"), $res['path'], $res['files']); else $aout['msg'] = $this->view->translate->_('internal program error !'); - // получаем суммарную статистику + // We obtain the summary statistics $atotal = $tmp_tables->getTotalSummaryMark(); - // формируем массив для отправки назад + // Form an array to send back $aout['total_size'] = $this->view->convBytes($atotal['total_size']); $aout['total_files'] = $atotal['total_files']; $aout['path'] = $path; - $aout['allok'] = 1; // действия успешны - // Преобразование для возвращения клиенту + $aout['allok'] = 1; // Actions are successful + // Transformation for returning to the client $json = Zend_Json::encode($aout); - // возвращаем данные в javascript + // Return the data to javascript echo $json; } else { $aout['allok'] = 0; @@ -1074,15 +1087,15 @@ function oldTmpTableAction () $this->_helper->viewRenderer->setNoRender(); // routing $this->routeDrawTreeToRestore(); - // в форме "Msg01" сделан выбор, что делать со старыми tmp-таблицами + // In the form "Msg01" a choice is made what to do with old tmp-tables $choice = addslashes( $this->_request->getParam('choice', '') ); if ($this->restoreNamespace->typeRestore) { switch ( $choice ) { - case 'recreate_tmp': // выбор: пересоздать временные таблицы + case 'recreate_tmp': // Choice: re-create temporary tables $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); $tmp_tables->createTmpTable(); - // перенаправление в зависимости от typeRestore + // Depending on type Restore if ( $this->restoreNamespace->typeRestore == 'restore_recent' ) { $this->cloneRecentBaculaTables($this->restoreNamespace->JobHash); } else { @@ -1091,15 +1104,16 @@ function oldTmpTableAction () $this->_forward('draw-file-tree', null, null, array('curdir'=>'')); return; break; - case 'continue_tmp': // работать со старыми + case 'continue_tmp': // Work with the old // update timestamp $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); $tmp_tables->updateTimestamp(); - // продолжить + // continue $this->_forward('draw-file-tree', null, null, array('curdir'=>'')); return; break; - case 'goto_homepage': // на главную страницу + case 'goto_homepage': // to Home Page + $this->_redirect('index'); return; break; @@ -1116,9 +1130,9 @@ function oldTmpTableAction () * - form to specify the options for Job Restore * - plain-list of files before starting the Restore Job * - * Показываем : - * - форму для указания опций для восстановления - * - plain-список файлов перед запуском задания на восстановление + * We show: + * - Form for indicating options for recovery + * - Plain-list of files before running a restore job */ function listRestoreAction() { @@ -1156,13 +1170,13 @@ function listRestoreAction() Zend_Loader::loadClass('MyClass_Validate_BaculaAclWhere'); $validator_where = new MyClass_Validate_BaculaAclWhere(); if ( $this->_request->isPost() && $this->_request->getParam('from_form') ) { - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); if ( $validator_where->isValid( $this->where ) ) { $this->_forward( 'run-restore', 'restorejob', null, $this->_request->getParams() ); return; } else { - // форма не прошла валидацию + // Form failed validation $messages = $validator_where->getMessages(); $this->view->msgNoValid = $messages[0]; } @@ -1229,13 +1243,13 @@ function listRecentRestoreAction() Zend_Loader::loadClass('MyClass_Validate_BaculaAclWhere'); $validator_where = new MyClass_Validate_BaculaAclWhere(); if ( $this->_request->isPost() && $this->_request->getParam('from_form') ) { - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); if ( $validator_where->isValid( $this->where ) ) { $this->_forward( 'run-restore-recent', 'restorejob', null, $this->_request->getParams() ); return; } else { - // форма не прошла валидацию + // Form failed validation $messages = $validator_where->getMessages(); $this->view->msgNoValid = $messages[0]; } @@ -1267,7 +1281,7 @@ function listRecentRestoreAction() /** * Run Restore Job + Bacula ACLs - * Запуск задания на восстановление + * Run a restore job * * see * The Restore Command: http://www.bacula.org/rel-manual/Restore_Command.html @@ -1293,9 +1307,9 @@ function runRestoreAction() if ( !$job->isJobIdExists($this->restoreNamespace->JobId) ) // with Bacula ACLs return; - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); - // переопределяем некоторые переменные + // Override some variables $this->jobid = $this->restoreNamespace->JobId; $this->view->title = $this->view->translate->_("Restore JobId"); @@ -1317,7 +1331,7 @@ function runRestoreAction() return; } - /* create table for restore (создание таблицы для восстановления) + /* create table for restore (Create a table for recovery) * see also * http://www.bacula.org/5.0.x-manuals/en/main/main/Restore_Command.html * 7: Enter a list of files to restore @@ -1328,7 +1342,7 @@ function runRestoreAction() $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); $tmp_tables->prepareTmpTableForRestore(); //******************************* run job *************************************** - // perform the command line (формируем командную строку) + // perform the command line (Form the command line) // restore jobid=9713 file=<"/tmp/webacula_restore_9713.tmp" client="local.fd" yes // restore storage= client= where= pool= // fileset= restoreclient= select current all done @@ -1387,10 +1401,10 @@ function runRestoreRecentAction() $this->renderScript('restorejob/run-restore.phtml'); return; } - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); - /* create table for restore (создание таблицы для восстановления) + /* create table for restore (Create a table for recovery) * see also * http://www.bacula.org/5.0.x-manuals/en/main/main/Restore_Command.html * 7: Enter a list of files to restore @@ -1403,8 +1417,8 @@ function runRestoreRecentAction() $date_before = 'current'; if ( !empty($this->restoreNamespace->DateBefore) ) $date_before = 'before="'. $this->restoreNamespace->DateBefore . '"'; - //******************************* запуск задания *************************************** - // формируем командную строку + //******************************* Start job *************************************** + // Form the command line // restore client="local.fd" fileset="test1" before="2009-05-15 14:50:01" file=<"/etc/bacula/webacula_restore.tmp" done yes $cmd = 'restore ' . $this->getCmdRestore() .' '. $date_before . ' file=?"'. $tmp_tables->getTableNameFile() . '" done yes'; @@ -1434,14 +1448,14 @@ function runRestoreRecentAction() /** * Cancel Restore - * (Отменить восстановление) + * (Cancel restore) */ function cancelRestoreAction() { $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); $tmp_tables->deleteAllTmpTables(); $this->mySessionStop(); - // goto home (переадресуем на главную страницу) + // goto home (Redirect to home page) $this->_redirect('index'); } @@ -1454,7 +1468,7 @@ function cancelRestoreRecentAction() $tmp_tables = new WbTmpTable($this->restoreNamespace->JobHash, $this->ttl_restore_session); $tmp_tables->deleteAllTmpTables(); $this->mySessionStop(); - // goto home (переадресуем на главную страницу) + // goto home (Redirect to home page) $this->_redirect('index'); } @@ -1516,7 +1530,7 @@ function runRestoreSingleFileAction() return; } $this->view->title = $this->view->translate->_('Restore Single File'); - // получаем значения из формы FormRestoreOptions + // Get values from Form Restore Options $this->getParamFromForm(); // get File data @@ -1533,8 +1547,8 @@ function runRestoreSingleFileAction() $this->renderScript('restorejob/run-restore.phtml'); return; } - //******************************* запуск задания *************************************** - // perform the command line (формируем командную строку) + //******************************* Start job *************************************** + // perform the command line (Form the command line) // restore jobid=9713 file=<"/tmp/webacula_restore_9713.tmp" client="local.fd" yes // restore storage= client= where= pool= // fileset= restoreclient= select current all done @@ -1568,3 +1582,4 @@ function runRestoreSingleFileAction() } + diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php new file mode 100755 index 000000000..ea33ea26f --- /dev/null +++ b/application/controllers/ScheduleController.php @@ -0,0 +1,81 @@ +. + * + * @author Wanderlei Hüttel + * @package webacula + * @license http://www.gnu.org/licenses/gpl-3.0.html GNU Public License + * + */ + +require_once 'Zend/Controller/Action.php'; + +class ScheduleController extends MyClass_ControllerAclAction +{ + + function init() + { + parent::init(); + Zend_Loader::loadClass('Schedule'); + Zend_Loader::loadClass('Director'); + } + + function allAction() + { + // get data from model + $schedule = new Schedule(); + $this->view->schedule = $schedule->getSchedule(); + $this->view->title = $this->view->translate->_("Schedule"); + $this->view->meta_refresh = 300; // meta http-equiv="refresh" + } + + /** + * show schedule + * http://www.bacula.org/3.0.x-manuals/en/console/console/Bacula_Console.html + * show schedule= + */ + function showAction() + { + // do Bacula ACLs + $command = 'show'; + if ( !$this->bacula_acl->doOneBaculaAcl($command, 'command') ) { + $msg = sprintf( $this->view->translate->_('You try to run Bacula Console with command "%s".'), $command ); + $this->_forward('bacula-access-denied', 'error', null, array('msg' => $msg ) ); // action, controller + return; + } + $this->view->title = $this->view->translate->_("Show Schedule"); + $schedulename = trim( $this->_request->getParam('name') ); + $this->view->schedulename = $schedulename; + $director = new Director(); + if ( !$director->isFoundBconsole() ) { + $this->view->result_error = 'NOFOUND_BCONSOLE'; + $this->render(); + return; + } + $astatusdir = $director->execDirector( +" <view->command_output = $astatusdir['command_output']; + // check return status of the executed command + if ( $astatusdir['return_var'] != 0 ) { + $this->view->result_error = $astatusdir['result_error']; + } + } + +} diff --git a/application/controllers/StorageController.php b/application/controllers/StorageController.php old mode 100644 new mode 100755 index 4d5bb2245..cf8f136b8 --- a/application/controllers/StorageController.php +++ b/application/controllers/StorageController.php @@ -144,7 +144,8 @@ function actMountAction() $str_action = ''; break; } - $this->view->title = $this->view->translate->_("Storage") . " " . $storage_name . ' ' . $str_action; + //$this->view->title = $this->view->translate->_("Storage") . " " . $storage_name . ' ' . $str_action; + $this->view->title = $str_action . " " . $this->view->translate->_("Storage") . ": " . $storage_name; $director = new Director(); if (! $director->isFoundBconsole()) { $this->view->result_error = 'NOFOUND_BCONSOLE'; @@ -194,7 +195,7 @@ function autochangerContentAction() return; } if (!empty($storage_name)) { - $this->view->title = $this->view->translate->_("Storage") . " " . $storage_name . ' '. + $this->view->title = $this->view->translate->_("Storage") . ": " . $storage_name . ' '. $this->view->translate->_("autochanger content"); $director = new Director(); if (! $director->isFoundBconsole()) { diff --git a/application/controllers/VolumeController.php b/application/controllers/VolumeController.php old mode 100644 new mode 100755 index 9d97ecf96..aba5c2206 --- a/application/controllers/VolumeController.php +++ b/application/controllers/VolumeController.php @@ -42,11 +42,14 @@ function findNameAction () $order = addslashes(trim($this->_request->getParam('order', 'VolumeName'))); $this->view->volname = $volname; if ($volname) { - $this->view->title = $this->view->translate->_("Volume") . " " . $volname; + $this->view->title = $this->view->translate->_("Volume") . ": " . $volname; $media = new Media(); $this->view->result = $media->getByName($volname, $order); - } else + } else { $this->view->result = null; + } + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } function findPoolIdAction () @@ -58,12 +61,15 @@ function findPoolIdAction () $this->view->pool_id = $pool_id; $this->view->pool_name = $pool_name; if ($pool_id) { - $this->view->title = $this->view->translate->_("Pool") . " " . $pool_name; + $this->view->title = $this->view->translate->_("Pool"); $media = new Media(); $this->view->result = $media->getById($pool_id, $order); - } else + } else { $this->view->result = null; + } $this->view->meta_refresh = 300; // meta http-equiv="refresh" + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } /** @@ -80,6 +86,8 @@ function problemAction () // fix http://sourceforge.net/apps/trac/webacula/ticket/81 //$this->view->resultVolumesNeedReplacement = $media->getVolumesNeedReplacement(); $this->view->meta_refresh = 300; // meta http-equiv="refresh" + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } /** @@ -99,6 +107,8 @@ function problemDashboardAction () } else { $this->_helper->viewRenderer->setResponseSegment('volume_problem'); } + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } /* @@ -114,8 +124,11 @@ function detailAction () $this->view->result = $media->detail($media_id); $pools = new Pool(); $this->view->pools = $pools->fetchAll(); - } else + } else { $this->view->result = null; + } + $this->view->date_format = Zend_Registry::get('date_format'); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } function updateAction () @@ -177,4 +190,4 @@ function updateAction () } -} \ No newline at end of file +} diff --git a/application/controllers/WbjobdescController.php b/application/controllers/WbjobdescController.php old mode 100644 new mode 100755 index acd877c44..7f3988aee --- a/application/controllers/WbjobdescController.php +++ b/application/controllers/WbjobdescController.php @@ -88,14 +88,20 @@ public function addAction() } } } + $form->setAction( $this->view->baseUrl . '/wbjobdesc/add' ) + ->setActionCancel( $this->view->baseUrl .'/wbjobdesc/index' ); $this->view->form = $form; } public function modifyAction() { - $this->view->title = "Modify record"; + $this->view->title = $this->view->translate->_("Modify record"); $form = new formJobdesc(); + $form->setAction( $this->view->baseUrl . '/wbjobdesc/modify' ) + ->setActionCancel( $this->view->baseUrl .'/wbjobdesc/index' ); + + if ( $this->_request->isPost() && ($this->_request->getParam('form1') == '1') ) { // get modified data if ( $form->isValid($this->_getAllParams()) ) { diff --git a/application/controllers/WblogbookController.php b/application/controllers/WblogbookController.php old mode 100644 new mode 100755 index 3145ecee2..3df12df45 --- a/application/controllers/WblogbookController.php +++ b/application/controllers/WblogbookController.php @@ -88,6 +88,7 @@ function defStrSortOrder($sorto) function indexAction() { $this->view->title = $this->view->translate->_("Logbook"); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); //print_r($this->_request->getParams()); exit; //debug !!! $date_begin = date('Y-m-d', time()-2678400); $date_end = date('Y-m-d', time()); @@ -105,6 +106,7 @@ function indexAction() if ($ret) { $this->view->result = $ret->fetchAll(); } + } @@ -114,6 +116,7 @@ function indexAction() function filterbydateAction() { $this->view->title = $this->view->translate->_("Logbook"); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); //print_r($this->_request->getParams()); exit; //debug !!! $date_begin = trim( $this->_request->getParam('date_begin', date('Y-m-d', time()-2678400)) ); $date_end = trim( $this->_request->getParam('date_end', date('Y-m-d', time())) ); @@ -162,6 +165,7 @@ function filterbyidAction() if ( $id_end == 0 ) { $id_end = $id_begin; } + $this->view->datetime_format = Zend_Registry::get('datetime_format'); //echo '
id_begin = ' . $id_begin . '
id_end = ' . $id_end . '
'; exit(); // порядок сортировки @@ -197,6 +201,7 @@ function filterbyidAction() function searchtextAction() { $id_text = addslashes( substr( $this->_request->getParam('id_text'), 0, 250 ) ); + $this->view->datetime_format = Zend_Registry::get('datetime_format'); // порядок сортировки $sort_order = $this->defSortOrder( trim($this->_request->getParam('sortorder_by_text')) ); // unused ? $str_sort_order = $this->defStrSortOrder($sort_order); @@ -420,6 +425,7 @@ function modifyAction() $this->view->title = $this->view->translate->_("Logbook: modify record"); $this->view->wblogbook = new Wblogbook(); $this->view->amessages = array(); + // ****************************** UPDATE record ********************************** if ( $this->_request->isPost() && $this->_request->getPost('hiddenModify') && @@ -562,15 +568,19 @@ function modifyAction() return; } // ********************* READ ORIGINAL RECORD from database **************** - if ( $this->_request->isPost() ) + if ( $this->_request->isGet() ) + //else { - $logid = trim($this->_request->getPost('logid')); + $logid = $this->_request->getParam('logid'); + if ( empty($logid) ) + throw new Exception(__METHOD__.' : Empty input parameters'); + //$logid = trim($this->_request->getPost('logid')); // get data from table $logs = new wbLogBook(); $where = $logs->getAdapter()->quoteInto('logId = ?', $logid); $row = $logs->fetchRow($where); - if ($row) { + if ($row){ $this->view->wblogbook->logId = $row->logid; $this->view->wblogbook->logDateCreate = $row->logdatecreate; $this->view->wblogbook->logTxt = $row->logtxt; @@ -587,6 +597,7 @@ function modifyAction() $this->view->wblogbook->logDateLast = date('Y-m-d H:i:s', time()); $this->view->hiddenModify = 1; $this->view->aAllowedTags = $this->aAllowedTags; + $this->view->datetime_format = Zend_Registry::get('datetime_format'); } diff --git a/application/forms/FormBaculaACL.php b/application/forms/FormBaculaACL.php old mode 100644 new mode 100755 index 28bab50ee..b49fd73bb --- a/application/forms/FormBaculaACL.php +++ b/application/forms/FormBaculaACL.php @@ -22,7 +22,6 @@ */ require_once 'Zend/Form.php'; require_once 'Zend/Form/Element/Submit.php'; -require_once 'Zend/Form/Element/Reset.php'; class FormBaculaACL extends Zend_Form @@ -30,6 +29,7 @@ class FormBaculaACL extends Zend_Form protected $translate; protected $elDecorators = array('ViewHelper', 'Errors'); // , 'Label' + protected $_action_cancel = ''; @@ -61,6 +61,7 @@ public function init() //'decorators' => $this->elDecorators, 'label' => $this->translate->_('Order').'*', 'required' => true, + 'class' => 'form-control', 'size' => 3, 'maxlength' => 5 )); @@ -73,6 +74,7 @@ public function init() //'decorators' => $this->elDecorators, 'label' => $this->translate->_('Name').'*', 'required' => true, + 'class' => 'form-control', 'size' => 50, 'maxlength' => 127 )); @@ -81,18 +83,19 @@ public function init() /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok_'.__CLASS__, - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Add') )); /* - * reset button + * cancel button */ - $reset = new Zend_Form_Element_Reset('reset', array( + $cancel_button = new Zend_Form_Element_Submit('cancel_button', array( 'decorators' => $this->elDecorators, - 'id' => 'reset_'.__CLASS__, + 'id' => 'cancel_'.__CLASS__, + 'class' => 'btn btn-default', 'label' => $this->translate->_('Cancel') )); /* @@ -101,11 +104,21 @@ public function init() $this->addElements( array( $order, $name, - $submit, - $reset + $submit_button, + $cancel_button )); } + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + -} \ No newline at end of file + public function getActionCancel() + { + return $this->_action_cancel; + } + +} diff --git a/application/forms/FormBaculaCommandACL.php b/application/forms/FormBaculaCommandACL.php old mode 100644 new mode 100755 index 9d16fd634..1a2b15bc9 --- a/application/forms/FormBaculaCommandACL.php +++ b/application/forms/FormBaculaCommandACL.php @@ -22,7 +22,6 @@ */ require_once 'Zend/Form.php'; require_once 'Zend/Form/Element/Submit.php'; -require_once 'Zend/Form/Element/Reset.php'; class FormBaculaCommandACL extends Zend_Form @@ -30,6 +29,7 @@ class FormBaculaCommandACL extends Zend_Form protected $translate; protected $elDecorators = array('ViewHelper', 'Errors'); // , 'Label' + protected $_action_cancel = ''; public function init() @@ -59,7 +59,7 @@ public function init() // create element $bacula_commands = $this->createElement('multiselect', 'bacula_commands', array( 'label' => $this->translate->_('Bacula commands'), - 'class' => 'ui-select', + 'class' => 'form-control', 'size' => 18 )); foreach( $wbDtCommands as $v ) { @@ -69,18 +69,19 @@ public function init() /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok_'.__CLASS__, - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Submit Form') )); /* - * reset button + * cancel button */ - $reset = new Zend_Form_Element_Reset('reset',array( + $cancel_button = new Zend_Form_Element_Submit('cancel_button',array( 'decorators' => $this->elDecorators, - 'id' => 'reset_'.__CLASS__, + 'id' => 'cancel_'.__CLASS__, + 'class' => 'btn btn-default', 'label' => $this->translate->_('Cancel') )); /* @@ -88,11 +89,21 @@ public function init() */ $this->addElements( array( $bacula_commands, - $submit, - $reset + $submit_button, + $cancel_button )); } + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + -} \ No newline at end of file + public function getActionCancel() + { + return $this->_action_cancel; + } + +} diff --git a/application/forms/FormBaculaFill.php b/application/forms/FormBaculaFill.php old mode 100644 new mode 100755 index 08b441a56..75d0c2430 --- a/application/forms/FormBaculaFill.php +++ b/application/forms/FormBaculaFill.php @@ -22,7 +22,6 @@ */ require_once 'Zend/Form.php'; require_once 'Zend/Form/Element/Submit.php'; -require_once 'Zend/Form/Element/Reset.php'; class FormBaculaFill extends Zend_Form @@ -34,6 +33,7 @@ class FormBaculaFill extends Zend_Form protected $table_webacula; protected $role_id; protected $role_name; + protected $_action_cancel = ''; @@ -77,7 +77,7 @@ public function init() $data = $table->getBaculaFill($this->table_bacula, $this->table_webacula, $this->role_id); $bacula_fill = $this->createElement('multiselect', 'bacula_fill', array( 'label' => $this->translate->_('From Bacula database'), - 'class' => 'ui-select', + 'class' => 'form-control', 'size' => 10 )); $bacula_fill->addMultiOptions(array( '*all*' => '*all*' )); @@ -88,10 +88,10 @@ public function init() /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok_'.__CLASS__, - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Add') )); /* @@ -99,10 +99,20 @@ public function init() */ $this->addElements( array( $bacula_fill, - $submit + $submit_button )); } + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + -} \ No newline at end of file + public function getActionCancel() + { + return $this->_action_cancel; + } + +} diff --git a/application/forms/FormForgotPassword.php b/application/forms/FormForgotPassword.php old mode 100644 new mode 100755 index 365007fe2..729a6dadf --- a/application/forms/FormForgotPassword.php +++ b/application/forms/FormForgotPassword.php @@ -48,6 +48,8 @@ public function init() 'decorators' => $this->elDecorators, 'required' => true, 'label' => $this->translate->_('Username'), + 'class' => 'form-control', + 'placeholder' => $this->translate->_('Username'), 'size' => 25, 'maxlength' => 50 )); @@ -68,6 +70,8 @@ public function init() 'decorators' => $this->elDecorators, 'required' => true, 'label' => $this->translate->_('Email'), + 'class' => 'form-control', + 'placeholder' => $this->translate->_('Email'), 'size' => 25, 'maxlength' => 50 )); @@ -83,7 +87,7 @@ public function init() */ $submit = $this->createElement('submit', 'submit', array( 'decorators' => array('ViewHelper', 'Errors'), - 'class' => 'forgot-btn', + 'class' => 'btn btn-default', 'id' => 'submit', 'label' => $this->translate->_('Submit new password') )); @@ -108,7 +112,7 @@ public function init() $this->addElement($login) ->addElement($email) ->addElement($submit) - ->addElement($captcha) + //->addElement($captcha) ->addElement($csrf); } diff --git a/application/forms/FormJobdesc.php b/application/forms/FormJobdesc.php old mode 100644 new mode 100755 index 9cd118733..5941b4242 --- a/application/forms/FormJobdesc.php +++ b/application/forms/FormJobdesc.php @@ -26,7 +26,7 @@ class FormJobdesc extends Zend_Form { protected $translate; - + protected $_action_cancel = ''; public function init() { @@ -41,20 +41,30 @@ public function init() $hidden_desc_id = $this->createElement('hidden', 'desc_id'); $hidden_desc_id->removeDecorator('Label'); - $name_job = $this->createElement('text', 'name_job', array( - 'label' => $this->translate->_('Job Name'), + Zend_Loader::loadClass('Director'); + Zend_Loader::loadClass('Job'); + $table_job = new Job(); + $jobs = $table_job->getListJobs(); + // select + $name_job = $this->createElement('select', 'name_job', array( 'required' => true, - 'size' => 35, - 'maxlength' => 64 + 'label' => $this->translate->_('Job Name'), + 'class' => 'form-control' )); + foreach( $jobs as $v) { + $name_job->addMultiOption($v, $v); + } + $name_job->addValidator('NotEmpty', false, null ); $name_job->addValidator('StringLength', false, array(0, 64) ); //$name_job->addDecorator('HtmlTag', array('tag' => 'div', 'style'=>'margin-bottom:20px;')); + $short_desc = $this->createElement('text', 'short_desc', array( 'label' => $this->translate->_('Short Job Description'), 'required' => true, 'size' => 40, + 'class' => 'form-control', 'maxlength' => 64*2 )); $short_desc->addValidator('NotEmpty', false, null ); @@ -64,6 +74,7 @@ public function init() 'textarea', 'description', array( 'label' => $this->translate->_('Job Description'), 'required' => true, + 'class' => 'form-control', 'cols' => 50, 'rows' => 3 )); @@ -71,18 +82,26 @@ public function init() $retention_period = $this->createElement( 'text', 'retention_period', array( - 'label' => 'Retention period', + 'label' => $this->translate->_('Retention period'), 'required' => false, + 'class' => 'form-control', 'size' => 16, 'maxlength' => 32 )); $retention_period->addValidator('StringLength', false, array(0, 32) ); // submit button - $submit = new Zend_Form_Element_Submit('submit',array( - 'class' => 'prefer_btn', + $submit_button = new Zend_Form_Element_Submit('submit_button',array( + 'id' => 'ok_'.__CLASS__, + 'class' => 'btn btn-default', 'label' => $this->translate->_('Submit Form') )); + + $cancel_button = new Zend_Form_Element_Submit('cancel_button', array( + 'id' => 'cancel_'.__CLASS__, + 'class' => 'btn btn-default', + 'label' => $this->translate->_('Cancel') + )); // add elements to form $this->addElements( array( @@ -92,8 +111,21 @@ public function init() $short_desc, $description, $retention_period, - $submit + $submit_button, + $cancel_button )); } + + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + + + + public function getActionCancel() + { + return $this->_action_cancel; + } } diff --git a/application/forms/FormJobrun.php b/application/forms/FormJobrun.php old mode 100644 new mode 100755 index 40448c940..6ce91d6f6 --- a/application/forms/FormJobrun.php +++ b/application/forms/FormJobrun.php @@ -27,6 +27,7 @@ class FormJobrun extends Zend_Form { protected $translate; + protected $_action_cancel = ''; @@ -51,6 +52,7 @@ public function init() Zend_Loader::loadClass('Client'); Zend_Loader::loadClass('FileSet'); Zend_Loader::loadClass('Storage'); + Zend_Loader::loadClass('Pool'); /* * Job Name */ @@ -61,8 +63,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Job Name'), 'required' => true, - 'class' => 'ui-select', - 'style' => 'width: 25em;' + 'class' => 'form-control' )); foreach( $jobs as $v) { $jobname->addMultiOption($v, $v); @@ -79,8 +80,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Client'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 25em;' + 'class' => 'form-control' )); $client->addMultiOption('', $this->translate->_("Default")); foreach( $clients as $v) { @@ -97,8 +97,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Fileset'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 25em;' + 'class' => 'form-control' )); $fileset->addMultiOption('', $this->translate->_("Default")); foreach( $filesets as $v) { @@ -115,8 +114,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Storage'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 25em;' + 'class' => 'form-control' )); $storage->addMultiOption('', $this->translate->_("Default")); foreach( $storages as $v) { @@ -130,8 +128,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Level'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 20em;' + 'class' => 'form-control' )); $level->addMultiOptions(array( '' => $this->translate->_("Default"), @@ -139,6 +136,23 @@ public function init() "Incremental" => $this->translate->_("Incremental level"), "Differential" => $this->translate->_("Differential level") )); + /* + * Pool + */ + $table_pool = new Pool(); + $order = array('Name'); + $pools = $table_pool->fetchAll(null, $order); + // select + $pool = $this->createElement('select', 'pool', array( + 'decorators' => $this->elDecorators, + 'label' => $this->translate->_('Pool'), + 'required' => false, + 'class' => 'form-control' + )); + $pool->addMultiOption('', $this->translate->_("Default")); + foreach( $pools as $v) { + $pool->addMultiOption($v['name'], $v['name']); + } /* * Spool */ @@ -147,8 +161,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Spool'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 15em;' + 'class' => 'form-control' )); $spool->addMultiOptions(array( '' => $this->translate->_("Default"), @@ -161,6 +174,7 @@ public function init() $checkbox_now = $this->createElement('checkbox', 'checkbox_now', array( 'decorators' => $this->elDecorators, 'label' => 'Now', + 'class' => 'form-check-input', 'onclick' => 'whenNow(this)', 'checked' => 1 )); @@ -174,7 +188,8 @@ public function init() 'required' => false, 'size' => 10, 'maxlength' => 10, - 'disabled' =>'true', + 'disabled' => 'true', + 'class' => 'form-control', 'value' => date('Y-m-d', time()) )); $date_when->addValidator('StringLength', false, array(1, 10) ); @@ -186,18 +201,30 @@ public function init() 'size' => 8, 'maxlength' => 8, 'disabled' =>'true', + 'class' => 'form-control', 'value' => date('H:i:s', time()) )); $time_when->addValidator('StringLength', false, array(1, 8) ); /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok1', - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Run Job') )); + + /* + * cancel button + */ + $cancel_button = new Zend_Form_Element_Submit('cancel_button',array( + 'decorators' => $this->elDecorators, + 'id' => 'reset_'.__CLASS__, + 'class' => 'btn btn-default', + 'label' => $this->translate->_('Cancel') + )); + /* * add elements to form */ @@ -207,12 +234,27 @@ public function init() $fileset, $storage, $level, + $pool, $spool, $checkbox_now, $date_when, $time_when, - $submit + $submit_button, + $cancel_button )); } + + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + + + + public function getActionCancel() + { + return $this->_action_cancel; + } + } diff --git a/application/forms/FormLogin.php b/application/forms/FormLogin.php old mode 100644 new mode 100755 index 78dd2011b..d192fcd5d --- a/application/forms/FormLogin.php +++ b/application/forms/FormLogin.php @@ -48,6 +48,8 @@ public function init() 'decorators' => $this->elDecorators, 'required' => true, 'label' => $this->translate->_('Username'), + 'class' => 'form-control', + 'placeholder' => $this->translate->_('Username'), 'size' => 25, 'maxlength' => 50 )); @@ -67,6 +69,8 @@ public function init() 'decorators' => $this->elDecorators, 'required' => true, 'label' => $this->translate->_('Password'), + 'class' => 'form-control', + 'placeholder' => $this->translate->_('Password'), 'size' => 25, 'maxlength' => 50 )); @@ -77,13 +81,14 @@ public function init() $checkbox = $this->createElement('checkbox', 'rememberme', array( 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Remember me'), + 'class' => 'form-check-input', 'checked' => 1 )); // login $submit = $this->createElement('submit', 'submit', array( 'decorators' => array('ViewHelper', 'Errors'), - 'class' => 'login-btn', + 'class' => 'btn btn-default', 'id' => 'submit', 'label' => $this->translate->_('Log In') )); diff --git a/application/forms/FormRestoreOptions.php b/application/forms/FormRestoreOptions.php old mode 100644 new mode 100755 index 83ef8eed6..f888c3119 --- a/application/forms/FormRestoreOptions.php +++ b/application/forms/FormRestoreOptions.php @@ -80,15 +80,13 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Client'), 'required' => true, - 'class' => 'ui-select', - 'style' => 'width: 18em;' + 'class' => 'form-control' )); $client_name_to = $this->createElement('select', 'client_name_to', array( 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Restore client'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 18em;' + 'class' => 'form-control' )); $client_name->addMultiOption('', $this->translate->_("Default")); $client_name_to->addMultiOption('', $this->translate->_("Default")); @@ -106,8 +104,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Pool'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 18em;' + 'class' => 'form-control' )); $pool->addMultiOption('', $this->translate->_("Default")); foreach( $pools as $v) { @@ -123,8 +120,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Fileset'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 18em;' + 'class' => 'form-control' )); $fileset->addMultiOption('', $this->translate->_("Default")); foreach( $filesets as $v) { @@ -140,8 +136,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Storage'), 'required' => false, - 'class' => 'ui-select', - 'style' => 'width: 18em;' + 'class' => 'form-control' )); $storage->addMultiOption('', $this->translate->_("Default")); foreach( $storages as $v) { @@ -157,8 +152,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Restore Job Resource'), 'required' => true, - 'class' => 'ui-select', - 'style' => 'width: 18em;' + 'class' => 'form-control' )); $bacula_restore_jobs = $config->general->bacula_restore_job->toArray(); $restore_job_select->addMultiOption('', $this->translate->_("Default")); @@ -179,6 +173,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Where'), 'required' => false, + 'class' => 'form-control', 'size' => 50, 'maxlength' => 255, 'value' => '' @@ -191,6 +186,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Strip prefix'), 'required' => false, + 'class' => 'form-control', 'size' => 24, 'maxlength' => 64, 'value' => '' @@ -203,6 +199,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Add prefix'), 'required' => false, + 'class' => 'form-control', 'size' => 24, 'maxlength' => 64, 'value' => '' @@ -215,6 +212,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('Add suffix'), 'required' => false, + 'class' => 'form-control', 'size' => 24, 'maxlength' => 64, 'value' => '' // '.old' // for debug @@ -227,6 +225,7 @@ public function init() 'decorators' => $this->elDecorators, 'label' => $this->translate->_('RegexWhere'), 'required' => false, + 'class' => 'form-control', 'size' => 24, 'maxlength' => 64, 'value' => '' // '/test/qwerty/,/webacula/zzzasdf/' // for debug @@ -238,7 +237,7 @@ public function init() $submit_button = new Zend_Form_Element_Submit('submit_button', array( 'decorators' => $this->elDecorators, 'id' => 'ok1', - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Run Restore Job') )); /* @@ -247,6 +246,7 @@ public function init() $cancel_button = new Zend_Form_Element_Submit('cancel_button',array( 'decorators' => $this->elDecorators, 'id' => 'cancel1', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Cancel') )); /* @@ -282,4 +282,4 @@ public function getActionCancel() return $this->_action_cancel; } -} \ No newline at end of file +} diff --git a/application/forms/FormRole.php b/application/forms/FormRole.php old mode 100644 new mode 100755 index a05d49b78..4f3053c07 --- a/application/forms/FormRole.php +++ b/application/forms/FormRole.php @@ -22,7 +22,7 @@ */ require_once 'Zend/Form.php'; require_once 'Zend/Form/Element/Submit.php'; -require_once 'Zend/Form/Element/Reset.php'; + class FormRole extends Zend_Form @@ -31,6 +31,7 @@ class FormRole extends Zend_Form protected $translate; protected $elDecorators = array('ViewHelper', 'Errors'); // , 'Label' protected $_roleid; + protected $_action_cancel = ''; @@ -64,6 +65,7 @@ public function init() //'decorators' => $this->elDecorators, 'label' => $this->translate->_('Order').'*', 'required' => true, + 'class' => 'form-control', 'size' => 3, 'maxlength' => 5 )); @@ -76,6 +78,7 @@ public function init() //'decorators' => $this->elDecorators, 'label' => $this->translate->_('Name').'*', 'required' => true, + 'class' => 'form-control', 'size' => 30, 'maxlength' => 50 )); @@ -91,6 +94,7 @@ public function init() //'decorators' => $this->elDecorators, 'label' => $this->translate->_('Description').'*', 'required' => true, + 'class' => 'form-control', 'cols' => 50, 'rows' => 3 )); @@ -108,7 +112,7 @@ public function init() // create element $inherit_id = $this->createElement('select', 'inherit_id', array( 'label' => $this->translate->_('Inherited role'), - 'class' => 'ui-select', + 'class' => 'form-control', 'size' => 10 )); $inherit_id->addMultiOption('', ''); @@ -119,18 +123,19 @@ public function init() /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok_'.__CLASS__, - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Submit Form') )); /* - * reset button + * cancel button */ - $reset = new Zend_Form_Element_Reset('reset',array( + $cancel_button = new Zend_Form_Element_Submit('cancel_button',array( 'decorators' => $this->elDecorators, - 'id' => 'reset_'.__CLASS__, + 'id' => 'cancel_'.__CLASS__, + 'class' => 'btn btn-default', 'label' => $this->translate->_('Cancel') )); /* @@ -141,11 +146,22 @@ public function init() $name, $description, $inherit_id, - $submit, - $reset + $submit_button, + $cancel_button )); } + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + + + + public function getActionCancel() + { + return $this->_action_cancel; + } -} \ No newline at end of file +} diff --git a/application/forms/FormUser.php b/application/forms/FormUser.php old mode 100644 new mode 100755 index 47df36b6f..3bbd8d4a4 --- a/application/forms/FormUser.php +++ b/application/forms/FormUser.php @@ -22,7 +22,6 @@ */ require_once 'Zend/Form.php'; require_once 'Zend/Form/Element/Submit.php'; -require_once 'Zend/Form/Element/Reset.php'; class FormUser extends Zend_Form @@ -31,6 +30,7 @@ class FormUser extends Zend_Form protected $translate; protected $elDecorators = array('ViewHelper', 'Errors'); // , 'Label' protected $_action; + protected $_action_cancel = ''; /** @@ -67,11 +67,12 @@ public function init() $login = $this->createElement('text', 'login', array( 'label' => $this->translate->_('Login').'*', 'required' => true, + 'class' => 'form-control', 'size' => 30, 'maxlength' => 50 )); - $login_validator = new Zend_Validate_Regex('/^[a-zA-Z0-9_]+$/'); - $login_validator->setMessage( $this->translate->_('Login incorrect. Login contains only english alphabetical characters, digits and underscore.')); + $login_validator = new Zend_Validate_Regex('/^[a-zA-Z0-9_.]+$/'); + $login_validator->setMessage( $this->translate->_('Login incorrect. Login must contains only english alphabetical characters, digits, dots and underscore.')); $login->addValidator('StringLength', false, array(2, 50)) ->addValidator($login_validator) ->setRequired(true); @@ -83,6 +84,7 @@ public function init() $pwd_label .= '*'; $pwd = $this->createElement('password', 'pwd', array( 'label' => $pwd_label, + 'class' => 'form-control', 'size' => 25, 'maxlength' => 50 )); @@ -95,6 +97,7 @@ public function init() $name = $this->createElement('text', 'name', array( 'label' => $this->translate->_('Name'), 'required' => false, + 'class' => 'form-control', 'size' => 40, 'maxlength' => 150 )); @@ -105,6 +108,7 @@ public function init() $email = $this->createElement('text', 'email', array( 'label' => $this->translate->_('Email'), 'required' => false, + 'class' => 'form-control', 'size' => 30, 'maxlength' => 50 )); @@ -117,7 +121,8 @@ public function init() */ $active = $this->createElement('checkbox', 'active', array( 'label' => $this->translate->_('Active'), - 'checked' => 1 + 'checked' => 1, + 'class' => 'form-check-input' )); /* * Role id @@ -128,7 +133,7 @@ public function init() // create element $role_id = $this->createElement('select', 'role_id', array( 'label' => $this->translate->_('Role').'*', - 'class' => 'ui-select', + 'class' => 'form-control', 'size' => 10 )); foreach( $rows as $v) { @@ -139,18 +144,19 @@ public function init() /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok_'.__CLASS__, - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Submit Form') )); /* - * reset button + * cancel button */ - $reset = new Zend_Form_Element_Reset('reset',array( + $cancel_button = new Zend_Form_Element_Submit('cancel_button',array( 'decorators' => $this->elDecorators, 'id' => 'reset_'.__CLASS__, + 'class' => 'btn btn-default', 'label' => $this->translate->_('Cancel') )); /* @@ -164,11 +170,23 @@ public function init() $active, $role_id, $action_id, - $submit, - $reset + $submit_button, + $cancel_button )); } + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + + + + public function getActionCancel() + { + return $this->_action_cancel; + } + -} \ No newline at end of file +} diff --git a/application/forms/FormWebaculaACL.php b/application/forms/FormWebaculaACL.php old mode 100644 new mode 100755 index bc7da49de..67dbf87ab --- a/application/forms/FormWebaculaACL.php +++ b/application/forms/FormWebaculaACL.php @@ -22,7 +22,7 @@ */ require_once 'Zend/Form.php'; require_once 'Zend/Form/Element/Submit.php'; -require_once 'Zend/Form/Element/Reset.php'; + class FormWebaculaACL extends Zend_Form @@ -30,6 +30,7 @@ class FormWebaculaACL extends Zend_Form protected $translate; protected $elDecorators = array('ViewHelper', 'Errors'); // , 'Label' + protected $_action_cancel = ''; public function init() @@ -59,7 +60,7 @@ public function init() // create element $webacula_resources = $this->createElement('multiselect', 'webacula_resources', array( 'label' => $this->translate->_('Webacula resources'), - 'class' => 'ui-select', + 'class' => 'form-control', 'size' => 18 )); foreach( $wbDtResources as $v ) { @@ -69,18 +70,19 @@ public function init() /* * submit button */ - $submit = new Zend_Form_Element_Submit('submit',array( + $submit_button = new Zend_Form_Element_Submit('submit_button',array( 'decorators' => $this->elDecorators, 'id' => 'ok_'.__CLASS__, - 'class' => 'prefer_btn', + 'class' => 'btn btn-default', 'label' => $this->translate->_('Submit Form') )); /* - * reset button + * cancel button */ - $reset = new Zend_Form_Element_Reset('reset',array( + $cancel_button = new Zend_Form_Element_Submit('cancel_button',array( 'decorators' => $this->elDecorators, - 'id' => 'reset_'.__CLASS__, + 'id' => 'cancel_'.__CLASS__, + 'class' => 'btn btn-default', 'label' => $this->translate->_('Cancel') )); /* @@ -88,11 +90,21 @@ public function init() */ $this->addElements( array( $webacula_resources, - $submit, - $reset + $submit_button, + $cancel_button )); } + public function setActionCancel($url = '') + { + $this->_action_cancel = $url; + } + -} \ No newline at end of file + public function getActionCancel() + { + return $this->_action_cancel; + } + +} diff --git a/application/layouts/default/dashboard.phtml b/application/layouts/default/dashboard.phtml old mode 100644 new mode 100755 index a1e70f5be..20dbcff1c --- a/application/layouts/default/dashboard.phtml +++ b/application/layouts/default/dashboard.phtml @@ -1,15 +1,31 @@ render('header.phtml') ?> - + render('main-menu.phtml') ?> -meta_refresh ) : ?>
- translate->_("Last Updated: %s"), date("r")); ?>. - translate->_("Updated every %s seconds"), $this->meta_refresh); ?> -
+
+
+
+meta_refresh ) : ?> + + translate->_("Last Updated: %s"), date("r")); ?> + translate->_("Updated every %s seconds"), $this->meta_refresh); ?> + + + + + + translate->_("Last Updated: %s"), date("r")); ?> + + +
+
+
+ +
+
+
-
+ "; $i++; + ?> -
+ '; + if ( ($i % 2) === 0 ){ + //echo '
'; + echo "
"; + echo "
"; + } + else { + echo "
"; + } ?> +
+
-

 

- + +
-render('footer.phtml') ?> \ No newline at end of file +render('footer.phtml') ?> diff --git a/application/layouts/default/footer.phtml b/application/layouts/default/footer.phtml old mode 100644 new mode 100755 diff --git a/application/layouts/default/header.phtml b/application/layouts/default/header.phtml old mode 100644 new mode 100755 index 59c5fd1b1..dfde7cbb4 --- a/application/layouts/default/header.phtml +++ b/application/layouts/default/header.phtml @@ -11,73 +11,65 @@ header("Pragma: no-cache"); // HTTP/1.0 - + + + <?php - if ( $this->titleDashboard ) + if ( $this->titleDashboard ) { echo $this->escape($this->titleDashboard); - else + } else { echo $this->escape($this->title); + } ?> - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - + + + + MainmenuFloat($this); ?> - +*/ + + - - - \ No newline at end of file + diff --git a/application/layouts/default/login.phtml b/application/layouts/default/login.phtml old mode 100644 new mode 100755 index f02f5439a..e42cc835d --- a/application/layouts/default/login.phtml +++ b/application/layouts/default/login.phtml @@ -3,8 +3,20 @@ + + + <?php echo $this->escape($this->title); ?> + + + + + + + + + + - - - - + -
- - \ No newline at end of file + diff --git a/application/layouts/default/main-menu.phtml b/application/layouts/default/main-menu.phtml old mode 100644 new mode 100755 index bb8e89507..1fda28342 --- a/application/layouts/default/main-menu.phtml +++ b/application/layouts/default/main-menu.phtml @@ -1,17 +1,31 @@ + + 1800, // время жизни кэша - 30 минут + 'lifetime' => 1800, // Cache lifetime - 30 minutes 'automatic_serialization' => true ); $backendOptions = array( - 'cache_dir' => CACHE_DIR.'/' // директория, в которой размещаются файлы кэша + 'cache_dir' => CACHE_DIR.'/' // Directory where the cache files are located ); -// получение объекта Zend_Cache_Output +// Receiving an object Zend_Cache_Output $cache = Zend_Cache::factory( 'Output', 'File', @@ -23,100 +37,121 @@ if ( !$cache->start($this->identity->role_id . '_main_menu') ) : webacula_acl->isAllowed($this->identity->role_name, 'index') ) : ?> - + + +
+ translate->_("Logout"); ?> -
- - + - end(); ?> - \ No newline at end of file + diff --git a/application/layouts/default/main.phtml b/application/layouts/default/main.phtml old mode 100644 new mode 100755 index be33024d2..34c1e08ee --- a/application/layouts/default/main.phtml +++ b/application/layouts/default/main.phtml @@ -1,21 +1,32 @@ render('header.phtml') ?> - - - + render('main-menu.phtml') ?> -meta_refresh ) : ?>
- translate->_("Last Updated: %s"), date("r")); ?>. - translate->_("Updated every %s seconds"), $this->meta_refresh); ?> -
+
+
+
+meta_refresh ) : ?> + + translate->_("Last Updated: %s"), date("r")); ?> + translate->_("Updated every %s seconds"), $this->meta_refresh); ?> + + -
 
- -layout()->content ?> + + translate->_("Last Updated: %s"), date("r")); ?> + + + +
+
+
+
-

 

+
+layout()->content ?> +
-render('footer.phtml') ?> \ No newline at end of file +render('footer.phtml') ?> diff --git a/application/layouts/default/printable.phtml b/application/layouts/default/printable.phtml old mode 100644 new mode 100755 diff --git a/application/models/Client.php b/application/models/Client.php old mode 100644 new mode 100755 diff --git a/application/models/Director.php b/application/models/Director.php old mode 100644 new mode 100755 diff --git a/application/models/FileSet.php b/application/models/FileSet.php old mode 100644 new mode 100755 diff --git a/application/models/Files.php b/application/models/Files.php old mode 100644 new mode 100755 index 55ee44d1d..e419a502a --- a/application/models/Files.php +++ b/application/models/Files.php @@ -43,13 +43,15 @@ public function getSelectFilesByJobId($jobid) return FALSE; // !!! IMPORTANT !!! с Zend Paginator нельзя использовать DISTINCT иначе не работает в PDO_PGSQL $select = new Zend_Db_Select($this->db); - $select->from(array('f' => 'File'), array('FileId', 'FileIndex', 'LStat')); + $select->from(array('f' => 'File'), array('FileId', 'FileIndex', 'LStat', 'Name' => 'Filename')); + $select->columns(array(new Zend_Db_Expr("CASE WHEN FileIndex <= 0 THEN 'deleted' ELSE 'OK' END AS status"))); $select->joinLeft(array('p' => 'Path'), 'f.PathId = p.PathId' ,array('Path')); - $select->joinLeft(array('n' => 'Filename'), 'f.FileNameId = n.FileNameId',array('Name')); $select->where("f.JobId = ?", $jobid); $select->order(array('f.FileIndex', 'f.FileId')); + + //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! return $select; } -} \ No newline at end of file +} diff --git a/application/models/Job.php b/application/models/Job.php old mode 100644 new mode 100755 index 3a1871508..00b717eb6 --- a/application/models/Job.php +++ b/application/models/Job.php @@ -23,16 +23,16 @@ class Job extends Zend_Db_Table { - const BEGIN_LIST = '/^======.*/'; // признак начала списка (не всегда есть) - const END_LIST = '/^====$/'; // признак конца списка (присутствует всегда) + const BEGIN_LIST = '/^======.*/'; // a sign of the beginning of the list (not always) + const END_LIST = '/^====$/'; // a sign of the end of the list (always present) - const RINNING_JOBS = '/Running Jobs:/'; // начало списка запущенных заданий - const NO_JOBS_RUNNING = '/No Jobs running\./'; // нет запущенных заданий + const RUNNING_JOBS = '/Running Jobs:/'; // top of the list of running jobs + const NO_JOBS_RUNNING = '/No Jobs running\./'; // no running jobs - const SCHEDULED_JOBS = '/Scheduled Jobs:/'; // начало списка запланированных заданий - const NO_SCHEDULED_JOBS = '/No Scheduled Jobs\./'; // нет запланированных заданий + const SCHEDULED_JOBS = '/Scheduled Jobs:/'; // top of the list of scheduled tasks + const NO_SCHEDULED_JOBS = '/No Scheduled Jobs\./'; // No scheduled tasks - const EMPTY_RESULT = 'EMPTY_RESULT'; // если ничего не найдено + const EMPTY_RESULT = 'EMPTY_RESULT'; // if nothing found public $db; public $db_adapter; @@ -73,7 +73,6 @@ protected function _setupPrimaryKey() /** * If there JobId exist in the database Bacula ... - * Существует ли JobId в БД Bacula * * @return TRUE if exist * @param integer $jobid @@ -91,9 +90,8 @@ function isJobIdExists($jobid) } - /** + /** * If there Job Name exist in the database Bacula ... - * Существует ли Job Name в БД Bacula * * @return TRUE if exist * @param string $jobname @@ -116,11 +114,13 @@ function isJobNameExists($jobname) * See also http://www.bacula.org/manuals/en/developers/developers/Database_Tables.html * */ - function getTerminatedJobs() - { + function getTerminatedJobs($days, $orderp=null) + { + if ( empty($days) ) + $days = 1; $select = new Zend_Db_Select($this->db); //$select->distinct(); - $last1day = date('Y-m-d H:i:s', time() - 86400); // для совместимости со старыми версиями mysql: NOW() - INTERVAL 1 DAY + $last1day = date('Y-m-d H:i:s', time() - ($days * 86400)); // for compatibility with older versions of mysql: NOW() - INTERVAL $days switch ($this->db_adapter) { case 'PDO_MYSQL': @@ -171,6 +171,7 @@ function getTerminatedJobs() $select->joinLeft(array('p' => 'Pool'), 'j.PoolId = p.PoolId', array('PoolName' => 'Name')); $select->joinLeft(array('f' => 'FileSet'), 'j.FileSetId = f.FileSetId'); $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); /* * developers/Database_Tables.html C Created but not yet running @@ -201,7 +202,12 @@ function getTerminatedJobs() */ $select->where("j.JobStatus IN ('T', 'E', 'e', 'f', 'A', 'W', 'D')"); $select->where("j.EndTime > ?", $last1day); - $select->order(array("StartTime", "JobId")); + if ( empty($orderp) ) { + $order = array('StartTime', 'JobId'); + } else { + $order = $orderp; + } + $select->order($order); //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! $stmt = $select->query(); // do Bacula ACLs @@ -317,12 +323,12 @@ function getRunningJobs() /** * Running Jobs (from Director) - * Для дополнительной информации. Т.к. информация из БД Каталога не всегда корректна. + * For more information. Because Information from the Catalog database is not always correct. * - * === Замеченные баги === - * 1. Running Jobs - вместо (разделитель м/д полями - пробел) : + * === Known bugs === + * 1. Running Jobs - instead of (delimiter m / d fields - space) : * 24 Increme job.name.test.4 2010-11-08_21.56.48_39 running - * Bacula может выдать (разделитель м/д полями - точка) : + * Bacula may issue (delimiter m / d fields - point) : * 24 Increme job.name.test.4.2010-11-08_21.56.48_39 running */ function getDirRunningJobs() @@ -376,16 +382,16 @@ function getDirRunningJobs() $i = 0; foreach ($command_output as $line) { $line = trim($line); - // пустая строка + // empty line if ( $line == '' ) continue; - // нет запланированных заданий - выход в любом случае + // No scheduled tasks - out anyway if ( preg_match(self::NO_JOBS_RUNNING, $line) === 1 ) { $aresult = null; break; } - // начало списка запланированных заданий - if ( (!$begin1) && (!$begin2) && (!$begin3) && ( preg_match(self::RINNING_JOBS, $line) === 1) ) { + // top of the list of scheduled tasks + if ( (!$begin1) && (!$begin2) && (!$begin3) && ( preg_match(self::RUNNING_JOBS, $line) === 1) ) { $begin1 = TRUE; continue; } @@ -397,11 +403,11 @@ function getDirRunningJobs() $begin3 = TRUE; continue; } - // конец списка + // end of list if ( $begin1 && $begin2 && $begin3 && ( preg_match(self::END_LIST, $line) == 1) ) break; - // парсим - разделитель - пробел : + // parse - separator - space // 0=JobId 1=Level 2=Name 3=Status if ( $begin1 && $begin2 && $begin3 ) { // парсим @@ -413,7 +419,7 @@ function getDirRunningJobs() $aresult[$i]['name'] = $acols[2]; $aresult[$i]['status'] = $acols[3]; } else { - // неверно пропарсилось (изменения в bacula ?) + // incorrectly parse (changes in bacula?) $aresult = null; break; } @@ -427,7 +433,7 @@ function getDirRunningJobs() - /** + /** * Return % free space in VolumeName * * @param string $name @@ -435,20 +441,19 @@ function getDirRunningJobs() */ function getFreeVolumeCapacity($name) { - Zend_Loader::loadClass('Media'); - $table = new Media(); - $where = $table->getAdapter()->quoteInto('VolumeName = ?', trim($name)); - $row = $table->fetchRow($where); - - if ( !isset($row) ) - return Zend_Registry::get('NEW_VOLUME'); - else { - if ( $row->maxvolbytes != 0 ) - return( floor(100 - ($row->volbytes * 100 / $row->maxvolbytes)) ); - else - // tape storage may be maxvolbytes == 0 - return Zend_Registry::get('UNKNOWN_VOLUME_CAPACITY'); - } + Zend_Loader::loadClass('Media'); + $table = new Media(); + $where = $table->getAdapter()->quoteInto('VolumeName = ?', trim($name)); + $row = $table->fetchRow($where); + if ( !isset($row) ) + return Zend_Registry::get('NEW_VOLUME'); + else { + if ( $row->maxvolbytes != 0 ) + return( floor(100 - ($row->volbytes * 100 / $row->maxvolbytes)) ); + else + // tape storage may be maxvolbytes == 0 + return Zend_Registry::get('UNKNOWN_VOLUME_CAPACITY'); + } } @@ -506,15 +511,15 @@ function getScheduledJobs() $i = 0; foreach ($command_output as $line) { $line = trim($line); - // пустая строка + // empty line if ( $line == '' ) continue; - // нет запланированных заданий - выход в любом случае + // No scheduled tasks - out anyway if ( preg_match(self::NO_SCHEDULED_JOBS, $line) === 1 ) { $aresult = null; break; } - // начало списка запланированных заданий + // top of the list of scheduled tasks if ( (!$begin1) && (!$begin2) && (!$begin3) && ( preg_match(self::SCHEDULED_JOBS, $line) === 1) ) { $begin1 = TRUE; continue; @@ -527,30 +532,30 @@ function getScheduledJobs() $begin3 = TRUE; continue; } - // конец списка + // end of list if ( $begin1 && $begin2 && $begin3 && ( preg_match(self::END_LIST, $line) == 1) ) break; - // парсим - разделитель - пробел : + // parse - separator - space // 0=Level 1=Type 2=Pri 3=Scheduled(date) 4=(time) 5=Name 6=Volume if ( $begin1 && $begin2 && $begin3 ) { - // пробуем парсить + // we try to parse $acols = preg_split("/[\s]+/", $line, -1, PREG_SPLIT_NO_EMPTY); $count = count($acols); $aresult[$i]['level'] = $acols[0][0]; // first letter F(ull), I(nc), D(iff) $aresult[$i]['type'] = $acols[1]; $aresult[$i]['pri'] = $acols[2]; $aresult[$i]['date'] = $acols[3] . ' ' . $acols[4]; - $aresult[$i]['vol'] = $acols[ $count-1 ]; // в имени Volume пробелов быть не может, поэтому последнее поле - точно Volume + $aresult[$i]['vol'] = $acols[ $count-1 ]; // Volume in the name spaces can not be, so the last field - exactly Volume if ( $aresult[$i]['vol'] == '*unknown*') $aresult[$i]['volfree'] = 'UNKNOWN_VOLUME_CAPACITY'; else $aresult[$i]['volfree'] = $this->getFreeVolumeCapacity($aresult[$i]['vol']); if ( $count == 7 ) { - // в имени Job нет пробелов + // in the name of Job are no gaps $aresult[$i]['name'] = $acols[5]; } else { - // в имени Job есть пробелы (в имени Volume пробелов быть не может) + // in the name of Job there are gaps (in the name of Volume gaps can not be) $aresult[$i]['name'] = $acols[5]; for ($j = 6; $j <= $count-2; $j++) { $aresult[$i]['name'] .= ' ' . $acols[$j]; @@ -575,7 +580,7 @@ function getScheduledJobs() } unset($where, $row); } - unset($line); /* чтобы последующие записи в $line не меняли последний элемент массива */ + unset($line); /* to the next entry in the $ line did not change the last element of the array */ } return $aresult_acl; } @@ -635,7 +640,7 @@ function getProblemJobs($last_days) $select->joinLeft(array('f' => 'FileSet'), 'j.FileSetId = f.FileSetId', array('fileset'=>'FileSet')); $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); - $last7day = date('Y-m-d H:i:s', time() - $last_days * 86400); // для совместимости + $last7day = date('Y-m-d H:i:s', time() - $last_days * 86400); // for compatibility $select->where("((j.JobErrors > 0) OR (j.JobStatus IN ('E','e','f','I','D')))"); $select->where("j.EndTime > ?", $last7day); $select->where("j.Reviewed = 0"); @@ -649,83 +654,51 @@ function getProblemJobs($last_days) /** - * Get Listing All Jobs - * - */ + * Get Listing All Jobs + * + */ function getListJobs() { - $director = new Director(); - // check access to bconsole - if ( !$director->isFoundBconsole() ) { - $aresult[] = 'ERROR: bconsole not found.'; - return $aresult; - } - $astatusdir = $director->execDirector( + $director = new Director(); + // check access to bconsole + if ( !$director->isFoundBconsole() ) { + $aresult[] = 'ERROR: bconsole not found.'; + return $aresult; + } + $astatusdir = $director->execDirector( "<bacula_acl->doBaculaAcl( $aresult, 'jobname', 'job'); - /* - * convert two dimensional $res2dim to one dimension array $res1dim - * для корректного отображения в форме нужен ординарный массив - */ - $res1dim = array(); - foreach($res2dim as $res2) { - $res1dim[] = $res2['jobname']; - } - return $res1dim; + $res1dim = $this->bacula_acl->doBaculaAcl( $aresult, 'jobname', 'job'); + return $res1dim; } @@ -737,14 +710,13 @@ function getSelectFilteredJob($date_begin, $time_begin, $date_end, $time_end, if ( isset($date_begin, $time_begin, $date_end, $time_end, $client, $fileset) ) { $select = new Zend_Db_Select($this->db); - // !!! IMPORTANT !!! с Zend Paginator нельзя использовать DISTINCT иначе не работает в PDO_PGSQL + // !!! IMPORTANT !!! Zend_paginator not use DISTINCT somehow does not work in PDO_PGSQL switch ($this->db_adapter) { case 'PDO_MYSQL': //$select->distinct(); $select->from(array('j' => 'Job'), array('JobId', 'Type', 'JobName' => 'Name', 'Level', 'ClientId', - 'StartTime' => "DATE_FORMAT(j.StartTime, '%y-%b-%d %H:%i')", - 'EndTime' => "DATE_FORMAT(j.EndTime, '%y-%b-%d %H:%i')", + 'StartTime', 'EndTime', 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'Reviewed', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', 'DurationTime' => 'TIMEDIFF(EndTime, StartTime)')); @@ -774,8 +746,8 @@ function getSelectFilteredJob($date_begin, $time_begin, $date_end, $time_end, $select->joinLeft(array('c' => 'Client'), 'j.ClientId = c.ClientId', array('ClientName' => 'c.Name')); $select->joinLeft(array('p' => 'Pool'), 'j.PoolId = p.PoolId', array('PoolName' => 'p.Name')); $select->joinLeft(array('f' => 'FileSet'), 'j.FileSetId = f.FileSetId', array('FileSet')); - $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); - + $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); $select->where( "('" . $date_begin . ' ' . $time_begin . "' <= j.StartTime) AND (j.StartTime <= '" . $date_end . ' ' . $time_end . "')" ); @@ -851,8 +823,7 @@ function getByJobId($jobid) case 'PDO_MYSQL': $select->from(array('j' => 'Job'), array('JobId', 'Type', 'JobName' => 'Name', 'Level', 'ClientId', - 'StartTime' => "DATE_FORMAT(j.StartTime, '%y-%b-%d %H:%i')", - 'EndTime' => "DATE_FORMAT(j.EndTime, '%y-%b-%d %H:%i')", + 'StartTime', 'EndTime', 'StartTimeRaw' => 'j.StartTime', 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'Reviewed', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', @@ -886,6 +857,7 @@ function getByJobId($jobid) $select->joinLeft(array('p' => 'Pool'), 'j.PoolId = p.PoolId', array('PoolName' => 'Name')); $select->joinLeft(array('f' => 'FileSet'), 'j.FileSetId = f.FileSetId', array('FileSet')); $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); $select->where("j.JobId = '$jobid'"); $select->order(array("StartTime", "JobId")); //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! @@ -912,8 +884,7 @@ function getByJobName($jobname) case 'PDO_MYSQL': $select->from(array('j' => 'Job'), array('JobId', 'Type', 'JobName' => 'Name', 'Level', 'ClientId', - 'StartTime' => "DATE_FORMAT(j.StartTime, '%y-%b-%d %H:%i')", - 'EndTime' => "DATE_FORMAT(j.EndTime, '%y-%b-%d %H:%i')", + 'StartTime', 'EndTime', 'StartTimeRaw' => 'j.StartTime', 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'Reviewed', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', @@ -947,8 +918,9 @@ function getByJobName($jobname) $select->joinLeft(array('p' => 'Pool'), 'j.PoolId = p.PoolId', array('PoolName' => 'Name')); $select->joinLeft(array('f' => 'FileSet'), 'j.FileSetId = f.FileSetId', array('FileSet')); $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); $select->where("j.Name = '$jobname'"); - $select->order(array("StartTime", "JobId")); + $select->order(array("StartTime desc", "JobId desc")); //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! $stmt = $select->query(); // do Bacula ACLs @@ -968,8 +940,7 @@ function getByVolumeName($volname) case 'PDO_MYSQL': $select->from(array('j' => 'Job'), array('j.JobId', 'Type', 'JobName' => 'Name', 'Level', 'ClientId', - 'StartTime' => "DATE_FORMAT(j.StartTime, '%y-%b-%d %H:%i')", - 'EndTime' => "DATE_FORMAT(j.EndTime, '%y-%b-%d %H:%i')", + 'StartTime', 'EndTime', 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'Reviewed', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', 'DurationTime' => 'TIMEDIFF(EndTime, StartTime)' )); @@ -1005,6 +976,7 @@ function getByVolumeName($volname) $select->joinLeft(array('o' => 'JobMedia'), 'j.JobId = o.JobId', array('JobId')); $select->joinLeft(array('m' => 'Media'), 'm.MediaId = o.MediaId', array('MediaId')); $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); $select->where("m.VolumeName = '$volname'"); $select->order(array("StartTime", "j.JobId")); @@ -1027,9 +999,7 @@ function getDetailByJobId($jobid) case 'PDO_MYSQL': $select->from(array('j' => 'Job'), array('JobId', 'Job', 'Name', 'Level', 'ClientId', - 'StartTime' => "DATE_FORMAT(j.StartTime, '%y-%b-%d %H:%i')", - 'EndTime' => "DATE_FORMAT(j.EndTime, '%y-%b-%d %H:%i')", - 'SchedTime' => "DATE_FORMAT(j.SchedTime, '%y-%b-%d %H:%i')", + 'StartTime', 'EndTime', 'SchedTime', 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', 'Type', 'DurationTime' => 'TIMEDIFF(EndTime, StartTime)', 'PriorJobId', @@ -1075,6 +1045,7 @@ function getDetailByJobId($jobid) $select->joinLeft(array('f' => 'FileSet'), 'j.FileSetId = f.FileSetId', array('FileSetName' => 'FileSet', 'FileSetCreateTime' => 'CreateTime')); $select->joinLeft(array('sd'=> 'webacula_jobdesc'), 'j.Name = sd.name_job'); + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); $select->where("j.JobId = ?", $jobid); //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! @@ -1171,6 +1142,7 @@ function getLastJobRun($numjob) $select->joinInner(array('s' => 'Status'), "j.JobStatus = s.JobStatus" , array('jobstatuslong'=>'JobStatusLong')); break; } + $select->joinLeft(array('wjs'=> 'webacula_job_size'), 'j.JobId = wjs.JobId', array('FileSize' => 'FileSize')); $select->where("j.JobStatus IN ('T', 'E', 'e', 'f', 'A', 'W', 'D')"); $select->where("j.Type = 'B'"); $select->order(array("sortStartTime DESC")); @@ -1248,13 +1220,11 @@ function getByFileName($path, $namefile, $client, $limit, $type_search) case 'PDO_MYSQL': $select->from(array('j' => 'Job'), array('JobId', 'Type', 'JobName' => 'Name', 'Level', 'ClientId', - 'StartTime' => "DATE_FORMAT(j.StartTime, '%y-%b-%d %H:%i')", - 'EndTime' => "DATE_FORMAT(j.EndTime, '%y-%b-%d %H:%i')", + 'StartTime' => 'EndTime', 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'Reviewed', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', 'DurationTime' => 'TIMEDIFF(EndTime, StartTime)')); - $select->joinLeft('File', 'j.JobId = File.JobId', array('File.JobId', 'File.FileId')); - $select->joinLeft('Filename', 'File.FilenameId = Filename.FilenameId', array('FileName' => 'Filename.Name')); + $select->joinLeft('File', 'j.JobId = File.JobId', array('File.JobId', 'File.FileId', 'File.Filename')); $select->joinLeft('Path', 'File.PathId = Path.PathId', array('Path' => 'Path.Path')); $select->joinLeft('Status', 'j.JobStatus = Status.JobStatus', array('JobStatusLong' => 'Status.JobStatusLong')); $select->joinLeft('Client', 'j.ClientId = Client.ClientId', array('ClientName' => 'Client.Name')); @@ -1271,8 +1241,7 @@ function getByFileName($path, $namefile, $client, $limit, $type_search) 'VolSessionId', 'VolSessionTime', 'JobFiles', 'JobBytes', 'JobErrors', 'Reviewed', 'PoolId', 'FileSetId', 'PurgedFiles', 'JobStatus', 'DurationTime' => '(EndTime - StartTime)')); - $select->joinLeft('File', 'j.JobId = File.JobId', array('File.JobId', 'File.FileId')); - $select->joinLeft('Filename', 'File.FilenameId = Filename.FilenameId', array('FileName' => 'Filename.Name')); + $select->joinLeft('File', 'j.JobId = File.JobId', array('File.JobId', 'File.FileId', 'File.Filename')); $select->joinLeft('Path', 'File.PathId = Path.PathId', array('Path' => 'Path.Path')); $select->joinLeft('Status', 'j.JobStatus = Status.JobStatus', array('JobStatusLong' => 'Status.JobStatusLong')); $select->joinLeft('Client', 'j.ClientId = Client.ClientId', array('ClientName' => 'Client.Name')); @@ -1291,8 +1260,7 @@ function getByFileName($path, $namefile, $client, $limit, $type_search) 'jobbytes'=>'JobBytes', 'joberrors'=>'JobErrors', 'reviewed'=>'Reviewed', 'poolid'=>'PoolId', 'filesetid'=>'FileSetId', 'purgedfiles'=>'PurgedFiles', 'jobstatus'=>'JobStatus', 'DurationTime' => "(strftime('%H:%M:%S',strftime('%s',EndTime) - strftime('%s',StartTime),'unixepoch'))")); - $select->joinLeft('File', 'j.JobId = File.JobId', array('File.JobId', 'File.FileId')); - $select->joinLeft('Filename', 'File.FilenameId = Filename.FilenameId', array('FileName' => 'Filename.Name')); + $select->joinLeft('File', 'j.JobId = File.JobId', array('File.JobId', 'File.FileId', 'File.Filename')); $select->joinLeft('Path', 'File.PathId = Path.PathId', array('path' => 'Path.Path')); $select->joinLeft('Status', 'j.JobStatus = Status.JobStatus', array('jobstatuslong' => 'Status.JobStatusLong')); $select->joinLeft('Client', 'j.ClientId = Client.ClientId', array('clientname' => 'Client.Name')); @@ -1310,12 +1278,12 @@ function getByFileName($path, $namefile, $client, $limit, $type_search) } $select->where( - $this->myMakeWhere('Filename.Name', $namefile, $type_search)); + $this->myMakeWhere('File.Filename', $namefile, $type_search)); if ( !empty($client) ) { $select->where($this->db->quoteInto("Client.Name = ?", $client)); } - $select->order(array("StartTime")); + $select->order(array("StartTime DESC")); //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! } $stmt = $select->query(); @@ -1330,7 +1298,7 @@ function getByFileName($path, $namefile, $client, $limit, $type_search) */ function getJobBeforeDate($date_before, $client_id_from, $file_set) { - /* Поиск JobId последнего Full бэкапа для заданных Client, Fileset, Date + /* Search Job Id last Full backup for the given Client, File Set, Date * cats/sql_cmds.c :: uar_last_full */ $ajob_all = array(); @@ -1360,7 +1328,7 @@ function getJobBeforeDate($date_before, $client_id_from, $file_set) return; $ajob_all[] = $ajob_full[0]['jobid']; - /* Поиск свежего Differential бэкапа, после Full бэкапа, если есть + /* Search fresh Differential backup after the Full backup, if there is * cats/sql_cmds.c :: uar_dif */ $sql = "SELECT Job.JobId,Job.JobTDate,Job.ClientId, Job.Level,Job.JobFiles,Job.JobBytes," . @@ -1385,7 +1353,7 @@ function getJobBeforeDate($date_before, $client_id_from, $file_set) if ( $ajob_diff ) { $ajob_all[] .= $ajob_diff[0]['jobid']; } - /* Поиск свежих Incremental бэкапов, после Full или Differential бэкапов, если есть + /* Search fresh Incremental backups after the Full or Differential backups if there * cats/sql_cmds.c :: uar_inc */ if ( !empty($ajob_diff[0]['jobtdate']) ) { @@ -1429,11 +1397,12 @@ function getJobBeforeDate($date_before, $client_id_from, $file_set) " ORDER BY Job.StartTime ASC"; break; } + //echo "
$sql
"; exit; // for !!!debug!!! $stmt = $this->db->query($sql); $ajob_inc = $stmt->fetchAll(); unset($stmt); - // формируем хэш из jobids + // forming a hash of jobids if ( empty($ajob_diff) ) { $hash = '' . $ajob_full[0]['jobid']; } else { @@ -1459,10 +1428,9 @@ function getByFileId($fileid) if ( empty($fileid) ) return; $select = new Zend_Db_Select($this->db); - $select->from(array('f' => 'File'), array('FileId', 'LStat')); + $select->from(array('f' => 'File'), array('FileId', 'Filename', 'LStat')); $select->joinLeft(array('j' => 'Job'), 'j.JobId = f.JobId', array('JobId', 'jobname' => 'Name') ); $select->joinLeft(array('p' => 'Path'), 'p.PathId = f.PathId', array('PathId', 'Path') ); - $select->joinLeft(array('n' => 'Filename'), 'n.FilenameId = f.FilenameId', array('Filename' => 'Name') ); $select->where("f.FileId = ?", $fileid); //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! $stmt = $select->query(); diff --git a/application/models/Log.php b/application/models/Log.php old mode 100644 new mode 100755 diff --git a/application/models/Media.php b/application/models/Media.php old mode 100644 new mode 100755 index e2823cfc1..9ec4a7142 --- a/application/models/Media.php +++ b/application/models/Media.php @@ -85,6 +85,7 @@ function getByName($volname, $order='VolumeName') 'VolumeName', 'VolStatus', 'VolBytes', 'MaxVolBytes', 'VolJobs', 'VolRetention', 'Recycle', 'Slot', 'InChanger', 'MediaType', 'FirstWritten', 'LastWritten' )); + $select->columns(array(new Zend_Db_Expr("(SELECT count(DISTINCT JobId) FROM JobMedia WHERE JobMedia.MediaId = Media.MediaId) AS VolJobs"))); $select->where('VolumeName = ?', $volname); $select->order($order); //$sql = $select->__toString(); echo "
$sql
"; // for !!!debug!!! @@ -96,17 +97,19 @@ function detail($media_id) { $select = new Zend_Db_Select($this->db); $select->from('Media', - array('MediaId', 'PoolId', 'StorageId', - 'VolumeName', 'VolStatus', 'VolBytes', 'MaxVolBytes', 'VolJobs', 'VolRetention', - 'Recycle', 'Slot', 'InChanger', 'MediaType', + array('MediaId', 'PoolId', 'StorageId','DeviceId', 'MediaAddressing', + 'VolumeName', 'VolStatus', 'VolBytes', 'MaxVolBytes', 'VolRetention', + 'Recycle', 'Slot', 'InChanger', 'MediaType', 'LabelType', 'FirstWritten', 'LastWritten', 'LabelDate', 'VolFiles', 'VolBlocks', 'VolMounts', 'VolParts', 'VolErrors', 'VolWrites', 'VolCapacityBytes', 'Enabled', 'ActionOnPurge', 'VolUseDuration', 'MaxVolJobs', 'MaxVolFiles', - 'VolReadTime', 'VolWriteTime', 'EndFile', 'EndBlock', - 'RecycleCount', 'InitialWrite','Comment' + 'VolReadTime', 'VolWriteTime', 'EndFile', 'EndBlock', 'LocationId', + 'RecycleCount', 'InitialWrite', 'ScratchPoolId', 'RecyclePoolId', 'Comment', + 'VolABytes', 'VolAPadding', 'VolHoleBytes', 'VolHoles' )); - $select->where('MediaId = ?', $media_id); + $select->columns(array(new Zend_Db_Expr("(SELECT count(DISTINCT JobId) FROM JobMedia WHERE JobMedia.MediaId = Media.MediaId) AS VolJobs"))); + $select->where('Media.MediaId = ?', $media_id); //$sql = $select->__toString(); echo "
$sql
";exit; // for !!!debug!!! $stmt = $select->query(); return $stmt->fetchAll(); @@ -117,10 +120,11 @@ function getById($pool_id, $order) $select = new Zend_Db_Select($this->db); $select->from('Media', array('MediaId', 'PoolId', 'StorageId', - 'VolumeName', 'VolStatus', 'VolBytes', 'MaxVolBytes', 'VolJobs', 'VolRetention', 'Recycle', 'Slot', + 'VolumeName', 'VolStatus', 'VolBytes', 'MaxVolBytes', 'VolRetention', 'Recycle', 'Slot', 'InChanger', 'MediaType', 'FirstWritten', 'LastWritten' )); + $select->columns(array(new Zend_Db_Expr("(SELECT count(DISTINCT JobId) FROM JobMedia WHERE JobMedia.MediaId = Media.MediaId) AS VolJobs"))); $select->where('PoolId = ?', $pool_id); $select->order($order); //$sql = $select->__toString(); echo "
$sql
";exit; // for !!!debug!!! diff --git a/application/models/Pool.php b/application/models/Pool.php old mode 100644 new mode 100755 diff --git a/application/models/Schedule.php b/application/models/Schedule.php new file mode 100755 index 000000000..031f058cb --- /dev/null +++ b/application/models/Schedule.php @@ -0,0 +1,295 @@ +. + * + * @author Wanderlei Hüttel + * @package webacula + * @license http://www.gnu.org/licenses/gpl-3.0.html GNU Public License + * + */ + +class Schedule +{ + const BEGIN_LIST = '/^======.*/'; // a sign of the beginning of the list (not always) + const END_LIST = '/^====$/'; // a sign of the end of the list (always present) + + const RUNNING_JOBS = '/Running Jobs:/'; // top of the list of running jobs + const NO_JOBS_RUNNING = '/No Jobs running\./'; // no running jobs + + const SCHEDULED_JOBS = '/Scheduled Jobs:/'; // top of the list of scheduled tasks + const NO_SCHEDULED_JOBS = '/No Scheduled Jobs\./'; // No scheduled tasks + + const EMPTY_RESULT = 'EMPTY_RESULT'; // if nothing found + + public $db; + public $db_adapter; + protected $bacula_acl; // bacula acl + + + public function __construct() + { + $this->config = Zend_Registry::get('config'); + $this->sudo = $this->config->general->bacula->sudo; + $this->bconsole = $this->config->general->bacula->bconsole; + $this->bconsolecmd = $this->config->general->bacula->bconsolecmd; + $cmd = ''; + if ( isset($this->sudo)) { + // run with sudo + $cmd = $this->sudo . ' ' . $this->bconsole . ' ' . $this->bconsolecmd; + } else { + $cmd = $this->bconsole . ' ' . $this->bconsolecmd; + } + $this->bconsolecmd = $cmd; + } + + /** + * Get the array with only numbers and return with the corresponding names. + * Array month - 0=January, 1=February, ... 11=December + * Array week of month - 0=1st, 1=2nd, ... 5=6st + * Array day of week - 0=Sunday, 1=Monday, ... 6=Saturday + * Array day - 0=1, 1=2, ... 30=31 + * Example: $month = array(0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11) + * return: $month = January,February,... December); + * or: $month = January-December); + * + */ + public function sequenceShorten( $array_value, $start=0, $size=0, $array_label=null) + { + + //create a new array + $array_full = range(0,$size-1); + + //if array_label is null, return just numbers format + if( $array_label == null){ + $array_label = $array_full; + }//end if + + // use array_diff to get the missing elements + $array_missing = array_diff($array_full, $array_value); + + //create a new array splitting when some key is missing with a separated key + $count=0; + for($i=0;$i 2 ){ + $text .= $array_label[$row[0]]."-". $array_label[$row[$count-1]].","; + } + } // end foreach + return substr($text,0,strlen($text)-1); + + }//end function + + + + /** + * Get Schedules (from Director) + * + */ + public function getSchedule() + { + $config = Zend_Registry::get('config'); + $translate = Zend_Registry::get('translate'); + $array_month_long = array(0=>$translate->_('January'),1=>$translate->_('February'),2=>$translate->_('March'),3=>$translate->_('April'),4=>$translate->_('May'),5=>$translate->_('June'), + 6=>$translate->_('July'),7=>$translate->_('August'),8=>$translate->_('September'),9=>$translate->_('October'),10=>$translate->_('November'),11=>$translate->_('December')); + $array_weekday_long = array(0=>$translate->_('Sunday'),1=>$translate->_('Monday'),2=>$translate->_('Tuesday'),3=>$translate->_('Wednesday'),4=>$translate->_('Thursday'), + 5=>$translate->_('Friday'),6=>$translate->_('Saturday')); + $array_weekmonth_short = array(0=>$translate->_('1st'),1=>$translate->_('2nd'),2=>$translate->_('3rd'),3=>$translate->_('4th'),4=>$translate->_('5th'),5=>$translate->_('6th')); + $array_weekyear_short = array(0=>1,1=>2,2=>3,3=>4,4=>5,5=>6,6=>7,7=>8,8=>9,9=>10,10=>11,11=>12,12=>13,13=>14,14=>15,15=>16,16=>17,17=>18,18=>19,19=>20,20=>21,21=>22,22=>23,23=>24,24=>25,25=>26,26=>27,27=>28,28=>29,29=>30,30=>31,31=>32,32=>33,33=>34,34=>35,35=>36,36=>37,37=>38,38=>39,39=>40,40=>41,41=>42,42=>43,43=>44,44=>45,45=>46,46=>47,47=>48,48=>49,49=>50,50=>51,51=>52,52=>53,53=>54); + $array_day_short = array(0=>1,1=>2,2=>3,3=>4,4=>5,5=>6,6=>7,7=>8,8=>9,9=>10,10=>11,11=>12,12=>13,13=>14,14=>15,15=>16,16=>17,17=>18,18=>19,19=>20,20=>21,21=>22,22=>23,23=>24,24=>25,25=>26,26=>27,27=>28,28=>29,29=>30,30=>31); + + // check access to bconsole + if ( !file_exists($config->general->bacula->bconsole)) { + $aresult[] = 'NOFOUND'; + return $aresult; + } + + $bconsolecmd = ''; + if ( isset($config->general->bacula->sudo)) { + // run with sudo + $bconsolecmd = $config->general->bacula->sudo . ' ' . $config->general->bacula->bconsole . ' ' . + $config->general->bacula->bconsolecmd; + } else { + $bconsolecmd = $config->general->bacula->bconsole . ' ' . $config->general->bacula->bconsolecmd; + } + + //=========================================================================== + // Get schedules names from bconsole + //=========================================================================== + $command_output = ""; + $return_var = 0; + exec($bconsolecmd . + '<"; print_r($array_schedule_name); echo "";;// !!! DEBUG !!! + + + //=========================================================================== + //# Get information about of all schedules from bconsole and separate + //# information of schedules in an key in array + //=========================================================================== + foreach($array_schedule_name as $key => $value1){ + $command_output = ""; + $return_var = 0; + exec($bconsolecmd . + '< ","",$line); + } + if($line=="quit"){ + break; + } + } //end for each + } //end for each + //echo "
"; print_r($array_schedule); echo "
"; // !!! DEBUG !!! + + //=========================================================================== + //# Create secondary array with the options of everything schedule + //=========================================================================== + // get the all lines from bconsole and separate groups lines per schedule names + for($i=0;$isequenceShorten( $array_day, 0, 31, $array_day_short); + } //end if + + if ( preg_match("((^wday))", $line)){ + $array_weekday = explode(",", str_replace(" ", ",", str_replace("wday=","",$line) ) ); + $v[$key]['weekday'] = $this->sequenceShorten( $array_weekday, 0, 7, $array_weekday_long); + } //end if + + if ( preg_match("((^wom))", $line)){ + $array_weekmonth = explode(",", str_replace(" ", ",", str_replace("wom=","",$line) ) ); + $v[$key]['weekmonth'] = $this->sequenceShorten( $array_weekmonth, 0, 7, $array_weekmonth_short); + } //end if + if ( preg_match("((^woy))", $line)){ + $array_weekyear = explode(",", str_replace(" ", ",", str_replace("woy=","",$line) ) ); + $v[$key]['weekyear'] = $this->sequenceShorten( $array_weekyear, 0, 53, $array_weekyear_short); + } //end if + if ( preg_match("((^month))", $line)){ + $array_month = explode(",", str_replace(" ", ",", str_replace("month=","",$line) ) ); + $v[$key]['month'] = $this->sequenceShorten( $array_month, 0, 12, $array_month_long); + } //end if + + } // end for j + $array_schedule_options[$i]['schedule'] = $v; + unset($v); + }//end for i + //echo "
"; print_r($array_schedule_options); echo "
"; // !!! DEBUG !!! + //exit; + + return $array_schedule_options; + } + +} diff --git a/application/models/Storage.php b/application/models/Storage.php old mode 100644 new mode 100755 diff --git a/application/models/Timeline.php b/application/models/Timeline.php old mode 100644 new mode 100755 diff --git a/application/models/Version.php b/application/models/Version.php old mode 100644 new mode 100755 index f3e12d98d..911322ca0 --- a/application/models/Version.php +++ b/application/models/Version.php @@ -38,34 +38,56 @@ protected function _setupTableName () { switch ($this->db_adapter) { case 'PDO_PGSQL': - $this->_name = 'version'; + $this->_name = 'webacula_version'; break; default: // including mysql, sqlite - $this->_name = 'Version'; + $this->_name = 'webacula_version'; } parent::_setupTableName(); } - function getVesion() - { - $select = new Zend_Db_Select($this->db); - $select->from('Version', 'VersionId'); + function getVersion() + { + $select = new Zend_Db_Select($this->db); + $select->from($this->_name, 'VersionId'); $select->limit(1); $res = $this->db->fetchOne($select); - return $res; - } + return $res; + } - /** - * Check Catalog DB version - * Сравнивает версию БД Каталога Bacula - * + /** + * Check Catalog DB version + * Compare the version of the Bacula Catalog DB + * * @param $ver valid version - * @return TRUE if correct - */ - function checkVesion($ver) - { - $res = $this->getVesion(); - return ( $res == $ver ); - } + * @return TRUE if correct + */ + function checkVersion($ver) + { + $res = $this->getVersion(); + return ( $res == $ver ); + } -} \ No newline at end of file + function getDatabaseSize() + { + $config = new Zend_Config_Ini('../application/config.ini'); + $db_name = $config->general->db->config->dbname; + if($this->db_adapter == 'PDO_MYSQL'){ + if (version_compare($this->db->getServerVersion(), '5.0.0') >= 0) { + $query = "select sum(data_length + index_length) as db_size from information_schema.tables where table_schema = '$db_name'"; + $stmt = $this->_db->query($query); + $db_size = $stmt->fetch(); + return $db_size['db_size']; + } else { + return 0; + } + } else if($this->db_adapter == 'PDO_PGSQL'){ + $query = "SELECT pg_database_size('$db_name') AS db_size"; + $stmt = $this->_db->query($query); + $db_size = $stmt->fetch(); + return $db_size['db_size']; + } else { + return 0; + } + } +} diff --git a/application/models/WbClientACL.php b/application/models/WbClientACL.php old mode 100644 new mode 100755 diff --git a/application/models/WbCommandACL.php b/application/models/WbCommandACL.php old mode 100644 new mode 100755 diff --git a/application/models/WbDtCommands.php b/application/models/WbDtCommands.php old mode 100644 new mode 100755 diff --git a/application/models/WbDtResources.php b/application/models/WbDtResources.php old mode 100644 new mode 100755 diff --git a/application/models/WbFilesetACL.php b/application/models/WbFilesetACL.php old mode 100644 new mode 100755 diff --git a/application/models/WbJobACL.php b/application/models/WbJobACL.php old mode 100644 new mode 100755 diff --git a/application/models/WbPoolACL.php b/application/models/WbPoolACL.php old mode 100644 new mode 100755 diff --git a/application/models/WbStorageACL.php b/application/models/WbStorageACL.php old mode 100644 new mode 100755 diff --git a/application/models/WbTmpTable.php b/application/models/WbTmpTable.php old mode 100644 new mode 100755 index 8a6e5b83a..3ccdb2230 --- a/application/models/WbTmpTable.php +++ b/application/models/WbTmpTable.php @@ -1,6 +1,6 @@ + * @author Yuri Timofeev * @license http://www.gnu.org/licenses/gpl-3.0.html GNU Public License */ @@ -27,34 +27,36 @@ class WbTmpTable extends Zend_Db_Table { // for pager const ROW_LIMIT_FILES = 500; - // for names of tmp tables (для формирования имен временных таблиц) - const _PREFIX = 'webacula_tmp_'; // только в нижнем регистре + // for names of tmp tables + const _PREFIX = 'webacula_tmp_'; // only lowercase public $db_adapter; protected $jobidhash; protected $_name = 'webacula_tmp_tablelist'; // list of temporary tables. - //список всех временных таблиц, имя только в нижнем регистре + //list all temporary tables, the name of only lowercase protected $_primary = 'tmpid'; protected $ttl_restore_session = 3600; // time to live temp tables (1 hour) - // names of tmp tables (имена временных таблиц) + // names of tmp tables protected $tmp_file; - protected $num_tmp_tables = 1; // count of tmp tables (кол-во временных таблиц) + protected $num_tmp_tables = 1; // count of tmp tables + private $insertarray = array(); + private $flushnumber = 200; /** - * @param string $prefix для формирования имен tmp таблиц - * @param string $jobidHash хэш-индекс для массива jobid + * @param string $prefix To generate tmp table names + * @param string $jobidHash Hash-index for the jobid array */ public function __construct($jobidhash, $ttl_restore_session) { $this->db_adapter = Zend_Registry::get('DB_ADAPTER'); $this->jobidhash = $jobidhash; $this->ttl_restore_session = $ttl_restore_session; - // формируем имена временных таблиц + // generate a temp table name $this->tmp_file = self::_PREFIX . 'file_' . $this->jobidhash; $config['db'] = Zend_Registry::get('db_bacula'); // database $config['name'] = $this->_name; // name table @@ -65,11 +67,11 @@ public function __construct($jobidhash, $ttl_restore_session) // setup DB adapter $this->_db = Zend_Db_Table::getAdapter('db_bacula'); - // существует ли таблица ? + // if table exists try { $this->_db->query('SELECT tmpId FROM '. $this->_name .' LIMIT 1'); } catch (Zend_Exception $e) { - // создаем таблицу + // create table switch ($this->db_adapter) { case 'PDO_MYSQL': $sql = 'CREATE TABLE '. $this->_name .' ( @@ -123,7 +125,7 @@ function getTableNameFile() /** - * Пометить файл для восстановления + * Mark file for recovery */ function markFile($fileid) { @@ -132,7 +134,7 @@ function markFile($fileid) /** - * Удалить пометку файла для восстановления + * Remove file for recovery */ function unmarkFile($fileid) { @@ -140,20 +142,20 @@ function unmarkFile($fileid) } /** - * Пометить/снять пометку - * каталог + файлы в каталоге + подкаталоги + файлы в них для восстановления. + * Mark / unmark + * Show catalog files and subdirectories to recover * * @param string $pathid - * @param integer $label 0 или 1 + * @param integer $label 0 or 1 * * @return array (path , dirs + files affected) */ function markDir($path, $label) { - // проверка $label + // verification $label if ( !is_numeric($label) ) return null; - // помечаем файлы для восстановления + // mark the files to recover $query = 'UPDATE '. $this->_db->quoteIdentifier($this->tmp_file) .' SET isMarked = '.$label. ' WHERE FileId IN ( SELECT f.FileId FROM File AS f @@ -163,8 +165,8 @@ function markDir($path, $label) $res = $this->_db->query($query); unset($query); unset($res); - // подсчет статистики - // кол-во файлов + // statistics counting + // number of files $query = "SELECT count(FileId) as countf FROM " . $this->_db->quoteIdentifier($this->tmp_file) . " WHERE isMarked=1"; $stmt = $this->_db->query($query); @@ -179,19 +181,19 @@ function markDir($path, $label) /** - * Получить имя файла + * Get file name */ function getFileName($fileid) { - $stmt = $this->_db->query('SELECT n.Name AS name - FROM Filename AS n, File AS f - WHERE (f.FilenameId = n.FilenameId) AND (f.FileId = ' . $fileid . ') LIMIT 1'); + $stmt = $this->_db->query('SELECT f.Filename AS name + FROM File f + WHERE (f.FileId = ' . $fileid . ') LIMIT 1'); $res = $stmt->fetchAll(); return $res[0]['name']; } /** - * Получить имя каталога + * Get folder name */ function getDirName($pathid) { @@ -210,16 +212,27 @@ function getDirName($pathid) /** * Fast INSERT INTO tmp_file_ VALUES () */ - function insertRowFile($jobid, $FileId, $FileIndex, $FileSize, $isMarked=0) + function insertRowFile($jobid, $FileId, $FileIndex, $FileSize, $isMarked=0, $flush=false) { - try { - $this->_db->query("INSERT INTO " . $this->_db->quoteIdentifier($this->tmp_file) . - " (FileId, FileIndex, isMarked, FileSize, JobId) " . - " VALUES ($FileId, $FileIndex, $isMarked, $FileSize, $jobid)"); - return TRUE; // all ok - } catch (Zend_Exception $e) { - echo '

', __METHOD__,'
Caught exception: ', get_class($e), '
', 'Message: ', $e->getMessage(), '
'; - return FALSE; + if(!$flush){ + $this->insertarray[] = "($FileId, $FileIndex, $isMarked, $FileSize, $jobid)"; + } + if($flush || sizeof($this->insertarray) > $this->flushnumber){ + try { + $q = "INSERT INTO " . $this->_db->quoteIdentifier($this->tmp_file) . + " (FileId, FileIndex, isMarked, FileSize, JobId) " . + " VALUES "; + $q = $q . implode(',', $this->insertarray); + $this->insertarray = array(); + + $this->_db->query($q); + return TRUE; // all ok + } catch (Zend_Exception $e) { + echo '

', __METHOD__,'
Caught exception: ', get_class($e), '
', 'Message: ', $e->getMessage(), '
'; + return FALSE; + } + } else { + return TRUE; } } @@ -227,7 +240,6 @@ function insertRowFile($jobid, $FileId, $FileIndex, $FileSize, $isMarked=0) /** * Return TRUE if there table exists - * Возвращает TRUE если таблица существует * * @param string $name */ @@ -236,24 +248,23 @@ function isTmpTableExists($name) try { $sql = "SELECT 1 FROM $name WHERE TRUE"; $this->_db->query($sql); - return TRUE; // таблица существует + return TRUE; // table exist } catch (Zend_Exception $e) { //echo "Caught exception: " . get_class($e) . "
"; echo "Message: " . $e->getMessage() . "\n"; // !!! debug !!! - return FALSE; // таблицы не существует + return FALSE; // table does not exist } } /** * Return TRUE if all temporary tables exists - * Возвращает TRUE если все временные таблицы существуют * */ function isAllTmpTablesExists() { if ( $this->isTmpTableExists($this->tmp_file) ) { if ( !$this->isCloneOk() ) { - // есть какие-то таблицы, но до конца не скопированные, поэтому их нужно удалить + // There are some tables, but not completely copied, so they need to be removed $this->deleteAllTmpTables(); return FALSE; } else { @@ -273,8 +284,8 @@ function updateTimestamp() /** - * Успешно ли скопированы данные из БД bacula - * Проверка поля wbTmpTable.tmpIsCloneOk + * Data from the database if successfully copied bacula + * Check field wbTmpTable.tmpIsCloneOk * */ function isCloneOk() { @@ -285,14 +296,14 @@ function isCloneOk() { //$sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! $isCloneOk = $this->_db->fetchOne($select); if ( $isCloneOk < $this->num_tmp_tables ) - return FALSE; // копирование неудачно + return FALSE; //failed else - return TRUE; //копирование успешно + return TRUE; //successfully } /** - * Установка признака успешного клонирования таблиц bacula + * Setting the hash of a successful cloning bacula tables * */ function setCloneOk() @@ -303,15 +314,15 @@ function setCloneOk() /** - * Создание временной таблицы File + * Create a temporary table * * @return TRUE if all ok */ function createTmpTable() { - // удаляем старые таблицы с такими же именами + // delete the old table with the same name $this->dropTmpTable($this->tmp_file); - // сначала создаем записи о новых таблицах !!! порядок не менять + // first create a new record of the tables !!! order not to change switch ($this->db_adapter) { case 'PDO_SQLITE': $this->_db->query("INSERT INTO " . $this->_db->quoteIdentifier($this->_name) . @@ -324,12 +335,12 @@ function createTmpTable() $this->_db->quote($this->jobidhash) . ', ' . ' NOW() )' ); break; } - // создаем таблицы !!! порядок не менять // see also cats/make_mysql_tables.in + // Create a table !!! order not to change // see also cats/make_mysql_tables.in try { /* * File */ - // добавлены дополнительные поля : isMarked, FileSize + // added additional fields : isMarked, FileSize switch ($this->db_adapter) { case 'PDO_MYSQL': $res_file = $this->_db->query(" @@ -339,7 +350,8 @@ function createTmpTable() FileIndex INTEGER UNSIGNED DEFAULT 0, isMarked INTEGER UNSIGNED DEFAULT 0, FileSize BIGINT UNSIGNED DEFAULT 0, - PRIMARY KEY(FileId) + PRIMARY KEY(FileId), + KEY idx_fileindex (FileIndex) )"); break; case 'PDO_PGSQL': @@ -369,7 +381,7 @@ function createTmpTable() } catch (Zend_Exception $e) { echo '


', __METHOD__, '
Caught exception: ', get_class($e), '
Message: ', $e->getMessage(), '
'; - // удаляем таблицы + // delete table $this->dropTmpTable($this->tmp_file); return FALSE; // error } @@ -377,8 +389,7 @@ function createTmpTable() /** - * Drop all tmp tables - * Удалить ВСЕ временные таблицы + * Delete all tmp tables * */ function deleteAllTmpTables() @@ -388,27 +399,27 @@ function deleteAllTmpTables() /** - * Удалить временную таблицу + * Drop all tmp tables * */ function dropTmpTable($name) { - // сначала удаляем саму временную таблицу + // first remove itself a temporary table $this->_db->query("DROP TABLE IF EXISTS " . $this->_db->quoteIdentifier($name)); - // удаляем записи о временной таблице + // remove the temporary table entry $where = $this->getAdapter()->quoteInto('tmpName = ?', $name); $this->delete($where); } /** - * Удалить все старые временные таблицы, если timestamp старше TTL + * Remove all the old temporary table if timestamp older TTL * */ function dropOldTmpTables() { // drop old temp tables - // получаем список временных таблиц, подлежащих уничтожению + // get a list of temporary tables to be destroyed $select = new Zend_Db_Select($this->_db); $select = $this->_db->select(); $select->from($this->_name, array('tmpName', 'tmpCreate')); @@ -436,7 +447,7 @@ function dropOldTmpTables() /** - * @return TRUE if the tables are outdated (если таблицы устарели) + * @return TRUE if the tables are outdated (If the tables are outdated) * */ function isOldTmpTables() @@ -464,12 +475,12 @@ function isOldTmpTables() /** - * Возвращает общее кол-во файлов и их суммарный размер для восстановления + * Returns the total number of files and their total size for recovery * */ public function getTotalSummaryMark() { - // подсчет кол-ва файлов и каталогов + // counting of number of files and directories $select = new Zend_Db_Select($this->_db); $select->from($this->tmp_file, array('total_files' => new Zend_Db_Expr(" COUNT(FileId)") )); $select->where("isMarked = 1"); @@ -480,7 +491,7 @@ public function getTotalSummaryMark() $select->reset(); unset($select); - // расчет суммарного размера + // calculation of the total size $select = new Zend_Db_Select($this->_db); $select->from($this->tmp_file, array('total_size' => new Zend_Db_Expr(" SUM(FileSize)") )); $select->where("isMarked = 1"); @@ -494,7 +505,7 @@ public function getTotalSummaryMark() /* - * Возвращает имя файла, куда будут выгружены записи для восстановления + * Returns the name of the file where the recording will be uploaded to restore */ public function getFilenameToExportMarkFiles() { return "webacula_restore_" . $this->jobidhash . ".tmp"; @@ -513,15 +524,15 @@ function cloneBaculaToTmp($jobid) if ( !$this->createTmpTable() ) return FALSE; // view exception from WbTmpTable.php->createTmpTables() $decode = new MyClass_HomebrewBase64; - // clone File + // clone File (Don't get files that FileIndex = 0 that are deleted) jobs - accurate = yes $stmt = $bacula->query( "SELECT FileId, FileIndex, LStat FROM File - WHERE JobId = $jobid"); + WHERE JobId = $jobid and FileIndex <> 0"); + $bacula->beginTransaction(); while ($line = $stmt->fetch()) { // file size writing in a separate filed to then it was easier to calculate the total - // размер файла пишем в отдельное поле, чтобы потом легче было подсчитать общий объем // LStat example: MI OfON IGk B Bk Bl A e BAA I BGkZWg BGkZWg BGkZWg A A E list($st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev, $st_size, $st_blksize, $st_blocks, $st_atime, $st_mtime, $st_ctime) = preg_split("/[\s]+/", $line['lstat']); @@ -530,7 +541,9 @@ function cloneBaculaToTmp($jobid) return FALSE; // show exception from WbTmpTable.php->insertRowFile() } // end transaction - // после успешного клонирования устанавливаем признак + $this->insertRowFile(null, null, null, null, null, true); + $bacula->commit(); + // after the successful cloning feature set $this->setCloneOk(); return TRUE; } @@ -550,39 +563,41 @@ function cloneRecentBaculaToTmp($sjobids) // dird/ua_restore.c :: build_directory_tree $sql = "SELECT File.JobId, File.FileId, File.FileIndex, File.LStat FROM ( - SELECT max(FileId) as FileId, PathId, FilenameId + SELECT max(FileId) as FileId, PathId FROM ( - SELECT FileId, PathId, FilenameId + SELECT FileId, PathId FROM File WHERE JobId IN ( $sjobids ) ORDER BY JobId DESC ) AS F - GROUP BY PathId, FilenameId ) + GROUP BY PathId, FileId ) AS Temp - JOIN Filename ON (Filename.FilenameId = Temp.FilenameId) JOIN Path ON (Path.PathId = Temp.PathId) JOIN File ON (File.FileId = Temp.FileId) WHERE File.FileIndex > 0 ORDER BY JobId, FileIndex ASC"; + // $sql = $select->__toString(); echo "
$sql
"; exit; // for !!!debug!!! $stmt = $bacula->query($sql); + $bacula->beginTransaction(); while ($line = $stmt->fetch()) { // file size writing in a separate filed to then it was easier to calculate the total size - // размер файла пишем в отдельное поле, чтобы потом легче было подсчитать общий объем // LStat example: MI OfON IGk B Bk Bl A e BAA I BGkZWg BGkZWg BGkZWg A A E list($st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev, $st_size, $st_blksize, $st_blocks, $st_atime, $st_mtime, $st_ctime) = preg_split("/[\s]+/", $line['lstat']); $file_size = $decode->homebrewBase64($st_size); $this->insertRowFile($line['jobid'], $line['fileid'], $line['fileindex'], $file_size); } - // end transaction // после успешного клонирования устанавливаем признак + $this->insertRowFile(null, null, null, null, null, true); + // end transaction // After successful cloning, we set the sign + $bacula->commit(); $this->setCloneOk(); return TRUE; } - /** - * Для показа plain-списка файлов перед запуском задания на восстановление + /** + * To display the plain-file list before starting the restoration job * */ function getListToRestore($offset) @@ -590,29 +605,25 @@ function getListToRestore($offset) switch ($this->db_adapter) { case 'PDO_SQLITE': // bug http://framework.zend.com/issues/browse/ZF-884 - $sql = 'SELECT f.FileId as fileid, f.LStat as lstat, f.MD5 as md5, p.Path as path, n.Name as name + $sql = 'SELECT f.FileId as fileid, f.LStat as lstat, f.MD5 as md5, p.Path as path, f.Filename as name FROM ' . $this->_db->quoteIdentifier($this->getTableNameFile()) . ' AS t LEFT JOIN File AS f ON f.FileId=t.FileId LEFT JOIN Path AS p ON f.PathId=p.PathId - LEFT JOIN Filename AS n - ON f.FilenameId=n.FilenameId WHERE (t.isMarked = 1) - ORDER BY p.Path ASC, n.Name ASC + ORDER BY p.Path ASC, f.Filename ASC LIMIT '. self::ROW_LIMIT_FILES .' OFFSET '. $offset; break; default: // mysql, postgresql - $sql = 'SELECT f.FileId, f.LStat, f.MD5, p.Path, n.Name + $sql = 'SELECT f.FileId, f.LStat, f.MD5, p.Path, f.Filename as name FROM ' . $this->_db->quoteIdentifier($this->getTableNameFile()) . ' AS t LEFT JOIN File AS f ON f.FileId=t.FileId LEFT JOIN Path AS p ON f.PathId=p.PathId - LEFT JOIN Filename AS n - ON f.FilenameId=n.FilenameId WHERE (t.isMarked = 1) - ORDER BY p.Path ASC, n.Name ASC + ORDER BY p.Path ASC, f.Filename ASC LIMIT '. self::ROW_LIMIT_FILES .' OFFSET '. $offset; break; } @@ -622,7 +633,7 @@ function getListToRestore($offset) public function getCountFile() { - // подсчет кол-ва файлов + // Count number of files $query = "SELECT count(*) as num FROM " . $this->_db->quoteIdentifier($this->tmp_file); $stmt = $this->_db->query($query); $countf = $stmt->fetchAll(); @@ -631,7 +642,6 @@ public function getCountFile() { /* * For Bacula should leave only files that are to be restored - * Для Bacula надо оставить только записи о файлах, которые будут восстанавливаться */ public function prepareTmpTableForRestore() { $sql = 'DELETE FROM ' . $this->_db->quoteIdentifier($this->getTableNameFile()) . ' '. diff --git a/application/models/WbWhereACL.php b/application/models/WbWhereACL.php old mode 100644 new mode 100755 diff --git a/application/models/Wbjobdesc.php b/application/models/Wbjobdesc.php old mode 100644 new mode 100755 diff --git a/application/models/Wblogbook.php b/application/models/Wblogbook.php old mode 100644 new mode 100755 index 5c08c040f..d85222cd8 --- a/application/models/Wblogbook.php +++ b/application/models/Wblogbook.php @@ -167,7 +167,7 @@ function findLogBookByText ($id_text, $sort_order) $select->distinct(); $select->from(array('l' => 'webacula_logbook'), array('logId' , 'logDateCreate' , 'logDateLast' , 'logTxt' , 'logTypeId' , 'logIsDel')); $select->joinLeft(array('t' => 'webacula_logtype'), 'l.logTypeId = t.typeId', array('typeId' , 'typeDesc')); - $select->where(' MATCH(logTxt) AGAINST ("' . $id_text . '" WITH QUERY EXPANSION)'); + $select->where(' logTxt LIKE "%' . $id_text . '%"'); break; case 'PDO_PGSQL': $select->distinct(); diff --git a/application/models/Wblogtype.php b/application/models/Wblogtype.php old mode 100644 new mode 100755 diff --git a/application/models/Wbphpsession.php b/application/models/Wbphpsession.php old mode 100644 new mode 100755 diff --git a/application/models/Wbresources.php b/application/models/Wbresources.php old mode 100644 new mode 100755 diff --git a/application/models/Wbroles.php b/application/models/Wbroles.php old mode 100644 new mode 100755 diff --git a/application/models/Wbusers.php b/application/models/Wbusers.php old mode 100644 new mode 100755 diff --git a/application/views/helpers/ConvBytes.php b/application/views/helpers/ConvBytes.php old mode 100644 new mode 100755 index 1c977a87e..50cb100ce --- a/application/views/helpers/ConvBytes.php +++ b/application/views/helpers/ConvBytes.php @@ -11,13 +11,16 @@ class Zend_View_Helper_ConvBytes { public function convBytes($bytes) { - switch (TRUE) { - case ($bytes == 0) : return 0; - case ($bytes < pow(2,10)): return $bytes.' bytes'; - case ($bytes >= pow(2,10) && $bytes < pow(2,20)): return round($bytes / pow(2,10), 0).' KB'; - case ($bytes >= pow(2,20) && $bytes < pow(2,30)): return round($bytes / pow(2,20), 1).' MB'; - case ($bytes >= pow(2,30) && $bytes < pow(2,40)): return round($bytes / pow(2,30), 1).' GB'; - case ($bytes > pow(2,40)): return round($bytes / pow(2,40), 2).' TB'; - } + $i = 0; + $units = array('bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + while( true ){ + if ( $bytes < 1024 ){ + return number_format( $bytes , 2 )." ".$units[$i]; + } + $bytes /= 1024; + $i++; + } + } + } diff --git a/application/views/helpers/ConvSecondsToDays.php b/application/views/helpers/ConvSecondsToDays.php old mode 100644 new mode 100755 diff --git a/application/views/helpers/ConvSecondsToDaysHours.php b/application/views/helpers/ConvSecondsToDaysHours.php old mode 100644 new mode 100755 diff --git a/application/views/helpers/DecodeJobLevel.php b/application/views/helpers/DecodeJobLevel.php new file mode 100755 index 000000000..5317a71e4 --- /dev/null +++ b/application/views/helpers/DecodeJobLevel.php @@ -0,0 +1,28 @@ + + * @license http://www.gnu.org/licenses/gpl-3.0.html GNU Public License + */ +class Zend_View_Helper_DecodeJobLevel { + + public function decodeJobLevel($short) + { + switch ($short) { + case 'F': return 'Full'; + case 'I': return 'Incremental'; + case 'D': return 'Differential'; + case 'S': return 'Since'; + case 'C': return 'VerifyFromCatalog'; + case 'V': return 'InitCatalog'; + case 'O': return 'VolumeToCatalog'; + case 'd': return 'DiskToCatalog'; + case 'A': return 'Data'; + case 'B': return 'Base'; + default: return 'Unknown'; + } + } +} diff --git a/application/views/helpers/DecodeJobType.php b/application/views/helpers/DecodeJobType.php old mode 100644 new mode 100755 index 61eb128d6..98d23916e --- a/application/views/helpers/DecodeJobType.php +++ b/application/views/helpers/DecodeJobType.php @@ -15,9 +15,11 @@ public function decodeJobType($short) case 'B': return 'Backup'; case 'V': return 'Verify'; case 'R': return 'Restore'; - case 'C': return 'Console program'; + case 'C': return 'Copy'; + case 'c': return 'Copy Job'; case 'D': return 'Admin'; case 'A': return 'Archive'; + case 'g': return 'Migration'; default: return 'Unknown'; } } diff --git a/application/views/helpers/Int2Char.php b/application/views/helpers/Int2Char.php old mode 100644 new mode 100755 index 841320b7b..ee367f203 --- a/application/views/helpers/Int2Char.php +++ b/application/views/helpers/Int2Char.php @@ -11,8 +11,8 @@ class Zend_View_Helper_Int2Char { public function int2Char($val) { - if ( $val > 0 ) return '+'; + if ( $val > 0 ) return 'yes'; else - return '-'; + return 'no'; } -} \ No newline at end of file +} diff --git a/application/views/helpers/MainmenuFloat.php b/application/views/helpers/MainmenuFloat.php old mode 100644 new mode 100755 diff --git a/application/views/helpers/PermissionOctal2String.php b/application/views/helpers/PermissionOctal2String.php old mode 100644 new mode 100755 diff --git a/application/views/scripts/admin/form-bacula-acl.phtml b/application/views/scripts/admin/form-bacula-acl.phtml old mode 100644 new mode 100755 index f45db3946..1107d77d3 --- a/application/views/scripts/admin/form-bacula-acl.phtml +++ b/application/views/scripts/admin/form-bacula-acl.phtml @@ -1,10 +1,17 @@ -
-

escape($this->title); ?>

-
+
+
+
+
+ escape($this->title); ?> +
+
+

- -

- render('decorators/formBaculaACL.phtml'); ?> -
- \ No newline at end of file + render('decorators/formBaculaACL.phtml'); ?> + +

+
+
+
+
diff --git a/application/views/scripts/admin/form-role.phtml b/application/views/scripts/admin/form-role.phtml old mode 100644 new mode 100755 index 084bff908..0900d83eb --- a/application/views/scripts/admin/form-role.phtml +++ b/application/views/scripts/admin/form-role.phtml @@ -1,10 +1,16 @@ -
-

escape($this->title); ?>

-
- - -
- render('decorators/formRole.phtml'); ?> -
+
+
+
+
+ escape($this->title); ?> +
+
+

+ render('decorators/formRole.phtml'); ?> +

+
+
+
+
\ No newline at end of file diff --git a/application/views/scripts/admin/form-user.phtml b/application/views/scripts/admin/form-user.phtml old mode 100644 new mode 100755 index 03a930bd5..2d0d14b11 --- a/application/views/scripts/admin/form-user.phtml +++ b/application/views/scripts/admin/form-user.phtml @@ -1,10 +1,16 @@ -
-

escape($this->title); ?>

-
- - -
- render('decorators/formUser.phtml'); ?> -
+
+
+
+
+ escape($this->title); ?> +
+
+

+ render('decorators/formUser.phtml'); ?> +

+
+
+
+
\ No newline at end of file diff --git a/application/views/scripts/admin/index.phtml b/application/views/scripts/admin/index.phtml old mode 100644 new mode 100755 diff --git a/application/views/scripts/admin/role-index.phtml b/application/views/scripts/admin/role-index.phtml old mode 100644 new mode 100755 index d7bb21dc6..e33aee1a2 --- a/application/views/scripts/admin/role-index.phtml +++ b/application/views/scripts/admin/role-index.phtml @@ -1,95 +1,146 @@ -exception) ) : ?> - -
-
-

- exception; ?>

-
-
- - -result): ?> - -
-

escape($this->title); ?>

- -
- -
-
+ - -
-
-

- translate->_("No Roles found."); ?>

-
+ +
" style="display:none"> +

translate->_("Are you sure you want to delete the role?"); ?>

- + - \ No newline at end of file +
+
+
+
+ escape($this->title); ?> +
+
+

+ + exception) ) : ?> + + +

+

+ + exception;; ?> +

+
+ + + + + result): ?> + +
+ + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + +
Idtranslate->_('Name'); ?> translate->_('Description'); ?> translate->_('Inherited role'); ?> translate->_('Order'); ?>  
escape($line['id']);?>escape($line['name']);?> + escape($line['description']); + if ( strlen($description) <= 70 ) + echo $description; + else + echo substr($description, 0, 70), ' ', + '', + '[...]', + ''; + ?> + + escape($line['inherit_name']); + if ($inherit_name) + echo '', + $inherit_name, + ''; + ?> + escape($line['order_role']);?> + + + <?php echo $this->translate->_(" title="translate->_("More info") ?>" border="0" hspace="2" align="absmiddle" /> + + + <?php echo $this->translate->_(" title="translate->_("Modify record") ?>" border="0" hspace="2" align="absmiddle" /> + + "> + <?php echo $this->translate->_(" title="translate->_("Delete record") ?>" border="0" hspace="2" align="absmiddle" /> + + +
+
+ +
+
+ +
+
+ + + + + +
+

+ + translate->_("No Roles found."); ?> +

+
+ + + + +

+
+
+
+
+ \ No newline at end of file diff --git a/application/views/scripts/admin/role-main-form.phtml b/application/views/scripts/admin/role-main-form.phtml old mode 100644 new mode 100755 index cdb8ca7e3..6ff05f394 --- a/application/views/scripts/admin/role-main-form.phtml +++ b/application/views/scripts/admin/role-main-form.phtml @@ -1,463 +1,709 @@ + - -
-

- escape($this->title);?> -

-
- -
+ +
" style="display:none"> +

translate->_("Are you sure you want to delete the record?"); ?>

+ -exception) ) : ?> - -
-
-

- exception; ?>

-
+
+
+
+
+ escape($this->title); ?>
- - - -
-
+
+
+ diff --git a/application/views/scripts/admin/role-more-info.phtml b/application/views/scripts/admin/role-more-info.phtml old mode 100644 new mode 100755 index d68dfcf97..04066deac --- a/application/views/scripts/admin/role-more-info.phtml +++ b/application/views/scripts/admin/role-more-info.phtml @@ -1,75 +1,74 @@ - - - -
-

escape($this->title); ?>

-
- -
-

translate->_("More info"); ?>

-
- -

- id : escape($this->role_id); ?> -

- -

- translate->_('Inherited roles'); ?> : -inherited_roles) : ?> - inherited_roles as $role_id => $role_name) { - $str .= ''; - $str .= $this->escape($role_name) . ', '; - } - echo substr_replace($str, '', -2); // удалить оставшийся разделитель - ?> - - translate->_('none'); ?> - -

- -
-
-

translate->_('Who use this role'); ?>

-
- -

- translate->_('Roles'); ?> : -roles->count() > 0 ) { - $str = ''; - foreach( $this->roles as $v) { - $str .= $v->name. ', '; - } - echo substr_replace($str, '', -2); // удалить оставшийся разделитель - } else - echo $this->translate->_('none'); -?> -

- -

- translate->_('Users'); ?> : -users->count() > 0 ) { - $str = ''; - foreach( $this->users as $v) { - $str .= $v->login. ', '; - } - echo substr_replace($str, '', -2); // удалить оставшийся разделитель - } else - echo $this->translate->_('none'); -?> -

- -
-
\ No newline at end of file +
+
+
+
+ escape($this->title); ?> +
+
+

+

translate->_("More info"); ?>

+ +

+ Id: + escape($this->role_id); ?> +

+ +

+ translate->_('Inherited roles');?>:   + inherited_roles) : ?> + inherited_roles as $role_id => $role_name) { + $str .= ''; + $str .= $this->escape($role_name) . ', '; + } + echo substr_replace($str, '', -2); // Remove the remaining separator + ?> + + translate->_('None'); ?> + +

+
+

translate->_('Who use this role'); ?>

+ +

+ translate->_('Roles'); ?> : + roles->count() > 0 ) { + $str = ''; + foreach( $this->roles as $v) { + $str .= ''; + $str .= $this->escape($v->name) . ', '; + + } + echo substr_replace($str, '', -2); // Remove the remaining separator + } else + echo $this->translate->_('None'); + ?> +

+ +

+ translate->_('Users'); ?> : + users->count() > 0 ) { + $str = ''; + foreach( $this->users as $v) { + $str .= $v->login. ', '; + } + echo substr_replace($str, '', -2); // Remove the remaining separator + } else + echo $this->translate->_('None'); + ?> +

+
+ +
+

+
+
+
+
+ \ No newline at end of file diff --git a/application/views/scripts/admin/user-index.phtml b/application/views/scripts/admin/user-index.phtml old mode 100644 new mode 100755 index afe3165d8..29b8ede17 --- a/application/views/scripts/admin/user-index.phtml +++ b/application/views/scripts/admin/user-index.phtml @@ -1,89 +1,157 @@ - -exception) ) : ?> - -
-
-

- exception; ?>

-
-
- + -
- -
+ +
" style="display:none"> +

translate->_("Are you sure you want to delete the user?"); ?>

+ - - - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - - - - - - -
id translate->_('Login'); ?> translate->_('Name'); ?> translate->_('Email'); ?> translate->_('Role'); ?> translate->_('Created'); ?> translate->_('Last login'); ?> translate->_('Last IP'); ?>  
> -  escape($line['id']);?>  - > -  escape($line['login']);?>  - > -  escape($line['name']);?>  - > -  escape($line['email']);?>  - >  - - escape($line['role_name']);?> -   - > -  escape($line['create_login']);?>  - > -  escape($line['last_login']);?>  - > -  escape($line['last_ip']);?>  - - - - <?php echo $this->translate->_(" title="translate->_("Modify record") ?>" border="0" hspace="2" align="absmiddle" /> - - "> - <?php echo $this->translate->_(" title="translate->_("Delete record") ?>" border="0" hspace="2" align="absmiddle" /> - - -
- -
-
-

- translate->_("No Users found."); ?>

-
-
- - \ No newline at end of file +
+
+
+
+ escape($this->title); ?> +
+
+

+ + exception) ) : ?> + +

+

+ + exception; ?> +

+
+ + + + result): ?> + +
+ + + + + + + + + + + + + + + + + result as $line) : + + if ($line['active'] == 0){ + $tag_open = ""; + $tag_close = ""; + } else { + $tag_open = ""; + $tag_close = ""; + } + ?> + + + + + + + + + + + + + +
Id translate->_('Login'); ?> translate->_('Name'); ?> translate->_('Email'); ?> translate->_('Role'); ?> translate->_('Created'); ?> translate->_('Last login'); ?> translate->_('Last IP'); ?>  
+ escape($line['id']) . $tag_close; ?> + + escape($line['login']) . $tag_close; ?> + + escape($line['name']) . $tag_close; ?> + + escape($line['email']) . $tag_close; ?> + + + escape($line['role_name']) . $tag_close;?> + + + escape(date($this->datetime_format,strtotime($line['create_login']))) . $tag_close;?>  + + escape(date($this->datetime_format,strtotime($line['last_login']))) . $tag_close;?>  + + escape($line['last_ip']) . $tag_close; ?> + + + <?php echo $this->translate->_(" title="translate->_("Modify record"); ?>" /> + + + "> + <?php echo $this->translate->_(" title="translate->_("Delete record"); ?>" /> + + +
+
+ +
+
+ +
+
+ + + + +
+

+ + translate->_("No Users found."); ?> +

+
+ + + + + +

+
+
+
+
+ \ No newline at end of file diff --git a/application/views/scripts/auth/forgot-password.phtml b/application/views/scripts/auth/forgot-password.phtml old mode 100644 new mode 100755 index a202794a8..4bbc59ae3 --- a/application/views/scripts/auth/forgot-password.phtml +++ b/application/views/scripts/auth/forgot-password.phtml @@ -1,7 +1,41 @@ -

title; ?>

+
+
+
+
+

caption; ?>

+
+ + +
+ + form->captcha; ?> + form->csrf; ?> + + +
+ form->login; ?> +
+
+ form->email; ?> +
+
+ + + form->submit; ?> +
+
+
+
+ + + + + + + +
+
+
\ No newline at end of file diff --git a/application/views/scripts/auth/login.phtml b/application/views/scripts/auth/login.phtml old mode 100644 new mode 100755 index 3a5a37d19..b85d2f9af --- a/application/views/scripts/auth/login.phtml +++ b/application/views/scripts/auth/login.phtml @@ -1,59 +1,55 @@ + -

caption; ?>

- +
+
+
+
msg; ?>  
+
- - - - - - - - - - - - - - - - - - - - - - -
- - - translate->_('Username'); ?> - - form->login; ?> -
- - - translate->_('Password'); ?> - - form->pwd; ?> - - translate->_('Forgot?'); ?> -
- - - translate->_('Remember me'); ?>form->rememberme; ?> -
  form->captcha; ?> form->csrf; ?> -
- form->submit; ?> -
+
+

caption; ?>

+
+ + +
+ form->login; ?> +
+
+ form->pwd; ?> +
+
+ +
+
+ + formSubmit('ok1', $this->translate->_('Log In'), array('class' => 'btn btn-default', 'style' => 'padding:10px; width: 100px;') ); ?> +
+
+ + + + +
+
+
\ No newline at end of file diff --git a/application/views/scripts/bconsole/cmd.phtml b/application/views/scripts/bconsole/cmd.phtml old mode 100644 new mode 100755 index 5ca017d17..150cfff4f --- a/application/views/scripts/bconsole/cmd.phtml +++ b/application/views/scripts/bconsole/cmd.phtml @@ -1,21 +1,22 @@ - -
OK : bcommand; ?>

-
-msg;
-    if ( $this->command_output )
-        foreach ($this->command_output as $line) {
-            echo '
', $line; - } + msg; + if ( !$this->return_var ){ + //echo "
";
+      foreach ($this->command_output as $line){
+           echo '
', $line; + } + //echo "
"; + echo '
'; + } else { + echo $this->bcommand,": ", "is a invalid command!"; + } + ?> -
-
-
return : return_var ) - echo $this->return_var; - else - echo 'null'; + if ($this->return_var ) + echo $this->return_var; + else + echo 'null'; ?> -

\ No newline at end of file + \ No newline at end of file diff --git a/application/views/scripts/bconsole/wterminal.phtml b/application/views/scripts/bconsole/wterminal.phtml old mode 100644 new mode 100755 index cf40723d2..47a52536e --- a/application/views/scripts/bconsole/wterminal.phtml +++ b/application/views/scripts/bconsole/wterminal.phtml @@ -1,81 +1,63 @@ - - - - - - + + + + - -Webacula bconsole - - - - -
-
+
+
+
+
+ escape($this->title); ?> +
+
+
+

+            
+
+
+
+
+ \ No newline at end of file diff --git a/application/views/scripts/client/all.phtml b/application/views/scripts/client/all.phtml old mode 100644 new mode 100755 index 2164ea36a..6053cf114 --- a/application/views/scripts/client/all.phtml +++ b/application/views/scripts/client/all.phtml @@ -1,43 +1,58 @@ +
+
+
+
+ escape($this->title); ?> +
+
+

+ clients): ?> +

+ + + + + + + + + + + + clients as $client) : ?> + + + + + + + + + +
translate->_("Name"); ?>translate->_("Client Version"); ?> translate->_("Auto Prune"); ?> translate->_("Files Retention
days"); ?>
translate->_("Jobs Retention
days"); ?>
+ escape($client['clientid']), + "/name/", $this->escape($client['name']); ?>" title="translate->_("Client Detail");?>"> + escape($client['name']);?> + + escape($client['uname']);?>translate->_($this->int2Char($this->escape($client['autoprune'])));?>convSecondsToDays($this->escape($client['fileretention'])).' '.$this->translate->_('days');?>convSecondsToDays($this->escape($client['jobretention'])).' '.$this->translate->_('days');?>
+
+ + + + +
+

+ + translate->_("No Clients found."); ?> +

+
+ -

escape($this->title); ?>

- -clients): ?> - - - - - - - - - - - -clients as $client) : ?> - - - - - - - - - - -
translate->_("Name"); ?> translate->_("Client Version"); ?> translate->_("Auto Prune"); ?> translate->_("Files Retention
days"); ?>
translate->_("Jobs Retention
days"); ?>
- escape($client['clientid']), - "/name/", $this->escape($client['name']); ?>" title="translate->_("Client Detail");?>"> - escape($client['name']);?> - - escape($client['uname']);?>int2Char($this->escape($client['autoprune']));?>convSecondsToDays($this->escape($client['fileretention']));?>convSecondsToDays($this->escape($client['jobretention']));?>
- - -
-
-

- translate->_("No Clients found.");?>

-
-
-
- \ No newline at end of file + +

+
+
+
+
+ \ No newline at end of file diff --git a/application/views/scripts/client/status-client-id.phtml b/application/views/scripts/client/status-client-id.phtml old mode 100644 new mode 100755 index 2d03b0295..afce8201f --- a/application/views/scripts/client/status-client-id.phtml +++ b/application/views/scripts/client/status-client-id.phtml @@ -1,55 +1,59 @@ - -

escape($this->title); ?>

- -result_error ): ?> -
-
-

- - result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
', $line, '
'; - } - } - ?> -

-
-
-
- - - - - -
-translate->_("Director output:"); ?> -command_output ) - { - echo '
';
-        foreach ($this->command_output as $line) {
-            if ( preg_match('/(ERR|not found|invalid)/i', $line) )   {
-                echo '
' . $line . '

'; - } else { - echo $line . '
'; - } - } - echo '
'; - } -?> -
- +
+
+
+
+ escape($this->title); ?> +
+
+

+ result_error ): ?> + +

+

+ + escape($this->title), '
'; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
', $line, '
'; + } + } + ?> +

+
+ + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
';
+                     foreach ($this->command_output as $line) {
+                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
+                           echo '
', $line, '

'; + } else { + echo $line, '
'; + } + } + echo '
'; + } ?> + + +

+
+
+
+
+ \ No newline at end of file diff --git a/application/views/scripts/decorators/formBaculaACL.phtml b/application/views/scripts/decorators/formBaculaACL.phtml old mode 100644 new mode 100755 index ff9818c1c..5b7a18faf --- a/application/views/scripts/decorators/formBaculaACL.phtml +++ b/application/views/scripts/decorators/formBaculaACL.phtml @@ -7,7 +7,20 @@ form->order; ?> form->name; ?> form->id; ?> - form->submit;?> - form->reset; ?> +
+ + + + + + +
+ form->submit_button; ?> - \ No newline at end of file +    +
+ form->cancel_button; ?> +
+
+ \ No newline at end of file diff --git a/application/views/scripts/decorators/formBaculaCommandACL.phtml b/application/views/scripts/decorators/formBaculaCommandACL.phtml old mode 100644 new mode 100755 index e5bfdea63..7355e99f7 --- a/application/views/scripts/decorators/formBaculaCommandACL.phtml +++ b/application/views/scripts/decorators/formBaculaCommandACL.phtml @@ -5,7 +5,7 @@ form->role_name; ?> form->acl; ?> form->bacula_commands; ?> - form->submit; ?> - form->reset; ?> + form->submit_button; ?> + form->cancel_button; ?> \ No newline at end of file diff --git a/application/views/scripts/decorators/formBaculaFill.phtml b/application/views/scripts/decorators/formBaculaFill.phtml old mode 100644 new mode 100755 index 4968bb361..e6ec2fe8f --- a/application/views/scripts/decorators/formBaculaFill.phtml +++ b/application/views/scripts/decorators/formBaculaFill.phtml @@ -4,6 +4,20 @@ form->role_id; ?> form->role_name; ?> form->bacula_fill; ?> - form->submit; ?> +

+ + + + + + +
+ form->submit_button; ?> - \ No newline at end of file +    + +
+ form->cancel_button; ?> +
+
\ No newline at end of file diff --git a/application/views/scripts/decorators/formJobrun.phtml b/application/views/scripts/decorators/formJobrun.phtml old mode 100644 new mode 100755 index a10cbce13..62d598069 --- a/application/views/scripts/decorators/formJobrun.phtml +++ b/application/views/scripts/decorators/formJobrun.phtml @@ -3,48 +3,113 @@ method="escape($this->form->getMethod()); ?>" name="form1" id="form1"> -form->from_form; ?> -translate = Zend_Registry::get('translate'); ?> - - - -
- - - form->jobname;?> -
- - - form->client;?> -
- - - form->fileset;?> -
- - - form->storage;?> -
- - - form->level;?> -
- - - form->spool;?> -
- - - translate->_("Now"); ?> - form->checkbox_now;?> -
- form->date_when;?> - form->time_when;?> -
-
translate->_("YYYY-MM-DD HH:MM:SS"); ?>
-
-
- form->submit; ?> -
-
+ form->from_form; ?> + translate = Zend_Registry::get('translate'); ?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + form->jobname;?> +
+ + + form->client;?> +
+ + + form->fileset;?> +
+ + + form->storage;?> +
+ + + form->level;?> +
+ + + form->pool;?> +
+ + + form->spool;?> +
+ + + form->checkbox_now;?> + translate->_("Now"); ?> +
+
+ + + form->date_when;?> + form->time_when;?> +
+ translate->_("YYYY-MM-DD HH:MM:SS"); ?> +
+
+ + +
+ + + + + +
+ form->submit_button; ?> + +     +
+ form->cancel_button; ?> +
+
+ +
+
diff --git a/application/views/scripts/decorators/formRestoreoptions.phtml b/application/views/scripts/decorators/formRestoreoptions.phtml old mode 100644 new mode 100755 index 2507b70a7..ce7a054b2 --- a/application/views/scripts/decorators/formRestoreoptions.phtml +++ b/application/views/scripts/decorators/formRestoreoptions.phtml @@ -1,28 +1,24 @@ - translate = Zend_Registry::get('translate'); ?> - - + @@ -31,10 +27,8 @@ $(function() { $(document).ready(function() { $('#ok1').click(function() { $.blockUI({ - message: '

translate->_("Please wait"); ?>...

', - css: { backgroundColor: '#f3fcf2' }, - centerX: true, - centerY: true + message: '

translate->_("Please wait"); ?>...

', + css: {border: 'none', padding: '15px', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', opacity: .5, color: '#fff' } }); }); }); @@ -44,138 +38,180 @@ $(document).ready(function() { // select $(function(){ $('select').each(function() { - var t = $(this).selectmenu({maxHeight: 300}); - eval(t); + $(this).addClass("select-overflow").addClass("form-control").width('18em'); }); }); - -
-
    -
  • translate->_("Standard options"); ?>
  • -
  • translate->_("Advanced options"); ?>
  • +
    + + +
    + +
    + + +
    +
    +
    +
    + +
    +
    + + form->from_form; + echo $this->form->type_restore; // TODO not used ? + echo $this->form->jobid; + echo $this->form->fileid; + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + form->restore_job_select ) : ?> + + + + + + + + + +
    + + + form->client_name;?> +
    + + + form->client_name_to;?> +
    + + + form->pool;?> +
    + + + form->fileset;?> +
    + + + form->storage;?> +
    + + + form->restore_job_select;?> +
    +
    + + + +
    +
    +
    +
    + + + +
    +
    +
    + +
    + +
    + +

    + + + translate->_("Help"); ?> + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    form->where;?> translate->_("Restore files in where directory."); ?>
    form->strip_prefix;?> translate->_("Remove a part of the filename when restoring."); ?>
    form->add_prefix; ?> translate->_("Add a prefix to all files when restoring (like where) (can't be used with where)."); ?>
    form->add_suffix; ?> translate->_("Add a suffix to all your files."); ?>
    form->regexwhere; ?> translate->_("Do complex filename manipulation like with sed unix command. Will overwrite other filename manipulation."); ?>
    +
    + + +
    + +
    +
    +
    + + + +
    +
    -
    - - - -form->from_form; - echo $this->form->type_restore; // TODO not used ? - echo $this->form->jobid; - echo $this->form->fileid; -?> - - - - - - - - - - - - - - - - - - - - - form->restore_job_select ) : ?> - - - - - - - - - - - -
    - - - form->client_name;?> - - - - form->pool;?> -
    - - - form->client_name_to;?> - - - - form->fileset;?> -
    - - - form->restore_job_select;?> -   - - - form->storage;?> -
    - -
    - - - - -
    - -

    - - translate->_("Help"); ?> -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    form->where;?> translate->_("Restore files in where directory."); ?>
    form->strip_prefix;?> translate->_("Remove a part of the filename when restoring."); ?>
    form->add_prefix; ?> translate->_("Add a prefix to all files when restoring (like where) (can't be used with where)."); ?>
    form->add_suffix; ?> translate->_("Add a suffix to all your files."); ?>
    form->regexwhere; ?> translate->_("Do complex filename manipulation like with sed unix command. Will overwrite other filename manipulation."); ?>
    -
    - - -
    "> +
    " style="display:none">

    Using File Relocation

    For example, many users use OS snapshot features so that file @@ -197,48 +233,50 @@ Bacula will restore the file to its original location - that is

    The format is very close to that used by sed or Perl (s/replace this/by that/) operator. A valid regexwhere expression has three fields :

      -
    1. a search expression (with optional submatch)
    2. -
    3. a replacement expression (with optional back references $1 to $9)
    4. -
    5. a set of search options (only case-insensitive 'i' at this time)
    6. +
    7. a search expression (with optional submatch)
    8. +
    9. a replacement expression (with optional back references $1 to $9)
    10. +
    11. a set of search options (only case-insensitive 'i' at this time)
    -

    Each field is delimited by a separator specified by the user as the first +

    Each field is delimited by a separator specified by the user as the first character of the expression. The separator can be one of the following: -

    +
       <separator-keyword> = / ! ; % : , ~ # = &
    -
    -

    You can use several expressions separated by a commas.

    +

    +

    You can use several expressions separated by a commas.

    Examples

    - - - - + + + + - - - - + + + + + - - - - - + + + + + - - - - + + + + + - - - - - + + + + +
    Orignal filenameNew filenameRegexWhereCommentsOrignal filenameNew filenameRegexWhereComments
    c:/system.inic:/system.old.ini/.ini$/.old.ini/$ matches end of name
    c:/system.inic:/system.old.ini/.ini$/.old.ini/$ matches end of name
    /prod/u01/pdata//rect/u01/rdata/prod/rect/,/pdata/rdata/uses two regexp
    /prod/u01/pdata//rect/u01/rdata/prod/rect/,/pdata/rdata/uses two regexp
    /prod/u01/pdata//rect/u01/rdata!/prod/!/rect/!,/pdata/rdata/use ! as separator
    /prod/u01/pdata//rect/u01/rdata!/prod/!/rect/!,/pdata/rdata/use ! as separator
    C:/WINNTd:/WINNT/c:/d:/icase insensitive pattern match
    C:/WINNTd:/WINNT/c:/d:/icase insensitive pattern match

    @@ -246,23 +284,21 @@ character of the expression. The separator can be one of the following:
    - - - - - - - +
    - form->submit_button; ?> - -     - -
    - form->cancel_button; ?> -
    -
    + + + + +
    + form->submit_button; ?> + +     +
    + form->cancel_button; ?> +
    +
    - -
    +
    + diff --git a/application/views/scripts/decorators/formRole.phtml b/application/views/scripts/decorators/formRole.phtml old mode 100644 new mode 100755 index 0a3d000c4..fad89462b --- a/application/views/scripts/decorators/formRole.phtml +++ b/application/views/scripts/decorators/formRole.phtml @@ -7,7 +7,20 @@ form->role_name; ?> form->description; ?> form->inherit_id; ?> - form->submit; ?> - form->reset; ?> +
    + + + + + + +
    + form->submit_button; ?> - \ No newline at end of file +    + +
    + form->cancel_button; ?> +
    +
    \ No newline at end of file diff --git a/application/views/scripts/decorators/formUser.phtml b/application/views/scripts/decorators/formUser.phtml old mode 100644 new mode 100755 index c3f24e5e5..b8b97cd3a --- a/application/views/scripts/decorators/formUser.phtml +++ b/application/views/scripts/decorators/formUser.phtml @@ -9,7 +9,20 @@ form->name; ?> form->email; ?> form->role_id; ?> - form->submit; ?> - form->reset; ?> +
    + + + + + + +
    + form->submit_button; ?> - \ No newline at end of file +    + +
    + form->cancel_button; ?> +
    +
    \ No newline at end of file diff --git a/application/views/scripts/decorators/formWebaculaACL.phtml b/application/views/scripts/decorators/formWebaculaACL.phtml old mode 100644 new mode 100755 index db167ef83..fc402556c --- a/application/views/scripts/decorators/formWebaculaACL.phtml +++ b/application/views/scripts/decorators/formWebaculaACL.phtml @@ -5,7 +5,20 @@ form->role_name; ?> form->acl; ?> form->webacula_resources; ?> - form->submit; ?> - form->reset; ?> +
    + + + + + + +
    + form->submit_button; ?> - \ No newline at end of file +    + +
    + form->cancel_button; ?> +
    +
    \ No newline at end of file diff --git a/application/views/scripts/director/listjobtotals.phtml b/application/views/scripts/director/listjobtotals.phtml old mode 100644 new mode 100755 index b571d734c..834b6f995 --- a/application/views/scripts/director/listjobtotals.phtml +++ b/application/views/scripts/director/listjobtotals.phtml @@ -1,54 +1,60 @@ - -result_error ): ?> -
    -
    -

    - - escape($this->title), '
    '; - switch ( $this->result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    - - - - - - -

    escape($this->title); ?>

    -translate->_("Director output:"); ?> -command_output ) - { - echo '
    ';
    -        foreach ($this->command_output as $line) {
    -            if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    -                echo '
    ', $line, '

    '; - } else { - echo $line, '
    '; - } - } - echo '
    '; - } -?> -
    - +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + result_error ): ?> + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/director/statusdir.phtml b/application/views/scripts/director/statusdir.phtml old mode 100644 new mode 100755 index 573b3dd28..b55c7ba75 --- a/application/views/scripts/director/statusdir.phtml +++ b/application/views/scripts/director/statusdir.phtml @@ -1,54 +1,61 @@ - -result_error ): ?> -
    -
    -

    - - escape($this->title), '
    '; - switch ( $this->result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    - - - - - - -
    escape($this->title); ?>
    - - translate->_("Director output:"); ?> - command_output ) - { - echo '
    ';
    -            foreach ($this->command_output as $line) {
    -                if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    -                    echo '
    ', $line, '

    '; - } else { - echo $line, '
    '; - } - } - echo '
    '; - } ?> -
    - +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + result_error ): ?> + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/error/bacula-access-denied.phtml b/application/views/scripts/error/bacula-access-denied.phtml old mode 100644 new mode 100755 index 09baefb3b..8e0d07b74 --- a/application/views/scripts/error/bacula-access-denied.phtml +++ b/application/views/scripts/error/bacula-access-denied.phtml @@ -1,8 +1,8 @@

    -

    escape($this->title); ?>

    +

    escape($this->title); ?>

    escape($this->msg); ?>

    -

    Bacula ACLs : translate->_('Access denied.'); ?>

    -

    +

    Bacula ACLs : translate->_('Access denied.'); ?>

    +

    \ No newline at end of file diff --git a/application/views/scripts/error/error.phtml b/application/views/scripts/error/error.phtml old mode 100644 new mode 100755 index 1e66d4425..be2d77ff9 --- a/application/views/scripts/error/error.phtml +++ b/application/views/scripts/error/error.phtml @@ -1,5 +1,5 @@ -

    An error occurred

    +

    An error occurred

    Message :

    err_message; ?>

    diff --git a/application/views/scripts/error/webacula-access-denied.phtml b/application/views/scripts/error/webacula-access-denied.phtml old mode 100644 new mode 100755 index 7f64756c8..a5cd6c1d6 --- a/application/views/scripts/error/webacula-access-denied.phtml +++ b/application/views/scripts/error/webacula-access-denied.phtml @@ -2,9 +2,9 @@

    -

    escape($this->title); ?>

    +

    escape($this->title); ?>

    escape($this->msg); ?>

    -

    Webacula ACLs : translate->_('Access denied.'); ?>

    -

    +

    Webacula ACLs : translate->_('Access denied.'); ?>

    +

    \ No newline at end of file diff --git a/application/views/scripts/file/list.phtml b/application/views/scripts/file/list.phtml old mode 100644 new mode 100755 index bf161ada0..89d5c74e1 --- a/application/views/scripts/file/list.phtml +++ b/application/views/scripts/file/list.phtml @@ -1,62 +1,82 @@ - -

    escape($this->titleFile); ?>

    - -paginator)): ?> -
    - - - - - - - - - - - - -paginator as $line): ?> - - -homebrewBase64($st_dev) == 0 ) { - // OS : windows - echo '', - ''; - } - else { - // OS : linux/unix - echo ''; - } -?> - - - - - - -
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , - $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , - $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', - date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', - $this->convBytes($decode->homebrewBase64($st_size)), 'escape($line['path'] . $line['name']);?>   escape($line['fileid']) ?>  
    - - -paginationControl($this->paginator, 'Sliding', 'file/list_pagination_ctrl.phtml'); ?> - - - -
    -
    -

    - translate->_("No Files found."); ?>

    -
    -
    -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->titleFile); ?> +
    +
    +

    + + paginator)): ?> + + +

    + + + + + + + + + + + paginator as $line): ?> + + homebrewBase64($st_dev) == 0 ){ + // OS : windows + echo '', + ''; + } + else { + // OS : linux/unix + echo ''; + } + ?> + + + + + + + translate->_('deleted'); + ?> + +
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?> translate->_("Status"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , + $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , + $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', + date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', + $this->convBytes($decode->homebrewBase64($st_size)), 'escape($line['path'] . $line['name']);?>  escape($line['fileid']) ?>     escape($this->translate->_($line['status'])) ?>  
    +
    + + + paginationControl($this->paginator, 'Sliding', 'file/list_pagination_ctrl.phtml'); ?> + + + + + +
    +

    + + translate->_("No Files found.");; ?> +

    +
    + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/file/list_pagination_ctrl.phtml b/application/views/scripts/file/list_pagination_ctrl.phtml old mode 100644 new mode 100755 index 70c50bfb6..4691953c7 --- a/application/views/scripts/file/list_pagination_ctrl.phtml +++ b/application/views/scripts/file/list_pagination_ctrl.phtml @@ -1,41 +1,52 @@ - translate = Zend_Registry::get('translate'); ?> - -pageCount): ?> -

    -firstItemNumber, ' -- ', $this->lastItemNumber, ' ', $this->translate->_('of'), ' ', $this->totalItemCount; -?> -

    - - -previous)): ?> - url(array('page' => $this->first)),'">', $this->translate->_('First'), '  '; ?> - - - -previous)): ?> - url(array('page' => $this->previous)), '">< ', $this->translate->_('Previous'), '  '; ?> - - - -pagesInRange as $page): ?> - current): ?> - url(array('page' => $page)), '"> ', $page, ''; ?>   - -   - - - - -next)): ?> - url(array('page' => $this->next)), '">', $this->translate->_('Next >'), '  '; ?> - - - -next)): ?> - url(array('page' => $this->last)), '">', $this->translate->_('Last'); ?> - - - \ No newline at end of file +
    + pageCount): ?> + +
    +
    + " . $this->translate->_('Showing') . ": " . $this->firstItemNumber, ' - ', $this->lastItemNumber, ' ', $this->translate->_('of'), ' ', $this->totalItemCount . ""; + ?> +
    +
    + +
    + +
    + + + +
    + \ No newline at end of file diff --git a/application/views/scripts/help/index.phtml b/application/views/scripts/help/index.phtml old mode 100644 new mode 100755 index 959427014..17c99cb66 --- a/application/views/scripts/help/index.phtml +++ b/application/views/scripts/help/index.phtml @@ -1,39 +1,108 @@ - - - -

    v

    -

    - -Webacula - - Web + Bacula - -translate->_('web interface of a');?>  -Bacula backup system.

    - -

     

    -

    translate->_('Legend');?>

    -

    -translate->_('Yellow color');?> - translate->_('warnings');?>. -

    -

    -translate->_('Red color');?> - translate->_('errors');?>. -

    -

     

    -

    translate->_('Information');?>

    -

    - - - - - - - - - - - - - - - - -
    translate->_('You successfully logged in as');?> identity->login, ' : ', $this->identity->role_name; ?>
    translate->_('DB Bacula');?> db_adapter_bacula, " ", $this->db_server_version_bacula; ?>
    translate->_('Version for Bacula Catalog database');?> catalog_version_bacula; ?>
    translate->_('Director');?> director_version; ?>
    translate->_('Bconsole');?> bconsole_version; ?>
    translate->_('Zend Framework');?> zend_version; ?>
    translate->_('Locale');?> locale; ?>
    translate->_('PHP info');?> (in separate window)
    translate->_('PHP system id');?>
    \ No newline at end of file + + +

    +
    +
    +
    + escape($this->title); ?> +
    +
    + +

    + translate->_('This is a fork from original project');?> 

    + + translate->_('Webacula is a opensource web interface for manage one the most popular backup software of the world, the');?>  + Bacula.

    + translate->_('The original developer seems to have abandoned the project as there have been no updates since October 2014');?>  +

    + translate->_('Original Repository');?>: https://github.com/tim4dev/webacula +

    + translate->_('Current Repository');?>: https://github.com/wanderleihuttel/webacula +
    +
    +

    +
    + +

    + + + translate->_('warnings');?> + + + translate->_('errors');?> + +

    + +

    + + + translate->_('default');?> + + + translate->_('running');?> + + + translate->_('with errors');?> + +

    + +
    +

    translate->_('Informations');?>

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    translate->_('You successfully logged in as');?> identity->login, ' : ', $this->identity->role_name; ?>
    translate->_('Version for Webacula Application');?>
    translate->_('DB Bacula');?> db_adapter_bacula, " ", $this->db_server_version_bacula; ?>
    translate->_('DB Size');?> convBytes( $this->db_size); ?>
    translate->_('Version for Bacula Catalog database');?> catalog_version_bacula; ?>
    translate->_('Director');?> director_version; ?>
    translate->_('Bconsole');?> bconsole_version; ?>
    translate->_('Zend Framework');?> zend_version; ?>
    translate->_('Locale');?> locale; ?>
    translate->_('PHP info');?> (translate->_('in separate window');?>)
    translate->_('PHP system id');?>
    +
    +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/help/my-php-info.phtml b/application/views/scripts/help/my-php-info.phtml old mode 100644 new mode 100755 diff --git a/application/views/scripts/index/index.phtml b/application/views/scripts/index/index.phtml old mode 100644 new mode 100755 diff --git a/application/views/scripts/job/cancel-job.phtml b/application/views/scripts/job/cancel-job.phtml old mode 100644 new mode 100755 diff --git a/application/views/scripts/job/detail.phtml b/application/views/scripts/job/detail.phtml old mode 100644 new mode 100755 index 095e6e5d1..45371c6a3 --- a/application/views/scripts/job/detail.phtml +++ b/application/views/scripts/job/detail.phtml @@ -1,221 +1,276 @@ - -resultJob ): ?> - - -- - - - - -resultJob as $line) : ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0) ) : ?> - - - - - - - - - - - - - - - - ', number_format($this->escape($line['jobfiles'])); - ?> - translate->_("All File records purged"), ')'; ?> - - - - ', $this->convBytes($this->escape($line['jobbytes'])), ''; - ?> - - - escape($line['joberrors']) == 0 ) - echo ' - - - 0) : ?> - - - - - - - - - - - - - -
    escape($this->titleJob); ?>
    translate->_("Job Id"); ?> -  escape($line['jobid']);?>   - "> - translate->_("Console Messages"); ?>   - baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Restore Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - baseUrl, '/job/run-job/jobname/', $this->escape($line['name']); - echo '" title="', $this->translate->_("Re-run Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - baseUrl, '/wblogbook/writelogbook/name_job/', $this->escape($this->resultJob[0]['name']), - '/endtime/', $this->escape($line['endtime']), - '/jobid/', $this->escape($line['jobid']), - '/joberrors/', $this->escape($line['joberrors']); - echo '" title="', $this->translate->_("Written in Logbook"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - -
    translate->_("Prior Job"); ?> escape($line['priorjobid']);?>
    translate->_("Unique Job Name"); ?> escape($line['job']);?>
    translate->_("Job Name"); ?> - escape($line['name']);?>" title="translate->_("Show Job resource") ?>"> - escape($line['name']);?> - -
    translate->_("Short Job Description"); ?> escape($line['short_desc']);?>
    translate->_("Purged Files"); ?> Int2Char($this->escape($line['purgedfiles']));?>
    translate->_("Job Type"); ?> DecodeJobType($this->escape($line['type'])); ?>
    translate->_("Level"); ?> escape($line['level']);?>
    translate->_("Client/Version"); ?> escape($line['clientname']);?>
    - escape($line['clientuname']);?>
    translate->_("Status"); ?> translate->_( $this->escape($line['jobstatuslong']) ); ?>
    translate->_("Schedule Time"); ?> escape($line['schedtime']);?>
    translate->_("Start Time"); ?> escape($line['starttime']);?>
    translate->_("End Time"); ?> escape($line['endtime']);?>
    translate->_("Duration"); ?> escape($line['durationtime']);?>
    escape($line['poolid']) . - "/name/" . $this->escape($line['poolname']);?>"> translate->_("Pool"); ?> - - escape($line['poolid']) . - "/name/" . $this->escape($line['poolname']);?>" title="translate->_("Detail Pool"); ?>"> - escape($line['poolname']);?> -
    translate->_("Fileset"); ?> escape($line['filesetname']);?> (escape($line['filesetcreatetime']);?>)
    - - translate->_("Number of files"); ?> - - - translate->_("Listing files"); ?> - -
    translate->_("Bytes"); ?>
    translate->_("Errors"); ?> -'; - else - if ( $line['reviewed'] > 0 ) { - echo ''; - echo '', $this->translate->_('; - echo $this->escape($line['joberrors']); - } else - echo '' . $this->escape($line['joberrors']); - ?> -
    translate->_("Volumes"); ?> - resultVol) { - foreach($this->resultVol as $line2) { - echo '', - $this->escape($line2['volumename']), '
    '; - } - } else - echo $this->translate->_("No Volumes found."); - ?> -
    translate->_("Comment"); ?> -baseUrl . "/wblogbook/filterbyid/id_begin/\\2\">Logbook Id \\2"; - $str = preg_replace($pattern, $replacement, $line['comment']); - // linebreak - $str = str_replace(array("\r\n", "\r", "\n"), "
    ", $str); - echo $str; -?> -
    - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -
    -
    -
    - +
    +
    +
    +
    + escape($this->titleJob); ?> +
    +
    +

    + resultJob ): ?> +

    + + + + + resultJob as $line) : ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0) ) : ?> + + + + + + + + + + + + + + + + ', number_format($this->escape($line['jobfiles'])); + ?> + translate->_("All File records purged"), ')'; ?> + + + + + + + + + ', $this->convBytes($this->escape($line['jobbytes'])), ''; + ?> + + + + + ', $this->convBytes($this->escape($line['filesize'])), ''; + ?> + + + + ', $this->escape( number_format((1-($jobbytes/$filesize))*100,2) ), ' %'; + } else { + echo ''; + } + ?> + + + + + escape($line['joberrors']) == 0 ) + echo ' + + + 0) : ?> + + + + + + + + + + + + + +
    translate->_("Job Id"); ?> +  escape($line['jobid']);?>   + "> + translate->_("Console Messages"); ?>   + baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Restore Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + baseUrl, '/job/run-job/jobname/', $this->escape($line['name']); + echo '" title="', $this->translate->_("Re-run Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + baseUrl, '/wblogbook/writelogbook/name_job/', $this->escape($this->resultJob[0]['name']), + '/endtime/', $this->escape($line['endtime']), + '/jobid/', $this->escape($line['jobid']), + '/joberrors/', $this->escape($line['joberrors']); + echo '" title="', $this->translate->_("Written in Logbook"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + +
    translate->_("Prior Job"); ?>escape($line['priorjobid']);?>
    translate->_("Unique Job Name"); ?> escape($line['job']);?>
    translate->_("Job Name"); ?> + escape($line['name']);?>" title="translate->_("Show Job Resource") ?>"> + escape($line['name']);?> + +
    translate->_("Short Job Description"); ?> escape($line['short_desc']);?>
    translate->_("Purged Files"); ?> translate->_($this->Int2Char($this->escape($line['purgedfiles'])));?>
    translate->_("Job Type"); ?> DecodeJobType($this->escape($line['type'])); ?>
    translate->_("Level"); ?> DecodeJobLevel($this->escape($line['level'])); ?>
    translate->_("Client/Version"); ?> escape($line['clientname']);?>
    + escape($line['clientuname']);?>
    translate->_("Status"); ?> translate->_( $this->escape($line['jobstatuslong']) ); ?>
    translate->_("Schedule Time"); ?> escape(date($this->datetime_format, strtotime($line['schedtime'])));?>
    translate->_("Start Time"); ?> escape(date($this->datetime_format, strtotime($line['starttime'])));?>
    translate->_("End Time"); ?> escape(date($this->datetime_format, strtotime($line['endtime'])));?>
    translate->_("Duration"); ?> escape($line['durationtime']);?>
    escape($line['poolid']) . + "/name/" . $this->escape($line['poolname']);?>"> translate->_("Pool"); ?> + + escape($line['poolid']) . + "/name/" . $this->escape($line['poolname']);?>" title="translate->_("Detail Pool"); ?>"> + escape($line['poolname']);?> +
    translate->_("Fileset"); ?> escape($line['filesetname']);?> (escape($line['filesetcreatetime']);?>)
    + + translate->_("Number of files"); ?> + + + translate->_("Listing files"); ?> + +
    translate->_("Bytes Stored"); ?> translate->_("Bytes"); ?>
    translate->_("Bytes Copied"); ?>
    translate->_("Software Compression"); ?>-
    translate->_("Errors"); ?> -'; + else + if ( $line['reviewed'] > 0 ) { + echo ''; + echo '', $this->translate->_(escape($line['joberrors']); + } else + echo '' . $this->escape($line['joberrors']); + ?> +
    translate->_("Volumes"); ?> + resultVol) { + foreach($this->resultVol as $line2) { + echo '', + $this->escape($line2['volumename']), '
    '; + } + } else + echo $this->translate->_("No Volumes found."); + ?> +
    translate->_("Comment"); ?> + baseUrl . "/wblogbook/filterbyid/id_begin/\\2\">Logbook Id \\2"; + $str = preg_replace($pattern, $replacement, $line['comment']); + // linebreak + $str = str_replace(array("\r\n", "\r", "\n"), "
    ", $str); + echo $str; + ?> +
    +
    + + + + +
    +

    + + translate->_("No Jobs found."); ?> +

    +
    + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/job/find-file-name.phtml b/application/views/scripts/job/find-file-name.phtml old mode 100644 new mode 100755 index 6207883f6..ec876b462 --- a/application/views/scripts/job/find-file-name.phtml +++ b/application/views/scripts/job/find-file-name.phtml @@ -1,216 +1,238 @@ +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + msg): ?> + + +

    +

    + + msg; ?> +

    +
    + + + + + result): ?> + +
    + + + + + + + + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + + + + + + ', $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; + } + elseif ( $line['jobstatus'] == 'T' ) { + echo ''; + } else { + // Errors like no, but something is wrong + if ( $line['jobstatus'] == 'f' ) { + // fatal error + $class_td = 'class="text-center danger"'; + } else { + $class_td = 'class="text-center warning"'; + } + echo ''; + } + ?> + + + + + + + + + ', number_format($line['jobfiles']), ''; + ?> + + ', $this->convBytes($line['jobbytes']), ''; + ?> + + +  '; + else { + echo ''; + } + ?> + + + +
     translate->_("Job Id"); ?> translate->_("Name File"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?>
    + baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']), + '" title="', $this->translate->_("Restore Job") , '">', + '',
+                                           $this->translate->_('; + } + ?> + + baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']), + '" title="', $this->translate->_("Detail Job"), '">'; + } + echo $line['jobid']; + if ( isset($line['poolid'], $line['poolname']) ) { + echo ''; + } + ?> + + baseUrl, '/restorejob/restore-single-file/fileid/', $this->escape($line['fileid']), + '" title="', $this->translate->_("Restore File") , '">', + '',
+                                           $this->translate->_('; + } + ?> + escape($line['path']), $this->escape($line['filename']);?> + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    OK', $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?> + baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']), + "/name/", $this->escape($line['poolname']), + '" title="', $this->translate->_("Detail Pool"), '">'; + } else { + echo " "; + } + + if ( isset($line['poolid']) && isset($line['poolname']) ) { + echo $this->escape($line['poolname']); + echo ''; + } else { + echo ' '; + } + ?> + escape(date($this->datetime_format,strtotime($line['starttime'])));?>'; + echo ''; + echo $this->escape($line['joberrors']), '
    +
    + + -msg): ?> -
    -
    -

    - msg; ?>

    -
    -
    -
    - - -result): ?> - - - - - - - - - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - - - - - - - ', $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; - } - elseif ( $line['jobstatus'] == 'T' ) { - echo ''; - } else { - // ошибок вроде нет, но что-то не в порядке - if ( $line['jobstatus'] == 'f' ) { - // fatal error - $class_td = 'class="err"'; - } else { - $class_td = 'class="warn"'; - } - echo ''; - } - ?> - - - - - - - - - ', number_format($line['jobfiles']), ''; - ?> - - ', $this->convBytes($line['jobbytes']), ''; - ?> - - -  '; - else { - echo ''; - } - ?> - - - -
    escape($this->title); ?>
      translate->_("Job Id"); ?>   translate->_("Name File"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?>
    - baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']), - '" title="', $this->translate->_("Restore Job") , '">', - '',
-                    $this->translate->_('; - } - ?> - - baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']), - '" title="', $this->translate->_("Detail Job"), '">'; - } - echo $line['jobid']; - if ( isset($line['poolid'], $line['poolname']) ) { - echo ''; - } - ?> - - baseUrl, '/restorejob/restore-single-file/fileid/', $this->escape($line['fileid']), - '" title="', $this->translate->_("Restore File") , '">', - '',
-                    $this->translate->_('; - } - ?> - escape($line['path']), $this->escape($line['filename']);?> - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    OK', $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?> - baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']), - "/name/", $this->escape($line['poolname']), - '" title="', $this->translate->_("Detail Pool"), '">'; - } else { - echo " "; - } - - if ( isset($line['poolid']) && isset($line['poolname']) ) { - echo $this->escape($line['poolname']); - echo ''; - } else { - echo ' '; - } - ?> -  escape($line['starttime']);?> '; - echo ''; - echo $this->escape($line['joberrors']), '
    - - -
    -
    -

    - translate->_("No Files found."); ?>

    -
    -
    -
    - + +
    +

    + + translate->_("No Files found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/find-filters.phtml b/application/views/scripts/job/find-filters.phtml old mode 100644 new mode 100755 index 8b5928d46..e97c39079 --- a/application/views/scripts/job/find-filters.phtml +++ b/application/views/scripts/job/find-filters.phtml @@ -1,5 +1,4 @@ - baseUrl . '/job/find-filters' . '/date_begin/' . $this->date_begin . '/time_begin/' . $this->time_begin . '/date_end/' . $this->date_end . '/time_end/' . $this->time_end . @@ -13,216 +12,264 @@ '/pool_name/' . $this->pool_name; ?> -paginator)): ?> - - - - - - - - - - - - - - - - - - - - - -paginator as $line): ?> - - - - - - - - - ', $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; - } - elseif ( $line['jobstatus'] == 'T' ) { - echo ''; - } else { - // ошибок вроде нет, но что-то не в порядке - if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { - // fatal error - $class_td = 'class="err"'; - } else { - $class_td = 'class="warn"'; - } - echo ''; - } - ?> - - - ', number_format($line['jobfiles']), ''; - ?> - - ', $this->convBytes($line['jobbytes']), ''; - ?> - - -  '; - else { - echo ''; - } - ?> - - - - - - - - - - - - -
    escape($this->title); ?>
      translate->_("Job Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?> translate->_("End Time"); ?> translate->_("Duration"); ?>
    translate->_("hh-mm-ss"); ?>
    - baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Restore Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Detail Job"), '">'; - } - echo $line['jobid']; - if ( isset($line['poolid'], $line['poolname']) ) { - echo ''; - } - ?> - - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    OK', - $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>', - '', - $this->escape($line['joberrors']), ' - baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']), - "/name/", $this->escape($line['poolname']); - echo '" title="', $this->translate->_("Detail Pool"), '">'; - } else { - echo " "; - } - - if ( isset($line['poolid']) && isset($line['poolname']) ) { - echo $this->escape($line['poolname']); - echo ''; - } else { - echo ' '; - } - ?> -  escape($line['starttime']);?>  escape($line['endtime']);?>  escape($line['durationtime']);?> 
    - - -paginationControl($this->paginator, 'Sliding', 'job/find_filters_pagination_ctrl.phtml', - array('options' => array( - 'date_begin' => $this->date_begin, - 'time_begin' => $this->time_begin, - 'date_end' => $this->date_end, - 'time_end' => $this->time_end, - 'client' => $this->client, - 'fileset' => $this->fileset, - 'jlevel' => $this->jlevel, - 'jstatus' => $this->jstatus, - 'jtype' => $this->jtype, - 'volname' => $this->volname - )) - ); -?> - - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -

    - translate->_("See List last 20 Jobs run"); ?> -

    -
    -
    -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + paginator)): ?> +

    + + + + + + + + + + + + + + + + + + + + + + paginator as $line): ?> + + + + + + + + + ', $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; + } + elseif ( $line['jobstatus'] == 'T' ) { + echo ''; + } else { + // Errors like no, but something is wrong + if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { + // fatal error + $class_td = 'class="danger"'; + } else { + $class_td = 'class="warning"'; + } + echo ''; + } + ?> + + + ', number_format($line['jobfiles']), ''; + ?> + + ', $this->convBytes($line['jobbytes']), ''; + ?> + + ', $this->convBytes($line['filesize']), ''; + ?> + + ', $this->escape( number_format((1-($jobbytes/$filesize))*100,2) ), ' %'; + } else { + echo ''; + } + ?> + + + -'; + else { + echo ''; + } + ?> + + + + + + + + + + + + +
      translate->_("Job Id"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    +
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes Stored"); ?>translate->_("Bytes Copied"); ?>translate->_("Software Compression"); ?>translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Pool"); ?>translate->_("Start Time"); ?> translate->_("End Time"); ?>translate->_("Duration"); ?>
    + baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Restore Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } else { + echo ''; + } + ?> + + baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Detail Job"), '">'; + } + echo $line['jobid']; + if ( isset($line['poolid'], $line['poolname']) ){ + echo ''; + } + + ?> + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    OK', + $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>-', + '', + $this->escape($line['joberrors']), ' + baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']), + "/name/", $this->escape($line['poolname']); + echo '" title="', $this->translate->_("Detail Pool"), '">'; + } else { + echo " "; + } + + if ( isset($line['poolid']) && isset($line['poolname']) ) { + echo $this->escape($line['poolname']); + echo ''; + } else { + echo ' '; + } + ?> + escape(date($this->datetime_format,strtotime($line['starttime'])));?>escape(date($this->datetime_format,strtotime($line['endtime'])));?>escape($line['durationtime']);?>
    +
    + + + paginationControl($this->paginator, 'Sliding', 'job/find_filters_pagination_ctrl.phtml', + array('options' => array( + 'date_begin' => $this->date_begin, + 'time_begin' => $this->time_begin, + 'date_end' => $this->date_end, + 'time_end' => $this->time_end, + 'client' => $this->client, + 'fileset' => $this->fileset, + 'jlevel' => $this->jlevel, + 'jstatus' => $this->jstatus, + 'jtype' => $this->jtype, + 'volname' => $this->volname + )) + ); + ?> + + + + + +
    +

    + + translate->_("No Jobs found.");; ?> +

    +

    + + translate->_("See List last 20 Jobs run"); ?> + +

    +
    + + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/job/find-form.phtml b/application/views/scripts/job/find-form.phtml old mode 100644 new mode 100755 index 97fec92bc..d52b2d51b --- a/application/views/scripts/job/find-form.phtml +++ b/application/views/scripts/job/find-form.phtml @@ -1,44 +1,79 @@ - + + translate->_('ANY'); foreach($this->clients as $client) : $aclients[ $this->escape($client['name']) ] = $this->escape($client['name']); endforeach; -$aclients[''] = $this->translate->_('ANY'); // if empty client exists in database +$aclients[''] = $this->translate->_('ANY'); // if empty client exists in database // create array filesets for Form $afilesets[''] = $this->translate->_('ANY'); foreach($this->filesets as $fileset) : $afilesets[ $this->escape($fileset['fileset']) ] = $this->escape($fileset['fileset']); endforeach; -$afilesets[''] = $this->translate->_('ANY'); // if empty FileSet exists in database +$afilesets[''] = $this->translate->_('ANY'); // if empty FileSet exists in database // create array levels for Form $alevels = array( @@ -65,12 +100,12 @@ $alevels = array( // create array JobStatus for Form $astatus = array( - "" => $this->translate->_("ANY"), - "R" => $this->translate->_("Running"), - "T" => $this->translate->_("Completed successfully"), - "E" => $this->translate->_("Terminated with errors"), - "A" => $this->translate->_("Canceled by user"), - "W" => $this->translate->_("Waiting anything") + "" => $this->translate->_("ANY"), + "R" => $this->translate->_("Running"), + "T" => $this->translate->_("Completed successfully"), + "E" => $this->translate->_("Terminated with errors"), + "A" => $this->translate->_("Canceled by user"), + "W" => $this->translate->_("Waiting anything") ); // create array Job Type for Form @@ -79,133 +114,264 @@ $atype = array( "B" => $this->translate->_("Backup type"), "R" => $this->translate->_("Restore type"), "V" => $this->translate->_("Verify type"), - "D" => $this->translate->_("Admin Job type") + "D" => $this->translate->_("Admin Job type"), + "C" => $this->translate->_("Copy of a Job"), + "c" => $this->translate->_("Copy Job") ); ?> -
    -

    escape($this->title); ?>

    -
    - - -

    translate->_("Job Id"); ?>

    -
    -
    - translate->_("Job Id"); ?> formText('jobid', "", array('size' => 10)) ?> - formSubmit('ok1', $this->translate->_('Search'), array('class' => 'prefer_btn') ); ?> -
    -
    - - -

    translate->_("Job Name"); ?>

    -
    -
    - translate->_("Job Name"); ?> formText('jobname', "", array('size' => 40)) ?> - formSubmit('ok1', $this->translate->_('Search'), array('class' => 'prefer_btn') ); ?> -
    -
    - - -

    translate->_("Time, Client, Fileset, Level, Status, Type"); ?>

    -
    -
    - - -
    - translate->_("Time of start of the Jobs with"); ?> - - formText('date_begin', date('Y-m-d', time()-86400), array('size' => 10, 'maxlength' => 10)) ?> -
    translate->_("YYYY-MM-DD"); ?>
    -
    - formText('time_begin', date('H:i:s', time()-86400), array('size' => 8, 'maxlength' => 8 )) ?> -
    translate->_("HH:MM:SS"); ?>
    -
    - translate->_("up to"); ?> - - formText('date_end', date('Y-m-d', time()), array('size' => 10, 'maxlength' => 10)) ?> -
    translate->_("YYYY-MM-DD"); ?>
    -
    - formText('time_end', date('H:i:s', time()), array('size' => 8, 'maxlength' => 8)) ?> -
    translate->_("HH:MM:SS"); ?>
    -
    - - - formSelect('client', null, array('class' => 'ui-select', 'style' => 'width: 60%;'), $aclients) ?> -
    - - - formSelect('fileset', null, array('class' => 'ui-select', 'style' => 'width: 60%;'), $afilesets) ?> -
    - - - formSelect('jlevel', null, array('class' => 'ui-select', 'style' => 'width: 60%;'), $alevels) ?> -
    - - - formSelect('jstatus', null, array('class' => 'ui-select', 'style' => 'width: 60%;'), $astatus) ?> -
    - - - formSelect('jtype', null, array('class' => 'ui-select', 'style' => 'width: 60%;'), $atype) ?> -
    - formSubmit('ok2', $this->translate->_('Search'), array('class'=>'prefer_btn', 'style'=>'margin-top: 0px; margin-bottom: 0px;') ); ?> -
    -
    -
    - - - -

    translate->_("Volume Name"); ?>

    -
    -
    - translate->_("Volume Name"); ?> - formText('volname', "", array('size' => 40)) ?> - formSubmit('ok3', $this->translate->_('Search'), array('class' => 'prefer_btn') ); ?> -
    -
    - - - -

    translate->_("List last"), ' ', $this->translate->_("Jobs run"); ?>

    -
    -
    - translate->_("List last"); ?> - formText('numjob', "20", array('size' => 5)) ?> translate->_("Jobs run"); ?> - formSubmit('ok4', $this->translate->_('Search'), array('class' => 'prefer_btn') ); ?> -
    -
    - - - -

    translate->_("File Name"); ?>

    -
    -
    - - - -
    - translate->_("Enter path with trailing slash"); ?> - - formText('path', "", array('size' => 35)) ?> -
    - *translate->_("Enter Filename (no path)"); ?> - - formText('namefile', "", array('size' => 30)); ?> -
    - translate->_("Type of search
    (case sensitive)"); ?>
    -
    - formRadio('type_file_search', 'ordinary', null, $this->atype_file_search); ?> -
    - - - formSelect('client_nf', null, array('class' => 'ui-select', 'style' => 'width: 60%;'), $aclients); ?> -
    - formSubmit('ok5', $this->translate->_('Search'), array('class' => 'prefer_btn', 'style'=>'margin-top: 0px; margin-bottom: 0px;') ); ?> -
    -
    -
    - -
    -
    \ No newline at end of file + +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    +

    + +
    + +
    +
    + +
    +
    + translate->_("Job Id"); ?>    formText('jobid', "", array('size' => 10, 'class' => 'form-control')) ?> + formSubmit('ok1', $this->translate->_('Search'), array('class' => 'btn btn-default') ); ?> +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + +
    +
    + translate->_("Job Name"); ?>    formText('jobname', "", array('size' => 40, 'class' => 'form-control')) ?> + formSubmit('ok1', $this->translate->_('Search'), array('class' => 'btn btn-default') ); ?> +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + translate->_("Time of start of the Jobs with"); ?> + +
    + formText('date_begin', date('Y-m-d', time()-86400), array('size' => 10, 'maxlength' => 10, 'class' => 'form-control form-inline')); ?> + formText('time_begin', date('H:i:s', time()-86400), array('size' => 8, 'maxlength' => 8, 'class' => 'form-control form-inline')); ?> +    translate->_("up to"); ?>    + formText('date_end', date('Y-m-d', time()), array('size' => 10, 'maxlength' => 10, 'class' => 'form-control form-inline')); ?> + formText('time_end', date('H:i:s', time()), array('size' => 8, 'maxlength' => 8, 'class' => 'form-control form-inline')); ?> + +
    +
    + + + formSelect('client', null, array('style' => 'width: 18em;'), $aclients) ?> +
    + + + formSelect('fileset', null, array('style' => 'width: 18em;'), $afilesets) ?> +
    + + + formSelect('jlevel', null, array('style' => 'width: 18em;'), $alevels) ?> +
    + + + formSelect('jstatus', null, array('style' => 'width: 18em;'), $astatus) ?> +
    + + + formSelect('jtype', null, array('style' => 'width: 18em;'), $atype) ?> +
    + formSubmit('ok2', $this->translate->_('Search'), array('class'=>'btn btn-default') ); ?> +
    +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + +
    +
    + translate->_("Volume Name"); ?>    + formText('volname', "", array('size' => 40, 'class' => 'form-control')) ?> + formSubmit('ok3', $this->translate->_('Search'), array('class' => 'btn btn-default') ); ?> +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + +
    +
    + translate->_("List last"); ?>    + formText('numjob', "20", array('size' => 5, 'class' => 'form-control')) ?>    translate->_("Jobs run"); ?> + formSubmit('ok4', $this->translate->_('Search'), array('class' => 'btn btn-default') ); ?> +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + + translate->_("Enter path with trailing slash"); ?> + +
    + formText('path', "", array('size' => 30, 'class' => 'form-control')) ?> +
    +
    + *translate->_("Enter Filename (no path)"); ?> + +
    + formText('namefile', "", array('size' => 30, 'class' => 'form-control')); ?> +
    +
    + translate->_("Type of search (case sensitive)"); ?> + + formRadio('type_file_search', 'ordinary', array('style' => 'margin-left: 5px;'), $this->atype_file_search); ?> +
    + + + formSelect('client_nf', null, array('style' => 'width: 18em;'), $aclients); ?> +
    + formSubmit('ok5', $this->translate->_('Search'), array('class' => 'btn btn-default') ); ?> +
    +
    +
    + +
    +
    +
    + +
    + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/find_filters_pagination_ctrl.phtml b/application/views/scripts/job/find_filters_pagination_ctrl.phtml old mode 100644 new mode 100755 index 02310b673..730e69420 --- a/application/views/scripts/job/find_filters_pagination_ctrl.phtml +++ b/application/views/scripts/job/find_filters_pagination_ctrl.phtml @@ -1,9 +1,8 @@ - translate = Zend_Registry::get('translate'); ?> - +
    pageCount): ?> -

    + firstItemNumber, ' -- ', $this->lastItemNumber, ' ', $this->translate->_('of'), ' ', $this->totalItemCount; $opt = array(); @@ -18,41 +17,43 @@ empty($this->options['jtype']) ? true : $opt['jtype'] = rawurlencode($this->options['jtype']); empty($this->options['volname']) ? true : $opt['volname'] = rawurlencode($this->options['volname']); ?> -

    - - -previous)): ?> - url( array_merge(array('page' => $this->first), $opt) ),'">', - $this->translate->_('First'), '  '; ?> - - - -previous)): ?> - url( array_merge(array('page' => $this->previous), $opt) ), - '">< ', $this->translate->_('Previous'), '  '; ?> - - - -pagesInRange) > 1 ):?> - pagesInRange as $page): ?> - current): ?> -   - -   - - - +
    + +
    - -next)): ?> - url( array_merge(array('page' => $this->next), $opt) ), - '">', $this->translate->_('Next >'), '  '; ?> - - -next)): ?> - url( array_merge(array('page' => $this->last), $opt) ), - '">', $this->translate->_('Last'); ?> - - - \ No newline at end of file +
    + \ No newline at end of file diff --git a/application/views/scripts/job/next-dashboard.phtml b/application/views/scripts/job/next-dashboard.phtml old mode 100644 new mode 100755 index 9f459f9c9..ce7369f02 --- a/application/views/scripts/job/next-dashboard.phtml +++ b/application/views/scripts/job/next-dashboard.phtml @@ -1,115 +1,136 @@ -

    - - escape($this->title); ?> - -

    +
    + +
    +

    + + result): ?> + result[0] == 'NOFOUND') { + ?> + +

    +

    + + translate->_("ERROR: Cannot execute bconsole. File not found.") ?> +

    +
    + -result): ?> -result[0] == 'NOFOUND') { - echo '

    ', - $this->translate->_("ERROR: Cannot execute bconsole. File not found."), '

    '; - } - elseif ($this->result[0] == 'ERROR') { - echo '

    ', - $this->translate->_("ERROR: There was a problem executing bconsole. See below."), '

    '; - foreach ($this->result as $line) { - echo $line, '
    '; - } - echo '
    '; - } else { -?> - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - - - - - -
    - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Level"); ?> translate->_("Type"); ?> translate->_("Priority"); ?> translate->_("Scheduled"); ?> translate->_("Volume"); ?>
    - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['name']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['name']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['name']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['name']); - break; - } - ?> -
    escape($line['level']);?>escape($line['type']);?>escape($line['pri']);?>escape($line['date']);?> - escape($line['vol']) === '*unknown*') : ?> - escape($line['vol']); ?> - - escape($line['vol']);?>" title="translate->_("Detail Volume");?>"> - escape($line['vol']);?> - -
    - - - - -
    -
    -

    - translate->_("No Scheduled Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file + result[0] == 'ERROR') { + ?> + +
    +

    + + translate->_("ERROR: There was a problem executing bconsole. See below.").'
    '; + foreach ($this->result as $line) { + echo $line, '
    '; + } + ?> +

    +
    + + + +
    + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + + +
    show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Level"); ?> translate->_("Type"); ?> translate->_("Priority"); ?> translate->_("Scheduled"); ?> translate->_("Volume"); ?>
    show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + //echo $this->escape($line['name']); + echo "".$this->escape($line['name']).""; + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['name']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['name']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['name']); + break; + } + ?> +
    escape($line['level']);?>escape($line['type']);?>escape($line['pri']);?>escape($line['date']);?>escape($line['vol']) === '*unknown*') : ?> + escape($line['vol']); ?> + escape($line['vol']);?>" title="translate->_("Detail Volume");?>"> + escape($line['vol']);?> +
    +
    + + + + + + +
    +

    + + translate->_("No Scheduled Jobs found."); ?> +

    +
    + + + + +

    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/next.phtml b/application/views/scripts/job/next.phtml old mode 100644 new mode 100755 index 87fe8222f..9ac40f8f6 --- a/application/views/scripts/job/next.phtml +++ b/application/views/scripts/job/next.phtml @@ -1,137 +1,171 @@ - -result): ?> -result[0] == 'NOFOUND') { - echo '

    ', - $this->translate->_("ERROR: Cannot execute bconsole. File not found."), '

    '; - } - elseif ($this->result[0] == 'ERROR') { - echo '

    ', - $this->translate->_("ERROR: There was a problem executing bconsole. See below."), '

    '; - foreach ($this->result as $line) { - echo $line, '
    '; - } - echo '
    '; - } else { -?> - - - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - - - unknown_volume_capacity: - $line['volfree'] = $this->translate->_('Unknown'); - break; - case $this->err_volume: - $class = 'class="err"'; - $line['volfree'] = $this->translate->_('Volume with Errors'); - break; - case $this->new_volume: - $line['volfree'] = $this->translate->_('New Volume'); - break; - default: - if ( $line['volfree'] < 3 ) - $class = 'class="warn"'; - elseif ( $line['volfree'] < 7 ) - $class = 'class="warn"'; - else - $class = ''; - break; - } - echo ''; - ?> - - - - -
    escape($this->title); ?>
    - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Level"); ?> translate->_("Type"); ?> translate->_("Priority"); ?> translate->_("Scheduled"); ?> translate->_("Volume"); ?> translate->_("% Free space
    on Volume"); ?>
    - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['name']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['name']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['name']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['name']); - break; - } - ?> -
    escape($line['level']);?>escape($line['type']);?>escape($line['pri']);?>escape($line['date']);?> - escape($line['vol']) === '*unknown*') : ?> - escape($line['vol']); ?> - - escape($line['vol']);?>" title="translate->_("Detail Volume");?>"> - escape($line['vol']);?> - - ',$line['volfree'] ,'
    - - - - -
    -
    -

    - translate->_("No Scheduled Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + result): ?> + result[0] == 'NOFOUND') { + ?> + +

    +

    + + translate->_("ERROR: Cannot execute bconsole. File not found.") ?> +

    +
    + + result[0] == 'ERROR') { + ?> + +
    +

    + + translate->_("ERROR: There was a problem executing bconsole. See below.").'
    '; + foreach ($this->result as $line) { + echo $line, '
    '; + } + ?> +

    +
    + + + + +
    + + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + + unknown_volume_capacity: + $line['volfree'] = $this->translate->_('Unknown'); + break; + case $this->err_volume: + $class = 'class="text-center danger"'; + $line['volfree'] = $this->translate->_('Volume with Errors'); + break; + case $this->new_volume: + $line['volfree'] = $this->translate->_('New Volume'); + break; + default: + if ( $line['volfree'] < 3 ) + $class = 'class="text-center warning"'; + elseif ( $line['volfree'] < 7 ) + $class = 'class="text-center warning"'; + else + $class = 'class="text-center"'; + break; + } + echo ''; + ?> + + + + +
    + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Level"); ?>translate->_("Type"); ?>translate->_("Priority"); ?> translate->_("Scheduled"); ?>translate->_("Volume"); ?> translate->_("% Free space
    on Volume"); ?>
    + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['name']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['name']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['name']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['name']); + break; + } + ?> +
    escape($line['level']);?>escape($line['type']);?>escape($line['pri']);?>escape($line['date']);?>escape($line['vol']) === '*unknown*') : ?> + escape($line['vol']); ?> + + escape($line['vol']);?>" title="translate->_("Detail Volume");?>"> + escape($line['vol']);?> + + ',$line['volfree'] ,' %
    +
    + + + + + + +
    +

    + + translate->_("No Scheduled Jobs found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/job/problem-dashboard.phtml b/application/views/scripts/job/problem-dashboard.phtml old mode 100644 new mode 100755 index 4afee44b4..43fc3e4df --- a/application/views/scripts/job/problem-dashboard.phtml +++ b/application/views/scripts/job/problem-dashboard.phtml @@ -1,165 +1,174 @@ -

    - - escape($this->title); ?> - -

    +
    + +
    +

    + result): ?> +

    + + + + + + + + + + + + + + + + result as $line) : ?> + + + -result): ?> - -
      translate->_("JobId"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?>translate->_("Level"); ?>translate->_("Files"); ?>translate->_("Bytes"); ?>translate->_("Errors"); ?>translate->_("End Time"); ?>
    + baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); + echo '" title="', $this->translate->_("Re-run Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + + baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Detail Job"), '">'; + } + echo $line['jobid']; + if ( isset($line['poolid']) && isset($line['poolname']) ) { + echo ''; + } + ?> +
    - - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; - } - elseif ( $line['jobstatus'] == 'T' ) { - echo ''; - } else { - // ошибок вроде нет, но что-то не в порядке - if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { - // fatal error - $class_td = 'class="err"'; - } else { - $class_td = 'class="warn"'; - } - echo ''; - } - ?> - - - - ', number_format($line['jobfiles']), ''; - if ( ($line['jobbytes'] == 0) && ($line['type'] != 'D') ) $class_td = 'class="warn"'; - echo ''; - ?> - - - -'; - else { - echo ''; - } - ?> - - - - - -
      translate->_("Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?> translate->_("End Time"); ?>
    - baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); - echo '" title="', $this->translate->_("Re-run Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - - baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Detail Job"), '">'; - } - echo $line['jobid']; - if ( isset($line['poolid']) && isset($line['poolname']) ) { - echo ''; - } - ?> - - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    OK', - $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>', $this->convBytes($line['jobbytes']), ''; - echo ''; - echo $this->escape($line['joberrors']), 'escape($line['endtime']);?>
    - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file + + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> + + + + ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; + } + elseif ( $line['jobstatus'] == 'T' ) { + echo 'OK'; + } else { + // Errors like no, but something is wrong + if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { + // fatal error + $class_td = 'class="text-center danger"'; + } else { + $class_td = 'class="text-center warning"'; + } + echo '', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ''; + } + ?> + + escape($line['level']);?> + + + ', number_format($line['jobfiles']), ''; + if ( ($line['jobbytes'] == 0) && ($line['type'] != 'D') ) $class_td = 'class="text-right warning"'; + echo '', $this->convBytes($line['jobbytes']), ''; + ?> + + + -'; + else { + echo ''; + echo ''; + echo $this->escape($line['joberrors']), ''; + } + ?> + + escape(date($this->datetime_format, strtotime($line['endtime'])));?> + + + + +
    + + + + +
    +

    + + translate->_("No Jobs found."); ?> +

    +
    + + + + +

    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/problem.phtml b/application/views/scripts/job/problem.phtml old mode 100644 new mode 100755 index 7a9e12c7c..7417d72f0 --- a/application/views/scripts/job/problem.phtml +++ b/application/views/scripts/job/problem.phtml @@ -1,204 +1,222 @@ - -result): ?> - - - - - - - - - - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; - } - elseif ( $line['jobstatus'] == 'T' ) { - echo ''; - } else { - // ошибок вроде нет, но что-то не в порядке - if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { - // fatal error - $class_td = 'class="err"'; - } else { - $class_td = 'class="warn"'; - } - echo ''; - } - ?> - - - - ', number_format($line['jobfiles']), ''; - if ( ($line['jobbytes'] == 0) && ($line['type'] != 'D') ) $class_td = 'class="warn"'; - echo ''; - ?> - - - -'; - else { - echo ''; - } - ?> - - - - - - - - - - - - - - -
    escape($this->title); ?>
      translate->_("Job Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?> translate->_("End Time"); ?> translate->_("Duration"); ?>
    translate->_("hh-mm-ss"); ?>
     
    - baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); - echo '" title="', $this->translate->_("Re-run Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Detail Job"), '">'; - } - echo $line['jobid']; - if ( isset($line['poolid']) && isset($line['poolname']) ) { - echo ''; - } - ?> - - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    OK', - $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>', $this->convBytes($line['jobbytes']), ''; - echo ''; - echo $this->escape($line['joberrors']), ' - baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']) . - "/name/", $this->escape($line['poolname']); - echo '" title="', $this->translate->_("Detail Volume"), '">'; - } else { - echo " "; - } - - if ( isset($line['poolid']) && isset($line['poolname']) ) { - echo $this->escape($line['poolname']); - echo ''; - } else { - echo ' '; - } - ?> - escape($line['starttime']);?>escape($line['endtime']);?>escape($line['durationtime']);?>baseUrl, '/wblogbook/writelogbook/name_job/', $this->escape($line['jobname']), - '/endtime/', $this->escape($line['endtime']), - '/jobid/', $this->escape($line['jobid']), - '/joberrors/', $this->escape($line['joberrors']); - echo '" title="', $this->translate->_("Written in Logbook"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> -
    - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + result): ?> +

    + + + + + + + + + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; + } + elseif ( $line['jobstatus'] == 'T' ) { + echo ''; + } else { + // Errors like no, but something is wrong + if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ){ + // fatal error + $class_td = 'class="text-center danger"'; + } else { + $class_td = 'class="text-center warning"'; + } + echo ''; + } + ?> + + + + ', number_format($line['jobfiles']), ''; + if ( ($line['jobbytes'] == 0) && ($line['type'] != 'D') ) $class_td = 'class="warning"'; + echo ''; + ?> + + + -'; + else { + echo ''; + } + ?> + + + + + + + + + + + + + + +
      translate->_("Job Id"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?>translate->_("Level"); ?>translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?>translate->_("Client"); ?>translate->_("Pool"); ?>translate->_("Start Time"); ?>translate->_("End Time"); ?>translate->_("Duration"); ?> 
    + baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); + echo '" title="', $this->translate->_("Re-run Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + + baseUrl, '/job/detail/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Detail Job"), '">'; + } + echo $line['jobid']; + if ( isset($line['poolid']) && isset($line['poolname']) ) { + echo ''; + } + ?> + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    OK', + $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>', $this->convBytes($line['jobbytes']), ''; + echo ''; + echo $this->escape($line['joberrors']), ' + baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']) . + "/name/", $this->escape($line['poolname']); + echo '" title="', $this->translate->_("Detail Volume"), '">'; + } else { + echo ""; + } + + if ( isset($line['poolid']) && isset($line['poolname']) ) { + echo $this->escape($line['poolname']); + echo ''; + } else { + echo ''; + } + ?> + escape(date($this->datetime_format, strtotime($line['starttime'])));?>escape(date($this->datetime_format, strtotime($line['endtime'])));?>escape($line['durationtime']);?> + baseUrl, '/wblogbook/writelogbook/name_job/', $this->escape($line['jobname']), + '/endtime/', $this->escape($line['endtime']), + '/jobid/', $this->escape($line['jobid']), + '/joberrors/', $this->escape($line['joberrors']); + echo '" title="', $this->translate->_("Written in Logbook"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> +
    +
    + + + + +
    +

    + + translate->_("No Jobs found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/run-job-output.phtml b/application/views/scripts/job/run-job-output.phtml old mode 100644 new mode 100755 index 2785ee024..1a01130f4 --- a/application/views/scripts/job/run-job-output.phtml +++ b/application/views/scripts/job/run-job-output.phtml @@ -1,65 +1,70 @@ - -result_error ): ?> -
    -
    -

    - - result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    -
    - - - - - - - -
    escape($this->title . ' ' . $this->jobname); ?>
    - translate->_("Director output:"); ?> - command_output ) - { - echo '
    ';
    -        foreach ($this->command_output as $line) {
    -            if ( preg_match('/(ERR|not found|invalid)/i', $line) )   {
    -                echo '
    ' . $line . '

    '; - } else { - echo $line . '
    '; - } - } - echo '
    '; - } - ?> - -

     

    - -
    -
    - - formSubmit('ok1', $this->translate->_('View Running Jobs') ); ?> -
    -
    -
    - - \ No newline at end of file +
    +
    +
    +
    + escape($this->title . ' ' . $this->jobname); ?> +
    +
    +

    + result_error ): ?> + + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + +
    +
    + + formSubmit('ok1', $this->translate->_('View Running Jobs'), array('class' => 'btn btn-default') ); ?> +
    +
    + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/run-job.phtml b/application/views/scripts/job/run-job.phtml old mode 100644 new mode 100755 index 6372f5024..6953b964e --- a/application/views/scripts/job/run-job.phtml +++ b/application/views/scripts/job/run-job.phtml @@ -1,24 +1,19 @@ - -
    -result_error ) - { - switch ( $this->result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo '

    ' . $msg . '

    '; - echo ''; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo $line . '
    '; - } - } - echo '
    '; - } -?> - form->setAction( $this->url()); - echo $this->form; + $this->form->setActionCancel( $this->baseUrl . "/index/index" ); ?> -
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + result_error ): ?> + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + form; ?> + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/running-dashboard.phtml b/application/views/scripts/job/running-dashboard.phtml old mode 100644 new mode 100755 index 08cc49971..3341815c9 --- a/application/views/scripts/job/running-dashboard.phtml +++ b/application/views/scripts/job/running-dashboard.phtml @@ -1,177 +1,210 @@ - -

    - - escape($this->titleDirRunningJobs); ?> - -

    - -resultDirRunningJobs): ?> -resultDirRunningJobs[0] == 'NOFOUND') { - echo '

    ', - $this->translate->_("ERROR: Cannot execute bconsole. File not found."), '

    '; - } - elseif ($this->resultDirRunningJobs[0] == 'ERROR') { - echo '

    ', - $this->translate->_("ERROR: There was a problem executing bconsole. See below."), '

    '; - foreach ($this->resultDirRunningJobs as $line) { - echo $line, '
    '; - } - echo '
    '; - } else { -?> - - - - - - - - - - - -resultDirRunningJobs as $line) : ?> - - - - - - - - - -
    translate->_("Id"); ?> translate->_("Level"); ?> translate->_("Job Name");?> translate->_("Status"); ?>
    - - escape($line['id']);?> - - escape($line['level']);?> escape($line['name']);?> escape($line['status']);?>
    - - - - -
    -
    -

    - translate->_("Information from Director : No Running Jobs found."); ?>

    -
    -
    - - - - - - - -

    - - escape($this->titleRunningJobs); ?> - -

    - -resultRunningJobs): ?> - - - - - - - - - - - - - - -resultRunningJobs as $line) : ?> - - - - - - escape($line['joberrors']) != 0 ) { - echo ''; - } - else - echo ''; - ?> - - - - escape($line['joberrors']) == 0 ) - echo ''; - else - echo ''; - ?> - - - - - - -
    translate->_("Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Start Time"); ?>
    translate->_("yy-mm-dd"); ?>
    - - escape($line['jobid']);?> - - - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ' ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>-', $this->escape($line['joberrors']), 'escape($line['clientname']);?>escape($line['starttime']);?>
    - - -
    -
    -

    - translate->_("Information from DB Catalog : No Running Jobs found.");?>

    -
    -
    -
    - \ No newline at end of file +
    + +
    +

    + + resultDirRunningJobs): ?> + resultDirRunningJobs[0] == 'NOFOUND') { + ?> + +

    +

    + + translate->_("ERROR: Cannot execute bconsole. File not found.") ?> +

    +
    + + resultDirRunningJobs[0] == 'ERROR') { + ?> + +
    +

    + + translate->_("ERROR: There was a problem executing bconsole. See below.").'
    '; + foreach ($this->resultDirRunningJobs as $line) { + echo $line, '
    '; + } + ?> +

    +
    + + +
    + + + + + + + + + + + resultDirRunningJobs as $line) : ?> + + + + + + + + + +
       translate->_("Job Id");?>     translate->_("Type"); ?>   translate->_("Level"); ?> translate->_("Job Name").'/'.$this->translate->_("Status");?>
    + + "> +  escape($line['id']);?> + + escape($line['level']);?> escape($line['name']);?> escape($line['status']);?>
    +
    + + + + + + +
    +

    + + translate->_("Information from Director : No Running Jobs found."); ?> +

    +
    + + + + + +

    +
    +
    + +
    + +
    +

    + + resultRunningJobs): ?> + +

    + + + + + + + + + + + + + + resultRunningJobs as $line) : ?> + + + + + + escape($line['joberrors']) != 0 ) { + echo ''; + } + else + echo ''; + ?> + + + + escape($line['joberrors']) == 0 ) + echo ''; + else + echo ''; + ?> + + + + + + +
      translate->_("Job Id"); ?>   + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Errors"); ?>translate->_("Client"); ?> translate->_("Start Time"); ?>
    + + "> +  escape($line['jobid']);?> + + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ' ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>-', $this->escape($line['joberrors']), 'escape($line['clientname']);?>escape(date($this->datetime_format,strtotime($line['starttime'])));?>
    +
    + + + + +
    +

    + + translate->_("Information from DB Catalog : No Running Jobs found.");?> +

    +
    + + + +

    +
    +
    + diff --git a/application/views/scripts/job/running.phtml b/application/views/scripts/job/running.phtml old mode 100644 new mode 100755 index 0d49b2333..3971aae56 --- a/application/views/scripts/job/running.phtml +++ b/application/views/scripts/job/running.phtml @@ -1,193 +1,235 @@ - -resultDirRunningJobs ): ?> -resultDirRunningJobs[0] == 'NOFOUND') { - echo '

    ', - $this->translate->_("ERROR: Cannot execute bconsole. File not found."), '

    '; - } - elseif ($this->resultDirRunningJobs[0] == 'ERROR') { - echo '

    ', - $this->translate->_("ERROR: There was a problem executing bconsole. See below."), '

    '; - foreach ($this->resultDirRunningJobs as $line) { - echo $line, '
    '; - } - echo '
    '; - } else { -?> - - - - - - - - - - - - -resultDirRunningJobs as $line) : ?> - - - - - - - - - - - -
    escape($this->titleDirRunningJobs); ?>
    translate->_("Job Id"); ?> translate->_("Level"); ?> translate->_("Job Name"); ?> translate->_("Status"); ?>
    - - escape($line['id']);?> - - escape($line['level']);?> escape($line['name']);?> escape($line['status']);?>
    - - - - -
    -
    -

    - translate->_("Information from Director : No Running Jobs found."); ?>

    -
    -
    -
    - - - - -
     
    - - - -resultRunningJobs ): ?> - - - - - - - - - - - - - - - - - - -resultRunningJobs as $line) : ?> - - - - - - - escape($line['joberrors']) != 0 ) { - echo ''; - } - else - echo ''; - ?> - - - - escape($line['joberrors']) == 0 ) - echo ''; - else - echo ''; - ?> - - - - - - - - - - - - - - -
    escape($this->titleRunningJobs); ?>
    translate->_("Job Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?>
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?>
    translate->_("yy-mm-dd"); ?>
    translate->_("Duration"); ?>
    translate->_("hh-mm-ss"); ?>
     
    - - escape($line['jobid']);?> - - - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ' ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>-', $this->escape($line['joberrors']), 'escape($line['clientname']);?>escape($line['poolid']), - "/name/", $this->escape($line['poolname']);?>" title="translate->_("Detail Pool"); ?>"> - escape($line['poolname']);?> - escape($line['starttime']);?>escape($line['durationtime']);?>baseUrl, '/job/cancel-job/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Cancel"), '">'; - echo '', $this->translate->_('; - echo ''; - ?> -
    - - - -
    -
    -

    - translate->_("Information from DB Catalog : No Running Jobs found.");?>

    -
    -
    -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->titleDirRunningJobs); ?> +
    +
    +

    + + resultDirRunningJobs ): ?> + resultDirRunningJobs[0] == 'NOFOUND') { + ?> + +

    +

    + + translate->_("ERROR: Cannot execute bconsole. File not found.") ?> +

    +
    + + resultDirRunningJobs[0] == 'ERROR') { + ?> + +
    +

    + + translate->_("ERROR: There was a problem executing bconsole. See below.").'
    '; + foreach ($this->resultDirRunningJobs as $line) { + echo $line, '
    '; + } + ?> +

    +
    + + +
    + + + + + + + + + + + resultDirRunningJobs as $line) : ?> + + + + + + + + + + +
    translate->_("Job Id"); ?>translate->_("Type"); ?>translate->_("Level"); ?>translate->_("Job Name").'/'.$this->translate->_("Status"); ?>
    + + "> +  escape($line['id']);?> + + escape($line['level']);?> escape($line['name']);?> escape($line['status']);?>
    +
    + + + + + + +
    +

    + + translate->_("Information from Director : No Running Jobs found."); ?> +

    +
    + + + + +

    +
    +
    + +
    +
    + escape($this->titleRunningJobs); ?> +
    +
    +

    + resultRunningJobs ): ?> +

    + + + + + + + + + + + + + + + + + resultRunningJobs as $line) : ?> + + + + + + + escape($line['joberrors']) != 0 ) { + echo ''; + } + else + echo ''; + ?> + + + + escape($line['joberrors']) == 0 ) + echo ''; + else + echo ''; + ?> + + + + + + + + + + + + + + +
    translate->_("Job Id"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?>translate->_("Level"); ?>translate->_("Errors"); ?>translate->_("Client"); ?>translate->_("Pool"); ?>translate->_("Start Time"); ?>translate->_("Duration"); ?> 
    + + "> +  escape($line['jobid']);?> + + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ' ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>-', $this->escape($line['joberrors']), 'escape($line['clientname']);?>escape($line['poolid']), + "/name/", $this->escape($line['poolname']);?>" title="translate->_("Detail Pool"); ?>"> + escape($line['poolname']);?> + escape(date($this->datetime_format,strtotime($line['starttime'])));?>escape($line['durationtime']);?>baseUrl, '/job/cancel-job/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Cancel"), '">'; + echo '', $this->translate->_('; + echo ''; + ?> +
    +
    + + + + +
    +

    + + translate->_("Information from DB Catalog : No Running Jobs found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/job/show-job.phtml b/application/views/scripts/job/show-job.phtml old mode 100644 new mode 100755 index 1c11ec617..8eab96e2f --- a/application/views/scripts/job/show-job.phtml +++ b/application/views/scripts/job/show-job.phtml @@ -1,55 +1,63 @@ - -result_error ): ?> -
    -
    -

    - - result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    -
    - - - - - - - -
    escape($this->title . ' : ' . $this->jobname); ?>
    - translate->_("Director output:"); ?> - command_output ) - { - echo '
    ';
    -        foreach ($this->command_output as $line) {
    -            echo $line . '
    '; - } - echo '
    '; - } - ?> - -

     

    - -
    - - \ No newline at end of file +
    +
    +
    +
    + escape($this->title . ': ' . $this->jobname); ?> +
    +
    +

    + + result_error ): ?> + + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + + +

    +

    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/terminated-dashboard.phtml b/application/views/scripts/job/terminated-dashboard.phtml old mode 100644 new mode 100755 index 57af2798d..4879aa4c5 --- a/application/views/scripts/job/terminated-dashboard.phtml +++ b/application/views/scripts/job/terminated-dashboard.phtml @@ -1,185 +1,196 @@ - -

    - - escape($this->title); ?> - -

    - -result): ?> - - - - - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - - ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; - } - elseif ( $line['jobstatus'] == 'T' ) { - echo ''; - } else { - // ошибок вроде нет, но что-то не в порядке - if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { - // fatal error - $class_td = 'class="err"'; - } else { - $class_td = 'class="warn"'; - } - echo ''; - } - ?> - - - - ', number_format($line['jobfiles']), ''; - ?> - - ', $this->convBytes($line['jobbytes']), ''; - ?> - - --'; - else { - if ( $line['reviewed'] > 0 ) { - // reviewed icon - echo ''; - } -?> - - - -
       translate->_("Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?>
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?>
    - baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Restore Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); - echo '" title="', $this->translate->_("Re-run Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - "> - - - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    OK', - $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>'; - echo '', $this->translate->_('; - } else - echo ''; - echo '', $this->escape($line['joberrors']), '
    - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file +
    + +
    +

    + + result): ?> +

    + + + + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; + } + elseif ( $line['jobstatus'] == 'T' ) { + echo ''; + } else { + // Errors like no, but something is wrong + if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { + // fatal error + $class_td = 'class="text-center danger"'; + } else { + $class_td = 'class="text-center warning"'; + } + echo ''; + } + ?> + + + + ', number_format($line['jobfiles']), ''; + ?> + + ', $this->convBytes($line['jobbytes']), ''; + ?> + + + '; + else { + if ( $line['reviewed'] > 0 ) { + // reviewed icon + echo ''; + } + ?> + + + +
      translate->_("Job Id"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Log"); ?>
    + baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Restore Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + + baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); + echo '" title="', $this->translate->_("Re-run Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + + "> + + + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    OK', + $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>'; + echo '', $this->translate->_('; + } else + echo ''; + echo '
    +
    + + + + +
    +

    + + translate->_("No Jobs found.");; ?> +

    +
    + + + + +

    +
    +
    + diff --git a/application/views/scripts/job/terminated.phtml b/application/views/scripts/job/terminated.phtml old mode 100644 new mode 100755 index 510e64612..02b533414 --- a/application/views/scripts/job/terminated.phtml +++ b/application/views/scripts/job/terminated.phtml @@ -1,233 +1,274 @@ +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + result ): ?> + +

    + + + + + + + + + + + + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + ', + $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; + } + elseif ( $line['jobstatus'] == 'T' ) { + echo ''; + } else { + // Errors like no, but something is wrong + if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { + // fatal error + $class_td = 'class="text-center danger"'; + } else { + $class_td = 'class="text-center warning"'; + } + echo ''; + } + ?> + + + + ', number_format($line['jobfiles']), ''; + ?> + + ', $this->convBytes($line['jobbytes']), ''; + ?> - result ): ?> + ', $this->convBytes($line['filesize']), ''; + ?> -
       translate->_("Job Id"); ?> + show_job_description) { + case 0 : + echo $this->translate->_("Job Name"); + break; + case 1 : + echo $this->translate->_("Short Job Description"); + break; + case 2 : + echo $this->translate->_("Job Name"), ' /
    ', + $this->translate->_("Short Job Description"); + break; + default : + echo $this->translate->_("Job Name"); + break; + } + ?> +
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes Stored"); ?> translate->_("Bytes Copied"); ?> translate->_("Software Compression"); ?> translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?> translate->_("End Time"); ?> translate->_("Duration"); ?>
     
    + baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); + echo '" title="', $this->translate->_("Restore Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + + baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); + echo '" title="', $this->translate->_("Re-run Job"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> + + "> + + + + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + echo $this->escape($line['jobname']); + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($line['short_desc']) ) + echo '', $this->escape($line['jobname']), ''; + else + echo $this->escape($line['short_desc']); + break; + case 2 : + // both + echo $this->escape($line['jobname']); + if ( !empty($line['short_desc']) ) + echo '
    ', $this->escape($line['short_desc']), ''; + break; + default : + echo $this->escape($line['jobname']); + break; + } + ?> +
    OK', + $this->translate->_( $this->escape($line['jobstatuslong']) ), 'escape($line['level']);?>
    - - - - - - - - - - - - - - - - - - - - - -result as $line) : ?> - - - - + ', $this->escape( number_format((1-($jobbytes/$filesize))*100,2) ), ' %'; + } else { + echo ''; + } + ?> + + -'; + else { + if ( $line['reviewed'] > 0 ) { + // reviewed icon + echo ''; + } + ?> + + + + + + - - + + + + + + +
    escape($this->title); ?>
       translate->_("Job Id"); ?> - show_job_description) { - case 0 : - echo $this->translate->_("Job Name"); - break; - case 1 : - echo $this->translate->_("Short Job Description"); - break; - case 2 : - echo $this->translate->_("Job Name"), ' /
    ', - $this->translate->_("Short Job Description"); - break; - default : - echo $this->translate->_("Job Name"); - break; - } - ?> -
    translate->_("Status"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Errors"); ?> translate->_("Client"); ?> translate->_("Pool"); ?> translate->_("Start Time"); ?> translate->_("End Time"); ?> translate->_("Duration"); ?>
    translate->_("hh-mm-ss"); ?>
     
    - baseUrl, '/restorejob/main-form/jobid/', $this->escape($line['jobid']); - echo '" title="', $this->translate->_("Restore Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - baseUrl, '/job/run-job/jobname/', $this->escape($line['jobname']); - echo '" title="', $this->translate->_("Re-run Job"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - "> - - - -'; + echo '', $this->translate->_('; + } else + echo ''; + echo '', $this->escape($line['joberrors']), ' + baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']), + "/name/", $this->escape($line['poolname']); + echo '" title="', $this->translate->_("Detail Pool"), '">'; + } else { + echo " "; + } + + if ( isset($line['poolid']) && isset($line['poolname']) ) { + echo $this->escape($line['poolname']); + echo ''; + } else { + echo ' '; + } + ?> + escape(date($this->datetime_format, strtotime($line['starttime'])));?>escape(date($this->datetime_format, strtotime($line['endtime'])));?> escape($line['durationtime']);?> - show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - echo $this->escape($line['jobname']); - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($line['short_desc']) ) - echo '', $this->escape($line['jobname']), ''; - else - echo $this->escape($line['short_desc']); - break; - case 2 : - // both - echo $this->escape($line['jobname']); - if ( !empty($line['short_desc']) ) - echo '
    ', $this->escape($line['short_desc']), ''; - break; - default : - echo $this->escape($line['jobname']); - break; - } - ?> -
    + "> + baseUrl, '/wblogbook/writelogbook/name_job/', $this->escape($line['jobname']), + '/endtime/', $this->escape($line['endtime']), + '/jobid/', $this->escape($line['jobid']), + '/joberrors/', $this->escape($line['joberrors']); + echo '" title="', $this->translate->_("Written in Logbook"), '">'; + echo '', $this->translate->_('; + echo ''; + } + ?> +
    +
    + + - - ', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ' '; - } - elseif ( $line['jobstatus'] == 'T' ) { - echo 'OK'; - } else { - // ошибок вроде нет, но что-то не в порядке - if ( ($line['jobstatus'] == 'f') OR ($line['jobstatus'] == 'E') ) { - // fatal error - $class_td = 'class="err"'; - } else { - $class_td = 'class="warn"'; - } - echo '', - $this->translate->_( $this->escape($line['jobstatuslong']) ), ''; - } - ?> - - escape($line['level']);?> - - ', number_format($line['jobfiles']), ''; - ?> - - ', $this->convBytes($line['jobbytes']), ''; - ?> - - --'; - else { - if ( $line['reviewed'] > 0 ) { - // reviewed icon - echo ''; - echo '', $this->translate->_('; - } else - echo ''; - echo '', $this->escape($line['joberrors']), ''; - } -?> - - - - - baseUrl, "/volume/find-pool-id/id/", $this->escape($line['poolid']), - "/name/", $this->escape($line['poolname']); - echo '" title="', $this->translate->_("Detail Pool"), '">'; - } else { - echo " "; - } - - if ( isset($line['poolid']) && isset($line['poolname']) ) { - echo $this->escape($line['poolname']); - echo ''; - } else { - echo ' '; - } - ?> - - -  escape($line['starttime']);?>  -  escape($line['endtime']);?>  -  escape($line['durationtime']);?>  - - - baseUrl, '/wblogbook/writelogbook/name_job/', $this->escape($line['jobname']), - '/endtime/', $this->escape($line['endtime']), - '/jobid/', $this->escape($line['jobid']), - '/joberrors/', $this->escape($line['joberrors']); - echo '" title="', $this->translate->_("Written in Logbook"), '">'; - echo '', $this->translate->_('; - echo ''; - } - ?> - - - - - - - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -

    - translate->_("See List last 20 Jobs run"); ?>

    -
    -
    -
    - \ No newline at end of file + +
    +

    + + translate->_("No Jobs found.");; ?> +

    +

    + translate->_("See List last 20 Jobs run"); ?> + +

    +
    + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/job/timeline-dashboard.phtml b/application/views/scripts/job/timeline-dashboard.phtml old mode 100644 new mode 100755 index d7fa22d7c..b5a0487d1 --- a/application/views/scripts/job/timeline-dashboard.phtml +++ b/application/views/scripts/job/timeline-dashboard.phtml @@ -1,58 +1,69 @@ - - -

    - - escape($this->title); ?> - -

    - -img_map ) : ?> -
    - - img_map); - for ($i = 0; $i < $count; $i++) : - ?> -show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($this->img_map[$i]['short_desc']) ) - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - else - $title_alt = $this->escape($this->img_map[$i]['short_desc']); - break; - case 2 : - // both - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - if ( !empty($this->img_map[$i]['short_desc']) ) - $title_alt .= ' : '. $this->escape($this->img_map[$i]['short_desc']); - break; - default : - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - break; - } - ?> - href="baseUrl, '/job/detail/jobid/', $this->img_map[$i]['jobid'];?>" - alt="" - title="" - shape=rect coords="img_map[$i]['x1'], ',', $this->img_map[$i]['y1'], ',', - $this->img_map[$i]['x2'], ',', $this->img_map[$i]['y2'];?>"> - - - baseUrl, '/chart/timeline-dashboard" alt="', $this->escape($this->title), '" usemap="#map1" border="0" />'; - ?> -
    - - - \ No newline at end of file +
    + +
    +

    +

    + + + + +
    + + + img_map ) : ?> +
    + + img_map); + for ($i = 0; $i < $count; $i++) : + ?> + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($this->img_map[$i]['short_desc']) ) + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + else + $title_alt = $this->escape($this->img_map[$i]['short_desc']); + break; + case 2 : + // both + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + if ( !empty($this->img_map[$i]['short_desc']) ) + $title_alt .= ' : '. $this->escape($this->img_map[$i]['short_desc']); + break; + default : + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + break; + } + ?> + href="baseUrl, '/job/detail/jobid/', $this->img_map[$i]['jobid'];?>" + alt="" + title="" + shape=rect coords="img_map[$i]['x1'], ',', $this->img_map[$i]['y1'], ',', + $this->img_map[$i]['x2'], ',', $this->img_map[$i]['y2'];?>"> + + + baseUrl, '/chart/timeline-dashboard" alt="', $this->escape($this->title), '" usemap="#map1" border="0" />'; + ?> +
    + + +
    +
    +

    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/job/timeline.phtml b/application/views/scripts/job/timeline.phtml old mode 100644 new mode 100755 index fb75daee8..8d8958fc7 --- a/application/views/scripts/job/timeline.phtml +++ b/application/views/scripts/job/timeline.phtml @@ -1,8 +1,7 @@ - - -
    - - - - - - - - - - - - - -
    escape($this->title); ?>
    - translate->_("Date"); ?> - - "> - <?php echo $this->translate->_(" border="0" hspace="0" align="absmiddle"> - - - "> - <?php echo $this->translate->_(" border="0" hspace="0" align="absmiddle"> - - - " - style="margin-right:0.5em;"> - <?php echo $this->translate->_(" border="0" hspace="0" align="absmiddle"> - - -formText('datetimeline', $this->datetimeline, array('size' => 12)) ?> - - "> -
    translate->_("YYYY-MM-DD"); ?>
    -
    - -img_map ) : ?> - - translate->_("Point mouse cursor at image area and click to view Job detail"); ?> -
    - - img_map); - for ($i = 0; $i < $count; $i++) : - ?> -show_job_description) { - case 0 : - // only show Bacula Job Name (behavior as in earlier versions) - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - break; - case 1 : - // only show human readable short Job description instead of Bacula Job Name - if ( empty($this->img_map[$i]['short_desc']) ) - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - else - $title_alt = $this->escape($this->img_map[$i]['short_desc']); - break; - case 2 : - // both - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - if ( !empty($this->img_map[$i]['short_desc']) ) - $title_alt .= ' : '. $this->escape($this->img_map[$i]['short_desc']); - break; - default : - $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; - break; - } - ?> - href="baseUrl, '/job/detail/jobid/', $this->img_map[$i]['jobid'];?>" - alt="" - title="" - shape=rect coords="img_map[$i]['x1'], ',', $this->img_map[$i]['y1'], ',', - $this->img_map[$i]['x2'], ',', $this->img_map[$i]['y2'];?>"> - - - - -datetimeline ) { - // show image - echo '', $this->escape($this->title), ''; - } else { - // не прошел валидацию; вывод причин этого - foreach ($this->err_msg as $message) { - echo "$message
    "; - } - echo $this->translate->_('No Jobs found.'); - } -?> - -
    -
    -

    - - translate->_('ERROR: The GD extension isn`t loaded. Please install php-gd package.'); ?> -

    -
    -
    - - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + +

    + + + + + + + + + + + + + + +
    + translate->_("Date"); ?> + + "> + <?php echo $this->translate->_(" border="0" hspace="0" align="absmiddle"> + + + "> + <?php echo $this->translate->_(" border="0" hspace="0" align="absmiddle"> + + + " + style="margin-right:0.5em;"> + <?php echo $this->translate->_(" border="0" hspace="0" align="absmiddle"> + + + formText('datetimeline', $this->datetimeline, array('size' => 12)) ?> + +    "> +
    + translate->_("YYYY-MM-DD"); ?> +
    +
    + +
    + + + + +
    + img_map ) : ?> + + translate->_("Point mouse cursor at image area and click to view Job detail"); ?> +
    + + img_map); + for ($i = 0; $i < $count; $i++) : + ?> + show_job_description) { + case 0 : + // only show Bacula Job Name (behavior as in earlier versions) + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + break; + case 1 : + // only show human readable short Job description instead of Bacula Job Name + if ( empty($this->img_map[$i]['short_desc']) ) + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + else + $title_alt = $this->escape($this->img_map[$i]['short_desc']); + break; + case 2 : + // both + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + if ( !empty($this->img_map[$i]['short_desc']) ) + $title_alt .= ' : '. $this->escape($this->img_map[$i]['short_desc']); + break; + default : + $title_alt = '('. $this->img_map[$i]['jobid'] .') '. $this->img_map[$i]['name']; + break; + } + ?> + href="baseUrl, '/job/detail/jobid/', $this->img_map[$i]['jobid'];?>" + alt="" + title="" + shape=rect coords="img_map[$i]['x1'], ',', $this->img_map[$i]['y1'], ',', + $this->img_map[$i]['x2'], ',', $this->img_map[$i]['y2'];?>"> + + + + + datetimeline ) { + // show image + echo '', $this->escape($this->title), ''; + } else { + // Did not pass validation; Conclusion of the reasons for this + foreach ($this->err_msg as $message) { + echo "$message
    "; + } + echo $this->translate->_('No Jobs found.'); + } + ?> +
    +
    + + + + +
    +

    + + translate->_('ERROR: The GD extension isn`t loaded. Please install php-gd package.'); ?> +

    +
    + + + + + + + +
    +

    + + translate->_("No Jobs found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/log/view-log-id.phtml b/application/views/scripts/log/view-log-id.phtml old mode 100644 new mode 100755 index 2ac2c8905..e9ccbd038 --- a/application/views/scripts/log/view-log-id.phtml +++ b/application/views/scripts/log/view-log-id.phtml @@ -1,25 +1,50 @@ -

    escape($this->title); ?>

    + -result): ?> +
    +
    + + +
    +
    + escape($this->title); ?> +
    +
    + +translate->_("Director output:"); ?> - +result): ?> + +
     result as $line) {
             //echo $this->escape($line['logtime']) . "   " . rtrim( $this->escape($line['logtext']) , "\r\n\t \0") . "
    "; $line = $this->escape($line['logtime']) . " " . rtrim($line['logtext'] , "\r\n\t \0"); if(preg_match ("/ERR/", $line)) { - echo '
    ' . $line . '

    '; + echo '
    ' . $line . '
    '; } else { echo $line, '
    '; } } ?> -
    + +

    translate->_("No Console messages found."); ?>

    + + + + + + \ No newline at end of file diff --git a/application/views/scripts/msg-note.phtml b/application/views/scripts/msg-note.phtml old mode 100644 new mode 100755 index 98e80eef5..8bc10ea4f --- a/application/views/scripts/msg-note.phtml +++ b/application/views/scripts/msg-note.phtml @@ -1,4 +1,30 @@ -

    - escape($this->msg);?> -

    -

    \ No newline at end of file + +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + +

    +

    + + escape($this->msg) ?> +

    +
    + + +
    +
    + +
    + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/pagination_ctrl.phtml b/application/views/scripts/pagination_ctrl.phtml old mode 100644 new mode 100755 index cec3e6c51..0b9157184 --- a/application/views/scripts/pagination_ctrl.phtml +++ b/application/views/scripts/pagination_ctrl.phtml @@ -1,44 +1,55 @@ - translate = Zend_Registry::get('translate'); ?> +
    pageCount): ?> -
    -

    -firstItemNumber, ' -- ', $this->lastItemNumber, ' ', $this->translate->_('of'), ' ', $this->totalItemCount, ' ', - $this->translate->_('file(s)'); -?> -

    - -previous)): ?> - url(array('page' => $this->first)),'">', $this->translate->_('First'), '  '; ?> - +
    +
    + " . $this->translate->_('Showing') . ": " . $this->firstItemNumber, ' - ', $this->lastItemNumber, ' ', $this->translate->_('of'), ' ', $this->totalItemCount . ""; + //$this->translate->_('file(s)'); + ?> +
    +
    + +
    + +
    - -previous)): ?> - url(array('page' => $this->previous)), '">< ', $this->translate->_('Previous'), '  '; ?> - -pagesInRange as $page): ?> - current): ?> - url(array('page' => $page)), '"> ', $page, ''; ?>  - -   - - - - -next)): ?> - url(array('page' => $this->next)), '">', $this->translate->_('Next >'), '  '; ?> - - - -next)): ?> - url(array('page' => $this->last)), '">', $this->translate->_('Last'); ?> - -
    - +
    + \ No newline at end of file diff --git a/application/views/scripts/pool/all.phtml b/application/views/scripts/pool/all.phtml old mode 100644 new mode 100755 index d40d839e6..470acba69 --- a/application/views/scripts/pool/all.phtml +++ b/application/views/scripts/pool/all.phtml @@ -1,55 +1,71 @@ - -

    escape($this->title); ?>

    - -baseUrl . '/pool/all'; ?> - -
    - - - - - - - - - - - - - - -pools as $pool) : ?> - - - - - - escape($pool['numvols']) <= 0 ) - echo ''; - else - echo ''; - ?> - - - - -  '; - else - echo '"; - ?> - - - - - - - -
    translate->_("Name Pool"); ?> translate->_("Label Format"); ?> translate->_("Number
    Volumes"); ?>
    translate->_("Accept
    Any
    Volume"); ?>
    translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Max
    Volume
    (Bytes)"); ?>
    translate->_("Auto Prune"); ?> translate->_("Auto Recycle"); ?> translate->_("Type"); ?>
    - "> - escape($pool['name']); ?> - escape($pool['labelformat']);?>' . $this->escape($pool['numvols']) . '' . $this->escape($pool['numvols']) . 'int2Char($this->escape($pool['acceptanyvolume']));?>convSecondsToDays($this->escape($pool['volretention']));?>' . $this->convBytes($this->escape($pool['maxvolbytes'])) . "int2Char($this->escape($pool['autoprune']));?>int2Char($this->escape($pool['recycle']));?>escape($pool['pooltype']);?>
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + baseUrl . '/pool/all';?> +

    + + + + + + + + + + + + + + + + pools as $pool) : ?> + + + + escape($pool['numvols']) <= 0 ) { + echo ''; + } else { + echo ''; + } + ?> + + ' . $this->translate->_('unlimited') . ''; + } else { + echo '"; + } + ?> + + ' . $this->translate->_('unlimited') . ''; + } else { + echo '"; + } + ?> + + + + + + +
    translate->_("Name Pool"); ?>translate->_("Label Format"); ?>translate->_("Number
    Volumes"); ?>
    translate->_("Max
    Volumes"); ?>
    translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Max
    Volume
    (Bytes)"); ?>
    translate->_("Auto Prune"); ?>translate->_("Auto Recycle"); ?>translate->_("Type"); ?>
    + "> + escape($pool['name']); ?> + escape($pool['labelformat']);?>' . $this->escape($pool['numvols']) . '' . $this->escape($pool['numvols']) . '' . $this->escape($pool['maxvols']) . "convSecondsToDays($this->escape($pool['volretention'])) . ' ' . $this->translate->_('days');?>' . $this->convBytes($this->escape($pool['maxvolbytes'])) . "translate->_($this->int2Char($this->escape($pool['autoprune'])));?>translate->_($this->int2Char($this->escape($pool['recycle'])));?>escape($pool['pooltype']);?>
    +
    +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/pool/show.phtml b/application/views/scripts/pool/show.phtml new file mode 100755 index 000000000..75e697e8a --- /dev/null +++ b/application/views/scripts/pool/show.phtml @@ -0,0 +1,62 @@ + +
    +
    +
    +
    + escape($this->title . ": " . $this->poolname); ?> +
    +
    +

    + result_error ): ?> + + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/restorejob/draw-file-tree.phtml b/application/views/scripts/restorejob/draw-file-tree.phtml old mode 100644 new mode 100755 index ca7d6c331..032b1b52b --- a/application/views/scripts/restorejob/draw-file-tree.phtml +++ b/application/views/scripts/restorejob/draw-file-tree.phtml @@ -1,99 +1,82 @@ - - - -
    - - - translate->_("For restore"); ?>
    - translate->_("Size:"); ?> convBytes($this->total_size); ?>, - translate->_("Count:"); ?> total_files; ?> - - -
    - - - - - -
    -
    - formSubmit('ok1', $this->translate->_('Restore Job') . '...', array('class' => 'prefer_btn', 'style'=>'margin-top: 0px; margin-bottom: 0px;')); ?> -
    -
           -
    - formSubmit('cancel1', $this->translate->_('Cancel') ); ?> -
    -
    - - -
    - - - - - - - - - - - -curdir) && ($this->curdir != '/') ): ?> - - - - - - - - - -adir as $key=>$line) : - if ( empty($line['dir']) ) continue; - - $i++; - if ($i & 1) - $cl = 'cl1'; // odd / нечет - else - $cl = 'cl2'; // even / чет -?> - - - - - - - - - - - - - -afile as $key=>$line) : - if ( !empty($key) ) : - $i++; - if ($i & 1) - $cl = 'cl1'; // odd / нечет - else - $cl = 'cl2'; // even / чет -?> - - - - - - - - - -
    - -
    translate->_("Last action:"); ?>
      -
    -
    - -
    - cd formText('curdir', $this->curdir, array('size' => 70)) ?> - formSubmit('ok1', $this->translate->_('Change dir') ); ?> -
    -
      -
    -
    - - - .. translate->_("[Parent Directory]"); ?> -
    -
     
    - curdir . $line['dir']) . "/'" . ')">'; - } else { - echo 'curdir . $line['dir']) . "/'" . ')">'; - } - ?> - -
    - - - -
    -
    - homebrewBase64($st_dev) == 0 ) { - // OS : windows - echo date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)); - } - else { - // OS : linux/unix - echo $this->permissionOctal2String(($decode->homebrewBase64($st_mode))) . "  " . - $decode->homebrewBase64($st_uid) . "  " . - $decode->homebrewBase64($st_gid) . "  " . - date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)); - } - } - - ?> -
    - '; - } else { - echo ''; - } - ?> - - - - - homebrewBase64($st_dev) == 0 ) { - // OS : windows - echo date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) . "  " . - $this->convBytes($decode->homebrewBase64($st_size)); - } - else { - // OS : linux/unix - echo $this->permissionOctal2String(($decode->homebrewBase64($st_mode))) . "  " . - $decode->homebrewBase64($st_uid) . "  " . - $decode->homebrewBase64($st_gid) . "  " . - date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) . "  " . - $this->convBytes($decode->homebrewBase64($st_size)); - } - ?> - -
    - -
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +
    + + + + + + + + + + +
    + + translate->_("For restore"); ?>
    + translate->_("Size:"); ?> convBytes($this->total_size); ?>, + translate->_("Count:"); ?> total_files; ?> + +
    + + + + + + + + +
    +
    + formSubmit('ok1', $this->translate->_('Restore Job'), array('class' => 'btn btn-default')); ?> +
    +
           +
    + formSubmit('cancel1', $this->translate->_('Cancel'), array('class' => 'btn btn-default') ); ?> +
    +
    + + +
    + + + +
    + + + + + + + + + curdir) && ($this->curdir != '/') ): ?> + + + + + + + + + + adir as $key=>$line) : + if ( empty($line['dir']) ) continue; + + $i++; + if ($i & 1) + $cl = 'odd'; // odd + else + $cl = 'even'; // even + ?> + + + + + + + + + + + afile as $key=>$line) : + if ( !empty($key) ) : + $i++; + if ($i & 1) + $cl = 'odd'; // odd + else + $cl = 'even'; // even + ?> + + + + + + + + + +
    + +
    translate->_("Last action:"); ?>
    + +
    +
    + cd formText('curdir', $this->curdir, array('size' => 70, 'class' => 'form-control', 'style' => 'width:30em;')) ?> + formSubmit('ok1', $this->translate->_('Change dir'), array('class' => 'btn btn-default') ); ?> +
    +
    +
    +
    +
    + + + .. translate->_("[Parent Directory]"); ?> +
    +
     
    + curdir . $line['dir']) . "/'" . ')">'; + } else { + echo 'curdir . $line['dir']) . "/'" . ')">'; + } + ?> + +
    + + + +
    +
    + homebrewBase64($st_dev) == 0 ) { + // OS : windows + echo date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)); + } else { + // OS : linux/unix + echo $this->permissionOctal2String(($decode->homebrewBase64($st_mode))) . "  " . + $decode->homebrewBase64($st_uid) . "  " . + $decode->homebrewBase64($st_gid) . "  " . + date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)); + } + } + ?> +
    + '; + } else { + echo ''; + } + ?> + + + + + homebrewBase64($st_dev) == 0 ) { + // OS : windows + echo date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) . "  " . + $this->convBytes($decode->homebrewBase64($st_size)); + } + else { + // OS : linux/unix + echo $this->permissionOctal2String(($decode->homebrewBase64($st_mode))) . "  " . + $decode->homebrewBase64($st_uid) . "  " . + $decode->homebrewBase64($st_gid) . "  " . + date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) . "  " . + $this->convBytes($decode->homebrewBase64($st_size)); + } + ?> +
    +
    +
    +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/application/views/scripts/restorejob/list-recent-restore.phtml b/application/views/scripts/restorejob/list-recent-restore.phtml old mode 100644 new mode 100755 index a3afc7c51..1188a5a74 --- a/application/views/scripts/restorejob/list-recent-restore.phtml +++ b/application/views/scripts/restorejob/list-recent-restore.phtml @@ -1,94 +1,112 @@ - +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    -result): ?> - -

    escape($this->title); ?>

    -", $this->translate->_("Total"), ": ", $this->total_rows, - " ", $this->translate->_("file(s)"), ", ", $this->convBytes($this->total_size), "" ; -?> - -
    - msgNoValid) ) : ?> -
    -
    -

    - msgNoValid; ?>

    -
    -
    -
    - - -form;?> - -
    - - - - - - - - - - - -result as $line) : ?> - -homebrewBase64($st_dev) == 0 ) { - // OS : windows - echo '', - ''; - } - else { - // OS : linux/unix - echo ''; - } -?> - - - - - - - -
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , - $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , - $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', - date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', - $this->convBytes($decode->homebrewBase64($st_size)), 'escape($line['path'] . $line['name']);?>   -   escape($line['fileid']) ?>  
    - -total_pages > 1 ) { - - // Make links - - for( $i = 1 ; $i <= $this->total_pages ; $i++ ) { - if ( $i == $this->current_page ) - echo $i; - else - echo '' . $i . ""; - - echo "  \n"; - } -} -?> - - -
    -
    -

    - translate->_("No Files found."); ?>

    -
    -
    -
    - \ No newline at end of file + + result): ?> + + ", $this->translate->_("Total"), ": ", $this->total_rows, + " ", $this->translate->_("file(s)"), ", ", $this->convBytes($this->total_size), "" ; + ?> + + msgNoValid) ) : ?> + + +
    +

    + + msgNoValid; ?> +

    +
    + + + + + form;?> +
    +
    + + + + + + + + + + result as $line) : ?> + + homebrewBase64($st_dev) == 0 ) { + // OS : windows + echo '', + ''; + } + else { + // OS : linux/unix + echo ''; + } + ?> + + + + + + +
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , + $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , + $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', + date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', + $this->convBytes($decode->homebrewBase64($st_size)), 'escape($line['path'] . $line['name']);?> + escape($line['fileid']) ?>
    +
    + +
    +
      + total_pages > 1 ) { + // Make links + for( $i = 1 ; $i <= $this->total_pages ; $i++ ) { + if ( $i == $this->current_page ){ + echo '
    • ' . $i . "
    • "; + } else { + echo '
    • ' . $i . "
    • "; + } + } + } + ?> +
    +
    + + + + +
    +

    + + translate->_("No Files found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/restorejob/list-restore.phtml b/application/views/scripts/restorejob/list-restore.phtml old mode 100644 new mode 100755 index e2e4be698..753d62e85 --- a/application/views/scripts/restorejob/list-restore.phtml +++ b/application/views/scripts/restorejob/list-restore.phtml @@ -1,94 +1,112 @@ - +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    -result): ?> + + result): ?> + + ", $this->translate->_("Total"), ": ", $this->total_rows, + " ", $this->translate->_("file(s)"), ", ", $this->convBytes($this->total_size), "" ; + ?> + + msgNoValid) ) : ?> + + +

    +

    + + msgNoValid; ?> +

    +
    + + + + + form;?> +
    +
    + + + + + + + + + + result as $line) : ?> + + homebrewBase64($st_dev) == 0 ) { + // OS : windows + echo '', + ''; + } + else { + // OS : linux/unix + echo ''; + } + ?> + + + + + + +
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , + $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , + $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', + date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', + $this->convBytes($decode->homebrewBase64($st_size)), 'escape($line['path'] . $line['name']);?> + escape($line['fileid']) ?>
    +
    -

    escape($this->title); ?>

    -", $this->translate->_("Total"), ": ", $this->total_rows, - " ", $this->translate->_("file(s)"), ", ", $this->convBytes($this->total_size), "" ; -?> +
    +
      + total_pages > 1 ) { + // Make links + for( $i = 1 ; $i <= $this->total_pages ; $i++ ) { + if ( $i == $this->current_page ){ + echo '
    • ' . $i . "
    • "; + } else { + echo '
    • ' . $i . "
    • "; + } + } + } + ?> +
    +
    + + + + +
    +

    + + translate->_("No Files found."); ?> +

    +
    + + + -
    - msgNoValid) ) : ?> -
    -
    -

    - msgNoValid; ?>

    -
    -
    -
    - - -form;?> - -
    - - - - - - - - - - -result as $line) : ?> - -homebrewBase64($st_dev) == 0 ) { - // OS : windows - echo '', - ''; - } - else { - // OS : linux/unix - echo ''; - } -?> - - - - - - - -
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , - $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , - $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', - date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', - $this->convBytes($decode->homebrewBase64($st_size)), 'escape($line['path'] . $line['name']);?>   -   escape($line['fileid']) ?>  
    - - -total_pages > 1 ) { - - // Make links - - for( $i = 1 ; $i <= $this->total_pages ; $i++ ) { - if ( $i == $this->current_page ) - echo $i; - else - echo '' . $i . ""; - - echo "  \n"; - } -} -?> - - -
    -
    -

    - translate->_("No Files found."); ?>

    -
    -
    -
    - +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/restorejob/main-form.phtml b/application/views/scripts/restorejob/main-form.phtml old mode 100644 new mode 100755 index 52248997b..83cab4128 --- a/application/views/scripts/restorejob/main-form.phtml +++ b/application/views/scripts/restorejob/main-form.phtml @@ -1,5 +1,4 @@ - - - - + clients ) { - foreach($this->clients as $client) { - $aclients[$this->escape($client['name'])] = $this->escape($client['name']); - } + foreach($this->clients as $client) { + $aclients[$this->escape($client['name'])] = $this->escape($client['name']); + } } - if ( empty($aclients) ) { $aclients[] = ''; } + if ( empty($aclients) ) { $aclients[] = ''; } - // create array filesets for Form - if ( $this->filesets ) { - foreach($this->filesets as $fileset) { - $afilesets[$this->escape($fileset['fileset'])] = $this->escape($fileset['fileset']); - } - } - if ( empty($afilesets) ) { $afilesets[] = ''; } + // create array filesets for Form + if ( $this->filesets ) { + foreach($this->filesets as $fileset) { + $afilesets[$this->escape($fileset['fileset'])] = $this->escape($fileset['fileset']); + } + } + if ( empty($afilesets) ) { $afilesets[] = ''; } ?> - - -
    -

    escape($this->title); ?>

    - -
    - - -

    translate->_("Restore to a specified JobId"); ?>

    -
    -msgNoJobId1) ) : ?> -
    -
    -

    - msgNoJobId1; ?>

    -
    -
    - - - - translate->_("See List last 20 Jobs run"); ?> -
    - -
    -formHidden('beginr', '1', null); ?> -
    - -
    -
    -formRadio('choice', 'restore_all', null, - array('restore_all' => $this->translate->_('Restore All files'), - 'restore_select' => $this->translate->_('Select Files for Restore') - )); ?> -
    -
    - formSubmit('ok_id', $this->translate->_('Next '), array('class' => 'prefer_btn') ), - "      "; - ?> -
    -
    - - - - - -

    translate->_("Full restore to a specified JobId"); ?>

    -
    -msgNoJobId2) ) : ?> -
    -
    -

    - msgNoJobId2; ?>

    -
    -
    - - - - translate->_("See List last 20 Jobs run"); ?> -
    -
    -formHidden('beginr', '1', null); ?> -
    - -
    -
    -formRadio('choice_full_jobid', 'restore_select_full_jobid', null, - array('restore_select_full_jobid' => $this->translate->_('Select Files for Restore') - )); ?> -
    -
    - formSubmit('ok_id_full', $this->translate->_('Next '), array('class' => 'prefer_btn') ), - "      "; - ?> -
    -
    - - - - - -

    translate->_("Restore the most recent backup for a client"); ?>

    -
    -
    - - - - - -
    -formHidden('most_recent_form', '1', null); ?> -formHidden('beginrecent', '1', null); ?> - - - formSelect('client_name_from', null, array('class' => 'ui-select', 'style' => 'width: 18em;'), $aclients) ?> -
    - - - formSelect('fileset', null, array('class' => 'ui-select', 'style' => 'width: 18em;'), $afilesets) ?> -
    - formRadio('choice_recent', 'restore_recent_all', null, - array('restore_recent_all' => $this->translate->_('Restore All files'), - 'restore_recent_select' => $this->translate->_('Select Files for Restore') )); ?> -

    -
    - formSubmit('ok_recent', $this->translate->_('Next '), array('class' => 'prefer_btn', 'style'=>'margin-top: 0px; margin-bottom: 0px;') ); ?> -
    -
    -
    - - - - - -

    translate->_("Restore backup for a client before a specified time"); ?>

    -
    -
    - - - - - - -
    -formHidden('before_time_form', '1', null); ?> -formHidden('beginrecent', '1', null); ?> - - - formSelect('client_name_from', null, array('class' => 'ui-select', 'style' => 'width: 18em;'), $aclients) ?> -
    - - - formSelect('fileset', null, array('class' => 'ui-select', 'style' => 'width: 18em;'), $afilesets) ?> -
    - translate->_("Date before"); ?> - - formText('date_before', date('Y-m-d', time()), array('size' => 10, 'maxlength' => 10)); - echo $this->formText('time_before', date('H:i:s', time()), array('size' => 8, 'maxlength' => 8)); - ?> -
    translate->_("YYYY-MM-DD HH:MM:SS"); ?>
    -
    -formRadio('choice_recent', 'restore_recent_all', null, - array('restore_recent_all' => $this->translate->_('Restore All files'), - 'restore_recent_select' => $this->translate->_('Select Files for Restore') )); ?> -
    - formSubmit('ok_time', $this->translate->_('Next '), array('class' => 'prefer_btn', 'style'=>'margin-top: 0px; margin-bottom: 0px;')); ?> -
    -
    -
    - - - -
    - -
    +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    +

    + +
    + +
    +
    + + +
    + msgNoJobId1) ) : ?> + + +
    +

    + + msgNoJobId1; ?> +

    +
    + + + + + + translate->_("See List last 20 Jobs run"); ?> +
    + +
    + formHidden('beginr', '1', null); ?> +
    + +
    +
    + formRadio('choice', 'restore_all', array('class' => ''), + array('restore_all' => $this->translate->_('Restore All files'), + 'restore_select' => $this->translate->_('Select Files for Restore') + ) + ); + ?> +
    +
    + formSubmit('ok_id', $this->translate->_('Next '), array('class' => 'btn btn-default') ); + ?> +
    +
    + + +
    +
    +
    + + + +
    + +
    +
    + + +
    + msgNoJobId2) ) : ?> + + +
    +

    + + msgNoJobId2; ?> +

    +
    + + + + + + translate->_("See List last 20 Jobs run"); ?> +
    +
    + formHidden('beginr', '1', null); ?> +
    + +
    +
    + formRadio('choice_full_jobid', 'restore_select_full_jobid', null, + array('restore_select_full_jobid' => $this->translate->_('Select Files for Restore') + )); ?> +
    +
    + formSubmit('ok_id_full', $this->translate->_('Next '), array('class' => 'btn btn-default') ); + ?> +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + +
    + formHidden('most_recent_form', '1', null); ?> + formHidden('beginrecent', '1', null); ?> + + + formSelect('client_name_from', null, array('style' => 'width: 18em;'), $aclients) ?> +
    + + + formSelect('fileset', null, array('style' => 'width: 18em;'), $afilesets) ?> +
    + formRadio('choice_recent', 'restore_recent_all', null, + array('restore_recent_all' => $this->translate->_('Restore All files'), + 'restore_recent_select' => $this->translate->_('Select Files for Restore') )); ?> +
    + formSubmit('ok_recent', $this->translate->_('Next '), array('class' => 'btn btn-default') ); ?> +
    +
    +
    + +
    +
    +
    + + + +
    + +
    +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    + formHidden('before_time_form', '1', null); ?> + formHidden('beginrecent', '1', null); ?> + + + formSelect('client_name_from', null, array('style' => 'width: 18em;'), $aclients) ?> +
    + + + formSelect('fileset', null, array('style' => 'width: 18em;'), $afilesets) ?> +
    + translate->_("Date"); ?> + +
    + formText('date_before', date('Y-m-d', time()), array('size' => 10, 'maxlength' => 10, 'class' => 'form-control')) . "  "; + echo $this->formText('time_before', date('H:i:s', time()), array('size' => 8, 'maxlength' => 8, 'class' => 'form-control')); + ?> +
    + translate->_("YYYY-MM-DD HH:MM:SS"); ?> +
    +
    + formRadio('choice_recent', 'restore_recent_all', null, + array('restore_recent_all' => $this->translate->_('Restore All files'), + 'restore_recent_select' => $this->translate->_('Select Files for Restore') )); ?> +
    + formSubmit('ok_time', $this->translate->_('Next '), array('class' => 'btn btn-default')); ?> +
    +
    +
    + +
    +
    +
    + + +
    +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/restorejob/msg01.phtml b/application/views/scripts/restorejob/msg01.phtml old mode 100644 new mode 100755 index c44642aa7..03427d10b --- a/application/views/scripts/restorejob/msg01.phtml +++ b/application/views/scripts/restorejob/msg01.phtml @@ -1,40 +1,51 @@ - -

    escape($this->title . ' ' . $this->jobid); ?>

    - -
    - -
    -

    translate->_("Found existing temporary tables for the Restore Job with JobId"); ?> - jobid; ?>.

    -

    -translate->_("Probably someone already works above a choice of files for restoration, or these tables have not been removed since time of your last task for restoration for this JobId."); ?> -

    -

    translate->_("Choose the action:"); ?>

    - -formRadio('choice', 'recreate_tmp', null, - array( - 'recreate_tmp' => $this->translate->_('Recreate temporary tables (recommended)'), - 'continue_tmp' => $this->translate->_('Continue with the old temporary tables'), - 'goto_homepage' => $this->translate->_('Exit') - )); -?> -
    -

    formSubmit('ok1', 'OK'); ?> -
    -
    - -
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title . ' ' . $this->jobid); ?> +
    +
    +

    +

    +

    + + translate->_("An error occurred while restoring!"); ?> +

    +

    + translate->_("Found existing temporary tables for the Restore Job with JobId"); ?> + jobid; ?>. +
    + translate->_("Probably someone already works above a choice of files for restoration, or these tables have not been removed since time of your last task for restoration for this JobId."); ?> +

    + translate->_("Choose the action:"); ?> +
    + formRadio('choice', 'recreate_tmp', null, + array( + 'recreate_tmp' => $this->translate->_('Recreate temporary tables (recommended)'), + 'continue_tmp' => $this->translate->_('Continue with the old temporary tables'), + 'goto_homepage' => $this->translate->_('Exit') + )); + ?> +
    + formSubmit('ok1', $this->translate->_('OK'), array('class' => 'btn btn-default') ); ?> +
    +

    +
    +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/restorejob/msg02session.phtml b/application/views/scripts/restorejob/msg02session.phtml old mode 100644 new mode 100755 index 209f10ef2..748088e5a --- a/application/views/scripts/restorejob/msg02session.phtml +++ b/application/views/scripts/restorejob/msg02session.phtml @@ -1,15 +1,26 @@ -
    -
    -

    - translate->_("Session of Restore backup is expired.
    Increase ttl_restore_session in your config.ini."); - ?> -

    -
    -
    -
    - formSubmit('ok1', 'OK'); ?> -
    -
    -
    \ No newline at end of file +
    +
    +
    +
    + translate->_('Run Restore Job'); ?> +
    +
    +

    +

    +

    + + translate->_("Session of Restore backup is expired.
    Increase ttl_restore_session in your config.ini."); ?> +

    +
    +
    + formSubmit('ok1', $this->translate->_('OK'), array('class' => 'btn btn-default') ); ?> +
    +
    +
    +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/restorejob/restore-all.phtml b/application/views/scripts/restorejob/restore-all.phtml old mode 100644 new mode 100755 index e071a7fc1..acdd3157b --- a/application/views/scripts/restorejob/restore-all.phtml +++ b/application/views/scripts/restorejob/restore-all.phtml @@ -1,20 +1,34 @@ +
    +
    +
    +
    + escape($this->title); ?> + + escape($this->jobid); ?> + +
    +
    +

    + msgNoValid) ) : ?> + + +

    +

    + + msgNoValid; ?> +

    +
    + + + + + form; ?> -

    escape($this->title), ' '; ?> - - escape($this->jobid); ?> -

    - -msgNoValid) ) : ?> -
    -
    -

    - msgNoValid; ?>

    -
    -
    -
    - - -form; ?> - -
    \ No newline at end of file +

    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/application/views/scripts/restorejob/restore-recent-all.phtml b/application/views/scripts/restorejob/restore-recent-all.phtml old mode 100644 new mode 100755 index 718d88581..7c45cdbdf --- a/application/views/scripts/restorejob/restore-recent-all.phtml +++ b/application/views/scripts/restorejob/restore-recent-all.phtml @@ -1,16 +1,34 @@ +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + client_from_restore; ?>
    + + fileset_restore; ?> + msgNoValid) ) : ?> + + +

    +

    + + msgNoValid; ?> +

    +
    + + + + + form;?> -

    escape($this->title), ' ', $this->client_from_restore, ' ', $this->fileset_restore; ?>

    - -msgNoValid) ) : ?> -
    -
    -

    - msgNoValid; ?>

    -
    -
    -
    - - -form;?> -
    \ No newline at end of file +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/restorejob/restore-single-file.phtml b/application/views/scripts/restorejob/restore-single-file.phtml old mode 100644 new mode 100755 index 7acc942bc..8101305e0 --- a/application/views/scripts/restorejob/restore-single-file.phtml +++ b/application/views/scripts/restorejob/restore-single-file.phtml @@ -1,10 +1,10 @@ - -file): ?> - -

    escape($this->title); ?>

    - -form;?> -
    - - - - - - - - - - - - - - -file[0]['lstat']); - - if ( $decode->homebrewBase64($st_dev) == 0 ) { - // OS : windows - echo '', - ''; - } - else { - // OS : linux/unix - echo ''; - } -?> - - - - - - - -
    translate->_("Attribute"); ?> translate->_("Name File"); ?> translate->_("File Id"); ?> translate->_("Job Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , - $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , - $decode->homebrewBase64($st_uid), "  ", $decode->homebrewBase64($st_gid),'', - date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', - $this->convBytes($decode->homebrewBase64($st_size)), 'escape($this->file[0]['path'] . $this->file[0]['filename']);?>   -   escape($this->file[0]['fileid']) ?>     escape($this->file[0]['jobid']) ?>  
    +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + file): ?> + form;?> + + +
    +

    + + + + + + + + + + + + file[0]['lstat']); + + if ( $decode->homebrewBase64($st_dev) == 0 ) { + // OS : windows + echo '', + ''; + } + else { + // OS : linux/unix + echo ''; + } + ?> + + + + + + +
    translate->_("Attribute"); ?>translate->_("Name File"); ?>translate->_("File Id"); ?>translate->_("Job Id"); ?>
    ' , date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)) , '' , + $this->convBytes($decode->homebrewBase64($st_size)) , '' , $this->permissionOctal2String(($decode->homebrewBase64($st_mode))), '' , + $decode->homebrewBase64($st_uid), " ", $decode->homebrewBase64($st_gid),'', + date("d-M-y H:i:s", $decode->homebrewBase64($st_mtime)),'', + $this->convBytes($decode->homebrewBase64($st_size)), 'escape($this->file[0]['path'] . $this->file[0]['filename']);?> + escape($this->file[0]['fileid']) ?>escape($this->file[0]['jobid']) ?>
    +
    + + + +
    +

    + + translate->_("No Files found."); ?> +

    +
    + + + - -
    -
    -

    - translate->_("No Files found."); ?>

    -
    -
    -
    - \ No newline at end of file +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/restorejob/run-restore.phtml b/application/views/scripts/restorejob/run-restore.phtml old mode 100644 new mode 100755 index e30ccb9a0..370a81db8 --- a/application/views/scripts/restorejob/run-restore.phtml +++ b/application/views/scripts/restorejob/run-restore.phtml @@ -1,60 +1,70 @@ +
    +
    +
    +
    + escape($this->title . ' ' . $this->jobname); ?> +
    +
    +

    + result_error ): ?> -

    escape($this->title . ' ' . $this->jobid); ?>

    + +
    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + -result_error ): ?> -
    -
    -

    - - result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    - - - - - -
    -translate->_("Director output:"); ?> -command_output ) - { - echo '
    ';
    -        foreach ($this->command_output as $line) {
    -            if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    -                    echo '
    ', $line, '

    '; - } else { - echo $line, '
    '; - } - } - echo '
    '; - } - ?> - -

     

    -
    -
    - formSubmit('ok1', $this->translate->_('View Running Jobs') ); ?> -
    -
    - \ No newline at end of file + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + +
    +
    + + formSubmit('ok1', $this->translate->_('View Running Jobs'), array('class' => 'btn btn-default') ); ?> +
    +
    + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/restorejob/select-backups-before-date.phtml b/application/views/scripts/restorejob/select-backups-before-date.phtml old mode 100644 new mode 100755 index b62231fa2..bc23c5306 --- a/application/views/scripts/restorejob/select-backups-before-date.phtml +++ b/application/views/scripts/restorejob/select-backups-before-date.phtml @@ -2,97 +2,118 @@ +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    +

    + + + + + + + + + +
    +
    + + formSubmit('ok', $this->translate->_('Next '), array('class' => 'btn btn-default')); ?> +
    +
        +
    + formSubmit('cancel1', $this->translate->_('Cancel'), array('class' => 'btn btn-default') ); ?> +
    +
    +
    +
    + + ajob_full): ?> +
    + + + + + + + + + + + + + + + + + + + + + + + + ajob_diff): ?> + ajob_diff as $line) : ?> + + + + + + + + + + + + + ajob_inc): ?> + ajob_inc as $line) : ?> + + + + + + + + + + + + +
    translate->_("Job Id"); ?>translate->_("Job Name"); ?>translate->_("Level"); ?>translate->_("Files"); ?>translate->_("Bytes"); ?>translate->_("Start Time"); ?>translate->_("Volume Name"); ?>
    ajob_full[0]['jobid']; ?>ajob_full[0]['jobname']; ?>ajob_full[0]['level']; ?>ajob_full[0]['jobfiles']; ?>convBytes($this->ajob_full[0]['jobbytes']); ?>escape(date($this->datetime_format, strtotime($this->ajob_full[0]['starttime'])));?>ajob_full[0]['volumename']; ?>
    convBytes($line['jobbytes']); ?>escape(date($this->datetime_format, strtotime($line['starttime'])));?>
    convBytes($line['jobbytes']); ?>escape(date($this->datetime_format, strtotime($line['starttime'])));?>
    +
    + + + + +
    +

    + + translate->_("No Jobs found.");; ?> +

    +
    + + + - - - - - -
    -

    escape($this->title); ?>

    -
    -
    - - formSubmit('ok', $this->translate->_('Next '), array('class' => 'prefer_btn', 'style'=>'margin-top: 0px; margin-bottom: 0px;')); ?> -
    -
    -
    - formSubmit('cancel1', $this->translate->_('Cancel') ); ?> -
    -
    +

    +
    +
    +
    +
    -ajob_full): ?> - - - - - - - - - - - - - - - - - - - - - - - - -ajob_diff): ?> - ajob_diff as $line) : ?> - - - - - - - - - - - - -ajob_inc): ?> - ajob_inc as $line) : ?> - - - - - - - - - - - - -
    translate->_("Job Id"); ?> translate->_("Job Name"); ?> translate->_("Level"); ?> translate->_("Files"); ?> translate->_("Bytes"); ?> translate->_("Start Time"); ?> translate->_("Volume Name"); ?>
    ajob_full[0]['jobid']; ?>ajob_full[0]['jobname']; ?>ajob_full[0]['level']; ?>ajob_full[0]['jobfiles']; ?>convBytes($this->ajob_full[0]['jobbytes']); ?>ajob_full[0]['starttime']; ?>ajob_full[0]['volumename']; ?>
    convBytes($line['jobbytes']); ?>
    convBytes($line['jobbytes']); ?>
    - - -
    -
    -

    - translate->_("No Jobs found."); ?>

    -
    -
    -
    - \ No newline at end of file diff --git a/application/views/scripts/schedule/all.phtml b/application/views/scripts/schedule/all.phtml new file mode 100755 index 000000000..f6bef919a --- /dev/null +++ b/application/views/scripts/schedule/all.phtml @@ -0,0 +1,89 @@ + +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + schedule): ?> + +

    + + + + + + + + + + + + + + + + + + + schedule as $value1) : ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    translate->_("Name"); ?>translate->_("Level"); ?>translate->_("Time"); ?>translate->_("Week Day"); ?>translate->_("Day"); ?>translate->_("Month"); ?>translate->_("Week Month"); ?>translate->_("Week Year"); ?>translate->_("Pool"); ?>translate->_("Storage"); ?>translate->_("Device"); ?>translate->_("Enabled"); ?>
    + escape($value1['name']); ?>" title="translate->_("Show Schedule");?>"> + escape($value1['name']);?> + +
    escape($value2['level']);?>escape($value2['hour']);?>escape($value2['weekday']);?>escape($value2['day']);?>escape($value2['month']);?>escape($value2['weekmonth']);?>escape($value2['weekyear']);?>escape($value2['pool']); ?> - escape($value2['storage']); ?> - escape($value2['device']); ?> - translate->_($this->int2Char($this->escape($value1['status']))); ?>
    +
    + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/schedule/show.phtml b/application/views/scripts/schedule/show.phtml new file mode 100755 index 000000000..ce9fce2ff --- /dev/null +++ b/application/views/scripts/schedule/show.phtml @@ -0,0 +1,64 @@ + +
    +
    +
    +
    + escape($this->title . ": " . $this->schedulename); ?> +
    +
    +

    + + + result_error ): ?> + + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ) { + echo '
    ';
    +                     foreach ($this->command_output as $line) {
    +                        if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                           echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } ?> + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/storage/act-mount.phtml b/application/views/scripts/storage/act-mount.phtml old mode 100644 new mode 100755 index b8ac42ed1..501d7c7ec --- a/application/views/scripts/storage/act-mount.phtml +++ b/application/views/scripts/storage/act-mount.phtml @@ -1,62 +1,69 @@ - -

    escape($this->title); ?>

    - -result_error ): ?> -
    -
    -

    - - result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - case 'BACULA_ACCESS_DENIED': - $msg = $this->translate->_('Bacula ACLs : Access denied.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    -
    - - - - - - -
    - translate->_("Director output:"); ?> - - command_output ) - { - echo '
    ';
    -        foreach ($this->command_output as $line) {
    -            if ( strpos($line, 'ERR') || strpos($line, 'not found') )   {
    -                echo '
    ' . $line . '

    '; - } else { - echo $line . '
    '; - } - } - echo '
    '; - } else { - echo '

    ', $this->translate->_("No Storage [un]mount."), '

    '; - } - ?> -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + result_error ): ?> + + +

    +

    + + result_error ) + { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + case 'BACULA_ACCESS_DENIED': + $msg = $this->translate->_('Bacula ACLs : Access denied.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) + { + foreach ($this->command_output as $line){ + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ){ + echo '
    ';
    +                  foreach ($this->command_output as $line) {
    +                     if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                        echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } else{ + echo '

    ', $this->translate->_("No Storage [un]mount."), '

    '; + } + ?> + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/storage/status-id.phtml b/application/views/scripts/storage/status-id.phtml old mode 100644 new mode 100755 index 02db631d8..c798d3b6b --- a/application/views/scripts/storage/status-id.phtml +++ b/application/views/scripts/storage/status-id.phtml @@ -1,60 +1,64 @@ - -

    escape($this->title); ?>

    - -result_error ): ?> -
    -
    -

    - - result_error ) - { - case 'ERROR_BCONSOLE': // ошибка при запуске bconsole - $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); - break; - case 'NOFOUND_BCONSOLE': // bconsole не найден - $msg = $this->translate->_('ERROR: bconsole not found.'); - break; - case 'BACULA_ACCESS_DENIED': - $msg = $this->translate->_('Bacula ACLs : Access denied.'); - break; - default: $msg = ''; - } - echo $msg; - if ( $this->command_output ) - { - foreach ($this->command_output as $line) { - echo '
    ', $line, '
    '; - } - } - ?> -

    -
    -
    -
    - - - - - -
    - translate->_("Director output:"); ?> - command_output ) - { - echo '
    ';
    -        foreach ($this->command_output as $line) {
    -            if ( strpos($line, 'ERR') || strpos($line, 'not found') )   {
    -                echo '
    ' . $line . '

    '; - } else { - echo $line . '
    '; - } - } - echo '
    '; - } else { - echo '

    ', $this->translate->_("No Storage status found."), '

    '; - } - ?> -
    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + result_error ): ?> + +

    +

    + + escape($this->title), '
    '; + switch ( $this->result_error ) { + case 'ERROR_BCONSOLE': // Error when bconsole starts + $msg = $this->translate->_('ERROR: There was a problem executing bconsole.'); + break; + case 'NOFOUND_BCONSOLE': // Bconsole not found + $msg = $this->translate->_('ERROR: bconsole not found.'); + break; + default: $msg = ''; + } + echo $msg; + if ( $this->command_output ) { + foreach ($this->command_output as $line) { + echo '
    ', $line, '
    '; + } + } + ?> +

    +
    + + + + + + translate->_("Director output:"); ?> + command_output ){ + echo '
    ';
    +                  foreach ($this->command_output as $line) {
    +                     if ( preg_match('/(ERR|not found|invalid|Expected)/i', $line) )   {
    +                        echo '
    ', $line, '

    '; + } else { + echo $line, '
    '; + } + } + echo '
    '; + } else{ + echo '

    ', $this->translate->_("No Storage status found."), '

    '; + } + ?> + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/storage/storage.phtml b/application/views/scripts/storage/storage.phtml old mode 100644 new mode 100755 index cf0f18f2e..bb8de7bc0 --- a/application/views/scripts/storage/storage.phtml +++ b/application/views/scripts/storage/storage.phtml @@ -1,158 +1,155 @@ - -

    escape($this->title); ?>

    - - - - - - - - - - - - - - - -storages as $storage) : ?> - - - - - - - - - - - - - - -
    translate->_("Mount Storage"); ?> translate->_("Name Storage"); ?> translate->_("AutoChanger"); ?> translate->_("Unmount Storage"); ?>
    - 0 ) : ?> - - - - - -"> - <?php echo $this->translate->_(" border="0" hspace="5"> - -
    -
    - translate->_("Mount Storage"), ' ', $this->escape($storage['name']); ?> -
    -
    - [x] -
    -
    - - -
    -formHidden('autochanger', '1', null); ?> -formHidden('act', 'mount', null); ?> -formHidden('name', $this->escape($storage['name']), null); ?> -
    - - -
    -
    - formSubmit('ok1', $this->translate->_('Mount Storage'), array('class' => 'prefer_btn') ); - ?> -
    - - -
    - - - - - - "> - <?php echo $this->translate->_(" border="0" hspace="5"> - -
    -   - escape($storage['storageid']), - "/name/", $this->escape($storage['name']);?>" title="translate->_("Storage Status"); ?>"> - escape($storage['name']);?> -   - - 0 ) : ?> - "> - - - - - - - - 0 ) : ?> - - - - - -"> - <?php echo $this->translate->_(" border="0" hspace="5"> - -
    -
    - translate->_("Unmount Storage"), ' ', $this->escape($storage['name']); ?> -
    -
    - [x] -
    -
    - - -
    -formHidden('autochanger', '1', null); ?> -formHidden('act', 'umount', null); ?> -formHidden('name', $this->escape($storage['name']), null); ?> -
    - -
    -
    - formSubmit('ok1', $this->translate->_('Unmount Storage'), array('class' => 'prefer_btn') ); - ?> -
    - - -
    - - - - - - - "> - <?php echo $this->translate->_(" border="0" hspace="5"> - -
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    +

    + + + + + + + + + + + storages as $storage) : ?> + + + + + + + + + + +
    translate->_("Mount"); ?>translate->_("Name Storage"); ?>translate->_("AutoChanger"); ?>translate->_("Unmount"); ?>
    + 0 ) : ?> + + + + "> + <?php echo $this->translate->_("> + + + + + + "> + <?php echo $this->translate->_(" border="0" hspace="5"> + + + + escape($storage['storageid']), + "/name/", $this->escape($storage['name']);?>" title="translate->_("Storage Status"); ?>"> + escape($storage['name']);?> + + + 0 ) : ?> + "> + + + + - + + + 0 ) : ?> + + + + "> + <?php echo $this->translate->_(" border="0" hspace="5"> + + + + + + "> + <?php echo $this->translate->_("> + + +
    +
    +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/volume/detail.phtml b/application/views/scripts/volume/detail.phtml old mode 100644 new mode 100755 index b8d06390e..9db505ba1 --- a/application/views/scripts/volume/detail.phtml +++ b/application/views/scripts/volume/detail.phtml @@ -4,254 +4,256 @@ $(document).ready(function() { $('#ok').click(function() { $.blockUI({ - message: '

    translate->_("Please wait"); ?>...

    ', - css: { backgroundColor: '#f3fcf2' }, - centerX: true, - centerY: true + message: '

    translate->_("Please wait"); ?>...

    ', + css: {border: 'none', padding: '15px', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', opacity: .5, color: '#fff' } }); }); }); -

    escape($this->title); ?>

    - - $this->translate->_("Append"), - "Full" => $this->translate->_("Full"), - "Recycle" => $this->translate->_("Recycle"), - "Purged" => $this->translate->_("Purged"), - "Read-Only" => $this->translate->_("Read-Only"), - "Disabled" => $this->translate->_("Disabled"), - "Error" => $this->translate->_("Error"), - "Busy" => $this->translate->_("Busy"), - "Used" => $this->translate->_("Used"), - "Cleaning" => $this->translate->_("Cleaning"), - "Archive" => $this->translate->_("Archive") -); -// Pools -foreach($this->pools as $pool) { - $apool[ $this->escape($pool['poolid']) ] = $this->escape($pool['name']); -} -// Recycle Flag -$arecucle = array( - '0' => "-", - '1' => "+" -); -// InChanger Flag -$ainchanger = array( - '0' => "-", - '1' => "+" -); -?> - -result): ?> - -
    - - - - - - - - - - - - -
    - - - - - - - - -result as $line) : ?> - formHidden('mediaid', $this->escape($line['mediaid']), null); ?> - formHidden('volumename', $this->escape($line['volumename']), null); ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    translate->_("Media Id"); ?> escape($line['mediaid']);?>
    translate->_("Volume Name"); ?>escape($line['volumename']);?>
    translate->_("Pool"); ?> - formSelect('poolid', $this->escape($line['poolid']), null, $apool); ?> -
    translate->_("Status"); ?> - formSelect('volstatus', $this->escape($line['volstatus']), null, $astatus); ?> -
    translate->_("Bytes"); ?> ConvBytes( $this->escape($line['volbytes']) );?>
    translate->_("Max Bytes"); ?> ConvBytes( $this->escape($line['maxvolbytes']) );?>
    translate->_("Jobs"); ?> baseUrl, '/job/find-volume-name/volname/', $this->escape($line['volumename']), '" ', - 'title="', $this->translate->_("List Jobs by Volume Name"), '">', - number_format($this->escape($line['voljobs'])), ''; ?> -
    translate->_("Retention")," (",$this->translate->_("days"), ")"; ?> - formText('volretention', $this->ConvSecondsToDays( $this->escape($line['volretention']) ), - array('size' => 5)) ?> -
    translate->_("Use Duration")," (",$this->translate->_("seconds"), ")"; ?> - formText('voluseduration', $this->escape($line['voluseduration'] ), - array('size' => 10)) ?> -
    translate->_("Recycle "); ?> formSelect('recycle', $this->escape($line['recycle']), null, $arecucle); ?>
    translate->_("Autochanger
    Slot
    number"); ?>
    formText('slot', $this->escape($line['slot']), array('size' => 5)) ?>
    translate->_("In Changer"); ?> formSelect('inchanger', $this->escape($line['inchanger']), null, $ainchanger); ?>
    translate->_("Media Type"); ?> escape($line['mediatype']);?>
    translate->_("First Written"); ?> escape($line['firstwritten']);?>
    translate->_("Last Written"); ?> escape($line['lastwritten']);?>
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - escape($line['volerrors']) == 0 ) - echo ''; - else - echo ''; - ?> - - - - - - - - - - - - escape($line['enabled']) == 0 ) - echo ''; - else - echo ''; - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    translate->_("Label Date"); ?> escape($line['labeldate']);?>
    translate->_("Files"); ?> escape($line['volfiles']);?>
    translate->_("Blocks"); ?> escape($line['volblocks']);?>
    translate->_("Mounts"); ?> escape($line['volmounts']);?>
    translate->_("Errors"); ?> ' . $this->escape($line['volerrors']) . '
    translate->_("Number of writes"); ?> escape($line['volwrites']);?>
    translate->_("Capacity"), ' ', $this->translate->_("Bytes"); ?> ConvBytes( $this->escape($line['volcapacitybytes']) );?>
    translate->_("Enabled"); ?> '.$this->translate->_("Disabled").'+
    translate->_("Max Volume Jobs"); ?> formText('maxvoljobs', $this->escape($line['maxvoljobs']), array('size' => 9)) ?>
    translate->_("Max Volume Files"); ?> formText('maxvolfiles', $this->escape($line['maxvolfiles']), array('size' => 9)) ?>
    translate->_("Read Time"); ?> escape($line['volreadtime']) != 0) { - echo $this->escape($line['volreadtime']); - } else { - echo ' '; - } - ?> -
    translate->_("Write Time"); ?> escape($line['volwritetime']) != 0) { - echo $this->escape($line['volwritetime']); - } else { - echo ' '; - } - ?> -
    translate->_("Recycle Count"); ?> escape($line['recyclecount']);?>
    translate->_("Comment"); ?> formTextarea('comment', $this->escape($line['comment']), array('cols' => "25", 'rows' => "2")); ?>
    - -
    -formSubmit('ok', $this->translate->_('Submit Form')); ?> -       -formReset('reset', $this->translate->_('Reset Form')); ?> -
    - - -
    + - -

    translate->_("No Volumes found."); ?>

    - \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + $this->translate->_("Append"), + "Full" => $this->translate->_("Full"), + "Recycle" => $this->translate->_("Recycle"), + "Purged" => $this->translate->_("Purged"), + "Read-Only" => $this->translate->_("Read-Only"), + "Disabled" => $this->translate->_("Disabled"), + "Error" => $this->translate->_("Error"), + "Busy" => $this->translate->_("Busy"), + "Used" => $this->translate->_("Used"), + "Cleaning" => $this->translate->_("Cleaning"), + "Archive" => $this->translate->_("Archive") + ); + // Pools + foreach($this->pools as $pool) { + $apool[ $this->escape($pool['poolid']) ] = $this->escape($pool['name']); + } + // Recycle Flag + $arecycle = array( + '0' => $this->translate->_("no"), + '1' => $this->translate->_("yes") + ); + // InChanger Flag + $ainchanger = array( + '0' => $this->translate->_("no"), + '1' => $this->translate->_("yes") + ); + ?> + + result): ?> + +

    + + +
    + + + + result as $line) : ?> + formHidden('mediaid', $this->escape($line['mediaid']), null); ?> + formHidden('volumename', $this->escape($line['volumename']), null); ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    translate->_("Media Id"); ?> escape($line['mediaid']);?>
    translate->_("Volume Name"); ?>escape($line['volumename']);?>
    translate->_("Pool"); ?>formSelect('poolid', $this->escape($line['poolid']), null, $apool); ?>
    translate->_("Status"); ?>formSelect('volstatus', $this->escape($line['volstatus']), null, $astatus); ?>
    translate->_("Bytes"); ?> ConvBytes( $this->escape($line['volbytes']) );?>
    translate->_("Max Bytes"); ?> ConvBytes( $this->escape($line['maxvolbytes']) );?>
    translate->_("Jobs"); ?> baseUrl, '/job/find-volume-name/volname/', $this->escape($line['volumename']), '" ', + 'title="', $this->translate->_("List Jobs by Volume Name"), '">', + number_format($this->escape($line['voljobs'])), ''; ?> +
    translate->_("Retention")," (",$this->translate->_("days"), ")"; ?> + formText('volretention', $this->ConvSecondsToDays( $this->escape($line['volretention'])),array('size' => 5, 'class' => 'form-control')) ?> +
    translate->_("Use Duration")," (",$this->translate->_("seconds"), ")"; ?> + formText('voluseduration', $this->escape($line['voluseduration'] ), array('size' => 10, 'class' => 'form-control')) ?> +
    translate->_("Recycle "); ?> formSelect('recycle', $this->escape($line['recycle']), null, $arecycle); ?>
    translate->_("Autochanger
    Slot
    Number"); ?>
    formText('slot', $this->escape($line['slot']), array('size' => 5, 'class' => 'form-control')) ?>
    translate->_("In Changer"); ?> formSelect('inchanger', $this->escape($line['inchanger']), null, $ainchanger); ?>
    translate->_("Media Type"); ?> escape($line['mediatype']);?>
    translate->_("First Written"); ?> escape(date($this->datetime_format, strtotime($line['firstwritten'])));?>
    translate->_("Last Written"); ?> escape(date($this->datetime_format, strtotime($line['lastwritten'])));?>
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + escape($line['volerrors']) == 0 ) + echo ''; + else + echo ''; + ?> + + + + + + + + escape($line['enabled']) == 0 ) + echo ''; + else + echo ''; + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    translate->_("Label Date"); ?> escape(date($this->datetime_format, strtotime($line['labeldate'])));?>
    translate->_("Files"); ?> escape($line['volfiles']);?>
    translate->_("Blocks"); ?> escape($line['volblocks']);?>
    translate->_("Mounts"); ?> escape($line['volmounts']);?>
    translate->_("Errors"); ?> ' . $this->escape($line['volerrors']) . '
    translate->_("Number of writes"); ?> escape($line['volwrites']);?>
    translate->_("Enabled"); ?> '.$this->translate->_("no").''.$this->translate->_("yes").'
    translate->_("Max Volume Jobs"); ?> formText('maxvoljobs', $this->escape($line['maxvoljobs']), array('size' => 10, 'class' => 'form-control')) ?>
    translate->_("Max Volume Files"); ?> formText('maxvolfiles', $this->escape($line['maxvolfiles']), array('size' => 10, 'class' => 'form-control')) ?>
    translate->_("Read Time"); ?> escape($line['volreadtime']) != 0) { + echo $this->escape($line['volreadtime']); + } else { + echo ' '; + } + ?> +
    translate->_("Write Time"); ?> escape($line['volwritetime']) != 0) { + echo $this->escape($line['volwritetime']); + } else { + echo ' '; + } + ?> +
    translate->_("Recycle Count"); ?> escape($line['recyclecount']);?>
    translate->_("Comment"); ?> formTextarea('comment', $this->escape($line['comment']), array('cols' => "25", 'rows' => "2", 'class' => 'form-control')); ?>
    +
    + + +
    + formSubmit('ok', $this->translate->_('Submit Form'), array('class' => 'btn btn-default')); ?> +      + formReset('reset', $this->translate->_('Reset Form'), array('class' => 'btn btn-default')); ?> +
    +
    + + + + +
    +

    + + translate->_("No Volumes found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    diff --git a/application/views/scripts/volume/find-name.phtml b/application/views/scripts/volume/find-name.phtml old mode 100644 new mode 100755 index 9ff6c1799..d2a3ba236 --- a/application/views/scripts/volume/find-name.phtml +++ b/application/views/scripts/volume/find-name.phtml @@ -1,61 +1,78 @@ - -

    escape($this->title); ?>

    - -baseUrl . "/volume/find-name/volname/" . $this->escape($this->volname); ?> - - - - - - - - - - - - - - - - - - -result as $line) : ?> - - - - escape($line['volstatus']), $aErrorVolStatus) ) - echo ''; - else - echo ''; - ?> - - - - - escape($line['voljobs']) <= 0 ) - echo ''; - else - echo ''; - ?> - - - - - - - - - - -
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    translate->_("First
    Written"); ?>
    translate->_("Last
    Written"); ?>
    translate->_("Autochanger
    Slot
    number"); ?>
    translate->_("Can Recycle
    Volume"); ?>
    - ">escape($line['volumename']);?> - - ' . $this->escape($line['volstatus']) . '' . $this->escape($line['volstatus']) . 'ConvBytes($this->escape($line['volbytes']));?>ConvBytes($this->escape($line['maxvolbytes']));?>' . number_format($this->escape($line['voljobs'])) . ' ', - number_format($this->escape($line['voljobs'])), 'ConvSecondsToDays($this->escape($line['volretention']));?>escape($line['mediatype']);?>escape($line['firstwritten']);?>escape($line['lastwritten']);?>escape($line['slot']);?>Int2Char($this->escape($line['recycle']));?>
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + baseUrl . "/volume/find-name/volname/" . $this->escape($this->volname); ?> +

    + + + + + + + + + + + + + + + + + + result as $line) : ?> + + + escape($line['volstatus']), $aErrorVolStatus) ) + echo ''; + else + echo ''; + ?> + + '.$this->translate->_('unlimited').''; + else + echo '"; + ?> + + escape($line['voljobs']) <= 0 ) + echo ''; + else + echo ''; + ?> + + + + + + + + + + +
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    translate->_("Last
    Written"); ?>
    translate->_("Autochanger
    Slot
    Number"); ?>
    translate->_("Can Recycle
    Volume"); ?>
    translate->_("Expires In"); ?>
    ">escape($line['volumename']);?> + + ' . $this->escape($line['volstatus']) . '' . $this->escape($line['volstatus']) . 'ConvBytes($this->escape($line['volbytes']));?>' . $this->convBytes($this->escape($line['maxvolbytes'])) . "' . number_format($this->escape($line['voljobs'])) . ' ', + number_format($this->escape($line['voljobs'])), 'translate->_($this->ConvSecondsToDays($this->escape($line['volretention']))).' '. $this->translate->_("days");?>escape($line['mediatype']);?>escape(date($this->datetime_format, strtotime($line['lastwritten'])));?>escape($line['slot']);?>translate->_($this->Int2Char($this->escape($line['recycle'])));?>escape(date($this->date_format, strtotime($line['expiresin'])));?>
    +
    +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/volume/find-pool-id.phtml b/application/views/scripts/volume/find-pool-id.phtml old mode 100644 new mode 100755 index 6df811414..ed2cf11b1 --- a/application/views/scripts/volume/find-pool-id.phtml +++ b/application/views/scripts/volume/find-pool-id.phtml @@ -1,71 +1,102 @@ +
    +
    +
    +
    + baseUrl . "/pool/show/name/" . $this->escape($this->pool_name); ?> + escape($this->title) . ": ".$this->escape($this->pool_name).""; ?> +
    +
    +

    + baseUrl . "/volume/find-pool-id/id/" . $this->escape($this->pool_id) . "/name/" . $this->escape($this->pool_name); ?> + result): ?> + +

    + + + + + + + + + + + + + + + + + + result as $line) : ?> + + + + escape($line['volstatus']) == 'Disabled' ) + echo ''; + elseif ( $this->escape($line['volstatus']) == 'Error' ) + echo ''; + else + echo ''; + ?> + + + '.$this->translate->_('unlimited').''; + else + echo '"; + ?> + + escape($line['voljobs']) <= 0) ) + echo ''; + else + echo ''; + ?> + + + + + + + + + + +
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    translate->_("Last
    Written"); ?>
    translate->_("Autochanger
    Slot
    Number"); ?>
    translate->_("Can Recycle
    Volume"); ?>
    translate->_("Expires In"); ?>
    + "> + escape($line['volumename']);?> + + ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>' . $this->convBytes($this->escape($line['maxvolbytes'])) . "', number_format($this->escape($line['voljobs'])), ' ', + number_format($this->escape($line['voljobs'])), 'translate->_($this->ConvSecondsToDays($this->escape($line['volretention']))).' '. $this->translate->_("days");?>escape($line['mediatype']);?>escape(date($this->datetime_format, strtotime($line['lastwritten'])));?>escape($line['slot']);?>translate->_($this->Int2Char($this->escape($line['recycle'])));?>escape(date($this->date_format, strtotime($line['expiresin'])));?>
    +
    + + -

    escape($this->title); ?>

    - -baseUrl . "/volume/find-pool-id/id/" . $this->escape($this->pool_id) . "/name/" . $this->escape($this->pool_name); ?> - -result): ?> - - - - - - - - - - - - - - - - - - -result as $line) : ?> - - - - escape($line['volstatus']) == 'Disabled' ) - echo ''; - elseif ( $this->escape($line['volstatus']) == 'Error' ) - echo ''; - else - echo ''; - ?> - - - - - escape($line['voljobs']) <= 0) ) - echo ''; - else - echo ''; - ?> - - - - - - - - - - -
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    translate->_("First
    Written"); ?>
    translate->_("Last
    Written"); ?>
    translate->_("Autochanger
    Slot
    number"); ?>
    translate->_("Can Recycle
    Volume"); ?>
    - "> - escape($line['volumename']);?> - - ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>ConvBytes($this->escape($line['maxvolbytes']));?>', number_format($this->escape($line['voljobs'])), ' ', - number_format($this->escape($line['voljobs'])), 'ConvSecondsToDays($this->escape($line['volretention']));?>escape($line['mediatype']);?>escape($line['firstwritten']);?>escape($line['lastwritten']);?>escape($line['slot']);?>Int2Char($this->escape($line['recycle']));?>
    - - -

    translate->_("No Volumes found."); ?>

    - \ No newline at end of file + +
    +

    + + translate->_("No Volumes found."); ?> +

    +
    + + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/volume/problem-dashboard.phtml b/application/views/scripts/volume/problem-dashboard.phtml old mode 100644 new mode 100755 index be006b9c6..c3b3afc15 --- a/application/views/scripts/volume/problem-dashboard.phtml +++ b/application/views/scripts/volume/problem-dashboard.phtml @@ -1,69 +1,78 @@ - -

    - - escape($this->titleProblemVolumes); ?> - -

    - -resultProblemVolumes): ?> - - - - - - - - - - - - - -resultProblemVolumes as $line) : ?> - - - - escape($line['volstatus']) == 'Disabled' ) - echo ''; - elseif ( $this->escape($line['volstatus']) == 'Error' ) - echo ''; - else - echo ''; - ?> - - - - - escape($line['voljobs']) <= 0) ) - echo ''; - else - echo ''; - ?> - - - - - - -
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    - ">escape($line['volumename']);?> - - ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>ConvBytes($this->escape($line['maxvolbytes']));?>', number_format($this->escape($line['voljobs'])), ' ', - number_format($this->escape($line['voljobs'])), 'ConvSecondsToDays($this->escape($line['volretention']));?>escape($line['mediatype']);?>
    - - -
    -
    -

    - translate->_("Information from DB Catalog : All Volumes are OK.");?>

    -
    -
    -
    - \ No newline at end of file +
    + +
    +

    + resultProblemVolumes): ?> +

    + + + + + + + + + + + + + + resultProblemVolumes as $line) : ?> + + + + escape($line['volstatus']) == 'Disabled' ) + echo ''; + elseif ( $this->escape($line['volstatus']) == 'Error' ) + echo ''; + else + echo ''; + ?> + + + + + escape($line['voljobs']) <= 0) ) + echo ''; + else + echo ''; + ?> + + + + + + +
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    + ">escape($line['volumename']);?> + + ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>ConvBytes($this->escape($line['maxvolbytes']));?>', number_format($this->escape($line['voljobs'])), ' ', + number_format($this->escape($line['voljobs'])), 'ConvSecondsToDays($this->escape($line['volretention']));?>escape($line['mediatype']);?>
    +
    + + + + +
    +

    + + translate->_("Information from DB Catalog : All Volumes are OK."); ?> +

    +
    + + + + +

    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/volume/problem.phtml b/application/views/scripts/volume/problem.phtml old mode 100644 new mode 100755 index ee6095076..17db044eb --- a/application/views/scripts/volume/problem.phtml +++ b/application/views/scripts/volume/problem.phtml @@ -1,148 +1,161 @@ +
    +
    +
    +
    + escape($this->titleProblemVolumes); ?> +
    +
    +

    + resultProblemVolumes): ?> +

    + + + + + + + + + + + + + + + + + + resultProblemVolumes as $line) : ?> + + + + escape($line['volstatus']) == 'Disabled' ) + echo ''; + elseif ( $this->escape($line['volstatus']) == 'Error' ) + echo ''; + else + echo ''; + ?> + + + + + escape($line['voljobs']) <= 0) ) + echo ''; + else + echo ''; + ?> + + + + + + + + + + + +
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    translate->_("Last
    Written"); ?>
    translate->_("Autochanger
    Slot
    Number"); ?>
    translate->_("Can Recycle
    Volume"); ?>
    translate->_("Expires In"); ?>
    + "> + escape($line['volumename']);?> + + ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>ConvBytes($this->escape($line['maxvolbytes']));?>', number_format($this->escape($line['voljobs'])), ' ', + number_format($this->escape($line['voljobs'])), 'translate->_($this->ConvSecondsToDays($this->escape($line['volretention']))).' '. $this->translate->_("days");?>escape($line['mediatype']);?>escape(date($this->datetime_format, strtotime($line['lastwritten'])));?>escape($line['slot']);?>translate->_($this->Int2Char($this->escape($line['recycle'])));?>escape(date($this->date_format, strtotime($line['expiresin'])));?>
    +
    + + -

    escape($this->titleProblemVolumes); ?>

    - -resultProblemVolumes): ?> - - - - - - - - - - - - - - - - - -resultProblemVolumes as $line) : ?> - - - - escape($line['volstatus']) == 'Disabled' ) - echo ''; - elseif ( $this->escape($line['volstatus']) == 'Error' ) - echo ''; - else - echo ''; - ?> - - - - - escape($line['voljobs']) <= 0) ) - echo ''; - else - echo ''; - ?> - - - - - - - - - - -
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Max Volume
    Bytes"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Volume
    Retention
    (days)"); ?>
    translate->_("Media
    Type"); ?>
    translate->_("First
    Written"); ?>
    translate->_("Last
    Written"); ?>
    translate->_("Autochanger
    Slot
    number"); ?>
    translate->_("Can Recycle
    Volume"); ?>
    - "> - escape($line['volumename']);?> - - ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>ConvBytes($this->escape($line['maxvolbytes']));?>', number_format($this->escape($line['voljobs'])), ' ', - number_format($this->escape($line['voljobs'])), 'ConvSecondsToDays($this->escape($line['volretention']));?>escape($line['mediatype']);?>escape($line['firstwritten']);?>escape($line['lastwritten']);?>escape($line['slot']);?>Int2Char($this->escape($line['recycle']));?>
    - - -
    -
    -

    - translate->_("Information from DB Catalog : All Volumes are OK.");?>

    -
    -
    -
    - - -

     

    - - - - -resultVolumesNeedReplacement): ?> - - - - - - - - - - - - - - -resultVolumesNeedReplacement as $line) : ?> - - - - escape($line['volstatus']) == 'Disabled' ) - echo ''; - elseif ( $this->escape($line['volstatus']) == 'Error' ) - echo ''; - else - echo ''; - ?> - - - escape($line['voljobs']) <= 0) ) - echo ''; - else - echo ''; - ?> - - - - escape($line['volerrors']) == 0 ) - echo ''; - else - echo ''; - ?> - - - - -
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Media
    Type"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Mounts"); ?> translate->_("Number of writes"); ?> translate->_("Errors"); ?>
    - "> - escape($line['volumename']);?> - - ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>escape($line['mediatype']);?>', number_format($this->escape($line['voljobs'])), ' ', - number_format($this->escape($line['voljobs'])), 'escape($line['volmounts']);?>escape($line['volwrites']);?>' . $this->escape($line['volerrors']) . '
    - - -
    -
    -

    - translate->_("Information from DB Catalog : All Volumes are OK.");?>

    -
    -
    -
    - \ No newline at end of file + +
    +

    + + translate->_("Information from DB Catalog : All Volumes are OK."); ?> +

    +
    + + + + + + + resultVolumesNeedReplacement): ?> +
    + + + + + + + + + + + + + + + resultVolumesNeedReplacement as $line) : ?> + + + + escape($line['volstatus']) == 'Disabled' ) + echo ''; + elseif ( $this->escape($line['volstatus']) == 'Error' ) + echo ''; + else + echo ''; + ?> + + + escape($line['voljobs']) <= 0) ) + echo ''; + else + echo ''; + ?> + + + + escape($line['volerrors']) == 0 ) + echo ''; + else + echo ''; + ?> + + + + + +
    translate->_("Volume Name"); ?> translate->_("Volume Status"); ?> translate->_("Volume Bytes"); ?> translate->_("Media
    Type"); ?>
    translate->_("Volume Jobs"); ?> translate->_("Mounts"); ?> translate->_("Number of writes"); ?> translate->_("Errors"); ?>
    + "> + escape($line['volumename']);?> + + ', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), '', $this->escape($line['volstatus']), 'ConvBytes($this->escape($line['volbytes']));?>escape($line['mediatype']);?>', number_format($this->escape($line['voljobs'])), '', + number_format($this->escape($line['voljobs'])), 'escape($line['volmounts']);?>escape($line['volwrites']);?>' . $this->escape($line['volerrors']) . '
    +
    + + + +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/wbjobdesc/add.phtml b/application/views/scripts/wbjobdesc/add.phtml old mode 100644 new mode 100755 index fc9ba95dd..57736870b --- a/application/views/scripts/wbjobdesc/add.phtml +++ b/application/views/scripts/wbjobdesc/add.phtml @@ -1,30 +1,56 @@ - + +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + exception) ) : ?> - -

    -
    +
    +

    + + exception; ?> +

    +
    -exception) ) : ?> -
    -
    -

    - exception; ?>

    -
    -
    -
    - + -
    - title; ?> -form->setAction( $this->url() ); -echo $this->form; -?> -
    -
    -
    \ No newline at end of file +
    + form->desc_id; ?> + form->form1; ?> + form->name_job; ?> +
    + form->short_desc; ?> +
    + form->description; ?> +
    + form->retention_period; ?> +
    + + + + + + +
    + form->submit_button; ?> + +     +
    + form->cancel_button; ?> +
    +
    + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/wbjobdesc/index.phtml b/application/views/scripts/wbjobdesc/index.phtml old mode 100644 new mode 100755 index 5629cb142..81ee5ff28 --- a/application/views/scripts/wbjobdesc/index.phtml +++ b/application/views/scripts/wbjobdesc/index.phtml @@ -1,93 +1,128 @@ - - -

    escape($this->title); ?>

    - -
    -
    - " class="ui-button ui-state-default ui-corner-all"> -
    + +
    " style="display:none"> +

    translate->_("Are you sure you want to delete the jobdesc?"); ?>

    + -result): ?> +
    +
    +
    +
    + escape($this->title); ?> +
    +
    + + result): ?> + +
    + + + + + + + + + + + + + result as $line) : ?> + + + + + + + + + + +
      translate->_("Job Name"); ?> translate->_("Short Job Description"); ?> translate->_("Job Description"); ?> translate->_("Retention period"); ?>  
    + baseUrl, '/job/run-job/jobname/', $this->escape($line['name_job']); + echo '" title="', $this->translate->_("Run Job"), '">'; + echo '', $this->translate->_('; + } else { + echo ''; + } + ?> + + baseUrl , '/job/show-job/jobname/' , $this->escape($line['name_job']) , '" title="' , $this->translate->_("Show Job resource") , '">'; + echo $line['name_job'] . ''; + } else { + echo $line['name_job']; + } + ?> + + "> + <?php echo $this->translate->_(" border="0" hspace="2"> + + + " id="confirm" class="confirm"> + <?php echo $this->translate->_(" border="0" hspace="2"> + +
    +
    - - - - - - - - - - - - -result as $line) : ?> - - - - - - - - - - -
      translate->_("Job Name"); ?> translate->_("Short Job Description"); ?> translate->_("Job Description"); ?> translate->_("Retention period"); ?>  
    - baseUrl, '/job/run-job/jobname/', $this->escape($line['name_job']); - echo '" title="', $this->translate->_("Run Job"), '">'; - echo '', $this->translate->_('; - } else { - echo ''; - } - ?> - - escape($line['name_job']);?>" title="translate->_("Show Job resource") ?>"> - - - - "> - <?php echo $this->translate->_(" border="0" hspace="2"> - - - " id="confirm" class="confirm"> - <?php echo $this->translate->_(" border="0" hspace="2"> - -
    - - -
    -
    -

    - translate->_("No records found."); ?>

    -
    -
    - \ No newline at end of file + + + + +
    +

    + + translate->_("No records found!"); ?> +

    +
    + + + + +
    +
    + " class="btn btn-default"> +
    +
    +
    + +
    +
    +
    +
    + \ No newline at end of file diff --git a/application/views/scripts/wbjobdesc/modify.phtml b/application/views/scripts/wbjobdesc/modify.phtml old mode 100644 new mode 100755 index aacd34736..8660b9b1d --- a/application/views/scripts/wbjobdesc/modify.phtml +++ b/application/views/scripts/wbjobdesc/modify.phtml @@ -1,29 +1,56 @@ - - -
    -
    + +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + exception) ) : ?> -exception) ) : ?> -

    -
    -

    - exception; ?>

    -
    -
    -
    - +
    +

    + + exception; ?> +

    +
    -
    - title; ?> -form->setAction( $this->url() ); -echo $this->form; -?> -
    -
    -
    \ No newline at end of file + + +
    + form->desc_id; ?> + form->form1; ?> + form->name_job; ?> +
    + form->short_desc; ?> +
    + form->description; ?> +
    + form->retention_period; ?> +
    + + + + + + +
    + form->submit_button; ?> + +     +
    + form->cancel_button; ?> +
    +
    + + + +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/wblogbook/add.phtml b/application/views/scripts/wblogbook/add.phtml old mode 100644 new mode 100755 index ffbb6570a..24aeea095 --- a/application/views/scripts/wblogbook/add.phtml +++ b/application/views/scripts/wblogbook/add.phtml @@ -1,107 +1,139 @@ - -

    escape($this->title); ?>

    - typs as $t) : - $atyps[$t->typeid] = $this->translate->_( $t->typedesc ); + $atyps[$t->typeid] = $this->translate->_( $t->typedesc ); endforeach; ?> -
    - -
    - -amessages): ?> - -
    -
    -

    - - ', $this->translate->_("ERROR: Record has not been added. Reason :"), '

      '; - foreach ($this->amessages as $msg) { - echo '
    1. ' . $msg . '
    2. '; - } - echo '
    '; - ?> -

    -
    -
    -
    - - -
    - -

    translate->_("(*) Field is required to process this form"); ?>

    - -  -formText('logDateCreate', $this->wblogbook->logDateCreate, array('size' => 20)) ?> -
    - -formHidden('logDateLast', $this->wblogbook->logDateLast, null); ?> -formHidden('hiddenNew', $this->hiddenNew, null); ?> -formHidden('jobid', $this->jobid, null); ?> -formHidden('joberrors', $this->joberrors, null); ?> - -  -formSelect('logTypeId', $this->wblogbook->logTypeId, null, $atyps); ?> - -joberrors > 0) : ?> -    - - formCheckbox('reviewed', null, array('checked' => 1)) ?> - (translate->_("Don't show this Job in 'Jobs with errors' list in future"); ?>) - - -

    - - - -
    - translate->_("*Text"); ?> -translate->_("Allowed to use tags :"); ?>
    -aAllowedTags as $key=>$value) { - echo ' "; -} -?> - - -
    -translate->_("Allowed to use pseudo-tags :"); ?> - - - -
    - -formTextarea('logTxt', $this->wblogbook->logTxt, array('cols' => "90", 'rows' => "10")); ?> -
    - - -
    -
    -formSubmit('ok', $this->translate->_('Submit Form'), array('class' => 'prefer_btn') ); ?> -
    - - -
    -
    +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + amessages): ?> + + + +

    +

    + + ', $this->translate->_("ERROR: Record has not been added. Reason :"), '

      '; + foreach ($this->amessages as $msg) { + echo '
    1. ' . $msg . '
    2. '; + } + echo '
    '; + ?> +

    +
    + + + + +
    +

    *) " . $this->translate->_("Field is required to process this form"); ?>

    + + +
    +   +
    + formText('logDateCreate', $this->wblogbook->logDateCreate, array('size' => 20, 'class' => 'form-control')) ?> +
    +
    + + formHidden('logDateLast', $this->wblogbook->logDateLast, null); ?> + formHidden('hiddenNew', $this->hiddenNew, null); ?> + formHidden('jobid', $this->jobid, null); ?> + formHidden('joberrors', $this->joberrors, null); ?> + + +
    + +
    + formSelect('logTypeId', $this->wblogbook->logTypeId, array('class' => 'form-control'), $atyps); ?> +
    +
    + + + joberrors > 0) : ?> +
    + +
    + formCheckbox('reviewed', null, array('checked' => 1)) ?> + (translate->_("Don't show this Job in 'Jobs with errors' list in future");?>) +
    +
    + + + +
    +
    + aAllowedTags as $key=>$value) { + echo ' "; + } + ?> + +

    + +
    + + +
    +
    + + + formTextarea('logTxt', $this->wblogbook->logTxt, array('cols' => '80', 'rows' => '10', 'class' => 'form-control')); ?> +
    +
    + + + + + + + +
    + formSubmit('ok', $this->translate->_('Submit Form'), array('class' => 'btn btn-default') ); ?> + +     +
    + formSubmit('cancel', $this->translate->_('Cancel'), array('class' => 'btn btn-default') ); ?> +
    +
    +

    +
    +
    +
    +
    + diff --git a/application/views/scripts/wblogbook/index-printable.phtml b/application/views/scripts/wblogbook/index-printable.phtml old mode 100644 new mode 100755 index 4c9b17edc..5fed11e8a --- a/application/views/scripts/wblogbook/index-printable.phtml +++ b/application/views/scripts/wblogbook/index-printable.phtml @@ -11,106 +11,118 @@ if ( empty($this->unit_test) ) - - <?php echo $this->escape($this->title); ?> - - - + +<?php echo $this->escape($this->title); ?> + + + - - - - - -

    escape($this->title); ?>

    - -

    translate->_("Printable version."); ?> -translate->_("Current date :"), ' ', date('Y-m-d H:i', time()) ;?>

    - -result): ?> - -
    - - - - - - - - - - - -result as $line) : ?> - - - - - ', $this->translate->_("Deleted"), ''; - } else { - - switch ($line['typeid']) - { - case '20' : $class = 'class="ok"'; break; - case '30' : $class = 'class="warn"'; break; - case '255': $class = 'class="err"'; break; - default: $class = ''; - } - echo ''; - } - ?> - - - - -
    translate->_("Date"); ?> translate->_("Text"); ?> translate->_("Type"); ?> Id
    - ' . $str . ''; }; // record deleted - echo $str; - ?> - - baseUrl . "/job/detail/jobid/\\2\">Bacula JobId \\2"; - $str = preg_replace($pattern, $replacement, $str); - - $pattern = "/(LOGBOOK_ID=)([0-9]*)/i"; - $replacement = "baseUrl . "/wblogbook/filterbyid/id_begin/\\2\">Logbook Id \\2"; - $str = preg_replace($pattern, $replacement, $str); - - // each OS have different ASCII chars for linebreak: - // windows = \r\n - // unix = \n - // mac = \r - $str = str_replace(array("\r\n", "\r", "\n"), "
    ", $str); - //$str = nl2br($str); - - if ($line['logisdel'] != 0) { $str = '' . $str . ''; }; // record deleted - - echo $str; - - echo '

    '; - ?> -
    ', $this->translate->_($line['typedesc']), ' - -
    -
    - - -
    -
    -

    - translate->_("No records found."); ?>

    -
    -
    - - -
    + +
    +
    +
    + + + + +

    escape($this->title); ?>

    + +

    translate->_("Printable version."); ?> + datetime_format, strtotime(date('Y-m-d H:i:s'))) ;?>

    + + result): ?> + +
    + + + + + + + + + + + + result as $line) : ?> + + + + + + + ', $this->translate->_("Deleted"), ''; + } else { + + switch ($line['typeid']) + { + case '20' : $class = 'class="ok text-center"'; break; + case '30' : $class = 'class="warning text-center"'; break; + case '255': $class = 'class="danger text-center"'; break; + default: $class = 'class="text-center"'; + } + echo ''; + } + ?> + + + +
    Id translate->_("Date"); ?>translate->_("Text"); ?> translate->_("Type"); ?>
    + + + datetime_format, strtotime($line['logdatecreate'])); + if ($line['logisdel'] != 0) { $str = '' . $str . ''; }; // record deleted + echo $str; + ?> + + baseUrl . "/job/detail/jobid/\\2\">Bacula JobId \\2"; + $str = preg_replace($pattern, $replacement, $str); + + $pattern = "/(LOGBOOK_ID=)([0-9]*)/i"; + $replacement = "baseUrl . "/wblogbook/filterbyid/id_begin/\\2\">Logbook Id \\2"; + $str = preg_replace($pattern, $replacement, $str); + + // each OS have different ASCII chars for linebreak: + // windows = \r\n + // unix = \n + // mac = \r + $str = str_replace(array("\r\n", "\r", "\n"), "
    ", $str); + //$str = nl2br($str); + + if ($line['logisdel'] != 0) { $str = '' . $str . ''; }; // record deleted + + echo $str; + + + ?> +
    ', $this->translate->_($line['typedesc']), '
    +
    + + + + + +
    +

    + + translate->_("No records found."); ?> +

    +
    + + + + + +
    +
    +
    \ No newline at end of file diff --git a/application/views/scripts/wblogbook/index.phtml b/application/views/scripts/wblogbook/index.phtml old mode 100644 new mode 100755 index 4800a550e..378a06164 --- a/application/views/scripts/wblogbook/index.phtml +++ b/application/views/scripts/wblogbook/index.phtml @@ -1,258 +1,310 @@ - - - -

    escape($this->title); ?>

    - -
    -
    - " class="ui-button ui-state-default ui-corner-all"> -
    -
    - -
    -
    - - - -
    -
    - translate->_("Date range : from"); ?> - formText('date_begin', $this->escape($this->date_begin), array('size' => 10));?> -   translate->_("  to"); ?> - formText('date_end', $this->escape($this->date_end), array('size' => 10)) ?> -     - formHidden('printable_by_date', '0', null); ?> - formHidden('sortorder_by_date', 'DESC', null); ?> -
    - formSubmit('filter1', $this->translate->_('Apply filter'), - array('style' => 'margin-top: 15px; margin-bottom: 20px;', - 'class' => "ui-button ui-state-default ui-corner-all") ); - ?> -
    -
    - - -
    -
    - translate->_("Id range : from"); ?> - formText('id_begin', $this->escape($this->id_begin), array('size' => 5, 'maxlength' => 15)); ?> -   - translate->_("  to"); ?> - formText('id_end', $this->escape($this->id_end), array('size' => 5, 'maxlength' => 15)); ?> -   - formHidden('printable_by_id', '0', null); ?> - formHidden('sortorder_by_id', 'DESC', null); ?> -
    - formSubmit('filter2', $this->translate->_('Apply filter'), - array('style' => 'margin-top: 15px; margin-bottom: 20px;', - 'class' => "ui-button ui-state-default ui-corner-all") ); - ?> -
    -
    - - -
    -
    - translate->_("Text"); ?> - formText('id_text', $this->escape($this->id_text), array('size' => 50, 'maxlength' => 250)); ?> -   - formHidden('printable_by_text', '0', null); ?> - formHidden('sortorder_by_text', 'ASC', null); ?> - formSubmit('filter3', $this->translate->_('Search'), - array('style' => 'margin-top: 15px; margin-bottom: 20px;', - 'class' => "ui-button ui-state-default ui-corner-all") ); - ?> -
    -
    - -<?php print $this->translate->_(" - title="translate->_("View a printable version"); ?>" align="absmiddle" border="0" height="16" hspace="1" vspace="1" width="16"> - -translate->_("View a printable version"); ?> -
    -<?php print $this->translate->_(" - title="translate->_("To sort in ascending/descending order"); ?>" align="absmiddle" border="0" height="16" hspace="1" vspace="1" width="16"> - -translate->_("Sort in ascending order"); ?> - -
    -
    - -result): ?> - - - - - - - - - - - - - -result as $line) : ?> - - - - - - ', $this->translate->_("Deleted"), ''; - } else { - - switch ($line['typeid']) - { - case '20' : $class = 'class="ok"'; break; - case '30' : $class = 'class="warn"'; break; - case '255': $class = 'class="err"'; break; - default: $class = ''; - } - echo ''; - } - ?> - - - - - - - -
    translate->_("Date"); ?> translate->_("Text"); ?> translate->_("Type"); ?> translate->_("Last modified"); ?> Id
    - ' . $str . ''; }; // record deleted - echo $str; - ?> - - baseUrl . "/job/detail/jobid/\\2\">Bacula JobId \\2"; - $str = preg_replace($pattern, $replacement, $str); - - $pattern = "/(LOGBOOK_ID=)([0-9]*)/i"; - $replacement = "baseUrl . "/wblogbook/filterbyid/id_begin/\\2\">Logbook Id \\2"; - $str = preg_replace($pattern, $replacement, $str); - - // each OS have different ASCII chars for linebreak: - // windows = \r\n - // unix = \n - // mac = \r - $str = str_replace(array("\r\n", "\r", "\n"), "
    ", $str); - //$str = nl2br($str); - - if ($line['logisdel'] != 0) { $str = '' . $str . ''; }; // record deleted - - echo $str; - - echo '

    '; - - echo '
    ', - $this->formHidden('logid', $line['logid'], null), - $this->formSubmit('modify', $this->translate->_('Modify Entry') ), - '

    '; - ?> -
    ', $this->translate->_($line['typedesc']), ' - - - -
    +
    +
    +
    +
    + escape($this->title); ?> +
    +
    - -
    -
    -

    - translate->_("No records found."); ?>

    -
    -
    -
    - \ No newline at end of file + +
    + +
    + + + + +
    + +
    +
    +
    +
    +
    + translate->_("Date range"); ?>: + translate->_("from"); ?> + formText('date_begin', $this->escape($this->date_begin), array('size' => 10, 'class' => 'form-control'));?> +   translate->_("to"); ?>   + formText('date_end', $this->escape($this->date_end), array('size' => 10, 'class' => 'form-control') ) ?> + formHidden('printable_by_date', '0', null); ?> + formHidden('sortorder_by_date', 'DESC', null); ?> + formSubmit('filter1', $this->translate->_('Search'), + array('style' => 'margin-top: 15px; margin-bottom: 15px;', + 'class' => "btn btn-default") ); + ?> +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + translate->_("Id range: from"); ?> + formText('id_begin', $this->escape($this->id_begin), array('size' => 5, 'maxlength' => 15, 'class' => 'form-control')); ?> +   translate->_("to"); ?>   + formText('id_end', $this->escape($this->id_end), array('size' => 5, 'maxlength' => 15, 'class' => 'form-control')); ?> +   + formHidden('printable_by_id', '0', null); ?> + formHidden('sortorder_by_id', 'DESC', null); ?> + + formSubmit('filter2', $this->translate->_('Search'), + array('style' => 'margin-top: 15px; margin-bottom: 15px;', + 'class' => "btn btn-default") ); + ?> +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + translate->_("Text"); ?> + formText('id_text', $this->escape($this->id_text), array('size' => 50, 'maxlength' => 250, 'class' => 'form-control')); ?> +   + formHidden('printable_by_text', '0', null); ?> + formHidden('sortorder_by_text', 'ASC', null); ?> + + formSubmit('filter3', $this->translate->_('Search'), + array('style' => 'margin-top: 15px; margin-bottom: 15px;', + 'class' => "btn btn-default") ); + ?> +
    +
    +
    +
    +
    + + +
    +
    +
    + +
    + <?php print $this->translate->_(" + title="translate->_("View a printable version"); ?>" align="absmiddle" border="0" height="16" hspace="1" vspace="1" width="16"> + + translate->_("View a printable version"); ?> +
    + <?php print $this->translate->_(" + title="translate->_("To sort in ascending/descending order"); ?>" align="absmiddle" border="0" height="16" hspace="1" vspace="1" width="16"> + + translate->_("Sort in ascending order"); ?> +
    +
    + + result): ?> + +
    + + + + + + + + + + + + + result as $line) : ?> + + + + + + ', $this->translate->_("Deleted"), ''; + } else { + + switch ($line['typeid']) + { + case '20' : $class = 'class="ok"'; break; + case '30' : $class = 'class="warning"'; break; + case '255': $class = 'class="danger"'; break; + default: $class = ''; + } + echo ''; + } + ?> + + + + + + + +
    Id translate->_("Date"); ?> translate->_("Text"); ?> translate->_("Type"); ?> translate->_("Last modified"); ?>
    + + + escape($this->datetime_format), strtotime($line['logdatecreate'])); + if ($line['logisdel'] != 0) { $str = '' . $str . ''; }; // record deleted + echo $str; + ?> + + baseUrl . "/job/detail/jobid/\\2\">Bacula JobId \\2"; + $str = preg_replace($pattern, $replacement, $str); + + $pattern = "/(LOGBOOK_ID=)([0-9]*)/i"; + $replacement = "baseUrl . "/wblogbook/filterbyid/id_begin/\\2\">Logbook Id \\2"; + $str = preg_replace($pattern, $replacement, $str); + + // each OS have different ASCII chars for linebreak: + // windows = \r\n + // unix = \n + // mac = \r + $str = str_replace(array("\r\n", "\r", "\n"), "
    ", $str); + //$str = nl2br($str); + + if ($line['logisdel'] != 0) { $str = '' . $str . ''; }; // record deleted + + echo $str; + + //echo '

    '; + + /* + echo '
    ', + $this->formHidden('logid', $line['logid'], null), + $this->formSubmit('modify', $this->translate->_('Modify Entry'),array('class' => 'btn btn-default') ), + '

    '; + */ + ?> +
    ', $this->translate->_($line['typedesc']), ' + datetime_format, strtotime($line['logdatelast'])); + } else { + echo '-'; + } + ?> + +
    + formHidden('logid', $line['logid'], null); ?> + + <?php echo $this->translate->_(" title="translate->_("Modify record"); ?>" /> + +
    +
    +
    + + + +
    +

    + + translate->_("No records found!"); ?> +

    +
    + + + + +
    +
    + " class="btn btn-default"> +
    +
    + +
    +
    +
    +
    diff --git a/application/views/scripts/wblogbook/modify.phtml b/application/views/scripts/wblogbook/modify.phtml old mode 100644 new mode 100755 index d6842c139..9572d6ecf --- a/application/views/scripts/wblogbook/modify.phtml +++ b/application/views/scripts/wblogbook/modify.phtml @@ -1,14 +1,5 @@ - - - -

    escape($this->title); ?>

    typs as $t) : endforeach; ?> -
    - -
    - -amessages): ?> - -
    -
    -

    - - ', $this->translate->_("Record has not been modified. Reason :"), '

      '; - foreach ($this->amessages as $msg) { - echo '
    1. ' . $msg . '
    2. '; - } - echo '
    '; - ?> -

    -
    -
    -
    - - -wblogbook->logIsDel == 1): ?> -
    -
    -

    - translate->_("This record has been deleted.");?>

    -
    -
    - - -
    - - wblogbook->logId; ?> -
    - wblogbook->logDateLast; ?> -

    - -
    - translate->_("Select action "); ?> - - translate->_("Modify this record"); ?>
    - - translate->_("Delete this record (physically record will not be removed)"); ?>
    - - translate->_("Undelete this record"); ?> -
    - -formHidden('logid', $this->wblogbook->logId, null); ?> -formHidden('isdel', $this->wblogbook->logIsDel, null); ?> -formHidden('hiddenModify', $this->hiddenModify, null); ?> - -
    -

    translate->_("(*) Field is required to process this form"); ?>

    - -  -formText('logDateCreate', $this->wblogbook->logDateCreate, array('size' => 20)) ?> -
    - -formSelect('logTypeId', $this->wblogbook->logTypeId, null, $atyps); ?> -

    - - -
    - translate->_("*Text"); ?> -translate->_("Allowed to use tags :"); ?>
    -aAllowedTags as $key=>$value) { - echo ' "; -} -?> - - -
    -translate->_("Allowed to use pseudo-tags :"); ?> - - - -
    - -formTextarea('logTxt', $this->wblogbook->logTxt, array('cols' => "80", 'rows' => "10")); ?> -
    - - -
    -
    -formSubmit('ok', $this->translate->_('Submit Form'), array('class' => 'prefer_btn') ); ?> -       -formReset('reset', $this->translate->_('Reset Form')); ?> -
    - - -
    -
    \ No newline at end of file +
    +
    +
    +
    + escape($this->title); ?> +
    +
    +

    + + amessages): ?> + + +

    +

    + + ', $this->translate->_("Record has not been modified. Reason :"), '

      '; + foreach ($this->amessages as $msg) { + echo '
    1. ' . $msg . '
    2. '; + } + echo '
    '; + ?> +

    +
    + + + + + wblogbook->logIsDel == 1): ?> + + +
    +

    + + translate->_("This record has been deleted."); ?> +

    +
    + + + + +
    +

    *) " . $this->translate->_("Field is required to process this form"); ?>

    + + +
    +   +
    +

    wblogbook->logId; ?>

    +
    +
    + + +
    +   +
    +

    datetime_format, strtotime($this->wblogbook->logDateCreate)); ?>

    +
    +
    + + +
    +   +
    +

    datetime_format, strtotime($this->wblogbook->logDateLast)); ?>

    +
    +
    + + +
    + +
    +
    + + translate->_("Modify this record"); ?>
    + + translate->_("Delete this record (physically record will not be removed)"); ?>
    + + translate->_("Undelete this record"); ?> +
    +
    +
    + + formHidden('logid', $this->wblogbook->logId, null); ?> + formHidden('isdel', $this->wblogbook->logIsDel, null); ?> + formHidden('hiddenModify', $this->hiddenModify, null); ?> + + + +
    + +
    + formSelect('logTypeId', $this->wblogbook->logTypeId, array('class' => 'form-control'), $atyps); ?> +
    +
    + + +
    + + +
    + aAllowedTags as $key=>$value) { + echo ' "; + } + ?> +

    + + + +
    + + +
    +
    + + + formTextarea('logTxt', $this->wblogbook->logTxt, array('cols' => "80", 'rows' => "10", 'class' => 'form-control')); ?> +
    +
    + + + + + + + +
    + formSubmit('ok', $this->translate->_('Submit Form'), array('class' => 'btn btn-default') ); ?> + +     +
    + formSubmit('cancel', $this->translate->_('Cancel'), array('class' => 'btn btn-default') ); ?> +
    +
    +

    +
    +
    +
    +
    + \ No newline at end of file diff --git a/data/.htaccess b/data/.htaccess old mode 100644 new mode 100755 diff --git a/data/README b/data/README old mode 100644 new mode 100755 diff --git a/data/cache/_dummy b/data/cache/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from data/cache/_dummy rename to data/cache/.gitignore diff --git a/docs/.htaccess b/docs/.htaccess old mode 100644 new mode 100755 diff --git a/docs/html/ACLs.png b/docs/html/ACLs.png old mode 100644 new mode 100755 diff --git a/docs/html/image.png b/docs/html/image.png old mode 100644 new mode 100755 diff --git a/docs/html/install.css b/docs/html/install.css old mode 100644 new mode 100755 diff --git a/docs/html/install.html b/docs/html/install.html old mode 100644 new mode 100755 diff --git a/docs/pdf/install.pdf b/docs/pdf/install.pdf old mode 100644 new mode 100755 diff --git a/docs/src/install.tex b/docs/src/install.tex old mode 100644 new mode 100755 diff --git a/docs/src/pics/ACLs.odg b/docs/src/pics/ACLs.odg old mode 100644 new mode 100755 diff --git a/docs/src/pics/ACLs.png b/docs/src/pics/ACLs.png old mode 100644 new mode 100755 diff --git a/docs/txt/FAQ.txt b/docs/txt/FAQ.txt old mode 100644 new mode 100755 diff --git a/docs/txt/LogBook.txt b/docs/txt/LogBook.txt old mode 100644 new mode 100755 diff --git a/docs/txt/RestoreJob.txt b/docs/txt/RestoreJob.txt old mode 100644 new mode 100755 diff --git a/docs/txt/WebaculaTerminal.txt b/docs/txt/WebaculaTerminal.txt old mode 100644 new mode 100755 diff --git a/docs/txt/Workflow.txt b/docs/txt/Workflow.txt old mode 100644 new mode 100755 diff --git a/docs/txt/install.txt b/docs/txt/install.txt old mode 100644 new mode 100755 diff --git a/docs/txt/install.ubuntu.txt b/docs/txt/install.ubuntu.txt old mode 100644 new mode 100755 diff --git a/docs/txt/upgrade.txt b/docs/txt/upgrade.txt old mode 100644 new mode 100755 index 2e188fc08..51b268277 --- a/docs/txt/upgrade.txt +++ b/docs/txt/upgrade.txt @@ -58,3 +58,24 @@ Change file "application/config.ini" if necessary: ; 2 - show both show_job_description = 2 + + +Upgrade from 7.0 to 7.4 +----------------------- +Alter, insert to tables (for example, MySQL): + +CREATE TABLE IF NOT EXISTS webacula_schedule_acl ( + id integer not null auto_increment, + name TEXT NOT NULL, + order_acl integer, + role_id integer, + PRIMARY KEY (id), + INDEX (id, order_acl), + UNIQUE INDEX (name(254), role_id) +); + +INSERT INTO webacula_dt_resources (id, name, description) VALUES (105, 'schedule', 'Menu Schedule'); +INSERT INTO webacula_resources (dt_id, role_id) VALUES (105,2); +INSERT INTO webacula_schedule_acl (name, order_acl, role_id) VALUES ('*all*', 1, 1); +INSERT INTO webacula_schedule_acl (name, order_acl, role_id) VALUES ('*all*', 1, 2); + diff --git a/html/.htaccess b/html/.htaccess old mode 100644 new mode 100755 index 7a80af45a..eef47bc0e --- a/html/.htaccess +++ b/html/.htaccess @@ -1,8 +1,7 @@ SetEnv APPLICATION_ENV development -# SetEnv APPLICATION_ENV production -php_flag magic_quotes_gpc off -php_flag register_globals off +#php_flag magic_quotes_gpc off +#php_flag register_globals off RewriteEngine On diff --git a/html/.htaccess_original b/html/.htaccess_original old mode 100644 new mode 100755 diff --git a/html/favicon.ico b/html/favicon.ico old mode 100644 new mode 100755 diff --git a/html/images/1x1.png b/html/images/1x1.png old mode 100644 new mode 100755 diff --git a/html/images/PoweredBy_ZF_4LightBG.png b/html/images/PoweredBy_ZF_4LightBG.png old mode 100644 new mode 100755 diff --git a/html/images/Webacula_logo.png b/html/images/Webacula_logo.png old mode 100644 new mode 100755 diff --git a/html/images/arrow-left.png b/html/images/arrow-left.png old mode 100644 new mode 100755 diff --git a/html/images/arrow-right.png b/html/images/arrow-right.png old mode 100644 new mode 100755 diff --git a/html/images/bacula_logo.png b/html/images/bacula_logo.png new file mode 100755 index 000000000..2ab9797e5 Binary files /dev/null and b/html/images/bacula_logo.png differ diff --git a/html/images/bacula_logo_small.png b/html/images/bacula_logo_small.png new file mode 100755 index 000000000..729840c35 Binary files /dev/null and b/html/images/bacula_logo_small.png differ diff --git a/html/images/bookmark-new.png b/html/images/bookmark-new.png old mode 100644 new mode 100755 diff --git a/html/images/connected.png b/html/images/connected.png old mode 100644 new mode 100755 diff --git a/html/images/dialog-ok-apply-small.png b/html/images/dialog-ok-apply-small.png old mode 100644 new mode 100755 diff --git a/html/images/dialog-ok-apply.png b/html/images/dialog-ok-apply.png old mode 100644 new mode 100755 diff --git a/html/images/disconnected.png b/html/images/disconnected.png old mode 100644 new mode 100755 diff --git a/html/images/document-edit.png b/html/images/document-edit.png old mode 100644 new mode 100755 diff --git a/html/images/documentinfo.png b/html/images/documentinfo.png old mode 100644 new mode 100755 diff --git a/html/images/edit-delete.png b/html/images/edit-delete.png old mode 100644 new mode 100755 diff --git a/html/images/favicon.ico b/html/images/favicon.ico new file mode 100755 index 000000000..3abcb8d4d Binary files /dev/null and b/html/images/favicon.ico differ diff --git a/html/images/feed-icon-14x14.png b/html/images/feed-icon-14x14.png old mode 100644 new mode 100755 diff --git a/html/images/feed-icon-28x28.png b/html/images/feed-icon-28x28.png old mode 100644 new mode 100755 diff --git a/html/images/folder.png b/html/images/folder.png old mode 100644 new mode 100755 diff --git a/html/images/gplv3-127x51.png b/html/images/gplv3-127x51.png old mode 100644 new mode 100755 diff --git a/html/images/jquery_logo.png b/html/images/jquery_logo.png old mode 100644 new mode 100755 diff --git a/html/images/list-add.png b/html/images/list-add.png old mode 100644 new mode 100755 diff --git a/html/images/logviewer-small.png b/html/images/logviewer-small.png new file mode 100755 index 000000000..e608b3c65 Binary files /dev/null and b/html/images/logviewer-small.png differ diff --git a/html/images/logviewer.png b/html/images/logviewer.png new file mode 100755 index 000000000..c7b1bcad5 Binary files /dev/null and b/html/images/logviewer.png differ diff --git a/html/images/media-tape-changer.png b/html/images/media-tape-changer.png old mode 100644 new mode 100755 diff --git a/html/images/printer1.png b/html/images/printer1.png old mode 100644 new mode 100755 diff --git a/html/images/process-stop.png b/html/images/process-stop.png old mode 100644 new mode 100755 diff --git a/html/images/re-run-job-small.png b/html/images/re-run-job-small.png old mode 100644 new mode 100755 diff --git a/html/images/re-run-job.png b/html/images/re-run-job.png old mode 100644 new mode 100755 diff --git a/html/images/restore-small.png b/html/images/restore-small.png old mode 100644 new mode 100755 diff --git a/html/images/restore.png b/html/images/restore.png old mode 100644 new mode 100755 diff --git a/html/images/up.png b/html/images/up.png old mode 100644 new mode 100755 diff --git a/html/images/user-online.png b/html/images/user-online.png old mode 100644 new mode 100755 diff --git a/html/index.php b/html/index.php old mode 100644 new mode 100755 index 5c600b68c..e54ea1302 --- a/html/index.php +++ b/html/index.php @@ -18,8 +18,7 @@ * */ -define('WEBACULA_VERSION', '7.0.0' . ', build 2014.10.01'); -define('BACULA_VERSION', 14); // Bacula Catalog version +define('WEBACULA_VERSION', '11.0.0' . ' build 16Mar2021'); define('ROOT_DIR', dirname(dirname(__FILE__)) ); define('CACHE_DIR', ROOT_DIR.'/data/cache' ); @@ -44,6 +43,7 @@ Zend_Loader::loadClass('Zend_Auth'); Zend_Loader::loadClass('Zend_Controller_Front'); +Zend_Loader::loadClass('Zend_Controller_Exception'); Zend_Loader::loadClass('Zend_Cache'); Zend_Loader::loadClass('Zend_Session'); Zend_Loader::loadClass('MyClass_Session_SaveHandler_DbTable'); // PHP session storage @@ -89,7 +89,14 @@ } // set self version -Zend_Registry::set('bacula_version', BACULA_VERSION); +if( isset($config->general->catalog->version) ){ + define('BACULA_VERSION', $config->general->catalog->version); + Zend_Registry::set('bacula_version', $config->general->catalog->version); +} +else{ + echo '
    ';
    +	throw new Zend_Exception("Fatal error: Catalog version is not defined in config.ini");
    +}
     Zend_Registry::set('webacula_version', WEBACULA_VERSION);
     
     // set global const
    @@ -106,6 +113,12 @@
     
     // setup database bacula
     Zend_Registry::set('DB_ADAPTER', strtoupper($config->general->db->adapter) );
    +if($config->general->db->adapter == "PDO_PGSQL"){
    + $db_name = "PostgreSQL";  
    +} else {
    + $db_name = "MySQL/MariaDB";
    +}
    +
     $params = $config->general->db->config->toArray();
     // for cross database compatibility with PDO, MySQL, PostgreSQL
     $params['options'] = array(Zend_Db::CASE_FOLDING => Zend_Db::CASE_LOWER, Zend_DB::AUTO_QUOTE_IDENTIFIERS => FALSE);
    @@ -173,6 +186,29 @@
         $show_job_description = 0;
     $registry->set('show_job_description', $show_job_description);
     
    +// Show jobs terminated
    +if ( !isset($config->general->days_to_show_jobs_terminated) ) {
    +    $days_to_show_jobs_terminated = 1;
    +} else {
    +    $days_to_show_jobs_terminated = $config->general->days_to_show_jobs_terminated;
    +}
    +$registry->set('days_to_show_jobs_terminated', $days_to_show_jobs_terminated);
    +
    +// Show date format in different format
    +if ( !isset($config->general->date_format) ) {
    +   $date_format = "Y-m-d";
    +} else {
    +   $date_format = $config->general->date_format;
    +}
    +$registry->set('date_format', $date_format);
    +
    +if ( !isset($config->general->datetime_format) ) {
    +   $datetime_format = "Y-m-d H:i:s";
    +} else {
    +   $datetime_format = $config->general->datetime_format;
    +}
    +$registry->set('datetime_format', $datetime_format);
    +
     Zend_Layout::startMvc(array(
         'layoutPath' => '../application/layouts/' . $config->layout->path,
         'layout' => 'main'
    @@ -183,17 +219,17 @@
         $db->getConnection();
     } catch (Zend_Db_Adapter_Exception $e) {
         echo '
    ';
    -    // возможно СУБД не запущена
    -    throw new Zend_Exception("Fatal error: Can't connect to SQL server");
    +    // possible database is not running
    +    throw new Zend_Exception("Fatal error: Can't connect to Database " . $db_name. "\n" . $e);
     }
     /*
      * Check Bacula Catalog version
      */
     $ver = new Version();
    -if ( !$ver->checkVesion(BACULA_VERSION) )   {
    +if ( !$ver->checkVersion(BACULA_VERSION) )   {
         echo '
    ';
    -    throw new Zend_Exception("Bacula version mismatch for the Catalog database. ". 
    -            "Wanted ".BACULA_VERSION.", got ". $ver->getVesion().". ");
    +    throw new Zend_Exception("Bacula version mismatch for the Catalog database. ". "Wanted ".BACULA_VERSION." got ". $ver->getVersion().".\n" .
    +    "Update your webacula tables and modify the 'catalog.version' in application/config.ini.");
     }
     /*
      * Check CACHE_DIR is writable
    @@ -228,7 +264,7 @@
     }
     
     /*
    - * для подсчета кол-ва неудачных логинов для вывода капчи
    + * for counting of number of failed logins to enter a captcha
      */
     $defNamespace = new Zend_Session_Namespace('Default');
     if (!isset($defNamespace->numLoginFails))
    @@ -243,9 +279,9 @@
         'automatic_serialization' => true
     );
     $backendOptions = array(
    -    'cache_dir' => CACHE_DIR.'/'      // директория, в которой размещаются файлы кэша
    +    'cache_dir' => CACHE_DIR.'/'      // Directory where the cache files are located
     );
    -// получение объекта Zend_Cache_Core
    +// obtaining object Zend_Cache_Core
     $cache = Zend_Cache::factory(
         'Core',
         'File',
    diff --git a/html/scripts/bootstrap.js b/html/scripts/bootstrap.js
    new file mode 100755
    index 000000000..8a2e99a53
    --- /dev/null
    +++ b/html/scripts/bootstrap.js
    @@ -0,0 +1,2377 @@
    +/*!
    + * Bootstrap v3.3.7 (http://getbootstrap.com)
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under the MIT license
    + */
    +
    +if (typeof jQuery === 'undefined') {
    +  throw new Error('Bootstrap\'s JavaScript requires jQuery')
    +}
    +
    ++function ($) {
    +  'use strict';
    +  var version = $.fn.jquery.split(' ')[0].split('.')
    +  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
    +    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
    +  }
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: transition.js v3.3.7
    + * http://getbootstrap.com/javascript/#transitions
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
    +  // ============================================================
    +
    +  function transitionEnd() {
    +    var el = document.createElement('bootstrap')
    +
    +    var transEndEventNames = {
    +      WebkitTransition : 'webkitTransitionEnd',
    +      MozTransition    : 'transitionend',
    +      OTransition      : 'oTransitionEnd otransitionend',
    +      transition       : 'transitionend'
    +    }
    +
    +    for (var name in transEndEventNames) {
    +      if (el.style[name] !== undefined) {
    +        return { end: transEndEventNames[name] }
    +      }
    +    }
    +
    +    return false // explicit for ie8 (  ._.)
    +  }
    +
    +  // http://blog.alexmaccaw.com/css-transitions
    +  $.fn.emulateTransitionEnd = function (duration) {
    +    var called = false
    +    var $el = this
    +    $(this).one('bsTransitionEnd', function () { called = true })
    +    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
    +    setTimeout(callback, duration)
    +    return this
    +  }
    +
    +  $(function () {
    +    $.support.transition = transitionEnd()
    +
    +    if (!$.support.transition) return
    +
    +    $.event.special.bsTransitionEnd = {
    +      bindType: $.support.transition.end,
    +      delegateType: $.support.transition.end,
    +      handle: function (e) {
    +        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
    +      }
    +    }
    +  })
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: alert.js v3.3.7
    + * http://getbootstrap.com/javascript/#alerts
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // ALERT CLASS DEFINITION
    +  // ======================
    +
    +  var dismiss = '[data-dismiss="alert"]'
    +  var Alert   = function (el) {
    +    $(el).on('click', dismiss, this.close)
    +  }
    +
    +  Alert.VERSION = '3.3.7'
    +
    +  Alert.TRANSITION_DURATION = 150
    +
    +  Alert.prototype.close = function (e) {
    +    var $this    = $(this)
    +    var selector = $this.attr('data-target')
    +
    +    if (!selector) {
    +      selector = $this.attr('href')
    +      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
    +    }
    +
    +    var $parent = $(selector === '#' ? [] : selector)
    +
    +    if (e) e.preventDefault()
    +
    +    if (!$parent.length) {
    +      $parent = $this.closest('.alert')
    +    }
    +
    +    $parent.trigger(e = $.Event('close.bs.alert'))
    +
    +    if (e.isDefaultPrevented()) return
    +
    +    $parent.removeClass('in')
    +
    +    function removeElement() {
    +      // detach from parent, fire event then clean up data
    +      $parent.detach().trigger('closed.bs.alert').remove()
    +    }
    +
    +    $.support.transition && $parent.hasClass('fade') ?
    +      $parent
    +        .one('bsTransitionEnd', removeElement)
    +        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
    +      removeElement()
    +  }
    +
    +
    +  // ALERT PLUGIN DEFINITION
    +  // =======================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this = $(this)
    +      var data  = $this.data('bs.alert')
    +
    +      if (!data) $this.data('bs.alert', (data = new Alert(this)))
    +      if (typeof option == 'string') data[option].call($this)
    +    })
    +  }
    +
    +  var old = $.fn.alert
    +
    +  $.fn.alert             = Plugin
    +  $.fn.alert.Constructor = Alert
    +
    +
    +  // ALERT NO CONFLICT
    +  // =================
    +
    +  $.fn.alert.noConflict = function () {
    +    $.fn.alert = old
    +    return this
    +  }
    +
    +
    +  // ALERT DATA-API
    +  // ==============
    +
    +  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: button.js v3.3.7
    + * http://getbootstrap.com/javascript/#buttons
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // BUTTON PUBLIC CLASS DEFINITION
    +  // ==============================
    +
    +  var Button = function (element, options) {
    +    this.$element  = $(element)
    +    this.options   = $.extend({}, Button.DEFAULTS, options)
    +    this.isLoading = false
    +  }
    +
    +  Button.VERSION  = '3.3.7'
    +
    +  Button.DEFAULTS = {
    +    loadingText: 'loading...'
    +  }
    +
    +  Button.prototype.setState = function (state) {
    +    var d    = 'disabled'
    +    var $el  = this.$element
    +    var val  = $el.is('input') ? 'val' : 'html'
    +    var data = $el.data()
    +
    +    state += 'Text'
    +
    +    if (data.resetText == null) $el.data('resetText', $el[val]())
    +
    +    // push to event loop to allow forms to submit
    +    setTimeout($.proxy(function () {
    +      $el[val](data[state] == null ? this.options[state] : data[state])
    +
    +      if (state == 'loadingText') {
    +        this.isLoading = true
    +        $el.addClass(d).attr(d, d).prop(d, true)
    +      } else if (this.isLoading) {
    +        this.isLoading = false
    +        $el.removeClass(d).removeAttr(d).prop(d, false)
    +      }
    +    }, this), 0)
    +  }
    +
    +  Button.prototype.toggle = function () {
    +    var changed = true
    +    var $parent = this.$element.closest('[data-toggle="buttons"]')
    +
    +    if ($parent.length) {
    +      var $input = this.$element.find('input')
    +      if ($input.prop('type') == 'radio') {
    +        if ($input.prop('checked')) changed = false
    +        $parent.find('.active').removeClass('active')
    +        this.$element.addClass('active')
    +      } else if ($input.prop('type') == 'checkbox') {
    +        if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
    +        this.$element.toggleClass('active')
    +      }
    +      $input.prop('checked', this.$element.hasClass('active'))
    +      if (changed) $input.trigger('change')
    +    } else {
    +      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
    +      this.$element.toggleClass('active')
    +    }
    +  }
    +
    +
    +  // BUTTON PLUGIN DEFINITION
    +  // ========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.button')
    +      var options = typeof option == 'object' && option
    +
    +      if (!data) $this.data('bs.button', (data = new Button(this, options)))
    +
    +      if (option == 'toggle') data.toggle()
    +      else if (option) data.setState(option)
    +    })
    +  }
    +
    +  var old = $.fn.button
    +
    +  $.fn.button             = Plugin
    +  $.fn.button.Constructor = Button
    +
    +
    +  // BUTTON NO CONFLICT
    +  // ==================
    +
    +  $.fn.button.noConflict = function () {
    +    $.fn.button = old
    +    return this
    +  }
    +
    +
    +  // BUTTON DATA-API
    +  // ===============
    +
    +  $(document)
    +    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
    +      var $btn = $(e.target).closest('.btn')
    +      Plugin.call($btn, 'toggle')
    +      if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
    +        // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
    +        e.preventDefault()
    +        // The target component still receive the focus
    +        if ($btn.is('input,button')) $btn.trigger('focus')
    +        else $btn.find('input:visible,button:visible').first().trigger('focus')
    +      }
    +    })
    +    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
    +      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
    +    })
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: carousel.js v3.3.7
    + * http://getbootstrap.com/javascript/#carousel
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // CAROUSEL CLASS DEFINITION
    +  // =========================
    +
    +  var Carousel = function (element, options) {
    +    this.$element    = $(element)
    +    this.$indicators = this.$element.find('.carousel-indicators')
    +    this.options     = options
    +    this.paused      = null
    +    this.sliding     = null
    +    this.interval    = null
    +    this.$active     = null
    +    this.$items      = null
    +
    +    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
    +
    +    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
    +      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
    +      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
    +  }
    +
    +  Carousel.VERSION  = '3.3.7'
    +
    +  Carousel.TRANSITION_DURATION = 600
    +
    +  Carousel.DEFAULTS = {
    +    interval: 5000,
    +    pause: 'hover',
    +    wrap: true,
    +    keyboard: true
    +  }
    +
    +  Carousel.prototype.keydown = function (e) {
    +    if (/input|textarea/i.test(e.target.tagName)) return
    +    switch (e.which) {
    +      case 37: this.prev(); break
    +      case 39: this.next(); break
    +      default: return
    +    }
    +
    +    e.preventDefault()
    +  }
    +
    +  Carousel.prototype.cycle = function (e) {
    +    e || (this.paused = false)
    +
    +    this.interval && clearInterval(this.interval)
    +
    +    this.options.interval
    +      && !this.paused
    +      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
    +
    +    return this
    +  }
    +
    +  Carousel.prototype.getItemIndex = function (item) {
    +    this.$items = item.parent().children('.item')
    +    return this.$items.index(item || this.$active)
    +  }
    +
    +  Carousel.prototype.getItemForDirection = function (direction, active) {
    +    var activeIndex = this.getItemIndex(active)
    +    var willWrap = (direction == 'prev' && activeIndex === 0)
    +                || (direction == 'next' && activeIndex == (this.$items.length - 1))
    +    if (willWrap && !this.options.wrap) return active
    +    var delta = direction == 'prev' ? -1 : 1
    +    var itemIndex = (activeIndex + delta) % this.$items.length
    +    return this.$items.eq(itemIndex)
    +  }
    +
    +  Carousel.prototype.to = function (pos) {
    +    var that        = this
    +    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
    +
    +    if (pos > (this.$items.length - 1) || pos < 0) return
    +
    +    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
    +    if (activeIndex == pos) return this.pause().cycle()
    +
    +    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
    +  }
    +
    +  Carousel.prototype.pause = function (e) {
    +    e || (this.paused = true)
    +
    +    if (this.$element.find('.next, .prev').length && $.support.transition) {
    +      this.$element.trigger($.support.transition.end)
    +      this.cycle(true)
    +    }
    +
    +    this.interval = clearInterval(this.interval)
    +
    +    return this
    +  }
    +
    +  Carousel.prototype.next = function () {
    +    if (this.sliding) return
    +    return this.slide('next')
    +  }
    +
    +  Carousel.prototype.prev = function () {
    +    if (this.sliding) return
    +    return this.slide('prev')
    +  }
    +
    +  Carousel.prototype.slide = function (type, next) {
    +    var $active   = this.$element.find('.item.active')
    +    var $next     = next || this.getItemForDirection(type, $active)
    +    var isCycling = this.interval
    +    var direction = type == 'next' ? 'left' : 'right'
    +    var that      = this
    +
    +    if ($next.hasClass('active')) return (this.sliding = false)
    +
    +    var relatedTarget = $next[0]
    +    var slideEvent = $.Event('slide.bs.carousel', {
    +      relatedTarget: relatedTarget,
    +      direction: direction
    +    })
    +    this.$element.trigger(slideEvent)
    +    if (slideEvent.isDefaultPrevented()) return
    +
    +    this.sliding = true
    +
    +    isCycling && this.pause()
    +
    +    if (this.$indicators.length) {
    +      this.$indicators.find('.active').removeClass('active')
    +      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
    +      $nextIndicator && $nextIndicator.addClass('active')
    +    }
    +
    +    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
    +    if ($.support.transition && this.$element.hasClass('slide')) {
    +      $next.addClass(type)
    +      $next[0].offsetWidth // force reflow
    +      $active.addClass(direction)
    +      $next.addClass(direction)
    +      $active
    +        .one('bsTransitionEnd', function () {
    +          $next.removeClass([type, direction].join(' ')).addClass('active')
    +          $active.removeClass(['active', direction].join(' '))
    +          that.sliding = false
    +          setTimeout(function () {
    +            that.$element.trigger(slidEvent)
    +          }, 0)
    +        })
    +        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
    +    } else {
    +      $active.removeClass('active')
    +      $next.addClass('active')
    +      this.sliding = false
    +      this.$element.trigger(slidEvent)
    +    }
    +
    +    isCycling && this.cycle()
    +
    +    return this
    +  }
    +
    +
    +  // CAROUSEL PLUGIN DEFINITION
    +  // ==========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.carousel')
    +      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
    +      var action  = typeof option == 'string' ? option : options.slide
    +
    +      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
    +      if (typeof option == 'number') data.to(option)
    +      else if (action) data[action]()
    +      else if (options.interval) data.pause().cycle()
    +    })
    +  }
    +
    +  var old = $.fn.carousel
    +
    +  $.fn.carousel             = Plugin
    +  $.fn.carousel.Constructor = Carousel
    +
    +
    +  // CAROUSEL NO CONFLICT
    +  // ====================
    +
    +  $.fn.carousel.noConflict = function () {
    +    $.fn.carousel = old
    +    return this
    +  }
    +
    +
    +  // CAROUSEL DATA-API
    +  // =================
    +
    +  var clickHandler = function (e) {
    +    var href
    +    var $this   = $(this)
    +    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
    +    if (!$target.hasClass('carousel')) return
    +    var options = $.extend({}, $target.data(), $this.data())
    +    var slideIndex = $this.attr('data-slide-to')
    +    if (slideIndex) options.interval = false
    +
    +    Plugin.call($target, options)
    +
    +    if (slideIndex) {
    +      $target.data('bs.carousel').to(slideIndex)
    +    }
    +
    +    e.preventDefault()
    +  }
    +
    +  $(document)
    +    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
    +    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
    +
    +  $(window).on('load', function () {
    +    $('[data-ride="carousel"]').each(function () {
    +      var $carousel = $(this)
    +      Plugin.call($carousel, $carousel.data())
    +    })
    +  })
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: collapse.js v3.3.7
    + * http://getbootstrap.com/javascript/#collapse
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +/* jshint latedef: false */
    +
    ++function ($) {
    +  'use strict';
    +
    +  // COLLAPSE PUBLIC CLASS DEFINITION
    +  // ================================
    +
    +  var Collapse = function (element, options) {
    +    this.$element      = $(element)
    +    this.options       = $.extend({}, Collapse.DEFAULTS, options)
    +    this.$trigger      = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
    +                           '[data-toggle="collapse"][data-target="#' + element.id + '"]')
    +    this.transitioning = null
    +
    +    if (this.options.parent) {
    +      this.$parent = this.getParent()
    +    } else {
    +      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
    +    }
    +
    +    if (this.options.toggle) this.toggle()
    +  }
    +
    +  Collapse.VERSION  = '3.3.7'
    +
    +  Collapse.TRANSITION_DURATION = 350
    +
    +  Collapse.DEFAULTS = {
    +    toggle: true
    +  }
    +
    +  Collapse.prototype.dimension = function () {
    +    var hasWidth = this.$element.hasClass('width')
    +    return hasWidth ? 'width' : 'height'
    +  }
    +
    +  Collapse.prototype.show = function () {
    +    if (this.transitioning || this.$element.hasClass('in')) return
    +
    +    var activesData
    +    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
    +
    +    if (actives && actives.length) {
    +      activesData = actives.data('bs.collapse')
    +      if (activesData && activesData.transitioning) return
    +    }
    +
    +    var startEvent = $.Event('show.bs.collapse')
    +    this.$element.trigger(startEvent)
    +    if (startEvent.isDefaultPrevented()) return
    +
    +    if (actives && actives.length) {
    +      Plugin.call(actives, 'hide')
    +      activesData || actives.data('bs.collapse', null)
    +    }
    +
    +    var dimension = this.dimension()
    +
    +    this.$element
    +      .removeClass('collapse')
    +      .addClass('collapsing')[dimension](0)
    +      .attr('aria-expanded', true)
    +
    +    this.$trigger
    +      .removeClass('collapsed')
    +      .attr('aria-expanded', true)
    +
    +    this.transitioning = 1
    +
    +    var complete = function () {
    +      this.$element
    +        .removeClass('collapsing')
    +        .addClass('collapse in')[dimension]('')
    +      this.transitioning = 0
    +      this.$element
    +        .trigger('shown.bs.collapse')
    +    }
    +
    +    if (!$.support.transition) return complete.call(this)
    +
    +    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
    +
    +    this.$element
    +      .one('bsTransitionEnd', $.proxy(complete, this))
    +      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
    +  }
    +
    +  Collapse.prototype.hide = function () {
    +    if (this.transitioning || !this.$element.hasClass('in')) return
    +
    +    var startEvent = $.Event('hide.bs.collapse')
    +    this.$element.trigger(startEvent)
    +    if (startEvent.isDefaultPrevented()) return
    +
    +    var dimension = this.dimension()
    +
    +    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
    +
    +    this.$element
    +      .addClass('collapsing')
    +      .removeClass('collapse in')
    +      .attr('aria-expanded', false)
    +
    +    this.$trigger
    +      .addClass('collapsed')
    +      .attr('aria-expanded', false)
    +
    +    this.transitioning = 1
    +
    +    var complete = function () {
    +      this.transitioning = 0
    +      this.$element
    +        .removeClass('collapsing')
    +        .addClass('collapse')
    +        .trigger('hidden.bs.collapse')
    +    }
    +
    +    if (!$.support.transition) return complete.call(this)
    +
    +    this.$element
    +      [dimension](0)
    +      .one('bsTransitionEnd', $.proxy(complete, this))
    +      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
    +  }
    +
    +  Collapse.prototype.toggle = function () {
    +    this[this.$element.hasClass('in') ? 'hide' : 'show']()
    +  }
    +
    +  Collapse.prototype.getParent = function () {
    +    return $(this.options.parent)
    +      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
    +      .each($.proxy(function (i, element) {
    +        var $element = $(element)
    +        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
    +      }, this))
    +      .end()
    +  }
    +
    +  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
    +    var isOpen = $element.hasClass('in')
    +
    +    $element.attr('aria-expanded', isOpen)
    +    $trigger
    +      .toggleClass('collapsed', !isOpen)
    +      .attr('aria-expanded', isOpen)
    +  }
    +
    +  function getTargetFromTrigger($trigger) {
    +    var href
    +    var target = $trigger.attr('data-target')
    +      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
    +
    +    return $(target)
    +  }
    +
    +
    +  // COLLAPSE PLUGIN DEFINITION
    +  // ==========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.collapse')
    +      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
    +
    +      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
    +      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
    +      if (typeof option == 'string') data[option]()
    +    })
    +  }
    +
    +  var old = $.fn.collapse
    +
    +  $.fn.collapse             = Plugin
    +  $.fn.collapse.Constructor = Collapse
    +
    +
    +  // COLLAPSE NO CONFLICT
    +  // ====================
    +
    +  $.fn.collapse.noConflict = function () {
    +    $.fn.collapse = old
    +    return this
    +  }
    +
    +
    +  // COLLAPSE DATA-API
    +  // =================
    +
    +  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
    +    var $this   = $(this)
    +
    +    if (!$this.attr('data-target')) e.preventDefault()
    +
    +    var $target = getTargetFromTrigger($this)
    +    var data    = $target.data('bs.collapse')
    +    var option  = data ? 'toggle' : $this.data()
    +
    +    Plugin.call($target, option)
    +  })
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: dropdown.js v3.3.7
    + * http://getbootstrap.com/javascript/#dropdowns
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // DROPDOWN CLASS DEFINITION
    +  // =========================
    +
    +  var backdrop = '.dropdown-backdrop'
    +  var toggle   = '[data-toggle="dropdown"]'
    +  var Dropdown = function (element) {
    +    $(element).on('click.bs.dropdown', this.toggle)
    +  }
    +
    +  Dropdown.VERSION = '3.3.7'
    +
    +  function getParent($this) {
    +    var selector = $this.attr('data-target')
    +
    +    if (!selector) {
    +      selector = $this.attr('href')
    +      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
    +    }
    +
    +    var $parent = selector && $(selector)
    +
    +    return $parent && $parent.length ? $parent : $this.parent()
    +  }
    +
    +  function clearMenus(e) {
    +    if (e && e.which === 3) return
    +    $(backdrop).remove()
    +    $(toggle).each(function () {
    +      var $this         = $(this)
    +      var $parent       = getParent($this)
    +      var relatedTarget = { relatedTarget: this }
    +
    +      if (!$parent.hasClass('open')) return
    +
    +      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
    +
    +      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
    +
    +      if (e.isDefaultPrevented()) return
    +
    +      $this.attr('aria-expanded', 'false')
    +      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
    +    })
    +  }
    +
    +  Dropdown.prototype.toggle = function (e) {
    +    var $this = $(this)
    +
    +    if ($this.is('.disabled, :disabled')) return
    +
    +    var $parent  = getParent($this)
    +    var isActive = $parent.hasClass('open')
    +
    +    clearMenus()
    +
    +    if (!isActive) {
    +      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
    +        // if mobile we use a backdrop because click events don't delegate
    +        $(document.createElement('div'))
    +          .addClass('dropdown-backdrop')
    +          .insertAfter($(this))
    +          .on('click', clearMenus)
    +      }
    +
    +      var relatedTarget = { relatedTarget: this }
    +      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
    +
    +      if (e.isDefaultPrevented()) return
    +
    +      $this
    +        .trigger('focus')
    +        .attr('aria-expanded', 'true')
    +
    +      $parent
    +        .toggleClass('open')
    +        .trigger($.Event('shown.bs.dropdown', relatedTarget))
    +    }
    +
    +    return false
    +  }
    +
    +  Dropdown.prototype.keydown = function (e) {
    +    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
    +
    +    var $this = $(this)
    +
    +    e.preventDefault()
    +    e.stopPropagation()
    +
    +    if ($this.is('.disabled, :disabled')) return
    +
    +    var $parent  = getParent($this)
    +    var isActive = $parent.hasClass('open')
    +
    +    if (!isActive && e.which != 27 || isActive && e.which == 27) {
    +      if (e.which == 27) $parent.find(toggle).trigger('focus')
    +      return $this.trigger('click')
    +    }
    +
    +    var desc = ' li:not(.disabled):visible a'
    +    var $items = $parent.find('.dropdown-menu' + desc)
    +
    +    if (!$items.length) return
    +
    +    var index = $items.index(e.target)
    +
    +    if (e.which == 38 && index > 0)                 index--         // up
    +    if (e.which == 40 && index < $items.length - 1) index++         // down
    +    if (!~index)                                    index = 0
    +
    +    $items.eq(index).trigger('focus')
    +  }
    +
    +
    +  // DROPDOWN PLUGIN DEFINITION
    +  // ==========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this = $(this)
    +      var data  = $this.data('bs.dropdown')
    +
    +      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
    +      if (typeof option == 'string') data[option].call($this)
    +    })
    +  }
    +
    +  var old = $.fn.dropdown
    +
    +  $.fn.dropdown             = Plugin
    +  $.fn.dropdown.Constructor = Dropdown
    +
    +
    +  // DROPDOWN NO CONFLICT
    +  // ====================
    +
    +  $.fn.dropdown.noConflict = function () {
    +    $.fn.dropdown = old
    +    return this
    +  }
    +
    +
    +  // APPLY TO STANDARD DROPDOWN ELEMENTS
    +  // ===================================
    +
    +  $(document)
    +    .on('click.bs.dropdown.data-api', clearMenus)
    +    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
    +    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
    +    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
    +    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: modal.js v3.3.7
    + * http://getbootstrap.com/javascript/#modals
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // MODAL CLASS DEFINITION
    +  // ======================
    +
    +  var Modal = function (element, options) {
    +    this.options             = options
    +    this.$body               = $(document.body)
    +    this.$element            = $(element)
    +    this.$dialog             = this.$element.find('.modal-dialog')
    +    this.$backdrop           = null
    +    this.isShown             = null
    +    this.originalBodyPad     = null
    +    this.scrollbarWidth      = 0
    +    this.ignoreBackdropClick = false
    +
    +    if (this.options.remote) {
    +      this.$element
    +        .find('.modal-content')
    +        .load(this.options.remote, $.proxy(function () {
    +          this.$element.trigger('loaded.bs.modal')
    +        }, this))
    +    }
    +  }
    +
    +  Modal.VERSION  = '3.3.7'
    +
    +  Modal.TRANSITION_DURATION = 300
    +  Modal.BACKDROP_TRANSITION_DURATION = 150
    +
    +  Modal.DEFAULTS = {
    +    backdrop: true,
    +    keyboard: true,
    +    show: true
    +  }
    +
    +  Modal.prototype.toggle = function (_relatedTarget) {
    +    return this.isShown ? this.hide() : this.show(_relatedTarget)
    +  }
    +
    +  Modal.prototype.show = function (_relatedTarget) {
    +    var that = this
    +    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
    +
    +    this.$element.trigger(e)
    +
    +    if (this.isShown || e.isDefaultPrevented()) return
    +
    +    this.isShown = true
    +
    +    this.checkScrollbar()
    +    this.setScrollbar()
    +    this.$body.addClass('modal-open')
    +
    +    this.escape()
    +    this.resize()
    +
    +    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
    +
    +    this.$dialog.on('mousedown.dismiss.bs.modal', function () {
    +      that.$element.one('mouseup.dismiss.bs.modal', function (e) {
    +        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
    +      })
    +    })
    +
    +    this.backdrop(function () {
    +      var transition = $.support.transition && that.$element.hasClass('fade')
    +
    +      if (!that.$element.parent().length) {
    +        that.$element.appendTo(that.$body) // don't move modals dom position
    +      }
    +
    +      that.$element
    +        .show()
    +        .scrollTop(0)
    +
    +      that.adjustDialog()
    +
    +      if (transition) {
    +        that.$element[0].offsetWidth // force reflow
    +      }
    +
    +      that.$element.addClass('in')
    +
    +      that.enforceFocus()
    +
    +      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
    +
    +      transition ?
    +        that.$dialog // wait for modal to slide in
    +          .one('bsTransitionEnd', function () {
    +            that.$element.trigger('focus').trigger(e)
    +          })
    +          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
    +        that.$element.trigger('focus').trigger(e)
    +    })
    +  }
    +
    +  Modal.prototype.hide = function (e) {
    +    if (e) e.preventDefault()
    +
    +    e = $.Event('hide.bs.modal')
    +
    +    this.$element.trigger(e)
    +
    +    if (!this.isShown || e.isDefaultPrevented()) return
    +
    +    this.isShown = false
    +
    +    this.escape()
    +    this.resize()
    +
    +    $(document).off('focusin.bs.modal')
    +
    +    this.$element
    +      .removeClass('in')
    +      .off('click.dismiss.bs.modal')
    +      .off('mouseup.dismiss.bs.modal')
    +
    +    this.$dialog.off('mousedown.dismiss.bs.modal')
    +
    +    $.support.transition && this.$element.hasClass('fade') ?
    +      this.$element
    +        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
    +        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
    +      this.hideModal()
    +  }
    +
    +  Modal.prototype.enforceFocus = function () {
    +    $(document)
    +      .off('focusin.bs.modal') // guard against infinite focus loop
    +      .on('focusin.bs.modal', $.proxy(function (e) {
    +        if (document !== e.target &&
    +            this.$element[0] !== e.target &&
    +            !this.$element.has(e.target).length) {
    +          this.$element.trigger('focus')
    +        }
    +      }, this))
    +  }
    +
    +  Modal.prototype.escape = function () {
    +    if (this.isShown && this.options.keyboard) {
    +      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
    +        e.which == 27 && this.hide()
    +      }, this))
    +    } else if (!this.isShown) {
    +      this.$element.off('keydown.dismiss.bs.modal')
    +    }
    +  }
    +
    +  Modal.prototype.resize = function () {
    +    if (this.isShown) {
    +      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
    +    } else {
    +      $(window).off('resize.bs.modal')
    +    }
    +  }
    +
    +  Modal.prototype.hideModal = function () {
    +    var that = this
    +    this.$element.hide()
    +    this.backdrop(function () {
    +      that.$body.removeClass('modal-open')
    +      that.resetAdjustments()
    +      that.resetScrollbar()
    +      that.$element.trigger('hidden.bs.modal')
    +    })
    +  }
    +
    +  Modal.prototype.removeBackdrop = function () {
    +    this.$backdrop && this.$backdrop.remove()
    +    this.$backdrop = null
    +  }
    +
    +  Modal.prototype.backdrop = function (callback) {
    +    var that = this
    +    var animate = this.$element.hasClass('fade') ? 'fade' : ''
    +
    +    if (this.isShown && this.options.backdrop) {
    +      var doAnimate = $.support.transition && animate
    +
    +      this.$backdrop = $(document.createElement('div'))
    +        .addClass('modal-backdrop ' + animate)
    +        .appendTo(this.$body)
    +
    +      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
    +        if (this.ignoreBackdropClick) {
    +          this.ignoreBackdropClick = false
    +          return
    +        }
    +        if (e.target !== e.currentTarget) return
    +        this.options.backdrop == 'static'
    +          ? this.$element[0].focus()
    +          : this.hide()
    +      }, this))
    +
    +      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
    +
    +      this.$backdrop.addClass('in')
    +
    +      if (!callback) return
    +
    +      doAnimate ?
    +        this.$backdrop
    +          .one('bsTransitionEnd', callback)
    +          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
    +        callback()
    +
    +    } else if (!this.isShown && this.$backdrop) {
    +      this.$backdrop.removeClass('in')
    +
    +      var callbackRemove = function () {
    +        that.removeBackdrop()
    +        callback && callback()
    +      }
    +      $.support.transition && this.$element.hasClass('fade') ?
    +        this.$backdrop
    +          .one('bsTransitionEnd', callbackRemove)
    +          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
    +        callbackRemove()
    +
    +    } else if (callback) {
    +      callback()
    +    }
    +  }
    +
    +  // these following methods are used to handle overflowing modals
    +
    +  Modal.prototype.handleUpdate = function () {
    +    this.adjustDialog()
    +  }
    +
    +  Modal.prototype.adjustDialog = function () {
    +    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
    +
    +    this.$element.css({
    +      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
    +      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
    +    })
    +  }
    +
    +  Modal.prototype.resetAdjustments = function () {
    +    this.$element.css({
    +      paddingLeft: '',
    +      paddingRight: ''
    +    })
    +  }
    +
    +  Modal.prototype.checkScrollbar = function () {
    +    var fullWindowWidth = window.innerWidth
    +    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
    +      var documentElementRect = document.documentElement.getBoundingClientRect()
    +      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
    +    }
    +    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
    +    this.scrollbarWidth = this.measureScrollbar()
    +  }
    +
    +  Modal.prototype.setScrollbar = function () {
    +    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
    +    this.originalBodyPad = document.body.style.paddingRight || ''
    +    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
    +  }
    +
    +  Modal.prototype.resetScrollbar = function () {
    +    this.$body.css('padding-right', this.originalBodyPad)
    +  }
    +
    +  Modal.prototype.measureScrollbar = function () { // thx walsh
    +    var scrollDiv = document.createElement('div')
    +    scrollDiv.className = 'modal-scrollbar-measure'
    +    this.$body.append(scrollDiv)
    +    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
    +    this.$body[0].removeChild(scrollDiv)
    +    return scrollbarWidth
    +  }
    +
    +
    +  // MODAL PLUGIN DEFINITION
    +  // =======================
    +
    +  function Plugin(option, _relatedTarget) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.modal')
    +      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
    +
    +      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
    +      if (typeof option == 'string') data[option](_relatedTarget)
    +      else if (options.show) data.show(_relatedTarget)
    +    })
    +  }
    +
    +  var old = $.fn.modal
    +
    +  $.fn.modal             = Plugin
    +  $.fn.modal.Constructor = Modal
    +
    +
    +  // MODAL NO CONFLICT
    +  // =================
    +
    +  $.fn.modal.noConflict = function () {
    +    $.fn.modal = old
    +    return this
    +  }
    +
    +
    +  // MODAL DATA-API
    +  // ==============
    +
    +  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
    +    var $this   = $(this)
    +    var href    = $this.attr('href')
    +    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
    +    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
    +
    +    if ($this.is('a')) e.preventDefault()
    +
    +    $target.one('show.bs.modal', function (showEvent) {
    +      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
    +      $target.one('hidden.bs.modal', function () {
    +        $this.is(':visible') && $this.trigger('focus')
    +      })
    +    })
    +    Plugin.call($target, option, this)
    +  })
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: tooltip.js v3.3.7
    + * http://getbootstrap.com/javascript/#tooltip
    + * Inspired by the original jQuery.tipsy by Jason Frame
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // TOOLTIP PUBLIC CLASS DEFINITION
    +  // ===============================
    +
    +  var Tooltip = function (element, options) {
    +    this.type       = null
    +    this.options    = null
    +    this.enabled    = null
    +    this.timeout    = null
    +    this.hoverState = null
    +    this.$element   = null
    +    this.inState    = null
    +
    +    this.init('tooltip', element, options)
    +  }
    +
    +  Tooltip.VERSION  = '3.3.7'
    +
    +  Tooltip.TRANSITION_DURATION = 150
    +
    +  Tooltip.DEFAULTS = {
    +    animation: true,
    +    placement: 'top',
    +    selector: false,
    +    template: '',
    +    trigger: 'hover focus',
    +    title: '',
    +    delay: 0,
    +    html: false,
    +    container: false,
    +    viewport: {
    +      selector: 'body',
    +      padding: 0
    +    }
    +  }
    +
    +  Tooltip.prototype.init = function (type, element, options) {
    +    this.enabled   = true
    +    this.type      = type
    +    this.$element  = $(element)
    +    this.options   = this.getOptions(options)
    +    this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
    +    this.inState   = { click: false, hover: false, focus: false }
    +
    +    if (this.$element[0] instanceof document.constructor && !this.options.selector) {
    +      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
    +    }
    +
    +    var triggers = this.options.trigger.split(' ')
    +
    +    for (var i = triggers.length; i--;) {
    +      var trigger = triggers[i]
    +
    +      if (trigger == 'click') {
    +        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
    +      } else if (trigger != 'manual') {
    +        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
    +        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
    +
    +        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
    +        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
    +      }
    +    }
    +
    +    this.options.selector ?
    +      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
    +      this.fixTitle()
    +  }
    +
    +  Tooltip.prototype.getDefaults = function () {
    +    return Tooltip.DEFAULTS
    +  }
    +
    +  Tooltip.prototype.getOptions = function (options) {
    +    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
    +
    +    if (options.delay && typeof options.delay == 'number') {
    +      options.delay = {
    +        show: options.delay,
    +        hide: options.delay
    +      }
    +    }
    +
    +    return options
    +  }
    +
    +  Tooltip.prototype.getDelegateOptions = function () {
    +    var options  = {}
    +    var defaults = this.getDefaults()
    +
    +    this._options && $.each(this._options, function (key, value) {
    +      if (defaults[key] != value) options[key] = value
    +    })
    +
    +    return options
    +  }
    +
    +  Tooltip.prototype.enter = function (obj) {
    +    var self = obj instanceof this.constructor ?
    +      obj : $(obj.currentTarget).data('bs.' + this.type)
    +
    +    if (!self) {
    +      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
    +      $(obj.currentTarget).data('bs.' + this.type, self)
    +    }
    +
    +    if (obj instanceof $.Event) {
    +      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
    +    }
    +
    +    if (self.tip().hasClass('in') || self.hoverState == 'in') {
    +      self.hoverState = 'in'
    +      return
    +    }
    +
    +    clearTimeout(self.timeout)
    +
    +    self.hoverState = 'in'
    +
    +    if (!self.options.delay || !self.options.delay.show) return self.show()
    +
    +    self.timeout = setTimeout(function () {
    +      if (self.hoverState == 'in') self.show()
    +    }, self.options.delay.show)
    +  }
    +
    +  Tooltip.prototype.isInStateTrue = function () {
    +    for (var key in this.inState) {
    +      if (this.inState[key]) return true
    +    }
    +
    +    return false
    +  }
    +
    +  Tooltip.prototype.leave = function (obj) {
    +    var self = obj instanceof this.constructor ?
    +      obj : $(obj.currentTarget).data('bs.' + this.type)
    +
    +    if (!self) {
    +      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
    +      $(obj.currentTarget).data('bs.' + this.type, self)
    +    }
    +
    +    if (obj instanceof $.Event) {
    +      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
    +    }
    +
    +    if (self.isInStateTrue()) return
    +
    +    clearTimeout(self.timeout)
    +
    +    self.hoverState = 'out'
    +
    +    if (!self.options.delay || !self.options.delay.hide) return self.hide()
    +
    +    self.timeout = setTimeout(function () {
    +      if (self.hoverState == 'out') self.hide()
    +    }, self.options.delay.hide)
    +  }
    +
    +  Tooltip.prototype.show = function () {
    +    var e = $.Event('show.bs.' + this.type)
    +
    +    if (this.hasContent() && this.enabled) {
    +      this.$element.trigger(e)
    +
    +      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
    +      if (e.isDefaultPrevented() || !inDom) return
    +      var that = this
    +
    +      var $tip = this.tip()
    +
    +      var tipId = this.getUID(this.type)
    +
    +      this.setContent()
    +      $tip.attr('id', tipId)
    +      this.$element.attr('aria-describedby', tipId)
    +
    +      if (this.options.animation) $tip.addClass('fade')
    +
    +      var placement = typeof this.options.placement == 'function' ?
    +        this.options.placement.call(this, $tip[0], this.$element[0]) :
    +        this.options.placement
    +
    +      var autoToken = /\s?auto?\s?/i
    +      var autoPlace = autoToken.test(placement)
    +      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
    +
    +      $tip
    +        .detach()
    +        .css({ top: 0, left: 0, display: 'block' })
    +        .addClass(placement)
    +        .data('bs.' + this.type, this)
    +
    +      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
    +      this.$element.trigger('inserted.bs.' + this.type)
    +
    +      var pos          = this.getPosition()
    +      var actualWidth  = $tip[0].offsetWidth
    +      var actualHeight = $tip[0].offsetHeight
    +
    +      if (autoPlace) {
    +        var orgPlacement = placement
    +        var viewportDim = this.getPosition(this.$viewport)
    +
    +        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :
    +                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :
    +                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :
    +                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :
    +                    placement
    +
    +        $tip
    +          .removeClass(orgPlacement)
    +          .addClass(placement)
    +      }
    +
    +      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
    +
    +      this.applyPlacement(calculatedOffset, placement)
    +
    +      var complete = function () {
    +        var prevHoverState = that.hoverState
    +        that.$element.trigger('shown.bs.' + that.type)
    +        that.hoverState = null
    +
    +        if (prevHoverState == 'out') that.leave(that)
    +      }
    +
    +      $.support.transition && this.$tip.hasClass('fade') ?
    +        $tip
    +          .one('bsTransitionEnd', complete)
    +          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
    +        complete()
    +    }
    +  }
    +
    +  Tooltip.prototype.applyPlacement = function (offset, placement) {
    +    var $tip   = this.tip()
    +    var width  = $tip[0].offsetWidth
    +    var height = $tip[0].offsetHeight
    +
    +    // manually read margins because getBoundingClientRect includes difference
    +    var marginTop = parseInt($tip.css('margin-top'), 10)
    +    var marginLeft = parseInt($tip.css('margin-left'), 10)
    +
    +    // we must check for NaN for ie 8/9
    +    if (isNaN(marginTop))  marginTop  = 0
    +    if (isNaN(marginLeft)) marginLeft = 0
    +
    +    offset.top  += marginTop
    +    offset.left += marginLeft
    +
    +    // $.fn.offset doesn't round pixel values
    +    // so we use setOffset directly with our own function B-0
    +    $.offset.setOffset($tip[0], $.extend({
    +      using: function (props) {
    +        $tip.css({
    +          top: Math.round(props.top),
    +          left: Math.round(props.left)
    +        })
    +      }
    +    }, offset), 0)
    +
    +    $tip.addClass('in')
    +
    +    // check to see if placing tip in new offset caused the tip to resize itself
    +    var actualWidth  = $tip[0].offsetWidth
    +    var actualHeight = $tip[0].offsetHeight
    +
    +    if (placement == 'top' && actualHeight != height) {
    +      offset.top = offset.top + height - actualHeight
    +    }
    +
    +    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
    +
    +    if (delta.left) offset.left += delta.left
    +    else offset.top += delta.top
    +
    +    var isVertical          = /top|bottom/.test(placement)
    +    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
    +    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
    +
    +    $tip.offset(offset)
    +    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
    +  }
    +
    +  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
    +    this.arrow()
    +      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
    +      .css(isVertical ? 'top' : 'left', '')
    +  }
    +
    +  Tooltip.prototype.setContent = function () {
    +    var $tip  = this.tip()
    +    var title = this.getTitle()
    +
    +    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
    +    $tip.removeClass('fade in top bottom left right')
    +  }
    +
    +  Tooltip.prototype.hide = function (callback) {
    +    var that = this
    +    var $tip = $(this.$tip)
    +    var e    = $.Event('hide.bs.' + this.type)
    +
    +    function complete() {
    +      if (that.hoverState != 'in') $tip.detach()
    +      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
    +        that.$element
    +          .removeAttr('aria-describedby')
    +          .trigger('hidden.bs.' + that.type)
    +      }
    +      callback && callback()
    +    }
    +
    +    this.$element.trigger(e)
    +
    +    if (e.isDefaultPrevented()) return
    +
    +    $tip.removeClass('in')
    +
    +    $.support.transition && $tip.hasClass('fade') ?
    +      $tip
    +        .one('bsTransitionEnd', complete)
    +        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
    +      complete()
    +
    +    this.hoverState = null
    +
    +    return this
    +  }
    +
    +  Tooltip.prototype.fixTitle = function () {
    +    var $e = this.$element
    +    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
    +      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
    +    }
    +  }
    +
    +  Tooltip.prototype.hasContent = function () {
    +    return this.getTitle()
    +  }
    +
    +  Tooltip.prototype.getPosition = function ($element) {
    +    $element   = $element || this.$element
    +
    +    var el     = $element[0]
    +    var isBody = el.tagName == 'BODY'
    +
    +    var elRect    = el.getBoundingClientRect()
    +    if (elRect.width == null) {
    +      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
    +      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
    +    }
    +    var isSvg = window.SVGElement && el instanceof window.SVGElement
    +    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
    +    // See https://github.com/twbs/bootstrap/issues/20280
    +    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
    +    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
    +    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
    +
    +    return $.extend({}, elRect, scroll, outerDims, elOffset)
    +  }
    +
    +  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
    +    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
    +           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
    +           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
    +        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
    +
    +  }
    +
    +  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
    +    var delta = { top: 0, left: 0 }
    +    if (!this.$viewport) return delta
    +
    +    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
    +    var viewportDimensions = this.getPosition(this.$viewport)
    +
    +    if (/right|left/.test(placement)) {
    +      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
    +      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
    +      if (topEdgeOffset < viewportDimensions.top) { // top overflow
    +        delta.top = viewportDimensions.top - topEdgeOffset
    +      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
    +        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
    +      }
    +    } else {
    +      var leftEdgeOffset  = pos.left - viewportPadding
    +      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
    +      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
    +        delta.left = viewportDimensions.left - leftEdgeOffset
    +      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
    +        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
    +      }
    +    }
    +
    +    return delta
    +  }
    +
    +  Tooltip.prototype.getTitle = function () {
    +    var title
    +    var $e = this.$element
    +    var o  = this.options
    +
    +    title = $e.attr('data-original-title')
    +      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
    +
    +    return title
    +  }
    +
    +  Tooltip.prototype.getUID = function (prefix) {
    +    do prefix += ~~(Math.random() * 1000000)
    +    while (document.getElementById(prefix))
    +    return prefix
    +  }
    +
    +  Tooltip.prototype.tip = function () {
    +    if (!this.$tip) {
    +      this.$tip = $(this.options.template)
    +      if (this.$tip.length != 1) {
    +        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
    +      }
    +    }
    +    return this.$tip
    +  }
    +
    +  Tooltip.prototype.arrow = function () {
    +    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
    +  }
    +
    +  Tooltip.prototype.enable = function () {
    +    this.enabled = true
    +  }
    +
    +  Tooltip.prototype.disable = function () {
    +    this.enabled = false
    +  }
    +
    +  Tooltip.prototype.toggleEnabled = function () {
    +    this.enabled = !this.enabled
    +  }
    +
    +  Tooltip.prototype.toggle = function (e) {
    +    var self = this
    +    if (e) {
    +      self = $(e.currentTarget).data('bs.' + this.type)
    +      if (!self) {
    +        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
    +        $(e.currentTarget).data('bs.' + this.type, self)
    +      }
    +    }
    +
    +    if (e) {
    +      self.inState.click = !self.inState.click
    +      if (self.isInStateTrue()) self.enter(self)
    +      else self.leave(self)
    +    } else {
    +      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
    +    }
    +  }
    +
    +  Tooltip.prototype.destroy = function () {
    +    var that = this
    +    clearTimeout(this.timeout)
    +    this.hide(function () {
    +      that.$element.off('.' + that.type).removeData('bs.' + that.type)
    +      if (that.$tip) {
    +        that.$tip.detach()
    +      }
    +      that.$tip = null
    +      that.$arrow = null
    +      that.$viewport = null
    +      that.$element = null
    +    })
    +  }
    +
    +
    +  // TOOLTIP PLUGIN DEFINITION
    +  // =========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.tooltip')
    +      var options = typeof option == 'object' && option
    +
    +      if (!data && /destroy|hide/.test(option)) return
    +      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
    +      if (typeof option == 'string') data[option]()
    +    })
    +  }
    +
    +  var old = $.fn.tooltip
    +
    +  $.fn.tooltip             = Plugin
    +  $.fn.tooltip.Constructor = Tooltip
    +
    +
    +  // TOOLTIP NO CONFLICT
    +  // ===================
    +
    +  $.fn.tooltip.noConflict = function () {
    +    $.fn.tooltip = old
    +    return this
    +  }
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: popover.js v3.3.7
    + * http://getbootstrap.com/javascript/#popovers
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // POPOVER PUBLIC CLASS DEFINITION
    +  // ===============================
    +
    +  var Popover = function (element, options) {
    +    this.init('popover', element, options)
    +  }
    +
    +  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
    +
    +  Popover.VERSION  = '3.3.7'
    +
    +  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
    +    placement: 'right',
    +    trigger: 'click',
    +    content: '',
    +    template: ''
    +  })
    +
    +
    +  // NOTE: POPOVER EXTENDS tooltip.js
    +  // ================================
    +
    +  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
    +
    +  Popover.prototype.constructor = Popover
    +
    +  Popover.prototype.getDefaults = function () {
    +    return Popover.DEFAULTS
    +  }
    +
    +  Popover.prototype.setContent = function () {
    +    var $tip    = this.tip()
    +    var title   = this.getTitle()
    +    var content = this.getContent()
    +
    +    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
    +    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
    +      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
    +    ](content)
    +
    +    $tip.removeClass('fade top bottom left right in')
    +
    +    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
    +    // this manually by checking the contents.
    +    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
    +  }
    +
    +  Popover.prototype.hasContent = function () {
    +    return this.getTitle() || this.getContent()
    +  }
    +
    +  Popover.prototype.getContent = function () {
    +    var $e = this.$element
    +    var o  = this.options
    +
    +    return $e.attr('data-content')
    +      || (typeof o.content == 'function' ?
    +            o.content.call($e[0]) :
    +            o.content)
    +  }
    +
    +  Popover.prototype.arrow = function () {
    +    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
    +  }
    +
    +
    +  // POPOVER PLUGIN DEFINITION
    +  // =========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.popover')
    +      var options = typeof option == 'object' && option
    +
    +      if (!data && /destroy|hide/.test(option)) return
    +      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
    +      if (typeof option == 'string') data[option]()
    +    })
    +  }
    +
    +  var old = $.fn.popover
    +
    +  $.fn.popover             = Plugin
    +  $.fn.popover.Constructor = Popover
    +
    +
    +  // POPOVER NO CONFLICT
    +  // ===================
    +
    +  $.fn.popover.noConflict = function () {
    +    $.fn.popover = old
    +    return this
    +  }
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: scrollspy.js v3.3.7
    + * http://getbootstrap.com/javascript/#scrollspy
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // SCROLLSPY CLASS DEFINITION
    +  // ==========================
    +
    +  function ScrollSpy(element, options) {
    +    this.$body          = $(document.body)
    +    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
    +    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
    +    this.selector       = (this.options.target || '') + ' .nav li > a'
    +    this.offsets        = []
    +    this.targets        = []
    +    this.activeTarget   = null
    +    this.scrollHeight   = 0
    +
    +    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
    +    this.refresh()
    +    this.process()
    +  }
    +
    +  ScrollSpy.VERSION  = '3.3.7'
    +
    +  ScrollSpy.DEFAULTS = {
    +    offset: 10
    +  }
    +
    +  ScrollSpy.prototype.getScrollHeight = function () {
    +    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
    +  }
    +
    +  ScrollSpy.prototype.refresh = function () {
    +    var that          = this
    +    var offsetMethod  = 'offset'
    +    var offsetBase    = 0
    +
    +    this.offsets      = []
    +    this.targets      = []
    +    this.scrollHeight = this.getScrollHeight()
    +
    +    if (!$.isWindow(this.$scrollElement[0])) {
    +      offsetMethod = 'position'
    +      offsetBase   = this.$scrollElement.scrollTop()
    +    }
    +
    +    this.$body
    +      .find(this.selector)
    +      .map(function () {
    +        var $el   = $(this)
    +        var href  = $el.data('target') || $el.attr('href')
    +        var $href = /^#./.test(href) && $(href)
    +
    +        return ($href
    +          && $href.length
    +          && $href.is(':visible')
    +          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
    +      })
    +      .sort(function (a, b) { return a[0] - b[0] })
    +      .each(function () {
    +        that.offsets.push(this[0])
    +        that.targets.push(this[1])
    +      })
    +  }
    +
    +  ScrollSpy.prototype.process = function () {
    +    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
    +    var scrollHeight = this.getScrollHeight()
    +    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
    +    var offsets      = this.offsets
    +    var targets      = this.targets
    +    var activeTarget = this.activeTarget
    +    var i
    +
    +    if (this.scrollHeight != scrollHeight) {
    +      this.refresh()
    +    }
    +
    +    if (scrollTop >= maxScroll) {
    +      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
    +    }
    +
    +    if (activeTarget && scrollTop < offsets[0]) {
    +      this.activeTarget = null
    +      return this.clear()
    +    }
    +
    +    for (i = offsets.length; i--;) {
    +      activeTarget != targets[i]
    +        && scrollTop >= offsets[i]
    +        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
    +        && this.activate(targets[i])
    +    }
    +  }
    +
    +  ScrollSpy.prototype.activate = function (target) {
    +    this.activeTarget = target
    +
    +    this.clear()
    +
    +    var selector = this.selector +
    +      '[data-target="' + target + '"],' +
    +      this.selector + '[href="' + target + '"]'
    +
    +    var active = $(selector)
    +      .parents('li')
    +      .addClass('active')
    +
    +    if (active.parent('.dropdown-menu').length) {
    +      active = active
    +        .closest('li.dropdown')
    +        .addClass('active')
    +    }
    +
    +    active.trigger('activate.bs.scrollspy')
    +  }
    +
    +  ScrollSpy.prototype.clear = function () {
    +    $(this.selector)
    +      .parentsUntil(this.options.target, '.active')
    +      .removeClass('active')
    +  }
    +
    +
    +  // SCROLLSPY PLUGIN DEFINITION
    +  // ===========================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.scrollspy')
    +      var options = typeof option == 'object' && option
    +
    +      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
    +      if (typeof option == 'string') data[option]()
    +    })
    +  }
    +
    +  var old = $.fn.scrollspy
    +
    +  $.fn.scrollspy             = Plugin
    +  $.fn.scrollspy.Constructor = ScrollSpy
    +
    +
    +  // SCROLLSPY NO CONFLICT
    +  // =====================
    +
    +  $.fn.scrollspy.noConflict = function () {
    +    $.fn.scrollspy = old
    +    return this
    +  }
    +
    +
    +  // SCROLLSPY DATA-API
    +  // ==================
    +
    +  $(window).on('load.bs.scrollspy.data-api', function () {
    +    $('[data-spy="scroll"]').each(function () {
    +      var $spy = $(this)
    +      Plugin.call($spy, $spy.data())
    +    })
    +  })
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: tab.js v3.3.7
    + * http://getbootstrap.com/javascript/#tabs
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // TAB CLASS DEFINITION
    +  // ====================
    +
    +  var Tab = function (element) {
    +    // jscs:disable requireDollarBeforejQueryAssignment
    +    this.element = $(element)
    +    // jscs:enable requireDollarBeforejQueryAssignment
    +  }
    +
    +  Tab.VERSION = '3.3.7'
    +
    +  Tab.TRANSITION_DURATION = 150
    +
    +  Tab.prototype.show = function () {
    +    var $this    = this.element
    +    var $ul      = $this.closest('ul:not(.dropdown-menu)')
    +    var selector = $this.data('target')
    +
    +    if (!selector) {
    +      selector = $this.attr('href')
    +      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
    +    }
    +
    +    if ($this.parent('li').hasClass('active')) return
    +
    +    var $previous = $ul.find('.active:last a')
    +    var hideEvent = $.Event('hide.bs.tab', {
    +      relatedTarget: $this[0]
    +    })
    +    var showEvent = $.Event('show.bs.tab', {
    +      relatedTarget: $previous[0]
    +    })
    +
    +    $previous.trigger(hideEvent)
    +    $this.trigger(showEvent)
    +
    +    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
    +
    +    var $target = $(selector)
    +
    +    this.activate($this.closest('li'), $ul)
    +    this.activate($target, $target.parent(), function () {
    +      $previous.trigger({
    +        type: 'hidden.bs.tab',
    +        relatedTarget: $this[0]
    +      })
    +      $this.trigger({
    +        type: 'shown.bs.tab',
    +        relatedTarget: $previous[0]
    +      })
    +    })
    +  }
    +
    +  Tab.prototype.activate = function (element, container, callback) {
    +    var $active    = container.find('> .active')
    +    var transition = callback
    +      && $.support.transition
    +      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
    +
    +    function next() {
    +      $active
    +        .removeClass('active')
    +        .find('> .dropdown-menu > .active')
    +          .removeClass('active')
    +        .end()
    +        .find('[data-toggle="tab"]')
    +          .attr('aria-expanded', false)
    +
    +      element
    +        .addClass('active')
    +        .find('[data-toggle="tab"]')
    +          .attr('aria-expanded', true)
    +
    +      if (transition) {
    +        element[0].offsetWidth // reflow for transition
    +        element.addClass('in')
    +      } else {
    +        element.removeClass('fade')
    +      }
    +
    +      if (element.parent('.dropdown-menu').length) {
    +        element
    +          .closest('li.dropdown')
    +            .addClass('active')
    +          .end()
    +          .find('[data-toggle="tab"]')
    +            .attr('aria-expanded', true)
    +      }
    +
    +      callback && callback()
    +    }
    +
    +    $active.length && transition ?
    +      $active
    +        .one('bsTransitionEnd', next)
    +        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
    +      next()
    +
    +    $active.removeClass('in')
    +  }
    +
    +
    +  // TAB PLUGIN DEFINITION
    +  // =====================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this = $(this)
    +      var data  = $this.data('bs.tab')
    +
    +      if (!data) $this.data('bs.tab', (data = new Tab(this)))
    +      if (typeof option == 'string') data[option]()
    +    })
    +  }
    +
    +  var old = $.fn.tab
    +
    +  $.fn.tab             = Plugin
    +  $.fn.tab.Constructor = Tab
    +
    +
    +  // TAB NO CONFLICT
    +  // ===============
    +
    +  $.fn.tab.noConflict = function () {
    +    $.fn.tab = old
    +    return this
    +  }
    +
    +
    +  // TAB DATA-API
    +  // ============
    +
    +  var clickHandler = function (e) {
    +    e.preventDefault()
    +    Plugin.call($(this), 'show')
    +  }
    +
    +  $(document)
    +    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
    +    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
    +
    +}(jQuery);
    +
    +/* ========================================================================
    + * Bootstrap: affix.js v3.3.7
    + * http://getbootstrap.com/javascript/#affix
    + * ========================================================================
    + * Copyright 2011-2016 Twitter, Inc.
    + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
    + * ======================================================================== */
    +
    +
    ++function ($) {
    +  'use strict';
    +
    +  // AFFIX CLASS DEFINITION
    +  // ======================
    +
    +  var Affix = function (element, options) {
    +    this.options = $.extend({}, Affix.DEFAULTS, options)
    +
    +    this.$target = $(this.options.target)
    +      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
    +      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
    +
    +    this.$element     = $(element)
    +    this.affixed      = null
    +    this.unpin        = null
    +    this.pinnedOffset = null
    +
    +    this.checkPosition()
    +  }
    +
    +  Affix.VERSION  = '3.3.7'
    +
    +  Affix.RESET    = 'affix affix-top affix-bottom'
    +
    +  Affix.DEFAULTS = {
    +    offset: 0,
    +    target: window
    +  }
    +
    +  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
    +    var scrollTop    = this.$target.scrollTop()
    +    var position     = this.$element.offset()
    +    var targetHeight = this.$target.height()
    +
    +    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
    +
    +    if (this.affixed == 'bottom') {
    +      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
    +      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
    +    }
    +
    +    var initializing   = this.affixed == null
    +    var colliderTop    = initializing ? scrollTop : position.top
    +    var colliderHeight = initializing ? targetHeight : height
    +
    +    if (offsetTop != null && scrollTop <= offsetTop) return 'top'
    +    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
    +
    +    return false
    +  }
    +
    +  Affix.prototype.getPinnedOffset = function () {
    +    if (this.pinnedOffset) return this.pinnedOffset
    +    this.$element.removeClass(Affix.RESET).addClass('affix')
    +    var scrollTop = this.$target.scrollTop()
    +    var position  = this.$element.offset()
    +    return (this.pinnedOffset = position.top - scrollTop)
    +  }
    +
    +  Affix.prototype.checkPositionWithEventLoop = function () {
    +    setTimeout($.proxy(this.checkPosition, this), 1)
    +  }
    +
    +  Affix.prototype.checkPosition = function () {
    +    if (!this.$element.is(':visible')) return
    +
    +    var height       = this.$element.height()
    +    var offset       = this.options.offset
    +    var offsetTop    = offset.top
    +    var offsetBottom = offset.bottom
    +    var scrollHeight = Math.max($(document).height(), $(document.body).height())
    +
    +    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
    +    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
    +    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
    +
    +    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
    +
    +    if (this.affixed != affix) {
    +      if (this.unpin != null) this.$element.css('top', '')
    +
    +      var affixType = 'affix' + (affix ? '-' + affix : '')
    +      var e         = $.Event(affixType + '.bs.affix')
    +
    +      this.$element.trigger(e)
    +
    +      if (e.isDefaultPrevented()) return
    +
    +      this.affixed = affix
    +      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
    +
    +      this.$element
    +        .removeClass(Affix.RESET)
    +        .addClass(affixType)
    +        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
    +    }
    +
    +    if (affix == 'bottom') {
    +      this.$element.offset({
    +        top: scrollHeight - height - offsetBottom
    +      })
    +    }
    +  }
    +
    +
    +  // AFFIX PLUGIN DEFINITION
    +  // =======================
    +
    +  function Plugin(option) {
    +    return this.each(function () {
    +      var $this   = $(this)
    +      var data    = $this.data('bs.affix')
    +      var options = typeof option == 'object' && option
    +
    +      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
    +      if (typeof option == 'string') data[option]()
    +    })
    +  }
    +
    +  var old = $.fn.affix
    +
    +  $.fn.affix             = Plugin
    +  $.fn.affix.Constructor = Affix
    +
    +
    +  // AFFIX NO CONFLICT
    +  // =================
    +
    +  $.fn.affix.noConflict = function () {
    +    $.fn.affix = old
    +    return this
    +  }
    +
    +
    +  // AFFIX DATA-API
    +  // ==============
    +
    +  $(window).on('load', function () {
    +    $('[data-spy="affix"]').each(function () {
    +      var $spy = $(this)
    +      var data = $spy.data()
    +
    +      data.offset = data.offset || {}
    +
    +      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
    +      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
    +
    +      Plugin.call($spy, data)
    +    })
    +  })
    +
    +}(jQuery);
    diff --git a/html/scripts/insert_tags.js b/html/scripts/insert_tags.js
    old mode 100644
    new mode 100755
    diff --git a/html/scripts/jqModal.js b/html/scripts/jqModal.js
    old mode 100644
    new mode 100755
    index 3aac816e7..a3ed417eb
    --- a/html/scripts/jqModal.js
    +++ b/html/scripts/jqModal.js
    @@ -1,69 +1,400 @@
     /*
      * jqModal - Minimalist Modaling with jQuery
    - *   (http://dev.iceburg.net/jquery/jqModal/)
      *
    - * Copyright (c) 2007,2008 Brice Burgess 
    + * Copyright (c) 2007-2016 Brice Burgess @IceburgBrice
      * Dual licensed under the MIT and GPL licenses:
      *   http://www.opensource.org/licenses/mit-license.php
      *   http://www.gnu.org/licenses/gpl.html
    - * 
    - * $Version: 03/01/2009 +r14
    + *
    + * $Version: 1.4.2 (2016.04.16 +r27)
    + * Requires: jQuery 1.2.3+
      */
    -(function($) {
    -$.fn.jqm=function(o){
    -var p={
    -overlay: 50,
    -overlayClass: 'jqmOverlay',
    -closeClass: 'jqmClose',
    -trigger: '.jqModal',
    -ajax: F,
    -ajaxText: '',
    -target: F,
    -modal: F,
    -toTop: F,
    -onShow: F,
    -onHide: F,
    -onLoad: F
    -};
    -return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
    -H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
    -if(p.trigger)$(this).jqmAddTrigger(p.trigger);
    -});};
    -
    -$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
    -$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
    -$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});};
    -$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});};
    -
    -$.jqm = {
    -hash:{},
    -open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('
    ').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z); - if(c.modal) {if(!A[0])L('bind');A.push(s);} - else if(c.overlay > 0)h.w.jqmAddClose(o); - else o=F; - - h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F; - if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}} - - if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u; - r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});} - else if(cc)h.w.jqmAddClose($(cc,h.w)); - - if(c.toTop&&h.o)h.w.before('').insertAfter(h.o); - (c.onShow)?c.onShow(h):h.w.show();e(h);return F; -}, -close:function(s){var h=H[s];if(!h.a)return F;h.a=F; - if(A[0]){A.pop();if(!A[0])L('unbind');} - if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove(); - if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F; -}, -params:{}}; -var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false, -i=$('').css({opacity:0}), -e=function(h){if(ie6)if(h.o)h.o.html('

    ').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);}, -f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}}, -L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);}, -m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;}, -hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() { - if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});}; -})(jQuery); \ No newline at end of file + +(function (factory) { + if (typeof module === 'object' && typeof module.exports === 'object') { + // Node/CommonJS + module.exports = factory(require('jquery')); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + /** + * Initialize elements as "modals". Modals typically are popup dialogs, + * notices, modal windows, &c. + * + * @name jqm + * @param options user defined options, augments defaults. + * @type jQuery + * @cat Plugins/jqModal + */ + + $.fn.jqm=function(options){ + return this.each(function(){ + var jqm = $(this).data('jqm') || $.extend({ID: I++}, $.jqm.params), + o = $.extend(jqm,options); + + // add/extend options to modal and mark as initialized + $(this).data('jqm',o).addClass('jqm-init')[0]._jqmID = o.ID; + + // ... Attach events to trigger showing of this modal + $(this).jqmAddTrigger(o.trigger); + }); + }; + + /** + * Matching modals will have their jqmShow() method fired by attaching a + * onClick event to elements matching `trigger`. + * + * @name jqmAddTrigger + * @param trigger a a string selector, jQuery collection, or DOM element. + */ + $.fn.jqmAddTrigger=function(trigger){ + if(trigger){ + return this.each(function(){ + if (!addTrigger($(this), 'jqmShow', trigger)) { + err("jqmAddTrigger must be called on initialized modals"); + } + }); + } + }; + + /** + * Matching modals will have their jqmHide() method fired by attaching an + * onClick event to elements matching `trigger`. + * + * @name jqmAddClose + * @param trigger a string selector, jQuery collection, or DOM element. + */ + $.fn.jqmAddClose=function(trigger){ + if(trigger){ + return this.each(function(){ + if(!addTrigger($(this), 'jqmHide', trigger)) { + err ("jqmAddClose must be called on initialized modals"); + } + }); + } + }; + + /** + * Open matching modals (if not shown) + */ + $.fn.jqmShow=function(trigger){ + return this.each(function(){ + if(!this._jqmShown) { show($(this), trigger); } + }); + }; + + /** + * Close matching modals + */ + $.fn.jqmHide=function(trigger){ + return this.each(function(){ + if(this._jqmShown) { hide($(this), trigger); } + }); + }; + + // utility functions + + var + err = function(msg){ + if(window.console && window.console.error) { window.console.error(msg); } + + }, show = function(m, t){ + + /** + * m = modal element (as jQuery object) + * t = triggering element + * + * o = options + * z = z-index of modal + * v = overlay element (as jQuery object) + * h = hash (for jqModal <= r15 compatibility) + */ + + t = t || window.event; + + var o = m.data('jqm'), + z = (parseInt(m.css('z-index'),10)) || 3000, + v = $('

    ').addClass(o.overlayClass).css({ + height:'100%', + width:'100%', + position:'fixed', + left:0, + top:0, + 'z-index':z-1, + opacity:o.overlay/100 + }), + + // maintain legacy "hash" construct + h = {w: m, c: o, o: v, t: t}; + + m.css('z-index',z); + + if(o.ajax){ + var target = o.target || m, + url = o.ajax; + + target = (typeof target === 'string') ? $(target,m) : $(target); + if(url.substr(0,1) === '@') { + url = $(t).attr(url.substring(1)); + } + + // load remote contents + target.load(url,function(){ + if(o.onLoad) { + o.onLoad.call(this,h); + } + parseModalContents.call(m,o,target); + }); + + // show modal + if(o.ajaxText) { + target.html(o.ajaxText); + } + open(h); + } + else { open(h); } + + }, hide = function(m, t){ + /** + * m = modal element (as jQuery object) + * t = triggering element + * + * o = options + * h = hash (for jqModal <= r15 compatibility) + */ + + t = t || window.event; + var o = m.data('jqm'), + // maintain legacy "hash" construct + h = {w: m, c: o, o: m.data('jqmv'), t: t}; + + close(h); + + }, onShow = function(hash){ + // onShow callback. Responsible for showing a modal and overlay. + // return false to stop opening modal. + + // hash object; + // w: (jQuery object) The modal element + // c: (object) The modal's options object + // o: (jQuery object) The overlay element + // t: (DOM object) The triggering element + + // if overlay not disabled, prepend to body + if(hash.c.overlay > 0) { + hash.o.prependTo('body'); + } + + // make modal visible + hash.w.show(); + + // call focusFunc (attempts to focus on first input in modal) + $.jqm.focusFunc(hash.w,true); + + return true; + + }, onHide = function(hash){ + // onHide callback. Responsible for hiding a modal and overlay. + // return false to stop closing modal. + + // hash object; + // w: (jQuery object) The modal element + // c: (object) The modal's options object + // o: (jQuery object) The overlay element + // t: (DOM object) The triggering element + + // hide modal and if overlay, remove overlay. + if(hash.w.hide() && hash.o) { + hash.o.remove(); + } + + return true; + + }, addTrigger = function(m, key, trigger){ + // addTrigger: Adds a jqmShow/jqmHide (key) event click on modal (m) + // to all elements that match trigger string (trigger) + + var jqm = m.data('jqm'); + if(jqm) { + return $(trigger).each(function(){ + this[key] = this[key] || []; + // register this modal with this trigger only once + if($.inArray(jqm.ID,this[key]) < 0) { + this[key].push(jqm.ID); + + // register trigger click event for this modal + // allows cancellation of show/hide event from + $(this).click(function(e){ + if(!e.isDefaultPrevented()) { m[key](this); } + return false; + }); + } + }); + } + + }, open = function(h){ + // open: executes the onOpen callback + performs common tasks if successful + + // transform legacy hash into new var shortcuts + var m = h.w, + v = h.o, + o = h.c; + + // execute onShow callback + if(o.onShow(h) !== false){ + // mark modal as shown + m[0]._jqmShown = true; + + // if modal:true dialog + // Bind the Keep Focus Function [F] if no other Modals are active + // else, + // trigger closing of dialog when overlay is clicked + if(o.modal){ + if(!ActiveModals[0]){ F('bind'); } + ActiveModals.push(m[0]); + } + else { + m.jqmAddClose(v); + } + + // parse modal contents and add behavior + parseModalContents.call(m,o); + + // if toTop is true and overlay exists; + // remember modal DOM position with placeholder element, and move + // the modal to a direct child of the body tag (after overlyay) + if(o.toTop && v) { + m.before('').insertAfter(v); + } + + // remember overlay (for closing function) + m.data('jqmv',v); + + // close modal if the esc key is pressed and closeOnEsc is set to true + m.unbind("keydown",$.jqm.closeOnEscFunc); + if(o.closeOnEsc) { + m.attr("tabindex", 0).bind("keydown",$.jqm.closeOnEscFunc).focus(); + } + } + + }, close = function(h){ + // close: executes the onHide callback + performs common tasks if successful + + // transform legacy hash into new var shortcuts + var m = h.w, + v = h.o, + o = h.c; + + // execute onHide callback + if(o.onHide(h) !== false){ + // mark modal as !shown + m[0]._jqmShown = false; + + // If modal, remove from modal stack. + // If no modals in modal stack, unbind the Keep Focus Function + if(o.modal){ + ActiveModals.pop(); + if(!ActiveModals[0]) { + F('unbind'); + } + } + + // IF toTop was passed and an overlay exists; + // Move modal back to its "remembered" position. + if(o.toTop && v) { + $('#jqmP'+o.ID).after(m).remove(); + } + } + + }, F = function(t){ + // F: The Keep Focus Function (for modal: true dialos) + // Binds or Unbinds (t) the Focus Examination Function (X) + + $(document)[t]("keypress keydown mousedown",X); + + }, X = function(e){ + // X: The Focus Examination Function (for modal: true dialogs) + + var targetModal = $(e.target).data('jqm') || + $(e.target).parents('.jqm-init:first').data('jqm'); + var activeModal = ActiveModals[ActiveModals.length-1]; + + // allow bubbling if event target is within active modal dialog + return (targetModal && targetModal.ID === activeModal._jqmID) ? + true : $.jqm.focusFunc(activeModal,e); + + }, parseModalContents = function(o, context){ + context = context || this; + + // Attach events to elements inside the modal matching closingClass + if(o.closeClass) { + this.jqmAddClose($('.' + o.closeClass,context)); + } + + }, + I = 0, // modal ID increment (for nested modals) + ActiveModals = []; // array of active modals + + // $.jqm, overridable defaults + $.jqm = { + /** + * default options + * + * (Integer) overlay - [0-100] Translucency percentage (opacity) of the body covering overlay. Set to 0 for NO overlay, and up to 100 for a 100% opaque overlay. + * (String) overlayClass - Applied to the body covering overlay. Useful for controlling overlay look (tint, background-image, &c) with CSS. + * (String) closeClass - Children of the modal element matching `closeClass` will fire the onHide event (to close the modal). + * (Mixed) trigger - Matching elements will fire the onShow event (to display the modal). Trigger can be a selector String, a jQuery collection of elements, a DOM element, or a False boolean. + * (String) ajax - URL to load content from via an AJAX request. False to disable ajax. If ajax begins with a "@", the URL is extracted from the attribute of the triggering element (e.g. use '@data-url' for; ...) + * (Mixed) target - Children of the modal element to load the ajax response into. If false, modal content will be overwritten by ajax response. Useful for retaining modal design. + * Target may be a selector string, jQuery collection of elements, or a DOM element -- and MUST exist as a child of the modal element. + * (String) ajaxText - Text shown while waiting for ajax return. Replaces HTML content of `target` element. + * (Boolean) modal - If true, user interactivity will be locked to the modal window until closed. + * (Boolean) toTop - If true, modal will be posistioned as a first child of the BODY element when opened, and its DOM posistion restored when closed. Useful for overcoming z-Index container issues. + * (Function) onShow - User defined callback function fired when modal opened. + * (Function) onHide - User defined callback function fired when modal closed. + * (Function) onLoad - User defined callback function fired when ajax content loads. + */ + params: { + overlay: 50, + overlayClass: 'jqmOverlay', + closeClass: 'jqmClose', + closeOnEsc: false, + trigger: '.jqModal', + ajax: false, + target: false, + ajaxText: '', + modal: false, + toTop: false, + onShow: onShow, + onHide: onHide, + onLoad: false + }, + + // focusFunc is fired: + // a) when a modal:true dialog is shown, + // b) when an event occurs outside an active modal:true dialog + // It is passed the active modal:true dialog as well as event + focusFunc: function(activeModal, e) { + + // if the event occurs outside the activeModal, focus on first element + if(e) { $(':input:visible:first',activeModal).focus(); } + + // lock interactions to the activeModal + return false; + }, + + // closeOnEscFunc is attached to modals where closeOnEsc param true. + closeOnEscFunc: function(e){ + if (e.keyCode === 27) { + $(this).jqmHide(); + return false; + } + } + }; + + return $.jqm; + +})); diff --git a/html/scripts/jquery-3.2.1.js b/html/scripts/jquery-3.2.1.js new file mode 100755 index 000000000..d2d8ca479 --- /dev/null +++ b/html/scripts/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return 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 all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : 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; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( 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 ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // 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 ( i === length ) { + 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 = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.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 + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: 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 { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return 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 tmp, args, proxy; + + 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 = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( 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; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[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 + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "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" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // 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<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// 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 m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + 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 element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = 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 = arr.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 && + a.sourceIndex - b.sourceIndex; + + // 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 :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * 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]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +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; +}; + +/** + * 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 hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + 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 !== "undefined" && 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 https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // 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 + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // 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 ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + 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 ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + 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 = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( 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 document; +}; + +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 && + !compilerCache[ expr + " " ] && + ( !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 ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +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 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + 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 + while ( (node = elem[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 (jQuery #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[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[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // 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 !== "undefined" && 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.replace( rwhitespace, " " ) + " " ).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, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + 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 + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && 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 ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // 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 ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ 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( 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 ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + 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": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( 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 negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + 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; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // 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(); + +tokenize = Sizzle.tokenize = function( 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, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "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 ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator 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 ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +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 multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +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( 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( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + 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 ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // 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 ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + 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, match /* 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 ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + 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; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + 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 ) && testContext( 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 if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// 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( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.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( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.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( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + 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; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + 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; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // 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 <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ 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; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + 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 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).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[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // 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( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + 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 indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && 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 dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], 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" ? + 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, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + 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.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + 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; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).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 = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + 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( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // 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, + + // 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; + } + + // 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 ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + 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 < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( 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 public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", 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 ); + } ); + }, + 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 = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var 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; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + 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 ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + 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 || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.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 ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // 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 ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + 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 elem; + } + + 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 elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * 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 handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( 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; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, 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 !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + 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 if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( 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; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + 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 data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( 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; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + 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.rnamespace || event.rnamespace.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 i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + 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 ) { + this.focus(); + return false; + } + }, + 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 ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, 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.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // 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 +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, 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 mouseenter/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; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, 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 ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "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; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + 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" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + 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 ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ 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 || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], 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, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + 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 ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, 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 domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + 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 access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + 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 ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && 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 !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // 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]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 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 computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // 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"; +} + +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: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": 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: { + "float": "cssFloat" + }, + + // 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 ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !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 ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } 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 val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + 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 ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.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 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.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 = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// 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 { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/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" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + 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, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + 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 ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", 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. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, 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; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return 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 ( Array.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 ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 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 + !option.disabled && + ( !option.parentNode.disabled || + !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 ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = 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( "." ) > -1 ) { + + // 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.rnamespace = 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 = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === 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 ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( 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; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + 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 ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + 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.firstElementChild ) { + elem = elem.firstElementChild; + } + + 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( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( "'; + + return $scriptTag; + } + + /** + * Render dojo script tag + * + * Renders Dojo script tag by utilizing either local path provided or the + * CDN. If any djConfig values were set, they will be serialized and passed + * with that attribute. + * + * @return string + */ + protected function _renderDojoScriptTag() + { + if ($this->useCdn()) { + $source = $this->getCdnBase() + . $this->getCdnVersion() + . $this->getCdnDojoPath(); + } else { + $source = $this->getLocalPath(); + } + + $scriptTag = ''; + return $scriptTag; + } + + /** + * Render layers (custom builds) as script tags + * + * @return string + */ + protected function _renderLayers() + { + $layers = $this->getLayers(); + if (empty($layers)) { + return ''; + } + + $enc = 'UTF-8'; + if ($this->view instanceof Zend_View_Interface + && method_exists($this->view, 'getEncoding') + ) { + $enc = $this->view->getEncoding(); + } + + $html = array(); + foreach ($layers as $path) { + $html[] = sprintf( + '', + htmlspecialchars($path, ENT_QUOTES, $enc) + ); + } + + return implode("\n", $html); + } + + /** + * Render dojo module paths and requires + * + * @return string + */ + protected function _renderExtras() + { + $js = array(); + $modulePaths = $this->getModulePaths(); + if (!empty($modulePaths)) { + foreach ($modulePaths as $module => $path) { + $js[] = 'dojo.registerModulePath("' . $this->view->escape($module) . '", "' . $this->view->escape($path) . '");'; + } + } + + $modules = $this->getModules(); + if (!empty($modules)) { + foreach ($modules as $module) { + $js[] = 'dojo.require("' . $this->view->escape($module) . '");'; + } + } + + $onLoadActions = array(); + // Get Zend specific onLoad actions; these will always be first to + // ensure that dijits are created in the correct order + foreach ($this->_getZendLoadActions() as $callback) { + $onLoadActions[] = 'dojo.addOnLoad(' . $callback . ');'; + } + + // Get all other onLoad actions + foreach ($this->getOnLoadActions() as $callback) { + $onLoadActions[] = 'dojo.addOnLoad(' . $callback . ');'; + } + + $javascript = implode("\n ", $this->getJavascript()); + + $content = ''; + if (!empty($js)) { + $content .= implode("\n ", $js) . "\n"; + } + + if (!empty($onLoadActions)) { + $content .= implode("\n ", $onLoadActions) . "\n"; + } + + if (!empty($javascript)) { + $content .= $javascript . "\n"; + } + + if (preg_match('/^\s*$/s', $content)) { + return ''; + } + + $html = ''; + return $html; + } + + /** + * Add an onLoad action related to ZF dijit creation + * + * This method is public, but prefixed with an underscore to indicate that + * it should not normally be called by userland code. It is pertinent to + * ensuring that the correct order of operations occurs during dijit + * creation. + * + * @param string $callback + * @return Zend_Dojo_View_Helper_Dojo_Container + */ + public function _addZendLoad($callback) + { + if (!in_array($callback, $this->_zendLoadActions, true)) { + $this->_zendLoadActions[] = $callback; + } + return $this; + } + + /** + * Retrieve all ZF dijit callbacks + * + * @return array + */ + public function _getZendLoadActions() + { + return $this->_zendLoadActions; + } +} diff --git a/library/Zend/Dojo/View/Helper/Editor.php b/library/Zend/Dojo/View/Helper/Editor.php new file mode 100755 index 000000000..c31179bc9 --- /dev/null +++ b/library/Zend/Dojo/View/Helper/Editor.php @@ -0,0 +1,199 @@ + 'LinkDialog', + 'insertImage' => 'LinkDialog', + 'fontName' => 'FontChoice', + 'fontSize' => 'FontChoice', + 'formatBlock' => 'FontChoice', + 'foreColor' => 'TextColor', + 'hiliteColor' => 'TextColor', + 'enterKeyHandling' => 'EnterKeyHandling', + 'fullScreen' => 'FullScreen', + 'newPage' => 'NewPage', + 'print' => 'Print', + 'tabIndent' => 'TabIndent', + 'toggleDir' => 'ToggleDir', + 'viewSource' => 'ViewSource' + ); + + /** + * JSON-encoded parameters + * @var array + */ + protected $_jsonParams = array('captureEvents', 'events', 'plugins', 'extraPlugins'); + + /** + * dijit.Editor + * + * @param string $id + * @param string $value + * @param array $params + * @param array $attribs + * @return string + */ + public function editor($id, $value = null, $params = array(), $attribs = array()) + { + if (isset($params['plugins'])) { + foreach ($this->_getRequiredModules($params['plugins']) as $module) { + $this->dojo->requireModule($module); + } + } + + // Previous versions allowed specifying "degrade" to allow using a + // textarea instead of a div -- but this is insecure. Removing the + // parameter if set to prevent its injection in the dijit. + if (isset($params['degrade'])) { + unset($params['degrade']); + } + + $hiddenName = $id; + if (array_key_exists('id', $attribs)) { + $hiddenId = $attribs['id']; + } else { + $hiddenId = $hiddenName; + } + $hiddenId = $this->_normalizeId($hiddenId); + + $textareaName = $this->_normalizeEditorName($hiddenName); + $textareaId = $hiddenId . '-Editor'; + + $hiddenAttribs = array( + 'id' => $hiddenId, + 'name' => $hiddenName, + 'value' => $value, + 'type' => 'hidden', + ); + $attribs['id'] = $textareaId; + + $this->_createGetParentFormFunction(); + $this->_createEditorOnSubmit($hiddenId, $textareaId); + + $attribs = $this->_prepareDijit($attribs, $params, 'textarea'); + + $html = '_htmlAttribs($attribs) . '>' + . $value + . "
    \n"; + + // Embed a textarea in a
    \n"; + + switch ($position) { + case 'topDecoration': + case 'leftDecoration': + return $labelList . $containerHtml; + case 'bottomDecoration': + case 'rightDecoration': + return $containerHtml . $labelList; + } + } + + /** + * Prepare slider label list + * + * @param string $id + * @param array $params + * @param array $attribs + * @param array $labels + * @return string + */ + protected function _prepareLabelsList($id, array $params, array $attribs, array $labels) + { + $attribs['id'] = $id . '-labels'; + $dijit = 'dijit.form.' . ucfirst($this->_sliderType) . 'RuleLabels'; + $attribs = $this->_prepareDijit($attribs, $params, 'layout', $dijit); + + return $this->view->htmlList($labels, true, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/SplitContainer.php b/library/Zend/Dojo/View/Helper/SplitContainer.php new file mode 100755 index 000000000..1462406de --- /dev/null +++ b/library/Zend/Dojo/View/Helper/SplitContainer.php @@ -0,0 +1,66 @@ +_createLayoutContainer($id, $content, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/StackContainer.php b/library/Zend/Dojo/View/Helper/StackContainer.php new file mode 100755 index 000000000..40a558c4c --- /dev/null +++ b/library/Zend/Dojo/View/Helper/StackContainer.php @@ -0,0 +1,66 @@ +_createLayoutContainer($id, $content, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/SubmitButton.php b/library/Zend/Dojo/View/Helper/SubmitButton.php new file mode 100755 index 000000000..1072fb71c --- /dev/null +++ b/library/Zend/Dojo/View/Helper/SubmitButton.php @@ -0,0 +1,67 @@ +_createFormElement($id, $value, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/TabContainer.php b/library/Zend/Dojo/View/Helper/TabContainer.php new file mode 100755 index 000000000..354ba349a --- /dev/null +++ b/library/Zend/Dojo/View/Helper/TabContainer.php @@ -0,0 +1,66 @@ +_createLayoutContainer($id, $content, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/TextBox.php b/library/Zend/Dojo/View/Helper/TextBox.php new file mode 100755 index 000000000..f0f382ea0 --- /dev/null +++ b/library/Zend/Dojo/View/Helper/TextBox.php @@ -0,0 +1,68 @@ +_createFormElement($id, $value, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/Textarea.php b/library/Zend/Dojo/View/Helper/Textarea.php new file mode 100755 index 000000000..03e04b8d3 --- /dev/null +++ b/library/Zend/Dojo/View/Helper/Textarea.php @@ -0,0 +1,79 @@ +_prepareDijit($attribs, $params, 'textarea'); + + $html = '_htmlAttribs($attribs) . '>' + . $value + . "\n"; + + return $html; + } +} diff --git a/library/Zend/Dojo/View/Helper/TimeTextBox.php b/library/Zend/Dojo/View/Helper/TimeTextBox.php new file mode 100755 index 000000000..82b2c77f8 --- /dev/null +++ b/library/Zend/Dojo/View/Helper/TimeTextBox.php @@ -0,0 +1,68 @@ +_createFormElement($id, $value, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/ValidationTextBox.php b/library/Zend/Dojo/View/Helper/ValidationTextBox.php new file mode 100755 index 000000000..e349c90cf --- /dev/null +++ b/library/Zend/Dojo/View/Helper/ValidationTextBox.php @@ -0,0 +1,68 @@ +_createFormElement($id, $value, $params, $attribs); + } +} diff --git a/library/Zend/Dojo/View/Helper/VerticalSlider.php b/library/Zend/Dojo/View/Helper/VerticalSlider.php new file mode 100755 index 000000000..30bdc564c --- /dev/null +++ b/library/Zend/Dojo/View/Helper/VerticalSlider.php @@ -0,0 +1,62 @@ +prepareSlider($id, $value, $params, $attribs); + } +} diff --git a/library/Zend/Dom/Exception.php b/library/Zend/Dom/Exception.php new file mode 100755 index 000000000..940782267 --- /dev/null +++ b/library/Zend/Dom/Exception.php @@ -0,0 +1,35 @@ +setEncoding($encoding); + $this->setDocument($document); + } + + /** + * Set document encoding + * + * @param string $encoding + * @return Zend_Dom_Query + */ + public function setEncoding($encoding) + { + $this->_encoding = (null === $encoding) ? null : (string) $encoding; + return $this; + } + + /** + * Get document encoding + * + * @return null|string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set document to query + * + * @param string|DOMDocument $document + * @param null|string $encoding Document encoding + * @return Zend_Dom_Query + */ + public function setDocument($document, $encoding = null) + { + if ($document instanceof DOMDocument) { + return $this->setDocumentDom($document); + } + if (0 === strlen($document)) { + return $this; + } + // breaking XML declaration to make syntax highlighting work + if ('<' . '?xml' == substr(trim($document), 0, 5)) { + if (preg_match('/]*xmlns="([^"]+)"[^>]*>/i', $document, $matches)) { + $this->_xpathNamespaces[] = $matches[1]; + return $this->setDocumentXhtml($document, $encoding); + } + return $this->setDocumentXml($document, $encoding); + } + if (strstr($document, 'DTD XHTML')) { + return $this->setDocumentXhtml($document, $encoding); + } + return $this->setDocumentHtml($document, $encoding); + } + + /** + * Set DOMDocument to query + * + * @param DOMDocument $document + * @return Zend_Dom_Query + */ + public function setDocumentDom(DOMDocument $document) + { + $this->_document = $document; + $this->_docType = self::DOC_DOM; + if (null !== $document->encoding) { + $this->setEncoding($document->encoding); + } + return $this; + } + + /** + * Register HTML document + * + * @param string $document + * @param null|string $encoding Document encoding + * @return Zend_Dom_Query + */ + public function setDocumentHtml($document, $encoding = null) + { + $this->_document = (string) $document; + $this->_docType = self::DOC_HTML; + if (null !== $encoding) { + $this->setEncoding($encoding); + } + return $this; + } + + /** + * Register XHTML document + * + * @param string $document + * @param null|string $encoding Document encoding + * @return Zend_Dom_Query + */ + public function setDocumentXhtml($document, $encoding = null) + { + $this->_document = (string) $document; + $this->_docType = self::DOC_XHTML; + if (null !== $encoding) { + $this->setEncoding($encoding); + } + return $this; + } + + /** + * Register XML document + * + * @param string $document + * @param null|string $encoding Document encoding + * @return Zend_Dom_Query + */ + public function setDocumentXml($document, $encoding = null) + { + $this->_document = (string) $document; + $this->_docType = self::DOC_XML; + if (null !== $encoding) { + $this->setEncoding($encoding); + } + return $this; + } + + /** + * Retrieve current document + * + * @return string|DOMDocument + */ + public function getDocument() + { + return $this->_document; + } + + /** + * Get document type + * + * @return string + */ + public function getDocumentType() + { + return $this->_docType; + } + + /** + * Get any DOMDocument errors found + * + * @return false|array + */ + public function getDocumentErrors() + { + return $this->_documentErrors; + } + + /** + * Perform a CSS selector query + * + * @param string $query + * @return Zend_Dom_Query_Result + */ + public function query($query) + { + $xpathQuery = Zend_Dom_Query_Css2Xpath::transform($query); + return $this->queryXpath($xpathQuery, $query); + } + + /** + * Perform an XPath query + * + * @param string|array $xpathQuery + * @param string $query CSS selector query + * @throws Zend_Dom_Exception + * @return Zend_Dom_Query_Result + */ + public function queryXpath($xpathQuery, $query = null) + { + if (null === ($document = $this->getDocument())) { + require_once 'Zend/Dom/Exception.php'; + throw new Zend_Dom_Exception('Cannot query; no document registered'); + } + + $encoding = $this->getEncoding(); + libxml_use_internal_errors(true); + if (null === $encoding) { + $domDoc = new DOMDocument('1.0'); + } else { + $domDoc = new DOMDocument('1.0', $encoding); + } + $type = $this->getDocumentType(); + switch ($type) { + case self::DOC_DOM: + $domDoc = $this->_document; + $success = true; + break; + case self::DOC_XML: + try { + $domDoc = Zend_Xml_Security::scan($document, $domDoc); + $success = ($domDoc !== false); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Dom/Exception.php'; + throw new Zend_Dom_Exception( + $e->getMessage() + ); + } + break; + case self::DOC_HTML: + case self::DOC_XHTML: + default: + $success = $domDoc->loadHTML($document); + break; + } + $errors = libxml_get_errors(); + if (!empty($errors)) { + $this->_documentErrors = $errors; + libxml_clear_errors(); + } + libxml_use_internal_errors(false); + + if (!$success) { + require_once 'Zend/Dom/Exception.php'; + throw new Zend_Dom_Exception(sprintf('Error parsing document (type == %s)', $type)); + } + + $nodeList = $this->_getNodeList($domDoc, $xpathQuery); + return new Zend_Dom_Query_Result($query, $xpathQuery, $domDoc, $nodeList); + } + + /** + * Register XPath namespaces + * + * @param array $xpathNamespaces + */ + public function registerXpathNamespaces($xpathNamespaces) + { + $this->_xpathNamespaces = $xpathNamespaces; + } + + /** + * Prepare node list + * + * @param DOMDocument $document + * @param string|array $xpathQuery + * @return array + */ + protected function _getNodeList($document, $xpathQuery) + { + $xpath = new DOMXPath($document); + foreach ($this->_xpathNamespaces as $prefix => $namespaceUri) { + $xpath->registerNamespace($prefix, $namespaceUri); + } + $xpathQuery = (string) $xpathQuery; + if (preg_match_all('|\[contains\((@[a-z0-9_-]+),\s?\' |i', $xpathQuery, $matches)) { + foreach ($matches[1] as $attribute) { + $queryString = '//*[' . $attribute . ']'; + $attributeName = substr($attribute, 1); + $nodes = $xpath->query($queryString); + foreach ($nodes as $node) { + $attr = $node->attributes->getNamedItem($attributeName); + $attr->value = ' ' . $attr->value . ' '; + } + } + } + return $xpath->query($xpathQuery); + } +} diff --git a/library/Zend/Dom/Query/Css2Xpath.php b/library/Zend/Dom/Query/Css2Xpath.php new file mode 100755 index 000000000..5612ad7ab --- /dev/null +++ b/library/Zend/Dom/Query/Css2Xpath.php @@ -0,0 +1,169 @@ +\s+|', '>', $path); + $segments = preg_split('/\s+/', $path); + foreach ($segments as $key => $segment) { + $pathSegment = self::_tokenize($segment); + if (0 == $key) { + if (0 === strpos($pathSegment, '[contains(')) { + $paths[0] .= '*' . ltrim($pathSegment, '*'); + } else { + $paths[0] .= $pathSegment; + } + continue; + } + if (0 === strpos($pathSegment, '[contains(')) { + foreach ($paths as $key => $xpath) { + $paths[$key] .= '//*' . ltrim($pathSegment, '*'); + $paths[] = $xpath . $pathSegment; + } + } else { + foreach ($paths as $key => $xpath) { + $paths[$key] .= '//' . $pathSegment; + } + } + } + + if (1 == count($paths)) { + return $paths[0]; + } + return implode('|', $paths); + } + + /** + * Tokenize CSS expressions to XPath + * + * @param string $expression + * @return string + */ + protected static function _tokenize($expression) + { + // Child selectors + $expression = str_replace('>', '/', $expression); + + // IDs + $expression = preg_replace('|#([a-z][a-z0-9_-]*)|i', '[@id=\'$1\']', $expression); + $expression = preg_replace('|(?_cssQuery = $cssQuery; + $this->_xpathQuery = $xpathQuery; + $this->_document = $document; + $this->_nodeList = $nodeList; + } + + /** + * Retrieve CSS Query + * + * @return string + */ + public function getCssQuery() + { + return $this->_cssQuery; + } + + /** + * Retrieve XPath query + * + * @return string + */ + public function getXpathQuery() + { + return $this->_xpathQuery; + } + + /** + * Retrieve DOMDocument + * + * @return DOMDocument + */ + public function getDocument() + { + return $this->_document; + } + + /** + * Iterator: rewind to first element + * + * @return DOMNode|null + */ + public function rewind() + { + $this->_position = 0; + return $this->_nodeList->item(0); + } + + /** + * Iterator: is current position valid? + * + * @return bool + */ + public function valid() + { + if (in_array($this->_position, range(0, $this->_nodeList->length - 1)) && $this->_nodeList->length > 0) { + return true; + } + return false; + } + + /** + * Iterator: return current element + * + * @return DOMElement + */ + public function current() + { + return $this->_nodeList->item($this->_position); + } + + /** + * Iterator: return key of current element + * + * @return int + */ + public function key() + { + return $this->_position; + } + + /** + * Iterator: move to next element + * + * @return DOMNode|null + */ + public function next() + { + ++$this->_position; + return $this->_nodeList->item($this->_position); + } + + /** + * Countable: get count + * + * @return int + */ + public function count() + { + return $this->_nodeList->length; + } +} diff --git a/library/Zend/EventManager/Event.php b/library/Zend/EventManager/Event.php new file mode 100755 index 000000000..a69d01940 --- /dev/null +++ b/library/Zend/EventManager/Event.php @@ -0,0 +1,225 @@ +setName($name); + } + + if (null !== $target) { + $this->setTarget($target); + } + + if (null !== $params) { + $this->setParams($params); + } + } + + /** + * Get event name + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Get the event target + * + * This may be either an object, or the name of a static method. + * + * @return string|object + */ + public function getTarget() + { + return $this->target; + } + + /** + * Set parameters + * + * Overwrites parameters + * + * @param array|ArrayAccess|object $params + * @return Event + */ + public function setParams($params) + { + if (!is_array($params) && !is_object($params)) { + require_once 'Zend/EventManager/Exception/InvalidArgumentException.php'; + throw new Zend_EventManager_Exception_InvalidArgumentException(sprintf( + 'Event parameters must be an array or object; received "%s"', + (is_object($params) ? get_class($params) : gettype($params)) + )); + } + + $this->params = $params; + return $this; + } + + /** + * Get all parameters + * + * @return array|object|ArrayAccess + */ + public function getParams() + { + return $this->params; + } + + /** + * Get an individual parameter + * + * If the parameter does not exist, the $default value will be returned. + * + * @param string|int $name + * @param mixed $default + * @return mixed + */ + public function getParam($name, $default = null) + { + // Check in params that are arrays or implement array access + if (is_array($this->params) || $this->params instanceof ArrayAccess) { + if (!isset($this->params[$name])) { + return $default; + } + + return $this->params[$name]; + } + + // Check in normal objects + if (!isset($this->params->{$name})) { + return $default; + } + return $this->params->{$name}; + } + + /** + * Set the event name + * + * @param string $name + * @return Zend_EventManager_Event + */ + public function setName($name) + { + $this->name = (string) $name; + return $this; + } + + /** + * Set the event target/context + * + * @param null|string|object $target + * @return Zend_EventManager_Event + */ + public function setTarget($target) + { + $this->target = $target; + return $this; + } + + /** + * Set an individual parameter to a value + * + * @param string|int $name + * @param mixed $value + * @return Zend_EventManager_Event + */ + public function setParam($name, $value) + { + if (is_array($this->params) || $this->params instanceof ArrayAccess) { + // Arrays or objects implementing array access + $this->params[$name] = $value; + } else { + // Objects + $this->params->{$name} = $value; + } + return $this; + } + + /** + * Stop further event propagation + * + * @param bool $flag + * @return void + */ + public function stopPropagation($flag = true) + { + $this->stopPropagation = (bool) $flag; + } + + /** + * Is propagation stopped? + * + * @return bool + */ + public function propagationIsStopped() + { + return $this->stopPropagation; + } +} diff --git a/library/Zend/EventManager/EventCollection.php b/library/Zend/EventManager/EventCollection.php new file mode 100755 index 000000000..7318425ea --- /dev/null +++ b/library/Zend/EventManager/EventCollection.php @@ -0,0 +1,109 @@ +setIdentifiers($identifiers); + } + + /** + * Set the event class to utilize + * + * @param string $class + * @return Zend_EventManager_EventManager + */ + public function setEventClass($class) + { + $this->eventClass = $class; + return $this; + } + + /** + * Set static collections container + * + * @param Zend_EventManager_SharedEventCollection $collections + * @return $this + */ + public function setSharedCollections(Zend_EventManager_SharedEventCollection $collections) + { + $this->sharedCollections = $collections; + return $this; + } + + /** + * Remove any shared collections + * + * Sets {@link $sharedCollections} to boolean false to disable ability + * to lazy-load static event manager instance. + * + * @return void + */ + public function unsetSharedCollections() + { + $this->sharedCollections = false; + } + + /** + * Get static collections container + * + * @return false|Zend_EventManager_SharedEventCollection + */ + public function getSharedCollections() + { + if (null === $this->sharedCollections) { + $this->setSharedCollections(Zend_EventManager_StaticEventManager::getInstance()); + } + return $this->sharedCollections; + } + + /** + * Get the identifier(s) for this Zend_EventManager_EventManager + * + * @return array + */ + public function getIdentifiers() + { + return $this->identifiers; + } + + /** + * Set the identifiers (overrides any currently set identifiers) + * + * @param string|int|array|Traversable $identifiers + * @return Zend_EventManager_EventManager + */ + public function setIdentifiers($identifiers) + { + if (is_array($identifiers) || $identifiers instanceof Traversable) { + $this->identifiers = array_unique((array) $identifiers); + } elseif ($identifiers !== null) { + $this->identifiers = array($identifiers); + } + return $this; + } + + /** + * Add some identifier(s) (appends to any currently set identifiers) + * + * @param string|int|array|Traversable $identifiers + * @return Zend_EventManager_EventManager + */ + public function addIdentifiers($identifiers) + { + if (is_array($identifiers) || $identifiers instanceof Traversable) { + $this->identifiers = array_unique($this->identifiers + (array) $identifiers); + } elseif ($identifiers !== null) { + $this->identifiers = array_unique(array_merge($this->identifiers, array($identifiers))); + } + return $this; + } + + /** + * Trigger all listeners for a given event + * + * Can emulate triggerUntil() if the last argument provided is a callback. + * + * @param string $event + * @param string|object $target Object calling emit, or symbol describing target (such as static method name) + * @param array|ArrayAccess $argv Array of arguments; typically, should be associative + * @param null|callback $callback + * @return Zend_EventManager_ResponseCollection All listener return values + */ + public function trigger($event, $target = null, $argv = array(), $callback = null) + { + if ($event instanceof Zend_EventManager_EventDescription) { + $e = $event; + $event = $e->getName(); + $callback = $target; + } elseif ($target instanceof Zend_EventManager_EventDescription) { + $e = $target; + $e->setName($event); + $callback = $argv; + } elseif ($argv instanceof Zend_EventManager_EventDescription) { + $e = $argv; + $e->setName($event); + $e->setTarget($target); + } else { + $e = new $this->eventClass(); + $e->setName($event); + $e->setTarget($target); + $e->setParams($argv); + } + + if ($callback && !is_callable($callback)) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException('Invalid callback provided'); + } + + return $this->triggerListeners($event, $e, $callback); + } + + /** + * Trigger listeners until return value of one causes a callback to + * evaluate to true + * + * Triggers listeners until the provided callback evaluates the return + * value of one as true, or until all listeners have been executed. + * + * @param string $event + * @param string|object $target Object calling emit, or symbol describing target (such as static method name) + * @param array|ArrayAccess $argv Array of arguments; typically, should be associative + * @param Callable $callback + * @throws Zend_Stdlib_Exception_InvalidCallbackException if invalid callback provided + */ + public function triggerUntil($event, $target, $argv = null, $callback = null) + { + if ($event instanceof Zend_EventManager_EventDescription) { + $e = $event; + $event = $e->getName(); + $callback = $target; + } elseif ($target instanceof Zend_EventManager_EventDescription) { + $e = $target; + $e->setName($event); + $callback = $argv; + } elseif ($argv instanceof Zend_EventManager_EventDescription) { + $e = $argv; + $e->setName($event); + $e->setTarget($target); + } else { + $e = new $this->eventClass(); + $e->setName($event); + $e->setTarget($target); + $e->setParams($argv); + } + + if (!is_callable($callback)) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException('Invalid callback provided'); + } + + return $this->triggerListeners($event, $e, $callback); + } + + /** + * Attach a listener to an event + * + * The first argument is the event, and the next argument describes a + * callback that will respond to that event. A CallbackHandler instance + * describing the event listener combination will be returned. + * + * The last argument indicates a priority at which the event should be + * executed. By default, this value is 1; however, you may set it for any + * integer value. Higher values have higher priority (i.e., execute first). + * + * You can specify "*" for the event name. In such cases, the listener will + * be triggered for every event. + * + * @param string|array|Zend_EventManager_ListenerAggregate $event An event or array of event names. If a ListenerAggregate, proxies to {@link attachAggregate()}. + * @param callback|int $callback If string $event provided, expects PHP callback; for a ListenerAggregate $event, this will be the priority + * @param int $priority If provided, the priority at which to register the callback + * @return Zend_Stdlib_CallbackHandler|mixed CallbackHandler if attaching callback (to allow later unsubscribe); mixed if attaching aggregate + */ + public function attach($event, $callback = null, $priority = 1) + { + // Proxy ListenerAggregate arguments to attachAggregate() + if ($event instanceof Zend_EventManager_ListenerAggregate) { + return $this->attachAggregate($event, $callback); + } + + // Null callback is invalid + if (null === $callback) { + require_once 'Zend/EventManager/Exception/InvalidArgumentException.php'; + throw new Zend_EventManager_Exception_InvalidArgumentException(sprintf( + '%s: expects a callback; none provided', + __METHOD__ + )); + } + + // Array of events should be registered individually, and return an array of all listeners + if (is_array($event)) { + $listeners = array(); + foreach ($event as $name) { + $listeners[] = $this->attach($name, $callback, $priority); + } + return $listeners; + } + + // If we don't have a priority queue for the event yet, create one + if (empty($this->events[$event])) { + $this->events[$event] = new Zend_Stdlib_PriorityQueue(); + } + + // Create a callback handler, setting the event and priority in its metadata + $listener = new Zend_Stdlib_CallbackHandler($callback, array('event' => $event, 'priority' => $priority)); + + // Inject the callback handler into the queue + $this->events[$event]->insert($listener, $priority); + return $listener; + } + + /** + * Attach a listener aggregate + * + * Listener aggregates accept an EventCollection instance, and call attach() + * one or more times, typically to attach to multiple events using local + * methods. + * + * @param Zend_EventManager_ListenerAggregate $aggregate + * @param int $priority If provided, a suggested priority for the aggregate to use + * @return mixed return value of {@link Zend_EventManager_ListenerAggregate::attach()} + */ + public function attachAggregate(Zend_EventManager_ListenerAggregate $aggregate, $priority = 1) + { + return $aggregate->attach($this, $priority); + } + + /** + * Unsubscribe a listener from an event + * + * @param Zend_Stdlib_CallbackHandler|Zend_EventManager_ListenerAggregate $listener + * @return bool Returns true if event and listener found, and unsubscribed; returns false if either event or listener not found + * @throws Zend_EventManager_Exception_InvalidArgumentException if invalid listener provided + */ + public function detach($listener) + { + if ($listener instanceof Zend_EventManager_ListenerAggregate) { + return $this->detachAggregate($listener); + } + + if (!$listener instanceof Zend_Stdlib_CallbackHandler) { + require_once 'Zend/EventManager/Exception/InvalidArgumentException.php'; + throw new Zend_EventManager_Exception_InvalidArgumentException(sprintf( + '%s: expected a Zend_EventManager_ListenerAggregate or Zend_Stdlib_CallbackHandler; received "%s"', + __METHOD__, + (is_object($listener) ? get_class($listener) : gettype($listener)) + )); + } + + $event = $listener->getMetadatum('event'); + if (!$event || empty($this->events[$event])) { + return false; + } + $return = $this->events[$event]->remove($listener); + if (!$return) { + return false; + } + if (!count($this->events[$event])) { + unset($this->events[$event]); + } + return true; + } + + /** + * Detach a listener aggregate + * + * Listener aggregates accept an EventCollection instance, and call detach() + * of all previously attached listeners. + * + * @param Zend_EventManager_ListenerAggregate $aggregate + * @return mixed return value of {@link Zend_EventManager_ListenerAggregate::detach()} + */ + public function detachAggregate(Zend_EventManager_ListenerAggregate $aggregate) + { + return $aggregate->detach($this); + } + + /** + * Retrieve all registered events + * + * @return array + */ + public function getEvents() + { + return array_keys($this->events); + } + + /** + * Retrieve all listeners for a given event + * + * @param string $event + * @return Zend_Stdlib_PriorityQueue + */ + public function getListeners($event) + { + if (!array_key_exists($event, $this->events)) { + return new Zend_Stdlib_PriorityQueue(); + } + return $this->events[$event]; + } + + /** + * Clear all listeners for a given event + * + * @param string $event + * @return void + */ + public function clearListeners($event) + { + if (!empty($this->events[$event])) { + unset($this->events[$event]); + } + } + + /** + * Prepare arguments + * + * Use this method if you want to be able to modify arguments from within a + * listener. It returns an ArrayObject of the arguments, which may then be + * passed to trigger() or triggerUntil(). + * + * @param array $args + * @return ArrayObject + */ + public function prepareArgs(array $args) + { + return new ArrayObject($args); + } + + /** + * Trigger listeners + * + * Actual functionality for triggering listeners, to which both trigger() and triggerUntil() + * delegate. + * + * @param string $event Event name + * @param EventDescription $e + * @param null|callback $callback + * @return ResponseCollection + */ + protected function triggerListeners($event, Zend_EventManager_EventDescription $e, $callback = null) + { + $responses = new Zend_EventManager_ResponseCollection; + $listeners = $this->getListeners($event); + + // Add shared/wildcard listeners to the list of listeners, + // but don't modify the listeners object + $sharedListeners = $this->getSharedListeners($event); + $sharedWildcardListeners = $this->getSharedListeners('*'); + $wildcardListeners = $this->getListeners('*'); + if (count($sharedListeners) || count($sharedWildcardListeners) || count($wildcardListeners)) { + $listeners = clone $listeners; + } + + // Shared listeners on this specific event + $this->insertListeners($listeners, $sharedListeners); + + // Shared wildcard listeners + $this->insertListeners($listeners, $sharedWildcardListeners); + + // Add wildcard listeners + $this->insertListeners($listeners, $wildcardListeners); + + if ($listeners->isEmpty()) { + return $responses; + } + + foreach ($listeners as $listener) { + // Trigger the listener's callback, and push its result onto the + // response collection + $responses->push(call_user_func($listener->getCallback(), $e)); + + // If the event was asked to stop propagating, do so + if ($e->propagationIsStopped()) { + $responses->setStopped(true); + break; + } + + // If the result causes our validation callback to return true, + // stop propagation + if ($callback && call_user_func($callback, $responses->last())) { + $responses->setStopped(true); + break; + } + } + + return $responses; + } + + /** + * Get list of all listeners attached to the shared collection for + * identifiers registered by this instance + * + * @param string $event + * @return array + */ + protected function getSharedListeners($event) + { + if (!$sharedCollections = $this->getSharedCollections()) { + return array(); + } + + $identifiers = $this->getIdentifiers(); + $sharedListeners = array(); + + foreach ($identifiers as $id) { + if (!$listeners = $sharedCollections->getListeners($id, $event)) { + continue; + } + + if (!is_array($listeners) && !($listeners instanceof Traversable)) { + continue; + } + + foreach ($listeners as $listener) { + if (!$listener instanceof Zend_Stdlib_CallbackHandler) { + continue; + } + $sharedListeners[] = $listener; + } + } + + return $sharedListeners; + } + + /** + * Add listeners to the master queue of listeners + * + * Used to inject shared listeners and wildcard listeners. + * + * @param Zend_Stdlib_PriorityQueue $masterListeners + * @param Zend_Stdlib_PriorityQueue $listeners + * @return void + */ + protected function insertListeners($masterListeners, $listeners) + { + if (!count($listeners)) { + return; + } + + foreach ($listeners as $listener) { + $priority = $listener->getMetadatum('priority'); + if (null === $priority) { + $priority = 1; + } elseif (is_array($priority)) { + // If we have an array, likely using PriorityQueue. Grab first + // element of the array, as that's the actual priority. + $priority = array_shift($priority); + } + $masterListeners->insert($listener, $priority); + } + } +} diff --git a/library/Zend/EventManager/EventManagerAware.php b/library/Zend/EventManager/EventManagerAware.php new file mode 100755 index 000000000..e1a9b33f8 --- /dev/null +++ b/library/Zend/EventManager/EventManagerAware.php @@ -0,0 +1,40 @@ +setExtractFlags(self::EXTR_BOTH); + + // Iterate and remove any matches + $removed = false; + $items = array(); + $this->rewind(); + while (!$this->isEmpty()) { + $item = $this->extract(); + if ($item['data'] === $datum) { + $removed = true; + continue; + } + $items[] = $item; + } + + // Repopulate + foreach ($items as $item) { + $this->insert($item['data'], $item['priority']); + } + + $this->setExtractFlags(self::EXTR_DATA); + return $removed; + } + + /** + * Iterate the next filter in the chain + * + * Iterates and calls the next filter in the chain. + * + * @param mixed $context + * @param array $params + * @param Zend_EventManager_Filter_FilterIterator $chain + * @return mixed + */ + public function next($context = null, array $params = array(), $chain = null) + { + if (empty($context) || $chain->isEmpty()) { + return; + } + + $next = $this->extract(); + if (!$next instanceof Zend_Stdlib_CallbackHandler) { + return; + } + + $return = call_user_func($next->getCallback(), $context, $params, $chain); + return $return; + } +} diff --git a/library/Zend/EventManager/FilterChain.php b/library/Zend/EventManager/FilterChain.php new file mode 100755 index 000000000..8aa8741e4 --- /dev/null +++ b/library/Zend/EventManager/FilterChain.php @@ -0,0 +1,139 @@ +filters = new Zend_EventManager_Filter_FilterIterator(); + } + + /** + * Apply the filters + * + * Begins iteration of the filters. + * + * @param mixed $context Object under observation + * @param mixed $argv Associative array of arguments + * @return mixed + */ + public function run($context, array $argv = array()) + { + $chain = clone $this->getFilters(); + + if ($chain->isEmpty()) { + return; + } + + $next = $chain->extract(); + if (!$next instanceof Zend_Stdlib_CallbackHandler) { + return; + } + + return call_user_func($next->getCallback(), $context, $argv, $chain); + } + + /** + * Connect a filter to the chain + * + * @param callback $callback PHP Callback + * @param int $priority Priority in the queue at which to execute; defaults to 1 (higher numbers == higher priority) + * @throws Zend_Stdlib_Exception_InvalidCallbackException + * @return Zend_Stdlib_CallbackHandler (to allow later unsubscribe) + */ + public function attach($callback, $priority = 1) + { + if (empty($callback)) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException('No callback provided'); + } + $filter = new Zend_Stdlib_CallbackHandler($callback, array('priority' => $priority)); + $this->filters->insert($filter, $priority); + return $filter; + } + + /** + * Detach a filter from the chain + * + * @param Zend_Stdlib_CallbackHandler $filter + * @return bool Returns true if filter found and unsubscribed; returns false otherwise + */ + public function detach(Zend_Stdlib_CallbackHandler $filter) + { + return $this->filters->remove($filter); + } + + /** + * Retrieve all filters + * + * @return Zend_EventManager_Filter_FilterIterator + */ + public function getFilters() + { + return $this->filters; + } + + /** + * Clear all filters + * + * @return void + */ + public function clearFilters() + { + $this->filters = new Zend_EventManager_Filter_FilterIterator(); + } + + /** + * Return current responses + * + * Only available while the chain is still being iterated. Returns the + * current ResponseCollection. + * + * @return null|Zend_EventManager_ResponseCollection + */ + public function getResponses() + { + return $this->responses; + } +} diff --git a/library/Zend/EventManager/GlobalEventManager.php b/library/Zend/EventManager/GlobalEventManager.php new file mode 100755 index 000000000..19e5f24d4 --- /dev/null +++ b/library/Zend/EventManager/GlobalEventManager.php @@ -0,0 +1,149 @@ +trigger($event, $context, $argv); + } + + /** + * Trigger listeenrs until return value of one causes a callback to evaluate + * to true. + * + * @param string $event + * @param string|object $context + * @param array|object $argv + * @param callback $callback + * @return Zend_EventManager_ResponseCollection + */ + public static function triggerUntil($event, $context, $argv, $callback) + { + return self::getEventCollection()->triggerUntil($event, $context, $argv, $callback); + } + + /** + * Attach a listener to an event + * + * @param string $event + * @param callback $callback + * @param int $priority + * @return Zend_Stdlib_CallbackHandler + */ + public static function attach($event, $callback, $priority = 1) + { + return self::getEventCollection()->attach($event, $callback, $priority); + } + + /** + * Detach a callback from a listener + * + * @param Zend_Stdlib_CallbackHandler $listener + * @return bool + */ + public static function detach(Zend_Stdlib_CallbackHandler $listener) + { + return self::getEventCollection()->detach($listener); + } + + /** + * Retrieve list of events this object manages + * + * @return array + */ + public static function getEvents() + { + return self::getEventCollection()->getEvents(); + } + + /** + * Retrieve all listeners for a given event + * + * @param string $event + * @return Zend_Stdlib_PriorityQueue|array + */ + public static function getListeners($event) + { + return self::getEventCollection()->getListeners($event); + } + + /** + * Clear all listeners for a given event + * + * @param string $event + * @return void + */ + public static function clearListeners($event) + { + return self::getEventCollection()->clearListeners($event); + } +} diff --git a/library/Zend/EventManager/ListenerAggregate.php b/library/Zend/EventManager/ListenerAggregate.php new file mode 100755 index 000000000..c360252a5 --- /dev/null +++ b/library/Zend/EventManager/ListenerAggregate.php @@ -0,0 +1,53 @@ + true, + self::IT_MODE_KEEP => true, + ); + + if (!isset($expected[$mode])) { + throw new InvalidArgumentException(sprintf('Invalid iterator mode specified ("%s")', $mode)); + } + + $this->mode = $mode; + } + + /** + * Return last element in the stack + * + * @return mixed + */ + public function bottom() + { + $this->rewind(); + $value = array_pop($this->stack); + array_push($this->stack, $value); + return $value; + } + + /** + * Countable: return count of items in the stack + * + * @return int + */ + public function count() + { + return $this->count; + } + + /** + * Iterator: return current item in the stack + * + * @return mixed + */ + public function current() + { + if (!$this->stack) { + $this->rewind(); + } + return current($this->stack); + } + + /** + * Get iteration mode + * + * @return int + */ + public function getIteratorMode() + { + return $this->mode; + } + + /** + * Is the stack empty? + * + * @return bool + */ + public function isEmpty() + { + return ($this->count === 0); + } + + /** + * Iterator: return key of current item in the stack + * + * @return mixed + */ + public function key() + { + if (!$this->stack) { + $this->rewind(); + } + return key($this->stack); + } + + /** + * Iterator: advance pointer to next item in the stack + * + * @return void + */ + public function next() + { + if (!$this->stack) { + $this->rewind(); + } + return next($this->stack); + } + + /** + * ArrayAccess: does an item exist at the specified offset? + * + * @param mixed $index + * @return bool + */ + public function offsetExists($index) + { + return array_key_exists($index, $this->data); + } + + /** + * ArrayAccess: get the item at the specified offset + * + * @param mixed $index + * @return mixed + * @throws OutOfRangeException + */ + public function offsetGet($index) + { + if (!$this->offsetExists($index)) { + throw OutOfRangeException(sprintf('Invalid index ("%s") specified', $index)); + } + return $this->data[$index]; + } + + /** + * ArrayAccess: add an item at the specified offset + * + * @param mixed $index + * @param mixed $newval + * @return void + */ + public function offsetSet($index, $newval) + { + $this->data[$index] = $newval; + $this->stack = false; + $this->count++; + } + + /** + * ArrayAccess: unset the item at the specified offset + * + * @param mixed $index + * @return void + * @throws OutOfRangeException + */ + public function offsetUnset($index) + { + if (!$this->offsetExists($index)) { + throw OutOfRangeException(sprintf('Invalid index ("%s") specified', $index)); + } + unset($this->data[$index]); + $this->stack = false; + $this->count--; + } + + /** + * Pop a node from the end of the stack + * + * @return mixed + * @throws RuntimeException + */ + public function pop() + { + $val = array_pop($this->data); + $this->stack = false; + $this->count--; + return $val; + } + + /** + * Move the iterator to the previous node + * + * @todo Does this need to be implemented? + * @return void + */ + public function prev() + { + } + + /** + * Push an element to the list + * + * @param mixed $value + * @return void + */ + public function push($value) + { + array_push($this->data, $value); + $this->count++; + $this->stack = false; + } + + /** + * Iterator: rewind to beginning of stack + * + * @return void + */ + public function rewind() + { + if (is_array($this->stack)) { + return reset($this->stack); + } + $this->stack = array_reverse($this->data, true); + } + + /** + * Serialize the storage + * + * @return string + */ + public function serialize() + { + return serialize($this->data); + } + + /** + * Shifts a node from the beginning of the list + * + * @return mixed + * @throws RuntimeException + */ + public function shift() + { + $val = array_shift($this->data); + $this->stack = false; + $this->count--; + return $val; + } + + /** + * Peek at the top node of the stack + * + * @return mixed + */ + public function top() + { + $this->rewind(); + $value = array_shift($this->stack); + array_unshift($this->stack, $value); + return $value; + } + + /** + * Unserialize the storage + * + * @param string + * @return void + */ + public function unserialize($serialized) + { + $this->data = unserialize($serialized); + $this->stack = false; + } + + /** + * Unshift a node onto the beginning of the list + * + * @param mixed $value + * @return void + */ + public function unshift($value) + { + array_unshift($this->data, $value); + $this->count++; + $this->stack = false; + } + + /** + * Iterator: is the current pointer valid? + * + * @return bool + */ + public function valid() + { + $key = key($this->stack); + $var = ($key !== null && $key !== false); + return $var; + } + } +} + +/** + * Collection of signal handler return values + * + * @category Zend + * @package Zend_EventManager + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_EventManager_ResponseCollection extends SplStack +{ + protected $stopped = false; + + /** + * Did the last response provided trigger a short circuit of the stack? + * + * @return bool + */ + public function stopped() + { + return $this->stopped; + } + + /** + * Mark the collection as stopped (or its opposite) + * + * @param bool $flag + * @return Zend_EventManager_ResponseCollection + */ + public function setStopped($flag) + { + $this->stopped = (bool) $flag; + return $this; + } + + /** + * Convenient access to the first handler return value. + * + * @return mixed The first handler return value + */ + public function first() + { + return parent::bottom(); + } + + /** + * Convenient access to the last handler return value. + * + * If the collection is empty, returns null. Otherwise, returns value + * returned by last handler. + * + * @return mixed The last handler return value + */ + public function last() + { + if (count($this) === 0) { + return null; + } + return parent::top(); + } + + /** + * Check if any of the responses match the given value. + * + * @param mixed $value The value to look for among responses + */ + public function contains($value) + { + foreach ($this as $response) { + if ($response === $value) { + return true; + } + } + return false; + } +} diff --git a/library/Zend/EventManager/SharedEventCollection.php b/library/Zend/EventManager/SharedEventCollection.php new file mode 100755 index 000000000..0050c6137 --- /dev/null +++ b/library/Zend/EventManager/SharedEventCollection.php @@ -0,0 +1,32 @@ + + * SharedEventManager::getInstance()->connect( + * array('My\Resource\AbstractResource', 'My\Resource\EntityResource'), + * 'getOne', + * function ($e) use ($cache) { + * if (!$id = $e->getParam('id', false)) { + * return; + * } + * if (!$data = $cache->load(get_class($resource) . '::getOne::' . $id )) { + * return; + * } + * return $data; + * } + * ); + * + * + * @param string|array $id Identifier(s) for event emitting component(s) + * @param string $event + * @param callback $callback PHP Callback + * @param int $priority Priority at which listener should execute + * @return void + */ + public function attach($id, $event, $callback, $priority = 1) + { + $ids = (array) $id; + foreach ($ids as $id) { + if (!array_key_exists($id, $this->identifiers)) { + $this->identifiers[$id] = new Zend_EventManager_EventManager(); + } + $this->identifiers[$id]->attach($event, $callback, $priority); + } + } + + /** + * Detach a listener from an event offered by a given resource + * + * @param string|int $id + * @param Zend_Stdlib_CallbackHandler $listener + * @return bool Returns true if event and listener found, and unsubscribed; returns false if either event or listener not found + */ + public function detach($id, Zend_Stdlib_CallbackHandler $listener) + { + if (!array_key_exists($id, $this->identifiers)) { + return false; + } + return $this->identifiers[$id]->detach($listener); + } + + /** + * Retrieve all registered events for a given resource + * + * @param string|int $id + * @return array + */ + public function getEvents($id) + { + if (!array_key_exists($id, $this->identifiers)) { + return false; + } + return $this->identifiers[$id]->getEvents(); + } + + /** + * Retrieve all listeners for a given identifier and event + * + * @param string|int $id + * @param string|int $event + * @return false|Zend_Stdlib_PriorityQueue + */ + public function getListeners($id, $event) + { + if (!array_key_exists($id, $this->identifiers)) { + return false; + } + return $this->identifiers[$id]->getListeners($event); + } + + /** + * Clear all listeners for a given identifier, optionally for a specific event + * + * @param string|int $id + * @param null|string $event + * @return bool + */ + public function clearListeners($id, $event = null) + { + if (!array_key_exists($id, $this->identifiers)) { + return false; + } + + if (null === $event) { + unset($this->identifiers[$id]); + return true; + } + + return $this->identifiers[$id]->clearListeners($event); + } +} diff --git a/library/Zend/EventManager/StaticEventManager.php b/library/Zend/EventManager/StaticEventManager.php new file mode 100755 index 000000000..eaa6dbec1 --- /dev/null +++ b/library/Zend/EventManager/StaticEventManager.php @@ -0,0 +1,80 @@ +_previous = $previous; + } else { + parent::__construct($msg, (int) $code, $previous); + } + } + + /** + * Overloading + * + * For PHP < 5.3.0, provides access to the getPrevious() method. + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, array $args) + { + if ('getprevious' == strtolower($method)) { + return $this->_getPrevious(); + } + return null; + } + + /** + * String representation of the exception + * + * @return string + */ + public function __toString() + { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + if (null !== ($e = $this->getPrevious())) { + return $e->__toString() + . "\n\nNext " + . parent::__toString(); + } + } + return parent::__toString(); + } + + /** + * Returns previous Exception + * + * @return Exception|null + */ + protected function _getPrevious() + { + return $this->_previous; + } +} diff --git a/library/Zend/Feed.php b/library/Zend/Feed.php new file mode 100755 index 000000000..3eeed7406 --- /dev/null +++ b/library/Zend/Feed.php @@ -0,0 +1,409 @@ + 'http://a9.com/-/spec/opensearchrss/1.0/', + 'atom' => 'http://www.w3.org/2005/Atom', + 'rss' => 'http://blogs.law.harvard.edu/tech/rss', + ); + + + /** + * Set the HTTP client instance + * + * Sets the HTTP client object to use for retrieving the feeds. + * + * @param Zend_Http_Client $httpClient + * @return void + */ + public static function setHttpClient(Zend_Http_Client $httpClient) + { + self::$_httpClient = $httpClient; + } + + + /** + * Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used. + * + * @return Zend_Http_Client_Abstract + */ + public static function getHttpClient() + { + if (!self::$_httpClient instanceof Zend_Http_Client) { + /** + * @see Zend_Http_Client + */ + require_once 'Zend/Http/Client.php'; + self::$_httpClient = new Zend_Http_Client(); + } + + return self::$_httpClient; + } + + + /** + * Toggle using POST instead of PUT and DELETE HTTP methods + * + * Some feed implementations do not accept PUT and DELETE HTTP + * methods, or they can't be used because of proxies or other + * measures. This allows turning on using POST where PUT and + * DELETE would normally be used; in addition, an + * X-Method-Override header will be sent with a value of PUT or + * DELETE as appropriate. + * + * @param boolean $override Whether to override PUT and DELETE. + * @return void + */ + public static function setHttpMethodOverride($override = true) + { + self::$_httpMethodOverride = $override; + } + + + /** + * Get the HTTP override state + * + * @return boolean + */ + public static function getHttpMethodOverride() + { + return self::$_httpMethodOverride; + } + + + /** + * Get the full version of a namespace prefix + * + * Looks up a prefix (atom:, etc.) in the list of registered + * namespaces and returns the full namespace URI if + * available. Returns the prefix, unmodified, if it's not + * registered. + * + * @return string + */ + public static function lookupNamespace($prefix) + { + return isset(self::$_namespaces[$prefix]) ? + self::$_namespaces[$prefix] : + $prefix; + } + + + /** + * Add a namespace and prefix to the registered list + * + * Takes a prefix and a full namespace URI and adds them to the + * list of registered namespaces for use by + * Zend_Feed::lookupNamespace(). + * + * @param string $prefix The namespace prefix + * @param string $namespaceURI The full namespace URI + * @return void + */ + public static function registerNamespace($prefix, $namespaceURI) + { + self::$_namespaces[$prefix] = $namespaceURI; + } + + + /** + * Imports a feed located at $uri. + * + * @param string $uri + * @throws Zend_Feed_Exception + * @return Zend_Feed_Abstract + */ + public static function import($uri) + { + $client = self::getHttpClient(); + $client->setUri($uri); + $response = $client->request('GET'); + if ($response->getStatus() !== 200) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus()); + } + $feed = $response->getBody(); + return self::importString($feed); + } + + + /** + * Imports a feed represented by $string. + * + * @param string $string + * @throws Zend_Feed_Exception + * @return Zend_Feed_Abstract + */ + public static function importString($string) + { + if (trim($string) == '') { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Document/string being imported' + . ' is an Empty string or comes from an empty HTTP response'); + } + $doc = new DOMDocument; + $doc = Zend_Xml_Security::scan($string, $doc); + + if (!$doc) { + // prevent the class to generate an undefined variable notice (ZF-2590) + // Build error message + $error = libxml_get_last_error(); + if ($error && $error->message) { + $errormsg = "DOMDocument cannot parse XML: {$error->message}"; + } else { + $errormsg = "DOMDocument cannot parse XML"; + } + + + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception($errormsg); + } + + // Try to find the base feed element or a single of an Atom feed + if ($doc->getElementsByTagName('feed')->item(0) || + $doc->getElementsByTagName('entry')->item(0)) { + /** + * @see Zend_Feed_Atom + */ + require_once 'Zend/Feed/Atom.php'; + // return a newly created Zend_Feed_Atom object + return new Zend_Feed_Atom(null, $string); + } + + // Try to find the base feed element of an RSS feed + if ($doc->getElementsByTagName('channel')->item(0)) { + /** + * @see Zend_Feed_Rss + */ + require_once 'Zend/Feed/Rss.php'; + // return a newly created Zend_Feed_Rss object + return new Zend_Feed_Rss(null, $string); + } + + // $string does not appear to be a valid feed of the supported types + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid or unsupported feed format'); + } + + + /** + * Imports a feed from a file located at $filename. + * + * @param string $filename + * @throws Zend_Feed_Exception + * @return Zend_Feed_Abstract + */ + public static function importFile($filename) + { + @ini_set('track_errors', 1); + $feed = @file_get_contents($filename); + @ini_restore('track_errors'); + if ($feed === false) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("File could not be loaded: $php_errormsg"); + } + return self::importString($feed); + } + + + /** + * Attempts to find feeds at $uri referenced by tags. Returns an + * array of the feeds referenced at $uri. + * + * @todo Allow findFeeds() to follow one, but only one, code 302. + * + * @param string $uri + * @throws Zend_Feed_Exception + * @return array + */ + public static function findFeeds($uri) + { + // Get the HTTP response from $uri and save the contents + $client = self::getHttpClient(); + $client->setUri($uri); + $response = $client->request(); + if ($response->getStatus() !== 200) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("Failed to access $uri, got response code " . $response->getStatus()); + } + $contents = $response->getBody(); + + // Parse the contents for appropriate tags + @ini_set('track_errors', 1); + $pattern = '~(]+)/?>~i'; + $result = @preg_match_all($pattern, $contents, $matches); + @ini_restore('track_errors'); + if ($result === false) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("Internal error: $php_errormsg"); + } + + // Try to fetch a feed for each link tag that appears to refer to a feed + $feeds = array(); + if (isset($matches[1]) && count($matches[1]) > 0) { + foreach ($matches[1] as $link) { + // force string to be an utf-8 one + if (!mb_check_encoding($link, 'UTF-8')) { + $link = mb_convert_encoding($link, 'UTF-8'); + } + $xml = @Zend_Xml_Security::scan(rtrim($link, ' /') . ' />'); + if ($xml === false) { + continue; + } + $attributes = $xml->attributes(); + if (!isset($attributes['rel']) || !@preg_match('~^(?:alternate|service\.feed)~i', $attributes['rel'])) { + continue; + } + if (!isset($attributes['type']) || + !@preg_match('~^application/(?:atom|rss|rdf)\+xml~', $attributes['type'])) { + continue; + } + if (!isset($attributes['href'])) { + continue; + } + try { + // checks if we need to canonize the given uri + try { + $uri = Zend_Uri::factory((string) $attributes['href']); + } catch (Zend_Uri_Exception $e) { + // canonize the uri + $path = (string) $attributes['href']; + $query = $fragment = ''; + if (substr($path, 0, 1) != '/') { + // add the current root path to this one + $path = rtrim($client->getUri()->getPath(), '/') . '/' . $path; + } + if (strpos($path, '?') !== false) { + list($path, $query) = explode('?', $path, 2); + } + if (strpos($query, '#') !== false) { + list($query, $fragment) = explode('#', $query, 2); + } + $uri = Zend_Uri::factory($client->getUri(true)); + $uri->setPath($path); + $uri->setQuery($query); + $uri->setFragment($fragment); + } + + $feed = self::import($uri); + } catch (Exception $e) { + continue; + } + $feeds[$uri->getUri()] = $feed; + } + } + + // Return the fetched feeds + return $feeds; + } + + /** + * Construct a new Zend_Feed_Abstract object from a custom array + * + * @param array $data + * @param string $format (rss|atom) the requested output format + * @return Zend_Feed_Abstract + */ + public static function importArray(array $data, $format = 'atom') + { + $obj = 'Zend_Feed_' . ucfirst(strtolower($format)); + if (!class_exists($obj)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($obj); + } + + /** + * @see Zend_Feed_Builder + */ + require_once 'Zend/Feed/Builder.php'; + return new $obj(null, null, new Zend_Feed_Builder($data)); + } + + /** + * Construct a new Zend_Feed_Abstract object from a Zend_Feed_Builder_Interface data source + * + * @param Zend_Feed_Builder_Interface $builder this object will be used to extract the data of the feed + * @param string $format (rss|atom) the requested output format + * @return Zend_Feed_Abstract + */ + public static function importBuilder(Zend_Feed_Builder_Interface $builder, $format = 'atom') + { + $obj = 'Zend_Feed_' . ucfirst(strtolower($format)); + if (!class_exists($obj)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($obj); + } + return new $obj(null, null, $builder); + } +} diff --git a/library/Zend/Feed/Abstract.php b/library/Zend/Feed/Abstract.php new file mode 100755 index 000000000..287a65b79 --- /dev/null +++ b/library/Zend/Feed/Abstract.php @@ -0,0 +1,301 @@ +setUri($uri); + $response = $client->request('GET'); + if ($response->getStatus() !== 200) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus() . '; request: ' . $client->getLastRequest() . "\nresponse: " . $response->asString()); + } + $this->_element = $this->_importFeedFromString($response->getBody()); + $this->__wakeup(); + } elseif ($string !== null) { + // Retrieve the feed from $string + $this->_element = $string; + $this->__wakeup(); + } else { + // Generate the feed from the array + $header = $builder->getHeader(); + $this->_element = new DOMDocument('1.0', $header['charset']); + $root = $this->_mapFeedHeaders($header); + $this->_mapFeedEntries($root, $builder->getEntries()); + $this->_element = $root; + $this->_buildEntryCache(); + } + } + + + /** + * Load the feed as an XML DOMDocument object + * + * @return void + * @throws Zend_Feed_Exception + */ + public function __wakeup() + { + @ini_set('track_errors', 1); + $doc = new DOMDocument; + $doc = @Zend_Xml_Security::scan($this->_element, $doc); + @ini_restore('track_errors'); + + if (!$doc) { + // prevent the class to generate an undefined variable notice (ZF-2590) + if (!isset($php_errormsg)) { + if (function_exists('xdebug_is_enabled')) { + $php_errormsg = '(error message not available, when XDebug is running)'; + } else { + $php_errormsg = '(error message not available)'; + } + } + + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg"); + } + + $this->_element = $doc; + } + + + /** + * Prepare for serialiation + * + * @return array + */ + public function __sleep() + { + $this->_element = $this->saveXML(); + + return array('_element'); + } + + + /** + * Cache the individual feed elements so they don't need to be + * searched for on every operation. + * + * @return void + */ + protected function _buildEntryCache() + { + $this->_entries = array(); + foreach ($this->_element->childNodes as $child) { + if ($child->localName == $this->_entryElementName) { + $this->_entries[] = $child; + } + } + } + + + /** + * Get the number of entries in this feed object. + * + * @return integer Entry count. + */ + public function count() + { + return count($this->_entries); + } + + + /** + * Required by the Iterator interface. + * + * @return void + */ + public function rewind() + { + $this->_entryIndex = 0; + } + + + /** + * Required by the Iterator interface. + * + * @return mixed The current row, or null if no rows. + */ + public function current() + { + return new $this->_entryClassName( + null, + $this->_entries[$this->_entryIndex]); + } + + + /** + * Required by the Iterator interface. + * + * @return mixed The current row number (starts at 0), or NULL if no rows + */ + public function key() + { + return $this->_entryIndex; + } + + + /** + * Required by the Iterator interface. + * + * @return mixed The next row, or null if no more rows. + */ + public function next() + { + ++$this->_entryIndex; + } + + + /** + * Required by the Iterator interface. + * + * @return boolean Whether the iteration is valid + */ + public function valid() + { + return 0 <= $this->_entryIndex && $this->_entryIndex < $this->count(); + } + + /** + * Generate the header of the feed when working in write mode + * + * @param array $array the data to use + * @return DOMElement root node + */ + abstract protected function _mapFeedHeaders($array); + + /** + * Generate the entries of the feed when working in write mode + * + * @param DOMElement $root the root node to use + * @param array $array the data to use + * @return DOMElement root node + */ + abstract protected function _mapFeedEntries(DOMElement $root, $array); + + /** + * Send feed to a http client with the correct header + * + * @throws Zend_Feed_Exception if headers have already been sent + * @return void + */ + abstract public function send(); + + /** + * Import a feed from a string + * + * Protects against XXE attack vectors. + * + * @param string $feed + * @return string + * @throws Zend_Feed_Exception on detection of an XXE vector + */ + protected function _importFeedFromString($feed) + { + if (trim($feed) == '') { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Remote feed being imported' + . ' is an Empty string or comes from an empty HTTP response'); + } + $doc = new DOMDocument; + $doc = Zend_Xml_Security::scan($feed, $doc); + + if (!$doc) { + // prevent the class to generate an undefined variable notice (ZF-2590) + // Build error message + $error = libxml_get_last_error(); + if ($error && $error->message) { + $errormsg = "DOMDocument cannot parse XML: {$error->message}"; + } else { + $errormsg = "DOMDocument cannot parse XML"; + } + + + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception($errormsg); + } + + return $doc->saveXML($doc->documentElement); + } +} diff --git a/library/Zend/Feed/Atom.php b/library/Zend/Feed/Atom.php new file mode 100755 index 000000000..2ee08cef6 --- /dev/null +++ b/library/Zend/Feed/Atom.php @@ -0,0 +1,390 @@ + + * elements). + * + * @var string + */ + protected $_entryElementName = 'entry'; + + /** + * The default namespace for Atom feeds. + * + * @var string + */ + protected $_defaultNamespace = 'atom'; + + + /** + * Override Zend_Feed_Abstract to set up the $_element and $_entries aliases. + * + * @return void + * @throws Zend_Feed_Exception + */ + public function __wakeup() + { + parent::__wakeup(); + + // Find the base feed element and create an alias to it. + $element = $this->_element->getElementsByTagName('feed')->item(0); + if (!$element) { + // Try to find a single instead. + $element = $this->_element->getElementsByTagName($this->_entryElementName)->item(0); + if (!$element) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('No root or <' . $this->_entryElementName + . '> element found, cannot parse feed.'); + } + + $doc = new DOMDocument($this->_element->version, + $this->_element->actualEncoding); + $feed = $doc->appendChild($doc->createElement('feed')); + $feed->appendChild($doc->importNode($element, true)); + $element = $feed; + } + + $this->_element = $element; + + // Find the entries and save a pointer to them for speed and + // simplicity. + $this->_buildEntryCache(); + } + + + /** + * Easy access to tags keyed by "rel" attributes. + * + * If $elt->link() is called with no arguments, we will attempt to + * return the value of the tag(s) like all other + * method-syntax attribute access. If an argument is passed to + * link(), however, then we will return the "href" value of the + * first tag that has a "rel" attribute matching $rel: + * + * $elt->link(): returns the value of the link tag. + * $elt->link('self'): returns the href from the first in the entry. + * + * @param string $rel The "rel" attribute to look for. + * @return mixed + */ + public function link($rel = null) + { + if ($rel === null) { + return parent::__call('link', null); + } + + // index link tags by their "rel" attribute. + $links = parent::__get('link'); + if (!is_array($links)) { + if ($links instanceof Zend_Feed_Element) { + $links = array($links); + } else { + return $links; + } + } + + foreach ($links as $link) { + if (empty($link['rel'])) { + continue; + } + if ($rel == $link['rel']) { + return $link['href']; + } + } + + return null; + } + + + /** + * Make accessing some individual elements of the feed easier. + * + * Special accessors 'entry' and 'entries' are provided so that if + * you wish to iterate over an Atom feed's entries, you can do so + * using foreach ($feed->entries as $entry) or foreach + * ($feed->entry as $entry). + * + * @param string $var The property to access. + * @return mixed + */ + public function __get($var) + { + switch ($var) { + case 'entry': + // fall through to the next case + case 'entries': + return $this; + + default: + return parent::__get($var); + } + } + + /** + * Generate the header of the feed when working in write mode + * + * @param array $array the data to use + * @return DOMElement root node + */ + protected function _mapFeedHeaders($array) + { + $feed = $this->_element->createElement('feed'); + $feed->setAttribute('xmlns', 'http://www.w3.org/2005/Atom'); + + $id = $this->_element->createElement('id', $array->link); + $feed->appendChild($id); + + $title = $this->_element->createElement('title'); + $title->appendChild($this->_element->createCDATASection($array->title)); + $feed->appendChild($title); + + if (isset($array->author)) { + $author = $this->_element->createElement('author'); + $name = $this->_element->createElement('name', $array->author); + $author->appendChild($name); + if (isset($array->email)) { + $email = $this->_element->createElement('email', $array->email); + $author->appendChild($email); + } + $feed->appendChild($author); + } + + $updated = isset($array->lastUpdate) ? $array->lastUpdate : time(); + $updated = $this->_element->createElement('updated', date(DATE_ATOM, $updated)); + $feed->appendChild($updated); + + if (isset($array->published)) { + $published = $this->_element->createElement('published', date(DATE_ATOM, $array->published)); + $feed->appendChild($published); + } + + $link = $this->_element->createElement('link'); + $link->setAttribute('rel', 'self'); + $link->setAttribute('href', $array->link); + if (isset($array->language)) { + $link->setAttribute('hreflang', $array->language); + } + $feed->appendChild($link); + + if (isset($array->description)) { + $subtitle = $this->_element->createElement('subtitle'); + $subtitle->appendChild($this->_element->createCDATASection($array->description)); + $feed->appendChild($subtitle); + } + + if (isset($array->copyright)) { + $copyright = $this->_element->createElement('rights', $array->copyright); + $feed->appendChild($copyright); + } + + if (isset($array->image)) { + $image = $this->_element->createElement('logo', $array->image); + $feed->appendChild($image); + } + + $generator = !empty($array->generator) ? $array->generator : 'Zend_Feed'; + $generator = $this->_element->createElement('generator', $generator); + $feed->appendChild($generator); + + return $feed; + } + + /** + * Generate the entries of the feed when working in write mode + * + * The following nodes are constructed for each feed entry + * + * url to feed entry + * entry title + * last update + * + * short text + * long version, can contain html + * + * + * @param array $array the data to use + * @param DOMElement $root the root node to use + * @return void + */ + protected function _mapFeedEntries(DOMElement $root, $array) + { + foreach ($array as $dataentry) { + $entry = $this->_element->createElement('entry'); + + $id = $this->_element->createElement('id', isset($dataentry->guid) ? $dataentry->guid : $dataentry->link); + $entry->appendChild($id); + + $title = $this->_element->createElement('title'); + $title->appendChild($this->_element->createCDATASection($dataentry->title)); + $entry->appendChild($title); + + $updated = isset($dataentry->lastUpdate) ? $dataentry->lastUpdate : time(); + $updated = $this->_element->createElement('updated', date(DATE_ATOM, $updated)); + $entry->appendChild($updated); + + $link = $this->_element->createElement('link'); + $link->setAttribute('rel', 'alternate'); + $link->setAttribute('href', $dataentry->link); + $entry->appendChild($link); + + $summary = $this->_element->createElement('summary'); + $summary->appendChild($this->_element->createCDATASection($dataentry->description)); + $entry->appendChild($summary); + + if (isset($dataentry->content)) { + $content = $this->_element->createElement('content'); + $content->setAttribute('type', 'html'); + $content->appendChild($this->_element->createCDATASection($dataentry->content)); + $entry->appendChild($content); + } + + if (isset($dataentry->category)) { + foreach ($dataentry->category as $category) { + $node = $this->_element->createElement('category'); + $node->setAttribute('term', $category['term']); + if (isset($category['scheme'])) { + $node->setAttribute('scheme', $category['scheme']); + } + $entry->appendChild($node); + } + } + + if (isset($dataentry->source)) { + $source = $this->_element->createElement('source'); + $title = $this->_element->createElement('title', $dataentry->source['title']); + $source->appendChild($title); + $link = $this->_element->createElement('link', $dataentry->source['title']); + $link->setAttribute('rel', 'alternate'); + $link->setAttribute('href', $dataentry->source['url']); + $source->appendChild($link); + } + + if (isset($dataentry->enclosure)) { + foreach ($dataentry->enclosure as $enclosure) { + $node = $this->_element->createElement('link'); + $node->setAttribute('rel', 'enclosure'); + $node->setAttribute('href', $enclosure['url']); + if (isset($enclosure['type'])) { + $node->setAttribute('type', $enclosure['type']); + } + if (isset($enclosure['length'])) { + $node->setAttribute('length', $enclosure['length']); + } + $entry->appendChild($node); + } + } + + if (isset($dataentry->comments)) { + $comments = $this->_element->createElementNS('http://wellformedweb.org/CommentAPI/', + 'wfw:comment', + $dataentry->comments); + $entry->appendChild($comments); + } + if (isset($dataentry->commentRss)) { + $comments = $this->_element->createElementNS('http://wellformedweb.org/CommentAPI/', + 'wfw:commentRss', + $dataentry->commentRss); + $entry->appendChild($comments); + } + + $root->appendChild($entry); + } + } + + /** + * Override Zend_Feed_Element to allow formated feeds + * + * @return string + */ + public function saveXml() + { + // Return a complete document including XML prologue. + $doc = new DOMDocument($this->_element->ownerDocument->version, + $this->_element->ownerDocument->actualEncoding); + $doc->appendChild($doc->importNode($this->_element, true)); + $doc->formatOutput = true; + + return $doc->saveXML(); + } + + /** + * Send feed to a http client with the correct header + * + * @return void + * @throws Zend_Feed_Exception if headers have already been sent + */ + public function send() + { + if (headers_sent()) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Cannot send ATOM because headers have already been sent.'); + } + + header('Content-Type: application/atom+xml; charset=' . $this->_element->ownerDocument->actualEncoding); + + echo $this->saveXML(); + } +} diff --git a/library/Zend/Feed/Builder.php b/library/Zend/Feed/Builder.php new file mode 100755 index 000000000..f35dc7f1f --- /dev/null +++ b/library/Zend/Feed/Builder.php @@ -0,0 +1,398 @@ + + * array( + * 'title' => 'title of the feed', //required + * 'link' => 'canonical url to the feed', //required + * 'lastUpdate' => 'timestamp of the update date', // optional + * 'published' => 'timestamp of the publication date', //optional + * 'charset' => 'charset', // required + * 'description' => 'short description of the feed', //optional + * 'author' => 'author/publisher of the feed', //optional + * 'email' => 'email of the author', //optional + * 'webmaster' => 'email address for person responsible for technical issues' // optional, ignored if atom is used + * 'copyright' => 'copyright notice', //optional + * 'image' => 'url to image', //optional + * 'generator' => 'generator', // optional + * 'language' => 'language the feed is written in', // optional + * 'ttl' => 'how long in minutes a feed can be cached before refreshing', // optional, ignored if atom is used + * 'rating' => 'The PICS rating for the channel.', // optional, ignored if atom is used + * 'cloud' => array( + * 'domain' => 'domain of the cloud, e.g. rpc.sys.com' // required + * 'port' => 'port to connect to' // optional, default to 80 + * 'path' => 'path of the cloud, e.g. /RPC2 //required + * 'registerProcedure' => 'procedure to call, e.g. myCloud.rssPleaseNotify' // required + * 'protocol' => 'protocol to use, e.g. soap or xml-rpc' // required + * ), a cloud to be notified of updates // optional, ignored if atom is used + * 'textInput' => array( + * 'title' => 'the label of the Submit button in the text input area' // required, + * 'description' => 'explains the text input area' // required + * 'name' => 'the name of the text object in the text input area' // required + * 'link' => 'the URL of the CGI script that processes text input requests' // required + * ) // a text input box that can be displayed with the feed // optional, ignored if atom is used + * 'skipHours' => array( + * 'hour in 24 format', // e.g 13 (1pm) + * // up to 24 rows whose value is a number between 0 and 23 + * ) // Hint telling aggregators which hours they can skip // optional, ignored if atom is used + * 'skipDays ' => array( + * 'a day to skip', // e.g Monday + * // up to 7 rows whose value is a Monday, Tuesday, Wednesday, Thursday, Friday, Saturday or Sunday + * ) // Hint telling aggregators which days they can skip // optional, ignored if atom is used + * 'itunes' => array( + * 'author' => 'Artist column' // optional, default to the main author value + * 'owner' => array( + * 'name' => 'name of the owner' // optional, default to main author value + * 'email' => 'email of the owner' // optional, default to main email value + * ) // Owner of the podcast // optional + * 'image' => 'album/podcast art' // optional, default to the main image value + * 'subtitle' => 'short description' // optional, default to the main description value + * 'summary' => 'longer description' // optional, default to the main description value + * 'block' => 'Prevent an episode from appearing (yes|no)' // optional + * 'category' => array( + * array('main' => 'main category', // required + * 'sub' => 'sub category' // optional + * ), + * // up to 3 rows + * ) // 'Category column and in iTunes Music Store Browse' // required + * 'explicit' => 'parental advisory graphic (yes|no|clean)' // optional + * 'keywords' => 'a comma separated list of 12 keywords maximum' // optional + * 'new-feed-url' => 'used to inform iTunes of new feed URL location' // optional + * ) // Itunes extension data // optional, ignored if atom is used + * 'entries' => array( + * array( + * 'title' => 'title of the feed entry', //required + * 'link' => 'url to a feed entry', //required + * 'description' => 'short version of a feed entry', // only text, no html, required + * 'guid' => 'id of the article, if not given link value will used', //optional + * 'content' => 'long version', // can contain html, optional + * 'lastUpdate' => 'timestamp of the publication date', // optional + * 'comments' => 'comments page of the feed entry', // optional + * 'commentRss' => 'the feed url of the associated comments', // optional + * 'source' => array( + * 'title' => 'title of the original source' // required, + * 'url' => 'url of the original source' // required + * ) // original source of the feed entry // optional + * 'category' => array( + * array( + * 'term' => 'first category label' // required, + * 'scheme' => 'url that identifies a categorization scheme' // optional + * ), + * array( + * //data for the second category and so on + * ) + * ) // list of the attached categories // optional + * 'enclosure' => array( + * array( + * 'url' => 'url of the linked enclosure' // required + * 'type' => 'mime type of the enclosure' // optional + * 'length' => 'length of the linked content in octets' // optional + * ), + * array( + * //data for the second enclosure and so on + * ) + * ) // list of the enclosures of the feed entry // optional + * ), + * array( + * //data for the second entry and so on + * ) + * ) + * ); + * + * + * @param array $data + * @return void + */ + public function __construct(array $data) + { + $this->_data = $data; + $this->_createHeader($data); + if (isset($data['entries'])) { + $this->_createEntries($data['entries']); + } + } + + /** + * Returns an instance of Zend_Feed_Builder_Header + * describing the header of the feed + * + * @return Zend_Feed_Builder_Header + */ + public function getHeader() + { + return $this->_header; + } + + /** + * Returns an array of Zend_Feed_Builder_Entry instances + * describing the entries of the feed + * + * @return array of Zend_Feed_Builder_Entry + */ + public function getEntries() + { + return $this->_entries; + } + + /** + * Create the Zend_Feed_Builder_Header instance + * + * @param array $data + * @throws Zend_Feed_Builder_Exception + * @return void + */ + protected function _createHeader(array $data) + { + $mandatories = array('title', 'link', 'charset'); + foreach ($mandatories as $mandatory) { + if (!isset($data[$mandatory])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("$mandatory key is missing"); + } + } + $this->_header = new Zend_Feed_Builder_Header($data['title'], $data['link'], $data['charset']); + if (isset($data['lastUpdate'])) { + $this->_header->setLastUpdate($data['lastUpdate']); + } + if (isset($data['published'])) { + $this->_header->setPublishedDate($data['published']); + } + if (isset($data['description'])) { + $this->_header->setDescription($data['description']); + } + if (isset($data['author'])) { + $this->_header->setAuthor($data['author']); + } + if (isset($data['email'])) { + $this->_header->setEmail($data['email']); + } + if (isset($data['webmaster'])) { + $this->_header->setWebmaster($data['webmaster']); + } + if (isset($data['copyright'])) { + $this->_header->setCopyright($data['copyright']); + } + if (isset($data['image'])) { + $this->_header->setImage($data['image']); + } + if (isset($data['generator'])) { + $this->_header->setGenerator($data['generator']); + } + if (isset($data['language'])) { + $this->_header->setLanguage($data['language']); + } + if (isset($data['ttl'])) { + $this->_header->setTtl($data['ttl']); + } + if (isset($data['rating'])) { + $this->_header->setRating($data['rating']); + } + if (isset($data['cloud'])) { + $mandatories = array('domain', 'path', 'registerProcedure', 'protocol'); + foreach ($mandatories as $mandatory) { + if (!isset($data['cloud'][$mandatory])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to define $mandatory property of your cloud"); + } + } + $uri_str = 'http://' . $data['cloud']['domain'] . $data['cloud']['path']; + $this->_header->setCloud($uri_str, $data['cloud']['registerProcedure'], $data['cloud']['protocol']); + } + if (isset($data['textInput'])) { + $mandatories = array('title', 'description', 'name', 'link'); + foreach ($mandatories as $mandatory) { + if (!isset($data['textInput'][$mandatory])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to define $mandatory property of your textInput"); + } + } + $this->_header->setTextInput($data['textInput']['title'], + $data['textInput']['description'], + $data['textInput']['name'], + $data['textInput']['link']); + } + if (isset($data['skipHours'])) { + $this->_header->setSkipHours($data['skipHours']); + } + if (isset($data['skipDays'])) { + $this->_header->setSkipDays($data['skipDays']); + } + if (isset($data['itunes'])) { + $itunes = new Zend_Feed_Builder_Header_Itunes($data['itunes']['category']); + if (isset($data['itunes']['author'])) { + $itunes->setAuthor($data['itunes']['author']); + } + if (isset($data['itunes']['owner'])) { + $name = isset($data['itunes']['owner']['name']) ? $data['itunes']['owner']['name'] : ''; + $email = isset($data['itunes']['owner']['email']) ? $data['itunes']['owner']['email'] : ''; + $itunes->setOwner($name, $email); + } + if (isset($data['itunes']['image'])) { + $itunes->setImage($data['itunes']['image']); + } + if (isset($data['itunes']['subtitle'])) { + $itunes->setSubtitle($data['itunes']['subtitle']); + } + if (isset($data['itunes']['summary'])) { + $itunes->setSummary($data['itunes']['summary']); + } + if (isset($data['itunes']['block'])) { + $itunes->setBlock($data['itunes']['block']); + } + if (isset($data['itunes']['explicit'])) { + $itunes->setExplicit($data['itunes']['explicit']); + } + if (isset($data['itunes']['keywords'])) { + $itunes->setKeywords($data['itunes']['keywords']); + } + if (isset($data['itunes']['new-feed-url'])) { + $itunes->setNewFeedUrl($data['itunes']['new-feed-url']); + } + + $this->_header->setITunes($itunes); + } + } + + /** + * Create the array of article entries + * + * @param array $data + * @throws Zend_Feed_Builder_Exception + * @return void + */ + protected function _createEntries(array $data) + { + foreach ($data as $row) { + $mandatories = array('title', 'link', 'description'); + foreach ($mandatories as $mandatory) { + if (!isset($row[$mandatory])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("$mandatory key is missing"); + } + } + $entry = new Zend_Feed_Builder_Entry($row['title'], $row['link'], $row['description']); + if (isset($row['author'])) { + $entry->setAuthor($row['author']); + } + if (isset($row['guid'])) { + $entry->setId($row['guid']); + } + if (isset($row['content'])) { + $entry->setContent($row['content']); + } + if (isset($row['lastUpdate'])) { + $entry->setLastUpdate($row['lastUpdate']); + } + if (isset($row['comments'])) { + $entry->setCommentsUrl($row['comments']); + } + if (isset($row['commentRss'])) { + $entry->setCommentsRssUrl($row['commentRss']); + } + if (isset($row['source'])) { + $mandatories = array('title', 'url'); + foreach ($mandatories as $mandatory) { + if (!isset($row['source'][$mandatory])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("$mandatory key of source property is missing"); + } + } + $entry->setSource($row['source']['title'], $row['source']['url']); + } + if (isset($row['category'])) { + $entry->setCategories($row['category']); + } + if (isset($row['enclosure'])) { + $entry->setEnclosures($row['enclosure']); + } + + $this->_entries[] = $entry; + } + } +} diff --git a/library/Zend/Feed/Builder/Entry.php b/library/Zend/Feed/Builder/Entry.php new file mode 100755 index 000000000..d911cf665 --- /dev/null +++ b/library/Zend/Feed/Builder/Entry.php @@ -0,0 +1,297 @@ +offsetSet('title', $title); + $this->offsetSet('link', $link); + $this->offsetSet('description', $description); + $this->setLastUpdate(time()); + } + + /** + * Read only properties accessor + * + * @param string $name property to read + * @return mixed + */ + public function __get($name) + { + if (!$this->offsetExists($name)) { + return NULL; + } + + return $this->offsetGet($name); + } + + /** + * Write properties accessor + * + * @param string $name name of the property to set + * @param mixed $value value to set + * @return void + */ + public function __set($name, $value) + { + $this->offsetSet($name, $value); + } + + /** + * Isset accessor + * + * @param string $key + * @return boolean + */ + public function __isset($key) + { + return $this->offsetExists($key); + } + + /** + * Unset accessor + * + * @param string $key + * @return void + */ + public function __unset($key) + { + if ($this->offsetExists($key)) { + $this->offsetUnset($key); + } + } + + /** + * Sets the author of the entry + * + * @param string $author + * @return Zend_Feed_Builder_Entry + */ + public function setAuthor($author) + { + $this->offsetSet('author', $author); + return $this; + } + + /** + * Sets the id/guid of the entry + * + * @param string $id + * @return Zend_Feed_Builder_Entry + */ + public function setId($id) + { + $this->offsetSet('guid', $id); + return $this; + } + + /** + * Sets the full html content of the entry + * + * @param string $content + * @return Zend_Feed_Builder_Entry + */ + public function setContent($content) + { + $this->offsetSet('content', $content); + return $this; + } + + /** + * Timestamp of the update date + * + * @param int $lastUpdate + * @return Zend_Feed_Builder_Entry + */ + public function setLastUpdate($lastUpdate) + { + $this->offsetSet('lastUpdate', $lastUpdate); + return $this; + } + + /** + * Sets the url of the commented page associated to the entry + * + * @param string $comments + * @return Zend_Feed_Builder_Entry + */ + public function setCommentsUrl($comments) + { + $this->offsetSet('comments', $comments); + return $this; + } + + /** + * Sets the url of the comments feed link + * + * @param string $commentRss + * @return Zend_Feed_Builder_Entry + */ + public function setCommentsRssUrl($commentRss) + { + $this->offsetSet('commentRss', $commentRss); + return $this; + } + + /** + * Defines a reference to the original source + * + * @param string $title + * @param string $url + * @return Zend_Feed_Builder_Entry + */ + public function setSource($title, $url) + { + $this->offsetSet('source', array('title' => $title, + 'url' => $url)); + return $this; + } + + /** + * Sets the categories of the entry + * Format of the array: + * + * array( + * array( + * 'term' => 'first category label', + * 'scheme' => 'url that identifies a categorization scheme' // optional + * ), + * // second category and so one + * ) + * + * + * @param array $categories + * @return Zend_Feed_Builder_Entry + */ + public function setCategories(array $categories) + { + foreach ($categories as $category) { + $this->addCategory($category); + } + return $this; + } + + /** + * Add a category to the entry + * + * @param array $category see Zend_Feed_Builder_Entry::setCategories() for format + * @return Zend_Feed_Builder_Entry + * @throws Zend_Feed_Builder_Exception + */ + public function addCategory(array $category) + { + if (empty($category['term'])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to define the name of the category"); + } + + if (!$this->offsetExists('category')) { + $categories = array($category); + } else { + $categories = $this->offsetGet('category'); + $categories[] = $category; + } + $this->offsetSet('category', $categories); + return $this; + } + + /** + * Sets the enclosures of the entry + * Format of the array: + * + * array( + * array( + * 'url' => 'url of the linked enclosure', + * 'type' => 'mime type of the enclosure' // optional + * 'length' => 'length of the linked content in octets' // optional + * ), + * // second enclosure and so one + * ) + * + * + * @param array $enclosures + * @return Zend_Feed_Builder_Entry + * @throws Zend_Feed_Builder_Exception + */ + public function setEnclosures(array $enclosures) + { + foreach ($enclosures as $enclosure) { + if (empty($enclosure['url'])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to supply an url for your enclosure"); + } + $type = isset($enclosure['type']) ? $enclosure['type'] : ''; + $length = isset($enclosure['length']) ? $enclosure['length'] : ''; + $this->addEnclosure($enclosure['url'], $type, $length); + } + return $this; + } + + /** + * Add an enclosure to the entry + * + * @param string $url + * @param string $type + * @param string $length + * @return Zend_Feed_Builder_Entry + */ + public function addEnclosure($url, $type = '', $length = '') + { + if (!$this->offsetExists('enclosure')) { + $enclosure = array(); + } else { + $enclosure = $this->offsetGet('enclosure'); + } + $enclosure[] = array('url' => $url, + 'type' => $type, + 'length' => $length); + $this->offsetSet('enclosure', $enclosure); + return $this; + } +} diff --git a/library/Zend/Feed/Builder/Exception.php b/library/Zend/Feed/Builder/Exception.php new file mode 100755 index 000000000..00213c9c8 --- /dev/null +++ b/library/Zend/Feed/Builder/Exception.php @@ -0,0 +1,40 @@ +offsetSet('title', $title); + $this->offsetSet('link', $link); + $this->offsetSet('charset', $charset); + $this->setLastUpdate(time()) + ->setGenerator('Zend_Feed'); + } + + /** + * Read only properties accessor + * + * @param string $name property to read + * @return mixed + */ + public function __get($name) + { + if (!$this->offsetExists($name)) { + return NULL; + } + + return $this->offsetGet($name); + } + + /** + * Write properties accessor + * + * @param string $name name of the property to set + * @param mixed $value value to set + * @return void + */ + public function __set($name, $value) + { + $this->offsetSet($name, $value); + } + + /** + * Isset accessor + * + * @param string $key + * @return boolean + */ + public function __isset($key) + { + return $this->offsetExists($key); + } + + /** + * Unset accessor + * + * @param string $key + * @return void + */ + public function __unset($key) + { + if ($this->offsetExists($key)) { + $this->offsetUnset($key); + } + } + + /** + * Timestamp of the update date + * + * @param int $lastUpdate + * @return Zend_Feed_Builder_Header + */ + public function setLastUpdate($lastUpdate) + { + $this->offsetSet('lastUpdate', $lastUpdate); + return $this; + } + + /** + * Timestamp of the publication date + * + * @param int $published + * @return Zend_Feed_Builder_Header + */ + public function setPublishedDate($published) + { + $this->offsetSet('published', $published); + return $this; + } + + /** + * Short description of the feed + * + * @param string $description + * @return Zend_Feed_Builder_Header + */ + public function setDescription($description) + { + $this->offsetSet('description', $description); + return $this; + } + + /** + * Sets the author of the feed + * + * @param string $author + * @return Zend_Feed_Builder_Header + */ + public function setAuthor($author) + { + $this->offsetSet('author', $author); + return $this; + } + + /** + * Sets the author's email + * + * @param string $email + * @return Zend_Feed_Builder_Header + * @throws Zend_Feed_Builder_Exception + */ + public function setEmail($email) + { + /** + * @see Zend_Validate_EmailAddress + */ + require_once 'Zend/Validate/EmailAddress.php'; + $validate = new Zend_Validate_EmailAddress(); + if (!$validate->isValid($email)) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the email property"); + } + $this->offsetSet('email', $email); + return $this; + } + + /** + * Sets the copyright notice + * + * @param string $copyright + * @return Zend_Feed_Builder_Header + */ + public function setCopyright($copyright) + { + $this->offsetSet('copyright', $copyright); + return $this; + } + + /** + * Sets the image of the feed + * + * @param string $image + * @return Zend_Feed_Builder_Header + */ + public function setImage($image) + { + $this->offsetSet('image', $image); + return $this; + } + + /** + * Sets the generator of the feed + * + * @param string $generator + * @return Zend_Feed_Builder_Header + */ + public function setGenerator($generator) + { + $this->offsetSet('generator', $generator); + return $this; + } + + /** + * Sets the language of the feed + * + * @param string $language + * @return Zend_Feed_Builder_Header + */ + public function setLanguage($language) + { + $this->offsetSet('language', $language); + return $this; + } + + /** + * Email address for person responsible for technical issues + * Ignored if atom is used + * + * @param string $webmaster + * @return Zend_Feed_Builder_Header + * @throws Zend_Feed_Builder_Exception + */ + public function setWebmaster($webmaster) + { + /** + * @see Zend_Validate_EmailAddress + */ + require_once 'Zend/Validate/EmailAddress.php'; + $validate = new Zend_Validate_EmailAddress(); + if (!$validate->isValid($webmaster)) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the webmaster property"); + } + $this->offsetSet('webmaster', $webmaster); + return $this; + } + + /** + * How long in minutes a feed can be cached before refreshing + * Ignored if atom is used + * + * @param int $ttl + * @return Zend_Feed_Builder_Header + * @throws Zend_Feed_Builder_Exception + */ + public function setTtl($ttl) + { + /** + * @see Zend_Validate_Int + */ + require_once 'Zend/Validate/Int.php'; + $validate = new Zend_Validate_Int(); + if (!$validate->isValid($ttl)) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set an integer value to the ttl property"); + } + $this->offsetSet('ttl', $ttl); + return $this; + } + + /** + * PICS rating for the feed + * Ignored if atom is used + * + * @param string $rating + * @return Zend_Feed_Builder_Header + */ + public function setRating($rating) + { + $this->offsetSet('rating', $rating); + return $this; + } + + /** + * Cloud to be notified of updates of the feed + * Ignored if atom is used + * + * @param string|Zend_Uri_Http $uri + * @param string $procedure procedure to call, e.g. myCloud.rssPleaseNotify + * @param string $protocol protocol to use, e.g. soap or xml-rpc + * @return Zend_Feed_Builder_Header + * @throws Zend_Feed_Builder_Exception + */ + public function setCloud($uri, $procedure, $protocol) + { + if (is_string($uri) && Zend_Uri_Http::check($uri)) { + $uri = Zend_Uri::factory($uri); + } + if (!$uri instanceof Zend_Uri_Http) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception('Passed parameter is not a valid HTTP URI'); + } + if (!$uri->getPort()) { + $uri->setPort(80); + } + $this->offsetSet('cloud', array('uri' => $uri, + 'procedure' => $procedure, + 'protocol' => $protocol)); + return $this; + } + + /** + * A text input box that can be displayed with the feed + * Ignored if atom is used + * + * @param string $title the label of the Submit button in the text input area + * @param string $description explains the text input area + * @param string $name the name of the text object in the text input area + * @param string $link the URL of the CGI script that processes text input requests + * @return Zend_Feed_Builder_Header + */ + public function setTextInput($title, $description, $name, $link) + { + $this->offsetSet('textInput', array('title' => $title, + 'description' => $description, + 'name' => $name, + 'link' => $link)); + return $this; + } + + /** + * Hint telling aggregators which hours they can skip + * Ignored if atom is used + * + * @param array $hours list of hours in 24 format + * @return Zend_Feed_Builder_Header + * @throws Zend_Feed_Builder_Exception + */ + public function setSkipHours(array $hours) + { + if (count($hours) > 24) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you can not have more than 24 rows in the skipHours property"); + } + foreach ($hours as $hour) { + if ($hour < 0 || $hour > 23) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("$hour has te be between 0 and 23"); + } + } + $this->offsetSet('skipHours', $hours); + return $this; + } + + /** + * Hint telling aggregators which days they can skip + * Ignored if atom is used + * + * @param array $days list of days to skip, e.g. Monday + * @return Zend_Feed_Builder_Header + * @throws Zend_Feed_Builder_Exception + */ + public function setSkipDays(array $days) + { + if (count($days) > 7) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you can not have more than 7 days in the skipDays property"); + } + $valid = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'); + foreach ($days as $day) { + if (!in_array(strtolower($day), $valid)) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("$day is not a valid day"); + } + } + $this->offsetSet('skipDays', $days); + return $this; + } + + /** + * Sets the iTunes rss extension + * + * @param Zend_Feed_Builder_Header_Itunes $itunes + * @return Zend_Feed_Builder_Header + */ + public function setITunes(Zend_Feed_Builder_Header_Itunes $itunes) + { + $this->offsetSet('itunes', $itunes); + return $this; + } +} diff --git a/library/Zend/Feed/Builder/Header/Itunes.php b/library/Zend/Feed/Builder/Header/Itunes.php new file mode 100755 index 000000000..52d6566ae --- /dev/null +++ b/library/Zend/Feed/Builder/Header/Itunes.php @@ -0,0 +1,288 @@ +setCategories($categories); + } + + /** + * Sets the categories column and in iTunes Music Store Browse + * $categories must conform to the following format: + * + * array(array('main' => 'main category', + * 'sub' => 'sub category' // optionnal + * ), + * // up to 3 rows + * ) + * + * + * @param array $categories + * @return Zend_Feed_Builder_Header_Itunes + * @throws Zend_Feed_Builder_Exception + */ + public function setCategories(array $categories) + { + $nb = count($categories); + if (0 === $nb) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set at least one itunes category"); + } + if ($nb > 3) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set at most three itunes categories"); + } + foreach ($categories as $i => $category) { + if (empty($category['main'])) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set the main category (category #$i)"); + } + } + $this->offsetSet('category', $categories); + return $this; + } + + /** + * Sets the artist value, default to the feed's author value + * + * @param string $author + * @return Zend_Feed_Builder_Header_Itunes + */ + public function setAuthor($author) + { + $this->offsetSet('author', $author); + return $this; + } + + /** + * Sets the owner of the postcast + * + * @param string $name default to the feed's author value + * @param string $email default to the feed's email value + * @return Zend_Feed_Builder_Header_Itunes + * @throws Zend_Feed_Builder_Exception + */ + public function setOwner($name = '', $email = '') + { + if (!empty($email)) { + /** + * @see Zend_Validate_EmailAddress + */ + require_once 'Zend/Validate/EmailAddress.php'; + $validate = new Zend_Validate_EmailAddress(); + if (!$validate->isValid($email)) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set a valid email address into the itunes owner's email property"); + } + } + $this->offsetSet('owner', array('name' => $name, 'email' => $email)); + return $this; + } + + /** + * Sets the album/podcast art picture + * Default to the feed's image value + * + * @param string $image + * @return Zend_Feed_Builder_Header_Itunes + */ + public function setImage($image) + { + $this->offsetSet('image', $image); + return $this; + } + + /** + * Sets the short description of the podcast + * Default to the feed's description + * + * @param string $subtitle + * @return Zend_Feed_Builder_Header_Itunes + */ + public function setSubtitle($subtitle) + { + $this->offsetSet('subtitle', $subtitle); + return $this; + } + + /** + * Sets the longer description of the podcast + * Default to the feed's description + * + * @param string $summary + * @return Zend_Feed_Builder_Header_Itunes + */ + public function setSummary($summary) + { + $this->offsetSet('summary', $summary); + return $this; + } + + /** + * Prevent a feed from appearing + * + * @param string $block can be 'yes' or 'no' + * @return Zend_Feed_Builder_Header_Itunes + * @throws Zend_Feed_Builder_Exception + */ + public function setBlock($block) + { + $block = strtolower($block); + if (!in_array($block, array('yes', 'no'))) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set yes or no to the itunes block property"); + } + $this->offsetSet('block', $block); + return $this; + } + + /** + * Configuration of the parental advisory graphic + * + * @param string $explicit can be 'yes', 'no' or 'clean' + * @return Zend_Feed_Builder_Header_Itunes + * @throws Zend_Feed_Builder_Exception + */ + public function setExplicit($explicit) + { + $explicit = strtolower($explicit); + if (!in_array($explicit, array('yes', 'no', 'clean'))) { + /** + * @see Zend_Feed_Builder_Exception + */ + require_once 'Zend/Feed/Builder/Exception.php'; + throw new Zend_Feed_Builder_Exception("you have to set yes, no or clean to the itunes explicit property"); + } + $this->offsetSet('explicit', $explicit); + return $this; + } + + /** + * Sets a comma separated list of 12 keywords maximum + * + * @param string $keywords + * @return Zend_Feed_Builder_Header_Itunes + */ + public function setKeywords($keywords) + { + $this->offsetSet('keywords', $keywords); + return $this; + } + + /** + * Sets the new feed URL location + * + * @param string $url + * @return Zend_Feed_Builder_Header_Itunes + */ + public function setNewFeedUrl($url) + { + $this->offsetSet('new_feed_url', $url); + return $this; + } + + /** + * Read only properties accessor + * + * @param string $name property to read + * @return mixed + */ + public function __get($name) + { + if (!$this->offsetExists($name)) { + return NULL; + } + + return $this->offsetGet($name); + } + + /** + * Write properties accessor + * + * @param string $name name of the property to set + * @param mixed $value value to set + * @return void + */ + public function __set($name, $value) + { + $this->offsetSet($name, $value); + } + + /** + * Isset accessor + * + * @param string $key + * @return boolean + */ + public function __isset($key) + { + return $this->offsetExists($key); + } + + /** + * Unset accessor + * + * @param string $key + * @return void + */ + public function __unset($key) + { + if ($this->offsetExists($key)) { + $this->offsetUnset($key); + } + } + +} diff --git a/library/Zend/Feed/Builder/Interface.php b/library/Zend/Feed/Builder/Interface.php new file mode 100755 index 000000000..8e2615694 --- /dev/null +++ b/library/Zend/Feed/Builder/Interface.php @@ -0,0 +1,52 @@ +_element = $element; + } + + + /** + * Get a DOM representation of the element + * + * Returns the underlying DOM object, which can then be + * manipulated with full DOM methods. + * + * @return DOMDocument + */ + public function getDOM() + { + return $this->_element; + } + + + /** + * Update the object from a DOM element + * + * Take a DOMElement object, which may be originally from a call + * to getDOM() or may be custom created, and use it as the + * DOM tree for this Zend_Feed_Element. + * + * @param DOMElement $element + * @return void + */ + public function setDOM(DOMElement $element) + { + $this->_element = $this->_element->ownerDocument->importNode($element, true); + } + + /** + * Set the parent element of this object to another + * Zend_Feed_Element. + * + * @param Zend_Feed_Element $element + * @return void + */ + public function setParent(Zend_Feed_Element $element) + { + $this->_parentElement = $element; + $this->_appended = false; + } + + + /** + * Appends this element to its parent if necessary. + * + * @return void + */ + protected function ensureAppended() + { + if (!$this->_appended) { + $this->_parentElement->getDOM()->appendChild($this->_element); + $this->_appended = true; + $this->_parentElement->ensureAppended(); + } + } + + + /** + * Get an XML string representation of this element + * + * Returns a string of this element's XML, including the XML + * prologue. + * + * @return string + */ + public function saveXml() + { + // Return a complete document including XML prologue. + $doc = new DOMDocument($this->_element->ownerDocument->version, + $this->_element->ownerDocument->actualEncoding); + $doc->appendChild($doc->importNode($this->_element, true)); + return $doc->saveXML(); + } + + + /** + * Get the XML for only this element + * + * Returns a string of this element's XML without prologue. + * + * @return string + */ + public function saveXmlFragment() + { + return $this->_element->ownerDocument->saveXML($this->_element); + } + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set encoding + * + * @param string $value Encoding to use + * @return Zend_Feed_Element + */ + public function setEncoding($value) + { + $this->_encoding = (string) $value; + return $this; + } + + /** + * Map variable access onto the underlying entry representation. + * + * Get-style access returns a Zend_Feed_Element representing the + * child element accessed. To get string values, use method syntax + * with the __call() overriding. + * + * @param string $var The property to access. + * @return mixed + */ + public function __get($var) + { + $nodes = $this->_children($var); + $length = count($nodes); + + if ($length == 1) { + return new Zend_Feed_Element($nodes[0]); + } elseif ($length > 1) { + return array_map(create_function('$e', 'return new Zend_Feed_Element($e);'), $nodes); + } else { + // When creating anonymous nodes for __set chaining, don't + // call appendChild() on them. Instead we pass the current + // element to them as an extra reference; the child is + // then responsible for appending itself when it is + // actually set. This way "if ($foo->bar)" doesn't create + // a phantom "bar" element in our tree. + if (strpos($var, ':') !== false) { + list($ns, $elt) = explode(':', $var, 2); + $node = $this->_element->ownerDocument->createElementNS(Zend_Feed::lookupNamespace($ns), $elt); + } else { + $node = $this->_element->ownerDocument->createElement($var); + } + $node = new self($node); + $node->setParent($this); + return $node; + } + } + + + /** + * Map variable sets onto the underlying entry representation. + * + * @param string $var The property to change. + * @param string $val The property's new value. + * @return void + * @throws Zend_Feed_Exception + */ + public function __set($var, $val) + { + $this->ensureAppended(); + + $nodes = $this->_children($var); + if (!$nodes) { + if (strpos($var, ':') !== false) { + list($ns, $elt) = explode(':', $var, 2); + $node = $this->_element->ownerDocument->createElementNS(Zend_Feed::lookupNamespace($ns), + $var, htmlspecialchars($val, ENT_NOQUOTES, $this->getEncoding())); + $this->_element->appendChild($node); + } else { + $node = $this->_element->ownerDocument->createElement($var, + htmlspecialchars($val, ENT_NOQUOTES, $this->getEncoding())); + $this->_element->appendChild($node); + } + } elseif (count($nodes) > 1) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Cannot set the value of multiple tags simultaneously.'); + } else { + $nodes[0]->nodeValue = $val; + } + } + + + /** + * Map isset calls onto the underlying entry representation. + * + * @param string $var + * @return boolean + */ + public function __isset($var) + { + // Look for access of the form {ns:var}. We don't use + // _children() here because we can break out of the loop + // immediately once we find something. + if (strpos($var, ':') !== false) { + list($ns, $elt) = explode(':', $var, 2); + foreach ($this->_element->childNodes as $child) { + if ($child->localName == $elt && $child->prefix == $ns) { + return true; + } + } + } else { + foreach ($this->_element->childNodes as $child) { + if ($child->localName == $var) { + return true; + } + } + } + } + + + /** + * Get the value of an element with method syntax. + * + * Map method calls to get the string value of the requested + * element. If there are multiple elements that match, this will + * return an array of those objects. + * + * @param string $var The element to get the string value of. + * @param mixed $unused This parameter is not used. + * @return mixed The node's value, null, or an array of nodes. + */ + public function __call($var, $unused) + { + $nodes = $this->_children($var); + + if (!$nodes) { + return null; + } elseif (count($nodes) > 1) { + return $nodes; + } else { + return $nodes[0]->nodeValue; + } + } + + + /** + * Remove all children matching $var. + * + * @param string $var + * @return void + */ + public function __unset($var) + { + $nodes = $this->_children($var); + foreach ($nodes as $node) { + $parent = $node->parentNode; + $parent->removeChild($node); + } + } + + + /** + * Returns the nodeValue of this element when this object is used + * in a string context. + * + * @return string + */ + public function __toString() + { + return $this->_element->nodeValue; + } + + + /** + * Finds children with tagnames matching $var + * + * Similar to SimpleXML's children() method. + * + * @param string $var Tagname to match, can be either namespace:tagName or just tagName. + * @return array + */ + protected function _children($var) + { + $found = array(); + + // Look for access of the form {ns:var}. + if (strpos($var, ':') !== false) { + list($ns, $elt) = explode(':', $var, 2); + foreach ($this->_element->childNodes as $child) { + if ($child->localName == $elt && $child->prefix == $ns) { + $found[] = $child; + } + } + } else { + foreach ($this->_element->childNodes as $child) { + if ($child->localName == $var) { + $found[] = $child; + } + } + } + + return $found; + } + + + /** + * Required by the ArrayAccess interface. + * + * @param string $offset + * @return boolean + */ + public function offsetExists($offset) + { + if (strpos($offset, ':') !== false) { + list($ns, $attr) = explode(':', $offset, 2); + return $this->_element->hasAttributeNS(Zend_Feed::lookupNamespace($ns), $attr); + } else { + return $this->_element->hasAttribute($offset); + } + } + + + /** + * Required by the ArrayAccess interface. + * + * @param string $offset + * @return string + */ + public function offsetGet($offset) + { + if (strpos($offset, ':') !== false) { + list($ns, $attr) = explode(':', $offset, 2); + return $this->_element->getAttributeNS(Zend_Feed::lookupNamespace($ns), $attr); + } else { + return $this->_element->getAttribute($offset); + } + } + + + /** + * Required by the ArrayAccess interface. + * + * @param string $offset + * @param string $value + * @return string + */ + public function offsetSet($offset, $value) + { + $this->ensureAppended(); + + if (strpos($offset, ':') !== false) { + list($ns, $attr) = explode(':', $offset, 2); + // DOMElement::setAttributeNS() requires $qualifiedName to have a prefix + return $this->_element->setAttributeNS(Zend_Feed::lookupNamespace($ns), $offset, $value); + } else { + return $this->_element->setAttribute($offset, $value); + } + } + + + /** + * Required by the ArrayAccess interface. + * + * @param string $offset + * @return boolean + */ + public function offsetUnset($offset) + { + if (strpos($offset, ':') !== false) { + list($ns, $attr) = explode(':', $offset, 2); + return $this->_element->removeAttributeNS(Zend_Feed::lookupNamespace($ns), $attr); + } else { + return $this->_element->removeAttribute($offset); + } + } + +} diff --git a/library/Zend/Feed/Entry/Abstract.php b/library/Zend/Feed/Entry/Abstract.php new file mode 100755 index 000000000..4601805c0 --- /dev/null +++ b/library/Zend/Feed/Entry/Abstract.php @@ -0,0 +1,126 @@ +getElementsByTagName($this->_rootElement)->item(0); + if (!$element) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('No root <' . $this->_rootElement . '> element found, cannot parse feed.'); + } + } else { + $doc = new DOMDocument('1.0', 'utf-8'); + if ($this->_rootNamespace !== null) { + $element = $doc->createElementNS(Zend_Feed::lookupNamespace($this->_rootNamespace), $this->_rootElement); + } else { + $element = $doc->createElement($this->_rootElement); + } + } + } + + parent::__construct($element); + } + +} diff --git a/library/Zend/Feed/Entry/Atom.php b/library/Zend/Feed/Entry/Atom.php new file mode 100755 index 000000000..83fd8f1d0 --- /dev/null +++ b/library/Zend/Feed/Entry/Atom.php @@ -0,0 +1,282 @@ +link('edit'); + if (!$deleteUri) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Cannot delete entry; no link rel="edit" is present.'); + } + + // DELETE + $client = Zend_Feed::getHttpClient(); + do { + $client->setUri($deleteUri); + if (Zend_Feed::getHttpMethodOverride()) { + $client->setHeader('X-HTTP-Method-Override', 'DELETE'); + $response = $client->request('POST'); + } else { + $response = $client->request('DELETE'); + } + $httpStatus = $response->getStatus(); + switch ((int) $httpStatus / 100) { + // Success + case 2: + return true; + // Redirect + case 3: + $deleteUri = $response->getHeader('Location'); + continue; + // Error + default: + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("Expected response code 2xx, got $httpStatus"); + } + } while (true); + } + + + /** + * Save a new or updated Atom entry. + * + * Save is used to either create new entries or to save changes to + * existing ones. If we have a link rel="edit", we are changing + * an existing entry. In this case we re-serialize the entry and + * PUT it to the edit URI, checking for a 200 OK result. + * + * For posting new entries, you must specify the $postUri + * parameter to save() to tell the object where to post itself. + * We use $postUri and POST the serialized entry there, checking + * for a 201 Created response. If the insert is successful, we + * then parse the response from the POST to get any values that + * the server has generated: an id, an updated time, and its new + * link rel="edit". + * + * @param string $postUri Location to POST for creating new entries. + * @return void + * @throws Zend_Feed_Exception + */ + public function save($postUri = null) + { + if ($this->id()) { + // If id is set, look for link rel="edit" in the + // entry object and PUT. + $editUri = $this->link('edit'); + if (!$editUri) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Cannot edit entry; no link rel="edit" is present.'); + } + + $client = Zend_Feed::getHttpClient(); + $client->setUri($editUri); + if (Zend_Feed::getHttpMethodOverride()) { + $client->setHeaders(array('X-HTTP-Method-Override: PUT', + 'Content-Type: ' . self::CONTENT_TYPE)); + $client->setRawData($this->saveXML()); + $response = $client->request('POST'); + } else { + $client->setHeaders('Content-Type', self::CONTENT_TYPE); + $client->setRawData($this->saveXML()); + $response = $client->request('PUT'); + } + if ($response->getStatus() !== 200) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Expected response code 200, got ' . $response->getStatus()); + } + } else { + if ($postUri === null) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('PostURI must be specified to save new entries.'); + } + $client = Zend_Feed::getHttpClient(); + $client->setUri($postUri); + $client->setHeaders('Content-Type', self::CONTENT_TYPE); + $client->setRawData($this->saveXML()); + $response = $client->request('POST'); + + if ($response->getStatus() !== 201) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Expected response code 201, got ' + . $response->getStatus()); + } + } + + // Update internal properties using $client->responseBody; + @ini_set('track_errors', 1); + $newEntry = new DOMDocument; + $newEntry = @Zend_Xml_Security::scan($response->getBody(), $newEntry); + @ini_restore('track_errors'); + + if (!$newEntry) { + // prevent the class to generate an undefined variable notice (ZF-2590) + if (!isset($php_errormsg)) { + if (function_exists('xdebug_is_enabled')) { + $php_errormsg = '(error message not available, when XDebug is running)'; + } else { + $php_errormsg = '(error message not available)'; + } + } + + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('XML cannot be parsed: ' . $php_errormsg); + } + + $newEntry = $newEntry->getElementsByTagName($this->_rootElement)->item(0); + if (!$newEntry) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('No root element found in server response:' + . "\n\n" . $client->responseBody); + } + + if ($this->_element->parentNode) { + $oldElement = $this->_element; + $this->_element = $oldElement->ownerDocument->importNode($newEntry, true); + $oldElement->parentNode->replaceChild($this->_element, $oldElement); + } else { + $this->_element = $newEntry; + } + } + + + /** + * Easy access to tags keyed by "rel" attributes. + * + * If $elt->link() is called with no arguments, we will attempt to + * return the value of the tag(s) like all other + * method-syntax attribute access. If an argument is passed to + * link(), however, then we will return the "href" value of the + * first tag that has a "rel" attribute matching $rel: + * + * $elt->link(): returns the value of the link tag. + * $elt->link('self'): returns the href from the first in the entry. + * + * @param string $rel The "rel" attribute to look for. + * @return mixed + */ + public function link($rel = null) + { + if ($rel === null) { + return parent::__call('link', null); + } + + // index link tags by their "rel" attribute. + $links = parent::__get('link'); + if (!is_array($links)) { + if ($links instanceof Zend_Feed_Element) { + $links = array($links); + } else { + return $links; + } + } + + foreach ($links as $link) { + if (empty($link['rel'])) { + $link['rel'] = 'alternate'; // see Atom 1.0 spec + } + if ($rel == $link['rel']) { + return $link['href']; + } + } + + return null; + } + +} diff --git a/library/Zend/Feed/Entry/Rss.php b/library/Zend/Feed/Entry/Rss.php new file mode 100755 index 000000000..bc955eb4d --- /dev/null +++ b/library/Zend/Feed/Entry/Rss.php @@ -0,0 +1,122 @@ +_element->lookupPrefix('http://purl.org/rss/1.0/modules/content/'); + return parent::__get("$prefix:encoded"); + default: + return parent::__get($var); + } + } + + /** + * Overwrites parent::_set method to enable write access + * to content:encoded element. + * + * @param string $var The property to change. + * @param string $val The property's new value. + * @return void + */ + public function __set($var, $value) + { + switch ($var) { + case 'content': + parent::__set('content:encoded', $value); + break; + default: + parent::__set($var, $value); + } + } + + /** + * Overwrites parent::_isset method to enable access + * to content:encoded element. + * + * @param string $var + * @return boolean + */ + public function __isset($var) + { + switch ($var) { + case 'content': + // don't use other callback to prevent invalid returned value + return $this->content() !== null; + default: + return parent::__isset($var); + } + } + + /** + * Overwrites parent::_call method to enable read access + * to content:encoded element. + * Please note that method-style write access is not currently supported + * by parent method, consequently this method doesn't as well. + * + * @param string $var The element to get the string value of. + * @param mixed $unused This parameter is not used. + * @return mixed The node's value, null, or an array of nodes. + */ + public function __call($var, $unused) + { + switch ($var) { + case 'content': + $prefix = $this->_element->lookupPrefix('http://purl.org/rss/1.0/modules/content/'); + return parent::__call("$prefix:encoded", $unused); + default: + return parent::__call($var, $unused); + } + } +} diff --git a/library/Zend/Feed/Exception.php b/library/Zend/Feed/Exception.php new file mode 100755 index 000000000..473e4c833 --- /dev/null +++ b/library/Zend/Feed/Exception.php @@ -0,0 +1,42 @@ +getHubs(); + } + + /** + * Allows the external environment to make Zend_Oauth use a specific + * Client instance. + * + * @param Zend_Http_Client $httpClient + * @return void + */ + public static function setHttpClient(Zend_Http_Client $httpClient) + { + self::$httpClient = $httpClient; + } + + /** + * Return the singleton instance of the HTTP Client. Note that + * the instance is reset and cleared of previous parameters GET/POST. + * Headers are NOT reset but handled by this component if applicable. + * + * @return Zend_Http_Client + */ + public static function getHttpClient() + { + if (!isset(self::$httpClient)): + self::$httpClient = new Zend_Http_Client; + else: + self::$httpClient->resetParameters(); + endif; + return self::$httpClient; + } + + /** + * Simple mechanism to delete the entire singleton HTTP Client instance + * which forces an new instantiation for subsequent requests. + * + * @return void + */ + public static function clearHttpClient() + { + self::$httpClient = null; + } + + /** + * RFC 3986 safe url encoding method + * + * @param string $string + * @return string + */ + public static function urlencode($string) + { + $rawencoded = rawurlencode($string); + $rfcencoded = str_replace('%7E', '~', $rawencoded); + return $rfcencoded; + } +} diff --git a/library/Zend/Feed/Pubsubhubbub/CallbackAbstract.php b/library/Zend/Feed/Pubsubhubbub/CallbackAbstract.php new file mode 100755 index 000000000..0dc7262f0 --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/CallbackAbstract.php @@ -0,0 +1,315 @@ +setConfig($config); + } + } + + /** + * Process any injected configuration options + * + * @param array|Zend_Config $config Options array or Zend_Config instance + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_CallbackAbstract + */ + public function setConfig($config) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } elseif (!is_array($config)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Array or Zend_Config object' + . 'expected, got ' . gettype($config)); + } + if (array_key_exists('storage', $config)) { + $this->setStorage($config['storage']); + } + return $this; + } + + /** + * Send the response, including all headers. + * If you wish to handle this via Zend_Controller, use the getter methods + * to retrieve any data needed to be set on your HTTP Response object, or + * simply give this object the HTTP Response instance to work with for you! + * + * @return void + */ + public function sendResponse() + { + $this->getHttpResponse()->sendResponse(); + } + + /** + * Sets an instance of Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface used + * to background save any verification tokens associated with a subscription + * or other. + * + * @param Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface $storage + * @return Zend_Feed_Pubsubhubbub_CallbackAbstract + */ + public function setStorage(Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface $storage) + { + $this->_storage = $storage; + return $this; + } + + /** + * Gets an instance of Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface used + * to background save any verification tokens associated with a subscription + * or other. + * + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface + */ + public function getStorage() + { + if ($this->_storage === null) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('No storage object has been' + . ' set that subclasses Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface'); + } + return $this->_storage; + } + + /** + * An instance of a class handling Http Responses. This is implemented in + * Zend_Feed_Pubsubhubbub_HttpResponse which shares an unenforced interface with + * (i.e. not inherited from) Zend_Controller_Response_Http. + * + * @param Zend_Feed_Pubsubhubbub_HttpResponse|Zend_Controller_Response_Http $httpResponse + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_CallbackAbstract + */ + public function setHttpResponse($httpResponse) + { + if (!is_object($httpResponse) + || (!$httpResponse instanceof Zend_Feed_Pubsubhubbub_HttpResponse + && !$httpResponse instanceof Zend_Controller_Response_Http) + ) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('HTTP Response object must' + . ' implement one of Zend_Feed_Pubsubhubbub_HttpResponse or' + . ' Zend_Controller_Response_Http'); + } + $this->_httpResponse = $httpResponse; + return $this; + } + + /** + * An instance of a class handling Http Responses. This is implemented in + * Zend_Feed_Pubsubhubbub_HttpResponse which shares an unenforced interface with + * (i.e. not inherited from) Zend_Controller_Response_Http. + * + * @return Zend_Feed_Pubsubhubbub_HttpResponse|Zend_Controller_Response_Http + */ + public function getHttpResponse() + { + if ($this->_httpResponse === null) { + $this->_httpResponse = new Zend_Feed_Pubsubhubbub_HttpResponse; + } + return $this->_httpResponse; + } + + /** + * Sets the number of Subscribers for which any updates are on behalf of. + * In other words, is this class serving one or more subscribers? How many? + * Defaults to 1 if left unchanged. + * + * @param string|int $count + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_CallbackAbstract + */ + public function setSubscriberCount($count) + { + $count = intval($count); + if ($count <= 0) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Subscriber count must be' + . ' greater than zero'); + } + $this->_subscriberCount = $count; + return $this; + } + + /** + * Gets the number of Subscribers for which any updates are on behalf of. + * In other words, is this class serving one or more subscribers? How many? + * + * @return int + */ + public function getSubscriberCount() + { + return $this->_subscriberCount; + } + + /** + * Attempt to detect the callback URL (specifically the path forward) + */ + protected function _detectCallbackUrl() + { + $callbackUrl = ''; + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { + $callbackUrl = $_SERVER['HTTP_X_ORIGINAL_URL']; + } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) { + $callbackUrl = $_SERVER['HTTP_X_REWRITE_URL']; + } elseif (isset($_SERVER['REQUEST_URI'])) { + $callbackUrl = $_SERVER['REQUEST_URI']; + $scheme = 'http'; + if ($_SERVER['HTTPS'] == 'on') { + $scheme = 'https'; + } + $schemeAndHttpHost = $scheme . '://' . $this->_getHttpHost(); + if (strpos($callbackUrl, $schemeAndHttpHost) === 0) { + $callbackUrl = substr($callbackUrl, strlen($schemeAndHttpHost)); + } + } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { + $callbackUrl= $_SERVER['ORIG_PATH_INFO']; + if (!empty($_SERVER['QUERY_STRING'])) { + $callbackUrl .= '?' . $_SERVER['QUERY_STRING']; + } + } + return $callbackUrl; + } + + /** + * Get the HTTP host + * + * @return string + */ + protected function _getHttpHost() + { + if (!empty($_SERVER['HTTP_HOST'])) { + return $_SERVER['HTTP_HOST']; + } + $scheme = 'http'; + if ($_SERVER['HTTPS'] == 'on') { + $scheme = 'https'; + } + $name = $_SERVER['SERVER_NAME']; + $port = $_SERVER['SERVER_PORT']; + if (($scheme == 'http' && $port == 80) + || ($scheme == 'https' && $port == 443) + ) { + return $name; + } else { + return $name . ':' . $port; + } + } + + /** + * Retrieve a Header value from either $_SERVER or Apache + * + * @param string $header + * @return bool + */ + protected function _getHeader($header) + { + $temp = strtoupper(str_replace('-', '_', $header)); + if (!empty($_SERVER[$temp])) { + return $_SERVER[$temp]; + } + $temp = 'HTTP_' . strtoupper(str_replace('-', '_', $header)); + if (!empty($_SERVER[$temp])) { + return $_SERVER[$temp]; + } + if (function_exists('apache_request_headers')) { + $headers = apache_request_headers(); + if (!empty($headers[$header])) { + return $headers[$header]; + } + } + return false; + } + + /** + * Return the raw body of the request + * + * @return string|false Raw body, or false if not present + */ + protected function _getRawBody() + { + $body = file_get_contents('php://input'); + if (strlen(trim($body)) == 0 && isset($GLOBALS['HTTP_RAW_POST_DATA'])) { + $body = $GLOBALS['HTTP_RAW_POST_DATA']; + } + if (strlen(trim($body)) > 0) { + return $body; + } + return false; + } +} diff --git a/library/Zend/Feed/Pubsubhubbub/CallbackInterface.php b/library/Zend/Feed/Pubsubhubbub/CallbackInterface.php new file mode 100755 index 000000000..d655c1bb4 --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/CallbackInterface.php @@ -0,0 +1,69 @@ +sendHeaders(); + echo $this->getBody(); + } + + /** + * Send all headers + * + * Sends any headers specified. If an {@link setHttpResponseCode() HTTP response code} + * has been specified, it is sent with the first header. + * + * @return void + */ + public function sendHeaders() + { + if (count($this->_headers) || (200 != $this->_httpResponseCode)) { + $this->canSendHeaders(true); + } elseif (200 == $this->_httpResponseCode) { + return; + } + $httpCodeSent = false; + foreach ($this->_headers as $header) { + if (!$httpCodeSent && $this->_httpResponseCode) { + header($header['name'] . ': ' . $header['value'], $header['replace'], $this->_httpResponseCode); + $httpCodeSent = true; + } else { + header($header['name'] . ': ' . $header['value'], $header['replace']); + } + } + if (!$httpCodeSent) { + header('HTTP/1.1 ' . $this->_httpResponseCode); + $httpCodeSent = true; + } + } + + /** + * Set a header + * + * If $replace is true, replaces any headers already defined with that + * $name. + * + * @param string $name + * @param string $value + * @param boolean $replace + * @return Zend_Feed_Pubsubhubbub_HttpResponse + */ + public function setHeader($name, $value, $replace = false) + { + $name = $this->_normalizeHeader($name); + $value = (string) $value; + if ($replace) { + foreach ($this->_headers as $key => $header) { + if ($name == $header['name']) { + unset($this->_headers[$key]); + } + } + } + $this->_headers[] = array( + 'name' => $name, + 'value' => $value, + 'replace' => $replace, + ); + + return $this; + } + + /** + * Check if a specific Header is set and return its value + * + * @param string $name + * @return string|null + */ + public function getHeader($name) + { + $name = $this->_normalizeHeader($name); + foreach ($this->_headers as $header) { + if ($header['name'] == $name) { + return $header['value']; + } + } + } + + /** + * Return array of headers; see {@link $_headers} for format + * + * @return array + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Can we send headers? + * + * @param boolean $throw Whether or not to throw an exception if headers have been sent; defaults to false + * @return boolean + * @throws Zend_Feed_Pubsubhubbub_Exception + */ + public function canSendHeaders($throw = false) + { + $ok = headers_sent($file, $line); + if ($ok && $throw) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Cannot send headers; headers already sent in ' . $file . ', line ' . $line); + } + return !$ok; + } + + /** + * Set HTTP response code to use with headers + * + * @param int $code + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_HttpResponse + */ + public function setHttpResponseCode($code) + { + if (!is_int($code) || (100 > $code) || (599 < $code)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid HTTP response' + . ' code:' . $code); + } + $this->_httpResponseCode = $code; + return $this; + } + + /** + * Retrieve HTTP response code + * + * @return int + */ + public function getHttpResponseCode() + { + return $this->_httpResponseCode; + } + + /** + * Set body content + * + * @param string $content + * @return Zend_Feed_Pubsubhubbub_HttpResponse + */ + public function setBody($content) + { + $this->_body = (string) $content; + $this->setHeader('content-length', strlen($content)); + return $this; + } + + /** + * Return the body content + * + * @return string + */ + public function getBody() + { + return $this->_body; + } + + /** + * Normalizes a header name to X-Capitalized-Names + * + * @param string $name + * @return string + */ + protected function _normalizeHeader($name) + { + $filtered = str_replace(array('-', '_'), ' ', (string) $name); + $filtered = ucwords(strtolower($filtered)); + $filtered = str_replace(' ', '-', $filtered); + return $filtered; + } +} diff --git a/library/Zend/Feed/Pubsubhubbub/Model/ModelAbstract.php b/library/Zend/Feed/Pubsubhubbub/Model/ModelAbstract.php new file mode 100755 index 000000000..265ecc5ad --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/Model/ModelAbstract.php @@ -0,0 +1,63 @@ +_db = new Zend_Db_Table($table); + } else { + $this->_db = $tableGateway; + } + } + +} diff --git a/library/Zend/Feed/Pubsubhubbub/Model/Subscription.php b/library/Zend/Feed/Pubsubhubbub/Model/Subscription.php new file mode 100755 index 000000000..74c59798d --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/Model/Subscription.php @@ -0,0 +1,141 @@ +_db->find($data['id']); + if (count($result)) { + $data['created_time'] = $result->current()->created_time; + $now = new Zend_Date; + if (isset($data['lease_seconds'])) { + $data['expiration_time'] = $now->add($data['lease_seconds'], Zend_Date::SECOND) + ->get('yyyy-MM-dd HH:mm:ss'); + } + $this->_db->update( + $data, + $this->_db->getAdapter()->quoteInto('id = ?', $data['id']) + ); + return false; + } + + $this->_db->insert($data); + return true; + } + + /** + * Get subscription by ID/key + * + * @param string $key + * @throws Zend_Db_Table_Exception + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return array + */ + public function getSubscription($key) + { + if (empty($key) || !is_string($key)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "key"' + .' of "' . $key . '" must be a non-empty string'); + } + $result = $this->_db->find($key); + if (count($result)) { + return $result->current()->toArray(); + } + return false; + } + + /** + * Determine if a subscription matching the key exists + * + * @param string $key + * @throws Zend_Db_Table_Exception + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return bool + */ + public function hasSubscription($key) + { + if (empty($key) || !is_string($key)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "key"' + .' of "' . $key . '" must be a non-empty string'); + } + $result = $this->_db->find($key); + if (count($result)) { + return true; + } + return false; + } + + /** + * Delete a subscription + * + * @param string $key + * @return bool + */ + public function deleteSubscription($key) + { + $result = $this->_db->find($key); + if (count($result)) { + $this->_db->delete( + $this->_db->getAdapter()->quoteInto('id = ?', $key) + ); + return true; + } + return false; + } + +} diff --git a/library/Zend/Feed/Pubsubhubbub/Model/SubscriptionInterface.php b/library/Zend/Feed/Pubsubhubbub/Model/SubscriptionInterface.php new file mode 100755 index 000000000..c604ff1fc --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/Model/SubscriptionInterface.php @@ -0,0 +1,65 @@ +setConfig($config); + } + } + + /** + * Process any injected configuration options + * + * @param array|Zend_Config $config Options array or Zend_Config instance + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function setConfig($config) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } elseif (!is_array($config)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Array or Zend_Config object' + . 'expected, got ' . gettype($config)); + } + if (array_key_exists('hubUrls', $config)) { + $this->addHubUrls($config['hubUrls']); + } + if (array_key_exists('updatedTopicUrls', $config)) { + $this->addUpdatedTopicUrls($config['updatedTopicUrls']); + } + if (array_key_exists('parameters', $config)) { + $this->setParameters($config['parameters']); + } + return $this; + } + + /** + * Add a Hub Server URL supported by Publisher + * + * @param string $url + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function addHubUrl($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + .' of "' . $url . '" must be a non-empty string and a valid' + .'URL'); + } + $this->_hubUrls[] = $url; + return $this; + } + + /** + * Add an array of Hub Server URLs supported by Publisher + * + * @param array $urls + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function addHubUrls(array $urls) + { + foreach ($urls as $url) { + $this->addHubUrl($url); + } + return $this; + } + + /** + * Remove a Hub Server URL + * + * @param string $url + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function removeHubUrl($url) + { + if (!in_array($url, $this->getHubUrls())) { + return $this; + } + $key = array_search($url, $this->_hubUrls); + unset($this->_hubUrls[$key]); + return $this; + } + + /** + * Return an array of unique Hub Server URLs currently available + * + * @return array + */ + public function getHubUrls() + { + $this->_hubUrls = array_unique($this->_hubUrls); + return $this->_hubUrls; + } + + /** + * Add a URL to a topic (Atom or RSS feed) which has been updated + * + * @param string $url + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function addUpdatedTopicUrl($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + .' of "' . $url . '" must be a non-empty string and a valid' + .'URL'); + } + $this->_updatedTopicUrls[] = $url; + return $this; + } + + /** + * Add an array of Topic URLs which have been updated + * + * @param array $urls + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function addUpdatedTopicUrls(array $urls) + { + foreach ($urls as $url) { + $this->addUpdatedTopicUrl($url); + } + return $this; + } + + /** + * Remove an updated topic URL + * + * @param string $url + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function removeUpdatedTopicUrl($url) + { + if (!in_array($url, $this->getUpdatedTopicUrls())) { + return $this; + } + $key = array_search($url, $this->_updatedTopicUrls); + unset($this->_updatedTopicUrls[$key]); + return $this; + } + + /** + * Return an array of unique updated topic URLs currently available + * + * @return array + */ + public function getUpdatedTopicUrls() + { + $this->_updatedTopicUrls = array_unique($this->_updatedTopicUrls); + return $this->_updatedTopicUrls; + } + + /** + * Notifies a single Hub Server URL of changes + * + * @param string $url The Hub Server's URL + * @return void + * @throws Zend_Feed_Pubsubhubbub_Exception Thrown on failure + */ + public function notifyHub($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + .' of "' . $url . '" must be a non-empty string and a valid' + .'URL'); + } + $client = $this->_getHttpClient(); + $client->setUri($url); + $response = $client->request(); + if ($response->getStatus() !== 204) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Notification to Hub Server ' + . 'at "' . $url . '" appears to have failed with a status code of "' + . $response->getStatus() . '" and message "' + . $response->getMessage() . '"'); + } + } + + /** + * Notifies all Hub Server URLs of changes + * + * If a Hub notification fails, certain data will be retained in an + * an array retrieved using getErrors(), if a failure occurs for any Hubs + * the isSuccess() check will return FALSE. This method is designed not + * to needlessly fail with an Exception/Error unless from Zend_Http_Client. + * + * @return void + * @throws Zend_Feed_Pubsubhubbub_Exception Thrown if no hubs attached + */ + public function notifyAll() + { + $client = $this->_getHttpClient(); + $hubs = $this->getHubUrls(); + if (empty($hubs)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('No Hub Server URLs' + . ' have been set so no notifcations can be sent'); + } + $this->_errors = array(); + foreach ($hubs as $url) { + $client->setUri($url); + $response = $client->request(); + if ($response->getStatus() !== 204) { + $this->_errors[] = array( + 'response' => $response, + 'hubUrl' => $url + ); + } + } + } + + /** + * Add an optional parameter to the update notification requests + * + * @param string $name + * @param string|null $value + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function setParameter($name, $value = null) + { + if (is_array($name)) { + $this->setParameters($name); + return $this; + } + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "name"' + .' of "' . $name . '" must be a non-empty string'); + } + if ($value === null) { + $this->removeParameter($name); + return $this; + } + if (empty($value) || (!is_string($value) && $value !== null)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "value"' + .' of "' . $value . '" must be a non-empty string'); + } + $this->_parameters[$name] = $value; + return $this; + } + + /** + * Add an optional parameter to the update notification requests + * + * @param array $parameters + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function setParameters(array $parameters) + { + foreach ($parameters as $name => $value) { + $this->setParameter($name, $value); + } + return $this; + } + + /** + * Remove an optional parameter for the notification requests + * + * @param string $name + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Publisher + */ + public function removeParameter($name) + { + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "name"' + .' of "' . $name . '" must be a non-empty string'); + } + if (array_key_exists($name, $this->_parameters)) { + unset($this->_parameters[$name]); + } + return $this; + } + + /** + * Return an array of optional parameters for notification requests + * + * @return array + */ + public function getParameters() + { + return $this->_parameters; + } + + /** + * Returns a boolean indicator of whether the notifications to Hub + * Servers were ALL successful. If even one failed, FALSE is returned. + * + * @return bool + */ + public function isSuccess() + { + if (count($this->_errors) > 0) { + return false; + } + return true; + } + + /** + * Return an array of errors met from any failures, including keys: + * 'response' => the Zend_Http_Response object from the failure + * 'hubUrl' => the URL of the Hub Server whose notification failed + * + * @return array + */ + public function getErrors() + { + return $this->_errors; + } + + /** + * Get a basic prepared HTTP client for use + * + * @throws Zend_Feed_Pubsubhubbub_Exception + * @throws Zend_Http_Client_Exception + * @return Zend_Http_Client + */ + protected function _getHttpClient() + { + $client = Zend_Feed_Pubsubhubbub::getHttpClient(); + $client->setMethod(Zend_Http_Client::POST); + $client->setConfig(array( + 'useragent' => 'Zend_Feed_Pubsubhubbub_Publisher/' . Zend_Version::VERSION, + )); + $params = array(); + $params[] = 'hub.mode=publish'; + $topics = $this->getUpdatedTopicUrls(); + if (empty($topics)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('No updated topic URLs' + . ' have been set'); + } + foreach ($topics as $topicUrl) { + $params[] = 'hub.url=' . urlencode($topicUrl); + } + $optParams = $this->getParameters(); + foreach ($optParams as $name => $value) { + $params[] = urlencode($name) . '=' . urlencode($value); + } + $paramString = implode('&', $params); + $client->setRawData($paramString, 'application/x-www-form-urlencoded'); + return $client; + } +} diff --git a/library/Zend/Feed/Pubsubhubbub/Subscriber.php b/library/Zend/Feed/Pubsubhubbub/Subscriber.php new file mode 100755 index 000000000..da1f68883 --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/Subscriber.php @@ -0,0 +1,869 @@ +setConfig($config); + } + } + + /** + * Process any injected configuration options + * + * @param array|Zend_Config $config Options array or Zend_Config instance + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setConfig($config) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } elseif (!is_array($config)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Array or Zend_Config object' + . ' expected, got ' . gettype($config)); + } + if (array_key_exists('hubUrls', $config)) { + $this->addHubUrls($config['hubUrls']); + } + if (array_key_exists('callbackUrl', $config)) { + $this->setCallbackUrl($config['callbackUrl']); + } + if (array_key_exists('topicUrl', $config)) { + $this->setTopicUrl($config['topicUrl']); + } + if (array_key_exists('storage', $config)) { + $this->setStorage($config['storage']); + } + if (array_key_exists('leaseSeconds', $config)) { + $this->setLeaseSeconds($config['leaseSeconds']); + } + if (array_key_exists('parameters', $config)) { + $this->setParameters($config['parameters']); + } + if (array_key_exists('authentications', $config)) { + $this->addAuthentications($config['authentications']); + } + if (array_key_exists('usePathParameter', $config)) { + $this->usePathParameter($config['usePathParameter']); + } + if (array_key_exists('preferredVerificationMode', $config)) { + $this->setPreferredVerificationMode( + $config['preferredVerificationMode'] + ); + } + return $this; + } + + /** + * Set the topic URL (RSS or Atom feed) to which the intended (un)subscribe + * event will relate + * + * @param string $url + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setTopicUrl($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + .' of "' . $url . '" must be a non-empty string and a valid' + .' URL'); + } + $this->_topicUrl = $url; + return $this; + } + + /** + * Set the topic URL (RSS or Atom feed) to which the intended (un)subscribe + * event will relate + * + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return string + */ + public function getTopicUrl() + { + if (empty($this->_topicUrl)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('A valid Topic (RSS or Atom' + . ' feed) URL MUST be set before attempting any operation'); + } + return $this->_topicUrl; + } + + /** + * Set the number of seconds for which any subscription will remain valid + * + * @param int $seconds + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setLeaseSeconds($seconds) + { + $seconds = intval($seconds); + if ($seconds <= 0) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Expected lease seconds' + . ' must be an integer greater than zero'); + } + $this->_leaseSeconds = $seconds; + return $this; + } + + /** + * Get the number of lease seconds on subscriptions + * + * @return int + */ + public function getLeaseSeconds() + { + return $this->_leaseSeconds; + } + + /** + * Set the callback URL to be used by Hub Servers when communicating with + * this Subscriber + * + * @param string $url + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setCallbackUrl($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + . ' of "' . $url . '" must be a non-empty string and a valid' + . ' URL'); + } + $this->_callbackUrl = $url; + return $this; + } + + /** + * Get the callback URL to be used by Hub Servers when communicating with + * this Subscriber + * + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return string + */ + public function getCallbackUrl() + { + if (empty($this->_callbackUrl)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('A valid Callback URL MUST be' + . ' set before attempting any operation'); + } + return $this->_callbackUrl; + } + + /** + * Set preferred verification mode (sync or async). By default, this + * Subscriber prefers synchronous verification, but does support + * asynchronous if that's the Hub Server's utilised mode. + * + * Zend_Feed_Pubsubhubbub_Subscriber will always send both modes, whose + * order of occurance in the parameter list determines this preference. + * + * @param string $mode Should be 'sync' or 'async' + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setPreferredVerificationMode($mode) + { + if ($mode !== Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_SYNC + && $mode !== Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_ASYNC) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid preferred' + . ' mode specified: "' . $mode . '" but should be one of' + . ' Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_SYNC or' + . ' Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_ASYNC'); + } + $this->_preferredVerificationMode = $mode; + return $this; + } + + /** + * Get preferred verification mode (sync or async). + * + * @return string + */ + public function getPreferredVerificationMode() + { + return $this->_preferredVerificationMode; + } + + /** + * Add a Hub Server URL supported by Publisher + * + * @param string $url + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function addHubUrl($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + . ' of "' . $url . '" must be a non-empty string and a valid' + . ' URL'); + } + $this->_hubUrls[] = $url; + return $this; + } + + /** + * Add an array of Hub Server URLs supported by Publisher + * + * @param array $urls + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function addHubUrls(array $urls) + { + foreach ($urls as $url) { + $this->addHubUrl($url); + } + return $this; + } + + /** + * Remove a Hub Server URL + * + * @param string $url + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function removeHubUrl($url) + { + if (!in_array($url, $this->getHubUrls())) { + return $this; + } + $key = array_search($url, $this->_hubUrls); + unset($this->_hubUrls[$key]); + return $this; + } + + /** + * Return an array of unique Hub Server URLs currently available + * + * @return array + */ + public function getHubUrls() + { + $this->_hubUrls = array_unique($this->_hubUrls); + return $this->_hubUrls; + } + + /** + * Add authentication credentials for a given URL + * + * @param string $url + * @param array $authentication + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function addAuthentication($url, array $authentication) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "url"' + . ' of "' . $url . '" must be a non-empty string and a valid' + . ' URL'); + } + $this->_authentications[$url] = $authentication; + return $this; + } + + /** + * Add authentication credentials for hub URLs + * + * @param array $authentications + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function addAuthentications(array $authentications) + { + foreach ($authentications as $url => $authentication) { + $this->addAuthentication($url, $authentication); + } + return $this; + } + + /** + * Get all hub URL authentication credentials + * + * @return array + */ + public function getAuthentications() + { + return $this->_authentications; + } + + /** + * Set flag indicating whether or not to use a path parameter + * + * @param bool $bool + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function usePathParameter($bool = true) + { + $this->_usePathParameter = $bool; + return $this; + } + + /** + * Add an optional parameter to the (un)subscribe requests + * + * @param string $name + * @param string|null $value + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setParameter($name, $value = null) + { + if (is_array($name)) { + $this->setParameters($name); + return $this; + } + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "name"' + . ' of "' . $name . '" must be a non-empty string'); + } + if ($value === null) { + $this->removeParameter($name); + return $this; + } + if (empty($value) || (!is_string($value) && $value !== null)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "value"' + . ' of "' . $value . '" must be a non-empty string'); + } + $this->_parameters[$name] = $value; + return $this; + } + + /** + * Add an optional parameter to the (un)subscribe requests + * + * @param array $parameters + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setParameters(array $parameters) + { + foreach ($parameters as $name => $value) { + $this->setParameter($name, $value); + } + return $this; + } + + /** + * Remove an optional parameter for the (un)subscribe requests + * + * @param string $name + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function removeParameter($name) + { + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid parameter "name"' + . ' of "' . $name . '" must be a non-empty string'); + } + if (array_key_exists($name, $this->_parameters)) { + unset($this->_parameters[$name]); + } + return $this; + } + + /** + * Return an array of optional parameters for (un)subscribe requests + * + * @return array + */ + public function getParameters() + { + return $this->_parameters; + } + + /** + * Sets an instance of Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface used to background + * save any verification tokens associated with a subscription or other. + * + * @param Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface $storage + * @return Zend_Feed_Pubsubhubbub_Subscriber + */ + public function setStorage(Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface $storage) + { + $this->_storage = $storage; + return $this; + } + + /** + * Gets an instance of Zend_Feed_Pubsubhubbub_Storage_StorageInterface used + * to background save any verification tokens associated with a subscription + * or other. + * + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return Zend_Feed_Pubsubhubbub_Model_SubscriptionInterface + */ + public function getStorage() + { + if ($this->_storage === null) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('No storage vehicle ' + . 'has been set.'); + } + return $this->_storage; + } + + /** + * Subscribe to one or more Hub Servers using the stored Hub URLs + * for the given Topic URL (RSS or Atom feed) + */ + public function subscribeAll() + { + return $this->_doRequest('subscribe'); + } + + /** + * Unsubscribe from one or more Hub Servers using the stored Hub URLs + * for the given Topic URL (RSS or Atom feed) + */ + public function unsubscribeAll() + { + return $this->_doRequest('unsubscribe'); + } + + /** + * Returns a boolean indicator of whether the notifications to Hub + * Servers were ALL successful. If even one failed, FALSE is returned. + * + * @return bool + */ + public function isSuccess() + { + if (count($this->_errors) > 0) { + return false; + } + return true; + } + + /** + * Return an array of errors met from any failures, including keys: + * 'response' => the Zend_Http_Response object from the failure + * 'hubUrl' => the URL of the Hub Server whose notification failed + * + * @return array + */ + public function getErrors() + { + return $this->_errors; + } + + /** + * Return an array of Hub Server URLs who returned a response indicating + * operation in Asynchronous Verification Mode, i.e. they will not confirm + * any (un)subscription immediately but at a later time (Hubs may be + * doing this as a batch process when load balancing) + * + * @return array + */ + public function getAsyncHubs() + { + return $this->_asyncHubs; + } + + /** + * Executes an (un)subscribe request + * + * @param string $mode + * @throws Zend_Feed_Pubsubhubbub_Exception + * @throws Zend_Http_Client_Exception + */ + protected function _doRequest($mode) + { + $client = $this->_getHttpClient(); + $hubs = $this->getHubUrls(); + if (empty($hubs)) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('No Hub Server URLs' + . ' have been set so no subscriptions can be attempted'); + } + $this->_errors = array(); + $this->_asyncHubs = array(); + foreach ($hubs as $url) { + if (array_key_exists($url, $this->_authentications)) { + $auth = $this->_authentications[$url]; + $client->setAuth($auth[0], $auth[1]); + } + $client->setUri($url); + $client->setRawData( + $this->_getRequestParameters($url, $mode), + 'application/x-www-form-urlencoded' + ); + $response = $client->request(); + if ($response->getStatus() !== 204 + && $response->getStatus() !== 202 + ) { + $this->_errors[] = array( + 'response' => $response, + 'hubUrl' => $url, + ); + /** + * At first I thought it was needed, but the backend storage will + * allow tracking async without any user interference. It's left + * here in case the user is interested in knowing what Hubs + * are using async verification modes so they may update Models and + * move these to asynchronous processes. + */ + } elseif ($response->getStatus() == 202) { + $this->_asyncHubs[] = array( + 'response' => $response, + 'hubUrl' => $url, + ); + } + } + } + + /** + * Get a basic prepared HTTP client for use + * + * @return Zend_Http_Client + */ + protected function _getHttpClient() + { + $client = Zend_Feed_Pubsubhubbub::getHttpClient(); + $client->setMethod(Zend_Http_Client::POST); + $client->setConfig(array('useragent' => 'Zend_Feed_Pubsubhubbub_Subscriber/' + . Zend_Version::VERSION)); + return $client; + } + + /** + * Return a list of standard protocol/optional parameters for addition to + * client's POST body that are specific to the current Hub Server URL + * + * @param string $hubUrl + * @param string $mode + * @throws Zend_Feed_Pubsubhubbub_Exception + * @return string + */ + protected function _getRequestParameters($hubUrl, $mode) + { + if (!in_array($mode, array('subscribe', 'unsubscribe'))) { + require_once 'Zend/Feed/Pubsubhubbub/Exception.php'; + throw new Zend_Feed_Pubsubhubbub_Exception('Invalid mode specified: "' + . $mode . '" which should have been "subscribe" or "unsubscribe"'); + } + + $params = array( + 'hub.mode' => $mode, + 'hub.topic' => $this->getTopicUrl(), + ); + + if ($this->getPreferredVerificationMode() + == Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_SYNC + ) { + $vmodes = array( + Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_SYNC, + Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_ASYNC, + ); + } else { + $vmodes = array( + Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_ASYNC, + Zend_Feed_Pubsubhubbub::VERIFICATION_MODE_SYNC, + ); + } + $params['hub.verify'] = array(); + foreach($vmodes as $vmode) { + $params['hub.verify'][] = $vmode; + } + + /** + * Establish a persistent verify_token and attach key to callback + * URL's path/querystring + */ + $key = $this->_generateSubscriptionKey($params, $hubUrl); + $token = $this->_generateVerifyToken(); + $params['hub.verify_token'] = $token; + + // Note: query string only usable with PuSH 0.2 Hubs + if (!$this->_usePathParameter) { + $params['hub.callback'] = $this->getCallbackUrl() + . '?xhub.subscription=' . Zend_Feed_Pubsubhubbub::urlencode($key); + } else { + $params['hub.callback'] = rtrim($this->getCallbackUrl(), '/') + . '/' . Zend_Feed_Pubsubhubbub::urlencode($key); + } + if ($mode == 'subscribe' && $this->getLeaseSeconds() !== null) { + $params['hub.lease_seconds'] = $this->getLeaseSeconds(); + } + + // hub.secret not currently supported + $optParams = $this->getParameters(); + foreach ($optParams as $name => $value) { + $params[$name] = $value; + } + + // store subscription to storage + $now = new Zend_Date; + $expires = null; + if (isset($params['hub.lease_seconds'])) { + $expires = $now->add($params['hub.lease_seconds'], Zend_Date::SECOND) + ->get('yyyy-MM-dd HH:mm:ss'); + } + $data = array( + 'id' => $key, + 'topic_url' => $params['hub.topic'], + 'hub_url' => $hubUrl, + 'created_time' => $now->get('yyyy-MM-dd HH:mm:ss'), + 'lease_seconds' => $expires, + 'verify_token' => hash('sha256', $params['hub.verify_token']), + 'secret' => null, + 'expiration_time' => $expires, + 'subscription_state' => Zend_Feed_Pubsubhubbub::SUBSCRIPTION_NOTVERIFIED, + ); + $this->getStorage()->setSubscription($data); + + return $this->_toByteValueOrderedString( + $this->_urlEncode($params) + ); + } + + /** + * Simple helper to generate a verification token used in (un)subscribe + * requests to a Hub Server. Follows no particular method, which means + * it might be improved/changed in future. + * + * @return string + */ + protected function _generateVerifyToken() + { + if (!empty($this->_testStaticToken)) { + return $this->_testStaticToken; + } + return uniqid(rand(), true) . time(); + } + + /** + * Simple helper to generate a verification token used in (un)subscribe + * requests to a Hub Server. + * + * @param array $params + * @param string $hubUrl The Hub Server URL for which this token will apply + * @return string + */ + protected function _generateSubscriptionKey(array $params, $hubUrl) + { + $keyBase = $params['hub.topic'] . $hubUrl; + $key = md5($keyBase); + return $key; + } + + /** + * URL Encode an array of parameters + * + * @param array $params + * @return array + */ + protected function _urlEncode(array $params) + { + $encoded = array(); + foreach ($params as $key => $value) { + if (is_array($value)) { + $ekey = Zend_Feed_Pubsubhubbub::urlencode($key); + $encoded[$ekey] = array(); + foreach ($value as $duplicateKey) { + $encoded[$ekey][] + = Zend_Feed_Pubsubhubbub::urlencode($duplicateKey); + } + } else { + $encoded[Zend_Feed_Pubsubhubbub::urlencode($key)] + = Zend_Feed_Pubsubhubbub::urlencode($value); + } + } + return $encoded; + } + + /** + * Order outgoing parameters + * + * @param array $params + * @return array + */ + protected function _toByteValueOrderedString(array $params) + { + $return = array(); + uksort($params, 'strnatcmp'); + foreach ($params as $key => $value) { + if (is_array($value)) { + foreach ($value as $keyduplicate) { + $return[] = $key . '=' . $keyduplicate; + } + } else { + $return[] = $key . '=' . $value; + } + } + return implode('&', $return); + } + + /** + * This is STRICTLY for testing purposes only... + */ + protected $_testStaticToken = null; + + final public function setTestStaticToken($token) + { + $this->_testStaticToken = (string) $token; + } +} diff --git a/library/Zend/Feed/Pubsubhubbub/Subscriber/Callback.php b/library/Zend/Feed/Pubsubhubbub/Subscriber/Callback.php new file mode 100755 index 000000000..42c0559f8 --- /dev/null +++ b/library/Zend/Feed/Pubsubhubbub/Subscriber/Callback.php @@ -0,0 +1,330 @@ +_subscriptionKey = $key; + return $this; + } + + /** + * Handle any callback from a Hub Server responding to a subscription or + * unsubscription request. This should be the Hub Server confirming the + * the request prior to taking action on it. + * + * @param array $httpGetData GET data if available and not in $_GET + * @param bool $sendResponseNow Whether to send response now or when asked + * @return void + */ + public function handle(array $httpGetData = null, $sendResponseNow = false) + { + if ($httpGetData === null) { + $httpGetData = $_GET; + } + + /** + * Handle any feed updates (sorry for the mess :P) + * + * This DOES NOT attempt to process a feed update. Feed updates + * SHOULD be validated/processed by an asynchronous process so as + * to avoid holding up responses to the Hub. + */ + $contentType = $this->_getHeader('Content-Type'); + if (strtolower($_SERVER['REQUEST_METHOD']) == 'post' + && $this->_hasValidVerifyToken(null, false) + && (stripos($contentType, 'application/atom+xml') === 0 + || stripos($contentType, 'application/rss+xml') === 0 + || stripos($contentType, 'application/xml') === 0 + || stripos($contentType, 'text/xml') === 0 + || stripos($contentType, 'application/rdf+xml') === 0) + ) { + $this->setFeedUpdate($this->_getRawBody()); + $this->getHttpResponse() + ->setHeader('X-Hub-On-Behalf-Of', $this->getSubscriberCount()); + /** + * Handle any (un)subscribe confirmation requests + */ + } elseif ($this->isValidHubVerification($httpGetData)) { + $data = $this->_currentSubscriptionData; + $this->getHttpResponse()->setBody($httpGetData['hub_challenge']); + $data['subscription_state'] = Zend_Feed_Pubsubhubbub::SUBSCRIPTION_VERIFIED; + if (isset($httpGetData['hub_lease_seconds'])) { + $data['lease_seconds'] = $httpGetData['hub_lease_seconds']; + } + $this->getStorage()->setSubscription($data); + /** + * Hey, C'mon! We tried everything else! + */ + } else { + $this->getHttpResponse()->setHttpResponseCode(404); + } + if ($sendResponseNow) { + $this->sendResponse(); + } + } + + /** + * Checks validity of the request simply by making a quick pass and + * confirming the presence of all REQUIRED parameters. + * + * @param array $httpGetData + * @return bool + */ + public function isValidHubVerification(array $httpGetData) + { + /** + * As per the specification, the hub.verify_token is OPTIONAL. This + * implementation of Pubsubhubbub considers it REQUIRED and will + * always send a hub.verify_token parameter to be echoed back + * by the Hub Server. Therefore, its absence is considered invalid. + */ + if (strtolower($_SERVER['REQUEST_METHOD']) !== 'get') { + return false; + } + $required = array( + 'hub_mode', + 'hub_topic', + 'hub_challenge', + 'hub_verify_token', + ); + foreach ($required as $key) { + if (!array_key_exists($key, $httpGetData)) { + return false; + } + } + if ($httpGetData['hub_mode'] !== 'subscribe' + && $httpGetData['hub_mode'] !== 'unsubscribe' + ) { + return false; + } + if ($httpGetData['hub_mode'] == 'subscribe' + && !array_key_exists('hub_lease_seconds', $httpGetData) + ) { + return false; + } + if (!Zend_Uri::check($httpGetData['hub_topic'])) { + return false; + } + + /** + * Attempt to retrieve any Verification Token Key attached to Callback + * URL's path by our Subscriber implementation + */ + if (!$this->_hasValidVerifyToken($httpGetData)) { + return false; + } + return true; + } + + /** + * Sets a newly received feed (Atom/RSS) sent by a Hub as an update to a + * Topic we've subscribed to. + * + * @param string $feed + * @return Zend_Feed_Pubsubhubbub_Subscriber_Callback + */ + public function setFeedUpdate($feed) + { + $this->_feedUpdate = $feed; + return $this; + } + + /** + * Check if any newly received feed (Atom/RSS) update was received + * + * @return bool + */ + public function hasFeedUpdate() + { + if ($this->_feedUpdate === null) { + return false; + } + return true; + } + + /** + * Gets a newly received feed (Atom/RSS) sent by a Hub as an update to a + * Topic we've subscribed to. + * + * @return string + */ + public function getFeedUpdate() + { + return $this->_feedUpdate; + } + + /** + * Check for a valid verify_token. By default attempts to compare values + * with that sent from Hub, otherwise merely ascertains its existence. + * + * @param array $httpGetData + * @param bool $checkValue + * @return bool + */ + protected function _hasValidVerifyToken(array $httpGetData = null, $checkValue = true) + { + $verifyTokenKey = $this->_detectVerifyTokenKey($httpGetData); + if (empty($verifyTokenKey)) { + return false; + } + $verifyTokenExists = $this->getStorage()->hasSubscription($verifyTokenKey); + if (!$verifyTokenExists) { + return false; + } + if ($checkValue) { + $data = $this->getStorage()->getSubscription($verifyTokenKey); + $verifyToken = $data['verify_token']; + if ($verifyToken !== hash('sha256', $httpGetData['hub_verify_token'])) { + return false; + } + $this->_currentSubscriptionData = $data; + return true; + } + return true; + } + + /** + * Attempt to detect the verification token key. This would be passed in + * the Callback URL (which we are handling with this class!) as a URI + * path part (the last part by convention). + * + * @param null|array $httpGetData + * @return false|string + */ + protected function _detectVerifyTokenKey(array $httpGetData = null) + { + /** + * Available when sub keys encoding in Callback URL path + */ + if (isset($this->_subscriptionKey)) { + return $this->_subscriptionKey; + } + + /** + * Available only if allowed by PuSH 0.2 Hubs + */ + if (is_array($httpGetData) + && isset($httpGetData['xhub_subscription']) + ) { + return $httpGetData['xhub_subscription']; + } + + /** + * Available (possibly) if corrupted in transit and not part of $_GET + */ + $params = $this->_parseQueryString(); + if (isset($params['xhub.subscription'])) { + return rawurldecode($params['xhub.subscription']); + } + + return false; + } + + /** + * Build an array of Query String parameters. + * This bypasses $_GET which munges parameter names and cannot accept + * multiple parameters with the same key. + * + * @return array|void + */ + protected function _parseQueryString() + { + $params = array(); + $queryString = ''; + if (isset($_SERVER['QUERY_STRING'])) { + $queryString = $_SERVER['QUERY_STRING']; + } + if (empty($queryString)) { + return array(); + } + $parts = explode('&', $queryString); + foreach ($parts as $kvpair) { + $pair = explode('=', $kvpair); + $key = rawurldecode($pair[0]); + $value = rawurldecode($pair[1]); + if (isset($params[$key])) { + if (is_array($params[$key])) { + $params[$key][] = $value; + } else { + $params[$key] = array($params[$key], $value); + } + } else { + $params[$key] = $value; + } + } + return $params; + } +} diff --git a/library/Zend/Feed/Reader.php b/library/Zend/Feed/Reader.php new file mode 100755 index 000000000..92edc9a78 --- /dev/null +++ b/library/Zend/Feed/Reader.php @@ -0,0 +1,757 @@ + array( + 'DublinCore_Feed', + 'Atom_Feed' + ), + 'entry' => array( + 'Content_Entry', + 'DublinCore_Entry', + 'Atom_Entry' + ), + 'core' => array( + 'DublinCore_Feed', + 'Atom_Feed', + 'Content_Entry', + 'DublinCore_Entry', + 'Atom_Entry' + ) + ); + + /** + * Get the Feed cache + * + * @return Zend_Cache_Core + */ + public static function getCache() + { + return self::$_cache; + } + + /** + * Set the feed cache + * + * @param Zend_Cache_Core $cache + * @return void + */ + public static function setCache(Zend_Cache_Core $cache) + { + self::$_cache = $cache; + } + + /** + * Set the HTTP client instance + * + * Sets the HTTP client object to use for retrieving the feeds. + * + * @param Zend_Http_Client $httpClient + * @return void + */ + public static function setHttpClient(Zend_Http_Client $httpClient) + { + self::$_httpClient = $httpClient; + } + + + /** + * Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used. + * + * @return Zend_Http_Client_Abstract + */ + public static function getHttpClient() + { + if (!self::$_httpClient instanceof Zend_Http_Client) { + /** + * @see Zend_Http_Client + */ + require_once 'Zend/Http/Client.php'; + self::$_httpClient = new Zend_Http_Client(); + } + + return self::$_httpClient; + } + + /** + * Toggle using POST instead of PUT and DELETE HTTP methods + * + * Some feed implementations do not accept PUT and DELETE HTTP + * methods, or they can't be used because of proxies or other + * measures. This allows turning on using POST where PUT and + * DELETE would normally be used; in addition, an + * X-Method-Override header will be sent with a value of PUT or + * DELETE as appropriate. + * + * @param boolean $override Whether to override PUT and DELETE. + * @return void + */ + public static function setHttpMethodOverride($override = true) + { + self::$_httpMethodOverride = $override; + } + + /** + * Get the HTTP override state + * + * @return boolean + */ + public static function getHttpMethodOverride() + { + return self::$_httpMethodOverride; + } + + /** + * Set the flag indicating whether or not to use HTTP conditional GET + * + * @param bool $bool + * @return void + */ + public static function useHttpConditionalGet($bool = true) + { + self::$_httpConditionalGet = $bool; + } + + /** + * Import a feed by providing a URL + * + * @param string $url The URL to the feed + * @param string $etag OPTIONAL Last received ETag for this resource + * @param string $lastModified OPTIONAL Last-Modified value for this resource + * @return Zend_Feed_Reader_FeedInterface + */ + public static function import($uri, $etag = null, $lastModified = null) + { + $cache = self::getCache(); + $feed = null; + $responseXml = ''; + $client = self::getHttpClient(); + $client->resetParameters(); + $client->setHeaders('If-None-Match', null); + $client->setHeaders('If-Modified-Since', null); + $client->setUri($uri); + $cacheId = 'Zend_Feed_Reader_' . md5($uri); + + if (self::$_httpConditionalGet && $cache) { + $data = $cache->load($cacheId); + if ($data) { + if ($etag === null) { + $etag = $cache->load($cacheId.'_etag'); + } + if ($lastModified === null) { + $lastModified = $cache->load($cacheId.'_lastmodified'); + } + if ($etag) { + $client->setHeaders('If-None-Match', $etag); + } + if ($lastModified) { + $client->setHeaders('If-Modified-Since', $lastModified); + } + } + $response = $client->request('GET'); + if ($response->getStatus() !== 200 && $response->getStatus() !== 304) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus()); + } + if ($response->getStatus() == 304) { + $responseXml = $data; + } else { + $responseXml = $response->getBody(); + $cache->save($responseXml, $cacheId); + if ($response->getHeader('ETag')) { + $cache->save($response->getHeader('ETag'), $cacheId.'_etag'); + } + if ($response->getHeader('Last-Modified')) { + $cache->save($response->getHeader('Last-Modified'), $cacheId.'_lastmodified'); + } + } + if (empty($responseXml)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got empty response body'); + } + return self::importString($responseXml); + } elseif ($cache) { + $data = $cache->load($cacheId); + if ($data !== false) { + return self::importString($data); + } + $response = $client->request('GET'); + if ($response->getStatus() !== 200) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus()); + } + $responseXml = $response->getBody(); + $cache->save($responseXml, $cacheId); + if (empty($responseXml)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got empty response body'); + } + return self::importString($responseXml); + } else { + $response = $client->request('GET'); + if ($response->getStatus() !== 200) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got response code ' . $response->getStatus()); + } + $responseXml = $response->getBody(); + if (empty($responseXml)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Feed failed to load, got empty response body'); + } + $reader = self::importString($responseXml); + $reader->setOriginalSourceUri($uri); + return $reader; + } + } + + /** + * Import a feed by providing a Zend_Feed_Abstract object + * + * @param Zend_Feed_Abstract $feed A fully instantiated Zend_Feed object + * @return Zend_Feed_Reader_FeedInterface + */ + public static function importFeed(Zend_Feed_Abstract $feed) + { + $dom = $feed->getDOM()->ownerDocument; + $type = self::detectType($dom); + self::_registerCoreExtensions(); + if (substr($type, 0, 3) == 'rss') { + $reader = new Zend_Feed_Reader_Feed_Rss($dom, $type); + } else { + $reader = new Zend_Feed_Reader_Feed_Atom($dom, $type); + } + + return $reader; + } + + /** + * Import a feed from a string + * + * @param string $string + * @return Zend_Feed_Reader_FeedInterface + */ + public static function importString($string) + { + $dom = new DOMDocument; + try { + $dom = Zend_Xml_Security::scan($string, $dom); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception( + $e->getMessage() + ); + } + if (!$dom) { + // Build error message + $error = libxml_get_last_error(); + if ($error && $error->message) { + $errormsg = "DOMDocument cannot parse XML: {$error->message}"; + } else { + $errormsg = "DOMDocument cannot parse XML: Please check the XML document's validity"; + } + + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception($errormsg); + } + + $type = self::detectType($dom); + + self::_registerCoreExtensions(); + + if (substr($type, 0, 3) == 'rss') { + $reader = new Zend_Feed_Reader_Feed_Rss($dom, $type); + } elseif (substr($type, 8, 5) == 'entry') { + $reader = new Zend_Feed_Reader_Entry_Atom($dom->documentElement, 0, Zend_Feed_Reader::TYPE_ATOM_10); + } elseif (substr($type, 0, 4) == 'atom') { + $reader = new Zend_Feed_Reader_Feed_Atom($dom, $type); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('The URI used does not point to a ' + . 'valid Atom, RSS or RDF feed that Zend_Feed_Reader can parse.'); + } + return $reader; + } + + /** + * Imports a feed from a file located at $filename. + * + * @param string $filename + * @throws Zend_Feed_Exception + * @return Zend_Feed_Reader_FeedInterface + */ + public static function importFile($filename) + { + @ini_set('track_errors', 1); + $feed = @file_get_contents($filename); + @ini_restore('track_errors'); + if ($feed === false) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("File could not be loaded: $php_errormsg"); + } + return self::importString($feed); + } + + public static function findFeedLinks($uri) + { + // Get the HTTP response from $uri and save the contents + $client = self::getHttpClient(); + $client->setUri($uri); + $response = $client->request(); + if ($response->getStatus() !== 200) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("Failed to access $uri, got response code " . $response->getStatus()); + } + $responseHtml = $response->getBody(); + $libxml_errflag = libxml_use_internal_errors(true); + $oldValue = libxml_disable_entity_loader(true); + $dom = new DOMDocument; + $status = $dom->loadHTML($responseHtml); + libxml_disable_entity_loader($oldValue); + libxml_use_internal_errors($libxml_errflag); + if (!$status) { + // Build error message + $error = libxml_get_last_error(); + if ($error && $error->message) { + $errormsg = "DOMDocument cannot parse HTML: {$error->message}"; + } else { + $errormsg = "DOMDocument cannot parse HTML: Please check the XML document's validity"; + } + + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception($errormsg); + } + $feedSet = new Zend_Feed_Reader_FeedSet; + $links = $dom->getElementsByTagName('link'); + $feedSet->addLinks($links, $uri); + return $feedSet; + } + + /** + * Detect the feed type of the provided feed + * + * @param Zend_Feed_Abstract|DOMDocument|string $feed + * @param bool $specOnly + * @return string + * @throws Zend_Feed_Exception + */ + public static function detectType($feed, $specOnly = false) + { + if ($feed instanceof Zend_Feed_Reader_FeedInterface) { + $dom = $feed->getDomDocument(); + } elseif($feed instanceof DOMDocument) { + $dom = $feed; + } elseif(is_string($feed) && !empty($feed)) { + @ini_set('track_errors', 1); + //$oldValue = libxml_disable_entity_loader(true); + $dom = new DOMDocument; + try { + $dom = Zend_Xml_Security::scan($feed, $dom); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception( + $e->getMessage() + ); + } + //libxml_disable_entity_loader($oldValue); + @ini_restore('track_errors'); + if (!$dom) { + if (!isset($php_errormsg)) { + if (function_exists('xdebug_is_enabled')) { + $php_errormsg = '(error message not available, when XDebug is running)'; + } else { + $php_errormsg = '(error message not available)'; + } + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception("DOMDocument cannot parse XML: $php_errormsg"); + } + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid object/scalar provided: must' + . ' be of type Zend_Feed_Reader_FeedInterface, DomDocument or string'); + } + $xpath = new DOMXPath($dom); + + if ($xpath->query('/rss')->length) { + $type = self::TYPE_RSS_ANY; + $version = $xpath->evaluate('string(/rss/@version)'); + + if (strlen($version) > 0) { + switch($version) { + case '2.0': + $type = self::TYPE_RSS_20; + break; + + case '0.94': + $type = self::TYPE_RSS_094; + break; + + case '0.93': + $type = self::TYPE_RSS_093; + break; + + case '0.92': + $type = self::TYPE_RSS_092; + break; + + case '0.91': + $type = self::TYPE_RSS_091; + break; + } + } + + return $type; + } + + $xpath->registerNamespace('rdf', self::NAMESPACE_RDF); + + if ($xpath->query('/rdf:RDF')->length) { + $xpath->registerNamespace('rss', self::NAMESPACE_RSS_10); + + if ($xpath->query('/rdf:RDF/rss:channel')->length + || $xpath->query('/rdf:RDF/rss:image')->length + || $xpath->query('/rdf:RDF/rss:item')->length + || $xpath->query('/rdf:RDF/rss:textinput')->length + ) { + return self::TYPE_RSS_10; + } + + $xpath->registerNamespace('rss', self::NAMESPACE_RSS_090); + + if ($xpath->query('/rdf:RDF/rss:channel')->length + || $xpath->query('/rdf:RDF/rss:image')->length + || $xpath->query('/rdf:RDF/rss:item')->length + || $xpath->query('/rdf:RDF/rss:textinput')->length + ) { + return self::TYPE_RSS_090; + } + } + + $type = self::TYPE_ATOM_ANY; + $xpath->registerNamespace('atom', self::NAMESPACE_ATOM_10); + + if ($xpath->query('//atom:feed')->length) { + return self::TYPE_ATOM_10; + } + + if ($xpath->query('//atom:entry')->length) { + if ($specOnly == true) { + return self::TYPE_ATOM_10; + } else { + return self::TYPE_ATOM_10_ENTRY; + } + } + + $xpath->registerNamespace('atom', self::NAMESPACE_ATOM_03); + + if ($xpath->query('//atom:feed')->length) { + return self::TYPE_ATOM_03; + } + + return self::TYPE_ANY; + } + + /** + * Set plugin loader for use with Extensions + * + * @param Zend_Loader_PluginLoader_Interface $loader + */ + public static function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) + { + self::$_pluginLoader = $loader; + } + + /** + * Get plugin loader for use with Extensions + * + * @return Zend_Loader_PluginLoader_Interface $loader + */ + public static function getPluginLoader() + { + if (!isset(self::$_pluginLoader)) { + require_once 'Zend/Loader/PluginLoader.php'; + self::$_pluginLoader = new Zend_Loader_PluginLoader(array( + 'Zend_Feed_Reader_Extension_' => 'Zend/Feed/Reader/Extension/', + )); + } + return self::$_pluginLoader; + } + + /** + * Add prefix path for loading Extensions + * + * @param string $prefix + * @param string $path + * @return void + */ + public static function addPrefixPath($prefix, $path) + { + $prefix = rtrim($prefix, '_'); + $path = rtrim($path, DIRECTORY_SEPARATOR); + self::getPluginLoader()->addPrefixPath($prefix, $path); + } + + /** + * Add multiple Extension prefix paths at once + * + * @param array $spec + * @return void + */ + public static function addPrefixPaths(array $spec) + { + if (isset($spec['prefix']) && isset($spec['path'])) { + self::addPrefixPath($spec['prefix'], $spec['path']); + } + foreach ($spec as $prefixPath) { + if (isset($prefixPath['prefix']) && isset($prefixPath['path'])) { + self::addPrefixPath($prefixPath['prefix'], $prefixPath['path']); + } + } + } + + /** + * Register an Extension by name + * + * @param string $name + * @return void + * @throws Zend_Feed_Exception if unable to resolve Extension class + */ + public static function registerExtension($name) + { + $feedName = $name . '_Feed'; + $entryName = $name . '_Entry'; + if (self::isRegistered($name)) { + if (self::getPluginLoader()->isLoaded($feedName) || + self::getPluginLoader()->isLoaded($entryName)) { + return; + } + } + try { + self::getPluginLoader()->load($feedName); + self::$_extensions['feed'][] = $feedName; + } catch (Zend_Loader_PluginLoader_Exception $e) { + } + try { + self::getPluginLoader()->load($entryName); + self::$_extensions['entry'][] = $entryName; + } catch (Zend_Loader_PluginLoader_Exception $e) { + } + if (!self::getPluginLoader()->isLoaded($feedName) + && !self::getPluginLoader()->isLoaded($entryName) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Could not load extension: ' . $name + . 'using Plugin Loader. Check prefix paths are configured and extension exists.'); + } + } + + /** + * Is a given named Extension registered? + * + * @param string $extensionName + * @return boolean + */ + public static function isRegistered($extensionName) + { + $feedName = $extensionName . '_Feed'; + $entryName = $extensionName . '_Entry'; + if (in_array($feedName, self::$_extensions['feed']) + || in_array($entryName, self::$_extensions['entry']) + ) { + return true; + } + return false; + } + + /** + * Get a list of extensions + * + * @return array + */ + public static function getExtensions() + { + return self::$_extensions; + } + + /** + * Reset class state to defaults + * + * @return void + */ + public static function reset() + { + self::$_cache = null; + self::$_httpClient = null; + self::$_httpMethodOverride = false; + self::$_httpConditionalGet = false; + self::$_pluginLoader = null; + self::$_prefixPaths = array(); + self::$_extensions = array( + 'feed' => array( + 'DublinCore_Feed', + 'Atom_Feed' + ), + 'entry' => array( + 'Content_Entry', + 'DublinCore_Entry', + 'Atom_Entry' + ), + 'core' => array( + 'DublinCore_Feed', + 'Atom_Feed', + 'Content_Entry', + 'DublinCore_Entry', + 'Atom_Entry' + ) + ); + } + + /** + * Register core (default) extensions + * + * @return void + */ + protected static function _registerCoreExtensions() + { + self::registerExtension('DublinCore'); + self::registerExtension('Content'); + self::registerExtension('Atom'); + self::registerExtension('Slash'); + self::registerExtension('WellFormedWeb'); + self::registerExtension('Thread'); + self::registerExtension('Podcast'); + } + + /** + * Utility method to apply array_unique operation to a multidimensional + * array. + * + * @param array + * @return array + */ + public static function arrayUnique(array $array) + { + foreach ($array as &$value) { + $value = serialize($value); + } + $array = array_unique($array); + foreach ($array as &$value) { + $value = unserialize($value); + } + return $array; + } + +} diff --git a/library/Zend/Feed/Reader/Collection.php b/library/Zend/Feed/Reader/Collection.php new file mode 100755 index 000000000..b12d6744a --- /dev/null +++ b/library/Zend/Feed/Reader/Collection.php @@ -0,0 +1,33 @@ +getIterator() as $element) { + $authors[] = $element['name']; + } + return array_unique($authors); + } + +} diff --git a/library/Zend/Feed/Reader/Collection/Category.php b/library/Zend/Feed/Reader/Collection/Category.php new file mode 100755 index 000000000..2ee9b3d51 --- /dev/null +++ b/library/Zend/Feed/Reader/Collection/Category.php @@ -0,0 +1,57 @@ +getIterator() as $element) { + if (isset($element['label']) && !empty($element['label'])) { + $categories[] = $element['label']; + } else { + $categories[] = $element['term']; + } + } + return array_unique($categories); + } + +} diff --git a/library/Zend/Feed/Reader/Collection/CollectionAbstract.php b/library/Zend/Feed/Reader/Collection/CollectionAbstract.php new file mode 100755 index 000000000..d718d55ed --- /dev/null +++ b/library/Zend/Feed/Reader/Collection/CollectionAbstract.php @@ -0,0 +1,41 @@ +_xpathQuery = '//atom:entry[' . ($this->_entryKey + 1) . ']'; + + $atomClass = Zend_Feed_Reader::getPluginLoader()->getClassName('Atom_Entry'); + $this->_extensions['Atom_Entry'] = new $atomClass($entry, $entryKey, $type); + + $threadClass = Zend_Feed_Reader::getPluginLoader()->getClassName('Thread_Entry'); + $this->_extensions['Thread_Entry'] = new $threadClass($entry, $entryKey, $type); + + $threadClass = Zend_Feed_Reader::getPluginLoader()->getClassName('DublinCore_Entry'); + $this->_extensions['DublinCore_Entry'] = new $threadClass($entry, $entryKey, $type); + } + + /** + * Get the specified author + * + * @param int $index + * @return string|null + */ + public function getAuthor($index = 0) + { + $authors = $this->getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $people = $this->getExtension('Atom')->getAuthors(); + + $this->_data['authors'] = $people; + + return $this->_data['authors']; + } + + /** + * Get the entry content + * + * @return string + */ + public function getContent() + { + if (array_key_exists('content', $this->_data)) { + return $this->_data['content']; + } + + $content = $this->getExtension('Atom')->getContent(); + + $this->_data['content'] = $content; + + return $this->_data['content']; + } + + /** + * Get the entry creation date + * + * @return string + */ + public function getDateCreated() + { + if (array_key_exists('datecreated', $this->_data)) { + return $this->_data['datecreated']; + } + + $dateCreated = $this->getExtension('Atom')->getDateCreated(); + + $this->_data['datecreated'] = $dateCreated; + + return $this->_data['datecreated']; + } + + /** + * Get the entry modification date + * + * @return string + */ + public function getDateModified() + { + if (array_key_exists('datemodified', $this->_data)) { + return $this->_data['datemodified']; + } + + $dateModified = $this->getExtension('Atom')->getDateModified(); + + $this->_data['datemodified'] = $dateModified; + + return $this->_data['datemodified']; + } + + /** + * Get the entry description + * + * @return string + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = $this->getExtension('Atom')->getDescription(); + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the entry enclosure + * + * @return string + */ + public function getEnclosure() + { + if (array_key_exists('enclosure', $this->_data)) { + return $this->_data['enclosure']; + } + + $enclosure = $this->getExtension('Atom')->getEnclosure(); + + $this->_data['enclosure'] = $enclosure; + + return $this->_data['enclosure']; + } + + /** + * Get the entry ID + * + * @return string + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = $this->getExtension('Atom')->getId(); + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get a specific link + * + * @param int $index + * @return string + */ + public function getLink($index = 0) + { + if (!array_key_exists('links', $this->_data)) { + $this->getLinks(); + } + + if (isset($this->_data['links'][$index])) { + return $this->_data['links'][$index]; + } + + return null; + } + + /** + * Get all links + * + * @return array + */ + public function getLinks() + { + if (array_key_exists('links', $this->_data)) { + return $this->_data['links']; + } + + $links = $this->getExtension('Atom')->getLinks(); + + $this->_data['links'] = $links; + + return $this->_data['links']; + } + + /** + * Get a permalink to the entry + * + * @return string + */ + public function getPermalink() + { + return $this->getLink(0); + } + + /** + * Get the entry title + * + * @return string + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = $this->getExtension('Atom')->getTitle(); + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * Get the number of comments/replies for current entry + * + * @return integer + */ + public function getCommentCount() + { + if (array_key_exists('commentcount', $this->_data)) { + return $this->_data['commentcount']; + } + + $commentcount = $this->getExtension('Thread')->getCommentCount(); + + if (!$commentcount) { + $commentcount = $this->getExtension('Atom')->getCommentCount(); + } + + $this->_data['commentcount'] = $commentcount; + + return $this->_data['commentcount']; + } + + /** + * Returns a URI pointing to the HTML page where comments can be made on this entry + * + * @return string + */ + public function getCommentLink() + { + if (array_key_exists('commentlink', $this->_data)) { + return $this->_data['commentlink']; + } + + $commentlink = $this->getExtension('Atom')->getCommentLink(); + + $this->_data['commentlink'] = $commentlink; + + return $this->_data['commentlink']; + } + + /** + * Returns a URI pointing to a feed of all comments for this entry + * + * @return string + */ + public function getCommentFeedLink() + { + if (array_key_exists('commentfeedlink', $this->_data)) { + return $this->_data['commentfeedlink']; + } + + $commentfeedlink = $this->getExtension('Atom')->getCommentFeedLink(); + + $this->_data['commentfeedlink'] = $commentfeedlink; + + return $this->_data['commentfeedlink']; + } + + /** + * Get category data as a Zend_Feed_Reader_Collection_Category object + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + $categoryCollection = $this->getExtension('Atom')->getCategories(); + + if (count($categoryCollection) == 0) { + $categoryCollection = $this->getExtension('DublinCore')->getCategories(); + } + + $this->_data['categories'] = $categoryCollection; + + return $this->_data['categories']; + } + + /** + * Get source feed metadata from the entry + * + * @return Zend_Feed_Reader_Feed_Atom_Source|null + */ + public function getSource() + { + if (array_key_exists('source', $this->_data)) { + return $this->_data['source']; + } + + $source = $this->getExtension('Atom')->getSource(); + + $this->_data['source'] = $source; + + return $this->_data['source']; + } + + /** + * Set the XPath query (incl. on all Extensions) + * + * @param DOMXPath $xpath + */ + public function setXpath(DOMXPath $xpath) + { + parent::setXpath($xpath); + foreach ($this->_extensions as $extension) { + $extension->setXpath($this->_xpath); + } + } +} diff --git a/library/Zend/Feed/Reader/Entry/Rss.php b/library/Zend/Feed/Reader/Entry/Rss.php new file mode 100755 index 000000000..1e4f334cd --- /dev/null +++ b/library/Zend/Feed/Reader/Entry/Rss.php @@ -0,0 +1,668 @@ +_xpathQueryRss = '//item[' . ($this->_entryKey+1) . ']'; + $this->_xpathQueryRdf = '//rss:item[' . ($this->_entryKey+1) . ']'; + + $pluginLoader = Zend_Feed_Reader::getPluginLoader(); + + $dublinCoreClass = $pluginLoader->getClassName('DublinCore_Entry'); + $this->_extensions['DublinCore_Entry'] = new $dublinCoreClass($entry, $entryKey, $type); + + $contentClass = $pluginLoader->getClassName('Content_Entry'); + $this->_extensions['Content_Entry'] = new $contentClass($entry, $entryKey, $type); + + $atomClass = $pluginLoader->getClassName('Atom_Entry'); + $this->_extensions['Atom_Entry'] = new $atomClass($entry, $entryKey, $type); + + $wfwClass = $pluginLoader->getClassName('WellFormedWeb_Entry'); + $this->_extensions['WellFormedWeb_Entry'] = new $wfwClass($entry, $entryKey, $type); + + $slashClass = $pluginLoader->getClassName('Slash_Entry'); + $this->_extensions['Slash_Entry'] = new $slashClass($entry, $entryKey, $type); + + $threadClass = $pluginLoader->getClassName('Thread_Entry'); + $this->_extensions['Thread_Entry'] = new $threadClass($entry, $entryKey, $type); + } + + /** + * Get an author entry + * + * @param DOMElement $element + * @return string + */ + public function getAuthor($index = 0) + { + $authors = $this->getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $authors = array(); + $authors_dc = $this->getExtension('DublinCore')->getAuthors(); + if (!empty($authors_dc)) { + foreach ($authors_dc as $author) { + $authors[] = array( + 'name' => $author['name'] + ); + } + } + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $list = $this->_xpath->query($this->_xpathQueryRss . '//author'); + } else { + $list = $this->_xpath->query($this->_xpathQueryRdf . '//rss:author'); + } + if ($list->length) { + foreach ($list as $author) { + $string = trim($author->nodeValue); + $email = null; + $name = null; + $data = array(); + // Pretty rough parsing - but it's a catchall + if (preg_match("/^.*@[^ ]*/", $string, $matches)) { + $data['email'] = trim($matches[0]); + if (preg_match("/\((.*)\)$/", $string, $matches)) { + $data['name'] = $matches[1]; + } + $authors[] = $data; + } + } + } + + if (count($authors) == 0) { + $authors = $this->getExtension('Atom')->getAuthors(); + } else { + $authors = new Zend_Feed_Reader_Collection_Author( + Zend_Feed_Reader::arrayUnique($authors) + ); + } + + if ($authors !== null && count($authors) == 0) { + $authors = null; + } + + $this->_data['authors'] = $authors; + + return $this->_data['authors']; + } + + /** + * Get the entry content + * + * @return string + */ + public function getContent() + { + if (array_key_exists('content', $this->_data)) { + return $this->_data['content']; + } + + $content = $this->getExtension('Content')->getContent(); + + if (!$content) { + $content = $this->getDescription(); + } + + if (empty($content)) { + $content = $this->getExtension('Atom')->getContent(); + } + + $this->_data['content'] = $content; + + return $this->_data['content']; + } + + /** + * Get the entry's date of creation + * + * @return string + */ + public function getDateCreated() + { + return $this->getDateModified(); + } + + /** + * Get the entry's date of modification + * + * @return string + */ + public function getDateModified() + { + if (array_key_exists('datemodified', $this->_data)) { + return $this->_data['datemodified']; + } + + $dateModified = null; + $date = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090 + ) { + $dateModified = $this->_xpath->evaluate('string('.$this->_xpathQueryRss.'/pubDate)'); + if ($dateModified) { + $dateModifiedParsed = strtotime($dateModified); + if ($dateModifiedParsed) { + $date = new Zend_Date($dateModifiedParsed); + } else { + $dateStandards = array(Zend_Date::RSS, Zend_Date::RFC_822, + Zend_Date::RFC_2822, Zend_Date::DATES); + $date = new Zend_Date; + foreach ($dateStandards as $standard) { + try { + $date->set($dateModified, $standard); + break; + } catch (Zend_Date_Exception $e) { + if ($standard == Zend_Date::DATES) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception( + 'Could not load date due to unrecognised' + .' format (should follow RFC 822 or 2822):' + . $e->getMessage(), + 0, $e + ); + } + } + } + } + } + } + + if (!$date) { + $date = $this->getExtension('DublinCore')->getDate(); + } + + if (!$date) { + $date = $this->getExtension('Atom')->getDateModified(); + } + + if (!$date) { + $date = null; + } + + $this->_data['datemodified'] = $date; + + return $this->_data['datemodified']; + } + + /** + * Get the entry description + * + * @return string + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090 + ) { + $description = $this->_xpath->evaluate('string('.$this->_xpathQueryRss.'/description)'); + } else { + $description = $this->_xpath->evaluate('string('.$this->_xpathQueryRdf.'/rss:description)'); + } + + if (!$description) { + $description = $this->getExtension('DublinCore')->getDescription(); + } + + if (empty($description)) { + $description = $this->getExtension('Atom')->getDescription(); + } + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the entry enclosure + * @return string + */ + public function getEnclosure() + { + if (array_key_exists('enclosure', $this->_data)) { + return $this->_data['enclosure']; + } + + $enclosure = null; + + if ($this->getType() == Zend_Feed_Reader::TYPE_RSS_20) { + $nodeList = $this->_xpath->query($this->_xpathQueryRss . '/enclosure'); + + if ($nodeList->length > 0) { + $enclosure = new stdClass(); + $enclosure->url = $nodeList->item(0)->getAttribute('url'); + $enclosure->length = $nodeList->item(0)->getAttribute('length'); + $enclosure->type = $nodeList->item(0)->getAttribute('type'); + } + } + + if (!$enclosure) { + $enclosure = $this->getExtension('Atom')->getEnclosure(); + } + + $this->_data['enclosure'] = $enclosure; + + return $this->_data['enclosure']; + } + + /** + * Get the entry ID + * + * @return string + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090 + ) { + $id = $this->_xpath->evaluate('string('.$this->_xpathQueryRss.'/guid)'); + } + + if (!$id) { + $id = $this->getExtension('DublinCore')->getId(); + } + + if (empty($id)) { + $id = $this->getExtension('Atom')->getId(); + } + + if (!$id) { + if ($this->getPermalink()) { + $id = $this->getPermalink(); + } elseif ($this->getTitle()) { + $id = $this->getTitle(); + } else { + $id = null; + } + } + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get a specific link + * + * @param int $index + * @return string + */ + public function getLink($index = 0) + { + if (!array_key_exists('links', $this->_data)) { + $this->getLinks(); + } + + if (isset($this->_data['links'][$index])) { + return $this->_data['links'][$index]; + } + + return null; + } + + /** + * Get all links + * + * @return array + */ + public function getLinks() + { + if (array_key_exists('links', $this->_data)) { + return $this->_data['links']; + } + + $links = array(); + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $list = $this->_xpath->query($this->_xpathQueryRss.'//link'); + } else { + $list = $this->_xpath->query($this->_xpathQueryRdf.'//rss:link'); + } + + if (!$list->length) { + $links = $this->getExtension('Atom')->getLinks(); + } else { + foreach ($list as $link) { + $links[] = $link->nodeValue; + } + } + + $this->_data['links'] = $links; + + return $this->_data['links']; + } + + /** + * Get all categories + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $list = $this->_xpath->query($this->_xpathQueryRss.'//category'); + } else { + $list = $this->_xpath->query($this->_xpathQueryRdf.'//rss:category'); + } + + if ($list->length) { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + foreach ($list as $category) { + $categoryCollection[] = array( + 'term' => $category->nodeValue, + 'scheme' => $category->getAttribute('domain'), + 'label' => $category->nodeValue, + ); + } + } else { + $categoryCollection = $this->getExtension('DublinCore')->getCategories(); + } + + if (count($categoryCollection) == 0) { + $categoryCollection = $this->getExtension('Atom')->getCategories(); + } + + $this->_data['categories'] = $categoryCollection; + + return $this->_data['categories']; + } + + /** + * Get a permalink to the entry + * + * @return string + */ + public function getPermalink() + { + return $this->getLink(0); + } + + /** + * Get the entry title + * + * @return string + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090 + ) { + $title = $this->_xpath->evaluate('string('.$this->_xpathQueryRss.'/title)'); + } else { + $title = $this->_xpath->evaluate('string('.$this->_xpathQueryRdf.'/rss:title)'); + } + + if (!$title) { + $title = $this->getExtension('DublinCore')->getTitle(); + } + + if (!$title) { + $title = $this->getExtension('Atom')->getTitle(); + } + + if (!$title) { + $title = null; + } + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * Get the number of comments/replies for current entry + * + * @return string|null + */ + public function getCommentCount() + { + if (array_key_exists('commentcount', $this->_data)) { + return $this->_data['commentcount']; + } + + $commentcount = $this->getExtension('Slash')->getCommentCount(); + + if (!$commentcount) { + $commentcount = $this->getExtension('Thread')->getCommentCount(); + } + + if (!$commentcount) { + $commentcount = $this->getExtension('Atom')->getCommentCount(); + } + + if (!$commentcount) { + $commentcount = null; + } + + $this->_data['commentcount'] = $commentcount; + + return $this->_data['commentcount']; + } + + /** + * Returns a URI pointing to the HTML page where comments can be made on this entry + * + * @return string + */ + public function getCommentLink() + { + if (array_key_exists('commentlink', $this->_data)) { + return $this->_data['commentlink']; + } + + $commentlink = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090 + ) { + $commentlink = $this->_xpath->evaluate('string('.$this->_xpathQueryRss.'/comments)'); + } + + if (!$commentlink) { + $commentlink = $this->getExtension('Atom')->getCommentLink(); + } + + if (!$commentlink) { + $commentlink = null; + } + + $this->_data['commentlink'] = $commentlink; + + return $this->_data['commentlink']; + } + + /** + * Returns a URI pointing to a feed of all comments for this entry + * + * @return string + */ + public function getCommentFeedLink() + { + if (array_key_exists('commentfeedlink', $this->_data)) { + return $this->_data['commentfeedlink']; + } + + $commentfeedlink = $this->getExtension('WellFormedWeb')->getCommentFeedLink(); + + if (!$commentfeedlink) { + $commentfeedlink = $this->getExtension('Atom')->getCommentFeedLink('rss'); + } + + if (!$commentfeedlink) { + $commentfeedlink = $this->getExtension('Atom')->getCommentFeedLink('rdf'); + } + + if (!$commentfeedlink) { + $commentfeedlink = null; + } + + $this->_data['commentfeedlink'] = $commentfeedlink; + + return $this->_data['commentfeedlink']; + } + + /** + * Set the XPath query (incl. on all Extensions) + * + * @param DOMXPath $xpath + */ + public function setXpath(DOMXPath $xpath) + { + parent::setXpath($xpath); + foreach ($this->_extensions as $extension) { + $extension->setXpath($this->_xpath); + } + } +} diff --git a/library/Zend/Feed/Reader/EntryAbstract.php b/library/Zend/Feed/Reader/EntryAbstract.php new file mode 100755 index 000000000..a55e0953e --- /dev/null +++ b/library/Zend/Feed/Reader/EntryAbstract.php @@ -0,0 +1,242 @@ +_entry = $entry; + $this->_entryKey = $entryKey; + $this->_domDocument = $entry->ownerDocument; + if ($type !== null) { + $this->_data['type'] = $type; + } else { + $this->_data['type'] = Zend_Feed_Reader::detectType( + $this->_domDocument + ); + } + $this->_loadExtensions(); + } + + /** + * Get the DOM + * + * @return DOMDocument + */ + public function getDomDocument() + { + return $this->_domDocument; + } + + /** + * Get the entry element + * + * @return DOMElement + */ + public function getElement() + { + return $this->_entry; + } + + /** + * Get the Entry's encoding + * + * @return string + */ + public function getEncoding() + { + $assumed = $this->getDomDocument()->encoding; + if (empty($assumed)) { + $assumed = 'UTF-8'; + } + return $assumed; + } + + /** + * Get entry as xml + * + * @return string + */ + public function saveXml() + { + $dom = new DOMDocument('1.0', $this->getEncoding()); + $entry = $dom->importNode($this->getElement(), true); + $dom->appendChild($entry); + return $dom->saveXml(); + } + + /** + * Get the entry type + * + * @return string + */ + public function getType() + { + return $this->_data['type']; + } + + /** + * Get the XPath query object + * + * @return DOMXPath + */ + public function getXpath() + { + if (!$this->_xpath) { + $this->setXpath(new DOMXPath($this->getDomDocument())); + } + return $this->_xpath; + } + + /** + * Set the XPath query + * + * @param DOMXPath $xpath + * @return Zend_Feed_Reader_Entry_EntryAbstract + */ + public function setXpath(DOMXPath $xpath) + { + $this->_xpath = $xpath; + return $this; + } + + /** + * Get registered extensions + * + * @return array + */ + public function getExtensions() + { + return $this->_extensions; + } + + /** + * Return an Extension object with the matching name (postfixed with _Entry) + * + * @param string $name + * @return Zend_Feed_Reader_Extension_EntryAbstract + */ + public function getExtension($name) + { + if (array_key_exists($name . '_Entry', $this->_extensions)) { + return $this->_extensions[$name . '_Entry']; + } + return null; + } + + /** + * Method overloading: call given method on first extension implementing it + * + * @param string $method + * @param array $args + * @return mixed + * @throws Zend_Feed_Exception if no extensions implements the method + */ + public function __call($method, $args) + { + foreach ($this->_extensions as $extension) { + if (method_exists($extension, $method)) { + return call_user_func_array(array($extension, $method), $args); + } + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception( + 'Method: ' . $method + . 'does not exist and could not be located on a registered Extension' + ); + } + + /** + * Load extensions from Zend_Feed_Reader + * + * @return void + */ + protected function _loadExtensions() + { + $all = Zend_Feed_Reader::getExtensions(); + $feed = $all['entry']; + foreach ($feed as $extension) { + if (in_array($extension, $all['core'])) { + continue; + } + $className = Zend_Feed_Reader::getPluginLoader()->getClassName($extension); + $this->_extensions[$extension] = new $className( + $this->getElement(), $this->_entryKey, $this->_data['type'] + ); + } + } +} diff --git a/library/Zend/Feed/Reader/EntryInterface.php b/library/Zend/Feed/Reader/EntryInterface.php new file mode 100755 index 000000000..2eee00aa9 --- /dev/null +++ b/library/Zend/Feed/Reader/EntryInterface.php @@ -0,0 +1,143 @@ +getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $authors = array(); + $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom:author'); + + if (!$list->length) { + /** + * TODO: Limit query to feed level els only! + */ + $list = $this->getXpath()->query('//atom:author'); + } + + if ($list->length) { + foreach ($list as $author) { + $author = $this->_getAuthor($author); + if (!empty($author)) { + $authors[] = $author; + } + } + } + + if (count($authors) == 0) { + $authors = null; + } else { + $authors = new Zend_Feed_Reader_Collection_Author( + Zend_Feed_Reader::arrayUnique($authors) + ); + } + + $this->_data['authors'] = $authors; + return $this->_data['authors']; + } + + /** + * Get the entry content + * + * @return string + */ + public function getContent() + { + if (array_key_exists('content', $this->_data)) { + return $this->_data['content']; + } + + $content = null; + + $el = $this->getXpath()->query($this->getXpathPrefix() . '/atom:content'); + if($el->length > 0) { + $el = $el->item(0); + $type = $el->getAttribute('type'); + switch ($type) { + case '': + case 'text': + case 'text/plain': + case 'html': + case 'text/html': + $content = $el->nodeValue; + break; + case 'xhtml': + $this->getXpath()->registerNamespace('xhtml', 'http://www.w3.org/1999/xhtml'); + $xhtml = $this->getXpath()->query( + $this->getXpathPrefix() . '/atom:content/xhtml:div' + )->item(0); + //$xhtml->setAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); + $d = new DOMDocument('1.0', $this->getEncoding()); + $xhtmls = $d->importNode($xhtml, true); + $d->appendChild($xhtmls); + $content = $this->_collectXhtml( + $d->saveXML(), + $d->lookupPrefix('http://www.w3.org/1999/xhtml') + ); + break; + } + } + + if (!$content) { + $content = $this->getDescription(); + } + + $this->_data['content'] = trim($content); + + return $this->_data['content']; + } + + /** + * Parse out XHTML to remove the namespacing + */ + protected function _collectXhtml($xhtml, $prefix) + { + if (!empty($prefix)) $prefix = $prefix . ':'; + $matches = array( + "/<\?xml[^<]*>[^<]*<" . $prefix . "div[^<]*/", + "/<\/" . $prefix . "div>\s*$/" + ); + $xhtml = preg_replace($matches, '', $xhtml); + if (!empty($prefix)) { + $xhtml = preg_replace("/(<[\/]?)" . $prefix . "([a-zA-Z]+)/", '$1$2', $xhtml); + } + return $xhtml; + } + + /** + * Get the entry creation date + * + * @return string + */ + public function getDateCreated() + { + if (array_key_exists('datecreated', $this->_data)) { + return $this->_data['datecreated']; + } + + $date = null; + + if ($this->_getAtomType() === Zend_Feed_Reader::TYPE_ATOM_03) { + $dateCreated = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:created)'); + } else { + $dateCreated = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:published)'); + } + + if ($dateCreated) { + $date = new Zend_Date; + $date->set($dateCreated, Zend_Date::ISO_8601); + } + + $this->_data['datecreated'] = $date; + + return $this->_data['datecreated']; + } + + /** + * Get the entry modification date + * + * @return string + */ + public function getDateModified() + { + if (array_key_exists('datemodified', $this->_data)) { + return $this->_data['datemodified']; + } + + $date = null; + + if ($this->_getAtomType() === Zend_Feed_Reader::TYPE_ATOM_03) { + $dateModified = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:modified)'); + } else { + $dateModified = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:updated)'); + } + + if ($dateModified) { + $date = new Zend_Date; + $date->set($dateModified, Zend_Date::ISO_8601); + } + + $this->_data['datemodified'] = $date; + + return $this->_data['datemodified']; + } + + /** + * Get the entry description + * + * @return string + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:summary)'); + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the entry enclosure + * + * @return string + */ + public function getEnclosure() + { + if (array_key_exists('enclosure', $this->_data)) { + return $this->_data['enclosure']; + } + + $enclosure = null; + + $nodeList = $this->getXpath()->query($this->getXpathPrefix() . '/atom:link[@rel="enclosure"]'); + + if ($nodeList->length > 0) { + $enclosure = new stdClass(); + $enclosure->url = $nodeList->item(0)->getAttribute('href'); + $enclosure->length = $nodeList->item(0)->getAttribute('length'); + $enclosure->type = $nodeList->item(0)->getAttribute('type'); + } + + $this->_data['enclosure'] = $enclosure; + + return $this->_data['enclosure']; + } + + /** + * Get the entry ID + * + * @return string + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:id)'); + + if (!$id) { + if ($this->getPermalink()) { + $id = $this->getPermalink(); + } elseif ($this->getTitle()) { + $id = $this->getTitle(); + } else { + $id = null; + } + } + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get the base URI of the feed (if set). + * + * @return string|null + */ + public function getBaseUrl() + { + if (array_key_exists('baseUrl', $this->_data)) { + return $this->_data['baseUrl']; + } + + $baseUrl = $this->getXpath()->evaluate('string(' + . $this->getXpathPrefix() . '/@xml:base[1]' + . ')'); + + if (!$baseUrl) { + $baseUrl = $this->getXpath()->evaluate('string(//@xml:base[1])'); + } + + if (!$baseUrl) { + $baseUrl = null; + } + + $this->_data['baseUrl'] = $baseUrl; + + return $this->_data['baseUrl']; + } + + /** + * Get a specific link + * + * @param int $index + * @return string + */ + public function getLink($index = 0) + { + if (!array_key_exists('links', $this->_data)) { + $this->getLinks(); + } + + if (isset($this->_data['links'][$index])) { + return $this->_data['links'][$index]; + } + + return null; + } + + /** + * Get all links + * + * @return array + */ + public function getLinks() + { + if (array_key_exists('links', $this->_data)) { + return $this->_data['links']; + } + + $links = array(); + + $list = $this->getXpath()->query( + $this->getXpathPrefix() . '//atom:link[@rel="alternate"]/@href' . '|' . + $this->getXpathPrefix() . '//atom:link[not(@rel)]/@href' + ); + + if ($list->length) { + foreach ($list as $link) { + $links[] = $this->_absolutiseUri($link->value); + } + } + + $this->_data['links'] = $links; + + return $this->_data['links']; + } + + /** + * Get a permalink to the entry + * + * @return string + */ + public function getPermalink() + { + return $this->getLink(0); + } + + /** + * Get the entry title + * + * @return string + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = $this->getXpath()->evaluate('string(' . $this->getXpathPrefix() . '/atom:title)'); + + if (!$title) { + $title = null; + } + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * Get the number of comments/replies for current entry + * + * @return integer + */ + public function getCommentCount() + { + if (array_key_exists('commentcount', $this->_data)) { + return $this->_data['commentcount']; + } + + $count = null; + + $this->getXpath()->registerNamespace('thread10', 'http://purl.org/syndication/thread/1.0'); + $list = $this->getXpath()->query( + $this->getXpathPrefix() . '//atom:link[@rel="replies"]/@thread10:count' + ); + + if ($list->length) { + $count = $list->item(0)->value; + } + + $this->_data['commentcount'] = $count; + + return $this->_data['commentcount']; + } + + /** + * Returns a URI pointing to the HTML page where comments can be made on this entry + * + * @return string + */ + public function getCommentLink() + { + if (array_key_exists('commentlink', $this->_data)) { + return $this->_data['commentlink']; + } + + $link = null; + + $list = $this->getXpath()->query( + $this->getXpathPrefix() . '//atom:link[@rel="replies" and @type="text/html"]/@href' + ); + + if ($list->length) { + $link = $list->item(0)->value; + $link = $this->_absolutiseUri($link); + } + + $this->_data['commentlink'] = $link; + + return $this->_data['commentlink']; + } + + /** + * Returns a URI pointing to a feed of all comments for this entry + * + * @return string + */ + public function getCommentFeedLink($type = 'atom') + { + if (array_key_exists('commentfeedlink', $this->_data)) { + return $this->_data['commentfeedlink']; + } + + $link = null; + + $list = $this->getXpath()->query( + $this->getXpathPrefix() . '//atom:link[@rel="replies" and @type="application/'.$type.'+xml"]/@href' + ); + + if ($list->length) { + $link = $list->item(0)->value; + $link = $this->_absolutiseUri($link); + } + + $this->_data['commentfeedlink'] = $link; + + return $this->_data['commentfeedlink']; + } + + /** + * Get all categories + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + if ($this->_getAtomType() == Zend_Feed_Reader::TYPE_ATOM_10) { + $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom:category'); + } else { + /** + * Since Atom 0.3 did not support categories, it would have used the + * Dublin Core extension. However there is a small possibility Atom 0.3 + * may have been retrofittied to use Atom 1.0 instead. + */ + $this->getXpath()->registerNamespace('atom10', Zend_Feed_Reader::NAMESPACE_ATOM_10); + $list = $this->getXpath()->query($this->getXpathPrefix() . '//atom10:category'); + } + + if ($list->length) { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + foreach ($list as $category) { + $categoryCollection[] = array( + 'term' => $category->getAttribute('term'), + 'scheme' => $category->getAttribute('scheme'), + 'label' => $category->getAttribute('label') + ); + } + } else { + return new Zend_Feed_Reader_Collection_Category; + } + + $this->_data['categories'] = $categoryCollection; + + return $this->_data['categories']; + } + + /** + * Get source feed metadata from the entry + * + * @return Zend_Feed_Reader_Feed_Atom_Source|null + */ + public function getSource() + { + if (array_key_exists('source', $this->_data)) { + return $this->_data['source']; + } + + $source = null; + // TODO: Investigate why _getAtomType() fails here. Is it even needed? + if ($this->getType() == Zend_Feed_Reader::TYPE_ATOM_10) { + $list = $this->getXpath()->query($this->getXpathPrefix() . '/atom:source[1]'); + if ($list->length) { + $element = $list->item(0); + $source = new Zend_Feed_Reader_Feed_Atom_Source($element, $this->getXpathPrefix()); + } + } + + $this->_data['source'] = $source; + return $this->_data['source']; + } + + /** + * Attempt to absolutise the URI, i.e. if a relative URI apply the + * xml:base value as a prefix to turn into an absolute URI. + */ + protected function _absolutiseUri($link) + { + if (!Zend_Uri::check($link)) { + if ($this->getBaseUrl() !== null) { + $link = $this->getBaseUrl() . $link; + if (!Zend_Uri::check($link)) { + $link = null; + } + } + } + return $link; + } + + /** + * Get an author entry + * + * @param DOMElement $element + * @return string + */ + protected function _getAuthor(DOMElement $element) + { + $author = array(); + + $emailNode = $element->getElementsByTagName('email'); + $nameNode = $element->getElementsByTagName('name'); + $uriNode = $element->getElementsByTagName('uri'); + + if ($emailNode->length && strlen($emailNode->item(0)->nodeValue) > 0) { + $author['email'] = $emailNode->item(0)->nodeValue; + } + + if ($nameNode->length && strlen($nameNode->item(0)->nodeValue) > 0) { + $author['name'] = $nameNode->item(0)->nodeValue; + } + + if ($uriNode->length && strlen($uriNode->item(0)->nodeValue) > 0) { + $author['uri'] = $uriNode->item(0)->nodeValue; + } + + if (empty($author)) { + return null; + } + return $author; + } + + /** + * Register the default namespaces for the current feed format + */ + protected function _registerNamespaces() + { + switch ($this->_getAtomType()) { + case Zend_Feed_Reader::TYPE_ATOM_03: + $this->getXpath()->registerNamespace('atom', Zend_Feed_Reader::NAMESPACE_ATOM_03); + break; + default: + $this->getXpath()->registerNamespace('atom', Zend_Feed_Reader::NAMESPACE_ATOM_10); + break; + } + } + + /** + * Detect the presence of any Atom namespaces in use + */ + protected function _getAtomType() + { + $dom = $this->getDomDocument(); + $prefixAtom03 = $dom->lookupPrefix(Zend_Feed_Reader::NAMESPACE_ATOM_03); + $prefixAtom10 = $dom->lookupPrefix(Zend_Feed_Reader::NAMESPACE_ATOM_10); + if ($dom->isDefaultNamespace(Zend_Feed_Reader::NAMESPACE_ATOM_03) + || !empty($prefixAtom03)) { + return Zend_Feed_Reader::TYPE_ATOM_03; + } + if ($dom->isDefaultNamespace(Zend_Feed_Reader::NAMESPACE_ATOM_10) + || !empty($prefixAtom10)) { + return Zend_Feed_Reader::TYPE_ATOM_10; + } + } +} diff --git a/library/Zend/Feed/Reader/Extension/Atom/Feed.php b/library/Zend/Feed/Reader/Extension/Atom/Feed.php new file mode 100755 index 000000000..240a76d09 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Atom/Feed.php @@ -0,0 +1,590 @@ +getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $list = $this->_xpath->query('//atom:author'); + + $authors = array(); + + if ($list->length) { + foreach ($list as $author) { + $author = $this->_getAuthor($author); + if (!empty($author)) { + $authors[] = $author; + } + } + } + + if (count($authors) == 0) { + $authors = null; + } else { + $authors = new Zend_Feed_Reader_Collection_Author( + Zend_Feed_Reader::arrayUnique($authors) + ); + } + + $this->_data['authors'] = $authors; + + return $this->_data['authors']; + } + + /** + * Get the copyright entry + * + * @return string|null + */ + public function getCopyright() + { + if (array_key_exists('copyright', $this->_data)) { + return $this->_data['copyright']; + } + + $copyright = null; + + if ($this->getType() === Zend_Feed_Reader::TYPE_ATOM_03) { + $copyright = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:copyright)'); + } else { + $copyright = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:rights)'); + } + + if (!$copyright) { + $copyright = null; + } + + $this->_data['copyright'] = $copyright; + + return $this->_data['copyright']; + } + + /** + * Get the feed creation date + * + * @return Zend_Date|null + */ + public function getDateCreated() + { + if (array_key_exists('datecreated', $this->_data)) { + return $this->_data['datecreated']; + } + + $date = null; + + if ($this->getType() === Zend_Feed_Reader::TYPE_ATOM_03) { + $dateCreated = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:created)'); + } else { + $dateCreated = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:published)'); + } + + if ($dateCreated) { + $date = new Zend_Date; + $date->set($dateCreated, Zend_Date::ISO_8601); + } + + $this->_data['datecreated'] = $date; + + return $this->_data['datecreated']; + } + + /** + * Get the feed modification date + * + * @return Zend_Date|null + */ + public function getDateModified() + { + if (array_key_exists('datemodified', $this->_data)) { + return $this->_data['datemodified']; + } + + $date = null; + + if ($this->getType() === Zend_Feed_Reader::TYPE_ATOM_03) { + $dateModified = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:modified)'); + } else { + $dateModified = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:updated)'); + } + + if ($dateModified) { + $date = new Zend_Date; + $date->set($dateModified, Zend_Date::ISO_8601); + } + + $this->_data['datemodified'] = $date; + + return $this->_data['datemodified']; + } + + /** + * Get the feed description + * + * @return string|null + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = null; + + if ($this->getType() === Zend_Feed_Reader::TYPE_ATOM_03) { + $description = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:tagline)'); // TODO: Is this the same as subtitle? + } else { + $description = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:subtitle)'); + } + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the feed generator entry + * + * @return string|null + */ + public function getGenerator() + { + if (array_key_exists('generator', $this->_data)) { + return $this->_data['generator']; + } + // TODO: Add uri support + $generator = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:generator)'); + + if (!$generator) { + $generator = null; + } + + $this->_data['generator'] = $generator; + + return $this->_data['generator']; + } + + /** + * Get the feed ID + * + * @return string|null + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:id)'); + + if (!$id) { + if ($this->getLink()) { + $id = $this->getLink(); + } elseif ($this->getTitle()) { + $id = $this->getTitle(); + } else { + $id = null; + } + } + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get the feed language + * + * @return string|null + */ + public function getLanguage() + { + if (array_key_exists('language', $this->_data)) { + return $this->_data['language']; + } + + $language = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:lang)'); + + if (!$language) { + $language = $this->_xpath->evaluate('string(//@xml:lang[1])'); + } + + if (!$language) { + $language = null; + } + + $this->_data['language'] = $language; + + return $this->_data['language']; + } + + /** + * Get the feed image + * + * @return array|null + */ + public function getImage() + { + if (array_key_exists('image', $this->_data)) { + return $this->_data['image']; + } + + $imageUrl = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:logo)'); + + if (!$imageUrl) { + $image = null; + } else { + $image = array('uri'=>$imageUrl); + } + + $this->_data['image'] = $image; + + return $this->_data['image']; + } + + /** + * Get the feed image + * + * @return array|null + */ + public function getIcon() + { + if (array_key_exists('icon', $this->_data)) { + return $this->_data['icon']; + } + + $imageUrl = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:icon)'); + + if (!$imageUrl) { + $image = null; + } else { + $image = array('uri'=>$imageUrl); + } + + $this->_data['icon'] = $image; + + return $this->_data['icon']; + } + + /** + * Get the base URI of the feed (if set). + * + * @return string|null + */ + public function getBaseUrl() + { + if (array_key_exists('baseUrl', $this->_data)) { + return $this->_data['baseUrl']; + } + + $baseUrl = $this->_xpath->evaluate('string(//@xml:base[1])'); + + if (!$baseUrl) { + $baseUrl = null; + } + $this->_data['baseUrl'] = $baseUrl; + + return $this->_data['baseUrl']; + } + + /** + * Get a link to the source website + * + * @return string|null + */ + public function getLink() + { + if (array_key_exists('link', $this->_data)) { + return $this->_data['link']; + } + + $link = null; + + $list = $this->_xpath->query( + $this->getXpathPrefix() . '/atom:link[@rel="alternate"]/@href' . '|' . + $this->getXpathPrefix() . '/atom:link[not(@rel)]/@href' + ); + + if ($list->length) { + $link = $list->item(0)->nodeValue; + $link = $this->_absolutiseUri($link); + } + + $this->_data['link'] = $link; + + return $this->_data['link']; + } + + /** + * Get a link to the feed's XML Url + * + * @return string|null + */ + public function getFeedLink() + { + if (array_key_exists('feedlink', $this->_data)) { + return $this->_data['feedlink']; + } + + $link = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:link[@rel="self"]/@href)'); + + $link = $this->_absolutiseUri($link); + + $this->_data['feedlink'] = $link; + + return $this->_data['feedlink']; + } + + /** + * Get an array of any supported Pusubhubbub endpoints + * + * @return array|null + */ + public function getHubs() + { + if (array_key_exists('hubs', $this->_data)) { + return $this->_data['hubs']; + } + $hubs = array(); + + $list = $this->_xpath->query($this->getXpathPrefix() + . '//atom:link[@rel="hub"]/@href'); + + if ($list->length) { + foreach ($list as $uri) { + $hubs[] = $this->_absolutiseUri($uri->nodeValue); + } + } else { + $hubs = null; + } + + $this->_data['hubs'] = $hubs; + + return $this->_data['hubs']; + } + + /** + * Get the feed title + * + * @return string|null + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/atom:title)'); + + if (!$title) { + $title = null; + } + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * Get all categories + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + if ($this->getType() == Zend_Feed_Reader::TYPE_ATOM_10) { + $list = $this->_xpath->query($this->getXpathPrefix() . '/atom:category'); + } else { + /** + * Since Atom 0.3 did not support categories, it would have used the + * Dublin Core extension. However there is a small possibility Atom 0.3 + * may have been retrofittied to use Atom 1.0 instead. + */ + $this->_xpath->registerNamespace('atom10', Zend_Feed_Reader::NAMESPACE_ATOM_10); + $list = $this->_xpath->query($this->getXpathPrefix() . '/atom10:category'); + } + + if ($list->length) { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + foreach ($list as $category) { + $categoryCollection[] = array( + 'term' => $category->getAttribute('term'), + 'scheme' => $category->getAttribute('scheme'), + 'label' => $category->getAttribute('label') + ); + } + } else { + return new Zend_Feed_Reader_Collection_Category; + } + + $this->_data['categories'] = $categoryCollection; + + return $this->_data['categories']; + } + + /** + * Get an author entry in RSS format + * + * @param DOMElement $element + * @return string + */ + protected function _getAuthor(DOMElement $element) + { + $author = array(); + + $emailNode = $element->getElementsByTagName('email'); + $nameNode = $element->getElementsByTagName('name'); + $uriNode = $element->getElementsByTagName('uri'); + + if ($emailNode->length && strlen($emailNode->item(0)->nodeValue) > 0) { + $author['email'] = $emailNode->item(0)->nodeValue; + } + + if ($nameNode->length && strlen($nameNode->item(0)->nodeValue) > 0) { + $author['name'] = $nameNode->item(0)->nodeValue; + } + + if ($uriNode->length && strlen($uriNode->item(0)->nodeValue) > 0) { + $author['uri'] = $uriNode->item(0)->nodeValue; + } + + if (empty($author)) { + return null; + } + return $author; + } + + /** + * Attempt to absolutise the URI, i.e. if a relative URI apply the + * xml:base value as a prefix to turn into an absolute URI. + */ + protected function _absolutiseUri($link) + { + if (!Zend_Uri::check($link)) { + if ($this->getBaseUrl() !== null) { + $link = $this->getBaseUrl() . $link; + if (!Zend_Uri::check($link)) { + $link = null; + } + } + } + return $link; + } + + /** + * Register the default namespaces for the current feed format + */ + protected function _registerNamespaces() + { + if ($this->getType() == Zend_Feed_Reader::TYPE_ATOM_10 + || $this->getType() == Zend_Feed_Reader::TYPE_ATOM_03 + ) { + return; // pre-registered at Feed level + } + $atomDetected = $this->_getAtomType(); + switch ($atomDetected) { + case Zend_Feed_Reader::TYPE_ATOM_03: + $this->_xpath->registerNamespace('atom', Zend_Feed_Reader::NAMESPACE_ATOM_03); + break; + default: + $this->_xpath->registerNamespace('atom', Zend_Feed_Reader::NAMESPACE_ATOM_10); + break; + } + } + + /** + * Detect the presence of any Atom namespaces in use + */ + protected function _getAtomType() + { + $dom = $this->getDomDocument(); + $prefixAtom03 = $dom->lookupPrefix(Zend_Feed_Reader::NAMESPACE_ATOM_03); + $prefixAtom10 = $dom->lookupPrefix(Zend_Feed_Reader::NAMESPACE_ATOM_10); + if ($dom->isDefaultNamespace(Zend_Feed_Reader::NAMESPACE_ATOM_10) + || !empty($prefixAtom10)) { + return Zend_Feed_Reader::TYPE_ATOM_10; + } + if ($dom->isDefaultNamespace(Zend_Feed_Reader::NAMESPACE_ATOM_03) + || !empty($prefixAtom03)) { + return Zend_Feed_Reader::TYPE_ATOM_03; + } + } +} diff --git a/library/Zend/Feed/Reader/Extension/Content/Entry.php b/library/Zend/Feed/Reader/Extension/Content/Entry.php new file mode 100755 index 000000000..b3bd497ed --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Content/Entry.php @@ -0,0 +1,61 @@ +getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090 + ) { + $content = $this->_xpath->evaluate('string('.$this->getXpathPrefix().'/content:encoded)'); + } else { + $content = $this->_xpath->evaluate('string('.$this->getXpathPrefix().'/content:encoded)'); + } + return $content; + } + + /** + * Register RSS Content Module namespace + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/CreativeCommons/Entry.php b/library/Zend/Feed/Reader/Extension/CreativeCommons/Entry.php new file mode 100755 index 000000000..196220259 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/CreativeCommons/Entry.php @@ -0,0 +1,97 @@ +getLicenses(); + + if (isset($licenses[$index])) { + return $licenses[$index]; + } + + return null; + } + + /** + * Get the entry licenses + * + * @return array + */ + public function getLicenses() + { + $name = 'licenses'; + if (array_key_exists($name, $this->_data)) { + return $this->_data[$name]; + } + + $licenses = array(); + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//cc:license'); + + if ($list->length) { + foreach ($list as $license) { + $licenses[] = $license->nodeValue; + } + + $licenses = array_unique($licenses); + } else { + $cc = new Zend_Feed_Reader_Extension_CreativeCommons_Feed( + $this->_domDocument, $this->_data['type'], $this->_xpath + ); + $licenses = $cc->getLicenses(); + } + + $this->_data[$name] = $licenses; + + return $this->_data[$name]; + } + + /** + * Register Creative Commons namespaces + * + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('cc', 'http://backend.userland.com/creativeCommonsRssModule'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/CreativeCommons/Feed.php b/library/Zend/Feed/Reader/Extension/CreativeCommons/Feed.php new file mode 100755 index 000000000..dc42486c9 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/CreativeCommons/Feed.php @@ -0,0 +1,89 @@ +getLicenses(); + + if (isset($licenses[$index])) { + return $licenses[$index]; + } + + return null; + } + + /** + * Get the entry licenses + * + * @return array + */ + public function getLicenses() + { + $name = 'licenses'; + if (array_key_exists($name, $this->_data)) { + return $this->_data[$name]; + } + + $licenses = array(); + $list = $this->_xpath->evaluate('channel/cc:license'); + + if ($list->length) { + foreach ($list as $license) { + $licenses[] = $license->nodeValue; + } + + $licenses = array_unique($licenses); + } + + $this->_data[$name] = $licenses; + + return $this->_data[$name]; + } + + /** + * Register Creative Commons namespaces + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('cc', 'http://backend.userland.com/creativeCommonsRssModule'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/DublinCore/Entry.php b/library/Zend/Feed/Reader/Extension/DublinCore/Entry.php new file mode 100755 index 000000000..35f94e77c --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/DublinCore/Entry.php @@ -0,0 +1,266 @@ +getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $authors = array(); + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc11:creator'); + + if (!$list->length) { + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc10:creator'); + } + if (!$list->length) { + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc11:publisher'); + + if (!$list->length) { + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc10:publisher'); + } + } + + if ($list->length) { + foreach ($list as $author) { + $authors[] = array( + 'name' => $author->nodeValue + ); + } + $authors = new Zend_Feed_Reader_Collection_Author( + Zend_Feed_Reader::arrayUnique($authors) + ); + } else { + $authors = null; + } + + $this->_data['authors'] = $authors; + + return $this->_data['authors']; + } + + /** + * Get categories (subjects under DC) + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc11:subject'); + + if (!$list->length) { + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc10:subject'); + } + + if ($list->length) { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + foreach ($list as $category) { + $categoryCollection[] = array( + 'term' => $category->nodeValue, + 'scheme' => null, + 'label' => $category->nodeValue, + ); + } + } else { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + } + + $this->_data['categories'] = $categoryCollection; + return $this->_data['categories']; + } + + + /** + * Get the entry content + * + * @return string + */ + public function getContent() + { + return $this->getDescription(); + } + + /** + * Get the entry description + * + * @return string + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = null; + $description = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:description)'); + + if (!$description) { + $description = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:description)'); + } + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the entry ID + * + * @return string + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = null; + $id = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:identifier)'); + + if (!$id) { + $id = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:identifier)'); + } + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get the entry title + * + * @return string + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = null; + $title = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:title)'); + + if (!$title) { + $title = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:title)'); + } + + if (!$title) { + $title = null; + } + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * + * + * @return Zend_Date|null + */ + public function getDate() + { + if (array_key_exists('date', $this->_data)) { + return $this->_data['date']; + } + + $d = null; + $date = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:date)'); + + if (!$date) { + $date = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:date)'); + } + + if ($date) { + $d = new Zend_Date; + $d->set($date, Zend_Date::ISO_8601); + } + + $this->_data['date'] = $d; + + return $this->_data['date']; + } + + /** + * Register DC namespaces + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('dc10', 'http://purl.org/dc/elements/1.0/'); + $this->_xpath->registerNamespace('dc11', 'http://purl.org/dc/elements/1.1/'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/DublinCore/Feed.php b/library/Zend/Feed/Reader/Extension/DublinCore/Feed.php new file mode 100755 index 000000000..168235fc2 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/DublinCore/Feed.php @@ -0,0 +1,309 @@ +getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $authors = array(); + $list = $this->_xpath->query('//dc11:creator'); + + if (!$list->length) { + $list = $this->_xpath->query('//dc10:creator'); + } + if (!$list->length) { + $list = $this->_xpath->query('//dc11:publisher'); + + if (!$list->length) { + $list = $this->_xpath->query('//dc10:publisher'); + } + } + + if ($list->length) { + foreach ($list as $author) { + $authors[] = array( + 'name' => $author->nodeValue + ); + } + $authors = new Zend_Feed_Reader_Collection_Author( + Zend_Feed_Reader::arrayUnique($authors) + ); + } else { + $authors = null; + } + + $this->_data['authors'] = $authors; + + return $this->_data['authors']; + } + + /** + * Get the copyright entry + * + * @return string|null + */ + public function getCopyright() + { + if (array_key_exists('copyright', $this->_data)) { + return $this->_data['copyright']; + } + + $copyright = null; + $copyright = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:rights)'); + + if (!$copyright) { + $copyright = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:rights)'); + } + + if (!$copyright) { + $copyright = null; + } + + $this->_data['copyright'] = $copyright; + + return $this->_data['copyright']; + } + + /** + * Get the feed description + * + * @return string|null + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = null; + $description = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:description)'); + + if (!$description) { + $description = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:description)'); + } + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the feed ID + * + * @return string|null + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = null; + $id = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:identifier)'); + + if (!$id) { + $id = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:identifier)'); + } + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get the feed language + * + * @return string|null + */ + public function getLanguage() + { + if (array_key_exists('language', $this->_data)) { + return $this->_data['language']; + } + + $language = null; + $language = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:language)'); + + if (!$language) { + $language = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:language)'); + } + + if (!$language) { + $language = null; + } + + $this->_data['language'] = $language; + + return $this->_data['language']; + } + + /** + * Get the feed title + * + * @return string|null + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = null; + $title = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:title)'); + + if (!$title) { + $title = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:title)'); + } + + if (!$title) { + $title = null; + } + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * + * + * @return Zend_Date|null + */ + public function getDate() + { + if (array_key_exists('date', $this->_data)) { + return $this->_data['date']; + } + + $d = null; + $date = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc11:date)'); + + if (!$date) { + $date = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/dc10:date)'); + } + + if ($date) { + $d = new Zend_Date; + $d->set($date, Zend_Date::ISO_8601); + } + + $this->_data['date'] = $d; + + return $this->_data['date']; + } + + /** + * Get categories (subjects under DC) + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc11:subject'); + + if (!$list->length) { + $list = $this->_xpath->evaluate($this->getXpathPrefix() . '//dc10:subject'); + } + + if ($list->length) { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + foreach ($list as $category) { + $categoryCollection[] = array( + 'term' => $category->nodeValue, + 'scheme' => null, + 'label' => $category->nodeValue, + ); + } + } else { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + } + + $this->_data['categories'] = $categoryCollection; + return $this->_data['categories']; + } + + /** + * Register the default namespaces for the current feed format + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('dc10', 'http://purl.org/dc/elements/1.0/'); + $this->_xpath->registerNamespace('dc11', 'http://purl.org/dc/elements/1.1/'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/EntryAbstract.php b/library/Zend/Feed/Reader/Extension/EntryAbstract.php new file mode 100755 index 000000000..6b1cda623 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/EntryAbstract.php @@ -0,0 +1,200 @@ +_entry = $entry; + $this->_entryKey = $entryKey; + $this->_domDocument = $entry->ownerDocument; + + if ($type !== null) { + $this->_data['type'] = $type; + } else { + $this->_data['type'] = Zend_Feed_Reader::detectType($entry->ownerDocument, true); + } + // set the XPath query prefix for the entry being queried + if ($this->getType() == Zend_Feed_Reader::TYPE_RSS_10 + || $this->getType() == Zend_Feed_Reader::TYPE_RSS_090 + ) { + $this->setXpathPrefix('//rss:item[' . ($this->_entryKey+1) . ']'); + } elseif ($this->getType() == Zend_Feed_Reader::TYPE_ATOM_10 + || $this->getType() == Zend_Feed_Reader::TYPE_ATOM_03 + ) { + $this->setXpathPrefix('//atom:entry[' . ($this->_entryKey+1) . ']'); + } else { + $this->setXpathPrefix('//item[' . ($this->_entryKey+1) . ']'); + } + } + + /** + * Get the DOM + * + * @return DOMDocument + */ + public function getDomDocument() + { + return $this->_domDocument; + } + + /** + * Get the Entry's encoding + * + * @return string + */ + public function getEncoding() + { + $assumed = $this->getDomDocument()->encoding; + return $assumed; + } + + /** + * Get the entry type + * + * @return string + */ + public function getType() + { + return $this->_data['type']; + } + + /** + * Set the XPath query + * + * @param DOMXPath $xpath + * @return Zend_Feed_Reader_Extension_EntryAbstract + */ + public function setXpath(DOMXPath $xpath) + { + $this->_xpath = $xpath; + $this->_registerNamespaces(); + return $this; + } + + /** + * Get the XPath query object + * + * @return DOMXPath + */ + public function getXpath() + { + if (!$this->_xpath) { + $this->setXpath(new DOMXPath($this->getDomDocument())); + } + return $this->_xpath; + } + + /** + * Serialize the entry to an array + * + * @return array + */ + public function toArray() + { + return $this->_data; + } + + /** + * Get the XPath prefix + * + * @return string + */ + public function getXpathPrefix() + { + return $this->_xpathPrefix; + } + + /** + * Set the XPath prefix + * + * @param string $prefix + * @return Zend_Feed_Reader_Extension_EntryAbstract + */ + public function setXpathPrefix($prefix) + { + $this->_xpathPrefix = $prefix; + return $this; + } + + /** + * Register XML namespaces + * + * @return void + */ + protected abstract function _registerNamespaces(); +} diff --git a/library/Zend/Feed/Reader/Extension/FeedAbstract.php b/library/Zend/Feed/Reader/Extension/FeedAbstract.php new file mode 100755 index 000000000..93b0b579e --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/FeedAbstract.php @@ -0,0 +1,189 @@ +_domDocument = $dom; + + if ($type !== null) { + $this->_data['type'] = $type; + } else { + $this->_data['type'] = Zend_Feed_Reader::detectType($dom); + } + + if ($xpath !== null) { + $this->_xpath = $xpath; + } else { + $this->_xpath = new DOMXPath($this->_domDocument); + } + + $this->_registerNamespaces(); + } + + /** + * Get the DOM + * + * @return DOMDocument + */ + public function getDomDocument() + { + return $this->_domDocument; + } + + /** + * Get the Feed's encoding + * + * @return string + */ + public function getEncoding() + { + $assumed = $this->getDomDocument()->encoding; + return $assumed; + } + + /** + * Get the feed type + * + * @return string + */ + public function getType() + { + return $this->_data['type']; + } + + + /** + * Return the feed as an array + * + * @return array + */ + public function toArray() // untested + { + return $this->_data; + } + + /** + * Set the XPath query + * + * @param DOMXPath $xpath + * @return Zend_Feed_Reader_Extension_EntryAbstract + */ + public function setXpath(DOMXPath $xpath) + { + $this->_xpath = $xpath; + $this->_registerNamespaces(); + return $this; + } + + /** + * Get the DOMXPath object + * + * @return string + */ + public function getXpath() + { + return $this->_xpath; + } + + /** + * Get the XPath prefix + * + * @return string + */ + public function getXpathPrefix() + { + return $this->_xpathPrefix; + } + + /** + * Set the XPath prefix + * + * @return Zend_Feed_Reader_Feed_Atom + */ + public function setXpathPrefix($prefix) + { + $this->_xpathPrefix = $prefix; + } + + /** + * Register the default namespaces for the current feed format + */ + abstract protected function _registerNamespaces(); +} diff --git a/library/Zend/Feed/Reader/Extension/Podcast/Entry.php b/library/Zend/Feed/Reader/Extension/Podcast/Entry.php new file mode 100755 index 000000000..46df21adf --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Podcast/Entry.php @@ -0,0 +1,202 @@ +_data['author'])) { + return $this->_data['author']; + } + + $author = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)'); + + if (!$author) { + $author = null; + } + + $this->_data['author'] = $author; + + return $this->_data['author']; + } + + /** + * Get the entry block + * + * @return string + */ + public function getBlock() + { + if (isset($this->_data['block'])) { + return $this->_data['block']; + } + + $block = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)'); + + if (!$block) { + $block = null; + } + + $this->_data['block'] = $block; + + return $this->_data['block']; + } + + /** + * Get the entry duration + * + * @return string + */ + public function getDuration() + { + if (isset($this->_data['duration'])) { + return $this->_data['duration']; + } + + $duration = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:duration)'); + + if (!$duration) { + $duration = null; + } + + $this->_data['duration'] = $duration; + + return $this->_data['duration']; + } + + /** + * Get the entry explicit + * + * @return string + */ + public function getExplicit() + { + if (isset($this->_data['explicit'])) { + return $this->_data['explicit']; + } + + $explicit = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)'); + + if (!$explicit) { + $explicit = null; + } + + $this->_data['explicit'] = $explicit; + + return $this->_data['explicit']; + } + + /** + * Get the entry keywords + * + * @return string + */ + public function getKeywords() + { + if (isset($this->_data['keywords'])) { + return $this->_data['keywords']; + } + + $keywords = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)'); + + if (!$keywords) { + $keywords = null; + } + + $this->_data['keywords'] = $keywords; + + return $this->_data['keywords']; + } + + /** + * Get the entry subtitle + * + * @return string + */ + public function getSubtitle() + { + if (isset($this->_data['subtitle'])) { + return $this->_data['subtitle']; + } + + $subtitle = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)'); + + if (!$subtitle) { + $subtitle = null; + } + + $this->_data['subtitle'] = $subtitle; + + return $this->_data['subtitle']; + } + + /** + * Get the entry summary + * + * @return string + */ + public function getSummary() + { + if (isset($this->_data['summary'])) { + return $this->_data['summary']; + } + + $summary = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)'); + + if (!$summary) { + $summary = null; + } + + $this->_data['summary'] = $summary; + + return $this->_data['summary']; + } + + /** + * Register iTunes namespace + * + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/Podcast/Feed.php b/library/Zend/Feed/Reader/Extension/Podcast/Feed.php new file mode 100755 index 000000000..0cffab413 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Podcast/Feed.php @@ -0,0 +1,293 @@ +_data['author'])) { + return $this->_data['author']; + } + + $author = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:author)'); + + if (!$author) { + $author = null; + } + + $this->_data['author'] = $author; + + return $this->_data['author']; + } + + /** + * Get the entry block + * + * @return string + */ + public function getBlock() + { + if (isset($this->_data['block'])) { + return $this->_data['block']; + } + + $block = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:block)'); + + if (!$block) { + $block = null; + } + + $this->_data['block'] = $block; + + return $this->_data['block']; + } + + /** + * Get the entry category + * + * @return string + */ + public function getCategories() + { + if (isset($this->_data['categories'])) { + return $this->_data['categories']; + } + + $categoryList = $this->_xpath->query($this->getXpathPrefix() . '/itunes:category'); + + $categories = array(); + + if ($categoryList->length > 0) { + foreach ($categoryList as $node) { + $children = null; + + if ($node->childNodes->length > 0) { + $children = array(); + + foreach ($node->childNodes as $childNode) { + if (!($childNode instanceof DOMText)) { + $children[$childNode->getAttribute('text')] = null; + } + } + } + + $categories[$node->getAttribute('text')] = $children; + } + } + + + if (!$categories) { + $categories = null; + } + + $this->_data['categories'] = $categories; + + return $this->_data['categories']; + } + + /** + * Get the entry explicit + * + * @return string + */ + public function getExplicit() + { + if (isset($this->_data['explicit'])) { + return $this->_data['explicit']; + } + + $explicit = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:explicit)'); + + if (!$explicit) { + $explicit = null; + } + + $this->_data['explicit'] = $explicit; + + return $this->_data['explicit']; + } + + /** + * Get the entry image + * + * @return string + */ + public function getImage() + { + if (isset($this->_data['image'])) { + return $this->_data['image']; + } + + $image = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:image/@href)'); + + if (!$image) { + $image = null; + } + + $this->_data['image'] = $image; + + return $this->_data['image']; + } + + /** + * Get the entry keywords + * + * @return string + */ + public function getKeywords() + { + if (isset($this->_data['keywords'])) { + return $this->_data['keywords']; + } + + $keywords = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:keywords)'); + + if (!$keywords) { + $keywords = null; + } + + $this->_data['keywords'] = $keywords; + + return $this->_data['keywords']; + } + + /** + * Get the entry's new feed url + * + * @return string + */ + public function getNewFeedUrl() + { + if (isset($this->_data['new-feed-url'])) { + return $this->_data['new-feed-url']; + } + + $newFeedUrl = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:new-feed-url)'); + + if (!$newFeedUrl) { + $newFeedUrl = null; + } + + $this->_data['new-feed-url'] = $newFeedUrl; + + return $this->_data['new-feed-url']; + } + + /** + * Get the entry owner + * + * @return string + */ + public function getOwner() + { + if (isset($this->_data['owner'])) { + return $this->_data['owner']; + } + + $owner = null; + + $email = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:owner/itunes:email)'); + $name = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:owner/itunes:name)'); + + if (!empty($email)) { + $owner = $email . (empty($name) ? '' : ' (' . $name . ')'); + } else if (!empty($name)) { + $owner = $name; + } + + if (!$owner) { + $owner = null; + } + + $this->_data['owner'] = $owner; + + return $this->_data['owner']; + } + + /** + * Get the entry subtitle + * + * @return string + */ + public function getSubtitle() + { + if (isset($this->_data['subtitle'])) { + return $this->_data['subtitle']; + } + + $subtitle = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:subtitle)'); + + if (!$subtitle) { + $subtitle = null; + } + + $this->_data['subtitle'] = $subtitle; + + return $this->_data['subtitle']; + } + + /** + * Get the entry summary + * + * @return string + */ + public function getSummary() + { + if (isset($this->_data['summary'])) { + return $this->_data['summary']; + } + + $summary = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/itunes:summary)'); + + if (!$summary) { + $summary = null; + } + + $this->_data['summary'] = $summary; + + return $this->_data['summary']; + } + + /** + * Register iTunes namespace + * + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('itunes', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/Slash/Entry.php b/library/Zend/Feed/Reader/Extension/Slash/Entry.php new file mode 100755 index 000000000..866f72a30 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Slash/Entry.php @@ -0,0 +1,144 @@ +_getData('section'); + } + + /** + * Get the entry department + * + * @return string|null + */ + public function getDepartment() + { + return $this->_getData('department'); + } + + /** + * Get the entry hit_parade + * + * @return array + */ + public function getHitParade() + { + $name = 'hit_parade'; + + if (isset($this->_data[$name])) { + return $this->_data[$name]; + } + + $stringParade = $this->_getData($name); + $hitParade = array(); + + if (!empty($stringParade)) { + $stringParade = explode(',', $stringParade); + + foreach ($stringParade as $hit) + $hitParade[] = $hit + 0; //cast to integer + } + + $this->_data[$name] = $hitParade; + return $hitParade; + } + + /** + * Get the entry comments + * + * @return int + */ + public function getCommentCount() + { + $name = 'comments'; + + if (isset($this->_data[$name])) { + return $this->_data[$name]; + } + + $comments = $this->_getData($name, 'string'); + + if (!$comments) { + $this->_data[$name] = null; + return $this->_data[$name]; + } + + return $comments; + } + + /** + * Get the entry data specified by name + * @param string $name + * @param string $type + * + * @return mixed|null + */ + protected function _getData($name, $type = 'string') + { + if (array_key_exists($name, $this->_data)) { + return $this->_data[$name]; + } + + $data = $this->_xpath->evaluate($type . '(' . $this->getXpathPrefix() . '/slash10:' . $name . ')'); + + if (!$data) { + $data = null; + } + + $this->_data[$name] = $data; + + return $data; + } + + /** + * Register Slash namespaces + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('slash10', 'http://purl.org/rss/1.0/modules/slash/'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/Syndication/Feed.php b/library/Zend/Feed/Reader/Extension/Syndication/Feed.php new file mode 100755 index 000000000..a12091a5c --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Syndication/Feed.php @@ -0,0 +1,168 @@ +_getData($name); + + if ($period === null) { + $this->_data[$name] = 'daily'; + return 'daily'; //Default specified by spec + } + + switch ($period) + { + case 'hourly': + case 'daily': + case 'weekly': + case 'yearly': + return $period; + default: + throw new Zend_Feed_Exception("Feed specified invalid update period: '$period'." + . " Must be one of hourly, daily, weekly or yearly" + ); + } + } + + /** + * Get update frequency + * @return int + */ + public function getUpdateFrequency() + { + $name = 'updateFrequency'; + $freq = $this->_getData($name, 'number'); + + if (!$freq || $freq < 1) { + $this->_data[$name] = 1; + return 1; + } + + return $freq; + } + + /** + * Get update frequency as ticks + * @return int + */ + public function getUpdateFrequencyAsTicks() + { + $name = 'updateFrequency'; + $freq = $this->_getData($name, 'number'); + + if (!$freq || $freq < 1) { + $this->_data[$name] = 1; + $freq = 1; + } + + $period = $this->getUpdatePeriod(); + $ticks = 1; + + switch ($period) + { + //intentional fall through + case 'yearly': + $ticks *= 52; //TODO: fix generalisation, how? + case 'weekly': + $ticks *= 7; + case 'daily': + $ticks *= 24; + case 'hourly': + $ticks *= 3600; + break; + default: //Never arrive here, exception thrown in getPeriod() + break; + } + + return $ticks / $freq; + } + + /** + * Get update base + * + * @return Zend_Date|null + */ + public function getUpdateBase() + { + $updateBase = $this->_getData('updateBase'); + $date = null; + if ($updateBase) { + $date = new Zend_Date; + $date->set($updateBase, Zend_Date::W3C); + } + return $date; + } + + /** + * Get the entry data specified by name + * + * @param string $name + * @param string $type + * @return mixed|null + */ + private function _getData($name, $type = 'string') + { + if (array_key_exists($name, $this->_data)) { + return $this->_data[$name]; + } + + $data = $this->_xpath->evaluate($type . '(' . $this->getXpathPrefix() . '/syn10:' . $name . ')'); + + if (!$data) { + $data = null; + } + + $this->_data[$name] = $data; + + return $data; + } + + /** + * Register Syndication namespaces + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('syn10', 'http://purl.org/rss/1.0/modules/syndication/'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/Thread/Entry.php b/library/Zend/Feed/Reader/Extension/Thread/Entry.php new file mode 100755 index 000000000..3fed89ef1 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/Thread/Entry.php @@ -0,0 +1,91 @@ +_getData('total'); + } + + /** + * Get the entry data specified by name + * + * @param string $name + * @param string $type + * @return mixed|null + */ + protected function _getData($name) + { + if (array_key_exists($name, $this->_data)) { + return $this->_data[$name]; + } + + $data = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/thread10:' . $name . ')'); + + if (!$data) { + $data = null; + } + + $this->_data[$name] = $data; + + return $data; + } + + /** + * Register Atom Thread Extension 1.0 namespace + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('thread10', 'http://purl.org/syndication/thread/1.0'); + } +} diff --git a/library/Zend/Feed/Reader/Extension/WellFormedWeb/Entry.php b/library/Zend/Feed/Reader/Extension/WellFormedWeb/Entry.php new file mode 100755 index 000000000..8c893fdc8 --- /dev/null +++ b/library/Zend/Feed/Reader/Extension/WellFormedWeb/Entry.php @@ -0,0 +1,73 @@ +_data)) { + return $this->_data[$name]; + } + + $data = $this->_xpath->evaluate('string(' . $this->getXpathPrefix() . '/wfw:' . $name . ')'); + + if (!$data) { + $data = null; + } + + $this->_data[$name] = $data; + + return $data; + } + + /** + * Register Slash namespaces + * + * @return void + */ + protected function _registerNamespaces() + { + $this->_xpath->registerNamespace('wfw', 'http://wellformedweb.org/CommentAPI/'); + } +} diff --git a/library/Zend/Feed/Reader/Feed/Atom.php b/library/Zend/Feed/Reader/Feed/Atom.php new file mode 100755 index 000000000..839cdca6f --- /dev/null +++ b/library/Zend/Feed/Reader/Feed/Atom.php @@ -0,0 +1,421 @@ +getClassName('Atom_Feed'); + $this->_extensions['Atom_Feed'] = new $atomClass($dom, $this->_data['type'], $this->_xpath); + $atomClass = Zend_Feed_Reader::getPluginLoader()->getClassName('DublinCore_Feed'); + $this->_extensions['DublinCore_Feed'] = new $atomClass($dom, $this->_data['type'], $this->_xpath); + foreach ($this->_extensions as $extension) { + $extension->setXpathPrefix('/atom:feed'); + } + } + + /** + * Get a single author + * + * @param int $index + * @return string|null + */ + public function getAuthor($index = 0) + { + $authors = $this->getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $authors = $this->getExtension('Atom')->getAuthors(); + + $this->_data['authors'] = $authors; + + return $this->_data['authors']; + } + + /** + * Get the copyright entry + * + * @return string|null + */ + public function getCopyright() + { + if (array_key_exists('copyright', $this->_data)) { + return $this->_data['copyright']; + } + + $copyright = $this->getExtension('Atom')->getCopyright(); + + if (!$copyright) { + $copyright = null; + } + + $this->_data['copyright'] = $copyright; + + return $this->_data['copyright']; + } + + /** + * Get the feed creation date + * + * @return string|null + */ + public function getDateCreated() + { + if (array_key_exists('datecreated', $this->_data)) { + return $this->_data['datecreated']; + } + + $dateCreated = $this->getExtension('Atom')->getDateCreated(); + + if (!$dateCreated) { + $dateCreated = null; + } + + $this->_data['datecreated'] = $dateCreated; + + return $this->_data['datecreated']; + } + + /** + * Get the feed modification date + * + * @return string|null + */ + public function getDateModified() + { + if (array_key_exists('datemodified', $this->_data)) { + return $this->_data['datemodified']; + } + + $dateModified = $this->getExtension('Atom')->getDateModified(); + + if (!$dateModified) { + $dateModified = null; + } + + $this->_data['datemodified'] = $dateModified; + + return $this->_data['datemodified']; + } + + /** + * Get the feed lastBuild date. This is not implemented in Atom. + * + * @return string|null + */ + public function getLastBuildDate() + { + return null; + } + + /** + * Get the feed description + * + * @return string|null + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = $this->getExtension('Atom')->getDescription(); + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the feed generator entry + * + * @return string|null + */ + public function getGenerator() + { + if (array_key_exists('generator', $this->_data)) { + return $this->_data['generator']; + } + + $generator = $this->getExtension('Atom')->getGenerator(); + + $this->_data['generator'] = $generator; + + return $this->_data['generator']; + } + + /** + * Get the feed ID + * + * @return string|null + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = $this->getExtension('Atom')->getId(); + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get the feed language + * + * @return string|null + */ + public function getLanguage() + { + if (array_key_exists('language', $this->_data)) { + return $this->_data['language']; + } + + $language = $this->getExtension('Atom')->getLanguage(); + + if (!$language) { + $language = $this->_xpath->evaluate('string(//@xml:lang[1])'); + } + + if (!$language) { + $language = null; + } + + $this->_data['language'] = $language; + + return $this->_data['language']; + } + + /** + * Get a link to the source website + * + * @return string|null + */ + public function getBaseUrl() + { + if (array_key_exists('baseUrl', $this->_data)) { + return $this->_data['baseUrl']; + } + + $baseUrl = $this->getExtension('Atom')->getBaseUrl(); + + $this->_data['baseUrl'] = $baseUrl; + + return $this->_data['baseUrl']; + } + + /** + * Get a link to the source website + * + * @return string|null + */ + public function getLink() + { + if (array_key_exists('link', $this->_data)) { + return $this->_data['link']; + } + + $link = $this->getExtension('Atom')->getLink(); + + $this->_data['link'] = $link; + + return $this->_data['link']; + } + + /** + * Get feed image data + * + * @return array|null + */ + public function getImage() + { + if (array_key_exists('image', $this->_data)) { + return $this->_data['image']; + } + + $link = $this->getExtension('Atom')->getImage(); + + $this->_data['image'] = $link; + + return $this->_data['image']; + } + + /** + * Get a link to the feed's XML Url + * + * @return string|null + */ + public function getFeedLink() + { + if (array_key_exists('feedlink', $this->_data)) { + return $this->_data['feedlink']; + } + + $link = $this->getExtension('Atom')->getFeedLink(); + + if ($link === null || empty($link)) { + $link = $this->getOriginalSourceUri(); + } + + $this->_data['feedlink'] = $link; + + return $this->_data['feedlink']; + } + + /** + * Get the feed title + * + * @return string|null + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = $this->getExtension('Atom')->getTitle(); + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * Get an array of any supported Pusubhubbub endpoints + * + * @return array|null + */ + public function getHubs() + { + if (array_key_exists('hubs', $this->_data)) { + return $this->_data['hubs']; + } + + $hubs = $this->getExtension('Atom')->getHubs(); + + $this->_data['hubs'] = $hubs; + + return $this->_data['hubs']; + } + + /** + * Get all categories + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + $categoryCollection = $this->getExtension('Atom')->getCategories(); + + if (count($categoryCollection) == 0) { + $categoryCollection = $this->getExtension('DublinCore')->getCategories(); + } + + $this->_data['categories'] = $categoryCollection; + + return $this->_data['categories']; + } + + /** + * Read all entries to the internal entries array + * + * @return void + */ + protected function _indexEntries() + { + if ($this->getType() == Zend_Feed_Reader::TYPE_ATOM_10 || + $this->getType() == Zend_Feed_Reader::TYPE_ATOM_03) { + $entries = array(); + $entries = $this->_xpath->evaluate('//atom:entry'); + + foreach($entries as $index=>$entry) { + $this->_entries[$index] = $entry; + } + } + } + + /** + * Register the default namespaces for the current feed format + * + */ + protected function _registerNamespaces() + { + switch ($this->_data['type']) { + case Zend_Feed_Reader::TYPE_ATOM_03: + $this->_xpath->registerNamespace('atom', Zend_Feed_Reader::NAMESPACE_ATOM_03); + break; + case Zend_Feed_Reader::TYPE_ATOM_10: + default: + $this->_xpath->registerNamespace('atom', Zend_Feed_Reader::NAMESPACE_ATOM_10); + } + } +} diff --git a/library/Zend/Feed/Reader/Feed/Atom/Source.php b/library/Zend/Feed/Reader/Feed/Atom/Source.php new file mode 100755 index 000000000..744d3f33b --- /dev/null +++ b/library/Zend/Feed/Reader/Feed/Atom/Source.php @@ -0,0 +1,102 @@ +_domDocument = $source->ownerDocument; + $this->_xpath = new DOMXPath($this->_domDocument); + $this->_data['type'] = $type; + $this->_registerNamespaces(); + $this->_loadExtensions(); + + $atomClass = Zend_Feed_Reader::getPluginLoader()->getClassName('Atom_Feed'); + $this->_extensions['Atom_Feed'] = new $atomClass($this->_domDocument, $this->_data['type'], $this->_xpath); + $atomClass = Zend_Feed_Reader::getPluginLoader()->getClassName('DublinCore_Feed'); + $this->_extensions['DublinCore_Feed'] = new $atomClass($this->_domDocument, $this->_data['type'], $this->_xpath); + foreach ($this->_extensions as $extension) { + $extension->setXpathPrefix(rtrim($xpathPrefix, '/') . '/atom:source'); + } + } + + /** + * Since this is not an Entry carrier but a vehicle for Feed metadata, any + * applicable Entry methods are stubbed out and do nothing. + */ + + /** + * @return void + */ + public function count() {} + + /** + * @return void + */ + public function current() {} + + /** + * @return void + */ + public function key() {} + + /** + * @return void + */ + public function next() {} + + /** + * @return void + */ + public function rewind() {} + + /** + * @return void + */ + public function valid() {} + + /** + * @return void + */ + protected function _indexEntries() {} + +} diff --git a/library/Zend/Feed/Reader/Feed/Rss.php b/library/Zend/Feed/Reader/Feed/Rss.php new file mode 100755 index 000000000..2ec8a7084 --- /dev/null +++ b/library/Zend/Feed/Reader/Feed/Rss.php @@ -0,0 +1,733 @@ +getClassName('DublinCore_Feed'); + $this->_extensions['DublinCore_Feed'] = new $dublinCoreClass($dom, $this->_data['type'], $this->_xpath); + $atomClass = Zend_Feed_Reader::getPluginLoader()->getClassName('Atom_Feed'); + $this->_extensions['Atom_Feed'] = new $atomClass($dom, $this->_data['type'], $this->_xpath); + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $xpathPrefix = '/rss/channel'; + } else { + $xpathPrefix = '/rdf:RDF/rss:channel'; + } + foreach ($this->_extensions as $extension) { + $extension->setXpathPrefix($xpathPrefix); + } + } + + /** + * Get a single author + * + * @param int $index + * @return string|null + */ + public function getAuthor($index = 0) + { + $authors = $this->getAuthors(); + + if (isset($authors[$index])) { + return $authors[$index]; + } + + return null; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (array_key_exists('authors', $this->_data)) { + return $this->_data['authors']; + } + + $authors = array(); + $authors_dc = $this->getExtension('DublinCore')->getAuthors(); + if (!empty($authors_dc)) { + foreach ($authors_dc as $author) { + $authors[] = array( + 'name' => $author['name'] + ); + } + } + + /** + * Technically RSS doesn't specific author element use at the feed level + * but it's supported on a "just in case" basis. + */ + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 + && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $list = $this->_xpath->query('//author'); + } else { + $list = $this->_xpath->query('//rss:author'); + } + if ($list->length) { + foreach ($list as $author) { + $string = trim($author->nodeValue); + $email = null; + $name = null; + $data = array(); + // Pretty rough parsing - but it's a catchall + if (preg_match("/^.*@[^ ]*/", $string, $matches)) { + $data['email'] = trim($matches[0]); + if (preg_match("/\((.*)\)$/", $string, $matches)) { + $data['name'] = $matches[1]; + } + $authors[] = $data; + } + } + } + + if (count($authors) == 0) { + $authors = $this->getExtension('Atom')->getAuthors(); + } else { + $authors = new Zend_Feed_Reader_Collection_Author( + Zend_Feed_Reader::arrayUnique($authors) + ); + } + + if ($authors !== null && count($authors) == 0) { + $authors = null; + } + + $this->_data['authors'] = $authors; + + return $this->_data['authors']; + } + + /** + * Get the copyright entry + * + * @return string|null + */ + public function getCopyright() + { + if (array_key_exists('copyright', $this->_data)) { + return $this->_data['copyright']; + } + + $copyright = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $copyright = $this->_xpath->evaluate('string(/rss/channel/copyright)'); + } + + if (!$copyright && $this->getExtension('DublinCore') !== null) { + $copyright = $this->getExtension('DublinCore')->getCopyright(); + } + + if (empty($copyright)) { + $copyright = $this->getExtension('Atom')->getCopyright(); + } + + if (!$copyright) { + $copyright = null; + } + + $this->_data['copyright'] = $copyright; + + return $this->_data['copyright']; + } + + /** + * Get the feed creation date + * + * @return string|null + */ + public function getDateCreated() + { + return $this->getDateModified(); + } + + /** + * Get the feed modification date + * + * @return Zend_Date + */ + public function getDateModified() + { + if (array_key_exists('datemodified', $this->_data)) { + return $this->_data['datemodified']; + } + + $dateModified = null; + $date = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $dateModified = $this->_xpath->evaluate('string(/rss/channel/pubDate)'); + if (!$dateModified) { + $dateModified = $this->_xpath->evaluate('string(/rss/channel/lastBuildDate)'); + } + if ($dateModified) { + $dateModifiedParsed = strtotime($dateModified); + if ($dateModifiedParsed) { + $date = new Zend_Date($dateModifiedParsed); + } else { + $dateStandards = array(Zend_Date::RSS, Zend_Date::RFC_822, + Zend_Date::RFC_2822, Zend_Date::DATES); + $date = new Zend_Date; + foreach ($dateStandards as $standard) { + try { + $date->set($dateModified, $standard); + break; + } catch (Zend_Date_Exception $e) { + if ($standard == Zend_Date::DATES) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception( + 'Could not load date due to unrecognised' + .' format (should follow RFC 822 or 2822):' + . $e->getMessage(), + 0, $e + ); + } + } + } + } + } + } + + if (!$date) { + $date = $this->getExtension('DublinCore')->getDate(); + } + + if (!$date) { + $date = $this->getExtension('Atom')->getDateModified(); + } + + if (!$date) { + $date = null; + } + + $this->_data['datemodified'] = $date; + + return $this->_data['datemodified']; + } + + /** + * Get the feed lastBuild date + * + * @return Zend_Date + */ + public function getLastBuildDate() + { + if (array_key_exists('lastBuildDate', $this->_data)) { + return $this->_data['lastBuildDate']; + } + + $lastBuildDate = null; + $date = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $lastBuildDate = $this->_xpath->evaluate('string(/rss/channel/lastBuildDate)'); + if ($lastBuildDate) { + $lastBuildDateParsed = strtotime($lastBuildDate); + if ($lastBuildDateParsed) { + $date = new Zend_Date($lastBuildDateParsed); + } else { + $dateStandards = array(Zend_Date::RSS, Zend_Date::RFC_822, + Zend_Date::RFC_2822, Zend_Date::DATES); + $date = new Zend_Date; + foreach ($dateStandards as $standard) { + try { + $date->set($lastBuildDate, $standard); + break; + } catch (Zend_Date_Exception $e) { + if ($standard == Zend_Date::DATES) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception( + 'Could not load date due to unrecognised' + .' format (should follow RFC 822 or 2822):' + . $e->getMessage(), + 0, $e + ); + } + } + } + } + } + } + + if (!$date) { + $date = null; + } + + $this->_data['lastBuildDate'] = $date; + + return $this->_data['lastBuildDate']; + } + + /** + * Get the feed description + * + * @return string|null + */ + public function getDescription() + { + if (array_key_exists('description', $this->_data)) { + return $this->_data['description']; + } + + $description = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $description = $this->_xpath->evaluate('string(/rss/channel/description)'); + } else { + $description = $this->_xpath->evaluate('string(/rdf:RDF/rss:channel/rss:description)'); + } + + if (!$description && $this->getExtension('DublinCore') !== null) { + $description = $this->getExtension('DublinCore')->getDescription(); + } + + if (empty($description)) { + $description = $this->getExtension('Atom')->getDescription(); + } + + if (!$description) { + $description = null; + } + + $this->_data['description'] = $description; + + return $this->_data['description']; + } + + /** + * Get the feed ID + * + * @return string|null + */ + public function getId() + { + if (array_key_exists('id', $this->_data)) { + return $this->_data['id']; + } + + $id = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $id = $this->_xpath->evaluate('string(/rss/channel/guid)'); + } + + if (!$id && $this->getExtension('DublinCore') !== null) { + $id = $this->getExtension('DublinCore')->getId(); + } + + if (empty($id)) { + $id = $this->getExtension('Atom')->getId(); + } + + if (!$id) { + if ($this->getLink()) { + $id = $this->getLink(); + } elseif ($this->getTitle()) { + $id = $this->getTitle(); + } else { + $id = null; + } + } + + $this->_data['id'] = $id; + + return $this->_data['id']; + } + + /** + * Get the feed image data + * + * @return array|null + */ + public function getImage() + { + if (array_key_exists('image', $this->_data)) { + return $this->_data['image']; + } + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $list = $this->_xpath->query('/rss/channel/image'); + $prefix = '/rss/channel/image[1]'; + } else { + $list = $this->_xpath->query('/rdf:RDF/rss:channel/rss:image'); + $prefix = '/rdf:RDF/rss:channel/rss:image[1]'; + } + if ($list->length > 0) { + $image = array(); + $value = $this->_xpath->evaluate('string(' . $prefix . '/url)'); + if ($value) { + $image['uri'] = $value; + } + $value = $this->_xpath->evaluate('string(' . $prefix . '/link)'); + if ($value) { + $image['link'] = $value; + } + $value = $this->_xpath->evaluate('string(' . $prefix . '/title)'); + if ($value) { + $image['title'] = $value; + } + $value = $this->_xpath->evaluate('string(' . $prefix . '/height)'); + if ($value) { + $image['height'] = $value; + } + $value = $this->_xpath->evaluate('string(' . $prefix . '/width)'); + if ($value) { + $image['width'] = $value; + } + $value = $this->_xpath->evaluate('string(' . $prefix . '/description)'); + if ($value) { + $image['description'] = $value; + } + } else { + $image = null; + } + + $this->_data['image'] = $image; + + return $this->_data['image']; + } + + /** + * Get the feed language + * + * @return string|null + */ + public function getLanguage() + { + if (array_key_exists('language', $this->_data)) { + return $this->_data['language']; + } + + $language = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $language = $this->_xpath->evaluate('string(/rss/channel/language)'); + } + + if (!$language && $this->getExtension('DublinCore') !== null) { + $language = $this->getExtension('DublinCore')->getLanguage(); + } + + if (empty($language)) { + $language = $this->getExtension('Atom')->getLanguage(); + } + + if (!$language) { + $language = $this->_xpath->evaluate('string(//@xml:lang[1])'); + } + + if (!$language) { + $language = null; + } + + $this->_data['language'] = $language; + + return $this->_data['language']; + } + + /** + * Get a link to the feed + * + * @return string|null + */ + public function getLink() + { + if (array_key_exists('link', $this->_data)) { + return $this->_data['link']; + } + + $link = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $link = $this->_xpath->evaluate('string(/rss/channel/link)'); + } else { + $link = $this->_xpath->evaluate('string(/rdf:RDF/rss:channel/rss:link)'); + } + + if (empty($link)) { + $link = $this->getExtension('Atom')->getLink(); + } + + if (!$link) { + $link = null; + } + + $this->_data['link'] = $link; + + return $this->_data['link']; + } + + /** + * Get a link to the feed XML + * + * @return string|null + */ + public function getFeedLink() + { + if (array_key_exists('feedlink', $this->_data)) { + return $this->_data['feedlink']; + } + + $link = null; + + $link = $this->getExtension('Atom')->getFeedLink(); + + if ($link === null || empty($link)) { + $link = $this->getOriginalSourceUri(); + } + + $this->_data['feedlink'] = $link; + + return $this->_data['feedlink']; + } + + /** + * Get the feed generator entry + * + * @return string|null + */ + public function getGenerator() + { + if (array_key_exists('generator', $this->_data)) { + return $this->_data['generator']; + } + + $generator = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $generator = $this->_xpath->evaluate('string(/rss/channel/generator)'); + } + + if (!$generator) { + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $generator = $this->_xpath->evaluate('string(/rss/channel/atom:generator)'); + } else { + $generator = $this->_xpath->evaluate('string(/rdf:RDF/rss:channel/atom:generator)'); + } + } + + if (empty($generator)) { + $generator = $this->getExtension('Atom')->getGenerator(); + } + + if (!$generator) { + $generator = null; + } + + $this->_data['generator'] = $generator; + + return $this->_data['generator']; + } + + /** + * Get the feed title + * + * @return string|null + */ + public function getTitle() + { + if (array_key_exists('title', $this->_data)) { + return $this->_data['title']; + } + + $title = null; + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $title = $this->_xpath->evaluate('string(/rss/channel/title)'); + } else { + $title = $this->_xpath->evaluate('string(/rdf:RDF/rss:channel/rss:title)'); + } + + if (!$title && $this->getExtension('DublinCore') !== null) { + $title = $this->getExtension('DublinCore')->getTitle(); + } + + if (!$title) { + $title = $this->getExtension('Atom')->getTitle(); + } + + if (!$title) { + $title = null; + } + + $this->_data['title'] = $title; + + return $this->_data['title']; + } + + /** + * Get an array of any supported Pusubhubbub endpoints + * + * @return array|null + */ + public function getHubs() + { + if (array_key_exists('hubs', $this->_data)) { + return $this->_data['hubs']; + } + + $hubs = $this->getExtension('Atom')->getHubs(); + + if (empty($hubs)) { + $hubs = null; + } else { + $hubs = array_unique($hubs); + } + + $this->_data['hubs'] = $hubs; + + return $this->_data['hubs']; + } + + /** + * Get all categories + * + * @return Zend_Feed_Reader_Collection_Category + */ + public function getCategories() + { + if (array_key_exists('categories', $this->_data)) { + return $this->_data['categories']; + } + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && + $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $list = $this->_xpath->query('/rss/channel//category'); + } else { + $list = $this->_xpath->query('/rdf:RDF/rss:channel//rss:category'); + } + + if ($list->length) { + $categoryCollection = new Zend_Feed_Reader_Collection_Category; + foreach ($list as $category) { + $categoryCollection[] = array( + 'term' => $category->nodeValue, + 'scheme' => $category->getAttribute('domain'), + 'label' => $category->nodeValue, + ); + } + } else { + $categoryCollection = $this->getExtension('DublinCore')->getCategories(); + } + + if (count($categoryCollection) == 0) { + $categoryCollection = $this->getExtension('Atom')->getCategories(); + } + + $this->_data['categories'] = $categoryCollection; + + return $this->_data['categories']; + } + + /** + * Read all entries to the internal entries array + * + */ + protected function _indexEntries() + { + $entries = array(); + + if ($this->getType() !== Zend_Feed_Reader::TYPE_RSS_10 && $this->getType() !== Zend_Feed_Reader::TYPE_RSS_090) { + $entries = $this->_xpath->evaluate('//item'); + } else { + $entries = $this->_xpath->evaluate('//rss:item'); + } + + foreach($entries as $index=>$entry) { + $this->_entries[$index] = $entry; + } + } + + /** + * Register the default namespaces for the current feed format + * + */ + protected function _registerNamespaces() + { + switch ($this->_data['type']) { + case Zend_Feed_Reader::TYPE_RSS_10: + $this->_xpath->registerNamespace('rdf', Zend_Feed_Reader::NAMESPACE_RDF); + $this->_xpath->registerNamespace('rss', Zend_Feed_Reader::NAMESPACE_RSS_10); + break; + + case Zend_Feed_Reader::TYPE_RSS_090: + $this->_xpath->registerNamespace('rdf', Zend_Feed_Reader::NAMESPACE_RDF); + $this->_xpath->registerNamespace('rss', Zend_Feed_Reader::NAMESPACE_RSS_090); + break; + } + } +} diff --git a/library/Zend/Feed/Reader/FeedAbstract.php b/library/Zend/Feed/Reader/FeedAbstract.php new file mode 100755 index 000000000..3426958fb --- /dev/null +++ b/library/Zend/Feed/Reader/FeedAbstract.php @@ -0,0 +1,321 @@ +_domDocument = $domDocument; + $this->_xpath = new DOMXPath($this->_domDocument); + + if ($type !== null) { + $this->_data['type'] = $type; + } else { + $this->_data['type'] = Zend_Feed_Reader::detectType($this->_domDocument); + } + $this->_registerNamespaces(); + $this->_indexEntries(); + $this->_loadExtensions(); + } + + /** + * Set an original source URI for the feed being parsed. This value + * is returned from getFeedLink() method if the feed does not carry + * a self-referencing URI. + * + * @param string $uri + */ + public function setOriginalSourceUri($uri) + { + $this->_originalSourceUri = $uri; + } + + /** + * Get an original source URI for the feed being parsed. Returns null if + * unset or the feed was not imported from a URI. + * + * @return string|null + */ + public function getOriginalSourceUri() + { + return $this->_originalSourceUri; + } + + /** + * Get the number of feed entries. + * Required by the Iterator interface. + * + * @return int + */ + public function count() + { + return count($this->_entries); + } + + /** + * Return the current entry + * + * @return Zend_Feed_Reader_EntryInterface + */ + public function current() + { + if (substr($this->getType(), 0, 3) == 'rss') { + $reader = new Zend_Feed_Reader_Entry_Rss($this->_entries[$this->key()], $this->key(), $this->getType()); + } else { + $reader = new Zend_Feed_Reader_Entry_Atom($this->_entries[$this->key()], $this->key(), $this->getType()); + } + + $reader->setXpath($this->_xpath); + + return $reader; + } + + /** + * Get the DOM + * + * @return DOMDocument + */ + public function getDomDocument() + { + return $this->_domDocument; + } + + /** + * Get the Feed's encoding + * + * @return string + */ + public function getEncoding() + { + $assumed = $this->getDomDocument()->encoding; + if (empty($assumed)) { + $assumed = 'UTF-8'; + } + return $assumed; + } + + /** + * Get feed as xml + * + * @return string + */ + public function saveXml() + { + return $this->getDomDocument()->saveXml(); + } + + /** + * Get the DOMElement representing the items/feed element + * + * @return DOMElement + */ + public function getElement() + { + return $this->getDomDocument()->documentElement; + } + + /** + * Get the DOMXPath object for this feed + * + * @return DOMXPath + */ + public function getXpath() + { + return $this->_xpath; + } + + /** + * Get the feed type + * + * @return string + */ + public function getType() + { + return $this->_data['type']; + } + + /** + * Return the current feed key + * + * @return unknown + */ + public function key() + { + return $this->_entriesKey; + } + + /** + * Move the feed pointer forward + * + */ + public function next() + { + ++$this->_entriesKey; + } + + /** + * Reset the pointer in the feed object + * + */ + public function rewind() + { + $this->_entriesKey = 0; + } + + /** + * Check to see if the iterator is still valid + * + * @return boolean + */ + public function valid() + { + return 0 <= $this->_entriesKey && $this->_entriesKey < $this->count(); + } + + public function getExtensions() + { + return $this->_extensions; + } + + public function __call($method, $args) + { + foreach ($this->_extensions as $extension) { + if (method_exists($extension, $method)) { + return call_user_func_array(array($extension, $method), $args); + } + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Method: ' . $method + . 'does not exist and could not be located on a registered Extension'); + } + + /** + * Return an Extension object with the matching name (postfixed with _Feed) + * + * @param string $name + * @return Zend_Feed_Reader_Extension_FeedAbstract + */ + public function getExtension($name) + { + if (array_key_exists($name . '_Feed', $this->_extensions)) { + return $this->_extensions[$name . '_Feed']; + } + return null; + } + + protected function _loadExtensions() + { + $all = Zend_Feed_Reader::getExtensions(); + $feed = $all['feed']; + foreach ($feed as $extension) { + if (in_array($extension, $all['core'])) { + continue; + } + $className = Zend_Feed_Reader::getPluginLoader()->getClassName($extension); + $this->_extensions[$extension] = new $className( + $this->getDomDocument(), $this->_data['type'], $this->_xpath + ); + } + } + + /** + * Read all entries to the internal entries array + * + */ + abstract protected function _indexEntries(); + + /** + * Register the default namespaces for the current feed format + * + */ + abstract protected function _registerNamespaces(); +} diff --git a/library/Zend/Feed/Reader/FeedInterface.php b/library/Zend/Feed/Reader/FeedInterface.php new file mode 100755 index 000000000..be65c725f --- /dev/null +++ b/library/Zend/Feed/Reader/FeedInterface.php @@ -0,0 +1,122 @@ +getAttribute('rel')) !== 'alternate' + || !$link->getAttribute('type') || !$link->getAttribute('href')) { + continue; + } + if (!isset($this->rss) && $link->getAttribute('type') == 'application/rss+xml') { + $this->rss = $this->_absolutiseUri(trim($link->getAttribute('href')), $uri); + } elseif(!isset($this->atom) && $link->getAttribute('type') == 'application/atom+xml') { + $this->atom = $this->_absolutiseUri(trim($link->getAttribute('href')), $uri); + } elseif(!isset($this->rdf) && $link->getAttribute('type') == 'application/rdf+xml') { + $this->rdf = $this->_absolutiseUri(trim($link->getAttribute('href')), $uri); + } + $this[] = new self(array( + 'rel' => 'alternate', + 'type' => $link->getAttribute('type'), + 'href' => $this->_absolutiseUri(trim($link->getAttribute('href')), $uri), + )); + } + } + + /** + * Attempt to turn a relative URI into an absolute URI + */ + protected function _absolutiseUri($link, $uri = null) + { + if (!Zend_Uri::check($link)) { + if ($uri !== null) { + $uri = Zend_Uri::factory($uri); + + if ($link[0] !== '/') { + $link = $uri->getPath() . '/' . $link; + } + + $link = $uri->getScheme() . '://' . $uri->getHost() . '/' . $this->_canonicalizePath($link); + if (!Zend_Uri::check($link)) { + $link = null; + } + } + } + return $link; + } + + /** + * Canonicalize relative path + */ + protected function _canonicalizePath($path) + { + $parts = array_filter(explode('/', $path)); + $absolutes = array(); + foreach ($parts as $part) { + if ('.' == $part) { + continue; + } + if ('..' == $part) { + array_pop($absolutes); + } else { + $absolutes[] = $part; + } + } + return implode('/', $absolutes); + } + + /** + * Supports lazy loading of feeds using Zend_Feed_Reader::import() but + * delegates any other operations to the parent class. + * + * @param string $offset + * @return mixed + * @uses Zend_Feed_Reader + */ + public function offsetGet($offset) + { + if ($offset == 'feed' && !$this->offsetExists('feed')) { + if (!$this->offsetExists('href')) { + return null; + } + $feed = Zend_Feed_Reader::import($this->offsetGet('href')); + $this->offsetSet('feed', $feed); + return $feed; + } + return parent::offsetGet($offset); + } + +} diff --git a/library/Zend/Feed/Rss.php b/library/Zend/Feed/Rss.php new file mode 100755 index 000000000..5035d35d7 --- /dev/null +++ b/library/Zend/Feed/Rss.php @@ -0,0 +1,530 @@ +s). + * + * @var string + */ + protected $_entryElementName = 'item'; + + /** + * The default namespace for RSS channels. + * + * @var string + */ + protected $_defaultNamespace = 'rss'; + + /** + * Override Zend_Feed_Abstract to set up the $_element and $_entries aliases. + * + * @return void + * @throws Zend_Feed_Exception + */ + public function __wakeup() + { + parent::__wakeup(); + + // Find the base channel element and create an alias to it. + $rdfTags = $this->_element->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'RDF'); + if ($rdfTags->length != 0) { + $this->_element = $rdfTags->item(0); + } else { + $this->_element = $this->_element->getElementsByTagName('channel')->item(0); + } + if (!$this->_element) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('No root element found, cannot parse channel.'); + } + + // Find the entries and save a pointer to them for speed and + // simplicity. + $this->_buildEntryCache(); + } + + + /** + * Make accessing some individual elements of the channel easier. + * + * Special accessors 'item' and 'items' are provided so that if + * you wish to iterate over an RSS channel's items, you can do so + * using foreach ($channel->items as $item) or foreach + * ($channel->item as $item). + * + * @param string $var The property to access. + * @return mixed + */ + public function __get($var) + { + switch ($var) { + case 'item': + // fall through to the next case + case 'items': + return $this; + + default: + return parent::__get($var); + } + } + + /** + * Generate the header of the feed when working in write mode + * + * @param array $array the data to use + * @return DOMElement root node + */ + protected function _mapFeedHeaders($array) + { + $channel = $this->_element->createElement('channel'); + + $title = $this->_element->createElement('title'); + $title->appendChild($this->_element->createCDATASection($array->title)); + $channel->appendChild($title); + + $link = $this->_element->createElement('link', $array->link); + $channel->appendChild($link); + + $desc = isset($array->description) ? $array->description : ''; + $description = $this->_element->createElement('description'); + $description->appendChild($this->_element->createCDATASection($desc)); + $channel->appendChild($description); + + $pubdate = isset($array->lastUpdate) ? $array->lastUpdate : time(); + $pubdate = $this->_element->createElement('pubDate', date(DATE_RSS, $pubdate)); + $channel->appendChild($pubdate); + + if (isset($array->published)) { + $lastBuildDate = $this->_element->createElement('lastBuildDate', date(DATE_RSS, $array->published)); + $channel->appendChild($lastBuildDate); + } + + $editor = ''; + if (!empty($array->email)) { + $editor .= $array->email; + } + if (!empty($array->author)) { + $editor .= ' (' . $array->author . ')'; + } + if (!empty($editor)) { + $author = $this->_element->createElement('managingEditor', ltrim($editor)); + $channel->appendChild($author); + } + if (isset($array->webmaster)) { + $channel->appendChild($this->_element->createElement('webMaster', $array->webmaster)); + } + + if (!empty($array->copyright)) { + $copyright = $this->_element->createElement('copyright', $array->copyright); + $channel->appendChild($copyright); + } + + if (isset($array->category)) { + $category = $this->_element->createElement('category', $array->category); + $channel->appendChild($category); + } + + if (!empty($array->image)) { + $image = $this->_element->createElement('image'); + $url = $this->_element->createElement('url', $array->image); + $image->appendChild($url); + $imagetitle = $this->_element->createElement('title'); + $imagetitle->appendChild($this->_element->createCDATASection($array->title)); + $image->appendChild($imagetitle); + $imagelink = $this->_element->createElement('link', $array->link); + $image->appendChild($imagelink); + + $channel->appendChild($image); + } + + $generator = !empty($array->generator) ? $array->generator : 'Zend_Feed'; + $generator = $this->_element->createElement('generator', $generator); + $channel->appendChild($generator); + + if (!empty($array->language)) { + $language = $this->_element->createElement('language', $array->language); + $channel->appendChild($language); + } + + $doc = $this->_element->createElement('docs', 'http://blogs.law.harvard.edu/tech/rss'); + $channel->appendChild($doc); + + if (isset($array->cloud)) { + $cloud = $this->_element->createElement('cloud'); + $cloud->setAttribute('domain', $array->cloud['uri']->getHost()); + $cloud->setAttribute('port', $array->cloud['uri']->getPort()); + $cloud->setAttribute('path', $array->cloud['uri']->getPath()); + $cloud->setAttribute('registerProcedure', $array->cloud['procedure']); + $cloud->setAttribute('protocol', $array->cloud['protocol']); + $channel->appendChild($cloud); + } + + if (isset($array->ttl)) { + $ttl = $this->_element->createElement('ttl', $array->ttl); + $channel->appendChild($ttl); + } + + if (isset($array->rating)) { + $rating = $this->_element->createElement('rating', $array->rating); + $channel->appendChild($rating); + } + + if (isset($array->textInput)) { + $textinput = $this->_element->createElement('textInput'); + $textinput->appendChild($this->_element->createElement('title', $array->textInput['title'])); + $textinput->appendChild($this->_element->createElement('description', $array->textInput['description'])); + $textinput->appendChild($this->_element->createElement('name', $array->textInput['name'])); + $textinput->appendChild($this->_element->createElement('link', $array->textInput['link'])); + $channel->appendChild($textinput); + } + + if (isset($array->skipHours)) { + $skipHours = $this->_element->createElement('skipHours'); + foreach ($array->skipHours as $hour) { + $skipHours->appendChild($this->_element->createElement('hour', $hour)); + } + $channel->appendChild($skipHours); + } + + if (isset($array->skipDays)) { + $skipDays = $this->_element->createElement('skipDays'); + foreach ($array->skipDays as $day) { + $skipDays->appendChild($this->_element->createElement('day', $day)); + } + $channel->appendChild($skipDays); + } + + if (isset($array->itunes)) { + $this->_buildiTunes($channel, $array); + } + + return $channel; + } + + /** + * Adds the iTunes extensions to a root node + * + * @param DOMElement $root + * @param array $array + * @return void + */ + private function _buildiTunes(DOMElement $root, $array) + { + /* author node */ + $author = ''; + if (isset($array->itunes->author)) { + $author = $array->itunes->author; + } elseif (isset($array->author)) { + $author = $array->author; + } + if (!empty($author)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:author', $author); + $root->appendChild($node); + } + + /* owner node */ + $author = ''; + $email = ''; + if (isset($array->itunes->owner)) { + if (isset($array->itunes->owner['name'])) { + $author = $array->itunes->owner['name']; + } + if (isset($array->itunes->owner['email'])) { + $email = $array->itunes->owner['email']; + } + } + if (empty($author) && isset($array->author)) { + $author = $array->author; + } + if (empty($email) && isset($array->email)) { + $email = $array->email; + } + if (!empty($author) || !empty($email)) { + $owner = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:owner'); + if (!empty($author)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:name', $author); + $owner->appendChild($node); + } + if (!empty($email)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:email', $email); + $owner->appendChild($node); + } + $root->appendChild($owner); + } + $image = ''; + if (isset($array->itunes->image)) { + $image = $array->itunes->image; + } elseif (isset($array->image)) { + $image = $array->image; + } + if (!empty($image)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:image'); + $node->setAttribute('href', $image); + $root->appendChild($node); + } + $subtitle = ''; + if (isset($array->itunes->subtitle)) { + $subtitle = $array->itunes->subtitle; + } elseif (isset($array->description)) { + $subtitle = $array->description; + } + if (!empty($subtitle)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:subtitle', $subtitle); + $root->appendChild($node); + } + $summary = ''; + if (isset($array->itunes->summary)) { + $summary = $array->itunes->summary; + } elseif (isset($array->description)) { + $summary = $array->description; + } + if (!empty($summary)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:summary', $summary); + $root->appendChild($node); + } + if (isset($array->itunes->block)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:block', $array->itunes->block); + $root->appendChild($node); + } + if (isset($array->itunes->explicit)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:explicit', $array->itunes->explicit); + $root->appendChild($node); + } + if (isset($array->itunes->keywords)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:keywords', $array->itunes->keywords); + $root->appendChild($node); + } + if (isset($array->itunes->new_feed_url)) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:new-feed-url', $array->itunes->new_feed_url); + $root->appendChild($node); + } + if (isset($array->itunes->category)) { + foreach ($array->itunes->category as $i => $category) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:category'); + $node->setAttribute('text', $category['main']); + $root->appendChild($node); + $add_end_category = false; + if (!empty($category['sub'])) { + $add_end_category = true; + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:category'); + $node->setAttribute('text', $category['sub']); + $root->appendChild($node); + } + if ($i > 0 || $add_end_category) { + $node = $this->_element->createElementNS('http://www.itunes.com/DTDs/Podcast-1.0.dtd', 'itunes:category'); + $root->appendChild($node); + } + } + } + } + + /** + * Generate the entries of the feed when working in write mode + * + * The following nodes are constructed for each feed entry + * + * entry title + * url to feed entry + * url to feed entry + * short text + * long version, can contain html + * + * + * @param DOMElement $root the root node to use + * @param array $array the data to use + * @return void + */ + protected function _mapFeedEntries(DOMElement $root, $array) + { + Zend_Feed::registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/'); + + foreach ($array as $dataentry) { + $item = $this->_element->createElement('item'); + + $title = $this->_element->createElement('title'); + $title->appendChild($this->_element->createCDATASection($dataentry->title)); + $item->appendChild($title); + + if (isset($dataentry->author)) { + $author = $this->_element->createElement('author', $dataentry->author); + $item->appendChild($author); + } + + $link = $this->_element->createElement('link', $dataentry->link); + $item->appendChild($link); + + if (isset($dataentry->guid)) { + $guid = $this->_element->createElement('guid', $dataentry->guid); + if (!Zend_Uri::check($dataentry->guid)) { + $guid->setAttribute('isPermaLink', 'false'); + } + $item->appendChild($guid); + } + + $description = $this->_element->createElement('description'); + $description->appendChild($this->_element->createCDATASection($dataentry->description)); + $item->appendChild($description); + + if (isset($dataentry->content)) { + $content = $this->_element->createElement('content:encoded'); + $content->appendChild($this->_element->createCDATASection($dataentry->content)); + $item->appendChild($content); + } + + $pubdate = isset($dataentry->lastUpdate) ? $dataentry->lastUpdate : time(); + $pubdate = $this->_element->createElement('pubDate', date(DATE_RSS, $pubdate)); + $item->appendChild($pubdate); + + if (isset($dataentry->category)) { + foreach ($dataentry->category as $category) { + $node = $this->_element->createElement('category'); + $node->appendChild($this->_element->createCDATASection($category['term'])); + if (isset($category['scheme'])) { + $node->setAttribute('domain', $category['scheme']); + } + $item->appendChild($node); + } + } + + if (isset($dataentry->source)) { + $source = $this->_element->createElement('source', $dataentry->source['title']); + $source->setAttribute('url', $dataentry->source['url']); + $item->appendChild($source); + } + + if (isset($dataentry->comments)) { + $comments = $this->_element->createElement('comments', $dataentry->comments); + $item->appendChild($comments); + } + if (isset($dataentry->commentRss)) { + $comments = $this->_element->createElementNS('http://wellformedweb.org/CommentAPI/', + 'wfw:commentRss', + $dataentry->commentRss); + $item->appendChild($comments); + } + + + if (isset($dataentry->enclosure)) { + foreach ($dataentry->enclosure as $enclosure) { + $node = $this->_element->createElement('enclosure'); + $node->setAttribute('url', $enclosure['url']); + if (isset($enclosure['type'])) { + $node->setAttribute('type', $enclosure['type']); + } + if (isset($enclosure['length'])) { + $node->setAttribute('length', $enclosure['length']); + } + $item->appendChild($node); + } + } + + $root->appendChild($item); + } + } + + /** + * Override Zend_Feed_Element to include root node + * + * @return string + */ + public function saveXml() + { + // Return a complete document including XML prologue. + $doc = new DOMDocument($this->_element->ownerDocument->version, + $this->_element->ownerDocument->actualEncoding); + $root = $doc->createElement('rss'); + + // Use rss version 2.0 + $root->setAttribute('version', '2.0'); + + // Content namespace + $root->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:content', 'http://purl.org/rss/1.0/modules/content/'); + $root->appendChild($doc->importNode($this->_element, true)); + + // Append root node + $doc->appendChild($root); + + // Format output + $doc->formatOutput = true; + + return $doc->saveXML(); + } + + /** + * Send feed to a http client with the correct header + * + * @return void + * @throws Zend_Feed_Exception if headers have already been sent + */ + public function send() + { + if (headers_sent()) { + /** + * @see Zend_Feed_Exception + */ + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Cannot send RSS because headers have already been sent.'); + } + + header('Content-Type: application/rss+xml; charset=' . $this->_element->ownerDocument->actualEncoding); + + echo $this->saveXml(); + } + +} diff --git a/library/Zend/Feed/Writer.php b/library/Zend/Feed/Writer.php new file mode 100755 index 000000000..8eced7af3 --- /dev/null +++ b/library/Zend/Feed/Writer.php @@ -0,0 +1,267 @@ + array(), + 'feed' => array(), + 'entryRenderer' => array(), + 'feedRenderer' => array(), + ); + + /** + * Set plugin loader for use with Extensions + * + * @param Zend_Loader_PluginLoader_Interface + */ + public static function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) + { + self::$_pluginLoader = $loader; + } + + /** + * Get plugin loader for use with Extensions + * + * @return Zend_Loader_PluginLoader_Interface + */ + public static function getPluginLoader() + { + if (!isset(self::$_pluginLoader)) { + require_once 'Zend/Loader/PluginLoader.php'; + self::$_pluginLoader = new Zend_Loader_PluginLoader(array( + 'Zend_Feed_Writer_Extension_' => 'Zend/Feed/Writer/Extension/', + )); + } + return self::$_pluginLoader; + } + + /** + * Add prefix path for loading Extensions + * + * @param string $prefix + * @param string $path + * @return void + */ + public static function addPrefixPath($prefix, $path) + { + $prefix = rtrim($prefix, '_'); + $path = rtrim($path, DIRECTORY_SEPARATOR); + self::getPluginLoader()->addPrefixPath($prefix, $path); + } + + /** + * Add multiple Extension prefix paths at once + * + * @param array $spec + * @return void + */ + public static function addPrefixPaths(array $spec) + { + if (isset($spec['prefix']) && isset($spec['path'])) { + self::addPrefixPath($spec['prefix'], $spec['path']); + } + foreach ($spec as $prefixPath) { + if (isset($prefixPath['prefix']) && isset($prefixPath['path'])) { + self::addPrefixPath($prefixPath['prefix'], $prefixPath['path']); + } + } + } + + /** + * Register an Extension by name + * + * @param string $name + * @return void + * @throws Zend_Feed_Exception if unable to resolve Extension class + */ + public static function registerExtension($name) + { + $feedName = $name . '_Feed'; + $entryName = $name . '_Entry'; + $feedRendererName = $name . '_Renderer_Feed'; + $entryRendererName = $name . '_Renderer_Entry'; + if (self::isRegistered($name)) { + if (self::getPluginLoader()->isLoaded($feedName) + || self::getPluginLoader()->isLoaded($entryName) + || self::getPluginLoader()->isLoaded($feedRendererName) + || self::getPluginLoader()->isLoaded($entryRendererName) + ) { + return; + } + } + try { + self::getPluginLoader()->load($feedName); + self::$_extensions['feed'][] = $feedName; + } catch (Zend_Loader_PluginLoader_Exception $e) { + } + try { + self::getPluginLoader()->load($entryName); + self::$_extensions['entry'][] = $entryName; + } catch (Zend_Loader_PluginLoader_Exception $e) { + } + try { + self::getPluginLoader()->load($feedRendererName); + self::$_extensions['feedRenderer'][] = $feedRendererName; + } catch (Zend_Loader_PluginLoader_Exception $e) { + } + try { + self::getPluginLoader()->load($entryRendererName); + self::$_extensions['entryRenderer'][] = $entryRendererName; + } catch (Zend_Loader_PluginLoader_Exception $e) { + } + if (!self::getPluginLoader()->isLoaded($feedName) + && !self::getPluginLoader()->isLoaded($entryName) + && !self::getPluginLoader()->isLoaded($feedRendererName) + && !self::getPluginLoader()->isLoaded($entryRendererName) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Could not load extension: ' . $name + . 'using Plugin Loader. Check prefix paths are configured and extension exists.'); + } + } + + /** + * Is a given named Extension registered? + * + * @param string $extensionName + * @return boolean + */ + public static function isRegistered($extensionName) + { + $feedName = $extensionName . '_Feed'; + $entryName = $extensionName . '_Entry'; + $feedRendererName = $extensionName . '_Renderer_Feed'; + $entryRendererName = $extensionName . '_Renderer_Entry'; + if (in_array($feedName, self::$_extensions['feed']) + || in_array($entryName, self::$_extensions['entry']) + || in_array($feedRendererName, self::$_extensions['feedRenderer']) + || in_array($entryRendererName, self::$_extensions['entryRenderer']) + ) { + return true; + } + return false; + } + + /** + * Get a list of extensions + * + * @return array + */ + public static function getExtensions() + { + return self::$_extensions; + } + + /** + * Reset class state to defaults + * + * @return void + */ + public static function reset() + { + self::$_pluginLoader = null; + self::$_prefixPaths = array(); + self::$_extensions = array( + 'entry' => array(), + 'feed' => array(), + 'entryRenderer' => array(), + 'feedRenderer' => array(), + ); + } + + /** + * Register core (default) extensions + * + * @return void + */ + public static function registerCoreExtensions() + { + self::registerExtension('DublinCore'); + self::registerExtension('Content'); + self::registerExtension('Atom'); + self::registerExtension('Slash'); + self::registerExtension('WellFormedWeb'); + self::registerExtension('Threading'); + self::registerExtension('ITunes'); + } + + public static function lcfirst($str) + { + $str[0] = strtolower($str[0]); + return $str; + } + +} diff --git a/library/Zend/Feed/Writer/Deleted.php b/library/Zend/Feed/Writer/Deleted.php new file mode 100755 index 000000000..77cf8c3a1 --- /dev/null +++ b/library/Zend/Feed/Writer/Deleted.php @@ -0,0 +1,202 @@ +_data['encoding'] = $encoding; + } + + /** + * Get the feed character encoding + * + * @return string|null + */ + public function getEncoding() + { + if (!array_key_exists('encoding', $this->_data)) { + return 'UTF-8'; + } + return $this->_data['encoding']; + } + + /** + * Unset a specific data point + * + * @param string $name + */ + public function remove($name) + { + if (isset($this->_data[$name])) { + unset($this->_data[$name]); + } + } + + /** + * Set the current feed type being exported to "rss" or "atom". This allows + * other objects to gracefully choose whether to execute or not, depending + * on their appropriateness for the current type, e.g. renderers. + * + * @param string $type + */ + public function setType($type) + { + $this->_type = $type; + } + + /** + * Retrieve the current or last feed type exported. + * + * @return string Value will be "rss" or "atom" + */ + public function getType() + { + return $this->_type; + } + + public function setReference($reference) + { + if (empty($reference) || !is_string($reference)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: reference must be a non-empty string'); + } + $this->_data['reference'] = $reference; + } + + public function getReference() + { + if (!array_key_exists('reference', $this->_data)) { + return null; + } + return $this->_data['reference']; + } + + public function setWhen($date = null) + { + $zdate = null; + if ($date === null) { + $zdate = new Zend_Date; + } elseif ($date instanceof Zend_Date) { + $zdate = $date; + } elseif (ctype_digit((string)$date)) { + $zdate = new Zend_Date($date, Zend_Date::TIMESTAMP); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid Zend_Date object or UNIX Timestamp passed as parameter'); + } + $this->_data['when'] = $zdate; + } + + public function getWhen() + { + if (!array_key_exists('when', $this->_data)) { + return null; + } + return $this->_data['when']; + } + + public function setBy(array $by) + { + $author = array(); + if (!array_key_exists('name', $by) + || empty($by['name']) + || !is_string($by['name']) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: author array must include a "name" key with a non-empty string value'); + } + $author['name'] = $by['name']; + if (isset($by['email'])) { + if (empty($by['email']) || !is_string($by['email'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "email" array value must be a non-empty string'); + } + $author['email'] = $by['email']; + } + if (isset($by['uri'])) { + if (empty($by['uri']) + || !is_string($by['uri']) + || !Zend_Uri::check($by['uri']) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" array value must be a non-empty string and valid URI/IRI'); + } + $author['uri'] = $by['uri']; + } + $this->_data['by'] = $author; + } + + public function getBy() + { + if (!array_key_exists('by', $this->_data)) { + return null; + } + return $this->_data['by']; + } + + public function setComment($comment) + { + $this->_data['comment'] = $comment; + } + + public function getComment() + { + if (!array_key_exists('comment', $this->_data)) { + return null; + } + return $this->_data['comment']; + } + +} diff --git a/library/Zend/Feed/Writer/Entry.php b/library/Zend/Feed/Writer/Entry.php new file mode 100755 index 000000000..f364e0bbe --- /dev/null +++ b/library/Zend/Feed/Writer/Entry.php @@ -0,0 +1,761 @@ +_loadExtensions(); + } + + /** + * Set a single author + * + * @param int $index + * @return string|null + */ + public function addAuthor($name, $email = null, $uri = null) + { + $author = array(); + if (is_array($name)) { + if (!array_key_exists('name', $name) + || empty($name['name']) + || !is_string($name['name']) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: author array must include a "name" key with a non-empty string value'); + } + $author['name'] = $name['name']; + if (isset($name['email'])) { + if (empty($name['email']) || !is_string($name['email'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "email" array value must be a non-empty string'); + } + $author['email'] = $name['email']; + } + if (isset($name['uri'])) { + if (empty($name['uri']) + || !is_string($name['uri']) + || !Zend_Uri::check($name['uri']) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" array value must be a non-empty string and valid URI/IRI'); + } + $author['uri'] = $name['uri']; + } + /** + * @deprecated + * Array notation (above) is preferred and will be the sole supported input from ZF 2.0 + */ + } else { + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string value'); + } + $author['name'] = $name; + if (isset($email)) { + if (empty($email) || !is_string($email)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "email" value must be a non-empty string'); + } + $author['email'] = $email; + } + if (isset($uri)) { + if (empty($uri) || !is_string($uri) || !Zend_Uri::check($uri)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" value must be a non-empty string and valid URI/IRI'); + } + $author['uri'] = $uri; + } + } + $this->_data['authors'][] = $author; + } + + /** + * Set an array with feed authors + * + * @return array + */ + public function addAuthors(array $authors) + { + foreach($authors as $author) { + $this->addAuthor($author); + } + } + + /** + * Set the feed character encoding + * + * @return string|null + */ + public function setEncoding($encoding) + { + if (empty($encoding) || !is_string($encoding)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['encoding'] = $encoding; + } + + /** + * Get the feed character encoding + * + * @return string|null + */ + public function getEncoding() + { + if (!array_key_exists('encoding', $this->_data)) { + return 'UTF-8'; + } + return $this->_data['encoding']; + } + + /** + * Set the copyright entry + * + * @return string|null + */ + public function setCopyright($copyright) + { + if (empty($copyright) || !is_string($copyright)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['copyright'] = $copyright; + } + + /** + * Set the entry's content + * + * @return string|null + */ + public function setContent($content) + { + if (empty($content) || !is_string($content)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['content'] = $content; + } + + /** + * Set the feed creation date + * + * @return string|null + */ + public function setDateCreated($date = null) + { + $zdate = null; + if ($date === null) { + $zdate = new Zend_Date; + } elseif ($date instanceof Zend_Date) { + $zdate = $date; + } elseif (ctype_digit((string)$date)) { + $zdate = new Zend_Date($date, Zend_Date::TIMESTAMP); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid Zend_Date object or UNIX Timestamp passed as parameter'); + } + $this->_data['dateCreated'] = $zdate; + } + + /** + * Set the feed modification date + * + * @return string|null + */ + public function setDateModified($date = null) + { + $zdate = null; + if ($date === null) { + $zdate = new Zend_Date; + } elseif ($date instanceof Zend_Date) { + $zdate = $date; + } elseif (ctype_digit((string)$date)) { + $zdate = new Zend_Date($date, Zend_Date::TIMESTAMP); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid Zend_Date object or UNIX Timestamp passed as parameter'); + } + $this->_data['dateModified'] = $zdate; + } + + /** + * Set the feed description + * + * @return string|null + */ + public function setDescription($description) + { + if (empty($description) || !is_string($description)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['description'] = $description; + } + + /** + * Set the feed ID + * + * @return string|null + */ + public function setId($id) + { + if (empty($id) || !is_string($id)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['id'] = $id; + } + + /** + * Set a link to the HTML source of this entry + * + * @return string|null + */ + public function setLink($link) + { + if (empty($link) || !is_string($link) || !Zend_Uri::check($link)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string and valid URI/IRI'); + } + $this->_data['link'] = $link; + } + + /** + * Set the number of comments associated with this entry + * + * @return string|null + */ + public function setCommentCount($count) + { + if ( !is_numeric($count) || (int) $count < 0) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "count" must be a non-empty integer number'); + } + $this->_data['commentCount'] = (int) $count; + } + + /** + * Set a link to a HTML page containing comments associated with this entry + * + * @return string|null + */ + public function setCommentLink($link) + { + if (empty($link) || !is_string($link) || !Zend_Uri::check($link)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "link" must be a non-empty string and valid URI/IRI'); + } + $this->_data['commentLink'] = $link; + } + + /** + * Set a link to an XML feed for any comments associated with this entry + * + * @return string|null + */ + public function setCommentFeedLink(array $link) + { + if (!isset($link['uri']) || !is_string($link['uri']) || !Zend_Uri::check($link['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "link" must be a non-empty string and valid URI/IRI'); + } + if (!isset($link['type']) || !in_array($link['type'], array('atom', 'rss', 'rdf'))) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "type" must be one' + . ' of "atom", "rss" or "rdf"'); + } + if (!isset($this->_data['commentFeedLinks'])) { + $this->_data['commentFeedLinks'] = array(); + } + $this->_data['commentFeedLinks'][] = $link; + } + + /** + * Set a links to an XML feed for any comments associated with this entry. + * Each link is an array with keys "uri" and "type", where type is one of: + * "atom", "rss" or "rdf". + * + * @return string|null + */ + public function setCommentFeedLinks(array $links) + { + foreach ($links as $link) { + $this->setCommentFeedLink($link); + } + } + + /** + * Set the feed title + * + * @return string|null + */ + public function setTitle($title) + { + if (empty($title) || !is_string($title)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['title'] = $title; + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (!array_key_exists('authors', $this->_data)) { + return null; + } + return $this->_data['authors']; + } + + /** + * Get the entry content + * + * @return string + */ + public function getContent() + { + if (!array_key_exists('content', $this->_data)) { + return null; + } + return $this->_data['content']; + } + + /** + * Get the entry copyright information + * + * @return string + */ + public function getCopyright() + { + if (!array_key_exists('copyright', $this->_data)) { + return null; + } + return $this->_data['copyright']; + } + + /** + * Get the entry creation date + * + * @return string + */ + public function getDateCreated() + { + if (!array_key_exists('dateCreated', $this->_data)) { + return null; + } + return $this->_data['dateCreated']; + } + + /** + * Get the entry modification date + * + * @return string + */ + public function getDateModified() + { + if (!array_key_exists('dateModified', $this->_data)) { + return null; + } + return $this->_data['dateModified']; + } + + /** + * Get the entry description + * + * @return string + */ + public function getDescription() + { + if (!array_key_exists('description', $this->_data)) { + return null; + } + return $this->_data['description']; + } + + /** + * Get the entry ID + * + * @return string + */ + public function getId() + { + if (!array_key_exists('id', $this->_data)) { + return null; + } + return $this->_data['id']; + } + + /** + * Get a link to the HTML source + * + * @return string|null + */ + public function getLink() + { + if (!array_key_exists('link', $this->_data)) { + return null; + } + return $this->_data['link']; + } + + + /** + * Get all links + * + * @return array + */ + public function getLinks() + { + if (!array_key_exists('links', $this->_data)) { + return null; + } + return $this->_data['links']; + } + + /** + * Get the entry title + * + * @return string + */ + public function getTitle() + { + if (!array_key_exists('title', $this->_data)) { + return null; + } + return $this->_data['title']; + } + + /** + * Get the number of comments/replies for current entry + * + * @return integer + */ + public function getCommentCount() + { + if (!array_key_exists('commentCount', $this->_data)) { + return null; + } + return $this->_data['commentCount']; + } + + /** + * Returns a URI pointing to the HTML page where comments can be made on this entry + * + * @return string + */ + public function getCommentLink() + { + if (!array_key_exists('commentLink', $this->_data)) { + return null; + } + return $this->_data['commentLink']; + } + + /** + * Returns an array of URIs pointing to a feed of all comments for this entry + * where the array keys indicate the feed type (atom, rss or rdf). + * + * @return string + */ + public function getCommentFeedLinks() + { + if (!array_key_exists('commentFeedLinks', $this->_data)) { + return null; + } + return $this->_data['commentFeedLinks']; + } + + /** + * Add a entry category + * + * @param string $category + */ + public function addCategory(array $category) + { + if (!isset($category['term'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Each category must be an array and ' + . 'contain at least a "term" element containing the machine ' + . ' readable category name'); + } + if (isset($category['scheme'])) { + if (empty($category['scheme']) + || !is_string($category['scheme']) + || !Zend_Uri::check($category['scheme']) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('The Atom scheme or RSS domain of' + . ' a category must be a valid URI'); + } + } + if (!isset($this->_data['categories'])) { + $this->_data['categories'] = array(); + } + $this->_data['categories'][] = $category; + } + + /** + * Set an array of entry categories + * + * @param array $categories + */ + public function addCategories(array $categories) + { + foreach ($categories as $category) { + $this->addCategory($category); + } + } + + /** + * Get the entry categories + * + * @return string|null + */ + public function getCategories() + { + if (!array_key_exists('categories', $this->_data)) { + return null; + } + return $this->_data['categories']; + } + + /** + * Adds an enclosure to the entry. The array parameter may contain the + * keys 'uri', 'type' and 'length'. Only 'uri' is required for Atom, though the + * others must also be provided or RSS rendering (where they are required) + * will throw an Exception. + * + * @param array $enclosures + */ + public function setEnclosure(array $enclosure) + { + if (!isset($enclosure['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Enclosure "uri" is not set'); + } + if (!Zend_Uri::check($enclosure['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Enclosure "uri" is not a valid URI/IRI'); + } + $this->_data['enclosure'] = $enclosure; + } + + /** + * Retrieve an array of all enclosures to be added to entry. + * + * @return array + */ + public function getEnclosure() + { + if (!array_key_exists('enclosure', $this->_data)) { + return null; + } + return $this->_data['enclosure']; + } + + /** + * Unset a specific data point + * + * @param string $name + */ + public function remove($name) + { + if (isset($this->_data[$name])) { + unset($this->_data[$name]); + } + } + + /** + * Get registered extensions + * + * @return array + */ + public function getExtensions() + { + return $this->_extensions; + } + + /** + * Return an Extension object with the matching name (postfixed with _Entry) + * + * @param string $name + * @return object + */ + public function getExtension($name) + { + if (array_key_exists($name . '_Entry', $this->_extensions)) { + return $this->_extensions[$name . '_Entry']; + } + return null; + } + + /** + * Set the current feed type being exported to "rss" or "atom". This allows + * other objects to gracefully choose whether to execute or not, depending + * on their appropriateness for the current type, e.g. renderers. + * + * @param string $type + */ + public function setType($type) + { + $this->_type = $type; + } + + /** + * Retrieve the current or last feed type exported. + * + * @return string Value will be "rss" or "atom" + */ + public function getType() + { + return $this->_type; + } + + /** + * Method overloading: call given method on first extension implementing it + * + * @param string $method + * @param array $args + * @return mixed + * @throws Zend_Feed_Exception if no extensions implements the method + */ + public function __call($method, $args) + { + foreach ($this->_extensions as $extension) { + try { + return call_user_func_array(array($extension, $method), $args); + } catch (Zend_Feed_Writer_Exception_InvalidMethodException $e) { + } + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Method: ' . $method + . ' does not exist and could not be located on a registered Extension'); + } + + /** + * Creates a new Zend_Feed_Writer_Source data container for use. This is NOT + * added to the current feed automatically, but is necessary to create a + * container with some initial values preset based on the current feed data. + * + * @return Zend_Feed_Writer_Source + */ + public function createSource() + { + $source = new Zend_Feed_Writer_Source; + if ($this->getEncoding()) { + $source->setEncoding($this->getEncoding()); + } + $source->setType($this->getType()); + return $source; + } + + /** + * Appends a Zend_Feed_Writer_Entry object representing a new entry/item + * the feed data container's internal group of entries. + * + * @param Zend_Feed_Writer_Source $source + */ + public function setSource(Zend_Feed_Writer_Source $source) + { + $this->_data['source'] = $source; + } + + /** + * @return Zend_Feed_Writer_Source + */ + public function getSource() + { + if (isset($this->_data['source'])) { + return $this->_data['source']; + } + return null; + } + + /** + * Load extensions from Zend_Feed_Writer + * + * @return void + */ + protected function _loadExtensions() + { + $all = Zend_Feed_Writer::getExtensions(); + $exts = $all['entry']; + foreach ($exts as $ext) { + $className = Zend_Feed_Writer::getPluginLoader()->getClassName($ext); + $this->_extensions[$ext] = new $className(); + $this->_extensions[$ext]->setEncoding($this->getEncoding()); + } + } +} diff --git a/library/Zend/Feed/Writer/Exception/InvalidMethodException.php b/library/Zend/Feed/Writer/Exception/InvalidMethodException.php new file mode 100755 index 000000000..e0c1f5db8 --- /dev/null +++ b/library/Zend/Feed/Writer/Exception/InvalidMethodException.php @@ -0,0 +1,41 @@ +getType()) == 'atom') { + return; + } + $this->_setFeedLinks($this->_dom, $this->_base); + $this->_setHubs($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append namespaces to root element of feed + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:atom', + 'http://www.w3.org/2005/Atom'); + } + + /** + * Set feed link elements + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setFeedLinks(DOMDocument $dom, DOMElement $root) + { + $flinks = $this->getDataContainer()->getFeedLinks(); + if(!$flinks || empty($flinks)) { + return; + } + foreach ($flinks as $type => $href) { + $mime = 'application/' . strtolower($type) . '+xml'; + $flink = $dom->createElement('atom:link'); + $root->appendChild($flink); + $flink->setAttribute('rel', 'self'); + $flink->setAttribute('type', $mime); + $flink->setAttribute('href', $href); + } + $this->_called = true; + } + + /** + * Set PuSH hubs + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setHubs(DOMDocument $dom, DOMElement $root) + { + $hubs = $this->getDataContainer()->getHubs(); + if (!$hubs || empty($hubs)) { + return; + } + foreach ($hubs as $hubUrl) { + $hub = $dom->createElement('atom:link'); + $hub->setAttribute('rel', 'hub'); + $hub->setAttribute('href', $hubUrl); + $root->appendChild($hub); + } + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/Content/Renderer/Entry.php b/library/Zend/Feed/Writer/Extension/Content/Renderer/Entry.php new file mode 100755 index 000000000..3776d0460 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/Content/Renderer/Entry.php @@ -0,0 +1,92 @@ +getType()) == 'atom') { + return; + } + $this->_setContent($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append namespaces to root element + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:content', + 'http://purl.org/rss/1.0/modules/content/'); + } + + /** + * Set entry content + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setContent(DOMDocument $dom, DOMElement $root) + { + $content = $this->getDataContainer()->getContent(); + if (!$content) { + return; + } + $element = $dom->createElement('content:encoded'); + $root->appendChild($element); + $cdata = $dom->createCDATASection($content); + $element->appendChild($cdata); + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/DublinCore/Renderer/Entry.php b/library/Zend/Feed/Writer/Extension/DublinCore/Renderer/Entry.php new file mode 100755 index 000000000..d3dbf34a0 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/DublinCore/Renderer/Entry.php @@ -0,0 +1,96 @@ +getType()) == 'atom') { + return; + } + $this->_setAuthors($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append namespaces to entry + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:dc', + 'http://purl.org/dc/elements/1.1/'); + } + + /** + * Set entry author elements + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->getDataContainer()->getAuthors(); + if (!$authors || empty($authors)) { + return; + } + foreach ($authors as $data) { + $author = $this->_dom->createElement('dc:creator'); + if (array_key_exists('name', $data)) { + $text = $dom->createTextNode($data['name']); + $author->appendChild($text); + $root->appendChild($author); + } + } + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/DublinCore/Renderer/Feed.php b/library/Zend/Feed/Writer/Extension/DublinCore/Renderer/Feed.php new file mode 100755 index 000000000..ac7377b91 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/DublinCore/Renderer/Feed.php @@ -0,0 +1,96 @@ +getType()) == 'atom') { + return; + } + $this->_setAuthors($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append namespaces to feed element + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:dc', + 'http://purl.org/dc/elements/1.1/'); + } + + /** + * Set feed authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->getDataContainer()->getAuthors(); + if (!$authors || empty($authors)) { + return; + } + foreach ($authors as $data) { + $author = $this->_dom->createElement('dc:creator'); + if (array_key_exists('name', $data)) { + $text = $dom->createTextNode($data['name']); + $author->appendChild($text); + $root->appendChild($author); + } + } + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/ITunes/Entry.php b/library/Zend/Feed/Writer/Extension/ITunes/Entry.php new file mode 100755 index 000000000..8f31597bd --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/ITunes/Entry.php @@ -0,0 +1,242 @@ +_encoding = $enc; + return $this; + } + + /** + * Get feed encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set a block value of "yes" or "no". You may also set an empty string. + * + * @param string + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function setItunesBlock($value) + { + if (!ctype_alpha($value) && strlen($value) > 0) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "block" may only' + . ' contain alphabetic characters'); + } + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "block" may only' + . ' contain a maximum of 255 characters'); + } + $this->_data['block'] = $value; + } + + /** + * Add authors to itunes entry + * + * @param array $values + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function addItunesAuthors(array $values) + { + foreach ($values as $value) { + $this->addItunesAuthor($value); + } + return $this; + } + + /** + * Add author to itunes entry + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function addItunesAuthor($value) + { + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "author" may only' + . ' contain a maximum of 255 characters each'); + } + if (!isset($this->_data['authors'])) { + $this->_data['authors'] = array(); + } + $this->_data['authors'][] = $value; + return $this; + } + + /** + * Set duration + * + * @param int $value + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function setItunesDuration($value) + { + $value = (string) $value; + if (!ctype_digit($value) + && !preg_match("/^\d+:[0-5]{1}[0-9]{1}$/", $value) + && !preg_match("/^\d+:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/", $value) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "duration" may only' + . ' be of a specified [[HH:]MM:]SS format'); + } + $this->_data['duration'] = $value; + return $this; + } + + /** + * Set "explicit" flag + * + * @param bool $value + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function setItunesExplicit($value) + { + if (!in_array($value, array('yes','no','clean'))) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "explicit" may only' + . ' be one of "yes", "no" or "clean"'); + } + $this->_data['explicit'] = $value; + return $this; + } + + /** + * Set keywords + * + * @param array $value + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function setItunesKeywords(array $value) + { + if (count($value) > 12) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "keywords" may only' + . ' contain a maximum of 12 terms'); + } + $concat = implode(',', $value); + if (iconv_strlen($concat, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "keywords" may only' + . ' have a concatenated length of 255 chars where terms are delimited' + . ' by a comma'); + } + $this->_data['keywords'] = $value; + return $this; + } + + /** + * Set subtitle + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function setItunesSubtitle($value) + { + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "subtitle" may only' + . ' contain a maximum of 255 characters'); + } + $this->_data['subtitle'] = $value; + return $this; + } + + /** + * Set summary + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Entry + */ + public function setItunesSummary($value) + { + if (iconv_strlen($value, $this->getEncoding()) > 4000) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "summary" may only' + . ' contain a maximum of 4000 characters'); + } + $this->_data['summary'] = $value; + return $this; + } + + /** + * Overloading to itunes specific setters + * + * @param string $method + * @param array $params + * @return mixed + */ + public function __call($method, array $params) + { + $point = Zend_Feed_Writer::lcfirst(substr($method, 9)); + if (!method_exists($this, 'setItunes' . ucfirst($point)) + && !method_exists($this, 'addItunes' . ucfirst($point)) + ) { + require_once 'Zend/Feed/Writer/Exception/InvalidMethodException.php'; + throw new Zend_Feed_Writer_Exception_InvalidMethodException( + 'invalid method: ' . $method + ); + } + if (!array_key_exists($point, $this->_data) + || empty($this->_data[$point]) + ) { + return null; + } + return $this->_data[$point]; + } +} diff --git a/library/Zend/Feed/Writer/Extension/ITunes/Feed.php b/library/Zend/Feed/Writer/Extension/ITunes/Feed.php new file mode 100755 index 000000000..f3a733de7 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/ITunes/Feed.php @@ -0,0 +1,361 @@ +_encoding = $enc; + return $this; + } + + /** + * Get feed encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set a block value of "yes" or "no". You may also set an empty string. + * + * @param string + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesBlock($value) + { + if (!ctype_alpha($value) && strlen($value) > 0) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "block" may only' + . ' contain alphabetic characters'); + } + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "block" may only' + . ' contain a maximum of 255 characters'); + } + $this->_data['block'] = $value; + return $this; + } + + /** + * Add feed authors + * + * @param array $values + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function addItunesAuthors(array $values) + { + foreach ($values as $value) { + $this->addItunesAuthor($value); + } + return $this; + } + + /** + * Add feed author + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function addItunesAuthor($value) + { + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "author" may only' + . ' contain a maximum of 255 characters each'); + } + if (!isset($this->_data['authors'])) { + $this->_data['authors'] = array(); + } + $this->_data['authors'][] = $value; + return $this; + } + + /** + * Set feed categories + * + * @param array $values + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesCategories(array $values) + { + if (!isset($this->_data['categories'])) { + $this->_data['categories'] = array(); + } + foreach ($values as $key=>$value) { + if (!is_array($value)) { + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "category" may only' + . ' contain a maximum of 255 characters each'); + } + $this->_data['categories'][] = $value; + } else { + if (iconv_strlen($key, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "category" may only' + . ' contain a maximum of 255 characters each'); + } + $this->_data['categories'][$key] = array(); + foreach ($value as $val) { + if (iconv_strlen($val, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "category" may only' + . ' contain a maximum of 255 characters each'); + } + $this->_data['categories'][$key][] = $val; + } + } + } + return $this; + } + + /** + * Set feed image (icon) + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesImage($value) + { + if (!Zend_Uri::check($value)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "image" may only' + . ' be a valid URI/IRI'); + } + if (!in_array(substr($value, -3), array('jpg','png'))) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "image" may only' + . ' use file extension "jpg" or "png" which must be the last three' + . ' characters of the URI (i.e. no query string or fragment)'); + } + $this->_data['image'] = $value; + return $this; + } + + /** + * Set feed cumulative duration + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesDuration($value) + { + $value = (string) $value; + if (!ctype_digit($value) + && !preg_match("/^\d+:[0-5]{1}[0-9]{1}$/", $value) + && !preg_match("/^\d+:[0-5]{1}[0-9]{1}:[0-5]{1}[0-9]{1}$/", $value) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "duration" may only' + . ' be of a specified [[HH:]MM:]SS format'); + } + $this->_data['duration'] = $value; + return $this; + } + + /** + * Set "explicit" flag + * + * @param string $value Valid values: "yes", "no" or "clean" + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesExplicit($value) + { + if (!in_array($value, array('yes','no','clean'))) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "explicit" may only' + . ' be one of "yes", "no" or "clean"'); + } + $this->_data['explicit'] = $value; + return $this; + } + + /** + * Set feed keywords + * + * @param array $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesKeywords(array $value) + { + if (count($value) > 12) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "keywords" may only' + . ' contain a maximum of 12 terms'); + } + $concat = implode(',', $value); + if (iconv_strlen($concat, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "keywords" may only' + . ' have a concatenated length of 255 chars where terms are delimited' + . ' by a comma'); + } + $this->_data['keywords'] = $value; + return $this; + } + + /** + * Set new feed URL + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesNewFeedUrl($value) + { + if (!Zend_Uri::check($value)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "newFeedUrl" may only' + . ' be a valid URI/IRI'); + } + $this->_data['newFeedUrl'] = $value; + return $this; + } + + /** + * Add feed owners + * + * @param array $values + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function addItunesOwners(array $values) + { + foreach ($values as $value) { + $this->addItunesOwner($value); + } + return $this; + } + + /** + * Add feed owner + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function addItunesOwner(array $value) + { + if (!isset($value['name']) || !isset($value['email'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "owner" must' + . ' be an array containing keys "name" and "email"'); + } + if (iconv_strlen($value['name'], $this->getEncoding()) > 255 + || iconv_strlen($value['email'], $this->getEncoding()) > 255 + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: any "owner" may only' + . ' contain a maximum of 255 characters each for "name" and "email"'); + } + if (!isset($this->_data['owners'])) { + $this->_data['owners'] = array(); + } + $this->_data['owners'][] = $value; + return $this; + } + + /** + * Set feed subtitle + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesSubtitle($value) + { + if (iconv_strlen($value, $this->getEncoding()) > 255) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "subtitle" may only' + . ' contain a maximum of 255 characters'); + } + $this->_data['subtitle'] = $value; + return $this; + } + + /** + * Set feed summary + * + * @param string $value + * @return Zend_Feed_Writer_Extension_ITunes_Feed + */ + public function setItunesSummary($value) + { + if (iconv_strlen($value, $this->getEncoding()) > 4000) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('invalid parameter: "summary" may only' + . ' contain a maximum of 4000 characters'); + } + $this->_data['summary'] = $value; + return $this; + } + + /** + * Overloading: proxy to internal setters + * + * @param string $method + * @param array $params + * @return mixed + */ + public function __call($method, array $params) + { + $point = Zend_Feed_Writer::lcfirst(substr($method, 9)); + if (!method_exists($this, 'setItunes' . ucfirst($point)) + && !method_exists($this, 'addItunes' . ucfirst($point)) + ) { + require_once 'Zend/Feed/Writer/Exception/InvalidMethodException.php'; + throw new Zend_Feed_Writer_Exception_InvalidMethodException( + 'invalid method: ' . $method + ); + } + if (!array_key_exists($point, $this->_data) || empty($this->_data[$point])) { + return null; + } + return $this->_data[$point]; + } +} diff --git a/library/Zend/Feed/Writer/Extension/ITunes/Renderer/Entry.php b/library/Zend/Feed/Writer/Extension/ITunes/Renderer/Entry.php new file mode 100755 index 000000000..473f680a9 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/ITunes/Renderer/Entry.php @@ -0,0 +1,216 @@ +_setAuthors($this->_dom, $this->_base); + $this->_setBlock($this->_dom, $this->_base); + $this->_setDuration($this->_dom, $this->_base); + $this->_setExplicit($this->_dom, $this->_base); + $this->_setKeywords($this->_dom, $this->_base); + $this->_setSubtitle($this->_dom, $this->_base); + $this->_setSummary($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append namespaces to entry root + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:itunes', + 'http://www.itunes.com/dtds/podcast-1.0.dtd'); + } + + /** + * Set entry authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->getDataContainer()->getItunesAuthors(); + if (!$authors || empty($authors)) { + return; + } + foreach ($authors as $author) { + $el = $dom->createElement('itunes:author'); + $text = $dom->createTextNode($author); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + } + + /** + * Set itunes block + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setBlock(DOMDocument $dom, DOMElement $root) + { + $block = $this->getDataContainer()->getItunesBlock(); + if ($block === null) { + return; + } + $el = $dom->createElement('itunes:block'); + $text = $dom->createTextNode($block); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set entry duration + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDuration(DOMDocument $dom, DOMElement $root) + { + $duration = $this->getDataContainer()->getItunesDuration(); + if (!$duration) { + return; + } + $el = $dom->createElement('itunes:duration'); + $text = $dom->createTextNode($duration); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set explicit flag + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setExplicit(DOMDocument $dom, DOMElement $root) + { + $explicit = $this->getDataContainer()->getItunesExplicit(); + if ($explicit === null) { + return; + } + $el = $dom->createElement('itunes:explicit'); + $text = $dom->createTextNode($explicit); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set entry keywords + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setKeywords(DOMDocument $dom, DOMElement $root) + { + $keywords = $this->getDataContainer()->getItunesKeywords(); + if (!$keywords || empty($keywords)) { + return; + } + $el = $dom->createElement('itunes:keywords'); + $text = $dom->createTextNode(implode(',', $keywords)); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set entry subtitle + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setSubtitle(DOMDocument $dom, DOMElement $root) + { + $subtitle = $this->getDataContainer()->getItunesSubtitle(); + if (!$subtitle) { + return; + } + $el = $dom->createElement('itunes:subtitle'); + $text = $dom->createTextNode($subtitle); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set entry summary + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setSummary(DOMDocument $dom, DOMElement $root) + { + $summary = $this->getDataContainer()->getItunesSummary(); + if (!$summary) { + return; + } + $el = $dom->createElement('itunes:summary'); + $text = $dom->createTextNode($summary); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/ITunes/Renderer/Feed.php b/library/Zend/Feed/Writer/Extension/ITunes/Renderer/Feed.php new file mode 100755 index 000000000..071bfffa4 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/ITunes/Renderer/Feed.php @@ -0,0 +1,320 @@ +_setAuthors($this->_dom, $this->_base); + $this->_setBlock($this->_dom, $this->_base); + $this->_setCategories($this->_dom, $this->_base); + $this->_setImage($this->_dom, $this->_base); + $this->_setDuration($this->_dom, $this->_base); + $this->_setExplicit($this->_dom, $this->_base); + $this->_setKeywords($this->_dom, $this->_base); + $this->_setNewFeedUrl($this->_dom, $this->_base); + $this->_setOwners($this->_dom, $this->_base); + $this->_setSubtitle($this->_dom, $this->_base); + $this->_setSummary($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append feed namespaces + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:itunes', + 'http://www.itunes.com/dtds/podcast-1.0.dtd'); + } + + /** + * Set feed authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->getDataContainer()->getItunesAuthors(); + if (!$authors || empty($authors)) { + return; + } + foreach ($authors as $author) { + $el = $dom->createElement('itunes:author'); + $text = $dom->createTextNode($author); + $el->appendChild($text); + $root->appendChild($el); + } + $this->_called = true; + } + + /** + * Set feed itunes block + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setBlock(DOMDocument $dom, DOMElement $root) + { + $block = $this->getDataContainer()->getItunesBlock(); + if ($block === null) { + return; + } + $el = $dom->createElement('itunes:block'); + $text = $dom->createTextNode($block); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set feed categories + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCategories(DOMDocument $dom, DOMElement $root) + { + $cats = $this->getDataContainer()->getItunesCategories(); + if (!$cats || empty($cats)) { + return; + } + foreach ($cats as $key=>$cat) { + if (!is_array($cat)) { + $el = $dom->createElement('itunes:category'); + $el->setAttribute('text', $cat); + $root->appendChild($el); + } else { + $el = $dom->createElement('itunes:category'); + $el->setAttribute('text', $key); + $root->appendChild($el); + foreach ($cat as $subcat) { + $el2 = $dom->createElement('itunes:category'); + $el2->setAttribute('text', $subcat); + $el->appendChild($el2); + } + } + } + $this->_called = true; + } + + /** + * Set feed image (icon) + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setImage(DOMDocument $dom, DOMElement $root) + { + $image = $this->getDataContainer()->getItunesImage(); + if (!$image) { + return; + } + $el = $dom->createElement('itunes:image'); + $el->setAttribute('href', $image); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set feed cumulative duration + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDuration(DOMDocument $dom, DOMElement $root) + { + $duration = $this->getDataContainer()->getItunesDuration(); + if (!$duration) { + return; + } + $el = $dom->createElement('itunes:duration'); + $text = $dom->createTextNode($duration); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set explicit flag + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setExplicit(DOMDocument $dom, DOMElement $root) + { + $explicit = $this->getDataContainer()->getItunesExplicit(); + if ($explicit === null) { + return; + } + $el = $dom->createElement('itunes:explicit'); + $text = $dom->createTextNode($explicit); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set feed keywords + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setKeywords(DOMDocument $dom, DOMElement $root) + { + $keywords = $this->getDataContainer()->getItunesKeywords(); + if (!$keywords || empty($keywords)) { + return; + } + $el = $dom->createElement('itunes:keywords'); + $text = $dom->createTextNode(implode(',', $keywords)); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set feed's new URL + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setNewFeedUrl(DOMDocument $dom, DOMElement $root) + { + $url = $this->getDataContainer()->getItunesNewFeedUrl(); + if (!$url) { + return; + } + $el = $dom->createElement('itunes:new-feed-url'); + $text = $dom->createTextNode($url); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set feed owners + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setOwners(DOMDocument $dom, DOMElement $root) + { + $owners = $this->getDataContainer()->getItunesOwners(); + if (!$owners || empty($owners)) { + return; + } + foreach ($owners as $owner) { + $el = $dom->createElement('itunes:owner'); + $name = $dom->createElement('itunes:name'); + $text = $dom->createTextNode($owner['name']); + $name->appendChild($text); + $email = $dom->createElement('itunes:email'); + $text = $dom->createTextNode($owner['email']); + $email->appendChild($text); + $root->appendChild($el); + $el->appendChild($name); + $el->appendChild($email); + } + $this->_called = true; + } + + /** + * Set feed subtitle + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setSubtitle(DOMDocument $dom, DOMElement $root) + { + $subtitle = $this->getDataContainer()->getItunesSubtitle(); + if (!$subtitle) { + return; + } + $el = $dom->createElement('itunes:subtitle'); + $text = $dom->createTextNode($subtitle); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } + + /** + * Set feed summary + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setSummary(DOMDocument $dom, DOMElement $root) + { + $summary = $this->getDataContainer()->getItunesSummary(); + if (!$summary) { + return; + } + $el = $dom->createElement('itunes:summary'); + $text = $dom->createTextNode($summary); + $el->appendChild($text); + $root->appendChild($el); + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/RendererAbstract.php b/library/Zend/Feed/Writer/Extension/RendererAbstract.php new file mode 100755 index 000000000..744083581 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/RendererAbstract.php @@ -0,0 +1,180 @@ +_container = $container; + } + + /** + * Set feed encoding + * + * @param string $enc + * @return Zend_Feed_Writer_Extension_RendererAbstract + */ + public function setEncoding($enc) + { + $this->_encoding = $enc; + return $this; + } + + /** + * Get feed encoding + * + * @return void + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set DOMDocument and DOMElement on which to operate + * + * @param DOMDocument $dom + * @param DOMElement $base + * @return Zend_Feed_Writer_Extension_RendererAbstract + */ + public function setDomDocument(DOMDocument $dom, DOMElement $base) + { + $this->_dom = $dom; + $this->_base = $base; + return $this; + } + + /** + * Get data container being rendered + * + * @return mixed + */ + public function getDataContainer() + { + return $this->_container; + } + + /** + * Set feed type + * + * @param string $type + * @return Zend_Feed_Writer_Extension_RendererAbstract + */ + public function setType($type) + { + $this->_type = $type; + return $this; + } + + /** + * Get feedtype + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Set root element of document + * + * @param DOMElement $root + * @return Zend_Feed_Writer_Extension_RendererAbstract + */ + public function setRootElement(DOMElement $root) + { + $this->_rootElement = $root; + return $this; + } + + /** + * Get root element + * + * @return DOMElement + */ + public function getRootElement() + { + return $this->_rootElement; + } + + /** + * Append namespaces to feed + * + * @return void + */ + abstract protected function _appendNamespaces(); +} diff --git a/library/Zend/Feed/Writer/Extension/RendererInterface.php b/library/Zend/Feed/Writer/Extension/RendererInterface.php new file mode 100755 index 000000000..4c4e9ccbb --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/RendererInterface.php @@ -0,0 +1,60 @@ +getType()) == 'atom') { + return; // RSS 2.0 only + } + $this->_setCommentCount($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append entry namespaces + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:slash', + 'http://purl.org/rss/1.0/modules/slash/'); + } + + /** + * Set entry comment count + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentCount(DOMDocument $dom, DOMElement $root) + { + $count = $this->getDataContainer()->getCommentCount(); + if (!$count) { + return; + } + $tcount = $this->_dom->createElement('slash:comments'); + $tcount->nodeValue = $count; + $root->appendChild($tcount); + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/Threading/Renderer/Entry.php b/library/Zend/Feed/Writer/Extension/Threading/Renderer/Entry.php new file mode 100755 index 000000000..002550fe0 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/Threading/Renderer/Entry.php @@ -0,0 +1,145 @@ +getType()) == 'rss') { + return; // Atom 1.0 only + } + $this->_setCommentLink($this->_dom, $this->_base); + $this->_setCommentFeedLinks($this->_dom, $this->_base); + $this->_setCommentCount($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append entry namespaces + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:thr', + 'http://purl.org/syndication/thread/1.0'); + } + + /** + * Set comment link + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentLink(DOMDocument $dom, DOMElement $root) + { + $link = $this->getDataContainer()->getCommentLink(); + if (!$link) { + return; + } + $clink = $this->_dom->createElement('link'); + $clink->setAttribute('rel', 'replies'); + $clink->setAttribute('type', 'text/html'); + $clink->setAttribute('href', $link); + $count = $this->getDataContainer()->getCommentCount(); + if ($count !== null) { + $clink->setAttribute('thr:count', $count); + } + $root->appendChild($clink); + $this->_called = true; + } + + /** + * Set comment feed links + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root) + { + $links = $this->getDataContainer()->getCommentFeedLinks(); + if (!$links || empty($links)) { + return; + } + foreach ($links as $link) { + $flink = $this->_dom->createElement('link'); + $flink->setAttribute('rel', 'replies'); + $flink->setAttribute('type', 'application/'. $link['type'] .'+xml'); + $flink->setAttribute('href', $link['uri']); + $count = $this->getDataContainer()->getCommentCount(); + if ($count !== null) { + $flink->setAttribute('thr:count', $count); + } + $root->appendChild($flink); + $this->_called = true; + } + } + + /** + * Set entry comment count + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentCount(DOMDocument $dom, DOMElement $root) + { + $count = $this->getDataContainer()->getCommentCount(); + if ($count === null) { + return; + } + $tcount = $this->_dom->createElement('thr:total'); + $tcount->nodeValue = $count; + $root->appendChild($tcount); + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Extension/WellFormedWeb/Renderer/Entry.php b/library/Zend/Feed/Writer/Extension/WellFormedWeb/Renderer/Entry.php new file mode 100755 index 000000000..ff2209241 --- /dev/null +++ b/library/Zend/Feed/Writer/Extension/WellFormedWeb/Renderer/Entry.php @@ -0,0 +1,96 @@ +getType()) == 'atom') { + return; // RSS 2.0 only + } + $this->_setCommentFeedLinks($this->_dom, $this->_base); + if ($this->_called) { + $this->_appendNamespaces(); + } + } + + /** + * Append entry namespaces + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:wfw', + 'http://wellformedweb.org/CommentAPI/'); + } + + /** + * Set entry comment feed links + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root) + { + $links = $this->getDataContainer()->getCommentFeedLinks(); + if (!$links || empty($links)) { + return; + } + foreach ($links as $link) { + if ($link['type'] == 'rss') { + $flink = $this->_dom->createElement('wfw:commentRss'); + $text = $dom->createTextNode($link['uri']); + $flink->appendChild($text); + $root->appendChild($flink); + } + } + $this->_called = true; + } +} diff --git a/library/Zend/Feed/Writer/Feed.php b/library/Zend/Feed/Writer/Feed.php new file mode 100755 index 000000000..c0c13636b --- /dev/null +++ b/library/Zend/Feed/Writer/Feed.php @@ -0,0 +1,282 @@ +getEncoding()) { + $entry->setEncoding($this->getEncoding()); + } + $entry->setType($this->getType()); + return $entry; + } + + /** + * Appends a Zend_Feed_Writer_Deleted object representing a new entry tombstone + * to the feed data container's internal group of entries. + * + * @param Zend_Feed_Writer_Deleted $entry + */ + public function addTombstone(Zend_Feed_Writer_Deleted $deleted) + { + $this->_entries[] = $deleted; + } + + /** + * Creates a new Zend_Feed_Writer_Deleted data container for use. This is NOT + * added to the current feed automatically, but is necessary to create a + * container with some initial values preset based on the current feed data. + * + * @return Zend_Feed_Writer_Deleted + */ + public function createTombstone() + { + $deleted = new Zend_Feed_Writer_Deleted; + if ($this->getEncoding()) { + $deleted->setEncoding($this->getEncoding()); + } + $deleted->setType($this->getType()); + return $deleted; + } + + /** + * Appends a Zend_Feed_Writer_Entry object representing a new entry/item + * the feed data container's internal group of entries. + * + * @param Zend_Feed_Writer_Entry $entry + */ + public function addEntry(Zend_Feed_Writer_Entry $entry) + { + $this->_entries[] = $entry; + } + + /** + * Removes a specific indexed entry from the internal queue. Entries must be + * added to a feed container in order to be indexed. + * + * @param int $index + */ + public function removeEntry($index) + { + if (isset($this->_entries[$index])) { + unset($this->_entries[$index]); + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Undefined index: ' . $index . '. Entry does not exist.'); + } + + /** + * Retrieve a specific indexed entry from the internal queue. Entries must be + * added to a feed container in order to be indexed. + * + * @param int $index + */ + public function getEntry($index = 0) + { + if (isset($this->_entries[$index])) { + return $this->_entries[$index]; + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Undefined index: ' . $index . '. Entry does not exist.'); + } + + /** + * Orders all indexed entries by date, thus offering date ordered readable + * content where a parser (or Homo Sapien) ignores the generic rule that + * XML element order is irrelevant and has no intrinsic meaning. + * + * Using this method will alter the original indexation. + * + * @return void + */ + public function orderByDate() + { + /** + * Could do with some improvement for performance perhaps + */ + $timestamp = time(); + $entries = array(); + foreach ($this->_entries as $entry) { + if ($entry->getDateModified()) { + $timestamp = (int) $entry->getDateModified()->get(Zend_Date::TIMESTAMP); + } elseif ($entry->getDateCreated()) { + $timestamp = (int) $entry->getDateCreated()->get(Zend_Date::TIMESTAMP); + } + $entries[$timestamp] = $entry; + } + krsort($entries, SORT_NUMERIC); + $this->_entries = array_values($entries); + } + + /** + * Get the number of feed entries. + * Required by the Iterator interface. + * + * @return int + */ + public function count() + { + return count($this->_entries); + } + + /** + * Return the current entry + * + * @return Zend_Feed_Reader_Entry_Interface + */ + public function current() + { + return $this->_entries[$this->key()]; + } + + /** + * Return the current feed key + * + * @return unknown + */ + public function key() + { + return $this->_entriesKey; + } + + /** + * Move the feed pointer forward + * + * @return void + */ + public function next() + { + ++$this->_entriesKey; + } + + /** + * Reset the pointer in the feed object + * + * @return void + */ + public function rewind() + { + $this->_entriesKey = 0; + } + + /** + * Check to see if the iterator is still valid + * + * @return boolean + */ + public function valid() + { + return 0 <= $this->_entriesKey && $this->_entriesKey < $this->count(); + } + + /** + * Attempt to build and return the feed resulting from the data set + * + * @param string $type The feed type "rss" or "atom" to export as + * @param bool $ignoreExceptions + * @return string + */ + public function export($type, $ignoreExceptions = false) + { + $this->setType(strtolower($type)); + $type = ucfirst($this->getType()); + if ($type !== 'Rss' && $type !== 'Atom') { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid feed type specified: ' . $type . '.' + . ' Should be one of "rss" or "atom".'); + } + $renderClass = 'Zend_Feed_Writer_Renderer_Feed_' . $type; + $renderer = new $renderClass($this); + if ($ignoreExceptions) { + $renderer->ignoreExceptions(); + } + return $renderer->render()->saveXml(); + } + +} diff --git a/library/Zend/Feed/Writer/Feed/FeedAbstract.php b/library/Zend/Feed/Writer/Feed/FeedAbstract.php new file mode 100755 index 000000000..2cdc9e3b3 --- /dev/null +++ b/library/Zend/Feed/Writer/Feed/FeedAbstract.php @@ -0,0 +1,872 @@ +_loadExtensions(); + } + + /** + * Set a single author + * + * @param int $index + * @return string|null + */ + public function addAuthor($name, $email = null, $uri = null) + { + $author = array(); + if (is_array($name)) { + if (!array_key_exists('name', $name) || empty($name['name']) || !is_string($name['name'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: author array must include a "name" key with a non-empty string value'); + } + $author['name'] = $name['name']; + if (isset($name['email'])) { + if (empty($name['email']) || !is_string($name['email'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "email" array value must be a non-empty string'); + } + $author['email'] = $name['email']; + } + if (isset($name['uri'])) { + if (empty($name['uri']) || !is_string($name['uri']) || !Zend_Uri::check($name['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" array value must be a non-empty string and valid URI/IRI'); + } + $author['uri'] = $name['uri']; + } + } else { + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string value'); + } + $author['name'] = $name; + if (isset($email)) { + if (empty($email) || !is_string($email)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "email" value must be a non-empty string'); + } + $author['email'] = $email; + } + if (isset($uri)) { + if (empty($uri) || !is_string($uri) || !Zend_Uri::check($uri)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" value must be a non-empty string and valid URI/IRI'); + } + $author['uri'] = $uri; + } + } + $this->_data['authors'][] = $author; + } + + /** + * Set an array with feed authors + * + * @return array + */ + public function addAuthors(array $authors) + { + foreach($authors as $author) { + $this->addAuthor($author); + } + } + + /** + * Set the copyright entry + * + * @return string|null + */ + public function setCopyright($copyright) + { + if (empty($copyright) || !is_string($copyright)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['copyright'] = $copyright; + } + + /** + * Set the feed creation date + * + * @param null|integer|Zend_Date + */ + public function setDateCreated($date = null) + { + $zdate = null; + if ($date === null) { + $zdate = new Zend_Date; + } elseif ($date instanceof Zend_Date) { + $zdate = $date; + } elseif (ctype_digit((string)$date)) { + $zdate = new Zend_Date($date, Zend_Date::TIMESTAMP); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid Zend_Date object or UNIX Timestamp passed as parameter'); + } + $this->_data['dateCreated'] = $zdate; + } + + /** + * Set the feed modification date + * + * @param null|integer|Zend_Date + */ + public function setDateModified($date = null) + { + $zdate = null; + if ($date === null) { + $zdate = new Zend_Date; + } elseif ($date instanceof Zend_Date) { + $zdate = $date; + } elseif (ctype_digit((string)$date)) { + $zdate = new Zend_Date($date, Zend_Date::TIMESTAMP); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid Zend_Date object or UNIX Timestamp passed as parameter'); + } + $this->_data['dateModified'] = $zdate; + } + + /** + * Set the feed last-build date. Ignored for Atom 1.0. + * + * @param null|integer|Zend_Date + */ + public function setLastBuildDate($date = null) + { + $zdate = null; + if ($date === null) { + $zdate = new Zend_Date; + } elseif ($date instanceof Zend_Date) { + $zdate = $date; + } elseif (ctype_digit((string)$date)) { + $zdate = new Zend_Date($date, Zend_Date::TIMESTAMP); + } else { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid Zend_Date object or UNIX Timestamp passed as parameter'); + } + $this->_data['lastBuildDate'] = $zdate; + } + + /** + * Set the feed description + * + * @return string|null + */ + public function setDescription($description) + { + if (empty($description) || !is_string($description)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['description'] = $description; + } + + /** + * Set the feed generator entry + * + * @return string|null + */ + public function setGenerator($name, $version = null, $uri = null) + { + if (is_array($name)) { + $data = $name; + if (empty($data['name']) || !is_string($data['name'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string'); + } + $generator = array('name' => $data['name']); + if (isset($data['version'])) { + if (empty($data['version']) || !is_string($data['version'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "version" must be a non-empty string'); + } + $generator['version'] = $data['version']; + } + if (isset($data['uri'])) { + if (empty($data['uri']) || !is_string($data['uri']) || !Zend_Uri::check($data['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI'); + } + $generator['uri'] = $data['uri']; + } + } else { + if (empty($name) || !is_string($name)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "name" must be a non-empty string'); + } + $generator = array('name' => $name); + if (isset($version)) { + if (empty($version) || !is_string($version)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "version" must be a non-empty string'); + } + $generator['version'] = $version; + } + if (isset($uri)) { + if (empty($uri) || !is_string($uri) || !Zend_Uri::check($uri)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "uri" must be a non-empty string and a valid URI/IRI'); + } + $generator['uri'] = $uri; + } + } + $this->_data['generator'] = $generator; + } + + /** + * Set the feed ID - URI or URN (via PCRE pattern) supported + * + * @param string $id + */ + public function setId($id) + { + if ((empty($id) || !is_string($id) || !Zend_Uri::check($id)) && + !preg_match("#^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{1,31}:([a-zA-Z0-9\(\)\+\,\.\:\=\@\;\$\_\!\*\-]|%[0-9a-fA-F]{2})*#", $id) + && !$this->_validateTagUri($id)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string and valid URI/IRI'); + } + $this->_data['id'] = $id; + } + + /** + * Validate a URI using the tag scheme (RFC 4151) + * + * @param string $id + * @return bool + */ + protected function _validateTagUri($id) + { + if (preg_match('/^tag:(?.*),(?\d{4}-?\d{0,2}-?\d{0,2}):(?.*)(.*:)*$/', $id, $matches)) { + $dvalid = false; + $nvalid = false; + $date = $matches['date']; + $d6 = strtotime($date); + if ((strlen($date) == 4) && $date <= date('Y')) { + $dvalid = true; + } elseif ((strlen($date) == 7) && ($d6 < strtotime("now"))) { + $dvalid = true; + } elseif ((strlen($date) == 10) && ($d6 < strtotime("now"))) { + $dvalid = true; + } + $validator = new Zend_Validate_EmailAddress; + if ($validator->isValid($matches['name'])) { + $nvalid = true; + } else { + $nvalid = $validator->isValid('info@' . $matches['name']); + } + return $dvalid && $nvalid; + + } + return false; + } + + /** + * Set a feed image (URI at minimum). Parameter is a single array with the + * required key 'uri'. When rendering as RSS, the required keys are 'uri', + * 'title' and 'link'. RSS also specifies three optional parameters 'width', + * 'height' and 'description'. Only 'uri' is required and used for Atom rendering. + * + * @param array $data + */ + public function setImage(array $data) + { + if (empty($data['uri']) || !is_string($data['uri']) + || !Zend_Uri::check($data['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter \'uri\'' + . ' must be a non-empty string and valid URI/IRI'); + } + $this->_data['image'] = $data; + } + + /** + * Set a feed icon (URI at minimum). Parameter is a single array with the + * required key 'uri'. Only 'uri' is required and used for Atom rendering. + * RSS does not support an Icon tag except via Atom 1.0 as an extension. + * + * @param array $data + */ + public function setIcon(array $data) + { + if (empty($data['uri']) || !is_string($data['uri']) + || !Zend_Uri::check($data['uri'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter \'uri\'' + . ' must be a non-empty string and valid URI/IRI'); + } + $this->_data['icon'] = $data; + } + + /** + * Set the feed language + * + * @return string|null + */ + public function setLanguage($language) + { + if (empty($language) || !is_string($language)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['language'] = $language; + } + + /** + * Set a link to the HTML source + * + * @param string $link + */ + public function setLink($link) + { + if (empty($link) || !is_string($link) || !Zend_Uri::check($link)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string and valid URI/IRI'); + } + $this->_data['link'] = $link; + } + + /** + * Set a link to an XML feed for any feed type/version + * + * @return string|null + */ + public function setFeedLink($link, $type) + { + if (empty($link) || !is_string($link) || !Zend_Uri::check($link)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "link"" must be a non-empty string and valid URI/IRI'); + } + if (!in_array(strtolower($type), array('rss', 'rdf', 'atom'))) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "type"; You must declare the type of feed the link points to, i.e. RSS, RDF or Atom'); + } + $this->_data['feedLinks'][strtolower($type)] = $link; + } + + /** + * Set the feed title + * + * @return string|null + */ + public function setTitle($title) + { + if (empty($title) || !is_string($title)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['title'] = $title; + } + + /** + * Set the feed character encoding + * + * @param string $encoding + */ + public function setEncoding($encoding) + { + if (empty($encoding) || !is_string($encoding)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: parameter must be a non-empty string'); + } + $this->_data['encoding'] = $encoding; + } + + /** + * Set the feed's base URL + * + * @param string $url + */ + public function setBaseUrl($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "url" array value' + . ' must be a non-empty string and valid URI/IRI'); + } + $this->_data['baseUrl'] = $url; + } + + /** + * Add a Pubsubhubbub hub endpoint URL + * + * @param string $url + */ + public function addHub($url) + { + if (empty($url) || !is_string($url) || !Zend_Uri::check($url)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: "url" array value' + . ' must be a non-empty string and valid URI/IRI'); + } + if (!isset($this->_data['hubs'])) { + $this->_data['hubs'] = array(); + } + $this->_data['hubs'][] = $url; + } + + /** + * Add Pubsubhubbub hub endpoint URLs + * + * @param array $urls + */ + public function addHubs(array $urls) + { + foreach ($urls as $url) { + $this->addHub($url); + } + } + + /** + * Add a feed category + * + * @param string $category + */ + public function addCategory(array $category) + { + if (!isset($category['term'])) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Each category must be an array and ' + . 'contain at least a "term" element containing the machine ' + . ' readable category name'); + } + if (isset($category['scheme'])) { + if (empty($category['scheme']) + || !is_string($category['scheme']) + || !Zend_Uri::check($category['scheme']) + ) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('The Atom scheme or RSS domain of' + . ' a category must be a valid URI'); + } + } + if (!isset($this->_data['categories'])) { + $this->_data['categories'] = array(); + } + $this->_data['categories'][] = $category; + } + + /** + * Set an array of feed categories + * + * @param array $categories + */ + public function addCategories(array $categories) + { + foreach ($categories as $category) { + $this->addCategory($category); + } + } + + /** + * Get a single author + * + * @param int $index + * @return string|null + */ + public function getAuthor($index = 0) + { + if (isset($this->_data['authors'][$index])) { + return $this->_data['authors'][$index]; + } else { + return null; + } + } + + /** + * Get an array with feed authors + * + * @return array + */ + public function getAuthors() + { + if (!array_key_exists('authors', $this->_data)) { + return null; + } + return $this->_data['authors']; + } + + /** + * Get the copyright entry + * + * @return string|null + */ + public function getCopyright() + { + if (!array_key_exists('copyright', $this->_data)) { + return null; + } + return $this->_data['copyright']; + } + + /** + * Get the feed creation date + * + * @return string|null + */ + public function getDateCreated() + { + if (!array_key_exists('dateCreated', $this->_data)) { + return null; + } + return $this->_data['dateCreated']; + } + + /** + * Get the feed modification date + * + * @return string|null + */ + public function getDateModified() + { + if (!array_key_exists('dateModified', $this->_data)) { + return null; + } + return $this->_data['dateModified']; + } + + /** + * Get the feed last-build date + * + * @return string|null + */ + public function getLastBuildDate() + { + if (!array_key_exists('lastBuildDate', $this->_data)) { + return null; + } + return $this->_data['lastBuildDate']; + } + + /** + * Get the feed description + * + * @return string|null + */ + public function getDescription() + { + if (!array_key_exists('description', $this->_data)) { + return null; + } + return $this->_data['description']; + } + + /** + * Get the feed generator entry + * + * @return string|null + */ + public function getGenerator() + { + if (!array_key_exists('generator', $this->_data)) { + return null; + } + return $this->_data['generator']; + } + + /** + * Get the feed ID + * + * @return string|null + */ + public function getId() + { + if (!array_key_exists('id', $this->_data)) { + return null; + } + return $this->_data['id']; + } + + /** + * Get the feed image URI + * + * @return array + */ + public function getImage() + { + if (!array_key_exists('image', $this->_data)) { + return null; + } + return $this->_data['image']; + } + + /** + * Get the feed icon URI + * + * @return array + */ + public function getIcon() + { + if (!array_key_exists('icon', $this->_data)) { + return null; + } + return $this->_data['icon']; + } + + /** + * Get the feed language + * + * @return string|null + */ + public function getLanguage() + { + if (!array_key_exists('language', $this->_data)) { + return null; + } + return $this->_data['language']; + } + + /** + * Get a link to the HTML source + * + * @return string|null + */ + public function getLink() + { + if (!array_key_exists('link', $this->_data)) { + return null; + } + return $this->_data['link']; + } + + /** + * Get a link to the XML feed + * + * @return string|null + */ + public function getFeedLinks() + { + if (!array_key_exists('feedLinks', $this->_data)) { + return null; + } + return $this->_data['feedLinks']; + } + + /** + * Get the feed title + * + * @return string|null + */ + public function getTitle() + { + if (!array_key_exists('title', $this->_data)) { + return null; + } + return $this->_data['title']; + } + + /** + * Get the feed character encoding + * + * @return string|null + */ + public function getEncoding() + { + if (!array_key_exists('encoding', $this->_data)) { + return 'UTF-8'; + } + return $this->_data['encoding']; + } + + /** + * Get the feed's base url + * + * @return string|null + */ + public function getBaseUrl() + { + if (!array_key_exists('baseUrl', $this->_data)) { + return null; + } + return $this->_data['baseUrl']; + } + + /** + * Get the URLs used as Pubsubhubbub hubs endpoints + * + * @return string|null + */ + public function getHubs() + { + if (!array_key_exists('hubs', $this->_data)) { + return null; + } + return $this->_data['hubs']; + } + + /** + * Get the feed categories + * + * @return string|null + */ + public function getCategories() + { + if (!array_key_exists('categories', $this->_data)) { + return null; + } + return $this->_data['categories']; + } + + /** + * Resets the instance and deletes all data + * + * @return void + */ + public function reset() + { + $this->_data = array(); + } + + /** + * Set the current feed type being exported to "rss" or "atom". This allows + * other objects to gracefully choose whether to execute or not, depending + * on their appropriateness for the current type, e.g. renderers. + * + * @param string $type + */ + public function setType($type) + { + $this->_type = $type; + } + + /** + * Retrieve the current or last feed type exported. + * + * @return string Value will be "rss" or "atom" + */ + public function getType() + { + return $this->_type; + } + + /** + * Unset a specific data point + * + * @param string $name + */ + public function remove($name) + { + if (isset($this->_data[$name])) { + unset($this->_data[$name]); + } + } + + /** + * Method overloading: call given method on first extension implementing it + * + * @param string $method + * @param array $args + * @return mixed + * @throws Zend_Feed_Exception if no extensions implements the method + */ + public function __call($method, $args) + { + foreach ($this->_extensions as $extension) { + try { + return call_user_func_array(array($extension, $method), $args); + } catch (Zend_Feed_Writer_Exception_InvalidMethodException $e) { + } + } + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Method: ' . $method + . ' does not exist and could not be located on a registered Extension'); + } + + /** + * Load extensions from Zend_Feed_Writer + * + * @return void + */ + protected function _loadExtensions() + { + $all = Zend_Feed_Writer::getExtensions(); + $exts = $all['feed']; + foreach ($exts as $ext) { + $className = Zend_Feed_Writer::getPluginLoader()->getClassName($ext); + $this->_extensions[$ext] = new $className(); + $this->_extensions[$ext]->setEncoding($this->getEncoding()); + } + } +} diff --git a/library/Zend/Feed/Writer/Renderer/Entry/Atom.php b/library/Zend/Feed/Writer/Renderer/Entry/Atom.php new file mode 100755 index 000000000..02c228960 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Entry/Atom.php @@ -0,0 +1,448 @@ +_dom = new DOMDocument('1.0', $this->_container->getEncoding()); + $this->_dom->formatOutput = true; + $entry = $this->_dom->createElementNS(Zend_Feed_Writer::NAMESPACE_ATOM_10, 'entry'); + $this->_dom->appendChild($entry); + + $this->_setSource($this->_dom, $entry); + $this->_setTitle($this->_dom, $entry); + $this->_setDescription($this->_dom, $entry); + $this->_setDateCreated($this->_dom, $entry); + $this->_setDateModified($this->_dom, $entry); + $this->_setLink($this->_dom, $entry); + $this->_setId($this->_dom, $entry); + $this->_setAuthors($this->_dom, $entry); + $this->_setEnclosure($this->_dom, $entry); + $this->_setContent($this->_dom, $entry); + $this->_setCategories($this->_dom, $entry); + + foreach ($this->_extensions as $ext) { + $ext->setType($this->getType()); + $ext->setRootElement($this->getRootElement()); + $ext->setDomDocument($this->getDomDocument(), $entry); + $ext->render(); + } + + return $this; + } + + /** + * Set entry title + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setTitle(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getTitle()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 entry elements MUST contain exactly one' + . ' atom:title element but a title has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $title = $dom->createElement('title'); + $root->appendChild($title); + $title->setAttribute('type', 'html'); + $cdata = $dom->createCDATASection($this->getDataContainer()->getTitle()); + $title->appendChild($cdata); + } + + /** + * Set entry description + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDescription(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDescription()) { + return; // unless src content or base64 + } + $subtitle = $dom->createElement('summary'); + $root->appendChild($subtitle); + $subtitle->setAttribute('type', 'html'); + $cdata = $dom->createCDATASection( + $this->getDataContainer()->getDescription() + ); + $subtitle->appendChild($cdata); + } + + /** + * Set date entry was modified + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateModified(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDateModified()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 entry elements MUST contain exactly one' + . ' atom:updated element but a modification date has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + $updated = $dom->createElement('updated'); + $root->appendChild($updated); + $text = $dom->createTextNode( + $this->getDataContainer()->getDateModified()->get(Zend_Date::ISO_8601) + ); + $updated->appendChild($text); + } + + /** + * Set date entry was created + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateCreated(DOMDocument $dom, DOMElement $root) + { + if (!$this->getDataContainer()->getDateCreated()) { + return; + } + $el = $dom->createElement('published'); + $root->appendChild($el); + $text = $dom->createTextNode( + $this->getDataContainer()->getDateCreated()->get(Zend_Date::ISO_8601) + ); + $el->appendChild($text); + } + + /** + * Set entry authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->_container->getAuthors(); + if ((!$authors || empty($authors))) { + /** + * This will actually trigger an Exception at the feed level if + * a feed level author is not set. + */ + return; + } + foreach ($authors as $data) { + $author = $this->_dom->createElement('author'); + $name = $this->_dom->createElement('name'); + $author->appendChild($name); + $root->appendChild($author); + $text = $dom->createTextNode($data['name']); + $name->appendChild($text); + if (array_key_exists('email', $data)) { + $email = $this->_dom->createElement('email'); + $author->appendChild($email); + $text = $dom->createTextNode($data['email']); + $email->appendChild($text); + } + if (array_key_exists('uri', $data)) { + $uri = $this->_dom->createElement('uri'); + $author->appendChild($uri); + $text = $dom->createTextNode($data['uri']); + $uri->appendChild($text); + } + } + } + + /** + * Set entry enclosure + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setEnclosure(DOMDocument $dom, DOMElement $root) + { + $data = $this->_container->getEnclosure(); + if ((!$data || empty($data))) { + return; + } + $enclosure = $this->_dom->createElement('link'); + $enclosure->setAttribute('rel', 'enclosure'); + if (isset($data['type'])) { + $enclosure->setAttribute('type', $data['type']); + } + if (isset($data['length'])) { + $enclosure->setAttribute('length', $data['length']); + } + $enclosure->setAttribute('href', $data['uri']); + $root->appendChild($enclosure); + } + + protected function _setLink(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getLink()) { + return; + } + $link = $dom->createElement('link'); + $root->appendChild($link); + $link->setAttribute('rel', 'alternate'); + $link->setAttribute('type', 'text/html'); + $link->setAttribute('href', $this->getDataContainer()->getLink()); + } + + /** + * Set entry identifier + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setId(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getId() + && !$this->getDataContainer()->getLink()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 entry elements MUST contain exactly one ' + . 'atom:id element, or as an alternative, we can use the same ' + . 'value as atom:link however neither a suitable link nor an ' + . 'id have been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + if (!$this->getDataContainer()->getId()) { + $this->getDataContainer()->setId( + $this->getDataContainer()->getLink()); + } + if (!Zend_Uri::check($this->getDataContainer()->getId()) && + !preg_match("#^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{1,31}:([a-zA-Z0-9\(\)\+\,\.\:\=\@\;\$\_\!\*\-]|%[0-9a-fA-F]{2})*#", + $this->getDataContainer()->getId() + ) && !$this->_validateTagUri($this->getDataContainer()->getId())) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Atom 1.0 IDs must be a valid URI/IRI'); + } + $id = $dom->createElement('id'); + $root->appendChild($id); + $text = $dom->createTextNode($this->getDataContainer()->getId()); + $id->appendChild($text); + } + + /** + * Validate a URI using the tag scheme (RFC 4151) + * + * @param string $id + * @return bool + */ + protected function _validateTagUri($id) + { + if (preg_match('/^tag:(?.*),(?\d{4}-?\d{0,2}-?\d{0,2}):(?.*)(.*:)*$/', $id, $matches)) { + $dvalid = false; + $nvalid = false; + $date = $matches['date']; + $d6 = strtotime($date); + if ((strlen($date) == 4) && $date <= date('Y')) { + $dvalid = true; + } elseif ((strlen($date) == 7) && ($d6 < strtotime("now"))) { + $dvalid = true; + } elseif ((strlen($date) == 10) && ($d6 < strtotime("now"))) { + $dvalid = true; + } + $validator = new Zend_Validate_EmailAddress; + if ($validator->isValid($matches['name'])) { + $nvalid = true; + } else { + $nvalid = $validator->isValid('info@' . $matches['name']); + } + return $dvalid && $nvalid; + + } + return false; + } + + /** + * Set entry content + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setContent(DOMDocument $dom, DOMElement $root) + { + $content = $this->getDataContainer()->getContent(); + if (!$content && !$this->getDataContainer()->getLink()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 entry elements MUST contain exactly one ' + . 'atom:content element, or as an alternative, at least one link ' + . 'with a rel attribute of "alternate" to indicate an alternate ' + . 'method to consume the content.'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + if (!$content) { + return; + } + $element = $dom->createElement('content'); + $element->setAttribute('type', 'xhtml'); + $xhtmlElement = $this->_loadXhtml($content); + $xhtml = $dom->importNode($xhtmlElement, true); + $element->appendChild($xhtml); + $root->appendChild($element); + } + + /** + * Load a HTML string and attempt to normalise to XML + */ + protected function _loadXhtml($content) + { + $xhtml = ''; + if (class_exists('tidy', false)) { + $tidy = new tidy; + $config = array( + 'output-xhtml' => true, + 'show-body-only' => true, + 'quote-nbsp' => false + ); + $encoding = str_replace('-', '', $this->getEncoding()); + $tidy->parseString($content, $config, $encoding); + $tidy->cleanRepair(); + $xhtml = (string) $tidy; + } else { + $xhtml = $content; + } + $xhtml = preg_replace(array( + "/(<[\/]?)([a-zA-Z]+)/" + ), '$1xhtml:$2', $xhtml); + $dom = new DOMDocument('1.0', $this->getEncoding()); + + $dom = Zend_Xml_Security::scan('' + . $xhtml . '', $dom); + return $dom->documentElement; + } + + /** + * Set entry cateories + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCategories(DOMDocument $dom, DOMElement $root) + { + $categories = $this->getDataContainer()->getCategories(); + if (!$categories) { + return; + } + foreach ($categories as $cat) { + $category = $dom->createElement('category'); + $category->setAttribute('term', $cat['term']); + if (isset($cat['label'])) { + $category->setAttribute('label', $cat['label']); + } else { + $category->setAttribute('label', $cat['term']); + } + if (isset($cat['scheme'])) { + $category->setAttribute('scheme', $cat['scheme']); + } + $root->appendChild($category); + } + } + + /** + * Append Source element (Atom 1.0 Feed Metadata) + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setSource(DOMDocument $dom, DOMElement $root) + { + $source = $this->getDataContainer()->getSource(); + if (!$source) { + return; + } + $renderer = new Zend_Feed_Writer_Renderer_Feed_Atom_Source($source); + $renderer->setType($this->getType()); + $element = $renderer->render()->getElement(); + $imported = $dom->importNode($element, true); + $root->appendChild($imported); + } +} diff --git a/library/Zend/Feed/Writer/Renderer/Entry/Atom/Deleted.php b/library/Zend/Feed/Writer/Renderer/Entry/Atom/Deleted.php new file mode 100755 index 000000000..6063d0444 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Entry/Atom/Deleted.php @@ -0,0 +1,121 @@ +_dom = new DOMDocument('1.0', $this->_container->getEncoding()); + $this->_dom->formatOutput = true; + $entry = $this->_dom->createElement('at:deleted-entry'); + $this->_dom->appendChild($entry); + + $entry->setAttribute('ref', $this->_container->getReference()); + $entry->setAttribute('when', $this->_container->getWhen()->get(Zend_Date::ISO_8601)); + + $this->_setBy($this->_dom, $entry); + $this->_setComment($this->_dom, $entry); + + return $this; + } + + /** + * Set tombstone comment + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setComment(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getComment()) { + return; + } + $c = $dom->createElement('at:comment'); + $root->appendChild($c); + $c->setAttribute('type', 'html'); + $cdata = $dom->createCDATASection($this->getDataContainer()->getComment()); + $c->appendChild($cdata); + } + + /** + * Set entry authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setBy(DOMDocument $dom, DOMElement $root) + { + $data = $this->_container->getBy(); + if ((!$data || empty($data))) { + return; + } + $author = $this->_dom->createElement('at:by'); + $name = $this->_dom->createElement('name'); + $author->appendChild($name); + $root->appendChild($author); + $text = $dom->createTextNode($data['name']); + $name->appendChild($text); + if (array_key_exists('email', $data)) { + $email = $this->_dom->createElement('email'); + $author->appendChild($email); + $text = $dom->createTextNode($data['email']); + $email->appendChild($text); + } + if (array_key_exists('uri', $data)) { + $uri = $this->_dom->createElement('uri'); + $author->appendChild($uri); + $text = $dom->createTextNode($data['uri']); + $uri->appendChild($text); + } + } + +} diff --git a/library/Zend/Feed/Writer/Renderer/Entry/Rss.php b/library/Zend/Feed/Writer/Renderer/Entry/Rss.php new file mode 100755 index 000000000..a26db5b1f --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Entry/Rss.php @@ -0,0 +1,346 @@ +_dom = new DOMDocument('1.0', $this->_container->getEncoding()); + $this->_dom->formatOutput = true; + $this->_dom->substituteEntities = false; + $entry = $this->_dom->createElement('item'); + $this->_dom->appendChild($entry); + + $this->_setTitle($this->_dom, $entry); + $this->_setDescription($this->_dom, $entry); + $this->_setDateCreated($this->_dom, $entry); + $this->_setDateModified($this->_dom, $entry); + $this->_setLink($this->_dom, $entry); + $this->_setId($this->_dom, $entry); + $this->_setAuthors($this->_dom, $entry); + $this->_setEnclosure($this->_dom, $entry); + $this->_setCommentLink($this->_dom, $entry); + $this->_setCategories($this->_dom, $entry); + foreach ($this->_extensions as $ext) { + $ext->setType($this->getType()); + $ext->setRootElement($this->getRootElement()); + $ext->setDomDocument($this->getDomDocument(), $entry); + $ext->render(); + } + + return $this; + } + + /** + * Set entry title + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setTitle(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDescription() + && !$this->getDataContainer()->getTitle()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'RSS 2.0 entry elements SHOULD contain exactly one' + . ' title element but a title has not been set. In addition, there' + . ' is no description as required in the absence of a title.'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $title = $dom->createElement('title'); + $root->appendChild($title); + $text = $dom->createTextNode($this->getDataContainer()->getTitle()); + $title->appendChild($text); + } + + /** + * Set entry description + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDescription(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDescription() + && !$this->getDataContainer()->getTitle()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'RSS 2.0 entry elements SHOULD contain exactly one' + . ' description element but a description has not been set. In' + . ' addition, there is no title element as required in the absence' + . ' of a description.'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + if (!$this->getDataContainer()->getDescription()) { + return; + } + $subtitle = $dom->createElement('description'); + $root->appendChild($subtitle); + $text = $dom->createCDATASection($this->getDataContainer()->getDescription()); + $subtitle->appendChild($text); + } + + /** + * Set date entry was last modified + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateModified(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDateModified()) { + return; + } + + $updated = $dom->createElement('pubDate'); + $root->appendChild($updated); + $text = $dom->createTextNode( + $this->getDataContainer()->getDateModified()->get(Zend_Date::RSS) + ); + $updated->appendChild($text); + } + + /** + * Set date entry was created + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateCreated(DOMDocument $dom, DOMElement $root) + { + if (!$this->getDataContainer()->getDateCreated()) { + return; + } + if (!$this->getDataContainer()->getDateModified()) { + $this->getDataContainer()->setDateModified( + $this->getDataContainer()->getDateCreated() + ); + } + } + + /** + * Set entry authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->_container->getAuthors(); + if ((!$authors || empty($authors))) { + return; + } + foreach ($authors as $data) { + $author = $this->_dom->createElement('author'); + $name = $data['name']; + if (array_key_exists('email', $data)) { + $name = $data['email'] . ' (' . $data['name'] . ')'; + } + $text = $dom->createTextNode($name); + $author->appendChild($text); + $root->appendChild($author); + } + } + + /** + * Set entry enclosure + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setEnclosure(DOMDocument $dom, DOMElement $root) + { + $data = $this->_container->getEnclosure(); + if ((!$data || empty($data))) { + return; + } + if (!isset($data['type'])) { + require_once 'Zend/Feed/Exception.php'; + $exception = new Zend_Feed_Exception('Enclosure "type" is not set'); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + if (!isset($data['length'])) { + require_once 'Zend/Feed/Exception.php'; + $exception = new Zend_Feed_Exception('Enclosure "length" is not set'); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + if (isset($data['length']) && (int) $data['length'] <= 0) { + require_once 'Zend/Feed/Exception.php'; + $exception = new Zend_Feed_Exception('Enclosure "length" must be an integer' + . ' indicating the content\'s length in bytes'); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $enclosure = $this->_dom->createElement('enclosure'); + $enclosure->setAttribute('type', $data['type']); + $enclosure->setAttribute('length', $data['length']); + $enclosure->setAttribute('url', $data['uri']); + $root->appendChild($enclosure); + } + + /** + * Set link to entry + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setLink(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getLink()) { + return; + } + $link = $dom->createElement('link'); + $root->appendChild($link); + $text = $dom->createTextNode($this->getDataContainer()->getLink()); + $link->appendChild($text); + } + + /** + * Set entry identifier + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setId(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getId() + && !$this->getDataContainer()->getLink()) { + return; + } + + $id = $dom->createElement('guid'); + $root->appendChild($id); + if (!$this->getDataContainer()->getId()) { + $this->getDataContainer()->setId( + $this->getDataContainer()->getLink()); + } + $text = $dom->createTextNode($this->getDataContainer()->getId()); + $id->appendChild($text); + if (!Zend_Uri::check($this->getDataContainer()->getId())) { + $id->setAttribute('isPermaLink', 'false'); + } + } + + /** + * Set link to entry comments + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentLink(DOMDocument $dom, DOMElement $root) + { + $link = $this->getDataContainer()->getCommentLink(); + if (!$link) { + return; + } + $clink = $this->_dom->createElement('comments'); + $text = $dom->createTextNode($link); + $clink->appendChild($text); + $root->appendChild($clink); + } + + /** + * Set entry categories + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCategories(DOMDocument $dom, DOMElement $root) + { + $categories = $this->getDataContainer()->getCategories(); + if (!$categories) { + return; + } + foreach ($categories as $cat) { + $category = $dom->createElement('category'); + if (isset($cat['scheme'])) { + $category->setAttribute('domain', $cat['scheme']); + } + $text = $dom->createCDATASection($cat['term']); + $category->appendChild($text); + $root->appendChild($category); + } + } +} diff --git a/library/Zend/Feed/Writer/Renderer/Feed/Atom.php b/library/Zend/Feed/Writer/Renderer/Feed/Atom.php new file mode 100755 index 000000000..a91c71455 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Feed/Atom.php @@ -0,0 +1,131 @@ +_container->getEncoding()) { + $this->_container->setEncoding('UTF-8'); + } + $this->_dom = new DOMDocument('1.0', $this->_container->getEncoding()); + $this->_dom->formatOutput = true; + $root = $this->_dom->createElementNS( + Zend_Feed_Writer::NAMESPACE_ATOM_10, 'feed' + ); + $this->setRootElement($root); + $this->_dom->appendChild($root); + $this->_setLanguage($this->_dom, $root); + $this->_setBaseUrl($this->_dom, $root); + $this->_setTitle($this->_dom, $root); + $this->_setDescription($this->_dom, $root); + $this->_setImage($this->_dom, $root); + $this->_setIcon($this->_dom, $root); + $this->_setDateCreated($this->_dom, $root); + $this->_setDateModified($this->_dom, $root); + $this->_setGenerator($this->_dom, $root); + $this->_setLink($this->_dom, $root); + $this->_setFeedLinks($this->_dom, $root); + $this->_setId($this->_dom, $root); + $this->_setAuthors($this->_dom, $root); + $this->_setCopyright($this->_dom, $root); + $this->_setCategories($this->_dom, $root); + $this->_setHubs($this->_dom, $root); + + foreach ($this->_extensions as $ext) { + $ext->setType($this->getType()); + $ext->setRootElement($this->getRootElement()); + $ext->setDomDocument($this->getDomDocument(), $root); + $ext->render(); + } + + foreach ($this->_container as $entry) { + if ($this->getDataContainer()->getEncoding()) { + $entry->setEncoding($this->getDataContainer()->getEncoding()); + } + if ($entry instanceof Zend_Feed_Writer_Entry) { + $renderer = new Zend_Feed_Writer_Renderer_Entry_Atom($entry); + } else { + if (!$this->_dom->documentElement->hasAttribute('xmlns:at')) { + $this->_dom->documentElement->setAttribute( + 'xmlns:at', 'http://purl.org/atompub/tombstones/1.0' + ); + } + $renderer = new Zend_Feed_Writer_Renderer_Entry_Atom_Deleted($entry); + } + if ($this->_ignoreExceptions === true) { + $renderer->ignoreExceptions(); + } + $renderer->setType($this->getType()); + $renderer->setRootElement($this->_dom->documentElement); + $renderer->render(); + $element = $renderer->getElement(); + $imported = $this->_dom->importNode($element, true); + $root->appendChild($imported); + } + return $this; + } + +} diff --git a/library/Zend/Feed/Writer/Renderer/Feed/Atom/AtomAbstract.php b/library/Zend/Feed/Writer/Renderer/Feed/Atom/AtomAbstract.php new file mode 100755 index 000000000..0f8ccc110 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Feed/Atom/AtomAbstract.php @@ -0,0 +1,446 @@ +getDataContainer()->getLanguage()) { + $root->setAttribute('xml:lang', $this->getDataContainer() + ->getLanguage()); + } + } + + /** + * Set feed title + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setTitle(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getTitle()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 feed elements MUST contain exactly one' + . ' atom:title element but a title has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + $title = $dom->createElement('title'); + $root->appendChild($title); + $title->setAttribute('type', 'text'); + $text = $dom->createTextNode($this->getDataContainer()->getTitle()); + $title->appendChild($text); + } + + /** + * Set feed description + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDescription(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDescription()) { + return; + } + $subtitle = $dom->createElement('subtitle'); + $root->appendChild($subtitle); + $subtitle->setAttribute('type', 'text'); + $text = $dom->createTextNode($this->getDataContainer()->getDescription()); + $subtitle->appendChild($text); + } + + /** + * Set date feed was last modified + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateModified(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDateModified()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 feed elements MUST contain exactly one' + . ' atom:updated element but a modification date has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + $updated = $dom->createElement('updated'); + $root->appendChild($updated); + $text = $dom->createTextNode( + $this->getDataContainer()->getDateModified()->get(Zend_Date::ISO_8601) + ); + $updated->appendChild($text); + } + + /** + * Set feed generator string + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setGenerator(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getGenerator()) { + $this->getDataContainer()->setGenerator('Zend_Feed_Writer', + Zend_Version::VERSION, 'http://framework.zend.com'); + } + + $gdata = $this->getDataContainer()->getGenerator(); + $generator = $dom->createElement('generator'); + $root->appendChild($generator); + $text = $dom->createTextNode($gdata['name']); + $generator->appendChild($text); + if (array_key_exists('uri', $gdata)) { + $generator->setAttribute('uri', $gdata['uri']); + } + if (array_key_exists('version', $gdata)) { + $generator->setAttribute('version', $gdata['version']); + } + } + + /** + * Set link to feed + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setLink(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getLink()) { + return; + } + $link = $dom->createElement('link'); + $root->appendChild($link); + $link->setAttribute('rel', 'alternate'); + $link->setAttribute('type', 'text/html'); + $link->setAttribute('href', $this->getDataContainer()->getLink()); + } + + /** + * Set feed links + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setFeedLinks(DOMDocument $dom, DOMElement $root) + { + $flinks = $this->getDataContainer()->getFeedLinks(); + if(!$flinks || !array_key_exists('atom', $flinks)) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 feed elements SHOULD contain one atom:link ' + . 'element with a rel attribute value of "self". This is the ' + . 'preferred URI for retrieving Atom Feed Documents representing ' + . 'this Atom feed but a feed link has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + foreach ($flinks as $type => $href) { + $mime = 'application/' . strtolower($type) . '+xml'; + $flink = $dom->createElement('link'); + $root->appendChild($flink); + $flink->setAttribute('rel', 'self'); + $flink->setAttribute('type', $mime); + $flink->setAttribute('href', $href); + } + } + + /** + * Set feed authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->_container->getAuthors(); + if (!$authors || empty($authors)) { + /** + * Technically we should defer an exception until we can check + * that all entries contain an author. If any entry is missing + * an author, then a missing feed author element is invalid + */ + return; + } + foreach ($authors as $data) { + $author = $this->_dom->createElement('author'); + $name = $this->_dom->createElement('name'); + $author->appendChild($name); + $root->appendChild($author); + $text = $dom->createTextNode($data['name']); + $name->appendChild($text); + if (array_key_exists('email', $data)) { + $email = $this->_dom->createElement('email'); + $author->appendChild($email); + $text = $dom->createTextNode($data['email']); + $email->appendChild($text); + } + if (array_key_exists('uri', $data)) { + $uri = $this->_dom->createElement('uri'); + $author->appendChild($uri); + $text = $dom->createTextNode($data['uri']); + $uri->appendChild($text); + } + } + } + + /** + * Set feed identifier + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setId(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getId() + && !$this->getDataContainer()->getLink()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Atom 1.0 feed elements MUST contain exactly one ' + . 'atom:id element, or as an alternative, we can use the same ' + . 'value as atom:link however neither a suitable link nor an ' + . 'id have been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + if (!$this->getDataContainer()->getId()) { + $this->getDataContainer()->setId( + $this->getDataContainer()->getLink()); + } + $id = $dom->createElement('id'); + $root->appendChild($id); + $text = $dom->createTextNode($this->getDataContainer()->getId()); + $id->appendChild($text); + } + + /** + * Set feed copyright + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCopyright(DOMDocument $dom, DOMElement $root) + { + $copyright = $this->getDataContainer()->getCopyright(); + if (!$copyright) { + return; + } + $copy = $dom->createElement('rights'); + $root->appendChild($copy); + $text = $dom->createTextNode($copyright); + $copy->appendChild($text); + } + + /** + * Set feed level logo (image) + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setImage(DOMDocument $dom, DOMElement $root) + { + $image = $this->getDataContainer()->getImage(); + if (!$image) { + return; + } + $img = $dom->createElement('logo'); + $root->appendChild($img); + $text = $dom->createTextNode($image['uri']); + $img->appendChild($text); + } + + /** + * Set feed level icon (image) + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setIcon(DOMDocument $dom, DOMElement $root) + { + $image = $this->getDataContainer()->getIcon(); + if (!$image) { + return; + } + $img = $dom->createElement('icon'); + $root->appendChild($img); + $text = $dom->createTextNode($image['uri']); + $img->appendChild($text); + } + + /** + * Set date feed was created + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateCreated(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDateCreated()) { + return; + } + if(!$this->getDataContainer()->getDateModified()) { + $this->getDataContainer()->setDateModified( + $this->getDataContainer()->getDateCreated() + ); + } + } + + /** + * Set base URL to feed links + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setBaseUrl(DOMDocument $dom, DOMElement $root) + { + $baseUrl = $this->getDataContainer()->getBaseUrl(); + if (!$baseUrl) { + return; + } + $root->setAttribute('xml:base', $baseUrl); + } + + /** + * Set hubs to which this feed pushes + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setHubs(DOMDocument $dom, DOMElement $root) + { + $hubs = $this->getDataContainer()->getHubs(); + if (!$hubs) { + return; + } + foreach ($hubs as $hubUrl) { + $hub = $dom->createElement('link'); + $hub->setAttribute('rel', 'hub'); + $hub->setAttribute('href', $hubUrl); + $root->appendChild($hub); + } + } + + /** + * Set feed cateories + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCategories(DOMDocument $dom, DOMElement $root) + { + $categories = $this->getDataContainer()->getCategories(); + if (!$categories) { + return; + } + foreach ($categories as $cat) { + $category = $dom->createElement('category'); + $category->setAttribute('term', $cat['term']); + if (isset($cat['label'])) { + $category->setAttribute('label', $cat['label']); + } else { + $category->setAttribute('label', $cat['term']); + } + if (isset($cat['scheme'])) { + $category->setAttribute('scheme', $cat['scheme']); + } + $root->appendChild($category); + } + } +} diff --git a/library/Zend/Feed/Writer/Renderer/Feed/Atom/Source.php b/library/Zend/Feed/Writer/Renderer/Feed/Atom/Source.php new file mode 100755 index 000000000..eed591a12 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Feed/Atom/Source.php @@ -0,0 +1,110 @@ +_container->getEncoding()) { + $this->_container->setEncoding('UTF-8'); + } + $this->_dom = new DOMDocument('1.0', $this->_container->getEncoding()); + $this->_dom->formatOutput = true; + $root = $this->_dom->createElement('source'); + $this->setRootElement($root); + $this->_dom->appendChild($root); + $this->_setLanguage($this->_dom, $root); + $this->_setBaseUrl($this->_dom, $root); + $this->_setTitle($this->_dom, $root); + $this->_setDescription($this->_dom, $root); + $this->_setDateCreated($this->_dom, $root); + $this->_setDateModified($this->_dom, $root); + $this->_setGenerator($this->_dom, $root); + $this->_setLink($this->_dom, $root); + $this->_setFeedLinks($this->_dom, $root); + $this->_setId($this->_dom, $root); + $this->_setAuthors($this->_dom, $root); + $this->_setCopyright($this->_dom, $root); + $this->_setCategories($this->_dom, $root); + + foreach ($this->_extensions as $ext) { + $ext->setType($this->getType()); + $ext->setRootElement($this->getRootElement()); + $ext->setDomDocument($this->getDomDocument(), $root); + $ext->render(); + } + return $this; + } + + /** + * Set feed generator string + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setGenerator(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getGenerator()) { + return; + } + + $gdata = $this->getDataContainer()->getGenerator(); + $generator = $dom->createElement('generator'); + $root->appendChild($generator); + $text = $dom->createTextNode($gdata['name']); + $generator->appendChild($text); + if (array_key_exists('uri', $gdata)) { + $generator->setAttribute('uri', $gdata['uri']); + } + if (array_key_exists('version', $gdata)) { + $generator->setAttribute('version', $gdata['version']); + } + } + +} diff --git a/library/Zend/Feed/Writer/Renderer/Feed/Rss.php b/library/Zend/Feed/Writer/Renderer/Feed/Rss.php new file mode 100755 index 000000000..973154cb7 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/Feed/Rss.php @@ -0,0 +1,505 @@ +_container->getEncoding()) { + $this->_container->setEncoding('UTF-8'); + } + $this->_dom = new DOMDocument('1.0', $this->_container->getEncoding()); + $this->_dom->formatOutput = true; + $this->_dom->substituteEntities = false; + $rss = $this->_dom->createElement('rss'); + $this->setRootElement($rss); + $rss->setAttribute('version', '2.0'); + + $channel = $this->_dom->createElement('channel'); + $rss->appendChild($channel); + $this->_dom->appendChild($rss); + $this->_setLanguage($this->_dom, $channel); + $this->_setBaseUrl($this->_dom, $channel); + $this->_setTitle($this->_dom, $channel); + $this->_setDescription($this->_dom, $channel); + $this->_setImage($this->_dom, $channel); + $this->_setDateCreated($this->_dom, $channel); + $this->_setDateModified($this->_dom, $channel); + $this->_setLastBuildDate($this->_dom, $channel); + $this->_setGenerator($this->_dom, $channel); + $this->_setLink($this->_dom, $channel); + $this->_setAuthors($this->_dom, $channel); + $this->_setCopyright($this->_dom, $channel); + $this->_setCategories($this->_dom, $channel); + + foreach ($this->_extensions as $ext) { + $ext->setType($this->getType()); + $ext->setRootElement($this->getRootElement()); + $ext->setDomDocument($this->getDomDocument(), $channel); + $ext->render(); + } + + foreach ($this->_container as $entry) { + if ($this->getDataContainer()->getEncoding()) { + $entry->setEncoding($this->getDataContainer()->getEncoding()); + } + if ($entry instanceof Zend_Feed_Writer_Entry) { + $renderer = new Zend_Feed_Writer_Renderer_Entry_Rss($entry); + } else { + continue; + } + if ($this->_ignoreExceptions === true) { + $renderer->ignoreExceptions(); + } + $renderer->setType($this->getType()); + $renderer->setRootElement($this->_dom->documentElement); + $renderer->render(); + $element = $renderer->getElement(); + $imported = $this->_dom->importNode($element, true); + $channel->appendChild($imported); + } + return $this; + } + + /** + * Set feed language + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setLanguage(DOMDocument $dom, DOMElement $root) + { + $lang = $this->getDataContainer()->getLanguage(); + if (!$lang) { + return; + } + $language = $dom->createElement('language'); + $root->appendChild($language); + $language->nodeValue = $lang; + } + + /** + * Set feed title + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setTitle(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getTitle()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'RSS 2.0 feed elements MUST contain exactly one' + . ' title element but a title has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + + $title = $dom->createElement('title'); + $root->appendChild($title); + $text = $dom->createTextNode($this->getDataContainer()->getTitle()); + $title->appendChild($text); + } + + /** + * Set feed description + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDescription(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDescription()) { + require_once 'Zend/Feed/Exception.php'; + $message = 'RSS 2.0 feed elements MUST contain exactly one' + . ' description element but one has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $subtitle = $dom->createElement('description'); + $root->appendChild($subtitle); + $text = $dom->createTextNode($this->getDataContainer()->getDescription()); + $subtitle->appendChild($text); + } + + /** + * Set date feed was last modified + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateModified(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDateModified()) { + return; + } + + $updated = $dom->createElement('pubDate'); + $root->appendChild($updated); + $text = $dom->createTextNode( + $this->getDataContainer()->getDateModified()->get(Zend_Date::RSS) + ); + $updated->appendChild($text); + } + + /** + * Set feed generator string + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setGenerator(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getGenerator()) { + $this->getDataContainer()->setGenerator('Zend_Feed_Writer', + Zend_Version::VERSION, 'http://framework.zend.com'); + } + + $gdata = $this->getDataContainer()->getGenerator(); + $generator = $dom->createElement('generator'); + $root->appendChild($generator); + $name = $gdata['name']; + if (array_key_exists('version', $gdata)) { + $name .= ' ' . $gdata['version']; + } + if (array_key_exists('uri', $gdata)) { + $name .= ' (' . $gdata['uri'] . ')'; + } + $text = $dom->createTextNode($name); + $generator->appendChild($text); + } + + /** + * Set link to feed + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setLink(DOMDocument $dom, DOMElement $root) + { + $value = $this->getDataContainer()->getLink(); + if(!$value) { + require_once 'Zend/Feed/Exception.php'; + $message = 'RSS 2.0 feed elements MUST contain exactly one' + . ' link element but one has not been set'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $link = $dom->createElement('link'); + $root->appendChild($link); + $text = $dom->createTextNode($value); + $link->appendChild($text); + if (!Zend_Uri::check($value)) { + $link->setAttribute('isPermaLink', 'false'); + } + } + + /** + * Set feed authors + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setAuthors(DOMDocument $dom, DOMElement $root) + { + $authors = $this->getDataContainer()->getAuthors(); + if (!$authors || empty($authors)) { + return; + } + foreach ($authors as $data) { + $author = $this->_dom->createElement('author'); + $name = $data['name']; + if (array_key_exists('email', $data)) { + $name = $data['email'] . ' (' . $data['name'] . ')'; + } + $text = $dom->createTextNode($name); + $author->appendChild($text); + $root->appendChild($author); + } + } + + /** + * Set feed copyright + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCopyright(DOMDocument $dom, DOMElement $root) + { + $copyright = $this->getDataContainer()->getCopyright(); + if (!$copyright) { + return; + } + $copy = $dom->createElement('copyright'); + $root->appendChild($copy); + $text = $dom->createTextNode($copyright); + $copy->appendChild($text); + } + + /** + * Set feed channel image + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setImage(DOMDocument $dom, DOMElement $root) + { + $image = $this->getDataContainer()->getImage(); + if (!$image) { + return; + } + if (!isset($image['title']) || empty($image['title']) + || !is_string($image['title'])) { + require_once 'Zend/Feed/Exception.php'; + $message = 'RSS 2.0 feed images must include a title'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + if (empty($image['link']) || !is_string($image['link']) + || !Zend_Uri::check($image['link'])) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Invalid parameter: parameter \'link\'' + . ' must be a non-empty string and valid URI/IRI'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $img = $dom->createElement('image'); + $root->appendChild($img); + $url = $dom->createElement('url'); + $text = $dom->createTextNode($image['uri']); + $url->appendChild($text); + $title = $dom->createElement('title'); + $text = $dom->createTextNode($image['title']); + $title->appendChild($text); + $link = $dom->createElement('link'); + $text = $dom->createTextNode($image['link']); + $link->appendChild($text); + $img->appendChild($url); + $img->appendChild($title); + $img->appendChild($link); + if (isset($image['height'])) { + if (!ctype_digit((string) $image['height']) || $image['height'] > 400) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Invalid parameter: parameter \'height\'' + . ' must be an integer not exceeding 400'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $height = $dom->createElement('height'); + $text = $dom->createTextNode($image['height']); + $height->appendChild($text); + $img->appendChild($height); + } + if (isset($image['width'])) { + if (!ctype_digit((string) $image['width']) || $image['width'] > 144) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Invalid parameter: parameter \'width\'' + . ' must be an integer not exceeding 144'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $width = $dom->createElement('width'); + $text = $dom->createTextNode($image['width']); + $width->appendChild($text); + $img->appendChild($width); + } + if (isset($image['description'])) { + if (empty($image['description']) || !is_string($image['description'])) { + require_once 'Zend/Feed/Exception.php'; + $message = 'Invalid parameter: parameter \'description\'' + . ' must be a non-empty string'; + $exception = new Zend_Feed_Exception($message); + if (!$this->_ignoreExceptions) { + throw $exception; + } else { + $this->_exceptions[] = $exception; + return; + } + } + $desc = $dom->createElement('description'); + $text = $dom->createTextNode($image['description']); + $desc->appendChild($text); + $img->appendChild($desc); + } + } + + /** + * Set date feed was created + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setDateCreated(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getDateCreated()) { + return; + } + if(!$this->getDataContainer()->getDateModified()) { + $this->getDataContainer()->setDateModified( + $this->getDataContainer()->getDateCreated() + ); + } + } + + /** + * Set date feed last build date + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setLastBuildDate(DOMDocument $dom, DOMElement $root) + { + if(!$this->getDataContainer()->getLastBuildDate()) { + return; + } + + $lastBuildDate = $dom->createElement('lastBuildDate'); + $root->appendChild($lastBuildDate); + $text = $dom->createTextNode( + $this->getDataContainer()->getLastBuildDate()->get(Zend_Date::RSS) + ); + $lastBuildDate->appendChild($text); + } + + /** + * Set base URL to feed links + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setBaseUrl(DOMDocument $dom, DOMElement $root) + { + $baseUrl = $this->getDataContainer()->getBaseUrl(); + if (!$baseUrl) { + return; + } + $root->setAttribute('xml:base', $baseUrl); + } + + /** + * Set feed categories + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCategories(DOMDocument $dom, DOMElement $root) + { + $categories = $this->getDataContainer()->getCategories(); + if (!$categories) { + return; + } + foreach ($categories as $cat) { + $category = $dom->createElement('category'); + if (isset($cat['scheme'])) { + $category->setAttribute('domain', $cat['scheme']); + } + $text = $dom->createTextNode($cat['term']); + $category->appendChild($text); + $root->appendChild($category); + } + } +} diff --git a/library/Zend/Feed/Writer/Renderer/RendererAbstract.php b/library/Zend/Feed/Writer/Renderer/RendererAbstract.php new file mode 100755 index 000000000..05a61bfdc --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/RendererAbstract.php @@ -0,0 +1,250 @@ +_container = $container; + $this->setType($container->getType()); + $this->_loadExtensions(); + } + + /** + * Save XML to string + * + * @return string + */ + public function saveXml() + { + return $this->getDomDocument()->saveXml(); + } + + /** + * Get DOM document + * + * @return DOMDocument + */ + public function getDomDocument() + { + return $this->_dom; + } + + /** + * Get document element from DOM + * + * @return DOMElement + */ + public function getElement() + { + return $this->getDomDocument()->documentElement; + } + + /** + * Get data container of items being rendered + * + * @return mixed + */ + public function getDataContainer() + { + return $this->_container; + } + + /** + * Set feed encoding + * + * @param string $enc + * @return Zend_Feed_Writer_Renderer_RendererAbstract + */ + public function setEncoding($enc) + { + $this->_encoding = $enc; + return $this; + } + + /** + * Get feed encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Indicate whether or not to ignore exceptions + * + * @param bool $bool + * @return Zend_Feed_Writer_Renderer_RendererAbstract + */ + public function ignoreExceptions($bool = true) + { + if (!is_bool($bool)) { + require_once 'Zend/Feed/Exception.php'; + throw new Zend_Feed_Exception('Invalid parameter: $bool. Should be TRUE or FALSE (defaults to TRUE if null)'); + } + $this->_ignoreExceptions = $bool; + return $this; + } + + /** + * Get exception list + * + * @return array + */ + public function getExceptions() + { + return $this->_exceptions; + } + + /** + * Set the current feed type being exported to "rss" or "atom". This allows + * other objects to gracefully choose whether to execute or not, depending + * on their appropriateness for the current type, e.g. renderers. + * + * @param string $type + */ + public function setType($type) + { + $this->_type = $type; + } + + /** + * Retrieve the current or last feed type exported. + * + * @return string Value will be "rss" or "atom" + */ + public function getType() + { + return $this->_type; + } + + /** + * Sets the absolute root element for the XML feed being generated. This + * helps simplify the appending of namespace declarations, but also ensures + * namespaces are added to the root element - not scattered across the entire + * XML file - may assist namespace unsafe parsers and looks pretty ;). + * + * @param DOMElement $root + */ + public function setRootElement(DOMElement $root) + { + $this->_rootElement = $root; + } + + /** + * Retrieve the absolute root element for the XML feed being generated. + * + * @return DOMElement + */ + public function getRootElement() + { + return $this->_rootElement; + } + + /** + * Load extensions from Zend_Feed_Writer + * + * @return void + */ + protected function _loadExtensions() + { + Zend_Feed_Writer::registerCoreExtensions(); + $all = Zend_Feed_Writer::getExtensions(); + if (stripos(get_class($this), 'entry')) { + $exts = $all['entryRenderer']; + } else { + $exts = $all['feedRenderer']; + } + foreach ($exts as $extension) { + $className = Zend_Feed_Writer::getPluginLoader()->getClassName($extension); + $this->_extensions[$extension] = new $className( + $this->getDataContainer() + ); + $this->_extensions[$extension]->setEncoding($this->getEncoding()); + } + } +} diff --git a/library/Zend/Feed/Writer/Renderer/RendererInterface.php b/library/Zend/Feed/Writer/Renderer/RendererInterface.php new file mode 100755 index 000000000..7bd04a012 --- /dev/null +++ b/library/Zend/Feed/Writer/Renderer/RendererInterface.php @@ -0,0 +1,111 @@ +setInfoClass('Zend_File_PhpClassFile'); + + // Forward-compat with PHP 5.3 + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + if (!defined('T_NAMESPACE')) { + define('T_NAMESPACE', 'namespace'); + } + if (!defined('T_NS_SEPARATOR')) { + define('T_NS_SEPARATOR', '\\'); + } + } + } + + /** + * Filter for files containing PHP classes, interfaces, or abstracts + * + * @return bool + */ + public function accept() + { + $file = $this->getInnerIterator()->current(); + // If we somehow have something other than an SplFileInfo object, just + // return false + if (!$file instanceof SplFileInfo) { + return false; + } + + // If we have a directory, it's not a file, so return false + if (!$file->isFile()) { + return false; + } + + // If not a PHP file, skip + if ($file->getBasename('.php') == $file->getBasename()) { + return false; + } + + $contents = file_get_contents($file->getRealPath()); + $tokens = token_get_all($contents); + $count = count($tokens); + $t_trait = defined('T_TRAIT') ? T_TRAIT : -1; // For preserve PHP 5.3 compatibility + for ($i = 0; $i < $count; $i++) { + $token = $tokens[$i]; + if (!is_array($token)) { + // single character token found; skip + $i++; + continue; + } + switch ($token[0]) { + case T_NAMESPACE: + // Namespace found; grab it for later + $namespace = ''; + for ($i++; $i < $count; $i++) { + $token = $tokens[$i]; + if (is_string($token)) { + if (';' === $token) { + $saveNamespace = false; + break; + } + if ('{' === $token) { + $saveNamespace = true; + break; + } + continue; + } + list($type, $content, $line) = $token; + switch ($type) { + case T_STRING: + case T_NS_SEPARATOR: + $namespace .= $content; + break; + } + } + if ($saveNamespace) { + $savedNamespace = $namespace; + } + break; + case $t_trait: + case T_CLASS: + case T_INTERFACE: + // Abstract class, class, interface or trait found + + // Get the classname + for ($i++; $i < $count; $i++) { + $token = $tokens[$i]; + if (is_string($token)) { + continue; + } + list($type, $content, $line) = $token; + if (T_STRING == $type) { + // If a classname was found, set it in the object, and + // return boolean true (found) + if (!isset($namespace) || null === $namespace) { + if (isset($saveNamespace) && $saveNamespace) { + $namespace = $savedNamespace; + } else { + $namespace = null; + } + + } + $class = (null === $namespace) ? $content : $namespace . '\\' . $content; + $file->addClass($class); + $namespace = null; + break; + } + } + break; + default: + break; + } + } + $classes = $file->getClasses(); + if (!empty($classes)) { + return true; + } + // No class-type tokens found; return false + return false; + } +} diff --git a/library/Zend/File/PhpClassFile.php b/library/Zend/File/PhpClassFile.php new file mode 100755 index 000000000..0edf3402c --- /dev/null +++ b/library/Zend/File/PhpClassFile.php @@ -0,0 +1,56 @@ +classes; + } + + /** + * Add class + * + * @param string $class + * @return Zend_File_PhpClassFile + */ + public function addClass($class) + { + $this->classes[] = $class; + return $this; + } +} diff --git a/library/Zend/File/Transfer.php b/library/Zend/File/Transfer.php new file mode 100755 index 000000000..28e15271a --- /dev/null +++ b/library/Zend/File/Transfer.php @@ -0,0 +1,125 @@ +setAdapter($adapter, $direction, $options); + } + + /** + * Sets a new adapter + * + * @param string $adapter Adapter to use + * @param boolean $direction OPTIONAL False means Download, true means upload + * @param array $options OPTIONAL Options to set for this adapter + * @throws Zend_File_Transfer_Exception + */ + public function setAdapter($adapter, $direction = false, $options = array()) + { + if (Zend_Loader::isReadable('Zend/File/Transfer/Adapter/' . ucfirst($adapter). '.php')) { + $adapter = 'Zend_File_Transfer_Adapter_' . ucfirst($adapter); + } + + if (!class_exists($adapter)) { + Zend_Loader::loadClass($adapter); + } + + $direction = (integer) $direction; + $this->_adapter[$direction] = new $adapter($options); + if (!$this->_adapter[$direction] instanceof Zend_File_Transfer_Adapter_Abstract) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("Adapter " . $adapter . " does not extend Zend_File_Transfer_Adapter_Abstract"); + } + + return $this; + } + + /** + * Returns all set adapters + * + * @param boolean $direction On null, all directions are returned + * On false, download direction is returned + * On true, upload direction is returned + * @return array|Zend_File_Transfer_Adapter + */ + public function getAdapter($direction = null) + { + if ($direction === null) { + return $this->_adapter; + } + + $direction = (integer) $direction; + return $this->_adapter[$direction]; + } + + /** + * Calls all methods from the adapter + * + * @param string $method Method to call + * @param array $options Options for this method + * @return mixed + */ + public function __call($method, array $options) + { + if (array_key_exists('direction', $options)) { + $direction = (integer) $options['direction']; + } else { + $direction = 0; + } + + if (method_exists($this->_adapter[$direction], $method)) { + return call_user_func_array(array($this->_adapter[$direction], $method), $options); + } + + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("Unknown method '" . $method . "' called!"); + } +} diff --git a/library/Zend/File/Transfer/Adapter/Abstract.php b/library/Zend/File/Transfer/Adapter/Abstract.php new file mode 100755 index 000000000..c0a8affbb --- /dev/null +++ b/library/Zend/File/Transfer/Adapter/Abstract.php @@ -0,0 +1,1571 @@ + array( - Form is the name within the form or, if not set the filename + * name, - Original name of this file + * type, - Mime type of this file + * size, - Filesize in bytes + * tmp_name, - Internalally temporary filename for uploaded files + * error, - Error which has occured + * destination, - New destination for this file + * validators, - Set validator names for this file + * files - Set file names for this file + * )) + * + * @var array + */ + protected $_files = array(); + + /** + * TMP directory + * @var string + */ + protected $_tmpDir; + + /** + * Available options for file transfers + */ + protected $_options = array( + 'ignoreNoFile' => false, + 'useByteString' => true, + 'magicFile' => null, + 'detectInfos' => true, + ); + + /** + * Send file + * + * @param mixed $options + * @return bool + */ + abstract public function send($options = null); + + /** + * Receive file + * + * @param mixed $options + * @return bool + */ + abstract public function receive($options = null); + + /** + * Is file sent? + * + * @param array|string|null $files + * @return bool + */ + abstract public function isSent($files = null); + + /** + * Is file received? + * + * @param array|string|null $files + * @return bool + */ + abstract public function isReceived($files = null); + + /** + * Has a file been uploaded ? + * + * @param array|string|null $files + * @return bool + */ + abstract public function isUploaded($files = null); + + /** + * Has the file been filtered ? + * + * @param array|string|null $files + * @return bool + */ + abstract public function isFiltered($files = null); + + /** + * Retrieve progress of transfer + * + * @return float + */ + public static function getProgress() + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method must be implemented within the adapter'); + } + + /** + * Set plugin loader to use for validator or filter chain + * + * @param Zend_Loader_PluginLoader_Interface $loader + * @param string $type 'filter', or 'validate' + * @return Zend_File_Transfer_Adapter_Abstract + * @throws Zend_File_Transfer_Exception on invalid type + */ + public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type) + { + $type = strtoupper($type); + switch ($type) { + case self::FILTER: + case self::VALIDATE: + $this->_loaders[$type] = $loader; + return $this; + default: + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception(sprintf('Invalid type "%s" provided to setPluginLoader()', $type)); + } + } + + /** + * Retrieve plugin loader for validator or filter chain + * + * Instantiates with default rules if none available for that type. Use + * 'filter' or 'validate' for $type. + * + * @param string $type + * @return Zend_Loader_PluginLoader + * @throws Zend_File_Transfer_Exception on invalid type. + */ + public function getPluginLoader($type) + { + $type = strtoupper($type); + switch ($type) { + case self::FILTER: + case self::VALIDATE: + $prefixSegment = ucfirst(strtolower($type)); + $pathSegment = $prefixSegment; + if (!isset($this->_loaders[$type])) { + $paths = array( + 'Zend_' . $prefixSegment . '_' => 'Zend/' . $pathSegment . '/', + 'Zend_' . $prefixSegment . '_File' => 'Zend/' . $pathSegment . '/File', + ); + + require_once 'Zend/Loader/PluginLoader.php'; + $this->_loaders[$type] = new Zend_Loader_PluginLoader($paths); + } else { + $loader = $this->_loaders[$type]; + $prefix = 'Zend_' . $prefixSegment . '_File_'; + if (!$loader->getPaths($prefix)) { + $loader->addPrefixPath($prefix, str_replace('_', '/', $prefix)); + } + } + return $this->_loaders[$type]; + default: + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type)); + } + } + + /** + * Add prefix path for plugin loader + * + * If no $type specified, assumes it is a base path for both filters and + * validators, and sets each according to the following rules: + * - filters: $prefix = $prefix . '_Filter' + * - validators: $prefix = $prefix . '_Validate' + * + * Otherwise, the path prefix is set on the appropriate plugin loader. + * + * @param string $prefix + * @param string $path + * @param string $type + * @return Zend_File_Transfer_Adapter_Abstract + * @throws Zend_File_Transfer_Exception for invalid type + */ + public function addPrefixPath($prefix, $path, $type = null) + { + $type = strtoupper($type); + switch ($type) { + case self::FILTER: + case self::VALIDATE: + $loader = $this->getPluginLoader($type); + $loader->addPrefixPath($prefix, $path); + return $this; + case null: + $prefix = rtrim($prefix, '_'); + $path = rtrim($path, DIRECTORY_SEPARATOR); + foreach (array(self::FILTER, self::VALIDATE) as $type) { + $cType = ucfirst(strtolower($type)); + $pluginPath = $path . DIRECTORY_SEPARATOR . $cType . DIRECTORY_SEPARATOR; + $pluginPrefix = $prefix . '_' . $cType; + $loader = $this->getPluginLoader($type); + $loader->addPrefixPath($pluginPrefix, $pluginPath); + } + return $this; + default: + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type)); + } + } + + /** + * Add many prefix paths at once + * + * @param array $spec + * @return Zend_File_Transfer_Exception + */ + public function addPrefixPaths(array $spec) + { + if (isset($spec['prefix']) && isset($spec['path'])) { + return $this->addPrefixPath($spec['prefix'], $spec['path']); + } + foreach ($spec as $type => $paths) { + if (is_numeric($type) && is_array($paths)) { + $type = null; + if (isset($paths['prefix']) && isset($paths['path'])) { + if (isset($paths['type'])) { + $type = $paths['type']; + } + $this->addPrefixPath($paths['prefix'], $paths['path'], $type); + } + } elseif (!is_numeric($type)) { + if (!isset($paths['prefix']) || !isset($paths['path'])) { + foreach ($paths as $prefix => $spec) { + if (is_array($spec)) { + foreach ($spec as $path) { + if (!is_string($path)) { + continue; + } + $this->addPrefixPath($prefix, $path, $type); + } + } elseif (is_string($spec)) { + $this->addPrefixPath($prefix, $spec, $type); + } + } + } else { + $this->addPrefixPath($paths['prefix'], $paths['path'], $type); + } + } + } + return $this; + } + + /** + * Adds a new validator for this class + * + * @param string|array $validator Type of validator to add + * @param boolean $breakChainOnFailure If the validation chain should stop an failure + * @param string|array $options Options to set for the validator + * @param string|array $files Files to limit this validator to + * @return Zend_File_Transfer_Adapter + */ + public function addValidator($validator, $breakChainOnFailure = false, $options = null, $files = null) + { + if ($validator instanceof Zend_Validate_Interface) { + $name = get_class($validator); + } elseif (is_string($validator)) { + $name = $this->getPluginLoader(self::VALIDATE)->load($validator); + $validator = new $name($options); + if (is_array($options) && isset($options['messages'])) { + if (is_array($options['messages'])) { + $validator->setMessages($options['messages']); + } elseif (is_string($options['messages'])) { + $validator->setMessage($options['messages']); + } + + unset($options['messages']); + } + } else { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Invalid validator provided to addValidator; must be string or Zend_Validate_Interface'); + } + + $this->_validators[$name] = $validator; + $this->_break[$name] = $breakChainOnFailure; + $files = $this->_getFiles($files, true, true); + foreach ($files as $file) { + if ($name == 'NotEmpty') { + $temp = $this->_files[$file]['validators']; + $this->_files[$file]['validators'] = array($name); + $this->_files[$file]['validators'] += $temp; + } else { + $this->_files[$file]['validators'][] = $name; + } + + $this->_files[$file]['validated'] = false; + } + + return $this; + } + + /** + * Add Multiple validators at once + * + * @param array $validators + * @param string|array $files + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function addValidators(array $validators, $files = null) + { + foreach ($validators as $name => $validatorInfo) { + if ($validatorInfo instanceof Zend_Validate_Interface) { + $this->addValidator($validatorInfo, null, null, $files); + } else if (is_string($validatorInfo)) { + if (!is_int($name)) { + $this->addValidator($name, null, $validatorInfo, $files); + } else { + $this->addValidator($validatorInfo, null, null, $files); + } + } else if (is_array($validatorInfo)) { + $argc = count($validatorInfo); + $breakChainOnFailure = false; + $options = array(); + if (isset($validatorInfo['validator'])) { + $validator = $validatorInfo['validator']; + if (isset($validatorInfo['breakChainOnFailure'])) { + $breakChainOnFailure = $validatorInfo['breakChainOnFailure']; + } + + if (isset($validatorInfo['options'])) { + $options = $validatorInfo['options']; + } + + $this->addValidator($validator, $breakChainOnFailure, $options, $files); + } else { + if (is_string($name)) { + $validator = $name; + $options = $validatorInfo; + $this->addValidator($validator, $breakChainOnFailure, $options, $files); + } else { + $file = $files; + switch (true) { + case (0 == $argc): + break; + case (1 <= $argc): + $validator = array_shift($validatorInfo); + case (2 <= $argc): + $breakChainOnFailure = array_shift($validatorInfo); + case (3 <= $argc): + $options = array_shift($validatorInfo); + case (4 <= $argc): + if (!empty($validatorInfo)) { + $file = array_shift($validatorInfo); + } + default: + $this->addValidator($validator, $breakChainOnFailure, $options, $file); + break; + } + } + } + } else { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Invalid validator passed to addValidators()'); + } + } + + return $this; + } + + /** + * Sets a validator for the class, erasing all previous set + * + * @param string|array $validator Validator to set + * @param string|array $files Files to limit this validator to + * @return Zend_File_Transfer_Adapter + */ + public function setValidators(array $validators, $files = null) + { + $this->clearValidators(); + return $this->addValidators($validators, $files); + } + + /** + * Determine if a given validator has already been registered + * + * @param string $name + * @return bool + */ + public function hasValidator($name) + { + return (false !== $this->_getValidatorIdentifier($name)); + } + + /** + * Retrieve individual validator + * + * @param string $name + * @return Zend_Validate_Interface|null + */ + public function getValidator($name) + { + if (false === ($identifier = $this->_getValidatorIdentifier($name))) { + return null; + } + return $this->_validators[$identifier]; + } + + /** + * Returns all set validators + * + * @param string|array $files (Optional) Returns the validator for this files + * @return null|array List of set validators + */ + public function getValidators($files = null) + { + if ($files == null) { + return $this->_validators; + } + + $files = $this->_getFiles($files, true, true); + $validators = array(); + foreach ($files as $file) { + if (!empty($this->_files[$file]['validators'])) { + $validators += $this->_files[$file]['validators']; + } + } + + $validators = array_unique($validators); + $result = array(); + foreach ($validators as $validator) { + $result[$validator] = $this->_validators[$validator]; + } + + return $result; + } + + /** + * Remove an individual validator + * + * @param string $name + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function removeValidator($name) + { + if (false === ($key = $this->_getValidatorIdentifier($name))) { + return $this; + } + + unset($this->_validators[$key]); + foreach (array_keys($this->_files) as $file) { + if (empty($this->_files[$file]['validators'])) { + continue; + } + + $index = array_search($key, $this->_files[$file]['validators']); + if ($index === false) { + continue; + } + + unset($this->_files[$file]['validators'][$index]); + $this->_files[$file]['validated'] = false; + } + + return $this; + } + + /** + * Remove all validators + * + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function clearValidators() + { + $this->_validators = array(); + foreach (array_keys($this->_files) as $file) { + $this->_files[$file]['validators'] = array(); + $this->_files[$file]['validated'] = false; + } + + return $this; + } + + /** + * Sets Options for adapters + * + * @param array $options Options to set + * @param array $files (Optional) Files to set the options for + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function setOptions($options = array(), $files = null) { + $file = $this->_getFiles($files, false, true); + + if (is_array($options)) { + if (empty($file)) { + $this->_options = array_merge($this->_options, $options); + } + + foreach ($options as $name => $value) { + foreach ($file as $key => $content) { + switch ($name) { + case 'magicFile' : + $this->_files[$key]['options'][$name] = (string) $value; + break; + + case 'ignoreNoFile' : + case 'useByteString' : + case 'detectInfos' : + $this->_files[$key]['options'][$name] = (boolean) $value; + break; + + default: + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("Unknown option: $name = $value"); + } + } + } + } + + return $this; + } + + /** + * Returns set options for adapters or files + * + * @param array $files (Optional) Files to return the options for + * @return array Options for given files + */ + public function getOptions($files = null) { + $file = $this->_getFiles($files, false, true); + + foreach ($file as $key => $content) { + if (isset($this->_files[$key]['options'])) { + $options[$key] = $this->_files[$key]['options']; + } else { + $options[$key] = array(); + } + } + + return $options; + } + + /** + * Checks if the files are valid + * + * @param string|array $files (Optional) Files to check + * @return boolean True if all checks are valid + */ + public function isValid($files = null) + { + $check = $this->_getFiles($files, false, true); + if (empty($check)) { + return false; + } + + $translator = $this->getTranslator(); + $this->_messages = array(); + $break = false; + foreach($check as $key => $content) { + if (array_key_exists('validators', $content) && + in_array('Zend_Validate_File_Count', $content['validators'])) { + $validator = $this->_validators['Zend_Validate_File_Count']; + $count = $content; + if (empty($content['tmp_name'])) { + continue; + } + + if (array_key_exists('destination', $content)) { + $checkit = $content['destination']; + } else { + $checkit = dirname($content['tmp_name']); + } + + $checkit .= DIRECTORY_SEPARATOR . $content['name']; + $validator->addFile($checkit); + } + } + + if (isset($count)) { + if (!$validator->isValid($count['tmp_name'], $count)) { + $this->_messages += $validator->getMessages(); + } + } + + foreach ($check as $key => $content) { + $fileerrors = array(); + if (array_key_exists('validators', $content) && $content['validated']) { + continue; + } + + if (array_key_exists('validators', $content)) { + foreach ($content['validators'] as $class) { + $validator = $this->_validators[$class]; + if (method_exists($validator, 'setTranslator')) { + $validator->setTranslator($translator); + } + + if (($class === 'Zend_Validate_File_Upload') and (empty($content['tmp_name']))) { + $tocheck = $key; + } else { + $tocheck = $content['tmp_name']; + } + + if (!$validator->isValid($tocheck, $content)) { + $fileerrors += $validator->getMessages(); + } + + if (!empty($content['options']['ignoreNoFile']) and (isset($fileerrors['fileUploadErrorNoFile']))) { + unset($fileerrors['fileUploadErrorNoFile']); + break; + } + + if (($class === 'Zend_Validate_File_Upload') and (count($fileerrors) > 0)) { + break; + } + + if (($this->_break[$class]) and (count($fileerrors) > 0)) { + $break = true; + break; + } + } + } + + if (count($fileerrors) > 0) { + $this->_files[$key]['validated'] = false; + } else { + $this->_files[$key]['validated'] = true; + } + + $this->_messages += $fileerrors; + if ($break) { + break; + } + } + + if (count($this->_messages) > 0) { + return false; + } + + return true; + } + + /** + * Returns found validation messages + * + * @return array + */ + public function getMessages() + { + return $this->_messages; + } + + /** + * Retrieve error codes + * + * @return array + */ + public function getErrors() + { + return array_keys($this->_messages); + } + + /** + * Are there errors registered? + * + * @return boolean + */ + public function hasErrors() + { + return (!empty($this->_messages)); + } + + /** + * Adds a new filter for this class + * + * @param string|array $filter Type of filter to add + * @param string|array $options Options to set for the filter + * @param string|array $files Files to limit this filter to + * @return Zend_File_Transfer_Adapter + */ + public function addFilter($filter, $options = null, $files = null) + { + if ($filter instanceof Zend_Filter_Interface) { + $class = get_class($filter); + } elseif (is_string($filter)) { + $class = $this->getPluginLoader(self::FILTER)->load($filter); + $filter = new $class($options); + } else { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Invalid filter specified'); + } + + $this->_filters[$class] = $filter; + $files = $this->_getFiles($files, true, true); + foreach ($files as $file) { + $this->_files[$file]['filters'][] = $class; + } + + return $this; + } + + /** + * Add Multiple filters at once + * + * @param array $filters + * @param string|array $files + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function addFilters(array $filters, $files = null) + { + foreach ($filters as $key => $spec) { + if ($spec instanceof Zend_Filter_Interface) { + $this->addFilter($spec, null, $files); + continue; + } + + if (is_string($key)) { + $this->addFilter($key, $spec, $files); + continue; + } + + if (is_int($key)) { + if (is_string($spec)) { + $this->addFilter($spec, null, $files); + continue; + } + + if (is_array($spec)) { + if (!array_key_exists('filter', $spec)) { + continue; + } + + $filter = $spec['filter']; + unset($spec['filter']); + $this->addFilter($filter, $spec, $files); + continue; + } + + continue; + } + } + + return $this; + } + + /** + * Sets a filter for the class, erasing all previous set + * + * @param string|array $filter Filter to set + * @param string|array $files Files to limit this filter to + * @return Zend_File_Transfer_Adapter + */ + public function setFilters(array $filters, $files = null) + { + $this->clearFilters(); + return $this->addFilters($filters, $files); + } + + /** + * Determine if a given filter has already been registered + * + * @param string $name + * @return bool + */ + public function hasFilter($name) + { + return (false !== $this->_getFilterIdentifier($name)); + } + + /** + * Retrieve individual filter + * + * @param string $name + * @return Zend_Filter_Interface|null + */ + public function getFilter($name) + { + if (false === ($identifier = $this->_getFilterIdentifier($name))) { + return null; + } + return $this->_filters[$identifier]; + } + + /** + * Returns all set filters + * + * @param string|array $files (Optional) Returns the filter for this files + * @return array List of set filters + * @throws Zend_File_Transfer_Exception When file not found + */ + public function getFilters($files = null) + { + if ($files === null) { + return $this->_filters; + } + + $files = $this->_getFiles($files, true, true); + $filters = array(); + foreach ($files as $file) { + if (!empty($this->_files[$file]['filters'])) { + $filters += $this->_files[$file]['filters']; + } + } + + $filters = array_unique($filters); + $result = array(); + foreach ($filters as $filter) { + $result[] = $this->_filters[$filter]; + } + + return $result; + } + + /** + * Remove an individual filter + * + * @param string $name + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function removeFilter($name) + { + if (false === ($key = $this->_getFilterIdentifier($name))) { + return $this; + } + + unset($this->_filters[$key]); + foreach (array_keys($this->_files) as $file) { + if (empty($this->_files[$file]['filters'])) { + continue; + } + + $index = array_search($key, $this->_files[$file]['filters']); + if ($index === false) { + continue; + } + + unset($this->_files[$file]['filters'][$index]); + } + return $this; + } + + /** + * Remove all filters + * + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function clearFilters() + { + $this->_filters = array(); + foreach (array_keys($this->_files) as $file) { + $this->_files[$file]['filters'] = array(); + } + return $this; + } + + /** + * Returns all set files + * + * @return array List of set files + * @throws Zend_File_Transfer_Exception Not implemented + */ + public function getFile() + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method not implemented'); + } + + /** + * Retrieves the filename of transferred files. + * + * @param string|null $file + * @param boolean $path (Optional) Should the path also be returned ? + * @return string|array + */ + public function getFileName($file = null, $path = true) + { + $files = $this->_getFiles($file, true, true); + $result = array(); + $directory = ""; + foreach($files as $file) { + if (empty($this->_files[$file]['name'])) { + continue; + } + + if ($path === true) { + $directory = $this->getDestination($file) . DIRECTORY_SEPARATOR; + } + + $result[$file] = $directory . $this->_files[$file]['name']; + } + + if (count($result) == 1) { + return current($result); + } + + return $result; + } + + /** + * Retrieve additional internal file informations for files + * + * @param string $file (Optional) File to get informations for + * @return array + */ + public function getFileInfo($file = null) + { + return $this->_getFiles($file); + } + + /** + * Adds one or more files + * + * @param string|array $file File to add + * @param string|array $validator Validators to use for this file, must be set before + * @param string|array $filter Filters to use for this file, must be set before + * @return Zend_File_Transfer_Adapter_Abstract + * @throws Zend_File_Transfer_Exception Not implemented + */ + public function addFile($file, $validator = null, $filter = null) + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method not implemented'); + } + + /** + * Returns all set types + * + * @return array List of set types + * @throws Zend_File_Transfer_Exception Not implemented + */ + public function getType() + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method not implemented'); + } + + /** + * Adds one or more type of files + * + * @param string|array $type Type of files to add + * @param string|array $validator Validators to use for this file, must be set before + * @param string|array $filter Filters to use for this file, must be set before + * @return Zend_File_Transfer_Adapter_Abstract + * @throws Zend_File_Transfer_Exception Not implemented + */ + public function addType($type, $validator = null, $filter = null) + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method not implemented'); + } + + /** + * Sets a new destination for the given files + * + * @deprecated Will be changed to be a filter!!! + * @param string $destination New destination directory + * @param string|array $files Files to set the new destination for + * @return Zend_File_Transfer_Abstract + * @throws Zend_File_Transfer_Exception when the given destination is not a directory or does not exist + */ + public function setDestination($destination, $files = null) + { + $orig = $files; + $destination = rtrim($destination, "/\\"); + if (!is_dir($destination)) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception( + 'The given destination is not a directory or does not exist' + ); + } + + if (!$this->_isPathWriteable($destination)) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception( + 'The given destination is not writable' + ); + } + + if ($files === null) { + foreach ($this->_files as $file => $content) { + $this->_files[$file]['destination'] = $destination; + } + } else { + $files = $this->_getFiles($files, true, true); + if (empty($files) and is_string($orig)) { + $this->_files[$orig]['destination'] = $destination; + } + + foreach ($files as $file) { + $this->_files[$file]['destination'] = $destination; + } + } + + return $this; + } + + /** + * Retrieve destination directory value + * + * @param null|string|array $files + * @return null|string|array + * @throws Zend_File_Transfer_Exception + */ + public function getDestination($files = null) + { + $orig = $files; + $files = $this->_getFiles($files, false, true); + $destinations = array(); + if (empty($files) and is_string($orig)) { + if (isset($this->_files[$orig]['destination'])) { + $destinations[$orig] = $this->_files[$orig]['destination']; + } else { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception(sprintf('The file transfer adapter can not find "%s"', $orig)); + } + } + + foreach ($files as $key => $content) { + if (isset($this->_files[$key]['destination'])) { + $destinations[$key] = $this->_files[$key]['destination']; + } else { + $tmpdir = $this->_getTmpDir(); + $this->setDestination($tmpdir, $key); + $destinations[$key] = $tmpdir; + } + } + + if (empty($destinations)) { + $destinations = $this->_getTmpDir(); + } else if (count($destinations) == 1) { + $destinations = current($destinations); + } + + return $destinations; + } + + /** + * Set translator object for localization + * + * @param Zend_Translate|null $translator + * @return Zend_File_Transfer_Abstract + * @throws Zend_File_Transfer_Exception + */ + public function setTranslator($translator = null) + { + if (null === $translator) { + $this->_translator = null; + } elseif ($translator instanceof Zend_Translate_Adapter) { + $this->_translator = $translator; + } elseif ($translator instanceof Zend_Translate) { + $this->_translator = $translator->getAdapter(); + } else { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Invalid translator specified'); + } + + return $this; + } + + /** + * Retrieve localization translator object + * + * @return Zend_Translate_Adapter|null + */ + public function getTranslator() + { + if ($this->translatorIsDisabled()) { + return null; + } + + return $this->_translator; + } + + /** + * Indicate whether or not translation should be disabled + * + * @param bool $flag + * @return Zend_File_Transfer_Abstract + */ + public function setDisableTranslator($flag) + { + $this->_translatorDisabled = (bool) $flag; + return $this; + } + + /** + * Is translation disabled? + * + * @return bool + */ + public function translatorIsDisabled() + { + return $this->_translatorDisabled; + } + + /** + * Returns the hash for a given file + * + * @param string $hash Hash algorithm to use + * @param string|array $files Files to return the hash for + * @return string|array Hashstring + * @throws Zend_File_Transfer_Exception On unknown hash algorithm + */ + public function getHash($hash = 'crc32', $files = null) + { + if (!in_array($hash, hash_algos())) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Unknown hash algorithm'); + } + + $files = $this->_getFiles($files); + $result = array(); + foreach($files as $key => $value) { + if (file_exists($value['name'])) { + $result[$key] = hash_file($hash, $value['name']); + } else if (file_exists($value['tmp_name'])) { + $result[$key] = hash_file($hash, $value['tmp_name']); + } else if (empty($value['options']['ignoreNoFile'])) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("The file '{$value['name']}' does not exist"); + } + } + + if (count($result) == 1) { + return current($result); + } + + return $result; + } + + /** + * Returns the real filesize of the file + * + * @param string|array $files Files to get the filesize from + * @throws Zend_File_Transfer_Exception When the file does not exist + * @return string|array Filesize + */ + public function getFileSize($files = null) + { + $files = $this->_getFiles($files); + $result = array(); + foreach($files as $key => $value) { + if (file_exists($value['name']) || file_exists($value['tmp_name'])) { + if ($value['options']['useByteString']) { + $result[$key] = self::_toByteString($value['size']); + } else { + $result[$key] = $value['size']; + } + } else if (empty($value['options']['ignoreNoFile'])) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("The file '{$value['name']}' does not exist"); + } else { + continue; + } + } + + if (count($result) == 1) { + return current($result); + } + + return $result; + } + + /** + * Internal method to detect the size of a file + * + * @param array $value File infos + * @return string Filesize of given file + */ + protected function _detectFileSize($value) + { + if (file_exists($value['name'])) { + $result = sprintf("%u", @filesize($value['name'])); + } else if (file_exists($value['tmp_name'])) { + $result = sprintf("%u", @filesize($value['tmp_name'])); + } else { + return null; + } + + return $result; + } + + /** + * Returns the real mimetype of the file + * Uses fileinfo, when not available mime_magic and as last fallback a manual given mimetype + * + * @param string|array $files Files to get the mimetype from + * @throws Zend_File_Transfer_Exception When the file does not exist + * @return string|array MimeType + */ + public function getMimeType($files = null) + { + $files = $this->_getFiles($files); + $result = array(); + foreach($files as $key => $value) { + if (file_exists($value['name']) || file_exists($value['tmp_name'])) { + $result[$key] = $value['type']; + } else if (empty($value['options']['ignoreNoFile'])) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("The file '{$value['name']}' does not exist"); + } else { + continue; + } + } + + if (count($result) == 1) { + return current($result); + } + + return $result; + } + + /** + * Internal method to detect the mime type of a file + * + * @param array $value File infos + * @return string Mimetype of given file + */ + protected function _detectMimeType($value) + { + if (file_exists($value['name'])) { + $file = $value['name']; + } else if (file_exists($value['tmp_name'])) { + $file = $value['tmp_name']; + } else { + return null; + } + + if (class_exists('finfo', false)) { + $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; + if (!empty($value['options']['magicFile'])) { + $mime = @finfo_open($const, $value['options']['magicFile']); + } + + if (empty($mime)) { + $mime = @finfo_open($const); + } + + if (!empty($mime)) { + $result = finfo_file($mime, $file); + } + + unset($mime); + } + + if (empty($result) && (function_exists('mime_content_type') + && ini_get('mime_magic.magicfile'))) { + $result = mime_content_type($file); + } + + if (empty($result)) { + $result = 'application/octet-stream'; + } + + return $result; + } + + /** + * Returns the formatted size + * + * @param integer $size + * @return string + */ + protected static function _toByteString($size) + { + $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + for ($i=0; $size >= 1024 && $i < 9; $i++) { + $size /= 1024; + } + + return round($size, 2) . $sizes[$i]; + } + + /** + * Internal function to filter all given files + * + * @param string|array $files (Optional) Files to check + * @return boolean False on error + */ + protected function _filter($files = null) + { + $check = $this->_getFiles($files); + foreach ($check as $name => $content) { + if (array_key_exists('filters', $content)) { + foreach ($content['filters'] as $class) { + $filter = $this->_filters[$class]; + try { + $result = $filter->filter($this->getFileName($name)); + + $this->_files[$name]['destination'] = dirname($result); + $this->_files[$name]['name'] = basename($result); + } catch (Zend_Filter_Exception $e) { + $this->_messages += array($e->getMessage()); + } + } + } + } + + if (count($this->_messages) > 0) { + return false; + } + + return true; + } + + /** + * Determine system TMP directory and detect if we have read access + * + * @return string + * @throws Zend_File_Transfer_Exception if unable to determine directory + */ + protected function _getTmpDir() + { + if (null === $this->_tmpDir) { + $tmpdir = array(); + if (function_exists('sys_get_temp_dir')) { + $tmpdir[] = sys_get_temp_dir(); + } + + if (!empty($_ENV['TMP'])) { + $tmpdir[] = realpath($_ENV['TMP']); + } + + if (!empty($_ENV['TMPDIR'])) { + $tmpdir[] = realpath($_ENV['TMPDIR']); + } + + if (!empty($_ENV['TEMP'])) { + $tmpdir[] = realpath($_ENV['TEMP']); + } + + $upload = ini_get('upload_tmp_dir'); + if ($upload) { + $tmpdir[] = realpath($upload); + } + + foreach($tmpdir as $directory) { + if ($this->_isPathWriteable($directory)) { + $this->_tmpDir = $directory; + } + } + + if (empty($this->_tmpDir)) { + // Attemp to detect by creating a temporary file + $tempFile = tempnam(md5(uniqid(rand(), TRUE)), ''); + if ($tempFile) { + $this->_tmpDir = realpath(dirname($tempFile)); + unlink($tempFile); + } else { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Could not determine a temporary directory'); + } + } + + $this->_tmpDir = rtrim($this->_tmpDir, "/\\"); + } + return $this->_tmpDir; + } + + /** + * Tries to detect if we can read and write to the given path + * + * @param string $path + * @return bool + */ + protected function _isPathWriteable($path) + { + $tempFile = rtrim($path, "/\\"); + $tempFile .= '/' . 'test.1'; + + $result = @file_put_contents($tempFile, 'TEST'); + + if ($result == false) { + return false; + } + + $result = @unlink($tempFile); + + if ($result == false) { + return false; + } + + return true; + } + + /** + * Returns found files based on internal file array and given files + * + * @param string|array $files (Optional) Files to return + * @param boolean $names (Optional) Returns only names on true, else complete info + * @param boolean $noexception (Optional) Allows throwing an exception, otherwise returns an empty array + * @return array Found files + * @throws Zend_File_Transfer_Exception On false filename + */ + protected function _getFiles($files, $names = false, $noexception = false) + { + $check = array(); + + if (is_string($files)) { + $files = array($files); + } + + if (is_array($files)) { + foreach ($files as $find) { + $found = array(); + foreach ($this->_files as $file => $content) { + if (!isset($content['name'])) { + continue; + } + + if (($content['name'] === $find) && isset($content['multifiles'])) { + foreach ($content['multifiles'] as $multifile) { + $found[] = $multifile; + } + break; + } + + if ($file === $find) { + $found[] = $file; + break; + } + + if ($content['name'] === $find) { + $found[] = $file; + break; + } + } + + if (empty($found)) { + if ($noexception !== false) { + return array(); + } + + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception(sprintf('The file transfer adapter can not find "%s"', $find)); + } + + foreach ($found as $checked) { + $check[$checked] = $this->_files[$checked]; + } + } + } + + if ($files === null) { + $check = $this->_files; + $keys = array_keys($check); + foreach ($keys as $key) { + if (isset($check[$key]['multifiles'])) { + unset($check[$key]); + } + } + } + + if ($names) { + $check = array_keys($check); + } + + return $check; + } + + /** + * Retrieve internal identifier for a named validator + * + * @param string $name + * @return string + */ + protected function _getValidatorIdentifier($name) + { + if (array_key_exists($name, $this->_validators)) { + return $name; + } + + foreach (array_keys($this->_validators) as $test) { + if (preg_match('/' . preg_quote($name) . '$/i', $test)) { + return $test; + } + } + + return false; + } + + /** + * Retrieve internal identifier for a named filter + * + * @param string $name + * @return string + */ + protected function _getFilterIdentifier($name) + { + if (array_key_exists($name, $this->_filters)) { + return $name; + } + + foreach (array_keys($this->_filters) as $test) { + if (preg_match('/' . preg_quote($name) . '$/i', $test)) { + return $test; + } + } + + return false; + } +} diff --git a/library/Zend/File/Transfer/Adapter/Http.php b/library/Zend/File/Transfer/Adapter/Http.php new file mode 100755 index 000000000..2265e4ff1 --- /dev/null +++ b/library/Zend/File/Transfer/Adapter/Http.php @@ -0,0 +1,487 @@ +setOptions($options); + $this->_prepareFiles(); + $this->addValidator('Upload', false, $this->_files); + } + + /** + * Sets a validator for the class, erasing all previous set + * + * @param string|array $validator Validator to set + * @param string|array $files Files to limit this validator to + * @return Zend_File_Transfer_Adapter + */ + public function setValidators(array $validators, $files = null) + { + $this->clearValidators(); + return $this->addValidators($validators, $files); + } + + /** + * Remove an individual validator + * + * @param string $name + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function removeValidator($name) + { + if ($name == 'Upload') { + return $this; + } + + return parent::removeValidator($name); + } + + /** + * Remove an individual validator + * + * @param string $name + * @return Zend_File_Transfer_Adapter_Abstract + */ + public function clearValidators() + { + parent::clearValidators(); + $this->addValidator('Upload', false, $this->_files); + + return $this; + } + + /** + * Send the file to the client (Download) + * + * @param string|array $options Options for the file(s) to send + * @return void + * @throws Zend_File_Transfer_Exception Not implemented + */ + public function send($options = null) + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method not implemented'); + } + + /** + * Checks if the files are valid + * + * @param string|array $files (Optional) Files to check + * @return boolean True if all checks are valid + */ + public function isValid($files = null) + { + // Workaround for WebServer not conforming HTTP and omitting CONTENT_LENGTH + $content = 0; + if (isset($_SERVER['CONTENT_LENGTH'])) { + $content = $_SERVER['CONTENT_LENGTH']; + } else if (!empty($_POST)) { + $content = serialize($_POST); + } + + // Workaround for a PHP error returning empty $_FILES when form data exceeds php settings + if (empty($this->_files) && ($content > 0)) { + if (is_array($files)) { + if (0 === count($files)) { + return false; + } + + $files = current($files); + } + + $temp = array($files => array( + 'name' => $files, + 'error' => 1)); + $validator = $this->_validators['Zend_Validate_File_Upload']; + $validator->setFiles($temp) + ->isValid($files, null); + $this->_messages += $validator->getMessages(); + return false; + } + + return parent::isValid($files); + } + + /** + * Receive the file from the client (Upload) + * + * @param string|array $files (Optional) Files to receive + * @return bool + */ + public function receive($files = null) + { + if (!$this->isValid($files)) { + return false; + } + + $check = $this->_getFiles($files); + foreach ($check as $file => $content) { + if (!$content['received']) { + $directory = ''; + $destination = $this->getDestination($file); + if ($destination !== null) { + $directory = $destination . DIRECTORY_SEPARATOR; + } + + $filename = $directory . $content['name']; + $rename = $this->getFilter('Rename'); + if ($rename !== null) { + $tmp = $rename->getNewName($content['tmp_name']); + if ($tmp != $content['tmp_name']) { + $filename = $tmp; + } + + if (dirname($filename) == '.') { + $filename = $directory . $filename; + } + + $key = array_search(get_class($rename), $this->_files[$file]['filters']); + unset($this->_files[$file]['filters'][$key]); + } + + // Should never return false when it's tested by the upload validator + if (!move_uploaded_file($content['tmp_name'], $filename)) { + if ($content['options']['ignoreNoFile']) { + $this->_files[$file]['received'] = true; + $this->_files[$file]['filtered'] = true; + continue; + } + + $this->_files[$file]['received'] = false; + return false; + } + + if ($rename !== null) { + $this->_files[$file]['destination'] = dirname($filename); + $this->_files[$file]['name'] = basename($filename); + } + + $this->_files[$file]['tmp_name'] = $filename; + $this->_files[$file]['received'] = true; + } + + if (!$content['filtered']) { + if (!$this->_filter($file)) { + $this->_files[$file]['filtered'] = false; + return false; + } + + $this->_files[$file]['filtered'] = true; + } + } + + return true; + } + + /** + * Checks if the file was already sent + * + * @param string|array $file Files to check + * @return bool + * @throws Zend_File_Transfer_Exception Not implemented + */ + public function isSent($files = null) + { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Method not implemented'); + } + + /** + * Checks if the file was already received + * + * @param string|array $files (Optional) Files to check + * @return bool + */ + public function isReceived($files = null) + { + $files = $this->_getFiles($files, false, true); + if (empty($files)) { + return false; + } + + foreach ($files as $content) { + if ($content['received'] !== true) { + return false; + } + } + + return true; + } + + /** + * Checks if the file was already filtered + * + * @param string|array $files (Optional) Files to check + * @return bool + */ + public function isFiltered($files = null) + { + $files = $this->_getFiles($files, false, true); + if (empty($files)) { + return false; + } + + foreach ($files as $content) { + if ($content['filtered'] !== true) { + return false; + } + } + + return true; + } + + /** + * Has a file been uploaded ? + * + * @param array|string|null $file + * @return bool + */ + public function isUploaded($files = null) + { + $files = $this->_getFiles($files, false, true); + if (empty($files)) { + return false; + } + + foreach ($files as $file) { + if (empty($file['name'])) { + return false; + } + } + + return true; + } + + /** + * Returns the actual progress of file up-/downloads + * + * @param string $id The upload to get the progress for + * @return array|null + */ + public static function getProgress($id = null) + { + if (!function_exists('apc_fetch') and !function_exists('uploadprogress_get_info')) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Neither APC nor uploadprogress extension installed'); + } + + $session = 'Zend_File_Transfer_Adapter_Http_ProgressBar'; + $status = array( + 'total' => 0, + 'current' => 0, + 'rate' => 0, + 'message' => '', + 'done' => false + ); + + if (is_array($id)) { + if (isset($id['progress'])) { + $adapter = $id['progress']; + } + + if (isset($id['session'])) { + $session = $id['session']; + } + + if (isset($id['id'])) { + $id = $id['id']; + } else { + unset($id); + } + } + + if (!empty($id) && (($id instanceof Zend_ProgressBar_Adapter) || ($id instanceof Zend_ProgressBar))) { + $adapter = $id; + unset($id); + } + + if (empty($id)) { + if (!isset($_GET['progress_key'])) { + $status['message'] = 'No upload in progress'; + $status['done'] = true; + } else { + $id = $_GET['progress_key']; + } + } + + if (!empty($id)) { + if (self::isApcAvailable()) { + + $call = call_user_func(self::$_callbackApc, ini_get('apc.rfc1867_prefix') . $id); + if (is_array($call)) { + $status = $call + $status; + } + } else if (self::isUploadProgressAvailable()) { + $call = call_user_func(self::$_callbackUploadProgress, $id); + if (is_array($call)) { + $status = $call + $status; + $status['total'] = $status['bytes_total']; + $status['current'] = $status['bytes_uploaded']; + $status['rate'] = $status['speed_average']; + if ($status['total'] == $status['current']) { + $status['done'] = true; + } + } + } + + if (!is_array($call)) { + $status['done'] = true; + $status['message'] = 'Failure while retrieving the upload progress'; + } else if (!empty($status['cancel_upload'])) { + $status['done'] = true; + $status['message'] = 'The upload has been canceled'; + } else { + $status['message'] = self::_toByteString($status['current']) . " - " . self::_toByteString($status['total']); + } + + $status['id'] = $id; + } + + if (isset($adapter) && isset($status['id'])) { + if ($adapter instanceof Zend_ProgressBar_Adapter) { + require_once 'Zend/ProgressBar.php'; + $adapter = new Zend_ProgressBar($adapter, 0, $status['total'], $session); + } + + if (!($adapter instanceof Zend_ProgressBar)) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception('Unknown Adapter given'); + } + + if ($status['done']) { + $adapter->finish(); + } else { + $adapter->update($status['current'], $status['message']); + } + + $status['progress'] = $adapter; + } + + return $status; + } + + /** + * Checks the APC extension for progress information + * + * @return boolean + */ + public static function isApcAvailable() + { + return (bool) ini_get('apc.enabled') && (bool) ini_get('apc.rfc1867') && is_callable(self::$_callbackApc); + } + + /** + * Checks the UploadProgress extension for progress information + * + * @return boolean + */ + public static function isUploadProgressAvailable() + { + return is_callable(self::$_callbackUploadProgress); + } + + /** + * Prepare the $_FILES array to match the internal syntax of one file per entry + * + * @param array $files + * @return array + */ + protected function _prepareFiles() + { + $this->_files = array(); + foreach ($_FILES as $form => $content) { + if (is_array($content['name'])) { + foreach ($content as $param => $file) { + foreach ($file as $number => $target) { + $this->_files[$form . '_' . $number . '_'][$param] = $target; + $this->_files[$form]['multifiles'][$number] = $form . '_' . $number . '_'; + } + } + + $this->_files[$form]['name'] = $form; + foreach($this->_files[$form]['multifiles'] as $key => $value) { + $this->_files[$value]['options'] = $this->_options; + $this->_files[$value]['validated'] = false; + $this->_files[$value]['received'] = false; + $this->_files[$value]['filtered'] = false; + + $mimetype = $this->_detectMimeType($this->_files[$value]); + $this->_files[$value]['type'] = $mimetype; + + $filesize = $this->_detectFileSize($this->_files[$value]); + $this->_files[$value]['size'] = $filesize; + + if ($this->_options['detectInfos']) { + $_FILES[$form]['type'][$key] = $mimetype; + $_FILES[$form]['size'][$key] = $filesize; + } + } + } else { + $this->_files[$form] = $content; + $this->_files[$form]['options'] = $this->_options; + $this->_files[$form]['validated'] = false; + $this->_files[$form]['received'] = false; + $this->_files[$form]['filtered'] = false; + + $mimetype = $this->_detectMimeType($this->_files[$form]); + $this->_files[$form]['type'] = $mimetype; + + $filesize = $this->_detectFileSize($this->_files[$form]); + $this->_files[$form]['size'] = $filesize; + + if ($this->_options['detectInfos']) { + $_FILES[$form]['type'] = $mimetype; + $_FILES[$form]['size'] = $filesize; + } + } + } + + return $this; + } +} diff --git a/library/Zend/File/Transfer/Exception.php b/library/Zend/File/Transfer/Exception.php new file mode 100755 index 000000000..39b01ee4a --- /dev/null +++ b/library/Zend/File/Transfer/Exception.php @@ -0,0 +1,55 @@ +_fileerror = $fileerror; + parent::__construct($message); + } + + /** + * Returns the transfer error code for the exception + * This is not the exception code !!! + * + * @return integer + */ + public function getFileError() + { + return $this->_fileerror; + } +} diff --git a/library/Zend/Filter.php b/library/Zend/Filter.php new file mode 100755 index 000000000..1256ff9bd --- /dev/null +++ b/library/Zend/Filter.php @@ -0,0 +1,239 @@ +_filters, $filter); + } else { + $this->_filters[] = $filter; + } + return $this; + } + + /** + * Add a filter to the end of the chain + * + * @param Zend_Filter_Interface $filter + * @return Zend_Filter Provides a fluent interface + */ + public function appendFilter(Zend_Filter_Interface $filter) + { + return $this->addFilter($filter, self::CHAIN_APPEND); + } + + /** + * Add a filter to the start of the chain + * + * @param Zend_Filter_Interface $filter + * @return Zend_Filter Provides a fluent interface + */ + public function prependFilter(Zend_Filter_Interface $filter) + { + return $this->addFilter($filter, self::CHAIN_PREPEND); + } + + /** + * Get all the filters + * + * @return array + */ + public function getFilters() + { + return $this->_filters; + } + + /** + * Returns $value filtered through each filter in the chain + * + * Filters are run in the order in which they were added to the chain (FIFO) + * + * @param mixed $value + * @return mixed + */ + public function filter($value) + { + $valueFiltered = $value; + foreach ($this->_filters as $filter) { + $valueFiltered = $filter->filter($valueFiltered); + } + return $valueFiltered; + } + + /** + * Returns the set default namespaces + * + * @return array + */ + public static function getDefaultNamespaces() + { + return self::$_defaultNamespaces; + } + + /** + * Sets new default namespaces + * + * @param array|string $namespace + * @return null + */ + public static function setDefaultNamespaces($namespace) + { + if (!is_array($namespace)) { + $namespace = array((string) $namespace); + } + + self::$_defaultNamespaces = $namespace; + } + + /** + * Adds a new default namespace + * + * @param array|string $namespace + * @return null + */ + public static function addDefaultNamespaces($namespace) + { + if (!is_array($namespace)) { + $namespace = array((string) $namespace); + } + + self::$_defaultNamespaces = array_unique(array_merge(self::$_defaultNamespaces, $namespace)); + } + + /** + * Returns true when defaultNamespaces are set + * + * @return boolean + */ + public static function hasDefaultNamespaces() + { + return (!empty(self::$_defaultNamespaces)); + } + + /** + * @deprecated + * @see Zend_Filter::filterStatic() + * + * @param mixed $value + * @param string $classBaseName + * @param array $args OPTIONAL + * @param array|string $namespaces OPTIONAL + * @return mixed + * @throws Zend_Filter_Exception + */ + public static function get($value, $classBaseName, array $args = array(), $namespaces = array()) + { + trigger_error( + 'Zend_Filter::get() is deprecated as of 1.9.0; please update your code to utilize Zend_Filter::filterStatic()', + E_USER_NOTICE + ); + + return self::filterStatic($value, $classBaseName, $args, $namespaces); + } + + /** + * Returns a value filtered through a specified filter class, without requiring separate + * instantiation of the filter object. + * + * The first argument of this method is a data input value, that you would have filtered. + * The second argument is a string, which corresponds to the basename of the filter class, + * relative to the Zend_Filter namespace. This method automatically loads the class, + * creates an instance, and applies the filter() method to the data input. You can also pass + * an array of constructor arguments, if they are needed for the filter class. + * + * @param mixed $value + * @param string $classBaseName + * @param array $args OPTIONAL + * @param array|string $namespaces OPTIONAL + * @return mixed + * @throws Zend_Filter_Exception + */ + public static function filterStatic($value, $classBaseName, array $args = array(), $namespaces = array()) + { + require_once 'Zend/Loader.php'; + $namespaces = array_merge((array) $namespaces, self::$_defaultNamespaces, array('Zend_Filter')); + foreach ($namespaces as $namespace) { + $className = $namespace . '_' . ucfirst($classBaseName); + if (!class_exists($className, false)) { + try { + $file = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; + if (Zend_Loader::isReadable($file)) { + Zend_Loader::loadClass($className); + } else { + continue; + } + } catch (Zend_Exception $ze) { + continue; + } + } + + $class = new ReflectionClass($className); + if ($class->implementsInterface('Zend_Filter_Interface')) { + if ($class->hasMethod('__construct')) { + $object = $class->newInstanceArgs($args); + } else { + $object = $class->newInstance(); + } + return $object->filter($value); + } + } + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Filter class not found from basename '$classBaseName'"); + } +} diff --git a/library/Zend/Filter/Alnum.php b/library/Zend/Filter/Alnum.php new file mode 100755 index 000000000..7455dafe4 --- /dev/null +++ b/library/Zend/Filter/Alnum.php @@ -0,0 +1,146 @@ +toArray(); + } else if (is_array($allowWhiteSpace)) { + if (array_key_exists('allowwhitespace', $allowWhiteSpace)) { + $allowWhiteSpace = $allowWhiteSpace['allowwhitespace']; + } else { + $allowWhiteSpace = false; + } + } + + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + if (null === self::$_unicodeEnabled) { + self::$_unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false; + } + + if (null === self::$_meansEnglishAlphabet) { + $this->_locale = new Zend_Locale('auto'); + self::$_meansEnglishAlphabet = in_array($this->_locale->getLanguage(), + array('ja', 'ko', 'zh') + ); + } + + } + + /** + * Returns the allowWhiteSpace option + * + * @return boolean + */ + public function getAllowWhiteSpace() + { + return $this->allowWhiteSpace; + } + + /** + * Sets the allowWhiteSpace option + * + * @param boolean $allowWhiteSpace + * @return Zend_Filter_Alnum Provides a fluent interface + */ + public function setAllowWhiteSpace($allowWhiteSpace) + { + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns the string $value, removing all but alphabetic and digit characters + * + * @param string $value + * @return string + */ + public function filter($value) + { + $whiteSpace = $this->allowWhiteSpace ? '\s' : ''; + if (!self::$_unicodeEnabled) { + // POSIX named classes are not supported, use alternative a-zA-Z0-9 match + $pattern = '/[^a-zA-Z0-9' . $whiteSpace . ']/'; + } else if (self::$_meansEnglishAlphabet) { + //The Alphabet means english alphabet. + $pattern = '/[^a-zA-Z0-9' . $whiteSpace . ']/u'; + } else { + //The Alphabet means each language's alphabet. + $pattern = '/[^\p{L}\p{N}' . $whiteSpace . ']/u'; + } + + return preg_replace($pattern, '', (string) $value); + } +} diff --git a/library/Zend/Filter/Alpha.php b/library/Zend/Filter/Alpha.php new file mode 100755 index 000000000..7374da166 --- /dev/null +++ b/library/Zend/Filter/Alpha.php @@ -0,0 +1,146 @@ +toArray(); + } else if (is_array($allowWhiteSpace)) { + if (array_key_exists('allowwhitespace', $allowWhiteSpace)) { + $allowWhiteSpace = $allowWhiteSpace['allowwhitespace']; + } else { + $allowWhiteSpace = false; + } + } + + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + if (null === self::$_unicodeEnabled) { + self::$_unicodeEnabled = (@preg_match('/\pL/u', 'a')) ? true : false; + } + + if (null === self::$_meansEnglishAlphabet) { + $this->_locale = new Zend_Locale('auto'); + self::$_meansEnglishAlphabet = in_array($this->_locale->getLanguage(), + array('ja', 'ko', 'zh') + ); + } + + } + + /** + * Returns the allowWhiteSpace option + * + * @return boolean + */ + public function getAllowWhiteSpace() + { + return $this->allowWhiteSpace; + } + + /** + * Sets the allowWhiteSpace option + * + * @param boolean $allowWhiteSpace + * @return Zend_Filter_Alpha Provides a fluent interface + */ + public function setAllowWhiteSpace($allowWhiteSpace) + { + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns the string $value, removing all but alphabetic characters + * + * @param string $value + * @return string + */ + public function filter($value) + { + $whiteSpace = $this->allowWhiteSpace ? '\s' : ''; + if (!self::$_unicodeEnabled) { + // POSIX named classes are not supported, use alternative a-zA-Z match + $pattern = '/[^a-zA-Z' . $whiteSpace . ']/'; + } else if (self::$_meansEnglishAlphabet) { + //The Alphabet means english alphabet. + $pattern = '/[^a-zA-Z' . $whiteSpace . ']/u'; + } else { + //The Alphabet means each language's alphabet. + $pattern = '/[^\p{L}' . $whiteSpace . ']/u'; + } + + return preg_replace($pattern, '', (string) $value); + } +} diff --git a/library/Zend/Filter/BaseName.php b/library/Zend/Filter/BaseName.php new file mode 100755 index 000000000..8d6a6da56 --- /dev/null +++ b/library/Zend/Filter/BaseName.php @@ -0,0 +1,50 @@ + 'boolean', + self::INTEGER => 'integer', + self::FLOAT => 'float', + self::STRING => 'string', + self::ZERO => 'zero', + self::EMPTY_ARRAY => 'array', + self::NULL => 'null', + self::PHP => 'php', + self::FALSE_STRING => 'false', + self::YES => 'yes', + self::ALL => 'all', + ); + + /** + * Internal type to detect + * + * @var integer + */ + protected $_type = self::PHP; + + /** + * Internal locale + * + * @var array + */ + protected $_locale = array('auto'); + + /** + * Internal mode + * + * @var boolean + */ + protected $_casting = true; + + /** + * Constructor + * + * @param string|array|Zend_Config $options OPTIONAL + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + if (!empty($options)) { + $temp['type'] = array_shift($options); + } + + if (!empty($options)) { + $temp['casting'] = array_shift($options); + } + + if (!empty($options)) { + $temp['locale'] = array_shift($options); + } + + $options = $temp; + } + + if (array_key_exists('type', $options)) { + $this->setType($options['type']); + } + + if (array_key_exists('casting', $options)) { + $this->setCasting($options['casting']); + } + + if (array_key_exists('locale', $options)) { + $this->setLocale($options['locale']); + } + } + + /** + * Returns the set null types + * + * @return int + */ + public function getType() + { + return $this->_type; + } + + /** + * Set the null types + * + * @param integer|array $type + * @throws Zend_Filter_Exception + * @return Zend_Filter_Boolean + */ + public function setType($type = null) + { + if (is_array($type)) { + $detected = 0; + foreach($type as $value) { + if (is_int($value)) { + $detected += $value; + } elseif (in_array($value, $this->_constants)) { + $detected += array_search($value, $this->_constants); + } + } + + $type = $detected; + } elseif (is_string($type) && in_array($type, $this->_constants)) { + $type = array_search($type, $this->_constants); + } + + if (!is_int($type) || ($type < 0) || ($type > self::ALL)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Unknown type'); + } + + $this->_type = $type; + return $this; + } + + /** + * Returns the set locale + * + * @return array + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Set the locales which are accepted + * + * @param string|array|Zend_Locale $locale + * @throws Zend_Filter_Exception + * @return Zend_Filter_Boolean + */ + public function setLocale($locale = null) + { + if (is_string($locale)) { + $locale = array($locale); + } elseif ($locale instanceof Zend_Locale) { + $locale = array($locale->toString()); + } elseif (!is_array($locale)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Locale has to be string, array or an instance of Zend_Locale'); + } + + require_once 'Zend/Locale.php'; + foreach ($locale as $single) { + if (!Zend_Locale::isLocale($single)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Unknown locale '$single'"); + } + } + + $this->_locale = $locale; + return $this; + } + + /** + * Returns the casting option + * + * @return boolean + */ + public function getCasting() + { + return $this->_casting; + } + + /** + * Set the working mode + * + * @param boolean $locale When true this filter works like cast + * When false it recognises only true and false + * and all other values are returned as is + * @throws Zend_Filter_Exception + * @return Zend_Filter_Boolean + */ + public function setCasting($casting = true) + { + $this->_casting = (boolean) $casting; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns a boolean representation of $value + * + * @param string $value + * @return string + */ + public function filter($value) + { + $type = $this->getType(); + $casting = $this->getCasting(); + + // STRING YES (Localized) + if ($type >= self::YES) { + $type -= self::YES; + if (is_string($value)) { + require_once 'Zend/Locale.php'; + $locales = $this->getLocale(); + foreach ($locales as $locale) { + if ($this->_getLocalizedQuestion($value, false, $locale) === false) { + return false; + } + + if (!$casting && ($this->_getLocalizedQuestion($value, true, $locale) === true)) { + return true; + } + } + } + } + + // STRING FALSE ('false') + if ($type >= self::FALSE_STRING) { + $type -= self::FALSE_STRING; + if (is_string($value) && (strtolower($value) == 'false')) { + return false; + } + + if ((!$casting) && is_string($value) && (strtolower($value) == 'true')) { + return true; + } + } + + // NULL (null) + if ($type >= self::NULL) { + $type -= self::NULL; + if ($value === null) { + return false; + } + } + + // EMPTY_ARRAY (array()) + if ($type >= self::EMPTY_ARRAY) { + $type -= self::EMPTY_ARRAY; + if (is_array($value) && ($value == array())) { + return false; + } + } + + // ZERO ('0') + if ($type >= self::ZERO) { + $type -= self::ZERO; + if (is_string($value) && ($value == '0')) { + return false; + } + + if ((!$casting) && (is_string($value)) && ($value == '1')) { + return true; + } + } + + // STRING ('') + if ($type >= self::STRING) { + $type -= self::STRING; + if (is_string($value) && ($value == '')) { + return false; + } + } + + // FLOAT (0.0) + if ($type >= self::FLOAT) { + $type -= self::FLOAT; + if (is_float($value) && ($value == 0.0)) { + return false; + } + + if ((!$casting) && is_float($value) && ($value == 1.0)) { + return true; + } + } + + // INTEGER (0) + if ($type >= self::INTEGER) { + $type -= self::INTEGER; + if (is_int($value) && ($value == 0)) { + return false; + } + + if ((!$casting) && is_int($value) && ($value == 1)) { + return true; + } + } + + // BOOLEAN (false) + if ($type >= self::BOOLEAN) { + $type -= self::BOOLEAN; + if (is_bool($value)) { + return $value; + } + } + + if ($casting) { + return true; + } + + return $value; + } + + /** + * Determine the value of a localized string, and compare it to a given value + * + * @param string $value + * @param boolean $yes + * @param array $locale + * @return boolean + */ + protected function _getLocalizedQuestion($value, $yes, $locale) + { + if ($yes == true) { + $question = 'yes'; + $return = true; + } else { + $question = 'no'; + $return = false; + } + $str = Zend_Locale::getTranslation($question, 'question', $locale); + $str = explode(':', $str); + if (!empty($str)) { + foreach($str as $no) { + if (($no == $value) || (strtolower($no) == strtolower($value))) { + return $return; + } + } + } + } +} diff --git a/library/Zend/Filter/Callback.php b/library/Zend/Filter/Callback.php new file mode 100755 index 000000000..f7961ea51 --- /dev/null +++ b/library/Zend/Filter/Callback.php @@ -0,0 +1,152 @@ +toArray(); + } else if (!is_array($options) || !array_key_exists('callback', $options)) { + $options = func_get_args(); + $temp['callback'] = array_shift($options); + if (!empty($options)) { + $temp['options'] = array_shift($options); + } + + $options = $temp; + } + + if (!array_key_exists('callback', $options)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Missing callback to use'); + } + + $this->setCallback($options['callback']); + if (array_key_exists('options', $options)) { + $this->setOptions($options['options']); + } + } + + /** + * Returns the set callback + * + * @return string|array Set callback + */ + public function getCallback() + { + return $this->_callback; + } + + /** + * Sets a new callback for this filter + * + * @param unknown_type $callback + * @return unknown + */ + public function setCallback($callback, $options = null) + { + if (!is_callable($callback)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Callback can not be accessed'); + } + + $this->_callback = $callback; + $this->setOptions($options); + return $this; + } + + /** + * Returns the set default options + * + * @return mixed + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets new default options to the callback filter + * + * @param mixed $options Default options to set + * @return Zend_Filter_Callback + */ + public function setOptions($options) + { + $this->_options = $options; + return $this; + } + + /** + * Calls the filter per callback + * + * @param mixed $value Options for the set callback + * @return mixed Result from the filter which was callbacked + */ + public function filter($value) + { + $options = array(); + + if ($this->_options !== null) { + if (!is_array($this->_options)) { + $options = array($this->_options); + } else { + $options = $this->_options; + } + } + + array_unshift($options, $value); + + return call_user_func_array($this->_callback, $options); + } +} diff --git a/library/Zend/Filter/Compress.php b/library/Zend/Filter/Compress.php new file mode 100755 index 000000000..e9361f7a4 --- /dev/null +++ b/library/Zend/Filter/Compress.php @@ -0,0 +1,197 @@ +toArray(); + } + if (is_string($options)) { + $this->setAdapter($options); + } elseif ($options instanceof Zend_Filter_Compress_CompressInterface) { + $this->setAdapter($options); + } elseif (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set filter setate + * + * @param array $options + * @return Zend_Filter_Compress + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if ($key == 'options') { + $key = 'adapterOptions'; + } + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + return $this; + } + + /** + * Returns the current adapter, instantiating it if necessary + * + * @return string + */ + public function getAdapter() + { + if ($this->_adapter instanceof Zend_Filter_Compress_CompressInterface) { + return $this->_adapter; + } + + $adapter = $this->_adapter; + $options = $this->getAdapterOptions(); + if (!class_exists($adapter)) { + require_once 'Zend/Loader.php'; + if (Zend_Loader::isReadable('Zend/Filter/Compress/' . ucfirst($adapter) . '.php')) { + $adapter = 'Zend_Filter_Compress_' . ucfirst($adapter); + } + Zend_Loader::loadClass($adapter); + } + + $this->_adapter = new $adapter($options); + if (!$this->_adapter instanceof Zend_Filter_Compress_CompressInterface) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Compression adapter '" . $adapter . "' does not implement Zend_Filter_Compress_CompressInterface"); + } + return $this->_adapter; + } + + /** + * Retrieve adapter name + * + * @return string + */ + public function getAdapterName() + { + return $this->getAdapter()->toString(); + } + + /** + * Sets compression adapter + * + * @param string|Zend_Filter_Compress_CompressInterface $adapter Adapter to use + * @return Zend_Filter_Compress + */ + public function setAdapter($adapter) + { + if ($adapter instanceof Zend_Filter_Compress_CompressInterface) { + $this->_adapter = $adapter; + return $this; + } + if (!is_string($adapter)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Invalid adapter provided; must be string or instance of Zend_Filter_Compress_CompressInterface'); + } + $this->_adapter = $adapter; + + return $this; + } + + /** + * Retrieve adapter options + * + * @return array + */ + public function getAdapterOptions() + { + return $this->_adapterOptions; + } + + /** + * Set adapter options + * + * @param array $options + * @return void + */ + public function setAdapterOptions(array $options) + { + $this->_adapterOptions = $options; + return $this; + } + + /** + * Calls adapter methods + * + * @param string $method Method to call + * @param string|array $options Options for this method + */ + public function __call($method, $options) + { + $adapter = $this->getAdapter(); + if (!method_exists($adapter, $method)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Unknown method '{$method}'"); + } + + return call_user_func_array(array($adapter, $method), $options); + } + + /** + * Defined by Zend_Filter_Interface + * + * Compresses the content $value with the defined settings + * + * @param string $value Content to compress + * @return string The compressed content + */ + public function filter($value) + { + return $this->getAdapter()->compress($value); + } +} diff --git a/library/Zend/Filter/Compress/Bz2.php b/library/Zend/Filter/Compress/Bz2.php new file mode 100755 index 000000000..6bd4451f7 --- /dev/null +++ b/library/Zend/Filter/Compress/Bz2.php @@ -0,0 +1,188 @@ + Blocksize to use from 0-9 + * 'archive' => Archive to use + * ) + * + * @var array + */ + protected $_options = array( + 'blocksize' => 4, + 'archive' => null, + ); + + /** + * Class constructor + * + * @param array|Zend_Config $options (Optional) Options to set + */ + public function __construct($options = null) + { + if (!extension_loaded('bz2')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs the bz2 extension'); + } + parent::__construct($options); + } + + /** + * Returns the set blocksize + * + * @return integer + */ + public function getBlocksize() + { + return $this->_options['blocksize']; + } + + /** + * Sets a new blocksize + * + * @param integer $level + * @return Zend_Filter_Compress_Bz2 + */ + public function setBlocksize($blocksize) + { + if (($blocksize < 0) || ($blocksize > 9)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Blocksize must be between 0 and 9'); + } + + $this->_options['blocksize'] = (int) $blocksize; + return $this; + } + + /** + * Returns the set archive + * + * @return string + */ + public function getArchive() + { + return $this->_options['archive']; + } + + /** + * Sets the archive to use for de-/compression + * + * @param string $archive Archive to use + * @return Zend_Filter_Compress_Bz2 + */ + public function setArchive($archive) + { + $this->_options['archive'] = (string) $archive; + return $this; + } + + /** + * Compresses the given content + * + * @param string $content + * @return string + */ + public function compress($content) + { + $archive = $this->getArchive(); + if (!empty($archive)) { + $file = bzopen($archive, 'w'); + if (!$file) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Error opening the archive '" . $archive . "'"); + } + + bzwrite($file, $content); + bzclose($file); + $compressed = true; + } else { + $compressed = bzcompress($content, $this->getBlocksize()); + } + + if (is_int($compressed)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error during compression'); + } + + return $compressed; + } + + /** + * Decompresses the given content + * + * @param string $content + * @return string + */ + public function decompress($content) + { + $archive = $this->getArchive(); + if (@file_exists($content)) { + $archive = $content; + } + + if (@file_exists($archive)) { + $file = bzopen($archive, 'r'); + if (!$file) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Error opening the archive '" . $content . "'"); + } + + $compressed = bzread($file); + bzclose($file); + } else { + $compressed = bzdecompress($content); + } + + if (is_int($compressed)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error during decompression'); + } + + return $compressed; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Bz2'; + } +} diff --git a/library/Zend/Filter/Compress/CompressAbstract.php b/library/Zend/Filter/Compress/CompressAbstract.php new file mode 100755 index 000000000..2b20ac6f0 --- /dev/null +++ b/library/Zend/Filter/Compress/CompressAbstract.php @@ -0,0 +1,89 @@ +toArray(); + } + + if (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Returns one or all set options + * + * @param string $option (Optional) Option to return + * @return mixed + */ + public function getOptions($option = null) + { + if ($option === null) { + return $this->_options; + } + + if (!array_key_exists($option, $this->_options)) { + return null; + } + + return $this->_options[$option]; + } + + /** + * Sets all or one option + * + * @param array $options + * @return Zend_Filter_Compress_Bz2 + */ + public function setOptions(array $options) + { + foreach ($options as $key => $option) { + $method = 'set' . $key; + if (method_exists($this, $method)) { + $this->$method($option); + } + } + + return $this; + } +} diff --git a/library/Zend/Filter/Compress/CompressInterface.php b/library/Zend/Filter/Compress/CompressInterface.php new file mode 100755 index 000000000..75f0a4063 --- /dev/null +++ b/library/Zend/Filter/Compress/CompressInterface.php @@ -0,0 +1,54 @@ + Compression level 0-9 + * 'mode' => Compression mode, can be 'compress', 'deflate' + * 'archive' => Archive to use + * ) + * + * @var array + */ + protected $_options = array( + 'level' => 9, + 'mode' => 'compress', + 'archive' => null, + ); + + /** + * Class constructor + * + * @param array|Zend_Config|null $options (Optional) Options to set + */ + public function __construct($options = null) + { + if (!extension_loaded('zlib')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs the zlib extension'); + } + parent::__construct($options); + } + + /** + * Returns the set compression level + * + * @return integer + */ + public function getLevel() + { + return $this->_options['level']; + } + + /** + * Sets a new compression level + * + * @param integer $level + * @return Zend_Filter_Compress_Gz + */ + public function setLevel($level) + { + if (($level < 0) || ($level > 9)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Level must be between 0 and 9'); + } + + $this->_options['level'] = (int) $level; + return $this; + } + + /** + * Returns the set compression mode + * + * @return string + */ + public function getMode() + { + return $this->_options['mode']; + } + + /** + * Sets a new compression mode + * + * @param string $mode Supported are 'compress', 'deflate' and 'file' + */ + public function setMode($mode) + { + if (($mode != 'compress') && ($mode != 'deflate')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Given compression mode not supported'); + } + + $this->_options['mode'] = $mode; + return $this; + } + + /** + * Returns the set archive + * + * @return string + */ + public function getArchive() + { + return $this->_options['archive']; + } + + /** + * Sets the archive to use for de-/compression + * + * @param string $archive Archive to use + * @return Zend_Filter_Compress_Gz + */ + public function setArchive($archive) + { + $this->_options['archive'] = (string) $archive; + return $this; + } + + /** + * Compresses the given content + * + * @param string $content + * @return string + */ + public function compress($content) + { + $archive = $this->getArchive(); + if (!empty($archive)) { + $file = gzopen($archive, 'w' . $this->getLevel()); + if (!$file) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Error opening the archive '" . $this->_options['archive'] . "'"); + } + + gzwrite($file, $content); + gzclose($file); + $compressed = true; + } else if ($this->_options['mode'] == 'deflate') { + $compressed = gzdeflate($content, $this->getLevel()); + } else { + $compressed = gzcompress($content, $this->getLevel()); + } + + if (!$compressed) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error during compression'); + } + + return $compressed; + } + + /** + * Decompresses the given content + * + * @param string $content + * @return string + */ + public function decompress($content) + { + $archive = $this->getArchive(); + $mode = $this->getMode(); + if (@file_exists($content)) { + $archive = $content; + } + + if (@file_exists($archive)) { + $handler = fopen($archive, "rb"); + if (!$handler) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Error opening the archive '" . $archive . "'"); + } + + fseek($handler, -4, SEEK_END); + $packet = fread($handler, 4); + $bytes = unpack("V", $packet); + $size = end($bytes); + fclose($handler); + + $file = gzopen($archive, 'r'); + $compressed = gzread($file, $size); + gzclose($file); + } else if ($mode == 'deflate') { + $compressed = gzinflate($content); + } else { + $compressed = gzuncompress($content); + } + + if (!$compressed) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error during compression'); + } + + return $compressed; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Gz'; + } +} diff --git a/library/Zend/Filter/Compress/Lzf.php b/library/Zend/Filter/Compress/Lzf.php new file mode 100755 index 000000000..33115105a --- /dev/null +++ b/library/Zend/Filter/Compress/Lzf.php @@ -0,0 +1,91 @@ + Callback for compression + * 'archive' => Archive to use + * 'password' => Password to use + * 'target' => Target to write the files to + * ) + * + * @var array + */ + protected $_options = array( + 'callback' => null, + 'archive' => null, + 'password' => null, + 'target' => '.', + ); + + /** + * Class constructor + * + * @param array $options (Optional) Options to set + */ + public function __construct($options = null) + { + if (!extension_loaded('rar')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs the rar extension'); + } + parent::__construct($options); + } + + /** + * Returns the set callback for compression + * + * @return string + */ + public function getCallback() + { + return $this->_options['callback']; + } + + /** + * Sets the callback to use + * + * @param string $callback + * @return Zend_Filter_Compress_Rar + */ + public function setCallback($callback) + { + if (!is_callable($callback)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Callback can not be accessed'); + } + + $this->_options['callback'] = $callback; + return $this; + } + + /** + * Returns the set archive + * + * @return string + */ + public function getArchive() + { + return $this->_options['archive']; + } + + /** + * Sets the archive to use for de-/compression + * + * @param string $archive Archive to use + * @return Zend_Filter_Compress_Rar + */ + public function setArchive($archive) + { + $archive = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $archive); + $this->_options['archive'] = (string) $archive; + + return $this; + } + + /** + * Returns the set password + * + * @return string + */ + public function getPassword() + { + return $this->_options['password']; + } + + /** + * Sets the password to use + * + * @param string $password + * @return Zend_Filter_Compress_Rar + */ + public function setPassword($password) + { + $this->_options['password'] = (string) $password; + return $this; + } + + /** + * Returns the set targetpath + * + * @return string + */ + public function getTarget() + { + return $this->_options['target']; + } + + /** + * Sets the targetpath to use + * + * @param string $target + * @return Zend_Filter_Compress_Rar + */ + public function setTarget($target) + { + if (!file_exists(dirname($target))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The directory '$target' does not exist"); + } + + $target = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $target); + $this->_options['target'] = (string) $target; + return $this; + } + + /** + * Compresses the given content + * + * @param string|array $content + * @return string + */ + public function compress($content) + { + $callback = $this->getCallback(); + if ($callback === null) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('No compression callback available'); + } + + $options = $this->getOptions(); + unset($options['callback']); + + $result = call_user_func($callback, $options, $content); + if ($result !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error compressing the RAR Archive'); + } + + return $this->getArchive(); + } + + /** + * Decompresses the given content + * + * @param string $content + * @return boolean + */ + public function decompress($content) + { + $archive = $this->getArchive(); + if (file_exists($content)) { + $archive = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, realpath($content)); + } elseif (empty($archive) || !file_exists($archive)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('RAR Archive not found'); + } + + $password = $this->getPassword(); + if ($password !== null) { + $archive = rar_open($archive, $password); + } else { + $archive = rar_open($archive); + } + + if (!$archive) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Error opening the RAR Archive"); + } + + $target = $this->getTarget(); + if (!is_dir($target)) { + $target = dirname($target); + } + + $filelist = rar_list($archive); + if (!$filelist) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Error reading the RAR Archive"); + } + + foreach($filelist as $file) { + $file->extract($target); + } + + rar_close($archive); + return true; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Rar'; + } +} diff --git a/library/Zend/Filter/Compress/Tar.php b/library/Zend/Filter/Compress/Tar.php new file mode 100755 index 000000000..d2ce0d89a --- /dev/null +++ b/library/Zend/Filter/Compress/Tar.php @@ -0,0 +1,245 @@ + Archive to use + * 'target' => Target to write the files to + * ) + * + * @var array + */ + protected $_options = array( + 'archive' => null, + 'target' => '.', + 'mode' => null, + ); + + /** + * Class constructor + * + * @param array $options (Optional) Options to set + */ + public function __construct($options = null) + { + if (!class_exists('Archive_Tar')) { + require_once 'Zend/Loader.php'; + try { + Zend_Loader::loadClass('Archive_Tar'); + } catch (Zend_Exception $e) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs PEARs Archive_Tar', 0, $e); + } + } + + parent::__construct($options); + } + + /** + * Returns the set archive + * + * @return string + */ + public function getArchive() + { + return $this->_options['archive']; + } + + /** + * Sets the archive to use for de-/compression + * + * @param string $archive Archive to use + * @return Zend_Filter_Compress_Tar + */ + public function setArchive($archive) + { + $archive = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $archive); + $this->_options['archive'] = (string) $archive; + + return $this; + } + + /** + * Returns the set targetpath + * + * @return string + */ + public function getTarget() + { + return $this->_options['target']; + } + + /** + * Sets the targetpath to use + * + * @param string $target + * @return Zend_Filter_Compress_Tar + */ + public function setTarget($target) + { + if (!file_exists(dirname($target))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The directory '$target' does not exist"); + } + + $target = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $target); + $this->_options['target'] = (string) $target; + return $this; + } + + /** + * Returns the set compression mode + */ + public function getMode() + { + return $this->_options['mode']; + } + + /** + * Compression mode to use + * Eighter Gz or Bz2 + * + * @param string $mode + */ + public function setMode($mode) + { + $mode = ucfirst(strtolower($mode)); + if (($mode != 'Bz2') && ($mode != 'Gz')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The mode '$mode' is unknown"); + } + + if (($mode == 'Bz2') && (!extension_loaded('bz2'))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This mode needs the bz2 extension'); + } + + if (($mode == 'Gz') && (!extension_loaded('zlib'))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This mode needs the zlib extension'); + } + } + + /** + * Compresses the given content + * + * @param string $content + * @return string + */ + public function compress($content) + { + $archive = new Archive_Tar($this->getArchive(), $this->getMode()); + if (!file_exists($content)) { + $file = $this->getTarget(); + if (is_dir($file)) { + $file .= DIRECTORY_SEPARATOR . "tar.tmp"; + } + + $result = file_put_contents($file, $content); + if ($result === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error creating the temporary file'); + } + + $content = $file; + } + + if (is_dir($content)) { + // collect all file infos + foreach (new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($content, RecursiveDirectoryIterator::KEY_AS_PATHNAME), + RecursiveIteratorIterator::SELF_FIRST + ) as $directory => $info + ) { + if ($info->isFile()) { + $file[] = $directory; + } + } + + $content = $file; + } + + $result = $archive->create($content); + if ($result === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error creating the Tar archive'); + } + + return $this->getArchive(); + } + + /** + * Decompresses the given content + * + * @param string $content + * @return boolean + */ + public function decompress($content) + { + $archive = $this->getArchive(); + if (file_exists($content)) { + $archive = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, realpath($content)); + } elseif (empty($archive) || !file_exists($archive)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Tar Archive not found'); + } + + $archive = new Archive_Tar($archive, $this->getMode()); + $target = $this->getTarget(); + if (!is_dir($target)) { + $target = dirname($target); + } + + $result = $archive->extract($target); + if ($result === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Error while extracting the Tar archive'); + } + + return true; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Tar'; + } +} diff --git a/library/Zend/Filter/Compress/Zip.php b/library/Zend/Filter/Compress/Zip.php new file mode 100755 index 000000000..9921fe964 --- /dev/null +++ b/library/Zend/Filter/Compress/Zip.php @@ -0,0 +1,355 @@ + Archive to use + * 'password' => Password to use + * 'target' => Target to write the files to + * ) + * + * @var array + */ + protected $_options = array( + 'archive' => null, + 'target' => null, + ); + + /** + * Class constructor + * + * @param string|array $options (Optional) Options to set + */ + public function __construct($options = null) + { + if (!extension_loaded('zip')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs the zip extension'); + } + parent::__construct($options); + } + + /** + * Returns the set archive + * + * @return string + */ + public function getArchive() + { + return $this->_options['archive']; + } + + /** + * Sets the archive to use for de-/compression + * + * @param string $archive Archive to use + * @return Zend_Filter_Compress_Rar + */ + public function setArchive($archive) + { + $archive = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $archive); + $this->_options['archive'] = (string) $archive; + + return $this; + } + + /** + * Returns the set targetpath + * + * @return string + */ + public function getTarget() + { + return $this->_options['target']; + } + + /** + * Sets the target to use + * + * @param string $target + * @return Zend_Filter_Compress_Rar + */ + public function setTarget($target) + { + if (!file_exists(dirname($target))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The directory '$target' does not exist"); + } + + $target = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $target); + $this->_options['target'] = (string) $target; + return $this; + } + + /** + * Compresses the given content + * + * @param string $content + * @return string Compressed archive + */ + public function compress($content) + { + $zip = new ZipArchive(); + $res = $zip->open($this->getArchive(), ZipArchive::CREATE | ZipArchive::OVERWRITE); + + if ($res !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception($this->_errorString($res)); + } + + if (file_exists($content)) { + $content = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, realpath($content)); + $basename = substr($content, strrpos($content, DIRECTORY_SEPARATOR) + 1); + if (is_dir($content)) { + $index = strrpos($content, DIRECTORY_SEPARATOR) + 1; + $content .= DIRECTORY_SEPARATOR; + $stack = array($content); + while (!empty($stack)) { + $current = array_pop($stack); + $files = array(); + + $dir = dir($current); + while (false !== ($node = $dir->read())) { + if (($node == '.') || ($node == '..')) { + continue; + } + + if (is_dir($current . $node)) { + array_push($stack, $current . $node . DIRECTORY_SEPARATOR); + } + + if (is_file($current . $node)) { + $files[] = $node; + } + } + + $local = substr($current, $index); + $zip->addEmptyDir(substr($local, 0, -1)); + + foreach ($files as $file) { + $zip->addFile($current . $file, $local . $file); + if ($res !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception($this->_errorString($res)); + } + } + } + } else { + $res = $zip->addFile($content, $basename); + if ($res !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception($this->_errorString($res)); + } + } + } else { + $file = $this->getTarget(); + if (!is_dir($file)) { + $file = basename($file); + } else { + $file = "zip.tmp"; + } + + $res = $zip->addFromString($file, $content); + if ($res !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception($this->_errorString($res)); + } + } + + $zip->close(); + return $this->_options['archive']; + } + + /** + * Decompresses the given content + * + * @param string $content + * @return string + */ + public function decompress($content) + { + $archive = $this->getArchive(); + if (file_exists($content)) { + $archive = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, realpath($content)); + } elseif (empty($archive) || !file_exists($archive)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('ZIP Archive not found'); + } + + $zip = new ZipArchive(); + $res = $zip->open($archive); + + $target = $this->getTarget(); + + if (!empty($target) && !is_dir($target)) { + $target = dirname($target); + } + + if (!empty($target)) { + $target = rtrim($target, '/\\') . DIRECTORY_SEPARATOR; + } + + if (empty($target) || !is_dir($target)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('No target for ZIP decompression set'); + } + + if ($res !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception($this->_errorString($res)); + } + + if (version_compare(PHP_VERSION, '5.2.8', '<')) { + for ($i = 0; $i < $zip->numFiles; $i++) { + $statIndex = $zip->statIndex($i); + $currName = $statIndex['name']; + if (($currName{0} == '/') || + (substr($currName, 0, 2) == '..') || + (substr($currName, 0, 4) == './..') + ) + { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Upward directory traversal was detected inside ' . $archive + . ' please use PHP 5.2.8 or greater to take advantage of path resolution features of ' + . 'the zip extension in this decompress() method.' + ); + } + } + } + + $res = @$zip->extractTo($target); + if ($res !== true) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception($this->_errorString($res)); + } + + $zip->close(); + return $target; + } + + /** + * Returns the proper string based on the given error constant + * + * @param string $error + */ + protected function _errorString($error) + { + switch($error) { + case ZipArchive::ER_MULTIDISK : + return 'Multidisk ZIP Archives not supported'; + + case ZipArchive::ER_RENAME : + return 'Failed to rename the temporary file for ZIP'; + + case ZipArchive::ER_CLOSE : + return 'Failed to close the ZIP Archive'; + + case ZipArchive::ER_SEEK : + return 'Failure while seeking the ZIP Archive'; + + case ZipArchive::ER_READ : + return 'Failure while reading the ZIP Archive'; + + case ZipArchive::ER_WRITE : + return 'Failure while writing the ZIP Archive'; + + case ZipArchive::ER_CRC : + return 'CRC failure within the ZIP Archive'; + + case ZipArchive::ER_ZIPCLOSED : + return 'ZIP Archive already closed'; + + case ZipArchive::ER_NOENT : + return 'No such file within the ZIP Archive'; + + case ZipArchive::ER_EXISTS : + return 'ZIP Archive already exists'; + + case ZipArchive::ER_OPEN : + return 'Can not open ZIP Archive'; + + case ZipArchive::ER_TMPOPEN : + return 'Failure creating temporary ZIP Archive'; + + case ZipArchive::ER_ZLIB : + return 'ZLib Problem'; + + case ZipArchive::ER_MEMORY : + return 'Memory allocation problem while working on a ZIP Archive'; + + case ZipArchive::ER_CHANGED : + return 'ZIP Entry has been changed'; + + case ZipArchive::ER_COMPNOTSUPP : + return 'Compression method not supported within ZLib'; + + case ZipArchive::ER_EOF : + return 'Premature EOF within ZIP Archive'; + + case ZipArchive::ER_INVAL : + return 'Invalid argument for ZLIB'; + + case ZipArchive::ER_NOZIP : + return 'Given file is no zip archive'; + + case ZipArchive::ER_INTERNAL : + return 'Internal error while working on a ZIP Archive'; + + case ZipArchive::ER_INCONS : + return 'Inconsistent ZIP archive'; + + case ZipArchive::ER_REMOVE : + return 'Can not remove ZIP Archive'; + + case ZipArchive::ER_DELETED : + return 'ZIP Entry has been deleted'; + + default : + return 'Unknown error within ZIP Archive'; + } + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Zip'; + } +} diff --git a/library/Zend/Filter/Decompress.php b/library/Zend/Filter/Decompress.php new file mode 100755 index 000000000..02e9a8e5d --- /dev/null +++ b/library/Zend/Filter/Decompress.php @@ -0,0 +1,49 @@ +getAdapter()->decompress($value); + } +} diff --git a/library/Zend/Filter/Decrypt.php b/library/Zend/Filter/Decrypt.php new file mode 100755 index 000000000..844d95b86 --- /dev/null +++ b/library/Zend/Filter/Decrypt.php @@ -0,0 +1,49 @@ +_adapter->decrypt($value); + } +} diff --git a/library/Zend/Filter/Digits.php b/library/Zend/Filter/Digits.php new file mode 100755 index 000000000..01c3ed5a7 --- /dev/null +++ b/library/Zend/Filter/Digits.php @@ -0,0 +1,82 @@ +toArray(); + } + + $this->setAdapter($options); + } + + /** + * Returns the name of the set adapter + * + * @return string + */ + public function getAdapter() + { + return $this->_adapter->toString(); + } + + /** + * Sets new encryption options + * + * @param string|array $options (Optional) Encryption options + * @return Zend_Filter_Encrypt + */ + public function setAdapter($options = null) + { + if (is_string($options)) { + $adapter = $options; + } else if (isset($options['adapter'])) { + $adapter = $options['adapter']; + unset($options['adapter']); + } else { + $adapter = 'Mcrypt'; + } + + if (!is_array($options)) { + $options = array(); + } + + if (Zend_Loader::isReadable('Zend/Filter/Encrypt/' . ucfirst($adapter). '.php')) { + $adapter = 'Zend_Filter_Encrypt_' . ucfirst($adapter); + } + + if (!class_exists($adapter)) { + Zend_Loader::loadClass($adapter); + } + + $this->_adapter = new $adapter($options); + if (!$this->_adapter instanceof Zend_Filter_Encrypt_Interface) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Encoding adapter '" . $adapter . "' does not implement Zend_Filter_Encrypt_Interface"); + } + + return $this; + } + + /** + * Calls adapter methods + * + * @param string $method Method to call + * @param string|array $options Options for this method + */ + public function __call($method, $options) + { + $part = substr($method, 0, 3); + if ((($part != 'get') and ($part != 'set')) or !method_exists($this->_adapter, $method)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Unknown method '{$method}'"); + } + + return call_user_func_array(array($this->_adapter, $method), $options); + } + + /** + * Defined by Zend_Filter_Interface + * + * Encrypts the content $value with the defined settings + * + * @param string $value Content to encrypt + * @return string The encrypted content + */ + public function filter($value) + { + return $this->_adapter->encrypt($value); + } +} diff --git a/library/Zend/Filter/Encrypt/Interface.php b/library/Zend/Filter/Encrypt/Interface.php new file mode 100755 index 000000000..1510e7ff9 --- /dev/null +++ b/library/Zend/Filter/Encrypt/Interface.php @@ -0,0 +1,47 @@ + encryption key string + * 'algorithm' => algorithm to use + * 'algorithm_directory' => directory where to find the algorithm + * 'mode' => encryption mode to use + * 'modedirectory' => directory where to find the mode + * ) + */ + protected $_encryption = array( + 'key' => 'ZendFramework', + 'algorithm' => 'blowfish', + 'algorithm_directory' => '', + 'mode' => 'cbc', + 'mode_directory' => '', + 'vector' => null, + 'salt' => false + ); + + /** + * Internal compression + * + * @var array + */ + protected $_compression; + + protected static $_srandCalled = false; + + /** + * Class constructor + * + * @param string|array|Zend_Config $options Cryption Options + */ + public function __construct($options) + { + if (!extension_loaded('mcrypt')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs the mcrypt extension'); + } + + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_string($options)) { + $options = array('key' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Invalid options argument provided to filter'); + } + + if (array_key_exists('compression', $options)) { + $this->setCompression($options['compression']); + unset($options['compress']); + } + + $this->setEncryption($options); + } + + /** + * Returns the set encryption options + * + * @return array + */ + public function getEncryption() + { + return $this->_encryption; + } + + /** + * Sets new encryption options + * + * @param string|array $options Encryption options + * @return Zend_Filter_File_Encryption + */ + public function setEncryption($options) + { + if (is_string($options)) { + $options = array('key' => $options); + } + + if (!is_array($options)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Invalid options argument provided to filter'); + } + + $options = $options + $this->getEncryption(); + $algorithms = mcrypt_list_algorithms($options['algorithm_directory']); + if (!in_array($options['algorithm'], $algorithms)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The algorithm '{$options['algorithm']}' is not supported"); + } + + $modes = mcrypt_list_modes($options['mode_directory']); + if (!in_array($options['mode'], $modes)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The mode '{$options['mode']}' is not supported"); + } + + if (!mcrypt_module_self_test($options['algorithm'], $options['algorithm_directory'])) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('The given algorithm can not be used due an internal mcrypt problem'); + } + + if (!isset($options['vector'])) { + $options['vector'] = null; + } + + $this->_encryption = $options; + $this->setVector($options['vector']); + + return $this; + } + + /** + * Returns the set vector + * + * @return string + */ + public function getVector() + { + return $this->_encryption['vector']; + } + + /** + * Sets the initialization vector + * + * @param string $vector (Optional) Vector to set + * @return Zend_Filter_Encrypt_Mcrypt + */ + public function setVector($vector = null) + { + $cipher = $this->_openCipher(); + $size = mcrypt_enc_get_iv_size($cipher); + if (empty($vector)) { + $this->_srand(); + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && version_compare(PHP_VERSION, '5.3.0', '<')) { + $method = MCRYPT_RAND; + } else { + if (file_exists('/dev/urandom') || (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')) { + $method = MCRYPT_DEV_URANDOM; + } elseif (file_exists('/dev/random')) { + $method = MCRYPT_DEV_RANDOM; + } else { + $method = MCRYPT_RAND; + } + } + $vector = mcrypt_create_iv($size, $method); + } else if (strlen($vector) != $size) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('The given vector has a wrong size for the set algorithm'); + } + + $this->_encryption['vector'] = $vector; + $this->_closeCipher($cipher); + + return $this; + } + + /** + * Returns the compression + * + * @return array + */ + public function getCompression() + { + return $this->_compression; + } + + /** + * Sets a internal compression for values to encrypt + * + * @param string|array $compression + * @return Zend_Filter_Encrypt_Mcrypt + */ + public function setCompression($compression) + { + if (is_string($this->_compression)) { + $compression = array('adapter' => $compression); + } + + $this->_compression = $compression; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Encrypts $value with the defined settings + * + * @param string $value The content to encrypt + * @return string The encrypted content + */ + public function encrypt($value) + { + // compress prior to encryption + if (!empty($this->_compression)) { + require_once 'Zend/Filter/Compress.php'; + $compress = new Zend_Filter_Compress($this->_compression); + $value = $compress->filter($value); + } + + $cipher = $this->_openCipher(); + $this->_initCipher($cipher); + $encrypted = mcrypt_generic($cipher, $value); + mcrypt_generic_deinit($cipher); + $this->_closeCipher($cipher); + + return $encrypted; + } + + /** + * Defined by Zend_Filter_Interface + * + * Decrypts $value with the defined settings + * + * @param string $value Content to decrypt + * @return string The decrypted content + */ + public function decrypt($value) + { + $cipher = $this->_openCipher(); + $this->_initCipher($cipher); + $decrypted = mdecrypt_generic($cipher, $value); + mcrypt_generic_deinit($cipher); + $this->_closeCipher($cipher); + + // decompress after decryption + if (!empty($this->_compression)) { + require_once 'Zend/Filter/Decompress.php'; + $decompress = new Zend_Filter_Decompress($this->_compression); + $decrypted = $decompress->filter($decrypted); + } + + return $decrypted; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Mcrypt'; + } + + /** + * Open a cipher + * + * @throws Zend_Filter_Exception When the cipher can not be opened + * @return resource Returns the opened cipher + */ + protected function _openCipher() + { + $cipher = mcrypt_module_open( + $this->_encryption['algorithm'], + $this->_encryption['algorithm_directory'], + $this->_encryption['mode'], + $this->_encryption['mode_directory']); + + if ($cipher === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Mcrypt can not be opened with your settings'); + } + + return $cipher; + } + + /** + * Close a cipher + * + * @param resource $cipher Cipher to close + * @return Zend_Filter_Encrypt_Mcrypt + */ + protected function _closeCipher($cipher) + { + mcrypt_module_close($cipher); + + return $this; + } + + /** + * Initialises the cipher with the set key + * + * @param resource $cipher + * @throws + * @return resource + */ + protected function _initCipher($cipher) + { + $key = $this->_encryption['key']; + + $keysizes = mcrypt_enc_get_supported_key_sizes($cipher); + if (empty($keysizes) || ($this->_encryption['salt'] == true)) { + $this->_srand(); + $keysize = mcrypt_enc_get_key_size($cipher); + $key = substr(md5($key), 0, $keysize); + } else if (!in_array(strlen($key), $keysizes)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('The given key has a wrong size for the set algorithm'); + } + + $result = mcrypt_generic_init($cipher, $key, $this->_encryption['vector']); + if ($result < 0) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Mcrypt could not be initialize with the given setting'); + } + + return $this; + } + + /** + * _srand() interception + * + * @see ZF-8742 + */ + protected function _srand() + { + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + return; + } + if (!self::$_srandCalled) { + srand(Zend_Crypt_Math::randInteger(0, PHP_INT_MAX)); + self::$_srandCalled = true; + } + } +} diff --git a/library/Zend/Filter/Encrypt/Openssl.php b/library/Zend/Filter/Encrypt/Openssl.php new file mode 100755 index 000000000..7d1f70bd0 --- /dev/null +++ b/library/Zend/Filter/Encrypt/Openssl.php @@ -0,0 +1,492 @@ + public keys + * 'private' => private keys + * 'envelope' => resulting envelope keys + * ) + */ + protected $_keys = array( + 'public' => array(), + 'private' => array(), + 'envelope' => array() + ); + + /** + * Internal passphrase + * + * @var string + */ + protected $_passphrase; + + /** + * Internal compression + * + * @var array + */ + protected $_compression; + + /** + * Internal create package + * + * @var boolean + */ + protected $_package = false; + + /** + * Class constructor + * Available options + * 'public' => public key + * 'private' => private key + * 'envelope' => envelope key + * 'passphrase' => passphrase + * 'compression' => compress value with this compression adapter + * 'package' => pack envelope keys into encrypted string, simplifies decryption + * + * @param string|array $options Options for this adapter + */ + public function __construct($options = array()) + { + if (!extension_loaded('openssl')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('This filter needs the openssl extension'); + } + + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (!is_array($options)) { + $options = array('public' => $options); + } + + if (array_key_exists('passphrase', $options)) { + $this->setPassphrase($options['passphrase']); + unset($options['passphrase']); + } + + if (array_key_exists('compression', $options)) { + $this->setCompression($options['compression']); + unset($options['compress']); + } + + if (array_key_exists('package', $options)) { + $this->setPackage($options['package']); + unset($options['package']); + } + + $this->_setKeys($options); + } + + /** + * Sets the encryption keys + * + * @param string|array $keys Key with type association + * @return Zend_Filter_Encrypt_Openssl + */ + protected function _setKeys($keys) + { + if (!is_array($keys)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Invalid options argument provided to filter'); + } + + foreach ($keys as $type => $key) { + if (ctype_print($key) && is_file(realpath($key)) && is_readable($key)) { + $file = fopen($key, 'r'); + $cert = fread($file, 8192); + fclose($file); + } else { + $cert = $key; + $key = count($this->_keys[$type]); + } + + switch ($type) { + case 'public': + $test = openssl_pkey_get_public($cert); + if ($test === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Public key '{$cert}' not valid"); + } + + openssl_free_key($test); + $this->_keys['public'][$key] = $cert; + break; + case 'private': + $test = openssl_pkey_get_private($cert, $this->_passphrase); + if ($test === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Private key '{$cert}' not valid"); + } + + openssl_free_key($test); + $this->_keys['private'][$key] = $cert; + break; + case 'envelope': + $this->_keys['envelope'][$key] = $cert; + break; + default: + break; + } + } + + return $this; + } + + /** + * Returns all public keys + * + * @return array + */ + public function getPublicKey() + { + $key = $this->_keys['public']; + return $key; + } + + /** + * Sets public keys + * + * @param string|array $key Public keys + * @return Zend_Filter_Encrypt_Openssl + */ + public function setPublicKey($key) + { + if (is_array($key)) { + foreach($key as $type => $option) { + if ($type !== 'public') { + $key['public'] = $option; + unset($key[$type]); + } + } + } else { + $key = array('public' => $key); + } + + return $this->_setKeys($key); + } + + /** + * Returns all private keys + * + * @return array + */ + public function getPrivateKey() + { + $key = $this->_keys['private']; + return $key; + } + + /** + * Sets private keys + * + * @param string $key Private key + * @param string $passphrase + * @return Zend_Filter_Encrypt_Openssl + */ + public function setPrivateKey($key, $passphrase = null) + { + if (is_array($key)) { + foreach($key as $type => $option) { + if ($type !== 'private') { + $key['private'] = $option; + unset($key[$type]); + } + } + } else { + $key = array('private' => $key); + } + + if ($passphrase !== null) { + $this->setPassphrase($passphrase); + } + + return $this->_setKeys($key); + } + + /** + * Returns all envelope keys + * + * @return array + */ + public function getEnvelopeKey() + { + $key = $this->_keys['envelope']; + return $key; + } + + /** + * Sets envelope keys + * + * @param string|array $options Envelope keys + * @return Zend_Filter_Encrypt_Openssl + */ + public function setEnvelopeKey($key) + { + if (is_array($key)) { + foreach($key as $type => $option) { + if ($type !== 'envelope') { + $key['envelope'] = $option; + unset($key[$type]); + } + } + } else { + $key = array('envelope' => $key); + } + + return $this->_setKeys($key); + } + + /** + * Returns the passphrase + * + * @return string + */ + public function getPassphrase() + { + return $this->_passphrase; + } + + /** + * Sets a new passphrase + * + * @param string $passphrase + * @return Zend_Filter_Encrypt_Openssl + */ + public function setPassphrase($passphrase) + { + $this->_passphrase = $passphrase; + return $this; + } + + /** + * Returns the compression + * + * @return array + */ + public function getCompression() + { + return $this->_compression; + } + + /** + * Sets a internal compression for values to encrypt + * + * @param string|array $compression + * @return Zend_Filter_Encrypt_Openssl + */ + public function setCompression($compression) + { + if (is_string($this->_compression)) { + $compression = array('adapter' => $compression); + } + + $this->_compression = $compression; + return $this; + } + + /** + * Returns if header should be packaged + * + * @return boolean + */ + public function getPackage() + { + return $this->_package; + } + + /** + * Sets if the envelope keys should be included in the encrypted value + * + * @param boolean $package + * @return Zend_Filter_Encrypt_Openssl + */ + public function setPackage($package) + { + $this->_package = (boolean) $package; + return $this; + } + + /** + * Encrypts $value with the defined settings + * Note that you also need the "encrypted" keys to be able to decrypt + * + * @param string $value Content to encrypt + * @return string The encrypted content + * @throws Zend_Filter_Exception + */ + public function encrypt($value) + { + $encrypted = array(); + $encryptedkeys = array(); + + if (count($this->_keys['public']) == 0) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Openssl can not encrypt without public keys'); + } + + $keys = array(); + $fingerprints = array(); + $count = -1; + foreach($this->_keys['public'] as $key => $cert) { + $keys[$key] = openssl_pkey_get_public($cert); + if ($this->_package) { + $details = openssl_pkey_get_details($keys[$key]); + if ($details === false) { + $details = array('key' => 'ZendFramework'); + } + + ++$count; + $fingerprints[$count] = md5($details['key']); + } + } + + // compress prior to encryption + if (!empty($this->_compression)) { + require_once 'Zend/Filter/Compress.php'; + $compress = new Zend_Filter_Compress($this->_compression); + $value = $compress->filter($value); + } + + $crypt = openssl_seal($value, $encrypted, $encryptedkeys, $keys); + foreach ($keys as $key) { + openssl_free_key($key); + } + + if ($crypt === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Openssl was not able to encrypt your content with the given options'); + } + + $this->_keys['envelope'] = $encryptedkeys; + + // Pack data and envelope keys into single string + if ($this->_package) { + $header = pack('n', count($this->_keys['envelope'])); + foreach($this->_keys['envelope'] as $key => $envKey) { + $header .= pack('H32n', $fingerprints[$key], strlen($envKey)) . $envKey; + } + + $encrypted = $header . $encrypted; + } + + return $encrypted; + } + + /** + * Defined by Zend_Filter_Interface + * + * Decrypts $value with the defined settings + * + * @param string $value Content to decrypt + * @return string The decrypted content + * @throws Zend_Filter_Exception + */ + public function decrypt($value) + { + $decrypted = ""; + $envelope = current($this->getEnvelopeKey()); + + if (count($this->_keys['private']) !== 1) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Please give a private key for decryption with Openssl'); + } + + if (!$this->_package && empty($envelope)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Please give a envelope key for decryption with Openssl'); + } + + foreach($this->_keys['private'] as $key => $cert) { + $keys = openssl_pkey_get_private($cert, $this->getPassphrase()); + } + + if ($this->_package) { + $details = openssl_pkey_get_details($keys); + if ($details !== false) { + $fingerprint = md5($details['key']); + } else { + $fingerprint = md5("ZendFramework"); + } + + $count = unpack('ncount', $value); + $count = $count['count']; + $length = 2; + for($i = $count; $i > 0; --$i) { + $header = unpack('H32print/nsize', substr($value, $length, 18)); + $length += 18; + if ($header['print'] == $fingerprint) { + $envelope = substr($value, $length, $header['size']); + } + + $length += $header['size']; + } + + // remainder of string is the value to decrypt + $value = substr($value, $length); + } + + $crypt = openssl_open($value, $decrypted, $envelope, $keys); + openssl_free_key($keys); + + if ($crypt === false) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Openssl was not able to decrypt you content with the given options'); + } + + // decompress after decryption + if (!empty($this->_compression)) { + require_once 'Zend/Filter/Decompress.php'; + $decompress = new Zend_Filter_Decompress($this->_compression); + $decrypted = $decompress->filter($decrypted); + } + + return $decrypted; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return 'Openssl'; + } +} diff --git a/library/Zend/Filter/Exception.php b/library/Zend/Filter/Exception.php new file mode 100755 index 000000000..5763b2456 --- /dev/null +++ b/library/Zend/Filter/Exception.php @@ -0,0 +1,37 @@ +_filename; + } + + /** + * Sets the new filename where the content will be stored + * + * @param string $filename (Optional) New filename to set + * @return Zend_Filter_File_Encryt + */ + public function setFilename($filename = null) + { + $this->_filename = $filename; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Decrypts the file $value with the defined settings + * + * @param string $value Full path of file to change + * @return string The filename which has been set, or false when there were errors + */ + public function filter($value) + { + if (!file_exists($value)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '$value' not found"); + } + + if (!isset($this->_filename)) { + $this->_filename = $value; + } + + if (file_exists($this->_filename) and !is_writable($this->_filename)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '{$this->_filename}' is not writable"); + } + + $content = file_get_contents($value); + if (!$content) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while reading file '$value'"); + } + + $decrypted = parent::filter($content); + $result = file_put_contents($this->_filename, $decrypted); + + if (!$result) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while writing file '{$this->_filename}'"); + } + + return $this->_filename; + } +} diff --git a/library/Zend/Filter/File/Encrypt.php b/library/Zend/Filter/File/Encrypt.php new file mode 100755 index 000000000..23c71b4b0 --- /dev/null +++ b/library/Zend/Filter/File/Encrypt.php @@ -0,0 +1,106 @@ +_filename; + } + + /** + * Sets the new filename where the content will be stored + * + * @param string $filename (Optional) New filename to set + * @return Zend_Filter_File_Encryt + */ + public function setFilename($filename = null) + { + $this->_filename = $filename; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Encrypts the file $value with the defined settings + * + * @param string $value Full path of file to change + * @return string The filename which has been set, or false when there were errors + */ + public function filter($value) + { + if (!file_exists($value)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '$value' not found"); + } + + if (!isset($this->_filename)) { + $this->_filename = $value; + } + + if (file_exists($this->_filename) and !is_writable($this->_filename)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '{$this->_filename}' is not writable"); + } + + $content = file_get_contents($value); + if (!$content) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while reading file '$value'"); + } + + $encrypted = parent::filter($content); + $result = file_put_contents($this->_filename, $encrypted); + + if (!$result) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while writing file '{$this->_filename}'"); + } + + return $this->_filename; + } +} diff --git a/library/Zend/Filter/File/LowerCase.php b/library/Zend/Filter/File/LowerCase.php new file mode 100755 index 000000000..dd34321de --- /dev/null +++ b/library/Zend/Filter/File/LowerCase.php @@ -0,0 +1,84 @@ +setEncoding($options); + } + } + + /** + * Defined by Zend_Filter_Interface + * + * Does a lowercase on the content of the given file + * + * @param string $value Full path of file to change + * @return string The given $value + * @throws Zend_Filter_Exception + */ + public function filter($value) + { + if (!file_exists($value)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '$value' not found"); + } + + if (!is_writable($value)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '$value' is not writable"); + } + + $content = file_get_contents($value); + if (!$content) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while reading file '$value'"); + } + + $content = parent::filter($content); + $result = file_put_contents($value, $content); + + if (!$result) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while writing file '$value'"); + } + + return $value; + } +} diff --git a/library/Zend/Filter/File/Rename.php b/library/Zend/Filter/File/Rename.php new file mode 100755 index 000000000..b70acbe30 --- /dev/null +++ b/library/Zend/Filter/File/Rename.php @@ -0,0 +1,309 @@ + Source filename or directory which will be renamed + * 'target' => Target filename or directory, the new name of the sourcefile + * 'overwrite' => Shall existing files be overwritten ? + * + * @param string|array $options Target file or directory to be renamed + * @param string $target Source filename or directory (deprecated) + * @param bool $overwrite Should existing files be overwritten (deprecated) + * @return void + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_string($options)) { + $options = array('target' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Invalid options argument provided to filter'); + } + + if (1 < func_num_args()) { + $argv = func_get_args(); + array_shift($argv); + $source = array_shift($argv); + $overwrite = false; + if (!empty($argv)) { + $overwrite = array_shift($argv); + } + $options['source'] = $source; + $options['overwrite'] = $overwrite; + } + + $this->setFile($options); + } + + /** + * Returns the files to rename and their new name and location + * + * @return array + */ + public function getFile() + { + return $this->_files; + } + + /** + * Sets a new file or directory as target, deleting existing ones + * + * Array accepts the following keys: + * 'source' => Source filename or directory which will be renamed + * 'target' => Target filename or directory, the new name of the sourcefile + * 'overwrite' => Shall existing files be overwritten ? + * + * @param string|array $options Old file or directory to be rewritten + * @return Zend_Filter_File_Rename + */ + public function setFile($options) + { + $this->_files = array(); + $this->addFile($options); + + return $this; + } + + /** + * Adds a new file or directory as target to the existing ones + * + * Array accepts the following keys: + * 'source' => Source filename or directory which will be renamed + * 'target' => Target filename or directory, the new name of the sourcefile + * 'overwrite' => Shall existing files be overwritten ? + * + * @param string|array $options Old file or directory to be rewritten + * @return Zend_Filter_File_Rename + */ + public function addFile($options) + { + if (is_string($options)) { + $options = array('target' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception ('Invalid options to rename filter provided'); + } + + $this->_convertOptions($options); + + return $this; + } + + /** + * Returns only the new filename without moving it + * But existing files will be erased when the overwrite option is true + * + * @param string $value Full path of file to change + * @param boolean $source Return internal informations + * @return string The new filename which has been set + */ + public function getNewName($value, $source = false) + { + $file = $this->_getFileName($value); + + if (!is_array($file) || !array_key_exists('source', $file) || !array_key_exists('target', $file)) { + return $value; + } + + if ($file['source'] == $file['target']) { + return $value; + } + + if (!file_exists($file['source'])) { + return $value; + } + + if (($file['overwrite'] == true) && (file_exists($file['target']))) { + unlink($file['target']); + } + + if (file_exists($file['target'])) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. It already exists.", $value)); + } + + if ($source) { + return $file; + } + + return $file['target']; + } + + /** + * Defined by Zend_Filter_Interface + * + * Renames the file $value to the new name set before + * Returns the file $value, removing all but digit characters + * + * @param string $value Full path of file to change + * @throws Zend_Filter_Exception + * @return string The new filename which has been set, or false when there were errors + */ + public function filter($value) + { + $file = $this->getNewName($value, true); + if (is_string($file)) { + return $file; + } + + $result = rename($file['source'], $file['target']); + + if ($result === true) { + return $file['target']; + } + + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception(sprintf("File '%s' could not be renamed. An error occured while processing the file.", $value)); + } + + /** + * Internal method for creating the file array + * Supports single and nested arrays + * + * @param array $options + * @return array + */ + protected function _convertOptions($options) { + $files = array(); + foreach ($options as $key => $value) { + if (is_array($value)) { + $this->_convertOptions($value); + continue; + } + + switch ($key) { + case "source": + $files['source'] = (string) $value; + break; + + case 'target' : + $files['target'] = (string) $value; + break; + + case 'overwrite' : + $files['overwrite'] = (boolean) $value; + break; + + default: + break; + } + } + + if (empty($files)) { + return $this; + } + + if (empty($files['source'])) { + $files['source'] = '*'; + } + + if (empty($files['target'])) { + $files['target'] = '*'; + } + + if (empty($files['overwrite'])) { + $files['overwrite'] = false; + } + + $found = false; + foreach ($this->_files as $key => $value) { + if ($value['source'] == $files['source']) { + $this->_files[$key] = $files; + $found = true; + } + } + + if (!$found) { + $count = count($this->_files); + $this->_files[$count] = $files; + } + + return $this; + } + + /** + * Internal method to resolve the requested source + * and return all other related parameters + * + * @param string $file Filename to get the informations for + * @return array + */ + protected function _getFileName($file) + { + $rename = array(); + foreach ($this->_files as $value) { + if ($value['source'] == '*') { + if (!isset($rename['source'])) { + $rename = $value; + $rename['source'] = $file; + } + } + + if ($value['source'] == $file) { + $rename = $value; + } + } + + if (!isset($rename['source'])) { + return $file; + } + + if (!isset($rename['target']) or ($rename['target'] == '*')) { + $rename['target'] = $rename['source']; + } + + if (is_dir($rename['target'])) { + $name = basename($rename['source']); + $last = $rename['target'][strlen($rename['target']) - 1]; + if (($last != '/') and ($last != '\\')) { + $rename['target'] .= DIRECTORY_SEPARATOR; + } + + $rename['target'] .= $name; + } + + return $rename; + } +} diff --git a/library/Zend/Filter/File/UpperCase.php b/library/Zend/Filter/File/UpperCase.php new file mode 100755 index 000000000..e65453e0f --- /dev/null +++ b/library/Zend/Filter/File/UpperCase.php @@ -0,0 +1,84 @@ +setEncoding($options); + } + } + + /** + * Defined by Zend_Filter_Interface + * + * Does a lowercase on the content of the given file + * + * @param string $value Full path of file to change + * @return string The given $value + * @throws Zend_Filter_Exception + */ + public function filter($value) + { + if (!file_exists($value)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '$value' not found"); + } + + if (!is_writable($value)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("File '$value' is not writable"); + } + + $content = file_get_contents($value); + if (!$content) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while reading file '$value'"); + } + + $content = parent::filter($content); + $result = file_put_contents($value, $content); + + if (!$result) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Problem while writing file '$value'"); + } + + return $value; + } +} diff --git a/library/Zend/Filter/HtmlEntities.php b/library/Zend/Filter/HtmlEntities.php new file mode 100755 index 000000000..0c1dfecb9 --- /dev/null +++ b/library/Zend/Filter/HtmlEntities.php @@ -0,0 +1,216 @@ +toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['quotestyle'] = array_shift($options); + if (!empty($options)) { + $temp['charset'] = array_shift($options); + } + + $options = $temp; + } + + if (!isset($options['quotestyle'])) { + $options['quotestyle'] = ENT_COMPAT; + } + + if (!isset($options['encoding'])) { + $options['encoding'] = 'UTF-8'; + } + if (isset($options['charset'])) { + $options['encoding'] = $options['charset']; + } + + if (!isset($options['doublequote'])) { + $options['doublequote'] = true; + } + + $this->setQuoteStyle($options['quotestyle']); + $this->setEncoding($options['encoding']); + $this->setDoubleQuote($options['doublequote']); + } + + /** + * Returns the quoteStyle option + * + * @return integer + */ + public function getQuoteStyle() + { + return $this->_quoteStyle; + } + + /** + * Sets the quoteStyle option + * + * @param integer $quoteStyle + * @return Zend_Filter_HtmlEntities Provides a fluent interface + */ + public function setQuoteStyle($quoteStyle) + { + $this->_quoteStyle = $quoteStyle; + return $this; + } + + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set encoding + * + * @param string $value + * @return Zend_Filter_HtmlEntities + */ + public function setEncoding($value) + { + $this->_encoding = (string) $value; + return $this; + } + + /** + * Returns the charSet option + * + * Proxies to {@link getEncoding()} + * + * @return string + */ + public function getCharSet() + { + return $this->getEncoding(); + } + + /** + * Sets the charSet option + * + * Proxies to {@link setEncoding()} + * + * @param string $charSet + * @return Zend_Filter_HtmlEntities Provides a fluent interface + */ + public function setCharSet($charSet) + { + return $this->setEncoding($charSet); + } + + /** + * Returns the doubleQuote option + * + * @return boolean + */ + public function getDoubleQuote() + { + return $this->_doubleQuote; + } + + /** + * Sets the doubleQuote option + * + * @param boolean $doubleQuote + * @return Zend_Filter_HtmlEntities Provides a fluent interface + */ + public function setDoubleQuote($doubleQuote) + { + $this->_doubleQuote = (boolean) $doubleQuote; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns the string $value, converting characters to their corresponding HTML entity + * equivalents where they exist + * + * @param string $value + * @return string + */ + public function filter($value) + { + $filtered = htmlentities((string) $value, $this->getQuoteStyle(), $this->getEncoding(), $this->getDoubleQuote()); + if (strlen((string) $value) && !strlen($filtered)) { + if (!function_exists('iconv')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Encoding mismatch has resulted in htmlentities errors'); + } + $enc = $this->getEncoding(); + $value = iconv('', $enc . '//IGNORE', (string) $value); + $filtered = htmlentities($value, $this->getQuoteStyle(), $enc, $this->getDoubleQuote()); + if (!strlen($filtered)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Encoding mismatch has resulted in htmlentities errors'); + } + } + return $filtered; + } +} diff --git a/library/Zend/Filter/Inflector.php b/library/Zend/Filter/Inflector.php new file mode 100755 index 000000000..00eea7d64 --- /dev/null +++ b/library/Zend/Filter/Inflector.php @@ -0,0 +1,527 @@ +toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + + if (!empty($options)) { + $temp['target'] = array_shift($options); + } + + if (!empty($options)) { + $temp['rules'] = array_shift($options); + } + + if (!empty($options)) { + $temp['throwTargetExceptionsOn'] = array_shift($options); + } + + if (!empty($options)) { + $temp['targetReplacementIdentifier'] = array_shift($options); + } + + $options = $temp; + } + + $this->setOptions($options); + } + + /** + * Retreive PluginLoader + * + * @return Zend_Loader_PluginLoader_Interface + */ + public function getPluginLoader() + { + if (!$this->_pluginLoader instanceof Zend_Loader_PluginLoader_Interface) { + $this->_pluginLoader = new Zend_Loader_PluginLoader(array('Zend_Filter_' => 'Zend/Filter/'), __CLASS__); + } + + return $this->_pluginLoader; + } + + /** + * Set PluginLoader + * + * @param Zend_Loader_PluginLoader_Interface $pluginLoader + * @return Zend_Filter_Inflector + */ + public function setPluginLoader(Zend_Loader_PluginLoader_Interface $pluginLoader) + { + $this->_pluginLoader = $pluginLoader; + return $this; + } + + /** + * Use Zend_Config object to set object state + * + * @deprecated Use setOptions() instead + * @param Zend_Config $config + * @return Zend_Filter_Inflector + */ + public function setConfig(Zend_Config $config) + { + return $this->setOptions($config); + } + + /** + * Set options + * + * @param array $options + * @return Zend_Filter_Inflector + */ + public function setOptions($options) { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + // Set Präfix Path + if (array_key_exists('filterPrefixPath', $options)) { + if (!is_scalar($options['filterPrefixPath'])) { + foreach ($options['filterPrefixPath'] as $prefix => $path) { + $this->addFilterPrefixPath($prefix, $path); + } + } + } + + if (array_key_exists('throwTargetExceptionsOn', $options)) { + $this->setThrowTargetExceptionsOn($options['throwTargetExceptionsOn']); + } + + if (array_key_exists('targetReplacementIdentifier', $options)) { + $this->setTargetReplacementIdentifier($options['targetReplacementIdentifier']); + } + + if (array_key_exists('target', $options)) { + $this->setTarget($options['target']); + } + + if (array_key_exists('rules', $options)) { + $this->addRules($options['rules']); + } + + return $this; + } + + /** + * Convienence method to add prefix and path to PluginLoader + * + * @param string $prefix + * @param string $path + * @return Zend_Filter_Inflector + */ + public function addFilterPrefixPath($prefix, $path) + { + $this->getPluginLoader()->addPrefixPath($prefix, $path); + return $this; + } + + /** + * Set Whether or not the inflector should throw an exception when a replacement + * identifier is still found within an inflected target. + * + * @param bool $throwTargetExceptions + * @return Zend_Filter_Inflector + */ + public function setThrowTargetExceptionsOn($throwTargetExceptionsOn) + { + $this->_throwTargetExceptionsOn = ($throwTargetExceptionsOn == true) ? true : false; + return $this; + } + + /** + * Will exceptions be thrown? + * + * @return bool + */ + public function isThrowTargetExceptionsOn() + { + return $this->_throwTargetExceptionsOn; + } + + /** + * Set the Target Replacement Identifier, by default ':' + * + * @param string $targetReplacementIdentifier + * @return Zend_Filter_Inflector + */ + public function setTargetReplacementIdentifier($targetReplacementIdentifier) + { + if ($targetReplacementIdentifier) { + $this->_targetReplacementIdentifier = (string) $targetReplacementIdentifier; + } + + return $this; + } + + /** + * Get Target Replacement Identifier + * + * @return string + */ + public function getTargetReplacementIdentifier() + { + return $this->_targetReplacementIdentifier; + } + + /** + * Set a Target + * ex: 'scripts/:controller/:action.:suffix' + * + * @param string + * @return Zend_Filter_Inflector + */ + public function setTarget($target) + { + $this->_target = (string) $target; + return $this; + } + + /** + * Retrieve target + * + * @return string + */ + public function getTarget() + { + return $this->_target; + } + + /** + * Set Target Reference + * + * @param reference $target + * @return Zend_Filter_Inflector + */ + public function setTargetReference(&$target) + { + $this->_target =& $target; + return $this; + } + + /** + * SetRules() is the same as calling addRules() with the exception that it + * clears the rules before adding them. + * + * @param array $rules + * @return Zend_Filter_Inflector + */ + public function setRules(Array $rules) + { + $this->clearRules(); + $this->addRules($rules); + return $this; + } + + /** + * AddRules(): multi-call to setting filter rules. + * + * If prefixed with a ":" (colon), a filter rule will be added. If not + * prefixed, a static replacement will be added. + * + * ex: + * array( + * ':controller' => array('CamelCaseToUnderscore','StringToLower'), + * ':action' => array('CamelCaseToUnderscore','StringToLower'), + * 'suffix' => 'phtml' + * ); + * + * @param array + * @return Zend_Filter_Inflector + */ + public function addRules(Array $rules) + { + $keys = array_keys($rules); + foreach ($keys as $spec) { + if ($spec[0] == ':') { + $this->addFilterRule($spec, $rules[$spec]); + } else { + $this->setStaticRule($spec, $rules[$spec]); + } + } + + return $this; + } + + /** + * Get rules + * + * By default, returns all rules. If a $spec is provided, will return those + * rules if found, false otherwise. + * + * @param string $spec + * @return array|false + */ + public function getRules($spec = null) + { + if (null !== $spec) { + $spec = $this->_normalizeSpec($spec); + if (isset($this->_rules[$spec])) { + return $this->_rules[$spec]; + } + return false; + } + + return $this->_rules; + } + + /** + * getRule() returns a rule set by setFilterRule(), a numeric index must be provided + * + * @param string $spec + * @param int $index + * @return Zend_Filter_Interface|false + */ + public function getRule($spec, $index) + { + $spec = $this->_normalizeSpec($spec); + if (isset($this->_rules[$spec]) && is_array($this->_rules[$spec])) { + if (isset($this->_rules[$spec][$index])) { + return $this->_rules[$spec][$index]; + } + } + return false; + } + + /** + * ClearRules() clears the rules currently in the inflector + * + * @return Zend_Filter_Inflector + */ + public function clearRules() + { + $this->_rules = array(); + return $this; + } + + /** + * Set a filtering rule for a spec. $ruleSet can be a string, Filter object + * or an array of strings or filter objects. + * + * @param string $spec + * @param array|string|Zend_Filter_Interface $ruleSet + * @return Zend_Filter_Inflector + */ + public function setFilterRule($spec, $ruleSet) + { + $spec = $this->_normalizeSpec($spec); + $this->_rules[$spec] = array(); + return $this->addFilterRule($spec, $ruleSet); + } + + /** + * Add a filter rule for a spec + * + * @param mixed $spec + * @param mixed $ruleSet + * @return void + */ + public function addFilterRule($spec, $ruleSet) + { + $spec = $this->_normalizeSpec($spec); + if (!isset($this->_rules[$spec])) { + $this->_rules[$spec] = array(); + } + + if (!is_array($ruleSet)) { + $ruleSet = array($ruleSet); + } + + if (is_string($this->_rules[$spec])) { + $temp = $this->_rules[$spec]; + $this->_rules[$spec] = array(); + $this->_rules[$spec][] = $temp; + } + + foreach ($ruleSet as $rule) { + $this->_rules[$spec][] = $this->_getRule($rule); + } + + return $this; + } + + /** + * Set a static rule for a spec. This is a single string value + * + * @param string $name + * @param string $value + * @return Zend_Filter_Inflector + */ + public function setStaticRule($name, $value) + { + $name = $this->_normalizeSpec($name); + $this->_rules[$name] = (string) $value; + return $this; + } + + /** + * Set Static Rule Reference. + * + * This allows a consuming class to pass a property or variable + * in to be referenced when its time to build the output string from the + * target. + * + * @param string $name + * @param mixed $reference + * @return Zend_Filter_Inflector + */ + public function setStaticRuleReference($name, &$reference) + { + $name = $this->_normalizeSpec($name); + $this->_rules[$name] =& $reference; + return $this; + } + + /** + * Inflect + * + * @param string|array $source + * @return string + */ + public function filter($source) + { + // clean source + foreach ( (array) $source as $sourceName => $sourceValue) { + $source[ltrim($sourceName, ':')] = $sourceValue; + } + + $pregQuotedTargetReplacementIdentifier = preg_quote($this->_targetReplacementIdentifier, '#'); + $processedParts = array(); + + foreach ($this->_rules as $ruleName => $ruleValue) { + if (isset($source[$ruleName])) { + if (is_string($ruleValue)) { + // overriding the set rule + $processedParts['#'.$pregQuotedTargetReplacementIdentifier.$ruleName.'#'] = str_replace('\\', '\\\\', $source[$ruleName]); + } elseif (is_array($ruleValue)) { + $processedPart = $source[$ruleName]; + foreach ($ruleValue as $ruleFilter) { + $processedPart = $ruleFilter->filter($processedPart); + } + $processedParts['#'.$pregQuotedTargetReplacementIdentifier.$ruleName.'#'] = str_replace('\\', '\\\\', $processedPart); + } + } elseif (is_string($ruleValue)) { + $processedParts['#'.$pregQuotedTargetReplacementIdentifier.$ruleName.'#'] = str_replace('\\', '\\\\', $ruleValue); + } + } + + // all of the values of processedParts would have been str_replace('\\', '\\\\', ..)'d to disable preg_replace backreferences + $inflectedTarget = preg_replace(array_keys($processedParts), array_values($processedParts), $this->_target); + + if ($this->_throwTargetExceptionsOn && (preg_match('#(?='.$pregQuotedTargetReplacementIdentifier.'[A-Za-z]{1})#', $inflectedTarget) == true)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('A replacement identifier ' . $this->_targetReplacementIdentifier . ' was found inside the inflected target, perhaps a rule was not satisfied with a target source? Unsatisfied inflected target: ' . $inflectedTarget); + } + + return $inflectedTarget; + } + + /** + * Normalize spec string + * + * @param string $spec + * @return string + */ + protected function _normalizeSpec($spec) + { + return ltrim((string) $spec, ':&'); + } + + /** + * Resolve named filters and convert them to filter objects. + * + * @param string $rule + * @return Zend_Filter_Interface + */ + protected function _getRule($rule) + { + if ($rule instanceof Zend_Filter_Interface) { + return $rule; + } + + $rule = (string) $rule; + + $className = $this->getPluginLoader()->load($rule); + $ruleObject = new $className(); + if (!$ruleObject instanceof Zend_Filter_Interface) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('No class named ' . $rule . ' implementing Zend_Filter_Interface could be found'); + } + + return $ruleObject; + } +} diff --git a/library/Zend/Filter/Input.php b/library/Zend/Filter/Input.php new file mode 100755 index 000000000..c3229fa6f --- /dev/null +++ b/library/Zend/Filter/Input.php @@ -0,0 +1,1209 @@ + false, + self::BREAK_CHAIN => false, + self::ESCAPE_FILTER => 'HtmlEntities', + self::MISSING_MESSAGE => "Field '%field%' is required by rule '%rule%', but the field is missing", + self::NOT_EMPTY_MESSAGE => "You must give a non-empty value for field '%field%'", + self::PRESENCE => self::PRESENCE_OPTIONAL + ); + + /** + * @var boolean Set to False initially, this is set to True after the + * input data have been processed. Reset to False in setData() method. + */ + protected $_processed = false; + + /** + * Translation object + * @var Zend_Translate + */ + protected $_translator; + + /** + * Is translation disabled? + * @var Boolean + */ + protected $_translatorDisabled = false; + + /** + * @param array $filterRules + * @param array $validatorRules + * @param array $data OPTIONAL + * @param array $options OPTIONAL + */ + public function __construct($filterRules, $validatorRules, array $data = null, array $options = null) + { + if ($options) { + $this->setOptions($options); + } + + $this->_filterRules = (array) $filterRules; + $this->_validatorRules = (array) $validatorRules; + + if ($data) { + $this->setData($data); + } + } + + /** + * @param mixed $namespaces + * @return Zend_Filter_Input + * @deprecated since 1.5.0RC1 - use addFilterPrefixPath() or addValidatorPrefixPath instead. + */ + public function addNamespace($namespaces) + { + if (!is_array($namespaces)) { + $namespaces = array($namespaces); + } + + foreach ($namespaces as $namespace) { + $prefix = $namespace; + $path = str_replace('_', DIRECTORY_SEPARATOR, $prefix); + $this->addFilterPrefixPath($prefix, $path); + $this->addValidatorPrefixPath($prefix, $path); + } + + return $this; + } + + /** + * Add prefix path for all elements + * + * @param string $prefix + * @param string $path + * @return Zend_Filter_Input + */ + public function addFilterPrefixPath($prefix, $path) + { + $this->getPluginLoader(self::FILTER)->addPrefixPath($prefix, $path); + + return $this; + } + + /** + * Add prefix path for all elements + * + * @param string $prefix + * @param string $path + * @return Zend_Filter_Input + */ + public function addValidatorPrefixPath($prefix, $path) + { + $this->getPluginLoader(self::VALIDATE)->addPrefixPath($prefix, $path); + + return $this; + } + + /** + * Set plugin loaders for use with decorators and elements + * + * @param Zend_Loader_PluginLoader_Interface $loader + * @param string $type 'filter' or 'validate' + * @return Zend_Filter_Input + * @throws Zend_Filter_Exception on invalid type + */ + public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader, $type) + { + $type = strtolower($type); + switch ($type) { + case self::FILTER: + case self::VALIDATE: + $this->_loaders[$type] = $loader; + return $this; + default: + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception(sprintf('Invalid type "%s" provided to setPluginLoader()', $type)); + } + + return $this; + } + + /** + * Retrieve plugin loader for given type + * + * $type may be one of: + * - filter + * - validator + * + * If a plugin loader does not exist for the given type, defaults are + * created. + * + * @param string $type 'filter' or 'validate' + * @return Zend_Loader_PluginLoader_Interface + * @throws Zend_Filter_Exception on invalid type + */ + public function getPluginLoader($type) + { + $type = strtolower($type); + if (!isset($this->_loaders[$type])) { + switch ($type) { + case self::FILTER: + $prefixSegment = 'Zend_Filter_'; + $pathSegment = 'Zend/Filter/'; + break; + case self::VALIDATE: + $prefixSegment = 'Zend_Validate_'; + $pathSegment = 'Zend/Validate/'; + break; + default: + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception(sprintf('Invalid type "%s" provided to getPluginLoader()', $type)); + } + + require_once 'Zend/Loader/PluginLoader.php'; + $this->_loaders[$type] = new Zend_Loader_PluginLoader( + array($prefixSegment => $pathSegment) + ); + } + + return $this->_loaders[$type]; + } + + /** + * @return array + */ + public function getMessages() + { + $this->_process(); + return array_merge($this->_invalidMessages, $this->_missingFields); + } + + /** + * @return array + */ + public function getErrors() + { + $this->_process(); + return $this->_invalidErrors; + } + + /** + * @return array + */ + public function getInvalid() + { + $this->_process(); + return $this->_invalidMessages; + } + + /** + * @return array + */ + public function getMissing() + { + $this->_process(); + return $this->_missingFields; + } + + /** + * @return array + */ + public function getUnknown() + { + $this->_process(); + return $this->_unknownFields; + } + + /** + * @param string $fieldName OPTIONAL + * @return mixed + */ + public function getEscaped($fieldName = null) + { + $this->_process(); + $this->_getDefaultEscapeFilter(); + + if ($fieldName === null) { + return $this->_escapeRecursive($this->_validFields); + } + if (array_key_exists($fieldName, $this->_validFields)) { + return $this->_escapeRecursive($this->_validFields[$fieldName]); + } + return null; + } + + /** + * @param mixed $value + * @return mixed + */ + protected function _escapeRecursive($data) + { + if($data === null) { + return $data; + } + + if (!is_array($data)) { + return $this->_getDefaultEscapeFilter()->filter($data); + } + foreach ($data as &$element) { + $element = $this->_escapeRecursive($element); + } + return $data; + } + + /** + * @param string $fieldName OPTIONAL + * @return mixed + */ + public function getUnescaped($fieldName = null) + { + $this->_process(); + if ($fieldName === null) { + return $this->_validFields; + } + if (array_key_exists($fieldName, $this->_validFields)) { + return $this->_validFields[$fieldName]; + } + return null; + } + + /** + * @param string $fieldName + * @return mixed + */ + public function __get($fieldName) + { + return $this->getEscaped($fieldName); + } + + /** + * @return boolean + */ + public function hasInvalid() + { + $this->_process(); + return !(empty($this->_invalidMessages)); + } + + /** + * @return boolean + */ + public function hasMissing() + { + $this->_process(); + return !(empty($this->_missingFields)); + } + + /** + * @return boolean + */ + public function hasUnknown() + { + $this->_process(); + return !(empty($this->_unknownFields)); + } + + /** + * @return boolean + */ + public function hasValid() + { + $this->_process(); + return !(empty($this->_validFields)); + } + + /** + * @param string $fieldName + * @return boolean + */ + public function isValid($fieldName = null) + { + $this->_process(); + if ($fieldName === null) { + return !($this->hasMissing() || $this->hasInvalid()); + } + return array_key_exists($fieldName, $this->_validFields); + } + + /** + * @param string $fieldName + * @return boolean + */ + public function __isset($fieldName) + { + $this->_process(); + return isset($this->_validFields[$fieldName]); + } + + /** + * @return Zend_Filter_Input + * @throws Zend_Filter_Exception + */ + public function process() + { + $this->_process(); + if ($this->hasInvalid()) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Input has invalid fields"); + } + if ($this->hasMissing()) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Input has missing fields"); + } + + return $this; + } + + /** + * @param array $data + * @return Zend_Filter_Input + */ + public function setData(array $data) + { + $this->_data = $data; + + /** + * Reset to initial state + */ + $this->_validFields = array(); + $this->_invalidMessages = array(); + $this->_invalidErrors = array(); + $this->_missingFields = array(); + $this->_unknownFields = array(); + + $this->_processed = false; + + return $this; + } + + /** + * @param mixed $escapeFilter + * @return Zend_Filter_Interface + */ + public function setDefaultEscapeFilter($escapeFilter) + { + if (is_string($escapeFilter) || is_array($escapeFilter)) { + $escapeFilter = $this->_getFilter($escapeFilter); + } + if (!$escapeFilter instanceof Zend_Filter_Interface) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Escape filter specified does not implement Zend_Filter_Interface'); + } + $this->_defaultEscapeFilter = $escapeFilter; + return $escapeFilter; + } + + /** + * @param array $options + * @return Zend_Filter_Input + * @throws Zend_Filter_Exception if an unknown option is given + */ + public function setOptions(array $options) + { + foreach ($options as $option => $value) { + switch ($option) { + case self::ESCAPE_FILTER: + $this->setDefaultEscapeFilter($value); + break; + case self::INPUT_NAMESPACE: + $this->addNamespace($value); + break; + case self::VALIDATOR_NAMESPACE: + if(is_string($value)) { + $value = array($value); + } + + foreach($value AS $prefix) { + $this->addValidatorPrefixPath( + $prefix, + str_replace('_', DIRECTORY_SEPARATOR, $prefix) + ); + } + break; + case self::FILTER_NAMESPACE: + if(is_string($value)) { + $value = array($value); + } + + foreach($value AS $prefix) { + $this->addFilterPrefixPath( + $prefix, + str_replace('_', DIRECTORY_SEPARATOR, $prefix) + ); + } + break; + case self::ALLOW_EMPTY: + case self::BREAK_CHAIN: + case self::MISSING_MESSAGE: + case self::NOT_EMPTY_MESSAGE: + case self::PRESENCE: + $this->_defaults[$option] = $value; + break; + default: + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Unknown option '$option'"); + break; + } + } + + return $this; + } + + /** + * Set translation object + * + * @param Zend_Translate|Zend_Translate_Adapter|null $translator + * @return Zend_Filter_Input + */ + public function setTranslator($translator = null) + { + if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) { + $this->_translator = $translator; + } elseif ($translator instanceof Zend_Translate) { + $this->_translator = $translator->getAdapter(); + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid translator specified'); + } + + return $this; + } + + /** + * Return translation object + * + * @return Zend_Translate_Adapter|null + */ + public function getTranslator() + { + if ($this->translatorIsDisabled()) { + return null; + } + + if ($this->_translator === null) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Translate')) { + $translator = Zend_Registry::get('Zend_Translate'); + if ($translator instanceof Zend_Translate_Adapter) { + return $translator; + } elseif ($translator instanceof Zend_Translate) { + return $translator->getAdapter(); + } + } + } + + return $this->_translator; + } + + /** + * Indicate whether or not translation should be disabled + * + * @param bool $flag + * @return Zend_Filter_Input + */ + public function setDisableTranslator($flag) + { + $this->_translatorDisabled = (bool) $flag; + return $this; + } + + /** + * Is translation disabled? + * + * @return bool + */ + public function translatorIsDisabled() + { + return $this->_translatorDisabled; + } + + /* + * Protected methods + */ + + /** + * @return void + */ + protected function _filter() + { + foreach ($this->_filterRules as $ruleName => &$filterRule) { + /** + * Make sure we have an array representing this filter chain. + * Don't typecast to (array) because it might be a Zend_Filter object + */ + if (!is_array($filterRule)) { + $filterRule = array($filterRule); + } + + /** + * Filters are indexed by integer, metacommands are indexed by string. + * Pick out the filters. + */ + $filterList = array(); + foreach ($filterRule as $key => $value) { + if (is_int($key)) { + $filterList[] = $value; + } + } + + /** + * Use defaults for filter metacommands. + */ + $filterRule[self::RULE] = $ruleName; + if (!isset($filterRule[self::FIELDS])) { + $filterRule[self::FIELDS] = $ruleName; + } + + /** + * Load all the filter classes and add them to the chain. + */ + if (!isset($filterRule[self::FILTER_CHAIN])) { + $filterRule[self::FILTER_CHAIN] = new Zend_Filter(); + foreach ($filterList as $filter) { + if (is_string($filter) || is_array($filter)) { + $filter = $this->_getFilter($filter); + } + $filterRule[self::FILTER_CHAIN]->addFilter($filter); + } + } + + /** + * If the ruleName is the special wildcard rule, + * then apply the filter chain to all input data. + * Else just process the field named by the rule. + */ + if ($ruleName == self::RULE_WILDCARD) { + foreach (array_keys($this->_data) as $field) { + $this->_filterRule(array_merge($filterRule, array(self::FIELDS => $field))); + } + } else { + $this->_filterRule($filterRule); + } + } + } + + /** + * @param array $filterRule + * @return void + */ + protected function _filterRule(array $filterRule) + { + $field = $filterRule[self::FIELDS]; + if (!array_key_exists($field, $this->_data)) { + return; + } + if (is_array($this->_data[$field])) { + foreach ($this->_data[$field] as $key => $value) { + $this->_data[$field][$key] = $filterRule[self::FILTER_CHAIN]->filter($value); + } + } else { + $this->_data[$field] = + $filterRule[self::FILTER_CHAIN]->filter($this->_data[$field]); + } + } + + /** + * @return Zend_Filter_Interface + */ + protected function _getDefaultEscapeFilter() + { + if ($this->_defaultEscapeFilter !== null) { + return $this->_defaultEscapeFilter; + } + return $this->setDefaultEscapeFilter($this->_defaults[self::ESCAPE_FILTER]); + } + + /** + * @param string $rule + * @param string $field + * @return string + */ + protected function _getMissingMessage($rule, $field) + { + $message = $this->_defaults[self::MISSING_MESSAGE]; + + if (null !== ($translator = $this->getTranslator())) { + if ($translator->isTranslated(self::MISSING_MESSAGE)) { + $message = $translator->translate(self::MISSING_MESSAGE); + } else { + $message = $translator->translate($message); + } + } + + $message = str_replace('%rule%', $rule, $message); + $message = str_replace('%field%', $field, $message); + return $message; + } + + /** + * @return string + */ + protected function _getNotEmptyMessage($rule, $field) + { + $message = $this->_defaults[self::NOT_EMPTY_MESSAGE]; + + if (null !== ($translator = $this->getTranslator())) { + if ($translator->isTranslated(self::NOT_EMPTY_MESSAGE)) { + $message = $translator->translate(self::NOT_EMPTY_MESSAGE); + } else { + $message = $translator->translate($message); + } + } + + $message = str_replace('%rule%', $rule, $message); + $message = str_replace('%field%', $field, $message); + return $message; + } + + /** + * @return void + */ + protected function _process() + { + if ($this->_processed === false) { + $this->_filter(); + $this->_validate(); + $this->_processed = true; + } + } + + /** + * @return void + */ + protected function _validate() + { + /** + * Special case: if there are no validators, treat all fields as valid. + */ + if (!$this->_validatorRules) { + $this->_validFields = $this->_data; + $this->_data = array(); + return; + } + + // remember the default not empty message in case we want to temporarily change it + $preserveDefaultNotEmptyMessage = $this->_defaults[self::NOT_EMPTY_MESSAGE]; + + foreach ($this->_validatorRules as $ruleName => &$validatorRule) { + /** + * Make sure we have an array representing this validator chain. + * Don't typecast to (array) because it might be a Zend_Validate object + */ + if (!is_array($validatorRule)) { + $validatorRule = array($validatorRule); + } + + /** + * Validators are indexed by integer, metacommands are indexed by string. + * Pick out the validators. + */ + $validatorList = array(); + foreach ($validatorRule as $key => $value) { + if (is_int($key)) { + $validatorList[$key] = $value; + } + } + + /** + * Use defaults for validation metacommands. + */ + $validatorRule[self::RULE] = $ruleName; + if (!isset($validatorRule[self::FIELDS])) { + $validatorRule[self::FIELDS] = $ruleName; + } + if (!isset($validatorRule[self::BREAK_CHAIN])) { + $validatorRule[self::BREAK_CHAIN] = $this->_defaults[self::BREAK_CHAIN]; + } + if (!isset($validatorRule[self::PRESENCE])) { + $validatorRule[self::PRESENCE] = $this->_defaults[self::PRESENCE]; + } + if (!isset($validatorRule[self::ALLOW_EMPTY])) { + $foundNotEmptyValidator = false; + + foreach ($validatorRule as $rule) { + if ($rule === 'NotEmpty') { + $foundNotEmptyValidator = true; + // field may not be empty, we are ready + break 1; + } + + if (is_array($rule)) { + $keys = array_keys($rule); + $classKey = array_shift($keys); + if (isset($rule[$classKey])) { + $ruleClass = $rule[$classKey]; + if ($ruleClass === 'NotEmpty') { + $foundNotEmptyValidator = true; + // field may not be empty, we are ready + break 1; + } + } + } + + // we must check if it is an object before using instanceof + if (!is_object($rule)) { + // it cannot be a NotEmpty validator, skip this one + continue; + } + + if($rule instanceof Zend_Validate_NotEmpty) { + $foundNotEmptyValidator = true; + // field may not be empty, we are ready + break 1; + } + } + + if (!$foundNotEmptyValidator) { + $validatorRule[self::ALLOW_EMPTY] = $this->_defaults[self::ALLOW_EMPTY]; + } else { + $validatorRule[self::ALLOW_EMPTY] = false; + } + } + + if (!isset($validatorRule[self::MESSAGES])) { + $validatorRule[self::MESSAGES] = array(); + } else if (!is_array($validatorRule[self::MESSAGES])) { + $validatorRule[self::MESSAGES] = array($validatorRule[self::MESSAGES]); + } else if (array_intersect_key($validatorList, $validatorRule[self::MESSAGES])) { + // this seems pointless... it just re-adds what it already has... + // I can disable all this and not a single unit test fails... + // There are now corresponding numeric keys in the validation rule messages array + // Treat it as a named messages list for all rule validators + $unifiedMessages = $validatorRule[self::MESSAGES]; + $validatorRule[self::MESSAGES] = array(); + + foreach ($validatorList as $key => $validator) { + if (array_key_exists($key, $unifiedMessages)) { + $validatorRule[self::MESSAGES][$key] = $unifiedMessages[$key]; + } + } + } + + /** + * Load all the validator classes and add them to the chain. + */ + if (!isset($validatorRule[self::VALIDATOR_CHAIN])) { + $validatorRule[self::VALIDATOR_CHAIN] = new Zend_Validate(); + + foreach ($validatorList as $key => $validator) { + if (is_string($validator) || is_array($validator)) { + $validator = $this->_getValidator($validator); + } + + if (isset($validatorRule[self::MESSAGES][$key])) { + $value = $validatorRule[self::MESSAGES][$key]; + if (is_array($value)) { + $validator->setMessages($value); + } else { + $validator->setMessage($value); + } + + if ($validator instanceof Zend_Validate_NotEmpty) { + /** we are changing the defaults here, this is alright if all subsequent validators are also a not empty + * validator, but it goes wrong if one of them is not AND is required!!! + * that is why we restore the default value at the end of this loop + */ + if (is_array($value)) { + $temp = $value; // keep the original value + $this->_defaults[self::NOT_EMPTY_MESSAGE] = array_pop($temp); + unset($temp); + } else { + $this->_defaults[self::NOT_EMPTY_MESSAGE] = $value; + } + } + } + + $validatorRule[self::VALIDATOR_CHAIN]->addValidator($validator, $validatorRule[self::BREAK_CHAIN]); + } + $validatorRule[self::VALIDATOR_CHAIN_COUNT] = count($validatorList); + } + + /** + * If the ruleName is the special wildcard rule, + * then apply the validator chain to all input data. + * Else just process the field named by the rule. + */ + if ($ruleName == self::RULE_WILDCARD) { + foreach (array_keys($this->_data) as $field) { + $this->_validateRule(array_merge($validatorRule, array(self::FIELDS => $field))); + } + } else { + $this->_validateRule($validatorRule); + } + + // reset the default not empty message + $this->_defaults[self::NOT_EMPTY_MESSAGE] = $preserveDefaultNotEmptyMessage; + } + + + + /** + * Unset fields in $_data that have been added to other arrays. + * We have to wait until all rules have been processed because + * a given field may be referenced by multiple rules. + */ + foreach (array_merge(array_keys($this->_missingFields), array_keys($this->_invalidMessages)) as $rule) { + foreach ((array) $this->_validatorRules[$rule][self::FIELDS] as $field) { + unset($this->_data[$field]); + } + } + foreach ($this->_validFields as $field => $value) { + unset($this->_data[$field]); + } + + /** + * Anything left over in $_data is an unknown field. + */ + $this->_unknownFields = $this->_data; + } + + /** + * @param array $validatorRule + * @return void + */ + protected function _validateRule(array $validatorRule) + { + /** + * Get one or more data values from input, and check for missing fields. + * Apply defaults if fields are missing. + */ + $data = array(); + foreach ((array) $validatorRule[self::FIELDS] as $key => $field) { + if (array_key_exists($field, $this->_data)) { + $data[$field] = $this->_data[$field]; + } else if (isset($validatorRule[self::DEFAULT_VALUE])) { + /** @todo according to this code default value can't be an array. It has to be reviewed */ + if (!is_array($validatorRule[self::DEFAULT_VALUE])) { + // Default value is a scalar + $data[$field] = $validatorRule[self::DEFAULT_VALUE]; + } else { + // Default value is an array. Search for corresponding key + if (isset($validatorRule[self::DEFAULT_VALUE][$key])) { + $data[$field] = $validatorRule[self::DEFAULT_VALUE][$key]; + } else if ($validatorRule[self::PRESENCE] == self::PRESENCE_REQUIRED) { + // Default value array is provided, but it doesn't have an entry for current field + // and presence is required + $this->_missingFields[$validatorRule[self::RULE]][] = + $this->_getMissingMessage($validatorRule[self::RULE], $field); + } + } + } else if ($validatorRule[self::PRESENCE] == self::PRESENCE_REQUIRED) { + $this->_missingFields[$validatorRule[self::RULE]][] = + $this->_getMissingMessage($validatorRule[self::RULE], $field); + } + } + + /** + * If any required fields are missing, break the loop. + */ + if (isset($this->_missingFields[$validatorRule[self::RULE]]) && count($this->_missingFields[$validatorRule[self::RULE]]) > 0) { + return; + } + + /** + * Evaluate the inputs against the validator chain. + */ + if (count((array) $validatorRule[self::FIELDS]) > 1) { + if (!$validatorRule[self::ALLOW_EMPTY]) { + $emptyFieldsFound = false; + $errorsList = array(); + $messages = array(); + + foreach ($data as $fieldKey => $field) { + // if there is no Zend_Validate_NotEmpty instance in the rules, we will use the default + if (!($notEmptyValidator = $this->_getNotEmptyValidatorInstance($validatorRule))) { + $notEmptyValidator = $this->_getValidator('NotEmpty'); + $notEmptyValidator->setMessage($this->_getNotEmptyMessage($validatorRule[self::RULE], $fieldKey)); + } + + if (!$notEmptyValidator->isValid($field)) { + foreach ($notEmptyValidator->getMessages() as $messageKey => $message) { + if (!isset($messages[$messageKey])) { + $messages[$messageKey] = $message; + } else { + $messages[] = $message; + } + } + $errorsList[] = $notEmptyValidator->getErrors(); + $emptyFieldsFound = true; + } + } + + if ($emptyFieldsFound) { + $this->_invalidMessages[$validatorRule[self::RULE]] = $messages; + $this->_invalidErrors[$validatorRule[self::RULE]] = array_unique(call_user_func_array('array_merge', $errorsList)); + return; + } + } + + if (!$validatorRule[self::VALIDATOR_CHAIN]->isValid($data)) { + $this->_invalidMessages[$validatorRule[self::RULE]] = $validatorRule[self::VALIDATOR_CHAIN]->getMessages(); + $this->_invalidErrors[$validatorRule[self::RULE]] = $validatorRule[self::VALIDATOR_CHAIN]->getErrors(); + return; + } + } else if (count($data) > 0) { + // $data is actually a one element array + $fieldNames = array_keys($data); + $fieldName = reset($fieldNames); + $field = reset($data); + + $failed = false; + if (!is_array($field)) { + $field = array($field); + } + + // if there is no Zend_Validate_NotEmpty instance in the rules, we will use the default + if (!($notEmptyValidator = $this->_getNotEmptyValidatorInstance($validatorRule))) { + $notEmptyValidator = $this->_getValidator('NotEmpty'); + $notEmptyValidator->setMessage($this->_getNotEmptyMessage($validatorRule[self::RULE], $fieldName)); + } + + if ($validatorRule[self::ALLOW_EMPTY]) { + $validatorChain = $validatorRule[self::VALIDATOR_CHAIN]; + } else { + $validatorChain = new Zend_Validate(); + $validatorChain->addValidator($notEmptyValidator, true /* Always break on failure */); + $validatorChain->addValidator($validatorRule[self::VALIDATOR_CHAIN]); + } + + foreach ($field as $key => $value) { + if ($validatorRule[self::ALLOW_EMPTY] && !$notEmptyValidator->isValid($value)) { + // Field is empty AND it's allowed. Do nothing. + continue; + } + + if (!$validatorChain->isValid($value)) { + if (isset($this->_invalidMessages[$validatorRule[self::RULE]])) { + $collectedMessages = $this->_invalidMessages[$validatorRule[self::RULE]]; + } else { + $collectedMessages = array(); + } + + foreach ($validatorChain->getMessages() as $messageKey => $message) { + if (!isset($collectedMessages[$messageKey])) { + $collectedMessages[$messageKey] = $message; + } else { + $collectedMessages[] = $message; + } + } + + $this->_invalidMessages[$validatorRule[self::RULE]] = $collectedMessages; + if (isset($this->_invalidErrors[$validatorRule[self::RULE]])) { + $this->_invalidErrors[$validatorRule[self::RULE]] = array_merge($this->_invalidErrors[$validatorRule[self::RULE]], + $validatorChain->getErrors()); + } else { + $this->_invalidErrors[$validatorRule[self::RULE]] = $validatorChain->getErrors(); + } + unset($this->_validFields[$fieldName]); + $failed = true; + if ($validatorRule[self::BREAK_CHAIN]) { + return; + } + } + } + if ($failed) { + return; + } + } + + /** + * If we got this far, the inputs for this rule pass validation. + */ + foreach ((array) $validatorRule[self::FIELDS] as $field) { + if (array_key_exists($field, $data)) { + $this->_validFields[$field] = $data[$field]; + } + } + } + + /** + * Check a validatorRule for the presence of a NotEmpty validator instance. + * The purpose is to preserve things like a custom message, that may have been + * set on the validator outside Zend_Filter_Input. + * @param array $validatorRule + * @return mixed false if none is found, Zend_Validate_NotEmpty instance if found + */ + protected function _getNotEmptyValidatorInstance($validatorRule) { + foreach ($validatorRule as $rule => $value) { + if (is_object($value) and $value instanceof Zend_Validate_NotEmpty) { + return $value; + } + } + + return false; + } + + /** + * @param mixed $classBaseName + * @return Zend_Filter_Interface + */ + protected function _getFilter($classBaseName) + { + return $this->_getFilterOrValidator(self::FILTER, $classBaseName); + } + + /** + * @param mixed $classBaseName + * @return Zend_Validate_Interface + */ + protected function _getValidator($classBaseName) + { + return $this->_getFilterOrValidator(self::VALIDATE, $classBaseName); + } + + /** + * @param string $type + * @param mixed $classBaseName + * @return Zend_Filter_Interface|Zend_Validate_Interface + * @throws Zend_Filter_Exception + */ + protected function _getFilterOrValidator($type, $classBaseName) + { + $args = array(); + + if (is_array($classBaseName)) { + $args = $classBaseName; + $classBaseName = array_shift($args); + } + + $interfaceName = 'Zend_' . ucfirst($type) . '_Interface'; + $className = $this->getPluginLoader($type)->load(ucfirst($classBaseName)); + + $class = new ReflectionClass($className); + + if (!$class->implementsInterface($interfaceName)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("Class '$className' based on basename '$classBaseName' must implement the '$interfaceName' interface"); + } + + if ($class->hasMethod('__construct')) { + $object = $class->newInstanceArgs($args); + } else { + $object = $class->newInstance(); + } + + return $object; + } + +} diff --git a/library/Zend/Filter/Int.php b/library/Zend/Filter/Int.php new file mode 100755 index 000000000..ee2070255 --- /dev/null +++ b/library/Zend/Filter/Int.php @@ -0,0 +1,50 @@ + null, + 'date_format' => null, + 'precision' => null + ); + + /** + * Class constructor + * + * @param string|Zend_Locale $locale (Optional) Locale to set + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (null !== $options) { + $this->setOptions($options); + } + } + + /** + * Returns the set options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets options to use + * + * @param array $options (Optional) Options to use + * @return Zend_Filter_LocalizedToNormalized + */ + public function setOptions(array $options = null) + { + $this->_options = $options + $this->_options; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Normalizes the given input + * + * @param string $value Value to normalized + * @return string|array The normalized value + */ + public function filter($value) + { + if (Zend_Locale_Format::isNumber($value, $this->_options)) { + return Zend_Locale_Format::getNumber($value, $this->_options); + } else if (($this->_options['date_format'] === null) && (strpos($value, ':') !== false)) { + // Special case, no date format specified, detect time input + return Zend_Locale_Format::getTime($value, $this->_options); + } else if (Zend_Locale_Format::checkDateFormat($value, $this->_options)) { + // Detect date or time input + return Zend_Locale_Format::getDate($value, $this->_options); + } + + return $value; + } +} diff --git a/library/Zend/Filter/NormalizedToLocalized.php b/library/Zend/Filter/NormalizedToLocalized.php new file mode 100755 index 000000000..60dbb9e06 --- /dev/null +++ b/library/Zend/Filter/NormalizedToLocalized.php @@ -0,0 +1,111 @@ + null, + 'date_format' => null, + 'precision' => null + ); + + /** + * Class constructor + * + * @param string|Zend_Locale $locale (Optional) Locale to set + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (null !== $options) { + $this->setOptions($options); + } + } + + /** + * Returns the set options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets options to use + * + * @param array $options (Optional) Options to use + * @return Zend_Filter_LocalizedToNormalized + */ + public function setOptions(array $options = null) + { + $this->_options = $options + $this->_options; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Normalizes the given input + * + * @param string $value Value to normalized + * @return string|array The normalized value + */ + public function filter($value) + { + if (is_array($value)) { + require_once 'Zend/Date.php'; + $date = new Zend_Date($value, $this->_options['locale']); + return $date->toString($this->_options['date_format']); + } else if ($this->_options['precision'] === 0) { + return Zend_Locale_Format::toInteger($value, $this->_options); + } else if ($this->_options['precision'] === null) { + return Zend_Locale_Format::toFloat($value, $this->_options); + } + + return Zend_Locale_Format::toNumber($value, $this->_options); + } +} diff --git a/library/Zend/Filter/Null.php b/library/Zend/Filter/Null.php new file mode 100755 index 000000000..c79880041 --- /dev/null +++ b/library/Zend/Filter/Null.php @@ -0,0 +1,183 @@ + 'boolean', + self::INTEGER => 'integer', + self::EMPTY_ARRAY => 'array', + self::STRING => 'string', + self::ZERO => 'zero', + self::ALL => 'all' + ); + + /** + * Internal type to detect + * + * @var integer + */ + protected $_type = self::ALL; + + /** + * Constructor + * + * @param string|array|Zend_Config $options OPTIONAL + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + if (!empty($options)) { + $temp = array_shift($options); + } + $options = $temp; + } else if (is_array($options) && array_key_exists('type', $options)) { + $options = $options['type']; + } + + if (!empty($options)) { + $this->setType($options); + } + } + + /** + * Returns the set null types + * + * @return array + */ + public function getType() + { + return $this->_type; + } + + /** + * Set the null types + * + * @param integer|array $type + * @throws Zend_Filter_Exception + * @return Zend_Filter_Null + */ + public function setType($type = null) + { + if (is_array($type)) { + $detected = 0; + foreach($type as $value) { + if (is_int($value)) { + $detected += $value; + } else if (in_array($value, $this->_constants)) { + $detected += array_search($value, $this->_constants); + } + } + + $type = $detected; + } else if (is_string($type)) { + if (in_array($type, $this->_constants)) { + $type = array_search($type, $this->_constants); + } + } + + if (!is_int($type) || ($type < 0) || ($type > self::ALL)) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('Unknown type'); + } + + $this->_type = $type; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns null representation of $value, if value is empty and matches + * types that should be considered null. + * + * @param string $value + * @return string + */ + public function filter($value) + { + $type = $this->getType(); + + // STRING ZERO ('0') + if ($type >= self::ZERO) { + $type -= self::ZERO; + if (is_string($value) && ($value == '0')) { + return null; + } + } + + // STRING ('') + if ($type >= self::STRING) { + $type -= self::STRING; + if (is_string($value) && ($value == '')) { + return null; + } + } + + // EMPTY_ARRAY (array()) + if ($type >= self::EMPTY_ARRAY) { + $type -= self::EMPTY_ARRAY; + if (is_array($value) && ($value == array())) { + return null; + } + } + + // INTEGER (0) + if ($type >= self::INTEGER) { + $type -= self::INTEGER; + if (is_int($value) && ($value == 0)) { + return null; + } + } + + // BOOLEAN (false) + if ($type >= self::BOOLEAN) { + $type -= self::BOOLEAN; + if (is_bool($value) && ($value == false)) { + return null; + } + } + + return $value; + } +} diff --git a/library/Zend/Filter/PregReplace.php b/library/Zend/Filter/PregReplace.php new file mode 100755 index 000000000..7100c3717 --- /dev/null +++ b/library/Zend/Filter/PregReplace.php @@ -0,0 +1,174 @@ + matching pattern + * 'replace' => replace with this + * + * @param string|array $options + * @return void + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + if (!empty($options)) { + $temp['match'] = array_shift($options); + } + + if (!empty($options)) { + $temp['replace'] = array_shift($options); + } + + $options = $temp; + } + + if (array_key_exists('match', $options)) { + $this->setMatchPattern($options['match']); + } + + if (array_key_exists('replace', $options)) { + $this->setReplacement($options['replace']); + } + } + + /** + * Set the match pattern for the regex being called within filter() + * + * @param mixed $match - same as the first argument of preg_replace + * @return Zend_Filter_PregReplace + */ + public function setMatchPattern($match) + { + $this->_matchPattern = $match; + return $this; + } + + /** + * Get currently set match pattern + * + * @return string + */ + public function getMatchPattern() + { + return $this->_matchPattern; + } + + /** + * Set the Replacement pattern/string for the preg_replace called in filter + * + * @param mixed $replacement - same as the second argument of preg_replace + * @return Zend_Filter_PregReplace + */ + public function setReplacement($replacement) + { + $this->_replacement = $replacement; + return $this; + } + + /** + * Get currently set replacement value + * + * @return string + */ + public function getReplacement() + { + return $this->_replacement; + } + + /** + * Perform regexp replacement as filter + * + * @param string $value + * @return string + */ + public function filter($value) + { + if ($this->_matchPattern == null) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception(get_class($this) . ' does not have a valid MatchPattern set.'); + } + + return preg_replace($this->_matchPattern, $this->_replacement, $value); + } + +} diff --git a/library/Zend/Filter/RealPath.php b/library/Zend/Filter/RealPath.php new file mode 100755 index 000000000..00881de5f --- /dev/null +++ b/library/Zend/Filter/RealPath.php @@ -0,0 +1,134 @@ +setExists($options); + } + + /** + * Returns true if the filtered path must exist + * + * @return boolean + */ + public function getExists() + { + return $this->_exists; + } + + /** + * Sets if the path has to exist + * TRUE when the path must exist + * FALSE when not existing paths can be given + * + * @param boolean|Zend_Config $exists Path must exist + * @return Zend_Filter_RealPath + */ + public function setExists($exists) + { + if ($exists instanceof Zend_Config) { + $exists = $exists->toArray(); + } + + if (is_array($exists)) { + if (isset($exists['exists'])) { + $exists = (boolean) $exists['exists']; + } + } + + $this->_exists = (boolean) $exists; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns realpath($value) + * + * @param string $value + * @return string + */ + public function filter($value) + { + $path = (string) $value; + if ($this->_exists) { + return realpath($path); + } + + $realpath = @realpath($path); + if ($realpath) { + return $realpath; + } + + $drive = ''; + if (substr(PHP_OS, 0, 3) == 'WIN') { + $path = preg_replace('/[\\\\\/]/', DIRECTORY_SEPARATOR, $path); + if (preg_match('/([a-zA-Z]\:)(.*)/', $path, $matches)) { + list($fullMatch, $drive, $path) = $matches; + } else { + $cwd = getcwd(); + $drive = substr($cwd, 0, 2); + if (substr($path, 0, 1) != DIRECTORY_SEPARATOR) { + $path = substr($cwd, 3) . DIRECTORY_SEPARATOR . $path; + } + } + } elseif (substr($path, 0, 1) != DIRECTORY_SEPARATOR) { + $path = getcwd() . DIRECTORY_SEPARATOR . $path; + } + + $stack = array(); + $parts = explode(DIRECTORY_SEPARATOR, $path); + foreach ($parts as $dir) { + if (strlen($dir) && $dir !== '.') { + if ($dir == '..') { + array_pop($stack); + } else { + array_push($stack, $dir); + } + } + } + + return $drive . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $stack); + } +} diff --git a/library/Zend/Filter/StringToLower.php b/library/Zend/Filter/StringToLower.php new file mode 100755 index 000000000..b208cfe77 --- /dev/null +++ b/library/Zend/Filter/StringToLower.php @@ -0,0 +1,121 @@ +toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + if (!empty($options)) { + $temp['encoding'] = array_shift($options); + } + $options = $temp; + } + + if (!array_key_exists('encoding', $options) && function_exists('mb_internal_encoding')) { + $options['encoding'] = mb_internal_encoding(); + } + + if (array_key_exists('encoding', $options)) { + $this->setEncoding($options['encoding']); + } + } + + /** + * Returns the set encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set the input encoding for the given string + * + * @param string $encoding + * @return Zend_Filter_StringToLower Provides a fluent interface + * @throws Zend_Filter_Exception + */ + public function setEncoding($encoding = null) + { + if ($encoding !== null) { + if (!function_exists('mb_strtolower')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('mbstring is required for this feature'); + } + + $encoding = (string) $encoding; + if (!in_array(strtolower($encoding), array_map('strtolower', mb_list_encodings()))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The given encoding '$encoding' is not supported by mbstring"); + } + } + + $this->_encoding = $encoding; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns the string $value, converting characters to lowercase as necessary + * + * @param string $value + * @return string + */ + public function filter($value) + { + if ($this->_encoding !== null) { + return mb_strtolower((string) $value, $this->_encoding); + } + + return strtolower((string) $value); + } +} diff --git a/library/Zend/Filter/StringToUpper.php b/library/Zend/Filter/StringToUpper.php new file mode 100755 index 000000000..8fe362055 --- /dev/null +++ b/library/Zend/Filter/StringToUpper.php @@ -0,0 +1,121 @@ +toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + if (!empty($options)) { + $temp['encoding'] = array_shift($options); + } + $options = $temp; + } + + if (!array_key_exists('encoding', $options) && function_exists('mb_internal_encoding')) { + $options['encoding'] = mb_internal_encoding(); + } + + if (array_key_exists('encoding', $options)) { + $this->setEncoding($options['encoding']); + } + } + + /** + * Returns the set encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set the input encoding for the given string + * + * @param string $encoding + * @return Zend_Filter_StringToUpper Provides a fluent interface + * @throws Zend_Filter_Exception + */ + public function setEncoding($encoding = null) + { + if ($encoding !== null) { + if (!function_exists('mb_strtoupper')) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception('mbstring is required for this feature'); + } + + $encoding = (string) $encoding; + if (!in_array(strtolower($encoding), array_map('strtolower', mb_list_encodings()))) { + require_once 'Zend/Filter/Exception.php'; + throw new Zend_Filter_Exception("The given encoding '$encoding' is not supported by mbstring"); + } + } + + $this->_encoding = $encoding; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns the string $value, converting characters to uppercase as necessary + * + * @param string $value + * @return string + */ + public function filter($value) + { + if ($this->_encoding) { + return mb_strtoupper((string) $value, $this->_encoding); + } + + return strtoupper((string) $value); + } +} diff --git a/library/Zend/Filter/StringTrim.php b/library/Zend/Filter/StringTrim.php new file mode 100755 index 000000000..4f86d89e2 --- /dev/null +++ b/library/Zend/Filter/StringTrim.php @@ -0,0 +1,124 @@ +toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['charlist'] = array_shift($options); + $options = $temp; + } + + if (array_key_exists('charlist', $options)) { + $this->setCharList($options['charlist']); + } + } + + /** + * Returns the charList option + * + * @return string|null + */ + public function getCharList() + { + return $this->_charList; + } + + /** + * Sets the charList option + * + * @param string|null $charList + * @return Zend_Filter_StringTrim Provides a fluent interface + */ + public function setCharList($charList) + { + $this->_charList = $charList; + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * Returns the string $value with characters stripped from the beginning and end + * + * @param string $value + * @return string + */ + public function filter($value) + { + if (null === $this->_charList) { + return $this->_unicodeTrim((string) $value); + } else { + return $this->_unicodeTrim((string) $value, $this->_charList); + } + } + + /** + * Unicode aware trim method + * Fixes a PHP problem + * + * @param string $value + * @param string $charlist + * @return string + */ + protected function _unicodeTrim($value, $charlist = '\\\\s') + { + $chars = preg_replace( + array( '/[\^\-\]\\\]/S', '/\\\{4}/S', '/\//'), + array( '\\\\\\0', '\\', '\/' ), + $charlist + ); + + $pattern = '^[' . $chars . ']*|[' . $chars . ']*$'; + return preg_replace("/$pattern/sSD", '', $value); + } +} diff --git a/library/Zend/Filter/StripNewlines.php b/library/Zend/Filter/StripNewlines.php new file mode 100755 index 000000000..667c6aae2 --- /dev/null +++ b/library/Zend/Filter/StripNewlines.php @@ -0,0 +1,48 @@ + Tags which are allowed + * 'allowAttribs' => Attributes which are allowed + * 'allowComments' => Are comments allowed ? + * + * @param string|array|Zend_Config $options + * @return void + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if ((!is_array($options)) || (is_array($options) && !array_key_exists('allowTags', $options) && + !array_key_exists('allowAttribs', $options) && !array_key_exists('allowComments', $options))) { + $options = func_get_args(); + $temp['allowTags'] = array_shift($options); + if (!empty($options)) { + $temp['allowAttribs'] = array_shift($options); + } + + if (!empty($options)) { + $temp['allowComments'] = array_shift($options); + } + + $options = $temp; + } + + if (array_key_exists('allowTags', $options)) { + $this->setTagsAllowed($options['allowTags']); + } + + if (array_key_exists('allowAttribs', $options)) { + $this->setAttributesAllowed($options['allowAttribs']); + } + + if (array_key_exists('allowComments', $options)) { + $this->setCommentsAllowed($options['allowComments']); + } + } + + /** + * Returns the commentsAllowed option + * + * This setting is now deprecated and ignored internally. + * + * @deprecated + * @return bool + */ + public function getCommentsAllowed() + { + return $this->commentsAllowed; + } + + /** + * Sets the commentsAllowed option + * + * This setting is now deprecated and ignored internally. + * + * @deprecated + * @param boolean $commentsAllowed + * @return Zend_Filter_StripTags Provides a fluent interface + */ + public function setCommentsAllowed($commentsAllowed) + { + $this->commentsAllowed = (boolean) $commentsAllowed; + return $this; + } + + /** + * Returns the tagsAllowed option + * + * @return array + */ + public function getTagsAllowed() + { + return $this->_tagsAllowed; + } + + /** + * Sets the tagsAllowed option + * + * @param array|string $tagsAllowed + * @return Zend_Filter_StripTags Provides a fluent interface + */ + public function setTagsAllowed($tagsAllowed) + { + if (!is_array($tagsAllowed)) { + $tagsAllowed = array($tagsAllowed); + } + + foreach ($tagsAllowed as $index => $element) { + // If the tag was provided without attributes + if (is_int($index) && is_string($element)) { + // Canonicalize the tag name + $tagName = strtolower($element); + // Store the tag as allowed with no attributes + $this->_tagsAllowed[$tagName] = array(); + } + // Otherwise, if a tag was provided with attributes + else if (is_string($index) && (is_array($element) || is_string($element))) { + // Canonicalize the tag name + $tagName = strtolower($index); + // Canonicalize the attributes + if (is_string($element)) { + $element = array($element); + } + // Store the tag as allowed with the provided attributes + $this->_tagsAllowed[$tagName] = array(); + foreach ($element as $attribute) { + if (is_string($attribute)) { + // Canonicalize the attribute name + $attributeName = strtolower($attribute); + $this->_tagsAllowed[$tagName][$attributeName] = null; + } + } + } + } + + return $this; + } + + /** + * Returns the attributesAllowed option + * + * @return array + */ + public function getAttributesAllowed() + { + return $this->_attributesAllowed; + } + + /** + * Sets the attributesAllowed option + * + * @param array|string $attributesAllowed + * @return Zend_Filter_StripTags Provides a fluent interface + */ + public function setAttributesAllowed($attributesAllowed) + { + if (!is_array($attributesAllowed)) { + $attributesAllowed = array($attributesAllowed); + } + + // Store each attribute as allowed + foreach ($attributesAllowed as $attribute) { + if (is_string($attribute)) { + // Canonicalize the attribute name + $attributeName = strtolower($attribute); + $this->_attributesAllowed[$attributeName] = null; + } + } + + return $this; + } + + /** + * Defined by Zend_Filter_Interface + * + * @todo improve docblock descriptions + * + * @param string $value + * @return string + */ + public function filter($value) + { + $value = (string) $value; + + // Strip HTML comments first + while (strpos($value, ' + + + + + + + + + Qafar + + + Yabuuti + Eretria + Otobbia + + + + [a b t s e c k x i d q r f g o l m n u w h y] + [j p v z] + [A B T S E C K X I D Q R F G O L M N U W H Y] + + + + + + + + EEEE, MMMM dd, y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + + + + Qun + Nah + Cig + Agd + Cax + Qas + Qad + Leq + Way + Dit + Xim + Kax + + + Qunxa Garablu + Kudo + Ciggilta Kudo + Agda Baxis + Caxah Alsa + Qasa Dirri + Qado Dirri + Liiqen + Waysu + Diteli + Ximoli + Kaxxa Garablu + + + + + Q + N + C + A + C + Q + Q + L + W + D + X + K + + + + + + + Aca + Etl + Tal + Arb + Kam + Gum + Sab + + + Acaada + Etleeni + Talaata + Arbaqa + Kamiisi + Gumqata + Sabti + + + + + A + E + T + A + K + G + S + + + + + + + saaku + carra + + + + + + Yaasuusuk Duma + Yaasuusuk Wadir + + + + + + EEEE, MMMM dd, y + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + + + + ¤#,##0.00 + + + + + + Br + + + + + diff --git a/library/Zend/Locale/Data/aa_DJ.xml b/library/Zend/Locale/Data/aa_DJ.xml new file mode 100755 index 000000000..1e248f5f8 --- /dev/null +++ b/library/Zend/Locale/Data/aa_DJ.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + Leqeeni + + + + + + + + + + Fdj + + + + diff --git a/library/Zend/Locale/Data/aa_ER.xml b/library/Zend/Locale/Data/aa_ER.xml new file mode 100755 index 000000000..cba474b38 --- /dev/null +++ b/library/Zend/Locale/Data/aa_ER.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Nfk + + + + diff --git a/library/Zend/Locale/Data/aa_ET.xml b/library/Zend/Locale/Data/aa_ET.xml new file mode 100755 index 000000000..f9b88c27b --- /dev/null +++ b/library/Zend/Locale/Data/aa_ET.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/af.xml b/library/Zend/Locale/Data/af.xml new file mode 100755 index 000000000..34696512d --- /dev/null +++ b/library/Zend/Locale/Data/af.xml @@ -0,0 +1,3879 @@ + + + + + + + + + + + + {0} ({1}) + {0},{1} + {0}: {1} + + + Abkasies + Akoli + Afrikaans + Akan + Amharies + Arabies + Moderne Standaard Arabies + Aramees + Assamees + Aymara + Azerbeidjaans + Azeri + Wit-Russies + Bemba + Bulgaars + Bengaals + Tibettaans + Bretons + Bosnies + Katalaans + Cherokees + Sorani Koerdies + Korsikaans + Kopties + Tsjeggies + Kerkslawies + Wallies + Deens + Duits + Oostenrykse Duits + Switserse hoog-Duits + Divehi + Dzongkha + Ewe + Efik + Antieke Egipties + Grieks + Engels + Australiese Engels + Kanadese Engels + Britse Engels + Engels (GB) + Amerikaanse Engels + Engels (US) + Esperanto + Spaans + Latyns-Amerikaanse Spaans + Europese Spaans + Meksikaanse Spaans + Estnies + Baskies + Persies + Fins + Filippyns + Fidjiaans + Faroees + Frans + Kanadese Frans + Switserse Frans + Wes-Fries + Iers + Gaa + Skotse Gallies + Galisies + Guarani + Goties + Antieke Grieks + Switserse Duits + Gudjarati + Manx + Hausa + Hawaiies + Hebreeus + Hindi + Hetities + Kroaties + Haïtiaans + Hongaars + Armeens + Interlingua + Indonesies + Interlingue + Igbo + Yslands + Italiaans + Japannees + Javaans + Georgies + Kongolees + Kazak + Khmer + Kannada + Koreaans + Kurukh + Kasjmirs + Koerdies + Kornies + Kirgisies + Latyn + Luxemburgs + Ganda + Limburgs + Lingaals + Lao + Lozi + Litaus + Luba-Lulua + Letties + Masai + Morisjen + Malgassies + Maori + Masedonies + Malabaars + Mongools + Marathi + Maleisies + Maltees + Veelvuldige tale + Birmaans + Noorse Bokmål + Noord-Ndebele + Nepalees + Nederlands + Vlaams + Noorweegse Nynorsk + Noors + Suid-Ndebele + Noord-Sotho + Nyanja + Nyankole + Oksitaans + Oromo + Oriya + Osseties + Pandjabi + Fenisies + Pools + Pasjto + Pushto + Portugees + Brasiliaanse Portugees + Europese Portugees + Quechua + Reto-Romaans + Rundi + Roemeens + Russies + Rwandees + Sanskrit + Skots + Sindhi + Noordelike Sami + Sango + Serwo-Kroaties + Sinhala + Slowaaks + Sloweens + Samoaans + Shona + Somalies + Albanees + Serwies + Swazi + Suid-Sotho + Sundanees + Sweeds + Swahili + Shimaorees + Tamil + Telugu + Tetum + Tadjik + Thais + Tigrinya + Turkmeens + Klingon + Tswana + Tongaans + Tok Pisin + Turks + Tsonga + Tataars + Toemboeka + Twi + Tahities + Uighur + Uyghur + Oekraïens + Onbekende of ongeldige taal + Oerdoe + Oezbeeks + Venda + Viëtnamees + Wolof + Xhosa + Jiddisj + Yoruba + Kantonees + Standaard Marokkaanse Tamazight + Sjinees + Vereenvoudigde Chinees + Tradisionele Chinees + Zoeloe + Geen linguistiese inhoud + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wêreld + Afrika + Noord-Amerika + Suid-Amerika + Oseanië + Wes-Afrika + Sentraal-Amerika + Oos-Afrika + Noord-Afrika + Midde-Afrika + Suider-Afrika + Amerikas + Noordelike Amerika + Karibbies + Oos-Asië + Suid-Asië + Suidoos-Asië + Suid-Europa + Australasië + Melanesië + Mikronesiese streek + Polinesië + Asië + Sentraal-Asië + Wes-Asië + Europa + Oos-Europa + Noord-Europa + Wes-Europa + Latyns-Amerika + Ascensioneiland + Andorra + Verenigde Arabiese Emirate + Afganistan + Antigua en Barbuda + Anguilla + Albanië + Armenië + Nederlands-Antille + Angola + Antarktika + Argentinië + Amerikaans-Samoa + Oostenryk + Australië + Aruba + Ålandeilande + Azerbeidjan + Bosnië en Herzegowina + Barbados + Bangladesj + België + Burkina Faso + Bulgarye + Bahrein + Burundi + Benin + Sint Barthélemy + Bermuda + Broenei + Bolivië + Karibiese Nederland + Brasilië + Bahamas + Bhoetan + Bouveteiland + Botswana + Wit-Rusland + Belize + Kanada + Cocos- (Keeling) eilande + Demokratiese Republiek van die Kongo + Kongo (DRK) + Sentraal-Afrikaanse Republiek + Kongo + Kongo (Republiek) + Switserland + Ivoorkus + Cookeilande + Chili + Kameroen + Sjina + Colombië + Clippertoneiland + Costa Rica + Kuba + Kaap Verde + Curaçao + Kerseiland + Siprus + Tjeggiese Republiek + Duitsland + Diego Garcia + Djiboeti + Denemarke + Dominica + Dominikaanse Republiek + Algerië + Ceuta en Melilla + Ecuador + Estland + Egipte + Wes-Sahara + Eritrea + Spanje + Ethiopië + Europese Unie + Finland + Fidji + Falklandeilande + Falkland-eilande (Malvinas) + Mikronesië + Faroëreilande + Frankryk + Gaboen + Verenigde Koninkryk + VK + Grenada + Georgië + Frans-Guyana + Guernsey + Ghana + Gibraltar + Groenland + Gambië + Guinee + Guadeloupe + Ekwatoriaal-Guinee + Griekeland + Suid-Georgië en die Suidelike Sandwicheilande + Guatemala + Guam + Guinee-Bissau + Guyana + Hongkong + Hongkong + Heard- en McDonaldeilande + Honduras + Kroasië + Haïti + Hongarye + Kanarie-eilande + Indonesië + Ierland + Israel + Eiland Man + Indië + Britse Indiese Oseaangebied + Irak + Iran + Ysland + Italië + Jersey + Jamaika + Jordanië + Japan + Kenia + Kirgisië + Kambodja + Kiribati + Comore + Sint Kitts en Nevis + Noord-Korea + Suid-Korea + Koeweit + Kaaimanseilande + Kasakstan + Laos + Libanon + Sint Lucia + Liechtenstein + Sri Lanka + Liberië + Lesotho + Litaue + Luxemburg + Letland + Libië + Marokko + Monaco + Moldova + Montenegro + Sint Martin + Madagaskar + Marshalleilande + Macedonië + Macedonië (VYRM) + Mali + Mianmar + Mongolië + Macau SAR China + Macau + Noordelike Mariana-eilande + Martinique + Mauritanië + Montserrat + Malta + Mauritius + Maledive + Malawi + Meksiko + Maleisië + Mosambiek + Namibië + Nieu-Kaledonië + Niger + Norfolkeiland + Nigerië + Nicaragua + Nederland + Noorweë + Nepal + Nauru + Niue + Nieu-Seeland + Oman + Panama + Peru + Frans-Polinesië + Papoea-Nieu-Guinee + Filippyne + Pakistan + Pole + Sint Pierre en Miquelon + Pitcairneilande + Puerto Rico + Palestina + Palestina + Portugal + Palau + Paraguay + Katar + Omliggende Oseanië + Réunion + Roemenië + Serwië + Rusland + Rwanda + Saoedi-Arabië + Solomoneilande + Seychelle + Soedan + Swede + Singapoer + Sint Helena + Slowenië + Svalbard en Jan Mayen + Slowakye + Sierra Leone + San Marino + Senegal + Somalië + Suriname + Suid-Soedan + Sao Tome en Principe + El Salvador + Sint Maarten + Sirië + Swaziland + Tristan da Cunha + Turks- en Caicoseilande + Tsjad + Franse Suidelike Gebiede + Togo + Thailand + Tadjikistan + Tokelau + Oos-Timor + Turkmenië + Tunisië + Tonga + Turkye + Trinidad en Tobago + Tuvalu + Taiwan + Tanzanië + Oekraïne + Uganda + VS klein omliggende eilande + Verenigde State van Amerika + VSA + Uruguay + Oesbekistan + Vatikaanstad + Sint Vincent en die Grenadine + Venezuela + Britse Maagde-eilande + Amerikaanse Maagde-eilande + Viëtnam + Vanuatu + Wallis en Futuna + Samoa + Kosovo + Jemen + Mayotte + Suid-Afrika + Zambië + Zimbabwe + Onbekende gebied + + + Duitse ortografie van 1901 + Duitse ortografie van 1996 + pinyin + hersiene ortografie + Wade-Giles + + + Kalender + Ignoreer simboolsortering + Omgekeerde aksentsortering + Hoofletters/kleinletters-sortering + Kassensitiewe sortering + Kana-sortering + Sorteervolgorde + Genormaliseerde sortering + Numeriese sortering + Sorteringssterkte + Geldeenheid + Nommers + Tydsone + Lokaalvariant + Sorteer as simbole + Privaat gebruik + + + Arabies-Indiese syfers + Uitgebreide Arabies-Indiese syfers + Armeense syfers + Armeense kleinletter-syfers + Bengaalse syfers + Tradisionele Chinese sorteervolgorde - Groot5 + Boeddhistiese kalender + Chinese kalender + Koptiese kalender + Devanagari syfers + Woordeboek-sorteervolgorde + Verstek Unicode-sorteervolgorde + Ethiopiese syfers + Etiopiese kalender + Etiopiese Amete Alem-kalender + Finansiële syfers + Vollewydte-syfers + Vereenvoudigde Chinese sorteervolgorde - GB2312 + Georgiese syfers + Gregoriese kalender + Griekse syfers + Griekse kleinletter-syfers + Gudjarati syfers + Gurmukhi-syfers + Chinese desimale syfers + Vereenvoudigde Chinese syfers + Vereenvoudigde Chinese finansiële syfers + Tradisionele Chinese syfers + Tradisionele Chinese finansiële syfers + Hebreeuse syfers + Hebreeuse kalender + Sorteer almal + Indiese nasionale kalender + Islamitiese kalender + Islamitiese siviele kalender + Japannese kalender + Japannese syfers + Japannese finansiële syfers + Khmer-syfers + Kannada-syfers + Lao-syfers + Westerse syfers + Sorteer kleinletters veerste + Malabaarse syfers + Mongoliese syfers + Mianmar-syfers + Inheemse syfers + Sorteer aksente gewoonweg + Sorteer gewone letterorde + Sorteer nie kassensitief nie + Sorteer Kana afsonderlik + Sorteer sonder normalisering + Sorteer syfers individueel + Sorteer simbole + Oriya-syfers + Persiese kalender + Foonboek-sorteervolgorde + Fonetiese sorteerorde + Pinyin-sorteervolgorde + Sorteer slegs basisletters + Sorteer aksente/kas/breedte/Kana + Gereformeerde sorteervolgorde + Minguo-kalender + Romeinse syfers + Romeinse kleinletter-syfers + Algemenedoel-soektog + Soek volgens Hangul-beginkonsonant + Sorteer aksente + Sorteer ignoreersimbole + Standaard sorteervolgorde + Slag-sorteervolgorde + Tradisionele Tamil-syfers + Tamil-syfers + Telugu-syfers + Sorteer aksente/kas/breedte + Thaise syfers + Tibettaanse syfers + Tradisionele sorteervolgorde + Tradisionele syfers + Radikale-slag-sorteervolgorde + Sorteer hoofletters eerste + Vai-syfers + Sorteer aksente omgekeerd + Sorteer kassensitief + Sorteer Kana anders + Sorteer Unicode genormaliseer + Sorteer syfers numeries + + + BGN + Numeries + Toon + UNGEGN + Aksente + Vollewydte + halfwydte + Jamo + Pinyin + Publisering + + + Metriek + VK + VSA + + + Taal: {0} + Skrif: {0} + Streek: {0} + + + + [a á â b c d e é è ê ë f g h i î ï j k l m n o ô ö p q r s t u û v w x y z] + [á à â ä ã æ ç é è ê ë í ì î ï ó ò ô ö ú ù û ü ý] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + dd MMM y G + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + dd MMMM + E, MMMM d + mm:ss + y G + y G + M/y G + M/d/y G + E, d/M/y G + MMM y G + d MMM y G + E, d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y–y G + + + M/y – M/y G + M/y – M/y G + + + M/d/y – M/d/y G + M/d/y – M/d/y G + M/d/y – M/d/y G + + + E, M/d/y – E, M/d/y G + E, M/d/y – E, M/d/y G + E, M/d/y – E, M/d/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d–d MMM, y G + MMM d – MMM d, y G + d MMM, y – d MMM, y G + + + E, d MMM – E, d MMM, y G + E, d MMM – E, d MMM, y G + E, MMM d, y – E, MMM d, y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + Jan + Feb + Mar + Apr + Mei + Jun + Jul + Aug + Sep + Okt + Nov + Des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januarie + Februarie + Maart + April + Mei + Junie + Julie + Augustus + September + Oktober + November + Desember + + + + + Jan + Feb + Mar + Apr + Mei + Jun + Jul + Aug + Sep + Okt + Nov + Des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januarie + Februarie + Maart + April + Mei + Junie + Julie + Augustus + September + Oktober + November + Desember + + + + + + + So + Ma + Di + Wo + Do + Vr + Sa + + + S + M + D + W + D + V + S + + + So. + Ma. + Di. + Wo. + Do. + Vr. + Sa. + + + Sondag + Maandag + Dinsdag + Woensdag + Donderdag + Vrydag + Saterdag + + + + + So + Ma + Di + Wo + Do + Vr + Sa + + + S + M + D + W + D + V + S + + + So. + Ma. + Di. + Wo. + Do. + Vr. + Sa. + + + Sondag + Maandag + Dinsdag + Woensdag + Donderdag + Vrydag + Saterdag + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1ste kwartaal + 2de kwartaal + 3de kwartaal + 4de kwartaal + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1ste kwartaal + 2de kwartaal + 3de kwartaal + 4de kwartaal + + + + + + + vm. + nm. + + + + + + voor Christus + na Christus + + + v.C. + v.g.j. + n.C. + g.j. + + + v.C. + vgj + n.C. + vg + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + dd MMM y + + + + + y-MM-dd + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + dd MMMM + E, MMMM d + mm:ss + y + M/y + M/d/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y–y + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM, y + MMM d – MMM d, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, MMM d, y – E, MMM d, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Era + + + Jaar + verlede jaar + hierdie jaar + volgende jaar + + Oor {0} jaar + Oor {0} jaar + + + {0} jaar gelede + {0} jaar gelede + + + + Maand + verlede maand + vandeesmaand + volgende maand + + Oor {0} maand + Oor {0} maande + + + {0} maand gelede + {0} maande gelede + + + + Week + verlede week + vandeesweek + volgende week + + Oor {0} week + Oor {0} weke + + + {0} week gelede + {0} weke gelede + + + + Dag + Die dag voor gister + gister + vandag + môre + Die dag na môre + + Oor {0} dag + Oor {0} dae + + + {0} dag gelede + {0} dae gelede + + + + Dag van die Week + + + verlede Sondag + hierdie Sondag + volgende Sondag + + + verlede Maandag + hierdie Maandag + volgende Maandag + + + verlede Dinsdag + hierdie Dinsdag + volgende Dinsdag + + + verlede Woensdag + hierdie Woensdag + volgende Woensdag + + + verlede Donderdag + hierdie Donderdag + volgende Donderdag + + + verlede Vrydag + hierdie Vrydag + volgende Vrydag + + + verlede Saterdag + hierdie Saterdag + volgende Saterdag + + + VM/NM + + + Uur + + Oor {0} uur + Oor {0} uur + + + {0} uur gelede + {0} uur gelede + + + + Minuut + + Oor {0} minuut + Oor {0} minute + + + {0} minuut gelede + {0} minute gelede + + + + Sekonde + nou + + Oor {0} sekonde + Oor {0} sekondes + + + {0} sekonde gelede + {0} sekondes gelede + + + + Tydsone + + + + +HH:mm;-HH:mm + MGT{0} + MGT + {0}-tyd + {0}-dagligtyd + {0}-standaardtyd + {1} ({0}) + + Onbekende stad + + + Dumont d’Urville + + + Wene + + + Bakoe + + + Brussel + + + Bahrein + + + Sint Barthélemy + + + Broenei + + + Atikokan + + + Sint John's + + + Zürich + + + Paas + + + Kaap Verde + + + Curaçao + + + Kers + + + Praag + + + Berlyn + + + Djiboeti + + + Kopenhagen + + + Caro + + + Asmara + + + Kanarie + + + Addis Abeba + + + Chuuk + + + Pohnpei + + + Faroe + + + Parys + + + + Britse somertyd + + Londen + + + Nuuk + + + Ittoqqortoormiit + + + Athene + + + Suid-Georgië + + + Hongkong + + + Boedapest + + + + Ierse somertyd + + + + Kolkata + + + Bagdad + + + Bisjkek + + + St. Kitts + + + Seoel + + + Koeweit + + + Oeral + + + Beiroet + + + St. Lucia + + + Luxemburg + + + Rangoen + + + Ulaanbatar + + + Maledive + + + Meksikostad + + + Nouméa + + + Katmandoe + + + Muskat + + + Karatsji + + + Warskou + + + Asore + + + Lissabon + + + Asunción + + + Katar + + + Réunion + + + Boekarest + + + Moskou + + + Jekaterinburg + + + Jakoetsk + + + Riaad + + + Kartoem + + + Singapoer + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damaskus + + + Asjchabad + + + Kiëf + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Vatikaanstad + + + St. Vincent + + + St. Thomas + + + Ho Tsji Minhstad + + + + Afghanistan-tyd + + + + + Sentraal-Afrika-tyd + + + CAT + + + + + Oos-Afrika-tyd + + + EAT + + + + + Suid-Afrika-standaardtyd + + + SAST + + + + + Wes-Afrika-tyd + Wes-Afrika-standaardtyd + Wes-Afrika-somertyd + + + WAT + WAT + WAST + + + + + Alaska-tyd + Alaska-standaardtyd + Alaska-dagligtyd + + + + + Amasone-tyd + Amasone-standaardtyd + Amasone-somertyd + + + + + Sentrale tyd + Sentrale standaardtyd + Sentrale dagligtyd + + + + + Oostelike tyd + Oostelike standaardtyd + Oostelike dagligtyd + + + + + Bergtyd + Berg-standaardtyd + Berg-dagligtyd + + + + + Pasifiese tyd + Pasifiese standaardtyd + Pasifiese dagligtyd + + + + + Anadyr-tyd + Anadyr-standaardtyd + Anadyr-somertyd + + + + + Arabiese tyd + Arabiese standaardtyd + Arabiese dagligtyd + + + + + Argentinië-tyd + Argentinië-standaardtyd + Argentinië-somertyd + + + + + Argentinië Westelike tyd + Argentinië Westelike standaardtyd + Argentinië Westelike somertyd + + + + + Armenië-tyd + Armenië-standaardtyd + Armenië-somertyd + + + + + Atlantiese tyd + Atlantiese standaardtyd + Atlantiese dagligtyd + + + + + Sentraal-Australië-tyd + Australiese sentraal-standaardtyd + Australiese sentrale dagligtyd + + + + + Australiese sentraal-Westelike tyd + Australiese sentraal-Westelike standaard-tyd + Australiese sentraal-Westelike dagligtyd + + + + + Oostelike Australiese tyd + Australiese Oostelike standaardtyd + Australiese Oostelike dagligtyd + + + + + Westelike Australië-tyd + Australiese Westelike standaardtyd + Australiese Westelike dagligtyd + + + + + Aserbeidjan-tyd + Aserbeidjan-standaardtyd + Aserbeidjan-somertyd + + + + + Asore-tyd + Asore-standaardtyd + Asore-somertyd + + + + + Bangladesj-tyd + Bangladesj-standaardtyd + Bangladesj-somertyd + + + + + Bhoetan-tyd + + + + + Bolivia-tyd + + + + + Brasilië-tyd + Brasilië-standaardtyd + Brasilië somertyd + + + + + Broenei Darussalam-tyd + + + + + Kaap Verde-tyd + Kaap Verde-standaardtyd + Kaap Verde-somertyd + + + + + Chamorro-standaardtyd + + + + + Chatham-tyd + Chatham-standaardtyd + Chatham-dagligtyd + + + + + Chili-tyd + Chili-standaardtyd + Chili-somertyd + + + + + China-tyd + China-standaardtyd + China-dagligtyd + + + + + Choibalsan-tyd + Choibalsan-standaardtyd + Choibalsan-somertyd + + + + + Kersfeeseiland-tyd + + + + + Cocoseilande-tyd + + + + + Colombië-tyd + Colombië-standaardtyd + Colombië-somertyd + + + + + Cookeilande-tyd + Cookeilande-standaardtyd + Cookeilande-halfsomertyd + + + + + Kuba-tyd + Kuba-standaardtyd + Kuba-dagligtyd + + + + + Davis-tyd + + + + + Dumont-d'Urville-tyd + + + + + Oos-Timor-tyd + + + + + Paaseiland-tyd + Paaseiland-standaardtyd + Paaseiland-somertyd + + + + + Ecuador-tyd + + + + + Sentraal-Europese tyd + Sentraal-Europese standaardtyd + Sentraal-Europese somertyd + + + + + Oos-Europese tyd + Oos-Europese standaardtyd + Oos-Europese somertyd + + + + + Wes-Europese tyd + Wes-Europese standaardtyd + Wes-Europese somertyd + + + + + Falklandeilande-tyd + Falklandeilande-standaardtyd + Falklandeilande-somertyd + + + + + Fidji-tyd + Fidji-standaardtyd + Fidji-somertyd + + + + + Frans-Guiana-tyd + + + + + Franse Suider- en Antarktiese tyd + + + + + Galapagos-tyd + + + + + Gambier-tyd + + + + + Georgië-tyd + Georgië-standaardtyd + Georgië-somertyd + + + + + Gilberteilande-tyd + + + + + Greenwich-mediaantyd + + + + + Oos-Groenland-tyd + Oos-Groenland-standaardtyd + Oos-Groenland-somertyd + + + + + Wes-Groenland-tyd + Wes-Groenland-standaardtyd + Wes-Groenland-somertyd + + + + + Golf-standaardtyd + + + + + Guyana-tyd + + + + + Hawaii-Aleusiër-tyd + Hawaii-Aleusiër-standaardtyd + Hawaii-Aleusiër-dagligtyd + + + + + Hongkong-tyd + Hongkong-standaardtyd + Hongkong-somertyd + + + + + Hovd-tyd + Hovd-standaardtyd + Hovd-somertyd + + + + + Indië-standaardtyd + + + + + Indiese Oseaan-tyd + + + + + Indosjina-tyd + + + + + Sentraal Indonesië-tyd + + + + + Oos-Indonesië-tyd + + + + + Wes-Indonesië-tyd + + + + + Iran-tyd + Iran-standaardtyd + Iran-dagligtyd + + + + + Irkutsk-tyd + Irkutsk-standaardtyd + Irkutsk-somertyd + + + + + Israel-tyd + Israel-standaardtyd + Israel-dagligtyd + + + + + Japan-tyd + Japan-standaardtyd + Japan-dagligtyd + + + + + Petropavlovsk-Kamchatski-tyd + Petropavlovsk-Kamchatski-standaardtyd + Petropavlovsk-Kamchatski-somertyd + + + + + Oos-Kazakstan-tyd + + + + + Wes-Kazakstan-tyd + + + + + Koreaanse tyd + Koreaanse standaardtyd + Koreaanse dagligtyd + + + + + Kosrae-tyd + + + + + Krasnojarsk-tyd + Krasnojarsk-standaardtyd + Krasnojarsk-somertyd + + + + + Kirgistan-tyd + + + + + Line-eilande-tyd + + + + + Lord Howe-tyd + Lord Howe-standaardtyd + Lord Howe-dagligtyd + + + + + Macquarie-eiland-tyd + + + + + Magadan-tyd + Magadan-standaardtyd + Magadan-somertyd + + + + + Maleisië-tyd + + + + + Maledive-tyd + + + + + Marquesas-tyd + + + + + Marshalleilande-tyd + + + + + Mauritius-tyd + Mauritius-standaardtyd + Mauritius-somertyd + + + + + Mawson-tyd + + + + + Ulaanbatar-tyd + Ulaanbatar-standaardtyd + Ulaanbatar-somertyd + + + + + Moskou-tyd + Moskou-standaardtyd + Moskou-somertyd + + + + + Mianmar-tyd + + + + + Nauru-tyd + + + + + Nepal-tyd + + + + + Nieu-Kaledonië-tyd + Nieu-Kaledonië-standaardtyd + Nieu-Kaledonië-somertyd + + + + + Nieu-Seeland-tyd + Nieu-Seeland-standaardtyd + Nieu-Seeland-dagligtyd + + + + + Newfoundland-tyd + Newfoundland-standaard-tyd + Newfoundland-dagligtyd + + + + + Niue-tyd + + + + + Norfolkeilande-tyd + + + + + Fernando de Noronha-tyd + Fernando de Noronha-standaardtyd + Fernando de Noronha-somertyd + + + + + Novosibirsk-tyd + Novosibirsk-standaardtyd + Novosibirsk-somertyd + + + + + Omsk-tyd + Omsk-standaardtyd + Omsk-somertyd + + + + + Pakistan-tyd + Pakistan-standaardtyd + Pakistan-somertyd + + + + + Palau-tyd + + + + + Papoea-Nieu-Guinee-tyd + + + + + Paraguay-tyd + Paraguay-standaardtyd + Paraguay-somertyd + + + + + Peru-tyd + Peru-standaardtyd + Peru-somertyd + + + + + Filippynse tyd + Filippynse standaardtyd + Filippynse somertyd + + + + + Fenikseilande-tyd + + + + + Sint-Pierre en Miquelon-tyd + Sint-Pierre en Miquelon-standaardtyd + Sint-Pierre en Miquelon-dagligtyd + + + + + Pitcairn-tyd + + + + + Ponape-tyd + + + + + Reunion-tyd + + + + + Rothera-tyd + + + + + Sakhalin-tyd + Sakhalin-standaardtyd + Sakhalin-somertyd + + + + + Samara-tyd + Samara-standaardtyd + Samara-dagligtyd + + + + + Samoa-tyd + Samoa-standaardtyd + Samoa-dagligtyd + + + + + Seychelle-tyd + + + + + Singapoer-standaardtyd + + + + + Solomoneilande-tyd + + + + + Suid-Georgië-tyd + + + + + Suriname-tyd + + + + + Syowa-tyd + + + + + Tahiti-tyd + + + + + Taipei-tyd + Taipei-standaardtyd + Taipei-dagligtyd + + + + + Tadjikistan-tyd + + + + + Tokelau-tyd + + + + + Tonga-tyd + Tonga-standaardtyd + Tonga-somertyd + + + + + Chuuk-tyd + + + + + Turkmenistan-tyd + Turkmenistan-standaardtyd + Turkmenistan-somertyd + + + + + Tuvalu-tyd + + + + + Uruguay-tyd + Uruguay-standaardtyd + Uruguay-somertyd + + + + + Oesbekistan-tyd + Oesbekistan-standaardtyd + Oesbekistan-somertyd + + + + + Vanuatu-tyd + Vanuatu-standaardtyd + Vanuatu-somertyd + + + + + Venezuela-tyd + + + + + Vladivostok-tyd + Vladivostok-standaardtyd + Vladivostok-somertyd + + + + + Volgograd-tyd + Volgograd-standaardtyd + Volgograd-somertyd + + + + + Vostok-tyd + + + + + Wake-eiland-tyd + + + + + Wallis en Futuna-tyd + + + + + Jakoetsk-tyd + Jakoetsk-standaardtyd + Jakoetsk-somertyd + + + + + Jekaterinburg-tyd + Jekaterinburg-standaardtyd + Jekaterinburg-somertyd + + + + + + latn + + , +   + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 duisend + 0 duisend + 00 duisend + 00 duisend + 000 duisend + 000 duisend + 0 miljoen + 0 miljoen + 00 miljoen + 00 miljoen + 000 miljoen + 000 miljoen + 0 miljard + 0 miljard + 00 miljard + 00 miljard + 000 miljard + 000 miljard + 0 biljoen + 0 biljoen + 00 biljoen + 00 biljoen + 000 biljoen + 000 biljoen + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 m + 0 m + 00 m + 00 m + 000 m + 000 m + 0 mjd + 0 mjd + 00 mjd + 00 mjd + 000 mjd + 000 mjd + 0 bn + 0 bn + 00 bn + 00 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + Verenigde Arabiese Emirate dirham + + + Afgaanse afgani + + + Albanese lek + + + Armeense dram + + + Nederlands-Antilliaanse gulde + + + Angolese kwanza + + + Argentynse peso + + + Australiese dollar + Australiese dollar + Australiese dollar + + + Arubaanse floryn + + + Azerbeidjaanse manat + + + Bosnië en Herzegowina omskakelbare marka + + + Barbados-dollar + + + Bangladesjiese taka + + + Bulgaarse lev + + + Bahrainse dinar + + + Burundiese frank + + + Bermuda-dollar + + + Broeneise dollar + + + Boliviaanse boliviano + + + Brasiliaanse real + R$ + + + Bahamiaanse dollar + + + Bhoetanese ngoeltroem + + + Botswana pula + + + Belo-Russiese roebel + + + Beliziese dollar + + + Kanadese dollar + CA$ + + + Kongolese frank + + + Switserse frank + + + Chileense peso + + + Sjinese joean renminbi + CN¥ + + + Colombiaanse peso + + + Costa Ricaanse colón + + + Kubaanse omskakelbare peso + + + Kubaanse peso + + + Kaap Verdiese escudo + + + Tsjeggiese kroon + + + Djiboeti frank + + + Deense kroon + + + Dominikaanse peso + Dominikaanse peso + Dominikaanse peso + + + Algeriese dinar + + + Egiptiese pond + + + Eritrese nakfa + + + Etiopiese birr + + + Euro + + + + Fidjiaanse dollar + + + Falkland-eilande pond + + + Britse pond + £ + + + Georgiese lari + + + Ghanese cedi (1979–2007) + + + Ghanese cedi + + + Gibraltarese pond + + + Gambiese dalasi + + + Guinese frank + + + Guinese syli + + + Guatemalaanse quetzal + + + Guyanese dollar + + + Hong Kong dollar + HK$ + + + Hondurese lempira + + + Kroatiese kuna + + + Haïtiaanse gourde + + + Indonesiese roepia + + + Israeliese nuwe sikkel + + + + Indiese rupee + + + + Irakse dinar + + + Iranse rial + + + Yslandse kroon + + + Italiaanse lier + + + Jamaikaanse dollar + + + Jordaniese dinar + + + Japannese jen + JP¥ + + + Keniaanse sjieling + + + Kirgisiese som + + + Kambodjaanse riel + + + Comoriese frank + + + Noord-Koreaanse won + + + Suid-Koreaanse won + + + + Koeweitse dinar + + + Cayman-eilande dollar + + + Kazakse tenge + + + Laosiaanse kip + + + Lebanese pond + + + Sri Lankaanse roepee + + + Liberiese dollar + + + Lesotho loti + + + Litause litas + + + Lettiese lats + + + Libiese dinar + + + Marokkaanse dirham + + + Moldowiese leu + + + Malgassiese ariary + + + Macedoniese denar + + + Myanma kyat + + + Mongoolse toegrik + + + Macaose pataca + + + Mauritaniese ouguiya + + + Mauritiaanse rupee + + + Malediviese rufia + + + Malawiese kwacha + + + Meksikaanse peso + MX$ + + + Maleisiese ringgit + + + Mosambiekse metical (1980–2006) + + + Mosambiekse metical + + + Namibiese dollar + + + Nigeriese naira + + + Nicaraguaanse córdoba + + + Noorse kroon + + + Nepalese roepee + + + Nieu-Seeland dollar + NZ$ + + + Omaanse rial + + + Panamese balboa + + + Peruaanse nuwe sol + + + Papoease kina + + + Filippynse peso + + + Pakistanse roepee + + + Poolse zloty + + + Paraguaanse guarani + + + Katarese rial + + + Roemeense leu + Roemeense leu + Roemeense leu + + + Serbiese dinar + + + Russiese roebel + + + Rwandiese frank + + + Saoedi-Arabiese riyal + + + Salomonseilande dollar + Salomonseilande dollar + Salomonseilande dollar + + + Seychellese rupee + + + Soedannese pond + + + Soedannese pond (1957–1998) + + + Sweedse kroon + + + Singapoer-dollar + + + Sint Helena pond + + + Sierra Leonese leone + + + Somaliese sjieling + + + Surinaamse dollar + + + Suid-Soedanese pond + Suid-Soedanese pond + Suid-Soedanese pond + + + São Tomé en Príncipe dobra + + + Siriese pond + + + Swazilandse lilangeni + + + Thaise baht + ฿ + + + Tadjikse roebel + + + Toerkmeense manat + + + Tunisiese dinar + + + Tongaanse pa'anga + + + Turkse lier (1922–2005) + + + Turkse lier + + + Trinidad en Tobago dollar + + + Nuwe Taiwanese dollar + NT$ + + + Tanzaniese sjieling + + + Oekraïnse hriwna + + + Ugandese sjieling + + + Amerikaanse dollar + US$ + + + Uruguaanse peso + + + Oezbekiese som + + + Venezolaanse bolivar + + + Viëtnamese dong + + + + Vanuatu vatu + + + Samoaanse tala + + + CFA frank BEAC + FCFA + + + Oos-Karibbiese dollar + EC$ + + + CFA frank BCEAO + CFA + + + CFP-frank + CFPF + + + Onbekende geldeenheid + + + Jemenitiese rial + + + Suid-Afrikaanse rand + R + + + Zambiese kwacha (1968–2012) + + + Zambiese kwacha + + + Zimbabwiese dollar + + + + {0}+ + {0}–{1} + + + + + + {0} per {1} + + + {0} swaartekrag van die Aarde + {0} swaartekrag van die Aarde + + + {0} boogminuut + {0} boogminute + + + {0} boogsekonde + {0} boogsekondes + + + {0} booggraad + {0} booggrade + + + {0} akker + {0} akker + + + {0} hektaar + {0} hektaar + + + {0} vierkante voet + {0} vierkante voet + + + {0} vierkante kilometer + {0} vierkante kilometer + + + {0} vierkante meter + {0} vierkante meter + + + {0} vierkante myl + {0} vierkante myl + + + {0} dag + {0} dae + + + {0} uur + {0} uur + + + {0} millisekonde + {0} millisekondes + + + {0} minuut + {0} minute + + + {0} maand + {0} maande + + + {0} sekonde + {0} sekondes + + + {0} week + {0} weke + + + {0} jaar + {0} jaar + + + {0} sentimeter + {0} sentimeter + + + {0} voet + {0} voete + + + {0} duim + {0} duim + + + {0} kilometer + {0} kilometer + + + {0} lj + {0} lj + + + {0} meter + {0} meter + + + {0} myl + {0} myl + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} jaart + {0} jaart + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} oz. + {0} oz. + + + {0} lb. + {0} lb. + + + {0} perdekrag + {0} perdekrag + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} duim kwik + {0} duim kwik + + + {0} millibar + {0} millibar + + + {0} kilometer per uur + {0} kilometer per uur + + + {0} meter per sekonde + {0} meter per sekonde + + + {0} myl per uur + {0} myl per uur + + + {0} graad Celsius + {0} grade Celsius + + + {0} graad Fahrenheit + {0} grade Fahrenheit + + + {0} kubieke kilometer + {0} kubieke kilometer + + + {0} kubieke myl + {0} kubieke myl + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} sek + {0} sek + + + {0} gr. + {0} gr. + + + {0} ak + {0} ak + + + {0} ha + {0} ha + + + {0} vt.² + {0} vt.² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} myl² + {0} myl² + + + {0} dag + {0} dae + + + {0} u. + {0} u. + + + {0} ms + {0} ms + + + {0} min. + {0} min. + + + {0} md. + {0} md. + + + {0} sek. + {0} sek. + + + {0} w. + {0} w. + + + {0} j. + {0} j. + + + {0} cm + {0} cm + + + {0} vt. + {0} vt. + + + {0} duim + {0} duim + + + {0} km + {0} km + + + {0} lj + {0} lj + + + {0} m + {0} m + + + {0} myl + {0} myl + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} jt. + {0} jt. + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz. + {0} oz. + + + {0} lb. + {0} lb. + + + {0} pk. + {0} pk. + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} dm.Hg + {0} dm.Hg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} myl/h + {0} myl/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} myl³ + {0} myl³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ak + {0} ak + + + {0}ha + {0}ha + + + {0} vt.² + {0} vt.² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0}myl² + {0}myl² + + + {0}d. + {0}d. + + + {0}u. + {0}u. + + + {0} ms + {0} ms + + + {0}min. + {0}min. + + + {0}md. + {0}md. + + + {0}sek. + {0}sek. + + + {0}w. + {0}w. + + + {0}cm + {0}cm + + + {0} vt. + {0} vt. + + + {0} duim + {0} duim + + + {0}km + {0}km + + + {0} lj + {0} lj + + + {0}m + {0}m + + + {0} myl + {0} myl + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} jt. + {0} jt. + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} oz. + {0} oz. + + + {0} lb. + {0} lb. + + + {0}pk. + {0}pk. + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0} dm.Hg + {0} dm.Hg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0} myl/h + {0} myl/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} myl³ + {0} myl³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} en {1} + {0} en {1} + + + + + ja:j + nee:n + + + + diff --git a/library/Zend/Locale/Data/af_NA.xml b/library/Zend/Locale/Data/af_NA.xml new file mode 100755 index 000000000..28b9db486 --- /dev/null +++ b/library/Zend/Locale/Data/af_NA.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + GGGGG y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + + + + ¤ #,##0.00 + + + + + + $ + + + + + diff --git a/library/Zend/Locale/Data/af_ZA.xml b/library/Zend/Locale/Data/af_ZA.xml new file mode 100755 index 000000000..7e9eb2c7a --- /dev/null +++ b/library/Zend/Locale/Data/af_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/agq.xml b/library/Zend/Locale/Data/agq.xml new file mode 100755 index 000000000..79f3fd8da --- /dev/null +++ b/library/Zend/Locale/Data/agq.xml @@ -0,0 +1,774 @@ + + + + + + + + + + + + Aghem + Akan + Àmalì + Àlabì + Bɛ̀làlusàn + Bùugɨlìa + Bɨ̀ŋgalì + Chɛ̂ + Dzamɛ̀ + Gɨ̀lêʔ + Kɨŋgele + Sɨ̀kpanìs + Kpɛɛshìa + Kɨ̀fàlàŋsi + Kɨtsɔŋkaŋ + Endì + Hɔŋgalìa + Èndònɛshìa + Egbò + Ètalìa + Dzàkpànê + Dzàbvànê + Kɨmɛ̀ + kùulîa + Màlae + Bùumɛsɛ̀ + Nɛ̀kpalì + Dɔ̂s + Kpuwndzabì + Kpɔlìs + Kpotùwgîi + Lùmanyìa + Lushìa + Lùwandà + Sòmalì + Suedìs + Tamì + Tàe + Tʉʉkìs + Ùkɛlɛnìa + Uudùw + Vìyɛtnàmê + Yulùba + Chàenê + Zulù + + + Àndolà + Yùnaetɛ Alab ɛmelɛ̀ + Àfɨ̀ganìsɨ̀tân + Àntigwà à Bàbudà + Àŋgwilà + Àabɛnìa + Àmɛnyìa + Nedàlân Antàe + Àŋgolà + Àdzɛ̀ntinà + Àmɛlekan Samwà + Usɨtɨ̀là + Ùsɨ̀tɛ̀lɛlìa + Àlubà + Àzɨbɛ̀dzân + Bosɨnyìa à Hɛ̀zɛ̀gòvinà + Bàbadòs + Baŋgɨ̀làdɛ̂ + Bɛɛdzwùm + Bùkinà Fasò + Bùugɛlìa + Bàlaen + Bùlundì + Bɛ̀nɨ̂ŋ + Bɛ̀mudà + Bɨ̀lunè + Bòlevà + Bɨ̀làzîi + Bàhamàs + Mbutàn + Bòtɨ̀swǎnà + Bɛlàlûs + Bɛ̀lezɨ̀ + Kanadà + Dɛ̀mùkàlatì Lèkpubèlè è Kuŋgù + Sɛnta Afɨlekan Lèkpobèlè + Kuŋgù + Suezàlân + Ku Dɨ̀vûa + Chwɨla ŋ̀ Kûʔ + Chilè + Kàmàlûŋ + Chaenà + Kòlombìa + Kòsɨ̀tà Lekà + Kuuwbà + Chwɨla ŋ̀ Kɛ̀b Vɛ̂ɛ + Saekpùlù + Chɛ̂ Lèkpubèlè + Dzamanè + Dzìbuwtì + Dɛnɨmà + Dòmenekà + Dòmenekà Lèkpubèlè + Àadzɛlìa + Ekwadò + Èsɨ̀tonyìa + Edzì + Èletɨ̀là + Sɨ̀kpɛ̂n + Ètyǒpìa + Fɨnlàn + Fidzi + Chwɨlà fɨ Fakɨlàn + Maekòlòneshìa + Fàlâŋnsì + Gàbûn + Yùnaetɛ Kiŋdɔ̀m + Gɨ̀lɛnadà + Dzɔɔdzìa + Gàyanà è Fàlâŋnsì + Gaanà + Dzibɨ̀latà + Gɨ̀lenlân + Gambìa + Ginè + Gwadalukpɛ̀ + Èkwɛ̀tolia Ginè + Gɨ̀lês + Gwàtɨ̀malà + Gwam + Ginè Bìsawù + Gùyanà + Hɔndulàs + Kòwɛshìa + Hǎetì + Hɔŋgàlè + Èndòneshìa + Aelɨ̀lân + Ezɨ̀lɛ̂ + Endìa + Dɨŋò kɨ dzughùnstòʔ kɨ Endìa kɨ Bɨ̀letì kò + Èlâkɨ̀ + Èlân + Aesɨ̀lân + Etalè + Dzàmɛkà + Dzodàn + Dzàkpân + Kɨnyà + Kìdzisɨ̀tân + Kàmbodìa + Kèlèbati + Komolòs + Sɛ̀n Kî à Nevì + Kùulîa, Ekùw + Kùulîa, Emàm + Kùwɛ̂ + Chwɨlà ŋ̀ Kaemàn + Kàzasɨ̀tân + Làwos + Lɛbanè + Sɛ̀n Lushìa + Letɨnshɨ̀n + Sɨ̀le Laŋkà + Làebɛlìa + Lɛ̀sotù + Lètwǎnyìa + Luzɨmbùʔ + Làtɨva + Lebìa + Mòlokò + Mùnaku + Mòodovà + Màdàgasɨkà + Chwɨlà fɨ Mashà + Mɨ̀sɨ̀donyìa + Malè + Mǐanmà + Mùŋgolìa + Chwɨlà m̀ Màlǐanà mɨ̀ Ekùw mò + Màtìnekì + Mùlètanyìa + Mùŋtselà + Maatà + Mùleshwɨ̀s + Màdivè + Màlawì + Mɛkɨzikù + Màlɛshìa + Mùzàmbî + Nàmibìa + Kàlèdonyìa È fūghū + Naedzà + Chwɨlà fɨ Nufòʔ + Gɨ̀anyɨ + Nikàlagwà + Nedàlân + Noowɛ̂ɛ + Nɛkpâa + Nàwulù + Niyu + Zìlân È fūghū + Umàn + Kpanàma + Kpɛlû + Kpoleneshìa è Fàlâŋnsì + Kpakpua Ginè È fūghū + Felèkpî + Kpakìsɨ̀tân + Kpulàn + Sɛ̀n Kpiyɛ̀ à Mikelɔŋ + Kpitɨ̀kalè + Kpǒto Leko + Adzɨmā kɨ ŋgùŋ kɨ Palɛsɨtɨnyia à kɨ Gazà kò + Kputuwgà + Kpàlawù + Kpalàgwɛ̂ + Katà + Lèyunyɔ̀ŋ + Lùmanyìa + Loshìa + Lùwandà + Sawudi Alabi + Chwɨlà fɨ Solomwɨ̀n + Sɛchɛ̀lɛ̀s + Sùdân + Suedɨ̀n + Siŋgàkpôo + Sɛ̀n Èlenà + Sɨ̀lòvɨnyìa + Sɨ̀lòvɨkɨ̀a + Silìa lûŋ + Sàn Màlenù + Sɛ̀nɛ̀gâa + Sòmalìa + Sulènamè + Sawo Tɔ̀me à Kpèlènsikpɛ̀ + Esàvadò + Silîa + Shǔazìlân + Chwɨla n Tɨtê à Kaekùs + Châ + Tugù + Taelàn + Tàdzikìsɨ̀tân + Tuwkelawù + Ês Taemò + Tekɨmènèsɨ̀tân + Tùneshìa + Tuŋgà + Teekì + Tèlenedà à Tòbagù + Tuwvalùw + Taewàn + Tàanzanyìa + Yùkɛ̀lɛ̂ + Yùgandà + USA + Yulùgwɛ̂ + Yùzɨ̀bɛkìsɨ̀tân + Vatikàn Sɨ̀tɛ̂ + Sɛ̀n Vinsɨ̀n à Gɨlenadi Ù tē + Vɛ̀nɛ̀zǔɛɛlà + Chwɨlà m̀ Vidzinyìa m̀ Bɨ̀letì mò + U. S. Chwɨlà fɨ Mbuʔmbu + Vìyɛnàm + Vànǔatùw + Wales à Fùwtuwnà + Sàmowà + Yɛmɛ̀n + Màyotì + Afɨlekà ghɨ Emàm ghò + Zambìa + Zìmbagbɛ̀ + + + + [a à â ǎ ā b c d e è ê ě ē ɛ {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} {ɛ\u0304} f g h i ì î ǐ ī ɨ {ɨ\u0300} {ɨ\u0302} {ɨ\u030C} {ɨ\u0304} k l m n ŋ o ò ô ǒ ō ɔ {ɔ\u0300} {ɔ\u0302} {ɔ\u030C} {ɔ\u0304} p s t u ù û ǔ ū ʉ {ʉ\u0300} {ʉ\u0302} {ʉ\u030C} {ʉ\u0304} v w y z ʔ] + [q r x] + [A B C D E Ɛ F G H I Ɨ K L M N Ŋ O Ɔ P S T U Ʉ V W Y Z ʔ] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + d + d E + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + nùm + kɨz + tɨd + taa + see + nzu + dum + fɔe + dzu + lɔm + kaa + fwo + + + ndzɔ̀ŋɔ̀nùm + ndzɔ̀ŋɔ̀kƗ̀zùʔ + ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà + ndzɔ̀ŋɔ̀tǎafʉ̄ghā + ndzɔ̀ŋèsèe + ndzɔ̀ŋɔ̀nzùghò + ndzɔ̀ŋɔ̀dùmlo + ndzɔ̀ŋɔ̀kwîfɔ̀e + ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù + ndzɔ̀ŋɔ̀ghǔuwelɔ̀m + ndzɔ̀ŋɔ̀chwaʔàkaa wo + ndzɔ̀ŋèfwòo + + + + + n + k + t + t + s + z + k + f + d + l + c + f + + + + + + + nts + kpa + ghɔ + tɔm + ume + ghɨ + dzk + + + tsuʔntsɨ + tsuʔukpà + tsuʔughɔe + tsuʔutɔ̀mlò + tsuʔumè + tsuʔughɨ̂m + tsuʔndzɨkɔʔɔ + + + + + n + k + g + t + u + g + d + + + + + + + kɨbâ kɨ 1 + ugbâ u 2 + ugbâ u 3 + ugbâ u 4 + + + + + + + a.g + a.k + + + + + + Sěe Kɨ̀lesto + Bǎa Kɨ̀lesto + + + SK + BK + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + d E + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + kɨtîgh + + + kɨnûm + + + ndzɔŋ + + + ewɨn + + + utsuʔ + ā zūɛɛ + + tsʉtsʉ + + + tsuʔu mɨ̀ èwɨ̄n + + + â tsɨ̀ + + + tàm + + + menè + + + sɛkɔ̀n + + + dɨŋò kɨ enɨ̀gha + + + + + + , +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00¤ + + + + + + Dilàm è Yùnaetɛ Alab Emelɛ̀ + + + Kwanzà è Àŋgolà + + + Dɔlà e Ùsɨ̀tɛ̀lɛlìa + + + Dinà è Balae + + + Fàlâŋ è Bùlundì + + + Kpuwlà è Botɨshǔanà + + + Dɔlà è Kanadà + + + Fàlâŋ è Kuŋgùlê + + + Fàlâŋ è Sues + + + Yùwân Lèmembi è Chaenî + + + Kàbòvàdianù è Èsùkudò + + + Fàlâŋ è Dzìbutì + + + Dinà è Àdzɛlìa + + + Bɔ̀ŋ è Edzì + + + Nakafa è Èletɨ̀làe + + + Bîi è Etyǒkpìa + + + Yulù + + + Bɔ̀ŋ Sɨ̀telè è Bèletì + + + Sɛ̀di è Gaanà + + + Dàlasì è Gambìa + + + Fàlâŋ è Ginè + + + Lukpì è Endìa + + + Ghɨ̂n Dzàkpànê + + + Shwɨlà tɨ Kenyà + + + Fàlâŋ è Komolìa + + + Dɔlà Làebɛlìa + + + Lɔtì Lèsutù + + + Dinà è Lebìa + + + Dilàm è Mòlokò + + + Àlǐalè è Màlàgasì + + + Ùgueya è Mùlètenyìa + + + Lukpìi è Mùleshòs + + + Kwachà è Màlawè + + + Mètikà è Mùzàmbî + + + Dɔlà è Nàmibìa + + + Naelà è Gɨ̀anyɨ + + + Fàlâŋ è Lùwandà + + + Leyà è Sàwudì + + + Lukpìi è Sɛchɛ̀lɛ̀ + + + Bɔ̀ŋ è Sùdànê + + + Bɔ̀ŋ è Sɛ̀n Èlenà + + + Lyɔ̂ŋ + + + Shwɨlà è Sùmalìa + + + Dɔbàlà è Sàwu Tɔ̀me à Pèlènsipè + + + Lèlàŋgenè + + + Dinà è Tùwneshìa + + + Shwɨlà è Tàanzanyìa + + + Shwɨlà è Yùgandà + + + Dɔlà è US + + + CFA Fàlâŋ BEAC + + + CFA Fàlâŋ BCEAO + + + Lân è Afɨlekà ghɨ Emàm ghò + + + Kwachà è Zambìa (1968–2012) + + + Kwachà è Zambìa + + + Dɔlà è Zìmbagbɛ̀ + + + + + + òo:O + hǎe:H + + + + diff --git a/library/Zend/Locale/Data/agq_CM.xml b/library/Zend/Locale/Data/agq_CM.xml new file mode 100755 index 000000000..3759b9e73 --- /dev/null +++ b/library/Zend/Locale/Data/agq_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ak.xml b/library/Zend/Locale/Data/ak.xml new file mode 100755 index 000000000..7f205718b --- /dev/null +++ b/library/Zend/Locale/Data/ak.xml @@ -0,0 +1,734 @@ + + + + + + + + + + + + Akan + Amarik + Arabik + Belarus kasa + Bɔlgeria kasa + Bengali kasa + Kyɛk kasa + Gyaaman + Greek kasa + Borɔfo + Spain kasa + Pɛɛhyia kasa + Frɛnkye + Hausa + Hindi + Hangri kasa + Indonihyia kasa + Igbo + Italy kasa + Gyapan kasa + Gyabanis kasa + Kambodia kasa + Korea kasa + Malay kasa + Bɛɛmis kasa + Nɛpal kasa + Dɛɛkye + Pungyabi kasa + Pɔland kasa + Pɔɔtugal kasa + Romenia kasa + Rahyia kasa + Rewanda kasa + Somalia kasa + Sweden kasa + Tamil kasa + Taeland kasa + Tɛɛki kasa + Ukren kasa + Urdu kasa + Viɛtnam kasa + Yoruba + Kyaena kasa + Zulu + + + Andora + United Arab Emirates + Afganistan + Antigua ne Baabuda + Anguila + Albenia + Aamenia + Nɛdɛland Antelez + Angola + Agyɛntina + Amɛrika Samoa + Ɔstria + Ɔstrelia + Aruba + Azebaegyan + Bosnia ne Hɛzegovina + Baabados + Bangladɛhye + Bɛlgyium + Bɔkina Faso + Bɔlgeria + Baren + Burundi + Bɛnin + Bɛmuda + Brunae + Bolivia + Brazil + Bahama + Butan + Bɔtswana + Bɛlarus + Beliz + Kanada + Kongo (Zair) + Afrika Finimfin Man + Kongo + Swetzaland + La Côte d'Ivoire + Kook Nsupɔw + Kyili + Kamɛrun + Kyaena + Kolombia + Kɔsta Rika + Kuba + Kepvɛdfo Islands + Saeprɔs + Kyɛk Kurokɛse + Gyaaman + Gyibuti + Dɛnmak + Dɔmeneka + Dɔmeneka Kurokɛse + Ɔlgyeria + Ikuwadɔ + Ɛstonia + Nisrim + Ɛritrea + Spain + Ithiopia + Finland + Figyi + Fɔlkman Aeland + Maekronehyia + Frɛnkyeman + Gabɔn + Ahendiman Nkabom + Grenada + Gyɔgyea + Frɛnkye Gayana + Gaana + Gyebralta + Greenman + Gambia + Gini + Guwadelup + Gini Ikuweta + Greekman + Guwatemala + Guam + Gini Bisaw + Gayana + Hɔnduras + Krowehyia + Heiti + Hangari + Indɔnehyia + Aereland + Israel + India + Britenfo Hɔn Man Wɔ India Po No Mu + Irak + Iran + Aesland + Itali + Gyameka + Gyɔdan + Gyapan + Kɛnya + Kɛɛgestan + Kambodia + Kiribati + Kɔmɔrɔs + Saint Kitts ne Nɛves + Etifi Koria + Anaafo Koria + Kuwete + Kemanfo Islands + Kazakstan + Laos + Lɛbanɔn + Saint Lucia + Lektenstaen + Sri Lanka + Laeberia + Lɛsutu + Lituwenia + Laksembɛg + Latvia + Libya + Moroko + Mɔnako + Mɔldova + Madagaska + Marshall Islands + Masedonia + Mali + Miyanma + Mɔngolia + Northern Mariana Islands + Matinik + Mɔretenia + Mantserat + Mɔlta + Mɔrehyeɔs + Maldives + Malawi + Mɛksiko + Malehyia + Mozambik + Namibia + Kaledonia Foforo + Nigyɛ + Nɔfolk Aeland + Naegyeria + Nekaraguwa + Nɛdɛland + Nɔɔwe + Nɛpɔl + Naworu + Niyu + Ziland Foforo + Oman + Panama + Peru + Frɛnkye Pɔlenehyia + Papua Guinea Foforo + Philippines + Pakistan + Poland + Saint Pierre ne Miquelon + Pitcairn + Puɛto Riko + Palestaen West Bank ne Gaza + Pɔtugal + Palau + Paraguay + Kata + Reyuniɔn + Romenia + Rɔhyea + Rwanda + Saudi Arabia + Solomon Islands + Seyhyɛl + Sudan + Sweden + Singapɔ + Saint Helena + Slovinia + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + São Tomé and Príncipe + Ɛl Salvadɔ + Siria + Swaziland + Turks ne Caicos Islands + Kyad + Togo + Taeland + Tajikistan + Tokelau + Timɔ Boka + Tɛkmɛnistan + Tunihyia + Tonga + Tɛɛki + Trinidad ne Tobago + Tuvalu + Taiwan + Tanzania + Ukren + Uganda + Amɛrika + Yurugwae + Uzbɛkistan + Vatican Man + Saint Vincent ne Grenadines + Venezuela + Britainfo Virgin Islands + Amɛrika Virgin Islands + Viɛtnam + Vanuatu + Wallis ne Futuna + Samoa + Yɛmen + Mayɔte + Afrika Anaafo + Zambia + Zembabwe + + + + [a b d e ɛ f g h i k l m n o ɔ p r s t u w y] + [c j q v z] + [A B C D E Ɛ F G H I J K L M N O Ɔ P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG yy/MM/dd + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + y/M/d + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + S-Ɔ + K-Ɔ + E-Ɔ + E-O + E-K + O-A + A-K + D-Ɔ + F-Ɛ + Ɔ-A + Ɔ-O + M-Ɔ + + + Sanda-Ɔpɛpɔn + Kwakwar-Ɔgyefuo + Ebɔw-Ɔbenem + Ebɔbira-Oforisuo + Esusow Aketseaba-Kɔtɔnimba + Obirade-Ayɛwohomumu + Ayɛwoho-Kitawonsa + Difuu-Ɔsandaa + Fankwa-Ɛbɔ + Ɔbɛsɛ-Ahinime + Ɔberɛfɛw-Obubuo + Mumu-Ɔpɛnimba + + + + + + + Kwe + Dwo + Ben + Wuk + Yaw + Fia + Mem + + + Kwesida + Dwowda + Benada + Wukuda + Yawda + Fida + Memeneda + + + + + K + D + B + W + Y + F + M + + + + + + + AN + EW + + + + + + Ansa Kristo + Kristo Ekyiri + + + AK + KE + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + y/M/d + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Bere + + + Afe + + + Bosome + + + Dapɛn + + + Da + Ndeda + Ndɛ + Ɔkyena + + + Dapɛn mu da + + + Da bere + + + Dɔnhwer + + + Sema + + + Sɛkɛnd + + + Bere apaamu + + + + + + . + , + + + + + ¤#,##0.00 + + + + + + Ɛmirete Arab Nkabɔmu Deram + + + Angola Kwanza + + + Ɔstrelia Dɔla + + + Baren Dina + + + Burundi Frank + + + Botswana Pula + + + Kanada Dɔla + + + Kongo Frank + + + Yuan + + + Ɛskudo + + + Gyebuti Frank + + + Ɔlgyeria Dina + + + Egypt Pɔn + + + Ɛretereya Nakfa + + + Itiopia Bir + + + Iro + + + Breten Pɔn + + + Ghana Sidi (1979–2007) + + + Ghana Sidi + GH₵ + + + Gambia Dalasi + + + Gini Frank + + + India Rupi + + + Gyapan Yɛn + + + Kenya Hyelen + + + Komoro Frank + + + Laeberia Dɔla + + + Lesoto Loti + + + Libya Dina + + + Moroko Diram + + + Madagasi Frank + + + Mɔretenia Ouguiya + + + Mɔrehyeɔs Rupi + + + Malawi Kwacha + + + Mozambik Metical + + + Namibia Dɔla + + + Naegyeria Naira + + + Rewanda Frank + + + Saudi Riyal + + + Seyhyɛls Rupi + + + Sudan Dina + + + Sudan Pɔn + + + St Helena Pɔn + + + Leone + + + Somailia Hyelen + + + Sao Tome ne Principe Dobra + + + Lilangeni + + + Tunisia Dina + + + Tanzania Hyelen + + + Uganda Hyelen + + + Amɛrika Dɔla + + + Sefa + + + Afrika Anaafo Rand + + + Zambia Kwacha (1968–2012) + + + Zambia Kwacha + + + Zimbabwe Dɔla + + + + + + Yiw:Y + Daabi:D + + + + diff --git a/library/Zend/Locale/Data/ak_GH.xml b/library/Zend/Locale/Data/ak_GH.xml new file mode 100755 index 000000000..88e122914 --- /dev/null +++ b/library/Zend/Locale/Data/ak_GH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/am.xml b/library/Zend/Locale/Data/am.xml new file mode 100755 index 000000000..4d113194b --- /dev/null +++ b/library/Zend/Locale/Data/am.xml @@ -0,0 +1,5280 @@ + + + + + + + + + + + + {0} ({1}) + {0},{1} + {0}: {1} + + + አፋርኛ + አብሐዚኛ + አኮሊኛ + አፍሪካንኛ + አካንኛ + አማርኛ + ዐርቢኛ + ዘመናዊ መደበኛ አረብኛ + አሳሜዛዊ + አያማርኛ + አዘርባጃንኛ + አዜሪ + ባስኪርኛ + ቤላራሻኛ + ቤምባ + ቡልጋሪኛ + ቢስላምኛ + ቤንጋሊኛ + ቲቤታንኛ + ብሬቶንኛ + ቦስኒያንኛ + ብሊን + ካታላንኛ + ቼሮኬኛ + የሶራኒ ኩርድኛ + ኮርሲካኛ + ቼክኛ + ወልሽ + ዴኒሽ + ጀርመን + የኦስትሪያ ጀርመን + የስዊዝ ከፍተኛ ጀርመንኛ + ዲቬህ + ድዞንግኻኛ + ኢዊ + ኤፊክ + ግሪክኛ + እንግሊዝኛ + የአውስትራሊያ እንግሊዝኛ + የካናዳ እንግሊዝኛ + የብሪቲሽ እንግሊዝኛ + የዩናይትድ ኪንግደም እንግሊዝኛ + የአሜሪካ እንግሊዝኛ + የዩ ኤስ እንግሊዝኛ + ኤስፐራንቶ + ስፓኒሽ + የላቲን አሜሪካ ስፓኒሽ + የአውሮፓ እስፓንኛ + ኢስቶኒያንኛ + ባስክኛ + ፐርሺያኛ + ፊኒሽ + ፊሊፒንኛ + ፊጂኛ + ፋሮኛ + ፈረንሳይኛ + የካናዳ ፈረንሳይኛ + የስዊዝ ፈረንሳይኛ + የምዕራብ ፍሪስኛ + አይሪሽ + + እስኮትስ ጌልክኛ + ግዕዝኛ + ጌሊክ + ጓራኒኛ + የስዊዝ ጀርመን + ጉጃርቲኛ + ሃውሳኛ + ሃዊያኛ + ዕብራስጥ + ሒንዱኛ + ክሮሽያንኛ + ሃይትኛ + ሀንጋሪኛ + አርመናዊ + ኢንቴርሊንጓ + ኢንዶኔዥኛ + እንተርሊንግወ + ኢግቦኛ + እኑፒያቅኛ + አይስላንድኛ + ጣሊያንኛ + እኑክቲቱትኛ + ጃፓንኛ + ጃቫንኛ + ጆርጂያን + ኮንጎኛ + ካዛክኛ + ካላሊሱትኛ + ክመርኛ ማእከላዊ + ካናዳኛ + ኮሪያኛ + ካሽሚርኛ + ኩርድሽኛ + ኪርጊዝኛ + ላቲንኛ + ሉክዘምበርገርኛ + ጋንዳኛ + ሊንጋላኛ + ላውስኛ + ሎዚኛ + ሉቴንያንኛ + ሉባ-ሉሏ + ላትቪያን + ሞሪሲየኛ + ማላጋስኛ + ማዮሪኛ + ማሴዶንኛ + ማላያላምኛ + ሞንጎላዊኛ + ማራቲኛ + ማላይኛ + ማልቲስኛ + ቡርማኛ + ናኡሩ + የኖርዌይ ቦክማል + ሰሜን ንዴብሌ + ኔፓሊኛ + ደች + ፍሌሚሽ + የኖርዌይ ናይኖርስክ + ኖርዌጂያን + ሰሜናዊ ሶቶ + ንያንጃ + ኒያንኮልኛ + ኦኪታንኛ + ኦሮሞኛ + ኦሪያኛ + ኦሴቲክ + ፑንጃብኛ + ፖሊሽኛ + ፓሽቶኛ + ፑሽቶ + ፖርቹጋልኛ + የብራዚል ፖርቹጋልኛ + የአውሮፓ ፖርቹጋልኛ + ኵቿኛ + ሮማንሽ + ሩንዲኛ + ሮማኒያን + ሞልዳቫዊና + ራሽኛ + ኪንያርዋንድኛ + ሳንስክሪትኛ + ሲንድሂኛ + ሰሜናዊ ሳሚ + ሳንጎኛ + ሰርቦ-ክሮኤሽያኛ + ሲንሃልኛ + ሲዳምኛ + ስሎቫክኛ + ስሎቪኛ + ሳሞአኛ + ሾናኛ + ሱማልኛ + ልቤኒኛ + ሰርቢኛ + ስዋቲኛ + ሶዞኛ + ሱዳንኛ + ስዊድንኛ + ስዋሂሊኛ + ታሚልኛ + ተሉጉኛ + ቴተም + ታጂኪኛ + ታይኛ + ትግርኛ + ትግረ + ቱርክመንኛ + ታጋሎገኛ + ክሊንጎንኛ + ጽዋናዊኛ + ቶንጋኛ + ቶክ ፒሲን + ቱርክኛ + ጾንጋኛ + ታታርኛ + ቱምቡካ + ትዊኛ + ታሂታንኛ + ኡዊግሁርኛ + ኡይገር + ዩክሬንኛ + ያልታወቀ ቋንቋ + ኡርዱኛ + ኡዝቤክኛ + ቬንዳ + ቪትናምኛ + ቮላፑክኛ + ዎሎፍኛ + ዞሳኛ + ይዲሽኛ + ዮሩባዊኛ + ዡዋንግኛ + zgh + ቻይንኛ + ቀለል ያለ ቻይንኛ + ባህላዊ ቻይንኛ + ዙሉኛ + ቋንቋዊ ይዘት አይደለም + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ዓለም + አፍሪካ + ሰሜን አሜሪካ + ደቡብ አሜሪካ + ኦሽኒአ + ምስራቃዊ አፍሪካ + መካከለኛው አሜሪካ + ምዕራባዊ አፍሪካ + ሰሜናዊ አፍሪካ + መካከለኛው አፍሪካ + ደቡባዊ አፍሪካ + አሜሪካ + ሰሜናዊ አሜሪካ + ካሪቢያን + ምዕራባዊ እሲያ + ደቡባዊ እሲያ + ምዕራባዊ ደቡብ እሲያ + ደቡባዊ አውሮፓ + አውስትራሊያ + ሜላኔዥያ + የማይክሮኔዥያን ክልል + ፖሊኔዥያ + እሲያ + መካከለኛው እሲያ + ምስራቃዊ እሲያ + አውሮፓ + ምዕራባዊ አውሮፓ + ሰሜናዊ አውሮፓ + ምስራቃዊ አውሮፓ + ላቲን አሜሪካ + አሴንሽን ደሴት + አንዶራ + የተባበሩት አረብ ኤምሬትስ + አፍጋኒስታን + አንቲጓ እና ባሩዳ + አንጉኢላ + አልባኒያ + አርሜኒያ + ኔዘርላንድስ አንቲልስ + አንጐላ + አንታርክቲካ + አርጀንቲና + የአሜሪካ ሳሞአ + ኦስትሪያ + አውስትሬሊያ + አሩባ + የአላንድ ደሴቶች + አዘርባጃን + ቦስኒያ እና ሄርዞጎቪኒያ + ባርቤዶስ + ባንግላዲሽ + ቤልጄም + ቡርኪና ፋሶ + ቡልጌሪያ + ባህሬን + ብሩንዲ + ቤኒን + ቅዱስ በርቴሎሜ + ቤርሙዳ + ብሩኒ + ቦሊቪያ + የካሪቢያን ኔዘርላንድስ + ብራዚል + ባሃማስ + ቡህታን + ቡቬት ደሴት + ቦትስዋና + ቤላሩስ + ቤሊዘ + ካናዳ + ኮኮስ(ኬሊንግ) ደሴቶች + ኮንጎ-ኪንሻሳ + ኮንጎ (የዲሞክራቲክ ሪፐብሊክ ኮንጎ) + የመካከለኛው አፍሪካ ሪፐብሊክ + ኮንጎ ብራዛቪል + ኮንጎ (ሪፐብሊክ) + ስዊዘርላንድ + ኮት ዲቯር + አይቮሪኮስት + ኩክ ደሴቶች + ቺሊ + ካሜሩን + ቻይና + ኮሎምቢያ + ክሊፐርቶን ደሴት + ኮስታ ሪካ + ኩባ + ኬፕ ቬርዴ + ኩራሳዎ + የገና ደሴት + ሳይፕረስ + ቼክ ሪፑብሊክ + ጀርመን + ዲዬጎ ጋርሺያ + ጂቡቲ + ዴንማርክ + ዶሚኒካ + ዶሚኒክ ሪፑብሊክ + አልጄሪያ + ሴኡታና ሜሊላ + ኢኳዶር + ኤስቶኒያ + ግብጽ + ምዕራባዊ ሳህራ + ኤርትራ + ስፔን + ኢትዮጵያ + የአውሮፓ ህብረት + ፊንላንድ + ፊጂ + የፎልክላንድ ደሴቶች + ፎክላንድ ደሴቶች (ኢስላስ ማልቪናስ) + ሚክሮኔዢያ + የፋሮ ደሴቶች + ፈረንሳይ + ጋቦን + እንግሊዝ + ዩናይትድ ኪንግደም + ግሬናዳ + ጆርጂያ + የፈረንሳይ ጉዊአና + ጉርነሲ + ጋና + ጊብራልታር + ግሪንላንድ + ጋምቢያ + ጊኒ + ጉዋደሉፕ + ኢኳቶሪያል ጊኒ + ግሪክ + ደቡብ ጆርጂያ እና የደቡብ ሳንድዊች ደሴቶች + ጉዋቲማላ + ጉዋም + ጊኒ ቢሳኦ + ጉያና + ሆንግ ኮንግ SAR ቻይና + ሆንግ ኮንግ + ኽርድ ደሴቶችና ማክዶናልድ ደሴቶች + ሆንዱራስ + ክሮኤሽያ + ሀይቲ + ሀንጋሪ + የካናሪ ደሴቶች + ኢንዶኔዢያ + አየርላንድ + እስራኤል + አይል ኦፍ ማን + ህንድ + የብሪታኒያ ህንድ ውቂያኖስ ግዛት + ኢራቅ + ኢራን + አይስላንድ + ጣሊያን + ጀርሲ + ጃማይካ + ጆርዳን + ጃፓን + ኬንያ + ኪርጊስታን + ካምቦዲያ + ኪሪባቲ + ኮሞሮስ + ቅዱስ ኪትስ እና ኔቪስ + ሰሜን ኮሪያ + ደቡብ ኮሪያ + ክዌት + ካይማን ደሴቶች + ካዛኪስታን + ላኦስ + ሊባኖስ + ሴንት ሉቺያ + ሊችተንስታይን + ሲሪላንካ + ላይቤሪያ + ሌሶቶ + ሊቱዌኒያ + ሉክሰምበርግ + ላትቪያ + ሊቢያ + ሞሮኮ + ሞናኮ + ሞልዶቫ + ሞንተኔግሮ + ሴንት ማርቲን + ማዳጋስካር + ማርሻል አይላንድ + ማከዶኒያ + መቄዶንያ (የቀድሞ የዩጎስላቭ መቄዶንያ ሪፐብሊክ) + ማሊ + ማይናማር(በርማ) + ሞንጎሊያ + ማካኡ ልዩ የአስተዳደር ክልል ቻይና + ማካኡ + የሰሜናዊ ማሪያና ደሴቶች + ማርቲኒክ + ሞሪቴኒያ + ሞንትሴራት + ማልታ + ማሩሸስ + ማልዲቭስ + ማላዊ + ሜክሲኮ + ማሌዢያ + ሞዛምቢክ + ናሚቢያ + ኒው ካሌዶኒያ + ኒጀር + ኖርፎልክ ደሴት + ናይጄሪያ + ኒካራጓ + ኔዘርላንድ + ኖርዌ + ኔፓል + ናኡሩ + ኒኡይ + ኒው ዚላንድ + ኦማን + ፓናማ + ፔሩ + የፈረንሳይ ፖሊኔዢያ + ፓፑዋ ኒው ጊኒ + ፊሊፒንስ + ፓኪስታን + ፖላንድ + ቅዱስ ፒዬር እና ሚኩኤሎን + ፒትካኢርን አይስላንድ + ፖርታ ሪኮ + የፍልስጤም ግዛት + ፍልስጥኤም + ፖርቱጋል + ፓላው + ፓራጓይ + ኳታር + አውትላይንግ ኦሽንያ + ሪዩኒየን + ሮሜኒያ + ሰርብያ + ራሺያ + ሩዋንዳ + ሳውድአረቢያ + ሰሎሞን ደሴት + ሲሼልስ + ሱዳን + ስዊድን + ሲንጋፖር + ሴንት ሄለና + ስሎቬኒያ + ስቫልባርድ እና ጃን ማየን + ስሎቫኪያ + ሴራሊዮን + ሳን ማሪኖ + ሴኔጋል + ሱማሌ + ሱሪናም + ደቡብ ሱዳን + ሳኦ ቶሜ እና ፕሪንሲፔ + ኤል ሳልቫዶር + ሲንት ማርተን + ሲሪያ + ሱዋዚላንድ + ትሪስታን ዲ ኩንሃ + የቱርኮችና የካኢኮስ ደሴቶች + ቻድ + የፈረንሳይ ደቡባዊ ግዛቶች + ቶጐ + ታይላንድ + ታጃኪስታን + ቶክላው + ምስራቅ ሌስት + ምስራቅ ቲሞር + ቱርክሜኒስታን + ቱኒዚያ + ቶንጋ + ቱርክ + ትሪናዳድ እና ቶቤጎ + ቱቫሉ + ታይዋን + ታንዛኒያ + ዩክሬን + ዩጋንዳ + የዩ ኤስ ጠረፍ ላይ ያሉ ደሴቶች + ዩናይትድ ስቴትስ + US + ኡራጓይ + ዩዝበኪስታን + ቫቲካን ከተማ + ቅዱስ ቪንሴንት እና ግሬናዲንስ + ቬንዙዌላ + የእንግሊዝ ድንግል ደሴቶች + የአሜሪካ ቨርጂን ደሴቶች + ቬትናም + ቫኑአቱ + ዋሊስ እና ፉቱና ደሴቶች + ሳሞአ + ኮሶቮ + የመን + ሜይኦቴ + ደቡብ አፍሪካ + ዛምቢያ + ዚምቧቤ + ያልታወቀ ክልል + + + የቀን አቆጣጠር + የምልክቶች ድርደራ ችላ በለው + የኋሊዮሽ የፊደል ጭረት ድርደራ + የአቢይ/ንዑስ ሆሄ ቅደም ተከተል + የመልከፊደል ትብ ድርደራ + የካና ድርደራ + አቀማመጥ ደርድር + መደበኛ ድርደራ + የቁጥር ድርደራ + የድርደራ አቅም + ገንዘብ + ቁጥሮች + የሰዓት ሰቅ + የአካባቢ አይነት + እንደምልክቶች ደርድር + ለግል ጥቅም + + + የአረቢክ-ኢንዲክ አሃዞች + የተራዘሙ የአረቢክ-ኢንዲክ አሃዞች + የአርመንኛ ቁጥሮች + የአሜሪካን ንዑስ ሆሄ አሃዞች + የቤንጋሊ አሃዞች + የባህላዊ ቻይንኛ የድርድር ቅደም ተከተል - ትልቅ5 + የቡዲስት ቀን አቆጣጠር + የቻይና የቀን አቆጣጠር + የኮፕቲክ የቀን አቆጣጠር + የዴቫንጋሪ አሃዞች + የመዝገበ ቃላት የድርድር ቅደም ተከተል + የነባሪ ዩኒኮድ የድርድር ቅደም ተከተል + የኢትዮፒክ ቁጥሮች + የኢትዮጵያ የቀን አቆጣጠር + የኢትዮፒክ አመተ አለም የቀን አቆጣጠር + የፋይናንስ ቁጥሮች + የሙሉ ወርድ አሃዞች + የቀለለ የቻይንኛ የድርደራ ቅደም ተከተል - GB2312 + የጆርጂያን ቁጥሮች + የግሪጎሪያን ቀን አቆጣጠር + የግሪክ ቁጥሮች + የግሪክ ንዑስ ሆሄ ቁጥሮች + የጉጃራቲ አሃዞች + የጉርሙኪ አሃዞች + የቻይንኛ አስርዮሽ ቁጥሮች + ቀለል ያሉ የቻይንኛ ቁጥሮች + ቀለል ያሉ የቻይንኛ ገንዘብ ነክ ቁጥሮች + የባህላዊ ቻይንኛ ቁጥሮች + የባህላዊ ቻይንኛ የገንዘብ ነክ ቁጥሮች + የእብራይስጥ ቁጥሮች + የእብራዊያን የቀን አቆጣጠር + ሁሉንም ደርድር + የህንድ ብሔራዊ የቀን አቆጣጠር + የእስላማዊ የሰዓት አቆጣጠር + የእስላም ህዝባዊ የቀን አቆጣጠር + የጃፓን የቀን አቆጣጠር + የጃፓንኛ ቁጥሮች + የጃፓንኛ የገንዘብ ነክ ቁጥሮች + የክህመር አሃዞች + የካንአዳ አሃዞች + የላኦ አሃዞች + የምስራቃዊ አሃዞች + ንዑስ ሆሄ መጀመሪያ ደርድር + የማላያላምኛ አሃዞች + የሞንጎልኛ አሃዞች + የማያንማር አሃዞች + ትውልድ አሃዞች + የፊደል ጭረቶችን እንደመደበኛ ደርድር + መደበኛ የመልከፊደል አቀማመጥ ደርድር + ያለመልከፊደል ትብ ደርድር + ካና ለይተህ ደርድር + ያለመደበኛ ሁኔታ ደርድር + አሃዞችን በየግል ደርድር + ምልክቶችን ደርድር + የኦሪያኛ አሃዞች + የፐርሽያ የቀን አቆጣጠር + የስልክ ደብተር ድርድር ቅደም ተከተል + የፎነቲክ ድርደራ ቅደም ተከተል + ፒንይን የድርድር ቅደም ተከተል + የመሠረት ፊደላት ብቻ ደርድር + የፊደል ጭረቶች/መልከፊደል/ስፋት/ካና ደርድር + ዳግም የተፈጠረ የድርድር ቅደም ተከተል + የሚንጉ የቀን አቆጣጠር + የሮማን ቁጥሮች + የሮማን ንዑስ ሆሄ ቁጥሮች + ለጠቅላላ ጉዳይ ፍለጋ + በሃንጉል የመጀመሪያ ተነባቢ ፈልግ + የፊደል ጭረቶችን ደርድር + ችላ ባይ ምልክቶችን ደርድር + የበትር ድርድር ቅደም ተከተል + ባህላዊ የታሚል ቁጥሮች + የታሚል አሃዞች + የተልጉ አሃዞች + የፊደል ጭረቶች/መልከፊደል/ስፋት ደርድር + የታይ አሃዞች + የቲቤታን አሃዞች + ባህላዊ የድርድር ቅደም ተከተል + ተለምዷዊ ቁጥሮች + የመሰረታዊ በትር ድርድር ቅደም ተከተል + አቢይ ሆሄ መጀመሪያ ደርድር + የቫይ አሃዞች + የፊደል ጭረቶች በኋሊዮሽ ደርድር + በመልከፊደል ትብ ደርድር + ካና ለይተህ ደርድር + ዩኒኮድ በመደበኛ ሁኔታ ደርድር + አሃዞች በቁጥር ደርድር + + + ቢ ጂ ኤን + አሃዛዊ + የድምፅ ቃና + UNGEGN + ትእምርት + ሙሉ ወርድ + ሃልፍዊድዝ + ጃሞ + ፒንዪን + ማሳተም + + + ሜትሪክ + ዩኬ + ዩ ኤስ + + + {0} + {0} + {0} + + + + [ሀ ሁ ሂ ሃ ሄ ህ ሆ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቈ ቊ ቋ ቌ ቍ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኈ ኊ ኋ ኌ ኍ ነ ኑ ኒ ና ኔ ን ኖ ኗ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ከ ኩ ኪ ካ ኬ ክ ኮ ኰ ኲ ኳ ኴ ኵ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ወ ዉ ዊ ዋ ዌ ው ዎ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ገ ጉ ጊ ጋ ጌ ግ ጎ ጐ ጒ ጓ ጔ ጕ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ጰ ጱ ጲ ጳ ጴ ጵ ጶ ጷ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፀ ፁ ፂ ፃ ፄ ፅ ፆ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ] + [] + [ሀ ለ ሐ መ ሠ ረ ሰ ሸ ቀ ቈ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጠ ጨ ጰ ጸ ፀ ፈ ፐ] + [‐ – , ፡ ፣ ፤ ፥ ፦ ! ? . ። ‹ › « » ( ) \[ \]] + {0}… + …{0} + {0}…{1} + ? + + + « + » + + + + + + + + + ዓ/ዓ + ዓ/ም + + + + + + + + መስከ + ጥቅም + ኅዳር + ታኅሣ + ጥር + የካቲ + መጋቢ + ሚያዝ + ግንቦ + ሰኔ + ሐምሌ + ነሐሴ + ጳጉሜ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + መስከረም + ጥቅምት + ኅዳር + ታኅሣሥ + ጥር + የካቲት + መጋቢት + ሚያዝያ + ግንቦት + ሰኔ + ሐምሌ + ነሐሴ + ጳጉሜን + + + + + መስከ + ጥቅም + ኅዳር + ታኅሣ + ጥር + የካቲ + መጋቢ + ሚያዝ + ግንቦ + ሰኔ + ሐምሌ + ነሐሴ + ጳጉሜ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + መስከረም + ጥቅምት + ኅዳር + ታኅሣሥ + ጥር + የካቲት + መጋቢት + ሚያዝያ + ግንቦት + ሰኔ + ሐምሌ + ነሐሴ + ጳጉሜን + + + + + + + EEEE፣ MMMM d ቀን y G + + + + + + + + + EEEE፣ d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM፣ y G + MMM d፣ y G + E MMM d፣ y G + h a + H + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E፣ M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E፣ d/M/y + MMM y + d MMM y + E፣ MMM d y + MMMM y + QQQ y + QQQQ y + G y + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h – h a + + + HH–HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h – h a v + + + HH–HH v + + + M–M + + + d–d/M + d/M – d/M + + + E d/M – E d/M + E፣ d/M – E፣ d/M + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E d – E d፣ MMM + E፣ MMM d – E፣ MMM d + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E፣ d/M/y – E፣ d/M/y + E d/M/ – E d/M፣ y + E፣ d/M/y – E፣ d/M/y + + + MMM–MMM፣ y + MMM y – MMM y + + + MMM d–d፣ y + MMM d – MMM d፣ y + MMM d፣ y – MMM d፣ y + + + E MMM d – E MMM d፣ y + E MMM d – E MMM d፣ y + E፣ MMM d፣ y – E፣ MMM d፣ y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + ጃንዩ + ፌብሩ + ማርች + ኤፕሪ + ሜይ + ጁን + ጁላይ + ኦገስ + ሴፕቴ + ኦክተ + ኖቬም + ዲሴም + + + + + + + + + + + + + + + + + ጃንዩወሪ + ፌብሩወሪ + ማርች + ኤፕሪል + ሜይ + ጁን + ጁላይ + ኦገስት + ሴፕቴምበር + ኦክተውበር + ኖቬምበር + ዲሴምበር + + + + + ጃንዩ + ፌብሩ + ማርች + ኤፕሪ + ሜይ + ጁን + ጁላይ + ኦገስ + ሴፕቴ + ኦክቶ + ኖቬም + ዲሴም + + + + + + + + + + + + + + + + + ጃንዩወሪ + ፌብሩወሪ + ማርች + ኤፕሪል + ሜይ + ጁን + ጁላይ + ኦገስት + ሴፕቴምበር + ኦክቶበር + ኖቬምበር + ዲሴምበር + + + + + + + እሑድ + ሰኞ + ማክሰ + ረቡዕ + ሐሙስ + ዓርብ + ቅዳሜ + + + + + + + + + + + + + + + + + + + + + እሑድ + ሰኞ + ማክሰኞ + ረቡዕ + ሐሙስ + ዓርብ + ቅዳሜ + + + + + እሑድ + ሰኞ + ማክሰ + ረቡዕ + ሐሙስ + ዓርብ + ቅዳሜ + + + + + + + + + + + + + + + + + + + + + እሑድ + ሰኞ + ማክሰኞ + ረቡዕ + ሐሙስ + ዓርብ + ቅዳሜ + + + + + + + ሩብ1 + ሩብ2 + ሩብ3 + ሩብ4 + + + 1 + 2 + 3 + 4 + + + 1ኛው ሩብ + ሁለተኛው ሩብ + 3ኛው ሩብ + 4ኛው ሩብ + + + + + ሩብ1 + ሩብ2 + ሩብ3 + ሩብ4 + + + 1 + 2 + 3 + 4 + + + 1ኛው ሩብ + 2ኛው ሩብ + 3ኛው ሩብ + 4ኛው ሩብ + + + + + + + ጥዋት + ከሰዓት + + + + + + ዓመተ ዓለም + ዓመተ ምሕረት + + + ዓ/ዓ + ዓ/ም + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + MMM d፣ y G + E፣ MMM d፣ y G + h a + H + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E፣ d/M/y + MMM y + d MMM y + E፣ MMM d y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h – h a + + + HH–HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h – h a v + + + HH–HH v + + + M–M + + + d–d/M + d/M – d/M + + + E d/M – E d/M + E፣ d/M – E፣ d/M + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E d – E d፣ MMM + E፣ MMM d – E፣ MMM d + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E፣ d/M/y – E፣ d/M/y + E d/M/ – E d/M፣ y + E፣ d/M/y – E፣ d/M/y + + + MMM–MMM፣ y + MMM y – MMM y + + + MMM d–d፣ y + MMM d – MMM d፣ y + MMM d፣ y – MMM d፣ y + + + E MMM d – E MMM d፣ y + E MMM d – E MMM d፣ y + E፣ MMM d፣ y – E፣ MMM d፣ y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + ሙሀረም + ሳፈር + ረቢዑል አወል + ረቢዑል አኺር + ጀማደል አወል + ጀማደል አኺር + ረጀብ + ሻእባን + ረመዳን + ሸዋል + ዙልቂዳህ + ዙልሂጃህ + + + + + + + + ዘመን + + + ዓመት + ያለፈው ዓመት + በዚህ ዓመት + የሚቀጥለው ዓመት + + በ{0} ዓመታት ውስጥ + በ{0} ዓመታት ውስጥ + + + ከ{0} ዓመት በፊት + ከ{0} ዓመታት በፊት + + + + ወር + ያለፈው ወር + በዚህ ወር + የሚቀጥለው ወር + + በ{0} ወር ውስጥ + በ{0} ወራት ውስጥ + + + ከ{0} ወር በፊት + ከ{0} ወራት በፊት + + + + ሳምንት + ባለፈው ሳምንት + በዚህ ሣምንት + የሚቀጥለው ሳምንት + + በ{0} ሳምንት ውስጥ + በ{0} ሳምንታት ውስጥ + + + ከ{0} ሳምንት በፊት + ከ{0} ሳምንታት በፊት + + + + ቀን + ከትናንት ወዲያ + ትናንት + ዛሬ + ነገ + ከነገ ወዲያ + + በ{0} ቀን ውስጥ + በ{0} ቀናት ውስጥ + + + ከ{0} ቀን በፊት + ከ{0} ቀናት በፊት + + + + አዘቦት + + + ያለፈው እሑድ + የአሁኑ እሑድ + የሚቀጥለው እሑድ + + + ያለፈው ሰኞ + የአሁኑ ሰኞ + የሚቀጥለው ሰኞ + + + ያለፈው ማክሰኞ + የአሁኑ ማክሰኞ + የሚቀጥለው ማክሰኞ + + + ያለፈው እሮብ + የአሁኑ እሮብ + የሚቀጥለው እሮብ + + + ያለፈው ሐመስ + የአሁኑ ሐሙስ + የሚቀጥለው ሐሙስ + + + ያለፈው አርብ + የአሁኑ አርብ + የሚቀጥለው አርብ + + + የባለፈው ቅዳሜ + የአሁኑ ቅዳሜ + የሚቀጥለው ቅዳሜ + + + ጥዋት/ከሰዓት + + + ሰዓት + + በ{0} ሰዓት ውስጥ + በ{0} ሰዓቶች ውስጥ + + + ከ{0} ሰዓት በፊት + ከ{0} ሰዓቶች በፊት + + + + ደቂቃ + + በ{0} ደቂቃ ውስጥ + በ{0} ደቂቃዎች ውስጥ + + + ከ{0} ደቂቃ በፊት + ከ{0} ደቂቃዎች በፊት + + + + ሰከንድ + አሁን + + በ{0} ሰከንድ ውስጥ + በ{0} ሰከንዶች ውስጥ + + + ከ{0} ሰከንድ በፊት + ከ{0} ሰከንዶች በፊት + + + + የሰዓት ሰቅ + + + + +HHmm;-HHmm + ጂ ኤም ቲ{0} + ጂ ኤም ቲ + {0} ጊዜ + {0} የቀን ብርሃን ሰዓት + {0} መደበኛ ሰዓት + {1} ({0}) + + ያልታወቀ ከተማ + + + አንዶራ + + + ዱባይ + + + ካቡል + + + አንቲጓ + + + አንጉይላ + + + ቴራን + + + ይሬቫን + + + ሉአንዳ + + + ሮቴራ + + + ፓልመር + + + ስዮዋ + + + ናውሰን + + + ዳቪስ + + + ቭስቶክ + + + ካዚይ + + + ደሞንት ዲኡርቪል + + + ማክመርዶ + + + ሪዮ ጋሌጎስ + + + ሜንዶዛ + + + ሳን ጁአን + + + ኡሹአኢ + + + ላ ሪኦጃ + + + ሳን ሊውስ + + + ካታማርካ + + + ሳልታ + + + ጁጁይ + + + ቱኩማን + + + ኮርዶባ + + + ቦነስ አይረስ + + + ፓጎ ፓጎ + + + ቪየና + + + ፐርዝ + + + ኡክላ + + + ዳርዊን + + + አዴሌእድ + + + ብሮክን ሂል + + + ከሪ + + + ሜልቦርን + + + ሆባርት + + + ሊንድማን + + + ሲድኒ + + + ብሪስቤን + + + ማከሪ + + + ሎርድ ሆዊ + + + አሩባ + + + ሜሪሃምን + + + ባኩ + + + ሳሪየቮ + + + ባርቤዶስ + + + ዳካ + + + ብራስል + + + ኡጋዱጉ + + + ሶፊያ + + + ባህሬን + + + ቡጁምብራ + + + ፖርቶ - ኖቮ + + + ቅድስት ቤርተሎሜ + + + ቤርሙዳ + + + ብሩናይ + + + ላ ፓዝ + + + ክራለንዲይክ + + + ኢሩኔፕ + + + ሪዮ ብራንኮ + + + ፔትሮ ቬልሆ + + + ቦአ ቪስታ + + + ማናኡስ + + + ኩየአባ + + + ሳንታሬም + + + ካምፖ ግራንዴ + + + ቤለም + + + አራጉየና + + + ሴኦ ፖሎ + + + ባሂአ + + + ፎርታሌዛ + + + ሜሲኦ + + + ፓሲፍ + + + ኖሮኛ + + + ናሳው + + + ቲምፉ + + + ጋቦሮን + + + ሚንስክ + + + ቤሊዝ + + + ዳውሰን + + + ኋይትሆርስ + + + ኢኑቪክ + + + ቫንኮቨር + + + ዳውሰን ክሬክ + + + ክረስተን + + + የሎውናይፍ + + + ኤድመንተን + + + የሐዋላ ገንዘብ + + + ካምብሪጅ ቤይ + + + ረጂና + + + ዊኒፔግ + + + ቆራጥ + + + ሬኒ ሪቨር + + + ራንኪን ኢንሌት + + + አቲኮካን + + + ተንደር ቤይ + + + ኒፒጎን + + + ቶሮንቶ + + + ኢኳሊውት + + + ፓንግኒርተንግ + + + ሞንክቶን + + + ሃሊፋክስ + + + ጉዝ ቤይ + + + ግሌስ ቤይ + + + ብላንክ- ሳብሎን + + + ቅዱስ ዮሐንስ + + + ኮኮስ + + + ኪንሳሻ + + + ሉቡምባሺ + + + ባንጉኢ + + + ብራዛቪል + + + ዙሪክ + + + አቢጃን + + + ራሮቶንጋ + + + ፋሲካ + + + ሳንቲያጎ + + + ዱአላ + + + ካሽጋር + + + ኡሩምኪ + + + ቾንግኪንግ + + + ሸንጋይ + + + ሃሪቢን + + + ቦጎታ + + + ኮስታሪካ + + + ሃቫና + + + ኬፕ ቬርደ + + + ኩራሳዎ + + + ገና + + + ኒኮሲአ + + + ፕራግ + + + ቡሲንገን + + + በርሊን + + + ጅቡቲ + + + ኮፐንሃገን + + + ዶሜኒካ + + + ሳንቶ ዶሚንጎ + + + አልጀርስ + + + ጋላፓጎስ + + + ጉያኩይል + + + ታሊን + + + ካይሮ + + + ኤል አዩአን + + + አስመራ + + + ካናሪ + + + ሲኡታ + + + ማድሪድ + + + አዲስ አበባ + + + ሄልሲንኪ + + + ፊጂ + + + ስታንሌይ + + + ቹክ + + + ፖህንፔ + + + ኮስሬ እ + + + ፋሮእ + + + ፓሪስ + + + ሊብርልቪል + + + ለንደን + + + ግሬናዳ + + + ትብሊሲ + + + ካይንኤ + + + ጉርነሲ + + + አክራ + + + ጂብራልታር + + + ቱሌ + + + ጋድታብ + + + ስኮርስባይሰንድ + + + ዳንማርክሻቭን + + + ባንጁል + + + ኮናክሬ + + + ጕዳሉፕ + + + ማሌቦ + + + አቴንስ + + + ደቡብ ጆርጂያ + + + ጓቲማላ + + + ጉአም + + + ቢሳኦ + + + ጉያና + + + ሆንግ ኮንግ + + + ቴጉሲጋልፓ + + + ዛግረብ + + + ፖርት ኦ ፕሪንስ + + + ቡዳፔስት + + + ጃካርታ + + + ፖንቲአናክ + + + ማካሳር + + + ጃያፑራ + + + ደብሊን + + + እየሩሳሌም + + + አይስል ኦፍ ማን + + + ኮልካታ + + + ቻጎስ + + + ባግዳድ + + + ቴህራን + + + ሬይክጃቪክ + + + ሮም + + + ጀርሲ + + + ጃማይካ + + + አማን + + + ቶኪዮ + + + ናይሮቢ + + + ቢሽኬክ + + + ፍኖም ፔንህ + + + ኢንደርበሪ + + + ኪሪቲማቲ + + + ታራዋ + + + ኮሞሮ + + + ቅዱስ ኪትስ + + + ፕዮንግያንግ + + + ሴኦል + + + ኩዌት + + + ካይማን + + + አኩታኡ + + + ኦራል + + + አኩቶቤ + + + ኩይዚሎርዳ + + + አልማትይ + + + ቬንቲአን + + + ቤሩት + + + ቅድስት ሉሲያ + + + ቫዱዝ + + + ኮሎምቦ + + + ሞንሮቪያ + + + ማሴሩ + + + ቪሊነስ + + + ሉክሰምበርግ + + + ሪጋ + + + ትሪፖሊ + + + ካዛብላንካ + + + ሞናኮ + + + ቺስናኡ + + + ፖድጎሪካ + + + ማርጎት + + + አንታናናሪቮ + + + ክዋጃሊን + + + ማጁሩ + + + ስኮፕጄ + + + ባማኮ + + + ራንጉን + + + ሆቭድ + + + ኡላአንባአታር + + + ቾይባልሳን + + + ማካኡ + + + ሴይፓን + + + ማርቲኒክ + + + ኑአክቾት + + + ሞንትሴራት + + + ማልታ + + + ሞሪሽየስ + + + ማልዲቨ + + + ብላንታየር + + + ቲጁአና + + + ሳንታ ኢዛቤል + + + ኸርሞዚሎ + + + ማዛትላን + + + ቺሁዋውአ + + + ባሂያ ባንደራስ + + + ኦዪናጋ + + + ሞንተርሬይ + + + ሜክሲኮ ከተማ + + + ማታሞሮስ + + + ሜሪዳ + + + ካንኩን + + + ኩዋላ ላምፑር + + + ኩቺንግ + + + ማፑቱ + + + ዊንድሆይክ + + + ናኦሚአ + + + ኒያሜይ + + + ኖርፎልክ + + + ሌጎስ + + + ማናጉአ + + + አምስተርዳም + + + ኦስሎ + + + ካትማንዱ + + + ናውሩ + + + ኒዌ + + + ቻታም + + + ኦክላንድ + + + ሙስካት + + + ፓናማ + + + ሊማ + + + ታሂቲ + + + ማርክዌሳስ + + + ጋምቢየር + + + ፖርት ሞሬስባይ + + + ማኒላ + + + ካራቺ + + + ዋርሳው + + + ሚኮውሎን + + + ፒትከይርን + + + ፖርቶሪኮ + + + ጋዛ + + + ኬብሮን + + + አዞረስ + + + ማዴራ + + + ሊዝበን + + + ፓላው + + + አሱንሲዮን + + + ኳታር + + + ሬዩኒየን + + + ቡካሬስት + + + ቤልግሬድ + + + ካሊኒንግራድ + + + ሞስኮ + + + ቮልጎራድ + + + ሳማራ + + + የካተሪንበርግ + + + ኦምስክ + + + ኖቮሲቢሪስክ + + + ኖቮኩትዝኔክ + + + ክራስኖያርስክ + + + ኢርኩትስክ + + + ያኩትስክ + + + ቭላዲቮስቶክ + + + ካንዲጋ + + + ሳክሃሊን + + + ኡስት-ኔራ + + + ማጋዳን + + + ካምቻትካ + + + አናድይር + + + ኪጋሊ + + + ሪያድ + + + ጉዋዳልካናል + + + ማሄ + + + ካርቱም + + + ስቶክሆልም + + + ሲንጋፖር + + + ቅድስት ሄለና + + + ልጁብልጃና + + + ሎንግይርባየን + + + ብራቲስላቫ + + + ፍሪታውን + + + ሳን ማሪኖ + + + ዳካር + + + ሞቃዲሹ + + + ፓራማሪቦ + + + ጁባ + + + ሳኦ ቶሜ + + + ኤልሳልቫዶር + + + የታችኛው ልዑል ሩብ + + + ደማስቆ + + + ምባቤን + + + ግራንድ ተርክ + + + ንጃሜና + + + ኬርጉለን + + + ሎሜ + + + ባንኮክ + + + ደሻንቤ + + + ፋካኦፎ + + + ዲሊ + + + አሽጋባት + + + ቱኒዝ + + + ቶንጋታፑ + + + ኢስታንቡል + + + የእስፔን ወደብ + + + ፈናፉቲ + + + ታይፓይ + + + ዳሬ ሰላም + + + ኡዝጎሮድ + + + ኪየቭ + + + ሲምፈሮፖል + + + ዛፖሮዚይ + + + ካምፓላ + + + አጋማሽ + + + ጆንስተን + + + ዋቄ + + + አዳክ + + + ኖሜ + + + ሆኖሉሉ + + + አንኮራጅ + + + ያኩታት + + + ሲትካ + + + ጁኒዩ + + + መትላካትላ + + + ሎስ አንጀለስ + + + ቦይዝ + + + ፊኒክስ + + + ዴንቨር + + + ቤኡላህ, ሰሜን ዳኮታ + + + አዲስ ሳሌም, ሰሜን ዳኮታ + + + መካከለኛ, ሰሜን ዳኮታ + + + ቺካጎ + + + ሜኖሚኒ + + + ቪንቼንስ, ኢንዲያና + + + ፒተርስበርግ, ኢንዲያና + + + ቴል ከተማ, ኢንዲያና + + + ኖክስ, ኢንዲያና + + + ዊናማክ, ኢንዲያና + + + ማሬንጎ, ኢንዲያና + + + ኢንዲያናፖሊስ + + + ሊውስቪል + + + ቪቫይ, ኢንዲያና + + + ሞንቲሴሎ, ኪንታኪ + + + ዲትሮይት + + + ኒውዮርክ + + + ሞንቴቪድዮ + + + ሳማርካንድ + + + ታሽኬንት + + + ቫቲካን + + + ቅዱስ ቪንሰንት + + + ካራካስ + + + ቶርቶላ + + + ቅዱስ ቶማስ + + + ሆ ቺ ሚንህ ከተማ + + + ኢፋቴ + + + ዋሊስ + + + አፒአ + + + ኤደን + + + ማዮቴ + + + ጆሃንስበርግ + + + ሉሳካ + + + ሃራሬ + + + + የአፍጋኒስታን ሰዓት + + + + + የመካከለኛው አፍሪካ ሰዓት + + + + + የምስራቅ አፍሪካ ሰዓት + + + + + የደቡብ አፍሪካ መደበኛ ሰዓት + + + + + የምዕራብ አፍሪካ ሰዓት + የምዕራብ አፍሪካ መደበኛ ሰዓት + የምዕራብ አፍሪካ ክረምት ሰዓት + + + + + የአላስካ ሰዓት አቆጣጠር + የአላስካ መደበኛ የሰዓት አቆጣጠር + የአላስካ የቀን ሰዓት አቆጣጠር + + + + + የአማዞን ሰዓት አቆጣጠር + የአማዞን መደበኛ ሰዓት አቆጣጠር + የአማዞን የቀን ሰዓት አቆጣጠር + + + + + መካከለኛ የሰዓት አቆጣጠር + የመካከላዊ መደበኛ ሰዓት አቆጣጠር + የመካከላዊ የቀን ሰዓት አቆጣጠር + + + + + የምዕራባዊ ሰዓት አቆጣጠር + የምዕራባዊ መደበኛ የሰዓት አቆጣጠር + የምዕራባዊ የቀን ሰዓት አቆጣጠር + + + + + የተራራ የሰዓት አቆጣጠር + የተራራ መደበኛ የሰዓት አቆጣጠር + የተራራ የቀንሰዓት አቆጣጠር + + + + + የፓስፊክ ሰዓት አቆጣጠር + የፓስፊክ መደበኛ ሰዓት አቆጣጠር + የፓስፊክ የቀን ሰዓት አቆጣጠር + + + + + የአናድይር ሰዓት አቆጣጠር + የአናዲይር ሰዓት አቆጣጠር + የአናድይር የበጋ የሰዓት አቆጣጠር + + + + + የአረቢያ ሰዓት + የአረቢያ መደበኛ ሰዓት + የአረቢያ የቀን ብርሃን ሰዓት + + + + + የአርጀንቲና የሰዓት አቆጣጠር + የአርጀንቲና መደበኛ ጊዜ + የአርጀንቲና የበጋ ሰዓት አቆጣጠር + + + + + የአርጀንቲና ምስራቃዊ ሰዓት አቆጣጠር + የምዕራባዊ አርጀንቲና መደበኛ ሰዓት አቆጣጠር + የአርጀንቲና ምስራቃዊ በጋ ሰዓት አቆጣጠር + + + + + የአርመኒያ ሰዓት + የአርመኒያ መደበኛ ሰዓት + የአርመኒያ ክረምት ሰዓት + + + + + የአትላንቲክ የሰዓት አቆጣጠር + የአትላንቲክ መደበኛ የሰዓት አቆጣጠር + የአትላንቲክ የቀን ሰዓት አቆጣጠር + + + + + የመካከለኛው አውስትራሊያ ሰዓት አቆጣጠር + የአውስትራሊያ መካከለኛ መደበኛ የሰዓት አቆጣጠር + የአውስትራሊያ መካከለኛ የቀን ሰዓት አቆጣጠር + + + + + የአውስትራሊያ መካከለኛ ምስራቃዊ ሰዓት አቆጣጠር + የአውስትራሊያ መካከለኛ ምስራቃዊ መደበኛ ሰዓት አቆጣጠር + የአውስትራሊያ መካከለኛው ምስራቅ የቀን ሰዓት አቆጣጠር + + + + + የምዕራባዊ አውስትራሊያ የሰአት አቆጣጠር + የአውስትራሊያ ምዕራባዊ መደበኛ የሰዓት አቆጣጠር + የአውስትራሊያ ምዕራባዊ የቀን ሰዓት አቆጣጠር + + + + + የምስራቃዊ አውስትራሊያ ሰዓት አቆጣጠር + የአውስትራሊያ ምስራቃዊ መደበኛ ሰዓት አቆጣጠር + የአውስትራሊያ ምስራቃዊ የቀን ሰዓት አቆጣጠር + + + + + የአዘርባይጃን ሰዓት + የአዘርባይጃን መደበኛ ሰዓት + የአዘርባይጃን ክረምት ሰዓት + + + + + የአዞረስ ሰዓት + የአዞረስ መደበኛ ሰዓት + የአዞረስ ክረምት ሰዓት + + + + + የባንግላዴሽ ሰዓት + የባንግላዴሽ መደበኛ ሰዓት + የባንግላዴሽ ክረምት ሰዓት + + + + + የቡታን ሰዓት + + + + + የቦሊቪያ ሰዓት + + + + + የብራዚላዊ ሰዓት አቆጣጠር + የብራሲሊያ መደበኛ ጊዜ + የብራዚላ የበጋ ሰዓት አቆጣጠር + + + + + የብሩኔይ ዳሩሳላም ሰዓት + + + + + የኬፕ ቨርዴ ሰዓት + የኬፕ ቨርዴ መደበኛ ሰዓት + የኬፕ ቨርዴ ክረምት ሰዓት + + + + + የቻሞሮ መደበኛ ሰዓት + + + + + የቻታም ሰዓት + የቻታም መደበኛ ሰዓት + የቻታም የቀን ብርሃን ሰዓት + + + + + የቺሊ ሰዓት + የቺሊ መደበኛ ሰዓት + የቺሊ ክረምት ሰዓት + + + + + የቻይና ሰዓት + የቻይና መደበኛ ሰዓት + የቻይና የቀን ብርሃን ሰዓት + + + + + የቾይባልሳ ሰዓት አቆጣጠር + የቾይባልሳን መደበኛ የሰዓት አቆጣጠር + የቾይባልሳን የበጋ የሰአት አቆጣጠር + + + + + የገና ደሴት ሰዓት + + + + + የኮኮስ ደሴቶች ሰዓት + + + + + የኮሎምቢያ ሰዓት + የኮሎምቢያ መደበኛ ሰዓት + የኮሎምቢያ ክረምት ሰዓት + + + + + የኩክ ደሴቶች ሰዓት + የኩክ ደሴቶች መደበኛ ሰዓት + የኩክ ደሴቶች ግማሽ ክረምት ሰዓት + + + + + ኩባ ሰዓት + የኩባ መደበኛ ሰዓት + የኩባ የቀን ብርሃን ሰዓት + + + + + የዴቪስ ሰዓት + + + + + የዱሞንት-ዱርቪል ሰዓት + + + + + የምስራቅ ቲሞር ሰዓት + + + + + የኢስተር ደሴት ሰዓት + የኢስተር ደሴት መደበኛ ሰዓት + የኢስተር ደሴት ክረምት ሰዓት + + + + + የኢኳዶር ሰዓት + + + + + የመካከለኛው አውሮፓ ሰዓት + የመካከለኛው አውሮፓ መደበኛ ሰዓት + የመካከለኛው አውሮፓ ክረምት ሰዓት + + + + + የምስራቃዊ አውሮፓ ሰዓት + የምስራቃዊ አውሮፓ መደበኛ ሰዓት + የምስራቃዊ አውሮፓ ክረምት ሰዓት + + + + + የምዕራባዊ አውሮፓ ሰዓት + የምዕራባዊ አውሮፓ መደበኛ ሰዓት + የምዕራባዊ አውሮፓ ክረምት ሰዓት + + + + + የፋልክላንድ ደሴቶች ሰዓት + የፋልክላንድ ደሴቶች መደበኛ ሰዓት + የፋልክላንድ ደሴቶች ክረምት ሰዓት + + + + + የፊጂ ሰዓት + የፊጂ መደበኛ ሰዓት + የፊጂ ክረምት ሰዓት + + + + + የፈረንሳይ ጉያና ሰዓት + + + + + የፈረንሳይ ደቡባዊ እና አንታርክቲክ ሰዓት + + + + + የጋላፓጎስ ሰዓት + + + + + የጋምቢየር ሰዓት + + + + + የጂዮርጂያ ሰዓት + የጂዮርጂያ መደበኛ ሰዓት + የጂዮርጂያ ክረምት ሰዓት + + + + + የጂልበርት ደሴቶች ሰዓት + + + + + ግሪንዊች ማዕከላዊ ሰዓት + + + + + የምስራቅ ግሪንላንድ ሰዓት + የምስራቅ ግሪንላንድ መደበኛ ሰዓት + የምስራቅ ግሪንላንድ ክረምት ሰዓት + + + + + የምዕራብ ግሪንላንድ ሰዓት + የምዕራብ ግሪንላንድ መደበኛ ሰዓት + የምዕራብ ግሪንላንድ ክረምት ሰዓት + + + + + የባህረሰላጤ መደበኛ ሰዓት + + + + + የጉያና ሰዓት + + + + + የሃዋይ አሌኡት ሰዓት አቆጣጠር + የሃዋይ አሌኡት መደበኛ ሰዓት አቆጣጠር + የሃዋይ አሌኡት የቀን ሰዓት አቆጣጠር + + + + + የሆንግ ኮንግ ሰዓት + የሆንግ ኮንግ መደበኛ ሰዓት + የሆንግ ኮንግ ክረምት ሰዓት + + + + + የሆቭድ ሰዓት አቆጣጠር + የሆቭድ መደበኛ የሰዓት አቆጣጠር + የሆቭድ የበጋ ሰዓት አቆጣጠር + + + + + የህንድ መደበኛ ሰዓት + + + + + የህንድ ውቅያኖስ ሰዓት + + + + + የኢንዶቻይና ሰዓት + + + + + የመካከለኛው ኢንዶኔዢያ ሰዓት + + + + + የምስራቃዊ ኢንዶኔዢያ ሰዓት + + + + + የምዕራባዊ ኢንዶኔዢያ ሰዓት + + + + + የኢራን ሰዓት + የኢራን መደበኛ ሰዓት + የኢራን የቀን ብርሃን ሰዓት + + + + + የኢርኩትስክ ሰዓት አቆጣጠር + የኢርኩትስክ መደበኛ የሰዓት አቆጣጠር + ኢርኩትስክ የበጋ የሰዓት አቆጣጠር + + + + + የእስራኤል ሰዓት + የእስራኤል መደበኛ ሰዓት + የእስራኤል የቀን ብርሃን ሰዓት + + + + + የጃፓን ሰዓት + የጃፓን መደበኛ ሰዓት + የጃፓን የቀን ብርሃን ሰዓት + + + + + የካምቻትካ ሰዓት አቆጣጠር + የፔትሮፓቭሎስኪ - ካምቻትስኪ ሰዓት አቆጣጠር + የፔትሮፓቭሎስኪ - ካምቻትስኪ የበጋ ሰዓት አቆጣጠር + + + + + የምስራቅ ካዛኪስታን ጊዜ + + + + + የምዕራብ ካዛኪስታን ጊዜ + + + + + የኮሪያ ሰዓት + የኮሪያ መደበኛ ሰዓት + የኮሪያ የቀን ብርሃን ሰዓት + + + + + የኮስራኤ ሰዓት + + + + + የክራስኖያርስክ ሰዓት አቆጣጠር + የክራስኖይአርስክ መደበኛ ሰዓት አቆጣጠር + የክራስኖያርስክ የበጋ ሰዓት አቆጣጠር + + + + + የኪርጊስታን ሰዓት + + + + + የላይን ደሴቶች ሰዓት + + + + + የሎርድ ሆዌ የሰዓት አቆጣጠር + የሎርድ ሆዌ መደበኛ የሰዓት አቆጣጠር + የሎርድ ሆዌ የቀን ሰዓት አቆጣጠር + + + + + የማከሪ ደሴት ሰዓት + + + + + የማጋዳን የሰዓት አቆጣጠር + የማጋዳን መደበኛ ሰዓት አቆጣጠር + የማጋዳን በጋ ሰዓት አቆጣጠር + + + + + የማሌይዢያ ሰዓት + + + + + የማልዲቭስ ሰዓት + + + + + የማርኴሳስ ሰዓት + + + + + የማርሻል ደሴቶች ሰዓት + + + + + የማውሪሺየስ ሰዓት + የማውሪሺየስ መደበኛ ሰዓት + የማውሪሺየስ ክረምት ሰዓት + + + + + የማውሰን ሰዓት + + + + + የኡላን ባቶር ጊዜ + የኡላን ባቶር መደበኛ ሰዓት አቆጣጠር + የኡላን ባቶር የበጋ ሰዓት አቆጣጠር + + + + + የሞስኮ ሰዓት አቆጣጠር + የሞስኮ መደበኛ ሰዓት አቆጣጠር + የሞስኮ የበጋ ሰዓት አቆጣጠር + + + + + የሚያንማር ሰዓት + + + + + የናውሩ ሰዓት + + + + + የኔፓል ሰዓት + + + + + የኒው ካሌዶኒያ ሰዓት + የኒው ካሌዶኒያ መደበኛ ሰዓት + የኒው ካሌዶኒያ ክረምት ሰዓት + + + + + የኒው ዚላንድ ሰዓት + የኒው ዚላንድ መደበኛ ሰዓት + የኒው ዚላንድ የቀን ብርሃን ሰዓት + + + + + የኒውፋውንድላንድ የሰዓት አቆጣጠር + የኒውፋውንድላንድ መደበኛ የሰዓት አቆጣጠር + የኒውፋውንድላንድ የቀን የሰዓት አቆጣጠር + + + + + የኒዩዌ ሰዓት + + + + + የኖርፎልክ ደሴቶች ሰዓት + + + + + የኖሮንሃ ሰዓት አቆጣጠር + የፈርናንዶ ዲ ኖሮንቻ መደበኛ ሰዓት አቆጣጠር + የፈርናንዶ ዲ ኖሮንሃ የበጋ የሰዓት አቆጣጠር + + + + + የኖቮሲብሪስክ የሰዓት አቆጣጠር + የኖቮሲቢርስክ መደበኛ የሰዓት አቆጣጠር + የኖቮሲብሪስክ የበጋ ሰአት አቆጣጠር + + + + + የኦምስክ የሰዓት አቆጣጠር + የኦምስክ መደበኛ ሰዓት አቆጣጠር + የኦምስክ የበጋ ሰዓት አቆጣጠር + + + + + የፓኪስታን ሰዓት + የፓኪስታን መደበኛ ሰዓት + የፓኪስታን ክረምት ሰዓት + + + + + የፓላው ሰዓት + + + + + የፓፗ ኒው ጊኒ ሰዓት + + + + + የፓራጓይ ሰዓት + የፓራጓይ መደበኛ ሰዓት + የፓራጓይ ክረምት ሰዓት + + + + + የፔሩ ሰዓት + የፔሩ መደበኛ ሰዓት + የፔሩ ክረምት ሰዓት + + + + + የፊሊፒን ሰዓት + የፊሊፒን መደበኛ ሰዓት + የፊሊፒን ክረምት ሰዓት + + + + + የፊኒክስ ደሴቶች ሰዓት + + + + + ቅዱስ የፒዬር እና ሚኴሎን ሰዓት + ቅዱስ የፒዬር እና ሚኴሎን መደበኛ ሰዓት + ቅዱስ የፒዬር እና ሚኴሎን የቀን ብርሃን ሰዓት + + + + + የፒትካይርን ሰዓት + + + + + የፖናፔ ሰዓት + + + + + የሬዩኒየን ሰዓት + + + + + የሮቴራ ሰዓት + + + + + የሳክሃሊን ሰዓት አቆጣጠር + የሳክሃሊን መደበኛ ሰዓት አቆጣጠር + የሳክሃሊን የበጋ ሰዓት አቆጣጠር + + + + + የሳማራ ሰዓት አቆጣጠር + የሳማራ መደበኛ ሰዓት አቆጣጠር + የሳማራ የበጋ ሰዓት አቆጣጠር + + + + + የሳሞዋ ሰዓት + የሳሞዋ መደበኛ ሰዓት + የሳሞዋ የበጋ ሰዓት + + + + + የሴሸልስ ሰዓት + + + + + የሲንጋፒር መደበኛ ሰዓት + + + + + የሰለሞን ደሴቶች ሰዓት + + + + + የደቡብ ጂዮርጂያ ሰዓት + + + + + የሱሪናም ሰዓት + + + + + የሲዮዋ ሰዓት + + + + + የታሂቲ ሰዓት + + + + + የታይፔይ ሰዓት + የታይፔይ መደበኛ ሰዓት + የታይፔይ የቀን ብርሃን ሰዓት + + + + + የታጂኪስታን ሰዓት + + + + + የቶኬላው ሰዓት + + + + + የቶንጋ ሰዓት + የቶንጋ መደበኛ ሰዓት + የቶንጋ ክረምት ሰዓት + + + + + የቹክ ሰዓት + + + + + የቱርክመኒስታን ሰዓት + የቱርክመኒስታን መደበኛ ሰዓት + የቱርክመኒስታን ክረምት ሰዓት + + + + + የቱቫሉ ሰዓት + + + + + የኡራጓይ ሰዓት + የኡራጓይ መደበኛ ሰዓት + የኡራጓይ ክረምት ሰዓት + + + + + የኡዝቤኪስታን ሰዓት + የኡዝቤኪስታን መደበኛ ሰዓት + የኡዝቤኪስታን ክረምት ሰዓት + + + + + የቫኗቱ ሰዓት + የቫኗቱ መደበኛ ሰዓት + የቫኗቱ ክረምት ሰዓት + + + + + የቬኔዝዌላ ሰዓት + + + + + የቭላዲቮስቶክ የሰዓት አቆጣጠር + የቪላዲቮስቶክ መደበኛ የሰዓት አቆጣጠር + የቭላዲቮስቶክ የበጋ የሰዓት አቆጣጠር + + + + + የቮልጎራድ የሰዓት አቆጣጠር + የቮልጎራድ መደበኛ ሰዓት አቆጣጠር + የቫልጎራድ የበጋ ሰዓት አቆጣጠር + + + + + የቮስቶክ ሰዓት + + + + + የዌክ ደሴት ሰዓት + + + + + የዋሊስ እና ፉቱና ሰዓት + + + + + ያኩትስክ የሰዓት አቆጣጠር + ያኩትስክ መደበኛ ሰዓት አቆጣጠር + የያኩትስክ የበጋ ሰዓት አቆጣጠር + + + + + የየካተሪንበርግ ሰዓት አቆጣጠር + የየካተሪንበርግ መደበኛ ሰዓት አቆጣጠር + የየካተሪንበርግ የበጋ ሰዓት አቆጣጠር + + + + + + latn + + latn + ethi + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 ሺ + 0 ሺ + 00 ሺ + 00 ሺ + 000 ሺ + 000 ሺ + 0 ሚሊዮን + 0 ሚሊዮን + 00 ሚሊዮን + 00 ሚሊዮን + 000 ሚሊዮን + 000 ሚሊዮን + 0 ቢሊዮን + 0 ቢሊዮን + 00 ቢሊዮን + 00 ቢሊዮን + 000 ቢሊዮን + 000 ቢሊዮን + 0 ትሪሊዮን + 0 ትሪሊዮን + 00 ትሪሊዮን + 00 ትሪሊዮን + 000 ትሪሊዮን + 000 ትሪሊዮን + + + + + 0 ሺ + 0 ሺ + 00 ሺ + 00 ሺ + 000 ሺ + 000 ሺ + 0 ሜትር + 0 ሜትር + 00 ሜትር + 00 ሜትር + 000 ሜትር + 000 ሜትር + 0 ቢ + 0 ቢ + 00 ቢ + 00 ቢ + 000 ቢ + 000 ቢ + 0 ት + 0 ት + 00 ት + 00 ት + 000 ት + 000 ት + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + የተባበሩት የአረብ ኤምረትስ ዲርሀም + የተባበሩት የአረብ ኤምረትስ ዲርሀም + የተባበሩት የአረብ ኤምረትስ ዲርሀም + + + የአፍጋን አፍጋኒ + የአፍጋን አፍጋኒ + የአፍጋን አፍጋኒ + + + የአልባንያ ሌክ + የአልባንያ ሌክ + የአልባንያ ሌክ + + + የአርመን ድራም + የአርመን ድራም + የአርመን ድራም + + + ኔዘርላንድስ አንቲሊአን ጊልደር + + + የአንጎላ ኩዋንዛ + የአንጎላ ኩዋንዛ + የአንጎላ ኩዋንዛ + + + የአርጀንቲና ፔሶ + የአርጀንቲና ፔሶ + የአርጀንቲና ፔሶ + + + የአውስትራሊያ ዶላር + የአውስትራሊያ ዶላር + የአውስትራሊያ ዶላር + AU$ + + + አሩባን ፍሎሪን + አሩባን ፍሎሪን + አሩባን ፍሎሪን + + + የአዛርባጃን ማናት + የአዛርባጃን ማናት + የአዛርባጃን ማናት + + + የቦስኒያ ሄርዞጎቪና የሚመነዘር ማርክ + የቦስኒያ ሄርዞጎቪና የሚመነዘር ማርክ + የቦስኒያ ሄርዞጎቪና የሚመነዘር ማርክ + + + የባርቤዶስ ዶላር + የባርቤዶስ ዶላር + የባርቤዶስ ዶላር + + + የባንግላዲሽ ታካ + የባንግላዲሽ ታካ + የባንግላዲሽ ታካ + + + የቡልጋሪያ ሌቭ + የቡልጋሪያ ሌቭ + የቡልጋሪያ ሌቭ + + + የባኽሬን ዲናር + የባኽሬን ዲናር + የባኽሬን ዲናር + + + የብሩንዲ ፍራንክ + የብሩንዲ ፍራንክ + የብሩንዲ ፍራንክ + + + የቤርሙዳ ዶላር + የቤርሙዳ ዶላር + የቤርሙዳ ዶላር + + + የብሩኔ ዶላር + የብሩኔ ዶላር + የብሩኔ ዶላር + + + የቦሊቪያ ቦሊቪያኖ + የቦሊቪያ ቦሊቪያኖ + የቦሊቪያ ቦሊቪያኖ + + + የብራዚል ሪል + የብራዚል ሪል + የብራዚል ሪል + R$ + + + የባሃማስ ዶላር + የባሃማስ ዶላር + የባሃማስ ዶላር + + + ብሁታኒዝ ንጉልትረም + ብሁታኒዝ ንጉልትረም + ብሁታኒዝ ንጉልትረም + + + የቦትስዋና ፑላ + የቦትስዋና ፑላ + የቦትስዋና ፑላ + + + የቤላሩስያ ሩብል + የቤላሩስያ ሩብል + የቤላሩስያ ሩብል + + + የቤሊዝ ዶላር + የቤሊዝ ዶላር + የቤሊዝ ዶላር + + + የካናዳ ዶላር + የካናዳ ዶላር + የካናዳ ዶላር + + + የኮንጐ ፍራንክ ኮንጐሌዝ + የኮንጐ ፍራንክ ኮንጐሌዝ + የኮንጐ ፍራንክ ኮንጐሌዝ + + + የስዊስ ፍራንክ + የስዊስ ፍራንክ + የስዊስ ፍራንክ + + + የቺሊ ፔሶ + የቺሊ ፔሶ + የቺሊ ፔሶ + + + የቻይና የን + የቻይና የን + የቻይና የን + CN¥ + + + የኮሎምቢያ ፔሶ + የኮሎምቢያ ፔሶ + የኮሎምቢያ ፔሶ + + + የኮስታሪካ ኮሎን + የኮስታሪካ ኮሎን + የኮስታሪካ ኮሎን + + + የኩባ የሚመነዘር ፔሶ + የኩባ የሚመነዘር ፔሶ + የኩባ የሚመነዘር ፔሶ + + + የኩባ ፔሶ + የኩባ ፔሶ + የኩባ ፔሶ + + + የኬፕ ቫርዲ ኤስኩዶ + የኬፕ ቫርዲ ኤስኩዶ + የኬፕ ቫርዲ ኤስኩዶ + + + ቼክ ሪፐፕሊክ ኮሩና + ቼክ ሪፐፕሊክ ኮሩና + ቼክ ሪፐብሊክ ኮሮና + + + የጅቡቲ ፍራንክ + የጅቡቲ ፍራንክ + የጅቡቲ ፍራንክ + + + የዴንማርክ ክሮን + የዴንማርክ ክሮን + የዴንማርክ ክሮን + + + የዶሚኒክ ፔሶ + የዶሚኒክ ፔሶ + የዶሚኒክ ፔሶ + + + የአልጄሪያ ዲናር + የአልጄሪያ ዲናር + የአልጄሪያ ዲናር + + + የግብጽ ፓውንድ + የግብጽ ፓውንድ + የግብጽ ፓውንድ + + + ዬኤርትራ ናቅፋ + ዬኤርትራ ናቅፋ + ዬኤርትራ ናቅፋ + + + የኢትዮጵያ ብር + የኢትዮጵያ ብር + የኢትዮጵያ ብር + ብር + + + ዩሮ + ዩሮ + ዩሮ + + + + የፊጂ ዶላር + የፊጂ ዶላር + የፊጂ ዶላር + + + የፎክላንድ ደሴቶች ፓውንድ + የፎክላንድ ደሴቶች ፓውንድ + የፎክላንድ ደሴቶች ፓውንድ + + + የእንግሊዝ ፓውንድ ስተርሊንግ + የእንግሊዝ ፓውንድ ስተርሊንግ + የእንግሊዝ ፓውንድ ስተርሊንግ + £ + + + የጆርጅያ ላሪ + የጆርጅያ ላሪ + የጆርጅያ ላሪ + + + የጋና ሴዲ + + + የጋና ሲዲ + የጋና ሲዲ + የጋና ሲዲ + + + ጊብራልታር ፓውንድ + ጊብራልታር ፓውንድ + ጊብራልታር ፓውንድ + + + የጋምቢያ ዳላሲ + የጋምቢያ ዳላሲ + የጋምቢያ ዳላሲ + + + የጊኒ ፍራንክ + የጊኒ ፍራንክ + የጊኒ ፍራንክ + + + ጓቲማላን ኩቲዛል + ጓቲማላን ኩቲዛል + ጓቲማላን ኩቲዛል + + + የጉየና ዶላር + የጉየና ዶላር + የጉየና ዶላር + + + የሆንግኮንግ ዶላር + የሆንግኮንግ ዶላር + የሆንግኮንግ ዶላር + HK$ + + + የሃንዱራ ሌምፓአይራ + የሃንዱራ ሌምፓአይራ + የሃንዱራ ሌምፓአይራ + + + የክሮሽያ ኩና + የክሮሽያ ኩና + የክሮሽያ ኩና + + + የሃያቲ ጓርዴ + የሃያቲ ጓርዴ + የሃያቲ ጓርዴ + + + የሁንጋሪ ፎሪንት + የሁንጋሪ ፎሪንት + የሃንጋሪያን ፎሪንት + + + የኢንዶኔዥያ ሩፒሃ + የኢንዶኔዥያ ሩፒሃ + የኢንዶኔዥያ ሩፒሃ + + + የእስራኤል አዲስ ሽቅል + የእስራኤል አዲስ ሽቅል + የእስራኤል አዲስ ሽቅል + + + + የሕንድ ሩፒ + የሕንድ ሩፒ + የሕንድ ሩፒ + + + + የኢራቅ ዲናር + የኢራቅ ዲናር + የኢራቅ ዲናር + + + የኢራን ሪአል + የኢራን ሪአል + የኢራን ሪአል + + + የአይስላንድ ክሮና + የአይስላንድ ክሮና + የአይስላንድ ክሮና + + + የጃማይካ ዶላር + የጃማይካ ዶላር + የጃማይካ ዶላር + + + የጆርዳን ዲናር + የጆርዳን ዲናር + የጆርዳን ዲናር + + + የጃፓን የን + የጃፓን የን + የጃፓን የን + JP¥ + + + የኬኒያ ሺሊንግ + የኬኒያ ሺሊንግ + የኬኒያ ሺሊንግ + + + የኪርጊስታን ሶም + የኪርጊስታን ሶም + የኪርጊስታን ሶም + + + የካምቦዲያ ሬል + የካምቦዲያ ሬል + የካምቦዲያ ሬል + + + የኮሞሮ ፍራንክ + የኮሞሮ ፍራንክ + የኮሞሮ ፍራንክ + + + የሰሜን ኮሪያ ዎን + የሰሜን ኮሪያ ዎን + የሰሜን ኮሪያ ዎን + + + የደቡብ ኮሪያ ዎን + የደቡብ ኮሪያ ዎን + የደቡብ ኮሪያ ዎን + + + + የኩዌት ዲናር + የኩዌት ዲናር + የኩዌት ዲናር + + + የካይማን ደሴቶች ዶላር + የካይማን ደሴቶች ዶላር + የካይማን ደሴቶች ዶላር + + + የካዛኪስታን ተንጌ + የካዛኪስታን ተንጌ + የካዛኪስታን ተንጌ + + + የላኦቲ ኪፕ + የላኦቲ ኪፕ + የላኦቲ ኪፕ + + + የሊባኖስ ፓውንድ + የሊባኖስ ፓውንድ + የሊባኖስ ፓውንድ + + + የሲሪላንካ ሩፒ + የሲሪላንካ ሩፒ + የሲሪላንካ ሩፒ + + + የላይቤሪያ ዶላር + የላይቤሪያ ዶላር + የላይቤሪያ ዶላር + + + የሌሶቶ ሎቲ + + + ሊቱዌንያን ሊታስ + ሊቱዌንያን ሊታስ + ሊቱዌንያን ሊታስ + + + የላቲቫ ላትስ + የላቲቫ ላትስ + የላቲቫ ላትስ + + + የሊቢያ ዲናር + የሊቢያ ዲናር + የሊቢያ ዲናር + + + የሞሮኮ ዲርሀም + የሞሮኮ ዲርሀም + የሞሮኮ ዲርሀም + + + ሞልዶቫን ሊኡ + ሞልዶቫን ሊኡ + ሞልዶቫን ሊኡ + + + የማደጋስካር ፋርንክ + የማደጋስካር ፋርንክ + የማደጋስካር ፋርንክ + + + የሜቆድንያ ዲናር + የሜቆድንያ ዲናር + የሜቆድንያ ዲናር + + + ምያንማ ክያት + ምያንማ ክያት + ምያንማ ክያት + + + የሞንጎሊያን ቱግሪክ + የሞንጎሊያን ቱግሪክ + የሞንጎሊያን ቱግሪክ + + + የማካኔዝ ፓታካ + የማካኔዝ ፓታካ + የማካኔዝ ፓታካ + + + የሞሪቴኒያ ኦውጉያ + የሞሪቴኒያ ኦውጉያ + የሞሪቴኒያ ኦውጉያ + + + የሞሪሸስ ሩፒ + የሞሪሸስ ሩፒ + የሞሪሸስ ሩፒ + + + የማልዲቫ ሩፊያ + የማልዲቫ ሩፊያ + የማልዲቫ ሩፊያ + + + የማላዊ ኩዋቻ + የማላዊ ኩዋቻ + የማላዊ ኩዋቻ + + + የሜክሲኮ ፔሶ + የሜክሲኮ ፔሶ + የሜክሲኮ ፔሶ + MX$ + + + የማሌዥያ ሪንጊት + የማሌዥያ ሪንጊት + የማሌዥያ ሪንጊት + + + የሞዛምቢክ ሜቲካል + የሞዛምቢክ ሜቲካል + የሞዛምቢክ ሜቲካል + + + የናሚቢያ ዶላር + የናሚቢያ ዶላር + የናሚቢያ ዶላር + + + የናይጄሪያ ናኢራ + የናይጄሪያ ናኢራ + የናይጄሪያ ናኢራ + + + የኒካራጓ ኮርዶባ + የኒካራጓ ኮርዶባ + የኒካራጓ ኮርዶባ + + + የኖርዌይ ክሮን + የኖርዌይ ክሮን + የኖርዌይ ክሮን + + + የኔፓል ሩፒ + የኔፓል ሩፒ + የኔፓል ሩፒ + + + የኒውዚላንድ ዶላር + የኒውዚላንድ ዶላር + የኒውዚላንድ ዶላር + NZ$ + + + የኦማን ሪአል + የኦማን ሪአል + የኦማን ሪአል + + + ፓናማኒአን ባልቦአ + ፓናማኒአን ባልቦአ + ፓናማኒአን ባልቦአ + + + የፔሩቪያ ኑኤቮ ሶል + የፔሩቪያ ኑኤቮ ሶል + የፔሩቪያ ኑኤቮ ሶል + + + የፓፕዋ ኒው ጊኒ ኪና + የፓፕዋ ኒው ጊኒ ኪና + የፓፕዋ ኒው ጊኒ ኪና + + + የፊሊፒንስ ፔሶ + የፊሊፒንስ ፔሶ + የፊሊፒንስ ፔሶ + + + የፓኪስታን ሩፒ + የፓኪስታን ሩፒ + የፓኪስታን ሩፒ + + + የፖላንድ ዝሎቲ + የፖላንድ ዝሎቲ + የፖላንድ ዝሎቲ + + + የፓራጓይ ጉአራኒ + የፓራጓይ ጉአራኒ + የፓራጓይ ጉአራኒ + + + የኳታር ሪአል + የኳታር ሪአል + የኳታር ሪአል + + + የሮማኒያ ለው + የሮማኒያ ለው + የሮማኒያ ለው + + + የሰርቢያ ዲናር + የሰርቢያ ዲናር + የሰርቢያ ዲናር + + + የሩስያ ሩብል + የሩስያ ሩብል + የሩስያ ሩብል + + + የሩዋንዳ ፍራንክ + የሩዋንዳ ፍራንክ + የሩዋንዳ ፍራንክ + + + የሳውዲ ሪያል + የሳውዲ ሪያል + የሳውዲ ሪያል + + + የሰለሞን ደሴቶች ዶላር + የሰለሞን ደሴቶች ዶላር + የሰለሞን ደሴቶች ዶላር + + + የሲሼል ሩፒ + የሲሼል ሩፒ + የሲሼል ሩፒ + + + የሱዳን ዲናር + የሱዳን ዲናር + የሱዳን ዲናር + + + የሱዳን ፓውንድ + + + የስዊድን ክሮና + የስዊድን ክሮና + የስዊድን ክሮና + + + የሲንጋፖር ዶላር + የሲንጋፖር ዶላር + የሲንጋፖር ዶላር + + + የሴይንት ሔሌና ፓውንድ + የሴይንት ሔሌና ፓውንድ + የሴይንት ሔሌና ፓውንድ + + + የሴራሊዎን ሊዎን + የሴራሊዎን ሊዎን + የሴራሊዎን ሊዎን + + + የሶማሌ ሺሊንግ + የሶማሌ ሺሊንግ + የሶማሌ ሺሊንግ + + + የሰርናሜዝ ዶላር + የሰርናሜዝ ዶላር + የሰርናሜዝ ዶላር + + + የደቡብ ሱዳን ፓውንድ + የደቡብ ሱዳን ፓውንድ + የደቡብ ሱዳን ፓውንድ + + + የሳኦ ቶመ እና ፕሪንሲፐ ዶብራ + የሳኦ ቶመ እና ፕሪንሲፐ ዶብራ + የሳኦ ቶመ እና ፕሪንሲፐ ዶብራ + + + የሲሪያ ፓውንድ + የሲሪያ ፓውንድ + የሲሪያ ፓውንድ + + + የስዋዚላንድ ሊላንገኒ + የስዋዚላንድ ሊላንገኒ + የስዋዚላንድ ሊላንገኒ + + + የታይላንድ ባህት + የታይላንድ ባህት + የታይላንድ ባህት + ฿ + + + የታጂክስታን ሶሞኒ + የታጂክስታን ሶሞኒ + የታጂክስታን ሶሞኒ + + + ቱርክሜኒስታኒ ማናት + ቱርክሜኒስታኒ ማናት + ቱርክሜኒስታኒ ማናት + + + የቱኒዚያ ዲናር + የቱኒዚያ ዲናር + የቱኒዚያ ዲናር + + + ቶንጋን ፓ'አንጋ + + + የቱርክ ሊራ + የቱርክ ሊራ + የቱርክ ሊራ + + + የትሪንዳድ እና ቶቤጎዶላር + የትሪንዳድ እና ቶቤጎዶላር + የትሪንዳድ እና ቶቤጎዶላር + + + የአዲሷ ታይዋን ዶላር + የአዲሷ ታይዋን ዶላር + የአዲሷ ታይዋን ዶላር + NT$ + + + የታንዛኒያ ሺሊንግ + የታንዛኒያ ሺሊንግ + የታንዛኒያ ሺሊንግ + + + የዩክሬን ሀሪይቭኒአ + የዩክሬን ሀሪይቭኒአ + የዩክሬን ሀሪይቭኒአ + + + የዩጋንዳ ሺሊንግ + የዩጋንዳ ሺሊንግ + የዩጋንዳ ሺሊንግ + + + የአሜሪካን ዶላር + የአሜሪካን ዶላር + የአሜሪካን ዶላር + US$ + + + የኡራጓይ ፔሶ + የኡራጓይ ፔሶ + የኡራጓይ ፔሶ + + + የኡዝፔኪስታን ሶም + የኡዝፔኪስታን ሶም + የኡዝፔኪስታን ሶም + + + የቬንዝዌላ ቦሊቫር + የቬንዝዌላ ቦሊቫር + የቬንዝዌላ ቦሊቫር + + + የቭየትናም ዶንግ + የቭየትናም ዶንግ + የቭየትናም ዶንግ + + + + የቫንዋንቱ ቫቱ + የቫንዋንቱ ቫቱ + የቫንዋንቱ ቫቱ + + + ሳሞአን ታላ + + + ሴኤፍአ ፍራንክ ቤእአሴ + ሴኤፍአ ፍራንክ ቤእአሴ + ሴኤፍአ ፍራንክ ቤእአሴ + FCFA + + + የምዕራብ ካሪብያን ዶላር + የምዕራብ ካሪብያን ዶላር + የምዕራብ ካሪብያን ዶላር + EC$ + + + ሴኤፍአ ፍራንክ ቤሴእአኦ + ሴኤፍአ ፍራንክ ቤሴእአኦ + ሴኤፍአ ፍራንክ ቤሴእአኦ + CFA + + + ሲ ኤፍ ፒ ፍራንክ + ሲ ኤፍ ፒ ፍራንክ + ሲ ኤፍ ፒ ፍራንክ + CFPF + + + ያልታወቀ ገንዘብ + + + የየመን ሪአል + የየመን ሪአል + የየመን ሪአል + + + የደቡብ አፍሪካ ራንድ + የደቡብ አፍሪካ ራንድ + የደቡብ አፍሪካ ራንድ + + + የዛምቢያ ክዋቻ (1968–2012) + የዛምቢያ ክዋቻ (1968–2012) + የዛምቢያ ክዋቻ (1968–2012) + + + የዛምቢያ ክዋቻ + የዛምቢያ ክዋቻ + የዛምቢያ ክዋቻ + + + የዚምቧቡዌ ዶላር + + + + {0}+ + {0}–{1} + + + + + + {0} በ{1} + + + {0} ጂ-ኃይል + {0} ጂ-ኃይል + + + {0} ደቂቃ + {0} ደቂቃ + + + {0} ሰከንድ + {0} ሰከንድ + + + {0} ዲግሪ + {0} ዲግሪ + + + {0} ኤክር + {0} ኤክር + + + {0} ሄክታር + {0} ሄክታር + + + {0} ካሬ ጫማ + {0} ካሬ ጫማ + + + {0} ካሬ ኪሎሜትር + {0} ካሬ ኪሎሜትር + + + {0} ካሬ ሜትር + {0} ካሬ ሜትር + + + {0} ካሬ ማይል + {0} ካሬ ማይል + + + {0} ቀናት + {0} ቀናት + + + {0} ሰዓት + {0} ሰዓቶች + + + {0} ሚሊሰከንድ + {0} ሚሊሰከንድ + + + {0} ደቂቃ + {0} ደቂቃዎች + + + {0} ወር + {0} ወራት + + + {0} ሰከንድ + {0} ሰከንዶች + + + {0} ሳምንት + {0} ሳምንታት + + + {0} ዓመታት + {0} ዓመታት + + + {0} ሴንቲሜትር + {0} ሴንቲሜትር + + + {0} ጫማ + {0} ጫማ + + + {0} ኢንች + {0} ኢንች + + + {0} ኪሎሜትር + {0} ኪሎሜትር + + + {0} የብርሃን ዓመት + {0} የብርሃን ዓመት + + + {0} ሜትር + {0} ሜትር + + + {0} ማይል + {0} ማይል + + + {0} ሚሊሜትር + {0} ሚሊሜትር + + + {0} ፒኮሜትር + {0} ፒኮሜትር + + + {0} ያርድ + {0} ያርድ + + + {0} ግራም + {0} ግራም + + + {0} ኪሎግራም + {0} ኪሎግራም + + + {0} አውንስ + {0} አውንስ + + + {0} ፓውንድ + {0} ፓውንድ + + + {0} የፈረስ ኃይል + {0} የፈረስ ኃይል + + + {0} ኪሎዋት + {0} ኪሎዋት + + + {0} ዋት + {0} ዋት + + + {0} ሄክቶፓስካል + {0} ሄክቶፓስካል + + + {0} ኢንች ሜርኩሪ + {0} ኢንች ሜርኩሪ + + + {0} ሚሊባር + {0} ሚሊባር + + + {0} ኪሎሜትር በሰዓት + {0} ኪሎሜትር በሰዓት + + + {0} ሜትር በሰከንድ + {0} ሜትር በሰከንድ + + + {0} ማይል በሰዓት + {0} ማይል በሰዓት + + + {0} ዲግሪ ሴልሺየስ + {0} ዲግሪ ሴልሺየስ + + + {0} ዲግሪ ፋራንሃይት + {0} ዲግሪ ፋራንሃይት + + + {0} ኩቢክ ኪሎሜትር + {0} ኩቢክ ኪሎሜትር + + + {0} ኩቢክ ማይል + {0} ኩቢክ ማይል + + + {0} ሊትር + {0} ሊትር + + + + + {0}/{1} + + + {0} ጂ + {0} ጂ + + + {0} ደቂቃ + {0} ደቂቃ + + + {0} ሰከንድ + {0} ሰከንድ + + + {0}°ዲግሪ + {0}°ዲግሪ + + + {0} ኤክር + {0} ኤክር + + + {0} ሄክታር + {0} ሄክታር + + + {0} ካሬ ጫማ + {0} ካሬ ጫማ + + + {0} ኪሜ² + {0} ኪሜ² + + + {0} ሜ² + {0} ሜ² + + + {0} ካሬ ማይል + {0} ካሬ ማይል + + + {0} ቀናት + {0} ቀናት + + + {0} ሰዓ + {0} ሰዓ + + + {0} ሚሴ + {0} ሚሴ + + + {0} ደቂ + {0} ደቂቃ + + + {0} ወራት + {0} ወራት + + + {0} ሰከ + {0} ሰከ + + + {0} ሳምንት + {0} ሳምንታት + + + {0} ዓመት + {0} ዓመታት + + + {0} ሴሜ + {0} ሴሜ + + + {0} ጫማ + {0} ጫማ + + + {0} ኢንች + {0} ኢንች + + + {0} ኪሜ + {0} ኪሜ + + + {0} ly + {0} ly + + + {0} ሜ + {0} ሜ + + + {0} ማይል + {0} ማይል + + + {0} ሚሜ + {0} ሚሜ + + + {0} ፒሜ + {0} ፒሜ + + + {0} ያርድ + {0} ያርድ + + + {0} ግ + {0} ግ + + + {0} ኪግ + {0} ኪግ + + + {0} አውንስ + {0} አውንስ + + + {0} ፓውንድ + {0} ፓውንድ + + + {0} የፈረስ ኃይል + {0} የፈረስ ኃይል + + + {0} ኪዋ + {0} ኪዋ + + + {0} ዋ + {0} ዋ + + + {0} ሄክቶፓስካል + {0} ሄክቶፓስካል + + + {0} ኢንች ሜርኩሪ + {0} ኢንች ሜርኩሪ + + + {0} ሚባ + {0} ሚባ + + + {0} ኪሜ/ሰ + {0} ኪሜ/ሰ + + + {0} ሜ/ሴ + {0} ሜ/ሴ + + + {0} ማይል/ሰ + {0} ማይል/ሰ + + + {0}°ሴ + {0}°ሴ + + + {0}°ፋ + {0}°ፋ + + + {0} ኪሜ³ + {0} ኪሜ³ + + + {0} ማይል³ + {0} ማይል³ + + + {0} ሊ + {0} ሊ + + + + + {0}/{1} + + + {0} ጂ + {0} ጂ + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ኤክር + {0} ኤክር + + + {0} ሄክታር + {0} ሄክታር + + + {0} ጫማ² + {0} ጫማ² + + + {0} ኪሜ² + {0} ኪሜ² + + + {0} ሜ² + {0} ሜ² + + + {0} ማይል² + {0} ማይል² + + + {0} ቀ + {0} ቀ + + + {0} ሰ + {0} ሰ + + + {0} ሚሴ + {0} ሚሴ + + + {0} ደ + {0} ደ + + + {0} ወር + {0} ወር + + + {0} ሴ + {0} ሴ + + + {0} ሳምንት + {0} ሳምንት + + + {0} ዓመት + {0} y + + + {0} ሴሜ + {0} ሴሜ + + + {0} ጫማ + {0} ጫማ + + + {0} ኢንች + {0} ኢንች + + + {0} ኪሜ + {0} ኪሜ + + + {0} ly + {0} ly + + + {0} ሜ + {0} ሜ + + + {0} ማይል + {0} ማይል + + + {0} ሚሜ + {0} ሚሜ + + + {0} ፒሜ + {0} ፒሜ + + + {0} ያርድ + {0} ያርድ + + + {0} ግ + {0} ግ + + + {0} ኪግ + {0} ኪግ + + + {0} አውንስ + {0} አውንስ + + + {0} ፓውንድ + {0} ፓውንድ + + + {0} የፈረስ ኃይል + {0} የፈረስ ኃይል + + + {0} ኪዋ + {0} ኪዋ + + + {0} ዋ + {0} ዋ + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} ሚባ + {0} ሚባ + + + {0} ኪሜ/ሰ + {0} ኪሜ/ሰ + + + {0} ሜ/ሴ + {0} ሜ/ሴ + + + {0} ማይል/ሰ + {0} ማይል/ሰ + + + {0}° + {0}° + + + {0}°ፋ + {0}°ፋ + + + {0} ኪሜ³ + {0} ኪሜ³ + + + {0} ማይል³ + {0} ማይል³ + + + {0} ሊ + {0} ሊ + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}፣ {1} + {0}፣ {1} + {0}, እና {1} + {0} እና {1} + + + + + አዎን:ዎ + አይ:ይ + + + + diff --git a/library/Zend/Locale/Data/am_ET.xml b/library/Zend/Locale/Data/am_ET.xml new file mode 100755 index 000000000..989439f0e --- /dev/null +++ b/library/Zend/Locale/Data/am_ET.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar.xml b/library/Zend/Locale/Data/ar.xml new file mode 100755 index 000000000..baa49e797 --- /dev/null +++ b/library/Zend/Locale/Data/ar.xml @@ -0,0 +1,7884 @@ + + + + + + + + + + + + {0} ({1}) + {0}، {1} + {0}: {1} + + + الأفارية + الأبخازية + الأتشينيزية + الأكولية + الأدانجمية + الأديجه + الأفستية + الأفريقية + الأفريهيلية + أغم + الآينوية + الأكانية + الأكادية + الأليوتية + الألطائية الجنوبية + الأمهرية + الأراجونية + الإنجليزية القديمة + الأنجيكا + العربية + العربية الرسمية الحديثة + الآرامية + الأروكانية + الأراباهو + الأراواكية + الأسامية + آسو + الأسترية + الأفاريكية + الأوادية + الأيمارا + الأذرية + الأذرية + الباشكيرية + البلوشية + اللغة البالية + الباسا + بامن + البيلوروسية + البيجا + البيمبا + بينا + البلغارية + البهوجبرية + البيسلامية + البيكولية + البينية + السيكسيكية + البامبارا + البنغالية + التبتية + البريتونية + البراجية + البودو + البوسنية + أكوس + البرياتية + البجينيزية + البلينية + الكتالانية + الكادو + الكاريبية + الأتسام + الشيشانية + السيبيونو + تشيغا + التشامورو + التشيبشا + التشاجاتاي + التشكيزية + الماري + الشينوك جارجون + الشوكتو + الشيباوايان + الشيروكي + الشايان + السريانية الكردية + الكورسيكية + القبطية + الكرى + التركية الكريمينية + التشيكية + الكاشبايان + سلافية كنسية + التشفاش + الولزية + الدانماركية + الداكوتا + الدارجوا + تيتا + الألمانية + الألمانية النمساوية + الألمانية العليا السويسرية + الديلوير + السلافية + الدوجريب + الدنكا + زرمة + الدوجري + الصربية السفلى + الديولا + الهولندية الوسطى + المالديفية + جولا فونيا + الدايلا + الزونخاية + القرعانية + إمبو + الإيوي + الإفيك + المصرية القديمة + الإكاجك + اليونانية + الإمايت + الإنجليزية + الإنجليزية الأسترالية + الإنجليزية الكندية + الإنجليزية البريطانية + الإنجليزية المملكة المتحدة + الإنجليزية الولايات المتحدة + الإنجليزية الولايات المتحدة + الإنجليزية الوسطى + الإسبرانتو + الإسبانية + إسبانية أمريكا اللاتينية + الإسبانية الأوروبية + الإستونية + لغة الباسك + الإيوندو + الفارسية + الفانج + الفانتي + الفلة + الفنلندية + الفلبينية + الفيجية + الفارويز + الفون + الفرنسية + الفرنسية الكندية + الفرنسية السويسرية + الفرنسية الوسطى + الفرنسية القديمة + الفريزينية الشمالية + الفريزينية الشرقية + الفريلايان + الفريزيان + الأيرلندية + الجا + الجايو + الجبيا + الغيلية الأسكتلندية + الجيز + لغة أهل جبل طارق + الجاليكية + الألمانية العليا الوسطى + الجواراني + الألمانية العليا القديمة + الجندي + الجورونتالو + القوطية + الجريبو + اليونانية القديمة + الألمانية السويسرية + الغوجاراتية + قيسي + المنكية + غوتشن + الهوسا + الهيدا + لغة أهل الهاواي + العبرية + الهندية + الهيليجينون + الحثية + الهمونجية + الهيري موتو + الكرواتية + الصربية العليا + الهايتية + الهنغارية + الهبا + الأرمينية + الهيريرو + اللّغة الوسيطة + الإيبان + الإندونيسية + الإنترلينج + الإيجبو + السيتشيون يي + الإينبياك + الإيلوكو + الإنجوشية + الإيدو + الأيسلاندية + الإيطالية + الإينكتيتت + اليابانية + اللوجبان + نغومبا + ماتشيم + الجيدو - الفارسي + الجيدو - العربي + الجاوية + الجورجية + الكارا-كالباك + القبيلية + الكاتشين + الجو + الكامبا + الكوي + الكاباردايان + كانمبو + ماكونده + كابوفيرديانو + الكورو + الكونغو + الكازية + الخوتانيز + كويرا تشيني + الكيكيو + الكيونياما + الكازاخستانية + الكالاليست + كالينجين + الخميرية + الكيمبندو + الكانادا + الكورية + الكونكانية + الكوسراين + الكبيل + الكانيوري + الكاراتشاي-بالكار + الكريلية + كرخانة + الكشميرية + شامبالا + بافيا + الكردية + الكميك + الكتيناي + الكومي + الكورنية + القرغيزية + اللاتينية + الإسباعبرية + انجي + اللاهندا + اللامبا + اللوكسمبرجية + الليزجهايانية + الجاندا + الليمبرجيشية + اللينجالا + اللاوية + منغولى + اللوزي + اللتوانية + اللبا-كاتانجا + اللبا-لؤلؤ + اللوسينو + اللوندا + اللو + اللشاي + لويا + اللاتفية + المادريز + الماجا + المايثيلي + الماكاسار + الماندينغ + الماساي + مابا + الموكشا + الماندار + الميند + ميرو + المورسيانية + المالاجاشية + الأيرلندية الوسطى + ماخاوا-ميتو + ميتا + المارشالية + الماورية + الميكماكيونية + المينانجكاباو + المقدونية + الماليالام + المنغولية + المانشو + المانيبري + الموهوك + الموسي + الماراثي + لغة الملايو + المالطية + مندنج + لغات متعددة + الكريك + الميرانديز + المارواري + البورمية + الأرزية + النورو + اللغة النابولية + ناما + البوكمالية النرويجية + النديبيل الشمالي + الألمانية السفلى + النيبالية + النيواري + الندونجا + النياس + النيوي + الهولندية + الفلمنك + كوايسو + النينورسك النرويجي + النرويجية + النوجاي + النورس القديم + أنكو + النديبيل الجنوبي + السوتو الشمالية + النوير + النافاجو + النوارية التقليدية + النيانجا + النيامويزي + النيانكول + النيورو + النزيما + الأوكيتانية + الأوجيبوا + الأورومو + الأورييا + الأوسيتيك + الأوساج + التركية العثمانية + البنجابية + البانجاسينان + البهلوية + البامبانجا + البابيامينتو + البالوان + الفارسية القديمة + الفينيقية + البالية + البولندية + البوهنبيايان + البروفانسية القديمة + البشتونية + بشتو + البرتغالية + البرتغالية البرازيلية + البرتغالية الأوروبية + الكويتشوا + الراجاسثانية + الراباني + الراروتونجاني + الرومانشية + الرندي + الرومانية + المولدوفية + رومبو + غجري + الجذر + الروسية + الأرومانيان + الكينيارواندا + روا + السنسكريتية + السانداوي + الساخية + الآرامية السومارية + سامبورو + الساساك + السانتالي + نامبي + سانغو + السردينية + الصقلية + الأسكتلندية + السندية + السامي الشمالي + سينا + السيلكب + كويرابورو سيني + السانجو + الأيرلندية القديمة + الشانية + العربية التشادية + السنهالية + السيدامو + السلوفاكية + السلوفانية + الساموائية + السامي الجنوبي + اللول سامي + الإيناري سامي + السكولت سامي + الشونا + السونينك + الصومالية + السوجدين + الألبانية + الصربية + السرانان تونجو + السرر + السواتي + السوتو الجنوبية + السوندانية + السوكوما + السوسو + السومارية + السويدية + السواحلية + القمرية + الكونغو السواحلية + سريانية تقليدية + السريانية + التاميلية + التيلجو + التيمن + تيسو + التيرينو + التيتم + الطاجيكية + التايلاندية + التيجرينيا + التيجر + التيف + التركمانية + التوكيلاو + التاغالوغية + الكلينجون + التلينغيتية + التاماشيك + التسوانية + التونغية + تونجا - نياسا + التوك بيسين + التركية + السونجا + التسيمشيان + التتارية + التامبوكا + التوفالو + التوي + تاساواق + التاهيتية + التُرك + الأمازيغية وسط الأطلس + الأدمرت + الأغورية + الأيغورية + اليجاريتيك + الأوكرانية + الأمبندو + لغة غير معروفة + الأردية + الأوزباكية + الفاي + الفيندا + الفيتنامية + الفوتيك + فونجو + الولونية + الوالامو + الواراي + الواشو + الولوف + الكالميك + الخوسا + سوجا + الياو + اليابيز + يانجبن + اليديشية + اليوروبية + الكَنْتُونية + الزهيونج + الزابوتيك + رموز المعايير الأساسية + الزيناجا + التمازيغية المغربية القياسية + الصينية + الصينية المبسطة + الصينية التقليدية + الزولو + الزونية + بدون محتوى لغوي + زازا + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + العالم + أفريقيا + أمريكا الشمالية + أمريكا الجنوبية + أوقيانوسيا + غرب أفريقيا + أمريكا الوسطى + شرق أفريقيا + شمال أفريقيا + وسط أفريقيا + أفريقيا الجنوبية + الأمريكتين + شمال أمريكا + الكاريبي + شرق آسيا + جنوب آسيا + جنوب شرق آسيا + جنوب أوروبا + أسترالاسيا + ميلانيزيا + الجزر الميكرونيزية + بولينيزيا + آسيا + وسط آسيا + غرب آسيا + أوروبا + شرق أوروبا + شمال أوروبا + غرب أوروبا + أمريكا اللاتينية + جزيرة أسينشيون + أندورا + الإمارات العربية المتحدة + أفغانستان + أنتيغوا وبربودا + أنغويلا + ألبانيا + أرمينيا + جزر الأنتيل الهولندية + أنغولا + أنتاركتيكا + الأرجنتين + ساموا الأمريكية + النمسا + أستراليا + آروبا + جزر آلاند + أذربيجان + البوسنة والهرسك + بربادوس + بنجلاديش + بلجيكا + بوركينا فاسو + بلغاريا + البحرين + بوروندي + بنين + سان بارتليمي + برمودا + بروناي + بوليفيا + هولندا الكاريبية + البرازيل + الباهاما + بوتان + جزيرة بوفيه + بتسوانا + روسيا البيضاء + بليز + كندا + جزر كوكوس + الكونغو - كينشاسا + جمهورية الكونغو الديمقراطية + جمهورية أفريقيا الوسطى + الكونغو - برازافيل + جمهورية الكونغو + سويسرا + ساحل العاج + جزر كوك + شيلي + الكاميرون + الصين + كولومبيا + جزيرة كليبيرتون + كوستاريكا + كوبا + الرأس الأخضر + كوراساو + جزيرة الكريسماس + قبرص + جمهورية التشيك + ألمانيا + دييغو غارسيا + جيبوتي + الدانمرك + دومينيكا + جمهورية الدومينيك + الجزائر + سيوتا وميليلا + الإكوادور + أستونيا + مصر + الصحراء الغربية + أريتريا + إسبانيا + إثيوبيا + الاتحاد الأوروبي + فنلندا + فيجي + جزر فوكلاند + جزر فوكلاند - جزر مالفيناس + ميكرونيزيا + جزر فارو + فرنسا + الجابون + المملكة المتحدة + المملكة المتحدة + غرينادا + جورجيا + غويانا الفرنسية + غيرنزي + غانا + جبل طارق + غرينلاند + غامبيا + غينيا + جوادلوب + غينيا الإستوائية + اليونان + جورجيا الجنوبية وجزر ساندويتش الجنوبية + غواتيمالا + غوام + غينيا بيساو + غيانا + هونغ كونغ الصينية + هونغ كونغ + جزيرة هيرد وجزر ماكدونالد + هندوراس + كرواتيا + هايتي + هنغاريا + جزر الكناري + أندونيسيا + أيرلندا + إسرائيل + جزيرة مان + الهند + الإقليم البريطاني في المحيط الهندي + العراق + إيران + أيسلندا + إيطاليا + جيرسي + جامايكا + الأردن + اليابان + كينيا + قرغيزستان + كمبوديا + كيريباتي + جزر القمر + سانت كيتس ونيفيس + كوريا الشمالية + كوريا الجنوبية + الكويت + جزر الكايمن + كازاخستان + لاوس + لبنان + سانت لوسيا + ليختنشتاين + سريلانكا + ليبيريا + ليسوتو + ليتوانيا + لوكسمبورغ + لاتفيا + ليبيا + المغرب + موناكو + مولدافيا + الجبل الأسود + سانت مارتن + مدغشقر + جزر المارشال + مقدونيا + مقدونيا- جمهورية مقدونيا اليوغسلافية السابقة + مالي + ميانمار -بورما + منغوليا + مكاو الصينية (منطقة إدارية خاصة) + مكاو + جزر ماريانا الشمالية + مارتينيك + موريتانيا + مونتسرات + مالطا + موريشيوس + جزر المالديف + ملاوي + المكسيك + ماليزيا + موزمبيق + ناميبيا + كاليدونيا الجديدة + النيجر + جزيرة نورفوك + نيجيريا + نيكاراغوا + هولندا + النرويج + نيبال + ناورو + نيوي + نيوزيلاندا + عُمان + بنما + بيرو + بولينيزيا الفرنسية + بابوا غينيا الجديدة + الفلبين + باكستان + بولندا + سانت بيير وميكولون + جزر بيتكيرن + بورتوريكو + الأراضي الفلسطينية + فلسطين + البرتغال + بالاو + باراغواي + قطر + أوقيانوسيا النائية + روينيون + رومانيا + صربيا + روسيا + رواندا + المملكة العربية السعودية + جزر سليمان + سيشل + السودان + السويد + سنغافورة + سانت هيلنا + سلوفينيا + سفالبارد وجان مايان + سلوفاكيا + سيراليون + سان مارينو + السنغال + الصومال + سورينام + جنوب السودان + ساو تومي وبرينسيبي + السلفادور + سينت مارتن + سوريا + سوازيلاند + تريستان دي كونها + جزر الترك وجايكوس + تشاد + المقاطعات الجنوبية الفرنسية + توجو + تايلاند + طاجكستان + توكيلو + تيمور الشرقية + تركمانستان + تونس + تونغا + تركيا + ترينيداد وتوباغو + توفالو + تايوان + تانزانيا + أوكرانيا + أوغندا + جزر الولايات المتحدة النائية + الولايات المتحدة + الولايات المتحدة + أورغواي + أوزبكستان + الفاتيكان + سانت فنسنت وغرنادين + فنزويلا + جزر فرجين البريطانية + جزر فرجين الأمريكية + فيتنام + فانواتو + جزر والس وفوتونا + ساموا + كوسوفو + اليمن + مايوت + جنوب أفريقيا + زامبيا + زيمبابوي + منطقة غير معروفة + + + التهجئة الألمانية التقليدية + التهجئة الألمانية لعام 1996 + أكاديمي + أرمنية شرقية + أرمنية غربية + الأبجدية التركية اللاتينية الموحدة + التهجئة العامة + أحادي النغمة + لهجة ناتيسون + بينيين باللاتينية + متعدد النغمات + حاسوب + تهجئة تمت مراجعتها + الإنجليزية الأسكتلندنية الرسمية + التهجئة الموحدة + التهجئة المراجعة الموحدة + بلنسية + المندرين باللاتينية - ويد–جيلز + + + التقويم + التصنيف بحسب تجاهل الرموز + التصنيف بحسب اللكنة المعكوسة + الترتيب بحسب الأحرف الكبيرة/الصغيرة + التصنيف بحسب حساسية حالة الأحرف + التصنيف بحسب الكانا + ترتيب الفرز + التصنيف الموحد + التصنيف الرقمي + قوة التصنيف + العملة + الأرقام + المنطقة الزمنية + متغيرات اللغة + تصنيف كرموز + استخدام خاص + + + الأرقام العربية الهندية + الأرقام العربية الهندية الممتدة + الأرقام الأرمينية + الأرقام الأرمينية الصغيرة + الأرقام البنغالية + ترتيب فرز الصينية التقليدية (Big5) + التقويم البوذي + التقويم الصيني + التقويم القبطي + الأرقام الديفانغارية + ترتيب فرز القاموس + ترتيب فرز Unicode الافتراضي + الأرقام الإثيوبية + التقويم الإثيوبي + تقويم أميتي أليم الإثيوبي + الأرقام المالية + أرقام كاملة العرض + ترتيب فرز الصينية المبسطة (GB2312) + الأرقام الجورجية + التقويم الميلادي + الأرقام اليونانية + الأرقام اليونانية الصغيرة + الأرقام الغوجاراتية + الأرقام الغورموخية + الأرقام العشرية الصينية + الأرقام الصينية المبسطة + الأرقام المالية الصينية المبسطة + الأرقام الصينية التقليدية + الأرقام المالية الصينية التقليدية + الأرقام العبرية + التقويم العبري + تصنيف الكل + التقويم القومي الهندي + التقويم الهجري + التقويم الإسلامي المدني + التقويم الإسلامي (مستخدم بالسعودية) + التقويم الإسلامي (مجدول، العصر الفلكي) + التقويم الإسلامي (أم القرى) + التقويم الياباني + الأرقام اليابانية + الأرقام المالية اليابانية + الأرقام الخيمرية + أرقام الكانادا + الأرقام اللاوية + الأرقام الغربية + تصنيف الأحرف الصغيرة أولاً + الأرقام الملايلامية + الأرقام المغولية + أرقام ميانمار + الأرقام الأصلية + تصنيف اللكنات بشكل عادي + ترتيب تصنيف حالة الأحرف الطبيعية + تصنيف بحسب الأحرف غير الحساسة لحالة الأحرف + تصنيف الكانا بشكل منفصل + التصفية بدون تسوية + تصنيف الأرقام على حدة + تصنيف الرموز + أرقام الأوريا + التقويم الفارسي + ترتيب فرز دليل الهاتف + ترتيب الفرز الصوتي + الترتيب الصيني بنيين المبسط + تصنيف الحروف الأساسية فقط + تصنيف اللكنات/الحالة/العرض/الكانا + ترتيب فرز محسَّن + تقويم مينجو + الأرقام الرومانية + الأرقام الرومانية الصغيرة + بحث لأغراض عامة + بحث باستخدام حرف الهانغول الساكن الأول + تصنيف اللكنات + تصنيف تجاهل الرموز + ترتيب الفرز القياسي + الترتيب الصيني بنيين التقليدي + الأرقام التاميلية التقليدية + الأرقام التاميلية + الأرقام التيلوغوية + تصنيف اللكنات/الحالة/العرض + الأرقام التايلاندية + الأرقام التبتية + ترتيب تقليدي + أرقام تقليدية + ترتيب تصنيف الجذر والضغطات + تصنيف الأحرف الكبيرة أولاً + أرقام فاي + تصنيف اللكنات معكوسة + تصنيف بحسب حساسية الأحرف + تصنيف الكانا بشكل مختلف + تصنيف Unicode طبيعي + تصنيف الأرقام بالعدد + + + بي جي إن + رقمي + أسلوب + يو إن جي إي جي إن + اللكنات + عرض كامل + نصف العرض + جامو + بن يين + نشر + + + النظام المتري + المملكة المتحدة + النظام الأمريكي + + + اللغة: {0} + نظام الكتابة: {0} + المنطقة: {0} + + + + + right-to-left + + + + [\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0670 ء آ أ ؤ إ ئ ا ب ت ة ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي ى] + [\u200C\u200D\u200E\u200F پ چ ژ ڜ ڢ ڤ ڥ ٯ ڧ ڨ ک گ ی] + [ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي] + [\- ‐ – — ، ؛ \: ! ؟ . ' " ( ) \[ \]] + {0}… + …{0} + {0}…{1} + ؟ + + + + + + + + + + + + + التقويم البوذي + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + توت + بابه + هاتور + كيهك + طوبة + أمشير + برمهات + برمودة + بشنس + بؤونة + أبيب + مسرى + نسيئ + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + مسكريم + تكمت + هدار + تهساس + تر + يكتت + مجابيت + ميازيا + جنبت + سين + هامل + نهاس + باجمن + + + + + + + + + EEEE، d MMMM، y G + + + + + d MMMM، y G + + + + + dd‏/MM‏/y G + + + + + d‏/M‏/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E، d + y G + MMM y G + d MMM، y G + E، d MMM، y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/‏M + E، d/M + LLL + d MMM + E، d MMM + mm:ss + y G + y G + M‏/y G + d‏/M‏/y G + E، d/‏M/‏y G + MMM، y G + d MMM، y G + E، d MMM، y G + MMMM، y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E، d/‏M –‏ E، d/‏M + E، d/‏M – E، d/‏M + + + MMM–MMM + + + MMM d–d + d MMM – d MMM + + + E، d – E، d MMM + E، d MMM – E، d MMM + + + LLLL–LLLL + + + y–y G + + + M‏/y – M‏/y G + M‏/y – M‏/y G + + + d‏/M‏/y – d‏/M‏/y G + d‏/M‏/y – d‏/M‏/y G + d‏/M‏/y – d‏/M‏/y G + + + E، dd‏/MM‏/y – E، dd‏/MM‏/y G + E، d‏/M‏/y – E، d‏/M‏/y G + E، d‏/M‏/y – E، d‏/M‏/y G + + + MMM – MMM، y G + MMM، y – MMM، y G + + + d–d MMM، y G + d MMM – d MMM، y G + d MMM، y – d MMM، y G + + + E، d – E، d MMM، y G + E، d MMM – E، d MMM، y G + E، d MMM، y – E، d MMM، y G + + + MMMM – MMMM، y G + MMMM، y – MMMM، y G + + + + + + + + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + ي + ف + م + أ + و + ن + ل + غ + س + ك + ب + د + + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + ي + ف + م + أ + و + ن + ل + غ + س + ك + ب + د + + + يناير + فبراير + مارس + أبريل + مايو + يونيو + يوليو + أغسطس + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + + + + + الأحد + الاثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + + ح + ن + ث + ر + خ + ج + س + + + الأحد + الاثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + + الأحد + الاثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + + + + الأحد + الاثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + + ح + ن + ث + ر + خ + ج + س + + + الأحد + الاثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + + الأحد + الاثنين + الثلاثاء + الأربعاء + الخميس + الجمعة + السبت + + + + + + + الربع الأول + الربع الثاني + الربع الثالث + الربع الرابع + + + ١ + ٢ + ٣ + ٤ + + + الربع الأول + الربع الثاني + الربع الثالث + الربع الرابع + + + + + الربع الأول + الربع الثاني + الربع الثالث + الربع الرابع + + + ١ + ٢ + ٣ + ٤ + + + الربع الأول + الربع الثاني + الربع الثالث + الربع الرابع + + + + + + + ص + م + + + + + + قبل الميلاد + ميلادي + + + ق.م + م + + + + + + EEEE، d MMMM، y + + + + + d MMMM، y + + + + + dd‏/MM‏/y + + + + + d‏/M‏/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E، d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM، y G + E، d MMM، y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/‏M + E، d/M + dd‏/MM + LLL + d MMM + E، d MMM + d MMMM + E، d MMMM + mm:ss + y + M‏/y + d‏/M‏/y + E، d/‏M/‏y + MM‏/y + MMM y + d MMM، y + E، d MMM، y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E، d/‏M –‏ E، d/‏M + E، d/‏M – E، d/‏M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E، d – E، d MMM + E، d MMM – E، d MMM + + + LLLL–LLLL + + + y–y + + + M‏/y – M‏/y + M‏/y – M‏/y + + + d‏/M‏/y – d‏/M‏/y + d‏/M‏/y – d‏/M‏/y + d‏/M‏/y – d‏/M‏/y + + + E، dd‏/MM‏/y – E، dd‏/MM‏/y + E، d‏/M‏/y – E، d‏/M‏/y + E، d‏/M‏/y – E، d‏/M‏/y + + + MMM – MMM، y + MMM، y – MMM، y + + + d–d MMM، y + d MMM – d MMM، y + d MMM، y – d MMM، y + + + E، d – E، d MMM، y + E، d MMM – E، d MMM، y + E، d MMM، y – E، d MMM، y + + + MMMM – MMMM، y + MMMM، y – MMMM، y + + + + + + + + + تشري + مرحشوان + كيسلو + طيفت + شباط + آذار الأول + آذار + آذار الثاني + نيسان + أيار + سيفان + تموز + آب + أيلول + + + + + + ص + + + + + + dd‏/MM‏/y G + + + + + d‏/M‏/y GGGGG + + + + + + + + + محرم + صفر + ربيع الأول + ربيع الآخر + جمادى الأولى + جمادى الآخرة + رجب + شعبان + رمضان + شوال + ذو القعدة + ذو الحجة + + + ١ + ٢ + ٣ + ٤ + ٥ + ٦ + ٧ + ٨ + ٩ + ١٠ + ١١ + ١٢ + + + محرم + صفر + ربيع الأول + ربيع الآخر + جمادى الأولى + جمادى الآخرة + رجب + شعبان + رمضان + شوال + ذو القعدة + ذو الحجة + + + + + محرم + صفر + ربيع الأول + ربيع الآخر + جمادى الأولى + جمادى الآخرة + رجب + شعبان + رمضان + شوال + ذو القعدة + ذو الحجة + + + ١ + ٢ + ٣ + 4 + ٥ + ٦ + ٧ + ٨ + ٩ + ١٠ + ١١ + ١٢ + + + محرم + صفر + ربيع الأول + ربيع الآخر + جمادى الأولى + جمادى الآخرة + رجب + شعبان + رمضان + شوال + ذو القعدة + ذو الحجة + + + + + + هـ + + + + + + EEEE، d MMMM، y G + + + + + d MMMM، y G + + + + + d MMM، y G + + + + + d‏/M‏/y GGGGG + + + + + + d + L + d/‏M + M‏/y G + d‏/M‏/y G + E، d/‏M/‏y G + MMM y G + + + + + + + تيكا + هاكتشي + هاكهو + شتشو + تيهو + كيين + وادو + رييكي + يورو + جينكي + تمبيو + تمبيو-كامبو + تمبيو-شوهو + تمبيو-هوجي + تمفو-جينجو + جينجو-كيين + هوكي + تن-أو + إنرياكو + ديدو + كونين + تنتشو + شووا (٨٣٤–٨٤٨)‏ + كاجو + نينجو + سيكو + تنان + جوجان + جينكيي + نينا + كامبيو + شوتاي + انجي + انتشو + شوهيي + تنجيو + تنرياكو + تنتوكو + أووا + كوهو + آنا + تينروكو + تن-نن + جوجن + تنجن + إيكان + كانا + اي-ان + ايسو + شورياكو (٩٩٠–٩٩٥)‏ + تشوتوكو + تشوهو + كانكو + تشووا + كانين + جاين + مانجو + تشوجين + تشورياكو + تشوكيو (١٠٤٠–١٠٤٤)‏ + كانتوكو + ايشو (١٠٤٦–١٠٥٣)‏ + تينجي + كوهيي + جيرياكو + انكيو (١٠٦٩–١٠٧٤)‏ + شوهو (١٠٧٤–١٠٧٧)‏ + شورياكو (١٠٧٧–١٠٨١)‏ + ايهو + أوتوكو + كانجي + كاهو + ايتشو + شوتوكو + كووا (١٠٩٩–١١٠٤)‏ + تشوجي + كاشو + تنين + تن-اي + ايكيو (١١١٣–١١١٨)‏ + جن-اي + هوان + تنجي + ديجي + تنشو (١١٣١–١١٣٢)‏ + تشوشو + هوين + ايجي + كوجي (١١٤٢–١١٤٤)‏ + تنيو + كيوان + نينبيي + كيوجو + هجين + هيجي + ايرياكو + أوهو + تشوكان + ايمان + نين-ان + كاو + شون + أنجين + جيشو + يووا + جيي + جنريوكو + بنجي + كنكيو + شوجي + كنين + جنكيو (١٢٠٤–١٢٠٦)‏ + كن-اي + شوجن (١٢٠٧–١٢١١)‏ + كنرياكو + كنبو (١٢١٣–١٢١٩)‏ + شوكيو + جو + جيننين + كروكو + أنتيي + كنكي + جويي + تمبكو + بنرياكو + كاتيي + رياكنين + ان-أو + نينجي + كنجين + هوجي + كنتشو + كوجن + شوكا + شوجن (١٢٥٩–١٢٦٠)‏ + بن-أو + كوتشو + بن-اي + كنجي + كوان + شوو (١٢٨٨–١٢٩٣)‏ + اينين + شوان + كنجن + كجن + توكجي + انكي + أوتشو + شووا (١٣١٢–١٣١٧)‏ + بنبو + جنو + جنكيو (١٣٢١–١٣٢٤)‏ + شوتشو (١٣٢٤–١٣٢٦)‏ + كريكي + جنتكو + جنكو + كمو + إنجن + كوككو + شوهي + كنتكو + بنتشو + تنجو + كورياكو + كووا (١٣٨١–١٣٨٤)‏ + جنتشو + مييتكو (١٣٨٤–١٣٨٧)‏ + كاكي + كو + مييتكو (١٣٩٠–١٣٩٤)‏ + أويي + شوتشو (١٤٢٨–١٤٢٩)‏ + ايكيو (١٤٢٩–١٤٤١)‏ + ككيتسو + بن-أن + هوتكو + كيوتكو + كوشو + تشوركو + كنشو + بنشو + أونين + بنمي + تشوكيو (١٤٨٧–١٤٨٩)‏ + انتكو + ميو + بنكي + ايشو (١٥٠٤–١٥٢١)‏ + تييي + كيوركو + تنمن + كوجي (١٥٥٥–١٥٥٨)‏ + ايركو + جنكي + تنشو (١٥٧٣–١٥٩٢)‏ + بنركو + كيتشو + جنوا + كان-اي + شوهو (١٦٤٤–١٦٤٨)‏ + كيان + شوو (١٦٥٢–١٦٥٥)‏ + ميرياكو + منجي + كنبن + انبو + تنوا + جوكيو + جنركو + هويي + شوتكو + كيوهو + جنبن + كنبو (١٧٤١–١٧٤٤)‏ + انكيو (١٧٤٤–١٧٤٨)‏ + كان-ان + هورياكو + مييوا + ان-اي + تنمي + كنسي + كيووا + بنكا + بنسي + تنبو + كوكا + كاي + أنسي + من-ان + بنكيو + جنجي + كيو + ميجي + تيشو + شووا + هيسي + + + + + + + + فرفردن + أذربيهشت + خرداد + تار + مرداد + شهرفار + مهر + آيان + آذر + دي + بهمن + اسفندار + + + + + + ه‍.ش + + + + + + + + Before R.O.C. + جمهورية الصي + + + + + + + العصر + + + السنة + السنة الماضية + هذه السنة + السنة التالية + + خلال {0} من السنوات + خلال {0} من السنوات + خلال سنتين + خلال {0} سنوات + خلال {0} سنة + خلال {0} من السنوات + + + قبل {0} من السنوات + قبل {0} من السنوات + قبل سنتين + قبل {0} سنوات + قبل {0} سنة + قبل {0} من السنوات + + + + الشهر + الشهر الماضي + هذا الشهر + الشهر التالي + + خلال {0} من الشهور + خلال {0} من الشهور + خلال شهرين + خلال {0} شهور + خلال {0} شهرًا + خلال {0} من الشهور + + + قبل {0} من الشهور + قبل {0} من الشهور + قبل شهرين + قبل {0} أشهر + قبل {0} شهرًا + قبل {0} من الشهور + + + + الأسبوع + الأسبوع الماضي + هذا الأسبوع + الأسبوع التالي + + خلال {0} من الأسابيع + خلال {0} من الأسابيع + خلال أسبوعين + خلال {0} أسابيع + خلال {0} أسبوعًا + خلال {0} من الأسابيع + + + قبل {0} من الأسابيع + قبل {0} من الأسابيع + قبل أسبوعين + قبل {0} أسابيع + قبل {0} أسبوعًا + قبل {0} من الأسابيع + + + + يوم + أول أمس + أمس + اليوم + غدًا + بعد الغد + + خلال {0} من الأيام + خلال {0} من الأيام + خلال يومين + خلال {0} أيام + خلال {0} يومًا + خلال {0} من الأيام + + + قبل {0} من الأيام + قبل {0} من الأيام + قبل يومين + قبل {0} أيام + قبل {0} يومًا + قبل {0} من الأيام + + + + اليوم + + + الأحد الماضي + الأحد الحالي + الأحد التالي + + + الاثنين الماضي + الاثنين الحالي + الاثنين التالي + + + الثلاثاء الماضي + الثلاثاء الحالي + الثلاثاء التالي + + + الأربعاء الماضي + الأربعاء الحالي + الأربعاء التالي + + + الخميس الماضي + الخميس الحالي + الخميس التالي + + + الجمعة الماضية + الجمعة الحالية + الجمعة التالية + + + السبت الماضي + السبت الحالي + السبت التالي + + + ص/م + + + الساعات + + خلال {0} من الساعات + خلال {0} من الساعات + خلال ساعتين + خلال {0} ساعات + خلال {0} ساعة + خلال {0} من الساعات + + + قبل {0} من الساعات + قبل {0} من الساعات + قبل ساعتين + قبل {0} ساعات + قبل {0} ساعة + قبل {0} من الساعات + + + + الدقائق + + خلال {0} من الدقائق + خلال {0} من الدقائق + خلال دقيقتين + خلال {0} دقائق + خلال {0} دقيقة + خلال {0} من الدقائق + + + قبل {0} من الدقائق + قبل {0} من الدقائق + قبل دقيقتين + قبل {0} دقائق + قبل {0} دقيقة + قبل {0} من الدقائق + + + + الثواني + الآن + + خلال {0} من الثواني + خلال {0} من الثواني + خلال ثانيتين + خلال {0} ثوانِ + خلال {0} ثانية + خلال {0} من الثواني + + + قبل {0} من الثواني + قبل {0} من الثواني + قبل ثانيتين + قبل {0} ثوانِ + قبل {0} ثانية + قبل {0} من الثواني + + + + التوقيت + + + + +HH:mm;-HH:mm + جرينتش{0} + جرينتش + توقيت {0} + توقيت {0} الصيفي + توقيت {0} الرسمي + {1} ({0}) + + مدينة غير معروفة + + + أندورا + + + دبي + + + كابول + + + أنتيغوا + + + أنغيلا + + + تيرانا + + + يريفان + + + لواندا + + + روثيرا + + + بالمير + + + سايووا + + + ماوسون + + + دافيز + + + فوستوك + + + كاساي + + + دي مونت دو روفيل + + + ماك موردو + + + ريو جالييوس + + + ميندوزا + + + سان خوان + + + أشوا + + + لا ريوجا + + + سان لويس + + + كاتاماركا + + + سالطا + + + جوجو + + + تاكمان + + + كوردوبا + + + بوينوس أيرس + + + باغو باغو + + + فيينا + + + برثا + + + أوكلا + + + دارون + + + استراليا(توقيت أدليادا) + + + بروكن هيل + + + كوري + + + ميلبورن + + + هوبارت + + + ليندمان + + + سيدني + + + برسيبان + + + ماكواري + + + لورد هاو + + + أروبا + + + ماريهامن + + + باكو + + + سراييفو + + + بربادوس + + + دكا + + + بروكسل + + + واغادوغو + + + صوفيا + + + البحرين + + + بوجومبورا + + + بورتو نوفو + + + سانت بارثيلمي + + + برمودا + + + بروناي + + + لا باز + + + كرالنديك + + + ايرونبي + + + ريوبرانكو + + + بورتو فيلو + + + باو فيستا + + + ماناوس + + + كيابا + + + سانتاريم + + + كومبو جراند + + + بلم + + + أروجوانيا + + + ساو باولو + + + باهيا + + + فورتاليزا + + + ماشيو + + + ريسيف + + + نوروناه + + + ناسو + + + تيمفو + + + غابورون + + + مينسك + + + بليز + + + داوسان + + + وايت هورس + + + اينوفيك + + + فانكوفر + + + داوسن كريك + + + كريستون + + + يلونيف + + + ايدمونتون + + + سوفت كارنت + + + كامبرديج باي + + + ريجينا + + + وينيبيج + + + ريزولوت + + + راني ريفر + + + رانكن انلت + + + كورال هاربر + + + ثندر باي + + + نيبيجون + + + تورونتو + + + اكويلت + + + بانجينتينج + + + وينكتون + + + هاليفاكس + + + جوس باي + + + جلاس باي + + + بلانك-سابلون + + + سانت جونس + + + كوكوس + + + كينشاسا + + + لومبباشا + + + بانغوي + + + برازافيل + + + زيورخ + + + أبيدجان + + + راروتونغا + + + استر + + + سانتياغو + + + دوالا + + + كاشجار + + + أرومكي + + + تشونجكينج + + + شنغهاي + + + هاربين + + + بوغوتا + + + كوستاريكا + + + هافانا + + + الرأس الأخضر + + + كوراكاو + + + كريسماس + + + نيقوسيا + + + براغ + + + بوسنغن + + + برلين + + + جيبوتي + + + كوبنهاغن + + + دومينيكا + + + سانتو دومينغو + + + الجزائر + + + جلاباجوس + + + غواياكويل + + + تالين + + + القاهرة + + + العيون + + + أسمرة + + + كناري + + + سيتا + + + مدريد + + + أديس أبابا + + + هلسنكي + + + فيجي + + + استانلي + + + ترك + + + باناب + + + كوسرا + + + فارو + + + باريس + + + ليبرفيل + + + + توقيت بريطانيا الصيفي + + لندن + + + غرينادا + + + تبليسي + + + كايين + + + غيرنسي + + + أكرا + + + جبل طارق + + + ثيل + + + غودثاب + + + سكورسبيسند + + + دانمرك شافن + + + بانجول + + + كوناكري + + + غوادلوب + + + مالابو + + + أثينا + + + جنوب جورجيا + + + غواتيمالا + + + غوام + + + بيساو + + + غيانا + + + هونغ كونغ + + + تيغوسيغالبا + + + زغرب + + + بورت أو برنس + + + بودابست + + + جاكرتا + + + بونتيانك + + + ماكسار + + + جايابيورا + + + + توقيت أيرلندا الصيفي + + دبلن + + + القدس + + + جزيرة مان + + + كالكتا + + + تشاغوس + + + بغداد + + + طهران + + + ريكيافيك + + + روما + + + جيرسي + + + جامايكا + + + عمان + + + طوكيو + + + نيروبي + + + بشكيك + + + بنوم بنه + + + اندربيرج + + + كيريتي ماتي + + + تاراوا + + + جزر القمر + + + سانت كيتس + + + بيونغ يانغ + + + سول + + + الكويت + + + كيمان + + + أكتاو + + + أورال + + + أكتوب + + + كيزيلوردا + + + ألماتي + + + فيانتيان + + + بيروت + + + سانت لوشيا + + + فادوز + + + كولومبو + + + مونروفيا + + + ماسيرو + + + فيلنيوس + + + لوكسمبورغ + + + ريغا + + + طرابلس + + + الدار البيضاء + + + موناكو + + + تشيسيناو + + + بودغوريكا + + + ماريغوت + + + أنتاناناريفو + + + كواجالين + + + ماجورو + + + سكوبي + + + باماكو + + + رانغون + + + هوفد + + + آلانباتار + + + تشوبالسان + + + ماكاو + + + سايبان + + + المارتينيك + + + نواكشوط + + + مونتسيرات + + + مالطة + + + موريشيوس + + + المالديف + + + بلانتاير + + + تيخوانا + + + سانتا إيزابيل + + + هيرموسيلو + + + مازاتلان + + + تشيواوا + + + باهيا بانديراس + + + أوجيناجا + + + مونتيري + + + مدينة المكسيك + + + ماتاموروس + + + ميريدا + + + كانكن + + + كوالا لامبور + + + كيشينج + + + مابوتو + + + ويندهوك + + + نوميا + + + نيامي + + + نورفولك + + + لاغوس + + + ماناغوا + + + أمستردام + + + أوسلو + + + كاتماندو + + + ناورو + + + نيوي + + + تشاثام + + + أوكلاند + + + مسقط + + + بنما + + + ليما + + + تاهيتي + + + ماركيساس + + + جامبير + + + بور مورسبي + + + مانيلا + + + كراتشي + + + وارسو + + + ميكولن + + + بيتكيرن + + + بورتوريكو + + + غزة + + + هيبرون (مدينة الخليل) + + + أزورس + + + ماديرا + + + لشبونة + + + بالاو + + + أسونسيون + + + قطر + + + ريونيون + + + بوخارست + + + بلغراد + + + كالينجراد + + + موسكو + + + فولوجراد + + + سمراء + + + يكاترنبيرج + + + أومسك + + + نوفوسبيرسك + + + نوفوكوزنتسك + + + كراسنويارسك + + + ايركيتسك + + + ياكتسك + + + فلاديفوستك + + + خانديجا + + + سكالين + + + أوست نيرا + + + مجادن + + + كامتشاتكا + + + أندير + + + كيغالي + + + الرياض + + + غوادالكانال + + + ماهي + + + الخرطوم + + + ستوكهولم + + + سنغافورة + + + سانت هيلينا + + + ليوبليانا + + + لونجيربين + + + براتيسلافا + + + فري تاون + + + سان مارينو + + + داكار + + + مقديشيو + + + باراماريبو + + + جوبا + + + ساو تومي + + + السلفادور + + + حي الأمير السفلي + + + دمشق + + + مباباني + + + غراند ترك + + + نجامينا + + + كيرغويلين + + + لومي + + + بانكوك + + + دوشانبي + + + فاكاوفو + + + ديلي + + + عشق آباد + + + تونس + + + تونغاتابو + + + إسطنبول + + + بورت أوف سبين + + + فونافوتي + + + تايبيه + + + دار السلام + + + أوزجرود + + + كييف + + + سيمفروبول + + + زابوروزي + + + كامبالا + + + ميدواي + + + جونستون + + + واك + + + أداك + + + نوم + + + هونولولو + + + أنشوراج + + + ياكوتات + + + سيتكا + + + جوني + + + ميتلاكاتلا + + + لوس انجلوس + + + بويس + + + فينكس + + + دنفر + + + بيولا، داكوتا الشمالية + + + نيو ساليم + + + سنتر + + + شيكاغو + + + مينوميني + + + فينسينس + + + بيترسبرغ + + + مدينة تل، إنديانا + + + كونكس + + + ويناماك + + + مارنجو + + + إنديانابوليس + + + لويس فيل + + + فيفاي + + + مونتيسيلو + + + ديترويت + + + نيويورك + + + مونتفيديو + + + سمرقند + + + طشقند + + + الفاتيكان + + + سانت فنسنت + + + كاراكاس + + + تورتولا + + + سانت توماس + + + مدينة هو تشي منة + + + إيفات + + + واليس + + + أبيا + + + عدن + + + مايوت + + + جوهانسبرغ + + + لوساكا + + + هراري + + + + توقيت أفغانستان + + + + + توقيت وسط أفريقيا + + + + + توقيت شرق أفريقيا + + + + + توقيت جنوب أفريقيا + + + + + توقيت غرب أفريقيا + توقيت غرب أفريقيا الرسمي + توقيت غرب أفريقيا الصيفي + + + + + توقيت ألاسكا + التوقيت الرسمي لألاسكا + توقيت ألاسكا الصيفي + + + + + توقيت الأمازون + توقيت الأمازون الرسمي + توقيت الأمازون الصيفي + + + + + التوقيت المركزي + التوقيت الرسمي المركزي + التوقيت الصيفي المركزي + + + + + التوقيت الشرقي + التوقيت الرسمي الشرقي + التوقيت الصيفي الشرقي + + + + + التوقيت الجبلي + التوقيت الجبلي الرسمي + التوقيت الجبلي الصيفي + + + + + توقيت المحيط الهادي + توقيت المحيط الهادي الرسمي + توقيت المحيط الهادي الصيفي + + + + + توقيت أنادير + توقيت أنادير الرسمي + التوقيت الصيفي لأنادير + + + + + التوقيت العربي + التوقيت العربي الرسمي + التوقيت العربي الصيفي + + + + + توقيت الأرجنتين + توقيت الأرجنتين الرسمي + توقيت الأرجنتين الصيفي + + + + + توقيت الأرجنتين الغربي + توقيت الأرجنتين الغربي الرسمي + توقيت الأرجنتين الغربي الصيفي + + + + + توقيت أرمينيا + توقيت أرمينيا الرسمي + توقيت أرمينيا الصيفي + + + + + توقيت الأطلسي + التوقيت الرسمي الأطلسي + التوقيت الصيفي الأطلسي + + + + + التوقيت المركزي الأسترالي + التوقيت الرسمي المركزي بأستراليا + التوقيت الصيفي المركزي بأستراليا + + + + + التوقيت الغربي المركزي بأستراليا + التوقيت الرسمي الغربي المركزي بأستراليا + التوقيت الصيفي الغربي المركزي بأستراليا + + + + + توقيت شرق أستراليا + التوقيت الرسمي الشرقي لأستراليا + التوقيت الصيفي الشرقي لأستراليا + + + + + توقيت غرب أستراليا + التوقيت الرسمي الغربي لأستراليا + التوقيت الصيفي الغربي لأستراليا + + + + + توقيت أذربيجان + توقيت أذربيجان الرسمي + توقيت أذربيجان الصيفي + + + + + توقيت أزورس + توقيت أزورس الرسمي + توقيت أزورس الصيفي + + + + + توقيت بنجلاديش + توقيت بنجلاديش الرسمي + توقيت بنجلاديش الصيفي + + + + + توقيت بوتان + + + + + توقيت بوليفيا + + + + + توقيت برازيليا + توقيت برازيليا الرسمي + توقيت برازيليا الصيفي + + + + + توقيت بروناي + + + + + توقيت الرأس الأخضر + توقيت الرأس الأخضر الرسمي + توقيت الرأس الأخضر الصيفي + + + + + توقيت تشامورو + + + + + توقيت تشاتام + توقيت تشاتام الرسمي + توقيت تشاتام الصيفي + + + + + توقيت شيلي + توقيت شيلي الرسمي + توقيت شيلي الصيفي + + + + + توقيت الصين + توقيت الصين الرسمي + توقيت الصين الصيفي + + + + + توقيت شويبالسان + توقيت شويبالسان الرسمي + التوقيت الصيفي لشويبالسان + + + + + توقيت جزر الكريسماس + + + + + توقيت جزر كوكوس + + + + + توقيت كولومبيا + توقيت كولومبيا الرسمي + توقيت كولومبيا الصيفي + + + + + توقيت جزر كووك + توقيت جزر كووك الرسمي + توقيت جزر كووك الصيفي + + + + + توقيت كوبا + توقيت كوبا الرسمي + توقيت كوبا الصيفي + + + + + توقيت دافيز + + + + + توقيت دي مونت دو روفيل + + + + + توقيت تيمور الشرقية + + + + + توقيت جزر استر + توقيت جزر استر الرسمي + توقيت جزر استر الصيفي + + + + + توقيت الإكوادور + + + + + توقيت وسط أوروبا + توقيت وسط أوروبا الرسمي + توقيت وسط أوروبا الصيفي + + + + + توقيت شرق أوروبا + توقيت شرق أوروبا الرسمي + توقيت شرق أوروبا الصيفي + + + + + توقيت غرب أوروبا + توقيت غرب أوروبا الرسمي + توقيت غرب أوروبا الصيفي + + + + + توقيت جزر فوكلاند + توقيت جزر فوكلاند الرسمي + توقيت جزر فوكلاند الصيفي + + + + + توقيت فيجي + توقيت فيجي الرسمي + توقيت فيجي الصيفي + + + + + توقيت غويانا الفرنسية + + + + + توقيت المقاطعات الفرنسية الجنوبية والأنتارتيكية + + + + + توقيت غلاباغوس + + + + + توقيت جامبير + + + + + توقيت جورجيا + توقيت جورجيا الرسمي + توقيت جورجيا الصيفي + + + + + توقيت جزر جيلبرت + + + + + توقيت غرينتش + + + + + توقيت شرق غرينلاند + توقيت شرق غرينلاند الرسمي + توقيت شرق غرينلاند الصيفي + + + + + توقيت غرب غرينلاند + توقيت غرب غرينلاند الرسمي + توقيت غرب غرينلاند الصيفي + + + + + توقيت غوام + + + + + توقيت الخليج + + + + + توقيت غيانا + + + + + توقيت هاواي أليوتيان + توقيت هاواي أليوتيان الرسمي + توقيت هاواي أليوتيان الصيفي + + + + + توقيت هونغ كونغ + توقيت هونغ كونغ الرسمي + توقيت هونغ كونغ الصيفي + + + + + توقيت هوفد + توقيت هوفد الرسمي + توقيت هوفد الصيفي + + + + + توقيت الهند + + + + + توقيت المحيط الهندي + + + + + توقيت الهند الصينية + + + + + توقيت وسط إندونيسيا + + + + + توقيت شرق إندونيسيا + + + + + توقيت غرب إندونيسيا + + + + + توقيت إيران + توقيت إيران الرسمي + توقيت إيران الصيفي + + + + + توقيت إركوتسك + توقيت إركوتسك الرسمي + توقيت إركوتسك الصيفي + + + + + توقيت إسرائيل + توقيت إسرائيل الرسمي + توقيت إسرائيل الصيفي + + + + + توقيت اليابان + توقيت اليابان الرسمي + توقيت اليابان الصيفي + + + + + توقيت كامشاتكا + توقيت بيتروبافلوفسك-كامتشاتسكي + توقيت بيتروبافلوفسك-كامتشاتسكي الصيفي + + + + + توقيت شرق كازاخستان + + + + + توقيت غرب كازاخستان + + + + + توقيت كوريا + توقيت كوريا الرسمي + توقيت كوريا الصيفي + + + + + توقيت كوسرا + + + + + توقيت كراسنويارسك + توقيت كراسنويارسك الرسمي + التوقيت الصيفي لكراسنويارسك + + + + + توقيت قرغيزستان + + + + + توقيت جزر لاين + + + + + توقيت لورد هاو + توقيت لورد هاو الرسمي + التوقيت الصيفي للورد هاو + + + + + توقيت ماكواري + + + + + توقيت ماغادان + توقيت ماغادان الرسمي + توقيت ماغادان الصيفي + + + + + توقيت ماليزيا + + + + + توقيت الـمالديف + + + + + توقيت ماركيساس + + + + + توقيت جزر مارشال + + + + + توقيت موريشيوس + توقيت موريشيوس الرسمي + توقيت موريشيوس الصيفي + + + + + توقيت ماوسون + + + + + توقيت أولان باتور + توقيت أولان باتور الرسمي + توقيت أولان باتور الصيفي + + + + + توقيت موسكو + توقيت موسكو الرسمي + توقيت موسكو الصيفي + + + + + توقيت ميانمار + + + + + توقيت ناورو + + + + + توقيت نيبال + + + + + توقيت كاليدونيا الجديدة + توقيت كاليدونيا الجديدة الرسمي + توقيت كاليدونيا الجديدة الصيفي + + + + + توقيت نيوزيلاندا + توقيت نيوزيلاندا الرسمي + توقيت نيوزيلاندا الصيفي + + + + + توقيت نيوفاوندلاند + توقيت نيوفاوندلاند الرسمي + توقيت نيوفاوندلاند الصيفي + + + + + توقيت نيوي + + + + + توقيت نورفوك + + + + + توقيت فيرناندو دي نورونها + توقيت فرناندو دي نورونها الرسمي + توقيت فرناندو دي نورونها الصيفي + + + + + توقيت جزر ماريانا الشمالية + + + + + توقيت نوفوسيبيرسك + توقيت نوفوسيبيرسك الرسمي + توقيت نوفوسيبيرسك الصيفي + + + + + توقيت أومسك + توقيت أومسك الرسمي + توقيت أومسك الصيفي + + + + + توقيت باكستان + توقيت باكستان الرسمي + توقيت باكستان الصيفي + + + + + توقيت بالاو + + + + + توقيت بابوا غينيا الجديدة + + + + + توقيت باراغواي + توقيت باراغواي الرسمي + توقيت باراغواي الصيفي + + + + + توقيت بيرو + توقيت بيرو الرسمي + توقيت بيرو الصيفي + + + + + توقيت الفيلبين + توقيت الفيلبين الرسمي + توقيت الفيلبين الصيفي + + + + + توقيت جزر فينكس + + + + + توقيت سانت بيير وميكولون + توقيت سانت بيير وميكولون الرسمي + توقيت سانت بيير وميكولون لصيفي + + + + + توقيت بيتكيرن + + + + + توقيت باناب + + + + + توقيت ريونيون + + + + + توقيت روثيرا + + + + + توقيت ساخالين + توقيت ساخالين الرسمي + توقيت ساخالين الصيفي + + + + + توقيت سامارا + توقيت سمارا + توقيت سمارا الصيفي + + + + + توقيت ساموا + توقيت ساموا الرسمي + توقيت ساموا الصيفي + + + + + توقيت سيشل + + + + + توقيت سنغافورة + + + + + توقيت جزر سليمان + + + + + توقيت جنوب جورجيا + + + + + توقيت سورينام + + + + + توقيت سايووا + + + + + توقيت تاهيتي + + + + + توقيت تايبيه + توقيت تايبيه الرسمي + توقيت تايبيه الصيفي + + + + + توقيت طاجكستان + + + + + توقيت توكيلاو + + + + + توقيت تونغا + توقيت تونغا الرسمي + توقيت تونغا الصيفي + + + + + توقيت تشاك + + + + + توقيت تركمانستان + توقيت تركمانستان الرسمي + توقيت تركمانستان الصيفي + + + + + توقيت توفالو + + + + + توقيت أورغواي + توقيت أورغواي الرسمي + توقيت أورغواي الصيفي + + + + + توقيت أوزبكستان + توقيت أوزبكستان الرسمي + توقيت أوزبكستان الصيفي + + + + + توقيت فانواتو + توقيت فانواتو الرسمي + توقيت فانواتو الصيفي + + + + + توقيت فنزويلا + + + + + توقيت فلاديفوستوك + توقيت فلاديفوستوك الرسمي + توقيت فلاديفوستوك الصيفي + + + + + توقيت فولغوغراد + توقيت فولغوغراد الرسمي + توقيت فولغوغراد الصيفي + + + + + توقيت فوستوك + + + + + توقيت واك + + + + + توقيت واليس و فوتونا + + + + + توقيت ياكوتسك + توقيت ياكوتسك الرسمي + توقيت ياكوتسك الصيفي + + + + + توقيت يكاترينبورغ + توقيت يكاترينبورغ الرسمي + توقيت يكاترينبورغ الصيفي + + + + + + arab + + arab + + + ٫ + ٬ + ؛ + ٪ + ‏+ + ‏- + اس + × + ؉ + + ليس رقم + + + . + , + ; + % + ‎+ + ‎- + E + × + + + NaN + + + + + #,##0.### + + + + + + + #,##0.### + + + + + 0 ألف + 0 ألف + 0 ألف + 0 آلاف + 0 ألف + 0 ألف + 00 ألف + 00 ألف + 00 ألف + 00 ألف + 00 ألف + 00 ألف + 000 ألف + 000 ألف + 000 ألف + 000 ألف + 000 ألف + 000 ألف + 0 مليون + 0 مليون + 0 مليون + 0 ملايين + 0 مليون + 0 مليون + 00 مليون + 00 مليون + 00 مليون + 00 ملايين + 00 مليون + 00 مليون + 000 مليون + 000 مليون + 000 مليون + 000 مليون + 000 مليون + 000 مليون + 0 بليون + 0 بليون + 0 بليون + 0 بلايين + 0 بليون + 0 بليون + 00 بليون + 00 بليون + 00 بليون + 00 بليون + 00 بليون + 00 بليون + 000 بليون + 000 بليون + 000 بليون + 000 بليون + 000 بليون + 000 بليون + 0 تريليون + 0 تريليون + 0 تريليون + 0 تريليونات + 0 تريليون + 0 تريليون + 00 تريليون + 00 تريليون + 00 تريليون + 00 تريليون + 00 تريليون + 00 تريليون + 000 تريليون + 000 تريليون + 000 تريليون + 000 تريليون + 000 تريليون + 000 تريليون + + + + + 0 ألف + 0 ألف + 0 ألف + 0 آلاف + 0 ألف + 0 ألف + 00 ألف + 00 ألف + 00 ألف + 00 ألف + 00 ألف + 00 ألف + 000 ألف + 000 ألف + 000 ألف + 000 ألف + 000 ألف + 000 ألف + 0 مليو + 0 مليو + 0 مليو + 0 مليو + 0 مليو + 0 مليو + 00 مليو + 00 مليو + 00 مليو + 00 مليو + 00 مليو + 00 مليو + 000 مليو + 000 مليو + 000 مليو + 000 مليو + 000 مليو + 000 مليو + 0 بليو + 0 بليو + 0 بليو + 0 بليو + 0 بليو + 0 بليو + 00 بليو + 00 بليو + 00 بليو + 00 بليو + 00 بليو + 00 بليو + 000 بليو + 000 بليو + 000 بليو + 000 بليو + 000 بليو + 000 بليو + 0 ترليو + 0 ترليو + 0 ترليو + 0 ترليو + 0 ترليو + 0 ترليو + 00 ترليو + 00 ترليو + 00 ترليو + 00 ترليو + 00 ترليو + 00 ترليو + 000 ترليو + 000 ترليو + 000 ترليو + 000 ترليو + 000 ترليو + 000 ترليو + + + + + + + #E0 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + + ¤ #,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + + بيستا أندوري + + + درهم إماراتي + درهم إماراتي + درهم إماراتي + درهم إماراتي + درهم إماراتي + درهم إماراتي + درهم إماراتي + د.إ.‏ + + + أفغاني - 1927-2002 + + + أفغاني + أفغاني أفغانستاني + أفغاني أفغانستاني + أفغاني أفغانستاني + أفغاني أفغانستاني + أفغاني أفغانستاني + أفغاني أفغانستاني + + + ليك ألباني + ليك ألباني + ليك ألباني + ليك ألباني + ليك ألباني + ليك ألباني + ليك ألباني + + + درام أرميني + درام أرميني + درام أرميني + درام أرميني + درام أرميني + درام أرميني + درام أرميني + + + غيلدر هولندي أنتيلي + غيلدر أنتيلي هولندي + غيلدر أنتيلي هولندي + غيلدر أنتيلي هولندي + غيلدر أنتيلي هولندي + غيلدر أنتيلي هولندي + غيلدر أنتيلي هولندي + + + كوانزا أنجولي + كوانزا أنجولي + كوانزا أنجولي + كوانزا أنجولي + كوانزا أنجولي + كوانزا أنجولي + كوانزا أنجولي + + + كوانزا أنجولي - 1977-1990 + + + كوانزا أنجولي جديدة - 1990-2000 + + + كوانزا أنجولي معدلة - 1995 - 1999 + + + استرال أرجنتيني + أسترال أرجنتيني + أسترال أرجنتيني + أسترال أرجنتيني + أسترال أرجنتيني + أسترال أرجنتيني + أسترال أرجنتيني + + + بيزو أرجنتيني - 1983-1985 + + + بيزو أرجنتيني + بيزو أرجنتيني + بيزو أرجنتيني + بيزو أرجنتيني + بيزو أرجنتيني + بيزو أرجنتيني + بيزو أرجنتيني + + + شلن نمساوي + + + دولار أسترالي + دولار أسترالي + دولار أسترالي + دولار أسترالي + دولار أسترالي + دولار أسترالي + دولار أسترالي + AU$ + + + فلورن أروبي + فلورن أروبي + فلورن أروبي + فلورن أروبي + فلورن أروبي + فلورن أروبي + فلورن أروبي + + + مانات أذريبجاني + مانات أذريبجاني + مانات أذريبجاني + مانات أذريبجاني + مانات أذريبجاني + مانات أذريبجاني + مانات أذريبجاني + + + مانات أذربيجان + + + دينار البوسنة والهرسك + + + مارك البوسنة والهرسك قابل للتحويل + مارك البوسنة والهرسك قابل للتحويل + مارك البوسنة والهرسك قابل للتحويل + مارك البوسنة والهرسك قابل للتحويل + مارك البوسنة والهرسك قابل للتحويل + مارك البوسنة والهرسك قابل للتحويل + مارك البوسنة والهرسك قابل للتحويل + + + دولار بربادوسي + دولار بربادوسي + دولار بربادوسي + دولار بربادوسي + دولار بربادوسي + دولار بربادوسي + دولار بربادوسي + + + تاكا بنجلاديشي + تاكا بنجلاديشي + تاكا بنجلاديشي + تاكا بنجلاديشي + تاكا بنجلاديشي + تاكا بنجلاديشي + تاكا بنجلاديشي + + + فرنك بلجيكي قابل للتحويل + + + فرنك بلجيكي + فرنك بلجيكي + فرنك بلجيكي + فرنك بلجيكي + فرنك بلجيكي + فرنك بلجيكي + فرنك بلجيكي + + + فرنك بلجيكي مالي + + + ليف بلغاري + ليف بلغاري + ليف بلغاري + ليف بلغاري + ليف بلغاري + ليف بلغاري + ليف بلغاري + + + دينار بحريني + دينار بحريني + دينار بحريني + دينار بحريني + دينار بحريني + دينار بحريني + دينار بحريني + د.ب.‏ + + + فرنك بروندي + فرنك بروندي + فرنك بروندي + فرنك بروندي + فرنك بروندي + فرنك بروندي + فرنك بروندي + + + دولار برمودي + دولار برمودي + دولار برمودي + دولار برمودي + دولار برمودي + دولار برمودي + دولار برمودي + + + دولار بروناي + دولار بروناي + دولار بروناي + دولار بروناي + دولار بروناي + دولار بروناي + دولار بروناي + + + بوليفيانو بوليفي + بوليفيانو بوليفي + بوليفيانو بوليفي + بوليفيانو بوليفي + بوليفيانو بوليفي + بوليفيانو بوليفي + بوليفيانو بوليفي + + + بيزو بوليفي + بيزو بوليفي + بيزو بوليفي + بيزو بوليفي + بيزو بوليفي + بيزو بوليفي + بيزو بوليفي + + + مفدول بوليفي + + + نوفو كروزايرو برازيلي - 1967-1986 + + + كروزادو برازيلي + + + كروزايرو برازيلي - 1990-1993 + + + ريال برازيلي + ريال برازيلي + ريال برازيلي + ريال برازيلي + ريال برازيلي + ريال برازيلي + ريال برازيلي + R$ + + + دولار باهامي + دولار باهامي + دولار باهامي + دولار باهامي + دولار باهامي + دولار باهامي + دولار باهامي + + + نولتوم بوتاني + نولتوم بوتاني + نولتوم بوتاني + نولتوم بوتاني + نولتوم بوتاني + نولتوم بوتاني + نولتوم بوتاني + + + كيات بورمي + + + بولا بتسواني + بولا بتسواني + بولا بتسواني + بولا بتسواني + بولا بتسواني + بولا بتسواني + بولا بتسواني + + + روبل بيلاروسي جديد - 1994-1999 + + + روبل بيلاروسي + روبل بيلاروسي + روبل بيلاروسي + روبل بيلاروسي + روبل بيلاروسي + روبل بيلاروسي + روبل بيلاروسي + + + دولار بليزي + دولار بليزي + دولار بليزي + دولار بليزي + دولار بليزي + دولار بليزي + دولار بليزي + + + دولار كندي + دولار كندي + دولار كندي + دولار كندي + دولار كندي + دولار كندي + دولار كندي + CA$ + + + فرنك كونغولي + فرنك كونغولي + فرنك كونغولي + فرنك كونغولي + فرنك كونغولي + فرنك كونغولي + فرنك كونغولي + + + فرنك سويسري + فرنك سويسري + فرنك سويسري + فرنك سويسري + فرنك سويسري + فرنك سويسري + فرنك سويسري + + + بيزو شيلي + بيزو شيلي + بيزو شيلي + بيزو شيلي + بيزو شيلي + بيزو شيلي + بيزو شيلي + + + يوان صيني + يوان صيني + يوان صيني + يوان صيني + يوان صيني + يوان صيني + يوان صيني + ي.ص + + + بيزو كولومبي + بيزو كولومبي + بيزو كولومبي + بيزو كولومبي + بيزو كولومبي + بيزو كولومبي + بيزو كولومبي + + + كولن كوستا ريكي + كولن كوستا ريكي + كولن كوستا ريكي + كولن كوستا ريكي + كولن كوستا ريكي + كولن كوستا ريكي + كولن كوستا ريكي + + + دينار صربي قديم + + + كرونة تشيكوسلوفاكيا + + + بيزو كوبي قابل للتحويل + + + بيزو كوبي + بيزو كوبي + بيزو كوبي + بيزو كوبي + بيزو كوبي + بيزو كوبي + بيزو كوبي + + + اسكودو الرأس الخضراء + اسكودو الرأس الخضراء + اسكودو الرأس الخضراء + اسكودو الرأس الخضراء + اسكودو الرأس الخضراء + اسكودو الرأس الخضراء + اسكودو الرأس الخضراء + + + جنيه قبرصي + جنيه قبرصي + جنيه قبرصي + جنيه قبرصي + جنيه قبرصي + جنيه قبرصي + جنيه قبرصي + + + كرونة تشيكية + كرونة تشيكية + كرونة تشيكية + كرونة تشيكية + كرونة تشيكية + كرونة تشيكية + كرونة تشيكية + + + أوستمارك ألماني شرقي + + + مارك ألماني + مارك ألماني + مارك ألماني + مارك ألماني + مارك ألماني + مارك ألماني + مارك ألماني + + + فرنك جيبوتي + فرنك جيبوتي + فرنك جيبوتي + فرنك جيبوتي + فرنك جيبوتي + فرنك جيبوتي + فرنك جيبوتي + + + كرونة دانماركي + كرونة دانماركي + كرونة دانماركي + كرونة دانماركي + كرونة دانماركي + كرونة دانماركي + كرونة دانماركي + + + بيزو الدومنيكان + بيزو الدومنيكان + بيزو الدومنيكان + بيزو الدومنيكان + بيزو الدومنيكان + بيزو الدومنيكان + بيزو الدومنيكان + + + دينار جزائري + دينار جزائري + دينار جزائري + دينار جزائري + دينار جزائري + دينار جزائري + دينار جزائري + د.ج.‏ + + + كرونة استونية + كرونة أستونية + كرونة أستونية + كرونة أستونية + كرونة أستونية + كرونة أستونية + كرونة أستونية + + + جنيه مصري + جنيه مصري + جنيه مصري + جنيه مصري + جنيه مصري + جنيه مصري + جنيه مصري + ج.م.‏ + + + ناكفا أريتري + ناكفا أريتري + ناكفا أريتري + ناكفا أريتري + ناكفا أريتري + ناكفا أريتري + ناكفا أريتري + + + بيزيتا إسباني + بيزيتا إسباني + بيزيتا إسباني + بيزيتا إسباني + بيزيتا إسباني + بيزيتا إسباني + بيزيتا إسباني + + + بير أثيوبي + بير أثيوبي + بير أثيوبي + بير أثيوبي + بير أثيوبي + بير أثيوبي + بير أثيوبي + + + يورو + يورو + يورو + يورو + يورو + يورو + يورو + + + + ماركا فنلندي + ماركا فنلندي + ماركا فنلندي + ماركا فنلندي + ماركا فنلندي + ماركا فنلندي + ماركا فنلندي + + + دولار فيجي + دولار فيجي + دولار فيجي + دولار فيجي + دولار فيجي + دولار فيجي + دولار فيجي + + + جنيه جزر فوكلاند + جنيه جزر فوكلاند + جنيه جزر فوكلاند + جنيه جزر فوكلاند + جنيه جزر فوكلاند + جنيه جزر فوكلاند + جنيه جزر فوكلاند + + + فرنك فرنسي + فرنك فرنسي + فرنك فرنسي + فرنك فرنسي + فرنك فرنسي + فرنك فرنسي + فرنك فرنسي + + + جنيه إسترليني + جنيه إسترليني + جنيه إسترليني + جنيه إسترليني + جنيه إسترليني + جنيه إسترليني + جنيه إسترليني + £ + + + لارى جورجي + لاري جورجي + لاري جورجي + لاري جورجي + لاري جورجي + لاري جورجي + لاري جورجي + + + سيدي غاني + سيدي غاني + سيدي غاني + سيدي غاني + سيدي غاني + سيدي غاني + سيدي غاني + + + سيدي غانا + + + جنيه جبل طارق + جنيه جبل طارق + جنيه جبل طارق + جنيه جبل طارق + جنيه جبل طارق + جنيه جبل طارق + جنيه جبل طارق + + + دلاسي جامبي + دلاسي جامبي + دلاسي جامبي + دلاسي جامبي + دلاسي جامبي + دلاسي جامبي + دلاسي جامبي + + + فرنك غينيا + فرنك غينيا + فرنك غينيا + فرنك غينيا + فرنك غينيا + فرنك غينيا + فرنك غينيا + + + سيلي غينيا + + + اكويل جونينا غينيا الاستوائيّة + + + دراخما يوناني + دراخما يوناني + دراخما يوناني + دراخما يوناني + دراخما يوناني + دراخما يوناني + دراخما يوناني + + + كوتزال جواتيمالا + كوتزال جواتيمالا + كوتزال جواتيمالا + كوتزال جواتيمالا + كوتزال جواتيمالا + كوتزال جواتيمالا + كوتزال جواتيمالا + + + اسكود برتغالي غينيا + + + بيزو غينيا بيساو + + + دولار غيانا + دولار غيانا + دولار غيانا + دولار غيانا + دولار غيانا + دولار غيانا + دولار غيانا + + + دولار هونج كونج + دولار هونج كونج + دولار هونج كونج + دولار هونج كونج + دولار هونج كونج + دولار هونج كونج + دولار هونج كونج + HK$ + + + ليمبيرا هنداروس + ليمبيرا هندوراس + ليمبيرا هندوراس + ليمبيرا هندوراس + ليمبيرا هندوراس + ليمبيرا هندوراس + ليمبيرا هندوراس + + + دينار كرواتي + + + كونا كرواتي + كونا كرواتي + كونا كرواتي + كونا كرواتي + كونا كرواتي + كونا كرواتي + كونا كرواتي + + + جوردى هايتي + جوردى هايتي + جوردى هايتي + جوردى هايتي + جوردى هايتي + جوردى هايتي + جوردى هايتي + + + فورينت مجري + فورينت مجري + فورينت مجري + فورينت مجري + فورينت مجري + فورينت مجري + فورينت مجري + + + روبية إندونيسية + روبيه إندونيسية + روبيه إندونيسية + روبيه إندونيسية + روبيه إندونيسية + روبيه إندونيسية + روبيه إندونيسية + + + جنيه إيرلندي + جنيه إيرلندي + جنيه إيرلندي + جنيه إيرلندي + جنيه إيرلندي + جنيه إيرلندي + جنيه إيرلندي + + + جنيه إسرائيلي + جنيه إسرائيلي + جنيه إسرائيلي + جنيه إسرائيلي + جنيه إسرائيلي + جنيه إسرائيلي + جنيه إسرائيلي + + + شيكل إسرائيلي جديد + شيكل إسرائيلي جديد + شيكل إسرائيلي جديد + شيكل إسرائيلي جديد + شيكل إسرائيلي جديد + شيكل إسرائيلي جديد + شيكل إسرائيلي جديد + + + + روبيه هندي + روبية هندي + روبية هندي + روبية هندي + روبية هندي + روبية هندي + روبية هندي + ر.ه.‏ + + + دينار عراقي + دينار عراقي + دينار عراقي + دينار عراقي + دينار عراقي + دينار عراقي + دينار عراقي + د.ع.‏ + + + ريال إيراني + ريال إيراني + ريال إيراني + ريال إيراني + ريال إيراني + ريال إيراني + ريال إيراني + + + كرونه أيسلندي + كرونه أيسلندي + كرونه أيسلندي + كرونه أيسلندي + كرونه أيسلندي + كرونه أيسلندي + كرونه أيسلندي + + + ليرة إيطالية + ليرة إيطالية + ليرة إيطالية + ليرة إيطالية + ليرة إيطالية + ليرة إيطالية + ليرة إيطالية + + + دولار جامايكي + دولار جامايكي + دولار جامايكي + دولار جامايكي + دولار جامايكي + دولار جامايكي + دولار جامايكي + + + دينار أردني + دينار أردني + دينار أردني + دينار أردني + دينار أردني + دينار أردني + دينار أردني + د.أ.‏ + + + ين ياباني + ين ياباني + ين ياباني + ين ياباني + ين ياباني + ين ياباني + ين ياباني + JP¥ + + + شلن كينيي + شلن كينيي + شلن كينيي + شلن كينيي + شلن كينيي + شلن كينيي + شلن كينيي + + + سوم قيرغستاني + سوم قيرغستاني + سوم قيرغستاني + سوم قيرغستاني + سوم قيرغستاني + سوم قيرغستاني + سوم قيرغستاني + + + رييال كمبودي + رييال كمبودي + رييال كمبودي + رييال كمبودي + رييال كمبودي + رييال كمبودي + رييال كمبودي + + + فرنك جزر القمر + فرنك جزر القمر + فرنك جزر القمر + فرنك جزر القمر + فرنك جزر القمر + فرنك جزر القمر + فرنك جزر القمر + ف.ج.ق.‏ + + + وون كوريا الشمالية + وون كوريا الشمالية + وون كوريا الشمالية + وون كوريا الشمالية + وون كوريا الشمالية + وون كوريا الشمالية + وون كوريا الشمالية + + + وون كوريا الجنوبية + وون كوريا الجنوبية + وون كوريا الجنوبية + وون كوريا الجنوبية + وون كوريا الجنوبية + وون كوريا الجنوبية + وون كوريا الجنوبية + + + + دينار كويتي + دينار كويتي + دينار كويتي + دينار كويتي + دينار كويتي + دينار كويتي + دينار كويتي + د.ك.‏ + + + دولار جزر كيمن + دولار جزر كيمن + دولار جزر كيمن + دولار جزر كيمن + دولار جزر كيمن + دولار جزر كيمن + دولار جزر كيمن + + + تينغ كازاخستاني + تينغ كازاخستاني + تينغ كازاخستاني + تينغ كازاخستاني + تينغ كازاخستاني + تينغ كازاخستاني + تينغ كازاخستاني + + + كيب لاوسي + كيب لاوسي + كيب لاوسي + كيب لاوسي + كيب لاوسي + كيب لاوسي + كيب لاوسي + + + جنية لبناني + جنية لبناني + جنية لبناني + جنية لبناني + جنية لبناني + جنية لبناني + جنية لبناني + ل.ل.‏ + + + روبية سريلانكية + روبية سريلانكية + روبية سريلانكية + روبية سريلانكية + روبية سريلانكية + روبية سريلانكية + روبية سريلانكية + + + دولار ليبيري + دولار ليبيري + دولار ليبيري + دولار ليبيري + دولار ليبيري + دولار ليبيري + دولار ليبيري + + + لوتي ليسوتو + لوتي ليسوتو + لوتي ليسوتو + لوتي ليسوتو + لوتي ليسوتو + لوتي ليسوتو + لوتي ليسوتو + + + ليتا ليتوانية + ليتا ليتوانية + ليتا ليتوانية + ليتا ليتوانية + ليتا ليتوانية + ليتا ليتوانية + ليتا ليتوانية + + + تالوناس ليتواني + + + فرنك لوكسمبرج قابل للتحويل + + + فرنك لوكسمبرج + + + فرنك لوكسمبرج المالي + + + لاتس لاتفيا + لاتس لاتفي + لاتس لاتفي + لاتس لاتفي + لاتس لاتفي + لاتس لاتفي + لاتس لاتفي + + + روبل لاتفيا + + + دينار ليبي + دينار ليبي + دينار ليبي + دينار ليبي + دينار ليبي + دينار ليبي + دينار ليبي + د.ل.‏ + + + درهم مغربي + درهم مغربي + درهم مغربي + درهم مغربي + درهم مغربي + درهم مغربي + درهم مغربي + د.م.‏ + + + فرنك مغربي + + + ليو مولدوفي + ليو مولدوفي + ليو مولدوفي + ليو مولدوفي + ليو مولدوفي + ليو مولدوفي + ليو مولدوفي + + + أرياري مدغشقر + أرياري مدغشقر + أرياري مدغشقر + أرياري مدغشقر + أرياري مدغشقر + أرياري مدغشقر + أرياري مدغشقر + + + فرنك مدغشقر + + + دينار مقدوني + دينار مقدوني + دينار مقدوني + دينار مقدوني + دينار مقدوني + دينار مقدوني + دينار مقدوني + + + فرنك مالي + + + كيات ميانمار + كيات ميانمار + كيات ميانمار + كيات ميانمار + كيات ميانمار + كيات ميانمار + كيات ميانمار + + + توغروغ منغولي + توغروغ منغولي + توغروغ منغولي + توغروغ منغولي + توغروغ منغولي + توغروغ منغولي + توغروغ منغولي + + + باتاكا ماكاوي + باتاكا ماكاوي + باتاكا ماكاوي + باتاكا ماكاوي + باتاكا ماكاوي + باتاكا ماكاوي + باتاكا ماكاوي + + + أوقية موريتانية + أوقية موريتانية + أوقية موريتانية + أوقية موريتانية + أوقية موريتانية + أوقية موريتانية + أوقية موريتانية + أ.م.‏ + + + ليرة مالطية + ليرة مالطية + ليرة مالطية + ليرة مالطية + ليرة مالطية + ليرة مالطية + ليرة مالطية + + + جنيه مالطي + جنيه مالطي + جنيه مالطي + جنيه مالطي + جنيه مالطي + جنيه مالطي + جنيه مالطي + + + روبية موريشيوسية + روبي موريشي + روبي موريشي + روبي موريشي + روبي موريشي + روبي موريشي + روبي موريشي + + + روفيه جزر المالديف + روفيه جزر المالديف + روفيه جزر المالديف + روفيه جزر المالديف + روفيه جزر المالديف + روفيه جزر المالديف + روفيه جزر المالديف + + + كواشا مالاوي + كواشا مالاوي + كواشا مالاوي + كواشا مالاوي + كواشا مالاوي + كواشا مالاوي + كواشا مالاوي + + + بيزو مكسيكي + بيزو مكسيكي + بيزو مكسيكي + بيزو مكسيكي + بيزو مكسيكي + بيزو مكسيكي + بيزو مكسيكي + MX$ + + + بيزو فضي مكسيكي - 1861-1992 + بيزو فضي مكسيكي + بيزو فضي مكسيكي + بيزو فضي مكسيكي + بيزو فضي مكسيكي + بيزو فضي مكسيكي + بيزو فضي مكسيكي + + + رينغيت ماليزي + رينغيت ماليزي + رينغيت ماليزي + رينغيت ماليزي + رينغيت ماليزي + رينغيت ماليزي + رينغيت ماليزي + + + اسكود موزمبيقي + + + متكال موزمبيقي + متكال موزمبيقي + متكال موزمبيقي + متكال موزمبيقي + متكال موزمبيقي + متكال موزمبيقي + متكال موزمبيقي + + + دولار ناميبي + دولار نامبيا + دولار نامبيا + دولار نامبيا + دولار نامبيا + دولار نامبيا + دولار نامبيا + + + نايرا نيجيري + نايرا نيجيري + نايرا نيجيري + نايرا نيجيري + نايرا نيجيري + نايرا نيجيري + نايرا نيجيري + + + كوردوبة نيكاراجوا + + + قرطبة نيكاراغوا + قرطبة نيكاراغوا + قرطبة نيكاراغوا + قرطبة نيكاراغوا + قرطبة نيكاراغوا + قرطبة نيكاراغوا + قرطبة نيكاراغوا + + + جلدر هولندي + جلدر هولندي + جلدر هولندي + جلدر هولندي + جلدر هولندي + جلدر هولندي + جلدر هولندي + + + كرونة نرويجية + كرونة نرويجية + كرونة نرويجية + كرونة نرويجية + كرونة نرويجية + كرونة نرويجية + كرونة نرويجية + + + روبية نيبالي + روبية نيبالي + روبية نيبالي + روبية نيبالي + روبية نيبالي + روبية نيبالي + روبية نيبالي + + + دولار نيوزيلندي + دولار نيوزيلندي + دولار نيوزيلندي + دولار نيوزيلندي + دولار نيوزيلندي + دولار نيوزيلندي + دولار نيوزيلندي + NZ$ + + + ريال عماني + ريال عماني + ريال عماني + ريال عماني + ريال عماني + ريال عماني + ريال عماني + ر.ع.‏ + + + بالبوا بنمي + بالبوا بنمي + بالبوا بنمي + بالبوا بنمي + بالبوا بنمي + بالبوا بنمي + بالبوا بنمي + + + سول جديد البيرو + + + كينا بابوا غينيا الجديدة + كينا بابوا غينيا الجديدة + كينا بابوا غينيا الجديدة + كينا بابوا غينيا الجديدة + كينا بابوا غينيا الجديدة + كينا بابوا غينيا الجديدة + كينا بابوا غينيا الجديدة + + + بيزو فلبيني + بيزو فلبيني + بيزو فلبيني + بيزو فلبيني + بيزو فلبيني + بيزو فلبيني + بيزو فلبيني + + + روبية باكستاني + روبية باكستاني + روبية باكستاني + روبية باكستاني + روبية باكستاني + روبية باكستاني + روبية باكستاني + + + زلوتي بولندي + زلوتي بولندي + زلوتي بولندي + زلوتي بولندي + زلوتي بولندي + زلوتي بولندي + زلوتي بولندي + + + زلوتي بولندي - 1950-1995 + + + اسكود برتغالي + أسكود برتغالي + أسكود برتغالي + أسكود برتغالي + أسكود برتغالي + أسكود برتغالي + أسكود برتغالي + + + جواراني باراجواي + جواراني باراجواي + جواراني باراجواي + جواراني باراجواي + جواراني باراجواي + جواراني باراجواي + جواراني باراجواي + + + ريال قطري + ريال قطري + ريال قطري + ريال قطري + ريال قطري + ريال قطري + ريال قطري + ر.ق.‏ + + + دولار روديسي + دولار روديسي + دولار روديسي + دولار روديسي + دولار روديسي + دولار روديسي + دولار روديسي + + + ليو روماني قديم + ليو روماني قديم + ليو روماني قديم + ليو روماني قديم + ليو روماني قديم + ليو روماني قديم + ليو روماني قديم + + + ليو روماني + ليو روماني + ليو روماني + ليو روماني + ليو روماني + ليو روماني + ليو روماني + + + دينار صربي + + + روبل روسي + روبل روسي + روبل روسي + روبل روسي + روبل روسي + روبل روسي + روبل روسي + + + روبل روسي - 1991-1998 + + + فرنك رواندي + فرنك رواندي + فرنك رواندي + فرنك رواندي + فرنك رواندي + فرنك رواندي + فرنك رواندي + + + ريال سعودي + ريال سعودي + ريال سعودي + ريال سعودي + ريال سعودي + ريال سعودي + ريال سعودي + ر.س.‏ + + + دولار جزر سليمان + دولار جزر سليمان + دولار جزر سليمان + دولار جزر سليمان + دولار جزر سليمان + دولار جزر سليمان + دولار جزر سليمان + + + روبية سيشيلية + روبية سيشيلية + روبية سيشيلية + روبية سيشيلية + روبية سيشيلية + روبية سيشيلية + روبية سيشيلية + + + دينار سوداني + دينار سوداني قديم + دينار سوداني قديم + دينار سوداني قديم + دينار سوداني قديم + دينار سوداني قديم + دينار سوداني قديم + د.س.‏ + + + جنيه سوداني + جنيه سوداني + جنيه سوداني + جنيه سوداني + جنيه سوداني + جنيه سوداني + جنيه سوداني + ج.س. + + + جنيه سوداني قديم + جنيه سوداني قديم + جنيه سوداني قديم + جنيه سوداني قديم + جنيه سوداني قديم + جنيه سوداني قديم + جنيه سوداني قديم + + + كرونة سويدية + كرونة سويدية + كرونة سويدية + كرونة سويدية + كرونة سويدية + كرونة سويدية + كرونة سويدية + + + دولار سنغافوري + دولار سنغافوري + دولار سنغافوري + دولار سنغافوري + دولار سنغافوري + دولار سنغافوري + دولار سنغافوري + + + جنيه سانت هيلين + جنيه سانت هيلين + جنيه سانت هيلين + جنيه سانت هيلين + جنيه سانت هيلين + جنيه سانت هيلين + جنيه سانت هيلين + + + تولار سلوفيني + + + كرونة سلوفاكية + كرونة سلوفاكية + كرونة سلوفاكية + كرونة سلوفاكية + كرونة سلوفاكية + كرونة سلوفاكية + كرونة سلوفاكية + + + ليون سيراليوني + ليون سيراليوني + ليون سيراليوني + ليون سيراليوني + ليون سيراليوني + ليون سيراليوني + ليون سيراليوني + + + شلن صومالي + شلن صومالي + شلن صومالي + شلن صومالي + شلن صومالي + شلن صومالي + شلن صومالي + + + دولار سورينامي + دولار سورينامي + دولار سورينامي + دولار سورينامي + دولار سورينامي + دولار سورينامي + دولار سورينامي + + + جلدر سورينامي + جلدر سورينامي + جلدر سورينامي + جلدر سورينامي + جلدر سورينامي + جلدر سورينامي + جلدر سورينامي + + + جنيه جنوب السودان + جنيه جنوب السودان + جنيه جنوب السودان + جنيه جنوب السودان + جنيه جنوب السودان + جنيه جنوب السودان + جنيه جنوب السودان + ج.ج.س. + + + دوبرا ساو تومي وبرينسيبي + دوبرا ساو تومي وبرينسيبي + دوبرا ساو تومي وبرينسيبي + دوبرا ساو تومي وبرينسيبي + دوبرا ساو تومي وبرينسيبي + دوبرا ساو تومي وبرينسيبي + دوبرا ساو تومي وبرينسيبي + + + روبل سوفيتي + + + كولون سلفادوري + كولون سلفادوري + كولون سلفادوري + كولون سلفادوري + كولون سلفادوري + كولون سلفادوري + كولون سلفادوري + + + ليرة سورية + ليرة سورية + ليرة سورية + ليرة سورية + ليرة سورية + ليرة سورية + ليرة سورية + ل.س.‏ + + + ليلانجيني سوازيلندي + ليلانجيني سوازيلندي + ليلانجيني سوازيلندي + ليلانجيني سوازيلندي + ليلانجيني سوازيلندي + ليلانجيني سوازيلندي + ليلانجيني سوازيلندي + + + باخت تايلاندي + باخت تايلاندي + باخت تايلاندي + باخت تايلاندي + باخت تايلاندي + باخت تايلاندي + باخت تايلاندي + ฿ + + + روبل طاجيكستاني + + + سوموني طاجيكستاني + سوموني طاجيكستاني + سوموني طاجيكستاني + سوموني طاجيكستاني + سوموني طاجيكستاني + سوموني طاجيكستاني + سوموني طاجيكستاني + + + مانات تركمنستاني + مانات تركمنستاني + مانات تركمنستاني + مانات تركمنستاني + مانات تركمنستاني + مانات تركمنستاني + مانات تركمنستاني + + + مانات تركمانستان + + + دينارتونسي + دينارتونسي + دينارتونسي + دينارتونسي + دينارتونسي + دينارتونسي + دينارتونسي + د.ت.‏ + + + بانغا تونغا + + + اسكود تيموري + + + ليرة تركي + ليرة تركي + ليرة تركي + ليرة تركي + ليرة تركي + ليرة تركي + ليرة تركي + + + ليرة تركية + ليرة تركية + ليرة تركية + ليرة تركية + ليرة تركية + ليرة تركية + ليرة تركية + + + دولار ترينداد وتوباجو + دولار ترينداد وتوباجو + دولار ترينداد وتوباجو + دولار ترينداد وتوباجو + دولار ترينداد وتوباجو + دولار ترينداد وتوباجو + دولار ترينداد وتوباجو + + + دولار تايواني + دولار تايواني + دولار تايواني + دولار تايواني + دولار تايواني + دولار تايواني + دولار تايواني + NT$ + + + شلن تنزاني + شلن تنزاني + شلن تنزاني + شلن تنزاني + شلن تنزاني + شلن تنزاني + شلن تنزاني + + + هريفنيا أوكراني + هريفنيا أوكراني + هريفنيا أوكراني + هريفنيا أوكراني + هريفنيا أوكراني + هريفنيا أوكراني + هريفنيا أوكراني + + + شلن أوغندي - 1966-1987 + + + شلن أوغندي + شلن أوغندي + شلن أوغندي + شلن أوغندي + شلن أوغندي + شلن أوغندي + شلن أوغندي + + + دولار أمريكي + دولار أمريكي + دولار أمريكي + دولار أمريكي + دولار أمريكي + دولار أمريكي + دولار أمريكي + US$ + + + دولار أمريكي (اليوم التالي)‏ + + + دولار أمريكي (نفس اليوم)‏ + + + بيزو أوروجواي - 1975-1993 + + + بيزو اوروغواي + + + سوم أوزبكستاني + سوم أوزبكستاني + سوم أوزبكستاني + سوم أوزبكستاني + سوم أوزبكستاني + سوم أوزبكستاني + سوم أوزبكستاني + + + بوليفار فنزويلي - 1871-2008 + + + بوليفار فنزويلي + + + دونج فيتنامي + دونج فيتنامي + دونج فيتنامي + دونج فيتنامي + دونج فيتنامي + دونج فيتنامي + دونج فيتنامي + + + + فاتو فانواتو + + + تالا ساموا + + + فرنك أفريقي + فرنك أفريقي + فرنك أفريقي + فرنك أفريقي + فرنك أفريقي + فرنك أفريقي + فرنك أفريقي + FCFA + + + فضة + فضة + فضة + فضة + فضة + فضة + فضة + + + ذهب + ذهب + ذهب + ذهب + ذهب + ذهب + ذهب + + + الوحدة الأوروبية المركبة + الوحدة الأوروبية المركبة + الوحدة الأوروبية المركبة + الوحدة الأوروبية المركبة + الوحدة الأوروبية المركبة + الوحدة الأوروبية المركبة + الوحدة الأوروبية المركبة + + + الوحدة المالية الأوروبية + الوحدة المالية الأوروبية + الوحدة المالية الأوروبية + الوحدة المالية الأوروبية + الوحدة المالية الأوروبية + الوحدة المالية الأوروبية + الوحدة المالية الأوروبية + + + الوحدة الحسابية الأوروبية + الوحدة الحسابية الأوروبية + الوحدة الحسابية الأوروبية + الوحدة الحسابية الأوروبية + الوحدة الحسابية الأوروبية + الوحدة الحسابية الأوروبية + الوحدة الحسابية الأوروبية + + + (XBD)وحدة الحساب الأوروبية + وحدة الحساب الأوروبية + وحدة الحساب الأوروبية + وحدة الحساب الأوروبية + وحدة الحساب الأوروبية + وحدة الحساب الأوروبية + وحدة الحساب الأوروبية + + + دولار شرق الكاريبي + دولار شرق الكاريبي + دولار شرق الكاريبي + دولار شرق الكاريبي + دولار شرق الكاريبي + دولار شرق الكاريبي + دولار شرق الكاريبي + EC$ + + + حقوق السحب الخاصة + حقوق السحب الخاصة + حقوق السحب الخاصة + حقوق السحب الخاصة + حقوق السحب الخاصة + حقوق السحب الخاصة + حقوق السحب الخاصة + + + وحدة النقد الأوروبية + + + فرنك فرنسي ذهبي + فرنك فرنسي ذهبي + فرنك فرنسي ذهبي + فرنك فرنسي ذهبي + فرنك فرنسي ذهبي + فرنك فرنسي ذهبي + فرنك فرنسي ذهبي + + + (UIC)فرنك فرنسي + (UIC)فرنك فرنسي + (UIC)فرنك فرنسي + (UIC)فرنك فرنسي + (UIC)فرنك فرنسي + (UIC)فرنك فرنسي + (UIC)فرنك فرنسي + + + فرنك سي إف إيه غرب إفريقيا + CFA + + + بالاديوم + + + فرنك سي إف بي + CFPF + + + البلاتين + البلاتين + البلاتين + البلاتين + البلاتين + البلاتين + البلاتين + + + كود اختبار العملة + كود اختبار العملة + كود اختبار العملة + كود اختبار العملة + كود اختبار العملة + كود اختبار العملة + كود اختبار العملة + + + عملة غير معروفة + عملة غير معروفة + عملة غير معروفة + عملة غير معروفة + عملة غير معروفة + عملة غير معروفة + عملة غير معروفة + *** + + + دينار يمني + + + ريال يمني + ريال يمني + ريال يمني + ريال يمني + ريال يمني + ريال يمني + ريال يمني + ر.ي.‏ + + + دينار يوغسلافي + + + دينار يوغسلافي قابل للتحويل + + + راند جنوب أفريقيا -مالي + + + راند جنوب أفريقيا + راند جنوب أفريقيا + راند جنوب أفريقيا + راند جنوب أفريقيا + راند جنوب أفريقيا + راند جنوب أفريقيا + راند جنوب أفريقيا + + + كواشا زامبي - 1968-2012 + كواشا زامبي - 1968-2012 + كواشا زامبي - 1968-2012 + كواشا زامبي - 1968-2012 + كواشا زامبي - 1968-2012 + كواشا زامبي - 1968-2012 + كواشا زامبي - 1968-2012 + + + كواشا زامبي + كواشا زامبي + كواشا زامبي + كواشا زامبي + كواشا زامبي + كواشا زامبي + كواشا زامبي + + + زائير زائيري جديد + زائير زائيري جديد + زائير زائيري جديد + زائير زائيري جديد + زائير زائيري جديد + زائير زائيري جديد + زائير زائيري جديد + + + زائير زائيري + زائير زائيري + زائير زائيري + زائير زائيري + زائير زائيري + زائير زائيري + زائير زائيري + + + دولار زمبابوي + دولار زمبابوي + دولار زمبابوي + دولار زمبابوي + دولار زمبابوي + دولار زمبابوي + دولار زمبابوي + + + دولار زمبابوي 2009 + + + + +{0} + {0}–{1} + + + + + + {0} كل {1} + + + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + + + {0} من الدقائق + {0} دقيقة + دقيقتان ({0}) + {0} دقائق + {0} دقيقة + {0} من الدقائق + + + {0} من الثواني + {0} ثانية + ثانيتان ({0}) + {0} ثوانٍ + {0} ثانية + {0} من الثواني + + + {0} من الدرجات + {0} درجة + درجتان ({0}) + {0} درجات + {0} درجة + {0} من الدرجات + + + {0} من الفدادين + {0} فدان + فدانان ({0}) + {0} فدادين + {0} فدانًا + {0} من الفدادين + + + {0} من الهكتارات + {0} هكتار + هكتاران ({0}) + {0} هكتارات + {0} هكتارًا + {0} من الهكتارات + + + {0} من الأقدام المربعة + {0} قدم مربعة + قدمان مربعان ({0}) + {0} أقدام مربعة + {0} قدمًا مربعًا + {0} من الأقدام المربعة + + + {0} كيلومتر مربع + {0} كيلومتر مربع + {0} كيلومتر مربع + {0} كيلومتر مربع + {0} كيلومتر مربع + {0} كيلومتر مربع + + + {0} متر مربع + {0} متر مربع + {0} متر مربع + {0} متر مربع + {0} متر مربع + {0} متر مربع + + + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + + + {0} يوم + يوم + يومان + {0} أيام + {0} يوماً + {0} يوم + + + لا ساعات + ساعة + ساعتان + {0} ساعات + {0} ساعةً + {0} ساعة + + + {0} مللي ثانية + {0} مللي ثانية + {0} مللي ثانية + {0} مللي ثانية + {0} مللي ثانية + {0} مللي ثانية + + + لا دقائق + دقيقة + دقيقتان + {0} دقائق + {0} دقيقةً + {0} دقيقة + + + لا أشهر + شهر + شهران + {0} أشهر + {0} شهراً + {0} شهر + + + لا ثوان + ثانية + ثانيتان + {0} ثوان + {0} ثانيةً + {0} ثانية + + + لا أسابيع + أسبوع + أسبوعان + {0} أسابيع + {0} أسبوعاً + {0} أسبوع + + + لا سنوات + سنة + سنتان + {0} سنوات + {0} سنة + {0} سنة + + + {0} سنتيمتر + {0} سنتيمتر + {0} سنتيمتر + {0} سنتيمتر + {0} سنتيمتر + {0} سنتيمتر + + + {0} من الأقدام + {0} قدم + قدمان ({0}) + {0} أقدام + {0} قدمًا + {0} من الأقدام + + + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + + + {0} كيلومتر + {0} كيلومتر + {0} كيلومتر + {0} كيلومتر + {0} كيلومتر + {0} كيلومتر + + + {0} من السنوات الضوئية + {0} سنة ضوئية + سنتان ضوئيتان ({0}) + {0} سنوات ضوئية + {0} سنة ضوئية + {0} من السنوات الضوئية + + + {0} من الأمتار + {0} متر + متران ({0}) + {0} أمتار + {0} مترًا + {0} من الأمتار + + + {0} من الأميال + {0} ميل + ميلان ({0}) + {0} أميال + {0} ميلاً + {0} من الأميال + + + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + + + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + + + {0} من الياردات + {0} ياردة + ياردتان ({0}) + {0} ياردات + {0} ياردة + {0} من الياردات + + + {0} من الغرامات + {0} غرام + غرامان ({0}) + {0} غرامات + {0} غرامًا + {0} من الغرامات + + + {0} كيلوغرام + {0} كيلوغرام + {0} كيلوغرام + {0} كيلوغرام + {0} كيلوغرام + {0} كيلوغرام + + + {0} أونس + {0} أونس + {0} أونس + {0} أونس + {0} أونس + {0} أونس + + + {0} رطل + {0} رطل + {0} رطل + {0} رطل + {0} رطل + {0} رطل + + + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + + + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + + + {0} واط + {0} واط + {0} واط + {0} واط + {0} واط + {0} واط + + + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + + + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + + + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + + + {0} كيلومتر في الساعة + {0} كيلومتر في الساعة + {0} كيلومتر في الساعة + {0} كيلومتر في الساعة + {0} كيلومتر في الساعة + {0} كيلومتر في الساعة + + + {0} متر في الثانية + {0} متر في الثانية + {0} متر في الثانية + {0} متر في الثانية + {0} متر في الثانية + {0} متر في الثانية + + + {0} ميل في الساعة + {0} ميل في الساعة + {0} ميل في الساعة + {0} ميل في الساعة + {0} ميل في الساعة + {0} ميل في الساعة + + + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + + + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + + + {0} كيلومتر مكعب + {0} كيلومتر مكعب + {0} كيلومتر مكعب + {0} كيلومتر مكعب + {0} كيلومتر مكعب + {0} كيلومتر مكعب + + + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + + + {0} من اللترات + {0} لتر + لتران ({0}) + {0} لترات + {0} لترًا + {0} من اللترات + + + + + {0}/{1} + + + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + + + {0} من الدقائق + {0} دقيقة + دقيقتان ({0}) + {0} دقائق + {0} دقيقة + {0} من الدقائق + + + {0} من الثواني + {0} ثانية + ثانيتان ({0}) + {0} ثوانٍ + {0} ثانية + {0} من الثواني + + + {0} من الدرجات + {0} درجة + درجتان ({0}) + {0} درجات + {0} درجة + {0} من الدرجات + + + {0} من الفدادين + {0} فدان + فدانان ({0}) + {0} فدادين + {0} فدانًا + {0} من الفدادين + + + {0} من الهكتارات + {0} هكتار + هكتاران ({0}) + {0} هكتارات + {0} هكتارًا + {0} من الهكتارات + + + {0} من الأقدام المربعة + {0} قدم مربعة + قدمان مربعان ({0}) + {0} أقدام مربعة + {0} قدمًا مربعًا + {0} من الأقدام المربعة + + + {0} كم² + {0} كم² + {0} كم² + {0} كم² + {0} كم² + {0} كم² + + + {0} م² + {0} م² + {0} م² + {0} م² + {0} م² + {0} م² + + + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + + + لا أيام + يوم + يومان + {0} أيام + {0} يوماً + {0} يوم + + + لا ساعات + ساعة + ساعتان + {0} س + {0} س + {0} س + + + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + + + لا دقائق + دقيقة + دقيقتان + {0} د + {0} د + {0} د + + + لا أشهر + شهر + شهران + {0} أشهر + {0} شهراً + {0} شهر + + + لا ثوان + ثانية + ثانيتان + {0} ث + {0} ث + {0} ث + + + لا أسابيع + أسبوع + أسبوعان + {0} أسابيع + {0} أسبوعاً + {0} أسبوع + + + لا سنوات + سنة + سنتان + {0} سنوات + {0} سنة + {0} سنة + + + {0} سم + {0} سم + {0} سم + {0} سم + {0} سم + {0} سم + + + {0} من الأقدام + {0} قدم + قدمان ({0}) + {0} أقدام + {0} قدمًا + {0} من الأقدام + + + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + + + {0} كم + {0} كم + {0} كم + {0} كم + {0} كم + {0} كم + + + {0} من السنوات الضوئية + {0} سنة ضوئية + سنتان ضوئيتان ({0}) + {0} سنوات ضوئية + {0} سنة ضوئية + {0} من السنوات الضوئية + + + {0} من الأمتار + {0} متر + متران ({0}) + {0} أمتار + {0} مترًا + {0} من الأمتار + + + {0} من الأميال + {0} ميل + ميلان ({0}) + {0} أميال + {0} ميلاً + {0} من الأميال + + + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + + + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + + + {0} من الياردات + {0} ياردة + ياردتان ({0}) + {0} ياردات + {0} ياردة + {0} من الياردات + + + {0} من الغرامات + {0} غرام + غرامان ({0}) + {0} غرامات + {0} غرامًا + {0} من الغرامات + + + {0} كغم + {0} كغم + {0} كغم + {0} كغم + {0} كغم + {0} كغم + + + {0} أونس + {0} أونس + {0} أونس + {0} أونس + {0} أونس + {0} أونس + + + {0} رطل + {0} رطل + {0} رطل + {0} رطل + {0} رطل + {0} رطل + + + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + + + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + {0} كيلوواط + + + {0} واط + {0} واط + {0} واط + {0} واط + {0} واط + {0} واط + + + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + {0} هكتوباسكال + + + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + {0} بوصة زئبقية + + + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + + + {0} كم/س + {0} كم/س + {0} كم/س + {0} كم/س + {0} كم/س + {0} كم/س + + + {0} م/ث + {0} م/ث + {0} م/ث + {0} م/ث + {0} م/ث + {0} م/ث + + + {0} ميل/س + {0} ميل/س + {0} ميل/س + {0} ميل/س + {0} ميل/س + {0} ميل/س + + + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + {0} درجة سلزيوس + + + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + {0} درجة فهرنهايت + + + {0} كم³ + {0} كم³ + {0} كم³ + {0} كم³ + {0} كم³ + {0} كم³ + + + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + + + {0} من اللترات + {0} لتر + لتران ({0}) + {0} لترات + {0} لترًا + {0} من اللترات + + + + + {0}/{1} + + + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + {0} قوة تسارع + + + {0}′ + {0} دقيقة + {0}′ + {0} دقائق + {0} دقيقة + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} درجة + {0} درجة + درجتان ({0}) + {0} درجات + {0} درجة + {0} درجة + + + {0} من الفدادين + {0} فدان + فدانان ({0}) + {0} فدادين + {0} فدانًا + {0} من الفدادين + + + {0} هكت + {0} هكتار + {0} هكت + {0} هكتارات + {0} هكتارًا + {0} هكت + + + {0}ft² + {0}ft² + {0}ft² + {0}ft² + {0}ft² + {0}ft² + + + {0} كم² + {0} كم² + {0} كم² + {0} كم² + {0} كم² + {0} كم² + + + {0} م² + {0} م² + {0} م² + {0} م² + {0} م² + {0} م² + + + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + {0} ميل مربع + + + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + {0} مللي ث. + + + {0} سم + {0} سم + {0} سم + {0} سم + {0} سم + {0} سم + + + {0} من الأقدام + {0} قدم + قدمان ({0}) + {0} أقدام + {0} قدمًا + {0} من الأقدام + + + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + {0} بوصة + + + {0} كم + {0} كم + {0} كم + {0} كم + {0} كم + {0} كم + + + {0}س ض + {0} س ض + {0} س ض + {0} س ض + {0} س ض + {0} س ض + + + {0} من الأمتار + {0} متر + متران ({0}) + {0} أمتار + {0} مترًا + {0} من الأمتار + + + {0} من الأميال + {0} ميل + ميلان ({0}) + {0} أميال + {0} ميلاً + {0} من الأميال + + + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + {0} ملليمتر + + + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + {0} بيكومتر + + + {0} من الياردات + {0} ياردة + ياردتان ({0}) + {0} ياردات + {0} ياردة + {0} من الياردات + + + {0} غ + {0} غرام + غرامان ({0}) + {0} غرامات + {0} غرامًا + {0}غ + + + {0} كغم + {0} كغم + {0} كغم + {0} كغم + {0} كغم + {0} كغم + + + {0} أونس + {0} أونس + {0} أونس + {0} أونس + {0} أونس + {0} أونس + + + {0}# + {0}# + {0}# + {0}# + {0}# + {0}# + + + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + {0} قوة حصان + + + {0} كواط + {0} كواط + {0} كواط + {0} كواط + {0} كواط + {0} كواط + + + {0} واط + {0} واط + {0} واط + {0} واط + {0} واط + {0} واط + + + {0} هكب + {0} هكب + {0} هكب + {0} هكب + {0} هكب + {0} هكب + + + {0} ب ز + {0} ب ز + {0} ب ز + {0} ب ز + {0} ب ز + {0} ب ز + + + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + {0} مللي بار + + + {0} كم/س + {0} كم/س + {0} كم/س + {0} كم/س + {0} كم/س + {0} كم/س + + + {0} م/ث + {0} م/ث + {0} م/ث + {0} م/ث + {0} م/ث + {0} م/ث + + + {0} ميل/س + {0} ميل/س + {0} ميل/س + {0} ميل/س + {0} ميل/س + {0} ميل/س + + + {0}د م + {0}د م + {0}د م + {0}د م + {0}د م + {0}د م + + + {0} د ف + {0} د ف + {0} د ف + {0} د ف + {0} د ف + {0} د ف + + + {0} كم³ + {0} كم³ + {0} كم³ + {0} كم³ + {0} كم³ + {0} كم³ + + + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + {0} ميل مكعب + + + {0} ل + {0} لتر + لتران ({0}) + {0} لترات + {0} لترًا + {0} ل + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}، {1} + {0}، {1} + {0}، و {1} + {0} و {1} + + + + + نعم:ن + لا:ل + + + + diff --git a/library/Zend/Locale/Data/ar_001.xml b/library/Zend/Locale/Data/ar_001.xml new file mode 100755 index 000000000..5b2fb3d48 --- /dev/null +++ b/library/Zend/Locale/Data/ar_001.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_AE.xml b/library/Zend/Locale/Data/ar_AE.xml new file mode 100755 index 000000000..c4cdbd851 --- /dev/null +++ b/library/Zend/Locale/Data/ar_AE.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_BH.xml b/library/Zend/Locale/Data/ar_BH.xml new file mode 100755 index 000000000..52ef9046b --- /dev/null +++ b/library/Zend/Locale/Data/ar_BH.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_DJ.xml b/library/Zend/Locale/Data/ar_DJ.xml new file mode 100755 index 000000000..2af2c05ed --- /dev/null +++ b/library/Zend/Locale/Data/ar_DJ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Fdj + + + + diff --git a/library/Zend/Locale/Data/ar_DZ.xml b/library/Zend/Locale/Data/ar_DZ.xml new file mode 100755 index 000000000..1afeb092b --- /dev/null +++ b/library/Zend/Locale/Data/ar_DZ.xml @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + G y/MM/dd + + + + + GGGGG y/M/d + + + + + + M/d + MM/dd + G y/M + G y/M/d + G y/MM + + + + d‏-d + + + M‏-M + + + d‏-d MMM + + + G y‏-y + + + + + + + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + ج + ف + م + أ + م + ج + ج + أ + س + أ + ن + د + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + ج + ف + م + أ + م + ج + ج + أ + س + أ + ن + د + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + + + + + y/MM/dd + + + + + y/M/d + + + + + + M/d + MM/dd + y/M + y/M/d + y/MM + + + + d‏-d + + + M‏-M + + + d‏-d MMM + + + y‏-y + + + + + + + + latn + + ٫ + ٬ + + + , + . + + + diff --git a/library/Zend/Locale/Data/ar_EG.xml b/library/Zend/Locale/Data/ar_EG.xml new file mode 100755 index 000000000..45b296d25 --- /dev/null +++ b/library/Zend/Locale/Data/ar_EG.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + الأديغة + الأفستانية + الأفريقانية + الأغيمية + الألطية الجنوبية + الأرغونية + المابوتشية + الأساميزية + الآسو + الآفارية + الأذربيجانية + اللغة البالينية + لغة الغومالا + البيلاروسية + لغة البافوت + البهوجبورية + لغة الكوم + الأكوسية + لغة البولو + لغة الميدومبا + الكادوية + الكايوجية + الأتسامية + السيبيونية + الشيروكية + السورانية الكردية + التركية الكريمانية + التشوفاشي + الولشية + الدنماركية + الدوجرية + الإسبانية أمريكا اللاتينية + الإسبانية المكسيكية + الجبايا + الجعزية + الإيبيبيوية + الماتشامية + الفارسية العبرية + العربية العبرية + التايابية + الماكوندية + الكابوفيرديانيوية + الكورية التشينية + الكاكوية + الكالينجينية + الكانادية + الكاريلية + الكيورك + الشمبالاية + لغة البافيا + لغة الكولونيان + الكوميك + الكيرغزستانية + اللادينو + اللانغية + الليزجية + الميزو + لغة اللويا + المغهية + المايثلية + الميرو + لغة ماكوا ميتو + المانيبورية + الماراثية + الماروارية + لغة الناما + النوارية + الفلمنكية + لغة الكواسيو + لغة النجيمبون + النوير + الرومبو + الغجرية + الروا + الآرامية السامرية + السامبورو + السانغو + السينيكا + السينا + لغة الكوري ابروسيني + صربية-كرواتية + التاشلحيت + لغة الساهو + لغة جزر القمر + لغة الكونغو السواحلية + التيزو + التيغرينية + التيغرية + لغة التاروكو + لغة التاساواك + التوفية + التمازيغية الأوسط أطلسية + الأدمرتية + الأويغورية + الأوزبكية + لغة الفولابوك + الفونجو + الوالسر + الولاياتا + السوغا + اليانغبين + يمبا + + + + + + + + + EEEE‏، ‎‏d ‏MMMM‏، y‏ G + + + + + d‏ MMMM‏، y ‏G + + + + + d‏ MMM‏، y ‏G + + + + + d‏/M‏/y‏ GGGGG + + + + + + d‏ E + y ‏G + MMM‏ y‏ G + d ‏MMM‏، y‏ G + E‏، d‏ MMM‏، y ‏G + d‏/M + E‏، d‏/M + d ‏MMM + E‏، d ‏MMM + y ‏G + y ‏G + M‏/y ‏GGGGG + d‏/M‏/y ‏GGGGG + E‏، d‏/M‏/y ‏GGGGG + MMM‏ y ‏G + d‏ MMM‏، y‏ G + E‏، d‏ MMM‏، y‏ G + MMM‏ y‏ G + QQQ‏ y‏ G + QQQQ‏ y‏ G + + + + + + التوقيت الصيفي {0} + التوقيت الرسمي {0} + + ماتامروس + + + هبرون + + + + التوقيت المركزي لأمريكا الشمالية + التوقيت الرسمي المركزي لأمريكا الشمالية + التوقيت الصيفي المركزي لأمريكا الشمالية + + + + + التوقيت الشرقي لأمريكا الشمالية + التوقيت الرسمي الشرقي لأمريكا الشمالية + التوقيت الصيفي الشرقي لأمريكا الشمالية + + + + + التوقيت الجبلي لأمريكا الشمالية + التوقيت الجبلي الرسمي لأمريكا الشمالية + التوقيت الجبلي الصيفي لأمريكا الشمالية + + + + + توقيت المحيط الهادي لأمريكا الشمالية + توقيت المحيط الهادي الرسمي لأمريكا الشمالية + توقيت المحيط الهادي الصيفي لأمريكا الشمالية + + + + + توقيت سانت بيير وميكولون + توقيت سانت بيير وميكولون الرسمي + توقيت سانت بيير وميكولون الصيفي + + + + + + + NaN + + + + + {0} و{1} + + + + diff --git a/library/Zend/Locale/Data/ar_EH.xml b/library/Zend/Locale/Data/ar_EH.xml new file mode 100755 index 000000000..c1f52dafb --- /dev/null +++ b/library/Zend/Locale/Data/ar_EH.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + latn + + diff --git a/library/Zend/Locale/Data/ar_ER.xml b/library/Zend/Locale/Data/ar_ER.xml new file mode 100755 index 000000000..b3966d02a --- /dev/null +++ b/library/Zend/Locale/Data/ar_ER.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Nfk + + + + diff --git a/library/Zend/Locale/Data/ar_IL.xml b/library/Zend/Locale/Data/ar_IL.xml new file mode 100755 index 000000000..3f4de2d52 --- /dev/null +++ b/library/Zend/Locale/Data/ar_IL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_IQ.xml b/library/Zend/Locale/Data/ar_IQ.xml new file mode 100755 index 000000000..1ca1b9d8c --- /dev/null +++ b/library/Zend/Locale/Data/ar_IQ.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرین الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_JO.xml b/library/Zend/Locale/Data/ar_JO.xml new file mode 100755 index 000000000..9e59bd3dc --- /dev/null +++ b/library/Zend/Locale/Data/ar_JO.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_KM.xml b/library/Zend/Locale/Data/ar_KM.xml new file mode 100755 index 000000000..42af8421c --- /dev/null +++ b/library/Zend/Locale/Data/ar_KM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_KW.xml b/library/Zend/Locale/Data/ar_KW.xml new file mode 100755 index 000000000..0260a40bb --- /dev/null +++ b/library/Zend/Locale/Data/ar_KW.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_LB.xml b/library/Zend/Locale/Data/ar_LB.xml new file mode 100755 index 000000000..de810069c --- /dev/null +++ b/library/Zend/Locale/Data/ar_LB.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + {0}, {1} + + + ترتيب تصنيف الشفرة الافتراضية + + + + + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + + + MMM d, y + + + + + + E, MMM d, y G + + + + + + + + , + . + + + + SDG + + + + + diff --git a/library/Zend/Locale/Data/ar_LY.xml b/library/Zend/Locale/Data/ar_LY.xml new file mode 100755 index 000000000..565924ca0 --- /dev/null +++ b/library/Zend/Locale/Data/ar_LY.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + latn + + , + . + + + diff --git a/library/Zend/Locale/Data/ar_MA.xml b/library/Zend/Locale/Data/ar_MA.xml new file mode 100755 index 000000000..07ce3c355 --- /dev/null +++ b/library/Zend/Locale/Data/ar_MA.xml @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + G y/MM/dd + + + + + GGGGG y/M/d + + + + + + M/d + MM/dd + G y/M + G y/M/d + G y/MM + + + + d‏-d + + + d‏-d MMM + + + G y‏-y + + + d‏–d MMM، y G + + + MM ‏- MM ‏–y G + + + + + + + + + يناير + فبراير + مارس + أبريل + ماي + يونيو + يوليوز + غشت + شتنبر + أكتوبر + نونبر + دجنبر + + + ي + ف + م + أ + م + ن + ل + غ + ش + ك + ب + د + + + يناير + فبراير + مارس + أبريل + ماي + يونيو + يوليوز + غشت + شتنبر + أكتوبر + نونبر + دجنبر + + + + + يناير + فبراير + مارس + أبريل + ماي + يونيو + يوليوز + غشت + شتنبر + أكتوبر + نونبر + دجنبر + + + ي + ف + م + أ + م + ن + ل + غ + ش + ك + ب + د + + + يناير + فبراير + مارس + أبريل + ماي + يونيو + يوليوز + غشت + شتنبر + أكتوبر + نونبر + دجنبر + + + + + + + y/MM/dd + + + + + y/M/d + + + + + + M/d + MM/dd + y/M + y/M/d + y/MM + + + + d‏-d + + + d‏-d MMM + + + y‏-y + + + d‏–d MMM، y + + + MM ‏- MM ‏–y + + + + + + + + latn + + ٫ + ٬ + + + , + . + + + diff --git a/library/Zend/Locale/Data/ar_MR.xml b/library/Zend/Locale/Data/ar_MR.xml new file mode 100755 index 000000000..561ec6b23 --- /dev/null +++ b/library/Zend/Locale/Data/ar_MR.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + يناير + فبراير + مارس + إبريل + مايو + يونيو + يوليو + أغشت + شتمبر + أكتوبر + نوفمبر + دجمبر + + + إ + ش + + + يناير + فبراير + مارس + إبريل + مايو + يونيو + يوليو + أغشت + شتمبر + أكتوبر + نوفمبر + دجمبر + + + + + يناير + فبراير + مارس + إبريل + مايو + يونيو + يوليو + أغشت + شتمبر + أكتوبر + نوفمبر + دجمبر + + + إ + ش + + + يناير + فبراير + مارس + إبريل + مايو + يونيو + يوليو + أغشت + شتمبر + أكتوبر + نوفمبر + دجمبر + + + + + + + + + , + . + + + diff --git a/library/Zend/Locale/Data/ar_OM.xml b/library/Zend/Locale/Data/ar_OM.xml new file mode 100755 index 000000000..edb419abc --- /dev/null +++ b/library/Zend/Locale/Data/ar_OM.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_PS.xml b/library/Zend/Locale/Data/ar_PS.xml new file mode 100755 index 000000000..8b30aecdd --- /dev/null +++ b/library/Zend/Locale/Data/ar_PS.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + + + + + + + 0 بليون + 0 بليون + 0 بليون + 0 بليون + 0 بليون + 0 بليون + + + + + 0 بليون + 0 بليون + 0 بليون + 0 بليون + 0 بليون + 0 بليون + + + + + diff --git a/library/Zend/Locale/Data/ar_QA.xml b/library/Zend/Locale/Data/ar_QA.xml new file mode 100755 index 000000000..32e0f07ad --- /dev/null +++ b/library/Zend/Locale/Data/ar_QA.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + ¤#0.00 + + + + + + diff --git a/library/Zend/Locale/Data/ar_SA.xml b/library/Zend/Locale/Data/ar_SA.xml new file mode 100755 index 000000000..e60605c92 --- /dev/null +++ b/library/Zend/Locale/Data/ar_SA.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + M/d + E, M/d + MMM d + E, MMM d + + + + + + + + + + ¤#0.00 + + + + + + diff --git a/library/Zend/Locale/Data/ar_SD.xml b/library/Zend/Locale/Data/ar_SD.xml new file mode 100755 index 000000000..1a242c727 --- /dev/null +++ b/library/Zend/Locale/Data/ar_SD.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_SO.xml b/library/Zend/Locale/Data/ar_SO.xml new file mode 100755 index 000000000..54be2aa83 --- /dev/null +++ b/library/Zend/Locale/Data/ar_SO.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + S + + + + diff --git a/library/Zend/Locale/Data/ar_SS.xml b/library/Zend/Locale/Data/ar_SS.xml new file mode 100755 index 000000000..112088887 --- /dev/null +++ b/library/Zend/Locale/Data/ar_SS.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + GB£ + + + £ + + + + diff --git a/library/Zend/Locale/Data/ar_SY.xml b/library/Zend/Locale/Data/ar_SY.xml new file mode 100755 index 000000000..00fcbfc9b --- /dev/null +++ b/library/Zend/Locale/Data/ar_SY.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + ك + ش + آ + ن + أ + ح + ت + آ + أ + ت + ت + ك + + + كانون الثاني + شباط + آذار + نيسان + أيار + حزيران + تموز + آب + أيلول + تشرين الأول + تشرين الثاني + كانون الأول + + + + + + + + + + + ¤#0.00 + + + + + + diff --git a/library/Zend/Locale/Data/ar_TD.xml b/library/Zend/Locale/Data/ar_TD.xml new file mode 100755 index 000000000..f50f08639 --- /dev/null +++ b/library/Zend/Locale/Data/ar_TD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ar_TN.xml b/library/Zend/Locale/Data/ar_TN.xml new file mode 100755 index 000000000..a643d0a10 --- /dev/null +++ b/library/Zend/Locale/Data/ar_TN.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + G y/MM/dd + + + + + GGGGG y/M/d + + + + + + M/d + MM/dd + G y/M + G y/M/d + G y/MM + + + + d‏-d + + + M‏-M + + + d‏-d MMM + + + G y‏-y + + + d‏-d MMM، y G + + + + + + + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + ج + ف + م + أ + م + ج + ج + أ + س + أ + ن + د + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + ج + ف + م + أ + م + ج + ج + أ + س + أ + ن + د + + + جانفي + فيفري + مارس + أفريل + ماي + جوان + جويلية + أوت + سبتمبر + أكتوبر + نوفمبر + ديسمبر + + + + + + + y/MM/dd + + + + + y/M/d + + + + + + M/d + MM/dd + y/M + y/M/d + y/MM + + + + d‏-d + + + M‏-M + + + d‏-d MMM + + + y‏-y + + + d‏-d MMM، y + + + + + + + + latn + + , + . + + + + + ¤#0.00 + + + + + diff --git a/library/Zend/Locale/Data/ar_YE.xml b/library/Zend/Locale/Data/ar_YE.xml new file mode 100755 index 000000000..e946449e9 --- /dev/null +++ b/library/Zend/Locale/Data/ar_YE.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + ¤#0.00 + + + + + + diff --git a/library/Zend/Locale/Data/as.xml b/library/Zend/Locale/Data/as.xml new file mode 100755 index 000000000..b3a6c3068 --- /dev/null +++ b/library/Zend/Locale/Data/as.xml @@ -0,0 +1,293 @@ + + + + + + + + + + + + অসমীয়া + উপস্থাপন ভাষা + কম্বোডিয়ান + + + + + + এন্টাৰ্টিকা + ব্ৰাজিল + বভেট দ্বীপ + চীন + জাৰ্মানি + ফ্ৰান্স + সংযুক্ত ৰাজ্য + দক্ষিণ জৰ্জিয়া আৰু দক্ষিণ চেণ্ডৱিচ্‌ দ্বীপ + হাৰ্ড দ্বীপ আৰু মেক্‌ডোনাল্ড দ্বীপ + ভাৰত + ব্ৰিটিশ্ব ইণ্ডিয়ান মহাসাগৰৰ অঞ্চল + ইটালি + জাপান + ৰুচ + দক্ষিণ ফ্ৰান্সৰ অঞ্চল + যুক্তৰাষ্ট্ৰ + অজ্ঞাত বা অবৈধ অঞ্চল + + + পঞ্জিকা + শৰীকৰণ + মুদ্ৰা + + + পৰম্পৰাগত চীনা শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম - Big5 + বৌদ্ধ পঞ্জিকা + চীনা পঞ্জিকা + সৰল চীনা শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম - GB2312 + গ্ৰিগোৰীয় পঞ্জিকা + হীব্ৰু পঞ্জিকা + ভাৰতীয় ৰাষ্ট্ৰীয় পঞ্জিকা + ইচলামী পঞ্জিকা + ইচলামী-নাগৰিকৰ পঞ্জিকা + জাপানী পঞ্জিকা + টেলিফোন বহিৰ মতেশৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম + পিন্‌য়িন শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম + চীনা গণৰাজ্যৰ পঞ্জিকা + স্ট্ৰোক শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম + পৰম্পৰাগতভাবে শৃঙ্খলাবদ্ধ কৰাৰ ক্ৰম + + + মেট্ৰিক + ইউ.এছ. + + + + [অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ং \u0981 ঃ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড {ড\u09BC}ড় ঢ {ঢ\u09BC}ঢ় ণ ত থ দ ধ ন প ফ ব ভ ম য {য\u09BC} ৰ ল ৱ শ ষ স হ {ক\u09CDষ} া ি ী \u09C1 \u09C2 \u09C3 ে ৈ ো ৌ \u09CD] + [\u200C\u200D ৲] + [অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ৎ ত থ দ ধ ন প ফ ব ভ ম য ৰ ল ৱ শ ষ স হ ঽ] + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + dd-MM-y G + + + + + d-M-y GGGGG + + + + + + + + + জানু + ফেব্ৰু + মাৰ্চ + এপ্ৰিল + মে + জুন + জুলাই + আগ + সেপ্ট + অক্টো + নভে + ডিসে + + + জানুৱাৰী + ফেব্ৰুৱাৰী + মাৰ্চ + এপ্ৰিল + মে + জুন + জুলাই + আগষ্ট + ছেপ্তেম্বৰ + অক্টোবৰ + নৱেম্বৰ + ডিচেম্বৰ + + + + + + + ৰবি + সোম + মঙ্গল + বুধ + বৃহষ্পতি + শুক্ৰ + শনি + + + দেওবাৰ + সোমবাৰ + মঙ্গলবাৰ + বুধবাৰ + বৃহষ্পতিবাৰ + শুক্ৰবাৰ + শনিবাৰ + + + + + + + প্ৰথম প্ৰহৰ + দ্বিতীয় প্ৰহৰ + তৃতীয় প্ৰহৰ + চতুৰ্থ প্ৰহৰ + + + + + + + পূৰ্বাহ্ণ + অপৰাহ্ণ + + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + dd-MM-y + + + + + d-M-y + + + + + + + h.mm.ss a zzzz + + + + + h.mm.ss a z + + + + + h.mm.ss a + + + + + h.mm. a + + + + + + + + যুগ + + + বছৰ + + + মাহ + + + সপ্তাহ + + + দিন + পৰহি + কালি + কাইলৈ + পৰহিলৈ + + + ঘণ্টা + + + মিনিট + + + ছেকেণ্ড + + + ক্ষেত্ৰ + + + + + এলাহাৱাদ + + + + ভাৰতীয় সময় + + + ভা. স. + + + + + + beng + + beng + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/as_IN.xml b/library/Zend/Locale/Data/as_IN.xml new file mode 100755 index 000000000..8f3a11c27 --- /dev/null +++ b/library/Zend/Locale/Data/as_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/asa.xml b/library/Zend/Locale/Data/asa.xml new file mode 100755 index 000000000..e6afe85cb --- /dev/null +++ b/library/Zend/Locale/Data/asa.xml @@ -0,0 +1,766 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kipare + Kibelarusi + Kibulgaria + Kibangla + Kicheki + Kijerumani + Kigiriki + Kiingeredha + Kihithpania + Kiajemi + Kifarantha + Kihautha + Kihindi + Kihungari + Kiindonethia + Kiigbo + Kiitaliaano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholandhi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kiruthi + Kinyarandwa + Kithomali + Kithwidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kidhulu + + + Andora + Falme dha Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholandhi + Angola + Ajentina + Thamoa ya Marekani + Authtria + Authtralia + Aruba + Adhabajani + Bothnia na Hedhegovina + Babadothi + Bangladeshi + Ubelgiji + Bukinafatho + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Brazili + Bahama + Butani + Botthwana + Belaruthi + Belidhe + Kanada + Jamhuri ya Kidemokrathia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uthwithi + Kodivaa + Vithiwa vya Cook + Chile + Kameruni + China + Kolombia + Kothtarika + Kuba + Kepuvede + Kuprothi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Ethtonia + Mithri + Eritrea + Hithpania + Uhabeshi + Ufini + Fiji + Vithiwa vya Falkland + Mikronethia + Ufarantha + Gaboni + Uingeredha + Grenada + Jojia + Gwiyana ya Ufarantha + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurathi + Korathia + Haiti + Hungaria + Indonethia + Ayalandi + Ithraeli + India + Ieneo la Uingeredha katika Bahari Hindi + Iraki + Uajemi + Aithlandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizithtani + Kambodia + Kiribati + Komoro + Thantakitdhi na Nevith + Korea Kathkazini + Korea Kuthini + Kuwaiti + Vithiwa vya Kayman + Kazakithtani + Laothi + Lebanoni + Thantaluthia + Lishenteni + Thirilanka + Liberia + Lethoto + Litwania + Lathembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Vithiwa vya Marshal + Mathedonia + Mali + Myama + Mongolia + Vithiwa vya Mariana vya Kathkazini + Martiniki + Moritania + Monttherrati + Malta + Morithi + Modivu + Malawi + Mekthiko + Malethia + Mthumbiji + Namibia + Nyukaledonia + Nijeri + Kithiwa cha Norfok + Nijeria + Nikaragwa + Uholandhi + Norwe + Nepali + Nauru + Niue + Nyudhilandi + Omani + Panama + Peru + Polinesia ya Ufarantha + Papua + Filipino + Pakithtani + Polandi + Thantapieri na Mikeloni + Pitkairni + Pwetoriko + Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Uruthi + Rwanda + Thaudi + Vithiwa vya Tholomon + Shelisheli + Thudani + Uthwidi + Thingapoo + Thantahelena + Thlovenia + Tholvakia + Thiera Leoni + Thamarino + Thenegali + Thomalia + Thurinamu + Thao Tome na Principe + Elsavado + Thiria + Uthwadhi + Vithiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikithtani + Tokelau + Timori ya Mashariki + Turukimenithtani + Tunithia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tadhania + Uganda + Marekani + Urugwai + Udhibekithtani + Vatikani + Thantavithenti na Grenadini + Venezuela + Vithiwa vya Virgin vya Uingeredha + Vithiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walith na Futuna + Thamoa + Yemeni + Mayotte + Afrika Kuthini + Dhambia + Dhimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Dec + + + Januari + Februari + Machi + Aprili + Mei + Juni + Julai + Agosti + Septemba + Oktoba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Jpi + Jtt + Jnn + Jtn + Alh + Ijm + Jmo + + + Jumapili + Jumatatu + Jumanne + Jumatano + Alhamisi + Ijumaa + Jumamosi + + + + + J + J + J + J + A + I + J + + + + + + + R1 + R2 + R3 + R4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + + + icheheavo + ichamthi + + + + + + Kabla yakwe Yethu + Baada yakwe Yethu + + + KM + BM + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Edhi + + + Mwaka + + + Mweji + + + Ndisha + + + Thiku + Ighuo + Iyoo + Yavo + + + Thiku ya ndisha + + + Marango athiku + + + Thaa + + + Dakika + + + Thekunde + + + Majira Athaa + + + + + + + + #,##0.00 ¤ + + + + + + dirham ya Falme dha Kiarabu + + + kwandha ya Angola + + + dola ya Authtralia + + + dinari ya Bahareni + + + faranga ya Burundi + + + pula ya Botthwana + + + dola ya Kanada + + + faranga ya Kongo + + + faranga ya Uthwithi + + + yuan renminbi ya China + + + ethkudo ya Kepuvede + + + faranga ya Jibuti + + + dinari ya Aljeria + + + pauni ya Mithri + + + nakfa ya Eritrea + + + bir ya Uhabeshi + + + yuro + + + pauni ya Uingeredha + + + thedi ya Ghana + + + dalathi ya Gambia + + + faranga ya Gine + + + rupia ya India + + + tharafu ya Kijapani + + + shilingi ya Kenya + + + faranga ya Komoro + + + dola ya Liberia + + + loti ya Lethoto + + + dinari ya Libya + + + dirham ya Moroko + + + faranga ya Bukini + + + ugwiya ya Moritania + + + rupia ya Morithi + + + kwacha ya Malawi + + + metikali ya Mthumbiji + + + dola ya Namibia + + + naira ya Nijeria + + + faranga ya Rwanda + + + riyal ya Thaudia + + + rupia ya Shelisheli + + + dinari ya Thudani + + + pauni ya Thudani + + + pauni ya Thantahelena + + + leoni + + + shilingi ya Thomalia + + + dobra ya Thao Tome na Principe + + + lilangeni + + + dinari ya Tunithia + + + shilingi ya Tandhania + TSh + + + shilingi ya Uganda + + + dola ya Marekani + + + faranga CFA BEAC + + + faranga CFA BCEAO + + + randi ya Afrika Kuthini + + + kwacha ya Dhambia (1968–2012) + + + kwacha ya Dhambia + + + dola ya Dhimbabwe + + + + + + Iyee:I + Hai:H + + + + diff --git a/library/Zend/Locale/Data/asa_TZ.xml b/library/Zend/Locale/Data/asa_TZ.xml new file mode 100755 index 000000000..0f9e3fece --- /dev/null +++ b/library/Zend/Locale/Data/asa_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ast.xml b/library/Zend/Locale/Data/ast.xml new file mode 100755 index 000000000..7fede145c --- /dev/null +++ b/library/Zend/Locale/Data/ast.xml @@ -0,0 +1,2613 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abḥasianu + afrikaans + amharicu + árabe + asamés + asturianu + azerbaixanu + bielorrusu + búlgaru + bengalín + tibetanu + bosniu + catalán + checu + galés + danés + alemán + alemán d'Austria + alemán de Suiza + griegu + inglés + inglés d'Australia + inglés de Canadá + inglés de Gran Bretaña + inglés d'EE.XX. + esperanto + español + español d'América Latina + español d'Europa + estoniu + vascu + persa + finlandés + filipín + fixanu + feroés + francés + francés de Canadá + francés de Suiza + frisón occidental + irlandés + gallegu + guaraní + alemánicu de Suiza + guyaratí + ḥausa + ḥawaianu + hebréu + hindi + croata + haitianu + húngaru + armeniu + indonesiu + igbo + islandés + italianu + xaponés + xavanés + xeorxanu + kazaquistanín + ḥemer + canarés + coreanu + cachemirés + curdu + kirguistanín + llatín + luxemburgués + laosianu + lituanu + letón + malgaxe + maorí + macedoniu + malayalam + maratí + malayu + maltés + birmanu + noruegu Bokmål + nepalés + neerlandés + flamencu + noruegu Nynorsk + oriya + punyabí + polacu + pashtu + portugués + portugués del Brasil + portugués d'Europa + quechua + romanche + rumanu + rusu + sánscritu + sindhi + cingalés + eslovacu + eslovenu + somalín + albanu + serbiu + sondanés + suecu + suaḥili + tamil + telugu + taxiquistanín + tailandés + tigrinya + turcomanu + tonganu + turcu + tártaru + uigur + ucraín + llingua desconocida + indostánicu + uzbequistanín + vietnamín + wolof + xhosa + yoruba + chinu + chinu simplificáu + chinu tradicional + zulú + ensin conteníu llingüísticu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundu + África + Norteamérica + América del Sur + Oceanía + África Occidental + América Central + África Oriental + África del Norte + África Central + África del Sur + América + América del Norte + Caribe + Asia Oriental + Asia del Sur + Sureste Asiáticu + Europa del Sur + Australasia + Melanesia + Rexón de Micronesia + Polinesia + Asia + Asia Central + Asia Occidental + Europa + Europa Oriental + Europa del Norte + Europa Occidental + América Llatina + Islla Ascensión + Andorra + Emiratos Árabes Xuníos + Afganistán + Antigua y Barbuda + Anguila + Albania + Armenia + Angola + L'Antártida + Arxentina + Samoa Americana + Austria + Australia + Aruba + Islles Aland + Azerbaixán + Bosnia y Herzegovina + Barbados + Bangladex + Bélxica + Burkina Fasu + Bulgaria + Baḥréin + Burundi + Benín + San Bartolomé + Les Bermudes + Brunéi + Bolivia + Caribe neerlandés + Brasil + Les Bahames + Bután + Islla Bouvet + Botsuana + Bielorrusia + Belize + Canadá + Islles Cocos (Keeling) + Congu - Kinxasa + Congu (RDC) + República Centroafricana + Congu - Brazzaville + Congu (República) + Suiza + Costa de Marfil + Islles Cook + Chile + Camerún + China + Colombia + Islla Clipperton + Costa Rica + Cuba + Cabu Verde + Curaçao + Islla Christmas + Xipre + Chequia + Alemania + Diego Garcia + Xibuti + Dinamarca + Dominica + República Dominicana + Arxelia + Ceuta y Melilla + Ecuador + Estonia + Exiptu + Sáḥara Occidental + Eritrea + España + Etiopía + Xunión Européa + Finlandia + Islles Fixi + Falkland Islands + Islles Malvines + Micronesia + Islles Feroe + Francia + Gabón + Reinu Xuníu + Granada + Xeorxa + Guyana Francesa + Guernsey + Ghana + Xibraltar + Groenlandia + Gambia + Guinea + Guadalupe + Guinea Ecuatorial + Grecia + Islles Xeorxa del Sur y Sandwich del Sur + Guatemala + Guam + Guinea-Bisáu + Guyana + ARE China de Ḥong Kong + Ḥong Kong + Islla Ḥeard ya Islles McDonald + Hondures + Croacia + Haití + Hungría + Islles Canaries + Indonesia + Irlanda + Israel + Islla de Man + India + Territoriu Británicu del Océanu Índicu + Iraq + Irán + Islandia + Italia + Jersey + Xamaica + Xordania + Xapón + Kenia + Kirguistán + Camboya + Kiribati + Les Comores + Saint Kitts y Nevis + Corea del Norte + Corea del Sur + Kuwait + Islles Caimán + Kazakstán + Laos + Líbanu + Santa Llucía + Liechtenstein + Sri Lanka + Liberia + Lesothu + Lituania + Luxemburgu + Letonia + Libia + Marruecos + Mónacu + Moldavia + Montenegru + Saint Martin + Madagascar + Islles Marshall + Macedonia + Macedonia (ARYDM) + Malí + Myanmar (Birmania) + Mongolia + ARE China de Macáu + Macáu + Islles Marianes del Norte + La Martinica + Mauritania + Montserrat + Malta + Mauriciu + Les Maldives + Malaui + Méxicu + Malasia + Mozambique + Namibia + Nueva Caledonia + El Níxer + Islla Norfolk + Nixeria + Nicaragua + Países Baxos + Noruega + Nepal + Nauru + Niue + Nueva Zelanda + Omán + Panamá + Perú + Polinesia Francesa + Papúa Nueva Guinea + Filipines + Pakistan + Polonia + Saint Pierre y Miquelon + Islles Pitcairn + Puertu Ricu + Palestina + Portugal + Paláu + Paraguay + Qatar + Oceanía esterior + Reunión + Rumanía + Serbia + Rusia + Ruanda + Arabia Saudita + Islles Salomón + Les Seixeles + Sudán + Suecia + Singapur + Santa Lena + Eslovenia + Svalbard ya Islla Jan Mayen + Eslovaquia + Sierra Lleona + San Marín + Senegal + Somalia + Surinam + Sudán del Sur + Santu Tomé y Príncipe + El Salvador + Sint Maarten + Siria + Suazilandia + Tristán da Cunha + Islles Turques y Caicos + Chad + Tierres Australes Franceses + Togu + Tailandia + Taxiquistán + Tokeláu + Timor Oriental + Timor Este + Turkmenistán + Tunicia + Tonga + Turquía + Trinidá y Tobagu + Tuvalu + Taiwán + Tanzania + Ucraína + Uganda + Islles Perifériques Menores de los EE.XX. + Estaos Xuníos + Uruguay + Uzbequistán + Ciudá del Vaticanu + San Vicente y les Granadines + Venezuela + Islles Vírxenes Britániques + Islles Vírxenes Americanes + Vietnam + Vanuatu + Wallis y Futuna + Samoa + Yemen + Mayotte + Sudáfrica + Zambia + Zimbabue + Rexón desconocida + + + calendariu + orde de clasificación + moneda + númberos + + + arábicos + arábicos estendíos + armenios + armenios en minúscules + bengalinos + devanagari + orde de clasificación predetermináu d'Unicode + etíopes + anchu completu + xeorxanos + gregorianu + griegos + griegos en minúscules + gujarati + gurmukhi + chinos decimales + chinos simplificaos + chinos simplificaos financieros + chinos tradicionales + chinos tradicionales financieros + hebreos + xaponeses + xaponeses financieros + numberación ḥemer + numberación kannada + laosianos + occidentales + malayalam + myanmar + oriya + romanos + romanos en minúscules + gueta + tamil tradicional + tamil + telugu + tailandeses + tibetanos + + + Métricu + Reinu Xuníu + EE.XX. + + + Llingua: {0} + Alfabetu: {0} + Rexón: {0} + + + + [a á b c d e é f g h ḥ i í l ḷ m n ñ o ó p q r s t u ú ü v x y z] + [ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī j k º ò ŏ ô ö ø ō œ ù ŭ û ū w ÿ] + [A B C D E F G H I L M N Ñ O P Q R S T U V X Y Z] + [\- ‐ – — , ; \: ! ¡ ? ¿ . … ' ‘ ’ " “ ” « » ( ) \[ \] § @ * / \\ \& # † ‡ ′ ″] + {0}… + … {0} + {0}… {1} + ? + + + « + » + + + + + + + + + + EEEE, dd MMMM 'de' y G + + + + + d MMMM 'de' y G + + + + + d MMM y G + + + + + d/M/yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + QQQ y + QQQQ y + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd – dd/MM + dd/MM – dd/MM + + + E, dd – E, dd/MM + E, dd/MM – E, dd/MM + + + LLL–LLL + + + d – d MMM + d/MM – d/MM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y-y + + + MM – MM/y + MM/y – MM/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM – MMM y + MMM y – MMM y + + + d – d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + LLLL – LLLL y + LLLL y – LLLL y + + + + + + + + + xin + feb + mar + abr + may + xun + xnt + ago + set + och + pay + avi + + + X + F + M + A + M + X + X + A + S + O + P + A + + + de xineru + de febreru + de marzu + d'abril + de mayu + de xunu + de xunetu + d'agostu + de setiembre + d'ochobre + de payares + d'avientu + + + + + Xin + Feb + Mar + Abr + May + Xun + Xnt + Ago + Set + Och + Pay + Avi + + + X + F + M + A + M + X + X + A + S + O + P + A + + + xineru + febreru + marzu + abril + mayu + xunu + xunetu + agostu + setiembre + ochobre + payares + avientu + + + + + + + dom + llu + mar + mie + xue + vie + sab + + + D + L + M + M + X + V + S + + + do + ll + ma + mi + xu + vi + sa + + + domingu + llunes + martes + miércoles + xueves + vienres + sábadu + + + + + dom + llu + mar + mie + xue + vie + sab + + + D + L + M + M + X + V + S + + + do + ll + ma + mi + xu + vi + sa + + + domingu + llunes + martes + miércoles + xueves + vienres + sábadu + + + + + + + 1T + 2T + 3T + 4T + + + 1 + 2 + 3 + 4 + + + 1er trimestre + 2u trimestre + 3er trimestre + 4u trimestre + + + + + 1T + 2T + 3T + 4T + + + 1 + 2 + 3 + 4 + + + 1er trimestre + 2u trimestre + 3er trimestre + 4u trimestre + + + + + + + AM + PM + + + + + + a.C. + d.C. + + + + + + EEEE, dd MMMM 'de' y + + + + + d MMMM 'de' y + + + + + d MMM y + + + + + d/M/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + QQQ y + QQQQ y + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd – dd/MM + dd/MM – dd/MM + + + E, dd – E, dd/MM + E, dd/MM – E, dd/MM + + + LLL–LLL + + + d – d MMM + d/MM – d/MM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y-y + + + MM – MM/y + MM/y – MM/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM – MMM y + MMM y – MMM y + + + d – d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + LLLL – LLLL y + LLLL y – LLLL y + + + + + + + + era + + + añu + + En {0} añu + En {0} años + + + Hai {0} añu + Hai {0} años + + + + mes + + En {0} mes + En {0} meses + + + Hai {0} mes + Hai {0} meses + + + + selmana + + En {0} selmana + En {0} selmanes + + + Hai {0} selmana + Hai {0} selmanes + + + + día + antantayeri + antayeri + ayeri + güei + mañana + pasao mañana + + En {0} dia + En {0} díes + + + Hai {0} dia + Hai {0} díes + + + + día de la selmana + + + periodu del día + + + hora + + En {0} hora + En {0} hores + + + Hai {0} hora + Hai {0} hores + + + + minutu + + En {0} minutu + En {0} minutos + + + Hai {0} minutu + Hai {0} minutos + + + + segundu + + En {0} segundu + En {0} segundos + + + Hai {0} segundu + Hai {0} segundos + + + + zona horaria + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Hora de {0} + {1} ({0}) + + Ciudá desconocida + + + Anguila + + + Tirana + + + Viena + + + Sarayevu + + + Bruxeles + + + Sofía + + + La Habana + + + Praga + + + Berlín + + + Copenhague + + + Santu Domingu + + + Canaries + + + Ḥélsinki + + + Islles Feroe + + + París + + + Londres + + + Granada + + + Xibraltar + + + Guadalupe + + + Atenes + + + Puertu Príncipe + + + Dublín + + + Islla de Man + + + Reikiavik + + + Roma + + + Xerséi + + + Xamaica + + + St. Kitts + + + Caimán + + + Santa Llucía + + + Luxemburgu + + + Mónacu + + + Quixináu + + + Skopie + + + La Martinica + + + Ciudá de Méxicu + + + Mérida + + + Cancún + + + Panamá + + + Varsovia + + + Puertu Ricu + + + Les Azores + + + Lisboa + + + Bucarest + + + Belgráu + + + Estocolmu + + + Liubliana + + + San Marín + + + Beulah, Dakota del Norte + + + Nueva Salem, Dakota del Norte + + + Center, Dakota del Norte + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Nueva York + + + El Vaticanu + + + + Hora d'África central + + + + + Hora d'África oriental + + + + + Hora de Sudáfrica + + + + + Hora d'África occidental + Hora estándar d'África occidental + Hora de branu d'África occidental + + + + + Hora d'Alaska + Hora estándar d'Alaska + Hora de branu d'Alaska + + + + + Hora central norteamericana + Hora estándar central norteamericana + Hora de branu central norteamericana + + + + + Hora del este norteamericanu + Hora estándar del este norteamericanu + Hora de branu del este norteamericanu + + + + + Hora de les montañes norteamericanes + Hora estándar de les montañes norteamericanes + Hora de branu de les montañes norteamericanes + + + + + Hora del Pacíficu norteamericanu + Hora estándar del Pacíficu norteamericanu + Hora de branu del Pacíficu norteamericanu + + + + + Hora de les Azores + Hora estándar de les Azores + Hora de branu de les Azores + + + + + Hora de Cabu Verde + Hora estándar de Cabu Verde + Hora de branu de Cabu Verde + + + + + Hora d'Europa Central + Hora estándar d'Europa Central + Hora de branu d'Europa Central + + + CET + CET + CEST + + + + + Hora d'Europa del Este + Hora estándar d'Europa del Este + Hora de branu d'Europa del Este + + + EET + EET + EEST + + + + + Hora d'Europa Occidental + Hora estándar d'Europa Occidental + Hora de branu d'Europa Occidental + + + WET + WET + WEST + + + + + Hora media de Greenwich + + + GMT + + + + + Hora d'Irkutsk + Hora estándar d'Irkutsk + Hora de branu d'Irkutsk + + + + + Hora de Krasnoyarsk + Hora estándar de Krasnoyarsk + Hora de branu de Krasnoyarsk + + + + + Hora de Magadán + Hora estándar de Magadán + Hora de branu de Magadán + + + + + Hora de Mauriciu + Hora estándar de Mauriciu + Hora de branu de Mauriciu + + + + + Hora de Moscú + Hora estándar de Moscú + Hora de branu de Moscú + + + + + Hora de Novosibirsk + Hora estándar de Novosibirsk + Hora de branu de Novosibirsk + + + + + Hora d'Omsk + Hora estándar d'Omsk + Hora de branu d'Omsk + + + + + Hora de Reunión + + + + + Hora de Saxalín + Hora estándar de Saxalín + Hora de branu de Saxalín + + + + + Hora de Les Seixeles + + + + + Hora de Vladivostok + Hora estándar de Vladivostok + Hora de branu de Vladivostok + + + + + Hora de Volgográu + Hora estándar de Volgográu + Hora de branu de Volgográu + + + + + Hora de Yakutsk + Hora estándar de Yakutsk + Hora de branu de Yakutsk + + + + + Hora de Yekaterimburgu + Hora estándar de Yekaterimburgu + Hora de branu de Yekaterimburgu + + + + + + + , + . + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0T + 0T + 00T + 00T + 000T + 000T + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + dirḥam de los Emiratos Árabes Xuníos + dirḥam EAX + dirḥams EAX + + + afganí afganistanu + afganí afganistanu + afganís afganistanos + + + lek + lek + leks + + + dram armeniu + dram armeniu + drams armenios + + + guilder de les Antilles Neerlandeses + guilder de les Antilles Neerlandeses + guilders de les Antilles Neerlandeses + + + kwanza angolanu + kwanza angolanu + kwanzas angolanos + + + pesu arxentín + pesu arxentín + pesos arxentinos + + + dólar australianu + dólar australianu + dólares australianos + A$ + + + florín arubanu + florín arubanu + florines arubanos + + + manat azerbaixanu + manat azerbaixanu + manats azerbaixanos + + + marcu convertible de Bosnia-Herzegovina + marcu convertible de Bosnia-Herzegovina + marcos convertibles de Bosnia-Herzegovina + + + dólar barbadianu + dólar barbadianu + dólares barbadianos + + + taka bangladexí + taka bangladexí + takas bangladexinos + + + lev + lev + lev + + + dinar baḥreiní + dinar baḥreiní + dinares baḥreininos + + + francu burundianu + francu burundianu + francos burundianos + + + dólar bermudianu + dólar bermudianu + dólares bermudianos + + + dólar bruneyanu + dólar bruneyanu + dólares bruneyanos + + + bolivianu + bolivianu + bolivianos + + + real brasilanu + real brasilanu + reales brasilanos + R$ + + + dólar bahamés + dólar bahamés + dólares bahameses + + + ngultrum butanés + ngultrum butanés + ngultrums butaneses + + + pula botsuaniana + pula botsuaniana + pulas botsuanianes + + + rublu bielorrusu + rublu bielorrusu + rublos bielorrusos + + + dólar belizianu + dólar belizianu + dólares belizianos + + + dólar canadiense + dólar canadiense + dólares canadienses + CA$ + + + francu congolés + francu congolés + francos congoleses + + + francu suizu + francu suizu + francos suizos + + + pesu chilenu + pesu chilenu + pesos chilenos + + + yuan chinu + yuan chinu + yuanes chinos + CN¥ + + + pesu colombianu + pesu colombianu + pesos colombianos + + + colón costarricanu + colón costarricanu + colones costarricanos + + + pesu convertible cubanu + pesu convertible cubanu + pesos convertibles cubanos + + + pesu cubanu + pesu cubanu + pesos cubanos + + + escudu cabuverdianu + escudu cabuverdianu + escudos cabuverdianos + + + corona checa + corona checa + corones cheques + + + francu xibutianu + francu xibutianu + francos xibutianos + + + corona danesa + corona danesa + corones daneses + + + pesu dominicanu + pesu dominicanu + pesos dominicanos + + + dinar arxelín + dinar arxelín + dinares arxelinos + + + llibra exipciana + llibra exipciana + llibres exipcianes + + + nafka eritréu + nafka eritréu + nafkas eritreos + + + birr etíope + birr etíope + birrs etíopes + + + euro + euro + euros + + + + dólar fixanu + dólar fixanu + dólares fixanos + + + llibra malviniana + llibra malviniana + llibres malvinianes + + + llibra esterlina + llibra esterlina + llibres esterlines + £ + + + lari xeorxanu + lari xeorxanu + laris xeorxanos + + + cedi ghanianu + cedi ghanianu + cedis ghanianos + + + llibra de Xibraltar + llibra de Xibraltar + llibres de Xibraltar + + + dalasi gambianu + dalasi gambianu + dalasis gambianos + + + francu guineanu + francu guineanu + francos guineanos + + + quetzal de Guatemala + quetzal de Guatemala + quetzales de Guatemala + + + dólar guyanés + dólar guyanés + dólares guyaneses + + + dólar ḥongkonés + dólar ḥongkonés + dólares ḥongkoneses + HK$ + + + lempira hondurana + lempira hondurana + lempires honduranes + + + kuna + kuna + kunes + + + gourde haitianu + gourde haitianu + gourde haitianos + + + forint + forint + forints + + + rupiah indonesia + rupiah indonesia + rupiahs indonesies + + + xequel nuevu + xequel nuevu + xequels nuevos + + + + rupia india + rupia india + rupies indies + + + + dinar iraquín + dinar iraquín + dinares iraquinos + + + rial iranín + rial iranín + riales iraninos + + + corona islandesa + corona islandesa + corones islandeses + + + dólar xamaicanu + dólar xamaicanu + dólares xamaicanos + + + dinar xordanu + dinar xordanu + dinares xordanos + + + yen xaponés + yen xaponés + yenes xaponeses + ¥ + + + shilling kenianu + shilling kenianu + shillings kenianos + + + som kirguistanín + som kirguistanín + soms kirguistaninos + + + riel camboyanu + riel camboyanu + riels camboyanos + + + francu comoranu + francu comoranu + francos comoranos + + + won norcoreanu + won norcoreanu + wons norcoreanos + + + won surcoreanu + won surcoreanu + wons surcoreanos + + + + dinar kuwaitianu + dinar kuwaitianu + dinares kuwaitianos + + + dólar caimanés + dólar caimanés + dólares caimaneses + + + tenge kazaquistanín + tenge kazaquistanín + tenges kazaquistaninos + + + kip laosianu + kip laosianu + kips laosianos + + + llibra libanesa + llibra libanesa + llibres libaneses + + + rupia de Sri Lanka + rupia de Sri Lanka + rupies de Sri Lanka + + + dólar liberianu + dólar liberianu + dólares liberianos + + + litas + litas + litas + + + lats + lats + lats + + + dinar libiu + dinar libiu + dinares libios + + + dirḥam marroquín + dirḥam marroquín + dirḥams marroquinos + + + leu moldavu + leu moldavu + leus moldavos + + + ariary malgaxe + ariary malgaxe + ariarys malgaxes + + + denar + denar + denares + + + kyat de Myanmar + kyat de Myanmar + kyats de Myanmar + + + tugrik mongol + tugrik mongol + tugriks mongoles + + + pataca de Macáu + pataca de Macáu + pataques de Macáu + + + ouguiya mauritanu + ouguiya mauritanu + ouguiyas mauritanos + + + rupia mauriciana + rupia mauriciana + rupies mauricianes + + + rufiyaa maldiviana + rufiyaa maldiviana + rufiyaas maldivianas + + + kwacha malauianu + kwacha malauianu + kwachas malauianos + + + pesu mexicanu + pesu mexicanu + pesos mexicanos + MX$ + + + ringgit malasiu + ringgit malasiu + ringgits malasios + + + metical mozambicanu + metical mozambicanu + meticales mozambicanos + + + dólar namibianu + dólar namibianu + dólares namibianos + + + naira nixeriana + naira nixeriana + nairas nixerianes + + + córdoba nicaraguanu + córdoba nicaraguanu + córdobes nicaraguanos + + + corona noruega + corona noruega + corones noruegues + + + rupia nepalesa + rupia nepalesa + rupies nepaleses + + + dólar neozelandés + dólar neozelandés + dólares neozelandeses + NZ$ + + + rial omanianu + rial omanianu + riales omanianos + + + balboa panamiegu + balboa panamiegu + balboes panamiegos + + + sol nuevu peruanu + sol nuevu peruanu + soles nuevos peruanos + + + kina papuana + kina papuana + kines papuanes + + + pesu filipín + pesu filipín + pesos filipinos + + + rupia paquistanina + rupia paquistanina + rupies paquistanines + + + zloty + zloty + zlotys + + + guaraní paraguayu + guaraní paraguayu + guaranís paraguayos + + + rial qatarín + rial qatarín + riales qatarinos + + + leu rumanu + leu rumanu + leus rumanos + + + dinar serbiu + dinar serbiu + dinares serbios + + + rublu rusu + rublu rusu + rublos rusos + + + francu ruandés + francu ruandés + francos ruandeses + + + riyal saudita + riyal saudita + riyales saudites + + + dólar salomonés + dólar salomonés + dólares salomoneses + + + rupia seixelesa + rupia seixelesa + rupies seixeleses + + + llibra sudanesa + llibra sudanesa + llibres sudaneses + + + corona sueca + corona sueca + corones sueques + + + dólar singapuranu + dólar singapuranu + dólares singapuranos + + + llibra de Santa Lena + llibra de Santa Lena + llibres de Santa Lena + + + leone sierralleonés + leone sierralleonés + leones sierralleoneses + + + shilling somalín + shilling somalín + shillings somalinos + + + dólar surinamés + dólar surinamés + dólares surinameses + + + llibra sursudanesa + llibra sursudanesa + llibres sursudaneses + + + dobra de Santu Tomé y Príncipe + dobra de Santu Tomé y Príncipe + dobras de Santu Tomé y Príncipe + + + llibra siria + llibra siria + llibres siries + + + lilangeni suazilandés + lilangeni suazilandés + lilangenis suazilandeses + + + baht tailandés + baht tailandés + bahts tailandeses + ฿ + + + somoni taxiquistanín + somoni taxiquistanín + somonis taxiquistaninos + + + manat turcomanu + manat turcomanu + manats turcomanos + + + dinar tunecín + dinar tunecín + dinares tunecinos + + + paʻanga tonganu + paʻanga tonganu + paʻangas tonganos + + + llira turca + llira turca + llires turques + + + dólar de Trinidá y Tobagu + dólar de Trinidá y Tobagu + dólares de Trinidá y Tobagu + + + dólar nuevu taiwanés + dólar nuevu taiwanés + dólares nuevos taiwaneses + NT$ + + + shilling tanzanianu + shilling tanzanianu + shillings tanzanianos + + + grivna + grivna + grivnas + + + shilling ugandés + shilling ugandés + shillings ugandeses + + + dólar de los Estaos Xuníos + dólar de los Estaos Xuníos + dólares de los Estaos Xuníos + $ + + + pesu uruguayu + pesu uruguayu + pesos uruguayos + + + som uzbequistanín + som uzbequistanín + soms uzbequistaninos + + + bolívar venezolanu + bolívar venezolanu + bolívares venezolanos + + + dong vietnamín + dong vietnamín + dongs vietnaminos + + + + vatu vanuatuanu + vatu vanuatuanu + vatus vanuatuanos + + + tala samoanu + tala samoanu + talas samoanos + + + francu CFA BEAC + francu CFA BEAC + francos CFA BEAC + FCFA + + + dólar del Caribe Oriental + dólar del Caribe Oriental + dólares del Caribe Oriental + EC$ + + + francu CFA BCEAO + francu CFA BCEAO + francos CFA BCEAO + CFA + + + francu CFP + francu CFP + francos CFP + CFPF + + + divisa desconocida + divisa desconocida + divises desconocíes + + + rial yemenín + rial yemenín + riales yemeninos + + + rand sudafricanu + rand sudafricanu + rands sudafricanos + + + kwacha zambianu (1968–2012) + kwacha zambianu (1968–2012) + kwachas zambianos (1968–2012) + + + kwacha zambianu + kwacha zambianu + kwachas zambianos + + + + + + + {0} dia + {0} díes + + + {0} hora + {0} hores + + + {0} minutu + {0} minutos + + + {0} mes + {0} meses + + + {0} segundu + {0} segundos + + + {0} selmana + {0} selmanes + + + {0} añu + {0} años + + + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} sel + {0} sel + + + {0} a + {0} a + + + + + + {0}, {1} + {0}, {1} + {0} y {1} + {0} y {1} + + + + + si:s + non:n + + + + diff --git a/library/Zend/Locale/Data/ast_ES.xml b/library/Zend/Locale/Data/ast_ES.xml new file mode 100755 index 000000000..d9dbe4b2b --- /dev/null +++ b/library/Zend/Locale/Data/ast_ES.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/az.xml b/library/Zend/Locale/Data/az.xml new file mode 100755 index 000000000..8bddf0760 --- /dev/null +++ b/library/Zend/Locale/Data/az.xml @@ -0,0 +1,5470 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afarca + abxaz + akin dili + akoli dili + adangme dili + aduge dili + avestanca + afrikaans + afrihili dili + aynuca + akanca + akadianca + aleutca + cənub altay dili + amhar + aragonca + qədimi ingiliscə + angikə dili + ərəb + Modern Standart Ərəbcə + aramik dili + araukanca + arapaho dili + aravakça + assam + asturicə + avarikcə + avadicə + aymarca + azərbaycan + başkir dili + baluc dili + balincə + basa dili + belarus + beja dili + bemba dili + bolqar + bxoçpuri dili + bislama dili + bikolca + bini dili + siksikə dili + bambara dili + benqal + tibet + Bretonca + braj dili + bosniak + buryat dili + bugin dili + bilincə + katalan + kado dili + karib dili + atsamca + çeçen dili + kebuano dili + çamoro dili + çibçə dili + çağatay dili + çukiz dili + mari dili + çinuk ləhçəsi + çoktau dili + çipevyan dili + çiroki dili + çeyen dili + korsikan dili + kopt dili + kri dili + krım türkçə + çex + kaşubyan dili + kilsə slav dili + çuvaş dili + uels + danimarka + dakota dili + darqva dili + alman + Avstriya almancası + İsveçrə yüksək almancası + delaver dili + slavey + doqrib dili + dinka dili + doqri dili + aşağı sorbca + duala dili + ortacaq hollandca + diveh dili + dyula dili + dzonqa dili + eve dili + efik dili + qədimi misir dili + ekacuk dili + yunan + elamit dili + ingilis + Avstraliya ingiliscəsi + Kanada ingiliscəsi + Britaniya ingiliscəsi + İngilis dili (B.K.) + Amerika ingiliscəsi + İngilis dili (ABŞ) + ortacaq ingiliscə + esperanto + ispan + Latın Amerikası ispancası + Kastiliya ispancası + Meksika ispancası + eston + bask + evondo dili + fars + fang dili + fanti dili + fula dili + fin + filippin + fici + farer + fon dili + fransız + Kanada fransızcası + İsveçrə fransızcası + ortacaq fransızca + qədimi fransızca + şimal fris dili + friul dili + friz + irland + qa dili + qayo dili + qabaya dili + skot gaelik dili + qez dili + qilbert gili + qalisian + ortacaq yüksək almanca + quarani + qədimi almanca + qondi dili + qorontalo dili + gotça + qrebo dili + qədimi yunanca + İsveçrə almancası + qucarat + manks dili + qviçin dili + hausa + hayda dili + havay + ivrit + hindi + hiliqaynon dili + hittit dili + monq dili + hiri motu dili + xorvat + yuxarı sorbca + haiti + macar + hupa dili + erməni + Herer dili + interlingua dili + iban dili + indoneziya + interlingue dili + iqbo + siçuan yi dili + inupiaq dili + iloko dili + inquş dili + ido dili + island + italyan + inuktikut dili + yapon + loğban dili + judo-farsca + jude-ərəbcə + yava + gürcü + qara-qalpaq dili + kabule dili + kaçinca + ju dili + kamba dili + kavi dili + kabardca + tiyap dili + koro dili + konqo dili + xazi dili + xotan dili + kikuyu dili + kuanyama dili + qazax + kalalisut dili + kxmer + kimbundu dili + kannada + koreya + konkan dili + kosreyan dili + kpelle dili + kanur dili + qaraçay-balkar dili + karelyan dili + kurux dili + kaşmir + kürd + kumuk dili + kutenay dili + komi dili + korniş dili + qırğız + latın + ladin dili + laxnda dili + lamba dili + lüksemburq + ləzqi dili + qanda dili + limburqiş dili + Linqala dili + laos + monqo dili + lozi dili + litva + luba-katanqa dili + luba-lulua dili + luyseno dili + lunda dili + luo dili + lushayca + latış + maduriz dili + maqahi dili + maitili dili + makasar dili + məndinqo dili + masay dili + mokşa dili + mandar dili + mende dili + malaqas + ortacaq irlandca + marşal dili + maori + mikmak dili + minanqkaban dili + makedon + malayalam + monqolca + mançu dili + manipüri dili + moxak dili + mosi dili + marati + malay + malta + digər dillər + krik dili + mirand dili + maruari dili + birma + erzya dili + nauru dili + neapolital dili + bokmal norveç + şimal ndebele dili + aşağı almanca + nepal + nevari dili + nqonka dili + nyas dili + niyuan dili + holland + flamand + nünorsk norveç + norveç dili + noqay dili + qədimi norsca + nqo dili + cənub ndebele dili + şimal soto dili + navayo dili + nyanca dili + nyamvezi dili + nyankol dili + niyoro dili + nizima dili + oksitanca + ocibva dili + oromo dili + oriya + osetik dili + osage dili + osman dili + pəncab + panqasinan dili + paxlavi dili + pampanqa dili + papyamento dili + palayanca + qədimi farsca + foyenik dili + pali dili + polyak + ponpeyan dili + qədimi provensialca + puştu + portuqal + Braziliya portuqalcası + Portuqaliya portuqalcası + keçua + racastan dili + rapanu dili + rarotonqan dili + retoroman + rundi dili + rumın + moldavca + roman dili + rut dili + rus + aromanca + kinyarvanda dili + sanskrit + sandave dili + yakut dili + samaritan dili + sasak dili + santal dili + sardin dili + sisili dili + skots dili + sindhi + şimal sami dili + selkup dili + sanqo dili + qədimi irlandca + serb-xorvatca + şan dili + sinhal + sidamo dili + slovak + sloven + samoa dili + cənub sami dili + lule sami dili + inari sami + skolt dili + şona dili + soninke dili + somali + soqdiyen dili + alban + serb + sranan tonqo dili + serer dilii + svati dili + Sesoto dili + sudan + sukuma dili + susu dili + sumeryan dili + isveç + suahili + siryak dili + tamil + teluqu + timne dili + tereno dili + tetum dili + tacik + tay + tiqrin + tiqre dili + tiv dili + türkmən + tokelay dili + taqaloq dili + klinqon + tlinqit dili + tamaşek dili + svana dili + tonqa + niyasa tonga dili + tok pisin dili + türk + sonqa dili + simşyan dili + tatar + tumbuka dili + tuvalu dili + Tvi dili + taxiti dili + tuvinyan dili + udmurt dili + uyğur + uqaritik dili + ukrayna + umbundu dili + naməlum dil + urdu + özbək + vay dili + venda dili + vyetnam + volapük dili + votik dili + valun dili + valamo dili + varay dili + vaşo dili + volof + kalmıqca + xosa + yao dili + yapiz dili + Yahudi dili + yoruba + juənq dili + zapotek dili + blisimbols dili + zenaqa dili + tamazi + çin + sadələşmiş çin + ənənəvi çin + zulu + zuni dili + dil məzmunu yoxdur + zaza dili + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dünya + Afrika + Şimali Amerika + Cənubi Amerika + Okeaniya + Qərbi Afrika + Mərkəzi Amerika + Şərqi Afrika + Şimali Afrika + Mərkəzi Afrika + Cənubi Afrika + Amerikalar + Şimal Amerikası + Karib + Şərqi Asiya + Cənubi Asiya + Cənub-Şərqi Asiya + Cənubi Avropa + Avstralaziya + Melaneziya + Mikroneziya Regionu + Polineziya + Asiya + Mərkəzi Asiya + Qərbi Asiya + Avropa + Şərqi Avropa + Şimali Avropa + Qərbi Avropa + Latın Amerikası + Yüksəliş Adası + Andorra + Birləşmiş Ərəb Əmirlikləri + Əfqanıstan + Antiqua və Barbuda + Angila + Albaniya + Ermənistan + Hollandiya antilleri + Anqola + Antarktika + Argentina + Amerika Samoası + Avstriya + Avstraliya + Aruba + Aland Adaları + Azərbaycan + Bosniya və Hersoqovina + Barbados + Banqladeş + Belçika + Burkina Faso + Bolqariya + Bəhreyn + Burundi + Benin + San Bartolomey + Bermuda + Bruney + Boliviya + Karib Niderlandı + Braziliya + Baham Adaları + Butan + Buve Adası + Botsvana + Belarus + Beliz + Kanada + Kokos Adaları + Konqo - Kinşasa + Konqo (KDR) + Mərkəzi Afrika Respublikası + Konqo - Brazzavil + Konqo (Respublika) + İsveçrə + Fil Dişi Sahili + Côte d’Ivoire + Kuk Adaları + Çili + Kamerun + Çin + Kolumbiya + Klipperton Adası + Kosta Rika + Kuba + Kape Verde + Kurasao + Milad Adası + Kipr + Çexiya + Almaniya + Dieqo Qarsiya + Cibuti + Danimarka + Dominika + Dominikan Respublikası + Əlcəzair + Seuta və Melilya + Ekvador + Estoniya + Misir + Qərbi Sahara + Eritreya + İspaniya + Efiopiya + Avropa Birliyi + Finlandiya + Fici + Folklend Adaları + Folklend Adaları (Malvin Adaları) + Mikroneziya + Farer Adaları + Fransa + Qabon + Birləşmiş Krallıq + B.K. + Qrenada + Gürcüstan + Fransız Qviyanası + Gernsey + Qana + Gibraltar + Qrenlandiya + Qambiya + Qvineya + Qvadelupa + Ekvatorial Qvineya + Yunanıstan + Cənubi Corciya və Cənubi Sendviç Adaları + Qvatemala + Quam + Qvineya-Bisau + Qviyana + Honq Konq Xüsusi İnzibati Ərazi Çin + Honq Konq + Herd və Mak Donald Adaları + Honduras + Xorvatiya + Haiti + Macarıstan + Kanar Adaları + İndoneziya + İrlandiya + İsrail + Men Adası + Hindistan + Britaniya Hind Okeanı Ərazisi + İraq + İran + İslandiya + İtaliya + Cersi + Yamayka + İordaniya + Yaponiya + Keniya + Qırğızıstan + Kamboca + Kiribati + Komor Adaları + San Kits və Nevis + Şimali Koreya + Cənubi Koreya + Küveyt + Kayman Adaları + Qazaxıstan + Laos + Livan + San Lüsiya + Lixtenşteyn + Şri Lanka + Liberiya + Lesoto + Litva + Lüksemburq + Latviya + Liviya + Mərakeş + Monako + Moldova + Monteneqro + San Martin + Madaqaskar + Marşal Adaları + Makedoniya + Makedoniya (FYROM) + Mali + Myanma + Monqoliya + Makao Xüsusi İnzibati Ərazi Çin + Makao + Şimali Mariana Adaları + Martinik + Mavritaniya + Monserat + Malta + Mavriki + Maldiv Adaları + Malavi + Meksika + Malayziya + Mozambik + Namibiya + Yeni Kaledoniya + Niger + Norfolk Adası + Nigeriya + Nikaraqua + Niderland + Norveç + Nepal + Nauru + Niue + Yeni Zelandiya + Oman + Panama + Peru + Fransız Polineziyası + Papua Yeni Qvineya + Filippin + Pakistan + Polşa + San Pier və Mikelon + Pitkern Adaları + Puerto Riko + Fələstin Əraziləri + Fələstin + Portuqal + Palau + Paraqvay + Qatar + Uzaq Okeaniya + Reunion + Rumıniya + Serbiya + Rusiya + Ruanda + Səudiyyə Ərəbistanı + Solomon Adaları + Seyşel Adaları + Sudan + İsveç + Sinqapur + Müqəddəs Yelena + Sloveniya + Svalbard və Yan Mayen + Slovakiya + Siera Leon + San Marino + Seneqal + Somali + Surinam + Cənubi Sudan + Sao Tome və Prinsip + Salvador + Sint Maarten + Suriya + Svazilend + Tristan da Kunya + Turks və Kaikos Adaları + Çad + Fransa Cənub Əraziləri + Toqo + Tayland + Tacikistan + Tokelau + Şərqi Timor + Doğu Timor + Türkmənistan + Tunis + Tonqa + Türkiya + Trinidad və Tobaqo + Tuvalu + Tayvan + Tanzaniya + Ukrayna + Uqanda + Birləşmiş Ştatlar Uzaq Adalar + Amerika Birləşmiş Ştatları + A.B.Ş. + Uruqvay + Özbəkistan + Vatikan + San Vinsent və Qrenada + Venesuela + Britaniya Vircin Adaları + ABŞ Vircin Adaları + Vyetnam + Vanuatu + Uolis və Futuna + Samoa + Kosovo + Yəmən + Mayot + Cənub Afrika + Zambiya + Zimbabve + Naməlum Region + + + Təqvim + qarşılaşdırma + valyuta + rəqəmlər + + + Budist təqvimi + Çin təqvimi + Qreqorian Təqvimi + Yahudi təqvimi + Hindi təqvimi + Müsəlman təqvimi + Ivrit təqvimi + Yapon təqvimi + Pinyin təqvimi + Çin respublikası təqvimi + axtarış + standart + + + Metrik + Britaniya + ABŞ + + + Dil: {0} + Skript: {0} + Region: {0} + + + + [a b c ç d e ə f g ğ h x ı i İ j k q l m n o ö p r s ş t u ü v y z] + [w] + [A B C Ç D E Ə F G Ğ H X I İ J K Q L M N O Ö P R S Ş T U Ü V Y Z W] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + G d MMMM y, EEEE + + + + + G d MMMM, y + + + + + G d MMM y + + + + + GGGGG dd.MM.y + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + G y + G MMM y + G d MMM y + G d MMM y, E + L + dd.MM + dd.MM, E + LLL + d MMM + d MMM, E + G y + G y + GGGGG MM y + GGGGG dd.MM.y + GGGGG dd.MM.y, E + G MMM y + G d MMM y + G d MMM y, E + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + MM–MM + + + dd.MM – dd.MM + dd.MM – dd.MM + + + dd.MM, E – dd.MM, E + dd.MM, E – dd.MM, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + G y–y + + + GGGGG MM/y – MM/y + GGGGG MM/y – MM/y + + + GGGGG dd/MM/y – dd/MM/y + GGGGG dd/MM/y – dd/MM/y + GGGGG dd/MM/y – dd/MM/y + + + GGGGG dd/MM/y , E – dd/MM/y, E + GGGGG dd/MM/y , E – dd/MM/y, E + GGGGG dd/MM/y , E – dd/MM/y, E + + + G MMM–MMM y + G MMM y – MMM y + + + G d–d MMM y + G d MMM y – d MMM + G d MMM y – d MMM y + + + G d MMM y, E – d MMM, E + G d MMM y, E – d MMM, E + G d MMM y, E – d MMM y, E + + + G MMMM y –MMMM + G MMMM y – MMMM y + + + + + + + + + yan + fev + mar + apr + may + iyn + iyl + avq + sen + okt + noy + dek + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + yanvar + fevral + mart + aprel + may + iyun + iyul + avqust + sentyabr + oktyabr + noyabr + dekabr + + + + + yan + fev + mar + apr + may + iyn + iyl + avq + sen + okt + noy + dek + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Yanvar + Fevral + Mart + Aprel + May + İyun + İyul + Avqust + Sentyabr + Oktyabr + Noyabr + Dekabr + + + + + + + B. + B.E. + Ç.A. + Ç. + C.A. + C + Ş. + + + 7 + 1 + 2 + 3 + 4 + 5 + 6 + + + B. + B.E. + Ç.A. + Ç. + C.A. + C + Ş. + + + bazar + bazar ertəsi + çərşənbə axşamı + çərşənbə + cümə axşamı + cümə + şənbə + + + + + B. + B.E. + Ç.A. + Ç. + C.A. + C + Ş. + + + 7 + 1 + 2 + 3 + 4 + 5 + 6 + + + B. + B.E. + Ç.A. + Ç. + C.A. + C + Ş. + + + bazar + bazar ertəsi + çərşənbə axşamı + çərşənbə + cümə axşamı + cümə + şənbə + + + + + + + 1-ci kv. + 2-ci kv. + 3-cü kv. + 4-cü kv. + + + 1 + 2 + 3 + 4 + + + 1-ci kvartal + 2-ci kvartal + 3-cü kvartal + 4-cü kvartal + + + + + 1-ci kv. + 2-ci kv. + 3-cü kv. + 4-cü kv. + + + 1 + 2 + 3 + 4 + + + 1-ci kvartal + 2-ci kvartal + 3-cü kvartal + 4-cü kvartal + + + + + + + AM + PM + + + + + + eramızdan əvvəl + bizim eramızın + + + e.ə. + b.e. + + + + + + d MMMM y, EEEE + + + + + d MMMM y + + + + + d MMM y + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G MMM y + G d MMM y + G d MMM y, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + dd.MM, E + LLL + d MMM + d MMM, E + mm:ss + y + MM.y + dd.MM.y + dd.MM.y, E + MMM y + d MMM y + d MMM y, E + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + dd.MM – dd.MM + dd.MM – dd.MM + + + dd.MM, E – dd.MM, E + dd.MM, E – dd.MM, E + + + LLL–LLL + + + d–d MMM + d MMM – d MMM + + + d MMM, E – d MMM, E + d MMM, E – d MMM, E + + + y–y + + + MM.y – MM.y + MM.y – MM.y + + + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + + + dd.MM.y, E – dd.MM.y, E + dd.MM.y, E – dd.MM.y, E + dd.MM.y, E – dd.MM.y, E + + + MMM–MMM y + MMM y – MMM y + + + y MMM d–d + d MMM y – d MMM + d MMM y – d MMM y + + + d MMM y, E – d MMM, E + d MMM y, E – d MMM, E + d MMM y, E – d MMM y, E + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + era + + + il + keçən il + bu il + gələn il + + {0} il ərzində + {0} il ərzində + + + {0} il öncə + {0} il öncə + + + + ay + keçən ay + bu ay + gələn ay + + {0} ay ərzində + {0} ay ərzində + + + {0} ay öncə + {0} ay öncə + + + + həftə + keçən həftə + bu həftə + gələn həftə + + {0} həftə ərzində + {0} həftə ərzində + + + {0} həftə öncə + {0} həftə öncə + + + + bu gün + dünən + bu gün + sabah + + {0} gün ərində + {0} gün ərində + + + {0} gün öncə + {0} gün öncə + + + + həftə günü + + + keçən bazar + bu bazar + gələn bazar + + + keçən bazar ertəsi + bu bazar ertəsi + gələn bazar ertəsi + + + keçən çərşənbə axşamı + bu çərşənbə axşamı + gələn çərşənbə axşamı + + + keçən çərşənbə + bu çərşənbə + gələn çərşənbə + + + keçən cümə axşamı + bu cümə axşamı + gələn cümə axşamı + + + keçən cümə + bu cümə + gələn cümə + + + keçən şənbə + bu şənbə + gələn şənbə + + + günün vaxtı + + + saat + + {0} saat ərzində + {0} saat ərzində + + + {0} saat öncə + {0} saat öncə + + + + dəqiqə + + {0} dəqiqə ərzində + {0} dəqiqə ərzində + + + {0} dəqiqə öncə + {0} dəqiqə öncə + + + + saniyə + indi + + {0} saniyə ərzində + {0} saniyə ərzində + + + {0} saniyə öncə + {0} saniyə öncə + + + + saat zolağı + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} Vaxtı + {0} Yay Vaxtı + {0} Standart Vaxtı + {1} ({0}) + + Naməlum Şəhər + + + Dubay + + + Kabil + + + Antiqua + + + Angilya + + + Tirana + + + Syova + + + Mouson + + + Deyvis + + + Keysi + + + Dumont d'Urvil + + + Mak Murdo + + + Rio Qalyeqos + + + San Xuan + + + Uşuya + + + Rioxa + + + Katamarka + + + Tukuman + + + Kordoba + + + Buenos Ayres + + + Paqo Paqo + + + Vyana + + + Yukla + + + Darvin + + + Adelaida + + + Kuriye + + + Melburn + + + Sidney + + + Brisbeyn + + + Makuari + + + Lord Hau + + + Mariham + + + Bakı + + + Sarayevo + + + Dəkkə + + + Brüssel + + + Uqaduqu + + + Bəhreyn + + + San Bartolomey + + + La Pas + + + Kralendik + + + İrunepe + + + Rio Branko + + + Porto Velyo + + + Kuyaba + + + Kampo Qrande + + + Araguayna + + + San Paulo + + + Bahiya + + + Maseyo + + + Resif + + + Qaboron + + + Beliz + + + Douson + + + Uaythors + + + İnuvik + + + Vankuver + + + Douson Krik + + + Kreston + + + Yelounayf + + + Edmondton + + + Svift Kurent + + + Kembric Körfəzi + + + Recina + + + Vinipeq + + + Rezolyut + + + Reyni Çayı + + + Rankin Girişi + + + Koral Harbor + + + İldırım Körfəzi + + + Nipiqon + + + İqaluit + + + Panqnirtanq + + + Monkton + + + Halifaks + + + Quz Körfəzi + + + Qleys Körfəzi + + + Blank-Sablon + + + Sent Cons + + + Kokos + + + Kinşasa + + + Lubumbaşi + + + Banqui + + + Brazzavil + + + Sürix + + + Abican + + + Rarotonqa + + + İster + + + Santyaqo + + + Duala + + + Kaşqar + + + Urumçi + + + Çonginq + + + Şanxay + + + Boqota + + + Kosta Rika + + + Kape Verde + + + Kurasao + + + Milad + + + Nikosia + + + Praqa + + + Cibouti + + + Kopenhagen + + + Dominika + + + Santo Dominqo + + + Əlcəzair + + + Qalapaqos + + + Quayakil + + + Tallin + + + Qahirə + + + Əl Əyun + + + Əsmərə + + + Kanari + + + Seuta + + + Əddis Əbəbə + + + Fici + + + Stenli + + + Çuuk + + + Pohnpei + + + Kosraye + + + Farer + + + Librevil + + + + Britaniya Yay Vaxtı + + + + Qrenada + + + Kayen + + + Gernzey + + + Akkra + + + Tul + + + Nuuk + + + Skoresbisund + + + Danmarkşavn + + + Bancul + + + Konakri + + + Qvadelupa + + + Afina + + + Cənubi Corciya + + + Qvatemala + + + Quam + + + Qayana + + + Honq Konq + + + Tequsiqalpa + + + Zaqreb + + + Port-o-Prins + + + Budapeşt + + + Cakarta + + + Makasar + + + Cayapura + + + + İrlandiya Yay Vaxtı + + + + Yerusəlim + + + Men Adası + + + Kolkata + + + Çaqos + + + Bağdad + + + Reykyavik + + + Roma + + + Cersi + + + Yamayka + + + Bişkek + + + Pnom Pen + + + Enderböri + + + Kirimati + + + Tarava + + + Komoro + + + San Kits + + + Pxenyan + + + Seul + + + Küveyt + + + Kayman + + + Aktau + + + Qızılorda + + + Almatı + + + Vyentyan + + + Beyrut + + + San Lüsiya + + + Vaduts + + + Kolombo + + + Vilnyus + + + Lüksemburq + + + Riqa + + + Kasablanka + + + Monako + + + Kişinyov + + + Podqoritsa + + + Mariqot + + + Kvajaleyn + + + Macuro + + + Skopye + + + Ranqun + + + Ulanbator + + + Çoybalsan + + + Makao + + + Martinik + + + Nouakşot + + + Monserat + + + Mavriki + + + Maldiv + + + Blantir + + + Tixuana + + + Hermosilo + + + Mazaltan + + + Çihuahua + + + Monterey + + + Mexiko + + + Kankun + + + Kuçinq + + + Vindhuk + + + Laqos + + + Manaqua + + + Katmandu + + + Çatam + + + Aukland + + + Muskat + + + Markesas + + + Qambiyer + + + Port Moresbi + + + Karaçi + + + Varşava + + + Mikelon + + + Pitkern + + + Puerto Riko + + + Qəza + + + Azor + + + Madeyra + + + Lissabon + + + Asunsion + + + Buxarest + + + Belqrad + + + Kalininqrad + + + Moskva + + + Volqoqrad + + + Yekaterinburq + + + İrkutsk + + + Xandıqa + + + Saxalin + + + Maqadan + + + Kamçatka + + + Anadır + + + Kiqali + + + Riyad + + + Quadalkanal + + + Xartum + + + Stokholm + + + Sinqapur + + + Müqəddəs Yelena + + + Lyublyana + + + Lonqyir + + + Fritaun + + + Moqadişu + + + San Tom + + + Salvador + + + Aşağı Prins Kvartalı + + + Dəməşq + + + Qrand Turk + + + Ncamena + + + Kergelen + + + Banqkok + + + Düşənbə + + + Aşqabat + + + Tonqapatu + + + İspan Limanı + + + Dar es Salam + + + Ujgorod + + + Kiyev + + + Zaporojye + + + Midvey + + + Conston + + + Veyk + + + Nom + + + Ankorac + + + Cuno + + + Los Anceles + + + Boyse + + + Feniks + + + Beulah, Şimali Dakota + + + Nyu Salem + + + Mərkəz, Şimal Dakota + + + Cikaqo + + + Menomini + + + Vinsen + + + Pitersburq + + + Tell + + + Noks + + + Vinamak + + + Marenqo + + + İndianapolis + + + Luisvil + + + Vivey + + + Montiçello + + + Detroyt + + + Nyu York + + + Səmərqənd + + + Daşkənd + + + Vatikan + + + San Vinsent + + + Karakas + + + San Tomas + + + Ho Şi Min + + + Uollis + + + Mayot + + + Yohanesburq + + + + Əfqanıstan Vaxtı + + + + + Mərkəzi Afrika Vaxtı + + + + + Şərqi Afrika Vaxtı + + + + + Cənubi Afrika Vaxtı + + + + + Qərbi Afrika Vaxtı + Qərbi Afrika Standart Vaxtı + Qərbi Afrika Yay Vaxtı + + + + + Alyaska Vaxtı + Alyaska Standart Vaxtı + Alyaska Yay Vaxtı + + + + + Amazon Vaxtı + Amazon Standart Vaxtı + Amazon Yay Vaxtı + + + + + Şimali Mərkəzi Amerika Vaxtı + Şimali Mərkəzi Amerika Standart Vaxtı + Şimali Mərkəzi Amerika Yay Vaxtı + + + + + Şimali Şərqi Amerika Vaxtı + Şimali Şərqi Amerika Standart Vaxtı + Şimali Şərqi Amerika Yay Vaxtı + + + + + Şimali Dağlıq Amerika Vaxtı + Şimali Dağlıq Amerika Standart Vaxtı + Şimali Dağlıq Amerika Yay Vaxtı + + + + + Şimali Amerika Sakit Okean Vaxtı + Şimali Amerika Sakit Okean Standart Vaxtı + Şimali Amerika Sakit Okean Yay Vaxtı + + + + + Ərəbistan Vaxtı + Ərəbistan Standart Vaxtı + Ərəbistan Yay Vaxtı + + + + + Argentina Vaxtı + Argentina Standart Vaxtı + Argentina Yay Vaxtı + + + + + Qərbi Argentina Vaxtı + Qərbi Argentina Standart Vaxtı + Qərbi Argentina Yay Vaxtı + + + + + Ermənistan Vaxtı + Ermənistan Standart Vaxtı + Ermənistan Yay Vaxtı + + + + + Atlantik Vaxt + Atlantik Standart Vaxt + Atlantik Yay Vaxtı + + + + + Mərkəzi Avstraliya Vaxtı + Mərkəzi Avstraliya Standart Vaxtı + Mərkəzi Avstraliya Yay Vaxtı + + + + + Mərkəzi Qərbi Avstraliya Vaxtı + Mərkəzi Qərbi Avstraliya Standart Vaxtı + Mərkəzi Qərbi Avstraliya Yay Vaxtı + + + + + Şərqi Avstraliya Vaxtı + Şərqi Avstraliya Standart Vaxtı + Şərqi Avstraliya Yay Vaxtı + + + + + Qərbi Avstraliya Vaxtı + Qərbi Avstraliya Standart Vaxtı + Qərbi Avstraliya Yay Vaxtı + + + + + Azərbaycan Vaxtı + Azərbaycan Standart Vaxtı + Azərbaycan Yay Vaxtı + + + + + Azor Vaxtı + Azor Standart Vaxtı + Azor Yay Vaxtı + + + + + Banqladeş Vaxtı + Banqladeş Standart Vaxtı + Banqladeş Yay Vaxtı + + + + + Butan Vaxtı + + + + + Boliviya Vaxtı + + + + + Braziliya Vaxtı + Braziliya Standart Vaxtı + Braziliya Yay Vaxtı + + + + + Brunei Darussalam vaxtı + + + + + Kape Verde Vaxtı + Kape Verde Standart Vaxtı + Kape Verde Yay Vaxtı + + + + + Çamorro Vaxtı + + + + + Çatham Vaxtı + Çatham Standart Vaxtı + Çatham Yay Vaxtı + + + + + Çili Vaxtı + Çili Standart Vaxtı + Çili Yay Vaxtı + + + + + Çin Vaxtı + Çin Standart Vaxtı + Çin Yay Vaxtı + + + + + Çoybalsan Vaxtı + Çoybalsan Standart Vaxtı + Çoybalsan Yay Vaxtı + + + + + Milad Adası Vaxtı + + + + + Kokos Adaları Vaxtı + + + + + Kolumbiya Vaxtı + Kolumbiya Standart Vaxtı + Kolumbiya Yay Vaxtı + + + + + Kuk Adaları Vaxtı + Kuk Adaları Standart Vaxtı + Kuk Adaları Yarım Yay Vaxtı + + + + + Kuba Vaxtı + Kuba Standart Vaxtı + Kuba Yay Vaxtı + + + + + Devis Vaxtı + + + + + Dümon-d’Ürvil Vaxtı + + + + + Şərqi Timor Vaxtı + + + + + Pasxa Adası Vaxtı + Pasxa Adası Standart Vaxtı + Paxsa Adası Yay Vaxtı + + + + + Ekvador Vaxtı + + + + + Mərkəzi Avropa Vaxtı + Mərkəzi Avropa Standart Vaxtı + Mərkəzi Avropa Yay Vaxtı + + + + + Şərqi Avropa Vaxtı + Şərqi Avropa Standart Vaxtı + Şərqi Avropa Yay Vaxtı + + + + + Qərbi Avropa Vaxtı + Qərbi Avropa Standart Vaxtı + Qərbi Avropa Yay Vaxtı + + + + + Folklend Adaları Vaxtı + Folklend Adaları Standart Vaxtı + Folklend Adaları Yay Vaxtı + + + + + Fici Vaxtı + Fici Standart Vaxtı + Fici Yay Vaxtı + + + + + Fransız Qvianası Vaxtı + + + + + Fransız Cənubi və Antarktik Vaxtı + + + + + Qalapaqos Vaxtı + + + + + Qambier Vaxtı + + + + + Gurcüstan Vaxtı + Gurcüstan Standart Vaxtı + Gurcüstan Yay Vaxtı + + + + + Gilbert Adaları Vaxtı + + + + + Qrinviç Orta Vaxtı + + + + + Şərqi Qrenlandiya Vaxtı + Şərqi Qrenlandiya Standart Vaxtı + Şərqi Qrenlandiya Yay Vaxtı + + + + + Qərbi Qrenlandiya Vaxtı + Qərbi Qrenlandiya Standart Vaxtı + Qərbi Qrenlandiya Yay Vaxtı + + + + + Körfəz Vaxtı + + + + + Qayana Vaxtı + + + + + Havay-Aleut Vaxtı + Havay-Aleut Standart Vaxtı + Havay-Aleut Yay Vaxtı + + + + + Honq Konq Vaxtı + Honq Konq Standart Vaxtı + Honq Konq Yay Vaxtı + + + + + Hovd Vaxtı + Hovd Standart Vaxtı + Hovd Yay Vaxtı + + + + + Hindistan Vaxtı + + + + + Hind Okeanı Vaxtı + + + + + Hindçin Vaxtı + + + + + Mərkəzi İndoneziya Vaxtı + + + + + Şərqi İndoneziya Vaxtı + + + + + Qərbi İndoneziya Vaxtı + + + + + İran Vaxtı + İran Standart Vaxtı + İran Yay Vaxtı + + + + + İrkutsk Vaxtı + İrkutsk Standart Vaxtı + İrkutsk Yay Vaxtı + + + + + İsrail Vaxtı + İsrail Standart Vaxtı + İsrail Yay Vaxtı + + + + + Yaponiya Vaxtı + Yaponiya Standart Vaxtı + Yaponiya Yay Vaxtı + + + + + Şərqi Qazaxıstan Vaxtı + + + + + Qərbi Qazaxıstan Vaxtı + + + + + Koreya Vaxtı + Koreya Standart Vaxtı + Koreya Yay Vaxtı + + + + + Korse Vaxtı + + + + + Krasnoyarsk Vaxtı + Krasnoyarsk Standart Vaxtı + Krasnoyarsk Yay Vaxtı + + + + + Qırğızıstan Vaxtı + + + + + Layn Adaları Vaxtı + + + + + Lord Hau Vaxtı + Lord Hau Standart Vaxtı + Lord Hau Yay vaxtı + + + + + Makari Adası Vaxtı + + + + + Maqadan Vaxtı + Maqadan Standart Vaxtı + Maqadan Yay Vaxtı + + + + + Malayziya Vaxtı + + + + + Maldiv Vaxtı + + + + + Markesas Vaxtı + + + + + Marşal Adaları Vaxtı + + + + + Mavriki Vaxtı + Mavriki Standart Vaxtı + Mavriki Yay Vaxtı + + + + + Mouson Vaxtı + + + + + Ulanbator Vaxtı + Ulanbator Standart Vaxtı + Ulanbator Yay Vaxtı + + + + + Moskva Vaxtı + Moskva Standart Vaxtı + Moskva Yay vaxtı + + + + + Myanma Vaxtı + + + + + Nauru Vaxtı + + + + + Nepal vaxtı + + + + + Yeni Kaledoniya Vaxtı + Yeni Kaledoniya Standart Vaxtı + Yeni Kaledoniya Yay Vaxtı + + + + + Yeni Zelandiya Vaxtı + Yeni Zelandiya Standart Vaxtı + Yeni Zelandiya Yay Vaxtı + + + + + Nyufaundlend Vaxtı + Nyufaundlend Standart Vaxtı + Nyufaundlend Yay Vaxtı + + + + + Niue Vaxtı + + + + + Norfolk Adası Vaxtı + + + + + Fernando de Noronya Vaxtı + Fernando de Noronya Standart Vaxtı + Fernando de Noronya Yay Vaxtı + + + + + Novosibirsk Vaxtı + Novosibirsk Standart Vaxtı + Novosibirsk Yay Vaxtı + + + + + Omsk Vaxtı + Omsk Standart Vaxtı + Omsk Yay Vaxtı + + + + + Pakistan Vaxtı + Pakistan Standart vaxtı + Pakistan Yay Vaxtı + + + + + Palau Vaxtı + + + + + Papua Yeni Qvineya Vaxtı + + + + + Paraqvay Vaxtı + Paraqvay Standart Vaxtı + Paraqvay Yay Vaxtı + + + + + Peru Vaxtı + Peru Standart Vaxtı + Peru Yay Vaxtı + + + + + Filippin Vaxtı + Filippin Standart Vaxtı + Filippin Yay Vaxtı + + + + + Feniks Adaları Vaxtı + + + + + San Pier və Mikelon Vaxtı + San Pier və Mikelon Standart Vaxtı + San Pier və Mikelon Yay Vaxtı + + + + + Pitkern Vaxtı + + + + + Ponape Vaxtı + + + + + Reunion Vaxtı + + + + + Rotera Vaxtı + + + + + Saxalin Vaxtı + Saxalin Standart Vaxtı + Saxalin Yay Vaxtı + + + + + Samara vaxtı + Samara standart vaxtı + Samara yay vaxtı + + + + + Samoa Vaxtı + Samoa Standart Vaxtı + Samoa Yay Vaxtı + + + + + Seyşel Adaları Vaxtı + + + + + Sinqapur Vaxtı + + + + + Solomon Adaları Vaxtı + + + + + Cənubi Corciya Vaxtı + + + + + Surinam Vaxtı + + + + + Syova Vaxtı + + + + + Tahiti Vaxtı + + + + + Taybey Vaxtı + Taybey Standart Vaxtı + Taybey Yay Vaxtı + + + + + Tacikistan Vaxtı + + + + + Tokelau Vaxtı + + + + + Tonqa Vaxtı + Tonqa Standart Vaxtı + Tonqa Yay Vaxtı + + + + + Çuuk Vaxtı + + + + + Türkmənistan Vaxtı + Türkmənistan Standart Vaxtı + Türkmənistan Yay Vaxtı + + + + + Tuvalu Vaxtı + + + + + Uruqvay Vaxtı + Uruqvay Standart Vaxtı + Uruqvay Yay Vaxtı + + + + + Özbəkistan Vaxtı + Özbəkistan Standart Vaxtı + Özbəkistan Yay Vaxtı + + + + + Vanuatu Vaxtı + Vanuatu Standart Vaxtı + Vaunatu Yay Vaxtı + + + + + Venesuela Vaxtı + + + + + Vladivostok Vaxtı + Vladivostok Standart Vaxtı + Vladivostok Yay Vaxtı + + + + + Volqoqrad Vaxtı + Volqoqrad Standart Vaxtı + Volqoqrad Yay Vaxtı + + + + + Vostok Vaxtı + + + + + Ueyk Vaxtı + + + + + Uollis və Futuna Vaxtı + + + + + Yakutsk Vaxtı + Yakutsk Standart Vaxtı + Yakutsk Yay Vaxtı + + + + + Yekaterinburq Vaxtı + Yekaterinburq Standart Vaxtı + Yekaterinburq Yay Vaxtı + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0G + 0G + 00G + 00G + 000G + 000G + 0T + 0T + 00T + 00T + 000T + 000T + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0G + 0G + 00G + 00G + 000G + 000G + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Andora Pesetası + Andora pesetası + Andora pesetası + + + Birləşmiş Ərəb Əmirlikləri Dirhəmi + BƏƏ dirhəmi + BƏƏ dirhəmi + + + Əfqanıstan Əfqanisi (1927–2002) + Əfqanıstan əfqanisi (1927–2002) + Əfqanıstan əfqanisi (1927–2002) + + + Əfqanıstan Əfqanisi + Əfqanıstan əfqanisi + Əfqanıstan əfqanisi + + + Albaniya Leki (1946–1965) + Albaniya leki (1946–1965) + Albaniya leki (1946–1965) + + + Albaniya Leki + Albaniya leki + Albaniya leki + + + Ermənistan Dramı + Ermənistan dramı + Ermənistan dramı + + + Niderland Antilyası Gilderi + Niderland Antilyası gilderi + Niderland Antilya gilderi + + + Anqola Kvanzası + Anqola kvanzasi + Anqola kvanzasi + + + Anqola Kvanzasi (1977–1990) + Anqola kvanzasi (1977–1990) + Anqola kvanzasi (1977–1990) + + + Anqola Yeni Kvanzası (1990–2000) + Anqola yeni kvanzası (1990–2000) + Anqola yeni kvanzası (1990–2000) + + + Anqola Kvanzası (1995–1999) + Anqola kvanzası (1995–1999) + Anqola kvanzası (1995–1999) + + + Argentina avstralı + Argentina avstralı + Argentina avstralı + + + Argentina pesosu (1983–1985) + Argentina pesosu (1983–1985) + Argentina pesosu (1983–1985) + + + Argentina Pesosu + Argentina pesosu + Argentina pesosu + + + Avstriya Şillinqi + Avstriya şillinqi + Avstriya şillinqi + + + Avstraliya Dolları + Avstraliya dolları + Avstraliya dolları + A$ + + + Aruba Florini + Aruba florini + Aruba florini + + + Azərbaycan Manatı (1993–2006) + Azərbaycan manatı (1993–2006) + Azərbaycan manatı (1993–2006) + + + Azərbaycan Manatı + Azərbaycan manatı + Azərbaycan manatı + man. + + + Bosniya-Herseqovina Dinarı + Bosniya-Herseqovina dinarı + Bosniya-Herseqovina dinarı + + + Bosniya-Herseqovina Markası + Bosniya-Herseqovina markası + Bosniya-Herseqovina markası + + + Barbados Dolları + Barbados dolları + Barbados dolları + + + Banqladeş Takası + Banqladeş takası + Banqladeş takası + + + Belçika Frankı (deyşirik) + Belçika frankı (deyşirik) + Belçika frankı (deyşirik) + + + Belçika Frankı + Belçika frankı + Belçika frankı + + + Belçika Frankı (finans) + Belçika frankı (finans) + Belçika frankı (finans) + + + Bolqarıstan Levası + Bolqarıstan levası + Bolqarıstan levası + + + Bolqarıstan Levi + Bolqarıstan levi + Bolqarıstan levi + + + Bəhreyn Dinarı + Bəhreyn dinarı + Bəhreyn dinarı + + + Burundi Frankı + Burundi frankı + Burundi frankı + + + Bermuda Dolları + Bermuda dolları + Bermuda dolları + + + Bruney Dolları + Bruney dolları + Bruney dolları + + + Boliviya Bolivianosu + Boliviya bolivianosu + Boliviya bolivianosu + + + Boliviya pesosu + Boliviya pesosu + Boliviya pesosu + + + Boliviya mvdolı + Boliviya mvdolı + Boliviya mvdolı + + + Braziliya kruzeyro novası + Braziliya kruzeyro novası + Braziliya kruzeyro novası + + + Braziliya kruzadosu + Braziliya kruzadosu + Braziliya kruzadosu + + + Braziliya kruzeyrosu (1990–1993) + Braziliya kruzeyrosu (1990–1993) + Braziliya kruzeyrosu (1990–1993) + + + Braziliya Realı + Braziliya realı + Braziliya realı + R$ + + + Braziliya kruzado novası + Braziliya kruzado novası + Braziliya kruzado novası + + + Braziliya kruzeyrosu + Braziliya kruzeyrosu + Braziliya kruzeyrosu + + + Bahama Dolları + Bahama dolları + Bahama dolları + + + Butan Nqultrumu + Butan nqultrumu + Butan nqultrumu + + + Burmis Kyatı + Burmis kyatı + Burmis kyatı + + + Botsvana Pulası + Botsvana pulası + Botsvana pulası + + + Belarus Yeni Rublu (1994–1999) + Belarus yeni rublu (1994–1999) + Belarus yeni rublu (1994–1999) + + + Belarus Rublu + Belarus rublu + Belarus rublu + + + Beliz Dolları + Beliz dolları + Beliz dolları + + + Kanada Dolları + Kanada dolları + Kanada dolları + CA$ + + + Konqo Frankı + Konqo frankı + Konqo frankı + + + WIR Avro + WIR avro + WIR avro + + + İsveçrə Frankı + İsveçrə frankı + İsveçrə frankı + + + WIR Frankası + WIR frankası + WIR frankası + + + Çili Pesosu + Çili pesosu + Çili pesosu + + + Çin Yuanı + Çin yuanı + Çin yuanı + CN¥ + + + Kolumbiya Pesosu + Kolombiya pesosu + Kolombiya pesosu + + + Kosta Rika Kolonu + Kosta Rika kolonu + Kosta Rika kolonu + + + Serbiya Dinarı (2002–2006) + Serbiya dinarı (2002–2006) + Serbiya dinarı (2002–2006) + + + Çexoslavakiya Korunası + Çexoslavakiya korunası + Çexoslavakiya korunası + + + Kuba Çevrilən Pesosu + Kuba çevrilən pesosu + Kuba çevrilən pesosu + + + Kuba Pesosu + Kuba pesosu + Kuba pesosu + + + Kape Verde Eskudosu + Kape Verde eskudosu + Kape Verde eskudosu + + + Kipr Paundu + Kipr paundu + Kipr paundu + + + Çexiya Korunası + Çexiya korunası + Çexiya korunası + + + Şərq Almaniya Ostmarkı + Şərq Almaniya ostmarkı + Şərq Almaniya ostmarkı + + + Alman Markası + Alman markası + Alman markası + + + Cibuti Frankı + Cibuti frankı + Cibuti frankı + + + Danimarka Kronu + Danimarka kronu + Danimarka kronu + + + Dominika Pesosu + Dominika pesosu + Dominika pesosu + + + Əlcəzair Dinarı + Əlcəzair dinarı + Əlcəzair dinarı + + + Ekvador Sukresi + Ekvador sukresi + Ekvador sukresi + + + Estoniya Krunu + Estoniya krunu + Estoniya krunu + + + Misir Funtu + Misir funtu + Misir funtu + + + Eritreya Nakfası + Eritreya nakfası + Eritreya nakfası + + + İspan Pesetası (A account) + İspan pesetası (A account) + İspan pesetası (A account) + + + İspan Pesetası (dəyşirik) + İspan pesetası (dəyşirik) + İspan pesetası (dəyşirik) + + + İspan Pesetası + İspan pesetası + İspan pesetası + + + Efiopiya Bırrı + Efiopiya bırrı + Efiopiya bırrı + + + Avro + Avro + Avro + + + + Fin Markası + Fin markası + Fin markası + + + Fici Dolları + Fici dolları + Fici dolları + + + Folklend Adaları Funtu + Folklend Adaları funtu + Folklend Adaları funtu + + + Fransız Markası + Fransız markası + Fransız markası + + + Britaniya Funt Sterlinqi + Britaniya funt sterlinqi + Britaniya funt sterlinqi + £ + + + Gürcüstan Kupon Lariti + Gürcüstan kupon lariti + Gürcüstan kupon lariti + + + Gürcüstan Larisi + Gürcüstan larisi + Gürcüstan larisi + + + Qana Sedisi (1979–2007) + Qana sedisi (1979–2007) + Qana sedisi (1979–2007) + + + Qana Sedisi + Qana sedisi + Qana sedisi + + + Gibraltar Funtu + Gibraltar funtu + Gibraltar funtu + + + Qambiya Dalasisi + Qambiya dalasisi + Qambiya dalasisi + + + Qvineya Frankı + Qvineya frankı + Qvineya frankı + + + Qvineya Sulisi + Qvineya sulisi + Qvineya sulisi + + + Ekvatoriya Gvineya Ekvele Quneanası + Ekvatoriya Gvineya ekvele quneanası + Ekvatoriya Gvineya ekvele quneanası + + + Yunan Draçması + Yunan draxması + Yunan draxması + + + Qvatemala Küetzalı + Qvatemala küetzalı + Qvatemala küetzalı + + + Portugal Qvineya Eskudosu + Portugal Qvineya eskudosu + Portugal Qvineya eskudosu + + + Qvineya-Bisau Pesosu + Qvineya-Bisau pesosu + Qvineya-Bisau pesosu + + + Qayana Dolları + Qayana dolları + Qayana dolları + + + Honq Konq Dolları + Honq Konq dolları + Honq Konq dolları + HK$ + + + Honduras Lempirası + Honduras lempirası + Honduras lempirası + + + Xorvatiya Dinarı + Xorvatiya dinarı + Xorvatiya dinarı + + + Xorvatiya Kunası + Xorvatiya kunası + Xorvatiya kunası + + + Haiti Qourdu + Haiti qourdu + Haiti qourdu + + + Macarıstan Forinti + Macarıstan forinti + Macarıstan forinti + + + İndoneziya Rupisi + İndoneziya rupisi + İndoneziya rupisi + + + İrlandiya Paundu + İrlandiya paundu + İrlandiya paundu + + + İzrail Paundu + İzrail paundu + İzrail paundu + + + İsrail Şekeli (1980–1985) + İsrail şekeli (1980–1985) + İsrail şekeli (1980–1985) + + + İsrail Yeni Şekeli + İsrail yeni şekeli + İsrail yeni şekeli + + + + Hindistan Rupisi + Hindistan rupisi + Hindistan rupisi + + + + İraq Dinarı + İraq dinarı + İraq dinarı + + + İran Rialı + İran rialı + İran rialı + + + İslandiya Kronu (1918–1981) + İslandiya kronu (1918–1981) + İslandiya kronu (1918–1981) + + + İslandiya Kronu + İslandiya kronu + İslandiya kronu + + + İtaliya Lirası + İtaliya lirası + İtaliya lirası + + + Yamayka Dolları + Yamayka dolları + Yamayka dolları + + + İordaniya Dinarı + İordaniya dinarı + İordaniya dinarı + + + Yaponiya Yeni + Yaponiya yeni + Yaponiya yeni + JP¥ + + + Keniya Şillinqi + Keniya şillinqi + Keniya şillinqi + + + Kırğızıstan Somu + Kırğızıstan somu + Kırğızıstan somu + + + Kamboca Rieli + Kamboca rieli + Kamboca rieli + + + Komor Frankı + Komor frankı + Komor frankı + + + Şimali Koreya Vonu + Şimali Koreya vonu + Şimali Koreya vonu + + + Cənubi Koreya Vonu + Cənubi Koreya vonu + Cənubi Koreya vonu + + + + Küveyt Dinarı + Küveyt dinarı + Küveyt dinarı + + + Kayman Adaları Dolları + Kayman Adaları dolları + Kayman Adaları dolları + + + Qazaxıstan Tengesi + Qazaxıstan tengesi + Qazaxıstan tengesi + + + Laos Kipi + Laos kipi + Laos kipi + + + Livan Funtu + Livan funtu + Livan funtu + + + Şri Lanka Rupisi + Şri Lanka rupisi + Şri Lanka rupisi + + + Liberiya Dolları + Liberiya dolları + Liberiya dolları + + + Lesoto Lotisi + Lesoto lotisi + Lesoto lotisi + + + Litva Liti + Litva liti + Litva liti + + + Litva Talonası + Litva talonası + Litva talonası + + + Luksemburq Frankası (dəyişik) + Luksemburq dəyişik frankası + Luksemburq dəyişik frankası + + + Luksemburq Frankası + Luksemburq frankası + Luksemburq frankası + + + Luksemburq Frankası (finans) + Luksemburq finans frankası + Luksemburq finans frankası + + + Latviya Latı + Latviya latı + Latviya latı + + + Latviya Rublu + Latviya rublu + Latviya rublu + + + Liviya Dinarı + Liviya dinarı + Liviya dinarı + + + Mərakeş Dirhəmi + Mərakeş dirhəmi + Mərakeş dirhəmi + + + Mərakeş Frankası + Mərakeş frankası + Mərakeş frankası + + + Moldova Leyi + Moldova leyi + Moldova leyi + + + Madaqaskar Ariarisi + Madaqaskar ariarisi + Madaqaskar ariarisi + + + Madaqaskar Frankası + Madaqaskar frankası + Madaqaskar frankası + + + Makedoniya Dinarı + Makedoniya dinarı + Makedoniya dinarı + + + Makedoniya Dinarı (1992–1993) + Makedoniya dinarı (1992–1993) + Makedoniya dinarı (1992–1993) + + + Mali Frankı + Mali frankı + Mali frankı + + + Myanma Kiyatı + Myanmar kiyatı + Myanmar kiyatı + + + Monqoliya Tuqriki + Monqoliya tuqriki + Monqoliya tuqriki + + + Makao Patakası + Makao patakası + Makao patakası + + + Mavritaniya Ugiyası + Mavritaniya ugiyası + Mavritaniya ugiyası + + + Maltiz Paundu + Maltiz paundu + Maltiz paundu + + + Mavriki Rupisi + Mavriki rupisi + Mavriki rupisi + + + Maldiv Rufiyası + Maldiv rufiyası + Maldiv rufiyası + + + Malavi Kvaçası + Malavi kvaçası + Malavi kvaçası + + + Meksika Pesosu + Meksika pesosu + Meksika pesosu + MX$ + + + Meksika gümüş pesosu + Meksika gümüş pesosu + Meksika gümüş pesosu + + + Malayziya Ringiti + Malayziya ringiti + Malayziya ringiti + + + Mozambik Eskudosu + Mozambik eskudosu + Mozambik eskudosu + + + Mozambik Metikalı (1980–2006) + Mozambik metikalı (1980–2006) + Mozambik metikalı (1980–2006) + + + Mozambik Metikalı + Mozambik metikalı + Mozambik metikalı + + + Namibiya Dolları + Namibiya dolları + Namibiya dolları + + + Nigeriya Nairası + Nigeriya nairası + Nigeriya nairası + + + Nikaraqua kordobu + Nikaraqua kordobu + Nikaraqua kordobu + + + Nikaraqua Kordobası + Nikaraqua kordobası + Nikaraqua kordobası + + + Hollandiya Gilderi + Hollandiya gilderi + Hollandiya gilderi + + + Norveç Kronu + Norveç kronu + Norveç kronu + + + Nepal Rupisi + Nepal rupisi + Nepal rupisi + + + Yeni Zelandiya Dolları + Yeni Zelandiya dolları + Yeni Zelandiya dolları + NZ$ + + + Oman Rialı + Oman rialı + Oman rialı + + + Panama Balboası + Panama balboası + Panama balboası + + + Peru Inti + Peru inti + Peru inti + + + Peru Nuevo Solu + Peru Nuevo solu + Peru Nuevo solu + + + Peru Solu + Peru solu + Peru solu + + + Papua Yeni Qvineya Kinası + Papua Yeni Qvineya kinası + Papua Yeni Qvineya kinası + + + Filippin Pesosu + Filippin pesosu + Filippin pesosu + + + Pakistan Rupisi + Pakistan rupisi + Pakistan rupisi + + + Polşa Zlotısı + Polşa zlotısı + Polşa zlotısı + + + Polşa Zlotısı (1950–1995) + Polşa zlotısı (1950–1995) + Polşa zlotısı (1950–1995) + + + Portuqal Eskudosu + Portuqal eskudosu + Portuqal eskudosu + + + Paraqvay Quaranisi + Paraqvay quaranisi + Paraqvay quaranisi + + + Qatar Rialı + Qatar rialı + Qatar rialı + + + Rodezian Dolları + Rodezian dolları + Rodezian dolları + + + Rumıniya Leyi (1952–2006) + Rumıniya leyi (1952–2006) + Rumıniya leyi (1952–2006) + + + Rumıniya Leyi + Rumıniya leyi + Rumıniya leyi + + + Serbiya Dinarı + Serbiya dinarı + Serbiya dinarı + + + Rusiya Rublu + Rusiya rublu + Rusiya rublu + + + Rusiya Rublu (1991–1998) + Rusiya rublu (1991–1998) + Rusiya rublu (1991–1998) + + + Ruanda Frankı + Ruanda frankı + Ruanda frankı + + + Səudiyyə Riyalı + Səudiyyə riyalı + Səudiyyə riyalı + + + Solomon Adaları Dolları + Solomon Adaları dolları + Solomon Adaları dolları + + + Seyşel Rupisi + Seyşel rupisi + Seyşel rupisi + + + Sudan Funtu + Sudan funtu + Sudan funtu + + + İsveç Kronu + İsveç kronu + İsveç kronu + + + Sinqapur Dolları + Sinqapur dolları + Sinqapur dolları + + + Müqəddəs Yelena Funtu + Müqəddəs Yelena funtu + Müqəddəs Yelena funtu + + + Sloveniya Toları + Sloveniya toları + Sloveniya toları + + + Slovak Korunası + Slovak korunası + Slovak korunası + + + Sierra Leon Leonu + Sierra Leon leonu + Sierra Leon leonu + + + Somali Şillinqi + Somali şillinqi + Somali şillinqi + + + Surinam Dolları + Surinam dolları + Surinam dolları + + + Cənubi Sudan Funtu + Cənubi Sudan funtu + Cənubi Sudan funtu + + + San Tom və Prinsip Dobrası + San Tom və Prinsip dobrası + San Tom və Prinsip dobrası + + + Sovet Rublu + Sovet rublu + Sovet rublu + + + El Salvador kolonu + El Salvador kolonu + El Salvador kolonu + + + Suriya Funtu + Suriya funtu + Suriya funtu + + + Svazilend Lilangenini + Svazilend lilangenini + Svazilend emalangenini + + + Tayland Batı + Tayland batı + Tayland batı + ฿ + + + Tacikistan Rublu + Tacikistan rublu + Tacikistan rublu + + + Tacikistan Somonisi + Tacikistan somonisi + Tacikistan somonisi + + + Türkmənistan Manatı (1993–2009) + Türkmənistan manatı (1993–2009) + Türkmənistan manatı (1993–2009) + + + Türkmənistan Manatı + Türkmənistan manatı + Türkmənistan manatı + + + Tunis Dinarı + Tunis dinarı + Tunis dinarı + + + Tonqa Panqası + Tonqa panqası + Tonqa panqası + + + Timor Eskudu + Timor eskudu + Timor eskudu + + + Türkiyə Lirəsi (1922–2005) + Türkiyə lirəsi (1922–2005) + Türkiyə lirəsi (1922–2005) + + + Türkiyə Lirəsi + Türkiyə lirəsi + Türkiyə lirəsi + + + Trinidad və Tobaqo Dolları + Trinidad və Tobaqo dolları + Trinidad və Tobaqo dolları + + + Tayvan Yeni Dolları + Tayvan yeni dolları + Tayvan yeni dolları + NT$ + + + Tanzaniya Şillinqi + Tanzaniya şillinqi + Tanzaniya şillinqi + + + Ukrayna Qrivnası + Ukrayna qrivnası + Ukrayna qrivnası + + + Ukrayna Karbovenesası + Ukrayna karbovenesası + Ukrayna karbovenesası + + + Uqanda Şillinqi (1966–1987) + Uqanda şillinqi (1966–1987) + Uqanda şillinqi (1966–1987) + + + Uqanda Şillinqi + Uqanda şillinqi + Uqanda şillinqi + + + ABŞ Dolları + ABŞ dolları + ABŞ dolları + US$ + + + ABŞ dolları (yeni gün) + ABŞ dolları (yeni gün) + ABŞ dolları (yeni gün) + + + ABŞ dolları (həmin gün) + ABŞ dolları (həmin gün) + ABŞ dolları (həmin gün) + + + Uruqvay pesosu Unidades Indexadas + Uruqvay pesosu unidades indexadas + Uruqvay pesosu unidades indexadas + + + Uruqvay Pesosu (1975–1993) + Uruqvay pesosu (1975–1993) + Uruqvay pesosu (1975–1993) + + + Uruqvay Pesosu + Uruqvay pesosu + Uruqvay pesosu + + + Özbəkistan Somu + Özbəkistan somu + Özbəkistan somu + + + Venesuela Bolivarı (1871–2008) + Venesuela bolivarı (1871–2008) + Venesuela bolivarı (1871–2008) + + + Venesuela Bolivarı + Venesuela bolivarı + Venesuela bolivarı + + + Vyetnam Donqu + Vyetnam donqu + Vyetnam donqu + + + + Vyetnam Donqu (1978–1985) + Vyetnam donqu (1978–1985) + Vyetnam donqu (1978–1985) + + + Vanuatu Vatusu + Vanuatu vatusu + Vanuatu vatusu + + + Samoa Talası + Samoa talası + Samoa talası + + + Kamerun Frankı + Kamerun frankı + Kamerun frankı + FCFA + + + gümüş + gümüş + gümüş + + + qızıl + qızıl + qızıl + + + Şərqi Karib Dolları + Şərqi Karib dolları + Şərqi Karib dolları + EC$ + + + Fransız Gızıl Frankı + Fransız gızıl frankı + Fransız gızıl frankı + + + Fransız UİC Frankı + Fransız UİC frankı + Fransız UİC frankı + + + Fil Dişi Sahili Frankı + Fil Dişi Sahili frankı + Fil Dişi Sahili frankı + CFA + + + Palladium + Palladium + Palladium + + + Fransız Polineziyası Frankı + Fransız Polineziyası frankı + Fransız Polineziyası frankı + CFPF + + + Platinum + platinum + platinum + + + Naməlum Valyuta + naməlum valyuta + naməlum valyuta + + + Yəmən Dinarı + Yəmən dinarı + Yəmən dinarı + + + Yəmən Rialı + Yəmən rialı + Yəmən rialı + + + Yuqoslaviya Dinarı (1966–1990) + Yuqoslaviya dinarı (1966–1990) + Yuqoslaviya dinarı (1966–1990) + + + Yuqoslaviya Yeni Dinarı (1994–2002) + Yuqoslaviya yeni dinarı (1994–2002) + Yuqoslaviya yeni dinarı (1994–2002) + + + Yuqoslaviya Dinarı (1990–1992) + Yuqoslaviya dinarı (1990–1992) + Yuqoslaviya dinarı (1990–1992) + + + Cənubi Afrika Randı (finans) + Cənubi Afrika randı (finans) + Cənubi Afrika randı (finans) + + + Cənubi Afrika Randı + Cənubi Afrika randı + Cənubi Afrika randı + + + Zambiya Kvaçası (1968–2012) + Zambiya kvaçası (1968–2012) + Zambiya kvaçası (1968–2012) + + + Zambiya Kvaçası + Zambiya kvaçası + Zambiya kvaçası + + + Zair Yeni Zairi (1993–1998) + Zair yeni zairi (1993–1998) + Zair yeni zairi (1993–1998) + + + Zair Zairi (1971–1993) + Zair zairi (1971–1993) + Zair zairi (1971–1993) + + + Zimbabve Dolları (1980–2008) + Zimbabve dolları (1980–2008) + Zimbabve dolları (1980–2008) + + + Zimbabve Dolları (2009) + Zimbabve dolları (2009) + Zimbabve dolları (2009) + + + Zimbabve Dolları (2008) + Zimbabve dolları (2008) + Zimbabve dolları (2008) + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} g qüvvəsi + {0} g qüvvəsi + + + {0}dəqiqə + {0}dəqiqə + + + {0}saniyə + {0}saniyə + + + {0}dərəcə + {0}dərəcə + + + {0} akr + {0} akr + + + {0} hektar + {0} hektar + + + {0} kvadrat fut + {0} kvadrat fut + + + {0} kvadrat kilometr + {0} kvadrat kilometr + + + {0} kvadrat metr + {0} kvadrat metr + + + {0} kvadrat mil + {0} kvadrat mil + + + {0} gün + {0} gün + + + {0} saat + {0} saat + + + {0} millisaniyə + {0} millisaniyə + + + {0} dəqiqə + {0} dəqiqə + + + {0} ay + {0} ay + + + {0} saniyə + {0} saniyə + + + {0} həftə + {0} həftə + + + {0} il + {0} il + + + {0} santimetr + {0} santimetr + + + {0} fut + {0} fut + + + {0} düym + {0} düym + + + {0} kilometr + {0} kilometr + + + {0} işıq ili + {0} işıq ili + + + {0} metr + {0} metr + + + {0} mil + {0} mil + + + {0} millimetr + {0} millimetr + + + {0} pikometr + {0} pikometr + + + {0} yard + {0} yard + + + {0} qram + {0} qram + + + {0} kiloqram + {0} kiloqram + + + {0} unsiya + {0} unsiya + + + {0} funt + {0} funt + + + {0} at gücü + {0} at gücü + + + {0} kilovatt + {0} kilovatt + + + {0} vatt + {0} vatt + + + {0} hektopaskal + {0} hektopaskal + + + {0} civə düymü + {0} civə düymü + + + {0} millibar + {0} millibar + + + {0} kilometr/saat + {0} kilometr/saat + + + {0} metr/saniyə + {0} metr/saniyə + + + {0} mil/saat + {0} mil/saat + + + {0}dərəcə Selsi + {0}dərəcə Selsi + + + {0}dərəcə Farengeyt + {0}dərəcə Farengeyt + + + {0} kub kilometr + {0} kub kilometr + + + {0} kub mil + {0} kub mil + + + {0} litr + {0} litr + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}dəq + {0}dəq + + + {0}san + {0}san + + + {0}dər + {0}dər + + + {0} ak + {0} ak + + + {0} ha + {0} ha + + + {0} kv ft + {0} kv ft + + + {0} kv km + {0} kv km + + + {0} kv m + {0} kv m + + + {0} kv mil + {0} kv mil + + + {0} gün + {0} gün + + + {0} saat + {0} saat + + + {0} ms + {0} ms + + + {0} dəq + {0} dəq + + + {0} ay + {0} ay + + + {0} san + {0} san + + + {0} hft + {0} hft + + + {0} il + {0} il + + + {0} sm + {0} sm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ii + {0} ii + + + {0} m + {0} m + + + {0} mil + {0} mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} q + {0} q + + + {0} kq + {0} kq + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/saat + {0} km/saat + + + {0} m/s + {0} m/s + + + {0} mil/saat + {0} mil/saat + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mil³ + {0} mil³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ak + {0} ak + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mil² + {0} mil² + + + {0} gün + {0} gün + + + {0} saat + {0} saat + + + {0} ms + {0} ms + + + {0} dəq + {0} dəq + + + {0} ay + {0} ay + + + {0} san + {0} san + + + {0} hft + {0} hft + + + {0} il + {0} il + + + {0} sm + {0} sm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ii + {0} ii + + + {0} m + {0} m + + + {0} mil + {0} mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} q + {0} q + + + {0} kq + {0} kq + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/saat + {0} km/saat + + + {0} m/s + {0} m/s + + + {0} mil/saat + {0} mil/saat + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mil³ + {0} mil³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} və {1} + {0} və {1} + + + {0}, {1} + {0}, {1} + {0} və {1} + {0} və {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + hə:h + yox:y + + + + diff --git a/library/Zend/Locale/Data/az_Cyrl.xml b/library/Zend/Locale/Data/az_Cyrl.xml new file mode 100755 index 000000000..0b799eaf0 --- /dev/null +++ b/library/Zend/Locale/Data/az_Cyrl.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + Свет + Афрыка + Паўночная Амэрыка + Паўднёвая Амэрыка + Акіянія + Заходняя Афрыка + Цэнтральная Амэрыка + Усходняя Афрыка + Паўночная Афрыка + Цэнтральная Афрыка + Паўднёвая Афрыка + Паўночная і Паўднёвая Амерыкі + ЗША і Канада + Карыбскія астравы + Усходняя Азія + Паўднёвая Азія + Паўднёва-Усходняя Азія + Паўднёвая Еўропа + Аўстралія і Новая Зэландыя + Палінезія + Азія + Цэнтральная Азія + Заходняя Азія + Еўропа + Усходняя Еўропа + Паўночная Еўропа + Заходняя Еўропа + Андора + Аб'яднаныя Арабскія Эміраты + Афганістан + Антыгуа і Барбуда + Ангілья + Албанія + Арменія + Нідэрландскія Антылы + Ангола + Антарктыка + Аргенціна + Амерыканскае Самоа + Аўстрыя + Аўстралія + Аруба + Аландскія астравы + Азербайджан + Боснія і Герцагавіна + Барбадас + Бангладэш + Бельгія + Буркіна-Фасо + Балгарыя + Бахрэйн + Бурундзі + Бенін + Сен-Бартэльмі + Бермудскія астравы + Бруней + Балівія + Бразілія + Багамы + Бутан + Бувэ востраў + Батсвана + Беларусь + Беліз + Канада + Какосавыя астравы + Конга, Дэмакратычная Рэспубліка + Дэмакратычная Рэспубліка Конга + Цэнтральна-Афрыканская Рэспубліка + Конга + Рэспубліка Конга + Швейцарыя + Кот-д'Івуар + Астравы Кука + Чылі + Камерун + Кітай + Калумбія + Коста-Рыка + Куба + Каба-Вердэ + Востраў Кюрасаа + Востраў Ражства + Кіпр + Чэхія + Германія + Джыбуці + Данія + Дамініка + Дамініканская Рэспубліка + Алжыр + Эквадор + Эстонія + Егіпет + Заходняя Сахара + Эрытрэя + Іспанія + Эфіопія + Еўрапейскі Звяз + Фінляндыя + Фіджы + Фолклэндскія астравы + Мікранезія + Фарэрскія астравы + Францыя + Габон + Вялікабрытанія + Грэнада + Грузія + Французская Гвіяна + Востраў Гернсі + Гана + Гібралтар + Грэнландыя + Гамбія + Гвінея + Гвадэлупа + Экватарыяльная Гвінея + Грэцыя + Паўднёвая Джорджыя і Паўднёвыя Сандвічавы астравы + Гватэмала + Гуам + Гвінея-Бісау + Гаяна + Гон-Конг, Кітай (САР) + Ганконг + Востраў Херд і Астравы Макдоналд + Гандурас + Харватыя + Гаіці + Венгрыя + Інданезія + Ірландыя + Ізраіль + Востраў Мэн + Індыя + Брытанская тэрыторыя ў Індыйскім акіяне + Ірак + Іран + Ісландыя + Італія + Востраў Джэрсі + Ямайка + Іарданія + Японія + Кенія + Кыргызстан + Камбоджа + Кірыбаці + Каморскія Астравы + Сент-Кітс і Невіс + Паўночная Карэя + Паўднёвая Карэя + Кувейт + Кайманавы астравы + Казахстан + Лаос + Ліван + Сент-Люсія + Ліхтэнштэйн + Шры-Ланка + Ліберыя + Лесота + Літва + Люксембург + Латвія + Лівія + Марока + Манака + Малдова + Чарнагорыя + Мадагаскар + Маршалавы Астравы + Македонія, БЮР + Рэспубліка Македонія + Малі + М'янма + Манголія + Макао, Кітай (САР) + Макаа + Паўночныя Марыянскія астравы + Марцініка + Маўрытанія + Мантсерат + Мальта + Маўрыкій + Мальдывы + Малаві + Мексіка + Малайзія + Мазамбік + Намібія + Новая Каледонія + Нігер + Востраў Норфалк + Нігерыя + Нікарагуа + Нідэрланды + Нарвегія + Непал + Науру + Ніуэ + Новая Зеландыя + Аман + Панама + Перу + Французская Палінезія + Папуа — Новая Гвінея + Філіпіны + Пакістан + Польшча + Сен-П'ер і Мікелон + Астравы Піткэрн + Пуэрта-Рыка + Палестынскія тэрыторыі + Партугалія + Палау + Парагвай + Катар + Вонкавая Акіянія + Рэюньён + Румынія + Сербія + Расія + Руанда + Саудаўская Аравія + Саламонавы Астравы + Сейшэльскія Астравы + Судан + Швецыя + Сінгапур + Святой Алены, Востраў + Славенія + Свальбард (Паўночна-Усходняя Зямля) і Ян-Маен + Славакія + Сьера-Леонэ + Сан-Марына + Сенегал + Самалі + Сурынам + Паўднёвы Судан + Сан-Тамэ і Прынсіпі + Сальвадор + Сірыя + Свазіленд + Цёркс і Кайкас + Чад + Французскія Паўднёвыя тэрыторыі + Тога + Тайланд + Таджыкістан + Такелау + Усходні Тымор + Туркменістан + Туніс + Тонга + Турцыя + Трынідад і Табага + Тувалу + Тайвань + Танзанія + Украіна + Уганда + Злучаныя Штаты Амерыкі + Уругвай + Узбекістан + Ватыкан + Сент-Вінсент і Грэнадзіны + Венесуэла + Брытанскія Віргінскія астравы + Амерыканскія Віргінскія астравы + В'етнам + Вануату + Уоліс і Футуна + Самоа + Емен + Востраў Маёта + Паўднёва-Афрыканская Рэспубліка + Замбія + Зімбабвэ + Невядомы рэгіён + + + каляндар + параўнаньне тэксту + валюта + + + будысцкі каляндар + кітайскі каляндар + грэгарыянскі каляндар + іудэйскі каляндар + мусульманскі каляндар + мусульманскі свецкі каляндар + японскі каляндар + + + метрычная + ЗША + + + Мова: {0} + Пісьмо: {0} + Рэгіён: {0} + + + + [а б в г д {дж} {дз} е ё ж з і й к л м н о п р с т у ў ф х ц ч ш ы ь э ю я] + [{а\u0301} {е\u0301} {ё\u0301} {і\u0301} {о\u0301} {у\u0301} {ы\u0301} {э\u0301} {ю\u0301} {я\u0301}] + [А Б В Г Д Е Ж З І Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Ы Э Ю Я] + + + « + » + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d.M.yy + + + + + + d + E, d + G y + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d.M + E, d.M + LLL + d MMM + E, d MMM + G y + M.y + d.M.y + E, d.M.y + MMM y G + d MMM y G + E, d MMM y G + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d.M.y G + + + + + d.M.y GGGGG + + + + + + d + E, d + y G + LLL y G + d MMM y G + E, d MMM y G + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d.M + E, d.M + LLL + d MMM + E, d MMM + mm.ss + y G + y G + M.y G + d.M.y G + E, d.M.y G + LLL y G + d MMM y G + E, d MMM y G + LLLL y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h.mm-h.mm a + h.mm-h.mm a + + + HH.mm-HH.mm + HH.mm-HH.mm + + + h.mm-h.mm a v + h.mm-h.mm a v + + + HH.mm-HH.mm v + HH.mm-HH.mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + LLL-LLL + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y G + + + M.y - M.y G + M.y - M.y G + + + d.M.y - d.M.y G + d.M.y - d.M.y G + d.M.y - d.M.y G + + + E, d.M.y - E, d.M.y G + E, d.M.y - E, d.M.y G + E, d.M.y - E, d.M.y G + + + LLL-LLL y G + LLL y - LLL y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + LLLL-LLLL y G + LLLL y - LLLL y G + + + + + + + + + сту + лют + сак + кра + мая + чэр + ліп + жні + вер + кас + ліс + сне + + + с + л + с + к + м + ч + л + ж + в + к + л + с + + + студзеня + лютага + сакавіка + красавіка + мая + чэрвеня + ліпеня + жніўня + верасня + кастрычніка + лістапада + снежня + + + + + сту + лют + сак + кра + май + чэр + ліп + жні + вер + кас + ліс + сне + + + с + л + с + к + м + ч + л + ж + в + к + л + с + + + студзень + люты + сакавік + красавік + май + чэрвень + ліпень + жнівень + верасень + кастрычнік + лістапад + снежань + + + + + + + нд + пн + аў + ср + чц + пт + сб + + + нядзеля + панядзелак + аўторак + серада + чацвер + пятніца + субота + + + + + н + п + а + с + ч + п + с + + + + + + + 1-шы кв. + 2-гі кв. + 3-ці кв. + 4-ты кв. + + + 1-шы квартал + 2-гі квартал + 3-ці квартал + 4-ты квартал + + + + + + + да палудня + пасля палудня + + + + + раніцы + вечара + + + + + + да н.э. + н.э. + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d.M.y + + + + + d.M.yy + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + d + y G + LLL y G + d MMM y G + E, d MMM y G + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d.M + E, d.M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm.ss + y + M.y + d.M.y + E, d.M.y + LLL y + d MMM y + E, d MMM y + LLLL y + QQQ y + QQQQ y + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h.mm-h.mm a + h.mm-h.mm a + + + HH.mm-HH.mm + HH.mm-HH.mm + + + h.mm-h.mm a v + h.mm-h.mm a v + + + HH.mm-HH.mm v + HH.mm-HH.mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + LLL-LLL + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y + + + M.y - M.y + M.y - M.y + + + d.M.y - d.M.y + d.M.y - d.M.y + d.M.y - d.M.y + + + E, d.M.y - E, d.M.y + E, d.M.y - E, d.M.y + E, d.M.y - E, d.M.y + + + LLL-LLL y + LLL y - LLL y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + LLLL-LLLL y + LLLL y - LLLL y + + + + + + + + эра + + + год + + + месяц + + + тыдзень + + + дзень + пазаўчора + учора + сёння + заўтра + паслязаўтра + + + дзень тыдня + + + ДП/ПП + + + гадзіна + + + хвіліна + + + секунда + + + Zone + + + + +HH:mm;-HH:mm + GMT{0} + Час: {0} + {1} ({0}) + + Невядомы + + + Рыё Бранка + + + Кампа Грандэ + + + Сан-Паўлу + + + Ганалулу + + + Анкорыдж + + + Лос-Анджэлас + + + Фэнікс + + + Дэнвэр + + + Чыкага + + + Індыянапаліс + + + Нью-Ёрк + + + + Паўночнаамэрыканскі цэнтральны час + Паўночнаамэрыканскі цэнтральны стандартны час + Паўночнаамэрыканскі цэнтральны летні час + + + + + Паўночнаамэрыканскі усходні час + Паўночнаамэрыканскі усходні стандартны час + Паўночнаамэрыканскі усходні летні час + + + + + Паўночнаамэрыканскі горны час + Паўночнаамэрыканскі горны стандартны час + Паўночнаамэрыканскі горны летні час + + + + + Ціхаакіянскі час + Ціхаакіянскі стандартны час + Ціхаакіянскі летні час + + + + + Атлянтычны час + Атлянтычны стандартны час + Атлянтычны летні час + + + + + Цэнтральнаэўрапейскі час + Цэнтральнаэўрапейскі стандартны час + Цэнтральнаэўрапейскі летні час + + + + + Усходнеэўрапейскі час + Усходнеэўрапейскі стандартны час + Усходнеэўрапейскі летні час + + + + + Заходнеэўрапейскі час + Заходнеэўрапейскі стандартны час + Заходнеэўрапейскі летні час + + + + + Грынвічскі час + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + аўстралійскі даляр + + + бразільскі рэал + + + беларускі рубель + р. + + + кітайскі юань + + + эрытрэйская накфа + + + еўра + + + англійскі фунт + + + індыйская рупія + + + японская іена + ¥ + + + нарвэская крона + + + рускі рубель + рас. руб. + + + долар ЗША + $ + + + невядомая або недапушчальная валюта + + + + + + + {0} дзень + {0} дні + {0} дзён + {0} дня + + + {0} гадзіна + {0} гадзіны + {0} гадзін + {0} гадзіны + + + {0} хвіліна + {0} хвіліны + {0} хвілін + {0} хвіліны + + + {0} месяц + {0} месяца + {0} месяцаў + {0} месяца + + + {0} сэкунда + {0} сэкунды + {0} сэкунд + {0} сэкунды + + + {0} тыдзень + {0} тыдні + {0} тыдняў + {0} тыдня + + + {0} год + {0} гады + {0} гадоў + {0} году + + + + + + так:т + не:н + + + + diff --git a/library/Zend/Locale/Data/be_BY.xml b/library/Zend/Locale/Data/be_BY.xml new file mode 100755 index 000000000..bb2306f12 --- /dev/null +++ b/library/Zend/Locale/Data/be_BY.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bem.xml b/library/Zend/Locale/Data/bem.xml new file mode 100755 index 000000000..c8feab5df --- /dev/null +++ b/library/Zend/Locale/Data/bem.xml @@ -0,0 +1,337 @@ + + + + + + + + + + + + Ichi Akan + Ichi Amhari + Ichi Arab + Ichi Belarus + Ichibemba + Ichi Bulgariani + Ichi Bengali + Ichi Cheki + Ichi Jemani + Ichi Griki + Ichi Sungu + Ichi Spanishi + Ichi Pesia + Ichi Frenchi + Ichi Hausa + Ichi Hindu + Ichi Hangarian + Ichi Indonesiani + Ichi Ibo + Ichi Italiani + Ichi Japanisi + Ichi Javanisi + Ichi Khmer + Ichi Koriani + Ichi Maleshani + Ichi Burma + Ichi Nepali + Ichi Dachi + Ichi Punjabi + Ichi Polishi + Ichi Potogisi + Ichi Romaniani + Ichi Rusiani + Ichi Rwanda + Ichi Somalia + Ichi Swideni + Ichi Tamil + Ichi Thai + Ichi Takishi + Ichi Ukraniani + Ichi Urudu + Ichi Vietinamu + Ichi Yoruba + Ichi Chainisi + Ichi Zulu + + + Zambia + + + + [a b c e f g i j k l m n o p s {sh} t u w y] + [d h q r v x z] + [A B C E F G I J K L M N O P S {SH} T U W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mac + Epr + Mei + Jun + Jul + Oga + Sep + Okt + Nov + Dis + + + Januari + Februari + Machi + Epreo + Mei + Juni + Julai + Ogasti + Septemba + Oktoba + Novemba + Disemba + + + + + J + F + M + E + M + J + J + O + S + O + N + D + + + + + + + Pa Mulungu + Palichimo + Palichibuli + Palichitatu + Palichine + Palichisano + Pachibelushi + + + + + + + uluchelo + akasuba + + + + + + Before Yesu + After Yesu + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Inkulo + + + Umwaka + + + Umweshi + + + Umulungu + + + Ubushiku + Lelo + + + Akasuba + + + Insa + + + Mineti + + + Sekondi + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + K + + + + + + Ee:E + Awe:A + + + + diff --git a/library/Zend/Locale/Data/bem_ZM.xml b/library/Zend/Locale/Data/bem_ZM.xml new file mode 100755 index 000000000..c27744350 --- /dev/null +++ b/library/Zend/Locale/Data/bem_ZM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bez.xml b/library/Zend/Locale/Data/bez.xml new file mode 100755 index 000000000..5555b5ff0 --- /dev/null +++ b/library/Zend/Locale/Data/bez.xml @@ -0,0 +1,765 @@ + + + + + + + + + + + + Hiakan + Hiamhari + Hiharabu + Hibelarusi + Hibena + Hibulgaria + Hibangla + Hicheki + Hijerumani + Higiriki + Hiingereza + Hihispania + Hiajemi + Hifaransa + Hihausa + Hihindi + Hihungari + Hiindonesia + Hiibo + Hiitaliano + Hijapani + Hijava + Hikambodia + Hikorea + Himalesia + Hiburma + Hinepali + Hiholanzi + Hipunjabi + Hipolandi + Hileno + Hilomania + Hilusi + Hinyarwanda + Hisomali + Hiswidi + Hitamil + Hitailand + Hituluki + Hiukrania + Hiurdu + Hivietinamu + Hiyoruba + Hichina + Hizulu + + + Huandola + Hufalme dza Hihalabu + Huafuganistani + Huantigua na Hubarubuda + Huanguila + Hualbania + Huamenia + Huantili dza Huuholanzi + Huangola + Huajendina + Husamoa ya Humalekani + Huastlia + Huaustlalia + Hualuba + Huazabajani + Hubosinia na Huhezegovina + Hubabadosi + Hubangaladeshi + Huubelgiji + Hubukinafaso + Hubulgaria + Hubahaleni + Huburundi + Hubenini + Hubelmuda + Hubrunei + Hubolivia + Hublazili + Hubahama + Hubutani + Hubotiswana + Hubelalusi + Hubelize + Hukanada + Ijamhuri ya Hidemokrasi ya Hukongo + Ijamhuri ya Afrika ya Pagati + Hukongo + Huuswisi + Hukodivaa + Ifisima fya Kook + Huchile + Hukameruni + Huchina + Hukolombia + Hukostarika + Hukuba + Hukepuvede + Hukuprosi + Ijamhuri ya Cheki + Huujerumani + Hujibuti + Hudenmaki + Hudominika + Ijamhuri ya Hudominika + Hualjelia + Huekwado + Huestonia + Humisri + Hueritrea + Huhispania + Huuhabeshi + Huufini + Hufiji + Ifisima fya Falkland + Humikronesia + Huufaransa + Hugaboni + Huuingereza + Hugrenada + Hujojia + Hugwiyana ya Huufaransa + Hughana + Hujiblalta + Hujinlandi + Hugambia + Hujine + Hugwadelupe + Huginekweta + Huugiliki + Hugwatemala + Hugwam + Huginebisau + Huguyana + Huhondulasi + Hukorasia + Huhaiti + Huhungalia + Huindonesia + Huayalandi + Huislaheli + Huindia + Ulubali lwa Hubahari ya Hindi lwa Huingereza + Huilaki + Huuajemi + Huaislandi + Huitalia + Hujamaika + Huyolodani + Hujapani + Hukenya + Hukiligizistani + Hukambodia + Hukilibati + Hukomoro + Husantakitzi na Hunevis + Hukolea Kaskazini + Hukolea Kusini + Hukuwaiti + Ifisima fya Kayman + Hukazakistani + Hulaosi + Hulebanoni + Husantalusia + Hulishenteni + Husirilanka + Hulibelia + Hulesoto + Hulitwania + Hulasembagi + Hulativia + Hulibiya + Humoloko + Humonako + Humoldova + Hubukini + Ifisima fya Marshal + Humasedonia + Humali + Humyama + Humongolia + Ifisima fya Mariana fya Hukaskazini + Humartiniki + Humolitania + Humontserrati + Humalta + Humolisi + Humodivu + Humalawi + Humeksiko + Humalesia + Humusumbiji + Hunamibia + Hunyukaledonia + Hunijeli + Ihisima sha Norfok + Hunijelia + Hunikaragwa + Huuholanzi + Hunolwe + Hunepali + Hunauru + Huniue + Hunyuzilandi + Huomani + Hupanama + Hupelu + Hupolinesia ya Huufaransa + Hupapua + Hufilipino + Hupakistani + Hupolandi + Husantapieri na Humikeloni + Hupitkaini + Hupwetoriko + Ulubali lwa Magharibi nu Gaza wa Hupalestina + Huuleno + Hupalau + Hupalagwai + Hukatali + Huliyunioni + Hulomania + Huulusi + Hulwanda + Husaudi + Ifisima fya Solomon + Hushelisheli + Husudani + Huuswidi + Husingapoo + Husantahelena + Huslovenia + Huslovakia + Husiela Lioni + Husamalino + Husenegali + Husomalia + Husurinamu + Husaotome na Huprinsipe + Huelsavado + Husilia + Huuswazi + Ifisima fya Turki na Kaiko + Huchadi + Hutogo + Hutailandi + Hutajikistani + Hutokelau + Hutimori ya Mashariki + Huuturukimenistani + Hutunisia + Hutonga + Huuturuki + Hutrinad na Hutobago + Hutuvalu + Hutaiwani + Hutanzania + Huukraini + Huuganda + Humalekani + Huulugwai + Huuzibekistani + Huvatikani + Husantavisenti na Hugrenadini + Huvenezuela + Ifisima fya Virgin fya Huingereza + Ifisima fya Virgin fya Humelekani + Huvietinamu + Huvanuatu + Huwalis na Hufutuna + Husamoa + Huyemeni + Humayotte + Huafrika iya Hukusini + Huzambia + Huzimbabwe + + + + [a b c d e f g h i j k l m n o p q r s t u v w y z] + [x] + [A B C D E F G H I J K L M N O P Q R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Hut + Vil + Dat + Tai + Han + Sit + Sab + Nan + Tis + Kum + Kmj + Kmb + + + pa mwedzi gwa hutala + pa mwedzi gwa wuvili + pa mwedzi gwa wudatu + pa mwedzi gwa wutai + pa mwedzi gwa wuhanu + pa mwedzi gwa sita + pa mwedzi gwa saba + pa mwedzi gwa nane + pa mwedzi gwa tisa + pa mwedzi gwa kumi + pa mwedzi gwa kumi na moja + pa mwedzi gwa kumi na mbili + + + + + H + V + D + T + H + S + S + N + T + K + K + K + + + + + + + Mul + Vil + Hiv + Hid + Hit + Hih + Lem + + + pa mulungu + pa shahuviluha + pa hivili + pa hidatu + pa hitayi + pa hihanu + pa shahulembela + + + + + M + J + H + H + H + W + J + + + + + + + L1 + L2 + L3 + L4 + + + Lobo 1 + Lobo 2 + Lobo 3 + Lobo 4 + + + + + + + pamilau + pamunyi + + + + + + Kabla ya Mtwaa + Baada ya Mtwaa + + + KM + BM + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Amajira + + + Mwaha + + + Mwedzi + + + Mlungu gumamfu + + + Sihu + Igolo + Neng'u ni + Hilawu + + + Sihudza kasi + + + Lwamelau + + + Saa + + + Dakika + + + Sekunde + + + Amajira ga saa + + + + + + + + #,##0.00¤ + + + + + + Lupila lwa Hufalme dza Huhihalabu + + + Lupila lwa Huangola + + + Lupila lwa Huaustlalia + + + Lupila lwa Hubahareni + + + Lupila lwa Huburundi + + + Lupila lwa Hubotswana + + + Lupila lwa Hukanada + + + Lupila lwa Hukongo + + + Lupila lwa Huuswisi + + + Lupila lwa Huchina + + + Lupila lwa Hukepuvede + + + Lupila lwa Hujibuti + + + Lupila lwa Hualjelia + + + Lupila lwa Humisri + + + Lupila lwa Hueritrea + + + Lupila lwa Huuhabeshi + + + Lupila lwa Yulo + + + Lupila lwa Huuingereza + + + Lupila lwa Hughana + + + Lupila lwa Hugambia + + + Lupila lwa Hujine + + + Lupila lwa Huindia + + + Lupila lwa Hijapani + + + Shilingi ya Hukenya + + + Lupila lwa Hukomoro + + + Lupila lwa Hulibelia + + + Lupila lwa Hulesoto + + + Lupila lwa Hulibya + + + Lupila lwa Humoloko + + + Lupila lwa Hubukini + + + Lupila lwa Humolitania + + + Lupila lwa Humolisi + + + Lupila lwa Humalawi + + + Lupila lwa Humsumbiji + + + Lupila lwa Hunamibia + + + Lupila lwa Hunijelia + + + Lupila lwa Hurwanda + + + Lupila lwa Husaudi + + + Lupila lwa Hushelisheli + + + Lupila lwa Husudani + + + Lupila lwa Husantahelena + + + Lupila lwa Lioni + + + Lupila lwa Husomalia + + + Lupila lwa Husaotome na Huprinisipe + + + Lupila lwa Lilangeni + + + Lupila lwa Hutunisia + + + Shilingi ya Hutanzania + TSh + + + Shilingi ya Huuganda + + + Lupila lwa Humalekani + + + Lupila lwa CFA BEAC + + + Lupila lwa CFA BCEAO + + + Lupila lwa Huafriaka ya Hukusini + + + Lupila lwa Huzambia (1968–2012) + + + Lupila lwa Huzambia + + + Lupila lwa Huzimbabwe + + + + + + Eeh:E + Sio ewo:S + + + + diff --git a/library/Zend/Locale/Data/bez_TZ.xml b/library/Zend/Locale/Data/bez_TZ.xml new file mode 100755 index 000000000..b37ec005b --- /dev/null +++ b/library/Zend/Locale/Data/bez_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bg.xml b/library/Zend/Locale/Data/bg.xml new file mode 100755 index 000000000..9b5b854f6 --- /dev/null +++ b/library/Zend/Locale/Data/bg.xml @@ -0,0 +1,6065 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + афар + абхазки + ачински + аколи + адангме + адиге + авестски + африканс + африхили + айну + акан + акадски + алеутски + южноалтайски + амхарски + арагонски + староанглийски + ангика + арабски + съвременен стандартен арабски + арамейски + мапуче + арапахо + аравак + асамски + астурски + аварски + авади + аймара + азербайджански + азерски + башкирски + балучи + балинейски + баса + беларуски + бея + бемба + български + божпури + бислама + биколски + бини + сиксика + бамбара + бенгалски + тибетски + бретонски + брадж + босненски + бурятски + бугински + биленски + каталонски + каддо + карибски + атсам + чеченски + себуано + чаморо + чибча + чагатай + чуук + марийски + жаргон чинуук + чокто + чиипувски + чероки + чейенски + кюрдски (сорани) + корсикански + коптски + крии + кримскотатарски + чешки + кашубски + църковно славянски + чувашки + уелски + датски + дакотски + даргва + немски + австрийски немски + швейцарски горногермански + делауер + слейви + догриб + динка + догри + долносербски + дуала + средновековен холандски + дивехи + диула + дзонха + еуе + ефик + египетски + екажук + гръцки + еламитски + английски + австралийски английски + канадски английски + британски английски + английски (GB) + американски английски + английски (US) + средновековен английски + есперанто + испански + мексикански испански + естонски + баски + евондо + персийски + фанг + фанти + фула + фински + филипински + фиджийски + фарьорски + фон + френски + канадски френски + швейцарски френски + средновековен френски + старофренски + северен фризски + източен фризски + фриулиански + фризийски + ирландски + га + гайо + гбая + шотландски галски + гииз + гилбертски + галисийски + средновековен немски + гуарани + старовисоконемски + гонди + горонтало + готически + гребо + древногръцки + швейцарски немски + гуджарати + манкски + гвичин + хауза + хайда + хавайски + иврит + хинди + хилигайнон + хитски + хмонг + хири моту + хърватски + горносербски + хаитянски + унгарски + хупа + арменски + хереро + интерлингва + ибан + индонезийски + оксидентал + игбо + сечуански + инупиак + илоко + ингушетски + идо + исландски + италиански + инуктитут + японски + лоджбан + еврейско-персийски + еврейско-арабски + явански + грузински + каракалпашки + кабилски + качински + жжи + камба + кави + кабардиан + туап + коро + конгоански + кхаси + котски + кикуйу + кваняма + казахски + гренландски ескимоски + кхмерски + кимбунду + каннада + корейски + конкани + косраен + кпеле + канури + карачай-балкарски + карелски + курук + кашмирски + кюрдски + кумикски + кутенай + Коми + корнуолски келтски + киргизки + латински + ладино + лахнда + ламба + люксембургски + лезгински + ганда + лимбургски + лингала + лаоски + монго + лози + литовски + луба катанга + луба-лулуа + луисеньо + лунда + луо + лушаи + латвийски + мадурски + магахи + майтхили + макасар + мандинго + масайски + мокша + мандар + менде + морисиен + малгашки + средновековен ирландски + маршалезе + маорски + микмак + минангбау + македонски + малаялам + монголски + манчжурски + манипури + мохавк + моси + марати + малайски + малтийски + многоезични + крик + мирандийски + марвари + бирмански + ерзиа + науру + неаполитански + норвежки букмол + северен ндебеле + долносаксонски + непалски + неварски + ндонга + ниас + ниуеан + нидерландски + фламандски + норвежки нюнорск + норвежки + ногаи + старонорвежски + н’ко + южен ндебеле + северен сото + навахо + класически невари + чинянджа + ниамвези + нианколе + нуоро + нзима + окситански + оджибва + оромо + ория + осетски + оседжи + отомански турски + пенджабски + пангасинан + пехлевийски + пампанга + папиаменту + палауан + староперсийски + финикийски + пали + полски + похнпеиан + провансалски + пущу + пущунски + португалски + кечуа + раджастански + рапа нуи + рапотонган + реторомански + рунди + румънски + молдовски + цигански език + роот + руски + арумънски + киняруанда + санкскритски + сандве + якутски + самаритански арамейски + сасак + сантали + сардински + сицилиански + шотландски + синдхи + северен сами + селкуп + санго + староирландски + сърбохърватски + шан + синхалски + сидамо + словашки + словенски + самоански + южносаамски + луле-саамски + инари-саамски + сколт-саамски + шона + сонинке + сомалийски + согдийски + албански + сръбски + сранан тонго + серер + суази + сесуто + сундански + сукума + сусу + шумерски + шведски + суахили + коморски + класически сирийски + сирийски + тамилски + телугу + темне + терено + тетум + таджикски + тайски + тигриня + тигре + тив + туркменски + токелайски + тагалог + клингон + тлингит + тамашек + тсвана + тонга + нианса тонга + ток писин + турски + тсонга + цимшиански + татарски + тумбука + тувалуански + туи + таитянски + тувински + удмуртски + уйгурски + угаритски + украински + умбунду + неопределен + урду + узбекски + ваи + венда + виетнамски + волапюк + вотик + валонски + валамо + варай + уашо + волоф + калмик + ксоса + яо + япезе + идиш + йоруба + кантонски + зуанг + запотек + блис символи + зенага + стандартен марокански тамазигт + китайски + опростен китайски + традиционен китайски + зулуски + зуни + без лингвистично съдържание + заза + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Земята + Африка + Северноамерикански континент + Южна Америка + Океания + Западна Афирка + Централна Америка + Източна Африка + Северна Африка + Централна Африка + Южноафрикански регион + Америка + Северна Америка + Карибски регион + Източна Азия + Южна Азия + Югоизточна Азия + Южна Европа + Австралазия + Меланезия + Микронезия + Полинезия + Азия + Централна Азия + Западна Азия + Европа + Източна Европа + Северна Европа + Западна Европа + Латинска Америка + остров Възнесение + Андора + Обединени арабски емирства + Афганистан + Антигуа и Барбуда + Ангуила + Албания + Армения + Холандски Антили + Ангола + Антарктика + Аржентина + Американска Самоа + Австрия + Австралия + Аруба + Оландски острови + Азербайджан + Босна и Херцеговина + Барбадос + Бангладеш + Белгия + Буркина Фасо + България + Бахрейн + Бурунди + Бенин + Сен Бартелеми + Бермуда + Бруней Дарусалам + Боливия + Карибска Нидерландия + Бразилия + Бахами + Бутан + остров Буве + Ботсвана + Беларус + Белиз + Канада + Кокосови острови (острови Кийлинг) + Демократична република Конго + Конго (ДРК) + Централноафриканска Република + Конго + Конго (Република) + Швейцария + Кот д'Ивоар + острови Кук + Чили + Камерун + Китай + Колумбия + остров Клипертон + Коста Рика + Куба + Кабо Верде + Кюрасао + Остров Рождество + Кипър + Чехия + Германия + Диего Гарсия + Джибути + Дания + Доминика + Доминиканска република + Алжир + Сеута и Мелия + Еквадор + Естония + Египет + Западна Сахара + Еритрея + Испания + Етиопия + Европейски съюз + Финландия + Фиджи + Фолклендски острови + Фолклендски острови (Малвински острови) + Федерални щати на Микронезия + Фарьорски острови + Франция + Габон + Великобритания + Великобритания + Гренада + Грузия + Френска Гвиана + о. Гърнси + Гана + Гибралтар + Гренландия + Гамбия + Гвинея + Гваделупа + Екваториална Гвинея + Гърция + Южна Джорджия и Южни Сандвичеви острови + Гватемала + Гуам + Гвинея-Бисау + Гаяна + Хонконг САР на Китай + Хонконг + остров Хърд и острови Макдоналд + Хондурас + Хърватия + Хаити + Унгария + Канарски острови + Индонезия + Ирландия + Израел + Остров Ман + Индия + Британска територия в Индийския океан + Ирак + Иран + Исландия + Италия + Джърси + Ямайка + Йордания + Япония + Кения + Киргизстан + Камбоджа + Кирибати + Коморски острови + Сейнт Китс и Невис + Северна Корея + Южна Корея + Кувейт + Кайманови острови + Казахстан + Лаос + Ливан + Сейнт Лусия + Лихтенщайн + Шри Ланка + Либерия + Лесото + Литва + Люксембург + Латвия + Либия + Мароко + Монако + Молдова + Черна гора + Сен Мартен + Мадагаскар + Маршалови острови + Македония + Македония (БЮРМ) + Мали + Мианмар (Бирма) + Монголия + Макао САР на Китай + Макао + Северни Мариански острови + Мартиника + Мавритания + Монсерат + Малта + Мавриций + Малдиви + Малави + Мексико + Малайзия + Мозамбик + Намибия + Нова Каледония + Нигер + остров Норфолк + Нигерия + Никарагуа + Нидерландия + Норвегия + Непал + Науру + Ниуе + Нова Зеландия + Оман + Панама + Перу + Френска Полинезия + Папуа Нова Гвинея + Филипини + Пакистан + Полша + Сен Пиер и Микелон + Острови Питкерн + Пуерто Рико + Палестински територии + Палестина + Португалия + Палау + Парагвай + Катар + отдалечени острови на Океания + Реюнион + Румъния + Сърбия + Русия + Руанда + Саудитска Арабия + Соломонови острови + Сейшели + Судан + Швеция + Сингапур + Света Елена + Словения + Свалбард и Ян Майен + Словакия + Сиера Леоне + Сан Марино + Сенегал + Сомалия + Суринам + Южен Судан + Сао Томе и Принсипи + Салвадор + Синт Мартен + Сирия + Свазиленд + Тристан да Куня + Острови Търкс и Кайкос + Чад + Френски южни територии + Того + Тайланд + Таджикистан + Токелау + Източен Тимор + Туркменистан + Тунис + Тонга + Турция + Тринидад и Тобаго + Тувалу + Тайван + Танзания + Украйна + Уганда + Отдалечени острови на САЩ + САЩ + САЩ + Уругвай + Узбекистан + Ватикан + Сейнт Винсънт и Гренадини + Венецуела + Британски Вирджински острови + Вирджински острови, САЩ + Виетнам + Вануату + Уолис и Футуна + Самоа + Косово + Йемен + Майот + Южна Африка + Замбия + Зимбабве + непознат регион + + + Традиционен немски правопис + Стандартен резиански правопис + Немски правопис от 1996 + Късен средновековен френски до 1606 + Ранен съвременен френски + Академичен + Източно арменски + Западно арменски + Унифицирана тюркска азбука + Диалект Сан Джорджио/Била + Бунтлинг + Международна фонетична азбука + Уралска фонетична азбука + Общ правопис + Диалект Липовац + Монотонично + Диалект Натисоне + Диалект Нджива + Диалект Осеако/Осояне + Пинин романизация + Политонично + Компютърен + Променен правопис + Резиански + Сахо + Шотландски английски + Ливърпулски диалект + Диалект Столвиза + Тарашкевица + Валенсиански + Уейд-Джайлс романизация + + + календар + Пренебрегване на сортирането по символи + Сортиране по диакритични знаци в обратен ред + Подреждане по горен/долен регистър + Сортиране с различаване на регистъра на буквите + Сортиране на кана + ред на сортиране + Нормализирано сортиране + Сортиране на цифрите + Сила на сортиране + валута + цифри + Часова зона + Вариант на локала + Сортиране като символи + Собствена употреба + + + арабско-индийски цифри + разширени арабско-индийски цифри + арменски цифри + арменски цифри в долен регистър + бенгалски цифри + Традиционен китайски (Big5) + Будистки календар + Китайски календар + Коптски календар + цифри в деванагари + Речников ред на сортиране + стандартен ред на сортиране в уникод + етиопски цифри + Етиопски календар + Етиопски календар Амит Алем + Финансови цифри + цифри с пълна ширина + Опростен китайски (GB2312) + грузински цифри + Григориански календар + гръцки цифри + гръцки цифри в долен регистър + цифри в гуджарати + цифри в гурмукхи + китайски десетични цифри + цифри в опростения китайски + финансови цифри в опростения китайски + цифри в традиционния китайски + финансови цифри в традиционния китайски + цифри в иврит + Еврейски календар + Сортиране на всички + Индийски граждански календар + Ислямски календар + Ислямски цивилен календар + Японски календар + японски цифри + японски финансови цифри + кхмерски цифри + цифри в каннада + лаоски цифри + западни цифри + Сортиране първо по долен регистър + цифри в малаялам + Монголски цифри + мианмарски цифри + Местни цифри + Нормално сортиране по диакритични знаци + Сортиране с нормален ред за регистъра + Сортиране без различаване на регистъра на буквите + Сортиране на кана отделно + Сортиране без нормализиране + Сортиране на цифрите индивидуално + Сортиране по символи + цифри в ория + Персийски календар + Азбучен ред + Фонетичен ред на сортиране + Сортиране Пинин + Сортиране само по основни букви + Сортиране по диакритични знаци/регистър/ширина/кана + Следреформен ред на сортиране + Календар на Република Китай + римски цифри + римски цифри в долен регистър + търсене с общо предназначение + Търсене по първоначални съгласни в хангул + Сортиране по диакритични знаци + Сортиране с пренебрегване на символи + стандартен ред на сортиране + Сортиране по щрих + традиционни тамилски цифри + тамилски цифри + цифри в телугу + Сортиране по диакритични знаци/регистър/ширина + тайландски цифри + тибетски цифри + Традиционно + Традиционни цифри + Ред на сортиране по ключове и черти + Сортиране първо по горен регистър + Цифри във ваи + Обратно сортиране по диакритични знаци + Сортиране с различаване на регистъра на буквите + Сортиране на кана по различен начин + Нормализирано сортиране в Уникод + Сортиране на цифрите по числена стойност + + + АКГН (BGN) + Цифрови + Интонация + ГЕСГИООН (UNGEGN) + Диакритични знаци + С пълна ширина + С половин ширина + Джамо + Пинин + Типографски + + + метрична + имперска + американска + + + Език: {0} + Писменост: {0} + Регион: {0} + + + + [а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я] + [{а\u0300} ѐ ё ѝ {о\u0300} {у\u0300} {ъ\u0300} ы ѣ э {ю\u0300} {я\u0300} ѫ] + [А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ ( ) \[ \] § * / ″ №] + {0}… + …{0} + {0}… {1} + {0}… + …{0} + {0}… {1} + ? + + + + + + + + + + + + + + EEEE, d MMMM y 'г'. G + + + + + d MMMM y 'г'. G + + + + + d.MM.y 'г'. G + + + + + d.MM.yy G + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + y 'г'. G + MM.y 'г'. G + d.MM.y 'г'. G + E, d.MM.y 'г'. G + MMMM y 'г'. G + d MMMM y 'г'. G + E, d MMMM y 'г'. G + h + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + M + d.MM + E, d.MM + MM + d.MM + E, d.MM + LLLL + d MMMM + E, d MMMM + mm:ss + y 'г'. G + y 'г'. G + M.y 'г'. G + d.MM.y 'г'. G + E, d.MM.y 'г'. G + MM.y 'г'. G + d.MM.y 'г'. G + E, d.MM.y 'г'. G + MMMM y 'г'. G + d MMMM y 'г'. G + E, d MMMM y 'г'. G + QQQ y 'г'. G + QQQQ y 'г'. G + + + {0} – {1} + + d – d + + + h a – h a + h-h a + + + HH-HH + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a – h a v + h-h a v + + + HH-HH v + + + M – M + + + d.MM – d.MM + d.MM – d.MM + + + E, d.MM – E, d.MM + E, d.MM – E, d.MM + + + MM – MM + + + d.MM – d.MM + d.MM – d.MM + + + E, d.MM – E, d.MM + E, d.MM – E, d.MM + + + LLLL – LLLL + + + d – d MMMM + d MMMM – d MMMM + + + E, d MMMM – E, d MMMM + E, d MMMM – E, d MMMM + + + y – y 'г'.G + + + MM – MM.y 'г'. G + MM 'г'. – MM.y 'г'. G + + + d.MM – d.MM.y 'г'. G + d.MM – d.MM.y 'г'. G + d.MM.y 'г'. – d.MM.y 'г'. G + + + E, d.MM – E, d.MM.y 'г'. G + E, d.MM – E, d.MM.y 'г'. G + E, d.MM.y 'г'. – E, d.MM.y 'г'. G + + + MM – MM.y 'г'. G + MM 'г'. – MM.y 'г'. G + + + d.MM – d.MM.y 'г'. G + d.MM – d.MM.y 'г'. G + d.MM.y 'г'. – d.MM.y 'г'. G + + + E, d.MM – E, d.MM.y 'г'. G + E, d.MM – E, d.MM.y 'г'. G + E, d.MM.y 'г'. – E, d.MM.y 'г'. G + + + MMMM – MMMM y 'г'. G + MMMM y 'г'. – MMMM y 'г'. G + + + d – d MMMM y 'г'. G + d MMMM – d MMMM y 'г'. G + d MMMM y 'г'. – d MMMM y 'г'. G + + + E, d MMMM – E, d MMMM y 'г'. G + E, d MMMM – E, d MMMM y 'г'. G + E, d MMMM y 'г'. – E, d MMMM y 'г'. G + + + + + + + + + ян. + февр. + март + апр. + май + юни + юли + авг. + септ. + окт. + ноем. + дек. + + + я + ф + м + а + м + ю + ю + а + с + о + н + д + + + януари + февруари + март + април + май + юни + юли + август + септември + октомври + ноември + декември + + + + + ян. + февр. + март + апр. + май + юни + юли + авг. + септ. + окт. + ноем. + дек. + + + я + ф + м + а + м + ю + ю + а + с + о + н + д + + + януари + февруари + март + април + май + юни + юли + август + септември + октомври + ноември + декември + + + + + + + нд + пн + вт + ср + чт + пт + сб + + + н + п + в + с + ч + п + с + + + нд + пн + вт + ср + чт + пт + сб + + + неделя + понеделник + вторник + сряда + четвъртък + петък + събота + + + + + нд + пн + вт + ср + чт + пт + сб + + + н + п + в + с + ч + п + с + + + нд + пн + вт + ср + чт + пт + сб + + + неделя + понеделник + вторник + сряда + четвъртък + петък + събота + + + + + + + 1 трим. + 2 трим. + 3 трим. + 4 трим. + + + 1 + 2 + 3 + 4 + + + 1-во тримесечие + 2-ро тримесечие + 3-то тримесечие + 4-то тримесечие + + + + + 1 трим. + 2 трим. + 3 трим. + 4 трим. + + + 1 + 2 + 3 + 4 + + + 1-во тримесечие + 2-ро тримесечие + 3-то тримесечие + 4-то тримесечие + + + + + + + пр.об. + сл.об. + + + + + + пр.Хр. + сл.Хр. + + + пр.Хр. + пр.н.е. + сл.Хр. + от н.е. + + + сл.н.е. + + + + + + EEEE, d MMMM y 'г'. + + + + + d MMMM y 'г'. + + + + + d.MM.y 'г'. + + + + + d.MM.yy + + + + + + + H:mm:ss zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + E, h:mm a + E HH:mm + E h:mm:ss a + E, H:mm:ss + y 'г'. G + MM.y 'г'. G + d.MM.y 'г'. G + E, d.MM.y 'г'. G + MMMM y 'г'. G + d MMMM y 'г'. G + E, d MMMM y 'г'. G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d.MM + E, d.MM + MM + d.MM + E, d.MM + LLLL + d MMMM + d MMMM + E, d MMMM + m:ss + y 'г'. + M.y 'г'. + d.MM.y 'г'. + E, d.MM.y 'г'. + MM.y 'г'. + d.MM.y 'г'. + E, d.MM.y 'г'. + MMMM y 'г'. + d MMMM y 'г'. + E, d MMMM y 'г'. + QQQ y 'г'. + QQQQ y 'г'. + + + {0} {1} + + + {0} – {1} + + d – d + + + h a – h a + h-h a + + + H – H + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm – H:mm + H:mm – H:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm – H:mm v + H:mm – H:mm v + + + h a – h a v + h-h a v + + + H – H v + + + M – M + + + d.MM – d.MM + d.MM – d.MM + + + E, d.MM – E, d.MM + E, d.MM – E, d.MM + + + MM – MM + + + d.MM – d.MM + d.MM – d.MM + + + E, d.MM – E, d.MM + E, d.MM – E, d.MM + + + LLLL – LLLL + + + d – d MMMM + d MMMM – d MMMM + + + E, d MMMM – E, d MMMM + E, d MMMM – E, d MMMM + + + y – y 'г'. + + + MM.y 'г'. – MM.y 'г'. + MM.y 'г'. – MM.y 'г'. + + + d.MM – d.MM.y 'г'. + d.MM – d.MM.y 'г'. + d.MM.y 'г'. – d.MM.y 'г'. + + + E, d.MM – E, d.MM.y 'г'. + E, d.MM – E, d.MM.y 'г'. + E, d.MM.y 'г'. – E, d.MM.y 'г'. + + + MM.y 'г'. – MM.y 'г'. + MM.y 'г'. – MM.y 'г'. + + + d.MM – d.MM.y 'г'. + d.MM – d.MM.y 'г'. + d.MM.y 'г'. – d.MM.y 'г'. + + + E, d.MM – E, d.MM.y 'г'. + E, d.MM – E, d.MM.y 'г'. + E, d.MM.y 'г'. – E, d.MM.y 'г'. + + + MMMM – MMMM y 'г'. + MMMM y 'г'. – MMMM y 'г'. + + + d – d MMMM y 'г'. + d MMMM – d MMMM y 'г'. + d MMMM y 'г'. – d MMMM y 'г'. + + + E, d MMMM – E, d MMMM y 'г'. + E, d MMMM – E, d MMMM y 'г'. + E, d MMMM y 'г'. – E, d MMMM y 'г'. + + + + + + + + + тишри + хешван + кислев + тебет + шебат + адар I + адар + адар II + нисан + иар + сиван + тамуз + ав + елул + + + + + + + + + чайтра + вайсакха + джаинтха + асадха + сравана + бхада + азвина + картика + аграхайана + пауза + магха + пхалгуна + + + + + + + + + мухарам + сафар + раби-1 + раби-2 + джумада-1 + джумада-2 + раджаб + шабан + рамазан + Шавал + Дхул-Каада + Дхул-хиджа + + + + + + + + ера + + + година + миналата година + тази година + следващата година + + след {0} година + след {0} години + + + преди {0} година + преди {0} години + + + + месец + миналият месец + този месец + следващият месец + + след {0} месец + след {0} месеца + + + преди {0} месец + преди {0} месеца + + + + седмица + миналата седмица + тази седмица + следващата седмица + + след {0} седмица + след {0} седмици + + + преди {0} седмица + преди {0} седмици + + + + ден + онзи ден + вчера + днес + утре + вдругиден + + след {0} дни + след {0} дни + + + преди {0} ден + преди {0} дни + + + + ден от седмицата + + + миналата неделя + тази неделя + следващата неделя + + + миналият понеделник + този понеделник + следващият понеделник + + + миналият вторник + този вторник + следващият вторник + + + миналата сряда + тази сряда + следващата сряда + + + миналият четвъртък + този четвъртък + следващият четвъртък + + + миналият петък + този петък + следващият петък + + + миналата събота + тази събота + следващата събота + + + пр.об./сл.об. + + + час + + след {0} час + след {0} часа + + + преди {0} час + преди {0} часа + + + + минута + + след {0} минута + след {0} минути + + + преди {0} минута + преди {0} минути + + + + секунда + сега + + след {0} секунда + след {0} секунди + + + преди {0} секунда + преди {0} секунди + + + + часова зона + + + + +HH:mm;-HH:mm + Гриинуич{0} + Гриинуич + {0} + {0} – лятно часово време + {0} – стандартно време + {1} ({0}) + + неизвестен + + + Андора + + + Дубай + + + Кабул + + + Антигуа + + + Ангуила + + + Тирана + + + Ереван + + + Луанда + + + Ротера + + + Палмър + + + Шова + + + Моусън + + + Дейвис + + + Восток + + + Кейси + + + Дюмон Дюрвил + + + Макмърдо + + + Рио Галегос + + + Мендоса + + + Сан Хуан + + + Ушуая + + + Ла Риоха + + + Сан Луис + + + Катамарка + + + Салта + + + Хухуй + + + Тукуман + + + Кордоба + + + Буенос Айрес + + + Паго Паго + + + Виена + + + Пърт + + + Юкла + + + Даруин + + + Аделаида + + + Броукън Хил + + + Кери + + + Мелбърн + + + Хобарт + + + Линдеман + + + Сидни + + + Бризбейн + + + Маккуори + + + Лорд Хау + + + Аруба + + + Мариехамн + + + Баку + + + Сараево + + + Барбадос + + + Дака + + + Брюксел + + + Уагадугу + + + София + + + Бахрейн + + + Бужумбура + + + Порто Ново + + + Сен Бартелеми + + + Бермудски острови + + + Бруней + + + Ла Пас + + + Кралендейк + + + Ейрунепе + + + Рио Бранко + + + Порто Вельо + + + Боа Виста + + + Манаус + + + Чуяба + + + Сантарем + + + Кампо Гранде + + + Белем + + + Арагуайна + + + Сао Пауло + + + Бахия + + + Форталеза + + + Масейо + + + Ресифе + + + Нороня + + + Насау + + + Тхимпху + + + Габороне + + + Минск + + + Белиз + + + Доусън + + + Уайтхорс + + + Инувик + + + Ванкувър + + + Доусън Крийк + + + Крестън + + + Йелоунайф + + + Едмънтън + + + Суифт Кърент + + + Кеймбридж Бей + + + Риджайна + + + Уинипег + + + Резолют + + + Рейни Ривър + + + Ранкин Инлет + + + Корал Харбър + + + Тъндър Бей + + + Нипигон + + + Торонто + + + Иквалуит + + + Пангниртунг + + + Монктон + + + Халифакс + + + Гус Бей + + + Глейс Бей + + + Блан-Саблон + + + Сейнт Джоунс + + + Кокосови острови + + + Киншаса + + + Лубумбаши + + + Бангуи + + + Бразавил + + + Цюрих + + + Абиджан + + + Раротонга + + + Великденски о-в + + + Сантяго + + + Дуала + + + Кашгар + + + Урумчи + + + Чунцин + + + Шанхай + + + Харбин + + + Богота + + + Коста Рика + + + Хавана + + + Кабо Верде + + + Кюрасао + + + Рождество + + + Никозия + + + Прага + + + Бюзинген + + + Берлин + + + Джибути + + + Копенхаген + + + Доминика + + + Санто Доминго + + + Алжир + + + Галапагоски о-ви + + + Гуаякил + + + Талин + + + Кайро + + + Ел Аюн + + + Асмара + + + Канарски о-ви + + + Сеута + + + Мадрид + + + Адис Абеба + + + Хелзинки + + + Фиджи + + + Стенли + + + Чуюк + + + Понпей + + + Кошрай + + + Фарьорски острови + + + Париж + + + Либревил + + + + Британско лятно часово време + + Лондон + + + Гренада + + + Тбилиси + + + Кайен + + + Гърнси + + + Акра + + + Гибралтар + + + Туле + + + Нуук + + + Сгорсбисон + + + Данмарксхавн + + + Банджул + + + Конакри + + + Гваделупа + + + Малабо + + + Атина + + + Южна Джорджия + + + Гватемала + + + Гуам + + + Бисау + + + Гаяна + + + Хонконг + + + Тегусигалпа + + + Загреб + + + Порт-о-Пренс + + + Будапеща + + + Джакарта + + + Понтианак + + + Макасар + + + Джаяпура + + + + Ирландско лятно часово време + + Дъблин + + + Йерусалим + + + о-в Ман + + + Колката + + + Чагос + + + Багдад + + + Техеран + + + Рейкявик + + + Рим + + + Джърси + + + Ямайка + + + Аман + + + Токио + + + Найроби + + + Бишкек + + + Пном Пен + + + Ендърбъри + + + Киритимати + + + Тарауа + + + Коморски острови + + + Сейнт Китс + + + Пхенян + + + Сеул + + + Кувейт + + + Кайманови острови + + + Актау + + + Арал + + + Актобе + + + Къзълорда + + + Алмати + + + Виентян + + + Бейрут + + + Сейнт Лусия + + + Вадуц + + + Коломбо + + + Монровия + + + Масеру + + + Вилнюс + + + Люксембург + + + Рига + + + Триполи + + + Казабланка + + + Монако + + + Кишинев + + + Подгорица + + + Мариго + + + Антананариво + + + Куаджалин + + + Маджуро + + + Скопие + + + Бамако + + + Рангун + + + Ховд + + + Улан Батор + + + Чойбалсан + + + Макао + + + Сайпан + + + Мартиника + + + Нуакшот + + + Монтсерат + + + Малта + + + Мавриций + + + Малдиви + + + Блантайър + + + Тихуана + + + Санта Исабел + + + Ермосильо + + + Масатлан + + + Чиуауа + + + Бахия де Бандерас + + + Охинага + + + Монтерей + + + Мексико Сити + + + Матаморос + + + Мерида + + + Канкун + + + Куала Лумпур + + + Кучин + + + Мапуто + + + Виндхук + + + Нумеа + + + Ниамей + + + Норфолк + + + Лагос + + + Манагуа + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуе + + + Чатам + + + Окланд + + + Мускат + + + Панама + + + Лима + + + Таити + + + Маркизки о-ви + + + Гамбие + + + Порт Морсби + + + Манила + + + Карачи + + + Варшава + + + Микелон + + + Питкерн + + + Пуерто Рико + + + Газа + + + Хеброн + + + Азорски о-ви + + + Мадейра + + + Лисабон + + + Палау + + + Асунсион + + + Катар + + + Реюнион + + + Букурещ + + + Белград + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Екатерининбург + + + Омск + + + Новосибирск + + + Новокузнецк + + + Красноярск + + + Иркутск + + + Якутск + + + Владивосток + + + Хандига + + + Сахалин + + + Уст-Нера + + + Магадан + + + Камчатка + + + Анадир + + + Кигали + + + Рияд + + + Гуадалканал + + + Мае + + + Хартум + + + Стокхолм + + + Сингапур + + + Света Елена + + + Любляна + + + Лонгирбюен + + + Братислава + + + Фрийтаун + + + Сан Марино + + + Дакар + + + Могадишу + + + Парамарибо + + + Джуба + + + Сао Томе + + + Салвадор + + + Лоуър принсес куотър + + + Дамаск + + + Мбабане + + + Гранд Търк + + + Нджамена + + + Кергелен + + + Ломе + + + Банкок + + + Душанбе + + + Факаофо + + + Дили + + + Ашхабад + + + Тунис + + + Тонгатапу + + + Истанбул + + + Порт ъф Спейн + + + Фунафути + + + Тайпе + + + Дар ес Салам + + + Ужгород + + + Киев + + + Севастопол + + + Запорожие + + + Кампала + + + Мидуей + + + Джонстън + + + Уейк + + + Адак + + + Ноум + + + Хонолулу + + + Анкъридж + + + Якутат + + + Ситка + + + Джуно + + + Метлакатла + + + Лос Анджелис + + + Бойси + + + Финикс + + + Денвър + + + Бюла + + + Ню Сейлъм + + + Сентър + + + Чикаго + + + Меномини + + + Винсенс + + + Питърсбърг + + + Тел Сити + + + Нокс + + + Уинамак + + + Маренго + + + Индианополис + + + Луисвил + + + Виви + + + Монтичело + + + Детройт + + + Ню Йорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сейнт Винсънт + + + Каракас + + + Тортола + + + Сейнт Томас + + + Хошимин + + + Ефате + + + Уолис + + + Апия + + + Аден + + + Майот + + + Йоханесбург + + + Лусака + + + Хараре + + + + Афганистанско време + + + + + Централноафриканско време + + + + + Източноафриканско време + + + + + Южноафриканско време + + + + + Западноафриканско време + Западноафриканско стандартно време + Западноафриканско лятно часово време + + + + + Аляска + Аляска – стандартно време + Аляска – лятно часово време + + + + + Амазонско време + Амазонско стандартно време + Амазонско лятно часово време + + + + + Северноамериканско централно време + Северноамериканско централно стандартно време + Северноамериканско централно лятно часово време + + + + + Северноамериканско източно време + Северноамериканско източно стандартно време + Северноамериканско източно лятно часово време + + + + + Северноамериканско планинско време + Северноамериканско планинско стандартно време + Северноамериканско планинско лятно часово време + + + + + Северноамериканско тихоокеанско време + Северноамериканско тихоокеанско стандартно време + Северноамериканско тихоокеанско лятно часово време + + + + + Анадир време + Анадир – стандартно време + Анадир – лятно часово време + + + + + Арабско време + Арабско стандартно време + Арабско лятно часово време + + + + + Аржентинско време + Аржентинско стандартно време + Аржентинско лятно часово време + + + + + Западноаржентинско време + Западноаржентинско стандартно време + Западноаржентинско лятно часово време + + + + + Арменско време + Арменско стандартно време + Арменско лятно часово време + + + + + Северноамериканско атлантическо време + Северноамериканско атлантическо стандартно време + Северноамериканско атлантическо лятно часово време + + + + + Австралия – централно време + Австралия – централно стандартно време + Австралия – централно лятно часово време + + + + + Австралия – западно централно време + Австралия – западно централно стандартно време + Австралия – западно централно лятно часово време + + + + + Австралия – източно време + Австралия – източно стандартно време + Австралия – източно лятно часово време + + + + + Австралия – западно време + Австралия – западно стандартно време + Австралия – западно лятно часово време + + + + + Азербайджанско време + Азербайджанско стандартно време + Азербайджанско лятно часово време + + + + + Азорски острови + Азорски острови – стандартно време + Азорски острови – лятно часово време + + + + + Бангладешко време + Бангладешко стандартно време + Бангладешко лятно часово време + + + + + Бутанско време + + + + + Боливийско време + + + + + Бразилско време + Бразилско стандартно време + Бразилско лятно часово време + + + + + Бруней Даруссалам + + + + + Кабо Верде + Кабо Верде – стандартно време + Кабо Верде – лятно часово време + + + + + Чаморо – стандартно време + + + + + Чатъм + Чатъм – стандартно време + Чатъм – лятно часово време + + + + + Чилийско време + Чилийско стандартно време + Чилийско лятно часово време + + + + + Китайско време + Китайско стандартно време + Китайско лятно часово време + + + + + Чойбалсанско време + Чойбалсанско стандартно време + Чойбалсанско лятно часово време + + + + + Остров Рождество + + + + + Кокосови острови + + + + + Колумбийско време + Колумбийско стандартно време + Колумбийско лятно часово време + + + + + Острови Кук + Острови Кук – стандартно време + Острови Кук – лятно часово време + + + + + Кубинско време + Кубинско стандартно време + Кубинско лятно часово време + + + + + Дейвис + + + + + Дюмон Дюрвил + + + + + Източнотиморско време + + + + + Великденски остров + Великденски остров – стандартно време + Великденски остров – лятно часово време + + + + + Еквадорско време + + + + + Централноевропейско време + Централноевропейско стандартно време + Централноевропейско лятно часово време + + + + + Източноевропейско време + Източноевропейско стандартно време + Източноевропейско лятно часово време + + + + + Западноевропейско време + Западноевропейско стандартно време + Западноевропейско лятно време + + + + + Фолклендски острови + Фолклендски острови – стандартно време + Фолклендски острови – лятно часово време + + + + + Фиджи + Фиджи – стандартно време + Фиджи – лятно часово време + + + + + Френска Гвиана + + + + + Френски южни и антарктически територии + + + + + Галапагоско време + + + + + Гамбие + + + + + Грузинско време + Грузинско стандартно време + Грузинско лятно часово време + + + + + Острови Гилбърт + + + + + Средно гринуичко време + + + + + Източногренландско време + Източногренландско стандартно време + Източногренландско лятно часово време + + + + + Западногренландско време + Западногренландско стандартно време + Западногренландско лятно часово време + + + + + Персийски залив + + + + + Гаяна + + + + + Хавайско-алеутско време + Хавайско-алеутско стандартно време + Хавайско-алеутско лятно часово време + + + + + Хонконгско време + Хонконгско стандартно време + Хонконгско лятно часово време + + + + + Ховдско време + Ховдско стандартно време + Ховдско лятно часово време + + + + + Индийско време + + + + + Индийски океан + + + + + Индокитайско време + + + + + Централноиндонезийско време + + + + + Източноиндонезийско време + + + + + Западноиндонезийско време + + + + + Иранско време + Иранско стандартно време + Иранско лятно часово време + + + + + Иркутско време + Иркутско стандартно време + Иркутско лятно часово време + + + + + Израелско време + Израелско стандартно време + Израелско лятно часово време + + + + + Японско време + Японско стандартно време + Японско лятно часово време + + + + + Петропавловск-Камчатски време + Петропавловск-Камчатски стандартно време + Петропавловск-Камчатски – лятно часово време + + + + + Източноказахстанско време + + + + + Западноказахстанско време + + + + + Корейско време + Корейско стандартно време + Корейско лятно часово време + + + + + Кошрай + + + + + Красноярско време + Красноярско стандартно време + Красноярско лятно часово време + + + + + Киргизстанско време + + + + + Екваториални острови + + + + + Лорд Хау + Лорд Хау – стандартно време + Лорд Хау – лятно часово време + + + + + Маккуори + + + + + Магаданско време + Магаданско стандартно време + Магаданско лятно часово време + + + + + Малайзийско време + + + + + Малдивски острови + + + + + Маркизки острови + + + + + Маршалови острови + + + + + Мавриций + Мавриций – стандартно време + Мавриций – лятно часово време + + + + + Моусън + + + + + Уланбаторско време + Уланбаторско стандартно време + Уланбаторско лятно часово време + + + + + Московско време + Московско стандартно време + Московско лятно часово време + + + + + Мианмарско време + + + + + Науру + + + + + Непалско време + + + + + Новокаледонско време + Новокаледонско стандартно време + Новокаледонско лятно часово време + + + + + Новозеландско време + Новозеландско стандартно време + Новозеландско лятно часово време + + + + + Нюфаундлендско време + Нюфаундлендско стандартно време + Нюфаундлендско лятно часово време + + + + + Ниуе + + + + + Норфолк + + + + + Фернандо де Нороня + Фернандо де Нороня – стандартно време + Фернандо де Нороня – лятно часово време + + + + + Новосибирско време + Новосибирско стандартно време + Новосибирско лятно часово време + + + + + Омско време + Омско стандартно време + Омско лятно часово време + + + + + Пакистанско време + Пакистанско стандартно време + Пакистанско лятно часово време + + + + + Палау + + + + + Папуа – Нова Гвинея + + + + + Парагвайско време + Парагвайско стандартно време + Парагвайско лятно часово време + + + + + Перуанско време + Перуанско стандартно време + Перуанско лятно часово време + + + + + Филипинско време + Филипинско стандартно време + Филипинско лятно часово време + + + + + Острови Феникс + + + + + Сен Пиер и Микелон + Сен Пиер и Микелон – стандартно време + Сен Пиер и Микелон – лятно часово време + + + + + Питкерн + + + + + Понапе + + + + + Реюнион + + + + + Ротера + + + + + Сахалинско време + Сахалинско стандартно време + Сахалинско лятно часово време + + + + + Самара време + Самара – стандартно време + Самара – лятно часово време + + + + + Самоанско време + Самоанско стандартно време + Самоанско лятно часово време + + + + + Сейшелски острови + + + + + Сингапурско време + + + + + Соломонови острови + + + + + Южна Джорджия + + + + + Суринамско време + + + + + Шова + + + + + Таитянско време + + + + + Тайпе + Тайпе – стандартно време + Тайпе – лятно часово време + + + + + Таджикистанско време + + + + + Токелау + + + + + Тонга + Тонга – стандартно време + Тонга – лятно часово време + + + + + Чуюк + + + + + Туркменистанско време + Туркменистанско стандартно време + Туркменистанско лятно часово време + + + + + Тувалу + + + + + Уругвайско време + Уругвайско стандартно време + Уругвайско лятно часово време + + + + + Узбекистанско време + Узбекистанско стандартно време + Узбекистанско лятно часово време + + + + + Вануату + Вануату – стандартно време + Вануату – лятно часово време + + + + + Венецуелско време + + + + + Владивостокско време + Владивостокско стандартно време + Владивостокско лятно часово време + + + + + Волгоградско време + Волгоградско стандартно време + Волгоградско лятно часово време + + + + + Восток + + + + + Остров Уейк + + + + + Уолис и Футуна + + + + + Якутско време + Якутскско стандартно време + Якутскско лятно часово време + + + + + Екатеринбургско време + Екатеринбургско стандартно време + Екатеринбургско лятно часово време + + + + + + + , +   + ; + % + + + - + E + . + + + NaN + + + + + #,##0.### + + + + + 0 хиляда + 0 хиляди + 00 хиляди + 00 хиляди + 000 Х + 000 хиляди + 0 милион + 0 милиона + 00 милиона + 00 милиона + 000 милиона + 000 милиона + 0 милиард + 0 милиарда + 00 милиарда + 00 милиарда + 000 милиарда + 000 милиарда + 0 трилион + 0 трилиона + 00 трилиона + 00 трилиона + 000 трилиона + 000 трилиона + + + + + 0 хил'.' + 0 хил'.' + 00 хил'.' + 00 хил'.' + 000 хил'.' + 000 хил'.' + 0 млн'.' + 0 млн'.' + 00 млн'.' + 00 млн'.' + 000 млн'.' + 000 млн'.' + 0 млрд'.' + 0 млрд'.' + 00 млрд'.' + 00 млрд'.' + 000 млрд'.' + 000 млрд'.' + 0 трлн'.' + 0 трлн'.' + 00 трлн'.' + 00 трлн'.' + 000 трлн'.' + 000 трлн'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Андорска песета + андорска песета + андорски песети + + + Дирхам на Обединените арабски емирства + дирхам на Обединените арабски емирства + дирхама на Обединените арабски емирства + + + Афганистански афган (1927–2002) + афганистански афган (1927–2002) + афганистански афгана (1927–2002) + + + Афганистански афган + афганистански афган + афганистански афгана + + + Албански лек + албански лек + албански лека + + + Арменски драм + арменски драм + арменски драма + + + Антилски гулден + антилски гулден + антилски гулдена + + + Анголска кванза + анголска кванза + анголски кванзи + + + Анголска кванца (1977–1990) + анголска кванца (1977–1991) + анголски кванци (1977–1991) + + + Анголска нова кванца (1990–2000) + анголска нова кванца (1990–2000) + анголски нови кванци (1990–2000) + + + Анголска нова кванца (1995–1999) + анголска нова кванца (1995–1999) + анголски нови кванци (1995–1999) + + + Аржентински австрал + аржентински австрал + аржентински австрала + + + Аржентинско песо (1983–1985) + аржентинско песо (1983–1985) + аржентински песо (1983–1985) + + + Аржентинско песо + аржентинско песо + аржентински песо + + + Австрийски шилинг + австрийски шилинг + австрийски шилинга + + + Австралийски долар + австралийски долар + австралийски долара + AUD + + + Арубски флорин + арубски флорин + арубски флорина + + + Азербайджански манат (1993–2006) + азербайджански манат (1993–2006) + азербайджански маната (1993–2006) + + + Азербайджански манат + азербайджански манат + азербайджански маната + + + Босна и Херцеговина-динар + Босна и Херцеговина-динар + Босна и Херцеговина-динара + + + Босненска конвертируема марка + босненска конвертируема марка + босненски конвертируеми марки + + + Барбадоски долар + барбадоски долар + барбадоски долара + + + Бангладешка така + бангладешка така + бангладешки таки + + + Белгийски франк (конвертируем) + белгийски франк (конвертируем) + белгийски франка (конвертируеми) + + + Белгийски франк + белгийски франк + белгийски франка + + + Белгийски франк (финансов) + белгийски франк (финансов) + белгийски франка (финансови) + + + Български конвертируем лев (1962–1999) + български конвертируем лев + български конвертируеми лева + + + Български лев + български лев + български лева + лв. + + + Бахрейнски динар + бахрейнски динар + бахрейнски динара + + + Бурундийски франк + бурундийски франк + бурундийски франка + + + Бермудски долар + бермудски долар + бермудски долара + + + Брунейски долар + брунейски долар + брунейски долара + + + Боливийско боливиано + боливийско боливиано + боливийски боливиано + + + Боливийско песо + боливийско песо + боливийски песо + + + Боливийски мвдол + боливийски мвдол + боливийски мвдол + + + Бразилско ново крузейро (1967–1986) + бразилско ново крузейро (1967–1986) + бразилско ново крузейро (1967–1986) + + + Бразилско крозадо + + + Бразилско крузейро (1990–1993) + + + Бразилски реал + бразилски реал + бразилски реала + BRL + + + Бразилско ново крозадо + + + Бразилско крузейро + + + Бахамски долар + бахамски долар + бахамски долара + + + Бутански нгултрум + бутански нгултрум + бутански нгултрума + + + Бирмански киат + + + Ботсуанска пула + ботсуанска пула + ботсуански пули + + + Беларуска нова рубла (1994–1999) + беларуска нова рубла (1994–1999) + беларуски нови рубли (1994–1999) + + + Беларуска рубла + беларуска рубла + беларуски рубли + + + Белизийски долар + белизийски долар + белизийски долара + + + Канадски долар + канадски долар + канадски долара + CAD + + + Конгоански франк + конгоански франк + конгоански франка + + + WIR евро + + + Швейцарски франк + швейцарски франк + швейцарски франка + + + WIR франк + + + Условна разчетна единица на Чили + + + Чилийско песо + чилийско песо + чилийски песо + + + Китайски юан + китайски юан + китайски юана + CNY + + + Колумбийско песо + колумбийско песо + колумбийски песо + + + Колумбийска единица на реалната стойност + + + Костарикански колон + костарикански колон + костарикански колона + + + Стар сръбски динар + + + Чехословашка конвертируема крона + чехословашка конвертируема крона + чехословашки конвертируеми крони + + + Кубинско конвертируемо песо + кубинско конвертируемо песо + кубински конвертируеми песо + + + Кубинско песо + кубинско песо + кубински песо + + + Ескудо на Кабо Верде + ескудо на Кабо Верде + ескудо на Кабо Верде + + + Кипърска лира + кипърска лира + кипърски лири + + + Чешка крона + чешка крона + чешки крони + + + Източногерманска марка + + + Германска марка + германска марка + германски марки + + + Джибутски франк + джибутски франк + джибутски франка + + + Датска крона + датска крона + датски крони + + + Доминиканско песо + доминиканско песо + доминикански песо + + + Алжирски динар + алжирски динар + алжирски динара + + + Еквадорско сукре + еквадорско сукре + еквадорско сукре + + + Еквадорска банкова единица + + + Естонска крона + естонска крона + естонски крони + + + Египетска лира + египетска лира + египетски лири + + + Еритрейска накфа + еритрейска накфа + еритрейски накфи + + + Испанска песета + испанска песета + испански песети + + + Етиопски бир + етиопски бир + етиопски бира + + + Евро + евро + евро + + + + Финландска марка + финландска марка + финландски марки + + + Фиджийски долар + фиджийски долар + фиджийски долара + + + Фолклендска лира + фолклендска лира + фолклендски лири + + + Френски франк + френски франк + френски франка + + + Британска лира + британска лира + британски лири + GBP + + + Грузински купон + + + Грузински лари + грузински лари + грузински лари + + + Ганайско седи (1979–2007) + ганайско седи (1979–2007) + ганайски седи (1979–2007) + + + Ганайско седи + ганайско седи + ганайски седи + + + Гибралтарска лира + гибралтарска лира + гибралтарски лири + + + Гамбийско даласи + гамбийско даласи + гамбийски даласи + + + Гвинейски франк + гвинейски франк + гвинейски франка + + + Гвинейска сили + + + Екваториално гвинейско еквеле + + + Гръцка драхма + гръцка драхма + гръцки драхми + + + Гватемалски кетцал + гватемалски кетцал + гватемалски кетцала + + + Ескудо от Португалска Гвинея + + + Гвинея-Бисау песо + + + Гаянски долар + гаянски долар + гаянски долара + + + Хонконгски долар + хонконгски долар + хонконгски долара + HKD + + + Хондураска лемпира + хондураска лемпира + хондураски лемпири + + + Хърватски динар + хърватски динар + хърватски динара + + + Хърватска куна + хърватска куна + хърватски куни + + + Хаитски гурд + хаитски гурд + хаитски гурда + + + Унгарски форинт + унгарски форинт + унгарски форинта + + + Индонезийска рупия + индонезийска рупия + индонезийски рупии + + + Ирландска лира + ирландска лира + ирландски лири + + + Израелска лира + израелска лира + израелски лири + + + Израелски нов шекел + израелски нов шекел + израелски нови шекела + ILS + + + Индийска рупия + индийска рупия + индийски рупии + INR + + + Иракски динар + иракски динар + иракски динара + + + Ирански риал + ирански риал + ирански риала + + + Исландска крона + исландска крона + исландски крони + + + Италианска лира + италианска лира + италиански лири + + + Ямайски долар + ямайски долар + ямайски долара + + + Йордански динар + йордански динар + йордански динара + + + Японска йена + японска йена + японски йени + JPY + + + Кенийски шилинг + кенийски шилинг + кенийски шилинга + + + Киргизстански сом + киргизстански сом + киргизстански сома + + + Камбоджански риел + камбоджански риел + камбоджански риела + + + Коморски франк + коморски франк + коморски франка + + + Севернокорейски вон + севернокорейски вон + севернокорейски вона + + + Южнокорейски вон + южнокорейски вон + южнокорейски вона + KRW + + + Кувейтски динар + кувейтски динар + кувейтски динара + + + Кайманов долар + кайманов долар + кайманови долара + + + Казахстанско тенге + казахстанско тенге + казахстански тенге + + + Лаоски кип + лаоски кип + лаоски кипа + + + Ливанска лира + ливанска лира + ливански лири + + + Шриланкска рупия + шриланкска рупия + шриланкски рупии + + + Либерийски долар + либерийски долар + либерийски долара + + + Лесотско лоти + лесотско лоти + лесотски лоти + + + Литовски литас + литовски литас + литовски литаса + + + Литовски талон + + + Люксембургски франк + люксембургски франк + люксембургски франка + + + Латвийски лат + латвийски лат + латвийски лата + + + Латвийска рубла + латвийска рубла + латвийски рубли + + + Либийски динар + либийски динар + либийски динара + + + Марокански дирхам + марокански дирхам + марокански дирхама + + + Марокански франк + марокански франк + марокански франка + + + Молдовско леу + молдовско леу + молдовски леу + + + Малгашко ариари + малгашко ариари + малгашки ариари + + + Малгашки франк - Мадагаскар + малгашки франк - Мадагаскар + малгашки франка - Мадагаскар + + + Македонски денар + македонски денар + македонски денара + + + Малийски франк + + + Мианмарски кият + мианмарски кият + мианмарски кията + + + Монголски тугрик + монголски тугрик + монголски тугрика + + + Патака на Макао + патака на Макао + патаки на Макао + + + Мавританска угия + мавританска угия + мавритански угии + + + Малтийска лира + малтийска лира + малтийски лири + + + Маврицийска рупия + маврицийска рупия + маврицийски рупии + + + Малдивска руфия + малдивска руфия + малдивски руфии + + + Малавийска квача + малавийска квача + малавийски квачи + + + Мексиканско песо + мексиканско песо + мексикански песо + MXN + + + Мексиканско сребърно песо (1861–1992) + мексиканско сребърно песо (1861–1992) + мексикански сребърни песо (1861–1992) + + + Мексиканска конвертируема единица (UDI) + + + Малайзийски рингит + малайзийски рингит + малайзийски рингита + + + Мозамбикско ескудо + мозамбикско ескудо + мозамбикски ескудо + + + Мозамбикски метикал (1980–2006) + мозамбикски метикал (1980–2006) + мозамбикски метикала (1980–2006) + + + Мозамбикски метикал + мозамбикски метикал + мозамбикски метикала + + + Намибийски долар + намибийски долар + намибийски долара + + + Нигерийска найра + нигерийска найра + нигерийски найри + + + Никарагуанска кордоба (1988–1991) + никарагуанска кордоба (1988–1991) + никарагуански кордоби (1988–1991) + + + Никарагуанска кордоба + никарагуанска кордоба + никарагуански кордоби + + + Холандски гулден + холандски гулден + холандски гулдена + + + Норвежка крона + норвежка крона + норвежки крони + + + Непалска рупия + непалска рупия + непалски рупии + + + Новозеландски долар + новозеландски долар + новозеландски долара + NZD + + + Омански риал + омански риал + омански риала + + + Панамска балбоа + панамска балбоа + панамски балбоа + + + Перуанско инти + + + Перуански нов сол + перуански нов сол + перуански нови сола + + + Перуански сол + перуански сол (1863–1965) + перуански сол (1863–1965) + + + Папуа-новогвинейска кина + папуа-новогвинейска кина + папуа-новогвинейски кини + + + Филипинско песо + филипинско песо + филипински песо + + + Пакистанска рупия + пакистанска рупия + пакистански рупии + + + Полска злота + полска злота + полски злоти + + + Полска злота (1950–1995) + полска злота (1950–1995) + полски злоти (1950–1995) + + + Португалско ескудо + португалско ескудо + португалски ескудо + + + Парагвайско гуарани + парагвайско гуарани + парагвайски гуарани + + + Катарски риал + катарски риал + катарски риала + + + Родезийски долар + + + Стара румънска лея + стара румънска лея + стари румънски леи + + + Румънска лея + румънска лея + румънски леи + + + Сръбски динар + сръбски динар + сръбски динара + + + Руска рубла + руска рубла + руски рубли + руб. + + + Руска рубла (1991–1998) + руска рубла (1991–1998) + руски рубли (1991–1998) + + + Руандски франк + руандски франк + руандски франка + + + Саудитскоарабски риал + саудитскоарабски риал + саудитскоарабски риала + + + Долар на Соломоновите острови + долар на Соломоновите острови + долара на Соломоновите острови + + + Сейшелска рупия + сейшелска рупия + сейшелски рупии + + + Судански динар + судански динар + судански динара + + + Суданска лира + суданска лира + судански лири + + + Шведска крона + шведска крона + шведски крони + + + Сингапурски долар + сингапурски долар + сингапурски долара + + + Лира на Света Елена + лира на Света Елена + лири на Света Елена + + + Словенски толар + словенски толар + словенски толара + + + Словашка крона + словашка крона + словашки крони + + + Сиералеонско леоне + сиералеонско леоне + сиералеонски леоне + + + Сомалийски шилинг + сомалийски шилинг + сомалийски шилинга + + + Суринамски долар + суринамски долар + суринамски долара + + + Суринамски гилдер + суринамски гилдер + суринамски гилдера + + + Южносуданска лира + южносуданска лира + южносудански лири + + + Добра на Сао Томе и Принсипи + добра на Сао Томе и Принсипи + добра на Сао Томе и Принсипи + + + Съветска рубла + съветска рубла + съветски рубли + + + Салвадорски колон + салвадорски колон + салвадорски колона + + + Сирийска лира + сирийска лира + сирийски лири + + + Свазилендски лилангени + свазилендски лилангени + свазилендски лилангени + + + Тайландски бат + тайландски бат + тайландски бата + THB + + + Таджикистанска рубла + таджикистанска рубла + таджикистански рубли + + + Таджикистански сомони + таджикистански сомони + таджикистански сомони + + + Туркменистански манат + туркменистански манат + туркменистански маната + + + Туркменски манат + туркменски манат + туркменски маната + + + Тунизийски динар + тунизийски динар + тунизийски динара + + + Тонганска паанга + тонганска паанга + тонгански паанги + + + Тиморско ескудо + тиморско ескудо + тиморски ескудо + + + Турска лира (1922–2005) + турска лира (1922–2005) + турски лири (1922–2005) + + + Турска лира + турска лира + турски лири + + + Долар на Тринидад и Тобаго + долар на Тринидад и Тобаго + долара на Тринидад и Тобаго + + + Тайвански долар + тайвански долар + тайвански долара + TWD + + + Танзанийски шилинг + танзанийски шилинг + танзанийски шилинга + + + Украинска хривня + украинска хривня + украински хривни + + + Украински карбованец + украински карбованец + украински карбованеца + + + Угандийски шилинг (1966–1987) + угандийски шилинг (1966–1987) + угандийски шилинга (1966–1987) + + + Угандски шилинг + угандски шилинг + угандски шилинга + + + Щатски долар + щатски долар + щатски долара + щ.д. + + + Уругвайско песо (индекс на инфлацията) + + + Уругвайско песо (1975–1993) + уругвайско песо (1975–1993) + уругвайски песо (1975–1993) + + + Уругвайско песо + уругвайско песо + уругвайски песо + + + Узбекски сум + узбекски сум + узбекски сума + + + Венецуелски боливар (1871–2008) + венецуелски боливар (1871–2008) + венецуелски боливара (1871–2008) + + + Венецуелски боливар + венецуелски боливар + венецуелски боливара + + + Виетнамски донг + виетнамски донг + виетнамски донга + VND + + + Вануатско вату + вануатско вату + вануатски вату + + + Самоанска тала + самоанска тала + самоански тали + + + Централноафрикански CFA франк + централноафрикански CFA франк + централноафрикански CFA франка + FCFA + + + Сребро + + + Злато + + + Европейска съставна единица + + + Европейска валутна единица + + + Европейска единица по сметка (XBC) + + + Европейска единица по сметка (XBD) + + + Източнокарибски долар + източнокарибски долар + източнокарибски долара + XCD + + + Специални права на тираж + + + Еку на ЕИО + + + Френски златен франк + френски златен франк + френски златна франка + + + Западноафрикански CFA франк + западноафрикански CFA франк + западноафрикански CFA франка + CFA + + + Паладий + + + Френскополинезийски франк + френскополинезийски франк + френскополинезийски франка + CFPF + + + Платина + + + Код резервиран за целите на тестване + + + Непозната или невалидна валута + непозната или невалидна валута + непозната или невалидна валута + + + Йеменски динар + йеменски динар + йеменски динара + + + Йеменски риал + йеменски риал + йеменски риала + + + Югославски твърд динар + + + Югославски динар + югославски динар + югославски динара + + + Югославски конвертируем динар + югославски конвертируем динар + югославски конвертируеми динара + + + Южноафрикански ранд (финансов) + южноафрикански ранд (финансов) + южноафрикански ранда (финансови) + + + Южноафрикански ранд + южноафрикански ранд + южноафрикански ранда + + + Замбийска квача (1968–2012) + замбийска квача (1968–2012) + замбийски квачи (1968–2012) + + + Замбийска куача + замбийска куача + замбийски куачи + + + Заирско ново зайре + заирско ново зайре + заирски нови зайре + + + Заирско зайре + заирско зайре + заирски зайре + + + Зимбабвийски долар + зимбабвийски долар + зимбабвийски долара + + + Зимбабвийски долар (2009) + зимбабвийски долар (2009) + зимбабвийски долара (2009) + + + + ⩾ {0} + {0} – {1} + + + + + + {0} в {1} + + + {0} G + {0} G + + + {0} минута + {0} минути + + + {0} секунда + {0} секунди + + + {0} градус + {0} градуса + + + {0} акър + {0} акра + + + {0} хектар + {0} хектара + + + {0} квадратен фут + {0} квадратни фута + + + {0} квадратен километър + {0} квадратни километра + + + {0} квадратен метър + {0} квадратни метра + + + {0} квадратна миля + {0} квадратни мили + + + {0} ден + {0} дни + + + {0} час + {0} часа + + + {0} милисекунда + {0} милисекунди + + + {0} минута + {0} минути + + + {0} месец + {0} месеца + + + {0} секунда + {0} секунди + + + {0} седмица + {0} седмици + + + {0} година + {0} години + + + {0} сантиметър + {0} сантиметра + + + {0} фут + {0} фута + + + {0} инч + {0} инча + + + {0} километър + {0} километра + + + {0} светлинна година + {0} светлинни години + + + {0} метър + {0} метра + + + {0} миля + {0} мили + + + {0} милиметър + {0} милиметра + + + {0} пикометър + {0} пикометра + + + {0} ярд + {0} ярда + + + {0} грам + {0} грама + + + {0} килограм + {0} килограма + + + {0} унция + {0} унции + + + {0} фунт + {0} фунта + + + {0} конска сила + {0} конски сили + + + {0} киловат + {0} киловата + + + {0} ват + {0} вата + + + {0} хектопаскал + {0} хектопаскала + + + {0} инч живачен стълб + {0} инча живачен стълб + + + {0} милибар + {0} милибара + + + {0} километър в час + {0} километра в час + + + {0} метър в секунда + {0} метра в секунда + + + {0} миля в час + {0} мили в час + + + {0} градус Целзий + {0} градуса Целзий + + + {0} градус по Фаренхайт + {0} градуса по Фаренхайт + + + {0} кубически километър + {0} кубически километра + + + {0} кубическа миля + {0} кубически мили + + + {0} литър + {0} литра + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акър + {0} акра + + + {0} ha + {0} ha + + + {0} кв. фут + {0} кв. фута + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} кв. миля + {0} кв. мили + + + {0} д + {0} д + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} мес. + {0} мес. + + + {0} s + {0} s + + + {0} седм. + {0} седм. + + + {0} г + {0} г + + + {0} cm + {0} cm + + + {0} фут + {0} фута + + + {0} инч + {0} инча + + + {0} km + {0} km + + + {0} св.г. + {0} св.г. + + + {0} m + {0} m + + + {0} миля + {0} мили + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} ярд + {0} ярда + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} унц. + {0} унц. + + + {0} фунт + {0} фунта + + + {0} к.с. + {0} к.с. + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} миля/ч + {0} мили/ч + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} куб. миля + {0} куб. мили + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акър + {0} акра + + + {0} ha + {0} ha + + + {0} кв. фут + {0} кв. фута + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} кв. миля + {0} кв. мили + + + {0} д + {0} д + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} м + {0} м + + + {0} s + {0} s + + + {0} седм. + {0} седм. + + + {0} г + {0} г + + + {0} cm + {0} cm + + + {0} фут + {0} фута + + + {0}" + {0}" + + + {0} km + {0} km + + + {0} св.г. + {0} св.г. + + + {0} m + {0} m + + + {0} миля + {0} мили + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} ярд + {0} ярда + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} унц. + {0} унц. + + + {0} фунт + {0} фунта + + + {0} к.с. + {0} к.с. + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} миля/ч + {0} мили/ч + + + {0} ° + {0} ° + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} куб. миля + {0} куб. мили + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + + + да:д + не:н + + + + diff --git a/library/Zend/Locale/Data/bg_BG.xml b/library/Zend/Locale/Data/bg_BG.xml new file mode 100755 index 000000000..64d526d86 --- /dev/null +++ b/library/Zend/Locale/Data/bg_BG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bm.xml b/library/Zend/Locale/Data/bm.xml new file mode 100755 index 000000000..65c079799 --- /dev/null +++ b/library/Zend/Locale/Data/bm.xml @@ -0,0 +1,755 @@ + + + + + + + + + + + + akankan + amarikikan + larabukan + biyelorisikan + buligarikan + bamanakan + bɛngalikan + cɛkikan + alimaɲikan + gɛrɛsikan + angilɛkan + esipaɲolkan + perisanikan + tubabukan + awusakan + inidikan + oŋirikan + Ɛndonezikan + igibokan + italikan + zapɔnekan + javanekan + kambojikan + korekan + malɛzikan + birimanikan + nepalekan + olandekan + pɛnijabikan + polonekan + pɔritigalikan + rumanikan + irisikan + ruwandakan + somalikan + suwɛdikan + tamulikan + tayikan + turikikan + ukɛrɛnikan + urudukan + wiyɛtinamukan + yorubakan + siniwakan + zulukan + + + Andɔr + Arabu mara kafoli + Afiganistaŋ + Antiga-ni-Barbuda + Angiya + Alibani + Arimeni + Peyiba ka Antiyi + Angola + Arizantin + Samowa amerikani + Otirisi + Ositirali + Aruba + Azɛrbayjaŋ + Bozni-Ɛrizigovini + Barbadi + Bɛngiladɛsi + Bɛliziki + Burukina Faso + Buligari + Bareyini + Burundi + Benɛn + Bermudi + Burinɛyi + Bolivi + Berezili + Bahamasi + Butaŋ + Bɔtisiwana + Belarusi + Belizi + Kanada + Kongo ka republiki demɔkratiki + Santarafiriki + Kongo + Suwisi + Kodiwari + Kuki Gun + Sili + Kameruni + Siniwajamana + Kolombi + Kɔsitarika + Kuba + Capivɛrdi + Cipri + Ceki republiki + Alimaɲi + Jibuti + Danemarki + Dɔminiki + Dɔmimiki republiki + Alizeri + Ekwatɔr + Esetoni + Eziputi + Eritere + Esipaɲi + Etiopi + Finilandi + Fiji + Maluwini Gun + Mikironesi + Faransi + Gabɔŋ + Angilɛtɛri + Granadi + Zeyɔrzi + Faransi ka gwiyani + Gana + Zibralitari + Gɔrɔhenelandi + Ganbi + Gine + Gwadelup + Gine ekwatɔri + Gɛrɛsi + Gwatemala + Gwam + Gine Bisawo + Gwiyana + Hɔndirasi + Kroasi + Ayiti + Hɔngri + Ɛndonezi + Irilandi + Isirayeli + Ɛndujamana + Angilɛ ka ɛndu dugukolo + Iraki + Iraŋ + Isilandi + Itali + Zamayiki + Zɔrdani + Zapɔn + Keniya + Kirigizisitaŋ + Kamboji + Kiribati + Komɔri + Kristɔfo-Senu-ni-Ɲevɛs + Kɛɲɛka Kore + Worodugu Kore + Kowɛti + Bama Gun + Kazakistaŋ + Layosi + Libaŋ + Lusi-Senu + Lisɛnsitayini + Sirilanka + Liberiya + Lesoto + Lituyani + Likisanburu + Letoni + Libi + Marɔku + Monako + Molidavi + Madagasikari + Marisali Gun + Macedɔni + Mali + Myanimari + Moŋoli + Kɛɲɛka Mariyani Gun + Maritiniki + Mɔritani + Moŋsera + Malti + Morisi + Maldivi + Malawi + Meksiki + Malɛzi + Mozanbiki + Namibi + Kaledoni Koura + Nizɛri + Nɔrofoliki Gun + Nizeriya + Nikaragwa + Peyiba + Nɔriwɛzi + Nepali + Nawuru + Nyuwe + Zelandi Koura + Omaŋ + Panama + Peru + Faransi ka polinezi + Papuwasi-Gine-Koura + Filipini + Pakisitaŋ + Poloɲi + Piyɛri-Senu-ni-Mikelɔŋ + Pitikarini + Pɔrotoriko + Palesitini + Pɔritigali + Palawu + Paraguwayi + Katari + Reyuɲɔŋ + Rumani + Irisi + Ruwanda + Arabiya Sawudiya + Salomo Gun + Sesɛli + Sudaŋ + Suwɛdi + Sɛngapuri + Ɛlɛni Senu + Sloveni + Slowaki + Siyera Lewɔni + Marini-Senu + Senegali + Somali + Surinami + Sawo Tome-ni-Prinicipe + Salivadɔr + Siri + Swazilandi + Turiki Gun ni Kayiki + Cadi + Togo + Tayilandi + Tajikisitani + Tokelo + Kɔrɔn Timɔr + Turikimenisitani + Tunizi + Tonga + Turiki + Trinite-ni-Tobago + Tuvalu + Tayiwani + Tanzani + Ukɛrɛni + Uganda + Ameriki + Urugwayi + Uzebekisitani + Vatikaŋ + Vinisɛn-Senu-ni-Grenadini + Venezuwela + Angilɛ ka Sungurunnin Gun + Ameriki ka Sungurunnin Gun + Wiyɛtinamu + Vanuwatu + Walisi-ni-Futuna + Samowa + Yemɛni + Mayoti + Worodugu Afriki + Zanbi + Zimbabuwe + + + + [a b c d e ɛ f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z] + [q v x] + [A B C D E Ɛ F G H I J K L M N Ɲ Ŋ O Ɔ P R S T U W Y Z] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + d/M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + zan + feb + mar + awi + + zuw + zul + uti + sɛt + ɔku + now + des + + + zanwuye + feburuye + marisi + awirili + + zuwɛn + zuluye + uti + sɛtanburu + ɔkutɔburu + nowanburu + desanburu + + + + + Z + F + M + A + M + Z + Z + U + S + Ɔ + N + D + + + + + + + kar + ntɛ + tar + ara + ala + jum + sib + + + kari + ntɛnɛ + tarata + araba + alamisa + juma + sibiri + + + + + K + N + T + A + A + J + S + + + + + + + KS1 + KS2 + KS3 + KS4 + + + kalo saba fɔlɔ + kalo saba filanan + kalo saba sabanan + kalo saba naaninan + + + + + + jezu krisiti ɲɛ + jezu krisiti minkɛ + + + J.-C. ɲɛ + ni J.-C. + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + d/M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + tile + + + san + + + kalo + + + dɔgɔkun + + + don + kunu + bi + sini + + + sɔgɔma/tile/wula/su + + + lɛrɛ + + + miniti + + + sekondi + + + sigikun tilena + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + arabu mara kafoli Diram + + + angola Kwanza + + + ositirali Dolar + + + bareyini Dinar + + + burundi Fraŋ + + + bɔtisiwana Pula + + + kanada Dolar + + + kongole Fraŋ + + + suwisi Fraŋ + + + siniwa Yuwan + + + capivɛrdi Esekudo + + + jibuti Fraŋ + + + alizeri Dinar + + + eziputi Livri + + + eritere Nafika + + + etiopi Bir + + + ero + + + angilɛ Livri Siterlingi + + + gana Sedi + + + gambi Dalasi + + + gine Fraŋ + + + Ɛndu Rupi + + + zapɔne Yɛn + + + keniya Siling + + + komɔri Fraŋ + + + liberiya Dolar + + + lesoto Loti + + + libi Dinar + + + marɔku Diram + + + madagasikari Fraŋ + + + mɔritani Uguwiya + + + morisi Rupi + + + malawi Kwaca + + + mozanbiki Metikali + + + namibi Dolar + + + nizeriya Nɛra + + + ruwanda Fraŋ + + + sawudiya Riyal + + + sesɛli Rupi + + + sudani Dinar + + + sudani Livri + + + Ɛlɛni-Senu Livri + + + siyeralewɔni Lewɔni + + + somali Siling + + + sawotome Dobra + + + swazilandi Lilangeni + + + tunizi Dinar + + + tanzani Siling + + + uganda Siling + + + ameriki Dolar + + + sefa Fraŋ (BEAC) + + + sefa Fraŋ (BCEAO) + + + sudafriki Randi + + + zambi Kwaca (1968–2012) + + + zambi Kwaca + + + zimbabuwe Dolar + + + + + + ɔwɔ:ɔ + ayi:a + + + + diff --git a/library/Zend/Locale/Data/bm_ML.xml b/library/Zend/Locale/Data/bm_ML.xml new file mode 100755 index 000000000..89ab93608 --- /dev/null +++ b/library/Zend/Locale/Data/bm_ML.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bn.xml b/library/Zend/Locale/Data/bn.xml new file mode 100755 index 000000000..dfd22e873 --- /dev/null +++ b/library/Zend/Locale/Data/bn.xml @@ -0,0 +1,5954 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + আফার + আব্খাজিয় + আচিনিয় + আকোলী + অদাগ্মে + আদেগে + আবেস্তীয় + আফ্রিকান্স + আফ্রিহিলি + আইনু + আকান + আক্কাদিয়ান + আলেউত + দক্ষিন আলতাই + আমহারিক + আর্গোনিজ + প্রাচীন ইংরেজী + আঙ্গীকা + আরবী + আধুনিক আদর্শ আরবী + আরামাইক + অ্যারোকেনিয় + আরাপাহো + আরাওয়াক + আসামি + আস্তুরিয় + আভেরিক + আওয়াধি + আয়মারা + আজারবাইজানীয় + আজেরি + বাশকির + বেলুচী + বালিনীয় + বাসা + বেলারুশিয় + বেজা + বেম্বা + বুলগেরিয় + ভোজপুরি + বিসলামা + বিকোল + বিনি + সিকসিকা + বামবারা + বাংলা + তিব্বতি + ব্রেটন + ব্রাজ + বসনীয় + বুরিয়াত + বুগিনি + ব্লিন + কাতালান + ক্যাডো + ক্যারিব + আত্সাম + চেচেন + চেবুয়ানো + চামেরো + চিবচা + চাগাতাই + চুকি + মারি + চিনুক পরিভাষা + চক্টো + চিপেওয়ান + চেরোকি + শাইয়েন + সোরানি কুর্দিশ + কর্সিকান + কপটিক + ক্রি + ক্রিমিয়ান তুর্কি + চেক + কাশুবিয়ান + চার্চ স্লাভিও + চুবাস + ওয়েলশ + ডেনিশ + ডাকোটা + দার্গওয়া + জার্মান + অস্ট্রিয়ান জার্মানি + সুইস উচ্চ জার্মানি + ডেলাওয়ের + স্ল্যাভ + দোগ্রীব + ডিংকা + দোগরি + নিম্নতর সোর্বিয়ান + দুয়ালা + মধ্য ডাচ + দিবেহি + ডিউলা + ভুটানি + ইউই + এফিক + প্রাচীন মিশরীয় + ইকাজুক + গ্রিক + এলামাইট + ইংরেজি + অস্ট্রেলীয় ইংরেজি + কানাডীয় ইংরেজি + ব্রিটিশ ইংরেজি + যুক্তরাজ্য ইংরেজি + যুক্তরাষ্ট্র ইংরেজি + যুক্তরাষ্ট্র ইংরেজি + মধ্য ইংরেজি + এস্পেরান্তো + স্পেনীয় + ল্যাটিন আমেরিকান স্প্যানিশ + ইউরোপীয় স্প্যানিশ + ম্যাক্সিকান স্প্যানিশ + এস্তোনীয় + বাস্ক + ইওন্ডো + ফার্সি + ফ্যাঙ্গ + ফান্তি + ফুলাহ্ + ফিনিশ + ফিলিপিনো + ফিজিও + ফেরাউনি + ফন + ফরাসি + কানাডীয় ফরাসি + সুইস ফরাসি + মধ্য ফরাসি + প্রাচীন ফরাসি + উত্তরাঞ্চলীয় ফ্রিসিয়ান + পূর্ব ফ্রিসিয় + ফ্রিউলিয়ান + পশ্চিম ফ্রিসিয় + আইরিশ + গা + গায়ো + বায়া + স্কটস-গ্যেলিক + গীজ + গিলবার্টিজ + গ্যালিশিয় + মধ্য-উচ্চ জার্মানি + গুয়ারানি + প্রাচীন উচ্চ জার্মানি + গোন্ডি + গোরোন্তালো + গথিক + গ্রেবো + প্রাচীন গ্রীক + সুইস জার্মান + গুজরাটি + ম্যাঙ্কস + গওইচ্’ইন + হাউসা + হাইডা + হাওয়াইয়ান + হিব্রু + হিন্দি + হিলিগ্যায়নোন + হিট্টিট + হ্‌মোঙ + হিরি মোতু + ক্রোয়েশীয় + উচ্চ সোর্বিয়ান + হাইতিয়ান + হাঙ্গেরীয় + হুপা + আর্মেনিয় + হেরেরো + ইন্টারলিঙ্গুয়া + ইবান + ইন্দোনেশীয় + ইন্টারলিঙ্গ + ইগ্‌বো + সিচুয়ান য়ি + ইনুপিয়াক + ইলোকো + ইঙ্গুশ + ইডো + আইসল্যান্ডীয় + ইতালীয় + ইনুক্টিটুট + জাপানি + লোজবান + জুদেও ফার্সি + জুদেও আরবি + জাভানি + জর্জিয়ান + কারা-কাল্পাক + কাবাইলে + কাচিন + অজ্জু + কাম্বা + কাউই + কাবার্ডিয়ান + টাইয়াপ + কোরো + কঙ্গো + খাশি + খোটানিজ + কিকু্ইয়ু + কোয়ানিয়ামা + কাজাখ + ক্যালাল্লিসুট + খমের + কিম্বুন্দু + কান্নাড়ী + কোরিয়ান + কোঙ্কানি + কোস্রাইন + ক্‌পেল্লে + কানুরি + কারচে-বাল্কার + কারেলিয়ান + কুরুখ + কাশ্মীরী + কুর্দি + কুমিক + কুটেনাই + কোমি + কর্ণিশ + কির্গিজ + লাটিন + লাডিনো + লান্ডা + লাম্বা + লুক্সেমবার্গীয় + লেজঘিয়ান + গান্ডা + লিম্বুর্গিশ + লিঙ্গালা + লাও + মোঙ্গো + লোজি + লিথুয়েনীয় + লুবা-কাটাঙ্গা + লুবা-লুলুয়া + লুইসেনো + লুন্ডা + লুয়ো + লুশাই + লাত্‌ভীয় + মাদুরেসে + মাগাহি + মৈথিলি + ম্যাকাসার + ম্যান্ডিঙ্গো + মাসাই + মোকশা + ম্যাণ্ডার + মেন্ডে + মরিসিয়ান + মালাগাসি + মধ্য আইরিশ + মার্শালিজ + মাওরি + মিকম্যাক + মিনাঙ্গ্‌কাবাউ + ম্যাসেডোনীয় + মালেয়ালাম + মঙ্গোলিয় + মাঞ্চু + মণিপুরী + মোহাওক + মসি + মারাঠি + মালে + মল্টিয় + বহুগুণিতক ভাষাসমূহ + ক্রিক + মিরান্ডিজ + মারোয়ারি + বর্মি + এরজিয়া + নাউরু + নেয়াপোলিটান + নরওয়ে বোকমাল + উত্তর এন্দেবিলি + নিম্ন জার্মানি + নেপালী + নেওয়ারি + এন্দোঙ্গা + নিয়াস + নিউয়ান + ডাচ + ফ্লেমিশ + নরওয়েজীয়ান নিনর্স্ক + নরওয়েজীয় + নোগাই + প্রাচীন নর্স + এন’কো + দক্ষিণ এনডেবেলে + উত্তরাঞ্চলীয় সোথো + নাভাজো + প্রাচীন নেওয়ারী + নায়াঞ্জা + ন্যায়ামওয়েজি + ন্যায়াঙ্কোলে + ন্যোরো + এন্.জিমা + অক্সিটান + ওজিবওয়া + অরোমো + ওড়িয়া + ওসেটিক + ওসেজ + অটোমান তুর্কি + পাঞ্জাবী + পাঙ্গাসিনান + পাহ্লাভি + পাম্পাঙ্গা + পাপিয়ামেন্টো + পালায়ুয়ান + প্রাচীন ফার্সি + ফোনিশীয়ান + পালি + পোলিশ + পোহ্নপেইয়ান + প্রাচীন প্রোভেনসাল + পশ্তু + পুশতো + পর্তুগীজ + ব্রাজিলীয় পর্তুগীজ + ইউরোপিয় পর্তুগীজ + কেচুয়া + রাজস্থানী + রাপানুই + রারোটোংগান + রোমান্স + রুন্দি + রোমানীয় + মলদাভিয় + রোমানি + মূল + রুশ + আরোমানিয় + কিনয়ারোয়ান্ডা + সংষ্কৃত + স্যান্ডাওয়ে + ইয়াকুট + সামারিটান আরামিক + সাসাক + সাঁওতালি + সার্ডিনিয়ান + সিসিলিয়ান + স্কটস + সিন্ধি + উত্তরাঞ্চলীয় সামি + সেল্কুপ + সাঙ্গো + প্রাচীন আইরিশ + সার্বো-ক্রোয়েশিয় + শান + সিংহলী + সিডামো + স্লোভাক + স্লোভেনীয় + সামোয়ান + দক্ষিণাঞ্চলীয় সামি + লুলে সামি + ইনারি সামি + স্কোল্ট সামি + শোনা + সোনিঙ্কে + সোমালী + সোগডিয়ান + আলবেনীয় + সার্বীয় + স্রানান টোঙ্গো + সেরের + সোয়াতি + দক্ষিন সোথো + সুদানী + সুকুমা + সুসু + সুমেরীয় + সুইডিশ + সোয়াহিলি + কমোরিয়ান + প্রাচীন সিরিও + সিরিয়াক + তামিল + তেলেগু + টাইম্নে + তেরেনো + তেতুম + তাজিক + থাই + তিগরিনিয়া + টাইগ্রে + টিভ + তুর্কমেনী + টোকেলাউ + তাগালগ + ক্লিঙ্গন + ত্লিঙ্গিট + তামাশেক + সোয়ানা + টোঙ্গান + নায়াসা টোঙ্গা + টোক পিসিন + তুর্কী + সঙ্গা + সিমশিয়ান + তাতার + তুম্বুকা + টুভালু + টোয়াই + তাহিতিয়ান + টুভিনিয়ান + উডমুর্ট + উইগুর + উগারিটিক + ইউক্রেনীয় + উম্বুন্দু + অজানা ভাষা + উর্দু + উজবেকীয় + ভাই + ভেন্ডা + ভিয়েতনামী + ভোলাপুক + ভোটিক + ওয়ালুন + ওয়ালামো + ওয়ারে + ওয়াশো + উওলোফ + কাল্মইক + জোসা + ইয়াও + ইয়াপেসে + য়িদ্দিশ + ইওরুবা + ক্যানটোনীজ + ঝু্য়াঙ + জাপোটেক + চিত্র ভাষা + জেনাগা + আদর্শ মরক্কোন তামাজিগাত + চীনা + সরলীকৃত চীনা + ঐতিহ্যবাহি চীনা + জুলু + জুনি + ভাষাতাত্তিক বিষয়সূচী বহির্ভুত + জাজা + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + পৃথিবী + আফ্রিকা + উত্তর আমেরিক + দক্ষিন আমেরিকা + ওসানিয়া + পশ্চিমাঞ্চলীয় আফ্রিকা + মধ্য আমেরিকা + পূর্ব আফ্রিকা + উত্তর আফ্রিকা + মধ্য আফ্রিকা + দক্ষিণাঞ্চলীয় আফ্রিকা + আমেরিকাস + উত্তরাঞ্চলীয় আমেরিকা + ক্যারাবিয়ান + পূর্ব এশিয়া + দক্ষিণাঞ্চলীয় এশিয়া + দক্ষিন পূর্ব এশিয়া + দক্ষিণাঞ্চলীয় ইউরোপ + অস্ট্রেলিয়া এবং নিউজিল্যান্ড + ম্যালেনেশিয়া + ম্যালেনিশা অঞ্চল + পলিনেশিয়া + এশিয়া + মধ্য এশিয়া + পশ্চিমাঞ্চলীয় এশিয়া + ইউরোপ + পূর্ব ইউরোপ + উত্তরাঞ্চলীয় ইউরোপ + পশ্চিমাঞ্চলীয় ইউরোপ + ল্যাটিন আমেরিকা + অ্যাসসেনশন আইল্যান্ড + এ্যান্ডোরা + সংযুক্ত আরব আমিরাত + আফগানিস্তান + এন্টিগুয়া ও বারবুডা + এ্যাঙ্গুইলা + আলব্যানিয়া + আর্মেনিয়া + নেদারল্যান্ডস এ্যান্টিলিস + এ্যাঙ্গোলা + অ্যান্টার্কটিকা + আর্জেণ্টাইনা + আমেরিকান সামোয়া + অস্ট্রিয়া + অস্ট্রেলিয়া + আরুবা + আলান্ড দ্বীপপুঞ্জ + আজারবাইজান + বসনিয়া ও হার্জেগোভিনা + বারবাদোস + বাংলাদেশ + বেলজিয়াম + বুরকিনা ফাসো + বুলগেরিয়া + বাহরাইন + বুরুন্ডি + বেনিন + সেন্ট বারথেলিমি + বারমুডা + ব্রুনেই + বোলিভিয়া + ক্যারিবিয়ান নেদারল্যান্ডস + ব্রাজিল + বাহামা দ্বীপপুঞ্জ + ভুটান + বোভেট দ্বীপ + বতসোয়ানা + বেলোরুশিয়া + বেলিয + কানাডা + কোকোস দ্বীপপুঞ্জ + কঙ্গো - কিনসাসা + কঙ্গো(DRC) + মধ্য আফ্রিকান প্রজাতন্ত্র + কঙ্গো - ব্রাজাভিল + কঙ্গো (প্রজাতন্ত্র) + সুইজারল্যান্ড + আইভরি কোস্ট + কুক দ্বীপপুঞ্জ + চিলি + ক্যামেরুন + চীন + কোলোম্বিয়া + ক্লিপারটন আইল্যান্ড + কোস্টারিকা + কিউবা + কেপভার্দে + কুরাসাও + ক্রিসমাস দ্বীপ + সাইপ্রাস + চেক প্রজাতন্ত্র + জার্মানি + দিয়েগো গার্সিয়া + জিবুতি + ডেনমার্ক + ডোমিনিকা + ডোমেনিকান প্রজাতন্ত্র + এলজিরিয়া + কুউটা এবং মেলিলা + ইকুয়েডর + এস্তোনিয়া + মিশর + পশ্চিমী সাহারা + ইরিত্রিয়া + স্পেন + ইফিওপিয়া + ইউরোপীয় ইউনিয়ন + ফিনল্যান্ড + ফিজি + ফকল্যান্ড দ্বীপপুঞ্জ + ফকল্যান্ড আইল্যান্ড ( ইসল্যাস মাসভেনিস) + মাইক্রোনেশিয়া + ফ্যারও দ্বীপপুঞ্জ + ফ্রান্স + গ্যাবন + যুক্তরাজ্য + U.K. + গ্রেনাডা + জর্জিয়া + ফরাসী গায়ানা + গ্রাঞ্জি + ঘানা + জিব্রাল্টার + গ্রীনল্যান্ড + গাম্বিয়া + গিনি + গুয়াদেলৌপ + নিরক্ষীয় গিনি + গ্রীস্ + দক্ষিণ জর্জিয়া ও দক্ষিণ স্যান্ডউইচ দ্বীপপুঞ + গোয়াটিমালা + গুয়াম + গিনি-বিসাউ + গিয়ানা + হংকং এসএআর চীনা + হংকং + হার্ড দ্বীপ এবং ম্যাকডোনাল্ড দ্বীপপুঞ্জ + হণ্ডুরাস + ক্রোয়েশিয়া + হাইতি + হাঙ্গেরি + ক্যানারি দ্বীপপুঞ্জ + ইন্দোনেশিয়া + আয়ার্লণ্ড + ইস্রায়েল + আইল অফ ম্যান + ভারত + ব্রিটিশ ভারত মহাসাগরীয় অঞ্চল + ইরাক + ইরান + আইসলণ্ড + ইতালী + জার্সি + জ্যামেকা + জর্ডন + জাপান + কেনিয়া + কির্গিজিয়া + কাম্বোজ + কিরিবাতি + কমোরোস + সেন্ট কিটস ও নেভিস + উত্তর কোরিয়া + দক্ষিণ কোরিয়া + কুয়েত + কেম্যান দ্বীপপুঞ্জ + কাজাকস্থান + লাওস + লেবানন + সেন্ট লুসিয়া + লিচেনস্টেইন + শ্রীলঙ্কা + লাইবেরিয়া + লেসোথো + লিত্ভা + লাক্সেমবার্গ + লাত্ভিয়া + লিবিয়া + মোরক্কো + মোনাকো + মোল্দাভিয়া + মন্টিনিগ্রো + সেন্ট মার্টিন + মাদাগাস্কার + মার্শাল দ্বীপপুঞ্জ + ম্যাসাডোনিয়া + মেসিডোনিয়া(FYROM) + মালি + মায়ানমার (বার্মা) + মঙ্গোলিয়া + ম্যাকাও এসএআর চীনা + ম্যাকাও + উত্তরাঞ্চলীয় মারিয়ানা দ্বীপপুঞ্জ + মার্টিনিক + মরিতানিয়া + মন্টসেরাট + মাল্টা + মরিশাস + মালদ্বীপ + মালাউই + মক্সিকো + মাল্যাশিয়া + মোজাম্বিক + নামিবিয়া + নিউ ক্যালেডোনিয়া + নাইজার + নিরফোক দ্বীপ + নাইজেরিয়া + নিকারাগুয়া + নেদারল্যান্ডস + নরওয়ে + নেপাল + নাউরু + নিউয়ে + নিউ জিলণ্ড + ওমান + পানামা + পিরু + ফরাসী পলিনেশিয়া + পাপুয়া নিউ গিনি + ফিলিপাইন + পাকিস্তান + পোল্যাণ্ড + সেন্ট পিয়ের ও মিকুয়েলন + পিটকেয়ার্ন দ্বীপপুঞ্জ + পুয়ের্টোরিকো + ফিলিস্তিন অঞ্চলসমূহ + ফিলিস্তিন + পর্তুগাল + পালাউ + প্যারাগোয়ে + কাতার + আউটলাইনিং ওসানিয়া + রিইউনিয়ন + রুমানিয়া + সারবিয়া + রাশিয়া + রুয়ান্ডা + সাউদি আরব + সলোমন দ্বীপপুঞ্জ + সিসিলি + সুদান + সুইডেন + সিঙ্গাপুর + সেন্ট হেলেনা + স্লোভানিয়া + স্বালবার্ড ও জান মেয়েন + শ্লোভাকিয়া + সিয়েরালিওন + সান মারিনো + সেনেগাল + সোমালি + সুরিনাম + দক্ষিন সুদান + সাওটোমা ও প্রিন্সিপি + এল সালভেদর + সিন্ট মার্টেন + সিরিয়া + সোয়াজিল্যান্ড + ট্রিস্টান ডা কুনা + তুর্কস ও কাইকোস দ্বীপপুঞ্জ + চাদ + ফরাসী দক্ষিণাঞ্চল + টোগো + থাই + তাজিকস্থান + টোকেলাউ + পূর্ব-তিমুর + পূর্ব টিমোর + তুর্কমেনিয়া + টিউনিস্ + টোঙ্গা + তুরস্ক + ত্রিনিনাদ ও টোব্যাগো + টুভালু + তাইওয়ান + তাঞ্জানিয়া + ইউক্রেইন + উগান্ডা + যুক্তরাষ্ট্রের পার্শ্ববর্তী দ্বীপপুঞ্জ + মার্কিন যুক্তরাষ্ট্র + U.S. + উরুগোয়ে + উজ্বেকিস্থান + ভ্যাটিকান সিটি + সেন্ট ভিনসেন্ট ও দ্যা গ্রেনাডিনস + ভেনেজুয়েলা + ব্রিটিশ ভার্জিন দ্বীপপুঞ্জ + মার্কিন ভার্জিন দ্বীপপুঞ্জ + ভিয়েতনাম + ভানুয়াটু + ওয়ালিস ও ফুটুনা + সামোয়া + কসোভো + ইমেন + মায়োত্তে + দক্ষিণ আফ্রিকা + জাম্বিয়া + জিম্বাবুয়ে + অজানা স্থান + + + পিনইন রোমানাইজেশন + ওয়াদে-গিলেস রোমানাইজেশন + + + বর্ষপঞ্জী + প্রতীক বাছাইকরণ উপেক্ষা করুন + বিপরীত করা স্বরাঘাত বাছাইকরণ + বড়হাতের/ছোটহাতের অক্ষর ক্রম + কেস সংবেদী বাছাইকরণ + কানা বাছাইকরণ + বাছাই বিন্যাস + স্বাভাবিককৃত বাছাইকরণ + সংখ্যাসূচক বাছাইকরণ + বাছাইকরণ শক্তি + মুদ্রা + সংখ্যাসমূহ + সময় জোন + স্থানীয় ভিন্নতা + প্রতীক হিসেবে বাছাই করুন + বক্তিগত- ব্যবহার + + + আরবি-ভারতীয় সংখ্যা + প্রসারিত আরবি -ভারতীয় সংখ্যা + আর্মেনীয় সংখ্যা + আর্মেনীয় ছোটহাতের সংখ্যা + বাংলা সংখ্যা + প্রথাগত চীনা সজ্জাক্রম - বিগ৫ + বৌদ্ধ বর্ষপঞ্জী + চীনা বর্ষপঞ্জী + কপটিক ক্যালেন্ডার + দেবনাগরি সংখ্যা + অভিধান বাছাই বিন্যাস + ডিফল্ট ইউনিকোড বাছাই বিন্যাস + ইথীয়োপিক সংখ্যা + ইথিওপিক ক্যালেন্ডার + ইথিওপিও আমেতে আলেম ক্যালেন্ডার + অর্থনৈতিক সংখ্যাসূচক + পূর্ণ চওড়া সংখ্যা + সাধারণ চীনা সজ্জাক্রম - জিবি২৩১২ + জর্জিয়ান সংখ্যা + গ্রিগোরিয়ান বর্ষপঞ্জী + গ্রিক সংখ্যা + গ্রীক ছোট হাতের সংখ্যা + গুজরাতি শংখ্যা + গুরুমুখি সংখ্যা + চৈনিক দশমিক সংখ্যা + সরলিকৃত চৈনিক সংখ্যা + সরলিকৃত চৈনিক আর্থিক সংখ্যা + ঐতিহ্যাবাহী চৈনিক সংখ্যা + ঐতিহ্যবাহী চৈনিক আর্থিক সংখ্যা + হিব্রু সংখ্যা + হিব্রু বর্ষপঞ্জী + সমস্ত বাছাই করুন + ভারতীয় জাতীয় বর্ষপঞ্জী + ইসলামিক বর্ষপঞ্জী + ইসলামিক-সিভিল বর্ষপঞ্জী + জাপানি বর্ষপঞ্জী + জাপানি সংখ্যা + জাপানি আর্থিক সংখ্যা + খেমের সংখ্যা + কান্নাডা শংখ্যা + লাও সংখ্যা + পশ্চিমি শংখ্যা + প্রথমে ছোট হাতের অক্ষর বাছাই করুন + মালয়ালম শংখ্যা + মঙ্গোলীয় সংখ্যা + মায়ানমার সংখ্যা + স্থানীয় সংখ্যা + স্বরাঘাত সাধারণতভাবে বাছাই করুন + সাধারন কেস ক্রম বাছাই করুন + কেস অসংবেদী বাছাই করুন + কানা আলাদাভাবে বাছাই করুন + স্বাভাবিক ছাড়া বাছাই করুন + সংখ্যা পৃথকভাবে বাছাই করুন + প্রতীক বাছাই করুন + ওড়িয়া শংখ্যা + ফারসি ক্যালেন্ডার + ফোনবুক সজ্জাক্রম + ধ্বনি নির্দেশক বাছাই ক্রম + পিনিন সজ্জাক্রম + কেবল বুনিয়াদি বর্ণ বাছাই করুন + স্বরাঘাত/কেস/প্রস্থ/কানা বাছাই করুন + রিফর্মড বাছাই বিন্যাস + গণপ্রজাতন্ত্রী চীনা বর্ষপঞ্জী + রোমান সংখ্যা + রোমান ছোটহাতের সংখ্যা + সাধারণ-উদ্দেশ্যে অনুসন্ধান + হাঙ্গুল প্রাথমিক ব্যঞ্জনবর্ণ দ্বারা অনুসন্ধান করুন + স্বরাঘাত বাছাই করুন + উপেক্ষা প্রতীক বাছাই করুন + আদর্শ বাছাই বিন্যাস + আবর্তিত সজ্জাক্রম + ঐতিহ্যবাহী তামিল সংখ্যা + তামিল সংখ্যা + তেলুগু সংখ্যা + স্বরাঘাত/কেস/প্রস্থ বাছাই করুন + থাই সংখ্যা + তিব্বতি সংখ্যা + প্রথাগত সজ্জাক্রম + ঐতিহ্যগত সংখ্যাসূচক + রাডিকেল স্ট্রোক বাছাই বিন্যাস + প্রথমে বড়হাতের অক্ষর বাছাই করুন + ভাই সংখ্যা + স্বরাঘাত বিপরীত বাছাই করুন + কেস সংবেদী বাছাই করুন + কানা ভিন্নভাবে বাছাই করুন + স্বাভাবিকৃত ইউনিকোড বাছাই করুন + সংখ্যা সংখ্যাসূচকভাবে বাছাই করুন + + + BGN + সাংখিক + স্বরভঙ্গি + UNGEGN + অ্যাসেন্টস + পূর্ণচওড়া + অর্ধচওড়া + জ্যামো + পিনইন + প্রকাশনা + + + মেট্রিক + ইউকে + মার্কিন + + + ভাষা: {0} + লিপি: {0} + অঞ্চল: {0} + + + + [\u09BC ৺ অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ ং ঃ \u0981 ক {ক\u09CDষ} খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড {ড\u09BC} ঢ {ঢ\u09BC} ণ ত ৎ থ দ ধ ন প ফ ব ভ ম য {য\u09BC} র ল শ ষ স হ ঽ া ি ী \u09C1 \u09C2 \u09C3 \u09C4 \u09E2 \u09E3 ে ৈ ো ৌ \u09CD ৗ] + [\u200C\u200D ৲ ৳ ৴ ৵ ৶ ৷ ৸ ৹ ৰ ৱ] + [অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ক {ক\u09CDষ} খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল শ ষ স হ] + {0} … + … {0} + {0} … {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM y G + d MMM, y G + E, d MMM, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d-M + dd-MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y G + y G + M/y G + d/M/y G + E, d/M/y G + MM-y G + MMM y G + d MMM, y G + E, d MMM, y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M-M + + + d/M - d/M + d/M - d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + LLL-LLL + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y-y G + + + M/y – M/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d–d MMM, y G + d MMM – d MMM, y G + d MMM, y – d MMM, y G + + + E, d MMM – E, d MMM, y G + E, d MMM – E, d MMM, y G + E, d MMM, y – E, d MMM, y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + জানুয়ারী + ফেব্রুয়ারী + মার্চ + এপ্রিল + মে + জুন + জুলাই + আগস্ট + সেপ্টেম্বর + অক্টোবর + নভেম্বর + ডিসেম্বর + + + জা + ফে + মা + + মে + জুন + জু + + সে + + + ডি + + + জানুয়ারী + ফেব্রুয়ারী + মার্চ + এপ্রিল + মে + জুন + জুলাই + আগস্ট + সেপ্টেম্বর + অক্টোবর + নভেম্বর + ডিসেম্বর + + + + + জানুয়ারী + ফেব্রুয়ারী + মার্চ + এপ্রিল + মে + জুন + জুলাই + আগস্ট + সেপ্টেম্বর + অক্টোবর + নভেম্বর + ডিসেম্বর + + + জা + ফে + মা + + মে + জুন + জু + + সে + + + ডি + + + জানুয়ারী + ফেব্রুয়ারী + মার্চ + এপ্রিল + মে + জুন + জুলাই + আগস্ট + সেপ্টেম্বর + অক্টোবর + নভেম্বর + ডিসেম্বর + + + + + + + রবি + সোম + মঙ্গল + বুধ + বৃহস্পতি + শুক্র + শনি + + + + সো + + বু + বৃ + শু + + + + রঃ + সোঃ + মঃ + বুঃ + বৃঃ + শুঃ + শোঃ + + + রবিবার + সোমবার + মঙ্গলবার + বুধবার + বৃহষ্পতিবার + শুক্রবার + শনিবার + + + + + রবি + সোম + মঙ্গল + বুধ + বৃহস্পতি + শুক্র + শনি + + + + সো + + বু + বৃ + শু + + + + রঃ + সোঃ + মঃ + বুঃ + বৃঃ + শুঃ + শোঃ + + + রবিবার + সোমবার + মঙ্গলবার + বুধবার + বৃহষ্পতিবার + শুক্রবার + শনিবার + + + + + + + চতুর্থাংশ ১ + চতুর্থাংশ ২ + চতুর্থাংশ ৩ + চতুর্থাংশ ৪ + + + + + + + + + প্রথম চতুর্থাংশ + দ্বিতীয় চতুর্থাংশ + তৃতীয় চতুর্থাংশ + চতুর্থ চতুর্থাংশ + + + + + চতুর্থাংশ ১ + চতুর্থাংশ ২ + চতুর্থাংশ ৩ + চতুর্থাংশ ৪ + + + + + + + + + প্রথম চতুর্থাংশ + দ্বিতীয় চতুর্থাংশ + তৃতীয় চতুর্থাংশ + চতুর্থ চতুর্থাংশ + + + + + + + পূর্বাহ্ণ + অপরাহ্ণ + + + পূর্বাহ্ণ + অপরাহ্ণ + + + + + + খ্রিস্টপূর্ব + খৃষ্টাব্দ + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM, y G + E, d MMM, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d-M + dd-MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + MMM y + d MMM, y + E, d MMM, y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M-M + + + d/M - d/M + d/M - d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + LLL-LLL + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y-y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + চৈত্র + বৈশাখ + জৈষ্ঠ্য + আষাঢ় + শ্রাবণ + ভাদ্র + আশ্বিন + কার্তিক + অগ্রহায়ণ + পৌষ + মাঘ + ফাল্গুন + + + + + + + + + + + + + + ১০ + ১১ + ১২ + + + + + + সাল + + + + + + + + মহররম + সফর + রবিউল আউয়াল + রবিউস সানি + জমাদিউল আউয়াল + জমাদিউস সানি + রজব + শা'বান + রমজান + শাওয়াল + জ্বিলকদ + জ্বিলহজ্জ + + + + + + + + + + + + + + ১০ + ১১ + ১২ + + + + + + যুগ + + + + + + + যুগ + + + বছর + গত বছর + এই বছর + পরের বছর + + {0} বছরে + {0} বছরে + + + {0} বছর পূর্বে + {0} বছর পূর্বে + + + + মাস + গত মাস + এই মাস + পরের মাস + + {0} মাসে + {0} মাসে + + + {0} মাস পূর্বে + {0} মাস পূর্বে + + + + সপ্তাহ + গত সপ্তাহ + এই সপ্তাহ + পরের সপ্তাহ + + {0} সপ্তাহে + {0} সপ্তাহে + + + {0} সপ্তাহ পূর্বে + {0} সপ্তাহ পূর্বে + + + + দিন + গত পরশু + গতকাল + আজ + আগামীকাল + আগামী পরশু + + {0} দিনের মধ্যে + {0} দিনের মধ্যে + + + {0} দিন পূর্বে + {0} দিন পূর্বে + + + + সপ্তাহের দিন + + + গত রবিবার + এই রবিবার + পরের রবিবার + + + গত সোমবার + এই সোমবার + পরের সোমবার + + + গত মঙ্গলবার + এই মঙ্গলবার + পরের মঙ্গলবার + + + গত বুধবার + এই বুধবার + পরের বুধবার + + + গত বৃহস্পতিবার + এই বৃহস্পতিবার + পরের বৃহস্পতিবার + + + গত শুক্রবার + এই শুক্রবার + পরের শুক্রবার + + + গত শনিবার + এই শনিবার + পরের শনিবার + + + পূর্বাহ্ণ/অপরাহ্ণ + + + ঘন্টা + + {0} ঘন্টায় + {0} ঘন্টায় + + + {0} ঘন্টা আগে + {0} ঘন্টা আগে + + + + মিনিট + + {0} মিনিটে + {0} মিনিটে + + + {0} মিনিট পূর্বে + {0} মিনিট পূর্বে + + + + সেকেন্ড + এখন + + {0} সেকেন্ডে + {0} সেকেন্ডে + + + {0} সেকেন্ড পূর্বে + {0} সেকেন্ড পূর্বে + + + + এলাকা + + + + +HH:mm;-HH:mm + GMT {0} + গ্রীনিচ মান সময় + {0} সময় + {0} দিবালোক সময় + {0} আদর্শ সময় + {1} ({0}) + + অজানা শহর + + + অ্যান্ডোরা + + + দুবাই + + + কাবুল + + + অ্যান্টিগুয়াগা + + + অ্যাঙ্গুইলা + + + তিরানা + + + ইয়েরাভান + + + লোয়ান্ডা + + + রথেরা + + + পামার + + + সিওয়া + + + মসোন + + + ডেভিস + + + ভস্টোক + + + কেইসি + + + ডুমন্ট ডি’উরভিল + + + ম্যাকমুর্ডো + + + রিও গায়েগোস + + + মেন্ডোজা + + + সান হুয়ান + + + উশুয়াইয়া + + + লা রিওহা + + + সান লুইস + + + ক্যাটামার্কা + + + স্যালটা + + + হুহুই + + + টুকুমান + + + কর্ডোবা + + + বুয়েনোস আয়েরেস + + + প্যাগো প্যাগো + + + ভিয়েনা + + + পার্থ + + + ইউক্লা + + + ডারউইন + + + এ্যাডেলেইড + + + ব্রোকেন হিল + + + কিউরি + + + মেলবার্ন + + + হোবার্ট + + + লিনডেম্যান + + + সিডনি + + + ব্রিসবেন + + + ম্যাককুয়্যারি + + + লর্ড হাও + + + এরুবা + + + মরিয়েহামেন + + + বাকু + + + সারাজিভো + + + বার্বাডোজ + + + ঢাকা + + + ব্রাসেলস + + + ওয়াহগুডোগু + + + সোফিয়া + + + বাহরিন + + + বুজুমবুরহু + + + পোর্টো-নোভো + + + সেন্ট.বার্থেলেমি + + + বারমুডা + + + ব্রুনেই + + + লা পাজ + + + ক্রেলেন্ডাজিক + + + আইরুনেপে + + + রিও ব্রাঙ্কো + + + পোর্তো ভেল্‌হো + + + বোয়া ভিস্তা + + + মানাউস + + + কুইয়াবা + + + সেনটুরেম + + + কাম্পো গ্রান্ডে + + + বেলেম + + + আরাগুয়াইনা + + + সাও পাউলো + + + বাহিয়া + + + ফোর্টালেজা + + + মাসেয়ো + + + রেসিফে + + + নরোন্‌হা + + + নাসাউ + + + থিম্ফু + + + গ্যাবুরনি + + + মিন্সক + + + বেলিজ + + + ডসোন + + + হো্য়াইট হর্স + + + ইনুভ্যাক + + + ভ্যাঙ্কুভার + + + ডসোন ক্রিক + + + ক্রিস্টান + + + ইয়েলোনাইফ + + + এডমন্টোন + + + সুইফ্ট কারেন্ট + + + কেমব্রিজ বে + + + রেজিনা + + + উইনিপেগ + + + রেসোলুট + + + রেইনি রিভার + + + র‌্যাঙ্কিন ইনলেট + + + কোরাল হার্বার + + + থান্ডার বে + + + নিপিগোন + + + টোরন্টো + + + ইকুয়ালুইট + + + প্যাঙ্গনির্টুং + + + মঙ্কটোন + + + হ্যালিফ্যাক্স + + + গুস বে + + + গ্লাস বে + + + ব্লাঙ্ক-সাব্লোন + + + সেন্ট জন্স + + + কোকোস + + + কিনশাসা + + + লুবুম্বাশি + + + বাঙ্গি + + + ব্রাজউহভিল + + + জুরিখ + + + আবিদজান + + + রারউহতুঙ্গা + + + ইস্টার + + + সান্টিয়াগো + + + ডোয়ালা + + + ক্যাশগার + + + উরুমকি + + + চোঙকিং + + + সাংঘাই + + + হার্বিন + + + বোগোটা + + + কোস্টারিকা + + + হাভানা + + + কেপ ভার্দ + + + কুরাসাও + + + বড়দিন + + + নিকোসিয়া + + + প্রাগ + + + বুসিনগেন + + + বার্লিন + + + জিবুটি + + + কোপেনহেগেন + + + ডোমিনিকা + + + স্যান্টো ডোমিংগো + + + আলজিয়ার্স + + + গ্যালাপ্যাগোস + + + গোয়াইয়াকিল + + + তাহলিন + + + কায়রো + + + এল আহইউন + + + অ্যাসমারাহু + + + কানেরি + + + সেউটা + + + মাদ্রিদ + + + আদ্দিস আবাবা + + + হেলসিঙ্কি + + + ফিজি + + + স্টানলী + + + ট্রুক + + + পোনাপে + + + কোসরায় + + + ফ্যারো + + + প্যারিস + + + লিব্রুভিল + + + + ব্রিটিশ গ্রীষ্মকালীন সময় + + লন্ডন + + + গ্রেনাডা + + + তুবুলিসি + + + কাহেন + + + গেরেনজি + + + আক্রা + + + জিব্রাল্টার + + + থুলি + + + নুক + + + ইটকুয়োরটুরমিট + + + ডানমার্কশ্যাভন + + + বাঞ্জুল + + + কনাক্রি + + + গুয়াদেলোপ + + + মালাবো + + + এথেন্স + + + দক্ষিণ জর্জিয়া + + + গুয়াতেমালা + + + গুয়াম + + + বিসোউ + + + গায়ানা + + + হং কং + + + তেগুসিগালপা + + + জাগ্রেব + + + পোর্ট-অহ-প্রিন্স + + + বুডাপেস্ট + + + জাকার্তা + + + পন্টিয়ান্যাক + + + মাকাসসার + + + জয়াপুরা + + + + আইরিশ গ্রীষ্মকালীন সময় + + ডাবলিন + + + জেরুজালেম + + + আইল অফ ম্যান + + + কলকাতা + + + ছাগোস + + + বাগদাদ + + + তেহেরান + + + রিকজাভিক + + + রোম + + + জার্সি + + + জামাইকা + + + আম্মান + + + টোকিও + + + নাইরোবি + + + বিশকেক + + + নম পেন + + + এন্ডারবারি + + + কিরিতিমাতি + + + টারাওয়া + + + কোমোরো + + + সেন্ট. কিটস + + + পিয়ংইয়ং + + + সোল + + + কুয়েত + + + কামেন + + + আকটাউ + + + ওরাল + + + আকটোবে + + + কিজিলর্ডা + + + আলমাটি + + + ভিয়েনতায়েন + + + বেইরুট + + + সেন্ট. লুসিয়া + + + ভাদুজ + + + কলম্বো + + + মনরোভিয়া + + + মাহসুরু + + + ভিলনিওস + + + লুক্সেমবার্গ + + + রিগা + + + ত্রিপোলি + + + কাসাব্লাঙ্কা + + + মোনাকো + + + কিসিনাহু + + + পডগরিত্সা + + + মারিগো + + + আন্তুনানারিভো + + + কোয়াজালেইন + + + মাজুরো + + + স্কপয়ে + + + বাম্যাকো + + + রেঙ্গুন + + + হোভ্ড + + + উলানবাতার + + + চোইবাল্‌স্যান + + + ম্যাকাও + + + সাইপান + + + মারটিনিক + + + নোয়াকশট + + + মন্তসেরাত + + + মল্টা + + + মরিশাস + + + মালদ্বীপ + + + ব্ল্যানটায়ের + + + তিয়াওয়ানা + + + সান্তা ইসাবেল + + + হারমোসিল্লো + + + মাজাটলান + + + চিহুয়াহুয়া + + + বাহিয়া বানড্রাস + + + ওজিঙ্গা + + + মন্টেরি + + + মেক্সিকো সিটি + + + মাতামোরস + + + মেরিডা + + + ক্যানকুন + + + কুয়ালালামপুর + + + কুচিং + + + মাপুতো + + + উইনধোক + + + নুমিয়া + + + নিয়ামে + + + নরফক + + + লাগোস + + + মানাগুয়া + + + আমস্টারডাম + + + অসলো + + + কাঠমান্ডু + + + নাউরু + + + নিউয়ি + + + চ্যাঠাম + + + অকল্যান্ড + + + মাসকাট + + + পানামা + + + লিমা + + + তাহিতি + + + মার্কেসাস + + + গাম্বিয়ের + + + পোর্ট মৌরজবি + + + ম্যানিলা + + + করাচি + + + ওয়ারশ + + + মিকুলন + + + পিটকেয়ার্ন + + + পুয়েরতো রিকো + + + গাজা + + + হেব্রোন + + + আজোরেস + + + মাডেইরা + + + লিসবন + + + পালাউ + + + আসুনসিয়ন + + + কাতার + + + রিইউনিয়ন + + + বুখারেস্ট + + + বেলগ্রেড + + + কালিনিঙগ্রাড + + + মস্কো + + + ভোল্গোগ্রাদ + + + সামারা + + + ইয়েকাটেরিনবার্গ + + + ওম্স্ক + + + নভোসিবির্স্ক + + + নভকুয়েতস্নক + + + ক্রাসনোইয়ার্স্ক + + + ইর্কুট্স্ক + + + ইয়াকুট্স্ক + + + ভ্লাদিভস্তোক + + + খানডিয়াগা + + + সাখালিন + + + উস্ত- নেরা + + + ম্যাগাডান + + + কামচাটকা + + + অ্যানাডির + + + কিগালি + + + রিয়াধ + + + গোয়াদালকুনাল + + + মাহে + + + খার্তুম + + + স্টকহোম + + + সিঙ্গাপুর + + + সেন্ট. হেলেনা + + + লুবলিয়ানা + + + লঞ্জিয়বিয়েঁন + + + ব্রাতিস্লাভা + + + ফ্রীটাউন + + + সান মেরিনো + + + ডাকার + + + মাওগাদিসু + + + প্যারামেরিবো + + + জুবা + + + সাও টোম + + + এল সালভাদোর + + + লোয়ার প্রিন্সেস কোয়ার্টার + + + দামাস্কাস + + + অমবাবান + + + গ্র্যান্ড তুর্ক + + + এনজমেনা + + + কার্গুলেন + + + লোমায় + + + ব্যাংকক + + + দুশানবে + + + ফ্যাকাওফো + + + দিলি + + + আশগুবাদ + + + টিউনিস + + + টোঙ্গাটাপু + + + ইস্তানবুল + + + পোর্ট অফ স্পেন + + + ফুনাফুটি + + + তাইপেই + + + দার এস সালাম + + + উঝগোরোড + + + কিয়েভ + + + সিমফেরোপোল + + + জাপোরোঝা + + + কামপালা + + + মিডওয়ে + + + জনস্টন + + + ওয়েক + + + আডাক + + + নোম + + + হনোলুলু + + + এনকোরেজ + + + ইয়াকুটাট + + + শিটকা + + + জুনো + + + ম্যাকওয়ারি + + + লস এ্যাঞ্জেলেস + + + বয়জি + + + ফিনিক্স + + + ডেনভার + + + বেউলা, উত্তর ডাকোটা + + + নিউ সালেম, উত্তর ডাকোটা + + + মধ্য, উত্তর ডাকোটা + + + শিকাগো + + + মেনোমিনি + + + ভিনসেন্নেস, ইন্ডিয়ানা + + + পিটারর্সবার্গ, ইন্ডিয়ানা + + + টেলসিটি, ইন্ডিয়ানা + + + নক্স, ইন্ডিয়ানা + + + উইনাম্যাক, ইন্ডিয়ানা + + + মারেঙ্গো, ইন্ডিয়ানা + + + ইন্ডিয়ানাপোলিস + + + লুইসভিল + + + ভেভেয়, ইন্ডিয়ানা + + + মন্টিচেলো, কেন্টাকি + + + ডেট্রোইট + + + নিউইয়র্ক + + + মন্টেভিডিও + + + সমরখন্দ + + + তাসখন্দ + + + ভাটিকান + + + সেন্ট. ভিনসেন্ট + + + ক্যারাকাস + + + টরটোলা + + + সেন্ট. থমাস + + + হো চি মিন শহর + + + ইফাতে + + + ওলিস + + + আপিয়া + + + আহদেন + + + মায়োতো + + + জোহানেসবার্গ + + + লুসাকা + + + হারারে + + + + একর সময় + একর মানক সময় + একর গ্রীষ্মকাল সময় + + + + + আফগানিস্তান সময় + + + + + মধ্য আফ্রিকা সময় + + + + + পূর্ব আফ্রিকা সময় + + + + + দক্ষিণ আফ্রিকা মানক সময় + + + + + পশ্চিম আফ্রিকা সময় + পশ্চিম আফ্রিকা মানক সময় + পশ্চিম আফ্রিকা গ্রীষ্মকালীন সময় + + + + + আলাস্কা সময় + আলাস্কা মানক সময় + আলাস্কা দিবালোক সময় + + + + + আল্মাটি সময় + আল্মাটি মানক সময় + আল্মাটি গ্রীষ্মকাল সময় + + + + + অ্যামাজন সময় + আমাজন মানক সময় + অ্যামাজন গ্রীষ্মকালীন সময় + + + + + উত্তর আমিরিকা কেন্দ্রীয় সময় + উত্তর আমিরিকা কেন্দ্রীয় মানক সময় + উত্তর আমিরিকা কেন্দ্রীয় দিবালোক মসয় + + + + + উত্তর আমিরিকা পূর্বাঞ্চলীয় সময় + উত্তর আমিরিকা পূর্ব মানক সময় + উত্তর আমিরিকা পূর্ব দিবালোক সময় + + + + + উত্তর আমেরিকা মাউন্টেন সময় + উত্তর আমিরিকা মাউনটেন মানক সময় + উত্তর আমেরিকা মাউনটেন দিবালোক সময় + + + + + উত্তর আমিরিকা প্রশান্ত মহাসাগরীয় সময় + প্রশান্ত মহাসাগরীয় মানক সময় + উত্তর আমিরিকা প্রশান্ত মহাসাগরীয় দিবালোক সময় + + + + + অনদ্য্র্ সময় + অনদ্য্র্ মানক সময় + অনদ্য্র্ গ্রীষ্মকালীন সময় + + + + + আকটাও সময় + আকটাও মানক সময় + আকটাও গ্রীষ্মকাল সময় + + + + + আকটোব সময় + আকটোব মানক সময় + আকটোব গ্রীষ্মকাল সময় + + + + + আরবি সময় + আরবি মানক সময় + আরবি দিবালোক সময় + + + + + আর্জেনটিনা সময় + আর্জেনটিনা মানক সময় + আর্জেনটিনা গৃষ্মকালীন সময় + + + + + আর্জেনটিনা পশ্চিমি সময় + পশ্চিমি আর্জেনটিনা সময় + আর্জেনটিনা পশ্চিমি গৃষ্মকালীন সময় + + + + + আর্মেনিয়া সময় + আর্মেনিয়া মানক সময় + আর্মেনিয়া গ্রীষ্মকালীন সময় + + + + + অতলান্তিক সময় + অতলান্তিক মানক সময় + অতলান্তিক দিবালোক সময় + + + + + কেন্দ্রীয় অস্ট্রেলীয় সময় + অস্ট্রেলীয় কেন্দ্রীয় মানক সময় + অস্ট্রেলীয় কেন্দ্রীয় দিবালোক সময় + + + + + অস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি সময় + অস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি মানক সময় + অস্ট্রেলীয় কেন্দ্রীয় পশ্চিমি দিবালোক সময় + + + + + পূর্ব অস্ট্রেলীয় সময় + অস্ট্রেলীয় পূর্ব মানক সময় + অস্ট্রেলীয় পূর্ব দিবালোক সময় + + + + + পশ্চিমি অস্ট্রেলীয় সময় + অস্ট্রেলিয়ান পশ্চিমি মানক সময় + অস্ট্রেলীয় পশ্চিমি দিবালোক সময় + + + + + আজারবাইজান সময় + আজারবাইজান মানক সময় + আজারবাইজান গ্রীষ্মকালীন সময় + + + + + এজোরেস সময় + এজোরেস মানক সময় + এজোরেস গ্রীষ্মকালীন সময় + + + + + বাংলাদেশ সময় + বাংলাদেশ মানক সময় + বাংলাদেশ গ্রীষ্মকালীন সময় + + + + + ভুটান সময় + + + + + বোলিভিয়া সময় + + + + + ব্রাসিলিয়া সময় + ব্রাসিলিয়া মানক সময় + ব্রাসিলিয়া গৃষ্মকালীন সময় + + + + + ব্রুনেই দারুসসালাম সময় + + + + + কেপ ভার্দ সময় + কেপ ভার্দ মানক সময় + কেপ ভার্দ গ্রীষ্মকালীন সময় + + + + + চামেরো মানক সময় + + + + + চ্যাথাম সময় + চ্যাথাম মানক সময় + চ্যাথাম দিবালোক সময় + + + + + চিলি সময় + চিলি মানক সময় + চিলি গ্রীষ্মকাল সময় + + + + + চীন সময় + চীন মানক সময় + চীন দিবালোক সময় + + + + + চয়বালসন সময় + চয়বালসন মানক সময় + চয়বালসন গ্রীষ্মকালীন সময় + + + + + ক্রিসমাস দ্বীপ সময় + + + + + কোকোস দ্বীপপুঞ্জ সময় + + + + + কোলোম্বিয়া সময় + কোলোম্বিয়া মানক সময় + কোলোম্বিয়া গ্রীষ্মকালীন সময় + + + + + কুক দ্বীপপুঞ্জ সময় + কুক দ্বীপপুঞ্জ মানক সময় + কুক দ্বীপপুঞ্জ হাফ মানক সময় + + + + + কিউবা সময় + কিউবা মানক সময় + কিউবা দিবালোক সময় + + + + + ডেভিস সময় + + + + + ডুমন্ট-দ্য'উরভিলে সময় + + + + + পূর্ব টিমর সময় + + + + + ইস্টার দ্বীপ সময় + ইস্টার দ্বীপ মানক সময় + ইস্টার দ্বীপ গ্রীষ্মকালীন সময় + + + + + ইকুয়েডর সময় + + + + + মধ্য ইউরোপীয় সময় + কেন্দ্রীয় ইউরোপীয় মানক সময় + কেন্দ্রীয় ইউরোপীয় গ্রীষ্মকালীন সময় + + + + + পূর্ব ইউরোপীয় সময় + পূর্ব ইউরোপীয় মানক সময় + পূর্ব ইউরোপীয় গ্রীষ্মকালীন সময় + + + + + পশ্চিম ইওরোপীয় সময় + পশ্চিম ইওরোপীয় মানক সময় + পশ্চিম ইউরোপীয় গ্রীষ্মকালীন সময় + + + + + ফকল্যান্ড দ্বীপপুঞ্জ সময় + ফকল্যান্ড দ্বীপপুঞ্জ মানক সময় + ফকল্যান্ড দ্বীপপুঞ্জ গ্রীষ্মকালীন সময় + + + + + ফিজি সময় + ফিজি মানক সময় + ফিজি গ্রীষ্মকালীন সময় + + + + + ফরাসি গায়ানা সময় + + + + + ফরাসি দক্ষিন ও দক্ষিণ মেরুদেশীয় সময় + + + + + গালাপাগোস সময় + + + + + গ্যাম্বিয়ার সময় + + + + + জর্জিয়া সময় + জর্জিয়া মানক সময় + জর্জিয়া গ্রীষ্মকালীন সময় + + + + + গিলবার্ট দ্বীপপুঞ্জ সময় + + + + + গ্রিনউইচ মিন টাইম + + + + + পূর্ব গ্রীনল্যান্ড সময় + পূর্ব গ্রীনল্যান্ড মানক সময় + পূর্ব গ্রীনল্যান্ড গ্রীষ্মকালীন সময় + + + + + পশ্চিম গ্রীনল্যান্ড সময় + পশ্চিম গ্রীনল্যান্ড মানক সময় + পশ্চিম গ্রীনল্যান্ড গ্রীষ্মকালীন সময় + + + + + গুয়াম মান সময় + + + + + উপসাগরীয় মানক সময় + + + + + গিয়ানা সময় + + + + + হাওয়াই অ্যালিউটিয়ান সময় + হাওয়াই-আলেউত মানক সময় + হাওয়াই-আলেউত দিবালোক সময় + + + + + হং কং সময় + হং কং মানক সময় + হং কং গ্রীষ্মকালীন সময় + + + + + হোভড সময় + হোভড মানক সময় + হোভড গ্রীষ্মকালীন সময় + + + + + ভারতীয় মানক সময় + + + IST + + + + + ভারত মহাসাগর সময় + + + + + ইন্দোচীন সময় + + + + + কেন্দ্রীয় ইন্দোনেশিয়া সময় + + + + + পূর্ব ইন্দোনেশিয়া সময় + + + + + পশ্চিমী ইন্দোনেশিয়া সময় + + + + + ইরান সময় + ইরান মানক সময় + ইরান দিবালোক সময় + + + + + য়াকুটস্ক সময় + য়াকুটস্ক মানক সময় + য়াকুটস্ক গৃষ্মকালীন সময় + + + + + ইজরায়েল সময় + ইজরায়েল মানক সময় + ইজরায়েল দিবালোক সময় + + + + + জাপান সময় + জাপান মানক সময় + জাপান দিবালোক সময় + + + + + পিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি সময় + পিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি মান সময় + পিত্রেপ্যাভলস্ক- ক্যামচ্যাটস্কি গৃষ্মকালীন সময় + + + + + পূর্ব কজাকস্তান মানক সময় + + + + + পশ্চিম কজাকস্তান মানক সময় + + + + + কোরিয়ান সময় + কোরিয়ান মানক সময় + কোরিয়ান দিবালোক সময় + + + + + কসরে সময় + + + + + ক্রাসনোয়ার্স্কি সময় + ক্রাসনোয়ার্স্কি মানক সময় + ক্রাসনোয়ার্স্কি গ্রীষ্মকালীন সময় + + + + + কিরগিস্তান সময় + + + + + লঙ্কা সময় + + + + + লাইন দ্বীপপুঞ্জ সময় + + + + + লর্ড হাওয়ে সময় + লর্ড হাওয়ে মানক মসয় + লর্ড হাওয়ে দিবালোক মসয় + + + + + মাকাও সময় + মাকাও মান সময় + মাকাও গ্রীষ্মকাল সময় + + + + + ম্যাককুরি দ্বীপ সময় + + + + + ম্যাগাডান সময় + ম্যাগাডান মানক সময় + ম্যাগাডান গ্রীষ্মকালীন সময় + + + + + মালয়েশিয়া সময় + + + + + মালদ্বীপ সময় + + + + + মার্কেসাস সময় + + + + + মার্শাল দ্বীপপুঞ্জ সময় + + + + + মরিশাস সময় + মরিশাস মানক সময় + মরিশাস গ্রীষ্মকালীন সময় + + + + + মসন সময় + + + + + উলান বাতোর সময় + উলান বাতোর মানক সময় + উলান বাতোর গ্রীষ্মকালীন সময় + + + + + মস্কো সময় + মস্কো মানক সময় + মস্কো গৃষ্মকালীন সময় + + + + + মায়ানমার সময় + + + + + নাউরু সময় + + + + + নেপাল সময় + + + + + নিউ ক্যালেডোনিয়া সময় + নিউ ক্যালেডোনিয়া মানক সময় + নিউ ক্যালেডোনিয়া গ্রীষ্মকালীন সময় + + + + + নিউজিল্যান্ড সময় + নিউজিল্যান্ড মানক সময় + নিউজিল্যান্ড দিবালোক সময় + + + + + নিউফাউন্ডল্যান্ড সময় + নিউফাউন্ডল্যান্ড মানক সময় + নিউফাউন্ডল্যান্ড দিবালোক সময় + + + + + নিউই সময় + + + + + নরফোক দ্বীপপুঞ্জ সময় + + + + + নোরোনহা সময় + ফারন্যান্ডো ডে নোরোনহা সময় + ফারন্যান্ডো ডে নোরোনহা গৃষ্মকালীন সময় + + + + + উত্তর মেরিন দ্বীপপুঞ্জ সময় + + + + + নোভোসিবির্স্ক সময় + নোভোসিবির্স্ক মানক সময় + নোভোসিবির্স্ক গ্রীষ্মকালীন সময় + + + + + ওমস্ক সময় + ওমস্ক মানক সময় + ওমস্ক গৃষ্মকালীন সময় + + + + + পাকিস্তান সময় + পাকিস্তান মানক সময় + পাকিস্তান গ্রীষ্মকালীন সময় + + + + + পালাউ সময় + + + + + পাপুয়া নিউ গিনি সময় + + + + + প্যারাগুয়ে সময় + প্যারাগুয়ে মানক সময় + প্যারাগুয়ে গ্রীষ্মকালীন সময় + + + + + পেরু সময় + পেরু মানক সময় + পেরু গ্রীষ্মকালীন সময় + + + + + ফিলিপাইন সময় + ফিলিপাইন মানক সময় + ফিলিপাইন গ্রীষ্মকালীন সময় + + + + + ফোনিক্স দ্বীপপুঞ্জ সময় + + + + + সেন্ট পিয়ের ও মিকেলন সময় + সেন্ট পিয়ের ও মিকেলন মানক সময় + সেন্ট পিয়ের ও মিকেলন দিবালোক সময় + + + + + পিটকেয়ার্ন সময় + + + + + পোনাপে সময় + + + + + কিজিলোর্ডা সময় + কিজিলোর্ডা মান সময় + কিজিলোর্ডা গ্রীষ্মকাল সময় + + + + + রিইউনিয়ন সময় + + + + + রথেরা সময় + + + + + সাখালিন সময় + সাখালিন মানক সময় + সাখালিন গ্রীষ্মকালীন সময় + + + + + সামারা সময় + সামারা মান সময় + সামারা গৃষ্মকালীন সময় + + + + + সামোয়া সময় + সামোয়া মানক সময় + সামোয়া গৃষ্মকালীন সময় + + + + + সেশেলস সময় + + + + + সিঙ্গাপুর মানক সময় + + + + + সলোমন দ্বীপপুঞ্জ সময় + + + + + দক্ষিণ জর্জিয়া সময় + + + + + সুরিনাম সময় + + + + + সায়োওয়া সময় + + + + + তাহিতি সময় + + + + + তাইপেই সময় + তাইপেই মানক সময় + তাইপেই দিবালোক সময় + + + + + তাজাখাস্তান সময় + + + + + টোকেলাউ সময় + + + + + টোঙ্গা সময় + টোঙ্গা মানক সময় + টোঙ্গা গ্রীষ্মকালীন সময় + + + + + চুক সময় + + + + + তুর্কমেনিস্তান সময় + তুর্কমেনিস্তান মানক সময় + তুর্কমেনিস্তান গ্রীষ্মকালীন সময় + + + + + টুভালু সময় + + + + + উরুগুয়ে সময় + উরুগুয়ে মানক সময় + উরুগুয়ে গ্রীষ্মকালীন সময় + + + + + উজবেকিস্তান সময় + উজবেকিস্তান মানক সময় + উজবেকিস্তান গ্রীষ্মকালীন সময় + + + + + ভানুয়াতু সময় + ভানুয়াতু মানক সময় + ভানুয়াতু গ্রীষ্মকালীন সময় + + + + + ভেনেজুয়েলা সময় + + + + + ব্লাদিবোস্তোক সময় + ব্লাদিবোস্তোক মানক সময় + ব্লাদিবোস্তোক গ্রীষ্মকালীন সময় + + + + + ভলগোগ্রাড সময় + ভলগোগ্রাড মানক সময় + ভলগোগ্রাড গ্রীষ্মকালীন সময় + + + + + ভস্টক সময় + + + + + ওয়েক দ্বীপ সময় + + + + + ওয়ালিস এবং ফুটুনা সময় + + + + + য়াকুতস্ক সময় + য়াকুতস্ক মানক সময় + য়াকুতস্ক গ্রীষ্মকালীন সময় + + + + + ইয়েকাতেরিনবুর্গ সময় + ইয়েকাতেরিনবুর্গ মানক সময় + ইয়েকাতেরিনবুর্গ গ্রীষ্মকালীন সময় + + + + + + beng + + beng + + + সংখ্যা না + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##,##0.### + + + + + 0 হাজার + 0 হাজার + 00 হাজার + 00 হাজার + 0 লাখ + 0 লাখ + 0 মিলিয়ন + 0 মিলিয়ন + 00 মিলিয়ন + 00 মিলিয়ন + 000 মিলিয়ন + 000 মিলিয়ন + 0 বিলিয়ন + 0 বিলিয়ন + 00 বিলিয়ন + 00 বিলিয়ন + 000 বিলিয়ন + 000 বিলিয়ন + 0 ট্রিলিয়ন + 0 ট্রিলিয়ন + 00 ট্রিলিয়ন + 00 ট্রিলিয়ন + 000 ট্রিলিয়ন + 000 ট্রিলিয়ন + + + + + 0K + 0K + 00K + 00K + 0 লাখ + 0 লাখ + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + #,##,##0.00¤ + + + #,##,##0.00¤;(#,##,##0.00¤) + + + {0} {1} + {0} {1} + + + + এ্যান্ডোরান পেসেতা + + + সংযুক্ত আরব আমিরাত দিরহাম + সংযুক্ত আরব আমিরাত দিরহাম + সংযুক্ত আরব আমিরাত দিরহাম + + + আফগানি (১৯২৭–২০০২) + + + আফগানি + আফগানি + আফগানি + + + আলবেনিয়ান লেক + আলবেনিয়ান লেক + আলবেনিয়ান লেক + + + আরমেনিয়ান দ্রাম + আরমেনিয়ান দ্রাম + আরমেনিয়ান দ্রাম + + + নেদারল্যান্ড এ্যান্টিলিয়ান গুল্ডের + নেদারল্যান্ড এ্যান্টিলিয়ান গুল্ডের + নেদারল্যান্ড এ্যান্টিলিয়ান গুল্ডের + + + এ্যাঙ্গোলান কওয়ানজা + এ্যাঙ্গোলান কওয়ানজা + এ্যাঙ্গোলান কওয়ানজা + + + এ্যাঙ্গোলান কওয়ানজা (১৯৭৭–১৯৯০) + + + এ্যাঙ্গোলান নতুন কওয়ানজা (১৯৯৫–২০০০) + + + এ্যাঙ্গোলান কওয়ানজা (১৯৯৫–১৯৯৯) + + + আর্জেন্টিনা অস্ট্রাল + + + আর্জেন্টিনা পেসো (১৯৮৩–১৯৮৫) + + + আর্জেন্টিনা পেসো + আর্জেন্টিনা পেসো + আর্জেন্টিনা পেসো + + + অস্ট্রিয়ান শিলিং + + + অস্ট্রেলিয়ান ডলার + অস্ট্রেলিয়ান ডলার + অস্ট্রেলিয়ান ডলার + A$ + + + আরুবা গিল্ডার + আরুবা গিল্ডার + আরুবা গিল্ডার + + + আজারবাইজান মানাত (১৯৯৩–২০০৬) + + + আজারবাইজান মানাত + আজারবাইজান মানাত + আজারবাইজান মানাত + + + বসনিয়া এবং হার্জেগোভিনা দিনার + + + বসনিয়া এবং হার্জেগোভিনা মার্ক + বসনিয়া এবং হার্জেগোভিনা মার্ক + বসনিয়া এবং হার্জেগোভিনা মার্ক + + + বার্বেডোজ ডলার + বার্বেডোজ ডলার + বার্বেডোজ ডলার + + + বাংলাদেশী টাকা + বাংলাদেশী টাকা + বাংলাদেশী টাকা + + + + বেলজিয়ান ফ্রাঙ্ক (রূপান্তরযোগ্য) + + + বেলজিয়ান ফ্রাঙ্ক + + + বেলজিয়ান ফ্রাঙ্ক (আর্থিক) + + + বুলগেরীয় হার্ড লেভ + + + বুলগেরীয় নিউ লেভ + বুলগেরীয় নিউ লেভ + বুলগেরীয় নিউ লেভ + + + বাহরাইনি দিনার + বাহরাইনি দিনার + বাহরাইনি দিনার + + + বুরুন্ডি ফ্রাঙ্ক + বুরুন্ডি ফ্রাঙ্ক + বুরুন্ডি ফ্রাঙ্ক + + + বারমিউডান ডলার + বারমিউডান ডলার + বারমিউডান ডলার + + + ব্রুনেই ডলার + ব্রুনেই ডলার + ব্রুনেই ডলার + + + বলিভিয়ানো + বলিভিয়ানো + বলিভিয়ানো + + + বলিভিয়ান পেসো + + + বলিভিয়ান মভডোল + + + ব্রাজিলিয়ান ক্রুজেয়রোনোভো (১৯৬৭–১৯৮৬) + + + ব্রাজিলিয়ান ক্রুজেইডাউ + + + ব্রাজিলিয়ান ক্রুজেয়রো (১৯৯০–১৯৯৩) + + + ব্রাজিলিয়ান রিয়েল + ব্রাজিলিয়ান রিয়েল + ব্রাজিলিয়ান রিয়েল + R$ + + + ব্রাজিলিয়ান ক্রুজেইডো নোভো + + + ব্রাজিলিয়ান ক্রুজেয়রো + + + বাহামিয়ান ডলার + বাহামিয়ান ডলার + বাহামিয়ান ডলার + + + ভুটানি এনগুল্ট্রুম + ভুটানি এনগুল্ট্রুম + ভুটানি এনগুল্ট্রুম + + + বর্মি কিয়াৎ + + + বতসোয়ানা পুলা + বতসোয়ানা পুলা + বতসোয়ানা পুলা + + + বেলারুশিয়ান নিউ রুবেল (১৯৯৪–১৯৯৯) + + + বেলারুশিয়ান রুবেল + বেলারুশিয়ান রুবেল + বেলারুশিয়ান রুবেল + + + বেলিজ ডলার + বেলিজ ডলার + বেলিজ ডলার + + + কানাডিয়ান ডলার + কানাডিয়ান ডলার + কানাডিয়ান ডলার + CA$ + + + কঙ্গো ফ্র্যাঙ্ক কঙ্গোলাইস + কঙ্গো ফ্র্যাঙ্ক কঙ্গোলাইস + কঙ্গো ফ্র্যাঙ্ক কঙ্গোলাইস + + + সুইজারল্যান্ড ইউরো + + + সুইস ফ্রাঙ্ক + সুইস ফ্রাঙ্ক + সুইস ফ্রাঙ্ক + + + সুইজারল্যান্ড ফ্রাঙ্ক + + + চিলিয়ান উনিদাদেস দি ফোমেন্তো + + + চিলি পেসো + চিলি পেসো + চিলি পেসো + + + চীনা য়ুয়ান রেন্মিন্‌বি + চীনা য়ুয়ান রেন্মিন্‌বি + চীনা য়ুয়ান রেন্মিন্‌বি + CN¥ + + + কলোম্বিয়ান পেসো + কলোম্বিয়ান পেসো + কলোম্বিয়ান পেসো + + + উনিদাদ দি ভ্যালোর রিয়েল + + + কোস্টা রিকা কোলোন + কোস্টা রিকা কোলোন + কোস্টা রিকা কোলোন + + + প্রাচীন সারবিয়ান দিনার + + + চেকোস্লোভাক হার্ড কোরুনা + + + কিউবান রূপান্তরযোগ্য পেসো + কিউবান রূপান্তরযোগ্য পেসো + কিউবান রূপান্তরযোগ্য পেসো + + + কিউবান পেসো + কিউবান পেসো + কিউবান পেসো + + + কেপ ভার্দে এসকুডো + কেপ ভার্দে এসকুডো + কেপ ভার্দে এসকুডো + + + সাইপ্রাস পাউন্ড + + + চেকোস্লোভাক কোরুনা + চেকোস্লোভাক কোরুনা + চেকোস্লোভাক কোরুনা + + + পূর্ব জার্মান মার্ক + + + ডয়চ্ মার্ক + + + জিবুতি ফ্রাঙ্ক + জিবুতি ফ্রাঙ্ক + জিবুতি ফ্রাঙ্ক + + + ড্যানিশ ক্রৌন + ড্যানিশ ক্রৌন + ড্যানিশ ক্রৌন + + + ডোমিনিকান পেসো + ডোমিনিকান পেসো + ডোমিনিকান পেসো + + + আলজেরীয় দিনার + আলজেরীয় দিনার + আলজেরীয় দিনার + + + ইকুয়াডোর সুক্রে + + + ইকুয়াডোর উনিদাদেস দি ভেলর কনসতান্তে (ইউভিসি) + + + এস্তোনিয়া ক্রুনি + + + মিশরীয় পাউন্ড + মিশরীয় পাউন্ড + মিশরীয় পাউন্ড + + + এরিট্রিয়েন নাকফা + এরিট্রিয়েন নাকফা + এরিট্রিয়েন নাকফা + + + স্প্যানিশ পেসেতা (একই হিসাব) + + + স্প্যানিশ পেসেতা (রূপান্তরযোগ্য হিসাব) + + + স্প্যানিশ পেসেতা + + + ইথিওপিয়ান বির + ইথিওপিয়ান বির + ইথিওপিয়ান বির + + + ইউরো + ইউরো + ইউরো + + + + ফিনিস মার্কা + + + ফিজি ডলার + ফিজি ডলার + ফিজি ডলার + + + ফকল্যান্ড দ্বীপপুঞ্জ পাউন্ড + ফকল্যান্ড দ্বীপপুঞ্জ পাউন্ড + ফকল্যান্ড দ্বীপপুঞ্জ পাউন্ড + + + ফরাসি ফ্রাঙ্ক + + + ব্রিটিশ পাউন্ড স্টার্লিং + ব্রিটিশ পাউন্ড স্টার্লিং + ব্রিটিশ পাউন্ড স্টার্লিং + £ + + + জর্জিয়ান কুপন লারিট + + + জর্জিয়ান লারি + জর্জিয়ান লারি + জর্জিয়ান লারি + + + ঘানা সেডি (১৯৭৯–২০০৭) + + + ঘানা সেডি + ঘানা সেডি + ঘানা সেডি + + + জিব্রাল্টার পাউন্ড + জিব্রাল্টার পাউন্ড + জিব্রাল্টার পাউন্ড + + + গাম্বিয়া ডালাসি + গাম্বিয়া ডালাসি + গাম্বিয়া ডালাসি + + + গিনি ফ্রাঙ্ক + গিনি ফ্রাঙ্ক + গিনি ফ্রাঙ্ক + + + গিনি সাইলি + + + ইকুয়েটোরিয়াল গিনি ইকুয়িলি + + + গ্রীক দ্রাচমা + + + গুয়াতেমালা কুয়েৎজাল + গুয়াতেমালা কুয়েৎজাল + গুয়াতেমালা কুয়েৎজাল + + + পর্তুগিজ গিনি এসকুডো + + + গিনি বিসাউ পেসো + + + গাইয়েনা ডলার + গাইয়েনা ডলার + গাইয়েনা ডলার + + + হংকং ডলার + হংকং ডলার + হংকং ডলার + HK$ + + + হন্ডুরাস লেম্পিরা + হন্ডুরাস লেম্পিরা + হন্ডুরাস লেম্পিরা + + + ক্রোয়েশিয়ান দিনার + + + ক্রোয়েশিয়ান কুনা + ক্রোয়েশিয়ান কুনাস + ক্রোয়েশিয়ান কুনাস + + + হাইতি গৌর্দে + হাইতি গৌর্দে + হাইতি গৌর্দে + + + হাঙ্গেরিয়ান ফোরিন্ট + হাঙ্গেরিয়ান ফোরিন্ট + হাঙ্গেরিয়ান ফোরিন্ট + + + ইন্দোনেশিয়ান রুপিয়াহ + ইন্দোনেশিয়ান রুপিয়াহ + ইন্দোনেশিয়ান রুপিয়াহ + + + ইরিশ পাউন্ড + + + ইস্রাইলি পাউন্ড + + + ইস্রাইলি নতুন শেকেল + ইস্রাইলি নতুন শেকেল + ইস্রাইলি নতুন শেকেল + + + + ভারতীয় রুপি + ভারতীয় রুপি + ভারতীয় রুপি + + + + ইরাকি দিনার + ইরাকি দিনার + ইরাকি দিনার + + + ইরানিয়ান রিয়াল + ইরানিয়ান রিয়াল + ইরানিয়ান রিয়াল + + + আইসল্যান্ড ক্রৌন + আইসল্যান্ড ক্রৌন + আইসল্যান্ড ক্রৌন + + + ইতালীয় লিরা + + + জ্যামাইকান ডলার + জ্যামাইকান ডলার + জ্যামাইকান ডলার + + + জর্ডানিয়ান দিনার + জর্ডানিয়ান দিনার + জর্ডানিয়ান দিনার + + + জাপানিজ ইয়েন + জাপানিজ ইয়েন + জাপানিজ ইয়েন + JP¥ + + + কেনিয়ান শিলিং + কেনিয়ান শিলিং + কেনিয়ান শিলিং + + + কিরগিজস্তান সোম + কিরগিজস্তান সোম + কিরগিজস্তান সোম + + + কম্বোডিয়ান রিয়েল + কম্বোডিয়ান রিয়েল + কম্বোডিয়ান রিয়েল + + + কম্বোরো ফ্রাঙ্ক + কম্বোরো ফ্রাঙ্ক + কম্বোরো ফ্রাঙ্ক + + + নাইজেরিয়ান পাউন্ড + নাইজেরিয়ান পাউন্ড + নাইজেরিয়ান পাউন্ড + + + দক্ষিণ কোরিয়ান ওন + দক্ষিণ কোরিয়ান ওন + দক্ষিণ কোরিয়ান ওন + + + + কুয়েতি দিনার + কুয়েতি দিনার + কুয়েতি দিনার + + + কেম্যান দ্বীপপুঞ্জের ডলার + কেম্যান দ্বীপপুঞ্জের ডলার + কেম্যান দ্বীপপুঞ্জের ডলার + + + কাজাক্সটান টেঙ্গে + কাজাক্সটান টেঙ্গে + কাজাক্সটান টেঙ্গে + + + লেউশান কিপ + লেউশান কিপ + লেউশান কিপ + + + লেবানিজ পাউন্ড + লেবানিজ পাউন্ড + লেবানিজ পাউন্ড + + + শ্রীলঙ্কান রুপি + শ্রীলঙ্কান রুপি + শ্রীলঙ্কান রুপি + + + লাইবেরিয়ান ডলার + লাইবেরিয়ান ডলার + লাইবেরিয়ান ডলার + + + লেসুটু লোটি + + + লিথুইনিয়ান লিটা + লিথুইনিয়ান লিটা + লিথুইনিয়ান লিটা + + + লিথুইনিয়ান টালোন্যাস + + + লুক্সেমবার্গ রুপান্তযোগ্য ফ্রাঙ্ক + + + লুক্সেমবার্গ ফ্রাঙ্ক + + + লুক্সেমবার্গ ফাইনেনশিয়াল ফ্রাঙ্ক + + + ল্যাটভিয়ান ল্যাট্‌স + ল্যাটভিয়ান ল্যাট্‌স + ল্যাটভিয়ান ল্যাট্‌স + + + ল্যাটভিয়ান রুবল + + + লিবিয়ান ডলার + লিবিয়ান ডলার + লিবিয়ান ডলার + + + মোরোক্কান দিরহাম + মোরোক্কান দিরহাম + মোরোক্কান দিরহাম + + + মোরোক্কান ফ্রাঙ্ক + + + মোল্ডোভান লেয়ু + মোল্ডোভান লেয়ু + মোল্ডোভান লেয়ু + + + মাদাগাস্কার আরিয়ারি + মাদাগাস্কার আরিয়ারি + মাদাগাস্কার আরিয়ারি + + + মাদাগাস্কার ফ্রাঙ্ক + + + ম্যাসেডোনিয়ান দিনার + ম্যাসেডোনিয়ান দিনার + ম্যাসেডোনিয়ান দিনার + + + মালি ফ্রাঙ্ক + + + মায়ানমার কিয়াত + মায়ানমার কিয়াত + মায়ানমার কিয়াত + + + মঙ্গোলিয়ান তুগরিক + মঙ্গোলিয়ান তুগরিক + মঙ্গোলিয়ান তুগরিক + + + ম্যাক্যাও পাটাকা + ম্যাক্যাও পাটাকা + ম্যাক্যাও পাটাকা + + + মৌরিতানিয়ান ওউগুইয়া + মৌরিতানিয়ান ওউগুইয়া + মৌরিতানিয়ান ওউগুইয়া + + + মাল্টা লিরা + + + মাল্টা পাউন্ড + + + মৌরিতানিয়ান রুপি + মৌরিতানিয়ান রুপি + মৌরিতানিয়ান রুপি + + + মালদিভিয়ান রুফিয়া + মালদিভিয়ান রুফিয়া + মালদিভিয়ান রুফিয়া + + + মালাউইয়ান কওয়াচ + মালাউইয়ান কওয়াচ + মালাউইয়ান কওয়াচ + + + ম্যাক্সিকান পেসো + ম্যাক্সিকান পেসো + ম্যাক্সিকান পেসো + MX$ + + + ম্যাক্সিকান সিলভার পেসো (১৮৬১–১৯৯২) + + + মেক্সিকান উনিদাদ দি ইনভার্সান (UDI) + + + মালয়েশিয়ান রিঙ্গিৎ + মালয়েশিয়ান রিঙ্গিৎ + মালয়েশিয়ান রিঙ্গিৎ + + + মোজাম্বিক এসকুডো + + + প্রাচীন মোজাম্বিক মেটিকেল + + + মোজাম্বিক মেটিকেল + মোজাম্বিক মেটিকেল + মোজাম্বিক মেটিকেল + + + নামিবিয়া ডলার + নামিবিয়া ডলার + নামিবিয়া ডলার + + + নাইজেরিয়ান নায়রা + নাইজেরিয়ান নায়রা + নাইজেরিয়ান নায়রা + + + নিকারাগুয়ান কর্ডোবা (১৯৮৮–১৯৯১) + + + নিকারাগুয়ান কর্ডোবা + নিকারাগুয়ান কর্ডোবা + নিকারাগুয়ান কর্ডোবা + + + নেদারল্যান্ড গুল্ডের + + + নরওয়ে ক্রৌন + নরওয়ে ক্রৌন + নরওয়ে ক্রৌন + + + নেপালি রুপি + নেপালি রুপি + নেপালি রুপি + + + নিউজিল্যান্ড ডলার + নিউজিল্যান্ড ডলার + নিউজিল্যান্ড ডলার + NZ$ + + + ওমানি রিয়াল + ওমানি রিয়াল + ওমানি রিয়াল + + + পানামা বেলবোয়া + পানামা বেলবোয়া + পানামা বেলবোয়া + + + পেরুভিয়ান ইন্তি + + + পেরুভিয়ান সোল নুয়েভো + পেরুভিয়ান সোল নুয়েভো + পেরুভিয়ান সোল নুয়েভো + + + পেরুভিয়ান সোল + + + পপুয়ানিউগিনি কিনা + পপুয়ানিউগিনি কিনা + পপুয়ানিউগিনি কিনা + + + ফিলিপাইন পেসো + ফিলিপাইন পেসো + ফিলিপাইন পেসো + + + পাকিস্তানি রুপি + পাকিস্তানি রুপি + পাকিস্তানি রুপি + + + পোলিশ জ্লোটি + পোলিশ জ্লোটি + পোলিশ জ্লোটি + + + পোলিশ জ্লোটি (১৯৫০–১৯৯৫) + + + পর্তুগিজ এসকুডো + + + প্যারগুয়ান + প্যারগুয়ান + প্যারগুয়ান + + + কাতার রিয়্যাল + কাতার রিয়্যাল + কাতার রিয়্যাল + + + রোডেশিয়ান ডলার + + + প্রাচীন রুমানিয়া লেয়ু + + + রুমানিয়া লেয়ু + রুমানিয়া লেয়ু + রুমানিয়া লেয়ু + + + সারবিয়ান দিনার + সারবিয়ান দিনার + সারবিয়ান দিনার + + + রাশিয়ান রুবেল + রাশিয়ান রুবেল + রাশিয়ান রুবেল + + + রাশিয়ান রুবল (১৯৯১–১৯৯৮) + + + রুয়ান্ডান ফ্রাঙ্ক + রুয়ান্ডান ফ্রাঙ্ক + রুয়ান্ডান ফ্রাঙ্ক + + + সৌদি রিয়্যাল + সৌদি রিয়্যাল + সৌদি রিয়্যাল + + + সলোমন দ্বীপপুঞ্জ ডলার + সলোমন দ্বীপপুঞ্জ ডলার + সলোমন দ্বীপপুঞ্জ ডলার + + + সেয়চেল্লোইস রুপি + সেয়চেল্লোইস রুপি + সেয়চেল্লোইস রুপি + + + প্রাচীন সুদানি দিনার + + + সুদানি পাউন্ড + সুদানি পাউন্ড + সুদানি পাউন্ড + + + প্রাচীন সুদানি পাউন্ড + + + সুইডিশ ক্রোনা + সুইডিশ ক্রোনা + সুইডিশ ক্রোনা + + + সিঙ্গাপুর ডলার + সিঙ্গাপুর ডলার + সিঙ্গাপুর ডলার + + + সেন্ট হেলেনা পাউন্ড + সেন্ট হেলেনা পাউন্ড + সেন্ট হেলেনা পাউন্ড + + + স্লোভানিয়া টোলার + + + স্লোভাক কোরুনা + + + সিয়েরালিয়ন লিয়ন + সিয়েরালিয়ন লিয়ন + সিয়েরালিয়ন লিয়ন + + + সোমালি শিলিং + সোমালি শিলিং + সোমালি শিলিং + + + সুরিনাম ডলার + সুরিনাম ডলার + সুরিনাম ডলার + + + সুরিনাম গিল্ডার + + + দক্ষিণ সুদানি পাউন্ড + দক্ষিণ সুদানি পাউন্ড + দক্ষিণ সুদানি পাউন্ড + + + সাও টোমে এবং প্রিন্সিপে ডোবরা + সাও টোমে এবং প্রিন্সিপে ডোবরা + সাও টোমে এবং প্রিন্সিপে ডোবরা + + + সোভিয়েত রুবল + + + এল স্যালভোডোর কোলোন + + + সিরিয়ান পাউন্ড + সিরিয়ান পাউন্ড + সিরিয়ান পাউন্ড + + + সোয়াজিল্যান্ড লিলাঙ্গেনি + সোয়াজিল্যান্ড লিলাঙ্গেনি + সোয়াজিল্যান্ড লিলাঙ্গেনি + + + থাই বাত + থাই বাত + থাই বাত + ฿ + + + তাজিকিস্তান রুবল + + + তাজিকিস্তান সোমোনি + তাজিকিস্তান সোমোনি + তাজিকিস্তান সোমোনি + + + তুর্কমেনিস্টানি মানাত + + + তুর্কমেনিস্তান নতুন মানত + তুর্কমেনিস্তান নতুন মানত + তুর্কমেনিস্তান নতুন মানত + + + তিউনেশিয়ান দিনার + তিউনেশিয়ান দিনার + তিউনেশিয়ান দিনার + + + টোঙ্গা পা’আঙ্গা + টোঙ্গা পা’আঙ্গা + টোঙ্গা পা’আঙ্গা + + + তিমুর এসকুডো + + + প্রাচীন তুর্কি লিরা + + + তুর্কি লিরা + তুর্কি লিরা + তুর্কি লিরা + + + ত্রিনিদাদ এবং টোবাগো ডলার + ত্রিনিদাদ এবং টোবাগো ডলার + ত্রিনিদাদ এবং টোবাগো ডলার + + + নূতন তাইওয়ান ক্যারাবিয়ান ডলার + নূতন তাইওয়ান ক্যারাবিয়ান ডলার + নূতন তাইওয়ান ক্যারাবিয়ান ডলার + NT$ + + + তাঞ্জনিয়া শিলিং + তাঞ্জনিয়া শিলিং + তাঞ্জনিয়া শিলিং + + + ইউক্রেইন হৃভনিয়া + ইউক্রেইন হৃভনিয়া + ইউক্রেইন হৃভনিয়া + + + ইউক্রেইন কার্বোভ্যান্টস + + + উগান্ডান শিলিং (১৯৬৬–১৯৮৭) + + + উগান্ডান শিলিং + উগান্ডান শিলিং + উগান্ডান শিলিং + + + মার্কিন ডলার + মার্কিন ডলার + মার্কিন ডলার + US$ + + + মার্কিন ডলার (পরবর্তী দিন) + + + মার্কিন ডলার (একই দিন) + + + উরুগুয়ায়ান পেসো এন উনিদাদেস ইনডেক্সেডাস + + + উরুগুয়ে পেসো (১৯৭৫–১৯৯৩) + + + উরুগুয়ে পেসো + উরুগুয়ে পেসো উরুগুয়েও + উরুগুয়ে পেসো উরুগুয়েও + + + উজবেকিস্তানি সোম + উজবেকিস্তানি সোম + উজবেকিস্তানি সোম + + + ভেনিজুয়েলান বলিভার (১৮৭১–২০০৮) + + + ভেনিজুয়েলীয় বলিভার + ভেনিজুয়েলীয় বলিভার + ভেনিজুয়েলীয় বলিভার + + + ভিয়েতনামি ডঙ্গ + ভিয়েতনামি ডঙ্গ + ভিয়েতনামি ডঙ্গ + + + + ভানুয়াতু ভাতু + ভানুয়াতু ভাতু + ভানুয়াতু ভাতু + + + পশ্চিমাঞ্চলীয় সামোয়ান টালা + পশ্চিমাঞ্চলীয় সামোয়ান টালা + পশ্চিমাঞ্চলীয় সামোয়ান টালা + + + সিএফএ ফ্র্যাঙ্ক বিইএসি + সিএফএ ফ্র্যাঙ্ক বিইএসি + সিএফএ ফ্র্যাঙ্ক বিইএসি + FCFA + + + সিলভার + + + গোল্ড + + + ইউরোপীয় আর্থিক একক + + + পূর্ব ক্যারাবিয়ান ডলার + পূর্ব ক্যারাবিয়ান ডলার + পূর্ব ক্যারাবিয়ান ডলার + EC$ + + + ইউরোপীয় মুদ্রা একক + + + ফরাসি গোল্ড ফ্রাঙ্ক + + + ফরাসি ইউআইসি - ফ্রাঙ্ক + + + সিএফএ ফ্র্যাঙ্ক বিসিইএও + সিএফএ ফ্র্যাঙ্ক বিসিইএও + সিএফএ ফ্র্যাঙ্ক বিসিইএও + CFA + + + প্যালেডিয়াম + + + সিএফপি ফ্র্যাঙ্ক + সিএফপি ফ্র্যাঙ্ক + সিএফপি ফ্র্যাঙ্ক + CFPF + + + প্লাটিনাম + + + অজানা বা ভুল মুদ্রা + অজানা বা ভুল মুদ্রা + অজানা বা ভুল মুদ্রা + + + ইয়েমেনি দিনার + + + ইয়েমেনি রিয়াল + ইয়েমেনি রিয়াল + ইয়েমেনি রিয়াল + + + যুগোশ্লাভিয় হার্ড দিনার + + + যুগোশ্লাভিয় নোভি দিনার + + + যুগোশ্লাভিয় রুপান্তরযোগ্য দিনার + + + দক্ষিণ আফ্রিকান র‌্যান্ড + + + দক্ষিণ আফ্রিকান রেন্ড + দক্ষিণ আফ্রিকান রেন্ড + দক্ষিণ আফ্রিকান রেন্ড + + + জাম্বিয়ান কওয়াচা (১৯৬৮–২০১২) + + + জাম্বিয়ান কওয়াচা + জাম্বিয়ান কওয়াচা + জাম্বিয়ান কওয়াচা + + + জাইরিয়ান নিউ জাইরে + + + জাইরিয়ান জাইরে + + + জিম্বাবুয়ে ডলার (১৯৮০–২০০৮) + + + জিম্বাবুয়ে ডলার (২০০৯) + + + জিম্বাবুয়ে ডলার (২০০৮) + + + + {0}+ + {0}–{1} + + + + + + {1} প্রতি {0} + + + {0} জি-বল + {0} জি-বল + + + {0}মিনিট + {0}মিনিট + + + {0}সেকেন্ড + {0}সেকেন্ড + + + {0}ডিগ্রী + {0}ডিগ্রী + + + {0} একর + {0} একর + + + {0} হেক্টর + {0} হেক্টর + + + {0} বর্গ ফুট + {0} বর্গ ফুট + + + {0} বর্গ কিলোমিটার + {0} বর্গ কিলোমিটার + + + {0} বর্গ মিটার + {0} বর্গ মিটার + + + {0} বর্গ মাইল + {0} বর্গ মাইল + + + {0} দিন + {0} দিন + + + {0} ঘন্টা + {0} ঘন্টা + + + {0} ms + {0} ms + + + {0} মিনিট + {0} মিনিট + + + {0} মাস + {0} মাস + + + {0} সেকেন্ড + {0} সেকেন্ড + + + {0} সপ্তাহ + {0} সপ্তাহ + + + {0} বছর + {0} বছর + + + {0} সেন্টিমিটার + {0} সেন্টিমিটার + + + {0} ফুট + {0} ফুট + + + {0} ইঞ্চি + {0} ইঞ্চি + + + {0} কিলোমিটার + {0} কিলোমিটার + + + {0} আলোকবর্ষ + {0} আলোকবর্ষ + + + {0} মিটার + {0} মিটার + + + {0} মাইল + {0} মাইল + + + {0} মিলিমিটার + {0} মিলিমিটার + + + {0} পিকোমিটার + {0} পিকোমিটার + + + {0} গজ + {0} গজ + + + {0} গ্রাম + {0} গ্রাম + + + {0} কিলোগ্রাম + {0} কিলোগ্রাম + + + {0} আউন্স + {0} আউন্স + + + {0} পাউন্ড + {0} পাউন্ড + + + {0} হর্সপাওয়ার + {0} হর্সপাওয়ার + + + {0} কিলোওয়াট + {0} কিলোওয়াট + + + {0} ওয়াট + {0} ওয়াট + + + {0} হেক্টোপাসকল + {0} হেক্টোপাসকল + + + {0} ইঞ্চি পারদ + {0} ইঞ্চি পারদ + + + {0} মিলিবার + {0} মিলিবার + + + {0} ঘন্টা প্রতি কিলোমিটার + {0} ঘন্টা প্রতি কিলোমিটার + + + {0} মিটার প্রতি সেকেন্ড + {0} মিটার প্রতি সেকেন্ড + + + {0} ঘন্টা প্রতি মাইল + {0} ঘন্টা প্রতি মাইল + + + {0}ডিগ্রী সেলসিয়াস + {0}ডিগ্রী সেলসিয়াস + + + {0}ডিগ্রী ফারেনহাইট + {0}ডিগ্রী ফারেনহাইট + + + {0} কিউবিক কিলোমিটার + {0} কিউবিক কিলোমিটার + + + {0} কিউবিক মাইল + {0} কিউবিক মাইল + + + {0} লিটার + {0} লিটার + + + + + {0}/{1} + + + {0} জি-বল + {0} জি-বল + + + {0}মিনিট + {0}মিনিট + + + {0}সেকেন্ড + {0}সেকেন্ড + + + {0}ডিগ্রী + {0}ডিগ্রী + + + {0} একর + {0} একর + + + {0} হেক্টর + {0} হেক্টর + + + {0}বর্গ ফুট + {0} বর্গ ফুট + + + {0} বর্গ কিমি + {0} বর্গ কিমি + + + {0} বর্গ মিটার + {0} বর্গ মিটার + + + {0} বর্গ মাইল + {0} বর্গ মাইল + + + {0} দিন + {0} দিন + + + {0} ঘন্টা + {0} ঘন্টা + + + {0} ms + {0} ms + + + {0} মিনিট + {0} মিনিট + + + {0} মাস + {0} মাস + + + {0} সেকেন্ড + {0} সেকেন্ড + + + {0} সপ্তাহ + {0} সপ্তাহ + + + {0} বছর + {0} বছর + + + {0} সেমি + {0} সেমি + + + {0} ফুট + {0} ফুট + + + {0} ইঞ্চি + {0} ইঞ্চি + + + {0} কিমি + {0} কিমি + + + {0} আলোকবর্ষ + {0} আলোকবর্ষ + + + {0} মিটার + {0} মিটার + + + {0} মাইল + {0} মাইল + + + {0} মিমি + {0} মিমি + + + {0} পিকোমিটার + {0} পিকোমিটার + + + {0} গজ + {0} গজ + + + {0}গ্রাম + {0} গ্রাম + + + {0} কেজি + {0} কেজি + + + {0} আউন্স + {0} আউন্স + + + {0} পাউন্ড + {0} পাউন্ড + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} ওয়াট + {0} ওয়াট + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} ঘন্টা প্রতি কিলোমিটার + {0} ঘন্টা প্রতি কিলোমিটার + + + {0} মিটার প্রতি সেকেন্ড + {0} মিটার প্রতি সেকেন্ড + + + {0} ঘন্টা প্রতি মাইল + {0} ঘন্টা প্রতি মাইল + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} কিউবিক কিলোমিটার + {0} কিউবিক কিলোমিটার + + + {0} কিউবিক মাইল + {0} কিউবিক মাইল + + + {0} লিটার + {0} লিটার + + + + + {0}/{1} + + + {0} জি-বল + {0} জি-বল + + + {0}মিনিট + {0}মিনিট + + + {0}সেকেন্ড + {0}সেকেন্ড + + + {0}ডিগ্রী + {0}ডিগ্রী + + + {0} একর + {0} একর + + + {0} হেক্টর + {0} হেক্টর + + + {0} বর্গ ফুট + {0} বর্গ ফুট + + + {0} বর্গ কিমি + {0} বর্গ কিমি + + + {0} m² + {0} m² + + + {0} বর্গ মাইল + {0} বর্গ মাইল + + + {0} দিন + {0} দিন + + + {0} ঘন্টা + {0} ঘন্টা + + + {0} ms + {0} ms + + + {0} মিনিট + {0} মিনিট + + + {0} মাস + {0} মাস + + + {0} সেকেন্ড + {0} সেকেন্ড + + + {0} সপ্তাহ + {0} সপ্তাহ + + + {0} বছর + {0} বছর + + + {0} সেমি + {0} সেমি + + + {0} ফুট + {0} ফুট + + + {0} ইঞ্চি + {0} ইঞ্চি + + + {0} কিমি + {0} কিমি + + + {0} আলোকবর্ষ + {0} আলোকবর্ষ + + + {0} মিটার + {0} মিটার + + + {0} মাইল + {0} মাইল + + + {0} মিমি + {0} মিমি + + + {0} পিমি + {0} পিমি + + + {0} গজ + {0} গজ + + + {0} গ্রাম + {0} গ্রাম + + + {0} কেজি + {0} কেজি + + + {0} আউন্স + {0} আউন্স + + + {0} পাউন্ড + {0} পাউন্ড + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} ওয়াট + {0} ওয়াট + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0}kph + {0}kpm + + + {0}m/s + {0}m/s + + + {0}mph + {0}mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0} লিটার + {0} লিটার + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, এবং {1} + {0} এবং {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} এবং {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} এবং {1} + + + + + হাঁ + না + + + + diff --git a/library/Zend/Locale/Data/bn_BD.xml b/library/Zend/Locale/Data/bn_BD.xml new file mode 100755 index 000000000..baf0c2151 --- /dev/null +++ b/library/Zend/Locale/Data/bn_BD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bn_IN.xml b/library/Zend/Locale/Data/bn_IN.xml new file mode 100755 index 000000000..4829ca210 --- /dev/null +++ b/library/Zend/Locale/Data/bn_IN.xml @@ -0,0 +1,282 @@ + + + + + + + + + + + + + আবখাজিয়ান + অ্যাচাইনিজ + আকোলি + আঙ্গিকা + চামোরো + চিনুক জার্গন + চকটোও + চিপেওয়াইয়ান + চেয়েনি + চার্চ স্লাভিক + অস্ট্রিয়ান জারমান + ডোগরি + ক্যানাডিয়ান ফরাসী + উড়িয়া + আরমেনিয়ান + ব্লিসসিম্বলস + + + + + + গ্রেনেডা + গোয়াতেমালা + জামাইকা + + + ক্যালেন্ডার + + + + {0}… + …{0} + {0}…{1} + + + + + + + + ত্রৈমাসিক + ষাণ্মাসিক + বার্ষিক + + + ত্রৈমাসিক + ষাণ্মাসিক + তৃতীয় চতুর্থাংশ + বার্ষিক + + + + + Q1 + Q2 + Q3 + Q4 + + + ত্রৈমাসিক + ষাণ্মাসিক + তৃতীয় চতুর্থাংশ + বার্ষিক + + + + + + + MM – MM -y + + + + + + + + AM/PM + + + + গ্রীনিচ মানক সময় + + + আলাস্কার সময় + অ্যালাসকা মানক সময় + আলাসকা দিবালোক সময় + + + + + উত্তর আমিরিকা কেন্দ্রীয় সময় + উত্তর আমিরিকা কেন্দ্রীয় মানক সময় + কেন্দ্রীয় দিবালোক মসয় + + + + + কুক দ্বীপপুঞ্জ সময় + কুক দ্বীপপুঞ্জ মানক সময় + কুক দ্বীপপুঞ্জ অর্ধেক গ্রীষ্মকাল সময় + + + + + ফিজি সময় + ফিজি মানক সময় + ফিজি গ্রীষ্মকাল সময় + + + + + ফরাসি দক্ষিণ এবং আন্টার্কটিক সময় + + + + + গুয়ানা সময় + + + + + ভারত মহাসাগরীয় সময় + + + + + কোসরেই সময় + + + + + নিউজিল্যান্ড সময় + নিউজিল্যান্ড মানক সময় + নিউজিল্যান্ড দিবালোকের সময় + + + + + পাপুয়া নিউগিনি সময় + + + + + পিটকাইর্ন সময় + + + + + পোনাপ সময় + + + + + স্যোয়া সময় + + + + + টোকেলু সময় + + + + + ভসটক সময় + + + + + + + + + 0 হাজার + 0 হাজার + 00 হাজার + 00 হাজার + 000 হাজার + 000 হাজার + 0 মিলিয়ন + 0 মিলিয়ন + 00 মিলিয়ন + 00 মিলিয়ন + 000 মিলিয়ন + 000 মিলিয়ন + 0 বিলিয়ন + 0 বিলিয়ন + 00 বিলিয়ন + 00 বিলিয়ন + 000 বিলিয়ন + 000 বিলিয়ন + 0 ট্রিলিয়ন + 0 ট্রিলিয়ন + 00 ট্রিলিয়ন + 00 ট্রিলিয়ন + 000 ট্রিলিয়ন + 000 ট্রিলিয়ন + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + + {0}″ + {0}″ + + + {0} km² + {0} km² + + + {0} mi² + {0} mi² + + + {0} kph + {0} kph + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0} km³ + {0} km³ + + + {0}mi³ + {0} mi³ + + + + + diff --git a/library/Zend/Locale/Data/bo.xml b/library/Zend/Locale/Data/bo.xml new file mode 100755 index 000000000..c7cfc5c5f --- /dev/null +++ b/library/Zend/Locale/Data/bo.xml @@ -0,0 +1,566 @@ + + + + + + + + + + + + བྷང་ག་ལའི་སྐད། + པོད་སྐད་ + ཏེན་མག་གི་སྐད། + འཇར་མན་གྱི། + རྫོང་ཁ + དབིན་ཇིའི་སྐད། + དབིན་ཇིའི་སྐད། (ཁེ་ན་ཌ་) + དབིན་ཇིའི་སྐད། (དབིན་ཇིའི་རྒྱལ་ཁབ་) + དབིན་ཇིའི་སྐད། (ཨ་རི་) + ཞི་པན་ཡའི། + ཧྥ་རན་སིའི་། + གཱ་སྐད། + གུཇ་རཱཏི་སྐད། + ཧིན་དི + ཨིན་དོ་ནི་སི་སྐད། + དབྱི་ཏ་་ལའི་མི། + རི་པིན་སྐད་ + ཀནྣ་ཌ་སྐད། + ཁོ་རེ་ཡའི་སྐད། + ལཱ་ཏིན་སྐད། + སོག་སྐད། + མ་ར་ཐི་སྐད། + མ་ལ་ཡ་སྐད། + འབར་མའི་སྐད། + ནེ་པ་ལི + ཧའོ་ལན་སྐད། + ནོ་ཝེ་སྐད། + ཨཽ་རི་ཡ་སྐད། + པོ་ལན་སྐད། + ཕི་ཐོ་ཡའི། + པ་ཞའི་མི། ཕི་ཐོ་ཡའི་མི། + ཨུ་རུ་སུ་སྐད་ + སཾ་སྐྲྀ་ཏ། + ཞི་ལན་སྐད། + ཧྲུའི་ཏན་སྐད། + ཏཱ་མིལ་སྐད། + ཏེ་ལུ་གུ་སྐད། + ཐའའི་ཡུལ་སྐད། + ཐུར་ཁེའི་སྐད། + ཡུ་གུར་སྐད། + ཡུ་ཀྲ་ནི་སྐད། + མིའི་ཤེས་རྟོགས་མ་བྱུང་བ། ཡང་ན་ཆད་ལྷག་ཅན་གྱི་སྐད་བརྡ། + ཝུའུ་ཏུའུ་སྐད། + ཡོ་ནན་སྐད། + ཟེ་ན་གཱ་སྐད། + རྒྱ་སྐད་ + སྟབས་བརྡའི། ཀྲུང་གོའི། + སྲོལ་རྒྱུན་གྱི། + ཟུ་ལུ་སྐད། + ཟུ་ནི་སྐད། + ཟ་ཟཱ་སྐད། + + + + + + + + + + + + + + + + འཛམ་གླིང་། + ཨཕྲི་ཀ། + ཨསྟྲེ་ལི་ཡ་དང་། ནིའུ་ཛི་ལན྄ཌ། + ཨེ་ཤི་ཡ། + ཡུ་རོབ། + ཨེན་ཌོ་ར། + ཨ་རབ། ཨི་མི་རཊ྄། ཆིག་སྒྲིལ་རྒྱལ་ཁབ། + ཨཕ་ག་ནི་སྟཱན། + ཨེན་ཊི་གུ་དང་། བྷར་བུ་ཌ། + ཨང་གུའི་ལ། + ཨལ་བཱ་ནི་ཡ། + ཨར་མེ་ནི་ཡ། + ཨང་གཽ་ལ། + ལྷོ་རྩེའི་མཐའ་གླིང་། + ཨར་ཇེན་ཊི་ན། + ཨསྟྲི་ཡ། + ཨསྟྲེ་ལི་ཡ། + ཨ་རུ་བ། + ཨཛར་བཡེ་ཇན། + བོསྣི་ཡ་དང་ཧརྫོ་གོ་ཝི་ན། + བཱརྦ་ཌོས྄། + བངྒ་ལ་དེཤ། + བེལ་ཇི་ཡམ། + བརཀི་ན། ཕསོ། + བུལ་ག་རི་ཡ། + བྷཱ་རེན། + བུ་རུན་ཌི། + བཱེ་ནིན། + བར་མུ་ཌ། + བུ་རུ་ནེ། + བོ་ལི་ཝིཡ། + བ་རཱ་ཛིལ། + བྷཱ་མས྄། + འབྲུག་ཡུལ། + བོཙ་ཝ་ན། + བེ་ལུ་རུ་སུ། + བེ་ལིཛ། + ཁེ་ན་ཌ། + ཧྲུད་ཧྲི། + ཀོ་ཊེ་ཌི། ཨི་ཝོ་རེ། + ཀཱུག གླིང་ཕྲེན་རྒྱལ་ཁབ། + ཅི་ལི། + ཀ་མེ་རུན། + རྒྱ་ནག + ཀོ་ལོམ་བི་ཡ། + ཀོ་ས྄ཊ་རི་ཀ། + ཁྱུའུ་བ། + སཱཡེ་པ་རས྄། + ཅཻག་སྤྱི་མཐུན་རྒྱལ་ཁབ། + འཇར་མན་ + ཛི་བུ་ཏི། + ཌེན་མཱརྐ། + ཌོ་མིན་ནི་ཀ། + ཌོ་མིནནི་ཀན་སྤྱི་མཐུན་རྒྱལ་ཁབ། + ཨལ་ཇི་རི་ཡ། + ཨི་ཁྭ་ཌོར། + ཨིསྟོ་ནི་ཡ། + ཨི་ཇིབྚ། + ཨེ་རི་ཏྲེ་ཨ། + སི་པན། + ཨི་ཐིའོ་པི་ཡ། + ཕིན་ལན྄ཌ། + ཕི་ཇི། + ཕལྐ་ལནྜ་གླིང་ཕྲན། + ཕ་རཱན་སི། + གེ་བཽན། + དབྱིན་ཇི་ + གྷ་རི་ན་ཌ། + ཇོར་ཇི་ཡ། + གྷ་ན། + ཇིབ་རཱལ་ཊར། + གྷམ་བི་ཡ། + གྷི་ནི་ཡ། + གྷི་རཱི་སི། + གྷོ་ཊེ་མ་ལ། + གྷི་ནི་ཡ་བིས྄་སོ། + གྷུ་ཡཱ་ན། + ཧོང་ཀོང༌། + ཧོན་དུ་རས྄། + ཀུརོ་ཤི་ཡ། + ཧེ་ཏི། + ཧངྒ་རི། + ཨིན་ཌོ་ནེ་ཤི་ཡ། + ཨ་ཡར་ལནཌ། + ཨི་ཛ྄་རེལ། + རྒྱ་གར་ + ཨི་རག། + ཨི་རཱན། + ཨ་ཨི་སི་ལནད། + ཨི་ཀྲར་ལི་ + ཛ་མེ་ཀ། + ཇོར་ཌན། + རི་པིན་ + ཁེན་ཉི་ཡ། + ཁིར་གིཛ་སྟཱན། + ཀམ་བོ་ཌི་ཡ། + ཀི་རི་བཱ་ཏི། + སེནྚ། ཀིཊྚས྄། དང༌། ནེ་བིས྄། + ཀོ་རི་ཡ། ལྷོ་མ། + ཀུ་ཝེད་རྒྱལ་ཁབ། + ཁེ་མེན་གླིང་ཕྲན། + ཁ་ཛཱག་སྟཱན། + ལཱ་འོས། + ལེབ་ནོན། + སེནྚ། ལུ་ཤི་ཡ། + ལེག་ཏེན་ཚིན། + ཤྲཱི་ལངྐ་། + ལི་བེ་རི་ཡ། + ལེ་སོ་ཐོ། + ལི་ཐུ་ཨེ་ནི་ཡ། + ལཀ་ཛམ་བོརྒ། + ལཏ་བི་ཡ། + ལི་བི་ཡ། + མོ་རོ་ཀྐོ། + མོ་ན་ཀོ། + མ་དཱ་གྷསྐཱར། + མཱར་ཤལ་གླིང་ཕྲེན། + མ་ལི། + འབར་མ། + སོག་ཡུལ། + མེ་ཀའོ། + མཽ་རི་ཏ་ནི་ཡ། + མལ་ཊ། + མཽ་རིཤས྄། + མལ་དྭིབ། + མཱ་ལཱ་ཝི། + མེཀ་སི་ཀོ། + མ་ལེ་ཤི་ཡ། + མོ་ཛམ་བིག། + ན་མི་བི་ཡ། + ནའི་ཇར། + ནཱའི་ཇི་རི་ཡ། + ནི་ཀ་ར་གུ་ཨ། + ཧའོ་ལན། + ནོར་ཝེ། + བར་ཡུལ་ + ནཽ་རུ། + ནིའུ་ཝ། + ནིའུ་ཛི་ལན྄ཌ། + ཨོ་མན། + པ་ནཱ་མ། + པེ་རུ། + པ་པུ་ཨ། ནིའུ། གྷི་ནི། + ཕི་ལི་པིནས྄། + པཀི་སྟཱན། + པོ་ལནྜ། + པོར་ཏུ་གྷལ། + པ་ལཽ། + པཱ་ར་གེ། + ཀ་ཏཱར། + རོ་མཱ་ནིཡ། + སེར་བི་ཡ། + ཨུ་རུ་སུ་ + རུ་ཝན་ཌ། + སཽ་དྷི་ཨ་རཱ་བི་ཡ། + སོ་ལོ་མོན། གླིང་ཕྲན་ཚོ་ཁག། + སཱ་ཤཻལ། + སུ་དཱན། + ཧྲུའི་ཏན། + སིངྒ་པུར། + སེནྚ། ཧེ་ལི་ན། + ས་ལཽ་ཝེ་ནི་ཡ། + ས་ལཽ་ཝཀྱ། + སེ་ཡར་ར། ལིའོན། + སན་མེ་རི་ནོ། + སེ་ནི་གྷལ། + སོ་མཱལི་ཡ། + སུ་རི་ནཱམ། + ས་འོ་ཏོད་མད། དང༌། པ྄རིན་སི་པེ། + ཨེལ། སཱལ་ཝ་ཌོར། + ཅཻཌ། + ཏུརཀི། + ཐུ་ཝ་ལུ། + ཡུ་ཀྲན། + ཡུ་གན་ཌ། + ཨ་མེ་རི་ཀ། + ཨུ་རུ་གྷེ། + ཨུཛ་བེ་ཀིསྟཱན། + ཝེ་ཊི་ཀན། + སེནྚ། ཝིན་སན། དང༌། གྷིརིན་ཌིན། + ཝེ་ནི་ཛུའེ་ལ། + བི་དི་ནམ། + ཝ་ནུ་ཨ་ཐུ། + ནུ་བ་ས་མོ་འ། + ཡེ་མེན། + ལྷོ་ ཨཕྲི་ཀ། + ཛམ་བི་ཡ། + ཛིམ་བྷཱ་བེ། + མིའི་ཤེས་རྟོགས་མ་བྱུང་བའི་ཁོར་ཡུག + + + པིན་ཡིན། + + + ཨ་མེ་རི་ཀའི། + + + + [\u0F7E ཿ ཀ {ཀ\u0FB5} \u0F90 {\u0F90\u0FB5} ཁ \u0F91 ག {ག\u0FB7} \u0F92 {\u0F92\u0FB7} ང \u0F94 ཅ \u0F95 ཆ \u0F96 ཇ \u0F97 ཉ \u0F99 ཊ \u0F9A ཋ \u0F9B ཌ {ཌ\u0FB7} \u0F9C {\u0F9C\u0FB7} ཎ \u0F9E ཏ \u0F9F ཐ \u0FA0 ད {ད\u0FB7} \u0FA1 {\u0FA1\u0FB7} ན \u0FA3 པ \u0FA4 ཕ \u0FA5 བ {བ\u0FB7} \u0FA6 {\u0FA6\u0FB7} མ \u0FA8 ཙ \u0FA9 ཚ \u0FAA ཛ {ཛ\u0FB7} \u0FAB {\u0FAB\u0FB7} ཝ \u0FAD \u0FBA ཞ \u0FAE ཟ \u0FAF འ \u0FB0 ཡ \u0FB1 \u0FBB ར ཪ \u0FB2 \u0FBC ལ \u0FB3 ཤ \u0FB4 ཥ \u0FB5 ས \u0FB6 ཧ \u0FB7 ཨ \u0FB8 \u0F72 {\u0F71\u0F72} \u0F80 {\u0F71\u0F80} \u0F74 {\u0F71\u0F74} {\u0FB2\u0F80} \u0F77 {\u0FB3\u0F80} \u0F79 \u0F7A \u0F7B \u0F7C \u0F7D \u0F84] + [ༀ] + [ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ] + [\: ་ །] + + + + + + + + G སྦྱི་ལོ་y MMMMའི་ཙེས་dད + + + + + G y ལོ་འི་MMMཙེས་d + + + + + + y ལོ་འི་MMMཙེས་d + སྦྱི་ལོ་y MMMMའི་ཙེས་dད + + + + + + + + ཟླ་༡ + ཟླ་༢ + ཟླ་༣ + ཟླ་༤ + ཟླ་༥ + ཟླ་༦ + ཟླ་༧ + ཟླ་༨ + ཟླ་༩ + ཟླ་༡༠ + ཟླ་༡༡ + ཟླ་༡༢ + + + ཟླ་བ་དང་པོ་ + ཟླ་བ་གཉིས་པ་ + ཟླ་བ་སུམ་པ་ + ཟླ་བ་བཞི་པ་ + ཟླ་བ་ལྔ་པ་ + ཟླ་བ་དྲུག་པ་ + ཟླ་བ་བདུན་པ་ + ཟླ་བ་བརྒྱད་པ་ + ཟླ་བ་དགུ་པ་ + ཟླ་བ་བཅུ་པ་ + ཟླ་བ་བཅུ་གཅིག་པ་ + ཟླ་བ་བཅུ་གཉིས་པ་ + + + + + + + ཉི་མ་ + ཟླ་བ་ + མིག་དམར་ + ཧླག་པ་ + ཕུར་བུ་ + སངས་ + སྤེན་པ་ + + + ཉི + ཟླ + མི + ཧླག + ཕུ + + སྤེ + + + གཟའ་ཉི་མ་ + གཟའ་ཟླ་བ་ + གཟའ་མིག་དམར་ + གཟའ་ཧླག་པ་ + གཟའ་ཕུར་བུ་ + གཟའ་སངས་ + གཟའ་སྤེན་པ་ + + + + + ཉི་མ་ + ཟླ་བ་ + མིག་དམར་ + ཧླག་པ་ + ཕུར་བུ་ + སངས་ + སྤེན་པ་ + + + ཉི + ཟླ + མི + ཧླ + ཕུ + + སྤེ + + + གཟའ་ཉི་མ་ + གཟའ་ཟླ་བ་ + གཟའ་མིག་དམར་ + གཟའ་ཧླག་པ་ + གཟའ་ཕུར་བུ་ + གཟའ་སངས་ + གཟའ་སྤེན་པ་ + + + + + + + དུས་ཚིགས་དང་པོ། + དུས་ཚིགས་གཉིས་པ། + ་དུས་ཚིགས་གསུམ་པ། + དུས་ཚིགས་བཞི་པ། + + + དུས་ཚིགས་དང་པོ། + དུས་ཚིགས་གཉིས་པ། + ་དུས་ཚིགས་གསུམ་པ། + དུས་ཚིགས་བཞི་པ། + + + + + དུས་ཚིགས་དང་པོ། + དུས་ཚིགས་གཉིས་པ། + ་དུས་ཚིགས་གསུམ་པ། + དུས་ཚིགས་བཞི་པ། + + + དུས་ཚིགས་དང་པོ། + དུས་ཚིགས་གཉིས་པ། + ་དུས་ཚིགས་གསུམ་པ། + དུས་ཚིགས་བཞི་པ། + + + + + + + སྔ་དྲོ་ + ཕྱི་དྲོ་ + + + + + + སྤྱི་ལོ་སྔོན། + སྤྱི་ལོ། + + + + + + སྦྱི་ལོ་y MMMMའི་ཙེས་dད + + + + + y ལོ་འི་MMMཙེས་d + + + + + + y ལོ་འི་MMMཙེས་d + སྦྱི་ལོ་y MMMMའི་ཙེས་dད + + + + + + + ལོ་རིམ། + + + ལོ། + + + ཟླ་བ་ + + + གཟའ་འཁོར། + + + ཉིན། + ཁས་ཉིན་ཀ་ + ཁས་ས་ + དེ་རིང་ + སང་ཉིན་ + གནངས་ཉིན་ཀ་ + + + གཟའ་འཁོར་གཅིག + + + སྔ་དྲོ། ཕྱི་དྲོ། + + + ཆུ་ཙོ་ + + + སྐར་མ། + + + སྐར་ཆ། + + + དུས་ཚོད། + + + + + མ་རྟོགས་པ + + + + + latn + + tibt + + + . + , + NaN + + + ཨང་མེན་ + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + ཡུ་ཨན་ + ¥ + + + རྒྱ་གར་སྒོར་མོ་ + + + ཨ་རིའི་སྒོར་མོ། + + + མ་རྟོགས་པའི་ནུས་མེད་དངུལ་ལོར + + + + + + ཡིན།:Y + མེད།:N + + + + diff --git a/library/Zend/Locale/Data/bo_CN.xml b/library/Zend/Locale/Data/bo_CN.xml new file mode 100755 index 000000000..dfa7b810c --- /dev/null +++ b/library/Zend/Locale/Data/bo_CN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bo_IN.xml b/library/Zend/Locale/Data/bo_IN.xml new file mode 100755 index 000000000..65edecee7 --- /dev/null +++ b/library/Zend/Locale/Data/bo_IN.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + ཨོཤི་ཡཱན་ན། + + + + + + CN¥ + + + + diff --git a/library/Zend/Locale/Data/br.xml b/library/Zend/Locale/Data/br.xml new file mode 100755 index 000000000..fa3f3bc77 --- /dev/null +++ b/library/Zend/Locale/Data/br.xml @@ -0,0 +1,2391 @@ + + + + + + + + + + + + afar + abkhazeg + acoli + adangme + adygeieg + avesteg + afrikaans + afrihili + aghem + akan + akadeg + altaieg ar Su + amhareg + aragoneg + hensaozneg + arabeg + arameeg + araoukaneg + arapaho + arawakeg + asameg + asu + avar + awadhi + aymara + azeri + bachkir + baloutchi + balineg + basaa + belaruseg + bemba + bena + bulgareg + bhojpuri + bislama + bikol + bini + bambara + bengali + tibetaneg + brezhoneg + braj + bodo + bosneg + bouriat + bugi + blin + katalaneg + caddo + karibeg + tchetcheneg + cebuano + chamorru + chibcha + marieg + choktaw + chipewyan + cherokee + cheyenne + kurdeg sorani + korseg + kopteg + kri + turkeg Krimea + tchekeg + kachoubeg + slavoneg iliz + tchouvatch + kembraeg + daneg + dakota + dargwa + alamaneg + alamaneg Aostria + alamaneg uhel Suis + delaware + dogrib + dinka + dogri + izelsorabeg + divehi + dyula + dzongkha + embu + ewe + efik + henegipteg + ekajuk + gresianeg + elameg + saozneg + saozneg Aostralia + saozneg Kanada + saozneg Breizh-Veur + saozneg S.U. + krennsaozneg + esperanteg + spagnoleg + spagnoleg Amerika latin + spagnoleg Europa + estoneg + euskareg + ewondo + perseg + fang + fanti + finneg + filipineg + fidjieg + faeroeg + fon + galleg + galleg Kanada + galleg Suis + krennc'halleg + henc'halleg + frizeg an Norzh + frizeg ar Reter + frioulaneg + frizeg ar C'hornôg + iwerzhoneg + ga + gayo + gbaya + skoseg + gezeg + gilberteg + galizeg + guarani + gorontalo + goteg + grebo + henc'hresianeg + alamaneg Suis + gujarati + manaveg + haousa + haida + hawaieg + hebraeg + hindi + hiligaynon + hmong + hiri motu + kroateg + uhelsorabeg + haitieg + hungareg + hupa + armenianeg + herero + interlingua + iban + ibibio + indonezeg + interlingue + igbo + inupiaq + ingoucheg + ido + islandeg + italianeg + inuktitut + japaneg + yuzev-perseg + yuzev-arabeg + javaneg + jorjianeg + karakalpak + kabileg + kachin + kamba + kabardeg + kabuverdianu + kongo + khasi + khotaneg + kikuyu + kwanyama + kazak + khmer + kimbundu + kanareg + koreaneg + konkani + kosrae + kpelle + kanouri + karatchay-balkar + kurukh + kashmiri + kurdeg + kutenai + kerneveureg + kirgiz + latin + ladino + lahnda + lamba + luksembourgeg + lezgi + ganda + limbourgeg + lingala + laoseg + mongo + lozi + lituaneg + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + luyia + latvieg + magahi + maithili + masai + moksha + mandar + mende + moriseg + malgacheg + krenniwerzhoneg + marshall + maori + makedoneg + malayalam + mongoleg + manchou + manipuri + mohawk + marathi + malayseg + malteg + yezhoù lies + muskogi + birmaneg + erza + naurueg + napolitaneg + norvegeg bokmål + ndebele an Norzh + nepaleg + newari + ndonga + nias + niue + nederlandeg + flandrezeg + norvegeg nynorsk + norvegeg + nogay + ndebele ar Su + sotho an Norzh + navac'ho + nyanja + nyamwezi + nyankole + nyoro + okitaneg + ojibwa + oriya + oseteg + osage + punjabi + pangasinan + pahlavi + pampanga + papiamento + palau + henberseg + fenikianeg + pali + poloneg + pohnpei + henbrovañseg + pachto + portugaleg + portugaleg Brazil + portugaleg Europa + kechuaeg + rajasthani + rapanui + rarotonga + romañcheg + rundi + roumaneg + moldoveg + rombo + romanieg + rusianeg + aroumaneg + kinyarwanda + rwa + sanskriteg + sandawe + yakouteg + sasak + santali + sardeg + skoteg + sindhi + sámi an Norzh + sango + heniwerzhoneg + serb-kroateg + shan + singhaleg + sidamo + slovakeg + sloveneg + samoan + sámi ar Su + sámi Luleå + sámi Inari + sámi Skolt + shona + soninke + somali + sogdieg + albaneg + serbeg + serer + swati + sotho ar Su + sundaneg + sumereg + svedeg + swahili + komoreg + sirieg klasel + sirieg + tamileg + telougou + tereno + tetum + tadjik + thai + tigrigna + tigreaneg + tiv + turkmeneg + tokelau + tagalog + klingon + tinglit + tamacheg + tswana + tonga + nyasa tonga + tok pisin + turkeg + tsonga + tsimshian + tatar + tumbuka + tuvalu + twi + tahitianeg + touva + oudmourteg + ouigoureg + ougariteg + ukraineg + umbundu + yezh dianav + ourdou + ouzbekeg + vai + venda + vietnameg + volapük + votyakeg + walloneg + walser + walamo + waray + washo + wolof + kalmouk + xhosa + yao + yapeg + yiddish + yorouba + kantoneg + zhuang + zapoteg + zenaga + sinaeg + sinaeg eeunaet + sinaeg hengounel + zouloueg + zuni + diyezh + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bed + Afrika + Norzhamerika + Suamerika + Oseania + Afrika ar Cʼhornôg + Kreizamerika + Afrika ar Reter + Afrika an Norzh + Afrika ar Cʼhreiz + Afrika ar Su + Amerikaoù + Amerika an Norzh + Karib + Azia ar Reter + Azia ar Su + Azia ar Gevred + Europa ar Su + Aostralazia + Melanezia + Rannved Mikronezia + Polinezia + Azia + Azia ar Cʼhreiz + Azia ar Cʼhornôg + Europa + Europa ar Reter + Europa an Norzh + Europa ar Cʼhornôg + Amerika Latin + Enez Ascension + Andorra + Emirelezhioù Arab Unanet + Afghanistan + Antigua ha Barbuda + Anguilla + Albania + Armenia + Antilhez Nederlandat + Angola + Antarktika + Arcʼhantina + Samoa Amerikan + Aostria + Aostralia + Aruba + Inizi Åland + Azerbaidjan + Bosnia ha Herzegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrein + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Nederlandat Karib + Brazil + Bahamas + Bhoutan + Enez Bouvet + Botswana + Belarus + Belize + Kanada + Inizi Kokoz + Kongo - Kinshasa + Kongo (RDK) + Republik Kreizafrikan + Kongo - Brazzaville + Kongo (Republik) + Suis + Aod an Olifant + Aod Olifant + Inizi Cook + Chile + Kameroun + Sina + Kolombia + Enez Clipperton + Costa Rica + Kuba + Kab Glas + Curaçao + Enez Christmas + Kiprenez + Republik Tchek + Alamagn + Diego Garcia + Djibouti + Danmark + Dominica + Republik Dominikan + Aljeria + Ceuta ha Melilla + Ecuador + Estonia + Egipt + Sahara ar Cʼhornôg + Eritrea + Spagn + Etiopia + Unaniezh Europa + Finland + Fidji + Inizi Falkland + Inizi Falkland (Inizi Maloù) + Mikronezia + Inizi Faero + Frañs + Gabon + Rouantelezh-Unanet + Grenada + Jorjia + Gwiana cʼhall + Gwernenez + Ghana + Jibraltar + Greunland + Gambia + Ginea + Gwadeloup + Ginea ar Cʼheheder + Gres + Inizi Georgia ar Su hag Inizi Sandwich ar Su + Guatemala + Guam + Ginea-Bissau + Guyana + Hong Kong RMD Sina + Hong Kong + Inizi Heard ha McDonald + Honduras + Kroatia + Haiti + Hungaria + Inizi Kanariez + Indonezia + Iwerzhon + Israel + Enez Vanav + India + Tiriad breizhveurat Meurvor Indez + Iraq + Iran + Island + Italia + Jerzenez + Jamaika + Jordania + Japan + Kenya + Kyrgyzstan + Kambodja + Kiribati + Komorez + Saint Kitts ha Nevis + Korea an Norzh + Korea ar Su + Koweit + Inizi Cayman + Kazakstan + Laos + Liban + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Luksembourg + Latvia + Libia + Maroko + Monaco + Moldova + Montenegro + Saint Martin + Madagaskar + Inizi Marshall + Makedonia + Makedonia (RYKM) + Mali + Myanmar (Birmania) + Mongolia + Macau RMD Sina + Macau + Inizi Mariana an Norzh + Martinik + Maouritania + Montserrat + Malta + Moris + Maldivez + Malawi + Mecʼhiko + Malaysia + Mozambik + Namibia + Kaledonia Nevez + Niger + Enez Norfolk + Nigeria + Nicaragua + Izelvroioù + Norvegia + Nepal + Nauru + Niue + Zeland-Nevez + Oman + Panamá + Perou + Polinezia cʼhall + Papoua Ginea-Nevez + Filipinez + Pakistan + Polonia + Sant-Pêr-ha-Mikelon + Enez Pitcairn + Puerto Rico + Tiriadoù Palestina + Portugal + Palau + Paraguay + Qatar + Oseania diabell + Reünion + Roumania + Serbia + Rusia + Rwanda + Arabia Saoudat + Salomon + Sechelez + Soudan + Sveden + Singapour + Saint Helena + Slovenia + Svalbard + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Su Soudan + São Tomé ha Príncipe + Salvador + Sint Maarten + Siria + Swaziland + Tristan da Cunha + Inizi Turks ha Caicos + Tchad + Douaroù aostral Frañs + Togo + Thailand + Tadjikistan + Tokelau + Timor-Leste + Timor ar Reter + Turkmenistan + Tunizia + Tonga + Turkia + Trinidad ha Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Ouganda + Inizi diabell ar Stadoù-Unanet + Stadoù-Unanet + Uruguay + Ouzbekistan + Vatikan + Sant Visant hag ar Grenadinez + Venezuela + Inizi Gwercʼh Breizh-Veur + Inizi Gwercʼh ar Stadoù-Unanet + Viêt Nam + Vanuatu + Wallis ha Futuna + Samoa + Yemen + Mayotte + Suafrika + Zambia + Zimbabwe + Rannved dianav + + + reizhskrivadur alamanek hengounel + reizhskrivadur resianek skoueriekaet + reizhskrivadur alamanek 1996 + krenncʼhalleg + galleg rakvodern + belaruseg akademek + romanekadur ALA-LC 1997 + rannyezh aloukou + armenianeg ar Reter + armenianeg ar Cʼhornôg + lizherenneg latin turkek unvan + sanskriteg hiron boudaat + rannyezh euskarek Bizkaia + rannyezh San Giorgio/Bila + boontling + lizherenneg fonetek etrebroadel + lizherenneg fonetek ouralek + treuzskrivadur X-SAMPA + romanekadur Hepburn + uhelnorvegeg + sanskriteg itihâsa + rannyezh romañchek Jauer + romanekadur kantonek Jyutping + kerneveureg kumun + sanskriteg klasel + rannyezh resianek Lipovaz + reizhskrivadur rusianek goude 1917 + gresianeg untonel + rannyezh Ndyuka + rannyezh Natisone + rannyezh Gniva/Njiva + rannyezh Oseacco/Osojane + rannyezh Pamaka + reizhskrivadur rusianek 1708 Pêr I + romanekadur pinyin + gresianeg liestonel + rannyezh romañchek Puter + reizhskrivadur reizhet + resianeg + romañcheg Grischun + saho + saozneg standart skos + scouse + rannyezh Stolvizza/Solbica + rannyezh romañchek surmiran + rannyezh romañchek sursilvan + rannyezh romañchek sutsilvan + belaruseg Taraskievica + kerneveureg unvan + kerneveureg unvan reizhet + rannyezh skotek Ulad + sanskriteg vedek + valensianeg + rannyezh romañchek Vallader + romanekadur Wade-Giles + + + deiziadur + doare rummañ + moneiz + niveroù + + + sifroù arabek indian + sifroù arabek indian astennet + niveroù armenianek + niveroù armenianek bihan + sifroù balinek + sifroù bengali + urzh rummañ sinaek hengounel - Big5 + deiziadur boudaat + deiziadur sinaat + deiziadur kopt + sifroù devanagari + urzh rummañ ar geriadur + urzh rummañ Unicode dre ziouer + niveroù etiopiat + deiziadur etiopiat + deiziadur etiopiat Amete Alem + sifroù led plaen + urzh rummañ sinaek eeunaet - GB2312 + niveroù jorjianek + deiziadur gregorian + niveroù gresianek + niveroù gresianek bihan + sifroù gujarati + sifroù gurmukhi + niveroù sinaek dekvedennek + niveroù sinaek eeunaet + niveroù sinaek eeunaet an arcʼhant + niveroù sinaek hengounel + niveroù sinaek hengounel an arcʼhant + niveroù hebraek + deiziadur hebraek + deiziadur indian + deiziadur islamek + deiziadur islamek keodedel + deiziadur japanat + sifroù javanek + niveroù japanek + niveroù japanek an arcʼhant + sifroù khmer + sifroù kanarek + sifroù laosek + sifroù arabek ar Cʼhornôg + sifroù malayalam + sifroù mongolek + sifroù myanmar + sifroù shan Myanmar + sifroù oriya + deiziadur persek + urzh rummañ al levr-pellgomz + urzh rummañ pinyin + urzh rummañ adreizhet + deiziadur Republik Sina + niveroù roman + niveroù roman bihan + enklask hollek + urzh rummañ an tresoù + sifroù sundanek + niveroù tamilek hengounel + sifroù tamilek + sifroù telougou + sifroù thai + sifroù tibetan + urzh rummañ hengounel + urzh rummañ UniHan + sifroù vai + + + metrek + RU + SU + + + + [a b {ch} {cʼh} d e ê f g h i j k l m n ñ o p r s t u ù v w x y z] + [á à ă â å ä ã ā æ c ç é è ĕ ë ē í ì ĭ î ï ī ó ò ŏ ô ö ø ō œ q ú ŭ û ü ū ÿ] + [A B C D E F G H I J K L M N O P R S T U V W X Y Z] + + + « + » + + + + + + + + + + Gen + Cʼhwe + Meur + Ebr + Mae + Mezh + Goue + Eost + Gwen + Here + Du + Ker + + + Genver + Cʼhwevrer + Meurzh + Ebrel + Mae + Mezheven + Gouere + Eost + Gwengolo + Here + Du + Kerzu + + + + + Gen + Cʼhwe + Meur + Ebr + Mae + Mezh + Goue + Eost + Gwen + Here + Du + Ker + + + Genver + Cʼhwevrer + Meurzh + Ebrel + Mae + Mezheven + Gouere + Eost + Gwengolo + Here + Du + Kerzu + + + + + + + sul + lun + meu. + mer. + yaou + gwe. + sad. + + + su + lu + mz + mc + ya + gw + sa + + + Sul + Lun + Meurzh + Mercʼher + Yaou + Gwener + Sadorn + + + + + sul + lun + meu. + mer. + yaou + gwe. + sad. + + + su + lu + mz + mc + ya + gw + sa + + + Sul + Lun + Meurzh + Mercʼher + Yaou + Gwener + Sadorn + + + + + + + + miz + + + sizhun + + + dercʼhent-decʼh + decʼh + hiziv + warcʼhoazh + + + eur + + + munut + + + eilenn + + + + + kêr dianav + + + Kaboul + + + Tiranë + + + Marjehamn + + + Bakı + + + Brusel + + + Bahrein + + + Belém + + + São Paulo + + + Mensk + + + Saint John's + + + Kokoz + + + Ürümqi + + + Bogotá + + + La Habana + + + Kab Glas + + + Levkosía + + + Praha + + + Kopenhagen + + + Aljer + + + Galápagos + + + Kaero + + + La'Youn + + + Kanariez + + + Adis Abeba + + + Fidji + + + Faero + + + Pariz + + + Gwernenez + + + Jibraltar + + + Qânâq + + + Gwadeloup + + + Aten + + + Dulenn + + + Jeruzalem + + + Manav + + + Reykjavík + + + Roma + + + Jerzenez + + + Jamaika + + + Phnum Pénh + + + Komorez + + + Saint Kitts + + + P'yongyang + + + Koweit + + + Viangchan + + + Bayrut + + + Saint Lucia + + + Luksembourg + + + Tarabulus (Tripoli) + + + Dar el Beida (Casablanca) + + + Yangon + + + Martinik + + + Moris + + + Maldivez + + + Masqat + + + Panamá + + + Varsovia + + + Mikelon + + + Azorez + + + Asunción + + + Reünion + + + Bukarest + + + Beograd + + + Moskov + + + Yekaterinbourg + + + Anadyr' + + + Singapour + + + Saint Helena + + + Muqdisho + + + São Tomé + + + Salvador + + + Damask + + + N'Djamena + + + Kergelenn + + + Lomé + + + Tuniz + + + Vatikan + + + Sant Visant + + + Kêr Hô-Chi-Minh + + + + + + , +   + + + + dirham EAU + dirham EAU + zirham EAU + dirham EAU + dirham EAU + dirham EAU + + + afghani Afghanistan + + + lek Albania + + + dram Armenia + dram Armenia + zram Armenia + dram Armenia + dram Armenia + dram Armenia + + + florin Antilhez nederlandat + + + kwanza Angola + c'hwanza Angola + gwanza Angola + c'hwanza Angola + kwanza Angola + kwanza Angola + + + peso Arcʼhantina + peso Arcʼhantina + beso Arcʼhantina + feso Arcʼhantina + peso Arcʼhantina + peso Arcʼhantina + + + dollar Aostralia + dollar Aostralia + zollar Aostralia + dollar Aostralia + dollar Aostralia + dollar Aostralia + + + florin Aruba + + + manat Azerbaidjan (1993–2006) + + + manat Azerbaidjan + manat Azerbaidjan + vanat Azerbaidjan + manat Azerbaidjan + manat Azerbaidjan + manat Azerbaidjan + + + mark kemmadus Bosnia ha Herzegovina + mark kemmadus Bosnia ha Herzegovina + vark kemmadus Bosnia ha Herzegovina + mark kemmadus Bosnia ha Herzegovina + mark kemmadus Bosnia ha Herzegovina + mark kemmadus Bosnia ha Herzegovina + + + dollar Barbados + dollar Barbados + zollar Barbados + dollar Barbados + dollar Barbados + dollar Barbados + + + taka Bangladesh + taka Bangladesh + daka Bangladesh + zaka Bangladesh + taka Bangladesh + taka Bangladesh + + + lev Bulgaria + + + dinar Bahrein + dinar Bahrein + zinar Bahrein + dinar Bahrein + dinar Bahrein + dinar Bahrein + + + lur Burundi + + + dollar Bermuda + dollar Bermuda + zollar Bermuda + dollar Bermuda + dollar Bermuda + dollar Bermuda + + + dollar Brunei + dollar Brunei + zollar Brunei + dollar Brunei + dollar Brunei + dollar Brunei + + + boliviano Bolivia + boliviano Bolivia + voliviano Bolivia + boliviano Bolivia + boliviano Bolivia + boliviano Bolivia + + + real Brazil + + + dollar Bahamas + dollar Bahamas + zollar Bahamas + dollar Bahamas + dollar Bahamas + dollar Bahamas + + + ngultrum Bhoutan + + + pula Botswana + pula Botswana + bula Botswana + fula Botswana + pula Botswana + pula Botswana + + + roubl Belarus + + + dollar Belize + dollar Belize + zollar Belize + dollar Belize + dollar Belize + dollar Belize + + + dollar Kanada + dollar Kanada + zollar Kanada + dollar Kanada + dollar Kanada + dollar Kanada + + + lur Kongo + + + lur Suis + + + peso Chile + peso Chile + beso Chile + feso Chile + peso Chile + peso Chile + + + yuan Sina + yuan Sina + yuan Sina + yuan Sina + yuan Sina + yuan Sina + + + peso Kolombia + peso Kolombia + beso Kolombia + feso Kolombia + peso Kolombia + peso Kolombia + + + colón Costa Rica + c'holón Costa Rica + golón Costa Rica + c'holón Costa Rica + colón Costa Rica + colón Costa Rica + + + peso kemmadus Kuba + peso kemmadus Kuba + beso gemmadus Kuba + feso kemmadus Kuba + peso kemmadus Kuba + peso kemmadus Kuba + + + peso Kuba + peso Kuba + beso Kuba + feso Kuba + peso Kuba + peso Kuba + + + escudo Kab Glas + + + kurunenn Tchek + gurunenn Tchek + gurunenn Tchek + kurunenn Tchek + kurunenn Tchek + kurunenn Tchek + + + lur Djibouti + + + kurunenn Danmark + gurunenn Danmark + gurunenn Danmark + kurunenn Danmark + kurunenn Danmark + kurunenn Danmark + + + peso Dominikan + peso Dominikan + beso Dominikan + feso Dominikan + peso Dominikan + peso Dominikan + + + dinar Aljeria + dinar Aljeria + zinar Aljeria + dinar Aljeria + dinar Aljeria + dinar Aljeria + + + kurunenn Estonia + + + lur Egipt + + + nakfa Eritrea + + + birr Etiopia + birr Etiopia + virr Etiopia + birr Etiopia + birr Etiopia + birr Etiopia + + + euro + + + dollar Fidji + dollar Fidji + zollar Fidji + dollar Fidji + dollar Fidji + dollar Fidji + + + lur Inizi Falkland + + + lur gall + lur gall + lur gall + lur gall + lur gall + lur gall + + + lur sterling Breizh-Veur + + + lari Jorjia + + + cedi Ghana + + + lur Jibraltar + + + dalasi Gambia + dalasi Gambia + zalasi Gambia + dalasi Gambia + dalasi Gambia + dalasi Gambia + + + lur Ginea + + + quetzal Guatemala + c'huetzal Guatemala + guetzal Guatemala + c'huetzal Guatemala + quetzal Guatemala + quetzal Guatemala + + + dollar Guyana + dollar Guyana + zollar Guyana + dollar Guyana + dollar Guyana + dollar Guyana + + + dollar Hong Kong + dollar Hong Kong + zollar Hong Kong + dollar Hong Kong + dollar Hong Kong + dollar Hong Kong + + + lempira Honduras + + + kuna Kroatia + c'huna Kroatia + guna Kroatia + c'huna Kroatia + kuna Kroatia + kuna Kroatia + + + gourde Haiti + gourde Haiti + c'hourde Haiti + gourde Haiti + gourde Haiti + gourde Haiti + + + forint Hungaria + + + roupi Indonezia + + + shekel nevez Israel + + + roupi India + + + dinar Iraq + dinar Iraq + zinar Iraq + dinar Iraq + dinar Iraq + dinar Iraq + + + rial Iran + + + kurunenn Island + gurunenn Island + gurunenn Island + kurunenn Island + kurunenn Island + kurunenn Island + + + lur Italia + lur Italia + lur Italia + lur Italia + lur Italia + lur Italia + + + dollar Jamaika + dollar Jamaika + zollar Jamaika + dollar Jamaika + dollar Jamaika + dollar Jamaika + + + dinar Jordania + dinar Jordania + zinar Jordania + dinar Jordania + dinar Jordania + dinar Jordania + + + yen Japan + + + shilling Kenya + + + som Kyrgyzstan + + + riel Kambodja + + + lur Komorez + + + won Korea an Norzh + + + won Korea ar Su + + + dinar Koweit + dinar Koweit + zinar Koweit + dinar Koweit + dinar Koweit + dinar Koweit + + + dollar Inizi Cayman + dollar Inizi Cayman + zollar Inizi Cayman + dollar Inizi Cayman + dollar Inizi Cayman + dollar Inizi Cayman + + + tenge Kazakstan + tenge Kazakstan + denge Kazakstan + zenge Kazakstan + tenge Kazakstan + tenge Kazakstan + + + kip Laos + c'hip Laos + gip Laos + c'hip Laos + kip Laos + kip Laos + + + lur Liban + + + roupi Sri Lanka + + + dollar Liberia + dollar Liberia + zollar Liberia + dollar Liberia + dollar Liberia + dollar Liberia + + + loti Lesotho + + + litas Lituania + + + lur Luksembourg + lur Luksembourg + lur Luksembourg + lur Luksembourg + lur Luksembourg + lur Luksembourg + + + lats Latvia + + + dinar Libia + dinar Libia + zinar Libia + dinar Libia + dinar Libia + dinar Libia + + + dirham Maroko + dirham Maroko + zirham Maroko + dirham Maroko + dirham Maroko + dirham Maroko + + + lur Maroko + lur Maroko + lur Maroko + lur Maroko + lur Maroko + lur Maroko + + + lur Monaco + lur Monaco + lur Monaco + lur Monaco + lur Monaco + lur Monaco + + + leu Moldova + + + ariary Madagaskar + + + denar Makedonia + denar Makedonia + zenar Makedonia + denar Makedonia + denar Makedonia + denar Makedonia + + + lur Mali + lur Mali + lur Mali + lur Mali + lur Mali + lur Mali + + + kyat Myanmar + c'hyat Myanmar + gyat Myanmar + c'hyat Myanmar + kyat Myanmar + kyat Myanmar + + + tugrik Mongolia + tugrik Mongolia + dugrik Mongolia + zugrik Mongolia + tugrik Mongolia + tugrik Mongolia + + + pataca Macau + pataca Macau + bataca Macau + fataca Macau + pataca Macau + pataca Macau + + + ouguiya Maouritania + + + roupi Moris + + + rufiyaa Maldivez + + + kwacha Malawi + c'hwacha Malawi + gwacha Malawi + kwacha Malawi + kwacha Malawi + kwacha Malawi + + + peso Mecʼhiko + peso Mecʼhiko + beso Mecʼhiko + feso Mecʼhiko + peso Mecʼhiko + peso Mecʼhiko + + + ringgit Malaysia + + + metical Mozambik (1980–2006) + metical Mozambik (1980–2006) + vetical Mozambik (1980–2006) + metical Mozambik (1980–2006) + metical Mozambik (1980–2006) + metical Mozambik (1980–2006) + + + metical Mozambik + metical Mozambik + vetical Mozambik + metical Mozambik + metical Mozambik + metical Mozambik + + + dollar Namibia + dollar Namibia + zollar Namibia + dollar Namibia + dollar Namibia + dollar Namibia + + + naira Nigeria + + + cordoba Nicaragua + c'hordoba Nicaragua + gordoba Nicaragua + c'hordoba Nicaragua + cordoba Nicaragua + cordoba Nicaragua + + + kurunenn Norvegia + gurunenn Norvegia + gurunenn Norvegia + kurunenn Norvegia + kurunenn Norvegia + kurunenn Norvegia + + + roupi Nepal + + + dollar Zeland-Nevez + dollar Zeland-Nevez + zollar Zeland-Nevez + dollar Zeland-Nevez + dollar Zeland-Nevez + dollar Zeland-Nevez + + + rial Oman + + + balboa Panamá + balboa Panamá + valboa Panamá + balboa Panamá + balboa Panamá + balboa Panamá + + + nuevo sol Perou + + + kina Papoua Ginea-Nevez + c'hina Papoua Ginea-Nevez + gina Papoua Ginea-Nevez + c'hina Papoua Ginea-Nevez + kina Papoua Ginea-Nevez + kina Papoua Ginea-Nevez + + + peso Filipinez + peso Filipinez + beso Filipinez + feso Filipinez + peso Filipinez + peso Filipinez + + + roupi Pakistan + + + zloty Polonia + + + guarani Paraguay + guarani Paraguay + uarani Paraguay + guarani Paraguay + guarani Paraguay + guarani Paraguay + + + rial Qatar + + + leu Roumania (1952–2006) + leu Roumania (1952–2006) + leu Roumania (1952–2006) + leu Roumania (1952–2006) + leu Roumania (1952–2006) + leu Roumania (1952–2006) + + + leu Roumania + leu Roumania + leu Roumania + leu Roumania + leu Roumania + leu Roumania + + + dinar Serbia + dinar Serbia + zinar Serbia + dinar Serbia + dinar Serbia + dinar Serbia + + + roubl Rusia + + + lur Rwanda + + + riyal Arabia Saoudat + + + dollar Inizi Salomon + dollar Inizi Salomon + zollar Inizi Salomon + dollar Inizi Salomon + dollar Inizi Salomon + dollar Inizi Salomon + + + roupi Sechelez + + + lur Soudan + + + kurunenn Sveden + gurunenn Sveden + gurunenn Sveden + kurunenn Sveden + kurunenn Sveden + kurunenn Sveden + + + dollar Singapour + dollar Singapour + zollar Singapour + dollar Singapour + dollar Singapour + dollar Singapour + + + lur Saint Helena + + + kurunenn Slovakia + gurunenn Slovakia + gurunenn Slovakia + c'hurunenn Slovakia + kurunenn Slovakia + kurunenn Slovakia + + + leone Sierra Leone + + + shilling Somalia + + + dollar Surinam + dollar Surinam + zollar Surinam + dollar Surinam + dollar Surinam + dollar Surinam + + + lur Su Soudan + lur Su Soudan + lur Su Soudan + lur Su Soudan + lur Su Soudan + lur Su Soudan + + + dobra São Tomé ha Príncipe + dobra São Tomé ha Príncipe + zobra São Tomé ha Príncipe + dobra São Tomé ha Príncipe + dobra São Tomé ha Príncipe + dobra São Tomé ha Príncipe + + + roubl soviedel + roubl soviedel + roubl soviedel + roubl soviedel + roubl soviedel + roubl soviedel + + + colón Salvador + c'holón Salvador + golón Salvador + c'holón Salvador + colón Salvador + colón Salvador + + + lur Siria + + + lilangeni Swaziland + + + baht Thailand + baht Thailand + vaht Thailand + baht Thailand + baht Thailand + baht Thailand + + + roubl Tadjikistan + roubl Tadjikistan + roubl Tadjikistan + roubl Tadjikistan + roubl Tadjikistan + roubl Tadjikistan + + + somoni Tadjikistan + + + manat Turkmenistan (1993–2009) + manat Turkmenistan (1993–2009) + vanat Turkmenistan (1993–2009) + manat Turkmenistan (1993–2009) + manat Turkmenistan (1993–2009) + manat Turkmenistan (1993–2009) + + + manat Turkmenistan + manat Turkmenistan + vanat Turkmenistan + manat Turkmenistan + manat Turkmenistan + manat Turkmenistan + + + dinar Tunizia + dinar Tunizia + zinar Tunizia + dinar Tunizia + dinar Tunizia + dinar Tunizia + + + paʻanga Tonga + paʻanga Tonga + baʻanga Tonga + faʻanga Tonga + paʻanga Tonga + paʻanga Tonga + + + lur Turkia + + + dollar Trinidad ha Tobago + dollar Trinidad ha Tobago + zollar Trinidad ha Tobago + dollar Trinidad ha Tobago + dollar Trinidad ha Tobago + dollar Trinidad ha Tobago + + + dollar nevez Taiwan + dollar nevez Taiwan + zollar nevez Taiwan + dollar nevez Taiwan + dollar nevez Taiwan + dollar nevez Taiwan + + + shilling Tanzania + + + hryvnia Ukraina + + + shilling Ouganda + + + dollar SU + dollar SU + zollar SU + dollar SU + dollar SU + dollar SU + + + peso Uruguay + peso Uruguay + beso Uruguay + feso Uruguay + peso Uruguay + peso Uruguay + + + som Ouzbekistan + + + bolivar Venezuela + bolivar Venezuela + volivar Venezuela + bolivar Venezuela + bolivar Venezuela + bolivar Venezuela + + + dong Viêt Nam + dong Viêt Nam + zong Viêt Nam + dong Viêt Nam + dong Viêt Nam + dong Viêt Nam + + + vatu Vanuatu + + + tala Samoa + tala Samoa + dala Samoa + zala Samoa + tala Samoa + tala Samoa + + + lur CFA BEAC + + + arcʼhant + + + aour + + + unanenn kenaoz europat + + + unanenn voneiz europat + + + unanenn jediñ europat (XBC) + + + unanenn jediñ europat (XBD) + + + dollar Karib ar reter + dollar Karib ar reter + zollar Karib ar reter + dollar Karib ar reter + dollar Karib ar reter + dollar Karib ar reter + + + gwirioù tennañ arbennik + + + lur aour Frañs + + + lur Unaniezh etrebroadel an hentoù-houarn + + + lur CFA BCEAO + + + palladiom + + + lur CFP + + + platin + + + kod moneiz amprouiñ + + + moneiz dianav + + + dinar Yemen + dinar Yemen + zinar Yemen + dinar Yemen + dinar Yemen + dinar Yemen + + + rial Yemen + + + rand Suafrika + + + kwacha Zambia (1968–2012) + c'hwacha Zambia (1968–2012) + gwacha Zambia (1968–2012) + kwacha Zambia (1968–2012) + kwacha Zambia (1968–2012) + kwacha Zambia (1968–2012) + + + kwacha Zambia + c'hwacha Zambia + gwacha Zambia + kwacha Zambia + kwacha Zambia + kwacha Zambia + + + dollar Zimbabwe (1980–2008) + dollar Zimbabwe (1980–2008) + zollar Zimbabwe + dollar Zimbabwe (1980–2008) + dollar Zimbabwe (1980–2008) + dollar Zimbabwe (1980–2008) + + + dollar Zimbabwe (2009) + dollar Zimbabwe (2009) + zollar Zimbabwe (2009) + dollar Zimbabwe (2009) + dollar Zimbabwe (2009) + dollar Zimbabwe (2009) + + + + + + y + n + + + + diff --git a/library/Zend/Locale/Data/br_FR.xml b/library/Zend/Locale/Data/br_FR.xml new file mode 100755 index 000000000..b562eba74 --- /dev/null +++ b/library/Zend/Locale/Data/br_FR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/brx.xml b/library/Zend/Locale/Data/brx.xml new file mode 100755 index 000000000..99db52cf8 --- /dev/null +++ b/library/Zend/Locale/Data/brx.xml @@ -0,0 +1,4142 @@ + + + + + + + + + + + + {0} ({1}) + {0},{1} + + + अब्खाज़ियन् + अचेहनी + अकोली + अडांगमे + अडीगे + अवस्तन् + अफ्रीकी + अफ्रीहीली + ऐनू + अकन + अकाडिनी + अलुट + अम्हारिक् + आर्गोनी + पुरानी अंग्रेज़ी + अंगीका + अरबी + अरामाईक + अरापाहो + अरावाक + असामी + अवारिक् + अवधी + आयमारा + अज़रबैजानी + बशख़िर् + बलूची + बालिनी + बास्क़् + बैलोरूसियन् + बेजा + बेंबा + बल्गैरियन् + भोजपुरी + बिस्लामा + बिकोल् + बिनी + सीकसीका + बांबारा + बंगला + तिब्बती + ब्रटों + ब्रज + बड़ो + बोस्नियाई + बुरियात + बुगीनी + ब्लीन + कातालान् + काद्दौ + कारीब् + आत्सम + चेचेन् + चेबुआनो + चामोरो + चीबचा + चगताई + चुकेसे + मारी + चीनूक् जार्गन् + चौक्टो + चिपेवियान् + चीरोकी + शायान् + कोर्सीकन् + कॉप्टीक् + क्री + तुर्की क्रिमिया + चेक् + काशुबियान् + चर्च स्लाविक् + चुवाश् + वैल्श् + डैनीश् + डकौटा + दर्गवा + ज़र्मन + जर्मन (ऑस्ट्रिया) + उच्च स्तरिय स्वीस जर्मन + दलावार् + स्लेव् + डोगरीब् + डींगका + डोगरी + सोर्बियन् + डुआला + मध्य डच + दीवेही + द्युआला + भुटानी + एवे + एफीक् + प्राचीन मिस्री + एकाजुक + ग्रीक + एलामी + अंग्रेज़ी + अंग्रेज़ी (ऑस्ट्रेलिया का) + अंग्रेज़ी (कनाडाई) + अंग्रेजी (ब्रिटिश) + अंग्रेज़ी (अमरिकी) + मध्य अंग्रेज़ी + एस्पेरान्तो + स्पैनिश + लैटिन अमरिकी स्पैनिश + ईवेरियाई स्पैनिश + ऐस्टोनियन् + बास्क् + एवौंडो + फार्सी + फाँग् + फाँटी + फुलाह् + फिनिश् + फिलिपिनो + फ़ीजी + फिरोज़ी + फोन + फ्रांसीसी + फ्रांसीसी (कनाडाई) + फ्रांसीसी (स्वीस) + मध्य फ्रांसीसी + पुरानी फ्रांसीसी + उत्तरी फ्रीज़ियन् + पूर्वी फ्रीज़ियन् + फ्रीउलीअन् + पश्चीमी फ्रीज़ियन् + आईरिश + गा + गायो + ग्बाया + स्कॉट्स् गैलिक् + गीज़् + गीलबर्टी + गैलिशियन् + मध्य उच्चस्तरी जर्मन + गुआरानी + पुरानी उच्चस्तरी जर्मन + गाँडी + गोरंटालो + गॉथिक + ग्रेबो + प्राचीन यूनानी + स्वीस जर्मन + गुजराती + मैंक्स + ग्वीचलीन + हउसा + हईडा + हवाईअन + हिब्रु + हिंदी + हीलीगैनोन + हीत्ती + ह्मौंग + हीरी मोटु + क्रोएशन् + ऊपरी सौर्बियन + हाईशीयन् + हंगैरीयन् + हूपा + अरमेनियन् + हेरेरो + ईन्टरलिंग्वा + ईबान् + इन्डोनेशियन् + ईन्टरलिंग्वे + ईग्बो + सीचुआन् यी + इनुपियाक़् + ईलोको + ईंगुष + ईडो + आईस्लैंडिक् + ईटालियन् + इनूक्टीटूत् + जापानी + लोजबान + यहुदी फ़ारसी + यहुदी अरबी + जावानीस + जॉर्जियन् + कारा कलपक + काबील् + कचीन् + जु + कंबा + कावी + कबार्डी भाषा + त्याप् + कोरो + कॉंगो + ख़ासी + ख़ोतानी + किकुयु + कुआनयामा + क़ज़ाख़् + कलालीसुत + ख्मेर + कींबुंडु + कन्नड् + कोरीयन् + कोंकणी + कोस्राईयन् + क्पेले + कनुरी + कराचय् बलकार् + करेलियन् + कुरुख़् + कश्मिरी + कुर्दी + कुमीक् + कुतेनाई + कोमी + कौर्नवॉली + किरग़ीज़् + लैटीन् + लाड़ीनो + लाह्डां + लांबा + लुक्समबुर्गी + लेज़गीयान + गांडा + लींबुर्गी + लिंगाला + लाओसीयन् + मोंगो + लोज़ी + लिथुआनियन् + लुबा कटांगा + लुबा लुलुआ + लुईसेनो + लुंडा + लुओ + लुशाई + लाटवियन् (लैट्टीश) + मादुरी + मघी + मैथीली + मक्सर + मांडींगो + मसाई + मोक्षा + मंदार + मेंदे + मालागासी + मध्य आईरीश भाषा + मार्शली + माओरी + मीकमाक + मिनंगकाबाउ + मैसेडोनियन् + मलयालम + मोंगोलियन + मांचु + मणीपुरी + मोहोक + मोस्सी + मराठी + मलाय + मालटीज़् + क्रीक + मीरांडी + मारवाड़ी + बर्मी + ऐर्ज़िया + नाऊरू + नेआपोलिटन + नोर्वेगी बोकमाल + उत्तर न्दबेले + नीजी स्तरिय जर्मन + नेपाली + नेवारी + न्डोंगा + नियास + नियुइआन + डच् + फ्लेमी + नॉर्वेजियन् नीनॉर्स्क् + नॉर्वेजीयन् + नोगाई + पुरानी नॉर्स् + न्गको + दक्षिणी न्दबेले + नावाहो + पुरानी नेवारी + न्यानजा + न्यामवेज़ी + न्यानकोले + न्यौरो + न्ज़ीमा + ओक्सीतान + ओहीबवा + ओरोमो (अफ़ान) + उड़िया + ओस्सेटी + ओसेज + तुर्की ओटोमान + पंजाबी + पांगासीनन + पहलवी + पंपंगा + पापीआमेन्तो + पालाऊ + पुरानी फ़ारसी + फीनीसी + पाली + पोलिश + पोहनपी + पुरानी प्रोवाँसाल + पख़्तु + पुर्तगाली + क्वेचुआ + राजस्थानी + रापानुई + रारोटोंगा + रेह्टो-रोमान्स + किरून्दी + रूमानीयन् + मोल्डेवियन् + रुमानी + रुट + रुसी + आरोमानी + किन्यारुआण्डा + संस्कृत् + संडावे + यकुट् + समारीती आरामाईक़ + सासक + संताली + सार्दीनी + सीसीलीअन + स्कॉट + सिंधी + उत्तरी सामी + सेलकुप + सांग्रो + पुरानी आईरीश + सर्बो-क्रोएशन् + शान + सींहाला + सीदामो + स्लोवाक् + स्लोवेनियन् + सामोअन + पश्चीमी सामी + लुले सामी + ईनारी सामी + स्कोल्ट् सामी + शोना + सोनिंगके + सोमाली + सोगडीयन + आल्बेनियन् + सर्बियन् + स्रनान् टॉंगो + सेरेर + स्वाटि + सुन्दानी + सुकुमा + सुसु + सुमेरिअन + स्वीडिश + स्वाहिली + पारंपरीक सिरिआक + सिरिआक + तमिळ + तेलुगु + तीमने + तेरेनो + तेतुम + ताजिक् + थाई + तिग्रीन्या + टीग्रे + टीव् + तुर्कमेन + टोकेलौ + तागालोग + क्लींगदन + ट्लिंगीत + तमाशेक + त्स्वाना + टॉंगा + न्यासा टॉंगा + तोक पिसीन + तुर्की + सोंगा + त्सीमशीआन् + टाटर् + टुँबुका + टुवालु + ट्वी + टाहिटि + टुवी + उड़मुर्त + उईग़ुर + उगारिती + यूक्रेनियन् + उंबुंडु + अज्ञात या अवैध भाषा + ऊर्दु + उज़बेक् + वाई + वेंडा + वियेतनामी + वोलापोक + वोटीक + वालुन + वालामो + वारय + वाशो + वोलोफ + कालमीक + ख़ोसा + याओ + यापीज़ + यीद्दीश + योरूबा + ज़ुआंग + ज़ापोतेक + ब्लीस चिन्ह + ज़ेनागा + चीनी + चीनी (सरलीकृत) + चीनी (पारम्परिक) + ज़ुलू + ज़ुनी + रिक्त + ज़ाज़ा + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + दुनिया + अफ्रीका + उत्तर अमरिका + दक्षिण अमरिका + ओशेआनिया + पश्चिमी अफ्रीका + मध्य अमरिका + पूर्वी अफ्रीका + उत्तरी अफ्रीका + मध्य अफ्रीका + दक्षिणी अफ्रीका + अमरिकाज़् + उत्तरी अमरिका + कैरिबियन + पूर्वी एशिया + दक्षिणी एशिया + दक्षिण-पूर्वी एशिया + दक्षिणी यूरोप + ऑस्ट्रेलिया एवं न्यूजीलैंड + मेलीनेशिया + माईक्रोनेशिया + पोलीनेशिया + एशिया + मध्य एशिया + पश्चिमी ऐशिया + यूरोप + पूर्वी यूरोप + उत्तरी यूरोप + पश्चिमी यूरोप् + लैटिन अमरिका एवं करीबी + ऍन्डोरा + संयुक्त अरब अमीरात + अफ़ग़ानिस्तान + एन्टिगुआ एवं बारबूडा + एंगीला + अल्बानिया + आर्मेनिया + नीदरलैंड्स एंटिलीज़ + अंगोला + अंटार्कटिका + अर्जेण्टिना + अमरिकी समोआ + ऑस्ट्रिया + ऑस्ट्रेलिया + अरूबा + आलाँड द्वीप + अज़रबैजान + बोसनिया हर्ज़ेगोविना + बारबाडोस + बंगलादेश + बेल्जियम + बुर्किना फासो + बल्गैरिया + बहरैन + बुरुंडी + बेनेँ + सेँ बार्थेलेमी + बरमूडा + ब्रूनइ + बोलीविया + ब्राज़ील + बहामा + भूटान + बुवे द्वीप + बोत्स्वाना + बेलारूस + बेलिज़ + कैनाडा + कोकोस द्वीप + कॉंगो किनशासा + सेंट्रल अफ्रीकन रिपब्लिक + कॉंगो ब्राज़्ज़ावील + स्वित्ज़रलैंड + आईवरी कोस्ट + कुक द्वीप + चिली + कोमेरान + चीन + कोलम्बिया + कोस्टारीका + क्यूबा + कैप वेर्दे + क्रिस्मस द्वीप + साइप्रस + चेक गणराज्य + जर्मनी + द्जिबूती + डेनमार्क + डोमिनिका + डोमिनिकन गणराज्य + अल्जीरिया + एक्वाडोर + एस्टोनिया + मिस्र + पश्चिमी सहारा + एरिट्रिया + स्पेन + इथिओपिया + यूरोपीय संघ + फिनलैंड + फिजी + फ़ॉल्कलैंड द्वीप + माइक्रोनेशिया + फरो द्वीप + फ्राँस + गैबॉन + ब्रितन + ग्रेनडा + जॉर्जिया + फ्राँसीसी गिआना + गेर्नसे + घाना + जिब्राल्टर + ग्रीनलैण्ड + गाम्बिया + गिनी + ग्वादलुप + इक्वेटोरियल गिनी + ग्रीस + दक्षिण जोर्जिया एवं दक्षिण सैंडवीच द्वीप + गोतेदाला + गुआम + गीनी-बिसाउ + गुयाना + हाँगकाँग विशेष प्रशासनिक क्षेत्र चीन + हर्ड द्वीप एवं मैकडोनॉल्ड द्वीप + हौण्डूरास + क्रोएशिया + हाइती + हंगरी + इंडोनेशिया + आयरलैंड + इस्राइल + आईल ऑफ़ मैन + भारत + ब्रिटिश हिंद महासागरिय क्षेत्र + ईराक़ + ईरान + आइसलैंड + इटली + जर्सी + जमाइका + जॉर्डन + जापान + केन्या + किर्गिज़ + कम्बोडिया + किरिबाती + कोमोरोज़ + सेंट किट्स एवं नेविस + उत्तर कोरिया + दक्षिण कोरिया + कुवैत + केमैन द्वीप + कज़ाखस्तान + लाओस + लेबनोन + सेंट लूसिया + लिक्टैनस्टाईन + श्री लँका + लाइबेरिया + लसोथो + लिथुआनिया + लक्समबर्ग + लाट्वीया + लीबिया + मोरोक्को + मोनाको + मोल्डेविया + मोंटेनेग्रो + सेँ मार्टेँ + मदागास्कर + मार्शल द्वीप + मैसेडोनिया + माली + म्यानमार + मंगोलिया + मकाओ विशेष प्रशासनिक क्षेत्र (चीन) + उत्तरी मारियाना द्वीप + मार्टीनिक + मॉरिटेनिया + मॉंसेरा + माल्टा + मॉरिस + मालदीव + मलावी + मैक्सिको + मलेशिया + मोज़ाम्बिक + नामीबिया + न्यू कैलेडोनिया + नाइजेर + नॉरफ़ॉक द्वीप + नाइजीरिया + निकारागुआ + नेदरलैण्ड + नॉर्वे + नेपाल + नाउरू + नीयूए + न्यूज़ीलैंड + ओमान + पनामा + पेरू + फ्राँसीसी पॉलिनीशिया + पापुआ न्यू गिनी + फिलीपिन्स + पाकिस्तान + पोलैण्ड + सेँ पीएर एवं मि‍केलॉं + पिटकेर्न + पुएर्टो रीको + फ़िलिस्तीन + पुर्तगाल + पलाऊ + पारागुए + क़तार + बाहरिय ओशेआनिया + रेयूनियॉं + रोमानिया + सर्बिया + रूस + रूआण्डा + सऊदी अरब + सॉलोमन द्वीप + सेशेल्स + सूदान + स्वीडन + सिंगापुर + सेण्‍ट हेलेना + स्लोवेनिया + स्वाल्बार्ड एवं यान मायेन + स्लोवाकिया + सियेरा लेओन + सैन मरीनो + सेनेगाल + सोमालिया + सुरिनाम + साउँ-तोमे एवं प्रिंसिप + ऍल साल्वाडोर + सीरिया + स्वाज़ीलैंड + तुर्की एवं कैकोज़ द्वीप + चाड + फ्राँसीसी उत्तरी क्षेत्रों + टोगो + थाइलैण्ड + ताजिकिस्तान + टोकेलौ + पूर्वी तिमोर + तुर्कमेनीस्तान + त्युनिशिया + टॉंगा + तुर्की + ट्रिनिडाड एवं टोबैगो + तुवालु + ताइवान + तंज़ानिया + यूक्रेन + युगाँडा + युनाइटेड स्टेट्स के छोटे बाहरिय द्वीप + संयुक्त राज्य अमरिका + युरूगुए + उज़बेकिस्तान + वैटिकन + सेंट विंसंट एवं दी ग्रनाडीन्स् + वेनेज़ुएला + ब्रिटिश वर्जीन आईलंड्स + यु.एस. वर्जीन आईलंड्स + वियतनाम + वानाऊटु + वॉलेस एवं फ़्यूचूना + समोआ + यमन + मैयौट + दक्षिण अफ्रीका + ज़ाम्बिया + ज़ीम्बाब्वे + अज्ञात या अवैध प्रदेश + + + पारम्पारिक जर्मन वर्तनी 1901 + पारम्पारिक रेसीयन वर्तनी 1994 + जर्मन वर्तनी 1996 + मध्य फ्रांसीसी 1606 तक + पूर्वी अर्मेनियाई + युनीफाईड तुर्की लैटीनी वर्तनी + सान जीओर्जीओ / बीला डायलेक्ट + बुन्तलींग + आईपीए फ़ोनेटीक्स + युपीए फ़ोनेटीक्स + रेज़ीयन की लीपोवाज़ डायलेक्ट + एकस्वरीय + नाटीसोन डायलेक्ट + ग्नीवा या न्जीवा डायलेक्ट + ओसेआको ओसोजाने डायलेक्ट + बहुस्वरीय + कम्प्यूटर + संशोधित वर्तनी + रेज़ीयन + साहो + मानक स्कॉट अंग्रेज़ी + स्काउज़ + श्टोलविज़्ज़ा या सोलबीका डायलेक्ट + तारास्कीएवीचा वर्तनी + + + पंचाग + वर्गीकरण + मुद्रा + + + पारम्पारिक चीनी वर्गीकरण बीग फ़ाईव + बौद्ध पंचांग + चीनी पंचांग + सरलीकृत चीनी वर्गीकरण जीबी2312 + ग्रेगरीअन पंचांग + यहुदी पंचांग + इस्लामी पंचांग + इस्लामी नागरिक पंचांग + जापानी पंचांग + दूरभाष निर्देशिका वर्गीकरण + पिनयीन वर्गीकरण + चीनी गणतंत्र पंचांग + स्ट्रोक वर्गीकरण + पारम्पारिक वर्गीकरण + + + मिथार खिलमिथार + यु.एस + + + देवनागरी: {0} + क्षेत्र:भारत {0} + + + + [\u093C \u0901 \u0902 अ आ इ ई उ ऊ ऍ ए ऐ ऑ ओ औ क ख ग घ च छ ज झ ञ ट ठ ड {ड\u093C} ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ा ि ी \u0941 \u0942 \u0943 \u0945 \u0947 \u0948 ॉ ो ौ \u094D] + [\u200C\u200D] + [अ आ इ ई उ ऊ ऍ ए ऐ ऑ ओ औ क ख ग घ च छ ज झ ञ ट ठ ड {ड\u093C} ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह] + + + + + + + + + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/yy GGGGG + + + + + + d + EEEE,dd MMMM GGGGy + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + d-MMM + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + जानुवारी + फेब्रुवारी + मार्स + एफ्रिल + मे + जुन + जुलाइ + आगस्थ + सेबथेज्ब़र + अखथबर + नबेज्ब़र + दिसेज्ब़र + + + + + + फे + मा + + मे + जु + जु + + से + + + दि + + + + + + + रबि + सम + मंगल + बुद + बिसथि + सुखुर + सुनि + + + रबिबार + समबार + मंगलबार + बुदबार + बिसथिबार + सुखुरबार + सुनिबार + + + + + + + मं + बु + बि + सु + सु + + + + + + + सिथासे/खोन्दोसे/बाहागोसे + खावसे/खोन्दोनै/बाहागोनै + खावथाम/खोन्दोथाम/बाहागोथाम + खावब्रै/खोन्दोब्रै/फुरा/आबुं + + + + + + + फुं + बेलासे + + + + + + ईसा.पूर्व + सन + + + + + + EEEE, MMMM d, y + + + + + MMMM d, y + + + + + MMM d, y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + EEEE,dd MMMM GGGGy + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + d-MMM + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + बैसागो/बैसाग + जेथो + आसार + सावुन + भाद्र + आसिन + खाथि + आगाह्न + फुस + मागो + फागुन + सैथो + + + + + + + + जौथाय + + + बोसोर + + + दान + + + सबथा/हबथा + + + सान + मैया + दिनै + गाबोन + + + सप्ताह के दिन + + + फुं/बेलासे + + + रिंगा + + + मिनिथ + + + सेखेन्द + + + ओनसोल + + + + + अज्ञात + + + अंडोरा + + + दुबई + + + काबूल + + + एंटिगुआ + + + एंगिला + + + टिरान + + + येरेवान + + + लुआँडा + + + रोथेरा + + + पामर + + + स्योवा + + + मॉसन + + + डेविस + + + वॉस्तॉक + + + केसी + + + डुमॉं ड्युरवील + + + मकमर्डो + + + रियो गालेगोस + + + मेंडोज़ा + + + सान हुआँ + + + उशूआयिया + + + ला रिओख़ा + + + सान लुईस + + + काटामार्का + + + जुजुई + + + टुकुमान + + + कोर्डोबा + + + बुएनोस एरेस + + + पागो पागो + + + वियेना + + + पर्थ + + + यूक्ला + + + डार्विन् + + + एडलेड् + + + ब्रोकन हिल् + + + करी + + + मेलबोर्न् + + + होबार्ट् + + + लिंडमेन् + + + सिडनी + + + ब्रीसबेन् + + + लोर्ड होव् + + + अरूबा + + + बाकू + + + बार्बाडोस + + + ढाका + + + ब्रसल्स + + + ऊगाडुगु + + + सोफ़िया + + + बहरीन + + + बुजुम्बुरा + + + पोर्टो-नोवो + + + बर्मुडा + + + ब्रुनइ + + + ला पाज़ + + + एईरुनेपे + + + रियो ब्रान्को + + + पोर्टो वेल्हो + + + बोआ विस्टा + + + मनाउस + + + कुईआबा + + + काम्पो ग्रांडे + + + बेलेम + + + अरागुआईना + + + साँव पावलो + + + बाहिया + + + फ़ोर्टालेज़ा + + + माचेईओ + + + रेसीफ़े + + + नोरोन्हा + + + नास्साउ + + + थिम्पु + + + गैबोरोन + + + मिन्स्क + + + बेलिज़ + + + डॉसन + + + व्हाईट हॉर्स + + + इनूविक + + + वानकुवर + + + डॉसन क्रिक + + + यलोनाईफ + + + एडमंटन + + + स्विफ्ट करंट + + + केम्ब्रिज खाडी + + + रेजिना + + + विनीपॅग + + + रॅज़ोल्यूट + + + रेनी रीवर + + + रेनकिन इनलेट + + + कॉरल बन्दरगाह + + + थंडर खाडी + + + निपिगॉन + + + टोरोंटो + + + इकाल्यूईत + + + पंग्नीरटुँग् + + + मोंक्ट्न + + + हैलिफेक्स + + + गूस (खाडी) बे + + + ग्लास (खाडी) बे + + + ब्लाँ-साबलोन + + + सेंट जोन्स + + + कोकोस + + + किन्शासा + + + लुबुम्बाशी + + + बाँगी + + + ब्राज़ावील + + + ज़्युरिक + + + अबिद्जान + + + रारोटॉंगा + + + ईस्टर आइलैंड + + + सेंटिआगो + + + दुआला + + + काश्गर + + + उरुमकी + + + चोंग्क़ींग + + + हर्बिन + + + बोगोटा + + + कॉस्टा रिका + + + हवाना + + + केप वॅर्दे + + + क्यूरासाओं + + + क्रिस्मस आइलैंड + + + निकोसिया + + + बर्लिन + + + ड्जिबुटी + + + कोपनहागन + + + डॉमिनिका + + + साँतो डोमिंगो + + + आल्जीए + + + गॅलापागोस + + + गुआयाकिल + + + टैलिन + + + कायरो + + + अल आइउन + + + अस्मेरा + + + कनेरी द्वीप + + + सेउता + + + मैड्रिड + + + ऍडिस अबाबा + + + हैल्सिंकी + + + फ़िजी + + + स्टैनली + + + ट्रुक + + + पोनापे + + + कोसराए + + + फ़ैरो + + + पॅरिस + + + लिब्रविल + + + + ब्रीटीश समर टाईम + + लंदन + + + ग्रेनाडा + + + तिबिलिसी + + + कायेन + + + आक्रा + + + जिब्राल्टर + + + थ्यूल + + + गॉडथैब + + + स्कोर्सबाइसुंड + + + डेनमार्क्सहैवन + + + बन्जुल + + + कोनाक्री + + + गुआदलुप + + + मालाबो + + + एथन्स + + + साउथ जॉर्जिया + + + ग्वाटेमाला + + + ग्वाम + + + बिस्साउ + + + गुयाना + + + हाँगकाँग + + + पॉर-ओ-प्रँस + + + बुदापेस्ट + + + जाकार्ता + + + पोंतिआनाक + + + माकास्सार + + + जयापुरा + + + + आईरीश समर टाईम + + डबलिन + + + येरुसलम + + + चागोस + + + बग़दाद + + + तेहरान + + + रीकयाविक + + + रोम + + + जमैका + + + अमान + + + टोक्यो + + + नैरोबी + + + बिश्केक + + + नॉम पेन + + + एंडरबरी + + + किरीतिमाति + + + तरावा + + + कोमोरो + + + सेंट किट्स + + + प्योंगयाँग + + + सोल + + + कुवैत + + + केमॅन + + + अक्ताउ + + + ओराल + + + अक़्टोबे + + + कीज़ीलोर्डा + + + अल्माटी + + + वियंसियान + + + बैरुत + + + सेंट लुसीया + + + वादुज़ + + + कोलंबो + + + मोनरोविया + + + मसेरू + + + विल्निउस + + + लक्ज़मबर्ग + + + रिगा + + + त्रिपोली + + + काज़ाब्लाँका + + + मोनाको + + + चिसीनौ + + + ऐंटनानरीवो + + + क्वाजालैन + + + मजूरो + + + बामाको + + + रंगून + + + होव्ड + + + उलानबातर + + + चोइबालसन + + + मकाऊ + + + सइपान + + + मार्टीनीक + + + न्वाकशॉट + + + मॉंसेरा + + + माल्टा + + + मॉरिशस + + + मालदीव + + + ब्लांटीर + + + टिहुआना + + + हर्मोसिलो + + + माज़ाट्लान + + + चिवावा + + + मोंटेरे + + + मेक्सिको सिटी + + + मेरिडा + + + कानकुन + + + क्वाला लम्पुर + + + कूचिंग + + + मापुटो + + + विन्डोक + + + नूमिया + + + नीआमे + + + नोरफ़ोक + + + लागोस + + + मनागुआ + + + ऐम्स्टरडम + + + ओस्लो + + + काठमांडौ + + + नौरू + + + नियुएई + + + चॅथम + + + औकलैण्ड + + + मस्कट + + + पनामा + + + लीमा + + + टाहिटी + + + मार्केसास + + + गाम्बिये + + + पोर्ट मोर्सबी + + + मनीला + + + कराची + + + वॉरसॉ + + + मिकलों + + + पिट्कैर्न + + + पुएर्तो रिको + + + गाज़ा + + + अज़ोर + + + माडेरा + + + लिस्बन + + + पलाऊ + + + आसुनसीओन + + + क़तार + + + रेयूनियॉं + + + बुकारेस्ट + + + कालिलीनग्राड + + + मॉस्को + + + वोल्गोग्राड + + + समारा + + + येकातेरिनबर्ग + + + ओम्स्क + + + नोवोसिबिर्स्क + + + क्रास्नोयार्स्क + + + ईर्कुत्स्क + + + याकूत्स्क + + + व्लाडिवॉस्टोक + + + सख़ालिन + + + मगदन + + + कामचटका + + + अनाडीर + + + किगालि + + + रियाध + + + ग्वाडालकनाल + + + माहे + + + खार्तूम + + + स्टॉकहॉम + + + सिंगापुर + + + सेंट हेलेना + + + फ़्रीटाउन + + + डाकार + + + मोगाडिशू + + + पारामारिबो + + + साँव टोमे + + + ऍल साल्वादोर + + + दमास्कस + + + म्बाबने + + + ग्रॅंड टर्क + + + न्जामेना + + + कॅरगेइलेन + + + लोमे + + + बैंगकॉक + + + दुशांबे + + + फ़काओफ़ो + + + डिली + + + अश्गाबात + + + ट्यूनिस + + + टॉंगाटापु + + + इस्तांबुल + + + पोर्ट ऑफ़ स्पेन + + + फ़ुनाफ़ूटी + + + ताइपेइ + + + दार एस सलाम + + + उज़्गोरोड् + + + कीव + + + सिम्फेरोपोल + + + झापरोझ्य + + + कंपाला + + + मीडवे + + + जौन्स्टन + + + वाके + + + एडेक + + + नोम + + + होनोलुलु + + + ऐन्करेज + + + यकूतत + + + जुनो + + + लोस ऐंजिलेस + + + ब्वाज़ + + + फीनिक्स + + + डॅनवर + + + न्यू सॅलेम + + + सैन्टर + + + शिकागो + + + मेनोमिनी + + + वॅंसेन् + + + पिटर्सबर्ग + + + टॅल सिटी + + + नॉक्स + + + विनामॅक + + + मारेंगो + + + इन्डियानापोलिस + + + लुईवील + + + वेवे + + + मोंटीचेलो + + + डेट्रोई + + + न्यू यार्क + + + मोन्टेवीडिओ + + + समरकंद + + + ताशकंद + + + सेंट विन्संट + + + काराकास + + + टॉरटोला + + + सेंट टॉमस + + + साइगॉन + + + एफ़ाटे + + + वॅलिस + + + आपिआ + + + एडन + + + मायोट + + + जोहानेसबर्ग + + + लुसाका + + + हरारे + + + + आकर टाईम + आकर स्टैंडर्ड टाईम + आकर समर टाईम + + + + + अफ़गानी स्टैंडर्ड टाईम + + + + + मध्य अफ्रीका स्टैंडर्ड टाईम + + + + + पूर्वी अफ्रीका स्टैंडर्ड टाईम + + + + + दक्षिण अफ्रीका स्टैंडर्ड टाईम + + + + + पश्चीम अफ्रीका टाईम + पश्चीम अफ्रीका स्टैंडर्ड टाईम + पश्चीम अफ्रीका समर टाईम + + + + + अलास्का टाईम + अलास्का स्टैंडर्ड टाईम + अलास्का डेलाईट टाईम + + + + + अलमाटी टाईम + अलमाटी स्टैंडर्ड टाईम + अलमाटी समर टाईम + + + + + अमाज़ोन टाईम + अमाज़ोन स्टैंडर्ड टाईम + अमाज़ोन समर टाईम + + + + + सैंट्रल अमरिका टाईम + सैंट्रल अमरिका स्टैंडर्ड टाईम + सैंट्रल अमरिका डेलाईट टाईम + + + + + ईस्टर्न अमरिका टाईम + ईस्टर्न अमरिका स्टैंडर्ड टाईम + ईस्टर्न अमरिका डेलाईट टाईम + + + + + अमरिका माऊन्टन टाईम + अमरिका माऊन्टन स्टैंडर्ड टाईम + अमरिका माऊन्टन डेलाईट टाईम + + + + + पैसीफीक टाईम + पैसीफीक स्टैंडर्ड टाईम + पैसीफीक डेलाईट टाईम + + + + + अनादीर टाईम + अनादीर स्टैंडर्ड टाईम + अनादीर समर टाईम + + + + + अक़्टाऊ टाईम + अक़्टाऊ स्टैंडर्ड टाईम + अक़्टाऊ समर टाईम + + + + + अक़्टोबे टाईम + अक़्टोबे स्टैंडर्ड टाईम + अक़्टोबे समर टाईम + + + + + अरबी टाईम + अरबी स्टैंडर्ड टाईम + अरबी डेलाईट टाईम + + + + + अर्जनटिना टाईम + अर्जनटिना स्टैंडर्ड टाईम + अर्जण्टिना समर टाईम + + + + + पश्चीम अर्जण्टिना टाईम + पश्चीम अर्जण्टिना स्टैंडर्ड टाईम + पश्चीम अर्जण्टिना समर टाईम + + + + + आरमीनी टाईम + आरमीनी स्टैंडर्ड टाईम + आरमीनी समर टाईम + + + + + अटलांटीक टाईम + अटलांटीक स्टैंडर्ड टाईम + अटलांटीक डेलाईट टाईम + + + + + ओस्ट्रेलिया टाईम + मध्य ओस्ट्रेलिया स्टैंडर्ड टाईम + मध्य ओस्ट्रेलिया डेलाईट टाईम + + + + + मध्य-पश्चीम ओस्ट्रेलिया टाईम + मध्य-पश्चीम ओस्ट्रेलिया स्टैंडर्ड टाईम + मध्य-पश्चीम ओस्ट्रेलिया डेलाईट टाईम + + + + + पूर्वी ओस्ट्रेलिया टाईम + पूर्वी ओस्ट्रेलिया स्टैंडर्ड टाईम + पूर्वी ओस्ट्रेलिया डेलाईट टाईम + + + + + दक्षिण ओस्ट्रेलिया टाईम + दक्षिण ओस्ट्रेलिया स्टैंडर्ड टाईम + दक्षिण ओस्ट्रेलिया डेलाईट टाईम + + + + + आज़रबैजान टाईम + आज़रबैजान स्टैंडर्ड टाईम + आज़रबैजान समर टाईम + + + + + आज़ोर टाईम + आज़ोर स्टैंडर्ड टाईम + आज़ोर समर टाईम + + + + + बांगलादेश टाईम + बांगलादेश स्टैंडर्ड टाईम + बांगलादेश समर टाईम + + + + + भुटान स्टैंडर्ड टाईम + + + + + बोलिविया स्टैंडर्ड टाईम + + + + + ब्राज़ीलिया टाईम + ब्राज़ीलिया स्टैंडर्ड टाईम + ब्राज़ीलिया समर टाईम + + + + + ब्रुनेई दर उस सलाम स्टैंडर्ड टाईम + + + + + काप वेर्दे टाईम + काप वेर्दे स्टैंडर्ड टाईम + काप वेर्दे समर टाईम + + + + + चामरो स्टैंडर्ड टाईम + + + + + चैथम टाईम + चैथम स्टैंडर्ड टाईम + चैथम डेलाईट टाईम + + + + + चीली टाईम + चीली स्टैंडर्ड टाईम + चीली समर टाईम + + + + + चाईना टाईम + चाईना स्टैंडर्ड टाईम + चाईना डेलाईट टाईम + + + + + चोईबालसान टाईम + चोईबालसान स्टैंडर्ड टाईम + चोईबालसान समर टाईम + + + + + क्रीसमस स्टैंडर्ड टाईम + + + + + कोको द्वीप स्टैंडर्ड टाईम + + + + + कोलंबिया टाईम + कोलंबिया स्टैंडर्ड टाईम + कोलंबिया समर टाईम + + + + + कुक द्वीप टाईम + कुक द्वीप स्टैंडर्ड टाईम + कुक द्वीप अर्ध समर टाईम + + + + + क्युबा टाईम + क्युबा स्टैंडर्ड टाईम + क्युबा डेलाईट टाईम + + + + + डेवीस स्टैंडर्ड टाईम + + + + + ड्युमों ड्युरवील स्टैंडर्ड टाईम + + + + + ईस्ट टीमोर स्टैंडर्ड टाईम + + + + + ईस्टर आईलंड टाईम + ईस्टर आईलंड स्टैंडर्ड टाईम + ईस्टर आईलंड समर टाईम + + + + + एक्वाडौर स्टैंडर्ड टाईम + + + + + मध्य यूरोप टाईम + मध्य यूरोप स्टैंडर्ड टाईम + मध्य यूरोप समर टाईम + + + + + ईस्टर्न यूरोप टाईम + ईस्टर्न यूरोप स्टैंडर्ड टाईम + ईस्टर्न यूरोप समर टाईम + + + + + वेस्टर्न यूरोप टाईम + वेस्टर्न यूरोप स्टैंडर्ड टाईम + वेस्टर्न यूरोप समर टाईम + + + + + फ़ाल्कलैण्ड टाईम + फ़ाल्कलैण्ड स्टैंडर्ड टाईम + फ़ाल्कलैण्ड समर टाईम + + + + + फीजी टाईम + फीजी स्टैंडर्ड टाईम + फीजी समर टाईम + + + + + फ्रान्सीसी गुयाना स्टैंडर्ड टाईम + + + + + दक्षिण फ्रान्सीसी स्टैंडर्ड टाईम + + + + + गालापागोस स्टैंडर्ड टाईम + + + + + गांबिये स्टैंडर्ड टाईम + + + + + जोर्जिया टाईम + जोर्जिया स्टैंडर्ड टाईम + जोर्जिया समर टाईम + + + + + गीलबर्ट द्वीप स्टैंडर्ड टाईम + + + + + ग्रीनीच स्टैंडर्ड टाईम + + + + + ग्रीनलैण्ड ईस्टर्न टाईम + ग्रीनलैण्ड ईस्टर्न स्टैंडर्ड टाईम + ग्रीनलैण्ड ईस्टर्न समर टाईम + + + + + ग्रीनलैण्ड वेस्टर्न टाईम + ग्रीनलैण्ड वेस्टर्न स्टैंडर्ड टाईम + ग्रीनलैण्ड वेस्टर्न समर टाईम + + + + + गुआम स्टैंडर्ड टाईम + + + + + गल्फ़ स्टैंडर्ड टाईम + + + + + गुयाना स्टैंडर्ड टाईम + + + + + हवाई आलटन टाईम + हवाई आलटन स्टैंडर्ड टाईम + हवाई आलटन डेलाईट टाईम + + + + + हाँगकॉंग टाईम + हाँगकॉंग स्टैंडर्ड टाईम + हाँगकॉंग समर टाईम + + + + + होव्ड टाईम + होव्ड स्टैंडर्ड टाईम + होव्ड समर टाईम + + + + + भारतीय स्टैंडर्ड टाईम + + + IST + + + + + भारतीय महासगर स्टैंडर्ड टाईम + + + + + ईंडो चइना स्टैंडर्ड टाईम + + + + + ईंडोनीशिया स्टैंडर्ड टाईम + + + + + ईस्टर्न ईंडोनीशिया स्टैंडर्ड टाईम + + + + + वेस्टर्न ईंडोनीशिया स्टैंडर्ड टाईम + + + + + ईरान टाईम + ईरान स्टैंडर्ड टाईम + ईरान डेलाईट टाईम + + + + + ईरकुर्त्स्क टाईम + ईरकुर्त्स्क स्टैंडर्ड टाईम + ईरकुर्त्स्क समर टाईम + + + + + ईस्राइल टाईम + ईस्राइल स्टैंडर्ड टाईम + ईस्राइल डेलाईट टाईम + + + + + जपान टाईम + जपान स्टैंडर्ड टाईम + जपान डेलाईट टाईम + + + + + पेत्रोपावलोस्क कामचटका टाईम + पेत्रोपावलोस्क कामचटका स्टैंडर्ड टाईम + पेत्रोपावलोस्क कामचटका समर टाईम + + + + + क़ज़ाख़स्तान टाईम + + + + + वेस्टर्न क़ज़ाख़स्तान टाईम + + + + + कोरिया टाईम + कोरिया स्टैंडर्ड टाईम + कोरिया डेलाईट टाईम + + + + + कोसरी स्टैंडर्ड टाईम + + + + + क्रासनोयार्स्क टाईम + क्रासनोयार्स्क स्टैंडर्ड टाईम + क्रासनोयार्स्क समर टाईम + + + + + क़ीर्ग़स्तान स्टैंडर्ड टाईम + + + + + लंका स्टैंडर्ड टाईम + + + + + लाईन द्वीप स्टैंडर्ड टाईम + + + + + लार्ड़ होव टाईम + लार्ड़ होव स्टैंडर्ड टाईम + लार्ड़ होव डेलाईट टाईम + + + + + माकाऊ टाईम + माकाऊ स्टैंडर्ड टाईम + माकाऊ समर टाईम + + + + + मगदन टाईम + मगदन स्टैंडर्ड टाईम + मगदन समर टाईम + + + + + मलेशिया स्टैंडर्ड टाईम + + + + + मालदीव स्टैंडर्ड टाईम + + + + + मार्केज़ास स्टैंडर्ड टाईम + + + + + मार्शल र्स्टैंडर्ड टाईम + + + + + मॉरिशीयस टाईम + मॉरिशीयस स्टैंडर्ड टाईम + मॉरिशीयस समर टाईम + + + + + मॉसन स्टैंडर्ड टाईम + + + + + मँगोलिया टाईम + मँगोलिया स्टैंडर्ड टाईम + मँगोलिया समर टाईम + + + + + मॉस्को टाईम + मॉस्को स्टैंडर्ड टाईम + मॉस्को समर टाईम + + + + + म्यानमार स्टैंडर्ड टाईम + + + + + नाऊरु स्टैंडर्ड टाईम + + + + + नेपाल स्टैंडर्ड टाईम + + + + + न्यु कैलेडोनिया टाईम + न्यु कैलेडोनिया स्टैंडर्ड टाईम + न्यु कैलेडोनिया समर टाईम + + + + + न्युज़ीलैण्ड टाईम + न्युज़ीलैण्ड स्टैंडर्ड टाईम + न्युज़ीलैण्ड डेलाईट टाईम + + + + + न्युफाऊंडलैण्ड टाईम + न्युफाऊंडलैण्ड स्टैंडर्ड टाईम + न्युफाऊंडलैण्ड डेलाईट टाईम + + + + + नीऊई स्टैंडर्ड टाईम + + + + + नॉरफोक स्टैंडर्ड टाईम + + + + + फेरनान्दो द नोरोन्हा टाईम + फेरनान्दो द नोरोन्हा स्टैंडर्ड टाईम + फेरनान्दो द नोरोन्हा समर टाईम + + + + + नॉर्थ मारिआना स्टैंडर्ड टाईम + + + + + नोवोसीबीर्स्क टाईम + नोवोसीबीर्स्क स्टैंडर्ड टाईम + नोवोसीबीर्स्क समर टाईम + + + + + ओम्स्क टाईम + ओम्स्क स्टैंडर्ड टाईम + ओम्स्क समर टाईम + + + + + पाकिस्तान टाईम + पाकिस्तान स्टैंडर्ड टाईम + पाकिस्तान समर टाईम + + + + + पलाऊ स्टैंडर्ड टाईम + + + + + पापुआ न्यु गीनी स्टैंडर्ड टाईम + + + + + पारागुए टाईम + पारागुए स्टैंडर्ड टाईम + पारागुए समर टाईम + + + + + पेरु टाईम + पेरु स्टैंडर्ड टाईम + पेरु समर टाईम + + + + + फीलीपीन्स टाईम + फीलीपीन्स स्टैंडर्ड टाईम + फीलीपीन्स समर टाईम + + + + + फीनीक्स द्वीप स्टैंडर्ड टाईम + + + + + सेँ पीयॅर एवं मीकलों टाईम + सेँ पीयॅर एवं मीकलों स्टैंडर्ड टाईम + सेँ पीयॅर एवं मीकलों डेलाईट टाईम + + + + + पीटकैर्न स्टैंडर्ड टाईम + + + + + पोनापे (पोह्नपेई) स्टैंडर्ड टाईम + + + + + क़ीज़ीलोर्डा टाईम + क़ीज़ीलोर्डा स्टैंडर्ड टाईम + क़ीज़ीलोर्डा समर टाईम + + + + + रियूनियन स्टैंडर्ड टाईम + + + + + रोथेरा स्टैंडर्ड टाईम + + + + + सख़ालीन टाईम + सख़ालीन स्टैंडर्ड टाईम + सख़ालीन समर टाईम + + + + + समारा टाईम + समारा स्टैंडर्ड टाईम + समारा समर टाईम + + + + + समोआ टाईम + समोआ स्टैंडर्ड टाईम + समोआ समर टाईम + + + + + सेशेल्स स्टैंडर्ड टाईम + + + + + सींगापुर स्टैंडर्ड टाईम + + + + + सॉलॉमन स्टैंडर्ड टाईम + + + + + साऊथ जॉर्जिया स्टैंडर्ड टाईम + + + + + सुरीनाम स्टैंडर्ड टाईम + + + + + सीओवा स्टैंडर्ड टाईम + + + + + टाहिटी स्टैंडर्ड टाईम + + + + + ताजीक़ीस्तान स्टैंडर्ड टाईम + + + + + टोकेलौ स्टैंडर्ड टाईम + + + + + टॉंगा टाईम + टॉंगा स्टैंडर्ड टाईम + टॉंगा समर टाईम + + + + + ट्रुक स्टैंडर्ड टाईम + + + + + तुर्कमेनीस्तान टाईम + तुर्कमेनीस्तान स्टैंडर्ड टाईम + तुर्कमेनीस्तान समर टाईम + + + + + तुवालु स्टैंडर्ड टाईम + + + + + ऊरुगुए टाईम + ऊरुगुए स्टैंडर्ड टाईम + ऊरुगुए समर टाईम + + + + + ऊज़्बेकिस्तान टाईम + ऊज़्बेकिस्तान स्टैंडर्ड टाईम + ऊज़्बेकिस्तान समर टाईम + + + + + वनुआटु टाईम + वनुआटु स्टैंडर्ड टाईम + वनुआटु समर टाईम + + + + + वेनेज़ुएला स्टैंडर्ड टाईम + + + + + व्लादीवॉस्तॉक टाईम + व्लादीवॉस्तॉक स्टैंडर्ड टाईम + व्लादीवॉस्तॉक डेलाईट टाईम + + + + + वॉलगोग्राद टाईम + वॉलगोग्राद स्टैंडर्ड टाईम + वॉलगोग्राद समर टाईम + + + + + वॉस्तॉक स्टैंडर्ड टाईम + + + + + वाके द्वीप स्टैंडर्ड टाईम + + + + + वालीस एवं फ़ुतुना स्टैंडर्ड टाईम + + + + + याकुट्स्क टाईम + याकुट्स्क स्टैंडर्ड टाईम + याकुट्स्क समर टाईम + + + + + येकातेरीनाबुर्ग टाईम + येकातेरीनाबुर्ग स्टैंडर्ड टाईम + येकातेरीनाबुर्ग समर टाईम + + + + + + latn + + deva + + + . + , + ; + % + + + - + E + + + NaN + + + + + #,##,##0.### + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + ऐन्डोरा का पेसेता + + + संयुक्त अरब अमीरात का दिर्हाम + + + अफ़ग़ानी 1927-2002 + + + अफ़ग़ानी + + + आल्बेनिया का लेक + + + आरमिनियाई दिर्हाम + + + नेदरलैण्ड एन्टीलीज़ का गील्डर + + + एंगोला क्वानज़ा + + + एंगोला क्वानज़ा (1977–1990) + + + एंगोला नया क्वानज़ा (1990–20000) + + + एंगोला क्वानज़ा सुधारीत (1995–1999) + + + अर्जेण्टीनी ओस्ट्राल + + + अर्जेण्टीनी पेसो (1983–1985) + + + अर्जेण्टीनी पेसो + + + ऑस्ट्रियन शीलींग + + + ऑस्ट्रेलियन डॉलर + + + अरुबा गील्डर + + + आज़रबैजानी मनात (1993–2006) + + + आज़रबैजानी मनात + + + बोसनिया हेर्ज़ेगोविना का दीनार + + + बोसनिया हेर्ज़ेगोविना कनवर्टीबल मार्क + + + बारबादोस डॉलर + + + बांगलादेश टका + + + बेल्जियन फ्राँ कनवर्टीबल + + + बेल्जियन फ्राँ + + + बेल्जियन फ्राँ फिनानसीयल (वित्तीय) + + + बल्गेरियाई हार्ड लेव + + + बल्गेरियाई लेव + + + बाहरैनी दीनार + + + बुरुंदी फ्राँ + + + बरमुडी डॉलर + + + ब्रुनई डॉलर + + + बोलिवियानो + + + बोलिवियाई पेसो + + + बोलिवियाई डॉलर + + + ब्रज़ीली नया क्रुज़ेरो (1967–1986) + + + ब्रज़ीली क्रुज़ाडो + + + ब्रज़ीली क्रुज़ेरो (190–1993) + + + ब्रज़ीली रेयाल + + + ब्रज़ीली नया क्रुज़ाडो + + + ब्रज़ीली क्रुज़ेरो + + + बहामा डॉलर + + + भुतान का नगुलत्रुम + + + बर्मी (म्यानमारी) क्याट + + + बोट्सवाना का पुलाट + + + बेलारुसी नया रूबल (194–1999) + + + बेलारुसी रूबल + + + बेलीज़ डॉलर + + + कनेडियन डॉलर + + + कॉंगोलीज़ फ्राँ + + + आईरलैण्ड का युरो + + + स्विस फ़्रैंक + + + आईरलैण्ड का फ़्रैंक + + + चीली का ऊनीदादेस द फोमेंटो + + + चिली पेसो + + + चीनी युआन रेनमीनबी + + + कोलम्बियाई पेसो + + + युनीदाद द वालोर रेआल + + + कॉस्टा रीका का कोलोन + + + सर्बिया का डीनार + + + चैकोस्लोवाकिय हार्ड कोरुना + + + क्युबा का पेसो + + + काप वेर्दे का एस्कुदो + + + साईप्रस का पाऊंड + + + चेक गनतंत्र का कोरुना + + + ईस्ट जर्मन ओस्टमार्क + + + डॉईच मार्क + + + जीबुती फ्राँ + + + डेनमार्क का क्रोन + + + डॉमीनीकन पेसो + + + आल्जीरी दीनार + + + एक्वादोर सुक्रे + + + एक्वादोर युनीदाद दे वालोर कॉनस्तांते + + + एस्टोनियाई क्रून + + + मिस्री पाउण्ड + + + ऐरित्रीया का नाफ़का + + + हीस्पानी पेसेता (ए अकाऊँट) + + + हीस्पानी पेसेता (कनवर्टीबल अकाऊँट) + + + हीस्पानी पेसेता + + + ईथिओपिया का बीर्र + + + युरो + + + फीनीश मार्क्का + + + फ़िजी का डॉलर + + + फाल्कलैण्ड द्वीप पौण्ड + + + फ्राँसीसी फ्राँ + + + ब्रितन का पौण्ड स्टर्लिग + + + जॉर्जिया का कुपोन लारीत + + + जॉर्जिया का लारी + + + घाना चेदी (1979–2007) + + + घाना चेदी + + + जीब्रालटर का पौण्ड + + + गाँबिया का दलासी + + + गीनी फ्राँ + + + गीनी सीली + + + ऐक्वाटरी गीनी एक्वेले गीनीआना + + + युनानी द्राखमा + + + ग्वातेमाला क़्वेत्ज़ाल + + + पुरतुगी गीनी का एस्कुएदो + + + गीनी बिस्साऊ का पेसो + + + गुयाना डॉलर + + + हाँग काँग डॉलर + + + हॉंडुरास लेंपीरा + + + क्रोएशियाई दीनार + + + क्रोएशियाई कुना + + + हाईती गुर्द + + + हंगेरियाई फ़ोरिण्ट + + + इण्डोनेशियाई रुपिया + + + आईरीश पौंड + + + इस्राइली पौंड + + + इस्राइली शेकेल + + + रां + + + ईराक़ी दीनार + + + ईरानी रीयाल + + + आईसलैण्ड क्रोना + + + इतली का लीरा + + + जमाईका का डॉलर + + + जोर्डनी दीनार + + + जापानी येन + + + किनियाई शीलींग + + + क़ीर्ग़ीज़स्तानी सोम + + + कंबोडिया का रिएल + + + कोमोरो का फ्राँ + + + ऊत्तर कोरियाई वोन + + + दक्षिण कोरियाई वोन + + + क़ुवैती दीनार + + + कैमान द्वीप का डॉलर + + + क़ाज़ाख़स्तान तेंगे + + + लाओस का कीप + + + लीबानी पौंड + + + श्री लंका रूपी + + + लीबेरियाई डॉलर + + + लसोथो का लोटी + + + लिथुआनियाई लिता + + + लिथुआनियाई टालोनास + + + लुक्ज़मबुर्गी कनवर्टीबल फ्राँ + + + लुक्ज़मबुर्गी फ्राँ + + + लुक्ज़मबुर्गी वीत्ती फ्राँ + + + लाटवियाई लाट्स + + + लाटवियाई रूबल + + + लिबियाई दीनार + + + मोरक्किय दिर्हाम + + + मोरक्किय फ्राँ + + + मोल्डोवियाई ल + + + मादागास्करी आरिआरी + + + मादागास्करी फ्राँ + + + मसेदोनियाई दीनार + + + माली का फ्राँ + + + म्यानमारी क्याट + + + मौंगोलीयाई तुग्रीक + + + माकाव पाताचा + + + मौरिटानी ऊगुया + + + माल्टी लीरा + + + माल्टी पौंड + + + मोरिशियस का रूपी + + + मालदीव द्वीप का रूफिया + + + मालवी क्वाचा + + + मेक्सिकन पेसो + + + मेक्सिकन रजती पेसो (1861–1992) + + + मेक्सिकन युनीदाद द ईनवेरसिओन (युडीआई) + + + मलेशियन रिंगित + + + मोज़ांबीक एस्कुएदो + + + मोज़ांबीक पुराना मेतीकाल + + + मोज़ांबीक मेतीकाल + + + नमीबिया डॉलर + + + नाईजीरीयाई नाईरा + + + नीकारागुआई कोर्दोबा + + + नीकारागुआई सुवर्ण कोर्दोबा + + + नेदरलैण्ड गीलडर + + + नॉर्वे का क्रोन + + + नेपाली रुपी + + + न्यूज़ीलैंड डॉलर + + + ओमानी रियाल + + + पनामा का बालबोआ + + + पेरूवाई ईंटी + + + पेरुवाई नया सोल + + + पेरुवाई सोल + + + पापुआ न्यु गीनी का कीना + + + फ़िलिपीन का पेसो + + + पाकिस्तानी रुपया + + + पोलिश ज़्लॉटी + + + पुरतुगी एस्कुदो + + + पारागुऐई गुआरानी + + + क़तारी रीयाल + + + रोडेशियाई डॉलर + + + रोमानियाई पुरानी ल + + + रोमानियाई ल + + + सर्बियाई दिनार + + + रूसी रूबल + + + रुआँदा फ्राँ + + + साउदी रियाल + + + सोलोमन द्वीप का डॉलर + + + सेशेल रूपी + + + सुदानी पुराना डॉलर + + + सुदानी पौंड + + + सुदानी पुराना पौंड + + + स्वीडन क्रोना + + + सिंगापुर डॉलर + + + सेंट हेलीना पौंड + + + स्लोवेनियाई तोलार + + + स्लोवाकी कोरुना + + + सीयेरा लीयोनेई लीयोने + + + सोमाली शीलींग + + + सुरीनाम डॉलर + + + सुरीनाम गील्डर + + + साँव तोमे एवं प्रीन्सीपे का डोब्रा + + + सोवियत रूबल + + + एल सालवादर कोलोन + + + सीरियाई पौंड + + + स्वाज़ीलैण्ड लीलांगेनी + + + थाई बाह्ट + + + ताजीक़ीस्तानी रूबल + + + ताजीक़ीस्तानी सोमोनी + + + तुर्कमेनीस्तानी मानाट + + + त्युनीसी दीनर + + + टॉंगा पाईंगा + + + तीमोरी एस्कुदो + + + तुर्की लीरा + + + तुर्की नया लीरा + + + त्रीनीदाद एवं टोबागो डॉलर + + + ताईवानी नया डॉलर + + + तान्ज़ेनियाई शीलींग + + + युक्रेनी ह्रीवनिया + + + युक्रेनी कार्बोवानेत्ज़ + + + युगाँडाई शीलींग (1996–1987) + + + युगाँडाई शीलींग + + + अमरिकी डॉलर + + + अमरिकी डॉलर (अगले दिन का) + + + अमरिकी डॉलर (इसी दिन का) + + + ऊरुगुए का पेसो आन ऊनीदादोस ईंदेक्सादास + + + ऊरुगुए का पेसो (1975–1993) + + + ऊरुगुए का ऊरुगुआयो पेसो + + + ऊज़बेक सुम + + + वेनेज़ुएलाई बोलिवार (1871–2008) + + + वेनेज़ुएलाई बोलिवार + + + वीयतनामी डॉंग + + + वनुआटु वटु + + + वेस्टर्न समोआ ताला + + + (सीएफ़ए) फ्रानसीसी फेदरेशनी फ्राँ + + + रजत + + + सोना + + + एक्यु + + + एम्यु + + + यूरोपी एकाऊंट का युनीट (एक्स बी सी) + + + यूरोपी एकाऊंट का युनीट (एक्स बी डी) + + + ईस्ट करिबियन डॉलर + + + स्पेशियल ड्राईंग राईट्स + + + यूरोपी मुद्रा (एक्यु) + + + फ्रानसीसी सुवर्ण फ्राँ + + + फ्रानसीसी युआईसी फ्राँ + + + फ्रानसीसी फेदेरेशनी बीसीएआओ फ्राँ + + + पैलेडियम + + + फ्रानसीसी फेदेरेशनी फ्राँ + + + प्लैटीनम + + + रीनैट फंड्स + + + टेस्टींग करनसी कोड + + + अज्ञात या अवैध मुद्रा + + + यमनी दीनार + + + यमनी रीयाल + + + युगोस्लावी हार्ड दीनार + + + युगोस्लावी नोवीय (नये) दीनार + + + युगोस्लावी कनवर्टीबल दीनार + + + दक्षिण अफ़्रीकी रॅण्ड + + + ज़ाम्बियाई क्वाचा (1968–2012) + + + ज़ाम्बियाई क्वाचा + + + ज़ाईरी नये ज़ाईर + + + ज़ाईरी ज़ाईर + + + ज़ीम्बाबवेई डॉलर + + + + + + + {0} सान + {0} सान + + + {0} रिंगा + {0} घंटे + + + {0} मिन. + {0} मिन. + + + {0} महीना + {0} महीने + + + {0} सेकं. + {0} सेकं. + + + {0} सप्ताह + {0} सप्ताह + + + {0} साल + {0} साल + + + + + + हाँ + नहीं + + + + diff --git a/library/Zend/Locale/Data/brx_IN.xml b/library/Zend/Locale/Data/brx_IN.xml new file mode 100755 index 000000000..788a273fa --- /dev/null +++ b/library/Zend/Locale/Data/brx_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/bs.xml b/library/Zend/Locale/Data/bs.xml new file mode 100755 index 000000000..76d2e22e7 --- /dev/null +++ b/library/Zend/Locale/Data/bs.xml @@ -0,0 +1,5287 @@ + + + + + + + + + + + + + afarski + abkazijski + ačineski + akoli + adangmejski + adigejski + avestanski + afrikanerski + afrihili + ainu + akan + akadijski + aljut + južni altai + amharski + aragonežanski + staroengleski + angika + arapski + armajski + arokanijski + arapaho + aravak + asemijski + asturijski + avarski + avadhi + ajmara + azerbejdžanski + baškir + baluči + balinezijski + basa + beloruski + beja + bemba + bugarski + bojpuri + bislama + bikol + bini + siksika + bambara + bengalski + tibetanski + bretonski + braj + bosanski + buriat + buginežanskii + blin + katalonski + kado + karipski + atsam + čečenski + cebuano + čamoro + čibča + čagatai + čukeski + mari + činukski + čoktavski + čipvijanski + čeroki + čejenski + korzikanski + koptski + kri + krimeanski turski + češki + kašubijanski + staroslovenski + čuvaški + velški + danski + dakota + dargva + njemački + delaver + slavski + dogrib + dinka + dogri + niski sorbijanski + duala + srednji holandski + divehijski + đula + džonga + eve + efikski + staroegipatski + ekajuk + grčki + elamitski + engleski + srednji engleski + esperanto + španjolski + estonski + baskijski + evondo + persijski + fang + fanti + fulah + finski + filipinski + fidžijski + farski + fon + francuski + srednji francuski + starofrancuski + severno-frizijski + istočni frizijski + friulijski + frizijski + irski + ga + gajo + gbaja + škotski galski + džiz + gilbertški + galski + srednji visoki nemački + gvarani + staronemački + gondi + gorontalo + gotski + grebo + starogrčki + švajcarsko nemački + gudžarati + manks + hausa + haida + havajski + hebrejski + hindi + hiligajnon + hitite + hmong + hiri motu + hrvatski + gornji sorbijski + haićanski + mađarski + hupa + jermenski + herero + interlingva + iban + indonezijski + interlingve + igbo + sičuan ji + inupiak + iloko + ingušetski + ido + islandski + talijanski + inuktitut + japanski + lojban + judeo-persijski + judeo-arapski + javanski + gruzijski + kara-kalpaški + kabile + kačin + žju + kamba + kavi + kabardijski + tjap + koro + kongo + kasi + kotanizijski + kikuju + kuanjama + kozački + kalalisutski + kmerski + kimbundu + kanada + korejski + konkani + kosreanski + kpele + kanuri + karačaj-balkar + karelijski + kurukh + kašmiri + kurdski + kumik + kutenai + komi + korniški + kirgiski + latinski + ladino + landa + lamba + luksemburški + lezgian + ganda + limburgiš + lingala + laoški + mongo + lozi + litvanski + luba-katanga + luba-lulua + luiseno + lunda + luo + lušai + letonski + madureški + magahi + maitili + makasar + mandingo + masai + mokša + mandar + mende + malagazijski + srednji irski + maršalski + maorski + mikmak + minangkabau + makedonski + malajalam + mongolski + manču + manipuri + mahavski + mosi + marati + malajski + melteški + više jezika + kriški + mirandeški + marvari + burmanski + erzija + nauru + neapolitanski + norveški bokmål + severni ndebele + niski nemački + nepalski + nevari + ndonga + nias + niuean + holandski + flamanski + norveški njorsk + norveški + nogai + stari norski + n’ko + južni ndebele + severni soto + navaho + klasični nevari + njanja + njamvezi + njankole + njoro + nzima + provansalski + ojibva + oromo + orijski + osetski + osage + otomanski turski + pandžabski + pangasinski + pahlavi + pampanga + papiamento + palauanski + staropersijski + feničanski + pali + poljski + ponpejski + staroprovansalski + paštunski + portugalski + kvenča + rađastani + rapanui + rarotongan + reto-romanski + rundi + rumunski + moldavski + romani + run + ruski + aromanijski + kinjarvanda + sanskrit + sandave + jakut + samaritanski aramejski + sasak + santali + sardinijski + sicilijanski + škotski + sindi + severni sami + selkap + sango + staroirski + srpskohrvatski + šan + singaleski + sidamo + slovački + slovenački + samoanski + južni sami + lule sami + inari sami + skoltski jezik + šona + soninke + somalski + sodžijenski + albanski + srpski + srananski tongo + serer + svati + sesoto + sudanski + sukuma + susu + sumerski + švedski + svahili + komorski + klasični sirijski + sirijski + tamilski + telugu + timne + tereno + tetum + tađik + tajlandski + tigrinja + tigre + tiv + turkmenski + tokelau + tagalski + klingonski + tlingit + tamašek + tsvana + tonga + njasa tonga + tok pisin + turski + tsonga + tsimšian + tatarski + tumbuka + tuvalu + tvi + tahićanski + tuvinijski + udmurt + ujgurski + ugaritski + ukrajinski + umbundu + nepoznati ili nevažeći jezik + urdu + uzbečki + vai + venda + vijetnamski + volapük + votski + valun + valamo + varej + vašo + volof + kalmik + khosa + jao + japeški + jidiš + jorubanski + kantonski + zuang + zapotečki + blisimboli + zenaga + kineski + kineski (pojednostavljen) + kineski (tradicionalni) + zulu + zuni + bez lingvističkog sadržaja + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Svet + Afrika + Severnoamerički kontinent + Južna Amerika + Okeanija + Zapadna Afrika + Centralna Amerika + Istočna Afrika + Severna Afrika + Centralna Afrika + Južna Afrika + Amerike + Severna Amerika + Karibi + Istočna Azija + Južna Azija + Jugoistočna Azija + Južna Evropa + Australija i Novi Zeland + Melanezija + Micronezija + Polinezija + Azija + Centralna Azija + Zapadna Azija + Evropa + Istočna Evropa + Severna Evropa + Zapadna Evropa + Latinska Amerika + Ostrvo Asension + Andora + Ujedinjeni Arapski Emirati + Avganistan + Antigva i Barbuda + Angvila + Albanija + Armenija + Holandski Antili + Angola + Antarktika + Argentina + Američka Samoa + Austrija + Australija + Aruba + Alandska ostrva + Azerbejdžan + Bosna i Hercegovina + Barbados + Bangladeš + Belgija + Burkina Faso + Bugarska + Bahrein + Burundi + Benin + Sv. Bartolomej + Bermuda + Brunej + Bolivija + Brazil + Bahami + Butan + Buve Ostrva + Bocvana + Belorusija + Belise + Kanada + Kokos (Keling) Ostrva + Demokratska Republika Kongo + Kongo (DRC) + Centralno Afrička Republika + Kongo + Republika Kongo + Švajcarska + Obala Slonovače + Kukova Ostrva + Čile + Kamerun + Kina + Kolumbija + Ostrvo Kliperton + Kostarika + Kuba + Kape Verde + Božićna Ostrva + Kipar + Češka + Nemačka + Dijego Garsija + Džibuti + Danska + Dominika + Dominikanska Republika + Alžir + Seuta i Melilja + Ekvador + Estonija + Egipat + Zapadna Sahara + Eritreja + Španija + Etiopija + Evropska unija + Finska + Fidži + Folklandska Ostrva + Folklandska ostrva (Malvinska ostrva) + Mikronezija + Farska Ostrva + Francuska + Gabon + Velika Britanija + Grenada + Gruzija + Francuska Gvajana + Gurnsi + Gana + Gibraltar + Grenland + Gambija + Gvineja + Gvadelupe + Ekvatorijalna Gvineja + Grčka + Južna Džordžija i Južna Sendvič Ostrva + Gvatemala + Guam + Gvineja-Bisao + Gvajana + Hong Kong (S. A. R. Kina) + Hong Kong + Herd i Mekdonald Ostrva + Honduras + Hrvatska + Haiti + Mađarska + Kanarska ostrva + Indonezija + Irska + Izrael + Ostrvo Man + Indija + Britansko Indijska Okeanska Teritorija + Irak + Iran + Island + Italija + Džersi + Jamajka + Jordan + Japan + Kenija + Kirgizstan + Kambodža + Kiribati + Komorska Ostrva + Sent Kits i Nevis + Severna Koreja + Južna Koreja + Kuvajt + Kajmanska Ostrva + Kazahstan + Laos + Liban + Sent Lucija + Lihtenštajn + Šri Lanka + Liberija + Lesoto + Litvanija + Luksemburg + Letonija + Libija + Maroko + Monako + Moldavija + Crna Gora + Sv. Martin + Madagaskar + Maršalska Ostrva + Makedonija + Makedonija (BJR) + Mali + Mijanmar + Mongolija + Makao (S. A. R. Kina) + Makao + Severna Marijanska Ostrva + Martinik + Mauritanija + Monserat + Malta + Mauricius + Maldivi + Malavi + Meksiko + Malezija + Mozambik + Namibija + Nova Kaledonija + Niger + Norfolk Ostrvo + Nigerija + Nikaragva + Holandija + Norveška + Nepal + Nauru + Niue + Novi Zeland + Oman + Panama + Peru + Francuska Polinezija + Papua Nova Gvineja + Filipini + Pakistan + Poljska + Sen Pjer i Mikelon + Pitcairn + Porto Riko + Palestinska Teritorija + Portugal + Palau + Paragvaj + Katar + Ostala okeanija + Rejunion + Rumunija + Srbija + Rusija + Ruanda + Saudijska Arabija + Solomonska Ostrva + Sejšeli + Sudan + Švedska + Singapur + Sveta Jelena + Slovenija + Svalbard i Janmajen Ostrva + Slovačka + Sijera Leone + San Marino + Senegal + Somalija + Surinam + Južni Sudan + Sao Tome i Principe + Salvador + Sirija + Svazilend + Tristan da Kunja + Turks i Kajkos Ostrva + Čad + Francuske Južne Teritorije + Togo + Tajland + Tadžikistan + Tokelau + Timor Leste + Istočni Timor + Turkmenistan + Tunis + Tonga + Turska + Trinidad i Tobago + Tuvalu + Tajvan + Tanzanija + Ukrajina + Uganda + Manja Udaljena Ostrva SAD + Sjedinjene Američke Države + Urugvaj + Uzbekistan + Vatikan + Sent Vinsent i Grenadini + Venecuela + Britanska Devičanska Ostrva + S.A.D. Devičanska Ostrva + Vijetnam + Vanuatu + Valis i Futuna Ostrva + Samoa + Jemen + Majote + Južnoafrička Republika + Zambija + Zimbabve + Nepoznata ili nevažeća oblast + + + + Tradicionalna nemačka ortografija + Standardizovana rezijanska ortografija + Nemačka ortografija 1996 + Francuski iz kasnog srednjeg veka do 1606. + Rani moderni francuski + Akademski + Istočni jermenski + Zapadno-jermenski + Ujedinjeni turski latinični alfabet + San Đorđijo/Bila dijalekt + Buntling + IPA fonetika + UPA fonetika + Uobičajena ortografija + Lipovac dijalekt rezijanski + Monotonik + Natison dijalekt + Gnjiva/Njiva dijalekt + Oseako/Osojane dijalekt + Pinjinska romanizacija + Politonik + Kompjuter + Revidirana ortigrafija + Rezijan + Saho + Škotski standardni engleski + Skauz + Stolvica/Solbica dijalekt + Taraskijevica ortografija + Ujedinjena ortografija + Ujedinjena revidirana ortografija + Valencijski + Vejd-Žajl romanizacija + + + + Kalendar + Sortiranje + Valuta + + + + Tradicionalno kinesko sortiranje + Budistički kalendar + Kineski kalendar + Pojednostavljeno kinesko sortiranje + Gregorijanski kalendar + Hebrejski kalendar + Indijski nacionalni kalendar + Islamski kalendar + Islamski civilni kalendar + Japanski kalendar + Sortiranje kao telefonski imenik + Pinjin sortiranje + Kalendar Republike Kine + Sortiranje po broju crta + Tradicionalno sortiranje + + + + Metrički + SAD + + + + Jezik: {0} + Skript: {0} + Region: {0} + + + + [a b c ć č d đ {dž} e f g h i j k l {lj} m n {nj} o p r s š t u v z ž] + [q w x y] + [A B C Ć Č D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž] + + + + + + + + + + + + + + EEEE, dd. MMMM y. G + + + + + dd. MMMM y. G + + + + + dd.MM.y. G + + + + + dd.MM.y. GGGGG + + + + + + d + E, dd. + y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + dd. MMM + E, dd. MMM + mm:ss + y. G + y. G + MM.y. G + dd.MM.y. G + E, dd.MM.y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + G y QQQ + G y QQQQ + + + + + + + + jan + feb + mar + apr + maj + jun + jul + avg + sep + okt + nov + dec + + + januar + februar + mart + april + maj + juni + juli + avgust + septembar + oktobar + novembar + decembar + + + + + j + f + m + a + m + j + j + a + s + o + n + d + + + + + + + ned + pon + uto + sri + čet + pet + sub + + + nedjelja + ponedjeljak + utorak + srijeda + četvrtak + petak + subota + + + + + + + K1 + K2 + K3 + K4 + + + Prvi kvartal + Drugi kvartal + Treći kvartal + Četvrti kvartal + + + + + + + + pre podne + popodne + + + + + + + Pre nove ere + Nove ere + + + p. n. e. + n. e + + + + + + EEEE, dd. MMMM y. + + + + + dd. MMMM y. + + + + + dd.MM.y. + + + + + dd.MM.yy. + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E, dd. + y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + dd. MMM + E, dd. MMM + mm:ss + y. + MM.y. + dd.MM.y. + E, dd.MM.y. + MMM y. + dd. MMM y. + E, dd. MMM y. + y QQQ + y QQQQ + + + + + + + + muh. + saf. + rab. i + rab. ii + džum. i + džum. ii + redž. + ša. + ram. + še. + zul-k. + zul-h. + + + muharem + safer + rabiʻ i + rabiʻ ii + džumade i + džumade ii + redžeb + šaʻban + ramazan + ševal + zul-kade + zul-hidže + + + + + + AH + + + + + + EEEE, dd. MMMM y. G + + + + + dd. MMMM y. G + + + + + dd.MM.y. G + + + + + dd.MM.y. G + + + + + + d + E, dd. + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + dd. MMM + E, dd. MMM + mm:ss + y. G + MM.y. G + dd.MM.y. G + E, dd.MM.y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + y G QQQ + y G QQQQ + + + + + + + + era + + + godina + + + mesec + + + nedelja + + + dan + prekjuče + juče + danas + sutra + prekosutra + + + dan u nedelji + + + pre podne/ popodne + + + čas + + + minut + + + sekund + + + zona + + + + + + Nepoznati ili nevažeći grad + + + Andora + + + Antigva + + + Angvila + + + Tirana + + + Jerevan + + + Rotera + + + Šova + + + Moson + + + Dejvis + + + Kasej + + + Dimon d’Urvil + + + MakMurdo + + + Rio galegos + + + Mendoza (Argentina) + + + San Huan (Argentina) + + + Ušuaia + + + Katamarka (Argentina) + + + Jujui + + + Tukuman + + + Kordoba (Argentina) + + + Beč + + + Pert (Australija) + + + Iukla (Australija) + + + Darvin (Australija) + + + Adelaida (Australija) + + + Broken Hil (Australija) + + + Kurie (Australija) + + + Melburn (Australija) + + + Horbat (Australija) + + + Sidnej (Australija) + + + Brizbejn (Australija) + + + Lord Hov + + + Daka + + + Brisel + + + Uagadugu + + + Sofija + + + Bahrein + + + Budžumbura + + + Porto Novo + + + Bermudi + + + Bruneji + + + Eirunepe (Brazil) + + + Rio Branko + + + Porto Veljo + + + Kuiaba + + + Kampo Grande + + + Aragvajana + + + Sao Paolo + + + Bahia (Brazil) + + + Masejo + + + Resife + + + Noronja + + + Nasau + + + Gaboron + + + Doson (Kanada) + + + Vajthors + + + Inuvik (Kanada) + + + Vankuver (kanada) + + + Doson Krik (Kanada) + + + Jelonajf + + + Edmonton (Kanada) + + + Svift Kurent + + + Kembridž Bej (Kanada) + + + Vinipeg (Kanada) + + + Rezolut + + + Rejni river + + + Koral Harbur (Kanada) + + + Tander Bej + + + Toronto (Kanada) + + + Ikaluit + + + Monkton + + + Halifaks (kanada) + + + Gus Bej (Kanada) + + + Glejs Bej (Kanada) + + + Blanc-Sejblon (kanada) + + + Sv. Džon (Kanada) + + + Kokosova ostrva + + + Kinšasa + + + Lumumbaši + + + Brazavil + + + Cirih + + + Abidžan + + + Uskršnje ostrvo + + + Santijago + + + Duala + + + Kašgar (Kina) + + + Urumki + + + Čongking (Kina) + + + Šangaj + + + Harbin (Kina) + + + Kostarika + + + Kape Verde + + + Kiraso + + + Božićno ostrvo + + + Nikozija + + + Džibuti + + + Kopenhagen + + + Dominika + + + Alžir + + + Gvajakil + + + Talin + + + Kairo + + + El Ajun + + + Asmera + + + Kanarska ostrva + + + Seuta + + + Adis Abeba + + + Fidži + + + Stenli + + + Truk + + + Ponape + + + Košre + + + Farska Ostrva + + + Pariz + + + Librevil + + + Kajen + + + Akra + + + Tule + + + Nuk + + + Skorezbisund + + + Danmarkšavn + + + Banžul + + + Konakri + + + Gvadalupe + + + Atina + + + Južna Džordžija + + + Gvatemala + + + Bisao + + + Guana + + + Port-o-Prens + + + Budimpešta + + + Džakarta + + + Makasar + + + Džajapura + + + Dablin + + + Čagos + + + Bagdad + + + Teheran + + + Rejkjavik + + + Rim + + + Jamajka + + + Aman + + + Tokio + + + Najrobi + + + Biškek + + + Pnom Pen + + + Enderberi + + + Tarava + + + Komoro + + + Sent Kits + + + Pjongjang + + + Seul + + + Kuvajt + + + Kajmanska ostrva + + + Aktau + + + Oral (Kazakhstan) + + + Akutobe + + + Kizilorda + + + Almati (Kazahstan) + + + Vijetijan + + + Bejrut + + + Sv. Lucija + + + Vaduc + + + Kolombo + + + Monrovija + + + Viljnus + + + Luksemburg + + + Kazablanka + + + Monako + + + Kišnjev + + + Kvadžalejin + + + Rangun + + + Ulan Bator + + + Čojbalsan + + + Makau + + + Sajpan + + + Martinik + + + Navakšut + + + Montserat + + + Mauricijus + + + Maldivi + + + Blantir + + + Tihuana (Meksiko) + + + Hermosiljo (Meksiko) + + + Mazatlan (Meksiko) + + + Čihuahua (Meksiko) + + + Montrej (Meksiko) + + + Meksiko siti (Meksiko) + + + Merida (Meksika) + + + Kankun (Meksiko) + + + Kučing + + + Vindhuk + + + Numea + + + Nijamej + + + Managva + + + Katmandu + + + Katham (Novi Zeland) + + + Okland + + + Muskat + + + Markiz + + + Gambije + + + Port Morzbi + + + Karači + + + Varšava + + + Mikelon + + + Pitkairn + + + Porto Riko + + + Azori + + + Lisabon + + + Asunsion + + + Katar + + + Ujedinjenje + + + Bukurešt + + + Moskva + + + Volgograd (Rusija) + + + Samara (Rusija) + + + Jekatepinburg (Rusija) + + + Omsk (Rusija) + + + Novosibirsk (Rusija) + + + Krasnojarsk + + + Irkuck (Rusija) + + + Jakutsk (Rusija) + + + Vladivostok (Rusija) + + + Sahalin (Rusija) + + + Magadan (Rusija) + + + Kamčatka + + + Anadir + + + Rijad + + + Gvadalkanal + + + Kartum + + + Stokholm + + + Singapur + + + Sveta Jelena + + + Fritaun + + + Mogadiš + + + Paramirbo + + + Salvador + + + Damask + + + Ndžamena + + + Kergelen + + + Bankok + + + Dušanbe + + + Ašhabad + + + Port of Spejn + + + Fanafuti + + + Tajpej + + + Dar-es-Salam + + + Užgorod + + + Kijev + + + Zaporožje + + + Midvej + + + Džonston + + + Vake + + + Adak (SAD) + + + Nom + + + Honolulu (SAD) + + + Enkoridž + + + Jakuta + + + Žano + + + Los Anđeles (SAD) + + + Bojzi (SAD) + + + Feniks (SAD) + + + Denver (SAD) + + + Novi Salem, Severna Dakota (SAD) + + + Centar, Severna Dakota (SAD) + + + Čikago (SAD) + + + Menomine + + + Vincenis, Indijana + + + Petesburg (SAD) + + + Tel Siti (SAD) + + + Konks (SAD) + + + Vinamak, Indijana + + + Marengo (SAD) + + + Indianapolis (SAD) + + + Luivil (SAD) + + + Vevej, Indijana + + + Montičelo (SAD) + + + Detroit (SAD) + + + Njujork (SAD) + + + Samarkand (Uzbekistan) + + + Taškent + + + Sent Vinsent + + + Karakas + + + Sv. Toma + + + Valis + + + Apija + + + Majote + + + Johanesburg + + + + Acre vreme + Acre standardno vreme + Acre letnje računanje vremena + + + + + Avganistan vreme + + + + + Centralna Afrika vreme + + + + + Istočna Afrika vreme + + + + + Južna Afrika standardno vreme + + + + + Zapadna Afrika vreme + Zapadna Afrika standardno vreme + Zapadna Afrika letnje računanje vremena + + + + + Aljaska vreme + Aljaska standardno vreme + Aljaska letnje računanje vremena + + + + + Almatu vreme + Almatu standardno vreme + Almatu letnje računanje vremena + + + + + Amazon vreme + Amazon standardno vreme + Amazon letnje računanje vremena + + + + + Centralno vreme (SAD) + Centralno standardno vreme (SAD) + Centralno letnje merenje vremena (SAD) + + + + + Istočno vreme (SAD) + Istočno standardno vreme (SAD) + Istočno letnje računanje vremena (SAD) + + + + + Planinsko vreme (SAD) + Planinsko standardno vreme (SAD) + Planinsko letnje računanje vremena (SAD) + + + + + Pacifičko vreme (SAD) + Pacifičko standardno vreme (SAD) + Pacifičko letnje računanje vremena (SAD) + + + + + Anadir vreme + Anadir standardno vreme + Anadir letnje računanje vremena + + + + + Akvtau vreme + Akvtau standardno vreme + Akvtau letnje računanje vremena + + + + + Akvtobe vreme + Akvtobe standardno vreme + Akvtobe letnje računanje vremena + + + + + Arabijsko vreme + Arabijsko standardno vreme + Arapsko letnje računanje vremena + + + + + Argentina vreme + Argentina standardno vreme + Argentina letnje računanje vremena + + + + + Zapadna Argentina vreme + Zapadna Argentina standardno vreme + Zapadna Argentina letnje računanje vremena + + + + + Armenija vreme + Armenija standardno vreme + Armenija letnje računanje vremena + + + + + Atlantsko vreme + Atlantsko standardno vreme + Atlantsko letnje računanje vremena + + + + + Centralno australijsko vreme + Centralno australijsko standardno vreme + Centralno australijsko letnje računanje vremena + + + + + Australijsko centralno zapadno vreme + Australijsko centralno zapadno standardno vreme + Australijsko centralno zapadno letnje računanje vremena + + + + + Australijsko istočno vreme + Australijsko istočno standardno vreme + Australijsko istočno letnje računanje vremena + + + + + Australijsko zapadno vreme + Australijsko zapadno standardno vreme + Australijsko zapadno letnje računanje vremena + + + + + Azerbejdžan vreme + Azerbejdžan standardno vreme + Azerbejdžan letnje računanje vremena + + + + + Azori vreme + Azori standardno vreme + Azori letnje računanje vremena + + + + + Bangladeš vreme + Bangladeš standardno vreme + Bangladeš letnje računanje vremena + + + + + Butan vreme + + + + + Bolivija vreme + + + + + Brazilija vreme + Brazilija standardno vreme + Brazilija letnje računanje vremena + + + + + Brunei Darusalam vreme + + + + + Zelenortska ostrva vreme + Zelenortska ostrva standardno vreme + Zelenortska ostrva letnje računanje vermena + + + + + Čamoro standardno vreme + + + + + Čatam vreme + Čatam standardno vreme + Čatam letnje računanje vremena + + + + + Čile vreme + Čile standardno vreme + Čile letnje računanje vremena + + + + + Kina vreme + Kinesko standardno vreme + Kina letnje računanje vremena + + + + + Čojbalsan vreme + Čojbalsan standardno vreme + Čojbalsan letnje računanje vremena + + + + + Božićna Ostrva vreme + + + + + Kokos (Keling) Ostrva vreme + + + + + Kolumbija vreme + Kolumbija standardno vreme + Kolumbija letnje računanje vremena + + + + + Kukova ostrva vreme + Kukova ostrva standardno vreme + Kukova ostrva, polu-letnje računanje vremena + + + + + Kuba vreme + Kuba standardno vreme + Kuba letnje računanje vremena + + + + + Dejvis vreme + + + + + Dimon d’Urvil vreme + + + + + Istočni Timor vreme + + + + + Uskršnja ostrva vreme + Uskršnja ostrva standardno vreme + Uskršnja ostrva letnje računanje vremena + + + + + Ekvador vreme + + + + + Centralnoevropsko vreme + Centralnoevropsko standardno vreme + Centralnoevropsko letnje računanje vremena + + + + + Istočnoevropsko vreme + Istočnoevropsko standardno vreme + Istočnoevropsko letnje računanje vemena + + + + + Zapadna evropsko vreme + Zapadna evropsko standardno vreme + Zapadno evropsko letnje računanje vremena + + + + + Folklandska ostrva vreme + Folklandska ostrva standardno vreme + Folklandska ostrva letnje računanje vremena + + + + + Fidži vreme + Fidži standardno vreme + Fidži letnje računanje vremena + + + + + Francuska Gvajana vreme + + + + + Francuske Južne Teritorije vreme + + + + + Galapagos vreme + + + + + Gambijer vreme + + + + + Gruzija vreme + Gruzija standardno vreme + Gruzija letnje računanje vremena + + + + + Gilbert ostrva vreme + + + + + Grinvič vreme + + + + + Istočni Grenland vreme + Istočni Grenland standardno vreme + Istočni Grenland letnje računanje vremena + + + + + Zapadni Grenland vreme + Zapadni Grenland standardno vreme + Zapadni Grenland letnje računanje vremena + + + + + Guam standardno vreme + + + + + Zaliv standardno vreme + + + + + Gvajana vreme + + + + + Havaǰsko-aleućansko vreme + Havaǰsko-aleućansko standardno vreme + Havaǰsko-aleućansko letnje računanje vremena + + + + + Hong Kong vreme + Hong Kong standardno vreme + Hong Kong letnje računanje vremena + + + + + Hovd vreme + Hovd standardno vreme + Hovd letnje računanje vremena + + + + + Indijsko standardno vreme + + + + + Indijski okean vreme + + + + + Indokina vreme + + + + + Centralno indonezijsko vreme + + + + + Istočno indonezijsko vreme + + + + + Zapadno indonezijsko vreme + + + + + Iran vreme + Iran standardno vreme + Iran letnje računanje vremena + + + + + Irkuck vreme + Irkuck standardno vreme + Irkuck letnje računanje vremena + + + + + Izraelsko vreme + Izraelsko standardno vreme + Izraelsko letnje računanje vremena + + + + + Japansko vreme + Japansko standardno vreme + Japan letnje računanje vremena + + + + + Petropavlovsk-Kamčatski vreme + Petropavlovsk-Kamčatski standardno vreme + Petropavlovsk-Kamčatski letnje računanje vremena + + + + + Istočni Kazahstan vreme + + + + + Zapadni Kazahstan vreme + + + + + Koreja vreme + Korejsko standardno vreme + Korejsko letnje računanje vremena + + + + + Košre vreme + + + + + Krasnojarsk vreme + Krasnojarsk standardno vreme + Krasnojarsk letnje računanje vremena + + + + + Kirgizstan vreme + + + + + Lanka vreme + + + + + Lajn ostrva vreme + + + + + Lord Hov vreme + Lord Hov standardno vreme + Lord Hov letnje računanje vremena + + + + + Makao vreme + Makao standardno vreme + Makao letnje računanje vremena + + + + + Magadan vreme + Magadan standardno vreme + Magadan letnje računanje vremena + + + + + Malezija vreme + + + + + Maldivi vreme + + + + + Markiz vreme + + + + + Maršalska Ostrva vreme + + + + + Mauricijus vreme + Mauricijus standardno vreme + Mauricijus letnje računanje vremena + + + + + Moson vreme + + + + + Ulan Bator vreme + Ulan Bator standardno vreme + Ulan Bator letnje računanje vremena + + + + + Moskva vreme + Moskva standardno vreme + Moskva letnje računanje vremena + + + + + Mijanmar vreme + + + + + Nauru vreme + + + + + Nepal vreme + + + + + Nova Kaledonija vreme + Nova Kaledonija standardno vreme + Nova Kaledonija letnje računanje vremena + + + + + Novi Zeland vreme + Novi Zeland standardno vreme + Novi Zeland letnje računanje vremena + + + + + Njufaundlend vreme + Njufaundlend standardno vreme + Njufaundlend letnje računanje vremena + + + + + Niue vreme + + + + + Norfolk Ostrvo vreme + + + + + Fernando de Noronja vreme + Fernando de Noronja standardno vreme + Fernando de Noronja letnje računanje vremena + + + + + Severna Marijanska Ostrva vreme + + + + + Novosibirsk vreme + Novosibirsk standardno vreme + Novosibirsk letnje računanje vremena + + + + + Omsk vreme + Omsk standardno vreme + Omsk letnje računanje vremena + + + + + Pakistan vreme + Pakistan standardno vreme + Pakistan letnje računanje vremena + + + + + Palau vreme + + + + + Papua Nova Gvineja vreme + + + + + Paragvaj vreme + Paragvaj standardno vreme + Paragvaj letnje računanje vremena + + + + + Peru vreme + Peru standardno vreme + Peru letnje računanje vremena + + + + + Filipini vreme + Filipini standardno vreme + Filipini letnje računanje vremena + + + + + Fenička ostrva vreme + + + + + Sen Pjer i Mikelon vreme + Sen Pjer i Mikelon standardno vreme + Sen Pjer i Mikelon letnje računanje vremena + + + + + Pitkairn vreme + + + + + Ponape vreme + + + + + Kizilorda vreme + Kizilorda standardno vreme + Kizilorda letnje računanje vremena + + + + + Rejunion vreme + + + + + Roter vreme + + + + + Sahalin vreme + Sahalin standardno vreme + Sahalin letnje računanje vremena + + + + + Samara vreme + Samara standardno vreme + Samara letnje računanje vremena + + + + + Samoa vreme + Samoa standardno vreme + Samoa letnje računanje vremena + + + + + Sejšeli vreme + + + + + Singapur standardno vreme + + + + + Solomonska Ostrva vreme + + + + + Južna Džordžija vreme + + + + + Surinam vreme + + + + + Šova vreme + + + + + Tahiti vreme + + + + + Teipei veme + Taipei standardno vreme + Taipei letnje računanje vremena + + + + + Tadžikistan vreme + + + + + Tokelo vreme + + + + + Tonga vreme + Tonga standardno vreme + Tonga letnje računanje vremena + + + + + Truk vreme + + + + + Turkmenistan vreme + Turkmenistan standardno vreme + Turkmenistan letnje računanje vremena + + + + + Tuvalu vreme + + + + + Urugvaj vreme + Urugvaj standardno vreme + Urugvaj letnje računanje vremena + + + + + Uzbekistan vreme + Uzbekistan standardno vreme + Uzbekistan letnje računanje vremena + + + + + Vanuatu vreme + Vanuatu standardno vreme + Vanuatu letnje računanje vremena + + + + + Venecuela vreme + + + + + Vladivostok vreme + Vladivostok standardno vreme + Vladivostok letnje računanje vremena + + + + + Volgograd vreme + Volgograd standardno vreme + Volgograd Letnje računanje vremena + + + + + Vostok vreme + + + + + Vejk vreme + + + + + Valis i Futuna Ostrva vreme + + + + + Jakutsk vreme + Jakutsk standardno vreme + Jakutsk letnje računanje vremena + + + + + Jekaterinburg vreme + Jekaterinburg standardno vreme + Jekaterinburg letnje računanje vremena + + + + + + + , + . + + + + + Andorska pezeta + Andorijska pezeta + Andorijske pezete + Andorijskih pezeta + Andorijske pezete + + + Ujedinjeni arapski emirati dirham + UAE diram + UAE dirama + UAE dirama + UAE dirama + + + Avganistanski avgani (1927–2002) + Avganistanski avgan (1927–2002) + Avganistanska avgana (1927–2002) + Avganistanskih avgana (1927–2002) + Avganistanski avgan (1927–2002) + + + Avganistanski avgani + Avganistanski avgan + Avganistanska avgana + Avganistanskih avgana + Avganistanski avgan + + + Albanski lek (1946–1965) + albanski lek (1946–1965) + Albanska leka (1946–1965) + Albanskih leka (1946–1965) + albanski lek (1946–1965) + + + Albanski lek + albanski lek + Albanska leka + Albanskih leka + albanski lek + + + Jermenski dram + jermenski dram + Jermenske drame + Jermenskih drama + jermenski drami + + + Holandski Antili gilder + Holandskoantilski gilder + Holandskoantilska gildera + Holandskoantilskih gildera + Holandskoantilski gildera + + + Angolijska kvanza + Angolijska kvanza + Angolijske kvanze + Angolijskih kvanzi + Angolijskih kvanzi + + + Angolijska kvanza (1977–1991) + Angolijska kvanza (1977–1991) + Angolijske kvanze (1977–1991) + Angolijskih kvanzi (1977–1991) + Angolijskih kvanzi (1977–1991) + + + Angolijska nova kvanza (1990–2000) + angolijska nova kvanza (1990–2000) + angolijske nove kvanze (1990–2000) + angolijskih novih kvanzi (1990–2000) + angolski novi kvanze (1990–2000) + + + Angolijska kvanza reajustado (1995–1999) + angolijska kvanza reađustado (1995–1999) + angalske kvanze reađustado (1995–1999) + angolijskih kvanzi reađustado (1995–1999) + angolijskih kvanzi reađustado (1995–1999) + + + Argentinski austral + argentinski austral + argentinska australa + argentinskih australa + argentinski australs + + + argentinski pezos lej + argentinski pezos lej + argentinskih pezosa lej + argentinski pezos lej + + + argentinski pezo monedo nacional + argentinski pezos moneda nacional + argentinskih pezosa moneda nacional + argentinskih pezosa moneda nacional + + + Argentinski pezo (1983–1985) + argentinski pezo (1983–1985) + argentinska pezosa (1983–1985) + argentinskih pezosa (1983–1985) + argentinskih pezosa (1983–1985) + + + Argentinski pezo + argentinski pezos + argentinska pezosa + argentinskih pezosa + argentinskih pezosa + + + Austrijski šiling + austrijski šiling + austrijska šilinga + austrijskih šilinga + austrijskih šilinga + + + Australijski dolar + australijski dolar + Australijska dolara + Australijskih dolara + australijskih dolara + + + Arubijski florin + arubanski florin + arubanska florina + arubanskih florina + arubanskih florina + + + Azerbejdžanski manat (1993–2006) + azerbejdžanski manat (1993–2006) + azerbejdžanska manata (1993–2006) + azerbejdžanskih manata (1993–2006) + azerbejdžanskih manata (1993–2006) + + + Azerbejdžanski manat + azerbejdžanski manat + azerbejdžanska manata + azerbejdžanskih manata + azerbejdžanskih manata + + + Bosansko-Hercegovački dinar + bosansko-hercegovački dinar + Bosansko-Hercegovačka dinara + Bosansko-Hercegovačkih dinara + bosansko-hercegovačkih dinara + + + Bosansko-Hercegovačka konvertibilna marka + bosansko-hercegovačka konvertibilna marka + Bosansko-Hercegovačke konvertibilne marke + Bosansko-Hercegovačkih konvertibilnih maraka + bosansko-hercegovačkih konvertibilnih maraka + KM + + + Bosansko-hercegovački novi dinar + bosansko-hercegovački novi dinar + bosansko-hercegovački novi dinari + bosansko-hercegovački novi dinari + bosansko-hercegovački novi dinar + + + Barbadoski dolar + barbadoški dolar + barbadoška dolara + barbadoških dolara + barbadoških dolara + + + Bangladeška taka + bangladeška taka + bangladeške take + bangladeških taka + bangladeških taka + + + Belgijski frank (konvertibilni) + belgijski franak (konvertibilni) + belgijska franka (konvertibilna) + belgijskih franaka (konvertibilnih) + belgijskih franaka (konvertibilnih) + + + Belgijski franak + belgijski franak + belgijska franka + belgijskih franaka + belgijskih franaka + + + Belgijski frank (finansijski) + belgijski franak (finansijski) + belgijska franka (finansijska) + belgijskih franaka (finansijskih) + belgijskih franaka (finansijskih) + + + Bugarski tvrdi lev + bugarski tvrdi lev + bugarska tvrda leva + bugarskih tvrdih leva + bugarskih tvrdih leva + + + Bugarski socijalistički lev + bugarski socijalistički lev + bugarska socijalistička leva + bugarskih socijalističkih leva + bugarskih socijalističkih leva + + + Bugarski lev + bugarski lev + bugarska leva + bugarskih leva + bugarskih leva + + + Bugarski lev (1879–1952) + bugarski lev (1879–1952) + Bugarska leva (1879–1952) + Bugarskih leva (1879–1952) + Bugarskih leva (1879–1952) + + + Bahreinski dinar + bahreinskih dinara + bahreinskih dinara + bahreinskih dinara + bahreinskih dinara + + + Burundski franak + burundski franak + burundska franaka + burundskih franaka + burundskih franaka + + + Bermudski dolar + bermudski dolar + bermudska dolara + bermudskih dolara + bermudskih dolara + + + Brunejski dolar + brunejski dolar + brunejska dolara + brunejskih dolara + brunejskih dolara + + + Bolivijski boliviano + bolivijski boliviano + bolivijska boliviana + bolivijskih boliviana + bolivijskih boliviana + + + Bolivijski boliviano (1863–1963) + bolivijski boliviano (1863–1963) + bolivijska boliviana (1863–1963) + bolivijskih boliviana (1863–1963) + bolivijskih boliviana (1863–1963) + + + Bolivijski pezo + bolivijski pezo + Bolivijska pezosa + bolivijskih pezosa + bolivijskih pezosa + + + Bolivijski mvdol + bolivijski mvdol + bolivijska mvdola + bolivijskih mvdola + bolivijskih mvdola + + + Brazilski kruzeiro novo (1967–1986) + brazilski novi kruzeiro (1967–1986) + brazilska nova kruzeira (1967–1986) + brazilskih novih kruzeira (1967–1986) + brazilskih novih kruzeira (1967–1986) + + + Brazilski kruzado (1986–1989) + brazilskih kruzado (1986–1989) + brazilska kruzadosa (1986–1989) + brazilskih kruzadosa (1986–1989) + brazilskih kruzadosa (1986–1989) + + + Brazilski kruzeiro (1990–1993) + brazilski kruzeiro (1990–1993) + brazilska kruzeira (1990–1993) + brazilskih kruzeira (1990–1993) + brazilskih kruzeira (1990–1993) + + + Brazilski real + brazilski real + brazilska reala + brazilskih reala + brazilskih reala + + + Brazilski kruzado novo (1989–1990) + brazilski novi kruzado (1989–1990) + brazilska nova kruzada (1989–1990) + brazilskih novih kruzada (1989–1990) + brazilskih novih kruzada (1989–1990) + + + Brazilski kruzeiro (1993–1994) + brazilski kruzeiro (1993–1994) + brazilijska kruzeira (1993–1994) + brazilskih kruzeira (1993–1994) + brazilskih kruzeira (1993–1994) + + + Brazilski kruzeiro (1942–1967) + brazilski kruzeiro (1942–1967) + brazilijska kruzeira (1942–1967) + brazilskih kruzeira (1942–1967) + brazilskih kruzeira (1942–1967) + + + Bahamski dolar + bahamski dolar + bahamska dolara + bahamskih dolara + bahamskih dolara + + + Butanski ngultrum + butanski ngultrum + butanska ngultruma + butanskih ngultruma + butanski ngultruma + + + Burmanski kjat + burmanski kjat + burmanska kjata + burmanskih kjata + burmanskih kjata + + + Botsvanska pula + bocvanska pula + bocvanske pule + bocvanskih pula + bocvanskih pula + + + Beloruska nova rublja (1994–1999) + beloruska nova rublja (1994–1999) + beloruske nove rublje (1994–1999) + beloruskih novih rublji (1994–1999) + beloruskih novih rublji (1994–1999) + + + Beloruska rublja + beloruska rublja + beloruske rublje + beloruskih rublji + bjeloruske rublje + + + Belize dolar + belizeanski dolar + belizeanska dolara + belizeanskih dolara + belizeanskih dolara + + + Kanadski dolar + kanadski dolar + Kanadska dolara + Kanadskih dolara + kanadskih dolara + + + Kongolski franak + kongolski franak + kongolska franka + kongoanskih franaka + kongolskih franaka + + + WIR Evro + WIR evro + WIR evra + WIR evra + WIR evra + + + Švajcarski franak + švajcarski franak + Švajcarska franka + Švajcarskih franaka + švajcarskih franaka + + + WIR franak + WIR franak + WIR franka + WIR franaka + WIR franak + + + Čileanski eskudo + čileanski eskudo + čileanska eskuda + čileanskih eskuda + čileanskih eskuda + + + Čileanski unidades de fomento + čileanski unidades de fomentos + čileanska unidades de fomentos + čileanskih unidades de fomentos + čileanski unidades de fomentos + + + Čileanski pezo + čileanski pezos + čileanska pezosa + čileanskih pezosa + čileanski pezos + + + Dolar kineske narodne banke + dolar kineske narodne banke + dolari kineske narodne banke + dolari kineske narodne banke + dolar kineske narodne banke + + + Kineski Juan Renminbi + kineski juan + kineska juana + kineskih juana + kineskih juana + + + Kolumbijski pezo + kolumbijski pezo + kolumbijska pezosa + kolumbijskih pezosa + kolumbijski pezosi + + + Kostarikanski kolon + kostarikanski kolon + kostarikanska kolona + kostarikanskih kolona + kostarikanskih kolona + + + Srpski dinar (2002–2006) + srpski dinar (2002–2006) + srpska dinara (2002–2006) + srpskih dinara (2002–2006) + srpskih dinara (2002–2006) + + + Čehoslovačka tvrda koruna + čehoslovačka tvrda kruna + čehoslovačke tvrde krune + čehoslovačkih tvrdih kruna + čehoslovačka tvrda kruna + + + Kubanski konvertibilni pezos + kubanski konvertibilni pezo + kubanska konvertibilna pezosa + kubanskih konvertibilnih pezosa + kubanskih konvertibilnih pezosa + + + Kubanski pezo + kubanski pezos + kubanska pezosa + kubanskih pezosa + kubanskih pezosa + + + Kejp verdanški eskudo + zelenortski eskudo + zelenortska eskuda + zelenortskih eskuda + zelenortskih eskuda + + + Kipratska funta + kiparska funta + kiparske funte + kiparskih funti + kiparska funta + + + Češka kruna + češka kruna + češke krune + čeških kruna + čeških kruna + + + + Istočnoevropska marka + istočnonemačka marka + istočnonemačke marke + istočnonemačkih maraka + istočnonemačkih maraka + + + Nemačka marka + nemačka marka + Nemačke marke + Nemačkih maraka + nemačkih maraka + + + Džibutanski franak + džibutski franak + džibutska franka + džibutskih franaka + džibutski franak + + + Danska kruna + danska kruna + danske krune + danskih kruna + danskih kruna + + + DOminikanski pezo + dominikanski pezo + dominikanska pezosa + dominikanskih pezosa + dominikanskih pezosa + + + Alžirski dinar + alžirski dinar + alžirska dinara + alžirskih dinara + alžirskih dinara + + + Ekvadorijski sukr + ekvadorska sakra + ekvadorska sakra + ekvadorskih sakra + ekvadorskih sakra + + + Ekvadorski unidad de valor konstantin (UVC) + ekvadorski unidad de valor constante (UVC) + ekvadorska unidad de valor constante (UVC) + ekvadorskih unidad de valor constante (UVC) + ekvadorski unidad de valor constante (UVC) + + + Estonska kruna + estonska kruna + estonske krune + estonskih kruna + estonskih kruna + + + Egipatska funta + egipatska funta + egipatske funte + egipatskih funti + egipatskih funti + + + Eritreanska nakfa + eritrejska nakfa + eritrejske nakfe + eritrejskih nakfi + eritrejska nakfa + + + Španska pezeta (račun) ESA + španska pezeta (A račun) + španske pezete (A račun) + španskih pezeta (A račun) + španska pezeta (A račun) + + + Španska pezeta (konvertibilni račun) + španska pezeta (konvertibilan račun) + španske pezete (konvertibilan račun) + španskih pezeta (konvertibilan račun) + španska pezeta (konvertibilan račun) + + + Španska pezeta + španskа pezetа + španska pezeta + španskih pezeta + španskе pezetе + + + Etopijski bir + etiopijski bir + etiopijska bira + etiopijskih bira + etiopijskih bira + + + Evro + evro + evra + evra + evra + + + Finska marka + finska marka + Finske marke + Finskih maraka + finskih maraka + + + Fidži dolar + fidži dolar + fidži dolara + fidži dolara + fidži dolara + + + Foklandska ostrva funta + folklandska funta + folklandske funte + folklandskih funti + folklandska funta + + + Francuski franak + francuski franak + Francuska franka + Francuskih franaka + francuskih franaka + + + Britanska funta sterlinga + britanska funta sterlinga + britanske funte sterlinga + britanskih funti sterlinga + britanskih funti sterlinga + + + Gruzijski kupon larit + gruzijski kupon larit + gruzijska kupon larita + gruzijskih kupon larita + gruzijskih kupon larita + + + Džordžijski lari + gruzijski laris + gruzijska larisa + gruzijskih larisa + gruzijskih larisa + + + Ganijski cedi (1979–2007) + ganski ced (1979–2007) + ganska ceda (1979–2007) + ganskih ceda (1979–2007) + ganskih ceda (1979–2007) + + + Ganijski cedi + ganski cedi + ganska ceda + ganskih ceda + ganski cedi + + + Gibraltarska funta + gibraltarska funta + gibraltarske funte + gibraltarskih funti + gibraltarska funta + + + Gambijski dalasi + gambijski dalas + gambijska dalasa + gambijskih dalasa + gambijskih dalasa + + + Gvinejski franak + gvinejski franak + gvinejska franka + gvinejskih franaka + gvinejski franak + + + Gvinejski sili + gvinejski sili + gvinejska silija + gvinejskih silija + gvinejski silij + + + Evatorijalna gvineja ekvele + evatorijаlno-gvinejski ekvele + evatorijаlno-gvinejska ekvelа + evatorijаlno-gvinejskih ekvelа + evatorijаlno-gvinejskih ekvelа + + + Drahma + grčka drahma + grčke drahme + grčkih drahmi + grčkih drahmi + + + Gvatemalski kvetzal + gvatemalski kvecal + gvatemalska kvecala + gvatemalskih kvecala + gvatemalskih kvecala + + + Portugalska Gvineja eskudo + portugalsko-gvinejski eskudo + portugalsko-gvinejska eskuda + portugalsko-gvinejskih eskuda + portugalsko-gvinejski eskudo + + + Gvineja bisao pezo + gvinejа-bisaoški pezo + gvinejа-bisaoška pezosa + gvinejа-bisaoških pezosa + gvinejsko-bisaoski pezos + + + Guajanski dolar + gvajanski dolar + gvajanska dolara + gvajanskih dolara + gvajanski dolari + + + Honkonški dolar + hongkonški dolar + hongkonška dolara + hongkonških dolara + hongkonških dolara + + + Honduranska lempira + honduraški lempir + honduraškа lempirа + honduraških lempirа + honduraških lempirа + + + Hrvatski dinar + hrvatski dinar + Hrvatska dinara + Hrvatskih dinara + hrvatskih dinara + + + Hrvatska kuna + hrvatska kuna + Hrvatske kune + Hrvatskih kuna + hrvatskih kuna + + + Haitski gurd + haićanski gourd + haićanska gourda + haićanskih gourda + haićanski gourd + + + Mađarska forinta + mađarska forinta + mađarske forinte + mađarskih forinti + mađarske forinte + + + Indonezijska rupiah + indonežanska rupija + indonežanske rupije + indonežanskih rupija + indonežanske rupije + + + Irska funta + irska funta + irske funte + irskih funti + irskih funti + + + Izraelska funta + izraelska funta + izraelske funte + izraelskih funti + izraelska funta + + + stari izraelski šekeli + stari izraelski šekeli + stari izraelski šekeli + stari izraelski šekeli + stari izraelski šekeli + + + Izraelski šekel + novi izraelski šekel + nova izraelska šekela + novih izraelskih šekela + novih izraelskih šekela + + + Indijski rupi + indijska rupija + indijske rupije + indijskih rupija + indijskih rupija + + + Irački dinar + irački dinar + iračka dinara + iračkih dinara + irački dinari + + + Iranijski rial + iranski rijal + iranska rijala + iranskih rijala + iranski rijali + + + stara islandska kruna + stara islandska kruna + stara islandska kruna + stara islandska kruna + stara islandska kruna + + + Islandska kruna + islandska kruna + islandske krune + islandskih kruna + islandska kruna + + + Italijanska lira + italijanska lira + Italijanske lire + Italijanskih lira + italijanske lire + + + Jamajski dolar + jamajski dolar + jamajska dolara + jamajskih dolara + jamajskih dolara + + + Jordanski dinar + ordanskih dinara + jordanskih dinara + jordanskih dinara + ordanskih dinara + + + Japanski jen + japanski jen + Japanska jena + Japanskih jena + japanski jen + + + Kenijski šiling + kenijski šiling + kenijska šilinga + kenijskih šilinga + kenijskih šilinga + + + Kirgistanski som + kirgistanski som + kirgistanska soma + kirgistanskih soma + kirgijski som + + + Kambodžijski riel + kambodžanski rijal + kambodžanska rijela + kambodžanskih rijela + kambodžanskih rijela + + + Komoranski franak + komoranski franak + komoranska franka + komoranskih franaka + komoranski franci + + + Severnokorejski von + severnokorejski von + severnokorejska vona + severnokorejskih vona + severnokorejski von + + + Južno-korejski hvan (1953–1962) + južno-korejski hvan (1953–1962) + južno-korejska hvana (1953–1962) + južno-korejskih hvana (1953–1962) + južno-korejski hvana (1953–1962) + + + Južno-korejski Von (1945–1953) + južno-korejski von (1945–1953) + južno-korejska vona (1945–1953) + južno-korejskih vona (1945–1953) + južno-korejski von (1945–1953) + + + Južno-korejski Von + južno-korejski von + južno-korejska vona + južno-korejskih vona + južno-korejski von + + + Kuvajtski dinar + kuvajtskih dinara + kuvajtskih dinara + kuvajtskih dinara + kuvajtskih dinara + + + Kajmanska ostrva dolar + kajmanski dolar + kajmanska dolara + kajmanskih dolara + kajmanski dolar + + + Kazahstanski tendž + kazahstanska tendža + kazahstanske tendže + kazahstanskih tendži + kazahstanskih tendži + + + Laoški kip + laoški kip + laoška kipa + laoških kipa + laoški kipovi + + + Lebanska funta + lebanska funta + lebanske funte + lebanskih funti + lebanske funte + + + Šrilankanski rupi + šrilankanska rupija + šrilankanske rupije + šrilankanskih ruplji + šrilankanska rupija + + + Liberijski dolar + liberijski dolar + liberijska dolara + liberijskih dolara + liberijskih dolara + + + Lesotski loti + lesotski lotis + lesotska lotisa + lesotskih lotisa + lesotskih lotisa + + + Litvanski litas + litvanska lita + litvanske lite + litvanskih lita + litvanskih lita + + + Litvanski talonas + litvanska talona + litvanske talone + litvanskih talona + litvanskih talona + + + Luksemburški konvertibilni franak + luksemburški konvertibilni franak + luksemburška konvertibilna franka + luksemburških konvertibilnih franaka + luksemburški konvertibilni franak + + + Luksemburški franak + luksemburški franak + luksemburška franka + luksemburških franaka + luksemburški franci + + + Luksemburški finansijski franak + luksemburški financijski franak + luksemburška financijska franka + luksemburških financijskih franaka + luksemburški financijski franak + + + Latvijski lats + latvijski lat + latvijska lata + latvijskih lata + latvijski lat + + + Latvijska rublja + latvijska rublja + latvijska rublja + latvijskih rublji + latvijska rublja + + + Libijski dinar + Libijskih dinara + libijska dinara + Libijskih dinara + libijskih dinara + + + Marokanski dirham + marokanska dirama + marokanske dirame + marokanskih dirama + marokanskih dirama + + + Marokanski franak + marokanski franak + marokanska franka + marokanskih franaka + marokanski franak + + + Monegaskaški franak + monegaskaški franak + monegaskaška franka + monegaskaških franaka + monegaskaških franaka + + + moldovanski kupon + moldovanska kupona + moldovanskih kupona + moldovanskih kupona + + + Moldovski lju + moldavski lej + moldavska leja + moldavskih leja + moldavski lej + + + Malagasijski ariari + madagaskarski ariarij + madagaskarska ariarija + madagaskarskih ariarija + madagaskarski ariariji + + + Malagasijski franak + madagaskarski franak + madagaskarska franka + madagaskarskih franaka + madagaskarski franaka + + + Makedonski denar + makedonski denar + makedonska denara + makedonskih denara + makedonskih dinara + + + Makedonski denar (1992–1993) + makedonski denar (1992–1993) + makedonska denara (1992–1993) + makedonskih denara (1992–1993) + makedonskih dinara (1992–1993) + + + Malijanski franak + malijski franak + malijska franka + malijskih franaka + malijski franak + + + Mjanmaški kjat + mjanmarski kjat + mjanmarska kjata + mjanmarskih kjata + mjanmarski kjati + + + Mongolski tugrik + mongolski tugrik + mongolska tugrika + mongolskih tugrika + mongolski tugrici + + + Makaniška pataka + makaneški patak + makaneška patka + makaneških pataka + makaneški patak + + + Mauritanijska ugvija + mauritanijska ouguja + mauritanijske ouguje + mauritanijskih ouguja + mauritanijske ouguje + + + Malteška lira + malteška lira + malteške lire + malteških lira + malteških lira + + + Malteška funta + malteška funta + malteške funte + malteških funti + malteška funta + + + Mauricijska ruplja + mauricijska rupija + mauricijske rupije + mauricijskih rupija + mauricijske rupije + + + Maldivijska rufija + maldivijska rufija + maldivijske rufije + maldivijskih rufija + maldivijska rufija + + + Malavijska kvača + malavijska kvača + malavijske kvače + malavijskih kvača + malavijska kvača + + + Meksički peso + meksički pezos + meksička pezosa + meksičkih pezosa + meksičkih pezosa + + + Meksijski srebrno pezo (1861–1992) + meksički srebrni pezos (1861–1992) + meksička srebrna pezosa (1861–1992) + meksičkih srebrnih pezosa (1861–1992) + meksički srebrni pezos (1861–1992) + + + Meksijski unidad de inverzion + meksički unidads de inversion (UDI) + meksička unidads de inversion (UDI) + meksičkih unidads de inversion (UDI) + meksički unidads de inversion (UDI) + + + Malezijski ringit + malezijski ringit + malezijska ringita + malezijskih ringita + malezijskih ringita + + + Mozambijski eskudo + mozambijski eskudo + mozambijska eskuda + mozambijskih eskuda + mozambijski eskudo + + + Mozambijski metikal (1980–2006) + mozambijski metikal (1980–2006) + mozambijska metikala (1980–2006) + mozambijskih metikala (1980–2006) + mozambijski metikal (1980–2006) + + + Mozambijski metikal + mozambijski metikal + mozambijska metikala + mozambijskih metikala + mozambijski metikal + + + Nambijski dolar + namibijski dolar + namibijska dolara + namibijskih dolara + namibijski dolar + + + Nigerijska naira + nigerijski nair + nigerijska naira + nigerijskih naira + nigerijski nair + + + Nikaragvanška kordoba (1988–1991) + nikaragvanska kordoba (1988–1991) + nikaragvanske kordobe (1988–1991) + nikaragvanskih kordoba (1988–1991) + nikaragvanska kordoba (1988–1991) + + + Nikaragvanška kordoba + nikaragvanska kordoba + nikaragvanske kordobe + nikaragvanskih kordoba + nikaragvanska kordoba + + + Holandski gulden + holandski gulden + holandska guldena + holandskih guldena + holandskih guldena + + + Norveška kruna + Norveška kuna + Norveške kune + Norveških kuna + norveških kruna + + + Nepalska ruplja + nepalska rupija + nepalske rupije + nepalskih rupija + nepalska rupija + + + Novozelandski dolar + novozelandski dolar + novozelandska dolara + novozelandskih dolara + novozelandskih dolara + + + Omanski rial + omanski rijal + omanska rijala + omanskih rijala + omanski rijal + + + Panamanska balboa + panamska balboa + panamske balboe + panamskih balboa + panamska balboa + + + Peruvijski inti + peruanska inta + peruanske inte + peruanskih inti + peruanska inta + + + Peruanski nuevo sol + peruanski nuevo sol + peruanska nuevo sola + peruanskih nuevo sola + peruanskih nuevo sola + + + Peruvijski sol (1863–1965) + peruanski sol (1863–1965) + peruanska sola (1863–1965) + peruanskih sola (1863–1965) + peruanski sol (1863–1965) + + + Papua Nova Gvineja kina + kina Papue Nove Gvineje + kine Papue Nove Gvineje + kina Papue Nove Gvineje + kina Papue Nove Gvineje + + + Filipinski peso + filipinski pezo + filipinska pezosa + filipinskih pezosa + filipinskih pezosa + + + Pakistanski rupi + pakistanska rupija + pakistanske rupije + pakistanskih rupija + pakistanske rupije + + + Poljski zlot + poljski zlot + poljske zlote + poljskih zlota + poljski zlot + zl + + + Poljski zloti (1950–1995) + poljski zlot (1950–1995) + poljske zlote (1950–1995) + poljskih zlota (1950–1995) + poljski zlot (1950–1995) + + + Portugalski eskudo + portugalski eskudo + portugalska eskuda + portugalskih eskuda + portugalskih eskuda + + + Paragvajski guarni + paragvajski gvarani + paragvajska gvaranija + paragvajskih gvaranija + paragvajski gvarani + + + Katarski rial + katarski rijal + katarska rijala + katarskih rijala + katarski rijal + + + Rodizijski dolar + rodezijski dolar + rodezijska dolara + rodezijskih dolara + rodezijski dolar + + + Rumunski leu (1952–2006) + rumunski leu (1952–2006) + rumunska leua (1952–2006) + rumunskih leua (1952–2006) + rumunskih leua (1952–2006) + + + Rumunski leu + rumunski leu + rumunska leua + rumunskih leua + rumunskih leua + + + Srpski dinar + srpski dinar + srpska dinara + srpskih dinara + srpski dinari + din. + + + Ruska rublja + ruska rublja + ruske rublje + ruskih rublji + ruskih rublji + + + Ruska rublja (1991–1998) + ruska rublja (1991–1998) + ruske rublje (1991–1998) + ruskih rublji (1991–1998) + ruskih rublji (1991–1998) + + + Ruandski franak + ruandski franak + ruandska franka + ruandskih franaka + ruandski franci + + + Saudijski rijal + saudijski rijal + saudijska rijala + saudijskih rijala + saudijski rijal + + + Solomonska ostrva dolar + solomonskoostrvski dolar + solomonskoostrvska dolara + solomonskoostrvskih dolara + solomonskoostrvski dolar + + + Sejšelski rupi + sejšelska rupija + sejšelske rupije + sejšelskih rupija + sejšelska rupija + + + Sudanski dinar (1992–2007) + sudanski dinar (1992–2007) + sudanska dinara (1992–2007) + sudanskih dinara (1992–2007) + sudanski dinar (1992–2007) + + + Sudanska funta + sudanska funta + sudanske funte + sudanskih funti + sudanska funta + + + Sudanska funta (1957–1998) + sudanska funta (1957–1998) + sudanske funte (1957–1998) + sudanskih funti (1957–1998) + sudanska funta (1957–1998) + + + Švedska kruna + švedska kruna + švedske krune + švedskih kruna + švedskih kruna + + + Singapurski dolar + singapurški dolar + singapurška dolara + singapurških dolara + singapurških dolara + + + Sv. Helenska funta + sv. jelenska funta + sv. jelenske funte + sv. jelenskih funti + sv. jelenska funta + + + Slovenski tolar + slovenački tolar + slovenačka tolara + slovenačkih tolara + slovenačkih tolara + + + Slovačka kruna + slovačka kuna + slovačke kune + slovačkih kuna + slovačkih kuna + + + Sijeraleonski leone + sijeraleonska leona + sijeraleonske leone + sijeraleonskih leona + sijeraleonske leone + + + Somalijski šiling + somalijski šiling + somalijska šilinga + somalijskih šilinga + somalijski šilinzi + + + Surinamski dolar + surinamski dolar + surinamska dolara + surinamskih dolara + surinamski dolar + + + Surinamski gilder + surinamski gulden + surinamska guldena + surinamskih guldena + surinamski gulden + + + Sao Tome i Principe dobra + dobra Sao Toma i Principa + dobra Sao Toma i Principa + dobra Sao Toma i Principa + dobra Sao Toma i Principa + + + Sovjetska rublja + sovjetska rublja + sovjetske rublje + sovjetskih rublji + sovjetske rublje + + + Salvadorski kolon + salvadorski kolon + salvadorska kolona + salvadorskih kolona + salvadorski kolon + + + Sirijska funta + sirijska funta + sirijske funte + sirijskih funti + sirijske funtie + + + Švazi lilangeni + svazi lilangena + svazi lilangena + svazi lilangena + svazi lilangena + + + Tai baht + tajlandska bahta + tajlandske bahte + tajlandskih bahta + tajlandska bahta + + + Tadžakistanska rublja + tadžikistanska rublja + tadžikistanske rublje + tadžikistanskih rublji + tadžikistanska rublja + + + Tadžikistanski somoni + tadžikistanski somon + tadžikistanska somona + tadžikistanskih somona + tadžikistanski somon + + + Turkmenistanski manat (1993–2009) + turkmenistanski manat (1993–2009) + turkmenistanska manata (1993–2009) + turkmenistanskih manata (1993–2009) + turkmenistanski manat (1993–2009) + + + Turkmenistanski manat + turkmenistanski manat + turkmenistanska manata + turkmenistanskih manata + turkmenistanski manat + + + Tunizijski dinar + tunizijski dinar + tunizijska dinara + tunizijskih dinara + tunizijski dinar + + + Tongška Paʻanga + tongaška pa'anga + tongaške pa'ange + tongaških pa'angi + tongaška pa'anga + + + Timorški eskudo + timorski eskudo + timorska eskuda + timorskih eskuda + timorski eskudo + + + Turska lira (1922–2005) + turska lira (1922–2005) + turske lire (1922–2005) + turskih lira (1922–2005) + turkskih lira (1922–2005) + + + Turska lira + turska lira + turske lire + turskih lira + turskih lira + + + Trinidad i Tobago dolar + trinidadtobaški dolar + trinidadtobaška dolara + trinidadtobaških dolara + trinidadtobaški dolar + + + Novi tajvanski dolar + novi tajvanski dolar + nova tajvanska dolara + novih tajvanskih dolara + novi tajvanski dolari + + + Tanzijski šiling + tanzanijski šiling + tanzanijska šilinga + tanzanijskih šilinga + tanzanijski šilinzi + + + Ukrajinska hrivnja + ukrajinska hrivnja + ukrajinske hrivnje + ukrajinskih hrivnji + ukrajinskih hrivnji + + + Ukrajinski karbovaneti + ukrajinski karbovantsiv + ukrajinska karbovantsiva + ukrajinskih karbovantsiva + ukrajinski karbovantsiv + + + Ugandijski šiling (1966–1987) + ugandski šiling (1966–1987) + ugandska šilinga (1966–1987) + ugandskih šilinga (1966–1987) + ugandski šiling (1966–1987) + + + Ugandijski šiling + ugandski šiling + ugandska šilinga + ugandskih šilinga + ugandski šilinzi + + + Američki dolar + američki dolar + američka dolara + američkih dolara + američkih dolara + + + SAD dolar (sledeći dan) + američki dolar (sledeći dan) + američka dolara (sledeći dan) + američkih dolara (sledeći dan) + američki dolar (sledeći dan) + + + SAD dolar (isti dan) + američki dolar (isti dan) + američka dolara (isti dan) + američkih dolara (isti dan) + američki dolar (isti dan) + + + Urugvajski pezo en unidades indeksades + urugvajski pesos en unidades indexadas + urugvajska pesosa en unidades indexadas + urugvajskih pesosa en unidades indexadas + urugvajski pesos en unidades indexadas + + + Urugvajski pezo (1975–1993) + urugvajski pezos (1975–1993) + urugvajska pezosa (1975–1993) + urugvajskih pezosa (1975–1993) + urugvajski pezos (1975–1993) + + + Urugvajski pezo + urugvajski pezos + urugvajska pezosa + urugvajskih pezosa + urugvajski pezos + + + Uzbekistanski som + uzbekistanski som + uzbekistanska soma + uzbekistanskih soma + uzbekistanski som + + + Venecuelanski bolivar (1871–2008) + venecuelski bolivar (1871–2008) + venecuelska bolivara (1871–2008) + venecuelskih bolivara (1871–2008) + venecuelskih bolivara (1871–2008) + + + Venecuelanski bolivar + venezuelanski bolivar + venezuelanska bolivara + venezuelanskih bolivara + venezuelanski bolivar + + + Vijetnamski dong + vijetnamski dong + vijetnamska donga + vijetnamskih donga + vijetnamski dong + + + Vijetnamski dong (1978–1985) + vijetnamski dong (1978–1985) + vijetnamska donga (1978–1985) + vijetnamskih donga (1978–1985) + vijetnamski dong (1978–1985) + + + Vanatuški vatu + vanuatski vatu + vanuatska vatua + vanuatskih vatua + vanuatski vatui + + + Samoanska tala + samoanska tala + samoanske tale + samoanskih tala + samoanska tala + + + CFA franak BEAC + CFA franak BEAC + CFA franka BEAC + CFA franaka BEAC + CFA franci BEAC + + + Srebro + srebro + srebra + srebra + srebro + + + Zlato + zlato + zlata + zlata + zlato + + + Evropska kompozitna jedinica + evropska složena jedinica + evropske složene jedinice + evropskih složenih jedinica + evropska složena jedinica + + + Evropska novčana jedinica + evropska monetarna jedinica + evropske monetarne jedinice + evropskih monetarnih jedinica + evropska monetarna jedinica + + + Evropska jedinica računa (XBC) + evropska obračunska jedinica (XBC) + evropske obračunske jedinice (XBC) + evropskih obračunskih jedinica (XBC) + evropska obračunska jedinica (XBC) + + + Evropska jedinica računa (XBD) + evropska obračunska jedinica (XBD) + evropske obračunske jedinice (XBD) + evropskih obračunskih jedinica (XBD) + evropska obračunska jedinica (XBD) + + + Istočnokaribijski dolar + istočnokaripski dolar + istočnokaripska dolara + istočnokaripskih dolara + istočnokaripski dolar + + + Posebna prava + posebno crtaće pravo + posebna crtaća prava + posebnih crtaćih prava + posebnih crtaćih prava + + + Evropska valutna jedinica + evropska valutna jedinica + evropske valutne jedinice + evropskih valutnih jedinica + evropskih valutnih jedinica + + + Francuski zlatni frank + francuski zlatni franak + francuska zlatna franka + francuskih zlatnih franaka + francuskih zlatnih franaka + + + Francuski UIC-frank + francuski UIC-franak + francuska UIC-franka + francuskih UIC-franaka + francuskih UIC-franaka + + + CFA franak BCEAO + CFA franak BCEAO + CFA franka BCEAO + CFA franaka BCEAO + CFA franci BCEAO + + + Paladijum + paladijum + paladijuma + paladijuma + paladijuma + + + CFP franak + CFP franak + CFP franaka + CFP franaka + CFP franci + + + Platina + platina + platine + platina + platina + + + RINET fondovi + RINET fond + RINET fonda + RINET fondova + RINET fondova + + + Kod testirane valute + ispitni kod valute + ispitna koda valute + ispitnih kodova valute + ispitnih kodova valute + + + Nepoznata ili nevažeća valuta + nepoznate ili nevažeće valute + nepoznate ili nevažeće valute + nepoznatih ili nevažećih valuta + nepoznatih ili nevažećih valuta + + + Jemenski dinar + jemenski dinar + jemenska dinara + jemenskih dinara + jemenskih dinara + + + Jemenski rial + jemenski rijal + jemenska rijala + jemenskih rijala + jemenski rijali + + + Jugoslovenski tvrdi dinar + jugoslovenski čvrsti dinar + jugoslovenska čvrsta dinara + jugoslovenskih čvstih dinara + jugoslovenskih čvstih dinara + + + Jugoslovenski novi dinar + jugoslovenski novi dinar + jugoslovenska nova dinara + jugoslovenskih novih dinara + jugoslovenskih novih dinara + + + Jugoslovenski konvertibilni dinar + jugoslovenski konvertibilni dinar + jugoslovenska konvertibilna dinara + jugoslovenskih konvertibilnih dinara + jugoslovenskih konvertibilnih dinara + + + Jugoslovenski reformirani dinar + jugoslovenski reformirani dinar + jugoslovenska reformirana dinara + jugoslovenskih reformiranih dinara + jugoslovenskih reformiranih dinara + + + Južnoafrički rand (finansijski) + južnoafrički rand (financijski) + južnoafrička randa (financijska) + južnoafičkih randa (financijskih) + južnoafičkih randa (financijskih) + + + Južna Afrika Rand + južnoafrički rand + južnoafrička randa + južnoafričkih randa + južnoafričkih randa + + + Zambijska kvača (1968–2012) + zambijska kvača (1968–2012) + zambijske kvače (1968–2012) + zambijskih kvača (1968–2012) + zambijske kvače (1968–2012) + + + Zambijska kvača + zambijska kvača + zambijske kvače + zambijskih kvača + zambijske kvače + + + Zairski novi zair (1993–1998) + zairski novi zair (1993–1998) + zairska nova zaira (1993–1998) + zairskih novih zaira (1993–1998) + zairskih novih zaira (1993–1998) + + + Zairski zair (1971–1993) + zairski zair (1971–1993) + zairska zaira (1971–1993) + zairskih zaira (1971–1993) + zairskih zaira (1971–1993) + + + Zimbabvejski dolar (1980–2008) + zimbabvejski dolar (1980–2008) + zimbabvejska dolara (1980–2008) + zimbabvejskih dolara (1980–2008) + zimbabvejski dolari (1980–2008) + + + Zimbabvejski dolar (2009) + zimbabvejski dolaz (2009) + zimbabvejska dolara (2009) + zimbabvejskih dolara (2009) + zimbabvejskih dolara (2009) + + + Zimbabvejski dolar (2008) + zimbabvejski dolaz (2008) + zimbabvejska dolara (2008) + zimbabvejskih dolara (2008) + zimbabvejskih dolara (2008) + + + + + + + {0} dan + {0} dana + {0} dana + {0} dana + + + {0} sat + {0} sata + {0} sati + {0} sati + + + {0} minut + {0} minute + {0} minuta + {0} minuta + + + {0} mesec + {0} meseca + {0} meseci + {0} meseci + + + {0} sekunda + {0} sekunde + {0} sekundi + {0} sekundi + + + {0} nedelja + {0} nedelje + {0} nedelja + {0} nedelja + + + {0} godina + {0} godine + {0} godina + {0} godina + + + + + {0} dan + {0} dana + {0} dana + {0} dan + + + {0} sat + {0} sata + {0} sati + {0} sat + + + {0} min + {0} min + {0} min + {0} min + + + {0} mes + {0} mes + {0} mes + {0} mes + + + {0} sek + {0} sek + {0} sek + {0} sek + + + {0} ned + {0} ned + {0} ned + {0} ned + + + {0} god + {0} god + {0} god + {0} god + + + + + + + {0} i {1} + {0} i {1} + + + + + da:d + ne:n + + + + diff --git a/library/Zend/Locale/Data/bs_Cyrl.xml b/library/Zend/Locale/Data/bs_Cyrl.xml new file mode 100755 index 000000000..01a7d2e05 --- /dev/null +++ b/library/Zend/Locale/Data/bs_Cyrl.xml @@ -0,0 +1,6541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Свет + Африка + Северноамерички континент + Јужна Америка + Океанија + Западна Африка + Централна Америка + Источна Африка + Северна Африка + Централна Африка + Јужна Африка + Америке + Северна Америка + Кариби + Источна Азија + Јужна Азија + Југоисточна Азија + Јужна Европа + Аустралија и Нови Зеланд + Меланезија + Микронезијски регион + Полинезија + Азија + Централна Азија + Западна Азија + Европа + Источна Европа + Северна Европа + Западна Европа + Латинска Америка + Острво Асенсион + Андора + Уједињени Арапски Емирати + Авганистан + Антигве и Барбуда + Ангвила + Албанија + Арменија + Холандски Антили + Ангола + Антарктик + Аргентина + Америчка Самоа + Аустрија + Аустралија + Аруба + Аландска острва + Азербејџан + Босна и Херцеговина + Барбадос + Бангладеш + Белгија + Буркина Фасо + Бугарска + Бахреин + Бурунди + Бенин + Свети Бартоломеј + Бермуда + Брунеј + Боливија + Бразил + Бахами + Бутан + Буве Острва + Боцвана + Белорусија + Белизе + Канада + Кокос (Келинг) Острва + Конго - Киншаса + Конго (ДРК) + Централно Афричка Република + Конго - Бразавил + Конго (Република) + Швајцарска + Обала Слоноваче + Кукова Острва + Чиле + Камерун + Кина + Колумбија + Острво Клипертон + Костарика + Куба + Капе Верде + Божићна острва + Кипар + Чешка + Немачка + Дијего Гарсија + Џибути + Данска + Доминика + Доминиканска Република + Алжир + Сеута и Мелиља + Еквадор + Естонија + Египат + Западна Сахара + Еритреја + Шпанија + Етиопија + Европска Унија + Финска + Фиџи + Фокландска острва + Фокландска (Малвинска) острва + Микронезија + Фарска Острва + Француска + Габон + Велика Британија + Гренада + Грузија + Француска Гвајана + Гурнси + Гана + Гибралтар + Гренланд + Гамбија + Гвинеја + Гваделупе + Екваторијална Гвинеја + Грчка + Јужна Џорџија и Јужна Сендвич Острва + Гватемала + Гуам + Гвинеја-Бисао + Гвајана + Хонг Конг С. А. Р. Кина + Хонг Конг + Херд и Мекдоналд Острва + Хондурас + Хрватска + Хаити + Мађарска + Канарска острва + Индонезија + Ирска + Израел + Острво Ман + Индија + Британска територија у Индијском океану + Ирак + Иран + Исланд + Италија + Џерси + Јамајка + Јордан + Јапан + Кенија + Киргизстан + Камбоџа + Кирибати + Коморска Острва + Сент Китс и Невис + Северна Кореја + Јужна Кореја + Кувајт + Кајманска Острва + Казахстан + Лаос + Либан + Сент Луција + Лихтенштајн + Шри Ланка + Либерија + Лесото + Литванија + Луксембург + Летонија + Либија + Мароко + Монако + Молдавија + Црна Гора + Сент Мартин + Мадагаскар + Маршалска Острва + Македонија + Мали + Мијанмар (Бурма) + Монголија + Макао С. А. Р. Кина + Макао + Северна Маријанска Острва + Мартиник + Мауританија + Монсерат + Малта + Маурицијус + Малдиви + Малави + Мексико + Малезија + Мозамбик + Намибија + Нова Каледонија + Нигер + Норфолк Острво + Нигерија + Никарагва + Холандија + Норвешка + Непал + Науру + Ниуе + Нови Зеланд + Оман + Панама + Перу + Француска Полинезија + Папуа Нова Гвинеја + Филипини + Пакистан + Пољска + Сен Пјер и Микелон + Питкерн + Порто Рико + Палестинске територије + Португалија + Палау + Парагвај + Катар + Остала океанија + Реинион + Румунија + Србија + Русија + Руанда + Саудијска Арабија + Соломонска Острва + Сејшели + Судан + Шведска + Сингапур + Света Јелена + Словенија + Свалбард и Јанмајен Острва + Словачка + Сијера Леоне + Сан Марино + Сенегал + Сомалија + Суринам + Јужни Судан + Сао Томе и Принципе + Салвадор + Сирија + Свазиленд + Тристан да Куња + Туркс и Кајкос Острва + Чад + Француске Јужне Територије + Того + Тајланд + Таџикистан + Токелау + Источни Тимор + Туркменистан + Тунис + Тонга + Турска + Тринидад и Тобаго + Тувалу + Тајван + Танзанија + Украјина + Уганда + Мања удаљена острва САД + Сједињене Америчке Државе + Уругвај + Узбекистан + Ватикан + Сент Винсент и Гренадини + Венецуела + Британска Девичанска Острва + С.А.Д. Девичанска Острва + Вијетнам + Вануату + Валис и Футуна Острва + Самоа + Јемен + Мајоте + Јужноафричка Република + Замбија + Зимбабве + Непозната или неважећа област + + + Традиционална немачка ортографија + Стандарднизована ресијанска ортографија + Немачка ортографија из 1996 + Француски из касног средњег века до 1606. + Рани модерни француски + Академски + Источни арменијски + Западно јерменска + Уједињен турски латинични алфабет + Сан Ђорђио/Била дијалект + Бунтлинг + ИПА фонетика + УПА фонетика + Уобичајена ортографија + Липовички дијалект ресијански + Монотоник + Натисоне дијалект + Гњива/Њива дијалкект + Осеако/Осојане дијалект + Политоник + Компјутер + Ревидирана ортографија + Ресијан + Сахо + Шкотски стандардни Енглески + Скауз + Столвица/Солбица дијалект + Тараскијевичка ортографија + Уједињена ортографија + Уједињена ревидирана ортографија + Валенцијска + + + Календар + Сортирање + Валута + Бројеви + Приватна употреба + + + арапско-индијске цифре + продужене арапско-индијске цифре + јерменски бројеви + мали јерменски бројеви + бенгалске цифре + Традиционално кинеско сортирање + Будистички календар + Кинески календар + коптски календар + девангари цифре + Редослед сортирања у речнику + Подразумевани Unicode редослед сортирања + етиопски бројеви + етиопски календар + етиопски амет алем календар + цифре пуне ширине + Поједностављено кинеско сортирање + грузијски бројеви + Грегоријански календар + грчки бројеви + мали грчки бројеви + гуџаратске цифре + гурмуки цифре + кинески децимални бројеви + поједностављени кинески бројеви + поједностављени кинески финансијски бројеви + традиционални кинески бројеви + традиционални кинески финансијски бројеви + хебрејски бројеви + Хебрејски календар + Индијски национални календар + Исламски календар + Исламски цивилни календар + Јапански календар + јапански бројеви + јапански финансијски бројеви + кмерске цифре + канада цифре + лаошке цифре + западне цифре + малајалам цифре + монголске цифре + мијанмарске цифре + орија цифре + персијски календар + Сортирање као телефонски именик + Пињин сортирање + Реформисани редослед сортирања + Календар Републике Кине + римски бројеви + мали римски бројеви + Опште намењена претрага + Сортирање по броју црта + тамилски бројеви + телугу цифре + тајске цифре + тибетанске цифре + Традиционално сортирање + Редослед сортирања радикалним цртицама + + + БГН (BGN) + Нумеричка + Тон + УНГЕГН (BGN) + Акценти + пуна ширина + пола ширине + Џамо + Пинјин + Издавачки + + + Метрички + империјални + САД + + + {0} + {0} + {0} + + + + [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш] + [] + [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш] + {0}… + …{0} + + + + + + + + + + + + + БЕ + + + + + + + + Таут + Баба + Хатор + Киахк + Тоба + Амшир + Барамхат + Барамуда + Башанс + Паона + Епеп + Месра + Наси + + + + + + + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Јекатит + Мегабит + Миазиа + Генбот + Сене + Хамле + Нехасе + Пагумен + + + + + + + + + EEEE, dd. MMMM y. G + + + + + dd. MMMM y. G + + + + + dd.MM.y. G + + + + + d.M.y. GGGGG + + + + + + d + E, d. + y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + hh a + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + dd. MMM + E, dd. MMM + mm:ss + y. G + y. G + MM.y. G + dd.MM.y. G + E, dd.MM.y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + G y QQQ + G y QQQQ + + + {0} - {1} + + d-d + + + hh a - hh a + hh-hh a + + + HH-HH + + + hh:mm a - hh:mm a + hh:mm-hh:mm a + hh:mm-hh:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + hh:mm a - hh:mm a v + hh:mm-hh:mm a v + hh:mm-hh:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + hh a - hh a v + hh-hh a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + MMM-MMM + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y-y G + + + MM.-MM. y. G + MM.y. - MM.y. G + + + d.M.y. - d.M.y. G + d.M.y. - d.M.y. G + d.M.y. - d.M.y. G + + + E, d.M.y. - E, d.M.y. G + E, d.M.y. - E, d.M.y. G + E, d.M.y. - E, d.M.y. G + + + MMM-MMM y. G + MMM y. - MMM y. G + + + dd.-dd. MMM y. G + dd. MMM - dd. MMM y. G + dd. MMM y. - dd. MMM y. G + + + E, dd. - E, dd. MMM y. G + E, dd. MMM - E, dd. MMM y. G + E, dd. MMM y. - E, dd. MMM y. G + + + MMMM-MMMM y. G + MMMM y. - MMMM y. G + + + + + + + + + јан + феб + мар + апр + мај + јун + јул + авг + сеп + окт + нов + дец + + + јануар + фебруар + март + април + мај + јуни + јули + август + септембар + октобар + новембар + децембар + + + + + ј + ф + м + а + м + ј + ј + а + с + о + н + д + + + + + + + нед + пон + уто + сри + чет + пет + суб + + + недеља + понедељак + уторак + сриједа + четвртак + петак + субота + + + + + н + п + у + с + ч + п + с + + + + + + + К1 + К2 + К3 + К4 + + + 1. + 2. + 3. + 4. + + + Прво тромесечје + Друго тромесечје + Треће тромесечје + Четврто тромесечје + + + + + 1. + 2. + 3. + 4. + + + + + + + пре подне + поподне + + + + + + Пре нове ере + Нове ере + + + п. н. е. + н. е. + + + п.н.е. + н.е. + + + + + + EEEE, dd. MMMM y. + + + + + dd. MMMM y. + + + + + dd.MM.y. + + + + + d.M.yy. + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E, d. + y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + hh a + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + dd. MMM + E, dd. MMM + mm:ss + y. + MM.y. + dd.MM.y. + E, dd.MM.y. + MMM y. + dd. MMM y. + E, dd. MMM y. + y QQQ + y QQQQ + + + {0} - {1} + + d-d + + + hh a - hh a + hh-hh a + + + HH-HH + + + hh:mm a - hh:mm a + hh:mm-hh:mm a + hh:mm-hh:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + hh:mm a - hh:mm a v + hh:mm-hh:mm a v + hh:mm-hh:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + hh a - hh a v + hh-hh a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + MMM-MMM + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y-y + + + MM.-MM. y. + MM.y. - MM.y. + + + d.M.y. - d.M.y. + d.M.y. - d.M.y. + d.M.y. - d.M.y. + + + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + + + MMM-MMM y. + MMM y. - MMM y. + + + dd.-dd. MMM y. + dd. MMM - dd. MMM y. + dd. MMM y. - dd. MMM y. + + + E, dd. - E, dd. MMM y. + E, dd. MMM - E, dd. MMM y. + E, dd. MMM y. - E, dd. MMM y. + + + MMMM-MMMM y. + MMMM y. - MMMM y. + + + + + + + + + Тишри + Хешван + Кислев + Тевет + Шеват + Адар I + Адар + Адар II + Нисан + Ијар + Сиван + Тамуз + Ав + Елул + + + + + + + + + Чаитра + Ваисака + Јиаиста + Асада + Сравана + Бадра + Асвина + Картика + Аргајана + Пауза + Мага + Фалгуна + + + + + + САКА + + + + + + + + Мух. + Саф. + Реб. 1 + Реб 2 + Џум. 1 + Џум. 2 + Реџ. + Ша. + Рам. + Ше. + Зул-к. + Зул-х. + + + Мурахам + Сафар + Рабиʻ I + Рабиʻ II + Јумада I + Јумада II + Рађаб + Шаʻбан + Рамадан + Шавал + Дуʻл-Киʻда + Дуʻл-хиђа + + + + + Мухарем + Сафер + Реби 1 + Реби 2 + Џумаде 1 + Џумаде 2 + Реџеб + Шаʻбан + Рамазан + Шевал + Зул-каде + Зул-хиџе + + + + + + АХ + + + + + + EEEE, dd. MMMM y. G + + + + + dd. MMMM y. G + + + + + dd.MM.y. G + + + + + dd.MM.y. G + + + + + + d + E, dd. + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + dd. MMM + E, dd. MMM + mm:ss + y. G + MM.y. G + dd.MM.y. G + E, dd.MM.y. G + MMM y. G + dd. MMM y. G + E, dd. MMM y. G + y G QQQ + y G QQQQ + + + + + + + Таика (645-650) + Хакучи (650-671) + Хакухо (672-686) + Шучо (686-701) + Таихо (701-704) + Кеиун (704-708) + Вадо (708-715) + Реики (715-717) + Јоро (717-724) + Јинки (724-729) + Темпио (729-749) + Темпио-кампо (749-749) + Темпио-шохо (749-757) + Темпио-хођи (757-765) + Темпо-ђинго (765-767) + Ђинго-кеиун (767-770) + Хоки (770-780) + Тен-о (781-782) + Енрјаку (782-806) + Даидо (806-810) + Конин (810-824) + Тенчо (824-834) + Шова (834-848) + Кајо (848-851) + Нињу (851-854) + Саико (854-857) + Тенан (857-859) + Јоган (859-877) + Генкеи (877-885) + Ниња (885-889) + Кампјо (889-898) + Шотаи (898-901) + Енђи (901-923) + Енчо (923-931) + Шохеи (931-938) + Тенгјо (938-947) + Тенриаку (947-957) + Тентоку (957-961) + Ова (961-964) + Кохо (964-968) + Ана (968-970) + Тенроку (970-973) + Тен-ен (973-976) + Јоген (976-978) + Тенген (978-983) + Еикан (983-985) + Кана (985-987) + Еи-ен (987-989) + Еисо (989-990) + Шорјаку (990-995) + Чотоку (995-999) + Чохо (999-1004) + Канко (1004-1012) + Чова (1012-1017) + Канин (1017-1021) + Ђиан (1021-1024) + Мању (1024-1028) + Чоген (1028-1037) + Чорјаку (1037-1040) + Чокју (1040-1044) + Кантоку (1044-1046) + Еишо (1046-1053) + Тенђи (1053-1058) + Кохеи (1058-1065) + Ђирјаку (1065-1069) + Енкју (1069-1074) + Шохо (1074-1077) + Шорјаку (1077-1081) + Еишо (1081-1084) + Отоку (1084-1087) + Канђи (1087-1094) + Кахо (1094-1096) + Еичо (1096-1097) + Шотоку (1097-1099) + Кова (1099-1104) + Чођи (1104-1106) + Кашо (1106-1108) + Тенин (1108-1110) + Тен-еи (1110-1113) + Еикју (1113-1118) + Ђен-еи (1118-1120) + Хоан (1120-1124) + Тенђи (1124-1126) + Даиђи (1126-1131) + Теншо (1131-1132) + Чошао (1132-1135) + Хоен (1135-1141) + Еиђи (1141-1142) + Кођи (1142-1144) + Тењо (1144-1145) + Кјуан (1145-1151) + Нинпеи (1151-1154) + Кјују (1154-1156) + Хоген (1156-1159) + Хеиђи (1159-1160) + Еирјаку (1160-1161) + Охо (1161-1163) + Чокан (1163-1165) + Еиман (1165-1166) + Нин-ан (1166-1169) + Као (1169-1171) + Шоан (1171-1175) + Анген (1175-1177) + Ђишо (1177-1181) + Јова (1181-1182) + Ђуеи (1182-1184) + Генрјуку (1184-1185) + Бунђи (1185-1190) + Кенкју (1190-1199) + Шођи (1199-1201) + Кенин (1201-1204) + Генкју (1204-1206) + Кен-еи (1206-1207) + Шоген (1207-1211) + Кенрјаку (1211-1213) + Кенпо (1213-1219) + Шокју (1219-1222) + Ђу (1222-1224) + Ђенин (1224-1225) + Кароку (1225-1227) + Антеи (1227-1229) + Канки (1229-1232) + Ђоеи (1232-1233) + Темпуку (1233-1234) + Бунрјаку (1234-1235) + Катеи (1235-1238) + Рјакунин (1238-1239) + Ен-о (1239-1240) + Нињи (1240-1243) + Канген (1243-1247) + Хођи (1247-1249) + Кенчо (1249-1256) + Коген (1256-1257) + Шока (1257-1259) + Шоген (1259-1260) + Бун-о (1260-1261) + Кочо (1261-1264) + Бун-еи (1264-1275) + Кенђи (1275-1278) + Коан (1278-1288) + Шу (1288-1293) + Еинин (1293-1299) + Шоан (1299-1302) + Кенген (1302-1303) + Каген (1303-1306) + Токуђи (1306-1308) + Енкеи (1308-1311) + Очо (1311-1312) + Шова (1312-1317) + Бунпо (1317-1319) + Ђено (1319-1321) + Ђенкјо (1321-1324) + Шочу (1324-1326) + Кареки (1326-1329) + Гентоку (1329-1331) + Генко (1331-1334) + Кему (1334-1336) + Енген (1336-1340) + Кококу (1340-1346) + Шохеи (1346-1370) + Кентоку (1370-1372) + Бучу (1372-1375) + Тењу (1375-1379) + Корјаку (1379-1381) + Кова (1381-1384) + Генчу (1384-1392) + Меитоку (1384-1387) + Какеи (1387-1389) + Ку (1389-1390) + Меитоку (1390-1394) + Оеи (1394-1428) + Шочо (1428-1429) + Еикјо (1429-1441) + Какитсу (1441-1444) + Бун-ан (1444-1449) + Хотоку (1449-1452) + Кјотоку (1452-1455) + Кошо (1455-1457) + Чороку (1457-1460) + Каншо (1460-1466) + Буншо (1466-1467) + Онин (1467-1469) + Бунмеи (1469-1487) + Чокјо (1487-1489) + Ентоку (1489-1492) + Меио (1492-1501) + Бунки (1501-1504) + Еишо (1504-1521) + Таиеи (1521-1528) + Кјороку (1528-1532) + Тенмон (1532-1555) + Кођи (1555-1558) + Еироку (1558-1570) + Генки (1570-1573) + Теншо (1573-1592) + Бунроку (1592-1596) + Кеичо (1596-1615) + Генва (1615-1624) + Кан-еи (1624-1644) + Шохо (1644-1648) + Кеиан (1648-1652) + Шу (1652-1655) + Меирјаку (1655-1658) + Мањи (1658-1661) + Канбун (1661-1673) + Енпо (1673-1681) + Тенва (1681-1684) + Јокјо (1684-1688) + Генроку (1688-1704) + Хоеи (1704-1711) + Шотоку (1711-1716) + Кјохо (1716-1736) + Генбун (1736-1741) + Канпо (1741-1744) + Енкјо (1744-1748) + Кан-ен (1748-1751) + Хорјаку (1751-1764) + Меива (1764-1772) + Ан-еи (1772-1781) + Тенмеи (1781-1789) + Кансеи (1789-1801) + Кјова (1801-1804) + Бунка (1804-1818) + Бунсеи (1818-1830) + Тенпо (1830-1844) + Кока (1844-1848) + Каеи (1848-1854) + Ансеи (1854-1860) + Ман-ен (1860-1861) + Бункју (1861-1864) + Генђи (1864-1865) + Кеико (1865-1868) + Меиђи + Таишо + Шова + Хаисеи + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/yy G + + + + + + + + + Фаравадин + Ордибехешт + Кордад + Тир + Мордад + Шахривар + Мехр + Абан + Азар + Деј + Бахман + Есфанд + + + + + + АП + + + + + + + Пре РК + РК + + + + + + + ера + + + година + Прошле године + Ове године + Следеће године + + за {0} годину + за {0} године + за {0} година + за {0} година + + + пре {0} годину + пре {0} године + пре {0} година + пре {0} година + + + + месец + Прошлог месеца + Овог месеца + Следећег месеца + + за {0} месец + за {0} месеца + за {0} месеци + за {0} месеци + + + пре {0} месец + пре {0} месеца + пре {0} месеци + пре {0} месеци + + + + недеља + Прошле недеље + Ове недеље + Следеће недеље + + за {0} недељу + за {0} недеље + за {0} недеља + за {0} недеља + + + пре {0} недељу + пре {0} недеље + пре {0} недеља + пре {0} недеља + + + + дан + прекјуче + јуче + данас + сутра + прекосутра + + за {0} дан + за {0} дана + за {0} дана + за {0} дана + + + пре {0} дан + пре {0} дана + пре {0} дана + пре {0} дана + + + + дан у недељи + + + пре подне/поподне + + + час + + за {0} сат + за {0} сата + за {0} сати + за {0} сати + + + пре {0} сат + пре {0} сата + пре {0} сати + пре {0} сати + + + + минут + + за {0} минут + за {0} минута + за {0} минута + за {0} минута + + + пре {0} минут + пре {0} минута + пре {0} минута + пре {0} минута + + + + секунд + + за {0} секунд + за {0} секунде + за {0} секунди + за {0} секунди + + + пре {0} секунд + пре {0} секунде + пре {0} секунди + пре {0} секунди + + + + зона + + + + +HHmm;-HHmm + GMT{0} + Време у земљи: {0} + {1} ({0}) + + Непознат или неважећи град + + + Андора + + + Дубаи + + + Кабул + + + Антигва + + + Ангвила + + + Тирана + + + Јереван + + + Луанда + + + Ротера + + + Палмер + + + Шова + + + Мосон + + + Дејвис + + + Восток + + + Касеј + + + Димон д’Урвил + + + Макмурдо + + + Рио Гелегос + + + Мендоза + + + Сан Хуан + + + Ушуаија + + + Ла Риоја + + + Сан Луи + + + Катамарка + + + Салта + + + Жужуи + + + Тукуман + + + Кордоба + + + Буенос Аирес + + + Паго Паго + + + Беч + + + Перт + + + Иукла + + + Дарвин + + + Аделаида + + + Брокен Хил + + + Курие + + + Мелбурн + + + Хобарт + + + Линдеман + + + Сиднеј + + + Бризбејн + + + Лорд Хов + + + Аруба + + + Марихамн + + + Баку + + + Сарајево + + + Барбадос + + + Дака + + + Брисел + + + Уагадугу + + + Софија + + + Бахреин + + + Буџумбура + + + Порто Ново + + + Св. Бартоломeј + + + Бермуда + + + Брунеји + + + Ла Паз + + + Еирунепе + + + Рио Бранко + + + Порто Вељо + + + Боа Виста + + + Манаус + + + Куиаба + + + Сантарем + + + Кампо Гранде + + + Белем + + + Арагвајана + + + Сао Паоло + + + Бахиа + + + Форталеза + + + Масејо + + + Ресифе + + + Нороња + + + Насау + + + Тимпу + + + Габорон + + + Минск + + + Белизе + + + Досон + + + Вајтхорс + + + Инувик + + + Ванкувер + + + Досон Крик + + + Јелоунајф + + + Едмонтон + + + Свифт Курент + + + Кембриџ Беј + + + Регина + + + Винипег + + + Ресолут + + + Рејни Ривер + + + Ранкин Инлет + + + Корал Харбур + + + Тандер Беј + + + Нипигон + + + Торонто + + + Иквалуит + + + Пангниртунг + + + Монктон + + + Халифакс + + + Гус Беј + + + Глејс Беј + + + Бланк-Сејблон + + + Св. Џон + + + Кокос + + + Киншаса + + + Лумумбаши + + + Бангуи + + + Бразавил + + + Цирих + + + Абиџан + + + Раротонга + + + Ускршње острво + + + Сантијаго + + + Дуала + + + Кашгар + + + Урумкви + + + Чонгкинг + + + Шангај + + + Харбин + + + Богота + + + Костарика + + + Хавана + + + Зеленортска Острва + + + Кирасо + + + Божић + + + Никозија + + + Праг + + + Берлин + + + Џибути + + + Копенхаген + + + Доминика + + + Санто Доминго + + + Алжир + + + Галапагос + + + Гвајакил + + + Талин + + + Каиро + + + Ел Ајун + + + Асмера + + + Канарска острва + + + Сеута + + + Мадрид + + + Адис Абеба + + + Хелсинки + + + Фиџи + + + Стенли + + + Трук + + + Понапе + + + Кошре + + + Фарска острва + + + Париз + + + Либревил + + + Лондон + + + Гренада + + + Тбилиси + + + Кајен + + + Гернзи + + + Акра + + + Гибралтар + + + Туле + + + Готхаб + + + Скорезбисунд + + + Данмарксхаген + + + Банжул + + + Конакри + + + Гвадалупе + + + Малабо + + + Атина + + + Јужна Џорџија + + + Гватемала + + + Гуам + + + Бисао + + + Гуана + + + Хонг Конг + + + Тегусигалпа + + + Загреб + + + Порт-о-Пренс + + + Будимпешта + + + Џакарта + + + Понтианак + + + Макасар + + + Џајапура + + + Даблин + + + Јерусалим + + + Острво Ман + + + Калкута + + + Чагос + + + Багдад + + + Техеран + + + Рејкјавик + + + Рим + + + Џерси + + + Јамајка + + + Аман + + + Токио + + + Најроби + + + Бишкек + + + Пном Пен + + + Ендербери + + + Киритимати + + + Тарава + + + Коморо + + + Сент Китс + + + Пјонгјанг + + + Сеул + + + Кувајт + + + Кајманска острва + + + Актау + + + Орал + + + Акутобе + + + Кизилорда + + + Алмати + + + Вијентијан + + + Бејрут + + + Св. Луција + + + Вадуз + + + Коломбо + + + Монровија + + + Масеру + + + Виљнус + + + Луксембург + + + Рига + + + Триполи + + + Казабланка + + + Монако + + + Кишињев + + + Подгорица + + + Мариго + + + Антананариво + + + Кваџалејин + + + Мајуро + + + Скопље + + + Бамако + + + Рангун + + + Ховд + + + Улан Батор + + + Чојбалсан + + + Макау + + + Сајпан + + + Мартиник + + + Навакшут + + + Монтсерат + + + Малта + + + Маурицијус + + + Малдиви + + + Блантир + + + Тихуана + + + Хермосиљо + + + Мазатлан + + + Чихуахуа + + + Монтереј + + + Мексико Сити + + + Мерида + + + Канкун + + + Куала Лумпур + + + Кучинг + + + Мапуто + + + Виндхук + + + Нумеа + + + Нијамеј + + + Норфолк + + + Лагос + + + Манагва + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуе + + + Катхам + + + Окланд + + + Мускат + + + Панама + + + Лима + + + Тахити + + + Маркиз + + + Гамбије + + + Порт Морзби + + + Манила + + + Карачи + + + Варшава + + + Микелон + + + Питкаирн + + + Порто Рико + + + Газа + + + Азори + + + Мадера + + + Лисабон + + + Палау + + + Асунсион + + + Катар + + + Реунион + + + Букурешт + + + Београд + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Јекатеринбург + + + Омск + + + Новосибирск + + + Краснојарск + + + Иркуцк + + + Јакутск + + + Владивосток + + + Сахалин + + + Магадан + + + Камчатка + + + Анадир + + + Кигали + + + Ријад + + + Гвадалканал + + + Махе + + + Картум + + + Стокхолм + + + Сингапур + + + Св. Јелена + + + Љубљана + + + Лонгјербјен + + + Братислава + + + Фритаун + + + Сан Марино + + + Дакар + + + Могадиш + + + Парамирбо + + + Сао Томе + + + Салвадор + + + Дамаск + + + Мбабане + + + Гранд Турк + + + Нџамена + + + Кергелен + + + Ломе + + + Банкок + + + Душанбе + + + Факаофо + + + Дили + + + Ашхабад + + + Тунис + + + Тонгатапу + + + Истанбул + + + Порт оф Спејн + + + Фунафути + + + Тајпеј + + + Дар-ес-Салам + + + Ужгород + + + Кијев + + + Симферопол + + + Запорожје + + + Кампала + + + Мидвеј + + + Џонстон + + + Вејк + + + Адак + + + Ном + + + Хонолулу + + + Енкориџ + + + Јакутат + + + Жуно + + + Лос Анђелес + + + Бојзи + + + Феникс + + + Денвер + + + Бијула, Северна Дакота + + + Нови Салем, Северна Даткоа + + + Центар, Северна Дакота + + + Чикаго + + + Меномини + + + Винценес, Индијана + + + Петерсбург, Индијана + + + Тел Сити + + + Кнокс, Индијана + + + Винамак, Индијана + + + Маренго, Индијана + + + Индианаполис + + + Луивиле + + + Вевај, Индијана + + + Монтичело, Кентаки + + + Детроит + + + Њујорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сент Винсент + + + Каракас + + + Тортола + + + Св. Тома + + + Хо Ши Мин + + + Ефат + + + Валис + + + Апија + + + Аден + + + Мајот + + + Јоханесбург + + + Лусака + + + Хараре + + + + Акре време + Акре стандардно време + Акре летње рачунање времена + + + + + Авганистанско време + + + + + Централно-афричко време + + + + + Источно-афричко време + + + + + Јужно-афричко време + + + + + Западно-афричко време + Западно-афричко стандардно време + Западно-афричко летње рачунање времена + + + + + Аљашко време + Аљашко стандардно време + Аљашко летње време + + + + + Алмати време + Алмати стандардно време + Алмати летње рачунање времена + + + + + Амазон време + Амазон стандардно време + Амазон летње рачунање времена + + + + + Централно време + Централно стандардно време + Централно летње рачунање времена + + + + + Источно време + Источно стандардно време + Источно летње рачунање времена + + + + + Планинско време + Планинско стандардно време + Планинско летње рачунање времена + + + + + Пацифичко време + Пацифичко стандардно време + Пацифичко летње рачунање времена + + + + + Анадир време + Анадир стандардно време + Анадир летње рачунање времена + + + + + Акватау време + Акватау стандардно време + Акватау летње рачунање времена + + + + + Акутобе време + Акутобе стандардно време + Акутобе летње рачунање времена + + + + + Арабијско време + Арабијско стандардно време + Арабијско летње рачунање времена + + + + + Аргентина време + Аргентина стандардно време + Аргентина летње рачунање времена + + + + + Западна Аргентина време + Западна Аргентина стандардно време + Западна Аргентина летње рачунање времена + + + + + Арменија време + Арменија стандардно време + Арменија летње рачунање времена + + + + + Атланско време + Атланско стандардно време + Атланско лтње рачунање времена + + + + + Аустралијско централно време + Аустралијско централно стандардно време + Аустралијско централно летње рачунање времена + + + + + Аустралијско централно западно време + Аустралијско централно западно стандардно време + Аустралијско централно западно летње рачунање времена + + + + + Аустралијско источно време + Аустралијско источно стандардно време + Аустралијско источно летње рачунање времена + + + + + Аустралијско западно време + Аустралијско западно стандардно време + Аустралијско западно летње рачунање времена + + + + + Азербејџан време + Азербејџан стандардно време + Азербејџан летње рачунање времена + + + + + Азори време + Азори стандардно време + Азори летње рачунање времена + + + + + Бангладеш време + Бангладеш стандардно време + Бангладеш летње рачунање времена + + + + + Бутан време + + + + + Боливија време + + + + + Бразилија време + Бразилија стандардно време + Бразилија летње рачунање времена + + + + + Брунеј Дарусалум време + + + + + Зелениртско време + Зелениртско стандардно време + Зеленортско летње рачунање времена + + + + + Чаморо време + + + + + Чатам време + Чатам стандардно време + Чатам летње рачунање времена + + + + + Чиле време + Чиле стандардно време + Чиле летње рачунање времена + + + + + Кина време + Кинеско стандардно време + Кина летње рачунање времена + + + + + Чојбалсан време + Чојбалсан стандардно време + Чојбалсан летње рачунање времена + + + + + Божићна острва време + + + + + Кокос (Келинг) Острва време + + + + + Колумбија време + Колумбија стандардно време + Колумбија летње рачунање времена + + + + + Кукова острва време + Кукова острва стандардно време + Кукова острва полу-летње рачунање времена + + + + + Куба време + Куба стандардно време + Куба летње рачунање времена + + + + + Дејвис време + + + + + Димон д’Урвил време + + + + + Источни тимор време + + + + + Ускршња острва време + Ускршња острва стандардно време + Ускршња острва летње рачунање времена + + + + + Еквадор време + + + + + Средњеевропско време + Средњеевропско стандардно време + Средњеевропско летње рачунање времена + + + + + Источноевропско време + Источноевропско стандардно време + Источноевропско летње рачунање времена + + + + + Западноевропско време + Западноевропско стандардно време + Западноевропско летње рачунање времена + + + + + Фолкландска Острва време + Фолкландска Острва стандардно време + Фолкландска Острва летње рачунање времена + + + + + Фиџи време + Фиџи стандардно време + Фиџи летње рачунање времена + + + + + Француска Гвајана време + + + + + Француско јужно и антарктичко време + + + + + Галапагос време + + + + + Гамбијер време + + + + + Грузија време + Грузија стандардно време + Грузија летње рачунање времена + + + + + Гилберт острва време + + + + + Гринвич средње време + + + + + Источни Гренланд време + Источни Гренланд стандардно време + Источни Гренланд летње рачунање времена + + + + + Западни Гренланд време + Западни Гренланд стандардно време + Западни Гренланд летње рачунање времена + + + + + Гуам стандардно време + + + + + Залив време + + + + + Гвајана време + + + + + Хавајско-алеутско време + Хавајско-алеутско стандардно време + Хавајско-алеутско летње рачунање времена + + + + + Хонг Конг време + Хонг Конг стандардно време + Хонгконшко летње рачунање времена + + + + + Ховд време + Ховд стандардно време + Ховд летње рачунање времена + + + + + Индијско стандардно време + + + + + Индијско океанско време + + + + + Индокина време + + + + + Централно-индонезијско време + + + + + Источно-индонезијско време + + + + + Западно-индонезијско време + + + + + Иран време + Иран стандардно време + Иран летње рачунање времена + + + + + Иркуцк време + Иркуцк стандардно време + Иркуцк летње рачунање времена + + + + + Израелско време + Израелско стандардно време + Израелско летње рачунање времена + + + + + Јапанско време + Јапанско стандардно време + Јапанско летње рачунање времена + + + + + Петропавловско-камчатско време + Петропавловско-камчатско стандардно време + Петропавловско-камчатско летње рачунање вемена + + + + + Источно-казахстанско време + + + + + Западно-казахстанско време + + + + + Кореја време + Корејско стандардно време + Корејско летње рачунање времена + + + + + Кошре време + + + + + Краснојарск време + Краснојарск стандардно време + Краснојарск летње рачунање времена + + + + + Киргизстан време + + + + + Шри Ланка време + + + + + Лине Острва време + + + + + Лорд Хов време + Лорд Хов стандардно време + Лорд Хов летње рачунање времена + + + + + Макао време + Макао стандардно време + Макао летње рачунање вемена + + + + + Макверијско време + + + + + Магадан време + Магадан стандардно време + Магадан летње рачунање вемена + + + + + Малезија време + + + + + Малдиви време + + + + + Маркиз време + + + + + Маршалска Острва време + + + + + Маурицијус време + Маурицијус стандардно време + Маурицијус летње рачунање времена + + + + + Мосон време + + + + + Улан Батор време + Улан Батор стандардно време + Улан Батор летње рачунање времена + + + + + Москва време + Москва стандардно време + Москва летње рачунање времена + + + + + Мијанмар време + + + + + Науру време + + + + + Непал време + + + + + Нова Каледонија време + Нова Каледонија стандардно време + Нова Каледонија летње рачунање времена + + + + + Нови Зеланд време + Нови Зеланд стандардно време + Нови Зеланд летње рачунање времена + + + + + Њуфаундленд време + Њуфаундленд стандардно време + Њуфаундленд летње рачунање времена + + + + + Ниуе време + + + + + Норфолк Острво време + + + + + Фернандо де Нороња време + Фернандо де Нороња стандардно време + Фернандо де Нороња летње рачунање времена + + + + + Северна Маријанска Острва време + + + + + Новосибирск време + Новосибирск стандардно време + Новосибирск летње рачунање времена + + + + + Омск време + Омск стандардно време + Омск летње рачунање времена + + + + + Пакистан време + Пакистан стандардно време + Пакистан летње рачунање времена + + + + + Палау време + + + + + Папуа Нова Гвинеја време + + + + + Парагвај време + Парагвај стандардно време + Парагвај летње рачунање времена + + + + + Перу време + Перу стандардно време + Перу летње рачунање времена + + + + + Филипини време + Филипини стандардно време + Филипини летње рачунање времена + + + + + Феникс острва време + + + + + Сен Пјер и Микелон време + Сен Пјер и Микелон стандардно време + Сен Пјер и Микелон летње рачунање вемена + + + + + Питкерн време + + + + + Понапе време + + + + + Кизилорда време + Кизилорда стандардно време + Кизилорда летње рачунање времена + + + + + Реинион време + + + + + Ротера време + + + + + Сахалин време + Сахалин стандардно време + Сахалин летње рачунање времена + + + + + Самара време + Самара стандардно време + Самара летње рачунање времена + + + + + Самоа време + Самоа стандардно време + Самоа летње рачунање времена + + + + + Сејшели време + + + + + Сингапур стандардно време + + + + + Соломонска Острва време + + + + + Јужна Џорџија време + + + + + Суринам време + + + + + Шова време + + + + + Тахити време + + + + + Таипеи време + Таипеи стандардно веме + Таипеи летње рачунање времена + + + + + Таџикистан време + + + + + Токелау време + + + + + Тонга време + Тонга стандардно време + Тонга летње рачунање времена + + + + + Трук време + + + + + Туркменистан време + Туркменистан стандардно време + Туркменистан летње рачунање времена + + + + + Тувалу време + + + + + Уругвај време + Уругвај стандардно време + Уругвај летње рачунање времена + + + + + Узбекистан време + Узбекистан стандардно време + Узбекистан летње рачунање времена + + + + + Вануату време + Вануату стандардно време + Вануату летње рачунање времена + + + + + Венецуела време + + + + + Владивосток време + Владивосток стандардно време + Владивосток летње рачунање времена + + + + + Волгоград време + Волгоград стандардно време + Волгоград летње рачунање времена + + + + + Восток време + + + + + Вејк острво време + + + + + Валис и Футуна Острва време + + + + + Јакутск време + Јакутск стандардно време + Јакутск летње рачунање времена + + + + + Јекатеринбург време + Јекатеринбург стандардно време + Јекатеринбург летње рачунање времена + + + + + + + , + . + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + 0 + 0 + 0 + 0 + 00 хиљ + 00 хиљ + 00 хиљ + 00 хиљ + 000 хиљ + 000 хиљ + 000 хиљ + 000 хиљ + 0 мил + 0 мил + 0 мил + 0 мил + 00 мил + 00 мил + 00 мил + 00 мил + 000 мил + 000 мил + 000 мил + 000 мил + 0 млрд + 0 млрд + 0 млрд + 0 млрд + 00 млрд + 00 млрд + 00 млрд + 00 млрд + 000 млрд + 000 млрд + 000 млрд + 000 млрд + 0 бил + 0 бил + 0 бил + 0 бил + 00 бил + 00 бил + 00 бил + 00 бил + 000 бил + 000 бил + 000 бил + 000 бил + + + + + 0 + 0 + 0 + 0 + 00 хиљ + 00 хиљ + 00 хиљ + 00 хиљ + 000 хиљ + 000 хиљ + 000 хиљ + 000 хиљ + 0 мил + 0 мил + 0 мил + 0 мил + 00 мил + 00 мил + 00 мил + 00 мил + 000 мил + 000 мил + 000 мил + 000 мил + 0 млрд + 0 млрд + 0 млрд + 0 млрд + 00 млрд + 00 млрд + 00 млрд + 00 млрд + 000 млрд + 000 млрд + 000 млрд + 000 млрд + 0 бил + 0 бил + 0 бил + 0 бил + 00 бил + 00 бил + 00 бил + 00 бил + 000 бил + 000 бил + 000 бил + 000 бил + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + Андорска пезета + андорска пезета + андорске пезете + андорских пезета + андорске пезете + + + Уједињени арапски емирати дирхам + УАЕ дирам + УАЕ дирама + УАЕ дирама + УАЕ дирама + + + Авганистански авган (1927–2002) + авганистански авган (1927–2002) + авганистанска авгана (1927–2002) + авганистанских авгана (1927–2002) + авганистанских авгана (1927–2002) + + + Авганистански авган + авганистански авган + авганистанска авгана + авганистанских авгана + авганистански авгани + + + стари албански лек + стара албанска лека + старих албанских лека + старих албанских лека + + + Албански лек + албански лек + Албанске леке + Албанских лека + албански лек + + + Јерменски драм + јерменски драм + Јерменска драма + Јерменских драма + арменијска драма + + + Холандски антили гилдер + холандско-антилски гилдер + холандска антила + холандско-антилских гилдера + холандско-антилских гилдера + + + анголска кванза + анголијска кванза + анголијске кванзе + анголијских кванзи + анголијских кванзи + + + анголијска кванза (1977–1990) + анголијска кванза (1977–1990) + анголијске кванзе (1977–1990) + анголијских кванзи (1977–1990) + анголијских кванзи (1977–1990) + + + Анголијска нова кванза (1990–2000) + анголијска нова кванза + анголијске нове кванзе + анголијских нових кванзи + анголијских нових кванзи + + + Анголска кванза реађустадо (1995–1999) + анголијска кванза реађустадо + анголијске кванзе реађустадо + анголијских кванзи реађустадо + анголијских кванзи реађустадо + + + Аргентински аустрал + аргентински аустрал + аргентинска аустрала + аргентинских аустрала + аргентинских аустрала + + + аргентински пезос леј + аргентинска пезос леја + аргентинских пезос леја + аргентинских пезос леја + + + аргентински пезос монедо национал + аргентинска пезос монеда национал + аргентинских пезос монеда национала + аргентинских пезос монеда национала + + + аргентински пезо (1983–1985) + аргентински пезо (1983–1985) + аргентинска пезоса (1983–1985) + аргентинских пезоса (1983–1985) + аргентинских пезоса (1983–1985) + + + аргентински пезо + аргентински пезос + аргентинска пезоса + аргентинских пезоса + аргентинских пезоса + + + Аустријски шилинг + аустријски шилинг + аустријска шилинга + аустријских шилинга + аустријских шилинга + + + Аустралијски долар + аустралијски долар + Аустралијска долара + Аустралијских долара + аустралијских долара + + + Арубански флорин + арубански флорин + арубанска флорина + арубанских флорина + арубанских флорина + + + Азербејџански манат (1993–2006) + азербејџански манат (1993–2006) + азербејџанска маната (1993–2006) + азербејџанских маната (1993–2006) + азербејџанских маната (1993–2006) + + + Азербејџански манат + азербејџански манат + азербејџанска маната + азербејџанских маната + азербејџанских маната + + + Босанско-Херцеговачки динар + босанско-херцеговачки динар + босанско-херцеговачка динара + босанско-херцеговачких динара + босанско-херцеговачких динара + + + Конвертибилна марка + босанско-херцеговачка конвертибилна марка + босанско-херцеговачке конвертибилне марк + босанско-херцеговачких конвертабилних марака + босанско-херцеговачких конвертибилних марака + КМ + + + босанско-херцеговачки нови динар + босанско-херцеговачка нова динара + босанско-херцеговачких нових динара + босанско-херцеговачких нових динара + + + Барбадошки долар + барбадошки долар + барбадошка долара + барбадошких долара + барбадошких долара + + + Бангладешка така + бангладешка така + бангладешке таке + бангладешких така + бангладешких така + + + Белгијски франак (конвертибилни) + белгијски франак (конвертибилни) + белгијска франка (конвертибилна) + белгијских франака (конвертибилних) + белгијских франака (конвертибилних) + + + Белгијски франак + белгијски франак + белгијска франка + белгијских франака + белгијских франака + + + Белгијски франак (финансијски) + белгијски франак (финансијски) + белгијска франка (финансијска) + белгијских франака (финансијских) + белгијских франака (финансијских) + + + Бугарски тврди лев + бугарски тврди лев + бугарска тврда лева + бугарских тврдих лева + бугарских тврдих лева + + + бугарски социјалистички лев + бугарска социјалистичка лева + бугарских социјалистичких лева + бугарских социјалистичких лева + + + Бугарски лев + бугарски лев + бугарска лева + бугарских лева + бугарских лева + + + стари бугарски лев + стара бугарска лева + старих бугарских лева + старих бугарских лева + + + Бахреински динар + бахреинских динара + бахреинских динара + бахреинских динара + бахреинских динара + + + Бурундски франак + бурундски франак + бурундска франка + бурундских франака + бурундски франци + + + Бермудски долар + бермудски долар + бермудска долара + бермудских долара + бермудских долара + + + Брунејски долар + брунејски долар + брунејска долара + брунејских долара + брунејских долара + + + Боливијски Боливиано + боливијски боливиано + боливијска боливиана + боливијских боливиана + боливијских боливиана + + + стари боливијски боливијано + стара боливијска боливијана + старих боливијских боливијана + старих боливијских боливијана + + + Боливијски пезо + боливијски пезо + боливијска пезоса + боливијских пезоса + боливијских пезоса + + + Боливијски мвдол + боливијски мвдол + боливијска мвдола + боливијских мвдола + боливијских мвдола + + + Бразилски нови крузеиро (1967–1986) + бразилски нови крузеиро + бразилска нова крузеира + бразилских нових крузеира + бразилских нових крузеира + + + Бразилијски крузадо + бразилски крузадос + бразилска крузадоса + бразилских крузадоса + бразилских крузадоса + + + Бразилски крузеиро (1990–1993) + бразилски крузеиро (1990–1993) + бразилска крузеира (1990–1993) + бразилских крузеира (1990–1993) + бразилских крузеира (1990–1993) + + + Бразилски Реал + бразилски реал + бразилска реала + бразилских реала + бразилских реала + + + Бразилијски нови крузадо + бразилски нови крузадо + бразилска нова крузада + бразилских нових крузада + бразилских нових крузада + + + Бразилски крузеиро + бразилски крузеиро + бразилска крузеира + бразилских крузеира + бразилских крузеира + + + стари бразилски крузеиро + стара бразилска крузеира + старих бразилских крузеира + старих бразилских крузеира + + + Бахамски долар + бахамски долар + бахамска долара + бахамских долара + бахамских долара + + + Бутански нгултрум + бутански нгултрум + бутанска нгултрума + бутанских нгултрума + бутанских нгултра + + + Бурмански кјат + бурмански кјат + бурманска кјата + бурманских кјата + бурманских кјата + + + Боцванска пула + боцванска пула + боцванске пуле + боцванских пула + боцванских пула + + + Белоруска нова рубља (1994–1999) + белоруска нова рубља + белоруске нове рубља + белоруских нових рубљи + белоруских нових рубљи + + + Белоруска рубља + белоруска рубља + белоруске рубље + белоруских рубљи + белоруске рубље + + + Белизе долар + белизеански долар + белизеанска долара + белизеанских долара + белизеанских долара + + + Канадски долар + канадски долар + канадска долара + Канадских долара + канадских долара + + + Конголски франак + конголски франак + конголска франка + конголских франака + конголских франака + + + WIR евро + WIR евро + WIR евра + WIR евра + WIR евра + + + Швајцарски франак + швајцарски франак + швајцарска франка + швајцарских франака + швајцарских франака + + + WIR франак + WIR франак + WIR франка + WIR франака + WIR франака + + + чилеански ескудо + чилеанска ескуда + чилеанских ескуда + чилеанских ескуда + + + Чилеовски унидадес се фоменто + чилеански унидадес де фоменто + чилеанска унидадес де фомента + чилеанских унидадес де фомента + чилеански унидадеси де фоменто + + + Чилеански пезо + чилеански пезо + чилеанска пезоса + чилеанских пезоса + чилеански пезоси + + + долар кинеске народне банке + долара кинеске народне банке + долара кинеске народне банке + долара кинеске народне банке + + + Кинески јуан ренминби + кинески јуан + кинеска јуан + кинеских јуана + кинеских јуана + + + Колумбијски пезо + колумбијски пезо + колумбијска пезоса + колумбијских пезоса + колумбијских пезоса + + + Унидад де валоршки реал + унидад де валоршки реал + нидад де валор реала + унидад де валоршких реала + унидад де валоршких реала + + + Костарикански колон + костарикански колон + костариканска колона + костариканских колона + костарикански колони + + + Стари српски динар + стари српски динар + стара српска динара + старих српских динара + старих српских динара + + + Чехословачка тврда круна + чехословачка тврда круна + чехословачке тврде круне + чехословачких тврдих круна + чехословачких тврдих круна + + + кубански конвертибилни песо + кубански конвертибилни песо + кубански конвертибилни пезос + кубанских конвертибилних пезоса + кубански конвертибилни пезос + + + Кубански пезо + кубански пезос + кубанска пезоса + кубанских пезоса + кубанских пезоса + + + Зеленортски ескудо + зеленортски ескудо + зеленортска ескуда + зеленортских ескуда + зеленортских ескуда + + + Кипарска фунта + кипарска фунта + кипарске фунте + кипарских фунти + кипарских фунти + + + Чешка круна + чешка круна + чешке круне + чешких круна + чешких круне + Кч + + + Источно-немачка марка + источно-немачка марка + источно-немачке марке + источно-немачких марака + источно-немачких марака + + + Немачка марка + немачка марка + немачке марке + немачких марака + немачких марака + + + Џибутански франак + џибутски франак + џибутска франка + џибутских франака + џибутски франци + + + Данска круна + данска круна + данске круне + данских круна + данских круна + + + Доминикански пезо + доминикански пезо + доминиканска пезоса + доминиканских пезоса + доминиканских пезоса + + + Алжирски динар + алжирски динар + алжирска динара + алжирских динара + алжирских динара + + + Еквадорски сакр + еквадорски сакр + еквадорска сакра + еквадорских сакра + еквадорских сакра + + + Еквадорски унидад де валор константе + еквадорски унидад де валор константе + еквадорска унидад де валор константа + еквадорских унидад де валор константа + еквадорских унидад де валор константа + + + Естонска кроон + естонска круна + естонске круне + естонских круна + естонских круна + + + Египатска фунта + египатска фунта + египатске фунте + египатских фунти + египатских фунти + + + Еритреанска накфа + еритрејска накфа + еритрејске накфе + еритрејских накфи + еритреанских накфки + + + Шпанска пезета (рачун) + шпанска пезета (А рачун) + шпанске пезете (А рачун) + шпанских пезета (А рачун) + шпанских пезета (А рачун) + + + Шпанска пезета (конвертибилнирачун) + шпанска пезета (конвертибилан рачун) + шпанске пезете (конвертибилан рачун) + шпанских пезета (конвертибилан рачун) + шпанских пезета (конвертибилан рачун) + + + Шпанска пезета + шпанска пезета + шпанска пезета + шпанских пезета + шпанске пезете + + + етиопијски бир + етиопијски бир + етиопијска бира + етиопијских бира + етиопијских бира + + + Евро + евро + евра + евра + евра + + + Финска марка + финска марка + финске марке + финских марака + финских марака + + + Фиџи долар + фиџи долар + фиџи долара + фиџи долара + фиџи долара + + + Фокландска острва фунта + фолкландска фунта + фолкландске фунте + фолкландских фунти + фолкландских фунти + + + Француски франак + француски франак + француска франка + француских франака + француских франака + + + Британска фунта стерлинга + британска фунта стерлинга + британске фунте стерлинга + британских фунти стерлинга + британских фунти стерлинга + + + Грузијски купон ларит + грузијски купон ларит + грузијска купон ларита + грузијских купон ларита + грузијских купон ларита + + + Грузијски лари + грузијски ларис + грузијска лариса + грузијских лариса + грузијских лариса + + + Гански цеди (1979–2007) + гански цед (1979–2007) + ганска цеда (1979–2007) + ганских цеда (1979–2007) + ганских цеда (1979–2007) + + + Гански цеди + гански цед + ганска цеда + ганских цеда + ганских цеда + + + Гибралташка фунта + гибралтарска фунта + гибралтарске фунте + гибралтарских фунти + гибралтарских фунти + + + Гамбијски даласи + гамбијски далас + гамбијска даласа + гамбијских даласа + гамбијских даласа + + + Гвинејски франак + гвинејски франак + гвинејска франка + гвинејских франака + гвинејски франци + + + Гвинејски сили + гвинејски сили + гвинејска сила + гвинејских сила + гвинејских сила + + + Екваторијално-гвинејски еквеле + екваторијално-гвинејски еквеле + екваторијално-гвинејска еквела + екваторијално-гвинејских еквела + екваторијално-гвинејских еквела + + + Грчка драхма + грчка драхма + грчке драхме + драхми + грчких драхми + + + Гватемалски квецал + гватемалски квецал + гватемалска квецала + гватемалских квецала + гватемалских квецала + + + португалска гвинеја ескудо + португалско-гвинејски ескудо + португалско-гвинејска ескуда + португалских гвинеја ескудо + португалско-гвинејских ескуда + + + Гвинеја Бисао Пезо + гвинеја-бисаошки пезо + гвинеја-бисаошка пезоса + гвинеја-бисаошких пезоса + гвинеја-бисаошких пезоса + + + Гујански долар + гвајански долар + гвајанска долара + гвајанских долара + гвајанских долара + + + Хонгконшки долар + хонгконшки долар + хонгконшка долара + хонгконшких долара + хонгконшких долара + + + Хондурашка лемпира + хондурашки лемпир + хондурашка лемпира + хондурашких лемпира + хондурашких лемпира + + + Хрватски динар + хрватски динар + хрватска динара + хрватских динара + хрватских динара + + + Хрватска куна + хрватска куна + хрватске куне + хрватских куна + хрватских куна + + + Хаићански гурд + хаићански гурд + хаићанска гурда + хаићанских гурда + хаићанских гурда + + + Мађарска форинта + мађарска форинта + мађарске форинте + мађарских форинти + мађарске форинте + + + Индонезијска рупиа + индонежанска рупија + индонежанске рупије + индонежанских рупија + индонежанске рупије + + + Ирска фунта + ирска фунта + ирске фунте + ирских фунти + ирских фунти + + + Израелска фунта + израелска фунта + израелске фунте + израелских фунти + израелских фунти + + + стари израелски шекели + стари израелски шекели + стари израелски шекели + стари израелски шекели + стари израелски шекели + + + Израелски нови шекел + израелски нови шекел + израелска нова шекела + израелских нових шекела + израелских нових шекела + + + Индијски Рупи + индијска рупија + индијске рупије + индијских рупија + индијских рупија + + + Ирачки динар + ирачки динар + ирачка динара + ирачких динара + ирачки динари + + + Ирански риал + ирански ријал + иранска ријала + иранских ријала + иранијски ријали + + + стара исландска круна + стара исландска круна + стара исландска круна + стара исландска круна + стара исландска круна + + + Исландска круна + исландска круна + исландске круне + исландских круна + исландске круне + + + Италијанска лира + италијанска лира + италијанске лире + италијанских лира + италијанске лире + + + Јамајски долар + јамајски долар + јамајска долара + јамајских долара + јамајских долара + + + Јордански динар + јорданских динара + јорданских динара + јорданских динара + јорданских динара + + + Јапански јен + јапански јен + јапанска јена + јапанских јена + јапански јен + ¥ + + + Кенијски шилинг + кенијски шилинг + кенијска шилинга + кенијских шилинга + кенијских шилинга + + + Киргистански сом + киргистански сом + киргистанска сома + киргистанских сома + киргистанских сома + + + Камбоџијски риел + камбоџански ријел + камбоџанска ријела + камбоџанских ријела + камбоџанских ријела + + + Коморски франак + коморански франак + коморанска франка + коморанских франака + коморански франци + + + Севернокорејски вон + севернокорејски вон + севернокорејска вона + севернокорејских вона + севернокорејски вон + + + јужнокорејски хван + јужнокорејска хвана + јужнокорејских хвана + јужнокорејских хвана + + + стари јужнокорејски вон + стара јужнокорејска вона + старих јужнокорејских вона + старих јужнокорејских вона + + + Јужнокорејски Вон + јужнокорејски вон + јужнокорејска вона + јужнокорејских вона + јужнокорејски вон + + + Кувајтски динар + кувајтских динара + кувајтских динара + кувајтских динара + кувајтских динара + + + Кајманска острва долар + кајмански долар + кајманска долара + кајманских долара + кајманских долара + + + Казахстански тенџ + казахстанска тенџа + казахстанске тенџе + казахстанских тенџи + казахстанских тенџи + + + Лаошки кип + лаошки кип + лаошка кипа + лаошких кипа + лаошки кипи + + + Лебанска фунта + лебанска фунта + лебанске фунте + лебанских фунти + лебанске фунте + + + Шриланкански рупи + шриланкански рупиј + шриланканска рупија + шриланканских рупија + шриланканских рупија + + + Либеријски долар + либеријски долар + либеријска долара + либеријских долара + либеријских долара + + + Лесото лоти + лесотски лотис + лесотска лотиса + лесотских лотиса + лесотских лотиса + + + Литвански литас + литвански литас + литванска литаса + литванских литаса + литванских литаса + + + Литвански талонас + литвански талонас + литванска талонаса + литванских талонаса + литванских талонаса + + + Луксембуршки конвертибилни франак + луксембуршки конвертибилни франак + луксембуршка конвертибилна франка + луксембуршких конвертибилних франака + луксембуршких конвертибилних франака + + + Луксембуршки франак + луксембуршки франак + луксембуршка франка + луксембуршких франака + луксембуршки франци + + + Луксембуршки финансијски франак + луксембуршки финансијски франак + луксембуршка финансијска франка + луксембуршких финансијских франака + луксембуршких финансијских франака + + + Латвијски лати + латвијски лат + латвијска лата + латвијских лата + латвијских лата + + + атвијска рубља + латвијска рубља + латвијске рубље + латвијских рубљи + латвијских рубљи + + + Либијски динар + либијских динара + либијских динара + либијских динара + либијских динара + + + Марокански дирхам + мароканска дирхама + мароканске дирхаме + мароканских дирхама + мароканских дирхама + + + Марокански франак + марокански франак + мароканска франка + мароканских франака + мароканских франака + + + монегаскански франак + монегасканска франка + монегасканских франака + монегасканских франака + + + молдовански купон + молдованска купона + молдованских купона + молдованских купона + + + Молдовски љу + молдовски леи + молдовска леија + молдовских леија + молдовских леија + + + Малагасијски ариари + малагашајски ариариј + малагашајска ариарија + малагашајских ариарија + малагашајски ариарији + + + Малагасијски франак + малагашајски франак + малагашајска франка + малагашајских франака + малагашајски франци + + + Македонски денар + македонски денар + македонска денара + македонских денара + македонских динара + + + стари македонски денар + стара македонска денара + старих македонских денара + старих македонских денара + + + Малијански франак + малијски франак + малијска франка + малијских франака + малијских франака + + + Мјанмашки кјат + мијанмашки кјат + мијанмашка кјата + мијанмашких кјата + мијанмашки кјати + + + Монголски тугрик + монголијски тугрик + монголијска тугрика + монголијских тугрика + монголијски тугрици + + + Маканишка патака + маканешка патака + маканешке патаке + маканешких патака + маканешких патака + + + Мауританијска угвија + мауританијска угвиља + мауританијске угвиље + мауританијских угвиља + мауританијске угвиље + + + Малтешка лира + малтешка лира + малтешке лире + малтешких лира + малтешких лира + + + Малтешка фунта + малтешка фунта + малтешке фунте + малтешких фунти + малтешких фунти + + + Маурицијски рупи + мауританијска рупија + мауританијске рупије + мауританијских рупија + мауританијске рупије + + + Малдивијска руфија + малдивски руфијас + малдивска руфијаса + малдивских руфијаса + малдивских руфијаса + + + Малавијска квача + малавијска квача + малавијске кваче + малавијских квача + малавијских квача + + + Мексички пезо + мексички пезо + мексичка пезоса + мексичких пезоса + мексичких пезоса + + + Мексички сребрни пезо (1861–1992) + мексички сребрни пезо + мексичка сребрна пезоса + мексичких сребрних пезоса + мексичких сребрних пезоса + + + Мексички унидад де инверсион (UDI) + мексички унидадс де инверзион + мексичка унидадс де инверзиона + мексичких унидадс де инверзиона + мексичких унидадс де инверзиона + + + Малезијски ринггит + малезијски ринггит + малезијска ринггита + малезијских ринггита + малезијских ринггита + + + Мозамбијски ескудо + мозамбијски ескудо + мозамбијска ескуда + мозамбијских ескуда + мозамбијских ескуда + + + Стари мозамбијски метикал + стари мозамбијски метикал + стара мозамбијска метикала + старих мозамбијских метикала + старих мозамбијских метикала + + + Мозамбијски метикал + мозамбијски метикал + мозамбијска метикала + мозамбијских метикала + мозамбијских метикала + + + намбијски долар + намибијски долар + намибијска долара + намибијских долара + намибијских долара + + + Нигеријска наира + нигеријска наира + нигеријске наире + нигеријских наира + нигеријских наира + + + Никарагванска кордоба + никарагванска кордоба + никарагванске кордобе + никарагванских кордоба + никарагванских кордоба + + + Никарагванска златна кордоба + никарагванска златна кордоба + никарагванске златне кордобе + никарагванских златних кордоба + никарагванских златних кордоба + + + Холандски гулден + холандски гулден + холандска гулдена + холандских гулдена + холандских гулдена + + + Норвешка круна + норвешка круна + норвешке круне + норвешких круна + норвешких круна + + + Непалски рупи + непалска рупија + непалске рупије + непалских рупија + непалских рупија + + + Новозеландски долар + новозеландски долар + новозеландска долара + новозеландских долара + новозеландских долара + + + Омански ријал + оманских ријала + оманских ријала + оманских ријала + оманских ријала + + + Панамска балбоа + панамска балбоа + панамске балбое + панамских балбоа + панамских балбоа + + + Перуански инти + перувијски инти + перувијска интија + перувијских интија + перувијских интија + + + Перуански нуево сол + перуански нуево сол + перуанска нуево сола + перуанских нуево сола + перуанских нуево сола + + + Перуански сол + перуански сол + перуанска сола + перуанских сола + перуанских сола + + + Папуа ново-гвинејшка кина + папуа ново гвинејски долар + папуа ново гвинејска долара + папуа ново гвинејских долара + папуа ново гвинејских долара + + + Филипински пезо + филипински пезо + филипинска пезоса + филипинских пезоса + филипинских пезоса + + + Пакистански рупи + пакистанска рупија + пакистанске рупије + пакистанских рупија + пакистанске рупије + + + Пољски злот + пољски злот + пољска злота + пољских злота + пољских злота + зл + + + Пољски злоти (1950–1995) + пољски злот (1950–1995) + пољска злота (1950–1995) + пољских злота (1950–1995) + пољских злота (1950–1995) + + + Португалски ескудо + португалски ескудо + португалска ескуда + португалских ескуда + португалских ескуда + + + Парагвајски гуарни + парагвајски гвараниј + парагвајска гваранија + парагвајских гваранија + парагвајски гваранији + + + Катаршки ријал + катарски ријал + катарска ријала + катарских ријала + катарских ријала + + + Родејскидолар + родежански долар + родежанска долара + родежанских долара + родежанских долара + + + Стари румунски љу + стари румунски леиј + стара румунска леија + старих румунских леија + старих румунских леија + + + Румунски леу + румунски леи + румунска леија + румунских леија + румунских леија + + + Српски динар + српски динар + српска динара + српских динара + српски динари + дин. + + + Руска рубља + руска рубља + руске рубље + руских рубљи + руских рубљи + + + Руска рубља (1991–1998) + руска рубља (1991–1998) + руске рубље (1991–1998) + руских рубљи (1991–1998) + руских рубљи (1991–1998) + + + Руандански франак + руандански франак + руанданска франка + руанданских франака + руандански франци + + + Саудијски ријал + саудијски ријал + саудијска ријала + саудијских ријала + саудијских ријала + + + Соломонско-острвски долар + соломонско-острвски долар + соломонско-острвска долара + соломонско-острвских долара + соломонско-острвских долара + + + Сејшелска рупија + сејшелска рупија + сејшелске рупије + сејшелских рупија + сејшелских рупија + + + Стари судански динар + стари судански динар + стара суданска динара + старих суданских динара + старих суданских динара + + + Суданска фунта + суданска фунта + суданске фунте + суданских фунти + суданских фунти + + + Стара суданска фунта + стара суданска фунта + старе суданске фунте + старих суданских фунти + старих суданских фунти + + + Шведска круна + шведска круна + шведске круне + шведских круна + шведских круна + + + Сингапурски долар + сингапурски долар + сингапурска долара + сингапурских долара + сингапурских долара + + + Св. јеленска фунта + св. јеленска фунта + св. јеленске фунте + св. јеленских фунти + св. јеленских фунти + + + Словеначки толар + словеначки толар + словеначка толара + словеначких толара + словеначких толара + + + Словачка круна + словачка круна + словачке круне + словачких круна + словачких круна + + + Сијера-леоншки леоне + сијералеонски леоне + сијералеонска леона + сијералеонских леона + сијералеонски леони + + + СОмалијски шилинг + сомалијски шилинг + сомалијска шилинга + сомалијских шилинга + сомалијски шилинзи + + + СУринамски долар + суринамски долар + суринамска долара + суринамских долара + суринамских долара + + + Суринамски гилдер + суринамски гилдер + суринамска гилдера + суринамских гилдера + суринамских гилдера + + + Сао Томе и Принципе добра + сао томе и принципе добар + сао томе и принципе добра + сао томе и принципе добра + сао томе и принципе добри + + + Совјетска рубља + совјетска рубља + совјетске рубље + совјетских рубљи + совјетских рубљи + + + Салвадорски колон + салвадорски колон + салвадорска колона + салвадорских колона + салвадорских колона + + + Сиријска фунта + сиријска фунта + сиријске фунте + сиријских фунти + сиријске фунте + + + Свази лилангени + свази емаланген + свази емалангена + свази емалангена + свази емалангена + + + Таи бахт + таи бахт + таи бахта + таи бахта + таи бахта + + + Таџихистанска рубља + таџихистанска рубља + таџихистанске рубље + таџихистанских рубљи + таџихистанских рубљи + + + Таљихистански сомони + таџихистански сомон + таџихистанска сомона + таџихистанских сомона + таџихистанских сомона + + + Туркменистански манат (1993–2009) + туркменистански манат (1993–2009) + туркменистанска маната (1993–2009) + туркменистанских маната (1993–2009) + туркменистански манат (1993–2009) + + + Туркменистански манат + туркменистански манат + туркменистански манат + туркменистанских маната + туркменистанских маната + + + Тунизијски долар + тунежанских динара + тунежанских динара + тунежанских динара + тунежанских динара + + + Тонгоншка Панга + тонгашка панга + тонгашке панге + тонгашких панга + тонгашких панга + + + Тиморшки ескудо + тиморшки ескудо + тиморшка ескуда + тиморшких ескуда + тиморшких ескуда + + + Стара турска лира + стара турска лира + старе турске лире + старих турских лира + стара турска лира + + + Турска лира + турска лира + турске лире + турских лира + турских лира + Тл + + + Тринидад тобагошки долар + тринидад-тобагошки долар + тринидад-тобагошка долара + тринидад-тобагошких долара + тринидад-тобагошких долара + + + Нови тајвански долар + нови тајвански долар + нова тајванска долара + нових тајванских долара + нови тајвански долари + + + Танзанијски шилинг + танзанијски шилинг + танзанијска шилинга + танзанијских шилинга + танзанијски шилинзи + + + Украјинска хривња + украјинска кривња + украјинске кривње + украјинских кривњи + украјинских кривњи + + + Украјински карбованети + украјински карбованец + украјинска карбованцива + украјинских карбованцива + украјинских карбованцива + + + Угандски шилинг (1966–1987) + угандијски шилинг (1966–1987) + угандијска шилинга (1966–1987) + угандијских шилинга (1966–1987) + угандијских шилинга (1966–1987) + + + Угандски шилинг + угандијски шилинг + угандијска шилинга + угандијских шилинга + угандијски шилинзи + + + Амерички долар + амерички долар + америчка долара + америчких долара + америчких долара + + + САД долар (следећи дан) + САД долар (следећи дан) + САД долара (следећи дан) + САД долара (следећи дан) + САД долара (следећи дан) + + + САД долар (исти дан) + САД долар (исти дан) + САД долара (исти дан) + САД долара (исти дан) + САД долара (исти дан) + + + Уругвајски пезо ен унидадес индексадас + уругвајски пезо ен унидадес индексадес + уругвајска пезоса ен унидадес индексадеса + уругвајских пезоса ен унидадес индексадеса + угвајских пезоса ен унидадес индексадеса + + + Уругвајски пезо (1975–1993) + уругвајски пезо (1975–1993) + уругвајска пезоса (1975–1993) + уругвајских пезоса (1975–1993) + уругвајских пезоса (1975–1993) + + + Уругвајски пезо + уругвајски пезо + уругвајска пезоса + уругвајских пезоса + уругвајских пезоса + + + Узбекистански сом + узбекистански сом + узбекистанска сома + узбекистанских сома + узбекистански сом + + + Венецуелански боливар (1871–2008) + венецуелански боливар (1871–2008) + венецуеланска боливара (1871–2008) + венецуеланских боливара (1871–2008) + венецуеланских боливара (1871–2008) + + + Венецуелански боливар + венецуелански боливар + венецуеланска боливара + венецуеланских боливара + венецуеланских боливара + + + Вијетнамски донг + вијетнамски донг + вијетнамска донга + вијетнамских донга + вијетнамски донг + + + стари вијетнамски донг + стара вијетнамска донга + старих вијетнамских донга + старих вијетнамских донга + + + Вануатски вату + вануату вату + вануату ватуа + вануату ватуа + вануату ватуи + + + Самоанска тала + самоанска тала + самоанске тале + самоанских тала + самоанских тала + + + CFA франак BEAC + CFA франак BEAC + CFA франка BEAC + CFA франака BEAC + CFA франци BEAC + + + Сребро + сребро + сребра + сребра + сребра + + + Злато + злато + злата + злата + злата + + + Европска композитна јединица + европска композитна јединица + европске композитне јединице + европских композитних јединица + европских композитних јединица + + + Европска новчана јединица + европска новчана јединица (XBB) + европске новчане јединице (XBB) + европских новчаних јединица (XBB) + европске новчане јединице (XBB) + + + Европска јединица рачуна (XBC) + европска јединица рачуна (XBC) + европске јединице рачуна (XBC) + европских јединица рачуна (XBC) + европских јединица рачуна (XBC) + + + Европска јединица рачуна (XBD) + европска јединица рачуна (XBD) + европске јединице рачуна (XBD) + европских јединица рачуна (XBD) + европских јединица рачуна (XBD) + + + Источно-карибски долар + источно-карибски долар + источно-карибска долара + источно-карибских долара + источно-карибских долара + + + Посебна цртаћа права + посебно цртаће право + посебна цртаћа права + посебних цртаћих права + посебних цртаћих права + + + Европска валутна јединица + европска новчана јединица (XEU) + европске новчане јединице (XEU) + европских новчаних јединица (XEU) + европских новчаних јединица + + + Француски златни франак + француски златни франак + француска златна франка + француских златних франака + француских златних франака + + + Француски UIC-франак + француски UIC-франак + француска UIC-франка + француских UIC-франака + француских UIC-франака + + + CFA франак BCEAO + CFA франак BCEAO + CFA франка BCEAO + CFA франака BCEAO + CFA франци BCEAO + + + Паладијум + паладијум + паладијума + паладијума + паладијума + + + CFP франак + CFP франак + CFP франка + CFP франака + CFP франци + + + Платина + платина + платине + платина + платина + + + RINET фонд + RINET фонд + RINET фонда + RINET фондова + RINET фондова + + + Код тестиране валуте + код тестиране валуте + кода тестиране валуте + кодова тестиране валуте + кодова тестиране валуте + + + Непозната или неважећа валута + непозната или неважећа валута + непознате или неважеће валуте + непознатих или неважећих валута + непознатих или неважећих валута + + + Јеменски динар + јеменски долар + јеменска долара + јеменских долара + јеменских долара + + + Јеменски риал + јеменски ријал + јеменска ријала + јеменских ријала + јеменски ријали + + + Југословенски тврди динар + југословенски тврди динар + југословенска тврда динара + југословенских тврдих динара + југословенских тврдих динара + + + Југословенски нови динар + југословенски нови динар + југословенска нова динара + југословенских нових динара + југословенских нових динара + + + Југословенски конвертибилни динар + југословенски конвертибилни динар + југословенска конвертибилна динара + југословенских конвертибилних динара + југословенских конвертибилних динара + + + југословенски реформирани динар + југословенска реформирана динара + југословенских реформираних динара + југословенских реформираних динара + + + Јужно-афрички ранд (финансијски) + јужноафрички ранд (финансијски) + јужноафричка ранда (финансијска) + јужноафричких ранда (финансијских) + јужноафричких ранда (финансијских) + + + Јужно-афрички ранд + јужно-афрички ранд + јужно-афричка ранда + јужно-афричких ранда + јужно-афричких ранда + + + Замбијска квача (1968–2012) + замбијска квача (1968–2012) + замбијске кваче (1968–2012) + замбијских квача (1968–2012) + замбијске кваче (1968–2012) + + + Замбијска квача + замбијска квача + замбијске кваче + замбијских квача + замбијске кваче + + + Заирски нови заир + заирски нови заир + заирска нова заира + заирских нових заира + заирских нових заира + + + Заирски заир + заирски заир + заирска заира + заирских заира + заирских заира + + + Зимбабвејски долар + зимбабвејски долар + зимбабвејска долара + зимбабвејских долара + зимбабвејски долари + + + Зимбабвеански долар (2009) + + + Зимбабвеански долар (2008) + зимбабвејски долар (2008) + зимбабвејска долара (2008) + зимбабвејских долара (2008) + зимбабвејских долара (2008) + + + + + + + {0} дан + {0} дана + {0} дана + {0} дан + + + {0} сат + {0} сата + {0} сати + {0} сат + + + {0} минут + {0} минута + {0} минута + {0} минут + + + {0} месец + {0} месеца + {0} месеци + {0} месец + + + {0} секунда + {0} секунде + {0} секунди + {0} секунда + + + {0} недеља + {0} недеље + {0} недеља + {0} недеља + + + {0} година + {0} године + {0} година + {0} година + + + + + {0} дан + {0} дана + {0} дана + {0} дан + + + {0} сат + {0} сата + {0} сати + {0} сат + + + {0} мин + {0} мин + {0} мин + {0} мин + + + {0} мес + {0} мес + {0} мес + {0} мес + + + {0} сек + {0} сек + {0} сек + {0} сек + + + {0} нед + {0} нед + {0} нед + {0} нед + + + {0} год + {0} год + {0} год + {0} год + + + + + + {0} и {1} + {0} и {1} + + + + + да:д + не:н + + + + diff --git a/library/Zend/Locale/Data/bs_Cyrl_BA.xml b/library/Zend/Locale/Data/bs_Cyrl_BA.xml new file mode 100755 index 000000000..eb09ff182 --- /dev/null +++ b/library/Zend/Locale/Data/bs_Cyrl_BA.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + አንዶራ + የተባበሩት አረብ ኤምሬትስ + አልባኒያ + አርሜኒያ + ኔዘርላንድስ አንቲልስ + አርጀንቲና + ኦስትሪያ + አውስትሬሊያ + አዘርባጃን + ቦስኒያ እና ሄርዞጎቪኒያ + ባርቤዶስ + ቤልጄም + ቡልጌሪያ + ባህሬን + ቤርሙዳ + ቦሊቪያ + ብራዚል + ቡህታን + ቤላሩስ + ቤሊዘ + ኮንጎ + የመካከለኛው አፍሪካ ሪፐብሊክ + ስዊዘርላንድ + ቺሊ + ካሜሩን + ቻይና + ኮሎምቢያ + ኬፕ ቬርዴ + ሳይፕረስ + ቼክ ሪፑብሊክ + ጀርመን + ዴንማርክ + ዶሚኒካ + ዶሚኒክ ሪፑብሊክ + አልጄሪያ + ኢኳዶር + ኤስቶኒያ + ግብጽ + ምዕራባዊ ሳህራ + ኤርትራ + ስፔን + ኢትዮጵያ + ፊንላንድ + ፊጂ + ሚክሮኔዢያ + ፈረንሳይ + እንግሊዝ + ጆርጂያ + የፈረንሳይ ጉዊአና + ጋምቢያ + ጊኒ + ኢኳቶሪያል ጊኒ + ግሪክ + ቢሳዎ + ጉያና + ሆንግ ኮንግ + ክሮኤሽያ + ሀይቲ + ሀንጋሪ + ኢንዶኔዢያ + አየርላንድ + እስራኤል + ህንድ + ኢራቅ + አይስላንድ + ጣሊያን + ጃማይካ + ጆርዳን + ጃፓን + ካምቦዲያ + ኮሞሮስ + ደቡብ ኮሪያ + ሰሜን ኮሪያ + ክዌት + ሊባኖስ + ሊቱዌኒያ + ላትቪያ + ሊቢያ + ሞሮኮ + ሞልዶቫ + ማከዶኒያ + ሞንጎሊያ + ማካዎ + ሞሪቴኒያ + ማልታ + ማሩሸስ + ሜክሲኮ + ማሌዢያ + ናሚቢያ + ኒው ካሌዶኒያ + ናይጄሪያ + ኔዘርላንድ + ኖርዌ + ኔፓል + ኒው ዚላንድ + ፔሩ + የፈረንሳይ ፖሊኔዢያ + ፓፑዋ ኒው ጊኒ + ፖላንድ + ፖርታ ሪኮ + ሮሜኒያ + ራሺያ + ሳውድአረቢያ + ሱዳን + ስዊድን + ሲንጋፖር + ስሎቬኒያ + ስሎቫኪያ + ሴኔጋል + ሱማሌ + ሲሪያ + ቻድ + የፈረንሳይ ደቡባዊ ግዛቶች + ታይላንድ + ታጃኪስታን + ምስራቅ ቲሞር + ቱኒዚያ + ቱርክ + ትሪኒዳድ እና ቶባጎ + ታንዛኒያ + ዩጋንዳ + አሜሪካ + ዩዝበኪስታን + ቬንዙዌላ + የእንግሊዝ ድንግል ደሴቶች + የአሜሪካ ቨርጂን ደሴቶች + የመን + ደቡብ አፍሪካ + ዛምቢያ + + + + [\u135F ሀ ሁ ሂ ሃ ሄ ህ ሆ ለ ሉ ሊ ላ ሌ ል ሎ ሏ ሐ ሑ ሒ ሓ ሔ ሕ ሖ ሗ መ ሙ ሚ ማ ሜ ም ሞ ሟ ረ ሩ ሪ ራ ሬ ር ሮ ሯ ሰ ሱ ሲ ሳ ሴ ስ ሶ ሷ ሸ ሹ ሺ ሻ ሼ ሽ ሾ ሿ ቀ ቁ ቂ ቃ ቄ ቅ ቆ ቈ ቊ ቋ ቌ ቍ ቐ ቑ ቒ ቓ ቔ ቕ ቖ ቘ ቚ ቛ ቜ ቝ በ ቡ ቢ ባ ቤ ብ ቦ ቧ ቨ ቩ ቪ ቫ ቬ ቭ ቮ ቯ ተ ቱ ቲ ታ ቴ ት ቶ ቷ ቸ ቹ ቺ ቻ ቼ ች ቾ ቿ ኀ ኁ ኂ ኃ ኄ ኅ ኆ ኈ ኊ ኋ ኌ ኍ ነ ኑ ኒ ና ኔ ን ኖ ኗ ኘ ኙ ኚ ኛ ኜ ኝ ኞ ኟ አ ኡ ኢ ኣ ኤ እ ኦ ኧ ከ ኩ ኪ ካ ኬ ክ ኮ ኰ ኲ ኳ ኴ ኵ ኸ ኹ ኺ ኻ ኼ ኽ ኾ ዀ ዂ ዃ ዄ ዅ ወ ዉ ዊ ዋ ዌ ው ዎ ዐ ዑ ዒ ዓ ዔ ዕ ዖ ዘ ዙ ዚ ዛ ዜ ዝ ዞ ዟ ዠ ዡ ዢ ዣ ዤ ዥ ዦ ዧ የ ዩ ዪ ያ ዬ ይ ዮ ደ ዱ ዲ ዳ ዴ ድ ዶ ዷ ጀ ጁ ጂ ጃ ጄ ጅ ጆ ጇ ገ ጉ ጊ ጋ ጌ ግ ጎ ጐ ጒ ጓ ጔ ጕ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶔ ⶕ ⶖ ጠ ጡ ጢ ጣ ጤ ጥ ጦ ጧ ጨ ጩ ጪ ጫ ጬ ጭ ጮ ጯ ጸ ጹ ጺ ጻ ጼ ጽ ጾ ጿ ፈ ፉ ፊ ፋ ፌ ፍ ፎ ፏ ፐ ፑ ፒ ፓ ፔ ፕ ፖ ፗ] + [᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ሇ ⶀ ᎀ ᎁ ᎂ ᎃ ⶁ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ⶂ ⶃ ⶄ ቇ ᎄ ᎅ ᎆ ᎇ ⶅ ⶆ ⶇ ኇ ⶈ ⶉ ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ ዹ ዺ ዻ ዼ ዽ ዾ ዿ ⶍ ⶎ ጏ ⶏ ⶐ ⶑ ፇ ᎈ ᎉ ᎊ ᎋ ᎌ ᎍ ᎎ ᎏ ⶒ ፘ ፙ ፚ ⶠ ⶡ ⶢ ⶣ ⶤ ⶥ ⶦ ⶨ ⶩ ⶪ ⶫ ⶬ ⶭ ⶮ ⶰ ⶱ ⶲ ⶳ ⶴ ⶵ ⶶ ⶸ ⶹ ⶺ ⶻ ⶼ ⶽ ⶾ ⷀ ⷁ ⷂ ⷃ ⷄ ⷅ ⷆ ⷈ ⷉ ⷊ ⷋ ⷌ ⷍ ⷎ ⷐ ⷑ ⷒ ⷓ ⷔ ⷕ ⷖ ⷘ ⷙ ⷚ ⷛ ⷜ ⷝ ⷞ] + [ሀ ለ ሐ መ ረ ሰ ሸ ቀ ቈ ቐ ቘ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ዀ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጘ ⶓ ⶔ ⶕ ⶖ ጠ ጨ ጸ ፈ ፐ] + + + + + + + + EEEE፡ dd MMMM ግርጋ y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + + + + ልደት + ካብኽ + ክብላ + ፋጅኺ + ክቢቅ + ም/ት + ኰር + ማርያ + ያኸኒ + መተሉ + ም/ም + ተሕሳ + + + ልደትሪ + ካብኽብቲ + ክብላ + ፋጅኺሪ + ክቢቅሪ + ምኪኤል ትጟኒሪ + ኰርኩ + ማርያም ትሪ + ያኸኒ መሳቅለሪ + መተሉ + ምኪኤል መሽወሪ + ተሕሳስሪ + + + + + + + + + + + + + + + + + + + + + + + ሰ/ቅ + ሰኑ + ሰሊጝ + ለጓ + ኣምድ + ኣርብ + ሰ/ሽ + + + ሰንበር ቅዳዅ + ሰኑ + ሰሊጝ + ለጓ ወሪ ለብዋ + ኣምድ + ኣርብ + ሰንበር ሽጓዅ + + + + + + + + + + + + + + + + + + ፋዱስ ጃብ + ፋዱስ ደምቢ + + + + + + ይጅ + ኣድ + + + + + + EEEE፡ dd MMMM ግርጋ y G + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + latn + + latn + ethi + + + + + ¤#,##0.00 + + + + + + የብራዚል ሪል + + + የቻይና ዩአን ረንሚንቢ + + + Nfk + + + የኢትዮጵያ ብር + + + አውሮ + + + የእንግሊዝ ፓውንድ ስተርሊንግ + + + የሕንድ ሩፒ + + + የጃፓን የን + + + የራሻ ሩብል + + + የአሜሪካን ዶላር + + + + + diff --git a/library/Zend/Locale/Data/byn_ER.xml b/library/Zend/Locale/Data/byn_ER.xml new file mode 100755 index 000000000..a88d5ef6e --- /dev/null +++ b/library/Zend/Locale/Data/byn_ER.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ca.xml b/library/Zend/Locale/Data/ca.xml new file mode 100755 index 000000000..b58f1ed70 --- /dev/null +++ b/library/Zend/Locale/Data/ca.xml @@ -0,0 +1,5788 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + àfar + abkhaz + atjeh + acoli + adangme + adigué + avèstic + afrikaans + afrihili + aghem + ainu + àkan + accadi + aleuta + altaic meridional + amhàric + aragonès + anglès antic + angika + àrab + àrab estàndard modern + arameu + araucà + arapaho + arauac + assamès + pare + asturià + àvar + awadhi + aimara + azerbaidjanès + àzeri + baixkir + balutxi + balinès + basa + bamun + ghomala + bielorús + beja + bemba + bena + bafut + búlgar + bhojpuri + bislama + bicol + bini + kom + blackfoot + bambara + bengalí + tibetà + bretó + braj + bodo + bosnià + akoose + buriat + bugui + seki + bilin + medumba + català + caddo + carib + cayuga + atsam + txetxè + cebuà + chiga + chamorro + txibtxa + txagatai + chuuk + mari + pidgin chinook + choctaw + chipewyan + cherokee + xeienne + kurd sorani + cors + copte + cree + tàtar de Crimea + txec + caixubi + eslau eclesiàstic + txuvaix + gal·lès + danès + dakota + darguà + taita + alemany + alemany austríac + alt alemany suís + delaware + slavey + dogrib + dinka + zarma + dogri + baix sòrab + duala + neerlandès mitjà + divehi + jola-fonyi + jula + dzongka + dazaga + embu + ewe + efik + egipci antic + ekajuk + grec + elamita + anglès + anglès australià + anglès canadenc + anglès britànic + anglès (GB) + anglès americà + anglès (EUA) + anglès mitjà + esperanto + espanyol + espanyol hispanoamericà + espanyol europeu + espanyol de Mèxic + estonià + basc + ewondo + persa + fang + fanti + ful + finès + filipí + fijià + feroès + fon + francès + francès canadenc + francès suís + francès mitjà + francès antic + frisó septentrional + frisó occidental + friülà + frisó oriental + irlandès + ga + gayo + gbaya + gaèlic escocès + gueez + gilbertès + gallec + alt alemany mitjà + guaraní + alt alemany antic + gondi + gorontalo + gòtic + grebo + grec antic + alemany suís + gujarati + gusí + manx + gwichin + haussa + haida + hawaià + hebreu + hindi + hiligainon + hitita + hmong + hiri motu + croat + alt sòrab + haitià + hongarès + hupa + armeni + herero + interlingua + iban + ibibio + indonesi + interlingue + igbo + yi sichuan + inupiak + ilocà + ingúix + ido + islandès + italià + inuktitut + japonès + lojban + ngomba + machame + judeopersa + judeoàrab + javanès + georgià + karakalpak + cabilenc + katxin + jju + kamba + kawi + kabardí + kanembu + tyap + makonde + crioll capverdià + koro + kongo + khasi + khotanès + koyra chiini + kikuiu + kuanyama + kazakh + kako + grenlandès + kalenjin + khmer + kimbundu + kannada + coreà + konkani + kosraeà + kpelle + kanuri + karatxai + carelià + kurukh + caixmiri + shambala + bafia + colognian + kurd + kúmik + kutenai + komi + còrnic + kirguís + llatí + ladí + langi + panjabi occidental + lamba + luxemburguès + lesguià + ganda + limburguès + lakota + lingala + laosià + mongo + lozi + lituà + luba katanga + luba-lulua + luisenyo + lunda + luo + mizo + luyia + letó + madurès + mafa + magahi + maithili + makassar + mandinga + massai + maba + mordovià moksa + mandar + mende + meru + mauricià + malgaix + gaèlic irlandès mitjà + makhuwa-metto + meta' + marshallès + maori + micmac + minangkabau + macedoni + malaiàlam + mongol + manxú + manipurí + mohawk + moré + marathi + malai + maltès + mundang + llengües vàries + creek + mirandès + marwari + birmà + myene + mordovià erza + nauruà + napolità + nama + noruec bokmål + ndebele septentrional + baix alemany + nepalès + newari + ndonga + nias + niueà + neerlandès + flamenc + bissio + noruec nynorsk + ngiemboon + noruec + nogai + nòrdic antic + n’Ko + ndebele meridional + sotho septentrional + nuer + navaho + newari clàssic + nyanja + nyamwesi + nyankole + nyoro + nzema + occità + ojibwa + oromo + oriya + osset + osage + turc otomà + panjabi + pangasi + pahlavi + pampangà + papiamento + palauà + persa antic + fenici + pali + polonès + ponapeà + provençal antic + paixtu + pushtu + portuguès + portuguès del Brasil + portuguès de Portugal + quítxua + rajasthani + rapanui + rarotongà + retoromànic + rundi + romanès + moldau + rombo + romaní + arrel + rus + aromanès + ruandès + rwo + sànscrit + sandawe + iacut + arameu samarità + samburu + sasak + santali + ngambay + sangu + sard + sicilià + escocès + sindhi + sami septentrional + seneca + sena + selkup + koyraboro senni + sango + irlandès antic + serbocroat + tachelhit + xan + àrab txadià + singalès + sidamo + eslovac + eslovè + samoà + sami meridional + sami lule + sami d'Inari + sami skolt + shona + soninke + somali + sogdià + albanès + serbi + sranan + serer + siswati + saho + sotho meridional + sundanès + sukuma + susú + sumeri + suec + suahili + comorià + suahili del Congo + siríac clàssic + siríac + tàmil + telugu + temne + teso + terena + tetun + tadjik + tailandès + tigrinya + tigre + tiv + turcman + tokelauès + tagàlog + klingonià + tlingit + tamazight + tswana + tongalès + tonga + tok pisin + turc + taroko + tsonga + tsimshià + tàtar + tumbuka + tuvaluà + twi + tasawaq + tahitià + tuvinià + amazic del Marroc central + udmurt + uigur + ugarític + ucraïnès + umbundu + idioma desconegut + urdú + uzbek + vai + venda + vietnamita + volapük + vòtic + vunjo + való + walser + ameto + waray-waray + washo + wòlof + calmuc + xosa + soga + yao + yapeà + yangben + yemba + jiddisch + ioruba + cantonès + zhuang + zapoteca + símbols Bliss + zenaga + amazic estàndard marroquí + xinès + xinès simplificat + xinès tradicional + zulu + zuni + sense contingut lingüístic + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Món + Àfrica + Amèrica del Nord + Amèrica del Sud + Oceania + Àfrica Occidental + Amèrica Central + Àfrica Oriental + Àfrica Septentrional + Àfrica Central + Àfrica Meridional + Amèrica + Amèrica Septentrional + Carib + Àsia Oriental + Àsia Meridional + Àsia Sud-oriental + Europa Meridional + Australàsia + Melanèsia + Regió de la Micronèsia + Polinèsia + Àsia + Àsia Central + Àsia Occidental + Europa + Europa Oriental + Europa Septentrional + Europa Occidental + Amèrica Llatina + Illa de l'Ascensió + Andorra + Emirats Àrabs Units + Afganistan + Antigua i Barbuda + Anguilla + Albània + Armènia + Antilles Neerlandeses + Angola + Antàrtida + Argentina + Samoa Nord-americana + Àustria + Austràlia + Aruba + Illes Åland + Azerbaidjan + Bòsnia i Hercegovina + Barbados + Bangla Desh + Bèlgica + Burkina Faso + Bulgària + Bahrain + Burundi + Benín + Saint Barthélemy + Bermudes + Brunei + Bolívia + Carib Neerlandès + Brasil + Bahames + Bhutan + Bouvet + Botswana + Bielorússia + Belize + Canadà + Illes Cocos + Congo - Kinshasa + Congo (República Democràtica del Congo) + República Centreafricana + Congo - Brazzaville + Congo (República del Congo) + Suïssa + Costa d’Ivori + Illes Cook + Xile + Camerun + Xina + Colòmbia + Illa Clipperton + Costa Rica + Cuba + Cap Verd + Curaçao + Illa Christmas + Xipre + República Txeca + Alemanya + Diego Garcia + Djibouti + Dinamarca + Dominica + República Dominicana + Algèria + Ceuta i Melilla + Equador + Estònia + Egipte + Sàhara Occidental + Eritrea + Espanya + Etiòpia + Unió Europea + Finlàndia + Fiji + Illes Malvines + Illes Malvines (Illes Falkland) + Micronèsia + Illes Fèroe + França + Gabon + Regne Unit + GB + Grenada + Geòrgia + Guaiana Francesa + Guernsey + Ghana + Gibraltar + Grenlàndia + Gàmbia + Guinea + Guadeloupe + Guinea Equatorial + Grècia + Illes Geòrgia del Sud i Sandwich del Sud + Guatemala + Guam + Guinea Bissau + Guyana + Hong Kong (RAE Xina) + Hong Kong + Illa Heard i Illes McDonald + Hondures + Croàcia + Haití + Hongria + Illes Canàries + Indonèsia + Irlanda + Israel + Illa de Man + Índia + Territori Britànic de l'Oceà Índic + Iraq + Iran + Islàndia + Itàlia + Jersey + Jamaica + Jordània + Japó + Kenya + Kirguizistan + Cambodja + Kiribati + Comores + Saint Christopher i Nevis + Corea del Nord + Corea del Sud + Kuwait + Illes Caiman + Kazakhstan + Laos + Líban + Saint Lucia + Liechtenstein + Sri Lanka + Libèria + Lesotho + Lituània + Luxemburg + Letònia + Líbia + Marroc + Mònaco + Moldàvia + Montenegro + Saint Martin + Madagascar + Illes Marshall + Macedònia + Macedònia (Exrepública Iugoslava de Macedònia) + Mali + Myanmar (Birmània) + Mongòlia + Macau (RAE Xina) + Macau + Illes Mariannes del Nord + Martinica + Mauritània + Montserrat + Malta + Maurici + Maldives + Malawi + Mèxic + Malàisia + Moçambic + Namíbia + Nova Caledònia + Níger + Norfolk + Nigèria + Nicaragua + Països Baixos + Noruega + Nepal + Nauru + Niue + Nova Zelanda + Oman + Panamà + Perú + Polinèsia Francesa + Papua Nova Guinea + Filipines + Pakistan + Polònia + Saint-Pierre-et-Miquelon + Illes Pitcairn + Puerto Rico + Palestina + Palestina + Portugal + Palau + Paraguai + Qatar + Territoris allunyats d'Oceania + Illa de la Reunió + Romania + Sèrbia + Rússia + Rwanda + Aràbia Saudita + Illes Salomó + Seychelles + Sudan + Suècia + Singapur + Saint Helena + Eslovènia + Svalbard i Jan Mayen + Eslovàquia + Sierra Leone + San Marino + Senegal + Somàlia + Surinam + Sudan del Sud + São Tomé i Príncipe + El Salvador + Sint Maarten + Síria + Swazilàndia + Tristão da Cunha + Illes Turks i Caicos + Txad + Territoris Francesos del Sud + Togo + Tailàndia + Tadjikistan + Tokelau + Timor Oriental + Turkmenistan + Tunísia + Tonga + Turquia + Trinitat i Tobago + Tuvalu + Taiwan + Tanzània + Ucraïna + Uganda + Illes Perifèriques Menors dels EUA + Estats Units + EUA + Uruguai + Uzbekistan + Ciutat del Vaticà + Saint Vincent i les Grenadines + Veneçuela + Illes Verges Britàniques + Illes Verges Nord-americanes + Vietnam + Vanuatu + Wallis i Futuna + Samoa + Kosovo + Iemen + Mayotte + República de Sud-àfrica + Zàmbia + Zimbabwe + Regió desconeguda + + + ortografia alemanya tradicional + ortofrafia resiana estandarditzada + ortografia alemanya de 1996 + francès mitjà tardà fins el 1606 + francès modern primerenc + acadèmica + romanització ALA/LC, edició de 1997 + dialecte aluku + armeni oriental + armeni occidental + alfabet llatí turc unificat + bauddha + basc biscaí + dialecte de San Giorgio/Bila + Boontling + alfabet fonètic internacional + sistema fonètic UPA + sistema X-SAMPA + romanització Hepburn + høgnorsk + itihasa + jauer + jyupting + ortografia comuna + laukika + dialecte Lipovaz del resià + luna 1918 + monotònic + dialecte ndyuka + dialecte de Natisone + dialecte de Gniva/Njiva + dialecte d'Oseacco/Osojane + dialecte pamaka + ortografia russa 1708-1917 + romanització Pinyin + politònic + ordinador + alt engiadinès + ortografia revisada + resià + interomanx + saho + anglès estàndard d'Escòcia + scouse + dialecte de Stolvizza/Solbica + surmiran + sobreselvà + sotaselvà + ortografia taraskievica + ortografia unificada + ortografia revisada unificada + ulster + vèdic + valencià + baix engiadinès + romanització Wade-Giles + + + calendari + Ordenació sense tenir en compte els símbols + Ordenació per accents invertida + Ordenació per majúscules i minúscules + Ordenació per detecció de majúscules + Ordenació per kana + ordenació + Ordenació normalitzada + Ordenació numèrica + Força de l'ordenació + moneda + xifres + Zona horària + Variant local + Ordena com a símbols + ús privat + + + dígits àrabs i índics + dígits àrabs i índics ampliats + numerals armenis + numerals armenis en minúscules + dígits balinesos + dígits bengalins + ordre del xinès tradicional - Big5 + calendari budista + dígits txams + calendari xinès + calendari copte + dígits devanagaris + ordenació de diccionari + ordenació Unicode predeterminada + normes europees d'ordenació + numerals etiòpics + calendari etíop + calendari etíop amete-alem + Numerals financers + dígits d'amplada completa + ordre del xinès simplificat - GB2312 + numerals georgians + calendari gregorià + numerals grecs + numerals grecs en minúscules + dígits gujarati + dígits gurmukhi + numerals decimals xinesos + numerals xinesos simplificats + numerals financers xinesos simplificats + numerals xinesos tradicionals + numerals financers xinesos tradicionals + numerals hebreus + calendari hebreu + Ordena-ho tot + calendari hindú + calendari musulmà + calendari civil islàmic + calendari japonès + dígits javanesos + numerals japonesos + numerals financers japonesos + dígits kayah + dígits khmer + dígits kannada + dígits tai tham hora + dígits tai tham tham + dígits lao + dígits aràbics + dígits lepcha + dígits limbu + Mostra primer les minúscules + dígits malaiàlam + dígits mongols + dígits meitei mayek + dígits de Myanmar + dígits shan de Myanmar + Dígits natius + dígits n'ko + Ordena els accents de manera normal + Ordena per tipus de lletra normal + Ordena sense distingir majúscules i minúscules + Ordena els caràcters kana de manera independent + Ordena sense normalització + Ordena els dígits individualment + Ordena els símbols + dígits ol chiki + dígits oriya + calendari persa + ordre de la guia telefònica + Ordenació fonètica + ordre pinyin + Ordena només les lletres de base + Ordena per accents/majúscules/amplada/kana + ordenació reformada + calendari de la República de Xina + numerals romans + numerals romans en minúscules + dígits saurashtra + cerca de propòsit general + cerca per consonant inicial del hangul + Ordena els accents + Ordena sense tenir en compte els símbols + ordenació estàndard + ordre dels traços + dígits sudanesos + dígits tai lue nous + numerals tamils tradicionals + dígits tamils + dígits telugu + Ordena per accent/majúscules/amplada + dígits thai + dígits tibetans + ordre tradicional + Numerals tradicionals + ordenació per quantitat de traços radicals + Ordena amb majúscules primer + dígits vai + Ordena amb ordre invers dels accents + Ordena amb detecció de majúscules i minúscules + Ordena els caràcters kana de manera diferent + Ordena per caràcters Unicode normalitzats + Ordena els dígits numèricament + + + BGN + Numèric + To + UNGEGN + Accents + Amplada completa + Amplada mitjana + Jamo + Pinyin + Publicació + + + mètric + anglosaxó + imperial + + + Idioma: {0} + Escriptura: {0} + Regió: {0} + + + + [· a à b c ç d e é è f g h i í ï j k l m n o ó ò p q r s t u ú ü v w x y z] + [á ă â å ä ã ā æ ĕ ê ë ē ì ĭ î ī ŀ ñ º ŏ ô ö ø ō œ ù ŭ û ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ¡ ? ¿ . … ' ‘ ’ " “ ” « » ( ) \[ \] § @ * / \\ \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0}… + … {0} + {0}… {1} + ? + + + + + « + » + + + + + + + eB + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + L + d/M + E, d/M + LLL + d MMM + E d MMM + y G + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + + EEEE, dd MMMM UU + + + + + d MMMM U + + + + + d MMM U + + + + + d/M/y + + + + + + + + + EEEE d MMMM 'de' y G + + + + + d MMMM 'de' y G + + + + + dd/MM/y G + + + + + dd/MM/yy GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + y G + LLL y G + d MMM y G + E, d MMM, y G + LLLL 'de' y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y G + y G + M/y G + d/M/y G + E, d.M.y G + LLL y G + d MMM y G + E, d MMM, y G + LLLL 'de' y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + H-H + + + h:mm a -h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + H-H v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + y-y G + + + MM/y - MM/y GGGG + MM/y - MM/y GGGG + + + dd/MM/y - dd/MM/y GGGG + dd/MM/y - dd/MM/y GGGG + dd/MM/y - dd/MM/y GGGG + + + E dd/MM/y - E dd/MM/y GGGG + E dd/MM/y - E dd/MM/y GGGG + E dd/MM/y - E dd/MM/y GGGG + + + MMM-MMM 'de' y G + MMM 'de' y - MMM 'de' y G + + + d-d MMM 'de' y G + d MMM - d MMM 'de' y G + d MMM 'de' y - d MMM 'de' y G + + + E d MMM - E d MMM 'de' y G + E d MMM - E d MMM 'de' y G + E d MMM 'de' y - E d MMM 'de' y G + + + MMMM-MMMM 'de' y G + MMMM 'de' y - MMMM 'de' y G + + + + + + + + + gen. + feb. + març + abr. + maig + juny + jul. + ag. + set. + oct. + nov. + des. + + + GN + FB + + AB + MG + JN + JL + AG + ST + OC + NV + DS + + + gener + febrer + març + abril + maig + juny + juliol + agost + setembre + octubre + novembre + desembre + + + + + gen. + feb. + març + abr. + maig + juny + jul. + ag. + set. + oct. + nov. + des. + + + GN + FB + + AB + MG + JN + JL + AG + ST + OC + NV + DS + + + gener + febrer + març + abril + maig + juny + juliol + agost + setembre + octubre + novembre + desembre + + + + + + + dg. + dl. + dt. + dc. + dj. + dv. + ds. + + + dg + dl + dt + dc + dj + dv + ds + + + dg. + dl. + dt. + dc. + dj. + dv. + ds. + + + diumenge + dilluns + dimarts + dimecres + dijous + divendres + dissabte + + + + + dg. + dl. + dt. + dc. + dj. + dv. + ds. + + + dg + dl + dt + dc + dj + dv + ds + + + dg. + dl. + dm. + dc. + dj. + dv. + ds. + + + diumenge + dilluns + dimarts + dimecres + dijous + divendres + dissabte + + + + + + + 1T + 2T + 3T + 4T + + + 1 + 2 + 3 + 4 + + + 1r trimestre + 2n trimestre + 3r trimestre + 4t trimestre + + + + + 1T + 2T + 3T + 4T + + + 1 + 2 + 3 + 4 + + + 1r trimestre + 2n trimestre + 3r trimestre + 4t trimestre + + + + + + + a.m. + p.m. + + + a. m. + p. m. + + + + + + abans de Crist + a. de la n. e. + després de Crist + de la n. e. + + + aC + a. de la n. e. + dC + de la n.e. + + + aC + dC + + + + + + EEEE, d MMMM 'de' y + + + + + d MMMM 'de' y + + + + + dd/MM/y + + + + + d/M/yy + + + + + + + H:mm:ss zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E H:mm + E h:mm:ss a + E H:mm:ss + y G + LLL y G + d MMM y G + E, d MMM, y G + LLLL 'de' y G + h a + H + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + LLL y + d MMM y + E, d MMM, y + LLLL 'de' y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + H-H + + + h:mm a -h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm–h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + H-H v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + LLL-LLL + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + LLL-LLL 'de' y + LLL 'de' y - LLL 'de' y + + + d-d MMM 'de' y + d MMM - d MMM 'de' y + d MMM 'de' y - d MMM 'de' y + + + E d - E d MMM 'de' y + E d MMM - E d MMM 'de' y + E d MMM 'de' y - E d MMM 'de' y + + + LLLL-LLLL 'de' y + LLLL 'de' y - LLLL 'de' y + + + + + + + + + EEEE d MMMM 'de' y G + + + + + d MMMM 'de' y G + + + + + dd/MM/y G + + + + + dd/MM/y GGGGG + + + + + + + + era + + + any + l'any passat + enguany + l'any que ve + + D'aquí a {0} any + D'aquí a {0} anys + + + Fa {0} any + Fa {0} anys + + + + mes + el mes passat + aquest mes + el mes que ve + + D'aquí a {0} mes + D'aquí a {0} mesos + + + Fa {0} mes + Fa {0} mesos + + + + setmana + la setmana passada + aquesta setmana + la setmana que ve + + D'aquí a {0} setmana + D'aquí a {0} setmanes + + + Fa {0} setmana + Fa {0} setmanes + + + + dia + abans-d'ahir + ahir + avui + demà + demà passat + + D'aquí a {0} dia + D'aquí a {0} dies + + + Fa {0} dia + Fa {0} dies + + + + dia de la setmana + + + diumenge passat + aquest diumenge + diumenge que ve + + + dilluns passat + aquest dilluns + dilluns que ve + + + dimarts passat + aquest dimarts + dimarts que ve + + + dimecres passat + aquest dimecres + dimecres que ve + + + dijous passat + aquest dijous + dijous que ve + + + divendres passat + aquest divendres + divendres que ve + + + dissabte passat + aquest dissabte + dissabte que ve + + + a. m./p. m. + + + hora + + D'aquí a {0} hora + D'aquí a {0} hores + + + Fa {0} hora + Fa {0} hores + + + + minut + + D'aquí a {0} minut + D'aquí a {0} minuts + + + Fa {0} minut + Fa {0} minuts + + + + segon + ara + + D'aquí a {0} segon + D'aquí a {0} segons + + + Fa {0} segon + Fa {0} segons + + + + zona + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Hora de: {0} + Horari d'estiu, {0} + Hora estàndard, {0} + {1} ({0}) + + Ciutat desconeguda + + + Dubayy + + + Kābul + + + Tirana + + + Erevan + + + Dumont d’Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Viena + + + Maarianhamina + + + Bakú + + + Dacca + + + Brussel·les + + + Saint Barthélemy + + + Bermudes + + + Eirunepé + + + Río Branco + + + Cuiabá + + + Santarém + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Thimbu + + + Atikokan + + + Blanc Sablon + + + Saint John’s + + + Zuric + + + Illa de Pasqua + + + Kaixgar + + + Urumchi + + + Xangai + + + Bogotà + + + Cap Verd + + + Curaçao + + + Nicòsia + + + Praga + + + Berlín + + + Alger + + + Galápagos + + + Caire, el + + + Al-aaiun + + + Asmara + + + Illes Canàries + + + Addis Abeba + + + Hèlsinki + + + Chuuk + + + Pohnpei + + + Illes Fèroe + + + París + + + + Hora d'estiu britànica + + Londres + + + Caiena + + + Nuuk + + + Scoresbysund + + + Guadalupe + + + Atenes + + + Geòrgia del Sud + + + Makasar + + + Jaipur + + + + Horari d'estiu irlandès + + Dublín + + + Man + + + Calcuta + + + Bagdad + + + Teheran + + + Roma + + + Tòquio + + + Bixkek + + + Saint Kitts + + + Seül + + + Caiman + + + Aqtaū + + + Aķtöbe + + + Kizilordà + + + Saint Lucia + + + Vílnius + + + Luxemburg + + + Trípoli + + + Mònaco + + + Čojbalsan + + + Martinica + + + Maurici + + + Mazatlán + + + bahía de Banderas + + + Ciutat de Mèxic + + + Mérida + + + Nouméa + + + Katmandú + + + Masqat + + + Panamà + + + Tahití + + + Marqueses + + + Varsòvia + + + Açores + + + Lisboa + + + Asunción + + + Reunió + + + Bucarest + + + Belgrad + + + Moscou + + + Jekaterinburg + + + Krasnoiarsk + + + Jakutsk + + + Ust’-Nera + + + Kamtxatka + + + Anadyr' + + + Al-Riyād + + + Khartum + + + Estocolm + + + Singapur + + + Saint Helena + + + Muqdiisho + + + São Tomé + + + Lower Prince's Quarter + + + Damasc + + + Kíev + + + Zaporójjia + + + Beulah, Dakota del Nord + + + New Salem, Dakota del Nord + + + Center, Dakota del Nord + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Nova York + + + Samarcanda + + + Taixkent + + + Vaticà + + + Saint Vincent + + + Saint Thomas + + + Ho Chi Minh + + + + Hora de l'Afganistan + + + + + Hora de l'Àfrica Central + + + + + Hora de l'Àfrica Oriental + + + + + Hora estàndard del sud de l'Àfrica + + + + + Hora de l'Àfrica Occidental + Hora estàndard de l'Àfrica Occidental + Hora d'estiu de l'Àfrica Occidental + + + + + Hora d'Alaska + Hora estàndard d'Alaska + Hora d'estiu d'Alaska + + + + + Hora de l'Amazones + Hora estàndard de l'Amazones + Hora d'estiu de l'Amazones + + + + + Hora central d'Amèrica del Nord + Hora estàndard central d'Amèrica del Nord + Hora d'estiu central d'Amèrica del Nord + + + + + Hora oriental d'Amèrica del Nord + Hora estàndard oriental d'Amèrica del Nord + Hora d'estiu oriental d'Amèrica del Nord + + + + + Hora de muntanya d'Amèrica del Nord + Hora estàndard de muntanya d'Amèrica del Nord + Hora d'estiu de muntanya d'Amèrica del Nord + + + + + Hora del Pacífic + Hora estàndard del Pacífic + Hora d'estiu del Pacífic + + + + + Hora d'Anadyr + Hora estàndard d'Anadyr + Horari d'estiu d'Anadyr + + + + + Hora àrab + Hora estàndard àrab + Hora d'estiu àrab + + + + + Hora de l'Argentina + Hora estàndard de l'Argentina + Hora d'estiu de l'Argentina + + + + + Hora de l'oest de l'Argentina + Hora estàndard de l'oest de l'Argentina + Hora d'estiu de l'oest de l'Argentina + + + + + Hora d'Armènia + Hora estàndard d'Armènia + Hora d'estiu d'Armènia + + + + + Hora de l'Atlàntic + Hora estàndard de l'Atlàntic + Hora d'estiu de l'Atlàntic + + + + + Hora d'Austràlia Central + Hora estàndard d'Austràlia Central + Hora d'estiu d'Austràlia Central + + + + + Hora d'Austràlia centre-occidental + Hora estàndard d'Austràlia centre-occidental + Hora d'estiu d'Austràlia centre-occidental + + + + + Hora d'Austràlia Oriental + Hora estàndard d'Austràlia Oriental + Hora d'estiu d'Austràlia Oriental + + + + + Hora d'Austràlia Occidental + Hora estàndard d'Austràlia Occidental + Hora d'estiu d'Austràlia Occidental + + + + + Hora d'Azerbaidjan + Hora estàndard d'Azerbaidjan + Hora d'estiu d'Azerbaidjan + + + + + Hora de les Açores + Hora estàndard de les Açores + Hora d'estiu de les Açores + + + + + Hora de Bangla Desh + Hora estàndard de Bangla Desh + Hora d'estiu de Bangla Desh + + + + + Hora de Bhutan + + + + + Hora de Bolívia + + + + + Hora de Brasília + Hora estàndard de Brasília + Hora d'estiu de Brasília + + + + + Hora de Brunei Darussalam + + + + + Hora de Cap Verd + Hora estàndard de Cap Verd + Hora d'estiu de Cap Verd + + + + + Hora de Chamorro + + + + + Hora de Chatham + Hora estàndard de Chatham + Hora d'estiu de Chatham + + + + + Hora de Xile + Hora estàndard de Xile + Hora d'estiu de Xile + + + + + Hora de la Xina + Hora estàndard de la Xina + Hora d'estiu de la Xina + + + + + Hora de Choibalsan + Hora estàndard de Choibalsan + Hora d'estiu de Choibalsan + + + + + Hora de Kiritimati + + + + + Hora de les illes Cocos + + + + + Hora de Colòmbia + Hora estàndard de Colòmbia + Hora d'estiu de Colòmbia + + + + + Hora de les illes Cook + Hora estàndard de les illes Cook + Hora de mig estiu de les illes Cook + + + + + Hora de Cuba + Hora estàndard de Cuba + Hora d'estiu de Cuba + + + + + Hora de Davis + + + + + Hora de Dumont-d'Urville + + + + + Hora de Timor Oriental + + + + + Hora de l'illa de Pasqua + Hora estàndard de l'illa de Pasqua + Hora d'estiu de l'illa de Pasqua + + + + + Hora de l'Equador + + + + + Hora del Centre d'Europa + Hora estàndard del Centre d'Europa + Hora d'estiu del Centre d'Europa + + + CET + CET + CEST + + + + + Hora de l'Est d'Europa + Hora estàndard de l'Est d'Europa + Hora d'estiu de l'Est d'Europa + + + EET + EET + EEST + + + + + Hora de l'Oest d'Europa + Hora estàndard de l'Oest d'Europa + Hora d'estiu de l'Oest d'Europa + + + WET + WET + WEST + + + + + Hora de les illes Malvines + Hora estàndard de les illes Malvines + Hora d'estiu de les illes Malvines + + + + + Hora de Fiji + Hora estàndard de Fiji + Hora d'estiu de Fiji + + + + + Hora d'estiu de la Guaiana Francesa + + + + + Hora d'Antàrtida i França del Sud + + + + + Hora de Galápagos + + + + + Hora de Gambier + + + + + Hora de Geòrgia + Hora estàndard de Geòrgia + Hora d'estiu de Geòrgia + + + + + Hora de les illes Gilbert + + + + + Hora del Meridià de Greenwich + + + GMT + + + + + Hora de l'Est de Grenlàndia + Hora estàndard de l'Est de Grenlàndia + Hora d'estiu de l'Est de Grenlàndia + + + + + Hora de l'Oest de Grenlàndia + Hora estàndard de l'Oest de Grenlàndia + Hora d'estiu de l'Oest de Grenlàndia + + + + + Hora del Golf + + + + + Hora de Guyana + + + + + Hora de Hawaii-Aleutianes + Hora estàndard de Hawaii-Aleutianes + Hora d'estiu de Hawaii-Aleutianes + + + + + Hora de Hong Kong + Hora estàndard de Hong Kong + Hora d'estiu de Hong Kong + + + + + Hora de Hovd + Hora estàndard de Hovd + Hora d'estiu de Hovd + + + + + Hora estàndard de l'Índia + + + + + Hora de l'oceà Índic + + + + + Hora d'Indoxina + + + + + Hora central d'Indonèsia + + + + + Hora de l'est d'Indonèsia + + + + + Hora de l'oest d'Indonèsia + + + + + Hora d'Iran + Hora estàndard d'Iran + Hora d'estiu d'Iran + + + + + Hora d'Irkutsk + Hora estàndard d'Irkutsk + Hora d'estiu d'Irkutsk + + + + + Hora d'Israel + Hora estàndard d'Israel + Hora d'estiu d'Israel + + + + + Hora del Japó + Hora estàndard del Japó + Hora d'estiu del Japó + + + + + Hora de Kamtxatka + Hora estàndard de Petropavlovsk de Kamtxatka + Horari d'estiu de Petropavlovsk de Kamtxatka + + + + + Hora de l'est del Kazakhstan + + + + + Hora de l'oest del Kazakhstan + + + + + Hora de Corea + Hora estàndard de Corea + Hora d'estiu de Corea + + + + + Hora de Kosrae + + + + + Hora de Krasnoiarsk + Hora estàndard de Krasnoiarsk + Hora d'estiu de Krasnoiarsk + + + + + Hora del Kirguizistan + + + + + Hora de Line Islands + + + + + Hora de Lord Howe + Hora estàndard de Lord Howe + Horari d'estiu de Lord Howe + + + + + Hora de Macquarie + + + + + Hora de Magadan + Hora estàndard de Magadan + Hora d'estiu de Magadan + + + + + Hora de Malàisia + + + + + Hora de les Maldives + + + + + Hora de les Marqueses + + + + + Hora de les illes Marshall + + + + + Hora de Maurici + Hora estàndard de Maurici + Hora d'estiu de Maurici + + + + + Hora de Mawson + + + + + Hora d'Ulan Bator + Hora estàndard d'Ulan Bator + Hora d'estiu d'Ulan Bator + + + + + Hora de Moscou + Hora estàndard de Moscou + Hora d'estiu de Moscou + + + + + Hora de Myanmar + + + + + Hora de Nauru + + + + + Hora del Nepal + + + + + Hora de Nova Caledònia + Hora estàndard de Nova Caledònia + Hora d'estiu de Nova Caledònia + + + + + Hora de Nova Zelanda + Hora estàndard de Nova Zelanda + Hora d'estiu de Nova Zelanda + + + + + Hora de Terranova + Hora estàndard de Terranova + Hora d'estiu de Terranova + + + + + Hora de Niue + + + + + Hora de les illes Norfolk + + + + + Hora de Fernando de Noronha + Hora estàndard de Fernando de Noronha + Hora d'estiu de Fernando de Noronha + + + + + Hora de Novosibirsk + Hora estàndard de Novosibirsk + Hora d'estiu de Novosibirsk + + + + + Hora d'Omsk + Hora estàndard d'Omsk + Hora d'estiu d'Omsk + + + + + Hora del Pakistan + Hora estàndard del Pakistan + Hora d'estiu del Pakistan + + + + + Hora de Palau + + + + + Hora de Papua Nova Guinea + + + + + Hora del Paraguai + Hora estàndard del Paraguai + Hora d'estiu del Paraguai + + + + + Hora del Perú + Hora estàndard del Perú + Hora d'estiu del Perú + + + + + Hora de Filipines + Hora estàndard de Filipines + Hora d'estiu de Filipines + + + + + Hora de les illes Phoenix + + + + + Hora de Saint-Pierre i Miquelon + Hora estàndard de Saint-Pierre i Miquelon + Hora d'estiu de Saint-Pierre i Miquelon + + + + + Hora de Pitcairn + + + + + Hora de Ponape + + + + + Hora de Reunió + + + + + Hora de Rothera + + + + + Hora de Sakhalin + Hora estàndard de Sakhalin + Hora d'estiu de Sakhalin + + + + + Hora de Samara + Hora estàndard de Samara + Hora d'estiu de Samara + + + + + Hora de Samoa + Hora estàndard de Samoa + Hora d'estiu de Samoa + + + + + Hora de les Seychelles + + + + + Hora de Singapur + + + + + Hora de Salomó + + + + + Hora de Geòrgia del Sud + + + + + Hora de Surinam + + + + + Hora de Syowa + + + + + Hora de Tahití + + + + + Hora de Taipei + Hora estàndard de Taipei + Hora d'estiu de Taipei + + + + + Hora del Tadjikistan + + + + + Hora de Tokelau + + + + + Hora de Tonga + Hora estàndard de Tonga + Hora d'estiu de Tonga + + + + + Hora de Chuuk + + + + + Hora del Turkmenistan + Hora estàndard del Turkmenistan + Hora d'estiu del Turkmenistan + + + + + Hora de Tuvalu + + + + + Hora de l'Uruguai + Hora estàndard de l'Uruguai + Hora d'estiu de l'Uruguai + + + + + Hora de l'Uzbekistan + Hora estàndard de l'Uzbekistan + Hora d'estiu de l'Uzbekistan + + + + + Hora de Vanatu + Hora estàndard de Vanatu + Hora d'estiu de Vanatu + + + + + Hora de Veneçuela + + + + + Hora de Vladivostok + Hora estàndard de Vladivostok + Hora d'estiu de Vladivostok + + + + + Hora de Volgograd + Hora estàndard de Volgograd + Hora d'estiu de Volgograd + + + + + Hora de Vostok + + + + + Hora de Wake + + + + + Hora de Wallis i Futuna + + + + + Hora de Iakutsk + Hora estàndard de Iakutsk + Hora d'estiu de Iakutsk + + + + + Hora d'Ekaterinburg + Hora estàndard d'Ekaterinburg + Hora d'estiu d'Ekaterinburg + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 miler + 0 milers + 00 milers + 00 milers + 000 milers + 000 milers + 0 milió + 0 milions + 00 milions + 00 milions + 000 milions + 000 milions + 0 miler de milions + 0 milers de milions + 00 milers de milions + 00 milers de milions + 000 milers de milions + 000 milers de milions + 0 bilió + 0 bilions + 00 bilions + 00 bilions + 000 bilions + 000 bilions + + + + + 0m + 0m + 00m + 00m + 000m + 000m + 0M + 0M + 00 M + 00 M + 000 M + 000 M + 0000 M + 0000 M + 00mM + 00mM + 000mM + 000mM + 0B + 0B + 00 B + 00 B + 000 B + 000 B + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + + + + pesseta andorrana + pesseta andorrana + pessetes andorranes + + + dirhem dels Emirats Àrabs Units + dirhem dels Emirats Àrabs Units + dirhems dels Emirats Àrabs Units + + + afgani afganès (1927–2002) + afgani afganès (1927–2002) + afganis afganesos (1927–2002) + + + afgani afganès + afgani afganès + afganis afganesos + + + lek albanès (1946–1965) + lek albanès (1946–1965) + lekë albanesos (1946–1965) + + + lek albanès + lek albanès + lekë albanesos + + + dram armeni + dram armeni + drams armenis + + + florí de les Antilles Neerlandeses + florí de les Antilles Neerlandeses + florins de les Antilles Neerlandeses + + + kwanza angolès + kwanza angolès + kwanzas angolesos + + + kwanza angolès (1977–1991) + kwanza angolès (1977–1991) + kwanzas angolesos (1977–1991) + + + nou kwanza angolès (1990–2000) + nou kwanza angolès (1990–2000) + nous kwanzas angolesos (1990–2000) + + + kwanza angolès reajustat (1995–1999) + kwanza angolès reajustat (1995–1999) + kwanzas angolesos (1995–1999) + + + austral argentí + austral argentí + australs argentins + + + peso ley argentí (1970–1983) + peso ley argentí (1970–1983) + pesos ley argentins (1970–1983) + + + peso argentí (1981–1970) + peso argentí moneda nacional + pesos argentins moneda nacional + + + peso argentí (1983–1985) + peso argentí (1983–1985) + pesos argentins (1983–1985) + + + peso argentí + peso argentí + pesos argentins + + + xíling austríac + xíling austríac + xílings austríacs + + + dòlar australià + dòlar australià + dòlars australians + AU$ + + + florí d'Aruba + florí d'Aruba + florins d'Aruba + + + manat azerbaidjanès (1993–2006) + manat azerbaidjanès (1993–2006) + manats azerbaidjanesos (1993–2006) + + + manat azerbaidjanès + manat azerbaidjanès + manats azerbaidjanesos + + + dinar de Bòsnia i Hercegovina (1992–1994) + dinar de Bòsnia i Hercegovina (1992–1994) + dinars de Bòsnia i Hercegovina (1992–1994) + + + marc convertible de Bòsnia i Hercegovina + marc convertible de Bòsnia i Hercegovina + marcs convertibles de Bòsnia i Hercegovina + + + nou dinar de Bòsnia i Hercegovina (1994–1997) + nou dinar de Bòsnia i Hercegovina (1994–1997) + nous dinars de Bòsnia i Hercegovina (1994–1997) + + + dòlar de Barbados + dòlar de Barbados + dòlars de Barbados + + + taka de Bangla Desh + taka de Bangla Desh + taka de Bangla Desh + + + franc belga (convertible) + franc belga (convertible) + francs belgues (convertibles) + + + franc belga + franc belga + francs belgues + + + franc belga (financer) + franc belga (financer) + francs belgues (financers) + + + lev fort búlgar + lev fort búlgar + leva forts búlgars + + + lev socialista búlgar + lev socialista búlgar + leva socialistes búlgars + + + lev búlgar + lev búlgar + leva búlgars + + + lev búlgar (1879–1952) + lev búlgar (1879–1952) + leva búlgars (1879–1952) + + + dinar de Bahrain + dinar de Bahrain + dinars de Bahrain + + + franc de Burundi + franc de Burundi + francs de Burundi + + + dòlar de les Bermudes + dòlar de les Bermudes + dòlars de les Bermudes + + + dòlar de Brunei + dòlar de Brunei + dòlars de Brunei + + + boliviano bolivià + boliviano bolivià + bolivianos bolivians + + + boliviano bolivià (1863–1963) + boliviano bolivià (1863–1963) + bolivianos bolivians (1863–1963) + + + peso bolivià + peso bolivià + pesos bolivians + + + MVDOL bolivià + MVDOL bolivià + MVDOL bolivians + + + cruzeiro novo brasiler (1967–1986) + cruzeiro novo brasiler (1967–1986) + cruzeiros novos brasilers (1967–1986) + + + cruzado brasiler + cruzado brasiler + cruzados brasilers + + + cruzeiro brasiler (1990–1993) + cruzeiro brasiler (1990–1993) + cruzeiros brasilers (1990–1993) + + + real brasiler + real brasiler + reais brasilers + BRL + + + cruzado novo brasiler + cruzado novo brasiler + cruzados novos brasilers + + + cruzeiro brasiler + cruzeiro brasiler + cruzeiros brasilers + + + antic cruzeiro brasiler + antic cruzeiro brasiler + antics cruzeiros brasilers + + + dòlar de les Bahames + dòlar de les Bahames + dòlars de les Bahames + + + ngultrum de Bhutan + ngultrum de Bhutan + ngultrums de Bhutan + + + kyat birmà + kyat birmà + kyats birmans + + + pula de Botswana + pula de Botswana + pula de Botswana + + + nou ruble bielorús (1994–1999) + nou ruble bielorús (1994–1999) + nous rubles bielorussos (1994–1999) + + + ruble bielorús + ruble bielorús + rubles bielorussos + + + dòlar de Belize + dòlar de Belize + dòlars de Belize + + + dòlar canadenc + dòlar canadenc + dòlars canadencs + CA$ + + + franc congolès + franc congolès + francs congolesos + + + euro WIR + euro WIR + euros WIR + + + franc suís + franc suís + francs suïssos + + + franc WIR + franc WIR + francs WIR + + + escut xilè + escudo xilè + escudos xilens + + + unidad de fomento xilena + unidad de fomento xilena + unidades de fomento xilenes + + + peso xilè + peso xilè + pesos xilens + + + dòlar del Banc Popular Xinès + dòlars del Banc Popular Xinès + + + iuan xinès + iuan xinès + iuan xinesos + ¥ + + + peso colombià + peso colombià + pesos colombians + + + unidad de valor real colombiana + unidad de valor real colombiana + unidades de valor real colombianes + + + colón costa-riqueny + colón costa-riqueny + colones costa-riquenys + + + dinar serbi antic + dinar serbi antic + dinars serbis antics + + + corona forta txecoslovaca + corona forta txecoslovaca + corones fortes txecoslovaques + + + peso convertible cubà + peso convertible cubà + pesos convertibles cubans + + + peso cubà + peso cubà + pesos cubans + + + escut de Cap Verd + escut de Cap Verd + escuts de Cap Verd + + + lliura xipriota + lliura xipriota + lliures xipriotes + + + corona txeca + corona txeca + corones txeques + + + marc de l'Alemanya Oriental + marc de l'Alemanya Oriental + marcs de l'Alemanya Oriental + + + marc alemany + marc alemany + marcs alemanys + + + franc de Djibouti + franc de Djibouti + francs de Djibouti + + + corona danesa + corona danesa + corones daneses + + + peso dominicà + peso dominicà + pesos dominicans + + + dinar algerià + dinar algerià + dinars algerians + + + sucre equatorià + sucre equatorià + sucres equatorians + + + unidad de valor constante (UVC) equatoriana + unidad de valor constante (UVC) equatoriana + unidades de valor constante (UVC) equatorianes + + + corona estoniana + corona estoniana + corones estonianes + + + lliura egípcia + lliura egípcia + lliures egípcies + + + nakfa eritreu + nakfa eritreu + nakfes eritreus + + + pesseta espanyola (compte A) + pesseta espanyola (compte A) + pessetes espanyoles (compte A) + + + pesseta espanyola (compte convertible) + pesseta espanyola (compte convertible) + pessetes espanyoles (compte convertible) + + + ¤ #,##0.00 + pesseta espanyola + pesseta espanyola + pessetes espanyoles + + , + . + + + birr etíop + birr etíop + birrs etíops + + + euro + euro + euros + + + + marc finlandès + marc finlandès + marcs finlandesos + + + dòlar fijià + dòlar fijià + dòlars fijians + + + lliura de les illes Malvines + lliura de les illes Malvines + lliures de les illes Malvines + + + franc francès + franc francès + francs francesos + + + lliura esterlina britànica + lliura esterlina britànica + lliures esterlines britàniques + £ + + + cupó de lari georgià + cupó de lari georgià + cupons de lari georgians + + + lari georgià + lari georgià + laris georgians + + + cedi ghanès (1979–2007) + cedi ghanès (1979–2007) + cedis ghanesos (1979–2007) + + + cedi ghanès + cedi ghanès + cedis ghanesos + + + lliura de Gibraltar + lliura de Gibraltar + lliures de Gibraltar + + + dalasi gambià + dalasi gambià + dalasis gambians + + + franc guineà + franc guineà + francs guineans + + + syli guineà + syli guineà + sylis guineans + + + ekwele de Guinea Equatorial + ekwele de Guinea Equatorial + bipkwele de Guinea Equatorial + + + dracma grega + dracma grega + dracmes gregues + + + quetzal guatemalenc + quetzal guatemalenc + quetzals guatemalencs + + + escut de la Guinea Portuguesa + escut de la Guinea Portuguesa + escuts de la Guinea Portuguesa + + + peso de Guinea Bissau + peso de Guinea Bissau + pesos de Guinea Bissau + + + dòlar de Guyana + dòlar de Guyana + dòlars de Guyana + + + dòlar de Hong Kong + dòlar de Hong Kong + dòlars de Hong Kong + HK$ + + + lempira hondurenya + lempira hondurenya + lempires hondurenyes + + + dinar croat + dinar croat + dinars croats + + + kuna croata + kuna croata + kunes croates + + + gourde haitià + gourde haitià + gourdes haitians + + + fòrint hongarès + fòrint hongarès + fòrints hongaresos + + + rupia indonèsia + rupia indonèsia + rupies indonèsies + + + lliura irlandesa + lliura irlandesa + lliures irlandeses + + + lliura israeliana + lliura israeliana + lliures israelianes + + + xéquel israelià + xéquel israelià + xéquel israelià + + + nou xéquel israelià + nou xéquel israelià + nous xéquels israelians + + + + rupia índia + rupia índia + rupies índies + + + + dinar iraquià + dinar iraquià + dinars iraquians + + + rial iranià + rial iranià + rials iranians + + + corona islandesa antiga + corona islandesa antiga + corones islandeses antigues + + + corona islandesa + corona islandesa + corones islandeses + + + lira italiana + lira italiana + lires italianes + + + dòlar jamaicà + dòlar jamaicà + dòlars jamaicans + + + dinar jordà + dinar jordà + dinars jordans + + + ien japonès + ien japonès + iens japonesos + JP¥ + + + xíling kenyà + xíling kenyà + xílings kenyans + + + som kirguís + som kirguís + soms kirguisos + + + riel cambodjà + riel cambodjà + riels cambodjans + + + franc de les Comores + franc de les Comores + francs de les Comores + + + won nord-coreà + won nord-coreà + wons nord-coreans + + + hwan sud-coreà (1953–1962) + hwan sud-coreà + hwans sud-coreans + + + antic won sud-coreà + antic won sud-coreà + antics wons sud-coreans + + + won sud-coreà + won sud-coreà + wons sud-coreans + + + + dinar kuwaitià + dinar kuwaitià + dinars kuwaitians + + + dòlar de les illes Caiman + dòlar de les illes Caiman + dòlars de les illes Caiman + + + tenge kazakh + tenge kazakh + tenges kazakhs + + + kip laosià + kip laosià + kips laosians + + + lliura libanesa + lliura libanesa + lliures libaneses + + + rupia de Sri Lanka + rupia de Sri Lanka + rupies de Sri Lanka + + + dòlar liberià + dòlar liberià + dòlars liberians + + + loti de Lesotho + loti de Lesotho + maloti de Lesotho + + + litas lituà + litas lituà + litai lituans + + + talonas lituà + talonas lituà + talonai lituans + + + franc convertible luxemburguès + franc convertible luxemburguès + francs convertibles luxemburguesos + + + franc luxemburguès + franc luxemburguès + francs luxemburguesos + + + franc financer luxemburguès + franc financer luxemburguès + francs financers luxemburguesos + + + lats letó + lats letó + lati letons + + + ruble letó + ruble letó + rubles letons + + + dinar libi + dinar libi + dinars libis + + + dírham marroquí + dírham marroquí + dírhams marroquins + + + franc marroquí + franc marroquí + francs marroquins + + + franc monegasc + franc monegasc + francs monegascos + + + cupó moldau + cupó moldau + cupons moldaus + + + leu moldau + leu moldau + lei moldaus + + + ariary malgaix + ariary malgaix + ariarys malgaixos + + + franc malgaix + franc malgaix + francs malgaixos + + + denar macedoni + denar macedoni + denari macedonis + + + denar macedoni (1992–1993) + denar macedoni (1992–1993) + denari macedonis (1992–1993) + + + franc malià + franc malià + francs malians + + + kyat de Myanmar + kyat de Myanmar + kyats de Myanmar + + + tögrög mongol + tögrög mongol + tögrögs mongols + + + pataca de Macau + pataca de Macau + pataques de Macau + + + ouguiya maurità + ouguiya maurità + ouguiyas mauritans + + + lira maltesa + lira maltesa + lires malteses + + + lliura maltesa + lliura maltesa + lliures malteses + + + rupia de Maurici + rupia de Maurici + rupies de Maurici + + + rupia de les Maldives + rupia de les Maldives + rupies de les Maldives + + + kwacha malawià + kwacha malawià + kwachas malawians + + + peso mexicà + peso mexicà + pesos mexicans + MXN + + + peso de plata mexicà (1861–1992) + peso de plata mexicà (1861–1992) + pesos de plata mexicans (1861–1992) + + + unidad de inversión (UDI) mexicana + unidad de inversión (UDI) mexicana + unidades de inversión (UDI) mexicanes + + + ringgit de Malàisia + ringgit de Malàisia + ringgits de Malàisia + + + escut moçambiquès + escut moçambiquès + escuts moçambiquesos + + + antic metical moçambiquès + antic metical moçambiquès + antics meticals moçambiquesos + + + metical moçambiquès + metical moçambiquès + meticals moçambiquesos + + + dòlar namibià + dòlar namibià + dòlars namibians + + + naira nigerià + naira nigerià + naires nigerians + + + córdoba nicaragüenca + córdoba nicaragüenca + córdobas nicaragüenques + + + córdoba oro nicaragüenca + córdoba oro nicaragüenca + córdobas oro nicaragüenques + + + florí neerlandès + florí neerlandès + florins neerlandesos + + + corona noruega + corona noruega + corones noruegues + + + rupia nepalesa + rupia nepalesa + rupies nepaleses + + + dòlar neozelandès + dòlar neozelandès + dòlars neozelandesos + NZ$ + + + rial omanita + rial omanita + rials omanites + + + balboa panameny + balboa panameny + balboes panamenys + + + inti peruà + inti peruà + intis peruans + + + nou sol peruà + nou sol peruà + nous sols peruans + + + sol peruà + sol peruà + sols peruans + + + kina de Papua Nova Guinea + kina de Papua Nova Guinea + kines de Papua Nova Guinea + + + peso filipí + peso filipí + pesos filipins + + + rupia pakistanesa + rupia pakistanesa + rupies pakistaneses + + + zloty polonès + zloty polonès + zlote polonesos + + + zloty polonès (1950–1995) + zloty polonès (1950–1995) + zlote polonesos (1950–1995) + + + escut portuguès + escut portuguès + escuts portuguesos + + + guaraní paraguaià + guaraní paraguaià + guaranís paraguaians + + + riyal de Qatar + riyal de Qatar + rials de Qatar + + + dòlar rhodesià + dòlar rhodesià + dòlars rhodesians + + + antic leu romanès + antic leu romanès + antics lei romanesos + + + leu romanès + leu romanès + lei romanesos + + + dinar serbi + dinar serbi + dinars serbis + + + ruble rus + ruble rus + rubles russos + + + ruble rus (1991–1998) + ruble rus (1991–1998) + rubles russos (1991–1998) + + + franc rwandès + franc rwandès + francs rwandesos + + + rial saudita + rial saudita + rials saudites + + + dòlar de les illes Salomó + dòlar de les illes Salomó + dòlars de les illes Salomó + + + rupia de les Seychelles + rupia de les Seychelles + rupies de les Seychelles + + + dinar sudanès + dinar sudanès + dinars sudanesos + + + lliura sudanesa + lliura sudanesa + lliures sudaneses + + + antiga lliura sudanesa + antiga lliura sudanesa + antigues lliures sudaneses + + + corona sueca + corona sueca + corones sueques + + + dòlar de Singapur + dòlar de Singapur + dòlars de Singapur + + + lliura de Santa Helena + lliura de Santa Helena + lliures de Santa Helena + + + tolar eslovè + tolar eslovè + tolars eslovens + + + corona eslovaca + corona eslovaca + corones eslovaques + + + leone de Sierra Leone + leone de Sierra Leone + leones de Sierra Leone + + + xíling somali + xíling somali + xílings somalis + + + dòlar de Surinam + dòlar de Surinam + dòlars de Surinam + + + florí de Surinam + florí de Surinam + florins de Surinam + + + lliura del Sudan del Sud + lliura del Sudan del Sud + lliures del Sudan del Sud + + + dobra de São Tomé i Príncipe + dobra de São Tomé i Príncipe + dobras de São Tomé i Príncipe + + + ruble soviètic + ruble soviètic + rubles soviètics + + + colón salvadorenc + colón salvadorenc + colones salvadorencs + + + lliura síria + lliura síria + lliures síries + + + lilangeni swazi + lilangeni swazi + emalangeni swazis + + + baht tailandès + baht tailandès + bahts tailandesos + ฿ + + + ruble tadjik + ruble tadjik + rubles tadjiks + + + somoni tadjik + somoni tadjik + somonis tadjiks + + + manat turcman (1993–2009) + manat turcman (1993–2009) + manats turcmans (1993–2009) + + + manat turcman + manat turcman + manats turcmans + + + dinar tunisià + dinar tunisià + dinars tunisians + + + pa‘anga tongà + pa‘anga tongà + pa‘angas tongans + + + escut de Timor + escut de Timor + escuts de Timor + + + lira turca (1922–2005) + lira turca (1922–2005) + lires turques (1922–2005) + + + lira turca + lira turca + lires turques + + + dòlar de Trinitat i Tobago + dòlar de Trinitat i Tobago + dòlars de Trinitat i Tobago + + + nou dòlar de Taiwan + nou dòlar de Taiwan + nous dòlars de Taiwan + NT$ + + + xíling tanzà + xíling tanzà + xílings tanzans + + + hrívnia ucraïnesa + hrívnia ucraïnesa + hrívnies ucraïneses + + + karbóvanets ucraïnès + karbóvanets ucraïnès + karbóvantsiv ucraïnesos + + + xíling ugandès (1966–1987) + xíling ugandès (1966–1987) + xílings ugandesos (1966–1987) + + + xíling ugandès + xíling ugandès + xílings ugandesos + + + dòlar dels Estats Units + dòlar dels Estats Units + dòlars dels Estats Units + $ + + + dòlar dels Estats Units (dia següent) + dòlar dels Estats Units (dia següent) + dòlars dels Estats Units (dia següent) + + + dòlar dels Estats Units (mateix dia) + dòlar dels Estats Units (mateix dia) + dòlars dels Estats Units (mateix dia) + + + peso uruguaià en unitats indexades + peso uruguaià en unitats indexades + pesos uruguaians en unitats indexades + + + peso uruguaià (1975–1993) + peso uruguaià (1975–1993) + pesos uruguaians (1975–1993) + + + peso uruguaià + peso uruguaià + pesos uruguaians + + + som uzbek + som uzbek + soms uzbeks + + + bolívar veneçolà (1871–2008) + bolívar veneçolà (1871–2008) + bolívars veneçolans (1871–2008) + + + bolívar veneçolà + bolívar veneçolà + bolívars veneçolans + + + dong vietnamita + dong vietnamita + dongs vietnamites + + + + dong vietnamita (1978–1985) + dong vietnamita (1978–1985) + dongs vietnamites (1978–1985) + + + vatu de Vanuatu + vatu de Vanuatu + vatus de Vanuatu + + + tala samoà + tala samoà + tales samoans + + + franc CFA BEAC + franc CFA BEAC + francs CFA BEAC + FCFA + + + plata + plata + plata + + + or + or + or + + + unitat compensatòria europea + unitat compensatòria europea + unitats compensatòries europees + + + unitat monetària europea + unitat monetària europea + unitats monetàries europees + + + unitat de compte europea (XBC) + unitat de compte europea (XBC) + unitats de compte europees (XBC) + + + unitat de compte europea (XBD) + unitat de compte europea (XBD) + unitats de compte europees (XBD) + + + dòlar del Carib Oriental + dòlar del Carib Oriental + dòlars del Carib Oriental + XCD + + + drets especials de gir + drets especials de gir + drets especials de gir + + + unitat de moneda europea + unitat de moneda europea + unitats de moneda europees + + + franc or francès + franc or francès + francs or francesos + + + franc UIC francès + franc UIC francès + francs UIC francesos + + + franc CFA BCEAO + franc CFA BCEAO + francs CFA BCEAO + XOF + + + pal·ladi + pal·ladi + pal·ladi + + + franc CFP + franc CFP + francs CFP + CFPF + + + platí + platí + platí + + + fons RINET + fons RINET + fons RINET + + + codi reservat per a proves + codi reservat per a proves + codi reservat per a proves + + + moneda desconeguda + (unitat monetària desconeguda) + (moneda desconeguda) + + + dinar iemenita + dinar iemenita + dinars iemenites + + + rial iemenita + rial iemenita + rials iemenites + + + dinar fort iugoslau + dinar fort iugoslau + dinars forts iugoslaus + + + nou dinar iugoslau + nou dinar iugoslau + nous dinars iugoslaus + + + dinar convertible iugoslau + dinar convertible iugoslau + dinars convertibles iugoslaus + + + dinar iugoslau reformat (1992–1993) + dinar reformat iugoslau + dinars reformats iugoslaus + + + rand sud-africà (financer) + rand sud-africà (financer) + rands sud-africans (financers) + + + rand sud-africà + rand sud-africà + rands sud-africans + + + kwacha zambià (1968–2012) + kwacha zambià (1968–2012) + kwacha zambians (1968–2012) + + + kwacha zambià + kwacha zambià + kwacha zambians + + + nou zaire zairès + nou zaire zairès + nous zaires zairesos + + + zaire zairès + zaire zairès + zaires zairesos + + + dòlar zimbabuès (1980–2008) + dòlar zimbabuès (1980–2008) + dòlars zimbabuesos (1980–2008) + + + dòlar zimbabuès (2009) + dòlar zimbabuès (2009) + dòlars zimbabuesos (2009) + + + dòlar zimbabuès (2008) + dòlar zimbabuès (2008) + dòlars zimbabuesos (2008) + + + + ≥ {0} + {0}-{1} + + + + + + {0} per {1} + + + {0} força G + {0} força G + + + {0} minut + {0} minuts + + + {0} segon + {0} segons + + + {0} grau + {0} graus + + + {0} acre + {0} acres + + + {0} hectàrea + {0} hectàrees + + + {0} peu quadrat + {0} peus quadrats + + + {0} quilòmetre quadrat + {0} quilòmetres quadrats + + + {0} metre quadrat + {0} metres quadrats + + + {0} milla quadrada + {0} milles quadrades + + + {0} dia + {0} dies + + + {0} hora + {0} hores + + + {0} mil·lisegon + {0} mil·lisegons + + + {0} minut + {0} minuts + + + {0} mes + {0} mesos + + + {0} segon + {0} segons + + + {0} setmana + {0} setmanes + + + {0} any + {0} anys + + + {0} centímetre + {0} centímetres + + + {0} peu + {0} peus + + + {0} polzada + {0} polzades + + + {0} quilòmetre + {0} quilòmetres + + + {0} any llum + {0} anys llum + + + {0} metre + {0} metres + + + {0} milla + {0} milles + + + {0} mil·límetre + {0} mil·límetres + + + {0} picòmetre + {0} picòmetres + + + {0} iarda + {0} iardes + + + {0} gram + {0} grams + + + {0} quilogram + {0} quilograms + + + {0} unça + {0} unces + + + {0} lliura + {0} lliures + + + {0} cavall de vapor + {0} cavalls de vapor + + + {0} kilowatt + {0} kilowatts + + + {0} watt + {0} watts + + + {0} hectopascal + {0} hectopascals + + + {0} polzada de mercuri + {0} polzades de mercuri + + + {0} mil·libar + {0} mil·libars + + + {0} quilòmetre per hora + {0} quilòmetres per hora + + + {0} metre per segon + {0} metres per segon + + + {0} milla per hora + {0} milles per hora + + + {0} grau Celsius + {0} graus Celsius + + + {0} grau Fahrenheit + {0} graus Fahrenheit + + + {0} quilòmetre cúbic + {0} quilòmetres cúbics + + + {0} milla cúbica + {0} milles cúbiques + + + {0} litre + {0} litres + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} ac. + {0} ac. + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dia + {0} dies + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mes + {0} mesos + + + {0} s + {0} s + + + {0} setm. + {0} setm. + + + {0} any + {0} anys + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} polz. + {0} polz. + + + {0} km + {0} km + + + {0} any ll. + {0} anys ll. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} CV + {0} CV + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ac. + {0}ac. + + + {0}ha + {0}ha + + + {0}ft² + {0}ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0}mi² + {0}mi² + + + {0} dies + {0} dies + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0} min + {0} min + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}s + {0}s + + + {0} any + {0} anys + + + {0}cm + {0}cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0}km + {0}km + + + {0} l. y. + {0} l. y. + + + {0}m + {0}m + + + {0} mi + {0} mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} yd + {0} yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0}CV + {0}CV + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0}mi/h + {0}mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0}l + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + + + sí:s + no:n + + + + diff --git a/library/Zend/Locale/Data/ca_AD.xml b/library/Zend/Locale/Data/ca_AD.xml new file mode 100755 index 000000000..38265b721 --- /dev/null +++ b/library/Zend/Locale/Data/ca_AD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ca_ES.xml b/library/Zend/Locale/Data/ca_ES.xml new file mode 100755 index 000000000..1e3d2af55 --- /dev/null +++ b/library/Zend/Locale/Data/ca_ES.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ca_ES_VALENCIA.xml b/library/Zend/Locale/Data/ca_ES_VALENCIA.xml new file mode 100755 index 000000000..7cb1d8c1b --- /dev/null +++ b/library/Zend/Locale/Data/ca_ES_VALENCIA.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ca_FR.xml b/library/Zend/Locale/Data/ca_FR.xml new file mode 100755 index 000000000..0576647f3 --- /dev/null +++ b/library/Zend/Locale/Data/ca_FR.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + F + + + + diff --git a/library/Zend/Locale/Data/ca_IT.xml b/library/Zend/Locale/Data/ca_IT.xml new file mode 100755 index 000000000..4840a7990 --- /dev/null +++ b/library/Zend/Locale/Data/ca_IT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/cgg.xml b/library/Zend/Locale/Data/cgg.xml new file mode 100755 index 000000000..f0ed03b5f --- /dev/null +++ b/library/Zend/Locale/Data/cgg.xml @@ -0,0 +1,751 @@ + + + + + + + + + + + + Orukani + Orumariki + Oruharabu + Oruberarusi + Oruburugariya + Orubengari + Rukiga + Oruceeki + Orugirimaani + Oruguriiki + Orungyereza + Orusupaani + Orupaasiya + Orufaransa + Oruhausa + Oruhindi + Oruhangare + Oruindonezia + Oruibo + Oruyitare + Orujapaani + Orujava + Orukambodiya + Orukoreya + Orumalesiya + Oruburuma + Orunepali + Orudaaki + Orupungyabi + Orupoori + Orupocugo + Oruromania + Orurrasha + Orunyarwanda + Orusomaari + Oruswidi + Orutamiri + Orutailandi + Orukuruki + Orukuraini + Oru-Urudu + Oruviyetinaamu + Oruyoruba + Oruchaina + Oruzuru + + + Andora + Amahanga ga Buharabu ageeteereine + Afuganistani + Angiguwa na Babuda + Angwira + Arubania + Arimeniya + Antiri za Hoorandi + Angora + Arigentina + Samowa ya Ameerika + Osituria + Ositureeriya + Aruba + Azabagyani + Boziniya na Hezegovina + Babadosi + Bangaradeshi + Bubirigi + Bokina Faso + Burugariya + Bahareni + Burundi + Benini + Berimuda + Burunei + Boriiviya + Buraziiri + Bahama + Butani + Botswana + Bararusi + Berize + Kanada + Demokoratika Ripaaburika ya Kongo + Eihanga rya Rwagati ya Afirika + Kongo + Swisi + Aivore Kositi + Ebizinga bya Kuuku + Chile + Kameruuni + China + Korombiya + Kositarika + Cuba + Ebizinga bya Kepuvade + Saipurasi + Ripaaburika ya Zeeki + Bugirimaani + Gyibuti + Deenimaaka + Dominika + Ripaaburika ya Dominica + Arigyeriya + Ikweda + Esitoniya + Misiri + Eriteriya + Sipeyini + Ethiyopiya + Bufini + Figyi + Ebizinga bya Faakilanda + Mikironesiya + Bufaransa + Gabooni + Bungyereza + Gurenada + Gyogiya + Guyana ya Bufaransa + Gana + Giburaata + Guriinirandi + Gambiya + Gine + Gwaderupe + Guni + Guriisi + Gwatemara + Gwamu + Ginebisau + Guyana + Hondurasi + Korasiya + Haiti + Hangare + Indoneeziya + Irerandi + Isirairi + Indiya + Iraaka + Iraani + Aisilandi + Itare + Gyamaika + Yorudaani + Gyapaani + Kenya + Kirigizistani + Kambodiya + Kiribati + Koromo + Senti Kittis na Nevisi + Koreya Amatemba + Koreya Amashuuma + Kuweiti + Ebizinga bya Kayimani + Kazakisitani + Layosi + Lebanoni + Senti Rusiya + Lishenteni + Siriranka + Liberiya + Lesotho + Lithuania + Lakizembaaga + Latviya + Libya + Morocco + Monaco + Moridova + Madagasika + Ebizinga bya Marshaa + Masedoonia + Mari + Myanamar + Mongoria + Ebizinga by'amatemba ga Mariana + Martinique + Mauriteeniya + Montserrati + Marita + Maurishiasi + Maridives + Marawi + Mexico + marayizia + Mozambique + Namibiya + Niukaredonia + Naigya + Ekizinga Norifoko + Naigyeriya + Nikaragwa + Hoorandi + Noorwe + Nepo + Nauru + Niue + Niuzirandi + Omaani + Panama + Peru + Polinesia ya Bufaransa + Papua + Firipino + Pakisitaani + Poorandi + Senti Piyerre na Mikweron + Pitkaini + Pwetoriko + Pocugo + Palaawu + Paragwai + Kata + Riyuniyoni + Romaniya + Rrasha + Rwanda + Saudi Areebiya + Ebizinga bya Surimaani + Shesheresi + Sudani + Swideni + Singapo + Senti Herena + Sirovaaniya + Sirovaakiya + Sirra Riyooni + Samarino + Senego + Somaariya + Surinaamu + Sawo Tome na Purinsipo + Eri Salivado + Siriya + Swazirandi + Ebizinga bya Buturuki na Kaiko + Chadi + Togo + Tairandi + Tajikisitani + Tokerawu + Burugweizooba bwa Timori + Turukimenisitani + Tunizia + Tonga + Buturuki /Take + Turinidad na Tobago + Tuvaru + Tayiwaani + Tanzania + Ukureini + Uganda + Amerika + Urugwai + Uzibekisitani + Vatikani + Senti Vinsent na Gurenadini + Venezuwera + Ebizinga bya Virigini ebya Bungyereza + Ebizinga bya Virigini ebya Amerika + Viyetinaamu + Vanuatu + Warris na Futuna + Samowa + Yemeni + Mayote + Sausi Afirika + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + KBZ + KBR + KST + KKN + KTN + KMK + KMS + KMN + KMW + KKM + KNK + KNB + + + Okwokubanza + Okwakabiri + Okwakashatu + Okwakana + Okwakataana + Okwamukaaga + Okwamushanju + Okwamunaana + Okwamwenda + Okwaikumi + Okwaikumi na kumwe + Okwaikumi na ibiri + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + SAN + ORK + OKB + OKS + OKN + OKT + OMK + + + Sande + Orwokubanza + Orwakabiri + Orwakashatu + Orwakana + Orwakataano + Orwamukaaga + + + + + S + K + R + S + N + T + M + + + + + + + K1 + K2 + K3 + K4 + + + KWOTA 1 + KWOTA 2 + KWOTA 3 + KWOTA 4 + + + + + + Kurisito Atakaijire + Kurisito Yaijire + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Obunaku + + + Omwaka + + + Omwezi + + + Esande + + + Eizooba + Nyomwabazyo + Erizooba + Nyenkyakare + + + Eizooba ry'okukora + + + Nyomushana/nyekiro + + + Shaaha + + + Edakiika + + + Obucweka/Esekendi + + + + + + + + ¤#,##0.00 + + + + + + Dirham za Buharabu + + + Kwanza ya Angora + + + Doora ya Austureeriya + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pura ya Botswana + + + Doora ya Kanada + + + Faranga ya Kongo + + + Faranga ya Swisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Gyibuti + + + Dinari ya Arigyeriya + + + Paundi ya Misiri + + + Nakfa ya Eritireya + + + Birr ya Ethiopiya + + + Yuro + + + Paundi ya Bungyereza + + + Cedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Guinea + + + Rupiya ya India + + + Yeni ya Japaani + + + Shiringi ya Kenya + + + Faranga ya Komoro + + + Doora ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirram ya Moroko + + + Ariari ya Maragariita + + + Ougwiya ya Mouriteeniya + + + Rupiiha ya Mauritiasi + + + Kwaca ya Malawi + + + Metikari ya Mozambikwi + + + Doora ya Namibiya + + + Naira ya Naigyeriya + + + Faranga ya Rwanda + + + Riya ya Saudi + + + Rupiiha ya Sherisheri + + + Dinari ya Sudani + + + Paundi ya Sudan + + + Paundi ya Senti Herena + + + Leone + + + Eshiringi ya Somalia + + + Dobra ya Sao Tome na Purinsipo + + + Dinari ya Tunisia + + + Eshiringi ya Tanzania + + + Eshiringi ya Uganda + USh + + + Doora ya America + + + Faranga ya CFA BEAC + + + Faranga ya CFA BCEAO + + + Randi ya Sausi Afirika + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Doora ya Zimbabwe + + + + + + Eego:E + Ngaaha/apaana:N + + + + diff --git a/library/Zend/Locale/Data/cgg_UG.xml b/library/Zend/Locale/Data/cgg_UG.xml new file mode 100755 index 000000000..7e27f5b59 --- /dev/null +++ b/library/Zend/Locale/Data/cgg_UG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/characters.xml b/library/Zend/Locale/Data/characters.xml new file mode 100755 index 000000000..ace9566c5 --- /dev/null +++ b/library/Zend/Locale/Data/characters.xml @@ -0,0 +1,526 @@ + + + + + + + + + + + (C) + + + << + + + - + + + (R) + + + >> + + + 1/4 + + + 1/2 + + + 3/4 + + + AE + + + ss + + + ae + + + 'n + + + OE + + + oe + + + Ş + + + ş + + + Ţ + + + ţ + + + AMD + + + AFN + + + BDT + + + THB + + + KHR + + + + - + + + ' + + + " + + + , + + + ' + + + - + + + - + + + - + + + - + + + - + + + + - + + + ' + + + ' + + + , + + + ' + + + " + + + " + + + ,, + + + " + + + · + + + · + + + / + + + CE + + + CRC + + + ¢ + + + Cr + + + Fr. + + + L. + £ + + + NGN + + + Pts + + + KRW + + + שח + ILS + + + đ + VND + + + EUR + + + LAK + + + MNT + + + GRD + + + PHP + + + PYG + + + Ȼ + GHS + + + KZT + + + UAH + + + INR + + + TL + + + Rx + + + 1/3 + + + 2/3 + + + 1/5 + + + 2/5 + + + 3/5 + + + 4/5 + + + 1/6 + + + 5/6 + + + 1/8 + + + 3/8 + + + 5/8 + + + 7/8 + + + 1/ + + + Π + + + Σ + + + - + + + / + + + \ + + + | + + + + || + + + + + + dm² + + + dm³ + + + mm² + + + cm² + + + + + + km² + + + mm³ + + + cm³ + + + + + + km³ + + + m/s + + + m∕s² + m/s² + + + rad/s + + + rad∕s² + rad/s² + + + CC + + + C/kg + + + pH + + + V/m + + + A/m + + + ſt + + + (( + + + )) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ¯ + + + KRW + + + + diff --git a/library/Zend/Locale/Data/chr.xml b/library/Zend/Locale/Data/chr.xml new file mode 100755 index 000000000..9b79f5794 --- /dev/null +++ b/library/Zend/Locale/Data/chr.xml @@ -0,0 +1,846 @@ + + + + + + + + + + + + ᎦᏳᎦ + ᎠᏣᏗ + ᏣᎳᎩ + ᎠᏂᏓᏥ + ᎩᎵᏏ + ᏍᏆᏂ + ᎦᎸᏥ + ᎬᏩᎵᏲᏥᎢ + ᏣᏩᏂᏏ + ᎼᎻᎦ + ᎠᎫᏌ + ᏉᏧᎦᎵ + ᏲᏂᎢ + ᏏᏂᎦ + ᏄᏬᎵᏍᏛᎾ ᎦᏬᏂᎯᏍᏗ + ᏓᎶᏂᎨ + + + + + + + + + + + + ᎡᎶᎯ + ᏧᏴᏢ ᎠᎺᎵᎦ + ᏧᎦᏃᏮ ᎠᎺᎵᎦ + ᎠᎺᎵᎦᎢ + ᎠᏂᏙᎳ + ᏌᏊ ᎢᏳᎾᎵᏍᏔᏅ ᎡᎳᏈ ᎢᎹᎵᏘᏏ + ᎠᏫᎨᏂᏍᏖᏂ + ᎤᏪᏘ ᎠᎴ ᏆᏊᏓ + ᎠᏂᎩᎳ + ᎠᎵᏇᏂᏯ + ᎠᎵᎻᏂᎠ + ᎠᏂᎪᎳ + ᏧᏁᏍᏓᎸ + ᎠᏥᏂᏘᏂᎠ + ᎠᎺᎵᎧ ᏌᎼᎠ + ᎠᏍᏟᏯ + ᎡᎳᏗᏜ + ᎠᎷᏆ + ᎣᎴᏅᏓ ᏚᎦᏚᏛ + ᎠᏏᎵᏆᏌᏂ + ᏉᏏᏂᎠ ᎠᎴ ᎲᏤᎪᏫ + ᏆᏇᏙᏍ + ᏆᏂᎦᎵᏕᏍ + ᏇᎵᏥᎥᎻ + ᏋᎩᎾ ᏩᏐ + ᏊᎵᎨᎵᎠ + ᏆᎭᎴᎢᏂ + ᏋᎷᏂᏗ + ᏆᏂᎢᏂ + ᎠᏥᎸᏉᏗ ᏆᏕᎳᎻ + ᏆᏊᏓ + ᏊᎾᎢ + ᏉᎵᏫᎠ + ᏆᏏᎵᎢ + ᎾᏍᎩ ᏆᎭᎹᏍ + ᏊᏔᏂ + ᏊᏪ ᎤᎦᏚᏛ + ᏆᏣᏩᎾ + ᏇᎳᎷᏍ + ᏇᎵᏍ + ᎨᎾᏓ + ᎪᎪᏍ (ᎩᎵᏂ) ᏚᎦᏚᏛ + ᎧᏂᎪ + ᎬᎿᎨᏍᏛ ᎠᏰᏟ ᏍᎦᏚᎩ + ᎧᏂᎪ (ᏍᎦᏚᎩ) + ᏍᏫᏍ + ᎢᏬᎵ ᎾᎿ ᎠᎹᏳᎶᏗ + ᎠᏓᏍᏓᏴᎲᏍᎩ ᎤᎦᏚᏛ + ᏥᎵ + ᎧᎹᎷᏂ + ᏓᎶᏂᎨᏍᏛ + ᎪᎸᎻᏈᎢᎠ + ᎪᏍᏓ ᎵᎧ + ᎫᏆ + ᎢᎬᎾᏕᎾ ᎢᏤᏳᏍᏗ + ᏂᎦᏓ ᎤᏂᎲ ᎾᎿ ᎫᎳᎨᎣ + ᏓᏂᏍᏓᏲᎯᎲ ᎤᎦᏚᏛ + ᏌᎢᏆᏍ + ᏤᎩ ᏍᎦᏚᎩ + ᎠᏂᏛᏥ + ᏥᏊᏗ + ᏗᏂᎹᎦ + ᏙᎻᏂᎧ + ᏙᎻᏂᎧᏂ ᏍᎦᏚᎩ + ᎠᎵᏥᎵᏯ + ᎡᏆᏙᎵ + ᎡᏍᏙᏂᏯ + ᎢᏥᏈᎢ + ᎡᎵᏟᏯ + ᎠᏂᏍᏆᏂᏱ + ᏫᏂᎦᏙᎯ + ᏫᏥ + ᏩᎩ ᎤᎦᏚᏛ + ᏩᎩ ᎤᎦᏚᏛ (ᎢᏍᎳᏍ ᎹᎸᏫᎾᏍ) + ᎠᏰᏟ ᏧᎾᎵᎪᎯ ᎾᎿ ᎹᎢᏉᏂᏏᏯ + ᏪᎶ ᏚᎦᏚᏛ + ᎦᎸᏥᏱ + ᎦᏉᏂ + ᎩᎵᏏᏲ + ᏋᎾᏓ + ᏣᎠᏥᎢ + ᎠᏂᎦᎸᏥ ᎩᎠ + ᎬᏂᏏ + ᎦᎠᎾ + ᏥᏆᎵᏓ + ᎢᏤᏍᏛᏱ + ᎦᎹᏈᎢᎠ + ᎫᏇ + ᏩᏓᎷᏇ + ᎡᏆᏙᎵᎠᎵ ᎩᎢᏂ + ᎪᎢᎯ + ᏧᎦᏃᏮ ᏣᏥᏱ ᎠᎴ ᎾᏍᎩ ᏧᎦᏃᏮ ᎠᏍᏛᎭᏟ ᏚᎦᏚᏛ + ᏩᏔᎹᎳ + ᏆᎻ + ᎫᏇ-ᏈᏌᎤᏫ + ᎦᏯᎾ + ᎰᏂᎩ ᎪᏂᎩ + ᎲᏗ ᎤᎦᏚᏛ ᎠᎴ ᎺᎩᏓᎾᎵᏗ ᏚᎦᏚᏛ + ᎧᎶᎡᏏᎠ + ᎮᎢᏘ + ᎲᏂᎦᎵ + ᎢᏂᏙᏂᏍᏯ + ᎠᎢᎴᏂᏗ + ᎢᏏᎵᏱ + ᎤᏍᏗ ᎤᎦᏚᏛ ᎾᎿ ᎠᏍᎦᏯ + ᎢᏅᏗᎾ + ᏈᏗᏏ ᏴᏫᏯ ᎠᎺᏉ ᎢᎬᎾᏕᏅ + ᎢᎳᎩ + ᎢᎴᏂ + ᏧᏁᏍᏓᎸᎯ + ᏲᎶ + ᏨᎵᏏ + ᏣᎺᎢᎧ + ᏦᏓᏂ + ᏣᏩᏂᏏ + ᎨᏂᏯ + ᎩᎵᏣᎢᏍ + ᎧᎹᏉᏗᎠᏂ + ᎧᎵᏆᏘ + ᎪᎼᎳᏍ + ᎠᏰᏟ ᎾᎿ ᎨᏥᎸᏉᏗ ᎠᏂᏪᏌ ᎠᎴ ᎠᏂᏁᏫᏍ + ᏧᏴᏢ ᎪᎵᎠ + ᏧᎦᏃᏮ ᎪᎵᎠ + ᎫᏪᎢᏘ + ᎨᎢᎹᏂ ᏚᎦᏚᏛᎢ + ᎧᏎᎧᏍᏕᏂ + ᎴᎣᏍ + ᎴᏆᎾᏂ + ᎵᎦᏗᏂᏍᏓᏂ + ᏍᎵ ᎳᏂᎧ + ᎳᏈᎵᏯ + ᎴᏐᏙ + ᎵᏗᏪᏂᎠ + ᎸᎧᏎᏋᎩ + ᎳᏘᏫᎠ + ᎵᏈᏯ + ᎼᎶᎪ + ᎹᎾᎪ + ᎹᎵᏙᏫᎠ + ᎼᏂᏔᏁᎦᎶ + ᎠᏥᎸᏉᏗ ᏡᏡ + ᎹᏓᎦᏍᎧᎵ + ᎹᏌᎵ ᏚᎪᏚᏛ + ᎹᏏᏙᏂᎢᎠ + ᎹᎵ + ᎹᏯᎹᎵ + ᎹᏂᎪᎵᎠ + ᎹᎧᎣ (ᎤᏓᏤᎵᏓ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎢᎬᎾᏕᎾ) ᏣᎢ + ᎹᎧᎣ + ᎾᏍᎩ ᎤᏴᏢ ᏗᏜ ᎹᎵᎠᎾ ᏚᎦᏚᏛ + ᎹᏘᏂᎨ + ᎹᏘᎢᏯ + ᎹᏂᏘᏌᎳᏗ + ᎹᎵᏔ + ᎼᎵᏏᎥᏍ + ᎹᎵᏗᏫᏍ + ᎹᎳᏫ + ᏍᏆᏂᏱ + ᎹᎴᏏᎢᎠ + ᎼᏎᎻᏇᎩ + ᎾᎻᏈᎢᏯ + ᎢᏤ ᎧᎵᏙᏂᎠᏂ + ᏃᎵᏬᎵᎩ ᎤᎦᏚᏛ + ᏂᏥᎵᏯ + ᏂᎧᎳᏆ + ᏁᏛᎳᏂ + ᏃᏪ + ᏁᏆᎵ + ᏃᎤᎷ + ᏂᏳ + ᎢᏤ ᏏᎢᎴᏂᏗ + ᎣᎺᏂ + ᏆᎾᎹ + ᏇᎷ + ᎠᏂᎦᎸᏣ ᏆᎵᏂᏏᎠ + ᏆᏇ ᎢᏤ ᎩᏂ + ᎠᏂᏈᎵᎩᏃ + ᏆᎩᏍᏖᏂ + ᏉᎳᏂ + ᏎᏂᏘ ᏈᏓ ᎠᎴ ᎻᏇᎶᏂ + ᏈᎧᎵᏂ ᎤᎦᏚᏛᎢ + ᏇᎡᏙ ᎵᎢᎪ + ᏆᎴᏍᏗᏂᎠᏂ ᏄᎬᏫᏳᏌᏕᎩ + ᏉᏥᎦᎳ + ᏆᎴᎠᏫ + ᏆᎳᏇᎢᏯ + ᎧᏔᎵ + ᎶᎹᏂᏯ + ᏒᏈᏯ + ᏲᏂᎢ + ᎶᏩᏂᏓ + ᏌᎤᏗ ᎡᎴᏈᎠ + ᏐᎶᎹᏂ ᏚᎦᏚᏛ + ᏏᎡᏥᎵᏍ + ᏑᏕᏂ + ᏍᏫᏕᏂ + ᏏᏂᎦᏉᎵ + ᎠᏥᎸᏉᏗ ᎮᎵᎾ + ᏍᎶᏫᏂᎠ + ᏍᎶᏩᎩᎠ + ᏏᎡᎳ ᎴᎣᏂ + ᎠᎹᏰᏟ + ᏄᏬᎵᏍᏛᎾ ᎤᏔᏂᏗᎦᏙᎯ + + + ᏅᏙ ᏗᏎᏗ + ᎠᏕᎳ + + + ᏅᏙ ᏗᏎᏗ + + + ᎺᏘᎩ + ᎣᏂᏏ + + + + [Ꭰ Ꭱ Ꭲ Ꭳ Ꭴ Ꭵ Ꭶ Ꭷ Ꭸ Ꭹ Ꭺ Ꭻ Ꭼ Ꭽ Ꭾ Ꭿ Ꮀ Ꮁ Ꮂ Ꮃ Ꮄ Ꮅ Ꮆ Ꮇ Ꮈ Ꮉ Ꮊ Ꮋ Ꮌ Ꮍ Ꮎ Ꮏ Ꮐ Ꮑ Ꮒ Ꮓ Ꮔ Ꮕ Ꮖ Ꮗ Ꮘ Ꮙ Ꮚ Ꮛ Ꮜ Ꮝ Ꮞ Ꮟ Ꮠ Ꮡ Ꮢ Ꮣ Ꮤ Ꮥ Ꮦ Ꮧ Ꮨ Ꮩ Ꮪ Ꮫ Ꮬ Ꮭ Ꮮ Ꮯ Ꮰ Ꮱ Ꮲ Ꮳ Ꮴ Ꮵ Ꮶ Ꮷ Ꮸ Ꮹ Ꮺ Ꮻ Ꮼ Ꮽ Ꮾ Ꮿ Ᏸ Ᏹ Ᏺ Ᏻ Ᏼ] + [] + [Ꭰ Ꭶ Ꭽ Ꮃ Ꮉ Ꮎ Ꮖ Ꮜ Ꮣ Ꮬ Ꮳ Ꮹ Ꮿ] + + + + + + + + + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/y GGGGG + + + + + + y G + MMM y G + MMM d, y G + E, MMM d, y G + h:mm a + H:mm + h:mm:ss a + H:mm:ss + M/d + E, M/d + MMM d + y G + y G + M/y G + M/d/y G + E, M/d/y G + MMM y G + MMM d, y G + E, MMM d, y G + MMMM y G + QQQ y G + QQQQ y G + + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + M/y – M/y G + M/y – M/y G + + + M/d/y – M/d/y G + M/d/y – M/d/y G + M/d/y – M/d/y G + + + E, M/d/y – E, M/d/y G + E, M/d/y – E, M/d/y G + E, M/d/y – E, M/d/y G + + + MMM–MMM y G + MMM y – MMM y G + + + MMM d–d, y G + MMM d – MMM d, y G + MMM d, y – MMM d, y G + + + E, MMM d – E, MMM d, y G + E, MMM d – E, MMM d, y G + E, MMM d, y – E, MMM d, y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + ᎤᏃ + ᎧᎦ + ᎠᏅ + ᎧᏬ + ᎠᏂ + ᏕᎭ + ᎫᏰ + ᎦᎶ + ᏚᎵ + ᏚᏂ + ᏅᏓ + ᎥᏍ + + + ᎤᏃᎸᏔᏅ + ᎧᎦᎵ + ᎠᏅᏱ + ᎧᏬᏂ + ᎠᏂᏍᎬᏘ + ᏕᎭᎷᏱ + ᎫᏰᏉᏂ + ᎦᎶᏂ + ᏚᎵᏍᏗ + ᏚᏂᏅᏗ + ᏅᏓᏕᏆ + ᎥᏍᎩᏱ + + + + + + + + + + + + + + + + + + + + + + + ᏆᏍᎬ + ᏉᏅᎯ + ᏔᎵᏁ + ᏦᎢᏁ + ᏅᎩᏁ + ᏧᎾᎩ + ᏈᏕᎾ + + + ᎤᎾᏙᏓᏆᏍᎬ + ᎤᎾᏙᏓᏉᏅᎯ + ᏔᎵᏁᎢᎦ + ᏦᎢᏁᎢᎦ + ᏅᎩᏁᎢᎦ + ᏧᎾᎩᎶᏍᏗ + ᎤᎾᏙᏓᏈᏕᎾ + + + + + + + + + + + + + + + + + + ᏌᎾᎴ + ᎢᎦ + ᏒᎯᏱᎢᏗᏢ + + + + + + Ꮟ ᏥᏌ ᎾᏕᎲᏍᎬᎾ + ᎠᎩᏃᎮᎵᏓᏍᏗᏱ ᎠᏕᏘᏱᏍᎬ ᏱᎰᏩ ᏧᏓᏂᎸᎢᏍᏗ + + + ᎤᏓᎷᎸ + ᎤᎶᏐᏅ + + + + + + EEEE, MMMM d, y + + + + + MMMM d, y + + + + + MMM d, y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + y G + MMM y G + MMM d, y G + E, MMM d, y G + h:mm a + H:mm + h:mm:ss a + H:mm:ss + M/d + E, M/d + MMM d + M/y + M/d/y + E, M/d/y + MMM y + MMM d, y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM–MMM y + MMM y – MMM y + + + MMM d–d, y + MMM d – MMM d, y + MMM d, y – MMM d, y + + + E, MMM d – E, MMM d, y + E, MMM d – E, MMM d, y + E, MMM d, y – E, MMM d, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + ᎡᎶᎯ ᎠᏣᎢᎵᏒᎢ + + + ᏑᏕᏘᏴᏓ + + + ᏏᏅᏓ + + + ᏒᎾᏙᏓᏆᏍᏗ + + + ᏏᎦ + ᏒᎯ + ᎪᎯ ᎢᎦ + ᏌᎾᎴᎢ + + + ᏒᎾᏙᏓᏆᏍᏗ ᎠᏣᎢᎵᏒ + + + ᏑᏣᎶᏓ + + + ᎢᏯᏔᏬᏍᏔᏅ + + + ᎠᏎᏢ + + + ᎡᎶᎯ ᎠᏍᏓᏅᏅ + + + + +HH:mm;-HH:mm + GMT{0} + ᎢᎢᎢ + {0} ᎢᏳᏩᎪᏗ + + + HST + HST + HDT + + + + + AKT + AKST + AKDT + + + + + ᎠᏰᎵ ᎢᏳᏩᎪᏗ + ᎠᏰᎵ ᏰᎵᏊ ᏗᏙᎳᎩ ᎢᏳᏩᎪᏗ + ᎠᏰᎵ ᎢᎦ ᎢᏳᏩᎪᏗ + + + CT + CST + CDT + + + + + ᎧᎸᎬᎢᏗᏢ ᎢᏳᏩᎪᏗ + ᎧᎸᎬᎢᏗᏢ ᏰᎵᏊ ᏗᏙᎳᎩ ᎢᏳᏩᎪᏗ + ᎧᎸᎬᎢᏗᏢ ᎢᎦ ᎢᏳᏩᎪᏗ + + + ET + EST + EDT + + + + + ᎣᏓᎸ ᎢᏳᏩᎪᏗ + ᎣᏓᎸ ᏰᎵᏊ ᏗᏙᎳᎩ ᎢᏳᏩᎪᏗ + ᎣᏓᎸ ᎢᎦ ᎢᏳᏩᎪᏗ + + + MT + MST + MDT + + + + + ᏭᏕᎵᎬ ᎢᏳᏩᎪᏗ + ᏭᏕᎵᎬ ᏰᎵᏊ ᏗᏙᎳᎩ ᎢᏳᏩᎪᏗ + ᏭᏕᎵᎬ ᎢᎦ ᎢᏳᏩᎪᏗ + + + PT + PST + PDT + + + + + AT + AST + ADT + + + + + ᎢᏤ ᎢᏳᏍᏗ ᎢᏳᏩᎪᏗ + + + + + HAT + HAST + HADT + + + + + + + . + , + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + ᏆᏏᎵᎢ ᎠᏕᎳ + + + ᎧᎾᏓ ᎠᏕᎳ + + + ᏓᎶᏂᎨ ᎠᏕᎳ + + + ᏳᎳᏛ + + + ᎩᎵᏏᏲ ᎠᏕᎳ + + + ᎢᏅᏗᎾ ᎠᏕᎳ + + + ᏣᏩᏂᏏ ᎠᏕᎳ + + + ᏍᏆᏂ ᎠᏕᎳ + + + ᏲᏂᎢ ᎠᏕᎳ + + + ᎤᏃᏍᏗ + ᎤᏃᏍᏗ + ᏧᏃᏍᏗ + $ + + + + + + + {0} ᏏᎦ + {0} ᏧᏒᎯᏓ + + + {0} ᏑᏣᎶᏓ + {0} ᎢᏧᏣᎶᏓ + + + {0} ᎢᏯᏔᏬᏍᏔᏅ + {0} ᎢᏧᏔᏬᏍᏔᏅ + + + {0} ᏏᏅᏓ + {0} ᎢᏯᏅᏓ + + + {0} ᎠᏎᏢ + {0} ᏗᏎᏢ + + + {0} ᏒᎾᏙᏓᏆᏍᏗ + {0} ᎢᏳᎾᏙᏓᏆᏍᏗ + + + {0} ᏑᏕᏘᏴᏓ + {0} ᏧᏕᏘᏴᏓ + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + + ᎥᎥ + ᎥᏝ + + + + diff --git a/library/Zend/Locale/Data/chr_US.xml b/library/Zend/Locale/Data/chr_US.xml new file mode 100755 index 000000000..0fc4a3a5b --- /dev/null +++ b/library/Zend/Locale/Data/chr_US.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/coverageLevels.xml b/library/Zend/Locale/Data/coverageLevels.xml new file mode 100755 index 000000000..298f5f3ae --- /dev/null +++ b/library/Zend/Locale/Data/coverageLevels.xml @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/cs.xml b/library/Zend/Locale/Data/cs.xml new file mode 100755 index 000000000..4ae5c8ac6 --- /dev/null +++ b/library/Zend/Locale/Data/cs.xml @@ -0,0 +1,6371 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afarština + abcházština + acehština + akolština + adangme + adygejština + avestánština + afrikánština + afrihili + aghem + ainština + akanština + akkadština + aleutština + altajština (jižní) + amharština + aragonština + staroangličtina + angika + arabština + arabština (moderní standardní) + aramejština + araukánština + arapažština + arawacké jazyky + asámština + asu + asturština + avarština + awadhština + ajmarština + ázerbájdžánština + ázerbájdžánština + baškirština + balúčština + balijština + basa + bamun + ghomala + běloruština + bedža + bembština + bena + bafut + bulharština + bhojpurština + bislamština + bikolština + bini + kom + siksika + bambarština + bengálština + tibetština + bretonština + bradžština + bodoština + bosenština + akoose + burjatština + bugiština + bulu + blinština + medumba + katalánština + caddo + karibština + kajugština + atsam + čečenština + cebuánština + kiga + čamoro + čibča + čagatajština + čukština + marijština + činuk pidžin + čoktština + čipevajština + čerokézština + čejenština + kurdština (sorání) + korsičtina + koptština + kríjština + krymská turečtina + čeština + kašubština + staroslověnština + čuvaština + velština + dánština + dakotština + dargština + taita + němčina + němčina standardní (Švýcarsko) + delawarština + slejvština (athabaský jazyk) + dogrib + dinkština + zarmština + dogarština + dolnolužická srbština + dualština + holandština (středověká) + maledivština + jola-fonyi + djula + dzongkä + dazaga + embu + eweština + efikština + egyptština stará + ekajuk + řečtina + elamitština + angličtina + angličtina (VB) + angličtina (USA) + angličtina (USA) + angličtina (středověká) + esperanto + španělština + španělština (Evropa) + estonština + baskičtina + ewondo + perština + fang + fantština + fulbština + finština + filipínština + fidžijština + faerština + fonština + francouzština + francouzština (středověká) + francouzština (stará) + fríština (severní) + fríština (východní) + furlanština + fríština + irština + gaština + gayo + gbaja + skotská gaelština + geez + kiribatština + galicijština + hornoněmčina (středověká) + guaranština + hornoněmčina (stará) + góndština + gorontalo + gótština + grebo + starořečtina + němčina (Švýcarsko) + gudžarátština + gusii + manština + gwichʼin + hauština + haidština + havajština + hebrejština + hindština + hiligajnonština + chetitština + hmongština + hiri motu + chorvatština + hornolužická srbština + haitština + maďarština + hupa + arménština + hererština + interlingua + ibanština + ibibio + indonéština + interlingue + igboština + s'-čchuan i + inupiakština + ilokánština + inguština + ido + islandština + italština + inuktitutština + japonština + lojban + ngomba + mašame + judeoperština + judeoarabština + javánština + gruzínština + karakalpačtina + kabylština + kačijština + jju + kambština + kawi + kabardinština + kanembu + tyap + makonde + kapverdština + koro + konžština + khásí + chotánština + koyra chiini + kikujština + kuaňamština + kazaština + kako + grónština + kalendžin + khmérština + kimbundština + kannadština + korejština + konkánština + kosrajština + kpelle + kanuri + karačajevo-balkarština + karelština + kuruchština + kašmírština + shambala + bafia + kolínština + kurdština + kumyčtina + kutenajština + komijština + kornština + kyrgyzština + latina + ladinština + langi + lahndština + lambština + lucemburština + lezginština + gandština + limburština + lingalština + laoština + mongština + lozština + litevština + lubu-katanžština + luba-luluaština + luiseňo + lundština + luoština + mizoština + luhja + lotyština + madurština + mafa + magahijština + maithiliština + makasarština + mandingština + masajština + maba + mokšanština + mandar + mende + meru + mauricijská kreolština + malgaština + irština (středověká) + makhuwa-meetto + meta' + maršálština + maorština + micmac + minangkabau + makedonština + malajálamština + mongolština + mandžuština + manipurština + mohawk + mosi + maráthština + malajština + maltština + mundang + složené (víceřádkové) jazyky + kríkština + mirandština + márvárština + barmština + myene + erzjanština + naurština + neapolština + nama + norština (bokmål) + ndebele (Zimbabwe) + dolnoněmčina + nepálština + névárština + ndondština + nias + niueština + nizozemština + vlámština + kwasio + norština (nynorsk) + ngiemboon + norština + nogajština + norština historická + n’ko + ndebele (Jižní Afrika) + sotština (severní) + nuerština + navažština + newarština (klasická) + ňandžština + ňamwežština + ňankolština + ňorština + nzima + okcitánština + odžibvejština + oromština + urijština + osetština + osage + osmanská turečtina + paňdžábština + pangasinanština + pahlavština + papangau + papiamento + palauština + staroperština + féničtina + pálí + polština + pohnpeiština + provensálština + paštština + portugalština + portugalština (Evropa) + kečuánština + rádžastánština + rapanujština + rarotongánština + rétorománština + kirundština + rumunština + moldavština + rombo + romština + ruština + arumunština + kiňarwandština + rwa + sanskrt + sandawština + jakutština + samarština + samburu + sasakština + santálština + ngambay + sangoština + sardština + sicilština + skotština + sindhština + sámština (severní) + seneca + sena + selkupština + koyraboro senni + sangština + irština (stará) + srbochorvatština + tachelhit + šanština + arabština (čadská) + sinhálština + sidamo + slovenština + slovinština + samojština + sámština (jižní) + sámština (lulejská) + sámština (inarijská) + sámština (skoltská) + šonština + sonikština + somálština + sogdština + albánština + srbština + sranan tongo + sererština + siswatština + saho + sotština (jižní) + sundanština + sukuma + susu + sumerština + švédština + svahilština + komorština + swahilština (Kongo) + syrština (klasická) + syrština + tamilština + telugština + temne + teso + tereno + tetumština + tádžičtina + thajština + tigrinijština + tigrejština + tivština + turkmenština + tokelauština + tagalog + klingonština + tlingit + tamašek + setswanština + tongánština + tonžština (nyasa) + tok pisin + turečtina + taroko + tsonga + tsimšijské jazyky + tatarština + tumbukština + tuvalština + twi + tasawaq + tahitština + tuvinština + tamazight (střední Maroko) + udmurtština + ujgurština + ugaritština + ukrajinština + umbundu + neznámý jazyk + urdština + uzbečtina + vai + venda + vietnamština + volapuk + votština + vunjo + valonština + němčina (walser) + wolajtština + warajština + waština + wolofština + kalmyčtina + xhoština + sogština + jaoština + japština + jangbenština + yemba + jidiš + jorubština + kantonština + čuangština + zapotéčtina + bliss systém + zenaga + tamazight (standardní marocký) + čínština + čínština (zjednodušená) + zuluština + zunijština + žádný jazykový obsah + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Svět + Afrika + Severní Amerika + Jižní Amerika + Oceánie + Západní Afrika + Střední Amerika + Východní Afrika + Severní Afrika + Střední Afrika + Jižní Afrika + Amerika + Severní Amerika oblast + Karibik + Východní Asie + Jižní Asie + Jihovýchodní Asie + Jižní Evropa + Australasie + Melanésie + Mikronésie (region) + Polynésie + Asie + Střední Asie + Západní Asie + Evropa + Východní Evropa + Severní Evropa + Západní Evropa + Latinská Amerika + Ascension + Andorra + Spojené arabské emiráty + Afghánistán + Antigua a Barbuda + Anguilla + Albánie + Arménie + Nizozemské Antily + Angola + Antarktida + Argentina + Americká Samoa + Rakousko + Austrálie + Aruba + Ålandy + Ázerbájdžán + Bosna a Hercegovina + Barbados + Bangladéš + Belgie + Burkina Faso + Bulharsko + Bahrajn + Burundi + Benin + Svatý Bartoloměj + Bermudy + Brunej + Bolívie + Karibské Nizozemsko + Brazílie + Bahamy + Bhútán + Bouvetův ostrov + Botswana + Bělorusko + Belize + Kanada + Kokosové ostrovy + Kongo - Kinshasa + Kongo (DRK) + Středoafrická republika + Kongo - Brazzaville + Kongo (republika) + Švýcarsko + Pobřeží slonoviny + Cookovy ostrovy + Chile + Kamerun + Čína + Kolumbie + Clippertonův ostrov + Kostarika + Kuba + Kapverdy + Curaçao + Vánoční ostrov + Kypr + Česká republika + Německo + Diego García + Džibutsko + Dánsko + Dominika + Dominikánská republika + Alžírsko + Ceuta a Melilla + Ekvádor + Estonsko + Egypt + Západní Sahara + Eritrea + Španělsko + Etiopie + Evropská unie + Finsko + Fidži + Falklandské ostrovy + Falklandské ostrovy (Malvíny) + Mikronésie + Faerské ostrovy + Francie + Gabon + Velká Británie + VB + Grenada + Gruzie + Francouzská Guyana + Guernsey + Ghana + Gibraltar + Grónsko + Gambie + Guinea + Guadeloupe + Rovníková Guinea + Řecko + Jižní Georgie a Jižní Sandwichovy ostrovy + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong - ZAO Číny + Hongkong + Heardův ostrov a McDonaldovy ostrovy + Honduras + Chorvatsko + Haiti + Maďarsko + Kanárské ostrovy + Indonésie + Irsko + Izrael + Ostrov Man + Indie + Britské indickooceánské území + Irák + Írán + Island + Itálie + Jersey + Jamajka + Jordánsko + Japonsko + Keňa + Kyrgyzstán + Kambodža + Kiribati + Komory + Svatý Kryštof a Nevis + Severní Korea + Jižní Korea + Kuvajt + Kajmanské ostrovy + Kazachstán + Laos + Libanon + Svatá Lucie + Lichtenštejnsko + Srí Lanka + Libérie + Lesotho + Litva + Lucembursko + Lotyšsko + Libye + Maroko + Monako + Moldavsko + Černá Hora + Svatý Martin + Madagaskar + Marshallovy ostrovy + Makedonie + Makedonie (FYROM) + Mali + Myanmar (Barma) + Mongolsko + Macao - ZAO Číny + Macao + Severní Mariany + Martinik + Mauritánie + Montserrat + Malta + Mauricius + Maledivy + Malawi + Mexiko + Malajsie + Mosambik + Namibie + Nová Kaledonie + Niger + Norfolk + Nigérie + Nikaragua + Nizozemsko + Norsko + Nepál + Nauru + Niue + Nový Zéland + Omán + Panama + Peru + Francouzská Polynésie + Papua-Nová Guinea + Filipíny + Pákistán + Polsko + Saint-Pierre a Miquelon + Pitcairnovy ostrovy + Portoriko + Palestinská území + Palestina + Portugalsko + Palau + Paraguay + Katar + Vnější Oceánie + Réunion + Rumunsko + Srbsko + Rusko + Rwanda + Saúdská Arábie + Šalamounovy ostrovy + Seychely + Súdán + Švédsko + Singapur + Svatá Helena + Slovinsko + Špicberky a Jan Mayen + Slovensko + Sierra Leone + San Marino + Senegal + Somálsko + Surinam + Jižní Súdán + Svatý Tomáš a Princův ostrov + Salvador + Sint Maarten + Sýrie + Svazijsko + Tristan da Cunha + Turks a Caicos + Čad + Francouzská jižní území + Togo + Thajsko + Tádžikistán + Tokelau + Východní Timor + Turkmenistán + Tunisko + Tonga + Turecko + Trinidad a Tobago + Tuvalu + Tchaj-wan + Tanzanie + Ukrajina + Uganda + Menší odlehlé ostrovy USA + Spojené státy + USA + Uruguay + Uzbekistán + Vatikán + Svatý Vincenc a Grenadiny + Venezuela + Britské Panenské ostrovy + Americké Panenské ostrovy + Vietnam + Vanuatu + Wallis a Futuna + Samoa + Kosovo + Jemen + Mayotte + Jihoafrická republika + Zambie + Zimbabwe + Neznámá oblast + + + pinyin + angličtina (Skotsko) + Wade-Giles + + + Kalendář + Ignorovat řazení symbolů + Obrácené řazení akcentů + Řazení velkých a malých písmen + Rozlišovaní velkých a malých písmen při řazení + Řazení podle slabičných písem (kana) + Řazení + Normalizované řazení + Číselné řazení + Síla řazení + Měna + Čísla + Časové pásmo + Varianta národního prostředí + Řadit jako symboly + Soukromé použití + + + Arabsko-indické číslice + Rozšířené arabsko-indické číslice + Arménské číslice + Malé arménské číslice + Bengálské číslice + Řazení pro tradiční čínštinu – Big5 + Buddhistický kalendář + Čínský kalendář + Koptský kalendář + Číslice písma dévanágarí + Slovníkové řazení + Výchozí řazení Unicode + Etiopské číslice + Etiopský kalendář + Etiopský kalendář (Amete-Alem) + Finančnický zápis čísel + Číslice – plná šířka + Řazení pro zjednodušenou čínštinu – GB2312 + Gruzínské číslice + Gregoriánský kalendář + Řecké číslice + Malé řecké číslice + Gudžarátské číslice + Číslice gurmukhí + Čínské desítkové číslice + Číslice zjednodušené čínštiny + Finanční číslice zjednodušené čínštiny + Číslice tradiční čínštiny + Finanční číslice tradiční čínštiny + Hebrejské číslice + Hebrejský kalendář + Řadit vše + Indický národní kalendář + Muslimský kalendář + Muslimský občanský kalendář + Japonský kalendář + Japonské číslice + Japonské finanční číslice + Khmerské číslice + Kannadské číslice + Laoské číslice + Západní číslice + Nejdříve řadit malá písmena + Malajálamské číslice + Mongolské číslice + Myanmarské číslice + Nativní číslice + Normální řazení akcentů + Normální řazení velkých a malých písmen + Nerozlišovat při řazení velká a malá písmena + Řadit slabičná písma (kana) samostatně + Řadit bez normalizace + Řadit číslice jednotlivě + Řadit symboly + Urijské číslice + Perský kalendář + Řazení jako v telefonním seznamu + Fonetické řazení + Řazení podle pchin-jinu + Řadit pouze základní písmena + Řadit akcenty/velká a malá písmena/šířku/kana + Reformované řazení + Kalendář Čínské republiky + Římské číslice + Malé římské číslice + Obecné hledání + Vyhledávat podle počáteční souhlásky písma hangul + Řadit akcenty + Při řazení ignorovat symboly + Standardní řazení + Řazení podle tahů + Tamilské tradiční číslice + Tamilské číslice + Telugské číslice + Řadit akcenty/velká a malá písmena/šířku + Thajské číslice + Tibetské číslice + Tradiční řazení + Tradiční číslovky + Řazení podle radikálů + Nejdříve řadit velká písmena + Vaiské číslice + Řadit akcenty opačně + Rozlišovat při řazení velká a malá písmena + Řadit jednotlivé typy slabičných písem (kana) různě + Řazení podle normalizovaného kódování Unicode + Numerické řazení číslic + Ču-jin + + + BGN + Numerický + Tón + UNGEGN + Přízvuky + Plná šířka + Poloviční šířka + Jamo + Pchin-jin + Publikování + + + metrický + Velká Británie + USA + + + Jazyk: {0} + Písmo: {0} + Region: {0} + + + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a á b c č d ď e é ě f g h {ch} i í j k l m n ň o ó p q r ř s š t ť u ú ů v w x y ý z ž] + [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ľ ł ñ ó ò ŏ ô ö ø ō œ ŕ ú ù ŭ û ü ū ÿ] + [A B C Č D E F G H {CH} I J K L M N O P Q R Ř S Š T U V W X Y Z Ž] + [\- ‐ – , ; \: ! ? . … ‘ ‚ “ „ ( ) \[ \] § @ * / \&] + {0}… + … {0} + {0}… {1} + ? + + + + + + + + + + + + + BE + + + + + + + + EEEE, d. M. y + + + + + d. M. y + + + + + d. M. y + + + + + d. M. y + + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. M. y G + + + + + dd.MM.yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E d. + y G + LLLL y G + d. M. y G + E d. M. y G + d. MMMM y G + E d. MMMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d. M. + E d. M. + LLL + d. M. + E d. M. + d. MMMM + E d. MMMM + mm:ss + y G + y G + M/y GGGGG + d. M. y GGGGG + E d. M. y GGGGG + LLLL y G + d. M. y G + E d. M. y G + LLLL y G + d. MMMM y G + E d. MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d.–d. + + + H – H + h–h a + + + H–H + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + H:mm–H:mm + H:mm–H:mm + + + H:mm – H:mm v + h:mm–h:mm a v + h:mm–h:mm a v + + + H:mm–H:mm v + H:mm–H:mm v + + + H – H v + h–h a v + + + H–H v + + + M–M + + + d. M. – d. M. + d. M. – d. M. + + + E d. M. – E d. M. + E d. M. – E d. M. + + + MMM–MMM + + + d.–d. M. + d. M. – d. M. + + + E d. M. – E d. M. + E d. M. – E d. M. + + + y–y G + + + M/y – M/y G + M/y – M/y G + + + dd.MM.y – dd.MM.y G + dd.MM.y – dd.MM.y G + dd.MM.y – dd.MM.y G + + + E dd.MM.y – E dd.MM.y G + E dd.MM.y – E dd.MM.y G + E dd.MM.y – E dd.MM.y G + + + MMM–MMM y G + MMM y – MMM y G + + + d.–d. M. y G + d. M. – d. M. y G + d. M. y – d. M. y G + + + E d. M. – E d. M. y G + E d. M. – E d. M. y G + E d. M. y – E d. M. y G + + + LLLL–LLLL y G + LLLL y – LLLL y G + + + + + + + + + led + úno + bře + dub + kvě + čvn + čvc + srp + zář + říj + lis + pro + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ledna + února + března + dubna + května + června + července + srpna + září + října + listopadu + prosince + + + + + led + úno + bře + dub + kvě + čvn + čvc + srp + zář + říj + lis + pro + + + l + ú + b + d + k + č + č + s + z + ř + l + p + + + leden + únor + březen + duben + květen + červen + červenec + srpen + září + říjen + listopad + prosinec + + + + + + + ne + po + út + st + čt + + so + + + N + P + Ú + S + Č + P + S + + + ne + po + út + st + čt + + so + + + neděle + pondělí + úterý + středa + čtvrtek + pátek + sobota + + + + + ne + po + út + st + čt + + so + + + N + P + Ú + S + Č + P + S + + + ne + po + út + st + čt + + so + + + neděle + pondělí + úterý + středa + čtvrtek + pátek + sobota + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. čtvrtletí + 2. čtvrtletí + 3. čtvrtletí + 4. čtvrtletí + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. čtvrtletí + 2. čtvrtletí + 3. čtvrtletí + 4. čtvrtletí + + + + + + + AM + PM + + + AM + PM + + + + + + př. n. l. + n. l. + + + př. n. l. + n. l. + + + př.n.l. + n.l. + + + + + + EEEE d. MMMM y + + + + + d. MMMM y + + + + + d. M. y + + + + + dd.MM.yy + + + + + + + H:mm:ss zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E d. + E h:mm a + E H:mm + E h:mm:ss a + E H:mm:ss + y G + LLLL y G + d. M. y G + E d. M. y G + d. MMMM y G + E d. MMMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d. M. + E d. M. + LLL + d. M. + E d. M. + d. MMMM + E d. MMMM + mm:ss + y + M/y + d. M. y + E d. M. y + LLLL y + d. M. y + E d. M. y + LLLL y + d. MMMM y + E d. MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + H–H + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + H:mm–H:mm + H:mm–H:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + H:mm–H:mm v + H:mm–H:mm v + + + h a – h a v + h–h a v + + + H–H v + + + M–M + + + d. M. – d. M. + d. M. – d. M. + + + E d. M. – E d. M. + E d. M. – E d. M. + + + MMM–MMM + + + d.–d. M. + d. M. – d. M. + + + E d. M. – E d. M. + E d. M. – E d. M. + + + y–y + + + M/y – M/y + M/y – M/y + + + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + + + E dd.MM.y – E dd.MM.y + E dd.MM.y – E dd.MM.y + E dd.MM.y – E dd.MM.y + + + MMM–MMM y + MMM y – MMM y + + + d.–d. M. y + d. M. – d. M. y + d. M. y – d. M. y + + + E d. M. – E d. M. y + E d. M. – E d. M. y + E d. M. y – E d. M. y + + + LLLL–LLLL y + LLLL y – LLLL y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + d. M. y G + + + + + dd.MM.yy GGGGG + + + + + + + + Před R. O. C. + + + + + + + Letopočet + + + Rok + minulý rok + tento rok + příští rok + + za {0} rok + za {0} roky + za {0} roku + za {0} let + + + před {0} rokem + před {0} lety + před {0} rokem + před {0} lety + + + + Měsíc + minulý měsíc + tento měsíc + příští měsíc + + za {0} měsíc + za {0} měsíce + za {0} měsíce + za {0} měsíců + + + před {0} měsícem + před {0} měsíci + před {0} měsícem + před {0} měsíci + + + + Týden + minulý týden + tento týden + příští týden + + za {0} týden + za {0} týdny + za {0} týdne + za {0} týdnů + + + před {0} týdnem + před {0} týdny + před {0} týdnem + před {0} týdny + + + + Den + předevčírem + včera + dnes + zítra + pozítří + + za {0} den + za {0} dny + za {0} dne + za {0} dní + + + před {0} dnem + před {0} dny + před {0} dnem + před {0} dny + + + + Den v týdnu + + + minulou neděli + tuto neděli + příští neděli + + + minulé pondělí + toto pondělí + příští pondělí + + + minulé úterý + toto úterý + příští úterý + + + minulou středu + tuto středu + příští středu + + + minulý čtvrtek + tento čtvrtek + příští čtvrtek + + + minulý pátek + tento pátek + příští pátek + + + minulou sobotu + tuto sobotu + příští sobotu + + + AM/PM + + + Hodina + + za {0} hodinu + za {0} hodiny + za {0} hodiny + za {0} hodin + + + před {0} hodinou + před {0} hodinami + před {0} hodinou + před {0} hodinami + + + + Minuta + + za {0} minutu + za {0} minuty + za {0} minuty + za {0} minut + + + před {0} minutou + před {0} minutami + před {0} minutou + před {0} minutami + + + + Sekunda + nyní + + za {0} sekundu + za {0} sekundy + za {0} sekundy + za {0} sekund + + + před {0} sekundou + před {0} sekundami + před {0} sekundou + před {0} sekundami + + + + Časové pásmo + + + + +H:mm;-H:mm + GMT{0} + GMT + Časové pásmo {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Neznámé město + + + Dubaj + + + Kábul + + + Tirana + + + Jerevan + + + Dumont d’Urville + + + Córdoba + + + Vídeň + + + Dháka + + + Brusel + + + Sofie + + + Bahrajn + + + Saint-Barthélemy + + + Bermudy + + + Brunej + + + Belém + + + São Paulo + + + Bahía + + + Thimbú + + + Atikokan + + + St. John’s + + + Kokosové ostrovy + + + Curych + + + Abidžan + + + Velikonoční ostrov + + + Kašghar + + + Urumči + + + Čchung-čching + + + Šanghaj + + + Charbin + + + Bogotá + + + Kostarika + + + Kapverdy + + + Curaçao + + + Vánoční ostrov + + + Nikósie + + + Praha + + + Berlín + + + Džibuti + + + Kodaň + + + Dominika + + + Alžír + + + Galapágy + + + Káhira + + + Asmara + + + Kanárské ostrovy + + + Addis Abeba + + + Helsinky + + + Fidži + + + Chuukské ostrovy + + + Pohnpei + + + Faerské ostrovy + + + Paříž + + + + Britský letní čas + + Londýn + + + Nuuk + + + Ittoqqortoormiit + + + Athény + + + Jižní Georgia + + + Hongkong + + + Záhřeb + + + Budapešť + + + + Irský letní čas + + + + Jeruzalém + + + Ostrov Man + + + Kalkata + + + Bagdád + + + Teherán + + + Reykjavík + + + Řím + + + Jamajka + + + Ammán + + + Tokio + + + Biškek + + + Phnompenh + + + Komory + + + Svatý Kryštof + + + Pchjongjang + + + Soul + + + Kuvajt + + + Kajmanské ostrovy + + + Uralsk + + + Kyzylorda + + + Bejrút + + + Svatá Lucie + + + Lucemburk + + + Tripolis + + + Monako + + + Kišiněv + + + Rangún + + + Ulánbátar + + + Čojbalsan + + + Macao + + + Martinik + + + Nuakšott + + + Mauricius + + + Maledivy + + + México + + + Cancún + + + Nouméa + + + Káthmándú + + + Chathamské ostrovy + + + Maskat + + + Markézy + + + Gambierovy ostrovy + + + Karáčí + + + Varšava + + + Pitcairnovy ostrovy + + + Portoriko + + + Azorské ostrovy + + + Lisabon + + + Asunción + + + Katar + + + Réunion + + + Bukurešť + + + Bělehrad + + + Moskva + + + Jekatěrinburg + + + Novokuzněck + + + Krasnojarsk + + + Jakutsk + + + Chandyga + + + Sachalin + + + Kamčatka + + + Rijád + + + Mahé + + + Chartúm + + + Singapur + + + Sv. Helena + + + Lublaň + + + Mogadišu + + + Svatý Tomáš + + + Salvador + + + Lower Prince's Quarter + + + Damašek + + + Ndžamena + + + Kerguelenovy ostrovy + + + Lomé + + + Dušanbe + + + Ašchabad + + + Tchaj-pej + + + Užhorod + + + Kyjev + + + Záporoží + + + Beulah, Severní Dakota + + + New Salem, Severní Dakota + + + Center, Severní Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taškent + + + Vatikán + + + Svatý Vincenc + + + Svatý Tomáš (Karibik) + + + Ho Či Minovo město + + + Éfaté + + + + Acrejský čas + Acrejský standardní čas + Acrejský letní čas + + + + + Afghánský čas + + + + + Středoafrický čas + + + + + Východoafrický čas + + + + + Jihoafrický čas + + + + + Západoafrický čas + Západoafrický standardní čas + Západoafrický letní čas + + + + + Aljašský čas + Aljašský standardní čas + Aljašský letní čas + + + + + Almatský čas + Almatský standardní čas + Almatský letní čas + + + + + Amazonský čas + Amazonský standardní čas + Amazonský letní čas + + + + + Severoamerický centrální čas + Severoamerický centrální standardní čas + Severoamerický centrální letní čas + + + + + Severoamerický východní čas + Severoamerický východní standardní čas + Severoamerický východní letní čas + + + + + Severoamerický horský čas + Severoamerický horský standardní čas + Severoamerický horský letní čas + + + + + Severoamerický pacifický čas + Severoamerický pacifický standardní čas + Severoamerický pacifický letní čas + + + + + Anadyrský čas + Anadyrský standardní čas + Anadyrský letní čas + + + + + Aktauský čas + Aktauský standardní čas + Aktauský letní čas + + + + + Aktobský čas + Aktobský standardní čas + Aktobský letní čas + + + + + Arabský čas + Arabský standardní čas + Arabský letní čas + + + + + Argentinský čas + Argentinský standardní čas + Argentinský letní čas + + + + + Západoargentinský čas + Západoargentinský standardní čas + Západoargentinský letní čas + + + + + Arménský čas + Arménský standardní čas + Arménský letní čas + + + + + Atlantický čas + Atlantický standardní čas + Atlantický letní čas + + + + + Středoaustralský čas + Středoaustralský standardní čas + Středoaustralský letní čas + + + + + Středozápadní australský čas + Středozápadní australský standardní čas + Středozápadní australský letní čas + + + + + Východoaustralský čas + Východoaustralský standardní čas + Východoaustralský letní čas + + + + + Západoaustralský čas + Západoaustralský standardní čas + Západoaustralský letní čas + + + + + Ázerbájdžánský čas + Ázerbájdžánský standardní čas + Ázerbájdžánský letní čas + + + + + Azorský čas + Azorský standardní čas + Azorský letní čas + + + + + Bangladéšský čas + Bangladéšský standardní čas + Bangladéšský letní čas + + + + + Bhútánský čas + + + + + Bolivijský čas + + + + + Brasilijský čas + Brasilijský standardní čas + Brasilijský letní čas + + + + + Brunejský čas + + + + + Kapverdský čas + Kapverdský standardní čas + Kapverdský letní čas + + + + + Caseyský čas + + + + + Chamorrský čas + + + + + Chathamský čas + Chathamský standardní čas + Chathamský letní čas + + + + + Chilský čas + Chilský standardní čas + Chilský letní čas + + + + + Čínský čas + Čínský standardní čas + Čínský letní čas + + + + + Čojbalsanský čas + Čojbalsanský standardní čas + Čojbalsanský letní čas + + + + + Čas Vánočního ostrova + + + + + Čas Kokosových ostrovů + + + + + Kolumbijský čas + Kolumbijský standardní čas + Kolumbijský letní čas + + + + + Čas Cookových ostrovů + Standardní čas Cookových ostrovů + Letní čas Cookových ostrovů + + + + + Kubánský čas + Kubánský standardní čas + Kubánský letní čas + + + + + Čas Davisovy stanice + + + + + Čas stanice Dumonta d’Urvilla + + + + + Východotimorský čas + + + + + Čas Velikonočního ostrova + Standardní čas Velikonočního ostrova + Letní čas Velikonočního ostrova + + + + + Ekvádorský čas + + + + + Středoevropský čas + Středoevropský standardní čas + Středoevropský letní čas + + + SEČ + SEČ + SELČ + + + + + Východoevropský čas + Východoevropský standardní čas + Východoevropský letní čas + + + + + Západoevropský čas + Západoevropský standardní čas + Západoevropský letní čas + + + + + Falklandský čas + Falklandský standardní čas + Falklandský letní čas + + + + + Fidžijský čas + Fidžijský standardní čas + Fidžijský letní čas + + + + + Francouzskoguyanský čas + + + + + Čas Francouzských jižních a antarktických území + + + + + Galapážský čas + + + + + Gambierský čas + + + + + Gruzínský čas + Gruzínský standardní čas + Gruzínský letní čas + + + + + Čas Gilbertových ostrovů + + + + + Greenwichský střední čas + + + + + Východogrónský čas + Východogrónský standardní čas + Východogrónský letní čas + + + + + Západogrónský čas + Západogrónský standardní čas + Západogrónský letní čas + + + + + Guamský čas + + + + + Standardní čas Perského zálivu + + + + + Guyanský čas + + + + + Havajsko-aleutský čas + Havajsko-aleutský standardní čas + Havajsko-aleutský letní čas + + + + + Hongkongský čas + Hongkongský standardní čas + Hongkongský letní čas + + + + + Hovdský čas + Hovdský standardní čas + Hovdský letní čas + + + + + Indický čas + + + + + Indickooceánský čas + + + + + Indočínský čas + + + + + Středoindonéský čas + + + + + Východoindonéský čas + + + + + Západoindonéský čas + + + + + Íránský čas + Íránský standardní čas + Íránský letní čas + + + + + Irkutský čas + Irkutský standardní čas + Irkutský letní čas + + + + + Izraelský čas + Izraelský standardní čas + Izraelský letní čas + + + + + Japonský čas + Japonský standardní čas + Japonský letní čas + + + + + Petropavlovsko-kamčatský čas + Petropavlovsko-kamčatský standardní čas + Petropavlovsko-kamčatský letní čas + + + + + Východokazachstánský čas + + + + + Západokazachstánský čas + + + + + Korejský čas + Korejský standardní čas + Korejský letní čas + + + + + Kosrajský čas + + + + + Krasnojarský čas + Krasnojarský standardní čas + Krasnojarský letní čas + + + + + Kyrgyzský čas + + + + + Srílanský čas + + + + + Čas Rovníkových ostrovů + + + + + Čas ostrova lorda Howa + Standardní čas ostrova lorda Howa + Letní čas ostrova lorda Howa + + + + + Macajský čas + Macajský standardní čas + Macajský letní čas + + + + + Čas ostrova Macquarie + + + + + Magadanský čas + Magadanský standardní čas + Magadanský letní čas + + + + + Malajský čas + + + + + Maledivský čas + + + + + Markézský čas + + + + + Čas Marshallových ostrovů + + + + + Mauricijský čas + Mauricijský standardní čas + Mauricijský letní čas + + + + + Čas Mawsonovy stanice + + + + + Ulánbátarský čas + Ulánbátarský standardní čas + Ulánbátarský letní čas + + + + + Moskevský čas + Moskevský standardní čas + Moskevský letní čas + + + + + Myanmarský čas + + + + + Naurský čas + + + + + Nepálský čas + + + + + Novokaledonský čas + Novokaledonský standardní čas + Novokaledonský letní čas + + + + + Novozélandský čas + Novozélandský standardní čas + Novozélandský letní čas + + + + + Newfoundlandský čas + Newfoundlandský standardní čas + Newfoundlandský letní čas + + + + + Niuejský čas + + + + + Norfolský čas + + + + + Čas souostroví Fernando de Noronha + Standardní čas souostroví Fernando de Noronha + Letní čas souostroví Fernando de Noronha + + + + + Severomariánský čas + + + + + Novosibirský čas + Novosibirský standardní čas + Novosibirský letní čas + + + + + Omský čas + Omský standardní čas + Omský letní čas + + + + + Pákistánský čas + Pákistánský standardní čas + Pákistánský letní čas + + + + + Palauský čas + + + + + Čas Papuy-Nové Guiney + + + + + Paraguayský čas + Paraguayský standardní čas + Paraguayský letní čas + + + + + Peruánský čas + Peruánský standardní čas + Peruánský letní čas + + + + + Filipínský čas + Filipínský standardní čas + Filipínský letní čas + + + + + Čas Fénixových ostrovů + + + + + Pierre-miquelonský čas + Pierre-miquelonský standardní čas + Pierre-miquelonský letní čas + + + + + Čas Pitcairnova ostrova + + + + + Ponapský čas + + + + + Kyzylordský čas + Kyzylordský standardní čas + Kyzylordský letní čas + + + + + Réunionský čas + + + + + Čas Rotherovy stanice + + + + + Sachalinský čas + Sachalinský standardní čas + Sachalinský letní čas + + + + + Samarský čas + Samarský standardní čas + Samarský letní čas + + + + + Samojský čas + Samojský standardní čas + Samojský letní čas + + + + + Seychelský čas + + + + + Singapurský čas + + + + + Čas Šalamounových ostrovů + + + + + Jihogeorgijský čas + + + + + Surinamský čas + + + + + Čas stanice Šówa + + + + + Tahitský čas + + + + + Tchajpejský čas + Tchajpejský standardní čas + Tchajpejský letní čas + + + + + Tádžický čas + + + + + Tokelauský čas + + + + + Tonžský čas + Tonžský standardní čas + Tonžský letní čas + + + + + Chuukský čas + + + + + Turkmenský čas + Turkmenský standardní čas + Turkmenský letní čas + + + + + Tuvalský čas + + + + + Uruguayský čas + Uruguayský standardní čas + Uruguayský letní čas + + + + + Uzbecký čas + Uzbecký standardní čas + Uzbecký letní čas + + + + + Vanuatský čas + Vanuatský standardní čas + Vanuatský letní čas + + + + + Venezuelský čas + + + + + Vladivostocký čas + Vladivostocký standardní čas + Vladivostocký letní čas + + + + + Volgogradský čas + Volgogradský standardní čas + Volgogradský letní čas + + + + + Čas stanice Vostok + + + + + Čas ostrova Wake + + + + + Čas ostrovů Wallis a Futuna + + + + + Jakutský čas + Jakutský standardní čas + Jakutský letní čas + + + + + Jekatěrinburský čas + Jekatěrinburský standardní čas + Jekatěrinburský letní čas + + + + + + + , +   + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tisíc + 0 tisíce + 0 tisíce + 0 tisíc + 00 tisíc + 00 tisíc + 00 tisíce + 00 tisíc + 000 tisíc + 000 tisíc + 000 tisíce + 000 tisíc + 0 milion + 0 miliony + 0 milionu + 0 milionů + 00 milionů + 00 milionů + 00 milionu + 00 milionů + 000 milionů + 000 milionů + 000 milionu + 000 milionů + 0 miliarda + 0 miliardy + 0 miliardy + 0 miliard + 00 miliard + 00 miliard + 00 miliard + 00 miliard + 000 miliard + 000 miliard + 000 miliard + 000 miliard + 0 bilion + 0 biliony + 0 bilionu + 0 bilionů + 00 bilionů + 00 bilionů + 00 bilionů + 00 bilionů + 000 bilionů + 000 bilionů + 000 bilionů + 000 bilionů + + + + + 0 tis'.' + 0 tis'.' + 0 tis'.' + 0 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 0 mil'.' + 0 mil'.' + 0 mil'.' + 0 mil'.' + 00 mil'.' + 00 mil'.' + 00 mil'.' + 00 mil'.' + 000 mil'.' + 000 mil'.' + 000 mil'.' + 000 mil'.' + 0 mld'.' + 0 mld'.' + 0 mld'.' + 0 mld'.' + 00 mld'.' + 00 mld'.' + 00 mld'.' + 00 mld'.' + 000 mld'.' + 000 mld'.' + 000 mld'.' + 000 mld'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + andorrská peseta + andorrská peseta + andorrské pesety + andorrské pesety + andorrských peset + + + SAE dirham + SAE dirham + SAE dirhamy + SAE dirhamu + SAE dirhamů + + + afghánský afghán (1927–2002) + afghánský afghán (1927–2002) + afghánské afghány (1927–2002) + afghánského afghánu (1927–2002) + afghánských afghánů (1927–2002) + + + afghánský afghán + afghánský afghán + afghánské afghány + afghánského afghánu + afghánských afghánů + + + albánské lek (1946–1965) + albánský lek (1946–1965) + albánské leky (1946–1965) + albánského leku (1946–1965) + albánských leků (1946–1965) + + + albánský lek + albánský lek + albánské leky + albánského leku + albánských leků + + + arménský dram + arménský dram + arménské dramy + arménského dramu + arménských dramů + + + zlatý Nizozemských Antil + zlatý Nizozemských Antil + zlaté Nizozemských Antil + zlatého Nizozemských Antil + zlatých Nizozemských Antil + + + angolská kwanza + angolská kwanza + angolské kwanzy + angolské kwanzy + angolských kwanz + + + angolská kwanza (1977–1991) + angolská kwanza (1977–1991) + angolské kwanzy (1977–1991) + angolské kwanzy (1977–1991) + angolských kwanz (1977–1991) + + + angolská kwanza (1990–2000) + angolská nový kwanza (1990–2000) + angolská kwanza (1990–2000) + angolské kwanzy (1990–2000) + angolských kwanz (1990–2000) + + + angolská kwanza (1995–1999) + angolská nový kwanza (1995–1999) + angolská kwanza (1995–1999) + angolské kwanzy (1995–1999) + angolských kwanz (1995–1999) + + + argentinský austral + argentinský austral + argentinské australy + argentinského australu + argentinských australů + + + argentinské peso (1983–1985) + argentinské peso (1983–1985) + argentinská pesa (1983–1985) + argentinského pesa (1983–1985) + argentinských pes (1983–1985) + + + argentinské peso + argentinské peso + argentinská pesa + argentinského pesa + argentinských pes + + + rakouský šilink + rakouský šilink + rakouské šilinky + rakouského šilinku + rakouských šilinků + + + australský dolar + australský dolar + australské dolary + australského dolaru + australských dolarů + AU$ + + + arubský zlatý + arubský zlatý + arubské zlaté + arubského zlatého + arubských zlatých + + + ázerbájdžánský manat (1993–2006) + ázerbájdžánský manat (1993–2006) + ázerbájdžánské manaty (1993–2006) + ázerbájdžánského manatu (1993–2006) + ázerbájdžánských manatů (1993–2006) + + + ázerbájdžánský manat + ázerbájdžánský manat + ázerbájdžánské manaty + ázerbájdžánského manatu + ázerbájdžánských manatů + + + bosenský dinár (1992–1994) + bosenský dinár (1992–1994) + bosenské dináry (1992–1994) + bosenského dináru (1992–1994) + bosenských dinárů (1992–1994) + + + bosenská konvertibilní marka + bosenská konvertibilní marka + bosenské konvertibilní marky + bosenské konvertibilní marky + bosenských konvertibilních marek + + + bosenský nový dinár (1994–1997) + bosenský nový dinár (1994–1997) + bosenské nové dináry (1994–1997) + bosenského nového dináru (1994–1997) + bosenských nových dinárů (1994–1997) + + + barbadoský dolar + barbadoský dolar + barbadoské dolary + barbadoského dolaru + barbadoských dolarů + + + bangladéšská taka + bangladéšská taka + bangladéšské taky + bangladéšské taky + bangladéšských tak + + + belgický konvertibilní frank + belgický konvertibilní frank + belgické konvertibilní franky + belgického konvertibilního franku + belgických konvertibilních franků + + + belgický frank + belgický frank + belgické franky + belgického franku + belgických franků + + + belgický finanční frank + belgický finanční frank + belgické finanční franky + belgického finančního franku + belgických finančních franků + + + bulharský lev + bulharský lev + bulharské lvy + bulharského lva + bulharských lvů + + + bahrajnský dinár + bahrajnský dinár + bahrajnské dináry + bahrajnského dináru + bahrajnských dinárů + + + burundský frank + burundský frank + burundské franky + burundského franku + burundských franků + + + bermudský dolar + bermudský dolar + bermudské dolary + bermudského dolaru + bermudských dolarů + + + brunejský dolar + brunejský dolar + brunejské dolary + brunejského dolaru + brunejských dolarů + + + bolivijský boliviano + bolivijský boliviano + bolivijské bolivianos + bolivijského boliviana + bolivijských bolivianos + + + bolivijský boliviano (1863–1963) + bolivijský boliviano (1863–1963) + bolivijské bolivianos (1863–1963) + bolivijského boliviana (1863–1963) + bolivijských bolivianos (1863–1963) + + + bolivijské peso + bolivijské peso + bolivijská pesa + bolivijského pesa + bolivijských pes + + + bolivijský mvdol + bolivijský mvdol + bolivijské mvdoly + bolivijského mvdolu + bolivijských mvdolů + + + brazilský real + brazilský real + brazilské realy + brazilského realu + brazilských realů + R$ + + + bahamský dolar + bahamský dolar + bahamské dolary + bahamského dolaru + bahamských dolarů + + + bhútánský ngultrum + bhútánský ngultrum + bhútánské ngultrumy + bhútánského ngultrumu + bhútánských ngultrumů + + + barmský kyat + barmský kyat + barmské kyaty + barmského kyatu + barmských kyatů + + + botswanská pula + botswanská pula + botswanské puly + botswanské puly + botswanských pul + + + běloruský rubl (1994–1999) + běloruský rubl (1994–1999) + běloruské rubly (1994–1999) + běloruského rublu (1994–1999) + běloruských rublů (1994–1999) + + + běloruský rubl + běloruský rubl + běloruské rubly + běloruského rublu + běloruských rublů + + + belizský dolar + belizský dolar + belizské dolary + belizského dolaru + belizských dolarů + + + kanadský dolar + kanadský dolar + kanadské dolary + kanadského dolaru + kanadských dolarů + CA$ + + + konžský frank + konžský frank + konžské franky + konžského franku + konžských franků + + + švýcarský frank + švýcarský frank + švýcarské franky + švýcarského franku + švýcarských franků + + + chilské escudo + chilské escudo + chilská escuda + chilského escuda + chilských escud + + + chilské peso + chilské peso + chilská pesa + chilského pesa + chilských pes + + + čínský jüan + čínský jüan + čínské jüany + čínského jüanu + čínských jüanů + CN¥ + + + kolumbijské peso + kolumbijské peso + kolumbijská pesa + kolumbijského pesa + kolumbijských pes + + + kostarický colón + kostarický colón + kostarické colóny + kostarického colónu + kostarických colónů + + + československá koruna + československá koruna + československé koruny + československé koruny + československých korun + Kčs + + + kubánské konvertibilní peso + kubánské konvertibilní peso + kubánská konvertibilní pesa + kubánského konvertibilního pesa + kubánských konvertibilních pes + + + kubánské peso + kubánské peso + kubánská pesa + kubánského pesa + kubánských pes + + + kapverdské escudo + kapverdské escudo + kapverdská escuda + kapverdského escuda + kapverdských escud + + + kyperská libra + kyperská libra + kyperské libry + kyperské libry + kyperských liber + + + česká koruna + česká koruna + české koruny + české koruny + českých korun + + + + východoněmecká marka + východoněmecká marka + východoněmecké marky + východoněmecké marky + východoněmeckých marek + + + německá marka + německá marka + německé marky + německé marky + německých marek + + + džibutský frank + džibutský frank + džibutské franky + džibutského franku + džibutských franků + + + dánská koruna + dánská koruna + dánské koruny + dánské koruny + dánských korun + + + dominikánské peso + dominikánské peso + dominikánská pesa + dominikánského pesa + dominikánských pes + + + alžírský dinár + alžírský dinár + alžírské dináry + alžírského dináru + alžírských dinárů + + + estonská koruna + estonská koruna + estonské koruny + estonské koruny + estonských korun + + + egyptská libra + egyptská libra + egyptské libry + egyptské libry + egyptských liber + + + eritrejská nakfa + eritrejská nakfa + eritrejské nakfy + eritrejské nakfy + eritrejských nakf + + + španělská peseta („A“ účet) + španělská peseta („A“ účet) + španělské pesety („A“ účet) + španělské pesety („A“ účet) + španělských peset („A“ účet) + + + španělská peseta (konvertibilní účet) + španělská peseta (konvertibilní účet) + španělské pesety (konvertibilní účet) + španělské pesety (konvertibilní účet) + španělských peset (konvertibilní účet) + + + španělská peseta + španělská peseta + španělské pesety + španělské pesety + španělských peset + + + etiopský birr + etiopský birr + etiopské birry + etiopského birru + etiopských birrů + + + euro + euro + eura + eura + eur + + + + finská marka + finská marka + finské marky + finské marky + finských marek + + + fidžijský dolar + fidžijský dolar + fidžijské dolary + fidžijského dolaru + fidžijských dolarů + + + falklandská libra + falklandská libra + falklandské libry + falklandské libry + falklandských liber + + + francouzský frank + francouzský frank + francouzské franky + francouzského franku + francouzských franků + + + britská libra + britská libra + britské libry + britské libry + britských liber + £ + + + gruzínské lari + gruzínské lari + gruzínské lari + gruzínského lari + gruzínských lari + + + ghanský cedi (1979–2007) + ghanský cedi (1979–2007) + ghanské cedi (1979–2007) + ghanského cedi (1979–2007) + ghanských cedi (1979–2007) + + + ghanský cedi + ghanský cedi + ghanské cedi + ghanského cedi + ghanských cedi + + + gibraltarská libra + gibraltarská libra + gibraltarské libry + gibraltarské libry + gibraltarských liber + + + gambijský dalasi + gambijský dalasi + gambijské dalasi + gambijského dalasi + gambijských dalasi + + + guinejský frank + guinejský frank + guinejské franky + guinejského franku + guinejských franků + + + guinejský syli + guinejský syli + guinejské syli + guinejského syli + guinejských syli + + + řecká drachma + řecká drachma + řecké drachmy + řecké drachmy + řeckých drachem + + + guatemalský quetzal + guatemalský quetzal + guatemalské quetzaly + guatemalského quetzalu + guatemalských quetzalů + + + guinejsko-bissauské peso + guinejsko-bissauské peso + guinejsko-bissauská pesa + guinejsko-bissauského pesa + guinejsko-bissauských pes + + + guyanský dolar + guyanský dolar + guyanské dolary + guyanského dolaru + guyanských dolarů + + + hongkongský dolar + hongkongský dolar + hongkongské dolary + hongkongského dolaru + hongkongských dolarů + HK$ + + + honduraská lempira + honduraská lempira + honduraské lempiry + honduraské lempiry + honduraských lempir + + + chorvatský dinár + chorvatský dinár + chorvatské dináry + chorvatského dináru + chorvatských dinárů + + + chorvatská kuna + chorvatská kuna + chorvatské kuny + chorvatské kuny + chorvatských kun + + + haitský gourde + haitský gourde + haitské gourde + haitského gourde + haitských gourde + + + maďarský forint + maďarský forint + maďarské forinty + maďarského forintu + maďarských forintů + + + indonéská rupie + indonéská rupie + indonéské rupie + indonéské rupie + indonéských rupií + + + irská libra + irská libra + irské libry + irských liber + irských liber + + + izraelská libra + izraelská libra + izraelské libry + izraelské libry + izraelských liber + + + izraelský šekel (1980–1985) + izraelský šekel (1980–1985) + izraelské šekely (1980–1985) + izraelského šekelu (1980–1985) + izraelských šekelů (1980–1985) + + + izraelský nový šekel + izraelský nový šekel + izraelské nové šekely + izraelského nového šekelu + izraelských nový šekelů + + + + indická rupie + indická rupie + indické rupie + indické rupie + indických rupií + INR + + + irácký dinár + irácký dinár + irácké dináry + iráckého dináru + iráckých dinárů + + + íránský rijál + íránský rijál + íránské rijály + íránského rijálu + íránských rijálů + + + islandská koruna (1918–1981) + islandská koruna (1918–1981) + islandské koruny (1918–1981) + islandské koruny (1918–1981) + islandských korun (1918–1981) + + + islandská koruna + islandská koruna + islandské koruny + islandské koruny + islandských korun + + + italská lira + italská lira + italské liry + italské liry + italských lir + + + jamajský dolar + jamajský dolar + jamajské dolary + jamajského dolaru + jamajských dolarů + + + jordánský dinár + jordánský dinár + jordánské dináry + jordánského dináru + jordánských dinárů + + + japonský jen + japonský jen + japonské jeny + japonského jenu + japonských jenů + JP¥ + + + keňský šilink + keňský šilink + keňské šilinky + keňského šilinku + keňských šilinků + + + kyrgyzský som + kyrgyzský som + kyrgyzské somy + kyrgyzského somu + kyrgyzských somů + + + kambodžský riel + kambodžský riel + kambodžské riely + kambodžského rielu + kambodžských rielů + + + komorský frank + komorský frank + komorské franky + komorského franku + komorských franků + + + severokorejský won + severokorejský won + severokorejské wony + severokorejského wonu + severokorejských wonů + + + jihokorejský won + jihokorejský won + jihokorejské wony + jihokorejského wonu + jihokorejských wonů + + + + kuvajtský dinár + kuvajtský dinár + kuvajtské dináry + kuvajtského dináru + kuvajtských dinárů + + + kajmanský dolar + kajmanský dolar + kajmanské dolary + kajmanského dolaru + kajmanských dolarů + + + kazašské tenge + kazašské tenge + kazašské tenge + kazašského tenge + kazašských tenge + + + laoský kip + laoský kip + laoské kipy + laoského kipu + laoských kipů + + + libanonská libra + libanonská libra + libanonské libry + libanonské libry + libanonských liber + + + srílanská rupie + srílanská rupie + srílanské rupie + srílanské rupie + srílanských rupií + + + liberijský dolar + liberijský dolar + liberijské dolary + liberijského dolaru + liberijských dolarů + + + lesothský loti + lesothský loti + lesothské maloti + lesothského loti + lesothských maloti + + + litevský litas + litevský litas + litevské lity + litevského litu + litevských litů + + + litevský talonas + litevský talonas + litevské talony + litevského talonu + litevských talonů + + + lucemburský konvertibilní frank + lucemburský konvertibilní frank + lucemburské konvertibilní franky + lucemburského konvertibilního franku + lucemburských konvertibilních franků + + + lucemburský frank + lucemburský frank + lucemburské franky + lucemburských franků + lucemburských franků + + + lucemburský finanční frank + lucemburský finanční frank + lucemburské finanční franky + lucemburského finančního franku + lucemburských finančních franků + + + lotyšský lat + lotyšský lat + lotyšské laty + lotyšského latu + lotyšských latů + + + lotyšský rubl + lotyšský rubl + lotyšské rubly + lotyšského rublu + lotyšských rublů + + + libyjský dinár + libyjský dinár + libyjské dináry + libyjského dináru + libyjských dinárů + + + marocký dinár + marocký dinár + marocké dináry + marockého dináru + marockých dinárů + + + marocký frank + marocký frank + marocké franky + marockého franku + marockých franků + + + moldavský leu + moldavský leu + moldavské lei + moldavského leu + moldavských lei + + + madagaskarský ariary + madagaskarský ariary + madagaskarské ariary + madagaskarského ariary + madagaskarských ariary + + + madagaskarský frank + madagaskarský frank + madagaskarské franky + madagaskarského franku + madagaskarských franků + + + makedonský denár + makedonský denár + makedonské denáry + makedonského denáru + makedonských denárů + + + makedonský denár (1992–1993) + makedonský denár (1992–1993) + makedonské denáry (1992–1993) + makedonského denáru (1992–1993) + makedonských denárů (1992–1993) + + + malijský frank + malijský frank + malijské franky + malijského franku + malijských franků + + + myanmarský kyat + myanmarský kyat + myanmarské kyaty + myanmarského kyatu + myanmarských kyatů + + + mongolský tugrik + mongolský tugrik + mongolské tugriky + mongolského tugriku + mongolských tugriků + + + macajská pataca + macajská pataca + macajské patacy + macajské patacy + macajských patac + + + mauritánská ouguiya + mauritánská ouguiya + mauritánské ouguiye + mauritánské ouguiye + mauritánských ouguiyí + + + maltská lira + maltská lira + maltské liry + maltské liry + maltských lir + + + maltská libra + maltská libra + maltské libry + maltské libry + maltských liber + + + mauricijská rupie + mauricijská rupie + mauricijské rupie + mauricijské rupie + mauricijských rupií + + + maledivská rupie + maledivská rupie + maledivské rupie + maledivské rupie + maledivských rupií + + + malawijská kwacha + malawijská kwacha + malawijské kwachy + malawijské kwachy + malawijských kwach + + + mexické peso + mexické peso + mexická pesa + mexického pesa + mexických pes + MX$ + + + mexické stříbrné peso (1861–1992) + mexické stříbrné peso (1861–1992) + mexická stříbrná pesa (1861–1992) + mexického stříbrného pesa (1861–1992) + mexických stříbrných pes (1861–1992) + + + mexická investiční jednotka + mexická investiční jednotka + mexické investiční jednotky + mexické investiční jednotky + mexických investičních jednotek + + + malajsijský ringgit + malajsijský ringgit + malajsijské ringgity + malajsijského ringgitu + malajsijských ringgitů + + + mosambický escudo + mosambický escudo + mosambická escuda + mosambického escuda + mosambických escud + + + mosambický metical (1980–2006) + mosambický metical (1980–2006) + mosambické meticaly (1980–2006) + mosambického meticalu (1980–2006) + mosambických meticalů (1980–2006) + + + mozambický metical + mozambický metical + mozambické meticaly + mozambického meticalu + mozambických meticalů + + + namibijský dolar + namibijský dolar + namibijské dolary + namibijského dolaru + namibijských dolarů + + + nigerijská naira + nigerijská naira + nigerijské nairy + nigerijské nairy + nigerijských nair + + + nikaragujská córdoba (1988–1991) + nikaragujská córdoba (1988–1991) + nikaragujské córdoby (1988–1991) + nikaragujské córdoby (1988–1991) + nikaragujských córdob (1988–1991) + + + nikaragujská córdoba + nikaragujská córdoba + nikaragujské córdoby + nikaragujské córdoby + nikaragujských córdob + + + norská koruna + norská koruna + norské koruny + norské koruny + norských korun + + + nepálská rupie + nepálská rupie + nepálské rupie + nepálské rupie + nepálských rupií + + + novozélandský dolar + novozélandský dolar + novozélandské dolary + novozélandského dolaru + novozélandských dolarů + NZ$ + + + ománský rijál + ománský rijál + ománské rijály + ománského rijálu + ománských rijálů + + + panamská balboa + panamská balboa + panamské balboy + panamské balboy + panamských balboí + + + peruánská inti + peruánská inti + peruánské inti + peruánského inti + peruánských inti + + + peruánský nový sol + peruánský nový sol + peruánské nové soly + peruánského nového solu + peruánských nových solů + + + peruánský sol (1863–1965) + peruánský sol (1863–1965) + peruánské soly (1863–1965) + peruánského solu (1863–1965) + peruánských solů (1863–1965) + + + papuánská nová kina + papuánská nová kina + papuánské nové kiny + papuánské nové kiny + papuánských nových kin + + + filipínské peso + filipínské peso + filipínská pesa + filipínského pesa + filipínských pes + + + pákistánská rupie + pákistánská rupie + pákistánské rupie + pákistánské rupie + pákistánských rupií + + + polský zlotý + polský zlotý + polské zloté + polského zlotého + polských zlotých + + + polský zlotý (1950–1995) + polský zlotý (1950–1995) + polské zloté (1950–1995) + polského zlotého (1950–1995) + polských zlotých (1950–1995) + + + portugalské escudo + portugalské escudo + portugalská escuda + portugalského escuda + portugalských escud + + + paraguajské guarani + paraguajské guarani + paraguajská guarani + paraguajského guarani + paraguajských guarani + + + katarský rijál + katarský rijál + katarské rijály + katarského rijálu + katarských rijálů + + + rhodéský dolar + rhodéský dolar + rhodéské dolary + rhodéského dolaru + rhodéských dolarů + + + rumunské leu (1952–2006) + rumunské leu (1952–2006) + rumunské lei (1952–2006) + rumunského leu (1952–2006) + rumunských lei (1952–2006) + + + rumunské leu + rumunské leu + rumunské lei + rumunského leu + rumunských lei + + + srbský dinár + srbský dinár + srbské dináry + srbského dináru + srbských dinárů + + + ruský rubl + ruský rubl + ruské rubly + ruského rublu + ruských rublů + + + ruský rubl (1991–1998) + ruský rubl (1991–1998) + ruské rubly (1991–1998) + ruského rublu (1991–1998) + ruských rublů (1991–1998) + + + rwandský frank + rwandský frank + rwandské franky + rwandského franku + rwandských franků + + + saúdský rijál + saúdský rijál + saúdské rijály + saúdského rijálu + saúdských rijálů + + + šalamounský dolar + šalamounský dolar + šalamounské dolary + šalamounského dolaru + šalamounských dolarů + + + seychelská rupie + seychelská rupie + seychelské rupie + seychelské rupie + seychelských rupií + + + súdánský dinár (1992–2007) + súdánský dinár (1992–2007) + súdánské dináry (1992–2007) + súdánského dináru (1992–2007) + súdánských dinárů (1992–2007) + + + súdánská libra + súdánská libra + súdánské libry + súdánské libry + súdánských liber + + + súdánská libra (1957–1998) + súdánská libra (1957–1998) + súdánské libry (1957–1998) + súdánské libry (1957–1998) + súdánských liber (1957–1998) + + + švédská koruna + švédská koruna + švédské koruny + švédské koruny + švédských korun + + + singapurský dolar + singapurský dolar + singapurské dolary + singapurského dolaru + singapurských dolarů + + + svatohelenská libra + svatohelenská libra + svatohelenské libry + svatohelenské libry + svatohelenských liber + + + slovinský tolar + slovinský tolar + slovinské tolary + slovinského tolaru + slovinských tolarů + + + slovenská koruna + slovenská koruna + slovenské koruny + slovenské koruny + slovenských korun + + + sierro-leonský leone + sierro-leonský leone + sierro-leonské leone + sierro-leonského leone + sierro-leonských leone + + + somálský šilink + somálský šilink + somálské šilinky + somálského šilinku + somálských šilinků + + + surinamský dolar + surinamský dolar + surinamské dolary + surinamského dolaru + surinamských dolarů + + + surinamský zlatý + surinamský zlatý + surinamské zlaté + surinamského zlatého + surinamských zlatých + + + jihosúdánská libra + jihosúdánská libra + jihosúdánské libry + jihosúdánské libry + jihosúdánských liber + + + svatotomášská dobra + svatotomášská dobra + svatotomášské dobry + svatotomášské dobry + svatotomášských dober + + + sovětský rubl + sovětský rubl + sovětské rubly + sovětského rublu + sovětských rublů + + + salvadorský colón + salvadorský colón + salvadorské colóny + salvadorského colónu + salvadorských colónů + + + syrská libra + syrská libra + syrské libry + syrské libry + syrských liber + + + svazijský lilangeni + svazijský lilangeni + svazijské emalangeni + svazijského lilangeni + svazijských emalangeni + + + thajský baht + thajský baht + thajské bahty + thajského bahtu + thajských bahtů + THB + + + tádžický rubl + tádžický rubl + tádžické rubly + tádžického rublu + tádžických rublů + + + tádžické somoni + tádžické somoni + tádžická somoni + tádžického somoni + tádžických somoni + + + turkmenský manat (1993–2009) + turkmenský manat (1993–2009) + turkmenské manaty (1993–2009) + turkmenského manatu (1993–2009) + turkmenských manatů (1993–2009) + + + turkmenský manat + turkmenský manat + turkmenské manaty + turkmenského manatu + turkmenských manatů + + + tuniský dinár + tuniský dinár + tuniské dináry + tuniského dináru + tuniských dinárů + + + tonžská paanga + tonžská paanga + tonžské paangy + tonžské paangy + tonžských paang + + + timorské escudo + timorské escudo + timorská escuda + timorského escuda + timorských escud + + + turecká lira (1922–2005) + turecká lira (1922–2005) + turecké liry (1922–2005) + turecké liry (1922–2005) + tureckých lir (1922–2005) + + + turecká lira + turecká lira + turecké liry + turecké liry + tureckých lir + + + trinidadský dolar + trinidadský dolar + trinidadské dolary + trinidadského dolaru + trinidadských dolarů + + + tchajwanský dolar + tchajwanský dolar + tchajwanské dolary + tchajwanského dolaru + tchajwanských dolarů + NT$ + + + tanzanský šilink + tanzanský šilink + tanzanské šilinky + tanzanského šilinku + tanzanských šilinků + + + ukrajinská hřivna + ukrajinská hřivna + ukrajinské hřivny + ukrajinské hřivny + ukrajinských hřiven + + + ukrajinský karbovanec + ukrajinský karbovanec + ukrajinské karbovance + ukrajinského karbovance + ukrajinských karbovanců + + + ugandský šilink (1966–1987) + ugandský šilink (1966–1987) + ugandské šilinky (1966–1987) + ugandského šilinku (1966–1987) + ugandských šilinků (1966–1987) + + + ugandský šilink + ugandský šilink + ugandské šilinky + ugandského šilinku + ugandských šilinků + + + americký dolar + americký dolar + americké dolary + amerického dolaru + amerických dolarů + US$ + + + americký dolar (příští den) + americký dolar (příští den) + americké dolary (příští den) + amerických dolarů (příští den) + amerických dolarů (příští den) + + + americký dolar (týž den) + americký dolar (týž den) + americké dolary (týž den) + amerických dolarů (týž den) + amerických dolarů (týž den) + + + uruguayské peso (1975–1993) + uruguayské peso (1975–1993) + uruguayská pesa (1975–1993) + uruguayského pesa (1975–1993) + uruguayských pes (1975–1993) + + + uruguayské peso + uruguayské peso + uruguayská pesa + uruguayského pesa + uruguayských pes + + + uzbecký sum + uzbecký sum + uzbecké sumy + uzbeckého sumu + uzbeckých sumů + + + venezuelský bolívar (1871–2008) + venezuelský bolívar (1871–2008) + venezuelské bolívary (1871–2008) + venezuelského bolívaru (1871–2008) + venezuelských bolívarů (1871–2008) + + + venezuelský bolívar + venezuelský bolívar + venezuelské bolívary + venezuelského bolívaru + venezuelských bolívarů + + + vietnamský dong + vietnamský dong + vietnamské dongy + vietnamského dongu + vietnamských dongů + VND + + + vietnamský dong (1978–1985) + vietnamský dong (1978–1985) + vietnamské dongy (1978–1985) + vietnamského dongu (1978–1985) + vietnamských dongů (1978–1985) + + + vanuatský vatu + vanuatský vatu + vanuatské vatu + vanuatského vatu + vanuatských vatu + + + samojská tala + samojská tala + samojské taly + samojské taly + samojských tal + + + CFA/BEAC frank + CFA/BEAC frank + CFA/BEAC franky + CFA/BEAC franku + CFA/BEAC franků + FCFA + + + stříbro + trojská unce stříbra + trojské unce stříbra + trojské unce stříbra + trojských uncí stříbra + + + zlato + trojská unce zlata + trojské unce zlata + trojské unce zlata + trojských uncí zlata + + + evropská smíšená jednotka + evropská smíšená jednotka + evropské smíšené jednotky + evropské smíšené jednotky + evropských smíšených jednotek + + + evropská peněžní jednotka + EMU + EMU + EMU + EMU + EMU + + + evropská jednotka účtu 9 (XBC) + evropská jednotka účtu 9 (XBC) + evropské jednotky účtu 9 (XBC) + evropské jednotky účtu 9 (XBC) + evropských jednotek účtu 9 (XBC) + + + evropská jednotka účtu 17 (XBD) + evropská jednotka účtu 17 (XBD) + evropské jednotky účtu 17 (XBD) + evropské jednotky účtu 17 (XBD) + evropských jednotek účtu 17 (XBD) + + + východokaribský dolar + východokaribský dolar + východokaribské dolary + východokaribského dolaru + východokaribských dolarů + EC$ + + + SDR + + + evropská měnová jednotka + ECU + ECU + ECU + ECU + ECU + + + francouzský zlatý frank + francouzský zlatý frank + francouzské zlaté franky + francouzského zlatého franku + francouzských zlatých franků + + + francouzský UIC frank + francouzský UIC frank + francouzské UIC franky + francouzského UIC franku + francouzských UIC franků + + + CFA/BCEAO frank + CFA/BCEAO frank + CFA/BCEAO franky + CFA/BCEAO franku + CFA/BCEAO franků + CFA + + + palladium + trojská unce palladia + trojské unce palladia + trojské unce palladia + trojských uncí palladia + + + CFP frank + CFP frank + CFP franky + CFP franku + CFP franků + CFPF + + + platina + trojská unce platiny + trojské unce platiny + trojské unce platiny + trojských uncí platiny + + + kód fondů RINET + + + kód zvlášť vyhrazený pro testovací účely + kód zvlášť vyhrazený pro testovací účely + kódy zvlášť vyhrazené pro testovací účely + kódů zvlášť vyhrazených pro testovací účely + kódů zvlášť vyhrazených pro testovací účely + + + neznámá měna + neznámá měna + neznámá měna + neznámá měna + neznámá měna + + + jemenský dinár + jemenský dinár + jemenské dináry + jemenského dináru + jemenských dinárů + + + jemenský rijál + jemenský rijál + jemenské rijály + jemenského rijálu + jemenských rijálů + + + jugoslávský dinár (1966–1990) + jugoslávský dinár (1966–1990) + jugoslávské dináry (1966–1990) + jugoslávského dináru (1966–1990) + jugoslávských dinárů (1966–1990) + + + jugoslávský nový dinár (1994–2002) + jugoslávský nový dinár (1994–2002) + jugoslávské nové dináry (1994–2002) + jugoslávského nového dináru (1994–2002) + jugoslávských nových dinárů (1994–2002) + + + jugoslávský konvertibilní dinár (1990–1992) + jugoslávský konvertibilní dinár (1990–1992) + jugoslávské konvertibilní dináry (1990–1992) + jugoslávského konvertibilního dináru (1990–1992) + jugoslávských konvertibilních dinárů (1990–1992) + + + jihoafrický finanční rand + jihoafrický finanční rand + jihoafrické finanční randy + jihoafrického finančního randu + jihoafrických finančních randů + + + jihoafrický rand + jihoafrický rand + jihoafrické randy + jihoafrického randu + jihoafrických randů + + + zambijská kwacha (1968–2012) + zambijská kwacha (1968–2012) + zambijské kwachy (1968–2012) + zambijské kwachy (1968–2012) + zambijských kwach (1968–2012) + + + zambijská kwacha + zambijská kwacha + zambijské kwachy + zambijské kwachy + zambijských kwach + + + zairský nový zaire (1993–1998) + zairský nový zaire (1993–1998) + zairské nové zairy (1993–1998) + zairského nového zairu (1993–1998) + zairských nových zairů (1993–1998) + + + zairský zaire (1971–1993) + zairský zaire (1971–1993) + zairské zairy (1971–1993) + zairského zairu (1971–1993) + zairských zairů (1971–1993) + + + zimbabwský dolar (1980–2008) + zimbabwský dolar (1980–2008) + zimbabwské dolary (1980–2008) + zimbabwského dolaru (1980–2008) + zimbabwských dolarů (1980–2008) + + + zimbabwský dolar (2009) + zimbabwský dolar (2009) + zimbabwské dolary (2009) + zimbabwského dolaru (2009) + zimbabwských dolarů (2009) + + + zimbabwský dolar (2008) + zimbabwský dolar (2008) + zimbabwské dolary (2008) + zimbabwského dolaru (2008) + zimbabwských dolarů (2008) + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0} minuta + {0} minuty + {0} minuty + {0} minut + + + {0} sekunda + {0} sekundy + {0} sekundy + {0} sekund + + + {0} stupeň + {0} stupně + {0} stupně + {0} stupňů + + + {0} akr + {0} akry + {0} akru + {0} akrů + + + {0} hektar + {0} hektary + {0} hektaru + {0} hektarů + + + {0} stopa čtvereční + {0} stopy čtvereční + {0} stopy čtvereční + {0} stop čtverečních + + + {0} kilometr čtvereční + {0} kilometry čtvereční + {0} kilometru čtverečního + {0} kilometrů čtverečních + + + {0} metr čtvereční + {0} metry čtvereční + {0} metru čtverečního + {0} metrů čtverečních + + + {0} míle čtvereční + {0} míle čtvereční + {0} míle čtvereční + {0} mil čtverečních + + + {0} den + {0} dny + {0} dne + {0} dní + + + {0} hodina + {0} hodiny + {0} hodiny + {0} hodin + + + {0} milisekunda + {0} milisekundy + {0} milisekundy + {0} milisekund + + + {0} minuta + {0} minuty + {0} minuty + {0} minut + + + {0} měsíc + {0} měsíce + {0} měsíce + {0} měsíců + + + {0} sekunda + {0} sekundy + {0} sekundy + {0} sekund + + + {0} týden + {0} týdny + {0} týdne + {0} týdnů + + + {0} rok + {0} roky + {0} roku + {0} let + + + {0} centimetr + {0} centimetry + {0} centimetru + {0} centimetrů + + + {0} stopa + {0} stopy + {0} stopy + {0} stop + + + {0} palec + {0} palce + {0} palce + {0} palců + + + {0} kilometr + {0} kilometry + {0} kilometru + {0} kilometrů + + + {0} světelný rok + {0} světelné roky + {0} světelného roku + {0} světelných let + + + {0} metr + {0} metry + {0} metru + {0} metrů + + + {0} míle + {0} míle + {0} míle + {0} mil + + + {0} milimetr + {0} milimetry + {0} milimetru + {0} milimetrů + + + {0} pikometr + {0} pikometry + {0} pikometru + {0} pikometrů + + + {0} yard + {0} yardy + {0} yardu + {0} yardů + + + {0} gram + {0} gramy + {0} gramu + {0} gramů + + + {0} kilogram + {0} kilogramy + {0} kilogramu + {0} kilogramů + + + {0} unce + {0} unce + {0} unce + {0} uncí + + + {0} libra + {0} libry + {0} libry + {0} liber + + + {0} koňská síla + {0} koňské síly + {0} koňské síly + {0} koňských sil + + + {0} kilowatt + {0} kilowatty + {0} kilowattu + {0} kilowattů + + + {0} watt + {0} watty + {0} wattu + {0} wattů + + + {0} hektopascal + {0} hektopascaly + {0} hektopascalu + {0} hektopascalů + + + {0} palec rtuti + {0} palce rtuti + {0} palce rtuti + {0} palců rtuti + + + {0} milibar + {0} milibary + {0} milibaru + {0} milibarů + + + {0} kilometr za hodinu + {0} kilometry za hodinu + {0} kilometru za hodinu + {0} kilometrů za hodinu + + + {0} metr za sekundu + {0} metry za sekundu + {0} metru za sekundu + {0} metrů za sekundu + + + {0} míle za hodinu + {0} míle za hodinu + {0} míle za hodinu + {0} mil za hodinu + + + {0} stupeň Celsia + {0} stupně Celsia + {0} stupně Celsia + {0} stupňů Celsia + + + {0} stupeň Fahrenheita + {0} stupně Fahrenheita + {0} stupně Fahrenheita + {0} stupňů Fahrenheita + + + {0} kilometr krychlový + {0} kilometry krychlové + {0} kilometru krychlového + {0} kilometrů krychlových + + + {0} míle krychlová + {0} míle krychlové + {0} míle krychlové + {0} mil krychlových + + + {0} litr + {0} litry + {0} litru + {0} litrů + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} den + {0} dny + {0} dne + {0} dní + + + {0} h + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + {0} min + + + {0} měs. + {0} měs. + {0} měs. + {0} měs. + + + {0} s + {0} s + {0} s + {0} s + + + {0} týd. + {0} týd. + {0} týd. + {0} týd. + + + {0} rok + {0} roky + {0} roku + {0} let + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} hp + {0} hp + {0} hp + {0} hp + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mb + {0} mb + {0} mb + {0} mb + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + {0} °C + {0} °C + + + {0} °F + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + {0} d + + + {0} h + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + {0} min + + + {0} měs. + {0} měs. + {0} měs. + {0} měs. + + + {0} s + {0} s + {0} s + {0} s + + + {0} týd. + {0} týd. + {0} týd. + {0} týd. + + + {0} r + {0} r + {0} r + {0} r + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} km + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} hp + {0} hp + {0} hp + {0} hp + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} "Hg + {0} "Hg + {0} inHg + {0} "Hg + + + {0} mb + {0} mb + {0} mb + {0} mb + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} ° + {0} ° + {0} ° + {0} ° + + + {0} °F + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} a {1} + {0} a {1} + + + {0}, {1} + {0}, {1} + {0} a {1} + {0} a {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0} a {1} + {0}, {1} + + + + + ano:a + ne:n + + + + diff --git a/library/Zend/Locale/Data/cs_CZ.xml b/library/Zend/Locale/Data/cs_CZ.xml new file mode 100755 index 000000000..53b165179 --- /dev/null +++ b/library/Zend/Locale/Data/cs_CZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/cy.xml b/library/Zend/Locale/Data/cy.xml new file mode 100755 index 000000000..df05d8a46 --- /dev/null +++ b/library/Zend/Locale/Data/cy.xml @@ -0,0 +1,5666 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Affareg + Abchaseg + Acehneg + Acoli + Circaseg Gorllewinol + Afestaneg + Affricâneg + Affrihili + Ainŵeg + Acaneg + Acadeg + Alewteg + Altäeg Deheuol + Amhareg + Aragoneg + Hen Saesneg + Arabeg + Arabeg Modern Safonol + Aramaeg + Arawcaneg + Arawaceg + Asameg + Afareg + Aserbaijaneg + Bashcorteg + Balwtsi + Balïeg + Basâeg + Bamwmeg + Belarwseg + Bejäeg + Bembeg + Bena + Bwlgareg + Bislama + Comeg + Bambareg + Bengaleg + Tibeteg + Llydaweg + Bosnieg + Bwriateg + Bwlw + Catalaneg + Cado + Caribeg + Atsameg + Tsietsieneg + Tsiamorro + Marieg + Siocto + Tsierocî + Cheyenne + Cwrdeg Sorani + Corseg + Copteg + Cri + Tyrceg y Crimea + Tsieceg + Hen Slafoneg + Cymraeg + Daneg + Dacotaeg + Dargwa + Almaeneg + Almaeneg Awstria + Almaeneg Safonol y Swistir + Dinca + Zarmaeg + Dogri + Sorbeg Isaf + Iseldireg Canol + Difehi + Embw + Ewe + Hen Eiffteg + Groeg + Elameg + Saesneg + Saesneg Awstralia + Saesneg Canada + Saesneg Prydain + Saesneg (DU) + Saesneg UDA + Saesneg (UDA) + Saesneg Canol + Esperanto + Sbaeneg + Sbaeneg America Ladin + Sbaeneg Ewrop + Sbaeneg Mecsico + Estoneg + Basgeg + Ewondo + Perseg + Ffanti + Ffwla + Ffinneg + Ffilipineg + Ffijïeg + Ffaröeg + Ffrangeg + Ffrangeg Canada + Ffrangeg y Swistir + Ffrangeg Canol + Hen Ffrangeg + Ffriseg y Gogledd + Ffriseg y Dwyrain + Ffriwleg + Ffriseg y Gorllewin + Gwyddeleg + Gaio + Gbaia + Gaeleg yr Alban + Gilberteg + Galisieg + Guaraní + Gotheg + Hen Roeg + Almaeneg y Swistir + Gwjarati + Manaweg + Hawsa + Haida + Hawäieg + Hebraeg + Hindi + Hetheg + Croateg + Sorbeg Uchaf + Creol Haiti + Hwngareg + Armeneg + Herero + Interlingua + Ibaneg + Ibibio + Indoneseg + Interlingue + Igbo + Nwosw + Inwpiaceg + Ilocaneg + Ingwsieg + Islandeg + Eidaleg + Inwctitwt + Japaneeg + Matsiame + Iddew-Bersieg + Iddew-Arabeg + Jafanaeg + Georgeg + Cara-Calpaceg + Cabileg + Camba + Circaseg Dwyreiniol + Macondeg + Caboferdianeg + Congo + Càseg + Cicwyeg + Casacheg + Chmereg + Kannada + Coreeg + Concani + Canwri + Careleg + Cashmireg + Baffia + Cwleneg + Cwrdeg + Cwmiceg + Comi + Cernyweg + Cirgiseg + Lladin + Iddew-Sbaeneg + Langi + Lahnda + Lamba + Lwcsembwrgeg + Lezgheg + Ganda + Limbwrgeg + Lingala + Laoeg + Mongo + Lozi + Lithwaneg + Lwnda + Lŵo + Lwshaieg + Lwyia + Latfieg + Magahi + Maithili + Macasareg + Mandingo + Masai + Mocsia + Mandareg + Mendeg + Mêrw + Malagaseg + Gwyddeleg Canol + Marsialeg + Maori + Micmaceg + Macedoneg + Malayalam + Mongoleg + Manshw + Manipwri + Mohoceg + Mosi + Marathi + Maleieg + Malteg + Mas + mwy nag un iaith + Mirandeg + Marwari + Byrmaneg + Nawrŵeg + Naplieg + Norwyeg Bokmål + Ndebele Gogleddol + Isel Almaeneg + Nepaleg + Newaeg + Iseldireg + Fflemeg + Norwyeg Nynorsk + Norwyeg + Hen Norseg + Ndebele Deheuol + Nŵereg + Nafaho + Hen Newari + Nianja + Niamwezi + Niancole + Nioro + Nzimeg + Ocsitaneg + Ojibwa + Oromo + Oriya + Oseteg + Tyrceg Otoman + Pwnjabeg + Pahlafi + Pampanga + Hen Bersieg + Phoeniceg + Pali + Pwyleg + Hen Brofensaleg + Pashto + Portiwgeeg + Portiwgeeg Brasil + Portiwgeeg Ewrop + Quechua + Raratongeg + Romaunsch + Rwndi + Rwmaneg + Moldofeg + Rombo + Romani + y Gwraidd + Rwseg + Aromaneg + Ciniarŵandeg + Sansgrit + Sandäweg + Iacwteg + Aramaeg Samaria + Sambŵrw + Sasaceg + Santali + Ngambeieg + Sardeg + Sisileg + Sgoteg + Sindhi + Sami Gogleddol + Selcypeg + Sango + Hen Wyddeleg + Serbo-Croateg + Arabeg Chad + Sinhaleg + Sidamo + Slofaceg + Slofeneg + Samöeg + Sami Deheuol + Sami Lwle + Sami Inari + Sami Scolt + Soninceg + Somaleg + Sogdeg + Albaneg + Serbeg + Sesotheg + Swndaneg + Swcwma + Swsŵeg + Swmereg + Swedeg + Swahili + Comoreg + Swahili'r Congo + Hen Syrieg + Syrieg + Tamileg + Telugu + Tajiceg + Thai + Tigrinya + Twrcmeneg + Tagalog* + Klingon + Tswana + Tongeg + Tyrceg + Tsongaeg + Tatareg + Twfalweg + Twi + Tahitïeg + Fotiaceg + Uighur + Wgariteg + Wcreineg + Iaith Anhysbys + Wrdw + Wsbeceg + Faieg + Fendeg + Fietnameg + Walwneg + Walamo + Woloff + Calmyceg + Xhosa + Iembaeg + Iddew-Almaeneg + Iorwba + Cantoneeg + Zapoteceg + Blisssymbols + Tamazight Safonol Moroco + Tsieineeg + Tsieineeg Symledig + Tsieineeg Traddodiadol + Swlw + Dim cynnwys ieithyddol + Zazäeg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Y Byd + Affrica + Gogledd America + De America + Oceania + Gorllewin Affrica + Canolbarth America + Dwyrain Affrica + Gogledd Affrica + Canol Affrica + Deheudir Affrica + Yr Amerig + America i'r Gogledd o Mecsico + Y Caribî + Dwyrain Asia + De Asia + De-Ddwyrain Asia + De Ewrop + Awstralasia + Melanesia + Rhanbarth Micronesia + Polynesia + Asia + Canol Asia + Gorllewin Asia + Ewrop + Dwyrain Ewrop + Gogledd Ewrop + Gorllewin Ewrop + America Ladin + Ynys Ascension + Andorra + Emiradau Arabaidd Unedig + Afghanistan + Antigua a Barbuda + Anguilla + Albania + Armenia + Ynysoedd Caribî yr Iseldiroedd + Angola + Antarctica + Yr Ariannin + Samoa America + Awstria + Awstralia + Aruba + Ynysoedd Åland + Azerbaijan + Bosnia a Hercegovina + Barbados + Bangladesh + Gwlad Belg + Burkina Faso + Bwlgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolifia + Antilles yr Iseldiroedd + Brasil + Y Bahamas + Bhutan + Ynys Bouvet + Botswana + Belarws + Belize + Canada + Ynysoedd Cocos (Keeling) + Y Congo - Kinshasa + y Congo (G.Dd.C.) + Gweriniaeth Canolbarth Affrica + Y Congo - Brazzaville + Y Congo (Gweriniaeth) + Y Swistir + Côte d’Ivoire + Ynysoedd Cook + Chile + Camerŵn + Tsieina + Colombia + Ynys Clipperton + Costa Rica + Ciwba + Cabo Verde + Curaçao + Ynys y Nadolig + Cyprus + Gweriniaeth Tsiec + Yr Almaen + Diego Garcia + Djibouti + Denmarc + Dominica + Gweriniaeth Dominica + Algeria + Ceuta a Melilla + Ecuador + Estonia + Yr Aifft + Gorllewin Sahara + Eritrea + Sbaen + Ethiopia + Yr Undeb Ewropeaidd + Y Ffindir + Fiji + Ynysoedd y Falkland/Malvinas + Ynysoedd y Falkland (Ynysoedd y Malfinas) + Micronesia + Føroyar + Ffrainc + Gabon + Y Deyrnas Unedig + DU + Grenada + Georgia + Guyane Ffrengig + Ynys y Garn + Ghana + Gibraltar + Yr Ynys Las + Gambia + Guinée + Guadeloupe + Guinea Gyhydeddol + Gwlad Groeg + De Georgia ac Ynysoedd Sandwich y De + Guatemala + Guam + Guiné-Bissau + Guyana + Hong Kong RhGA Tsieina + Hong Kong + Ynys Heard ac Ynysoedd McDonald + Honduras + Croatia + Haiti + Hwngari + Yr Ynysoedd Dedwydd + Indonesia + Iwerddon + Israel + Ynys Manaw + India + Tiriogaeth Brydeinig Cefnfor India + Irac + Iran + Gwlad yr Iâ + Yr Eidal + Jersey + Jamaica + Gwlad Iorddonen + Japan + Kenya + Kyrgyzstan + Cambodia + Kiribati + Comoros + Saint Kitts a Nevis + Gogledd Korea + De Korea + Kuwait + Ynysoedd Cayman + Kazakstan + Laos + Libanus + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lithuania + Lwcsembwrg + Latfia + Libya + Moroco + Monaco + Moldofa + Montenegro + Saint Martin + Madagascar + Ynysoedd Marshall + Macedonia + Macedonia (CWIM) + Mali + Myanmar (Burma) + Mongolia + Macau RhGA Tsieina + Macau + Ynysoedd Gogledd Mariana + Martinique + Mauritania + Montserrat + Malta + Mauritius + Y Maldives + Malawi + Mecsico + Malaysia + Mozambique + Namibia + Caledonia Newydd + Niger + Ynys Norfolk + Nigeria + Nicaragua + Yr Iseldiroedd + Norwy + Nepal + Nauru + Niue + Seland Newydd + Oman + Panama + Periw + Polynesia Ffrengig + Papua Guinea Newydd + Pilipinas + Pakistan + Gwlad Pwyl + Saint-Pierre-et-Miquelon + Ynysoedd Pitcairn + Puerto Rico + Tiriogaethau Palesteinaidd + Palesteina + Portiwgal + Palau + Paraguay + Qatar + Oceania Bellennig + Réunion + Rwmania + Serbia + Rwsia + Rwanda + Saudi Arabia + Ynysoedd Solomon + Seychelles + Swdan + Sweden + Singapore + Saint Helena + Slofenia + Svalbard a Jan Mayen + Slofacia + Sierra Leone + San Marino + Sénégal + Somalia + Suriname + De Swdan + São Tomé a Príncipe + El Salvador + Sint Maarten + Syria + Gwlad Swazi + Tristan da Cunha + Ynysoedd Turks a Caicos + Tchad + Tiroedd Deheuol ac Antarctig Ffrainc + Togo + Gwlad Thai + Tajikistan + Tokelau + Timor-Leste + Dwyrain Timor + Turkmenistan + Tunisia + Tonga + Twrci + Trinidad a Tobago + Tuvalu + Taiwan + Tanzania + Wcráin + Uganda + Ynysoedd Pellennig UDA + Yr Unol Daleithiau + UDA + Uruguay + Uzbekistan + Y Fatican + Saint Vincent a’r Grenadines + Venezuela + Ynysoedd Gwyryf Prydain + Ynysoedd Gwyryf yr Unol Daleithiau + Fietnam + Vanuatu + Wallis a Futuna + Samoa + Kosovo + Yemen + Mayotte + De Affrica + Zambia + Zimbabwe + Rhanbarth Anhysbys + + + Calendr + Trefn + Arian Breiniol + Rhifau + + + Digidau Arabig-Indig + Digidau Arabig-Indig Estynedig + Rhifolion Armenaidd + Rhifolion Armenaidd mewn Llythrennau Bychain + Digidau Bengalaidd + Trefn Traddodiadol Tsieina - Big5 + Calendr y Bwdiaid + Calendr Tseina + Calendr y Coptiaid + Calendr Dangi + Digidau Devanāgarīg + Trefn Geiriadur + Trefn Rhagosodedig Unicode + Rheolau trefnu Ewropeaidd + Rhifolion Ethiopig + Calendr Ethiopia + Calendr Amete Alem Ethiopia + Digidau Lled Llawn + Trefn Symledig Tsieina - GB2312 + Rhifolion Georgaidd + Calendr Gregori + Rhifolion Groegaidd + Rhifolion Groegaidd mewn Llythrennau Bychain + Digidau Gujarataidd + Digidau Gwrmwcaidd + Rhifolion Degol Tsieineaidd + Rhifolion Tsieineaidd Symledig + Rhifolion Ariannol Tsieineaidd Symledig + Rhifolion Tsieineaidd Traddodiadol + Rhifolion Ariannol Tsieineaidd Traddodiadol + Rhifolion Hebreig + Calendr yr Hebraed + Calendr Cenedlaethol India + Calendr Islam + Calendr Islam (Umm al-Qura) + Calendr ISO-8601 + Calendr Japan + Rhifolion Japaneaidd + Rhifolion Ariannol Japaneaidd + Digidau Chmeraidd + Digidau Canaraidd + Digidau Laoaidd + Digidau Gorllewinol + Digidau Malayalamaidd + Digidau Mongolia + Digidau Myanmar + Digidau Orïaidd + Calendr Persia + Trefn Llyfr Ffôn + Trefn Pinyin + Trefn Diwygiedig + Rhifolion Rhufeinig + Rhifolion Rhufeinig mewn Llythrennau Bychain + Chwilio at Ddibenion Cyffredinol + Trefn Safonol + Rhifolion Tamilaidd Traddodiadol + Digidau Tamilaidd + Digidau Telugu + Digidau Thai + Digidau Tibetaidd + Trefn Traddodiadol + Trefn Zhuyin + + + Metrig + DU + UDA + + + Iaith: {0} + Sgript: {0} + Rhanbarth: {0} + + + + [a á à â ä b c {ch} d {dd} e é è ê ë f {ff} g {ng} h i í ì î ï j l {ll} m n o ó ò ô ö p {ph} r {rh} s t {th} u ú ù û ü w ẃ ẁ ŵ ẅ y ý ỳ ŷ ÿ] + [ă å ã ā æ ç ĕ ē ĭ ī k ñ ŏ ø ō œ q ŭ ū v x z] + [A B C {CH} D {DD} E F {FF} G {NG} H I J K L {LL} M N O P {PH} Q R {RH} S T {TH} U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + mm:ss + y + y G + M/y G + d/M/y G + E, d/M/y G + MMM y G + d MMM y G + E, d MMM y G + Q y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M-M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM-MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + LLLL-LLLL + + + y-y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + d/M/y - d/M/y GGGGG + d/M/y - d/M/y GGGGG + d/M/y - d/M/y GGGGG + + + E, d/M/y - E, d/M/y GGGGG + E, d/M/y - E, d/M/y GGGGG + E, d/M/y - E, d/M/y GGGGG + + + MMM - MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d MMM - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM, y - E, d MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + Ion + Chwef + Mawrth + Ebrill + Mai + Meh + Gorff + Awst + Medi + Hyd + Tach + Rhag + + + I + Ch + M + E + M + M + G + A + M + H + T + Rh + + + Ionawr + Chwefror + Mawrth + Ebrill + Mai + Mehefin + Gorffennaf + Awst + Medi + Hydref + Tachwedd + Rhagfyr + + + + + Ion + Chw + Maw + Ebr + Mai + Meh + Gor + Awst + Medi + Hyd + Tach + Rhag + + + I + Ch + M + E + M + M + G + A + M + H + T + Rh + + + Ionawr + Chwefror + Mawrth + Ebrill + Mai + Mehefin + Gorffennaf + Awst + Medi + Hydref + Tachwedd + Rhagfyr + + + + + + + Sul + Llun + Maw + Mer + Iau + Gwen + Sad + + + S + Ll + M + M + I + G + S + + + Su + Ll + Ma + Me + Ia + Gw + Sa + + + Dydd Sul + Dydd Llun + Dydd Mawrth + Dydd Mercher + Dydd Iau + Dydd Gwener + Dydd Sadwrn + + + + + Sul + Llun + Maw + Mer + Iau + Gwe + Sad + + + S + Ll + M + M + I + G + S + + + Su + Ll + Ma + Me + Ia + Gw + Sa + + + Dydd Sul + Dydd Llun + Dydd Mawrth + Dydd Mercher + Dydd Iau + Dydd Gwener + Dydd Sadwrn + + + + + + + Ch1 + Ch2 + Ch3 + Ch4 + + + 1 + 2 + 3 + 4 + + + Chwarter 1af + 2il chwarter + 3ydd chwarter + 4ydd chwarter + + + + + Ch1 + Ch2 + Ch3 + Ch4 + + + 1 + 2 + 3 + 4 + + + chwarter 1af + 2il chwarter + 3ydd chwarter + 4ydd chwarter + + + + + + + AM + PM + + + AM + hanner dydd + PM + + + + + + Cyn Crist + Oed Crist + + + CC + OC + + + C + O + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} 'am' {0} + + + + + {1} 'am' {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E, h.mm a + E, HH:mm + E, h.mm.ss a + E, HH:mm:ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h.mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + Q y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M-M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM-MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + LLLL-LLLL + + + y-y + + + M/y – M/y + M/y – M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + + + MMM - MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM, y - d MMM y + + + E, d MMM - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM, y - E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Oes + + + Blwyddyn + llynedd + eleni + blwyddyn nesaf + + Ymhen {0} mlynedd + Ymhen blwyddyn + Ymhen {0} flynedd + Ymhen {0} blynedd + Ymhen {0} blynedd + Ymhen {0} mlynedd + + + {0} o flynyddoedd yn ôl + blwyddyn yn ôl + {0} flynedd yn ôl + {0} blynedd yn ôl + {0} blynedd yn ôl + {0} o flynyddoedd yn ôl + + + + Mis + mis diwethaf + y mis hwn + mis nesaf + + Ymhen {0} mis + Ymhen mis + Ymhen deufis + Ymhen {0} mis + Ymhen {0} mis + Ymhen {0} mis + + + {0} mis yn ôl + {0} mis yn ôl + {0} fis yn ôl + {0} mis yn ôl + {0} mis yn ôl + {0} mis yn ôl + + + + Wythnos + wythnos ddiwethaf + yr wythnos hon + wythnos nesaf + + Ymhen {0} wythnos + Ymhen wythnos + Ymhen pythefnos + Ymhen {0} wythnos + Ymhen {0} wythnos + Ymhen {0} wythnos + + + {0} wythnos yn ôl + {0} wythnos yn ôl + {0} wythnos yn ôl + {0} wythnos yn ôl + {0} wythnos yn ôl + {0} wythnos yn ôl + + + + Dydd + echdoe + ddoe + heddiw + yfory + drennydd + + Ymhen {0} diwrnod + Ymhen diwrnod + Ymhen deuddydd + Ymhen tridiau + Ymhen {0} diwrnod + Ymhen {0} diwrnod + + + {0} diwrnod yn ôl + {0} diwrnod yn ôl + {0} ddiwrnod yn ôl + {0} diwrnod yn ôl + {0} diwrnod yn ôl + {0} diwrnod yn ôl + + + + Dydd o'r Wythnos + + + dydd Sul diwethaf + dydd Sul yma + dydd Sul nesaf + + + dydd Llun diwethaf + dydd Llun yma + dydd Llun nesaf + + + dydd Mawrth diwethaf + dydd Mawrth yma + dydd Mawrth nesaf + + + dydd Mercher diwethaf + dydd Mercher yma + dydd Mercher nesaf + + + dydd Iau diwethaf + dydd Iau yma + dydd Iau nesaf + + + dydd Gwener diwethaf + dydd Gwener yma + dydd Gwener nesaf + + + dydd Sadwrn diwethaf + dydd Sadwrn yma + dydd Sadwrn nesaf + + + AM/PM + + + Awr + + Ymhen {0} awr + Ymhen {0} awr + Ymhen {0} awr + Ymhen {0} awr + Ymhen {0} awr + Ymhen {0} awr + + + {0} awr yn ôl + awr yn ôl + {0} awr yn ôl + {0} awr yn ôl + {0} awr yn ôl + {0} awr yn ôl + + + + Munud + + Ymhen {0} munud + Ymhen munud + Ymhen {0} funud + Ymhen {0} munud + Ymhen {0} munud + Ymhen {0} munud + + + {0} munud yn ôl + {0} munud yn ôl + {0} funud yn ôl + {0} munud yn ôl + {0} munud yn ôl + {0} munud yn ôl + + + + Eiliad + nawr + + Ymhen {0} eiliad + Ymhen eiliad + Ymhen {0} eiliad + Ymhen {0} eiliad + Ymhen {0} eiliad + Ymhen {0} eiliad + + + {0} eiliad yn ôl + eiliad yn ôl + {0} eiliad yn ôl + {0} eiliad yn ôl + {0} eiliad yn ôl + {0} eiliad yn ôl + + + + Cylchfa Amser + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Amser {0} + Amser Haf {0} + Amser Safonol {0} + {1} ({0}) + + Dinas Anhysbys + + + Tiranë + + + Dumont d’Urville + + + Tucumán + + + Córdoba + + + Wien + + + Dacca + + + Brwsel + + + Sofiya + + + St. Barthélemy + + + Eirunepé + + + Cuiabá + + + Santarém + + + Belém + + + São Paulo + + + Maceió + + + Thimbu + + + Atikokan + + + St. John’s + + + Zürich + + + Ynys y Pasg + + + Ürümqi + + + Bogotá + + + La Habana + + + Cabo Verde + + + Curaçao + + + Ynys y Nadolig + + + Praha + + + Büsingen + + + København + + + Alger + + + El Aaiún + + + Asmera + + + yr Ynysoedd Dedwydd + + + Chuuk + + + Pohnpei + + + Føroyar + + + + Amser Haf Prydain + + Llundain + + + Tiflis + + + Ynys y Garn + + + Nuuk + + + Ittoqqortoormiit + + + Athen + + + De Georgia + + + + Amser Haf Iwerddon + + Dulyn + + + Jerwsalem + + + Ynys Manaw + + + Calcutta + + + Reykjavík + + + Rhufain + + + Tōkyō + + + Saint Kitts + + + P'yŏngyang + + + Sǒul + + + Aktau + + + Aqtöbe + + + Saint Lucia + + + Chişinău + + + Yangon + + + Ulan Bator + + + Choybalsan + + + Mazatlán + + + Bae Banderas + + + Dinas México + + + Cancún + + + Nouméa + + + Kathmandu + + + Panamá + + + Marquises + + + Warszawa + + + Gasa + + + Lisboa + + + Asunción + + + Réunion + + + Bucureşti + + + Beograd + + + Moskva + + + Sachalin + + + Mahé + + + Saint Helena + + + São Tomé + + + Lower Prince's Quarter/Beneden Prinsen Kwartier + + + N'Djamena + + + Kerguélen + + + Lomé + + + Ashkabad + + + Taibei + + + Zaporizhzhya + + + Beulah, Gogledd Dakota + + + New Salem, Gogledd Dakota + + + Center, Gogledd Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Dinas Tell, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Efrog Newydd + + + Samarcand + + + y Fatican + + + Saint Vincent + + + Saint Thomas + + + Dinas Hô Chi Minh + + + Éfaté + + + + Amser Afghanistan + + + + + Amser Canolbarth Affrica + + + + + Amser Dwyrain Affrica + + + + + Amser De Affrica + + + + + Amser Gorllewin Affrica + Amser Safonol Gorllewin Affrica + Amser Haf Gorllewin Affrica + + + + + Amser Alaska + Amser Safonol Alaska + Amser Haf Alaska + + + + + Amser Amazonas + Amser Safonol Amazonas + Amser Haf Amazonas + + + + + Amser Canolbarth Gogledd America + Amser Safonol Canolbarth Gogledd America + Amser Haf Canolbarth Gogledd America + + + + + Amser Dwyrain Gogledd America + Amser Safonol Dwyrain Gogledd America + Amser Haf Dwyrain Gogledd America + + + + + Amser Mynyddoedd Gogledd America + Amser Safonol Mynyddoedd Gogledd America + Amser Haf Mynyddoedd Gogledd America + + + + + Amser Cefnfor Tawel Gogledd America + Amser Safonol Cefnfor Tawel Gogledd America + Amser Haf Cefnfor Tawel Gogledd America + + + + + Amser Arabaidd + Amser Safonol Arabaidd + Amser Haf Arabaidd + + + + + Amser yr Ariannin + Amser Safonol Ariannin + Amser Haf Ariannin + + + + + Amser Gorllewin Ariannin + Amser Safonol Gorllewin Ariannin + Amser Haf Gorllewin Ariannin + + + + + Amser Armenia + Amser Safonol Armenia + Amser Haf Armenia + + + + + Amser Cefnfor yr Iwerydd + Amser Safonol Cefnfor yr Iwerydd + Amser Haf Cefnfor yr Iwerydd + + + + + Amser Canolbarth Awstralia + Amser Safonol Canolbarth Awstralia + Amser Haf Canolbarth Awstralia + + + + + Amser Canolbarth Gorllewin Awstralia + Amser Safonol Canolbarth Gorllewin Awstralia + Amser Haf Canolbarth Gorllewin Awstralia + + + + + Amser Dwyrain Awstralia + Amser Safonol Dwyrain Awstralia + Amser Haf Dwyrain Awstralia + + + + + Amser Gorllewin Awstralia + Amser Safonol Gorllewin Awstralia + Amser Haf Gorllewin Awstralia + + + + + Amser Azerbaijan + Amser Safonol Azerbaijan + Amser Haf Azerbaijan + + + + + Amser Azores + Amser Safonol Azores + Amser Haf Azores + + + + + Amser Bangladesh + Amser Safonol Bangladesh + Amser Haf Bangladesh + + + + + Amser Bhutan + + + + + Amser Bolivia + + + + + Amser Brasília + Amser Safonol Brasília + Amser Haf Brasília + + + + + Amser Brunei Darussalam + + + + + Amser Cabo Verde + Amser Safonol Cabo Verde + Amser Haf Cabo Verde + + + + + Amser Chamorro + + + + + Amser Chatham + Amser Safonol Chatham + Amser Haf Chatham + + + + + Amser Chile + Amser Safonol Chile + Amser Haf Chile + + + + + Amser Tsieina + Amser Safonol Tsieina + Amser Haf Tsieina + + + + + Amser Choibalsan + Amser Safonol Choibalsan + Amser Haf Choibalsan + + + + + Amser Ynys Christmas + + + + + Amser Ynysoedd Cocos + + + + + Amser Colombia + Amser Safonol Colombia + Amser Haf Colombia + + + + + Amser Ynysoedd Cook + Amser Safonol Ynysoedd Cook + Amser Hanner Haf Ynysoedd Cook + + + + + Amser Cuba + Amser Safonol Cuba + Amser Haf Cuba + + + + + Amser Davis + + + + + Amser Dumont-d’Urville + + + + + Amser Dwyrain Timor + + + + + Amser Ynys y Pasg + Amser Safonol Ynys y Pasg + Amser Haf Ynys y Pasg + + + + + Amser Ecuador + + + + + Amser Canolbarth Ewrop + Amser Safonol Canolbarth Ewrop + Amser Haf Canolbarth Ewrop + + + CET + CET + CEST + + + + + Amser Dwyrain Ewrop + Amser Safonol Dwyrain Ewrop + Amser Haf Dwyrain Ewrop + + + EET + EET + EEST + + + + + Amser Gorllewin Ewrop + Amser Safonol Gorllewin Ewrop + Amser Haf Gorllewin Ewrop + + + WET + WET + WEST + + + + + Amser Ynysoedd Falklands/Malvinas + Amser Safonol Ynysoedd Falklands/Malvinas + Amser Haf Ynysoedd Falklands/Malvinas + + + + + Amser Fiji + Amser Safonol Fiji + Amser Haf Fiji + + + + + Amser Guyane Ffrengig + + + + + Amser Deheuol ac Antarctig Frengig + + + + + Amser Galapagos + + + + + Amser Gambier + + + + + Amser Georgia + Amser Safonol Georgia + Amser Haf Georgia + + + + + Amser Ynysoedd Gilbert + + + + + Amser Safonol Greenwich + + + GMT + + + + + Amser Dwyrain yr Ynys Las + Amser Safonol Dwyrain yr Ynys Las + Amser Haf Dwyrain yr Ynys Las + + + + + Amser Gorllewin yr Ynys Las + Amser Safonol Gorllewin yr Ynys Las + Amser Haf Gorllewin yr Ynys Las + + + + + Amser y Gwlff + + + + + Amser Guyana + + + + + Amser Hawaii-Aleutian + Amser Safonol Hawaii-Aleutian + Amser Haf Hawaii-Aleutian + + + + + Amser Hong Kong + Amser Safonol Hong Kong + Amser Haf Hong Kong + + + + + Amser Hovd + Amser Safonol Hovd + Amser Haf Hovd + + + + + Amser India + + + + + Amser Cefnfor India + + + + + Amser Indo-Tsieina + + + + + Amser Canolbarth Indonesia + + + + + Amser Dwyrain Indonesia + + + + + Amser Gorllewin Indonesia + + + + + Amser Iran + Amser Safonol Iran + Amser Haf Iran + + + + + Amser Irkutsk + Amser Safonol Irkutsk + Amser Haf Irkutsk + + + + + Amser Israel + Amser Safonol Israel + Amser Haf Israel + + + + + Amser Japan + Amser Safonol Japan + Amser Haf Japan + + + + + Amser Dwyrain Kazakstan + + + + + Amser Gorllewin Kazakstan + + + + + Amser Korea + Amser Safonol Corea + Amser Haf Korea + + + + + Amser Kosrae + + + + + Amser Krasnoyarsk + Amser Safonol Krasnoyarsk + Amser Haf Krasnoyarsk + + + + + Amser Kyrgyzstan + + + + + Amser Ynysoedd Line + + + + + Amser yr Arglwydd Howe + Amser Safonol yr Arglwydd Howe + Amser Haf yr Arglwydd Howe + + + + + Amser Ynys Macquarie + + + + + Amser Magadan + Amser Safonol Magadan + Amser Haf Magadan + + + + + Amser Malaysia + + + + + Amser Y Maldives + + + + + Amser Marquises + + + + + Amser Ynysoedd Marshall + + + + + Amser Mauritius + Amser Safonol Mauritius + Amser Haf Mauritius + + + + + Amser Mawson + + + + + Amser Ulan Bator + Amser Safonol Ulan Bator + Amser Haf Ulan Bator + + + + + Amser Moskfa + Amser Safonol Moskfa + Amser Haf Moskfa + + + + + Amser Myanmar + + + + + Amser Nauru + + + + + Amser Nepal + + + + + Amser Caledonia Newydd + Amser Safonol Caledonia Newydd + Amser Haf Caledonia Newydd + + + + + Amser Seland Newydd + Amser Safonol Seland Newydd + Amser Haf Seland Newydd + + + + + Amser Newfoundland + Amser Safonol Newfoundland + Amser Haf Newfoundland + + + + + Amser Niue + + + + + Amser Ynys Norfolk + + + + + Amser Fernando de Noronha + Amser Safonol Fernando de Noronha + Amser Haf Fernando de Noronha + + + + + Amser Novosibirsk + Amser Safonol Novosibirsk + Amser Haf Novosibirsk + + + + + Amser Omsk + Amser Safonol Omsk + Amser Haf Omsk + + + + + Amser Pacistan + Amser Safonol Pakistan + Amser Haf Pakistan + + + + + Amser Palau + + + + + Amser Papua Guinea Newydd + + + + + Amser Paraguay + Amser Safonol Paraguay + Amser Haf Paraguay + + + + + Amser Periw + Amser Safonol Periw + Amser Haf Periw + + + + + Amser Pilipinas + Amser Safonol Pilipinas + Amser Haf Pilipinas + + + + + Amser Ynysoedd Phoenix + + + + + Amser Saint-Pierre-et-Miquelon + Amser Safonol Saint-Pierre-et-Miquelon + Amser Haf Saint-Pierre-et-Miquelon + + + + + Amser Pitcairn + + + + + Amser Pohnpei + + + + + Amser Réunion + + + + + Amser Rothera + + + + + Amser Sakhalin + Amser Safonol Sakhalin + Amser Haf Sakhalin + + + + + Amser Samoa + Amser Safonol Samoa + Amser Haf Samoa + + + + + Amser Seychelles + + + + + Amser Singapore + + + + + Amser Ynysoedd Solomon + + + + + Amser De Georgia + + + + + Amser Suriname + + + + + Amser Syowa + + + + + Amser Tahiti + + + + + Amser Taibei + Amser Safonol Taibei + Amser Haf Taibei + + + + + Amser Tajikistan + + + + + Amser Tokelau + + + + + Amser Tonga + Amser Safonol Tonga + Amser Haf Tonga + + + + + Amser Chuuk + + + + + Amser Turkmenistan + Amser Safonol Turkmenistan + Amser Haf Turkmenistan + + + + + Amser Tuvalu + + + + + Amser Uruguay + Amser Safonol Uruguay + Amser Haf Uruguay + + + + + Amser Uzbekistan + Amser Safonol Uzbekistan + Amser Haf Uzbekistan + + + + + Amser Vanuatu + Amser Safonol Vanuatu + Amser Haf Vanuatu + + + + + Amser Venezuela + + + + + Amser Vladivostok + Amser Safonol Vladivostok + Amser Haf Vladivostok + + + + + Amser Volgograd + Amser Safonol Volgograd + Amser Haf Volgograd + + + + + Amser Vostok + + + + + Amser Ynys Wake + + + + + Amser Wallis a Futuna + + + + + Amser Yakutsk + Amser Safonol Yakutsk + Amser Haf Yakutsk + + + + + Amser Yekaterinburg + Amser Safonol Yekaterinburg + Amser Haf Yekaterinburg + + + + + + + . + , + ; + % + + + - + E + x + + + NaN + + + + + #,##0.### + + + + + 0 mil + 0 fil + 0 fil + 0 mil + 0 mil + 0 mil + 00 mil + 00 mil + 00 mil + 00 mil + 00 mil + 00 mil + 000 mil + 000 mil + 000 mil + 000 mil + 000 mil + 000 mil + 0 miliwn + 0 filiwn + 0 filiwn + 0 miliwn + 0 miliwn + 0 miliwn + 00 miliwn + 00 miliwn + 00 miliwn + 00 miliwn + 00 miliwn + 00 miliwn + 000 miliwn + 000 miliwn + 000 miliwn + 000 miliwn + 000 miliwn + 000 miliwn + 0 biliwn + 0 biliwn + 0 biliwn + 0 biliwn + 0 biliwn + 0 biliwn + 00 biliwn + 00 biliwn + 00 biliwn + 00 biliwn + 00 biliwn + 00 biliwn + 000 biliwn + 000 biliwn + 000 biliwn + 000 biliwn + 000 biliwn + 000 biliwn + 0 triliwn + 0 triliwn + 0 driliwn + 0 thriliwn + 0 thriliwn + 0 triliwn + 00 triliwn + 00 triliwn + 00 triliwn + 00 triliwn + 00 triliwn + 00 triliwn + 000 triliwn + 000 triliwn + 000 triliwn + 000 triliwn + 000 triliwn + 000 triliwn + + + + + 0K + 0K + 0K + 0K + 0K + 0K + 00K + 00K + 00K + 00K + 00K + 00K + 000K + 000K + 000K + 000K + 000K + 000K + 0M + 0M + 0M + 0M + 0M + 0M + 00M + 00M + 00M + 00M + 00M + 00M + 000M + 000M + 000M + 000M + 000M + 000M + 0B + 0B + 0B + 0B + 0B + 0B + 00B + 00B + 00B + 00B + 00B + 00B + 000B + 000B + 000B + 000B + 000B + 000B + 0T + 0T + 0T + 0T + 0T + 0T + 00T + 00T + 00T + 00T + 00T + 00T + 000T + 000T + 000T + 000T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + Dirham Yr Emiradau Arabaidd Unedig + Dirham Yr Emiradau Arabaidd Unedig + Dirham Yr Emiradau Arabaidd Unedig + Dirham Yr Emiradau Arabaidd Unedig + Dirham Yr Emiradau Arabaidd Unedig + Dirham Yr Emiradau Arabaidd Unedig + Dirham Yr Emiradau Arabaidd Unedig + + + Afghani Afghanistan + Afghani Afghanistan + Afghani Afghanistan + Afghani Afghanistan + Afghani Afghanistan + Afghani Afghanistan + Afghani Afghanistan + + + Lek Albania + Lek Albania + Lek Albania + Lek Albania + Lek Albania + Lek Albania + Lek Albania + + + Dram Armenia + Dram Armenia + Dram Armenia + Dram Armenia + Dram Armenia + Dram Armenia + Dram Armenia + + + Guilder Antilles yr Iseldiroedd + Guilder Antilles yr Iseldiroedd + Guilder Antilles yr Iseldiroedd + Guilder Antilles yr Iseldiroedd + Guilder Antilles yr Iseldiroedd + Guilder Antilles yr Iseldiroedd + Guilder Antilles yr Iseldiroedd + + + Kwanza Angola + Kwanza Angola + Kwanza Angola + Kwanza Angola + Kwanza Angola + Kwanza Angola + Kwanza Angola + + + Peso yr Ariannin + Peso yr Ariannin + Peso yr Ariannin + Peso yr Ariannin + Peso yr Ariannin + Peso yr Ariannin + Peso yr Ariannin + + + Doler Awstralia + Doler Awstralia + Doler Awstralia + Doler Awstralia + Doler Awstralia + Doler Awstralia + Doler Awstralia + A$ + + + Fflorin Aruba + Fflorin Aruba + Fflorin Aruba + Fflorin Aruba + Fflorin Aruba + Fflorin Aruba + Fflorin Aruba + + + Manat Azerbaijan + Manat Azerbaijan + Manat Azerbaijan + Manat Azerbaijan + Manat Azerbaijan + Manat Azerbaijan + Manat Azerbaijan + + + Marc Trosadwy Bosnia a Hercegovina + Marc Trosadwy Bosnia a Hercegovina + Marc Trosadwy Bosnia a Hercegovina + Marc Trosadwy Bosnia a Hercegovina + Marc Trosadwy Bosnia a Hercegovina + Marc Trosadwy Bosnia a Hercegovina + Marc Trosadwy Bosnia a Hercegovina + + + Doler Barbados + Doler Barbados + Doler Barbados + Doler Barbados + Doler Barbados + Doler Barbados + Doler Barbados + + + Taka Bangladesh + Taka Bangladesh + Taka Bangladesh + Taka Bangladesh + Taka Bangladesh + Taka Bangladesh + Taka Bangladesh + + + Lev Bwlgaria + Lev Bwlgaria + Lev Bwlgaria + Lev Bwlgaria + Lev Bwlgaria + Lev Bwlgaria + Lev Bwlgaria + + + Dinar Bahrain + Dinar Bahrain + Dinar Bahrain + Dinar Bahrain + Dinar Bahrain + Dinar Bahrain + Dinar Bahrain + + + Ffranc Burundi + Ffranc Burundi + Ffranc Burundi + Ffranc Burundi + Ffranc Burundi + Ffranc Burundi + Ffranc Burundi + + + Doler Bermuda + Doler Bermuda + Doler Bermuda + Doler Bermuda + Doler Bermuda + Doler Bermuda + Doler Bermuda + + + Doler Brunei + Doler Brunei + Doler Brunei + Doler Brunei + Doler Brunei + Doler Brunei + Doler Brunei + + + Boliviano Bolifia + Boliviano Bolifia + Boliviano Bolifia + Boliviano Bolifia + Boliviano Bolifia + Boliviano Bolifia + Boliviano Bolifia + + + Real Brasil + Real Brasil + Real Brasil + Real Brasil + Real Brasil + Real Brasil + Real Brasil + R$ + + + Doler y Bahamas + Doler y Bahamas + Doler y Bahamas + Doler y Bahamas + Doler y Bahamas + Doler y Bahamas + Doler y Bahamas + + + Ngultrum Bhutan + Ngultrum Bhutan + Ngultrum Bhutan + Ngultrum Bhutan + Ngultrum Bhutan + Ngultrum Bhutan + Ngultrum Bhutan + + + Pula Botswana + Pula Botswana + Pula Botswana + Pula Botswana + Pula Botswana + Pula Botswana + Pula Botswana + + + Rwbl Belarws + Rwbl Belarws + Rwbl Belarws + Rwbl Belarws + Rwbl Belarws + Rwbl Belarws + Rwbl Belarws + + + Doler Belize + Doler Belize + Doler Belize + Doler Belize + Doler Belize + Doler Belize + Doler Belize + + + Doler Canada + Doler Canada + Doler Canada + Doler Canada + Doler Canada + Doler Canada + Doler Canada + CA$ + + + Ffranc Congo + Ffranc Congo + Ffranc Congo + Ffranc Congo + Ffranc Congo + Ffranc Congo + Ffranc Congo + + + Ffranc y Swistir + Ffranc y Swistir + Ffranc y Swistir + Ffranc y Swistir + Ffranc y Swistir + Ffranc y Swistir + Ffranc y Swistir + + + Peso Chile + Peso Chile + Peso Chile + Peso Chile + Peso Chile + Peso Chile + Peso Chile + + + Yuan Tsieina + Yuan Tsieina + Yuan China + Yuan China + Yuan China + Yuan China + Yuan Tsieina + CN¥ + + + Peso Colombia + Peso Colombia + Peso Colombia + Peso Colombia + Peso Colombia + Peso Colombia + Peso Colombia + + + Colón Costa Rica + Colón Costa Rica + Colón Costa Rica + Colón Costa Rica + Colón Costa Rica + Colón Costa Rica + Colón Costa Rica + + + Peso Trosadwy Cuba + Peso Trosadwy Cuba + Peso Trosadwy Cuba + Peso Trosadwy Cuba + Peso Trosadwy Cuba + Peso Trosadwy Cuba + Peso Trosadwy Cuba + + + Peso Cuba + Peso Cuba + Peso Cuba + Peso Cuba + Peso Cuba + Peso Cuba + Peso Cuba + + + Esgwdo Cabo Verde + Esgwdo Cabo Verde + Esgwdo Cabo Verde + Esgwdo Cabo Verde + Esgwdo Cabo Verde + Esgwdo Cabo Verde + Esgwdo Cabo Verde + + + Koruna Tsiec + Koruna Tsiec + Koruna Tsiec + Koruna Tsiec + Koruna Tsiec + Koruna Tsiec + Koruna Tsiec + + + Ffranc Djibouti + Ffranc Djibouti + Ffranc Djibouti + Ffranc Djibouti + Ffranc Djibouti + Ffranc Djibouti + Ffranc Djibouti + + + Krone Denmarc + Krone Denmarc + Krone Denmarc + Krone Denmarc + Krone Denmarc + Krone Denmarc + Krone Denmarc + + + Peso Gweriniaeth Dominica + Peso Gweriniaeth Dominica + Peso Gweriniaeth Dominica + Peso Gweriniaeth Dominica + Peso Gweriniaeth Dominica + Peso Gweriniaeth Dominica + Peso Gweriniaeth Dominica + + + Dinar Algeria + Dinar Algeria + Dinar Algeria + Dinar Algeria + Dinar Algeria + Dinar Algeria + Dinar Algeria + + + Punt Yr Aifft + Punt Yr Aifft + Punt Yr Aifft + Punt Yr Aifft + Punt Yr Aifft + Punt Yr Aifft + Punt Yr Aifft + + + Nakfa Eritrea + Nakfa Eritrea + Nakfa Eritrea + Nakfa Eritrea + Nakfa Eritrea + Nakfa Eritrea + Nakfa Eritrea + + + Birr Ethiopia + Birr Ethiopia + Birr Ethiopia + Birr Ethiopia + Birr Ethiopia + Birr Ethiopia + Birr Ethiopia + + + Ewro + Ewro + Ewro + Ewro + Ewro + Ewro + Ewro + + + + Doler Ffiji + Doler Ffiji + Doler Ffiji + Doler Ffiji + Doler Ffiji + Doler Ffiji + Doler Ffiji + + + Punt Ynysoedd Falkland/Malvinas + Punt Ynysoedd Falkland/Malvinas + Punt Ynysoedd Falkland/Malvinas + Punt Ynysoedd Falkland/Malvinas + Punt Ynysoedd Falkland/Malvinas + Punt Ynysoedd Falkland/Malvinas + Punt Ynysoedd Falkland/Malvinas + + + Punt Sterling Prydain + Punt Sterling Prydain + Punt Sterling Prydain + Punt Sterling Prydain + Punt Sterling Prydain + Punt Sterling Prydain + Punt Sterling Prydain + £ + + + Lari Georgia + Lari Georgia + Lari Georgia + Lari Georgia + Lari Georgia + Lari Georgia + Lari Georgia + + + Cedi Ghana + Cedi Ghana + Cedi Ghana + Cedi Ghana + Cedi Ghana + Cedi Ghana + Cedi Ghana + + + Punt Gibraltar + Punt Gibraltar + Punt Gibraltar + Punt Gibraltar + Punt Gibraltar + Punt Gibraltar + Punt Gibraltar + + + Dalasi Gambia + Dalasi Gambia + Dalasi Gambia + Dalasi Gambia + Dalasi Gambia + Dalasi Gambia + Dalasi Gambia + + + Ffranc Guinée + Ffranc Guinée + Ffranc Guinée + Ffranc Guinée + Ffranc Guinée + Ffranc Guinée + Ffranc Guinée + + + Quetzal Guatemala + Quetzal Guatemala + Quetzal Guatemala + Quetzal Guatemala + Quetzal Guatemala + Quetzal Guatemala + Quetzal Guatemala + + + Doler Guyana + Doler Guyana + Doler Guyana + Doler Guyana + Doler Guyana + Doler Guyana + Doler Guyana + + + Doler Hong Kong + Doler Hong Kong + Doler Hong Kong + Doler Hong Kong + Doler Hong Kong + Doler Hong Kong + Doler Hong Kong + HK$ + + + Lempira Honduras + Lempira Honduras + Lempira Honduras + Lempira Honduras + Lempira Honduras + Lempira Honduras + Lempira Honduras + + + Kuna Croatia + Kuna Croatia + Kuna Croatia + Kuna Croatia + Kuna Croatia + Kuna Croatia + Kuna Croatia + + + Gourde Haiti + Gourde Haiti + Gourde Haiti + Gourde Haiti + Gourde Haiti + Gourde Haiti + Gourde Haiti + + + Fforint Hwngari + Fforint Hwngari + Fforint Hwngari + Fforint Hwngari + Fforint Hwngari + Fforint Hwngari + Fforint Hwngari + + + Rupiah Indonesia + Rupiah Indonesia + Rupiah Indonesia + Rupiah Indonesia + Rupiah Indonesia + Rupiah Indonesia + Rupiah Indonesia + + + Punt Iwerddon + Punt Iwerddon + Punt Iwerddon + Punt Iwerddon + Punt Iwerddon + Punt Iwerddon + Punt Iwerddon + + + Shegel Newydd Israel + Shegel Newydd Israel + Shegel Newydd Israel + Shegel Newydd Israel + Shegel Newydd Israel + Shegel Newydd Israel + Shegel Newydd Israel + + + + Rwpî India + Rwpî India + Rwpî India + Rwpî India + Rwpî India + Rwpî India + Rwpî India + + + + Dinar Irac + Dinar Irac + Dinar Irac + Dinar Irac + Dinar Irac + Dinar Irac + Dinar Irac + + + Rial Iran + Rial Iran + Rial Iran + Rial Iran + Rial Iran + Rial Iran + Rial Iran + + + Króna Gwlad yr Iâ + Króna Gwlad yr Iâ + Króna Gwlad yr Iâ + Króna Gwlad yr Iâ + Króna Gwlad yr Iâ + Króna Gwlad yr Iâ + Króna Gwlad yr Iâ + + + Doler Jamaica + Doler Jamaica + Doler Jamaica + Doler Jamaica + Doler Jamaica + Doler Jamaica + Doler Jamaica + + + Dinar Gwlad yr Iorddonen + Dinar Gwlad yr Iorddonen + Dinar Gwlad yr Iorddonen + Dinar Gwlad yr Iorddonen + Dinar Gwlad yr Iorddonen + Dinar Gwlad yr Iorddonen + Dinar Gwlad yr Iorddonen + + + Yen Japan + Yen Japan + Yen Japan + Yen Japan + Yen Japan + Yen Japan + Yen Japan + JP¥ + + + Swllt Kenya + Swllt Kenya + Swllt Kenya + Swllt Kenya + Swllt Kenya + Swllt Kenya + Swllt Kenya + + + Som Kyrgyzstan + Som Kyrgyzstan + Som Kyrgyzstan + Som Kyrgyzstan + Som Kyrgyzstan + Som Kyrgyzstan + Som Kyrgyzstan + + + Riel Cambodia + Riel Cambodia + Riel Cambodia + Riel Cambodia + Riel Cambodia + Riel Cambodia + Riel Cambodia + + + Ffranc Comoros + Ffranc Comoros + Ffranc Comoros + Ffranc Comoros + Ffranc Comoros + Ffranc Comoros + Ffranc Comoros + + + Won Gogledd Corea + Won Gogledd Corea + Won Gogledd Corea + Won Gogledd Corea + Won Gogledd Corea + Won Gogledd Corea + Won Gogledd Corea + + + Won De Korea + Won De Korea + Won De Korea + Won De Korea + Won De Korea + Won De Korea + Won De Korea + + + + Dinar Kuwait + Dinar Kuwait + Dinar Kuwait + Dinar Kuwait + Dinar Kuwait + Dinar Kuwait + Dinar Kuwait + + + Doler Ynysoedd Cayman + Doler Ynysoedd Cayman + Doler Ynysoedd Cayman + Doler Ynysoedd Cayman + Doler Ynysoedd Cayman + Doler Ynysoedd Cayman + Doler Ynysoedd Cayman + + + Tenge Kazakstan + Tenge Kazakstan + Tenge Kazakstan + Tenge Kazakstan + Tenge Kazakstan + Tenge Kazakstan + Tenge Kazakstan + + + Kip Laos + Kip Laos + Kip Laos + Kip Laos + Kip Laos + Kip Laos + Kip Laos + + + Punt Libanus + Punt Libanus + Punt Libanus + Punt Libanus + Punt Libanus + Punt Libanus + Punt Libanus + + + Rwpî Sri Lanka + Rwpî Sri Lanka + Rwpî Sri Lanka + Rwpî Sri Lanka + Rwpî Sri Lanka + Rwpî Sri Lanka + Rwpî Sri Lanka + + + Doler Liberia + Doler Liberia + Doler Liberia + Doler Liberia + Doler Liberia + Doler Liberia + Doler Liberia + + + Litas Lithwania + Litas Lithwania + Litas Lithwania + Litas Lithwania + Litas Lithwania + Litas Lithwania + Litas Lithwania + + + Lats Latfia + Lats Latfia + Lats Latfia + Lats Latfia + Lats Latfia + Lats Latfia + Lats Latfia + + + Dinar Libya + Dinar Libya + Dinar Libya + Dinar Libya + Dinar Libya + Dinar Libya + Dinar Libya + + + Dirham Moroco + Dirham Moroco + Dirham Moroco + Dirham Moroco + Dirham Moroco + Dirham Moroco + Dirham Moroco + + + Leu Moldofa + Leu Moldofa + Leu Moldofa + Leu Moldofa + Leu Moldofa + Leu Moldofa + Leu Moldofa + + + Ariary Madagascar + Ariary Madagascar + Ariary Madagascar + Ariary Madagascar + Ariary Madagascar + Ariary Madagascar + Ariary Madagascar + + + Denar Macedonia + Denar Macedonia + Denar Macedonia + Denar Macedonia + Denar Macedonia + Denar Macedonia + Denar Macedonia + + + Kyat Myanmar + Kyat Myanmar + Kyat Myanmar + Kyat Myanmar + Kyat Myanmar + Kyat Myanmar + Kyat Myanmar + + + Tugrik Mongolia + Tugrik Mongolia + Tugrik Mongolia + Tugrik Mongolia + Tugrik Mongolia + Tugrik Mongolia + Tugrik Mongolia + + + Pataca Macau + Pataca Macau + Pataca Macau + Pataca Macau + Pataca Macau + Pataca Macau + Pataca Macau + + + Ouguiya Mauritania + Ouguiya Mauritania + Ouguiya Mauritania + Ouguiya Mauritania + Ouguiya Mauritania + Ouguiya Mauritania + Ouguiya Mauritania + + + Rwpî Mauritius + Rwpî Mauritius + Rwpî Mauritius + Rwpî Mauritius + Rwpî Mauritius + Rwpî Mauritius + Rwpî Mauritius + + + Rufiyaa'r Maldives + Rufiyaa'r Maldives + Rufiyaa'r Maldives + Rufiyaa'r Maldives + Rufiyaa'r Maldives + Rufiyaa'r Maldives + Rufiyaa'r Maldives + + + Kwacha Malawi + Kwacha Malawi + Kwacha Malawi + Kwacha Malawi + Kwacha Malawi + Kwacha Malawi + Kwacha Malawi + + + Peso México + Peso México + Peso México + Peso México + Peso México + Peso México + Peso México + MX$ + + + Ringgit Malaysia + Ringgit Malaysia + Ringgit Malaysia + Ringgit Malaysia + Ringgit Malaysia + Ringgit Malaysia + Ringgit Malaysia + + + Metical Mozambique + Metical Mozambique + Metical Mozambique + Metical Mozambique + Metical Mozambique + Metical Mozambique + Metical Mozambique + + + Doler Namibia + Doler Namibia + Doler Namibia + Doler Namibia + Doler Namibia + Doler Namibia + Doler Namibia + + + Naira Nigeria + Naira Nigeria + Naira Nigeria + Naira Nigeria + Naira Nigeria + Naira Nigeria + Naira Nigeria + + + Córdoba Nicaragua + Córdoba Nicaragua + Córdoba Nicaragua + Córdoba Nicaragua + Córdoba Nicaragua + Córdoba Nicaragua + Córdoba Nicaragua + + + Krone Norwy + Krone Norwy + Krone Norwy + Krone Norwy + Krone Norwy + Krone Norwy + Krone Norwy + + + Rwpî Nepal + Rwpî Nepal + Rwpî Nepal + Rwpî Nepal + Rwpî Nepal + Rwpî Nepal + Rwpî Nepal + + + Doler Seland Newydd + Doler Seland Newydd + Doler Seland Newydd + Doler Seland Newydd + Doler Seland Newydd + Doler Seland Newydd + Doler Seland Newydd + NZ$ + + + Rial Oman + Rial Oman + Rial Oman + Rial Oman + Rial Oman + Rial Oman + Rial Oman + + + Balboa Panama + Balboa Panama + Balboa Panama + Balboa Panama + Balboa Panama + Balboa Panama + Balboa Panama + + + Nuevo Sol Periw + Nuevo Sol Periw + Nuevo Sol Periw + Nuevo Sol Periw + Nuevo Sol Periw + Nuevo Sol Periw + Nuevo Sol Periw + + + Kina Papua Guinea Newydd + Kina Papua Guinea Newydd + Kina Papua Guinea Newydd + Kina Papua Guinea Newydd + Kina Papua Guinea Newydd + Kina Papua Guinea Newydd + Kina Papua Guinea Newydd + + + Peso Pilipinas + Peso Pilipinas + Peso Pilipinas + Peso Pilipinas + Peso Pilipinas + Peso Pilipinas + Peso Pilipinas + + + Rwpî Pacistan + Rwpî Pacistan + Rwpî Pacistan + Rwpî Pacistan + Rwpî Pacistan + Rwpî Pacistan + Rwpî Pacistan + + + Zloty Gwlad Pwyl + Zloty Gwlad Pwyl + Zloty Gwlad Pwyl + Zloty Gwlad Pwyl + Zloty Gwlad Pwyl + Zloty Gwlad Pwyl + Zloty Gwlad Pwyl + + + Guarani Paraguay + Guarani Paraguay + Guarani Paraguay + Guarani Paraguay + Guarani Paraguay + Guarani Paraguay + Guarani Paraguay + + + Rial Qatar + Rial Qatar + Rial Qatar + Rial Qatar + Rial Qatar + Rial Qatar + Rial Qatar + + + Leu Rwmania + Leu Rwmania + Leu Rwmania + Leu Rwmania + Leu Rwmania + Leu Rwmania + Leu Rwmania + + + Dinar Serbia + Dinar Serbia + Dinar Serbia + Dinar Serbia + Dinar Serbia + Dinar Serbia + Dinar Serbia + + + Rwbl Rwsia + Rwbl Rwsia + Rwbl Rwsia + Rwbl Rwsia + Rwbl Rwsia + Rwbl Rwsia + Rwbl Rwsia + + + Ffranc Rwanda + Ffranc Rwanda + Ffranc Rwanda + Ffranc Rwanda + Ffranc Rwanda + Ffranc Rwanda + Ffranc Rwanda + + + Riyal Saudi Arabia + Riyal Saudi Arabia + Riyal Saudi Arabia + Riyal Saudi Arabia + Riyal Saudi Arabia + Riyal Saudi Arabia + Riyal Saudi Arabia + + + Doler Ynysoedd Solomon + Doler Ynysoedd Solomon + Doler Ynysoedd Solomon + Doler Ynysoedd Solomon + Doler Ynysoedd Solomon + Doler Ynysoedd Solomon + Doler Ynysoedd Solomon + + + Rwpî Seychelles + Rwpî Seychelles + Rwpî Seychelles + Rwpî Seychelles + Rwpî Seychelles + Rwpî Seychelles + Rwpî Seychelles + + + Punt Sudan + Punt Sudan + Punt Sudan + Punt Sudan + Punt Sudan + Punt Sudan + Punt Sudan + + + Krona Sweden + Krona Sweden + Krona Sweden + Krona Sweden + Krona Sweden + Krona Sweden + Krona Sweden + + + Doler Singapore + Doler Singapore + Doler Singapore + Doler Singapore + Doler Singapore + Doler Singapore + Doler Singapore + + + Punt Saint Helena + Punt Saint Helena + Punt Saint Helena + Punt Saint Helena + Punt Saint Helena + Punt Saint Helena + Punt Saint Helena + + + Leone Sierra Leone + Leone Sierra Leone + Leone Sierra Leone + Leone Sierra Leone + Leone Sierra Leone + Leone Sierra Leone + Leone Sierra Leone + + + Swllt Somalia + Swllt Somalia + Swllt Somalia + Swllt Somalia + Swllt Somalia + Swllt Somalia + Swllt Somalia + + + Doler Surinam + Doler Surinam + Doler Surinam + Doler Surinam + Doler Surinam + Doler Surinam + Doler Surinam + + + Punt De Sudan + Punt De Sudan + Punt De Sudan + Punt De Sudan + Punt De Sudan + Punt De Sudan + Punt De Sudan + + + Dobra São Tomé a Príncipe + Dobra São Tomé a Príncipe + Dobra São Tomé a Príncipe + Dobra São Tomé a Príncipe + Dobra São Tomé a Príncipe + Dobra São Tomé a Príncipe + Dobra São Tomé a Príncipe + + + Punt Syria + Punt Syria + Punt Syria + Punt Syria + Punt Syria + Punt Syria + Punt Syria + + + Lilangeni Gwlad Swazi + Lilangeni Gwlad Swazi + Lilangeni Gwlad Swazi + Lilangeni Gwlad Swazi + Lilangeni Gwlad Swazi + Lilangeni Gwlad Swazi + Lilangeni Gwlad Swazi + + + Baht Gwlad Thai + Baht Gwlad Thai + Baht Gwlad Thai + Baht Gwlad Thai + Baht Gwlad Thai + Baht Gwlad Thai + Baht Gwlad Thai + ฿ + + + Somoni Tajikistan + Somoni Tajikistan + Somoni Tajikistan + Somoni Tajikistan + Somoni Tajikistan + Somoni Tajikistan + Somoni Tajikistan + + + Manat Turkmenistan + Manat Turkmenistan + Manat Turkmenistan + Manat Turkmenistan + Manat Turkmenistan + Manat Turkmenistan + Manat Turkmenistan + + + Dinar Tunisia + Dinar Tunisia + Dinar Tunisia + Dinar Tunisia + Dinar Tunisia + Dinar Tunisia + Dinar Tunisia + + + Paʻanga Tonga + Paʻanga Tonga + Paʻanga Tonga + Paʻanga Tonga + Paʻanga Tonga + Paʻanga Tonga + Paʻanga Tonga + + + Lira Twrci + Lira Twrci + Lira Twrci + Lira Twrci + Lira Twrci + Lira Twrci + Lira Twrci + + + Doler Trinidad a Tobago + Doler Trinidad a Tobago + Doler Trinidad a Tobago + Doler Trinidad a Tobago + Doler Trinidad a Tobago + Doler Trinidad a Tobago + Doler Trinidad a Tobago + + + Doler Newydd Taiwan + Doler Newydd Taiwan + Doler Newydd Taiwan + Doler Newydd Taiwan + Doler Newydd Taiwan + Doler Newydd Taiwan + Doler Newydd Taiwan + NT$ + + + Swllt Tanzania + Swllt Tanzania + Swllt Tanzania + Swllt Tanzania + Swllt Tanzania + Swllt Tanzania + Swllt Tanzania + + + Hryvnia Wcráin + Hryvnia Wcráin + Hryvnia Wcráin + Hryvnia Wcráin + Hryvnia Wcráin + Hryvnia Wcráin + Hryvnia Wcráin + + + Swllt Uganda + Swllt Uganda + Swllt Uganda + Swllt Uganda + Swllt Uganda + Swllt Uganda + Swllt Uganda + + + Doler UDA + Doler UDA + Doler UDA + Doler UDA + Doler UDA + Doler UDA + Doler UDA + US$ + + + Peso Uruguay + Peso Uruguay + Peso Uruguay + Peso Uruguay + Peso Uruguay + Peso Uruguay + Peso Uruguay + + + Som Uzbekistan + Som Uzbekistan + Som Uzbekistan + Som Uzbekistan + Som Uzbekistan + Som Uzbekistan + Som Uzbekistan + + + Bolívar Venezuela + Bolívar Venezuela + Bolívar Venezuela + Bolívar Venezuela + Bolívar Venezuela + Bolívar Venezuela + Bolívar Venezuela + + + Dong Fietnam + Dong Fietnam + Dong Fietnam + Dong Fietnam + Dong Fietnam + Dong Fietnam + Dong Fietnam + + + + Vatu Vanuatu + Vatu Vanuatu + Vatu Vanuatu + Vatu Vanuatu + Vatu Vanuatu + Vatu Vanuatu + Vatu Vanuatu + + + Tala Samoa + Tala Samoa + Tala Samoa + Tala Samoa + Tala Samoa + Tala Samoa + Tala Samoa + + + Ffranc CFA y BEAC + Ffranc CFA y BEAC + Ffranc CFA y BEAC + Ffranc CFA y BEAC + Ffranc CFA y BEAC + Ffranc CFA y BEAC + Ffranc CFA y BEAC + FCFA + + + Doler Dwyrain y Caribî + Doler Dwyrain y Caribî + Doler Dwyrain y Caribî + Doler Dwyrain y Caribî + Doler Dwyrain y Caribî + Doler Dwyrain y Caribî + Doler Dwyrain y Caribî + EC$ + + + Ffranc CFA y BCEAO + Ffranc CFA y BCEAO + Ffranc CFA y BCEAO + Ffranc CFA y BCEAO + Ffranc CFA y BCEAO + Ffranc CFA y BCEAO + Ffranc CFA y BCEAO + CFA + + + Ffranc CPF + Ffranc CPF + Ffranc CPF + Ffranc CPF + Ffranc CPF + Ffranc CPF + Ffranc CPF + CFPF + + + Arian Cyfredol Anhysbys + Arian Cyfredol Anhysbys + Arian Cyfredol Anhysbys + Arian Cyfredol Anhysbys + Arian Cyfredol Anhysbys + Arian Cyfredol Anhysbys + Arian Cyfredol Anhysbys + + + Rial Yemen + Rial Yemen + Rial Yemen + Rial Yemen + Rial Yemen + Rial Yemen + Rial Yemen + + + Rand De Affrica + Rand De Affrica + Rand De Affrica + Rand De Affrica + Rand De Affrica + Rand De Affrica + Rand De Affrica + + + Kwacha Zambia (1968–2012) + Kwacha Zambia (1968–2012) + Kwacha Zambia (1968–2012) + Kwacha Zambia (1968–2012) + Kwacha Zambia (1968–2012) + Kwacha Zambia (1968–2012) + Kwacha Zambia (1968–2012) + + + Kwacha Zambia + Kwacha Zambia + Kwacha Zambia + Kwacha Zambia + Kwacha Zambia + Kwacha Zambia + Kwacha Zambia + + + + {0}+ + {0}-{1} + + + + + + {0}/{1} + + + {0} grym disgyrchedd + {0} grym disgyrchedd + {0} rym disgyrchedd + {0} grym disgyrchedd + {0} grym disgyrchedd + {0} grym disgyrchedd + + + {0} munud + {0} munud + {0} funud + {0} munud + {0} munud + {0} munud + + + {0} eiliad + {0} eiliad + {0} eiliad + {0} eiliad + {0} eiliad + {0} eiliad + + + {0} gradd + {0} radd + {0} radd + {0} gradd + {0} gradd + {0} gradd + + + {0} erw + {0} erw + {0} erw + {0} erw + {0} erw + {0} erw + + + {0} hectar + {0} hectar + {0} hectar + {0} hectar + {0} hectar + {0} hectar + + + {0} troedfedd sgwâr + {0} droedfedd sgwâr + {0} droedfedd sgwâr + {0} troedfedd sgwâr + {0} throedfedd sgwâr + {0} troedfedd sgwâr + + + {0} cilometr sgwâr + {0} cilometr sgwâr + {0} gilometr sgwâr + {0} chilometr sgwâr + {0} chilometr sgwâr + {0} cilometr sgwâr + + + {0} metr sgwâr + {0} metr sgwâr + {0} fetr sgwâr + {0} metr sgwâr + {0} metr sgwâr + {0} metr sgwâr + + + {0} milltir sgwâr + filltir sgwâr + {0} filltir sgwâr + {0} milltir sgwâr + {0} milltir sgwâr + {0} milltir sgwâr + + + {0} diwrnod + {0} diwrnod + {0} ddiwrnod + {0} diwrnod + {0} diwrnod + {0} diwrnod + + + {0} awr + {0} awr + {0} awr + {0} awr + {0} awr + {0} awr + + + {0} milieiliad + {0} milieiliad + {0} filieiliad + {0} milieiliad + {0} milieiliad + {0} milieiliad + + + {0} munud + {0} munud + {0} funud + {0} munud + {0} munud + {0} munud + + + {0} mis + {0} mis + {0} fis + {0} mis + {0} mis + {0} mis + + + {0} eiliad + {0} eiliad + {0} eiliad + {0} eiliad + {0} eiliad + {0} eiliad + + + {0} wythnos + {0} wythnos + {0} wythnos + {0} wythnos + {0} wythnos + {0} wythnos + + + {0} mlynedd + {0} flwyddyn + {0} flynedd + {0} blynedd + {0} blynedd + {0} mlynedd + + + {0} centimetr + {0} centimetr + {0} gentimetr + {0} chentimetr + {0} chentimetr + {0} centimetr + + + {0} troedfedd + {0} droedfedd + {0} droedfedd + {0} troedfedd + {0} throedfedd + {0} troedfedd + + + {0} modfedd + {0} fodfedd + {0} fodfedd + {0} modfedd + {0} modfedd + {0} modfedd + + + {0} cilometr + {0} cilometr + {0} gilometr + {0} chilometr + {0} chilometr + {0} cilometr + + + {0} blwyddyn golau + {0} flwyddyn golau + {0} flwyddyn golau + {0} blwyddyn golau + {0} blwyddyn golau + {0} blwyddyn golau + + + {0} metr + {0} metr + {0} fetr + {0} metr + {0} metr + {0} metr + + + {0} milltir + {0} filltir + {0} filltir + {0} milltir + {0} milltir + {0} milltir + + + {0} milimetr + {0} milimetr + {0} filimetr + {0} milimetr + {0} milimetr + {0} milimetr + + + {0} picometr + {0} picometr + {0} bicometr + {0} phicometr + {0} phicometr + {0} picometr + + + {0} llath + {0} llath + {0} lath + {0} llath + {0} llath + {0} llath + + + {0} gram + {0} gram + {0} gram + {0} gram + {0} gram + {0} gram + + + {0} cilogram + {0} cilogram + {0} gilogram + {0} chilogram + {0} chilogram + {0} cilogram + + + {0} owns + {0} owns + {0} owns + {0} owns + {0} owns + {0} owns + + + {0} pwys + {0} pwys + {0} bwys + {0} phwys + {0} phwys + {0} pwys + + + {0} marchnerth + {0} marchnerth + {0} farchnerth + {0} marchnerth + {0} marchnerth + {0} marchnerth + + + {0} cilowat + {0} cilowat + {0} gilowat + {0} chilowat + {0} chilowat + {0} cilowat + + + {0} wat + {0} wat + {0} wat + {0} wat + {0} wat + {0} wat + + + {0} hectopascal + {0} hectopascal + {0} hectopascal + {0} hectopascal + {0} hectopascal + {0} hectopascal + + + {0} modfedd o fercwri + {0} fodfedd o fercwri + {0} fodfedd o fercwri + {0} modfedd o fercwri + {0} modfedd o fercwri + {0} modfedd o fercwri + + + {0} milibar + {0} milibar + {0} filibar + {0} milibar + {0} milibar + {0} milibar + + + {0} cilometr yr awr + {0} cilometr yr awr + {0} gilometr yr awr + {0} chilometr yr awr + {0} chilometr yr awr + {0} cilometr yr awr + + + {0} metr yr eiliad + {0} metr yr eiliad + {0} fetr yr eiliad + {0} metr yr eiliad + {0} metr yr eiliad + {0} metr yr eiliad + + + {0} milltir yr awr + {0} filltir yr awr + {0} filltir yr awr + {0} milltir yr awr + {0} milltir yr awr + {0} milltir yr awr + + + {0} gradd Celsius + {0} radd Celsius + {0} radd Celsius + {0} gradd Celsius + {0} gradd Celsius + {0} gradd Celsius + + + {0} gradd Fahrenheit + {0} radd Fahrenheit + {0} radd Fahrenheit + {0} gradd Fahrenheit + {0} gradd Fahrenheit + {0} gradd Fahrenheit + + + {0} cilometr ciwbig + {0} cilometr ciwbig + {0} gilometr ciwbig + {0} chilometr ciwbig + {0} chilometr ciwbig + {0} cilometr ciwbig + + + {0} milltir giwbig + {0} filltir giwbig + {0} filltir giwbig + {0} milltir giwbig + {0} milltir giwbig + {0} milltir giwbig + + + {0} litr + {0} litr + {0} litr + {0} litr + {0} litr + {0} litr + + + + + {0}/{1} + + + {0} grym disgyrchedd + {0} grym disgyrchedd + {0} rym disgyrchedd + {0} grym disgyrchedd + {0} grym disgyrchedd + {0} grym disgyrchedd + + + {0}′ + {0}′ + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + {0}° + {0}° + + + {0} erw + {0} erw + {0} erw + {0} erw + {0} erw + {0} erw + + + {0} ha + {0} ha + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} troedfedd ² + {0} droedfedd ² + {0} droedfedd ² + {0} troedfedd ² + {0} throedfedd ² + {0} troedfedd ² + + + {0} km² + {0} km² + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} diwrnod + {0} diwrnod + {0} ddiwrnod + {0} diwrnod + {0} diwrnod + {0} diwrnod + + + {0} awr + {0} awr + {0} awr + {0} awr + {0} awr + {0} awr + + + {0} ms + {0} ms + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} mun + {0} mun + {0} mun + {0} mun + {0} mun + {0} mun + + + {0} mis + {0} mis + {0} fis + {0} mis + {0} mis + {0} mis + + + {0} eil + {0} eil + {0} eil + {0} eil + {0} eil + {0} eil + + + {0} wythnos + {0} wythnos + {0} wythnos + {0} wythnos + {0} wythnos + {0} wythnos + + + {0} bl + {0} bl + {0} bl + {0} bl + {0} bl + {0} bl + + + {0} cm + {0} cm + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} troedfedd + {0} droedfedd + {0} droedfedd + {0} troedfedd + {0} throedfedd + {0} troedfedd + + + {0} modfedd + {0} fodfedd + {0} fodfedd + {0} modfedd + {0} modfedd + {0} modfedd + + + {0} km + {0} km + {0} km + {0} km + {0} km + {0} km + + + {0} blwyddyn golau + {0} flwyddyn golau + {0} flwyddyn golau + {0} blwyddyn golau + {0} blwyddyn golau + {0} blwyddyn golau + + + {0} m + {0} m + {0} m + {0} m + {0} m + {0} m + + + {0} milltir + {0} filltir + {0} filltir + {0} milltir + {0} milltir + {0} milltir + + + {0} mm + {0} mm + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} llath + {0} llath + {0} lath + {0} llath + {0} llath + {0} llath + + + {0} g + {0} g + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} owns + {0} owns + {0} owns + {0} owns + {0} owns + {0} owns + + + {0} pwys + {0} pwys + {0} bwys + {0} phwys + {0} phwys + {0} pwys + + + {0} hp + {0} hp + {0} hp + {0} hp + {0} hp + {0} hp + + + {0} kW + {0} kW + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} " Hg + {0} " Hg + {0} " Hg + {0} " Hg + {0} " Hg + {0} " Hg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} m.y.a. + {0} m.y.a. + {0} m.y.a. + {0} m.y.a. + {0} m.y.a. + {0} m.y.a. + + + {0}°C + {0}°C + {0}°C + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + {0}G + {0}G + {0}G + {0}G + + + {0}′ + {0}′ + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + {0}° + {0}° + + + {0}erw + {0}erw + {0}erw + {0}erw + {0}erw + {0}erw + + + {0}ha + {0}ha + {0}ha + {0}ha + {0}ha + {0}ha + + + {0}ft² + {0}ft² + {0}ft² + {0}ft² + {0}ft² + {0}ft² + + + {0}km² + {0}km² + {0}km² + {0}km² + {0}km² + {0}km² + + + {0}m² + {0}m² + {0}m² + {0}m² + {0}m² + {0}m² + + + {0}mi² + {0}mi² + {0}mi² + {0}mi² + {0}mi² + {0}mi² + + + {0}d + {0}d + {0}d + {0}d + {0}d + {0}d + + + {0} awr + {0} awr + {0} awr + {0} awr + {0} awr + {0} awr + + + {0}ms + {0}ms + {0}ms + {0}ms + {0}ms + {0}ms + + + {0} mun + {0} mun + {0} mun + {0} mun + {0} mun + {0} mun + + + {0}m + {0}m + {0}m + {0}m + {0}m + {0}m + + + {0} eil + {0} eil + {0} eil + {0} eil + {0} eil + {0} eil + + + {0}w + {0}w + {0}w + {0}w + {0}w + {0}w + + + {0}bl + {0}bl + {0}bl + {0}bl + {0}bl + {0}bl + + + {0}cm + {0}cm + {0}cm + {0}cm + {0}cm + {0}cm + + + {0}′ + {0}′ + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}km + {0}km + {0}km + {0}km + {0}km + {0}km + + + {0}ly + {0}ly + {0}ly + {0}ly + {0}ly + {0}ly + + + {0}m + {0}m + {0}m + {0}m + {0}m + {0}m + + + {0}mi + {0}mi + {0}mi + {0}mi + {0}mi + {0}mi + + + {0}mm + {0}mm + {0}mm + {0}mm + {0}mm + {0}mm + + + {0}pm + {0}pm + {0}pm + {0}pm + {0}pm + {0}pm + + + {0}llath + {0}llath + {0}lath + {0}llath + {0}llath + {0}llath + + + {0}g + {0}g + {0}g + {0}g + {0}g + {0}g + + + {0}kg + {0}kg + {0}kg + {0}kg + {0}kg + {0}kg + + + {0}owns + {0}owns + {0}owns + {0}owns + {0}owns + {0}owns + + + {0}pwys + {0}pwys + {0}bwys + {0}phwys + {0}phwys + {0}pwys + + + {0}hp + {0}hp + {0}hp + {0}hp + {0}hp + {0}hp + + + {0} kW + {0}kW + {0}kW + {0}kW + {0}kW + {0}kW + + + {0}W + {0}W + {0}W + {0}W + {0}W + {0}W + + + {0}hPa + {0}hPa + {0}hPa + {0}hPa + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + {0}" Hg + {0}" Hg + {0}" Hg + {0}" Hg + + + {0}mb + {0}mb + {0}mb + {0}mb + {0}mb + {0}mb + + + {0}km/h + {0}km/h + {0}km/h + {0}km/h + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + {0}m/s + {0}m/s + {0}m/s + {0}m/s + + + {0}m.y.a. + {0}m.y.a. + {0}m.y.a. + {0}m.y.a. + {0}m.y.a. + {0}m.y.a. + + + {0}° + {0}° + {0}° + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + {0}°F + {0}°F + {0}°F + + + {0}km³ + {0}km³ + {0}km³ + {0}km³ + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0}l + {0}l + {0}l + {0}l + {0}l + {0}l + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ie:i + na:n + + + + diff --git a/library/Zend/Locale/Data/cy_GB.xml b/library/Zend/Locale/Data/cy_GB.xml new file mode 100755 index 000000000..fd97b1174 --- /dev/null +++ b/library/Zend/Locale/Data/cy_GB.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/da.xml b/library/Zend/Locale/Data/da.xml new file mode 100755 index 000000000..82a4b80e6 --- /dev/null +++ b/library/Zend/Locale/Data/da.xml @@ -0,0 +1,5281 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abkhasisk + achinesisk + acoli + adangme + adyghe + avestan + afrikaans + afrihili + aghem + ainu + akan + akkadisk + aleutisk + sydaltaisk + amharisk + aragonesisk + oldengelsk + angika + arabisk + moderne standardarabisk + aramæisk + araukansk + arapaho + arawak + assamesisk + asu + asturisk + avarisk + awadhi + aymara + aserbajdsjansk + azeri + bashkir + baluchi + balinesisk + basa + bamun + ghomala + hviderussisk + beja + bemba + bena + bafut + bulgarsk + bhojpuri + bislama + bikol + bini + kom + siksika + bambara + bengali + tibetansk + bretonsk + braj + bodo + bosnisk + bakossi + buriatisk + buginesisk + bulu + blin + medumba + catalansk + caddo + caribisk + cayuga + atsam + tjetjensk + cebuano + chiga + chamorro + chibcha + chagatai + chuukese + mari + chinook + choctaw + chipewyan + cherokee + cheyenne + sorani + korsikansk + koptisk + cree + krim tyrkisk + tjekkisk + kasjubisk + kirkeslavisk + chuvash + walisisk + dansk + dakota + dargwa + taita + tysk + østrigsk tysk + schweizerhøjtysk + delaware + athapaskisk + dogrib + dinka + zarma + dogri + nedersorbisk + duala + middelhollandsk + divehi + jola-fonyi + dyula + dzongkha + dazaga + kiembu + ewe + efik + oldegyptisk + ekajuk + græsk + elamitisk + engelsk + australsk engelsk + canadisk engelsk + britisk engelsk + engelsk (UK) + amerikansk engelsk + middelengelsk + esperanto + spansk + latinamerikansk spansk + europæisk spansk + mexicansk spansk + estisk + baskisk + ewondo + persisk + fang + fanti + fulah + finsk + filippinsk + fijiansk + færøsk + fon + fransk + canadisk fransk + schweizisk fransk + middelfransk + oldfransk + nordfrisisk + østfrisisk + friulian + frisisk + irsk + ga + gayo + gbaya + skotsk gælisk + geez + gilbertesisk + galicisk + middelhøjtysk + guarani + oldhøjtysk + gondi + gorontalo + gotisk + grebo + oldgræsk + schweizertysk + gujarati + gusii + manx + gwichin + hausa + haida + hawaiiansk + hebraisk + hindi + hiligaynon + hittitisk + hmong + hirimotu + kroatisk + øvresorbisk + haitisk + ungarsk + hupa + armensk + herero + interlingua + iban + ibibio + indonesisk + interlingue + igbo + sichuan yi + inupiaq + iloko + ingush + ido + islandsk + italiensk + inuktitut + japansk + lojban + ngomba + machame + jødisk-persisk + jødisk-arabisk + javanesisk + georgisk + karakalpakisk + kabyle + kachin + jju + kamba + kawi + kabardian + kanembu + tyap + makonde + kapverdisk + koro + kongo + khasi + khotanesisk + koyra-chiini + kikuyu + kuanyama + kasakhisk + kako + grønlandsk + kalenjin + khmer + kimbundu + kannada + koreansk + konkani + kosraean + kpelle + kanuri + karatjai-balkar + karelsk + kurukh + kashmiri + shambala + bafia + kölsch + kurdisk + kymyk + kutenaj + komi + cornisk + kirgisisk + latin + ladino + langi + lahnda + lamba + luxembourgsk + lezghian + ganda + limburgsk + lingala + lao + mongo + lozi + litauisk + luba-Katanga + luba-Lulua + luiseno + lunda + luo + lushai + olulujia + lettisk + madurese + mafa + magahi + maithili + makasar + mandingo + masai + maba + moksha + mandar + mende + meru + morisyen + malagassisk + middelirsk + makhuwa-meetto + meta + marshallese + maori + micmac + minangkabau + makedonsk + malayalam + mongolsk + manchu + manipuri + mohawk + mossi + marathisk + malay + maltesisk + mundang + flere sprog + creek + mirandesisk + marwari + burmesisk + myene + erzya + nauru + neapolitansk + nama + norsk bokmål + nordndebele + nedertysk + nepalesisk + newari + ndonga + nias + niuean + hollandsk + flamsk + kwasio + nynorsk + ngiemboon + norsk + nogai + oldislandsk + n-ko + sydndebele + nordsotho + nuer + navajo + klassisk newarisk + nyanja + nyamwezi + nyankole + nyoro sprog + nzima + occitansk + ojibwa + oromo + oriya + ossetisk + osage + osmannisk-tyrkisk + punjabi + pangasinan + pahlavi + pampanga + papiamento + palauansk + oldpersisk + fønikisk + pali + polsk + ponape + oldprovencalsk + pashto + pushto + portugisisk + brasiliansk portugisisk + europæisk portugisisk + quechua + rajasthani + rapanui + rarotongan + rætoromansk + rundi + rumænsk + moldovisk + rombo + romani + rot + russisk + arumænsk + kinyarwanda + rwa + sanskrit + sandawe + yakut + samaritansk + samburu + sasak + santali + ngambay + sangu + sardinsk + siciliansk + skotsk + sindhi + nordsamisk + seneca + sena + selkupisk + koyraboro senni + sango + oldirsk + serbokroatisk + tachelhit + shan + tchadisk-arabisk + singalesisk + sidamo + slovakisk + slovensk + samoansk + sydsamisk + lule sami + inari sami + skolt sami + shona + soninke + somalisk + sogdiansk + albansk + serbisk + sranan tongo + serer + swati + saho + sydsotho + sundanesisk + sukuma + susu + sumerisk + svensk + swahili + shimaore + congolesisk swahili + klassisk syrisk + syrisk + tamilsk + telugu + temne + teso + tereno + tetum + tajik + thailandsk + tigrinya + tigre + tivi + turkmensk + tokelau + tagalog + klingon + tlingit + tamashek + tswana + tongansk + nyasa tongansk + tok pisin + tyrkisk + taroko + tsonga + tsimshisk + tatarisk + tumbuka + tuvalu + twi + tasawaq + tahitiansk + tuvinian + centralmarokkansk tamazight + udmurt + uygurisk + uighurisk + ugaristisk + ukrainsk + umbundu + ukendt sprog + urdu + usbekisk + vai + venda + vietnamesisk + volapyk + votisk + vunjo + vallonsk + walsertysk + walamo + waray + washo + wolof + kalmyk + xhosa + soga + yao + yapese + yangben + yemba + jiddisch + yoruba + kantonesisk + zhuang + zapotec + blissymboler + zenaga + tamazight + kinesisk + forenklet kinesisk + traditionelt kinesisk + zulu + zuni + intet sprogligt indhold + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Verden + Afrika + Nordamerika + Sydamerika + Oceanien + Vestafrika + Mellemamerika + Østafrika + Nordafrika + Centralafrika + Det sydlige Afrika + Amerika + Det nordlige Amerika + Caribien + Østasien + Sydasien + Sydøstasien + Sydeuropa + Australasien + Melanesien + Mikronesien + Polynesien + Asien + Centralasien + Vestasien + Europa + Østeuropa + Nordeuropa + Vesteuropa + Latinamerika + Ascensionøen + Andorra + Forenede Arabiske Emirater + Afghanistan + Antigua og Barbuda + Anguilla + Albanien + Armenien + Hollandske Antiller + Angola + Antarktis + Argentina + Amerikansk Samoa + Østrig + Australien + Aruba + Ålandsøerne + Aserbajdsjan + Bosnien-Hercegovina + Barbados + Bangladesh + Belgien + Burkina Faso + Bulgarien + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Nederlandske antiller + Brasilien + Bahamas + Bhutan + Bouvetøen + Botswana + Hviderusland + Belize + Canada + Cocosøerne + Congo-Kinshasa + Den Demokratiske Republik Congo + Centralafrikanske Republik + Congo-Brazzaville + Republikken Congo + Schweiz + Côte d’Ivoire + Elfenbenskysten + Cookøerne + Chile + Cameroun + Kina + Colombia + Clippertonøen + Costa Rica + Cuba + Kap Verde + Curaçao + Juleøen + Cypern + Tjekkiet + Tyskland + Diego Garcia + Djibouti + Danmark + Dominica + Den Dominikanske Republik + Algeriet + Ceuta og Melilla + Ecuador + Estland + Egypten + Vestsahara + Eritrea + Spanien + Etiopien + Den Europæiske Union + Finland + Fiji + Falklandsøerne + Falklandsøerne (Islas Malvinas) + Mikronesiens Forenede Stater + Færøerne + Frankrig + Gabon + Storbritannien + UK + Grenada + Georgien + Fransk Guyana + Guernsey + Ghana + Gibraltar + Grønland + Gambia + Guinea + Guadeloupe + Ækvatorialguinea + Grækenland + South Georgia og De Sydlige Sandwichøer + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong SAR + Hongkong + Heard- og McDonald-øerne + Honduras + Kroatien + Haiti + Ungarn + Kanariske øer + Indonesien + Irland + Israel + Isle of Man + Indien + Det britiske territorium i Det Indiske Ocean + Irak + Iran + Island + Italien + Jersey + Jamaica + Jordan + Japan + Kenya + Kirgisistan + Cambodja + Kiribati + Comorerne + Saint Kitts og Nevis + Nordkorea + Sydkorea + Kuwait + Caymanøerne + Kasakhstan + Laos + Libanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litauen + Luxembourg + Letland + Libyen + Marokko + Monaco + Moldova + Montenegro + Saint Martin + Madagaskar + Marshalløerne + Makedonien + Makedonien (Den Tidligere Jugoslaviske Republik Makedonien) + Mali + Myanmar (Burma) + Mongoliet + Macao SAR + Macao + Nordmarianerne + Martinique + Mauretanien + Montserrat + Malta + Mauritius + Maldiverne + Malawi + Mexico + Malaysia + Mozambique + Namibia + Ny Caledonien + Niger + Norfolkøen + Nigeria + Nicaragua + Holland + Norge + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + Fransk Polynesien + Papua Ny Guinea + Filippinerne + Pakistan + Polen + Saint Pierre og Miquelon + Pitcairn + Puerto Rico + De palæstinensiske områder + Palæstina + Portugal + Palau + Paraguay + Qatar + Ydre Oceanien + Réunion + Rumænien + Serbien + Rusland + Rwanda + Saudi-Arabien + Salomonøerne + Seychellerne + Sudan + Sverige + Singapore + St. Helena + Slovenien + Svalbard og Jan Mayen + Slovakiet + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sydsudan + Sao Tome og Principe + El Salvador + Sint Maarten + Syrien + Swaziland + Tristan da Cunha + Turks- og Caicosøerne + Tchad + De franske besiddelser i Det Sydlige Indiske Ocean + Togo + Thailand + Tadsjikistan + Tokelau + Timor-Leste + Østtimor + Turkmenistan + Tunesien + Tonga + Tyrkiet + Trinidad og Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + Amerikanske oversøiske øer + USA + USA + Uruguay + Usbekistan + Vatikanstaten + Saint Vincent og Grenadinerne + Venezuela + De Britiske Jomfruøer + De Amerikanske Jomfruøer + Vietnam + Vanuatu + Wallis og Futuna + Samoa + Kosovo + Yemen + Mayotte + Sydafrika + Zambia + Zimbabwe + Ukendt område + + + traditionel tysk retskrivning + standardiseret Resi-ortografi + tysk retskrivning fra 1996 + sen middelfransk frem til 1606 + tidlig moderne fransk + akademisk + ALA-LC-romanisering fra 1997 + aluku-dialekt + østarmensk + vestarmensk + forenet tyrkisk-latinsk alfabet + bauddha + biscayisk + San Giorgio-/Bila-dialekt + Bohorič-alfabet + boontling + Dajnko-alfabet + tidlig moderne engelsk + det internationale fonetiske alfabet + det uraliske fonetiske alfabet + fonxsamp + Hepburn-romanisering + høgnorsk + itihasa + jauer + jyutping + almindelig ortografi + standardortografi + laukika + lipovaz + Metelko-alfabet + monotonisk + Ndyuka-dialekt + Natisone-dialekt + Gniva-/Nijva-dialekt + moderne volapük + Oseacco-/Osojane-dialekt + Pamaka-dialekt + pinyin + polytonisk + computer + revideret retskrivning + klassisk volapük + Resi + saho + skotsk standardengelsk + scouse + surmiran + sursilv + sutsilv + Taraskievica-ortografi + forenet ortografi + forenet revideret ortografi + ulster + vaidika + valenciansk + vallader + Wade-Giles + + + Kalender + Ignorer symboler under sortering + Omvendt sortering efter accenter + Sortering efter store/små bogstaver + Sortering med forskel på små og store bogstaver + Sortering efter kana + Sortering + Normaliseret sortering + Numerisk sortering + Sorteringsstyrke + Valuta + Tal + Tidszone + Sprogvariant + Sortér som symboler + Privatbrug + + + Hindu-arabiske tal + Udvidede hindu-arabiske tal + Armenske tal + Armenske tal i små bogstaver + Balinesiske tal + Bengalske tal + sorteringsrækkefølge uforkortet kinesisk - Big5 + Brahmi-tal + buddhistisk kalender + Chakma-tal + Cham-tal + kinesisk kalender + koptisk kalender + dangi-kalender + Devanagariske tal + sorteringsrækkefølge for ordbog + Unicode-standardsortering + europæisk sorteringsrækkefølge + Etiopiske tal + etiopisk kalender + etiopisk amete-alem-kalender + Finansielle tal + Tal i fuld bredde + sorteringsrækkefølge forkortet kinesisk - GB2312 + Georgiske tal + gregoriansk kalender + Græske tal + Græske tal i små bogstaver + Gujarati tal + Gurmukhi tal + Kinesiske decimaltal + Forenklede kinesiske tal + Forenklede kinesiske financielle tal + Traditionelle kinesiske tal + Traditionelle kinesiske finansielle tal + Hebræiske tal + jødisk kalender + Sortér alt + indisk nationalkalender + islamisk kalender + verdslig islamisk kalender + islamisk kalender (Saudi-Arabien, observation) + islamisk kalender (tabellarisk, astronomisk epoke) + islamisk kalender (Umm al-Qura) + ISO-8601-kalender + japansk kalender + Javanesiske tal + Japanske tal + Japanske financielle tal + Kayah Li-tal + Khmerske tal + Kannada tal + Tai Tham Hora-tal + Tai Tham Tahm-tal + Laotiske tal + Arabertal + Lepcha-tal + Limbu-tal + Sortér med små bogstaver først + Malayalamske tal + Mongolske tal + Meetei Mayek-tal + Myanmar tal + Myanmar Shan-tal + Nationale cifre + N'Ko-tal + Sortér efter accenter i normal rækkefølge + Sortér efter store og små bogstaver i almindelig rækkefølge + Sortér uden forskel på store og små bogstaver + Sortér kana separat + Sortér uden normalisering + Sortér efter individuelle cifre + Sortér efter symboler + Ol Chiki-tal + Oriya tal + Osmanya-tal + persisk kalender + sorteringsrækkefølge i telefonbøger + fonetisk sorteringsrækkefølge + pinyin-baseret sorteringsrækkefølge + Sortér kun efter basisbogstaver + Sortér efter accenter/små og store bogstaver/bredde/kana + ny sorteringsrækkefølge + kalender for Republikken Kina + Romertal + Romertal i små bogstaver + Saurashtra-tal + generel søgning + sortér efter den første konsonant i hangul + Sortér efter accenter + Sortér, og ignorer symboler + Sharada-tal + Sora Sompeng-tal + standardsorteringsrækkefølge + stregbaseret sorteringsrækkefølge + Sundanesiske tal + Takri-tal + Nye Tai Lue-tal + Traditionelle tamilske tal + Tamilske tal + Telugu tal + Sortér efter accenter/store og små bogstaver/bredde + Thailandske tal + Tibetanske tal + traditionel sorteringsrækkefølge + Traditionelle tal + sortering efter streger i rodtegn + Sortér med store bogstaver først + Vai-tal + Sortér efter accenter i omvendt rækkefølge + Sortér med skelnen mellem store og små bogstaver + Sortér kana med forskel på varianter + Sortér Unicode efter første normalisering + Sortér tal numerisk + zhuyin-sorteringsrækkefølge + + + BGN + Numerisk + Tone + UNGEGN + Accenter + Fuld bredde + Halv bredde + Jamo + Pinyin + Publishing + + + Det metriske system + De britiske målesystemer + De amerikanske målesystemer + + + Sprog: {0} + Instruks: {0} + Område: {0} + + + + + titlecase-firstword + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å] + [á à â ç é è ê ë í î ï ñ ó ô ú ù û ÿ ü ä ǿ ö œ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å] + [\- ‐ – , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + d/M/y + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E 'd'. d. + y G + MMM y G + d. MMM y G + E d. MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + M + d/M + E d/M + MMM + d. MMM + E d. MMM + E d. MMMM + mm.ss + y G + y G + M/y G + d/M/y G + E d/M/y G + MMM y G + d. MMM y G + E d. MMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E dd/MM – E dd/MM + E dd/MM – E dd/MM + + + MMM–MMM + + + d.–d. MMM + d. MMM – d. MMM + + + E 'den' d. – E 'den' d. MMM + E 'den' d. MMM – E 'den' d. MMM + + + y–y G + + + MM/y – MM/y G + MM/y – MM/y G + + + dd/MM/y – dd/MM/y G + dd/MM/y – dd/MM/y G + dd/MM/y – dd/MM/y G + + + E dd/MM/y – E dd/MM/y G + E dd/MM/y – E dd/MM/y G + E dd/MM/y – E dd/MM/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d.–d. MMM y G + d. MMM – d. MMM y G + d. MMM y – d. MMM y G + + + E 'den' d. – E 'den' d. MMM y G + E 'den' d. MMM – E 'den' d. MMM y G + E 'den' d. MMM y – E 'den' d. MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + jan. + feb. + mar. + apr. + maj + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januar + februar + marts + april + maj + juni + juli + august + september + oktober + november + december + + + + + jan + feb + mar + apr + maj + jun + jul + aug + sep + okt + nov + dec + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januar + februar + marts + april + maj + juni + juli + august + september + oktober + november + december + + + + + + + søn. + man. + tir. + ons. + tor. + fre. + lør. + + + S + M + T + O + T + F + L + + + + ma + ti + on + to + fr + + + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + + + + søn + man + tir + ons + tor + fre + lør + + + S + M + T + O + T + F + L + + + + ma + ti + on + to + fr + + + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + + + middag + + + middag + + + AM + middag + PM + + + + + formiddag + eftermiddag + + + + + + f.Kr. + før vesterlandsk tidsregning + e.Kr. + vesterlandsk tidsregning + + + f.Kr. + f.v.t. + e.Kr. + v.t. + + + fKr + fvt + eKr + vt + + + + + + EEEE 'den' d. MMMM y + + + + + d. MMM y + + + + + dd/MM/y + + + + + dd/MM/yy + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + + {1} 'kl.' {0} + + + + + {1} 'kl.' {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E 'd'. d. + E h.mm a + E HH.mm + E h.mm.ss a + E HH.mm.ss + y G + MMM y G + d. MMM y G + E d. MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + M + d/M + E d/M + dd/MM + MMM + d. MMM + E d. MMM + E d. MMMM + mm.ss + y + M/y + d/M/y + E d/M/y + MM/y + MMM y + d. MMM y + E d. MMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E dd/MM – E dd/MM + E dd/MM – E dd/MM + + + MMM–MMM + + + d.–d. MMM + d. MMM – d. MMM + + + E 'den' d. – E 'den' d. MMM + E 'den' d. MMM – E 'den' d. MMM + + + y–y + + + MM/y – MM/y + MM/y – MM/y + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + E dd/MM/y – E dd/MM/y + E dd/MM/y – E dd/MM/y + E dd/MM/y – E dd/MM/y + + + MMM–MMM y + MMM y – MMM y + + + d.–d. MMM y + d. MMM – d. MMM y + d. MMM y – d. MMM y + + + E 'den' d. – E 'den' d. MMM y + E 'den' d. MMM – E 'den' d. MMM y + E 'den' d. MMM y – E 'den' d. MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + d/M/y + + + + + + + + Before R.O.C. + Minguo + + + + + + + Æra + + + År + sidste år + i år + næste år + + om {0} år + om {0} år + + + for {0} år siden + for {0} år siden + + + + Måned + sidste måned + denne måned + næste måned + + om {0} måned + om {0} måneder + + + for {0} måned siden + for {0} måneder siden + + + + Uge + sidste uge + denne uge + næste uge + + om {0} uge + om {0} uger + + + for {0} uge siden + for {0} uger siden + + + + Dag + i forgårs + i går + i dag + i morgen + i overmorgen + + om {0} døgn + om {0} døgn + + + for {0} døgn siden + for {0} døgn siden + + + + Ugedag + + + sidste søndag + denne søndag + næste søndag + + + sidste mandag + denne mandag + næste mandag + + + sidste tirsdag + denne tirsdag + næste tirsdag + + + sidste onsdag + denne onsdag + næste onsdag + + + sidste torsdag + denne torsdag + næste torsdag + + + sidste fredag + denne fredag + næste fredag + + + sidste lørdag + denne lørdag + næste lørdag + + + AM/PM + + + Time + + om {0} time + om {0} timer + + + for {0} time siden + for {0} timer siden + + + + Minut + + om {0} minut + om {0} minutter + + + for {0} minut siden + for {0} minutter siden + + + + Sekund + nu + + om {0} sekund + om {0} sekunder + + + for {0} sekund siden + for {0} sekunder siden + + + + Tidszone + + + + +HH.mm;-HH.mm + GMT{0} + GMT + Tidszone for {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Ukendt by + + + Dumont d’Urville + + + Wien + + + Bruxelles + + + Saint-Barthélemy + + + São Paulo + + + Atikokan + + + St. John's + + + Zürich + + + Påskeøen + + + Kap Verde + + + Curaçao + + + Prag + + + København + + + Algier + + + Asmara + + + De Kanariske Øer + + + Addis Abeba + + + Chuuk + + + Pohnpei + + + Færøerne + + + + Britisk sommertid + + + + Nuuk + + + Ittoqqortoormiit + + + Athen + + + Hongkong + + + + Irsk sommertid + + + + Kolkata + + + Teheran + + + Rom + + + St. Kitts + + + St. Lucia + + + Macao + + + Maldiverne + + + Katmandu + + + Warszawa + + + Azorerne + + + Lissabon + + + Asunción + + + Réunion + + + Bukarest + + + Beograd + + + Moskva + + + Jekaterinburg + + + Jakutsk + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damaskus + + + Zaporizjzja + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Tasjkent + + + Vatikanet + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh-byen + + + + Acre-tid + Acre-normaltid + Acre-sommertid + + + + + Afghansk tid + + + + + Centralafrikansk tid + + + + + Østafrikansk tid + + + + + Sydafrikansk tid + + + + + Vestafrikansk tid + Vestafrikansk normaltid + Vestafrikansk sommertid + + + + + Alaska-tid + Alaska-normaltid + Alaska-sommertid + + + + + Almaty-tid + Almaty-normaltid + Almaty-sommertid + + + + + Amazonas-tid + Amazonas-normaltid + Amazonas-sommertid + + + + + Central-tid + Central-normaltid + Central-sommertid + + + + + Eastern-tid + Eastern-normaltid + Eastern-sommertid + + + + + Mountain-tid + Mountain-normaltid + Mountain-sommertid + + + + + Pacific-tid + Pacific-normaltid + Pacific-sommertid + + + + + Anadyr-tid + Anadyr-normaltid + Anadyr-sommertid + + + + + Aqtau-tid + Aqtau-normaltid + Aqtau-sommertid + + + + + Aqtobe-tid + Aqtobe-normaltid + Aqtobe-sommertid + + + + + Arabisk tid + Arabisk normaltid + Arabisk sommertid + + + + + Argentisk tid + Argentinsk normaltid + Argentinsk sommertid + + + + + Vestargentinsk tid + Vestargentinsk normaltid + Vestargentinsk sommertid + + + + + Armensk tid + Armensk normaltid + Armensk sommertid + + + + + Atlantic-tid + Atlantic-normaltid + Atlantic-sommertid + + + + + Centralaustralsk tid + Centralaustralsk normaltid + Centralaustralsk sommertid + + + + + Vestlig centralaustralsk tid + Vestlig centralaustralsk normaltid + Vestlig centralaustralsk sommertid + + + + + Østaustralsk tid + Østaustralsk normaltid + Østaustralsk sommertid + + + + + Vestaustralsk tid + Vestaustralsk normaltid + Vestaustralsk sommertid + + + + + Aserbajdsjansk tid + Aserbajdsjansk normaltid + Aserbajdsjansk sommertid + + + + + Azorerne-tid + Azorerne-normaltid + Azorerne-sommertid + + + + + Bangladeshisk tid + Bangladeshisk normaltid + Bangladeshisk sommertid + + + + + Bhutanesisk tid + + + + + Boliviansk tid + + + + + Brasiliansk tid + Brasiliansk normaltid + Brasiliansk sommertid + + + + + Brunei Darussalam-tid + + + + + Kapverdisk tid + Kapverdisk normaltid + Kapverdisk sommertid + + + + + Chamorro-tid + + + + + Chatham-tid + Chatham-normaltid + Chatham-sommertid + + + + + Chilensk tid + Chilensk normaltid + Chilensk sommertid + + + + + Kinesisk tid + Kinesisk normaltid + Kinesisk sommertid + + + + + Choibalsan-tid + Choibalsan-normaltid + Choibalsan-sommertid + + + + + Christmas Island-normaltid + + + + + Cocosøerne-normaltid + + + + + Colombiansk tid + Colombiansk normaltid + Colombiansk sommertid + + + + + Cookøerne-tid + Cookøerne-normaltid + Cookøerne-sommertid + + + + + Cubansk tid + Cubansk normaltid + Cubansk sommertid + + + + + Davis-tid + + + + + Dumont-d'Urville-tid + + + + + Østtimor-tid + + + + + Påskeøen-tid + Påskeøen-normaltid + Påskeøen-sommertid + + + + + Ecuadoriansk tid + + + + + Centraleuropæisk tid + Centraleuropæisk normaltid + Centraleuropæisk sommertid + + + CET + CET + CEST + + + + + Østeuropæisk tid + Østeuropæisk normaltid + Østeuropæisk sommertid + + + EET + EET + EEST + + + + + Vesteuropæisk tid + Vesteuropæisk normaltid + Vesteuropæisk sommertid + + + WET + WET + WEST + + + + + Falklandsøerne-tid + Falklandsøerne-normaltid + Falklandsøerne-sommertid + + + + + Fijiansk tid + Fijiansk normaltid + Fijiansk sommertid + + + + + Fransk Guyana-tid + + + + + Franske Sydlige og Antarktiske Territorier-tid + + + + + Galapagos-tid + + + + + Gambier-tid + + + + + Georgiansk tid + Georgiansk normaltid + Georgiansk sommertid + + + + + Gilbertøerne-tid + + + + + GMT + + + + + Østgrønlandsk tid + Østgrønlandsk normaltid + Østgrønlandsk sommertid + + + + + Vestgrønlandsk tid + Vestgrønlandsk normaltid + Vestgrønlandsk sommertid + + + + + Guam-normaltid + + + + + Golflandene-normaltid + + + + + Guyana-tid + + + + + Hawaii-Aleutian-tid + Hawaii-Aleutian-normaltid + Hawaii-Aleutian-sommertid + + + + + Hongkong-tid + Hongkong-normaltid + Hongkong-sommertid + + + + + Hovd-tid + Hovd-normaltid + Hovd-sommertid + + + + + Indisk normaltid + + + + + Indiske Ocean-normaltid + + + + + Indokina-tid + + + + + Centralindonesisk tid + + + + + Østindonesisk tid + + + + + Vestindonesisk tid + + + + + Iransk tid + Iransk normaltid + Iransk sommertid + + + + + Irkutsk-tid + Irkutsk-normaltid + Irkutsk-sommertid + + + + + Israelsk tid + Israelsk normaltid + Israelsk sommertid + + + + + Japansk tid + Japansk normaltid + Japansk sommertid + + + + + Petropavlovsk-Kamchatski tid + Petropavlovsk-Kamchatski normaltid + Petropavlovsk-Kamchatski sommertid + + + + + Østkasakhstansk tid + + + + + Vestkasakhstansk tid + + + + + Koreansk tid + Koreansk normaltid + Koreansk sommertid + + + + + Kosrae-tid + + + + + Krasnoyarsk-tid + Krasnoyarsk-normaltid + Krasnoyarsk-sommertid + + + + + Kirgisisk tid + + + + + Langa tid + + + + + Linjeøerne-tid + + + + + Lord Howe-tid + Lord Howe-normaltid + Lord Howe-sommertid + + + + + Macao-tid + Macao-normaltid + Macao-sommertid + + + + + Macquarie tid + + + + + Magadan-tid + Magadan-normaltid + Magadan-sommertid + + + + + Malaysisk tid + + + + + Maldivisk tid + + + + + Marquesas-tid + + + + + Marshalløerne-tid + + + + + Mauritius-tid + Mauritius-normaltid + Mauritius-sommertid + + + + + Mawson-tid + + + + + Ulan Bator-tid + Ulan Bator-normaltid + Ulan Bator-sommertid + + + + + Moskovitisk tid + Moskovitisk normaltid + Moskovitisk sommertid + + + + + Myanmarsk tid + + + + + Nauru-tid + + + + + Nepalesisk tid + + + + + Nykaledonsk tid + Nykaledonsk normaltid + Nykaledonsk sommertid + + + + + Newzealandsk tid + Newzealandsk normaltid + Newzealandsk sommertid + + + + + Newfoundlandsk tid + Newfoundlandsk normaltid + Newfoundlandsk sommertid + + + + + Niue-tid + + + + + Norfolkøen-tid + + + + + Fernando de Noronha-tid + Fernando de Noronha-normaltid + Fernando de Noronha-sommertid + + + + + Nordmarianerne-tid + + + + + Novosibirsk tid + Novosibirsk normaltid + Novosibirsk sommertid + + + + + Omsk-tid + Omsk-normaltid + Omsk-sommertid + + + + + Pakistansk tid + Pakistansk normaltid + Pakistansk sommertid + + + + + Palau-normaltid + + + + + Papua Ny Guinea-tid + + + + + Paraguayansk tid + Paraguayansk normaltid + Paraguayansk sommertid + + + + + Peruviansk tid + Peruviansk normaltid + Peruviansk sommertid + + + + + Filippinsk tid + Filippinsk normaltid + Filippinsk sommertid + + + + + Phoenixøen-tid + + + + + Saint Pierre- og Miquelon-tid + Saint Pierre- og Miquelon-normaltid + Saint Pierre- og Miquelon-sommertid + + + + + Pitcairn-tid + + + + + Ponape-tid + + + + + Qyzylorda-tid + Qyzylorda-normaltid + Qyzylorda-sommertid + + + + + Reunion-tid + + + + + Rothera-tid + + + + + Sakhalin-tid + Sakhalin-normaltid + Sakhalin-sommertid + + + + + Samara-tid + Samara-normaltid + Samara-sommertid + + + + + Samoa-tid + Samoa-normaltid + Samoa-sommertid + + + + + Seychellisk tid + + + + + Singaporeansk normaltid + + + + + Salomonøerne-tid + + + + + South Georgia-tid + + + + + Surinam-tid + + + + + Syowa-tid + + + + + Tahitisk tid + + + + + Taipei-tid + Taipei-normaltid + Taipei-sommertid + + + + + Tadsjikisk tid + + + + + Tokelau-tid + + + + + Tongansk tid + Tongansk normaltid + Tongansk sommertid + + + + + Truk-tid + + + + + Turkmensk tid + Turkmensk normaltid + Turkmensk sommertid + + + + + Tuvalu-tid + + + + + Uruguayansk tid + Uruguayansk normaltid + Uruguayansk sommertid + + + + + Usbekisk tid + Usbekisk normaltid + Usbekisk sommertid + + + + + Vanuatu-tid + Vanuatu-normaltid + Vanuatu-sommertid + + + + + Venezuelansk tid + + + + + Vladivostok-tid + Vladivostok-normaltid + Vladivostok-sommertid + + + + + Volgograd-tid + Volgograd-normaltid + Volgograd-sommertid + + + + + Vostok-tid + + + + + Wakeøen-tid + + + + + Wallis og Futuna-tid + + + + + Yakutsk-tid + Yakutsk-normaltid + Yakutsk-sommertid + + + + + Yekaterinburgsk tid + Yekaterinburgsk normaltid + Yekaterinburgsk sommertid + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tusind + 0 tusind + 00 tusind + 00 tusind + 000 tusind + 000 tusind + 0 million + 0 millioner + 00 millioner + 00 millioner + 000 millioner + 000 millioner + 0 milliard + 0 milliarder + 00 milliarder + 00 milliarder + 000 milliarder + 000 milliarder + 0 billion + 0 billioner + 00 billioner + 00 billioner + 000 billioner + 000 billioner + + + + + 0 td + 0 td + 00 td + 00 td + 000 td + 000 td + 0 mio + 0 mio + 00 mio + 00 mio + 000 mio + 000 mio + 0 mia + 0 mia + 00 mia + 00 mia + 000 mia + 000 mia + 0 bill + 0 bill + 00 bill + 00 bill + 000 bill + 000 bill + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Andorransk peseta + Andorransk peseta + Andorranske pesetas + + + Dirham fra de Forenede Arabiske Emirater + FAE-dirham + FAE-dirham + + + Afghansk afghani (1927–2002) + Afghansk afghani (1927–2002) + Afghanske afghani (1927–2002) + + + Afghansk afghani + Afghansk afghani + Afghanske afghani + + + Albansk lek + Albansk lek + Albanske lek + + + Armensk dram + Armensk dram + Armenske dram + + + Nederlandske Antiller-gylden + Nederlandske Antiller-gylden + Nederlandske Antiller-gylden + + + Angolansk kwanza + Angolansk kwanza + Angolanske kwanza + + + Angolansk kwanza (1977–1990) + Angolansk kwanza (1977–1990) + Angolanske kwanza (1977–1990) + + + Angolansk nye kwanza (1990–2000) + Angolansk nye kwanza (1990–2000) + Angolanske nye kwanza (1990–2000) + + + Angolansk kwanza (1995–1999) + Angolansk kwanza (1995–1999) + Angolanske kwanza (1995–1999) + + + Argentinsk austral + Argentinsk austral + Argentinske austral + + + Argentinsk peso (1983–1985) + Argentinsk pesos (1983–1985) + Argentinske pesos (1983–1985) + + + Argentinsk peso + Argentinsk pesos + Argentinske pesos + + + Østrigsk schilling + Østrigsk schilling + Østrigske schilling + + + Australsk dollar + Australsk dollar + Australske dollar + AU$ + + + Arubansk florin + Arubansk florin + Arubanske floriner + + + Aserbajdsjansk manat (1993–2006) + Aserbajdsjansk manat (1993–2006) + Aserbajdsjanske manat (1993–2006) + + + Aserbajdsjansk manat + Aserbajdsjansk manat + Aserbajdsjanske manat + + + Bosnien-Hercegovinsk dinar + Bosnien-Hercegovinsk dinar + Bosnien-Hercegovinske dinarer + + + Bosnien-Hercegovinsk konvertibel mark + Bosnien-Hercegovinsk konvertibel mark + Bosnien-Hercegovinske konvertible mark + + + Barbadisk dollar + Barbadisk dollar + Barbadiske dollar + + + Bangladeshisk taka + Bangladeshisk taka + Bangladeshiske taka + + + Belgisk franc (konvertibel) + Belgisk franc (konvertibel) + Belgiske franc (konvertible) + + + Belgisk franc + Belgisk franc + Belgiske franc + + + Belgisk franc (financial) + Belgisk franc (financial) + Belgiske franc (financial) + + + Bulgarsk hard lev + Bulgarsk hard lev + Bulgarske hard lev + + + Bulgarsk lev + Bulgarsk lev + Bulgarske lev + + + Bahrainsk dinar + Bahrainsk dinar + Bahrainske dinarer + + + Burundisk franc + Burundisk franc + Burundiske franc + + + Bermudansk dollar + Bermudansk dollar + Bermudanske dollar + + + Bruneisk dollar + Bruneisk dollar + Bruneiske dollar + + + Boliviansk boliviano + Boliviansk boliviano + Bolivianske boliviano + + + Boliviansk peso + Boliviansk peso + Bolivianske pesos + + + Boliviansk mvdol + Boliviansk mvdol + Bolivianske mvdol + + + Brasiliansk cruzeiro novo (1967–1986) + Brasiliansk cruzeiro novo (1967–1986) + Brasilianske cruzeiro novo (1967–1986) + + + Brasiliansk cruzado (1986–1989) + Brasiliansk cruzado (1986–1989) + Brasilianske cruzado (1986–1989) + + + Brasiliansk cruzeiro (1990–1993) + Brasiliansk cruzeiro (1990–1993) + Brasilianske cruzeiro (1990–1993) + + + Brasiliansk real + Brasiliansk real + Brasilianske real + R$ + + + Brasiliansk cruzado novo (1989–1990) + Brasiliansk cruzado novo (1989–1990) + Brasilianske cruzado novo (1989–1990) + + + Brasiliansk cruzeiro (1993–1994) + Brasiliansk cruzeiro (1993–1994) + Brasilianske cruzeiro (1993–1994) + + + Bahamansk dollar + Bahamansk dollar + Bahamanske dollar + + + Bhutansk ngultrum + Bhutansk ngultrum + Bhutanske ngultrum + + + Burmesisk kyat + Burmesisk kyat + Burmesiske kyat + + + Botswansk pula + Botswansk pula + Botswanske pula + + + Hviderussisk rubel (1994–1999) + Hviderussisk rubel (1994–1999) + Hviderussiske rubler (1994–1999) + + + Hviderussisk rubel + Hviderussisk rubel + Hviderussiske rubler + + + Belizisk dollar + Belizisk dollar + Beliziske dollar + + + Canadisk dollar + Canadisk dollar + Canadiske dollar + CA$ + + + Congolesisk franc + Congolesisk franc + Congolesiske franc + + + WIR euro + WIR euro + WIR euro + + + Schweizisk franc + Schweizisk franc + Schweiziske franc + + + WIR franc + WIR franc + WIR franc + + + Chilensk peso + Chilensk pesos + Chilenske pesos + + + Kinesisk yuan renminbi + Kinesisk yuan + Kinesiske yuan + CN¥ + + + Colombiansk peso + Colombiansk pesos + Colombianske pesos + + + Costaricansk colón + Costaricansk colón + Costaricanske colón + + + Serbisk dinar (2002–2006) + Serbisk dinar (2002–2006) + Serbiske dinar (2002–2006) + + + Tjekkoslovakisk hard koruna + Tjekkoslovakisk hard koruna + Tjekkoslovakiske hard koruna + + + Cubansk konvertibel peso + Cubansk konvertible pesos + Cubanske konvertible pesos + + + Cubansk peso + Cubansk pesos + Cubanske pesos + + + Kapverdisk escudo + Kapverdisk escudo + Kapverdiske escudos + + + Cypriotisk pund + Cypriotisk pund + Cypriotiske pund + + + Tjekkisk koruna + Tjekkisk koruna + Tjekkiske koruna + + + Østtysk mark + Østtysk mark + Østtyske mark + + + Tysk mark + Tysk mark + Tyske mark + + + Djiboutisk franc + Djiboutisk franc + Djiboutiske franc + + + Dansk krone + Dansk krone + Danske kroner + kr + + + Dominikansk peso + Dominikansk peso + Dominikanske pesos + + + Algerisk dinar + Algerisk dinar + Algeriske dinarer + + + Ecuadoriansk sucre + Ecuadoriansk sucre + Ecuadorianske sucre + + + Estisk kroon + Estisk kroon + Estiske kroon + + + Egyptisk pund + Egyptisk pund + Egyptiske pund + + + Eritreisk nakfa + Eritreisk nakfa + Eritreiske nakfa + + + Spansk peseta (A–konto) + Spansk peseta (A–konto) + Spanske peseta (A–konto) + + + Spansk peseta (konvertibel konto) + Spansk peseta (konvertibel konto) + Spanske peseta (konvertibel konto) + + + Spansk peseta + Spansk pesetas + Spanske pesetas + + + Etiopisk birr + Etiopisk birr + Etiopiske birr + + + Euro + Euro + Euro + + + + Finsk mark + Finsk mark + Finske mark + + + Fijiansk dollar + Fijiansk dollar + Fijianske dollar + + + Pund fra Falklandsøerne + Pund fra Falklandsøerne + Pund fra Falklandsøerne + + + Fransk franc + Fransk franc + Franske franc + + + Britisk pund + Britisk pund + Britiske pund + £ + + + Georgisk kupon larit + Georgisk kupon larit + Georgiske kupon larit + + + Georgisk lari + Georgisk lari + Georgiske lari + + + Ghanesisk cedi (1979–2007) + Ghanesisk cedi (1979–2007) + Ghanesiske cedi (1979–2007) + + + Ghanesisk cedi + Ghanesisk cedi + Ghanesiske cedi + + + Gibraltarisk pund + Gibraltarisk pund + Gibraltariske pund + + + Gambisk dalasi + Gambisk dalasi + Gambiske dalasi + + + Guineansk franc + Guineansk franc + Guineanske franc + + + Guineansk syli + Guineansk syli + Guineanske syli + + + Ækvatorialguineask ekwele + Ækvatorialguineask ekwele + Ækvatorialguineaske ekwele + + + Græsk drakme + Græsk drakmer + Græske drakmer + + + Guatemalansk quetzal + Guatemalansk quetzal + Guatemalanske quetzal + + + Portugisisk guinea escudo + Portugisiske guinea escudo + Portugisiske guinea escudo + + + Guineansk peso + Guinea-Bissau-peso + Guinea-Bissau-pesos + + + Guyansk dollar + Guyansk dollar + Guyanske dollar + + + Hongkong dollar + Hongkong dollar + Hongkong dollar + HK$ + + + Honduransk lempira + Honduransk lempira + Honduranske lempira + + + Kroatisk dinar + Kroatisk dinar + Kroatiske dinarer + + + Kroatisk kuna + Kroatisk kuna + Kroatiske kuna + + + Haitisk gourde + Haitisk gourde + Haitiske gourde + + + Ungarsk forint + Ungarsk forint + Ungarske forint + + + Indonesisk pupiah + Indonesisk rupiah + Indonesiske rupiah + + + Irsk pund + Irsk pund + Irske pund + + + Israelsk pund + Israelsk pund + Israelske pund + + + Ny israelsk shekel + Ny israelsk shekel + Nye israelske shekel + + + + Indisk rupee + Indisk rupee + Indiske rupees + + + + Irakisk dinar + Irakisk dinar + Irakiske dinarer + + + Iransk rial + Iransk rial + Iranske rial + + + Islansk krone + Islandsk krone + Islandske kroner + + + Italiensk lire + Italiensk lire + Italienske lire + + + Jamaicansk dollar + Jamaicansk dollar + Jamaicanske dollar + + + Jordansk dinar + Jordansk dinar + Jordanske dinarer + + + Japansk yen + Japansk yen + Japanske yen + JP¥ + + + Kenyansk shilling + Kenyansk shilling + Kenyanske shilling + + + Kirgisisk som + Kirgisisk sum + Kirgisiske som + + + Cambodjansk riel + Cambodjansk riel + Cambodjanske riel + + + Comorisk franc + Comorisk franc + Comoriske franc + + + Nordkoreansk won + Nordkoreansk won + Nordkoreanske won + + + Sydkoreansk won + Sydkoreansk won + Sydkoreanske won + + + + Kuwaitisk dinar + Kuwaitisk dinar + Kuwaitiske dinarer + + + Caymansk dollar + Caymansk dollar + Caymansk dollar + + + Kasakhisk tenge + Kasakhisk tenge + Kasakhiske tenge + + + Laotisk kip + Laotisk kip + Laotiske kip + + + Libanesisk pund + Libanesisk pund + Libanesiske pund + + + Srilankansk rupee + Srilankansk rupee + Srilankanske rupees + + + Liberisk dollar + Liberisk dollar + Liberiske dollar + + + Lesothisk loti + Lesothisk loti + Lesothiske loti + + + Litauisk litas + Litauisk litas + Litauiske litai + + + Litauisk talonas + Litauisk talonas + Litauiske talonas + + + Luxembourgsk konvertibel franc + Luxembourgsk konvertibel franc + Luxembourgsk konvertibel franc + + + Luxembourgsk franc + Luxembourgsk franc + Luxembourgske franc + + + Luxembourgsk finansiel franc + Luxembourgsk finansiel franc + Luxembourgsk finansiel franc + + + Lettisk lat + Lettisk lat + Lettiske lats + + + Lettisk rubel + Lettisk rubel + Lettiske rubler + + + Libysk dinar + Libysk dinar + Libyske dinarer + + + Marokkansk dirham + Marokkansk dirham + Marokkanske dirham + + + Marokkansk franc + Marokkansk franc + Marokkanske franc + + + Moldovisk leu + Moldovisk leu + Moldoviske leu + + + Madagaskisk ariary + Madagaskisk ariary + Madagaskiske ariary + + + Madagaskisk franc + Madagaskisk franc + Madagaskiske franc + + + Makedonsk denar + Makedonsk denar + Makedonske denarer + + + Malisk franc + Malisk franc + Maliske franc + + + Myanmarsk kyat + Myanmarsk kyat + Myanmarske kyat + + + Mongolsk tugrik + Mongolsk tugrik + Mongolske tugrik + + + Macaosk pataca + Macaosk pataca + Macaoske pataca + + + Mauritansk ouguiya + Mauritansk ouguiya + Mauritanske ouguiya + + + Maltesisk lira + Maltesisk lira + Maltesiske lira + + + Maltesisk pund + Maltesisk pund + Maltesiske pund + + + Mauritisk rupee + Mauritisk rupee + Mauritiske rupees + + + Maldivisk rufiyaa + Maldivisk rufiyaa + Maldiviske rufiyaa + + + Malawisk kwacha + Malawisk kwacha + Malawiske kwacha + + + Mexicansk peso + Mexicansk pesos + Mexicanske pesos + MX$ + + + Mexicansk silver peso (1861–1992) + Mexicansk silver peso (1861–1992) + Mexicanske silver peso (1861–1992) + + + Malaysisk ringgit + Malaysisk ringgit + Malaysiske ringgit + + + Mozambiquisk escudo + Mozambiquisk escudo + Mozambiquiske escudo + + + Mozambiquisk metical (1980–2006) + Mozambiquisk metical (1980–2006) + Mozambiquiske metical (1980–2006) + + + Mozambiquisk metical + Mozambiquisk metical + Mozambiquiske metical + + + Namibisk dollar + Namibisk dollar + Namibiske dollar + + + Nigeriansk naira + Nigeriansk naira + Nigerianske naira + + + Nicaraguansk cordoba (1988–1991) + Nicaraguansk cordoba (1988–1991) + Nicaraguanske cordoba (1988–1991) + + + Nicaraguansk cordoba + Nicaraguansk cordoba + Nicaraguanske cordoba + + + Hollandsk guilder + Hollandsk gylden + Hollandske gylden + + + Norsk krone + Norsk krone + Norske kroner + + + Nepalesisk rupee + Nepalesisk rupee + Nepalesiske rupees + + + New Zealandsk dollar + New Zealandsk dollar + New Zealandske dollar + NZ$ + + + Omansk rial + Omansk rial + Omanske rial + + + Panamansk balboa + Panamansk balboa + Panamanske balboa + + + Peruviansk inti + Peruviansk inti + Peruvianske inti + + + Peruviansk nuevo sol + Peruviansk nuevo sol + Peruvianske nuevos soles + + + Peruviansk sol (1863–1965) + Peruviansk sol (1863–1965) + Peruvianske sol (1863–1965) + + + Papuansk kina + Papuansk kina + Papuanske kina + + + Filippinsk peso + Filippinsk peso + Filippinske pesos + + + Pakistansk rupee + Pakistansk rupee + Pakistanske rupees + + + Polsk zloty + Polsk zloty + Polske zloty + + + Polsk zloty (1950–1995) + Polsk zloty (1950–1995) + Polske zloty (1950–1995) + + + Portugisisk escudo + Portugisisk escudo + Portugisiske escudo + + + Paraguaysk guarani + Paraguayske guarani + Paraguayske guarani + + + Qatarsk rial + Qatarsk rial + Qatarske rial + + + Rumænsk leu (1952–2006) + Rumænsk leu (1952–2006) + Rumænske leu (1952–2006) + + + Rumænsk leu + Rumænsk leu + Rumænske leu + + + Serbisk dinar + Serbisk dinar + Serbiske dinarer + + + Russisk rubel + Russisk rubel + Russiske rubler + + + Russisk rubel (1991–1998) + Russisk rubel (1991–1998) + Russiske rubler (1991–1998) + + + Rwandisk franc + Rwandisk franc + Rwandiske franc + + + Saudiarabisk riyal + Saudiarabisk riyal + Saudiarabiske riyal + + + Salomonsk dollar + Salomonsk dollar + Salomonske dollar + + + Seychellisk rupee + Seychellisk rupee + Seychelliske rupees + + + Sudansk dinar (1992–2007) + Sudansk dinar (1992–2007) + Sudanske dinar (1992–2007) + + + Sudansk pund + Sudanske pund + Sudanske pund + + + Sudansk pund (1957–1998) + Sudanske pund (1957–1998) + Sudanske pund (1957–1998) + + + Svensk krone + Svensk krone + Svenske kroner + + + Singaporeansk dollar + Singaporeansk dollar + Singaporeanske dollar + + + Pund fra Saint Helena + Pund fra Saint Helena + Pund fra Saint Helena + + + Slovensk tolar + Slovensk tolar + Slovenske tolar + + + Slovakisk koruna + Slovakisk koruna + Slovakiske koruna + + + Sierraleonsk leone + Sierraleonsk leone + Sierraleonske leone + + + Somalisk shilling + Somalisk shilling + Somaliske shilling + + + Surinamsk dollar + Surinamsk dollar + Surinamske dollar + + + Surinamsk guilder + Surinamsk guilder + Surinamske guilder + + + Sydsudanske pund + Sydsudansk pund + Sydsudanske pund + + + Dobra fra Sao Tome og Principe + Dobra fra Sao Tome og Principe + Dobra fra Sao Tome og Principe + + + Sovjetisk rubel + Sovjetisk rubel + Sovjetiske rubler + + + Salvadoransk colon + Salvadoransk colon + Salvadoranske colon + + + Syrisk pund + Syrisk pund + Syriske pund + + + Swazilandsk lilangeni + Swazilandsk lilangeni + Swazilandske lilangeni + + + Thailandsk baht + Thailandsk baht + Thailandske baht + ฿ + + + Tadsjikisk rubel + Tadsjikisk rubel + Tadsjikiske rubel + + + Tadsjikisk somoni + Tadsjikisk somoni + Tadsjikiske somoni + + + Turkmensk manat (1993–2009) + Turkmensk manat (1993–2009) + Turkmenske manat (1993–2009) + + + Turkmensk manat + Turkmensk manat + Turkmenske manat + + + Tunesisk dinar + Tunesisk dinar + Tunesiske dinarer + + + Tongansk paʻanga + Tongansk paʻanga + Tonganske paʻanga + + + Escudo fra Timor + Escudo fra Timor + Escudo fra Timor + + + Tyrkisk lire (1922–2005) + Tyrkisk lire (1922–2005) + Tyrkiske lire (1922–2005) + + + Tyrkisk lira + Tyrkisk lira + Tyrkiske lira + + + Dollar fra Trinidad og Tobago + Dollar fra Trinidad og Tobago + Dollar fra Trinidad og Tobago + + + Ny taiwansk dollar + Ny taiwansk dollar + Ny taiwanske dollar + NT$ + + + Tanzanisk shilling + Tanzanisk shilling + Tanzaniske shilling + + + Ukrainsk grynia + Ukrainsk grynia + Ukrainske grynia + + + Ukrainsk karbovanetz + Ukrainsk karbovanetz + Ukrainske karbovanetz + + + Ugandisk shilling (1966–1987) + Ugandisk shilling (1966–1987) + Ugandiske shilling (1966–1987) + + + Ugandisk shilling + Ugandisk shilling + Ugandiske shilling + + + Amerikansk dollar + Amerikansk dollar + Amerikanske dollar + $ + + + Amerikansk dollar (næste dag) + Amerikansk dollar (næste dag) + Amerikanske dollar (næste dag) + + + Amerikansk dollar (samme dag) + Amerikansk dollar (samme dag) + Amerikanske dollar (samme dag) + + + Uruguayansk peso (1975–1993) + Uruguayansk peso (1975–1993) + Uruguayanske peso (1975–1993) + + + Uruguayansk peso + Uruguayansk peso + Uruguayanske pesos + + + Usbekisk sum + Usbekisk sum + Usbekiske sum + + + Venezuelansk bolivar (1871–2008) + Venezuelansk bolivar (1871–2008) + Venezuelanske bolivar (1871–2008) + + + Venezuelansk bolivar + Venezuelansk bolivar + Venezuelanske bolivar + + + Vietnamesisk dong + Vietnamesisk dong + Vietnamesiske dong + + + + Vanuaisk vatu + Vanuaisk vatu + Vanuaiske vatu + + + Samoansk tala + Samoansk tala + Samoanske tala + + + CFA-franc (BEAC) + Beninsk CFA-franc + CFA-franc (BEAC) + FCFA + + + Sølv + + + Guld + + + EURCO + + + EMU + + + Østkaribisk dollar + Østkaribisk dollar + Østkaribiske dollar + EC$ + + + SDR + + + ECU + + + Fransk guldfranc + Fransk guldfranc + Franske guldfranc + + + Fransk UIC-franc + Fransk UIC-franc + Franske UIC-franc + + + CFA-franc BCEAO + CFA-franc BCEAO + CFA-franc BCEAO + CFA + + + Palladium + + + CFP-franc + CFP-franc + CFP-franc + CFPF + + + Platin + + + RINET-fond + + + testvalutakode + testvaluta + testvaluta + + + Ukendt valuta + (ukendt valuta) + (ukendt valuta) + + + Yemenitisk dinar + Yemenitisk dinar + Yemenitiske dinarer + + + Yemenitisk rial + Yemenitisk rial + Yemenitiske rial + + + Jugoslavisk hard dinar (1966–1990) + Jugoslavisk hard dinar (1966–1990) + Jugoslaviske hard dinar (1966–1990) + + + Jugoslavisk noviy dinar (1994–2002) + Jugoslavisk noviy dinar (1994–2002) + Jugoslaviske noviy dinar (1994–2002) + + + Jugoslavisk konvertibel dinar (1990–1992) + Jugoslavisk konvertibel dinar (1990–1992) + Jugoslaviske konvertibel dinar (1990–1992) + + + Sydafrikansk rand (financial) + Sydafrikansk rand (financial) + Sydafrikanske rand (financial) + + + Sydafrikansk rand + Sydafrikansk rand + Sydafrikanske rand + + + Zambisk kwacha (1968–2012) + Zambisk kwacha (1968–2012) + Zambiske kwacha (1968–2012) + + + Zambisk kwacha + Zambisk kwacha + Zambiske kwacha + + + Ny zairisk zaire (1993–1998) + Ny zairisk zaire (1993–1998) + Ny zairiske zaire (1993–1998) + + + Zairisk zaire (1971–1993) + Zairisk zaire (1971–1993) + Zairiske zaire (1971–1993) + + + Zimbabwisk dollar (1980–2008) + Zimbabwisk dollar (1980–2008) + Zimbabwiske dollar (1980–2008) + + + Zimbabwisk dollar (2009) + Zimbabwisk dollar (2009) + Zimbabwiske dollar (2009) + + + Zimbabwisk dollar (2008) + Zimbabwisk dollar (2008) + Zimbabwiske dollar (2008) + + + + {0} eller derover + {0}-{1} + + + + + + {0} pr. {1} + + + {0} G-kraft + {0} G-kraft + + + {0} bueminut + {0} bueminutter + + + {0} buesekund + {0} buesekunder + + + {0} grad + {0} grader + + + {0} acre + {0} acres + + + {0} hektar + {0} hektar + + + {0} kvadratfod + {0} kvadratfod + + + {0} kvadratkilometer + {0} kvadratkilometer + + + {0} kvadratmeter + {0} kvadratmeter + + + {0} kvadrat-engelsk mil + {0} kvadrat-engelske mil + + + {0} døgn + {0} døgn + + + {0} time + {0} timer + + + {0} millisekund + {0} millisekunder + + + {0} minut + {0} minutter + + + {0} måned + {0} måneder + + + {0} sekund + {0} sekunder + + + {0} uge + {0} uger + + + {0} år + {0} år + + + {0} centimeter + {0} centimeter + + + {0} fod + {0} fod + + + {0} tomme + {0} tommer + + + {0} kilometer + {0} kilometer + + + {0} lysår + {0} lysår + + + {0} meter + {0} meter + + + {0} engelsk mil + {0} engelske mil + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} engelsk yard + {0} engelske yard + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0} hestekraft + {0} hestekræfter + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} tomme kviksølv + {0} tommer kviksølv + + + {0} millibar + {0} millibar + + + {0} kilometer per time + {0} kilometer per time + + + {0} meter per sekund + {0} meter per sekund + + + {0} engelsk mil per time + {0} engelske mil per time + + + {0} grad Celsius + {0} grader Celsius + + + {0} grad Fahrenheit + {0} grader Fahrenheit + + + {0} kubikkilometer + {0} kubikkilometer + + + {0} kubik-engelsk mil + {0} kubik-engelske mil + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} kvadratfod + {0} kvadratfod + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} t + {0} t + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mån + {0} mån + + + {0} sek + {0} sek + + + {0} uge + {0} uger + + + {0} år + {0} år + + + {0} cm + {0} cm + + + {0} fod + {0} fod + + + {0} tomme + {0} tommer + + + {0} km + {0} km + + + {0} lysår + {0} lysår + + + {0} m + {0} m + + + {0} mil + {0} mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yard + {0} yard + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0} hk + {0} hk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} # Hg + {0} # Hg + + + {0} mbar + {0} mbar + + + {0} km/t. + {0} km/t. + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ac + {0}ac + + + {0}ha + {0}ha + + + {0} ft² + {0} ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0}d + {0}d + + + {0} t + {0}t + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}u + {0}u + + + {0}å + {0}å + + + {0}cm + {0}cm + + + {0} fod + {0} fod + + + {0}" + {0}" + + + {0}km + {0}km + + + {0} lysår + {0} lysår + + + {0}m + {0}m + + + {0} mil + {0} mil + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} yard + {0} yard + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} unse + {0} unser + + + {0} pund + {0} pund + + + {0}hk + {0}hk + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + + + {0}mbar + {0}mbar + + + {0}km/t. + {0}km/t. + + + {0}m/s + {0}m/s + + + {0} mph + {0} mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + + + {0}L + {0}L + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + + + ja:j + nej:n + + + + diff --git a/library/Zend/Locale/Data/da_DK.xml b/library/Zend/Locale/Data/da_DK.xml new file mode 100755 index 000000000..11d3c35f5 --- /dev/null +++ b/library/Zend/Locale/Data/da_DK.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/da_GL.xml b/library/Zend/Locale/Data/da_GL.xml new file mode 100755 index 000000000..990b33615 --- /dev/null +++ b/library/Zend/Locale/Data/da_GL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/dav.xml b/library/Zend/Locale/Data/dav.xml new file mode 100755 index 000000000..f6d3167af --- /dev/null +++ b/library/Zend/Locale/Data/dav.xml @@ -0,0 +1,765 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kitaita + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Imb + Kaw + Kad + Kan + Kas + Kar + Mfu + Wun + Ike + Iku + Imw + Iwi + + + Mori ghwa imbiri + Mori ghwa kawi + Mori ghwa kadadu + Mori ghwa kana + Mori ghwa kasanu + Mori ghwa karandadu + Mori ghwa mfungade + Mori ghwa wunyanya + Mori ghwa ikenda + Mori ghwa ikumi + Mori ghwa ikumi na imweri + Mori ghwa ikumi na iwi + + + + + I + K + K + K + K + K + M + W + I + I + I + I + + + + + + + Jum + Jim + Kaw + Kad + Kan + Kas + Ngu + + + Ituku ja jumwa + Kuramuka jimweri + Kuramuka kawi + Kuramuka kadadu + Kuramuka kana + Kuramuka kasanu + Kifula nguwo + + + + + J + J + K + K + K + K + N + + + + + + + K1 + K2 + K3 + K4 + + + Kimu cha imbiri + Kimu cha kawi + Kimu cha kadadu + Kimu cha kana + + + + + + + Luma lwa K + luma lwa p + + + + + + Kabla ya Kristo + Baada ya Kristo + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ngelo + + + Mwaka + + + Mori + + + Juma + + + Ituku + Iguo + Idime + Kesho + + + KE/PE + + + Saa + + + Dakika + + + Sekunde + + + Majira ya saa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Huwo:H + Mbai:M + + + + diff --git a/library/Zend/Locale/Data/dav_KE.xml b/library/Zend/Locale/Data/dav_KE.xml new file mode 100755 index 000000000..961b8c600 --- /dev/null +++ b/library/Zend/Locale/Data/dav_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/dayPeriods.xml b/library/Zend/Locale/Data/dayPeriods.xml new file mode 100755 index 000000000..305750552 --- /dev/null +++ b/library/Zend/Locale/Data/dayPeriods.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/de.xml b/library/Zend/Locale/Data/de.xml new file mode 100755 index 000000000..536272d32 --- /dev/null +++ b/library/Zend/Locale/Data/de.xml @@ -0,0 +1,5451 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Afar + Abchasisch + Aceh-Sprache + Acholi-Sprache + Adangme + Adygeisch + Avestisch + Afrikaans + Afrihili + Aghem + Ainu-Sprache + Akan + Akkadisch + Aleutisch + Süd-Altaisch + Amharisch + Aragonesisch + Altenglisch + Angika + Arabisch + Modernes Hocharabisch + Aramäisch + Araukanisch + Arapaho-Sprache + Arawak-Sprache + Assamesisch + Pare + Asturianisch + Awarisch + Awadhi + Aymara + Aserbaidschanisch + Aserbaidschanisch + Baschkirisch + Belutschisch + Balinesisch + Basaa-Sprache + Bamun + Ghomala + Weißrussisch + Bedauye + Bemba-Sprache + Bena + Bafut + Bulgarisch + Bhodschpuri + Bislama + Bikol-Sprache + Bini-Sprache + Kom + Blackfoot-Sprache + Bambara-Sprache + Bengalisch + Tibetisch + Bretonisch + Braj-Bhakha + Bodo + Bosnisch + Akoose + Burjatisch + Buginesisch + Bulu + Blin + Medumba + Katalanisch + Caddo + Karibisch + Cayuga + Atsam + Tschetschenisch + Cebuano + Chiga + Chamorro-Sprache + Chibcha-Sprache + Tschagataisch + Trukesisch + Tscheremissisch + Chinook + Choctaw + Chipewyan + Cherokee + Cheyenne + Sorani + Korsisch + Koptisch + Cree + Krimtatarisch + Tschechisch + Kaschubisch + Kirchenslawisch + Tschuwaschisch + Walisisch + Dänisch + Dakota-Sprache + Darginisch + Taita + Deutsch + Österreichisches Deutsch + Schweizer Hochdeutsch + Delaware-Sprache + Slave + Dogrib + Dinka-Sprache + Zarma + Dogri + Niedersorbisch + Duala + Mittelniederländisch + Maledivisch + Diola + Dyula-Sprache + Bhutanisch + Dazaga + Kiembu + Ewe-Sprache + Efik + Ägyptisch + Ekajuk + Griechisch + Elamisch + Englisch + Australisches Englisch + Kanadisches Englisch + Britisches Englisch + UK-Englisch + Amerikanisches Englisch + US-Englisch + Mittelenglisch + Esperanto + Spanisch + Lateinamerikanisches Spanisch + Europäisches Spanisch + Mexikanisches Spanisch + Estnisch + Baskisch + Ewondo + Persisch + Pangwe-Sprache + Fanti-Sprache + Ful + Finnisch + Filipino + Fidschianisch + Färöisch + Fon-Sprache + Französisch + Kanadisches Französisch + Schweizer Französisch + Mittelfranzösisch + Altfranzösisch + Nordfriesisch + Ostfriesisch + Friulisch + Westfriesisch + Irisch + Ga-Sprache + Gayo + Gbaya-Sprache + Schottisches Gälisch + Geez + Gilbertesisch + Galizisch + Mittelhochdeutsch + Guarani + Althochdeutsch + Gondi-Sprache + Mongondou + Gotisch + Grebo-Sprache + Altgriechisch + Schweizerdeutsch + Gujarati + Gusii + Manx + Kutchin-Sprache + Hausa + Haida-Sprache + Hawaiisch + Hebräisch + Hindi + Hiligaynon-Sprache + Hethitisch + Miao-Sprache + Hiri-Motu + Kroatisch + Obersorbisch + Haitianisch + Ungarisch + Hupa + Armenisch + Herero-Sprache + Interlingua + Iban + Ibibio + Indonesisch + Interlingue + Igbo-Sprache + Sichuan Yi + Inupiak + Ilokano-Sprache + Inguschisch + Ido-Sprache + Isländisch + Italienisch + Inuktitut + Japanisch + Lojban + Ngomba + Machame + Jüdisch-Persisch + Jüdisch-Arabisch + Javanisch + Georgisch + Karakalpakisch + Kabylisch + Kachin-Sprache + Jju + Kamba + Kawi + Kabardinisch + Kanembu + Tyap + Makonde + Kabuverdianu + Koro + Kongolesisch + Khasi-Sprache + Sakisch + Koyra Chiini + Kikuyu-Sprache + Kwanyama + Kasachisch + Kako + Grönländisch + Kalenjin + Kambodschanisch + Kimbundu-Sprache + Kannada + Koreanisch + Konkani + Kosraeanisch + Kpelle-Sprache + Kanuri-Sprache + Karatschaiisch-Balkarisch + Karelisch + Oraon-Sprache + Kaschmirisch + Shambala + Bafia + Kölsch + Kurdisch + Kumükisch + Kutenai-Sprache + Komi-Sprache + Kornisch + Kirgisisch + Latein + Ladino + Langi + Lahnda + Lamba-Sprache + Luxemburgisch + Lesgisch + Ganda-Sprache + Limburgisch + Lakota + Lingala + Laotisch + Mongo + Rotse-Sprache + Litauisch + Luba-Katanga + Luba-Lulua + Luiseno-Sprache + Lunda-Sprache + Luo-Sprache + Lushai-Sprache + Olulujia + Lettisch + Maduresisch + Mafa + Khotta + Maithili + Makassarisch + Manding-Sprache + Massai-Sprache + Maba + Moksha + Mandaresisch + Mende-Sprache + Meru + Morisyen + Malagassi-Sprache + Mittelirisch + Makhuwa-Meetto + Meta' + Marschallesisch + Maori + Micmac-Sprache + Minangkabau-Sprache + Mazedonisch + Malayalam + Mongolisch + Mandschurisch + Meithei-Sprache + Mohawk-Sprache + Mossi-Sprache + Marathi + Malaiisch + Maltesisch + Mundang + Mehrsprachig + Muskogee-Sprache + Mirandesisch + Marwari + Birmanisch + Myene + Ersja-Mordwinisch + Nauruisch + Neapolitanisch + Nama + Norwegisch Bokmål + Nord-Ndebele-Sprache + Niederdeutsch + Nepalesisch + Newari + Ndonga + Nias-Sprache + Niue-Sprache + Niederländisch + Flämisch + Kwasio + Norwegisch Nynorsk + Ngiemboon + Norwegisch + Nogai + Altnordisch + N’Ko + Süd-Ndebele-Sprache + Nord-Sotho-Sprache + Nuer + Navajo + Alt-Newari + Nyanja-Sprache + Nyamwezi-Sprache + Nyankole + Nyoro + Nzima + Okzitanisch + Ojibwa-Sprache + Oromo + Orija + Ossetisch + Osage-Sprache + Osmanisch + Pandschabisch + Pangasinan-Sprache + Mittelpersisch + Pampanggan-Sprache + Papiamento + Palau + Altpersisch + Phönikisch + Pali + Polnisch + Ponapeanisch + Altprovenzalisch + Paschtu + Portugiesisch + Brasilianisches Portugiesisch + Europäisches Portugiesisch + Quechua + Rajasthani + Osterinsel-Sprache + Rarotonganisch + Rätoromanisch + Rundi-Sprache + Rumänisch + Moldauisch + Rombo + Romani + Root + Russisch + Aromunisch + Ruandisch + Rwa + Sanskrit + Sandawe-Sprache + Jakutisch + Samaritanisch + Samburu + Sasak + Santali + Ngambay + Sangu + Sardisch + Sizilianisch + Schottisch + Sindhi + Nord-Samisch + Seneca + Sena + Selkupisch + Koyra Senni + Sango + Altirisch + Serbo-Kroatisch + Taschelhit + Schan-Sprache + Tschadisch-Arabisch + Singhalesisch + Sidamo + Slowakisch + Slowenisch + Samoanisch + Süd-Samisch + Lule-Lappisch + Inari-Lappisch + Skolt-Lappisch + Shona + Soninke-Sprache + Somali + Sogdisch + Albanisch + Serbisch + Srananisch + Serer-Sprache + Swazi + Saho + Süd-Sotho-Sprache + Sundanesisch + Sukuma-Sprache + Susu + Sumerisch + Schwedisch + Suaheli + Komorisch + Kongo-Suaheli + Altsyrisch + Syrisch + Tamilisch + Telugu + Temne + Teso + Tereno-Sprache + Tetum-Sprache + Tadschikisch + Thailändisch + Tigrinja + Tigre + Tiv-Sprache + Turkmenisch + Tokelauanisch + Tagalog + Klingonisch + Tlingit-Sprache + Tamaseq + Tswana-Sprache + Tongaisch + Tsonga-Sprache + Neumelanesisch + Türkisch + Taroko + Tsonga + Tsimshian-Sprache + Tatarisch + Tumbuka-Sprache + Elliceanisch + Twi + Tasawaq + Tahitisch + Tuwinisch + Zentralatlas-Tamazight + Udmurtisch + Uigurisch + Ugaritisch + Ukrainisch + Mbundu-Sprache + Unbestimmte Sprache + Urdu + Usbekisch + Vai-Sprache + Venda-Sprache + Vietnamesisch + Volapük + Wotisch + Vunjo + Wallonisch + Walser-Dialekte + Walamo-Sprache + Waray + Washo-Sprache + Wolof + Kalmückisch + Xhosa + Soga + Yao-Sprache + Yapesisch + Yangben + Yemba + Jiddisch + Yoruba + Kantonesisch + Zhuang + Zapotekisch + Bliss-Symbole + Zenaga + Tamazight + Chinesisch + Chinesisch (vereinfacht) + Chinesisch (traditionell) + Zulu + Zuni-Sprache + Keine Sprachinhalte + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Welt + Afrika + Nordamerika + Südamerika + Ozeanien + Westafrika + Mittelamerika + Ostafrika + Nordafrika + Zentralafrika + Südliches Afrika + Amerika + Nördliches Amerika + Karibik + Ostasien + Südasien + Südostasien + Südeuropa + Australasien + Melanesien + Mikronesisches Inselgebiet + Polynesien + Asien + Zentralasien + Westasien + Europa + Osteuropa + Nordeuropa + Westeuropa + Lateinamerika + Ascension + Andorra + Vereinigte Arabische Emirate + Afghanistan + Antigua und Barbuda + Anguilla + Albanien + Armenien + Niederländische Antillen + Angola + Antarktis + Argentinien + Amerikanisch-Samoa + Österreich + Australien + Aruba + Åland-Inseln + Aserbaidschan + Bosnien und Herzegowina + Barbados + Bangladesch + Belgien + Burkina Faso + Bulgarien + Bahrain + Burundi + Benin + St. Barthélemy + Bermuda + Brunei Darussalam + Bolivien + Karibische Niederlande + Brasilien + Bahamas + Bhutan + Bouvetinsel + Botsuana + Belarus + Belize + Kanada + Kokosinseln + Kongo-Kinshasa + Kongo (Demokratische Republik) + Zentralafrikanische Republik + Kongo-Brazzaville + Kongo (Republik) + Schweiz + Côte d’Ivoire + Elfenbeinküste + Cookinseln + Chile + Kamerun + China + Kolumbien + Clipperton-Insel + Costa Rica + Kuba + Kap Verde + Curaçao + Weihnachtsinsel + Zypern + Tschechische Republik + Deutschland + Diego Garcia + Dschibuti + Dänemark + Dominica + Dominikanische Republik + Algerien + Ceuta und Melilla + Ecuador + Estland + Ägypten + Westsahara + Eritrea + Spanien + Äthiopien + Europäische Union + Finnland + Fidschi + Falklandinseln + Mikronesien + Färöer + Frankreich + Gabun + Vereinigtes Königreich + UK + Grenada + Georgien + Französisch-Guayana + Guernsey + Ghana + Gibraltar + Grönland + Gambia + Guinea + Guadeloupe + Äquatorialguinea + Griechenland + Südgeorgien und die Südlichen Sandwichinseln + Guatemala + Guam + Guinea-Bissau + Guyana + Sonderverwaltungszone Hongkong + Hongkong + Heard- und McDonald-Inseln + Honduras + Kroatien + Haiti + Ungarn + Kanarische Inseln + Indonesien + Irland + Israel + Isle of Man + Indien + Britisches Territorium im Indischen Ozean + Irak + Iran + Island + Italien + Jersey + Jamaika + Jordanien + Japan + Kenia + Kirgisistan + Kambodscha + Kiribati + Komoren + St. Kitts und Nevis + Demokratische Volksrepublik Korea + Republik Korea + Kuwait + Kaimaninseln + Kasachstan + Laos + Libanon + St. Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litauen + Luxemburg + Lettland + Libyen + Marokko + Monaco + Republik Moldau + Montenegro + St. Martin + Madagaskar + Marshallinseln + Mazedonien + Mazedonien (EJR) + Mali + Myanmar + Mongolei + Sonderverwaltungszone Macao + Macao + Nördliche Marianen + Martinique + Mauretanien + Montserrat + Malta + Mauritius + Malediven + Malawi + Mexiko + Malaysia + Mosambik + Namibia + Neukaledonien + Niger + Norfolkinsel + Nigeria + Nicaragua + Niederlande + Norwegen + Nepal + Nauru + Niue + Neuseeland + Oman + Panama + Peru + Französisch-Polynesien + Papua-Neuguinea + Philippinen + Pakistan + Polen + St. Pierre und Miquelon + Pitcairninseln + Puerto Rico + Palästinensische Autonomiegebiete + Palästina + Portugal + Palau + Paraguay + Katar + Äußeres Ozeanien + Réunion + Rumänien + Serbien + Russische Föderation + Ruanda + Saudi-Arabien + Salomonen + Seychellen + Sudan + Schweden + Singapur + St. Helena + Slowenien + Svalbard und Jan Mayen + Slowakei + Sierra Leone + San Marino + Senegal + Somalia + Suriname + Südsudan + São Tomé und Príncipe + El Salvador + Sint Maarten + Syrien + Swasiland + Tristan da Cunha + Turks- und Caicosinseln + Tschad + Französische Süd- und Antarktisgebiete + Togo + Thailand + Tadschikistan + Tokelau + Timor-Leste + Osttimor + Turkmenistan + Tunesien + Tonga + Türkei + Trinidad und Tobago + Tuvalu + Taiwan + Tansania + Ukraine + Uganda + Amerikanisch-Ozeanien + Vereinigte Staaten + USA + Uruguay + Usbekistan + Vatikanstadt + St. Vincent und die Grenadinen + Venezuela + Britische Jungferninseln + Amerikanische Jungferninseln + Vietnam + Vanuatu + Wallis und Futuna + Samoa + Kosovo + Jemen + Mayotte + Südafrika + Sambia + Simbabwe + Unbekannte Region + + + Alte deutsche Rechtschreibung + Standardisierte Resianische Rechtschreibung + Neue deutsche Rechtschreibung + Spätes Mittelfranzösisch + Klassisches Französisch + Akademisch + Ostarmenisch + Westarmenisch + Einheitliches Türkisches Alphabet + Bela-Dialekt + Boontling + IPA Phonetisch + Phonetisch (UPA) + Allgemeine Rechtschreibung + Lipovaz-Dialekt + Monotonisch + Natisone-Dialekt + Njiva-Dialekt + Osojane-Dialekt + Pinyin + Polytonisch + Posix + Revidierte Rechtschreibung + Resianisch + Saho + Schottisches Standardenglisch + Scouse-Dialekt + Solbica-Dialekt + Taraskievica-Orthographie + Vereinheitlichte Rechtschreibung + Vereinheitlichte überarbeitete Rechtschreibung + Valencianisch + Wade-Giles + + + Kalender + Sortierung ohne Symbole + Umgekehrte Sortierung von Akzenten + Sortierung nach Groß- bzw. Kleinbuchstaben + Sortierung nach Groß- oder Kleinschreibung + Kana-Sortierung + Sortierung + Normierte Sortierung + Sortierung nach Zahlen + Sortierstärke + Währung + Zahlen + Zeitzone + Lokale Variante + Nach Symbolen sortieren + Privatnutzung + + + Arabisch-indische Ziffern + Erweiterte arabisch-indische Ziffern + Armenische Ziffern + Armenische Ziffern in Kleinschrift + Bengalische Ziffern + Traditionelles Chinesisch - Big5 + Buddhistischer Kalender + Chinesischer Kalender + Koptischer Kalender + Dangi Kalender + Devanagari-Ziffern + Lexikographische Sortierreihenfolge + Unicode-Sortierung + Sortierreihenfolge für mehrsprachige europäische Dokumente + Äthiopische Ziffern + Äthiopischer Kalender + Äthiopischer Kalender "Amete Alem" + Finanzzahlen + Vollbreite Ziffern + Vereinfachtes Chinesisch - GB2312 + Georgische Ziffern + Gregorianischer Kalender + Griechische Ziffern + Griechische Ziffern in Kleinschrift + Gujarati-Ziffern + Gurmukhi-Ziffern + Chinesische Dezimalzahlen + Vereinfacht-chinesische Ziffern + Vereinfacht-chinesische Finanzziffern + Traditionell-chinesische Ziffern + Traditionell-chinesische Finanzziffern + Hebräische Ziffern + Hebräischer Kalender + Alle sortieren + Indischer Nationalkalender + Islamischer Kalender + Bürgerlicher islamischer Kalender + Japanischer Kalender + Japanische Ziffern + Japanische Finanzziffern + Khmer-Ziffern + Kannada-Ziffern + Laotische Ziffern + Westliche Ziffern + Kleinbuchstaben zuerst aufführen + Malayalam-Ziffern + Mongolische Ziffern + Myanmar-Ziffern + Native Ziffern + Akzente normal sortieren + Normal sortieren + Nach Groß-/Kleinschreibung sortieren + Kana separat sortieren + Ohne Normierung sortieren + Ziffern einzeln sortieren + Symbole sortieren + Oriya-Ziffern + Persischer Kalender + Telefonbuch-Sortierung + Sortierung nach Phonetik + Pinyin-Sortierregeln + Nur Basisbuchstaben sortieren + Akzente/Fall/Breite/Kana sortieren + Reformierte Sortierreihenfolge + Kalender der Republik China + Römische Ziffern + Römische Ziffern in Kleinschrift + Allgemeine Suche + Suche nach Anfangsbuchstaben des koreanischen Alphabets + Akzente sortieren + Symbole sortieren ignorieren + Standard-Sortierung + Strichfolge + Tamilische Ziffern + Tamil-Ziffern + Telugu-Ziffern + Akzente/Fall/Breite sortieren + Thai-Ziffern + Tibetische Ziffern + Traditionelle Sortierregeln + Traditionelle Zahlen + Radikal-Strich-Sortierregeln + Großbuchstaben zuerst aufführen + Vai-Ziffern + Akzente umgekehrt sortieren + Nach Groß-/Kleinschreibung sortieren + Kana anders sortieren + Nach Unicode sortieren + Ziffern numerisch sortieren + + + BGN + Numerisch + Tonsprache + UNGEGN + Akzente + Breit + Halbe Breite + Jamo + Pinyin + Veröffentlichung + + + Internationales (SI) + Englisches + Angloamerikanisches + + + Sprache: {0} + Schrift: {0} + Region: {0} + + + + [a ä b c d e f g h i j k l m n o ö p q r s ß t u ü v w x y z] + [á à ă â å ã ā æ ç é è ĕ ê ë ē ğ í ì ĭ î ï İ ī ı ñ ó ò ŏ ô ø ō œ ş ú ù ŭ û ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ « » ( ) \[ \] \{ \} § @ * / \& #] + {0} … + … {0} + {0} … {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + EEEE, d. MMMM U + + + + + d. MMMM U + + + + + dd.MM U + + + + + dd.MM.yy + + + + + + d + E, d. + U + MMM U + d. MMM U + E, d. MMM U + h a + HH 'Uhr' + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M. + E, d.M. + LLL + d. MMM + E, d. MMM + mm:ss + U + U + M.y + d.M.y + E, d.M.y + MMM U + d. MMM U + E, d. MMM U + MMMM U + QQQ U + QQQQ U + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + dd.MM.y G + + + + + dd.MM.yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d. + y G + MMM y G + d. MMM y G + E, d. MMM y G + h a + HH 'Uhr' + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M. + E, d.M. + LLL + d. MMM + E, d. MMM + mm:ss + y G + y G + M.y GGGGG + d.M.y GGGGG + E, d.M.y GGGGG + MMM y G + d. MMM y G + E, d. MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d.-d. + + + h a - h a + h-h a + + + HH-HH 'Uhr' + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH 'Uhr' v + + + M.-M. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d.-d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + LLLL-LLLL + + + y-y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + MMM-MMM y G + MMM y - MMM y G + + + d.-d. MMM y G + d. MMM - d. MMM y G + d. MMM y - d. MMM y G + + + E, d. - E, d. MMM y G + E, d. MMM - E, d. MMM y G + E, d. MMM y - E, d. MMM y G + + + MMMM-MMMM y G + MMMM y - MMMM y G + + + + + + + + + Jan. + Feb. + März + Apr. + Mai + Juni + Juli + Aug. + Sep. + Okt. + Nov. + Dez. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + + + + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januar + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + + + + + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + + S + M + D + M + D + F + S + + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + + + + So + Mo + Di + Mi + Do + Fr + Sa + + + S + M + D + M + D + F + S + + + So. + Mo. + Di. + Mi. + Do. + Fr. + Sa. + + + Sonntag + Montag + Dienstag + Mittwoch + Donnerstag + Freitag + Samstag + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. Quartal + 2. Quartal + 3. Quartal + 4. Quartal + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. Quartal + 2. Quartal + 3. Quartal + 4. Quartal + + + + + + + nachmittags + vorm. + morgens + abends + vormittags + nachts + Mittag + nachm. + + + + + Nachmittag + Morgen + Abend + Vormittag + Nacht + Mittag + + + + + + v. Chr. + vor der gewöhnlichen Zeitrechnung + n. Chr. + der gewöhnlichen Zeitrechnung + + + v. Chr. + v. u. Z. + n. Chr. + u. Z. + + + v. Chr. + vdZ + n. Chr. + dZ + + + + + + EEEE, d. MMMM y + + + + + d. MMMM y + + + + + dd.MM.y + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d. + E h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y G + MMM y G + d. MMM y G + E, d. MMM y G + h a + HH 'Uhr' + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M. + E, d.M. + d.MM. + dd.MM. + LLL + d. MMM + E, d. MMM + E, d. MMMM + mm:ss + y + M.y + d.M.y + E, d.M.y + MM.y + dd.MM.y + MMM y + d. MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d.-d. + + + h a - h a + h-h a + + + HH-HH 'Uhr' + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH 'Uhr' v + + + M.-M. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d.-d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + LLLL-LLLL + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d.-d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MMMM-MMMM y + MMMM y - MMMM y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + dd.MM.y G + + + + + dd.MM.yy GGGGG + + + + + + + + Before R.O.C. + Minguo + + + + + + + Epoche + + + Jahr + Letztes Jahr + Dieses Jahr + Nächstes Jahr + + In {0} Jahr + In {0} Jahren + + + Vor {0} Jahr + Vor {0} Jahren + + + + Monat + Letzter Monat + Dieser Monat + Nächster Monat + + In {0} Monat + In {0} Monaten + + + Vor {0} Monat + Vor {0} Monaten + + + + Woche + Letzte Woche + Diese Woche + Nächste Woche + + In {0} Woche + In {0} Wochen + + + Vor {0} Woche + Vor {0} Wochen + + + + Tag + Vorgestern + Gestern + Heute + Morgen + Übermorgen + + In {0} Tag + In {0} Tagen + + + Vor {0} Tag + Vor {0} Tagen + + + + Wochentag + + + Letzten Sonntag + Diesen Sonntag + Nächsten Sonntag + + + Letzten Montag + Diesen Montag + Nächsten Montag + + + Letzten Dienstag + Diesen Dienstag + Nächsten Dienstag + + + Letzten Mittwoch + Diesen Mittwoch + Nächsten Mittwoch + + + Letzten Donnerstag + Diesen Donnerstag + Nächsten Donnerstag + + + Letzten Freitag + Diesen Freitag + Nächsten Freitag + + + Letzten Samstag + Diesen Samstag + Nächsten Samstag + + + Tageshälfte + + + Stunde + + In {0} Stunde + In {0} Stunden + + + Vor {0} Stunde + Vor {0} Stunden + + + + Minute + + In {0} Minute + In {0} Minuten + + + Vor {0} Minute + Vor {0} Minuten + + + + Sekunde + jetzt + + In {0} Sekunde + In {0} Sekunden + + + Vor {0} Sekunde + Vor {0} Sekunden + + + + Zeitzone + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} Zeit + {0} Sommerzeit + {0} Normalzeit + {1} ({0}) + + Unbekannt + + + Tirana + + + Erivan + + + Wostok + + + Dumont D'Urville + + + Wien + + + Brüssel + + + Wagadugu + + + Porto Novo + + + Saint-Barthélemy + + + Bermudas + + + São Paulo + + + Atikokan + + + St. John's + + + Zürich + + + Osterinsel + + + Kaxgar + + + Bogotá + + + Havanna + + + Kap Verde + + + Curaçao + + + Weihnachts-Inseln + + + Nikosia + + + Prag + + + Büsingen + + + Dschibuti + + + Kopenhagen + + + Algier + + + Kairo + + + El Aaiún + + + Asmara + + + Kanaren + + + Addis Abeba + + + Fidschi + + + Chuuk + + + Pohnpei + + + Färöer + + + + Britische Sommerzeit + + + + Tiflis + + + Akkra + + + Nuuk + + + Ittoqqortoormiit + + + Athen + + + Süd-Georgien + + + Hongkong + + + Port Numbay + + + + Irische Sommerzeit + + + + Kolkata + + + Bagdad + + + Teheran + + + Reyk­ja­vík + + + Rom + + + Jamaika + + + Tokio + + + Bischkek + + + Komoren + + + St. Kitts + + + Pjöngjang + + + Kaimaninseln + + + Aktobe + + + St. Lucia + + + Wilna + + + Luxemburg + + + Tripolis + + + Kischinau + + + Macao + + + Malediven + + + Mexiko-Stadt + + + Kathmandu + + + Muskat + + + Warschau + + + Azoren + + + Lissabon + + + Asunción + + + Katar + + + Réunion + + + Bukarest + + + Belgrad + + + Moskau + + + Wolgograd + + + Jekaterinburg + + + Nowosibirsk + + + Nowokuznetsk + + + Krasnojarsk + + + Jakutsk + + + Wladiwostok + + + Sachalin + + + Kamtschatka + + + Riad + + + Khartum + + + Singapur + + + St. Helena + + + Mogadischu + + + São Tomé + + + Salvador + + + Lower Prince's Quarter + + + Damaskus + + + Lomé + + + Duschanbe + + + Port-of-Spain + + + Taipeh + + + Daressalam + + + Uschgorod + + + Kiew + + + Saporischja + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taschkent + + + Vatikan + + + St. Vincent + + + St. Thomas + + + Ho-Chi-Minh-Stadt + + + + Acre-Zeit + Acre-Normalzeit + Acre-Sommerzeit + + + + + Afghanistan-Zeit + + + + + Zentralafrikanische Zeit + + + + + Ostafrikanische Zeit + + + + + Südafrikanische Zeit + + + + + Westafrikanische Zeit + Westafrikanische Normalzeit + Westafrikanische Sommerzeit + + + + + Alaska Zeit + Alaska-Normalzeit + Alaska Sommerzeit + + + + + Almaty-Zeit + Almaty-Normalzeit + Almaty-Sommerzeit + + + + + Amazonas-Zeit + Amazonas-Normalzeit + Amazonas-Sommerzeit + + + + + Nordamerikanische Inlandzeit + Nordamerikanische Inland-Normalzeit + Nordamerikanische Inland-Sommerzeit + + + + + Nordamerikanische Ostküstenzeit + Nordamerikanische Ostküsten-Normalzeit + Nordamerikanische Ostküsten-Sommerzeit + + + + + Rocky Mountain Zeit + Rocky Mountain-Normalzeit + Rocky Mountain Sommerzeit + + + + + Nordamerikanische Westküstenzeit + Nordamerikanische Westküsten-Normalzeit + Nordamerikanische Westküsten-Sommerzeit + + + + + Anadyr Zeit + Anadyr Normalzeit + Anadyr Sommerzeit + + + + + Arabische Zeit + Arabische Normalzeit + Arabische Sommerzeit + + + + + Argentinische Zeit + Argentinische Normalzeit + Argentinische Sommerzeit + + + + + Westargentinische Zeit + Westargentinische Normalzeit + Westargentinische Sommerzeit + + + + + Armenische Zeit + Armenische Normalzeit + Armenische Sommerzeit + + + + + Atlantik-Zeit + Atlantik-Normalzeit + Atlantik-Sommerzeit + + + + + Zentralaustralische Zeit + Zentralaustralische Normalzeit + Zentralaustralische Sommerzeit + + + + + Zentral-/Westaustralische Zeit + Zentral-/Westaustralische Normalzeit + Zentral-/Westaustralische Sommerzeit + + + + + Ostaustralische Zeit + Ostaustralische Normalzeit + Ostaustralische Sommerzeit + + + + + Westaustralische Zeit + Westaustralische Normalzeit + Westaustralische Sommerzeit + + + + + Aserbaidschanische Zeit + Aserbeidschanische Normalzeit + Aserbaidschanische Sommerzeit + + + + + Azoren-Zeit + Azoren-Normalzeit + Azoren-Sommerzeit + + + + + Bangladesch-Zeit + Bangladesch-Normalzeit + Bangladesch-Sommerzeit + + + + + Bhutan-Zeit + + + + + Bolivianische Zeit + + + + + Brasília-Zeit + Brasília-Normalzeit + Brasília-Sommerzeit + + + + + Brunei-Zeit + + + + + Kap-Verde-Zeit + Kap-Verde-Normalzeit + Kap-Verde-Sommerzeit + + + + + Chamorro-Zeit + + + + + Chatham-Zeit + Chatham-Normalzeit + Chatham-Sommerzeit + + + + + Chilenische Zeit + Chilenische Normalzeit + Chilenische Sommerzeit + + + + + Chinesische Zeit + Chinesische Normalzeit + Chinesische Sommerzeit + + + + + Choibalsan-Zeit + Choibalsan-Normalzeit + Choibalsan-Sommerzeit + + + + + Weihnachtsinsel-Zeit + + + + + Kokosinseln-Zeit + + + + + Kolumbianische Zeit + Kolumbianische Normalzeit + Kolumbianische Sommerzeit + + + + + Cookinseln-Zeit + Cookinseln-Normalzeit + Cookinseln-Sommerzeit + + + + + Kubanische Zeit + Kubanische Normalzeit + Kubanische Sommerzeit + + + + + Davis-Zeit + + + + + Dumont-d'Urville-Zeit + + + + + Osttimor-Zeit + + + + + Osterinsel-Zeit + Osterinsel-Normalzeit + Osterinsel-Sommerzeit + + + + + Ecuadorianische Zeit + + + + + Mitteleuropäische Zeit + Mitteleuropäische Normalzeit + Mitteleuropäische Sommerzeit + + + MEZ + MEZ + MESZ + + + + + Osteuropäische Zeit + Osteuropäische Normalzeit + Osteuropäische Sommerzeit + + + OEZ + OEZ + OESZ + + + + + Westeuropäische Zeit + Westeuropäische Normalzeit + Westeuropäische Sommerzeit + + + WEZ + WEZ + WESZ + + + + + Falklandinseln-Zeit + Falklandinseln-Normalzeit + Falklandinseln-Sommerzeit + + + + + Fidschi-Zeit + Fidschi-Normalzeit + Fidschi-Sommerzeit + + + + + Französisch-Guayana-Zeit + + + + + Französische Süd- und Antarktisgebiete-Zeit + + + + + Galapagos-Zeit + + + + + Gambier-Zeit + + + + + Georgische Zeit + Georgische Normalzeit + Georgische Sommerzeit + + + + + Gilbert-Inseln-Zeit + + + + + Mittlere Greenwich-Zeit + + + + + Ostgrönland-Zeit + Ostgrönland-Normalzeit + Ostgrönland-Sommerzeit + + + + + Westgrönland-Zeit + Westgrönland-Normalzeit + Westgrönland-Sommerzeit + + + + + Guam-Zeit + + + + + Golf-Zeit + + + + + Guyana-Zeit + + + + + Hawaii-Aleuten-Zeit + Hawaii-Aleuten-Normalzeit + Hawaii-Aleuten-Sommerzeit + + + + + Hong-Kong-Zeit + Hong-Kong-Normalzeit + Hong-Kong-Sommerzeit + + + + + Chowd-Zeit + Chowd-Normalzeit + Chowd-Sommerzeit + + + + + Indische Zeit + + + + + Indischer Ozean-Zeit + + + + + Indochina-Zeit + + + + + Zentralindonesische Zeit + + + + + Ostindonesische Zeit + + + + + Westindonesische Zeit + + + + + Iranische Zeit + Iranische Normalzeit + Iranische Sommerzeit + + + + + Irkutsk-Zeit + Irkutsk-Normalzeit + Irkutsk-Sommerzeit + + + + + Israelische Zeit + Israelische Normalzeit + Israelische Sommerzeit + + + + + Japanische Zeit + Japanische Normalzeit + Japanische Sommerzeit + + + + + Kamtschatka-Zeit + Kamtschatka-Normalzeit + Kamtschatka-Sommerzeit + + + + + Ostkasachische Zeit + + + + + Westkasachische Zeit + + + + + Koreanische Zeit + Koreanische Normalzeit + Koreanische Sommerzeit + + + + + Kosrae-Zeit + + + + + Krasnoyarsk-Zeit + Krasnoyarsk-Normalzeit + Krasnoyarsk-Sommerzeit + + + + + Kirgisistan-Zeit + + + + + Linieninseln-Zeit + + + + + Lord-Howe-Zeit + Lord-Howe-Normalzeit + Lord-Howe-Sommerzeit + + + + + Macquarieinsel-Zeit + + + + + Magadan-Zeit + Magadan-Normalzeit + Magadan-Sommerzeit + + + + + Malaysische Zeit + + + + + Malediven-Zeit + + + + + Marquesas-Zeit + + + + + Marshallinseln-Zeit + + + + + Mauritius-Zeit + Mauritius-Normalzeit + Mauritius-Sommerzeit + + + + + Mawson-Zeit + + + + + Mexiko Nordwestliche Zone-Zeit + Mexiko Nordwestliche Zone-Normalzeit + Mexiko Nordwestliche Zone-Sommerzeit + + + + + Mexiko Pazifikzone-Zeit + Mexiko Pazifikzone-Normalzeit + Mexiko Pazifikzone-Sommerzeit + + + + + Ulaanbaatar-Zeit + Ulaanbaatar-Normalzeit + Ulaanbaatar-Sommerzeit + + + + + Moskauer Zeit + Moskauer Normalzeit + Moskauer Sommerzeit + + + + + Myanmar-Zeit + + + + + Nauru-Zeit + + + + + Nepalesische Zeit + + + + + Neukaledonische Zeit + Neukaledonische Normalzeit + Neukaledonische Sommerzeit + + + + + Neuseeland-Zeit + Neuseeland-Normalzeit + Neuseeland-Sommerzeit + + + + + Neufundland-Zeit + Neufundland-Normalzeit + Neufundland-Sommerzeit + + + + + Niue-Zeit + + + + + Norfolkinsel-Zeit + + + + + Fernando de Noronha-Zeit + Fernando de Noronha-Normalzeit + Fernando de Noronha-Sommerzeit + + + + + Nowosibirsk-Zeit + Nowosibirsk-Normalzeit + Nowosibirsk-Sommerzeit + + + + + Omsk-Zeit + Omsk-Normalzeit + Omsk-Sommerzeit + + + + + Pakistanische Zeit + Pakistanische Normalzeit + Pakistanische Sommerzeit + + + + + Palau-Zeit + + + + + Papua-Neuguinea-Zeit + + + + + Paraguayanische Zeit + Paraguayanische Normalzeit + Paraguayanische Sommerzeit + + + + + Peruanische Zeit + Peruanische Normalzeit + Peruanische Sommerzeit + + + + + Philippinische Zeit + Philippinische Normalzeit + Philippinische Sommerzeit + + + + + Phoenixinseln-Zeit + + + + + Saint-Pierre-und-Miquelon-Zeit + Saint-Pierre-und-Miquelon-Normalzeit + Saint-Pierre-und-Miquelon-Sommerzeit + + + + + Pitcairninseln-Zeit + + + + + Ponape-Zeit + + + + + Réunion-Zeit + + + + + Rothera-Zeit + + + + + Sakhalin-Zeit + Sakhalin-Normalzeit + Sakhalin-Sommerzeit + + + + + Samara-Zeit + Samara-Normalzeit + Samara-Sommerzeit + + + + + Samoa-Zeit + Samoa-Normalzeit + Samoa-Sommerzeit + + + + + Seychellen-Zeit + + + + + Singapur-Zeit + + + + + Salomoninseln-Zeit + + + + + Südgeorgische Zeit + + + + + Suriname-Zeit + + + + + Syowa-Zeit + + + + + Tahiti-Zeit + + + + + Taipeh-Zeit + Taipeh-Normalzeit + Taipeh-Sommerzeit + + + + + Tadschikistan-Zeit + + + + + Tokelau-Zeit + + + + + Tonganische Zeit + Tonganische Normalzeit + Tonganische Sommerzeit + + + + + Chuuk-Zeit + + + + + Turkmenistan-Zeit + Turkmenistan-Normalzeit + Turkmenistan-Sommerzeit + + + + + Tuvalu-Zeit + + + + + Uruguayanische Zeit + Uruguyanische Normalzeit + Uruguayanische Sommerzeit + + + + + Usbekistan-Zeit + Usbekistan-Normalzeit + Usbekistan-Sommerzeit + + + + + Vanuatu-Zeit + Vanuatu-Normalzeit + Vanuatu-Sommerzeit + + + + + Venezuela-Zeit + + + + + Wladiwostok-Zeit + Wladiwostok-Normalzeit + Wladiwostok-Sommerzeit + + + + + Wolgograd-Zeit + Wolgograd-Normalzeit + Wolgograd-Sommerzeit + + + + + Wostok-Zeit + + + + + Wake-Insel-Zeit + + + + + Wallis-und-Futuna-Zeit + + + + + Jakutsk-Zeit + Jakutsk-Normalzeit + Jakutsk-Sommerzeit + + + + + Jekaterinburg-Zeit + Jekaterinburg-Normalzeit + Jekaterinburg-Sommerzeit + + + + + + + , + . + ; + % + + + - + E + · + + + NaN + + + + + #,##0.### + + + + + 0 Tausend + 0 Tausend + 00 Tausend + 00 Tausend + 000 Tausend + 000 Tausend + 0 Million + 0 Millionen + 00 Millionen + 00 Millionen + 000 Millionen + 000 Millionen + 0 Milliarde + 0 Milliarden + 00 Milliarden + 00 Milliarden + 000 Milliarden + 000 Milliarden + 0 Billion + 0 Billionen + 00 Billionen + 00 Billionen + 000 Billionen + 000 Billionen + + + + + 0 Tsd + 0 Tsd + 00 Tsd + 00 Tsd + 000 Tsd + 000 Tsd + 0 Mio + 0 Mio + 00 Mio + 00 Mio + 000 Mio + 000 Mio + 0 Mrd + 0 Mrd + 00 Mrd + 00 Mrd + 000 Mrd + 000 Mrd + 0 Bio + 0 Bio + 00 Bio + 00 Bio + 000 Bio + 000 Bio + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Andorranische Pesete + Andorranische Pesete + Andorranische Peseten + + + VAE-Dirham + VAE-Dirham + VAE-Dirham + + + Afghanische Afghani (1927–2002) + Afghanische Afghani (1927–2002) + Afghanische Afghani (1927–2002) + + + Afghanischer Afghani + Afghanischer Afghani + Afghanische Afghani + + + Albanischer Lek + Albanischer Lek + Albanische Lek + + + Armenischer Dram + Armenischer Dram + Armenische Dram + + + Niederländische-Antillen-Gulden + Niederländische-Antillen-Gulden + Niederländische-Antillen-Gulden + + + Angolanischer Kwanza + Angolanischer Kwanza + Angolanische Kwanza + + + Angolanischer Kwanza (1977–1990) + Angolanischer Kwanza (1977–1990) + Angolanische Kwanza (1977–1990) + + + Angolanischer Neuer Kwanza (1990–2000) + Angolanischer Neuer Kwanza (1990–2000) + Angolanische Neue Kwanza (1990–2000) + + + Angolanischer Kwanza Reajustado (1995–1999) + Angolanischer Kwanza Reajustado (1995–1999) + Angolanische Kwanza Reajustado (1995–1999) + + + Argentinischer Austral + Argentinischer Austral + Argentinische Austral + + + Argentinischer Peso (1983–1985) + Argentinischer Peso (1983–1985) + Argentinische Peso (1983–1985) + + + Argentinischer Peso + Argentinischer Peso + Argentinische Pesos + + + Österreichischer Schilling + Österreichischer Schilling + Österreichische Schilling + öS + + + Australischer Dollar + Australischer Dollar + Australische Dollar + AU$ + + + Aruba-Florin + Aruba-Florin + Aruba-Florin + + + Aserbaidschan-Manat (1993–2006) + Aserbaidschan-Manat (1993–2006) + Aserbaidschan-Manat (1993–2006) + + + Aserbaidschan-Manat + Aserbaidschan-Manat + Aserbaidschan-Manat + + + Bosnien und Herzegowina Dinar (1992–1994) + Bosnien und Herzegowina Dinar (1992–1994) + Bosnien und Herzegowina Dinar (1992–1994) + + + Bosnien und Herzegowina Konvertierbare Mark + Bosnien und Herzegowina Konvertierbare Mark + Bosnien und Herzegowina Konvertierbare Mark + + + Barbados-Dollar + Barbados-Dollar + Barbados-Dollar + + + Bangladesch-Taka + Bangladesch-Taka + Bangladesch-Taka + + + Belgischer Franc (konvertibel) + Belgischer Franc (konvertibel) + Belgische Franc (konvertibel) + + + Belgischer Franc + Belgischer Franc + Belgische Franc + + + Belgischer Finanz-Franc + Belgischer Finanz-Franc + Belgische Finanz-Franc + + + Bulgarische Lew (1962–1999) + Bulgarische Lew (1962–1999) + Bulgarische Lew (1962–1999) + + + Bulgarischer Lew + Bulgarischer Lew + Bulgarische Lew + + + Bahrain-Dinar + Bahrain-Dinar + Bahrain-Dinar + + + Burundi-Franc + Burundi-Franc + Burundi-Franc + + + Bermuda-Dollar + Bermuda-Dollar + Bermuda-Dollar + + + Brunei-Dollar + Brunei-Dollar + Brunei-Dollar + + + Bolivanischer Boliviano + Bolivanischer Boliviano + Bolivanische Boliviano + + + Bolivianischer Peso + Bolivianischer Peso + Bolivianische Peso + + + Boliviansiche Mvdol + Boliviansiche Mvdol + Bolivianische Mvdol + + + Brasilianischer Cruzeiro Novo (1967–1986) + Brasilianischer Cruzeiro Novo (1967–1986) + Brasilianische Cruzeiro Novo (1967–1986) + + + Brasilianischer Cruzado (1986–1989) + Brasilianischer Cruzado (1986–1989) + Brasilianische Cruzado (1986–1989) + + + Brasilianischer Cruzeiro (1990–1993) + Brasilianischer Cruzeiro (1990–1993) + Brasilianische Cruzeiro (1990–1993) + + + Brasilianischer Real + Brasilianischer Real + Brasilianische Real + R$ + + + Brasilianischer Cruzado Novo (1989–1990) + Brasilianischer Cruzado Novo (1989–1990) + Brasilianische Cruzado Novo (1989–1990) + + + Brasilianischer Cruzeiro (1993–1994) + Brasilianischer Cruzeiro (1993–1994) + Brasilianische Cruzeiro (1993–1994) + + + Brasilianischer Cruzeiro (1942–1967) + + + Bahama-Dollar + Bahama-Dollar + Bahama-Dollar + + + Bhutan-Ngultrum + Bhutan-Ngultrum + Bhutan-Ngultrum + + + Birmanischer Kyat + Birmanischer Kyat + Birmanische Kyat + + + Botswanischer Pula + Botswanischer Pula + Botswanische Pula + + + Belarus-Rubel (1994–1999) + Belarus-Rubel (1994–1999) + Belarus-Rubel (1994–1999) + + + Belarus-Rubel + Belarus-Rubel + Belarus-Rubel + + + Belize-Dollar + Belize-Dollar + Belize-Dollar + + + Kanadischer Dollar + Kanadischer Dollar + Kanadische Dollar + CA$ + + + Kongo-Franc + Kongo-Franc + Kongo-Franc + + + WIR-Euro + WIR-Euro + WIR-Euro + + + Schweizer Franken + Schweizer Franken + Schweizer Franken + + + WIR Franken + WIR Franken + WIR Franken + + + Chilenische Unidades de Fomento + Chilenische Unidades de Fomento + Chilenische Unidades de Fomento + + + Chilenischer Peso + Chilenischer Peso + Chilenische Pesos + + + Renminbi Yuan + Renminbi Yuan + Renminbi Yuan + CN¥ + + + Kolumbianischer Peso + Kolumbianischer Peso + Kolumbianische Pesos + + + Costa-Rica-Colón + Costa-Rica-Colón + Costa-Rica-Colón + + + Serbischer Dinar (2002–2006) + Serbischer Dinar (2002–2006) + Serbische Dinar (2002–2006) + + + Tschechoslowakische Krone + Tschechoslowakische Kronen + Tschechoslowakische Kronen + + + Kubanischer Peso (konvertibel) + Kubanischer Peso (konvertibel) + Kubanische Pesos (konvertibel) + + + Kubanischer Peso + Kubanischer Peso + Kubanische Pesos + + + Kap-Verde-Escudo + Kap-Verde-Escudo + Kap-Verde-Escudos + + + Zypern-Pfund + Zypern Pfund + Zypern Pfund + + + Tschechische Krone + Tschechische Krone + Tschechische Kronen + + + Mark der DDR + Mark der DDR + Mark der DDR + + + Deutsche Mark + Deutsche Mark + Deutsche Mark + + + Dschibuti-Franc + Dschibuti-Franc + Dschibuti-Franc + + + Dänische Krone + Dänische Krone + Dänische Kronen + + + Dominikanischer Peso + Dominikanischer Peso + Dominikanische Pesos + + + Algerischer Dinar + Algerischer Dinar + Algerische Dinar + + + Ecuadorianischer Sucre + Ecuadorianischer Sucre + Ecuadorianische Sucre + + + Verrechnungseinheit für Ecuador + Verrechnungseinheiten für Ecuador + Verrechnungseinheiten für Ecuador + + + Estnische Krone + Estnische Krone + Estnische Kronen + + + Ägyptisches Pfund + Ägyptisches Pfund + Ägyptische Pfund + + + Eritreischer Nakfa + Eritreischer Nakfa + Eritreische Nakfa + + + Spanische Peseta (A–Konten) + Spanische Peseta (A–Konten) + Spanische Peseten (A–Konten) + + + Spanische Peseta (konvertibel) + Spanische Peseta (konvertibel) + Spanische Peseten (konvertibel) + + + Spanische Peseta + Spanische Peseta + Spanische Peseten + + + Äthiopischer Birr + Äthiopischer Birr + Äthiopische Birr + + + Euro + Euro + Euro + + + + Finnische Mark + Finnische Mark + Finnische Mark + + + Fidschi-Dollar + Fidschi-Dollar + Fidschi-Dollar + + + Falkland-Pfund + Falkland-Pfund + Falkland-Pfund + + + Französischer Franc + Französischer Franc + Französische Franc + + + Britisches Pfund Sterling + Britisches Pfund Sterling + Britische Pfund Sterling + £ + + + Georgischer Kupon Larit + Georgischer Kupon Larit + Georgische Kupon Larit + + + Georgischer Lari + Georgischer Lari + Georgische Lari + + + Ghanaischer Cedi (1979–2007) + Ghanaischer Cedi (1979–2007) + Ghanaische Cedi (1979–2007) + + + Ghanaischer Cedi + Ghanaischer Cedi + Ghanaische Cedi + + + Gibraltar-Pfund + Gibraltar-Pfund + Gibraltar Pfund + + + Gambia-Dalasi + Gambia-Dalasi + Gambia-Dalasi + + + Guinea-Franc + Guinea-Franc + Guinea-Franc + + + Guineischer Syli + Guineischer Syli + Guineische Syli + + + Äquatorialguinea-Ekwele + Äquatorialguinea-Ekwele + Äquatorialguinea-Ekwele + + + Griechische Drachme + Griechische Drachme + Griechische Drachmen + + + Guatemaltekischer Quetzal + Guatemaltekischer Quetzal + Guatemaltekische Quetzales + + + Portugiesisch Guinea Escudo + Portugiesisch Guinea Escudo + Portugiesisch Guinea Escudo + + + Guinea-Bissau Peso + Guinea-Bissau Peso + Guinea-Bissau Pesos + + + Guyana-Dollar + Guyana-Dollar + Guyana-Dollar + + + Hongkong-Dollar + Hongkong-Dollar + Hongkong-Dollar + HK$ + + + Honduras-Lempira + Honduras-Lempira + Honduras-Lempira + + + Kroatischer Dinar + Kroatischer Dinar + Kroatische Dinar + + + Kroatischer Kuna + Kroatischer Kuna + Kroatische Kuna + + + Haitianische Gourde + Haitianische Gourde + Haitianische Gourdes + + + Ungarischer Forint + Ungarischer Forint + Ungarische Forint + + + Indonesische Rupiah + Indonesische Rupiah + Indonesische Rupiah + + + Irisches Pfund + Irisches Pfund + Irische Pfund + + + Israelisches Pfund + Israelisches Pfund + Israelische Pfund + + + Israelischer Neuer Schekel + Israelischer Neuer Schekel + Israelische Neue Schekel + + + + Indische Rupie + Indische Rupie + Indische Rupien + + + + Irakischer Dinar + Irakischer Dinar + Irakische Dinar + + + Iranischer Rial + Iranischer Rial + Iranische Rial + + + Isländische Krone + Isländische Krone + Isländische Kronen + + + Italienische Lira + Italienische Lira + Italienische Lire + + + Jamaika-Dollar + Jamaika-Dollar + Jamaika-Dollar + + + Jordanischer Dinar + Jordanischer Dinar + Jordanische Dinar + + + Japanischer Yen + Japanischer Yen + Japanische Yen + ¥ + + + Kenia-Schilling + Kenia-Schilling + Kenia-Schilling + + + Kirgisischer Som + Kirgisischer Som + Kirgisische Som + + + Kambodschanischer Riel + Kambodschanischer Riel + Kambodschanische Riel + + + Komoren-Franc + Komoren-Franc + Komoren-Franc + + + Nordkoreanischer Won + Nordkoreanischer Won + Nordkoreanische Won + + + Südkoreanischer Won + Südkoreanischer Won + Südkoreanische Won + + + + Kuwait-Dinar + Kuwait-Dinar + Kuwait-Dinar + + + Kaiman-Dollar + Kaiman-Dollar + Kaiman-Dollar + + + Kasachischer Tenge + Kasachischer Tenge + Kasachische Tenge + + + Laotischer Kip + Laotischer Kip + Laotische Kip + + + Libanesisches Pfund + Libanesisches Pfund + Libanesische Pfund + + + Sri-Lanka-Rupie + Sri-Lanka-Rupie + Sri-Lanka-Rupien + + + Liberianischer Dollar + Liberianischer Dollar + Liberianische Dollar + + + Loti + Loti + Loti + + + Litauischer Litas + Litauischer Litas + Litauische Litas + + + Litauischer Talonas + Litauische Talonas + Litauische Talonas + + + Luxemburgischer Franc (konvertibel) + Luxemburgische Franc (konvertibel) + Luxemburgische Franc (konvertibel) + + + Luxemburgischer Franc + Luxemburgische Franc + Luxemburgische Franc + + + Luxemburgischer Finanz-Franc + Luxemburgische Finanz-Franc + Luxemburgische Finanz-Franc + + + Lettischer Lats + Lettischer Lats + Lettische Lats + + + Lettischer Rubel + Lettische Rubel + Lettische Rubel + + + Libyscher Dinar + Libyscher Dinar + Libysche Dinar + + + Marokkanischer Dirham + Marokkanischer Dirham + Marokkanische Dirham + + + Marokkanischer Franc + Marokkanische Franc + Marokkanische Franc + + + Moldau-Leu + Moldau-Leu + Moldau-Leu + + + Madagaskar-Ariary + Madagaskar-Ariary + Madagaskar-Ariary + + + Madagaskar-Franc + Madagaskar-Franc + Madagaskar-Franc + + + Mazedonischer Denar + Mazedonischer Denar + Mazedonische Denari + + + Malischer Franc + Malische Franc + Malische Franc + + + Myanmarischer Kyat + Myanmarischer Kyat + Myanmarische Kyat + + + Mongolischer Tögrög + Mongolischer Tögrög + Mongolische Tögrög + + + Macao-Pataca + Macao-Pataca + Macao-Pataca + + + Mauretanischer Ouguiya + Mauretanischer Ouguiya + Mauretanische Ouguiya + + + Maltesische Lira + Maltesische Lira + Maltesische Lira + + + Maltesisches Pfund + Maltesische Pfund + Maltesische Pfund + + + Mauritius-Rupie + Mauritius-Rupie + Mauritius-Rupien + + + Malediven-Rupie + Malediven-Rupie + Malediven-Rupien + + + Malawi-Kwacha + Malawi-Kwacha + Malawi-Kwacha + + + Mexikanischer Peso + Mexikanischer Peso + Mexikanische Pesos + MX$ + + + Mexikanischer Silber-Peso (1861–1992) + Mexikanische Silber-Peso (1861–1992) + Mexikanische Silber-Pesos (1861–1992) + + + Mexicanischer Unidad de Inversion (UDI) + Mexicanischer Unidad de Inversion (UDI) + Mexikanische Unidad de Inversion (UDI) + + + Malaysischer Ringgit + Malaysischer Ringgit + Malaysische Ringgit + + + Mosambikanischer Escudo + Mozambikanische Escudo + Mozambikanische Escudo + + + Mosambikanischer Metical (1980–2006) + Mosambikanischer Metical (1980–2006) + Mosambikanische Meticais (1980–2006) + + + Mosambikanischer Metical + Mosambikanischer Metical + Mosambikanische Meticais + + + Namibia-Dollar + Namibia-Dollar + Namibia-Dollar + + + Nigerianischer Naira + Nigerianischer Naira + Nigerianische Naira + + + Nicaraguanischer Córdoba (1988–1991) + Nicaraguanischer Córdoba (1988–1991) + Nicaraguanische Córdoba (1988–1991) + + + Nicaragua-Cordoba + Nicaragua-Cordoba + Nicaragua-Cordoba + + + Niederländischer Gulden + Niederländischer Gulden + Niederländische Gulden + + + Norwegische Krone + Norwegische Krone + Norwegische Kronen + + + Nepalesische Rupie + Nepalesische Rupie + Nepalesische Rupien + + + Neuseeland-Dollar + Neuseeland-Dollar + Neuseeland-Dollar + NZ$ + + + Omanischer Rial + Omanischer Rial + Omanische Rials + + + Panamaischer Balboa + Panamaischer Balboa + Panamaische Balboas + + + Peruanischer Inti + Peruanische Inti + Peruanische Inti + + + Peruanischer Neuer Sol + Peruanischer Neuer Sol + Peruanische Neue Sol + + + Peruanischer Sol (1863–1965) + Peruanischer Sol (1863–1965) + Peruanische Sol (1863–1965) + + + Papua-Neuguineischer Kina + Papua-Neuguineischer Kina + Papua-Neuguineische Kina + + + Philippinischer Peso + Philippinischer Peso + Philippinische Pesos + + + Pakistanische Rupie + Pakistanische Rupie + Pakistanische Rupien + + + Polnischer Złoty + Polnischer Złoty + Polnische Złoty + + + Polnischer Zloty (1950–1995) + Polnischer Zloty (1950–1995) + Polnische Zloty (1950–1995) + + + Portugiesischer Escudo + Portugiesische Escudo + Portugiesische Escudo + + + Paraguayischer Guaraní + Paraguayischer Guaraní + Paraguayische Guaraníes + + + Katar-Riyal + Katar-Riyal + Katar-Riyal + + + Rhodesischer Dollar + Rhodesische Dollar + Rhodesische Dollar + + + Rumänischer Leu (1952–2006) + Rumänischer Leu (1952–2006) + Rumänische Leu (1952–2006) + + + Rumänischer Leu + Rumänischer Leu + Rumänische Leu + + + Serbischer Dinar + Serbischer Dinar + Serbische Dinaren + + + Russischer Rubel + Russischer Rubel + Russische Rubel + + + Russischer Rubel (1991–1998) + Russischer Rubel (1991–1998) + Russische Rubel (1991–1998) + + + Ruanda-Franc + Ruanda-Franc + Ruanda-Franc + + + Saudi-Rial + Saudi-Rial + Saudi-Rial + + + Salomonen-Dollar + Salomonen-Dollar + Salomonen-Dollar + + + Seychellen-Rupie + Seychellen-Rupie + Seychellen-Rupien + + + Sudanesischer Dinar (1992–2007) + Sudanesischer Dinar (1992–2007) + Sudanesische Dinar (1992–2007) + + + Sudanesisches Pfund + Sudanesisches Pfund + Sudanesische Pfund + + + Sudanesisches Pfund (1957–1998) + Sudanesisches Pfund (1957–1998) + Sudanesische Pfund (1957–1998) + + + Schwedische Krone + Schwedische Krone + Schwedische Kronen + + + Singapur-Dollar + Singapur-Dollar + Singapur-Dollar + + + St. Helena-Pfund + St. Helena-Pfund + St. Helena-Pfund + + + Slowenischer Tolar + Slowenischer Tolar + Slowenische Tolar + + + Slowakische Krone + Slowakische Kronen + Slowakische Kronen + + + Sierra-leonischer Leone + Sierra-leonischer Leone + Sierra-leonische Leones + + + Somalia-Schilling + Somalia-Schilling + Somalia-Schilling + + + Suriname-Dollar + Suriname-Dollar + Suriname-Dollar + + + Suriname Gulden + Suriname-Gulden + Suriname-Gulden + + + Südsudanesisches Pfund + Südsudanesisches Pfund + Südsudanesische Pfund + + + São-toméischer Dobra + São-toméischer Dobra + São-toméische Dobra + + + Sowjetischer Rubel + Sowjetische Rubel + Sowjetische Rubel + + + El Salvador Colon + El Salvador-Colon + El Salvador-Colon + + + Syrisches Pfund + Syrisches Pfund + Syrische Pfund + + + Swasiländischer Lilangeni + Swasiländischer Lilangeni + Swasiländische Emalangeni + + + Thailändischer Baht + Thailändischer Baht + Thailändische Baht + ฿ + + + Tadschikistan Rubel + Tadschikistan-Rubel + Tadschikistan-Rubel + + + Tadschikistan-Somoni + Tadschikistan-Somoni + Tadschikistan-Somoni + + + Turkmenistan-Manat (1993–2009) + Turkmenistan-Manat (1993–2009) + Turkmenistan-Manat (1993–2009) + + + Turkmenistan-Manat + Turkmenistan-Manat + Turkmenistan-Manat + + + Tunesischer Dinar + Tunesischer Dinar + Tunesische Dinar + + + Tongaischer Paʻanga + Tongaischer Paʻanga + Tongaische Paʻanga + + + Timor-Escudo + Timor-Escudo + Timor-Escudo + + + Türkische Lira (1922–2005) + Türkische Lira (1922–2005) + Türkische Lira (1922–2005) + + + Türkische Lira + Türkische Lira + Türkische Lira + + + Trinidad und Tobago-Dollar + Trinidad und Tobago-Dollar + Trinidad und Tobago-Dollar + + + Neuer Taiwan-Dollar + Neuer Taiwan-Dollar + Neue Taiwan-Dollar + NT$ + + + Tansania-Schilling + Tansania-Schilling + Tansania-Schilling + + + Ukrainische Hrywnja + Ukrainische Hrywnja + Ukrainische Hrywen + + + Ukrainischer Karbovanetz + Ukrainische Karbovanetz + Ukrainische Karbovanetz + + + Uganda-Schilling (1966–1987) + Uganda-Schilling (1966–1987) + Uganda-Schilling (1966–1987) + + + Uganda-Schilling + Uganda-Schilling + Uganda-Schilling + + + US-Dollar + US-Dollar + US-Dollar + $ + + + US Dollar (Nächster Tag) + US-Dollar (Nächster Tag) + US-Dollar (Nächster Tag) + + + US Dollar (Gleicher Tag) + US-Dollar (Gleicher Tag) + US-Dollar (Gleicher Tag) + + + Uruguayischer Peso (1975–1993) + Uruguayischer Peso (1975–1993) + Uruguayische Pesos (1975–1993) + + + Uruguayischer Peso + Uruguayischer Peso + Uruguayische Pesos + + + Usbekistan-Sum + Usbekistan-Sum + Usbekistan-Sum + + + Venezolanischer Bolívar (1871–2008) + Venezolanischer Bolívar (1871–2008) + Venezolanische Bolívares (1871–2008) + + + Venezolanischer Bolívar + Venezolanischer Bolívar + Venezolanische Bolívares + + + Vietnamesischer Dong + Vietnamesischer Dong + Vietnamesische Dong + + + + Vanuatu-Vatu + Vanuatu-Vatu + Vanuatu-Vatu + + + Samoanischer Tala + Samoanischer Tala + Samoanische Tala + + + CFA-Franc (BEAC) + CFA-Franc (BEAC) + CFA-Franc (BEAC) + FCFA + + + Unze Silber + Unze Silber + Unzen Silber + + + Unze Gold + Unze Gold + Unzen Gold + + + Europäische Rechnungseinheit + Europäische Rechnungseinheiten + Europäische Rechnungseinheiten + + + Europäische Währungseinheit (XBB) + Europäische Währungseinheiten (XBB) + Europäische Währungseinheiten (XBB) + + + Europäische Rechnungseinheit (XBC) + Europäische Rechnungseinheiten (XBC) + Europäische Rechnungseinheiten (XBC) + + + Europäische Rechnungseinheit (XBD) + Europäische Rechnungseinheiten (XBD) + Europäische Rechnungseinheiten (XBD) + + + Ostkaribischer Dollar + Ostkaribischer Dollar + Ostkaribische Dollar + EC$ + + + Sonderziehungsrechte + Sonderziehungsrechte + Sonderziehungsrechte + + + Europäische Währungseinheit (XEU) + Europäische Währungseinheiten (XEU) + Europäische Währungseinheiten (XEU) + + + Französischer Gold-Franc + Französische Gold-Franc + Französische Gold-Franc + + + Französischer UIC-Franc + Französische UIC-Franc + Französische UIC-Franc + + + CFA-Franc (BCEAO) + CFA-Franc (BCEAO) + CFA-Franc (BCEAO) + CFA + + + Unze Palladium + Unze Palladium + Unzen Palladium + + + CFP-Franc + CFP-Franc + CFP-Franc + CFPF + + + Unze Platin + Unze Platin + Unzen Platin + + + RINET Funds + RINET Funds + RINET Funds + + + Testwährung + Testwährung + Testwährung + + + Unbekannte Währung + Unbekannte Währung + Unbekannte Währung + + + Jemen-Dinar + Jemen-Dinar + Jemen-Dinar + + + Jemen-Rial + Jemen-Rial + Jemen-Rial + + + Jugoslawischer Dinar (1966–1990) + Jugoslawischer Dinar (1966–1990) + Jugoslawische Dinar (1966–1990) + + + Jugoslawischer Neuer Dinar (1994–2002) + Jugoslawischer Neuer Dinar (1994–2002) + Jugoslawische Neue Dinar (1994–2002) + + + Jugoslawischer Dinar (konvertibel) + Jugoslawische Dinar (konvertibel) + Jugoslawische Dinar (konvertibel) + + + Südafrikanischer Rand (Finanz) + Südafrikanischer Rand (Finanz) + Südafrikanischer Rand (Finanz) + + + Südafrikanischer Rand + Südafrikanischer Rand + Südafrikanische Rand + + + Kwacha (1968–2012) + Kwacha (1968–2012) + Kwacha (1968–2012) + + + Kwacha + Kwacha + Kwacha + + + Zaire-Neuer Zaïre (1993–1998) + Zaire-Neuer Zaïre (1993–1998) + Zaire-Neue Zaïre (1993–1998) + + + Zaire-Zaïre (1971–1993) + Zaire-Zaïre (1971–1993) + Zaire-Zaïre (1971–1993) + + + Simbabwe-Dollar (1980–2008) + Simbabwe-Dollar (1980–2008) + Simbabwe-Dollar (1980–2008) + + + Simbabwe-Dollar (2009) + Simbabwe-Dollar (2009) + Simbabwe-Dollar (2009) + + + Simbabwe-Dollar (2008) + Simbabwe-Dollar (2008) + Simbabwe-Dollar (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} pro {1} + + + {0}-fache Erdbeschleunigung + {0}-fache Erdbeschleunigung + + + {0} Winkelminute + {0} Winkelminuten + + + {0} Winkelsekunde + {0} Winkelsekunden + + + {0} Grad + {0} Grad + + + {0} Acre + {0} Acres + + + {0} Hektar + {0} Hektar + + + {0} Quadratfuß + {0} Quadratfuß + + + {0} Quadratkilometer + {0} Quadratkilometer + + + {0} Quadratmeter + {0} Quadratmeter + + + {0} Quadratmeile + {0} Quadratmeilen + + + {0} Tag + {0} Tage + + + {0} Stunde + {0} Stunden + + + {0} Millisekunde + {0} Millisekunden + + + {0} Minute + {0} Minuten + + + {0} Monat + {0} Monate + + + {0} Sekunde + {0} Sekunden + + + {0} Woche + {0} Wochen + + + {0} Jahr + {0} Jahre + + + {0} Zentimeter + {0} Zentimeter + + + {0} Fuß + {0} Fuß + + + {0} Zoll + {0} Zoll + + + {0} Kilometer + {0} Kilometer + + + {0} Lichtjahr + {0} Lichtjahre + + + {0} Meter + {0} Meter + + + {0} Meile + {0} Meilen + + + {0} Millimeter + {0} Millimeter + + + {0} Pikometer + {0} Pikometer + + + {0} Yard + {0} Yards + + + {0} Gramm + {0} Gramm + + + {0} Kilogramm + {0} Kilogramm + + + {0} Unze + {0} Unzen + + + {0} Pfund + {0} Pfund + + + {0} Pferdestärke + {0} Pferdestärken + + + {0} Kilowatt + {0} Kilowatt + + + {0} Watt + {0} Watt + + + {0} Hektopascal + {0} Hektopascal + + + {0} Zoll Quecksilbersäule + {0} Zoll Quecksilbersäule + + + {0} Millibar + {0} Millibar + + + {0} Kilometer pro Stunde + {0} Kilometer pro Stunde + + + {0} Meter pro Sekunde + {0} Meter pro Sekunde + + + {0} Meile pro Stunde + {0} Meilen pro Stunde + + + {0} Grad Celsius + {0} Grad Celsius + + + {0} Grad Fahrenheit + {0} Grad Fahrenheit + + + {0} Kubikkilometer + {0} Kubikkilometer + + + {0} Kubikmeile + {0} Kubikmeilen + + + {0} Liter + {0} Liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} T + {0} T + + + {0} Std. + {0} Std. + + + {0} ms + {0} ms + + + {0} Min. + {0} Min. + + + {0} Mon + {0} Mon + + + {0} Sek. + {0} Sek. + + + {0} W + {0} W + + + {0} J + {0} J + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ly + {0} ly + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} PS + {0} PS + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} T + {0} T + + + {0} Std. + {0} Std. + + + {0} ms + {0} ms + + + {0} Min. + {0} Min. + + + {0} M + {0} M + + + {0} s + {0} s + + + {0} W + {0} W + + + {0} J + {0} J + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ly + {0} ly + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} PS + {0} PS + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} und {1} + {0} und {1} + + + {0}, {1} + {0}, {1} + {0} und {1} + {0} und {1} + + + {0}, {1} + {0}, {1} + {0} und {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0} und {1} + {0}, {1} + + + + + ja:j + nein:n + + + + diff --git a/library/Zend/Locale/Data/de_AT.xml b/library/Zend/Locale/Data/de_AT.xml new file mode 100755 index 000000000..54a27cf5b --- /dev/null +++ b/library/Zend/Locale/Data/de_AT.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + Internationales Maßsystem (SI) + Englisches Maßsystem + Angloamerikanisches Maßsystem + + + + + + + + + EEEE, dd. MMMM y G + + + + + dd. MMMM y G + + + + + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + dd.-dd. MMM y G + dd. MMM - dd. MMM y G + dd. MMM y - dd. MMM y G + + + E, dd. - E, dd. MMM y G + E, dd. MMM - E, dd. MMM y G + E, dd. MMM y - E, dd. MMM y G + + + + + + + + + Jän. + Feb. + März + Apr. + Mai + Juni + Juli + Aug. + Sep. + Okt. + Nov. + Dez. + + + Jänner + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + + + + Jän + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + + Jänner + Februar + März + April + Mai + Juni + Juli + August + September + Oktober + November + Dezember + + + + + + + EEEE, dd. MMMM y + + + + + dd. MMMM y + + + + + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + dd.-dd. MMM y + dd. MMM - dd. MMM y + dd. MMM y - dd. MMM y + + + E, dd. - E, dd. MMM y + E, dd. MMM - E, dd. MMM y + E, dd. MMM y - E, dd. MMM y + + + + + + + + + + + ¤ #,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/de_BE.xml b/library/Zend/Locale/Data/de_BE.xml new file mode 100755 index 000000000..7600d5e88 --- /dev/null +++ b/library/Zend/Locale/Data/de_BE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/de_CH.xml b/library/Zend/Locale/Data/de_CH.xml new file mode 100755 index 000000000..a9a55d4fa --- /dev/null +++ b/library/Zend/Locale/Data/de_CH.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + Weissrussisch + + + Bangladesh + Brunei + Botswana + Weissrussland + Kapverden + Djibouti + Grossbritannien + Marshall-Inseln + Äusseres Ozeanien + Rwanda + Salomon-Inseln + Sao Tomé und Principe + Zimbabwe + + + + « + » + + + + + + . + ' + + + + + ¤ #,##0.00;¤-#,##0.00 + + + + + + CHF + + + + + diff --git a/library/Zend/Locale/Data/de_DE.xml b/library/Zend/Locale/Data/de_DE.xml new file mode 100755 index 000000000..39124cd66 --- /dev/null +++ b/library/Zend/Locale/Data/de_DE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/de_LI.xml b/library/Zend/Locale/Data/de_LI.xml new file mode 100755 index 000000000..a88e3eb64 --- /dev/null +++ b/library/Zend/Locale/Data/de_LI.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + . + ' + + + + + ¤ #,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/de_LU.xml b/library/Zend/Locale/Data/de_LU.xml new file mode 100755 index 000000000..083457e0a --- /dev/null +++ b/library/Zend/Locale/Data/de_LU.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + F + . + , + + + + diff --git a/library/Zend/Locale/Data/dje.xml b/library/Zend/Locale/Data/dje.xml new file mode 100755 index 000000000..5e0524c1b --- /dev/null +++ b/library/Zend/Locale/Data/dje.xml @@ -0,0 +1,779 @@ + + + + + + + + + + + + Akan senni + Amhaarik senni + Laaraw senni + Belaruus senni + Bulagaari senni + Bengali senni + Cek senni + Almaŋ senni + Zarmaciine + Grek senni + Inglisi senni + Espaaɲe senni + Farsi senni + Fransee senni + Hawsance senni + Induu senni + Hungaari senni + Indoneesi senni + Iboo senni + Itaali senni + Japonee senni + Javanee senni + Kmeer senni + Koree senni + Maleezi senni + Burme senni + Neepal senni + Holandee senni + Punjaabi sennii + Polonee senni + Portugee senni + Rumaani senni + Ruusi senni + Rwanda senni + Somaali senni + Suweede senni + Tamil senni + Taailandu senni + Turku senni + Ukreen senni + Urdu senni + Vietnaam senni + Yorbance senni + Sinuwa senni + Zulu senni + + + Andoora + Laaraw Imaarawey Margantey + Afgaanistan + Antigua nda Barbuuda + Angiiya + Albaani + Armeeni + Hollandu Antiiyey Laboo + Angoola + Argentine + Ameriki Samoa + Otriši + Ostraali + Aruuba + Azerbaayijaŋ + Bosni nda Herzegovine + Barbaados + Bangladeši + Belgiiki + Burkina faso + Bulgaari + Bahareen + Burundi + Beniŋ + Bermuda + Bruunee + Boolivi + Breezil + Bahamas + Buutaŋ + Botswaana + Biloriši + Beliizi + Kanaada + Kongoo demookaratiki laboo + Centraafriki koyra + Kongoo + Swisu + Kudwar + Kuuk gungey + Šiili + Kameruun + Šiin + Kolombi + Kosta rika + Kuuba + Kapuver gungey + Šiipur + Cek labo + Almaaɲe + Jibuuti + Danemark + Doominiki laboo + Alžeeri + Ekwateer + Estooni + Misra + Eritree + Espaaɲe + Ecioopi + Finlandu + Fiji + Kalkan gungey + Mikronezi + Faransi + Gaabon + Albaasalaama Marganta + Grenaada + Gorgi + Faransi Guyaan + Gaana + Gibraltar + Grinland + Gambi + Gine + Gwadeluup + Ginee Ekwatorial + Greece + Gwatemaala + Guam + Gine-Bisso + Guyaane + Honduras + Krwaasi + Haiti + Hungaari + Indoneezi + Irlandu + Israyel + Indu laboo + Britiši Indu teekoo laama + Iraak + Iraan + Ayseland + Itaali + Jamaayik + Urdun + Jaapoŋ + Keeniya + Kyrgyzstan + kamboogi + Kiribaati + Komoor + Seŋ Kitts nda Nevis + Gurma Kooree + Hawsa Kooree + Kuweet + Kayman gungey + Kaazakstan + Laawos + Lubnaan + Seŋ Lussia + Liechtenstein + Srilanka + Liberia + Leesoto + Lituaani + Luxembourg + Letooni + Liibi + Maarok + Monako + Moldovi + Madagascar + Maršal gungey + Maacedooni + Maali + Maynamar + Mongooli + Mariana Gurma Gungey + Martiniiki + Mooritaani + Montserrat + Malta + Mooris gungey + Maldiivu + Malaawi + Mexiki + Maleezi + Mozambik + Naamibi + Kaaledooni Taagaa + Nižer + Norfolk Gungoo + Naajiriia + Nikaragwa + Hollandu + Norveej + Neepal + Nauru + Niue + Zeelandu Taaga + Omaan + Panama + Peeru + Faransi Polineezi + Papua Ginee Taaga + Filipine + Paakistan + Poloɲe + Seŋ Piyer nda Mikelon + Pitikarin + Porto Riko + Palestine Dangay nda Gaaza + Portugaal + Palu + Paraguwey + Kataar + Reenioŋ + Rumaani + Iriši laboo + Rwanda + Saudiya + Solomon Gungey + Seešel + Suudaŋ + Sweede + Singapur + Seŋ Helena + Sloveeni + Slovaaki + Seera Leon + San Marino + Senegal + Somaali + Surinaam + Sao Tome nda Prinsipe + Salvador laboo + Suuria + Swaziland + Turk nda Kayikos Gungey + Caadu + Togo + Taayiland + Taažikistan + Tokelau + Timoor hawsa + Turkmenistaŋ + Tunizi + Tonga + Turki + Trinidad nda Tobaago + Tuvalu + Taayiwan + Tanzaani + Ukreen + Uganda + Ameriki Laabu Margantey + Uruguwey + Uzbeekistan + Vaatikan Laama + Seŋvinsaŋ nda Grenadine + Veneezuyeela + Britiši Virgin gungey + Ameerik Virgin Gungey + Vietnaam + Vanautu + Wallis nda Futuna + Samoa + Yaman + Mayooti + Hawsa Afriki Laboo + Zambi + Zimbabwe + + + + [a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž] + [v] + [A B C D E F G H I J K L M N Ɲ Ŋ O P Q R S T U W X Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + Žan + Fee + Mar + Awi + Me + Žuw + Žuy + Ut + Sek + Okt + Noo + Dee + + + Žanwiye + Feewiriye + Marsi + Awiril + Me + Žuweŋ + Žuyye + Ut + Sektanbur + Oktoobur + Noowanbur + Deesanbur + + + + + Ž + F + M + A + M + Ž + Ž + U + S + O + N + D + + + + + + + Alh + Ati + Ata + Ala + Alm + Alz + Asi + + + Alhadi + Atinni + Atalaata + Alarba + Alhamisi + Alzuma + Asibti + + + + + H + T + T + L + M + Z + S + + + + + + + A1 + A2 + A3 + A4 + + + Arrubu 1 + Arrubu 2 + Arrubu 3 + Arrubu 4 + + + + + + + Subbaahi + Zaarikay b + + + + + + Isaa jine + Isaa zamanoo + + + IJ + IZ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Zaman + + + Jiiri + + + Handu + + + Hebu + + + Zaari + Bi + Hõo + Suba + + + Subbaahi/Zaarikay banda + + + Guuru + + + Miniti + + + Miti + + + Leerazuu + + + + + + . +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00¤ + + + + + + Laaraw Immaara Margantey Dirham + + + Angoola Kwanza + + + Ostraali Dollar + + + Bahareen Dinar + + + Burundi Fraŋ + + + Botswaana Pund + + + Kanaada Dollar + + + Kongo Fraŋ + + + Swisu Fraŋ + + + Sinwa Yuan Renminbi + + + Kapuver Escudo + + + Jibuuti Fraŋ + + + Alžeeri Dinar + + + Misra Pund + + + Eritree Nafka + + + Ecioopi Birr + + + Eero + + + Britin Pund + + + Gaana Šiidi + + + Gambi Dalasi + + + Ginee Fraŋ + + + Indu Rupii + + + Jaapoŋ Yen + + + Keeniya Šiiliŋ + + + Komoor Fraŋ + + + Liberia Dollar + + + Leezoto Loti + + + Liibi Dinar + + + Maarok Dirham + + + Malgaaši Fraŋ + + + Mooritaani Ugiya + + + Mooris Rupii + + + Malaawi Kwaca + + + Mozambik Metikal + + + Naamibi Dollar + + + Naajiriya Neera + + + Rwanda Fraŋ + + + Saudiya Riyal + + + Seešel Rupii + + + Suudaŋ Dinar + + + Suudaŋ Pund + + + Seŋ Helena Fraŋ + + + Leeon + + + Somaali Šiiliŋ + + + Sao Tome nda Prinsipe Dobra + + + Lilangeni + + + Tunizi Dinar + + + Tanzaani Šiiliŋ + + + Uganda Šiiliŋ + + + Ameriki Dollar + + + CFA Fraŋ (BEAC) + + + CFA Fraŋ (BCEAO) + + + Hawasa Afriki Rand + + + Zambi Kwaca (1968–2012) + + + Zambi Kwaca + + + Zimbabwe Dollar + + + + + + Ayyo:A + Kala:K + + + + diff --git a/library/Zend/Locale/Data/dje_NE.xml b/library/Zend/Locale/Data/dje_NE.xml new file mode 100755 index 000000000..51420d2f9 --- /dev/null +++ b/library/Zend/Locale/Data/dje_NE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/dua.xml b/library/Zend/Locale/Data/dua.xml new file mode 100755 index 000000000..b299509a5 --- /dev/null +++ b/library/Zend/Locale/Data/dua.xml @@ -0,0 +1,342 @@ + + + + + + + + + + + + duálá + + + Cameroun + + + + [a á b ɓ c d ɗ e é ɛ {ɛ\u0301} f g i í j k l m n {ny} ŋ o ó ɔ {ɔ\u0301} p r s t u ú ū w y] + [h q v x z] + [A B Ɓ C D Ɗ E Ɛ F G I J K L M N Ŋ O Ɔ P S T U W Y] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + di + ŋgɔn + sɔŋ + diɓ + emi + esɔ + mad + diŋ + nyɛt + may + tin + elá + + + dimɔ́di + ŋgɔndɛ + sɔŋɛ + diɓáɓá + emiasele + esɔpɛsɔpɛ + madiɓɛ́díɓɛ́ + diŋgindi + nyɛtɛki + mayésɛ́ + tiníní + eláŋgɛ́ + + + + + d + ŋ + s + d + e + e + m + d + n + m + t + e + + + + + + + ét + mɔ́s + kwa + muk + ŋgi + ɗón + esa + + + éti + mɔ́sú + kwasú + mukɔ́sú + ŋgisú + ɗónɛsú + esaɓasú + + + + + e + m + k + m + ŋ + ɗ + e + + + + + + + ndu1 + ndu2 + ndu3 + ndu4 + + + ndúmbū nyá ɓosó + ndúmbū ní lóndɛ́ íɓaá + ndúmbū ní lóndɛ́ ílálo + ndúmbū ní lóndɛ́ ínɛ́y + + + + + + + idiɓa + ebyámu + + + + + + ɓoso ɓwá yáɓe lá + mbúsa kwédi a Yés + + + ɓ.Ys + mb.Ys + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + póndá + + + mbú + + + mɔ́di + + + disama + + + búnyá + kíɛlɛ nítómb́í + wɛ́ŋgɛ̄ + kíɛlɛ + + + mínyá má disama + + + epasi a búnyá + + + ŋgandɛ + + + ndɔkɔ + + + píndí + + + + + + , +   + + + + + #,##0.### + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + + + + + ee:e + kɛ́m:k + + + + diff --git a/library/Zend/Locale/Data/dua_CM.xml b/library/Zend/Locale/Data/dua_CM.xml new file mode 100755 index 000000000..694d363ce --- /dev/null +++ b/library/Zend/Locale/Data/dua_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/dyo.xml b/library/Zend/Locale/Data/dyo.xml new file mode 100755 index 000000000..c1b5e9796 --- /dev/null +++ b/library/Zend/Locale/Data/dyo.xml @@ -0,0 +1,546 @@ + + + + + + + + + + + + akan + amharik + arab + belarus + bulgaari + bengali + sek + alman + joola + greek + angle + español + persan + franse + hausa + endu + ongrua + indoneesi + igbo + italien + saponee + savanee + kmeer + koree + maleesi + birmani + nepalees + neerlande + penjabi + polonees + portugees + rumeen + rus + ruanda + somali + suedi + tamil + tay + turki + ukrain + urdu + vietnam + yoruba + sinua + sulu + + + Andorra + Afganistan + Antigua di Barbuda + Angiiya + Albani + Armeni + Angola + Arsantin + Samoa yati Amerik + Otris + Ostraalia + Aruba + Aserbaysan + Bosni di Hersegovin + Barbad + Banglades + Belsik + Burukiina Faso + Bulgari + Bahrayn + Burundi + Bene + Bermud + Buruney + Boliivi + Bresil + Bahama + Butan + Boswana + Belarus + Beliis + Kanada + Mofam demokratik mati Kongo + Kongo + Koddiwar + Cili + Kamerun + Siin + Kolombi + Kosta Rika + Kuba + Kap Ver + Siipr + Mofam mati Cek + Almaañ + Jibuti + Danmark + Dominika + Mofam mati Dominik + Alseri + Ekuador + Estoni + Esípt + Eritree + Espaañ + Ecoopi + Finland + Fiji + Frans + Gabon + Grenada + Seorsi + Gaana + Sipraltaar + Greenland + Gambi + Giné + Guwadalup + Gres + Guatemala + Guam + Giné Bisaau + Giyan + Onduras + Kroasi + Ayti + Oŋri + Endonesi + Irland + Israel + End + Irak + Iran + Iisland + Itali + Samaik + Sapoŋ + Keniya + Kamboj + Komor + Saŋ Lusia + Siri Lanka + Liberia + Madagaskaar + Mali + Ecinkey yati Noorfok + Abari Saudi + Sudan + Singapur + Sloveni + Slovaki + Serra Leon + Senegal + Somali + Salvadoor + Cad + Togo + Tailand + + + + [a á b c d e é f g h i í j k l m n ñ ŋ o ó p q r s t u ú v w x y] + [z] + [A B C D E F G H I J K L M N Ñ Ŋ O P Q R S T U V W X Y] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + Sa + Fe + Ma + Ab + Me + Su + + Ut + Se + Ok + No + De + + + Sanvie + Fébirie + Mars + Aburil + Mee + Sueŋ + Súuyee + Ut + Settembar + Oktobar + Novembar + Disambar + + + + + S + F + M + A + M + S + S + U + S + O + N + D + + + + + + + Dim + Ten + Tal + Ala + Ara + Arj + Sib + + + Dimas + Teneŋ + Talata + Alarbay + Aramisay + Arjuma + Sibiti + + + + + D + T + T + A + A + A + S + + + + + + Ariŋuu Yeesu + Atooŋe Yeesu + + + ArY + AtY + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Jamanay + + + Emit + + + Fuleeŋ + + + Lóokuŋ + + + Funak + Fucen + Jaat + Kajom + + + Bujom / Kalíim + + + + + + , +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + + + + kwanza yati Angola + + + dolaar yati Ostraalia + + + dinaar yati Bahrayn + + + fraaŋ yati Burundi + + + pula yati Boswana + + + dolaar yati Kanada + + + fraaŋ yati Kongo + + + yuan yati Siin + + + eskuudo yati Kap Ver + + + fraaŋ yati Jibuti + + + dinaar yati Alseri + + + liiverey yati Esípt + + + nafka yati Eritree + + + birr yati Ecoopi + + + euro + + + cedi yati Gaana + + + dalasi yati Gambi + + + sili yati Giné + + + rupii yati End + + + yen yati Sapoŋ + + + silliŋ yati Keniya + + + fraaŋ yati Komor + + + dolaar yati Liberia + + + dinaar yati Libia + + + ariari yati Madagaskaar + + + ugiiya yati Mooritanii + + + kwacha yati Malawi + + + seefa BEAC + + + seefa yati BCEAO + + + + + + Eey:E + Hani:H + + + + diff --git a/library/Zend/Locale/Data/dyo_SN.xml b/library/Zend/Locale/Data/dyo_SN.xml new file mode 100755 index 000000000..ba2e1c74d --- /dev/null +++ b/library/Zend/Locale/Data/dyo_SN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/dz.xml b/library/Zend/Locale/Data/dz.xml new file mode 100755 index 000000000..0cf6cf248 --- /dev/null +++ b/library/Zend/Locale/Data/dz.xml @@ -0,0 +1,2651 @@ + + + + + + + + + + + + {0}། ({1}།) + {0}་, {1} + {0}།: {1} + + + ཨ་ཕར་ཁ + ཨཱབ་ཁ་ཟི་ཡ་ཁ + ཨཕ་རི་ཀཱནས་ཁ + ཨམ་ཧ་རིཀ་ཁ + ཨེ་ར་བིཀ་ཁ + ཨ་ས་མིས་ཁ + ཨ་ཛར་བྷའི་ཇཱན་ཁ + བེལ་ཨ་རུས་ཁ + བཱལ་གེ་རི་ཡཱན་ཁ + བངྒ་ལ་ཁ + བོད་ཁ + བྷོས་ནི་ཡཱན་ཁ + ཀེ་ཊ་ལཱན་ཁ + ཅེཀ་ཁ + ཝེལཤ་ཁ + ཌེ་ནིཤ་ཁ + ད་ཀོ་ཏ་ཁ + ཇཱར་མཱན་ཁ + ཨཱོས་ཊྲི་ཡཱན་ཇཱར་མཱན་ཁ + སུ་ཡིས་གི་མཐོ་སའི་ཇཱར་མཱན་ཁ + དི་བེ་ཧི་ཁ + རྫོང་ཁ + ཨི་ཇིཔ་ཤཱན (སྔ་དུས་ཀྱི) + གྲིཀ་ཁ + ཨིང་ལིཤ་ཁ + ཨཱོས་ཊྲེ་ལི་ཡཱན་ཨིང་ལིཤ་ཁ + ཀེ་ན་ཌི་ཡཱན་ཨིང་ལིཤ་ཁ + བྲི་ཊིཤ་ཨིང་ལིཤ་ཁ + ཡུ་ཨེས་ཨིང་ལིཤ་ཁ + ཨེས་པ་རཱན་ཏོ་ཁ + ཨིས་པེ་ནིཤ་ཁ + ལེ་ཊིན་ཨ་མེ་རི་ཀཱན་གི་ཨིས་པེ་ནིཤ་ཁ + ཡུ་རོབ་ཀྱི་ཨིས་པེ་ནིཤ་ཁ + ཨེས་ཊོ་ནི་ཡཱན་ཁ + བཱསཀ་ཁ + པར་ཤི་ཡཱན་ཁ + ཕི་ནིཤ་ཁ + ཕི་ལི་པི་ནོ་ཁ + ཕི་ཇི་ཡཱན་ཁ + ཕཱ་རོ་ཨིས་ཁ + ཕྲནཅ་ཁ + ཀེ་ན་ཌི་ཡཱན་ཕྲནཅ་ཁ + སུ་ཡིས་ཕྲནཅ་ཁ + ནུབ་ཕྼི་སི་ཡན་ཁ + ཨཱའི་རིཤ་ཁ + གལ་ཨིས་ཨི་ཡན་ཁ + གུ་ཝ་ར་ནི་ཁ + གིརིཀ, སྔ་དུས་ཀྱི (༡༤༥༣) + སུ་ཡིས་ཇཱར་མཱན་ཁ + གུ་ཇ་ར་ཏི་ཁ + ཧཝ་ས་ཁ + ཧ་ཝ་ཡིའི་ཁ + ཧེ་བྲུ་ཁ + ཧིན་དི་ཁ + ཀྲོ་ཨེ་ཤི་ཡཱན་ཁ + ཧེ་ཏི་ཡཱན་ཁ + ཧཱང་གྷ་རི་ཡཱན་ཁ + ཨར་མི་ནི་ཡཱན་ཁ + ཨིན་ཌོ་ནེ་ཤི་ཡཱན་ཁ + ཨིག་བོ་ཁ + ཨ་ཡིས་ལེན་ཌིཀ་ཁ + ཨི་ཊ་ལི་ཡཱན་ཁ + ཇཱ་པཱ་ནིས་ཁ + ཇཱ་བ་ནིས་ཁ + ཇཽ་ཇི་ཡཱན་ཁ + ཀ་ཆིན་ཁ + ཀོ་རོ་ཁ + ཀ་ཛགས་ཁ + ཁེ་མེར་ཁ + ཀ་ན་ཌ་ཁ + ཀོ་རི་ཡཱན་ཁ + ཀཱཤ་མི་རི་ཁ + ཀར་ཌིཤ་ཁ + ཀིར་གིས་ཁ + ལེ་ཊིན་ཁ + ལག་ཛམ་བོརྒ་ཁ + ལཱ་ཝོས་ཁ + ལི་ཐུ་ཝེ་ནི་ཡཱན་ཁ + ལཊ་བི་ཡཱན་ཁ + མ་ལ་ག་སི་ཁ + མ་ཨོ་རི་ཁ + མ་སེ་ཌོ་ནི་ཡཱན་ཁ + མ་ལ་ཡ་ལམ་ཁ + སོག་པོའི་ཁ + མན་ཇུ་ཁ + མ་ནི་པུ་རི + མ་ར་ཐི་ཁ + མ་ལེ་ཁ + མཱལ་ཊ་ཁ + བར་མིས་ཁ + ནོར་ཝེ་ཇི་ཡཱན་བོཀ་མཱལ་ཁ + ནེ་པཱལི་ཁ + ནི་ཝ་རི + ཌཆ་ཁ + ཕྷེལེ་མིཤ་ཁ + ནོར་ཝེ་ཇི་ཡཱན་ནོརསཀ་ཁ + ནོར་ཝི་ཇི་ཡན་ཁ + ཨོ་རི་ཡ་ཁ + པཱན་ཇ་བི་ཁ + པ་ལི + པོ་ལིཤ་ཁ + པཱཤ་ཏོ་ཁ + པོར་ཅུ་གིས་ཁ + བྲ་ཛི་ལི་ཡཱན་པོར་ཅུ་གིས་ཁ + ཨི་བེ་རི་ཡཱན་པོར་ཅུ་གིས་ཁ + ཀྭེ་ཆུ་ཨ་ཁ + རོ་མེ་ནིཤ་ཁ + རོ་མེ་ནི་ཡཱན་ཁ + ཨུ་རུ་སུའི་ཁ + སཾསྐྲྀཏ་ཁ + སིན་དཱི་ཁ + ཤཱན་ཁ + སིང་ཧ་ལ་ཁ + སུ་ལོ་བཱཀ་ཁ + སུ་ལོ་བི་ནི་ཡཱན་ཁ + སོ་མ་ལི་ཁ + ཨཱལ་བེ་ནི་ཡཱན་ཁ + སཱར་བྷི་ཡཱན་ཁ + སཱུན་ད་ནིས་ཁ + སུའི་ཌིཤ་ཁ + སྭཱ་ཧི་ལི་ཁ + ཏ་མིལ་ཁ + ཏེ་ལུ་གུ་ཁ + ཏ་ཇིཀ་ཁ + ཐཱའི་ཁ + ཏིག་རི་ཉ་ཁ + ཊཱརཀ་མེན་ཁ + ཊོང་གྷན་ཁ + ཊཱར་ཀིཤ་ཁ + ཊ་ཊར་ཁ + ཝི་གུར་ཁ + ཡུ་ཀེ་རེ་ནི་ཡཱན་ཁ + ཁ་ངོ་མ་ཤེསཔ + ཨུར་དུ་ཁ + ཨུས་བེཀ་ཁ + བེཊ་ནཱ་མིས་ཁ + ཝོ་ལོཕ་ཁ + ཞོ་ས་ཁ + ཡོ་རུ་བ་ཁ + རྒྱ་མི་ཁ + རྒྱ་མི་ཁ་འཇམ་སངམ + སྔ་དུས་ཀྱི་རྒྱ་མི་ཁ + ཟུ་ལུ་ཁ + སྐད་རིག་ནང་དོན་མེདཔ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + འཛམ་གླིང༌ + ཨཕ་རི་ཀ + བྱང་ཨ་མི་རི་ཀ + ལྷོ་ཨ་མི་རི་ཀ + ཨོཤི་ཡཱན་ན + ནུབ་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀ + བར་ཕྱོགས་ཨ་མི་རི་ཀ + ཤར་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀ + བྱང་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀ + སྦུག་ཕྱོགས་ཀྱི་ཨཕ་རི་ཀ + ལྷོའི་ཨཕ་རི་ཀ + ཨ་མི་རི་ཀ་ཚུ + བྱང་ཕྱོགས་ཀྱི་ཨ་མི་རི་ཀ + ཀེ་རི་བི་ཡེན + ཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡ + ལྷོའི་ཨེ་ཤི་ཡ + ལྷོ་ཤར་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡ + ལྷོའི་ཡུ་རོབ + ཨཱོས་ཊྲེལ་ཨེ་ཤི་ཡ + མེ་ལ་ནི་ཤི་ཡ + ལུང་ཕྱོགས་མའི་ཀྲོ་ནི་ཤི་ཡ + པོ་ལི་ནི་ཤི་ཡ + ཨེ་ཤི་ཡ + སྦུག་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡ + ནུབ་ཕྱོགས་ཀྱི་ཨེ་ཤི་ཡ + ཡུ་རོབ + ཤར་ཕྱོགས་ཀྱི་ཡུ་རོབ + བྱང་ཕྱོགས་ཀྱི་ཡུ་རོབ + ནུབ་ཕྱོགས་ཀྱི་ཡུ་རོབ + ལེ་ཊིནཨ་མི་རི་ཀ + ཨེ་སེན་ཤུན་ཚོ་གླིང༌ + ཨཱན་དོ་ར + ཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊས + ཨཕ་གྷ་ནི་སཏཱན + ཨན་ཊི་གུ་ཝ་ ཨེནཌ་ བྷར་བྷུ་ཌ + ཨང་གི་ལ + ཨཱལ་བེ་ནི་ཡ + ཨར་མི་ནི་ཡ + ཨང་གྷོ་ལ + འཛམ་གླིང་ལྷོ་མཐའི་ཁྱགས་གླིང + ཨར་ཇེན་ཊི་ན + ས་མོ་ཨ་ཡུ་ཨེས་ཨེ་མངའ་ཁོངས + ཨཱོས་ཊྲི་ཡ + ཨཱོས་ཊྲེལ་ལི་ཡ + ཨ་རུ་བཱ + ཨ་ལནཌ་གླིང་ཚོམ + ཨ་ཛར་བྷའི་ཇཱན + བྷོས་ནི་ཡ་ ཨེནཌ་ ཧར་ཛི་གྷོ་བི་ན + བྷར་བེ་ཌོས + བངྒ་ལ་དེཤ + བྷེལ་ཇམ + བྷར་ཀི་ན་ ཕེ་སོ + བུལ་ག་རི་ཡ + བྷ་རེན + བྷུ་རུན་ཌི + བྷེ་ནིན + སེནཊ་ བར་ཐོ་ལོམ་མིའུ + བར་མུ་ཌ + བྷྲུ་ནའི + བྷེ་ལི་བི་ཡ + ཀེ་རི་བི་ཡེན་ནེ་དར་ལནཌས྄ + བྲ་ཛིལ + བྷ་ཧ་མས྄ + འབྲུག + བོའུ་ཝེཊ་མཚོ་གླིང + བྷོཙ་ཝ་ན + བེལ་ཨ་རུ་སུ + བྷེ་ལིཛ + ཀེ་ན་ཌ + ཀོ་ཀོས་གླིང་ཚོམ + ཀོང་གྷོ ཀིན་ཤ་ས + ཌེ་མོ་ཀེརེ་ཊིཀ་ རི་པབ་ལིཀ་ ཨོཕ་ ཀོང་གྷོ + སེན་ཊལ་ ཨཕ་རི་ཀཱན་ རི་པབ་ལིཀ + ཀོང་གྷོ བྷྲ་ཛ་བིལ + རི་པབ་ལིཀ་ ཨོཕ་ ཀོང་གྷོ + སུ་ཝིཊ་ཛར་ལེནཌ + ཀོ་ཊེ་ ཌི་ཨི་ཝོ་རེ + ཨི་ཝོ་རི་ཀོསཊ + ཀུག་གླིང་ཚོམ + ཅི་ལི + ཀེ་མ་རུན + རྒྱ་ནག + ཀོ་ལོམ་བྷི་ཡ + ཀི་ལི་པེར་ཊོན་མཚོ་གླིང་ + ཀོས་ཊ་རི་ཀ + ཀིའུ་བྷ + ཀེཔ་བཱཌ + ཀྱཱུར་ར་ཀོ + ཁི་རིསྟ་མེས་མཚོ་གླིང + སཱའི་པྲས + ཅེཀ་ རི་པབ་ལིཀ + ཇཱར་མ་ནི + ཌི་ཡེ་གོ་གར་སིའོ + ཇི་བྷུ་ཊི + ཌེན་མཱཀ + ཌོ་མི་ནི་ཀ + ཌོ་མི་ནི་ཀཱན་ རི་པབ་ལིཀ + ཨཱལ་ཇི་རི་ཡ + སེ་ཨུ་ཏ་ ཨེནཌ་ མེལ་ལི་ལ + ཨེ་ཁྭ་ཌོར + ཨེས་ཊོ་ནི་ཡ + ཨི་ཇིབཊ + ནུབ་ཕྱོགས་ ས་ཧཱ་ར + ཨེ་རི་ཊྲེ་ཡ + ཨིས་པེན + ཨི་ཐི་ཡོ་པི་ཡ + ཡུ་རོབ་གཅིག་བསྡོམས་ཚོགས་པ + ཕིན་ལེནཌ + ཕི་ཇི + ཕལྐ་ལནྜ་གླིང་ཚོམ + ཕལྐ་ལནྜ་གླིང་ཚོམ (ཨིས་ལཱས་མལ་བི་ཎཱས) + མའི་ཀྲོ་ནི་ཤི་ཡ + ཕཱའེ་རོ་གླིང་ཚོམ + ཕྲཱནས + གྷ་བྷོན + ཡུ་ནཱའི་ཊེཌ་ ཀིང་ཌམ + གྲྀ་ན་ཌ + ཇཽར་ཇཱ + གུའི་ཡ་ན་ ཕྲནས྄་མངའ་ཁོངས + གུ་ཨེརྣ་སི + གྷ་ན + ཇིབ་རཱལ་ཊར + གིརཱིན་ལནཌ྄ + གྷེམ་བི་ཡ + གྷི་ནི + གོ་ཌེ་ལུ་པེ + ཨེ་ཀུ་ཊོ་རེལ་ གི་ནི + གིརིས྄ + སཱའུཐ་ཇཽར་ཇཱ་ དང་ སཱའུཐ་སེནཌ྄་ཝིཅ་གླིང་ཚོམ + གྷོ་ཊ་མ་ལ + གུ་འམ་ མཚོ་གླིང + གྷི་ནི་ བྷི་སཱའུ + གྷ་ཡ་ན + ཧོང་ཀོང་ཅཱའི་ན + ཧོང་ཀོང + ཧཱརཌ་མཚོ་གླིང་ དང་ མེཀ་ཌོ་ནལཌ྄་གླིང་ཚོམ + ཧཱན་ཌུ་རཱས྄ + ཀྲོ་ཨེ་ཤ + ཧེ་ཊི + ཧཱང་གྷ་རི + ཀ་ནེ་རི་གླིང་ཚོམ + ཨིན་ཌོ་ནེ་ཤི་ཡ + ཨཱ་ཡ་ལེནཌ + ཨིས་ར་ཡེལ + ཨ་ཡུལ་ ཨོཕ་ མཱན + རྒྱ་གར + བྲི་ཊིཤ་རྒྱ་གར་གྱི་རྒྱ་མཚོ་ས་ཁོངས + ཨི་རཱཀ + ཨི་རཱན + ཨཱའིས་ལེནཌ + ཨི་ཊ་ལི + ཇེར་སི + ཇཱ་མཻ་ཀ + ཇོར་ཌན + ཇ་པཱན + ཀེན་ཡ + ཀིར་གིས་སཏཱན + ཀམ་བྷོ་ཌི་ཡ + ཀི་རི་བ་ཏི་མཚོ་གླིང + ཀོ་མོ་རོས + སེནཊ་ ཀིཊས་ དང་ ནེ་བིས + བྱང་ ཀོ་རི་ཡ + ལྷོ་ ཀོ་རི་ཡ + ཀུ་ཝེཊ + ཁེ་མེན་གླིང་ཚོམ + ཀ་ཛགས་སཏཱན + ལཱ་ཝོས + ལེ་བ་ནོན + སེནཊ་ ལུ་སི་ཡ + ལིཀ་ཏནས་ཏ་ཡིན + ཤྲཱི་ལང་ཀ + ལཱའི་བེ་རི་ཡ + ལཻ་སོ་ཐོ + ལི་ཐུ་ཝེ་ནི་ཡ + ལག་ཛམ་བོརྒ + ལཊ་བི་ཡ + ལི་བི་ཡ + མོ་རོ་ཀོ + མོ་ན་ཀོ + མོལ་དོ་བཱ + མོན་ཊི་ནེག་རོ + སེནཊ་ མཱར་ཊིན + མ་དཱ་གེས་ཀར + མར་ཤེལ་གླིང་ཚོམ + མ་སེ་ཌོ་ནི་ཡ + མ་སེ་ཌོ་ནི་ཡ་ (ཡུ་གོ་སླཱ་བི་ཡ) + མཱ་ལི + མི་ཡཱན་མར་ (བྷར་མ) + སོག་པོ་ཡུལ + མཀ་ཨའུ་ཅཱའི་ན + མཀ་ཨའུ + བྱང་ཕྱོགས་ཀྱི་མ་ར་ཡ་ན་གླིང་ཚོམ + མཱར་ཊི་ནིཀ + མོ་རི་ཊེ་ནི་ཡ + མོན་ས་རཊ + མཱལ་ཊ + མོ་རི་ཤཱས + མཱལ་དིབས + མ་ལ་ཝི + མེཀ་སི་ཀོ + མ་ལེ་ཤི་ཡ + མོ་ཛམ་བྷིཀ + ན་མི་བི་ཡ + ནིའུ་ཀ་ལི་དོ་ནི་ཡ + ནཱའི་ཇཱ + ནོར་ཕོལཀ་མཚོ་གླིང༌ + ནཱའི་ཇི་རི་ཡ + ནི་ཀྲ་ཝ་ག + ནེ་དར་ལནཌས྄ + ནོར་ཝེ + བལ་ཡུལ + ནའུ་རུ་ + ནི་ཨུ་ཨཻ + ནིའུ་ཛི་ལེནཌ + ཨོ་མཱན + པ་ན་མ + པེ་རུ + ཕྲཱནས྄་ཀྱི་པོ་ལི་ནི་ཤི་ཡ + པ་པུ་ ནིའུ་གི་ནི + ཕི་ལི་པིནས + པ་ཀི་སཏཱན + པོ་ལེནཌ + སིནཊ་པི་ཡེར་ ཨེནཌ་ མིཀོ་ལེན + པིཊ་ཀེ་ཡེརན་གླིང་ཚོམ + པུ་འེར་ཊོ་རི་ཁོ + པེ་ལིསི་ཊི་ནི་ཡན་ཊེ་རི་ཐོ་རི + པོར་ཅུ་གཱལ + པ་ལའུ + པ་ར་གུ་ཝའི + ཀ་ཊར + ཨོཤི་ཡཱན་ན་གྱི་མཐའ་མཚམས + རེ་ཡུ་ནི་ཡོན + རོ་མེ་ནི་ཡ + སཱར་བྷི་ཡ + ཨུ་རུ་སུ + རུ་ཝན་ཌ + སཱཝ་དི་ ཨ་རེ་བྷི་ཡ + སོ་ལོ་མོན་ གླིང་ཚོམ + སེ་ཤཱལས + སུ་ཌཱན + སུའི་ཌེན + སིང་ག་པོར + སེནཊ་ ཧེ་ལི་ན + སུ་ལོ་བི་ནི་ཡ + སྭཱལ་བྷརྡ་ ཨེནཌ་ ཇཱན་མ་ཡེན + སུ་ལོ་བཱ་ཀི་ཡ + སི་ར་ ལི་འོན + སཱན་མ་རི་ནོ + སེ་ནི་གྷལ + སོ་མ་ལི་ཡ + སུ་རི་ནཱམ + སཱའུཐ་ སུ་ཌཱན + སཝ་ ཊོ་མེ་ ཨེནཌ་ པྲྀན་སི་པེ + ཨེལ་སལ་བ་ཌོར + སིནཊ་ མཱར་ཊེན + སི་རི་ཡ + སུ་ཝ་ཛི་ལེནཌ + ཏྲིས་ཏན་ད་ཀུན་ཧ + ཏུརྐས྄་ ཨེནཌ་ ཀ་ཀོས་གླིང་ཚོམ + ཅཱཌ + ཕྲནཅ་གི་ལྷོ་ཕྱོགས་མངའ་ཁོངས + ཊོ་གྷོ + ཐཱའི་ལེནཌ + ཏ་ཇིག་གི་སཏཱན + ཏོ་ཀེ་ལའུ་ མཚོ་གླིང + ཏི་་མོར་ལེ་ཨེསཊ + ཤར་ཕྱོགས་ཏི་་མོར + ཊཱརཀ་མེནའི་སཏཱན + ཊུ་ནི་ཤི་ཡ + ཊོང་གྷ + ཊཱར་ཀི + ཊི་ནི་ཌཱཌ་ ཨེནཌ་ ཊོ་བྷེ་གྷོ + ཏུ་ཝ་ལུ + ཊཱའི་ཝཱན + ཊཱན་ཛཱ་ནི་ཡ + ཡུ་ཀརེན + ཡུ་གྷན་ཌ + ཡུ་ཨེས་གྱི་མཐའ་མཚམས་མཚོ་གླིང་ + ཡུ་ཨེས་ཨེ + ཡུ་རུ་གུ་ཝའི + ཨུས་བེག་གི་སཏཱན + བ་ཊི་ཀཱན་ སི་ཊི + སེནཊ་ཝིན་སེནཌ྄ ཨེནཌ་ གི་རེ་ན་དིནས྄ + བེ་ནི་ཛུ་ཝེ་ལ + ཝརཇིན་གླིང་ཚོམ་ བྲཱི་ཊིཤ་མངའ་ཁོངས + ཝརཇིན་གླིང་ཚོམ་ ཡུ་ཨེས་ཨེ་མངའ་ཁོངས + བེཊ་ནཱམ + ཝ་ནུ་ཨ་ཏུ + ཝལ་ལིས྄་ ཨེནཌ་ ཕུ་ཏུ་ན་ + ས་མོ་ཨ + ཡེ་མེན + མེ་ཡོཊ + སཱའུཐ་ ཨཕ་རི་ཀ + ཛམ་བྷི་ཡ + ཛིམ་བྷབ་ཝེ + ངོ་མ་ཤེས་པའི་ལུང་ཕྱོགས + + + ཟླ་ཐོ + གནས་སདུད་རིམ་ སགྲིག + ཤོག་དངུལ + ཨང་ཡིག + + + ཨེ་ར་བིཀ་-ཨིན་ཌིཀ་ཨང + ཨེ་ར་བིཀ་-ཨིན་ཌིཀ་རྒྱ་སྐྱེད་ཨང + ཨར་མི་ནི་ཡཱན་ཨང + ཨར་མི་ནི་ཡཱན་གྱི་མགྱོགས་ཡིག་ཨང་རྟགས + བངྒ་ལི་ཨང + དེ་ཝ་ན་ག་རི་ཨང + སྔ་སྒྲིག་ཡུ་ནི་ཀོཊ་གི་གོ་རིམ + ཨི་ཐི་ཡོ་པིཀ་ཨང་རྟགཨ + རྒྱ་ཚད་གང་བའི་ཨང + ཇཽར་ཇཱི་ཡཱན་ཨང་རྟགས + གྲེག་གོ་རི་ཡཱན་ཟླ་ཐོ + གྲིཀ་ཨང་རྟགས + གྲིཀ་གི་མགྱོགས་ཡིག་ཨང་རྟགས + གུ་ཇ་ར་ཏི་ཨང + གུ་རུ་མུ་ཁི་ཨང + རྒྱ་མིའི་ཚག་ཅན་མའི་ཨང་རྟགས + འཇམ་སངམ་རྒྱ་མིའི་ཨང་རྟགས + འཇམ་སངམ་རྒྱ་མི་གི་དངུལ་འབྲེལ་ཨང་རྟགས + སྔ་དུས་རྒྱ་མིའི་ཨང་རྟགས + སྔ་དུས་རྒྱ་མིའི་གི་དངུལ་འབྲེལ་ཨང་རྟགས + ཧེ་བྲུ་ཨང་རྟགས + ཇཱ་པཱན་ནིས་ཨང་རྟགས + ཇཱ་པཱན་ནིས་དངུལ་འབྲེལ་ཨང་རྟགས + ཁེ་མར་ཨང + ཀ་ན་ཌ་ཨང + ལཱ་འོས་ཨང་ + ཕྱི་གླིང་པའི་ཨང + མ་ལ་ཡ་ལམ་ཨང་ + མི་ཡཱན་མར་ཨང་ + ཨོ་རི་ཡ་ཨང་ + རོ་མཱན་ཨང་རྟགས + རོ་མཱན་གྱི་མགྱོགས་ཡིག་ཨང་རྟགས + སྤྱི་དོན་འཚོལ་བ + སྔ་དུས་ཊ་མིལ་ཨང་རྟགས + ཊ་མིལ་ཨང + ཏེ་ལུ་གུ་ཨང + ཐཱའི་ཨང + ང་བཅས་ཀྱི་ཨང་ཡིག + ལུགས་སྲོལ + + + མེ་ཊྲིཀ་བརྩི་ལུགས + བྲི་ཊིཤ་ བརྩི་ལུགས + ཨ་མི་རི་ཀཱན་ བརྩི་ལུགས + + + ཁ་སྐད་: {0} + ཡིག་གཟུགས་: {0} + {0} + + + + [ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ \u0F72 \u0F74 \u0F7A \u0F7C \u0F90 \u0F91 \u0F92 \u0F94 \u0F97 \u0F99 \u0F9F \u0FA0 \u0FA1 \u0FA3 \u0FA4 \u0FA5 \u0FA6 \u0FA8 \u0FA9 \u0FAA \u0FAB \u0FAD \u0FB1 \u0FB2 \u0FB3 \u0FB5 \u0FB6 \u0FB7] + [\u0F84 ཊ ཋ ཌ ཎ \u0F7E ཥ \u0F80 \u0F7B \u0F7D \u0F9A \u0F9B \u0F9C \u0F9E \u0FBA \u0FBB \u0FBC] + [ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ལ ཤ ས ཧ ཨ] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] ༼ ༽ § @ * / \& # † ‡ ༄ ༅ ༆ ༈ ༉ ༊ ࿐ ࿑ ༒ ࿒ ࿓ ࿔ ༶ ྾ ྿ ༌ ། ༎ ༏ ༐ ༑ ༔ ༴] + {0}་་་་ + ་་་་{0} + {0}་་་་་་ {1} + ? + + + + + + + + + + + + + + EEEE, G སྤྱི་ལོ་y MMMM ཚེས་dd + + + + + G སྤྱི་ལོ་y MMMM ཚེས་ dd + + + + + G སྤྱི་ལོ་y ཟླ་MMM ཚེས་dd + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + G y + G y སྤྱི་ཟླ་MMM + G y MMM d + གཟའ་E, G ལོy ཟླ་MMM ཚེ་d + ཆུ་ཚོད་h a + ཆུ་ཚོད་HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M-d + E, M-d + སྤྱི་LLL + སྤྱི་LLL ཚེ་d + E, སྤྱི་LLL ཚེ་d + mm:ss + G y + G y + G y-M + G y-M-d + E, G y-M-d + G y སྤྱི་ཟླ་MMM + G y MMM d + གཟའ་E, G ལོy ཟླ་MMM ཚེ་d + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + སྤྱི་ཟླ་M–M + + + སྤྱི་ཟླ་M ཚེས་dd/dd + སྤྱི་ཟླ་MM ཚེས་dd–ཟླ་MM ཚེས་dd + + + E, སྤྱི་ཟླ་MM ཚེས་dd–ཟླ་MM ཚེས་dd + E, སྤྱི་ཟླ་MM ཚེས་dd–ཟླ་MM ཚེས་dd + + + སྤྱི་LLL–LLL + + + སྤྱི་ཟླ་MM ཚེས་d–d + སྤྱི་ཟླ་MM ཚེས་d–ཟླ་MM ཚེས་d + + + E, སྤྱི་ཟླ་MM ཚེས་d – E, ཟླ་MM ཚེས་d + E, སྤྱི་ཟླ་MM ཚེས་d – E, ཟླ་MM ཚེས་d + + + G y–y + + + G y-MM – MM + G y-MM – y-MM + + + G y-MM-dd – dd + G y-MM-dd – MM-dd + G y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + སྤྱི་ཟླ་MMM/MMM, y + G y-MM – y-MM + + + G y-MM-d – d + G y-MM-dd – MM-d + G y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + G y-སྤྱི་ཟླ་MM – MM + G y-MM – y-MM + + + + + + + + + + + + + + + + + + ༡༠ + ༡༡ + 12 + + + + + + 4 + + + + + 9 + ༡༠ + ༡༡ + ༡༢ + + + ཟླ་དངཔ་ + ཟླ་གཉིས་པ་ + ཟླ་གསུམ་པ་ + ཟླ་བཞི་པ་ + ཟླ་ལྔ་པ་ + ཟླ་དྲུག་པ + ཟླ་བདུན་པ་ + ཟླ་བརྒྱད་པ་ + ཟླ་དགུ་པ་ + ཟླ་བཅུ་པ་ + ཟླ་བཅུ་གཅིག་པ་ + ཟླ་བཅུ་གཉིས་པ་ + + + + + ཟླ་༡ + ཟླ་༢ + ཟླ་༣ + ཟླ་༤ + ཟླ་༥ + ཟླ་༦ + ཟླ་༧ + ཟླ་༨ + ཟླ་༩ + ཟླ་༡༠ + ཟླ་༡༡ + ཟླ་༡༢ + + + + + + + + + + + + ༡༠ + ༡༡ + ༡༢ + + + སྤྱི་ཟླ་དངཔ་ + སྤྱི་ཟླ་གཉིས་པ་ + སྤྱི་ཟླ་གསུམ་པ་ + སྤྱི་ཟླ་བཞི་པ + སྤྱི་ཟླ་ལྔ་པ་ + སྤྱི་ཟླ་དྲུག་པ + སྤྱི་ཟླ་བདུན་པ་ + སྤྱི་ཟླ་བརྒྱད་པ་ + སྤྱི་ཟླ་དགུ་པ་ + སྤྱི་ཟླ་བཅུ་པ་ + སྤྱི་ཟླ་བཅུ་གཅིག་པ་ + སྤྱི་ཟླ་བཅུ་གཉིས་པ་ + + + + + + + ཟླ་ + མིར་ + ལྷག་ + ཕུར་ + སངས་ + སྤེན་ + ཉི་ + + + ཟླ + མིར + ལྷག + ཕུར + སངྶ + སྤེན + ཉི + + + ཟླ་ + མིར་ + ལྷག་ + ཕུར་ + སངས་ + སྤེན་ + ཉི་ + + + གཟའ་ཟླ་བ་ + གཟའ་མིག་དམར་ + གཟའ་ལྷག་པ་ + གཟའ་ཕུར་བུ་ + གཟའ་པ་སངས་ + གཟའ་སྤེན་པ་ + གཟའ་ཉི་མ་ + + + + + ཟླ་ + མིར་ + ལྷག་ + ཕུར་ + སངས་ + སྤེན་ + ཉི་ + + + ཟླ + མིར + ལྷག + ཕུར + སངྶ + སྤེན + ཉི + + + ཟླ་ + མིར་ + ལྷག་ + ཕུར་ + སངས་ + སྤེན་ + ཉི་ + + + གཟའ་ཟླ་བ་ + གཟའ་མིག་དམར་ + གཟའ་ལྷག་པ་ + གཟའ་ཕུར་བུ་ + གཟའ་པ་སངས་ + གཟའ་སྤེན་པ་ + གཟའ་ཉི་མ་ + + + + + + + བཞི་དཔྱ་༡ + བཞི་དཔྱ་༢ + བཞི་དཔྱ་༣ + བཞི་དཔྱ་༤ + + + + + + + + + བཞི་དཔྱ་དང་པ་ + བཞི་དཔྱ་གཉིས་པ་ + བཞི་དཔྱ་གསུམ་པ་ + བཞི་དཔྱ་བཞི་པ་ + + + + + བཞི་དཔྱ་༡ + བཞི་དཔྱ་༢ + བཞི་དཔྱ་༣ + བཞི་དཔྱ་༤ + + + + + + + + + བཞི་དཔྱ་དང་པ་ + བཞི་དཔྱ་གཉིས་པ་ + བཞི་དཔྱ་གསུམ་པ་ + བཞི་དཔྱ་བཞི་པ་ + + + + + + + སྔ་ཆ་ + ཕྱི་ཆ་ + + + སྔ་ཆ་ + ཕྱི་ཆ་ + + + + + + BCE + CE + + + + + + EEEE, སྤྱི་ལོ་y MMMM ཚེས་dd + + + + + སྤྱི་ལོ་y MMMM ཚེས་ dd + + + + + སྤྱི་ལོ་y ཟླ་MMM ཚེས་dd + + + + + y-MM-dd + + + + + + + ཆུ་ཚོད་ h སྐར་མ་ mm:ss a zzzz + + + + + ཆུ་ཚོད་ h སྐར་མ་ mm:ss a z + + + + + ཆུ་ཚོད་h:mm:ss a + + + + + ཆུ་ཚོད་ h སྐར་མ་ mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + G y + G y སྤྱི་ཟླ་MMM + G y MMM d + གཟའ་E, G ལོy ཟླ་MMM ཚེ་d + ཆུ་ཚོད་h a + ཆུ་ཚོད་HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M-d + E, M-d + སྤྱི་LLL + སྤྱི་LLL ཚེ་d + E, སྤྱི་LLL ཚེ་d + mm:ss + y + y-M + y-M-d + E, y-M-d + y སྤྱི་ཟླ་MMM + y MMM d + གཟའ་E, ལོy ཟླ་MMM ཚེ་d + y QQQ + y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + སྤྱི་ཟླ་M–M + + + སྤྱི་ཟླ་M ཚེས་dd/dd + སྤྱི་ཟླ་MM ཚེས་dd–ཟླ་MM ཚེས་dd + + + E, སྤྱི་ཟླ་MM ཚེས་dd–ཟླ་MM ཚེས་dd + E, སྤྱི་ཟླ་MM ཚེས་dd–ཟླ་MM ཚེས་dd + + + སྤྱི་LLL–LLL + + + སྤྱི་ཟླ་MM ཚེས་d–d + སྤྱི་ཟླ་MM ཚེས་d–ཟླ་MM ཚེས་d + + + E, སྤྱི་ཟླ་MM ཚེས་d – E, ཟླ་MM ཚེས་d + E, སྤྱི་ཟླ་MM ཚེས་d – E, ཟླ་MM ཚེས་d + + + y–y + + + y-MM – MM + y-MM – y-MM + + + y-MM-dd – dd + y-MM-dd – MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + སྤྱི་ཟླ་MMM/MMM, y + y-MM – y-MM + + + y-MM-d – d + y-MM-dd – MM-d + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-སྤྱི་ཟླ་MM – MM + y-MM – y-MM + + + + + + + + དུས་བསྐལ + + + ལོ + + ལོ་འཁོར་ {0} ནང་ + + + ལོ་འཁོར་ {0} ཧེ་མ་ + + + + ཟླ་ཝ་ + + ཟླཝ་ {0} ནང་ + + + ཟླཝ་ {0} ཧེ་མ་ + + + + བདུན་ཕྲག + + བངུན་ཕྲག་ {0} ནང་ + + + བངུན་ཕྲག་ {0} ཧེ་མ་ + + + + ཚེས་ + ཁ་ཉིམ + ཁ་ཙ་ + ད་རིས་ + ནངས་པ་ + གནངས་ཚེ + + ཉིནམ་ {0} ནང་ + + + ཉིནམ་ {0} ཧེ་མ་ + + + + བདུན་ཕྲག་གི་ཉིམ + + + སྔ་ཆ/ཕྱི་ཆ་ + + + ཆུ་ཚོད + + ཆུ་ཚོད་ {0} ནང་ + + + ཆུ་ཚོད་ {0} ཧེ་མ་ + + + + སྐར་མ + + སྐར་མ་ {0} ནང་ + + + སྐར་མ་ {0} ཧེ་མ་ + + + + སྐར་ཆཱ་ + + སྐར་ཆ་ {0} ནང་ + + + སྐར་ཆ་ {0} ཧེ་མ་ + + + + དུས་ཀུལ + + + + +HH:mm;-HH:mm + ཇི་ཨེམ་ཏི་{0} + ཇི་ཨེམ་ཊི་ + {0}་ཆུ་ཚོད། + {1}། ({0}་) + + མ་ཤེས་པའི་ཁྲོམ་སྡེ + + + ཨཱན་དོ་ར + + + ཀ་བྷུལ + + + ཨན་ཊི་གུ་ཝ་ + + + ཊ་ར་ནི + + + ལུ་ཝེན་ཌ + + + རཱོ་ཐེ་ར + + + ཕཱལ་མར + + + མའུ་སཱོན + + + ཌེ་ཝིས། + + + ཝོསི་ཊོཀ + + + བྷུའི་ནོས་ ཨའི་རིས + + + པ་གོ་ པ་གོ + + + ཝི་ཡེ་ན + + + ས་ར་ཡེ་བོ + + + བྷར་བེ་ཌོས + + + ཌཱ་ཀ + + + བྲ་སེལས + + + ཝ་གཱ་ཌུ་གུ + + + སོ་ཕི་ཡ + + + བྷ་རེན་ + + + བྷུ་ཇུམ་བྷུ་ར + + + བར་མུ་ད + + + བྷྲུ་ནའི + + + ལ་པཱཛ྄ + + + ན་སའོ + + + ཐིམ་ཕུག + + + གྷ་བྷོ་རོ་ནེ + + + མིནསཀ + + + བྷེ་ལིཛ + + + དའུ་སཱོན + + + ཨི་ནུ་ཝིཀ + + + དའུ་སཱོན་ ཀིརིཀ + + + ཨེཌ་མཱོན་ཊོན + + + སུ་ཨིཕཊ་ཀ་རེནཊ + + + ཀེམ་བིརིདཆ་ བའེ + + + རི་ཇི་ན + + + རི་སོ་ལིའུཊ + + + རཱེ་ནི་རི་ཝར + + + རེན་ཀིན་ ཨིན་ལེཊ + + + ཨ་ཏི་ཀོ་ཀཱན + + + ཐན་ཌར་ བའེ + + + ནི་པི་གཱོན + + + ཊོ་རོན་ཊོ + + + པེང་ནིར་ཏུང + + + མཱོངཀ་ཊོན + + + ཧ་ལི་ཕེགསི + + + གཱུསི་ བའེ + + + ཨིསི་ཊེཊ་ ཇཱོནསི་ + + + ཀོ་ཀོསི + + + ཀིན་ཤ་ས + + + བྷང་གི + + + བྷྲ་ཛ་བིལ + + + ཛུ་རིཆ + + + རཱ་རོ་་ཏོང་ག + + + སཱན་ཊི་ཡ་གྷོ + + + བྷོ་ག་ཊ + + + ཀོས་ཊ་རི་ཀ + + + ཀེཔ་བཱཌ + + + ཀིརིསཊ་མསི + + + པྲག + + + བྷར་ལིན + + + ཇི་བྷུ་ཊི + + + ཀོ་པེན་ཧེ་གེན + + + ཌོ་མི་ནི་ཀ + + + སཱན་ཊོ་ ཌོ་མིང་གྷོ + + + ཨལ་ཇི་ཡས + + + ཊཱ་ལཱིན + + + ཀཱའི་རོ + + + ཨཱས་མ་ར + + + མ་ཌེ་རེཌ + + + ཨ་ཌིས་ ཨ་བྷ་བྷ + + + ཧེལ་སིང་ཀི + + + ཕཱའེ་རོ་ + + + པེ་རིས + + + ལི་བྷྲ་བིལ + + + + བྲཱི་ཊིཤ་བྱཱར་དུས་ཆུ་ཚོད + + ལཱན་ཌཱན + + + ཨེཀ་ཀྲ + + + བྷཱན་ཇུལ + + + ཀོ་ནཀ་རི + + + མ་ལ་བྷོ + + + ཨེ་ཐེནས་ + + + སཱའུཐ་ཇོ་ཇཱ + + + གྷོ་ཊ་མ་ལ + + + བྷི་སཱའུ + + + གྷ་ཡ་ན + + + ཊེ་གུ་སི་གཱལ་པ + + + བྷུ་ཌ་པེསཊ + + + ཇཱ་ཀར་ཊ + + + པཱོན་ཊའེ་ནཀ + + + ཇ་ཡ་པུ་ར + + + + ཨཱ་ཡརིཤ་བྱཱར་དུས་ཆུ་ཚོད + + ཌབ་ལིན + + + ཀཱོལ་ཀ་ཊ + + + ཊེ་རཱན + + + རེ་ཁི་ཡ་བིཀ + + + ཇཱ་མའེ་ཀ + + + ནཱའི་རོ་བི + + + ཀོ་མོ་རོ + + + བི་ཡཱན་ཊི་ཡཱན + + + བ་དུདས + + + ཀོ་ལོམ་བྷོ + + + མཱན་རོ་བི་ཡ + + + མ་ས་རུ + + + བིལ་ནི་ཡཱས + + + ལག་སམ་བྷཀ + + + རི་གྷ + + + ཏྲི་པོ་ལི + + + མོ་ན་ཀོ + + + ཀི་ཤི་ནཱཝ + + + ཨཱན་ཏ་ན་ན་དི་བོ + + + མེ་ཇུ་རོ + + + བྷ་མ་ཀོ + + + རང་གྷུན + + + སཱའེ་ཕཱན + + + ནུ་ཨཀ་ཤའོཊ + + + མོ་རི་ཤཱས + + + མཱལ་དིབས + + + ཏིའུ་ཝ་ན + + + མེཀ་སི་ཀོ་ སི་ཊི + + + ཀོ་ལ་ ལམ་པུར + + + མ་པུ་ཏོ + + + ཝིནཌ་ཧུཀ + + + ནི་ཡ་མེ + + + ཨམས་ཊར་ཌམ + + + ཨོས་ལོ + + + ཀཱཊ་མཱན་ཌུ + + + ནཱཝ་རུ + + + པ་ན་མ + + + ལི་མ + + + གེམ་བིཡར + + + ཀ་ར་ཅི + + + ཝར་སོ + + + པ་ལཱཝ + + + ཨ་སུན་སི་འོན + + + བྷུ་ཀ་རེསཊ + + + མཱོས་ཀོ + + + ཀི་གྷ་ལི + + + ཁཱར་ཊུམ + + + ཨིས་ཊོཀ་ཧོལམ + + + ཌཱ་ཀར + + + མོ་གཱ་ཌི་ཤུ + + + པ་ར་མ་རི་བྷོ + + + སཝ་ ཊོ་མེ + + + ཨེལ་ སཱལ་བ་ཌོ + + + འུམ་བྷ་བྷ་ནི + + + ཀིར་གུ་ལིན + + + ལོ་མེ + + + ཕ་ཀའོ་ཕོ + + + ཊུ་ནིས྄ + + + ཏོང་ག་ཏ་པུ + + + ཕུ་ན་ཕུ་ཊི + + + ཀེམ་པ་ལ + + + མིཌ་ཝེ + + + ཇཱོནསི་ཊོན + + + ཝེཀ + + + ཡ་ཀུ་ཏཏ + + + ཅི་ཀཱ་གོ + + + མོན་ཊེ་བྷི་ཌིའོ + + + ཀ་ར་ཀཱས + + + ཨ་པི་ཡ + + + ལུ་སཱ་ཀ + + + ཧ་རཱ་རེ + + + + ཨཕ་ག་ནི་ས྄ཏཱནཆུ་ཚོད + + + + + དབུས་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོད + + + + + ཤར་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོད + + + + + ལྷོ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོད + + + + + ནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་ཚད་ལྡན་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཨཕ་རི་ཀཱ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨ་ལསི་ཀ་ཆུ་ཚོད + ཨ་ལསི་ཀ་ཚད་ལྡན་ཆུ་ཚོད + ཨ་ལསི་ཀ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཨེ་མ་ཛཱོན་ཆུ་ཚོད + ཨེ་མ་ཛཱོན་ཚད་ལྡན་ཆུ་ཚོད + ཨེ་མ་ཛཱོན་བྱཱར་དུས་ཆུ་ཚོད + + + + + བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཚད་ལྡན་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་དབུས་ཕྱོགས་ཉིན་སྲུང་ཆུ་ཚོད + + + + + བྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཚད་ལྡན་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་ཤར་ཕྱོགས་ཉིན་སྲུང་ཆུ་ཚོད + + + + + བྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཚད་ལྡན་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་མའུ་ཊེན་ཉིན་སྲུང་ཆུ་ཚོད + + + + + བྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཚད་ལྡན་ཆུ་ཚོད + བྱང་ཨ་མི་རི་ཀ་པེ་སི་ཕིག་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཨ་རེ་བྷི་ཡན་ཆུ་ཚོད + ཨ་རེ་བྷི་ཡན་ཚད་ལྡན་ཆུ་ཚོད + ཨ་རེ་བྷི་ཡན་སྲུང་ཆུ་ཚོད + + + + + ཨར་ཇེན་ཊི་ན་ཆུ་ཚོད + ཨར་ཇེན་ཊི་ན་ཚད་ལྡན་ཆུ་ཚོད + ཨར་ཇེན་ཊི་ན་བྱཱར་དུས་ཆུ་ཚོད + + + + + ནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་ཚད་ལྡན་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཨར་ཇེན་ཊི་ན་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨར་མི་ནི་ཡ་ཆུ་ཚོད + ཨར་མི་ནི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + ཨར་མི་ནི་ཡ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨེཊ་ལེན་ཊིཀ་ཆུ་ཚོད + ཨེཊ་ལེན་ཊིཀ་ཚད་ལྡན་ཆུ་ཚོད + ཨེཊ་ལེན་ཊིཀ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད + དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + དབུས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + བུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད + དབུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + དབུས་ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཤར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད + ཤར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + ཤར་ཕྱོགས་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཨཱོས་ཊྲེལ་ལི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཨ་ཛར་བྷའི་ཇཱན་ཆུ་ཚོད + ཨ་ཛར་བྷའི་ཇཱན་ཚད་ལྡན་ཆུ་ཚོད + ཨ་ཛར་བྷའི་ཇཱན་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨེ་ཛོརས་ཆུ་ཚོད + ཨེ་ཛོརས་ཚད་ལྡན་ཆུ་ཚོད + ཨེ་ཛོརས་བྱཱར་དུས་ཆུ་ཚོད + + + + + བངྒ་ལ་དེཤ་ཆུ་ཚོད + བངྒ་ལ་དེཤ་ཚད་ལྡན་ཆུ་ཚོད + བངྒ་ལ་དེཤ་བྱཱར་དུས་ཆུ་ཚོད + + + + + འབྲུག་ཡུལ་ཆུ་ཚོད + + + BT + + + + + བྷོ་ལི་བི་ཡ་ཆུ་ཚོད + + + + + བྲ་ཛི་ལི་ཡ་ཆུ་ཚོད + བྲ་ཛི་ལི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + བྲ་ཛི་ལི་ཡ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཀེཔ་བཱཌ་ཆུ་ཚོད + ཀེཔ་བཱཌ་ཚད་ལྡན་ཆུ་ཚོད + ཀེཔ་བཱཌ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཅི་ལི་ཆུ་ཚོད + ཅི་ལི་ཚད་ལྡན་ཆུ་ཚོད + ཅི་ལི་བྱཱར་དུས་ཆུ་ཚོད + + + + + རྒྱ་ནག་ཆུ་ཚོད + རྒྱ་ནག་ཚད་ལྡན་ཆུ་ཚོད + རྒྱ་ནག་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཁི་རིསྟ་མེས་མཚོ་གླིང་ཆུ་ཚོད + + + + + ཀོ་ལོམ་བྷི་ཡ་ཆུ་ཚོད + ཀོ་ལོམ་བྷི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + ཀོ་ལོམ་བྷི་ཡ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཀིའུ་བྷ་ཆུ་ཚོད + ཀིའུ་བྷ་ཚད་ལྡན་ཆུ་ཚོད + ཀིའུ་བྷ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཨིསི་ཊར་ཨཱའི་ལེནཌ་ཆུ་ཚོད + ཨིསི་ཊར་ཨཱའི་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད + ཨིསི་ཊར་ཨཱའི་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨེ་ཀུ་ཌཽ་ཆུ་ཚོད + + + + + དབུས་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོད + དབུས་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོད + དབུས་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཤར་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོད + ཤར་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོད + ཤར་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོད + + + + + ནུབ་ཕྱོགས་ཡུ་རོ་པེན་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཡུ་རོ་པེན་ཚད་ལྡན་ཆུ་ཚོད + ནུབ་ཕྱོགས་ཡུ་རོ་པེན་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་ཆུ་ཚོད + ཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་ཚད་ལྡན་ཆུ་ཚོད + ཕལཀ་ལེནཌ་ཨཱའི་ལེནཌས་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཕིརེནཅ་གི་ཡ་ན་ཆུ་ཚོད + + + + + ག་ལ་པ་གོསི་ཆུ་ཚོད + + + + + ཇཽ་ཇཱ་ཆུ་ཚོད + ཇཽ་ཇཱ་ཚད་ལྡན་ཆུ་ཚོད + ཇཽ་ཇཱ་བྱཱར་དུས་ཆུ་ཚོད + + + + + གིརིན་ཝིཆ་ལུ་ཡོད་པའི་ཆུ་ཚོད + + + + + ཤར་ཕྱོགས་གིརིན་ལེནཌ་ཆུ་ཚོད + ཤར་ཕྱོགས་གིརིན་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད + ཤར་ཕྱོགས་གིརིན་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ནུབ་ཕྱོགས་གིརིན་ལེནཌ་ཆུ་ཚོད + ནུབ་ཕྱོགས་གིརིན་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད + ནུབ་ཕྱོགས་གིརིན་ལེནཌ་བྱཱར་དུས་ཆུ་ཚོད + + + + + གཱལཕི་ཆུ་ཚོད + + + + + གུ་ཡ་ན་ཆུ་ཚོད + + + + + ཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཆུ་ཚོད + ཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཚད་ལྡན་ཆུ་ཚོད + ཧ་ཝའི་-ཨེ་ལིའུ་ཤེན་ཉིན་སྲུང་ཆུ་ཚོད + + + + + རྒྱ་གར་ཆུ་ཚོད + + + + + རྒྱ་གར་གྱི་རྒྱ་མཚོ་ཆུ་ཚོད + + + + + ཨིན་ཌོ་ཅཱའི་ན་ཆུ་ཚོད + + + + + དབུས་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོད + + + + + ཤར་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོད + + + + + ནུབ་ཕྱོགས་ཨིན་ཌོ་ནེ་ཤི་ཡ་ཆུ་ཚོད + + + + + ཨི་རཱན་ཆུ་ཚོད + ཨི་རཱན་ཚད་ལྡན་ཆུ་ཚོད + ཨི་རཱན་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཨར་ཀུཙི་ཆུ་ཚོད + ཨར་ཀུཙི་ཚད་ལྡན་ཆུ་ཚོད + ཨར་ཀུཙི་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨིས་རེལ་ཆུ་ཚོད + ཨིས་རེལ་ཚད་ལྡན་ཆུ་ཚོད + ཨིས་རེལ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཇ་པཱན་ཆུ་ཚོད + ཇ་པཱན་ཚད་ལྡན་ཆུ་ཚོད + ཇ་པཱན་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཀོ་རི་ཡ་ཆུ་ཚོད + ཀོ་རི་ཡ་ཚད་ལྡན་ཆུ་ཚོད + ཀོ་རི་ཡ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཀརསི་ནོ་ཡརསཀི་ཆུ་ཚོད + ཀརསི་ནོ་ཡརསཀི་ཚད་ལྡན་ཆུ་ཚོད + ཀརསི་ནོ་ཡརསཀི་བྱཱར་དུས་ཆུ་ཚོད + + + + + མ་གྷ་དཱན་ཆུ་ཚོད + མ་གྷ་དཱན་ཚད་ལྡན་ཆུ་ཚོད + མ་གྷ་དཱན་བྱཱར་དུས་ཆུ་ཚོད + + + + + མཱལ་དིབས་ཆུ་ཚོད + + + + + མོ་རི་ཤཱས་ཆུ་ཚོད + མོ་རི་ཤཱས་ཚད་ལྡན་ཆུ་ཚོད + མོ་རི་ཤཱས་བྱཱར་དུས་ཆུ་ཚོད + + + + + མཽས་ཀོ་ཆུ་ཚོད + མཽས་ཀོ་ཚད་ལྡན་ཆུ་ཚོད + མཽས་ཀོ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ནེ་པཱལ་ཆུ་ཚོད + + + + + ནིའུ་ཛི་ལེནཌ་ཆུ་ཚོད + ནིའུ་ཛི་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད + ནིའུ་ཛི་ལེནཌ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ནིའུ་ཕའུནཌ་ལེནཌ་ཆུ་ཚོད + ནིའུ་ཕའུནཌ་ལེནཌ་ཚད་ལྡན་ཆུ་ཚོད + ནིའུ་ཕའུནཌ་ལེནཌ་ཉིན་སྲུང་ཆུ་ཚོད + + + + + ཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཆུ་ཚོད + ཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་ཚད་ལྡན་ཆུ་ཚོད + ཕར་ནེན་ཌོ་ ཌི་ ནོ་རཱོན་ཧ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ནོ་བོ་སི་བིརསཀི་ཆུ་ཚོད + ནོ་བོ་སི་བིརསཀི་ཚད་ལྡན་ཆུ་ཚོད + ནོ་བོ་སི་བིརསཀི་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཨོམསཀི་ཆུ་ཚོད + ཨོམསཀི་ཚད་ལྡན་ཆུ་ཚོད + ཨོམསཀི་བྱཱར་དུས་ཆུ་ཚོད + + + + + པ་ཀི་ས྄ཏཱན་ཆུ་ཚོད + པ་ཀི་ས྄ཏཱན་ཚད་ལྡན་ཆུ་ཚོད + པ་ཀི་ས྄ཏཱན་བྱཱར་དུས་ཆུ་ཚོད + + + + + པ་ར་གུ་ཝའི་ཆུ་ཚོད + པ་ར་གུ་ཝའི་ཚད་ལྡན་ཆུ་ཚོད + པ་ར་གུ་ཝའི་བྱཱར་དུས་ཆུ་ཚོད + + + + + པ་རུ་ཆུ་ཚོད + པ་རུ་ཚད་ལྡན་ཆུ་ཚོད + པ་རུ་བྱཱར་དུས་ཆུ་ཚོད + + + + + པའི་རི་དང་མི་ཀི་ལཱོན་ཆུ་ཚོད + པའི་རི་དང་མི་ཀི་ལཱོན་ཚད་ལྡན་ཆུ་ཚོད + པའི་རི་དང་མི་ཀི་ལཱོན་ཉིན་སྲུང་ཆུ་ཚོད + + + + + རི་ཡུ་ནི་ཡཱན་ཆུ་ཚོད + + + + + ས་ཁ་ལིན་ཆུ་ཚོད + ས་ཁ་ལིན་ཚད་ལྡན་ཆུ་ཚོད + ས་ཁ་ལིན་བྱཱར་དུས་ཆུ་ཚོད + + + + + སེ་ཤཱལས་ཆུ་ཚོད + + + + + སུ་རི་ནཱམ་ཆུ་ཚོད + + + + + ཡུ་རུ་གུ་ཝཱའི་ཆུ་ཚོད + ཡུ་རུ་གུ་ཝཱའི་ཚད་ལྡན་ཆུ་ཚོད + ཡུ་རུ་གུ་ཝཱའི་བྱཱར་དུས་ཆུ་ཚོད + + + + + བེ་ནི་ཛུ་ཝེ་ལ་ཆུ་ཚོད + + + + + བ་ལ་ཌི་བོསི་ཏོཀ་ཆུ་ཚོད + བ་ལ་ཌི་བོསི་ཏོཀ་ཚད་ལྡན་ཆུ་ཚོད + བ་ལ་ཌི་བོསི་ཏོཀ་བྱཱར་དུས་ཆུ་ཚོད + + + + + བཱོལ་གོ་གིརེཌ་ཆུ་ཚོད + བཱོལ་གོ་གིརེཌ་ཚད་ལྡན་ཆུ་ཚོད + བཱོལ་གོ་གིརེཌ་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཡ་ཀུཙིཀི་ཆུ་ཚོད + ཡ་ཀུཙིཀི་ཚད་ལྡན་ཆུ་ཚོད + ཡ་ཀུཙིཀི་བྱཱར་དུས་ཆུ་ཚོད + + + + + ཡེ་ཀ་ཏེ་རིན་བརག་ཆུ་ཚོད + ཡེ་ཀ་ཏེ་རིན་བརག་ཚད་ལྡན་ཆུ་ཚོད + ཡེ་ཀ་ཏེ་རིན་བརག་བྱཱར་དུས་ཆུ་ཚོད + + + + + + tibt + + tibt + + + . + , + ; + % + + + - + E + + + NaN + + + . + , + དང་ + % + + + - + E + + གྲངས་མེད + ཨང་མད + + + + + #,##,##0.### + + + + + སྟོང་ཕྲག 0 + ཁྲི་ཕྲག 0 + འབུམ་ཕྲག 0 + ས་ཡ་ 0 + བྱེ་བ་ 0 + དུང་ཕྱུར་ 0 + དུང་ཕྱུར་ 00 + དུང་ཕྱུར་བརྒྱ་ 0 + དུང་ཕྱུར་སྟོང 0 + དུང་ཕྱུར་ཁྲི་ 0 + དུང་ཕྱུར་འབུམ་ 0 + དུང་ཕྱུར་ས་ཡ་ 0 + + + + + + + #E0 + + + + + + + #,##,##0 % + + + + + + + ¤#,##,##0.00 + + + {0} {1} + + + + ཡུ་ནཱའི་ཊེཌ་ ཨ་རབ་ ཨེ་མེ་རེཊས་ཀྱི་དངུལ་ ཌིར་ཧཱམ + + + ཨཕ་གཱན་གྱི་དངུལ་ ཨཕ་ག་ནི + + + ཨཱོས་ཊྲེ་ལི་ཡ་གི་དངུལ་ ཌོ་ལར + AU$ + + + བྷང་ལ་དེཤ་གི་དངུལ་ ཏ་ཀ + + + བར་མུ་ཌ་གི་དངུལ་ ཌོ་ལར + + + བྲ་ཛིལ་གྱི་དངུལ་ རེ་ཡལ + R$ + + + དངུལ་ཀྲམ + Nu. + + + ཀེ་ན་ཌ་གི་དངུལ་ ཌོ་ལར + CA$ + + + སུ་ཡིས་ཀྱི་དངུལ་ ཕྲངཀ + + + ཅི་ལི་གི་དངུལ་ པེ་སོ + + + རྒྱ་ནག་གི་དངུལ་ ཡུ་ཝཱན + CN¥ + + + ཀོ་ལོམ་བྷི་ཡ་གི་དངུལ་ པེ་སོ + + + ཀིའུ་བྷ་གི་དངུལ་ པེ་སོ + + + ཌེན་མཱཀ་གི་དངུལ་ ཀྲོན + + + ཨཱལ་ཇི་རི་ཡ་གི་དངུལ་ ཌའི་ནར + + + ཨི་ཇིབཊ་གི་དངུལ་ པ་འུནཌ + + + ཡུ་རོ༌དངུལ་ + + + + བྲི་ཊིཤ་ པ་འུནཌ་ ཨིས་ཊར་ལིང + £ + + + ཧོང་ཀོང་གི་དངུལ་ ཌོ་ལར + HK$ + + + ཨིན་ཌོ་ནེ་ཤི་ཡ་གི་དངུལ་ རུ་པི་ཡ + + + ཨིས་རེལ་གྱི་དངུལ་གསརཔ་ ཤེ་ཀེལ + ILS + + + རྒྱ་གར་གྱི་དངུལ་ རུ་པི + + + + ཨི་རཱཀ་གི་དངུལ་ ཌི་ན + + + ཨི་རཱན་གྱི་དངུལ་ རི་ཨཱལ + + + ཨཱཡིས་ལེནཌ་གི་དངུལ་ ཀྲོ་ན + + + ཇཱ་མཻ་ཀ་གི་དངུལ་ ཌོ་ལར + + + ཇོར་ཌན་གྱི་དངུལ་ ཌི་ན + + + ཇཱ་པཱན་གྱི་དངུལ་ ཡེན + JP¥ + + + ཀེན་ཡ་གི་དངུལ་ ཤི་ལིང + + + ཀེམ་བྷོ་ཌི་ཡ་གི་དངུལ་ རི་ཨཱལ + + + ནོརཐ་ ཀོ་རི་ཡ་གི་དངུལ་ ཝོན + + + སཱའུཐ་ ཀོ་རི་ཡ་གི་དངུལ་ ཝོན + KR₩ + + + ཀུ་ཝེཊ་གི་དངུལ་ ཌི་ན + + + ཀ་ཛགས་ཏཱན་གྱི་དངུལ་ ཏེང་གེ + + + ལཱ་ཝོས་ཀྱི་དངུལ་ ཀིཔ + + + ལེ་བ་ནོན་གྱི་དངུལ་ པ་འུནཌ + + + ཤྲི་ ལང་ཀ་གི་དངུལ་ རུ་པི + + + ལཱའི་བེ་རི་ཡ་གི་དངུལ་ ཌོ་ལར + + + ལི་བི་ཡ་གི་དངུལ་ ཌི་ན + + + མོ་རོ་ཀོ་གི་དངུལ་ ཌིར་ཧཱམ + + + མི་ཡཱན་མར་གྱི་དངུལ་ ཅཱཏ + + + སོག་པོའི་དངུལ་ ཏུ་གྲིཀ + + + མཱལ་དིབས་ཀྱི་དངུལ་ རུ་ཕི་ཡ + + + མེཀ་སི་ཀོ་གི་དངུལ་ པེ་སོ + MX$ + + + མ་ལེ་ཤི་ཡ་གི་དངུལ་ རིང་གིཊ + + + ནོར་ཝེ་གི་དངུལ་ ཀྲོ་ན + + + བལ་པོའི་དངུལ་ རུ་པི + + + ནིའུ་ཛི་ལེནཌ་གི་དངུལ་ ཌོ་ལར + NZ$ + + + ཨོ་མཱན་གྱི་དངུལ་ རི་ཨཱལ + + + པ་ན་མ་གི་དངུལ་ བཱལ་བོ་ཝ + + + པ་རུ་གི་དངུལ་ ནུ་བོ་ སཱོལ + + + ཕི་ལི་པིནས་གྱི་དངུལ་ པེ་སོ + + + པ་ཀིས་ཏཱན་གྱི་དངུལ་ རུ་པི + + + པོ་ལེནཌ་ཀྱི་དངུལ ཛ྄ལོ་ཊི + + + ཀ་ཊར་གྱི་དངུལ་ རི་ཨཱལ + + + ཨུ་རུ་སུ་གི་དངུལ་ རུ་བཱལ + + + སཱཝ་དིའི་དངུལ་ རི་ཡཱལ + + + སེ་ཤཱལས་ཀྱི་དངུལ་ རུ་པི + + + སུའི་ཌེན་གྱི་དངུལ་ ཀྲོ་ན + + + སིང་ག་པོར་གྱི་དངུལ་ ཌོ་ལར + + + སི་རི་ཡ་གི་དངུལ་ པ་འུནཌ + + + ཐཱའི་ལེནཌ་གི་དངུལ་ བཱཏ + TH฿ + + + ཏ་ཇི་ཀིས་ཏཱན་གྱི་དངུལ་ སོ་མོ་ནི + + + ཊཱར་ཀི་གི་དངུལ་ ལི་ར + + + ཊཱའི་ཝཱན་གི་དངུལ ཌོ་ལར + NT$ + + + ཊཱན་ཛཱ་ནི་ཡ་གི་དངུལ་ ཤི་ལིང + + + ཡུ་གྷེན་ཌ་གི་དངུལ་ ཤི་ལིང + + + ཡུ་ཨེས་ ཌོ་ལར + US$ + + + ཡུ་རུ་གུ་ཝའི་གི་དངུལ་ པེ་སོ + + + ཨུས་བེ་ཀིས་ཏཱན་གྱི་དངུལ་ སོམ + + + བེ་ནི་ཛུ་ཝེ་ལ་གི་དངུལ་ བོ་ལི་བར + + + བེཊ་ནཱམ་གྱི་དངུལ་ ཌོང + + + XAF + + + མ་ཤེས་པའི་དངུལ + + + སཱའུཐ་ ཨཕ་རི་ཀ་གི་དངུལ་ རཱནད + + + + + + + ཉིན་ཞག་ {0} + + + ཆུ་ཚོད་ {0} + + + སྐར་མ་ {0} + + + ཟླཝ་ {0} + + + སྐར་ཆ་ {0} + + + བངུན་ཕྲག་ {0} + + + ལོ་འཁོར་ {0} + + + + + + {0} དང་ {1} + {0} དང་ {1} + {0} དང་ {1} + {0} དང་ {1} + + + + + ཨིན་:ཨ + མེན་:མ + + + + diff --git a/library/Zend/Locale/Data/dz_BT.xml b/library/Zend/Locale/Data/dz_BT.xml new file mode 100755 index 000000000..e5e5312aa --- /dev/null +++ b/library/Zend/Locale/Data/dz_BT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ebu.xml b/library/Zend/Locale/Data/ebu.xml new file mode 100755 index 000000000..64a05cd29 --- /dev/null +++ b/library/Zend/Locale/Data/ebu.xml @@ -0,0 +1,764 @@ + + + + + + + + + + + + Kĩakan + Kĩamhari + Kĩarabu + Kĩmbelarusi + Kĩbulgaria + Kĩbangla + Kĩcheki + Kĩnjeremani + Kĩembu + Kĩngriki + Kĩthungu + Kĩhispania + Kĩanjemi + Kĩfaransa + Kĩhausa + Kĩhindĩ + Kĩhungari + Kĩindonesia + Kĩigbo + Kĩitaliano + Kĩnjapani + Kĩjava + Kĩkambodia + Kĩkorea + Kĩmalesia + Kĩburma + Kĩnepali + Kĩholanzi + Kĩpunjabi + Kĩpolandi + Kĩreno + Kĩromania + Kĩrusi + Kĩnyarwanda + Kĩsomali + Kĩswidi + Kĩtamil + Kĩtailandi + Kĩturuki + Kĩukrania + Kĩurdu + Kĩvietinamu + Kĩyoruba + Kĩchina + Kĩzulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z] + [A B C D E F G H I Ĩ J K L M N O P Q R S T U Ũ V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Mbe + Kai + Kat + Kan + Gat + Gan + Mug + Knn + Ken + Iku + Imw + Igi + + + Mweri wa mbere + Mweri wa kaĩri + Mweri wa kathatũ + Mweri wa kana + Mweri wa gatano + Mweri wa gatantatũ + Mweri wa mũgwanja + Mweri wa kanana + Mweri wa kenda + Mweri wa ikũmi + Mweri wa ikũmi na ũmwe + Mweri wa ikũmi na Kaĩrĩ + + + + + M + K + K + K + G + G + M + K + K + I + I + I + + + + + + + Kma + Tat + Ine + Tan + Arm + Maa + NMM + + + Kiumia + Njumatatu + Njumaine + Njumatano + Aramithi + Njumaa + NJumamothii + + + + + K + N + N + N + A + M + N + + + + + + + K1 + K2 + K3 + K4 + + + Kuota ya mbere + Kuota ya Kaĩrĩ + Kuota ya kathatu + Kuota ya kana + + + + + + + KI + UT + + + + + + Mbere ya Kristo + Thutha wa Kristo + + + MK + TK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + d/M/y + E, M/d/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ivinda + + + Mwaka + + + Mweri + + + Kiumia + + + Mũthenya + Ĩgoro + Ũmũnthĩ + Rũciũ + + + Mũthenya kiumia-inĩ + + + Ithaa + + + Ndagĩka + + + Sekondi + + + Gĩthaa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dora ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Ii:I + Ka:K + + + + diff --git a/library/Zend/Locale/Data/ebu_KE.xml b/library/Zend/Locale/Data/ebu_KE.xml new file mode 100755 index 000000000..e17f948f0 --- /dev/null +++ b/library/Zend/Locale/Data/ebu_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ee.xml b/library/Zend/Locale/Data/ee.xml new file mode 100755 index 000000000..e7eca2e6a --- /dev/null +++ b/library/Zend/Locale/Data/ee.xml @@ -0,0 +1,5541 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abkhaziagbe + adyghegbe + afrikaangbe + aghemgbe + blugbe + amhariagbe + arabiagbe + assamegbe + asagbe + asturiagbe + avariagbe + aymargbe + azerbaijangbe + bashkigbe + basaagbe + bamugbe + ghomalagbe + belarusiagbe + bembagbe + benagbe + bafutgbe + bulgariagbe + bislamagbe + komgbe + bambaragbe + bengalgbe + tibetagbe + bretongbe + bodogbe + bosniagbe + akoosiagbe + bulugbe + medumbagbe + katalagbe + Sebuanogbe + kamorrogbe + tsukesegbe + tsetsniagbe + tsɛkgbe + walesgbe + denmarkgbe + germaniagbe + austriatɔwo ƒe germaniagbe + swizerlanɖ germaniagbe kɔkɔtɔ + zamagbe + dualagbe + divehgbe + dzola-fonyigbe + dzongkhagbe + embugbe + eʋegbe + efigbe + grisigbe + yevugbe + australiatɔwo ƒe yevugbe + kanadatɔwo ƒe yevugbe + britaintɔwo ƒe yevugbe + u.s.dukɔmetɔwo ƒe yevugbe + esperantogbe + spaniagbe + latin amerikatɔwo ƒe spaniagbe + iberiatɔwo ƒe spaniagbe + estoniagbe + basqugbe + ewondogbe + persiagbe + fangbe + fulagbe + finlanɖgbe + filipingbe + fidzigbe + faroegbe + fransegbe + kanadatɔwo ƒe fransegbe + swizerlanɖtɔwo ƒe fransegbe + ɣetoɖoƒe frisiagbe + irelanɖgbe + gɛgbe + skɔtlanɖ gaeliagbe + gilbertgbe + galatagbe + guarangbe + swizerlanɖtɔwo ƒe germaniagbe + gujarati + hausagbe + hawaigbe + hebrigbe + hindigbe + hiligenɔgbe + hiri motugbe + kroatiagbe + haitigbe + hungarigbe + armeniagbe + ibibiogbe + indonesiagbe + igbogbe + ilikogbe + ingusigbe + icelanɖgbe + italiagbe + dzapangbe + dzavangbe + gɔgiagbe + kabardiagbe + cape verdegbe + kongogbe + khasigbe + kunyamagbe + kazakhstangbe + kakogbe + kalaalisugbe + khmergbe + kannadagbe + koreagbe + konkaniagbe + kosraeagbe + kanuriagbe + karakay-bakargbe + kashmirgbe + bafiagbe + kurdiagbe + kumikagbe + kirghistangbe + latin + lahndagbe + laksembɔggbe + lezghiagbe + lingala + laogbe + lithuaniagbe + luba-katangagbe + luba-lulugbe + luyiagbe + latviagbe + mafagbe + maitiligbe + moktsiagbe + malagasegbe + makuwa-mitogbe + marshalgbe + maorgbe + makedoniagbe + malayagbe + mongoliagbe + marathiagbe + malaygbe + maltagbe + mundangbe + gbegbɔgblɔ sɔgbɔwo + burmagbe + myenegbe + erziyagbe + naurugbe + nɔweigbe bokmål + dziehe ndebelegbe + nepalgbe + niuegbe + hɔlandgbe + flemiagbe + kwasiogbe + nɔweigbe ninɔsk + ngiemboongbe + nɔweigbe + anyiehe ndebelegbe + dziehe sothogbe + nuergbe + nyanjagbe + oriyagbe + ossetiagbe + pundzabgbe + pangsinagbe + papiamentogbe + paluagbe + polandgbe + ponpeiagbe + pashtogbe + pɔtugalgbe + braziltɔwo ƒe portugalgbe + iberiatɔwo ƒe portugalgbe + kwetsuagbe + romanshgbe + rundigbe + romaniagbe + rombogbe + rɔtsiagbe + ruwandagbe + rwagbe + sanskrigbe + sakagbe + santaligbe + sangugbe + sindhgbe + dziehe samigbe + sangogbe + serbo-croatiagbe + sinhalgbe + slovakiagbe + sloveniagbe + samoagbe + shonagbe + somaliagbe + albaniagbe + serbiagbe + swatgbe + anyiehe sothogbe + sudangbe + swedengbe + swahili + komorogbe + tamilgbe + telegugbe + tetumgbe + tadzikistangbe + tailandgbe + tigrinyagbe + tɛkmengbe + tokelaugbe + tagalogbe + tswanagbe + tongagbe + tok pisigbe + tɛkigbe + tsongagbe + tatargbe + tuvalugbe + tasawakgbe + tahitigbe + tuviniagbe + udmurtgbe + uighurgbe + ukraingbe + gbegbɔgblɔ manya + urdugbe + uzbekistangbe + vaigbe + vendagbe + vietnamgbe + walsegbe + waraygbe + wolofgbe + xhosagbe + yapesigbe + yangbengbe + yembagbe + yorubagbe + cantongbe + zhuangbe + kinagbe + tsainagbe + blema tsainagbe + zulugbe + gbegbɔgblɔ manɔmee + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + xexeme + Afrika nutome + Dziehe Amerika nutome + Anyiehe Amerika nutome + Oceania nutome + Ɣetoɖoƒelɔƒo Afrika nutome + Titina Amerika nutome + Ɣedzeƒe Afrika nutome + Dziehe Afrika nutome + Titina Afrika nutome + Anyiehelɔƒo Afrika nutome + Amerika nutome + Dziehelɔƒo Amerika nutome + Karibbea nutome + Ɣedzeƒe Asia nutome + Anyiehelɔƒo Asia nutome + Anyiehe Ɣedzeƒe Afrika nutome + Anyiehelɔƒo Europa nutome + Australia kple New Zealand nutome + Melanesia nutome + Mikronesia + Pɔlinesia nutome + Asia nutome + Titina Asia nutome + Ɣetoɖoƒelɔƒo Asia nutome + Europa nutome + Ɣedzeƒe Europa nutome + Dziehelɔƒo Europa nutome + Ɣetoɖoƒelɔƒo Europa nutome + Latin Amerika nutome + Ascension ƒudomekpo nutome + Andorra nutome + United Arab Emirates nutome + Afghanistan nutome + ́Antigua kple Barbuda nutome + Anguilla nutome + Albania nutome + Armenia nutome + Nedalands Antilis nutome + Angola nutome + Antartica nutome + Argentina nutome + Amerika Samoa nutome + Austria nutome + Australia nutome + Aruba nutome + Åland ƒudomekpo nutome + Azerbaijan nutome + Bosnia kple Herzergovina nutome + Barbados nutome + Bangladesh nutome + Belgium nutome + Burkina Faso nutome + Bulgaria nutome + Bahrain nutome + Burundi nutome + Benin nutome + Saint Barthélemy nutome + Bermuda nutome + Brunei nutome + Bolivia nutome + Karibbeatɔwo ƒe Nedalanɖs nutome + Brazil nutome + Bahamas nutome + Bhutan nutome + Bouvet ƒudomekpo nutome + Botswana nutome + Belarus nutome + Belize nutome + Kanada nutome + Kokos (Kiling) fudomekpo nutome + Kongo Kinshasa nutome + Kongo demokratik repɔblik nutome + Titina Afrika repɔblik nutome + Kongo Brazzaville nutome + Kongo repɔblik nutome + Switzerland nutome + Kote d’Ivoire nutome + Ivory Kost nutome + Kook ƒudomekpo nutome + Tsile nutome + Kamerun nutome + Tsaina nutome + Kolombia nutome + Klipaton ƒudomekpo nutome + Kosta Rika nutome + Kuba nutome + Kape Verde nutome + Kurakao nutome + Kristmas ƒudomekpo nutome + Saiprus nutome + Tsɛk repɔblik nutome + Germania nutome + Diego Garsia nutome + Dzibuti nutome + Denmark nutome + Dominika nutome + Dominika repɔblik nutome + Algeria nutome + Keuta and Melilla nutome + Ekuadɔ nutome + Estonia nutome + Egypte nutome + Ɣetoɖoƒe Sahara nutome + Eritrea nutome + Spania nutome + Etiopia nutome + Europa Wɔɖeka nutome + Finland nutome + Fidzi nutome + Falkland ƒudomekpowo nutome + Falkland ƒudomekpowo (Islas Malvinas) nutome + Mikronesia nutome + Faroe ƒudomekpowo nutome + Frans nutome + Gabɔn nutome + United Kingdom nutome + Grenada nutome + Georgia nutome + Frentsi Gayana nutome + Guernse nutome + Ghana nutome + Gibraltar nutome + Grinland nutome + Gambia nutome + Guini nutome + Guadelupe nutome + Ekuatorial Guini nutome + Grisi nutome + Anyiehe Georgia kple Anyiehe Sandwich ƒudomekpowo nutome + Guatemala nutome + Guam nutome + Gini-Bisao nutome + Guyanadu + Hɔng Kɔng SAR Tsaina nutome + Hɔng Kɔng nutome + Heard kple Mcdonald ƒudomekpowo nutome + Hondurasdu + Kroatsia nutome + Haiti nutome + Hungari nutome + Kanari ƒudomekpowo nutome + Indonesia nutome + Ireland nutome + Israel nutome + Aisle of Man nutome + India nutome + Britaintɔwo ƒe india ƒudome nutome + iraqdukɔ + Iran nutome + Aiseland nutome + Italia nutome + Dzɛse nutome + Dzamaika nutome + Yordan nutome + Dzapan nutome + Kenya nutome + Kirgizstan nutome + Kambodia nutome + Kiribati nutome + Komoros nutome + Saint Kitis kple Nevis nutome + Dziehe Korea nutome + Anyiehe Korea nutome + Kuwait nutome + Kayman ƒudomekpowo nutome + Kazakstan nutome + Laos nutome + Lebanɔn nutome + Saint Lusia nutome + Litsenstein nutome + Sri Lanka nutome + Liberia nutome + Lɛsoto nutome + Lituania nutome + Lazembɔg nutome + Latvia nutome + Libya nutome + Moroko nutome + Monako nutome + Moldova nutome + Montenegro nutome + Saint Martin nutome + Madagaska nutome + Marshal ƒudomekpowo nutome + Makedonia nutome + Makedonia (FYROM) nutome + Mali nutome + Myanmar (Burma) nutome + Mongolia nutome + Macau SAR Tsaina nutome + Macau nutome + Dziehe Marina ƒudomekpowo nutome + Martiniki nutome + Mauritania nutome + Montserrat nutome + Malta nutome + mauritiusdukɔ + maldivesdukɔ + Malawi nutome + Meksico nutome + Malaysia nutome + Mozambiki nutome + Namibia nutome + New Kaledonia nutome + Niger nutome + Norfolk ƒudomekpo nutome + Nigeria nutome + Nicaraguadukɔ + Nedalands nutome + Norway nutome + Nepal nutome + Nauru nutome + Niue nutome + New Zealand nutome + Oman nutome + Panama nutome + Peru nutome + Frentsi Pɔlinesia nutome + Papua New Gini nutome + Filipini nutome + Pakistan nutome + Poland nutome + Saint Pierre kple Mikelɔn nutome + Pitkairn ƒudomekpo nutome + Puerto Riko nutome + Palestinia nutome + Portugal nutome + Palau nutome + Paragua nutome + Katar nutome + Outlaying Oceania nutome + Réunion nutome + Romania nutome + Serbia nutome + Russia nutome + Rwanda nutome + Saudi Arabia nutome + Solomon ƒudomekpowo nutome + Seshɛls nutome + Sudan nutome + Sweden nutome + Singapɔr nutome + Saint Helena nutome + Slovenia nutome + Svalbard kple Yan Mayen nutome + Slovakia nutome + Sierra Leone nutome + San Marino nutome + Senegal nutome + Somalia nutome + Suriname nutome + Anyiehe Sudan nutome + São Tomé kple Príncipe nutome + El Salvadɔ nutome + Sint Maarten nutome + Siria nutome + Swaziland nutome + Tristan da Kunha nutome + Tɛks kple Kaikos ƒudomekpowo nutome + Tsad nutome + Anyiehe Franseme nutome + Togo nutome + Tailand nutome + Tajikistan nutome + Tokelau nutome + Timor-Leste nutome + Ɣedzeƒe Timɔ nutome + Tɛkmenistan nutome + Tunisia nutome + Tonga nutome + Tɛki nutome + Trinidad kple Tobago nutome + Tuvalu nutome + Taiwan nutome + Tanzania nutome + Ukraine nutome + Uganda nutome + U.S. Minor Outlaying ƒudomekpowo nutome + USA nutome + uruguaydukɔ + Uzbekistan nutome + Vatikandu nutome + Saint Vincent kple Grenadine nutome + Venezuela nutome + Britaintɔwo ƒe Virgin ƒudomekpowo nutome + U.S. Vɛrgin ƒudomekpowo nutome + Vietnam nutome + Vanuatu nutome + Wallis kple Futuna nutome + Samoa nutome + Yemen nutome + Mayotte nutome + Anyiehe Afrika nutome + Zambia nutome + Zimbabwe nutome + nutome manya + + + ALALC9 + BISCAYA + + + kalenda + tutuɖo + gaɖuɖu + nɔmbawo + + + india ƒe arabia digitwo + india ƒe arabia digitwo dzi yiyi + armeniatɔwo ƒe numeralwo + armeniatɔwo ƒe numeral suetɔwo + balina digitwo + bengalitɔwo ƒe digitwo + blema chinatɔwo ƒe ɖoɖomɔ nu + buddha subɔlawo ƒe kalenda + tsam digitwo + chinatɔwo ƒe kalenda + coptia kalenda + devanagari digitwo + nuɖoɖo ɖe nyagɔmeɖegbalẽ ƒe ɖoɖomɔ nu + nuɖoɖo ɖe unicode ƒe ɖoɖo nu + ethiopia numeralwo + ethiopiatɔwo ƒe kalenda + ethiopia amate alemtɔwo ƒe kalenda + digit kekeme blibotɔwo + chinagbe yeye ƒe ɖoɖomɔ nu + georgiatɔwo ƒe numeralwo + gregoria kalenda + greecetɔwo ƒe nemeralwo + greecetɔwo ƒe numeral suetɔwo + gujarati digitwo + gurmukhi digitwo + chinatɔwo ƒe nɔmba madeblibowo + chinatɔwo ƒe numeralwo + chinatɔwo ƒe gadzikpɔ numeralwo + blema chinatɔwo ƒe numeralwo + blema chinatɔwo ƒe gadzikpɔ numeralwo + hebritɔwo ƒe numeralwo + hebritɔwo ƒe kalenda + india dukɔ ƒe kalenda + islam subɔlawo ƒe kalenda + islam subɔlawo ƒe sivil kalenda + japantɔwo ƒe kalenda + dzava digitwo + japantɔwo ƒe numeralwo + japantɔwo ƒe gadzikpɔnumeralwo + kali digitwo + khmertɔwo ƒe nɔmbawo + kannadatɔwo ƒe digitwo + lana digitwo + lanatham digitwo + laotɔwo ƒe digitwo + nɔmbawo le latingbe ƒe ɖoɖo nu + leptsa digitwo + limbu digitwo + malaya digitwo + mongolia digitwo + meetei mayek digitwo + myanmar digitwo + myanmar shan digitwo + n'ko digitwo + ol tsiki digitwo + oriya digitwo + persiatɔwo ƒe kalenda + fonegbalẽ me ɖoɖomɔ nu + pinyin ɖoɖomɔ nu + nugbugbɔtoɖo ƒe ɖoɖomɔ nu + china repɔbliktɔwo ƒe kalenda tso 1912 + romatɔwo ƒe numeralwo + romatɔwo ƒe numeral suetɔwo + saurashtra digitwo + nudidi hena zazã gbadza + nudidi le hangul ƒe ɖoɖo gbãtɔ nu + stroke ɖoɖomɔ nu + sundana digitwo + tai lue digit yeye wo + tamil numeralwo + tamil digitwo + telegu digitwo + thai digitwo + tibet digitwo + blema ɖoɖomɔ nu + ɖoɖomɔnutɔxɛ manɔŋu stroke ƒe ɖoɖo nu + vaii digitwo + + + metric + uk + us + + + gbegbɔgblɔ {0} + gbeŋɔŋlɔ {0} + memama {0} + + + + [a á à ã b d ɖ e é è ẽ ɛ {ɛ\u0301} {ɛ\u0300} {ɛ\u0303} f ƒ g ɣ h x i í ì ĩ k l m n ŋ o ó ò õ ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0303} p r s t u ú ù ũ v ʋ w y z] + [ă â å ä ā æ c ç ĕ ê ë ĭ î ï j ñ ŏ ô ö ø œ q ŭ û ü ÿ] + [A B D Ɖ E Ɛ F Ƒ G Ɣ H X I K L M N Ŋ O Ɔ P R S T U V Ʋ W Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] \{ \} § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + ... + + + + + + + + + + + + + a 'ga' h + a 'ga' h: 'aɖabaƒoƒo' mm + a 'ga' h: 'aɖabaƒoƒo' mm:ss + 'ga' mm:ss + + + + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kele + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + + + EEEE, U MMMM dd 'lia' + + + + + U MMMM d 'lia' + + + + + U MMM d 'lia' + + + + + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + foa + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + foa + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + + + + + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + ƒoa + + + dzove + dzodze + tedoxe + afɔfie + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + + + + + + + EEEE, MMMM d 'lia' y G + + + + + MMMM d 'lia' y G + + + + + MMM d 'lia', y G + + + + + M/d/y GGGGG + + + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + d + E d + y G + MMM y G + MMM d 'lia', y G + E, MMM d 'lia' y G + a 'ga' h + HH + a 'ga' h:mm + HH:mm + a 'ga' h:mm:ss + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d 'lia' + E, MMM d 'lia' + MMMM d 'lia' + E, MMMM d 'lia' + 'aɖabaƒoƒo' mm:ss + y G + y G + M/y G + M/d/y G + E, M/d/y G + MMM y G + MMM d 'lia', y G + E, MMM d 'lia' y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d–d + + + a h – a h + a h–h + + + HH–HH + + + a 'ga' h:mm - a 'ga' h:mm + a 'ga' h:mm - 'ga' h:mm + a 'ga' h:mm – 'ga' h:mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + a 'ga' h:mm – a 'ga' h:mm v + a 'ga' h:mm–h:mm v + a h:mm–h:mm v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + a h – a h v + a 'ga' h–h v + + + HH–HH v + + + 'ɣleti' M 'lia' – 'ɣleti' M 'lia' + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d 'lia' – d 'lia' + MMM d 'lia' – MMM d 'lia' + + + E, MMM d 'lia' – E, MMM d 'lia' + E, MMM d 'lia' – E, MMM d 'lia' + + + M/y – M/y G + M/y – M/y G + + + M/d/y – M/d/y G + M/d/y – M/d/y G + M/d/y – M/d/y G + + + E, M/d/y – E, M/d/y G + E, M/d/y – E, M/d/y G + E, M/d/y – E, M/d/y G + + + MMM–MMM y G + MMM y – MMM y G + + + MMM d 'lia' – d 'lia' , y G + MMM d 'lia' – MMM d 'lia', y G + MMM d 'lia' , y – MMM d 'lia', y G + + + E, MMM d 'lia' – E, MMM d 'lia', y G + E, MMM d 'lia' – E, MMM d 'lia', y G + E, MMM d 'lia', y – E, MMM d 'lia', y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + d + d + t + a + d + m + s + d + a + k + a + d + + + dzove + dzodze + tedoxe + afɔfĩe + dama + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + d + d + t + a + d + m + s + d + a + k + a + d + + + dzove + dzodze + tedoxe + afɔfĩe + dama + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + + + kɔs + dzo + bla + kuɖ + yaw + fiɖ + mem + + + k + d + b + k + y + f + m + + + kɔs + dzo + bla + kuɖ + yaw + fiɖ + mem + + + kɔsiɖa + dzoɖa + blaɖa + kuɖa + yawoɖa + fiɖa + memleɖa + + + + + kɔs + dzo + bla + kuɖ + yaw + fiɖ + mem + + + k + d + b + k + y + f + m + + + kɔs + dzo + bla + kuɖ + yaw + fiɖ + mem + + + kɔsiɖa + dzoɖa + blaɖa + kuɖa + yawoɖa + fiɖa + memleɖa + + + + + + + k1 + k2 + k3 + k4 + + + 1 + 2 + 3 + 4 + + + kɔta gbãtɔ + kɔta evelia + kɔta etɔ̃lia + kɔta enelia + + + + + k1 + k2 + k3 + k4 + + + kɔta gbãtɔ + kɔta evelia + kɔta etɔ̃lia + kɔta enelia + + + + + + + ŋ + ɣ + + + ɣetrɔ + ŋdi + ŋdɔ + fɔŋli + fiẽ + ŋdi + + ɣetrɔ + + + + + + Hafi Yesu Va Do ŋgɔ + Yesu Ŋɔli + + + hY + + + + hY + + + + + + + EEEE, MMMM d 'lia' y + + + + + MMMM d 'lia' y + + + + + MMM d 'lia', y + + + + + M/d/yy + + + + + + + a h:mm:ss zzzz + + + + + a 'ga' h:mm:ss z + + + + + a 'ga' h:mm:ss + + + + + a 'ga' h:mm + + + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + d + E d + y G + MMM y G + MMM d 'lia', y G + E, MMM d 'lia' y G + a 'ga' h + HH + a 'ga' h:mm + HH:mm + a 'ga' h:mm:ss + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d 'lia' + E, MMM d 'lia' + MMMM d 'lia' + E, MMMM d 'lia' + 'aɖabaƒoƒo' mm:ss + y + M/y + M/d/y + E, M/d/y + MMM y + MMM d 'lia', y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + {0} - {1} + + d–d + + + a h – a h + a h–h + + + HH–HH + + + a 'ga' h:mm - a 'ga' h:mm + a 'ga' h:mm - 'ga' h:mm + a 'ga' h:mm – 'ga' h:mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + a 'ga' h:mm – a 'ga' h:mm v + a 'ga' h:mm–h:mm v + a h:mm–h:mm v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + a h – a h v + a 'ga' h–h v + + + HH–HH v + + + 'ɣleti' M 'lia' – 'ɣleti' M 'lia' + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d 'lia' – d 'lia' + MMM d 'lia' – MMM d 'lia' + + + E, MMM d 'lia' – E, MMM d 'lia' + E, MMM d 'lia' – E, MMM d 'lia' + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM–MMM y + MMM y – MMM y + + + MMM d 'lia' – d 'lia' , y + MMM d 'lia' – MMM d 'lia', y + MMM d 'lia' , y – MMM d 'lia', y + + + E, MMM d 'lia' – E, MMM d 'lia', y + E, MMM d 'lia' – E, MMM d 'lia', y + E, MMM d 'lia', y – E, MMM d 'lia', y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + siamlɔm + dasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + sia + dea + any + kel + ade + dzm + foa + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + siamlɔm + dasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + ƒoave + + + + + + ŋdi + + + + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + + + + + EEEE, MMMM dd 'lia', G y + + + + + MMMM d 'lia', G y + + + + + MMM d 'lia', G y + + + + + dd-MM-GGGGG yy + + + + + + a 'ga' h:mm:ss + E MMM d 'lia' + 'aɖabaƒoƒo' mm:ss + + + + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + dzv + dzd + ted + afɔ + dam + mas + sia + dea + any + kel + ade + dzm + + + dzove + dzodze + tedoxe + afɔfiẽ + damɛ + masa + siamlɔm + deasiamime + anyɔnyɔ + kele + adeɛmekpɔxe + dzome + + + + + + + + hafi R.O.C. + + + + + + EEEE, MMMM dd 'lia', G y + + + + + MMMM d 'lia', G y + + + + + MMM d 'lia', G y + + + + + dd-MM-GGGGG y + + + + + + a 'ga' h + a 'ga' h:mm + a 'ga' h:mm:ss + E MMM d 'lia' + 'aɖabaƒoƒo' mm:ss + + + + + + + ŋɔli + + + ƒe + ƒe si va yi + ƒe sia + ƒe si gbɔ na + + le ƒe {0} me + le ƒe {0} wo me + + + ƒe {0} si va yi + ƒe {0} si wo va yi + + + + ɣleti + ɣleti si va yi + ɣleti sia + ɣleti si gbɔ na + + le ɣleti {0} me + le ɣleti {0} wo me + + + ɣleti {0} si va yi + ɣleti {0} si wo va yi + + + + kɔsiɖa ɖeka + kɔsiɖa si va yi + kɔsiɖa sia + kɔsiɖa si gbɔ na + + le kɔsiɖa {0} me + le kɔsiɖa {0} wo me + + + kɔsiɖa {0} si va yi + kɔsiɖa {0} si wo va yi + + + + ŋkeke + nyitsɔ si va yi + etsɔ si va yi + egbe + etsɔ si gbɔna + nyitsɔ si gbɔna + + le ŋkeke {0} me + le ŋkeke {0} wo me + + + ŋkeke {0} si va yi + ŋkeke {0} si wo va yi + + + + kɔsiɖa me ŋkeke + + + kɔsiɖa si va yi + kɔsiɖa sia + kɔsiɖa si gbɔ na + + + dzoɖa si va yi + dzoɖa sia + dzoɖa si gbɔ na + + + blaɖa si va yi + blaɖa sia + blaɖa si gbɔ na + + + kuɖa si va yi + kuɖa sia + kuɖa si gbɔ na + + + yawoɖa si va yi + yawoɖa sia + yawoɖa si gbɔ na + + + fiɖa si va yi + fiɖa sia + fiɖa si gbɔ na + + + memleɖa si va yi + memleɖa sia + memleɖa si gbɔ na + + + ŋkekea me + + + gaƒoƒo + + le gaƒoƒo {0} me + le gaƒoƒo {0} wo me + + + gaƒoƒo {0} si va yi + gaƒoƒo {0} si wo va yi + + + + aɖabaƒoƒo + + le aɖabaƒoƒo {0} me + le aɖabaƒoƒo {0} wo me + + + aɖabaƒoƒo {0} si va yi + aɖabaƒoƒo {0} si wo va yi + + + + sekend + fifi + + le sekend {0} me + le sekend {0} wo me + + + sekend {0} si va yi + sekend {0} si wo va yi + + + + nutomegaƒoƒo + + + + +HH:mm;-HH:mm + {0} gaƒoƒo + + du manya + + + Andorra nutomegaƒoƒome + + + Dubai nutomegaƒoƒome + + + Kabul nutomegaƒoƒome + + + Antigua nutomegaƒoƒome + + + Anguilla nutomegaƒoƒome + + + Tirane nutomegaƒoƒome + + + Yerevan nutomegaƒoƒome + + + Luanda nutomegaƒoƒome + + + Rothera nutomegaƒoƒome + + + Palmer nutomegaƒoƒome + + + Syowa nutomegaƒoƒome + + + Mawson nutomegaƒoƒome + + + Davis nutomegaƒoƒome + + + Vostok nutomegaƒoƒome + + + Kasey nutomegaƒoƒome + + + Dumont d'Urville nutomegaƒoƒome + + + MacMurdo nutomegaƒoƒome + + + Rio Gallegos nutomegaƒoƒome + + + Mendoza nutomegaƒoƒome + + + San Dzuan nutomegaƒoƒome + + + Ushuaia nutomegaƒoƒome + + + La Rioha nutomegaƒoƒome + + + San Luis nutomegaƒoƒome + + + Katamaka nutomegaƒoƒome + + + Salta nutomegaƒoƒome + + + Dzudzoi nutomegaƒoƒome + + + Tukuman nutomegaƒoƒome + + + Kɔdoba nutomegaƒoƒome + + + Buenos Aires nutomegaƒoƒome + + + Pago Pago nutomegaƒoƒome + + + Vienna nutomegaƒoƒome + + + Perth nutomegaƒoƒome + + + Eucla nutomegaƒoƒome + + + Darwin nutomegaƒoƒome + + + Adelaide nutomegaƒoƒome + + + Broken Hill nutomegaƒoƒome + + + Kurrie nutomegaƒoƒome + + + Melbourne nutomegaƒoƒome + + + Hobart nutomegaƒoƒome + + + Lindeman nutomegaƒoƒome + + + Sidney nutomegaƒoƒome + + + Brisbane nutomegaƒoƒome + + + Lɔd Howe nutomegaƒoƒome + + + Aruba nutomegaƒoƒome + + + Mariehamn nutomegaƒoƒome + + + Baku nutomegaƒoƒome + + + Sarayevo nutomegaƒoƒome + + + Barbados nutomegaƒoƒome + + + Dhaka nutomegaƒoƒome + + + Brussels nutomegaƒoƒome + + + Ouagadugu nutomegaƒoƒome + + + Sofia nutomegaƒoƒome + + + Bahrain nutomegaƒoƒome + + + Budzumbura nutomegaƒoƒome + + + Pɔto-Novo nutomegaƒoƒome + + + St. Barthelemy nutomegaƒoƒome + + + Bermuda nutomegaƒoƒome + + + Brunei nutomegaƒoƒome + + + La Paz nutomegaƒoƒome + + + Eirunepe nutomegaƒoƒome + + + Rio Branko nutomegaƒoƒome + + + Pɔrto Velho nutomegaƒoƒome + + + Boa Vista nutomegaƒoƒome + + + Manaus nutomegaƒoƒome + + + Kuiaba nutomegaƒoƒome + + + Santarem nutomegaƒoƒome + + + Kampo Grande nutomegaƒoƒome + + + Belem nutomegaƒoƒome + + + Araguaina nutomegaƒoƒome + + + Sao Paulo nutomegaƒoƒome + + + Bahia nutomegaƒoƒome + + + Fortaleza nutomegaƒoƒome + + + Maseio nutomegaƒoƒome + + + Resife nutomegaƒoƒome + + + Noronha nutomegaƒoƒome + + + Nassau nutomegaƒoƒome + + + Timfu nutomegaƒoƒome + + + Gaborone nutomegaƒoƒome + + + Minsk nutomegaƒoƒome + + + Belize nutomegaƒoƒome + + + Dɔwson nutomegaƒoƒome + + + Whitehorse nutomegaƒoƒome + + + Inuvik nutomegaƒoƒome + + + Vankouver nutomegaƒoƒome + + + Dawson Krik nutomegaƒoƒome + + + Yellownaif nutomegaƒoƒome + + + Edmonton nutomegaƒoƒome + + + Swift Kurrent nutomegaƒoƒome + + + Kambridge Bay nutomegaƒoƒome + + + Regina nutomegaƒoƒome + + + Winnipeg nutomegaƒoƒome + + + Resolute nutomegaƒoƒome + + + Raini Riva nutomegaƒoƒome + + + Rankin Inlet nutomegaƒoƒome + + + Atikokannutomegaƒoƒome + + + Thunder Bay nutomegaƒoƒome + + + Nipigon nutomegaƒoƒome + + + Toronto nutomegaƒoƒome + + + Ikaluit nutomegaƒoƒome + + + Pangnirtung nutomegaƒoƒome + + + Moncton nutomegaƒoƒome + + + Halifaks nutomegaƒoƒome + + + Guse Bay nutomegaƒoƒome + + + Glaise Bay nutomegaƒoƒome + + + Blank-Sablon nutomegaƒoƒome + + + St. Yohannes nutomegaƒoƒome + + + Kokos nutomegaƒoƒome + + + Kinshasa nutomegaƒoƒome + + + Lubumbashi nutomegaƒoƒome + + + Bangui nutomegaƒoƒome + + + Brazzaville nutomegaƒoƒome + + + Zurich nutomegaƒoƒome + + + Abidzan nutomegaƒoƒome + + + Rarotonga nutomegaƒoƒome + + + Easter nutomegaƒoƒome + + + Santiago nutomegaƒoƒome + + + Doula nutomegaƒoƒome + + + Kashgar nutomegaƒoƒome + + + Urumqi nutomegaƒoƒome + + + Tsongking nutomegaƒoƒome + + + Shanghai nutomegaƒoƒome + + + Harbin nutomegaƒoƒome + + + Bogota nutomegaƒoƒome + + + Kɔsta Rika nutomegaƒoƒome + + + Havana nutomegaƒoƒome + + + Kape Verde nutomegaƒoƒome + + + Kurakao nutomegaƒoƒome + + + Kristmas nutomegaƒoƒome + + + Nikosia nutomegaƒoƒome + + + Prague nutomegaƒoƒome + + + Berlin nutomegaƒoƒome + + + Dzibuti nutomegaƒoƒome + + + Kopenhagen nutomegaƒoƒome + + + Dominika nutomegaƒoƒome + + + Santo Domingo nutomegaƒoƒome + + + Algiers nutomegaƒoƒome + + + Galapagos nutomegaƒoƒome + + + Guayakuil nutomegaƒoƒome + + + Tallinn nutomegaƒoƒome + + + Kairo nutomegaƒoƒome + + + El Aaiun nutomegaƒoƒome + + + Asmara nutomegaƒoƒome + + + Kanari nutomegaƒoƒome + + + Keuta nutomegaƒoƒome + + + Madrid nutomegaƒoƒome + + + Addis Ababa nutomegaƒoƒome + + + Helsinki nutomegaƒoƒome + + + Fidzi nutomegaƒoƒome + + + Stanley nutomegaƒoƒome + + + Tsuuk nutomegaƒoƒome + + + Pohnpei nutomegaƒoƒome + + + Kosrae nutomegaƒoƒome + + + Faroe nutomegaƒoƒome + + + Paris nutomegaƒoƒome + + + Libreville nutomegaƒoƒome + + + + Britain dzomeŋɔli gaƒoƒome + + London nutomegaƒoƒome + + + Grenada nutomegaƒoƒome + + + Tbilisi nutomegaƒoƒome + + + Kayenne nutomegaƒoƒome + + + Guernse nutomegaƒoƒome + + + Gɛ̃ nutomegaƒoƒome + + + Gibraltar nutomegaƒoƒome + + + Thule nutomegaƒoƒome + + + Godthab nutomegaƒoƒome + + + Skɔsbisund nutomegaƒoƒome + + + Danmarkshavn nutomegaƒoƒome + + + Bandzul nutomegaƒoƒome + + + Konakry nutomegaƒoƒome + + + Guadelupe nutomegaƒoƒome + + + Malabo nutomegaƒoƒome + + + Atens nutomegaƒoƒome + + + Anyiehe Georgia nutomegaƒoƒome + + + Guatemala nutomegaƒoƒome + + + Guam nutomegaƒoƒome + + + Bisao nutomegaƒoƒome + + + Gayana nutomegaƒoƒome + + + Hɔng Kɔng nutomegaƒoƒome + + + Tegukigalpa nutomegaƒoƒome + + + Zagreb nutomegaƒoƒome + + + Pɔrt-au-Princenutomegaƒoƒome + + + Budapest nutomegaƒoƒome + + + Dzakarta nutomegaƒoƒome + + + Pontianak nutomegaƒoƒome + + + Makassar nutomegaƒoƒome + + + Dzayapura nutomegaƒoƒome + + + + Irelanɖ dzomeŋɔli gaƒoƒome + + Dublin nutomegaƒoƒome + + + Yerusalem nutomegaƒoƒome + + + Aisle of Man nutomegaƒoƒome + + + Kolkata nutomegaƒoƒome + + + Tsagos nutomegaƒoƒome + + + Baghdad nutomegaƒoƒome + + + Tehran nutomegaƒoƒome + + + Reykjavik nutomegaƒoƒome + + + Roma nutomegaƒoƒome + + + Jɛse nutomegaƒoƒome + + + Dzamaika nutomegaƒoƒome + + + Amman nutomegaƒoƒome + + + Tokio nutomegaƒoƒome + + + Nairobi nutomegaƒoƒome + + + Bishkek nutomegaƒoƒome + + + Nɔm Penh nutomegaƒoƒome + + + Enderburi nutomegaƒoƒome + + + Kiritimati nutomegaƒoƒome + + + Tarawa nutomegaƒoƒome + + + Komoro nutomegaƒoƒome + + + St. Kitis nutomegaƒoƒome + + + Piongyang nutomegaƒoƒome + + + Seoul nutomegaƒoƒome + + + Kuwait nutomegaƒoƒome + + + Keman nutomegaƒoƒome + + + Aktau nutomegaƒoƒome + + + Oral nutomegaƒoƒome + + + Aktobe nutomegaƒoƒome + + + Kizilɔda nutomegaƒoƒome + + + Almati nutomegaƒoƒome + + + Vientiane nutomegaƒoƒome + + + Beirut nutomegaƒoƒome + + + St. Lusia nutomegaƒoƒome + + + Vaduz nutomegaƒoƒome + + + Kolombo nutomegaƒoƒome + + + Monrovia nutomegaƒoƒome + + + Maseru nutomegaƒoƒome + + + Vilnius nutomegaƒoƒome + + + Lazembɔg nutomegaƒoƒome + + + Riga nutomegaƒoƒome + + + Tripoli nutomegaƒoƒome + + + Kasablanka nutomegaƒoƒome + + + Monaco nutomegaƒoƒome + + + Tsisinau nutomegaƒoƒome + + + Podgorika nutomegaƒoƒome + + + Marigot nutomegaƒoƒome + + + Antananarivo nutomegaƒoƒome + + + Kwadzalein nutomegaƒoƒome + + + Skopie nutomegaƒoƒome + + + Bamako nutomegaƒoƒome + + + Rangoon nutomegaƒoƒome + + + Hovd nutomegaƒoƒome + + + Ulaanbaatar nutomegaƒoƒome + + + Tsoibalsan nutomegaƒoƒome + + + Macau nutomegaƒoƒome + + + Saipan nutomegaƒoƒome + + + Martinik nutomegaƒoƒome + + + Nouakchott nutomegaƒoƒome + + + Montserrat nutomegaƒoƒome + + + Malta nutomegaƒoƒome + + + Mauritius nutomegaƒoƒome + + + Maldives nutomegaƒoƒome + + + Blantaire nutomegaƒoƒome + + + Tihuana nutomegaƒoƒome + + + Hermosillo nutomegaƒoƒome + + + Mazatlan nutomegaƒoƒome + + + Tsihuahua nutomegaƒoƒome + + + Monterrey nutomegaƒoƒome + + + Meksikodugã nutomegaƒoƒome + + + Merida nutomegaƒoƒome + + + Kankun nutomegaƒoƒome + + + Kuala Lumpur nutomegaƒoƒome + + + Kutsing nutomegaƒoƒome + + + Maputo nutomegaƒoƒome + + + Windhoek nutomegaƒoƒome + + + Numea nutomegaƒoƒome + + + Niamey nutomegaƒoƒome + + + Nɔfɔlk nutomegaƒoƒome + + + Lagos nutomegaƒoƒome + + + Managua nutomegaƒoƒome + + + Amsterdam nutomegaƒoƒome + + + Oslo nutomegaƒoƒome + + + Kathmandu nutomegaƒoƒome + + + Nauru nutomegaƒoƒome + + + Niue nutomegaƒoƒome + + + Tsatham nutomegaƒoƒome + + + Muskat nutomegaƒoƒome + + + Panama nutomegaƒoƒome + + + Lima nutomegaƒoƒome + + + Markuesas nutomegaƒoƒome + + + Gambier nutomegaƒoƒome + + + Pɔrt Moresbynutomegaƒoƒome + + + Manila nutomegaƒoƒome + + + Karatsi nutomegaƒoƒome + + + Wɔsɔw nutomegaƒoƒome + + + Miquelon nutomegaƒoƒome + + + Pitkairn nutomegaƒoƒome + + + Puerto Riko nutomegaƒoƒome + + + Gaza nutomegaƒoƒome + + + Azores nutomegaƒoƒome + + + Madeira nutomegaƒoƒome + + + Lisbon nutomegaƒoƒome + + + Palau nutomegaƒoƒome + + + Asunsion nutomegaƒoƒome + + + Katar nutomegaƒoƒome + + + Reunion nutomegaƒoƒome + + + Bukarest nutomegaƒoƒome + + + Belgrade nutomegaƒoƒome + + + Kaliningrad nutomegaƒoƒome + + + Moscow nutomegaƒoƒome + + + Volgograd nutomegaƒoƒome + + + Samara nutomegaƒoƒome + + + Yekaterinburg nutomegaƒoƒome + + + Omsk nutomegaƒoƒome + + + Novosibirsk nutomegaƒoƒome + + + Krasnoyarsk nutomegaƒoƒome + + + Irkutsk nutomegaƒoƒome + + + Yakutsk nutomegaƒoƒome + + + Vladivostok nutomegaƒoƒome + + + Sakhalin nutomegaƒoƒome + + + Magadan nutomegaƒoƒome + + + Kamtsatka nutomegaƒoƒome + + + Anadir nutomegaƒoƒome + + + Kigali nutomegaƒoƒome + + + Riyadh nutomegaƒoƒome + + + Guadalkanal nutomegaƒoƒome + + + Mahe nutomegaƒoƒome + + + Khartoum nutomegaƒoƒome + + + Stockholm nutomegaƒoƒome + + + Singapore nutomegaƒoƒome + + + St. Helena nutomegaƒoƒome + + + Lubliana nutomegaƒoƒome + + + Longyearbiyen nutomegaƒoƒome + + + Bratislava nutomegaƒoƒome + + + Freetown nutomegaƒoƒome + + + San Marino nutomegaƒoƒome + + + Dakar nutomegaƒoƒome + + + Mogadishu nutomegaƒoƒome + + + Paramaribo nutomegaƒoƒome + + + Sao Tome nutomegaƒoƒome + + + El Salvadɔ nutomegaƒoƒome + + + Lowa Prins Kɔta nutomegaƒoƒome + + + Damaskus nutomegaƒoƒome + + + Mbabane nutomegaƒoƒome + + + Grand Tɛk nutomegaƒoƒome + + + Ndzamena nutomegaƒoƒome + + + Kerguelen nutomegaƒoƒome + + + Lome nutomegaƒoƒome + + + Bangkok nutomegaƒoƒome + + + Dutsanbe nutomegaƒoƒome + + + Fakaofo nutomegaƒoƒome + + + Dili nutomegaƒoƒome + + + Ashgabat nutomegaƒoƒome + + + Tunis nutomegaƒoƒome + + + Tongatapu nutomegaƒoƒome + + + Istanbul nutomegaƒoƒome + + + Pɔrt of Spain nutomegaƒoƒome + + + Funafuti nutomegaƒoƒome + + + Taipei nutomegaƒoƒome + + + Dar es Salam nutomegaƒoƒome + + + Uzhgorod nutomegaƒoƒome + + + Kiev nutmegaƒoƒome + + + Simferopol nutomegaƒoƒome + + + Zaporozhiye nutomegaƒoƒome + + + Kampala nutomegaƒoƒome + + + Midway nutomegaƒoƒome + + + Yohanneston nutomegaƒoƒome + + + Wake nutomegaƒoƒome + + + Adak nutomegaƒoƒome + + + Nome nutomegaƒoƒome + + + Honolulu nutomegaƒoƒome + + + Anchorage nutomegaƒoƒome + + + Yakutat nutomegaƒoƒome + + + Dzuneau nutomegaƒoƒome + + + Los Angeles nutomegaƒoƒome + + + Boise nutomegaƒoƒome + + + Foenix nutomegaƒoƒome + + + Denva nutomegaƒoƒome + + + Beulah, North Dakota nutomegaƒoƒome + + + New Salem, North Dakota nutomegaƒoƒome + + + Titina, North Dakota nutomegaƒoƒome + + + Tsikago nutomegaƒoƒome + + + Menomini nutomegaƒoƒome + + + Vinsennes, Indiana nutomegaƒoƒome + + + Petersburg, Indiana nutomegaƒoƒome + + + Telldugã, Indiana nutomegaƒoƒome + + + Knox, Indiana nutomegaƒoƒome + + + Winamak, Indiana nutomegaƒoƒome + + + Marengo, Indiana nutomegaƒoƒome + + + Indianapolis nutomegaƒoƒome + + + Louisville nutomegaƒoƒome + + + Vevay, Indiana nutomegaƒoƒome + + + Montisello, Kentaki nutomegaƒoƒome + + + Detrɔit nutomegaƒoƒome + + + New York nutomegaƒoƒome + + + Montevideo nutomegaƒoƒome + + + Samarkand nutomegaƒoƒome + + + Tashkent nutomegaƒoƒome + + + Vatikan nutomegaƒoƒome + + + St. Vincent nutomegaƒoƒome + + + Karakas nutomegaƒoƒome + + + Tɔtola nutomegaƒoƒome + + + St. Toma nutomegaƒoƒome + + + Ho Tsi Minh nutomegaƒoƒome + + + Efate nutomegaƒoƒome + + + Wallis nutomegaƒoƒome + + + Apia nutomegaƒoƒome + + + Aden nutomegaƒoƒome + + + Mayotte nutomegaƒoƒome + + + Yohannesburg nutomegaƒoƒome + + + Lusaka nutomegaƒoƒome + + + Harare nutomegaƒoƒome + + + + Eker gaƒoƒome + Eker gaƒoƒoɖoanyime + Eker dzomeŋɔli gaƒoƒome + + + + + Titina Afrika gaƒoƒome + + + CAT + + + + + Ɣedzeƒe Afrika gaƒoƒome + + + EAT + + + + + Anyiehe Afrika gaƒoƒome + + + SAST + + + + + Ɣetoɖoƒe Afrika gaƒoƒome + Ɣetoɖoƒe Afrika gaƒoƒoɖoanyime + Ɣetoɖoƒe Afrika dzomeŋɔli gaƒoƒome + + + WAT + WAT + WAST + + + + + Alaska gaƒoƒome + Alaska gaƒoƒoɖoanyime + Alaska ŋkekeme gaƒoƒome + + + + + Almati gaƒoƒome + Almati gaƒoƒoɖoanyime + Almati dzomeŋɔli gaƒoƒome + + + + + Amazon gaƒoƒome + Amazon gaƒoƒoɖoanyime + Amazon dzomeŋɔli gaƒoƒome + + + + + Titina Amerika gaƒoƒome + Titina Amerika gaƒoƒoɖoanyime + Titina Amerika ŋkekeme gaƒoƒome + + + + + Ɣedzeƒe Amerika gaƒoƒome + Ɣedzeƒe Amerika gaƒoƒoɖoanyime + Ɣedzeƒe Amerika ŋkekeme gaƒoƒome + + + + + Amerika Todzidukɔwo ƒe gaƒoƒome + Amerika Todzidukɔwo ƒe gaƒoƒoɖoanyime + Amerika Todzidukɔwo ƒe ŋkekme gaƒoƒome + + + + + Amerika Pasifik gaƒoƒome + Amerika Pasifik gaƒoƒoɖoanyime + Amerika Pasifik ŋkekeme gaƒoƒome + + + + + Anadir gaƒoƒome + Anadir gaƒoƒoɖoanyime + Anadir ŋkekeme gaƒoƒome + + + + + Aktau gaƒoƒome + Aktau gaƒoƒoɖoanyime + Aktau dzomeŋɔli gaƒoƒome + + + + + Aktobe gaƒoƒome + Aktobe gaƒoƒoɖoanyime + Akttobe gaƒoƒome + + + + + Arabia gaƒoƒome + Arabia gaƒoƒoɖoanyime + Arabia ŋkekeme gaƒoƒome + + + + + Argentina gaƒoƒome + Argentina gaƒoƒoɖoanyime + Argentina dzomeŋɔli gaƒoƒome + + + + + Ɣetoɖoƒe Argentina gaƒoƒome + Ɣetoɖoƒe Argentina gaƒoƒoɖoanyime + Ɣetoɖoƒe Argentina dzomeŋɔli gaƒoƒome + + + + + Armenia gaƒoƒome + Armenia gaƒoƒoɖoanyime + Armenia dzomeŋɔli gaƒoƒome + + + + + Atlantic gaƒoƒome + Atlantic gaƒoƒoɖoanyime + Atlantic ŋkekeme gaƒoƒome + + + + + Azerbaidzan gaƒoƒome + Azerbaidzan gaƒoƒoɖoanyime + Azerbaidzan dzomeŋɔli gaƒoƒome + + + + + Azores gaƒoƒome + Azores gaƒoƒoɖoanyime + Azores dzomeŋɔli gaƒoƒome + + + + + Bolivia gaƒoƒome + + + + + Brasilia gaƒoƒome + Brasilia gaƒoƒoɖoanyime + Brasilia dzomeŋɔli gaƒoƒome + + + + + Kep Verde gaƒoƒome + Kep Verde gaƒoƒoɖoanyime + Kep Verde dzomeŋɔli gaƒoƒome + + + + + Tsile gaƒoƒo me + Tsile gaƒoƒoɖoanyime + Tsile dzomeŋɔli gaƒoƒome + + + + + Tsaina gaƒoƒome + Tsaina gaƒoƒoɖoanyime + Tsaina ŋkekeme gaƒoƒome + + + + + Tsoibalsan gaƒoƒome + Tsoibalsan gaƒoƒoɖoanyime + Tsoibalsan dzomeŋɔli gaƒoƒome + + + + + Kolombia gaƒoƒome + Kolombia gaƒoƒoɖoanyime + Kolombia dzomeŋɔli gaƒoƒome + + + + + Kuba gaƒoƒome + Kuba gaƒoƒoɖoanyime + Kuba ŋkekeme gaƒoƒome + + + + + Easter Ƒudomekpodukɔ ƒe gaƒoƒome + Easter Ƒudomekpodukɔ ƒe gaƒoƒoɖoanyime + Easter Ƒudomekpodukɔ ƒe dzomeŋɔli gaƒoƒome + + + + + Ikuedɔ dzomeŋɔli gaƒoƒome + + + + + Titina Yuropa gaƒoƒome + Titina Yuropa gaƒoƒoɖoanyime + Titina Yuropa dzomeŋɔli gaƒoƒome + + + + + Ɣedzeƒe Yuropa gaƒoƒo me + Ɣedzeƒe Yuropa gaƒoƒoɖoanyime + Ɣedzeƒe Yuropa dzomeŋɔli gaƒoƒome + + + + + Ɣetoɖoƒe Yuropa gaƒoƒome + Ɣetoɖoƒe Yuropa gaƒoƒoɖoanyime + Ɣetoɖoƒe Yuropa dzomeŋɔli gaƒoƒome + + + + + Fɔlklanɖ Ƒudomekpodukɔ ƒe gaƒoƒome + Fɔlklanɖ Ƒudomekpodukɔ ƒe gaƒoƒoɖoanyime + Fɔlklanɖ Ƒudomekpodukɔ ƒe dzomeŋɔli gaƒoƒome + + + + + Frentsi Guiana gaƒoƒome + + + + + Galapagos gaƒoƒome + + + + + Dzɔdzia gaƒoƒome + Dzɔdzia gaƒoƒoɖoanyime + Dzɔdzia dzomeŋɔli gaƒoƒome + + + + + Grinwish gaƒoƒome + + + + + Ɣedzeƒe Grinlanɖ gaƒoƒome + Ɣedzeƒe Grinlanɖ gaƒoƒoɖoanyime + Ɣedzeƒe Grinlanɖ dzomeŋɔli gaƒoƒome + + + + + Ɣetoɖoƒe Grinlanɖ gaƒoƒome + Ɣetoɖoƒe Grinlanɖ gaƒoƒoɖoanyime + Ɣetoɖoƒe Grinlanɖ dzomeŋɔli gaƒoƒome + + + + + Gulf gaƒoƒome + + + + + Gayana gaƒoƒome + + + + + Hawaii-Aleutia gaƒoƒome + Hawaii-Aleutia gaƒoƒoɖoanyime + Hawaii-Aleutia ŋkekeme gaƒoƒome + + + + + Hɔng Kɔng gaƒoƒome + Hɔng Kɔng gaƒoƒoɖoanyi me + Hɔng Kɔng dzomeŋɔli gaƒoƒome + + + + + Hoved gaƒoƒome + Hoved gaƒoƒoɖoanyime + Hoved dzomeŋɔli gaƒoƒome + + + + + Irkusk gaƒoƒome + Irkusk gaƒoƒoɖoanyime + Irkusk dzomeŋɔli gaƒoƒome + + + + + Israel gaƒoƒome + Israel gaƒoƒoɖoanyime + Israel ŋkekeme gaƒoƒome + + + + + Dzapan gaƒoƒome + Dzapan gaƒoƒoɖanyime + Dzapan ŋkekeme gaƒoƒome + + + + + Petropavlovsk-Kamtsatski gaƒoƒome + Petropavlovsk-Kamtsatski gaƒoƒoɖoanyime + Petropavlovsk-Kamtsatski ŋkekeme gaƒoƒome + + + + + Ɣedzeƒe Kazakstan gaƒoƒome + + + + + Ɣetoɖoƒe Kazakstan gaƒoƒome + + + + + Korea gaƒoƒome + Korea gaƒoƒoɖoanyime + Korea ŋkekeme gaƒoƒome + + + + + Krasnoyarsk gaƒoƒome + Krasnoyarsk gaƒoƒoɖoanyime + Krasnoyarsk dzomeŋɔli gaƒoƒome + + + + + Kirgistan gaƒoƒome + + + + + Makau gaƒoƒome + Makau gaƒoƒoɖoanyime + Makau ŋkekeme gaƒoƒome + + + + + Magadan gaƒoƒome + Magadan gaƒoƒoɖoanyime + Magadan dzomeŋɔli gaƒoƒome + + + + + Mɔritius gaƒoƒome + Mɔritius gaƒoƒoɖoanyime + Mɔritius dzomeŋɔli gaƒoƒome + + + + + Ulan Batɔ gaƒoƒome + Ulan Batɔ gaƒoƒoɖoanyime + Ulan Batɔ dzomeŋɔli gaƒoƒome + + + + + Mɔskowgaƒoƒome + Mɔskow gaƒoƒoɖoanyime + Mɔskow dzomeŋɔli gaƒoƒome + + + + + Niufaunɖlanɖ gaƒoƒome + Niufaunɖlanɖ gaƒoƒoɖoanyime + Niufaunɖlanɖ ŋkekeme gaƒoƒome + + + + + Fernando de Noronha gaƒoƒome + Fernando de Noronha gaƒoƒoɖoanyime + Fernando de Noronha dzomeŋɔli gaƒoƒome + + + + + Novosibirsk gaƒoƒome + Novosibirsk gaƒoƒoɖoanyime + Novosibirsk dzomeŋɔli gaƒoƒome + + + + + Omsk gaƒoƒome + Omsk gaƒoƒoɖoanyime + Omsk dzomeŋɔli gaƒoƒome + + + + + Paraguai gaƒoƒome + Paraguai gaƒoƒoɖoanyime + Paraguai dzomeŋɔli gaƒoƒome + + + + + Peru gaƒoƒome + Peru gaƒoƒoɖoanyime + Peru dzomeŋɔli gaƒoƒome + + + + + Saint Pierre kple Mikuelon gaƒoƒome + Saint Pierre kple Mikuelon gaƒoƒoɖoanyime + Saint Pierre kple Mikuelon ŋkekeme gaƒoƒome + + + + + Kizilɔrda gaƒoƒome + Kizilɔrda gaƒoƒoɖoanyime + Kizilɔrda dzomeŋɔli gaƒoƒome + + + + + Reunion gaƒoƒome + + + + + Sahalin gaƒoƒome + Sakhalin gaƒoƒoɖoanyime + Sahalin dzomeŋɔli gaƒoƒome + + + + + Samara gaƒoƒome + Samara gaƒoƒoɖoanyime + Samara ŋkekeme gaƒoƒome + + + + + Sɛtsels gaƒoƒome + + + + + Suriname gaƒoƒome + + + + + Taipei gaƒoƒome + Taipei gaƒoƒoɖoanyime + Taipei ŋkekeme gaƒoƒome + + + + + Tadzikistan gaƒoƒome + + + + + Tɛkmenistan gaƒoƒome + Tɛkmenistan gaƒoƒoɖoanyime + Tɛkmenistan dzomeŋɔli gaƒoƒome + + + + + Uruguai gaƒoƒome + Uruguai gaƒoƒoɖoanyime + Uruguai dzomeŋɔli gaƒoƒome + + + + + Uzbekistan gaƒoƒome + Uzbekistan gaƒoƒoɖoanyime + Uzbekistan dzomeŋɔli gaƒoƒome + + + + + Venezuela gaƒoƒome + + + + + Vladivostok gaƒoƒome + Vladivostok gaƒoƒoɖoanyime + Vladivostok dzomeŋɔli gaƒoƒome + + + + + Vogograd gaƒoƒome + Vogograd gaƒoƒoɖoanyime + Vogograd dzomeŋɔli gaƒoƒome + + + + + Yakutsk gaƒoƒome + Yakutsk gaƒoƒoɖoanyime + Yakutsk dzomeŋɔli gaƒoƒome + + + + + Yekateringburg gaƒoƒome + Yekateringburg gaƒoƒoɖoanyime + Yekaterinburg dzomeŋɔli gaƒoƒome + + + + + + + mnn + + + + + akpe 0 + akpe 0 + akpe 00 + akpe 00 + akpe 000 + akpe 000 + miliɔn 0 + miliɔn 0 + miliɔn 00 + miliɔn 00 + miliɔn 000 + miliɔn 000 + miliɔn 0000 + miliɔn 0000 + miliɔn 00000 + miliɔn 00000 + miliɔn 000000 + miliɔn 000000 + biliɔn 0 + biliɔn 0 + biliɔn 00 + biliɔn 00 + biliɔn 000 + biliɔn 000 + + + + + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0000M + 0000M + 00000M + 00000M + 000000M + 000000M + 0B + 0B + 00B + 00B + 000B + 000B + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {1} {0} + {1} {0} + + + + andorraga peseta + andorraga peseta + andorraga peseta + + + united arab emiratesga dirham + united arab emiratesga dirham + united arab emiratesga dirham + + + afghanistanga afghani (1927–2002) + afghanistanga afghani (1927–2002) + afghanistanga afghani (1927–2002) + + + afghanistanga afghani + afghanistanga afghani + afghanistanga afghani + + + albaniaga lek (1946–1965) + albaniaga lek (1946–1965) + albaniaga lek (1946–1965) + + + albaniaga lek + albaniaga lek + albaniaga lek + + + armeniaga dram + armeniaga dram + armeniaga dram + + + nedalands antilleaga guilder + nedalands antilleaga guilder + nedalands antilleaga guilder + + + angolaga kwanza + angolaga kwanza + angolaga kwanza + + + angolaga kwanza (1977–1991) + angolaga kwanza (1977–1991) + angolaga kwanza (1977–1991) + + + angolaga kwanza (1990–2000) + angolaga kwanza (1990–2000) + angolaga kwanza (1990–2000) + + + angolaga kwanza xoxotɔ (1995–1999) + angolaga kwanza xoxotɔ (1995–1999) + angolaga kwanza xoxotɔ (1995–1999) + + + argentinaga austral + argentinaga austral + argentinaga austral + + + argentinaga peso ley (1970–1983) + argentinaga peso ley (1970–1983) + argentinaga peso ley (1970–1983) + + + argentinaga peso (1881–1970) + argentinaga peso (1881–1970) + argentinaga peso (1881–1970) + + + argentinaga peso (1983–1985) + argentinaga peso (1983–1985) + argentinaga peso (1983–1985) + + + argentinaga peso + argentinaga peso + argentinaga peso + + + ɔstriaga schilling + ɔstriaga schilling + ɔstriaga schilling + + + australiaga dollar + ɔstraliaga dollar + ɔstraliaga dollar + AU$ + + + arubaga lorin + arubaga florin + arubaga florin + + + azerbaidzanga manat (1993–2006) + azerbaidzanga manat (1993–2006) + azerbaidzanga manat (1993–2006) + + + azerbaidzanga manat + azerbaidzanga manat + azerbaidzanga manat + + + bosnia-herzegovinaga dinar (1992–1994) + bosnia-herzegovinaga dinar (1992–1994) + bosnia-herzegovinaga dinar (1992–1994) + + + bosnia-herzegovinaga convertible mark + bosnia-herzegovinaga convertible mark + bosnia-herzegovinaga convertible mark + + + bosnia kple herzegovinaga dinar yeyètɔ (1994–1997) + bosnia kple herzegovinaga dinar yeyètɔ (1994–1997) + bosnia kple herzegovinaga dinar yeyètɔ (1994–1997) + + + barbadiaga dollar + barbadiaga dollar + barbadiaga dollar + + + bangladeshga taka + bangladeshga taka + bangladeshga taka + + + beldziumga franc (convertible) + beldziumga franc (convertible) + beldziumga franc (convertible) + + + beldziumga franc + beldziumga franc + beldziumga franc + + + beldziumga franc (financial) + beldziumga franc (financial) + beldziumga franc (financial) + + + bɔlgariaga hard lev + bɔlgariaga hard lev + bɔlgariaga hard lev + + + bɔlgariaga socialist lev + bɔlgariaga socialist lev + bɔlgariaga socialist lev + + + bulgariaga lev + bulgariaga lev + bulgariaga lev + + + bulgariaga lev (1879–1952) + bulgariaga lev (1879–1952) + bulgariaga lev (1879–1952) + + + bahrainga dinar + bahrainga dinar + bahrainga dinar + + + burundiga franc + burundiga franc + burundiga franc + + + bermudaga dollar + bermudaga dollar + bermudaga dollar + + + bruneiga dollar + bruneiga dollar + bruneiga dollar + + + boliviaga boliviano + boliviaga boliviano + boliviaga boliviano + + + boliviaga boliviano (1863–1963) + boliviaga boliviano (1863–1963) + boliviaga boliviano (1863–1963) + + + boliviaga peso + boliviaga peso + boliviaga peso + + + boliviaga mvdol + boliviaga mvdol + boliviaga mvdol + + + braziliaga cruzeiro xoxotɔ (1967–1986) + braziliaga cruzeiro xoxotɔ (1967–1986) + braziliaga cruzeiro xoxotɔ (1967–1986) + + + brazilia cruzado (1986–1989) + brazilia cruzado (1986–1989) + brazilia cruzado (1986–1989) + + + braziliaga cruzeiro xoxotɔ gbãtɔ (1990–1993) + braziliaga cruzeiro xoxotɔ gbãtɔ (1990–1993) + braziliaga cruzeiro xoxotɔ gbãtɔwo (1990–1993) + + + brazilga real + braziliaga real + braziliaga real + R$ + + + brazilia cruzado xoxotɔ (1989–1990) + brazilia cruzado xoxotɔ (1989–1990) + brazilia cruzado xoxotɔ (1989–1990) + + + braziliaga cruzeiro (1993–1994) + braziliaga cruzeiro (1993–1994) + braziliaga cruzeiro (1993–1994) + + + braziliaga cruzeiro (1942–1967) + braziliaga cruzeiro (1942–1967) + braziliaga cruzeiro (1942–1967) + + + bahamiaga dollar + bahamiaga dollar + bahamiaga dollar + + + bhutanga ngultrum + bhutanga ngultrum + bhutanga ngultrum + + + burmaga kyat + burmaga kyat + burmaga kyat + + + botswanaga pula + botswanaga pula + botswanaga pula + + + belarusiaga ruble yeytɔ (1994–1999) + belarusiaga ruble yeytɔ (1994–1999) + belarusiaga ruble yeyetɔ (1994–1999) + + + belarusiaga ruble + belarusiaga ruble + belarusiaga rublewo + + + belizega dollar + belizega dollar + belizega dollar + + + kanadaga dollar + kanadaga dollar + kanadaga dollar + CA$ + + + kongoga franc + kongoga franc + kongoga franc + + + WIR euro CHE + WIR euro CHE + WIR eurowo CHE + + + swissga franc + swissga franc + swissga franc + + + WIR euro CHW + WIR euro CHW + WIR eurowo CHW + + + tsilega escudo + tsilega escudo + tsilega escudo + + + tsilegakɔnta dzidzenu UF + tsilegakɔnta dzidzenu UF + tsilegakɔnta dzidzenu UF + + + tsilega peso + tsilega peso + tsilega pesowo + + + tsainatɔwo ƒe gadzraɖoƒe dollar + tsainatɔwo ƒe gadzraɖoƒe dollar + tsainatɔwo ƒe gadzraɖoƒe dollarwo + + + tsainaga yuan + tsainaga yuan + tsainaga yuan + CN¥ + + + kolombiaga peso + kolombiaga peso + kolombiaga peso + + + kolombiaga vavãtɔ + kolombiaga vavãtɔ + kolombiaga vavãtɔ + + + kosta rikaga kolón + kosta rikaga kolón + kosta rikaga kolón + + + serbiaga dinar (2002–2006) + serbiaga dinar (2002–2006) + serbiaga dinar (2002–2006) + + + tsɛkoslovakiaga hard koruna + tsɛkoslovakiaga hard koruna + tsɛkoslovakiaga hard koruna + + + kubaga convertible peso + kubaga convertible peso + kubaga convertible peso + + + kubaga peso + kubaga peso + kubaga peso + + + kape verdega escudo + kape verdega escudo + kape verdega escudo + + + saipriɔtga pound + saipriɔtga pound + saipriɔtga pound + + + tsɛk repɔblikga koruna + tsɛk repɔblikga koruna + tsɛk repɔblikga koruna + + + ɣedzeƒe germaniaga mark + ɣedzeƒe germaniaga mark + ɣedzeƒe germaniaga mark + + + germaniaga mark + germaniaga mark + germaniaga markwo + + + dziboutiga franc + dziboutiga franc + dzibutiga franc + + + danemarkga krone + denmarkga krone + denmarkga krone + + + dominicaga peso + dominikaga peso + dominikaga peso + + + aldzeriaga dinar + aldzeriaga dinar + aldzeriaga dinar + + + ekuadɔga sucre + ekuadɔga sucre + ekuadɔga sucre + + + ekuadɔ dzidzenu matrɔmatrɔ + ekuadɔ dzidzenu matrɔmatrɔ + ekuadɔ dzidzenu matrɔmatrɔ + + + estoniaga kroon + estoniaga kroon + estoniaga kroon + + + egyptega pound + egyptega pound + egyptega pound + + + eritreaga nakfa + eritreaga nakfa + eritreaga nakfa + + + spaniaga peseta (A) + spaniaga peseta (A) + spaniaga peseta (A) + + + spaniaga peseta (Convertible) + spaniaga peseta (Convertible) + spaniaga pesetas (Convertible) + + + spaniaga peseta + spaniaga peseta + spaniaga pesetas + + + ethiopiaga birr + ethiopiaga birr + ethiopiaga birr + + + euro + euro + euro + + + + finlandga markka + finlandga markka + finlandga markka + + + fidziga dollar + fidziga dollar + fidziga dollar + + + falklanɖ ƒudomekpo dukɔwo ƒe ga pound + falkland ƒudomekpo dukɔwo ƒe ga pound + falkland ƒudomekpo dukɔwo ƒe ga pound + + + frentsiga franc + frentsiga franc + frentsiga franc + + + britainga pound sterling + britainga pound sterling + britainga pound sterling + £ + + + dzɔdziaga kupon larit + dzɔdziaga kupon larit + dzɔdziaga kupon larit + + + dzɔdziaga lari + dzɔdziaga larit + dzɔdziaga larit + + + ghana siɖi (1979–2007) + ghana siɖi (1979–2007) + ghana siɖi (1979–2007) + + + ghana siɖi + ghana siɖi + ghana siɖi + GH₵ + + + gilbrataga pound + gilbrataga pound + gilbrataga pound + + + gambiaga dalasi + gambiaga dalasi + gambiaga dalasi + + + giniga franc + giniga franc + giniga franc + + + giniga syli + giniga syli + giniga syli + + + ekuatorial giniga ekwele + ekuatorial giniga ekwele + ekuatorial giniga ekwele + + + grisiga drachma + grisiga drachma + grisiga drachma + + + guatemalaga quetzal + guatemalaga quetzal + guatemalaga quetzal + + + pɔtugaltɔwo ƒe giniga escudo + pɔtugaltɔwo ƒe giniga escudo + pɔtugaltɔwo ƒe giniga escudo + + + gini-bisau peso + gini-bisau peso + gini-bisau peso + + + guyanaga dollar + guyanaga dollar + guyanaga dollar + + + hong kongga dollar + hong kongga dollar + hong kongga dollar + HK$ + + + honduraga lempira + honduraga lempira + honduraga lempira + + + kroatiaga dinar + kroatiaga dinar + kroatiaga dinar + + + kroatiaga kuna + kroatiaga kuna + kroatiaga kuna + + + haitiga gourde + haitiga gourde + haitiga gourde + + + hungariaga forint + hungariaga forint + hungariaga forint + + + indinesiaga rupiah + indinesiaga rupiah + indinesiaga rupiah + + + ireland pound + ireland pound + ireland pound + + + israelga pound + israelga pound + israelga pound + + + israelga sheqel (1980–1985) + israelga sheqel (1980–1985) + israelga sheqel (1980–1985) + + + israelga yeyetɔ sheqel + israelga yeyetɔ sheqel + israelga yeyetɔ sheqel + + + + indiaga rupee + indiaga rupee + indiaga rupee + + + + irakga dinar + irakga dinar + irakga dinar + + + iranga rial + iranga rial + iranga rial + + + aiselandga króna (1918–1981) + aiselandga króna (1918–1981) + aiselandga krónur (1918–1981) + + + aiselandga króna + aiselandga króna + aiselandga krónur + + + italiaga lira + italiaga lira + italiaga lira + + + dzamaikaga dollar + dzamaikaga dollar + dzamaikaga dollar + + + yɔdanga dinar + yɔdanga dinar + yɔdanga dinar + + + dzapanga yen + dzapanga yen + dzapanga yen + JP¥ + + + kenyaga shilling + kenyaga shilling + kenyaga shilling + + + kirgistanga som + kirgistanga som + kirgistanga som + + + kambodiaga riel + kambodiaga riel + kambodiaga riel + + + komoroga franc + komoroga franc + komoroga franc + + + dziehe koreaga won + dziehe koreaga won + dziehe koreaga won + + + anyiehe koreaga hwan (1953–1962) + anyiehe koreaga hwan (1953–1962) + anyiehe koreaga hwan (1953–1962) + + + anyiehe koreaga won (1945–1953) + anyiehe koreaga won (1945–1953) + anyiehe koreaga won (1945–1953) + + + anyiehe koreaga won + anyiehe koreaga won + anyiehe koreaga won + + + + kuwaitga dinar + kuwaitga dinar + kuwaitga dinar + + + kayman ƒudomekpoga dollar + kayman ƒudomekpoga dollar + kayman ƒudomekpoga dollar + + + kazakhstanga tenge + kazakhstanga tenge + kazakhstanga tenge + + + laosga kip + laosga kip + laosga kip + + + lebanonga pound + lebanonga pound + lebanonga pound + + + sri lankaga rupee + sri lankaga rupee + sri lankaga rupee + + + liberiaga dollar + liberiaga dollar + liberiaga dollar + + + lesotoga loti + lesotoga loti + lesotoga loti + + + lithuaniaga litas + lithuaniaga litas + lithuaniaga litai + + + lithuaniaga talonas + lithuaniaga talonas + lithuaniaga talonas + + + lazembɔgga convertible franc + lazembɔgga convertible franc + lazembɔgga convertible franc + + + lazembɔgga franc + lazembɔgga franc + lazembɔgga franc + + + lazembɔgga gadzikpɔ franc + lazembɔgga gadzikpɔ franc + lazembɔgga gadzikpɔ franc + + + latviaga lats + latviaga lats + latviaga lati + + + latviaga ruble + latviaga ruble + latviaga ruble + + + libyaga dinar + libyaga dinar + libyaga dinar + + + morokoga dirham + morokoga dirham + morokoga dirham + + + morokoga franc + morokoga franc + morokoga franc + + + monegaskga franc + monegaskga franc + monegaskga franc + + + moldovaga cupon + moldovaga cupon + moldovaga cupon + + + moldovaga leu + moldovaga leu + moldovaga leu + + + malagasega ariary + malagasega ariary + malagasega ariary + + + malagasega franc + malagasega franc + malagasega franc + + + makedoniaga denar + makedoniaga denar + makedoniaga denari + + + makedoniaga denar (1992–1993) + makedoniaga denar (1992–1993) + makedoniaga denari (1992–1993) + + + maliga franc + maliga franc + maliga franc + + + myanmaga kyat + myanmaga kyat + myanmaga kyat + + + mongoliaga tugrik + mongoliaga tugrik + mongoliaga tugrik + + + makanesega pataca + makanesega pataca + makanesega pataca + + + mɔritaniaga ouguiya + mɔritaniaga ouguiya + mɔritaniaga ouguiya + + + maltaga lira + maltaga lira + maltaga lira + + + maltaga pound + maltaga pound + maltaga pound + + + mɔritiusga rupee + mɔritiusga rupee + mɔritiusga rupee + + + maldiviaga rufiyaa + maldiviaga rufiyaa + maldiviaga rufiyaa + + + malawiga kwacha + malawiga kwacha + malawiga kwacha + + + meksikoga peso + meksikoga peso + meksikoga peso + MX$ + + + malaysiaga ringit + malaysiaga ringit + malaysiaga ringit + + + mozambikga metikal + + + namibiaga dollar + namibiaga dollar + namibiaga dollar + + + naidzeriaga naira + naidzeriaga naira + naidzeriaga naira + + + nikaraguaga córdoba (1988–1991) + nikaraguaga córdoba (1988–1991) + nikaraguaga córdoba (1988–1991) + + + nikaraguaga córdoba + nikaraguaga córdoba + nikaraguaga córdoba + + + hollandga guilder + hollandga guilder + hollandga guilder + + + norwayga krone + nɔweiga krone + nɔweiga krone + + + nepalga rupee + nepalga rupee + nepalga rupee + + + new zealanɖga dollar + new zealanɖga dollar + new zealanɖga dollar + NZ$ + + + omanga rial + omanga rial + omanga rial + + + panamaga balboa + panamaga balboa + panamaga balboa + + + peruga inti + peruga inti + peruga inti + + + peruga nuevo sol + peruga nuevo sol + peruga nuevo sol + + + peruga nuevo sol (1863–1965) + peruga nuevo sol (1863–1965) + peruga nuevo sol (1863–1965) + + + papua new guineaga kina + papua new giniga kina + papua new giniga kina + + + filipiniga peso + filipinga peso + filipinga peso + + + pakistaniga rupee + pakistanga rupee + pakistanga rupee + + + polanɖga zloty + polandga zloty + polandga zloty + + + polanɖga zloty (1950–1995) + polandga zloty (1950–1995) + polandga zloty (1950–1995) + + + pɔtugalga escudo + pɔtugalga escudo + pɔtugalga escudo + + + paraguayga guarani + paraguayga guarani + paraguayga guarani + + + katarga rial + katarga rial + katarga rial + + + rhodesiaga dollar + rhodesiaga dollar + rhodesiaga dollar + + + romaniaga leu (1952–2006) + romaniaga leu (1952–2006) + romaniaga leu (1952–2006) + + + romaniaga leu + romaniaga leu + romaniaga leu + + + serbiaga dinar + serbiaga dinar + serbiaga dinar + + + rɔtsiaga ruble + rɔtsiaga ruble + rɔtsiaga ruble + + + rɔtsiaga ruble (1991–1998) + rɔtsiaga ruble (1991–1998) + rɔtsiaga ruble (1991–1998) + + + rwandaga franc + rwandaga franc + rwandaga franc + + + saudiga riyal + saudiga riyal + saudiga riyal + + + solomon ƒudomekpo dukɔwo ƒe ga dollar + solomon ƒudomekpo dukɔwo ƒe ga dollar + solomon ƒudomekpo dukɔwo ƒe ga dollar + + + sɛtselsga rupee + sɛtselsga rupee + sɛtselsga rupee + + + sudanga dinar (1992–2007) + sudanga dinar (1992–2007) + sudanga dinar (1992–2007) + + + sudanga pound + sudanga pound + sudanga pound + + + sudanga pound (1957–1998) + sudanga pound (1957–1998) + sudanga pound (1957–1998) + + + swedenga krona + swedenga krona + swedenga krona + + + singapɔga dollar + singapɔga dollar + singapɔga dollar + + + saint helenaga pound + saint helenaga pound + saint helenaga pound + + + slovaniaga tolar + slovaniaga tolar + slovaniaga tolar + + + slovakga koruna + slovakiaga koruna + slovakiaga koruna + + + sierra leonega leone + sierra leonega leone + sierra leonega leone + + + somaliaga shilling + somaliaga shilling + somaliaga shilling + + + surinamga dollar + surinamga dollar + surinamga dollar + + + surinamega guilder + surinamega guilder + surinamega guilder + + + anyiehe sudanga pound + anyiehe sudanga pound + anyiehe sudanga pound + + + são tomé kple príncipega dobra + são tomé kple príncipega dobra + são tomé kple príncipega dobra + + + sovietga rouble + sovietga rouble + sovietga rouble + + + salvadɔga colón + salvadɔga colón + salvadɔga colón + + + syriaga pound + syriaga pound + syriaga pound + + + swaziga lilangeni + swaziga lilangeni + swaziga lilangeni + + + thaiga baht + thaiga baht + thaiga baht + ฿ + + + tajikistanga ruble + tajikistanga ruble + tajikistanga ruble + + + tajikistanga somoni + tajikistanga somoni + tajikistanga somoni + + + turkmenistanga manat (1993–2009) + turkmenistanga manat (1993–2009) + turkmenistanga manat (1993–2009) + + + turkmenistanga manat + turkmenistanga manat + turkmenistanga manat + + + tunisiaga dinar + tunisiaga dinar + tunisiaga dinar + + + tonagaga pa'anga + tonagaga pa'anga + tonagaga pa'anga + + + timɔga escudo + timɔga escudo + timɔga escudo + + + tɛkiiga lira (1922–2005) + tɛkiiga lira (1922–2005) + tɛkiiga lira (1922–2005) + + + tɛkiiga lira + tɛkiiga lira + tɛkiiga lira + + + trinidad kple tobagoga dollar + trinidad kple tobagoga dollar + trinidad kple tobagoga dollar + + + taiwanga yeye dollar + taiwanga yeye dollar + taiwanga yeye dollar + NT$ + + + Tanzaniatɔwofɛgadudu + tanzaniaga shilling + tanzaniaga shilling + + + ukrainega hryvnia + ukrainega hryvnia + ukrainega hryvnia + + + ukrainega karbovanet + ukrainega karbovanet + ukrainega karbovantsiv + + + ugandaga shilling (1966–1987) + ugandaga shilling (1966–1987) + ugandaga shilling (1966–1987) + + + ugandaga shilling + ugandaga shilling + ugandaga shilling + + + us ga dollar + us ga dollar + us ga dollar + US$ + + + us ga dollar (ŋkeke si gbɔna tɔ) + us ga dollar (ŋkeke si gbɔna tɔ) + us ga dollar (ŋkeke si gbɔna tɔ) + + + us ga dollar (ŋkeke ma ke tɔ) + us ga dollar (ŋkeke ma ke tɔ) + us ga dollar (ŋkeke ma ke tɔ) + + + uruguayga peso UYI + uruguayga peso UYI + uruguayga peso UYI + + + uruguayga peso (1975–1993) + uruguayga peso (1975–1993) + uruguayga peso (1975–1993) + + + uruguayga peso + uruguayga peso + uruguayga peso + + + uzbekistanga som + uzbekistanga som + uzbekistanga som + + + venezuelaga bolívar (1871–2008) + venezuelaga bolívar (1871–2008) + venezuelaga bolívar (1871–2008) + + + venezuelaga bolívar + venezuelaga bolívar + venezuelaga bolívar + + + vietnamga dong + vietnamga dong + vietnamga dong + + + + vietnamga dong (1978–1985) + vietnamga dong (1978–1985) + vietnamga dong (1978–1985) + + + vanuatuga vatu + vanuatuga vatu + vanuatuga vatu + + + samaoga tala + samaoga tala + samaoga tala + + + ɣetoɖofe afrikaga CFA franc BEAC + ɣetoɖofe afrikaga CFA franc BEAC + ɣetoɖofe afrikaga CFA franc BEAC + + + klosalo + klosalo + klosalo + + + sika + sika + sika + + + europa dzidzenu xba + europa dzidzenu xba + europa dzidzenu xba + + + europa gadzidzenu xbb + europa gadzidzenu xbb + europa gadzidzenu xbb + + + europa kɔnta dzidzenu xbc + europa kɔnta dzidzenu + europa kɔnta dzidzenu + + + europa kɔnta dzidzenu xbd + europaga (XBD) + europaga (XBD) + + + ɣedzeƒe caribbeaga dollar + ɣedzeƒe karibbeaga dollar + ɣedzeƒe karibbeaga dollar + EC$ + + + gaɖuɖu ɖoɖo tɔxɛ + gaɖuɖu ɖoɖo tɔxɛ + gaɖuɖu ɖoɖo tɔxɛ + + + europa gaɖuɖu + europa gaɖuɖu + europa gaɖuɖu + + + fransemega sika franc + frentsiga sika franc + frentsiga sika franc + + + frentsi UIC-franc + frentsi UIC-franc + frentsi UIC-franc + + + ɣetoɖofe afrikaga CFA franc BCEAO + ɣetoɖofe afrikaga CFA franc BCEAO + ɣetoɖofe afrikaga CFA franc BCEAO + + + palladiumga + palladiumga + palladiumga + + + CFP ga franc + CFP ga franc + CFP ga franc + + + platinum + platinum + platinum + + + RINET gadodo XRE + RINET gadodo XRE + RINET gadodo XRE + + + gaɖuɖu dodokpɔ dzesi xts + gaɖuɖu dodokpɔ dzesi + gaɖuɖu dodokpɔ dzesi + + + gaɖuɖu manya + gaɖuɖu manya + gaɖuɖu manya + + + yemeniga dinar + yemeniga dinar + yemeniga dinar + + + yemeniga rial + yemeniga rial + yemeniga rial + + + yugoslaviaga hard dinar (1966–1990) + yugoslaviaga hard dinar (1966–1990) + yugoslaviaga hard dinar (1966–1990) + + + yugoslaviaga yeyetɔ dinar (1994–2002) + yugoslaviaga yeyetɔ dinar (1994–2002) + yugoslaviaga yeyetɔ dinar (1994–2002) + + + yugoslaviaga convertible dinar (1990–1992) + yugoslaviaga convertible dinar (1990–1992) + yugoslaviaga convertible dinar (1990–1992) + + + yugoslaviaga dinar (1992–1993) + yugoslaviaga dinar (1992–1993) + yugoslaviaga dinar (1992–1993) + + + anyiehe afrikaga rand (gadzikpɔtɔ) + anyiehe afrikaga rand (gadzikpɔtɔ) + anyiehe afrikaga rand (gadzikpɔtɔ) + + + anyiehe afrikaga rand + anyiehe afrikaga rand + anyiehe afrikaga rand + + + zambiaga kwacha (1968–2012) + zambiaga kwacha (1968–2012) + zambiaga kwacha (1968–2012) + + + zambiaga kwacha + zambiaga kwacha + zambiaga kwacha + + + zairega yeyetɔ zaire + zairega yeyetɔ zaire + zairega yeyetɔ zaire + + + zairega zaire (1971–1993) + zairega zaire (1971–1993) + zairega zaires (1971–1993) + + + zimbabwega dollar (1980–2008) + zimbabwega dollar (1980–2008) + zimbabwega dollar (1980–2008) + + + zimbabwega dollar (2009) + zimbabwega dollar (2009) + zimbabwega dollar (2009) + + + zimbabwega dollar (2008) + zimbabwega dollar (2008) + zimbabwega dollar (2008) + + + + + + + ŋkeke {0} wo + ŋkeke {0} wo + + + gaƒoƒo {0} wo + gaƒoƒo {0} wo + + + aɖabaƒoƒo {0} wo + aɖabaƒoƒo {0} wo + + + ɣleti {0} wo + ɣleti {0} wo + + + sekend {0} wo + sekend {0} wo + + + kɔsiɖa {0} wo + kɔsiɖa {0} wo + + + ƒe {0} wo + ƒe {0} wo + + + + + ŋkeke {0} + ŋkeke {0} + + + gaƒoƒo {0} + gaƒoƒo {0} + + + aɖabaƒoƒo {0} + aɖabaƒoƒo {0} + + + ɣleti {0} + ɣleti {0} + + + sekend {0} + sekend {0} + + + kɔsiɖa {0} + kɔsiɖa {0} + + + ƒe {0} + ƒe {0} + + + + + g {0} + g {0} + + + a {0} + a {0} + + + s {0} + s {0} + + + + + + {0}, {1} + {0}, {1} + {0}, kple {1} + {0} kple {1} + + + + + ɛ:Ɛ + ao:A + + + + diff --git a/library/Zend/Locale/Data/ee_GH.xml b/library/Zend/Locale/Data/ee_GH.xml new file mode 100755 index 000000000..5a41c8486 --- /dev/null +++ b/library/Zend/Locale/Data/ee_GH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ee_TG.xml b/library/Zend/Locale/Data/ee_TG.xml new file mode 100755 index 000000000..b4eff4ba6 --- /dev/null +++ b/library/Zend/Locale/Data/ee_TG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/el.xml b/library/Zend/Locale/Data/el.xml new file mode 100755 index 000000000..818bdc6a5 --- /dev/null +++ b/library/Zend/Locale/Data/el.xml @@ -0,0 +1,6283 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Αφάρ + Αμπχαζικά + Αχινίζ + Ακολί + Αντάνγκμε + Αντιγκέα + Αβεστάν + Αφρικάανς + Αφριχίλι + Αγκέμ + Αϊνού + Ακάν + Ακάντιαν + Αλούτ + Νότια Αλαταϊκά + Αμαρικά + Αραγκονικά + Παλαιά Αγγλικά + Ανγκικά + Αραβικά + Σύγχρονα Τυπικά Αραβικά + Αραμαϊκά + Αρουκάνιαν + Αράπαχο + Αραγουάκ + Ασαμεζικά + Άσου + Αστουριανά + Άβαρικ + Αγουαντί + Αϊμάρα + Αζερικά + Αζερικά + Μπασκίρ + Μπαλούτσι + Μπαλινίζ + Μπάσα + Μπαμούν + Γκομάλα + Λευκορωσικά + Μπέζα + Μπέμπα + Μπένα + Μπαφούτ + Βουλγαρικά + Μποζπούρι + Μπισλάμα + Μπικόλ + Μπίνι + Κομ + Σικσίκα + Μπαμπάρα + Μπενγκάλι + Θιβετιανά + Βρετονικά + Μπρατζ + Μπόντο + Βοσνιακά + Ακόσι + Μπουριάτ + Μπουγκίζ + Μπουλού + Μπλιν + Μεντούμπα + Καταλανικά + Κάντο + Καρίμπ + Καγιούγκα + Ατσάμ + Τσέτσνιαν + Κεμπουάνο + Τσίγκα + Καμόρρο + Τσίμπτσα + Τσαγκατάι + Τσουκίζι + Μάρι + Ιδιωματικά Σινούκ + Τσοκτάου + Τσίπιουαν + Τσερόκι + Σεγιέν + Κουρδικά Σοράνι + Κορσικανικά + Κοπτικά + Κρι + Τουρκικά Κριμαίας + Τσεχικά + Κασούμπιαν + Εκκλησιαστικά Σλαβικά + Χουβάς + Ουαλικά + Δανικά + Ντακότα + Ντάργκουα + Τάιτα + Γερμανικά + Γερμανικά Αυστρίας + Γερμανικά Ελβετίας + Ντέλαγουερ + Σλαβικά + Ντόγκριμπ + Ντίνκα + Ζάρμα + Ντόγκρι + Γλώσσα Κάτω Λουσατίας + Ντουάλα + Μέσα Ολλανδικά + Ντιβέχι + Τζόλα-Φόνι + Ντογιούλα + Ντζόνγκχα + Νταζάγκα + Έμπου + Γι + Εφίκ + Αρχαία Αιγυπτιακά + Εκατζούκ + Ελληνικά + Ελαμάιτ + Αγγλικά + Αγγλικά Αυστραλίας + Αγγλικά Καναδά + Αγγλικά Ηνωμένου Βασιλείου + Αγγλικά (ΗΒ) + Αγγλικά Αμερικής + Αγγλικά ΗΠΑ + Μέσα Αγγλικά + Εσπεράντο + Ισπανικά + Ισπανικά Λατινικής Αμερικής + Ισπανικά Ευρώπης + Εσθονικά + Βασκικά + Εγουόντο + Περσικά + Φανγκ + Φάντι + Φουλάχ + Φινλανδικά + Φιλιππινεζικά + Φίτζι + Φαρόε + Φον + Γαλλικά + Γαλλικά Καναδά + Γαλλικά Ελβετίας + Μέσα Γαλλικά + Παλαιά Γαλλικά + Βόρεια Φριζιανά + Ανατολικά Φριζιανά + Φριούλιαν + Δυτικά Φριζιανά + Ιρλανδικά + Γκα + Γκάγιο + Γκμπάγια + Σκωτικά Κελτικά + Γκιζ + Γκιλμπερτίζ + Γαλικιανά + Μέσα Άνω Γερμανικά + Γκουαρανί + Παλαιά Άνω Γερμανικά + Γκόντι + Γκοροντάλο + Γοτθικά + Γκρίμπο + Αρχαία Ελληνικά + Ελβετικά Γερμανικά + Γκουγιαράτι + Γκούσι + Μανξ + Γκουίτσιν + Χάουσα + Χάιντα + Χαβανεζικά + Εβραϊκά + Χίντι + Χιλιγκαγιόν + Χιτίτε + Χμονγκ + Χίρι Μότου + Κροατικά + Γλώσσα Άνω Λουσατίας + Αϊτιανά + Ουγγρικά + Χούπα + Αρμενικά + Χερέρο + Ιντερλίνγκουα + Ιμπάν + Ιμπίμπιο + Ινδονησιακά + Ιντερλίνγκουε + Ίγκμπο + Σικουάν Γι + Ινουπιάκ + Ιλόκο + Ινγκούς + Ίντο + Ισλανδικά + Ιταλικά + Ινουκτιτούτ + Ιαπωνικά + Λόζμπαν + Νγκόμπα + Μάχαμε + Ιουδαϊκά-Περσικά + Ιουδαϊκά-Αραβικά + Ιαβανεζικά + Γεωργιανά + Κάρα-Καλπάκ + Καμπίλε + Κατσίν + Τζου + Κάμπα + Κάουι + Καμπαρντιανά + Κανέμπου + Τουάπ + Μακόντε + Γλώσσα του Πράσινου Ακρωτηρίου + Κόρο + Κονγκό + Κάσι + Κοτανικά + Κόιρα Τσίνι + Κικούγιου + Κουανιγιάμα + Καζακικά + Κάκο + Καλαάλισουτ + Καλεντζίν + Καμποτζιανά + Κιμπούντου + Κανάντα + Κορεατικά + Κονκάνι + Κοσραενικά + Κπέλε + Κανούρι + Καρατσάι-Μπαλκάρ + Καρελιακά + Κουρούχ + Κασμίρι + Σάμπαλα + Μπάφια + Κολωνικά + Κουρδικά + Κουμγιούκ + Κουτενάι + Κόμι + Κόρνις + Κυργιζικά + Λατινικά + Λαδίνο + Λάνγκι + Λάχδα + Λάμπα + Λουξεμβουργιανά + Λαζγκιάν + Γκάντα + Λιμβουργιανά + Λινγκάλα + Λαοθιανά + Μόνγκο + Λόζι + Λιθουανικά + Λούμπα-Κατάνγκα + Λούμπα-Λουλούα + Λουισένο + Λούντα + Λούο + Λουσάι + Λουχία + Λετονικά + Μαντουρίζ + Μάφα + Μαγκάχι + Μαϊτχίλι + Μακαζάρ + Μαντίνγκο + Μασάι + Μάμπα + Μόκσα + Μανδάρ + Μέντε + Μερού + Μορίσιεν + Μαλαγάσι + Μέσα Ιρλανδικά + Μακούβα-Μέτο + Μετά + Μάρσαλ + Μάορι + Μικμάκ + Μινανγκαμπάου + Σλαβομακεδονικά + Μαλαγιαλάμ + Μογγολικά + Μαντσού + Μανιπούρι + Μοχόκ + Μόσι + Μαράθι + Μαλάι + Μαλτεζικά + Μουντάνγκ + Πολλαπλές γλώσσες + Κρικ + Μιραντεζικά + Μαργουάρι + Βιρμανικά + Μιένε + Έρζυα + Ναούρου + Ναπολιτανικά + Νάμα + Νορβηγικά Μποκμάλ + Ντεμπέλε Βορρά + Κάτω Γερμανικά + Νεπάλι + Νεγουάρι + Ντόνγκα + Νίας + Νιούεαν + Ολλανδικά + Φλαμανδικά + Κβάσιο + Νορβηγικά Νινόρσκ + Νγκιεμπούν + Νορβηγικά + Νογκάι + Παλαιά Νορβηγικά + Ν'Κο + Ντεμπέλε Νότου + Βόρεια Σόθο + Νουέρ + Νάβαχο + Κλασικά Νεουάρι + Νιάντζα + Νιαμγουέζι + Νιανκόλε + Νιόρο + Νζίμα + Οκσιτανικά + Οζιβίγουα + Ορόμο + Ορίγια + Οσετικά + Οσάζ + Οθωμανικά Τουρκικά + Παντζαπικά + Πανγκασινάν + Παχλάβι + Παμπάνγκα + Παπιαμέντο + Παλάουαν + Αρχαία Περσικά + Φοινικικά + Πάλι + Πολωνικά + Ποχπέιαν + Παλαιά Προβενσιάλ + Πάστο + Πορτογαλικά + Πορτογαλικά Βραζιλίας + Πορτογαλικά Ευρώπης + Κετσούα + Ραζασθάνι + Ραπανούι + Ραροτονγκάν + Ρομανικά + Ρούντι + Ρουμανικά + Μολδαβικά + Ρόμπο + Ρομανί + Ρουτ + Ρωσικά + Αρομανικά + Κινιαρβάντα + Ρουά + Σανσκριτικά + Σαντάγουε + Γιακούτ + Σαμαρίτικα Αραμαϊκά + Σαμπούρου + Σασάκ + Σαντάλι + Νγκαμπέι + Σάνγκου + Σαρδινικά + Σικελιανά + Σκωτικά + Σίντι + Βόρεια Σάμι + Σένεκα + Σένα + Σελκούπ + Κοϊραμπόρο Σένι + Σάνγκο + Παλαιά Ιρλανδικά + Σερβοκροατικά + Τασελχίτ + Σαν + Αραβικά του Τσαντ + Σινχαλεζικά + Σιντάμο + Σλοβακικά + Σλοβενικά + Σαμόαν + Νότια Σάμι + Λούλε Σάμι + Ινάρι Σάμι + Σκολτ Σάμι + Σχόνα + Σονίνκε + Σομάλι + Σογκντιέν + Αλβανικά + Σερβικά + Σρανάρ Τόνγκο + Σερέρ + Σουάτι + Σάχο + Νότια Σόθο + Σουδανικά + Σουκούμα + Σούσου + Σουμερικά + Σουηδικά + Σουαχίλι + Κομόρρια + Κονγκό Σουαχίλι + Κλασικά Συριακά + Συριακά + Ταμίλ + Τελούγκου + Τίμνε + Τέσο + Τερένο + Τέτουμ + Τατζίκ + Ταϊλανδικά + Τιγκρίνυα + Τίγκρε + Τιβ + Τουρκμενικά + Τοκελάου + Ταγκαλόγκ + Κλίνγκον + Τλίνγκιτ + Ταμασέκ + Τσιγουάνα + Τονγκανικά + Νιάσα Τόνγκα + Τοκ Πισίν + Τουρκικά + Ταρόκο + Τσόνγκα + Τσίμσιαν + Τατάρ + Τουμπούκα + Τουβαλού + Τούι + Τασαβάκ + Ταϊτιανά + Τουβίνιαν + Ταμαζίτ Κεντρικού Μαρόκο + Ουντμούρτ + Ουιγουρικά + Ουιγκούρ + Ουγκαρίτικ + Ουκρανικά + Ουμπούντου + Άγνωστη γλώσσα + Ουρντού + Ουζμπεκικά + Βάι + Βένδα + Βιετναμικά + Βόλαπικ + Βότικ + Βούντζο + Γουαλούν + Βάλσερ + Γουάλαμο + Γουάρει + Γουασό + Γουόλοφ + Καλμίκ + Ζόσα + Σόγκα + Γιάο + Γιαπίζ + Γιανγκμπέν + Γιέμπα + Γίντις + Γιορούμπα + Καντονέζικα + Ζουάνγκ + Ζάποτεκ + Σύμβολα Bliss + Ζενάγκα + Τυπικά Ταμαζίγκτ Μαρόκου + Κινεζικά + Απλοποιημένα Κινεζικά + Παραδοσιακά Κινεζικά + Ζουλού + Ζούνι + Χωρίς γλωσσολογικό περιεχόμενο + Ζάζα + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κόσμος + Αφρική + Βόρεια Αμερική + Νότια Αμερική + Ωκεανία + Δυτική Αφρική + Κεντρική Αμερική + Ανατολική Αφρική + Βόρεια Αφρική + Μέση Αφρική + Νότιος Αφρική + Αμερική + Βόρειος Αμερική + Καραϊβική + Ανατολική Ασία + Νότια Ασία + Νοτιοανατολική Ασία + Νότια Ευρώπη + Αυστραλασία + Μελανησία + Περιοχή Μικρονησίας + Πολυνησία + Ασία + Κεντρική Ασία + Δυτική Ασία + Ευρώπη + Ανατολική Ευρώπη + Βόρεια Ευρώπη + Δυτική Ευρώπη + Λατινική Αμερική + Νήσος Ασενσιόν + Ανδόρα + Ηνωμένα Αραβικά Εμιράτα + Αφγανιστάν + Αντίγκουα και Μπαρμπούντα + Ανγκουίλα + Αλβανία + Αρμενία + Ολλανδικές Αντίλλες + Ανγκόλα + Ανταρκτική + Αργεντινή + Αμερικανική Σαμόα + Αυστρία + Αυστραλία + Αρούμπα + Νήσοι Όλαντ + Αζερμπαϊτζάν + Βοσνία - Ερζεγοβίνη + Μπαρμπάντος + Μπανγκλαντές + Βέλγιο + Μπουρκίνα Φάσο + Βουλγαρία + Μπαχρέιν + Μπουρούντι + Μπενίν + Άγιος Βαρθολομαίος + Βερμούδες + Μπρουνέι + Βολιβία + Ολλανδία Καραϊβικής + Βραζιλία + Μπαχάμες + Μπουτάν + Νήσος Μπουβέ + Μποτσουάνα + Λευκορωσία + Μπελίζ + Καναδάς + Νήσοι Κόκος (Κίλινγκ) + Κονγκό - Κινσάσα + Κονγκό + Κεντροαφρικανική Δημοκρατία + Κονγκό - Μπραζαβίλ + Κονγκό (Δημοκρατία) + Ελβετία + Ακτή Ελεφαντοστού + Νήσοι Κουκ + Χιλή + Καμερούν + Κίνα + Κολομβία + Νήσος Κλίπερτον + Κόστα Ρίκα + Κούβα + Πράσινο Ακρωτήριο + Κουρασάο + Νήσος των Χριστουγέννων + Κύπρος + Τσεχική Δημοκρατία + Γερμανία + Ντιέγκο Γκαρσία + Τζιμπουτί + Δανία + Ντομίνικα + Δομινικανή Δημοκρατία + Αλγερία + Θεούτα και Μελίλα + Εκουαδόρ + Εσθονία + Αίγυπτος + Δυτική Σαχάρα + Ερυθραία + Ισπανία + Αιθιοπία + Ευρωπαϊκή Ένωση + Φινλανδία + Φίτζι + Νήσοι Φόκλαντ + Νήσοι Φόκλαντ (Νήσοι Μαλβίνας) + Μικρονησία + Νήσοι Φερόες + Γαλλία + Γκαμπόν + Ηνωμένο Βασίλειο + Η.Β. + Γρενάδα + Γεωργία + Γαλλική Γουιάνα + Γκέρνζι + Γκάνα + Γιβραλτάρ + Γροιλανδία + Γκάμπια + Γουινέα + Γουαδελούπη + Ισημερινή Γουινέα + Ελλάδα + Νήσοι Νότια Γεωργία και Νότιες Σάντουιτς + Γουατεμάλα + Γκουάμ + Γουινέα Μπισάου + Γουιάνα + Χονγκ Κονγκ ΕΔΠ Κίνας + Χονγκ Κονγκ + Νήσοι Χερντ και Μακντόναλντ + Ονδούρα + Κροατία + Αϊτή + Ουγγαρία + Κανάριοι Νήσοι + Ινδονησία + Ιρλανδία + Ισραήλ + Νήσος Μαν + Ινδία + Βρετανικά Εδάφη Ινδικού Ωκεανού + Ιράκ + Ιράν + Ισλανδία + Ιταλία + Τζέρζι + Τζαμάικα + Ιορδανία + Ιαπωνία + Κένυα + Κιργιστάν + Καμπότζη + Κιριμπάτι + Κομόρες + Άγιος Χριστόφορος και Νέβις + Βόρεια Κορέα + Νότια Κορέα + Κουβέιτ + Νήσοι Κάιμαν + Καζακστάν + Λάος + Λίβανος + Αγία Λουκία + Λιχτενστάιν + Σρι Λάνκα + Λιβερία + Λεσότο + Λιθουανία + Λουξεμβούργο + Λετονία + Λιβύη + Μαρόκο + Μονακό + Μολδαβία + Μαυροβούνιο + Άγιος Μαρτίνος (Γαλλικό τμήμα) + Μαδαγασκάρη + Νήσοι Μάρσαλ + ΠΓΔΜ + Μάλι + Μιανμάρ/Βιρμανία + Μογγολία + Μακάο ΕΔΠ Κίνας + Μακάο + Νήσοι Βόρειες Μαριάνες + Μαρτινίκα + Μαυριτανία + Μονσεράτ + Μάλτα + Μαυρίκιος + Μαλδίβες + Μαλάουι + Μεξικό + Μαλαισία + Μοζαμβίκη + Ναμίμπια + Νέα Καληδονία + Νίγηρας + Νήσος Νόρφολκ + Νιγηρία + Νικαράγουα + Ολλανδία + Νορβηγία + Νεπάλ + Ναουρού + Νιούε + Νέα Ζηλανδία + Ομάν + Παναμάς + Περού + Γαλλική Πολυνησία + Παπούα Νέα Γουινέα + Φιλιππίνες + Πακιστάν + Πολωνία + Σεν Πιερ και Μικελόν + Νήσοι Πίτκερν + Πουέρτο Ρίκο + Παλαιστινιακά Εδάφη + Παλαιστίνη + Πορτογαλία + Παλάου + Παραγουάη + Κατάρ + Περιφερειακή Ωκεανία + Ρεϊνιόν + Ρουμανία + Σερβία + Ρωσία + Ρουάντα + Σαουδική Αραβία + Νήσοι Σολομώντος + Σεϋχέλλες + Σουδάν + Σουηδία + Σιγκαπούρη + Αγία Ελένη + Σλοβενία + Σβάλμπαρντ και Γιαν Μαγιέν + Σλοβακία + Σιέρα Λεόνε + Άγιος Μαρίνος + Σενεγάλη + Σομαλία + Σουρινάμ + Νότιο Σουδάν + Σάο Τομέ και Πρίνσιπε + Ελ Σαλβαδόρ + Άγιος Μαρτίνος (Ολλανδικό τμήμα) + Συρία + Σουαζιλάνδη + Τριστάν ντα Κούνια + Νήσοι Τερκ και Κάικος + Τσαντ + Γαλλικές περιοχές του νοτίου ημισφαιρίου + Τόγκο + Ταϊλάνδη + Τατζικιστάν + Τοκελάου + Τιμόρ-Λέστε + Ανατολικό Τιμόρ + Τουρκμενιστάν + Τυνησία + Τόνγκα + Τουρκία + Τρινιντάντ και Τομπάγκο + Τουβαλού + Ταϊβάν + Τανζανία + Ουκρανία + Ουγκάντα + Απομακρυσμένες Νησίδες Η.Π.Α. + Ηνωμένες Πολιτείες + ΗΠΑ + Ουρουγουάη + Ουζμπεκιστάν + Βατικανό + Άγιος Βικέντιος και Γρεναδίνες + Βενεζουέλα + Βρετανικές Παρθένοι Νήσοι + Αμερικανικές Παρθένοι Νήσοι + Βιετνάμ + Βανουάτου + Ουάλις και Φουτούνα + Σαμόα + Κόσοβο + Υεμένη + Μαγιότ + Νότια Αφρική + Ζάμπια + Ζιμπάμπουε + Άγνωστη περιοχή + + + Παραδοσιακή γερμανική ορθογραφία + Τυποποιημένη ορθογραφία Ρεσιάν + Γερμανική ορθογραφία του 1996 + Νεότερα Μέσα Γαλλικά του 1606 + Πρώιμα Σύγχρονα Γαλλικά + Ακαδημαϊκά + Ανατολικά Αρμενικά + Δυτικά Αρμενικά + Ενοποιημένη τουρκική λατινική αλφάβητος + Διάλεκτος Σαν Τζιόρτζιο/Βίλα + Μπούντλινγκ + Διεθνής φωνητική αλφάβητος + Ουραλική φωνητική αλφάβητος + Κοινή ορθογραφία + Διάλεκτος Λιποβάζ της Ρεσιάν + Μονοτονικό + Διάλεκτος Νατισόνε + Διάλεκτος Γκνιβά/Ντζιβά + Διάλεκτος Οσεακό/Οσοτζάν + Εκλατινισμένα Πινγίν + Πολυτονικό + Υπολογιστής + Αναθεωρημένη ορθογραφία + Ρεσιάν + Σάχο + Σκοτσεζικά τυποποιημένα Αγγλικά + Σκουζ + Διάλεκτος Στολβιτζά/Σολμπικά + Ταρασκιεβική ορθογραφία + Ενωποιημένη ορθογραφία + Ενωποιημένη αναθεωρημένη ορθογραφία + Βαλενθιανά + Εκλατινισμένα Γουάντ-Γκιλς + + + Ημερολόγιο + Ταξινόμηση με αγνόηση συμβόλων + Ταξινόμηση με αντεστραμμένο τονισμό + Ταξινόμηση με κεφαλαίους/πεζούς χαρακτήρες + Ταξινόμηση με διάκριση χαρακτήρων + Ταξινόμηση Κάνα + Σειρά ταξινόμησης + Κανονικοποιημένη ταξινόμηση + Αριθμητική ταξινόμηση + Ισχύς ταξινόμησης + Νόμισμα + Αριθμοί + Ζώνη ώρας + Παραλλαγή τοπικών ρυθμίσεων + Ταξινόμηση ως σύμβολα + Προσωπική χρήση + + + Αραβικό-Ινδικά ψηφία + Εκτεταμένα αραβικό-ινδικά ψηφία + Αρμενικά αριθμητικά + Πεζά αρμενικά αριθμητικά + Βεγγαλικά ψηφία + Σειρά ταξινόμησης Παραδοσιακών Κινεζικών - Big5 + Βουδιστικό ημερολόγιο + Κινεζικό ημερολόγιο + Κοπτικό ημερολόγιο + Ψηφία Ντεβαναγκάρι + Σειρά ταξινόμησης ημερολογίου + Προεπιλεγμένη σειρά ταξινόμησης Unicode + Αιθιοπικά αριθμητικά + Αιθιοπικό ημερολόγιο + Αιθιοπικό ημερολόγιο Άμετ Άλεμ + Οικονομικά αριθμητικά + Ψηφία πλήρους πλάτους + Σειρά ταξινόμησης Απλουστευμένων Κινεζικών - GB2312 + Γεωργιανά αριθμητικά + Γρηγοριανό ημερολόγιο + Ελληνικά αριθμητικά + Ελληνικά αριθμητικά με πεζά γράμματα + Γκουτζαρατικά ψηφία + Ψηφία Γκουρμούκι + Κινεζικά δεκαδικά αριθμητικά + Απλοποιημένα κινεζικά αριθμητικά + Απλοποιημένα κινεζικά οικονομικά αριθμητικά + Παραδοσιακά κινεζικά αριθμητικά + Παραδοσιακά κινεζικά οικονομικά αριθμητικά + Εβραϊκά αριθμητικά + Εβραϊκό ημερολόγιο + Ταξινόμηση όλων + Ινδικό εθνικό ημερολόγιο + Ισλαμικό ημερολόγιο + Ισλαμικό αστικό ημερολόγιο + Ισλαμικό ημερολόγιο (Σαουδική Αραβία, θέαση) + Ισλαμικό ημερολόγιο (δομημένο, αστρονομική εποχή) + Ιαπωνικό ημερολόγιο + Ιαπωνικά αριθμητικά + Ιαπωνικά οικονομικά αριθμητικά + Ψηφία Χμερ + Ψηφία Κανάντα + Λαοϊκά ψηφία + Ψηφία της Δύσης + Ταξινόμηση πεζών χαρακτήρων πρώτα + Μαλαγιαλαμικά ψηφία + Μογγολικά ψηφία + Ψηφία Μιανμάρ + Εγγενή ψηφία + Κανονικά ταξινόμηση τόνων + Κανονική ταξινόμηση χαρακτήρων + Ταξινόμηση με διάκριση χαρακτήρων + Ξεχωριστή ταξινόμηση χαρακτήρων Κάνα + Ταξινόμηση χωρίς κανονικοποίηση + Μεμονωμένη ταξινόμηση ψηφίων + Ταξινόμηση συμβόλων + Οριγικά ψηφία + Περσικό ημερολόγιο + Σειρά ταξινόμησης τηλεφωνικού καταλόγου + Φωνητική σειρά ταξινόμησης + Σειρά ταξινόμησης Πινγίν + Ταξινόμηση μόνο βασικών χαρακτήρων + Ταξινόμηση τόνων/χαρακτήρων διάκρισης/χαρακτήρων μεγάλου μεγέθους/χαρακτήρων Κάνα + Ανασχηματισμένη σειρά ταξινόμησης + Ημερολόγιο της Δημοκρατίας της Κίνας + Λατινικοί αριθμοί + Πεζοί λατινικοί αριθμοί + Αναζήτηση γενικού τύπου + Αναζήτηση κατά αρχικό σύμφωνο Χανγκούλ + Ταξινόμηση τόνων + Ταξινόμηση με αγνόηση συμβόλων + Τυπική σειρά ταξινόμησης + Σειρά ταξινόμησης κινήσεων + Ταμιλικά αριθμητικά + Ταμιλικά ψηφία + Τελουγκουϊκά ψηφία + Ταξινόμηση τόνων/χαρακτήρων διάκρισης/χαρακτήρων μεγάλου μεγέθους + Ταϊλανδικά ψηφία + Θιβετανικά ψηφία + Παραδοσιακή σειρά ταξινόμησης + Παραδοσιακά αριθμητικά + Σειρά ταξινόμησης ριζικής αρίθμησης + Ταξινόμηση κεφαλαίων χαρακτήρων πρώτα + Ψηφία Βάι + Αντίστροφη ταξινόμηση τόνων + Ταξινόμηση χαρακτήρων διάκρισης + Διαφορετική ταξινόμηση Κάνα + Κανονικοποιημένη ταξινόμηση Unicode + Αριθμητική ταξινόμηση ψηφίων + + + BGN + Αριθμητικό + Τόνος + UNGEGN + Σημεία τονισμού + Πλήρους πλάτους + Μισού πλάτους + Τζάμο [Jamo] + Πινγίν + Έκδοση + + + Μετρικό + Βρετανικό + Αγγλοσαξωνικό + + + Γλώσσα: {0} + Σύστημα γραφής: {0} + Περιοχή: {0} + + + + + titlecase-firstword + titlecase-firstword + + + + [α ά β γ δ ε έ ζ η ή θ ι ί ϊ ΐ κ λ μ ν ξ ο ό π ρ σ ς τ υ ύ ϋ ΰ φ χ ψ ω ώ] + [ἀ ἄ ἂ ἆ ἁ ἅ ἃ ἇ ὰ ᾶ ἐ ἔ ἒ ἑ ἕ ἓ ὲ ἠ ἤ ἢ ἦ ἡ ἥ ἣ ἧ ὴ ῆ ἰ ἴ ἲ ἶ ἱ ἵ ἳ ἷ ὶ ῖ ῒ ῗ ὄ ὂ ὃ ὸ ὐ ὔ ὒ ὖ ὑ ὕ ὓ ὗ ὺ ῦ ῢ ῧ ὤ ὢ ὦ ὥ ὣ ὧ ὼ ῶ] + [Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω] + [\- ‐ – — , ; \: ! . … " ( ) \[ \] § @ * / \\ \&] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ; + + + « + » + " + " + + + + + + + BE + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + + {1} - {0} + + + + + {1} - {0} + + + + + {1} - {0} + + + + + {1} - {0} + + + + d + E d + y G + LLL y G + d MMM y G + E, d MMM y G + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + y G + M/y G + d/M/y G + E, d/M/y G + LLL y G + d MMM y G + E, d MMM y G + LLLL y G + G y QQQ + G y QQQQ + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH–HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a - h a v + h-h a v + + + HH–HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + LLL-LLL + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + + + LLL-LLL y + LLL y - LLL y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E, dd - E, dd MMM y G + E, dd MMM - E, dd MMM y G + E, dd MMM y - E, dd MMM y G + + + LLLL-LLLL y G + LLLL y - LLLL y G + + + + + + + + + Ιαν + Φεβ + Μαρ + Απρ + Μαΐ + Ιουν + Ιουλ + Αυγ + Σεπ + Οκτ + Νοε + Δεκ + + + Ι + Φ + Μ + Α + Μ + Ι + Ι + Α + Σ + Ο + Ν + Δ + + + Ιανουαρίου + Φεβρουαρίου + Μαρτίου + Απριλίου + Μαΐου + Ιουνίου + Ιουλίου + Αυγούστου + Σεπτεμβρίου + Οκτωβρίου + Νοεμβρίου + Δεκεμβρίου + + + + + Ιαν + Φεβ + Μάρ + Απρ + Μάι + Ιούν + Ιούλ + Αύγ + Σεπ + Οκτ + Νοέ + Δεκ + + + Ι + Φ + Μ + Α + Μ + Ι + Ι + Α + Σ + Ο + Ν + Δ + + + Ιανουάριος + Φεβρουάριος + Μάρτιος + Απρίλιος + Μάιος + Ιούνιος + Ιούλιος + Αύγουστος + Σεπτέμβριος + Οκτώβριος + Νοέμβριος + Δεκέμβριος + + + + + + + Κυρ + Δευ + Τρί + Τετ + Πέμ + Παρ + Σάβ + + + Κ + Δ + Τ + Τ + Π + Π + Σ + + + Κυ + Δε + Τρ + Τε + Πέ + Πα + Σά + + + Κυριακή + Δευτέρα + Τρίτη + Τετάρτη + Πέμπτη + Παρασκευή + Σάββατο + + + + + Κυρ + Δευ + Τρί + Τετ + Πέμ + Παρ + Σάβ + + + Κ + Δ + Τ + Τ + Π + Π + Σ + + + Κυ + Δε + Τρ + Τε + Πέ + Πα + Σά + + + Κυριακή + Δευτέρα + Τρίτη + Τετάρτη + Πέμπτη + Παρασκευή + Σάββατο + + + + + + + Τ1 + Τ2 + Τ3 + Τ4 + + + 1 + 2 + 3 + 4 + + + 1ο τρίμηνο + 2ο τρίμηνο + 3ο τρίμηνο + 4ο τρίμηνο + + + + + Τ1 + Τ2 + Τ3 + Τ4 + + + 1 + 2 + 3 + 4 + + + 1ο τρίμηνο + 2ο τρίμηνο + 3ο τρίμηνο + 4ο τρίμηνο + + + + + + + π.μ. + μ.μ. + + + + + + π.Χ. + π.Κ.Χ. + μ.Χ. + ΚΧ + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} - {0} + + + + + {1} - {0} + + + + + {1} - {0} + + + + + {1} - {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + LLL y G + d MMM y G + E, d MMM y G + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + LLL y + d MMM y + E, d MMM y + LLLL y + y QQQ + y QQQQ + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH–HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a - h a v + h-h a v + + + HH–HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + LLL-LLL + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + LLL-LLL y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E, dd MMM - E, dd MMM y + E, dd MMM - E, dd MMM y + E, dd MMM y - E, dd MMM y + + + LLLL-LLLL y + LLLL y - LLLL y + + + + + + + + π.μ. + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + d/M/yy + + + + + + E d + y G + d/M + E, d/M + LLL + d MMM + E, d MMM + y G + MM/y GGGGG + dd/MM/y GGGGG + E, dd/MM/y GGGGG + LLL y GGGGG + d MMM, y G + E, d MMM, y G + y GGGGG QQQ + + + + + + + Πριν R.O.C. + R.O.C. + + + + + + + Περίοδος + + + Έτος + προηγούμενο έτος + φέτος + επόμενο έτος + + Σε {0} έτος + Σε {0} έτη + + + Πριν από {0} έτος + Πριν από {0} έτη + + + + Μήνας + προηγούμενος μήνας + τρέχων μήνας + επόμενος μήνας + + Σε {0} μήνα + Σε {0} μήνες + + + Πριν από {0} μήνα + Πριν από {0} μήνες + + + + Εβδομάδα + προηγούμενη εβδομάδα + αυτήν την εβδομάδα + επόμενη εβδομάδα + + Σε {0} εβδομάδα + Σε {0} εβδομάδες + + + Πριν από {0} εβδομάδα + Πριν από {0} εβδομάδες + + + + Ημέρα + προχθές + χθες + σήμερα + αύριο + μεθαύριο + + Σε {0} ημέρα + Σε {0} ημέρες + + + Πριν από {0} ημέρα + Πριν από {0} ημέρες + + + + Ημέρα εβδομάδας + + + προηγούμενη Κυριακή + αυτήν την Κυριακή + επόμενη Κυριακή + + + προηγούμενη Δευτέρα + αυτήν τη Δευτέρα + επόμενη Δευτέρα + + + προηγούμενη Τρίτη + αυτήν την Τρίτη + επόμενη Τρίτη + + + προηγούμενη Τετάρτη + αυτήν την Τετάρτη + επόμενη Τετάρτη + + + επόμενη Πέμπτη + αυτήν την Πέμπτη + επόμενη Πέμπτη + + + προηγούμενη Παρασκευή + αυτήν την Παρασκευή + επόμενη Παρασκευή + + + προηγούμενο Σάββατο + αυτό το Σάββατο + επόμενο Σάββατο + + + π.μ./μ.μ. + + + Ώρα + + Σε {0} ώρα + Σε {0} ώρες + + + Πριν από {0} ώρα + Πριν από {0} ώρες + + + + Λεπτό + + Σε {0} λεπτό + Σε {0} λεπτά + + + Πριν από {0} λεπτό + Πριν από {0} λεπτά + + + + Δευτερόλεπτο + τώρα + + Σε {0} δευτερόλεπτο + Σε {0} δευτερόλεπτα + + + Πριν από {0} δευτερόλεπτο + Πριν από {0} δευτερόλεπτα + + + + Ζώνη + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Ώρα ({0}) + Θερινή ώρα ({0}) + Χειμερινή ώρα ({0}) + [{1} ({0})] + + Άγνωστη πόλη + + + Ανδόρα + + + Ντουμπάι + + + Καμπούλ + + + Αντίγκουα + + + Ανγκουίλα + + + Τίρανα + + + Γερεβάν + + + Λουάντα + + + Ροθέρα + + + Πάλμερ + + + Σίοβα + + + Μόουσον + + + Ντέιβις + + + Βόστοκ + + + Κάσεϊ + + + Ντιμόντ Ντερβίλ + + + Μακμέρντο + + + Ρίο Γκαγιέγκος + + + Μεντόζα + + + Σαν Χουάν + + + Ουσουάια + + + Λα Ριόχα + + + Σαν Λούις + + + Καταμάρκα + + + Σάλτα + + + Χουχούι + + + Τουκουμάν + + + Κόρδοβα + + + Μπουένος Άιρες + + + Πάγκο Πάγκο + + + Βιέννη + + + Περθ + + + Εούκλα + + + Ντάργουιν + + + Αδελαΐδα + + + Μπρόκεν Χιλ + + + Κιουρί + + + Μελβούρνη + + + Χόμπαρτ + + + Λίντεμαν + + + Σίδνεϊ + + + Μπρισμπέιν + + + Μακουάρι + + + Λορντ Χάουι + + + Αρούμπα + + + Μαριέχαμν + + + Μπακού + + + Σαράγεβο + + + Μπαρμπάντος + + + Ντάκα + + + Βρυξέλλες + + + Ουαγκαντούγκου + + + Σόφια + + + Μπαχρέιν + + + Μπουζουμπούρα + + + Πόρτο-Νόβο + + + Άγιος Βαρθολομαίος + + + Βερμούδα + + + Μπρουνέι + + + Λα Παζ + + + Κραλέντικ + + + Εϊρουνέπε + + + Ρίο Μπράνκο + + + Πόρτο Βέλο + + + Μπόα Βίστα + + + Μανάος + + + Κουϊάμπα + + + Σανταρέμ + + + Κάμπο Γκράντε + + + Μπέλεμ + + + Αραγκουάινα + + + Σάο Πάολο + + + Μπάχια + + + Φορταλέζα + + + Μασέιο + + + Ρεσίφε + + + Νορόνχα + + + Νασάου + + + Τρίμφου + + + Γκαμπορόνε + + + Μινσκ + + + Μπελίζ + + + Ντόσον + + + Γουάιτχορς + + + Ινούβικ + + + Βανκούβερ + + + Ντόσον Κρικ + + + Κρέστον + + + Γέλοουναϊφ + + + Έντμοντον + + + Σουίφτ Κάρρεντ + + + Κέμπριτζ Μπέι + + + Ρετζίνα + + + Γουίνιπεγκ + + + Ρέσολουτ + + + Ρέινι Ρίβερ + + + Ρέινκιν Ίνλετ + + + Κόραλ Χάρμπουρ + + + Θάντερ Μπέι + + + Νιπιγκόν + + + Τορόντο + + + Ικαλούτ + + + Πανγκνίρτουνγκ + + + Μονκτόν + + + Χάλιφαξ + + + Γκους Μπέι + + + Γκλέις Μπέι + + + Μπλαν Σαμπλόν + + + Σεντ Τζονς + + + Κόκος + + + Κινσάσα + + + Λουμπουμπάσι + + + Μπανγκί + + + Μπράζαβιλ + + + Ζυρίχη + + + Αμπιτζάν + + + Ραροτόνγκα + + + Νήσος Πάσχα + + + Σαντιάγκο + + + Ντουάλα + + + Κάσγκαρ + + + Ουρουμκί + + + Τσονγκίνγκ + + + Σανγκάη + + + Χαρμπίν + + + Μπογκοτά + + + Κόστα Ρίκα + + + Αβάνα + + + Πράσινο Ακρωτήριο + + + Κουρασάο + + + Χριστούγεννα + + + Λευκωσία + + + Πράγα + + + Μπίσινγκεν + + + Βερολίνο + + + Τζιμπουτί + + + Κοπεγχάγη + + + Δομινίκα + + + Άγιος Δομίνικος + + + Αλγέρι + + + Γκαλαπάγκος + + + Γκουαγιακύλ + + + Ταλίν + + + Κάιρο + + + Ελ Αγιούν + + + Ασμάρα + + + Κανάρια + + + Κέουτα + + + Μαδρίτη + + + Αντίς Αμπέμπα + + + Ελσίνκι + + + Φίτζι + + + Στάνλεϋ + + + Τσουκ + + + Πονάπε + + + Κοσράη + + + Φερόες + + + Παρίσι + + + Λιμπρεβίλ + + + + Θερινή ώρα Βρετανίας + + Λονδίνο + + + Γρενάδα + + + Τιφλίδα + + + Καγιένε + + + Γκέρνσεϊ + + + Άκρα + + + Γιβραλτάρ + + + Τούλε + + + Γκόνθαμπ + + + Σκορεσμπίσουντ + + + Ντανμαρκσάβν + + + Μπάνζουλ + + + Κόνακρι + + + Γουαδελούπη + + + Μαλάμπο + + + Αθήνα + + + Νότια Γεωργία + + + Γουατεμάλα + + + Γκουάμ + + + Μπισάου + + + Γουιάνα + + + Χονγκ Κονγκ + + + Τεγκουσιγκάλπα + + + Ζάγκρεμπ + + + Πορτ-ο-Πρενς + + + Βουδαπέστη + + + Τζακάρτα + + + Πόντιανακ + + + Μακασάρ + + + Χαγιαπούρα + + + + Θερινή ώρα Ιρλανδίας + + Δουβλίνο + + + Ιερουσαλήμ + + + Νήσος του Μαν + + + Καλκούτα + + + Τσάγκος + + + Βαγδάτη + + + Τεχεράνη + + + Ρέυκιαβικ + + + Ρώμη + + + Τζέρσεϊ + + + Τζαμάικα + + + Αμμάν + + + Τόκυο + + + Ναϊρόμπι + + + Μπισκέκ + + + Πνομ Πενχ + + + Εντερμπέρυ + + + Κιριτιμάτι + + + Ταράουα + + + Κομόρο + + + Άγιος Χριστόφορος (Σαιντ Κιτς) + + + Πιονγκγιάνγκ + + + Σεούλ + + + Κουβέιτ + + + Κέιμαν + + + Ακτάου + + + Όραλ + + + Ακτόμπε + + + Κτζιλ-Ορντά + + + Αλμάτυ + + + Βιεντιάνε + + + Βυρητός + + + Αγία Λουκία + + + Βαντούζ + + + Κολόμπο + + + Μονρόβια + + + Μασέρου + + + Βίλνιους + + + Λουξεμβούργο + + + Ρίγα + + + Τρίπολη + + + Καζαμπλάνκα + + + Μονακό + + + Κισινάου + + + Ποντγκόριτσα + + + Μάριγκοτ + + + Ανταναναρίβο + + + Κουαχαλέιν + + + Μαχούρο + + + Σκόπια + + + Μπαμάκο + + + Ρανγκούν + + + Χοβντ + + + Ουλάν Μπατόρ + + + Χόιμπαλσαν + + + Μακάο + + + Σάιπαν + + + Μαρτινίκα + + + Νουακσότ + + + Μονσεράτ + + + Μάλτα + + + Μαυρίκιος + + + Μαλδίβες + + + Μπλαντάιρ + + + Τιχουάνα + + + Σάντα Ιζαμπέλ + + + Ερμοσίγιο + + + Μαζατλάν + + + Τσιουάουα + + + Μπαχία Ντε Μπαντέρας + + + Οχινάγκα + + + Μοντερέι + + + Πόλη του Μεξικού + + + Ματαμόρος + + + Μέριντα + + + Κανκούν + + + Κουάλα Λουμπούρ + + + Κουτσίνγκ + + + Μαπούτο + + + Βίντχουκ + + + Νουμέα + + + Νιαμέι + + + Νόρφολκ + + + Λάγκος + + + Μανάγκουα + + + Άμστερνταμ + + + Όσλο + + + Κατμαντού + + + Ναούρου + + + Νιούε + + + Τσάταμ + + + Όκλαντ + + + Μασκάτ + + + Παναμάς + + + Λίμα + + + Ταϊτή + + + Μαρκέσας + + + Γκάμπιερ + + + Πορτ Μόρεσμπυ + + + Μανίλα + + + Καράτσι + + + Βαρσοβία + + + Μικελόν + + + Πίτκερν + + + Πουέρτο Ρίκο + + + Γάζα + + + Χεμπρόν + + + Αζόρες + + + Μαδέρα + + + Λισαβόνα + + + Παλάου + + + Ασουνσιόν + + + Κατάρ + + + Ρεϊνιόν + + + Βουκουρέστι + + + Βελιγράδι + + + Καλίνινγκραντ + + + Μόσχα + + + Βόλγκοκραντ + + + Σαμάρα + + + Αικατερίνμπουργκ + + + Ομσκ + + + Νοβοσιμπίρσκ + + + Νοβοκουζνέτσκ + + + Κρασνογιάρσκ + + + Ιρκούτσκ + + + Γιάκουτσκ + + + Βλαδιβοστόκ + + + Χαντίγκα + + + Σακαλίνσκ + + + Ουστ-Νερά + + + Μαγκαντάν + + + Καμτσάτκα + + + Αναντίρ + + + Κιγκάλι + + + Ριάντ + + + Γκουανταλκανάλ + + + Μάχε + + + Χαρτούμ + + + Στοκχόλμη + + + Σιγκαπούρη + + + Αγ. Ελένη + + + Λιουμπλιάνα + + + Λόνγκιεαρμπιεν + + + Μπρατισλάβα + + + Φρίταουν + + + Άγιος Μαρίνος + + + Ντακάρ + + + Μογκαντίσου + + + Παραμαρίμπο + + + Γιούμπα + + + Σάο Τομέ + + + Ελ Σαλβαδόρ + + + [Lower Prince's Quarter] + + + Δαμασκός + + + Μπαμπάνε + + + Γκραντ Τουρκ + + + Ντζαμένα + + + Κέργκουελεν + + + Λομέ + + + Μπανγκόκ + + + Ντουσάμπε + + + Φακαόφο + + + Ντίλι + + + Ασχαμπάτ + + + Τύνιδα + + + Τονγκατάπου + + + Κωνσταντινούπολη + + + Πορτ οφ Σπέιν + + + Φουναφούτι + + + Ταϊπέι + + + Νταρ Ες Σαλάμ + + + Ουζκόροντ + + + Κίεβο + + + Συμφερόπολη + + + Ζαπορόζιε + + + Καμπάλα + + + Μίντγουεϊ + + + Τζόνστον + + + Γουέικ + + + Άντακ + + + Νόμε + + + Χονολουλού + + + Άνκορατζ + + + Γιακούτατ + + + Σίτκα + + + Τζούνο + + + Μετλακάτλα + + + Λος Άντζελες + + + Μπόιζ + + + Φοίνιξ + + + Ντένβερ + + + Μπέουλαχ, Βόρεια Ντακότα + + + Νιου Σάλεμ, Βόρεια Ντακότα + + + Κέντρο, Βόρεια Ντακότα + + + Σικάγο + + + Μενομίνε + + + Βίνκενες, Ιντιάνα + + + Πίτερσμπεργκ, Ιντιάνα + + + Τελ Σίτυ, Ιντιάνα + + + Νοξ, Ιντιάνα + + + Γουίναμακ, Ιντιάνα + + + Μαρένγκο, Ιντιάνα + + + Ιντιανάπολις + + + Λούισβιλ + + + Βεβάι, Ιντιάνα + + + Μοντιτσέλο, Κεντάκι + + + Ντιτρόιτ + + + Νέα Υόρκη + + + Μοντεβιδέο + + + Σαμαρκάνδη + + + Τασκένδη + + + Βατικανό + + + Άγιος Βικέντιος + + + Καράκας + + + Τορτόλα + + + Άγιος Θωμάς + + + Πόλη Χο Τσι Μινχ + + + Εφάτε + + + Γουόλις + + + Άπια + + + Άντεν + + + Μαγιότε + + + Γιοχάνεσμπουργκ + + + Λουζάκα + + + Χαράρε + + + + Ώρα Αφγανιστάν + + + + + Ώρα Κεντρικής Αφρικής + + + + + Ώρα Ανατολικής Αφρικής + + + + + Ώρα Νότιας Αφρικής + + + + + Ώρα Δυτικής Αφρικής + Χειμερινή ώρα Δυτικής Αφρικής + Θερινή ώρα Δυτικής Αφρικής + + + + + Ώρα Αλάσκας + Χειμερινή ώρα Αλάσκας + Θερινή ώρα Αλάσκας + + + + + Ώρα Αμαζονίου + Χειμερινή ώρα Αμαζονίου + Θερινή ώρα Αμαζονίου + + + + + Κεντρική ώρα Βόρειας Αμερικής + Κεντρική χειμερινή ώρα Βόρειας Αμερικής + Κεντρική θερινή ώρα Βόρειας Αμερικής + + + + + Ανατολική ώρα Βόρειας Αμερικής + Ανατολική χειμερινή ώρα Βόρειας Αμερικής + Ανατολική θερινή ώρα Βόρειας Αμερικής + + + + + Ορεινή ώρα Βόρειας Αμερικής + Ορεινή χειμερινή ώρα Βόρειας Αμερικής + Ορεινή θερινή ώρα Βόρειας Αμερικής + + + + + Ώρα Βόρειας Αμερικής + Χειμερινή ώρα Βόρειας Αμερικής + Θερινή ώρα Βόρειας Αμερικής + + + + + Ώρα Αναντίρ + Χειμερινή ώρα Αναντίρ + Θερινή ώρα Αναντίρ + + + + + Αραβική ώρα + Αραβική χειμερινή ώρα + Αραβική θερινή ώρα + + + + + Ώρα Αργεντινής + Χειμερινή ώρα Αργεντινής + Θερινή ώρα Αργεντινής + + + + + Ώρα Δυτικής Αργεντινής + Χειμερινή ώρα Δυτικής Αργεντινής + Θερινή ώρα Δυτικής Αργεντινής + + + + + Ώρα Αρμενίας + Χειμερινή ώρα Αρμενίας + Θερινή ώρα Αρμενίας + + + + + Ώρα Ατλαντικού + Χειμερινή ώρα Ατλαντικού + Θερινή ώρα Ατλαντικού + + + + + Ώρα Κεντρικής Αυστραλίας + Χειμερινή ώρα Κεντρικής Αυστραλίας + Θερινή ώρα Κεντρικής Αυστραλίας + + + + + Ώρα Κεντροδυτικής Αυστραλίας + Χειμερινή ώρα Κεντροδυτικής Αυστραλίας + Θερινή ώρα Κεντροδυτικής Αυστραλίας + + + + + Ώρα Ανατολικής Αυστραλίας + Χειμερινή ώρα Ανατολικής Αυστραλίας + Θερινή ώρα Ανατολικής Αυστραλίας + + + + + Ώρα Δυτικής Αυστραλίας + Χειμερινή ώρα Δυτικής Αυστραλίας + Θερινή ώρα Δυτικής Αυστραλίας + + + + + Ώρα Αζερμπαϊτζάν + Χειμερινή ώρα Αζερμπαϊτζάν + Θερινή ώρα Αζερμπαϊτζάν + + + + + Ώρα Αζορών + Χειμερινή ώρα Αζορών + Θερινή ώρα Αζορών + + + + + Ώρα Μπανγκλαντές + Χειμερινή ώρα Μπανγκλαντές + Θερινή ώρα Μπανγκλαντές + + + + + Ώρα Μπουτάν + + + + + Ώρα Βολιβίας + + + + + Ώρα Μπραζίλια + Χειμερινή ώρα Μπραζίλια + Θερινή ώρα Μπραζίλια + + + + + Ώρα Μπρουνέι Νταρουσαλάμ + + + + + Ώρα Πράσινου Ακρωτηρίου + Χειμερινή ώρα Πράσινου Ακρωτηρίου + Θερινή ώρα Πράσινου Ακρωτηρίου + + + + + Ώρα Τσαμόρο + + + + + Ώρα Τσάθαμ + Χειμερινή ώρα Τσάθαμ + Θερινή ώρα Τσάθαμ + + + + + Ώρα Χιλής + Χειμερινή ώρα Χιλής + Θερινή ώρα Χιλής + + + + + Ώρα Κίνας + Χειμερινή ώρα Κίνας + Θερινή ώρα Κίνας + + + + + Ώρα Τσοϊμπαλσάν + Χειμερινή ώρα Τσοϊμπαλσάν + Θερινή ώρα Τσοϊμπαλσάν + + + + + Ώρα Νησιού Χριστουγέννων + + + + + Ώρα Νησιών Κόκος + + + + + Ώρα Κολομβίας + Χειμερινή ώρα Κολομβίας + Θερινή ώρα Κολομβίας + + + + + Ώρα Νησιών Κουκ + Χειμερινή ώρα Νησιών Κουκ + Θερινή ώρα Νησιών Κουκ + + + + + Ώρα Κούβας + Χειμερινή ώρα Κούβας + Θερινή ώρα Κούβας + + + + + Ώρα Ντέιβις + + + + + Ώρα Ντιμόντ Ντερβίλ + + + + + Ώρα Ανατολικού Τιμόρ + + + + + Ώρα Νησιού Πάσχα + Χειμερινή ώρα Νησιού Πάσχα + Θερινή ώρα Νησιού Πάσχα + + + + + Ώρα Εκουαδόρ + + + + + Ώρα Κεντρικής Ευρώπης + Χειμερινή ώρα Κεντρικής Ευρώπης + Θερινή ώρα Κεντρικής Ευρώπης + + + CET + CET + CEST + + + + + Ώρα Ανατολικής Ευρώπης + Χειμερινή ώρα Ανατολικής Ευρώπης + Θερινή ώρα Ανατολικής Ευρώπης + + + EET + EET + EEST + + + + + Ώρα Δυτικής Ευρώπης + Χειμερινή ώρα Δυτικής Ευρώπης + Θερινή ώρα Δυτικής Ευρώπης + + + WET + WET + WEST + + + + + Ώρα Νησιών Φώκλαντ + Χειμερινή ώρα Νησιών Φώκλαντ + Θερινή ώρα Νησιών Φώκλαντ + + + + + Ώρα Φίτζι + Χειμερινή ώρα Φίτζι + Θερινή ώρα Φίτζι + + + + + Ώρα Γαλλικής Γουιάνας + + + + + Ώρα Γαλλικού Νότου και Ανταρκτικής + + + + + Ώρα Γκαλάπαγκος + + + + + Ώρα Γκάμπιερ + + + + + Ώρα Γεωργίας + Χειμερινή ώρα Γεωργίας + Θερινή ώρα Γεωργίας + + + + + Ώρα Νησιών Γκίλμπερτ + + + + + Μέση ώρα Γκρίνουιτς + + + + + Ώρα Ανατολικής Γροιλανδίας + Χειμερινή ώρα Ανατολικής Γροιλανδίας + Θερινή ώρα Ανατολικής Γροιλανδίας + + + + + Ώρα Δυτικής Γροιλανδίας + Χειμερινή ώρα Δυτικής Γροιλανδίας + Θερινή ώρα Δυτικής Γροιλανδίας + + + + + Ώρα Γκουάμ + + + + + Ώρα Κόλπου + + + + + Ώρα Γουιάνας + + + + + Ώρα Χαβάης-Αλεούτιων νήσων + Χειμερινή ώρα Χαβάης-Αλεούτιων νήσων + Θερινή ώρα Χαβάης-Αλεούτιων νήσων + + + + + Ώρα Χονγκ Κονγκ + Χειμερινή ώρα Χονγκ Κονγκ + Θερινή ώρα Χονγκ Κονγκ + + + + + Ώρα Χοβντ + Χειμερινή ώρα Χοβντ + Θερινή ώρα Χοβντ + + + + + Ώρα Ινδίας + + + + + Ώρα Ινδικού Ωκεανού + + + + + Ώρα Ινδοκίνας + + + + + Ώρα: Κεντρική Ινδονησία + + + + + Ώρα: Ανατολική Ινδονησία + + + + + Ώρα: Δυτική Ινδονησία + + + + + Ώρα Ιράν + Χειμερινή ώρα Ιράν + Θερινή ώρα Ιράν + + + + + Ώρα Ιρκούτσκ + Χειμερινή ώρα Ιρκούτσκ + Θερινή ώρα Ιρκούτσκ + + + + + Ώρα Ισραήλ + Χειμερινή ώρα Ισραήλ + Θερινή ώρα Ισραήλ + + + + + Ώρα Ιαπωνίας + Χειμερινή ώρα Ιαπωνίας + Θερινή ώρα Ιαπωνίας + + + + + Ώρα Καμτσάτκα + Χειμερινή ώρα Πετροπαβλόβσκ-Καμτσάτσκι + Θερινή ώρα Πετροπαβλόβσκ-Καμτσάτσκι + + + + + Ώρα Ανατολικού Καζακστάν + + + + + Ώρα Δυτικού Καζακστάν + + + + + Ώρα Κορέας + Χειμερινή ώρα Κορέας + Θερινή ώρα Κορέας + + + + + Ώρα Κοσράης + + + + + Ώρα Κρασνόγιαρσκ + Χειμερινή ώρα Κρασνόγιαρσκ + Θερινή ώρα Κρασνόγιαρσκ + + + + + Ώρα Κιργιστάν + + + + + Ώρα Νησιών Λάιν + + + + + Ώρα Λορντ Χάου + Χειμερινή ώρα Λορντ Χάου + Θερινή ώρα Λορντ Χάου + + + + + Ώρα Μακάο + Χειμερινή ώρα Μακάο + Θερινή ώρα Μακάο + + + + + Ώρα Νησιού Μακουάρι + + + + + Ώρα Μάγκανταν + Χειμερινή ώρα Μάγκανταν + Θερινή ώρα Μάγκανταν + + + + + Ώρα Μαλαισίας + + + + + Ώρα Μαλδίβων + + + + + Ώρα Μαρκέσας + + + + + Ώρα Νησιών Μάρσαλ + + + + + Ώρα Μαυρίκιου + Χειμερινή ώρα Μαυρίκιου + Θερινή ώρα Μαυρίκιου + + + + + Ώρα Μόσον + + + + + Ώρα Ουλάν Μπατόρ + Χειμερινή ώρα Ουλάν Μπατόρ + Θερινή ώρα Ουλάν Μπατόρ + + + + + Ώρα Μόσχας + Χειμερινή ώρα Μόσχας + Θερινή ώρα Μόσχας + + + + + Ώρα Μιανμάρ + + + + + Ώρα Ναούρου + + + + + Ώρα Νεπάλ + + + + + Ώρα Νέας Καληδονίας + Χειμερινή ώρα Νέας Καληδονίας + Θερινή ώρα Νέας Καληδονίας + + + + + Ώρα Νέας Ζηλανδίας + Χειμερινή ώρα Νέας Ζηλανδίας + Θερινή ώρα Νέας Ζηλανδίας + + + + + Ώρα Νέας Γης + Χειμερινή ώρα Νέας Γης + Θερινή ώρα Νέας Γης + + + + + Ώρα Νιούε + + + + + Ώρα Νησιών Νόρφολκ + + + + + Ώρα Φερνάρντο ντε Νορόνια + Χειμερινή ώρα Φερνάρντο ντε Νορόνια + Θερινή ώρα Φερνάρντο ντε Νορόνια + + + + + Ώρα Νησιών Βόρειες Μαριάνες + + + + + Ώρα Νοβοσιμπίρσκ + Χειμερινή ώρα Νοβοσιμπίρσκ + Θερινή ώρα Νοβοσιμπίρσκ + + + + + Ώρα Ομσκ + Χειμερινή ώρα Ομσκ + Θερινή ώρα Ομσκ + + + + + Ώρα Πακιστάν + Χειμερινή ώρα Πακιστάν + Θερινή ώρα Πακιστάν + + + + + Ώρα Παλάου + + + + + Ώρα Παπουά Νέα Γουινέα + + + + + Ώρα Παραγουάης + Χειμερινή ώρα Παραγουάης + Θερινή ώρα Παραγουάης + + + + + Ώρα Περού + Χειμερινή ώρα Περού + Θερινή ώρα Περού + + + + + Ώρα Φιλιππινών + Χειμερινή ώρα Φιλιππινών + Θερινή ώρα Φιλιππινών + + + + + Ώρα Νησιών Φίνιξ + + + + + Ώρα Σαιντ Πιερ και Μικελόν + Χειμερινή ώρα Σαιντ Πιερ και Μικελόν + Θερινή ώρα Σαιντ Πιερ και Μικελόν + + + + + Ώρα Πίτκερν + + + + + Ώρα Πονάπε + + + + + Ώρα Ρεϊνιόν + + + + + Ώρα Ροθέρα + + + + + Ώρα Σαχαλίνης + Χειμερινή ώρα Σαχαλίνης + Θερινή ώρα Σαχαλίνης + + + + + Ώρα Σάμαρας + Χειμερινή ώρα Σάμαρας + Θερινή ώρα Σαμάρας + + + + + Ώρα Σαμόα + Χειμερινή ώρα Σαμόα + Θερινή ώρα Σαμόα + + + + + Ώρα Σεϋχελλών + + + + + Ώρα Σιγκαπούρης + + + + + Ώρα Νησιών Σολομώντα + + + + + Ώρα Νότιας Γεωργίας + + + + + Ώρα Σουρινάμ + + + + + Ώρα Σίοβα + + + + + Ώρα Αϊτής + + + + + Ώρα Ταϊπέι + Χειμερινή ώρα Ταϊπέι + Θερινή ώρα Ταϊπέι + + + + + Ώρα Τατζικιστάν + + + + + Ώρα Τοκελάου + + + + + Ώρα Τόνγκα + Χειμερινή ώρα Τόνγκα + Θερινή ώρα Τόνγκα + + + + + Ώρα Τσουκ + + + + + Ώρα Τουρκμενιστάν + Χειμερινή ώρα Τουρκμενιστάν + Θερινή ώρα Τουρκμενιστάν + + + + + Ώρα Τουβαλού + + + + + Ώρα Ουρουγουάης + Χειμερινή ώρα Ουρουγουάης + Θερινή ώρα Ουρουγουάης + + + + + Ώρα Ουζμπεκιστάν + Χειμερινή ώρα Ουζμπεκιστάν + Θερινή ώρα Ουζμπεκιστάν + + + + + Ώρα Βανουάτου + Χειμερινή ώρα Βανουάτου + Θερινή ώρα Βανουάτου + + + + + Ώρα Βενεζουέλας + + + + + Ώρα Βλαδιβοστόκ + Χειμερινή ώρα Βλαδιβοστόκ + Θερινή ώρα Βλαδιβοστόκ + + + + + Ώρα Βόλγκογκραντ + Χειμερινή ώρα Βόλγκογκραντ + Θερινή ώρα Βόλγκογκραντ + + + + + Ώρα Βόστοκ + + + + + Ώρα Νησιού Γουέικ + + + + + Ώρα Ουόλις και Φουτούνα + + + + + Ώρα Γιακούτσκ + Χειμερινή ώρα Γιακούτσκ + Θερινή ώρα Γιακούτσκ + + + + + Ώρα Αικατερίνμπουργκ + Χειμερινή ώρα Αικατερίνμπουργκ + Θερινή ώρα Αικατερίνμπουργκ + + + + + + latn + + latn + grek + + + , + . + ; + % + + + - + e + × + + + NaN + + + + + #,##0.### + + + + + 0 χιλιάδα + 0 χιλιάδες + 00 χιλιάδες + 00 χιλιάδες + 000 χιλιάδες + 000 χιλιάδες + 0 εκατομμύριο + 0 εκατομμύρια + 00 εκατομμύρια + 00 εκατομμύρια + 000 εκατομμύρια + 000 εκατομμύρια + 0 δισεκατομμύριο + 0 δισεκατομμύρια + 00 δισεκατομμύρια + 00 δισεκατομμύρια + 000 δισεκατομμύρια + 000 δισεκατομμύρια + 0 τρισεκατομμύριο + 0 τρισεκατομμύρια + 00 τρισεκατομμύρια + 00 τρισεκατομμύρια + 000 τρισεκατομμύρια + 000 τρισεκατομμύρια + + + + + 0 χιλ'.' + 0 χιλ'.' + 00 χιλ'.' + 00 χιλ'.' + 000 χιλ'.' + 000 χιλ'.' + 0 εκ'.' + 0 εκ'.' + 00 εκ'.' + 00 εκ'.' + 000 εκ'.' + 000 εκ'.' + 0 δισ'.' + 0 δισ'.' + 00 δισ'.' + 00 δισ'.' + 000 δισ'.' + 000 δισ'.' + 0 τρισ'.' + 0 τρισ'.' + 00 τρισ'.' + 00 τρισ'.' + 000 τρισ'.' + 000 τρισ'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Πεσέτα Ανδόρας + πεσέτα Ανδόρας + πεσέτες Ανδόρας + + + Ντιράμ Ηνωμένων Αραβικών Εμιράτων + ντιράμ Ηνωμένων Αραβικών Εμιράτων + ντιράμ Ηνωμένων Αραβικών Εμιράτων + + + Αφγανί Αφγανιστάν (1927–2002) + αφγάνι Αφγανιστάν (AFA) + αφγάνι Αφγανιστάν (AFA) + + + Αφγάνι Αφγανιστάν + αφγάνι Αφγανιστάν + αφγάνι Αφγανιστάν + + + Παλαιό λεκ Αλβανίας + Παλαιά λεκ Αλβανίας + + + Λεκ Αλβανίας + λεκ Αλβανίας + λεκ Αλβανίας + + + Ντραμ Αρμενίας + ντραμ Αρμενίας + ντραμ Αρμενίας + + + Γκίλντα Ολλανδικών Αντιλλών + γκίλντα Ολλανδικών Αντιλλών + γκίλντα Ολλανδικών Αντιλλών + + + Κουάνζα Ανγκόλας + κουάνζα Ανγκόλας + κουάνζα Ανγκόλας + + + Κουάνζα Ανγκόλας (1977–1990) + κουάνζα Ανγκόλας (AOK) + κουάνζα Ανγκόλας (AOK) + + + Νέα Κουάνζα Ανγκόλας (1990–2000) + νέο κουάνζα Ανγκόλας (1990–2000) + νέα κουάνζα Ανγκόλας (1990–2000) + + + Ωστράλ Αργετινής + αουστράλ Αργεντινής + αουστράλ Αργεντινής + + + Πέσο λέι Αργετινής + Πέσο λέι Αργετινής + + + Πέσο Αργεντινής (1983–1985) + πέσο Αργεντινής (ARP) + πέσο Αργεντινής (ARP) + + + Πέσο Αργεντινής + πέσο Αργεντινής + πέσο Αργεντινής + + + Σελίνι Αυστρίας + σελίνι Αυστρίας + σελίνια Αυστρίας + + + Δολάριο Αυστραλίας + δολάριο Αυστραλίας + δολάρια Αυστραλίας + A$ + + + Φλορίνι Αρούμπα + φλορίνι Αρούμπα + φλορίνια Αρούμπα + + + Μανάτ Αζερμπαϊτζάν (1993–2006) + μανάτ Αζερμπαϊτζάν (1993–2006) + μανάτ Αζερμπαϊτζάν (1993–2006) + + + Μανάτ Αζερμπαϊτζάν + μανάτ Αζερμπαϊτζάν + μανάτ Αζερμπαϊτζάν + + + Δηνάριο Βοσνίας-Ερζεγοβίνης + δηνάριο Βοσνίας-Ερζεγοβίνης + δηνάρια Βοσνίας-Ερζεγοβίνης + + + Μετατρέψιμο Μάρκο Βοσνίας-Ερζεγοβίνης + μετατρέψιμο μάρκο Βοσνίας-Ερζεγοβίνης + μετατρέψιμα μάρκα Βοσνίας-Ερζεγοβίνης + + + Νέο δινάριο Βοσνίας-Ερζεγοβίνης + Νέα δινάρια Βοσνίας-Ερζεγοβίνης + + + Δολάριο Μπαρμπάντος + δολάριο Μπαρμπάντος + δολάρια Μπαρμπάντος + + + Τάκα Μπαγκλαντές + τάκα Μπαγκλαντές + τάκα Μπαγκλαντές + + + Φράγκο Βελγίου (μετατρέψιμο) + φράγκο Βελγίου (μετατρέψιμο) + φράγκα Βελγίου (μετατρέψιμα) + + + Φράγκο Βελγίου + φράγκο Βελγίου + φράγκα Βελγίου + + + Φράγκο Βελγίου (οικονομικό) + φράγκο Βελγίου (οικονομικό) + φράγκα Βελγίου (οικονομικό) + + + Μεταλλικό Λεβ Βουλγαρίας + μεταλλικό λεβ Βουλγαρίας + μεταλλικά λεβ Βουλγαρίας + + + Σοσιαλιστικό λεβ Βουλγαρίας + Σοσιαλιστικά λεβ Βουλγαρίας + + + Λεβ Βουλγαρίας + λεβ Βουλγαρίας + λεβ Βουλγαρίας + + + Παλαιό λεβ Βουλγαρίας + Παλαιά λεβ Βουλγαρίας + + + Δηνάριο Μπαχρέιν + δηνάριο Μπαχρέιν + δηνάρια Μπαχρέιν + + + Φράγκο Μπουρούντι + φράγκο Μπουρούντι + φράγκα Μπουρούντι + + + Δολάριο Βερμούδων + δολάριο Βερμούδων + δολάρια Βερμούδων + + + Δολάριο Μπρουνέι + δολάριο Μπρουνέι + δολάρια Μπρουνέι + + + Μπολιβιάνο Βολιβίας + μπολιβιάνο Βολιβίας + μπολιβιάνο Βολιβίας + + + Παλαιό βολιβιάνο Βολιβίας + Παλαιά βολιβιάνο Βολιβίας + + + Πέσο Βολιβίας + πέσο Βολιβίας + πέσο Βολιβίας + + + Μβδολ Βολιβίας + μβντολ Βολιβίας + μβντολ Βολιβίας + + + Νέο Κρουζιέρο Βραζιλίας (1967–1986) + νέο κρουζέιρο Βραζιλίας (BRB) + νέα κρουζέιρο Βραζιλίας (BRB) + + + Κρουζάντο Βραζιλίας + κρουζάντο Βραζιλίας + κρουζάντο Βραζιλίας + + + Κρουζιέρο Βραζιλίας (1990–1993) + κρουζέιρο Βραζιλίας (BRE) + κρουζέιρο Βραζιλίας (BRE) + + + Ρεάλ Βραζιλίας + ρεάλ Βραζιλίας + ρεάλ Βραζιλίας + R$ + + + Νέο Κρουζάντο Βραζιλίας + νέο κρουζάντο Βραζιλίας + νέα κρουζάντο Βραζιλίας + + + Κρουζιέρο Βραζιλίας + κρουζέιρο Βραζιλίας + κρουζέιρο Βραζιλίας + + + Παλαιό κρουζέιρο Βραζιλίας + Παλαιά κρουζέιρο Βραζιλίας + + + Δολάριο Μπαχάμες + δολάριο Μπαχάμες + δολάρια Μπαχάμες + + + Νγκούλτρουμ Μπουτάν + νγκούλτρουμ Μπουτάν + νγκούλτρουμ Μπουτάν + + + Κιατ Βιρμανίας + κιάτ Βιρμανίας + κιάτ Βιρμανίας + + + Πούλα Μποτσουάνας + πούλα Μποτσουάνας + πούλα Μποτσουάνας + + + Νέο Ρούβλι Λευκορωσίας (1994–1999) + νέο ρούβλι Λευκορωσίας (1994–1999) + νέα ρούβλια Λευκορωσίας (1994–1999) + + + Ρούβλι Λευκορωσίας + ρούβλι Λευκορωσίας + ρούβλια Λευκορωσίας + + + Δολάριο Μπελίζ + δολάριο Μπελίζ + δολάρια Μπελίζ + + + Δολάριο Καναδά + δολάριο Καναδά + δολάρια Καναδά + CA$ + + + Φράγκο Κονγκό + φράγκο Κονγκό + φράγκα Κονγκό + + + Ευρώ WIR + ευρώ WIR + ευρώ WIR + + + Φράγκο Ελβετίας + φράγκο Ελβετίας + φράγκα Ελβετίας + + + Φράγκο WIR + φράγκο WIR + φράγκα WIR + + + Εσκούδο Χιλής + Εσκούδο Χιλής + Εσκούδο Χιλής + + + Ουνιδάδες ντε φομέντο Χιλής + ουνιδάδες ντε φομέντο Χιλής + ουνιδάδες ντε φομέντο Χιλής + + + Πέσο Χιλής + πέσο Χιλής + πέσο Χιλής + + + Δολάριο Λαϊκής Τράπεζας Κίνας + Δολάρια Λαϊκής Τράπεζας Κίνας + + + Γουάν Κίνας + γουάν Κίνας + γουάν Κίνας + CN¥ + + + Πέσο Κολομβίας + πέσο Κολομβίας + πέσο Κολομβίας + + + Κολόν Κόστα Ρίκα + κολόν Κόστα Ρίκα + κολόν Κόστα Ρίκα + + + Παλαιό Δηνάριο Σερβίας + παλιό δινάρη Σερβίας + παλιά δινάρια Σερβίας + + + Σκληρή Κορόνα Τσεχοσλοβακίας + σκληρή κορόνα Τσεχοσλοβακίας + σκληρές κορόνες Τσεχοσλοβακίας + + + Μετατρέψιμο πέσο Κούβας + μετατρέψιμο πέσο Κούβας + μετατρέψιμα πέσο Κούβας + + + Πέσο Κούβας + πέσο Κούβας + πέσο Κούβας + + + Εσκούδο Πράσινου Ακρωτηρίου + εσκούδο Πράσινου Ακρωτηρίου + εσκούδο Πράσινου Ακρωτηρίου + + + Λίρα Κύπρου + λίρα Κύπρου + λίρες Κύπρου + + + Κορόνα Τσεχίας + κορόνα Τσεχίας + κορόνες Τσεχίας + + + Οστμάρκ Ανατολικής Γερμανίας + όστμαρκ Ανατολικής Γερμανίας + όστμαρκ Ανατολικής Γερμανίας + + + Μάρκο Γερμανίας + μάρκο Γερμανίας + μάρκα Γερμανίας + + + Φράγκο Τζιμπουτί + φράγκο Τζιμπουτί + φράγκα Τζιμπουτί + + + Κορόνα Δανίας + κορόνα Δανίας + κορόνες Δανίας + + + Πέσο Δομινικανής Δημοκρατίας + πέσο Δομινικανής Δημοκρατίας + πέσο Δομινικανής Δημοκρατίας + + + Δηνάριο Αλγερίας + δηνάριο Αλγερίας + δηνάρια Αλγερίας + + + Σούκρε Εκουαδόρ + σούκρε Εκουαδόρ + σούκρε Εκουαδόρ + + + Κορόνα Εσθονίας + κορόνα Εσθονίας + κορόνες Εσθονίας + + + Λίρα Αιγύπτου + λίρα Αιγύπτου + λίρες Αιγύπτου + + + Νάκφα Ερυθραίας + νάκφα Ερυθραίας + νάκφα Ερυθραίας + + + πεσέτα Ισπανίας (λογαριασμός Α) + πεσέτα Ισπανίας (λογαριασμός Α) + πεσέτες Ισπανίας (λογαριασμός Α) + + + πεσέτα Ισπανίας (μετατρέψιμος λογαριασμός) + πεσέτα Ισπανίας (μετατρέψιμος λογαριασμός) + πεσέτες Ισπανίας (μετατρέψιμες) + + + Πεσέτα Ισπανίας + πεσέτα Ισπανίας + πεσέτες Ισπανίας + + + Μπιρ Αιθιοπίας + μπιρ Αιθιοπίας + μπιρ Αιθιοπίας + + + Ευρώ + ευρώ + ευρώ + + + + Μάρκο Φινλανδίας + μάρκο Φινλανδίας + μάρκα Φινλανδίας + + + Δολάριο Φίτζι + δολάριο Φίτζι + δολάρια Φίτζι + + + Λίρα Νησιών Φώκλαντ + λίρα Νησιών Φώκλαντ + λίρες Νησιών Φώκλαντ + + + Φράγκο Γαλλίας + φράγκο Γαλλίας + φράγκα Γαλλίας + + + Λίρα Στερλίνα Βρετανίας + λίρα στερλίνα Βρετανίας + λίρες στερλίνες Βρετανίας + £ + + + Κούπον Λάρι Γεωργίας + κούπον λάρι Γεωργίας + κούπον λάρι Γεωργίας + + + Λάρι Γεωργίας + λάρι Γεωργίας + λάρι Γεωργίας + + + Σέντι Γκάνας (1979–2007) + σέντι Γκάνας (GHC) + σέντι Γκάνας (GHC) + + + Σέντι Γκάνας + σέντι Γκάνας + σέντι Γκάνας + + + Λίρα Γιβραλτάρ + λίρα Γιβραλτάρ + λίρες Γιβραλτάρ + + + Νταλάσι Γκάμπιας + νταλάσι Γκάμπιας + νταλάσι Γκάμπιας + + + Φράγκο Γουινέας + φράγκο Γουινέας + φράγκα Γουινέας + + + Συλί Γουινέας + συλί Γουινέας + συλί Γουινέας + + + Εκγουέλε Ισημερινής Γουινέας + εκουέλε Ισημερινής Γουινέας + εκουέλε Ισημερινής Γουινέας + + + #,##0.00 ¤ + Δραχμή Ελλάδας + δραχμή Ελλάδας + δραχμές Ελλάδας + Δρχ + , + . + + + Κουετσάλ Γουατεμάλας + κουετσάλ Γουατεμάλας + κουετσάλ Γουατεμάλας + + + Γκινέα Εσκούδο Πορτογαλίας + γκινέα εσκούδο Πορτογαλίας + γκινέα εσκούδο Πορτογαλίας + + + Πέσο Γουινέας-Μπισάου + πέσο Γουινέα-Μπισάου + πέσο Γουινέα-Μπισάου + + + Δολάριο Γουιάνας + δολάριο Γουιάνας + δολάρια Γουιάνας + + + Δολάριο Χονγκ Κονγκ + δολάριο Χονγκ Κονγκ + δολάρια Χονγκ Κονγκ + HK$ + + + Λεμπίρα Ονδούρας + λεμπίρα Ονδούρας + λεμπίρα Ονδούρας + + + Δηνάριο Κροατίας + δηνάριο Κροατίας + δηνάρια Κροατίας + + + Κούνα Κροατίας + κούνα Κροατίας + κούνα Κροατίας + + + Γκουρντ Αϊτής + γκουρντ Αϊτής + γκουρντ Αϊτής + + + Φιορίνι Ουγγαρίας + φιορίνι Ουγγαρίας + φιορίνια Ουγγαρίας + + + Ρουπία Ινδονησίας + ρουπία Ινδονησίας + ρουπία Ινδονησίας + + + Λίρα Ιρλανδίας + λίρα Ιρλανδίας + λίρες Ιρλανδίας + + + Λίρα Ισραήλ + λίρα Ισραήλ + λίρες Ισραήλ + + + παλιό σεκέλ Ισραήλ + παλιό σεκέλ Ισραήλ + παλιά σεκέλ Ισραήλ + + + Νέο Σέκελ Ισραήλ + νέο σέκελ Ισραήλ + νέα σέκελ Ισραήλ + + + + Ρουπία Ινδίας + ρουπία Ινδίας + ρουπίες Ινδίας + + + + Δηνάριο Ιράκ + δηνάριο Ιράκ + δηνάρια Ιράκ + + + Ριάλ Ιράν + ριάλ Ιράν + ριάλ Ιράν + + + Παλιά κορόνα Ισλανδίας + Παλιά κορόνα Ισλανδίας + παλιές κορόνες Ισλανδίας + + + Κορόνα Ισλανδίας + κορόνα Ισλανδίας + κορόνες Ισλανδίας + + + Λιρέτα Ιταλίας + λιρέτα Ιταλίας + λιρέτες Ιταλίας + + + Δολάριο Τζαμάικας + δολάριο Τζαμάικας + δολάρια Τζαμάικας + + + Δηνάριο Ιορδανίας + δηνάριο Ιορδανίας + δηνάρια Ιορδανίας + + + Γιεν Ιαπωνίας + γιεν Ιαπωνίας + γιεν Ιαπωνίας + JP¥ + + + Σελίνι Κένυας + σελίνι Κένυας + σελίνια Κένυας + + + Σομ Κιργιζίας + σομ Κιργιζίας + σομ Κιργιζίας + + + Ρίελ Καμπότζης + ρίελ Καμπότζης + ρίελ Καμπότζης + + + Φράγκο Κομορών + φράγκο Κομορών + φράγκα Κομορών + + + Γουόν Βόρειας Κορέας + γουόν Βόρειας Κορέας + γουόν Βόρειας Κορέας + + + Παλιό γον Νότιας Κορέας + Παλιά γον Νότιας Κορέας + + + Γουόν Νότιας Κορέας + γουόν Νότιας Κορέας + γουόν Νότιας Κορέας + + + + Δηνάριο Κουβέιτ + δηνάριο Κουβέιτ + δηνάρια Κουβέιτ + + + Δολάριο Νήσων Κάιμαν + δολάριο Νήσων Κάιμαν + δολάρια Νήσων Κάιμαν + + + Τένγκε Καζακστάν + τένγκε Καζακστάν + τένγκε Καζακστάν + + + Κιπ Λάος + κιπ Λάος + κιπ Λάος + + + Λίρα Λιβάνου + λίρα Λιβάνου + λίρες Λιβάνου + + + Ρουπία Σρι Λάνκα + ρουπία Σρι Λάνκα + ρουπίες Σρι Λάνκα + + + Δολάριο Λιβερίας + δολάριο Λιβερίας + δολάρια Λιβερίας + + + Λότι Λεσότο + λότι Λεσόθο + λότι Λεσόθο + + + Λίτα Λιθουανίας + λίτα Λιθουανίας + λίτα Λιθουανίας + + + Ταλόνας Λιθουανίας + ταλόνας Λιθουανίας + ταλόνας Λιθουανίας + + + Μετατρέψιμο Φράγκο Λουξεμβούργου + + + Φράγκο Λουξεμβούργου + φράγκο Λουξεμβούργου + φράγκα Λουξεμβούργου + + + Οικονομικό Φράγκο Λουξεμβούργου + + + Λατς Λετονίας + λατς Λετονίας + λατς Λετονίας + + + Ρούβλι Λετονίας + ρούβλι Λετονίας + ρούβλια Λετονίας + + + Δηνάριο Λιβύης + δηνάριο Λιβύης + δηνάρια Λιβύης + + + Ντιράμ Μαρόκου + ντιράμ Μαρόκου + ντιράμ Μαρόκου + + + Φράγκο Μαρόκου + φράγκο Μαρόκου + φράγκα Μαρόκου + + + Φράγκο Μονακό + Φράγκα Μονακό + + + Κούπον Μολδαβίας + Κούπον Μολδαβίας + + + Λέου Μολδαβίας + λέου Μολδαβίας + λέου Μολδαβίας + + + Αριάρι Μαδαγασκάρης + αριάρι Μαδαγασκάρης + αριάρι Μαδαγασκάρης + + + Φράγκο Μαδαγασκάρης + φράγκο Μαδαγασκάρης + φράγκα Μαδαγασκάρης + + + Δηνάριο Π.Γ.Δ.Μ. + δηνάριο Π.Γ.Δ.Μ. + δηνάρια Π.Γ.Δ.Μ. + + + Παλιό δηνάριο ΠΓΔΜ + Παλιά δηνάρια ΠΓΔΜ + + + Φράγκο Μαλί + φράγκο Μαλί + φράγκα Μαλί + + + Κυάτ Μιανμάρ + κυάτ Μιανμάρ + κυάτ Μιανμάρ + + + Τουγκρίκ Μογγολίας + τουγκρίκ Μογγολίας + τουγκρίκ Μογγολίας + + + Πατάκα Μακάο + πατάκα Μακάο + πατάκα Μακάο + + + Ουγκίγια Μαυριτανίας + ουγκίγια Μαυριτανίας + ουγκίγια Μαυριτανίας + + + Λιρέτα Μάλτας + λιρέτα Μάλτας + λιρέτες Μάλτας + + + Λίρα Μάλτας + λίρα Μάλτας + λίρες Μάλτας + + + Ρουπία Μαυρικίου + ρουπία Μαυρικίου + ρουπίες Μαυρικίου + + + Ρουφίγια Μαλδίβων + ρουφίγια Μαλδίβων + ρουφίγια Μαλδίβων + + + Κουάτσα Μαλάουι + κουάτσα Μαλάουι + κουάτσα Μαλάουι + + + Πέσο Μεξικού + πέσο Μεξικού + πέσο Μεξικού + MX$ + + + Ασημένιο Πέσο Μεξικού (1861–1992) + ασημένιο πέσο Μεξικού (MXP) + ασημένια πέσο Μεξικού (MXP) + + + Ρινγκίτ Μαλαισίας + ρινγκίτ Μαλαισίας + ρινγκίτ Μαλαισίας + + + Εσκούδο Μοζαμβίκης + εσκούδο Μοζαμβίκης + εσκούδο Μοζαμβίκης + + + Παλαιό Μετικάλ Μοζαμβίκης + παλιό μετικάλ Μοζαμβίκης + παλιά μετικάλ Μοζαμβίκης + + + Μετικάλ Μοζαμβίκης + μετικάλ Μοζαμβίκης + μετικάλ Μοζαμβίκης + + + Δολάριο Ναμίμπια + δολάριο Ναμίμπια + δολάρια Ναμίμπια + + + Νάιρα Νιγηρίας + νάιρα Νιγηρίας + νάιρα Νιγηρίας + + + Κόρδοβα Νικαράγουας + κόρδοβα Νικαράγουας + κόρδοβα Νικαράγουας + + + Χρυσή Κόρδοβα Νικαράγουας + χρυσή κόρδοβα Νικαράγουας + χρυσές κόρδοβα Νικαράγουας + + + Γκίλντα Ολλανδίας + γκίλντα Ολλανδίας + γκίλντα Ολλανδίας + + + Κορόνα Νορβηγίας + κορόνα Νορβηγίας + κορόνες Νορβηγίας + + + Ρουπία Νεπάλ + ρουπία Νεπάλ + ρουπίες Νεπάλ + + + Δολάριο Νέας Ζηλανδίας + δολάριο Νέας Ζηλανδίας + δολάρια Νέας Ζηλανδίας + NZ$ + + + Ριάλ Ομάν + ριάλ Ομάν + ριάλ Ομάν + + + Μπαλμπόα Παναμά + μπαλμπόα Παναμά + μπαλμπόα Παναμά + + + Ίντι Περού + ίντι Περού + ίντι Περού + + + Νέο Σολ Περού + νέο σολ Περού + νέα Σολ Περού + + + Σολ Περού + σολ Περού + σολ Περού + + + Κίνα Παπούα Νέα Γουινέα + κίνα Παπούα Νέα Γουινέα + κίνα Παπούα Νέα Γουινέα + + + Πέσο Φιλιππίνων + πέσο Φιλιππίνων + πέσο Φιλιππίνων + + + Ρουπία Πακιστάν + ρουπία Πακιστάν + ρουπίες Πακιστάν + + + Ζλότι Πολωνίας + ζλότι Πολωνίας + ζλότι Πολωνίας + + + Ζλότυ Πολωνίας (1950–1995) + ζλότυ Πολωνίας (PLZ) + ζλότυ Πολωνίας (PLZ) + + + Εσκούδο Πορτογαλίας + εσκούδο Πορτογαλίας + εσκούδο Πορτογαλίας + + + Γκουαρανί Παραγουάης + γκουαρανί Παραγουάης + γκουαρανί Παραγουάης + + + Ριάλ Κατάρ + ριάλ Κατάρ + ριάλ Κατάρ + + + Δολάριο Ροδεσίας + δολάριο Ροδεσίας + δολάρια Ροδεσίας + + + Λέι Ρουμανίας + παλιό λέι Ρουμανίας + παλιά λέι Ρουμανίας + + + Λέου Ρουμανίας + λέου Ρουμανίας + λέου Ρουμανίας + + + Δηνάριο Σερβίας + δηνάριο Σερβίας + δηνάρια Σερβίας + + + Ρούβλι Ρωσίας + ρούβλι Ρωσίας + ρούβλια Ρωσίας + + + Ρούβλι Ρωσίας (1991–1998) + ρούβλι Ρωσίας (RUR) + ρούβλια Ρωσίας (1991–1998) + + + Φράγκο Ρουάντας + φράγκο Ρουάντας + φράγκα Ρουάντας + + + Ριάλ Σαουδικής Αραβίας + ριάλ Σαουδικής Αραβίας + ριάλ Σαουδικής Αραβίας + + + Δολάριο Νήσων Σολομώντος + δολάριο Νήσων Σολομώντος + δολάρια Νήσων Σολομώντος + + + Ρουπία Σεϋχελλών + ρουπία Σεϋχελλών + ρουπίες Σεϋχελλών + + + Δηνάριο Σουδάν + δηνάριο Σουδάν + δηνάρια Σουδάν + + + Λίρα Σουδάν + λίρα Σουδάν + λίρες Σουδάν + + + Παλαιά Λίρα Σουδάν + παλιά λίρα Σουδάν + παλαιές λίρες Σουδάν + + + Κορόνα Σουηδίας + κορόνα Σουηδίας + κορόνες Σουηδίας + + + Δολάριο Σιγκαπούρης + δολάριο Σιγκαπούρης + δολάρια Σιγκαπούρης + + + Λίρα Αγίας Ελένης + λίρα Αγίας Ελένης + λίρες Αγίας Ελένης + + + Τόλαρ Σλοβενίας + τόλαρ Σλοβενίας + τόλαρ Σλοβ + + + Κορόνα Σλοβενίας + κορόνα Σλοβενίας + κορόνες Σλοβενίας + + + Λεόνε Σιέρα Λεόνε + λεόνε Σιέρα Λεόνε + λεόνε Σιέρα Λεόνε + + + Σελίνι Σομαλίας + σελίνι Σομαλίας + σελίνια Σομαλίας + + + Δολάριο Σουρινάμ + δολάριο Σουρινάμ + δολάρια Σουρινάμ + + + Γκίλντα Σουρινάμ + γκίλντα Σουρινάμ + γκίλντα Σουρινάμ + + + Λίρα Νότιου Σουδάν + λίρα Νότιου Σουδάν + λίρες Νότιου Σουδάν + + + Ντόμπρα Σάο Τομέ και Πρίνσιπε + ντόμπρα Σάο Τόμε και Πρίνσιπε + ντόμπρα Σάο Τόμε και Πρίνσιπε + + + Σοβιετικό Ρούβλι + σοβιετικό ρούβλι + σοβιετικά ρούβλια + + + Κολόν Ελ Σαλβαδόρ + κολόν Ελ Σαλβαδόρ + κολόν Ελ Σαλβαδόρ + + + Λίρα Συρίας + λίρα Συρίας + λίρες Συρίας + + + Λιλανγκένι Σουαζιλάνδης + λιλανγκένι Σουαζιλάνδης + λιλανγκένι Σουαζιλάνδης + + + Μπατ Ταϊλάνδης + μπατ Ταϊλάνδης + μπατ Ταϊλάνδης + ฿ + + + Ρούβλι Τατζικιστάν + ρούβλι Τατζικιστάν + ρούβλια Τατζικιστάν + + + Σομόνι Τατζικιστάν + σομόνι Τατζικιστάν + σομόνι Τατζικιστάν + + + Μανάτ Τουρκμενιστάν + μανάτ Τουρκμενιστάν + μανάτ Τουρκμενιστάν + + + Μάνατ Τουρκμενιστάν + μάνατ Τουρκμενιστάν + μάνατ Τουρκμενιστάν + + + Δηνάριο Τυνησίας + δηνάριο Τυνησίας + δηνάρια Τυνησίας + + + Παάγκα νήσων Τόγκα + παάγκα νήσων Τόγκα + παάγκα νήσων Τόγκα + + + Εσκούδο Τιμόρ + εσκούδο Τιμόρ + εσκούδο Τιμόρ + + + Παλιά Λίρα Τουρκίας + παλιά λίρα Τουρκίας + παλιές λίρες Τουρκίας + + + Τουρκική Λίρα + τουρκική λίρα + τουρκικές λίρες + + + Δολάριο Τρινιντάντ και Τομπάγκο + δολάριο Τρινιντάντ και Τομπάγκο + δολάρια Τρινιντάντ και Τομπάγκο + + + Νέο δολάριο Ταϊβάν + νέο δολάριο Ταϊβάν + νέα δολάρια Ταϊβάν + NT$ + + + Σελίνι Τανζανίας + σελίνι Τανζανίας + σελίνια Τανζανίας + + + Γρίβνα Ουκρανίας + γρίβνα Ουκρανίας + γρίβνα Ουκρανίας + + + Καρμποβανέτς Ουκρανίας + καρμποβανέτς Ουκρανίας + καρμποβανέτς Ουκρανίας + + + Σελίνι Ουγκάντας (1966–1987) + σελίνι Ουγκάντας (UGS) + σελίνια Ουγκάντας (UGS) + + + Σελίνι Ουγκάντας + σελίνι Ουγκάντας + σελίνια Ουγκάντας + + + Δολάριο ΗΠΑ + δολάριο Η.Π.Α. + δολάρια Η.Π.Α. + $ + + + Δολάριο ΗΠΑ (επόμενη ημέρα) + δολάριο Η.Π.Α. (επόμενη ημέρα) + δολάρια Η.Π.Α. (επόμενη ημέρα) + + + Δολάριο ΗΠΑ (ίδια ημέρα) + δολάριο Η.Π.Α. (ίδια ημέρα) + δολάρια Η.Π.Α. (ίδια ημέρα) + + + Πέσο Ουρουγουάης (1975–1993) + πέσο Ουρουγουάης (UYP) + πέσο Ουρουγουάης (UYP) + + + Πέσο Ουρουγουάης + πέσο Ουρουγουάης + πέσο Ουρουγουάης + + + Σομ Ουζμπεκιστάν + σομ Ουζμπεκιστάν + σομ Ουζμπεκιστάν + + + Μπολιβάρ Βενεζουέλας (1871–2008) + μπολιβάρ Βενεζουέλας (1871–2008) + μπολιβάρ Βενεζουέλας (1871–2008) + + + Μπολιβάρ Βενεζουέλας + μπολιβάρ Βενεζουέλας + μπολιβάρ Βενεζουέλας + + + Ντονγκ Βιετνάμ + ντονγκ Βιετνάμ + ντονγκ Βιετνάμ + + + + Παλαιό ντονγκ Βιετνάμ + Παλαιά ντονγκ Βιετνάμ + + + Βατού Βανουάτου + βατού Βανουάτου + βατού Βανουάτου + + + Τάλα Σαμόα + τάλα Σαμόα + τάλα Σαμόα + + + Φράγκο CFA Κεντρικής Αφρικής + φράγκο CFA Κεντρικής Αφρικής + φράγκα CFA Κεντρικής Αφρικής + FCFA + + + Ευρωπαϊκή Σύνθετη Μονάδα + ευρωπαϊκή σύνθετη μονάδα + ευρωπαϊκές σύνθετες μονάδες + + + Ευρωπαϊκή Νομισματική Μονάδα + ευρωπαϊκή νομισματική μονάδα + ευρωπαϊκές νομισματικές μονάδες + + + Ευρωπαϊκή μονάδα λογαριασμού (XBC) + ευρωπαϊκή μονάδα λογαριασμού (XBC) + ευρωπαϊκές μονάδες λογαριασμού (XBC) + + + Ευρωπαϊκή μονάδα λογαριασμού (XBD) + ευρωπαϊκή μονάδα λογαριασμού (XBD) + ευρωπαϊκές μονάδες λογαριασμού (XBD) + + + Δολάριο Ανατολικής Καραϊβικής + δολάριο Ανατολικής Καραϊβικής + δολάρια Ανατολικής Καραϊβικής + EC$ + + + Ειδικά Δικαιώματα Ανάληψης + ειδικό δικαίωμα ανάληψης + ειδικά δικαιώματα ανάληψης + + + Ευρωπαϊκή Συναλλαγματική Μονάδα + ευρωπαϊκή συναλλαγματική μονάδα + ευρωπαϊκές συναλλαγματικές μονάδες + + + Χρυσό Φράγκο Γαλλίας + χρυσό φράγκο Γαλλίας + χρυσά φράγκα Γαλλίας + + + UIC-Φράγκο Γαλλίας + UIC-φράγκο Γαλλίας + UIC-φράγκα Γαλλίας + + + Φράγκο CFA Δυτικής Αφρικής + φράγκο CFA Δυτικής Αφρικής + φράγκα CFA Δυτικής Αφρικής + CFA + + + Φράγκο CFP + φράγκο CFP + φράγκα CFP + CFPF + + + Ταμείο RINET + Ταμείο RINET + + + Άγνωστο νόμισμα + (άγνωστο νόμισμα) + (άγνωστο νόμισμα) + + + Δηνάριο Υεμένης + δηνάριο Υεμένης + δηνάρια Υεμένης + + + Ριάλ Υεμένης + ριάλ Υεμένης + ριάλ Υεμένης + + + Μεταλλικό Δηνάριο Γιουγκοσλαβίας + μεταλλικό δηνάριο Γιουγκοσλαβίας + μεταλλικά δηνάρια Γιουγκοσλαβίας + + + Νέο Δηνάριο Γιουγκοσλαβίας + νέο δηνάριο Γιουγκοσλαβίας + νέο δηνάριο Γιουγκοσλαβίας + + + Μετατρέψιμο Δηνάριο Γιουγκοσλαβίας + μετατρέψιμο δινάριο Γιουγκοσλαβίας + μετατρέψιμο δηνάριο Γιουγκοσλαβίας + + + Αναμορφωμένο δηνάριο Γιουγκοσλαβίας + Αναμορφωμένα δηνάρια Γιουγκοσλαβίας + + + Ραντ Νότιας Αφρικής (οικονομικό) + ραντ Νότιας Αφρικής (οικονομικό) + ραντ Νότιας Αφρικής (οικονομικό) + + + Ραντ Νότιας Αφρικής + ραντ Νότιας Αφρικής + ραντ Νότιας Αφρικής + + + Κουάνζα Ζαΐρ (1968–2012) + κουάτσα Ζάμπιας (1968–2012) + κουάτσα Ζάμπιας (1968–2012) + + + Κουάτσα Ζάμπιας + κουάτσα Ζάμπιας + κουάτσα Ζάμπιας + + + Νέο Ζαΐρ Ζαΐρ + νέο ζαΐρ Ζαΐρ + νέα ζαΐρ Ζαΐρ + + + Ζαΐρ Ζαΐρ + ζαΐρ Ζαΐρ + ζαΐρ Ζαΐρ + + + Δολάριο Ζιμπάμπουε + δολάριο Ζιμπάμπουε + δολάρια Ζιμπάμπουε + + + Δολάριο Ζιμπάμπουε (2009) + Δολάριο Ζιμπάμπουε (2009) + Δολάριο Ζιμπάμπουε (2009) + + + Δολάριο Ζιμπάμπουε (2008) + Δολάρια Ζιμπάμπουε (2008) + + + + ⩾{0} + {0}–{1} + + + + + + {0} ανά {1} + + + {0} G + {0} G + + + {0} λεπτό + {0} λεπτά + + + {0} δευτερόλεπτο + {0} δευτερόλεπτα + + + {0} μοίρα + {0} μοίρες + + + {0} ακρ + {0} ακρ + + + {0} εκτάριο + {0} εκτάρια + + + {0} τετραγωνικό πόδι + {0} τετραγωνικά πόδια + + + {0} τετραγωνικό χιλιόμετρο + {0} τετραγωνικά χιλιόμετρα + + + {0} τετραγωνικό μέτρο + {0} τετραγωνικά μέτρα + + + {0} τετραγωνικό μίλι + {0} τετραγωνικά μίλια + + + {0} ημέρα + {0} ημέρες + + + {0} ώρα + {0} ώρες + + + {0} χιλιοστό του δευτερολέπτου + {0} χιλιοστά του δευτερολέπτου + + + {0} λεπτό + {0} λεπτά + + + {0} μήνας + {0} μήνες + + + {0} δευτερόλεπτο + {0} δευτερόλεπτα + + + {0} εβδομάδα + {0} εβδομάδες + + + {0} έτος + {0} έτη + + + {0} εκατοστό + {0} εκατοστά + + + {0} πόδι + {0} πόδια + + + {0} ίντσα + {0} ίντσες + + + {0} χιλιόμετρο + {0} χιλιόμετρα + + + {0} έτος φωτός + {0} έτη φωτός + + + {0} μέτρο + {0} μέτρα + + + {0} μίλι + {0} μίλια + + + {0} χιλιοστόμετρο + {0} χιλιοστόμετρα + + + {0} πικόμετρο + {0} πικόμετρα + + + {0} γιάρδα + {0} γιάρδες + + + {0} γραμμάριο + {0} γραμμάρια + + + {0} χιλιόγραμμο + {0} χιλιόγραμμα + + + {0} ουγγιά + {0} ουγγιές + + + {0} λίβρα + {0} λίβρες + + + {0} ίππος + {0} ίπποι + + + {0} κιλοβάτ + {0} κιλοβάτ + + + {0} watt + {0} watt + + + {0} εκτοπασκάλ + {0} εκτοπασκάλ + + + {0} ίντσα στήλης υδραργύρου + {0} ίντσες στήλης υδραργύρου + + + {0} μιλιμπάρ + {0} μιλιμπάρ + + + {0} χιλιόμετρο ανά ώρα + {0} χιλιόμετρα ανά ώρα + + + {0} μέτρο ανά δευτερόλεπτο + {0} μέτρα ανά δευτερόλεπτο + + + {0} μίλι ανά ώρα + {0} μίλια ανά ώρα + + + {0} βαθμός Κελσίου + {0} βαθμοί Κελσίου + + + {0} βαθμός Φαρενάιτ + {0} βαθμοί Φαρενάιτ + + + {0} κυβικό χιλιόμετρο + {0} κυβικά χιλιόμετρα + + + {0} κυβικό μίλι + {0} κυβικά μίλια + + + {0} λίτρο + {0} λίτρα + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} λεπ. + {0} λεπ. + + + {0} δευτ. + {0} δευτ. + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} ημέρα + {0} ημέρες + + + {0} ώρα + {0} ώρες + + + {0} ms + {0} ms + + + {0} λεπ. + {0} λεπ. + + + {0} μήν. + {0} μήν. + + + {0} δευτ. + {0} δευτ. + + + {0} εβδ. + {0} εβδ. + + + {0} έτος + {0} έτη + + + {0} εκ. + {0} εκ. + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} χλμ. + {0} χλμ. + + + {0} ly + {0} ly + + + {0} μ. + {0} μ. + + + {0} mi + {0} mi + + + {0} χλστ. + {0} χλστ. + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} γρ. + {0} γρ. + + + {0} χλγρ. + {0} χλγρ. + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} χλμ./ώρα + {0} χλμ./ώρα + + + {0} μέτρο/δευτ. + {0} μέτρα/δευτ. + + + {0} μίλι/ώρα + {0} μίλια/ώρα + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} λίτ. + {0} λίτ. + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} ημ. + {0} ημ. + + + {0} ώρα + {0} ώρες + + + {0} ms + {0} ms + + + {0} λεπ. + {0} λεπ. + + + {0} μήν. + {0} μήν. + + + {0} δευτ. + {0} δευτ. + + + {0} εβδ. + {0} εβδ. + + + {0} έτ. + {0} έτ. + + + {0} εκ. + {0} εκ. + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} χλμ. + {0} χλμ. + + + {0} ly + {0} ly + + + {0} μ. + {0} μ. + + + {0} mi + {0} mi + + + {0} χλστ. + {0} χλστ. + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} χλμ./ώρα + {0} χλμ./ώρα + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} και {1} + {0} και {1} + + + {0}, {1} + {0}, {1} + {0} και {1} + {0} και {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ναι:ν + όχι:ό + + + + diff --git a/library/Zend/Locale/Data/el_CY.xml b/library/Zend/Locale/Data/el_CY.xml new file mode 100755 index 000000000..36b31914c --- /dev/null +++ b/library/Zend/Locale/Data/el_CY.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + ¤#,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/el_GR.xml b/library/Zend/Locale/Data/el_GR.xml new file mode 100755 index 000000000..bbe239e12 --- /dev/null +++ b/library/Zend/Locale/Data/el_GR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en.xml b/library/Zend/Locale/Data/en.xml new file mode 100755 index 000000000..84484deba --- /dev/null +++ b/library/Zend/Locale/Data/en.xml @@ -0,0 +1,5446 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Afar + Abkhazian + Achinese + Acoli + Adangme + Adyghe + Avestan + Afrikaans + Afrihili + Aghem + Ainu + Akan + Akkadian + Aleut + Southern Altai + Amharic + Aragonese + Old English + Angika + Arabic + Modern Standard Arabic + Aramaic + Mapuche + Arapaho + Arawak + Assamese + Asu + Asturian + Avaric + Awadhi + Aymara + Azerbaijani + Azeri + Bashkir + Baluchi + Balinese + Basaa + Bamun + Ghomala + Belarusian + Beja + Bemba + Bena + Bafut + Bulgarian + Bhojpuri + Bislama + Bikol + Bini + Kom + Siksika + Bambara + Bengali + Tibetan + Breton + Braj + Bodo + Bosnian + Akoose + Buriat + Buginese + Bulu + Blin + Medumba + Catalan + Caddo + Carib + Cayuga + Atsam + Chechen + Cebuano + Chiga + Chamorro + Chibcha + Chagatai + Chuukese + Mari + Chinook Jargon + Choctaw + Chipewyan + Cherokee + Cheyenne + Sorani Kurdish + Corsican + Coptic + Cree + Crimean Turkish + Czech + Kashubian + Church Slavic + Chuvash + Welsh + Danish + Dakota + Dargwa + Taita + German + Austrian German + Swiss High German + Delaware + Slave + Dogrib + Dinka + Zarma + Dogri + Lower Sorbian + Duala + Middle Dutch + Divehi + Jola-Fonyi + Dyula + Dzongkha + Dazaga + Embu + Ewe + Efik + Ancient Egyptian + Ekajuk + Greek + Elamite + English + Australian English + Canadian English + British English + U.K. English + American English + U.S. English + Middle English + Esperanto + Spanish + Latin American Spanish + European Spanish + Mexican Spanish + Estonian + Basque + Ewondo + Persian + Fang + Fanti + Fulah + Finnish + Filipino + Fijian + Faroese + Fon + French + Canadian French + Swiss French + Middle French + Old French + Northern Frisian + Eastern Frisian + Friulian + Western Frisian + Irish + Ga + Gayo + Gbaya + Scottish Gaelic + Geez + Gilbertese + Galician + Middle High German + Guarani + Old High German + Gondi + Gorontalo + Gothic + Grebo + Ancient Greek + Swiss German + Gujarati + Gusii + Manx + Gwichʼin + Hausa + Haida + Hawaiian + Hebrew + Hindi + Hiligaynon + Hittite + Hmong + Hiri Motu + Croatian + Upper Sorbian + Haitian + Hungarian + Hupa + Armenian + Herero + Interlingua + Iban + Ibibio + Indonesian + Interlingue + Igbo + Sichuan Yi + Inupiaq + Iloko + Ingush + Ido + Icelandic + Italian + Inuktitut + Japanese + Lojban + Ngomba + Machame + Judeo-Persian + Judeo-Arabic + Javanese + Georgian + Kara-Kalpak + Kabyle + Kachin + Jju + Kamba + Kawi + Kabardian + Kanembu + Tyap + Makonde + Kabuverdianu + Koro + Kongo + Khasi + Khotanese + Koyra Chiini + Kikuyu + Kuanyama + Kazakh + Kako + Kalaallisut + Kalenjin + Khmer + Kimbundu + Kannada + Korean + Konkani + Kosraean + Kpelle + Kanuri + Karachay-Balkar + Karelian + Kurukh + Kashmiri + Shambala + Bafia + Colognian + Kurdish + Kumyk + Kutenai + Komi + Cornish + Kyrgyz + Kirghiz + Latin + Ladino + Langi + Lahnda + Lamba + Luxembourgish + Lezghian + Ganda + Limburgish + Lakota + Lingala + Lao + Mongo + Lozi + Lithuanian + Luba-Katanga + Luba-Lulua + Luiseno + Lunda + Luo + Mizo + Luyia + Latvian + Madurese + Mafa + Magahi + Maithili + Makasar + Mandingo + Masai + Maba + Moksha + Mandar + Mende + Meru + Morisyen + Malagasy + Middle Irish + Makhuwa-Meetto + Meta' + Marshallese + Maori + Micmac + Minangkabau + Macedonian + Malayalam + Mongolian + Manchu + Manipuri + Mohawk + Mossi + Marathi + Malay + Maltese + Mundang + Multiple Languages + Creek + Mirandese + Marwari + Burmese + Myene + Erzya + Nauru + Neapolitan + Nama + Norwegian Bokmål + North Ndebele + Low German + Nepali + Newari + Ndonga + Nias + Niuean + Dutch + Flemish + Kwasio + Norwegian Nynorsk + Ngiemboon + Norwegian + Nogai + Old Norse + N’Ko + South Ndebele + Northern Sotho + Nuer + Navajo + Classical Newari + Nyanja + Nyamwezi + Nyankole + Nyoro + Nzima + Occitan + Ojibwa + Oromo + Oriya + Ossetic + Osage + Ottoman Turkish + Punjabi + Pangasinan + Pahlavi + Pampanga + Papiamento + Palauan + Old Persian + Phoenician + Pali + Polish + Pohnpeian + Old Provençal + Pashto + Pushto + Portuguese + Brazilian Portuguese + European Portuguese + Quechua + Rajasthani + Rapanui + Rarotongan + Romansh + Rundi + Romanian + Moldavian + Rombo + Romany + Root + Russian + Aromanian + Kinyarwanda + Rwa + Sanskrit + Sandawe + Sakha + Samaritan Aramaic + Samburu + Sasak + Santali + Ngambay + Sangu + Sardinian + Sicilian + Scots + Sindhi + Northern Sami + Seneca + Sena + Selkup + Koyraboro Senni + Sango + Old Irish + Serbo-Croatian + Tachelhit + Shan + Chadian Arabic + Sinhala + Sidamo + Slovak + Slovenian + Samoan + Southern Sami + Lule Sami + Inari Sami + Skolt Sami + Shona + Soninke + Somali + Sogdien + Albanian + Serbian + Sranan Tongo + Serer + Swati + Saho + Southern Sotho + Sundanese + Sukuma + Susu + Sumerian + Swedish + Swahili + Comorian + Congo Swahili + Classical Syriac + Syriac + Tamil + Telugu + Timne + Teso + Tereno + Tetum + Tajik + Thai + Tigrinya + Tigre + Tiv + Turkmen + Tokelau + Tagalog + Klingon + Tlingit + Tamashek + Tswana + Tongan + Nyasa Tonga + Tok Pisin + Turkish + Taroko + Tsonga + Tsimshian + Tatar + Tumbuka + Tuvalu + Twi + Tasawaq + Tahitian + Tuvinian + Central Atlas Tamazight + Udmurt + Uyghur + Uighur + Ugaritic + Ukrainian + Umbundu + Unknown Language + Urdu + Uzbek + Vai + Venda + Vietnamese + Volapük + Votic + Vunjo + Walloon + Walser + Wolaytta + Waray + Washo + Wolof + Kalmyk + Xhosa + Soga + Yao + Yapese + Yangben + Yemba + Yiddish + Yoruba + Cantonese + Zhuang + Zapotec + Blissymbols + Zenaga + Standard Moroccan Tamazight + Chinese + Simplified Chinese + Traditional Chinese + Zulu + Zuni + No linguistic content + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + World + + Africa + North America + South America + Oceania + Western Africa + Central America + Eastern Africa + Northern Africa + Middle Africa + Southern Africa + Americas + Northern America + Caribbean + Eastern Asia + Southern Asia + South-Eastern Asia + Southern Europe + Australasia + Melanesia + Micronesian Region + Polynesia + Asia + Central Asia + Western Asia + Europe + Eastern Europe + Northern Europe + Western Europe + Latin America + Ascension Island + Andorra + United Arab Emirates + Afghanistan + Antigua and Barbuda + Anguilla + Albania + Armenia + Netherlands Antilles + Angola + Antarctica + Argentina + American Samoa + Austria + Australia + Aruba + Åland Islands + Azerbaijan + Bosnia and Herzegovina + Barbados + Bangladesh + Belgium + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Caribbean Netherlands + Brazil + Bahamas + Bhutan + Bouvet Island + Botswana + Belarus + Belize + Canada + Cocos (Keeling) Islands + Congo - Kinshasa + Congo (DRC) + Central African Republic + Congo - Brazzaville + Congo (Republic) + Switzerland + Côte d’Ivoire + Ivory Coast + Cook Islands + Chile + Cameroon + China + Colombia + Clipperton Island + Costa Rica + Cuba + Cape Verde + Curaçao + Christmas Island + Cyprus + Czech Republic + Germany + Diego Garcia + Djibouti + Denmark + Dominica + Dominican Republic + Algeria + Ceuta and Melilla + Ecuador + Estonia + Egypt + Western Sahara + Eritrea + Spain + Ethiopia + European Union + Finland + Fiji + Falkland Islands + Falkland Islands (Islas Malvinas) + Micronesia + Faroe Islands + France + Gabon + United Kingdom + U.K. + Grenada + Georgia + French Guiana + Guernsey + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Equatorial Guinea + Greece + South Georgia & South Sandwich Islands + Guatemala + Guam + Guinea-Bissau + Guyana + Hong Kong SAR China + Hong Kong + Heard & McDonald Islands + Honduras + Croatia + Haiti + Hungary + Canary Islands + Indonesia + Ireland + Israel + Isle of Man + India + British Indian Ocean Territory + Iraq + Iran + Iceland + Italy + Jersey + Jamaica + Jordan + Japan + Kenya + Kyrgyzstan + Cambodia + Kiribati + Comoros + Saint Kitts and Nevis + North Korea + South Korea + Kuwait + Cayman Islands + Kazakhstan + Laos + Lebanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lithuania + Luxembourg + Latvia + Libya + Morocco + Monaco + Moldova + Montenegro + Saint Martin + Madagascar + Marshall Islands + Macedonia + Macedonia (FYROM) + Mali + Myanmar (Burma) + Mongolia + Macau SAR China + Macau + Northern Mariana Islands + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambique + Namibia + New Caledonia + Niger + Norfolk Island + Nigeria + Nicaragua + Netherlands + Norway + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + French Polynesia + Papua New Guinea + Philippines + Pakistan + Poland + Saint Pierre and Miquelon + Pitcairn Islands + Puerto Rico + Palestinian Territories + Palestine + Portugal + Palau + Paraguay + Qatar + Outlying Oceania + Réunion + Romania + Serbia + Russia + Rwanda + Saudi Arabia + Solomon Islands + Seychelles + Sudan + Sweden + Singapore + Saint Helena + Slovenia + Svalbard and Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + South Sudan + São Tomé and Príncipe + El Salvador + Sint Maarten + Syria + Swaziland + Tristan da Cunha + Turks and Caicos Islands + Chad + French Southern Territories + Togo + Thailand + Tajikistan + Tokelau + Timor-Leste + East Timor + Turkmenistan + Tunisia + Tonga + Turkey + Trinidad and Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + U.S. Outlying Islands + United States + U.S. + Uruguay + Uzbekistan + Vatican City + St. Vincent & Grenadines + Venezuela + British Virgin Islands + U.S. Virgin Islands + Vietnam + Vanuatu + Wallis and Futuna + Samoa + Kosovo + Yemen + Mayotte + South Africa + Zambia + Zimbabwe + Unknown Region + + + Traditional German orthography + Standardized Resian orthography + German orthography of 1996 + Late Middle French to 1606 + Early Modern French + Academic + ALA-LC Romanization, 1997 edition + Aluku dialect + Eastern Armenian + Western Armenian + Unified Turkic Latin Alphabet + Balanka dialect of Anii + >Barlavento dialect group of Kabuverdianu + San Giorgio/Bila dialect + Bohorič alphabet + Boontling + Dajnko alphabet + Serbian with Ekavian pronunciation + Early Modern English + IPA Phonetics + UPA Phonetics + Hepburn romanization + Hepburn romanization, Library of Congress method + Serbian with Ijekavian pronunciation + Common Orthography + Standard Orthography + The Lipovaz dialect of Resian + Metelko alphabet + Monotonic + Ndyuka dialect + Natisone dialect + Gniva/Njiva dialect + Modern Volapük + Oseacco/Osojane dialect + Pamaka dialect + Pinyin Romanization + Polytonic + Computer + Revised Orthography + Classic Volapük + Resian + Saho + Scottish Standard English + Scouse + Stolvizza/Solbica dialect + Sotavento dialect group of Kabuverdianu + Taraskievica orthography + Unified Orthography + Unified Revised Orthography + Unifon phonetic alphabet + Valencian + Wade-Giles Romanization + + + Calendar + Ignore Symbols Sorting + Reversed Accent Sorting + Uppercase/Lowercase Ordering + Case Sensitive Sorting + Kana Sorting + Sort Order + Normalized Sorting + Numeric Sorting + Script/Block Reordering + Sorting Strength + Currency + Highest Ignored + Numbers + Time Zone + Locale Variant + Sort As Symbols + Private-Use + + + Arabic-Indic Digits + Extended Arabic-Indic Digits + Armenian Numerals + Armenian Lowercase Numerals + Balinese Digits + Bengali Digits + Traditional Chinese Sort Order - Big5 + Brahmi Digits + Buddhist Calendar + Chakma Digits + Cham Digits + Chinese Calendar + Coptic Calendar + Dangi Calendar + Devanagari Digits + Dictionary Sort Order + Default Unicode Sort Order + European Ordering Rules + Ethiopic Numerals + Ethiopic Calendar + Ethiopic Amete Alem Calendar + Financial Numerals + Full Width Digits + Simplified Chinese Sort Order - GB2312 + Georgian Numerals + Gregorian Calendar + Greek Numerals + Greek Lowercase Numerals + Gujarati Digits + Gurmukhi Digits + Chinese Calendar Day-of-Month Numerals + Chinese Decimal Numerals + Simplified Chinese Numerals + Simplified Chinese Financial Numerals + Traditional Chinese Numerals + Traditional Chinese Financial Numerals + Hebrew Numerals + Hebrew Calendar + Sort All + Indian National Calendar + Islamic Calendar + Islamic Calendar (tabular, civil epoch) + Islamic Calendar (Saudi Arabia, sighting) + Islamic Calendar (tabular, astronomical epoch) + Islamic Calendar (Umm al-Qura) + ISO-8601 Calendar + Japanese Calendar + Javanese Digits + Japanese Numerals + Japanese Financial Numerals + Kayah Li Digits + Khmer Digits + Kannada Digits + Tai Tham Hora Digits + Tai Tham Tham Digits + Lao Digits + Western Digits + Lepcha Digits + Limbu Digits + Sort Lowercase First + Malayalam Digits + Mongolian Digits + Meetei Mayek Digits + Myanmar Digits + Myanmar Shan Digits + Native Digits + N'Ko Digits + Sort Accents Normally + Sort Normal Case Order + Sort Case Insensitive + Sort Kana Separately + Sort Without Normalization + Sort Digits Individually + Sort Symbols + Ol Chiki Digits + Oriya Digits + Osmanya Digits + Persian Calendar + Phonebook Sort Order + Phonetic Sort Order + Pinyin Sort Order + POSIX Compliant Locale + Sort Base Letters Only + Sort Accents/Case/Width/Kana + Reformed Sort Order + Minguo Calendar + Roman Numerals + Roman Lowercase Numerals + Saurashtra Digits + General-Purpose Search + Search By Hangul Initial Consonant + Sort Accents + Sort Ignoring Symbols + Sharada Digits + Sora Sompeng Digits + Standard Sort Order + Stroke Sort Order + Sundanese Digits + Takri Digits + New Tai Lue Digits + Traditional Tamil Numerals + Tamil Digits + Telugu Digits + Sort Accents/Case/Width + Thai Digits + Tibetan Digits + Traditional Sort Order + Traditional Numerals + Radical-Stroke Sort Order + Sort Uppercase First + Vai Digits + Sort Accents Reversed + Sort Case Sensitive + Sort Kana Differently + Sort Unicode Normalized + Sort Digits Numerically + Zhuyin Sort Order + + + BGN + Numeric + Tone + UNGEGN + Accents + Fullwidth + Halfwidth + Jamo + Pinyin + Publishing + + + Metric + UK + US + + + Language: {0} + Script: {0} + Region: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + + + + + + + + + + + + + BE + + + + + + + + Mo1 + Mo2 + Mo3 + Mo4 + Mo5 + Mo6 + Mo7 + Mo8 + Mo9 + Mo10 + Mo11 + Mo12 + + + Month1 + Month2 + Month3 + Month4 + Month5 + Month6 + Month7 + Month8 + Month9 + Month10 + Month11 + Month12 + + + + + + + + Rat + Ox + Tiger + Rabbit + Dragon + Snake + Horse + Goat + Monkey + Rooster + Dog + Pig + + + + + + + + EEEE, MMMM d, U + + + + + MMMM d, U + + + + + MMM d, U + + + + + M/d/yy + + + + + + + {1} 'at' {0} + + + + + {1} 'at' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + U + MMM U + MMM d, U + E, MMM d, U + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + mm:ss + U + M/d/y + U + M/y + M/d/y + E, M/d/y + MMM U + MMM d, U + E, MMM d, U + QQQ U + QQQQ U + + + {0} – {1} + + d – d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M – M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM – MMM + + + MMM d – d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + U – U + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM – MMM U + MMM U – MMM U + + + MMM d – d, U + MMM d – MMM d, U + MMM d, U – MMM d, U + + + E, MMM d – E, MMM d, U + E, MMM d – E, MMM d, U + E, MMM d, U – E, MMM d, U + + + MMMM – MMMM U + MMMM U – MMMM U + + + + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/y GGGGG + + + + + + + {1} 'at' {0} + + + + + {1} 'at' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + MMM d, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + mm:ss + y G + y G + M/y GGGGG + M/d/y GGGGG + E, M/d/y GGGGG + MMM y G + MMM d, y G + E, MMM d, y G + QQQ y G + QQQQ y G + + + {0} ({2}: {1}) + {0} {1} + {0} {1} + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} {1} + {0} ({2}: {1}) + {0} {1} + + + {0} – {1} + + d – d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M – M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM – MMM + + + MMM d – d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y – y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + M/d/y – M/d/y GGGGG + M/d/y – M/d/y GGGGG + M/d/y – M/d/y GGGGG + + + E, M/d/y – E, M/d/y GGGGG + E, M/d/y – E, M/d/y GGGGG + E, M/d/y – E, M/d/y GGGGG + + + MMM – MMM y G + MMM y – MMM y G + + + MMM d – d, y G + MMM d – MMM d, y G + MMM d, y – MMM d, y G + + + E, MMM d – E, MMM d, y G + E, MMM d – E, MMM d, y G + E, MMM d, y – E, MMM d, y G + + + MMMM – MMMM y G + MMMM y – MMMM y G + + + + + + + + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + + January + February + March + April + May + June + July + August + September + October + November + December + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + + Su + Mo + Tu + We + Th + Fr + Sa + + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + + + + + S + M + T + W + T + F + S + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1st quarter + 2nd quarter + 3rd quarter + 4th quarter + + + + + 1 + 2 + 3 + 4 + + + + + + + a + n + p + + + AM + am + noon + PM + pm + + + + + + Before Christ + Before Common Era + Anno Domini + Common Era + + + BC + BCE + AD + CE + + + B + A + + + + + + EEEE, MMMM d, y + + + + + MMMM d, y + + + + + MMM d, y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} 'at' {0} + + + + + {1} 'at' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + MMM d, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + mm:ss + y + M/y + M/d/y + E, M/d/y + MMM y + MMM d, y + E, MMM d, y + QQQ y + QQQQ y + + + {0} ({2}: {1}) + {0} {1} + {0} {1} + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} {1} + {0} ({2}: {1}) + {0} {1} + + + {0} – {1} + + d – d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M – M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM – MMM + + + MMM d – d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y – y + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM – MMM y + MMM y – MMM y + + + MMM d – d, y + MMM d – MMM d, y + MMM d, y – MMM d, y + + + E, MMM d – E, MMM d, y + E, MMM d – E, MMM d, y + E, MMM d, y – E, MMM d, y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/y GGGGG + + + + + + + + Before R.O.C. + Minguo + + + + + + + Era + + + Year + last year + this year + next year + + in {0} year + in {0} years + + + {0} year ago + {0} years ago + + + + Month + last month + this month + next month + + in {0} month + in {0} months + + + {0} month ago + {0} months ago + + + + Week + last week + this week + next week + + in {0} week + in {0} weeks + + + {0} week ago + {0} weeks ago + + + + Day + yesterday + today + tomorrow + + in {0} day + in {0} days + + + {0} day ago + {0} days ago + + + + Day of the Week + + + last Sunday + this Sunday + next Sunday + + + last Monday + this Monday + next Monday + + + last Tuesday + this Tuesday + next Tuesday + + + last Wednesday + this Wednesday + next Wednesday + + + last Thursday + this Thursday + next Thursday + + + last Friday + this Friday + next Friday + + + last Saturday + this Saturday + next Saturday + + + AM/PM + + + Hour + + in {0} hour + in {0} hours + + + {0} hour ago + {0} hours ago + + + + Minute + + in {0} minute + in {0} minutes + + + {0} minute ago + {0} minutes ago + + + + Second + now + + in {0} second + in {0} seconds + + + {0} second ago + {0} seconds ago + + + + Time Zone + + + + +HH:mm;-HH:mm + GMT{0} + {0} Time + {0} Daylight Time + {0} Standard Time + {1} ({0}) + + Unknown City + + + Dumont d’Urville + + + Saint Barthélemy + + + Curaçao + + + + British Summer Time + + + + + Irish Summer Time + + + + Asunción + + + Réunion + + + São Tomé + + + + HST + HST + HDT + + + + Ho Chi Minh City + + + + Acre Time + Acre Standard Time + Acre Summer Time + + + + + Afghanistan Time + + + + + Central Africa Time + + + + + East Africa Time + + + + + South Africa Standard Time + + + + + West Africa Time + West Africa Standard Time + West Africa Summer Time + + + + + Alaska Time + Alaska Standard Time + Alaska Daylight Time + + + AKT + AKST + AKDT + + + + + Almaty Time + Almaty Standard Time + Almaty Summer Time + + + + + Amazon Time + Amazon Standard Time + Amazon Summer Time + + + + + Central Time + Central Standard Time + Central Daylight Time + + + CT + CST + CDT + + + + + Eastern Time + Eastern Standard Time + Eastern Daylight Time + + + ET + EST + EDT + + + + + Mountain Time + Mountain Standard Time + Mountain Daylight Time + + + MT + MST + MDT + + + + + Pacific Time + Pacific Standard Time + Pacific Daylight Time + + + PT + PST + PDT + + + + + Anadyr Time + Anadyr Standard Time + Anadyr Summer Time + + + + + Aqtau Time + Aqtau Standard Time + Aqtau Summer Time + + + + + Aqtobe Time + Aqtobe Standard Time + Aqtobe Summer Time + + + + + Arabian Time + Arabian Standard Time + Arabian Daylight Time + + + + + Argentina Time + Argentina Standard Time + Argentina Summer Time + + + + + Western Argentina Time + Western Argentina Standard Time + Western Argentina Summer Time + + + + + Armenia Time + Armenia Standard Time + Armenia Summer Time + + + + + Atlantic Time + Atlantic Standard Time + Atlantic Daylight Time + + + AT + AST + ADT + + + + + Central Australia Time + Australian Central Standard Time + Australian Central Daylight Time + + + + + Australian Central Western Time + Australian Central Western Standard Time + Australian Central Western Daylight Time + + + + + Eastern Australia Time + Australian Eastern Standard Time + Australian Eastern Daylight Time + + + + + Western Australia Time + Australian Western Standard Time + Australian Western Daylight Time + + + + + Azerbaijan Time + Azerbaijan Standard Time + Azerbaijan Summer Time + + + + + Azores Time + Azores Standard Time + Azores Summer Time + + + + + Bangladesh Time + Bangladesh Standard Time + Bangladesh Summer Time + + + + + Bhutan Time + + + + + Bolivia Time + + + + + Brasilia Time + Brasilia Standard Time + Brasilia Summer Time + + + + + Brunei Darussalam Time + + + + + Cape Verde Time + Cape Verde Standard Time + Cape Verde Summer Time + + + + + Casey Time + + + + + Chamorro Standard Time + + + + + Chatham Time + Chatham Standard Time + Chatham Daylight Time + + + + + Chile Time + Chile Standard Time + Chile Summer Time + + + + + China Time + China Standard Time + China Daylight Time + + + + + Choibalsan Time + Choibalsan Standard Time + Choibalsan Summer Time + + + + + Christmas Island Time + + + + + Cocos Islands Time + + + + + Colombia Time + Colombia Standard Time + Colombia Summer Time + + + + + Cook Islands Time + Cook Islands Standard Time + Cook Islands Half Summer Time + + + + + Cuba Time + Cuba Standard Time + Cuba Daylight Time + + + + + Davis Time + + + + + Dumont-d’Urville Time + + + + + East Timor Time + + + + + Easter Island Time + Easter Island Standard Time + Easter Island Summer Time + + + + + Ecuador Time + + + + + Central European Time + Central European Standard Time + Central European Summer Time + + + + + Eastern European Time + Eastern European Standard Time + Eastern European Summer Time + + + + + Western European Time + Western European Standard Time + Western European Summer Time + + + + + Falkland Islands Time + Falkland Islands Standard Time + Falkland Islands Summer Time + + + + + Fiji Time + Fiji Standard Time + Fiji Summer Time + + + + + French Guiana Time + + + + + French Southern and Antarctic Time + + + + + Galapagos Time + + + + + Gambier Time + + + + + Georgia Time + Georgia Standard Time + Georgia Summer Time + + + + + Gilbert Islands Time + + + + + Greenwich Mean Time + + + GMT + + + + + East Greenland Time + East Greenland Standard Time + East Greenland Summer Time + + + + + West Greenland Time + West Greenland Standard Time + West Greenland Summer Time + + + + + Guam Standard Time + + + + + Gulf Standard Time + + + + + Guyana Time + + + + + Hawaii-Aleutian Time + Hawaii-Aleutian Standard Time + Hawaii-Aleutian Daylight Time + + + HAT + HAST + HADT + + + + + Hong Kong Time + Hong Kong Standard Time + Hong Kong Summer Time + + + + + Hovd Time + Hovd Standard Time + Hovd Summer Time + + + + + India Standard Time + + + + + Indian Ocean Time + + + + + Indochina Time + + + + + Central Indonesia Time + + + + + Eastern Indonesia Time + + + + + Western Indonesia Time + + + + + Iran Time + Iran Standard Time + Iran Daylight Time + + + + + Irkutsk Time + Irkutsk Standard Time + Irkutsk Summer Time + + + + + Israel Time + Israel Standard Time + Israel Daylight Time + + + + + Japan Time + Japan Standard Time + Japan Daylight Time + + + + + Petropavlovsk-Kamchatski Time + Petropavlovsk-Kamchatski Standard Time + Petropavlovsk-Kamchatski Summer Time + + + + + East Kazakhstan Time + + + + + West Kazakhstan Time + + + + + Korean Time + Korean Standard Time + Korean Daylight Time + + + + + Kosrae Time + + + + + Krasnoyarsk Time + Krasnoyarsk Standard Time + Krasnoyarsk Summer Time + + + + + Kyrgystan Time + + + + + Lanka Time + + + + + Line Islands Time + + + + + Lord Howe Time + Lord Howe Standard Time + Lord Howe Daylight Time + + + + + Macau Time + Macau Standard Time + Macau Summer Time + + + + + Macquarie Island Time + + + + + Magadan Time + Magadan Standard Time + Magadan Summer Time + + + + + Malaysia Time + + + + + Maldives Time + + + + + Marquesas Time + + + + + Marshall Islands Time + + + + + Mauritius Time + Mauritius Standard Time + Mauritius Summer Time + + + + + Mawson Time + + + + + Northwest Mexico Time + Northwest Mexico Standard Time + Northwest Mexico Daylight Time + + + + + Mexican Pacific Time + Mexican Pacific Standard Time + Mexican Pacific Daylight Time + + + + + Ulan Bator Time + Ulan Bator Standard Time + Ulan Bator Summer Time + + + + + Moscow Time + Moscow Standard Time + Moscow Summer Time + + + + + Myanmar Time + + + + + Nauru Time + + + + + Nepal Time + + + + + New Caledonia Time + New Caledonia Standard Time + New Caledonia Summer Time + + + + + New Zealand Time + New Zealand Standard Time + New Zealand Daylight Time + + + + + Newfoundland Time + Newfoundland Standard Time + Newfoundland Daylight Time + + + + + Niue Time + + + + + Norfolk Island Time + + + + + Fernando de Noronha Time + Fernando de Noronha Standard Time + Fernando de Noronha Summer Time + + + + + North Mariana Islands Time + + + + + Novosibirsk Time + Novosibirsk Standard Time + Novosibirsk Summer Time + + + + + Omsk Time + Omsk Standard Time + Omsk Summer Time + + + + + Pakistan Time + Pakistan Standard Time + Pakistan Summer Time + + + + + Palau Time + + + + + Papua New Guinea Time + + + + + Paraguay Time + Paraguay Standard Time + Paraguay Summer Time + + + + + Peru Time + Peru Standard Time + Peru Summer Time + + + + + Philippine Time + Philippine Standard Time + Philippine Summer Time + + + + + Phoenix Islands Time + + + + + Saint Pierre and Miquelon Time + Saint Pierre and Miquelon Standard Time + Saint Pierre and Miquelon Daylight Time + + + + + Pitcairn Time + + + + + Ponape Time + + + + + Qyzylorda Time + Qyzylorda Standard Time + Qyzylorda Summer Time + + + + + Reunion Time + + + + + Rothera Time + + + + + Sakhalin Time + Sakhalin Standard Time + Sakhalin Summer Time + + + + + Samara Time + Samara Standard Time + Samara Summer Time + + + + + Samoa Time + Samoa Standard Time + Samoa Daylight Time + + + + + Seychelles Time + + + + + Singapore Standard Time + + + + + Solomon Islands Time + + + + + South Georgia Time + + + + + Suriname Time + + + + + Syowa Time + + + + + Tahiti Time + + + + + Taipei Time + Taipei Standard Time + Taipei Daylight Time + + + + + Tajikistan Time + + + + + Tokelau Time + + + + + Tonga Time + Tonga Standard Time + Tonga Summer Time + + + + + Chuuk Time + + + + + Turkmenistan Time + Turkmenistan Standard Time + Turkmenistan Summer Time + + + + + Tuvalu Time + + + + + Uruguay Time + Uruguay Standard Time + Uruguay Summer Time + + + + + Uzbekistan Time + Uzbekistan Standard Time + Uzbekistan Summer Time + + + + + Vanuatu Time + Vanuatu Standard Time + Vanuatu Summer Time + + + + + Venezuela Time + + + + + Vladivostok Time + Vladivostok Standard Time + Vladivostok Summer Time + + + + + Volgograd Time + Volgograd Standard Time + Volgograd Summer Time + + + + + Vostok Time + + + + + Wake Island Time + + + + + Wallis and Futuna Time + + + + + Yakutsk Time + Yakutsk Standard Time + Yakutsk Summer Time + + + + + Yekaterinburg Time + Yekaterinburg Standard Time + Yekaterinburg Summer Time + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 thousand + 0 thousand + 00 thousand + 00 thousand + 000 thousand + 000 thousand + 0 million + 0 million + 00 million + 00 million + 000 million + 000 million + 0 billion + 0 billion + 00 billion + 00 billion + 000 billion + 000 billion + 0 trillion + 0 trillion + 00 trillion + 00 trillion + 000 trillion + 000 trillion + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + Andorran Peseta + Andorran peseta + Andorran pesetas + + + United Arab Emirates Dirham + UAE dirham + UAE dirhams + + + Afghan Afghani (1927–2002) + Afghan afghani (1927–2002) + Afghan afghanis (1927–2002) + + + Afghan Afghani + Afghan Afghani + Afghan Afghanis + + + Albanian Lek (1946–1965) + Albanian lek (1946–1965) + Albanian lekë (1946–1965) + + + Albanian Lek + Albanian lek + Albanian lekë + + + Armenian Dram + Armenian dram + Armenian drams + + + Netherlands Antillean Guilder + Netherlands Antillean guilder + Netherlands Antillean guilders + + + Angolan Kwanza + Angolan kwanza + Angolan kwanzas + + + Angolan Kwanza (1977–1991) + Angolan kwanza (1977–1991) + Angolan kwanzas (1977–1991) + + + Angolan New Kwanza (1990–2000) + Angolan new kwanza (1990–2000) + Angolan new kwanzas (1990–2000) + + + Angolan Readjusted Kwanza (1995–1999) + Angolan readjusted kwanza (1995–1999) + Angolan readjusted kwanzas (1995–1999) + + + Argentine Austral + Argentine austral + Argentine australs + + + Argentine Peso Ley (1970–1983) + Argentine peso ley (1970–1983) + Argentine pesos ley (1970–1983) + + + Argentine Peso (1881–1970) + Argentine peso (1881–1970) + Argentine pesos (1881–1970) + + + Argentine Peso (1983–1985) + Argentine peso (1983–1985) + Argentine pesos (1983–1985) + + + Argentine Peso + Argentine peso + Argentine pesos + + + Austrian Schilling + Austrian schilling + Austrian schillings + + + Australian Dollar + Australian dollar + Australian dollars + + + Aruban Florin + Aruban florin + Aruban florin + + + Azerbaijani Manat (1993–2006) + Azerbaijani manat (1993–2006) + Azerbaijani manats (1993–2006) + + + Azerbaijani Manat + Azerbaijani manat + Azerbaijani manats + + + Bosnia-Herzegovina Dinar (1992–1994) + Bosnia-Herzegovina dinar (1992–1994) + Bosnia-Herzegovina dinars (1992–1994) + + + Bosnia-Herzegovina Convertible Mark + Bosnia-Herzegovina convertible mark + Bosnia-Herzegovina convertible marks + + + Bosnia-Herzegovina New Dinar (1994–1997) + Bosnia-Herzegovina new dinar (1994–1997) + Bosnia-Herzegovina new dinars (1994–1997) + + + Barbadian Dollar + Barbadian dollar + Barbadian dollars + + + Bangladeshi Taka + Bangladeshi taka + Bangladeshi takas + + + Belgian Franc (convertible) + Belgian franc (convertible) + Belgian francs (convertible) + + + Belgian Franc + Belgian franc + Belgian francs + + + Belgian Franc (financial) + Belgian franc (financial) + Belgian francs (financial) + + + Bulgarian Hard Lev + Bulgarian hard lev + Bulgarian hard leva + + + Bulgarian Socialist Lev + Bulgarian socialist lev + Bulgarian socialist leva + + + Bulgarian Lev + Bulgarian lev + Bulgarian leva + + + Bulgarian Lev (1879–1952) + Bulgarian lev (1879–1952) + Bulgarian leva (1879–1952) + + + Bahraini Dinar + Bahraini dinar + Bahraini dinars + + + Burundian Franc + Burundian franc + Burundian francs + + + Bermudan Dollar + Bermudan dollar + Bermudan dollars + + + Brunei Dollar + Brunei dollar + Brunei dollars + + + Bolivian Boliviano + Bolivian boliviano + Bolivian bolivianos + + + Bolivian Boliviano (1863–1963) + Bolivian boliviano (1863–1963) + Bolivian bolivianos (1863–1963) + + + Bolivian Peso + Bolivian peso + Bolivian pesos + + + Bolivian Mvdol + Bolivian mvdol + Bolivian mvdols + + + Brazilian New Cruzeiro (1967–1986) + Brazilian new cruzeiro (1967–1986) + Brazilian new cruzeiros (1967–1986) + + + Brazilian Cruzado (1986–1989) + Brazilian cruzado (1986–1989) + Brazilian cruzados (1986–1989) + + + Brazilian Cruzeiro (1990–1993) + Brazilian cruzeiro (1990–1993) + Brazilian cruzeiros (1990–1993) + + + Brazilian Real + Brazilian real + Brazilian reals + + + Brazilian New Cruzado (1989–1990) + Brazilian new cruzado (1989–1990) + Brazilian new cruzados (1989–1990) + + + Brazilian Cruzeiro (1993–1994) + Brazilian cruzeiro (1993–1994) + Brazilian cruzeiros (1993–1994) + + + Brazilian Cruzeiro (1942–1967) + Brazilian cruzeiro (1942–1967) + Brazilian cruzeiros (1942–1967) + + + Bahamian Dollar + Bahamian dollar + Bahamian dollars + + + Bhutanese Ngultrum + Bhutanese ngultrum + Bhutanese ngultrums + + + Burmese Kyat + Burmese kyat + Burmese kyats + + + Botswanan Pula + Botswanan pula + Botswanan pulas + + + Belarusian New Ruble (1994–1999) + Belarusian new ruble (1994–1999) + Belarusian new rubles (1994–1999) + + + Belarusian Ruble + Belarusian ruble + Belarusian rubles + + + Belize Dollar + Belize dollar + Belize dollars + + + Canadian Dollar + Canadian dollar + Canadian dollars + + + Congolese Franc + Congolese franc + Congolese francs + + + WIR Euro + WIR euro + WIR euros + + + Swiss Franc + Swiss franc + Swiss francs + + + WIR Franc + WIR franc + WIR francs + + + Chilean Escudo + Chilean escudo + Chilean escudos + + + Chilean Unit of Account (UF) + Chilean unit of account (UF) + Chilean units of account (UF) + + + Chilean Peso + Chilean peso + Chilean pesos + + + Chinese People’s Bank Dollar + Chinese People’s Bank dollar + Chinese People’s Bank dollars + + + Chinese Yuan + Chinese yuan + Chinese yuan + + + Colombian Peso + Colombian peso + Colombian pesos + + + Colombian Real Value Unit + Colombian real value unit + Colombian real value units + + + Costa Rican Colón + Costa Rican colón + Costa Rican colóns + + + Serbian Dinar (2002–2006) + Serbian dinar (2002–2006) + Serbian dinars (2002–2006) + + + Czechoslovak Hard Koruna + Czechoslovak hard koruna + Czechoslovak hard korunas + + + Cuban Convertible Peso + Cuban convertible peso + Cuban convertible pesos + + + Cuban Peso + Cuban peso + Cuban pesos + + + Cape Verdean Escudo + Cape Verdean escudo + Cape Verdean escudos + + + Cypriot Pound + Cypriot pound + Cypriot pounds + + + Czech Republic Koruna + Czech Republic koruna + Czech Republic korunas + + + East German Mark + East German mark + East German marks + + + German Mark + German mark + German marks + + + Djiboutian Franc + Djiboutian franc + Djiboutian francs + + + Danish Krone + Danish krone + Danish kroner + + + Dominican Peso + Dominican peso + Dominican pesos + + + Algerian Dinar + Algerian dinar + Algerian dinars + + + Ecuadorian Sucre + Ecuadorian sucre + Ecuadorian sucres + + + Ecuadorian Unit of Constant Value + Ecuadorian unit of constant value + Ecuadorian units of constant value + + + Estonian Kroon + Estonian kroon + Estonian kroons + + + Egyptian Pound + Egyptian pound + Egyptian pounds + + + Eritrean Nakfa + Eritrean nakfa + Eritrean nakfas + + + Spanish Peseta (A account) + Spanish peseta (A account) + Spanish pesetas (A account) + + + Spanish Peseta (convertible account) + Spanish peseta (convertible account) + Spanish pesetas (convertible account) + + + Spanish Peseta + Spanish peseta + Spanish pesetas + + + Ethiopian Birr + Ethiopian birr + Ethiopian birrs + + + Euro + euro + euros + + + Finnish Markka + Finnish markka + Finnish markkas + + + Fijian Dollar + Fijian dollar + Fijian dollars + + + Falkland Islands Pound + Falkland Islands pound + Falkland Islands pounds + + + French Franc + French franc + French francs + + + British Pound Sterling + British pound sterling + British pounds sterling + + + Georgian Kupon Larit + Georgian kupon larit + Georgian kupon larits + + + Georgian Lari + Georgian lari + Georgian laris + + + Ghanaian Cedi (1979–2007) + Ghanaian cedi (1979–2007) + Ghanaian cedis (1979–2007) + + + Ghanaian Cedi + Ghanaian cedi + Ghanaian cedis + + + Gibraltar Pound + Gibraltar pound + Gibraltar pounds + + + Gambian Dalasi + Gambian dalasi + Gambian dalasis + + + Guinean Franc + Guinean franc + Guinean francs + + + Guinean Syli + Guinean syli + Guinean sylis + + + Equatorial Guinean Ekwele + Equatorial Guinean ekwele + Equatorial Guinean ekwele + + + Greek Drachma + Greek drachma + Greek drachmas + + + Guatemalan Quetzal + Guatemalan quetzal + Guatemalan quetzals + + + Portuguese Guinea Escudo + Portuguese Guinea escudo + Portuguese Guinea escudos + + + Guinea-Bissau Peso + Guinea-Bissau peso + Guinea-Bissau pesos + + + Guyanaese Dollar + Guyanaese dollar + Guyanaese dollars + + + Hong Kong Dollar + Hong Kong dollar + Hong Kong dollars + + + Honduran Lempira + Honduran lempira + Honduran lempiras + + + Croatian Dinar + Croatian dinar + Croatian dinars + + + Croatian Kuna + Croatian kuna + Croatian kunas + + + Haitian Gourde + Haitian gourde + Haitian gourdes + + + Hungarian Forint + Hungarian forint + Hungarian forints + + + Indonesian Rupiah + Indonesian rupiah + Indonesian rupiahs + + + Irish Pound + Irish pound + Irish pounds + + + Israeli Pound + Israeli pound + Israeli pounds + + + Israeli Sheqel (1980–1985) + Israeli sheqel (1980–1985) + Israeli sheqels (1980–1985) + + + Israeli New Sheqel + Israeli new sheqel + Israeli new sheqels + + + Indian Rupee + Indian rupee + Indian rupees + + + Iraqi Dinar + Iraqi dinar + Iraqi dinars + + + Iranian Rial + Iranian rial + Iranian rials + + + Icelandic Króna (1918–1981) + Icelandic króna (1918–1981) + Icelandic krónur (1918–1981) + + + Icelandic Króna + Icelandic króna + Icelandic krónur + + + Italian Lira + Italian lira + Italian liras + + + Jamaican Dollar + Jamaican dollar + Jamaican dollars + + + Jordanian Dinar + Jordanian dinar + Jordanian dinars + + + Japanese Yen + Japanese yen + Japanese yen + ¥ + + + Kenyan Shilling + Kenyan shilling + Kenyan shillings + + + Kyrgystani Som + Kyrgystani som + Kyrgystani soms + + + Cambodian Riel + Cambodian riel + Cambodian riels + + + Comorian Franc + Comorian franc + Comorian francs + + + North Korean Won + North Korean won + North Korean won + + + South Korean Hwan (1953–1962) + South Korean hwan (1953–1962) + South Korean hwan (1953–1962) + + + South Korean Won (1945–1953) + South Korean won (1945–1953) + South Korean won (1945–1953) + + + South Korean Won + South Korean won + South Korean won + + + Kuwaiti Dinar + Kuwaiti dinar + Kuwaiti dinars + + + Cayman Islands Dollar + Cayman Islands dollar + Cayman Islands dollars + + + Kazakhstani Tenge + Kazakhstani tenge + Kazakhstani tenges + + + Laotian Kip + Laotian kip + Laotian kips + + + Lebanese Pound + Lebanese pound + Lebanese pounds + + + Sri Lankan Rupee + Sri Lankan rupee + Sri Lankan rupees + + + Liberian Dollar + Liberian dollar + Liberian dollars + + + Lesotho Loti + Lesotho loti + Lesotho lotis + + + Lithuanian Litas + Lithuanian litas + Lithuanian litai + + + Lithuanian Talonas + Lithuanian talonas + Lithuanian talonases + + + Luxembourgian Convertible Franc + Luxembourgian convertible franc + Luxembourgian convertible francs + + + Luxembourgian Franc + Luxembourgian franc + Luxembourgian francs + + + Luxembourg Financial Franc + Luxembourg financial franc + Luxembourg financial francs + + + Latvian Lats + Latvian lats + Latvian lati + + + Latvian Ruble + Latvian ruble + Latvian rubles + + + Libyan Dinar + Libyan dinar + Libyan dinars + + + Moroccan Dirham + Moroccan dirham + Moroccan dirhams + + + Moroccan Franc + Moroccan franc + Moroccan francs + + + Monegasque Franc + Monegasque franc + Monegasque francs + + + Moldovan Cupon + Moldovan cupon + Moldovan cupon + + + Moldovan Leu + Moldovan leu + Moldovan lei + + + Malagasy Ariary + Malagasy Ariary + Malagasy Ariaries + + + Malagasy Franc + Malagasy franc + Malagasy francs + + + Macedonian Denar + Macedonian denar + Macedonian denari + + + Macedonian Denar (1992–1993) + Macedonian denar (1992–1993) + Macedonian denari (1992–1993) + + + Malian Franc + Malian franc + Malian francs + + + Myanmar Kyat + Myanmar kyat + Myanmar kyats + + + Mongolian Tugrik + Mongolian tugrik + Mongolian tugriks + + + Macanese Pataca + Macanese pataca + Macanese patacas + + + Mauritanian Ouguiya + Mauritanian ouguiya + Mauritanian ouguiyas + + + Maltese Lira + Maltese lira + Maltese lira + + + Maltese Pound + Maltese pound + Maltese pounds + + + Mauritian Rupee + Mauritian rupee + Mauritian rupees + + + Maldivian Rupee + Maldivian rupee + Maldivian rupees + + + Maldivian Rufiyaa + Maldivian rufiyaa + Maldivian rufiyaas + + + Malawian Kwacha + Malawian Kwacha + Malawian Kwachas + + + Mexican Peso + Mexican peso + Mexican pesos + + + Mexican Silver Peso (1861–1992) + Mexican silver peso (1861–1992) + Mexican silver pesos (1861–1992) + + + Mexican Investment Unit + Mexican investment unit + Mexican investment units + + + Malaysian Ringgit + Malaysian ringgit + Malaysian ringgits + + + Mozambican Escudo + Mozambican escudo + Mozambican escudos + + + Mozambican Metical (1980–2006) + Mozambican metical (1980–2006) + Mozambican meticals (1980–2006) + + + Mozambican Metical + Mozambican metical + Mozambican meticals + + + Namibian Dollar + Namibian dollar + Namibian dollars + + + Nigerian Naira + Nigerian naira + Nigerian nairas + + + Nicaraguan Córdoba (1988–1991) + Nicaraguan córdoba (1988–1991) + Nicaraguan córdobas (1988–1991) + + + Nicaraguan Córdoba + Nicaraguan córdoba + Nicaraguan córdobas + + + Dutch Guilder + Dutch guilder + Dutch guilders + + + Norwegian Krone + Norwegian krone + Norwegian kroner + + + Nepalese Rupee + Nepalese rupee + Nepalese rupees + + + New Zealand Dollar + New Zealand dollar + New Zealand dollars + + + Omani Rial + Omani rial + Omani rials + + + Panamanian Balboa + Panamanian balboa + Panamanian balboas + + + Peruvian Inti + Peruvian inti + Peruvian intis + + + Peruvian Nuevo Sol + Peruvian nuevo sol + Peruvian nuevos soles + + + Peruvian Sol (1863–1965) + Peruvian sol (1863–1965) + Peruvian soles (1863–1965) + + + Papua New Guinean Kina + Papua New Guinean kina + Papua New Guinean kina + + + Philippine Peso + Philippine peso + Philippine pesos + + + Pakistani Rupee + Pakistani rupee + Pakistani rupees + + + Polish Zloty + Polish zloty + Polish zlotys + + + Polish Zloty (1950–1995) + Polish zloty (PLZ) + Polish zlotys (PLZ) + + + Portuguese Escudo + Portuguese escudo + Portuguese escudos + + + Paraguayan Guarani + Paraguayan guarani + Paraguayan guaranis + + + Qatari Rial + Qatari rial + Qatari rials + + + Rhodesian Dollar + Rhodesian dollar + Rhodesian dollars + + + Romanian Leu (1952–2006) + Romanian leu (1952–2006) + Romanian Lei (1952–2006) + + + Romanian Leu + Romanian leu + Romanian lei + + + Serbian Dinar + Serbian dinar + Serbian dinars + + + Russian Ruble + Russian ruble + Russian rubles + + + Russian Ruble (1991–1998) + Russian ruble (1991–1998) + Russian rubles (1991–1998) + + + Rwandan Franc + Rwandan franc + Rwandan francs + + + Saudi Riyal + Saudi riyal + Saudi riyals + + + Solomon Islands Dollar + Solomon Islands dollar + Solomon Islands dollars + + + Seychellois Rupee + Seychellois rupee + Seychellois rupees + + + Sudanese Dinar (1992–2007) + Sudanese dinar (1992–2007) + Sudanese dinars (1992–2007) + + + Sudanese Pound + Sudanese pound + Sudanese pounds + + + Sudanese Pound (1957–1998) + Sudanese pound (1957–1998) + Sudanese pounds (1957–1998) + + + Swedish Krona + Swedish krona + Swedish kronor + + + Singapore Dollar + Singapore dollar + Singapore dollars + + + Saint Helena Pound + Saint Helena pound + Saint Helena pounds + + + Slovenian Tolar + Slovenian tolar + Slovenian tolars + + + Slovak Koruna + Slovak koruna + Slovak korunas + + + Sierra Leonean Leone + Sierra Leonean leone + Sierra Leonean leones + + + Somali Shilling + Somali shilling + Somali shillings + + + Surinamese Dollar + Surinamese dollar + Surinamese dollars + + + Surinamese Guilder + Surinamese guilder + Surinamese guilders + + + South Sudanese Pound + South Sudanese pound + South Sudanese pounds + + + São Tomé and Príncipe Dobra + São Tomé and Príncipe dobra + São Tomé and Príncipe dobras + + + Soviet Rouble + Soviet rouble + Soviet roubles + + + Salvadoran Colón + Salvadoran colón + Salvadoran colones + + + Syrian Pound + Syrian pound + Syrian pounds + + + Swazi Lilangeni + Swazi lilangeni + Swazi emalangeni + + + Thai Baht + Thai baht + Thai baht + + + Tajikistani Ruble + Tajikistani ruble + Tajikistani rubles + + + Tajikistani Somoni + Tajikistani somoni + Tajikistani somonis + + + Turkmenistani Manat (1993–2009) + Turkmenistani manat (1993–2009) + Turkmenistani manat (1993–2009) + + + Turkmenistani Manat + Turkmenistani manat + Turkmenistani manat + + + Tunisian Dinar + Tunisian dinar + Tunisian dinars + + + Tongan Paʻanga + Tongan paʻanga + Tongan paʻanga + + + Timorese Escudo + Timorese escudo + Timorese escudos + + + Turkish Lira (1922–2005) + Turkish lira (1922–2005) + Turkish Lira (1922–2005) + + + Turkish Lira + Turkish lira + Turkish Lira + + + Trinidad and Tobago Dollar + Trinidad and Tobago dollar + Trinidad and Tobago dollars + + + New Taiwan Dollar + New Taiwan dollar + New Taiwan dollars + + + Tanzanian Shilling + Tanzanian shilling + Tanzanian shillings + + + Ukrainian Hryvnia + Ukrainian hryvnia + Ukrainian hryvnias + + + Ukrainian Karbovanets + Ukrainian karbovanets + Ukrainian karbovantsiv + + + Ugandan Shilling (1966–1987) + Ugandan shilling (1966–1987) + Ugandan shillings (1966–1987) + + + Ugandan Shilling + Ugandan shilling + Ugandan shillings + + + US Dollar + US dollar + US dollars + $ + + + US Dollar (Next day) + US dollar (next day) + US dollars (next day) + + + US Dollar (Same day) + US dollar (same day) + US dollars (same day) + + + Uruguayan Peso (Indexed Units) + Uruguayan peso (indexed units) + Uruguayan pesos (indexed units) + + + Uruguayan Peso (1975–1993) + Uruguayan peso (1975–1993) + Uruguayan pesos (1975–1993) + + + Uruguayan Peso + Uruguayan peso + Uruguayan pesos + + + Uzbekistan Som + Uzbekistan som + Uzbekistan som + + + Venezuelan Bolívar (1871–2008) + Venezuelan bolívar (1871–2008) + Venezuelan bolívars (1871–2008) + + + Venezuelan Bolívar + Venezuelan bolívar + Venezuelan bolívars + + + Vietnamese Dong + Vietnamese dong + Vietnamese dong + + + Vietnamese Dong (1978–1985) + Vietnamese dong (1978–1985) + Vietnamese dong (1978–1985) + + + Vanuatu Vatu + Vanuatu vatu + Vanuatu vatus + + + Samoan Tala + Samoan tala + Samoan tala + + + CFA Franc BEAC + CFA franc BEAC + CFA francs BEAC + + + Silver + troy ounce of silver + troy ounces of silver + + + Gold + troy ounce of gold + troy ounces of gold + + + European Composite Unit + European composite unit + European composite units + + + European Monetary Unit + European monetary unit + European monetary units + + + European Unit of Account (XBC) + European unit of account (XBC) + European units of account (XBC) + + + European Unit of Account (XBD) + European unit of account (XBD) + European units of account (XBD) + + + East Caribbean Dollar + East Caribbean dollar + East Caribbean dollars + + + Special Drawing Rights + special drawing rights + special drawing rights + + + European Currency Unit + European currency unit + European currency units + + + French Gold Franc + French gold franc + French gold francs + + + French UIC-Franc + French UIC-franc + French UIC-francs + + + CFA Franc BCEAO + CFA franc BCEAO + CFA francs BCEAO + + + Palladium + troy ounce of palladium + troy ounces of palladium + + + CFP Franc + CFP franc + CFP francs + + + Platinum + troy ounce of platinum + troy ounces of platinum + + + RINET Funds + RINET Funds unit + RINET Funds units + + + Sucre + Sucre + Sucres + + + Testing Currency Code + Testing Currency unit + Testing Currency units + + + ADB Unit of Account + ADB unit of account + ADB units of account + + + Unknown Currency + (unknown unit of currency) + (unknown currency) + + + Yemeni Dinar + Yemeni dinar + Yemeni dinars + + + Yemeni Rial + Yemeni rial + Yemeni rials + + + Yugoslavian Hard Dinar (1966–1990) + Yugoslavian hard dinar (1966–1990) + Yugoslavian hard dinars (1966–1990) + + + Yugoslavian New Dinar (1994–2002) + Yugoslavian new dinar (1994–2002) + Yugoslavian new dinars (1994–2002) + + + Yugoslavian Convertible Dinar (1990–1992) + Yugoslavian convertible dinar (1990–1992) + Yugoslavian convertible dinars (1990–1992) + + + Yugoslavian Reformed Dinar (1992–1993) + Yugoslavian reformed dinar (1992–1993) + Yugoslavian reformed dinars (1992–1993) + + + South African Rand (financial) + South African rand (financial) + South African rands (financial) + + + South African Rand + South African rand + South African rand + + + Zambian Kwacha (1968–2012) + Zambian kwacha (1968–2012) + Zambian kwachas (1968–2012) + + + Zambian Kwacha + Zambian kwacha + Zambian kwachas + + + Zairean New Zaire (1993–1998) + Zairean new zaire (1993–1998) + Zairean new zaires (1993–1998) + + + Zairean Zaire (1971–1993) + Zairean zaire (1971–1993) + Zairean zaires (1971–1993) + + + Zimbabwean Dollar (1980–2008) + Zimbabwean dollar (1980–2008) + Zimbabwean dollars (1980–2008) + + + Zimbabwean Dollar (2009) + Zimbabwean dollar (2009) + Zimbabwean dollars (2009) + + + Zimbabwean Dollar (2008) + Zimbabwean dollar (2008) + Zimbabwean dollars (2008) + + + + {0}+ + + + + + + {0} per {1} + + + {0} g-force + {0} g-force + + + {0} arcminute + {0} arcminutes + + + {0} arcsecond + {0} arcseconds + + + {0} degree + {0} degrees + + + {0} acre + {0} acres + + + {0} hectare + {0} hectares + + + {0} square foot + {0} square feet + + + {0} square kilometer + {0} square kilometers + + + {0} square meter + {0} square meters + + + {0} square mile + {0} square miles + + + {0} day + {0} days + + + {0} hour + {0} hours + + + {0} millisecond + {0} milliseconds + + + {0} minute + {0} minutes + + + {0} month + {0} months + + + {0} second + {0} seconds + + + {0} week + {0} weeks + + + {0} year + {0} years + + + {0} centimeter + {0} centimeters + + + {0} foot + {0} feet + + + {0} inch + {0} inches + + + {0} kilometer + {0} kilometers + + + {0} light year + {0} light years + + + {0} meter + {0} meters + + + {0} mile + {0} miles + + + {0} millimeter + {0} millimeters + + + {0} picometer + {0} picometers + + + {0} yard + {0} yards + + + {0} gram + {0} grams + + + {0} kilogram + {0} kilograms + + + {0} ounce + {0} ounces + + + {0} pound + {0} pounds + + + {0} horsepower + {0} horsepower + + + {0} kilowatt + {0} kilowatts + + + {0} watt + {0} watts + + + {0} hectopascal + {0} hectopascals + + + {0} inch of mercury + {0} inches of mercury + + + {0} millibar + {0} millibars + + + {0} kilometer per hour + {0} kilometers per hour + + + {0} meter per second + {0} meters per second + + + {0} mile per hour + {0} miles per hour + + + {0} degree Celsius + {0} degrees Celsius + + + {0} degree Fahrenheit + {0} degrees Fahrenheit + + + {0} cubic kilometer + {0} cubic kilometers + + + {0} cubic mile + {0} cubic miles + + + {0} liter + {0} liters + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} arcmin + {0} arcmin + + + {0} arcsec + {0} arcsecs + + + {0} deg + {0} deg + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} sq ft + {0} sq ft + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} sq mi + {0} sq mi + + + {0} day + {0} days + + + {0} hr + {0} hrs + + + {0} ms + {0} ms + + + {0} min + {0} mins + + + {0} mth + {0} mths + + + {0} sec + {0} secs + + + {0} wk + {0} wks + + + {0} yr + {0} yrs + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ly + {0} ly + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} kph + {0} kph + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}G + {0}Gs + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ac + {0}ac + + + {0}ha + {0}ha + + + {0}ft² + {0}ft² + + + {0}mi² + {0}mi² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}w + {0}w + + + {0}y + {0}y + + + {0}cm + {0}cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}km + {0}km + + + {0}ly + {0}ly + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}oz + {0}oz + + + {0}# + {0}# + + + {0}hp + {0}hp + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + + + {0}mb + {0}mb + + + {0}kph + {0}kph + + + {0}m/s + {0}m/s + + + {0}mph + {0}mph + + + {0}°C + {0}°C + + + {0}° + {0}° + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0}l + {0}l + + + + + + {0}, {1} + {0}, {1} + {0}, and {1} + {0} and {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + yes:y + no:n + + + + diff --git a/library/Zend/Locale/Data/en_001.xml b/library/Zend/Locale/Data/en_001.xml new file mode 100755 index 000000000..313f4c80c --- /dev/null +++ b/library/Zend/Locale/Data/en_001.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + US$ + + + + + + + {0}° + {0}° + + + {0}°F + {0}°F + + + + + diff --git a/library/Zend/Locale/Data/en_150.xml b/library/Zend/Locale/Data/en_150.xml new file mode 100755 index 000000000..477b7cd77 --- /dev/null +++ b/library/Zend/Locale/Data/en_150.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMM y G + + + + + dd MMM y G + + + + + dd/MM/y GGGGG + + + + + + d/M + E d/M + d/M/y G + E, d/M/y G + E d MMM y G + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + + + + + + + EEEE d MMMM y + + + + + d MMM y + + + + + dd MMM y + + + + + dd/MM/yy + + + + + + + HH 'h' mm 'min' ss 's' zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d/M + E d/M + d/M/y + E, d/M/y + E d MMM y + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + + + + + + + , + . + + + + + #,##0.00 ¤ + + + + + + diff --git a/library/Zend/Locale/Data/en_AG.xml b/library/Zend/Locale/Data/en_AG.xml new file mode 100755 index 000000000..11d0e511a --- /dev/null +++ b/library/Zend/Locale/Data/en_AG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_AI.xml b/library/Zend/Locale/Data/en_AI.xml new file mode 100755 index 000000000..6621bbeaf --- /dev/null +++ b/library/Zend/Locale/Data/en_AI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_AS.xml b/library/Zend/Locale/Data/en_AS.xml new file mode 100755 index 000000000..2342b56e4 --- /dev/null +++ b/library/Zend/Locale/Data/en_AS.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_AU.xml b/library/Zend/Locale/Data/en_AU.xml new file mode 100755 index 000000000..8502eba2a --- /dev/null +++ b/library/Zend/Locale/Data/en_AU.xml @@ -0,0 +1,491 @@ + + + + + + + + + + + + + US English + + + + + + U.K. + U.S. + + + + + + + + + EEEE, d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + d/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/MM/y GGGGG + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d/M/y + E, d/M/y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + E, d/MM - E, d/MM + E, d/MM - E, d/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E, d/MM/y - E, d/MM/y + E, d/MM/y - E, d/MM/y + E, d/MM/y - E, d/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d/M/y + E, d/M/y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E, d/MM - E, d/MM + E, d/MM - E, d/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E, d/MM/y - E, d/MM/y + E, d/MM/y - E, d/MM/y + E, d/MM/y - E, d/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/MM/y GGGGG + + + + + + d/M/y + E, d/M/y + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + dd/MM/y G + + + + + d/MM/yy GGGGG + + + + + + + + Last year + This year + Next year + + + Last month + This month + Next month + + + Last week + This week + Next week + + + Yesterday + Today + Tomorrow + + + + + + ACT + ACST + ACDT + + + + + ACWT + ACWST + ACWDT + + + + + AET + AEST + AEDT + + + + + AWT + AWST + AWDT + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + LHT + LHST + LHDT + + + + + NZT + NZST + NZDT + + + + + + + + + ¤#,##0.00 + + + + + + $ + + + Euro + euro + euro + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/en_BB.xml b/library/Zend/Locale/Data/en_BB.xml new file mode 100755 index 000000000..c47454f9a --- /dev/null +++ b/library/Zend/Locale/Data/en_BB.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_BE.xml b/library/Zend/Locale/Data/en_BE.xml new file mode 100755 index 000000000..734ed9c67 --- /dev/null +++ b/library/Zend/Locale/Data/en_BE.xml @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMM y G + + + + + dd MMM y G + + + + + dd/MM/y GGGGG + + + + + + d/M + E d/M + d/M/y G + E, d/M/y G + E d MMM y G + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + + + + + + + EEEE d MMMM y + + + + + d MMM y + + + + + dd MMM y + + + + + dd/MM/yy + + + + + + + HH 'h' mm 'min' ss 's' zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d/M + E d/M + d/M/y + E, d/M/y + E d MMM y + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + + + + + + + , + . + + + + + #,##0.00 ¤ + + + + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/en_BM.xml b/library/Zend/Locale/Data/en_BM.xml new file mode 100755 index 000000000..12d835b94 --- /dev/null +++ b/library/Zend/Locale/Data/en_BM.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_BS.xml b/library/Zend/Locale/Data/en_BS.xml new file mode 100755 index 000000000..f43029e73 --- /dev/null +++ b/library/Zend/Locale/Data/en_BS.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + $ + + + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + diff --git a/library/Zend/Locale/Data/en_BW.xml b/library/Zend/Locale/Data/en_BW.xml new file mode 100755 index 000000000..4b7ceb3ac --- /dev/null +++ b/library/Zend/Locale/Data/en_BW.xml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + dd MMM y G + + + + + dd/MM/y GGGGG + + + + + + dd MMM y G + E dd MMM y G + dd/MM + E dd/MM + dd/MM + dd MMM + E dd MMM + MM/y G + dd/MM/y G + E, dd/MM/y G + dd MMM y G + E dd MMM y G + MMMM y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E dd - E dd MMM y G + E dd MMM - E dd MMM y G + E dd MMM y - E dd MMM y G + + + + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + dd MMM y + + + + + dd/MM/yy + + + + + + dd MMM y G + E dd MMM y G + dd/MM + E dd/MM + dd/MM + dd MMM + E dd MMM + MM/y + dd/MM/y + E, dd/MM/y + dd MMM y + E dd MMM y + MMMM y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E dd - E dd MMM y + E dd MMM - E dd MMM y + E dd MMM y - E dd MMM y + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + P + + + + + diff --git a/library/Zend/Locale/Data/en_BZ.xml b/library/Zend/Locale/Data/en_BZ.xml new file mode 100755 index 000000000..9e1afa581 --- /dev/null +++ b/library/Zend/Locale/Data/en_BZ.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/y GGGGG + + + + + + dd/MM + E dd/MM + dd MMM + E dd MMM + MM/y G + dd/MM/y G + E dd/MM/y G + dd MMM y G + E dd MMM y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + M/d - M/d + M/d - M/d + + + E, M/d - E, M/d + E, M/d - E, M/d + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + E, MMM d - E, MMM d + E, MMM d - E, MMM d + + + y-y G + + + M/y - M/y G + M/y - M/y G + + + M/d/y - M/d/y G + M/d/y - M/d/y G + M/d/y - M/d/y G + + + E, M/d/y - E, M/d/y G + E, M/d/y - E, M/d/y G + E, M/d/y - E, M/d/y G + + + MMM-MMM y G + MMM y - MMM y G + + + MMM d-d, y G + MMM d - MMM d, y G + MMM d, y - MMM d, y G + + + E, MMM d - E, MMM d, y G + E, MMM d - E, MMM d, y G + E, MMM d, y - E, MMM d, y G + + + + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + dd/MM + E dd/MM + dd MMM + E dd MMM + MM/y + dd/MM/y + E dd/MM/y + dd MMM y + E dd MMM y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + M/d - M/d + M/d - M/d + + + E, M/d - E, M/d + E, M/d - E, M/d + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + E, MMM d - E, MMM d + E, MMM d - E, MMM d + + + y-y + + + M/y - M/y + M/y - M/y + + + M/d/y - M/d/y + M/d/y - M/d/y + M/d/y - M/d/y + + + E, M/d/y - E, M/d/y + E, M/d/y - E, M/d/y + E, M/d/y - E, M/d/y + + + MMM-MMM y + MMM y - MMM y + + + MMM d-d, y + MMM d - MMM d, y + MMM d, y - MMM d, y + + + E, MMM d - E, MMM d, y + E, MMM d - E, MMM d, y + E, MMM d, y - E, MMM d, y + + + + + + + + + + $ + + + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + diff --git a/library/Zend/Locale/Data/en_CA.xml b/library/Zend/Locale/Data/en_CA.xml new file mode 100755 index 000000000..29ce871a7 --- /dev/null +++ b/library/Zend/Locale/Data/en_CA.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + GGGGG y-MM-dd + + + + + + MM-dd + E, MM-dd + GGGGG y-MM + GGGGG y-MM-dd + E, GGGGG y-MM-dd + + + + MM-dd – MM-dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + GGGGG y-MM – y-MM + GGGGG y-MM – y-MM + + + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + + + + + + + y-MM-dd + + + + + + MM-dd + E, MM-dd + y-MM + y-MM-dd + E, y-MM-dd + + + + MM-dd – MM-dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + + + + + + + NT + NST + NDT + + + + + + + + $ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/en_CC.xml b/library/Zend/Locale/Data/en_CC.xml new file mode 100755 index 000000000..8a380c2e3 --- /dev/null +++ b/library/Zend/Locale/Data/en_CC.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_CK.xml b/library/Zend/Locale/Data/en_CK.xml new file mode 100755 index 000000000..de18aa7d6 --- /dev/null +++ b/library/Zend/Locale/Data/en_CK.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_CM.xml b/library/Zend/Locale/Data/en_CM.xml new file mode 100755 index 000000000..cf8ba0923 --- /dev/null +++ b/library/Zend/Locale/Data/en_CM.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + diff --git a/library/Zend/Locale/Data/en_CX.xml b/library/Zend/Locale/Data/en_CX.xml new file mode 100755 index 000000000..4bffff13a --- /dev/null +++ b/library/Zend/Locale/Data/en_CX.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_DG.xml b/library/Zend/Locale/Data/en_DG.xml new file mode 100755 index 000000000..e51695dfe --- /dev/null +++ b/library/Zend/Locale/Data/en_DG.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_DM.xml b/library/Zend/Locale/Data/en_DM.xml new file mode 100755 index 000000000..9a4dca1b1 --- /dev/null +++ b/library/Zend/Locale/Data/en_DM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_Dsrt.xml b/library/Zend/Locale/Data/en_Dsrt.xml new file mode 100755 index 000000000..7cc67f8b4 --- /dev/null +++ b/library/Zend/Locale/Data/en_Dsrt.xml @@ -0,0 +1,952 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 𐐎𐐲𐑉𐑊𐐼 + 𐐈𐑁𐑉𐐲𐐿𐐲 + 𐐤𐐱𐑉𐑃 𐐊𐑋𐐯𐑉𐐲𐐿𐐲 + 𐐝𐐵𐑃 𐐊𐑋𐐯𐑉𐐲𐐿𐐲 + 𐐄𐑇𐐨𐐰𐑌𐐨𐐲 + 𐐎𐐯𐑅𐐻𐐲𐑉𐑌 𐐈𐑁𐑉𐐲𐐿𐐲 + 𐐝𐐯𐑌𐐻𐑉𐐲𐑊 𐐊𐑋𐐯𐑉𐐲𐐿𐐲 + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐈𐑁𐑉𐐲𐐿𐐲 + 𐐤𐐱𐑉𐑄𐐲𐑉𐑌 𐐈𐑁𐑉𐐲𐐿𐐲 + 𐐣𐐮𐐼𐑊 𐐈𐑁𐑉𐐮𐐿𐐲 + 𐐝𐐲𐑄𐐲𐑉𐑌 𐐈𐑁𐑉𐐲𐐿𐐲 + 𐐊𐑋𐐯𐑉𐐲𐐿𐐲𐑆 + 𐐤𐐱𐑉𐑄𐐲𐑉𐑌 𐐊𐑋𐐯𐑉𐐲𐐿𐐲 + 𐐗𐐯𐑉𐐲𐐺𐐨𐐲𐑌 + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐁𐑈𐐲 + 𐐝𐐲𐑄𐐲𐑉𐑌 𐐁𐑈𐐲 + 𐐝𐐵𐑃-𐐀𐑅𐐻𐐲𐑉𐑌 𐐁𐑈𐐲 + 𐐝𐐲𐑄𐐲𐑉𐑌 𐐏𐐲𐑉𐐲𐐹 + 𐐉𐑅𐐻𐑉𐐩𐑊𐐨𐐲 𐐰𐑌𐐼 𐐤𐐭 𐐞𐐨𐑊𐐲𐑌𐐼 + 𐐣𐐯𐑊𐐲𐑌𐐨𐑈𐐲 + 𐐣𐐴𐐿𐑉𐐲𐑌𐐨𐑈𐐲𐑌 𐐡𐐨𐐾𐐲𐑌 + 𐐑𐐪𐑊𐐲𐑌𐐨𐑈𐐲 + 𐐁𐑈𐐲 + 𐐝𐐯𐑌𐐻𐑉𐐲𐑊 𐐁𐑈𐐲 + 𐐎𐐯𐑅𐐻𐐲𐑉𐑌 𐐁𐑈𐐲 + 𐐏𐐲𐑉𐐲𐐹 + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐏𐐲𐑉𐐲𐐹 + 𐐤𐐱𐑉𐑄𐐲𐑉𐑌 𐐏𐐲𐑉𐐲𐐹 + 𐐎𐐯𐑅𐐻𐐲𐑉𐑌 𐐏𐐲𐑉𐐲𐐹 + 𐐢𐐰𐐻𐑌 𐐊𐑋𐐯𐑉𐐲𐐿𐐲 𐐰𐑌𐐼 𐑄 𐐗𐐯𐑉𐐲𐐺𐐨𐐲𐑌 + 𐐈𐑌𐐼𐐱𐑉𐐲 + 𐐏𐐭𐑌𐐴𐐼𐐮𐐼 𐐇𐑉𐐲𐐺 𐐇𐑋𐐲𐑉𐐩𐐻𐑅 + 𐐈𐑁𐑀𐐰𐑌𐐲𐑅𐐻𐐰𐑌 + 𐐈𐑌𐐻𐐨𐑀𐐶𐐲 𐐰𐑌𐐼 𐐒𐐪𐑉𐐺𐐷𐐭𐐼𐐲 + 𐐈𐑍𐑀𐐶𐐮𐑊𐐲 + 𐐈𐑊𐐺𐐩𐑌𐐨𐐲 + 𐐂𐑉𐑋𐐨𐑌𐐨𐐲 + 𐐤𐐯𐑄𐐲𐑉𐑊𐐲𐑌𐐼𐑆 𐐈𐑌𐐻𐐮𐑊𐐨𐑆 + 𐐈𐑌𐑀𐐬𐑊𐐲 + 𐐈𐑌𐐻𐐪𐑉𐐿𐐻𐐮𐐿𐐲 + 𐐂𐑉𐐾𐐲𐑌𐐻𐐨𐑌𐐲 + 𐐊𐑋𐐯𐑉𐐲𐐿𐐲𐑌 𐐝𐐲𐑋𐐬𐐲 + 𐐉𐑅𐐻𐑉𐐨𐐲 + 𐐉𐑅𐐻𐑉𐐩𐑊𐐨𐐲 + 𐐊𐑉𐐭𐐺𐐲 + 𐐈𐑊𐐰𐑌𐐼 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐈𐑆𐐲𐑉𐐺𐐴𐑈𐐪𐑌 + 𐐒𐐱𐑆𐑌𐐨𐐲 𐐰𐑌𐐼 𐐐𐐲𐑉𐐻𐑅𐐲𐑀𐐬𐑂𐐨𐑌𐐲 + 𐐒𐐪𐑉𐐺𐐩𐐼𐐬𐑅 + 𐐒𐐪𐑍𐑀𐑊𐐲𐐼𐐯𐑇 + 𐐒𐐯𐑊𐐾𐐲𐑋 + 𐐒𐐲𐑉𐐿𐐩𐑌𐐲 𐐙𐐰𐑅𐐬 + 𐐒𐐲𐑊𐑀𐐯𐑉𐐨𐐲 + 𐐒𐐪𐑉𐐩𐑌 + 𐐒𐐲𐑉𐐳𐑌𐐼𐐨 + 𐐒𐐲𐑌𐐨𐑌 + 𐐝𐐩𐑌𐐻 𐐒𐐪𐑉𐐻𐐩𐑊𐐲𐑋𐐨 + 𐐒𐐲𐑉𐑋𐐷𐐭𐐼𐐲 + 𐐒𐑉𐐭𐑌𐐴 + 𐐒𐐬𐑊𐐮𐑂𐐨𐐲 + 𐐒𐑉𐐲𐑆𐐮𐑊 + 𐐒𐐲𐐸𐐪𐑋𐐲𐑅 + 𐐒𐐭𐐻𐐪𐑌 + 𐐒𐐭𐑂𐐩 𐐌𐑊𐐲𐑌𐐼 + 𐐒𐐪𐐻𐑅𐐶𐐪𐑌𐐲 + 𐐒𐐯𐑊𐐲𐑉𐐭𐑅 + 𐐒𐐲𐑊𐐨𐑆 + 𐐗𐐰𐑌𐐲𐐼𐐲 + 𐐗𐐬𐐿𐐬𐑆 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐗𐐪𐑍𐑀𐐬 - 𐐗𐐲𐑌𐑇𐐪𐑅𐐲 + 𐐝𐐯𐑌𐐻𐑉𐐲𐑊 𐐈𐑁𐑉𐐲𐐿𐐲𐑌 𐐡𐐨𐐹𐐲𐐺𐑊𐐮𐐿 + 𐐗𐐪𐑍𐑀𐐬 - 𐐒𐑉𐐪𐑆𐐲𐑂𐐮𐑊 + 𐐝𐐶𐐮𐐻𐑅𐐲𐑉𐑊𐐲𐑌𐐼 + 𐐌𐑂𐑉𐐨 𐐗𐐬𐑅𐐻 + 𐐗𐐳𐐿 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐕𐐨𐑊𐐩 + 𐐗𐐰𐑋𐐲𐑉𐐭𐑌 + 𐐕𐐴𐑌𐐲 + 𐐗𐐲𐑊𐐲𐑋𐐺𐐨𐐲 + 𐐗𐐱𐑅𐐻𐐲 𐐡𐐨𐐿𐐲 + 𐐗𐐷𐐭𐐺𐐲 + 𐐗𐐩𐐹 𐐚𐐯𐑉𐐼𐐨 + 𐐗𐑉𐐮𐑅𐑋𐐲𐑅 𐐌𐑊𐐲𐑌𐐼 + 𐐝𐐴𐐹𐑉𐐲𐑅 + 𐐕𐐯𐐿 𐐡𐐨𐐹𐐲𐐺𐑊𐐮𐐿 + 𐐖𐐲𐑉𐑋𐐲𐑌𐐨 + 𐐖𐐲𐐺𐐭𐐼𐐨 + 𐐔𐐯𐑌𐑋𐐪𐑉𐐿 + 𐐔𐐪𐑋𐐲𐑌𐐨𐐿𐐲 + 𐐔𐐲𐑋𐐮𐑌𐐲𐐿𐐲𐑌 𐐡𐐨𐐹𐐲𐐺𐑊𐐮𐐿 + 𐐈𐑊𐐾𐐮𐑉𐐨𐐲 + 𐐇𐐿𐐶𐐲𐐼𐐱𐑉 + 𐐇𐑅𐐻𐐬𐑌𐐨𐐲 + 𐐀𐐾𐐲𐐹𐐻 + 𐐎𐐯𐑅𐐻𐐲𐑉𐑌 𐐝𐐲𐐸𐐱𐑉𐐲 + 𐐇𐑉𐐮𐐻𐑉𐐨𐐲 + 𐐝𐐹𐐩𐑌 + 𐐀𐑃𐐨𐐬𐐹𐐨𐐲 + 𐐏𐐲𐑉𐐲𐐹𐐨𐐲𐑌 𐐏𐐭𐑌𐐷𐐲𐑌 + 𐐙𐐮𐑌𐑊𐐲𐑌𐐼 + 𐐙𐐨𐐾𐐨 + 𐐙𐐪𐑊𐐿𐑊𐐲𐑌𐐼 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐣𐐴𐐿𐑉𐐲𐑌𐐨𐑈𐐲 + 𐐙𐐯𐑉𐐬 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐙𐑉𐐰𐑌𐑅 + 𐐘𐐲𐐺𐐪𐑌 + 𐐏𐐭𐑌𐐴𐐻𐐲𐐼 𐐗𐐨𐑍𐐼𐐲𐑋 + 𐐘𐑉𐐲𐑌𐐩𐐼𐐲 + 𐐖𐐱𐑉𐐾𐐲 + 𐐙𐑉𐐯𐑌𐐽 𐐘𐐨𐐪𐑌𐐲 + 𐐘𐐲𐑉𐑌𐑆𐐨 + 𐐘𐐪𐑌𐐲 + 𐐖𐐲𐐺𐑉𐐱𐑊𐐻𐐲𐑉 + 𐐘𐑉𐐨𐑌𐑊𐐲𐑌𐐼 + 𐐘𐐰𐑋𐐺𐐨𐐲 + 𐐘𐐮𐑌𐐨 + 𐐘𐐶𐐪𐐼𐐲𐑊𐐭𐐹 + 𐐇𐐿𐐶𐐲𐐻𐐱𐑉𐐨𐐲𐑊 𐐘𐐮𐑌𐐨 + 𐐘𐑉𐐨𐑅 + 𐐝𐐵𐑃 𐐖𐐱𐑉𐐾𐐲 𐐰𐑌𐐼 𐑄 𐐝𐐵𐑃 𐐝𐐰𐑌𐐼𐐶𐐮𐐽 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐘𐐶𐐪𐐼𐐲𐑋𐐪𐑊𐐲 + 𐐘𐐶𐐪𐑋 + 𐐘𐐮𐑌𐐨-𐐒𐐮𐑅𐐵 + 𐐘𐐴𐐰𐑌𐐲 + 𐐐𐐬𐑍 𐐗𐐬𐑍 𐐝𐐈𐐡 𐐕𐐴𐑌𐐲 + 𐐐𐐬𐑍 𐐗𐐬𐑍 + 𐐐𐐲𐑉𐐼 𐐌𐑊𐐲𐑌𐐼 𐐰𐑌𐐼 𐐣𐐿𐐔𐐱𐑌𐐲𐑊𐐼 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐐𐐪𐑌𐐼𐐭𐑉𐐲𐑅 + 𐐗𐑉𐐬𐐩𐑇𐐲 + 𐐐𐐩𐐻𐐨 + 𐐐𐐲𐑍𐑀𐐲𐑉𐐨 + 𐐆𐑌𐐼𐐲𐑌𐐨𐑈𐐲 + 𐐌𐑉𐑊𐐲𐑌𐐼 + 𐐆𐑆𐑉𐐨𐐲𐑊 + 𐐌𐐲𐑊 𐐲𐑁 𐐣𐐰𐑌 + 𐐆𐑌𐐼𐐨𐐲 + 𐐒𐑉𐐮𐐼𐐮𐑇 𐐆𐑌𐐼𐐨𐐲𐑌 𐐄𐑇𐐲𐑌 𐐓𐐯𐑉𐐲𐐻𐐱𐑉𐐨 + 𐐆𐑉𐐰𐐿 + 𐐆𐑉𐐪𐑌 + 𐐌𐑅𐑊𐐲𐑌𐐼 + 𐐆𐐻𐐲𐑊𐐨 + 𐐖𐐲𐑉𐑆𐐨 + 𐐖𐐲𐑋𐐩𐐿𐐲 + 𐐖𐐱𐑉𐐼𐐲𐑌 + 𐐖𐐲𐐹𐐰𐑌 + 𐐗𐐯𐑌𐐷𐐲 + 𐐗𐐮𐑉𐑀𐐲𐑅𐐻𐐰𐑌 + 𐐗𐐰𐑋𐐺𐐬𐐼𐐨𐐲 + 𐐗𐐮𐑉𐐲𐐺𐐪𐐻𐐨 + 𐐗𐐪𐑋𐐲𐑉𐐬𐑆 + 𐐝𐐩𐑌𐐻 𐐗𐐮𐐻𐑅 𐐰𐑌𐐼 𐐤𐐨𐑂𐐮𐑅 + 𐐤𐐱𐑉𐑃 𐐗𐐲𐑉𐐨𐐲 + 𐐝𐐵𐑃 𐐗𐐲𐑉𐐨𐐲 + 𐐗𐐲𐐶𐐩𐐻 + 𐐗𐐩𐑋𐐲𐑌 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐗𐐲𐑆𐐪𐐿𐑅𐐻𐐪𐑌 + 𐐢𐐪𐐬𐑅 + 𐐢𐐯𐐺𐐲𐑌𐐪𐑌 + 𐐢𐐮𐐿𐐻𐐲𐑌𐑅𐐻𐐴𐑌 + 𐐟𐑉𐐨 𐐢𐐰𐑍𐐿𐐲 + 𐐢𐐴𐐺𐐮𐑉𐐨𐐲 + 𐐢𐐲𐑅𐐬𐑃𐐬 + 𐐢𐐮𐑃𐐲𐐶𐐩𐑌𐐨𐐲 + 𐐢𐐲𐐿𐑅𐐲𐑋𐐺𐐲𐑉𐑀 + 𐐢𐐰𐐻𐑂𐐨𐐲 + 𐐢𐐮𐐺𐐨𐐲 + 𐐣𐐲𐑉𐐪𐐿𐐬 + 𐐣𐐪𐑌𐐲𐐿𐐬 + 𐐣𐐱𐑊𐐼𐐬𐑂𐐲 + 𐐣𐐪𐑌𐐲𐑌𐐨𐑀𐑉𐐬 + 𐐝𐐩𐑌𐐻 𐐣𐐪𐑉𐐻𐑌 + 𐐣𐐰𐐼𐐲𐑀𐐰𐑅𐐿𐐲𐑉 + 𐐣𐐪𐑉𐑇𐐲𐑊 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐣𐐰𐑅𐐲𐐼𐐬𐑌𐐨𐐲 + 𐐣𐐪𐑊𐐨 + 𐐣𐐨𐐲𐑌𐑋𐐪𐑉 + 𐐣𐐪𐑍𐑀𐐬𐑊𐐨𐐲 + 𐐣𐐲𐐿𐐵 𐐝𐐈𐐡 𐐕𐐴𐑌𐐲 + 𐐣𐐲𐐿𐐵 + 𐐤𐐱𐑉𐑄𐐲𐑉𐑌 𐐣𐐰𐑉𐐨𐐱𐑌𐐲 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐣𐐪𐑉𐐻𐑌𐐨𐐿 + 𐐣𐐱𐑉𐐲𐐻𐐩𐑌𐐨𐐲 + 𐐣𐐪𐑌𐐻𐑅𐐲𐑉𐐪𐐻 + 𐐣𐐱𐑊𐐻𐐲 + 𐐣𐐱𐑉𐐮𐑇𐐲𐑅 + 𐐣𐐪𐑊𐐼𐐨𐑂𐑆 + 𐐣𐐲𐑊𐐪𐐶𐐨 + 𐐣𐐯𐐿𐑅𐐲𐐿𐐬 + 𐐣𐐲𐑊𐐩𐑈𐐲 + 𐐣𐐬𐑆𐐰𐑋𐐺𐐨𐐿 + 𐐤𐐲𐑋𐐮𐐺𐐨𐐲 + 𐐤𐐭 𐐗𐐰𐑊𐐲𐐼𐐬𐑌𐐷𐐲 + 𐐤𐐴𐐾𐐲𐑉 + 𐐤𐐱𐑉𐑁𐐲𐐿 𐐌𐑊𐐲𐑌𐐼 + 𐐤𐐴𐐾𐐮𐑉𐐨𐐲 + 𐐤𐐮𐐿𐐲𐑉𐐪𐑀𐐶𐐲 + 𐐤𐐯𐑄𐐲𐑉𐑊𐐲𐑌𐐼𐑆 + 𐐤𐐱𐑉𐐶𐐩 + 𐐤𐐩𐐹𐐪𐑊 + 𐐤𐐪𐐭𐑉𐐭 + 𐐤𐐷𐐭𐐩 + 𐐤𐐭 𐐞𐐨𐑊𐐲𐑌𐐼 + 𐐄𐑋𐐲𐑌 + 𐐑𐐰𐑌𐐲𐑋𐐪 + 𐐑𐐲𐑉𐐭 + 𐐙𐑉𐐯𐑌𐐽 𐐑𐐪𐑊𐐲𐑌𐐨𐑈𐐲 + 𐐑𐐰𐐹𐐷𐐳𐐲 𐐤𐐭 𐐘𐐮𐑌𐐨 + 𐐙𐐮𐑊𐐲𐐹𐐨𐑌𐑆 + 𐐑𐐰𐐿𐐲𐑅𐐻𐐰𐑌 + 𐐑𐐬𐑊𐐲𐑌𐐼 + 𐐝𐐩𐑌𐐻 𐐑𐐨𐐯𐑉 𐐰𐑌𐐼 𐐣𐐨𐐿𐐲𐑊𐐪𐑌 + 𐐑𐐮𐐻𐐿𐐯𐑉𐑌 + 𐐑𐐶𐐯𐑉𐐻𐐬 𐐡𐐨𐐿𐐬 + 𐐑𐐰𐑊𐐲𐑅𐐻𐐮𐑌𐐨𐐲𐑌 𐐓𐐯𐑉𐐲𐐻𐐱𐑉𐐨 + 𐐑𐐱𐑉𐐽𐐲𐑀𐐲𐑊 + 𐐑𐐲𐑊𐐵 + 𐐑𐐯𐑉𐐲𐑀𐐶𐐴 + 𐐗𐐲𐐻𐐪𐑉 + 𐐍𐐻𐑊𐐴𐐮𐑍 𐐄𐑇𐐨𐐰𐑌𐐨𐐲 + 𐐡𐐨𐐷𐐭𐑌𐐷𐐲𐑌 + 𐐡𐐬𐑋𐐩𐑌𐐨𐐲 + 𐐝𐐲𐑉𐐺𐐨𐐲 + 𐐡𐐲𐑇𐐲 + 𐐡𐐲𐐶𐐪𐑌𐐼𐐲 + 𐐝𐐵𐐼𐐨 𐐊𐑉𐐩𐐺𐐨𐐲 + 𐐝𐐪𐑊𐐲𐑋𐐲𐑌 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐝𐐩𐑇𐐯𐑊𐑆 + 𐐝𐐭𐐼𐐰𐑌 + 𐐝𐐶𐐨𐐼𐑌 + 𐐝𐐮𐑍𐐲𐐹𐐱𐑉 + 𐐝𐐩𐑌𐐻 𐐐𐐯𐑊𐐲𐑌𐐲 + 𐐝𐑊𐐬𐑂𐐨𐑌𐐨𐐲 + 𐐝𐑂𐐪𐑊𐐺𐐪𐑉𐐼 𐐰𐑌𐐼 𐐖𐐰𐑌 𐐣𐐴𐐲𐑌 + 𐐝𐑊𐐬𐑂𐐪𐐿𐐨𐐲 + 𐐝𐐨𐐯𐑉𐐲 𐐢𐐨𐐬𐑌 + 𐐝𐐪𐑌 𐐣𐐲𐑉𐐨𐑌𐐬 + 𐐝𐐯𐑌𐐲𐑀𐐱𐑊 + 𐐝𐐲𐑋𐐪𐑊𐐨𐐲 + 𐐝𐐭𐑉𐐲𐑌𐐪𐑋 + 𐐝𐐵 𐐓𐐬𐑋 𐐰𐑌𐐼 𐐑𐑉𐐮𐑌𐐽𐐮𐐹𐐩 + 𐐇𐑊 𐐝𐐰𐑊𐑂𐐲𐐼𐐱𐑉 + 𐐝𐐮𐑉𐐨𐐲 + 𐐝𐐶𐐪𐑆𐐨𐑊𐐰𐑌𐐼 + 𐐓𐐲𐑉𐐿𐑅 𐐰𐑌𐐼 𐐗𐐴𐐿𐐬𐑆 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐕𐐰𐐼 + 𐐙𐑉𐐯𐑌𐐽 𐐝𐐲𐑄𐐲𐑉𐑌 𐐓𐐯𐑉𐐲𐐻𐐱𐑉𐐨𐑆 + 𐐓𐐬𐑀𐐬 + 𐐓𐐴𐑊𐐰𐑌𐐼 + 𐐓𐐲𐐾𐐨𐐿𐐲𐑅𐐻𐐰𐑌 + 𐐓𐐬𐐿𐐯𐑊𐐵 + 𐐀𐑅𐐻 𐐓𐐨𐑋𐐱𐑉 + 𐐓𐐲𐑉𐐿𐑋𐐯𐑌𐐲𐑅𐐻𐐰𐑌 + 𐐓𐐪𐑍𐑀𐐲 + 𐐓𐐲𐑉𐐿𐐨 + 𐐓𐑉𐐮𐑌𐐮𐐼𐐰𐐼 𐐰𐑌𐐼 𐐓𐐲𐐺𐐩𐑀𐐬 + 𐐓𐐲𐑂𐐪𐑊𐐭 + 𐐓𐐴𐐶𐐪𐑌 + 𐐓𐐰𐑌𐑆𐐲𐑌𐐨𐐲 + 𐐏𐐭𐑀𐐰𐑌𐐼𐐲 + 𐐏𐐭𐑌𐐰𐐮𐐻𐐲𐐼 𐐝𐐻𐐩𐐻𐑅 𐐣𐐴𐑌𐐬𐑉 𐐍𐐻𐑊𐐴𐐨𐑍 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐏𐐭𐑌𐐴𐐻𐐲𐐼 𐐝𐐻𐐩𐐻𐑅 + 𐐏𐐳𐑉𐐲𐑀𐐶𐐴 + 𐐅𐑆𐐺𐐯𐐿𐐲𐑅𐐻𐐰𐑌 + 𐐚𐐰𐐼𐐲𐐿𐐲𐑌 + 𐐝𐐩𐑌𐐻 𐐚𐐮𐑌𐑅𐐲𐑌𐐻 𐐰𐑌𐐼 𐑄 𐐘𐑉𐐯𐑌𐐲𐐼𐐨𐑌𐑆 + 𐐒𐑉𐐮𐐼𐐮𐑇 𐐚𐐲𐑉𐐾𐐲𐑌 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐏.𐐝. 𐐚𐐲𐑉𐐾𐐲𐑌 𐐌𐑊𐐲𐑌𐐼𐑆 + 𐐚𐐨𐐯𐐻𐑌𐐪𐑋 + 𐐚𐐪𐑌𐐳𐐪𐐼𐐭 + 𐐎𐐪𐑊𐐮𐑅 𐐰𐑌𐐼 𐐙𐐭𐐻𐐭𐑌𐐲 + 𐐝𐐲𐑋𐐬𐐲 + 𐐏𐐯𐑋𐐲𐑌 + 𐐣𐐪𐐷𐐱𐐻 + 𐐝𐐵𐑃 𐐈𐑁𐑉𐐲𐐿𐐲 + 𐐞𐐰𐑋𐐺𐐨𐐲 + 𐐞𐐮𐑋𐐺𐐪𐐺𐐶𐐩 + 𐐊𐑌𐐬𐑌 𐐬𐑉 𐐆𐑌𐑂𐐰𐑊𐐮𐐼 𐐡𐐨𐐾𐐲𐑌 + + + 𐐓𐑉𐐲𐐼𐐮𐑇𐐲𐑌𐑊 𐐖𐐲𐑉𐑋𐐲𐑌 𐐱𐑉𐑃𐐪𐑀𐑉𐐲𐑁𐐨 + 𐐖𐐲𐑉𐑋𐐲𐑌 𐐱𐑉𐑃𐐪𐑀𐑉𐐲𐑁𐐨 𐐲𐑂 1996 + 𐐢𐐩𐐻 𐐣𐐮𐐼𐑊 𐐙𐑉𐐯𐑌𐐽 𐐻𐐭 1606 + 𐐊𐑉𐑊𐐨 𐐣𐐪𐐼𐐲𐑉𐑌 𐐙𐑉𐐯𐑌𐐽 + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐂𐑉𐑋𐐨𐑌𐐨𐐲𐑌 + 𐐎𐐯𐑅𐐻𐐲𐑉𐑌 𐐂𐑉𐑋𐐨𐑌𐐨𐐲𐑌 + 𐐏𐐭𐑌𐐲𐑁𐐴𐐼 𐐓𐐲𐑉𐐿𐐮𐐿 𐐢𐐰𐐻𐑌 𐐈𐑊𐑁𐐲𐐺𐐲𐐻 + 𐐆𐐙𐐈 𐐙𐐬𐑌𐐯𐐻𐐮𐐿𐑅 + 𐐣𐐪𐑌𐐲𐐻𐐪𐑌𐐮𐐿 + 𐐑𐐱𐑊𐐨𐐻𐐱𐑌𐐮𐐿 + 𐐗𐐲𐑋𐐹𐐷𐐭𐐻𐐯𐑉 + 𐐡𐐲𐑂𐐴𐑆𐐼 𐐉𐑉𐑃𐐪𐑀𐑉𐐲𐑁𐐨 + 𐐝𐐿𐐪𐐼𐐮𐑇 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐆𐑍𐑊𐐮𐑇 + + + 𐑋𐐯𐐻𐑉𐐮𐐿 + 𐐏𐐝 + + + + [𐐨 𐐩 𐐪 𐐫 𐐬 𐐭 𐐮 𐐯 𐐰 𐐱 𐐲 𐐳 𐐴 𐐵 𐐶 𐐷 𐐸 𐐹 𐐺 𐐻 𐐼 𐐽 𐐾 𐐿 𐑀 𐑁 𐑂 𐑃 𐑄 𐑅 𐑆 𐑇 𐑈 𐑉 𐑊 𐑋 𐑌 𐑍 𐑎 𐑏] + [] + [𐐀 𐐁 𐐂 𐐃 𐐄 𐐅 𐐆 𐐇 𐐈 𐐉 𐐊 𐐋 𐐌 𐐍 𐐎 𐐏 𐐐 𐐑 𐐒 𐐓 𐐔 𐐕 𐐖 𐐗 𐐘 𐐙 𐐚 𐐛 𐐜 𐐝 𐐞 𐐟 𐐠 𐐡 𐐢 𐐣 𐐤 𐐥 𐐦 𐐧] + + + + + + + + 𐐖𐐰𐑌 + 𐐙𐐯𐐺 + 𐐣𐐪𐑉 + 𐐁𐐹𐑉 + 𐐣𐐩 + 𐐖𐐭𐑌 + 𐐖𐐭𐑊 + 𐐂𐑀 + 𐐝𐐯𐐹 + 𐐉𐐿𐐻 + 𐐤𐐬𐑂 + 𐐔𐐨𐑅 + + + 𐐖 + 𐐙 + 𐐣 + 𐐁 + 𐐣 + 𐐖 + 𐐖 + 𐐂 + 𐐝 + 𐐉 + 𐐤 + 𐐔 + + + 𐐖𐐰𐑌𐐷𐐭𐐯𐑉𐐨 + 𐐙𐐯𐐺𐑉𐐭𐐯𐑉𐐨 + 𐐣𐐪𐑉𐐽 + 𐐁𐐹𐑉𐐮𐑊 + 𐐣𐐩 + 𐐖𐐭𐑌 + 𐐖𐐭𐑊𐐴 + 𐐂𐑀𐐲𐑅𐐻 + 𐐝𐐯𐐹𐐻𐐯𐑋𐐺𐐲𐑉 + 𐐉𐐿𐐻𐐬𐐺𐐲𐑉 + 𐐤𐐬𐑂𐐯𐑋𐐺𐐲𐑉 + 𐐔𐐨𐑅𐐯𐑋𐐺𐐲𐑉 + + + + + 𐐖𐐰𐑌 + 𐐙𐐯𐐺 + 𐐣𐐪𐑉 + 𐐁𐐹𐑉 + 𐐣𐐩 + 𐐖𐐭𐑌 + 𐐖𐐭𐑊 + 𐐂𐑀 + 𐐝𐐯𐐹 + 𐐉𐐿𐐻 + 𐐤𐐬𐑂 + 𐐔𐐨𐑅 + + + 𐐖 + 𐐙 + 𐐣 + 𐐁 + 𐐣 + 𐐖 + 𐐖 + 𐐂 + 𐐝 + 𐐉 + 𐐤 + 𐐔 + + + 𐐖𐐰𐑌𐐷𐐭𐐯𐑉𐐨 + 𐐙𐐯𐐺𐑉𐐭𐐯𐑉𐐨 + 𐐣𐐪𐑉𐐽 + 𐐁𐐹𐑉𐐮𐑊 + 𐐣𐐩 + 𐐖𐐭𐑌 + 𐐖𐐭𐑊𐐴 + 𐐂𐑀𐐲𐑅𐐻 + 𐐝𐐯𐐹𐐻𐐯𐑋𐐺𐐲𐑉 + 𐐉𐐿𐐻𐐬𐐺𐐲𐑉 + 𐐤𐐬𐑂𐐯𐑋𐐺𐐲𐑉 + 𐐔𐐨𐑅𐐯𐑋𐐺𐐲𐑉 + + + + + + + 𐐝𐐲𐑌 + 𐐣𐐲𐑌 + 𐐓𐐭𐑆 + 𐐎𐐯𐑌 + 𐐛𐐲𐑉 + 𐐙𐑉𐐴 + 𐐝𐐰𐐻 + + + 𐐝𐐲𐑌𐐼𐐩 + 𐐣𐐲𐑌𐐼𐐩 + 𐐓𐐭𐑆𐐼𐐩 + 𐐎𐐯𐑌𐑆𐐼𐐩 + 𐐛𐐲𐑉𐑆𐐼𐐩 + 𐐙𐑉𐐴𐐼𐐩 + 𐐝𐐰𐐻𐐲𐑉𐐼𐐩 + + + + + 𐐝 + 𐐣 + 𐐓 + 𐐎 + 𐐛 + 𐐙 + 𐐝 + + + + + + + 𐐗1 + 𐐗2 + 𐐗3 + 𐐗4 + + + 1𐑅𐐻 𐐿𐐶𐐪𐑉𐐻𐐲𐑉 + 2𐑌𐐼 𐐿𐐶𐐪𐑉𐐻𐐲𐑉 + 3𐑉𐐼 𐐿𐐶𐐪𐑉𐐻𐐲𐑉 + 4𐑉𐑃 𐐿𐐶𐐪𐑉𐐻𐐲𐑉 + + + + + + + 𐐈𐐣 + 𐐰.𐑋. + 𐐑𐐣 + 𐐹.𐑋. + + + + + + 𐐒𐐲𐑁𐐬𐑉 𐐗𐑉𐐴𐑅𐐻 + 𐐈𐑌𐐬 𐐔𐐱𐑋𐐮𐑌𐐨 + + + 𐐒𐐗 + 𐐈𐐔 + + + 𐐒 + 𐐈 + + + + + + + 𐐇𐑉𐐲 + + + 𐐏𐐨𐑉 + + + 𐐣𐐲𐑌𐑃 + + + 𐐎𐐨𐐿 + + + 𐐔𐐩 + 𐐜 𐐼𐐩 𐐺𐐲𐑁𐐬𐑉 𐐷𐐯𐑅𐐻𐐲𐑉𐐼𐐩 + 𐐏𐐯𐑅𐐻𐐲𐑉𐐼𐐩 + 𐐓𐐲𐐼𐐩 + 𐐓𐐲𐑋𐐱𐑉𐐬 + 𐐜 𐐼𐐩 𐐰𐑁𐐻𐐲𐑉 𐐻𐐲𐑋𐐱𐑉𐐬 + + + 𐐔𐐩 𐐲𐑂 𐑄 𐐎𐐨𐐿 + + + 𐐈𐐣/𐐑𐐣 + + + 𐐍𐑉 + + + 𐐣𐐮𐑌𐐲𐐻 + + + 𐐝𐐯𐐿𐐲𐑌𐐼 + + + 𐐞𐐬𐑌 + + + + 𐐘𐐣𐐓 {0} + 𐐘𐐣𐐓 + {0} 𐐓𐐴𐑋 + + 𐐊𐑌𐑌𐐬𐑌 + + + 𐐝𐐵𐑃 𐐑𐐬𐑊 + + + 𐐣𐐮𐐼𐐶𐐩 + + + 𐐖𐐪𐑌𐑅𐐻𐐲𐑌 + + + 𐐎𐐩𐐿 + + + 𐐈𐐼𐐰𐐿 + + + 𐐤𐐬𐑋 + + + 𐐐𐐪𐑌𐐲𐑊𐐭𐑊𐐭 + + + 𐐁𐑍𐐿𐐲𐑉𐐮𐐾 + + + 𐐏𐐰𐐿𐐭𐐻𐐰𐐻 + + + 𐐖𐐭𐑌𐐬 + + + 𐐢𐐱𐑅 𐐈𐑌𐐾𐐲𐑊𐑅 + + + 𐐒𐐱𐐮𐑆𐐨 + + + 𐐙𐐨𐑌𐐮𐐿𐑅 + + + 𐐟𐐮𐐹𐑉𐐱𐐿 + + + 𐐔𐐯𐑌𐑂𐐲𐑉 + + + 𐐤𐐭 𐐝𐐩𐑊𐐲𐑋, 𐐤𐐱𐑉𐑃 𐐔𐐲𐐿𐐬𐐼𐐲 + + + 𐐝𐐯𐑌𐐻𐐲𐑉, 𐐤𐐱𐑉𐑃 𐐔𐐲𐐿𐐬𐐼𐐲 + + + 𐐟𐐮𐐿𐐪𐑀𐐬 + + + 𐐣𐐲𐑌𐐪𐑋𐐲𐑌𐐨 + + + 𐐚𐐮𐑌𐑅𐐯𐑌𐑆, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐑𐐨𐐻𐐲𐑉𐑆𐐺𐐲𐑉𐑀, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐓𐐯𐑊 𐐝𐐮𐐼𐐨, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐤𐐪𐐿𐑅, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐎𐐮𐑌𐐲𐑋𐐰𐐿, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐣𐐲𐑉𐐯𐑍𐑀𐐬, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐆𐑌𐐼𐐨𐐲𐑌𐐰𐐹𐐬𐑊𐐲𐑅 + + + 𐐢𐐭𐐶𐐨𐑂𐐮𐑊 + + + 𐐚𐐯𐑂𐐩, 𐐆𐑌𐐼𐐨𐐰𐑌𐐲 + + + 𐐣𐐪𐑌𐐻𐐲𐑅𐐯𐑊𐐬, 𐐗𐐲𐑌𐐻𐐲𐐿𐐨 + + + 𐐔𐐲𐐻𐑉𐐱𐐮𐐻 + + + 𐐤𐐭 𐐏𐐱𐑉𐐿 + + + + 𐐊𐑊𐐰𐑅𐐿𐐲 𐐓𐐴𐑋 + 𐐊𐑊𐐰𐑅𐐿𐐲 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐊𐑊𐐰𐑅𐐿𐐲 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐝𐐯𐑌𐐻𐑉𐐲𐑊 𐐓𐐴𐑋 + 𐐝𐐯𐑌𐐻𐑉𐐲𐑊 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐝𐐯𐑌𐐻𐑉𐐲𐑊 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐓𐐴𐑋 + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐀𐑅𐐻𐐲𐑉𐑌 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐣𐐵𐑌𐐻𐐲𐑌 𐐓𐐴𐑋 + 𐐣𐐵𐑌𐐻𐐲𐑌 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐣𐐵𐑌𐐻𐐲𐑌 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐑𐐲𐑅𐐮𐑁𐐮𐐿 𐐓𐐴𐑋 + 𐐑𐐲𐑅𐐮𐑁𐐮𐐿 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐑𐐲𐑅𐐮𐑁𐐮𐐿 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐈𐐻𐑊𐐰𐑌𐐻𐐮𐐿 𐐓𐐴𐑋 + 𐐈𐐻𐑊𐐰𐑌𐐻𐐮𐐿 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐈𐐻𐑊𐐰𐑌𐐻𐐮𐐿 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐐𐐱𐑍 𐐗𐐱𐑍 𐐓𐐴𐑋 + 𐐐𐐱𐑍 𐐗𐐱𐑍 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐐𐐱𐑍 𐐗𐐱𐑍 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + 𐐤𐐭𐑁𐐲𐑌𐐼𐑊𐐲𐑌𐐼 𐐓𐐴𐑋 + 𐐤𐐭𐑁𐐲𐑌𐐼𐑊𐐲𐑌𐐼 𐐝𐐻𐐰𐑌𐐼𐐲𐑉𐐼 𐐓𐐴𐑋 + 𐐤𐐭𐑁𐐲𐑌𐐼𐑊𐐲𐑌𐐼 𐐔𐐩𐑊𐐴𐐻 𐐓𐐴𐑋 + + + + + + + + $ + + + + + + + {0} 𐐼𐐩 + {0} 𐐼𐐩𐑆 + + + {0} 𐐵𐑉 + {0} 𐐵𐑉𐑆 + + + {0} 𐑋𐐮𐑌𐐲𐐻 + {0} 𐑋𐐮𐑌𐐲𐐻𐑅 + + + {0} 𐑋𐐲𐑌𐑃𐑅 + {0} 𐑋𐐲𐑌𐑃 + + + {0} 𐑅𐐯𐐿𐐲𐑌𐐼 + {0} 𐑅𐐯𐐿𐐲𐑌𐐼𐑆 + + + {0} 𐐶𐐨𐐿 + {0} 𐐶𐐨𐐿𐑅 + + + {0} 𐐷𐐮𐑉 + {0} 𐐷𐐮𐑉𐑆 + + + + + + 𐐷𐐯𐑅:𐐷 + 𐑌𐐬:𐑌 + + + diff --git a/library/Zend/Locale/Data/en_Dsrt_US.xml b/library/Zend/Locale/Data/en_Dsrt_US.xml new file mode 100755 index 000000000..4fc23e45b --- /dev/null +++ b/library/Zend/Locale/Data/en_Dsrt_US.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + United Kingdom + UK + South Georgia and the South Sandwich Islands + Heard Island and McDonald Islands + U.S. Minor Outlying Islands + United States + US + Saint Vincent and the Grenadines + + + Case-Sensitive Sorting + Normalised Sorting + + + Full-Width Digits + Sort Without Normalisation + Sort Unicode Normalised + + + + {0}… + …{0} + {0}… {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + EEEE, d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + dd/MM/yy + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E d + d MMM U + E, d MMM U + LL + dd/MM + E dd/MM + d MMM + E d MMM + d MMMM + dd/MM/y + MM/y + dd/MM/y + E, dd/MM/y + d MMM U + E, d MMM U + MMMM U + + + + d–d + + + h–h a + + + HH–HH + + + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E dd/MM – E dd/MM + E dd/MM – E dd/MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + U-U + + + MM/y – MM/y + MM/y – MM/y + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + + + MMM–MMM U + + + d–d MMM U + d MMM – d MMM U + d MMM U – d MMM U + + + E, d – E, d MMM U + E, d MMM – E, d MMM U + E, d MMM U – E, d MMM U + + + MMMM–MMMM U + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E d + d MMM y G + E, d MMM y G + LL + dd/MM + E dd/MM + d MMM + E d MMM + d MMMM + MM/y GGGGG + dd/MM/y GGGGG + E, dd/MM/y GGGGG + d MMM y G + E, d MMM y G + MMMM y G + + + + d–d + + + h–h a + + + HH–HH + + + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E dd/MM – E dd/MM + E dd/MM – E dd/MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + y-y G + + + MM/y – MM/y GGGGG + MM/y – MM/y GGGGG + + + dd/MM/y – dd/MM/y GGGGG + dd/MM/y – dd/MM/y GGGGG + dd/MM/y – dd/MM/y GGGGG + + + E, dd/MM/y – E, dd/MM/y GGGGG + E, dd/MM/y – E, dd/MM/y GGGGG + E, dd/MM/y – E, dd/MM/y GGGGG + + + MMM–MMM y G + + + d–d MMM y G + d MMM – d MMM y G + d MMM y – d MMM y G + + + E, d – E, d MMM y G + E, d MMM – E, d MMM y G + E, d MMM y – E, d MMM y G + + + MMMM–MMMM y G + + + + + + + + + am + pm + + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E d + d MMM y G + E, d MMM y G + LL + dd/MM + E dd/MM + dd/MM + d MMM + E d MMM + d MMMM + MM/y + dd/MM/y + E, dd/MM/y + d MMM y + E, d MMM y + MMMM y + + + + d–d + + + h–h a + + + HH–HH + + + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E dd/MM – E dd/MM + E dd/MM – E dd/MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + y-y + + + MM/y – MM/y + MM/y – MM/y + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + + + MMM–MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + MMMM–MMMM y + + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + SAKA + + + + + + + + Muh. + Saf. + Rab. I + Rab. II + Jum. I + Jum. II + Raj. + Sha. + Ram. + Shaw. + Dhuʻl-Q. + Dhuʻl-H. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rajab + Shaʻban + Ramadan + Shawwal + Dhuʻl-Qiʻdah + Dhuʻl-Hijjah + + + + + Muh. + Saf. + Rab. I + Rab. II + Jum. I + Jum. II + Raj. + Sha. + Ram. + Shaw. + Dhuʻl-Q. + Dhuʻl-H. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rajab + Shaʻban + Ramadan + Shawwal + Dhuʻl-Qiʻdah + Dhuʻl-Hijjah + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + + am/pm + + + + GMT + + Atikokan + + + St. John’s + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + BST + + + + Nuuk + + + Ittoqqortoormiit + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Kathmandu + + + St. Helena + + + Lower Prince's Quarter + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + + Arabian Time + Arabian Standard Time + Arabian Summer Time + + + + + China Time + China Standard Time + China Summer Time + + + + + CET + CET + CEST + + + + + EET + EET + EEST + + + + + WET + WET + WEST + + + + + Iran Time + Iran Standard Time + Iran Summer Time + + + + + Israel Time + Israel Standard Time + Israel Summer Time + + + + + Japan Time + Japan Standard Time + Japan Summer Time + + + + + Korean Time + Korean Standard Time + Korean Summer Time + + + + + Taipei Time + Taipei Standard Time + Taipei Summer Time + + + + + + + + AU$ + + + R$ + + + Belarusian New Rouble (1994–1999) + Belarusian new rouble (1994–1999) + Belarusian new roubles (1994–1999) + + + Belarusian Rouble + Belarusian rouble + Belarusian roubles + + + CA$ + + + CN¥ + + + + + + British Pound + British pound + British pounds + £ + + + HK$ + + + Israeli Shekel (1980–1985) + Israeli shekel (1980–1985) + Israeli shekels (1980–1985) + + + Israeli New Shekel + Israeli new shekel + Israeli new shekels + + + + + + + + + + Latvian Rouble + Latvian rouble + Latvian roubles + + + Malagasy Ariary + Malagasy ariary + Malagasy ariarys + + + Malawian Kwacha + Malawian kwacha + Malawian kwachas + + + MX$ + + + NZ$ + + + Russian Rouble + Russian rouble + Russian roubles + + + Russian Rouble (1991–1998) + Russian rouble (1991–1998) + Russian roubles (1991–1998) + + + Seychelles Rupee + Seychelles rupee + Seychelles rupees + + + ฿ + + + Tajikistani Rouble + Tajikistani rouble + Tajikistani roubles + + + NT$ + + + $ + + + Uzbekistani Som + Uzbekistani som + Uzbekistani som + + + + + + Central African CFA Franc + Central African CFA franc + Central African CFA francs + FCFA + + + EC$ + + + West African CFA Franc + West African CFA franc + West African CFA francs + CFA + + + CFPF + + + Unknown Currency + (unknown currency) + (unknown currency) + + + + {0}–{1} + + + + + + {0} minute + {0} minutes + + + {0} second + {0} seconds + + + {0} square kilometre + {0} square kilometres + + + {0} square metre + {0} square metres + + + {0} centimetre + {0} centimetres + + + {0} kilometre + {0} kilometres + + + {0} metre + {0} metres + + + {0} millimetre + {0} millimetres + + + {0} picometre + {0} picometres + + + {0} kilometre per hour + {0} kilometres per hour + + + {0} metre per second + {0} metres per second + + + {0} cubic kilometre + {0} cubic kilometres + + + {0} litre + {0} litres + + + + + {0} min + {0} min + + + {0} sec + {0} secs + + + + + {0}G + {0}G + + + {0} ms + {0} ms + + + {0}lb + {0}lb + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} and {1} + {0} and {1} + + + {0}, {1} + {0}, {1} + {0} and {1} + {0} and {1} + + + + diff --git a/library/Zend/Locale/Data/en_GD.xml b/library/Zend/Locale/Data/en_GD.xml new file mode 100755 index 000000000..54a8a8942 --- /dev/null +++ b/library/Zend/Locale/Data/en_GD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_GG.xml b/library/Zend/Locale/Data/en_GG.xml new file mode 100755 index 000000000..02478f7b2 --- /dev/null +++ b/library/Zend/Locale/Data/en_GG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_GH.xml b/library/Zend/Locale/Data/en_GH.xml new file mode 100755 index 000000000..58205d5ec --- /dev/null +++ b/library/Zend/Locale/Data/en_GH.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + GH₵ + + + + diff --git a/library/Zend/Locale/Data/en_GI.xml b/library/Zend/Locale/Data/en_GI.xml new file mode 100755 index 000000000..ac34dce44 --- /dev/null +++ b/library/Zend/Locale/Data/en_GI.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + GB£ + + + £ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/en_GM.xml b/library/Zend/Locale/Data/en_GM.xml new file mode 100755 index 000000000..dff9a0ea0 --- /dev/null +++ b/library/Zend/Locale/Data/en_GM.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + D + + + + diff --git a/library/Zend/Locale/Data/en_GU.xml b/library/Zend/Locale/Data/en_GU.xml new file mode 100755 index 000000000..31f273863 --- /dev/null +++ b/library/Zend/Locale/Data/en_GU.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + ChST + + + + + diff --git a/library/Zend/Locale/Data/en_GY.xml b/library/Zend/Locale/Data/en_GY.xml new file mode 100755 index 000000000..2e3c237e9 --- /dev/null +++ b/library/Zend/Locale/Data/en_GY.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_HK.xml b/library/Zend/Locale/Data/en_HK.xml new file mode 100755 index 000000000..c1d5efe10 --- /dev/null +++ b/library/Zend/Locale/Data/en_HK.xml @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + d/M/yy GGGGG + + + + + + E, d MMM + E, d MMMM + d/M/y GGGGG + E, d/M/y GGGGG + d MMM, y G + E, d MMM, y G + + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + + + d–d MMM, y G + d MMM – d MMM, y G + d MMM, y – d MMM, y G + + + E, d MMM – E, d MMM, y G + E, d MMM – E, d MMM, y G + E, d MMM, y – E, d MMM, y G + + + + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + E, d MMM + E, d MMMM + d/M/y + d MMM, y + E, d MMM, y + + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + d–d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + + + + + + Bunchū + Genchū + + + + + + + Last Year + This Year + Next Year + + + Next Week + + + + + + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + HKT + HKT + HKST + + + + + + + + $ + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/en_IE.xml b/library/Zend/Locale/Data/en_IE.xml new file mode 100755 index 000000000..0323ee4fb --- /dev/null +++ b/library/Zend/Locale/Data/en_IE.xml @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + + d/M + E, d/M + d/M/y G + E, d/M/y G + E d MMM y G + + + {0} - {1} + + d-d + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + + + + + + + a.m. + p.m. + + + + + + + EEEE d MMMM y + + + + + + d/M + E, d/M + d/M/y + E, d/M/y + E d MMM y + + + {0} - {1} + + d-d + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + + + + + + + IST + + + + + + diff --git a/library/Zend/Locale/Data/en_IM.xml b/library/Zend/Locale/Data/en_IM.xml new file mode 100755 index 000000000..b9b3d4bf9 --- /dev/null +++ b/library/Zend/Locale/Data/en_IM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_IN.xml b/library/Zend/Locale/Data/en_IN.xml new file mode 100755 index 000000000..28c68a598 --- /dev/null +++ b/library/Zend/Locale/Data/en_IN.xml @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/y GGGGG + + + + + + d/M/y G + E d/M/y G + E d MMM, y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d/M/y + E d/M/y + E d MMM, y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + + + + + + + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + IST + + + + + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/en_IO.xml b/library/Zend/Locale/Data/en_IO.xml new file mode 100755 index 000000000..f3bc643ef --- /dev/null +++ b/library/Zend/Locale/Data/en_IO.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_JE.xml b/library/Zend/Locale/Data/en_JE.xml new file mode 100755 index 000000000..724cd836b --- /dev/null +++ b/library/Zend/Locale/Data/en_JE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_JM.xml b/library/Zend/Locale/Data/en_JM.xml new file mode 100755 index 000000000..a3dc9bc79 --- /dev/null +++ b/library/Zend/Locale/Data/en_JM.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + d/M/y GGGGG + + + + + + d/M + E, d/M + E, d/M/y G + + + + d/M - d/M + d/M - d/M + + + E, d/M - E, d/M + E, d/M - E, d/M + + + d/M/y - d/M/y G + d/M/y - d/M/y G + d/M/y - d/M/y G + + + E, d/M/y - E, d/M/y G + E, d/M/y - E, d/M/y G + E, d/M/y - E, d/M/y G + + + + + + + + + d/M/yy + + + + + + d/M + E, d/M + E, d/M/y + + + + d/M - d/M + d/M - d/M + + + E, d/M - E, d/M + E, d/M - E, d/M + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + + + + + + + + + + $ + + + + + diff --git a/library/Zend/Locale/Data/en_KE.xml b/library/Zend/Locale/Data/en_KE.xml new file mode 100755 index 000000000..03f3841a3 --- /dev/null +++ b/library/Zend/Locale/Data/en_KE.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + Ksh + + + + diff --git a/library/Zend/Locale/Data/en_KI.xml b/library/Zend/Locale/Data/en_KI.xml new file mode 100755 index 000000000..b8667c45b --- /dev/null +++ b/library/Zend/Locale/Data/en_KI.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_KN.xml b/library/Zend/Locale/Data/en_KN.xml new file mode 100755 index 000000000..0f15d786f --- /dev/null +++ b/library/Zend/Locale/Data/en_KN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_KY.xml b/library/Zend/Locale/Data/en_KY.xml new file mode 100755 index 000000000..ab80282e6 --- /dev/null +++ b/library/Zend/Locale/Data/en_KY.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + $ + + + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + diff --git a/library/Zend/Locale/Data/en_LC.xml b/library/Zend/Locale/Data/en_LC.xml new file mode 100755 index 000000000..0d731a608 --- /dev/null +++ b/library/Zend/Locale/Data/en_LC.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_LR.xml b/library/Zend/Locale/Data/en_LR.xml new file mode 100755 index 000000000..3b2631ed9 --- /dev/null +++ b/library/Zend/Locale/Data/en_LR.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_LS.xml b/library/Zend/Locale/Data/en_LS.xml new file mode 100755 index 000000000..19f4aa33d --- /dev/null +++ b/library/Zend/Locale/Data/en_LS.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + R + + + + diff --git a/library/Zend/Locale/Data/en_MG.xml b/library/Zend/Locale/Data/en_MG.xml new file mode 100755 index 000000000..9258421bb --- /dev/null +++ b/library/Zend/Locale/Data/en_MG.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + Ar + + + + diff --git a/library/Zend/Locale/Data/en_MH.xml b/library/Zend/Locale/Data/en_MH.xml new file mode 100755 index 000000000..f1a226f2b --- /dev/null +++ b/library/Zend/Locale/Data/en_MH.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + diff --git a/library/Zend/Locale/Data/en_MO.xml b/library/Zend/Locale/Data/en_MO.xml new file mode 100755 index 000000000..6de60ef68 --- /dev/null +++ b/library/Zend/Locale/Data/en_MO.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + HKT + HKT + HKST + + + + + MST + MST + MDT + + + + + + + + MOP$ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/en_MP.xml b/library/Zend/Locale/Data/en_MP.xml new file mode 100755 index 000000000..17f7b8161 --- /dev/null +++ b/library/Zend/Locale/Data/en_MP.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + diff --git a/library/Zend/Locale/Data/en_MS.xml b/library/Zend/Locale/Data/en_MS.xml new file mode 100755 index 000000000..bcabc19c9 --- /dev/null +++ b/library/Zend/Locale/Data/en_MS.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_MT.xml b/library/Zend/Locale/Data/en_MT.xml new file mode 100755 index 000000000..61374529b --- /dev/null +++ b/library/Zend/Locale/Data/en_MT.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + dd MMMM y G + + + + + dd MMM y G + + + + + dd/MM/y GGGGG + + + + + + dd MMM + E, d MMM + dd MMM y G + E, dd MMM y G + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E, d - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + + + + + + + EEEE, d MMMM y + + + + + dd MMMM y + + + + + dd MMM y + + + + + dd/MM/y + + + + + + dd MMM + E, d MMM + dd MMM y + E, dd MMM y + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + + + GB£ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/en_MU.xml b/library/Zend/Locale/Data/en_MU.xml new file mode 100755 index 000000000..bc25711c6 --- /dev/null +++ b/library/Zend/Locale/Data/en_MU.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + Rs + + + + diff --git a/library/Zend/Locale/Data/en_MW.xml b/library/Zend/Locale/Data/en_MW.xml new file mode 100755 index 000000000..8c5ea76ac --- /dev/null +++ b/library/Zend/Locale/Data/en_MW.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + MK + + + + diff --git a/library/Zend/Locale/Data/en_NA.xml b/library/Zend/Locale/Data/en_NA.xml new file mode 100755 index 000000000..4cccd52af --- /dev/null +++ b/library/Zend/Locale/Data/en_NA.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + $ + + + + + diff --git a/library/Zend/Locale/Data/en_NF.xml b/library/Zend/Locale/Data/en_NF.xml new file mode 100755 index 000000000..1e81d5a77 --- /dev/null +++ b/library/Zend/Locale/Data/en_NF.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_NG.xml b/library/Zend/Locale/Data/en_NG.xml new file mode 100755 index 000000000..711957352 --- /dev/null +++ b/library/Zend/Locale/Data/en_NG.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_NR.xml b/library/Zend/Locale/Data/en_NR.xml new file mode 100755 index 000000000..4c837cb41 --- /dev/null +++ b/library/Zend/Locale/Data/en_NR.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_NU.xml b/library/Zend/Locale/Data/en_NU.xml new file mode 100755 index 000000000..797bd99a2 --- /dev/null +++ b/library/Zend/Locale/Data/en_NU.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_NZ.xml b/library/Zend/Locale/Data/en_NZ.xml new file mode 100755 index 000000000..7ee29edf5 --- /dev/null +++ b/library/Zend/Locale/Data/en_NZ.xml @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d/MM/y G + + + + + d/MM/y GGGGG + + + + + + d/M + E, d MMM + d/MM/y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E, d/MM - E, d/MM + E, d/MM - E, d/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + d/MM/y - d/MM/y G + d/MM/y - d/MM/y G + d/MM/y - d/MM/y G + + + E, d/MM/y - E, d/MM/y G + E, d/MM/y - E, d/MM/y G + E, d/MM/y - E, d/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d/MM/y + + + + + d/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d/M + E, d MMM + d/MM/y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E, d/MM - E, d/MM + E, d/MM - E, d/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E, d/MM/y - E, d/MM/y + E, d/MM/y - E, d/MM/y + E, d/MM/y - E, d/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + + ∅∅∅ + + + + + ACT + ACST + ACDT + + + + + ACWT + ACWST + ACWDT + + + + + AET + AEST + AEDT + + + + + AWT + AWST + AWDT + + + + + CHAT + CHAST + CHADT + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + LHT + LHST + LHDT + + + + + NZT + NZST + NZDT + + + + + + + + $ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/en_PG.xml b/library/Zend/Locale/Data/en_PG.xml new file mode 100755 index 000000000..f160ee163 --- /dev/null +++ b/library/Zend/Locale/Data/en_PG.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + K + + + + diff --git a/library/Zend/Locale/Data/en_PH.xml b/library/Zend/Locale/Data/en_PH.xml new file mode 100755 index 000000000..4acca627d --- /dev/null +++ b/library/Zend/Locale/Data/en_PH.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_PK.xml b/library/Zend/Locale/Data/en_PK.xml new file mode 100755 index 000000000..ae7729ec6 --- /dev/null +++ b/library/Zend/Locale/Data/en_PK.xml @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/y GGGGG + + + + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + M/d - M/d + M/d - M/d + + + E, M/d - E, M/d + E, M/d - E, M/d + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + E, MMM d - E, MMM d + E, MMM d - E, MMM d + + + M/y - M/y G + M/y - M/y G + + + M/d/y - M/d/y G + M/d/y - M/d/y G + M/d/y - M/d/y G + + + E, M/d/y - E, M/d/y G + E, M/d/y - E, M/d/y G + E, M/d/y - E, M/d/y G + + + MMM-MMM y G + MMM y - MMM y G + + + MMM d-d, y G + MMM d - MMM d, y G + MMM d, y - MMM d, y G + + + E, MMM d - E, MMM d, y G + E, MMM d - E, MMM d, y G + E, MMM d, y - E, MMM d, y G + + + + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + dd-MMM-y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + M/d - M/d + M/d - M/d + + + E, M/d - E, M/d + E, M/d - E, M/d + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + E, MMM d - E, MMM d + E, MMM d - E, MMM d + + + M/y - M/y + M/y - M/y + + + M/d/y - M/d/y + M/d/y - M/d/y + M/d/y - M/d/y + + + E, M/d/y - E, M/d/y + E, M/d/y - E, M/d/y + E, M/d/y - E, M/d/y + + + MMM-MMM y + MMM y - MMM y + + + MMM d-d, y + MMM d - MMM d, y + MMM d, y - MMM d, y + + + E, MMM d - E, MMM d, y + E, MMM d - E, MMM d, y + E, MMM d, y - E, MMM d, y + + + + + + + + + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + Rs + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/en_PN.xml b/library/Zend/Locale/Data/en_PN.xml new file mode 100755 index 000000000..a7f7dffeb --- /dev/null +++ b/library/Zend/Locale/Data/en_PN.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_PR.xml b/library/Zend/Locale/Data/en_PR.xml new file mode 100755 index 000000000..cae9acc8b --- /dev/null +++ b/library/Zend/Locale/Data/en_PR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_PW.xml b/library/Zend/Locale/Data/en_PW.xml new file mode 100755 index 000000000..233c65a7c --- /dev/null +++ b/library/Zend/Locale/Data/en_PW.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + diff --git a/library/Zend/Locale/Data/en_RW.xml b/library/Zend/Locale/Data/en_RW.xml new file mode 100755 index 000000000..a3659c718 --- /dev/null +++ b/library/Zend/Locale/Data/en_RW.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + RF + + + + diff --git a/library/Zend/Locale/Data/en_SB.xml b/library/Zend/Locale/Data/en_SB.xml new file mode 100755 index 000000000..fc6bb7b5c --- /dev/null +++ b/library/Zend/Locale/Data/en_SB.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_SC.xml b/library/Zend/Locale/Data/en_SC.xml new file mode 100755 index 000000000..55ee62ac6 --- /dev/null +++ b/library/Zend/Locale/Data/en_SC.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + SR + + + + diff --git a/library/Zend/Locale/Data/en_SD.xml b/library/Zend/Locale/Data/en_SD.xml new file mode 100755 index 000000000..e17bfee72 --- /dev/null +++ b/library/Zend/Locale/Data/en_SD.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + diff --git a/library/Zend/Locale/Data/en_SG.xml b/library/Zend/Locale/Data/en_SG.xml new file mode 100755 index 000000000..3fde7cdc7 --- /dev/null +++ b/library/Zend/Locale/Data/en_SG.xml @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/yy GGGGG + + + + + + E, d MMM + E, d/M/y GGGGG + E, d MMM y G + + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + d-d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + + + d-d MMM y G + d MMM – d MMM y G + d MMM y – d MMM y G + + + E, d MMM – E, d MMM y G + E, d MMM – E, d MMM y G + E, d MMM y – E, d MMM y G + + + + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + E, d MMM + + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + d-d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + d-d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + + + + + + + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + MYT + + + + + SGT + + + + + + + + $ + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/en_SH.xml b/library/Zend/Locale/Data/en_SH.xml new file mode 100755 index 000000000..4267c8699 --- /dev/null +++ b/library/Zend/Locale/Data/en_SH.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + GB£ + + + £ + + + + diff --git a/library/Zend/Locale/Data/en_SL.xml b/library/Zend/Locale/Data/en_SL.xml new file mode 100755 index 000000000..84b60d0a1 --- /dev/null +++ b/library/Zend/Locale/Data/en_SL.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + Le + + + + diff --git a/library/Zend/Locale/Data/en_SS.xml b/library/Zend/Locale/Data/en_SS.xml new file mode 100755 index 000000000..0e9882fc1 --- /dev/null +++ b/library/Zend/Locale/Data/en_SS.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + GB£ + + + £ + + + + diff --git a/library/Zend/Locale/Data/en_SX.xml b/library/Zend/Locale/Data/en_SX.xml new file mode 100755 index 000000000..7f6543484 --- /dev/null +++ b/library/Zend/Locale/Data/en_SX.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + NAf. + + + + diff --git a/library/Zend/Locale/Data/en_SZ.xml b/library/Zend/Locale/Data/en_SZ.xml new file mode 100755 index 000000000..6fee3ca5a --- /dev/null +++ b/library/Zend/Locale/Data/en_SZ.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + E + + + + diff --git a/library/Zend/Locale/Data/en_TC.xml b/library/Zend/Locale/Data/en_TC.xml new file mode 100755 index 000000000..dc2a6c30c --- /dev/null +++ b/library/Zend/Locale/Data/en_TC.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_TK.xml b/library/Zend/Locale/Data/en_TK.xml new file mode 100755 index 000000000..424d38991 --- /dev/null +++ b/library/Zend/Locale/Data/en_TK.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_TO.xml b/library/Zend/Locale/Data/en_TO.xml new file mode 100755 index 000000000..91fd15827 --- /dev/null +++ b/library/Zend/Locale/Data/en_TO.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + T$ + + + + diff --git a/library/Zend/Locale/Data/en_TT.xml b/library/Zend/Locale/Data/en_TT.xml new file mode 100755 index 000000000..339f58480 --- /dev/null +++ b/library/Zend/Locale/Data/en_TT.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + $ + + + + + diff --git a/library/Zend/Locale/Data/en_TV.xml b/library/Zend/Locale/Data/en_TV.xml new file mode 100755 index 000000000..87371dce4 --- /dev/null +++ b/library/Zend/Locale/Data/en_TV.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/en_TZ.xml b/library/Zend/Locale/Data/en_TZ.xml new file mode 100755 index 000000000..cb29cae75 --- /dev/null +++ b/library/Zend/Locale/Data/en_TZ.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + TSh + + + + diff --git a/library/Zend/Locale/Data/en_UG.xml b/library/Zend/Locale/Data/en_UG.xml new file mode 100755 index 000000000..12d9a44d0 --- /dev/null +++ b/library/Zend/Locale/Data/en_UG.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + USh + + + + diff --git a/library/Zend/Locale/Data/en_UM.xml b/library/Zend/Locale/Data/en_UM.xml new file mode 100755 index 000000000..f0ce5c8f7 --- /dev/null +++ b/library/Zend/Locale/Data/en_UM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_US.xml b/library/Zend/Locale/Data/en_US.xml new file mode 100755 index 000000000..229161171 --- /dev/null +++ b/library/Zend/Locale/Data/en_US.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_US_POSIX.xml b/library/Zend/Locale/Data/en_US_POSIX.xml new file mode 100755 index 000000000..3f4dff24a --- /dev/null +++ b/library/Zend/Locale/Data/en_US_POSIX.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + 0/00 + INF + + + + + #0.###### + + + + + + + 0.000000E+000 + + + + + + + #0% + + + + + + + ¤ #0.00 + + + + + + diff --git a/library/Zend/Locale/Data/en_VC.xml b/library/Zend/Locale/Data/en_VC.xml new file mode 100755 index 000000000..0afa68f9b --- /dev/null +++ b/library/Zend/Locale/Data/en_VC.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_VG.xml b/library/Zend/Locale/Data/en_VG.xml new file mode 100755 index 000000000..75450f00f --- /dev/null +++ b/library/Zend/Locale/Data/en_VG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_VI.xml b/library/Zend/Locale/Data/en_VI.xml new file mode 100755 index 000000000..57e1f172d --- /dev/null +++ b/library/Zend/Locale/Data/en_VI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/en_VU.xml b/library/Zend/Locale/Data/en_VU.xml new file mode 100755 index 000000000..d9ed81259 --- /dev/null +++ b/library/Zend/Locale/Data/en_VU.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + VT + + + + diff --git a/library/Zend/Locale/Data/en_WS.xml b/library/Zend/Locale/Data/en_WS.xml new file mode 100755 index 000000000..a7cb3cbdc --- /dev/null +++ b/library/Zend/Locale/Data/en_WS.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + WS$ + + + + diff --git a/library/Zend/Locale/Data/en_ZA.xml b/library/Zend/Locale/Data/en_ZA.xml new file mode 100755 index 000000000..b16f987b2 --- /dev/null +++ b/library/Zend/Locale/Data/en_ZA.xml @@ -0,0 +1,282 @@ + + + + + + + + + + + + [á à ă â å ä ā æ ç ḓ é è ĕ ê ë ē í ì ĭ î ï ī ḽ ñ ṅ ṋ ó ò ŏ ô ö ø ō œ š ṱ ú ù ŭ û ü ū ÿ] + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + dd MMM y G + + + + + GGGGG y/MM/dd + + + + + + MM/dd + E MM/dd + dd MMM + E dd MMM + G y/MM/dd + E, G y/MM/dd + dd MMM y G + E, dd MMM y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + MM/dd - MM/dd + MM/dd - MM/dd + + + E MM/dd - E MM/dd + E MM/dd - E MM/dd + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + G y-y + + + G y/MM - y/MM + G y/MM - y/MM + + + G y/MM/dd - y/MM/dd + G y/MM/dd - y/MM/dd + G y/MM/dd - y/MM/dd + + + E y/MM/dd - E y/MM/dd + E y/MM/dd - E y/MM/dd + E y/MM/dd - E y/MM/dd + + + MMM-MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E dd - E dd MMM y G + E dd MMM - E dd MMM y G + E dd MMM y - E dd MMM y G + + + + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + dd MMM y + + + + + y/MM/dd + + + + + + MM/dd + E MM/dd + dd MMM + E dd MMM + y/MM/dd + E, y/MM/dd + dd MMM y + E, dd MMM y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + MM/dd - MM/dd + MM/dd - MM/dd + + + E MM/dd - E MM/dd + E MM/dd - E MM/dd + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y + + + y/MM - y/MM + y/MM - y/MM + + + y/MM/dd - y/MM/dd + y/MM/dd - y/MM/dd + y/MM/dd - y/MM/dd + + + E y/MM/dd - E y/MM/dd + E y/MM/dd - E y/MM/dd + E y/MM/dd - E y/MM/dd + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E dd - E dd MMM y + E dd MMM - E dd MMM y + E dd MMM y - E dd MMM y + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + , +   + + + + R + + + + diff --git a/library/Zend/Locale/Data/en_ZM.xml b/library/Zend/Locale/Data/en_ZM.xml new file mode 100755 index 000000000..889965a63 --- /dev/null +++ b/library/Zend/Locale/Data/en_ZM.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + + + K + + + + diff --git a/library/Zend/Locale/Data/en_ZW.xml b/library/Zend/Locale/Data/en_ZW.xml new file mode 100755 index 000000000..f67f90aa3 --- /dev/null +++ b/library/Zend/Locale/Data/en_ZW.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + dd MMM,y G + + + + + d/M/y GGGGG + + + + + + d/M + E d/M + dd MMM + E dd MMM + d/M/y G + E, d/M/y G + dd MMM, y G + E, dd MMM, y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + d/M - d/M + d/M - d/M + + + E d/M - E d/M + E d/M - E d/M + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y G + + + M/y - M/y G + M/y - M/y G + + + d/M/y - d/M/y G + d/M/y - d/M/y G + d/M/y - d/M/y G + + + E d/M/y - E d/M/y G + E d/M/y - E d/M/y G + E d/M/y - E d/M/y G + + + MMM-MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E dd - E dd MMM y G + E dd MMM - E dd MMM y G + E dd MMM y - E dd MMM y G + + + + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + dd MMM,y + + + + + d/M/y + + + + + + d/M + E d/M + dd MMM + E dd MMM + d/M/y + E, d/M/y + dd MMM, y + E, dd MMM, y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + d/M - d/M + d/M - d/M + + + E d/M - E d/M + E d/M - E d/M + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y + + + M/y - M/y + M/y - M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E d/M/y - E d/M/y + E d/M/y - E d/M/y + E d/M/y - E d/M/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E dd - E dd MMM y + E dd MMM - E dd MMM y + E dd MMM y - E dd MMM y + + + + + + + + + CAT + + + + + EAT + + + + + SAST + + + + + WAT + WAT + WAST + + + + + + diff --git a/library/Zend/Locale/Data/eo.xml b/library/Zend/Locale/Data/eo.xml new file mode 100755 index 000000000..398868ef6 --- /dev/null +++ b/library/Zend/Locale/Data/eo.xml @@ -0,0 +1,796 @@ + + + + + + + + + + + + afara + abĥaza + afrikansa + amhara + araba + asama + ajmara + azerbajĝana + baŝkira + belorusa + bulgara + bislamo + bengala + tibeta + bretona + bosnia + kataluna + korsika + ĉeĥa + kimra + dana + germana + mahla + dzonko + ibibioefika + greka + angla + esperanto + hispana + estona + eŭska + persa + finna + filipina + fiĝia + feroa + franca + frisa + irlanda + gaela + galega + gvarania + guĝarata + haŭsa + havaja + hebrea + hinda + kroata + haitia kreola + hungara + armena + interlingvao + indonezia + okcidentalo + eskima + islanda + itala + inuita + japana + java + kartvela + kazaĥa + gronlanda + kmera + kanara + korea + kaŝmira + kurda + kirgiza + latino + luksemburga + lingala + laŭa + litova + latva + malagasa + maoria + makedona + malajalama + mongola + marata + malaja + malta + pluraj lingvoj + birma + naura + dannorvega + nepala + nederlanda + novnorvega + norvega + okcitana + oroma + orijo + panĝaba + pola + paŝtoa + portugala + brazilportugala + eŭropportugala + keĉua + romanĉa + burunda + rumana + rusa + ruanda + sanskrito + sinda + sangoa + serbo-Kroata + sinhala + slovaka + slovena + samoa + ŝona + somala + albana + serba + svazia + sota + sunda + sveda + svahila + tamila + telugua + taĝika + taja + tigraja + turkmena + tagaloga + klingona + cvana + tongaa + turka + conga + tatara + akana + ujgura + ukraina + nekonata lingvo + urduo + uzbeka + vjetnama + volapuko + volofa + ksosa + jida + joruba + ĝuanga + ĉina + ĉina simpligita + ĉina tradicia + zulua + nelingvaĵo + + + Andoro + Unuiĝintaj Arabaj Emirlandos + Afganujo + Antigvo-Barbudo + Angvilo + Albanujo + Armenujo + Nederlandaj Antiloj + Angolo + Antarkto + Argentino + Aŭstrujo + Aŭstralio + Arubo + Azerbajĝano + Bosnio-Hercegovino + Barbado + Bangladeŝo + Belgujo + Burkino + Bulgarujo + Barejno + Burundo + Benino + Bermudoj + Brunejo + Bolivio + Brazilo + Bahamoj + Butano + Bocvano + Belorusujo + Belizo + Kanado + Centr-Afrika Respubliko + Kongolo + Svisujo + Ebur-Bordo + Kukinsuloj + Ĉilio + Kameruno + Ĉinujo + Kolombio + Kostariko + Kubo + Kabo-Verdo + Kipro + Ĉeĥujo + Germanujo + Ĝibutio + Danujo + Dominiko + Domingo + Alĝerio + Ekvadoro + Estonujo + Egipto + Okcidenta Saharo + Eritreo + Hispanujo + Etiopujo + Finnlando + Fiĝoj + Mikronezio + Ferooj + Francujo + Gabono + Unuiĝinta Reĝlando + Grenado + Kartvelujo + Franca Gviano + Ganao + Ĝibraltaro + Gronlando + Gambio + Gvineo + Gvadelupo + Ekvatora Gvineo + Grekujo + Sud-Georgio kaj Sud-Sandviĉinsuloj + Gvatemalo + Gvamo + Gvineo-Bisaŭo + Gujano + Herda kaj Makdonaldaj Insuloj + Honduro + Kroatujo + Haitio + Hungarujo + Indonezio + Irlando + Israelo + Hindujo + Brita Hindoceana Teritorio + Irako + Irano + Islando + Italujo + Jamajko + Jordanio + Japanujo + Kenjo + Kirgizistano + Kamboĝo + Kiribato + Komoroj + Sent-Kristofo kaj Neviso + Nord-Koreo + Sud-Koreo + Kuvajto + Kejmanoj + Kazaĥstano + Laoso + Libano + Sent-Lucio + Liĥtenŝtejno + Sri-Lanko + Liberio + Lesoto + Litovujo + Luksemburgo + Latvujo + Libio + Maroko + Monako + Moldavujo + Madagaskaro + Marŝaloj + Makedonujo + Malio + Mjanmao + Mongolujo + Nord-Marianoj + Martiniko + Maŭritanujo + Malto + Maŭricio + Maldivoj + Malavio + Meksiko + Malajzio + Mozambiko + Namibio + Nov-Kaledonio + Niĝero + Norfolkinsulo + Niĝerio + Nikaragvo + Nederlando + Norvegujo + Nepalo + Nauro + Niuo + Nov-Zelando + Omano + Panamo + Peruo + Franca Polinezio + Papuo-Nov-Gvineo + Filipinoj + Pakistano + Pollando + Sent-Piero kaj Mikelono + Pitkarna Insulo + Puerto-Riko + Portugalujo + Belaŭo + Paragvajo + Kataro + Reunio + Rumanujo + Rusujo + Ruando + Saŭda Arabujo + Salomonoj + Sejŝeloj + Sudano + Svedujo + Singapuro + Sent-Heleno + Slovenujo + Svalbardo kaj Jan-Majen-insulo + Slovakujo + Siera-Leono + San-Marino + Senegalo + Somalujo + Surinamo + Sud-Sudano + Sao-Tomeo kaj Principeo + Salvadoro + Sirio + Svazilando + Ĉado + Togolo + Tajlando + Taĝikujo + Turkmenujo + Tunizio + Tongo + Turkujo + Trinidado kaj Tobago + Tuvalo + Tajvano + Tanzanio + Ukrajno + Ugando + Usonaj malgrandaj insuloj + Usono + Urugvajo + Uzbekujo + Vatikano + Sent-Vincento kaj la Grenadinoj + Venezuelo + Britaj Virgulininsuloj + Usonaj Virgulininsuloj + Vjetnamo + Vanuatuo + Valiso kaj Futuno + Samoo + Jemeno + Majoto + Sud-Afriko + Zambio + Zimbabvo + + + + [a b c ĉ d e f g ĝ h ĥ i j ĵ k l m n o p r s ŝ t u ŭ v z] + [q w x y] + [A B C Ĉ D E F G Ĝ H Ĥ I J Ĵ K L M N O P R S Ŝ T U Ŭ V Z] + + + + + + + + EEEE, d-'a' 'de' MMMM y G + + + + + G y-MMMM-dd + + + + + G y-MMM-dd + + + + + GGGGG y-MM-dd + + + + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + MM-dd - MM-dd + MM-dd - MM-dd + + + E, MM-dd - E, MM-dd + E, MM-dd - E, MM-dd + + + MMM-MMM + + + MMM-dd - MMM-dd + MMM-dd - MMM-dd + + + E, MMM-dd - E, MMM-dd + E, MMM-dd - E, MMM-dd + + + G y-y + + + G y-MM - y-MM + G y-MM - y-MM + + + G y-MM-dd - y-MM-dd + G y-MM-dd - y-MM-dd + G y-MM-dd - y-MM-dd + + + E, y-MM-dd - E, y-MM-dd + E, y-MM-dd - E, y-MM-dd + E, y-MM-dd - E, y-MM-dd + + + G y-MMM - y-MMM + G y-MMM - y-MMM + + + G y-MMM-dd - y-MMM-dd + G y-MMM-dd - y-MMM-dd + G y-MMM-dd - y-MMM-dd + + + E, d-'a' - E, d-'a' 'de' MMM y G + E, d-'a' 'de' MMM - E, d-'a' 'de' MMM y G + E, d-'a' 'de' MMM y - E, d-'a' 'de' MMM y G + + + + + + + + + jan + feb + mar + apr + maj + jun + jul + aŭg + sep + okt + nov + dec + + + januaro + februaro + marto + aprilo + majo + junio + julio + aŭgusto + septembro + oktobro + novembro + decembro + + + + + + + di + lu + ma + me + ĵa + ve + sa + + + dimanĉo + lundo + mardo + merkredo + ĵaŭdo + vendredo + sabato + + + + + + + K1 + K2 + K3 + K4 + + + 1a kvaronjaro + 2a kvaronjaro + 3a kvaronjaro + 4a kvaronjaro + + + + + + + atm + ptm + + + + + + aK + pK + + + + + + EEEE, d-'a' 'de' MMMM y + + + + + y-MMMM-dd + + + + + y-MMM-dd + + + + + yy-MM-dd + + + + + + + H-'a' 'horo' 'kaj' m:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + MM-dd - MM-dd + MM-dd - MM-dd + + + E, MM-dd - E, MM-dd + E, MM-dd - E, MM-dd + + + MMM-MMM + + + MMM-dd - MMM-dd + MMM-dd - MMM-dd + + + E, MMM-dd - E, MMM-dd + E, MMM-dd - E, MMM-dd + + + y-y + + + y-MM - y-MM + y-MM - y-MM + + + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + + + E, y-MM-dd - E, y-MM-dd + E, y-MM-dd - E, y-MM-dd + E, y-MM-dd - E, y-MM-dd + + + y-MMM - y-MMM + y-MMM - y-MMM + + + y-MMM-dd - y-MMM-dd + y-MMM-dd - y-MMM-dd + y-MMM-dd - y-MMM-dd + + + E, d-'a' - E, d-'a' 'de' MMM y + E, d-'a' 'de' MMM - E, d-'a' 'de' MMM y + E, d-'a' 'de' MMM y - E, d-'a' 'de' MMM y + + + + + + + + + , +   + + + + aŭstrala dolaro + + + brazila realo + + + ĉina juano + + + eŭro + + + brita sterlinga funto + + + hinda rupio + + + japana eno + + + norvega krono + + + rusa rublo + + + usona dolaro + + + arĝento + + + oro + + + eŭropa monunuo + + + franca ora franko + + + paladio + + + plateno + + + + + diff --git a/library/Zend/Locale/Data/eo_001.xml b/library/Zend/Locale/Data/eo_001.xml new file mode 100755 index 000000000..45146b820 --- /dev/null +++ b/library/Zend/Locale/Data/eo_001.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es.xml b/library/Zend/Locale/Data/es.xml new file mode 100755 index 000000000..9ebcdcec3 --- /dev/null +++ b/library/Zend/Locale/Data/es.xml @@ -0,0 +1,5584 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abjasio + acehnés + acoli + adangme + adigeo + avéstico + afrikáans + afrihili + aghem + ainu + akan + acadio + aleutiano + altái meridional + amárico + aragonés + inglés antiguo + angika + árabe + árabe estándar moderno + arameo + araucano + arapaho + arahuaco + asamés + asu + asturiano + avar + avadhi + aimara + azerí + azerí + bashkir + baluchi + balinés + basa + bamun + ghomala + bielorruso + beja + bemba + bena + bafut + búlgaro + bhojpuri + bislama + bicol + bini + kom + siksika + bambara + bengalí + tibetano + bretón + braj + bodo + bosnio + akoose + buriat + buginés + bulu + blin + medumba + catalán + caddo + caribe + cayuga + atsam + checheno + cebuano + chiga + chamorro + chibcha + chagatái + trukés + marí + jerga chinuk + choctaw + chipewyan + cherokee + cheyene + kurdo central + corso + copto + cree + tártaro de Crimea + checo + casubio + eslavo eclesiástico + chuvash + galés + danés + dakota + dargva + taita + alemán + alemán austríaco + alto alemán de Suiza + delaware + slave + dogrib + dinka + zarma + dogri + sorbio inferior + duala + neerlandés medieval + divehi + jola-fonyi + diula + dzongkha + dazaga + embu + ewe + efik + egipcio antiguo + ekajuk + griego + elamita + inglés + inglés australiano + inglés canadiense + inglés británico + inglés estadounidense + inglés medieval + esperanto + español + español de América + español de España + estonio + vasco + ewondo + persa + fang + fanti + fula + finés + filipino + fiyiano + feroés + fon + francés + francés canadiense + francés de Suiza + francés medieval + francés antiguo + frisón septentrional + frisón oriental + friulano + frisón occidental + irlandés + ga + gayo + gbaya + gaélico escocés + geez + gilbertés + gallego + alemán de la alta edad media + guaraní + alemán de la alta edad antigua + gondi + gorontalo + gótico + grebo + griego antiguo + alemán suizo + gujarati + gusii + gaélico manés + kutchin + hausa + haida + hawaiano + hebreo + hindi + hiligaynon + hitita + hmong + hiri motu + croata + sorbio superior + haitiano + húngaro + hupa + armenio + herero + interlingua + iban + ibibio + indonesio + interlingue + igbo + sichuan yi + inupiaq + ilocano + ingush + ido + islandés + italiano + inuktitut + japonés + lojban + ngomba + machame + judeo-persa + judeo-árabe + javanés + georgiano + karakalpako + cabila + kachin + jju + kamba + kawi + kabardiano + kanembu + tyap + makonde + criollo caboverdiano + koro + kongo + khasi + kotanés + koyra chiini + kikuyu + kuanyama + kazajo + kako + groenlandés + kalenyin + jemer + kimbundu + canarés + coreano + konkani + kosraeano + kpelle + kanuri + karachay-balkar + carelio + kurukh + cachemiro + shambala + bafia + kölsch + kurdo + kumyk + kutenai + komi + córnico + kirghiz + latín + ladino + langi + lahnda + lamba + luxemburgués + lezgiano + ganda + limburgués + lingala + laosiano + mongo + lozi + lituano + luba-katanga + luba-lulua + luiseño + lunda + luo + lushai + luyia + letón + madurés + mafa + magahi + maithili + macasar + mandingo + masai + maba + moksha + mandar + mende + meru + criollo mauriciano + malgache + irlandés medieval + makhuwa-meetto + meta' + marshalés + maorí + micmac + minangkabau + macedonio + malayalam + mongol + manchú + manipuri + mohawk + mossi + marathi + malayo + maltés + mundang + lenguas múltiples + creek + mirandés + marwari + birmano + myene + erzya + nauruano + napolitano + nama + bokmal noruego + ndebele septentrional + bajo alemán + nepalí + newari + ndonga + nias + niueano + neerlandés + flamenco + kwasio + nynorsk noruego + ngiemboon + noruego + nogai + nórdico antiguo + n’ko + ndebele meridional + sotho septentrional + nuer + navajo + newari clásico + nyanja + nyamwezi + nyankole + nyoro + nzima + occitano + ojibwa + oromo + oriya + osético + osage + turco otomano + punjabí + pangasinán + pahlavi + pampanga + papiamento + palauano + persa antiguo + fenicio + pali + polaco + pohnpeiano + provenzal antiguo + pastún + pastú + portugués + portugués de Brasil + portugués de Portugal + quechua + rajasthani + rapanui + rarotongano + retorrománico + kiroundi + rumano + moldavo + rombo + romaní + raíz + ruso + arrumano + kinyarwanda + rwa + sánscrito + sandawe + sakha + arameo samaritano + samburu + sasak + santali + ngambay + sangu + sardo + siciliano + escocés + sindhi + sami septentrional + seneca + sena + selkup + koyraboro senni + sango + irlandés antiguo + serbocroata + tashelhit + shan + árabe chadiano + cingalés + sidamo + eslovaco + esloveno + samoano + sami meridional + sami lule + sami inari + sami skolt + shona + soninké + somalí + sogdiano + albanés + serbio + sranan tongo + serer + siswati + saho + sesotho meridional + sundanés + sukuma + susu + sumerio + sueco + swahili + comorense + swahili del Congo + siríaco clásico + siriaco + tamil + telugu + temne + teso + tereno + tetún + tayiko + tailandés + tigriña + tigré + tiv + turcomano + tokelauano + tagalo + klingon + tlingit + tamashek + setchwana + tongano + tonga del Nyasa + tok pisin + turco + taroko + tsonga + tsimshiano + tártaro + tumbuka + tuvaluano + twi + tasawaq + tahitiano + tuviniano + tamazight del Marruecos Central + udmurt + uigur + uygur + ugarítico + ucraniano + umbundu + lengua desconocida + urdu + uzbeko + vai + venda + vietnamita + volapük + vótico + kivunyo + valón + walser + walamo + waray + washo + uolof + kalmyk + xhosa + soga + yao + yapés + yangben + yemba + yídish + yoruba + cantonés + zhuang + zapoteco + símbolos Bliss + zenaga + tamazight + chino + chino simplificado + chino tradicional + zulú + zuni + sin contenido lingüístico + zazaki + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundo + África + América del Norte + Suramérica + Oceanía + África occidental + Centroamérica + África oriental + África septentrional + África central + África meridional + América + Norteamérica + Caribe + Asia oriental + Asia meridional + Sudeste asiático + Europa meridional + Australasia + Melanesia + Región de Micronesia + Polinesia + Asia + Asia central + Asia occidental + Europa + Europa oriental + Europa septentrional + Europa occidental + Latinoamérica + Isla de la Ascensión + Andorra + Emiratos Árabes Unidos + Afganistán + Antigua y Barbuda + Anguila + Albania + Armenia + Antillas Neerlandesas + Angola + Antártida + Argentina + Samoa Americana + Austria + Australia + Aruba + Islas Åland + Azerbaiyán + Bosnia y Herzegovina + Barbados + Bangladés + Bélgica + Burkina Faso + Bulgaria + Baréin + Burundi + Benín + San Bartolomé + Bermudas + Brunéi + Bolivia + Caribe neerlandés + Brasil + Bahamas + Bután + Isla Bouvet + Botsuana + Bielorrusia + Belice + Canadá + Islas Cocos + República Democrática del Congo + Congo (República Democrática del Congo) + República Centroafricana + República del Congo + Congo (República) + Suiza + Costa de Marfil + Islas Cook + Chile + Camerún + China + Colombia + Isla Clipperton + Costa Rica + Cuba + Cabo Verde + Curazao + Isla Christmas + Chipre + República Checa + Alemania + Diego García + Yibuti + Dinamarca + Dominica + República Dominicana + Argelia + Ceuta y Melilla + Ecuador + Estonia + Egipto + Sáhara Occidental + Eritrea + España + Etiopía + Unión Europea + Finlandia + Fiyi + Islas Malvinas + Islas Malvinas (Islas Falkland) + Micronesia + Islas Feroe + Francia + Gabón + Reino Unido + UK + Granada + Georgia + Guayana Francesa + Guernesey + Ghana + Gibraltar + Groenlandia + Gambia + Guinea + Guadalupe + Guinea Ecuatorial + Grecia + Islas Georgia del Sur y Sandwich del Sur + Guatemala + Guam + Guinea-Bisáu + Guyana + RAE de Hong Kong (China) + Hong Kong + Islas Heard y McDonald + Honduras + Croacia + Haití + Hungría + islas Canarias + Indonesia + Irlanda + Israel + Isla de Man + India + Territorio Británico del Océano Índico + Iraq + Irán + Islandia + Italia + Jersey + Jamaica + Jordania + Japón + Kenia + Kirguistán + Camboya + Kiribati + Comoras + San Cristóbal y Nieves + Corea del Norte + Corea del Sur + Kuwait + Islas Caimán + Kazajistán + Laos + Líbano + Santa Lucía + Liechtenstein + Sri Lanka + Liberia + Lesoto + Lituania + Luxemburgo + Letonia + Libia + Marruecos + Mónaco + Moldavia + Montenegro + San Martín + Madagascar + Islas Marshall + Macedonia + Macedonia (ERYM) + Mali + Myanmar (Birmania) + Mongolia + RAE de Macao (China) + Macao + Islas Marianas del Norte + Martinica + Mauritania + Montserrat + Malta + Mauricio + Maldivas + Malaui + México + Malasia + Mozambique + Namibia + Nueva Caledonia + Níger + Isla Norfolk + Nigeria + Nicaragua + Países Bajos + Noruega + Nepal + Nauru + Isla Niue + Nueva Zelanda + Omán + Panamá + Perú + Polinesia Francesa + Papúa Nueva Guinea + Filipinas + Pakistán + Polonia + San Pedro y Miquelón + Islas Pitcairn + Puerto Rico + Territorios Palestinos + Palestina + Portugal + Palau + Paraguay + Catar + Territorios alejados de Oceanía + Reunión + Rumanía + Serbia + Rusia + Ruanda + Arabia Saudí + Islas Salomón + Seychelles + Sudán + Suecia + Singapur + Santa Elena + Eslovenia + Svalbard y Jan Mayen + Eslovaquia + Sierra Leona + San Marino + Senegal + Somalia + Surinam + Sudán del Sur + Santo Tomé y Príncipe + El Salvador + Sint Maarten + Siria + Suazilandia + Tristán da Cunha + Islas Turcas y Caicos + Chad + Territorios Australes Franceses + Togo + Tailandia + Tayikistán + Tokelau + Timor Oriental + Turkmenistán + Túnez + Tonga + Turquía + Trinidad y Tobago + Tuvalu + Taiwán + Tanzania + Ucrania + Uganda + Islas menores alejadas de EE. UU. + Estados Unidos + EE. UU. + Uruguay + Uzbekistán + Ciudad del Vaticano + San Vicente y las Granadinas + Venezuela + Islas Vírgenes Británicas + Islas Vírgenes de EE. UU. + Vietnam + Vanuatu + Wallis y Futuna + Samoa + Kosovo + Yemen + Mayotte + Sudáfrica + Zambia + Zimbabue + Región desconocida + + + Ortografía alemana tradicional + Ortografía estandarizada del resiano + Ortografía alemana de 1996 + Francés medieval tardío hasta 1606 + Francés moderno temprano + Académico + Armenio oriental + Armenio occidental + Alfabeto latino túrquico unificado + Dialecto de San Giorgio/Bila + Boontling + Alfabeto fonético internacional IPA + Alfabeto fonético urálico UPA + Ortografía común + Dialecto Lipovaz del resiano + Monotónico + Dialecto del Natisone + Dialecto de Gniva/Njiva + Dialecto de Oseacco/Osoane + Romanización pinyin + Politónico + Ordenador + Ortografía revisada + Resiano + Saho + Inglés escocés estándar + Scouse + Dialecto de Stolvizza/Solbica + Ortografía taraskievica + Ortografía unificada + Ortografía unificada revisada + Valenciano + Romanización Wade-Giles + + + calendario + Orden ignorando símbolos + Orden de acentos con inversión + Orden de mayúsculas/minúsculas + Orden con distinción entre mayúsculas y minúsculas + Orden de kana + orden + Orden con normalización + Orden numérico + Intensidad de orden + moneda + números + Zona horaria + Variante local + Ordenar como símbolos + Uso privado + + + dígitos indoarábigos + dígitos indoarábigos extendidos + números en armenio + números en minúscula en armenio + dígitos en bengalí + orden del chino tradicional - Big5 + calendario budista + calendario chino + calendario copto + dígitos en devanagari + orden de diccionario + orden Unicode predeterminado + números en etíope + calendario etíope + calendario amete alem etíope + Números financieros + dígitos de ancho completo + orden del chino simplificado - GB2312 + números en georgiano + calendario gregoriano + números en griego + números en griego en minúscula + dígitos en gujarati + dígitos en gurmuji + números decimales en chino + números en chino simplificado + números financieros en chino simplificado + números en chino tradicional + números financieros en chino tradicional + números en hebreo + calendario hebreo + Ordenar todo + calendario nacional hindú + calendario islámico + calendario civil islámico + calendario japonés + números en japonés + números financieros en japonés + dígitos en jemer + dígitos en kannada + dígitos en lao + dígitos occidentales + Ordenar empezando por minúsculas + dígitos en malayalam + dígitos en mongol + dígitos en birmano + Dígitos nativos + Ordenar acentos normalmente + Ordenar siguiendo orden normal de mayúsculas y minúsculas + Ordenar sin distinguir entre mayúsculas y minúsculas + Ordenar caracteres kana por separado + Ordenar sin normalización + Ordenar dígitos individualmente + Ordenar símbolos + dígitos en oriya + calendario persa + orden de listín telefónico + Orden de clasificación fonético + orden pinyin + Ordenar solo letras base + Ordenar acentos/mayúsculas y minúsculas/ancho/kana + orden reformado + calendario de la República de China + números romanos + números romanos en minúscula + búsqueda de uso general + Buscar por consonante inicial de hangul + Ordenar acentos + Ordenar ignorando símbolos + orden estándar + orden de los trazos + números en tamil tradicional + dígitos en tamil + dígitos en telugu + Ordenar acentos/mayúsculas y minúsculas/ancho + dígitos en tailandés + dígitos en tibetano + orden tradicional + Números tradicionales + orden por radical-trazos + Ordenar empezando por mayúsculas + Dígitos vai + Ordenar acentos con inversión + Ordenar distinguiendo entre mayúsculas y minúsculas + Ordenar diferenciando caracteres kana + Ordenar con normalización Unicode + Ordenar dígitos numéricamente + + + BGN + Numérico + Tono + UNGEGN + Acentos + Ancho completo + Ancho medio + Jamo + Pinyin + Publicación + + + métrico + anglosajón + estadounidense + + + Idioma: {0} + Dialecto: {0} + Región: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z] + [ª à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī º ò ŏ ô ö ø ō œ ù ŭ û ū ÿ] + [A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ¡ ? ¿ . … ' ‘ ’ " “ ” « » ( ) \[ \] § @ * / \\ \& # † ‡ ′ ″] + {0}… + … {0} + {0}… {1} + {0}… + … {0} + {0}… {1} + ? + + + « + » + + + + + + + + + BE + + + + + + + + EEEE, d-M-y + + + + + d-M-y + + + + + d-M-y + + + + + d-M-y + + + + + + d + E d + y + M-y + d-M-y + E, d-M-y + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d-M + E, d-M + L + d-M + E d-M + mm:ss + y + y + M-y + d-M-y + E, d-M-y + M-y + d-M-y + E, d-M-y + M-y + QQQ y + QQQQ y + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + dd/MM/y G + + + + + dd/MM/yy GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E, d 'de' MMMM 'de' y G + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + dd-MMM + E, d MMM + d 'de' MMMM + mm:ss + y G + y G + M/y GGGGG + d/M/y GGGGG + E, d/M/y GGGGG + MMM y G + d MMM y G + E, d 'de' MMMM 'de' y G + MMMM 'de' y G + QQQ y G + QQQQ 'de' y G + + + {0}–{1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M–d/M + d/M–d/M + + + E, d/M–E, d/M + E, d/M–E, d/M + + + MMM–MMM + + + d–d MMM + d 'de' MMM–d 'de' MMM + + + E, d 'de' MMM–E, d 'de' MMM + E, d 'de' MMM–E, d 'de' MMM + + + y–y G + + + M/y–M/y G + M/y–M/y G + + + d/M/y–d/M/y G + d/M/y–d/M/y G + d/M/y–d/M/y G + + + E, d/M/y–E, d/M/y G + E, d/M/y–E, d/M/y G + E, d/M/y–E, d/M/y G + + + MMM–MMM 'de' y G + MMM 'de' y–MMM 'de' y G + + + d–d 'de' MMM 'de' y G + d 'de' MMM–d 'de' MMM y G + d 'de' MMM 'de' y–d 'de' MMM 'de' y G + + + E, d 'de' MMM–E, d 'de' MMM 'de' y G + E, d 'de' MMM–E, d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y–E, d 'de' MMM 'de' y G + + + MMMM–MMMM 'de' y G + MMMM 'de' y–MMMM 'de' y G + + + + + + + + + ene. + feb. + mar. + abr. + may. + jun. + jul. + ago. + sept. + oct. + nov. + dic. + + + E + F + M + A + M + J + J + A + S + O + N + D + + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + + + + Ene. + Feb. + Mar. + Abr. + May. + Jun. + Jul. + Ago. + Sept. + Oct. + Nov. + Dic. + + + E + F + M + A + M + J + J + A + S + O + N + D + + + Enero + Febrero + Marzo + Abril + Mayo + Junio + Julio + Agosto + Septiembre + Octubre + Noviembre + Diciembre + + + + + + + dom. + lun. + mar. + mié. + jue. + vie. + sáb. + + + D + L + M + X + J + V + S + + + DO + LU + MA + MI + JU + VI + SA + + + domingo + lunes + martes + miércoles + jueves + viernes + sábado + + + + + Dom. + Lun. + Mar. + Mié. + Jue. + Vie. + Sáb. + + + D + L + M + X + J + V + S + + + DO + LU + MA + MI + JU + VI + SA + + + Domingo + Lunes + Martes + Miércoles + Jueves + Viernes + Sábado + + + + + + + T1 + T2 + T3 + T4 + + + 1T + 2T + 3T + 4T + + + 1.er trimestre + 2.º trimestre + 3.er trimestre + 4.º trimestre + + + + + T1 + T2 + T3 + T4 + + + 1T + 2T + 3T + 4T + + + 1.er trimestre + 2.º trimestre + 3.er trimestre + 4.º trimestre + + + + + + + a.m. + p.m. + + + a. m. + p. m. + + + + + + antes de Cristo + anno Dómini + + + a. C. + a. e. c. + d. C. + e. c. + + + + + + EEEE, d 'de' MMMM 'de' y + + + + + d 'de' MMMM 'de' y + + + + + d/M/y + + + + + d/M/yy + + + + + + + H:mm:ss (zzzz) + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E, h:mm a + E, H:mm + E, h:mm:ss a + E, H:mm:ss + y G + MMM 'de' y G + d MMM 'de' y G + E, d 'de' MMMM 'de' y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d/M + E, d/M + d/M + d/M + LLL + d 'de' MMM + dd-MMM + E d 'de' MMM + d 'de' MMMM + mm:ss + y + M/y + d/M/y + EEE, d/M/y + M/y + MMM 'de' y + d 'de' MMM 'de' y + EEE, d 'de' MMMM 'de' y + MMMM 'de' y + QQQ y + QQQQ 'de' y + + + {0} {1} + + + {0}–{1} + + d–d + + + h a–h a + h–h a + + + H–H + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + H:mm–H:mm + H:mm–H:mm + + + h:mm a–h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + H:mm–H:mm v + H:mm–H:mm v + + + h a–h a v + h–h a v + + + H–H v + + + M–M + + + d/M–d/M + d/M–d/M + + + E, d/M–E, d/M + E, d/M–E, d/M + + + MMM–MMM + + + d–d MMM + d MMM–d MMM + + + E, d MMM–E, d MMM + E, d MMM–E, d MMM + + + y–y + + + M/y–M/y + M/y–M/y + + + d/M/y–d/M/y + d/M/y–d/M/y + d/M/y–d/M/y + + + E, d/M/y–E, d/M/y + E, d/M/y–E, d/M/y + E, d/M/y–E, d/M/y + + + MMM–MMM y + MMM y–MMM y + + + d–d MMM y + d MMM–d MMM 'de' y + d MMM 'de' y–d MMM 'de' y + + + E, d MMM–E, d MMM 'de' y + E, d MMM–E, d MMM 'de' y + E, d MMM 'de' y–E, d MMM 'de' y + + + MMMM–MMMM 'de' y + MMMM 'de' y–MMMM 'de' y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + dd/MM/y G + + + + + dd/MM/yy GGGGG + + + + + + + + antes de R.O.C. + + + + + + + era + + + año + el año pasado + este año + el próximo año + + dentro de {0} año + dentro de {0} años + + + hace {0} año + hace {0} años + + + + mes + el mes pasado + este mes + el próximo mes + + dentro de {0} mes + dentro de {0} meses + + + hace {0} mes + hace {0} meses + + + + semana + la semana pasada + esta semana + la próxima semana + + dentro de {0} semana + dentro de {0} semanas + + + hace {0} semana + hace {0} semanas + + + + día + antes de ayer + ayer + hoy + mañana + pasado mañana + + dentro de {0} día + dentro de {0} días + + + hace {0} día + hace {0} días + + + + día de la semana + + + el domingo pasado + este domingo + el próximo domingo + + + el lunes pasado + este lunes + el próximo lunes + + + el martes pasado + este martes + el próximo martes + + + el miércoles pasado + este miércoles + el próximo miércoles + + + el jueves pasado + este jueves + el próximo jueves + + + el viernes pasado + este viernes + el próximo viernes + + + el sábado pasado + este sábado + el próximo sábado + + + periodo del día + + + hora + + dentro de {0} hora + dentro de {0} horas + + + hace {0} hora + hace {0} horas + + + + minuto + + dentro de {0} minuto + dentro de {0} minutos + + + hace {0} minuto + hace {0} minutos + + + + segundo + ahora + + dentro de {0} segundo + dentro de {0} segundos + + + hace {0} segundo + hace {0} segundos + + + + zona horaria + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Hora de {0} + horario de verano de {0} + horario estándar de {0} + {1} ({0}) + + Desconocida + + + Dubái + + + Anguila + + + Tirana + + + Ereván + + + Dumont d'Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Viena + + + Adelaida + + + Sídney + + + Bakú + + + Dacca + + + Bruselas + + + Uagadugú + + + Sofía + + + Baréin + + + Portonovo + + + San Bartolomé + + + Bermudas + + + Brunéi + + + Eirunepé + + + Río Branco + + + Manaos + + + Cuiabá + + + Santarém + + + Belén + + + Araguaína + + + São Paulo + + + Bahía + + + Maceió + + + Timbu + + + Belice + + + Atikokan + + + St. John’s + + + Zúrich + + + Abiyán + + + Isla de Pascua + + + Duala + + + Ürümqi + + + Shanghái + + + Bogotá + + + La Habana + + + Cabo Verde + + + Curazao + + + Praga + + + Berlín + + + Yibuti + + + Copenhague + + + Argel + + + Galápagos + + + Tallin + + + El Cairo + + + El Aaiún + + + Asmara + + + Islas Canarias + + + Addis Abeba + + + Fiyi + + + Chuuk + + + Pohnpei + + + Islas Feroe + + + París + + + + Hora de verano británica + + Londres + + + Granada + + + Tiflis + + + Cayena + + + Nuuk + + + Ittoqqortoormiit + + + Guadalupe + + + Atenas + + + Georgia del Sur + + + Bisáu + + + Puerto Príncipe + + + Yakarta + + + Makasar + + + + Hora de verano de Irlanda + + Dublín + + + Jerusalén + + + Isla de Man + + + Calcuta + + + Bagdad + + + Teherán + + + Reikiavik + + + Roma + + + Ammán + + + Tokio + + + Comoras + + + St. Kitts + + + Seúl + + + Caimán + + + Aktau + + + Aktobe + + + Vientián + + + Santa Lucía + + + Vilna + + + Luxemburgo + + + Trípoli + + + Mónaco + + + Skopie + + + Rangún + + + Ulán Bator + + + Macao + + + Saipán + + + Martinica + + + Nuakchot + + + Mauricio + + + Maldivas + + + Mazatlán + + + Bahía de Banderas + + + Ciudad de México + + + Mérida + + + Cancún + + + Numea + + + Ámsterdam + + + Katmandú + + + Mascate + + + Panamá + + + Tahití + + + Varsovia + + + Miquelón + + + Islas Pitcairn + + + Hebrón + + + Lisboa + + + Palaos + + + Asunción + + + Catar + + + Reunión + + + Bucarest + + + Belgrado + + + Kaliningrado + + + Moscú + + + Volgogrado + + + Yekaterinburgo + + + Sajalín + + + Magadán + + + Riad + + + Mahé + + + Jartún + + + Estocolmo + + + Singapur + + + Santa Helena + + + Liubliana + + + Mogadiscio + + + Santo Tomé + + + Lower Prince's Quarter + + + Damasco + + + Yamena + + + Lomé + + + Duchanbé + + + Asjabad + + + Túnez capital + + + Estambul + + + Puerto España + + + Taipéi + + + Zaporizhia + + + Honolulú + + + Los Ángeles + + + Beulah, Dakota del Norte + + + New Salem, Dakota del Norte + + + Centro + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Indianápolis + + + Vevay, Indiana + + + Monticello, Kentucky + + + Nueva York + + + Samarcanda + + + El Vaticano + + + San Vicente + + + Tórtola + + + St. Thomas + + + Ciudad Ho Chi Minh + + + Adén + + + Johannesburgo + + + + Hora de Acre + Hora estándar de Acre + Hora de verano de Acre + + + + + Hora de Afganistán + + + + + Hora de África central + + + + + Hora de África oriental + + + + + Hora de Sudáfrica + + + + + Hora de África occidental + Hora estándar de África occidental + Hora de verano de África occidental + + + + + Hora de Alaska + Hora estándar de Alaska + Hora de verano de Alaska + + + + + Hora del Amazonas + Hora estándar del Amazonas + Hora de verano del Amazonas + + + + + Hora central + Hora estándar central + Hora de verano central + + + + + Hora oriental + Hora estándar oriental + Hora de verano oriental + + + + + Hora de las Montañas + Hora estándar de las Montañas + Hora de verano de las Montañas + + + + + Hora del Pacífico + Hora estándar del Pacífico + Hora de verano del Pacífico + + + + + Hora de Anadyr + Hora estándar de Anadyr + Hora de verano de Anadyr + + + + + Hora de Aktau + Hora estándar de Aktau + Hora de verano de Aktau + + + + + Hora de Aktobe + Hora estándar de Aktobe + Hora de verano de Aktobe + + + + + Hora de Arabia + Hora estándar de Arabia + Hora de verano de Arabia + + + + + Hora de Argentina + Hora estándar de Argentina + Hora de verano de Argentina + + + + + Hora de Argentina occidental + Hora estándar de Argentina occidental + Hora de verano de Argentina occidental + + + + + Hora de Armenia + Hora estándar de Armenia + Hora de verano de Armenia + + + + + Hora del Atlántico + Hora estándar del Atlántico + Hora de verano del Atlántico + + + + + Hora de Australia central + Hora estándar de Australia central + Hora de verano de Australia central + + + + + Hora de Australia centroccidental + Hora estándar de Australia centroccidental + Hora de verano de Australia centroccidental + + + + + Hora de Australia oriental + Hora estándar de Australia oriental + Hora de verano de Australia oriental + + + + + Hora de Australia occidental + Hora estándar de Australia occidental + Hora de verano de Australia occidental + + + + + Hora de Azerbaiyán + Hora estándar de Azerbaiyán + Hora de verano de Azerbaiyán + + + + + Hora de las Azores + Hora estándar de las Azores + Hora de verano de las Azores + + + + + Hora de Bangladés + Hora estándar de Bangladés + Hora de verano de Bangladés + + + + + Hora de Bután + + + + + Hora de Bolivia + + + + + Hora de Brasilia + Hora estándar de Brasilia + Hora de verano de Brasilia + + + + + Hora de Brunéi + + + + + Hora de Cabo Verde + Hora estándar de Cabo Verde + Hora de verano de Cabo Verde + + + + + Hora estándar de Chamorro + + + + + Hora de Chatham + Hora estándar de Chatham + Hora de verano de Chatham + + + + + Hora de Chile + Hora estándar de Chile + Hora de verano de Chile + + + + + Hora de China + Hora estándar de China + Hora de verano de China + + + + + Hora de Choibalsan + Hora estándar de Choibalsan + Hora de verano de Choibalsan + + + + + Hora de la isla de Navidad + + + + + Hora de las islas Cocos + + + + + Hora de Colombia + Hora estándar de Colombia + Hora de verano de Colombia + + + + + Hora de las islas Cook + Hora estándar de las islas Cook + Hora de verano media de las islas Cook + + + + + Hora de Cuba + Hora estándar de Cuba + Hora de verano de Cuba + + + + + Hora de Davis + + + + + Hora de Dumont-d’Urville + + + + + Hora de Timor Oriental + + + + + Hora de la isla de Pascua + Hora estándar de la isla de Pascua + Hora de verano de la isla de Pascua + + + + + Hora de Ecuador + + + + + Hora de Europa central + Hora estándar de Europa central + Hora de verano de Europa central + + + CET + CET + CEST + + + + + Hora de Europa oriental + Hora estándar de Europa oriental + Hora de verano de Europa oriental + + + EET + EET + EEST + + + + + Hora de Europa occidental + Hora estándar de Europa occidental + Hora de verano de Europa occidental + + + WET + WET + WEST + + + + + Hora de las islas Malvinas + Hora estándar de las islas Malvinas + Hora de verano de las islas Malvinas + + + + + Hora de Fiyi + Hora estándar de Fiyi + Hora de verano de Fiyi + + + + + Hora de la Guayana Francesa + + + + + Hora de las Tierras Australes y Antárticas Francesas + + + + + Hora de Galápagos + + + + + Hora de Gambier + + + + + Hora de Georgia + Hora estándar de Georgia + Hora de verano de Georgia + + + + + Hora de las islas Gilbert + + + + + Hora del meridiano de Greenwich + + + GMT + + + + + Hora de Groenlandia oriental + Hora estándar de Groenlandia oriental + Hora de verano de Groenlandia oriental + + + + + Hora de Groenlandia occidental + Hora estándar de Groenlandia occidental + Hora de verano de Groenlandia occidental + + + + + Hora estándar de Guam + + + + + Hora estándar del Golfo + + + + + Hora de Guyana + + + + + Hora de Hawái-Aleutiano + Hora estándar de Hawái-Aleutiano + Hora de verano de Hawái-Aleutiano + + + + + Hora de Hong Kong + Hora estándar de Hong Kong + Hora de verano de Hong Kong + + + + + Hora de Hovd + Hora estándar de Hovd + Hora de verano de Hovd + + + + + Hora estándar de la India + + + + + Hora del Océano Índico + + + + + Hora de Indochina + + + + + Hora de Indonesia central + + + + + Hora de Indonesia oriental + + + + + Hora de Indonesia occidental + + + + + Hora de Irán + Hora estándar de Irán + Hora de verano de Irán + + + + + Hora de Irkutsk + Hora estándar de Irkutsk + Hora de verano de Irkutsk + + + + + Hora de Israel + Hora estándar de Israel + Hora de verano de Israel + + + + + Hora de Japón + Hora estándar de Japón + Hora de verano de Japón + + + + + Hora de Kamchatka + Hora de estándar de Kamchatka + Hora de verano de Kamchatka + + + + + Hora de Kazajistán oriental + + + + + Hora de Kazajistán occidental + + + + + Hora de Corea + Hora estándar de Corea + Hora de verano de Corea + + + + + Hora de Kosrae + + + + + Hora de Krasnoyarsk + Hora estándar de Krasnoyarsk + Hora de verano de Krasnoyarsk + + + + + Hora de Kirguistán + + + + + Hora de Sri Lanka + + + + + Hora de las Espóradas Ecuatoriales + + + + + Hora de Lord Howe + Hora estándar de Lord Howe + Hora de verano de Lord Howe + + + + + Hora de Macao + Hora estándar de Macao + Hora de verano de Macao + + + + + Hora de la isla Macquarie + + + + + Hora de Magadán + Hora estándar de Magadán + Hora de verano de Magadán + + + + + Hora de Malasia + + + + + Hora de Maldivas + + + + + Hora de las islas Marquesas + + + + + Hora de las Islas Marshall + + + + + Hora de Mauricio + Hora estándar de Mauricio + Hora de verano de Mauricio + + + + + Hora de Mawson + + + + + Hora del noroeste de México + Hora estándar del noroeste de México + Hora de verano del noroeste de México + + + + + Hora del Pacífico de México + Hora estándar del Pacífico de México + Hora de verano del Pacífico de México + + + + + Hora de Ulán Bator + Hora estándar de Ulán Bator + Hora de verano de Ulán Bator + + + + + Hora de Moscú + Hora estándar de Moscú + Hora de verano de Moscú + + + + + Hora de Birmania + + + + + Hora de Nauru + + + + + Hora de Nepal + + + + + Hora de Nueva Caledonia + Hora estándar de Nueva Caledonia + Hora de verano de Nueva Caledonia + + + + + Hora de Nueva Zelanda + Hora estándar de Nueva Zelanda + Hora de verano de Nueva Zelanda + + + + + Hora de Terranova + Hora estándar de Terranova + Hora de verano de Terranova + + + + + Hora de Niue + + + + + Hora de las islas Norfolk + + + + + Hora de Fernando de Noronha + Hora estándar de Fernando de Noronha + Hora de verano de Fernando de Noronha + + + + + Hora de las Islas Marianas del Norte + + + + + Hora de Novosibirsk + Hora estándar de Novosibirsk + Hora de verano de Novosibirsk + + + + + Hora de Omsk + Hora estándar de Omsk + Hora de verano de Omsk + + + + + Hora de Pakistán + Hora estándar de Pakistán + Hora de verano de Pakistán + + + + + Hora de Palaos + + + + + Hora de Papúa-Nueva Guinea + + + + + Hora de Paraguay + Hora estándar de Paraguay + Hora de verano de Paraguay + + + + + Hora de Perú + Hora estándar de Perú + Hora de verano de Perú + + + + + Hora de Filipinas + Hora estándar de Filipinas + Hora de verano de Filipinas + + + + + Hora de las islas Fénix + + + + + Hora de San Pedro y Miquelón + Hora estándar de San Pedro y Miquelón + Hora de verano de San Pedro y Miquelón + + + + + Hora de Pitcairn + + + + + Hora de Pohnpei + + + + + Hora de Qyzylorda + Hora estándar de Qyzylorda + Hora de verano de Qyzylorda + + + + + Hora de Reunión + + + + + Hora de Rothera + + + + + Hora de Sajalín + Hora estándar de Sajalín + Hora de verano de Sajalín + + + + + Hora de Samara + Hora estándar de Samara + Hora de verano de Samara + + + + + Hora de Samoa + Hora estándar de Samoa + Hora de verano de Samoa + + + + + Hora de Seychelles + + + + + Hora de Singapur + + + + + Hora de las Islas Salomón + + + + + Hora de Georgia meridional + + + + + Hora de Surinam + + + + + Hora de Syowa + + + + + Hora de Tahití + + + + + Hora de Taipéi + Hora estándar de Taipéi + Hora de verano de Taipéi + + + + + Hora de Tayikistán + + + + + Hora de Tokelau + + + + + Hora de Tonga + Hora estándar de Tonga + Hora de verano de Tonga + + + + + Hora de Chuuk + + + + + Hora de Turkmenistán + Hora estándar de Turkmenistán + Hora de verano de Turkmenistán + + + + + Hora de Tuvalu + + + + + Hora de Uruguay + Hora estándar de Uruguay + Hora de verano de Uruguay + + + + + Hora de Uzbekistán + Hora estándar de Uzbekistán + Hora de verano de Uzbekistán + + + + + Hora de Vanuatu + Hora estándar de Vanuatu + Hora de verano de Vanuatu + + + + + Hora de Venezuela + + + + + Hora de Vladivostok + Hora estándar de Vladivostok + Hora de verano de Vladivostok + + + + + Hora de Volgogrado + Hora estándar de Volgogrado + Hora de verano de Volgogrado + + + + + Hora de Vostok + + + + + Hora de la isla Wake + + + + + Hora de Wallis y Futuna + + + + + Hora de Yakutsk + Hora estándar de Yakutsk + Hora de verano de Yakutsk + + + + + Hora de Ekaterimburgo + Hora estándar de Ekaterimburgo + Hora de verano de Ekaterimburgo + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 millón + 0 millones + 00 millones + 00 millones + 000 millones + 000 millones + 0 mil millones + 0 mil millones + 00 mil millones + 00 mil millones + 000 mil millones + 000 mil millones + 0 billón + 0 billones + 00 billones + 00 billones + 000 billones + 000 billones + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0000 M + 0000 M + 00MRD + 00MRD + 000MRD + 000MRD + 0B + 0B + 00B + 00B + 000B + 000B + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + peseta andorrana + peseta andorrana + pesetas andorranas + + + dírham de los Emiratos Árabes Unidos + dírham de los Emiratos Árabes Unidos + dírhams de los Emiratos Árabes Unidos + + + afgani (1927–2002) + + + afgani afgano + afgani afgano + afganis afganos + + + lek albanés + lek albanés + lekë albaneses + + + dram armenio + dram armenio + dram armenios + + + florín de las Antillas Neerlandesas + florín de las Antillas Neerlandesas + florines de las Antillas Neerlandesas + + + kwanza angoleño + kwanza angoleño + kwanzas angoleños + + + kwanza angoleño (1977–1990) + + + nuevo kwanza angoleño (1990–2000) + + + kwanza reajustado angoleño (1995–1999) + + + austral argentino + austral argentino + australes argentinos + + + peso argentino (1983–1985) + peso argentino (ARP) + pesos argentinos (ARP) + + + peso argentino + peso argentino + pesos argentinos + AR$ + + + chelín austriaco + chelín austriaco + chelines austriacos + + + dólar australiano + dólar australiano + dólares australianos + AU$ + + + florín de Aruba + florín de Aruba + florines de Aruba + + + manat azerí (1993–2006) + + + manat azerí + manat azerí + manat azeríes + + + dinar bosnio + dinar bosnio + dinares bosnios + + + marco convertible de Bosnia-Herzegovina + marco convertible de Bosnia-Herzegovina + marcos convertibles de Bosnia-Herzegovina + + + dólar de Barbados + dólar de Barbados + dólares de Barbados + + + taka de Bangladesh + taka de Bangladesh + taka de Bangladesh + + + franco belga (convertible) + franco belga (convertible) + francos belgas (convertibles) + + + franco belga + franco belga + francos belgas + + + franco belga (financiero) + franco belga (financiero) + francos belgas (financieros) + + + lev fuerte búlgaro + lev fuerte búlgaro + leva fuertes búlgaros + + + lev búlgaro + nuevo lev búlgaro + levas búlgaras + + + dinar bahreiní + dinar bahreiní + dinares bahreiníes + + + franco de Burundi + franco de Burundi + francos de Burundi + + + dólar de Bermudas + dólar de Bermudas + dólares de Bermudas + + + dólar de Brunéi + dólar de Brunéi + dólares de Brunéi + + + boliviano + boliviano + bolivianos + + + peso boliviano + peso boliviano + pesos bolivianos + + + MVDOL boliviano + MVDOL boliviano + MVDOL bolivianos + + + nuevo cruceiro brasileño (1967–1986) + nuevo cruzado brasileño (BRB) + nuevos cruzados brasileños (BRB) + + + cruzado brasileño + cruzado brasileño + cruzados brasileños + + + cruceiro brasileño (1990–1993) + cruceiro brasileño (BRE) + cruceiros brasileños (BRE) + + + real brasileño + real brasileño + reales brasileños + BRL + + + nuevo cruzado brasileño + nuevo cruzado brasileño + nuevos cruzados brasileños + + + cruceiro brasileño + cruceiro brasileño + cruceiros brasileños + + + dólar de las Bahamas + dólar de las Bahamas + dólares de las Bahamas + + + ngultrum butanés + ngultrum butanés + ngultrum butaneses + + + kyat birmano + kyat birmano + kyat birmanos + + + pula botsuano + pula botsuana + pula botsuanas + + + nuevo rublo bielorruso (1994–1999) + nuevo rublo bielorruso + nuevos rublos bielorrusos + + + rublo bielorruso + rublo bielorruso + rublos bielorrusos + + + dólar de Belice + dólar de Belice + dólares de Belice + + + dólar canadiense + dólar canadiense + dólares canadienses + CA$ + + + franco congoleño + franco congoleño + francos congoleños + + + euro WIR + euro WIR + euros WIR + + + franco suizo + franco suizo + francos suizos + + + franco WIR + franco WIR + francos WIR + + + unidad de fomento chilena + unidad de fomento chilena + unidades de fomento chilenas + + + peso chileno + peso chileno + pesos chilenos + + + yuan chino + yuan chino + yuanes chinos + CNY + + + peso colombiano + peso colombiano + pesos colombianos + + + unidad de valor real colombiana + unidad de valor real + unidades de valor reales + + + colón costarricense + colón costarricense + colones costarricenses + + + antiguo dinar serbio + antiguo dinar serbio + antiguos dinares serbios + + + corona fuerte checoslovaca + corona fuerte checoslovaca + coronas fuertes checoslovacas + + + peso cubano convertible + peso cubano convertible + pesos cubanos convertibles + + + peso cubano + peso cubano + pesos cubanos + + + escudo de Cabo Verde + escudo de Cabo Verde + escudos de Cabo Verde + + + libra chipriota + libra chipriota + libras chipriotas + + + corona checa + corona checa + coronas checas + + + ostmark de Alemania del Este + marco de la República Democrática Alemana + marcos de la República Democrática Alemana + + + marco alemán + marco alemán + marcos alemanes + + + franco de Yibuti + franco de Yibuti + francos de Yibuti + + + corona danesa + corona danesa + coronas danesas + + + peso dominicano + peso dominicano + pesos dominicanos + + + dinar argelino + dinar argelino + dinares argelinos + + + sucre ecuatoriano + sucre ecuatoriano + sucres ecuatorianos + + + unidad de valor constante (UVC) ecuatoriana + unidad de valor constante (UVC) ecuatoriana + unidades de valor constante (UVC) ecuatorianas + + + corona estonia + corona estonia + coronas estonias + + + libra egipcia + libra egipcia + libras egipcias + + + nakfa eritreo + nakfa eritreo + nakfas eritreos + + + peseta española (cuenta A) + peseta española (cuenta A) + pesetas españolas (cuenta A) + + + peseta española (cuenta convertible) + peseta española (cuenta convertible) + pesetas españolas (cuenta convertible) + + + peseta española + peseta española + pesetas españolas + + + + birr etíope + birr etíope + birrs etíopes + + + euro + euro + euros + + + marco finlandés + marco finlandés + marcos finlandeses + + + dólar de las Islas Fiyi + dólar de las Islas Fiyi + dólares de las Islas Fiyi + + + libra de las Islas Malvinas + libra de las Islas Malvinas + libras de las Islas Malvinas + + + franco francés + franco francés + francos franceses + + + libra esterlina británica + libra esterlina británica + libras esterlinas británicas + GBP + + + kupon larit georgiano + + + lari georgiano + lari georgiano + laris georgianos + + + cedi ghanés (1979–2007) + + + cedi ghanés + cedi ghanés + cedis ghaneses + + + libra de Gibraltar + libra gibraltareña + libras gibraltareñas + + + dalasi gambiano + dalasi gambiano + dalasis gambianos + + + franco guineano + franco guineano + francos guineanos + + + syli guineano + + + ekuele de Guinea Ecuatorial + ekuele de Guinea Ecuatorial + ekueles de Guinea Ecuatorial + + + dracma griego + dracma griego + dracmas griegos + + + quetzal guatemalteco + quetzal guatemalteco + quetzales guatemaltecos + + + escudo de Guinea Portuguesa + + + peso de Guinea-Bissáu + + + dólar guyanés + dólar guyanés + dólares guyaneses + + + dólar de Hong Kong + dólar de Hong Kong + dólares de Hong Kong + HKD + + + lempira hondureño + lempira hondureño + lempiras hondureños + + + dinar croata + dinar croata + dinares croatas + + + kuna croata + kuna croata + kunas croatas + + + gourde haitiano + gourde haitiano + gourdes haitianos + + + florín húngaro + florín húngaro + florines húngaros + + + rupia indonesia + rupia indonesia + rupias indonesias + + + libra irlandesa + libra irlandesa + libras irlandesas + + + libra israelí + libra israelí + libras israelíes + + + nuevo sheqel israelí + nuevo sheqel israelí + nuevos sheqels israelíes + ILS + + + rupia india + rupia india + rupias indias + INR + + + dinar iraquí + dinar iraquí + dinares iraquíes + + + rial iraní + rial iraní + riales iraníes + + + corona islandesa + corona islandesa + coronas islandesas + + + lira italiana + lira italiana + liras italianas + + + dólar de Jamaica + dólar de Jamaica + dólares de Jamaica + + + dinar jordano + dinar jordano + dinares jordanos + + + yen japonés + yen japonés + yenes japoneses + JPY + + + chelín keniata + chelín keniata + chelines keniatas + + + som kirguís + som kirguís + soms kirguises + + + riel camboyano + riel camboyano + rieles camboyanos + + + franco comorense + franco comorense + francos comorenses + + + won norcoreano + won norcoreano + wons norcoreanos + + + won surcoreano + won surcoreano + wons surcoreanos + KRW + + + dinar kuwaití + dinar kuwaití + dinares kuwaitíes + + + dólar de las Islas Caimán + dólar de las Islas Caimán + dólares de las Islas Caimán + + + tenge kazako + tenge kazako + tenges kazakos + + + kip laosiano + kip laosiano + kips laosianos + + + libra libanesa + libra libanesa + libras libanesas + + + rupia de Sri Lanka + rupia de Sri Lanka + rupias de Sri Lanka + + + dólar liberiano + dólar liberiano + dólares liberianos + + + loti lesothense + + + litas lituano + litas lituana + litas lituanas + + + talonas lituano + talonas lituana + talonas lituanas + + + franco convertible luxemburgués + franco convertible luxemburgués + francos convertibles luxemburgueses + + + franco luxemburgués + franco luxemburgués + francos luxemburgueses + + + franco financiero luxemburgués + franco financiero luxemburgués + francos financieros luxemburgueses + + + lats letón + lats letón + lats letones + + + rublo letón + rublo letón + rublos letones + + + dinar libio + dinar libio + dinares libios + + + dírham marroquí + dírham marroquí + dírhams marroquíes + + + franco marroquí + franco marroquí + francos marroquíes + + + leu moldavo + leu moldavo + leus moldavos + + + ariary malgache + ariary malgache + ariarys malgaches + + + franco malgache + + + dinar macedonio + dinar macedonio + dinares macedonios + + + franco malí + + + kyat de Myanmar + kyat de Myanmar + kyats de Myanmar + + + tugrik mongol + tugrik mongol + tugriks mongoles + + + pataca de Macao + pataca de Macao + patacas de Macao + + + ouguiya mauritano + ouguiya mauritano + ouguiyas mauritanos + + + lira maltesa + lira maltesa + liras maltesas + + + libra maltesa + libra maltesa + libras maltesas + + + rupia mauriciana + rupia mauriciana + rupias mauricianas + + + rufiyaa de Maldivas + rufiyaa de Maldivas + rufiyaas de Maldivas + + + kwacha de Malawi + kwacha de Malawi + kwachas de Malawi + + + peso mexicano + peso mexicano + pesos mexicanos + MX$ + + + peso de plata mexicano (1861–1992) + peso de plata mexicano (MXP) + pesos de plata mexicanos (MXP) + + + unidad de inversión (UDI) mexicana + unidad de inversión (UDI) mexicana + unidades de inversión (UDI) mexicanas + + + ringgit malasio + ringgit malasio + ringgits malasios + + + escudo mozambiqueño + escudo mozambiqueño + escudos mozambiqueños + + + antiguo metical mozambiqueño + + + metical mozambiqueño + metical mozambiqueño + meticales mozambiqueños + + + dólar de Namibia + dólar de Namibia + dólares de Namibia + + + naira nigeriano + naira nigeriano + nairas nigerianos + + + córdoba nicaragüense (1988–1991) + córdoba nicaragüense (1988–1991) + córdobas nicaragüenses (1988–1991) + + + córdoba nicaragüense + córdoba nicaragüense + córdobas nicaragüenses + + + florín neerlandés + florín neerlandés + florines neerlandeses + + + corona noruega + corona noruega + coronas noruegas + + + rupia nepalesa + rupia nepalesa + rupias nepalesas + + + dólar neozelandés + dólar neozelandés + dólares neozelandeses + NZD + + + rial omaní + rial omaní + riales omaníes + + + balboa panameño + balboa panameño + balboas panameños + + + inti peruano + inti peruano + intis peruanos + + + nuevo sol peruano + nuevo sol peruano + nuevos soles peruanos + + + sol peruano + sol peruano + soles peruanos + + + kina de Papúa Nueva Guinea + kina de Papúa Nueva Guinea + kinas de Papúa Nueva Guinea + + + peso filipino + peso filipino + pesos filipinos + + + rupia pakistaní + rupia pakistaní + rupias pakistaníes + + + zloty polaco + zloty polaco + zlotys polacos + + + zloty polaco (1950–1995) + zloty polaco (PLZ) + zlotys polacos (PLZ) + + + escudo portugués + escudo portugués + escudos portugueses + + + guaraní paraguayo + guaraní paraguayo + guaraníes paraguayos + + + riyal de Qatar + riyal de Qatar + riales de Qatar + + + dólar rodesiano + + + antiguo leu rumano + antiguo leu rumano + antiguos lei rumanos + + + leu rumano + leu rumano + lei rumanos + + + dinar serbio + dinar serbio + dinares serbios + + + rublo ruso + rublo ruso + rublos rusos + + + rublo ruso (1991–1998) + rublo ruso (RUR) + rublos rusos (RUR) + + + franco ruandés + franco ruandés + francos ruandeses + + + riyal saudí + rial saudí + riales saudíes + + + dólar de las Islas Salomón + dólar de las Islas Salomón + dólares de las Islas Salomón + + + rupia de Seychelles + rupia de Seychelles + rupias de Seychelles + + + dinar sudanés + dinar sudanés + dinares sudaneses + + + libra sudanesa + libra sudanesa + libras sudanesas + + + libra sudanesa antigua + libra sudanesa antigua + libras sudanesas antiguas + + + corona sueca + corona sueca + coronas suecas + + + dólar singapurense + dólar singapurense + dólares singapurenses + + + libra de Santa Elena + libra de Santa Elena + libras de Santa Elena + + + tólar esloveno + tólar esloveno + tólares eslovenos + + + corona eslovaca + corona eslovaca + coronas eslovacas + + + leone de Sierra Leona + leone de Sierra Leona + leones de Sierra Leona + + + chelín somalí + chelín somalí + chelines somalíes + + + dólar surinamés + dólar surinamés + dólares surinameses + + + florín surinamés + + + libra sursudanesa + libra sursudanesa + libras sursudanesas + + + dobra de Santo Tomé y Príncipe + dobra de Santo Tomé y Príncipe + dobras de Santo Tomé y Príncipe + + + rublo soviético + rublo soviético + rublos soviéticos + + + colón salvadoreño + colón salvadoreño + colones salvadoreños + + + libra siria + libra siria + libras sirias + + + lilangeni suazi + lilangeni suazi + lilangenis suazis + + + baht tailandés + baht tailandés + bahts tailandeses + THB + + + rublo tayiko + + + somoni tayiko + somoni tayiko + somonis tayikos + + + manat turcomano (1993–2009) + manat turcomano (1993–2009) + manats turcomanos (1993–2009) + + + manat turcomano + manat turcomano + manats turcomanos + + + dinar tunecino + dinar tunecino + dinares tunecinos + + + paʻanga tongano + paʻanga tongano + paʻangas tonganos + + + escudo timorense + + + lira turca (1922–2005) + lira turca (1922–2005) + liras turcas (1922–2005) + + + lira turca + lira turca + liras turcas + + + dólar de Trinidad y Tobago + dólar de Trinidad y Tobago + dólares de Trinidad y Tobago + + + nuevo dólar taiwanés + nuevo dólar taiwanés + nuevos dólares taiwaneses + TWD + + + chelín tanzano + chelín tanzano + chelines tanzanos + + + grivna ucraniana + grivnia ucraniana + grivnias ucranianas + + + karbovanet ucraniano + karbovanet ucraniano + karbovanets ucranianos + + + chelín ugandés (1966–1987) + + + chelín ugandés + chelín ugandés + chelines ugandeses + + + dólar estadounidense + dólar estadounidense + dólares estadounidenses + $ + + + dólar estadounidense (día siguiente) + dólar estadounidense (día siguiente) + dólares estadounidenses (día siguiente) + + + dólar estadounidense (mismo día) + dólar estadounidense (mismo día) + dólares estadounidenses (mismo día) + + + peso uruguayo en unidades indexadas + peso uruguayo en unidades indexadas + pesos uruguayos en unidades indexadas + + + peso uruguayo (1975–1993) + peso uruguayo (UYP) + pesos uruguayos (UYP) + + + peso uruguayo + peso uruguayo + pesos uruguayos + + + som uzbeko + som uzbeko + soms uzbekos + + + bolívar venezolano (1871–2008) + bolívar venezolano (1871–2008) + bolívares venezolanos (1871–2008) + + + bolívar venezolano + bolívar venezolano + bolívares venezolanos + + + dong vietnamita + dong vietnamita + dongs vietnamitas + VND + + + vatu vanuatuense + vatu vanuatuense + vatus vanuatuenses + + + tala samoano + tala samoano + talas samoanos + + + franco CFA BEAC + franco CFA BEAC + francos CFA BEAC + + + plata + plata + plata + + + oro + oro + oro + + + unidad compuesta europea + unidad compuesta europea + unidades compuestas europeas + + + unidad monetaria europea + unidad monetaria europea + unidades monetarias europeas + + + unidad de cuenta europea (XBC) + unidad de cuenta europea (XBC) + unidades de cuenta europeas (XBC) + + + unidad de cuenta europea (XBD) + unidad de cuenta europea (XBD) + unidades de cuenta europeas (XBD) + + + dólar del Caribe Oriental + dólar del Caribe Oriental + dólares del Caribe Oriental + EC$ + + + derechos especiales de giro + + + unidad de moneda europea + unidad de moneda europea + unidades de moneda europeas + + + franco oro francés + franco oro francés + francos oro franceses + + + franco UIC francés + franco UIC francés + francos UIC franceses + + + franco CFA BCEAO + franco CFA BCEAO + francos CFA BCEAO + XOF + + + paladio + paladio + paladio + + + franco CFP + franco CFP + francos CFP + XPF + + + platino + platino + platino + + + fondos RINET + + + código reservado para pruebas + + + divisa desconocida + moneda desconocida/no válida + monedas desconocidas/no válidas + + + dinar yemení + + + rial yemení + rial yemení + riales yemeníes + + + dinar fuerte yugoslavo + + + super dinar yugoslavo + + + dinar convertible yugoslavo + dinar convertible yugoslavo + dinares convertibles yugoslavos + + + rand sudafricano (financiero) + + + rand sudafricano + rand sudafricano + rands sudafricanos + + + kwacha zambiano (1968–2012) + kwacha zambiano (1968–2012) + kwachas zambianos (1968–2012) + + + kwacha zambiano + kwacha zambiano + kwachas zambianos + + + nuevo zaire zaireño + + + zaire zaireño + + + dólar de Zimbabue + + + dólar zimbabuense + + + + Más de {0} + {0}-{1} + + + + + + {0} por {1} + + + {0} unidad de fuerza gravitacional + {0} unidades de fuerza gravitacional + + + {0} minuto + {0} minutos + + + {0} segundo + {0} segundos + + + {0} grado + {0} grados + + + {0} acre + {0} acres + + + {0} hectárea + {0} hectáreas + + + {0} pie cuadrado + {0} pies cuadrados + + + {0} kilómetro cuadrado + {0} kilómetros cuadrados + + + {0} metro cuadrado + {0} metros cuadrados + + + {0} milla cuadrada + {0} millas cuadradas + + + {0} día + {0} días + + + {0} hora + {0} horas + + + {0} milisegundo + {0} milisegundos + + + {0} minuto + {0} minutos + + + {0} mes + {0} meses + + + {0} segundo + {0} segundos + + + {0} semana + {0} semanas + + + {0} año + {0} años + + + {0} centímetro + {0} centímetros + + + {0} pie + {0} pies + + + {0} pulgada + {0} pulgadas + + + {0} kilómetro + {0} kilómetros + + + {0} año luz + {0} años luz + + + {0} metro + {0} metros + + + {0} milla + {0} millas + + + {0} milímetro + {0} milímetros + + + {0} picómetro + {0} picómetros + + + {0} yarda + {0} yardas + + + {0} gramo + {0} gramos + + + {0} kilogramo + {0} kilogramos + + + {0} onza + {0} onzas + + + {0} libra + {0} libras + + + {0} caballo de vapor + {0} caballos de vapor + + + {0} kilovatio + {0} kilovatios + + + {0} vatio + {0} vatios + + + {0} hectopascal + {0} hectopascales + + + {0} pulgada de mercurio + {0} pulgadas de mercurio + + + {0} milibar + {0} milibares + + + {0} kilómetro por hora + {0} kilómetros por hora + + + {0} metro por segundo + {0} metros por segundo + + + {0} milla por hora + {0} millas por hora + + + {0} grado Celsius + {0} grados Celsius + + + {0} grado Fahrenheit + {0} grados Fahrenheit + + + {0} kilómetro cúbico + {0} kilómetros cúbicos + + + {0} milla cúbica + {0} millas cúbicas + + + {0} litro + {0} litros + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} día + {0} días + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} sem + {0} sem + + + {0} a + {0} a + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} a. l. + {0} a. l. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} CV + {0} CV + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}' + {0}' + + + {0}" + {0}" + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} semana + {0} sem + + + {0}a + {0} a + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} a. l. + {0} a. l. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} ° + {0} ° + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} y {1} + {0} y {1} + + + {0}, {1} + {0}, {1} + {0} y {1} + {0} y {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} y {1} + + + + + sí:s + no:n + + + + diff --git a/library/Zend/Locale/Data/es_419.xml b/library/Zend/Locale/Data/es_419.xml new file mode 100755 index 000000000..c0b91a2e7 --- /dev/null +++ b/library/Zend/Locale/Data/es_419.xml @@ -0,0 +1,232 @@ + + + + + + + + + + + + + Pastú + Uyghur + + + + + + + Números + + + Dígitos arábigo-índicos + Dígitos árabe-hindú extendidos + Números armenios + Números armenios en minúscula + Dígitos en bengalí + Calendario cóptico + Dígitos en devanagari + Orden de clasificación del diccionario + Orden de clasificación de Unicode predeterminado + Números etíopes + Calendario etíope + Calendario etíope Amete Alem + Dígitos en formato completo + Números georgianos + Números griegos + Números griegos en minúscula + Dígitos en guyaratí + Dígitos en gurumuji + Numerales decimales chinos + Números simplificados chinos + Números financieros simplificados chinos + Números chinos tradicionales + Números financieros chinos tradicionales + Números hebreos + Números en japonés + Números financieros japoneses + Dígitos en jemer + Dígitos en canarés + Dígitos de Lao + Dígitos occidentales + Dígitos malabares + Dígitos en mongol + Dígitos en birmano + Dígitos en oriya + Calendario persa + Orden de clasificación reformado + Números romanos + Números romanos en minúscula + Búsqueda generalizada + Números en Tamil + Dígitos en telugu + Dígitos en tailandés + Dígitos tibetanos + Orden de clasificación de trazos radicales + + + Numéricas + + + Reino Unido + + + + + + + + E d/M/y G + + + + + + + + 1 + 2 + 3 + 4 + + + + + + E d/M/y + + + + + + + Año pasado + Este año + Año próximo + + En {0} año + En {0} años + + + + El mes pasado + Este mes + Mes próximo + + En {0} mes + En {0} meses + + + + Semana pasada + Esta semana + Próxima semana + + En {0} semana + En {0} semanas + + + + + En {0} día + En {0} días + + + + + En {0} hora + En {0} horas + + + + + En {0} minuto + En {0} minutos + + + + + En {0} segundo + En {0} segundos + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + + + + + + + . + , + + + + + 0 + 0 + 00k + 00k + 000k + 000k + 0 M + 0 M + 00 M + 00 M + 000 M + 000 M + 0k M + 0k M + 00k M + 00k M + 000k M + 000k M + 0 B + 0 B + 00 B + 00 B + 000 B + 000 B + + + + + + + ¤#,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/es_AR.xml b/library/Zend/Locale/Data/es_AR.xml new file mode 100755 index 000000000..d49a87c4d --- /dev/null +++ b/library/Zend/Locale/Data/es_AR.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + E d-M + M-y G + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM 'de' y G + MMM 'de' y 'a' MMM 'de' y G + + + d-d 'de' MMM 'de' y G + d 'de' MMM 'al' d 'de' MMM 'de' y G + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y G + + + E d 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y G + + + + + + + + + HH'h'''mm:ss zzzz + + + + + + E d-M + M-y + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + ART + ART + ARST + + + + + WART + WART + WARST + + + + + + + , + . + + + + $ + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/es_BO.xml b/library/Zend/Locale/Data/es_BO.xml new file mode 100755 index 000000000..b45d02ed6 --- /dev/null +++ b/library/Zend/Locale/Data/es_BO.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + , + . + + + + Bs + + + + diff --git a/library/Zend/Locale/Data/es_CL.xml b/library/Zend/Locale/Data/es_CL.xml new file mode 100755 index 000000000..d1ac09ad5 --- /dev/null +++ b/library/Zend/Locale/Data/es_CL.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + mapudungun + + + Sudamérica + Antillas Holandesas + Azerbayán + Bangladesh + Sahara Occidental + Territorio Palestino + Rumania + Arabia Saudita + + + divisa + + + orden de directorio telefónico + + + + + + + + + dd-MM-y G + + + + + dd-MM-y GGGGG + + + + + + dd-MM + E, dd-MM + MM-y G + dd-MM-y G + E dd-MM-y G + + + {0} a el {1} + + d-d + + + h-h a + + + H-H + + + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h-h a v + + + H-H v + + + M-M + + + dd-MM - dd-MM + dd-MM - dd-MM + + + E dd-MM - E dd-MM + E dd-MM - E dd-MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y G + + + MM-y - MM-y G + MM-y - MM-y G + + + dd-MM-y - dd-MM-y G + dd-MM-y - dd-MM-y G + dd-MM-y - dd-MM-y G + + + E dd-MM-y - E dd-MM-y G + E dd-MM-y - E dd-MM-y G + E dd-MM-y - E dd-MM-y G + + + MMM-MMM 'de' y G + MMM 'de' y 'a' MMM 'de' y G + + + d-d 'de' MMM 'de' y G + d 'de' MMM 'al' d 'de' MMM 'de' y G + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y G + + + E d 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y G + + + + + + + + + dd-MM-y + + + + + dd-MM-yy + + + + + + dd-MM + E, dd-MM + MM-y + dd-MM-y + E dd-MM-y + + + {0} a el {1} + + d-d + + + h-h a + + + H-H + + + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h-h a v + + + H-H v + + + M-M + + + dd-MM - dd-MM + dd-MM - dd-MM + + + E dd-MM - E dd-MM + E dd-MM - E dd-MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM-y - MM-y + MM-y - MM-y + + + dd-MM-y - dd-MM-y + dd-MM-y - dd-MM-y + dd-MM-y - dd-MM-y + + + E dd-MM-y - E dd-MM-y + E dd-MM-y - E dd-MM-y + E dd-MM-y - E dd-MM-y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + , + . + + + + + ¤#,##0.00;¤-#,##0.00 + + + + + + $ + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/es_CO.xml b/library/Zend/Locale/Data/es_CO.xml new file mode 100755 index 000000000..9df33761b --- /dev/null +++ b/library/Zend/Locale/Data/es_CO.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + d/MM/y G + + + + + d/MM/yy GGGGG + + + + + + {0} a el {1} + + d-d + + + h-h a + + + H-H + + + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h-h a v + + + H-H v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + d/MM/y + + + + + d/MM/yy + + + + + + + h:mm:ss a (zzzz) + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + {0} a el {1} + + d-d + + + h-h a + + + H-H + + + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h-h a v + + + H-H v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + , + . + + + + $ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/es_CR.xml b/library/Zend/Locale/Data/es_CR.xml new file mode 100755 index 000000000..72b335dba --- /dev/null +++ b/library/Zend/Locale/Data/es_CR.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + , + . + + + + + + + + diff --git a/library/Zend/Locale/Data/es_CU.xml b/library/Zend/Locale/Data/es_CU.xml new file mode 100755 index 000000000..21a1dc05b --- /dev/null +++ b/library/Zend/Locale/Data/es_CU.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + $ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/es_DO.xml b/library/Zend/Locale/Data/es_DO.xml new file mode 100755 index 000000000..5d67767ae --- /dev/null +++ b/library/Zend/Locale/Data/es_DO.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + $ + + + US$ + + + + diff --git a/library/Zend/Locale/Data/es_EA.xml b/library/Zend/Locale/Data/es_EA.xml new file mode 100755 index 000000000..b03101441 --- /dev/null +++ b/library/Zend/Locale/Data/es_EA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es_EC.xml b/library/Zend/Locale/Data/es_EC.xml new file mode 100755 index 000000000..5dc22a70e --- /dev/null +++ b/library/Zend/Locale/Data/es_EC.xml @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + {0} a el {1} + + d-d + + + h-h a + + + H-H + + + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h-h a v + + + H-H v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + {0} a el {1} + + d-d + + + h-h a + + + H-H + + + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h-h a v + + + H-H v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + , + . + + + + + ¤#,##0.00;¤-#,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/es_ES.xml b/library/Zend/Locale/Data/es_ES.xml new file mode 100755 index 000000000..aa1b8f37c --- /dev/null +++ b/library/Zend/Locale/Data/es_ES.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es_GQ.xml b/library/Zend/Locale/Data/es_GQ.xml new file mode 100755 index 000000000..e9b925193 --- /dev/null +++ b/library/Zend/Locale/Data/es_GQ.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + ¤#,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/es_GT.xml b/library/Zend/Locale/Data/es_GT.xml new file mode 100755 index 000000000..4605a2226 --- /dev/null +++ b/library/Zend/Locale/Data/es_GT.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + d/MM/y G + + + + + d/MM/yy GGGGG + + + + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + d/MM/y + + + + + d/MM/yy + + + + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + + Q + + + + diff --git a/library/Zend/Locale/Data/es_HN.xml b/library/Zend/Locale/Data/es_HN.xml new file mode 100755 index 000000000..9b38b1799 --- /dev/null +++ b/library/Zend/Locale/Data/es_HN.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + EEEE dd 'de' MMMM 'de' y G + + + + + dd 'de' MMMM 'de' y G + + + + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd 'de' MMM + dd 'de' MMM 'al' dd 'de' MMM + + + E dd 'al' E dd 'de' MMM + E dd 'de' MMM 'al' E dd 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + dd-dd 'de' MMM 'de' y + dd 'de' MMM 'al' dd 'de' MMM 'de' y + dd 'de' MMM 'de' y 'al' dd 'de' MMM 'de' y + + + E dd 'al' E dd 'de' MMM 'de' y + E dd 'de' MMM 'al' E dd 'de' MMM 'de' y + E dd 'de' MMM 'de' y 'al' E dd 'de' MMM 'de' y + + + + + + + + + EEEE dd 'de' MMMM 'de' y + + + + + dd 'de' MMMM 'de' y + + + + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd 'de' MMM + dd 'de' MMM 'al' dd 'de' MMM + + + E dd 'al' E dd 'de' MMM + E dd 'de' MMM 'al' E dd 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + dd-dd 'de' MMM 'de' y + dd 'de' MMM 'al' dd 'de' MMM 'de' y + dd 'de' MMM 'de' y 'al' dd 'de' MMM 'de' y + + + E dd 'al' E dd 'de' MMM 'de' y + E dd 'de' MMM 'al' E dd 'de' MMM 'de' y + E dd 'de' MMM 'de' y 'al' E dd 'de' MMM 'de' y + + + + + + + + + + L + + + + diff --git a/library/Zend/Locale/Data/es_IC.xml b/library/Zend/Locale/Data/es_IC.xml new file mode 100755 index 000000000..f46f53b86 --- /dev/null +++ b/library/Zend/Locale/Data/es_IC.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es_MX.xml b/library/Zend/Locale/Data/es_MX.xml new file mode 100755 index 000000000..986c496fe --- /dev/null +++ b/library/Zend/Locale/Data/es_MX.xml @@ -0,0 +1,4940 @@ + + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abjasio + afrikáans + amárico + árabe + árabe estándar moderno + asamés + azerbaiyano + azerí + bielorruso + búlgaro + bengalí + tibetano + bosnio + catalán + checo + galés + danés + alemán + alemán austríaco + alto alemán suizo + griego + inglés + inglés australiano + inglés canadiense + inglés británico + inglés estadounidense + esperanto + español + español latinoamericano + español de España + español de México + estonio + vasco + persa + finés + filipino + fiyiano + feroés + francés + francés canadiense + francés suizo + frisón occidental + irlandés + gallego + guaraní + alemán suizo + gujarati + hausa + hawaiano + hebreo + hindi + croata + haitiano + húngaro + armenio + indonesio + igbo + islandés + italiano + japonés + ngomba + javanés + georgiano + kazajo + jemer + canarés + coreano + cachemiro + kurdo + kirguís + latín + luxemburgués + laosiano + lituano + letón + malgache + meta' + maorí + macedonio + malayalam + maratí + malayo + maltés + birmano + bokmal noruego + nepalí + ndonga + neerlandés + flamenco + nynorsk noruego + oriya + panyabí + polaco + pastún + pashto + portugués + portugués de Brasil + portugués de Portugal + quechua + romanche + rumano + ruso + sánscrito + sindhi + cingalés + eslovaco + esloveno + somalí + albanés + serbio + sondanés + sueco + swahili + tamil + telugu + tayiko + tailandés + tigriña + turcomano + tongano + turco + tártaro + uigur + uyghur + ucraniano + lengua desconocida + urdu + uzbeko + vietnamita + wólof + xhosa + yoruba + tamazight estándar marroquí + chino + chino simplificado + chino tradicional + zulú + sin contenido lingüístico + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundo + África + América del Norte + Sudamérica + Oceanía + África Occidental + Centroamérica + África Oriental + África del Norte + África Central + África del Sur + Américas + América Septentrional + Caribe + Asia Oriental + Asia del Sur + Sudeste Asiático + Europa del Sur + Australasia + Melanesia + Región de Micronesia + Polinesia + Asia + Asia Central + Asia Occidental + Europa + Europa Oriental + Europa del Norte + Europa Occidental + Latinoamérica + Isla Ascensión + Andorra + Emiratos Árabes Unidos + Afganistán + Antigua y Barbuda + Anguila + Albania + Armenia + Angola + Antártida + Argentina + Samoa Americana + Austria + Australia + Aruba + Islas Åland + Azerbaiyán + Bosnia-Herzegovina + Barbados + Bangladesh + Bélgica + Burkina Faso + Bulgaria + Baréin + Burundi + Benín + San Bartolomé + Bermudas + Brunéi + Bolivia + Caribe neerlandés + Brasil + Bahamas + Bután + Isla Bouvet + Botsuana + Bielorrusia + Belice + Canadá + Islas Cocos (Keeling) + República Democrática del Congo + Congo (República Democrática del Congo) + República Centroafricana + Congo Brazzaville + Congo (República) + Suiza + Costa de Marfil + Islas Cook + Chile + Camerún + China + Colombia + Isla Clipperton + Costa Rica + Cuba + Cabo Verde + Curazao + Isla de Navidad + Chipre + República Checa + Alemania + Diego García + Yibuti + Dinamarca + Dominica + República Dominicana + Argelia + Ceuta y Melilla + Ecuador + Estonia + Egipto + Sáhara Occidental + Eritrea + España + Etiopía + Unión Europea + Finlandia + Fiyi + Islas Malvinas + Islas Malvinas (Islas Falkland) + Micronesia + Islas Feroe + Francia + Gabón + Reino Unido + Granada + Georgia + Guayana Francesa + Guernsey + Ghana + Gibraltar + Groenlandia + Gambia + Guinea + Guadalupe + Guinea Ecuatorial + Grecia + Islas Georgias del Sur y Sandwich del Sur + Guatemala + Guam + Guinea-Bissau + Guyana + Región Administrativa Especial de Hong Kong de la República Popular China + Hong Kong + Islas Heard y McDonald + Honduras + Croacia + Haití + Hungría + Islas Canarias + Indonesia + Irlanda + Israel + Isla de Man + India + Territorio Británico del Océano Índico + Irak + Irán + Islandia + Italia + Jersey + Jamaica + Jordania + Japón + Kenia + Kirguistán + Camboya + Kiribati + Comoras + San Cristóbal y Nieves + Corea del Norte + Corea del Sur + Kuwait + Islas Caimán + Kazajistán + Laos + Líbano + Santa Lucía + Liechtenstein + Sri Lanka + Liberia + Lesoto + Lituania + Luxemburgo + Letonia + Libia + Marruecos + Mónaco + Moldavia + Montenegro + San Martín + Madagascar + Islas Marshall + Macedonia + Macedonia (ERYM) + Mali + Myanmar (Birmania) + Mongolia + Región Administrativa Especial de Macao de la República Popular China + Macao + Islas Marianas del Norte + Martinica + Mauritania + Montserrat + Malta + Mauricio + Maldivas + Malaui + México + Malasia + Mozambique + Namibia + Nueva Caledonia + Níger + Isla Norfolk + Nigeria + Nicaragua + Países Bajos + Noruega + Nepal + Nauru + Niue + Nueva Zelanda + Omán + Panamá + Perú + Polinesia Francesa + Papúa Nueva Guinea + Filipinas + Pakistán + Polonia + San Pedro y Miquelón + Islas Pitcairn + Puerto Rico + Territorios Palestinos + Palestina + Portugal + Palaos + Paraguay + Qatar + Islas Ultramarinas + Reunión + Rumanía + Serbia + Rusia + Ruanda + Arabia Saudí + Islas Salomón + Seychelles + Sudán + Suecia + Singapur + Santa Elena + Eslovenia + Svalbard y Jan Mayen + Eslovaquia + Sierra Leona + San Marino + Senegal + Somalia + Surinam + Sudán del Sur + Santo Tomé y Príncipe + El Salvador + Sint Maarten + Siria + Suazilandia + Tristán de Acuña + Islas Turcas y Caicos + Chad + Territorios Australes Franceses + Togo + Tailandia + Tayikistán + Tokelau + Timor Oriental + Turkmenistán + Túnez + Tonga + Turquía + Trinidad y Tobago + Tuvalu + Taiwán + Tanzania + Ucrania + Uganda + Islas UltramarinasMenores de Estados Unidos + Estados Unidos + EE. UU. + Uruguay + Uzbekistán + Ciudad del Vaticano + San Vicente y las Granadinas + Venezuela + Islas Vírgenes Británicas + Islas Vírgenes de los Estados Unidos + Vietnam + Vanuatu + Wallis y Futuna + Samoa + Kosovo + Yemen + Mayotte + Sudáfrica + Zambia + Zimbabue + Región desconocida + + + Calendario + Intercalación + Moneda + Números + + + Dígitos en arábigo-índico + Dígitos en árabigo-índico extendido + Números en armenio + Números en armenio en minúscula + Dígitos en bengalí + Dígitos en devanagari + Orden de clasificación de Unicode predeterminado + Números en etíope + Dígitos en formato completo + Números en georgiano + Calendario gregoriano + Números en griego + Números en griego en minúscula + Dígitos en guyaratí + Dígitos en gurmuji + Numeros decimales en chino + Números en chino simplificado + Números financieros en chino simplificado + Números en chino tradicional + Números financieros en chino tradicional + Números en hebreo + Números en japonés + Números financieros en japonés + Dígitos en jemer + Dígitos en canarés + Dígitos en lao + Dígitos occidentales + Dígitos en malabar + Dígitos en birmano + Dígitos en oriya + Números romanos + Números romanos en minúscula + Búsqueda generalizada + Orden estándar + Números en tamil + Dígitos en tamil + Dígitos en telugú + Dígitos en tailandés + Dígitos en tibetano + Orden tradicional + + + métrico + Reino Unido + estadounidense + + + Idioma: {0} + Dialecto: {0} + Región: {0} + + + + {0}… + … {0} + {0}… {1} + {0}… + … {0} + {0}… {1} + [...] + + + « + » + + + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + d MMM, y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} {0} + + + + + {1}, {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E, d 'de' MMMM 'de' y G + L + d/M + E, d/M + LLL + d MMM + E d MMM + d 'de' MMM + y G + E d/M/y G + y G + M/y GGGGG + d/M/y GGGGG + E, d/M/y GGGGG + MMM y G + d MMM y G + E, d 'de' MMMM 'de' y G + MMMM 'de' y G + QQQ y G + QQQQ 'de' y G + + + {0} – {1} + + d–d + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M–E, d/M + E, d/M–E, d/M + + + MMM–MMM + + + d–d 'de' MMM + d 'de' MMM–d 'de' MMM + + + E, d 'de' MMM–E, d 'de' MMM + E, d 'de' MMM–E, d 'de' MMM + + + y–y G + + + M/y – M/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y–E, d/M/y G + E, d/M/y–E, d/M/y G + E, d/M/y–E, d/M/y G + + + MMM–MMM 'de' y G + MMM 'de' y–MMM 'de' y G + + + d–d 'de' MMM 'de' y G + d 'de' MMM–d 'de' MMM y G + d 'de' MMM 'de' y–d 'de' MMM 'de' y G + + + E, d 'de' MMM–E, d 'de' MMM 'de' y G + E, d 'de' MMM–E, d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y–E, d 'de' MMM 'de' y G + + + MMMM–MMMM 'de' y G + MMMM 'de' y–MMMM 'de' y G + + + + + + + + + ene. + febr. + mzo. + abr. + my. + jun. + jul. + ag. + set. + oct. + nov. + dic. + + + E + F + Ma + A + My + Jn + Jl + Ag + S + O + N + D + + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + + + + en. + febr. + mzo. + abr. + my. + jun + jul + ag. + set. + oct. + nov. + dic. + + + E + F + Ma + A + My + Jn + Jl + Ag + S + O + N + D + + + enero + febrero + marzo + abril + mayo + junio + julio + agosto + septiembre + octubre + noviembre + diciembre + + + + + + + dom. + lun. + mar. + miér. + jue. + vier. + sáb + + + D + L + M + X + J + V + S + + + do. + lu. + ma. + mi. + ju. + vi. + sá. + + + domingo + lunes + martes + miércoles + jueves + viernes + sábado + + + + + dom. + lun + mar. + mié. + jue. + vie + sáb. + + + D + L + M + X + J + V + S + + + do. + lu. + ma. + mi. + ju. + vi. + sá. + + + domingo + lunes + martes + miércoles + jueves + viernes + sábado + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1.er trimestre + 2.º trimestre + 3.er trimestre + 4.º trimestre + + + + + T1 + T2 + T3 + T4 + + + 1T + 2T + 3T + 4T + + + 1.er trimestre + 2.º trimestre + 3.er trimestre + 4.º trimestre + + + + + + + a.m. + p.m. + + + + + + a.C. + a. e. c. + d.C. + e. c. + + + + + + EEEE, d 'de' MMMM 'de' y + + + + + d 'de' MMMM 'de' y + + + + + dd/MM/y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E H:mm + E h:mm:ss a + E H:mm:ss + y G + MMM y G + d MMM y G + E, d 'de' MMMM 'de' y G + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d/M + E, d/M + d/MM + dd/MM + LLL + d 'de' MMM + dd-MMM + E d 'de' MMM + d 'de' MMMM + mm:ss + y + M/y + d/M/y + E d/M/y + MM/y + MMM 'de' y + d 'de' MMM 'de' y + EEE, d 'de' MMMM 'de' y + MMMM 'de' y + QQQ y + QQQQ 'de' y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E d/M – E d/M + E d/M – E d/M + + + MMM–MMM + + + d–d 'de' MMM + d 'de' MMM – d 'de' MMM + + + E d 'de' MMM – E d 'de' MMM + E d 'de' MMM – E d 'de' MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E d/M/y – E d/M/y + E d/M/y – E d/M/y + E d/M/y – E d/M/y + + + MMM–MMM 'de' y + MMM 'de' y – MMM 'de' y + + + d–d 'de' MMM 'de' y + d 'de' MMM – d 'de' MMM y + d 'de' MMM 'de' y – d 'de' MMM 'de' y + + + E d 'de' MMM – E d 'de' MMM 'de' y + E d 'de' MMM – E d 'de' MMM 'de' y + E d 'de' MMM 'de' y – E d 'de' MMM 'de' y + + + MMMM–MMMM 'de' y + MMMM 'de' y – MMMM 'de' y + + + + + + + + era + + + Año + el año pasado + este año + el año próximo + + En {0} año + En {0} años + + + + Mes + el mes pasado + este mes + el mes próximo + + + Semana + la semana pasada + esta semana + la semana próxima + + En {0} semana + En {0} semanas + + + + Día + antes de ayer + ayer + hoy + mañana + pasado mañana + + En {0} día + En {0} días + + + + Día de la semana + + + el domingo pasado + este domingo + el domingo próximo + + + el lunes pasado + este lunes + el lunes próximo + + + el martes pasado + este martes + el martes próximo + + + el miércoles pasado + este miércoles + el miércoles próximo + + + el jueves pasado + este jueves + el jueves próximo + + + el viernes pasado + este viernes + el viernes próximo + + + el sábado pasado + este sábado + el sábado próximo + + + a.m./p.m. + + + Hora + + En {0} hora + En {0} horas + + + + Minuto + + En {0} minuto + En {0} minutos + + + + Segundo + + En {0} segundo + En {0} segundos + + + + Zona horaria + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Hora de {0} + (horario de verano de {0}) + (horario estándar de {0}) + {1} ({0}) + + Ciudad desconocida + + + Andorra + + + Dubái + + + Kabul + + + Antigua + + + Anguila + + + Tirana + + + Ereván + + + Luanda + + + Rothera + + + Palmer + + + Syowa + + + Mawson + + + Davis + + + Vostok + + + Casey + + + Dumont d'Urville + + + McMurdo + + + Río Gallegos + + + Mendoza + + + San Juan + + + Ushuaia + + + La Rioja + + + San Luis + + + Catamarca + + + Salta + + + Jujuy + + + Tucumán + + + Córdoba + + + Buenos Aires + + + Pago Pago + + + Viena + + + Perth + + + Eucla + + + Darwin + + + Adelaida + + + Broken Hill + + + Currie + + + Melbourne + + + Hobart + + + Lindeman + + + Sídney + + + Brisbane + + + Macquarie + + + Lord Howe + + + Aruba + + + Mariehamn + + + Bakú + + + Sarajevo + + + Barbados + + + Daca + + + Bruselas + + + Uagadugú + + + Sofía + + + Baréin + + + Buyumbura + + + Portonovo + + + San Bartolomé + + + Bermudas + + + Brunéi + + + La Paz + + + Kralendijk + + + Eirunepé + + + Rio Branco + + + Porto Velho + + + Boa Vista + + + Manaos + + + Cuiabá + + + Santarém + + + Campo Grande + + + Belém + + + Araguaína + + + São Paulo + + + Bahía + + + Fortaleza + + + Maceió + + + Recife + + + Noronha + + + Nassau + + + Timbu + + + Gaborone + + + Minsk + + + Belice + + + Dawson + + + Whitehorse + + + Inuvik + + + Vancouver + + + Dawson Creek + + + Creston + + + Yellowknife + + + Edmonton + + + Swift Current + + + Cambridge Bay + + + Regina + + + Winnipeg + + + Resolute + + + Rainy River + + + Rankin Inlet + + + Atikokan + + + Thunder Bay + + + Nipigon + + + Toronto + + + Iqaluit + + + Pangnirtung + + + Moncton + + + Halifax + + + Goose Bay + + + Glace Bay + + + Blanc-Sablon + + + San Juan de Terranova + + + Cocos + + + Kinshasa + + + Lubumbashi + + + Bangui + + + Brazzaville + + + Zúrich + + + Abiyán + + + Rarotonga + + + Isla de Pascua + + + Santiago + + + Duala + + + Kasgar + + + Ürümqi + + + Chongqing + + + Shanghái + + + Harbin + + + Bogotá + + + Costa Rica + + + La Habana + + + Cabo Verde + + + Curazao + + + Navidad + + + Nicosia + + + Praga + + + Büsingen + + + Berlín + + + Yibuti + + + Copenhague + + + Dominica + + + Santo Domingo + + + Argel + + + Galápagos + + + Guayaquil + + + Tallin + + + El Cairo + + + El Aaiún + + + Asmara + + + Islas Canarias + + + Ceuta + + + Madrid + + + Addis Abeba + + + Helsinki + + + Fiyi + + + Stanley + + + Chuuk + + + Pohnpei + + + Kosrae + + + Islas Feroe + + + París + + + Libreville + + + + Hora de verano británica + + Londres + + + Granada + + + Tiflis + + + Cayena + + + Guernsey + + + Acra + + + Gibraltar + + + Thule + + + Nuuk + + + Ittoqqortoormiit + + + Danmarkshavn + + + Banjul + + + Conakri + + + Guadalupe + + + Malabo + + + Atenas + + + Georgia del Sur + + + Guatemala + + + Guam + + + Bisáu + + + Guyana + + + Hong Kong + + + Tegucigalpa + + + Zagreb + + + Puerto Príncipe + + + Budapest + + + Yakarta + + + Pontianak + + + Makasar + + + Jayapura + + + + Hora de verano irlandesa + + Dublín + + + Jerusalén + + + Isla de Man + + + Calcuta + + + Chagos + + + Bagdad + + + Teherán + + + Reikiavik + + + Roma + + + Jersey + + + Jamaica + + + Ammán + + + Tokio + + + Nairobi + + + Bishkek + + + Phnom Penh + + + Enderbury + + + Kiritimati + + + Tarawa + + + Comoras + + + San Cristóbal + + + Piongyang + + + Seúl + + + Kuwait + + + Caimán + + + Aktau + + + Oral + + + Aktobe + + + Kyzylorda + + + Almatý + + + Vientián + + + Beirut + + + Santa Lucía + + + Vaduz + + + Colombo + + + Monrovia + + + Maseru + + + Vilna + + + Luxemburgo + + + Riga + + + Trípoli + + + Mónaco + + + Chisináu + + + Podgorica + + + Marigot + + + Antananarivo + + + Kwajalein + + + Majuro + + + Skopie + + + Bamako + + + Rangún + + + Hovd + + + Ulán Bator + + + Choybalsan + + + Macao + + + Saipán + + + Martinica + + + Nuakchot + + + Montserrat + + + Malta + + + Mauricio + + + Maldivas + + + Blantyre + + + Tijuana + + + Santa Isabel + + + Hermosillo + + + Mazatlán + + + Chihuahua + + + Bahía de Banderas + + + Ojinaga + + + Monterrey + + + Ciudad de México + + + Matamoros + + + Mérida + + + Cancún + + + Kuala Lumpur + + + Kuching + + + Maputo + + + Windhoek + + + Numea + + + Niamey + + + Norfolk + + + Lagos + + + Managua + + + Ámsterdam + + + Oslo + + + Katmandú + + + Nauru + + + Niue + + + Chatham + + + Auckland + + + Mascate + + + Panamá + + + Lima + + + Tahití + + + Marquesas + + + Gambier + + + Port Moresby + + + Manila + + + Karachi + + + Varsovia + + + Miquelón + + + Pitcairn + + + Puerto Rico + + + Gaza + + + Hebrón + + + Azores + + + Madeira + + + Lisboa + + + Palaos + + + Asunción + + + Qatar + + + Reunión + + + Bucarest + + + Belgrado + + + Kaliningrado + + + Moscú + + + Volgogrado + + + Samara + + + Ekaterinburgo + + + Omsk + + + Novosibirsk + + + Novokuznetsk + + + Krasnoyarsk + + + Irkutsk + + + Yakutsk + + + Vladivostok + + + Khandyga + + + Sajalín + + + Ust-Nera + + + Magadán + + + Kamchatka + + + Anádyr + + + Kigali + + + Riad + + + Guadalcanal + + + Mahé + + + Jartum + + + Estocolmo + + + Singapur + + + Santa Helena + + + Liubliana + + + Longyearbyen + + + Bratislava + + + Freetown + + + San Marino + + + Dakar + + + Mogadiscio + + + Paramaribo + + + Juba + + + Santo Tomé + + + El Salvador + + + Lower Prince's Quarter + + + Damasco + + + Mbabane + + + Gran Turca + + + Yamena + + + Kerguelen + + + Lomé + + + Bangkok + + + Dusambé + + + Fakaofo + + + Dili + + + Asjabad + + + Túnez + + + Tongatapu + + + Estambul + + + Puerto España + + + Funafuti + + + Taipéi + + + Dar es-Salaam + + + Úzhgorod + + + Kiev + + + Simferópol + + + Zaporiyia + + + Kampala + + + Midway + + + Johnston + + + Wake + + + Adak + + + Nome + + + Honolulu + + + Anchorage + + + Yakutat + + + Sitka + + + Juneau + + + Metlakatla + + + Los Ángeles + + + Boise + + + Phoenix + + + Denver + + + Beulah, Dakota del Norte + + + New Salem, Dakota del Norte + + + Center, Dakota del Norte + + + Chicago + + + Menominee + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Indianápolis + + + Louisville + + + Vevay, Indiana + + + Monticello, Kentucky + + + Detroit + + + Nueva York + + + Montevideo + + + Samarcanda + + + Taskent + + + El Vaticano + + + San Vicente + + + Caracas + + + Tórtola + + + St. Thomas + + + Ciudad Ho Chi Minh + + + Efate + + + Wallis + + + Apia + + + Adén + + + Mayotte + + + Johannesburgo + + + Lusaka + + + Harare + + + + Hora de Afganistán + + + + + Hora de Sudáfrica + + + + + Hora de África Occidental + Hora estándar de África Occidental + Hora de verano de África Occidental + + + + + Hora de Alaska + Hora estándar de Alaska + Hora de verano de Alaska + + + + + Hora del Amazonas + Hora estándar del Amazonas + Hora de verano del Amazonas + + + + + Hora del centro de Norteamérica + Hora estándar del centro de Norteamérica + Hora de verano del centro de Norteamérica + + + + + Hora del este de Norteamérica + Hora estándar del este de Norteamérica + Hora de verano del este de Norteamérica + + + + + Hora de la montaña de Norteamérica + Hora estándar de la montaña de Norteamérica + Hora de verano de la montaña de Norteamérica + + + + + Hora del Pacífico de Norteamérica + Hora estándar del Pacífico de Norteamérica + Hora de verano del Pacífico de Norteamérica + + + + + Hora de Arabia + Hora estándar de Arabia + Hora de verano de Arabia + + + + + Hora de Argentina + Hora estándar de Argentina + Hora de verano de Argentina + + + + + Hora de Argentina Occidental + Hora estándar de Argentina Occidental + Hora de verano de Argentina Occidental + + + + + Hora de Armenia + Hora estándar de Armenia + Hora de verano de Armenia + + + + + Hora del Atlántico + Hora estándar del Atlántico + Hora de verano del Atlántico + + + + + Hora de Australia Central + Hora estándar de Australia Central + Hora de verano de Australia Central + + + + + Hora de Australia Centroccidental + Hora estándar de Australia Centroccidental + Hora de verano de Australia Centroccidental + + + + + Hora de Australia Oriental + Hora estándar de Australia Oriental + Hora de verano de Australia Oriental + + + + + Hora de Australia Occidental + Hora estándar de Australia Occidental + Hora de verano de Australia Occidental + + + + + Hora de Azerbaiyán + Hora estándar de Azerbaiyán + Hora de verano de Azerbaiyán + + + + + Hora de las Azores + Hora estándar de las Azores + Hora de verano de las Azores + + + + + Hora de Bangladesh + Hora estándar de Bangladesh + Hora de verano de Bangladesh + + + + + Hora de Bután + + + + + Hora de Bolivia + + + + + Hora de Brasilia + Hora estándar de Brasilia + Hora de verano de Brasilia + + + + + Hora de Brunéi + + + + + Hora de Cabo Verde + Hora estándar de Cabo Verde + Hora de verano de Cabo Verde + + + + + Hora estándar de Chamorro + + + + + Hora de Chatham + Hora estándar de Chatham + Hora de verano de Chatham + + + + + Hora de Chile + Hora estándar de Chile + Hora de verano de Chile + + + + + Hora de China + Hora estándar de China + Hora de verano de China + + + + + Hora de Choybalsan + Hora estándar de Choybalsan + Hora de verano de Choybalsan + + + + + Hora de la isla de Navidad + + + + + Hora de las islas Cocos + + + + + Hora de Colombia + Hora estándar de Colombia + Hora de verano de Colombia + + + + + Hora de las islas Cook + Hora estándar de las islas Cook + Hora de verano media de las islas Cook + + + + + Hora de Cuba + Hora estándar de Cuba + Hora de verano de Cuba + + + + + Hora de Davis + + + + + Hora de Dumont-d’Urville + + + + + Hora de Timor Oriental + + + + + Hora de la isla de Pascua + Hora estándar de la isla de Pascua + Hora de verano de la isla de Pascua + + + + + Hora de Ecuador + + + + + Hora de Europa Central + Hora estándar de Europa Central + Hora de verano de Europa Central + + + + + Hora de Europa del Este + Hora estándar de Europa del Este + Hora de verano de Europa del Este + + + + + Hora de Europa Occidental + Hora estándar de Europa Occidental + Hora de verano de Europa Occidental + + + + + Hora de las islas Malvinas + Hora estándar de las islas Malvinas + Hora de verano de las islas Malvinas + + + + + Hora de Fiyi + Hora estándar de Fiyi + Hora de verano de Fiyi + + + + + Hora de la Guayana Francesa + + + + + Hora de las Tierras Australes y Antárticas Francesas + + + + + Hora de Galápagos + + + + + Hora de Gambier + + + + + Hora de Georgia + Hora estándar de Georgia + Hora de verano de Georgia + + + + + Hora de las islas Gilbert + + + + + Hora del meridiano de Greenwich + + + + + Hora de Groenlandia Oriental + Hora estándar de Groenlandia Oriental + Hora de verano de Groenlandia Oriental + + + + + Hora de Groenlandia Occidental + Hora estándar de Groenlandia Occidental + Hora de verano de Groenlandia Occidental + + + + + Hora estándar del Golfo + + + + + Hora de Guyana + + + + + Hora de Hawái-Aleutiano + Hora estándar de Hawái-Aleutiano + Hora de verano de Hawái-Aleutiano + + + + + Hora de Hong Kong + Hora estándar de Hong Kong + Hora de verano de Hong Kong + + + + + Hora de Hovd + Hora estándar de Hovd + Hora de verano de Hovd + + + + + Hora estándar de la India + + + + + Hora del Océano Índico + + + + + Hora de Indochina + + + + + Hora de Indonesia Central + + + + + Hora de Indonesia Oriental + + + + + Hora de Indonesia Occidental + + + + + Hora de Irán + Hora estándar de Irán + Hora de verano de Irán + + + + + Hora de Irkutsk + Hora estándar de Irkutsk + Hora de verano de Irkutsk + + + + + Hora de Israel + Hora estándar de Israel + Hora de verano de Israel + + + + + Hora de Japón + Hora estándar de Japón + Hora de verano de Japón + + + + + Hora de Kazajistán Oriental + + + + + Hora de Kazajistán Occidental + + + + + Hora de Corea + Hora estándar de Corea + Hora de verano de Corea + + + + + Hora de Kosrae + + + + + Hora de Krasnoyarsk + Hora estándar de Krasnoyarsk + Hora de verano de Krasnoyarsk + + + + + Hora de Kirguistán + + + + + Hora de las Espóradas Ecuatoriales + + + + + Hora de Lord Howe + Hora estándar de Lord Howe + Hora de verano de Lord Howe + + + + + Hora de la isla Macquarie + + + + + Hora de Magadán + Hora estándar de Magadán + Hora de verano de Magadán + + + + + Hora de Malasia + + + + + Hora de Maldivas + + + + + Hora de las islas Marquesas + + + + + Hora de las Islas Marshall + + + + + Hora de Mauricio + Hora estándar de Mauricio + Hora de verano de Mauricio + + + + + Hora de Mawson + + + + + Hora del noroeste + Hora estándar del noroeste + Hora de verano del noroeste + + + + + Hora del Pacífico + Hora estándar del Pacífico + Hora de verano del Pacífico + + + + + Hora de Ulán Bator + Hora estándar de Ulán Bator + Hora de verano de Ulán Bator + + + + + Hora de Moscú + Hora estándar de Moscú + Hora de verano de Moscú + + + + + Hora de Myanmar + + + + + Hora de Nauru + + + + + Hora de Nepal + + + + + Hora de Nueva Caledonia + Hora estándar de Nueva Caledonia + Hora de verano de Nueva Caledonia + + + + + Hora de Nueva Zelanda + Hora estándar de Nueva Zelanda + Hora de verano de Nueva Zelanda + + + + + Hora de Terranova + Hora estándar de Terranova + Hora de verano de Terranova + + + + + Hora de Niue + + + + + Hora de las islas Norfolk + + + + + Hora de Fernando de Noronha + Hora estándar de Fernando de Noronha + Hora de verano de Fernando de Noronha + + + + + Hora de Novosibirsk + Hora estándar de Novosibirsk + Hora de verano de Novosibirsk + + + + + Hora de Omsk + Hora estándar de Omsk + Hora de verano de Omsk + + + + + Hora de Pakistán + Hora estándar de Pakistán + Hora de verano de Pakistán + + + + + Hora de Palaos + + + + + Hora de Papúa Nueva Guinea + + + + + Hora de Paraguay + Hora estándar de Paraguay + Hora de verano de Paraguay + + + + + Hora de Perú + Hora estándar de Perú + Hora de verano de Perú + + + + + Hora de Filipinas + Hora estándar de Filipinas + Hora de verano de Filipinas + + + + + Hora de las islas Fénix + + + + + Hora de San Pedro y Miquelón + Hora estándar de San Pedro y Miquelón + Hora de verano de San Pedro y Miquelón + + + + + Hora de Pitcairn + + + + + Hora de Pohnpei + + + + + Hora de Reunión + + + + + Hora de Rothera + + + + + Hora de Sajalín + Hora estándar de Sajalín + Hora de verano de Sajalín + + + + + Hora de Samoa + Hora estándar de Samoa + Hora de verano de Samoa + + + + + Hora de Seychelles + + + + + Hora de Singapur + + + + + Hora de las islas Salomón + + + + + Hora de Georgia meridional + + + + + Hora de Surinam + + + + + Hora de Syowa + + + + + Hora de Tahití + + + + + Hora de Taipéi + Hora estándar de Taipéi + Hora de verano de Taipéi + + + + + Hora de Tayikistán + + + + + Hora de Tokelau + + + + + Hora de Tonga + Hora estándar de Tonga + Hora de verano de Tonga + + + + + Hora de Chuuk + + + + + Hora de Turkmenistán + Hora estándar de Turkmenistán + Hora de verano de Turkmenistán + + + + + Hora de Tuvalu + + + + + Hora de Uruguay + Hora estándar de Uruguay + Hora de verano de Uruguay + + + + + Hora de Uzbekistán + Hora estándar de Uzbekistán + Hora de verano de Uzbekistán + + + + + Hora de Vanuatu + Hora estándar de Vanuatu + Hora de verano de Vanuatu + + + + + Hora de Venezuela + + + + + Hora de Vladivostok + Hora estándar de Vladivostok + Hora de verano de Vladivostok + + + + + Hora de Volgogrado + Hora estándar de Volgogrado + Hora de verano de Volgogrado + + + + + Hora de Vostok + + + + + Hora de la isla Wake + + + + + Hora de Wallis y Futuna + + + + + Hora de Yakutsk + Hora estándar de Yakutsk + Hora de verano de Yakutsk + + + + + Hora de Ekaterimburgo + Hora estándar de Ekaterimburgo + Hora de verano de Ekaterimburgo + + + + + + + . + , + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 millón + 0 millones + 00 millones + 00 millones + 000 millones + 000 millones + 0 mil millones + 0 mil millones + 00 mil millones + 00 mil millones + 000 mil millones + 000 mil millones + 0 billón + 0 billones + 00 billones + 00 billones + 000 billones + 000 billones + + + + + 00k + 00k + 000k + 000k + 0 M + 0 M + 00 M + 00 M + 000 M + 000 M + 0k M + 0k M + 00k M + 00k M + 000k M + 000k M + 0 B + 0 B + 00 B + 00 B + 000 B + 000 B + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + {0} {1} + {0} {1} + + + + dírham de los Emiratos Árabes Unidos + dírham de los Emiratos Árabes Unidos + dírhams de los Emiratos Árabes Unidos + AED + + + afgani afgano + afgani afgano + afganis afganos + + + lek albanés + lek albanés + lekë albaneses + ALL + + + dram armenio + dram armenio + dram armenios + AMD + + + florín de las Antillas Neerlandesas + florín de las Antillas Neerlandesas + florines de las Antillas Neerlandesas + Naf + + + kwanza angoleño + kwanza angoleño + kwanzas angoleños + Kz + + + austral argentino + austral argentino + australes argentinos + ARA + + + peso argentino (1983–1985) + peso argentino (ARP) + pesos argentinos (ARP) + + + peso argentino + peso argentino + pesos argentinos + + + dólar australiano + dólar australiano + dólares australianos + + + Afl. + + + manat azerí + manat azerí + manat azeríes + AZN + + + marco convertible de Bosnia-Herzegovina + marco convertible de Bosnia-Herzegovina + marcos convertibles de Bosnia-Herzegovina + BAM + + + BBD + + + taka de Bangladesh + taka de Bangladesh + taka de Bangladesh + BDT + + + lev búlgaro + lev búlgaro + levas búlgaras + BGN + + + dinar bahreiní + dinar bahreiní + dinares bahreiníes + BHD + + + BIF + + + dólar de Bermudas + dólar de Bermudas + dólares de Bermudas + BMD + + + dólar de Brunéi + dólar de Brunéi + dólares de Brunéi + BND + + + boliviano + boliviano + bolivianos + BOB + + + BOL + + + peso boliviano + peso boliviano + pesos bolivianos + BOP + + + MVDOL boliviano + MVDOL boliviano + MVDOL bolivianos + BOV + + + BRB + + + cruzado brasileño + cruzado brasileño + cruzados brasileños + BRC + + + BRE + + + real brasileño + real brasileño + reales brasileños + BRL + + + nuevo cruzado brasileño + nuevo cruzado brasileño + nuevos cruzados brasileños + BRN + + + BRR + + + BRZ + + + BSD + + + ngultrum butanés + ngultrum butanés + ngultrum butaneses + BTN + + + pula botsuano + BWP + + + rublo bielorruso + rublo bielorruso + rublos bielorrusos + BYR + + + BZD + + + dólar canadiense + dólar canadiense + dólares canadienses + CAD + + + franco congoleño + franco congoleño + francos congoleños + CDF + + + franco suizo + franco suizo + francos suizos + CHF + + + CLE + + + unidad de fomento chilena + unidad de fomento chilena + unidades de fomento chilenas + CLF + + + peso chileno + peso chileno + pesos chilenos + CLP + + + yuan chino + yuan chino + yuanes chinos + CN¥ + + + peso colombiano + peso colombiano + pesos colombianos + COP + + + unidad de valor real colombiana + COU + + + colón costarricense + colón costarricense + colones costarricenses + CRC + + + peso cubano convertible + peso cubano convertible + pesos cubanos convertibles + CUC + + + peso cubano + peso cubano + pesos cubanos + CUP + + + escudo de Cabo Verde + escudo de Cabo Verde + escudos de Cabo Verde + CVE + + + corona checa + corona checa + coronas checas + CZK + + + DJF + + + corona danesa + corona danesa + coronas danesas + DKK + + + peso dominicano + peso dominicano + pesos dominicanos + DOP + + + dinar argelino + dinar argelino + dinares argelinos + DZD + + + sucre ecuatoriano + sucre ecuatoriano + sucres ecuatorianos + ECS + + + unidad de valor constante (UVC) ecuatoriana + unidad de valor constante (UVC) ecuatoriana + unidades de valor constante (UVC) ecuatorianas + ECV + + + libra egipcia + libra egipcia + libras egipcias + EGP + + + nakfa eritreo + nakfa eritreo + nakfas eritreos + ERN + + + birr etíope + birr etíope + birrs etíopes + ETB + + + euro + euro + euros + EUR + + + FJD + + + FKP + + + libra esterlina británica + libra esterlina británica + libras esterlinas británicas + GBP + + + lari georgiano + lari georgiano + laris georgianos + GEL + + + cedi ghanés + cedi ghanés + cedis ghaneses + GHS + + + libra gibraltareña + libras gibraltareñas + GIP + + + dalasi gambiano + dalasi gambiano + dalasis gambianos + GMD + + + franco guineano + franco guineano + francos guineanos + GNF + + + quetzal guatemalteco + quetzal guatemalteco + quetzales guatemaltecos + GTQ + + + dólar guyanés + dólar guyanés + dólares guyaneses + GYD + + + dólar de Hong Kong + dólar de Hong Kong + dólares de Hong Kong + HKD + + + lempira hondureño + lempira hondureño + lempiras hondureños + HNL + + + kuna croata + kuna croata + kunas croatas + HRK + + + gourde haitiano + gourde haitiano + gourdes haitianos + HTG + + + florín húngaro + florín húngaro + florines húngaros + HUF + + + rupia indonesia + rupia indonesia + rupias indonesias + IDR + + + ILS + + + rupia india + rupia india + rupias indias + INR + + + dinar iraquí + dinar iraquí + dinares iraquíes + IQD + + + rial iraní + rial iraní + riales iraníes + IRR + + + corona islandesa + corona islandesa + coronas islandesas + ISK + + + JMD + + + dinar jordano + dinar jordano + dinares jordanos + JOD + + + yen japonés + yen japonés + yenes japoneses + JPY + + + KES + + + som kirguís + som kirguís + soms kirguises + KGS + + + riel camboyano + riel camboyano + rieles camboyanos + KHR + + + franco comorense + franco comorense + francos comorenses + KMF + + + won norcoreano + won norcoreano + wons norcoreanos + KPW + + + won surcoreano + won surcoreano + wons surcoreanos + KRW + + + dinar kuwaití + dinar kuwaití + dinares kuwaitíes + KWD + + + KYD + + + KZT + + + kip laosiano + kip laosiano + kips laosianos + LAK + + + libra libanesa + libra libanesa + libras libanesas + LBP + + + rupia de Sri Lanka + rupia de Sri Lanka + rupias de Sri Lanka + LKR + + + dólar liberiano + dólar liberiano + dólares liberianos + LRD + + + litas lituano + LTL + + + lats letón + lats letón + lats letones + LVL + + + dinar libio + dinar libio + dinares libios + LYD + + + dírham marroquí + dírham marroquí + dírhams marroquíes + MAD + + + leu moldavo + leu moldavo + leus moldavos + MDL + + + ariary malgache + ariary malgache + ariarys malgaches + MGA + + + dinar macedonio + dinar macedonio + dinares macedonios + MKD + + + kyat de Myanmar + kyat de Myanmar + kyats de Myanmar + MMK + + + tugrik mongol + tugrik mongol + tugriks mongoles + MNT + + + pataca de Macao + pataca de Macao + patacas de Macao + MOP + + + ouguiya mauritano + ouguiya mauritano + ouguiyas mauritanos + MRO + + + rupia mauriciana + rupia mauriciana + rupias mauricianas + MUR + + + rufiyaa de Maldivas + rufiyaa de Maldivas + rufiyaas de Maldivas + MVR + + + MWK + + + peso mexicano + peso mexicano + pesos mexicanos + $ + + + peso de plata mexicano (1861–1992) + peso de plata mexicano (MXP) + pesos de plata mexicanos (MXP) + MXP + + + MYR + + + metical mozambiqueño + metical mozambiqueño + meticales mozambiqueños + MZN + + + NAD + + + naira nigeriano + naira nigeriano + nairas nigerianos + NGN + + + córdoba nicaragüense (1988–1991) + córdoba nicaragüense (1988–1991) + córdobas nicaragüenses (1988–1991) + NIC + + + córdoba nicaragüense + córdoba nicaragüense + córdobas nicaragüenses + NIO + + + corona noruega + corona noruega + coronas noruegas + NOK + + + NPR + + + dólar neozelandés + dólar neozelandés + dólares neozelandeses + NZD + + + rial omaní + rial omaní + riales omaníes + OMR + + + balboa panameño + balboa panameño + balboas panameños + PAB + + + inti peruano + inti peruano + intis peruanos + PEI + + + nuevo sol peruano + nuevo sol peruano + nuevos soles peruanos + PEN + + + sol peruano + sol peruano + soles peruanos + PES + + + kina de Papúa Nueva Guinea + kina de Papúa Nueva Guinea + kinas de Papúa Nueva Guinea + PGK + + + peso filipino + peso filipino + pesos filipinos + PHP + + + rupia pakistaní + rupia pakistaní + rupias pakistaníes + PKR + + + zloty polaco + zloty polaco + zlotys polacos + PLN + + + guaraní paraguayo + guaraní paraguayo + guaraníes paraguayos + PYG + + + riyal de Qatar + riyal de Qatar + riyales de Qatar + QAR + + + leu rumano + leu rumano + lei rumanos + RON + + + dinar serbio + dinar serbio + dinares serbios + RSD + + + rublo ruso + rublo ruso + rublos rusos + RUB + + + franco ruandés + franco ruandés + francos ruandeses + RWF + + + riyal saudí + riyal saudí + riyales saudíes + SAR + + + dólar de las Islas Salomón + dólar de las Islas Salomón + dólares de las Islas Salomón + SBD + + + rupia de Seychelles + rupia de Seychelles + rupias de Seychelles + SCR + + + libra sudanesa + libra sudanesa + libras sudanesas + SDG + + + corona sueca + corona sueca + coronas suecas + SEK + + + dólar singapurense + dólar singapurense + dólares singapurenses + SGD + + + libra de Santa Elena + libra de Santa Elena + libras de Santa Elena + SHP + + + leone de Sierra Leona + leone de Sierra Leona + leones de Sierra Leona + SLL + + + chelín somalí + chelín somalí + chelines somalíes + SOS + + + dólar surinamés + dólar surinamés + dólares surinameses + SRD + + + florín surinamés + SRG + + + libra sursudanesa + libra sursudanesa + libras sursudanesas + SSP + + + dobra de Santo Tomé y Príncipe + dobra de Santo Tomé y Príncipe + dobras de Santo Tomé y Príncipe + STD + + + colón salvadoreño + colón salvadoreño + colones salvadoreños + SVC + + + libra siria + libra siria + libras sirias + SYP + + + lilangeni suazi + lilangeni suazi + lilangenis suazis + SZL + + + baht tailandés + baht tailandés + bahts tailandeses + THB + + + somoni tayiko + somoni tayiko + somonis tayikos + TJS + + + TMT + + + dinar tunecino + dinar tunecino + dinares tunecinos + TND + + + paʻanga tongano + paʻanga tongano + paʻangas tonganos + TOP + + + lira turca + lira turca + liras turcas + TRY + + + dólar de Trinidad y Tobago + dólar de Trinidad y Tobago + dólares de Trinidad y Tobago + TTD + + + nuevo dólar taiwanés + nuevo dólar taiwanés + nuevos dólares taiwaneses + TWD + + + chelín tanzano + chelín tanzano + chelines tanzanos + TZS + + + grivna ucraniana + UAH + + + chelín ugandés + chelín ugandés + chelines ugandeses + UGX + + + dólar estadounidense + dólar estadounidense + dólares estadounidenses + USD + + + dólar estadounidense (día siguiente) + dólar estadounidense (día siguiente) + dólares estadounidenses (día siguiente) + USN + + + dólar estadounidense (mismo día) + dólar estadounidense (mismo día) + dólares estadounidenses (mismo día) + USS + + + peso uruguayo en unidades indexadas + peso uruguayo en unidades indexadas + pesos uruguayos en unidades indexadas + UYI + + + peso uruguayo + peso uruguayo + pesos uruguayos + UYU + + + som uzbeko + som uzbeko + soms uzbekos + UZS + + + bolívar venezolano + bolívar venezolano + bolívares venezolanos + VEF + + + dong vietnamita + dong vietnamita + dongs vietnamitas + VND + + + vatu vanuatuense + vatu vanuatuense + vatus vanuatuenses + VUV + + + tala samoano + tala samoano + talas samoanos + WST + + + franco CFA BEAC + franco CFA BEAC + francos CFA BEAC + XAF + + + dólar del Caribe Oriental + dólar del Caribe Oriental + dólares del Caribe Oriental + XCD + + + franco CFA BCEAO + franco CFA BCEAO + francos CFA BCEAO + XOF + + + franco CFP + franco CFP + francos CFP + XPF + + + divisa desconocida + moneda desconocida/no válida + monedas desconocidas/no válidas + + + rial yemení + rial yemení + riales yemeníes + YER + + + rand sudafricano + rand sudafricano + rands sudafricanos + ZAR + + + kwacha zambiano + kwacha zambiano + kwachas zambianos + ZMK + + + + Más de {0} + {0}-{1} + + + + + + {0} por {1} + + + {0} unidad de fuerza gravitacional + {0} unidades de fuerza gravitacional + + + {0} minuto + {0} minutos + + + {0} segundo + {0} segundos + + + {0} grado + {0} grados + + + {0} acre + {0} acres + + + {0} hectárea + {0} hectáreas + + + {0} pie cuadrado + {0} pies cuadrados + + + {0} kilómetro cuadrado + {0} kilómetros cuadrados + + + {0} metro cuadrado + {0} metros cuadrados + + + {0} milla cuadrada + {0} millas cuadradas + + + {0} día + {0} días + + + {0} hora + {0} horas + + + {0} milisegundo + {0} milisegundos + + + {0} minuto + {0} minutos + + + {0} mes + {0} meses + + + {0} segundo + {0} segundos + + + {0} semana + {0} semanas + + + {0} año + {0} años + + + {0} centímetro + {0} centímetros + + + {0} pie + {0} pies + + + {0} pulgada + {0} pulgadas + + + {0} kilómetro + {0} kilómetros + + + {0} año luz + {0} años luz + + + {0} metro + {0} metros + + + {0} milla + {0} millas + + + {0} milímetro + {0} milímetros + + + {0} picómetro + {0} picómetros + + + {0} yarda + {0} yardas + + + {0} gramo + {0} gramos + + + {0} kilogramo + {0} kilogramos + + + {0} onza + {0} onzas + + + {0} libra + {0} libras + + + {0} caballo de vapor + {0} caballos de vapor + + + {0} kilovatio + {0} kilovatios + + + {0} vatio + {0} vatios + + + {0} hectopascal + {0} hectopascales + + + {0} pulgada de mercurio + {0} pulgadas de mercurio + + + {0} milibar + {0} milibares + + + {0} kilómetro por hora + {0} kilómetros por hora + + + {0} metro por segundo + {0} metros por segundo + + + {0} milla por hora + {0} millas por hora + + + {0} grado Celsius + {0} grados Celsius + + + {0} grado Fahrenheit + {0} grados Fahrenheit + + + {0} kilómetro cúbico + {0} kilómetros cúbicos + + + {0} milla cúbica + {0} millas cúbicas + + + {0} litro + {0} litros + + + + + {0}/{1} + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} día + {0} días + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} sem + {0} sem + + + {0} a + {0} a + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} a. l. + {0} a. l. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} CV + {0} CV + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}' + {0}' + + + {0}" + {0}" + + + {0}° + {0}° + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} sem + {0} sem + + + {0}a + {0} a + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} y {1} + {0} y {1} + + + {0}, {1} + {0}, {1} + {0} y {1} + {0} y {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} y {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} y {1} + + + + + sí:s + no:n + + + + diff --git a/library/Zend/Locale/Data/es_NI.xml b/library/Zend/Locale/Data/es_NI.xml new file mode 100755 index 000000000..ea691d889 --- /dev/null +++ b/library/Zend/Locale/Data/es_NI.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + C$ + + + + diff --git a/library/Zend/Locale/Data/es_PA.xml b/library/Zend/Locale/Data/es_PA.xml new file mode 100755 index 000000000..a928a35d6 --- /dev/null +++ b/library/Zend/Locale/Data/es_PA.xml @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + MM/dd/y G + + + + + MM/dd/yy GGGGG + + + + + + MM/dd + E, MM/dd + MM/y + MM/dd/y + E MM/dd/y + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + MM/dd - MM/dd + MM/dd - MM/dd + + + E MM/dd - E MM/dd + E MM/dd - E MM/dd + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + MM/dd/y - MM/dd/y + MM/dd/y - MM/dd/y + MM/dd/y - MM/dd/y + + + E MM/dd/y - E MM/dd/y + E MM/dd/y - E MM/dd/y + E MM/dd/y - E MM/dd/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + MM/dd/y + + + + + MM/dd/yy + + + + + + MM/dd + E, MM/dd + MM/y + MM/dd/y + E MM/dd/y + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + MM/dd - MM/dd + MM/dd - MM/dd + + + E MM/dd - E MM/dd + E MM/dd - E MM/dd + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + MM/dd/y - MM/dd/y + MM/dd/y - MM/dd/y + MM/dd/y - MM/dd/y + + + E MM/dd/y - E MM/dd/y + E MM/dd/y - E MM/dd/y + E MM/dd/y - E MM/dd/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + + B/. + + + + diff --git a/library/Zend/Locale/Data/es_PE.xml b/library/Zend/Locale/Data/es_PE.xml new file mode 100755 index 000000000..a502f2fb4 --- /dev/null +++ b/library/Zend/Locale/Data/es_PE.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + d/MM/yy GGGGG + + + + + + + HH'H'mm''ss'' zzzz + + + + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + d/MM/yy + + + + + + + HH'H'mm''ss'' zzzz + + + + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + + S/. + + + + diff --git a/library/Zend/Locale/Data/es_PH.xml b/library/Zend/Locale/Data/es_PH.xml new file mode 100755 index 000000000..b1b7817ba --- /dev/null +++ b/library/Zend/Locale/Data/es_PH.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es_PR.xml b/library/Zend/Locale/Data/es_PR.xml new file mode 100755 index 000000000..568f4be7a --- /dev/null +++ b/library/Zend/Locale/Data/es_PR.xml @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + MM/dd/y G + + + + + MM/dd/yy GGGGG + + + + + + MM/dd + E, MM/dd + MM/y G + MM/dd/y G + E MM/dd/y G + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + MM/dd - MM/dd + MM/dd - MM/dd + + + E MM/dd - E MM/dd + E MM/dd - E MM/dd + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + MM/dd/y - MM/dd/y G + MM/dd/y - MM/dd/y G + MM/dd/y - MM/dd/y G + + + E MM/dd/y - E MM/dd/y G + E MM/dd/y - E MM/dd/y G + E MM/dd/y - E MM/dd/y G + + + MMM-MMM 'de' y G + MMM 'de' y 'a' MMM 'de' y G + + + d-d 'de' MMM 'de' y G + d 'de' MMM 'al' d 'de' MMM 'de' y G + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y G + + + E d 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y G + + + + + + + + + MM/dd/y + + + + + MM/dd/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + MM/dd + E, MM/dd + MM/y + MM/dd/y + E MM/dd/y + + + {0} a el {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + MM/dd - MM/dd + MM/dd - MM/dd + + + E MM/dd - E MM/dd + E MM/dd - E MM/dd + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + MM/dd/y - MM/dd/y + MM/dd/y - MM/dd/y + MM/dd/y - MM/dd/y + + + E MM/dd/y - E MM/dd/y + E MM/dd/y - E MM/dd/y + E MM/dd/y - E MM/dd/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + + $ + + + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + diff --git a/library/Zend/Locale/Data/es_PY.xml b/library/Zend/Locale/Data/es_PY.xml new file mode 100755 index 000000000..745abec82 --- /dev/null +++ b/library/Zend/Locale/Data/es_PY.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + , + . + + + + + ¤ #,##0.00;¤ -#,##0.00 + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es_SV.xml b/library/Zend/Locale/Data/es_SV.xml new file mode 100755 index 000000000..9f96908fb --- /dev/null +++ b/library/Zend/Locale/Data/es_SV.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/es_US.xml b/library/Zend/Locale/Data/es_US.xml new file mode 100755 index 000000000..114123543 --- /dev/null +++ b/library/Zend/Locale/Data/es_US.xml @@ -0,0 +1,355 @@ + + + + + + + + + + + + + + + + + MMM d, y G + + + + + M/d/yy GGGGG + + + + + + MMM d, y G + E, MMM d, y G + MMMM 'de' y G + d 'de' MMMM 'de' y G + E, d 'de' MMMM 'de' y G + M/d + E, MM/dd + MM/d + MMM d + E, MMM d + E, d 'de' MMMM + M/y G + M/d/y G + E, M/d/y G + MMM d, y G + E, MMM d, y G + d 'de' MMMM 'de' y G + E, d 'de' MMMM 'de' y G + + + {0} a el {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + M/d - M/d + M/d - M/d + + + E M/d - E M/d + E M/d - E M/d + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y G + + + M/y - M/y G + M/y - M/y G + + + M/d/y - M/d/y G + M/d/y - M/d/y G + M/d/y - M/d/y G + + + E M/d/y - E M/d/y G + E M/d/y - E M/d/y G + E M/d/y - E M/d/y G + + + MMM-MMM 'de' y G + MMM 'de' y 'a' MMM 'de' y G + + + d-d 'de' MMM 'de' y G + d 'de' MMM 'al' d 'de' MMM 'de' y G + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y G + + + E d 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'al' E d 'de' MMM 'de' y G + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y G + + + + + + + + + AM + PM + + + + + + + MMM d, y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + MMM y G + MMM d, y G + E, MMM d, y G + MMMM 'de' y G + d 'de' MMMM 'de' y G + E, d 'de' MMMM 'de' y G + M/d + E, MM/dd + MM/d + MMM d + E, MMM d + E, d 'de' MMMM + M/d/y + E, M/d/y + MMM d, y + E, MMM d, y + d 'de' MMMM 'de' y + E, d 'de' MMMM 'de' y + + + {0} a el {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + M/d - M/d + M/d - M/d + + + E M/d - E M/d + E M/d - E M/d + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM 'al' d 'de' MMM + + + E d 'al' E d 'de' MMM + E d 'de' MMM 'al' E d 'de' MMM + + + y-y + + + M/y - M/y + M/y - M/y + + + M/d/y - M/d/y + M/d/y - M/d/y + M/d/y - M/d/y + + + E M/d/y - E M/d/y + E M/d/y - E M/d/y + E M/d/y - E M/d/y + + + MMM-MMM 'de' y + MMM 'de' y 'a' MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM 'al' d 'de' MMM 'de' y + d 'de' MMM 'de' y 'al' d 'de' MMM 'de' y + + + E d 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'al' E d 'de' MMM 'de' y + E d 'de' MMM 'de' y 'al' E d 'de' MMM 'de' y + + + + + + + + + HST + HST + HDT + + + + + AKT + AKST + AKDT + + + + + CT + CST + CDT + + + + + ET + EST + EDT + + + + + MT + MST + MDT + + + + + PT + PST + PDT + + + + + AT + AST + ADT + + + + + HAT + HAST + HADT + + + + + + + + ¥ + + + $ + + + + + + + {0}°C + {0}°C + + + {0}° + {0}° + + + + + diff --git a/library/Zend/Locale/Data/es_UY.xml b/library/Zend/Locale/Data/es_UY.xml new file mode 100755 index 000000000..d10aafe5e --- /dev/null +++ b/library/Zend/Locale/Data/es_UY.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + , + . + + + + + ¤ #,##0.00 + + + ¤ #,##0.00;(¤ #,##0.00) + + + + + + US$ + + + $ + + + + + diff --git a/library/Zend/Locale/Data/es_VE.xml b/library/Zend/Locale/Data/es_VE.xml new file mode 100755 index 000000000..ba3340fb6 --- /dev/null +++ b/library/Zend/Locale/Data/es_VE.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + , + . + + + + + ¤#,##0.00;¤-#,##0.00 + + + + + + Bs. + + + + + diff --git a/library/Zend/Locale/Data/et.xml b/library/Zend/Locale/Data/et.xml new file mode 100755 index 000000000..3c6a8d685 --- /dev/null +++ b/library/Zend/Locale/Data/et.xml @@ -0,0 +1,4826 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afari + abhaasi + atšehi + akoli + adangme + adõgee + avesta + afrikaani + afrihili + aghemi + ainu + akani + akadi + aleuudi + altai + amhari + aragoni + vanainglise + angika + araabia + araabia (tänapäevane) + aramea + araukaani + arapaho + aravaki + assami + asa + astuuria + avaari + avadhi + aimara + aserbaidžaani + aseri + baškiiri + belutši + bali + basa + bamuni + ghomala + valgevene + bedža + bemba + bena + bafuti + bulgaaria + bhodžpuri + bislama + bikoli + edo + itaŋikomi + siksika + bambara + bengali + tiibeti + bretooni + bradži + bodo + bosnia + akoose + burjaadi + bugi + bulu + bilini + medumba + katalaani + kado + kariibi + cayuga + atsami + tšetšeeni + sebu + chiga + tšamorro + tšibtša + tšagatai + tšuugi + mari + tšinuki žargoon + tšokto + tšipevai + tšerokii + šaieeni + sorani kurdi + korsika + kopti + krii + krimmitatari + tšehhi + kašuubi + kirikuslaavi + tšuvaši + kõmri + taani + siuu + dargi + taita + saksa + saksa (kõrgsaksa) + delavari + sleivi + dogribi + dinka + zarma + dogri + alamsorbi + duala + keskhollandi + maldiivi + jola-fonyi + djula + bhutani + dazaga + embu + eve + efiki + muinasegiptuse + ekadžuki + kreeka + eelami + inglise + inglise (Briti) + inglise (USA) + inglise (USA) + keskinglise + esperanto + hispaania + hispaania (Euroopa) + eesti + baski + evondo + pärsia + fangi + fanti + fulbe + soome + filipino + fidži + fääri + foni + prantsuse + keskprantsuse + vanaprantsuse + põhjafriisi + idafriisi + friuuli + läänefriisi + iiri + gaa + gajo + gbaja + gaeli + etioopia + kiribati + galeegi + keskülemsaksa + guaranii + vanaülemsaksa + gondi + gorontalo + gooti + grebo + vanakreeka + alemanni + gudžarati + gusii + mänksi + gvitšini + hausa + haida + havai + heebrea + hindi + hiligainoni + heti + hmongi + motu + horvaadi + ülemsorbi + haiti + ungari + hupa + armeenia + herero + interlingua + ibani + ibibio + indoneesia + interlingue + ibo + sichuani jii + injupiaki + iloko + inguši + ido + islandi + itaalia + inuktituti + jaapani + lojbani + ngomba + machame + juudipärsia + juudiaraabia + jaava + gruusia + karakalpaki + kabiili + katšini + jju + kamba + kaavi + kabardi-tšerkessi + kanembu + tyapi + makonde + kabuverdianu + koro + kongo + khasi + saki + koyra chiini + kikuju + ambo + kasahhi + kako + grööni + kaljenjin + khmeeri + mbundu + kannada + korea + konkani + kosrae + kpelle + kanuri + karatšai-balkaari + karjala + oraoni + kašmiiri + shambala + bafia + cologniani + kurdi + kumõki + kutenai + komi + korni + kirgiisi + ladina + ladiino + langi + lahnda + lamba + letseburgi + lesgi + ganda + limburgi + lingala + lao + mongo + lozi + leedu + luba + luba-lulua + luisenjo + lunda + luo + lušei + luyia + läti + madura + mafa + magali + maithili + makassari + malinke + masai + maba + mokša + mandari + mende + meru + Mauritaania kreooli + malagassi + keskiiri + makhuwa-meetto + meta' + maršalli + maoori + mikmaki + minangkabau + makedoonia + malajalami + mongoli + mandžu + manipuri + mohoogi + more + marathi + malai + malta + mundangi + mitu keelt + maskogi + miranda + marvari + birma + myene + ersa + nauru + napoli + nama + norra bokmål + põhjandebele + alamsaksa + nepali + nevari + ndonga + niasi + niue + hollandi + flaami + kwasio + norra nynorsk + ngiembooni + norra + nogai + vanapõhjala + nkoo + lõunandebele + pedi + nueri + navaho + vananevari + njandža + njamvesi + nkole + njoro + nzima + provansi + odžibvei + oromo keel + oria + osseedi + oseidži + osmanitürgi + pandžabi + pangasinani + pahlavi + pampanga + papiamento + belau + vanapärsia + foiniikia + paali + poola + poonpei + vanaprovansi + puštu + portugali + portugali (Euroopa) + ketšua + radžastani + rapanui + rarotonga + retoromaani + rundi + rumeenia + moldova + rombo + mustlaskeel + root + vene + aromuuni + ruanda + rwa + sanskriti + sandave + jakuudi + samaaria aramea + samburu + sasaki + santali + ngembay + sangu + sardiinia + sitsiilia + šoti + sindhi + põhjasaami + seneca + sena + sölkupi + koyraboro senni + sango + vanaiiri + serbia-horvaadi + tachelhiti + šani + Tšaadi araabia + singali + sidamo + slovaki + sloveeni + samoa + lõunasaami + lule saami + inari saami + koltasaami + šona + soninke + somaali + sogdi + albaania + serbia + sranani + sereri + svaasi + saho + lõunasotho + sunda + sukuma + susu + sumeri + rootsi + suahiili + komoori + Kongo suahiili + klassikaline süüria + süüria + tamili + telugu + temne + teso + tereno + tetumi + tadžiki + tai + tigrinja + tigree + tivi + türkmeeni + tokelau + tagalogi + klingoni + tlingiti + tamašeki + tsvana + tonga + tšitonga + uusmelaneesia + türgi + taroko + tsonga + tšimši + tatari + tumbuka + tuvalu + tvii + taswaqi + tahiti + tõva + Kesk-Maroko tamazighti + udmurdi + uiguuri + ugariti + ukraina + umbundu + määramata + urdu + usbeki + vai + venda + vietnami + volapüki + vadja + vunjo + vallooni + walseri + volamo + varai + vašo + volofi + kalmõki + koosa + soga + jao + japi + yangbeni + yemba + jidiši + joruba + kantoni + tšuangi + sapoteegi + blissümbolid + zenaga + tamasikti (Maroko) + hiina + hiina keel - lihtsustatud + hiina keel - traditsiooniline + suulu + sunji + mittekeeleline + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + maailm + Aafrika + Põhja-Ameerika + Lõuna-Ameerika + Okeaania + Lääne-Aafrika + Kesk-Ameerika + Ida-Aafrika + Põhja-Aafrika + Kesk-Aafrika + Lõuna-Aafrika + Ameerika maailmajagu + Ameerika põhjaosa + Kariibi meri + Ida-Aasia + Lõuna-Aasia + Kagu-Aasia + Lõuna-Euroopa + Australaasia + Melaneesia + Mikroneesia + Polüneesia + Aasia + Kesk-Aasia + Lääne-Aasia + Euroopa + Ida-Euroopa + Põhja-Euroopa + Lääne-Euroopa + Ladina-Ameerika + Ascensioni saar + Andorra + Araabia Ühendemiraadid + Afganistan + Antigua ja Barbuda + Anguilla + Albaania + Armeenia + Hollandi Antillid + Angola + Antarktis + Argentina + Ameerika Samoa + Austria + Austraalia + Aruba + Ahvenamaa + Aserbaidžaan + Bosnia ja Hertsegoviina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaaria + Bahrein + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Boliivia + Hollandi Kariibi mere saared + Brasiilia + Bahama + Bhutan + Bouvet’ saar + Botswana + Valgevene + Belize + Kanada + Kookossaared + Kongo DV + Kongo-Kinshasa + Kesk-Aafrika Vabariik + Kongo-Brazzaville + Šveits + Côte d'Ivoire + Elevandiluurannik + Cooki saared + Tšiili + Kamerun + Hiina + Colombia + Clippertoni saar + Costa Rica + Kuuba + Roheneemesaared + Curaçao + Jõulusaar + Küpros + Tšehhi + Saksamaa + Diego Garcia + Djibouti + Taani + Dominica + Dominikaani Vabariik + Alžeeria + Ceuta ja Melilla + Ecuador + Eesti + Egiptus + Lääne-Sahara + Eritrea + Hispaania + Etioopia + Euroopa Liit + Soome + Fidži + Falklandi saared + Mikroneesia Liiduriigid + Fääri saared + Prantsusmaa + Gabon + Suurbritannia + Suurbritannia + Grenada + Gruusia + Prantsuse Guajaana + Guernsey + Ghana + Gibraltar + Gröönimaa + Gambia + Guinea + Guadeloupe + Ekvatoriaal-Guinea + Kreeka + Lõuna-Georgia ja Lõuna-Sandwichi saared + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong - Hiina erihalduspiirkond + Hongkong + Heard ja McDonald saared + Honduras + Horvaatia + Haiti + Ungari + Kanaari saared + Indoneesia + Iirimaa + Iisrael + Mani saar + India + Briti India ookeani ala + Iraak + Iraan + Island + Itaalia + Jersey + Jamaica + Jordaania + Jaapan + Kenya + Kõrgõzstan + Kambodža + Kiribati + Komoorid + Saint Kitts ja Nevis + Põhja-Korea + Lõuna-Korea + Kuveit + Kaimanisaared + Kasahstan + Laos + Liibanon + Saint Lucia + Liechtenstein + Sri Lanka + Libeeria + Lesotho + Leedu + Luksemburg + Läti + Liibüa + Maroko + Monaco + Moldova + Montenegro + Saint Martin + Madagaskar + Marshalli saared + Makedoonia + Mali + Myanmar + Mongoolia + Macau - Hiina erihalduspiirkond + Macau + Põhja-Mariaanid + Martinique + Mauritaania + Montserrat + Malta + Mauritius + Maldiivid + Malawi + Mehhiko + Malaisia + Mosambiik + Namiibia + Uus-Kaledoonia + Niger + Norfolk + Nigeeria + Nicaragua + Holland + Norra + Nepal + Nauru + Niue + Uus-Meremaa + Omaan + Panama + Peruu + Prantsuse Polüneesia + Paapua Uus-Guinea + Filipiinid + Pakistan + Poola + Saint Pierre ja Miquelon + Pitcairni saared + Puerto Rico + Palestiina alad + Palestiina + Portugal + Belau + Paraguay + Katar + Okeaania hajasaared + Réunion + Rumeenia + Serbia + Venemaa + Rwanda + Saudi Araabia + Saalomoni Saared + Seišellid + Sudaan + Rootsi + Singapur + Saint Helena + Sloveenia + Svalbard ja Jan Mayen + Slovakkia + Sierra Leone + San Marino + Senegal + Somaalia + Suriname + Lõuna-Sudaan + São Tomé ja Príncipe + El Salvador + Sint Maarten + Süüria + Svaasimaa + Tristan da Cunha + Turks ja Caicos + Tšaad + Prantsuse Lõunaalad + Togo + Tai + Tadžikistan + Tokelau + Ida-Timor + Türkmenistan + Tuneesia + Tonga + Türgi + Trinidad ja Tobago + Tuvalu + Taiwan + Tansaania + Ukraina + Uganda + Ühendriikide hajasaared + Ameerika Ühendriigid + USA + Uruguay + Usbekistan + Vatikan + Saint Vincent ja Grenadiinid + Venezuela + Briti Neitsisaared + USA Neitsisaared + Vietnam + Vanuatu + Wallis ja Futuna + Samoa + Kosovo + Jeemen + Mayotte + Lõuna-Aafrika Vabariik + Sambia + Zimbabwe + Tundmatu piirkond + + + saksa traditsiooniline kirjaviis + standardiseeritud Resia ortograafia + saksa reformitud kirjaviis + hiline kesk-prantsuse kuni 1606 + varajane moodne prantsuse + akadeemiline + ida-armeenia + lääne-armeenia + ühtlustatud türgi-ladina tähestik + San Giorgio/Bila murre + boontlingi + IPA foneetika + UPA foneetika + üldlevinud ortograafia + Resia Lipovaz'i murre + monotoonne + Natisone murre + Gniva/Njiva murre + Oseacco/Osojane murre + pinyin + polütooniline + arvuti + uus kirjaviis + Resia murre + saho murre + šoti tavainglise + scouse + Stolvizza/Solbica murre + Taraskievica ortograafia + ühtlustatud ortograafia + ühtlustatud redigeeritud ortograafia + valentsia + Wade-Giles + + + kalender + Sortimine sümboleid eirates + Vastupidine sortimine rõhumärkide alusel + Suur-/väiketähtede järjestus + Tõstutundlik sortimine + Sortimine kana kirjasüsteemi alusel + Sortimisjärjestus + Normeeritud sortimine + Sortimine numbrite alusel + Sortimisalus + vääring + Numbrid + Ajavöönd + Lokaadi variant + Sümbolite alusel sortimine + Erakasutus + + + Araabia-indic numbrid + Laiendatud araabia-indic numbrid + Armeenia numbrid + Armeenia numbrid väikeste tähtedega + Bengali numbrid + hiina traditsiooniline - big5 + budistlik kalender + Hiina kalender + Kopti kalender + Devanagari numbrid + Sõnastiku sortimisjärjestus + Unicode'i sortimise vaikejärjestus + sortimisjärjestuse mitmekeelne Euroopa dokumendid + Etioopia numbrid + Etioopia kalender + Etioopia amete alemi kalender + Finantsarvud + Täislaiusega numbrid + hiina lihtsustatud - GB2312 + Gruusia numbrid + Gregoriuse kalender + Kreeka numbrid + Kreeka väiketähelised numbrid + Gudžarati numbrid + Gurmukhi numbrid + Hiina kümnendnumbrid + Lihtsustatud hiina keele numbrid + Lihtsustatud hiina keele finantsnumbrid + Traditsioonilise hiina keele numbrid + Traditsioonilise hiina keele finantsnumbrid + Heebrea numbrid + juudi kalender + Sordi kõik + India rahvuslik + islamikalender + islami ilmalik kalender + Jaapani kalender + Jaapani numbrid + Jaapani rahandusnumeraalid + Khmeri numbrid + Kannada numbrid + Lao numbrid + Ladina numbrid + Järjestus alates väiketähtedest + Malayalami numbrid + Mongoolia numbrid + Myanmari numbrid + Kohalik numbrisüsteem + Tavajärjestuses rõhumärkide alusel + Tõstutundlikkuse alusel sortimine + Tõstutundlikkuseta sortimine + Kana-kirjasüsteemi eraldi sortimine + Normeerimata sortimine + Numbrite eraldi sortimine + Sümbolite sortimine + Oria numbrid + Pärsia kalender + telefoniraamat + Foneetiline sortimisjärjestus + hiina lihtsustatud - pinyin järjekorras + Ainult põhitähestiku alusel sortimine + Rõhumärkide/algustähe/laiuse/kana-süsteemi alusel sortimine + Reformitud sortimisjärjestus + Hiina Vabariigi kalender + Rooma numbrid + Rooma numbrid väikeste tähtedega + Üldeesmärgiline otsing + Otsing hanguli alguskonsonandi alusel + Rõhumärkide sortimine + Sordi sümboleid eirates + Standardne sortimisjärjestus + elementide kirjutamise järjekorras + Tamili numbrid + Tamili numbrid + Telugu numbrid + Rõhumärkide/algustähe/laiuse alusel sortimine + Tai numbrid + Tiibeti numbrid + traditsiooniline + Traditsiooniline numbrisüsteem + Radikaal-kriipsude sortimisjärjestus + Järjestus alates suurtähtedest + Vai numbrisüsteem + Vastupidine sortimine rõhumärkide alusel + Tõstutundlikkuse alusel sortimine + Kana-kirjasüsteemi sortimine eraldi + Normeeritud Unicode'i alusel sortimine + Numbrite alusel sortimine + + + BGN + Numbriline + Toon + UNGEGN + Aktsendid + Täislai + Poolaius + Jamo + Pinyin + Kirjastamine + + + meetermõõdustik + inglise mõõdustik + inglise mõõdustik + + + Keel: {0} + Skript: {0} + Regioon: {0} + + + + [a b c d e f g h i j k l m n o p q r s š z ž t u v w õ ä ö ü x y] + [á à â å ā æ ç é è ê ë ē í ì î ï ī ñ ó ò ŏ ô ø ō œ ú ù û ū] + [A B C D E F G H I J K L M N O P Q R S Š Z Ž T U V Õ Ä Ö Ü X Y] + {0}… + …{0} + {0} … {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + dd.MM.y G + + + + + dd.MM.y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + y G + MMM y G + d. MMM y G + E, d. MMMM y G + h a + HH + h:mm a + HH:mm + h:mm.ss a + H:mm.ss + M + d.M + E, d.M + MMMM + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm.ss + mm.ss + y G + y G + M.y G + d.M.y G + E, d.M y G + MMM y G + d. MMM y G + E, d. MMMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0}–{1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH.mm–HH.mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM–dd.MM + dd.MM–dd.MM + + + E, dd.MM–E, dd.MM + E, dd.MM–E, dd.MM + + + LLL–LLL + + + d.–d. MMM + d. MMM–d. MMM + + + E, d. MMM–E, d. MMM + E, d. MMM–E, d. MMM + + + y–y G + + + MM.y–MM.y G + MM.y–MM.y G + + + dd.MM.y–dd.MM.y G + dd.MM.y–dd.MM.y G + dd.MM.y–dd.MM.y G + + + E, dd.MM.y–E, dd.MM.y G + E, dd.MM.y–E, dd.MM.y G + E, dd.MM.y–E, dd.MM.y G + + + MMM–MMM y G + MMM y–MMM y G + + + d.–d. MMM y G + d. MMM–d. MMM y G + d. MMM y–d. MMM y G + + + E, d. MMM–E, d. MMM y G + E, d. MMM–E, d. MMM y G + E, d. MMM y–E, d. MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + jaan + veebr + märts + apr + mai + juuni + juuli + aug + sept + okt + nov + dets + + + J + V + M + A + M + J + J + A + S + O + N + D + + + jaanuar + veebruar + märts + aprill + mai + juuni + juuli + august + september + oktoober + november + detsember + + + + + jaan + veebr + märts + apr + mai + juuni + juuli + aug + sept + okt + nov + dets + + + J + V + M + A + M + J + J + A + S + O + N + D + + + jaanuar + veebruar + märts + aprill + mai + juuni + juuli + august + september + oktoober + november + detsember + + + + + + + P + E + T + K + N + R + L + + + P + E + T + K + N + R + L + + + P + E + T + K + N + R + L + + + pühapäev + esmaspäev + teisipäev + kolmapäev + neljapäev + reede + laupäev + + + + + P + E + T + K + N + R + L + + + P + E + T + K + N + R + L + + + P + E + T + K + N + R + L + + + pühapäev + esmaspäev + teisipäev + kolmapäev + neljapäev + reede + laupäev + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + K1 + K2 + K3 + K4 + + + 1. + 2. + 3. + 4. + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + + + e.k. + p.k. + + + AM + PM + + + + + + enne meie aega + meie aja järgi + + + e.m.a. + m.a.j. + + + e.m.a. + ema + m.a.j. + maj + + + + + + EEEE, d. MMMM y + + + + + d. MMMM y + + + + + dd.MM.y + + + + + dd.MM.yy + + + + + + + H:mm.ss zzzz + + + + + H:mm.ss z + + + + + H:mm.ss + + + + + H:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d. MMM y G + E, d. MMMM y G + h a + HH + h:mm a + HH:mm + h:mm.ss a + H:mm.ss + M + d.M + E, d.M + MMMM + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm.ss + mm.ss + y + M.y + d.M.y + E, d.M y + MMM y + d. MMM y + E, d. MMMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0}–{1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH.mm–HH.mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + dd.MM–dd.MM + dd.MM–dd.MM + + + E, dd.MM–E, dd.MM + E, dd.MM–E, dd.MM + + + LLL–LLL + + + d.–d. MMM + d. MMM–d. MMM + + + E, d. MMM–E, d. MMM + E, d. MMM–E, d. MMM + + + y–y + + + MM.y–MM.y + MM.y–MM.y + + + dd.MM.y–dd.MM.y + dd.MM.y–dd.MM.y + dd.MM.y–dd.MM.y + + + E, dd.MM.y–E, dd.MM.y + E, dd.MM.y–E, dd.MM.y + E, dd.MM.y–E, dd.MM.y + + + MMM–MMM y + MMM y–MMM y + + + d.–d. MMM y + d. MMM–d. MMM y + d. MMM y–d. MMM y + + + E, d. MMM–E, d. MMM y + E, d. MMM–E, d. MMM y + E, d. MMM y–E, d. MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + ajastu + + + aasta + eelmine aasta + käesolev aasta + järgmine aasta + + {0} aasta pärast + {0} aasta pärast + + + {0} aasta eest + {0} aasta eest + + + + kuu + eelmine kuu + käesolev kuu + järgmine kuu + + {0} kuu pärast + {0} kuu pärast + + + {0} kuu eest + {0} kuu eest + + + + nädal + eelmine nädal + käesolev nädal + järgmine nädal + + {0} nädala pärast + {0} nädala pärast + + + {0} nädala eest + {0} nädala eest + + + + päev + üleeile + eile + täna + homme + ülehomme + + {0} päeva pärast + {0} päeva pärast + + + {0} päeva eest + {0} päeva eest + + + + nädalapäev + + + eelmine pühapäev + käesolev pühapäev + järgmine pühapäev + + + eelmine esmaspäev + käesolev esmaspäev + järgmine esmaspäev + + + eelmine teisipäev + käesolev teisipäev + järgmine teisipäev + + + eelmine kolmapäev + käesolev kolmapäev + järgmine kolmapäev + + + eelmine neljapäev + käesolev neljapäev + järgmine neljapäev + + + eelmine reede + käesolev reede + järgmine reede + + + eelmine laupäev + käesolev laupäev + järgmine laupäev + + + enne/pärast lõunat + + + tund + + {0} tunni pärast + {0} tunni pärast + + + {0} tunni eest + {0} tunni eest + + + + minut + + {0} minuti pärast + {0} minuti pärast + + + {0} minuti eest + {0} minuti eest + + + + sekund + nüüd + + {0} sekundi pärast + {0} sekundi pärast + + + {0} sekundi eest + {0} sekundi eest + + + + ajavöönd + + + + +HH:mm;-HH:mm + GMT{0} + GMT + ({0}) + {0} (+1) + {0} (+0) + {1} ({0}) + + määramata + + + Jerevan + + + Dumont d’Urville + + + Viin + + + Brüssel + + + Saint Barthélemy + + + Atikokan + + + St. John’s + + + Zürich + + + Lihavõttesaar + + + Havanna + + + Roheneemesaared + + + Curaçao + + + Jõulusaar + + + Praha + + + Berliin + + + Kopenhaagen + + + Alžiir + + + Kairo + + + Asmara + + + Kanaari saared + + + Helsingi + + + Fidži + + + Chuuk + + + Pohnpei + + + Fääri + + + Pariis + + + + Briti suveaeg + + + + Nuuk + + + Ittoqqortoormiit + + + Ateena + + + + Iiri suveaeg + + + + Jeruusalemm + + + Mani saar + + + Kolkata + + + Bagdad + + + Teheran + + + Rooma + + + Tōkyō + + + Biškek + + + St. Kitts + + + Kuveit + + + Aktau + + + Kõzõlorda + + + Almatõ + + + St. Lucia + + + Riia + + + Maldiivid + + + Kathmandu + + + Varssavi + + + Assoorid + + + Lissabon + + + Asunción + + + Katar + + + Réunion + + + Bukarest + + + Belgrad + + + Moskva + + + Jekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Sahhalin + + + Kamtšatka + + + Anadõr + + + Singapur + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damaskus + + + Dušanbe + + + Asgabat + + + Užgorod + + + Kiiev + + + Zaporožje + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taškent + + + Vatikan + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + + Acre aeg + Acre standardaeg + Acre suveaeg + + + + + Afganistaani aeg + + + + + Kesk-Aafrika aeg + + + + + Ida-Aafrika aeg + + + + + Lõuna-Aafrika standardaeg + + + + + Lääne-Aafrika aeg + Lääne-Aafrika standardaeg + Lääne-Aafrika suveaeg + + + + + Alaska aeg + Alaska standardaeg + Alaska suveaeg + + + + + Amazonase aeg + Amazonase standardaeg + Amazonase suveaeg + + + + + Kesk-Ameerika aeg + Kesk-Ameerika standardaeg + Kesk-Ameerika suveaeg + + + + + Idaranniku aeg + Idaranniku standardaeg + Idaranniku suveaeg + + + + + Mäestikuvööndi aeg + Mäestikuvööndi standardaeg + Mäestikuvööndi suveaeg + + + + + Vaikse ookeani aeg + Vaikse ookeani standardaeg + Vaikse ookeani suveaeg + + + + + Anadõri aeg + Anadõri standardaeg + Anadõri suveaeg + + + + + Araabia aeg + Araabia standardaeg + Araabia suveaeg + + + + + Argentina aeg + Argentina standardaeg + Argentina suveaeg + + + + + Lääne-Argentina aeg + Lääne-Argentina standardaeg + Lääne-Argentina suveaeg + + + + + Armeenia aeg + Armeenia standardaeg + Armeenia suveaeg + + + + + Atlandi aeg + Atlandi standardaeg + Atlandi suveaeg + + + + + Kesk-Austraalia aeg + Kesk-Austraalia standardaeg + Kesk-Austraalia suveaeg + + + + + Kesk-Lääne Austraalia aeg + Kesk-Lääne Austraalia standardaeg + Kesk-Lääne Austraalia suveaeg + + + + + Ida-Austraalia aeg + Ida-Austraalia standardaeg + Ida-Austraalia suveaeg + + + + + Lääne-Austraalia aeg + Lääne-Austraalia standardaeg + Lääne-Austraalia suveaeg + + + + + Aserbaidžaani aeg + Aserbaidžaani standardaeg + Aserbaidžaani suveaeg + + + + + Assooride aeg + Assooride standardaeg + Assooride suveaeg + + + + + Bangladeshi aeg + Bangladeshi standardaeg + Bangladeshi suveaeg + + + + + Bhutani aeg + + + + + Boliivia aeg + + + + + Brasiilia aeg + Brasiilia standardaeg + Brasiilia suveaeg + + + + + Brunei aeg + + + + + Roheneemesaarte aeg + Roheneemesaarte standardaeg + Roheneemesaarte suveaeg + + + + + Tšamorro standardaeg + + + + + Chathami aeg + Chathami standardaeg + Chathami suveaeg + + + + + Tšiili aeg + Tšiili standardaeg + Tšiili suveaeg + + + + + Hiina aeg + Hiina standardaeg + Hiina suveaeg + + + + + Tšojbalsani aeg + Tšojbalsani standardaeg + Tšojbalsani suveaeg + + + + + Jõulusaare aeg + + + + + Kookossaarte aeg + + + + + Colombia aeg + Colombia standardaeg + Colombia suveaeg + + + + + Cooki saarte aeg + Cooki saarte standardaeg + Cooki saarte osaline suveaeg + + + + + Kuuba aeg + Kuuba standardaeg + Kuuba suveaeg + + + + + Davise aeg + + + + + Dumont-d'Urville'i aeg + + + + + Ida-Timori aeg + + + + + Lihavõttesaare aeg + Lihavõttesaare standardaeg + Lihavõttesaare suveaeg + + + + + Ecuadori aeg + + + + + Kesk-Euroopa aeg + Kesk-Euroopa standardaeg + Kesk-Euroopa suveaeg + + + + + Ida-Euroopa aeg + Ida-Euroopa standardaeg + Ida-Euroopa suveaeg + + + + + Lääne-Euroopa aeg + Lääne-Euroopa standardaeg + Lääne-Euroopa suveaeg + + + + + Falklandi saarte aeg + Falklandi saarte standardaeg + Falklandi saarte suveaeg + + + + + Fidži aeg + Fidži standardaeg + Fidži suveaeg + + + + + Prantsuse Guajaana aeg + + + + + Prantsuse Lõunaalade ja Antarktika aeg + + + + + Galapagose aeg + + + + + Gambier' aeg + + + + + Gruusia aeg + Gruusia standardaeg + Gruusia suveaeg + + + + + Gilberti saarte aeg + + + + + Greenwichi aeg + + + + + Ida-Gröönimaa aeg + Ida-Gröönimaa standardaeg + Ida-Gröönimaa suveaeg + + + + + Lääne-Gröönimaa aeg + Lääne-Gröönimaa standardaeg + Lääne-Gröönimaa suveaeg + + + + + Guami standardaeg + + + + + Pärsia lahe standardaeg + + + + + Guyana aeg + + + + + Hawaii-aleuudi aeg + Hawaii-Aleuudi standardaeg + Hawaii-Aleuudi suveaeg + + + + + Hongkongi aeg + Hongkongi standardaeg + Hongkongi suveaeg + + + + + Hovdi aeg + Hovdi standardaeg + Hovdi suveaeg + + + + + India aeg + + + + + India ookeani aeg + + + + + Indohiina aeg + + + + + Kesk-Indoneesia aeg + + + + + Ida-Indoneesia aeg + + + + + Lääne-Indoneesia aeg + + + + + Iraani aeg + Iraani standardaeg + Iraani suveaeg + + + + + Irkutski aeg + Irkutski standardaeg + Irkutski suveaeg + + + + + Iisraeli aeg + Iisraeli standardaeg + Iisraeli suveaeg + + + + + Jaapani aeg + Jaapani standardaeg + Jaapani suveaeg + + + + + Kamtšatka aeg + Kamtšatka standardaeg + Kamtšatka suveaeg + + + + + Ida-Kasahstani aeg + + + + + Lääne-Kasahstani aeg + + + + + Korea aeg + Korea standardaeg + Korea suveaeg + + + + + Kosrae aeg + + + + + Krasnojarski aeg + Krasnojarski standardaeg + Krasnojarski suveaeg + + + + + Kõrgõzstani aeg + + + + + Line'i saarte aeg + + + + + Lord Howe aeg + Lord Howe standardaeg + Lord Howe suveaeg + + + + + Macquarie saare aeg + + + + + Magadani aeg + Magadani standardaeg + Magadani suveaeg + + + + + Malaisia ​​aeg + + + + + Maldiivide aeg + + + + + Markiisaarte aeg + + + + + Marshalli saarte aeg + + + + + Mauritiuse aeg + Mauritiuse standardaeg + Mauritiuse suveaeg + + + + + Mawsoni aeg + + + + + Ulaanbaatari aeg + Ulaanbaatari standardaeg + Ulaanbaatari suveaeg + + + + + Moskva aeg + Moskva standardaeg + Moskva suveaeg + + + + + Birma aeg + + + + + Nauru aeg + + + + + Nepali aeg + + + + + Uus-Kaledoonia aeg + Uus-Kaledoonia standardaeg + Uus-Kaledoonia suveaeg + + + + + Uus-Meremaa aeg + Uus-Meremaa standardaeg + Uus-Meremaa suveaeg + + + + + Newfoundlandi aeg + Newfoundlandi standardaeg + Newfoundlandi suveaeg + + + + + Niue aeg + + + + + Norfolki saarte aeg + + + + + Fernando de Noronha aeg + Fernando de Noronha standardaeg + Fernando de Noronha suveaeg + + + + + Novosibirski aeg + Novosibirski standardaeg + Novosibirski suveaeg + + + + + Omski aeg + Omski standardaeg + Omski suveaeg + + + + + Pakistani aeg + Pakistani standardaeg + Pakistani suveaeg + + + + + Belau aeg + + + + + Paapua Uus-Guinea aeg + + + + + Paraguay aeg + Paraguay standardaeg + Paraguay suveaeg + + + + + Peruu aeg + Peruu standardaeg + Peruu suveaeg + + + + + Filipiinide aeg + Filipiinide standardaeg + Filipiinide suveaeg + + + + + Fööniksisaarte aeg + + + + + Saint-Pierre’i ja Miqueloni aeg + Saint-Pierre’i ja Miqueloni standardaeg + Saint-Pierre’i ja Miqueloni suveaeg + + + + + Pitcairni aeg + + + + + Pohnpei aeg + + + + + Réunioni aeg + + + + + Rothera aeg + + + + + Sahhalini aeg + Sahhalini standardaeg + Sahhalini suveaeg + + + + + Samara aeg + Samara standardaeg + Samara suveaeg + + + + + Samoa aeg + Samoa standardaeg + Samoa suveaeg + + + + + Seišellide aeg + + + + + Singapuri standardaeg + + + + + Saalomoni saarte aeg + + + + + Lõuna-Georgia aeg + + + + + Suriname aeg + + + + + Syowa aeg + + + + + Tahiti aeg + + + + + Taipei aeg + Taipei standardaeg + Taipei suveaeg + + + + + Tadžikistani aeg + + + + + Tokelau aeg + + + + + Tonga aeg + Tonga standardaeg + Tonga suveaeg + + + + + Chuuki aeg + + + + + Türkmenistani aeg + Türkmenistani standardaeg + Türkmenistani suveaeg + + + + + Tuvalu aeg + + + + + Uruguay aeg + Uruguay standardaeg + Uruguay suveaeg + + + + + Usbekistani aeg + Usbekistani standardaeg + Usbekistani suveaeg + + + + + Vanuatu aeg + Vanuatu standardaeg + Vanuatu suveaeg + + + + + Venezuela aeg + + + + + Vladivostoki aeg + Vladivostoki standardaeg + Vladivostoki suveaeg + + + + + Volgogradi aeg + Volgogradi standardaeg + Volgogradi suveaeg + + + + + Vostoki aeg + + + + + Wake'i aeg + + + + + Wallise ja Futuna aeg + + + + + Jakutski aeg + Jakutski standardaeg + Jakutski suveaeg + + + + + Jakaterinburgi aeg + Jekaterinburgi standardaeg + Jakaterinburgi suveaeg + + + + + + + , +   + ; + % + + + - + ×10^ + × + + + NaN + + + + + #,##0.### + + + + + 0 tuhat + 0 tuhat + 00 tuhat + 00 tuhat + 000 tuhat + 000 tuhat + 0 miljon + 0 miljonit + 00 miljon + 00 miljonit + 000 miljon + 000 miljonit + 0 miljard + 0 miljardit + 00 miljard + 00 miljardit + 000 miljard + 000 miljardit + 0 triljon + 0 triljonit + 00 triljon + 00 triljonit + 000 triljon + 000 triljonit + + + + + 0 tuh + 0 tuh + 00 tuh + 00 tuh + 000 tuh + 000 tuh + 0 mln + 0 mln + 00 mln + 00 mln + 000 mln + 000 mln + 0 mld + 0 mld + 00 mld + 00 mld + 000 mld + 000 mld + 0 trl + 0 trl + 00 trl + 00 trl + 000 trl + 000 trl + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + + + + Andorra peseeta + + + Araabia Ühendemiraatide dirhem + Araabia Ühendemiraatide dirhem + Araabia Ühendemiraatide dirhemit + + + Afganistani afgaani, 1927-2002 + + + Afganistani afgaani + Afganistani afgaani + Afganistani afgaanit + + + Albaania lekk + Albaania lekk + Albaania lekki + + + Armeenia dramm + Armeenia dramm + Armeenia drammi + + + Hollandi Antillide kulden + Hollandi Antillide kulden + Hollandi Antillide kuldnat + + + Angola kvanza + Angola kvanza + Angola kvanzat + + + Angola kvanza, 1977-1990 + + + Angola kvanza, 1990-2000 + + + Angola reformitud kvanza, 1995-1999 + + + Argentina austral + + + Argentina peeso, 1983-1985 + + + Argentina peeso + Argentina peeso + Argentina peesot + + + Austria šilling + + + Austraalia dollar + Austraalia dollar + Austraalia dollarit + AU$ + + + Aruba guilder + Aruba guilder + Aruba guilderit + + + Aserbaidžaani manat, 1993-2006 + + + Aserbaidžaani manat + Aserbaidžaani manat + Aserbaidžaani manatit + + + Bosnia-Hertsegoviina dinaar + + + Bosnia-Hertsegoviina mark + Bosnia-Hertsegoviina mark + Bosnia-Hertsegoviina marka + + + Barbadose dollar + Barbadose dollar + Barbadose dollarit + + + Bangladeshi taka + Bangladeshi taka + Bangladeshi takat + + + Belgia konverteeritav frank + + + Belgia frank + + + Belgia arveldusfrank + + + Bulgaaria püsiv leev + + + Bulgaaria leev + Bulgaaria leev + Bulgaaria leevi + + + Bahreini dinaar + Bahreini dinaar + Bahreini dinaari + + + Burundi frank + Burundi frank + Burundi franki + + + Bermuda dollar + Bermuda dollar + Bermuda dollarit + + + Brunei dollar + Brunei dollar + Brunei dollarit + + + Bolivia boliviaano + Bolivia boliviaano + Bolivia boliviaanot + + + Boliivia peeso + + + Brasiilia krusado + + + Brasiilia reaal + Brasiilia reaal + Brasiilia reaali + R$ + + + Bahama dollar + Bahama dollar + Bahama dollarit + + + Bhutani ngultrum + Bhutani ngultrum + Bhutani ngultrumit + + + Birma kjatt + + + Botswana pula + Botswana pula + Botswana pulat + + + Valgevene uus rubla, 1994-1999 + + + Valgevene rubla + Valgevene rubla + Valgevene rubla + + + Belize dollar + Belize dollar + Belize dollarit + + + Kanada dollar + Kanada dollar + Kanada dollarit + CA$ + + + Kongo frank + Kongo frank + Kongo franki + + + Šveitsi frank + Šveitsi frank + Šveitsi franki + + + Tšiili peeso + Tšiili peeso + Tšiili peesot + + + Hiina jüaan + Hiina jüaan + Hiina jüaani + CN¥ + + + Kolumbia peeso + Kolumbia peeso + Kolumbia peesot + + + Costa Rica colón + Costa Rica colón + Costa Rica colóni + + + Serbia vana dinaar + + + Kuuba konverteeritav peeso + Kuuba konverteeritav peeso + Kuuba konverteeritavat peesot + + + Kuuba peeso + Kuuba peeso + Kuuba peesot + + + Roheneemesaarte eskuudo + Roheneemesaarte eskuudo + Roheneemesaarte eskuudot + + + Küprose nael + + + Tšehhi kroon + Tšehhi kroon + Tšehhi krooni + + + Saksa mark + + + Djibouti frank + Djibouti frank + Djibouti franki + + + Taani kroon + Taani kroon + Taani krooni + + + Dominikaani peeso + Dominikaani peeso + Dominikaani peesot + + + Alžeeria dinaar + Alžeeria dinaar + Alžeeria dinaari + + + Ecuadori sukre + + + Eesti kroon + Eesti kroon + Eesti krooni + kr + . +   + + + Egiptuse nael + Egiptuse nael + Egiptuse naela + + + Eritrea nakfa + Eritrea nakfa + Eritrea nakfat + + + Hispaania peseeta + + + Etioopia birr + Etioopia birr + Etioopia birri + + + euro + euro + eurot + + + + Soome mark + + + Fidži dollar + Fidži dollar + Fidži dollarit + + + Falklandi saarte nael + Falklandi saarte nael + Falklandi saarte naela + + + Prantsuse frank + + + Suurbritannia naelsterling + Suurbritannia naelsterling + Suurbritannia naelsterlingit + £ + + + Gruusia lari + Gruusia lari + Gruusia lari + + + Ghana sedi + + + Ghana cedi + Ghana cedi + Ghana cedit + + + Gibraltari nael + Gibraltari nael + Gibraltari naela + + + Gambia dalasi + Gambia dalasi + Gambia dalasit + + + Guinea frank + Guinea frank + Guinea franki + + + Guinea syli + + + Kreeka drahm + + + Guatemala ketsal + Guatemala ketsal + Guatemala ketsalit + + + Guinea-Bissau peeso + + + Guyana dollar + Guyana dollar + Guyana dollarit + + + Hongkongi dollar + Hongkongi dollar + Hongkongi dollarit + HK$ + + + Hondurase lempiira + Hondurase lempiira + Hondurase lempiirat + + + Horvaatia kuna + Horvaatia kuna + Horvaatia kunat + + + Haiti gurd + Haiti gurd + Haiti gurdi + + + Ungari forint + Ungari forint + Ungari forintit + + + Indoneesia ruupia + Indoneesia ruupia + Indoneesia ruupiat + + + Iiri nael + + + Iisraeli nael + + + Iisraeli uus seekel + Iisraeli uus seekel + Iisraeli uut seeklit + + + + India ruupia + India ruupia + India ruupiat + + + + Iraagi dinaar + Iraagi dinaar + Iraagi dinaari + + + Iraani riaal + Iraani riaal + Iraani riaali + + + Islandi kroon + Islandi kroon + Islandi krooni + + + Itaalia liir + + + Jamaica dollar + Jamaica dollar + Jamaica dollarit + + + Jordaania dinaar + Jordaania dinaar + Jordaania dinaari + + + Jaapani jeen + Jaapani jeen + Jaapani jeeni + ¥ + + + Kenya šilling + Kenya šilling + Kenya šillingit + + + Kõrgõzstani somm + Kõrgõzstani somm + Kõrgõzstani sommi + + + Kambodža riaal + Kambodža riaal + Kambodža riaali + + + Komooride frank + Komooride frank + Komooride franki + + + Põhja-Korea vonn + Põhja-Korea vonn + Põhja-Korea vonni + + + Lõuna-Korea vonn + Lõuna-Korea vonn + Lõuna-Korea vonni + + + + Kuveidi dinaar + Kuveidi dinaar + Kuveidi dinaari + + + Caymani saarte dollar + Caymani saarte dollar + Caymani saarte dollarit + + + Kasahstani tenge + Kasahstani tenge + Kasahstani tenget + + + Laose kiip + Laose kiip + Laose kiipi + + + Liibanoni nael + Liibanoni nael + Liibanoni naela + + + Sri Lanka ruupia + Sri Lanka ruupia + Sri Lanka ruupiat + + + Libeeria dollar + Libeeria dollar + Libeeria dollarit + + + Lesotho loti + + + Leedu litt + Leedu litt + Leedu litti + + + Luksemburgi frank + + + Läti latt + Läti latt + Läti latti + + + Liibüa dinaar + Liibüa dinaar + Liibüa dinaari + + + Maroko dirhem + Maroko dirhem + Maroko dirhemit + + + Moldova leu + Moldova leu + Moldova leud + + + Madagaskari ariary + Madagaskari ariary + Madagaskari ariaryt + + + Makedoonia denaar + Makedoonia denaar + Makedoonia denaari + + + Myanmari kjatt + Myanmari kjatt + Myanmari kjatti + + + Mongoolia tugrik + Mongoolia tugrik + Mongoolia tugrikut + + + Macao pataka + Macao pataka + Macao patakat + + + Mauritaania ugia + Mauritaania ugia + Mauritaania ugiat + + + Malta liir + + + Mauritiuse ruupia + Mauritiuse ruupia + Mauritiuse ruupiat + + + Maldiivide ruupia + Maldiivide ruupia + Maldiivide ruupiat + + + Malawi kvatša + Malawi kvatša + Malawi kvatšat + + + Mehhiko peeso + Mehhiko peeso + Mehhiko peesot + MX$ + + + Mehhiko peeso, 1861-1990 + + + Malaisia ringgit + Malaisia ringgit + Malaisia ringgitit + + + Mosambiigi metikal + Mosambiigi metikal + Mosambiigi metikali + + + Namiibia dollar + Namiibia dollar + Namiibia dollarit + + + Nigeeria naira + Nigeeria naira + Nigeeria nairat + + + Nicaragua kordoba + + + Nicaragua kuldkordoba + Nicaragua kuldkordoba + Nicaragua kuldkordobat + + + Hollandi kulden + + + Norra kroon + Norra kroon + Norra krooni + + + Nepali ruupia + Nepali ruupia + Nepali ruupiat + + + Uus-Meremaa dollar + Uus-Meremaa dollar + Uus-Meremaa dollarit + NZ$ + + + Omaani riaal + Omaani riaal + Omaani riaali + + + Panama balboa + Panama balboa + Panama balboad + + + Peruu inti + + + Peruu uus soll + Peruu uus soll + Peruu uut solli + + + Peruu soll + + + Paapua Uus-Guinea kina + Paapua Uus-Guinea kina + Paapua Uus-Guinea kinat + + + Filipiinide peeso + Filipiinide peeso + Filipiinide peesot + + + Pakistani ruupia + Pakistani ruupia + Pakistani ruupiat + + + Poola zlott + Poola zlott + Poola zlotti + + + Poola zlott, 1950-1995 + + + Portugali eskuudo + + + Paraguai guaranii + Paraguai guaranii + Paraguai guaraniid + + + Quatari riaal + Quatari riaal + Quatari riaali + + + Rumeenia lei, -2005 + + + Rumeenia lei + Rumeenia lei + Rumeenia leid + + + Serbia dinaar + Serbia dinaar + Serbia dinaari + + + Venemaa rubla + Venemaa rubla + Venemaa rubla + + + Venemaa rubla, 1991-1998 + + + Rwanda frank + Rwanda frank + Rwanda franki + + + Saudi-Araabia riaal + Saudi-Araabia riaal + Saudi-Araabia riaali + + + Saalomoni saarte dollar + Saalomoni saarte dollar + Saalomoni saarte dollarit + + + Seišelli saarte ruupia + Seišelli saarte ruupia + Seišelli saarte ruupiat + + + Sudaani nael + Sudaani nael + Sudaani naela + + + Sudaani nael, 1957-1998 + + + Rootsi kroon + Rootsi kroon + Rootsi krooni + + + Singapuri dollar + Singapuri dollar + Singapuri dollarit + + + Saint Helena nael + Saint Helena nael + Saint Helena naela + + + Sloveenia tolar + + + Slovakkia kroon + Slovakkia kroon + Slovakkia krooni + + + Sierra Leone leoone + Sierra Leone leoone + Sierra Leone leoonet + + + Somaalia šilling + Somaalia šilling + Somaalia šillingit + + + Surinami dollar + Surinami dollar + Surinami dollarit + + + Surinami kulden + + + Lõuna-Sudaani nael + Lõuna-Sudaani nael + Lõuna-Sudaani naela + + + São Tomé ja Príncipe dobra + São Tomé ja Príncipe dobra + São Tomé ja Príncipe dobrat + + + NSVL rubla + + + Salvadori koloon + + + Süüria nael + Süüria nael + Süüria naela + + + Svaasimaa lilangeni + Svaasimaa lilangeni + Svaasimaa lilangenit + + + Tai baat + Tai baat + Tai baati + ฿ + + + Tadžikistani somoni + Tadžikistani somoni + Tadžikistani somonit + + + Türkmenistani manat, 1993-2009 + + + Türkmenistani manat + Türkmenistani manat + Türkmenistani manatit + + + Tuneesia dinaar + Tuneesia dinaar + Tuneesia dinaari + + + Tonga pa'anga + Tonga pa'anga + Tonga pa'angat + + + Timori eskuudo + + + Türgi liir + + + Türgi uus liir + Türgi uus liir + Türgi uut liiri + + + Trinidadi ja Tobago dollar + Trinidadi ja Tobago dollar + Trinidadi ja Tobago dollarit + + + Taiwani dollar + Taiwani dollar + Taiwani dollarit + NT$ + + + Tansaania šilling + Tansaania šilling + Tansaania šillingit + + + Ukraina grivna + Ukraina grivna + Ukraina grivnat + + + Ukraina karbovanets + + + Uganda šilling + Uganda šilling + Uganda šillingit + + + USA dollar + USA dollar + USA dollarit + $ + + + USA järgmise päeva dollar + + + USA sama päeva dollar + + + Uruguai peeso + Uruguai peeso + Uruguai peesot + + + Usbekistani somm + Usbekistani somm + Usbekistani sommi + + + Venezuela bolívar (1871–2008) + Venezuela bolívar (1871–2008) + Venezuela boliivarit (1871–2008) + + + Venezuela bolívar + Venezuela bolívar + Venezuela boliivarit + + + Vietnami dong + Vietnami dong + Vietnami dongi + + + + Vanuatu vatu + Vanuatu vatu + Vanuatu vatut + + + Lääne-Samoa tala + Lääne-Samoa tala + Lääne-Samoa tala + + + CFA frank BEAC + CFA frank BEAC + CFA franki BEAC + FCFA + + + hõbe + hõbe + hõbedat + + + kuld + kuld + kulda + + + EURCO + + + Euroopa rahaühik + + + Euroopa rahaline arvestusühik (XBC) + + + Euroopa rahaline arvestusühik (XBD) + + + Ida-Kariibi dollar + Ida-Kariibi dollar + Ida-Kariibi dollarit + EC$ + + + Rahvusvahelise Valuutafondi arvestusühik + + + eküü + + + Prantsuse kuldfrank + + + Prantsuse UIC-frank + + + Aafrika ühisfrank BCEAO + Aafrika ühisfrank BCEAO + Aafrika ühisfranki BCEAO + CFA + + + pallaadium + pallaadium + pallaadiumit + + + Prantsuse Vaikse-Ookeani frank + Prantsuse Vaikse-Ookeani frank + Prantsuse Vaikse-Ookeani franki + CFPF + + + plaatina + plaatina + plaatina + + + vääringute testkood + + + määramata rahaühik + määramata rahaühik + määramata rahaühikut + + + Jeemeni dinaar + + + Jeemeni riaal + Jeemeni riaal + Jeemeni riaali + + + Jugoslaavia uus dinaar + + + Jugoslaavia konverteeritav dinaar + + + Lõuna-Aafrika rand + Lõuna-Aafrika rand + LAVi randi + + + Sambia kvatša (1968–2012) + Sambia kvatša (1968–2012) + Sambia kvatšat (1968–2012) + + + Sambia kvatša + Sambia kvatša + Sambia kvatšat + + + Sairi zaire + + + Zimbabwe dollar + + + + ⩾{0} + {0}‒{1} + + + + + + {0} {1} kohta + + + {0} maa gravitatsiooni + {0} maa gravitatsiooni + + + {0} kaareminut + {0} kaareminut + + + {0} kaaresekund + {0} kaaresekund + + + {0} kraad + {0} kraadi + + + {0} aaker + {0} aakrit + + + {0} hektar + {0} hektarit + + + {0} ruutjalg + {0} ruutjalga + + + {0} ruutkilomeeter + {0} ruutkilomeetrit + + + {0} ruutmeeter + {0} ruutmeetrit + + + {0} ruutmiil + {0} ruutmiili + + + {0} ööpäev + {0} ööpäeva + + + {0} tund + {0} tundi + + + {0} millisekund + {0} millisekundit + + + {0} minut + {0} minutit + + + {0} kuu + {0} kuud + + + {0} sekund + {0} sekundit + + + {0} nädal + {0} nädalat + + + {0} aasta + {0} aastat + + + {0} sentimeeter + {0} sentimeetrit + + + {0} jalg + {0} jalga + + + {0} toll + {0} tolli + + + {0} kilomeeter + {0} kilomeetrit + + + {0} valgusaasta + {0} valgusaastat + + + {0} meeter + {0} meetrit + + + {0} miil + {0} miili + + + {0} millimeeter + {0} millimeetrit + + + {0} pikomeeter + {0} pikomeetrit + + + {0} jard + {0} jardi + + + {0} gramm + {0} grammi + + + {0} kilogramm + {0} kilogrammi + + + {0} unts + {0} untsi + + + {0} nael + {0} naela + + + {0} hobujõud + {0} hobujõudu + + + {0} kilovatt + {0} kilovatti + + + {0} vatt + {0} vatti + + + {0} hektopaskal + {0} hektopaskalit + + + {0} toll elavhõbedasammast + {0} tolli elavhõbedasammast + + + {0} millibaar + {0} millibaari + + + {0} kilomeeter tunnis + {0} kilomeetrit tunnis + + + {0} meeter sekundis + {0} meetrit sekundis + + + {0} miil tunnis + {0} miili tunnis + + + {0} Celsiuse kraad + {0} Celsiuse kraadi + + + {0} Fahrenheiti kraad + {0} Fahrenheiti kraadi + + + {0} kuupkilomeeter + {0} kuupkilomeetrit + + + {0} kuupmiil + {0} kuupmiili + + + {0} liiter + {0} liitrit + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} aaker + {0} aakrit + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} päev + {0} päeva + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} kuu + {0} kuud + + + {0} s + {0} s + + + {0} nädal + {0} nädalat + + + {0} a + {0} a + + + {0} cm + {0} cm + + + {0} jalg + {0} jalga + + + {0} toll + {0} tolli + + + {0} km + {0} km + + + {0} valgusa. + {0} valgusa. + + + {0} m + {0} m + + + {0} miil + {0} miili + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} jard + {0} jardi + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hj + {0} hj + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} toll Hg + {0} tolli Hg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} aaker + {0} aakrit + + + {0}ha + {0}ha + + + {0} ft² + {0} ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0} p + {0} p + + + {0} h + {0} h + + + {0}ms + {0}ms + + + {0} min + {0} min + + + {0} k + {0} k + + + {0} s + {0} s + + + {0} n + {0} n + + + {0} a + {0} a + + + {0} cm + {0} cm + + + {0} jalg + {0} jalga + + + {0} toll + {0} tolli + + + {0} km + {0} km + + + {0} valgusa. + {0} valgusa. + + + {0} m + {0} m + + + {0} miil + {0} miili + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} jard + {0} jardi + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hj + {0} hj + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0} hPa + {0} hPa + + + {0} toll Hg + {0} tolli Hg + + + {0} mbar + {0} mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + + + {0} ° + {0} ° + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} ja {1} + {0} ja {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + jah:j + ei:e + + + + diff --git a/library/Zend/Locale/Data/et_EE.xml b/library/Zend/Locale/Data/et_EE.xml new file mode 100755 index 000000000..668cb0c06 --- /dev/null +++ b/library/Zend/Locale/Data/et_EE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/eu.xml b/library/Zend/Locale/Data/eu.xml new file mode 100755 index 000000000..20f4016ff --- /dev/null +++ b/library/Zend/Locale/Data/eu.xml @@ -0,0 +1,4137 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abkhazera + Acholiera + afrikaansa + Akanera + amharera + arabiera + arabiera moderno estandarra + assamera + aimara + azerbaijanera + azeriera + bielorrusiera + Bembera + bulgariera + bengalera + tibetera + Bretoiera + bosniera + katalana + Txerokiera + Soraniera + Korsikera + txekiera + galesera + daniera + alemana + aleman garaia (Suitza) + divehiera + dzongkha + Eweera + efikera + greziera + ingelesa + ingelesa (AEB) + esperantoa + espainiera + espainiera (Europa) + estoniera + euskara + persiera + finlandiera + tagaloga + fijiera + faroera + frantsesa + frisiera + gaelikoa + Ga + eskoziako gaelikoa + galiziera + guaraniera + alemana (Suitza) + gujaratera + hausa + hawaiiera + hebreera + hindia + kroaziera + haitiera + hungariera + armeniera + Interlingua + indonesiera + interlingue + igboera + islandiera + italiera + japoniera + javera + georgiera + Kikongoa + kazakhera + khemerera + kannadera + koreera + kashmirera + kurduera + kirgizera + latina + luxenburgera + Gandera + lingala + laosera + Loziera + lituaniera + Luba-lulua + letoniera + Mauritaniako kreolera + malagasyera + maoriera + mazedoniera + malayalamera + mongoliera + marathera + malaysiera + maltera + hizkuntza anitzak + burmatarra + bokmala (Norvegia) + iparraldeko ndebeleera + nepalera + nederlandera + flandriera + nynorsk norvegiera + norvegiera + pediera + nyanja + Ankolera + Okzitaniera + Oromoera + oriyera + osetiera + punjabera + poloniera + paxtuera + pashtoera + portugesa + portugesa (Europa) + quechuera + erromantxera + rundiera + errumaniera + errusiera + kinyaruanda + sanskritoa + sindhia + iparraldeko samiera + sangoera + serbokroaziera + sinhala + eslovakiera + esloveniera + samoera + shonera + somaliera + albaniera + serbiera + swatiera + hegoaldeko sothoera + sundanera + suediera + swahili + tamilera + teluguera + tetuma + tajikistanera + thailandiera + tigriñera + turkmeniera + tagalog + Klingonera + tswanera + tongera + tok pisina + turkiera + tsongera + tatarera + Tumbukera + twia + tahitiera + uigurrera + ukrainera + hizkuntza ezezaguna + urdua + uzbekera + vendera + vietnamera + wolofera + xhosera + Jiddisha + yorubera + tamazight estandarra + txinera + txinera soildua + txinera tradizionala + zuluera + ez dago eduki linguistikorik + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundua + Afrika + Ipar Amerika + Hego Amerika + Ozeania + Afrika mendebaldea + Erdialdeko Amerika + Afrika ekialdea + Afrika iparraldea + Erdialdeko Afrika + Afrika hegoaldea + Amerika + Amerika iparraldea + Karibea + Asia ekialdea + Asia hegoaldea + Asia hego-ekialdea + Europa hegoaldea + Australasia + Melanesia + Mikronesia eskualdea + Polinesia + Asia + Asia erdialdea + Asia mendebaldea + Europa + Europa ekialdea + Europa iparraldea + Europa mendebaldea + Latinoamerika + Ascension uhartea + Andorra + Arabiar Emirrerri Batuak + Afganistan + Antigua eta Barbuda + Angila + Albania + Armenia + Holandarren Antillak + Angola + Antartika + Argentina + Amerikar Samoa + Austria + Australia + Aruba + Aland uharteak + Azerbaijan + Bosnia-Herzegovina + Barbados + Bangladesh + Belgika + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + San Bartolome + Bermuda + Brunei + Bolivia + Karibeko Herbehereak + Brasil + Bahamak + Bhutan + Bouvet Uhartea + Botswana + Bielorrusia + Belize + Kanada + Cocos (Keeling) uharteak + Kongoko Errepublika Demokratikoa + Kongo (KED) + Afrika Erdiko Errepublika + Kongo (Brazzaville) + Kongo (errepublika) + Suitza + Boli Kosta + Cook uharteak + Txile + Kamerun + Txina + Kolonbia + Clipperton uhartea + Costa Rica + Kuba + Cabo Verde + Curaçao + Christmas uhartea + Zipre + Txekiar Errepublika + Alemania + Diego Garcia + Djibuti + Danimarka + Dominika + Dominikar Errepublika + Aljeria + Ceuta eta Melilla + Ekuador + Estonia + Egipto + Mendebaldeko Sahara + Eritrea + Espainia + Etiopia + Europar Batasuna + Finlandia + Fiji + Malvinak + Falkland uharteak (Malvina uharteak) + Mikronesia + Faroe uharteak + Frantzia + Gabon + Erresuma Batua + Grenada + Georgia + Guyana Frantsesa + Guernsey + Ghana + Gibraltar + Groenlandia + Gambia + Ginea + Guadalupe + Ekuatore Ginea + Grezia + Hegoaldeko Georgia eta Hegoaldeko Sandwich uharteak + Guatemala + Guam + Ginea-Bissau + Guyana + Hong Kong AEB Txina + Hong Kong + Heard eta McDonald uharteak + Honduras + Kroazia + Haiti + Hungaria + Kanariak + Indonesia + Irlanda + Israel + Man uhartea + India + Indiako Ozeanoko lurralde britainiarra + Irak + Iran + Islandia + Italia + Jersey + Jamaika + Jordania + Japonia + Kenya + Kirgizistan + Kanbodia + Kiribati + Komoreak + Saint Kitts eta Nevis + Ipar Korea + Hego Korea + Kuwait + Kaiman uharteak + Kazakhstan + Laos + Libano + Santa Luzia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Luxenburgo + Letonia + Libia + Maroko + Monako + Moldavia + Montenegro + Saint Martin + Madagaskar + Marshall uharteak + Mazedonia + Mazedonia (Mazedoniako Yugoslaviar Errepublika ohia) + Mali + Myanmar + Mongolia + Macau AEB Txina + Macau + Iparraldeko Mariana uharteak + Martinika + Mauritania + Montserrat + Malta + Maurizio + Maldivak + Malawi + Mexiko + Malaysia + Mozambike + Namibia + Kaledonia Berria + Niger + Norfolk uhartea + Nigeria + Nikaragua + Herbehereak + Norvegia + Nepal + Nauru + Niue + Zeelanda Berria + Oman + Panama + Peru + Polinesia Frantsesa + Papua Ginea Berria + Filipinak + Pakistan + Polonia + Saint-Pierre eta Mikelune + Pitcairn uharteak + Puerto Rico + Palestinako Lurraldeak + Palestina + Portugal + Palau + Paraguai + Qatar + Mugaz kanpoko Ozeania + Reunion + Errumania + Serbia + Errusia + Ruanda + Saudi Arabia + Salomon uharteak + Seychelleak + Sudan + Suedia + Singapur + Saint Helena + Eslovenia + Svalbard eta Jan Mayen uharteak + Eslovakia + Sierra Leona + San Marino + Senegal + Somalia + Surinam + Hego Sudan + Sao Tome eta Principe + El Salvador + Sint Maarten + Siria + Swazilandia + Tristan da Cunha + Turk eta Caicos uharteak + Txad + Hegoaldeko lurralde frantsesak + Togo + Thailandia + Tadjikistan + Tokelau + Ekialdeko Timor + Timor ekialdea + Turkmenistan + Tunisia + Tonga + Turkia + Trinidad eta Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + Ameriketako Estatu Batuetako Kanpoaldeko Uharte Txikiak + Ameriketako Estatu Batuak + AEB + Uruguai + Uzbekistan + Vatikano Hiria + Saint Vincent eta Grenadinak + Venezuela + Birjina uharte britainiarrak + Birjina uharte amerikarrak + Vietnam + Vanuatu + Wallis eta Futuna + Samoa + Kosovo + Yemen + Mayotte + Hegoafrika + Zambia + Zimbabwe + Eskualde ezezaguna + + + POLITON + BERRIKUSIA + SAHO + ESKOZIAR INGELESA + VALENTZIERA + + + Egutegia + Egin ez ikusi ikurren ordenari + Azentuen alderantzizko ordena + Maiuskula/Minuskula ordena + Maiuskulak eta minuskulak bereizten dituen ordena + Kana ordena + Ordenatzeko irizpidea + Araututako ordena + Zenbakizko ordena + Ordenaren sendotasuna + Moneta + Zenbakiak + Ordu-zona + Eskualdeko ezarpenen aldaera + Ordenatu ikur gisa + Erabilera pribatua + + + Digitu arabiar-hindikoak + Digitu arabiar-hindiko hedatuak + Zenbaki armeniarrak + Zenbaki armeniarrak minuskulaz + Digitu bengalarrak + Txinera tradizionalaren alfabetoa-Big5 + Egutegi budista + Txinatar egutegia + Egutegi coptiarra + Digitu devanagariak + Hurrenkera alfabetikoa + Unicode hurrenkera lehenetsia + Zenbaki etiopiarrak + Egutegi etiopiarra + Amete Alem egutegi etiopiarra + Finantza-zenbakiak + Zabalera osoko digituak + Txinera sinplifikatuaren alfabetoa -GB2312 + Zenbaki georgiarrak + Egutegi gregoriarra + Zenbaki grekoak + Zenbaki grekoak minuskulaz + Digitu gujaratarrak + Digitu gurmukhiak + Zenbaki hamartar txinatarrak + Zenbaki txinatar sinplifikatuak + Finantzetarako zenbaki txinatar sinplifikatuak + Zenbaki txinatar tradizionalak + Finantzetarako zenbaki txinatar tradizionalak + Zenbaki hebrearrak + Hebrear egutegia + Ordenatu guztiak + Indiar egutegia + Islamiar egutegia + Islamiar egutegi zibila + Japoniar egutegia + Zenbaki japoniarrak + Finantzetarako zenbaki japoniarrak + Digitu khmerarrak + Digitu kannadarrak + Digitu laostarrak + Digitu mendebaldarrak + Ordenatu minuskulak lehenik + Digitu malayalamarrak + Digitu mongoliarrak + Digitu birmaniarrak + Zenbaki-sistema + Ordenatu azentuak modu normalean + Ordenatu maiuskulak modu normalean + Ordenatu maiuskulak eta minuskulak bereizi gabe + Ordenatu kanak bereizita + Ordenatu arauak kontuan hartu gabe + Ordenatu digituak banaka + Ordenatu ikurrak + Digitu oriyarrak + Egutegi persiarra + Telefonoen zerrenda + Ordenatzeko irizpide fonetikoa + Pinyin hurrenkera + Ordenatu oinarrizko hizkiak soilik + Ordenatu azentuak / maiuskula eta minuskulak / zabalera / kanak + Erreformaren araberako hurrenkera + Txinako Errepublikako egutegia + Zenbaki erromatarrak + Zenbaki erromatarrak minuskulaz + Bilaketa orokorra + Bilatu hangularen lehen kontsonantearen arabera + Ordenatu azentuak + Ordenatu ikurrei ez ikusi eginda + Ordenatzeko irizpide estandarra + Tarteen araberako hurrenkera + Zenbaki tamilar tradizionalak + Digitu tamilarrak + Digitu teluguarrak + Ordenatu azentuak / maiuskula eta minuskulak / zabalera + Digitu thailandiarrak + Digitu tibetarrak + Tradizionala + Zenbaki tradizionalak + Radical trazuen hurrenkera + Ordenatu maiuskulak lehenik + Vai digituak + Ordenatu azentuak alderantziz + Ordenatu maiuskulak eta minuskulak bereizita + Ordenatu kanak desberdin + Ordenatu Unicode arauen arabera + Ordenatu digituak zenbakien arabera + + + BGN bihurketa + Zenbakizko bihurketa + Tonu-bihurketa + UNGEGN bihurketa + Azentu-bihurketa + Zabalera osoko karaktere-bihurketa + Zabalera erdiko karaktere-bihurketa + Jamo-bihurketa + Pinyina + Argitalpen-bihurketa + + + Sistema metrikoa + Erresuma Batuko sistema + AEBetako sistema + + + {0} + {0} + {0} + + + + [a b c ç d e f g h i j k l m n ñ o p q r s t u v w x y z] + [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0}…{1} + ? + + + « + » + + + + + + + + + BG + + + + + + + + G. 'aroko' y. 'urteko' MMMM d, EEEE + + + + + G. 'aroko' y. 'urteko' MMMM d + + + + + G. 'aroko' y('e')'ko' MMM d + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, EEEE + G. 'aroko' y. 'urtea' + G. 'aroko' y('e')'ko' MMMM + G. 'aroko' y('e')'ko' MMMM d + G. 'aroko' y('e')'ko' MMMM d, EEEE + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM/dd + MM/dd, EEEE + LLL + MMM d + MMM d, EEEE + mm:ss + y + y/MM + y/MM/dd + y/MM/dd, EEEE + y('e')'ko' MMMM + y('e')'ko' MMMM d + y('e')'ko' MMMM d, EEEE + y QQQ + y('e')'ko' QQQQ + G y + G y/MM + G y/MM/dd + G y/MM/dd, EEEE + G y MMM + G y MMM d + G y MMM d, EEEE + G y('e')'ko' MMMM + G y('e')'ko' MMMM d + G y('e')'ko' MMMM d, EEEE + G y QQQ + G y('e')'ko' QQQQ + + + {0} – {1} + + dd–dd + + + h a – h a + h–h a + + + HH–HH + + + :h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM/dd – MM/dd + MM/dd – MM/dd + + + MM/dd, EEEE – MM/dd, EEEE + MM/dd, EEEE – MM/dd, EEEE + + + MMM–MMM + + + MMMM d–d + MMMM d – MMMM d + + + MMMM d, EEEE – MMMM d, EEEE + MMMM d, EEEE – MMMM d, EEEE + + + G y–y + + + G y/MM – y/MM + G y/MM – y/MM + + + G y/MM/dd – y/MM/dd + G y/MM/dd – y/MM/dd + G y/MM/dd – y/MM/dd + + + G y/MM/dd, EEEE – y/MM/dd, EEEE + G y/MM/dd, EEEE – y/MM/dd, EEEE + G y/MM/dd, EEEE – y/MM/dd, EEEE + + + G y('e')'ko' MMMM–MMMM + G y('e')'ko' MMMM – y('e')'ko' MMMM + + + G y('e')'ko' MMMM dd–dd + G y('e')'ko' MMMM dd – MMMM dd + G y('e')'ko' MMMM dd – y('e')'ko' MMMM dd + + + G y('e')'ko' MMMM dd, EEEE – MMMM dd, EEEE + G y('e')'ko' MMMM dd, EEEE – MMMM dd, EEEE + G y('e')'ko' MMMM dd, EEEE – MMMM dd, EEEE + + + G y('e')'ko' MMMM – MMMM + G y('e')'ko' MMMM – y('e')'ko' MMMM + + + + + + + + + urt. + ots. + mar. + api. + mai. + eka. + uzt. + abu. + ira. + urr. + aza. + abe. + + + U + O + M + A + M + E + U + A + I + U + A + A + + + urtarrilak + otsailak + martxoak + apirilak + maiatzak + ekainak + uztailak + abuztuak + irailak + urriak + azaroak + abenduak + + + + + urt. + ots. + mar. + api. + mai. + eka. + uzt. + abu. + ira. + urr. + aza. + abe. + + + U + O + M + A + M + E + U + A + I + U + A + A + + + urtarrila + otsaila + martxoa + apirila + maiatza + ekaina + uztaila + abuztua + iraila + urria + azaroa + abendua + + + + + + + ig. + al. + ar. + az. + og. + or. + lr. + + + I + A + A + A + O + O + L + + + ig. + al. + ar. + az. + og. + or. + lr. + + + igandea + astelehena + asteartea + asteazkena + osteguna + ostirala + larunbata + + + + + ig. + al. + ar. + az. + og. + or. + lr. + + + I + A + A + A + O + O + L + + + ig. + al. + ar. + az. + og. + or. + lr. + + + igandea + astelehena + asteartea + asteazkena + osteguna + ostirala + larunbata + + + + + + + 1Hh + 2Hh + 3Hh + 4Hh + + + 1 + 2 + 3 + 4 + + + 1. hiruhilekoa + 2. hiruhilekoa + 3. hiruhilekoa + 4. hiruhilekoa + + + + + 1Hh + 2Hh + 3Hh + 4Hh + + + 1 + 2 + 3 + 4 + + + 1. hiruhilekoa + 2. hiruhilekoa + 3. hiruhilekoa + 4. hiruhilekoa + + + + + + + AM + PM + + + a + p + + + AM + PM + + + + + + K.a. + K.o. + + + + + + y('e')'ko' MMMM d, EEEE + + + + + y('e')'ko' MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y. 'urteko' MMM + G y. 'urteko' MMM d + G y. 'urteko' MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + M/d, E + LLL + MMM d + MMM d, E + mm:ss + y + y/M + y/M/d + y/M/d, E + y MMM + y MMM d + y MMM d, E + y('e')'ko' MMMM + y('e')'ko' MMMM d + y('e')'ko' MMMM d, E + y('e')'ko' QQQ + y('e')'ko' QQQQ + + + {0} ({1}) + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + M/d, E – M/d, E + M/d, E – M/d, E + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y + + + y/M – y/M + y/M – y/M + + + y/M/d – y/M/d + y/M/d – y/M/d + y/M/d – y/M/d + + + y/M/d, E – y/M/d, E + y/M/d, E – y/M/d, E + y/M/d, E – y/M/d, E + + + y('e')'ko' MMM–MMM + y('e')'ko' MMM – y('e')'ko' MMM + + + y('e')'ko' MMM d–d + y('e')'ko' MMM d – MMM d + y('e')'ko' MMM d – y('e')'ko' MMM d + + + y('e')'ko' MMM d, E – y('e')'ko' MMM d, E + y('e')'ko' MMM d, E – MMM d, E + y('e')'ko' MMM d, E – y('e')'ko' MMM d, E + + + y('e')'ko' MMMM–MMMM + y('e')'ko' MMMM – y('e')'ko' MMMM + + + + + + + + R.O.C. aurretik + R.O.C. + + + + + + + Aroa + + + Urtea + aurreko urtea + aurten + hurrengo urtea + + {0} urte barru + {0} urte barru + + + Duela {0} urte + Duela {0} urte + + + + Hilabetea + aurreko hilabetea + hilabete hau + hurrengo hilabetea + + {0} hilabete barru + {0} hilabete barru + + + Duela {0} hilabete + Duela {0} hilabete + + + + Astea + aurreko astea + aste hau + hurrengo astea + + {0} aste barru + {0} aste barru + + + Duela {0} aste + Duela {0} aste + + + + Eguna + herenegun + atzo + gaur + bihar + etzi + + {0} egun barru + {0} egun barru + + + Duela {0} egun + Duela {0} egun + + + + Asteguna + + + aurreko igandea + igande hau + hurrengo igandea + + + aurreko astelehena + astelehen hau + hurrengo astelehena + + + aurreko asteartea + astearte hau + hurrengo asteartea + + + aurreko asteazkena + asteazken hau + hurrengo asteazkena + + + aurreko osteguna + ostegun hau + hurrengo osteguna + + + aurreko ostirala + ostiral hau + hurrengo ostirala + + + aurreko larunbata + larunbat hau + hurrengo larunbata + + + AM//PM + + + Ordua + + {0} ordu barru + {0} ordu barru + + + Duela {0} ordu + Duela {0} ordu + + + + Minutua + + {0} minutu barru + {0} minutu barru + + + Duela {0} minutu + Duela {0} minutu + + + + Segundoa + orain + + {0} segundo barru + {0} segundo barru + + + Duela {0} segundo + Duela {0} segundo + + + + Ordu-zona + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} + {0} (udako ordua) + {0} (ordu estandarra) + {1} ({0}) + + Hiri ezezaguna + + + Tirana + + + Dumont d’Urville + + + Viena + + + Adelaida + + + Brusela + + + Saint Barthélemy + + + Atikokan + + + St. John's + + + Cabo Verde + + + Curaçao + + + Praga + + + Kopenhage + + + Dominika + + + Aljer + + + Galapagoak + + + Kairo + + + Asmara + + + Kanariak + + + Madril + + + Addis Abeba + + + Chuuk + + + Pohnpei + + + Faroe + + + + Londresko udako ordua + + Londres + + + Nuuk + + + Ittoqqortoormiit + + + Guadalupe + + + Atenas + + + + Dublingo udako ordua + + + + Man uhartea + + + Kolkata + + + Erroma + + + Jamaika + + + Tokio + + + St. Kitts + + + Seul + + + St. Lucia + + + Luxenburgo + + + Monako + + + Rangun + + + Ulan Bator + + + Martinika + + + Maurizio + + + Maldivak + + + Mexico Hiria + + + Kathmandu + + + Varsovia + + + Mikelune + + + Azoreak + + + Lisboa + + + Asunción + + + Bukarest + + + Belgrado + + + Mosku + + + Singapur + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damasko + + + Beulah, Ipar Dakota + + + New Salem, Ipar Dakota + + + Erdialdea, Ipar Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Vaticano Hiria + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + Johannesburgo + + + + Afganistango ordua + + + + + Afrika erdialdeko ordua + + + + + Afrika ekialdeko ordua + + + + + Afrika hegoaldeko ordua + + + + + Afrika mendebaldeko ordua + Afrika mendebaldeko ordu estandarra + Afrika mendebaldeko udako ordua + + + + + Alaskako ordua + Alaskako ordu estandarra + Alaskako udako ordua + + + + + Amazoniako ordua + Amazoniako ordu estandarra + Amazoniako udako ordua + + + + + Ipar Amerikako erdialdeko ordua + Ipar Amerikako erdialdeko ordu estandarra + Ipar Amerikako erdialdeko udako ordua + + + + + Ipar Amerikako ekialdeko ordua + Ipar Amerikako ekialdeko ordu estandarra + Ipar Amerikako ekialdeko udako ordua + + + + + Ipar Amerikako mendialdeko ordua + Ipar Amerikako mendialdeko ordu estandarra + Ipar Amerikako mendialdeko udako ordua + + + + + Ipar Amerikako Pazifikoko ordua + Ipar Amerikako Pazifikoko ordu estandarra + Ipar Amerikako Pazifikoko udako ordua + + + + + Anadyrreko ordua + Anadyrreko ordu estandarra + Anadyrreko udako ordua + + + + + Arabiako ordua + Arabiako ordu estandarra + Arabiako udako ordua + + + + + Argentinako ordua + Argentinako ordu estandarra + Argentinako udako ordua + + + + + Argentina mendebaldeko ordua + Argentina mendebaldeko ordu estandarra + Argentina mendebaldeko udako ordua + + + + + Armeniako ordua + Armeniako ordu estandarra + Armeniako udako ordua + + + + + Atlantikoko ordua + Atlantikoko ordu estandarra + Atlantikoko udako ordua + + + + + Australia erdialdeko ordua + Australia erdialdeko ordu estandarra + Australia erdialdeko udako ordua + + + + + Australia erdi-mendebaldeko ordua + Australia erdi-mendebaldeko ordu estandarra + Australia erdi-mendebaldeko udako ordua + + + + + Australia ekialdeko ordua + Australia ekialdeko ordu estandarra + Australia ekialdeko udako ordua + + + + + Australia mendebaldeko ordua + Australia mendebaldeko ordu estandarra + Australia mendebaldeko udako ordua + + + + + Azerbaijango ordua + Azerbaijango ordu estandarra + Azerbaijango udako ordua + + + + + Azoreetako ordua + Azoreetako ordu estandarra + Azoreetako udako ordua + + + + + Bangladesheko ordua + Bangladesheko ordu estandarra + Bangladesheko udako ordua + + + + + Bhutango ordua + + + + + Boliviako ordua + + + + + Brasiliako ordua + Brasiliako ordu estandarra + Brasiliako udako ordua + + + + + Brunei Darussalamgo ordua + + + + + Cabo Verdeko ordua + Cabo Verdeko ordu estandarra + Cabo Verdeko udako ordua + + + + + Chamorroko ordu estandarra + + + + + Chathamgo ordua + Chathamgo ordu estandarra + Chathamgo udako ordua + + + + + Txileko ordua + Txileko ordu estandarra + Txileko udako ordua + + + + + Txinako ordua + Txinako ordu estandarra + Txinako udako ordua + + + + + Choibalsango ordua + Choibalsango ordu estandarra + Choibalsango udako ordua + + + + + Christmas uharteko ordua + + + + + Cocos uharteetako ordua + + + + + Kolonbiako ordua + Kolonbiako ordu estandarra + Kolonbiako udako ordua + + + + + Cook uharteetako ordua + Cook uharteetako ordu estandarra + Cook uharteetako uda erdialdeko ordua + + + + + Kubako ordua + Kubako ordu estandarra + Kubako udako ordua + + + + + Daviseko ordua + + + + + Dumont-d'Urvilleko ordua + + + + + Ekialdeko Timorreko ordua + + + + + Pazko uharteko ordua + Pazko uharteko ordu estandarra + Pazko uharteko udako ordua + + + + + Ekuadorreko ordua + + + + + Europa erdialdeko ordua + Europa erdialdeko ordu estandarra + Europa erdialdeko udako ordua + + + CET + CET + CEST + + + + + Europa ekialdeko ordua + Europa ekialdeko ordu estandarra + Europa ekialdeko udako ordua + + + EET + EET + EEST + + + + + Europa mendebaldeko ordua + Europa mendebaldeko ordu estandarra + Europa mendebaldeko udako ordua + + + WET + WET + WEST + + + + + Falkland uharteetako ordua + Falkland uharteetako ordu estandarra + Falkland uharteetako udako ordua + + + + + Fijiko ordua + Fijiko ordu estandarra + Fijiko udako ordua + + + + + Guyana Frantseseko ordua + + + + + Frantziaren lurralde austral eta antartikoetako ordua + + + + + Galapagoetako ordua + + + + + Gambierreko ordua + + + + + Georgiako ordua + Georgiako ordu estandarra + Georgiako udako ordua + + + + + Gilbert uharteetako ordua + + + + + Greenwich meridianoko ordua + + + GMT + + + + + Groenlandia ekialdeko ordua + Groenlandia ekialdeko ordu estandarra + Groenlandia ekialdeko udako ordua + + + + + Groenlandia mendebaldeko ordua + Groenlandia mendebaldeko ordu estandarra + Groenlandia mendebaldeko udako ordua + + + + + Golkoko ordu estandarra + + + + + Guyanako ordua + + + + + Hawaii-Aleutiar uharteetako ordua + Hawaii-Aleutiar uharteetako ordu estandarra + Hawaii-Aleutiar uharteetako udako ordua + + + + + Hong Kongo ordua + Hong Kongo ordu estandarra + Hong Kongo udako ordua + + + + + Hovdeko ordua + Hovdeko ordu estandarra + Hovdeko udako ordua + + + + + Indiako ordua + + + + + Ozeano Indikoko ordua + + + + + Indotxinako ordua + + + + + Indonesia erdialdeko ordua + + + + + Indonesia ekialdeko ordua + + + + + Indonesia mendebaldeko ordua + + + + + Irango ordua + Irango ordu estandarra + Irango udako ordua + + + + + Irkutskeko ordua + Irkutskeko ordu estandarra + Irkutskeko udako ordua + + + + + Israelgo ordua + Israelgo ordu estandarra + Israelgo udako ordua + + + + + Japoniako ordua + Japoniako ordu estandarra + Japoniako udako ordua + + + + + Petropavlovsk-Kamchatskiko ordua + Petropavlovsk-Kamchatskiko ordu estandarra + Petropavlovsk-Kamchatskiko udako ordua + + + + + Kazakhstan ekialdeko ordua + + + + + Kazakhstan mendebaldeko ordua + + + + + Koreako ordua + Koreako ordu estandarra + Koreako udako ordua + + + + + Kosraeko ordua + + + + + Krasnoyarskeko ordua + Krasnoyarskeko ordu estandarra + Krasnoyarskeko udako ordua + + + + + Kirgizistango ordua + + + + + Line uharteetako ordua + + + + + Lord Howeko ordua + Lord Howeko ordu estandarra + Lord Howeko udako ordua + + + + + Macquarie uharteko ordua + + + + + Magadako ordua + Magadango ordu estandarra + Magadango udako ordua + + + + + Malaysiako ordua + + + + + Maldivetako ordua + + + + + Markesetako ordua + + + + + Marshall uharteetako ordua + + + + + Maurizioko ordua + Maurizioko ordu estandarra + Maurizioko udako ordua + + + + + Mawsoneko ordua + + + + + Ulan Batorreko ordua + Ulan Batorreko ordu estandarra + Ulan Batorreko udako ordua + + + + + Moskuko ordua + Moskuko ordu estandarra + Moskuko udako ordua + + + + + Myanmarreko ordua + + + + + Nauruko ordua + + + + + Nepalgo ordua + + + + + Kaledonia Berriako ordua + Kaledonia Berriko ordu estandarra + Kaledonia Berriko udako ordua + + + + + Zeelanda Berriko ordua + Zeelanda Berriko ordu estandarra + Zeelanda Berriko udako ordua + + + + + Ternuako ordua + Ternuako ordu estandarra + Ternuako udako ordua + + + + + Niueko ordua + + + + + Norfolk uharteetako ordua + + + + + Fernando de Noronhako ordua + Fernando de Noronhako ordu estandarra + Fernando de Noronhako udako ordua + + + + + Novosibirskeko ordua + Novosibirskeko ordu estandarra + Novosibirskeko udako ordua + + + + + Omskeko ordua + Omskeko ordu estandarra + Omskeko udako ordua + + + + + Pakistango ordua + Pakistango ordu estandarra + Pakistango udako ordua + + + + + Palauko ordua + + + + + Papua Ginea Berriko ordua + + + + + Paraguayko ordua + Paraguayko ordu estandarra + Paraguayko udako ordua + + + + + Peruko ordua + Peruko ordu estandarra + Peruko udako ordua + + + + + Filipinetako ordua + Filipinetako ordu estandarra + Filipinetako udako ordua + + + + + Phoenix uharteetako ordua + + + + + Saint-Pierre eta Mikeluneko ordua + Saint-Pierre eta Mikeluneko ordu estandarra + Saint-Pierre eta Mikeluneko udako ordua + + + + + Pitcairneko ordua + + + + + Ponapeko ordua + + + + + Reunion uharteetako ordua + + + + + Rotherako ordua + + + + + Sakhalingo ordua + Sakhalingo ordu estandarra + Sakhalingo udako ordua + + + + + Samarako ordua + Samarako ordu estandarra + Samarako udako ordua + + + + + Samoako ordua + Samoako ordu estandarra + Samoako udako ordua + + + + + Seychelle uharteetako ordua + + + + + Singapurreko ordu estandarra + + + + + Salomon uharteetako ordua + + + + + Hego Georgiako ordua + + + + + Surinamgo ordua + + + + + Syowako ordua + + + + + Tahitiko ordua + + + + + Taipeiko ordua + Taipeiko ordu estandarra + Taipeiko udako ordua + + + + + Tadjikistango ordua + + + + + Tokelauko ordua + + + + + Tongako ordua + Tongako ordu estandarra + Tongako udako ordua + + + + + Chuukeko ordua + + + + + Turkmenistango ordua + Turkmenistango ordu estandarra + Turkmenistango udako ordua + + + + + Tuvaluko ordua + + + + + Uruguayko ordua + Uruguayko ordu estandarra + Uruguayko udako ordua + + + + + Uzbekistango ordua + Uzbekistango ordu estandarra + Uzbekistango udako ordua + + + + + Vanuatuko ordua + Vanuatuko ordu estandarra + Vanuatuko udako ordua + + + + + Venezuelako ordua + + + + + Vladivostokeko ordua + Vladivostokeko ordu estandarra + Vladivostokeko udako ordua + + + + + Volgogradeko ordua + Volgogradeko ordu estandarra + Volgogradeko udako ordua + + + + + Vostokeko ordua + + + + + Wake uharteko ordua + + + + + Wallis eta Futunako ordua + + + + + Yakutskeko ordua + Yakutskeko ordu estandarra + Yakutskeko udako ordua + + + + + Yekaterinburgeko ordua + Jekaterinburgeko ordu estandarra + Yekaterinburgeko udako ordua + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0000 + 0000 + 00000 + 00000 + 000000 + 000000 + 0 milioi + 0 milioi + 00 milioi + 00 milioi + 000 milioi + 000 milioi + 0000 milioi + 0000 milioi + 00000 milioi + 00000 milioi + 000000 milioi + 000000 milioi + 0 bilioi + 0 bilioi + 00 bilioi + 00 bilioi + 000 bilioi + 000 bilioi + + + + + 0000 + 0000 + 00000 + 00000 + 000000 + 000000 + 0 M + 0 M + 00 M + 00 M + 000 M + 000 M + 0000 M + 0000 M + 00000 M + 00000 M + 000000 M + 000000 M + 0 B + 0 B + 00 B + 00 B + 000 B + 000 B + + + + + + + #E0 + + + + + + + % #,##0 + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + + + + Arabiar Emirerri Batuetako dirhama + Arabiar Emirerri Batuetako dirham + Arabiar Emirerri Batuetako dirham + + + Afganistango afghania + Afganistango afghani + Afganistango afghani + + + Albaniako leka + Albaniako lek + Albaniako lek + + + Armeniako drama + Armeniako dram + Armeniako dram + + + Holandarren Antilletako guilderra + Holandarren Antilletako guilder + Holandarren Antilletako guilder + + + Angolako kwanza + Angolako kwanza + Angolako kwanza + + + Argentinako pesoa + Argentinako peso + Argentinako peso + + + Australiako dolarra + Australiako dolar + Australiako dolar + A$ + + + Arubeko florina + Arubeko florin + Arubeko florin + + + Azerbaijango manata + Azerbaijango manat + Azerbaijango manat + + + Bosnia-Herzegovinako marko trukakorra + Bosnia-Herzegovinako marko trukakor + Bosnia-Herzegovinako marko trukakor + + + Barbadosetako dolarra + Barbadosetako dolar + Barbadosetako dolar + + + Bangladesheko taka + Bangladesheko taka + Bangladesheko taka + + + Bulgariako leva + Bulgariako lev + Bulgariako lev + + + Bahraingo dinarra + Bahraingo dinar + Bahraingo dinar + + + Burundiko frankoa + Burundiko franko + Burundiko franko + + + Bermudetako dolarra + Bermudetako dolar + Bermudetako dolar + + + Bruneiko dolarra + Bruneiko dolar + Bruneiko dolar + + + Boliviako bolivianoa + Boliviako boliviano + Boliviako boliviano + + + Brasilgo erreala + Brasilgo erreal + Brasilgo erreal + R$ + + + Bahametako dolarra + Bahametako dolar + Bahametako dolar + + + Bhutango ngultruma + Bhutango ngultrum + Bhutango ngultrum + + + Bosniako pula + Bosniako pula + Bosniako pula + + + Bielorrusiako errubloa + Bielorrusiako errublo + Bielorrusiako errublo + + + Belizeko dolarra + Belizeko dolar + Belizeko dolar + + + Kanadako dolarra + Kanadako dolar + Kanadako dolar + CA$ + + + Kongoko frankoa + Kongoko franko + Kongoko franko + + + Suitzako frankoa + Suitzako franko + Suitzako franko + + + Txileko pesoa + Txileko peso + Txileko peso + + + Txinako yuana + Txinako yuan + Txinako yuan + CN¥ + + + Kolonbiako pesoa + Kolonbiako peso + Kolonbiako peso + + + Costa Ricako colona + Costa Ricako colon + Costa Ricako colon + + + Kubako peso trukakorra + Kubako peso trukakor + Kubako peso trukakor + + + Kubako pesoa + Kubako peso + Kubako peso + + + Cabo Verdeko ezkutua + Cabo Verdeko ezkutu + Cabo Verdeko ezkutu + + + Txekiar Errepublikako koroa + Txekiar Errepublikako koroa + Txekiar Errepublikako koroa + + + Djibouteko frankoa + Djibouteko franko + Djibouteko franko + + + Danimarkako koroa + Danimarkako koroa + Danimarkako koroa + + + Dominikar Errepublikako pesoa + Dominikar Errepublikako peso + Dominikar Errepublikako peso + + + Algeriako dinarra + Algeriako dinar + Algeriako dinar + + + Egiptoko libera + Egiptoko libera + Egiptoko libera + + + Eritreako nakfa + Eritreako nakfa + Eritreako nakfa + + + ¤ #,##0.00 + + , + . + + + Etiopiako birra + Etiopiako birra + Etiopiako birra + + + Euroa + euro + euro + + + + Fijiko dolarra + Fijiko dolar + Fijiko dolar + + + Falkland uharteetako libera + Falkland uharteetako libera + Falkland uharteetako libera + + + Libera esterlina + libera esterlina + libera esterlina + £ + + + Georgiako laria + Georgiako lari + Georgiako lari + + + Ghanako cedia + Ghanako cedi + Ghanako cedi + + + Gibraltarreko libera + Gibraltarreko libera + Gibraltarreko libera + + + Ganbiako dalasia + Ganbiako dalasi + Ganbiako dalasi + + + Gineako frankoa + Gineako franko + Gineako franko + + + Guatemalako quetzala + Guatemalako quetzal + Guatemalako quetzal + + + Guyanako dolarra + Guyanako dolar + Guyanako dolar + + + Hong Kongeko dolarra + Hong Kongeko dolar + Hong Kongeko dolar + HK$ + + + Hondurasko lempira + Hondurasko lempira + Hondurasko lempira + + + Kroaziako kuna + Kroaziako kuna + Kroaziako kuna + + + Haitiko gourdea + Haitiko gourde + Haitiko gourde + + + Hungariako florina + Hungariako florin + Hungariako florin + + + Indonesiako errupia + Indonesiako errupia + Indonesiako errupia + + + Israeleko sheqel berria + Israeleko sheqel berri + Israeleko sheqel berri + + + + Indiako errupia + Indiako errupia + Indiako errupia + + + + Irakeko dinarra + Irakeko dinar + Irakeko dinar + + + Irango riala + Irango rial + Irango rial + + + Islandiako koroa + Islandiako koroa + Islandiako koroa + + + Jamaikako dolarra + Jamaikako dolar + Jamaikako dolar + + + Jordaniako dinarra + Jordaniako dinar + Jordaniako dinar + + + Japoniako yena + Japoniako yen + Japoniako yen + JP¥ + + + Kenyako txelina + Kenyako txelin + Kenyako txelin + + + Kirgizistango soma + Kirgizistango som + Kirgizistango som + + + Kanbodiako riela + Kanbodiako riel + Kanbodiako riel + + + Komoreetako frankoa + Komoreetako franko + Komoreetako franko + + + Ipar Koreako wona + Ipar Koreako won + Ipar Koreako won + + + Hego Koreako wona + Hego Koreako won + Hego Koreako won + + + + Kuwaiteko dinarra + Kuwaiteko dinar + Kuwaiteko dinar + + + Kaiman uharteetako dolarra + Kaiman uharteetako dolar + Kaiman uharteetako dolar + + + Kazakhstango tengea + Kazakhstango tenge + Kazakhstango tenge + + + Laoseko kipa + Laoseko kip + Laoseko kip + + + Libanoko libera + Libanoko libera + Libanoko libera + + + Sri Lankako errupia + Sri Lankako errupia + Sri Lankako errupia + + + Liberiako dolarra + Liberiako dolar + Liberiako dolar + + + Lesothoko lotia + + + Lituaniako litasa + Lituaniako litas + Lituaniako litas + + + Letoniako latsa + Letoniako lats + Letoniako lats + + + Libiako dinarra + Libiako dinar + Libiako dinar + + + Marokoko dirhama + Marokoko dirham + Marokoko dirham + + + Moldaviako leua + Moldaviako leu + Moldaviako leu + + + Madagaskarreko ariarya + Madagaskarreko ariary + Madagaskarreko ariary + + + Mazedoniako denara + Mazedoniako dinar + Mazedoniako dinar + + + Myanmarreko kyata + Myanmarreko kyat + Myanmarreko kyat + + + Mongoliako tugrika + Mongoliako tugrik + Mongoliako tugrik + + + Macanako pataca + Macanako pataca + Macanako pataca + + + Mauritaniako ouguiya + Mauritaniako ouguiya + Mauritaniako ouguiya + + + Maurizio uharteetako errupia + Maurizio uharteetako errupia + Maurizio uharteetako errupia + + + Maldivetako rufiyaa + Maldivetako rufiyaa + Maldivetako rufiyaa + + + Malawiko kwacha + Malawiko kwacha + Malawiko kwacha + + + Mexikoko pesoa + Mexikoko peso + Mexikoko peso + MX$ + + + Malaysiako ringgita + Malaysiako ringgit + Malaysiako ringgit + + + Mozambikeko metikala + Mozambikeko metikal + Mozambikeko metikal + + + Namibiako dolarra + Namibiako dolar + Namibiako dolar + + + Nigeriako naira + Nigeriako naira + Nigeriako naira + + + Nikaraguako cordoba + Nikaraguako cordoba + Nikaraguako cordoba + + + Norvegiako koroa + Norvegiako koroa + Norvegiako koroa + + + Nepalgo errupia + Nepalgo errupia + Nepalgo errupia + + + Zeelanda Berriko dolarra + Zeelanda Berriko dolar + Zeelanda Berriko dolar + NZ$ + + + Omango riala + Omango rial + Omango rial + + + Panamako balboa + Panamako balboa + Panamako balboa + + + Peruko sol berria + Peruko sol berri + Peruko sol berri + + + Papua Ginea Berriko kina + Papua Ginea Berriko kina + Papua Ginea Berriko kina + + + Filipinetako pesoa + Filipinetako peso + Filipinetako peso + + + Pakistango errupia + Pakistango errupia + Pakistango errupia + + + Poloniako zlotya + Poloniako zloty + Poloniako zloty + + + Paraguaiko guarania + Paraguaiko guarani + Paraguaiko guarani + + + Qatarreko riala + Qatarreko rial + Qatarreko rial + + + Errumaniako leua + Errumaniako leu + Errumaniako leu + + + Serbiako dinarra + Serbiako dinar + Serbiako dinar + + + Errusiako errubloa + Errusiako errublo + Errusiako errublo + + + Ruandako frankoa + Ruandako franko + Ruandako franko + + + Saudiko riala + Saudiko rial + Saudiko rial + + + Salomon uharteetako dolarra + Salomon uharteetako dolar + Salomon uharteetako dolar + + + Seychelleetako errupia + Seychelleetako errupia + Seychelleetako errupia + + + Sudango libera + Sudango libera + Sudango libera + + + Suediako koroa + Suediako koroa + Suediako koroa + + + Singapurreko dolarra + Singapurreko dolar + Singapurreko dolar + + + Santa Helenako libera + Santa Helenako libera + Santa Helenako libera + + + Sierra Leonako leona + Sierra Leonako leona + Sierra Leonako leona + + + Somaliako txelina + Somaliako txelin + Somaliako txelin + + + Surinameko dolarra + Surinameko dolar + Surinameko dolar + + + Hego Sudango libera + Hego Sudango libera + Hego Sudango libera + + + Sao Tomeko eta Principeko dobra + Sao Tomeko eta Principeko dobra + Sao Tomeko eta Principeko dobra + + + Siriako libera + Siriako libera + Siriako libera + + + Swaziko lilangenia + Swaziko lilangeni + Swaziko lilangeni + + + Thailandiako bahta + Thailandiako baht + Thailandiako baht + ฿ + + + Tajikistango somonia + Tajikistango somoni + Tajikistango somoni + + + Turkmenistango manata + Turkmenistango manat + Turkmenistango manat + + + Tunisiako dinarra + Tunisiako dinar + Tunisiako dinar + + + Tongako Paʻanga + Tongako Paʻanga + Tongako Paʻanga + + + Turkiako lira + Turkiako lira + Turkiako lira + + + Trinidadeko eta Tobagoko dolarra + Trinidadeko eta Tobagoko dolar + Trinidadeko eta Tobagoko dolar + + + Taiwango dolar berria + Taiwango dolar berri + Taiwango dolar berri + NT$ + + + Tanzaniako txelina + Tanzaniako txelin + Tanzaniako txelin + + + Ukrainako hryvnia + Ukrainako hryvnia + Ukrainako hryvnia + + + Ugandako txelina + Ugandako txelin + Ugandako txelin + + + AEBetako dolarra + AEBetako dolar + AEBetako dolar + US$ + + + Uruguaiko pesoa + Uruguaiko peso + Uruguaiko peso + + + Uzbekistango soma + Uzbekistango som + Uzbekistango som + + + Venezuelako bolivarra + Venezuelako bolivar + Venezuelako bolivar + + + Vietnameko donga + Vietnameko dong + Vietnameko dong + + + + Vanuatuko vatua + Vanuatuko vatu + Vanuatuko vatu + + + Samoko tala + Samoko tala + Samoko tala + + + Afrika erdialdeko frankoa BEAC + Afrika erdialdeko franko BEAC + Afrika erdialdeko franko BEAC + FCFA + + + Karibe ekialdeko dolarra + Karibe ekialdeko dolar + Karibe ekialdeko dolar + EC$ + + + Afrika ekialdeko frankoa BCEAO + Afrika ekialdeko franko BCEAO + Afrika ekialdeko franko BCEAO + CFA + + + CFP frankoa + CFP franko + CFP franko + CFPF + + + Moneta ezezaguna + (moneta ezezaguna) + (moneta ezezaguna) + + + Yemengo riala + Yemengo rial + Yemengo rial + + + Hegoafrikako randa + Hegoafrikako randa + Hegoafrikako randa + + + Zambiako kwacha (1968–2012) + + + Zambiako kwacha + Zambiako kwacha + Zambiako kwacha + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} grabitate-indar + {0} grabitate-indar + + + {0} minutu + {0} minutu + + + {0} segundo + {0} segundo + + + {0} gradu + {0} gradu + + + {0} akre + {0} akre + + + {0} hektarea + {0} hektarea + + + {0} oin karratu + {0} oin karratu + + + {0} kilometro karratu + {0} kilometro karratu + + + {0} metro karratu + {0} metro karratu + + + {0} milia karratu + {0} milia karratu + + + {0} egun + {0} egun + + + {0} ordu + {0} ordu + + + {0} milisegundo + {0} milisegundo + + + {0} minutu + {0} minutu + + + {0} hilabete + {0} hilabete + + + {0} segundo + {0} segundo + + + {0} aste + {0} aste + + + {0} urte + {0} urte + + + {0} zentimetro + {0} zentimetro + + + {0} oin + {0} oin + + + {0} hazbete + {0} hazbete + + + {0} kilometro + {0} kilometro + + + {0} argi-urte + {0} argi-urte + + + {0} metro + {0} metro + + + {0} milia + {0} milia + + + {0} milimetro + {0} milimetro + + + {0} pikometro + {0} pikometro + + + {0} yarda + {0} yarda + + + {0} gramo + {0} gramo + + + {0} kilogramo + {0} kilogramo + + + {0} ontza + {0} ontza + + + {0} libra + {0} libra + + + {0} zaldi-potentzia + {0} zaldi-potentzia + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} merkurio-hazbete + {0} merkurio-hazbete + + + {0} milibar + {0} milibar + + + {0} kilometro orduko + {0} kilometro orduko + + + {0} metro segundoko + {0} metro segundoko + + + {0} milia orduko + {0} milia orduko + + + {0}Celcius gradu + {0}Celcius gradu + + + {0}Fahrenheit gradu + {0}Fahrenheit gradu + + + {0} kilometro kubiko + {0} kilometro kubiko + + + {0} milia kubiko + {0} milia kubiko + + + {0} litro + {0} litro + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} egun + {0} egun + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} hilabete + {0} hilabete + + + {0} s + {0} s + + + {0} aste + {0} aste + + + {0} urte + {0} urte + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ly + {0} ly + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} egun + {0} egun + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} hil. + {0} hil. + + + {0} s + {0} s + + + {0} aste + {0} aste + + + {0} urte + {0} urte + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ly + {0} ly + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} eta {1} + {0} eta {1} + + + {0}, {1} + {0}, {1} + {0} eta {1} + {0} eta {1} + + + {0}, {1} + {0}, {1} + {0} eta {1} + {0} eta {1} + + + + + bai:b + ez:e + + + + diff --git a/library/Zend/Locale/Data/eu_ES.xml b/library/Zend/Locale/Data/eu_ES.xml new file mode 100755 index 000000000..e4a976a81 --- /dev/null +++ b/library/Zend/Locale/Data/eu_ES.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ewo.xml b/library/Zend/Locale/Data/ewo.xml new file mode 100755 index 000000000..24132ee87 --- /dev/null +++ b/library/Zend/Locale/Data/ewo.xml @@ -0,0 +1,783 @@ + + + + + + + + + + + + Ǹkɔ́bɔ akán + Ǹkɔ́bɔ amária + Ǹkɔ́bɔ arábia + Ǹkɔ́bɔ belarúsian + Ǹkɔ́bɔ buləgárian + Ǹkɔ́bɔ bɛngalí + Ǹkɔ́bɔ tsɛ́g + Ǹkɔ́bɔ ndzáman + Ǹkɔ́bɔ gəlɛ́g + Ǹkɔ́bɔ éngəlís + ǹkɔ́bɔ kpənyá + ewondo + ǹkɔ́bɔ fɛ́rəsian + Ǹkɔ́bɔ fulɛnsí + Ǹkɔ́bɔ aúsá + Ǹkɔ́bɔ hindí + Ǹkɔ́bɔ ungárían + Ǹkɔ́bɔ ɛndonésian + Ǹkɔ́bɔ ibó + Ǹkɔ́bɔ etáliɛn + Ǹkɔ́bɔ hapɔ́n + Ǹkɔ́bɔ havanís + Ǹkɔ́bɔ kəmɛ́r + Ǹkɔ́bɔ koréan + Ǹkɔ́bɔ malɛ́sian + Ǹkɔ́bɔ birəmán + ǹkɔ́bɔ nefálian + Ǹkɔ́bɔ nɛrəlándía + ǹkɔ́bɔ funəhábia + ǹkɔ́bɔ fólis + ǹkɔ́bɔ fɔtugɛ́s + ńkɔ́bɔ románía + ǹkɔ́bɔ rúsian + ǹkɔ́bɔ ruwandá + ǹkɔ́bɔ somália + ǹkɔ́bɔ suwɛ́d + ǹkɔ́bɔ tamíl + ǹkɔ́bɔ táilan + ǹkɔ́bɔ túrəki + ǹkɔ́bɔ ukelénia + ǹkɔ́bɔ urudú + ǹkɔ́bɔ hiɛdənám + ǹkɔ́bɔ yorúba + Ǹkɔ́bɔ tsainís + ǹkɔ́bɔ zulú + + + Andór + Bemirá yá Arábə uní + Afəganisətán + Antígwa ai Barəbúda + Angíyə + Aləbánia + Arəménia + Anətíyə Nɛdəlánia + Angolá + Arəhenətína + Bəsamóa yá Amə́rəka + Osətəlía + Osətəlalí + Arúba + Azɛrəbaidzáŋ + Bosəní ai ɛrəzegovín + Barəbád + Bangaladɛ́s + Bɛləhíg + Buləkiná Fasó + Buləgarí + Bahərɛ́n + Burundí + Bəníŋ + Bɛrəmúd + Buluné + Bolívia + Bəlazíl + Bahámas + Butáŋ + Botswaná + Bəlarús + Bəlís + kanadá + ǹnam Kongó Demokəlatíg + ǹnam Zǎŋ Afiriká + Kongó + Suís + Kód Divɔ́r + Minlán Mí kúg + Tsilí + Kamərún + Tsáina + Kolɔmbí + Kosta Ríka + Kubá + Minlán Mí Káb Vɛr + Sipəlús + Ǹnam Tsɛ́g + Ndzáman + Dzibutí + Danəmárəg + Dómənika + République dominicaine + Aləyéria + Ekwatór + Esetoní + Ehíbətɛn + Elitəlé + Kpənyá + Etiopí + Finəlán + Fidzí + Minlán Mi Fóləkəlan + Mikoronésia + Fulɛnsí + Gabóŋ + Ǹnam Engəlis + Gələnádə + Horə́yia + Guyán yá Fulɛnsí + Ganá + Yiləbalatár + Goelán + Gambí + Giné + Guadəlúb + Giné Ekwató + Gəlɛ́s + Guatemalá + Guám + Giné Bisaó + Guyán + Ondurás + Kəlowásia + Aití + Ongirí + ɛndonésia + Irəlándə + Isəraɛ́l + ɛ́ndə + ǹnam ɛngəlís yá Máŋ mə́ ɛ́ndə + Irág + Irán + Isəlándə + Itáliɛn + Hamaíka + Horədaní + Hapɔ́n + Keniá + Kirigisətán + kambodía + Kiribatí + Komɔ́r + Ǹfúfúb-Kilisətóv-ai-Nevis + Koré yá Nór + Koré yá Súd + Kowɛ́d + Minlán Mí Kalimáŋ + Kazakətáŋ + Laós + Libáŋ + Ǹfúfúb-Lúsia + Lísə́sə́táin + Səri Laŋká + Libéria + Ləsotó + Lituaní + Lukəzambúd + Lətoní + Libí + Marɔ́g + Mɔnakó + Molədaví + Madagasəkárə + Minlán Mí Maresál + Masedónia + Malí + Mianəmár + Mɔngɔ́lia + Minlán Mi Marián yá Nór + Marətiníg + Moritaní + Mɔ́ntserád + Málətə + Morís + Malədívə + Malawí + Mɛkəsíg + Malɛ́zia + Mozambíg + Namibí + Ǹkpámɛn Kaledónia + Nihɛ́r + Minlán Nɔrəfɔ́ləkə + Nihéria + Nikarágua + Pɛíbá + Nɔrəvɛ́s + Nepál + Naurú + Niué + Ǹkpámɛn Zeláŋ + Omán + Panamá + Perú + Polinesí yá Fulɛnsí + Papwazi yá Ǹkpámɛ́n Giné + Filipín + Pakisətán + fólis + Ǹfúfúb-Píɛr-ai-Mikəlɔ́ŋ + Pítə́kɛ́rɛnə + Pwɛrəto Ríko + Ǹnam Palɛsətín + fɔrətugɛ́s + Palau + Paragué + Katár + Reuniɔ́ŋ + Rumaní + Rúsian + Ruwandá + Arabí Saudí + Minlán Mí Solomɔ́n + Sɛsɛ́l + Sudáŋ + Suwɛ́d + Singapúr + Ǹfúfúb-Ɛlɛ́na + Səlovénia + Səlovakí + Sierá-leónə + Ǹfúfúb Maríno + Senegál + Somália + Surinám + Saó Tomé ai Pəlinəsípe + Saləvadór + Sirí + Swazilándə + Minlán Mí túrə́g-ai-Kaíg + Tsád + Togó + Tailán + Tadzikisətáŋ + Tokeló + Timôr + Turəkəmənisətáŋ + Tunisí + Tɔngá + Turəkí + Təlinité-ai-Tobágo + Tuvalú + Taiwán + Taŋəzaní + Ukərɛ́n + Ugandá + Ǹnam Amɛrəkə + Urugué + Uzubekisətán + Ǹnam Vatikán + Ǹfúfúb-Vɛngəsáŋ-ai-Bə Gələnadín + Venezuéla + ńnam Minlán ɛ́ngəlís + Minlán Mi Amɛrəkə + Viɛdənám + Vanuátu + Walís-ai-Futúna + Samoá + Yemɛ́n + Mayɔ́d + Afiríka yá Súd + Zambí + Zimbabwé + + + + [a á à â ǎ b d {dz} e é è ê ě ə {ə\u0301} {ə\u0300} {ə\u0302} {ə\u030C} ɛ {ɛ\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} f g h i í ì î ǐ k {kp} l m n ń ǹ {ng} {nk} ŋ o ó ò ô ǒ ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0302} {ɔ\u030C} p r s t {ts} u ú ù û ǔ v w y z] + [c j q x] + [A B D E Ə Ɛ F G H I K L M N Ŋ O Ɔ P R S T U V W Y Z] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + d E + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + ngo + ngb + ngl + ngn + ngt + ngs + ngz + ngm + nge + nga + ngad + ngab + + + ngɔn osú + ngɔn bɛ̌ + ngɔn lála + ngɔn nyina + ngɔn tána + ngɔn saməna + ngɔn zamgbála + ngɔn mwom + ngɔn ebulú + ngɔn awóm + ngɔn awóm ai dziá + ngɔn awóm ai bɛ̌ + + + + + o + b + l + n + t + s + z + m + e + a + d + b + + + + + + + sɔ́n + mɔ́n + smb + sml + smn + fúl + sér + + + sɔ́ndɔ + mɔ́ndi + sɔ́ndɔ məlú mə́bɛ̌ + sɔ́ndɔ məlú mə́lɛ́ + sɔ́ndɔ məlú mə́nyi + fúladé + séradé + + + + + s + m + s + s + s + f + s + + + + + + + nno + nnb + nnl + nnny + + + nsámbá ngɔn asú + nsámbá ngɔn bɛ̌ + nsámbá ngɔn lála + nsámbá ngɔn nyina + + + + + + + kíkíríg + ngəgógəle + + + + + + osúsúa Yésus kiri + ámvus Yésus Kirís + + + oyk + ayk + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + d E + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Abǒg + + + M̀bú + + + Ngɔn + + + Sɔ́ndɔ + + + Amǒs + Angogé + Aná + Okírí + + + Amǒs yá sɔ́ndɔ + + + Kírí / Ngəgógəle + + + Awola + + + Enútɛn + + + Akábəga + + + Nkɔŋ Awola + + + + + + , +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + + + + Dirám yá Emirá Aráb Uní + + + Kwánəza yá Angolá + + + Dolár yá Osətəralí + + + Dinár yá Bahərɛ́n + + + Fəláŋ yá Burundí + + + Púlá yá Botswána + + + Dolár yá Kanáda + + + Fəláŋ yá Kongo + + + Fəláŋ yá Suís + + + Yuán Renəminəbí yá Tsainís + + + Esəkúdo yá Kápə́vɛ́rə + + + Fəláŋ yá dzibutí + + + Dinár yá Alehérí + + + Lívə́lə yá Ehíbətía + + + Náfəka yá Eritelé + + + Bír yá Etsiópia + + + əró + + + Lívə́lə Sətərəlíŋ + + + Tzedí yá Ganá + + + Dalasí yá Gámbía + + + Síli yá Giné + + + Rupí yá ɛ́ndía + + + Yɛ́n yá Hapɔ́n + + + Silíŋ yá Keniá + + + Fəláŋ yá Komória + + + Dolár yá Libéria + + + Lotí yá Lesotó + + + Dinár yá Libí + + + Dirám yá Maróg + + + Ariari yá Maləgás + + + Ugiya yá Moritaní + + + Rupí yá Morís + + + Kwatsa yá Malawí + + + Metikal yá Mozambíg + + + Dolár yá Namibí + + + Náíra yá Nihéria + + + Fəláŋ yá Ruwandá + + + Riál yá Arabí Saudí + + + Rupí yá Sɛsɛ́l + + + Lívələ yá Sudán + + + Lívələ yá Sudán (1956–2007) + + + Lívələ yá Ǹfúfúb Elɛ́n + + + Leóne yá Sierá-leónə + + + Silíŋ yá Somalí + + + Dóbə́ra yá Saó Tomé ai Pəlinəsípe + + + Lilangeni yá Swazí + + + Dinár yá Tunisí + + + Silíŋ yá Tanazaní + + + Silíŋ yá Ugandá (1966–1987) + + + Dolár yá amɛ́rəkə + + + Fəláŋ CFA (BEAC) + + + Fəláŋ CFA (BCEAO) + + + Ránədə yá Afiríka + + + Kwatsa yá Zambí (1968–2012) + + + Kwatsa yá Zambí + + + Dolár yá Zimbabwé + + + + + + Owé:O + Tɛgɛ:T + + + + diff --git a/library/Zend/Locale/Data/ewo_CM.xml b/library/Zend/Locale/Data/ewo_CM.xml new file mode 100755 index 000000000..30d14d1e1 --- /dev/null +++ b/library/Zend/Locale/Data/ewo_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fa.xml b/library/Zend/Locale/Data/fa.xml new file mode 100755 index 000000000..317b4bd9c --- /dev/null +++ b/library/Zend/Locale/Data/fa.xml @@ -0,0 +1,5812 @@ + + + + + + + + + + + + {0} ({1}) + {0}، {1} + {0}: {1} + + + آفاری + آبخازی + آچئی + آچولیایی + آدانگمه‌ای + آدیجیایی + اوستایی + آفریکانس + آفریهیلی + آینویی + آکان + آکدی + آلئوتی + آلتایی جنوبی + امهری + آراگونی + انگلیسی باستان + آنگیکا + عربی + عربی رسمی + آرامی + آروکانیایی + آراپاهویی + آراواکی + آسامی + آواری + آیمارایی + ترکی آذربایجانی + آذری + آذربایجانی + باشغیری + بلوچی + بالیایی + باسایی + بمونی + بلوروسی + بجایی + بمبایی + بلغاری + بوجپوری + بیسلاما + بیکولی + بینی + بامبارایی + بنگالی + تبتی + برتانیایی + براج + بوسنیایی + بوریاتی + بوگیایی + بلین + کاتالان + کادویی + کاریبی + چچنی + سبویی + چامورویی + چیبچا + جغتایی + چوکی + ماریایی + چوکتویی + چیپه‌ویه‌ای + چروکیایی + شایانی + کردی سورانی + کورسی + قبطی + کریایی + ترکی کریمه + چکی + کاشوبی + اسلاوی کلیسایی + چوواشی + ویلزی + دانمارکی + داکوتایی + دارقینی + آلمانی + آلمانی اتریش + آلمانی علیای سوئیس + دلاواری + دوگریب + دینکایی + دوگری + صُربی سفلی + دوآلایی + هلندی میانه + مالدیوی + دایولایی + جونخایی + اوه‌ای + افیکی + مصری کهن + اکاجوک + یونانی + عیلامی + انگلیسی + انگلیسی استرالیا + انگلیسی کانادا + انگلیسی بریتانیا + انگلیسی امریکا + انگلیسی (US) + انگلیسی میانه + اسپرانتو + اسپانیایی + اسپانیایی امریکای لاتین + اسپانیایی اروپا + اسپانیایی مکزیک + استونیایی + باسکی + اواندو + فارسی + فانکی + فانتیایی + فولایی + فنلاندی + فیلیپینی + فیجیایی + فارویی + فونی + فرانسوی + فرانسوی کانادا + فرانسوی سوئیس + فرانسوی میانه + فرانسوی باستان + فریزی شمالی + فریزی شرقی + فریولیایی + فریزی غربی + ایرلندی + گایی + گایویی + گبایایی + گیلی اسکاتلندی + گی‌ئزی + گیلبرتی + گالیسیایی + آلمانی علیای میانه + گوارانی + آلمانی علیای باستان + گوندی + گورونتالو + گوتی + گریبویی + یونانی کهن + آلمانی سوئیسی + گجراتی + مانی + گویچ این + هوسیایی + هایدایی + هاوائیایی + عبری + هندی + هیلی‌گاینونی + هیتی + همونگ + موتویی هیری + کروات + صُربی علیا + هائیتیایی + مجاری + هوپا + ارمنی + هریرویی + میان‌زبان + آیبن + اندونزیایی + اکسیدنتال + ایگبویی + یی سیچوان + اینوپیک + ایلوکویی + اینگوشی + ایدو + ایسلندی + ایتالیایی + اینوکتیتوت + ژاپنی + لوجبان + فارسی یهودی + عربی یهودی + جاوه‌ای + گرجی + قره‌قالپاقی + قبایلی + کاچینی + جو + کامبایی + کاویایی + کاباردینی + تایپه ای + کورو + کنگویی + خاسیایی + ختنی + کیکویویی + کوانیاما + قزاقی + گرینلندی + خمری + کیمبوندویی + کاناده‌ای + کره‌ای + کنکانی + کپله‌ای + کانوریایی + قره‌چایی‐بالکاری + کوروخی + کشمیری + کردی + کومیکی + کوتنی + کومیایی + کرنوالی + قرقیزی + لاتینی + لادینو + لاهندا + لامبا + لوگزامبورگی + لزگی + گاندایی + لیمبورگی + لینگالا + لائوسی + مونگویی + لوزیایی + لیتوانیایی + لوبایی‐کاتانگا + لوبایی‐لولوا + لویسنو + لوندایی + لوئویی + لوشه‌ای + لتونیایی + مادورایی + ماگاهیایی + مایدیلی + ماکاسار + ماندینگویی + ماسایی + مکشایی + ماندار + منده‌ای + موریسین + مالاگاسیایی + ایرلندی میانه + مارشالی + مائوریایی + میکماکی + مینانگ‌کابویی + مقدونی + مالایالامی + مغولی + مانچویی + میته‌ای + موهاکی + ماسیایی + مراتی + مالایی + مالتی + چندین زبان + کریکی + مارواری + برمه‌ای + ارزیایی + نائورویی + ناپلی + بوکسمال نروژی + انده‌بله‌ای شمالی + آلمانی سفلی + نپالی + نواریایی + اندونگایی + نیاسی + نیویی + هلندی + فلمنگی + نرس جدید نروژی + نروژی + نغایی + نرس باستان + انده‌بله‌ای جنوبی + سوتویی شمالی + ناواهویی + نواریایی کلاسیک + نیانجایی + نیام‌وزیایی + نیانکوله‌ای + نیورویی + نزیمایی + اوکیتایی + اوجیبوایی + اورومویی + اوریه‌ای + آسی + اوسیجی + ترکی عثمانی + پنجابی + پانگاسینانی + پهلوی + پامپانگایی + پاپیامنتو + پالائویی + فارسی باستان + فنیقی + پالی + لهستانی + پانپیی + پرووانسی باستان + پشتو + پختو + پرتغالی + پرتغالی برزیل + پرتغالی اروپا + کچوایی + راجستانی + راپانویی + راروتونگایی + رومانش + روندیایی + رومانیایی + مولداویایی + رومانویی + ریشه + روسی + کینیارواندایی + سنسکریت + سانداوه‌ای + یاقوتی + آرامی سامری + ساساکی + سانتالی + ساردینیایی + سیسیلی + اسکاتلندی + سندی + سامی شمالی + سلکوپی + سانگویی + ایرلندی باستان + صرب و کرواتی + شانی + عربی چادی + سینهالی + سیدامویی + اسلواکی + اسلووینیایی + ساموآیی + شونایی + سونینکه‌ای + سومالیایی + سغدی + آلبانیایی + صربی + تاکی‌تاکی + سریری + سوازیایی + سوتویی جنوبی + سوندایی + سوکومایی + سوسویی + سومری + سوئدی + سواحلی + کوموری + سواحلی کنگویی + سریانی کلاسیک + سریانی + تامیلی + تلوگویی + تمنه‌ای + ترنو + تتومی + تاجیکی + تایلندی + تیگرینیایی + تیگره‌ای + تیوی + ترکمنی + تاگالوگی + کلینگون + تلین‌گیتی + تاماشقی + تسوانایی + تونگایی + تونگایی نیاسا + توک‌پیسینی + ترکی استانبولی + ترکی + تسونگایی + تسیم‌شیانی + تاتاری + تومبوکایی + تووالویی + توی‌یایی + تاهیتیایی + تووایی + اودمورتی + اویغوری + اوگاریتی + اوکراینی + امبوندویی + زبان نامشخص + اردو + ازبکی + ویایی + وندایی + ویتنامی + ولاپوک + وتی + والونی + والامو + وارایی + واشویی + ولوفی + قلموقی + خوسایی + یائویی + یاپی + یدی + یوروبایی + کانتونیز + چوانگی + زاپوتکی + زناگا + آمازیغی معیار مراکش + چینی + چینی ساده‌شده + چینی سنتی + زولویی + زونیایی + بدون محتوای زبانی + زازایی + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + جهان + افریقا + امریکای شمالی + امریکای جنوبی + اقیانوسیه + غرب افریقا + امریکای مرکزی + شرق افریقا + شمال افریقا + مرکز افریقا + جنوب افریقا + امریکا + شمال امریکا + کارائیب + شرق آسیا + جنوب آسیا + جنوب شرق آسیا + جنوب اروپا + استرالزی + ملانزی + ناحیهٔ میکرونزی + پلی‌نزی + آسیا + آسیای مرکزی + غرب آسیا + اروپا + شرق اروپا + شمال اروپا + غرب اروپا + امریکای لاتین + جزایر آسنسیون + آندورا + امارات متحدهٔ عربی + افغانستان + آنتیگوا و باربودا + آنگویلا + آلبانی + ارمنستان + آنتیل هلند + آنگولا + جنوبگان + آرژانتین + ساموآی آمریکا + اتریش + استرالیا + آروبا + جزایر اُلند + جمهوری آذربایجان + بوسنی و هرزگوین + باربادوس + بنگلادش + بلژیک + بورکینافاسو + بلغارستان + بحرین + بوروندی + بنین + سن بارتلمی + برمودا + برونئی + بولیوی + جزایر کارائیب هلند + برزیل + باهاما + بوتان + جزیره بووه + بوتسوانا + بلاروس + بلیز + کانادا + جزایر کوکوس (کیلینگ) + کنگو - کینشاسا + کنگو (جمهوری دموکراتیک) + جمهوری افریقای مرکزی + کنگو - برازویل + کنگو (جمهوری) + سوئیس + ساحل عاج + جزایر کوک + شیلی + کامرون + چین + کلمبیا + جزایر کلیپرتون + کاستاریکا + کوبا + کیپ‌ورد + کوراسائو + جزیرهٔ کریسمس + قبرس + جمهوری چک + آلمان + دیه‌گو گارسیا + جیبوتی + دانمارک + دومینیکا + جمهوری دومینیکن + الجزایر + سبته و ملیله + اکوادور + استونی + مصر + صحرای غربی + اریتره + اسپانیا + اتیوپی + اتحادیهٔ اروپا + فنلاند + فیجی + جزایر فالکلند + جزایر فالکلند (ایسلاس مالویناس) + میکرونزی + جزایر فارو + فرانسه + گابن + بریتانیا + گرنادا + گرجستان + گویان فرانسه + گرنزی + غنا + جبل‌الطارق + گرینلند + گامبیا + گینه + گوادلوپ + گینهٔ استوایی + یونان + جزایر جورجیای جنوبی و ساندویچ جنوبی + گواتمالا + گوام + گینهٔ بیسائو + گویان + هنگ‌کنگ، ناحیهٔ ویژهٔ حکومتی چین + هنگ‌کنگ + جزیرهٔ هرد و جزایر مک‌دونالد + هندوراس + کرواسی + هائیتی + مجارستان + جزایر قناری + اندونزی + ایرلند + اسرائیل + جزیرهٔ من + هند + قلمرو بریتانیا در اقیانوس هند + عراق + ایران + ایسلند + ایتالیا + جرزی + جامائیکا + اردن + ژاپن + کنیا + قرقیزستان + کامبوج + کیریباتی + کومور + سنت کیتس و نویس + کرهٔ شمالی + کرهٔ جنوبی + کویت + جزایر کِیمن + قزاقستان + لائوس + لبنان + سنت لوسیا + لیختن‌اشتاین + سری‌لانکا + لیبریا + لسوتو + لیتوانی + لوکزامبورگ + لتونی + لیبی + مراکش + موناکو + مولداوی + مونته‌نگرو + سنت مارتین + ماداگاسکار + جزایر مارشال + مقدونیه + مقدونیه (جمهوری سابقاً یوگسلاو) + مالی + میانمار (برمه) + مغولستان + ماکائو، ناحیهٔ ویژهٔ حکومتی چین + ماکائو + جزایر ماریانای شمالی + مارتینیک + موریتانی + مونت‌سرات + مالت + موریس + مالدیو + مالاوی + مکزیک + مالزی + موزامبیک + نامیبیا + کالدونیای جدید + نیجر + جزیره نورفک + نیجریه + نیکاراگوئه + هلند + نروژ + نپال + نائورو + نیوئه + زلاند نو + عمان + پاناما + پرو + پلی‌نزی فرانسه + پاپوا گینهٔ نو + فیلیپین + پاکستان + لهستان + سن پیر و میکلن + جزایر پیت‌کرن + پورتوریکو + سرزمین‌های فلسطینی + فلسطین + پرتغال + پالائو + پاراگوئه + قطر + بخش‌های دورافتادهٔ اقیانوسیه + رئونیون + رومانی + صربستان + روسیه + رواندا + عربستان سعودی + عربستان + جزایر سلیمان + سیشل + سودان + سوئد + سنگاپور + سنت هلن + اسلوونی + اسوالبارد و جان‌ماین + اسلواکی + سیرالئون + سن مارینو + سنگال + سومالی + سورینام + سودان جنوبی + سائوتومه و پرینسیپ + السالوادور + سنت مارتن + سوریه + سوازیلند + تریستان دا کونا + جزایر تورکس و کایکوس + چاد + مستعمره‌های جنوبی فرانسه + توگو + تایلند + تاجیکستان + توکلائو + تیمور شرقی + ترکمنستان + تونس + تونگا + ترکیه + ترینیداد و توباگو + تووالو + تایوان + تانزانیا + اوکراین + اوگاندا + جزایر دورافتادهٔ ایالات متحده + ایالات متحدهٔ امریکا + اروگوئه + ازبکستان + واتیکان + سنت وینسنت و گرنادین‌ها + ونزوئلا + جزایر ویرجین بریتانیا + جزایر ویرجین ایالات متحده + ویتنام + وانواتو + والیس و فوتونا + ساموآ + کوزووو + یمن + مایوت + افریقای جنوبی + زامبیا + زیمبابوه + ناحیهٔ نامشخص + + + رسم‌الخط سنتی آلمانی + رسم‌الخط آلمانی ۱۹۹۶ میلادی + ارمنی شرقی + ارمنی غربی + فونتیک IPA + فونتیک UPA + کامپیوتری + رسم‌الخط تجدیدنظرشده + ساهویی + انگلیسی معیار اسکاتلند + + + تقویم + مرتب‌سازی با نادیده گرفتن نمادها + مرتب‌سازی معکوس براساس آکسان + ترتیب بر اساس حروف کوچک/بزرگ + مرتب‌سازی حساس به اندازه حروف + سیستم مرتب‌سازی کانا + ترتیب + مرتب‌سازی معمولی + مرتب‌سازی عددی + قدرت مرتب‌سازی + واحد پول + اعداد + منطقه زمانی + متغیر محلی + مرتب‌سازی به عنوان نماد + استفادهٔ خصوصی + + + ارقام عربی + ارقام فارسی + اعداد ارمنی + اعداد ارمنی با حروف کوچک + ارقام بالیایی + ارقام بنگالی + ترتیب چینی سنتی - Big5 + تقویم بودایی + تقویم چینی + تقویم قبطی + ارقام دوناگری + ترتیب فرهنگ لغت + ترتیب پیش‌فرض یونی‌کد + اعداد اتیوپیایی + تقویم اتیوپیایی + تقویم اتیوپیایی عامت عالم + سیستم عددی مالی + ارقام تمام‌عرض + ترتیب چینی ساده‌شده - GB2312 + اعداد گرجی + تقویم میلادی + اعداد یونانی + اعداد یونانی با حروف کوچک + ارقام گجراتی + ارقام گورومخی + اعداد دهدهی چینی + اعداد چینی ساده‌شده + اعداد مالی چینی ساده‌شده + اعداد چینی سنتی + اعداد مالی چینی سنتی + اعداد عبری + تقویم عبری + مرتب‌سازی همه + تقویم ملی هند + تقویم هجری قمری + تقویم هجری قمری جدولی مدنی + تقویم هجری قمری جدولی نجومی + تقویم ژاپنی + ارقام جاوه‌ای + اعداد ژاپنی + اعداد مالی ژاپنی + ارقام خمری + ارقام کاناده‌ای + ارقام لائوسی + ارقام غربی + ابتدا مرتب‌سازی حروف کوچک + ارقام مالایالامی + ارقام مغولی + ارقام میانماری + ارقام شان میانماری + ارقام بومی + مرتب‌سازی آکسان‌ها به صورت معمولی + مرتب‌سازی به ترتیب معمولی بزرگ و کوچکی حروف + مرتب‌سازی بدون توجه به کوچک و بزرگی حروف + مرتب‌سازی بر اساس سیستم کانا به صورت جداگانه + مرتب‌سازی بدون عادی‌سازی + مرتب‌سازی ارقام بصورت مجزا + مرتب‌سازی نمادها + ارقام اوریه‌ای + تقویم هجری شمسی + ترتیب دفتر تلفن + مرتب کردن بر اساس آوایی + ترتیب پین‌یین + مرتب‌سازی فقط حروف پایه + مرتب‌سازی بر اساس آکسان/اندازه حروف/عرض/کانا + ترتیب اصلاح‌شده + تقویم جمهوری چین (تایوان) + اعداد رومی + اعداد رومی با حروف کوچک + جستجوی عمومی + جستجو با صامت اول هانگول + مرتب‌سازی آکسان‌ها + مرتب‌سازی با نادیده گرفتن نمادها + ترتیب استاندارد + ترتیب حرکتی + اعداد سنتی تامیلی + ارقام تامیلی + ارقام تلوگویی + مرتب‌سازی بر اساس آکسان/اندازه حرف/عرض + ارقام تایلندی + ارقام تبتی + ترتیب سنتی + سیستم اعداد سنتی + ترتیب رادیکالی-حرکتی + مرتب‌سازی بر اساس حرف بزرگ در ابتدا + ارقام وایی + مرتب‌سازی معکوس براساس آکسان + مرتب‌سازی با حساسیت به اندازه حروف + مرتب‌سازی کانا به صورت متفاوت + مرتب‌سازی یونیکد نرمال شده + مرتب‌سازی شماره‌ها با سیستم عددی + + + BGN + سیستم اعداد + تون + UNGEGN + تکیه + تمام‌عرض + نیم‌عرض + جامو + پین‌یین + نشر + + + متریک + بریتانیایی + امریکایی + + + زبان: {0} + خط: {0} + ناحیه: {0} + + + + + right-to-left + + + + [\u064B \u064D \u064C \u0651 \u0654 آ ا ء أ ؤ ئ ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ة ی] + [\u200C\u200D\u200E\u200F \u064E \u0650 \u064F \u0652 \u0656 \u0670 إ ك ى ي] + [آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی] + [\- ‐ ، ٫ ٬ ؛ \: ! ؟ . … ‹ › « » ( ) \[ \] * / \\] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ؟ + + + « + » + + + + + + + + + + + موش + گاو + ببر + خرگوش + اژدها + مار + اسب + بز + میمون + خروس + سگ + خوک + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + y/M/d G + + + + + + + {1}، ساعت {0} + + + + + {1}، ساعت {0} + + + + + {1}،‏ {0} + + + + + {1}،‏ {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h a + H + HH:mm (Z) + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + M/d + E M/d + LLL + d LLL + E d LLL + d LLLL + E d LLLL + mm:ss + y G + y G + y/M G + y/M/d G + E y/M/d G + MMM y G + d MMM y G + E d MMM y G + QQQQ y G + QQQQ y G + + + {1} {0} + {0} ({1}) + + + {0} تا {1} + + d تا d + + + h a تا h a + h تا h a + + + H تا H + + + h:mm a تا h:mm a + h:mm تا h:mm a + h:mm تا h:mm a + + + H:mm تا H:mm + H:mm تا H:mm + + + h:mm a تا h:mm a (v) + h:mm تا h:mm a (v) + h:mm تا h:mm a (v) + + + H:mm تا H:mm (v) + H:mm تا H:mm (v) + + + h a تا h a (v) + h تا h a (v) + + + H تا H (v) + + + M تا M + + + M/d تا M/d + M/d تا M/d + + + E M/d تا E M/d + E M/d تا E M/d + + + LLL تا LLL + + + d تا d LLL + d LLL تا d LLL + + + E d LLL تا E d LLL + E d LLL تا E d LLL + + + y تا y G + + + y/M تا y/M G + y/M تا y/M G + + + y/M/d تا y/M/d G + y/M/d تا y/M/d G + y/M/d تا y/M/d G + + + E y/M/d تا E y/M/d G + E y/M/d تا E y/M/d G + E y/M/d تا E y/M/d G + + + LLL تا MMM y G + MMM y تا MMM y G + + + d تا d MMM y G + d LLL تا d MMM y G + d MMM y تا d MMM y G + + + E d LLL تا E d MMM y G + E d LLL تا E d MMM y G + E d MMM y تا E d MMM y G + + + LLLL تا MMMM y G + MMMM y تا MMMM y G + + + + + + + + + ژانویهٔ + فوریهٔ + مارس + آوریل + مهٔ + ژوئن + ژوئیهٔ + اوت + سپتامبر + اکتبر + نوامبر + دسامبر + + + ژ + ف + م + آ + م + ژ + ژ + ا + س + ا + ن + د + + + ژانویهٔ + فوریهٔ + مارس + آوریل + مهٔ + ژوئن + ژوئیهٔ + اوت + سپتامبر + اکتبر + نوامبر + دسامبر + + + + + ژانویه + فوریه + مارس + آوریل + مه + ژوئن + ژوئیه + اوت + سپتامبر + اکتبر + نوامبر + دسامبر + + + ژ + ف + م + آ + م + ژ + ژ + ا + س + ا + ن + د + + + ژانویه + فوریه + مارس + آوریل + مه + ژوئن + ژوئیه + اوت + سپتامبر + اکتبر + نوامبر + دسامبر + + + + + + + یکشنبه + دوشنبه + سه‌شنبه + چهارشنبه + پنجشنبه + جمعه + شنبه + + + ی + د + س + چ + پ + ج + ش + + + ۱ش + ۲ش + ۳ش + ۴ش + ۵ش + ج + ش + + + یکشنبه + دوشنبه + سه‌شنبه + چهارشنبه + پنجشنبه + جمعه + شنبه + + + + + یکشنبه + دوشنبه + سه‌شنبه + چهارشنبه + پنجشنبه + جمعه + شنبه + + + ی + د + س + چ + پ + ج + ش + + + ۱ش + ۲ش + ۳ش + ۴ش + ۵ش + ج + ش + + + یکشنبه + دوشنبه + سه‌شنبه + چهارشنبه + پنجشنبه + جمعه + شنبه + + + + + + + س‌م۱ + س‌م۲ + س‌م۳ + س‌م۴ + + + ۱ + ۲ + ۳ + ۴ + + + سه‌ماههٔ اول + سه‌ماههٔ دوم + سه‌ماههٔ سوم + سه‌ماههٔ چهارم + + + + + س‌م۱ + س‌م۲ + س‌م۳ + س‌م۴ + + + ۱ + ۲ + ۳ + ۴ + + + سه‌ماههٔ اول + سه‌ماههٔ دوم + سه‌ماههٔ سوم + سه‌ماههٔ چهارم + + + + + + + عصر + قبل‌ازظهر + بامداد + بعدازظهر + صبح + شب + ظهر + بعدازظهر + نیمه‌شب + + + + + + قبل از میلاد + میلادی + + + ق.م. + م. + + + ق + م + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + y/M/d + + + + + + + H:mm:ss (zzzz) + + + + + H:mm:ss (z) + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1}، ساعت {0} + + + + + {1}، ساعت {0} + + + + + {1}،‏ {0} + + + + + {1}،‏ {0} + + + + d + E d + E h:mm a + E H:mm + E h:mm:ss a + E H:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + h a + H + HH:mm (Z) + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + M/d + E M/d + LLL + d LLL + E d LLL + d LLLL + E d LLLL + mm:ss + mm:ss + y + y/M + y/M/d + E y/M/d + MMM y + d MMM y + E d MMM y + MMMM y + EEEE d MMMM y + QQQQ y + QQQQ y + + + {1} {0} + {0} ({1}) + + + {0} تا {1} + + d تا d + + + h a تا h a + h تا h a + + + H تا H + + + h:mm a تا h:mm a + h:mm تا h:mm a + h:mm تا h:mm a + + + H:mm تا H:mm + H:mm تا H:mm + + + h:mm a تا h:mm a v + h:mm تا h:mm a v + h:mm تا h:mm a v + + + H:mm تا H:mm v + H:mm تا H:mm v + + + h a تا h a v + h تا h a v + + + H تا H v + + + M تا M + + + M/d تا M/d + M/d تا M/d + + + E M/d تا E M/d + E M/d تا E M/d + + + LLL تا LLL + + + d تا d LLL + d LLL تا d LLL + + + E d LLL تا E d LLL + E d LLL تا E d LLL + + + y تا y + + + y/M تا y/M + y/M تا y/M + + + y/M/d تا y/M/d + y/M/d تا y/M/d + y/M/d تا y/M/d + + + E y/M/d تا E y/M/d + E y/M/d تا E y/M/d + E y/M/d تا E y/M/d + + + LLL تا MMM y + MMM y تا MMM y + + + d تا d MMM y + d LLL تا d MMM y + d MMM y تا d MMM y + + + E d LLL تا E d MMM y + E d LLL تا E d MMM y + E d MMM y تا E d MMM y + + + LLLL تا MMMM y + MMMM y تا MMMM y + + + + + + + + + تشری + حشوان + کسلو + طوت + شباط + آذار + واذار + واذار الثانی + نیسان + ایار + سیوان + تموز + آب + ایلول + + + ت + ح + ک + ط + ش + آ + و + و + ن + ا + س + ت + آ + ا + + + تشری + حشوان + کسلو + طوت + شباط + آذار + واذار + واذار الثانی + نیسان + ایار + سیوان + تموز + آب + ایلول + + + + + تشری + حشوان + کسلو + طوت + شباط + آذار + واذار + واذار الثانی + نیسان + ایار + سیوان + تموز + آب + ایلول + + + ت + ح + ک + ط + ش + آ + و + و + ن + ا + س + ت + آ + ا + + + تشری + حشوان + کسلو + طوت + شباط + آذار + واذار + واذار الثانی + نیسان + ایار + سیوان + تموز + آب + ایلول + + + + + + + + + محرم + صفر + ربیع الاول + ربیع الثانی + جمادی الاول + جمادی الثانی + رجب + شعبان + رمضان + شوال + ذیقعدهٔ + ذیحجهٔ + + + م + ص + ر + ر + ج + ج + ر + ش + ر + ش + ذ + ذ + + + محرم + صفر + ربیع الاول + ربیع الثانی + جمادی الاول + جمادی الثانی + رجب + شعبان + رمضان + شوال + ذیقعدهٔ + ذیحجهٔ + + + + + محرم + صفر + ربیع الاول + ربیع الثانی + جمادی الاول + جمادی الثانی + رجب + شعبان + رمضان + شوال + ذیقعده + ذیحجه + + + م + ص + ر + ر + ج + ج + ر + ش + ر + ش + ذ + ذ + + + محرم + صفر + ربیع الاول + ربیع الثانی + جمادی الاول + جمادی الثانی + رجب + شعبان + رمضان + شوال + ذیقعده + ذیحجه + + + + + + هجری قمری + + + ه‍.ق. + + + + + + EEEE d MMMM y GGGG + + + + + d MMMM y G + + + + + y/M/d G + + + + + yy/M/d G + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + HH:mm (Z) + L + M/d + E M/d + LLL + d LLL + E d LLL + d LLLL + E d LLLL + mm:ss + y + y/M + E y/M/d + MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + y G + MMM y G + d MMM y G + E d MMM y G + QQQQ y G + QQQQ y G + + + + + + + + فروردین + اردیبهشت + خرداد + تیر + مرداد + شهریور + مهر + آبان + آذر + دی + بهمن + اسفند + + + ف + ا + خ + ت + م + ش + م + آ + آ + د + ب + ا + + + فروردین + اردیبهشت + خرداد + تیر + مرداد + شهریور + مهر + آبان + آذر + دی + بهمن + اسفند + + + + + فروردین + اردیبهشت + خرداد + تیر + مرداد + شهریور + مهر + آبان + آذر + دی + بهمن + اسفند + + + ف + ا + خ + ت + م + ش + م + آ + آ + د + ب + ا + + + فروردین + اردیبهشت + خرداد + تیر + مرداد + شهریور + مهر + آبان + آذر + دی + بهمن + اسفند + + + + + + هجری شمسی + + + ه‍.ش. + + + + + + + دوره + + + سال + سال گذشته + امسال + سال آینده + + {0} سال بعد + {0} سال بعد + + + {0} سال پیش + {0} سال پیش + + + + ماه + ماه گذشته + این ماه + ماه آینده + + {0} ماه بعد + {0} ماه بعد + + + {0} ماه پیش + {0} ماه پیش + + + + هفته + هفتهٔ گذشته + این هفته + هفتهٔ آینده + + {0} هفته بعد + {0} هفته بعد + + + {0} هفته پیش + {0} هفته پیش + + + + روز + پریروز + دیروز + امروز + فردا + پس‌فردا + + {0} روز بعد + {0} روز بعد + + + {0} روز پیش + {0} روز پیش + + + + روز هفته + + + یکشنبهٔ گذشته + این یکشنبه + یکشنبهٔ آینده + + + دوشنبهٔ گذشته + این دوشنبه + دوشنبهٔ آینده + + + سه‌شنبهٔ گذشته + این سه‌شنبه + سه‌شنبهٔ آینده + + + چهارشنبهٔ گذشته + این چهارشنبه + چهارشنبهٔ آینده + + + پنجشنبهٔ گذشته + این پنجشنبه + پنجشنبهٔ آینده + + + جمعهٔ گذشته + این جمعه + جمعهٔ آینده + + + شنبهٔ گذشته + این شنبه + شنبهٔ آینده + + + قبل/بعدازظهر + + + ساعت + + {0} ساعت بعد + {0} ساعت بعد + + + {0} ساعت پیش + {0} ساعت پیش + + + + دقیقه + + {0} دقیقه بعد + {0} دقیقه بعد + + + {0} دقیقه پیش + {0} دقیقه پیش + + + + ثانیه + اکنون + + {0} ثانیه بعد + {0} ثانیه بعد + + + {0} ثانیه پیش + {0} ثانیه پیش + + + + منطقهٔ زمانی + + + + +HH:mm;−HH:mm + GMT{0} + GMT + وقت {0} + وقت تابستانی {0} + وقت عادی {0} + {1} ({0}) + + شهر نامشخص + + + آندورا + + + دبی + + + کابل + + + آنتیگوا + + + آنگوئیلا + + + تیرانا + + + ایروان + + + لواندا + + + روترا + + + پالمر + + + شووا + + + ماوسون + + + دیویس + + + ووستوک + + + کیسی + + + دومون دورویل + + + مک‌موردو + + + ریوگالگوس + + + مندوسا + + + سن‌خوان + + + اوشوایا + + + لاریوخا + + + سن‌لوئیس + + + کاتامارکا + + + سالتا + + + خوخوی + + + توکومن + + + کوردووا + + + بوئنوس‌آیرس + + + پاگوپاگو + + + وین + + + پرت + + + اوکلا + + + داروین + + + آدلاید + + + بروکن‌هیل + + + کوری + + + ملبورن + + + هوبارت + + + لیندمن + + + سیدنی + + + بریسبین + + + مکواری + + + لردهاو + + + اروبا + + + ماریه‌هامن + + + باکو + + + سارایوو + + + باربادوس + + + داکا + + + بروکسل + + + اوآگادوگو + + + صوفیه + + + بحرین + + + بوجومبورا + + + پورتو نووو + + + سنت بارتلمی + + + برمودا + + + برونئی + + + لاپاز + + + کرالندیک + + + ایرونپه + + + ریوبرانکو + + + پورتوولیو + + + بوئاویشتا + + + ماناوس + + + کویاوا + + + سنتارم + + + کمپو گرانده + + + بلم + + + آراگواینا + + + سائوپائولو + + + بایا + + + فورتالزا + + + ماسیو + + + ریسیفی + + + نورونیا + + + ناسائو + + + تیمفو + + + گابورون + + + مینسک + + + بلیز + + + داوسن + + + وایت‌هورس + + + اینوویک + + + ونکوور + + + داوسن کریک + + + کرستون + + + یلونایف + + + ادمونتون + + + سوئیفت‌کرنت + + + کمبریج‌بی + + + رجاینا + + + وینیپگ + + + رزولوت + + + رینی‌ریور + + + خلیجک رنکین + + + اتکوکان + + + تاندربی + + + نیپیگان + + + تورنتو + + + ایکلوئت + + + پانگنیرتونگ + + + مانکتون + + + هلیفکس + + + گوس‌بی + + + گلیس‌بی + + + بلان‐سابلون + + + سنت جان + + + کوکوس + + + کینشاسا + + + لوبومباشی + + + بانگی + + + برازویل + + + زوریخ + + + آبیجان + + + راروتونگا + + + ایستر + + + سانتیاگو + + + دوآلا + + + کاشغر + + + ارومچی + + + چونگ‌کینگ + + + شانگهای + + + هاربین + + + بوگوتا + + + کاستاریکا + + + هاوانا + + + کیپ‌ورد + + + کوراسائو + + + کریسمس + + + نیکوزیا + + + پراگ + + + بازنگن + + + برلین + + + جیبوتی + + + کپنهاگ + + + دومینیکا + + + سانتو دومینگو + + + الجزیره + + + گالاپاگوس + + + گوایاکیل + + + تالین + + + قاهره + + + العیون + + + اسمره + + + قناری + + + سبته + + + مادرید + + + آدیس آبابا + + + هلسینکی + + + فیجی + + + استانلی + + + چوک + + + پانپی + + + کوسرای + + + فارو + + + پاریس + + + لیبرویل + + + + وقت تابستانی بریتانیا + + لندن + + + گرانادا + + + تفلیس + + + کاین + + + گرنزی + + + اکرا + + + جبل‌الطارق + + + تول + + + گودهوب + + + اسکورسبیسوند + + + دانمارک‌شاون + + + بانجول + + + کوناکری + + + گوادلوپ + + + مالابو + + + آتن + + + جورجیای جنوبی + + + گواتمالا + + + گوام + + + بیسائو + + + گویان + + + هنگ‌کنگ + + + تگوسیگالپا + + + زاگرب + + + پورتوپرنس + + + بوداپست + + + جاکارتا + + + پونتیاناک + + + ماکاسار + + + جایاپورا + + + + وقت تابستانی ایرلند + + دوبلین + + + اورشلیم + + + جزیرهٔ من + + + کلکته + + + شاگوس + + + بغداد + + + تهران + + + ریکیاویک + + + رم + + + جرزی + + + جامائیکا + + + عمّان + + + توکیو + + + نایروبی + + + بیشکک + + + پنوم‌پن + + + اندربری + + + کریتیماتی + + + تاراوا + + + کومورو + + + سنت کیتس + + + پیونگ‌یانگ + + + سئول + + + کویت + + + کیمن + + + آقتاو + + + اورال + + + آقتوبه + + + قیزیل‌اوردا + + + آلماتی + + + وینتیان + + + بیروت + + + سنت لوسیا + + + فادوتس + + + کلمبو + + + مونروویا + + + ماسرو + + + ویلنیوس + + + لوکزامبورگ + + + ریگا + + + طرابلس + + + کازابلانکا + + + موناکو + + + کیشیناو + + + پادگاریتسا + + + ماریگات + + + آنتاناناریوو + + + کواجیلین + + + ماجورو + + + اسکوپیه + + + باماکو + + + یانگون + + + خوود + + + اولان‌باتور + + + چویبالسان + + + ماکائو + + + سایپان + + + مارتینیک + + + نوآکشوت + + + مونتسرات + + + مالت + + + موریس + + + مالدیو + + + بلانتیره + + + تیخوانا + + + سانتا ایزابل + + + ارموسیو + + + ماساتلان + + + چیواوا + + + باهیا باندراس + + + اخیناگا + + + مونتری + + + مکزیکوسیتی + + + ماتاموروس + + + مریدا + + + کانکون + + + کوالالامپور + + + کوچینگ + + + ماپوتو + + + ویندهوک + + + نومئا + + + نیامی + + + نورفولک + + + لاگوس + + + ماناگوا + + + آمستردام + + + اسلو + + + کاتماندو + + + نائورو + + + نیوئه + + + چتم + + + اوکلند + + + مسقط + + + پاناما + + + لیما + + + تاهیتی + + + مارکوزه + + + گامبیر + + + پورت‌مورزبی + + + مانیل + + + کراچی + + + ورشو + + + میکلون + + + پیت‌کرن + + + پورتوریکو + + + غزه + + + الخلیل + + + آزور + + + مادیرا + + + لیسبون + + + پالائو + + + آسونسیون + + + قطر + + + رئونیون + + + بخارست + + + بلگراد + + + کالینینگراد + + + مسکو + + + ولگاگراد + + + سامارا + + + یکاترینبرگ + + + اومسک + + + نووسیبیریسک + + + نوووکوزنتسک + + + کراسنویارسک + + + ایرکوتسک + + + یاکوتسک + + + ولادی‌وستوک + + + خاندیگا + + + ساخالین + + + اوست نرا + + + ماگادان + + + کامچاتکا + + + آنادیر + + + کیگالی + + + ریاض + + + گوادال‌کانال + + + ماهه + + + خارطوم + + + استکهلم + + + سنگاپور + + + سنت هلنا + + + لیوبلیانا + + + لانگ‌یربین + + + براتیسلاوا + + + فری‌تاون + + + سان‌مارینو + + + داکار + + + موگادیشو + + + پاراماریبو + + + جوبا + + + سائوتومه + + + السالوادور + + + بخش شاهزاده‌‌نشین پایین + + + دمشق + + + مبابانه + + + گراند تورک + + + انجامنا + + + کرگولن + + + لومه + + + بانکوک + + + دوشنبه + + + فاکائوفو + + + دیلی + + + عشق‌آباد + + + شهر تونس + + + تونگاتاپو + + + استانبول + + + پورت‌آواسپین + + + فونافوتی + + + تایپه + + + دارالسلام + + + اوژگورود + + + کیف + + + سیمفروپل + + + زاپوروژیا + + + کامپالا + + + میدوی + + + جانستون + + + ویک + + + ایدک + + + نوم + + + هونولولو + + + انکوریج + + + یاکوتات + + + سیتکا + + + جونو + + + متالاکاتلا + + + لوس‌آنجلس + + + بویسی + + + فینکس + + + دنور + + + بیولا، داکوتای شمالی + + + نیوسالم، داکوتای شمالی + + + سنتر، داکوتای شمالی + + + شیکاگو + + + منامینی + + + وینسنس، اندیانا + + + پیترزبرگ، ایندیانا + + + تل‌سیتی، ایندیانا + + + ناکس، ایندیانا + + + ویناماک، ایندیانا + + + مارنگو، ایندیانا + + + ایندیاناپولیس + + + لوئیزویل + + + ویوی، ایندیانا + + + مانتیسلو، کنتاکی + + + دترویت + + + نیویورک + + + مونته‌ویدئو + + + سمرقند + + + تاشکند + + + واتیکان + + + سنت وینسنت + + + کاراکاس + + + تورتولا + + + سنت توماس + + + هوشی‌مین‌سیتی + + + افاته + + + والیس + + + آپیا + + + عدن + + + مایوت + + + ژوهانسبورگ + + + لوزاکا + + + هراره + + + + وقت افغانستان + + + + + وقت مرکز افریقا + + + + + وقت شرق افریقا + + + + + وقت جنوب افریقا + + + + + وقت غرب افریقا + وقت عادی غرب افریقا + وقت تابستانی غرب افریقا + + + + + وقت آلاسکا + وقت عادی آلاسکا + وقت تابستانی آلاسکا + + + + + وقت آلماآتا + وقت عادی آلماآتا + وقت تابستانی آلماآتا + + + + + وقت آمازون + وقت عادی آمازون + وقت تابستانی آمازون + + + + + وقت مرکز امریکا + وقت عادی مرکز امریکا + وقت تابستانی مرکز امریکا + + + + + وقت شرق امریکا + وقت عادی شرق امریکا + وقت تابستانی شرق امریکا + + + + + وقت کوهستانی امریکا + وقت عادی کوهستانی امریکا + وقت تابستانی کوهستانی امریکا + + + + + وقت غرب امریکا + وقت عادی غرب امریکا + وقت تابستانی غرب امریکا + + + + + وقت آنادیر + وقت عادی آنادیر + وقت تابستانی آنادیر + + + + + وقت عربستان + وقت عادی عربستان + وقت تابستانی عربستان + + + + + وقت آرژانتین + وقت عادی آرژانتین + وقت تابستانی آرژانتین + + + + + وقت غرب آرژانتین + وقت عادی غرب آرژانتین + وقت تابستانی غرب آرژانتین + + + + + وقت ارمنستان + وقت عادی ارمنستان + وقت تابستانی ارمنستان + + + + + وقت آتلانتیک + وقت عادی آتلانتیک + وقت تابستانی آتلانتیک + + + + + وقت مرکز استرالیا + وقت عادی مرکز استرالیا + وقت تابستانی مرکز استرالیا + + + + + وقت مرکز-غرب استرالیا + وقت عادی مرکز-غرب استرالیا + وقت تابستانی مرکز-غرب استرالیا + + + + + وقت شرق استرالیا + وقت عادی شرق استرالیا + وقت تابستانی شرق استرالیا + + + + + وقت غرب استرالیا + وقت عادی غرب استرالیا + وقت تابستانی غرب استرالیا + + + + + وقت جمهوری آذربایجان + وقت عادی جمهوری آذربایجان + وقت تابستانی جمهوری آذربایجان + + + + + وقت آزور + وقت عادی آزور + وقت تابستانی آزور + + + + + وقت بنگلادش + وقت عادی بنگلادش + وقت تابستانی بنگلادش + + + + + وقت بوتان + + + + + وقت بولیوی + + + + + وقت برازیلیا + وقت عادی برازیلیا + وقت تابستانی برازیلیا + + + + + وقت برونئی دارالسلام + + + + + وقت کیپ‌ورد + وقت عادی کیپ‌ورد + وقت تابستانی کیپ‌ورد + + + + + وقت چامورو + + + + + وقت چت‌هام + وقت عادی چت‌هام + وقت تابستانی چت‌هام + + + + + وقت شیلی + وقت عادی شیلی + وقت تابستانی شیلی + + + + + وقت چین + وقت عادی چین + وقت تابستانی چین + + + + + وقت چویبالسان + وقت عادی چویبالسان + وقت تابستانی چویبالسان + + + + + وقت جزیرهٔ کریسمس + + + + + وقت جزایر کوکوس + + + + + وقت کلمبیا + وقت عادی کلمبیا + وقت تابستانی کلمبیا + + + + + وقت جزایر کوک + وقت عادی جزایر کوک + وقت تابستانی جزایر کوک + + + + + وقت کوبا + وقت عادی کوبا + وقت تابستانی کوبا + + + + + وقت دیویس + + + + + وقت دومون دورویل + + + + + وقت تیمور شرقی + + + + + وقت جزیرهٔ ایستر + وقت عادی جزیرهٔ ایستر + وقت تابستانی جزیرهٔ ایستر + + + + + وقت اکوادور + + + + + وقت مرکز اروپا + وقت عادی مرکز اروپا + وقت تابستانی مرکز اروپا + + + + + وقت شرق اروپا + وقت عادی شرق اروپا + وقت تابستانی شرق اروپا + + + + + وقت غرب اروپا + وقت عادی غرب اروپا + وقت تابستانی غرب اروپا + + + + + وقت جزایر فالکلند + وقت عادی جزایر فالکلند + وقت تابستانی جزایر فالکلند + + + + + وقت فیجی + وقت عادی فیجی + وقت تابستانی فیجی + + + + + وقت گویان فرانسه + + + + + وقت سرزمین‌های جنوبی و جنوبگان فرانسه + + + + + وقت گالاپاگوس + + + + + وقت گامبیه + + + + + وقت گرجستان + وقت عادی گرجستان + وقت تابستانی گرجستان + + + + + وقت جزایر گیلبرت + + + + + وقت گرینویچ + + + + + وقت شرق گرینلند + وقت عادی شرق گرینلند + وقت تابستانی شرق گرینلند + + + + + وقت غرب گرینلند + وقت عادی غرب گرینلند + وقت تابستانی غرب گرینلند + + + + + وقت عادی گوام + + + + + وقت خلیج فارس + + + + + وقت گویان + + + + + وقت هاوایی + وقت عادی هاوایی + وقت تابستانی هاوایی + + + + + وقت هنگ‌کنگ + وقت عادی هنگ‌کنگ + وقت تابستانی هنگ‌کنگ + + + + + وقت خوود + وقت عادی خوود + وقت تابستانی خوود + + + + + وقت هند + + + + + وقت اقیانوس هند + + + + + وقت هندوچین + + + + + وقت مرکز اندونزی + + + + + وقت شرق اندونزی + + + + + وقت غرب اندونزی + + + + + وقت ایران + وقت عادی ایران + وقت تابستانی ایران + + + + + وقت ایرکوتسک + وقت عادی ایرکوتسک + وقت تابستانی ایرکوتسک + + + + + وقت اسرائیل + وقت عادی اسرائیل + وقت تابستانی اسرائیل + + + + + وقت ژاپن + وقت عادی ژاپن + وقت تابستانی ژاپن + + + + + وقت پتروپاولوسک‐کامچاتسکی + وقت عادی پتروپاولوسک‐کامچاتسکی + وقت تابستانی پتروپاولوسک‐کامچاتسکی + + + + + وقت شرق قزاقستان + + + + + وقت غرب قزاقستان + + + + + وقت کره + وقت عادی کره + وقت تابستانی کره + + + + + وقت کوسرای + + + + + وقت کراسنویارسک + وقت عادی کراسنویارسک + وقت تابستانی کراسنویارسک + + + + + وقت قرقیزستان + + + + + وقت لانکا + + + + + وقت جزایر لاین + + + + + وقت لردهو + وقت عادی لردهو + وقت تابستانی لردهو + + + + + وقت ماکائو + وقت عادی ماکائو + وقت تابستانی ماکائو + + + + + وقت جزیرهٔ مکواری + + + + + وقت ماگادان + وقت عادی ماگادان + وقت تابستانی ماگادان + + + + + وقت مالزی + + + + + وقت مالدیو + + + + + وقت مارکوئز + + + + + وقت جزایر مارشال + + + + + وقت موریس + وقت عادی موریس + وقت تابستانی موریس + + + + + وقت ماوسون + + + + + وقت اولان‌باتور + وقت عادی اولان‌باتور + وقت تابستانی اولان‌باتور + + + + + وقت مسکو + وقت عادی مسکو + وقت تابستانی مسکو + + + + + وقت میانمار + + + + + وقت نائورو + + + + + وقت نپال + + + + + وقت کالدونیای جدید + وقت عادی کالدونیای جدید + وقت تابستانی کالدونیای جدید + + + + + وقت زلاند نو + وقت عادی زلاند نو + وقت تابستانی زلاند نو + + + + + وقت نیوفاندلند + وقت عادی نیوفاندلند + وقت تابستانی نیوفاندلند + + + + + وقت نیوئه + + + + + وقت جزایر نورفولک + + + + + وقت فرناندو دی نورونیا + وقت عادی فرناندو دی نورونیا + وقت تابستانی فرناندو دی نورونیا + + + + + وقت جزایر ماریانای شمالی + + + + + وقت نووسیبیرسک + وقت عادی نووسیبیرسک + وقت تابستانی نووسیبیرسک + + + + + وقت اومسک + وقت عادی اومسک + وقت تابستانی اومسک + + + + + وقت پاکستان + وقت عادی پاکستان + وقت تابستانی پاکستان + + + + + وقت پالائو + + + + + وقت پاپوا گینهٔ نو + + + + + وقت پاراگوئه + وقت عادی پاراگوئه + وقت تابستانی پاراگوئه + + + + + وقت پرو + وقت عادی پرو + وقت تابستانی پرو + + + + + وقت فیلیپین + وقت عادی فیلیپین + وقت تابستانی فیلیپین + + + + + وقت جزایر فونیکس + + + + + وقت سنت پیر و میکلون + وقت عادی سنت پیر و میکلون + وقت تابستانی سنت پیر و میکلون + + + + + وقت پیتکایرن + + + + + وقت پوناپه + + + + + وقت قیزیل‌اوردا + وقت عادی قیزیل‌اوردا + وقت تابستانی قیزیل‌اوردا + + + + + وقت ریونیون + + + + + وقت روترا + + + + + وقت ساخالین + وقت عادی ساخالین + وقت تابستانی ساخالین + + + + + وقت سامارا + وقت عادی سامارا + وقت تابستانی سامارا + + + + + وقت ساموا + وقت عادی ساموا + وقت تابستانی ساموا + + + + + وقت سیشل + + + + + وقت سنگاپور + + + + + وقت جزایر سلیمان + + + + + وقت جورجیای جنوبی + + + + + وقت سورینام + + + + + وقت شووا + + + + + وقت تاهیتی + + + + + وقت تایپه + وقت عادی تایپه + وقت تابستانی تایپه + + + + + وقت تاجیکستان + + + + + وقت توکلائو + + + + + وقت تونگا + وقت عادی تونگا + وقت تابستانی تونگا + + + + + وقت چوئوک + + + + + وقت ترکمنستان + وقت عادی ترکمنستان + وقت تابستانی ترکمنستان + + + + + وقت تووالو + + + + + وقت اروگوئه + وقت عادی اروگوئه + وقت تابستانی اروگوئه + + + + + وقت ازبکستان + وقت عادی ازبکستان + وقت تابستانی ازبکستان + + + + + وقت واناتو + وقت عادی واناتو + وقت تابستانی واناتو + + + + + وقت ونزوئلا + + + + + وقت ولادی‌وستوک + وقت عادی ولادی‌وستوک + وقت تابستانی ولادی‌وستوک + + + + + وقت ولگاگراد + وقت عادی ولگاگراد + وقت تابستانی ولگاگراد + + + + + وقت وستوک + + + + + وقت جزیرهٔ ویک + + + + + وقت والیس و فوتونا + + + + + وقت یاکوتسک + وقت عادی یاکوتسک + وقت تابستانی یاکوتسک + + + + + وقت یکاترینبورگ + وقت عادی یکاترینبورگ + وقت تابستانی یکاترینبورگ + + + + + + arabext + + arabext + + + ٫ + ٬ + ؛ + ٪ + ‎+‎ + ‎− + ×۱۰^ + × + ؉ + + ناعدد + + + . + , + ; + % + ‎+ + ‎− + E + × + + + NaN + + + + + #,##0.### + + + + + + + #,##0.### + + + + + 0 هزار + 0 هزار + 00 هزار + 00 هزار + 000 هزار + 000 هزار + 0 میلیون + 0 میلیون + 00 میلیون + 00 میلیون + 000 میلیون + 000 میلیون + 0 میلیارد + 0 میلیارد + 00 میلیارد + 00 میلیارد + 000 میلیارد + 000 میلیارد + 0 هزار میلیارد + 0 هزار میلیارد + 00 هزار میلیارد + 00 هزار میلیارد + 000 هزار میلیارد + 000 هزار میلیارد + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0G + 0G + 00G + 00G + 000G + 000G + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0% + + + + + + + ‎¤#,##0.00 + + + ‎¤#,##0.00;‎(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + پزتای آندورا + + + درهم امارات متحدهٔ عربی + + + افغانی افغانستان (۱۹۲۷ تا ۲۰۰۲) + + + افغانی افغانستان + افغانی افغانستان + افغانی افغانستان + ؋ + + + لک آلبانی + + + درم ارمنستان + + + گیلدر آنتیل هلند + + + کوانزای آنگولا + + + پزوی آرژانتین (۱۹۸۳ تا ۱۹۸۵)‏ + + + پزوی آرژانتین + + + شیلینگ اتریش + + + دلار استرالیا + + + فلورین آروبا + + + منات جمهوری آذربایجان (۱۹۹۳ تا ۲۰۰۶) + + + منات جمهوری آذربایجان + + + دینار بوسنی و هرزگوین (۱۹۹۲ تا ۱۹۹۴) + + + مارک تبدیل‌پذیر بوسنی و هرزگوین + + + دلار باربادوس + + + تاکای بنگلادش + + + فرانک بلژیک + + + فرانک بلژیک (مالی) + + + لف بلغارستان + + + دینار بحرین + + + فرانک بوروندی + + + دلار برمودا + دلار برمودا + دلار برمودا + + + دلار برونئی + + + بولیویانوی بولیوی + + + پزوی بولیوی + + + رئال برزیل + رئال برزیل + رئال برزیل + + + دلار باهاما + + + انگولتروم بوتان + + + پولای بوتسوانا + + + روبل جدید بیلوروسی (۱۹۹۴ تا ۱۹۹۹) + + + روبل بیلوروسی + + + دلار بلیز + + + دلار کانادا + دلار کانادا + دلار کانادا + $CA + + + فرانک کنگو + + + فرانک سوئیس + + + پزوی شیلی + + + یوآن چین + ¥CN + + + پزوی کلمبیا + + + کولون کاستاریکا + + + دینار صربستان (۲۰۰۲ تا ۲۰۰۶) + + + پزوی تبدیل‌پذیر کوبا + + + پزوی کوبا + + + اسکودوی کیپ‌ورد + + + پوند قبرس + + + کورونای جمهوری چک + + + مارک آلمان شرقی + + + مارک آلمان + + + فرانک جیبوتی + + + کرون دانمارک + + + پزوی جمهوری دومینیکن + + + دینار الجزایر + + + لیرهٔ مصر + + + ناکفای اریتره + + + بیر اتیوپی + + + یورو + یورو + یورو + + + + دلار فیجی + + + پوند جزایر فالکلند + + + فرانک فرانسه + + + پوند بریتانیا + £ + + + لاری گرجستان + + + سدی غنا + + + پوند جبل‌الطارق + + + دالاسی گامبیا + + + فرانک گینه + + + دراخمای یونان + + + کتزال گواتمالا + + + پزوی گینهٔ بیسائو + + + دلار گویان + + + دلار هنگ‌کنگ + $HK + + + لمپیرای هندوراس + + + دینار کرواسی + + + کونای کرواسی + + + گورد هائیتی + + + فورینت مجارستان + + + روپیهٔ اندونزی + + + پوند ایرلند + + + شقل جدید اسرائیل + + + + روپیهٔ هند + روپیهٔ هند + روپیهٔ هند + + + + دینار عراق + + + ریال ایران + ریال ایران + ریال ایران + ریال + + + کرونای ایسلند + + + لیرهٔ ایتالیا + + + دلار جامائیکا + + + دینار اردن + + + ین ژاپن + ین ژاپن + ین ژاپن + ¥ + + + شیلینگ کنیا + + + سوم قرقیزستان + + + ری‌یل کامبوج + + + فرانک کومورو + + + وون کرهٔ شمالی + + + وون کرهٔ جنوبی + + + + دینار کویت + + + دلار جزایر کِیمن + + + تنگهٔ قزاقستان + + + کیپ لائوس + + + لیرهٔ لبنان + + + روپیهٔ سری‌لانکا + + + دلار لیبریا + + + لوتی لسوتو + + + لیتاس لیتوانی + + + فرانک لوکزامبورگ + + + فرانک مالی لوگزامبورگ + + + لاتس لتونی + + + روبل لتونی + + + دینار لیبی + + + درهم مراکش + + + فرانک مراکش + + + لئوی مولداوی + + + آریاری مالاگاسی + + + فرانک ماداگاسکار + + + دینار مقدونیه + + + فرانک مالی + + + کیات میانمار + + + توگریک مغولستان + + + پاتاکای ماکائو + + + اوگوئیای موریتانی + + + لیرهٔ مالت + + + پوند مالت + + + روپیهٔ موریس + + + روپیهٔ مالدیو + + + کواچای مالاوی + + + پزوی مکزیک + $MX + + + پزوی نقرهٔ مکزیک (۱۸۶۱ تا ۱۹۹۲) + + + رینگیت مالزی + + + اسکودوی موزامبیک + + + متیکال موزامبیک + + + دلار نامیبیا + + + نایرای نیجریه + + + کوردوبای نیکاراگوئه + + + گیلدر هلند + + + کرون نروژ + + + روپیهٔ نپال + + + دلار زلاند نو + $NZ + + + ریال عمان + + + بالبوای پاناما + + + نوئووسول پرو + + + کینای پاپوا گینهٔ نو + + + پزوی فیلیپین + + + روپیهٔ پاکستان + + + زواتی لهستان + + + اسکودوی پرتغال + + + گوارانی پاراگوئه + + + ریال قطر + + + دلار رودزیا + + + لئوی رومانی + + + دینار صربستان + + + روبل روسیه + روبل روسیه + روبل روسیه + + + روبل روسیه (۱۹۹۱ تا ۱۹۹۸) + + + فرانک رواندا + + + ریال سعودی + + + دلار جزایر سلیمان + + + روپیهٔ سیشل + + + دینار سودان (۱۹۹۲ تا ۲۰۰۷) + + + لیرهٔ سودان + + + کرون سوئد + + + دلار سنگاپور + + + پوند سنت هلن + + + لئون سیرالئون + + + شیلینگ سومالی + + + دلار سورینام + + + گیلدر سورینام + + + پوند سودان جنوبی + + + دوبرای سائوتومه و پرنسیپ + + + روبل شوروی + + + لیرهٔ سوریه + + + لیلانگنی سوازیلند + + + بات تایلند + ฿ + + + روبل تاجیکستان + + + سامانی تاجیکستان + + + منات ترکمنستان (۱۹۹۳ تا ۲۰۰۹) + + + منات ترکمنستان + + + دینار تونس + + + پاآنگای تونگا + + + اسکودوی تیمور + + + لیرهٔ ترکیه (۱۹۲۲ تا ۲۰۰۵) + + + لیرهٔ ترکیه + + + دلار ترینیداد و توباگو + + + دلار جدید تایوان + + + شیلینگ تانزانیا + + + هریونیای اوکراین + + + شیلینگ اوگاندا (۱۹۶۶ تا ۱۹۸۷) + + + شیلینگ اوگاندا + + + دلار امریکا + دلار امریکا + دلار امریکا + $ + + + دلار امریکا (روز بعد) + + + دلار امریکا (همان روز) + + + پزوی اوروگوئه (۱۹۷۵ تا ۱۹۹۳) + + + پزوی اوروگوئه + + + سوم ازبکستان + + + بولیوار ونزوئلا + + + دانگ ویتنام + + + + واتوی وانوواتو + + + تالای ساموا + + + فرانک CFA مرکز آفریقا + FCFA + + + نقره + + + طلا + + + دلار شرق کارائیب + $EC + + + فرانک طلای فرانسه + + + فرانک CFA غرب آفریقا + CFA + + + پالادیم + + + فرانک CFP + CFPF + + + پلاتین + + + ارز نامشخص + (ارز نامشخص) + (ارز نامشخص) + + + دینار یمن + + + ریال یمن + + + راند افریقای جنوبی + + + کواچای زامبیا (۱۹۶۸ تا ۲۰۱۲) + + + کواچای زامبیا + + + دلار زیمبابوه (۱۹۸۰ تا ۲۰۰۸) + + + دلار زیمبابوه (۲۰۰۹) + + + دلار زیمبابوه (۲۰۰۸) + + + + {0}+‎ + {0}–{1} + + + + + + {0} بر {1} + + + {0} دقیقه + {0} دقیقه + + + {0} ثانیه + {0} ثانیه + + + {0} درجه + {0} درجه + + + {0} جریب + {0} جریب + + + {0} هکتار + {0} هکتار + + + {0} فوت مربع + {0} فوت مربع + + + {0} کیلومتر مربع + {0} کیلومتر مربع + + + {0} متر مربع + {0} متر مربع + + + {0} مایل مربع + {0} مایل مربع + + + {0} روز + {0} روز + + + {0} ساعت + {0} ساعت + + + {0} میلی‌ثانیه + {0} میلی‌ثانیه + + + {0} دقیقه + {0} دقیقه + + + {0} ماه + {0} ماه + + + {0} ثانیه + {0} ثانیه + + + {0} هفته + {0} هفته + + + {0} سال + {0} سال + + + {0} سانتی‌متر + {0} سانتی‌متر + + + {0} فوت + {0} فوت + + + {0} اینچ + {0} اینچ + + + {0} کیلومتر + {0} کیلومتر + + + {0} سال نوری + {0} سال نوری + + + {0} متر + {0} متر + + + {0} مایل + {0} مایل + + + {0} میلی‌متر + {0} میلی‌متر + + + {0} پیکومتر + {0} پیکومتر + + + {0} یارد + {0} یارد + + + {0} گرم + {0} گرم + + + {0} کیلوگرم + {0} کیلوگرم + + + {0} اونس + {0} اونس + + + {0} پوند + {0} پوند + + + {0} اسب بخار + {0} اسب بخار + + + {0} کیلووات + {0} کیلووات + + + {0} وات + {0} وات + + + {0} هکتوپاسکال + {0} هکتوپاسکال + + + {0} اینچ جیوه + {0} اینچ جیوه + + + {0} میلی‌بار + {0} میلی‌بار + + + {0} کیلومتر در ساعت + {0} کیلومتر در ساعت + + + {0} متر در ثانیه + {0} متر در ثانیه + + + {0} مایل در ساعت + {0} مایل در ساعت + + + {0} درجهٔ سلسیوس + {0} درجهٔ سلسیوس + + + {0} درجهٔ فارنهایت + {0} درجهٔ فارنهایت + + + {0} کیلومتر مکعب + {0} کیلومتر مکعب + + + {0} مایل مکعب + {0} مایل مکعب + + + {0} لیتر + {0} لیتر + + + + + {0}/{1} + + + {0}G + {0}G + + + {0} دق + {0} دق + + + {0} ث + {0} ث + + + {0} درجه + {0} درجه + + + {0} جریب + {0} جریب + + + {0} هکتار + {0} هکتار + + + {0} فوت مربع + {0} فوت مربع + + + {0} کیلومترمربع + {0} کیلومترمربع + + + {0} مترمربع + {0} مترمربع + + + {0} مایل مربع + {0} مایل مربع + + + {0} روز + {0} روز + + + {0} ساعت + {0} ساعت + + + {0} میلی‌ثانیه + {0} میلی‌ثانیه + + + {0} دقیقه + {0} دقیقه + + + {0} ماه + {0} ماه + + + {0} ثانیه + {0} ثانیه + + + {0} هفته + {0} هفته + + + {0} سال + {0} سال + + + {0} سانت + {0} سانت + + + {0} فوت + {0} فوت + + + {0} اینچ + {0} اینچ + + + {0} کیلومتر + {0} کیلومتر + + + {0} سال نوری + {0} سال نوری + + + {0} متر + {0} متر + + + {0} مایل + {0} مایل + + + {0} میلیمتر + {0} میلیمتر + + + {0} پیکومتر + {0} پیکومتر + + + {0} یارد + {0} یارد + + + {0} گرم + {0} گرم + + + {0} کیلو + {0} کیلو + + + {0} اونس + {0} اونس + + + {0} پوند + {0} پوند + + + {0} اسب بخار + {0} اسب بخار + + + {0} کیلووات + {0} کیلووات + + + {0} وات + {0} وات + + + {0} هکتوپاسکال + {0} هکتوپاسکال + + + {0} اینچ‌جیوه + {0} اینچ‌جیوه + + + {0} میلی‌بار + {0} میلی‌بار + + + {0} کیلومتردرساعت + {0} کیلومتردرساعت + + + {0} متردرثانیه + {0} متردرثانیه + + + {0} مایل‌درساعت + {0} مایل‌درساعت + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} کیلومترمکعب + {0} کیلومترمکعب + + + {0} مایل مکعب + {0} مایل مکعب + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}جریب + {0} جریب + + + {0}ha + {0}ha + + + {0}ft² + {0}ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0} روز + {0} روز + + + {0} ساعت + {0} ساعت + + + {0}ms + {0}ms + + + {0} دقیقه + {0} دقیقه + + + {0} ماه + {0} ماه + + + {0}s + {0}s + + + {0} هفته + {0} هفته + + + {0} سال + {0} سال + + + {0} cm + {0} cm + + + {0}ft + {0}ft + + + {0}in + {0}in + + + {0}km + {0}km + + + {0}ly + {0}ly + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}oz + {0}oz + + + {0}lb + {0}lb + + + {0}hp + {0}hp + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}inHg + {0}inHg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0}mph + {0}mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}،‏ {1} + {0}،‏ {1} + {0}، و {1} + {0} و {1} + + + {0}،‏ {1} + {0}،‏ {1} + {0}، و {1} + {0} و {1} + + + {0} و {1} + {0} و {1} + + + {0}،‏ {1} + {0}،‏ {1} + {0} و {1} + {0} و {1} + + + + + بله:ب:آری:آ + نه:ن:خیر:خ + + + + diff --git a/library/Zend/Locale/Data/fa_AF.xml b/library/Zend/Locale/Data/fa_AF.xml new file mode 100755 index 000000000..0d79fcdcd --- /dev/null +++ b/library/Zend/Locale/Data/fa_AF.xml @@ -0,0 +1,277 @@ + + + + + + + + + + + + + هسپانوی + دری + فنلندی + آیرلندی + کروشیایی + اندونیزیایی + آیسلندی + ایتالوی + جاپانی + کوریایی + قرغزی + مغلی + نیپالی + هالندی + نارویژی + پولندی + پرتگالی + سویدنی + تاجکی + + + + + + اندورا + انتیگوا و باربودا + البانیا + انگولا + ارجنتاین + آسترالیا + بوسنیا و هرزه‌گوینا + بنگله‌دیش + بلجیم + بلغاریا + برونی + بولیویا + برازیل + بهاماس + روسیهٔ سفید + جمهوری دموکراتیک کانگو + افریقای مرکزی + کانگو + سویس + چلی + کولمبیا + کاستریکا + کیوبا + دنمارک + استونیا + اریتریا + هسپانیه + ایتوپیا + فنلند + میکرونزیا + گرینادا + گینیا + گینیا استوایی + گواتیمالا + گینیا بیسائو + گیانا + هاندوراس + کروشیا + هایتی + اندونیزیا + آیرلند + آیسلند + جاپان + کینیا + قرغزستان + کمپوچیا + سنت کیتس و نیویس + کوریای شمالی + کوریای جنوبی + سریلانکا + لیسوتو + لتوانیا + لاتویا + لیبیا + مادغاسکر + منگولیا + موریتانیا + مالتا + مکسیکو + مالیزیا + موزمبیق + نیجریا + نیکاراگوا + هالند + ناروی + نیپال + زیلاند جدید + پانامه + پیرو + پاپوا نیو گینیا + پولند + پرتگال + پاراگوای + رومانیا + روآندا + جزایر سلومون + سویدن + سینگاپور + سلونیا + سلواکیا + سیرالیون + سینیگال + سومالیه + سائو تومه و پرینسیپ + السلوادور + تاجکستان + اکراین + یوروگوای + سنت وینسنت و گرینادین + ونزویلا + زیمبابوی + + + + [\u200C \u200D \u0656 \u0670 ټ ځ څ ډ ړ ږ ښ ګ ڼ ي] + + + + + + + + جنو + مـی + جول + دسم + + + جنوری + فبروری + مارچ + اپریل + می + جون + جولای + اگست + سپتمبر + اکتوبر + نومبر + دسمبر + + + + + ج + ف + م + ا + م + ج + ج + ا + س + ا + ن + د + + + + + + + + + حمل + ثور + جوزا + سرطان + اسد + سنبلهٔ + میزان + عقرب + قوس + جدی + دلو + حوت + + + + + ح + ث + ج + س + ا + س + م + ع + ق + ج + د + ح + + + + + + ه‍. ش. + + + + + + + + + + '‪'#,##0%'‬' + + + + + + دالر آسترالیا + + + دالر برونی + + + روبل روسیهٔ سفید + + + دالر کانادا + + + فرانک سویس + + + کرون دنمارک + + + ین جاپان + + + پزوی مکسیکو + + + گیلدر هالند + + + کرون ناروی + + + کرون سویدن + + + دالر سینگاپور + + + سامانی تاجکستان + + + دالر امریکا + + + + + diff --git a/library/Zend/Locale/Data/fa_IR.xml b/library/Zend/Locale/Data/fa_IR.xml new file mode 100755 index 000000000..6796ff1ec --- /dev/null +++ b/library/Zend/Locale/Data/fa_IR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ff.xml b/library/Zend/Locale/Data/ff.xml new file mode 100755 index 000000000..687cf8284 --- /dev/null +++ b/library/Zend/Locale/Data/ff.xml @@ -0,0 +1,762 @@ + + + + + + + + + + + + Akaan + Amarik + Aarabeere + Belaruuse + Bulgariire + Bengali + Cekkere + Docceere + Gerke + Engeleere + Español + Perseere + Pulaar + Farayseere + Hawsaŋkoore + Hinndi + Hongariire + Endonesiire + Igiboore + Italiyeere + Saponeere + Sawaneere + Kemeere + Koreere + Malayeere + Burmeese + Nepaaleere + Dacceere + Punjabeere + Poloneere + Purtugeere + Romaneere + Riis + Ruwaanndeere + Somalii + Sweedeere + Tamil + Taay + Turkeere + Ukereneere + Urdu + Wiyetnameere + Yorrubaa + Sinuwaare + Suluŋkoore + + + Anndoora + Emiraat Araab Denntuɗe + Afganistaan + Antiguwaa e Barbudaa + Anngiyaa + Albanii + Armenii + Antiiye Nederlanndeeje + Anngolaa + Arjantiin + Samowa Amerik + Otiriis + Ostaraalii + Aruuba + Ajerbayjaan + Bosnii Hersegowiin + Barbadoos + Banglaadees + Beljik + Burkibaa Faaso + Bulgarii + Bahreyn + Burunndi + Benee + Bermudaa + Burnaay + Boliwii + Beresiil + Bahamaas + Butaan + Botswaana + Belaruus + Beliise + Kanadaa + Ndenndaandi Demokaraasiire Konngo + Ndenndaandi Santarafrik + Konngo + Suwiis + Kodduwaar + Duuɗe Kuuk + Cilii + Kameruun + Siin + Kolombiya + Kosta Rikaa + Kubaa + Duuɗe Kap Weer + Siipar + Ndenndaandi Cek + Almaañ + Jibutii + Danmark + Dominika + Ndenndanndi Dominika + Alaseri + Ekuwatoor + Estoni + Ejipt + Eriteree + Espaañ + Ecoppi + Fenland + Fijji + Duuɗe Falkland + Mikoronesii + Farayse + Gaboo + Laamateeri Rentundi + Garnaad + Jeorgii + Giyaan Farayse + Ganaa + Jibraltaar + Gorwendland + Gammbi + Gine + Gwaadalup + Ginee Ekuwaatoriyaal + Gerees + Gwaatemalaa + Guwam + Gine-Bisaawo + Giyaan + Onnduraas + Korwasii + Haytii + Onngiri + Enndonesii + Irlannda + Israa'iila + Enndo + Keeriindi britaani to maayo enndo + Iraak + Iraan + Islannda + Itali + Jamayka + Jordani + Sapoo + Keñaa + Kirgistaan + Kambodso + Kiribari + Komoor + Sent Kits e Newis + Koree Rewo + Koree Worgo + Kuweyti + Duuɗe Kaymaa + Kasakstaan + Lawoos + Libaa + Sent Lusiyaa + Lincenstayn + Siri Lanka + Liberiyaa + Lesoto + Lituaanii + Liksembuur + Letonii + Libi + Maruk + Monaakoo + Moldawii + Madagaskaar + Duuɗe Marsaal + Meceduwaan + Maali + Miyamaar + Monngolii + Duuɗe Mariyaana Rewo + Martinik + Muritani + Monseraat + Malte + Moriis + Maldiiwe + Malaawi + Meksik + Malesii + Mosammbik + Namibii + Nuwel Kaledonii + Nijeer + Duuɗe Norfolk + Nijeriyaa + Nikaraguwaa + Nederlannda + Norwees + Nepaal + Nawuru + Niuwe + Nuwel Selannda + Omaan + Panamaa + Peru + Polinesii Farayse + Papuwaa Nuwel Gine + Filipiin + Pakistaan + Poloñ + See Piyeer e Mikeloo + Pitkern + Porto Rikoo + Palestiin Sisjordani e Gaasaa + Purtugaal + Palawu + Paraguwaay + Kataar + Rewiñoo + Rumanii + Riisii + Ruwanndaa + Arabii Sawdit + Duuɗe Solomon + Seysel + Sudaan + Suweed + Sinngapuur + Sent Helen + Slowenii + Slowakii + Seraa liyon + See Maree + Senegaal + Somalii + Surinaam + Sawo Tome e Perensipe + El Salwador + Sirii + Swaasilannda + Duuɗe Turke e Keikoos + Caad + Togoo + Taylannda + Tajikistaan + Tokelaaw + Timoor Fuɗnaange + Turkmenistaan + Tunisii + Tonngaa + Turkii + Tirnidaad e Tobaago + Tuwaluu + Taywaan + Tansanii + Ukereen + Unganndaa + Dowlaaji Dentuɗi Amerik + Uruguwaay + Usbekistaan + Dowla Waticaan + See Weesaa e Garnadiin + Wenesuwelaa + duuɗe kecce britanii + Duuɗe Kecce Amerik + Wiyetnaam + Wanuwaatuu + Walis e Futuna + Samowaa + Yemen + Mayoot + Afrik bŋ Worgo + Sammbi + Simbaabuwe + + + + [a b ɓ c d ɗ e f g h i j k l m n ñ ŋ o p r s t u w y ƴ] + [q v x z] + [A B Ɓ C D Ɗ E F G H I J K L M N Ñ Ŋ O P R S T U W Y Ƴ] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + sii + col + mbo + see + duu + kor + mor + juk + slt + yar + jol + bow + + + siilo + colte + mbooy + seeɗto + duujal + korse + morso + juko + siilto + yarkomaa + jolal + bowte + + + + + s + c + m + s + d + k + m + j + s + y + j + b + + + + + + + dew + aaɓ + maw + nje + naa + mwd + hbi + + + dewo + aaɓnde + mawbaare + njeslaare + naasaande + mawnde + hoore-biir + + + + + d + a + m + n + n + m + h + + + + + + + T1 + T2 + T3 + T4 + + + Termes 1 + Termes 2 + Termes 3 + Termes 4 + + + + + + + subaka + kikiiɗe + + + + + + Hade Iisa + Caggal Iisa + + + H-I + C-I + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Jamaanu + + + Hitaande + + + Lewru + + + Yontere + + + Ñalnde + Haŋki + Hannde + Jaŋngo + + + Ñalɗi yontere + + + Sahnga + + + Waktu + + + Hoƴom + + + Majaango + + + Diiwaan waktu + + + + + + , +   + + + + + #,##0.00 ¤ + + + + + + Dirham Emiraati Araab Dentuɗi + + + Kwansaa Anngolaa + + + Dolaar Ostaraalii + + + Dinaar Bahrayn + + + Mbuuɗu Burunndi + + + Pulaa Botwanaa + + + Dolaar Kandaaa + + + Faraa Konngo + + + Faraa Suwiis + + + Yuam Siin + + + Eskudoo Kap Weer + + + Faraa Jibutii + + + Dinaar Alaseri + + + Liibar Ejipt + + + Nafka Eriteree + + + Biir Ecoppi + + + Oroo + + + Liibar Sterling + + + Sedi Ganaa + + + Dalasi Gammbi + + + Faraa Gine + + + Rupii Enndo + + + Yen Sapoo + + + Siling Keñaa + + + Faraa Komoor + + + Dolaar Liberiyaa + + + Loti Lesotoo + + + Dinaar Libi + + + Diraham Maruk + + + Ariyari Madagaskaar + + + Ugiyya Muritani + + + Rupii Moriis + + + Kuwacca Malaawi + + + Metikal Mosammbik + + + Dolaar Namibii + + + Nayraa Nijeriyaa + + + Faraa Ruwanndaa + + + Riyaal Arabi Sawdit + + + Rupii Seysel + + + Liibar Sudaan + + + Liibar Sent Helen + + + Lewoon Seraa Liyon + + + Siling Soomali + + + Dobra Sawo Tome e Prensipe + + + Lilangeni Swaasilannda + + + Dinaar Tunisii + + + Siling Tansanii + + + Siling Uganndaa + + + Dolaar Dowlaaji Dentuɗi + + + Mbuuɗi Seefaa BEAC + + + Mbuuɗu Seefaa BCEAO + + + Rannda Afrik Bŋ Worgo + + + Kuwacca Sammbi (1968–2012) + + + Kuwacca Sammbi + + + Dolaar Simbaabuwe + + + + + + Eey:E + Alaa:A + + + + diff --git a/library/Zend/Locale/Data/ff_CM.xml b/library/Zend/Locale/Data/ff_CM.xml new file mode 100755 index 000000000..5810965bf --- /dev/null +++ b/library/Zend/Locale/Data/ff_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ff_GN.xml b/library/Zend/Locale/Data/ff_GN.xml new file mode 100755 index 000000000..5280ac154 --- /dev/null +++ b/library/Zend/Locale/Data/ff_GN.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + FG + + + + diff --git a/library/Zend/Locale/Data/ff_MR.xml b/library/Zend/Locale/Data/ff_MR.xml new file mode 100755 index 000000000..e36255d1f --- /dev/null +++ b/library/Zend/Locale/Data/ff_MR.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + UM + + + + diff --git a/library/Zend/Locale/Data/ff_SN.xml b/library/Zend/Locale/Data/ff_SN.xml new file mode 100755 index 000000000..aeeabfcb2 --- /dev/null +++ b/library/Zend/Locale/Data/ff_SN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fi.xml b/library/Zend/Locale/Data/fi.xml new file mode 100755 index 000000000..16c39e083 --- /dev/null +++ b/library/Zend/Locale/Data/fi.xml @@ -0,0 +1,5780 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abhaasi + atšeh + atšoli + adangme + adyge + avesta + afrikaans + afrihili + aghem + ainu + akan + akkadi + aleutti + altai + amhara + aragonia + muinaisenglanti + angika + arabia + yleisarabia + valtakunnanaramea + mapudungun + arapaho + arawak + assami + asu + asturia + avaari + awadhi + aimara + azeri + azeri + baškiiri + belutši + bali + basaa + bamum + ghomala + valkovenäjä + bedža + bemba + bena + fut + bulgaria + bhodžpuri + bislama + bikol + bini + kom + siksika + bambara + bengali + tiibet + bretoni + bradž + bodo + bosnia + koose + burjaatti + bugi + bulu + bilin + medumba + katalaani + caddo + karibi + cayuga + atsam + tšetšeeni + cebuano + kiga + tšamorro + tšibtša + tšagatai + chuuk + mari + chinook-jargon + choctaw + chipewyan + cherokee + cheyenne + sorani + korsika + kopti + cree + krimintataari + kriminturkki + tšekki + kašubi + kirkkoslaavi + tšuvassi + kymri + tanska + dakota + dargi + taita + saksa + itävallansaksa + sveitsinyläsaksa + delaware + slevi + dogrib + dinka + djerma + dogri + alasorbi + duala + keskihollanti + divehi + jola-fonyi + djula + dzongkha + dazaga + embu + ewe + efik + muinaisegypti + ekajuk + kreikka + elami + englanti + australianenglanti + kanadanenglanti + britannianenglanti + englanti (Britannia) + amerikanenglanti + englanti (USA) + keskienglanti + esperanto + espanja + amerikanespanja + espanjanespanja + meksikonespanja + viro + baski + ewondo + farsi + persia + fang + fanti + fulani + suomi + filipino + fidži + fääri + fon + ranska + kanadanranska + sveitsinranska + keskiranska + muinaisranska + pohjoisfriisi + itäfriisi + friuli + länsifriisi + iiri + ga + gajo + gbaja + gaeli + ge’ez + kiribati + galicia + keskiyläsaksa + guarani + muinaisyläsaksa + gondi + gorontalo + gootti + grebo + muinaiskreikka + sveitsinsaksa + gudžarati + gusii + manksi + gwitšin + hausa + haida + havaiji + heprea + hindi + hiligaino + heetti + hmong + hiri-motu + kroatia + yläsorbi + haiti + unkari + hupa + armenia + herero + interlingua + iban + ibibio + indonesia + interlingue + igbo + sichuanin-yi + inupiaq + iloko + inguuši + ido + islanti + italia + inuktitut + japani + lojban + ngomba + machame + juutalaispersia + juutalaisarabia + jaava + georgia + karakalpakki + kabyyli + katšin + jju + kamba + kavi + kabardi + kanembu + tyap + makonde + kapverdenkreoli + norsunluurannikonkoro + kongo + khasi + khotani + koyra chiini + kikuju + kuanjama + kazakki + kako + kalaallisut + grönlanti + kalenjin + khmer + kimbundu + kannada + korea + konkani + kosrae + kpelle + kanuri + karatšai-balkaari + karjala + kurukh + kašmiri + shambala + bafia + kölsch + kurdi + kumykki + kutenai + komi + korni + kirgiisi + latina + ladino + juutalaisespanja + lango + lahnda + lamba + luxemburg + lezgi + ganda + limburg + lingala + lao + mongo + lozi + liettua + katanganluba + luluanluba + luiseño + lunda + luo + lusai + luhya + latvia + madura + mafa + magahi + maithili + makassar + mandingo + maasai + maba + mokša + mandar + mende + meru + morisyen + malagassi + keski-iiri + makua-meetto + meta' + marshall + maori + micmac + minangkabau + makedonia + malajalam + mongoli + mantšu + manipuri + mohawk + mossi + marathi + malaiji + malta + mundang + monia kieliä + creek + mirandeesi + marwari + burma + myene + ersä + nauru + napoli + nama + norjan bokmål + pohjois-ndebele + alasaksa + nepali + newari + ndonga + nias + niue + hollanti + flaami + kwasio + norjan nynorsk + ngiemboon + norja + nogai + muinaisnorja + n’ko + etelä-ndebele + pohjoissotho + nuer + navajo + klassinen newari + njandža + nyamwezi + nyankole + nyoro + nzima + oksitaani + odžibwa + oromo + orija + osseetti + osage + osmani + pandžabi + pangasinan + pahlavi + pampanga + papiamentu + palau + muinaispersia + foinikia + paali + puola + pohnpei + muinaisprovensaali + paštu + portugali + brasilianportugali + portugalinportugali + ketšua + radžastani + rapanui + rarotonga + retoromaani + rundi + romania + moldova + rombo + romani + juuri + venäjä + aromania + ruanda + rwa + sanskrit + sandawe + jakuutti + samarianaramea + samburu + sasak + santali + ngambay + sangu + sardi + sisilia + skotti + sindhi + pohjoissaame + seneca + sena + selkuppi + koyraboro senni + sango + muinaisiiri + serbokroaatti + tašelhit + shan + tšadinarabia + sinhala + sidamo + slovakki + sloveeni + samoa + eteläsaame + luulajansaame + inarinsaame + koltansaame + šona + soninke + somali + sogdi + albania + serbia + sranan + serer + swazi + saho + eteläsotho + sunda + sukuma + susu + sumeri + ruotsi + swahili + komori + kingwana + muinaissyyria + syyria + tamili + telugu + temne + teso + tereno + tetum + tadžikki + thai + tigrinja + tigre + tiv + turkmeeni + tokelau + tagalog + klingon + tlingit + tamašek + tswana + tonga + malawintonga + tok-pisin + turkki + taroko + tsonga + tsimši + tataari + tumbuka + tuvalu + twi + tasawaq + tahiti + tuva + keskiatlaksentamazight + udmurtti + uiguuri + ugarit + ukraina + mbundu + määrittämätön kieli + urdu + uzbekki + vai + venda + vietnam + volapük + vatja + vunjo + valloni + walser + wolaitta + waray + washo + wolof + kalmukki + xhosa + soga + jao + japi + yangben + yemba + jiddiš + joruba + kantoninkiina + zhuang + zapoteekki + blisskieli + zenaga + vakioitu tamazight + kiina + yksinkertaistettu kiina + perinteinen kiina + zulu + zuni + ei kielellistä sisältöä + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + maailma + Afrikka + Pohjois-Amerikka + Etelä-Amerikka + Oseania + Länsi-Afrikka + Väli-Amerikka + Itä-Afrikka + Pohjois-Afrikka + Keski-Afrikka + eteläinen Afrikka + Amerikka + pohjoinen Amerikka + Karibia + Itä-Aasia + Etelä-Aasia + Kaakkois-Aasia + Etelä-Eurooppa + Australaasia + Melanesia + Mikronesia + Polynesia + Aasia + Keski-Aasia + Länsi-Aasia + Eurooppa + Itä-Eurooppa + Pohjois-Eurooppa + Länsi-Eurooppa + Latinalainen Amerikka + Ascension-saari + Andorra + Arabiemiirikunnat + Afganistan + Antigua ja Barbuda + Anguilla + Albania + Armenia + Alankomaiden Antillit + Angola + Antarktis + Argentiina + Amerikan Samoa + Itävalta + Australia + Aruba + Ahvenanmaa + Azerbaidžan + Bosnia ja Hertsegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint-Barthélemy + Bermuda + Brunei + Bolivia + Karibian Alankomaat + Brasilia + Bahama + Bhutan + Bouvet’nsaari + Botswana + Valko-Venäjä + Belize + Kanada + Kookossaaret (Keelingsaaret) + Kongon demokraattinen tasavalta + Kongo-Kinshasa + Keski-Afrikan tasavalta + Kongon tasavalta + Kongo-Brazzaville + Sveitsi + Norsunluurannikko + Côte d'Ivoire + Cookinsaaret + Chile + Kamerun + Kiina + Kolumbia + Clippertoninsaari + Costa Rica + Kuuba + Kap Verde + Curaçao + Joulusaari + Kypros + Tšekki + Saksa + Diego Garcia + Djibouti + Tanska + Dominica + Dominikaaninen tasavalta + Algeria + Ceuta ja Melilla + Ecuador + Viro + Egypti + Länsi-Sahara + Eritrea + Espanja + Etiopia + Euroopan unioni + Suomi + Fidži + Falklandinsaaret + Falklandinsaaret (Malvinassaaret) + Mikronesian liittovaltio + Färsaaret + Ranska + Gabon + Yhdistynyt kuningaskunta + Britannia + Grenada + Georgia + Ranskan Guayana + Guernsey + Ghana + Gibraltar + Grönlanti + Gambia + Guinea + Guadeloupe + Päiväntasaajan Guinea + Kreikka + Etelä-Georgia ja Eteläiset Sandwichsaaret + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong – Kiinan e.h.a. + Hongkong + Heard ja McDonaldinsaaret + Honduras + Kroatia + Haiti + Unkari + Kanariansaaret + Indonesia + Irlanti + Israel + Mansaari + Intia + Brittiläinen Intian valtameren alue + Irak + Iran + Islanti + Italia + Jersey + Jamaika + Jordania + Japani + Kenia + Kirgisia + Kambodža + Kiribati + Komorit + Saint Kitts ja Nevis + Pohjois-Korea + Etelä-Korea + Kuwait + Caymansaaret + Kazakstan + Laos + Libanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Liettua + Luxemburg + Latvia + Libya + Marokko + Monaco + Moldova + Montenegro + Saint-Martin + Madagaskar + Marshallinsaaret + Makedonia + EJT Makedonia + Mali + Myanmar (Burma) + Mongolia + Macao – Kiinan e.h.a. + Macao + Pohjois-Mariaanit + Martinique + Mauritania + Montserrat + Malta + Mauritius + Malediivit + Malawi + Meksiko + Malesia + Mosambik + Namibia + Uusi-Kaledonia + Niger + Norfolkinsaari + Nigeria + Nicaragua + Alankomaat + Norja + Nepal + Nauru + Niue + Uusi-Seelanti + Oman + Panama + Peru + Ranskan Polynesia + Papua-Uusi-Guinea + Filippiinit + Pakistan + Puola + Saint-Pierre ja Miquelon + Pitcairn + Puerto Rico + Palestiinalaisalueet + Palestiina + Portugali + Palau + Paraguay + Qatar + ulkomeri + Réunion + Romania + Serbia + Venäjä + Ruanda + Saudi-Arabia + Salomonsaaret + Seychellit + Sudan + Ruotsi + Singapore + Saint Helena + Slovenia + Huippuvuoret ja Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Etelä-Sudan + São Tomé ja Príncipe + El Salvador + Sint Maarten + Syyria + Swazimaa + Tristan da Cunha + Turks- ja Caicossaaret + Tšad + Ranskan ulkopuoliset eteläiset alueet + Togo + Thaimaa + Tadžikistan + Tokelau + Itä-Timor + Timor-Leste + Turkmenistan + Tunisia + Tonga + Turkki + Trinidad ja Tobago + Tuvalu + Taiwan + Tansania + Ukraina + Uganda + Yhdysvaltain erillissaaret + Yhdysvallat + USA + Uruguay + Uzbekistan + Vatikaani + Saint Vincent ja Grenadiinit + Venezuela + Brittiläiset Neitsytsaaret + Yhdysvaltain Neitsytsaaret + Vietnam + Vanuatu + Wallis ja Futuna + Samoa + Kosovo + Jemen + Mayotte + Etelä-Afrikka + Sambia + Zimbabwe + tuntematon alue + + + saksan perinteinen oikeinkirjoitus + sloveenin resian murteen yhdenmukaistettu oikeinkirjoitus + saksan uusi oikeinkirjoitus + myöhäiskeskiranska + varhaisnykyranska + valkovenäjän virallinen oikeinkirjoitus + amerikkalainen kirjastolatinaistus 1997 + alukun kreolimurre + itäarmenialainen + länsiarmenialainen + yhtenäistetty turkkilainen latinalainen aakkosto + sanskriitin buddhalainen sekamuoto + baskin biskajalaismurre + sloveenin resian San Giorgion/Bilan alamurre + englannin boontling-murre + varhaisnykyenglanti + kansainvälinen foneettinen aakkosto IPA + uralilainen foneettinen aakkosto UPA + suomalais-ugrilainen tarkekirjoitus + foneettinen X-SAMPA-merkistö + japanin Hepburn-latinaistus + norjan högnorsk + sanskriitin eeppinen muoto + retoromaanin jauer-murre + kantoninkiinan jyutping-latinaistus + kornin yleiskirjoitus + klassinen sanskriitti + sloveenin resian Lipovazin/Lipovecin alamurre + venäjän ortografia 1918 + monotoninen kreikka + ndyukan kreolimurre + sloveenin natisonen murre + sloveenin resian Gnivan/Njivan alamurre + nykyvolapük + sloveenin resian Oseaccon/Osojanen alamurre + pamakan kreolimurre + venäjän Pietarin siviiliaakkosto 1708 + kiinan pinyin-latinaistus + polytoninen kreikka + tietokonemäärittely POSIX + retoromaanin puter-muoto + uudistettu oikeinkirjoitus + klassinen volapük + sloveenin resian murre + retoromaanin rumantsch grischun -muoto + afarin saho-murre + skotlanninenglanti + englannin scouse-murre + sloveenin resian Stolvizzan/Solbican alamurre + retoromaanin surmiran-muoto + retoromaanin sursilvan-muoto + retoromaanin sutsilvan-muoto + valkovenäjän taraškevitsa-oikeinkirjoitus + kornin yhtenäiskirjoitus + kornin uusittu yhtenäiskirjoitus + skotin ulster-murre + sanskriitin veda-murre + katalaanin valencian murre + reoromaanin vallader-muoto + kiinan Wade-Giles-latinaistus + + + kalenteri + Ohita symbolit -lajittelu + Käänteinen painomerkki -lajittelu + Järjestys isojen/pienten kirjainten mukaan + Isot ja pienet kirjaimet erotteleva lajittelu + Kana-lajittelu + lajittelujärjestys + Normalisoitu lajittelu + Numeerinen lajittelu + Lajittelun vahvuus + valuutta + numerot + aikavyöhyke + maavalinnan muunnelma + lajittele symboleina + yksityiskäyttö + + + arabialaiset numerot + laajennetut arabialaiset numerot + armenialaiset numerot + armenialaiset piennumerot + balilaiset numerot + bengalilaiset numerot + perinteinen kiinalainen järjestys Big5 + brahmilaiset numerot + buddhalainen kalenteri + chakmalaiset numerot + cham-numerot + kiinalainen kalenteri + koptilainen kalenteri + dangilainen kalenteri + devanagarinumerot + sanakirjajärjestys + Unicoden oletusjärjestys + yleiseurooppalainen lajittelujärjestys + etiopialaiset numerot + etiopialainen kalenteri + etiopialainen amete alem -kalenteri + talousnumerot + ideografin levyiset numerot + yksinkertaistettu kiinalainen järjestys GB2312 + georgialaiset numerot + gregoriaaninen kalenteri + kreikkalaiset numerot + kreikkalaiset piennumerot + gudžaratilaiset numerot + gurmukhilaiset numerot + kiinalaiset desimaalinumerot + yksinkertaistetut kiinalaiset numerot + yksinkertaistetut kiinalaiset talousnumerot + perinteiset kiinalaiset numerot + perinteiset kiinalaiset talousnumerot + heprealaiset numerot + juutalainen kalenteri + Lajittele kaikki + intialainen kalenteri + islamilainen kalenteri + islamilainen siviilikalenteri + japanilainen kalenteri + jaavalaiset numerot + japanilaiset numerot + japanilaiset talousnumerot + kayah li -numerot + khmeriläiset numerot + kannadalaiset numerot + taithamin hora-numerot + taithamin tham-numerot + laolaiset numerot + länsimaiset numerot + lepchanumerot + limbunumerot + Lajittele pienet kirjaimet ensin + malajalamilaiset numerot + mongolialaiset numerot + meetei mayek -numerot + burmalaiset numerot + myanmarin shan-numerot + Kielen omat numerot + n'ko-numerot + Lajittele painomerkit normaalisti + Lajittele isot ja pienet kirjaimet normaalisti + Lajittele ilman isojen ja pienten kirjainten erottelua + Lajittele kana-merkit erikseen + Lajittele ilman normalisointia + Lajittele numerot erikseen + Lajittele symbolit + ol chiki -numerot + orijalaiset numerot + persialainen kalenteri + puhelinluettelojärjestys + äänteellinen järjestys + pinyin-järjestys + Lajittele vain peruskirjaimet + Lajittele painomerkit/koko/leveys/kana-merkit + uudistettu järjestys + Kiinan tasavallan kalenteri + roomalaiset numerot + roomalaiset piennumerot + saurashtra-numerot + yleishakujärjestys + haku hangul-alkukonsonantin mukaan + Lajittele painomerkit + Lajittele symbolit ohittaen + sora sompeng -numerot + normaalijärjestys + piirtojärjestys + sundalaiset numerot + uudet tai lue -numerot + perinteiset tamilinumerot + tamilinumerot + telugulaiset numerot + Lajittele painomerkit/koko/leveys + thainumerot + tiibetiläiset numerot + perinteinen järjestys + perinteiset numerot + radikaali- ja piirtojärjestys + Lajittele isot kirjaimet ensin + vai-numerot + Lajittele painomerkit käänteisesti + Lajittele isojen ja pienten kirjainten mukaan + Lajittele kana-merkit erikseen + Lajittele Unicode normalisoituna + Lajittele numerot numeerisesti + zhuyin-järjestys + + + BGN + Numerot + Sävy + UNGEGN + Aksenttimerkit + Leveä + Kapea + Jamo + Pinyin + Julkaisu + + + metrinen + brittiläinen + amerikkalainen + + + kieli: {0} + kirjoitusjärjestelmä: {0} + alue: {0} + + + + + titlecase-firstword + + + titlecase-firstword + + + + [a b c d e f g h i j k l m n o p q r s š t u v w x y z ž å ä ö] + [á à â ã č ç đ é è ê ë ǧ ǥ ȟ í î ï ǩ ń ñ ŋ ô õ œ ř ß ŧ ú ù û ÿ ü ʒ ǯ æ ø] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö] + [\- ‐ – , ; \: ! ? . … ’ ” ( ) \[ \] § @ * / \& #] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + cccc d.M.y + + + + + d.M.y + + + + + d.M.y + + + + + d.M.y + + + + + + H + h.mm a + H.mm + h.mm.ss a + H.mm.ss + d.M. + E d.M. + d.M. + E d.M. + mm.ss + y + y + d.M.y + E d.M.y + d.M.y + E d.M.y + + + + + + + + cccc d. MMMM y G + + + + + d. MMMM y G + + + + + d.M.y G + + + + + d.M.y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d. + y G + LLL y G + d. MMM y G + E d. MMM y G + h a + H + h.mm a + H.mm + h.mm.ss a + H.mm.ss + L + d.M. + E d.M. + LLL + d. MMM + ccc d. MMM + mm.ss + y G + y G + L.y G + d.M.y G + E d.M.y G + M.y G + LLL y G + d. MMM y G + E d. MMM y G + LLLL y G + cccc d. MMMM y G + QQQ y G + QQQQ y G + + + {0}–{1} + + d.–d. + + + h a – h a + h–h a + + + H–H + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + H.mm–H.mm + H.mm–H.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + H.mm–H.mm v + H.mm–H.mm v + + + h a – h a v + h–h a v + + + H–H v + + + L.–L. + + + d.–d.M. + d.M.–d.M. + + + E d. – E d.M. + E d.M. – E d.M. + + + LLL–LLLL + + + d.–d. MMMM + d. MMMM – d. MMMM + + + E d. – E d. MMMM + E d. MMMM – E d. MMMM + + + LLL–LLLL + + + y–y G + + + LLL–LLLL y G + LLLL y – LLLL y G + + + d.–d.M.y G + d.M.–d.M.y G + d.M.y–d.M.y G + + + E d.M.y – E d.M.y G + E d.M.y – E d.M.y G + E d.M.y – E d.M.y G + + + LLL–LLLL y G + LLLL y – LLLL y G + + + d.–d. MMMM y G + d. MMMM – d. MMMM y G + d. MMMM y – d. MMMM y G + + + E d. – E d. MMMM y G + E d. MMMM – E d. MMMM y G + E d. MMMM y – E d. MMMM y G + + + LLL–LLLL y G + LLLL y – LLLL y G + + + + + + + + + tammikuuta + helmikuuta + maaliskuuta + huhtikuuta + toukokuuta + kesäkuuta + heinäkuuta + elokuuta + syyskuuta + lokakuuta + marraskuuta + joulukuuta + + + T + H + M + H + T + K + H + E + S + L + M + J + + + tammikuuta + helmikuuta + maaliskuuta + huhtikuuta + toukokuuta + kesäkuuta + heinäkuuta + elokuuta + syyskuuta + lokakuuta + marraskuuta + joulukuuta + + + + + tammi + helmi + maalis + huhti + touko + kesä + heinä + elo + syys + loka + marras + joulu + + + T + H + M + H + T + K + H + E + S + L + M + J + + + tammikuu + helmikuu + maaliskuu + huhtikuu + toukokuu + kesäkuu + heinäkuu + elokuu + syyskuu + lokakuu + marraskuu + joulukuu + + + + + + + su + ma + ti + ke + to + pe + la + + + S + M + T + K + T + P + L + + + su + ma + ti + ke + to + pe + la + + + sunnuntaina + maanantaina + tiistaina + keskiviikkona + torstaina + perjantaina + lauantaina + + + + + su + ma + ti + ke + to + pe + la + + + S + M + T + K + T + P + L + + + su + ma + ti + ke + to + pe + la + + + sunnuntai + maanantai + tiistai + keskiviikko + torstai + perjantai + lauantai + + + + + + + 1. nelj. + 2. nelj. + 3. nelj. + 4. nelj. + + + 1 + 2 + 3 + 4 + + + 1. neljännes + 2. neljännes + 3. neljännes + 4. neljännes + + + + + 1. nelj. + 2. nelj. + 3. nelj. + 4. nelj. + + + 1 + 2 + 3 + 4 + + + 1. neljännes + 2. neljännes + 3. neljännes + 4. neljännes + + + + + + + ap. + ip. + + + ap. + ip. + + + ap. + ip. + + + + + ap. + ip. + + + + + + ennen Kristuksen syntymää + ennen ajanlaskun alkua + jälkeen Kristuksen syntymän + jälkeen ajanlaskun alun + + + eKr. + eaa. + jKr. + jaa. + + + eK + eaa + jK + jaa + + + + + + cccc d. MMMM y + + + + + d. MMMM y + + + + + d.M.y + + + + + d.M.y + + + + + + + H.mm.ss zzzz + + + + + H.mm.ss z + + + + + H.mm.ss + + + + + H.mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d. + E h.mm a + E H.mm + E h.mm.ss a + E H.mm.ss + y G + LLL y G + d. MMM y G + E d. MMM y G + h a + H + h.mm a + H.mm + h.mm.ss a + H.mm.ss + L + d.M. + E d.M. + LLL + d. MMM + ccc d. MMM + m.ss + y + L.y + d.M.y + E d.M.y + M.y + LLL y + d. MMM y + E d. MMM y + LLLL y + cccc d. MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0}–{1} + + d.–d. + + + h a – h a + h–h a + + + H–H + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + H.mm–H.mm + H.mm–H.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + H.mm–H.mm v + H.mm–H.mm v + + + h a – h a v + h–h a v + + + H–H v + + + L.–L. + + + d.–d.M. + d.M.–d.M. + + + E d. – E d.M. + E d.M. – E d.M. + + + LLL–LLLL + + + d.–d. MMMM + d. MMMM – d. MMMM + + + E d. – E d. MMMM + E d. MMMM – E d. MMMM + + + LLL–LLLL + + + y–y + + + LLL–LLLL y + LLLL y – LLLL y + + + d.–d.M.y + d.M.–d.M.y + d.M.y–d.M.y + + + E d.M.y – E d.M.y + E d.M.y – E d.M.y + E d.M.y – E d.M.y + + + LLL–LLLL y + LLLL y – LLLL y + + + d.–d. MMMM y + d. MMMM – d. MMMM y + d. MMMM y – d. MMMM y + + + E d. – E d. MMMM y + E d. MMMM – E d. MMMM y + E d. MMMM y – E d. MMMM y + + + LLL–LLLL y + LLLL y – LLLL y + + + + + + + + + tišríkuuta + hešvánkuuta + kislévkuuta + tevétkuuta + ševátkuuta + adárkuuta I + adárkuuta + adárkuuta II + nisánkuuta + ijjárkuuta + sivánkuuta + tammúzkuuta + abkuuta + elúlkuuta + + + + + tišrí + hešván + kislév + tevét + ševát + adár I + adár + adár II + nisán + ijjár + siván + tammúz + ab + elúl + + + T + H + K + T + S + A + A + A + N + I + S + T + A + E + + + tišríkuu + hešvánkuu + kislévkuu + tevétkuu + ševátkuu + adárkuu I + adárkuu + adárkuu II + nisánkuu + ijjárkuu + sivánkuu + tammúzkuu + abkuu + elúlkuu + + + + + + + + + muharram + safar + rabi’ al-awwal + rabi’ al-akhir + džumada-l-ula + džumada-l-akhira + radžab + ša’ban + ramadan + šawwal + dhu-l-qa’da + dhu-l-hiddža + + + + + + + + + + cccc d. MMMM y G + + + + + d. MMMM y G + + + + + d.M.y G + + + + + d.M.y GGGGG + + + + + + + + Before R.O.C. + Minguo + + + + + + + aikakausi + + + vuosi + viime vuonna + tänä vuonna + ensi vuonna + + {0} vuoden päästä + {0} vuoden päästä + + + {0} vuosi sitten + {0} vuotta sitten + + + + kuukausi + viime kuussa + tässä kuussa + ensi kuussa + + {0} kuukauden päästä + {0} kuukauden päästä + + + {0} kuukausi sitten + {0} kuukautta sitten + + + + viikko + viime viikolla + tällä viikolla + ensi viikolla + + {0} viikon päästä + {0} viikon päästä + + + {0} viikko sitten + {0} viikkoa sitten + + + + päivä + toissapäivänä + eilen + tänään + huomenna + ylihuomenna + + {0} päivän päästä + {0} päivän päästä + + + {0} päivä sitten + {0} päivää sitten + + + + viikonpäivä + + + viime sunnuntaina + tänä sunnuntaina + ensi sunnuntaina + + + viime maanantaina + tänä maanantaina + ensi maanantaina + + + viime tiistaina + tänä tiistaina + ensi tiistaina + + + viime keskiviikkona + tänä keskiviikkona + ensi keskiviikkona + + + viime torstaina + tänä torstaina + ensi torstaina + + + viime perjantaina + tänä perjantaina + ensi perjantaina + + + viime lauantaina + tänä lauantaina + ensi lauantaina + + + vuorokaudenaika + + + tunti + + {0} tunnin päästä + {0} tunnin päästä + + + {0} tunti sitten + {0} tuntia sitten + + + + minuutti + + {0} minuutin päästä + {0} minuutin päästä + + + {0} minuutti sitten + {0} minuuttia sitten + + + + sekunti + nyt + + {0} sekunnin päästä + {0} sekunnin päästä + + + {0} sekunti sitten + {0} sekuntia sitten + + + + aikavyöhyke + + + + +H.mm;-H.mm + UTC{0} + UTC + aikavyöhyke: {0} + {0} (kesäaika) + {0} (normaaliaika) + {1} ({0}) + + tuntematon + + + Tirana + + + Jerevan + + + Dumont d’Urville + + + Tucumán + + + Córdoba + + + Wien + + + Macquariensaari + + + Maarianhamina + Mariehamn + + + Bryssel + + + Saint-Barthélemy + + + Eirunepé + + + Cuiabá + + + Santarém + + + Araguaína + + + São Paulo + + + Maceió + + + Atikokan + + + St. John's + + + Kookossaaret + + + Zürich + + + Pääsiäissaari + + + Santiago de Chile + + + Kašgar + + + Ürümqi + + + Bogotá + + + Havanna + + + Kap Verde + + + Curaçao + + + Joulusaari + + + Nikosia + + + Praha + + + Berliini + + + Kööpenhamina + + + Alger + + + Tallinna + + + Kairo + + + El Aaiún + + + Asmara + + + Kanariansaaret + + + Addis Abeba + + + Fidži + + + Chuuk + + + Pohnpei + + + Färsaaret + + + Pariisi + + + + Britannian kesäaika + + Lontoo + + + Qaanaaq + + + Nuuk + Godthåb + + + Ittoqqortoormiit + Scoresbysund + + + Ateena + + + Etelä-Georgia + + + Hongkong + + + + Irlannin kesäaika + + + + Mansaari + + + Kalkutta + + + Bagdad + + + Teheran + + + Reykjavík + + + Rooma + + + Jamaika + + + Tokio + + + Biškek + + + Komorit + + + Saint Kitts + + + Pjongjang + + + Soul + + + Aqtaw + + + Uralsk + + + Aqtöbe + + + Qızılorda + + + Saint Lucia + + + Vilna + + + Luxemburg + + + Riika + + + Chişinău + + + Yangon + + + Ulan Bator + + + Tšoibalsa + + + Macao + + + Malediivit + + + Mazatlán + + + Bahía de Banderas + + + Ciudad de México + + + Mérida + + + Cancún + + + Nouméa + + + Kathmandu + + + Chathamsaaret + + + Marquesassaaret + + + Gambiersaaret + + + Varsova + + + Azorit + + + Lissabon + + + Asunción + + + Réunion + + + Bukarest + + + Belgrad + + + Moskova + + + Jekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Handyga + + + Sahalin + + + Kamtšatka + + + Riad + + + Mahé + + + Khartum + + + Tukholma + + + Saint Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damaskos + + + N'Djamena + + + Kerguelensaaret + + + Lomé + + + Dušanbe + + + Ašgabat + + + Užgorod + + + Kiova + + + Zaporižžja + + + Beulah, Pohjois-Dakota + + + New Salem, Pohjois-Dakota + + + Center, Pohjois-Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taškent + + + Vatikaani + + + Saint Vincent + + + Saint Thomas + + + Hồ Chí Minhin kaupunki + + + + Acren aika + Acren normaaliaika + Acren kesäaika + + + + + Afganistanin aika + + + + + Keski-Afrikan aika + + + + + Itä-Afrikan aika + + + + + Etelä-Afrikan aika + + + + + Länsi-Afrikan aika + Länsi-Afrikan normaaliaika + Länsi-Afrikan kesäaika + + + + + Alaskan aika + Alaskan normaaliaika + Alaskan kesäaika + + + + + Almatyn aika + Almatyn normaaliaika + Almatyn kesäaika + + + + + Amazonin aika + Amazonin normaaliaika + Amazonin kesäaika + + + + + Yhdysvaltain keskinen aika + Yhdysvaltain keskinen normaaliaika + Yhdysvaltain keskinen kesäaika + + + + + Yhdysvaltain itäinen aika + Yhdysvaltain itäinen normaaliaika + Yhdysvaltain itäinen kesäaika + + + + + Kalliovuorten aika + Kalliovuorten normaaliaika + Kalliovuorten kesäaika + + + + + Yhdysvaltain Tyynenmeren aika + Yhdysvaltain Tyynenmeren normaaliaika + Yhdysvaltain Tyynenmeren kesäaika + + + + + Anadyrin aika + Anadyrin normaaliaika + Anadyrin kesäaika + + + + + Aqtaw'n aika + Aqtaw'n normaaliaika + Aqtaw'n kesäaika + + + + + Aqtöben aika + Aqtöben normaaliaika + Aqtöben kesäaika + + + + + Saudi-Arabian aika + Saudi-Arabian normaaliaika + Saudi-Arabian kesäaika + + + + + Argentiinan aika + Argentiinan normaaliaika + Argentiinan kesäaika + + + + + Länsi-Argentiinan aika + Länsi-Argentiinan normaaliaika + Länsi-Argentiinan kesäaika + + + + + Armenian aika + Armenian normaaliaika + Armenian kesäaika + + + + + Kanadan Atlantin aika + Kanadan Atlantin normaaliaika + Kanadan Atlantin kesäaika + + + + + Keski-Australian aika + Keski-Australian normaaliaika + Keski-Australian kesäaika + + + + + Läntisen Keski-Australian aika + Läntisen Keski-Australian normaaliaika + Läntisen Keski-Australian kesäaika + + + + + Itä-Australian aika + Itä-Australian normaaliaika + Itä-Australian kesäaika + + + + + Länsi-Australian aika + Länsi-Australian normaaliaika + Länsi-Australian kesäaika + + + + + Azerbaidžanin aika + Azerbaidžanin normaaliaika + Azerbaidžanin kesäaika + + + + + Azorien aika + Azorien normaaliaika + Azorien kesäaika + + + + + Bangladeshin aika + Bangladeshin normaaliaika + Bangladeshin kesäaika + + + + + Bhutanin aika + + + + + Bolivian aika + + + + + Brasilian aika + Brasilian normaaliaika + Brasilian kesäaika + + + + + Brunein aika + + + + + Kap Verden aika + Kap Verden normaaliaika + Kap Verden kesäaika + + + + + Caseyn aika + + + + + Tšamorron aika + + + + + Chathamin aika + Chathamin normaaliaika + Chathamin kesäaika + + + + + Chilen aika + Chilen normaaliaika + Chilen kesäaika + + + + + Kiinan aika + Kiinan normaaliaika + Kiinan kesäaika + + + + + Tšoibalsan aika + Tšoibalsan normaaliaika + Tšoibalsan kesäaika + + + + + Joulusaaren aika + + + + + Kookossaarten aika + + + + + Kolumbian aika + Kolumbian normaaliaika + Kolumbian kesäaika + + + + + Cookinsaarten aika + Cookinsaarten normaaliaika + Cookinsaarten kesäaika + + + + + Kuuban aika + Kuuban normaaliaika + Kuuban kesäaika + + + + + Davisin aika + + + + + Dumont-d'Urvillen aika + + + + + Itä-Timorin aika + + + + + Pääsiäissaaren aika + Pääsiäissaaren normaaliaika + Pääsiäissaaren kesäaika + + + + + Ecuadorin aika + + + + + Keski-Euroopan aika + Keski-Euroopan normaaliaika + Keski-Euroopan kesäaika + + + + + Itä-Euroopan aika + Itä-Euroopan normaaliaika + Itä-Euroopan kesäaika + + + + + Länsi-Euroopan aika + Länsi-Euroopan normaaliaika + Länsi-Euroopan kesäaika + + + + + Falklandinsaarten aika + Falklandinsaarten normaaliaika + Falklandinsaarten kesäaika + + + + + Fidžin aika + Fidžin normaaliaika + Fidžin kesäaika + + + + + Ranskan Guayanan aika + + + + + Ranskan eteläisten ja antarktisten alueiden aika + + + + + Galápagossaarten aika + + + + + Gambierin aika + + + + + Georgian aika + Georgian normaaliaika + Georgian kesäaika + + + + + Gilbertsaarten aika + + + + + Greenwichin normaaliaika + + + + + Itä-Grönlannin aika + Itä-Grönlannin normaaliaika + Itä-Grönlannin kesäaika + + + + + Länsi-Grönlannin aika + Länsi-Grönlannin normaaliaika + Länsi-Grönlannin kesäaika + + + + + Guamin aika + + + + + Arabiemiirikuntien normaaliaika + + + + + Guyanan aika + + + + + Havaijin-Aleuttien aika + Havaijin-Aleuttien normaaliaika + Havaijin-Aleuttien kesäaika + + + + + Hongkongin aika + Hongkongin normaaliaika + Hongkongin kesäaika + + + + + Hovdin aika + Hovdin normaaliaika + Hovdin kesäaika + + + + + Intian aika + + + + + Intian valtameren aika + + + + + Indokiinan aika + + + + + Keski-Indonesian aika + + + + + Itä-Indonesian aika + + + + + Länsi-Indonesian aika + + + + + Iranin aika + Iranin normaaliaika + Iranin kesäaika + + + + + Irkutskin aika + Irkutskin normaaliaika + Irkutskin kesäaika + + + + + Israelin aika + Israelin normaaliaika + Israelin kesäaika + + + + + Japanin aika + Japanin normaaliaika + Japanin kesäaika + + + + + Kamtšatkan aika + Kamtšatkan normaaliaika + Kamtšatkan kesäaika + + + + + Itä-Kazakstanin aika + + + + + Länsi-Kazakstanin aika + + + + + Korean aika + Korean normaaliaika + Korean kesäaika + + + + + Kosraen aika + + + + + Krasnojarskin aika + Krasnojarskin normaaliaika + Krasnojarskin kesäaika + + + + + Kirgisian aika + + + + + Sri Lankan aika + + + + + Linesaarten aika + + + + + Lord Howen aika + Lord Howen normaaliaika + Lord Howen kesäaika + + + + + Macaon aika + Macaon normaaliaika + Macaon kesäaika + + + + + Macquariensaaren aika + + + + + Magadanin aika + Magadanin normaaliaika + Magadanin kesäaika + + + + + Malesian aika + + + + + Malediivien aika + + + + + Marquesasin aika + + + + + Marshallinsaarten aika + + + + + Mauritiuksen aika + Mauritiuksen normaaliaika + Mauritiuksen kesäaika + + + + + Mawsonin aika + + + + + Ulan Batorin aika + Ulan Batorin normaaliaika + Ulan Batorin kesäaika + + + + + Moskovan aika + Moskovan normaaliaika + Moskovan kesäaika + + + + + Myanmarin aika + + + + + Naurun aika + + + + + Nepalin aika + + + + + Uuden-Kaledonian aika + Uuden-Kaledonian normaaliaika + Uuden-Kaledonian kesäaika + + + + + Uuden-Seelannin aika + Uuden-Seelannin normaaliaika + Uuden-Seelannin kesäaika + + + + + Newfoundlandin aika + Newfoundlandin normaaliaika + Newfoundlandin kesäaika + + + + + Niuen aika + + + + + Norfolkinsaarten aika + + + + + Fernando de Noronhan aika + Fernando de Noronhan normaaliaika + Fernando de Noronhan kesäaika + + + + + Pohjois-Mariaanien aika + + + + + Novosibirskin aika + Novosibirskin normaaliaika + Novosibirskin kesäaika + + + + + Omskin aika + Omskin normaaliaika + Omskin kesäaika + + + + + Pakistanin aika + Pakistanin normaaliaika + Pakistanin kesäaika + + + + + Palaun aika + + + + + Papua-Uuden-Guinean aika + + + + + Paraguayn aika + Paraguayn normaaliaika + Paraguayn kesäaika + + + + + Perun aika + Perun normaaliaika + Perun kesäaika + + + + + Filippiinien aika + Filippiinien normaaliaika + Filippiinien kesäaika + + + + + Phoenixsaarten aika + + + + + Saint-Pierren ja Miquelonin aika + Saint-Pierren ja Miquelonin normaaliaika + Saint-Pierren ja Miquelonin kesäaika + + + + + Pitcairnin aika + + + + + Pohnpein aika + + + + + Qızılordan aika + Qızılordan normaaliaika + Qızılordan kesäaika + + + + + Réunionin aika + + + + + Rotheran aika + + + + + Sahalinin aika + Sahalinin normaaliaika + Sahalinin kesäaika + + + + + Samaran aika + Samaran normaaliaika + Samaran kesäaika + + + + + Samoan aika + Samoan normaaliaika + Samoan kesäaika + + + + + Seychellien aika + + + + + Singaporen aika + + + + + Salomonsaarten aika + + + + + Etelä-Georgian aika + + + + + Surinamin aika + + + + + Syowan aika + + + + + Tahitin aika + + + + + Taipein aika + Taipein normaaliaika + Taipein kesäaika + + + + + Tadžikistanin aika + + + + + Tokelaun aika + + + + + Tongan aika + Tongan normaaliaika + Tongan kesäaika + + + + + Chuukin aika + + + + + Turkmenistanin aika + Turkmenistanin normaaliaika + Turkmenistanin kesäaika + + + + + Tuvalun aika + + + + + Uruguayn aika + Uruguayn normaaliaika + Uruguayn kesäaika + + + + + Uzbekistanin aika + Uzbekistanin normaaliaika + Uzbekistanin kesäaika + + + + + Vanuatun aika + Vanuatun normaaliaika + Vanuatun kesäaika + + + + + Venezuelan aika + + + + + Vladivostokin aika + Vladivostokin normaaliaika + Vladivostokin kesäaika + + + + + Volgogradin aika + Volgogradin normaaliaika + Volgogradin kesäaika + + + + + Vostokin aika + + + + + Waken aika + + + + + Wallisin ja Futunan aika + + + + + Jakutskin aika + Jakutskin normaaliaika + Jakutskin kesäaika + + + + + Jekaterinburgin aika + Jekaterinburgin normaaliaika + Jekaterinburgin kesäaika + + + + + + + , +   + ; + % + + + + E + × + + + epäluku + + + + + #,##0.### + + + + + 0 tuhat + 0 tuhatta + 00 tuhatta + 00 tuhatta + 000 tuhatta + 000 tuhatta + 0 miljoona + 0 miljoonaa + 00 miljoonaa + 00 miljoonaa + 000 miljoonaa + 000 miljoonaa + 0 miljardi + 0 miljardia + 00 miljardia + 00 miljardia + 000 miljardia + 000 miljardia + 0 biljoona + 0 biljoonaa + 00 biljoonaa + 00 biljoonaa + 000 biljoonaa + 000 biljoonaa + + + + + 0 t'.' + 0 t'.' + 00 t'.' + 00 t'.' + 000 t'.' + 000 t'.' + 0 milj'.' + 0 milj'.' + 00 milj'.' + 00 milj'.' + 000 milj'.' + 000 milj'.' + 0 mrd'.' + 0 mrd'.' + 00 mrd'.' + 00 mrd'.' + 000 mrd'.' + 000 mrd'.' + 0 bilj'.' + 0 bilj'.' + 00 bilj'.' + 00 bilj'.' + 000 bilj'.' + 000 bilj'.' + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Andorran peseta + Andorran peseta + Andorran pesetaa + + + Arabiemiirikuntien dirhami + Arabiemiirikuntien dirhami + Arabiemiirikuntien dirhamia + + + Afganistanin afgaani (1927–2002) + Afganistanin afgaani (1927–2002) + Afganistanin afgaania (1927–2002) + + + Afganistanin afgaani + Afganistanin afgaani + Afganistanin afgaania + + + Albanian lek (1946–1965) + Albanian lek (1946–1965) + Albanian lekiä (1946–1965) + + + Albanian lek + Albanian lek + Albanian lekiä + + + Armenian dram + Armenian dram + Armenian dramia + + + Alankomaiden Antillien guldeni + Alankomaiden Antillien guldeni + Alankomaiden Antillien guldenia + + + Angolan kwanza + Angolan kwanza + Angolan kwanzaa + + + Angolan kwanza (1977–1991) + Angolan kwanza (1977–1990) + Angolan kwanzaa (1977–1990) + + + Angolan uusi kwanza (1990–2000) + Angolan uusi kwanza (1990–2000) + Angolan uutta kwanzaa (1990–2000) + + + Angolan kwanza reajustado (1995–1999) + Angolan kwanza reajustado (1995–1999) + Angolan kwanza reajustadoa (1995–1999) + + + Argentiinan austral + Argentiinan austral + Argentiinan australia + + + Argentiinan ley-peso (1970–1983) + Argentiinan ley-peso (1970–1983) + Argentiinan ley-pesoa (1970–1983) + + + Argentiinan peso (1881–1970) + Argentiinan peso (1881–1970) + Argentiinan pesoa (1881–1970) + + + Argentiinan peso (1983–1985) + Argentiinan peso (1983–1985) + Argentiinan pesoa (1983–1985) + + + Argentiinan peso + Argentiinan peso + Argentiinan pesoa + + + Itävallan šillinki + Itävallan šillinki + Itävallan šillinkiä + + + Australian dollari + Australian dollari + Australian dollaria + AUD + + + Aruban floriini + Aruban floriini + Aruban floriinia + + + Azerbaidžanin manat (1993–2006) + Azerbaidžanin manat (1993–2006) + Azerbaidžanin manatia (1993–2006) + + + Azerbaidžanin manat + Azerbaidžanin manat + Azerbaidžanin manatia + + + Bosnia-Hertsegovinan dinaari (1992–1994) + Bosnia-Hertsegovinan dinaari (1992–1994) + Bosnia-Hertsegovinan dinaaria (1992–1994) + + + Bosnia-Hertsegovinan vaihdettava markka + Bosnia-Hertsegovinan vaihdettava markka + Bosnia-Hertsegovinan vaihdettavaa markkaa + + + Bosnia-Hertsegovinan uusi dinaari (1994–1997) + Bosnia-Hertsegovinan uusi dinaari (1994–1997) + Bosnia-Hertsegovinan uutta dinaaria (1994–1997) + + + Barbadosin dollari + Barbadosin dollari + Barbadosin dollaria + + + Bangladeshin taka + Bangladeshin taka + Bangladeshin takaa + + + Belgian vaihdettava frangi + Belgian vaihdettava frangi + Belgian vaihdettavaa frangia + + + Belgian frangi + Belgian frangi + Belgian frangia + + + Belgian rahoitusfrangi + Belgian rahoitusfrangi + Belgian rahoitusfrangia + + + Bulgarian kova lev + Bulgarian kova lev + Bulgarian kovaa leviä + + + Bulgarian sosialistinen lev + Bulgarian sosialistinen lev + Bulgarian sosialistista leviä + + + Bulgarian lev + Bulgarian lev + Bulgarian leviä + + + Bulgarian lev (1879–1952) + Bulgarian lev (1879–1952) + Bulgarian leviä (1879–1952) + + + Bahrainin dinaari + Bahrainin dinaari + Bahrainin dinaaria + + + Burundin frangi + Burundin frangi + Burundin frangia + + + Bermudan dollari + Bermudan dollari + Bermudan dollaria + + + Brunein dollari + Brunein dollari + Brunein dollaria + + + Bolivian boliviano + Bolivian boliviano + Bolivian bolivianoa + + + Bolivian boliviano (1863–1963) + Bolivian boliviano (1863–1963) + Bolivian bolivianoa (1863–1963) + + + Bolivian peso + Bolivian peso + Bolivian pesoa + + + Bolivian mvdol + Bolivian mvdol + Bolivian mvdol'ia + + + Brasilian uusi cruzeiro (1967–1986) + Brasilian uusi cruzeiro (1967–1986) + Brasilian uutta cruzeiroa (1967–1986) + + + Brasilian cruzado (1986–1989) + Brasilian cruzado (1986–1989) + Brasilian cruzadoa (1986–1989) + + + Brasilian cruzeiro (1990–1993) + Brasilian cruzeiro (1990–1993) + Brasilian cruzeiroa (1990–1993) + + + Brasilian real + Brasilian real + Brasilian realia + BRL + + + Brasilian uusi cruzado (1989–1990) + Brasilian uusi cruzado (1989–1990) + Brasilian uutta cruzadoa (1989–1990) + + + Brasilian cruzeiro (1993–1994) + Brasilian cruzeiro (1993–1994) + Brasilian cruzeiroa (1993–1994) + + + Brasilian cruzeiro (1942–1967) + Brasilian cruzeiro (1942–1967) + Brasilian cruzeiroa (1942–1967) + + + Bahaman dollari + Bahaman dollari + Bahaman dollaria + + + Bhutanin ngultrum + Bhutanin ngultrum + Bhutanin ngultrumia + + + Burman kyat + Burman kyat + Burman kyatia + + + Botswanan pula + Botswanan pula + Botswanan pulaa + + + Valko-Venäjän uusi rupla (1994–1999) + Valko-Venäjän uusi rupla (1994–1999) + Valko-Venäjän uutta ruplaa (1994–1999) + + + Valko-Venäjän rupla + Valko-Venäjän rupla + Valko-Venäjän ruplaa + + + Belizen dollari + Belizen dollari + Belizen dollaria + + + Kanadan dollari + Kanadan dollari + Kanadan dollaria + CAD + + + Kongon frangi + Kongon frangi + Kongon frangia + + + Sveitsin WIR-euro + Sveitsin WIR-euro + Sveitsin WIR-euroa + + + Sveitsin frangi + Sveitsin frangi + Sveitsin frangia + + + Sveitsin WIR-frangi + Sveitsin WIR-frangi + Sveitsin WIR-frangia + + + Chilen escudo + Chilen escudo + Chilen escudoa + + + Chilen unidades de fomento + Chilen unidades de fomento + Chilen unidades de fomentoa + + + Chilen peso + Chilen peso + Chilen pesoa + + + Kiinan kansanpankin dollari + Kiinan kansanpankin dollari + Kiinan kansanpankin dollaria + + + Kiinan yuan + Kiinan yuan + Kiinan yuania + CNY + + + Kolumbian peso + Kolumbian peso + Kolumbian pesoa + + + Kolumbian unidad de valor real + Kolumbian unidad de valor real + Kolumbian unidad de valor realia + + + Costa Rican colon + Costa Rican colon + Costa Rican colonia + + + Serbian dinaari (2002–2006) + Serbian dinaari (2002–2006) + Serbian dinaaria (2002–2006) + + + Tšekkoslovakian kova koruna + Tšekkoslovakian kova koruna + Tšekkoslovakian kovaa korunaa + + + Kuuban vaihdettava peso + Kuuban vaihdettava peso + Kuuban vaihdettavaa pesoa + + + Kuuban peso + Kuuban peso + Kuuban pesoa + + + Kap Verden escudo + Kap Verden escudo + Kap Verden escudoa + + + Kyproksen punta + Kyproksen punta + Kyproksen puntaa + + + Tšekin koruna + Tšekin koruna + Tšekin korunaa + + + Itä-Saksan markka + Itä-Saksan markka + Itä-Saksan markkaa + + + Saksan markka + Saksan markka + Saksan markkaa + + + Djiboutin frangi + Djiboutin frangi + Djiboutin frangia + + + Tanskan kruunu + Tanskan kruunu + Tanskan kruunua + + + Dominikaanisen tasavallan peso + Dominikaanisen tasavallan peso + Dominikaanisen tasavallan pesoa + + + Algerian dinaari + Algerian dinaari + Algerian dinaaria + + + Ecuadorin sucre + Ecuadorin sucre + Ecuadorin sucrea + + + Ecuadorin UVC + Ecuadorin UVC + Ecuadorin UVC'ta + + + Viron kruunu + Viron kruunu + Viron kruunua + + + Egyptin punta + Egyptin punta + Egyptin puntaa + + + Eritrean nakfa + Eritrean nakfa + Eritrean nakfaa + + + Espanjan peseta (A–tili) + Espanjan peseta (A–tili) + Espanjan pesetaa (A–tili) + + + Espanjan peseta (vaihdettava tili) + Espanjan peseta (vaihdettava tili) + Espanjan pesetaa (vaihdettava tili) + + + Espanjan peseta + Espanjan peseta + Espanjan pesetaa + + + Etiopian birr + Etiopian birr + Etiopian birriä + + + euro + euro + euroa + + + + Suomen markka + Suomen markka + Suomen markkaa + + + Fidžin dollari + Fidžin dollari + Fidžin dollaria + + + Falklandinsaarten punta + Falklandinsaarten punta + Falklandinsaarten puntaa + + + Ranskan frangi + Ranskan frangi + Ranskan frangia + + + Englannin punta + Englannin punta + Englannin puntaa + £ + + + Georgian kuponkilari + Georgian kuponkilari + Georgian kuponkilaria + + + Georgian lari + Georgian lari + Georgian laria + + + Ghanan cedi (1979–2007) + Ghanan cedi (1979–2007) + Ghanan cediä (1979–2007) + + + Ghanan cedi + Ghanan cedi + Ghanan cediä + + + Gibraltarin punta + Gibraltarin punta + Gibraltarin puntaa + + + Gambian dalasi + Gambian dalasi + Gambian dalasia + + + Guinean frangi + Guinean frangi + Guinean frangia + + + Guinean syli + Guinean syli + Guinean syliä + + + Päiväntasaajan Guinean ekwele + Päiväntasaajan Guinean ekwele + Päiväntasaajan Guinean ekweleä + + + Kreikan drakma + Kreikan drakma + Kreikan drakmaa + + + Guatemalan quetzal + Guatemalan quetzal + Guatemalan quetzalia + + + Portugalin Guinean escudo + Portugalin Guinean escudo + Portugalin Guinean escudoa + + + Guinea-Bissaun peso + Guinea-Bissaun peso + Guinea-Bissaun pesoa + + + Guyanan dollari + Guyanan dollari + Guyanan dollaria + + + Hongkongin dollari + Hongkongin dollari + Hongkongin dollaria + HKD + + + Hondurasin lempira + Hondurasin lempira + Hondurasin lempiraa + + + Kroatian dinaari + Kroatian dinaari + Kroatian dinaaria + + + Kroatian kuna + Kroatian kuna + Kroatian kunaa + + + Haitin gourde + Haitin gourde + Haitin gourdea + + + Unkarin forintti + Unkarin forintti + Unkarin forinttia + + + Indonesian rupia + Indonesian rupia + Indonesian rupiaa + + + Irlannin punta + Irlannin punta + Irlannin puntaa + + + Israelin punta + Israelin punta + Israelin puntaa + + + Israelin sekeli (1980–1985) + Israelin sekeli (1980–1985) + Israelin sekeliä (1980–1985) + + + Israelin uusi sekeli + Israelin uusi sekeli + Israelin uutta sekeliä + ILS + + + Intian rupia + Intian rupia + Intian rupiaa + INR + + + Irakin dinaari + Irakin dinaari + Irakin dinaaria + + + Iranin rial + Iranin rial + Iranin rialia + + + Islannin kruunu (1918–1981) + Islannin kruunu (1918–1981) + Islannin kruunua (1918–1981) + + + Islannin kruunu + Islannin kruunu + Islannin kruunua + + + Italian liira + Italian liira + Italian liiraa + + + Jamaikan dollari + Jamaikan dollari + Jamaikan dollaria + + + Jordanian dinaari + Jordanian dinaari + Jordanian dinaaria + + + Japanin jeni + Japanin jeni + Japanin jeniä + ¥ + + + Kenian šillinki + Kenian šillinki + Kenian šillinkiä + + + Kirgisian som + Kirgisian som + Kirgisian somia + + + Kambodžan riel + Kambodžan riel + Kambodžan rieliä + + + Komorien frangi + Komorien frangi + Komorien frangia + + + Pohjois-Korean won + Pohjois-Korean won + Pohjois-Korean wonia + + + Etelä-Korean hwan (1953–1962) + Etelä-Korean hwan (1953–1962) + Etelä-Korean hwania (1953–1962) + + + Etelä-Korean won (1945–1953) + Etelä-Korean won (1945–1953) + Etelä-Korean wonia (1945–1953) + + + Etelä-Korean won + Etelä-Korean won + Etelä-Korean wonia + KRW + + + Kuwaitin dinaari + Kuwaitin dinaari + Kuwaitin dinaaria + + + Caymansaarten dollari + Caymansaarten dollari + Caymansaarten dollaria + + + Kazakstanin tenge + Kazakstanin tenge + Kazakstanin tengeä + + + Laosin kip + Laosin kip + Laosin kipiä + + + Libanonin punta + Libanonin punta + Libanonin puntaa + + + Sri Lankan rupia + Sri Lankan rupia + Sri Lankan rupiaa + + + Liberian dollari + Liberian dollari + Liberian dollaria + + + Lesothon loti + Lesothon loti + Lesothon lotia + + + Liettuan liti + Liettuan liti + Liettuan litiä + + + Liettuan talonas + Liettuan talonas + Liettuan talonasia + + + Luxemburgin vaihdettava frangi + Luxemburgin vaihdettava frangi + Luxemburgin vaihdettavaa frangia + + + Luxemburgin frangi + Luxemburgin frangi + Luxemburgin frangia + + + Luxemburgin rahoitusfrangi + Luxemburgin rahoitusfrangi + Luxemburgin rahoitusfrangia + + + Latvian lati + Latvian lati + Latvian latia + + + Latvian rupla + Latvian rupla + Latvian ruplaa + + + Libyan dinaari + Libyan dinaari + Libyan dinaaria + + + Marokon dirhami + Marokon dirhami + Marokon dirhamia + + + Marokon frangi + Marokon frangi + Marokon frangia + + + Monacon frangi + Monacon frangi + Monacon frangia + + + Moldovan kuponkileu + Moldovan kuponkileu + Moldovan kuponkileuta + + + Moldovan leu + Moldovan leu + Moldovan leuta + + + Madagaskarin ariary + Madagaskarin ariary + Madagaskarin ariarya + + + Madagaskarin frangi + Madagaskarin frangi + Madagaskarin frangia + + + Makedonian denaari + Makedonian denaari + Makedonian denaaria + + + Makedonian dinaari (1992–1993) + Makedonian dinaari (1992–1993) + Makedonian dinaaria (1992–1993) + + + Malin frangi + Malin frangi + Malin frangia + + + Myanmarin kyat + Myanmarin kyat + Myanmarin kyatia + + + Mongolian tugrik + Mongolian tugrik + Mongolian tugrikia + + + Macaon pataca + Macaon pataca + Macaon patacaa + + + Mauritanian ouguiya + Mauritanian ouguiya + Mauritanian ouguiyaa + + + Maltan liira + Maltan liira + Maltan liiraa + + + Maltan punta + Maltan punta + Maltan puntaa + + + Mauritiuksen rupia + Mauritiuksen rupia + Mauritiuksen rupiaa + + + Malediivien rufiyaa + Malediivien rufiyaa + Malediivien rufiyaata + + + Malawin kwacha + Malawin kwacha + Malawin kwachaa + + + Meksikon peso + Meksikon peso + Meksikon pesoa + MXN + + + Meksikon hopeapeso (1861–1992) + Meksikon hopeapeso (1861–1992) + Meksikon hopeapesoa (1861–1992) + + + Meksikon UDI + Meksikon UDI + Meksikon UDI'ta + + + Malesian ringgit + Malesian ringgit + Malesian ringgitiä + + + Mosambikin escudo + Mosambikin escudo + Mosambikin escudoa + + + Mosambikin metical (1980–2006) + Mosambikin metical (1980–2006) + Mosambikin meticalia (1980–2006) + + + Mosambikin metical + Mosambikin metical + Mosambikin meticalia + + + Namibian dollari + Namibian dollari + Namibian dollaria + + + Nigerian naira + Nigerian naira + Nigerian nairaa + + + Nicaraguan cordoba (1988–1991) + Nicaraguan cordoba (1988–1991) + Nicaraguan cordobaa (1988–1991) + + + Nicaraguan cordoba + Nicaraguan cordoba + Nicaraguan cordobaa + + + Alankomaiden guldeni + Alankomaiden guldeni + Alankomaiden guldenia + + + Norjan kruunu + Norjan kruunu + Norjan kruunua + + + Nepalin rupia + Nepalin rupia + Nepalin rupiaa + + + Uuden-Seelannin dollari + Uuden-Seelannin dollari + Uuden-Seelannin dollaria + NZD + + + Omanin rial + Omanin rial + Omanin rialia + + + Panaman balboa + Panaman balboa + Panaman balboaa + + + Perun inti + Perun inti + Perun intiä + + + Perun uusi sol + Perun uusi sol + Perun uutta solia + + + Perun sol (1863–1965) + Perun sol (1863–1965) + Perun solia (1863–1965) + + + Papua-Uuden-Guinean kina + Papua-Uuden-Guinean kina + Papua-Uuden-Guinean kinaa + + + Filippiinien peso + Filippiinien peso + Filippiinien pesoa + + + Pakistanin rupia + Pakistanin rupia + Pakistanin rupiaa + + + Puolan zloty + Puolan zloty + Puolan zlotya + + + Puolan zloty (1950–1995) + Puolan zloty (1950–1995) + Puolan zlotya (1950–1995) + + + Portugalin escudo + Portugalin escudo + Portugalin escudoa + + + Paraguayn guarani + Paraguayn guarani + Paraguayn guarania + + + Qatarin rial + Qatarin rial + Qatarin rialia + + + Rhodesian dollari + Rhodesian dollari + Rhodesian dollaria + + + Romanian leu (1952–2006) + Romanian leu (1952–2006) + Romanian leuta (1952–2006) + + + Romanian leu + Romanian leu + Romanian leuta + + + Serbian dinaari + Serbian dinaari + Serbian dinaaria + + + Venäjän rupla + Venäjän rupla + Venäjän ruplaa + + + Venäjän rupla (1991–1998) + Venäjän rupla (1991–1998) + Venäjän ruplaa (1991–1998) + + + Ruandan frangi + Ruandan frangi + Ruandan frangia + + + Saudi-Arabian rial + Saudi-Arabian rial + Saudi-Arabian rialia + + + Salomonsaarten dollari + Salomonsaarten dollari + Salomonsaarten dollaria + + + Seychellien rupia + Seychellien rupia + Seychellien rupiaa + + + Sudanin dinaari (1992–2007) + Sudanin dinaari (1992–2007) + Sudanin dinaaria (1992–2007) + + + Sudanin punta + Sudanin punta + Sudanin puntaa + + + Sudanin punta (1957–1998) + Sudanin punta (1957–1998) + Sudanin puntaa (1957–1998) + + + Ruotsin kruunu + Ruotsin kruunu + Ruotsin kruunua + + + Singaporen dollari + Singaporen dollari + Singaporen dollaria + + + Saint Helenan punta + Saint Helenan punta + Saint Helenan puntaa + + + Slovenian tolar + Slovenian tolar + Slovenian tolaria + + + Slovakian koruna + Slovakian koruna + Slovakian korunaa + + + Sierra Leonen leone + Sierra Leonen leone + Sierra Leonen leonea + + + Somalian šillinki + Somalian šillinki + Somalian šillinkiä + + + Surinamin dollari + Surinamin dollari + Surinamin dollaria + + + Surinamin guldeni + Surinamin guldeni + Surinamin guldenia + + + Etelä-Sudanin punta + Etelä-Sudanin punta + Etelä-Sudanin puntaa + + + São Tomén ja Príncipen dobra + São Tomén ja Príncipen dobra + São Tomén ja Príncipen dobraa + + + Neuvostoliiton rupla + Neuvostoliiton rupla + Neuvostoliiton ruplaa + + + El Salvadorin colon + El Salvadorin colon + El Salvadorin colonia + + + Syyrian punta + Syyrian punta + Syyrian puntaa + + + Swazimaan lilangeni + Swazimaan lilangeni + Swazimaan lilangenia + + + Thaimaan baht + Thaimaan baht + Thaimaan bahtia + THB + + + Tadžikistanin rupla + Tadžikistanin rupla + Tadžikistanin ruplaa + + + Tadžikistanin somoni + Tadžikistanin somoni + Tadžikistanin somonia + + + Turkmenistanin manat (1993–2009) + Turkmenistanin manat (1993–2009) + Turkmenistanin manatia (1993–2009) + + + Turkmenistanin manat + Turkmenistanin manat + Turkmenistanin manatia + + + Tunisian dinaari + Tunisian dinaari + Tunisian dinaaria + + + Tongan pa’anga + Tongan pa’anga + Tongan pa’angaa + + + Timorin escudo + Timorin escudo + Timorin escudoa + + + Turkin liira (1922–2005) + Turkin liira (1922–2005) + Turkin liiraa (1922–2005) + + + Turkin liira + Turkin liira + Turkin liiraa + + + Trinidadin ja Tobagon dollari + Trinidadin ja Tobagon dollari + Trinidadin ja Tobagon dollaria + + + Taiwanin uusi dollari + Taiwanin uusi dollari + Taiwanin uutta dollaria + TWD + + + Tansanian šillinki + Tansanian šillinki + Tansanian šillinkiä + + + Ukrainan hryvnia + Ukrainan hryvnia + Ukrainan hryvniaa + + + Ukrainan karbovanetz + Ukrainan karbovanetz + Ukrainan karbovanetzia + + + Ugandan šillinki (1966–1987) + Ugandan šillinki (1966–1987) + Ugandan šillinkiä (1966–1987) + + + Ugandan šillinki + Ugandan šillinki + Ugandan šillinkiä + + + Yhdysvaltain dollari + Yhdysvaltain dollari + Yhdysvaltain dollaria + $ + + + Yhdysvaltain dollari (seuraava päivä) + Yhdysvaltain dollari (seuraava päivä) + Yhdysvaltain dollaria (seuraava päivä) + + + Yhdysvaltain dollari (sama päivä) + Yhdysvaltain dollari (sama päivä) + Yhdysvaltain dollaria (sama päivä) + + + Uruguayn peso en unidades indexadas + Uruguayn peso en unidades indexadas + Uruguayn pesoa en unidades indexadas + + + Uruguayn peso (1975–1993) + Uruguayn peso (1975–1993) + Uruguayn pesoa (1975–1993) + + + Uruguayn peso + Uruguayn peso + Uruguayn pesoa + + + Uzbekistanin som + Uzbekistanin som + Uzbekistanin somia + + + Venezuelan bolivar (1871–2008) + Venezuelan bolivar (1871–2008) + Venezuelan bolivaria (1871–2008) + + + Venezuelan bolivar + Venezuelan bolivar + Venezuelan bolivaria + + + Vietnamin dong + Vietnamin dong + Vietnamin dongia + VND + + + Vietnamin dong (1978–1985) + Vietnamin dong (1978–1985) + Vietnamin dongia (1978–1985) + + + Vanuatun vatu + Vanuatun vatu + Vanuatun vatua + + + Samoan tala + Samoan tala + Samoan talaa + + + CFA-frangi BEAC + CFA-frangi BEAC + CFA-frangia BEAC + FCFA + + + hopea + hopeayksikkö + hopeayksikköä + + + kulta + kultayksikkö + kultayksikköä + + + EURCO + EURCO + EURCO'a + + + Euroopan rahayksikkö (EMU) + Euroopan rahayksikkö (EMU) + Euroopan rahayksikköä (EMU) + + + EUA (XBC) + EUA (XBC) + EUA'ta (XBC) + + + EUA (XBD) + EUA (XBD) + EUA'ta (XBD) + + + Itä-Karibian dollari + Itä-Karibian dollari + Itä-Karibian dollaria + XCD + + + erityisnosto-oikeus (SDR) + erityisnosto-oikeus (SDR) + erityisnosto-oikeutta (SDR) + + + Euroopan valuuttayksikkö (ECU) + Euroopan valuuttayksikkö (ECU) + Euroopan valuuttayksikköä (ECU) + + + Ranskan kultafrangi + Ranskan kultafrangi + Ranskan kultafrangia + + + Ranskan UIC-frangi + Ranskan UIC-frangi + Ranskan UIC-frangia + + + CFA-frangi BCEAO + CFA-frangi BCEAO + CFA-frangia BCEAO + CFA + + + palladium + palladiumyksikkö + palladiumyksikköä + + + CFP-frangi + CFP-frangi + CFP-frangia + XPF + + + platina + platinayksikkö + platinayksikköä + + + RINET-rahastot + RINET-rahastoyksikkö + RINET-rahastoyksikköä + + + testaustarkoitukseen varattu valuuttakoodi + testaustarkoitukseen varattu valuuttakoodi + testaustarkoitukseen varattua valuuttakoodia + + + tuntematon rahayksikkö + tuntematon rahayksikkö + tuntematonta rahayksikköä + + + Jemenin dinaari + Jemenin dinaari + Jemenin dinaaria + + + Jemenin rial + Jemenin rial + Jemenin rialia + + + Jugoslavian kova dinaari (1966–1990) + Jugoslavian kova dinaari (1966–1990) + Jugoslavian kovaa dinaaria (1966–1990) + + + Jugoslavian uusi dinaari (1994–2002) + Jugoslavian uusi dinaari (1994–2002) + Jugoslavian uutta dinaaria (1994–2002) + + + Jugoslavian vaihdettava dinaari (1990–1992) + Jugoslavian vaihdettava dinaari (1990–1992) + Jugoslavian vaihdettavaa dinaaria (1990–1992) + + + Jugoslavian uudistettu dinaari (1992–1993) + Jugoslavian uudistettu dinaari (1992–1993) + Jugoslavian uudistettua dinaaria (1992–1993) + + + Etelä-Afrikan rahoitusrandi + Etelä-Afrikan rahoitusrandi + Etelä-Afrikan rahoitusrandia + + + Etelä-Afrikan randi + Etelä-Afrikan randi + Etelä-Afrikan randia + + + Sambian kwacha (1968–2012) + Sambian kwacha (1968–2012) + Sambian kwachaa (1968–2012) + + + Sambian kwacha + Sambian kwacha + Sambian kwachaa + + + Zairen uusi zaire (1993–1998) + Zairen uusi zaire (1993–1998) + Zairen uutta zairea (1993–1998) + + + Zairen zaire (1971–1993) + Zairen zaire (1971–1993) + Zairen zairea (1971–1993) + + + Zimbabwen dollari (1980–2008) + Zimbabwen dollari (1980–2008) + Zimbabwen dollaria (1980–2008) + + + Zimbabwen dollari (2009) + Zimbabwen dollari (2009) + Zimbabwen dollaria (2009) + + + Zimbabwen dollari (2008) + Zimbabwen dollari (2008) + Zimbabwen dollaria (2008) + + + + vähintään {0} + {0}‒{1} + + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} kulmaminuutti + {0} kulmaminuuttia + + + {0} kulmasekunti + {0} kulmasekuntia + + + {0} aste + {0} astetta + + + {0} eekkeri + {0} eekkeriä + + + {0} hehtaari + {0} hehtaaria + + + {0} neliöjalka + {0} neliöjalkaa + + + {0} neliökilometri + {0} neliökilometriä + + + {0} neliömetri + {0} neliömetriä + + + {0} neliömaili + {0} neliömailia + + + {0} päivä + {0} päivää + + + {0} tunti + {0} tuntia + + + {0} millisekunti + {0} millisekuntia + + + {0} minuutti + {0} minuuttia + + + {0} kuukausi + {0} kuukautta + + + {0} sekunti + {0} sekuntia + + + {0} viikko + {0} viikkoa + + + {0} vuosi + {0} vuotta + + + {0} senttimetri + {0} senttimetriä + + + {0} jalka + {0} jalkaa + + + {0} tuuma + {0} tuumaa + + + {0} kilometri + {0} kilometriä + + + {0} valovuosi + {0} valovuotta + + + {0} metri + {0} metriä + + + {0} maili + {0} mailia + + + {0} millimetri + {0} millimetriä + + + {0} pikometri + {0} pikometriä + + + {0} jaardi + {0} jaardia + + + {0} gramma + {0} grammaa + + + {0} kilogramma + {0} kilogrammaa + + + {0} unssi + {0} unssia + + + {0} pauna + {0} paunaa + + + {0} hevosvoima + {0} hevosvoimaa + + + {0} kilowatti + {0} kilowattia + + + {0} watti + {0} wattia + + + {0} hehtopascal + {0} hehtopascalia + + + {0} tuuma elohopeaa + {0} tuumaa elohopeaa + + + {0} millibaari + {0} millibaaria + + + {0} kilometri tunnissa + {0} kilometriä tunnissa + + + {0} metri sekunnissa + {0} metriä sekunnissa + + + {0} maili tunnissa + {0} mailia tunnissa + + + {0} celsiusaste + {0} celsiusastetta + + + {0} fahrenheitaste + {0} fahrenheitastetta + + + {0} kuutiokilometri + {0} kuutiokilometriä + + + {0} kuutiomaili + {0} kuutiomailia + + + {0} litra + {0} litraa + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} pv + {0} pv + + + {0} t + {0} t + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} kk + {0} kk + + + {0} s + {0} s + + + {0} vk + {0} vk + + + {0} v + {0} v + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} vv + {0} vv + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hv + {0} hv + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ac + {0}ac + + + {0}ha + {0}ha + + + {0}ft² + {0}ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0}mi² + {0}mi² + + + {0}pv + {0}pv + + + {0}t + {0}t + + + {0}ms + {0}ms + + + {0}min + {0}min + + + {0}kk + {0}kk + + + {0}s + {0}s + + + {0}vk + {0}vk + + + {0}v + {0}v + + + {0}cm + {0}cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}km + {0}km + + + {0}vv + {0}vv + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}oz + {0}oz + + + {0}lb + {0}lb + + + {0}hv + {0}hv + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}″ Hg + {0}″ Hg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0}mi/h + {0}mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0}l + {0}l + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0} ja {1} + {0} ja {1} + + + {0}, {1} + {0}, {1} + {0} ja {1} + {0} ja {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + kyllä:k + ei:e + + + + diff --git a/library/Zend/Locale/Data/fi_FI.xml b/library/Zend/Locale/Data/fi_FI.xml new file mode 100755 index 000000000..8bd6b7218 --- /dev/null +++ b/library/Zend/Locale/Data/fi_FI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fil.xml b/library/Zend/Locale/Data/fil.xml new file mode 100755 index 000000000..5cee6f8a2 --- /dev/null +++ b/library/Zend/Locale/Data/fil.xml @@ -0,0 +1,4002 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Abkhazian + Acoli + Afrikaans + Akan + Amharic + Arabic + Modern Standard Arabic + Assamese + Aymara + Azerbaijani + Azeri + Belarusian + Bemba + Bulgarian + Bengali + Tibetan + Breton + Bosnian + Catalan + Cherokee + Sorani Kurdish + Corsican + Czech + Welsh + Danish + German + Austrian German + Swiss High German + Divehi + Dzongkha + Ewe + Efik + Greek + Ingles + Ingles sa Australia + Ingles sa Canada + Ingles (UK) + Ingles (U.K.) + Ingles (US) + Ingles (U.S.) + Esperanto + Spanish + Latin American Spanish + European Spanish + Mexican Spanish + Estonian + Basque + Persian + Finnish + Filipino + Fijian + Faroese + French + Canadian French + Swiss French + Western Frisian + Irish + Ga + Scots Gaelic + Galician + Guarani + Swiss German + Gujarati + Hausa + Hawaiian + Hebrew + Hindi + Croatian + Haitian + Hungarian + Armenian + Interlingua + Indonesian + Interlingue + Igbo + Icelandic + Italian + Japanese + Javanese + Georgian + Kongo + Kazakh + Khmer + Kannada + Korean + Kashmiri + Kurdish + Kirghiz + Latin + Luxembourgish + Ganda + Lingala + Lao + Lozi + Lithuanian + Luba-Lulua + Latvian + Morisyen + Malagasy + Maori + Macedonian + Malayalam + Mongolian + Marathi + Malay + Maltese + Burmese + Norwegian Bokmal + North Ndebele + Nepali + Dutch + Flemish + Norwegian Nynorsk + Norwegian + Northern Sotho + Nyanja + Nyankole + Occitan + Oromo + Oriya + Ossetic + Punjabi + Polish + Pashto + Pushto + Portuguese + Brazilian Portuguese + European Portuguese + Quechua + Romansh + Rundi + Romanian + Russian + Kinyarwanda + Sanskrit + Sindhi + Northern Sami + Sango + Serbo-Croatian + Sinhala + Slovak + Slovenian + Samoan + Shona + Somali + Albanian + Serbian + Swati + Southern Sotho + Sundanese + Swedish + Swahili + Comorian + Tamil + Telugu + Tetum + Tajik + Thai + Tigrinya + Turkmen + Tagalog + Klingon + Tswana + Tongan + Tok Pisin + Turkish + Tsonga + Tatar + Tumbuka + Twi + Tahitian + Uyghur + Uighur + Ukranian + Hindi Kilalang Wika + Urdu + Uzbek + Venda + Vietnamese + Wolof + Xhosa + Yiddish + Yoruba + Cantonese + Standard Moroccan Tamazight + Chinese + Simplified Chinese + Traditional Chinese + Zulu + Walang nilalamang linguistic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundo + Africa + North America + South America + Oceania + Western Africa + Central America + Eastern Africa + Northern Africa + Middle Africa + Southern Africa + Americas + Northern America + Carribbean + Eastern Asia + Southern Asia + South-Eastern Asia + Southern Europe + Australasia + Melanesia + Micronesian Region + Polynesia + Asia + Central Asia + Western Asia + Europe + Eastern Europe + Northern Europe + Western Europe + Latin America + Acsencion island + Andorra + United Arab Emirates + Afghanistan + Antigua and Barbuda + Anguilla + Albania + Armenia + Netherlands Antilles + Angola + Antarctica + Argentina + American Samoa + Austria + Australia + Aruba + Åland Islands + Azerbaijan + Bosnia and Herzegovina + Barbados + Bangladesh + Belgium + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Caribbean Netherlands + Brazil + Bahamas + Bhutan + Bouvet Island + Botswana + Belarus + Belize + Canada + Cocos (Keeling) Islands + Congo - Kinshasa + Congo (DRC) + Central African Republic + Congo - Brazzaville + Congo (Republic) + Switzerland + Côte d'Ivoire + Ivory Coast + Cook Islands + Chile + Cameroon + China + Colombia + Clipperton Island + Costa Rica + Cuba + Cape Verde + Curaçao + Christmas Island + Cyprus + Czech Republic + Germany + Diego Garcia + Djibouti + Denmark + Dominica + Dominican Republic + Algeria + Ceuta and Melilla + Ecuador + Estonia + Egypt + Western Sahara + Eritrea + Spain + Ethiopia + European Union + Finland + Fiji + Falkland Islands + Falkland Islands (Islas Malvinas) + Micronesia + Faroe Islands + France + Gabon + United Kingdom + U.K. + Grenada + Georgia + French Guiana + Guernsey + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Equatorial Guinea + Greece + South Georgia and the South Sandwich Islands + Guatemala + Guam + Guinea-Bissau + Guyana + Hong Kong SAR China + Hong Kong + Heard Island and McDonald Islands + Honduras + Croatia + Haiti + Hungary + Canary Island + Indonesia + Ireland + Israel + Isle of Man + India + British Indian Ocean Territory + Iraq + Iran + Iceland + Italy + Jersey + Jamaica + Jordan + Japan + Kenya + Kyrgyzstan + Cambodia + Kiribati + Comoros + Saint Kitts and Nevis + North Korea + South Korea + Kuwait + Cayman Islands + Kazakhstan + Laos + Lebanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lithuania + Luxembourg + Latvia + Libya + Morocco + Monaco + Moldova + Montenegro + Saint Martin + Madagascar + Marshall Islands + Macedonia + Macedonia (FYROM) + Mali + Myanmar (Burma) + Mongolia + Macau SAR China + Macau + Northern Mariana Islands + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambique + Namibia + New Caledonia + Niger + Norfolk Island + Nigeria + Nicaragua + Netherlands + Norway + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + French Polynesia + Papua New Guinea + Pilipinas + Pakistan + Poland + Saint Pierre and Miquelon + Pitcairn Islands + Puerto Rico + Palestinian Territories + Palestine + Portugal + Palau + Paraguay + Qatar + Outlying Oceania + Réunion + Romania + Serbia + Russia + Rwanda + Saudi Arabia + Solomon Islands + Seychelles + Sudan + Sweden + Singapore + Saint Helena + Slovenia + Svalbard and Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + South Sudan + São Tomé and Príncipe + El Salvador + Sint Maarten + Syria + Swaziland + Tristan de Cunha + Turks and Caicos Islands + Chad + French Southern Territories + Togo + Thailand + Tajikistan + Tokelau + Timor-Leste + East Timor + Turkmenistan + Tunisia + Tonga + Turkey + Trinidad and Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + U.S. Outlying Islands + Estados Unidos + U.S. + Uruguay + Uzbekistan + Vatican City + Saint Vincent and the Grenadines + Venezuela + British Virgin Islands + U.S. Virgin Islands + Vietnam + Vanuatu + Wallis and Futuna + Samoa + Kosovo + Yemen + Mayotte + South Africa + Zambia + Zimbabwe + Hindi Kilalang Rehiyon + + + Pinyin Romanization + Wade-Giles Romanization + + + Kalendaryo + Pag-uuri-uri ng Mga Ignore Symbol + Pag-uuri-uri ng Baliktad na Accent + Uppercase/Lowercase na Pagsusunud-sunod + Case Sensitive na Pag-uuri-uri + Pag-uuri-uri ng Kana + Ayos ng Pag-uuri-uri + Normalized na Pag-uuri-uri + Numeric na Pag-uuri-uri + Lakas ng Pag-uuri-uri + Pera + Mga Numero + Time Zone + Lokal na Variant + Pag-uri-uriin Bilang Mga Simbolo + Pribadong Paggamit + + + Arabic-Indic Digits + Extended Arabic-Indic Digits + Armenian Numerals + Armenian Lowercase Numerals + Bengali Digits + Pagkakasunod-sunod ng Pag-uuri ng Tradisyunal na Chinese - Big5 + Kalendaryo ng Buddhist + Kalendaryong Chinese + Coptic Calendar + Devanagari Digits + Pagkakasunud-sunod ng Pag-uuri ng Diksyunaryo + Default na Ayos ng Pag-uuri ng Unicode + Ethiopic Numerals + Kalendaryong Ethiopic + Kalendaryong Ethiopic Amete Alem + Mga Pampinansyang Numeral + Full Width Digits + Pagkakasunud-sunod ng Pag-uuri ng Pinasimpleng Chinese - GB2312 + Georgian Numerals + Kalendaryong Gregorian + Greek Numerals + Greek Lowercase Numerals + Gujarati Digits + Gurmukhi Digits + Chinese Decimal Numerals + Simplified Chinese Numerals + Simplified Chinese Financial Numerals + Traditional Chinese Numerals + Traditional Chinese Financial Numerals + Hebrew Numerals + Hebrew Calendar + Pag-uri-uriin Lahat + Pambansang Kalendaryong Indian + Kalendaryong Islamic + Kalendaryong Islamic-Civil + Kalendaryong Japanese + Japanese Numerals + Japanese Financial Numerals + Khmer Digits + Kannada Digits + Lao Digits + Western Digits + Lowercase Muna ang Pag-uri-uriin + Malayalam Digits + Mongolian Digits + Myanmar Digits + Mga Native na Digit + Pag-uri-uriin ang Mga Accent nang Normal + Pag-uri-uriin ang Ayos ng Normal na Case + Pag-uri-uriin ang Hindi Case Sensitive + Pag-uri-uriin ang Kana nang Hiwalay + Pag-uri-uriin nang Walang Pag-normalize + Pag-uri-uriin ang Mga Digit nang Indibidwal + Pag-uri-uriin ang Mga Simbolo + Oriya Digits + Kalendaryong Persian + Pagkakasunud-sunod ng Pag-uuri ng Phonebook + Phonetic na Ayos ng Pag-uuri-uri + Pagkakasunud-sunod ng Pag-uuri ng Pinyin + Mga Base na Titik Lang ang Pag-uri-uriin + Pag-uri-uriin ang Mga Accent/Case/Lapad/Kana + Pagkakasunud-sunod ng Pag-uuri ng Na-reform + Kalendaryong Minguo + Roman Numerals + Roman Lowercase Numerals + Paghahanap na May Layuning Pangkalahatan + Maghanap Ayon sa Unang Katinig ng Hangul + Pag-uri-uriin ang Mga Accent + Pag-uri-uriin ang Mga Ignoring Symbol + Karaniwang Ayos ng Pag-uuri-uri + Pagkakasunud-sunod ng Pag-uuri ng Stroke + Tamil Numerals + Tamil Digits + Telugu Digits + Pag-uri-uriin ang Mga Accent/Case/Lapad + Thai Digits + Tibetan Digits + Tradisyunal na Pagkakasunud-sunod ng Pag-uuri + Mga Tradisyunal na Numeral + Pagkakasunud-sunod ng Pag-uuri ng Radical-Stroke + Uppercase Muna ang Pag-uri-uriin + Mga Vai na Digit + Pag-uri-uriin ang Mga Accent nang Baliktad + Pag-uri-uriin ang Case Sensitive + Pag-uri-uriin ang Kana nang Naiiba + Pag-uri-uriin ang Unicode nang Normalized + Pag-uri-uriin ang Mga Digit nang Numerical + + + BGN + Numeric + Tono + UNGEGN + Accents + Fullwidth + Halfwidth + Jamo + Pinyin + Publishing + + + Metric + UK + US + + + Wika: {0} + Script: {0} + Rehiyon: {0} + + + + [a b c d e f g h i j k l m n ñ {ng} o p q r s t u v w x y z] + [á à â é è ê í ì î ó ò ô ú ù û] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/y GGGGG + + + + + + + {1} 'ng' {0} + + + + + {1} 'ng' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + y G + MMM y G + MMM d, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y G + y G + M/y GGGGG + M/d/y GGGGG + E, M/d/y GGGGG + MM-y G + MMM y G + MMM d, y G + E, MMM d, y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y–y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + M/d/y – M/d/y GGGGG + M/d/y – M/d/y GGGGG + M/d/y – M/d/y GGGGG + + + E, M/d/y – E, M/d/y GGGGG + E, M/d/y – E, M/d/y GGGGG + E, M/d/y – E, M/d/y GGGGG + + + MMM–MMM y G + MMM y – MMM y G + + + MMM d–d, y G + MMM d – MMM d, y G + MMM d, y – MMM d, y G + + + E, MMM d – E, MMM d, y G + E, MMM d – E, MMM d, y G + E, MMM d, y – E, MMM d, y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + Ene + Peb + Mar + Abr + May + Hun + Hul + Ago + Set + Okt + Nob + Dis + + + E + P + M + A + M + H + H + A + S + O + N + D + + + Enero + Pebrero + Marso + Abril + Mayo + Hunyo + Hulyo + Agosto + Setyembre + Oktubre + Nobyembre + Disyembre + + + + + Ene + Peb + Mar + Abr + May + Hun + Hul + Ago + Set + Okt + Nob + Dis + + + E + P + M + A + M + H + H + A + S + O + N + D + + + Enero + Pebrero + Marso + Abril + Mayo + Hunyo + Hulyo + Agosto + Setyembre + Oktubre + Nobyembre + Disyembre + + + + + + + Lin + Lun + Mar + Miy + Huw + Biy + Sab + + + L + L + M + M + H + B + S + + + Li + Lu + Ma + Mi + Hu + Bi + Sa + + + Linggo + Lunes + Martes + Miyerkules + Huwebes + Biyernes + Sabado + + + + + Lin + Lun + Mar + Miy + Huw + Biy + Sab + + + L + L + M + M + H + B + S + + + Li + Lu + Ma + Mi + Hu + Bi + Sa + + + Linggo + Lunes + Martes + Miyerkules + Huwebes + Biyernes + Sabado + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + ika-1 quarter + ika-2 quarter + ika-3 quarter + ika-4 na quarter + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + ika-1 quarter + ika-2 quarter + ika-3 quarter + ika-4 na quarter + + + + + + + AM + PM + + + a + p + + + AM + PM + + + + + + BC + BCE + AD + CE + + + + + + EEEE, MMMM d, y + + + + + MMMM d, y + + + + + MMM d, y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} 'ng' {0} + + + + + {1} 'ng' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + MMM d, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + M/d/y + E, M/d/y + MM/y + MMM y + MMM d, y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y–y + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM–MMM y + MMM y – MMM y + + + MMM d–d, y + MMM d – MMM d, y + MMM d, y – MMM d, y + + + E, MMM d – E, MMM d, y + E, MMM d – E, MMM d, y + E, MMM d, y – E, MMM d, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Era + + + Taon + nakaraang taon + ngayong taon + susunod na taon + + Sa loob ng {0} taon + Sa loob ng {0} taon + + + {0} taon ang nakalipas + {0} taon ang nakalipas + + + + Buwan + nakaraang buwan + ngayong buwan + susunod na buwan + + Sa loob ng {0} buwan + Sa loob ng {0} buwan + + + {0} buwan ang nakalipas + {0} buwan ang nakalipas + + + + Linggo + nakaraang linggo + ngayong linggo + susunod na linggo + + Sa loob ng {0} linggo + Sa loob ng {0} linggo + + + {0} na linggo ang nakalipas + {0} linggo ang nakalipas + + + + Araw + Araw bago ang kahapon + Kahapon + Ngayon + Bukas + Samakalawa + + Sa loob ng {0} araw + Sa loob ng {0} araw + + + {0} araw ang nakalipas + {0} araw ang nakalipas + + + + Araw ng Linggo + + + nakaraang Linggo + ngayong Linggo + susunod na Linggo + + + nakaraang Lunes + ngayong Lunes + susunod na Lunes + + + nakaraang Martes + ngayong Martes + susunod na Martes + + + nakaraang Miyerkules + ngayong Miyerkules + susunod na Miyerkules + + + nakaraan Huwebes + ngayong Huwebes + susunod na Huwebes + + + nakaraang Biyernes + ngayong Biyernes + susunod na Biyernes + + + nakaraang Sabado + ngayong Sabado + susunod na Sabado + + + AM/PM + + + Oras + + Sa loob ng {0} oras + Sa loob ng {0} oras + + + {0} oras ang nakalipas + {0} oras ang nakalipas + + + + Minuto + + Sa loob ng {0} minuto + Sa loob ng {0} minuto + + + {0} minuto ang nakalipas + {0} minuto ang nakalipas + + + + Segundo + ngayon + + Sa loob ng {0} segundo + Sa loob ng {0} segundo + + + {0} segundo ang nakalipas + {0} segundo ang nakalipas + + + + Time Zone + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Oras sa {0} + {0} Daylight Time + {0} Standard Time + {1} ({0}) + + Di-tiyak na Lungsod + + + Dumont d’Urville + + + Saint Barthélemy + + + Atikokan + + + St. John’s + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + British Summer Time + + + + Nuuk + + + Ittoqqortoormiit + + + + Irish Summer Time + + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Kathmandu + + + Asunción + + + Réunion + + + St. Helena + + + Lower Prince's Quarter + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh City + + + + Afghanistan Time + + + + + Central Africa Time + + + + + East Africa Time + + + + + South Africa Time + + + + + West Africa Time + West Africa Standard Time + West Africa Summer Time + + + + + Alaska Time + Alaska Standard Time + Alaska Daylight Time + + + + + Amazon Time + Amazon Standard Time + Amazon Summer Time + + + + + North American Central Time + North American Central Standard Time + North American Central Daylight Time + + + + + North American Eastern Time + North American Eastern Standard Time + North American Eastern Daylight Time + + + + + North American Mountain Time + North American Mountain Standard Time + North American Mountain Daylight Time + + + + + North American Pacific Time + North American Pacific Standard Time + North American Pacific Daylight Time + + + + + Oras sa Anadyr + Standard Time sa Anadyr + Summer Time sa Anadyr + + + + + Arabian Time + Arabian Standard Time + Arabian Daylight Time + + + + + Argentina Time + Argentina Standard Time + Argentina Summer Time + + + + + Western Argentina Time + Western Argentina Standard Time + Western Argentina Summer Time + + + + + Armenia Time + Armenia Standard Time + Armenia Summer Time + + + + + Atlantic Time + Atlantic Standard Time + Atlantic Daylight Time + + + + + Central Australia Time + Australian Central Standard Time + Australian Central Daylight Time + + + + + Australian Central Western Time + Australian Central Western Standard Time + Australian Central Western Daylight Time + + + + + Eastern Australia Time + Australian Eastern Standard Time + Australian Eastern Daylight Time + + + + + Western Australia Time + Australian Western Standard Time + Australian Western Daylight Time + + + + + Azerbaijan Time + Azerbaijan Standard Time + Azerbaijan Summer Time + + + + + Azores Time + Azores Standard Time + Azores Summer Time + + + + + Bangladesh Time + Bangladesh Standard Time + Bangladesh Summer Time + + + + + Bhutan Time + + + + + Bolivia Time + + + + + Brasilia Time + Brasilia Standard Time + Brasilia Summer Time + + + + + Brunei Darussalam Time + + + + + Cape Verde Time + Cape Verde Standard Time + Cape Verde Summer Time + + + + + Chamorro Time + + + + + Chatham Time + Chatham Standard Time + Chatham Daylight Time + + + + + Chile Time + Chile Standard Time + Chile Summer Time + + + + + China Time + China Standard Time + China Daylight Time + + + + + Choibalsan Time + Choibalsan Standard Time + Choibalsan Summer Time + + + + + Christmas Island Time + + + + + Cocos Islands Time + + + + + Colombia Time + Colombia Standard Time + Colombia Summer Time + + + + + Cook Islands Time + Cook Islands Standard Time + Cook Islands Half Summer Time + + + + + Cuba Time + Cuba Standard Time + Cuba Daylight Time + + + + + Davis Time + + + + + Dumont-d’Urville Time + + + + + East Timor Time + + + + + Easter Island Time + Easter Island Standard Time + Easter Island Summer Time + + + + + Ecuador Time + + + + + Central European Time + Central European Standard Time + Central European Summer Time + + + + + Eastern European Time + Eastern European Standard Time + Eastern European Summer Time + + + + + Western European Time + Western European Standard Time + Western European Summer Time + + + + + Falkland Islands Time + Falkland Islands Standard Time + Falkland Islands Summer Time + + + + + Fiji Time + Fiji Standard Time + Fiji Summer Time + + + + + French Guiana Time + + + + + French Southern and Antarctic Time + + + + + Galapagos Time + + + + + Gambier Time + + + + + Georgia Time + Georgia Standard Time + Georgia Summer Time + + + + + Gilbert Islands Time + + + + + Greenwich Mean Time + + + + + East Greenland Time + East Greenland Standard Time + East Greenland Summer Time + + + + + West Greenland Time + West Greenland Standard Time + West Greenland Summer Time + + + + + Gulf Time + + + + + Guyana Time + + + + + Hawaii-Aleutian Time + Hawaii-Aleutian Standard Time + Hawaii-Aleutian Daylight Time + + + + + Hong Kong Time + Hong Kong Standard Time + Hong Kong Summer Time + + + + + Hovd Time + Hovd Standard Time + Hovd Summer Time + + + + + India Time + + + + + Indian Ocean Time + + + + + Indochina Time + + + + + Central Indonesia Time + + + + + Eastern Indonesia Time + + + + + Western Indonesia Time + + + + + Iran Time + Iran Standard Time + Iran Daylight Time + + + + + Irkutsk Time + Irkutsk Standard Time + Irkutsk Summer Time + + + + + Israel Time + Israel Standard Time + Israel Daylight Time + + + + + Japan Time + Japan Standard Time + Japan Daylight Time + + + + + Oras sa Petropavlovsk-Kamchatski + Standard Time sa Petropavlovsk-Kamchatski + Summer Time sa Petropavlovsk-Kamchatski + + + + + East Kazakhstan Time + + + + + West Kazakhstan Time + + + + + Korean Time + Korean Standard Time + Korean Daylight Time + + + + + Kosrae Time + + + + + Krasnoyarsk Time + Krasnoyarsk Standard Time + Krasnoyarsk Summer Time + + + + + Kyrgystan Time + + + + + Line Islands Time + + + + + Lord Howe Time + Lord Howe Standard Time + Lord Howe Daylight Time + + + + + Macquarie Island Time + + + + + Magadan Time + Magadan Standard Time + Magadan Summer Time + + + + + Malaysia Time + + + + + Maldives Time + + + + + Marquesas Time + + + + + Marshall Islands Time + + + + + Mauritius Time + Mauritius Standard Time + Mauritius Summer Time + + + + + Mawson Time + + + + + Ulan Bator Time + Ulan Bator Standard Time + Ulan Bator Summer Time + + + + + Moscow Time + Moscow Standard Time + Moscow Summer Time + + + + + Myanmar Time + + + + + Nauru Time + + + + + Nepal Time + + + + + New Caledonia Time + New Caledonia Standard Time + New Caledonia Summer Time + + + + + New Zealand Time + New Zealand Standard Time + New Zealand Daylight Time + + + + + Newfoundland Time + Newfoundland Standard Time + Newfoundland Daylight Time + + + + + Niue Time + + + + + Norfolk Island Time + + + + + Fernando de Noronha Time + Fernando de Noronha Standard Time + Fernando de Noronha Summer Time + + + + + Novosibirsk Time + Novosibirsk Standard Time + Novosibirsk Summer Time + + + + + Omsk Time + Omsk Standard Time + Omsk Summer Time + + + + + Pakistan Time + Pakistan Standard Time + Pakistan Summer Time + + + + + Palau Time + + + + + Papua New Guinea Time + + + + + Paraguay Time + Paraguay Standard Time + Paraguay Summer Time + + + + + Peru Time + Peru Standard Time + Peru Summer Time + + + + + Philippine Time + Philippine Standard Time + Philippine Summer Time + + + + + Phoenix Islands Time + + + + + Saint Pierre and Miquelon Time + Saint Pierre and Miquelon Standard Time + Saint Pierre and Miquelon Daylight Time + + + + + Pitcairn Time + + + + + Ponape Time + + + + + Reunion Time + + + + + Rothera Time + + + + + Sakhalin Time + Sakhalin Standard Time + Sakhalin Summer Time + + + + + Oras sa Samara + Standard Time sa Samara + Samara Daylight + + + + + Samoa Time + Samoa Standard Time + Samoa Daylight Time + + + + + Seychelles Time + + + + + Singapore Time + + + + + Solomon Islands Time + + + + + South Georgia Time + + + + + Suriname Time + + + + + Syowa Time + + + + + Tahiti Time + + + + + Taipei Time + Taipei Standard Time + Taipei Daylight Time + + + + + Tajikistan Time + + + + + Tokelau Time + + + + + Tonga Time + Tonga Standard Time + Tonga Summer Time + + + + + Chuuk Time + + + + + Turkmenistan Time + Turkmenistan Standard Time + Turkmenistan Summer Time + + + + + Tuvalu Time + + + + + Uruguay Time + Uruguay Standard Time + Uruguay Summer Time + + + + + Uzbekistan Time + Uzbekistan Standard Time + Uzbekistan Summer Time + + + + + Vanuatu Time + Vanuatu Standard Time + Vanuatu Summer Time + + + + + Venezuela Time + + + + + Vladivostok Time + Vladivostok Standard Time + Vladivostok Summer Time + + + + + Volgograd Time + Volgograd Standard Time + Volgograd Summer Time + + + + + Vostok Time + + + + + Wake Island Time + + + + + Wallis and Futuna Time + + + + + Yakutsk Time + Yakutsk Standard Time + Yakutsk Summer Time + + + + + Yekaterinburg Time + Yekaterinburg Standard Time + Yekaterinburg Summer Time + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 libo + 0 libo + 00 libo + 00 libo + 000 libo + 000 libo + 0 milyon + 0 milyon + 00 milyon + 00 milyon + 000 milyon + 000 milyon + 0 bilyon + 0 bilyon + 00 bilyon + 00 bilyon + 000 bilyon + 000 bilyon + 0 trilyon + 0 trilyon + 00 trilyon + 00 trilyon + 000 trilyon + 000 trilyon + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + United Arab Emirates Dirham + UAE dirham + UAE dirhams + + + Afghan Afghani + Afghan Afghani + Afghan Afghanis + + + Albanian Lek + Albanian lek + Albanian leke + + + Armenian Dram + Armenian dram + Armenian drams + + + Netherlands Antillean Guilder + Netherlands Antillean guilder + Netherlands Antillean guilders + + + Angolan Kwanza + Angolan kwanza + Angolan kwanzas + + + Argentine Peso + Argentine peso + Argentine pesos + + + Australian Dollar + Australian dollar + Australian dollars + A$ + + + Aruban Florin + Aruban florin + Aruban florin + + + Azerbaijani Manat + Azerbaijani manat + Azerbaijani manats + + + Bosnia-Herzegovina Convertible Mark + Bosnia-Herzegovina convertible mark + Bosnia-Herzegovina convertible marks + + + Barbadian Dollar + Barbadian dollar + Barbadian dollars + + + Bangladeshi Taka + Bangladeshi taka + Bangladeshi takas + + + Bulgarian Lev + Bulgarian lev + Bulgarian leva + + + Bahraini Dinar + Bahraini dinar + Bahraini dinars + + + Burundian Franc + Burundian franc + Burundian francs + + + Bermudan Dollar + Bermudan dollar + Bermudan dollars + + + Brunei Dollar + Brunei dollar + Brunei dollars + + + Bolivian Boliviano + Bolivian boliviano + Bolivian bolivianos + + + Brazilian Real + Brazilian real + Brazilian reals + R$ + + + Bahamian Dollar + Bahamian dollar + Bahamian dollars + + + Bhutanese Ngultrum + Bhutanese ngultrum + Bhutanese ngultrums + + + Botswanan Pula + Botswanan pula + Botswanan pulas + + + Belarusian Ruble + Belarusian ruble + Belarusian rubles + + + Belize Dollar + Belize dollar + Belize dollars + + + Canadian Dollar + Canadian dollar + Canadian dollars + CA$ + + + Congolese Franc + Congolese franc + Congolese francs + + + Swiss Franc + Swiss franc + Swiss francs + + + Chilean Peso + Chilean peso + Chilean pesos + + + Chinese Yuan + Chinese yuan + Chinese yuan + CN¥ + + + Colombian Peso + Colombian peso + Colombian pesos + + + Costa Rican Colón + Costa Rican colón + Costa Rican colóns + + + Cuban Convertible Peso + Cuban convertible peso + Cuban convertible pesos + + + Cuban Peso + Cuban peso + Cuban pesos + + + Cape Verdean Escudo + Cape Verdean escudo + Cape Verdean escudos + + + Czech Republic Koruna + Czech Republic koruna + Czech Republic korunas + + + Deutsche Marks + + + Djiboutian Franc + Djiboutian franc + Djiboutian francs + + + Denmark Krone + Danish krone + Danish kroner + + + Dominican Peso + Dominican peso + Dominican pesos + + + Algerian Dinar + Algerian dinar + Algerian dinars + + + Estonian Kroon + + + Egyptian Pound + Egyptian pound + Egyptian pounds + + + Eritrean Nakfa + Eritrean nakfa + Eritrean nakfas + + + Ethiopian Birr + Ethiopian birr + Ethiopian birrs + + + Euro + euro + euros + + + + Fijian Dollar + Fijian dollar + Fijian dollars + + + Falkland Islands Pound + Falkland Islands pound + Falkland Islands pounds + + + French Franc + + + British Pound Sterling + British pound sterling + British pounds sterling + £ + + + Georgian Lari + Georgian lari + Georgian laris + + + Ghanaian Cedi + Ghanaian cedi + Ghanaian CediGhanaian cedis + + + Gibraltar Pound + Gibraltar pound + Gibraltar pounds + + + Gambian Dalasi + Gambian dalasi + Gambian dalasis + + + Guinean Franc + Guinean franc + Guinean francs + + + Guatemalan Quetzal + Guatemalan quetzal + Guatemalan quetzals + + + Guyanaese Dollar + Guyanaese dollar + Guyanaese dollars + + + Hong Kong Dollar + Hong Kong dollar + Hong Kong dollars + HK$ + + + Honduran Lempira + Honduran lempira + Honduran lempiras + + + Croatian Kuna + Croatian kuna + Croatian kunas + + + Haitian Gourde + Haitian gourde + Haitian gourdes + + + Hungarian Forint + Hungarian forint + Hungarian forints + + + Indonesian Rupiah + Indonesian rupiah + Indonesian rupiahs + + + Israeli New Sheqel + Israeli new sheqel + Israeli new sheqels + + + + Indian Rupee + Indian rupee + Indian rupees + + + + Iraqi Dinar + Iraqi dinar + Iraqi dinars + + + Iranian Rial + Iranian rial + Iranian rials + + + Icelandic Króna + Icelandic króna + Icelandic krónur + + + Jamaican Dollar + Jamaican dollar + Jamaican dollars + + + Jordanian Dinar + Jordanian dinar + Jordanian dinars + + + Japanese Yen + Japanese yen + Japanese yen + ¥ + + + Kenyan Shilling + Kenyan shilling + Kenyan shillings + + + Kyrgystani Som + Kyrgystani som + Kyrgystani soms + + + Cambodian Riel + Cambodian riel + Cambodian riels + + + Comorian Franc + Comorian franc + Comorian francs + + + North Korean Won + North Korean won + North Korean won + + + South Korean Won + South Korean won + South Korean won + + + + Kuwaiti Dinar + Kuwaiti dinar + Kuwaiti dinars + + + Cayman Islands Dollar + Cayman Islands dollar + Cayman Islands dollars + + + Kazakhstani Tenge + Kazakhstani tenge + Kazakhstani tenges + + + Laotian Kip + Laotian kip + Laotian kips + + + Lebanese Pound + Lebanese pound + Lebanese pounds + + + Sri Lankan Rupee + Sri Lankan rupee + Sri Lankan rupees + + + Liberian Dollar + Liberian dollar + Liberian dollars + + + Lesotho Loti + + + Lithuanian Litas + Lithuanian litas + Lithuanian litai + + + Latvian Lats + Latvian lats + Latvian lati + + + Libyan Dinar + Libyan dinar + Libyan dinars + + + Moroccan Dirham + Moroccan dirham + Moroccan dirhams + + + Moldovan Leu + Moldovan leu + Moldovan lei + + + Malagasy Ariary + Malagasy Ariary + Malagasy Ariaries + + + Macedonian Denar + Macedonian denar + Macedonian denari + + + Myanmar Kyat + Myanmar kyat + Myanmar kyats + + + Mongolian Tugrik + Mongolian tugrik + Mongolian tugriks + + + Macanese Pataca + Macanese pataca + Macanese patacas + + + Mauritanian Ouguiya + Mauritanian ouguiya + Mauritanian ouguiyas + + + Mauritian Rupee + Mauritian rupee + Mauritian rupees + + + Maldivian Rufiyaa + Maldivian rufiyaa + Maldivian rufiyaas + + + Malawian Kwacha + Malawian Kwacha + Malawian Kwachas + + + Mexican Peso + Mexican peso + Mexican pesos + MX$ + + + Malaysian Ringgit + Malaysian ringgit + Malaysian ringgits + + + Mozambican Metical + Mozambican metical + Mozambican meticals + + + Namibian Dollar + Namibian dollar + Namibian dollars + + + Nigerian Naira + Nigerian naira + Nigerian nairas + + + Nicaraguan Córdoba + Nicaraguan córdoba + Nicaraguan córdobas + + + Norwegian Krone + Norwegian krone + Norwegian kroner + + + Nepalese Rupee + Nepalese rupee + Nepalese rupees + + + New Zealand Dollar + New Zealand dollar + New Zealand dollars + NZ$ + + + Omani Rial + Omani rial + Omani rials + + + Panamanian Balboa + Panamanian balboa + Panamanian balboas + + + Peruvian Nuevo Sol + Peruvian nuevo sol + Peruvian nuevos soles + + + Papua New Guinean Kina + Papua New Guinean kina + Papua New Guinean kina + + + Philippine Peso + Philippine peso + Philippine pesos + + + + Pakistani Rupee + Pakistani rupee + Pakistani rupees + + + Polish Zloty + Polish zloty + Polish zlotys + + + Paraguayan Guarani + Paraguayan guarani + Paraguayan guaranis + + + Qatari Rial + Qatari rial + Qatari rials + + + Romanian Leu + Romanian leu + Romanian lei + + + Serbian Dinar + Serbian dinar + Serbian dinars + + + Russian Ruble + Russian ruble + Russian rubles + + + Rwandan Franc + Rwandan franc + Rwandan francs + + + Saudi Riyal + Saudi riyal + Saudi riyals + + + Solomon Islands Dollar + Solomon Islands dollar + Solomon Islands dollars + + + Seychellois Rupee + Seychellois rupee + Seychellois rupees + + + Sudanese Pound + Sudanese pound + Sudanese pounds + + + Swedish Krona + Swedish krona + Swedish kronor + + + Singapore Dollar + Singapore dollar + Singapore dollars + + + Saint Helena Pound + Saint Helena pound + Saint Helena pounds + + + Slovenian Tolar + + + Slovak Koruna + + + Sierra Leonean Leone + Sierra Leonean leone + Sierra Leonean leones + + + Somali Shilling + Somali shilling + Somali shillings + + + Surinamese Dollar + Surinamese dollar + Surinamese dollars + + + South Sudanese Pound + South Sudanese pound + South Sudanese pounds + + + Sao Tome and Principe Dobra + Sao Tome and Principe dobra + Sao Tome and Principe dobras + + + Syrian Pound + Syrian pound + Syrian pounds + + + Swazi Lilangeni + Swazi lilangeni + Swazi emalangeni + + + Thai Baht + Thai baht + Thai baht + ฿ + + + Tajikistani Somoni + Tajikistani somoni + Tajikistani somonis + + + Turkmenistani Manat + Turkmenistani manat + Turkmenistani manat + + + Tunisian Dinar + Tunisian dinar + Tunisian dinars + + + Tongan Paʻanga + Tongan paʻanga + Tongan paʻanga + + + Turkish Lira + Turkish lira + Turkish Lira + + + Trinidad and Tobago Dollar + Trinidad and Tobago dollar + Trinidad and Tobago dollars + + + New Taiwan Dollar + New Taiwan dollar + New Taiwan dollars + NT$ + + + Tanzanian Shilling + Tanzanian shilling + Tanzanian shillings + + + Ukrainian Hryvnia + Ukrainian hryvnia + Ukrainian hryvnias + + + Ugandan Shilling + Ugandan shilling + Ugandan shillings + + + US Dollar + US dollar + US dollars + $ + + + Uruguayan Peso + Uruguayan peso + Uruguayan pesos + + + Uzbekistan Som + Uzbekistan som + Uzbekistan som + + + Venezuelan Bolívar (1871–2008) + + + Venezuelan Bolívar + Venezuelan bolívar + Venezuelan bolívars + + + Vietnamese Dong + Vietnamese dong + Vietnamese dong + + + + Vanuatu Vatu + Vanuatu vatu + Vanuatu vatus + + + Samoan Tala + Samoan tala + Samoan tala + + + CFA Franc BEAC + CFA franc BEAC + CFA francs BEAC + FCFA + + + East Caribbean Dollar + East Caribbean dollar + East Caribbean dollars + EC$ + + + CFA Franc BCEAO + CFA franc BCEAO + CFA francs BCEAO + CFA + + + CFP Franc + CFP franc + CFP francs + CFPF + + + Hindi Kilalang Pera + (hindi kilalang uri ng pera) + (hindi kilalang pera) + + + Yemeni Rial + Yemeni rial + Yemeni rials + + + South African Rand + South African rand + South African rand + + + Zambian Kwacha (1968–2012) + + + Zambian Kwacha + Zambian kwacha + Zambian kwachas + + + + {0}+ + {0}-{1} + + + + + + {0} bawat {1} + + + {0} g-force + {0} g-force + + + {0} minute + {0} minutes + + + {0} second + {0} seconds + + + {0} degree + {0} degrees + + + {0} acre + {0} acres + + + {0} ektarya + {0} ektarya + + + {0} square foot + {0} square feet + + + {0} square kilometer + {0} square kilometer + + + {0} square meter + {0} square meter + + + {0} square mile + {0} square miles + + + {0} araw + {0} araw + + + {0} oras + {0} oras + + + {0} millisecond + {0} millisecond + + + {0} minuto + {0} minuto + + + {0} buwan + {0} buwan + + + {0} segundo + {0} segundo + + + {0} linggo + {0} linggo + + + {0} taon + {0} taon + + + {0} sentimetro + {0} sentimetro + + + {0} talampakan + {0} talampakan + + + {0} pulgada + {0} pulgada + + + {0} kilometro + {0} kilometro + + + {0} light year + {0} light year + + + {0} metro + {0} metro + + + {0} milya + {0} milya + + + {0} milimetro + {0} milimetro + + + {0} picometer + {0} picometer + + + {0} yarda + {0} yarda + + + {0} gramo + {0} gramo + + + {0} kilo + {0} kilo + + + {0} ounce + {0} ounce + + + {0} pound + {0} pound + + + {0} horsepower + {0} horsepower + + + {0} kilowatt + {0} kilowatts + + + {0} watt + {0} watts + + + {0} hectopascal + {0} hectopascal + + + {0} inch of mercury + {0} inch of mercury + + + {0} millibar + {0} millibar + + + {0} kilometer per hour + {0} kilometers per hour + + + {0} meter per second + {0} meters per second + + + {0} mile per hour + {0} miles per hour + + + {0} degree Celsius + {0} degrees Celsius + + + {0} degree Fahrenheit + {0} degrees Fahrenheit + + + {0} cubic kilometer + {0} cubic kilometers + + + {0} cubic mile + {0} cubic miles + + + {0} litro + {0} litro + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} sec + {0} secs + + + {0} deg + {0} deg + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} sq ft + {0} sq ft + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} sq mi + {0} sq mi + + + {0} araw + {0} araw + + + {0} hr + {0} hrs + + + {0} ms + {0} ms + + + {0} min + {0} mins + + + {0} mth + {0} mths + + + {0} sec + {0} secs + + + {0} wk + {0} wks + + + {0} yr + {0} yrs + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} ly + {0} ly + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} kph + {0} kph + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ac + {0}ac + + + {0}ha + {0}ha + + + {0}ft² + {0}ft² + + + {0}km² + {0}km² + + + {0} m² + {0} m² + + + {0}mi² + {0}mi² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}w + {0}w + + + {0}y + {0}y + + + {0}cm + {0}cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}km + {0}km + + + {0}ly + {0}ly + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}oz + {0}oz + + + {0}# + {0}# + + + {0}hp + {0}hp + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + + + {0}mb + {0}mb + + + {0}kph + {0}kph + + + {0}m/s + {0}m/s + + + {0}mph + {0}mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0}l + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, and {1} + {0} at {1} + + + {0}, {1} + {0}, {1} + {0}, and {1} + {0} at {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + oo:o + hindi:h + + + + diff --git a/library/Zend/Locale/Data/fil_PH.xml b/library/Zend/Locale/Data/fil_PH.xml new file mode 100755 index 000000000..ed2424c07 --- /dev/null +++ b/library/Zend/Locale/Data/fil_PH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fo.xml b/library/Zend/Locale/Data/fo.xml new file mode 100755 index 000000000..07dc52602 --- /dev/null +++ b/library/Zend/Locale/Data/fo.xml @@ -0,0 +1,1686 @@ + + + + + + + + + + + + abkhaziskt + afríska + amhariskt + arabiskt + assamesiskt + asu (Tanzania) + aymara + azerbaijaniskt + hvitarussiskt + bemba + bena (Tanzania) + bulgarskt + bambara + bengaliskt + tibetanskt + bretonskt + bosniskt + bakossi + katalanskt + kekkiskt + valisiskt + danskt + týskt + divehi + dzongkha + kiembu + efik + grikiskt + enskt + esperanto + spanskt + estlendskt + baskiskt + persiskt + finskt + filipiniskt + fidjianskt + føroyskt + franskt + vestfrisikt + írskt + skotskt gæliskt + galisiskt + guarani + gujariti + haussa + hawaiianskt + hebraiskt + hindi + kroatiskt + haitiskt + ungarskt + armenskt + interlingua + indonesiskt + interlingue + igbo + íslendskt + italskt + japanskt + javanesiskt + georgiskt + kapverdiskt + kazakiskt + kambodjanskt + kannada + koreanskt + kashmiriskt + kurdiskt + kirgisikt + latín + lahnda + luxemburgiskt + lingala + laotiskt + litavskt + olulujia + latviskt + malagasiskt + maoriskt + makedonskt + malayalam + mongoliskt + marathiskt + malajiskt + maltesiskt + burmesiskt + norskt bokmál + nepalskt + hollendskt + nýnorskt + norskt + nyanja + occitan + oriya + ossetiskt + punjabiskt + polskt + afghanskt + portugisiskt + quechua + romansh + rundi + romanskt + russiskt + ruanda + sanskrit + sindhi + sango + serbokroatiskt + sinhalesiskt + slovakiskt + slovenskt + samoiskt + shona + somaliskt + albanskt + serbiskt + swatiskt + sesotho + sundanesiskt + svenskt + swahili + shimaoré + tamilskt + telugiskt + tetum + tajikiskt + thailendskt + tigrinya + turkmenskt + tagalog + klingonskt + tswana + tonganskt + tok pisin + turkiskt + tsonga + tatariskt + twi + tahitiskt + uighur + ukrainskt + ukjent mál + urdu + uzbekiskt + venda + vietnamesiskt + wolof + xhosa + jiddiskt + yoruba + kantonesískt + kinesiskt + sulu + + + + + + heimur + Africa + Norðuramerika + Suðuramerika + Kyrrahavsoyggjarnar + Vesturafrika + Sentralamerika + Eysturafrika + Norðurafrika + Miðafrika + Suður Afrika + Amerika + Amerika norður Meksiko + Karibia + Eysturasia + Suðurasia + Suðureysturasia + Suðurevropa + Avstralia og Nýsæland + Melanesia + Mikronesiske regionen + Polynesia + Asia + Sentralasia + Vesturasia + Evropa + Eysturevropa + Norðurevropa + Vesturevropa + Latínamerika + Ascensionoyggjin + Andorra + Sameindu Emirríkini + Afganistan + Antigua og Barbuda + Anguilla + Albania + Armenia + Niðurlendsku Antilloyggjarnar + Angola + Antarktis + Argentina + Amerikanska Sámoa + Eysturríki + Avstralia + Aruba + Áland + Aserbajdsjan + Bosnia-Hersegovina + Barbados + Bangladesj + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Niðurlonds Karibia + Brasilia + Bahamas + Butan + Bouvetoyggjin + Botsvana + Hvítarussland + Belis + Kanada + Kokosoyggjarnar + Kongo-Kinshasa + Miðafrikalýðveldið + Kongo + Kongo-Brazzaville + Sveis + Fílabeinsstrondin + Cooksoyggjarnar + Kili + Kamerun + Kina + Kolombia + Clippertonoyggjin + Kosta Rika + Kuba + Grønhøvdaoyggjarnar + Curaçao + Jólaoyggjin + Kýpros + Kekkia + Týskland + Diego Garcia + Djibouti + Danmørk + Dominika + Domingo lýðveldið + Algeria + Ceuta og Melilla + Ekvador + Estland + Egyptaland + Vestursahara + Eritrea + Spania + Etiopia + Evropasamveldið + Finnland + Fiji + Falklandsoyggjarnar + Mikronesia + Føroyar + Frakland + Gabon + Stóra Bretland + Stóra Bretland + Grenada + Georgia + Fransk Gujana + Guernsey + Ghana + Gibraltar + Grønland + Gambia + Guinea + Guadeloupe + Ekvator Guinea + Grikkaland + Suðurgeorgia + Guatemala + Guam + Guinea Bissau + Gujana + Hongkong + Hongkong + Heard- og McDonald-oyggjarnar + Honduras + Kroatia + Haiti + Ungarn + Kanaríoyggjarnar + Indonesia + Írland + Ísrael + Mann + India + Bretsku Indiahavsoyggjarnar + Irak + Iran + Ísland + Italia + Jersey + Jameika + Jordania + Japan + Kenja + Kirgisia + Kambodja + Kiribati + Komorooyggjarnar + Saint Kitts og Nevis + Norður-Korea + Suður-Korea + Kuvait + Caymanoyggjarnar + Kasakstan + Laos + Libanon + Saint Lusia + Liktenstein + Sri Lanka + Liberia + Lesoto + Litava + Luksemborg + Lettland + Libya + Marokko + Monako + Moldova + Montenegro + Fransk Saint Martin + Madagaskar + Marshalloyggjarnar + Makedónia + Mali + Burma + Mongolia + Makao + Makao + Norðurmarianoyggjarnar + Martinique + Móritania + Montserrat + Malta + Móritius + Maldivuoyggjarnar + Malavi + Meksiko + Maleisia + Mosambik + Namibia + Ný-Kaledonia + Niger + Norfolkoyggjin + Nigeria + Nikaragua + Niðurlond + Noreg + Nepal + Nauru + Niue + Ný Sæland + Oman + Panama + Perú + Franska Polynesia + Papua Nýguinea + Filipsoyggjar + Pakistan + Pólland + Saint Pierre og Miquelon + Pitcairn + Puerto Rico + Palestinskt territorium + Palestina + Portugal + Palau + Paraguei + Katar + Réunion + Rumenia + Serbia + Russland + Ruanda + Saudi-Arábia + Sálomonoyggjarnar + Seyskelloyggjarnar + Norðursudan + Svøríki + Singapor + Saint Helena + Slovenia + Svalbard og Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Suðursudan + Sao Tome og Prinsipi + El Salvador + Niðurlonds Saint Martin + Syria + Svasiland + Tristan da Cunha + Turks- og Caicosoyggjarnar + Kjad + Togo + Teiland + Tadsjikistan + Tokelau + Eystur-Timor + Turkmenistan + Tunesia + Tonga + Turkaland + Trinidad og Tobago + Tuvalu + Teivan + Tansania + Ukreina + Uganda + Sambandsríki Amerika + USA + Uruguei + Usbekistan + Vatikan + Saint Vinsent og Grenadinoyggjar + Venesuela + Stóra Bretlands Jómfrúoyggjarnar + Sambandsríki Amerikas Jómfrúoyggjarnar + Vietnam + Vanuatu + Wallis og Futuna + Sámoa + Kosovo + Jemen + Mayotte + Suðurafrikalýðveldið + Sambia + Simbabvi + (ukendt område) + + + monotonísk + pinyin + polytonísk + Wade-Giles + + + röðina fyrir fjöltyngi evrópskum skjölum + + + SI-einingar + GB-einingar + USA-einingar + + + + [a á b d ð e f g h i í j k l m n o ó p r s t u ú v x y ý æ ø] + [c q w z] + [A Á B C D Ð E F G H I Í J K L M N O Ó P Q R S T U Ú V W X Y Ý Z Æ Ø] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + d. MMM y G + + + + + dd-MM-y G + + + + + dd-MM-yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M-d + E, M-d + LLL + MMM d + E MMM d + mm:ss + y + y-MM + y-MM-dd + E, y-MM-dd + y MMM + y MMM d + E, y MMM d + y QQQ + y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM-dd – dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + LLL–LLL + + + MM-d – d + MM-d – MM-d + + + E, MM-d – E, MM-d + E, MM-d – E, MM-d + + + y–y + + + y-MM – MM + y-MM – y-MM + + + y-MM-dd – dd + y-MM-dd – MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + y-MM-d – d + y-MM-dd – MM-d + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + + + + + + + jan + feb + mar + apr + mai + jun + jul + aug + sep + okt + nov + des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januar + februar + mars + apríl + mai + juni + juli + august + september + oktober + november + desember + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + sun + mán + týs + mik + hós + frí + ley + + + su + + + mi + + fr + le + + + sunnudagur + mánadagur + týsdagur + mikudagur + hósdagur + fríggjadagur + leygardagur + + + + + S + M + T + M + H + F + L + + + su + + + mi + + fr + le + + + + + + + K1 + K2 + K3 + K4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + 1 + 2 + 3 + 4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + + + f.p. + s.p. + + + um fyrrapartur + um seinnapartur + + + + + fyrrapartur + seinnapartur + + + + + + fyrir Krist + fyrir látlaus tímatal + eftir Krist + látlaus tímatal + + + f.Kr. + f.l.t. + e.Kr. + l.t. + + + fKr + flt + eKr + lt + + + + + + EEEE dd MMMM y + + + + + d. MMM y + + + + + dd-MM-y + + + + + dd-MM-yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M-d + E, M-d + LLL + MMM d + E MMM d + mm:ss + y + y-MM + y-MM-dd + E, y-MM-dd + y MMM + y MMM d + E, y MMM d + y QQQ + y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM-dd – dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + LLL–LLL + + + MM-d – d + MM-d – MM-d + + + E, MM-d – E, MM-d + E, MM-d – E, MM-d + + + y–y + + + y-MM – MM + y-MM – y-MM + + + y-MM-dd – dd + y-MM-dd – MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + y-MM-d – d + y-MM-dd – MM-d + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + + + + + + tímabil + + + ár + síðstu ár + hetta ár + næstu ár + + + mánuður + síðstu mánuður + henda mánuður + næstu mánuður + + + vika + síðstu vika + henda viku + næstu vika + + + dagur + í fyrradag + í gær + í dag + á morgunn + á yfirmorgunn + + + vikudagur + + + sunnudagu síðstu vika + sunnudagu henda viku + sunnudagu næstu vika + + + mánadagur síðstu vika + mánadagur henda viku + mánadagur næstu vika + + + týsdagur síðstu vika + týsdagur henda viku + týsdagur næstu vika + + + mikudagur síðstu vika + mikudagur henda viku + mikudagur næstu vika + + + hósdagur síðstu vika + hósdagur henda viku + hósdagur næstu vika + + + fríggjadagur síðstu vika + fríggjadagur henda viku + fríggjadagur næstu vika + + + leygardagur síðstu vika + leygardagur henda viku + leygardagur næstu vika + + + samdøgurperiode + + + klukkustund + + + mínúta + + + sekund + + + tímabelti + + + + + + , + . + ; + % + + + + ×10^ + + + ¤¤¤ + + + + + #,##0.### + + + + + 0 tusind + 0 tusind + 00 tusind + 00 tusind + 000 tusind + 000 tusind + 0 million + 0 millioner + 00 million + 00 millioner + 000 million + 000 millioner + 0 milliard + 0 milliarder + 00 milliard + 00 milliarder + 000 milliard + 000 milliarder + 0 billion + 0 billioner + 00 billion + 00 billioner + 000 billion + 000 billioner + + + + + 0 td + 0 td + 00 td + 00 td + 000 td + 000 td + 0 mn + 0 mn + 00 mn + 00 mn + 000 mn + 000 mn + 0 md + 0 md + 00 md + 00 md + 000 md + 000 md + 0 bn + 0 bn + 00 bn + 00 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + ¤#,##0.00;¤-#,##0.00 + + + {0} {1} + {0} {1} + + + + donsk króna + donsk króna + donska krónur + kr + + + euro + euro + euro + + + íslendsk króna + íslendsk króna + íslendska krónur + + + norsk króna + norsk króna + norska krónur + + + svensk króna + svensk króna + svenska krónur + + + unse sølv + unse sølv + unse sølv + + + unse guld + unse guld + unse guld + + + unse palladium + unse palladium + unse palladium + + + unse platin + unse platin + unse platin + + + + + + + {0} á {1} + + + {0} tyngdakraft Jørðin + {0} tyngdakraft Jørðin + + + {0} bueminutt + {0} bueminuttir + + + {0} buesekund + {0} buesekundir + + + {0} grad + {0} gradir + + + {0} hektar + {0} hektar + + + {0} samdøgur + {0} samdøgur + + + {0} tími + {0} tímar + + + {0} millisekund + {0} millissekundir + + + {0} minuttur + {0} minuttir + + + {0} mánadur + {0} mánaðir + + + {0} sekund + {0} sekundir + + + {0} vika + {0} vikur + + + {0} ár + {0} ára + + + {0} sentimeter + {0} sentimeter + + + {0} kilometer + {0} kilometer + + + {0} meter + {0} meter + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} hektopascal + {0} hektopascal + + + {0} millibar + {0} millibar + + + {0} grad Celsius + {0} gradir Celsius + + + {0} grad Fahrenheit + {0} gradir Fahrenheit + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ha + {0} ha + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mán + {0} mán + + + {0} s + {0} s + + + {0} v + {0} v + + + {0} á + {0} á + + + {0} cm + {0} cm + + + {0} km + {0} km + + + {0} m + {0} m + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ha + {0}ha + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}v + {0}v + + + {0}á + {0}á + + + {0}cm + {0}cm + + + {0}km + {0}km + + + {0}m + {0}m + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + já:j + nei:n + + + + diff --git a/library/Zend/Locale/Data/fo_FO.xml b/library/Zend/Locale/Data/fo_FO.xml new file mode 100755 index 000000000..016c1bf9e --- /dev/null +++ b/library/Zend/Locale/Data/fo_FO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr.xml b/library/Zend/Locale/Data/fr.xml new file mode 100755 index 000000000..229689f43 --- /dev/null +++ b/library/Zend/Locale/Data/fr.xml @@ -0,0 +1,6771 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0} : {1} + + + afar + abkhaze + aceh + acoli + adangme + adyghéen + avestique + afrikaans + afrihili + aghem + aïnou + akan + akkadien + aléoute + altaï du Sud + amharique + aragonais + ancien anglais + angika + arabe + arabe standard moderne + araméen + araukan + arapaho + arawak + assamais + assou + asturien + avar + awadhi + aymara + azéri + azéri + bachkir + baloutchi + balinais + bassa + bamoun + ghomala + biélorusse + bedja + bemba + béna + bafut + bulgare + bhojpuri + bichelamar + bikol + bini + kom + siksika + bambara + bengali + tibétain + breton + braj + bodo + bosniaque + akoose + bouriate + bugi + boulou + blin + medumba + catalan + caddo + caribe + cayuga + atsam + tchétchène + cebuano + kiga + chamorro + chibcha + tchaghataï + chuuk + mari + jargon chinook + choctaw + chipewyan + cherokee + cheyenne + sorani + corse + copte + cree + turc de Crimée + tchèque + kachoube + slavon d’église + tchouvache + gallois + danois + dakota + dargwa + taita + allemand + allemand autrichien + allemand suisse + delaware + slavey + dogrib + dinka + zarma + dogri + bas-sorabe + douala + moyen néerlandais + maldivien + diola-fogny + dioula + dzongkha + dazaga + embou + éwé + efik + égyptien ancien + ekajuk + grec + élamite + anglais + anglais australien + anglais canadien + anglais britannique + anglais (R.-U.) + anglais américain + anglais (É.-U.) + moyen anglais + espéranto + espagnol + espagnol latino-américain + espagnol d’Europe + espagnol mexicain + estonien + basque + éwondo + persan + fang + fanti + peul + finnois + filipino + fidjien + féroïen + fon + français + français canadien + français suisse + moyen français + ancien français + frison du Nord + frison oriental + frioulan + frison occidental + irlandais + ga + gayo + gbaya + gaélique écossais + guèze + gilbertais + galicien + moyen haut-allemand + guarani + ancien haut allemand + gondi + gorontalo + gotique + grebo + grec ancien + alémanique + gujarati + gusii + manx + gwichʼin + haoussa + haida + hawaïen + hébreu + hindi + hiligaynon + hittite + hmong + hiri motu + croate + haut-sorabe + haïtien + hongrois + hupa + arménien + héréro + interlingua + iban + ibibio + indonésien + interlingue + igbo + yi de Sichuan + inupiaq + ilokano + ingouche + ido + islandais + italien + inuktitut + japonais + lojban + ngomba + machame + judéo-persan + judéo-arabe + javanais + géorgien + karakalpak + kabyle + kachin + jju + kamba + kawi + kabardin + kanembou + tyap + makonde + capverdien + koro + kongo + khasi + khotanais + koyra chiini + kikuyu + kuanyama + kazakh + kako + groenlandais + kalenjin + khmer + kiMboundou + kannada + coréen + konkani + kusaien + kpellé + kanouri + karatchaï balkar + carélien + kurukh + kashmiri + chambala + bafia + francique ripuaire + kurde + koumyk + kutenai + komi + cornique + kirghize + latin + ladino + langi + lahnda + lamba + luxembourgeois + lezghien + ganda + limbourgeois + lakota + lingala + lao + mongo + lozi + lituanien + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + oluluyia + letton + madurais + mafa + magahi + maithili + makassar + mandingue + masai + maba + moksa + mandar + mendé + merou + créole mauricien + malgache + moyen irlandais + makhuwa-meetto + méta' + marshall + maori + micmac + minangkabau + macédonien + malayalam + mongol + mandchou + manipuri + mohawk + moré + marathe + malais + maltais + mundang + multilingue + creek + mirandais + marwarî + birman + myènè + erzya + nauruan + napolitain + nama + norvégien bokmål + ndébélé du Nord + bas-allemand + népalais + newari + ndonga + nias + niué + néerlandais + flamand + kwasio + norvégien nynorsk + ngiemboon + norvégien + nogaï + vieux norrois + n’ko + ndébélé du Sud + sotho du Nord + nuer + navaho + newarî classique + nyanja + nyamwezi + nyankolé + nyoro + nzema + occitan + ojibwa + oromo + oriya + ossète + osage + turc ottoman + pendjabi + pangasinan + pahlavi + pampangan + papiamento + palau + persan ancien + phénicien + pali + polonais + pohnpei + provençal ancien + pachto + pashto + portugais + portugais brésilien + portugais d’Europe + quechua + rajasthani + rapanui + rarotongien + romanche + roundi + roumain + moldave + rombo + tzigane + racine + russe + valaque + rwanda + rwa + sanskrit + sandawe + iakoute + araméen samaritain + samburu + sasak + santal + ngambay + sangu + sarde + sicilien + écossais + sindhi + sami du Nord + seneca + sena + selkoupe + koyraboro senni + sangho + ancien irlandais + serbo-croate + chleuh + shan + arabe tchadien + cinghalais + sidamo + slovaque + slovène + samoan + sami du Sud + sami de Lule + sami d’Inari + sami skolt + shona + soninké + somali + sogdien + albanais + serbe + sranan tongo + sérère + swati + saho + sesotho + soundanais + sukuma + soussou + sumérien + suédois + swahili + comorien + swahili du Congo + syriaque classique + syriaque + tamoul + télougou + temne + teso + tereno + tetum + tadjik + thaï + tigrigna + tigré + tiv + turkmène + tokelau + tagalog + klingon + tlingit + tamacheq + tswana + tonguien + tonga nyasa + tok pisin + turc + taroko + tsonga + tsimshian + tatar + tumbuka + tuvalu + twi + tasawaq + tahitien + touva + tamazight + oudmourte + ouïghour + ouïgour + ougaritique + ukrainien + umbundu + langue indéterminée + ourdou + ouzbek + vaï + venda + vietnamien + volapuk + vote + vunjo + wallon + walser + walamo + waray + washo + wolof + kalmouk + xhosa + soga + yao + yapois + yangben + yemba + yiddish + yoruba + cantonais + zhuang + zapotèque + symboles Bliss + zenaga + amazighe standard marocain + chinois + chinois simplifié + chinois traditionnel + zoulou + zuni + sans contenu linguistique + zazaki + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Monde + Afrique + Amérique du Nord + Amérique du Sud + Océanie + Afrique occidentale + Amérique centrale + Afrique orientale + Afrique septentrionale + Afrique centrale + Afrique australe + Amériques + Amérique septentrionale + Caraïbes + Asie orientale + Asie du Sud + Asie du Sud-Est + Europe méridionale + Australasie + Mélanésie + région micronésienne + Polynésie + Asie + Asie centrale + Asie occidentale + Europe + Europe orientale + Europe septentrionale + Europe occidentale + Amérique latine + Île de l’Ascension + Andorre + Émirats arabes unis + Afghanistan + Antigua-et-Barbuda + Anguilla + Albanie + Arménie + Antilles néerlandaises + Angola + Antarctique + Argentine + Samoa américaines + Autriche + Australie + Aruba + Îles Åland + Azerbaïdjan + Bosnie-Herzégovine + Barbade + Bangladesh + Belgique + Burkina Faso + Bulgarie + Bahreïn + Burundi + Bénin + Saint-Barthélemy + Bermudes + Brunéi Darussalam + Bolivie + Pays-Bas caribéens + Brésil + Bahamas + Bhoutan + Île Bouvet + Botswana + Biélorussie + Belize + Canada + Îles Cocos (Keeling) + Congo-Kinshasa + Congo (RDC) + République centrafricaine + Congo-Brazzaville + République du Congo + Suisse + Côte d’Ivoire + Îles Cook + Chili + Cameroun + Chine + Colombie + Île Clipperton + Costa Rica + Cuba + Cap-Vert + Curaçao + Île Christmas + Chypre + République tchèque + Allemagne + Diego Garcia + Djibouti + Danemark + Dominique + République dominicaine + Algérie + Ceuta et Melilla + Équateur + Estonie + Égypte + Sahara occidental + Érythrée + Espagne + Éthiopie + Union européenne + Finlande + Fidji + Îles Malouines + États fédérés de Micronésie + Îles Féroé + France + Gabon + Royaume-Uni + R.-U. + Grenade + Géorgie + Guyane française + Guernesey + Ghana + Gibraltar + Groenland + Gambie + Guinée + Guadeloupe + Guinée équatoriale + Grèce + Géorgie du Sud et les Îles Sandwich du Sud + Guatemala + Guam + Guinée-Bissau + Guyana + R.A.S. chinoise de Hong Kong + Hong Kong + Îles Heard et MacDonald + Honduras + Croatie + Haïti + Hongrie + Îles Canaries + Indonésie + Irlande + Israël + Île de Man + Inde + Territoire britannique de l’océan Indien + Irak + Iran + Islande + Italie + Jersey + Jamaïque + Jordanie + Japon + Kenya + Kirghizistan + Cambodge + Kiribati + Comores + Saint-Kitts-et-Nevis + Corée du Nord + Corée du Sud + Koweït + Îles Caïmans + Kazakhstan + Laos + Liban + Sainte-Lucie + Liechtenstein + Sri Lanka + Libéria + Lesotho + Lituanie + Luxembourg + Lettonie + Libye + Maroc + Monaco + Moldavie + Monténégro + Saint-Martin (partie française) + Madagascar + Îles Marshall + Macédoine + Macédoine (ARYM) + Mali + Myanmar + Mongolie + R.A.S. chinoise de Macao + Macao + Îles Mariannes du Nord + Martinique + Mauritanie + Montserrat + Malte + Maurice + Maldives + Malawi + Mexique + Malaisie + Mozambique + Namibie + Nouvelle-Calédonie + Niger + Île Norfolk + Nigéria + Nicaragua + Pays-Bas + Norvège + Népal + Nauru + Niue + Nouvelle-Zélande + Oman + Panama + Pérou + Polynésie française + Papouasie-Nouvelle-Guinée + Philippines + Pakistan + Pologne + Saint-Pierre-et-Miquelon + Pitcairn + Porto Rico + Territoires palestiniens + Palestine + Portugal + Palaos + Paraguay + Qatar + régions éloignées de l’Océanie + La Réunion + Roumanie + Serbie + Russie + Rwanda + Arabie saoudite + Îles Salomon + Seychelles + Soudan + Suède + Singapour + Sainte-Hélène + Slovénie + Svalbard et Jan Mayen + Slovaquie + Sierra Leone + Saint-Marin + Sénégal + Somalie + Suriname + Soudan du Sud + Sao Tomé-et-Principe + El Salvador + Saint-Martin (partie néerlandaise) + Syrie + Swaziland + Tristan da Cunha + Îles Turques-et-Caïques + Tchad + Terres australes françaises + Togo + Thaïlande + Tadjikistan + Tokelau + Timor oriental + Turkménistan + Tunisie + Tonga + Turquie + Trinité-et-Tobago + Tuvalu + Taïwan + Tanzanie + Ukraine + Ouganda + Îles mineures éloignées des États-Unis + États-Unis + É.-U. + Uruguay + Ouzbékistan + État de la Cité du Vatican + Saint-Vincent-et-les Grenadines + Venezuela + Îles Vierges britanniques + Îles Vierges des États-Unis + Vietnam + Vanuatu + Wallis-et-Futuna + Samoa + Kosovo + Yémen + Mayotte + Afrique du Sud + Zambie + Zimbabwe + région indéterminée + + + orthographe allemande traditionnelle + orthographe normalisée de Resia + orthographe allemande de 1996 + françoys de 1606 + françois académique de 1694 + académique de 1959 + romanisation ALA-LC de 1997 + dialecte aluku + arménien oriental + arménien occidental + alphabet latin altaïque unifié + variante hybride bouddhiste + biscayen + dialecte de San Giorgio / Bila + alphabet Bohorič + dialecte boontling + alphabet Dajnko + anglais moderne ancien + alphabet phonétique international + alphabet phonétique ouralique + alphabet phonétique X-SAMPA + romanisation Hepburn + dialecte høgnorsk + variante épique + dialecte jauer + romanisation Jyutping + orthographe commune + orthographe standard + variante classique + dialecte lipovaz de Resia + orthographe russe réformée de 1918 + alphabet Metelko + monotonique + dialecte ndyuka + dialecte de Natisone + dialecte de Gniva / Njiva + volapük moderne + dialecte d’Oseacco / Osojane + dialecte pamaka + orthographe pétrine de 1708 + pinyin + polytonique + informatique + idiome puter + orthographe révisée + volapük classique + dialecte de Resia + standard des Grisons + dialecte saho + anglais standard écossais + dialecte scouse + dialecte de Stolvizza / Solbica + idiome surmiran + idiome sursilvan + idiome sutsilvan + orthographe taraskievica + orthographe unifiée + orthographe révisée unifiée + orthographe de l’Ulster + variante védique + valencien + idiome vallader + Wade-Giles + + + calendrier + Tri ne tenant pas compte des symboles + Tri inversé des caractères accentués + Classement basé sur les majuscules et les minuscules + Tri sensible à la casse + Tri des caractères Kana + ordre de tri + Tri normalisé + Tri numérique + Priorité du tri + devise + nombres + Fuseau horaire + Variante locale + Trier en tant que symboles + Usage privé + + + chiffres arabes + chiffres arabes étendus + chiffres arméniens + chiffres arméniens minuscules + chiffres balinais + chiffres bengalis + Ordre chinois traditionnel - Big5 + chiffres brahmis + calendrier bouddhiste + chiffres chakmas + chiffres chams + Calendrier chinois + Calendrier copte + calendrier dangi + chiffres devanagaris + Ordre du dictionnaire + ordre de tri Unicode par défaut + ordre de tri multilingue européen + chiffres éthiopiens + Calendrier éthiopien + Calendrier éthiopien Amete Alem + Chiffres financiers + chiffres pleine chasse + Ordre chinois simplifié - GB2312 + chiffres géorgiens + calendrier grégorien + chiffres grecs + chiffres grecs minuscules + chiffres goudjarâtîs + chiffres gourmoukhîs + nombres décimaux chinois + chiffres en chinois simplifié + chiffres financiers en chinois simplifié + chiffres en chinois traditionnel + chiffres financiers en chinois traditionnel + chiffres hébreux + Calendrier hébraïque + Tout trier + Calendrier indien + calendrier musulman + calendrier musulman (tabulaire, époque civile) + calendrier musulman (observé, Arabie Saoudite) + calendrier musulman (tabulaire, époque astronomique) + calendrier musulman (calculé, Umm al-Qura) + calendrier ISO 8601 + Calendrier japonais + chiffres javanais + chiffres japonais + chiffres japonais financiers + chiffres kayah li + chiffres khmers + Chiffres en kannada + chiffres lannas horas + chiffres lannas thams + chiffres laotiens + chiffres occidentaux + chiffres lepchas + chiffres limbous + Trier avec les minuscules d'abord + chiffres malayâlams + chiffres mongols + chiffres meitei-mayeks + chiffres birmans + chiffres birmans shans + Chiffres natifs + chiffres n’kos + Trier les caractères accentués normalement + Trier sans ordre lié à la casse + Trier sans tenir compte de la casse + Trier les caractères Kana séparément + Trier sans normalisation + Trier les chiffres individuellement + Trier les symboles + chiffres ol-tchikis + chiffres oriyas + chiffres osmanyas + Calendrier persan + Ordre de l’annuaire + Ordre de tri phonétique + Ordre pinyin + Ne trier que les lettres de base + Trier en tenant compte des caractères accentués, de la casse, de la largeur et des caractères Kana + Ordre réformé + Calendrier républicain chinois + chiffres romains + chiffres romains minuscules + chiffres saurashtras + recherche générique + Rechercher par consonne initiale en hangeul + Trier en tenant compte des caractères accentués + Trier en ignorant les symboles + chiffres sharadas + chiffres sora-sompengs + ordre de tri standard + Ordre des traits + chiffres soundanais + chiffres takris + chiffres néo-taï-luës + chiffres tamouls + chiffres tamouls + chiffres télougous + Trier en tenant compte des caractères accentués, de la casse et de la largeur + chiffres thaïs + chiffres tibétains + Ordre traditionnel + Chiffres traditionnels + Ordre par radical et nombre de traits + Trier avec les majuscules d'abord + Chiffres en vaï + Trier les caractères accentués dans l'ordre inverse + Trier en tenant compte de la casse + Trier les caractères Kana différemment + Trier avec normalisation Unicode + Trier les chiffres par ordre numérique + ordre zhuyin + + + BGN + Numérique + Ton + UNGEGN + Accents + Pleine chasse + Demi-chasse + Jamo + Pinyin + Publication + + + métrique + impérial + américain + + + langue : {0} + écriture : {0} + région : {0} + + + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + + + + [a à â æ b c ç d e é è ê ë f g h i î ï j k l m n o ô œ p q r s t u ù û ü v w x y ÿ z] + [á å ä ã ā ē í ì ī ñ ó ò ö ø ú ǔ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ’ " “ ” « » ( ) \[ \] § @ * / \& # † ‡] + {0}… + … {0} + {0}… {1} + {0}… + … {0} + {0}… {1} + ? + + + « + » + « + » + + + + + + + + ère bouddhiste + + + ère b. + + + E.B. + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + L + d/M + E d/M + LLL + d MMM + E d MMM + y G + + + + + + + + 1yuè + 2yuè + 3yuè + 4yuè + 5yuè + 6yuè + 7yuè + 8yuè + 9yuè + 10yuè + 11yuè + 12yuè + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + zhēngyuè + èryuè + sānyuè + sìyuè + wǔyuè + liùyuè + qīyuè + bāyuè + jiǔyuè + shíyuè + shíyīyuè + shí’èryuè + + + + + 1yuè + 2yuè + 3yuè + 4yuè + 5yuè + 6yuè + 7yuè + 8yuè + 9yuè + 10yuè + 11yuè + 12yuè + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + zhēngyuè + èryuè + sānyuè + sìyuè + wǔyuè + liùyuè + qīyuè + bāyuè + jiǔyuè + shíyuè + shíyīyuè + shí’èryuè + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + + EEEE d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + d/M/y + + + + + + U + MMM U + d MMM U + E d MMM U + L + d/M + E d/M + LLL + d MMM + E d MMM + mm:ss + U + d/M/y + U + M/y + d/M/y + E d/M/y + MMM U + d MMM U + E d MMM U + QQQ U + QQQQ U + + + + + + + + tout + bâb. + hât. + kya. + toub. + amsh. + barma. + barmo. + bash. + ba’o. + abî. + mis. + al-n. + + + T + B + H + K + T + A + B + B + B + B + A + M + N + + + tout + bâbâ + hâtour + kyakh + toubah + amshîr + barmahât + barmoudah + bashans + ba’ounah + abîb + misra + al-nasi + + + + + tout + bâb. + hât. + kya. + toub. + amsh. + barma. + barmo. + bash. + ba’o. + abî. + mis. + al-n. + + + T + B + H + K + T + A + B + B + B + B + A + M + N + + + tout + bâbâ + hâtour + kyakh + toubah + amshîr + barmahât + barmoudah + bashans + ba’ounah + abîb + misra + al-nasi + + + + + + avant Dioclétien + après Dioclétien + + + av. D. + ap. D. + + + + + + + + 1yuè + 2yuè + 3yuè + 4yuè + 5yuè + 6yuè + 7yuè + 8yuè + 9yuè + 10yuè + 11yuè + 12yuè + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + zhēngyuè + èryuè + sānyuè + sìyuè + wǔyuè + liùyuè + qīyuè + bāyuè + jiǔyuè + shíyuè + shíyīyuè + shí’èryuè + + + + + 1yuè + 2yuè + 3yuè + 4yuè + 5yuè + 6yuè + 7yuè + 8yuè + 9yuè + 10yuè + 11yuè + 12yuè + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + zhēngyuè + èryuè + sānyuè + sìyuè + wǔyuè + liùyuè + qīyuè + bāyuè + jiǔyuè + shíyuè + shíyīyuè + shí’èryuè + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + + EEEE d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + d/M/y + + + + + + + + + mäs. + teq. + hed. + tah. + ter + yäk. + mäg. + miy. + gue. + sän. + ham. + näh. + pag. + + + mäskäräm + teqemt + hedar + tahesas + ter + yäkatit + mägabit + miyazya + guenbot + säné + hamlé + nähasé + pagumén + + + + + M + T + H + T + T + Y + M + M + G + S + H + N + P + + + + + + avant l’Incarnation + après l’Incarnation + + + av. Inc. + ap. Inc. + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + {1} 'à' {0} + + + + + {1} 'à' {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + mm:ss + y G + y G + M/y GGGGG + d/M/y GGGGG + E d/M/y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d-d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M–M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + y-y G + + + MM/y – MM/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + dd/MM/y – dd/MM/y G + + + E dd/MM/y – E dd/MM/y G + E dd/MM/y – E dd/MM/y G + E dd/MM/y – E dd/MM/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d–d MMM y G + d MMM – d MMM y G + d MMM y – d MMM y G + + + E d – E d MMM y G + E d MMM – E d MMM y G + E d MMM y – E d MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + + + + janv. + févr. + mars + avr. + mai + juin + juil. + août + sept. + oct. + nov. + déc. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + janvier + février + mars + avril + mai + juin + juillet + août + septembre + octobre + novembre + décembre + + + + + + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + + D + L + M + M + J + V + S + + + di + lu + ma + me + je + ve + sa + + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + + + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + + D + L + M + M + J + V + S + + + dim. + lun. + mar. + mer. + jeu. + ven. + sam. + + + dimanche + lundi + mardi + mercredi + jeudi + vendredi + samedi + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1er trimestre + 2e trimestre + 3e trimestre + 4e trimestre + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1er trimestre + 2e trimestre + 3e trimestre + 4e trimestre + + + + + + + ap.m. + AM + PM + + + ap.-m. + a + matin + soir + midi + p + + + après-midi + AM + matin + soir + midi + PM + + + + + ap.m. + av.m. + ap.m. + + + après-midi + avant-midi + matin + soir + midi + après-midi + + + + + + avant Jésus-Christ + après Jésus-Christ + + + av. J.-C. + AEC + ap. J.-C. + EC + + + av. J.-C. + ap. J.-C. + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH 'h' + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + mm:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d-d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M–M + + + dd/MM – dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + y–y + + + MM/y – MM/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + dd/MM/y – dd/MM/y + + + E dd/MM/y – E dd/MM/y + E dd/MM/y – E dd/MM/y + E dd/MM/y – E dd/MM/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E d – E d MMM y + E d MMM – E d MMM y + E d MMM y – E d MMM y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + + tis. + hes. + kis. + téb. + sché. + ad.I + adar + ad.II + nis. + iyar + siv. + tam. + ab + ell. + + + T + H + K + T + S + A + A + A + N + I + S + T + A + E + + + Tisseri + Hesvan + Kislev + Tébeth + Schébat + Adar I + Adar + Adar II + Nissan + Iyar + Sivan + Tamouz + Ab + Elloul + + + + + tis. + hes. + kis. + téb. + sché. + ad.I + adar + ad.II + nis. + iyar + siv. + tam. + ab + ell. + + + T + H + K + T + S + A + A + A + N + I + S + T + A + E + + + Tisseri + Hesvan + Kislev + Tébeth + Schébat + Adar I + Adar + Adar II + Nissan + Iyar + Sivan + Tamouz + Ab + Elloul + + + + + + Anno Mundi + + + AM + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + + + chai. + vai. + jyai. + āsha. + shrā. + bhā. + āshw. + kār. + mār. + pau. + māgh + phāl. + + + C + V + J + Ā + S + B + Ā + K + M + P + M + P + + + chaitra + vaishākh + jyaishtha + āshādha + shrāvana + bhādrapad + āshwin + kārtik + mārgashīrsha + paush + māgh + phālgun + + + + + chai. + vai. + jyai. + āsha. + shrā. + bhā. + āshw. + kār. + mār. + pau. + māgh + phāl. + + + C + V + J + Ā + S + B + Ā + K + M + P + M + P + + + chaitra + vaishākh + jyaishtha + āshādha + shrāvana + bhādrapad + āshwin + kārtik + mārgashīrsha + paush + māgh + phālgun + + + + + + SAKA + + + + + + + + mouh. + saf. + rab. aw. + rab. th. + joum. oul. + joum. tha. + raj. + chaa. + ram. + chaw. + dhou. q. + dhou. h. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + mouharram + safar + rabia al awal + rabia ath-thani + joumada al oula + joumada ath-thania + rajab + chaabane + ramadan + chawwal + dhou al qi`da + dhou al-hijja + + + + + mouh. + saf. + rab. aw. + rab. th. + joum. ou. + joum. th. + raj. + chaa. + ram. + chaw. + dhou. qi. + dhou. hi. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + mouharram + safar + rabia al awal + rabia ath-thani + joumada al oula + joumada ath-thania + rajab + chaabane + ramadan + chawwal + dhou al qi`da + dhou al-hijja + + + + + + AH + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + dd/MM + E dd/MM + LLL + d MMM + E d MMM + y G + y G + M/y GGGGG + d/M/y GGGGG + E d/M/y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + Meiji + Taishō + Shōwa + Heisei + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d/M + E d/M + LLL + d MMM + E d MMM + y G + y G + M/y GGGGG + d/M/y GGGGG + E d/M/y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + AP + + + + + + + avant RdC + RdC + + + + + + + ère + + + année + l’année dernière + cette année + l’année prochaine + + dans {0} an + dans {0} ans + + + il y a {0} an + il y a {0} ans + + + + mois + le mois dernier + ce mois-ci + le mois prochain + + dans {0} mois + dans {0} mois + + + il y a {0} mois + il y a {0} mois + + + + semaine + la semaine dernière + cette semaine + la semaine prochaine + + dans {0} semaine + dans {0} semaines + + + il y a {0} semaine + il y a {0} semaines + + + + jour + avant-hier + hier + aujourd’hui + demain + après-demain + + dans {0} jour + dans {0} jours + + + il y a {0} jour + il y a {0} jours + + + + jour de la semaine + + + dimanche dernier + ce dimanche + dimanche prochain + + + lundi dernier + ce lundi + lundi prochain + + + mardi dernier + ce mardi + mardi prochain + + + mercredi dernier + ce mercredi + mercredi prochain + + + jeudi dernier + ce jeudi + jeudi prochain + + + vendredi dernier + ce vendredi + vendredi prochain + + + samedi dernier + ce samedi + samedi prochain + + + cadran + + + heure + + dans {0} heure + dans {0} heures + + + il y a {0} heure + il y a {0} heures + + + + minute + + dans {0} minute + dans {0} minutes + + + il y a {0} minute + il y a {0} minutes + + + + seconde + maintenant + + dans {0} seconde + dans {0} secondes + + + il y a {0} seconde + il y a {0} secondes + + + + fuseau horaire + + + + +HH:mm;−HH:mm + UTC{0} + UTC + heure : {0} + {0} (heure d’été) + {0} (heure standard) + {1} ({0}) + + zone inconnue + + + Andorre + + + Dubaï + + + Kaboul + + + Tirana + + + Erevan + + + Showa + + + Dumont d’Urville + + + Río Gallegos + + + Ushuaïa + + + Tucumán + + + Córdoba + + + Vienne + + + Adélaïde + + + Bakou + + + La Barbade + + + Bruxelles + + + Bahreïn + + + Saint-Barthélemy + + + Bermudes + + + Eirunepé + + + Manaos + + + Cuiabá + + + Santarém + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Regina + + + Atikokan + + + Saint-Jean de Terre-Neuve + + + Île de Pâques + + + Kachgar + + + Ürümqi + + + La Havane + + + Cap-Vert + + + Curaçao + + + Nicosie + + + Büsingen + + + Copenhague + + + Dominique + + + Saint-Domingue + + + Alger + + + Galápagos + + + Le Caire + + + Laâyoune + + + Asmara + + + Îles Canaries + + + Addis-Abeba + + + Fidji + + + Chuuk + + + Pohnpei + + + Féroé + + + + heure d’été britannique + + Londres + + + Grenade + + + Tbilissi + + + Guernesey + + + Thulé + + + Nuuk + + + Ittoqqortoormiit + + + Athènes + + + Géorgie du Sud + + + Tégucigalpa + + + Macassar + + + + heure d’été irlandaise + + + + Jérusalem + + + Île de Man + + + Calcutta + + + Bagdad + + + Téhéran + + + Jamaïque + + + Bichkek + + + Comores + + + Saint-Kitts + + + Séoul + + + Koweït + + + Caïmans + + + Aktaou + + + Ouralsk + + + Aktioubinsk + + + Kzyl Orda + + + Alma Ata + + + Beyrouth + + + Sainte-Lucie + + + Tripoli [Libye] + + + Rangoun + + + Oulan-Bator + + + Tchoïbalsan + + + Macao + + + Malte + + + Maurice + + + Mazatlán + + + Bahia de Banderas + + + Mexico + + + Mérida + + + Cancún + + + Nouméa + + + Katmandou + + + Mascate + + + Marquises + + + Manille + + + Varsovie + + + Porto Rico + + + Hébron + + + Açores + + + Madère + + + Lisbonne + + + Asunción + + + La Réunion + + + Bucarest + + + Moscou + + + Ekaterinbourg + + + Novossibirsk + + + Krasnoïarsk + + + Irkoutsk + + + Iakoutsk + + + Sakhaline + + + Kamtchatka + + + Riyad + + + Mahé + + + Singapour + + + Sainte-Hélène + + + Saint-Marin + + + Mogadiscio + + + São Tomé + + + Lower Prince's Quarter + + + Damas + + + N’Djamena + + + Lomé + + + Douchanbé + + + Achgabat + + + Port-d’Espagne + + + Oujgorod + + + Zaporojie + + + Beulah [Dakota du Nord] + + + New Salem [Dakota du Nord] + + + Center [Dakota du Nord] + + + Vincennes [Indiana] + + + Petersburg [Indiana] + + + Tell City [Indiana] + + + Knox [Indiana] + + + Winamac [Indiana] + + + Marengo [Indiana] + + + Vevay [Indiana] + + + Monticello [Kentucky] + + + Détroit + + + Samarcande + + + Tachkent + + + Le Vatican + + + Saint-Vincent + + + Saint-Thomas + + + Hô-Chi-Minh-Ville + + + Éfaté + + + + heure de l’Acre + heure normale de l’Acre + heure avancée de l’Acre + + + + + heure de l’Afghanistan + + + + + heure normale d’Afrique centrale + + + + + heure normale d’Afrique de l’Est + + + + + heure normale d’Afrique méridionale + + + + + heure d’Afrique de l’Ouest + heure normale d’Afrique de l’Ouest + heure avancée d’Afrique de l’Ouest + + + + + heure de l’Alaska + heure normale de l’Alaska + heure avancée de l’Alaska + + + + + heure d’Alma Ata + heure normale d’Alma Ata + heure avancée d’Alma Ata + + + + + heure de l’Amazonie + heure normale de l’Amazonie + heure avancée de l’Amazonie + + + + + heure du centre nord-américain + heure normale du centre nord-américain + heure avancée du Centre + + + + + heure de l’Est nord-américain + heure normale de l’Est nord-américain + heure avancée de l’Est + + + + + heure des Rocheuses + heure normale des Rocheuses + heure avancée des Rocheuses + + + + + heure du Pacifique nord-américain + heure normale du Pacifique nord-américain + heure avancée du Pacifique + + + + + heure d’Anadyr + heure normale d’Anadyr + heure avancée d’Anadyr + + + + + heure d’Aktaou + heure normale d’Aktaou + heure avancée d’Aktaou + + + + + heure d’Aqtöbe + heure normale d’Aqtöbe + heure avancé d’Aqtöbe + + + + + heure de l’Arabie + heure normale de l’Arabie + heure avancée de l’Arabie + + + + + heure de l’Argentine + heure normale d’Argentine + heure avancée de l’Argentine + + + + + heure de l’Ouest argentin + heure normale de l’Ouest argentin + heure avancée de l’Ouest argentin + + + + + heure de l’Arménie + heure normale de l’Arménie + heure avancée d’Arménie + + + + + heure de l’Atlantique + heure normale de l’Atlantique + heure avancée de l’Atlantique + + + + + heure du centre de l’Australie + heure normale du centre de l’Australie + heure avancée du centre de l’Australie + + + + + heure du centre-ouest de l’Australie + heure normale du centre-ouest de l’Australie + heure avancée du centre-ouest de l’Australie + + + + + heure de l’Est de l’Australie + heure normale de l’Est de l’Australie + heure avancée de l’Est de l’Australie + + + + + heure de l’Ouest de l’Australie + heure normale de l’Ouest de l’Australie + heure avancée de l’Ouest de l’Australie + + + + + heure de l’Azerbaïdjan + heure normale de l’Azerbaïdjan + heure avancée d’Azerbaïdjan + + + + + heure des Açores + heure normale des Açores + heure avancée des Açores + + + + + heure du Bangladesh + heure normale du Bangladesh + heure avancée du Bangladesh + + + + + heure du Bhoutan + + + + + heure de Bolivie + + + + + heure de Brasilia + heure normale de Brasilia + heure avancée de Brasilia + + + + + heure du Brunéi + + + + + heure du Cap-Vert + heure normale du Cap-Vert + heure avancée du Cap-Vert + + + + + heure des Chamorro + + + + + heure des îles Chatham + heure normale des Îles Chatham + heure avancée des Îles Chatham + + + + + heure du Chili + heure normale du Chili + heure avancée du Chili + + + + + heure de la Chine + heure normale de la Chine + heure avancée de Chine + + + + + heure de Choibalsan + heure normale de Choibalsan + heure avancée de Choibalsan + + + + + heure de l’île Christmas + + + + + heure des îles Cocos + + + + + heure de Colombie + heure normale de Colombie + heure avancée de Colombie + + + + + heure des îles Cook + heure normale des îles Cook + heure avancée des îles Cook + + + + + heure de Cuba + heure normale de Cuba + heure avancée de Cuba + + + + + heure de Davis + + + + + heure de Dumont-d’Urville + + + + + heure du Timor oriental + + + + + heure de l’île de Pâques + heure normale de l’île de Pâques + heure avancée de l’île de Pâques + + + + + heure de l’Équateur + + + + + heure d’Europe centrale + heure normale d’Europe centrale + heure avancée d’Europe centrale + + + + + heure d’Europe de l’Est + heure normale d’Europe de l’Est + heure avancée d’Europe de l’Est + + + + + heure d’Europe de l’Ouest + heure normale d’Europe de l’Ouest + heure avancée d’Europe de l’Ouest + + + + + heure des îles Malouines + heure normale des îles Malouines + heure avancée des îles Malouines + + + + + heure des îles Fidji + heure normale des îles Fidji + heure avancée des îles Fidji + + + + + heure de la Guyane française + + + + + heure des Terres australes et antarctiques françaises + + + + + heure des îles Galápagos + + + + + heure des îles Gambier + + + + + heure de la Géorgie + heure normale de la Géorgie + heure avancée de Géorgie + + + + + heure des îles Gilbert + + + + + heure moyenne de Greenwich + + + + + heure de l’Est du Groenland + heure normale de l’Est du Groenland + heure avancée de l’Est du Groenland + + + + + heure de l’Ouest du Groenland + heure normale de l’Ouest du Groenland + heure avancée de l’Ouest du Groenland + + + + + heure de Guam + + + + + heure du Golfe + + + + + heure du Guyana + + + + + heure d’Hawaii - Aléoutiennes + heure normale d’Hawaii - Aléoutiennes + heure avancée d’Hawaii - Aléoutiennes + + + + + heure de Hong Kong + heure normale de Hong Kong + heure avancée de Hong Kong + + + + + heure de Hovd + heure normale de Hovd + heure avancée de Hovd + + + + + heure de l’Inde + + + + + heure de l’Océan Indien + + + + + heure d’Indochine + + + + + heure du Centre indonésien + + + + + heure de l’Est indonésien + + + + + heure de l’Ouest indonésien + + + + + heure de l’Iran + heure normale d’Iran + heure avancée d’Iran + + + + + heure d’Irkoutsk + heure normale d’Irkoutsk + heure avancée d’Irkoutsk + + + + + heure d’Israël + heure normale d’Israël + heure avancée d’Israël + + + + + heure du Japon + heure normale du Japon + heure avancée du Japon + + + + + heure de Petropavlovsk-Kamchatski + heure normale de Petropavlovsk-Kamchatski + heure avancée de Petropavlovsk-Kamchatski + + + + + heure de l’Est du Kazakhstan + + + + + heure de l’Ouest du Kazakhstan + + + + + heure de la Corée + heure normale de la Corée + heure avancée de Corée + + + + + heure de Kosrae + + + + + heure de Krasnoïarsk + heure normale de Krasnoïarsk + heure avancée de Krasnoïarsk + + + + + heure du Kirghizistan + + + + + heure des îles de la Ligne + + + + + heure de Lord Howe + heure normale de Lord Howe + heure avancée de Lord Howe + + + + + heure de l’île Macquarie + + + + + heure de Magadan + heure normale de Magadan + heure avancée de Magadan + + + + + heure de la Malaisie + + + + + heure des Maldives + + + + + heure des îles Marquises + + + + + heure des îles Marshall + + + + + heure de Maurice + heure normale de Maurice + heure avancée de Maurice + + + + + heure de Mawson + + + + + heure du Nord-Ouest du Mexique + heure normale du Nord-Ouest du Mexique + heure avancée du Nord-Ouest du Mexique + + + + + heure du Pacifique mexicain + heure normale du Pacifique mexicain + heure avancée du Pacifique mexicain + + + + + heure d’Oulan-Bator + heure normale d’Oulan-Bator + heure avancée d’Oulan-Bator + + + + + heure de Moscou + heure normale de Moscou + heure avancée de Moscou + + + + + heure du Myanmar + + + + + heure de Nauru + + + + + heure du Népal + + + + + heure de la Nouvelle-Calédonie + heure normale de la Nouvelle-Calédonie + heure avancée de Nouvelle-Calédonie + + + + + heure de la Nouvelle-Zélande + heure normale de la Nouvelle-Zélande + heure avancée de la Nouvelle-Zélande + + + + + heure de Terre-Neuve + heure normale de Terre-Neuve + heure avancée de Terre-Neuve + + + + + heure de Nioué + + + + + heure de l’île Norfolk + + + + + heure de Fernando de Noronha + heure normale de Fernando de Noronha + heure avancée de Fernando de Noronha + + + + + heure des îles Mariannes du Nord + + + + + heure de Novossibirsk + heure normale de Novossibirsk + heure avancée de Novossibirsk + + + + + heure de Omsk + heure normale de Omsk + heure avancée de Omsk + + + + + heure du Pakistan + heure normale du Pakistan + heure avancée du Pakistan + + + + + heure des Palaos + + + + + heure de la Papouasie-Nouvelle-Guinée + + + + + heure du Paraguay + heure normale du Paraguay + heure avancée du Paraguay + + + + + heure du Pérou + heure normale du Pérou + heure avancée du Pérou + + + + + heure des Philippines + heure normale des Philippines + heure avancée des Philippines + + + + + heure des îles Phoenix + + + + + heure de Saint-Pierre-et-Miquelon + heure normale de Saint-Pierre-et-Miquelon + heure avancée de Saint-Pierre-et-Miquelon + + + + + heure des îles Pitcairn + + + + + heure de l’île de Pohnpei + + + + + heure de la Réunion + + + + + heure de Rothera + + + + + heure de Sakhaline + heure normale de Sakhaline + heure avancée de Sakhaline + + + + + heure de Samara + heure normale de Samara + heure avancée de Samara + + + + + heure des Samoa + heure normale des Samoa + heure d’été des Samoa + + + + + heure des Seychelles + + + + + heure de Singapour + + + + + heure des îles Salomon + + + + + heure de Géorgie du Sud + + + + + heure du Suriname + + + + + heure de Syowa + + + + + heure de Tahiti + + + + + heure de Taipei + heure normale de Taipei + heure avancée de Taipei + + + + + heure du Tadjikistan + + + + + heure de Tokelau + + + + + heure des Tonga + heure normale des Tonga + heure avancée de Tonga + + + + + heure de Chuuk + + + + + heure du Turkménistan + heure normale du Turkménistan + heure avancée du Turkménistan + + + + + heure des Tuvalu + + + + + heure de l’Uruguay + heure normale de l’Uruguay + heure avancée de l'Uruguay + + + + + heure de l’Ouzbékistan + heure normale de l’Ouzbékistan + heure avancée de l'Ouzbékistan + + + + + heure du Vanuatu + heure normale du Vanuatu + heure avancée de Vanuatu + + + + + heure du Venezuela + + + + + heure de Vladivostok + heure normale de Vladivostok + heure avancée de Vladivostok + + + + + heure de Volgograd + heure normale de Volgograd + heure avancée de Volgograd + + + + + heure de Vostok + + + + + heure de l’île Wake + + + + + heure de Wallis-et-Futuna + + + + + heure de Iakoutsk + heure normale de Iakoutsk + heure avancée de Iakoutsk + + + + + heure d’Ekaterinbourg + heure normale d’Ekaterinbourg + heure avancée d’Ekaterinbourg + + + + + + + , +   + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 millier + 0 mille + 00 millier + 00 mille + 000 millier + 000 mille + 0 million + 0 millions + 00 million + 00 millions + 000 million + 000 millions + 0 milliard + 0 milliards + 00 milliard + 00 milliards + 000 milliards + 000 milliards + 0 billion + 0 billions + 00 billions + 00 billions + 000 billions + 000 billions + + + + + 0 k + 0 k + 00 k + 00 k + 000 k + 000 k + 0 M + 0 M + 00 M + 00 M + 000 M + 000 M + 0 Md + 0 Md + 00 Md + 00 Md + 000 Md + 000 Md + 0 Bn + 0 Bn + 00 Bn + 00 Bn + 000 Bn + 000 Bn + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + + + + peseta andorrane + peseta andorrane + pesetas andorranes + + + dirham des Émirats arabes unis + dirham des Émirats arabes unis + dirhams des Émirats arabes unis + + + afghani (1927–2002) + afghani (1927–2002) + afghanis (1927–2002) + + + afghani afghan + afghani afghan + afghanis afghan + + + lek albanais (1947–1961) + lek albanais (1947–1961) + leks albanais (1947–1961) + + + lek albanais + lek albanais + leks albanais + + + dram arménien + dram arménien + drams arméniens + + + florin antillais + florin antillais + florins antillais + + + kwanza angolais + kwanza angolais + kwanzas angolais + + + kwanza angolais (1977–1990) + kwanza angolais (1977–1990) + kwanzas angolais (1977–1990) + + + nouveau kwanza angolais (1990–2000) + nouveau kwanza angolais (1990–2000) + nouveaux kwanzas angolais (1990–2000) + + + kwanza angolais réajusté (1995–1999) + kwanza angolais réajusté (1995–1999) + kwanzas angolais réajustés (1995–1999) + + + austral argentin + austral argentin + australs argentins + + + peso lourd argentin (1970–1983) + peso lourd argentin (1970–1983) + pesos lourds argentins (1970–1983) + + + peso argentin (1881–1970) + peso argentin (1881–1970) + pesos argentins (1881–1970) + + + peso argentin (1983–1985) + peso argentin (1983–1985) + pesos argentins (1983–1985) + + + peso argentin + peso argentin + pesos argentins + $AR + + + schilling autrichien + schilling autrichien + schillings autrichiens + + + dollar australien + dollar australien + dollars australiens + $AU + + + florin arubais + florin arubais + florins arubais + + + manat azéri (1993–2006) + manat azéri (1993–2006) + manats azéris (1993–2006) + + + manat azéri + manat azéri + manats azéris + + + dinar bosniaque + dinar bosniaque + dinars bosniaques + + + mark convertible bosniaque + mark convertible bosniaque + marks convertibles bosniaques + + + dollar barbadien + dollar barbadien + dollars barbadiens + + + taka bangladeshi + taka bangladeshi + takas bangladeshis + + + franc belge (convertible) + franc belge (convertible) + francs belges (convertibles) + + + franc belge + franc belge + francs belges + FB + + + franc belge (financier) + franc belge (financier) + francs belges (financiers) + + + lev bulgare (1962–1999) + lev bulgare (1962–1999) + levs bulgares (1962–1999) + + + lev bulgare + lev bulgare + levs bulgares + + + dinar bahreïni + dinar bahreïni + dinars bahreïnis + + + franc burundais + franc burundais + francs burundais + + + dollar bermudien + dollar bermudien + dollars bermudiens + $BM + + + dollar brunéien + dollar brunéien + dollars brunéiens + $BN + + + boliviano bolivien + boliviano bolivien + bolivianos boliviens + + + boliviano bolivien (1863–1963) + boliviano bolivien (1863–1963) + bolivianos boliviens (1863–1963) + + + peso bolivien + peso bolivien + pesos boliviens + + + mvdol bolivien + mvdol bolivien + mvdols boliviens + + + nouveau cruzeiro brésilien (1967–1986) + nouveau cruzeiro brésilien (1967–1986) + nouveaux cruzeiros brésiliens (1967–1986) + + + cruzado brésilien (1986–1989) + cruzado brésilien (1986–1989) + cruzados brésiliens (1986–1989) + + + cruzeiro brésilien (1990–1993) + cruzeiro brésilien (1990–1993) + cruzeiros brésiliens (1990–1993) + + + réal brésilien + réal brésilien + réals brésiliens + + + nouveau cruzado + nouveau cruzado brésilien (1989–1990) + nouveaux cruzados brésiliens (1989–1990) + + + cruzeiro + cruzeiro réal brésilien (1993–1994) + cruzeiros réals brésiliens (1993–1994) + + + cruzeiro brésilien (1942–1967) + cruzeiro brésilien (1942–1967) + cruzeiros brésiliens (1942–1967) + + + dollar bahaméen + dollar bahaméen + dollars bahaméens + $BS + + + ngultrum bouthanais + ngultrum bouthanais + ngultrums bouthanais + + + kyat birman + kyat birman + kyats birmans + + + pula botswanais + pula botswanais + pulas botswanais + + + nouveau rouble biélorusse (1994–1999) + nouveau rouble biélorusse (1994–1999) + nouveaux roubles biélorusses (1994–1999) + + + rouble biélorusse + rouble biélorusse + roubles biélorusses + + + dollar bélizéen + dollar bélizéen + dollars bélizéens + $BZ + + + dollar canadien + dollar canadien + dollars canadiens + $CA + + + franc congolais + franc congolais + francs congolais + + + euro WIR + euro WIR + euros WIR + + + franc suisse + franc suisse + francs suisses + + + franc WIR + franc WIR + francs WIR + + + escudo chilien + escudo chilien + escudos chiliens + + + unité d’investissement chilienne + unité d’investissement chilienne + unités d’investissement chiliennes + + + peso chilien + peso chilien + pesos chiliens + $CL + + + yuan renminbi chinois + yuan renminbi chinois + yuans renminbi chinois + ¥CN + + + peso colombien + peso colombien + pesos colombiens + $CO + + + unité de valeur réelle colombienne + unité de valeur réelle colombienne + unités de valeur réelle colombiennes + + + colón costaricain + colón costaricain + colóns costaricains + + + dinar serbo-monténégrin + dinar serbo-monténégrin + dinars serbo-monténégrins + + + couronne forte tchécoslovaque + couronne forte tchécoslovaque + couronnes fortes tchécoslovaques + + + peso cubain convertible + peso cubain convertible + pesos cubains convertibles + + + peso cubain + peso cubain + pesos cubains + + + escudo capverdien + escudo capverdien + escudos capverdiens + $CV + + + livre chypriote + livre chypriote + livres chypriotes + £CY + + + couronne tchèque + couronne tchèque + couronnes tchèques + + + mark est-allemand + mark est-allemand + marks est-allemands + + + mark allemand + mark allemand + marks allemands + + + franc djiboutien + franc djiboutien + francs djiboutiens + + + couronne danoise + couronne danoise + couronnes danoises + + + peso dominicain + peso dominicain + pesos dominicains + + + dinar algérien + dinar algérien + dinars algériens + + + sucre équatorien + sucre équatorien + sucres équatoriens + + + unité de valeur constante équatoriale (UVC) + unité de valeur constante équatorienne (UVC) + unités de valeur constante équatoriennes (UVC) + + + couronne estonienne + couronne estonienne + couronnes estoniennes + + + livre égyptienne + livre égyptienne + livres égyptiennes + £EG + + + nafka érythréen + nafka érythréen + nafkas érythréens + + + peseta espagnole (compte A) + peseta espagnole (compte A) + pesetas espagnoles (compte A) + + + peseta espagnole (compte convertible) + peseta espagnole (compte convertible) + pesetas espagnoles (compte convertible) + + + peseta espagnole + peseta espagnole + pesetas espagnoles + + + birr éthiopien + birr éthiopien + birrs éthiopiens + + + euro + euro + euros + + + + mark finlandais + mark finlandais + marks finlandais + + + dollar fidjien + dollar fidjien + dollars fidjiens + $FJ + + + livre des Falkland + livre des Falkland + livres des Falkland + £FK + + + franc français + franc français + francs français + F + + + livre sterling + livre sterling + livres sterling + £GB + + + coupon de lari géorgien + coupon de lari géorgien + coupons de lari géorgiens + + + lari géorgien + lari géorgien + lari géorgiens + + + cédi + cédi ghanéen (1967–2007) + cédis ghanéens (1967–2007) + + + cédi ghanéen + cédi ghanéen + cédis ghanéens + + + livre de Gibraltar + livre de Gibraltar + livres de Gibraltar + £GI + + + dalasi gambien + dalasi gambien + dalasis gambiens + + + franc guinéen + franc guinéen + francs guinéens + + + syli guinéen + syli guinéen + sylis guinéens + + + ekwélé équatoguinéen + ekwélé équatoguinéen + ekwélés équatoguinéens + + + drachme grecque + drachme grecque + drachmes grecques + + + quetzal guatémaltèque + quetzal guatémaltèque + quetzals guatémaltèques + + + escudo de Guinée portugaise + escudo de Guinée portugaise + escudos de Guinée portugaise + + + peso bissau-guinéen + peso bissau-guinéen + pesos bissau-guinéens + + + dollar du Guyana + dollar du Guyana + dollars du Guyana + + + dollar de Hong Kong + dollar de Hong Kong + dollars de Hong Kong + $HK + + + lempira hondurien + lempira hondurien + lempiras honduriens + + + dinar croate + dinar croate + dinars croates + + + kuna croate + kuna croate + kunas croates + + + gourde haïtienne + gourde haïtienne + gourdes haïtiennes + + + forint hongrois + forint hongrois + forints hongrois + + + roupie indonésienne + roupie indonésienne + roupies indonésiennes + + + livre irlandaise + livre irlandaise + livres irlandaises + £IE + + + livre israélienne + livre israélienne + livres israéliennes + £IL + + + nouveau shekel israélien + nouveau shekel israélien + nouveaux shekels israéliens + + + + roupie indienne + roupie indienne + roupies indiennes + + + + dinar irakien + dinar irakien + dinars irakiens + + + rial iranien + rial iranien + rials iraniens + + + couronne islandaise + couronne islandaise + couronnes islandaises + + + lire italienne + lire italienne + lires italiennes + ₤IT + + + dollar jamaïcain + dollar jamaïcain + dollars jamaïcains + + + dinar jordanien + dinar jordanien + dinars jordaniens + + + yen japonais + yen japonais + yens japonais + ¥JP + + + shilling kényan + shilling kényan + shillings kényans + + + som kirghize + som kirghize + soms kirghizes + + + riel cambodgien + riel cambodgien + riels cambodgiens + + + franc comorien + franc comorien + francs comoriens + + + won nord-coréen + won nord-coréen + wons nord-coréens + + + won sud-coréen + won sud-coréen + wons sud-coréens + + + + dinar koweïtien + dinar koweïtien + dinar koweïtiens + + + dollar des îles Caïmans + dollar des îles Caïmans + dollars des îles Caïmans + + + tenge kazakh + tenge kazakh + tenges kazakhs + + + kip loatien + kip loatien + kips loatiens + + + livre libanaise + livre libanaise + livres libanaises + £LB + + + roupie srilankaise + roupie srilankaise + roupies srilankaises + + + dollar libérien + dollar libérien + dollars libériens + $LR + + + loti lesothan + loti lesothan + maloti lesothans + + + litas lituanien + litas lituanien + litas lituaniens + + + talonas lituanien + talonas lituanien + talonas lituaniens + + + franc convertible luxembourgeois + franc convertible luxembourgeois + francs convertibles luxembourgeois + + + franc luxembourgeois + franc luxembourgeois + francs luxembourgeois + + + franc financier luxembourgeois + franc financier luxembourgeois + francs financiers luxembourgeois + + + lats letton + lats letton + lats lettons + + + rouble letton + rouble letton + roubles lettons + + + dinar libyen + dinar libyen + dinars libyens + + + dirham marocain + dirham marocain + dirhams marocains + + + franc marocain + franc marocain + francs marocains + + + leu moldave + leu moldave + leus moldaves + + + ariary malgache + ariary malgache + ariarys malgaches + + + franc malgache + franc malgache + francs malgaches + + + denar macédonien + denar macédonien + denars macédoniens + + + franc malien + franc malien + francs maliens + + + kyat myanmarais + kyat myanmarais + kyats myanmarais + + + tugrik mongol + tugrik mongol + tugriks mongols + + + pataca macanaise + pataca macanaise + patacas macanaises + + + ouguiya mauritanien + ouguiya mauritanien + ouguiyas mauritaniens + + + lire maltaise + lire maltaise + lires maltaises + + + livre maltaise + livre maltaise + livres maltaises + £MT + + + roupie mauricienne + roupie mauricienne + roupies mauriciennes + + + rufiyaa maldivien + rufiyaa maldivienne + rufiyaas maldiviennes + + + kwacha malawite + kwacha malawite + kwachas malawites + + + peso mexicain + peso mexicain + pesos mexicains + $MX + + + peso d’argent mexicain (1861–1992) + peso d’argent mexicain (1861–1992) + pesos d’argent mexicains (1861–1992) + + + unité de conversion mexicaine (UDI) + unité de conversion mexicaine (UDI) + unités de conversion mexicaines (UDI) + + + ringgit malais + ringgit malais + ringgits malais + + + escudo mozambicain + escudo mozambicain + escudos mozambicains + + + métical + metical mozambicain (1980–2006) + meticais mozambicains (1980–2006) + + + metical mozambicain + metical mozambicain + meticais mozambicains + + + dollar namibien + dollar namibien + dollars namibiens + $NA + + + naira nigérian + naira nigérian + nairas nigérians + + + cordoba + córdoba nicaraguayen (1912–1988) + córdobas nicaraguayens (1912–1988) + + + córdoba oro nicaraguayen + córdoba oro nicaraguayen + córdobas oro nicaraguayens + + + florin néerlandais + florin néerlandais + florins néerlandais + + + couronne norvégienne + couronne norvégienne + couronnes norvégiennes + + + roupie népalaise + roupie népalaise + roupies népalaises + + + dollar néo-zélandais + dollar néo-zélandais + dollars néo-zélandais + $NZ + + + rial omanais + rial omanais + rials omanis + + + balboa panaméen + balboa panaméen + balboas panaméens + + + inti péruvien + inti péruvien + intis péruviens + + + nouveau sol péruvien + nouveau sol péruvien + nouveaux sols péruviens + + + sol péruvien + sol péruvien (1863–1985) + sols péruviens (1863–1985) + + + kina papouan-néo-guinéen + kina papouan-néo-guinéen + kinas papouan-néo-guinéens + + + peso philippin + peso philippin + pesos philippins + + + roupie pakistanaise + roupie pakistanaise + roupies pakistanaises + + + zloty polonais + zloty polonais + zlotys polonais + + + zloty (1950–1995) + zloty polonais (1950–1995) + zlotys polonais (1950–1995) + + + escudo portugais + escudo portugais + escudos portugais + + + guaraní paraguayen + guaraní paraguayen + guaranís paraguayens + + + rial qatari + rial qatari + rials qataris + + + dollar rhodésien + dollar rhodésien + dollars rhodésiens + $RH + + + ancien leu roumain + leu roumain (1952–2005) + lei roumains (1952–2005) + + + leu roumain + leu roumain + lei roumains + + + dinar serbe + dinar serbe + dinars serbes + + + rouble russe + rouble russe + roubles russes + + + rouble russe (1991–1998) + rouble russe (1991–1998) + roubles russes (1991–1998) + + + franc rwandais + franc rwandais + francs rwandais + + + rial saoudien + rial saoudien + rials saoudiens + + + dollar des îles Salomon + dollar des îles Salomon + dollars des îles Salomon + $SB + + + roupie des Seychelles + roupie des Seychelles + roupies des Seychelles + + + dinar soudanais + dinar soudanais (1992–2007) + dinars soudanais (1992–2007) + + + livre soudanaise + livre soudanaise + livres soudanaises + £SD + + + livre soudanaise (1956–2007) + livre soudanaise (1956–2007) + livres soudanaises (1956–2007) + + + couronne suédoise + couronne suédoise + couronnes suédoises + + + dollar de Singapour + dollar de Singapour + dollars de Singapour + $SG + + + livre de Sainte-Hélène + livre de Sainte-Hélène + livres de Sainte-Hélène + £SH + + + tolar slovène + tolar slovène + tolars slovènes + + + couronne slovaque + couronne slovaque + couronnes slovaques + + + leone sierra-léonais + leone sierra-léonais + leones sierra-léonais + + + shilling somalien + shilling somalien + shillings somaliens + + + dollar surinamais + dollar surinamais + dollars surinamais + $SR + + + florin surinamais + florin surinamais + florins surinamais + + + livre sud-soudanaise + livre sud-soudanaise + livres sud-soudanaises + £SS + + + dobra santoméen + dobra santoméen + dobras santoméens + + + rouble soviétique + rouble soviétique + roubles soviétiques + + + colón salvadorien + colón salvadorien + colóns salvadoriens + + + livre syrienne + livre syrienne + livres syriennes + + + lilangeni swazi + lilangeni swazi + lilangenis swazis + + + baht thaïlandais + baht thaïlandais + bahts thaïlandais + ฿ + + + rouble tadjik + rouble tadjik + roubles tadjiks + + + somoni tadjik + somoni tadjik + somonis tadjiks + + + manat turkmène + manat turkmène + manats turkmènes + + + nouveau manat turkmène + nouveau manat turkmène + nouveaux manats turkmènes + + + dinar tunisien + dinar tunisien + dinars tunisiens + + + pa’anga tongan + pa’anga tongan + pa’angas tongans + + + escudo timorais + escudo timorais + escudos timorais + + + livre turque (1844–2005) + livre turque (1844–2005) + livres turques (1844–2005) + + + livre turque + livre turque + livres turques + + + dollar trinidadien + dollar de Trinité-et-Tobago + dollars de Trinité-et-Tobago + $TT + + + nouveau dollar taïwanais + nouveau dollar taïwanais + nouveaux dollars taïwanais + $TW + + + shilling tanzanien + shilling tanzanien + shillings tanzaniens + + + hryvnia ukrainienne + hryvnia ukrainienne + hryvnias ukrainiennes + + + karbovanetz + karbovanets ukrainien (1992–1996) + karbovanets ukrainiens (1992–1996) + + + shilling ougandais (1966–1987) + shilling ougandais (1966–1987) + shillings ougandais (1966–1987) + + + shilling ougandais + shilling ougandais + shillings ougandais + + + dollar des États-Unis + dollar des États-Unis + dollars des États-Unis + $US + + + dollar des Etats-Unis (jour suivant) + dollar des États-Unis (jour suivant) + dollars des États-Unis (jour suivant) + + + dollar des Etats-Unis (jour même) + dollar des États-Unis (jour même) + dollars des États-Unis (jour même) + + + peso uruguayen (unités indexées) + peso uruguayen (unités indexées) + pesos uruguayen (unités indexées) + + + peso uruguayen (1975–1993) + peso uruguayen (1975–1993) + pesos uruguayens (1975–1993) + + + peso uruguayen + peso uruguayen + pesos uruguayens + $UY + + + sum ouzbek + sum ouzbek + sums ouzbeks + + + bolivar vénézuélien (1871–2008) + bolivar vénézuélien (1871–2008) + bolivar vénézuélien (1871–2008) + + + bolivar vénézuélien + bolivar vénézuélien + bolivars vénézuéliens + + + dông vietnamien + dông vietnamien + dôngs vietnamiens + + + + vatu vanuatuan + vatu vanuatuan + vatus vanuatuans + + + tala samoan + tala samoan + talas samoans + WS$ + + + franc CFA (BEAC) + franc CFA (BEAC) + francs CFA (BEAC) + FCFA + + + argent + once troy d’argent + onces troy d’argent + + + or + once troy d’or + onces troy d’or + + + unité européenne composée + unité composée européenne (EURCO) + unités composées européennes (EURCO) + + + unité monétaire européenne + unité monétaire européenne (UME–6) + unités monétaires européennes (UME–6) + + + unité de compte européenne (XBC) + unité de compte 9 européenne (UEC–9) + unités de compte 9 européennes (UEC–9) + + + unité de compte européenne (XBD) + unité de compte 17 européenne (UEC–17) + unités de compte 17 européennes (UEC–17) + + + dollar des Caraïbes orientales + dollar des Caraïbes orientales + dollars des Caraïbes orientales + + + droit de tirage spécial + droit de tirage spécial + droits de tirage spéciaux + + + unité de compte européenne (ECU) + unité de compte européenne (ECU) + unités de compte européennes (ECU) + + + franc or + franc or + francs or + + + franc UIC + franc UIC + francs UIC + + + franc CFA (BCEAO) + franc CFA (BCEAO) + francs CFA (BCEAO) + CFA + + + palladium + once troy de palladium + onces troy de palladium + + + franc CFP + franc CFP + francs CFP + FCFP + + + platine + once troy de platine + onces troy de platine + + + type de fonds RINET + unité de fonds RINET + unités de fonds RINET + + + (devise de test) + (devise de test) + (devises de test) + + + devise inconnue ou non valide + devise inconnue ou non valide + devise inconnue ou non valide + + + dinar du Yémen + dinar nord-yéménite + dinars nord-yéménites + + + rial yéménite + rial yéménite + rials yéménites + + + nouveau dinar yougoslave + dinar fort yougoslave (1966–1989) + dinars forts yougoslaves (1966–1989) + + + dinar yougoslave Noviy + nouveau dinar yougoslave (1994–2003) + nouveaux dinars yougoslaves (1994–2003) + + + dinar yougoslave convertible + dinar convertible yougoslave (1990–1992) + dinars convertibles yougoslaves (1990–1992) + + + rand sud-africain (financier) + rand sud-africain (financier) + rands sud-africains (financiers) + + + rand sud-africain + rand sud-africain + rands sud-africains + + + kwacha zambien (1968–2012) + kwacha zambien (1968–2012) + kwachas zambiens (1968–2012) + + + kwacha zambien + kwacha zambien + kwachas zambiens + + + nouveau zaïre zaïrien + nouveau zaïre zaïrien + nouveaux zaïres zaïriens + + + zaïre zaïrois + zaïre zaïrois + zaïres zaïrois + + + dollar zimbabwéen + dollar zimbabwéen + dollars zimbabwéens + + + dollar zimbabwéen (2009) + dollar zimbabwéen (2009) + dollars zimbabwéens (2009) + + + dollar zimbabwéen (2008) + dollar zimbabwéen (2008) + dollars zimbabwéens (2008) + + + + au moins {0} + de {0} à {1} + + + + + + {0} par {1} + + + {0} fois la gravitation terrestre + {0} fois la gravitation terrestre + + + {0} minute d’angle + {0} minutes d’angle + + + {0} seconde d’angle + {0} secondes d’angle + + + {0} degré + {0} degrés + + + {0} acre anglo-saxonne + {0} acres anglo-saxonnes + + + {0} hectare + {0} hectares + + + {0} pied carré + {0} pieds carrés + + + {0} kilomètre carré + {0} kilomètres carrés + + + {0} mètre carré + {0} mètres carrés + + + {0} mille anglais carré + {0} milles anglais carrés + + + {0} jour + {0} jours + + + {0} heure + {0} heures + + + {0} milliseconde + {0} millisecondes + + + {0} minute + {0} minutes + + + {0} mois + {0} mois + + + {0} seconde + {0} secondes + + + {0} semaine + {0} semaines + + + {0} année + {0} années + + + {0} centimètre + {0} centimètres + + + {0} pied + {0} pieds + + + {0} pouce + {0} pouces + + + {0} kilomètre + {0} kilomètres + + + {0} année-lumière + {0} années-lumière + + + {0} mètre + {0} mètres + + + {0} mille anglais + {0} milles anglais + + + {0} millimètre + {0} millimètres + + + {0} picomètre + {0} picomètres + + + {0} yard + {0} yards + + + {0} gramme + {0} grammes + + + {0} kilogramme + {0} kilogrammes + + + {0} once + {0} onces + + + {0} livre avoirdupois + {0} livres avoirdupois + + + {0} cheval-vapeur + {0} chevaux-vapeur + + + {0} kilowatt + {0} kilowatts + + + {0} watt + {0} watts + + + {0} hectopascal + {0} hectopascals + + + {0} pouce de mercure + {0} pouces de mercure + + + {0} millibar + {0} millibars + + + {0} kilomètre par heure + {0} kilomètres par heure + + + {0} mètre par seconde + {0} mètres par seconde + + + {0} mille anglais par heure + {0} milles anglais par heure + + + {0} degré Celsius + {0} degrés Celsius + + + {0} degré Fahrenheit + {0} degrés Fahrenheit + + + {0} kilomètre cube + {0} kilomètres cubes + + + {0} mille anglais cube + {0} milles anglais cubes + + + {0} litre + {0} litres + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} j + {0} j + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} sem. + {0} sem. + + + {0} an + {0} ans + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} a.l. + {0} a.l. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} ch + {0} ch + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} L + {0} L + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ac + {0}ac + + + {0}ha + {0}ha + + + {0}ft² + {0}ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0}mi² + {0}mi² + + + {0}j + {0}j + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}sem + {0}sem + + + {0}a + {0}a + + + {0}cm + {0}cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}km + {0}km + + + {0}a.l. + {0}a.l. + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}oz + {0}oz + + + {0}lb + {0}lb + + + {0}ch + {0}ch + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}inHg + {0}inHg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0}mi/h + {0}mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} et {1} + {0} et {1} + + + {0}, {1} + {0}, {1} + {0} et {1} + {0} et {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0} et {1} + {0} et {1} + + + + + oui:o + non:n + + + + diff --git a/library/Zend/Locale/Data/fr_BE.xml b/library/Zend/Locale/Data/fr_BE.xml new file mode 100755 index 000000000..b72d72ea6 --- /dev/null +++ b/library/Zend/Locale/Data/fr_BE.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + d/MM/yy GGGGG + + + + + + du {0} au {1} + + h-h a + + + HH-HH + + + h:mm-h:mm a + + + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d MMM + d MMM 'au' d MMM + + + E d 'au' E d MMM + E d MMM 'au' E d MMM + + + MM/y - MM/y G + MM/y - MM/y G + + + d/MM/y - d/MM/y G + d/MM/y - d/MM/y G + d/MM/y - d/MM/y G + + + E d/MM/y - E d/MM/y G + E d/MM/y - E d/MM/y G + E d/MM/y - E d/MM/y G + + + MMM-MMM y G + MMM y 'a'` MMM y G + + + d-d MMM y + d MMM 'au' d MMM y G + d MMM y 'au' d MMM y G + + + E d 'au' E d MMM y G + E d MMM 'au' E d MMM y G + E d MMM y 'au' E d MMM y G + + + + + + + + + d/MM/yy + + + + + + + H 'h' mm 'min' ss 's' zzzz + + + + + + du {0} au {1} + + h-h a + + + HH-HH + + + h:mm-h:mm a + + + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MMM-MMM + + + d-d MMM + d MMM 'au' d MMM + + + E d 'au' E d MMM + E d MMM 'au' E d MMM + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + MMM-MMM y + MMM y 'a'` MMM y + + + d-d MMM y + d MMM 'au' d MMM y + d MMM y 'au' d MMM y + + + E d 'au' E d MMM y + E d MMM 'au' E d MMM y + E d MMM y 'au' E d MMM y + + + + + + + + + . + + + diff --git a/library/Zend/Locale/Data/fr_BF.xml b/library/Zend/Locale/Data/fr_BF.xml new file mode 100755 index 000000000..033ecd484 --- /dev/null +++ b/library/Zend/Locale/Data/fr_BF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_BI.xml b/library/Zend/Locale/Data/fr_BI.xml new file mode 100755 index 000000000..93bbc2ab6 --- /dev/null +++ b/library/Zend/Locale/Data/fr_BI.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + FBu + + + + diff --git a/library/Zend/Locale/Data/fr_BJ.xml b/library/Zend/Locale/Data/fr_BJ.xml new file mode 100755 index 000000000..366167cba --- /dev/null +++ b/library/Zend/Locale/Data/fr_BJ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_BL.xml b/library/Zend/Locale/Data/fr_BL.xml new file mode 100755 index 000000000..de88e3b2b --- /dev/null +++ b/library/Zend/Locale/Data/fr_BL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_CA.xml b/library/Zend/Locale/Data/fr_CA.xml new file mode 100755 index 000000000..09fcb80c1 --- /dev/null +++ b/library/Zend/Locale/Data/fr_CA.xml @@ -0,0 +1,559 @@ + + + + + + + + + + + + + anglais (GB) + espagnol ibérique + frison + goudjarâtî + ps + portugais ibérique + singhalais + tongan + ouïgour + ouïghour + indéterminé + yémba + + + + + + + + + + + + + + Australie et Nouvelle-Zélande + Île de l'Ascension + Saint-Barthélémy + Bélarus + Micronésie + GB + Géorgie du Sud et les îles Sandwich du Sud + Territoire britannique de l'océan Indien + Saint-Martin + Territoire palestinien + Réunion + Îles Turks et Caïques + Îles éloignées des États-Unis + + + Calendrier + ordonnancement + Devise + Chiffres + + + Chiffres indo-arabes + Chiffres indo-arabes étendus + Chiffres arméniens + Chiffres minuscules arméniens + Chiffres bengali + Chiffres devanagari + Ordre de tri du dictionnaire + Ordre de tri Unicode par défaut + Chiffre éthiopiens + Calendrier éthiopien de l'An de grâce + Chiffre pleine largeur + Chiffres géorgiens + Calendrier grégorien + Chiffres grecs + Chiffres minuscules grecs + Chiffres gujarati + Chiffres gurmukhī + Chiffres numériques chinois + Chiffres chinois simplifiés + Chiffres monétaires chinois simplifiés + Chiffres chinois traditionnels + Chiffres financiers en chinois traditionnel + Chiffre hébreux + Calendrier musulman + Calendrier civil musulman + calendrier religieux musulman + Chiffres japonais + Chiffres monétaires japonais + Chiffres khmer + Chiffres canara + Chiffres laotiens + Chiffres occidentaux + Chiffres malayâlam + Chiffres mongols + Chiffres birmans + Chiffres oriya + Calendrier perse + Ordre de tri réformé + Chiffres romains + Chiffres minuscules romains + Recherche générale + Chiffres tamoul + Chiffres telugu + Chiffres thaïlandais + Chiffres tibétains + Ordre de tri radical et trait + + + Chiffres + Pleine largeur + Demie largeur + Édition + + + R-U + + + + + + + + + + + + + G y-MM-dd + + + + + GGGGG yy-MM-dd + + + + + + M-d + E M-d + MM-d + MM-dd + G y-MM + G y-MM-dd + E G y-MM-dd + G y-MM + + + + d–d + + + h–h a + + + HH–HH + + + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h–h a v + + + HH–HH v + + + MM-dd – MM-dd + MM-dd – MM-dd + + + E MM-dd – E MM-dd + E MM-dd – E MM-dd + + + G y–y + + + G y-MM – y-MM + G y-MM – y-MM + + + G y-MM-dd – y-MM-dd + G y-MM-dd – y-MM-dd + G y-MM-dd – y-MM-dd + + + 'du' E y-MM-dd 'au' E y-MM-dd G + 'du' E y-MM-dd 'au' E y-MM-dd G + 'du' E y-MM-dd 'au' E y-MM-dd G + + + 'de' MMM y 'à' MMM y G + + + 'du' d MMM 'au' d MMM y G + 'du' d MMM y 'au' d MMM y G + + + 'du' E d 'au' E d MMM y G + 'du' E d MMM 'au' E d MMM y G + 'du' E d MMM y 'au' E d MMM y G + + + MMMM – MMMM y G + + + + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + y-MM-dd + + + + + yy-MM-dd + + + + + + + HH 'h' mm 'min' ss 's' zzzz + + + + + + M-d + E M-d + MM-d + MM-dd + y-MM + y-MM-dd + E y-MM-dd + y-MM + + + + d–d + + + h–h a + + + HH–HH + + + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h–h a v + + + HH–HH v + + + MM-dd – MM-dd + MM-dd – MM-dd + + + E MM-dd – E MM-dd + E MM-dd – E MM-dd + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + 'du' E y-MM-dd 'au' E y-MM-dd + 'du' E y-MM-dd 'au' E y-MM-dd + 'du' E y-MM-dd 'au' E y-MM-dd + + + 'de' MMM y 'à' MMM y + + + 'du' d MMM 'au' d MMM y + 'du' d MMM y 'au' d MMM y + + + 'du' E d 'au' E d MMM y + 'du' E d MMM 'au' E d MMM y + 'du' E d MMM y 'au' E d MMM y + + + + + + + + L'année dernière + Cette année + L'année prochaine + + Dans {0} an + Dans {0} ans + + + Il y a {0} an + Il y a {0} ans + + + + Le mois dernier + Ce mois-ci + Le mois prochain + + Dans {0} mois + Dans {0} mois + + + Il y a {0} mois + Il y a {0} mois + + + + La semaine dernière + Cette semaine + La semaine prochaine + + Dans {0} semaine + Dans {0} semaines + + + Il y a {0} semaine + Il y a {0} semaines + + + + + Dans {0} jour + Dans {0} jours + + + Il y a {0} jour + Il y a {0} jours + + + + + Dans {0} heure + Dans {0} heures + + + Il y a {0} heure + Il y a {0} heures + + + + + Dans {0} minute + Dans {0} minutes + + + Il y a {0} minute + Il y a {0} minutes + + + + + Dans {0} seconde + Dans {0} secondes + + + Il y a {0} seconde + Il y a {0} secondes + + + + + Heure de {0} + + Barbade (La) + + + Dacca + + + Îles Cocos + + + Île Christmas + + + Îles Féroé + + + Archipel des Chagos + + + Baghdad + + + Union des Comores + + + Saint-Christophe-et-Niévès + + + Îles Caïmans + + + Île Pitcairn + + + Ndjamena + + + Îles Kerguelen + + + Port-d'Espagne + + + New Salem, Dakota du Nord + + + Vatican + + + Saint Thomas + + + Uvéa + + + + heure du Centre + heure normale du Centre + heure avancée du Centre + + + HC + HNC + HAC + + + + + heure de l’Est + heure normale de l’Est + heure avancée de l’Est + + + HE + HNE + HAE + + + + + HR + HNR + HAR + + + + + heure du Pacifique + heure normale du Pacifique + heure avancée du Pacifique + + + HP + HNP + HAP + + + + + heure normale d’Équateur + + + + + heure de Guyane française + + + + + HT + HNT + HAT + + + + + heure de l'Uruguay + heure normale de l'Uruguay + heure avancée de l'Uruguay + + + + + + + + $ + + + CN¥ + + + dollar guyanien + dollars guyaniens + + + WST + + + + + diff --git a/library/Zend/Locale/Data/fr_CD.xml b/library/Zend/Locale/Data/fr_CD.xml new file mode 100755 index 000000000..8f564c279 --- /dev/null +++ b/library/Zend/Locale/Data/fr_CD.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + FC + + + + diff --git a/library/Zend/Locale/Data/fr_CF.xml b/library/Zend/Locale/Data/fr_CF.xml new file mode 100755 index 000000000..94fcfc431 --- /dev/null +++ b/library/Zend/Locale/Data/fr_CF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_CG.xml b/library/Zend/Locale/Data/fr_CG.xml new file mode 100755 index 000000000..8a308ea9f --- /dev/null +++ b/library/Zend/Locale/Data/fr_CG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_CH.xml b/library/Zend/Locale/Data/fr_CH.xml new file mode 100755 index 000000000..376799fa1 --- /dev/null +++ b/library/Zend/Locale/Data/fr_CH.xml @@ -0,0 +1,255 @@ + + + + + + + + + + + + + Région micronésienne + A.R. yougoslave de Macédoine + Régions éloignées de l’Océanie + Sint Maarten + Région indéterminée + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + dd.MM.yy GGGGG + + + + + + dd.MM + MM.y + + + du {0} au {1} + + h-h a + + + HH-HH + + + h:mm-h:mm a + + + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM 'au' d MMM + + + E, d 'au' E, d MMM + E, d MMM 'au' E, d MMM + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + MMM-MMM y G + MMM y 'a'` MMM y G + + + d-d MMM y G + d MMM 'au' d MMM y G + d MMM y 'au' d MMM y G + + + E, d 'au' E, d MMM y G + E, d MMM 'au' E, d MMM y G + E, d MMM y 'au' E, d MMM y G + + + + + + + + + EEEE, d MMMM y + + + + + dd.MM.yy + + + + + + + HH.mm:ss 'h' zzzz + + + + + + dd.MM + MM.y + + + du {0} au {1} + + h-h a + + + HH-HH + + + h:mm-h:mm a + + + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM 'au' d MMM + + + E, d 'au' E, d MMM + E, d MMM 'au' E, d MMM + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y 'a'` MMM y + + + d-d MMM y + d MMM 'au' d MMM y + d MMM y 'au' d MMM y + + + E, d 'au' E, d MMM y + E, d MMM 'au' E, d MMM y + E, d MMM y 'au' E, d MMM y + + + + + + + + + . + ' + + + + + ¤ #,##0.00;¤-#,##0.00 + + + + + + CHF + + + + + diff --git a/library/Zend/Locale/Data/fr_CI.xml b/library/Zend/Locale/Data/fr_CI.xml new file mode 100755 index 000000000..2286a0257 --- /dev/null +++ b/library/Zend/Locale/Data/fr_CI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_CM.xml b/library/Zend/Locale/Data/fr_CM.xml new file mode 100755 index 000000000..086d38c6a --- /dev/null +++ b/library/Zend/Locale/Data/fr_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_DJ.xml b/library/Zend/Locale/Data/fr_DJ.xml new file mode 100755 index 000000000..9556d3f16 --- /dev/null +++ b/library/Zend/Locale/Data/fr_DJ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Fdj + + + + diff --git a/library/Zend/Locale/Data/fr_DZ.xml b/library/Zend/Locale/Data/fr_DZ.xml new file mode 100755 index 000000000..36c5f0fe4 --- /dev/null +++ b/library/Zend/Locale/Data/fr_DZ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + DA + + + + diff --git a/library/Zend/Locale/Data/fr_FR.xml b/library/Zend/Locale/Data/fr_FR.xml new file mode 100755 index 000000000..191ae0429 --- /dev/null +++ b/library/Zend/Locale/Data/fr_FR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_GA.xml b/library/Zend/Locale/Data/fr_GA.xml new file mode 100755 index 000000000..cf59553f4 --- /dev/null +++ b/library/Zend/Locale/Data/fr_GA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_GF.xml b/library/Zend/Locale/Data/fr_GF.xml new file mode 100755 index 000000000..7f91d93c5 --- /dev/null +++ b/library/Zend/Locale/Data/fr_GF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_GN.xml b/library/Zend/Locale/Data/fr_GN.xml new file mode 100755 index 000000000..008915660 --- /dev/null +++ b/library/Zend/Locale/Data/fr_GN.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + FG + + + + diff --git a/library/Zend/Locale/Data/fr_GP.xml b/library/Zend/Locale/Data/fr_GP.xml new file mode 100755 index 000000000..7a19d4dc1 --- /dev/null +++ b/library/Zend/Locale/Data/fr_GP.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_GQ.xml b/library/Zend/Locale/Data/fr_GQ.xml new file mode 100755 index 000000000..90ce2be75 --- /dev/null +++ b/library/Zend/Locale/Data/fr_GQ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_HT.xml b/library/Zend/Locale/Data/fr_HT.xml new file mode 100755 index 000000000..cd8aebc9e --- /dev/null +++ b/library/Zend/Locale/Data/fr_HT.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + G + + + + diff --git a/library/Zend/Locale/Data/fr_KM.xml b/library/Zend/Locale/Data/fr_KM.xml new file mode 100755 index 000000000..58ca7a8f1 --- /dev/null +++ b/library/Zend/Locale/Data/fr_KM.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + CF + + + + diff --git a/library/Zend/Locale/Data/fr_LU.xml b/library/Zend/Locale/Data/fr_LU.xml new file mode 100755 index 000000000..b281977e4 --- /dev/null +++ b/library/Zend/Locale/Data/fr_LU.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + . + + + + FRF + + + F + + + + + diff --git a/library/Zend/Locale/Data/fr_MA.xml b/library/Zend/Locale/Data/fr_MA.xml new file mode 100755 index 000000000..ebace2938 --- /dev/null +++ b/library/Zend/Locale/Data/fr_MA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_MC.xml b/library/Zend/Locale/Data/fr_MC.xml new file mode 100755 index 000000000..36a712481 --- /dev/null +++ b/library/Zend/Locale/Data/fr_MC.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_MF.xml b/library/Zend/Locale/Data/fr_MF.xml new file mode 100755 index 000000000..b0056af47 --- /dev/null +++ b/library/Zend/Locale/Data/fr_MF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_MG.xml b/library/Zend/Locale/Data/fr_MG.xml new file mode 100755 index 000000000..ae5acf608 --- /dev/null +++ b/library/Zend/Locale/Data/fr_MG.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Ar + + + + diff --git a/library/Zend/Locale/Data/fr_ML.xml b/library/Zend/Locale/Data/fr_ML.xml new file mode 100755 index 000000000..06cf2841b --- /dev/null +++ b/library/Zend/Locale/Data/fr_ML.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_MQ.xml b/library/Zend/Locale/Data/fr_MQ.xml new file mode 100755 index 000000000..544b133ca --- /dev/null +++ b/library/Zend/Locale/Data/fr_MQ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_MR.xml b/library/Zend/Locale/Data/fr_MR.xml new file mode 100755 index 000000000..67596d672 --- /dev/null +++ b/library/Zend/Locale/Data/fr_MR.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + UM + + + + diff --git a/library/Zend/Locale/Data/fr_MU.xml b/library/Zend/Locale/Data/fr_MU.xml new file mode 100755 index 000000000..f114232ad --- /dev/null +++ b/library/Zend/Locale/Data/fr_MU.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Rs + + + + diff --git a/library/Zend/Locale/Data/fr_NC.xml b/library/Zend/Locale/Data/fr_NC.xml new file mode 100755 index 000000000..949ba368d --- /dev/null +++ b/library/Zend/Locale/Data/fr_NC.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_NE.xml b/library/Zend/Locale/Data/fr_NE.xml new file mode 100755 index 000000000..d46c5bf9b --- /dev/null +++ b/library/Zend/Locale/Data/fr_NE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_PF.xml b/library/Zend/Locale/Data/fr_PF.xml new file mode 100755 index 000000000..b679014ed --- /dev/null +++ b/library/Zend/Locale/Data/fr_PF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_PM.xml b/library/Zend/Locale/Data/fr_PM.xml new file mode 100755 index 000000000..66a8697e6 --- /dev/null +++ b/library/Zend/Locale/Data/fr_PM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_RE.xml b/library/Zend/Locale/Data/fr_RE.xml new file mode 100755 index 000000000..5e8b6ab99 --- /dev/null +++ b/library/Zend/Locale/Data/fr_RE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_RW.xml b/library/Zend/Locale/Data/fr_RW.xml new file mode 100755 index 000000000..75053fb3e --- /dev/null +++ b/library/Zend/Locale/Data/fr_RW.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + RF + + + + diff --git a/library/Zend/Locale/Data/fr_SC.xml b/library/Zend/Locale/Data/fr_SC.xml new file mode 100755 index 000000000..85471b5a6 --- /dev/null +++ b/library/Zend/Locale/Data/fr_SC.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + SR + + + + diff --git a/library/Zend/Locale/Data/fr_SN.xml b/library/Zend/Locale/Data/fr_SN.xml new file mode 100755 index 000000000..c4128fbb5 --- /dev/null +++ b/library/Zend/Locale/Data/fr_SN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_SY.xml b/library/Zend/Locale/Data/fr_SY.xml new file mode 100755 index 000000000..353093eb9 --- /dev/null +++ b/library/Zend/Locale/Data/fr_SY.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + LS + + + + diff --git a/library/Zend/Locale/Data/fr_TD.xml b/library/Zend/Locale/Data/fr_TD.xml new file mode 100755 index 000000000..251d9139f --- /dev/null +++ b/library/Zend/Locale/Data/fr_TD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_TG.xml b/library/Zend/Locale/Data/fr_TG.xml new file mode 100755 index 000000000..0543f033c --- /dev/null +++ b/library/Zend/Locale/Data/fr_TG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_TN.xml b/library/Zend/Locale/Data/fr_TN.xml new file mode 100755 index 000000000..745ce533c --- /dev/null +++ b/library/Zend/Locale/Data/fr_TN.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + DT + + + + diff --git a/library/Zend/Locale/Data/fr_VU.xml b/library/Zend/Locale/Data/fr_VU.xml new file mode 100755 index 000000000..82974cefb --- /dev/null +++ b/library/Zend/Locale/Data/fr_VU.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + VT + + + + diff --git a/library/Zend/Locale/Data/fr_WF.xml b/library/Zend/Locale/Data/fr_WF.xml new file mode 100755 index 000000000..2e5a1c1f6 --- /dev/null +++ b/library/Zend/Locale/Data/fr_WF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fr_YT.xml b/library/Zend/Locale/Data/fr_YT.xml new file mode 100755 index 000000000..c2b1bd4ae --- /dev/null +++ b/library/Zend/Locale/Data/fr_YT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fur.xml b/library/Zend/Locale/Data/fur.xml new file mode 100755 index 000000000..cd6b84cb7 --- /dev/null +++ b/library/Zend/Locale/Data/fur.xml @@ -0,0 +1,1668 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + + + afar + abcazian + avestan + afrikaans + amaric + aragonês + vieri inglês + arap + aramaic + assamês + asturian + avar + aymarà + azerbaijani + bielorùs + bulgar + bengalês + tibetan + breton + bosniac + catalan + cecen + chamorro + cors + coptic + cree + cec + sclâf de glesie + galês + danês + todesc + todesc de Austrie + alt todesc de Svuizare + sclâf + vieri egjizian + grêc + inglês + inglês australian + inglês canadês + inglês britanic + ingles merecan + esperanto + spagnûl + spagnûl de Americhe Latine + spagnûl iberic + eston + basc + persian + fulah + finlandês + filipin + fizian + faroês + francês + francês dal Canade + francês de Svuizare + vieri francês + furlan + frisian + gaelic irlandês + gaelic scozês + galizian + guaranì + gotic + vieri grêc + gujarati + manx + ebraic + hindi + cravuat + haitian + ongjarês + armen + indonesian + igbo + inupiaq + ido + islandês + talian + inuktitut + gjaponês + gjeorgjian + kazac + kalaallisut + khmer + kannada + corean + curd + cornualiês + latin + ladin + lussemburghês + limburghês + lingala + lao + lituan + leton + malagasy + maori + macedon + malayalam + mongul + marathi + malês + maltês + lenghis multiplis + mirandês + napoletan + norvegjês bokmål + ndebele setentrionâl + bas todesc + nepalês + olandês + flamant + norvegjês nynorsk + norvegjês + vieri norvegjês + sotho setentrionâl + navajo + ocitan + oriya + osetic + turc otoman + punjabi + papiamento + vieri persian + polac + vieri provenzâl + pashto + portughês + portughês brasilian + portughês iberic + quechua + rumanç + romen + moldâf + rus + sanscrit + sardegnûl + sicilian + scozês + sindhi + sami setentrionâl + sango + vieri irlandês + sinalês + slovac + sloven + samoan + somal + albanês + serp + swati + sotho meridionâl + sundanês + sumeric + svedês + swahili + tamil + telegu + tetum + tagic + thai + turcmen + tagalog + turc + tartar + tahitian + uigur + ucrain + indeterminade + urdu + uzbec + venda + vietnamite + valon + wolof + xhosa + yiddish + yoruba + cinês + cinês semplificât + cinês tradizionâl + zulu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mont + Afriche + Americhe dal Nord + Americhe meridionâl + Oceanie + Afriche ocidentâl + Americhe centrâl + Afriche orientâl + Afriche setentrionâl + Afriche di mieç + Afriche meridionâl + Americhis + Americhe setentrionâl + caraibic + Asie orientâl + Asie meridionâl + Asie sud orientâl + Europe meridionâl + Australie e Gnove Zelande + Melanesie + Regjon de Micronesie + Polinesie + Asie + Asie centrâl + Asie ocidentâl + Europe + Europe orientâl + Europe setentrionâl + Europe ocidentâl + Americhe latine + Andorra + Emirâts araps unîts + Afghanistan + Antigua e Barbuda + Anguilla + Albanie + Armenie + Antilis olandesis + Angola + Antartic + Argjentine + Samoa merecanis + Austrie + Australie + Aruba + Isulis Aland + Azerbaigian + Bosnie e Ercegovine + Barbados + Bangladesh + Belgjiche + Burkina Faso + Bulgarie + Bahrain + Burundi + Benin + Sant Barthélemy + Bermuda + Brunei + Bolivie + Brasîl + Bahamas + Bhutan + Isule Bouvet + Botswana + Bielorussie + Belize + Canade + Isulis Cocos + Republiche Democratiche dal Congo + Congo (RDC) + Republiche centri africane + Congo - Brazzaville + Congo (Republiche) + Svuizare + Cueste di Avoli + Isulis Cook + Cile + Camerun + Cine + Colombie + Isule Clipperton + Costa Rica + Cuba + Cjâf vert + Isule Christmas + Cipri + Republiche ceche + Gjermanie + Diego Garcia + Gibuti + Danimarcje + Dominiche + Republiche dominicane + Alzerie + Ceuta e Melilla + Ecuador + Estonie + Egjit + Sahara ocidentâl + Eritree + Spagne + Etiopie + Union europeane + Finlandie + Fizi + Isulis Falkland + Isulis Falkland (Isulis Malvinas) + Micronesie + Isulis Faroe + France + Gabon + Ream unît + Grenada + Gjeorgjie + Guiana francês + Guernsey + Ghana + Gjibraltar + Groenlande + Gambia + Guinee + Guadalupe + Guinee ecuatoriâl + Grecie + Georgia dal Sud e Isulis Sandwich dal Sud + Guatemala + Guam + Guinea-Bissau + Guyana + Regjon aministrative speciâl de Cine di Hong Kong + Hong Kong + Isule Heard e Isulis McDonald + Honduras + Cravuazie + Haiti + Ongjarie + Isulis Canariis + Indonesie + Irlande + Israêl + Isule di Man + India + Teritori britanic dal Ocean Indian + Iraq + Iran + Islande + Italie + Jersey + Gjamaiche + Jordanie + Gjapon + Kenya + Kirghizstan + Camboze + Kiribati + Comoris + San Kitts e Nevis + Coree dal nord + Coree dal sud + Kuwait + Isulis Cayman + Kazachistan + Laos + Liban + Sante Lusie + Liechtenstein + Sri Lanka + Liberie + Lesotho + Lituanie + Lussemburc + Letonie + Libie + Maroc + Monaco + Moldavie + Montenegro + Sant Martin + Madagascar + Isulis Marshall + Macedonie + Macedonie (FYROM) + Mali + Birmanie + Mongolie + Regjon aministrative speciâl de Cine di Macao + Macao + Isulis Mariana dal Nord + Martiniche + Mauritanie + Montserrat + Malta + Maurizi + Maldivis + Malawi + Messic + Malaysia + Mozambic + Namibie + Gnove Caledonie + Niger + Isole Norfolk + Nigerie + Nicaragua + Paîs bas + Norvegje + Nepal + Nauru + Niue + Gnove Zelande + Oman + Panamà + Perù + Polinesie francês + Papue Gnove Guinee + Filipinis + Pakistan + Polonie + San Pierre e Miquelon + Pitcairn + Porto Rico + Teritoris palestinês + Portugal + Palau + Paraguay + Qatar + Oceanie periferiche + Reunion + Romanie + Serbie + Russie + Ruande + Arabie Saudide + Isulis Salomon + Seychelles + Sudan + Svezie + Singapore + Sante Eline + Slovenie + Svalbard e Jan Mayen + Slovachie + Sierra Leone + San Marin + Senegal + Somalie + Suriname + Sao Tomè e Principe + El Salvador + Sirie + Swaziland + Tristan da Cunha + Isulis Turks e Caicos + Çad + Teritoris meridionâi francês + Togo + Tailandie + Tazikistan + Tokelau + Timor orientâl + Turkmenistan + Tunisie + Tonga + Turchie + Trinidad e Tobago + Tuvalu + Taiwan + Tanzanie + Ucraine + Uganda + Isulis periferichis minôrs dai Stâts Unîts + Stâts Unîts + Uruguay + Uzbechistan + Vatican + San Vincent e lis Grenadinis + Venezuela + Isulis vergjinis britanichis + Isulis vergjinis americanis + Vietnam + Vanuatu + Wallis e Futuna + Samoa + Yemen + Mayotte + Sud Afriche + Zambia + Zimbabwe + Regjon no cognossude o no valide + + + Ortografie todescje tradizionâl + Ortografie resiane standard + Ortografie todescje dal 1996 + armen orientâl + armen ocidentâl + dialet di San Zorç di Resie + dialet di Lipovaz dal resian + Dialet des valadis dal Nadison + dialet di Gnive + dialet di Oseac + Politoniche + Ortografie revisade + Resian + dialet di Stolvize + valenzian + + + calendari + ordenament + monede + + + ordin cinês tradizionâl - Big5 + calendari budist + calendari cinês + ordenament predeterminât Unicode + ordin cinês semplificât - GB2312 + calendari gregorian + calendari ebreu + calendari nazionâl indian + calendari islamic + calendari islamic civîl + calendari gjaponês + numars ocidentâi + ordin elenc telefonic + ordin pinyin + calendari de Republiche di Cine + ricercje par fins gjenerâi + ordin segns + ordin tradizionâl + + + metric + Ream Unît + USA + + + Lenghe: {0} + Scriture: {0} + Regjon: {0} + + + + [a à â b c ç d e è ê f g h i ì î j k l m n o ò ô p q r s t u ù û v w x y z] + [å č é ë ğ ï ñ ó š ü] + [A B C Ç D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE d 'di' MMMM 'dal' y G + + + + + d 'di' MMMM 'dal' y G + + + + + dd/MM/y G + + + + + dd/MM/yy GGGGG + + + + + + d + d E + H:mm + L + d/M + E d/M + d/MM + LLL + d MMM + E d MMM + d 'di' MMMM + E d MMMM + mm:ss + y + M/y + E, d/M/y + MMM y + E d MMM y + LLLL 'dal' y + QQQ y + QQQQ y + + + {0} – {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + LLL-LLL + + + d-d 'di' MMM + d 'di' MMM - d 'di' MMM + + + E d - E d 'di' MMM + E d 'di' MMM - E d 'di' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MM - MM/y + MM/y - MM/y + + + d - d/MM/y + dd/MM/y - d/MM + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MM - MM/y + MM/y - MM/y + + + + + + + + + Zen + Fev + Mar + Avr + Mai + Jug + Lui + Avo + Set + Otu + Nov + Dic + + + Z + F + M + A + M + J + L + A + S + O + N + D + + + Zenâr + Fevrâr + Març + Avrîl + Mai + Jugn + Lui + Avost + Setembar + Otubar + Novembar + Dicembar + + + + + Zen + Fev + Mar + Avr + Mai + Jug + Lui + Avo + Set + Otu + Nov + Dic + + + Z + F + M + A + M + J + L + A + S + O + N + D + + + Zenâr + Fevrâr + Març + Avrîl + Mai + Jugn + Lui + Avost + Setembar + Otubar + Novembar + Dicembar + + + + + + + dom + lun + mar + mie + joi + vin + sab + + + D + L + M + M + J + V + S + + + domenie + lunis + martars + miercus + joibe + vinars + sabide + + + + + dom + lun + mar + mie + joi + vin + sab + + + D + L + M + M + J + V + S + + + domenie + lunis + martars + miercus + joibe + vinars + sabide + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + Prin trimestri + Secont trimestri + Tierç trimestri + Cuart trimestri + + + + + T1 + T2 + T3 + T4 + + + Prin trimestri + Secont trimestri + Tierç trimestri + Cuart trimestri + + + + + + + a. + p. + + + + + + pdC + ddC + + + + + + EEEE d 'di' MMMM 'dal' y + + + + + d 'di' MMMM 'dal' y + + + + + dd/MM/y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + d E + H:mm + L + d/M + E d/M + d/MM + LLL + d MMM + E d MMM + d 'di' MMMM + E d MMMM + mm:ss + y + M/y + E, d/M/y + MMM y + E d MMM y + LLLL 'dal' y + QQQ y + QQQQ y + + + {0} – {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + LLL-LLL + + + d-d 'di' MMM + d 'di' MMM - d 'di' MMM + + + E d - E d 'di' MMM + E d 'di' MMM - E d 'di' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MM - MM/y + MM/y - MM/y + + + d - d/MM/y + dd/MM/y - d/MM + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MM - MM/y + MM/y - MM/y + + + + + + + + ere + + + an + + ca di {0} an + ca di {0} agns + + + {0} an indaûr + {0} agns indaûr + + + + mês + + ca di {0} mês + ca di {0} mês + + + {0} mês indaûr + {0} mês indaûr + + + + setemane + + ca di {0} setemane + ca di {0} setemanis + + + {0} setemane indaûr + {0} setemanis indaûr + + + + + îr l'altri + îr + vuê + doman + passantdoman + + ca di {0} zornade + ca di {0} zornadis + + + {0} zornade indaûr + {0} zornadis indaûr + + + + dì de setemane + + + toc dal dì + + + ore + + ca di {0} ore + ca di {0} oris + + + {0} ore indaûr + {0} oris indaûr + + + + minût + + ca di {0} minût + ca di {0} minûts + + + {0} minût indaûr + {0} minûts indaûr + + + + secont + + ca di {0} secont + ca di {0} seconts + + + {0} secont indaûr + {0} seconts indaûr + + + + zone + + + + +HH:mm;-HH:mm + GMT{0} + {1} ({0}) + + Citât no cognossude + + + Viene + + + San Pauli dal Brasîl + + + Praghe + + + Canariis + + + Lussemburc + + + Malte + + + Azoris + + + Lisbone + + + Belgrât + + + Mosche + + + Lubiane + + + San Marin + + + Gnove York + + + + Ore de Europe centrâl + Ore standard de Europe centrâl + Ore estive de Europe centrâl + + + CET + CET + CEST + + + + + Ore de Europe orientâl + Ore standard de Europe orientâl + Ore estive de Europe orientâl + + + EET + EET + EEST + + + + + Ore de Europe ocidentâl + Ore standard de Europe ocidentâl + Ore estive de Europe ocidentâl + + + WET + WET + WEST + + + + + GMT + + + + + Ore di Mosche + Ore standard di Mosche + Ore estive di Mosche + + + + + + + , + . + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Dram armen + + + Peso argjentin + + + Selin austriac + + + dolar australian + dolar australian + dolars australians + + + Franc de Belgjiche + + + Franc burundês + + + Dolar dal Brunei + + + real brasilian + real brasilian + real brasilians + + + Rubli bielorùs + + + dolar canadês + dolar canadês + dolars canadês + + + franc svuizar + franc svuizar + francs svuizars + + + yuan cinês + yuan cinês + yuan cinês + + + Vieri dinar serp + + + Peso cuban + + + Corone de Republiche Ceche + + + Marc todesc + + + corone danese + corone danese + coronis danesis + + + Dinar algerin + + + euro + euro + euros + + + Franc francês + + + sterline britaniche + sterline britaniche + sterlinis britanichis + + + dolar di Hong Kong + dolar di Hong Kong + dolars di Hong Kong + + + Dinar cravuat + + + Kuna cravuate + + + rupiah indonesiane + rupiah indonesiane + rupiah indonesianis + + + rupie indiane + rupie indiane + rupiis indianis + + + Rial iranian + + + Lire taliane + + + yen gjaponês + yen gjaponês + yen gjaponês + + + won de Coree dal Sud + won de Coree dal Sud + won de Coree dal Sud + + + Lats leton + + + peso messican + peso messican + pesos messicans + + + Dolar namibian + + + Córdoba oro nicaraguan + + + corone norvegjese + corone norvegjese + coronis norvegjesis + + + Dollar neozelandês + + + Rupie pachistane + + + zloty polac + zloty polac + zloty polacs + + + Dinar serp + + + rubli rus + rubli rus + rublis rus + + + riyal de Arabie Saudite + riyal de Arabie Saudite + riyals de Arabie Saudite + + + corone svedese + corone svedese + coronis svedesis + + + Talar sloven + + + Corone slovache + + + baht tailandês + baht tailandês + baht tailandês + + + Viere Lire turche + + + lire turche + lire turche + liris turchis + + + gnûf dolar taiwanês + gnûf dolar taiwanês + gnûfs dolars taiwanês + + + dolar american + dolar american + dolars americans + + + Dolar american (prossime zornade) + + + Dolar american (stesse zornade) + + + Arint + + + Aur + + + Unitât composite europeane + + + Unitât monetarie europeane + + + Unitât di acont europeane (XBC) + + + Unitât di acont europeane (XBD) + + + Dirits speciâi di incas + + + Franc aur francês + + + Franc UIC francês + + + Paladi + + + Platin + + + fonts RINET + + + codiç di verifiche de monede + + + Monede no valide o no cognossude + Monede no valide o no cognossude + Monedis no validis o no cognossudis + + + rand sudafrican + rand sudafrican + rands sudafricans + + + + + + + {0} zornade + {0} zornadis + + + {0} ore + {0} oris + + + {0} minût + {0} minûts + + + {0} mês + {0} mês + + + {0} secont + {0} seconts + + + {0} setemane + {0} setemanis + + + {0} an + {0} agns + + + + + + {0} e {1} + {0} e {1} + + + + + sì:si:s + no:n + + + + diff --git a/library/Zend/Locale/Data/fur_IT.xml b/library/Zend/Locale/Data/fur_IT.xml new file mode 100755 index 000000000..a922d70fa --- /dev/null +++ b/library/Zend/Locale/Data/fur_IT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/fy.xml b/library/Zend/Locale/Data/fy.xml new file mode 100755 index 000000000..365a280bf --- /dev/null +++ b/library/Zend/Locale/Data/fy.xml @@ -0,0 +1,6954 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Afar + Abchazysk + Atjeesk + Akoli + Adangme + Adyghe + Avestysk + Afrikaansk + Afrihili + Aghem + Ainu + Akan + Akkadysk + Aleut + Sûd-Altaïsk + Amhaarsk + Aragoneesk + âldingelsk + Angika + Arabysk + Modern standert Arabysk + Arameesk + Araukaansk + Arapaho + Arawak + Assameesk + Asu + Asturysk + Avarysk + Awadhi + Aymara + Azerbeidzjaansk + Azeri + Basjkiersk + Baloetsjysk + Balineesk + Basa + Bamoun + Ghomala' + Wyt-Russysk + Beja + Bemba + Bena + Bafut + Bulgaarsk + Bhojpuri + Bislama + Bikol + Bini + Kom + Siksika + Bambara + Bengaalsk + Tibetaansk + Bretonsk + Braj + Bodo + Bosnysk + Akoose + Buriat + Bugineesk + Bulu + Blin + Medumba + Katalaansk + Kaddo + Karibysk + Cayuga + Atsam + Tsjetsjeensk + Cebuano + Chiga + Chamorro + Chibcha + Chagatai + Chuukeesk + Mari + Chinook-jargon + Choctaw + Chipewyan + Cherokee + Cheyenne + Soranî + Korsikaansk + Koptysk + Cree + Krim-Tataarsk + Tsjechysk + Kasjoebysk + Kerkslavysk + Tsjoevasjysk + Welsk + Deensk + Dakota + Dargwa + Taita + Dútsk + Eastenryks Dútsk + Switsersk Heechdútsk + Delaware + Slave + Dogrib + Dinka + Zarma + Dogri + Nedersorbysk + Duala + Middelnederlânsk + Divehi + Jola-Fonyi + Dyula + Dzongkha + Dazaga + Embu + Ewe + Efik + Aldegyptysk + Ekajuk + Gryks + Elamitysk + Ingelsk + Australysk Ingelsk + Kanadeesk Ingelsk + Britsk Ingelsk + Amerikaansk Ingelsk + Middelingelsk + Esperanto + Spaansk + Latynsk-Amerikaansk Spaansk + Europeesk Spaansk + Meksikaansk Spaansk + Estlânsk + Baskysk + Ewondo + Perzysk + Fang + Fanti + Fulah + Finsk + Filipynsk + Fijysk + Faeröersk + Fon + Frânsk + Kanadeesk Frânsk + Switserse Frânsk + Middelfrânsk + Aldfrânsk + Noard-Frysk + East-Frysk + Friulysk + West-Frysk + Iersk + Ga + Gayo + Gbaya + Schotsk Gaelic + Geez + Gilberteesk + Galisysk + Middelheechdútsk + Guaraní + Alsheechdútsk + Gondi + Gorontalo + Gothysk + Grebo + Aldgryks + Switsers Dútsk + Gujarati + Gusii + Manks + Gwichʼin + Hausa + Haida + Hawaïaansk + Hebreeuwsk + Hindi + Hiligaynon + Hettitysk + Hmong + Hiri Motu + Kroatysk + Oppersorbysk + Haïtiaansk + Hongaarsk + Hupa + Armeensk + Herero + Interlingua + Iban + Ibibio + Yndonezysk + Interlingue + Igbo + Sichuan Yi + Inupiaq + Iloko + Ingoesj + Ido + Yslâns + Italiaansk + Inuktitut + Japans + Lojban + Ngomba + Machame + Judeo-Perzysk + Judeo-Arabysk + Javaansk + Georgysk + Karakalpaks + Kabyle + Kachin + Jju + Kamba + Kawi + Kabardysk + Kanembu + Tyap + Makonde + Kaapverdysk Creools + Koro + Kongo + Khasi + Khotaneesk + Koyra Chiini + Kikuyu + Kuanyama + Kazachs + Kako + Grienlâns + Kalenjin + Khmer + Kimbundu + Kannada + Koreaansk + Konkani + Kosraeaansk + Kpelle + Kanuri + Karachay-Balkar + Karelysk + Kurukh + Kasjmiri + Shambala + Bafia + Kölsch + Koerdysk + Koemuks + Kutenai + Komi + Cornish + Kirgizysk + Latyn + Ladino + Langi + Lahnda + Lamba + Luxemburgs + Lezgysk + Ganda + Limburgs + Lakota + Lingala + Laotiaansk + Mongo + Lozi + Litouws + Luba-Katanga + Luba-Lulua + Luiseno + Lunda + Luo + Lushai + Luyia + Letlâns + Madurees + Mafa + Magahi + Maithili + Makassaars + Mandingo + Masai + Maba + Moksha + Mandar + Mende + Meru + Morisyen + Malagasysk + Middeliers + Makhuwa-Meetto + Meta' + Marshallees + Maori + Mi'kmaq + Minangkabau + Macedonysk + Malayalam + Mongools + Mantsjoe + Manipoeri + Mohawk + Mossi + Marathi + Maleis + Maltees + Mundang + Meardere talen + Creek + Mirandees + Marwari + Birmees + Myene + Erzja + Nauruaansk + Napolitaansk + Nama + Noors - Bokmål + Noard-Ndbele + Laagduits + Nepalees + Newari + Ndonga + Nias + Niueaansk + Nederlânsk + Vlaams + Ngumba + Noors - Nynorsk + Ngiemboon + Noors + Nogai + Aldnoarsk + N’ko + Sûd-Ndbele + Noard-Sotho + Nuer + Navajo + Klassiek Newari + Nyanja + Nyamwezi + Nyankole + Nyoro + Nzima + Occitaansk + Ojibwa + Oromo + Odia + Ossetysk + Osage + Ottomaansk-Turks + Punjabi + Pangasinan + Pahlavi + Pampanga + Papiaments + Palauaansk + Aldperzysk + Foenisysk + Pali + Poalsk + Pohnpeiaansk + Aldprovençaals + Pasjtoe + Pashto + Portugeesk + Brazyljaansk Portugees + Europees Portugees + Quechua + Rajasthani + Rapanui + Rarotongan + Reto-Romaansk + Kirundi + Roemeensk + Moldavysk + Rombo + Romani + Root + Russysk + Aromaniaansk + Kinyarwanda + Rwa + Sanskriet + Sandawe + Jakoets + Samaritaansk-Arameesk + Samburu + Sasak + Santali + Ngambay + Sangu + Sardinysk + Siciliaansk + Schots + Sindhi + Noard-Samysk + Seneca + Sena + Selkup + Koyraboro Senni + Sango + Aldyrsk + Servokroatysk + Tashelhiyt + Shan + Tsjadysk Arabysk + Singalees + Sidamo + Slowaaks + Sloveensk + Samoaansk + Sûd-Samysk + Lule Sami + Inari Sami + Skolt Sami + Shona + Soninke + Somalysk + Sogdysk + Albaneesk + Servysk + Sranantongo + Serer + Swazi + Saho + Sûd-Sotho + Soendaneesk + Sukuma + Soesoe + Soemerysk + Zweeds + Swahili + Shimaore + Congo Swahili + Klassiek Syrysk + Syrysk + Tamil + Telugu + Timne + Teso + Tereno + Tetun + Tadzjieks + Thais + Tigrinya + Tigre + Tiv + Turkmeens + Tokelaus + Tagalog + Klingon + Tlingit + Tamashek + Tswana + Tongaansk + Nyasa Tonga + Tok Pisin + Turks + Taroko + Tsonga + Tsimshian + Tataars + Toemboeka + Tuvaluaansk + Twi + Tasawaq + Tahitysk + Tuvinysk + Tamazight (Sintraal-Marokko) + Oedmoerts + Oeigoers + Oegaritysk + Oekraïens + Umbundu + Onbekende taal + Urdu + Oezbeeks + Vai + Venda + Vietnamees + Volapük + Votysk + Vunjo + Waals + Walser + Walamo + Waray + Washo + Wolof + Kalmyk + Xhosa + Soga + Yao + Yapees + Yangben + Yemba + Jiddysk + Yoruba + Kantoneesk + Zhuang + Zapotec + Blissymbolen + Zenaga + Standert Marokkaanske Tamazight + Sineesk + Ferienfâldich Sineesk + Tradisjoneel Sineesk + Zulu + Zuni + Gjin linguïstyske ynhâld + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wrâld + Afrika + Noard-Amerika + Sûd-Amerika + Oceanië + West-Afrika + Midden-Amerika + East-Afrika + Noard-Afrika + Sintraal-Afrika + Sûdelijk Afrika + Amerika + Noardlik Amerika + Karibysk gebiet + East-Azië + Sûd-Azië + Sûdoost-Azië + Sûd-Europa + Australazië + Melanesië + Micronesyske regio + Polynesië + Azië + Sintraal-Azië + West-Azië + Europa + East-Europa + Noard-Europa + West-Europa + Latynsk-Amearika + Ascension + Andorra + Verenigde Arabyske Emiraten + Afghanistan + Antigua en Barbuda + Anguilla + Albanië + Armenië + Nederlânske Antillen + Angola + Antarctica + Argentinië + Amerikaansk Samoa + Eastenryk + Australië + Aruba + Ålân + Azerbeidzjan + Bosnië en Herzegovina + Barbados + Bangladesh + België + Burkina Faso + Bulgarije + Bahrein + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Karibysk Nederlân + Brazilië + Bahama’s + Bhutan + Bouveteilân + Botswana + Wit-Ruslân + Belize + Canada + Kokosilanen + Congo-Kinshasa + Congo (DRC) + Sintraal-Afrikaanske Republyk + Congo-Brazzaville + Congo (Republyk) + Switserlân + Ivoorkust + Cookeilannen + Chili + Kameroen + Sina + Kolombia + Clipperton + Costa Rica + Kuba + Kaapverdië + Curaçao + Krysteilan + Syprus + Tsjechje + Dútslân + Diego Garcia + Djibouti + Denemarken + Dominika + Algerije + Ceuta en Melilla + Ecuador + Estlân + Egypte + Westelijke Sahara + Eritrea + Spanje + Ethiopië + Europeeske Unie + Finlân + Fiji + Falklâneilannen + Falklâneilannen (Islas Malvinas) + Micronesië + Faeröer + Frankrijk + Gabon + Verenigd Koninkrijk + VK + Grenada + Georgië + Frans-Guyana + Guernsey + Ghana + Gibraltar + Grienlân + Gambia + Guinee + Guadeloupe + Equatoriaal-Guinea + Grikelân + Sûd-Georgia en Sûdlike Sandwicheilannen + Guatemala + Guam + Guinee-Bissau + Guyana + Hongkong SAR van Sina + Hongkong + Heard- en McDonaldeilannen + Honduras + Kroatië + Haïti + Hongarije + Kanaryske Eilânnen + Yndonesië + Ierlân + Israël + Isle of Man + India + Britse Gebieden yn de Indyske Oseaan + Irak + Iran + Yslân + Italië + Jersey + Jamaica + Jordanië + Japan + Kenia + Kirgizië + Cambodja + Kiribati + Comoren + Saint Kitts en Nevis + Noard-Korea + Sûd-Korea + Koeweit + Caymaneilannen + Kazachstan + Laos + Libanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litouwen + Luxemburg + Letlân + Libië + Monaco + Moldavië + Montenegro + Saint-Martin + Madeiaskar + Marshalleilannen + Macedonië + Macedonië (FYROM) + Mali + Myanmar (Birma) + Mongolië + Marokko + Macao SAR van Sina + Macao + Noardlike Marianeneilannen + Martinique + Mauritanië + Montserrat + Malta + Mauritius + Maldiven + Malawi + Mexico + Maleisië + Mozambique + Namibië + Nij-Caledonië + Niger + Norfolkeilân + Nigeria + Nicaragua + Nederlân + Noarwegen + Nepal + Nauru + Niue + Nij-Seelân + Oman + Panama + Peru + Frans-Polynesië + Papoea-Nij-Guinea + Filipijnen + Pakistan + Polen + Saint-Pierre en Miquelon + Pitcairneilannen + Puerto Rico + Palestynske gebieten + Palestina + Portugal + Palau + Paraguay + Qatar + Oerig Oceanië + Réunion + Roemenië + Servië + Ruslân + Rwanda + Saoedi-Arabië + Salomonseilannen + Seychellen + Soedan + Zweden + Singapore + Sint-Helena + Slovenië + Spitsbergen en Jan Mayen + Slowakije + Sierra Leone + San Marino + Sûd-Afrika + Senegal + Somalië + Suriname + Sûd-Soedan + Sao Tomé en Principe + El Salvador + Sint-Maarten + Syrië + Swazilân + Tristan da Cunha + Turks- en Caicoseilannen + Tsjaad + Franse Gebieden in de zuidelijke Indyske Oseaan + Togo + Thailân + Tadzjikistan + Tokelau + East-Timor + Turkmenistan + Tunesië + Dominikaanske Republyk + Tonga + Turkije + Trinidad en Tobago + Tuvalu + Taiwan + Tanzania + Oekraïne + Oeganda + Lyts ôflizzen eilannen fan de Ferienigde Staten + Ferienigde Staten + VS + Uruguay + Oezbekistan + Vaticaanstêd + Saint Vincent en de Grenadines + Venezuela + Britse Maagdeneilannen + Amerikaanske Maagdeneilannen + Vietnam + Vanuatu + Wallis en Futuna + Samoa + Kosovo + Jemen + Mayotte + Zambia + Zimbabwe + Unbekend gebiet + + + Tradisjonele Dútske stavering + Standerdisearre Resiaansk stavering + Dútske stavering van 1996 + Let Middelfrânske oant 1606 + Betiit modern Frâns + Akademysk + Romanisering ALA-LC, editie 1997 + Aloekoe dialekt + East-Armeensk + West-Armeensk + Eenvormig Turkse Latynse alfabet + Bauddha + Biskajaansk + San Giorgio/Bila-dialekt + Boontling + Dajnko-alfabet + Vroegmodern Engels + Internationaal Fonetysk Alfabet + Oeralysk Fonetysk Alfabet + Fonxsamp + Hepburn-romanisering + Hoognoors + Itihasa + Jauer + Jyutping + Algemiene stavering + Standert stavering + Laukika + Het Lipovaz-dialekt van het Resiaansk + Luna1918 + Monotonaal + Ndyuka + Natisone-dialekt + Gniva/Njiva-dialekt + Modern Volapük + Oseacco/Osojane-dialekt + Pamaka + Petr1708 + Pinyin + Polytonaal + Computer + Puter + Wizige stavering + Klassiek Volapük + Resiaansk + Rumgr + Saho + Schots standert-Engels + Liverpools (Scouse) + Stolvizza/Solbica-dialekt + Surmiran + Sursilvan + Sutsilvan + Taraskievica-stavering + Ienfoarmige stavering + Ienfoarmige stavering (hersjoen) + Ulster + Vaidika + Valenciaansk + Vallader + Wade-Giles-romanisering + + + Kalender + sortearje van symbolen negeren + Omgekeerd sortearje op accenten + Yndiele op haad/lytse letters + Haadlettergefoelich sortearje + Kana sortearje + Sortearfolgorde + Genormaliseerd sortearje + Numeriek sortearje + Sorteervoorrang + Valuta + Sifers + Tijdzone + Landvariant + sortearje als symbolen + Privégebruik + + + Arabysk-Indyske sifers + Utwreide Arabysk-Indyske sifers + Armeense sifers + Kleine Armeense sifers + Balinese sifers + Bengaalse sifers + Tradisjonele-Sineeske soartear oarder - Big5 + Boeddhistyske kalinder + Sineeske kalinder + Koptyske kalinder + Devanagari sifers + Wurdboeksortearfolgorde + Standert Unikoade-sortearfolgorde + Ethiopyske sifers + Ethiopyske kalinder + Ethiopyske Amete Alem-kalinder + Finansjele sifers + sifers met volledige breedte + Ferienfâldigde-Sineeske sortearfolgorde - GB2312 + Georgyske sifers + Gregoriaanske kalinder + Griekse sifers + Kleine Griekse sifers + Gujarati sifers + Gurmukhi sifers + Sineeske desimale tallen + Ferienfâldigde Sineeske sifers + Ferienfâldigde Sineeske finansjele sifers + Traditjonele Sineeske sifers + Traditjonele Sineeske finansjele sifers + Hebreeuwse sifers + Hebreeuwse kalinder + Alles sortearje + Indiase natjonale kalinder + Islamityske kalinder + Islamityske kalinder (cyclysk) + Japanske kalinder + Javaanske sifers + Japanske sifers + Japanske finansjele sifers + Khmer sifers + Kannada sifers + Laotiaanske sifers + Westerse sifers + Eerst sortearje op kleine letters + Malayalam sifers + Mongoolse sifers + Myanmarese sifers + Binnenlânse sifers + Normaal sortearje neffens accenten + Sortearfolgorde algemien haadletterbrûkme + Net haadlettergefoelich sortearje + Kana apart sortearje + Sûnder normalisaasje sortearje + Sifers apart sortearje + Symbolen sortearje + Oriya sifers + Perzyske kalinder + Telefoanboeksortearfolgorde + Fonetyske sortearfolgorde + Pinyinvolgorde + Allime sortearje neffens letters + sortearje neffens aksinten/haadletterbrûkme/breedte/Kana + Hersjoen sortearfolgorde + Kalinder fan de Sineeske Republyk + Romeinske sifers + Lytse Romeinske sifers + Algemien sykje + Sykje op earste Hangul-medeklinker + Sortearje op accenten + Sortearje zonder symbolen + standert sortearfolgorde + Streeksortearfolgorde + Tradisjonele Tamil sifers + Tamil sifers + Telugu sifers + sortearje neffens aksinten/haadletterbrûkme/breedte + Thaise sifers + Tibetaanske sifers + Tradisjonele sortearfolgorde + Tradisjonele sifers + Sortearfolgorde radicalen/strepen + Eerst sortearje op haadletters + Vai-sifers + Omgekeerd sortearje op accenten + Hoofdlettergevoelig sortearje + Kana oars sortearje + Unicode genormaliseerd sortearje + Sifers numeryk sortearje + + + BGN + Numeriek + Toon + UNGEGN + Accenten + Volledige breedte + Halve breedte + Jamo + Pinyin + Publicatie + + + Metriek + Brits + Amerikaansk + + + Taal: {0} + Skrift: {0} + Regio: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a á ä b c d e é ë f g h i ì ï {ij} {íj\u0301} j k l m n o ò ö p r s t u ú ü v w y ỳ z] + [à â æ è ê ô ù û] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + Rôt + Okse + Tiger + Knyn + Draak + Slang + Hynder + Geit + Aap + Hoanne + Hûn + Baarch + + + + + + + + EEEE d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + dd-MM-yy + + + + + + d + E d + U + MMM U + d MMM U + E d MMM U + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + mm:ss + U + U + M-y + d-M-y + E d-M-y + MMM U + d MMM U + E d MMM U + MMMM U + QQQ U + QQQQ U + + + + + + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + Rôt + Okse + Tiger + Knyn + Draak + Slang + Hynder + Geit + Aap + Hoanne + Hûn + Baarch + + + + + + + + EEEE d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + dd-MM-yy + + + + + + + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + mm:ss + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd-MM - dd-MM + dd-MM - dd-MM + + + E dd-MM - E dd-MM + E dd-MM - E dd-MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MMMM–MMMM + + + y-y G + + + MM-y - MM-y G + MM-y - MM-y G + + + dd-MM-y - dd-MM-y G + dd-MM-y - dd-MM-y G + dd-MM-y - dd-MM-y G + + + E dd-MM-y - E dd-MM-y G + E dd-MM-y - E dd-MM-y G + E dd-MM-y - E dd-MM-y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + MMMM-MMMM y G + MMMM y - MMMM y G + + + + + + + + + jan. + feb. + mrt. + apr. + mai + jun. + jul. + aug. + sep. + okt. + nov. + des. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + jannewaris + febrewaris + maart + april + maaie + juny + july + augustus + septimber + oktober + novimber + desimber + + + + + jan + feb + mrt + apr + mai + jun + jul + aug + sep + okt + nov + des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + jannewaris + febrewaris + maart + april + maaie + juny + july + augustus + septimber + oktober + novimber + desimber + + + + + + + si + mo + ti + wo + to + fr + so + + + Z + M + D + W + D + V + Z + + + si + mo + ti + wo + to + fr + so + + + snein + moandei + tiisdei + woansdei + tongersdei + freed + sneon + + + + + si + mo + ti + wo + to + fr + so + + + Z + M + D + W + D + V + Z + + + si + mo + ti + wo + to + fr + so + + + snein + moandei + tiisdei + woansdei + tongersdei + freed + sneon + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1e kwartaal + 2e kwartaal + 3e kwartaal + 4e kwartaal + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1e kwartaal + 2e kwartaal + 3e kwartaal + 4e kwartaal + + + + + + + 12 oere 's middeis + + + AM + n + PM + + + AM + 12 oere 's middeis + PM + + + + + a.m. + p.m. + + + foarmiddei + p.m. + + + + + + Foar Kristus + foar gewoane jiertelling + nei Kristus + gewoane jiertelling + + + f.Kr. + f.g.j. + n.Kr. + g.j. + + + f.K. + fgj + n.K. + gj + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd-MM-yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + mm:ss + y + M-y + d-M-y + E d-M-y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd-MM - dd-MM + dd-MM - dd-MM + + + E dd-MM - E dd-MM + E dd-MM - E dd-MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MMMM–MMMM + + + y-y + + + MM-y - MM-y + MM-y - MM-y + + + dd-MM-y - dd-MM-y + dd-MM-y - dd-MM-y + dd-MM-y - dd-MM-y + + + E dd-MM-y - E dd-MM-y + E dd-MM-y - E dd-MM-y + E dd-MM-y - E dd-MM-y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + MMMM-MMMM y + MMMM y - MMMM y + + + + + + + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + + + + AM + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + + + + SAKA + + + + + + + + Moeh. + Saf. + Rab. I + Rab. II + Joem. I + Joem. II + Raj. + Sja. + Ram. + Sjaw. + Doe al k. + Doe al h. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Moeharram + Safar + Rabiʻa al awal + Rabiʻa al thani + Joemadʻal awal + Joemadʻal thani + Rajab + Sjaʻaban + Ramadan + Sjawal + Doe al kaʻaba + Doe al hizja + + + + + Moeh. + Saf. + Rab. I + Rab. II + Joem. I + Joem. II + Raj. + Sja. + Ram. + Sjaw. + Doe al k. + Doe al h. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Moeharram + Safar + Rabiʻa al awal + Rabiʻa al thani + Joemadʻal awal + Joemadʻal thani + Rajab + Sjaʻaban + Ramadan + Sjawal + Doe al kaʻaba + Doe al hizja + + + + + + Saʻna Hizjria + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + Taika (645-650) + Hakuchi (650-671) + Hakuhō (672-686) + Shuchō (686-701) + Taihō (701-704) + Keiun (704-708) + Wadō (708-715) + Reiki (715-717) + Yōrō (717-724) + Jinki (724-729) + Tempyō (729-749) + Tempyō-kampō (749-749) + Tempyō-shōhō (749-757) + Tempyō-hōji (757-765) + Temphō-jingo (765-767) + Jingo-keiun (767-770) + Hōki (770-780) + Ten-ō (781-782) + Enryaku (782-806) + Daidō (806-810) + Kōnin (810-824) + Tenchō (824-834) + Jōwa (834-848) + Kajō (848-851) + Ninju (851-854) + Saiko (854-857) + Tennan (857-859) + Jōgan (859-877) + Genkei (877-885) + Ninna (885-889) + Kampyō (889-898) + Shōtai (898-901) + Engi (901-923) + Enchō (923-931) + Shōhei (931-938) + Tengyō (938-947) + Tenryaku (947-957) + Tentoku (957-961) + Ōwa (961-964) + Kōhō (964-968) + Anna (968-970) + Tenroku (970-973) + Ten-en (973-976) + Jōgen (976-978) + Tengen (978-983) + Eikan (983-985) + Kanna (985-987) + Ei-en (987-989) + Eiso (989-990) + Shōryaku (990-995) + Chōtoku (995-999) + Chōhō (999-1004) + Kankō (1004-1012) + Chōwa (1012-1017) + Kannin (1017-1021) + Jian (1021-1024) + Manju (1024-1028) + Chōgen (1028-1037) + Chōryaku (1037-1040) + Chōkyū (1040-1044) + Kantoku (1044-1046) + Eishō (1046-1053) + Tengi (1053-1058) + Kōhei (1058-1065) + Jiryaku (1065-1069) + Enkyū (1069-1074) + Shōho (1074-1077) + Shōryaku (1077-1081) + Eiho (1081-1084) + Ōtoku (1084-1087) + Kanji (1087-1094) + Kaho (1094-1096) + Eichō (1096-1097) + Shōtoku (1097-1099) + Kōwa (1099-1104) + Chōji (1104-1106) + Kashō (1106-1108) + Tennin (1108-1110) + Ten-ei (1110-1113) + Eikyū (1113-1118) + Gen-ei (1118-1120) + Hoan (1120-1124) + Tenji (1124-1126) + Daiji (1126-1131) + Tenshō (1131-1132) + Chōshō (1132-1135) + Hoen (1135-1141) + Eiji (1141-1142) + Kōji (1142-1144) + Tenyō (1144-1145) + Kyūan (1145-1151) + Ninpei (1151-1154) + Kyūju (1154-1156) + Hogen (1156-1159) + Heiji (1159-1160) + Eiryaku (1160-1161) + Ōho (1161-1163) + Chōkan (1163-1165) + Eiman (1165-1166) + Nin-an (1166-1169) + Kaō (1169-1171) + Shōan (1171-1175) + Angen (1175-1177) + Jishō (1177-1181) + Yōwa (1181-1182) + Juei (1182-1184) + Genryuku (1184-1185) + Bunji (1185-1190) + Kenkyū (1190-1199) + Shōji (1199-1201) + Kennin (1201-1204) + Genkyū (1204-1206) + Ken-ei (1206-1207) + Shōgen (1207-1211) + Kenryaku (1211-1213) + Kenpō (1213-1219) + Shōkyū (1219-1222) + Jōō (1222-1224) + Gennin (1224-1225) + Karoku (1225-1227) + Antei (1227-1229) + Kanki (1229-1232) + Jōei (1232-1233) + Tempuku (1233-1234) + Bunryaku (1234-1235) + Katei (1235-1238) + Ryakunin (1238-1239) + En-ō (1239-1240) + Ninji (1240-1243) + Kangen (1243-1247) + Hōji (1247-1249) + Kenchō (1249-1256) + Kōgen (1256-1257) + Shōka (1257-1259) + Shōgen (1259-1260) + Bun-ō (1260-1261) + Kōchō (1261-1264) + Bun-ei (1264-1275) + Kenji (1275-1278) + Kōan (1278-1288) + Shōō (1288-1293) + Einin (1293-1299) + Shōan (1299-1302) + Kengen (1302-1303) + Kagen (1303-1306) + Tokuji (1306-1308) + Enkei (1308-1311) + Ōchō (1311-1312) + Shōwa (1312-1317) + Bunpō (1317-1319) + Genō (1319-1321) + Genkyō (1321-1324) + Shōchū (1324-1326) + Kareki (1326-1329) + Gentoku (1329-1331) + Genkō (1331-1334) + Kemmu (1334-1336) + Engen (1336-1340) + Kōkoku (1340-1346) + Shōhei (1346-1370) + Kentoku (1370-1372) + Bunchū (1372-1375) + Tenju (1375-1379) + Kōryaku (1379-1381) + Kōwa (1381-1384) + Genchū (1384-1392) + Meitoku (1384-1387) + Kakei (1387-1389) + Kōō (1389-1390) + Meitoku (1390-1394) + Ōei (1394-1428) + Shōchō (1428-1429) + Eikyō (1429-1441) + Kakitsu (1441-1444) + Bun-an (1444-1449) + Hōtoku (1449-1452) + Kyōtoku (1452-1455) + Kōshō (1455-1457) + Chōroku (1457-1460) + Kanshō (1460-1466) + Bunshō (1466-1467) + Ōnin (1467-1469) + Bunmei (1469-1487) + Chōkyō (1487-1489) + Entoku (1489-1492) + Meiō (1492-1501) + Bunki (1501-1504) + Eishō (1504-1521) + Taiei (1521-1528) + Kyōroku (1528-1532) + Tenmon (1532-1555) + Kōji (1555-1558) + Eiroku (1558-1570) + Genki (1570-1573) + Tenshō (1573-1592) + Bunroku (1592-1596) + Keichō (1596-1615) + Genwa (1615-1624) + Kan-ei (1624-1644) + Shōho (1644-1648) + Keian (1648-1652) + Shōō (1652-1655) + Meiryaku (1655-1658) + Manji (1658-1661) + Kanbun (1661-1673) + Enpō (1673-1681) + Tenwa (1681-1684) + Jōkyō (1684-1688) + Genroku (1688-1704) + Hōei (1704-1711) + Shōtoku (1711-1716) + Kyōhō (1716-1736) + Genbun (1736-1741) + Kanpō (1741-1744) + Enkyō (1744-1748) + Kan-en (1748-1751) + Hōryaku (1751-1764) + Meiwa (1764-1772) + An-ei (1772-1781) + Tenmei (1781-1789) + Kansei (1789-1801) + Kyōwa (1801-1804) + Bunka (1804-1818) + Bunsei (1818-1830) + Tenpō (1830-1844) + Kōka (1844-1848) + Kaei (1848-1854) + Ansei (1854-1860) + Man-en (1860-1861) + Bunkyū (1861-1864) + Genji (1864-1865) + Keiō (1865-1868) + Meiji + Taishō + Shōwa + Heisei + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + AP + + + + + + + Before R.O.C. + Minguo + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + Tiidsrin + + + Jier + foarich jier + dit jier + folgjend jier + + Oer {0} jier + Oer {0} jier + + + {0} jier lyn + {0} jier lyn + + + + Moanne + foarige moanne + dizze moanne + folgjende moanne + + Oer {0} moanne + Oer {0} moannen + + + {0} moanne lyn + {0} moannen lyn + + + + Wike + foarige wike + dizze wike + folgjende wike + + Oer {0} wike + Oer {0} wiken + + + {0} wike lyn + {0} wiken lyn + + + + dei + eergisteren + gisteren + vandaag + morgen + Oermorgen + + Oer {0} dei + Oer {0} deien + + + {0} dei lyn + {0} deien lyn + + + + dei van de wike + + + ôfrûne snein + dizze snein + folgjende wike snein + + + ôfrûne moandei + dizze moandei + folgjende wike moandei + + + ôfrûne tiisdei + dizze tiisdei + folgjende wike tiisdei + + + ôfrûne woansdei + dizze woansdei + folgjende wike woansdei + + + ôfrûne tongersdei + dizze tongersdei + folgjende wike tongersdei + + + ôfrûne freed + dizze freed + folgjende wike freed + + + ôfrûne sneon + dizze sneon + folgjende wike sneon + + + AM/PM + + + oere + + Oer {0} oere + Oer {0} oere + + + {0} oere lyn + {0} oere lyn + + + + Minút + + Oer {0} minút + Oer {0} minuten + + + {0} minút lyn + {0} minuten lyn + + + + Sekonde + nu + + Oer {0} sekonde + Oer {0} sekonden + + + {0} sekonde lyn + {0} sekonden lyn + + + + Zone + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0}-tiid + Zomertiid {0} + Standaardtiid {0} + {1} ({0}) + + Unbekende stêd + + + Tirana + + + Jerevan + + + Dumont d’Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Wenen + + + Bakoe + + + Brussel + + + Bahrein + + + Saint-Barthélemy + + + Pôrto Velho + + + Cuiabá + + + Belém + + + São Paulo + + + Maceió + + + Atikokan + + + St. John’s + + + Cocoseilannen + + + Zürich + + + Peaskeeilân + + + Sjanghai + + + Bogotá + + + Kaapverdië + + + Curaçao + + + Krysteilân + + + Praach + + + Berlyn + + + Kopenhagen + + + Galápagos + + + Caïro + + + Asmara + + + Kanaryske Eilannen + + + Addis Abeba + + + Chuuk + + + Pohnpei + + + Faeröer + + + Parys + + + + Britse simmertiid + + Londen + + + Nuuk + + + Ittoqqortoormiit + + + Athene + + + Sûd-Georgia + + + Hongkong + + + Boedapest + + + + Ierse simmertiid + + + + Jeruzalem + + + Calcutta + + + Chagosarchipel + + + Bagdad + + + Teheran + + + Tokio + + + Bisjkek + + + Phnom-Penh + + + Enderbury-eilân + + + St. Kitts + + + Koeweit + + + Aqtöbe + + + Alma-Ata + + + Beiroet + + + St. Lucia + + + Luxemburg + + + Maldiven + + + Mazatlán + + + Bahía de Banderas + + + Mexico-stad + + + Mérida + + + Nouméa + + + Kathmandu + + + Marquesaseilannen + + + Gambiereilannen + + + Manilla + + + Warschau + + + Azoren + + + Lissabon + + + Asunción + + + Réunion + + + Boekarest + + + Belgrado + + + Moskou + + + Wolgograd + + + Jekaterinenburg + + + Krasnojarsk + + + Irkoetsk + + + Jakoetsk + + + Sachalin + + + Kamtsjatka + + + Riyad + + + Mahé + + + Khartoem + + + Sint-Helena + + + Sao Tomé + + + Salvador + + + Beneden Prinsen Kwartier + + + Lomé + + + Dusjanbe + + + Asjchabad + + + Istanboel + + + Oezjhorod + + + Zaporizja + + + Beulah, Noard-Dakota + + + New Salem, Noard-Dakota + + + Center, Noard-Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Tasjkent + + + Fatikaanstêd + + + St. Vincent + + + St. Thomas + + + Ho Chi Minhstad + + + + Acre-tiid + Acre-standerttiid + Acre-simmertiid + + + + + Afghaanske tiid + + + + + Sintraal-Afrikaanske tiid + + + + + East-Afrikaanske tiid + + + + + Sûd-Afrikaanske tiid + + + + + West-Afrikaanske tiid + West-Afrikaanske standerttiid + West-Afrikaanske simmertiid + + + + + Alaska-tiid + Alaska-standerttiid + Alaska-simmertiid + + + + + Alma-Ata-tiid + Alma-Ata-standerttiid + Alma-Ata-simmertiid + + + + + Amazone-tiid + Amazone-standerttiid + Amazone-simmertiid + + + + + Central-tiid + Central-standerttiid + Central-simmertiid + + + + + Eastern-tiid + Eastern-standerttiid + Eastern-simmertiid + + + + + Mountain-tiid + Mountain-standerttiid + Mountain-simmertiid + + + + + Pasifik-tiid + Pasifik-standerttiid + Pasifik-simmertiid + + + + + Anadyr-tiid + Anadyr-standerttiid + Anadyr-simmertiid + + + + + Aqtau-tiid + Aqtau-standerttiid + Aqtau-simmertiid + + + + + Aqtöbe-tiid + Aqtöbe-standerttiid + Aqtöbe-simmertiid + + + + + Arabyske tiid + Arabyske standerttiid + Arabyske simmertiid + + + + + Argentynske tiid + Argentynske standerttiid + Argentynske simmertiid + + + + + West-Argentynske tiid + West-Argentynske standerttiid + West-Argentynske simmertiid + + + + + Armeense tiid + Armeense standerttiid + Armeense simmertiid + + + + + Atlantic-tiid + Atlantic-standerttiid + Atlantic-simmertiid + + + + + Midden-Australyske tiid + Midden-Australyske standerttiid + Midden-Australyske simmertiid + + + + + Midden-Australyske westelijke tiid + Midden-Australyske westelijke standerttiid + Midden-Australyske westelijke simmertiid + + + + + East-Australyske tiid + East-Australyske standerttiid + East-Australyske simmertiid + + + + + West-Australyske tiid + West-Australyske standerttiid + West-Australyske simmertiid + + + + + Azerbeidzjaanske tiid + Azerbeidzjaanske standerttiid + Azerbeidzjaanske simmertiid + + + + + Azoren-tiid + Azoren-standerttiid + Azoren-simmertiid + + + + + Bengalese tiid + Bengalese standerttiid + Bengalese simmertiid + + + + + Bhutaanske tiid + + + + + Boliviaanske tiid + + + + + Brazyljaanske tiid + Brazyljaanske standerttiid + Brazyljaanske simmertiid + + + + + Bruneise tiid + + + + + Kaapverdyske tiid + Kaapverdyske standerttiid + Kaapverdyske simmertiid + + + + + Chamorro-tiid + + + + + Chatham tiid + Chatham standerttiid + Chatham simmertiid + + + + + Sileenske tiid + Sileenske standerttiid + Sileenske simmertiid + + + + + Sineeske tiid + Sineeske standerttiid + Sineeske simmertiid + + + + + Tsjojbalsan tiid + Tsjojbalsan standerttiid + Tsjojbalsan simmertiid + + + + + Krysteilânske tiid + + + + + Kokoseilânske tiid + + + + + Kolombiaanske tiid + Kolombiaanske standerttiid + Kolombiaanske simmertiid + + + + + Cookeilânse tiid + Cookeilânse standerttiid + Cookeilânse halve simmertiid + + + + + Kubaanske tiid + Kubaanske standerttiid + Kubaanske simmertiid + + + + + Davis tiid + + + + + Dumont-d'Urville tiid + + + + + East-Timorese tiid + + + + + Peaskeeilânske tiid + Peaskeeilânske standerttiid + Peaskeeilânske simmertiid + + + + + Ecuadoraanske tiid + + + + + Midden-Europeeske tiid + Midden-Europeeske standerttiid + Midden-Europeeske simmertiid + + + CET + CET + CEST + + + + + East-Europeeske tiid + East-Europeeske standerttiid + East-Europeeske simmertiid + + + EET + EET + EEST + + + + + West-Europeeske tiid + West-Europeeske standerttiid + West-Europeeske simmertiid + + + WET + WET + WEST + + + + + Falklâneilânske tiid + Falklâneilânske standerttiid + Falklâneilânske simmertiid + + + + + Fijyske tiid + Fijyske standerttiid + Fijyske simmertiid + + + + + Frâns-Guyaanske tiid + + + + + Frânske Súdlike en Antarctyske tiid + + + + + Galapagoseilânske tiid + + + + + Gambiereilânske tiid + + + + + Georgyske tiid + Georgyske standerttiid + Georgyske simmertiid + + + + + Gilberteilânske tiid + + + + + Greenwich Mean Time + + + + + East-Groenlânske tiid + East-Groenlânske standerttiid + East-Groenlânske simmertiid + + + + + West-Groenlânske tiid + West-Groenlânske standerttiid + West-Groenlânske simmertiid + + + + + Guamese standerttiid + + + + + Golf standerttiid + + + + + Guyaanske tiid + + + + + Hawaii-Aleoetyske tiid + Hawaii-Aleoetyske standerttiid + Hawaii-Aleoetyske simmertiid + + + + + Hongkongse tiid + Hongkongse standerttiid + Hongkongse simmertiid + + + + + Hovd tiid + Hovd standerttiid + Hovd simmertiid + + + + + Yndiaaske tiid + + + + + Yndyske Oceaan-tiid + + + + + Yndochinese tiid + + + + + Sintraal-Yndonezyske tiid + + + + + East-Yndonezyske tiid + + + + + West-Yndonezyske tiid + + + + + Iraanske tiid + Iraanske standerttiid + Iraanske simmertiid + + + + + Irkoetsk-tiid + Irkoetsk-standerttiid + Irkoetsk-simmertiid + + + + + Israëlyske tiid + Israëlyske standerttiid + Israëlyske simmertiid + + + + + Japanske tiid + Japanske standerttiid + Japanske simmertiid + + + + + Petropavlovsk-Kamtsjatski-tiid + Petropavlovsk-Kamtsjatski-standerttiid + Petropavlovsk-Kamtsjatski-simmertiid + + + + + East-Kazachse tiid + + + + + West-Kazachse tiid + + + + + Koreaanske tiid + Koreaanske standerttiid + Koreaanske simmertiid + + + + + Kosraese tiid + + + + + Krasnojarsk-tiid + Krasnojarsk-standerttiid + Krasnojarsk-simmertiid + + + + + Kirgizyske tiid + + + + + Lanka-tiid + + + + + Line-eilânske tiid + + + + + Lord Howe-eilânske tiid + Lord Howe-eilânske standerttiid + Lord Howe-eilânske simmertiid + + + + + Macause tiid + Macause standerttiid + Macause simmertiid + + + + + Macquarie-eilânske tiid + + + + + Magadan-tiid + Magadan-standerttiid + Magadan-simmertiid + + + + + Maleisyske tiid + + + + + Maldivyske tiid + + + + + Marquesaseilânske tiid + + + + + Marshalleilânske tiid + + + + + Mauritiaanske tiid + Mauritiaanske standerttiid + Mauritiaanske simmertiid + + + + + Mawson tiid + + + + + Ulaanbaatar tiid + Ulaanbaatar standerttiid + Ulaanbaatar simmertiid + + + + + Moskou-tiid + Moskou-standerttiid + Moskou-simmertiid + + + + + Myanmarese tiid + + + + + Nauruaanske tiid + + + + + Nepalese tiid + + + + + Nij-Kaledonyske tiid + Nij-Kaledonyske standerttiid + Nij-Kaledonyske simmertiid + + + + + Nij-Seelânske tiid + Nij-Seelânske standerttiid + Nij-Seelânske simmertiid + + + + + Newfoundlânske-tiid + Newfoundlânske-standerttiid + Newfoundlânske-simmertiid + + + + + Niuese tiid + + + + + Norfolkeilânske tiid + + + + + Fernando de Noronha-tiid + Fernando de Noronha-standerttiid + Fernando de Noronha-simmertiid + + + + + Noardlike Mariaanske tiid + + + + + Novosibirsk-tiid + Novosibirsk-standerttiid + Novosibirsk-simmertiid + + + + + Omsk-tiid + Omsk-standerttiid + Omsk-simmertiid + + + + + Pakistaanske tiid + Pakistaanske standerttiid + Pakistaanske simmertiid + + + + + Belause tiid + + + + + Papoea-Nij-Guineeske tiid + + + + + Paraguayaanske tiid + Paraguayaanske standerttiid + Paraguayaanske simmertiid + + + + + Peruaanske tiid + Peruaanske standerttiid + Peruaanske simmertiid + + + + + Filipijnse tiid + Filipijnse standerttiid + Filipijnse simmertiid + + + + + Phoenixeilânske tiid + + + + + Saint Pierre en Miquelon-tiid + Saint Pierre en Miquelon-standerttiid + Saint Pierre en Miquelon-simmertiid + + + + + Pitcairneillânske tiid + + + + + Pohnpei tiid + + + + + Qyzylorda-tiid + Qyzylorda-standerttiid + Qyzylorda-simmertiid + + + + + Réunionse tiid + + + + + Rothera tiid + + + + + Sachalin-tiid + Sachalin-standerttiid + Sachalin-simmertiid + + + + + Samara-tiid + Samara-standerttiid + Samara-simmertiid + + + + + Samoaanske tiid + Samoaanske standerttiid + Samoaanske simmertiid + + + + + Seychelse tiid + + + + + Singaporese standerttiid + + + + + Salomonseilânske tiid + + + + + Sûd-Georgyske tiid + + + + + Surinaamske tiid + + + + + Syowa tiid + + + + + Tahitiaanske tiid + + + + + Taipei tiid + Taipei standerttiid + Taipei simmertiid + + + + + Tadzjiekse tiid + + + + + Tokelau-eilânske tiid + + + + + Tongaanske tiid + Tongaanske standerttiid + Tongaanske simmertiid + + + + + Chuukse tiid + + + + + Turkmeense tiid + Turkmeense standerttiid + Turkmeense simmertiid + + + + + Tuvaluaanske tiid + + + + + Uruguayaanske tiid + Uruguayaanske standerttiid + Uruguayaanske simmertiid + + + + + Oezbeekse tiid + Oezbeekse standerttiid + Oezbeekse simmertiid + + + + + Vanuatuaanske tiid + Vanuatuaanske standerttiid + Vanuatuaanske simmertiid + + + + + Fenezolaanske tiid + + + + + Vladivostok-tiid + Vladivostok-standerttiid + Vladivostok-simmertiid + + + + + Wolgograd-tiid + Wolgograd-standerttiid + Wolgograd-simmertiid + + + + + Vostok tiid + + + + + Wake-eilânske tiid + + + + + Wallis en Futunase tiid + + + + + Jakoetsk-tiid + Jakoetsk-standerttiid + Jakoetsk-simmertiid + + + + + Jekaterinenburg-tiid + Jekaterinenburg-standerttiid + Jekaterinenburg-simmertiid + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tûzen + 0 tûzen + 00 tûzen + 00 tûzen + 000 tûzen + 000 tûzen + 0 miljoen + 0 miljoen + 00 miljoen + 00 miljoen + 000 miljoen + 000 miljoen + 0 miljard + 0 miljard + 00 miljard + 00 miljard + 000 miljard + 000 miljard + 0 biljoen + 0 biljoen + 00 biljoen + 00 biljoen + 000 biljoen + 000 biljoen + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0 mln'.' + 0 mln'.' + 00 mln'.' + 00 mln'.' + 000 mln'.' + 000 mln'.' + 0 mld'.' + 0 mld'.' + 00 mld'.' + 00 mld'.' + 000 mld'.' + 000 mld'.' + 0 bln'.' + 0 bln'.' + 00 bln'.' + 00 bln'.' + 000 bln'.' + 000 bln'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00;¤ #,##0.00- + + + ¤ #,##0.00;(¤ #,##0.00) + + + {0} {1} + {0} {1} + + + + Andorrese peseta + Andorrese peseta + Andorrese peseta + + + Verenigde Arabyske Emiraten-dirham + VAE-dirham + VAE-dirham + + + Afghani (1927–2002) + Afghani (AFA) + Afghani (AFA) + + + Afghaanske afghani + Afghaanske afghani + Afghaanske afghani + + + Albanese lek + Albanese lek + Albanese lek + + + Armeense dram + Armeense dram + Armeense dram + + + Nederlânsk-Antilliaanske gûne + Nederlânsk-Antilliaanske gûne + Nederlânsk-Antilliaanske gûne + + + Angolese kwanza + Angolese kwanza + Angolese kwanza + + + Angolese kwanza (1977–1990) + Angolese kwanza (1977–1990) + Angolese kwanza (1977–1990) + + + Angolese nieuwe kwanza (1990–2000) + Angolese nieuwe kwanza (1990–2000) + Angolese nieuwe kwanza (1990–2000) + + + Angolese kwanza reajustado (1995–1999) + Angolese kwanza reajustado (1995–1999) + Angolese kwanza reajustado (1995–1999) + + + Argentynske austral + Argentynske austral + Argentynske austral + + + Argentynske peso ley (1970–1983) + Argentynske peso ley (1970–1983) + Argentynske peso ley (1970–1983) + + + Argentynske peso (1881–1970) + Argentynske peso (1881–1970) + Argentynske peso (1881–1970) + + + Argentynske peso (1983–1985) + Argentynske peso (1983–1985) + Argentynske peso (1983–1985) + + + Argentynske peso + Argentynske peso + Argentynske peso + + + Eastenrykse schilling + Eastenrykse schilling + Eastenrykse schilling + + + Australyske dollar + Australyske dollar + Australyske dollar + AU$ + + + Arubaanske gulden + Arubaanske gulden + Arubaanske gulden + + + Azerbeidzjaanske manat (1993–2006) + Azerbeidzjaanske manat (1993–2006) + Azerbeidzjaanske manat (1993–2006) + + + Azerbeidzjaanske manat + Azerbeidzjaanske manat + Azerbeidzjaanske manat + + + Bosnyske dinar + Bosnyske dinar + Bosnyske dinar + + + Bosnyske convertibele mark + Bosnyske convertibele mark + Bosnyske convertibele mark + + + Nije Bosnyske dinar (1994–1997) + Nije Bosnyske dinar (1994–1997) + Nije Bosnyske dinar (1994–1997) + + + Barbadaanske dollar + Barbadaanske dollar + Barbadaanske dollar + + + Bengalese taka + Bengalese taka + Bengalese taka + + + Belgyske frank (convertibel) + Belgyske frank (convertibel) + Belgyske frank (convertibel) + + + Belgyske frank + Belgyske frank + Belgyske frank + + + Belgyske frank (finansjeel) + Belgyske frank (finansjeel) + Belgyske frank (finansjeel) + + + Bulgaarse harde lev + Bulgaarse harde lev + Bulgaarse harde lev + + + Bulgaarse socialistyske lev + Bulgaarse socialistyske lev + Bulgaarse socialistyske lev + + + Bulgaarse lev + Bulgaarse lev + Bulgaarse leva + + + Bulgaarse lev (1879–1952) + Bulgaarse lev (1879–1952) + Bulgaarse lev (1879–1952) + + + Bahreinse dinar + Bahreinse dinar + Bahreinse dinar + + + Burundese frank + Burundese frank + Burundese frank + + + Bermuda-dollar + Bermuda-dollar + Bermuda-dollar + + + Bruneise dollar + Bruneise dollar + Bruneise dollar + + + Boliviaanske boliviano + Boliviaanske boliviano + Boliviaanske boliviano + + + Boliviaanske boliviano (1863–1963) + Boliviaanske boliviano (1863–1963) + Boliviaanske boliviano (1863–1963) + + + Boliviaanske peso + Boliviaanske peso + Boliviaanske peso + + + Boliviaanske mvdol + Boliviaanske mvdol + Boliviaanske mvdol + + + Braziliaanske cruzeiro novo (1967–1986) + Braziliaanske cruzeiro novo (1967–1986) + Braziliaanske cruzeiro novo (1967–1986) + + + Braziliaanske cruzado + Braziliaanske cruzado + Braziliaanske cruzado + + + Braziliaanske cruzeiro (1990–1993) + Braziliaanske cruzeiro (1990–1993) + Braziliaanske cruzeiro (1990–1993) + + + Braziliaanske real + Braziliaanske real + Braziliaanske real + R$ + + + Braziliaanske cruzado novo + Braziliaanske cruzado novo + Braziliaanske cruzado novo + + + Braziliaanske cruzeiro + Braziliaanske cruzeiro + Braziliaanske cruzeiro + + + Braziliaanske cruzeiro (1942–1967) + Braziliaanske cruzeiro (1942–1967) + Braziliaanske cruzeiro (1942–1967) + + + Bahamaanske dollar + Bahamaanske dollar + Bahamaanske dollar + + + Bhutaanske ngultrum + Bhutaanske ngultrum + Bhutaanske ngultrum + + + Birmese kyat + Birmese kyat + Birmese kyat + + + Botswaanske pula + Botswaanske pula + Botswaanske pula + + + Wit-Russyske nieuwe roebel (1994–1999) + Wit-Russyske nieuwe roebel (1994–1999) + Wit-Russyske nieuwe roebel (1994–1999) + + + Wit-Russyske roebel + Wit-Russyske roebel + Wit-Russyske roebel + + + Belizaanske dollar + Belizaanske dollar + Belizaanske dollar + + + Canadese dollar + Canadese dollar + Canadese dollar + C$ + + + Congolese frank + Congolese frank + Congolese frank + + + WIR euro + WIR euro + WIR euro + + + Zwitserse frank + Zwitserse frank + Zwitserse frank + + + WIR franc + WIR franc + WIR franc + + + Sileenske escudo + Sileenske escudo + Sileenske escudo + + + Sileenske unidades de fomento + Sileenske unidades de fomento + Sileenske unidades de fomento + + + Sileenske peso + Sileenske peso + Sileenske peso + + + Sineeske yuan renminbi + Sineeske renminbi + Sineeske renminbi + CN¥ + + + Kolombiaanske peso + Kolombiaanske peso + Kolombiaanske peso + + + Unidad de Valor Real + Unidad de Valor Real + Unidad de Valor Real + + + Costaricaanske colón + Costaricaanske colón + Costaricaanske colón + + + Alde Servyske dinar + Alde Servyske dinar + Alde Servyske dinar + + + Tsjechoslowaakse harde koruna + Tsjechoslowaakse harde koruna + Tsjechoslowaakse harde koruna + + + Kubaanske convertibele peso + Kubaanske convertibele peso + Kubaanske convertibele peso + + + Kubaanske peso + Kubaanske peso + Kubaanske peso + + + Kaapverdyske escudo + Kaapverdyske escudo + Kaapverdyske escudo + + + Cyprysk pûn + Cyprysk pûn + Cyprysk pûn + + + Tsjechyske kroon + Tsjechyske kroon + Tsjechyske kronen + + + East-Dútske ostmark + East-Dútske ostmark + East-Dútske ostmark + + + Dútske mark + Dútske mark + Dútske mark + + + Djiboutiaanske frank + Djiboutiaanske frank + Djiboutiaanske frank + + + Deenske kroon + Deenske kroon + Deenske kronen + + + Dominikaanske peso + Dominikaanske peso + Dominikaanske peso + + + Algerynske dinar + Algerynske dinar + Algerynske dinar + + + Ecuadoraanske sucre + Ecuadoraanske sucre + Ecuadoraanske sucre + + + Ecuadoraanske unidad de valor constante (UVC) + Ecuadoraanske unidad de valor constante (UVC) + Ecuadoraanske unidad de valor constante (UVC) + + + Estlânske kroon + Estlânske kroon + Estlânske kroon + + + Egyptysk pûn + Egyptysk pûn + Egyptysk pûn + + + Eritrese nakfa + Eritrese nakfa + Eritrese nakfa + + + Spaanske peseta (account A) + Spaanske peseta (account A) + Spaanske peseta (account A) + + + Spaanske peseta (convertibele account) + Spaanske peseta (convertibele account) + Spaanske peseta (convertibele account) + + + Spaanske peseta + Spaanske peseta + Spaanske peseta + + + Ethiopyske birr + Ethiopyske birr + Ethiopyske birr + + + Euro + euro + euro + + + + Finse markka + Finse markka + Finse markka + + + Fiji-dollar + Fiji-dollar + Fiji-dollar + FJ$ + + + Falklâneilânske pûn + Falklâneilânske pûn + Falklâneilânske pûn + + + Franske franc + Franske franc + Franske franc + + + Brits pûn sterling + Brits pûn sterling + Brits pûn sterling + £ + + + Georgyske kupon larit + Georgyske kupon larit + Georgyske kupon larit + + + Georgyske lari + Georgyske lari + Georgyske lari + + + Ghanese cedi (1979–2007) + Ghanese cedi (1979–2007) + Ghanese cedi (1979–2007) + + + Ghanese cedi + Ghanese cedi + Ghanese cedi + + + Gibraltarees pûn + Gibraltarees pûn + Gibraltarees pûn + + + Gambiaanske dalasi + Gambiaanske dalasi + Gambiaanske dalasi + + + Guinese franc + Guinese franc + Guinese franc + + + Guinese syli + Guinese syli + Guinese syli + + + Equatoriaal-Guinese ekwele guineana + Equatoriaal-Guinese ekwele guineana + Equatoriaal-Guinese ekwele guineana + + + Grykse drachme + Grykse drachme + Grykse drachme + + + Guatemalteekse quetzal + Guatemalteekse quetzal + Guatemalteekse quetzal + + + Portugees-Guinese escudo + Portugees-Guinese escudo + Portugees-Guinese escudo + + + Guinee-Bissause peso + Guinee-Bissause peso + Guinee-Bissause peso + + + Guyaanske dollar + Guyaanske dollar + Guyaanske dollar + + + Hongkongske dollar + Hongkongske dollar + Hongkongske dollar + HK$ + + + Hondurese lempira + Hondurese lempira + Hondurese lempira + + + Kroatyske dinar + Kroatyske dinar + Kroatyske dinar + + + Kroatyske kuna + Kroatyske kuna + Kroatyske kuna + + + Haïtiaanske gourde + Haïtiaanske gourde + Haïtiaanske gourde + + + Hongaarse forint + Hongaarse forint + Hongaarse forint + + + Indonesyske roepia + Indonesyske roepia + Indonesyske roepia + + + Ierske pûn + Ierske pûn + Ierske pûn + + + Israëlysk pûn + Israëlysk pûn + Israëlysk pûn + + + Israëlyske nieuwe shekel + Israëlyske nieuwe shekel + Israëlyske nieuwe shekel + + + + Indiase roepie + Indiase roepie + Indiase roepie + + + + Iraakse dinar + Iraakse dinar + Iraakse dinar + + + Iraanske rial + Iraanske rial + Iraanske rial + + + Yslânske kroon + Yslânske kroon + Yslânske kronen + + + Italiaanske lire + Italiaanske lire + Italiaanske lire + + + Jamaikaanske dollar + Jamaikaanske dollar + Jamaikaanske dollar + + + Jordaanske dinar + Jordaanske dinar + Jordaanske dinar + + + Japanse yen + Japanse yen + Japanse yen + JP¥ + + + Keniaanske shilling + Keniaanske shilling + Keniaanske shilling + + + Kirgizyske som + Kirgizyske som + Kirgizyske som + + + Kambodjaanske riel + Kambodjaanske riel + Kambodjaanske riel + + + Komorese frank + Komorese frank + Komorese frank + + + Noard-Koreaanske won + Noard-Koreaanske won + Noard-Koreaanske won + + + Sûd-Koreaanske hwan (1953–1962) + Sûd-Koreaanske hwan (1953–1962) + Sûd-Koreaanske hwan (1953–1962) + + + Alde Sûd-Koreaanske won (1945–1953) + Alde Sûd-Koreaanske won (1945–1953) + Alde Sûd-Koreaanske won (1945–1953) + + + Sûd-Koreaanske won + Sûd-Koreaanske won + Sûd-Koreaanske won + + + + Koeweitse dinar + Koeweitse dinar + Koeweitse dinar + + + Caymaneilânske dollar + Caymaneilânske dollar + Caymaneilânske dollar + + + Kazachstaanske tenge + Kazachstaanske tenge + Kazachstaanske tenge + + + Laotiaanske kip + Laotiaanske kip + Laotiaanske kip + + + Libaneeske pûn + Libaneeske pûn + Libaneeske pûn + + + Sri Lankaanske roepie + Sri Lankaanske roepie + Sri Lankaanske roepie + + + Liberiaanske dollar + Liberiaanske dollar + Liberiaanske dollar + + + Lesothaanske loti + Lesothaanske loti + Lesothaanske loti + + + Litouwse litas + Litouwse litas + Litouwse litas + + + Litouwse talonas + Litouwse talonas + Litouwse talonas + + + Lúksemboargske convertibele franc + Lúksemboargske convertibele franc + Lúksemboargske convertibele franc + + + Lúksemboargske frank + Lúksemboargske frank + Lúksemboargske frank + + + Lúksemboargske finansjele franc + Lúksemboargske finansjele franc + Lúksemboargske finansjele franc + + + Letse lats + Letse lats + Letse lats + + + Letse roebel + Letse roebel + Letse roebel + + + Libyske dinar + Libyske dinar + Libyske dinar + + + Marokkaanske dirham + Marokkaanske dirham + Marokkaanske dirham + + + Marokkaanske franc + Marokkaanske franc + Marokkaanske franc + + + Monegaskyske frank + Monegaskyske frank + Monegaskyske frank + + + Moldavyske cupon + Moldavyske cupon + Moldavyske cupon + + + Moldavyske leu + Moldavyske leu + Moldavyske leu + + + Malagassyske ariary + Malagassyske ariary + Malagassyske ariary + + + Malagassyske franc + Malagassyske franc + Malagassyske franc + + + Macedonyske denar + Macedonyske denar + Macedonyske denar + + + Macedonyske denar (1992–1993) + Macedonyske denar (1992–1993) + Macedonyske denar (1992–1993) + + + Malinese franc + Malinese franc + Malinese franc + + + Myanmarese kyat + Myanmarese kyat + Myanmarese kyat + + + Mongoalske tugrik + Mongoalske tugrik + Mongoalske tugrik + + + Macause pataca + Macause pataca + Macause pataca + + + Mauritaanske ouguiya + Mauritaanske ouguiya + Mauritaanske ouguiya + + + Maltese lire + Maltese lire + Maltese lire + + + Maltees pûn + Maltees pûn + Maltees pûn + + + Mauritiaanske roepie + Mauritiaanske roepie + Mauritiaanske roepie + + + Maldivyske rufiyaa + Maldivyske rufiyaa + Maldivyske rufiyaa + + + Malawyske kwacha + Malawyske kwacha + Malawyske kwacha + + + Meksikaanske peso + Meksikaanske peso + Meksikaanske peso + MX$ + + + Meksikaanske sulveren peso (1861–1992) + Meksikaanske sulveren peso (1861–1992) + Meksikaanske sulveren peso (1861–1992) + + + Meksikaanske unidad de inversion (UDI) + Meksikaanske unidad de inversion (UDI) + Meksikaanske unidad de inversion (UDI) + + + Maleisyske ringgit + Maleisyske ringgit + Maleisyske ringgit + + + Mozambikaanske escudo + Mozambikaanske escudo + Mozambikaanske escudo + + + Alde Mozambikaanske metical + Alde Mozambikaanske metical + Alde Mozambikaanske metical + + + Mozambikaanske metical + Mozambikaanske metical + Mozambikaanske metical + + + Namibyske dollar + Namibyske dollar + Namibyske dollar + + + Nigeriaanske naira + Nigeriaanske naira + Nigeriaanske naira + + + Nicaraguaanske córdoba (1988–1991) + Nicaraguaanske córdoba (1988–1991) + Nicaraguaanske córdoba (1988–1991) + + + Nicaraguaanske córdoba + Nicaraguaanske córdoba + Nicaraguaanske córdoba + + + Nederlânske gûne + Nederlânske gûne + Nederlânske gûne + + + Noarske kroon + Noarske kroon + Noarske kronen + + + Nepalese roepie + Nepalese roepie + Nepalese roepie + + + Nij-Seelânske dollar + Nij-Seelânske dollar + Nij-Seelânske dollar + NZ$ + + + Omaanske rial + Omaanske rial + Omaanske rial + + + Panamese balboa + Panamese balboa + Panamese balboa + + + Peruaanske inti + Peruaanske inti + Peruaanske inti + + + Peruaanske nieuwe sol + Peruaanske nieuwe sol + Peruaanske nieuwe sol + + + Peruaanske sol + Peruaanske sol + Peruaanske sol + + + Papuaanske kina + Papuaanske kina + Papuaanske kina + + + Filipynske peso + Filipynske peso + Filipynske peso + + + Pakistaanske roepie + Pakistaanske roepie + Pakistaanske roepie + + + Poalske zloty + Poalske zloty + Poalske zloty + + + Poalske zloty (1950–1995) + Poalske zloty (1950–1995) + Poalske zloty (1950–1995) + + + Portugeeske escudo + Portugeeske escudo + Portugeeske escudo + + + Paraguayaanske guarani + Paraguayaanske guarani + Paraguayaanske guarani + + + Katarese rial + Katarese rial + Katarese rial + + + Rhodesyske dollar + Rhodesyske dollar + Rhodesyske dollar + + + Alde Roemeenske leu + Alde Roemeenske leu + Alde Roemeenske leu + + + Roemeenske leu + Roemeenske leu + Roemeenske leu + + + Servyske dinar + Servyske dinar + Servyske dinar + + + Russyske roebel + Russyske roebel + Russyske roebel + + + Russyske roebel (1991–1998) + Russyske roebel (1991–1998) + Russyske roebel (1991–1998) + + + Rwandese frank + Rwandese frank + Rwandese frank + + + Saoedi-Arabyske riyal + Saoedi-Arabyske riyal + Saoedi-Arabyske riyal + + + Salomon-dollar + Salomon-dollar + Salomon-dollar + SI$ + + + Seychelse roepie + Seychelse roepie + Seychelse roepie + + + Soedaneeske dinar + Soedaneeske dinar + Soedaneeske dinar + + + Soedaneeske pûn + Soedaneeske pûn + Soedaneeske pûn + + + Soedaneeske pûn (1957–1998) + Soedaneeske pûn (1957–1998) + Soedaneeske pûn (1957–1998) + + + Sweedske kroon + Sweedske kroon + Sweedske kronen + + + Singaporese dollar + Singaporese dollar + Singaporese dollar + + + Sint-Heleenske pûn + Sint-Heleenske pûn + Sint-Heleenske pûn + + + Sloveenske tolar + Sloveenske tolar + Sloveenske tolar + + + Slowaakse koruna + Slowaakse koruna + Slowaakse koruna + + + Sierraleoonse leone + Sierraleoonse leone + Sierraleoonse leone + + + Somalyske shilling + Somalyske shilling + Somalyske shilling + + + Surinaamske dollar + Surinaamske dollar + Surinaamske dollar + + + Surinaamske gulden + Surinaamske gulden + Surinaamske gulden + + + Sûd-Soedaneeske pûn + Sûd-Soedaneeske pûn + Sûd-Soedaneeske pûn + + + Santomese dobra + Santomese dobra + Santomese dobra + + + Sovjet-roebel + Sovjet-roebel + Sovjet-roebel + + + Salvadoraanske colón + Salvadoraanske colón + Salvadoraanske colón + + + Syrysk pûn + Syrysk pûn + Syrysk pûn + + + Swazyske lilangeni + Swazyske lilangeni + Swazyske lilangeni + + + Thaise baht + Thaise baht + Thaise baht + ฿ + + + Tadzjikistaanske roebel + Tadzjikistaanske roebel + Tadzjikistaanske roebel + + + Tadzjikistaanske somoni + Tadzjikistaanske somoni + Tadzjikistaanske somoni + + + Turkmeense manat (1993–2009) + Turkmeense manat (1993–2009) + Turkmeense manat (1993–2009) + + + Turkmeense manat + Turkmeense manat + Turkmeense manat + + + Tunesyske dinar + Tunesyske dinar + Tunesyske dinar + + + Tongaanske paʻanga + Tongaanske paʻanga + Tongaanske paʻanga + + + Timorese escudo + Timorese escudo + Timorese escudo + + + Turkse lire + Alde Turkse lira + Alde Turkse lira + + + Turkse lira + Turkse lira + Turkse lira + + + Trinidad en Tobago-dollar + Trinidad en Tobago-dollar + Trinidad en Tobago-dollar + + + Nije Taiwanese dollar + Nije Taiwanese dollar + Nije Taiwanese dollar + NT$ + + + Tanzaniaanske shilling + Tanzaniaanske shilling + Tanzaniaanske shilling + + + Oekraïense hryvnia + Oekraïense hryvnia + Oekraïense hryvnia + + + Oekraïense karbovanetz + Oekraïense karbovanetz + Oekraïense karbovanetz + + + Oegandese shilling (1966–1987) + Oegandese shilling (1966–1987) + Oegandese shilling (1966–1987) + + + Oegandese shilling + Oegandese shilling + Oegandese shilling + + + Amerikaanske dollar + Amerikaanske dollar + Amerikaanske dollar + US$ + + + Amerikaanske dollar (folgjende dei) + Amerikaanske dollar (folgjende dei) + Amerikaanske dollar (folgjende dei) + + + Amerikaanske dollar (zelfde dei) + Amerikaanske dollar (Selfde dei) + Amerikaanske dollar (Selfde dei) + + + Uruguayaanske peso en geïndexeerde eenheden + Uruguayaanske peso en geïndexeerde eenheden + Uruguayaanske peso en geïndexeerde eenheden + + + Uruguayaanske peso (1975–1993) + Uruguayaanske peso (1975–1993) + Uruguayaanske peso (1975–1993) + + + Uruguayaanske peso + Uruguayaanske peso + Uruguayaanske peso + + + Oezbekistaanske sum + Oezbekistaanske sum + Oezbekistaanske sum + + + Fenezolaanske bolivar (1871–2008) + Fenezolaanske bolivar (1871–2008) + Fenezolaanske bolivar (1871–2008) + + + Fenezolaanske bolivar + Fenezolaanske bolivar + Fenezolaanske bolivar + + + Fietnameeske dong + Fietnameeske dong + Fietnameeske dong + + + + Alde Fietnameeske dong (1978–1985) + Alde Fietnameeske dong (1978–1985) + Alde Fietnameeske dong (1978–1985) + + + Vanuatuaanske vatu + Vanuatuaanske vatu + Vanuatuaanske vatu + + + Samoaanske tala + Samoaanske tala + Samoaanske tala + + + CFA-frank + CFA-frank + CFA-frank + FCFA + + + Sulver + Troy ounce sulver + Troy ounces sulver + + + Goud + Troy ounce goud + Troy ounces goud + + + Europeeske gearfoege ienheid + Europeeske gearfoege ienheid + Europeeske gearfoege ienheid + + + Europeeske monetaire ienheid + Europeeske monetaire ienheid + Europeeske monetaire ienheid + + + Europeeske rekkenienheid (XBC) + Europeeske rekkenienheid (XBC) + Europeeske rekkenienheid (XBC) + + + Europeeske rekkenienheid (XBD) + Europeeske rekkenienheid (XBD) + Europeeske rekkenienheid (XBD) + + + East-Karibyske dollar + East-Karibyske dollar + East-Karibyske dollar + EC$ + + + Special Drawing Rights + Special Drawing Rights + Special Drawing Rights + + + European Currency Unit + European Currency Unit + European Currency Unit + + + Franse gouden franc + Franse gouden franc + Franse gouden franc + + + Franse UIC-franc + Franse UIC-franc + Franse UIC-franc + + + CFA-franc BCEAO + CFA-franc BCEAO + CFA-franc BCEAO + CFA + + + Palladium + Troy ounce palladium + Troy ounces palladium + + + CFP-franc + CFP-franc + CFP-frank + XPF + + + Platina + Troy ounce platina + Troy ounces platina + + + RINET-fondsen + RINET-fondsen + RINET-fondsen + + + Sucre + Sucre + Sucre + + + Valutacode voor testdoeleinden + Valutacode voor testdoeleinden + Valutacode voor testdoeleinden + + + ADB-rekkenienheid + ADB-rekkenienheid + ADB-rekkenienheid + + + Unbekende muntienheid + Unbekende muntienheid + Unbekende muntienheid + + + Jemenityske dinar + Jemenityske dinar + Jemenityske dinar + + + Jemenityske rial + Jemenityske rial + Jemenityske rial + + + Joegoslavyske harde dinar + Joegoslavyske harde dinar + Joegoslavyske harde dinar + + + Joegoslavyske noviy-dinar + Joegoslavyske noviy-dinar + Joegoslavyske noviy-dinar + + + Joegoslavyske convertibele dinar + Joegoslavyske convertibele dinar + Joegoslavyske convertibele dinar + + + Joegoslavyske herfoarme dinar (1992–1993) + Joegoslavyske herfoarme dinar (1992–1993) + Joegoslavyske herfoarme dinar (1992–1993) + + + Sûd-Afrikaanske rand (finansjeel) + Sûd-Afrikaanske rand (finansjeel) + Sûd-Afrikaanske rand (finansjeel) + + + Sûd-Afrikaanske rand + Sûd-Afrikaanske rand + Sûd-Afrikaanske rand + + + Sambiaanske kwacha (1968–2012) + Sambiaanske kwacha (1968–2012) + Sambiaanske kwacha (1968–2012) + + + Sambiaanske kwacha + Sambiaanske kwacha + Sambiaanske kwacha + + + Saïreeske nije Saïre + Saïreeske nije Saïre + Saïreeske nije Saïre + + + Saïreeske Saïre + Saïreeske Saïre + Saïreeske Saïre + + + Simbabwaanske dollar + Simbabwaanske dollar + Simbabwaanske dollar + + + Simbabwaanske dollar (2009) + Simbabwaanske dollar (2009) + Simbabwaanske dollar (2009) + + + Simbabwaanske dollar (2008) + Simbabwaanske dollar (2008) + Simbabwaanske dollar (2008) + + + + {0}+ + {0}-{1} + + + + + + {0} per {1} + + + {0} G-kracht + {0} G-krachten + + + {0} boogminút + {0} boogminuten + + + {0} boogsekonde + {0} boogsekonden + + + {0} booggraad + {0} booggraden + + + {0} are + {0} ares + + + {0} hektare + {0} hektare + + + {0} fjouwerkante foet + {0} fjouwerkante foet + + + {0} fjouwerkante kilometer + {0} fjouwerkante kilometer + + + {0} fjouwerkante meter + {0} fjouwerkante meter + + + {0} fjouwerkante myl + {0} fjouwerkante myl + + + {0} dei + {0} deien + + + {0} oere + {0} oere + + + {0} millisekonde + {0} millisekonden + + + {0} minút + {0} minuten + + + {0} moanne + {0} moanneen + + + {0} sekonde + {0} sekonden + + + {0} wike + {0} wiken + + + {0} jier + {0} jier + + + {0} sentimeter + {0} sentimeter + + + {0} foet + {0} foet + + + {0} tomme + {0} tommen + + + {0} kilometer + {0} kilometer + + + {0} ljochtjier + {0} ljochtjier + + + {0} meter + {0} meter + + + {0} myl + {0} myl + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} yard + {0} yards + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hynstekrêft + {0} hynstekrêften + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopaskal + {0} hektopaskal + + + {0} inHg + {0} inHg + + + {0} millibar + {0} millibar + + + {0} kilometer de oere + {0} kilometer de oere + + + {0} meter de sekonde + {0} meter de sekonde + + + {0} myl de oere + {0} myl de oere + + + {0} graad Celsius + {0} graden Celsius + + + {0} graad Fahrenheit + {0} graden Fahrenheit + + + {0} kubike kilometer + {0} kubike kilometer + + + {0} kubike myl + {0} kubike myl + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} are + {0} ares + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dei + {0} deien + + + {0} oere + {0} oere + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mn + {0} mn + + + {0} sek. + {0} sek. + + + {0} wk + {0} wkn + + + {0} jr + {0} jr + + + {0} sm + {0} sm + + + {0} ft + {0} ft + + + {0} tm + {0} tm + + + {0} km + {0} km + + + {0} lj + {0} lj + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} pk + {0} pk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} u + {0} u + + + {0} ms + {0} ms + + + {0} m + {0} m + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} w + {0} w + + + {0} jr + {0} jr + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0}" + {0}" + + + {0} km + {0} km + + + {0} lj + {0} lj + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} pk + {0} pk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} en {1} + {0} en {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} en {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ja:j + nee:n + + + + diff --git a/library/Zend/Locale/Data/fy_NL.xml b/library/Zend/Locale/Data/fy_NL.xml new file mode 100755 index 000000000..26b1b916b --- /dev/null +++ b/library/Zend/Locale/Data/fy_NL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ga.xml b/library/Zend/Locale/Data/ga.xml new file mode 100755 index 000000000..476a83807 --- /dev/null +++ b/library/Zend/Locale/Data/ga.xml @@ -0,0 +1,1615 @@ + + + + + + + + + + + + aa + Abcáisis + Aivéistis + Afracáinis + Amarais + Araibis + Asaimis + Asarbaiseáinis + Baiscíris + Bealarúisis + Bulgáiris + Beangáilis + Tibéadais + Briotáinis + Boisnis + Catalóinis + Sisinis + Corsaicis + Craíais + Seicis + Slavais na hEaglaise + Suvaisis + Breatnais + Danmhairgis + Gearmáinis + Gearmáinis Ostarach + Ardghearmáinis Elvéiseach + Gréigis + Béarla + Béarla Astrálach + Béarla Ceanadach + Béarla Briotanach + Béarla Meiriceánach + Esperanto + Spáinnis + Spáinnis Mheiriceá Laidinigh + Spáinnis Eorpach + Eastóinis + Bascais + Peirsis + Fionlainnis + Filipínis + Fidsis + Faróis + Fraincis + Fraincis Ceanadach + Fraincis Elvéiseach + Freaslainnis Iartharach + Gaeilge + Gaeilge na hAlban + Gailísis + Guaráinis + Gearmáinis Elvéiseach + Gúisearáitis + Mannainis + Hásais + Haváíais + Eabhrais + Hiondúis + Cróitis + Háítis + Ungáiris + Airméinis + Interlingua + Indinéisis + Interlingue + Íogbóis + Inupiaq + Ido + Íoslainnis + Iodáilis + Ionúitis + Seapáinis + Iávais + Seoirsis + Casachais + Cambóidis + Cannadais + Cóiréis + Caismíris + Coirdis + Cornais + Cirgeasais + Laidin + Leitseabuirgis + ln + Laosais + Liotuáinis + Laitvis + Malagásais + Maorais + Macadóinis + Mailéalaimis + Mongóilis + Maraitis + Malaeis + Maltais + Burmais + Nárúis + Ioruais Bokmål + Neipealais + Ollainnis + Pléimeannais + Ioruais Nynorsk + Ioruais + Navachóis + Ocatáinis + Oraisis + Óiséitis + Puinseáibis + Polainnis + Paistis + Portaingéilis + Portaingéilis Bhrasaíleach + Portaingéilis Ibéireach + Ceatsuais + Rómainis + Rómáinis + Moldáivis + Rúisis + Sanscrait + Sairdínis + Sindis + Sáimis Thuaidh + Seirbea-Chróitis + Siolóinis + Slóvaicis + Slóivéinis + Samóis + Somáilis + Albáinis + Seirbis + Sótais Dheisceartach + Sundais + Sualainnis + Svahaílis + Tamailis + Teileagúis + Táidsícis + Téalainnis + Tigrinis + Tuircméinis + Tagálaigis + Klingon + Tongais + Tuircis + Tatarais + Tvís + Taihítis + ug + Úcráinis + Teanga Anaithnid nó Neamhbhailí + Urdais + Úisbéicis + Vítneamais + Vallúnais + Volaifis + Cósais + Giúdais + Iarúibis + Sínis + Sínis Shimplithe + Sínis Thraidisiúnta + Súlúis + Gan ábhar teangeolaíoch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An Domhan + An Afraic + Meiriceá Thuaidh + Meiriceá Theas + An Aigéine + an Afraic Iartharach + Meiriceá Láir + An Afraic Oirthearach + An Afraic Thuaisceartach + An Afraic Láir + An Afraic Dheisceartach + Na Meiriceánna + Meiriceá Tuaisceartach + Cairibeach + Oirthear na hÁise + Oirdheisceart na hÁise + An Astráil agus an Nua-Shéalainn + An Mheilinéis + An Réigiún Micrinéiseach + An Pholainéis + An Áise + An Áise Láir + Iarthar na hÁise + An Eoraip + Oirthear na hEorpa + Iarthar na hEorpa + Meiriceá Laidineach agus an Mhuir Chairib + Oileán na Deascabhála + Andóra + Aontas na nÉimíríochtaí Arabacha + An Afganastáin + Aintíge agus Barbúda + Anguilla + An Albáin + An Airméin + Antillí na hÍsiltíre + Angóla + An Antartaice + An Airgintín + Samó Meiriceánach + An Ostair + An Astráil + Arúba + Oileáin Alaind + An Asarbaiseáin + An Bhoisnia agus Heirseagóvéin + Barbadós + An Bhanglaidéis + An Bheilg + Buircíne Fasó + An Bhulgáir + Bairéin + An Bhurúin + Beinin + Saint Barthélemy + Beirmiúda + Brúiné + An Bholaiv + An Bhrasaíl + Na Bahámaí + An Bhútáin + Oileán Bouvet + An Bhotsuáin + An Bhealarúis + An Bheilís + Ceanada + Oileáin na gCócónna + Poblacht Dhaonlathach an Chongó + Poblacht na hAfraice Láir + An Congó + An Eilvéis + An Cósta Eabhair + Oileáin Cook + An tSile + Camarún + An tSín + An Cholóim + Cósta Ríce + Cúba + An Rinn Ghlas + Oileán na Nollag + An Chipir + Poblacht na Seice + An Ghearmáin + Djibouti + An Danmhairg + Doiminice + An Phoblacht Dhoiminiceach + An Ailgéir + Eacuadór + An Eastóin + An Éigipt + An Sahára Thiar + An Eiritré + An Spáinn + An Aetóip + An tAontas Eorpach + An Fhionlainn + Fidsí + Oileáin Fháclainne + An Mhicrinéis + Oileáin Fharó + An Fhrainc + An Ghabúin + An Ríocht Aontaithe + Grenada + An tSeoirsia + An Ghuáin Fhrancach + Geansaí + Gána + Giobráltar + An Ghraonlainn + An Ghaimbia + An Ghuine + Guadalúip + An Ghuine Mheánchriosach + An Ghréig + An tSeoirsia Theas agus Oileáin Sandwich Theas + Guatamala + Guam + An Ghuine-Bhissau + An Ghuáin + R.R.S. na Síne Hong Cong + Hong Cong + Oileán Heard agus Oileáin McDonald + Hondúras + An Chróit + Háití + An Ungáir + An Indinéis + Éire + Iosrael + Oileán Mhanann + An India + Críocha Briotanacha an Aigéin Indiagh + An Iaráic + An Iaráin + An Íoslainn + An Iodáil + Geirsí + Iamáice + An Iordáin + An tSeapáin + An Chéinia + An Chirgeastáin + An Chambóid + Ciribeas + Oileáin Chomóra + Saint Kitts agus Nevis + An Chóiré Thuaidh + An Chóiré Theas + Cuáit + Oileáin na gCadhman + An Chasacstáin + Laos + An Liobáin + San Lúisia + Lichtinstéin + Srí Lanca + An Libéir + Leosóta + An Liotuáin + Lucsamburg + An Laitvia + An Libia + Maracó + Monacó + An Mholdóiv + Montainéagró + Madagascar + Oileáin Marshall + An Mhacadóin + Mailí + Maenmar + An Mhongóil + R.R.S. na Síne Macáó + Macáó + Oileáin Mariana Thuaidh + Martainíc + An Mharatáin + Montsarat + Málta + Oileán Mhuirís + Na Maildiví + An Mhaláiv + Meicsiceo + An Mhalaeisia + Mósaimbíc + An Namaib + An Nua-Chaladóin + An Nígir + Oileán Norfolk + An Nigéir + Nicearagua + An Ísiltír + An Iorua + Neipeal + Nárú + Nívé + An Nua-Shéalainn + Óman + Panama + Peiriú + An Pholainéis Fhrancach + Nua-Ghuine Phapua + Na hOileáin Fhilipíneacha + An Phacastáin + An Pholainn + Saint Pierre agus Miquelon + Pitcairn + Portó Ríce + Na Críocha Pailistíneacha + An Phortaingéil + Palau + Paragua + Catar + An Aigéine Imeallach + Réunion + An Rómáin + An tSeirbia + Cónaidhm na Rúise + Ruanda + An Araib Shádach + Oileáin Sholaimh + Na Séiséil + An tSúdáin + An tSualainn + Singeapór + San Héilin + An tSlóvéin + Svalbard agus Jan Mayen + An tSlóvaic + Siarra Leon + San Mairíne + An tSeineagáil + An tSomáil + Suranam + An tSúdáin Theas + Sao Tome agus Principe + An tSalvadóir + An tSiria + An tSuasalainn + Oileáin Turks agus Caicos + Sead + Críocha Deisceartacha na Fraince + Tóga + An Téalainn + An Táidsíceastáin + Tócalá + Tíomór Thoir + An Tuircméanastáin + An Túinéis + Tonga + An Tuirc + Oileáin na Tríonóide agus Tobága + Túválú + An Téaváin + An Tansáin + An Úcráin + Úganda + Mion-Oileáin Imeallacha S.A.M. + Stáit Aontaithe Mheiriceá + Urugua + Úisbéiceastáin + An Vatacáin + Saint Vincent agus na Grenadines + Veiniséala + Oileáin Bhriotanacha na Maighdean + Oileáin na Maighdean S.A.M. + Vít Neam + Vanuatú + Oileáin Vailís agus Futúna + Samó + Éimin + Mayotte + An Afraic Theas + An tSaimbia + An tSiombáib + Réigiún Anaithnid nó Neamhbhailí + + + Féilire + Ord Sórtála + Airgeadra + Uimhreacha + + + Ord sórtála Síneach traidisiúnta - Big5 + Féilire Búdaíoch + Féilire Síneach + Ord sórtála Síneach simplithe - GB 2312 + Féilire Greagórach + Féilire Eabhrach + Féilire Ioslamach + Féilire Ioslamach Sibhialta + Féilire Seapánach + Ord sórtála an eolaire teileafóin + Ord sórtála pinyin + Ord sórtála stríce + Ord sórtála traidisiúnta + + + Méadrach + Meiriceánach + + + + [a á b c d e é f g h i í l m n o ó p r s t u ú] + [å ḃ ċ ḋ ḟ ġ j k ṁ ṗ q ṡ ṫ v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + E d + y G + MMM y G + d MMM y G + E d MMM y G + LL + dd/MM + E dd/MM + d MMM + E d MMM + MM/y GGGGG + dd/MM/y GGGGG + E dd/MM/y GGGGG + MMM y G + d MMM y G + E d MMM y G + + + + + + + + Ean + Feabh + Márta + Aib + Beal + Meith + Iúil + Lún + MFómh + DFómh + Samh + Noll + + + Eanáir + Feabhra + Márta + Aibreán + Bealtaine + Meitheamh + Iúil + Lúnasa + Meán Fómhair + Deireadh Fómhair + Samhain + Nollaig + + + + + E + F + M + A + B + M + I + L + M + D + S + N + + + + + + + Domh + Luan + Máirt + Céad + Déar + Aoine + Sath + + + Dé Domhnaigh + Dé Luain + Dé Máirt + Dé Céadaoin + Déardaoin + Dé hAoine + Dé Sathairn + + + + + D + L + M + C + D + A + S + + + + + + + R1 + R2 + R3 + R4 + + + 1ú ráithe + 2ú ráithe + 3ú ráithe + 4ú ráithe + + + + + + + a.m. + p.m. + + + + + + Roimh Chríost + Anno Domini + + + RC + AD + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + E d + y G + MMM y G + d MMM y G + E d MMM y G + LL + dd/MM + E dd/MM + d MMM + E d MMM + MM/y + dd/MM/y + E dd/MM/y + MMM y + d MMM y + E d MMM y + + + + + + + + + + Bliain + + + + + + Seachtain + + + + Arú inné + Inné + Inniu + Amárach + Arú amárach + + + Lá na seachtaine + + + a.m./p.m. + + + Uair + + + Nóiméad + + + Soicind + + + Crios + + + + +HH:mm;-HH:mm + MAG{0} + {0} + + Anaithnid + + + + Am Samhraidh na Breataine + + + ASB + + Londain + + + + Am Samhraidh na hÉireann + + + ASÉ + + Baile Átha Cliath + + + + CET + CET + CEST + + + + + EET + EET + EEST + + + + + WET + WET + WEST + + + + + Meán-Am Greenwich + + + MAG + + + + + + + . + , + + + + + ¤#,##0.00 + + + + + + Peseta Andóra + + + Dirham Aontas na nÉimíríochtaí Arabacha + + + Afgainí (1927–2002) + + + Afgainí + + + Lek Albánach + + + Dram Airméanach + + + Guilder na nAntillí Ísiltíreach + AÍ f. + + + Kwanza Angólach + + + Kwanza Angólach (1977–1990) + + + Kwanza Nua Angólach (1990–2000) + + + Kwanza Reajustado Angólach (1995–1999) + + + Austral Airgintíneach + + + Peso na Airgintíne (1983–1985) + + + Peso na Airgintíne + + + Scilling Ostarach + + + Dollar Astrálach + + + Guilder Aruba + + + Manat Asarbaiseánach + + + Dínear Bhoisnia-Heirseagaivéin + + + Marc Inathraithe Bhoisnia-Heirseagaivéin + + + Dollar Bharbadóis + + + Taka Bhanglaidéiseach + + + Franc Beilgeach (inathraithe) + + + Franc Beilgeach + + + Franc Beilgeach (airgeadúil) + + + Lev Bulgárach Crua + + + Lev Nua Bulgárach + + + Dínear na Bairéine + + + Franc na Burúine + + + Dollar Bheirmiúda + + + Dollar Bhrúiné + + + Boliviano + + + Peso na Bolaive + + + Mvdol Bolavach + + + Cruzeiro Novo Brasaíleach (1967–1986) + + + Cruzado Brasaíleach + + + Cruzeiro Brasaíleach (1990–1993) + + + Real Brasaíleach + + + Cruzado Novo Brasaíleach + + + Cruzeiro Brasaíleach + + + Dollar na mBahámaí + + + Ngultrum Bútánach + + + Kyat Burmach + + + Pula Botsuánach + + + Rúbal Nua Béalarúiseach (1994–1999) + + + Rúbal Béalarúiseach + + + Dollar na Beilíse + + + Dollar Ceanada + + + Franc Congolais an Chongó + + + Franc na hEilvéise + + + Unidades de Fomento na Sile + + + Peso na Sile + + + Yuan Renminbi Síneach + + + Peso na Colóime + + + Colon Chósta Ríce + + + Koruna Crua na Seicslóvaice + + + Peso Cúba + + + Escudo na Rinne Verde + + + Punt na Cipire + + + Koruna Phoblacht na Seice + + + Ostmark na hOirGhearmáine + + + Deutsche Mark + + + Franc Djibouti + + + Krone Danmhargach + + + Peso Doimineacach + + + Dínear na hAilgéire + + + Sucre Eacuadóir + + + Unidad de Valor Constante (UVC) Eacuadóir + + + Kroon na hEastóine + + + Punt na hÉigipte + + + Peseta Spáinneach + + + Birr na hAetóipe + + + Euro + + + Markka Fionnlannach + + + Dollar Fhidsí + + + Punt Oileáin Fháclainne + + + Franc Francach + + + Punt Steirling + + + Kupon Larit na Grúise + + + Lari na Grúise + + + Cedi Ghána + + + Punt Ghiobráltair + + + Dalasi Gaimbia + + + Franc Guine + + + Syli Guine + + + Ekwele Guineana na Guine Meánchriosaí + + + Drachma Gréagach + + + Quetzal Guatamala + + + Escudo na Guine Portaingéalaí + + + Peso Guine-Bhissau + + + Dollar na Guáine + + + Dollar Hong Cong + + + Lempira Hondúrais + + + Dínear na Cróite + + + Kuna Crótach + + + Gourde Háití + + + Forint Ungárach + + + Rupiah Indinéiseach + + + Punt Éireannach + + + Punt Iosraelach + + + Sheqel Nua Iosraelach + + + Rúipí India + + + Dínear Irácach + + + Rial Iaránach + + + Krona Íoslannach + + + Lira Iodálach + + + Dollar Iamácach + + + Dínear Iordánach + + + Yen Seapánach + + + Scilling Céiniach + + + Som na Cirgeastáine + + + Riel na Cambóide + + + Franc Chomóra + + + Won na Cóiré Thuaidh + + + Won na Cóiré Theas + + + Dínear Cuátach + + + Dollar Oileáin Cayman + + + Tenge Casacstánach + + + Kip Laosach + + + Punt na Liobáine + + + Rúipí Srí Lanca + + + Dollar na Libéire + + + Loti Leosóta + + + Lita Liotuánach + + + Talonas Liotuánach + + + Franc Lucsamburg + + + Lats Laitviach + + + Rúbal Laitviach + + + Dínear Libia + + + Dirham Mharacó + + + Franc Mharacó + + + Leu Moldóvach + + + Ariary Madagascar + + + Franc Madagascar + + + Denar na Macadóine + + + Franc Mhailí + + + Kyat Mhaenmar + + + Tugrik Mongólach + + + Pataca Macao + + + Ouguiya na Maratáine + + + Lira Maltach + + + Punt Maltach + + + Rúipí Oileán Mhuirís + + + Maldive Islands Rufiyaa + + + Kwacha na Maláive + + + Peso Meicsiceo + + + Peso Airgid Meicsiceo (1861–1992) + + + Unidad de Inversion (UDI) Meicsiceo + + + Ringgit Malaeisia + + + Escudo Mósaimbíce + + + Metical Mósaimbíce + + + Dollar na Namaibe + + + Naira Nígéarach + + + Cordoba Nicearagua + + + Cordoba Oro Nicearagua + + + Guilder Ísiltíreach + + + Krone Ioruach + + + Rúipí Neipeáil + + + Dollar na Nua-Shéalainne + + + Rial Omain + + + Balboa Panamach + + + Inti Pheiriú + + + Sol Nuevo Pheiriú + + + Sol Pheiriú + + + Kina Nua-Ghuine Phapua + + + Peso Filipíneach + + + Rúipí na Pacastáine + + + Zloty Polannach + + + Zloty Polannach (1950–1995) + + + Escudo Portaingélach + + + Guarani Pharagua + + + Rial Catarach + + + Leu Rómánach + + + Rúbal Rúiseach + + + Rúbal Rúiseach (1991–1998) + + + Franc Ruanda + + + Riyal Sádach + + + Dollar Oileáin Solomon + + + Rúipí na Séiséil + + + Dínear na Súdáine + + + Punt na Súdáine + + + Krona Sualannach + + + Dollar Singeapóir + + + Punt San Héilin + + + Tolar Slóvénach + + + Koruna na Slóvaice + + + Leone Shiarra Leon + + + Scilling na Sómáile + + + Guilder Shuranaim + + + Dobra Sao Tome agus Principe + + + Rúbal Sóvéadach + + + Colon na Salvadóire + + + Punt Siria + + + Lilangeni na Suasalainne + + + Baht na Téalainne + + + Rúbal na Táidsíceastáine + + + Somoni na Táidsíceastáine + + + Manat na An Tuircméanastáine + + + Dínear na Túinéise + + + Paʻanga Tonga + + + Escudo Tíomóir + + + Lira Turcach + + + Dollar Oileáin na Tríonóide agus Tobága + + + Dollar Nua na Téaváine + + + Scilling na Tansáine + + + Hryvnia Úcránach + + + Karbovanetz Úcránach + + + Scilling Uganda (1966–1987) + + + Scilling Uganda + + + Dollar S.A.M. + + + Dollar S.A.M. (an chéad lá eile) + + + Dollar S.A.M. (an la céanna) + + + Peso Uragua (1975–1993) + + + Peso Uruguayo Uragua + + + Sum na hÚisbéiceastáine + + + Bolivar Veiniséala (1871–2008) + + + Bolivar Veiniséala + + + Dong Vítneamach + + + Vatu Vanuatú + + + Tala Samó Thiar + + + CFA Franc BEAC + + + Ór + + + Aonad Ilchodach Eorpach + + + Aonad Airgeadaíochta Eorpach + + + Aonad Cuntais Eorpach (XBC) + + + Aonad Cuntais Eorpach (XBD) + + + Dollar Oirthear na Cairibe + + + Cearta Speisialta Tarraingthe + + + Aonad Airgeadra Eorpach + + + Franc Ór Francach + + + UIC-Franc Francach + + + CFA Franc BCEAO + + + CFP Franc + + + Airgeadra Anaithnid nó Neamhbhailí + + + Dínear Éimin + + + Rial Éimin + + + Dínear Crua Iúgslavach + + + Noviy Dinar Iúgslavach + + + Dínear Inathraithe Iúgslavach + + + Rand na hAfraice Theas (airgeadúil) + + + Rand na hAfraice Theas + + + Kwacha Saimbiach (1968–2012) + + + Kwacha Saimbiach + + + Zaire Nua Sáíreach + + + Zaire Sáíreach + + + Dollar Siombábach + + + + + + tá:t + níl:n + + + + diff --git a/library/Zend/Locale/Data/ga_IE.xml b/library/Zend/Locale/Data/ga_IE.xml new file mode 100755 index 000000000..c4c614af2 --- /dev/null +++ b/library/Zend/Locale/Data/ga_IE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/gd.xml b/library/Zend/Locale/Data/gd.xml new file mode 100755 index 000000000..5eb2bd8e2 --- /dev/null +++ b/library/Zend/Locale/Data/gd.xml @@ -0,0 +1,1250 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + + + Afar + Abchasais + Afraganais + Amharais + Seann-Bheurla + Arabais + Asarbaideànais + Azeri + Bealaruisis + Bulgarais + Bengali + Tibeitis + Breatnais + Bosnais + Catalanais + Corsais + Seicis + Cuimris + Danmhairgis + Gearmailtis + Gearmailtis na h-Ostaire + Àrd-Ghearmailtis na h-Eilbheise + Sòrbais Ìochdarach + Divehi + Èipheitis Àrsaidh + Greugais + Beurla + Beurla Astràilia + Beurla Chanada + Beurla Bhreatainn + Beurla nan SA + Esperanto + Spàinntis + Estonais + Basgais + Farsaidh + Fionnlannais + Filipinis + Fìdis + Fàrothais + Fraingis + Fraingis Chanada + Fraingis na h-Eilbheise + Frìsis Thuathach + Frìsis Earach + Friùilis + Frìsis Iarach + Gaeilge + Gàidhlig + Gailìsis + Guaraní + Gearmailtis Eilbheiseach + Gujarati + Gaelg + Eabhra + Hindis + Hiri Motu + Cròthaisis + Sòrbais Uachdarach + Crìtheol Haidhti + Ungairis + Airmeinis + Interlingua + Innd-Innsis + Interlingue + Igbo + Inupiaq + Innis-Tìlis + Eadailtis + Inuktitut + Seapanais + Lojban + Cairtbheilis + Casachais + Kalaallisut + Cmèar + Kannada + Coireanais + Caismiris + Cùrdais + Còrnais + Cìorgais + Laideann + Ladino + Lugsamburgais + Lingala + Làtho + Liotuainis + Laitbheis + Malagasais + Meadhan-Ghaeilge + Marshallais + Māori + Masadonais + Malayalam + Mongolais + Marathi + Malaidhis + Maltais + Burmais + Nauru + Nama + Bokmål na Nirribhidh + Neapàilis + Cànan Niue + Duitsis + Flannrais + Nynorsk na Nirribhidh + Nirribhis + Lochlannais + Ogsatanais + Oromo + Oriya + Osàidis + Panjabi + Pali + Pòlainnis + Paistiu + Portagailis + Portagailis Bhraisil + Ceatsua + Rapanui + Rumains + Ròmanais + Moldobhais + Ruisis + Kinyarwanda + Sanskrit + Sardainis + Beurla Ghallda + Sindhi + Sàmais Thuathach + Seann-Ghaeilge + Sèirb-Chròthaisis + Sinhala + Slòbhacais + Slòbhainis + Samothanais + Sàmais Dheasach + Sàmais Lule + Sàmais Inari + Sàmais Skolt + Shona + Soninke + Somàilis + Albanais + Sèirbis + Suainis + Swahili + Taimilis + Telugu + Tetum + Taidigis + Tàidh + Tigrinya + Turcmanais + Tagalog + Nyasa Tonga + Tok Pisin + Turcais + Tsonga + Tatarais + Ùigiurais + Ucràinis + Cànan neo-aithnichte + Urdu + Usbagais + Bhiet-Namais + Volapük + Wolof + Xhosa + Iùdhais + Yoruba + Cantonais + Sìnis + Sìnis Shimplichte + Sìnis Thradaiseanta + Zulu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An Saoghal + + Afraga + Aimearaga a Tuath + Aimearaga a Deas + Roinn a' Chuain Shèimh + Afraga an Iar + Meadhan Aimearaga + Afraga an Ear + Afraga a Tuath + Meadhan Afraga + An Roinn-Afraga a Deas + An Dà Aimearaga + An Roinn-Aimearaga a Tuath + Am Muir Caraibeach + Àisea an Ear + Àisea a Deas + Àisea an Ear-Dheas + An Roinn-Eòrpa a Deas + Astràilia is Sealainn Nuadh + Na h-Eileanan Dubha + Roinn nam Meanbh-Eileanan + Poilinèis + Àisea + Meadhan Àisea + Àisea an Iar + An Roinn-Eòrpa + An Roinn-Eòrpa an Ear + An Roinn-Eòrpa a Tuath + An Roinn-Eòrpa an Iar + Aimearaga Laideannach + Eilean na Deasgabhalach + Andorra + Na h-Iomaratan Arabach Aonaichte + Afghanastàn + Aintìoga is Barbuda + Anguilla + Albàinia + Airmeinia + Eileanan Aintilia nan Tìrean Ìsle + Angòla + An Antartaig + An Argantain + Samotha na h-Airmeireaga + An Ostair + Astràilia + Arùba + Na h-Eileanan Åland + Asarbaideàn + Bosna is Hearsagobhana + Barbados + Bangladais + A' Bheilg + Buirciona Faso + A' Bhulgair + Bachrain + Burundaidh + Beinin + Saint Barthélemy + Bearmùda + Brùnaigh + Boilibhia + Ranntair Breatainn na h-Antartaig + Braisil + Na h-Eileanan Bathama + Butàn + Eilean Bouvet + Botsuana + A' Bhealaruis + Beilìs + Canada + Na h-Eileanan Cocos (Keeling) + Congo-Kinshasa + Congo (DRC) + Poblachd Meadhan Afraga + Congo-Brazzaville + Congo (Poblachd) + An Eilbheis + Côte d’Ivoire + An Costa Ìbhri + Eileanan Cook + An t-Sile + Camarun + An t-Sìn + Coloimbia + Eilean Clipperton + Costa Rìcea + Cùba + An Ceap Uaine + Eilean na Nollaig + Cìopras + Poblachd na Seice + A' Ghearmailt + Diego Garcia + Diobùtaidh + An Danmhairg + Doiminicea + A' Phoblachd Dhoiminiceach + Aildiria + Ceuta is Melilla + Eacuador + An Eastoin + An Èiphit + Sathara an Iar + Eartra + An Spàinn + An Itiop + An t-Aonadh Eòrpach + An Fhionnlann + Fìdi + Na h-Eileanan Fàclannach + Na h-Eileanan Fàclannach (Islas Malvinas) + Na Meanbh-Eileanan + Na h-Eileanan Fàro + An Fhraing + Gabon + An Rìoghachd Aonaichte + Greanàda + A' Chairtbheil + Guidheàna na Frainge + Geàrnsaidh + Gàna + Diobraltar + A' Ghraonlann + A' Ghaimbia + Gini + Guadalup + Gini Mheadhan-Chriosach + A' Ghreug + Seòrsea a Deas is na h-Eileanan Sandwich a Deas + Guatamala + Guam + Gini-Bioso + Guidheàna + Hong Kong SAR na Sìne + Hong Kong + Eilean Heard is MhicDhòmhnaill + Hondùras + A' Chròthais + Haidhti + An Ungair + Na h-Eileanan Canàrach + Na h-Innd Innse + Èirinn + Iosrael + Eilean Manainn + Na h-Innseachan + Ranntair Breatannach Cuan nan Innseachan + Ioràc + Ioràn + Innis Tìle + An Eadailt + Deàrsaidh + Diameuga + Iòrdan + An t-Seapan + Ceinia + Cìorgastan + Cambuidea + Ciribeas + Comoros + Naomh Crìstean is Nibheis + Coirèa a Tuath + Coirèa a Deas + Cuibhèit + Na h-Eileanan Caimean + Casachstàn + Làthos + Leabanon + Naomh Lùisea + Liechtenstein + Sri Lanca + Libèir + Leasoto + An Liotuain + Lugsamburg + An Laitbhe + Libia + Moroco + Monaco + A' Mholdobha + Am Monadh Neagrach + Naomh Màrtainn + Madagasgar + Eileanan Mharshall + A' Mhasadon + A' Mhasadon (FYROM) + Màili + Miànmar (Burma) + Dùthaich nam Mongol + Macàthu SAR na Sìne + Macàthu + Na h-Eileanan Mairianach a Tuath + Mairtinic + Moratàinea + Montsarat + Malta + Na h-Eileanan Mhoiriseas + Na h-Eileanan Maladaibh + Malabhaidh + Meagsago + Malaidhsea + Mòsaimbic + An Namaib + Cailleann Nuadh + Nìgeir + Eilean Norfolk + Nigèiria + Niocaragua + Na Tìrean Ìsle + An Nirribhidh + Neapàl + Nabhru + Niue + Sealainn Nuadh + Omàn + Panama + Pearù + Poilinèis na Frainge + Gini Nuadh Phaputhach + Na h-Eileanan Filipineach + Pagastàn + A' Phòlainn + Saint Pierre is Miquelon + Eilean Peit a' Chàirn + Porto Rìceo + Na Ranntairean Palastaineach + A' Phortagail + Palabh + Paraguaidh + Catar + Réunion + Romàinia + An t-Sèirb + An Ruis + Rubhanda + Aràibia nan Sabhd + Eileanan Sholaimh + Na h-Eileanan Sheiseall + Sudàn + An t-Suain + Singeapòr + Eilean Naomh Eilidh + An t-Slòbhain + Svalbard is Jan Mayen + An t-Slòbhac + Siarra Leòmhann + San Marino + Seanagal + Somàilia + Suranam + São Tomé is Príncipe + An Salbhador + Siridhea + Dùthaich nan Suasaidh + Tristan da Cunha + Na h-Eileanan Turcach is Caiceo + An t-Seàd + Ranntairean a Deas na Frainge + Togo + Dùthaich nan Tàidh + Taidigeastàn + Tokelau + Timor-Leste + Tìomor an Ear + Turcmanastàn + Tuinisea + Tonga + An Tuirc + Trianaid is Tobago + Tubhalu + Taidh-Bhàn + An Tansan + An Ucràin + Uganda + Meanbh-Eileanan Iomallach nan Stàitean Aonaichte + Na Stàitean Aonaichte + Uruguaidh + Usbagastan + Cathair na Bhatacain + Naomh Bhionsant agus Eileanan Greanadach + A' Bheiniseala + Eileanan Breatannach na Maighdinn + Eileanan Aimeireagach na Maighdinn + Bhiet-Nam + Vanuatu + Uallas agus Futuna + Samotha + An Eaman + Mayotte + Afraga a Deas + Sàimbia + An t-Sìombab + Ranntair Neo-Aithnichte + + + Beurla Bhun-Tomhasach na h-Alba + + + Mìosachan + Colaideachadh + Airgeadra + Àireamhan + + + Figearan Arbanach-Innseanach + Figearan Arbanach-Innseanach Leudaichte + Àireamhan Airmeineach + Òrdugh Seòrsachaidh na Sìnise Tradaiseanta - Big5 + Am Mìosachan Budach + Am Mìosachan Sìneach + Am Mìosachan Coptach + Figearan Devanagari + Àireamhan Itiopach + Mìosachan na h-Itioipe + Mìosachan Itiopach Amete Alem + Figearan Làn-Leud + Òrdugh Seòrsachaidh na Sìnise Simplichte - GB2312 + Àireamhan Cairthbheileach + Am Mìosachan Griogarach + Àireamhan Greugach + Àireamhan Greugach Beaga + Figearan Gujarati + Figearan Gurmukhi + Àireamhan Sìneach Simplichte + Àireamhan Sìneach Tradaiseanta + Àireamhan Eabhrach + Am Mìosachan Eabhrach + Mìosachan Nàiseanta nan Innseachan + Am Mìosachan Ioslamach + Am Mìosachan Seapanach + Àireamhan Seapanach + Figearan Cmèar + Figearan Kannada + Figearan Làtho + Figearan Iarach + Figearan Malayalam + Figearan nam Mongol + Figearan Miànmar + Figearan Oriya + Am Míosachan Pearsach + Òrdugh Seòrsachaidh nan Leabhraichean-Fòn + Òrdugh Seòrsachaidh Pinyin na Sìnise Simplichte + Am Míosachan Minguo + Àireamhan Ròmanach + Àireamhan Beaga Ròmanach + Lorg Coitcheann + Òrdugh Stràcan na Sìnis Tradaiseanta + Àireamhan Taimileach + Figearan Telugu + Figearan Tàidh + Figearan Tibeiteach + Òrdugh Seòrsachaidh Tradaiseanta + + + BGN + Aíreamhach + Tòn + UNGEGN + Stràcan + Làn-Leud + Leth-Leud + Jamo + Pinyin + Foillseachadh + + + Meatrach + RA + SA + + + Cànan: {0} + Sgrìobhadh: {0} + Sgìre: {0} + + + + [a à b c d e è f g h i ì l m n o ò p r s t u ù] + [á ċ ḋ é ḟ ġ j k ṁ ó ṗ q ṡ ṫ v w x y z] + [A B C D E F G H I L M N O P R S T U] + [\- ‐ – — , ; \: ! ¡ ? . … · ' ‘ ’ " “ ” ( ) \[ \] \{ \} § ¶ @ * / \& ⁊ # % † ‡ ‧ ° © ® ™] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d/M + E, d/M + dd/MM + E d MMM + d MMMM + E, d/M/y + MM/y + MMM y + MMMM y + + + {0} - {1} + + d-d + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + + Faoi + Gearr + Màrt + Gibl + Cèit + Ògmh + Iuch + Lùna + Sult + Dàmh + Samh + Dùbh + + + Am Faoilleach + An Gearran + Am Màrt + An Giblean + An Cèitean + An t-Ògmhios + An t-Iuchar + An Lùnastal + An t-Sultain + An Dàmhair + An t-Samhain + An Dùbhlachd + + + + + FA + GE + + GI + + ÒG + IU + + SU + + SA + + + + + + + + DiD + DiL + DiM + DiC + Dia + Dih + DiS + + + DiDòmhnaich + DiLuain + DiMàirt + DiCiadain + Diardaoin + DihAoine + DiSathairne + + + + + D + L + M + C + A + H + S + + + + + + + R1 + R2 + R3 + R4 + + + 1d ràithe + 2na ràithe + 3as ràithe + 4mh ràithe + + + + + + + m + f + + + + + + Ro Chrìost + Anno Domini + + + RC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d/M + E, d/M + dd/MM + E d MMM + d MMMM + E, d/M/y + MM/y + MMM y + MMMM y + + + {0} - {1} + + d-d + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + Linn + + + Bliadhna + + + Mìos + + + Seachdain + + + Latha + A-bhòin-dè + An-dè + An-diugh + A-màireach + An-earar + + + Latha na seachdaine + + + m/f + + + Uair a thìde + + + Mionaid + + + Diog + + + Sòn + + + + +HH:mm;-HH:mm + GMT{0} + {0} Time + {1} ({0}) + + Neo-Aithnichte + + + + Tìde Samhraidh Bhreatainn + + + TSB + + Dùn Èideann/Lunnainn + + + + Tìde Samhraidh na h-Èireann + + + TSÈ (Èirinn) + + Baile Àtha Cliath + + + + CET + CET + CEST + + + + + EET + EET + EEST + + + + + WET + WET + WEST + + + + + GMT + + + + + + + . + , + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dolar Canadach + + + Eòro + + + Punnd Sasannach + + + Punnd Èireannach + + + Dolar nan SA + $ + + + + + + + {0} latha + {0} latha + {0} làithean + {0} latha + + + {0} uair a thìde + {0} uair a thìde + {0} uairean a thìde + {0} uair a thìde + + + {0} mhionaid + {0} mhionaid + {0} mionaidean + {0} mionaid + + + {0} mhìos + {0} mhìosan + {0} mìosan + {0} mìos + + + {0} diog + {0} dhiog + {0} diogan + {0} diog + + + {0} seachdain + {0} sheachdain + {0} seachdainean + {0} seachdain + + + {0} bhliadhna + {0} bhliadhna + {0} bliadhna + {0} bliadhna + + + + + {0} latha + {0} latha + {0} làithean + {0} latha + + + {0} uair + {0} uair + {0} uair + {0} uair + + + {0} mhion + {0} mhion + {0} mion + {0} mion + + + {0} mhìos + {0} mhìos + {0} mìos + {0} mìos + + + {0} d + {0} dh + {0} d + {0} d + + + {0} s + {0} sh + {0} s + {0} s + + + {0} bhl + {0} bhl + {0} bl + {0} bl + + + + + + {0}, agus {1} + {0} agus {1} + + + + + tha:th + chan eil:ch + + + + diff --git a/library/Zend/Locale/Data/gd_GB.xml b/library/Zend/Locale/Data/gd_GB.xml new file mode 100755 index 000000000..9ca77b738 --- /dev/null +++ b/library/Zend/Locale/Data/gd_GB.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/genderList.xml b/library/Zend/Locale/Data/genderList.xml new file mode 100755 index 000000000..0b937e3a9 --- /dev/null +++ b/library/Zend/Locale/Data/genderList.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/gl.xml b/library/Zend/Locale/Data/gl.xml new file mode 100755 index 000000000..e19c381ea --- /dev/null +++ b/library/Zend/Locale/Data/gl.xml @@ -0,0 +1,3925 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abkhazo + acoli + afrikaans + akán + amárico + aragonés + árabe + árabe estándar moderno + arameo + assamés + asturiano + aimará + azerbaiano + acerbaixano + bielorruso + bemba + búlgaro + bengalí + tibetano + bretón + bosnio + catalán + cheroqui + curdo soraní + corso + checo + eslavo eclesiástico + galés + dinamarqués + alemán + alemán de austria + alto alemán suízo + divehi + dzongkha + ewé + ibibio + exipcio antigo + grego + inglés + inglés australiano + inglés canadiano + inglés británico + inglés R.U. + inglés dos Estados Unidos + inglés EUA + esperanto + español + español latinoamericano + castelán + español de México + estoniano + éuscaro + persa + finés + filipino + fixiano + faroés + francés + francés canadiano + francés suízo + frisón + irlandés + ga + gaélico escocés + galego + guaraní + grego antigo + alemán suízo + guxaratiano + hausa + hawaiano + hebreo + hindi + croata + haitiano + húngaro + armenio + interlingua + indonesio + ibo + islandés + italiano + xaponés + xavanés + xeorxiano + kongo + casaco + cambodiano + kannada + coreano + cachemir + kurdo + quirguiz + latín + luxemburgués + ganda + lingala + laotiano + lozi + lituano + luba-lulua + letón + crioulo mauritano + malgaxe + maorí + macedonio + malabar + mongol + marathi + malaio + maltés + varias linguas + birmano + noruegués bokmal + ndebele do norte + nepalí + holandés + flamenco + noruegués nynorsk + noruegués + sesotho sa leboa + chewa + nyankole + occitano + oromo + oriya + osetio + punjabi + polaco + paxtún + portugués + portugués brasileiro + portugués europeo + quechua + romanche + rundi + romanés + ruso + ruandés + sánscrito + sindhi + sami do norte + sango + serbocroata + cingalés + eslovaco + esloveno + samoano + shona + somalí + albanés + serbio + swati + sesoto + sondanés + sueco + swahili + tamil + telugu + tetún + taxico + tailandés + tigriña + turcomano + tagalo + klingon + tswana + tonganés + tok pisin + turco + xitsonga + tártaro + tumbuka + twi + tahitiano + uigur + ucraíno + lingua descoñecida ou non válida + urdú + uzbeco + venda + vietnamita + wólof + xhosa + yiddish + ioruba + tamazight de Marrocos estándar + chinés + chinés simplificado + chinés tradicional + zulú + sen contido lingüístico + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundo + África + Norteamérica + Sudamérica + Oceanía + África Occidental + América Central + África Oriental + África Septentrional + África Central + África Meridional + América + América do Norte + Caribe + Asia Oriental + Sul de Asia + Sureste Asiático + Europa Meridional + Australasia + Melanesia + Rexión da Micronesia + Polinesia + Asia + Asia Central + Asia Occidental + Europa + Europa do Leste + Europa Septentrional + Europa Occidental + América Latina + Illa de Ascensión + Andorra + Emiratos Árabes Unidos + Afganistán + Antiga e Barbuda + Anguila + Albania + Armenia + Antillas Holandesas + Angola + Antártida + Arxentina + Samoa Americana + Austria + Australia + Aruba + Illas Aland + Acerbaixán + Bosnia e Hercegovina + Barbados + Bangladesh + Bélxica + Burkina Faso + Bulgaria + Bahrein + Burundi + Benin + San Bartolomé + Bermudas + Brunei + Bolivia + Caribe neerlandés + Brasil + Bahamas + Bután + Illa Bouvet + Botsuana + Bielorrusia + Belice + Canadá + Illas Cocos (Keeling) + República Democrática do Congo + Congo (RDC) + República Africana Central + Congo + Congo (RC) + Suíza + Costa de Marfil + Costa do Marfil + Illas Cook + Chile + Camerún + China + Colombia + Illa Clipperton + Costa Rica + Cuba + Cabo Verde + Curaçao + Illa Christmas + Chipre + República Checa + Alemaña + Diego García + Xibuti + Dinamarca + Dominica + República Dominicana + Arxelia + Ceuta e Melilla + Ecuador + Estonia + Exipto + Sahara Occidental + Eritrea + España + Etiopía + Unión Europea + Finlandia + Fixi + Illas Malvinas + Illas Malvinas (Falkland) + Micronesia + Illas Feroe + Francia + Gabón + Reino Unido + Granada + Xeorxia + Güiana Francesa + Guernsey + Gana + Xibraltar + Grenlandia + Gambia + Guinea + Guadalupe + Guinea Ecuatorial + Grecia + Xeorxia do Sur e Illas Sandwich + Guatemala + Guam + Guinea-Bissau + Güiana + Hong Kong RAE de China + Hong Kong + Illa Heard e Illas McDonald + Honduras + Croacia + Haití + Hungría + Illas Canarias + Indonesia + Irlanda + Israel + Illa de Man + India + Territorio Británico do Océano Índico + Iraq + Irán + Islandia + Italia + Jersey + Xamaica + Xordania + Xapón + Quenia + Quirguicistán + Cambodia + Kiribati + Comores + San Cristovo e Nevis + Corea do Norte + Corea do Sur + Kuwait + Illas Caimán + Kazakhstan + Laos + Líbano + Santa Lucía + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Luxemburgo + Letonia + Libia + Marrocos + Mónaco + Moldova + Montenegro + San Martiño + Madagascar + Illas Marshall + Macedonia + Macedonia (ARIM) + Mali + Myanmar (Birmania) + Mongolia + Macau RAE de China + Macau + Illas Marianas do norte + Martinica + Mauritania + Montserrat + Malta + Mauricio + Maldivas + Malaui + México + Malaisia + Mozambique + Namibia + Nova Caledonia + Níxer + Illa Norfolk + Nixeria + Nicaragua + Países Baixos + Noruega + Nepal + Nauru + Niue + Nova Celandia + Omán + Panamá + Perú + Polinesia Francesa + Papúa Nova Guinea + Filipinas + Paquistán + Polonia + San Pedro e Miguelón + Illas Pitcairn + Porto Rico + Territorios palestinos + Palestina + Portugal + Palau + Paraguai + Qatar + Oceanía Distante + Reunión + Romanía + Serbia + Rusia + Ruanda + Arabia Saudita + Illas Salomón + Seixeles + Sudán + Suecia + Singapur + Santa Helena + Eslovenia + Svalbard e Jan Mayen + Eslovaquia + Serra Leoa + San Marino + Senegal + Somalia + Surinam + Sudán do sur + San Tomé e Príncipe + El Salvador + Sint Maarten + Siria + Suacilandia + Tristán da Cunha + Illas Turks e Caicos + Chad + Territorios Franceses do Sul + Togo + Tailandia + Taxiquistán + Tokelau + Timor Leste + Turkmenistán + Tunisia + Tonga + Turquía + Trindade e Tobago + Tuvalu + Taiwán + Tanzania + Ucraína + Uganda + Illas Menores Distantes dos EUA. + Estados Unidos de América + Uruguai + Uzbekistán + Cidade do Vaticano + San Vicente e Granadinas + Venezuela + Illas Virxes Británicas + Illas Virxes Estadounidenses + Vietnam + Vanuatu + Wallis e Futuna + Samoa + Kosovo + Iemen + Mayotte + Sudáfrica + Zambia + Cimbabue + Rexión descoñecida + + + Calendario + Ignorar clasificación de símbolos + Clasificación de acentos invertida + Orde de maiúsculas/minúsculas + Clasificación que distingue entre maiúsculas e minúsculas + Clasificación Kana + Orde de clasificación + Clasificación normalizada + Clasificación numérica + Forza de clasificación + Moeda + Números + Fuso horario + Variante local + Clasificar como símbolos + Uso privado + + + Díxitos do árabe oriental + Díxitos arábicos orientais + Números armenios + Números armenios en minúscula + Díxitos bengalís + Orde de clasificación chinesa tradicional - Big5 + Calendario budista + Calendario chinés + Calendario cóptico + Calendario dangi + Díxitos devanagari + Criterio de ordenación do dicionario + Criterio de ordenación Unicode predeterminado + Números etíopes + Calendario etíope + Calendario Amete Alem etíope + Números financeiros + Díxitos de ancho completo + orde de clasifcación chinesa simplificada - GB2312 + Números xeorxianos + Calendario gregoriano + Números gregos + Números gregos en minúscula + Díxitos guxarati + Díxitos do gurmukhi + Números decimais chineses + Números chineses simplificados + Números financeiros chineses simplificados + Números do chinés tradicional + Números financeiros do chinés tradicional + Números hebreos + Calendario hebreo + Clasificar todo + Calendario nacional indio + Calendario islámico + Calendario islámico (civil, tabular) + Calendario islámico (Arabia Saudita, + Calendario xaponés + Números xaponeses + Números financeiros xaponeses + Díxitos do camboxano + Díxitos do kannadés + Díxitos laosianos + Díxitos occidentais + Clasificar primeiro as minúsculas + Díxitos malabares + Díxitos mongoles + Díxitos birmanos + Díxitos orixinais + Clasificar acentos con normalidade + Clasificar orde de maiúsculas e minúsculas normal + Clasificar sen distinguir entre maiúsculas e minúsculas + Clasificar Kana por separado + Clasificar sen normalización + Clasificar díxitos individualmente + Clasificar símbolos + Díxitos oriya + Calendario persa + orde de clasificación da guía telefónica + Orde de clasificación fonética + Orde de clasificación pinyin + Clasificar só letras de base + Clasificar acentos/maiúsculas e minúsculas/ancho/kana + Criterio de ordenación reformado + Calendario Minguo + Números romanos + Números romanos en minúsculas + Busca de uso xeral + Clasificar por consonante inicial hangul + Clasificar acentos + Clasificar ignorando símbolos + Criterio de ordenación estándar + Orde de clasificación polo número de trazos + Números támil + Díxitos do támil + Díxitos do telugú + Clasificar acentos/maiúsculas e minúsculas/ancho + Díxitos tailandeses + Díxitos tibetanos + Orde de clasificación tradicional + Numeros tradicionais + Criterio de ordenación radical-trazo + Clasificar primeiro as maiúsculas + Díxitos Vai + Clasificar acentos invertidos + Clasificar distinguindo entre maiúsculas e minúsculas + Clasificar Kana de modo diferente + Clasificar Unicode normalizado + Clasificar díxitos numericamente + + + BGN + Numérico + Ton + UNGEGN + Acentos + Ancho completo + Ancho medio + Jamo + Pinyin + Publicación + + + métrico decimal + británico + americano + + + Idioma: {0} + Alfabeto: {0} + Rexión: {0} + + + + [a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z] + [ª à â ä ã ç è ê ë ì î ï º ò ô ö õ ù û] + [A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + ? + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + d MMM, y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd/MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + G y + M-y + d/M/y + E, d/M/y + MM/y + MMM y + d MMM, y + E, d MMM, y + MMMM y + QQQ y + QQQQ y + G y + GGGGG M/y + GGGGG d/M/y + GGGGG E, d/M/y + G MMM y + G d, MMM y + G E, d MMM y + G QQQ y + G y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + xan + feb + mar + abr + mai + xuñ + xul + ago + set + out + nov + dec + + + X + F + M + A + M + X + X + A + S + O + N + D + + + xaneiro + febreiro + marzo + abril + maio + xuño + xullo + agosto + setembro + outubro + novembro + decembro + + + + + Xan + Feb + Mar + Abr + Mai + Xuñ + Xul + Ago + Set + Out + Nov + Dec + + + X + F + M + A + M + X + X + A + S + O + N + D + + + Xaneiro + Febreiro + Marzo + Abril + Maio + Xuño + Xullo + Agosto + Setembro + Outubro + Novembro + Decembro + + + + + + + dom + lun + mar + mér + xov + ven + sáb + + + D + L + M + M + X + V + S + + + dom + luns + mt + mc + xv + ve + sáb + + + domingo + luns + martes + mércores + xoves + venres + sábado + + + + + Dom + Lun + Mar + Mér + Xov + Ven + Sáb + + + D + L + M + M + X + V + S + + + Dom + Luns + Mt + Mc + Xv + Ven + Sáb + + + Domingo + Luns + Martes + Mércores + Xoves + Venres + Sábado + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1o trimestre + 2o trimestre + 3o trimestre + 4o trimestre + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1o trimestre + 2o trimestre + 3o trimestre + 4o trimestre + + + + + + + a.m. + p.m. + + + a + p + + + a.m. + p.m. + + + + + + antes de Cristo + despois de Cristo + + + a.C. + BCE + d.C. + CE + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + d MMM, y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E, d-M + dd/MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y + M-y + d/M/y + E, d/M/y + MM/y + MMM y + d MMM, y + E, d MMM, y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Era + + + Ano + ano pasado + este ano + seguinte ano + + En {0} ano + En {0} anos + + + Hai {0} ano + Hai {0} anos + + + + Mes + mes pasado + este mes + mes seguinte + + En {0} mes + En {0} meses + + + Hai {0} mes + Hai {0} meses + + + + Semana + semana pasada + esta semana + semana seguinte + + En {0} semana + En {0} semanas + + + Hai {0} semana + Hai {0} semanas + + + + Día + antonte + onte + hoxe + mañá + pasadomañá + + En {0} día + En {0} días + + + Hai {0} día + Hai {0} días + + + + Día da semana + + + domingo pasado + este domingo + próximo domingo + + + luns pasado + este luns + próximo luns + + + martes pasado + este martes + próximo martes + + + mércores pasado + este mércores + próximo mércores + + + xoves pasado + este xoves + próximo xoves + + + venres pasado + este venres + próximo venres + + + sábado pasado + este sábado + próximo sábado + + + a.m./p.m. + + + Hora + + En {0} hora + En {0} horas + + + Hai {0} hora + Hai {0} horas + + + + Minuto + + En {0} minuto + En {0} minutos + + + Hai {0} minuto + Hai {0} minutos + + + + Segundo + agora + + En {0} segundo + En {0} segundos + + + Hai {0} segundo + Hai {0} segundos + + + + Fuso horario + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Horario de {0} + Horario de verán de {0} + Horario estándar de {0} + {1} ({0}) + + Cidade descoñecida + + + Cabul + + + Antiga + + + Anguila + + + Tirana + + + Iereván + + + Dumont-d'Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Bos Aires + + + Viena + + + Sidney + + + Bacú + + + Bruxelas + + + Uagadugú + + + Porto Novo + + + San Bartolomé + + + Bermudas + + + Río Branco + + + Cuiabá + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Timbu + + + Belice + + + Abadía de Cambridge + + + Atikokan + + + St. John’s + + + Zúric + + + Illa de Pascua + + + Bogotá + + + Habana + + + Cabo Verde + + + Curaçao + + + Illa de Nadal + + + Praga + + + Berlín + + + Xibutí + + + Copenhaguen + + + Alxer + + + Illas Galápagos + + + Talín + + + O Aiún + + + Asmak + + + Illas Canarias + + + Adís Abeba + + + Fidxi + + + Chuuk + + + Pohnpei + + + París + + + Londres + + + Granada + + + Caiena + + + Guernesei + + + Acra + + + Xibraltar + + + Guadalupe + + + Xeorxia do Sur + + + Güiana + + + Porto Príncipe + + + Iacarta + + + Jaiapura + + + Dublín + + + Illa de Man + + + Calcuta + + + Bagdad + + + Reiquiavik + + + Xamaica + + + Amán + + + Toquio + + + Illas Comores + + + San Cristovo + + + Seúl + + + Caimán + + + Almati + + + St. Lucia + + + Luxemburgo + + + Trípoli + + + Mónaco + + + Bamaco + + + Ulán Bátor + + + Saipán + + + Martinica + + + Mauricio + + + Maldivas + + + Mazatlán + + + Baía de Bandeiras + + + Monterrei + + + Cidade de México + + + Mérida + + + Cancún + + + Ámsterdan + + + Kathmandu + + + Mascat + + + Panamá + + + Tahití + + + Varsovia + + + Porto Rico + + + Lisboa + + + Asunción + + + Reunión + + + Bucarest + + + Belgrado + + + Kaliningrado + + + Moscova + + + Volgogrado + + + Ecaterinburgo + + + Anadir + + + Riad + + + Khartún + + + Singapur + + + Santa Helena + + + Liubliana + + + Dacar + + + Mogadixo + + + São Tomé + + + O Salvador + + + Lower Prince's Quarter + + + Damasco + + + Gran Turca + + + Xamena + + + Lomé + + + Túnez + + + Estanbul + + + Porto España + + + Zaporizhia + + + Honolulú + + + Os Ánxeles + + + Beulah, Dakota do Norte + + + New Salem, Dakota do Norte + + + Center, Dakota do Norte + + + Vincennes, Indiana + + + Petersburgo, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Indianápolis + + + Vevay, Indiana + + + Monticello, Kentucky + + + Nova York + + + Samarcanda + + + Vaticano + + + San Vicente + + + Ho Chi Minh + + + Adén + + + Xohanesburgo + + + Lusaca + + + + Horario de Afganistán + + + + + Horario de África Central + + + + + Horario de África Oriental + + + + + Horario estándar de Sudáfrica + + + + + Horario de África Occidental + Horario estándar de África Occidental + Horario de verán de África Occidental + + + + + Horario de Alasca + Horario estándar de Alasca + Horario de verán de Alasca + + + + + Horario do Amazonas + Horario estándar do Amazonas + Horario de verán do Amazonas + + + + + Horario central + Horario estándar central + Horario de verán da zona central + + + + + Horario de América Oriental + Horario estándar América Oriental + Horario de verán de América Oriental + + + + + Horario das montañas de América + Horario estándar das montañas americanas + Horario de verán das montañas americanas + + + + + Horario do Pacífico + Horario estándar do Pacífico + Horario de verán do Pacífico + + + + + Horario de Anadir + Horario estándar de Anadir + Horario de verán de Anadir + + + + + Horario árabe + Horario estándar árabe + Horario de verán árabe + + + + + Horario de Arxentina + Horario estándar de Arxentina + Horario de verán de Arxentina + + + + + Horario de Arxentina Occidental + Horario estándar de Arxentina Occidental + Horario de verán de Arxentina Occidental + + + + + Horario de Armenia + Horario estándar de Armenia + Horario de verán de Armenia + + + + + Horario do Atlántico + Horario estándar do Atlántico + Horario de verán do Atlántico + + + + + Horario de Australia Central + Horario estándar de Australia Central + Horario de verán de Australia Central + + + + + Horario de Australia Occidental Central + Horario estándar de Australia Occidental Central + Horario de verán de Australia Occidental Central + + + + + Horario de Australia Oriental + Horario estándar de Australia Oriental + Horario de verán de Australia Oriental + + + + + Horario de Australia Occidental + Horario estándar de Australia Occidental + Horario de verán de Australia Occidental + + + + + Horario de Acerbaixán + Horario estándar de Acerbaixán + Horario de verán de Acerbaixán + + + + + Horario das Azores + Horario estándar das Azores + Horario de verán das Azores + + + + + Horario de Bangladesh + Horario estándar de Bangladesh + Horario de verán de Bangladesh + + + + + Horario de Bután + + + + + Horario de Bolivia + + + + + Horario de Brasilia + Horario estándar de Brasilia + Horario de verán de Brasilia + + + + + Horario de Brunei Darussalam + + + + + Horario de Cabo Verde + Horario estándar de Cabo Verde + Horario de verán de Cabo Verde + + + + + Horario estándar de Chamorro + + + + + Horario de Chatham + Horario estándar de Chatham + Horario de verán de Chatham + + + + + Horario de Chile + Horario estándar de Chile + Horario de verán de Chile + + + + + Horario de China + Horario estándar de China + Horario de verán de China + + + + + Horario de Choibalsan + Horario estándar de Choibalsan + Horario de verán de Choibalsan + + + + + Horario da Illa de Nadal + + + + + Horario das Illas Cocos + + + + + Horario de Colombia + Horario estándar de Colombia + Horario de verán de Colombia + + + + + Horario das Illas Cook + Horario estándar das Illas Cook + Horario de verán medio das Illas Cook + + + + + Horario de Cuba + Horario estándar de Cuba + Horario de verán de Cuba + + + + + Horario de Davis + + + + + Horario de Dumont-d’Urville + + + + + Horario de Timor Leste + + + + + Horario da Illa de Pascua + Horario estándar da Illa de Pascua + Horario de verán da Illa de Pascua + + + + + Horario de Ecuador + + + + + Horario de Europa Central + Horario estándar de Europa Central + Horario de verán de Europa Central + + + CET + CET + CEST + + + + + Horario de Europa Oriental + Horario estándar de Europa Oriental + Horario de verán de Europa Oriental + + + EET + EET + EEST + + + + + Horario de Europa Occidental + Horario estándar de Europa Occidental + Horario de verán de Europa Occidental + + + WET + WET + WEST + + + + + Horario das Illas Malvinas + Horario estándar das Illas Malvinas + Horario de verán das Illas Malvinas + + + + + Horario de Fidxi + Horario estándar de Fidxi + Horario de verán de Fidxi + + + + + Horario da Güiana Francesa + + + + + Horario das Terras Austrais e Antárticas Francesas + + + + + Horario das Galápagos + + + + + Horario de Gambier + + + + + Horario de Xeorxia + Horario estándar de Xeorxia + Horario de verán de Xeorxia + + + + + Horario das Illas Gilbert + + + + + Horario do meridiano de Greenwich + + + GMT + + + + + Horario de Grenlandia Oriental + Horario estándar de Grenlandia Oriental + Horario de verán de Grenlandia Oriental + + + + + Horario de Grenlandia Occidental + Horario estándar de Grenlandia Occidental + Horario de verán de Grenlandia Occidental + + + + + Horario estándar do Golfo + + + + + Horario da Güiana + + + + + Horario de Hawai-Aleutiano + Horario estándar de Hawai-Aleutiano + Horario de verán de Hawai-Aleutiano + + + + + Horario de Hong Kong + Horario estándar de Hong Kong + Horario de verán de Hong Kong + + + + + Horario de Hovd + Horario estándar de Hovd + Horario de verán de Hovd + + + + + Horario estándar da India + + + + + Horario do Océano Índico + + + + + Horario de Indochina + + + + + Horario de Indonesia Central + + + + + Horario de Indonesia Oriental + + + + + Horario de Indonesia Occidental + + + + + Horario de Irán + Horario estándar de Irán + Horario de verán de Irán + + + + + Horario de Irkutsk + Horario estándar de Irkutsk + Horario de verán de Irkutsk + + + + + Horario de Israel + Horario estándar de Israel + Horario de verán de Israel + + + + + Horario de Xapón + Horario estándar de Xapón + Horario de verán de Xapón + + + + + Horario de Petropávlovsk-Kamchatski + Horario estándar de Petropávlovsk-Kamchatski + Horario de verán de Petropávlovsk-Kamchatski + + + + + Horario de Casaquistán este + + + + + Horario de Casaquistán oeste + + + + + Horario de Corea + Horario estándar de Corea + Horario de verán de Corea + + + + + Horario de Kosrae + + + + + Horario de Krasnoyarsk + Horario estándar de Krasnoyarsk + Horario de verán de Krasnoyarsk + + + + + Horario de Quirguicistán + + + + + Horario das Illas da Liña + + + + + Horario de Lord Howe + Horario estándar de Lord Howe + Horario de verán de Lord Howe + + + + + Horario da Illa Macquarie + + + + + Horario de Magadán + Horario estándar de Magadán + Horario de verán de Magadán + + + + + Horario de Malaisia + + + + + Horario das Maldivas + + + + + Horario das Marquesas + + + + + Horario das Illas Marshall + + + + + Horario de Mauricio + Horario estándar de Mauricio + Horario de verán de Mauricio + + + + + Horario de Mawson + + + + + Horario de Ulán Bátor + Horario estándar de Ulán Bátor + Horario de verán de Ulán Bátor + + + + + Horario de Moscova + Horario estándar de Moscova + Horario de verán de Moscova + + + + + Horario de Birmania + + + + + Horario de Nauru + + + + + Horario de Nepal + + + + + Horario de Nova Caledonia + Horario estándar de Nova Caledonia + Horario de verán de Nova Caledonia + + + + + Horario de Nova Celandia + Horario estándar de Nova Celandia + Horario de verán de Nova Celandia + + + + + Horario de Terranova + Horario estándar de Terranova + Horario de verán de Terranova + + + + + Horario de Niue + + + + + Horario das Illas Norfolk + + + + + Horario de Fernando de Noronha + Horario estándar de Fernando de Noronha + Horario de verán de Fernando de Noronha + + + + + Horario de Novosibirsk + Horario estándar de Novosibirsk + Horario de verán de Novosibirsk + + + + + Horario de Omsk + Horario estándar de Omsk + Horario de verán de Omsk + + + + + Horario de Paquistán + Horario estándar de Paquistán + Horario de verán de Paquistán + + + + + Horario de Palau + + + + + Horario de Papúa Nova Guinea + + + + + Horario de Paraguai + Horario estándar de Paraguai + Horario de verán de Paraguai + + + + + Horario de Perú + Horario estándar de Perú + Horario de verán de Perú + + + + + Horario de Filipinas + Horario estándar de Filipinas + Horario de verán de Filipinas + + + + + Horario das Illas Fénix + + + + + Horario de San Pedro e Miguelón + Horario estándar de San Pedro e Miguelón + Horario de verán de San Pedro e Miguelón + + + + + Horario de Pitcairn + + + + + Horario de Pohnpei + + + + + Horario de Reunión + + + + + Horario de Rothera + + + + + Horario de Sakhalin + Horario estándar de Sakhalín + Horario de verán de Sakhalin + + + + + Horario de Samara + Horario estándar de Samara + Horario de verán de Samara + + + + + Horario de Samoa + Horario estándar de Samoa + Horario de verán de Samoa + + + + + Horario das Seixeles + + + + + Horario estándar de Singapur + + + + + Horario das Illas Salomón + + + + + Horario de Xeorxia do Sur + + + + + Horario de Surinam + + + + + Horario de Syowa + + + + + Horario de Tahití + + + + + Horario de Taipei + Horario estándar de Taipei + Horario de verán de Taipei + + + + + Horario de Taxiquistán + + + + + Horario de Toquelau + + + + + Horario de Tonga + Horario estándar de Tonga + Horario de verán de Tonga + + + + + Horario de Chuuk + + + + + Horario de Turcomenistán + Horario estándar de Turcomenistán + Horario de verán de Turcomenistán + + + + + Horario de Tuvalu + + + + + Horario de Uruguai + Horario estándar de Uruguai + Horario de verán de Uruguai + + + + + Horario de Usbequistán + Horario estándar de Usbequistán + Horario de verán de Usbequistán + + + + + Horario de Vanuatu + Horario estándar de Vanuatu + Horario de verán de Vanuatu + + + + + Horario de Venezuela + + + + + Horario de Vladivostok + Horario estándar de Vladivostok + Horario de verán de Vladivostok + + + + + Horario de Volgogrado + Horario estándar de Volgogrado + Horario de verán de Volgogrado + + + + + Horario de Vostok + + + + + Horario da Illa Wake + + + + + Horario de Wallis e Futuna + + + + + Horario de Iakutsk + Horario estándar de Yakutsk + Horario de verán de Yakutsk + + + + + Horario de Ekaterimburgo + Horario estándar de Ekaterimburgo + Horario de verán de Ekaterimburgo + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 millón + 0 millóns + 00 millón + 00 millóns + 000 millón + 000 millóns + 0 mil millóns + 0 mil millóns + 00 mil millóns + 00 mil millóns + 000 mil millóns + 000 mil millóns + 0 billóns + 0 billóns + 00 billóns + 00 billóns + 000 billóns + 000 billóns + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0k M + 0k M + 00k M + 00k M + 000k M + 000k M + 0 B + 0 B + 00 B + 00 B + 000 B + 000 B + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + peseta andorrana + peseta andorrana + pesetas andorranas + + + Dirham dos Emiratos Árabes Unidos + + + Afgani afgano + + + Lek albanés + + + Dram armenio + + + Florín das Antillas Neerlandesas + + + Kwanza angoleño + + + Peso arxentino (1983–1985) + peso arxentino (ARP) + pesos arxentinos (ARP) + + + Peso arxentino + peso arxentino + pesos arxentinos + + + Dólar australiano + dólar australiano + dólares australianos + + + Florín arubeño + + + Manat acerbaixano + + + Marco convertible de Bosnia e Hercegovina + + + Dólar de Barbados + + + Taka de Bangladesh + + + Franco belga (convertible) + franco belga (convertible) + francos belgas (convertibles) + + + Franco belga + franco belga + francos belgas + + + Franco belga (financeiro) + franco belga (financeiro) + francos belgas (financeiros) + + + Lev búlgaro + + + Dinar de Baréin + + + Franco burundés + + + Dólar das Bemudas + + + Dólar de Brunei + + + Boliviano + boliviano + bolivianos + + + Peso boliviano + peso boliviano + pesos bolivianos + + + MVDOL boliviano + + + Cruzeiro novo brasileiro (1967–1986) + cruzeiro novo brasileiro + cruzeiros novos brasileiros + + + Cruzado brasileiro + cruzado brasileiro + cruzados brasileiros + + + Cruzeiro brasileiro (1990–1993) + cruzeiro brasileiro (BRE) + cruzeiros brasileiros (BRE) + + + Real brasileiro + real brasileiro + reais brasileiros + + + Cruzado novo brasileiro + cruzado novo brasileiro + cruzados novos brasileiros + + + Cruzeiro brasileiro + cruzeiro brasileiro + cruzeiros brasileiros + + + Dólar das Bahamas + + + Ngultrum butanés + + + Pula botsuano + + + Rublo bielorruso + + + Dólar beliceño + + + Dólar canadiano + dólar canadiano + dólares canadianos + $CA + + + Franco congolés + + + Franco suízo + franco suízo + francos suizos + + + Unidades de fomento chilenas + unidade de fomento chilena + unidades de fomento chilenas + + + Peso chileno + peso chileno + pesos chilenos + + + Iuán chinés + iuán chinés + iuáns chineses + CN¥ + + + Peso colombiano + peso colombiano + pesos colombianos + + + Colón costarricense + colón costarricense + colóns costarricenses + + + Peso cubano convertible + + + Peso cubano + peso cubano + pesos cubanos + + + Escudo caboverdiano + + + Coroa checa + + + Marco alemán + marco alemán + marcos alemáns + + + Franco xibutiano + + + Coroa dinamarquesa + coroa dinamarquesa + coroas dinamarquesas + + + Peso dominicano + peso dominicano + pesos dominicanos + + + Dinar alxeriano + + + Sucre ecuatoriano + sucre ecuatoriano + sucres ecuatorianos + + + Unidade de valor constante ecuatoriana + + + Libra exipcia + + + Nakfa eritreo + + + Peseta española (conta A) + + + Peseta española (conta convertible) + + + #,##0.00 ¤ + Peseta española + peseta + pesetas + + , + . + + + Birr etíope + + + Euro + euro + euros + + + + Dólar fixiano + + + Libra das Malvinas + + + Franco francés + franco francés + francos franceses + + + Libra esterlina + libra esterlina + libras esterlinas + £ + + + Lari xeorxiano + + + Cedi de Gana + + + Libra de Xibraltar + libra xibraltareña + libras xibraltareñas + + + Dalasi gambiano + + + Franco guineano + + + Syli guineano + + + Ekwele guineana + + + Dracma grego + + + Quetzal guatemalteco + + + Dólar güianés + + + Dólar de Hong Kong + dólar de Hong Kong + dólares de Hong Kong + $HK + + + Lempira hondureño + + + Kuna croata + + + Gourde haitiano + + + Florín húngaro + + + Rupia indonesia + rupia indonesia + rupias indonesias + + + Libra irlandesa + libra irlandesa + libras irlandesas + + + Novo shequel israelí + + + Rupia india + rupia india + rupias indias + + + + Dinar iraquí + + + Rial iraniano + + + Coroa islandesa + + + Lira italiana + + + Dólar xamaicano + + + Dinar xordano + + + Ien xaponés + ien xaponés + iens xaponeses + ¥JP + + + Chelín kenyano + + + Som quirguizo + + + Riel camboxano + + + Franco comoriano + + + Won norcoreano + + + Won surcoreano + won surcoreano + wons surcoreanos + + + + Dinar kuwaití + + + Dólar das Illas Caimán + + + Tenge casaco + + + Kip laosiano + + + Libra libanesa + + + Rupia de Sri Lanka + + + Dólar liberiano + + + Loti de Lesoto + + + Litas lituana + + + Franco convertible luxemburgués + + + Franco luxemburgués + + + Franco financeiro luxemburgués + + + Lats letón + + + Dinar libio + + + Dirham marroquí + + + Franco marroquí + + + Leu moldavo + + + Ariary malgaxe + + + Dinar macedonio + + + Kiat birmano + + + Tugrik mongol + + + Pataca de Macau + + + Ouguiya mauritano + + + Rupia de Mauricio + + + Rupia maldiva + + + Kwacha de Malaui + + + Peso mexicano + peso mexicano + pesos mexicanos + $MX + + + Peso de prata mexicano (1861–1992) + + + Unidade de inversión mexicana + + + Ringgit malaio + + + Metical de Mozambique + metical de Mozambique + meticais de Mozambique + + + Dólar namibio + + + Naira nixeriano + + + Córdoba nicaragüense + + + Córdoba de ouro nicaragüense + + + Florín holandés + + + Coroa norueguesa + coroa norueguesa + coroas norueguesas + + + Rupia nepalesa + + + Dólar neozelandés + + + Rial omaní + + + Balboa panameño + + + Inti peruano + + + Sol novo peruano + + + Sol peruano + + + Kina de Papúa Nova Guinea + + + Peso filipino + + + Rupia paquistaní + + + Zloty polaco + zloty polaco + zlotys polacos + + + Escudo portugués + escudo portugués + escudos portugueses + + + Guaraní paraguaio + Guaraní paraguaio + Guaranís paraguaios + + + Rial qatarí + + + Leu romanés + leu romanés + lei romanés + + + Dinar serbio + + + Rublo ruso + rublo ruso + rublos rusos + + + Rublo ruso (1991–1998) + + + Franco ruandés + + + Rial saudita + rial saudita + riais sauditas + + + Dólar das Illas Salomón + + + Rupia de Seixeles + + + Libra sudanesa + + + Coroa sueca + coroa sueca + coroas suecas + + + Dólar de Singapur + + + Libra de Santa Helena + + + Leone de Serra Leoa + + + Chelín somalí + + + Dólar surinamés + + + Libra sursudanesa + libra sursudanesa + libras sursudanesa + + + Dobra de San Tomé e Príncipe + + + Rublo soviético + rublo soviético + rublos soviéticos + + + Colón salvadoreño + colón salvadoreño + colóns salvadoreños + + + Libra siria + + + Lilanxeni de Suacilandia + + + Baht tailandés + baht tailandés + bahts tailandeses + ฿ + + + Somoni taxico + + + Manat turcomano + + + Dinar tunesino + + + Paʻanga de Tonga + + + Lira turca + lira turca + liras turcas + + + Dólar de Trinidade e Tobago + + + Novo dólar taiwanés + novo dólar taiwanés + novos dólares taiwaneses + + + Chelín tanzano + + + Grivna ucraína + + + Chelín ugandés + + + Dólar estadounidense + dólar estadounidense + dólares estadounidenses + $ + + + Peso en unidades indexadas uruguaio + + + Peso uruguaio (1975–1993) + + + Peso uruguaio + peso uruguaio + pesos uruguaios + + + Som usbeco + + + Bolívar venezolano (1871–2008) + bolívar venezolano (1871–2008) + bolívares venezolanos (1871–2008) + + + Bolívar venezolano + bolívar venezolano + bolívares venezolanos + + + Dong vietnamita + + + Vatu vanuatense + + + Tala samoano + + + Franco CFA BEAC + + + Prata + + + Ouro + + + Dólar Caribe-Leste + + + Franco CFA BCEAO + + + Paladio + + + Franco CFP + + + Platino + + + Unidade monetaria descoñecida ou non válida + unidade monetaria descoñecida ou non válida + unidades monetarias descoñecidas ou non válidas + + + Rial iemení + + + Rand sudafricano + rand sudafricano + rands sudafricanos + + + Kwacha zambiano (1968–2012) + + + Kwacha zambiano + + + + ⩾{0} + {0}–{1} + + + + + + {0} día + {0} días + + + {0} hora + {0} horas + + + {0} milisegundo + {0} milisegundos + + + {0} minuto + {0} minutos + + + {0} mes + {0} meses + + + {0} segundo + {0} segundos + + + {0} semana + {0} semanas + + + {0} ano + {0} anos + + + {0} centímetro + {0} centímetros + + + {0} quilómetro + {0} quilómetros + + + {0} metro + {0} metros + + + {0} milímetro + {0} milímetros + + + {0} gramo + {0} gramos + + + {0} quilogramo + {0} quilogramos + + + {0} quilómetro por hora + {0} quilómetros por hora + + + {0}grado Celsius + {0}grados Celsius + + + {0} litro + {0} litros + + + + + {0} día + {0} días + + + {0} hora + {0} horas + + + {0} miliseg + {0} miliseg + + + {0} min + {0} min + + + {0} mes + {0} meses + + + {0} seg + {0} seg + + + {0} sem + {0} sem + + + {0} ano + {0} anos + + + {0} cent + {0} cent + + + {0} quilóm + {0} quilóm + + + {0} met + {0} met + + + {0} milím + {0} milím + + + {0} gram + {0} gram + + + {0} quilog + {0} quilog + + + {0} km por hora + {0} km por hora + + + {0}g Celsius + {0} g Celsius + + + {0} lit + {0} lit + + + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} m + {0} m + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} s + {0} s + + + {0} a + {0} a + + + {0} cm + {0} cm + + + {0} km + {0} km + + + {0} m + {0} m + + + {0} mm + {0} mm + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} km/h + {0} km/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + + + si:s + non:n + + + + diff --git a/library/Zend/Locale/Data/gl_ES.xml b/library/Zend/Locale/Data/gl_ES.xml new file mode 100755 index 000000000..d1089a5b1 --- /dev/null +++ b/library/Zend/Locale/Data/gl_ES.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/gsw.xml b/library/Zend/Locale/Data/gsw.xml new file mode 100755 index 000000000..26c37baae --- /dev/null +++ b/library/Zend/Locale/Data/gsw.xml @@ -0,0 +1,3911 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + + + Afar + Abchasisch + Aceh + Acholi + Adangme + Adygai + Avestisch + Afrikaans + Afrihili + Ainu + Akan + Akkadisch + Aleutisch + Süüd-Altaisch + Amharisch + Aragonesisch + Altänglisch + Angika + Arabisch + Aramääisch + Araukanisch + Arapaho + Arawak + Assamesisch + Asu (Tanzania) + Aschturianisch + Awarisch + Awadhi + Aymara + Aserbaidschanisch + Baschkirisch + Belutschisch + Balinesisch + Basaa + Wiissrussisch + Bedauye + Bemba + Bena (Tanzania) + Bulgaarisch + Bhodschpuri + Bislama + Bikolisch + Bini + Blackfoot-Schpraach + Bambara + Bengalisch + Tibeetisch + Brötoonisch + Braj-Bhakha + Bosnisch + Burjatisch + Bugineesisch + Blin + Katalaanisch + Caddo + Kariibisch + Atsam + Tschetscheenisch + Cebuano + Chamorro + Tschibtscha + Tschagataisch + Trukesisch + Tscheremissisch + Chinook + Choctaw + Chipewyan + Cherokee + Cheyenne + Korsisch + Koptisch + Cree + Krimtatarisch + Tschechisch + Kaschubisch + Chileslawisch + Tschuwaschisch + Walisisch + Tänisch + Takota + Targiinisch + Tüütsch + Öschtriichischs Tüütsch + Schwiizer Hochtüütsch + Delaware-Schpraach + Slavey + Togrib + Tinka + Togri + Nidersorbisch + Tuala + Mittelniderländisch + Malediivisch + Tiula + Dschongkha + Ewe + Efikisch + Altägyptisch + Ekajuk + Griechisch + Elamisch + Änglisch + Auschtralischs Änglisch + Kanadischs Änglisch + Britischs Änglisch + Amerikanischs Änglisch + Mittelänglisch + Eschperanto + Schpanisch + Latiinamerikanischs Schpanisch + Ibeerischs Schpanisch + Eestnisch + Baskisch + Ewondo + Persisch + Pangwe-Schpraach + Fanti-Schpraach + Ful + Finnisch + Filipino + Fidschianisch + Färöisch + Fon + Französisch + Kanadischs Französisch + Schwiizer Französisch + Mittelfranzösisch + Altfranzösisch + Nordfriesisch + Oschtfriesisch + Friulisch + Friesisch + Iirisch + Ga + Gayo + Gbaya + Schottisch-Gäälisch + Geez + Gilbertesisch + Galizisch + Mittelhochtüütsch + Guarani + Althochtüütsch + Gondi + Mongondou + Gotisch + Grebo + Altgriechisch + Schwiizertüütsch + Gujarati + Manx-Gäälisch + Kutchinisch + Haussa + Haida + Hawaiianisch + Hebräisch + Hindi + Hiligaynonisch + Hethitisch + Miao + Hiri-Motu + Kroazisch + Obersorbisch + Haitisch + Ungarisch + Hupa + Armenisch + Herero + Interlingua + Ibanisch + Indonesisch + Interlingue + Igbo + Sezuanischs Yi + Inupiak + Ilokano + Inguschisch + Ido + Iisländisch + Italiänisch + Inukitut + Japanisch + Lojbanisch + Jüüdisch-Persisch + Jüüdisch-Arabisch + Javanisch + Georgisch + Karakalpakisch + Kabylisch + Kachin-Schpraach + Jju + Kamba + Kawi + Kabardinisch + Tyap + Kabuverdianu + Koro + Kongolesisch + Khasisch + Sakisch + Kikuyu-Schpraach + Kwanyama + Kasachisch + Gröönländisch + Kambodschanisch + Kimbundu-Schpraach + Kannada + Koreaanisch + Konkani + Kosraeanisch + Kpelle-Schpraach + Kanuri-Schpraach + Karatschaiisch-Balkarisch + Karelisch + Oraon-Schpraach + Kaschmirisch + Kurdisch + Kumükisch + Kutenai-Schpraach + Komi-Schpraach + Kornisch + Kirgiisisch + Latiin + Ladino + Lahndanisch + Lambanisch + Luxemburgisch + Lesgisch + Ganda-Schpraach + Limburgisch + Lingala + Laozisch + Mongo + Rotse-Schpraach + Litauisch + Luba + Luba-Lulua + Luiseno-Schpraach + Lunda-Schpraach + Luo-Schpraach + Lushai-Schpraach + Olulujia + Lettisch + Maduresisch + Khotta + Maithili + Makassarisch + Manding-Schpraach + Massai-Schpraach + Mokschamordwinisch + Mandaresisch + Mende-Schpraach + Madagassisch + Mittelirisch + Marschallesisch + Maori + Micmac-Schpraach + Minangkabau-Schpraach + Mazedonisch + Malayalam + Mongolisch + Mandschurisch + Meithei-Schpraach + Mohawk-Schpraach + Mossi-Schpraach + Marathi + Malaiisch + Maltesisch + Mehrschpraachig + Muskogee-Schpraach + Mirandesisch + Marwarisch + Birmanisch + Erzya + Nauruisch + Neapolitanisch + Norwegisch Bokmål + Nord-Ndebele-Schpraach + Nidertüütsch + Nepalesisch + Newarisch + Ndonga + Nias-Schpraach + Niue-Schpraach + Niderländisch + Fläämisch + Norwegisch Nynorsk + Norwegisch + Nogaisch + Altnordisch + N’Ko + Süüd-Ndebele-Schpraach + Nord-Sotho-Schpraach + Navajo-Schpraach + Alt-Newari + Chewa-Schpraach + Nyamwezi-Schpraach + Nyankole + Nyoro + Nzima + Okzitanisch + Ojibwa-Schpraach + Oromo + Orija + Ossezisch + Osage-Schpraach + Osmanisch + Pandschabisch + Pangasinanisch + Mittelpersisch + Pampanggan-Schpraach + Papiamento + Palau + Altpersisch + Phönikisch + Pali + Polnisch + Ponapeanisch + Altprovenzalisch + Paschtu + Portugiisisch + Brasilianischs Portugiisisch + Iberischs Portugiisisch + Quechua + Rajasthani + Oschterinsel-Schpraach + Rarotonganisch + Rätoromanisch + Rundi-Schpraach + Rumänisch + Moldawisch + Zigüünerschpraach + Root + Russisch + Aromunisch + Ruandisch + Sanschkrit + Sandawe-Schpraach + Jakutisch + Samaritanisch + Sasak + Santali + Sardisch + Sizilianisch + Schottisch + Sindhi + Nord-Samisch + Selkupisch + Sango + Altirisch + Serbo-Kroatisch + Schan-Schpraach + Singhalesisch + Sidamo + Slowakisch + Slowenisch + Samoanisch + Süüd-Samisch + Lule-Samisch + Inari-Samisch + Skolt-Samisch + Schhona + Soninke-Schpraach + Somali + Sogdisch + Albanisch + Serbisch + Srananisch + Serer-Schpraach + Swazi + Süüd-Sotho-Schpraach + Sundanesisch + Sukuma-Schpraach + Susu + Sumerisch + Schwedisch + Suaheli + Shimaorisch + Altsyrisch + Syrisch + Tamilisch + Telugu + Temne + Tereno-Schpraach + Tetum-Schpraach + Tadschikisch + Thailändisch + Tigrinja + Tigre + Tiv-Schpraach + Turkmenisch + Tokelauanisch + Tagalog + Klingonisch + Tlingit-Schpraach + Tamaseq + Tswana-Schpraach + Tongaisch + Tsonga-Schpraach + Neumelanesisch + Türkisch + Tsonga + Tsimshian-Schpraach + Tatarisch + Tumbuka-Schpraach + Elliceanisch + Twi + Tahitisch + Tuwinisch + Udmurtisch + Uigurisch + Ugaritisch + Ukrainisch + Mbundu-Schpraach + Unbeschtimmti Schpraach + Urdu + Usbekisch + Vai-Schpraach + Venda-Schpraach + Vietnamesisch + Volapük + Wotisch + Wallonisch + Walamo-Schpraach + Waray + Washo-Schpraach + Wolof + Kalmückisch + Xhosa + Yao-Schpraach + Yapesisch + Jiddisch + Yoruba + Kantonesisch + Zhuang + Zapotekisch + Bliss-Symbool + Zenaga + Chineesisch + Veräifachts Chineesisch + Tradizionells Chineesisch + Zulu + Zuni-Schpraach + Kän schpraachliche Inhalt + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wält + Afrika + Nordameerika + Süüdameerika + Ozeaanie + Weschtafrika + Mittelameerika + Oschtafrika + Nordafrika + Zentraalafrika + Süüdlichs Afrika + Nord-, Mittel- und Süüdameerika + Nördlichs Ameerika + Karibik + Oschtaasie + Süüdaasie + Süüdoschtaasie + Süüdeuropa + Auschtraalie und Nöiseeland + Melaneesie + Mikroneesischs Inselgebiet + Polineesie + Aasie + Zentraalaasie + Weschtaasie + Euroopa + Oschteuroopa + Nordeuroopa + Weschteuroopa + Latiinameerika + Ascension + Andorra + Veräinigti Arabischi Emirate + Afganischtan + Antigua und Barbuda + Anguilla + Albaanie + Armeenie + Niderländischi Antille + Angoola + Antarktis + Argentiinie + Amerikaanisch-Samoa + Ööschtriich + Auschtraalie + Aruba + Aaland-Insle + Aserbäidschan + Bosnie und Herzegowina + Barbados + Bangladesch + Belgie + Burkina Faaso + Bulgaarie + Bachräin + Burundi + Benin + St. Barthelemi + Bermuuda + Brunäi Tarussalam + Boliivie + Brasilie + Bahaamas + Bhutan + Bouvet-Insle + Botswana + Wiissrussland + Belize + Kanada + Kokos-Insle + Temokraatischi Republik Kongo + Kongo-Kinshasa + Zentraalafrikaanischi Republik + Kongo + Kongo-Brazzaville + Schwiiz + Elfebäiküschte + Cook-Insle + Tschile + Kamerun + Chiina + Kolumbie + Clipperton + Coschta Rica + Kuba + Kap Verde + Wienachts-Insle + Zypere + Tschechischi Republik + Tüütschland + Diego Garcia + Tschibuuti + Tänemark + Tominica + Tominikaanischi Republik + Algeerie + Ceuta und Melilla + Ecuador + Eestland + Ägüpte + Weschtsahara + Äritreea + Schpanie + Äthiopie + Europääischi Unioon + Finnland + Fitschi + Falkland-Insle + Mikroneesie + Färöer + Frankriich + Gabun + Veräinigts Chönigriich + Grenada + Geoorgie + Französisch-Guäjaana + Gäärnsi + Gaana + Gibraltar + Gröönland + Gambia + Gineea + Guadälup + Äquatoriaalgineea + Griecheland + Süüdgeorgie und d’süüdlichi Sändwitsch-Insle + Guatemaala + Guam + Gineea-Bissau + Guäjaana + Sonderverwaltigszone Hongkong + Hongkong + Höörd- und MäcDonald-Insle + Honduras + Kroaazie + Haiti + Ungarn + Canarische Eilanden + Indoneesie + Irland + Israel + Insle vo Män + Indie + Britischs Territoorium im Indische Oozean + Iraak + Iraan + Iisland + Itaalie + Dschörsi + Dschamäika + Jordaanie + Japan + Keenia + Kirgiisischtan + Kambodscha + Kiribaati + Komoore + St. Kitts und Niuwis + Demokraatischi Volksrepublik Koreea + Republik Koreea + Kuwäit + Käimän-Insle + Kasachschtan + Laaos + Libanon + St. Lutschiia + Liächteschtäi + Schri Lanka + Libeeria + Lesooto + Littaue + Luxemburg + Lettland + Lüübie + Marokko + Monaco + Republik Moldau + Monteneegro + St. Martin + Madagaschkar + Marshallinsle + Mazedoonie + Mazedoonie (EJRM) + Maali + Myanmar (Burma) + Mongolei + Sonderverwaltigszone Macao + Macao + Nördlichi Mariaane + Martinigg + Mauretaanie + Moosörrat + Malta + Mauriizius + Malediiwe + Malaawi + Mexiko + Maläisia + Mosambik + Namiibia + Nöikaledoonie + Niger + Norfolk-Insle + Nigeeria + Nicaraagua + Holland + Norweege + Neepal + Nauru + Niue + Nöiseeland + Omaan + Panama + Peru + Französisch-Polineesie + Papua-Neuguinea + Philippiine + Pakischtan + Poole + St. Pierr und Miggelo + Pitggäärn + Puerto Riggo + Paläschtinänsischi Gebiet + Portugal + Palau + Paraguai + Ggatar + Üssers Ozeaanie + Reünioon + Rumäänie + Särbie + Russland + Ruanda + Saudi-Araabie + Salomoone + Seischälle + Sudan + Schweede + Singapuur + St. Helena + Sloweenie + Svalbard und Jaan Määie + Slowakäi + Sierra Leoone + San Mariino + Senegal + Somaalie + Surinam + Sao Tome und Prinssipe + El Salvador + Süürie + Swasiland + Tristan da Cunha + Törks- und Gaiggos-Insle + Tschad + Französischi Süüd- und Antarktisgebiet + Toogo + Thailand + Tadschikischtan + Tokelau + Oschttimor + Turkmeenischtan + Tuneesie + Tonga + Türggei + Trinidad und Tobaago + Tuvalu + Taiwan + Tansaniia + Ukraiine + Uganda + Amerikanisch-Ozeaanie + Veräinigti Schtaate + USA + Uruguay + Uschbeekischtan + Vatikanstadt + St. Vincent und d’Grönadiine + Venezueela + Britischi Jungfere-Insle + Amerikaanischi Jungfere-Insle + Wietnam + Wanuatu + Wallis und Futuuna + Samooa + Jeeme + Majott + Süüdafrika + Sambia + Simbabwe + Unbekannti oder ungültigi Regioon + + + Alti tüütschi Rächtschriibig + Schtandardisierti Resianischi Rächtschriibig + Nööi tüütschi Rächtschriibig + Schpaats Mittelfranzösisch + Oschtarmeenisch + Weschtarmeenisch + Äinheitlichs Türggischs Alfabeet + Bela-Tialäkt + Boontling + Foneetisch (IPA) + Foneetisch (UPA) + Lipowaz-Mundart + Monotonisch + Natisone-Mundart + Njiva-Mundart + Osojane-Mundart + Pinyin + Politonisch + Posix + Nööi Rächtschriibig + Resianisch + Saho + Schottischs Schtandardänglisch + Scouse-Mundart + Solbica-Mundart + Taraskievica-Rächtschriibig + Wade-Giles + + + Kaländer + Sortiirig + Wäährig + + + Tradizionells Chineesisch - Big5 + Buddhischtisch Kaländer + Chineesisch Kaländer + Veräifachts Chineesisch - GB2312 + Gregoriaanisch Kaländer + Hebrääisch Kaländer + Indisch Nationaalkaländer + Islaamisch Kaländer + Bürgerlich islaamisch Kaländer + Japaanisch Kaländer + Telifonbuech-Sortiirregle + Pinyin-Sortiirregle + Kaländer vor Republik Chiina + Strichfolg + Tradizionelli Sortiir-Regle + + + metrisch + angloamerikaanisch + + + Schpraach: {0} + Schrift: {0} + Regioon: {0} + + + + [a ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z] + [á à ă â å ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ú ù ŭ û ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + « + » + + + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + d.M.y + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + dd.MM.y G + + + + + dd.MM.yy GGGGG + + + + + + d + E d. + H + HH:mm + HH:mm:ss + H:mm + L + d.M. + E, d.M. + d.MM. + dd.MM. + LLL + d. MMM + E d. MMM + d. MMMM + E d. MMMM + mm:ss + mm:ss + y + y-M + E, y-M-d + MM.y + dd.MM.y + MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} – {1} + + d.-d. + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M.-M. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d.-d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + LLLL-LLLL + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d.-d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MM – MM.y + MM.y – MM.y + + + + + + + + + Jan + Feb + Mär + Apr + Mai + Jun + Jul + Aug + Sep + Okt + Nov + Dez + + + Januar + Februar + März + April + Mai + Juni + Juli + Auguscht + Septämber + Oktoober + Novämber + Dezämber + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Su. + Mä. + Zi. + Mi. + Du. + Fr. + Sa. + + + Sunntig + Määntig + Ziischtig + Mittwuch + Dunschtig + Friitig + Samschtig + + + + + S + M + D + M + D + F + S + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1. Quartal + 2. Quartal + 3. Quartal + 4. Quartal + + + + + + + v.m. + n.m. + + + vorm. + nam. + + + + + Vormittag + Namittag + + + + + + v. Chr. + vor der gewöhnlichen Zeitrechnung + n. Chr. + der gewöhnlichen Zeitrechnung + + + v. Chr. + v. d. Z. + n. Chr. + d. Z. + + + v. Chr. + vdZ + n. Chr. + dZ + + + + + + EEEE, d. MMMM y + + + + + d. MMMM y + + + + + dd.MM.y + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d. + H + HH:mm + HH:mm:ss + H:mm + L + d.M. + E, d.M. + d.MM. + dd.MM. + LLL + d. MMM + E d. MMM + d. MMMM + E d. MMMM + mm:ss + mm:ss + y + y-M + E, y-M-d + MM.y + dd.MM.y + MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} – {1} + + d.-d. + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M.-M. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d.-d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + LLLL-LLLL + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d.-d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MM – MM.y + MM.y – MM.y + + + + + + + + Epoche + + + Jaar + letzte Jaar + diese Jaar + nächste Jaar + + + Monet + letzte Monet + diese Monet + nächste Monet + + + Wuche + letzte Wuche + diese Wuche + nächste Wuche + + + Tag + vorgeschter + geschter + hüt + moorn + übermoorn + + + Wuchetag + + + Sunntig letzte Wuche + Sunntig diese Wuche + Sunntig nächste Wuche + + + Määntig letzte Wuche + Määntig diese Wuche + Määntig nächste Wuche + + + Ziischtig letzte Wuche + Ziischtig diese Wuche + Ziischtig nächste Wuche + + + Mittwuch letzte Wuche + Mittwuch diese Wuche + Mittwuch nächste Wuche + + + Dunschtig letzte Wuche + Dunschtig diese Wuche + Dunschtig nächste Wuche + + + Friitig letzte Wuche + Friitig diese Wuche + Friitig nächste Wuche + + + Samschtig letzte Wuche + Samschtig diese Wuche + Samschtig nächste Wuche + + + Tageshälfti + + + Schtund + + + Minuute + + + Sekunde + + + Zone + + + + +HH:mm;-HH:mm + GMT{0} + {1} ({0}) + + Unbekannt + + + Tirana + + + Erivan + + + Woschtok + + + Dumont D'Urville + + + Wien + + + Brüssel + + + Wagadugu + + + Bermudas + + + Züri + + + Oschterinsle + + + Havanna + + + Kap Verde + + + Curaçao + + + Wienachts-Insle + + + Nikosia + + + Dschibuti + + + Kopehage + + + Algier + + + Kairo + + + El Aaiún + + + Kanare + + + Addis Abeba + + + Fidschi + + + Färöer + + + Tiflis + + + Akkra + + + Ittoqqortoormiit + + + Athen + + + Süüd-Georgie + + + Hongkong + + + Bagdad + + + Teheran + + + Rom + + + Jamaika + + + Tokio + + + Bischkek + + + Komore + + + St. Kitts + + + Pjöngjang + + + Kaimaninsle + + + Aktobe + + + St. Lucia + + + Wilna + + + Luxemburg + + + Kischinau + + + Ulan-Baator + + + Macao + + + Maledive + + + Mexiko-Schtadt + + + Muschkat + + + Warschau + + + Azore + + + Lissabon + + + Asunción + + + Katar + + + Réunion + + + Bukarescht + + + Moskau + + + Jekaterinburg + + + Nowosibirsk + + + Krasnojarsk + + + Jakutsk + + + Wladiwostok + + + Sachalin + + + Kamtschatka + + + Riad + + + Khartum + + + Singapur + + + St. Helena + + + Mogadischu + + + São Tomé + + + Salvador + + + Damaskus + + + Duschanbe + + + Port-of-Spain + + + Taipeh + + + Daressalam + + + Uschgorod + + + Kiew + + + Saporischja + + + Knox + + + Taschkent + + + St. Vincent + + + St. Thomas + + + + Acre-Ziit + Acre-Schtandardziit + Acre-Summerziit + + + + + Afghanischtan-Ziit + + + + + Zentralafrikanischi Ziit + + + + + Oschtafrikanischi Ziit + + + + + Süüdafrikanischi ziit + + + + + Weschtafrikanischi Ziit + Weschtafrikanischi Schtandardziit + Weschtafrikanischi Summerziit + + + + + Alaska-Ziit + Alaska-Schtandardziit + Alaska-Summerziit + + + + + Almaty-Ziit + Almaty-Schtandardziit + Almaty-Summerziit + + + + + Amazonas-Ziit + Amazonas-Schtandardziit + Amazonas-Summerziit + + + + + Mitteleuropäischi Ziit + Mitteleuropäischi Schtandardziit + Mitteleuropäischi Summerziit + + + MEZ + MEZ + MESZ + + + + + Oschteuropäischi Ziit + Oschteuropäischi Schtandardziit + Oschteuropäischi Summerziit + + + OEZ + OEZ + OESZ + + + + + Weschteuropäischi Ziit + Weschteuropäischi Schtandardziit + Weschteuropäischi Summerziit + + + WEZ + WEZ + WESZ + + + + + Moskauer Ziit + Moskauer Schtandardziit + Moskauer Summerziit + + + + + + + . + + ; + % + + + + E + + + NaN + + + + + #,##0.### + + + + + 0 tausend + 0 tausend + 00 tausend + 00 tausend + 000 tausend + 000 tausend + 0 Million + 0 Millionen + 00 Million + 00 Millionen + 000 Million + 000 Millionen + 0 Milliarde + 0 Milliarden + 00 Milliarde + 00 Milliarden + 000 Milliarde + 000 Milliarden + 0 Billion + 0 Billionen + 00 Billion + 00 Billionen + 000 Billion + 000 Billionen + + + + + 0 tsd + 0 tsd + 00 tsd + 00 tsd + 000 tsd + 000 tsd + 0 Mio + 0 Mio + 00 Mio + 00 Mio + 000 Mio + 000 Mio + 0 Mrd + 0 Mrd + 00 Mrd + 00 Mrd + 000 Mrd + 000 Mrd + 0 Bio + 0 Bio + 00 Bio + 00 Bio + 000 Bio + 000 Bio + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Andorranischi Peseete + Andorranischi Peseete + Andorranischi Peseete + + + UAE Dirham + UAE Dirham + UAE Dirham + + + Afghani (1927–2002) + Afghani (1927–2002) + Afghani (1927–2002) + + + Afghani + Afghani + Afghani + + + Lek + Lek + Lek + + + Dram + Dram + Dram + + + Niderländischi-Antille-Gulde + + + Kwanza + + + Angolanische Kwanza (1977–1990) + Angolanischi Kwanza (1977–1990) + Angolanischi Kwanza (1977–1990) + + + Nöie Kwanza + Nöii Kwanza + Nöii Kwanza + + + Kwanza Reajustado + Kwanza Reajustado + Kwanza Reajustado + + + Argentinische Auschtral + Argentinischi Auschtral + Argentinischi Auschtral + + + Argentinische Peso (1983–1985) + Argentinischi Peso (1983–1985) + Argentinischi Peso (1983–1985) + + + Argentinische Peso + Argentinische Peso + Argentinischi Pesos + + + Öschtriichische Schilling + Öschtriichischi Schilling + Öschtriichischi Schilling + öS + + + Auschtralische Dollar + Auschtralische Dollar + Auschtralischi Dollar + + + Aruba Florin + Aruba Florin + Aruba Florin + + + Aserbeidschanische Manat (1993–2006) + Aserbaidschanischi Manat (1993–2006) + Aserbaidschanischi Manat (1993–2006) + + + Aserbeidschanische Manat + Aserbeidschanische Manat + Aserbeidschanischi Manat + + + Bosnie-und-Herzegowina-Dinar + Bosnie-und-Herzegowina-Dinär + Bosnie-und-Herzegowina-Dinär + + + Konvertierbari Mark vo Bosnie und Herzegowina + + + Barbados-Dollar + Barbados-Dollar + Barbados-Dollar + + + Taka + Taka + Taka + + + Belgische Franc (konvertibel) + Belgischi Franc (konvertibel) + Belgischi Franc (konvertibel) + + + Belgische Franc + Belgischi Franc + Belgischi Franc + + + Belgische Finanz-Franc + Belgischi Finanz-Franc + Belgischi Finanz-Franc + + + Lew (1962–1999) + Lewa (1962–1999) + Lewa (1962–1999) + + + Bulgarische Lew + Bulgarische Lew + Bulgarischi Lew + + + Bahrain-Dinar + Bahrain-Dinar + Bahrain-Dinar + + + Burundi-Franc + Burundi-Franc + Burundi-Franc + + + Bermuda-Dollar + Bermuda-Dollar + Bermuda-Dollar + + + Brunei-Dollar + Brunei-Dollar + Brunei-Dollar + + + Boliviano + Boliviano + Boliviano + + + Bolivianische Peso + Bolivianischi Peso + Bolivianischi Peso + + + Bolivianische Mvdol + Bolivianischi Mvdol + Bolivianischi Mvdol + + + Brasilianische Cruzeiro Novo (1967–1986) + Brasilianischi Cruzeiro Novo (1967–1986) + Brasilianischi Cruzeiro Novo (1967–1986) + + + Brasilianische Cruzado + Brasilianischi Cruzado + Brasilianischi Cruzado + + + Brasilianische Cruzeiro (1990–1993) + Brasilianischi Cruzeiro (1990–1993) + Brasilianischi Cruzeiro (1990–1993) + + + Brasilianische Real + Brasilianische Real + Brasilianischi Real + + + Brasilianische Cruzado Novo + Brasilianischi Cruzado Novo + Brasilianischi Cruzado Novo + + + Brasilianische Cruzeiro + Brasilianischi Cruzeiro + Brasilianischi Cruzeiro + + + Bahama-Dollar + Bahama-Dollar + Bahama-Dollar + + + Bhutanische Ngultrum + Bhutanische Ngultrum + Bhutanischi Ngultrum + + + Birmanische Kyat + Birmanischi Kyat + Birmanischi Kyat + + + Botswanische Pula + Botswanische Pula + Botswanischi Pula + + + Belarus-Rubel (alt) + Belarus-Rubel (alt) + Belarus-Rubel (alt) + + + Belarus Rubel (nöi) + Belarus-Rubel (nöi) + Belarus-Rubel (nöi) + + + Belize-Dollar + + + Kanadische Dollar + Kanadische Dollar + Kanadischi Dollar + + + Kongolesische Franc + Kongolesische Franc + Kongolesischi Franc + + + WIR-Euro + + + Schwiizer Franke + Schwiizer Franke + Schwiizer Franke + CHF + + + WIR-Franke + WIR-Franke + WIR-Franke + + + Tschileenische Unidad de Fomento + Tschileenischi Unidades de Fomento + Tschileenischi Unidades de Fomento + + + Tschileenische Peso + Tschileenische Peso + Tschileenischi Pesos + + + Renminbi Yuan + + + Kolumbianische Peso + Kolumbianische Peso + Kolumbianischi Pesos + + + Unidad de Valor Real + Unidad de Valor Real + Unidad de Valor Real + + + Costa Rica Colon + Costa Rica Colon + Costa Rica Colon + + + Alte Serbische Dinar + Alti Serbischi Dinar + Alti Serbischi Dinar + + + Tschechoslowakischi Chroone + Tschechoslowakischi Chroone + Tschechoslowakischi Chroone + + + Kubanische Peso + Kubanische Peso + Kubanischi Pesos + + + Kap Verde Escudo + Kap Verde Escudo + Kap Verde Escudo + + + Zypere-Pfund + + + Tschechischi Chroone + Tschechischi Chroone + Tschechischi Chroone + + + DDR-Mark + DDR-Mark + DDR-Mark + + + Tüütschi Mark + Tüütschi Mark + Tüütschi Mark + + + Dschibuti-Franc + Dschibuti-Franc + Dschibuti-Franc + + + Tänischi Chroone + Tänischi Chroone + Tänischi Chroone + + + Tominikanische Peso + Tominikanische Peso + Tominikanischi Pesos + + + Algeerischi Dinar + Algeerische Dinar + Algeerischi Dinar + + + Ecuadorianische Sucre + Ecuadorianischi Sucre + Ecuadorianischi Sucre + + + Verrächnigsäiheit für EC + Verrächnigsäiheit für EC + Verrächnigsäiheit für EC + + + Eestnischi Chroone + Eestnischi Chroone + Eestnischi Chroone + + + Ägüptischs Pfund + Ägüptische Pfund + Ägüptischi Pfund + + + Eritreische Nakfa + Eritreische Nakfa + Eritreischi Nakfa + + + Schpanischi Peseeta (A–Kontene) + Schpanischi Peseete (A–Kontene) + Schpanischi Peseete (A–Kontene) + + + Schpanischi Peseeta (konvertibel) + Schpanischi Peseete (konvertibel) + Schpanischi Peseete (konvertibel) + + + Schpanischi Peseeta + Schpanischi Peseete + Schpanischi Peseete + + + Äthiopische Birr + Äthiopische Birr + Äthiopischi Birr + + + Euro + Euro + Euro + + + Finnischi Mark + Finnischi Mark + Finnischi Mark + + + Fidschi Dollar + Fidschi Dollar + Fidschi Dollar + + + Falkland-Pfund + Falkland-Pfund + Falkland-Pfund + + + Französische Franc + Französischi Franc + Französischi Franc + + + Pfund Schtörling + Pfund Schtörling + Pfund Schtörling + + + Georgische Kupon Larit + Georgischi Kupon Larit + Georgischi Kupon Larit + + + Georgische Lari + Georgische Lari + Georgischi Lari + + + Ghanaische Cedi (GHC) + Ghanaischi Cedi (GHC) + Ghanaischi Cedi (GHC) + + + Ghanaische Cedi (GHS) + Ghanaische Cedi (GHS) + Ghanaischi Cedi (GHS) + + + Gibraltar-Pfund + Gibraltar-Pfund + Gibraltar-Pfund + + + Gambische Dalasi + Gambische Dalasi + Gambischi Dalasi + + + Guinea-Franc + Guinea-Franc + Guinea-Franc + + + Guineische Syli + Guineischi Syli + Guineischi Syli + + + Äquatorialguinea-Ekwele + Äquatorialguinea-Ekwele + Äquatorialguinea-Ekwele + + + Griechische Trachme + Griechischi Trachme + Griechischi Trachme + + + Quetzal + Quetzal + Quetzal + + + Portugiisische Guinea Escudo + Portugiisischi Guinea Escudo + Portugiisischi Guinea Escudo + + + Guinea-Bissau-Peso + Guinea-Bissau-Pesos + Guinea-Bissau-Pesos + + + Guyana-Dollar + Guyana-Dollar + Guyana-Dollar + + + Hongkong-Dollar + Hongkong-Dollar + Hongkong-Dollar + + + Lempira + Lempira + Lempira + + + Kroazische Dinar + Kroazischi Dinar + Kroazischi Dinar + + + Kuna + Kuna + Kuna + + + Gourde + Gourde + Gourde + + + Forint + Forint + Forint + + + Indonesischi Rupie + Indonesischi Rupie + Indonesischi Rupie + + + Iirischs Pfund + Iirischi Pfund + Iirischi Pfund + + + Israelischs Pfund + Israelischi Pfund + Israelischi Pfund + + + Schekel + Schekel + Schekel + + + Indischi Rupie + Indischi Rupie + Indischi Rupie + + + Irak-Dinar + Irak-Dinar + Irak-Dinar + + + Rial + Rial + Rial + + + Iisländischi Chroone + Iisländischi Chroone + Iisländischi Chroone + + + Italiänischi Lira + Italienischi Lire + Italienischi Lire + + + Jamaika-Dollar + Jamaika-Dollar + Jamaika-Dollar + + + Jordaanische Dinar + Jordaanische Dinar + Jordaanischi Dinar + + + Yen + Yen + Yen + ¥ + + + Kenia-Schilling + Kenia-Schilling + Kenia-Schilling + + + Som + Som + Som + + + Riel + Riel + Riel + + + Komore-Franc + Komore-Franc + Komore-Franc + + + Nordkoreanische Won + Nordkoreanische Won + Nordkoreanischi Won + + + Süüdkoreanische Won + Süüdkoreanische Won + Süüdkoreanischi Won + + + Kuwait-Dinar + Kuwait-Dinar + Kuwait-Dinar + + + Kaiman-Dollar + Kaiman-Dollar + Kaiman-Dollar + + + Tenge + Tenge + Tenge + + + Kip + Kip + Kip + + + Libaneesischs Pfund + Libaneesischs Pfund + Libaneesischi Pfund + + + Sri-Lanka-Rupie + Sri-Lanka-Rupie + Sri-Lanka-Rupie + + + Liberiaanische Dollar + Liberiaanische Dollar + Liberiaanischi Dollar + + + Loti + Loti + Loti + + + Litauische Litas + Litauische Litas + Litauischi Litas + + + Litauische Talonas + Litauischi Talonas + Litauischi Talonas + + + Luxemburgische Franc (konvertibel) + Luxemburgischi Franc (konvertibel) + Luxemburgischi Franc (konvertibel) + + + Luxemburgische Franc + Luxemburgischi Franc + Luxemburgischi Franc + + + Luxemburgischer Finanz-Franc + Luxemburgischi Finanz-Franc + Luxemburgischi Finanz-Franc + + + Lettische Lats + Lettische Lats + Lettischi Lats + + + Lettische Rubel + Lettischi Rubel + Lettischi Rubel + + + Lüübische Dinar + Lüübische Dinar + Lüübischi Dinar + + + Marokkanische Dirham + Marokkanische Dirham + Marokkanischi Dirham + + + Marokkanischer Franc + Marokkanische Franc + Marokkanische Franc + + + Moldau-Löi + Moldau-Löi + Moldau-Löi + + + Madagaschkar-Ariary + Madagaschkar-Ariary + Madagaschkar-Ariary + + + Madagaschkar-Franc + Madagaschkar-Franc + Madagaschkar-Franc + + + Denar + Denar + Denar + + + Malische Franc + Malischi Franc + Malischi Franc + + + Kyat + Kyat + Kyat + + + Tugrik + Tugrik + Tugrik + + + Pataca + Pataca + Pataca + + + Ouguiya + Ouguiya + Ouguiya + + + Malteesischi Lira + Malteesischi Lira + Malteesischi Lira + + + Malteesischs Pfund + Malteesischi Pfund + Malteesischi Pfund + + + Maurizius-Rupie + Maurizius-Rupie + Maurizius-Rupie + + + Rufiyaa + Rufiyaa + Rufiyaa + + + Malawi-Kwacha + Malawi-Kwacha + Malawi-Kwacha + + + Mexikanische Peso + Mexikanische Peso + Mexikanischi Pesos + + + Mexikanische Silber-Peso (1861–1992) + Mexikanischi Silber-Pesos (MXP) + Mexikanischi Silber-Pesos (MXP) + + + Mexikanische Unidad de Inversion (UDI) + Mexikanischi Unidad de Inversion (UDI) + Mexikanischi Unidad de Inversion (UDI) + + + Malaysische Ringgit + Malaysische Ringgit + Malaysischi Ringgit + + + Mosambikanische Escudo + Mozambikanischi Escudo + Mozambikanischi Escudo + + + Alte Metical + Alti Metical + Alti Metical + + + Metical + Metical + Metical + + + Namibia-Dollar + Namibia-Dollar + Namibia-Dollar + + + Naira + Naira + Naira + + + Cordoba + Cordoba + Cordoba + + + Nicaragua-Córdoba + Nicaragua-Córdoba + Nicaragua-Córdoba + + + Holländische Gulde + Holländischi Gulde + Holländischi Gulde + + + Norweegischi Chroone + Norweegischi Chroone + Norweegischi Chroone + + + Nepaleesischi Rupie + Nepalesischi Rupie + Nepalesischi Rupie + + + Neuseeland-Dollar + Neuseeland-Dollar + Neuseeland-Dollar + + + Rial Omani + Rial Omani + Rial Omani + + + Balboa + Balboa + Balboa + + + Peruanische Inti + Peruanischi Inti + Peruanischi Inti + + + Nöie Sol + Nöie Sol + Nöii Sol + + + Sol + Sol + Sol + + + Kina + Kina + Kina + + + Philippiinische Peso + Philippiinische Peso + Philippiinischi Pesos + + + Pakischtanischi Rupie + Pakischtanischi Rupie + Pakischtanischi Rupie + + + Zloty + Zloty + Zloty + + + Zloty (1950–1995) + Zloty (1950–1995) + Zloty (1950–1995) + + + Portugiisische Escudo + Portugiisischi Escudo + Portugiisischi Escudo + + + Guarani + Guarani + Guarani + + + Katar-Riyal + Katar-Riyal + Katar-Riyal + + + Rhodesische Dollar + Rhodesischi Dollar + Rhodesischi Dollar + + + Löi + Löi + Löi + + + Rumäänische Löi + Rumäänische Löi + Rumäänischi Löi + + + Serbische Dinar + Serbische Dinar + Serbischi Dinar + + + Russische Rubel + Russische Rubel + Russischi Rubel + + + Russische Rubel (alt) + Russischi Rubel (alt) + Russischi Rubel (alt) + + + Ruanda-Franc + Ruanda-Franc + Ruanda-Franc + + + Saudi-Riyal + Saudi-Riyal + Saudi-Riyal + + + Salomone-Dollar + Salomone-Dollar + Salomone-Dollar + + + Seyschelle-Rupie + Seyschelle-Rupie + Seyschelle-Rupien + + + Sudaneesische Dinar + Sudaneesischi Dinar + Sudaneesischi Dinar + + + Sudaneesischs Pfund + Sudaneesische Pfund + Sudaneesischi Pfund + + + Sudaneesischs Pfund (alt) + Sudaneesischi Pfund (alt) + Sudaneesischi Pfund (alt) + + + Schweedischi Chroone + Schwedischi Chroone + Schwedischi Chroone + + + Singapur-Dollar + Singapur-Dollar + Singapur-Dollar + + + St.-Helena-Pfund + St.-Helena-Pfund + St.-Helena-Pfund + + + Tolar + Tolar + Tolar + + + Slowakischi Chroone + Slowakischi Chroone + Slowakischi Chroone + + + Leone + Leone + Leone + + + Somalia-Schilling + Somalia-Schilling + Somalia-Schilling + + + Surinamische Dollar + Surinamische Dollar + Surinamischi Dollar + + + Surinamische Gulde + Surinamischi Gulde + Surinamischi Gulde + + + Süüdsudaneesischs Pfund + Süüdsudaneesische Pfund + Süüdsudaneesischi Pfund + + + Dobra + Dobra + Dobra + + + Sowjetische Rubel + Sowjetischi Rubel + Sowjetischi Rubel + + + El-Salvador-Colon + El-Salvador-Colon + El-Salvador-Colon + + + Süürischs Pfund + Süürischs Pfund + Süürischi Pfund + + + Lilangeni + Lilangeni + Lilangeni + + + Baht + Baht + Baht + + + Tadschikischtan-Rubel + Tadschikischtan-Rubel + Tadschikischtan-Rubel + + + Tadschikischtan-Somoni + Tadschikischtan-Somoni + Tadschikischtan-Somoni + + + Turkmeenischtan-Manat + Turkmeenischtan-Manat + Turkmeenischtan-Manat + + + Tuneesische Dinar + Tuneesische Dinar + Tuneesischi Dinar + + + Paʻanga + Paʻanga + Paʻanga + + + Timor-Escudo + Timor-Escudo + Timor-Escudo + + + Türkischi Liire + Türkischi Liira (1922–2005) + Türkischi Liire (1922–2005) + + + Nöii Türkischi Liire + Nöii Türkischi Liira + Nöii Türkischi Liire + + + Trinidad-und-Tobago-Dollar + Trinidad-und-Tobago-Dollar + Trinidad-und-Tobago-Dollar + + + Nöii Taiwan-Dollar + Nöie Taiwan-Dollar + Nöii Taiwan-Dollar + + + Tansania-Schilling + Tansania-Schilling + Tansania-Schilling + + + Hryvnia + Hryvnia + Hryvnia + + + Ukraiinische Karbovanetz + Ukraiinischi Karbovanetz + Ukraiinischi Karbovanetz + + + Uganda-Schilling (1966–1987) + Uganda-Schilling (1966–1987) + Uganda-Schilling (1966–1987) + + + Uganda-Schilling + Uganda-Schilling + Uganda-Schilling + + + US-Dollar + US-Dollar + US-Dollar + $ + + + US Dollar (Nöchschte Taag) + US-Dollar (Nöchschte Taag) + US-Dollar (Nöchschte Taag) + + + US Dollar (Gliiche Taag) + US-Dollar (Gliiche Taag) + US-Dollar (Gliiche Taag) + + + Uruguayische Nöie Peso (1975–1993) + Uruguayischi Nöii Pesos (1975–1993) + Uruguayischi Nöii Pesos (1975–1993) + + + Uruguayische Peso + Uruguayische Peso + Uruguayischi Pesos + + + Usbeekischtan-Sum + Usbeekischtan-Sum + Usbeekischtan-Sum + + + Bolivar (1871–2008) + Bolivar (1871–2008) + Bolivar (1871–2008) + + + Bolivar + Bolivar + Bolivar + + + Dong + + + Vatu + Vatu + Vatu + + + Tala + Tala + Tala + + + CFA-Franc (Äquatoriaal) + CFA-Franc (Äquatoriaal) + CFA-Franc (Äquatoriaal) + + + Silber + Silber + Silber + + + Gold + Gold + Gold + + + Europääischi Rächnigseinheit + Europääischi Rächnigseinheite + Europääischi Rächnigseinheite + + + Europääischi Währigseinheit (XBB) + Europääischi Währigseinheite (XBB) + Europääischi Währigseinheite (XBB) + + + Europääischi Rächnigseinheit (XBC) + Europääischi Rächnigseinheite (XBC) + Europääischi Rächnigseinheite (XBC) + + + Europääischi Rächnigseinheit (XBD) + Europääischi Rächnigseinheite (XBD) + Europääischi Rächnigseinheite (XBD) + + + Oschtkaribische Dollar + Oschtkaribische Dollar + Oschtkaribischi Dollar + + + Sunderziäigsrächt + Sunderziäigsrächt + Sunderziäigsrächt + + + Europääischi Währigseinheit (XEU) + Europääischi Währigseinheite (XEU) + Europääischi Währigseinheite (XEU) + + + Französische Gold-Franc + Französischi Gold-Franc + Französischi Gold-Franc + + + Französische UIC-Franc + Französischi UIC-Franc + Französischi UIC-Franc + + + CFA-Franc (Wescht) + CFA-Franc (Wescht) + CFA-Franc (Wescht) + + + Palladium + Palladium + Palladium + + + CFP-Franc + CFP-Franc + CFP-Franc + + + Platin + Platin + Platin + + + RINET-Funds + RINET-Funds + RINET-Funds + + + Teschtwährig + Teschtwährig + Teschtwährig + + + Unbekannti Währig + Unbekannti Währig + Unbekannti Währig + + + Jeme-Dinar + Jeme-Dinar + Jeme-Dinar + + + Jeme-Rial + Jeme-Rial + Jeme-Rial + + + Jugoslawische Dinar (1966–1990) + Jugoslawischi Dinar (1966–1990) + Jugoslawischi Dinar (1966–1990) + + + Nöii Dinar + Nöie Dinar + Nöii Dinar + + + Jugoslawische Dinar (konvertibel) + Jugoslawischi Dinar (konvertibel) + Jugoslawischi Dinar (konvertibel) + + + Rand + Rand + Rand + + + Kwacha (1968–2012) + Kwacha (1968–2012) + Kwacha (1968–2012) + + + Kwacha + Kwacha + Kwacha + + + Nöie Zaire + Nöii Zaire + Nöii Zaire + + + Zaire + Zaire + Zaire + + + Simbabwe-Dollar + Simbabwe-Dollar + Simbabwe-Dollar + + + + + + + {0} pro {1} + + + {0}-fachi Erdbeschlünigung + {0}-fachi Erdbeschlünigung + + + {0} Winkelminute + {0} Winkelminute + + + {0} Winkelsekunde + {0} Winkelsekunde + + + {0} Grad + {0} Grad + + + {0} Acre + {0} Acre + + + {0} Hektar + {0} Hektar + + + {0} Quadratfuess + {0} Quadratfuess + + + {0} Quadratkilometer + {0} Quadratkilometer + + + {0} Quadratmeter + {0} Quadratmeter + + + {0} Quadratmeile + {0} Quadratmeile + + + {0} Taag + {0} Tääg + + + {0} Schtund + {0} Schtunde + + + {0} Millisekunde + {0} Millisekunde + + + {0} Minuute + {0} Minuute + + + {0} Monet + {0} Mönet + + + {0} Sekunde + {0} Sekunde + + + {0} Wuche + {0} Wuche + + + {0} Jahr + {0} Jahr + + + {0} Zentimeter + {0} Zentimeter + + + {0} Fuess + {0} Fuess + + + {0} Zoll + {0} Zoll + + + {0} Kilometer + {0} Kilometer + + + {0} Liechtjahr + {0} Liechtjahr + + + {0} Meter + {0} Meter + + + {0} Meile + {0} Meile + + + {0} Millimeter + {0} Millimeter + + + {0} Pikometer + {0} Pikometer + + + {0} Yard + {0} Yard + + + {0} Gramm + {0} Gramm + + + {0} Kilogramm + {0} Kilogramm + + + {0} Unze + {0} Unze + + + {0} Pfund + {0} Pfund + + + {0} Pferdestärke + {0} Pferdestärke + + + {0} Kilowatt + {0} Kilowatt + + + {0} Watt + {0} Watt + + + {0} Hektopascal + {0} Hektopascal + + + {0} Zoll Quecksilbersüüle + {0} Zoll Quecksilbersüüle + + + {0} Millibar + {0} Millibar + + + {0} Kilometer pro Stund + {0} Kilometer pro Stund + + + {0} Meter pro Sekunde + {0} Meter pro Sekunde + + + {0} Meile pro Stund + {0} Meile pro Stund + + + {0} Grad Celsius + {0} Grad Celsius + + + {0} Grad Fahrenheit + {0} Grad Fahrenheit + + + {0} Kubikkilometer + {0} Kubikkilometer + + + {0} Kubikmeile + {0} Kubikmeile + + + {0} Liter + {0} Liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} s + {0} s + + + {0} cm + {0} cm + + + {0} Fuess + {0} Fuess + + + {0} Zoll + {0} Zoll + + + {0} km + {0} km + + + {0} Liechtjahr + {0} Liechtjahr + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} Unze + {0} Unze + + + {0} Pfund + {0} Pfund + + + {0} PS + {0} PS + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0}ha + {0}ha + + + {0} ft² + {0} ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}cm + {0}cm + + + {0} Fuess + {0} Fuess + + + {0} Zoll + {0} Zoll + + + {0}km + {0}km + + + {0} Liechtjahr + {0} Liechtjahr + + + {0}m + {0}m + + + {0} mi + {0} mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} yd + {0} yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} Unze + {0} Unze + + + {0} Pfund + {0} Pfund + + + {0} PS + {0} PS + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0} inHg + {0} inHg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + + + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} und {1} + {0} und {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ja:j + näi:n + + + + diff --git a/library/Zend/Locale/Data/gsw_CH.xml b/library/Zend/Locale/Data/gsw_CH.xml new file mode 100755 index 000000000..df401b4f3 --- /dev/null +++ b/library/Zend/Locale/Data/gsw_CH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/gsw_LI.xml b/library/Zend/Locale/Data/gsw_LI.xml new file mode 100755 index 000000000..274499df0 --- /dev/null +++ b/library/Zend/Locale/Data/gsw_LI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/gu.xml b/library/Zend/Locale/Data/gu.xml new file mode 100755 index 000000000..460144c9b --- /dev/null +++ b/library/Zend/Locale/Data/gu.xml @@ -0,0 +1,5546 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + અફાર + અબખાજિયન + અચીની + એકોલી + અદાંગ્મી + અદિઘે + અવેસ્તન + આફ્રિકન્સ + અફ્રિહિલી + agq + એનૂ + અકાન + અક્કાદીયાન + અલેઉત + દક્ષિણ અલ્તાઇ + એમ્હારિક + અર્ગોનીઝ + જુની અંગ્રેજી + અંગીકા + અરબી + મોડર્ન સ્ટાન્ડર્ડ અરબી + અર્માઇક + એરોકૈનિયન + અરાપાહો + અરાવક + આસામી + અસ્તુરિયન + અવેરિક + અવધી + આયમારા + અઝરબૈજાની + અઝેરી + બષ્ખિર + બલૂચી + બાલિનીસ + બસા + બામન + બેલારુશિયન + બેજા + બેમ્બા + બલ્ગેરિયન + ભોજપુરી + બિસ્લામા + બિકોલ + બિની + સિક્સિકા + બામ્બારા + બંગાળી + તિબેટીયન + બ્રેટોન + બ્રજ + બોડો + બોસ્નિયન + બુરિયાત + બગિનીસ + બ્લિન + કતલાન + કડ્ડો + કરિબ + અત્સમ + ચેચન + સિબુઆનો + કેમોરો + ચિબ્ચા + છગાતાઇ + ચૂકીસે + મારી + ચિનૂક જાર્ગન + ચોક્તૌ + શિપેવ્યાન + શેરોકી + શેયેન્ન + સોરાની કુર્દિશ + કોર્સિકન + કોપ્ટિક + ક્રી + ક્રિમીન તુર્કી + ચેક + કાશુબિયન + ચર્ચ સ્લાવિક + ચૂવાશ + વેલ્શ + ડેનિશ + દાકોતા + દાર્ગવા + જર્મન + ઓસ્ટ્રિઅન જર્મન + સ્વિસ હાય જર્મન + દેલેવેર + સ્લેવ + ડોગ્રિબ + દિન્કા + ડોગ્રી + નિમ્ન સોર્બિયન + દુઆલા + મધ્ય ડચ + દિવેહી + ડ્યુલા + ઝોંગખા + ઈવ + એફિક + પ્રાચીન ઇજીપ્શિયન + એકાજુક + ગ્રીક + એલામાઇટ + અંગ્રેજી + ઓસ્ટ્રેલિયન અંગ્રેજી + કેનેડિયન અંગ્રેજી + બ્રિટિશ અંગ્રેજી + યુ.કે. અંગ્રેજી + અમેરિકન અંગ્રેજી + યુ. એસ. અંગ્રેજી + મિડિલ અંગ્રેજી + એસ્પેરાન્ટો + સ્પેનિશ + લેટિન અમેરિકન સ્પેનિશ + યુરોપિયન સ્પેનિશ + મેક્સિકન સ્પેનિશ + એસ્ટોનિયન + બાસ્ક + ઇવોન્ડો + પર્શિયન + ફેંગ + ફન્ટી + ફુલાહ + ફિનિશ + ફિલિપિનો + ફિજીયન + ફોરિસ્ત + ફોન + ફ્રેન્ચ + કેનેડિયન ફ્રેંચ + સ્વિસ ફ્રેંચ + મિડિલ ફ્રેંચ + જૂની ફ્રેંચ + નોર્ધર્ન ફ્રિશિયન + પૂર્વ ફ્રિશિયન + ફ્રિયુલિયાન + પશ્ચિમી ફ્રિશિયન + આઇરિશ + Ga + ગાયો + બાયા + સ્કોટ્સ ગેલિક + ગીઝ + જિલ્બરટીઝ + ગેલિશિયન + મધ્ય હાઇ જર્મન + ગુઆરાની + જૂની હાઇ જર્મન + ગોંડી + ગોરોન્તાલો + ગોથિક + ગ્રેબો + પ્રાચીન ગ્રીક + સ્વિસ જર્મન + ગુજરાતી + માંક્સ + ગ્વિચ'ઇન + હૌસા + હૈડા + હાવાઇયન + હીબ્રુ + હિન્દી + હિલિગેનોન + હિટ્ટિતે + મોંગ + હિરી મોટૂ + ક્રોએશિયન + અપ્પર સોર્બિયન + હૈતીયન + હંગેરિયન + હૂપા + આર્મેનિયન + હેરેરો + ઇંટરલિંગુઆ + ઇબાન + ઇન્ડોનેશિયન + ઇંટરલિંગ + ઇગ્બો + સિચુઆન યી + ઇનુપિયાક + ઇલોકો + ઇંગુશ + ઇડૌ + આઇસલેન્ડિક + ઇટાલિયન + ઇનુકિટૂટ + જાપાનીઝ + લોજ્બાન + જુદેઓ-પર્શિયન + જુદેઓ-અરબી + જાવાનીસ + જ્યોર્જિઅન + કારા-કલ્પક + કબાઇલ + કાચિન + જ્જુ + કમ્બા + કાવી + કબાર્ડિયન + ત્યાપ + કોરો + કોંગો + ખાસી + ખોતાનીસ + કિકુયૂ + ક્વાન્યામા + કઝાક + કલાલ્લિસુત + ખ્મેર + કિમ્બન્દુ + કન્નડા + કોરિયન + કોંકણી + કોસરિયન + ક્પેલ્લે + કનુરી + કરાચય-બલ્કાર + કરેલિયન + કુરૂખ + કશ્મીરી + કુર્દિશ + કુમીક + કુતેનાઇ + કોમી + કોર્નિશ + કિર્ગીઝ + લેટિન + લાદીનો + લાહન્ડા + લામ્બા + લક્ઝેમબર્ગિશ + લેઝધીયન + ગાંડા + લિંબૂર્ગિશ + લિંગાલા + લાઓથિયન + મોગો + લોઝી + લિથુનિયન + લ્યૂબા કટાંગા + લ્યૂબા-લુલુઆ + લુઇસેનો + લુન્ડા + લ્યુઓ + લુશાઇ + લાતવિયન + માદુરીસ + મગહી + મૈથિલી + મકાસર + મન્ડિન્ગો + મસાઇ + મોક્ષ + મંડાર + મેન્ડે + મોરીસ્યેન + મલાગસી + મિડિલ આઇરિશ + માર્શલીઝ + માઓરી + મિકમેક + મિનાંગ્કાબાઉ + મેસેડોનિયન + મલયાલમ + મોંગોલિયન + માન્ચુ + મનિપૂરી + મોહૌક + મોસ્સી + મરાઠી + મલય + માલ્ટિઝ + બહુવિધ ભાષા + ક્રિક + મિરાંડી + મારવાડી + બર્મીઝ + એર્ઝયા + નાઉરૂ + નેપોલિટાન + નોર્વેજીયન બોકમાલ + ઉતર દેબેલ + લો જર્મન + નેપાળી + નેવારી + ડોન્ગા + નિયાસ + નિયુઆન + ડચ + ફ્લેમિશ + નૉર્વેજીયન નાયનૉર્સ્ક + નૉર્વેજીયન + નોગાઇ + જૂની નોર્સ + એન'કો + દક્ષિણ દેબેલ + ઉતરી સોથો + નાવાજો + પરંપરાગત નેવારી + ન્યાન્જા + ન્યામવેઝી + ન્યાનકોલ + ન્યોરો + ન્ઝિમા + ઓક્સિટન + ઓઝિંબ્વા + ઓરોમો + ઉડિયા + ઓસ્સેટિક + ઓસેજ + ઓટોમાન તુર્કિશ + પંજાબી + પંગાસીનાન + પહલવી + પમ્પાન્ગા + પાપિયામેન્ટો + પલાઉઆન + જૂની પર્શિયન + ફોનિશિયન + પાલી + પોલીશ + પોહપિએન + જુની પ્રોવેન્સલ + પશ્તો + પુશ્ટો + પોર્ટુગીઝ + બ્રાઝિલીયન પોર્ટુગીઝ + યુરોપિયન પોર્ટુગીઝ + ક્વેચુઆ + રાજસ્થાની + રાપાનુઇ + રારોટોંગન + રોમાન્સ + રૂન્દી + રોમાનિયન + મોલડાવિયન + રોમાની + મૂલ + રશિયન + અરોમેનિયન + કિન્યારવાન્ડા + સંસ્કૃત + સોંડવે + યાકૂત + સામરિટાન અરેમિક + સાસાક + સંતાલી + સાર્દિનિયન + સિસિલિયાન + સ્કોટ્સ + સિંધી + નૉર્થન સામી + સેલ્કપ + સાંગો + જૂની આયરિશ + સર્બો-ક્રોએશિયન + શેન + સિંહલી + સિદામો + સ્લોવૅક + સ્લોવેનિયન + સામોન + દક્ષિણ સામી + લ્યુલ સામી + ઇનારી સામી + સ્કોલ્ટ સામી + શોના + સોનિન્કે + સોમાલી + સોગ્ડિએન + અલ્બેનિયન + સર્બિયન + સ્રાનન ટોન્ગો + સેરેર + સ્વાતી + સદર્ન સોથો + સંડેનીઝ + સુકુમા + સુસુ + સુમેરિયન + સ્વીડિશ + સ્વાહિલી + કોમોરિયન + પરંપરાગત સિરિએક + સિરિએક + તમિલ + તેલુગુ + ટિમ્ને + તેરેનો + તેતુમ + તાજીક + થાઈ + ટાઇગ્રિનિયા + ટાઇગ્રે + તિવ + તુર્કમેન + તોકેલાઉ + ટાગાલોગ + ક્લિન્ગોન + લિંગિત + તામાશેખ + ત્સ્વાના + ટોંગાન + ન્યાસા ટોન્ગા + ટોક પિસિન + ટર્કીશ + સોંગા + સિમ્શિયન + તતાર + તુમ્બુકા + તુવાલુ + ટ્વાઇ + તાહિતિયન + ટુવીનિયન + ઉદમુર્ત + ઉઇગુર + યુગેરિટિક + યુક્રેનિયન + ઉમ્બુન્ડૂ + અજ્ઞાત ભાષા + ઉર્દુ + ઉઝ્બેક + વાઇ + વેન્દા + વિયેતનામીસ + વોલાપુક + વોટિક + વાલૂન + વલામો + વારે + વાશો + વોલોફ + કાલ્મિક + ખોસા + યાઓ + યાપીસ + યિદ્દિશ + યોરૂબા + કેંટોનીઝ + ઝુઆગ + ઝેપોટેક + બ્લિસિમ્બોલ્સ + ઝેનાગા + પ્રમાણભૂત મોરોક્કન ટમાઝિટ + ચાઇનીઝ + સરળીકૃત ચાઇનીઝ + પારંપરિક ચાઇનીઝ + ઝુલુ + ઝૂની + કોઇ ભાષાશાસ્ત્રીય સામગ્રી નથી + ઝાઝા + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + વિશ્વ + આફ્રિકા + ઉતર અમેરિકા + દક્ષિણ અમેરિકા + ઓશિઆનિયા + પશ્ચિમ આફ્રિકા + મધ્ય અમેરિકા + પૂર્વ અમેરિકા + ઉતરીય આફ્રિકા + મધ્ય આફ્રિકા + દક્ષિણી આફ્રિકા + અમેરિકાસ + ઉતરીય અમેરિકા + કેરિબિયન + પૂર્વી એશિયા + દક્ષિણી એશિયા + દક્ષિણ- પૂર્વ એશિયા + દક્ષિણી યૂરોપ + ઓસ્ટ્રેલિયા + મેલાનેશિયા + માઇક્રોનેશિયન રીજન + પોલિનેશિયા + એશિયા + મધ્ય એશિયા + પશ્ચિમ એશિયા + યૂરોપ + પૂર્વી યૂરોપ + ઉતરીય યૂરોપ + પશ્ચિમ યૂરોપ + લેટિન અમેરિકા + એસેન્શન આઇલેન્ડ + ઍંડોરા + યુનાઇટેડ અરબ એમિરેટ્સ + અફઘાનિસ્તાન + એન્ટીગુઆ અને બરબુડા + ઍંગ્વિલા + અલ્બેનિયા + આર્મેનિયા + નેધરલેંડ્સ એંટિલેસ + અંગોલા + એન્ટાર્કટિકા + આર્જેન્ટીના + અમેરીકન સમોઆ + ઑસ્ટ્રિયા + ઑસ્ટ્રેલિયા + અરુબા + એલેંડ આઇલેન્ડ્સ + અઝરબૈજાન + બોસ્નિયા અને હર્ઝેગોવિના + બાર્બાડોસ + બાંગ્લાદેશ + બેલ્જીયમ + બુર્કિના ફાસો + બલ્ગેરિયા + બેહરીન + બુરુંડી + બેનિન + સેંટ બાર્થલેમી + બર્મુડા + બ્રુનેઇ + બોલિવિયા + કેરેબિયન નેધરલેન્ડ્ઝ + બ્રાઝિલ + બહામાસ + ભૂટાન + બૌવેત આઇલેન્ડ + બોત્સ્વાના + બેલારુસ + બેલીઝ + કેનેડા + કોકોઝ આઇલેન્ડ + કોંગો - કિંશાસા + કોંગો (ડીઆરસી) + સેંટ્રલ આફ્રિકન રીપબ્લિક + કોંગો - બ્રાઝાવિલે + કોંગો (પ્રજાસત્તાક) + સ્વિટ્ઝર્લૅન્ડ + આઇવરી કોસ્ટ + કુક આઇલેન્ડ્સ + ચિલી + કૅમરૂન + ચીન + કોલમ્બિયા + ક્લિપરટન આઇલેન્ડ + કોસ્ટા રિકા + ક્યુબા + કૅપ વર્ડે + કુરાકાઓ + ક્રિસમસ આઇલેંડ + સાયપ્રસ + ચેક રીપબ્લિક + જર્મની + ડિએગો ગારસિઆ + જીબૌટી + ડેનમાર્ક + ડોમિનિકા + ડોમિનિકન રીપબ્લિક + અલ્જીરિયા + સ્યુટા અને મેલિલા + એક્વાડોર + એસ્ટોનિયા + ઇજિપ્ત + પશ્ચિમી સહારા + એરિટ્રિયા + સ્પેન + ઇથિઓપિયા + યુરોપિયન સંઘ + ફીનલેંડ + ફીજી + ફૉકલૅંડ આઇલૅંડ્સ + ફૉકલેન્ડ આઇલેન્ડ્સ + માઇક્રોનેશિયા + ફૅરો આઇલેન્ડ્સ + ફ્રાંસ + ગેબન + યુનાઇટેડ કિંગડમ + યુ.કે. + ગ્રેનેડા + જ્યોર્જીયા + ફ્રેંચ ગયાના + ગ્વેર્નસે + ઘાના + જીબ્રાલ્ટર + ગ્રીનલેન્ડ + ગેમ્બિયા + ગિની + ગ્વાડેલોપ + ઇક્વેટોરિયલ ગિની + ગ્રીસ + દક્ષિણ જ્યોર્જીયા અને દક્ષિણ સેન્ડવિચ આઇલેન્ડ + ગ્વાટેમાલા + ગ્વામ + ગિની-બિસાઉ + ગયાના + હોંગકોંગ સાર ચીન + હોંગ કોંગ + હર્ડ આઇલૅંડ એંડ મેકડોનાલ્ડ આઇલૅંડ્સ + હોન્ડુરસ + ક્રોએશિયા + હૈતિ + હંગેરી + કૅનેરી આઇલેન્ડ્સ + ઇન્ડોનેશિયા + આયર્લેંડ + ઇઝરાઇલ + ઇસ્લે ઓફ મૅન + ભારત + બ્રિટિશ ઇન્ડિયન ઓશન ટેરિટરી + ઇરાક + ઈરાન + આઇસલેન્ડ + ઇટાલી + જર્સી + જમૈકા + જોર્ડન + જાપાન + કેન્યા + કિર્ગિઝ્સ્તાન + કંબોડિયા + કિરિબાટી + કોમોરસ + સેંટ કિટ્સ એંડ નેવિસ + ઉત્તર કોરિયા + દક્ષિણ કોરિયા + કુવૈત + કેયમેન આઇલૅંડ્સ + કઝાકિસ્તાન + લાઓસ + લેબનોન + સેંટ લુસિયા + લૈચટેંસ્ટેઇન + શ્રીલંકા + લાઇબેરિયા + લેસોથો + લિથુઆનિયા + લક્ઝમબર્ગ + લાત્વિયા + લિબિયા + મોરોક્કો + મોનાકો + મોલડોવા + મૉન્ટેંનેગ્રો + સેંટ માર્ટિન + મેડાગાસ્કર + માર્શલ આઇલેન્ડ્સ + મેસેડોનિયા + મેસેડોનિયા (FYROM) + માલી + મ્યાંમાર + મંગોલિયા + મકાઉ SAR ચીન + મકાઓ + ઉતરીય મારિયાના આઇલેન્ડ્સ + માર્ટીનીક + મૌરિટાનિયા + મોંટસેરાત + માલ્ટા + મોરિશિયસ + માલદિવ્સ + માલાવી + મેક્સિકો + મલેશિયા + મોઝામ્બિક + નામિબિયા + ન્યુ સેલેડોનિયા + નાઇજર + નોરફૉક આઇલેન્ડ + નાઇજીરીયા + નિકારાગુઆ + નેધરલેન્ડ + નૉર્વે + નેપાળ + નૌરુ + નીયુ + ન્યુઝીલેન્ડ + ઓમાન + પનામા + પેરુ + ફ્રેંચ પોલિનેશિયા + પાપુઆ ન્યૂ ગિની + ફિલિપિન્સ + પાકિસ્તાન + પોલેંડ + સેંટ પીએરે એન્ડ મિકીલોન + પીટકૈર્ન + પ્યુઅર્ટો રિકો + પેલેસ્ટિનિયન ટેરિટરી + પેલેસ્ટાઇન + પોર્ટુગલ + પલાઉ + પેરાગ્વે + કતાર + આઉટલાયિંગ ઓશનિયા + રીયુનિયન + રોમાનિયા + સર્બિયા + રશિયન ફેડરેશન + રવાંડા + સાઉદી અરેબિયા + સોલોમન આઇલેન્ડ + શેશેલ્સ + સુદાન + સ્વીડન + સિંગાપુર + સેંટ હેલેના + સ્લોવેનિયા + સ્વાલબર્ડ એંડ જેન મેયન + સ્લોવેકિયા + સીએરા લેઓન + સૅન મેરિનો + સેનેગલ + સોમાલિયા + સુરીનામ + દક્ષિણ સુદાન + સાઓ ટૉમ અને પ્રિંસિપે + એલ સેલ્વાડોર + સિંટ માર્ટેન + સીરિયા + સ્વાઝિલેન્ડ + ટ્રિસ્ટન ડે કુના + ટર્ક્સ એન્ડ કૈકોસ આઇલેન્ડ્સ + ચાડ + ફ્રેંચ સદર્ન ટેરિટરીઝ + ટોગો + થાઇલેંડ + તાજીકિસ્તાન + ટોકેલાઉ + પૂર્વ તિમોર + તુર્ક્મનિસ્તાન + ટ્યુનિશિયા + ટોંગા + તુર્કસ્તાન + ત્રિનિડાડ અને ટોબેગો + તુવાલુ + તાઇવાન + તાંઝાનિયા + યૂક્રેન + યુગાંડા + સંયુક્ત રાજ્ય આઉટલાઇંગ આયલેન્ડ્સ + સંયુકત રાજ્ય/ અમેરિકા + યુ.એસ. + ઉરુગ્વે + ઉઝ્બેકિસ્તાન + વેટિકન + સેંટ વિંસેંટ એંડ ધ ગ્રેનેડિન્સ + વેનેઝુએલા + બ્રિટિશ વર્જિન આઇલેન્ડ + યુ.એસ વર્જિન આઇલેન્ડ + વિયેતનામ + વાનુઆતુ + વૉલિસ એંડ ફ્યુચુના આઇલેન્ડ્સ + સમોઆ + કોસોવો + યેમેન + મેયોટ + દક્ષિણ આફ્રિકા + ઝામ્બિયા + ઝિમ્બાબ્વે + અજ્ઞાત પ્રદેશ + + + પિનયિન રોમનાઇઝેશન + વેડ-ગિલ્સ રોમનાઇઝેશન + + + કેલેન્ડર + પ્રતીકોની સૉર્ટિંગને અવગણો + વિપરીત એક્સેંટ સૉર્ટિંગ + અપરકેસ/લોઅરકેસ ક્રમાંકન + કેસ સંવેદી સૉર્ટિંગ + કાના સૉર્ટિંગ + સૉર્ટ ક્રમ + સામાન્ય સૉર્ટિંગ + આંકડાકીય સૉર્ટિંગ + સૉર્ટિંગ શક્તિ + ચલણ + આંકડાઓ + સમય ઝોન + લોકેલ વેરિએન્ટ + પ્રતીકો તરીકે સૉર્ટ કરો + ખાનગી-ઉપયોગ + + + અરેબિક-ભારતીય અંકો + વિસ્તૃત અરેબિક-ઇન્ડિક અંકો + અર્મેનિયન સંખ્યાઓ + અર્મેનિયન નાના અક્ષરની સંખ્યાઓ + બંગાળી અંકો + પરંપરાગત ચાઇનિઝ સોર્ટ ક્રમબદ્ધ + બુદ્ધિસ્ટ કેલેન્ડર + ચાઇનિઝ કેલેન્ડર + કોપ્ટિક કેલેન્ડર + દેવનાગરી + શબ્દકોશ અનુક્મ + ડિફોલ્ટ યુનિકોડ અનુક્મ + ઇથિયોપીક સંખ્યાઓ + ઇથિઓપિક કેલેન્ડર + ઇથિઓપિક એમેટ એલેમ કેલેન્ડર + નાણાકીય સંખ્યાઓ + પૂર્ણ પહોળાઈ અંકો + સરળીકૃત ચાઇનીઝ સૉર્ટ ક્રમ - GB2312 + જ્યોર્જિઅન સંખ્યાઓ + ગ્રેગોરિયન કેલેન્ડર + ગ્રિક સંખ્યાઓ + ગ્રિક નાના અક્ષરની સંખ્યાઓ + ગુજરાતી અંકો + ગુરમુખી અંકો + ચાઇનીઝ દશાંશ સંખ્યા + સરળીકૃત ચાઇનીઝ સંખ્યાઓ + સરળીકૃત ચાઇનીઝ નાણાકિય સંખ્યાઓ + પરંપરાગત ચાઇનીઝ સંખ્યાઓ + પરંપરાગત ચાઇનીઝ નાણાંકીય સંખ્યાઓ + હિબ્રુ સંખ્યાઓ + હિબ્રુ કેલેન્ડર + બધા સૉર્ટ કરો + ભારતીય રાષ્ટ્રીય કેલેન્ડર + ઇસ્લામિક કેલેન્ડર + ઇસ્લામિક-નાગરિક કેલેન્ડર + જાપાનિઝ કેલેન્ડર + જાપાનીઝ સંખ્યાઓ + જાપાનીઝ નાણાકિય સંખ્યાઓ + ખેમેર અંકો + કન્નડા અંકો + લાઓ અંકો + પશ્ચિમી અંકો + પ્રથમ લોઅરકેસ સૉર્ટ કરો + મલયાલમ અંકો + મોંગોલિયન અંકો + મ્યાન્માર અંકો + મૂળ અંકો + ઉચ્ચારોને સામાન્ય રીતે સૉર્ટ કરો + સામાન્ય કેસના ક્રમમાં સૉર્ટ કરો + કેસ સંવેદીને સૉર્ટ કરો + કાનાને અલગ સૉર્ટ કરો + સામાન્યકૃત વિના સૉર્ટ કરો + અંકોને અલગથી સૉર્ટ કરોવ્યક્તિગત રીતે ક્રમમાં ગોઠવો અંકો + પ્રતીકોને સૉર્ટ કરો + ઓરિયા અંકો + પર્શિયન કેલેન્ડર + ફોનબુક અનુક્મ + ધ્વન્યાત્મક સૉર્ટ ક્રમ + પિનયિન અનુક્મ + ફક્ત આધાર અક્ષરોને સૉર્ટ કરો + ઉચ્ચારો/કેસ/પહોળાઈ/કાના સૉર્ટ કરો + પૂનર્સ્વરૂપિત અનુક્મ + મિંગુઓ કેલેન્ડર + રોમન સંખ્યાઓ + રોમન નાના અક્ષરની સંખ્યા + સામાન્ય-ઉદ્દેશ શોધ + હંગુલ પ્રારંભિક વ્યંજન દ્વારા શોધો + ઉચ્ચારો સૉર્ટ કરો + પ્રતીકોને અવગણીને સૉર્ટ કરો + માનક સૉર્ટ ક્રમ + સ્ટ્રોક અનુક્મ + તમિલ સંખ્યાઓ + તમિલ અંકો + તેલુગુ અંકો + ઉચ્ચારો/કેસ/પહોળાઈ સૉર્ટ કરો + થાઇ અંકો + તિબેટિયન અંકો + પરંપરાગત અનુક્મ + પરંપરાગત અંકો + રેડિકલ-સ્ટ્રોક + પ્રથમ અપરકેસ સૉર્ટ કરો + વાઇ અંકો + ઉચ્ચારોને વિપરીત સૉર્ટ કરો + કેસ સંવેદી સૉર્ટ કરો + કાનાને અલગ રીતે સૉર્ટ કરો + યુનિકોડ સામાન્યકૃતને સૉર્ટ કરો + અંકોને સંખ્યાત્મક રીતે સૉર્ટ કરો + + + BGN + સંખ્યા + ધ્વની + UNGEGN + સ્વરાઘાતો + પૂર્ણપહોળાઇ + અર્ધપહોળાઈ + જેમો + પીનયીન + પ્રકાશન + + + મેટ્રિક + યુકે + અમેરિકા + + + {0} + {0} + {0} + + + + [\u0ABC ૐ \u0A82 \u0A81 ઃ અ આ ઇ ઈ ઉ ઊ ઋ ૠ ઍ એ ઐ ઑ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ ઽ ા િ ી \u0AC1 \u0AC2 \u0AC3 \u0AC4 \u0AC5 \u0AC7 \u0AC8 ૉ ો ૌ \u0ACD] + [\u200C\u200D ૰] + [અ {અ\u0A82} {અઃ} આ ઇ ઈ ઉ ઊ ઋ ઍ એ ઐ ઑ ઓ ઔ ક {ક\u0ACDષ} ખ ગ ઘ ઙ ચ છ જ {જ\u0ACDઞ} ઝ ઞ ટ ઠ ડ ઢ ણ ત {ત\u0ACDર} થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + … {0} + {0} … {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d MMMM, G y + + + + + d MMMM, G y + + + + + d MMM, G y + + + + + d-MM- GGGGG y + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + G y + MMM G y + d, MMM G y + E, d MMM, G y + h a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + G y + G y + M/G y + d/M/G y + E, d/M/G y + MM-y G + MMM G y + d MMM, G y + E, d MMM, G y + MMMM G y + QQQ G y + QQQQ G y + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M-E, d/M + E,d/M-E,d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM-E, d MMM + E, d MMM – E, d MMM + + + G y–y + + + M/y – M/y + M/y – M/y + + + d/M/y-d/M/y + d/M/y-d/M/y + d/M/y-d/M/y + + + E,d/M/y- E,d/M/y + E,d/M/y- E,d/M/y + E,d/M/y-E,d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d-d MMM,y + d MMM-d MMM y + d MMM,y-d MMM,y + + + E, d MMM-E, d MMM G y + E,d MMM-E,d MMM G y + E, d MMM y-E, d MMM G y + + + MMMM–MMMM G y + MMMM y – MMMM y + + + + + + + + + જાન્યુ + ફેબ્રુ + માર્ચ + એપ્રિલ + મે + જૂન + જુલાઈ + ઑગસ્ટ + સપ્ટે + ઑક્ટો + નવે + ડિસે + + + જા + ફે + મા + + મે + જૂ + જુ + + + + + ડિ + + + જાન્યુઆરી + ફેબ્રુઆરી + માર્ચ + એપ્રિલ + મે + જૂન + જુલાઈ + ઑગસ્ટ + સપ્ટેમ્બર + ઑક્ટોબર + નવેમ્બર + ડિસેમ્બર + + + + + જાન્યુ + ફેબ્રુ + માર્ચ + એપ્રિલ + મે + જૂન + જુલાઈ + ઑગ + સપ્ટે + ઑક્ટો + નવે + ડિસે + + + જા + ફે + મા + + મે + જૂ + જુ + + + + + ડિ + + + જાન્યુઆરી + ફેબ્રુઆરી + માર્ચ + એપ્રિલ + મે + જૂન + જુલાઈ + ઑગસ્ટ + સપ્ટેમ્બર + ઑક્ટોબર + નવેમ્બર + ડિસેમ્બર + + + + + + + રવિ + સોમ + મંગળ + બુધ + ગુરુ + શુક્ર + શનિ + + + + સો + મં + બુ + ગુ + શુ + + + + + સો + મં + બુ + ગુ + શુ + + + + રવિવાર + સોમવાર + મંગળવાર + બુધવાર + ગુરુવાર + શુક્રવાર + શનિવાર + + + + + રવિ + સોમ + મંગળ + બુધ + ગુરુ + શુક્ર + શનિ + + + + સો + મં + બુ + ગુ + શુ + + + + + સો + મં + બુ + ગુ + શુ + + + + રવિવાર + સોમવાર + મંગળવાર + બુધવાર + ગુરુવાર + શુક્રવાર + શનિવાર + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + પહેલો ત્રિમાસ + બીજો ત્રિમાસ + ત્રીજો ત્રિમાસ + ચોથો ત્રિમાસ + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + પહેલો ત્રિમાસ + બીજો ત્રિમાસ + ત્રીજો ત્રિમાસ + ચોથો ત્રિમાસ + + + + + + + AM + PM + + + AM + PM + + + + + + ઈસવીસન પૂર્વે + ઇસવીસન + + + ઈસુના જન્મ પહેલા + સામાન્ય યુગ પહેલા + ઇસવીસન + સામાન્ય યુગ + + + ઇ સ પુ + ઇસ + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + d-MM-yy + + + + + + + hh:mm:ss a zzzz + + + + + hh:mm:ss a z + + + + + hh:mm:ss a + + + + + hh:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + h:mm a E + HH:mm E + h:mm:ss a E + HH:mm:ss E + G y + MMM, G y + d MMM, G y + E, d MMM, G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + MMM y + d MMM, y + E, d MMM, y + MMMM y + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E,d/M – E,d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + યુગ + + + વર્ષ + ગયા વર્ષે + આ વર્ષે + આવતા વર્ષે + + {0} વર્ષમાં + {0} વર્ષમાં + + + {0} વર્ષ પહેલા + {0} વર્ષ પહેલા + + + + મહિનો + ગયા મહિને + આ મહિને + આવતા મહિને + + {0} મહિનામાં + {0} મહિનામાં + + + {0} મહિના પહેલા + {0} મહિના પહેલા + + + + અઠવાડિયું + ગયા અઠવાડિયે + આ અઠવાડિયે + આવતા અઠવાડિયે + + {0} અઠવાડિયામાં + {0} અઠવાડિયામાં + + + {0} અઠવાડિયા પહેલા + {0} અઠવાડિયા પહેલા + + + + દિવસ + ગયા પરમદિવસે + ગઈકાલે + આજે + આવતીકાલે + પરમદિવસે + + {0} દિવસમાં + {0} દિવસમાં + + + {0} દિવસ પહેલા + {0} દિવસ પહેલા + + + + અઠવાડિયાનો દિવસ + + + ગયા રવિવારે + આ રવિવારે + આવતા રવિવારે + + + ગયા સોમવારે + આ સોમવારે + આવતા સોમવારે + + + ગયા મંગળવારે + આ મંગળવારે + આવતા મંગળવારે + + + ગયા બુધવારે + આ બુધવારે + આવતા બુધવારે + + + ગયા ગુરુવારે + આ ગુરુવારે + આવતા ગુરુવારે + + + ગયા શુક્રવારે + આ શુક્રવારે + આવતા શુક્રવારે + + + ગયા શનિવારે + આ શનિવારે + આવતા શનિવારે + + + AM/PM + + + કલાક + + {0} કલાકમાં + {0} કલાકમાં + + + {0} કલાક પહેલા + {0} કલાક પહેલા + + + + મિનિટ + + {0} મિનિટમાં + {0} મિનિટમાં + + + {0} મિનિટ પહેલા + {0} મિનિટ પહેલા + + + + સેકન્ડ + હમણાં + + {0} સેકંડમાં + {0} સેકંડમાં + + + {0} સેકંડ પહેલા + {0} સેકંડ પહેલા + + + + સમય ઝોન + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} સમય + {0} (+1) + {0} (+0) + {1} ({0}) + + અજ્ઞાત શહેર + + + ઍંડોરા + + + દુબઈ + + + કાબુલ + + + ઍન્ટિગુઆ + + + ઍંગ્વિલા + + + તિરાને + + + યેરેવાન + + + લ્યુએન્ડા + + + રોથેરા + + + પાલ્મર + + + સ્યોવા + + + મોસન + + + ડૅવિસ + + + વોસ્ટૉક + + + કૅસી + + + દુમોન્ત દી'ઉર્વિલ + + + મૅકમર્ડો + + + રિઓ ગેલેગોસ + + + મેન્ડોઝા + + + સેન જુએન + + + ઉશાયા + + + લા રિઓહા + + + સેન લુઇસ + + + કાતામાર્કા + + + સાલ્ટા + + + હુહુઇ + + + તુકુમાન + + + કોર્ડોબા + + + બ્યુનસ એયર્સ + + + પેગો પેગો + + + વિયેના + + + પર્થ + + + ઉક્લા + + + ડાર્વિન + + + એડિલેઇડ + + + બ્રોકન હિલ + + + ક્યુરી + + + મેલબોર્ન + + + હોબાર્ટ + + + લિન્ડેમેન + + + સિડ્ની + + + બ્રિસબેન + + + મેક્વેરી + + + લોર્ડ હોવ + + + અરુબા + + + મેરિહેમ + + + બાકુ + + + સારાજેવો + + + બારબાડોસ + + + ઢાકા + + + બ્રસેલ્સ + + + ઔઆગાદૌગૌ + + + સોફિયા + + + બેહરીન + + + બુજમ્બુરા + + + પોર્ટો-નોવો + + + સેંટ બાર્થેલેમી + + + બર્મુડા + + + બ્રુનેઇ + + + લા પેઝ + + + ક્રાલેન્ડિક + + + ઇરુનેપ + + + રિયો બ્રાંકો + + + પોર્ટો વેલ્હો + + + બોઆ વિસ્ટા + + + મનૌસ + + + ક્યુએબા + + + સેન્તારેમ + + + કામ્પો ગ્રાંડ + + + બેલેમ + + + અરાગુઇના + + + સાઓ પાઉલો + + + બાહિયા + + + ફોર્ટાલેઝા + + + મેસિઓ + + + રેસીફ + + + નોરોન્હા + + + નાસાઉ + + + થીમ્ફુ + + + ગૅબોરોન + + + મિંસ્ક + + + બેલીઝ + + + ડૌસન + + + વ્હાઇટહોર્સ + + + ઇનુવિક + + + વેન્કુવર + + + ડૌસન ક્રિક + + + ક્રેસ્ટન + + + યેલોનાઇફ + + + એડમેન્ટન + + + સ્વિફ્ટ કરંટ + + + કેમ્બ્રિજ બે + + + રેજીના + + + વિન્નિપેગ + + + રેઝોલૂટ + + + બરસાતી નદી + + + રેંકિન ઇન્લેટ + + + એટિકોકેન + + + થંડર બે + + + નિપિગોન + + + ટોરન્ટો + + + ઇકાલુઇત + + + પેંગનિરતુંગ + + + મોન્કટન + + + હેલિફેક્સ + + + ગૂસ બે + + + ગ્લેસ બે + + + બ્લાંક-સેબલોન + + + સેન્ટ જ્હોન્સ + + + કૉકોસ + + + કિંશાસા + + + લુબુમ્બાશી + + + બાંગુઈ + + + બ્રાઝાવિલે + + + ઝુરીક + + + આબિદ્જાન + + + રેરોટોંગા + + + ઇસ્ટર + + + સાંટિયાગો + + + ડૌઆલા + + + કાશ્ગર + + + ઉરુમ્કી + + + ચોંગકિંગ + + + શેંઘાઇ + + + હારબિન + + + બોગોટા + + + કોસ્ટા રિકા + + + હવાના + + + કૅપ વેર્ડે + + + કુરાકાઓ + + + ક્રિસમસ + + + નિકોસિયા + + + પ્રાગ + + + બિઝેન્ગન + + + બર્લિન + + + જીબુટી + + + કૉપેનહૅજેન + + + ડોમિનિકા + + + સેંટો ડોમિંગો + + + અલ્જીયર્સ + + + ગાલાપેગોસ + + + ગુયાક્વિલ + + + તલ્લીન + + + કૈરો + + + એલ ઐઉન + + + અસ્મારા + + + કૅનેરી + + + ક્વેટા + + + મૅડ્રીડ + + + એડિસ અબાબા + + + હેલસિંકી + + + ફીજી + + + સ્ટેનલી + + + ચુક + + + પોન્પે + + + કોસરે + + + ફેરો + + + પેરિસ + + + લિબ્રેવિલે + + + + બ્રિટિશ ગ્રીષ્મ સમય + + લંડન + + + ગ્રેનેડા + + + બિલિસિ + + + કાયેને + + + ગર્નઝી + + + ઍકરા + + + જીબ્રાલ્ટર + + + થુલે + + + નૂક + + + સ્કોર્સબાયસન્દ + + + ડેનમાર્કશૉન + + + બાંજુલ + + + કોનૅક્રી + + + ગ્વાડેલોપ + + + મલાબો + + + એથેંસ + + + સાઉથ જ્યોર્જિયા + + + ગ્વાટેમાલા + + + ગ્વામ + + + બિસાઉ + + + ગયાના + + + હોંગકોંગ + + + તેગુસિગલ્પા + + + ઝેગરેબ + + + પોર્ટ-ઓ-પ્રિન્સ + + + બુડાપેસ્ટ + + + જાકાર્તા + + + પોન્ટિયનેક + + + માકસ્સર + + + જયાપુરા + + + + આઇરિશ ગ્રીષ્મ સમય + + ડબલિન + + + જેરુસલેમ + + + આય્લ ઓફ મૅન + + + કોલકાતા + + + ચાગોસ + + + બગદાદ + + + તેહરાન + + + રૅકયાવિક + + + રોમ + + + જર્સી + + + જમૈકા + + + અમ્માન + + + ટોક્યો + + + નૈરોબી + + + બિશકેક + + + ફ્નોમ પેન્હ + + + એંડર્બરી + + + કિરિતિમાતી + + + તારાવા + + + કોમોરો + + + સેન્ટ કીટ્સ + + + પ્યોંગયાંગ + + + સીઓલ + + + કુવૈત + + + કેમેન + + + અકટાઉ + + + ઓરલ + + + ઍક્ટોબ + + + કિઝિલોર્ડા + + + અલ્માટી + + + વિયેનટિયેન + + + બૈરુત + + + સેંટ લુસિયા + + + વૅદુઝ + + + કોલંબો + + + મોંરોવિયા + + + મસેરુ + + + વિલ્નિઅસ + + + લક્ઝમબર્ગ + + + રિગા + + + ટ્રીપોલી + + + કાસાબ્લાંકા + + + મોનાકો + + + ચિસીનાઉ + + + પોડગોરિકા + + + મેરીગોટ + + + અંતાનાનારિવો + + + ક્વાજાલીન + + + માજુરો + + + સ્કોપયે + + + બમેકો + + + રંગૂન + + + હોવ્ડ + + + ઉલાંબાતર + + + ચોઇબાલ્સન + + + મકાઉ + + + સાઇપન + + + માર્ટીનીક + + + નૌકચોટ + + + મોંટસેરાત + + + માલ્ટા + + + મોરિશિયસ + + + માલદિવ્સ + + + બ્લેંટીર + + + તિજુઆના + + + સાંતા ઇસાબેલ + + + એરમોસિયો + + + મઝત્લાન + + + ચિહુઆહુઆ + + + બહિયા બાંદ્રાસ + + + ઓજિનાગા + + + મોન્તોરે + + + મેક્સિકો સિટી + + + માતામોરોસ + + + મેરિદા + + + કાન્કુન + + + કુઆલાલમ્પુર + + + કુચિંગ + + + માપુટો + + + વિંડહૉક + + + નૌમીઆ + + + યામેય + + + નૉરફૉક + + + લાગોસ + + + માનાગુઆ + + + ઍમ્સ્ટરડૅમ + + + ઑસ્લો + + + કથમન્ડુ + + + નૌરુ + + + નીયુ + + + ચથમ + + + ઑકલેન્ડ + + + મસ્કત + + + પનામા + + + લિમા + + + તાહીતી + + + માર્કીસાસ + + + ગેમ્બિયર + + + પોર્ટ મોર્સ્બી + + + મનિલા + + + કરાચી + + + વોરસૉ + + + માઇક્યુલોન + + + પીટકૈર્ન + + + પ્યુઅર્ટો રિકો + + + ગાઝા + + + હેબ્રોન + + + એઝોરેઝ + + + મડિરા + + + લિસ્બન + + + પલાઉ + + + એસન્શિયન + + + કતાર + + + રિયુનિયન + + + બુકરેસ્ટ + + + બેલગ્રેડ + + + કલિનિન્ગ્રેડ + + + મોસ્કો + + + વોલ્ગોગ્રેડ + + + સમારા + + + યેકાતેરિનબર્ગ + + + ઓમ્સ્ક + + + નોવોસીર્બિર્સ્ક + + + નોવોકુઝ્નેત્સ્ક + + + ક્રિસ્નોયાર્સ્ક + + + ઇર્કુત્સ્ક + + + યકુત્સક + + + વ્લેડિવોસ્ટોક + + + ખંડિગા + + + સખાલિન + + + ઉસ્ત-નેરા + + + મેગાડન + + + કામચટ્કા + + + અનદિર + + + કિગાલી + + + રિયાધ + + + ગૌડલકૅનલ + + + માહે + + + ખાર્ટૂમ + + + સ્ટોકહૉમ + + + સિંગાપુર + + + સેન્ટ હેલેના + + + લુબ્લિયાના + + + લોંગઇયરબિયેન + + + બ્રેટિસલાવા + + + ફ્રીટાઉન + + + સૅન મેરિનો + + + ડકાર + + + મોગાડીશુ + + + પેરામેરિબો + + + જુબા + + + સાઓ ટૉમ + + + એલ સેલ્વાડોર + + + લોઅર પ્રિન્સનું ક્વાર્ટર + + + દમાસ્કસ + + + અમ્બબાન + + + ગ્રાન્ડ ટર્ક + + + અન્જમેન + + + કેરગ્વેલિન + + + લોમ + + + બેંગકોક + + + દુશામ્બે + + + ફાકાઓફો + + + દિલિ + + + અશગાબટ + + + ટ્યુનિસ + + + ટૉંગાટાપુ + + + ઇસ્તાંબુલ + + + પોર્ટ ઑફ સ્પેન + + + ફુનાફુટી + + + તાઇપેઇ + + + દાર એસ સલામ + + + ઉઝ્ગોરોદ + + + કૈવ + + + સિમ્ફેરોપોલ + + + જેપોરોઝિયે + + + કમ્પાલા + + + મીડવે + + + જોહ્નસ્ટોન + + + વેક + + + અદક + + + નોમ + + + હોનોલુલુ + + + એન્કોરેજ + + + યકુતત + + + સિટ્કા + + + જુનો + + + મેટ્લાકાટ્લા + + + લોસ એંજેલેસ + + + બોઇઝ + + + ફોનિક્સ + + + દેન્વર + + + બિયુલાહ,ઉત્તર ડેકોટા + + + નવું સેલમ,ઉત્તર ડેકોટા + + + સેન્ટર,ઉત્તર ડેકોટા + + + શિકાગો + + + મેનોમિની + + + વેસેંન, ઇન્ડિયાના + + + પિટર્સબર્ગ,ઇન્ડિયાના + + + ટેલ સિટી,ઇન્ડિયાના + + + નોક્સ,ઇન્ડિયાના + + + વિનામેક,ઇન્ડિયાના + + + મેરેંગો, ઇન્ડિયાના + + + ઇન્ડિયાનપોલિસ + + + લૂઇવિલ + + + વેવૈ, ઇન્ડિયાના + + + મોંટીસેલો,કેન્ટુકી + + + ડેટ્રોઇટ + + + ન્યૂયોર્ક + + + મૉંટેવિડિઓ + + + સમરકન્ડ + + + તાશકેન્ટ + + + વેટિકન + + + સેન્ટ વિંસેંટ + + + કૅરાકસ + + + ટોર્ટોલા + + + સેંટ થોમસ + + + હો ચી મીન સિટી + + + એફેટ + + + વાલિસ + + + એપિયા + + + એદેન + + + મેયોટ + + + જોહાન્સબર્ગ + + + લુસાકા + + + હરારે + + + + એકર સમય + એકર પ્રમાણભૂત સમય + એકર ગ્રીષ્મ સમય + + + + + અફઘાનિસ્તાન સમય + + + + + મધ્ય આફ્રિકા સમય + + + + + પૂર્વ આફ્રિકા સમય + + + + + દક્ષિણ આફ્રિકા માનક સમય + + + + + પશ્ચિમ આફ્રિકા સમય + પશ્ચિમ આફ્રિકા માનક સમય + પશ્ચિમ આફ્રિકા ગ્રીષ્મ સમય + + + + + અલાસ્કા સમય + અલાસ્કા પ્રમાણભૂત સમય + અલાસ્કા દિવસ સમય + + + + + અલ્માટી સમય + અલ્માટી પ્રમાણભૂત સમય + અલ્માટી ગ્રીષ્મ સમય + + + + + એમેઝોન સમય + એમેઝોન માનક સમય + એમેઝોન ગ્રીષ્મ સમય + + + + + ઉત્તર અમેરિકન મધ્ય સમય + ઉત્તર અમેરિકન મધ્ય પ્રમાણભૂત સમય + ઉત્તર અમેરિકન મધ્ય દિવસ સમય + + + + + ઉત્તર અમેરિકન પૂર્વી સમય + ઉત્તર અમેરિકન પૂર્વી પ્રમાણભૂત સમય + ઉત્તર અમેરિકન પૂર્વી દિવસ સમય + + + + + ઉત્તર અમેરિકન માઉન્ટન સમય + ઉત્તર અમેરિકન માઉન્ટન પ્રમાણભૂત સમય + ઉત્તર અમેરિકન માઉન્ટન દિવસ સમય + + + + + ઉત્તર અમેરિકન પેસિફિક સમય + ઉત્તર અમેરિકન પેસિફિક પ્રમાણભૂત સમય + ઉત્તર અમેરિકન પેસિફિક દિવસ સમય + + + + + અનાદિર સમય + અનાડિર પ્રમાણભૂત સમય + અનાડિર ગ્રીષ્મ સમય + + + + + અક્તાઉ સમય + અક્તાઉ પ્રમાણભૂત સમય + અક્તાઉ ગ્રીષ્મ સમય + + + + + ઍક્ટોબ સમય + ઍક્ટોબ પ્રમાણભૂત સમય + ઍક્ટોબ ગ્રીષ્મ સમય + + + + + અરેબિયન સમય + અરેબિયન માનક સમય + અરેબિયન દિવસ સમય + + + + + અર્જેન્ટીના સમય + અર્જેન્ટીના માનક સમય + આર્જેન્ટીના ગ્રીષ્મ સમય + + + + + પશ્ચિમી અર્જેન્ટીના સમય + પશ્ચિમી અર્જેન્ટીના માનક સમય + પશ્ચિમી અર્જેન્ટીના ગ્રીષ્મ સમય + + + + + આર્મેનિયા સમય + આર્મેનિયા માનક સમય + આર્મેનિયા ગ્રીષ્મ સમય + + + + + અટલાન્ટિક સમય + અટલાન્ટિક પ્રમાણભૂત સમય + અટલાન્ટિક દિવસ સમય + + + + + મધ્ય ઓસ્ટ્રેલિયન સમય + ઓસ્ટ્રેલિયન મધ્ય પ્રમાણભૂત સમય + ઓસ્ટ્રેલિયન મધ્ય દિવસ સમય + + + + + ઓસ્ટ્રેલિયન મધ્ય પશ્ચિમી સમય + ઓસ્ટ્રેલિયન મધ્ય પશ્ચિમી પ્રમાણભૂત સમય + ઓસ્ટ્રેલિયન મધ્ય પશ્ચિમી દિવસ સમય + + + + + પૂર્વી ઓસ્ટ્રેલિયા સમય + ઓસ્ટ્રેલિયન પૂર્વી પ્રમાણભૂત સમય + ઓસ્ટ્રેલિયન પૂર્વી દિવસ સમય + + + + + પશ્ચિમી ઓસ્ટ્રેલિયા સમય + ઓસ્ટ્રેલિયન પશ્ચિમી પ્રમાણભૂત સમય + ઓસ્ટ્રેલિયન પશ્ચિમી દિવસ સમય + + + + + અઝરબૈજાન સમય + અઝરબૈજાન માનક સમય + અઝરબૈજાન ગ્રીષ્મ સમય + + + + + એઝોર્સ સમય + એઝોર્સ માનક સમય + એઝોર્સ ગ્રીષ્મ સમય + + + + + બાંગ્લાદેશ સમય + બાંગ્લાદેશ માનક સમય + બાંગ્લાદેશ ગ્રીષ્મ સમય + + + + + ભૂટાન સમય + + + + + બોલિવિયા સમય + + + + + બ્રાઝિલિયા સમય + બ્રાઝિલિયા માનક સમય + બ્રાઝિલિયા ગ્રીષ્મ સમય + + + + + બ્રૂનેઈ દારુસલામ સમય + + + + + કૅપ વર્ડે સમય + કૅપ વર્ડે માનક સમય + કૅપ વર્ડે ગ્રીષ્મ સમય + + + + + કેમોરો માનક સમય + + + + + ચેતહામ સમય + ચેતહામ માનક સમય + ચેતહામ દિવસ સમય + + + + + ચિલી સમય + ચિલી માનક સમય + ચિલી ગ્રીષ્મ સમય + + + + + ચીન સમય + ચીન માનક સમય + ચીન દિવસ સમય + + + + + ચોઇબાલ્સન સમય + ચોઇબાલ્સન માનક સમય + ચોઇબાલ્સન ગ્રીષ્મ સમય + + + + + ક્રિસમસ આઇલેન્ડ સમય + + + + + કોકોઝ આઇલેન્ડ સમય + + + + + કોલંબિયા સમય + કોલંબિયા માનક સમય + કોલંબિયા ગ્રીષ્મ સમય + + + + + કુક આઇલેન્ડ્સ સમય + કુક આઇલેન્ડ્સ માનક સમય + કુક આઇલેન્ડ્સ અર્ધ ગ્રીષ્મ સમય + + + + + ક્યૂબા સમય + ક્યૂબા માનક સમય + ક્યૂબા દિવસ સમય + + + + + ડેવિસ સમય + + + + + ડ્યુમોન્ટ-ડી'ઉર્વિલ સમય + + + + + પૂર્વ તિમોર સમય + + + + + ઇસ્ટર આઇલેન્ડ સમય + ઇસ્ટર આઇલેન્ડ માનક સમય + ઇસ્ટર આઇલેન્ડ ગ્રીષ્મ સમય + + + + + એક્વાડોર સમય + + + + + મધ્ય યુરોપિયન સમય + મધ્ય યુરોપિયન માનક સમય + મધ્ય યુરોપિયન ગ્રીષ્મ સમય + + + + + પૂર્વી યુરોપિયન સમય + પૂર્વી યુરોપિયન માનક સમય + પૂર્વી યુરોપીયન ગ્રીષ્મ સમય + + + + + પશ્ચિમી યુરોપિયન સમય + પશ્ચિમી યુરોપિયન માનક સમય + પશ્ચિમી યુરોપિયન ગ્રીષ્મ સમય + + + + + ફોકલૅંડ આઇલેન્ડ્સ સમય + ફૉકલૅંડ આઇલેન્ડ્સ માનક સમય + ફોકલૅંડ આઇલેન્ડ્સ ગ્રીષ્મ સમય + + + + + ફિજી સમય + ફિજી માનક સમય + ફિજી ગ્રીષ્મ સમય + + + + + ફ્રેન્ચ ગયાના સમય + + + + + ફ્રેન્ચ સાઉધર્ન અને એન્ટાર્કટિક સમય + + + + + ગાલાપાગોસ સમય + + + + + ગેમ્બિયર સમય + + + + + જ્યોર્જિયા સમય + જ્યોર્જિયા માનક સમય + જ્યોર્જિયા ગ્રીષ્મ સમય + + + + + ગિલબર્ટ આઇલેન્ડ સમય + + + + + ગ્રીનવિચ મધ્યમ સમય + + + + + પૂર્વ ગ્રીનલેન્ડ સમય + પૂર્વ ગ્રીનલેન્ડ માનક સમય + પૂર્વ ગ્રીનલેન્ડ ગ્રીષ્મ સમય + + + + + પશ્ચિમ ગ્રીનલેન્ડ સમય + પશ્ચિમ ગ્રીનલેન્ડ માનક સમય + પશ્ચિમ ગ્રીનલેન્ડ ગ્રીષ્મ સમય + + + + + ગ્વામ પ્રમાણભૂત સમય + + + + + ગલ્ફ માનક સમય + + + + + ગયાના સમય + + + + + હવાઈ-એલ્યુશિઅન સમય + હવાઇ-એલ્યુશિઅન માનક સમય + હવાઇ-એલ્યુશિઅન દિવસ સમય + + + + + હોંગ કોંગ સમય + હોંગ કોંગ માનક સમય + હોંગ કોંગ ગ્રીષ્મ સમય + + + + + હોવ્ડ સમય + હોવ્ડ માનક સમય + હોવ્ડ ગ્રીષ્મ સમય + + + + + ભારતીય માનક સમય + + + IST + + + + + ભારતીય મહાસાગર સમય + + + + + ઇન્ડોચાઇના સમય + + + + + મધ્ય ઇન્ડોનેશિયા સમય + + + + + પૂર્વી ઇન્ડોનેશિયા સમય + + + + + પશ્ચિમી ઇન્ડોનેશિયા સમય + + + + + ઈરાન સમય + ઈરાન માનક સમય + ઈરાન દિવસ સમય + + + + + ઇર્કુત્સ્ક સમય + ઇર્કુત્સ્ક માનક સમય + ઇર્કુત્સ્ક ગ્રીષ્મ સમય + + + + + ઇઝરાઇલ સમય + ઇઝરાઇલ માનક સમય + ઇઝરાઇલ દિવસ સમય + + + + + જાપાન સમય + જાપાન માનક સમય + જાપાન દિવસ સમય + + + + + પેટ્રોપેવલોવ્સ્ક-કામચતસ્કી સમય + પેટ્રોપેવલોવ્સ્ક-કામચતસ્કી પ્રમાણભૂત સમય + પેટ્રોપેવલોવ્સ્ક-કામચતસ્કી ગ્રીષ્મ સમય + + + + + પૂર્વ કઝાકિસ્તાન સમય + + + + + પશ્ચિમ કઝાકિસ્તાન સમય + + + + + કોરિયન સમય + કોરિયન માનક સમય + કોરિયન દિવસ સમય + + + + + કોસરે સમય + + + + + ક્રેસ્નોયાર્સ્કી સમય + ક્રસ્નોયાર્સ્ક માનક સમય + ક્રેસનોયાર્સ્ક ગ્રીષ્મ સમય + + + + + કિર્ગિઝતાન સમય + + + + + લંકા સમય + + + + + લાઇન આઇલેન્ડ્સ સમય + + + + + લોર્ડ હોવ સમય + લોર્ડ હોવ પ્રમાણભૂત સમય + લોર્ડ હોવ દિવસ સમય + + + + + મકાઉ સમય + મકાઉ પ્રમાણભૂત સમય + મકાઉ ગ્રીષ્મ સમય + + + + + મેક્વાયર આઇલેન્ડ સમય + + + + + મેગાડન સમય + માગાદાન માનક સમય + મગદન ગ્રીષ્મ સમય + + + + + મલેશિયા સમય + + + + + માલદીવ સમય + + + + + માર્ક્યૂસસ સમય + + + + + માર્શલ આઇલેન્ડ્સ સમય + + + + + મોરિશિયસ સમય + મોરિશિયસ માનક સમય + મોરિશિયસ ગ્રીષ્મ સમય + + + + + મોસન સમય + + + + + ઉલાન બાટોર સમય + ઉલાન બાટોર માનક સમય + ઉલાન બટોર ગ્રીષ્મ સમય + + + + + મોસ્કો સમય + મોસ્કો પ્રમાણભૂત સમય + મોસ્કો ગ્રીષ્મ સમય + + + + + મ્યાનમાર સમય + + + + + નૌરુ સમય + + + + + નેપાળ સમય + + + + + ન્યુ સેલેડોનિયા સમય + ન્યુ સેલેડોનિયા માનક સમય + ન્યુ સેલેડોનિયા ગ્રીષ્મ સમય + + + + + ન્યુઝીલેન્ડ સમય + ન્યુઝીલેન્ડ માનક સમય + ન્યુઝીલેન્ડ દિવસ સમય + + + + + ન્યૂફાઉન્ડલેન્ડ સમય + ન્યૂફાઉન્ડલેન્ડ પ્રમાણભૂત સમય + ન્યૂફાઉન્ડલેન્ડ દિવસ સમય + + + + + નીયુ સમય + + + + + નોરફૉક આઇલેન્ડ સમય + + + + + ફર્નાન્ડો ડી નોરોન્હા સમય + ફર્નાન્ડો ડી નોરોન્હા માનક સમય + ફરનેન્ડો દે નોરોહા ગ્રીષ્મ સમય + + + + + ઉત્તર મારિયાના આઇલેન્ડ્સ + + + + + નોવોસીર્બિર્સ્ક સમય + નોવોસિબિર્સ્ક માનક સમય + નોવોસીબર્ક્સ ગ્રીષ્મ સમય + + + + + ઓમ્સ્ક સમય + ઓમસ્ક માનક સમય + ઓમ્સ્ક ગ્રીષ્મ સમય + + + + + પાકિસ્તાન સમય + પાકિસ્તાન માનક સમય + પાકિસ્તાન ગ્રીષ્મ સમય + + + + + પલાઉ સમય + + + + + પાપુઆ ન્યુ ગિની સમય + + + + + પેરાગ્વે સમય + પેરાગ્વે માનક સમય + પેરાગ્વે ગ્રીષ્મ સમય + + + + + પેરુ સમય + પેરુ માનક સમય + પેરુ ગ્રીષ્મ સમય + + + + + ફિલિપાઇન સમય + ફિલિપાઇન માનક સમય + ફિલિપાઇન ગ્રીષ્મ સમય + + + + + ફોનિક્સ આઇલેન્ડ્સ સમય + + + + + સેંટ પીએરે એન્ડ મિકીલોન સમય + સેંટ પીએરે એન્ડ મિકીલોન માનક સમય + સેંટ પીએરે એન્ડ મિકીલોન દિવસ સમય + + + + + પિટકેયર્ન સમય + + + + + પોનપે સમય + + + + + કિઝિલોર્ડા સમય + કિઝિલોર્ડા પ્રમાણભૂત સમય + કિઝિલોર્ડા ગ્રીષ્મ સમય + + + + + રીયૂનિયન સમય + + + + + રોથેરા સમય + + + + + સખાલિન સમય + સખાલિન માનક સમય + સખાલિન ગ્રીષ્મ સમય + + + + + સમારા સમય + સમારા પ્રમાણભૂત સમય + સમારા ગ્રીષ્મ સમય + + + + + સમોઆ સમય + સમોઆ માનક સમય + સમોઆ ગ્રીષ્મ સમય + + + + + સેશલ્સ સમય + + + + + સિંગાપુર માનક સમય + + + + + સોલોમન આઇલેન્ડ્સ સમય + + + + + દક્ષિણ જ્યોર્જીયા સમય + + + + + સૂરીનામ સમય + + + + + સ્યોવા સમય + + + + + તાહિતી સમય + + + + + તાઇપેઇ સમય + તાઇપેઇ માનક સમય + તાઇપેઇ દિવસ સમય + + + + + તાજીકિસ્તાન સમય + + + + + ટોકલાઉ સમય + + + + + ટોંગા સમય + ટોંગા માનક સમય + ટોંગા ગ્રીષ્મ સમય + + + + + ચુઉક સમય + + + + + તુર્કમેનિસ્તાન સમય + તુર્કમેનિસ્તાન માનક સમય + તુર્કમેનિસ્તાન ગ્રીષ્મ સમય + + + + + ટવાલૂ સમય + + + + + ઉરૂગ્વે સમય + ઉરૂગ્વે માનક સમય + ઉરૂગ્વે ગ્રીષ્મ સમય + + + + + ઉઝ્બેકિસ્તાન સમય + ઉઝ્બેકિસ્તાન માનક સમય + ઉઝ્બેકિસ્તાન ગ્રીષ્મ સમય + + + + + વનાતૂ સમય + વનાતૂ માનક સમય + વનાતૂ ગ્રીષ્મ સમય + + + + + વેનેઝુએલા સમય + + + + + વ્લેડિવોસ્ટોક સમય + વ્લાદિવોસ્તોક માનક સમય + વ્લેડિવોસ્ટોક ગ્રીષ્મ સમય + + + + + વોલ્ગોગ્રેડ સમય + વોલ્ગોગ્રેડ માનક સમય + વોલ્ગોગ્રેડ ગ્રીષ્મ સમય + + + + + વોસ્ટોક સમય + + + + + વૅક આઇલેન્ડ સમય + + + + + વૉલિસ અને ફ્યુચુના સમય + + + + + યકુત્સક સમય + યાકુત્સ્ક માનક સમય + યકુત્સ્ક ગ્રીષ્મ સમય + + + + + યેકાતેરિંબર્ગ સમય + યેકાટેરીન્બર્ગ માનક સમય + ઇકાટેરિન્બર્ગ ગ્રીષ્મ સમય + + + + + + latn + + gujr + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##,##0.### + + + + + 0 હજાર + 0 હજાર + 00 હજાર + 00 હજાર + 0 લાખ + 0 લાખ + 00 લાખ + 00 લાખ + 0 કરોડ + 0 કરોડ + 00 કરોડ + 00 કરોડ + 0 અબજ + 0 અબજ + 00 અબજ + 00 અબજ + 0 નિખર્વ + 0 નિખર્વ + 0 મહાપદ્મ + 0 મહાપદ્મ + 0 શંકુ + 0 શંકુ + 0 જલધિ + 0 જલધિ + + + + + 0 હજાર + 0 હજાર + 00 હજાર + 00 હજાર + 0 લાખ + 0 લાખ + 00 લાખ + 00 લાખ + 0 કરોડ + 0 કરોડ + 00 કરોડ + 00 કરોડ + 0 અબજ + 0 અબજ + 00 અબજ + 00 અબજ + 0 નિખર્વ + 0 નિખર્વ + 0 મહાપદ્મ + 0 મહાપદ્મ + 0 શંકુ + 0 શંકુ + 0 જલધિ + 0 જલધિ + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + ¤#,##,##0.00 + + + ¤#,##,##0.00;(¤#,##,##0.00) + + + {0} {1} + {0} {1} + + + + યુનાઈટેડ આરબ અમિરાત દિરહામ + યુનાઈટેડ આરબ અમિરાત દિરહામ + યુનાઈટેડ આરબ અમિરાત દિરહામ + + + અફ્ગાન અફ્ગાની + અફ્ગાન અફ્ગાની + અફ્ગાન અફ્ગાની + + + અલ્બેનિયન લેક + અલ્બેનિયન લેક + અલ્બેનિયન લેક + + + અર્મેનિયન ડ્રેમ + અર્મેનિયન ડ્રેમ + અર્મેનિયન ડ્રેમ + + + નેધરલેંડ એંટિલિન ગિલ્ડર + નેધરલેંડ એંટિલિન ગિલ્ડર + નેધરલેંડ એંટિલિન ગિલ્ડર + + + અંગોલિયન ક્વાન્ઝા + અંગોલિયન ક્વાન્ઝા + અંગોલિયન ક્વાન્ઝા + + + અર્જેન્ટીના પેસો + અર્જેન્ટીના પેસો + અર્જેન્ટીના પેસો + + + ઑસ્ટ્રેલિયન ડૉલર + ઑસ્ટ્રેલિયન ડૉલર + ઑસ્ટ્રેલિયન ડૉલર + A$ + + + અરુબન ફ્લોરિન + અરુબન ફ્લોરિન + અરુબન ફ્લોરિન + + + અઝરબૈજાની મનાત + અઝરબૈજાની મનાત + અઝરબૈજાની મનાત + + + બોસ્નિયા અને હર્ઝેગોવિના રૂપાંતર યોગ્ય માર્ક + બોસ્નિયા અને હર્ઝેગોવિના રૂપાંતર યોગ્ય માર્ક + બોસ્નિયા અને હર્ઝેગોવિના રૂપાંતર યોગ્ય માર્ક + + + બાર્બાડિયન ડોલર + બાર્બાડિયન ડોલર + બાર્બાડિયન ડોલર + + + બાંગલાદેશી ટાકા + બાંગલાદેશી ટાકા + બાંગલાદેશી ટાકા + + + બલ્ગેરીયન લેવ + બલ્ગેરીયન લેવ + બલ્ગેરીયન લેવ + + + બેહરિની દિનાર + બેહરિની દિનાર + બેહરિની દિનાર + + + બુરુન્ડિયન ફ્રેંક + બુરુન્ડિયન ફ્રેંક + બુરુન્ડિયન ફ્રેંક + + + બર્મુડન ડોલર + બર્મુડન ડોલર + બર્મુડન ડોલર + + + બ્રુનેઇ ડોલર + બ્રુનેઇ ડોલર + બ્રુનેઇ ડોલર + + + બોલિવિયન બોલિવિયાનો + બોલિવિયન બોલિવિયાનો + બોલિવિયન બોલિવિયાનો + + + બ્રાઝિલીયન રિઆલ + બ્રાઝિલીયન રિઆલ + બ્રાઝિલીયન રિઆલ + R$ + + + બહામિયન ડોલર + બહામિયન ડોલર + બહામિયન ડોલર + + + ભુતાનિઝ એંગુલ્ત્રમ + ભુતાનિઝ એંગુલ્ત્રમ + ભુતાનિઝ એંગુલ્ત્રમ + + + બોત્સવાનન પુલા + બોત્સવાનન પુલા + બોત્સવાનન પુલા + + + બેલારુશિયન રબલ + બેલારુશિયન રબલ + બેલારુશિયન રબલ + + + બેલિઝ ડોલર + બેલિઝ ડોલર + બેલિઝ ડોલર + + + કેનેડિયન ડૉલર + કેનેડિયન ડૉલર + કેનેડિયન ડૉલર + CA$ + + + કોંગોલિઝ ફ્રેંક + કોંગોલિઝ ફ્રેંક + કોંગોલિઝ ફ્રેંક + + + સ્વિસ ફ્રેંક + સ્વિસ ફ્રેંક + સ્વિસ ફ્રેંક + + + ચિલિઅન પેસો + ચિલિઅન પેસો + ચિલિઅન પેસો + + + ચાઇનિઝ યુઆન + ચાઇનિઝ યુઆન + ચાઇનિઝ યુઆન + CN¥ + + + કોલમ્બિયન પેસો + કોલમ્બિયન પેસો + કોલમ્બિયન પેસો + + + કોસ્ટા રિકન કોલોન + કોસ્ટા રિકન કોલોન + કોસ્ટા રિકન કોલોન + + + ક્યુબન રૂપાંતર યોગ્ય પેસો + ક્યુબન રૂપાંતર યોગ્ય પેસો + ક્યુબન રૂપાંતર યોગ્ય પેસો + + + ક્યુબન પેસો + ક્યુબન પેસો + ક્યુબન પેસો + + + કેપ વર્દિયન એસ્કુડો + કેપ વર્દિયન એસ્કુડો + કેપ વર્દિયન એસ્કુડો + + + ચેક રીપબ્લિક કોરુના + ચેક રીપબ્લિક કોરુના + ચેક રીપબ્લિક કોરુના + + + જિબુટિયન ફ્રેંક + જિબુટિયન ફ્રેંક + જિબુટિયન ફ્રેંક + + + ડેનિશ ક્રોન + ડેનિશ ક્રોન + ડેનિશ ક્રોન + + + ડોમિનિકન પેસો + ડોમિનિકન પેસો + ડોમિનિકન પેસો + + + અલ્જિરિયન દિનાર + અલ્જિરિયન દિનાર + અલ્જિરિયન દિનાર + + + ઇજિપ્તિયન પાઉન્ડ + ઇજિપ્તિયન પાઉન્ડ + ઇજિપ્તિયન પાઉન્ડ + + + એરિટ્રેયન નક્ફા + એરિટ્રેયન નક્ફા + એરિટ્રેયન નક્ફા + + + ઇથિયોપીયન બિર + ઇથિયોપીયન બિર + ઇથિયોપીયન બિર + + + યુરો + યુરો + યુરો + + + + ફિજિઅન ડોલર + ફિજિઅન ડોલર + ફિજિઅન ડોલર + + + ફૉકલેન્ડ આઇલેંડ્સ પાઉન્ડ + ફૉકલેન્ડ આઇલેંડ્સ પાઉન્ડ + ફૉકલેન્ડ આઇલેંડ્સ પાઉન્ડ + + + બ્રિટિશ પાઉન્ડ સ્ટર્લિંગ + બ્રિટિશ પાઉન્ડ સ્ટર્લિંગ + બ્રિટિશ પાઉન્ડ સ્ટર્લિંગ + £ + + + જ્યોર્જિઅન લારી + જ્યોર્જિઅન લારી + જ્યોર્જિઅન લારી + + + ઘાનાઇયન સેડી + ઘાનાઇયન સેડી + ઘાનાઇયન સેડી + + + જીબ્રાલ્ટર પાઉન્ડ + જીબ્રાલ્ટર પાઉન્ડ + જીબ્રાલ્ટર પાઉન્ડ + + + ગેમ્બિયન દલાસી + ગેમ્બિયન દલાસી + ગેમ્બિયન દલાસી + + + ગિનીયન ફ્રેંક + ગિનીયન ફ્રેંક + ગિનીયન ફ્રેંક + + + ગ્વાટેમાલા કુઇટ્ઝલ + ગ્વાટેમાલા કુઇટ્ઝલ + ગ્વાટેમાલા કુઇટ્ઝલ + + + ગયાનિઝ ડોલર + ગયાનિઝ ડોલર + ગયાનિઝ ડોલર + + + હોંગ કોંગ ડૉલર + હોંગ કોંગ ડૉલર + હોંગ કોંગ ડૉલર + HK$ + + + હોન્ડ્યુરન લેમ્પિરા + હોન્ડ્યુરન લેમ્પિરા + હોન્ડ્યુરન લેમ્પિરા + + + ક્રોએશિયન ક્યુના + ક્રોએશિયન ક્યુના + ક્રોએશિયન ક્યુના + + + હાઇટિઇન ગોર્ડ + હાઇટિઇન ગોર્ડ + હાઇટિઇન ગોર્ડ + + + હંગેરીયન ફોરિન્ત + હંગેરીયન ફોરિન્ત + હંગેરીયન ફોરિન્ત + + + ઇન્ડોનેશિયન રૂપિયા + ઇન્ડોનેશિયન રૂપિયા + ઇન્ડોનેશિયન રૂપિયા + + + ઇઝરાયેલી ન્યુ શેકલ + ઇઝરાયેલી ન્યુ શેકલ + ઇઝરાયેલી ન્યુ શેકલ + + + + ભારતીય રૂપિયા + ભારતીય રૂપિયા + ભારતીય રૂપિયા + + + + ઇરાકી દિનાર + ઇરાકી દિનાર + ઇરાકી દિનાર + + + ઇરાનિયન રિયાલ + ઇરાનિયન રિયાલ + ઇરાનિયન રિયાલ + + + આઇસ્લેંડિક ક્રોના + + + જમૈકિયન ડોલર + જમૈકિયન ડોલર + જમૈકિયન ડોલર + + + જોર્ડનિયન દિનાર + જોર્ડનિયન દિનાર + જોર્ડનિયન દિનાર + + + જાપાનીઝ યેન + જાપાનીઝ યેન + જાપાનીઝ યેન + JP¥ + + + કેન્યેન શિલિંગ + કેન્યેન શિલિંગ + કેન્યેન શિલિંગ + + + કિર્ગિસ્તાની સોમ + કિર્ગિસ્તાની સોમ + કિર્ગિસ્તાની સોમ + + + કેમ્બોડિયન રીઅલ + કેમ્બોડિયન રીઅલ + કેમ્બોડિયન રીઅલ + + + કોમોરિઅન ફ્રેંક + કોમોરિઅન ફ્રેંક + કોમોરિઅન ફ્રેંક + + + ઉત્તર કોરિયન વન + ઉત્તર કોરિયન વન + ઉત્તર કોરિયન વન + + + દક્ષિણ કોરિયન વન + દક્ષિણ કોરિયન વન + દક્ષિણ કોરિયન વન + + + + કુવૈતી દીનાર + કુવૈતી દીનાર + કુવૈતી દીનાર + + + કેયમેન આઇલેંડ્સ ડોલર + કેયમેન આઇલેંડ્સ ડોલર + કેયમેન આઇલેંડ્સ ડોલર + + + કઝાકિસ્તાની ટેંગ + કઝાકિસ્તાની ટેંગ + કઝાકિસ્તાની ટેંગ + + + લાઓશિયન કિપ + લાઓશિયન કિપ + લાઓશિયન કિપ + + + લેબેનિઝ પાઉન્ડ + લેબેનિઝ પાઉન્ડ + લેબેનિઝ પાઉન્ડ + + + શ્રી લંકન રૂપી + શ્રી લંકન રૂપી + શ્રી લંકન રૂપી + + + લિબેરિયન ડોલર + લિબેરિયન ડોલર + લિબેરિયન ડોલર + + + લેસોથો લોતી + + + લિથુએનિયન લિતાસ + લિથુએનિયન લિતાસ + લિથુએનિયન લિતાસ + + + લાતવિયન લેત્સ + લાતવિયન લેત્સ + લાતવિયન લેત્સ + + + લિબ્યન દિનાર + લિબ્યન દિનાર + લિબ્યન દિનાર + + + મોરોક્કન દિરામ + મોરોક્કનદિરામ + મોરોક્કનદિરામ + + + મોલડોવેન લિયુ + મોલડોવેન લિયુ + મોલડોવેન લિયુ + + + માલાગેસી અરીઆરી + માલાગેસી અરીઆરી + માલાગેસી અરીઆરી + + + મેસેડોનિયન દિનાર + મેસેડોનિયન દિનાર + મેસેડોનિયન દિનાર + + + મયાન્મા ક્યાત + મયાન્મા ક્યાત + મયાન્મા ક્યાત + + + મોંગોલિયન ટગરિક + મોંગોલિયન ટગરિક + મોંગોલિયન ટગરિક + + + માકાનિઝ પતાકા + માકાનિઝ પતાકા + માકાનિઝ પતાકા + + + મોરીશેનિયન ઓગુયા + મોરીશેનિયન ઓગુયા + મોરીશેનિયન ઓગુયા + + + મોરેશીઅન રૂપી + મોરેશીઅન રૂપી + મોરેશીઅન રૂપી + + + માલ્દિવિયન રુફિયા + માલ્દિવિયન રુફિયા + માલ્દિવિયન રુફિયા + + + માલાવિયન ક્વાચા + માલાવિયન ક્વાચા + માલાવિયન ક્વાચા + + + મેક્સિકન પેસો + મેક્સિકન પેસો + મેક્સિકન પેસો + MX$ + + + મલેશિયન રિંગ્ગેટ + મલેશિયન રિંગ્ગેટ + મલેશિયન રિંગ્ગેટ + + + મોઝામ્બિકન મેટિકલ + મોઝામ્બિકન મેટિકલ + મોઝામ્બિકન મેટિકલ + + + નામિબિયન ડોલર + નામિબિયન ડોલર + નામિબિયન ડોલર + + + નાઇજીરિયન નૈરા + નાઇજીરિયન નૈરા + નાઇજીરિયન નૈરા + + + નિકારાગુઅન કોર્ડોબા + નિકારાગુઅન કોર્ડોબા + નિકારાગુઅન કોર્ડોબા + + + નૉર્વેજિયન ક્રોન + નૉર્વેજિયન ક્રોન + નૉર્વેજિયન ક્રોન + + + નેપાલિઝ રૂપી + નેપાલિઝ રૂપી + નેપાલિઝ રૂપી + + + ન્યૂઝિલેંડ ડૉલર + ન્યૂઝિલેંડ ડૉલર + ન્યૂઝિલેંડ ડૉલર + NZ$ + + + ઓમાની રિયાલ + ઓમાની રિયાલ + ઓમાની રિયાલ + + + પનામેનિયન બાલ્બોઆ + પનામેનિયન બાલ્બોઆ + પનામેનિયન બાલ્બોઆ + + + પેરુવિયન ન્યુવો સોલ + પેરુવિયન ન્યુવો સોલ + પેરુવિયન ન્યુવો સોલ + + + પાપુઆ ન્યૂ ગિનીયન કિના + પાપુઆ ન્યૂ ગિનીયન કિના + પાપુઆ ન્યૂ ગિનીયન કિના + + + ફિલીપાઇન પેસો + ફિલીપાઇન પેસો + ફિલીપાઇન પેસો + + + પાકિસ્તાની રૂપી + પાકિસ્તાની રૂપી + પાકિસ્તાની રૂપી + + + પોલિસ ઝ્લોટી + પોલિસ ઝ્લોટી + પોલિસ ઝ્લોટી + + + પરાગ્વેયન ગૌરાની + પરાગ્વેયન ગૌરાની + પરાગ્વેયન ગૌરાની + + + કતારી રિયાલ + કતારી રિયાલ + કતારી રિયાલ + + + રોમાનિયન લેઉ + રોમાનિયન લેઉ + રોમાનિયન લેઉ + + + સર્બિયન દિનાર + સર્બિયન દિનાર + સર્બિયન દિનાર + + + રશિયન રબલ + રશિયન રબલ + રશિયન રબલ + + + રવાંડન ફ્રેંક + રવાંડન ફ્રેંક + રવાંડન ફ્રેંક + + + સાઉદી રિયાલ + સાઉદી રિયાલ + સાઉદી રિયાલ + + + સોલોમન આઇલેંડ્સ ડોલર + સોલોમન આઇલેંડ્સ ડોલર + સોલોમન આઇલેંડ્સ ડોલર + + + સેશેલોઈ રૂપી + સેશેલોઈ રૂપી + સેશેલોઈ રૂપી + + + સુદાનિઝ પાઉન્ડ + સુદાનિઝ પાઉન્ડ + સુદાનિઝ પાઉન્ડ + + + સ્વીડિશ ક્રોના + સ્વીડિશ ક્રોના + સ્વીડિશ ક્રોના + + + સિંગાપુર ડૉલર + સિંગાપુર ડૉલર + સિંગાપુર ડૉલર + + + સેંટ હેલેના પાઉન્ડ + સેંટ હેલેના પાઉન્ડ + સેંટ હેલેના પાઉન્ડ + + + સિએરા લિઓનિઅન લિઓન + સિએરા લિઓનિઅન લિઓન + સિએરા લિઓનિઅન લિઓન + + + સોમાલી શિલિંગ + સોમાલી શિલિંગ + સોમાલી શિલિંગ + + + સૂરીનામિઝ ડોલર + સૂરીનામિઝ ડોલર + સૂરીનામિઝ ડોલર + + + દક્ષિણ સુદાનિઝ પાઉન્ડ + દક્ષિણ સુદાનિઝ પાઉન્ડ + દક્ષિણ સુદાનિઝ પાઉન્ડ + + + સાઓ ટૉમ એન્ડ પ્રિંસાઇપ ડોબ્રા + સાઓ ટૉમ એન્ડ પ્રિંસાઇપ ડોબ્રા + સાઓ ટૉમ એન્ડ પ્રિંસાઇપ ડોબ્રા + + + સાઇરિયન પાઉન્ડ + સાઇરિયન પાઉન્ડ + સાઇરિયન પાઉન્ડ + + + સ્વાઝી લિલાન્ગેની + સ્વાઝી લિલાન્ગેની + સ્વાઝી લિલાન્ગેની + + + થાઇ બાહ્ત + થાઇ બાહ્ત + થાઇ બાહ્ત + ฿ + + + તાજિકિસ્તાની સોમોની + તાજિકિસ્તાની સોમોની + તાજિકિસ્તાની સોમોની + + + તુર્કમેનિસ્તાની મનત + તુર્કમેનિસ્તાની મનત + તુર્કમેનિસ્તાની મનત + + + ટ્યુનિશિયન દિનાર + ટ્યુનિશિયન દિનાર + ટ્યુનિશિયન દિનાર + + + ટોંગન પ'અંગા + ટોંગન પ'અંગા + ટોંગન પ'અંગા + + + તુર્કિશ લિરા + તુર્કિશ લિરા + તુર્કિશ લિરા + + + ત્રિનિદાદ અને ટોબેગો ડોલર + ત્રિનિદાદ અને ટોબેગો ડોલર + ત્રિનિદાદ અને ટોબેગો ડોલર + + + ન્યુ તાઇવાન ડૉલર + ન્યુ તાઇવાન ડૉલર + ન્યુ તાઇવાન ડૉલર + NT$ + + + તાન્ઝાનિયન શિલિંગ + તાન્ઝાનિયન શિલિંગ + તાન્ઝાનિયન શિલિંગ + + + યુક્રેનિયન હ્રિવિનિયા + યુક્રેનિયન હ્રિવિનિયા + યુક્રેનિયન હ્રિવિનિયા + + + યુગાંડન શિલિંગ + યુગાંડન શિલિંગ + યુગાંડન શિલિંગ + + + યુઍસ ડોલર + યુઍસ ડોલર + યુઍસ ડોલર + US$ + + + ઉરુગ્વેયન પેસો + ઉરુગ્વેયન પેસો + ઉરુગ્વેયન પેસો + + + ઉઝ્બેકિસ્તાન સોમ + ઉઝ્બેકિસ્તાન સોમ + ઉઝ્બેકિસ્તાન સોમ + + + વેનેઝ્વીલિયન બોલિવર + વેનેઝ્વીલિયન બોલિવર + વેનેઝ્વીલિયન બોલિવર + + + વિયેતનામીસ ડોંગ + વિયેતનામીસ ડોંગ + વિયેતનામીસ ડોંગ + + + + વનૌતુ વાતુ + વનૌતુ વાતુ + વનૌતુ વાતુ + + + સમોઅન તાલા + સમોઅન તાલા + સમોઅન તાલા + + + CFA ફ્રેંક BEAC + CFA ફ્રેંક BEAC + CFA ફ્રેંક BEAC + FCFA + + + ઇસ્ટ કેરિબિયન ડોલર + ઇસ્ટ કેરિબિયન ડોલર + ઇસ્ટ કેરિબિયન ડોલર + EC$ + + + CFA ફ્રેંક BCEAO + CFA ફ્રેંક BCEAO + CFA ફ્રેંક BCEAO + CFA + + + CFP ફ્રેંક + CFP ફ્રેંક + CFP ફ્રેંક + CFPF + + + અજ્ઞાત ચલણ + અજ્ઞાત ચલણ + અજ્ઞાત ચલણ + + + યેમેની રિઆલ + યેમેની રિઆલ + યેમેની રિઆલ + + + દક્ષિણ આફ્રિકી રેંડ + દક્ષિણ આફ્રિકી રેંડ + દક્ષિણ આફ્રિકી રેંડ + + + ઝામ્બિયન ક્વાચા (1968–2012) + + + ઝામ્બિયન ક્વાચા + ઝામ્બિયન ક્વાચા + ઝામ્બિયન ક્વાચા + + + + {0}+ + {0}-{1} + + + + + + {0} પ્રતિ {1} + + + {0} g-બળ + {0} g-બળ + + + {0} માઇન્યૂટ + {0} માઇન્યૂટ + + + {0} સેકન્ડ + {0} સેકન્ડ + + + {0} અંશ + {0} અંશ + + + {0} એકર + {0} એકર + + + {0} હેક્ટર + {0} હેક્ટર + + + {0} ચોરસ ફૂટ + {0} ચોરસ ફૂટ + + + {0} ચોરસ કિલોમીટર + {0} ચોરસ કિલોમીટર + + + {0} ચોરસ મીટર + {0} ચોરસ મીટર + + + {0} ચોરસ માઇલ + {0} ચોરસ માઇલ + + + {0} દિવસ + {0} દિવસ + + + {0} કલાક + {0} કલાક + + + {0} મિલિસેકન્ડ + {0} મિલિસેકન્ડ્સ + + + {0} મિનિટ + {0} મિનિટ + + + {0} મહિનો + {0} મહિના + + + {0} સેકંડ + {0} સેકંડ + + + {0} અઠવાડિયું + {0} અઠવાડિયા + + + {0} વર્ષ + {0} વર્ષ + + + {0} સેન્ટિમીટર + {0} સેન્ટિમીટર + + + {0} ફૂટ + {0} ફિટ + + + {0} ઇંચ + {0} ઇંચ + + + {0} કિલોમીટર + {0} કિલોમીટર + + + {0} પ્રકાશ વર્ષ + {0} પ્રકાશ વર્ષ + + + {0} મીટર + {0} મીટર + + + {0} માઇલ + {0} માઇલ + + + {0} મિલિમીટર + {0} મિલિમીટર + + + {0} પિસૉમિટર + {0} પિસૉમિટર + + + {0} વાર + {0} વાર + + + {0} ગ્રામ + {0} ગ્રામ + + + {0} કિલોગ્રામ + {0} કિલોગ્રામ + + + {0} ઔંશ + {0} ઔંશ + + + {0} પાઉન્ડ + {0} પાઉન્ડ + + + {0} હોર્સપાવર + {0} હોર્સપાવર + + + {0} કિલોવૉટ + {0} કિલોવૉટ + + + {0} વૉટ + {0} વૉટ + + + {0} હેક્ટૉપાસ્કલ + {0} હેક્ટૉપાસ્કલ + + + {0} પારાના ઇંચ + {0} પારાના ઇંચ + + + {0} મિલીબાર + {0} મિલીબાર + + + {0} કિલોમીટર પ્રતિ કલાક + {0} કિલોમીટર પ્રતિ કલાક + + + {0} મીટર પ્રતિ સેકન્ડ + {0} મીટર પ્રતિ સેકન્ડ + + + {0} માઇલ પ્રતિ કલાક + {0} માઇલ પ્રતિ કલાક + + + {0} ડિગ્રી સેલ્સિયસ + {0} ડિગ્રી સેલ્સિયસ + + + {0} ડિગ્રી ફેરનહીટ + {0} ડિગ્રી ફેરનહીટ + + + {0} ઘન કિલોમીટર + {0} ઘન કિલોમીટર + + + {0} ઘન માઇલ + {0} ઘન માઇલ + + + {0} લિટર + {0} લિટર + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} માઇન્યૂટ + {0} માઇન્યૂટ + + + {0} સેકન્ડ + {0} સેકન્ડ + + + {0} અંશ + {0} અંશ + + + {0} એકર + {0} એકર + + + {0} હેક્ટર + {0} હેક્ટર + + + {0} ચોરસ ફૂટ + {0} ચોરસ ફૂટ + + + {0} km² + {0} km² + + + {0} ચોરસ મીટર + {0} ચોરસ મીટર + + + {0} ચોરસ માઇલ + {0} ચોરસ માઇલ + + + {0} દિવસ + {0} દિવસ + + + {0} કલાક + {0} કલાક + + + {0} મિસે + {0} મિસે + + + {0} મિનિટ + {0} મિનિટ + + + {0} મહિનો + {0} મહિના + + + {0} સેકંડ + {0} સેકંડ + + + {0} અઠ. + {0} અઠ. + + + {0} વર્ષ + {0} વર્ષ + + + {0} સેમી + {0} સેમી + + + {0} ફૂટ + {0} ફૂટ + + + {0} ઇંચ + {0} ઇંચ + + + {0} કિમી + {0} કિમી + + + {0} પ્રકાશ વર્ષ + {0} પ્રકાશ વર્ષ + + + {0} મી + {0} મી + + + {0} માઇલ + {0} માઇલ + + + {0} મિમી + {0} મિમી + + + {0} પિસૉમિટર + {0} પિસૉમિટર + + + {0} વાર + {0} વાર + + + {0} ગ્રા + {0} ગ્રા + + + {0} કિગ્રા + {0} કિગ્રા + + + {0} ઔંશ + {0} ઔંશ + + + {0} પાઉન્ડ + {0} પાઉન્ડ + + + {0} હોર્સપાવર + {0} હોર્સપાવર + + + {0} કિલોવૉટ + {0} કિલોવૉટ + + + {0} વૉટ + {0} વૉટ + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} મિલીબાર + {0} મિલીબાર + + + {0} કિમી/કલાક + {0} કિમી/કલાક + + + {0} મીટર/સેકન્ડ + {0} મીટર/સેકન્ડ + + + {0} માઇલ/કલાક + {0} માઇલ/કલાક + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} ઘન માઇલ + {0} ઘન માઇલ + + + {0} લિ + {0} લિ + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} દિવસ + {0} દિવસ + + + {0} કલાક + {0} કલાક + + + {0} મિસે + {0} મિસે + + + {0} મિનિટ + {0} મિનિટ + + + {0} મહિનો + {0} મહિનો + + + {0} સેકંડ + {0} સેકંડ + + + {0} અઠ. + {0} અઠ. + + + {0} વર્ષ + {0} વર્ષ + + + {0} સેમી + {0} સેમી + + + {0} ' + {0} ' + + + {0} " + {0} " + + + {0} કિમી + {0} કિમી + + + {0}પ્રકાશવર્ષ + {0}પ્રકાશવર્ષ + + + {0} મી + {0} મી + + + {0} માઇલ + {0} માઇલ + + + {0} મિમી + {0} મિમી + + + {0}પિસૉ.મી + {0}પિસૉ.મી + + + {0} વાર + {0} વાર + + + {0} ગ્રા + {0} ગ્રા + + + {0} કિગ્રા + {0} કિગ્રા + + + {0} ઔંશ + {0} ઔંશ + + + {0} પાઉન્ડ + {0} પાઉન્ડ + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0}મિલીબાર + {0}મિલીબાર + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} અને {1} + {0} અને {1} + + + {0}, {1} + {0}, {1} + {0} અને {1} + {0} અને {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + હા + નહીં + + + + diff --git a/library/Zend/Locale/Data/gu_IN.xml b/library/Zend/Locale/Data/gu_IN.xml new file mode 100755 index 000000000..8fa152f0a --- /dev/null +++ b/library/Zend/Locale/Data/gu_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/guz.xml b/library/Zend/Locale/Data/guz.xml new file mode 100755 index 000000000..04b8f5978 --- /dev/null +++ b/library/Zend/Locale/Data/guz.xml @@ -0,0 +1,764 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Ekegusii + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Can + Feb + Mac + Apr + Mei + Jun + Cul + Agt + Sep + Okt + Nob + Dis + + + Chanuari + Feburari + Machi + Apiriri + Mei + Juni + Chulai + Agosti + Septemba + Okitoba + Nobemba + Disemba + + + + + C + F + M + A + M + J + C + A + S + O + N + D + + + + + + + Cpr + Ctt + Cmn + Cmt + Ars + Icm + Est + + + Chumapiri + Chumatato + Chumaine + Chumatano + Aramisi + Ichuma + Esabato + + + + + C + C + C + C + A + I + E + + + + + + + E1 + E2 + E3 + E4 + + + Erobo entang'ani + Erobo yakabere + Erobo yagatato + Erobo yakane + + + + + + + Ma/Mo + Mambia/Mog + + + + + + Yeso ataiborwa + Yeso kaiboirwe + + + YA + YK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ebiro + + + Omwaka + + + Omotienyi + + + Omokubio + + + Rituko + Igoro + Rero + Mambia + + + Rituko r'ewiki + + + Mambia gose Morogoba + + + Ensa + + + Edakika + + + Esekendi + + + Chinse 'chimo + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Ee bono:E + Yaya:Y + + + + diff --git a/library/Zend/Locale/Data/guz_KE.xml b/library/Zend/Locale/Data/guz_KE.xml new file mode 100755 index 000000000..edf62c89d --- /dev/null +++ b/library/Zend/Locale/Data/guz_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/gv.xml b/library/Zend/Locale/Data/gv.xml new file mode 100755 index 000000000..bb50ab742 --- /dev/null +++ b/library/Zend/Locale/Data/gv.xml @@ -0,0 +1,206 @@ + + + + + + + + + + + + Gaelg + + + Rywvaneth Unys + Ellan Vannin + + + + [a b c ç d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + MMM dd, y G + + + + + dd/MM/yy GGGGG + + + + + + + + + J-guer + T-arree + Mayrnt + Avrril + Boaldyn + M-souree + J-souree + Luanistyn + M-fouyir + J-fouyir + M.Houney + M.Nollick + + + Jerrey-geuree + Toshiaght-arree + Mayrnt + Averil + Boaldyn + Mean-souree + Jerrey-souree + Luanistyn + Mean-fouyir + Jerrey-fouyir + Mee Houney + Mee ny Nollick + + + + + + + Jed + Jel + Jem + Jerc + Jerd + Jeh + Jes + + + Jedoonee + Jelhein + Jemayrt + Jercean + Jerdein + Jeheiney + Jesarn + + + + + + + a.m. + p.m. + + + + + + RC + AD + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + MMM dd, y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + + CET + CET + CEST + + + + + EET + EET + EEST + + + + + WET + WET + WEST + + + + + GMT + + + + + + + + + ¤#,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/gv_IM.xml b/library/Zend/Locale/Data/gv_IM.xml new file mode 100755 index 000000000..620b70c1f --- /dev/null +++ b/library/Zend/Locale/Data/gv_IM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ha.xml b/library/Zend/Locale/Data/ha.xml new file mode 100755 index 000000000..ebfd6ff4e --- /dev/null +++ b/library/Zend/Locale/Data/ha.xml @@ -0,0 +1,843 @@ + + + + + + + + + + + + Afirkanci + Akan + Amharik + Larabci + Asamisanci + Azerbaijanci + Belarusanci + Bulgaranci + Bengali + Buretananci + Bosniyanci + Kataloniyanci + Harshen Cak + Kabilar Welsh + Danish + Jamusanci + Girkanci + Turanci + D'an/'Yar Kabilar Andalus + Ispaniyanci + Istoniyanci + Dan/'Yar Kabilar Bas + Parisanci + Yaren mutanen Finland + Dan Filifin + Faroese + Faransanci + K'abilan Firsi + Dan Ailan + K'abilan Scots Gaelic + Bagalike + Guwaraniyanci + Gujarati + Hausa + Yahudanci + Harshen Hindi + Kuroshiyan + Harshen Hungari + Armeniyanci + Yare Tsakanin Kasashe + Harshen Indunusiya + Intagulanci + Inyamuranci + Yaren mutanen Iceland + Italiyanci + Japananci + Jabananci + Jojiyanci + Harshen Kimar + Dan/'Yar Kabilar Kannada + Harshen Koreya + Kurdanci + Kirgizanci + Dan Kabilar Latin + Lingala + Laothian + Lituweniyanci + Latbiyanci + Dan Masedoniya + Kabilar Maleyalam + Mongolian + K'abilan Marathi + Harshen Malai + Harshen Maltis + Burmanci + Nepali + Holanci + Yaren Kasar Norway + Yaren mutanen Norway + Ositanci + Oriyanci + Punjabi + Harshen Polan + Pashtanci + Harshen Portugal + Fotigis (Burazil) + Yaren Kasar Portugal + Romaniyanci + Rashanci + Kiniyaruwanda + sanskrit + Sindiyanci + Kuroweshiyancin-Sabiya + Sinhalanci + Basulake + Basulabe + Somali + D'an/'Yar Kabilar Albaniya + Sabiyan + Sesotanci + Sundanese + Harshen Suwedan + Harshen Suwahili + Tamil + D'an/'Yar Kabilar Telug + Thai + Tigriyanci + Tukmenistanci + Klingon + Harshen Turkiyya + Tiwiniyanci + Ugiranci + Harshen Yukuren + Harshen Urdu + Uzbek + Harshen Biyetinam + Bazosa + Yarbanci + Harshen Sin + Harshen Zulu + + + Andora + Haɗaɗɗiyar Daular Larabawa + Afaganistan + Antigwa da Barbuba + Angila + Albaniya + Armeniya + Antiya Na Holan + Angola + Arjantiniya + Samowa Ta Amurka + Ostiriya + Ostareliya + Aruba + Azarbaijan + Bosniya Harzagobina + Barbadas + Bangiladas + Belgiyom + Burkina Faso + Bulgariya + Baharan + Burundi + Binin + Barmuda + Burune + Bolibiya + Birazil + Bahamas + Butan + Baswana + Belarus + Beliz + Kanada + Jamhuriyar Dimokuraɗiyyar Kongo + Jamhuriyar Afirka Ta Tsakiya + Kongo + Suwizalan + Aibari Kwas + Tsibiran Kuku + Cayile + Kamaru + Caina, Sin + Kolambiya + Kwasta Rika + Kyuba + Tsibiran Kap Barde + Sifurus + Jamhuriyar Cak + Jamus + Jibuti + Danmark + Dominika + Jamhuriyar Dominika + Aljeriya + Ekwador + Estoniya + Masar, Misira + Eritireya + Sipen + Habasha + Finlan + Fiji + Tsibiran Falkilan + Mikuronesiya + Faransa + Gabon + Birtaniya + Girnada + Jiwarjiya + Gini Ta Faransa + Gana + Jibaraltar + Grinlan + Gambiya + Gini + Gwadaluf + Gini Ta Ikwaita + Girka + Gwatamala + Gwam + Gini Bisau + Guyana + Honduras + Kurowaishiya + Haiti + Hungari + Indunusiya + Ayalan + Izira'ila + Indiya + Yankin Birtaniya Na Tekun Indiya + Iraƙi + Iran + Aisalan + Italiya + Jamaika + Jordan + Japan + Kenya + Kirgizistan + Kambodiya + Kiribati + Kwamoras + San Kiti Da Nebis + Koreya Ta Arewa + Koreya Ta Kudu + Kwiyat + Tsibiran Kaiman + Kazakistan + Lawas + Labanan + San Lusiya + Licansitan + Siri Lanka + Laberiya + Lesoto + Lituweniya + Lukusambur + latibiya + Libiya + Maroko + Monako + Maldoba + Madagaskar + Tsibiran Marshal + Masedoniya + Mali + Burma, Miyamar + Mangoliya + Tsibiran Mariyana Na Arewa + Martinik + Moritaniya + Manserati + Malta + Moritus + Maldibi + Malawi + Makasiko + Malaisiya + Mozambik + Namibiya + Kaledoniya Sabuwa + Nijar + Tsibirin Narfalk + Najeriya + Nikaraguwa + Holan + Norwe + Nefal + Nauru + Niyu + Nuzilan + Oman + Panama + Peru + Folinesiya Ta Faransa + Papuwa Nugini + Filipin + Pakistan + Polan + San Piyar Da Mikelan + Pitakarin + Porto Riko + Palasɗinu + Portugal + Palau + Paragai + Kwatar + Rawuniyan + Romaniya + Rasha + Ruwanda + Ƙasar Makka + Tsibiran Salaman + Saishal + Sudan + Suwedan + Singapur + San Helena + Sulobeniya + Sulobakiya + Salewo + San Marino + Sinigal + Somaliya + Suriname + Sawo Tome Da Paransip + El Salbador + Sham, Siriya + Suwazilan + Turkis Da Tsibiran Kaikwas + Cadi + Togo + Tailan + Tajikistan + Takelau + Timor Ta Gabas + Turkumenistan + Tunisiya + Tanga + Turkiyya + Tirinidad Da Tobago + Tubalu + Taiwan + Tanzaniya + Yukaran + Yuganda + Amurka + Yurugai + Uzubekistan + Batikan + San Binsan Da Girnadin + Benezuwela + Tsibirin Birjin Na Birtaniya + Tsibiran Birjin Ta Amurka + Biyetinam + Banuwatu + Walis Da Futuna + Samowa + Yamal + Mayoti + Afirka Ta Kudu + Zambiya + Zimbabuwe + + + + [a b ɓ c d ɗ e f g h i j k ƙ l m n o r s {sh} t {ts} u w y {ʼy} z ʼ] + [á à â é è ê í ì î ó ò ô p q {r\u0303} ú ù û v x ƴ] + [A B Ɓ C D Ɗ E F G H I J K Ƙ L M N O P Q R S T U V W X Y {ʼY} Z] + + + + + + + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + d/M/yy GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Fab + Mar + Afi + May + Yun + Yul + Agu + Sat + Okt + Nuw + Dis + + + Janairu + Faburairu + Maris + Afirilu + Mayu + Yuni + Yuli + Agusta + Satumba + Oktoba + Nuwamba + Disamba + + + + + J + F + M + A + M + Y + Y + A + S + O + N + D + + + + + + + Lh + Li + Ta + Lr + Al + Ju + As + + + Lahadi + Litinin + Talata + Laraba + Alhamis + Jumma'a + Asabar + + + + + L + L + T + L + A + J + A + + + + + + + K1 + K2 + K3 + K4 + + + Kwata na ɗaya + Kwata na biyu + Kwata na uku + Kwata na huɗu + + + + + + Kafin haihuwar annab + Bayan haihuwar annab + + + KHAI + BHAI + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + d/M/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Zamani + + + Shekara + + + Wata + + + Mako + + + Kwana + Jiya + Yau + Gobe + + + Rana + + + Yini + + + Awa + + + Minti + + + Daƙiƙa + + + Agogo + + + + + + . + , + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + Kuɗin Haɗaɗɗiyar Daular Larabawa + + + Kuɗin Angola + + + Dalar Ostareliya + + + Kuɗin Baharan + + + Kuɗin Burundi + + + Kuɗin Baswana + + + Dalar Kanada + + + Kuɗin Kongo + + + Kuɗin Suwizalan + + + Kuɗin Caina/Sin + + + Kuɗin Tsibiran Kap Barde + + + Kuɗin Jibuti + + + Kuɗin Aljeriya + + + Fam kin Masar + + + Kuɗin Eritireya + + + Kuɗin Habasha + + + Yuro + + + Fam kin Ingila + + + Cedi + + + Kuɗin Gambiya + + + Kuɗin Gini + + + Kuɗin Indiya + + + Kuɗin Japan + + + Sulen Kenya + + + Kuɗin Kwamoras + + + Dalar Laberiya + + + Kuɗin Lesoto + + + Kuɗin Libiya + + + Kuɗin Maroko + + + Kuɗin Madagaskar + + + Kuɗin Moritaniya + + + Kuɗin Moritus + + + Kuɗin Malawi + + + Kuɗin Mozambik + + + Dalar Namibiya + + + Naira + + + + Kuɗin Ruwanda + + + Riyal + + + Kuɗin Saishal + + + Fam kin Sudan + + + Fam kin San Helena + + + Kuɗin Salewo + + + Sulen Somaliya + + + Kuɗin Sawo Tome da Paransip + + + Kuɗin Lilangeni + + + Kuɗin Tunisiya + + + Sulen Tanzaniya + + + Sule Yuganda + + + Dalar Amurka + + + Kuɗin Sefa na Afirka Ta Tsakiya + + + Kuɗin Sefa na Afirka Ta Yamma + + + Kuɗin Afirka Ta Kudu + + + Kuɗin Zambiya (1968–2012) + + + Kuɗin Zambiya + + + Dalar zimbabuwe + + + + + + i + a'a:a + + + + diff --git a/library/Zend/Locale/Data/ha_Latn.xml b/library/Zend/Locale/Data/ha_Latn.xml new file mode 100755 index 000000000..8fa062e83 --- /dev/null +++ b/library/Zend/Locale/Data/ha_Latn.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + העולם + אפריקה + צפון אמריקה + דרום אמריקה + אוקיאניה + מערב אפריקה + מרכז אמריקה + מזרח אפריקה + צפון אפריקה + מרכז אפריקה + דרום יבשת אפריקה + אמריקה + אמריקה הצפונית + קריביים + מזרח אסיה + דרום אסיה + דרום־מזרח אסיה + דרום אירופה + אוסטרלאסיה + מלנזיה + אזור מיקרונזיה + פולינזיה + אסיה + מרכז אסיה + מערב אסיה + אירופה + מזרח אירופה + צפון אירופה + מערב אירופה + אמריקה הלטינית + האי אסנשן + אנדורה + איחוד האמירויות הערביות + אפגניסטן + אנטיגואה וברבודה + אנגילה + אלבניה + ארמניה + אנטילים הולנדיים + אנגולה + אנטארקטיקה + ארגנטינה + סמואה האמריקנית + אוסטריה + אוסטרליה + ארובה + איי אולנד + אזרבייג׳ן + בוסניה והרצגובינה + ברבדוס + בנגלדש + בלגיה + בורקינה פאסו + בולגריה + בחריין + בורונדי + בנין + סנט ברתולומיאו + ברמודה + ברוניי + בוליביה + האיים הקריביים ההולנדיים + ברזיל + איי בהאמה + בהוטן + איי בובה + בוטסוואנה + בלארוס + בליז + קנדה + איי קוקס (קילינג) + קונגו - קינשאסה + קונגו (הרפובליקה הדמוקרטית של קונגו) + הרפובליקה של מרכז אפריקה + קונגו - ברזאויל + קונגו (רפובליקה) + שווייץ + חוף השנהב + איי קוק + צ׳ילה + קמרון + סין + קולומביה + האי קליפרטון + קוסטה ריקה + קובה + כף ורדה + קוראסאו + איי כריסטמס + קפריסין + צ׳כיה + גרמניה + דייגו גרסיה + ג׳יבוטי + דנמרק + דומיניקה + הרפובליקה הדומיניקנית + אלג׳יריה + סאוטה ומלייה + אקוודור + אסטוניה + מצרים + סהרה המערבית + אריתריאה + ספרד + אתיופיה + האיחוד האירופי + פינלנד + פיג׳י + איי פוקלנד + איי פוקלנד (איי מלווינס) + מיקרונזיה + איי פארו + צרפת + גאבון + הממלכה המאוחדת + בריטניה + גרנדה + גאורגיה + גיאנה הצרפתית + גרנסי + גאנה + גיברלטר + גרינלנד + גמביה + גיניאה + גוואדלופ + גיניאה המשוונית + יוון + ג׳ורג׳יה הדרומית ואיי סנדוויץ׳ הדרומיים + גואטמלה + גואם + גיניאה-ביסאו + גיאנה + הונג קונג - מחוז מנהלי מיוחד של סין + הונג קונג + איי הרד ואיי מקדונלנד + הונדורס + קרואטיה + האיטי + הונגריה + האיים הקנריים + אינדונזיה + אירלנד + ישראל + האי מאן + הודו + טריטוריה בריטית באוקיאנוס ההודי + עיראק + איראן + איסלנד + איטליה + ג׳רסי + ג׳מייקה + ירדן + יפן + קניה + קירגיזסטן + קמבודיה + קיריבאטי + קומורוס + סנט קיטס ונוויס + קוריאה הצפונית + קוריאה הדרומית + כווית + איי קיימן + קזחסטן + לאוס + לבנון + סנט לוסיה + ליכטנשטיין + סרי לנקה + ליבריה + לסוטו + ליטא + לוקסמבורג + לטביה + לוב + מרוקו + מונקו + מולדובה + מונטנגרו + סנט מרטין + מדגסקר + איי מרשל + מקדוניה + מקדוניה (הרפובליקה היוגוסלבית לשעבר מקדוניה) + מאלי + מיאנמאר (בורמה)‎ + מונגוליה + מקאו - מחוז מנהלי מיוחד של סין + מקאו + איי מריאנה הצפוניים + מרטיניק + מאוריטניה + מונסראט + מלטה + מאוריציוס + האיים המלדיביים + מלאווי + מקסיקו + מלזיה + מוזמביק + נמיביה + קלדוניה החדשה + ניז׳ר + איי נורפוק + ניגריה + ניקרגואה + הולנד + נורווגיה + נפאל + נאורו + ניווה + ניו זילנד + עומאן + פנמה + פרו + פולינזיה הצרפתית + פפואה גיניאה החדשה + פיליפינים + פקיסטן + פולין + סנט פייר ומיקלון + איי פיטקרן + פורטו ריקו + השטחים הפלסטיניים + פלסטין + פורטוגל + פאלאו + פרגוואי + קטאר + אוקיאניה פרושה + ראוניון + רומניה + סרביה + רוסיה + רואנדה + ערב הסעודית + איי שלמה + איי סיישל + סודן + שוודיה + סינגפור + סנט הלנה + סלובניה + סוולבארד ויאן מאיין + סלובקיה + סיירה לאונה + סן מרינו + סנגל + סומליה + סורינם + דרום סודן + סאו טומה ופרינסיפה + אל סלבדור + סינט מארטן + סוריה + סווזילנד + טריסטן דה קונה + איי טורקס וקאיקוס + צ׳אד + טריטוריות דרומיות של צרפת + טוגו + תאילנד + טג׳יקיסטן + טוקלאו + טימור לסטה + מזרח טימור + טורקמניסטן + תוניסיה + טונגה + טורקיה + טרינידד וטובגו + טובלו + טייוואן + טנזניה + אוקראינה + אוגנדה + איים לחוף ארצות הברית + ארצות הברית + ארה״ב + אורוגוואי + אוזבקיסטן + הוותיקן + סנט וינסנט והגרנדינים + ונצואלה + איי הבתולה הבריטיים + איי הבתולה האמריקניים + וייטנאם + ונואטו + איי ווליס ופוטונה + סמואה + קוסובו + תימן + מאיוט + דרום אפריקה + זמביה + זימבאבווה + אזור לא ידוע + + + כתיב גרמני מסורתי + מזרח ארמנית + מערב ארמנית + מונוטונית + פיניין, שיטת כתב סיני בתעתיק לטיני + מחשב + אנגלית סקוטית סטנדרטית + ווייד-גיילס, שיטה לתעתוק סינית לאותיות לטיניות + + + לוח שנה + התעלם מסמלים במיון + מיון לפי הטעמות בסדר הפוך + סידור לפי אותיות רישיות/קטנות + מיון תלוי רישיות + מיון קאנה + סדר מיון + מיון מנורמל + מיון לפי מספרים + עוצמת המיון + מטבע + מספרים + אזור זמן + משתנה אזור + מיין כסמלים + שימוש פרטי + + + ספרות הודו-ערביות + ספרות הודיות-ערביות + מספרים ארמניים + מספרים ארמניים קטנים + ספרות בנגליות + מיון סינית מסורתית + לוח שנה בודהיסטי + לוח שנה סיני + לוח שנה קופטי + מספרים של דוונגארי + סדר מיון במילון + סדר מיון Unicode המוגדר כברירת מחדל + מספרים אתיופיים + לוח השנה האתיופי + לוח השנה אמטה אלם האתיופי + ספרות פיננסיות + ספרות ברוחב מלא + מיון סינית מודרנית + מספרים גיאורגיים + לוח שנה גרגוריאני + מספרים יווניים + מספרים יווניים קטנים + מספרים בגוג׳רטי + מספרים גורמוקיים + מערכת המספרים העשרונית הסינית + מספרים בסינית פשוטה + מספרים פיננסיים בסינית פשוטה + מספרים בסינית מסורתית + מספרים פיננסיים בסינית מסורתית + ספרות עבריות + לוח שנה עברי + מיין הכל + לוח השנה ההודי הלאומי + לוח שנה מוסלמי + לוח שנה מוסלמי-אזרחי + לוח שנה מוסלמי-אסטרולוגי + לוח שנה יפני + מספרים יפניים + מספרים פיננסיים יפניים + ספרות חמריות + מספרים של קאנאדה + מספרים של לאוס + ספרות מערביות + מיין תחילה לפי אותיות קטנות + מספרים של מליאלאם + ספרות מונגוליות + ספרות של מיאנמר + ספרות מקומיות + מיין הטעמות בצורה רגילה + מיין לפי סדר רישיות רגיל + מיין באופן שאינו תלוי רישיות + מיין קאנה בנפרד + מיין ללא נורמליזציה + מיין ספרות בנפרד + מיין סמלים + ספרות אוריה + לוח השנה הפרסי + מיון ספר טלפונים + סדר מיון פונטי + מיון פיניין + מיין תוך התעלמות מהטעמות + מיין לפי הטעמות/רישיות/רוחב/קאנה + סדר מיון מתוקן + לוח השנה הסיני Minguo + מספרים רומיים + מספרים רומיים קטנים + חיפוש למטרה כללית + חפש לפי העיצור הראשון באותיות הנגול + מיין לפי הטעמות + מיין תוך התעלמות מסמלים + סדר מיון רגיל + סדר מיון לפי ספירת תווים + מספרים טמיליים + ספרות טמיליות + ספרות טלוגו + מיין הטעמות/רישיות/רוחב + ספרות תאילנדיות + מספרים טיבטיים + מיון מסורתי + ספרות מסורתיות + סדר מיון לפי ספירת תווים Radical-Stroke + מיין תחילה לפי אותיות רישיות + ספרות ואי + מיין לפי הטעמות בסדר הפוך + מיין באופן תלוי רישיות + מיין קאנה אחרת + מיין לפי Unicode מנורמל + מיין ספרות לפי סדר מספרי + + + מטבע BGN + מספרי + טון + UNGEGN + סימנים דיאקריטיים + רוחב מלא + חצי רוחב + ג׳אמו + פיניין + הוצאה לאור + + + מטרי + אימפריאלי + ארה״ב + + + שפה:‏ {0} + כתב: {0} + אזור: {0} + + + + + right-to-left + + + + [א ב ג ד ה ו ז ח ט י כ ך ל מ ם נ ן ס ע פ ף צ ץ ק ר ש ת] + [\u05BD\u05C4\u200E\u200F \u05B0 \u05B1 \u05B2 \u05B3 \u05B4 \u05B5 \u05B6 \u05B7 \u05B8 \u05B9 \u05BB \u05C2 \u05C1 \u05BC \u05BF ״] + [א ב ג ד ה ו ז ח ט י כ ל מ נ ס ע פ צ ק ר ש ת] + [\- ‐ – — , ; \: ! ? . ' " ( ) \[ \] / ־ ׳ ״] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + ״ + ״ + ׳ + ׳ + + + + + + + + EEEE, d בMMMM y G + + + + + d בMMMM y G + + + + + d בMMM y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E ה-d + y G + MMM y G + d בMMM y G + E, d בMMM y G + ‏h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d בMMM + E, d בMMM + mm:ss + y G + y G + M.y G + d.M.y G + E, d/M/y G + MM/y G + MMM y G + d בMMM y G + E, d בMMM y G + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + EEEE dd/MM – EEEE dd/MM + EEEE dd/MM – EEEE dd/MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + EEEE d MMM – EEEE d MMM + EEEE d MMM – EEEE d MMM + + + LLLL–LLLL + + + y–y + + + MM/y – MM/y + MM/y – MM/y + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + EEEE dd/MM/y – EEEE dd/MM/y + EEEE dd/MM/y – EEEE dd/MM/y + EEEE dd/MM/y – EEEE dd/MM/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + EEEE d MMM – EEEE d MMM y + EEEE d MMM – EEEE d MMM y + EEEE d MMM y – EEEE d MMM y + + + MMMM–MMMM y + MMMM y–MMMM y + + + + + + + + + ינו׳ + פבר׳ + מרץ + אפר׳ + מאי + יוני + יולי + אוג׳ + ספט׳ + אוק׳ + נוב׳ + דצמ׳ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ינואר + פברואר + מרץ + אפריל + מאי + יוני + יולי + אוגוסט + ספטמבר + אוקטובר + נובמבר + דצמבר + + + + + ינו׳ + פבר׳ + מרץ + אפר׳ + מאי + יוני + יולי + אוג׳ + ספט׳ + אוק׳ + נוב׳ + דצמ׳ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ינואר + פברואר + מרץ + אפריל + מאי + יוני + יולי + אוגוסט + ספטמבר + אוקטובר + נובמבר + דצמבר + + + + + + + יום א׳ + יום ב׳ + יום ג׳ + יום ד׳ + יום ה׳ + יום ו׳ + שבת + + + א׳ + ב׳ + ג׳ + ד׳ + ה׳ + ו׳ + ש׳ + + + א׳ + ב׳ + ג׳ + ד׳ + ה׳ + ו׳ + ש׳ + + + יום ראשון + יום שני + יום שלישי + יום רביעי + יום חמישי + יום שישי + יום שבת + + + + + א׳ + ב׳ + ג׳ + ד׳ + ה׳ + ו׳ + ש׳ + + + א׳ + ב׳ + ג׳ + ד׳ + ה׳ + ו׳ + ש׳ + + + יום ראשון + יום שני + יום שלישי + יום רביעי + יום חמישי + יום שישי + יום שבת + + + + + + + רבעון 1 + רבעון 2 + רבעון 3 + רבעון 4 + + + 1 + 2 + 3 + 4 + + + רבעון 1 + רבעון 2 + רבעון 3 + רבעון 4 + + + + + רבעון 1 + רבעון 2 + רבעון 3 + רבעון 4 + + + ר1 + ר2 + ר3 + ר4 + + + רבעון 1 + רבעון 2 + רבעון 3 + רבעון 4 + + + + + + + לפנה״צ + אחה״צ + + + + + + לפני הספירה + לספירה + + + לפנה״ס + BCE + לסה״נ + CE + + + + + + EEEE, d בMMMM y + + + + + d בMMMM y + + + + + d בMMM y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} בשעה {0} + + + + + {1} בשעה {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E ה-d + E h:mm a + E H:mm + E h:mm:ss a + E H:mm:ss + y G + MMM y G + d בMMM y G + E, d בMMM y G + ‏h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d בMMM + E, d בMMM + mm:ss + y + M.y + d.M.y + E, d/M/y + MM/y + MMM y + d בMMM y + E, d בMMM y + MMMM y + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + H–H + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + H:mm–H:mm + H:mm–H:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + H:mm–H:mm v + H:mm–H:mm v + + + h a – h a v + h–h a v + + + H–H v + + + M–M + + + d.M–d.M + d.M–d.M + + + EEEE d.M–EEEE d.M + EEEE d.M – EEEE d.M + + + MMM–MMM + + + d–d MMM + d MMM–d MMM + + + EEEE d MMM – EEEE d MMM + EEEE d MMM – EEEE d MMM + + + LLLL–LLLL + + + y–y + + + M.y–M.y + M.y‏-M.y + + + dd.M.y – dd.M.y + d.M.y – d.M.y + d.M.y – d.M.y + + + EEEE d.M.y – EEEE d.M.y + EEEE d.M.y – EEEE d.M.y + EEEE d.M.y – EEEE d.M.y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + EEEE d MMM – EEEE d MMM y + EEEE d MMM – EEEE d MMM y + EEEE d MMM y – EEEE d MMM y + + + MMMM–MMMM y + MMMM y–MMMM y + + + + + + + + + תשרי + חשון + כסלו + טבת + שבט + אדר א׳ + אדר + אדר ב׳ + ניסן + אייר + סיון + תמוז + אב + אלול + + + תש + חש + כס + טב + שב + אא + אד + א2 + ני + אי + סי + תמ + אב + אל + + + תשרי + חשון + כסלו + טבת + שבט + אדר א׳ + אדר + אדר ב׳ + ניסן + אייר + סיון + תמוז + אב + אלול + + + + + תשרי + חשוון + כסלו + טבת + שבט + אדר א׳ + אדר + אדר ב׳ + ניסן + אייר + סיון + תמוז + אב + אלול + + + תש + חש + כס + טב + שב + אא + אד + א2 + ני + אי + סי + תמ + אב + אל + + + תשרי + חשון + כסלו + טבת + שבט + אדר א׳ + אדר + אדר ב׳ + ניסן + אייר + סיון + תמוז + אב + אלול + + + + + + לבה״ע + + + + + + EEEE, d בMMMM y + + + + + d בMMMM y + + + + + d בMMMM y + + + + + d בMMMM y + + + + + + E ה-d + y G + MMMM y G + d MMMM y G + E, d MMMM y G + MMMM + d בMMMM + E, d בMMMM + MMMM + d בMMMM + E, d בMMMM + d בMMMM + E, d בMMMM + mm:ss + y + y + MMMM y + d בMMMM y + E, d בMMMM y + MMMM y + d בMMMM y + E, d בMMMM y + MMMM y + QQQ y + QQQQ y + + + {0} – {1} + + H – H + H–H + + + H:mm – H:mm + H:mm–H:mm + H:mm–H:mm + + + H:mm – H:mm v + H:mm–H:mm v + H:mm–H:mm v + + + H – H v + H–H v + + + d בMMMM – d בMMMM + d בMMMM – d בMMMM + + + E d בMMMM – E d בMMMM + E d בMMMM – E d בMMMM + + + MMMM–MMMM + + + d–d בMMMM + d בMMMM – d בMMMM + + + E d בMMMM – E d בMMMM + E d בMMMM – E d בMMMM + + + MMMM y – MMMM y + MMMM y – MMMM y + + + d בMMMM y – d בMMMM y + d בMMMM y – d בMMMM y + d בMMMM y – d בMMMM y + + + E d בMMMM y – E d בMMMM y + E d בMMMM y – E d בMMMM y + E d בMMMM y – E d בMMMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + d–d בMMMM y + d בMMMM – d בMMMM y + d בMMMM y – d בMMMM y + + + E d בMMMM – E d בMMMM y + E d בMMMM – E d בMMMM y + E d בMMMM y – E d בMMMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + מוחרם + צפר + רביע א׳ + רביע ב׳ + ג׳ומאדא א׳ + ג׳ומאדא ב׳ + רג׳ב + שעבאן + רמדאן + שוואל + ד׳ו אל-קעדה + ד׳ו אל-חיג׳ה + + + מוחרם + צפר + רביע אל-אוול + רביע א-ת׳אני + ג׳ומאדא אל-אולא + ג׳ומאדא א-ת׳אניה + רג׳ב + שעבאן + רמדאן + שוואל + ד׳ו אל-קעדה + ד׳ו אל-חיג׳ה + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + שנת היג׳רה + + + + + d + E ה-d + y G + MMM y G + d בMMM y G + E, d בMMM y G + h a + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + d/M + E, d/M + d בMMM + E, d בMMM + y G + y G + M/y + d.M.y G + E, d.M.y + MMM y + d בMMM y + E, d בMMM y + QQQ y + QQQQ y + + + + + + + טאיקה + נינג׳ו + שוטוקו + + + + + + + תקופה + + + שנה + השנה שעברה + השנה + השנה הבאה + + בעוד שנה {0} + בעוד {0} שנים + בעוד {0} שנים + בעוד {0} שנים + + + לפני שנה {0} + לפני {0} שנים + לפני {0} שנים + לפני {0} שנים + + + + חודש + החודש שעבר + החודש + החודש הבא + + בעוד חודש {0} + בעוד {0} חודשים + בעוד {0} חודשים + בעוד {0} חודשים + + + לפני חודש {0} + לפני {0} חודשים + לפני {0} חודשים + לפני {0} חודשים + + + + שבוע + השבוע שעבר + השבוע + השבוע הבא + + בעוד שבוע {0} + בעוד {0} שבועות + בעוד {0} שבועות + בעוד {0} שבועות + + + לפני שבוע {0} + לפני {0} שבועות + לפני {0} שבועות + לפני {0} שבועות + + + + יום + שלשום + אתמול + היום + מחר + מחרתיים + + בעוד יום {0} + בעוד {0} ימים + בעוד {0} ימים + בעוד {0} ימים + + + לפני יום {0} + לפני {0} ימים + לפני {0} ימים + לפני {0} ימים + + + + יום בשבוע + + + יום ראשון שעבר + יום ראשון + יום ראשון הבא + + + יום שני שעבר + יום שני הזה + יום שני הבא + + + יום שלישי שעבר + יום שלישי + יום שלישי הבא + + + יום רביעי שעבר + יום רביעי + יום רביעי הבא + + + יום חמישי שעבר + יום חמישי + יום חמישי הבא + + + יום שישי שעבר + יום שישי + יום שישי הבא + + + השבת שעברה + השבת הזאת + השבת הבאה + + + לפנה״צ/אחה״צ + + + שעה + + בעוד שעה {0} + בעוד {0} שעות + בעוד {0} שעות + בעוד {0} שעות + + + לפני שעה {0} + לפני {0} שעות + לפני {0} שעות + לפני {0} שעות + + + + דקה + + בעוד דקה {0} + בעוד {0} דקות + בעוד {0} דקות + בעוד {0} דקות + + + לפני דקה {0} + לפני {0} דקות + לפני {0} דקות + לפני {0} דקות + + + + שנייה + עכשיו + + בעוד שנייה {0} + בעוד {0} שניות + בעוד {0} שניות + בעוד {0} שניות + + + לפני שנייה {0} + לפני {0} שניות + לפני {0} שניות + לפני {0} שניות + + + + אזור + + + + +HH:mm;-HH:mm + GMT{0} + GMT + שעון {0} + שעון {0} (קיץ) + שעון {0} (חורף) + {1} ({0}) + + עיר לא ידועה + + + אנדורה + + + דובאי + + + קאבול + + + אנטיגואה + + + אנגווילה + + + טיראנה + + + ירוואן + + + לואנדה + + + רות׳רה + + + אמריקה/פאלמר + + + שויה + + + מאוסון + + + דייויס + + + ווסטוק + + + קאסיי + + + דומון ד׳אורווי + + + מקמרדו + + + ריו גאייגוס + + + אמריקה/מנדוזה + + + אמריקה/ארגנטינה/סאן-חואן + + + אושוואיה + + + לה ריוחה + + + סן לואיס + + + קטמרקה + + + סלטה + + + חוחוי + + + טוקומן + + + אמריקה/קורדובה + + + בואנוס איירס + + + פאגו פאגו + + + וינה + + + אוסטרליה/פרת׳ + + + יוקלה + + + אוסטרליה/דרווין + + + אדלייד + + + אוסטרליה/ברוקן-היל + + + קרי + + + אוסטרליה/מלבורן + + + אוסטרליה/הוברט + + + לינדמן + + + אוסטרליה/סידני + + + אוסטרליה/בריסבן + + + מקרי + + + לורד האו + + + ארובה + + + מריהמן + + + באקו + + + סרייבו + + + ברבדוס + + + דאקה + + + בריסל + + + וואגאדוגו + + + סופיה + + + בחריין + + + בוג׳ומבורה + + + פורטו נובו + + + סנט ברתלמי + + + ברמודה + + + ברוניי + + + לה פאס + + + קרלנדייק + + + אירונפי + + + ריאו ברנצ׳ו + + + פורטו וולהו + + + בואה ויסטה + + + מנאוס + + + קויאבה + + + סנטרם + + + קמפו גרנדה + + + בלם + + + אראגואינה + + + אמריקה/סאן-פאולו + + + אמריקה/בהיאה + + + פורטאלזה + + + מאסיו + + + רסיפה + + + נורונהה + + + נסאו + + + ת׳ימפו + + + גבורונה + + + מינסק + + + בליז + + + דאוסון + + + ווייטהורס + + + אינוויק + + + אמריקה/ונקובר + + + אמריקה/דוסון-קריק + + + קרסטון + + + ילונייף + + + אמריקה/אדמנטון + + + סוויפט קרנט + + + קיימברידג׳ ביי + + + רג׳ינה + + + אמריקה/וויניפוג + + + רזולוט + + + רייני ריבר + + + רנקין אינלט + + + אטיקוקן + + + ת׳אנדר ביי + + + ניפיגון + + + אמריקה/טורנטו + + + איקלואיט + + + פנגנירטונג + + + מונקטון + + + אמריקה/הליפקס + + + גוס ביי + + + גלייס ביי + + + בלאן-סבלון + + + סנט ג׳ונס + + + קוקוס + + + קינשסה + + + לובומבאשי + + + בנגואי + + + ברזוויל + + + ציריך + + + אביג׳אן + + + רארוטונגה + + + איי הפסחא + + + אמריקה/סנטיאגו + + + דואלה + + + קשגר + + + אורומקי + + + צ׳ונגקינג + + + אסיה/שנחאי + + + חרבין + + + בוגוטה + + + קוסטה ריקה + + + הוואנה + + + כף ורדה + + + קוראסאו + + + קריסמס + + + ניקוסיה + + + פראג + + + בוזינגן + + + ברלין + + + ג׳יבוטי + + + קופנהגן + + + דומיניקה + + + סנטו דומינגו + + + אלג׳יר + + + פסיפי/גלאפגוס + + + גואיאקיל + + + טלין + + + קהיר + + + אל עיון + + + אסמרה + + + אטלנטי/קנרי + + + סאוטה + + + אירופה/מדריד + + + אדיס אבבה + + + הלסינקי + + + פיג׳י + + + סטנלי + + + טרוק + + + פונפה + + + קוסרה + + + פארו + + + פריז + + + ליברוויל + + + + שעון קיץ בריטי + + אירופה/לונדון + + + גרנדה + + + טביליסי + + + קאיין + + + גרנזי + + + אקרה + + + גיברלטר + + + טולה + + + נואוק + + + סקורסביסונד + + + דנמרקסהוון + + + בנג׳ול + + + קונאקרי + + + גואדלופ + + + מלבו + + + אתונה + + + סאות׳ ג׳ורג׳יה + + + גואטמלה + + + גואם + + + ביסאו + + + גיאנה + + + הונג קונג + + + טגוסיגלפה + + + זגרב + + + פורט או פראנס + + + בודפשט + + + אסיה/ג׳קרטה + + + פונטיאנק + + + מאקאסאר + + + ג׳איאפורה + + + + שעון קיץ אירי + + דבלין + + + ירושלים + + + האי מאן + + + קולקטה + + + צ׳אגוס + + + בגדד + + + טהרן + + + רייקיאוויק + + + רומא + + + ג׳רסי + + + ג׳מייקה + + + עמאן + + + טוקיו + + + ניירובי + + + בישקק + + + פנום פן + + + אנדרבורי + + + קיריטימאטי + + + טאראווה + + + קומורו + + + סנט קיטס + + + פיונגיאנג + + + סיאול + + + כווית + + + קיימן + + + אקטאו + + + אסיה/אורל + + + אקטובה + + + קיזילורדה + + + אלמאטי + + + האנוי + + + ביירות + + + סנט לוסיה + + + ואדוז + + + קולומבו + + + מונרוביה + + + מסרו + + + וילנה + + + לוקסמבורג + + + ריגה + + + טריפולי + + + קזבלנקה + + + מונקו + + + צ׳יסינאו + + + פודגוריקה + + + מריגו + + + אנטננריבו + + + קוואג׳ליין + + + מאג׳ורו + + + סקופיה + + + במאקו + + + רנגון + + + חובד + + + אולאאנבטאר + + + צ׳ואיבלסאן + + + מקאו + + + סייפן + + + מרטיניק + + + נואקצ׳וט + + + מונסראט + + + מלטה + + + מאוריציוס + + + האיים המלדיביים + + + בלנטיר + + + טיחואנה + + + סנטה איסבל + + + ארמוסיו + + + אמריקה/מזטלן + + + צ׳יוואווה + + + באהיה בנדרס + + + אוג׳ינאגה + + + אמריקה/מונטריי + + + אמריקה/מקסיקו סיטי + + + מטמורוס + + + מרידה + + + אמריקה/קנקון + + + קואלה לומפור + + + קוצ׳ינג + + + מאפוטו + + + וינדהוק + + + נומאה + + + ניאמיי + + + נורפוק + + + לגוס + + + מנגואה + + + אמסטרדם + + + אוסלו + + + קטמנדו + + + נאורו + + + ניווה + + + צ׳אטהאם + + + פסיפי/אוקלנד + + + מוסקט + + + פנמה + + + לימה + + + פסיפי/טהיטי + + + איי מרקיז + + + איי גמביר + + + פורט מורסבי + + + מנילה + + + קרצ׳י + + + ורשה + + + מיקלון + + + פיטקרן + + + פוארטו ריקו + + + עזה + + + חברון + + + האיים האזורים + + + מדיירה + + + אירופה/ליסבון + + + פלאו + + + אסונסיון + + + קטאר + + + ראוניון + + + בוקרשט + + + בלגרד + + + קלינינגרד + + + אירופה/מוסקבה + + + וולגוגרד + + + אירופה/סמרה + + + יקטרינבורג + + + איה/אומסק + + + אסיה/נובוסיבירסק + + + נובוקוזנטסק + + + קרסנויארסק + + + אירקוטסק + + + יקוטסק + + + ולדיווסטוק + + + חנדיגה + + + סחלין + + + אוסט-נרה + + + מגדן + + + קמצ׳טקה + + + אנדיר + + + קיגלי + + + ריאד + + + גוודלקנאל + + + מהא + + + חרטום + + + שטוקהולם + + + סינגפור + + + סנט הלנה + + + לובליאנה + + + לונגיירביאן + + + ברטיסלבה + + + פריטאון + + + סן מרינו + + + דקאר + + + מוגדישו + + + פרמריבו + + + ג׳ובה + + + סאו טומה + + + אל סלבדור + + + לואוור פרינסס קוורטר + + + דמשק + + + אמבאבאנה + + + גרנד טורק + + + נג׳מנה + + + קרגוולן + + + לומה + + + בנגקוק + + + דושנבה + + + פקאופו + + + דילי + + + אשגבט + + + טוניס + + + טונגטפו + + + איסטנבול + + + פורט אוף ספיין + + + פונפוטי + + + טאיפיי + + + דאר א-סלאם + + + אוז׳הורוד + + + אירופה/קייב + + + סימפרופול + + + זפוריז׳יה + + + קמפאלה + + + מידוויי + + + ג׳ונסטון + + + וואק + + + אדאק + + + נום + + + פסיפי/הונולולו + + + אנקורג׳ + + + יקוטאט + + + סיטקה + + + ג׳ונו + + + מטלקטלה + + + אמריקה/לוס-אנג׳לס + + + בויסי + + + אמריקה/פיניקס + + + אמריקה/דנוור + + + ביולה, צפון דקוטה + + + ניו סיילם, צפון דקוטה + + + אמריקה/צפון דקוטה/מרכז + + + אמריקה/שיקגו + + + מנומיני + + + וינסנס, אינדיאנה + + + פיטרסבורג, אינדיאנה + + + טל סיטי, אינדיאנה + + + נוקס, אינדיאנה + + + וינמאק, אינדיאנה + + + מרנגו, אינדיאנה + + + אינדיאנפוליס + + + אמריקה/לואיסוויל + + + ויוואיי, אינדיאנה + + + מונטיצ׳לו, קנטאקי + + + אמריקה/דטרויט + + + אמריקה/ניו-יורק + + + מונטווידאו + + + אסיה/סמרקנד + + + אסיה/טשקנט + + + ותיקן + + + סנט וינסנט + + + קראקס + + + טורטולה + + + סנט תומאס + + + הו צ׳י מין סיטי + + + אפטה + + + ווליס + + + אפיה + + + עדן + + + מאיוט + + + יוהנסבורג + + + לוסקה + + + הרארה + + + + שעון אפגניסטן + + + + + שעון מרכז אפריקה + + + + + שעון מזרח אפריקה + + + + + שעון דרום אפריקה + + + + + שעון מערב אפריקה + שעון רגיל מערב אפריקה + שעון קיץ, מערב אפריקה + + + + + שעון אלסקה + שעון רגיל אלסקה + שעון קיץ אלסקה + + + + + שעון אזור האמזונס + שעון רגיל אזור האמזונס + שעון קיץ אזור האמזונס + + + + + שעון מרכז ארה״ב (אמריקה/שיקגו) + שעון רגיל מרכז ארה״ב + שעון קיץ, צפון אמריקה + + + + + שעון החוף המזרחי + שעון רגיל של החוף המזרחי + שעון קיץ מזרח ארה״ב + + + + + שעון אזור ההרים בארה״ב (דנוור) + שעון רגיל אזור ההרים + שעון קיץ, אזור ההרים בארה״ב + + + + + שעון מערב ארה״ב (לוס אנג׳לס) + שעון רגיל האוקיינוס השקט + שעון קיץ, מערב ארה״ב (לוס אנג׳לס) + + + + + שעון אנדיר + שעון רגיל אנדיר + שעון קיץ אנדיר + + + + + שעון חצי האי ערב + שעון רגיל חצי האי ערב + שעון קיץ חצי האי ערב + + + + + שעון ארגנטינה + שעון רגיל ארגנטינה + שעון קיץ ארגנטינה + + + + + שעון מערב ארגנטינה + שעון רגיל מערב ארגנטינה + שעון קיץ מערב ארגנטינה + + + + + שעון ארמניה + שעון רגיל ארמניה + שעון קיץ ארמניה + + + + + שעון אטלנטי + שעון אטלנטי תקני + שעון קיץ אטלנטי + + + + + שעון מרכז אוסטרליה + שעון רגיל מרכז אוסטרליה + שעון קיץ מרכז אוסטרליה + + + + + שעון מרכז-מערב אוסטרליה + שעון רגיל מרכז מערב אוסטרליה + שעון קיץ מרכז מערב אוסטרליה + + + + + שעון מזרח אוסטרליה + שעון רגיל מזרח אוסטרליה + שעון קיץ מזרח אוסטרליה + + + + + שעון מערב אוסטרליה + שעון רגיל מערב אוסטרליה + שעון קיץ מערב אוסטרליה + + + + + שעון אזרבייג׳אן + שעון רגיל אזרבייג׳אן + שעון קיץ אזרבייג׳אן + + + + + שעון אזורס + שעון רגיל אזורס + שעון קיץ אזורס + + + + + שעון בנגלדש + שעון רגיל בנגלדש + שעון קיץ בנגלדש + + + + + שעון בהוטן + + + + + שעון בוליביה + + + + + שעון ברזיליה + שעון רגיל ברזיליה + שעון קיץ ברזיליה + + + + + שעון ברוניי דארוסלאם + + + + + שעון קייפ ורדה + שעון רגיל קייפ ורדה + שעון קיץ קייפ ורדה + + + + + שעון צ׳אמורו + + + + + שעון צ׳טהאם + שעון רגיל צ׳טהאם + שעון קיץ צ׳טהאם + + + + + שעון צ׳ילה + שעון רגיל צ׳ילה + שעון קיץ צ׳ילה + + + + + שעון סין + שעון חורף סין + שעון קיץ סין + + + + + שעון צ׳ויבלסן + שעון רגיל צ׳ויבלסן + שעון קיץ צ׳ויבלסן + + + + + שעון אי חג המולד + + + + + שעון איי קוקוס + + + + + שעון קולומביה + שעון רגיל קולומביה + שעון קיץ קולומביה + + + + + שעון איי קוק + שעון רגיל איי קוק + שעון מחצית הקיץ איי קוק + + + + + שעון קובה + שעון רגיל קובה + שעון קיץ קובה + + + + + שעון דיוויס + + + + + שעון דומון ד׳אורוויל + + + + + שעון מזרח טימור + + + + + שעון אי הפסחא + שעון רגיל אי הפסחא + שעון קיץ אי הפסחא + + + + + שעון אקוודור + + + + + שעון מרכז אירופה + שעון רגיל מרכז אירופה + שעון קיץ מרכז אירופה + + + + + שעון מזרח אירופה + שעון רגיל מזרח אירופה + שעון קיץ מזרח אירופה + + + + + שעון מערב אירופה + שעון רגיל מערב אירופה + שעון קיץ מערב אירופה + + + + + שעון איי פוקלנד + שעון רגיל איי פוקלנד + שעון קיץ איי פוקלנד + + + + + שעון פיג׳י + שעון רגיל פיג׳י + שעון קיץ פיג׳י + + + + + שעון גיאנה הצרפתית + + + + + שעון דרום צרפת ואנטארקטיקה + + + + + שעון איי גלאפגוס + + + + + שעון גאמבייר + + + + + שעון גאורגיה + שעון רגיל גאורגיה + שעון קיץ גאורגיה + + + + + שעון איי גילברט + + + + + שעון גריניץ׳‏ + + + + + שעון מזרח גרינלנד + שעון רגיל מזרח גרינלנד + שעון קיץ מזרח גרינלנד + + + + + שעון מערב גרינלנד + שעון רגיל מערב גרינלנד + שעון קיץ מערב גרינלנד + + + + + שעון מדינות המפרץ + + + + + שעון גויאנה + + + + + שעון האיים האלאוטיים הוואי + שעון רגיל האיים האלאוטיים הוואי + שעון קיץ האיים האלאוטיים הוואי + + + + + שעון הונג קונג + שעון חורף הונג קונג + שעון קיץ הונג קונג + + + + + שעון חובד + שעון רגיל חובד + שעון קיץ חובד + + + + + שעון הודו + + + + + שעון האוקיינוס ההודי + + + + + שעון הודו-סין + + + + + שעון מרכז אינדונזיה + + + + + שעון מזרח אינדונזיה + + + + + שעון מערב אינדונזיה + + + + + שעון איראן + שעון רגיל איראן + שעון קיץ איראן + + + + + שעון אירקוטסק + שעון רגיל אירקוטסק + שעון קיץ אירקוטסק + + + + + שעון ישראל + שעון רגיל ישראל + שעון קיץ ישראל + + + + + שעון יפן + שעון חורף יפן + שעון קיץ יפן + + + + + שעון פטרופבלובסק-קמצ׳טסקי + שעון רגיל פטרופבלובסק-קמצ׳טסקי + שעון קיץ פטרופבלובסק-קמצ׳טסקי + + + + + שעון מזרח קזחסטן + + + + + שעון מערב קזחסטן + + + + + שעון קוריאה + שעון חורף קוריאה + שעון קיץ קוריאה + + + + + שעון קוסראה + + + + + שעון קרסנויארסק + שעון רגיל קרסנויארסק + שעון קיץ קרסנויארסק + + + + + שעון קירגיזסטן + + + + + שעון איי ליין + + + + + שעון של אי הלורד האו + שעון רגיל של אי הלורד האו + שעון קיץ של אי הלורד האו + + + + + שעון מקאו + שעון חורף מקאו + שעון קיץ מקאו + + + + + שעון מקווארי + + + + + שעון מגדן + שעון רגיל מגדן + שעון קיץ מגדן + + + + + שעון מלזיה + + + + + שעון האיים המלדיביים + + + + + שעון איי מרקיז + + + + + שעון איי מרשל + + + + + שעון מאוריציוס + שעון חורף מאוריציוס + שעון קיץ מאוריציוס + + + + + שעון מאוסון + + + + + שעון אולן בטור + שעון רגיל אולן בטור + שעון קיץ אולן בטור + + + + + שעון מוסקבה + שעון רגיל מוסקבה + שעון קיץ מוסקבה + + + + + שעון בורמה + + + + + שעון נאורו + + + + + שעון נפאל + + + + + שעון ניו-קלדוניה + שעון רגיל ניו-קלדוניה + שעון קיץ ניו-קלדוניה + + + + + שעון ניו זילנד + שעון רגיל ניו זילנד + שעון קיץ ניו זילנד + + + + + שעון ניופאונדלנד + שעון רגיל ניופאונדלנד + שעון קיץ ניופאונדלנד + + + + + שעון ניואה + + + + + שעון איי נורפולק + + + + + שעון פרננדו דה נורוניה + שעון רגיל פרננדו דה נורוניה + שעון קיץ פרננדו דה נורוניה + + + + + שעון נובוסיבירסק + שעון רגיל נובוסיבירסק + שעון קיץ נובוסיבירסק + + + + + שעון אומסק + שעון רגיל אומסק + שעון קיץ אומסק + + + + + שעון פקיסטן + שעון רגיל פקיסטן + שעון קיץ פקיסטן + + + + + שעון פלאו + + + + + שעון פפואה גיניאה החדשה + + + + + שעון פרגוואי + שעון רגיל פרגוואי + שעון קיץ פרגוואי + + + + + שעון פרו + שעון רגיל פרו + שעון קיץ פרו + + + + + שעון הפיליפינים + שעון רגיל פיליפינים + שעון קיץ הפיליפינים + + + + + שעון איי פיניקס + + + + + שעון סנט פייר ומיקלון + שעון רגיל סנט פייר ומיקלון + שעון קיץ סנט פייר ומיקלון + + + + + שעון פיטקרן + + + + + שעון פונאפי + + + + + שעון ראוניון + + + + + שעון רות׳רה + + + + + שעון סחלין + שעון רגיל סחלין + שעון קיץ סחלין + + + + + שעון סמרה + שעון רגיל סמרה + שעון קיץ סמרה + + + + + שעון סמואה + שעון רגיל סמואה + שעון קיץ סמואה + + + + + שעון איי סיישל + + + + + שעון סינגפור + + + + + שעון איי שלמה + + + + + שעון דרום ג׳ורג׳יה + + + + + שעון סורינאם + + + + + שעון סייווה + + + + + שעון טהיטי + + + + + שעון טאיפיי + שעון רגיל טאיפיי + שעון קיץ טאיפיי + + + + + שעון טג׳יקיסטן + + + + + שעון טוקלאו + + + + + שעון טונגה + שעון רגיל טונגה + שעון קיץ טונגה + + + + + שעון צ׳וק + + + + + שעון טורקמניסטן + שעון רגיל טורקמניסטן + שעון קיץ טורקמניסטן + + + + + שעון טובאלו + + + + + שעון אורוגוואי + שעון רגיל אורוגוואי + שעון קיץ אורוגוואי + + + + + שעון אוזבקיסטן + שעון רגיל אוזבקיסטן + שעון קיץ אוזבקיסטן + + + + + שעון ונואטו + שעון רגיל ונואטו + שעון קיץ ונואטו + + + + + שעון ונצואלה + + + + + שעון ולדיווסטוק + שעון רגיל ולדיווסטוק + שעון קיץ ולדיווסטוק + + + + + שעון וולגוגרד + שעון רגיל וולגוגרד + שעון קיץ וולגוגרד + + + + + שעון ווסטוק + + + + + שעון האי וייק + + + + + שעון וואליס ופוטונה + + + + + שעון יקוטסק + שעון רגיל יקוטסק + שעון קיץ יקוטסק + + + + + שעון יקטרינבורג + שעון רגיל יקטרינבורג + שעון קיץ יקטרינבורג + + + + + + latn + + latn + hebr + + + . + , + ; + % + ‎+ + ‎- + E + × + + + NaN + + + + + #,##0.### + + + + + ‏0 אלף + ‏0 אלף + ‏0 אלף + ‏0 אלף + ‏00 אלף + ‏00 אלף + ‏00 אלף + ‏00 אלף + ‏000 אלף + ‏000 אלף + ‏000 אלף + ‏000 אלף + ‏0 מיליון + ‏0 מיליון + ‏0 מיליון + ‏0 מיליון + ‏00 מיליון + ‏00 מיליון + ‏00 מיליון + ‏00 מיליון + ‏000 מיליון + ‏000 מיליון + ‏000 מיליון + ‏000 מיליון + ‏0 מיליארד + ‏0 מיליארד + ‏0 מיליארד + ‏0 מיליארד + ‏00 מיליארד + ‏00 מיליארד + ‏00 מיליארד + ‏00 מיליארד + ‏000 מיליארד + ‏000 מיליארד + ‏000 מיליארד + ‏000 מיליארד + ‏0 טריליון + ‏0 טריליון + ‏0 טריליון + ‏0 טריליון + ‏00 טריליון + ‏00 טריליון + ‏00 טריליון + ‏00 טריליון + ‏000 טריליון + ‏000 טריליון + ‏000 טריליון + ‏000 טריליון + + + + + ‏0 אלף + ‏0 אלף + ‏0 אלף + ‏0 אלף + ‏00 אלף + ‏00 אלף + ‏00 אלף + ‏00 אלף + ‏000 אלף + ‏000 אלף + ‏000 אלף + ‏000 אלף + ‏0 מיליון + ‏0 מיליון + ‏0 מיליון + ‏0 מיליון + ‏00 מיליון + ‏00 מיליון + ‏00 מיליון + ‏00 מיליון + ‏000 מיליון + ‏000 מיליון + ‏000 מיליון + ‏000 מיליון + 0B + 0B + 0B + 0B + 00B + 00B + 00B + 00B + 000B + 000B + 000B + 000B + 0T + 0T + 0T + 0T + 00T + 00T + 00T + 00T + 000T + 000T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + פזטה אנדורית + + + דירהם של איחוד הנסיכויות הערביות + + + אפגני אפגני + + + לק אלבני + + + דראם ארמני + + + גילדן של האנטילים ההולנדיים + + + קואנזה אנגולי + + + קואנזה חדש אנגולי (1990–2000) + + + קואנזה רג׳וסטדו אנגולי (1995–1999) + + + פזו ארגנטינאי (1983–1985) + + + פזו ארגנטינאי + + + שילינג אוסטרי + + + דולר אוסטרלי + A$ + + + פלורין של ארובה + + + מנאט אזרביג׳אני (1993–2006) + + + מאנאט אזרביג׳ני + + + דינר של בוסניה־הרצגובינה + + + מארק בר המרה של בוסניה־הרצגובינה + + + דולר ברבדיאני + + + טאקה בנגלדשי + + + פרנק בלגי (בר המרה) + + + פרנק בלגי + + + לב בולגרי ישן + + + לב בולגרי + + + דינר בחרייני + + + פרנק בורונדי + + + דולר ברמודה + דולר ברמודה + דולר ברמודה + דולר ברמודה + דולר ברמודה + + + דולר ברוניי + + + בוליביאנו + + + פזו בוליבי + + + קרוזיארו חדש ברזילאי (1967–1986) + + + קרוזדו ברזילאי + + + ריאל ברזילאי + R$ + + + דולר בהאמי + + + נגולטרום בהוטני + + + פולה בוצוואני + + + רובל בלרוסי + + + דולר בליזי + דולר בליזי + דולר בליזי + דולר בליזי + דולר בליזי + + + דולר קנדי + דולר קנדי + דולר קנדי + דולר קנדי + דולר קנדי + CA$ + + + פרנק קונגולזי + + + פרנק שוויצרי + + + פזו צ׳ילאני + + + יואן רנמינבי סיני + יואן רנמינבי סיני + יואן רנמינבי סיני + יואן רנמינבי סיני + יואן רנמינבי סיני + CN¥ + + + פזו קולומביאני + + + קולון קוסטה־ריקני + קולון קוסטה־ריקני + קולון קוסטה־ריקני + קולון קוסטה־ריקני + קולון קוסטה־ריקני + + + דינר סרבי ישן + + + פזו קובני להמרה + + + פזו קובני + + + אסקודו כף ורדה + + + לירה קפריסאית + + + קורונה צ׳כית + + + מרק מזרח גרמני + + + מרק גרמני + + + פרנק ג׳יבוטי + + + כתר דני + + + פזו דומיניקני + + + דינר אלג׳ירי + + + סוקר אקואדורי + + + קרון אסטוני + + + לירה מיצרית + + + נאקפה אריתראי + + + פזטה [ESA] + + + פזטה [ESB] + + + פסטה ספרדי + + + ביר אתיופי + + + אירו + + + + מרק פיני + + + דולר פיג׳י + + + לירה של איי פוקלנד + + + פרנק צרפתי + + + לירה שטרלינג + £ + + + לרי גאורגי + + + סדי גאני + + + פאונד גיברלטר + + + דלאסי גמבי + + + פרנק גינאי + + + דרכמה + + + קצל גואטמלי + קצל גואטמלי + קצל גואטמלי + קצל גואטמלי + קצל גואטמלי + + + פזו גינאי + + + דולר גיאני + + + דולר הונג קונגי + HK$ + + + למפירה הונדורי + למפירה הונדורי + למפירה הונדורי + למפירה הונדורי + למפירה הונדורי + + + קונה קרואטי + + + גארד האיטי + + + פורינט הונגרי + + + רופיה אינדונזית + רופיה אינדונזית + רופיה אינדונזית + רופיה אינדונזית + רופיה אינדונזית + + + לירה אירית + + + לירה ישראלית + ל״י + + + ש״ח + שקלים חדשים + שקלים חדשים + שקלים חדשים + שקלים חדשים + + + + רופי הודית + רופי הודית + רופי הודית + רופי הודית + רופי הודית + + + + דינר עירקי + + + ריאל איראני + + + קרונה איסלנדית + + + לירה איטלקית + + + דולר ג׳מאיקני + + + דינר ירדני + + + ין יפני + JP¥ + + + שילינג קנייאתי + + + סום קירגיזי + + + ריל קמבודי + + + פרנק קומורואי + + + וון צפון קוראני + + + וון דרום קוראני + + + + דינר כוויתי + + + דולר קיימאני + + + טנגה קזחסטני + + + קיפ לאי + + + לירה לבנונית + + + רופי סרי לנקי + + + דולר ליברי + + + לוטי לסותי + + + ליטא ליטאי + + + פרנק לוקסמבורגי + + + לט לטבי + + + דינר לובי + + + דירהם מרוקאי + + + פרנק מרוקאי + + + ליאו מולדובני + + + אריארי מלגשי + + + פרנק מדגסקארי + + + דינר מקדוני + + + קיאט מיאנמרי + + + טוגריק מונגולי + + + פטקה של מקאו + + + אוגוויה מאוריטני + + + לירה מלטית + + + רופי מאוריציני + + + רופיה מלדיבית + + + קואצ׳ה מלאוי + + + פזו מקסיקני + פזו מקסיקני + פזו מקסיקני + פזו מקסיקני + פזו מקסיקני + MX$ + + + פזו מקסיקני (1861 – 1992) + + + רינגיט מלזי + + + אסקודו מוזמביקי + אסקודו מוזמביקי + אסקודואים מוזמביקיים + אסקודו מוזמביקי + אסקודואים מוזמביקיים + + + מטיקל + + + מטיקל מוזמביני + מטיקל מוזמביני + מטיקל מוזמביני + מטיקל מוזמביני + מטיקל מוזמביני + + + דולר נמיבי + + + נאירה ניגרי + + + קורדובה ניקראגי + קורדובה ניקראגי + קורדובה ניקראגי + קורדובה ניקראגי + קורדובה ניקראגי + + + גילדן הולנדי + + + כתר נורבגי + + + רופי נפאלי + + + דולר ניו זילנדי + NZ$ + + + ריאל עומאני + + + בלבואה פנמי + + + סול פרואני חדש + + + קינה של פפואה גינאה החדשה + + + פזו פיליפיני + + + רופי פקיסטני + + + זלוטי פולני + + + זלוטי (1950 – 1995) + + + אסקודו פורטוגלי + + + גוורני פראגוואי + + + ריאל קטארי + + + לאו רומני ישן + + + לאו רומני חדש + + + דינר סרבי + + + רובל + + + רובל רוסי (1991 – 1998) + + + פרנק רואנדי + + + ריאל סעודי + + + דולר איי שלמה + + + רופי סיישלי + + + דינר סודני + + + לירה סודנית + + + לירה סודנית (1957–1998) + + + כתר שוודי + + + דולר סינגפורי + + + פאונד סנט הלני + + + טולאר סלובני + + + קורונה סלובקי + + + ליאון סיירה לאוני + + + שילינג סומאלי + + + דולר סורינאמי + + + גילדר סורינאמי + + + לירה דרום סודאנית + לירה דרום סודאנית + לירה דרום סודאנית + לירה דרום סודאנית + לירה דרום סודאנית + + + דוברה של סן טומה ופרינסיפה + + + רובל סובייטי + + + קולון סלבדורי + קולון סלבדורי + קולונים סלבדוריים + קולון סלבדורי + קולונים סלבדוריים + + + לירה סורית + + + לילנגני סווזי + + + בהט תאילנדי + ฿ + + + סומוני טג׳קיסטני + + + מנאט טורקמאני + + + מנאט טורקמני + + + דינר טוניסאי + + + פאאמגה טונגי + + + אסקודו טימוראי + + + לירה טורקית + + + לירה טורקית חדשה + לירה טורקית חדשה + לירה טורקית חדשה + לירה טורקית חדשה + לירה טורקית חדשה + + + דולר טרינידדי + + + דולר טייוואני חדש + דולר טאייוני חדש + דולר טאייוני חדש + דולר טאייוני חדש + דולר טאייוני חדש + NT$ + + + שילינג טנזני + + + גריבנה אוקראיני + + + שילינג אוגנדי (1966 – 1987) + + + שילינג אוגנדי + + + דולר אמריקאי + דולר אמריקאי + דולר אמריקאי + דולר אמריקאי + דולר אמריקאי + US$ + + + דולר אמריקאי (היום הבא) + + + דולר אמריקאי (היום הזה) + + + פזו אורוגוואי + + + סום אוזבקי + + + בוליבר ונצואלי (1871–2008) + + + בוליבר ונצואלי + + + דונג וייטנאמי + + + + ואטו של ונואטו + + + טאלה סמואי + + + פרנק CFA BEAC + FCFA + + + כסף + + + זהב + + + דולר מזרח קריבי + EC$ + + + זכויות משיכה מיוחדות + + + פרנק זהב + + + פרנק CFA BCEAO + CFA + + + פלדיום + + + פרנק CFP + CFPF + + + פלטינה + + + סימון למטרות בדיקה + + + מטבע שאינו ידוע + + + דינר תימני + + + ריאל תימני + + + דינר יגוסלבי חדש + + + דינר יגוסלבי + + + ראנד דרום אפריקאי (כספי) + + + ראנד דרום אפריקאי + + + קוואצ׳ה זמבית (1968–2012) + + + קוואצ׳ה זמבית + + + זאיר חדש + + + דולר זימבבואי + + + + ⩾{0}+ + {0}-{1} + + + + + + {0} לכל {1} + + + כוח ג׳י {0} + {0} כוח ג׳י + {0} כוח ג׳י + {0} כוח ג׳י + + + דקה {0} + {0} דקות + {0} דקות + {0} דקות + + + שנייה {0} + {0} שניות + {0} שניות + {0} שניות + + + מעלה {0} + {0} מעלות + {0} מעלות + {0} מעלות + + + אקר {0} + {0} אקר + {0} אקר + {0} אקר + + + הקטאר {0} + {0} הקטאר + {0} הקטאר + {0} הקטאר + + + רגל רבועה {0} + {0} רגל רבועה + {0} רגל רבועה + {0} רגל רבועה + + + קילומטר רבוע {0} + {0} קילומטר רבוע + {0} קילומטר רבוע + {0} קילומטר רבוע + + + מטר רבוע {0} + {0} מטר רבוע + {0} מטר רבוע + {0} מטר רבוע + + + מייל רבוע {0} + {0} מייל רבוע + {0} מייל רבוע + {0} מייל רבוע + + + ‏יום {0} + {0} ימים + {0} ימים + {0} ימים + + + שעה {0} + {0} שעות + {0} שעות + {0} שעות + + + אלפית שנייה {0} + {0} אלפיות שנייה + {0} אלפיות שנייה + {0} אלפיות שנייה + + + דקה {0} + {0} דקות + {0} דקות + {0} דקות + + + חודש {0} + {0} חודשים + {0} חודשים + {0} חודשים + + + שנייה {0} + {0} שניות + ‏{0} שניות + {0} שניות + + + שבוע {0} + {0} שבועות + {0} שבועות + {0} שבועות + + + שנה {0} + {0} שנים + {0} שנים + {0} שנים + + + סנטימטר {0} + {0} סנטימטר + {0} סנטימטר + {0} סנטימטר + + + רגל {0} + {0} רגל + {0} רגל + {0} רגל + + + אינץ׳ {0} + {0} אינץ׳ + {0} אינץ׳ + {0} אינץ׳ + + + קילומטר {0} + {0} קילומטר + {0} קילומטר + {0} קילומטר + + + שנת אור {0} + {0} שנות אור + {0} שנות אור + {0} שנות אור + + + מטר {0} + {0} מטר + {0} מטר + {0} מטר + + + מייל {0} + {0} מייל + {0} מייל + {0} מייל + + + מילימטר {0} + {0} מילימטר + {0} מילימטר + {0} מילימטר + + + פיקומטר {0} + {0} פיקומטר + {0} פיקומטר + {0} פיקומטר + + + יארד {0} + {0} יארד + {0} יארד + {0} יארד + + + גרם {0} + {0} גרם + {0} גרם + {0} גרם + + + קילוגרם {0} + {0} קילוגרם + {0} קילוגרם + {0} קילוגרם + + + אונקיה {0} + {0} אונקיות + {0} אונקיות + {0} אונקיות + + + ליברה {0} + {0} ליבראות + {0} ליבראות + {0} ליבראות + + + כוח סוס {0} + {0} כוח סוס + {0} כוח סוס + {0} כוח סוס + + + קילוואט {0} + {0} קילוואט + {0} קילוואט + {0} קילוואט + + + ואט {0} + {0} ואט + {0} ואט + {0} ואט + + + הקטופסקל {0} + {0} הקטופסקל + {0} הקטופסקל + {0} הקטופסקל + + + אינץ׳ כספית {0} + {0} אינץ׳ כספית + {0} אינץ׳ כספית + {0} אינץ׳ כספית + + + {0} מיליבר + {0} מיליבר + {0} מיליבר + {0} מיליבר + + + {0} קילומטר לשעה + {0} קילומטר לשעה + {0} קילומטר לשעה + {0} קילומטר לשעה + + + {0} מטר לשנייה + {0} מטר לשנייה + {0} מטר לשנייה + {0} מטר לשנייה + + + {0} מייל לשעה + {0} מייל לשעה + {0} מייל לשעה + {0} מייל לשעה + + + מעלת צלזיוס {0} + {0} מעלות צלזיוס + {0} מעלות צלזיוס + {0} מעלות צלזיוס + + + מעלת פרנהייט {0} + {0} מעלות פרנהייט + {0} מעלות פרנהייט + {0} מעלות פרנהייט + + + {0} קילומטר מעוקב + {0} קילומטר מעוקב + {0} קילומטר מעוקב + {0} קילומטר מעוקב + + + {0} מייל מעוקב + {0} מייל מעוקב + {0} מייל מעוקב + {0} מייל מעוקב + + + {0} ליטר + {0} ליטר + {0} ליטר + {0} ליטר + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + דקה {0} + {0} דקות + {0} דקות + {0} דקות + + + שנייה {0} + {0} שניות + {0} שניות + {0} שניות + + + מעלה {0} + {0} מעלות + {0} מעלות + {0} מעלות + + + אקר {0} + {0} אקר + {0} אקר + {0} אקר + + + הקטאר {0} + {0} הקטאר + {0} הקטאר + {0} הקטאר + + + רגל רבועה {0} + {0} רגל רבועה + {0} רגל רבועה + {0} רגל רבועה + + + קמ״ר {0} + {0} קמ״ר + {0} קמ״ר + {0} קמ״ר + + + מ״ר {0} + {0} מ״ר + {0} מ״ר + {0} מ״ר + + + מייל רבוע {0} + {0} מייל רבוע + {0} מייל רבוע + {0} מייל רבוע + + + ‏יום {0} + {0} ימים + {0} ימים + {0} ימים + + + שעה {0} + {0} שעות + {0} שעות + {0} שעות + + + {0} ms + {0} ms + {0} ms + {0} ms + + + דק׳ {0} + {0} דק׳ + {0} דק׳ + {0} דק׳ + + + חודש {0} + {0} חודשים + {0} חודשים + {0} חודשים + + + שנ׳ {0} + {0} שנ׳ + {0} שנ׳ + {0} שנ׳ + + + שבוע {0} + {0} שבועות + {0} שבועות + {0} שבועות + + + שנה {0} + {0} שנים + {0} שנים + {0} שנים + + + ס״מ {0} + {0} ס״מ + {0} ס״מ + {0} ס״מ + + + רגל {0} + {0} רגל + {0} רגל + {0} רגל + + + אינץ׳ {0} + {0} אינץ׳ + {0} אינץ׳ + {0} אינץ׳ + + + ק״מ {0} + {0} ק״מ + {0} ק״מ + {0} ק״מ + + + שנת אור {0} + {0} שנות אור + {0} שנות אור + {0} שנות אור + + + מ׳ {0} + {0} מ׳ + {0} מ׳ + {0} מ׳ + + + מייל {0} + {0} מייל + {0} מייל + {0} מייל + + + מ״מ {0} + {0} מ״מ + {0} מ״מ + {0} מ״מ + + + פיקומטר {0} + {0} פיקומטר + {0} פיקומטר + {0} פיקומטר + + + יארד {0} + {0} יארד + {0} יארד + {0} יארד + + + גר׳ {0} + {0} גר׳ + {0} גר׳ + {0} גר׳ + + + ק״ג {0} + {0} ק״ג + {0} ק״ג + {0} ק״ג + + + אונקיה {0} + {0} אונקיות + {0} אונקיות + {0} אונקיות + + + ליברה {0} + {0} ליבראות + {0} ליבראות + {0} ליבראות + + + כ״ס {0} + {0} כ״ס + {0} כ״ס + {0} כ״ס + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + מיליבר {0} + {0} מיליבר + {0} מיליבר + {0} מיליבר + + + {0} קמ״ש + {0} קמ״ש + {0} קמ״ש + {0} קמ״ש + + + {0} מ/ש + {0} מ/ש + {0} מ/ש + {0} מ/ש + + + {0} mph + {0} mph + {0} mph + {0} mph + + + {0}°C + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} קמ״ק + {0} קמ״ק + {0} קמ״ק + {0} קמ״ק + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} ל׳ + {0} ל׳ + {0} ל׳ + {0} ל׳ + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + דקה {0} + {0} דקות + {0} דקות + {0} דקות + + + שנ׳ {0} + {0} שנ׳ + {0} שנ׳ + {0} שנ׳ + + + {0}° + {0}° + {0}° + {0}° + + + אקר {0} + {0} אקר + {0} אקר + {0} אקר + + + הקטאר {0} + {0} הקטאר + {0} הקטאר + {0} הקטאר + + + רגל רבועה {0} + {0} רגל רבועה + {0} רגל רבועה + {0} רגל רבועה + + + קמ״ר {0} + {0} קמ״ר + {0} קמ״ר + {0} קמ״ר + + + מ״ר {0} + {0} מ״ר + {0} מ״ר + {0} מ״ר + + + מייל רבוע {0} + {0} מייל רבוע + {0} מייל רבוע + {0} מייל רבוע + + + ‏יום {0} + {0} ימים + {0} ימים + {0} ימים + + + שעה {0} + {0} שעות + {0} שעות + {0} שעות + + + {0} ms + {0} ms + {0} ms + {0} ms + + + דק׳ {0} + {0} דק׳ + {0} דק׳ + {0} דק׳ + + + חודש {0} + {0} ח׳ + {0} ח׳ + {0} ח׳ + + + שנ׳ {0} + {0} שנ׳ + {0} שנ׳ + {0} שנ׳ + + + שבוע {0} + {0} שבועות + {0} שבועות + {0} שבועות + + + שנה {0} + {0} שנים + {0} שנים + {0} שנים + + + ס״מ {0} + {0} ס״מ + {0} ס״מ + {0} ס״מ + + + רגל {0} + {0} רגל + {0} רגל + {0} רגל + + + אינץ׳ {0} + {0} אינץ׳ + {0} אינץ׳ + {0} אינץ׳ + + + ק״מ {0} + {0} ק״מ + {0} ק״מ + {0} ק״מ + + + שנת אור {0} + {0} שנות אור + {0} שנות אור + {0} שנות אור + + + מ׳ {0} + {0} מ׳ + {0} מ׳ + {0} מ׳ + + + מייל {0} + {0} מייל + {0} מייל + {0} מייל + + + מ״מ {0} + {0} מ״מ + {0} מ״מ + {0} מ״מ + + + פיקומטר {0} + {0} פיקומטר + {0} פיקומטר + {0} פיקומטר + + + יארד {0} + {0} יארד + {0} יארד + {0} יארד + + + גר׳ {0} + {0} גר׳ + {0} גר׳ + {0} גר׳ + + + ק״ג {0} + {0} ק״ג + {0} ק״ג + {0} ק״ג + + + אונקיה {0} + {0} אונקיות + {0} אונקיות + {0} אונקיות + + + ליברה {0} + {0} ליבראות + {0} ליבראות + {0} ליבראות + + + כ״ס {0} + {0} כ״ס + {0} כ״ס + {0} כ״ס + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + מיליבר {0} + {0} מיליבר + {0} מיליבר + {0} מיליבר + + + {0} קמ״ש + {0} קמ״ש + {0} קמ״ש + {0} קמ״ש + + + {0} מ/ש + {0} מ/ש + {0} מ/ש + {0} מ/ש + + + {0} mph + {0} mph + {0} mph + {0} mph + + + {0}° + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} קמ״ק + {0} קמ״ק + {0} קמ״ק + {0} קמ״ק + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} ל׳ + {0} ל׳ + {0} ל׳ + {0} ל׳ + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} ו{1} + {0} ו{1} + + + + + כן:כ + לא:ל + + + + diff --git a/library/Zend/Locale/Data/he_IL.xml b/library/Zend/Locale/Data/he_IL.xml new file mode 100755 index 000000000..39a28518b --- /dev/null +++ b/library/Zend/Locale/Data/he_IL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/hi.xml b/library/Zend/Locale/Data/hi.xml new file mode 100755 index 000000000..28888cd70 --- /dev/null +++ b/library/Zend/Locale/Data/hi.xml @@ -0,0 +1,5954 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + अफ़ार + अब्ख़ाज़ियन + अचाइनीस + अकोली + अदान्गमे + अदिघे + अवस्ताई + अफ़्रीकी + अफ्रिहिली + ऐनू + अकन + अक्कादी + अलेउत + दक्षिणी अल्ताई + अम्हेरी + अर्गोनी + पुरानी अंग्रेज़ी + अंगिका + अरबी + आधुनिक मानक अरबी + ऐरेमेक + मापूचे + अराफाओ + अरावक + असमिया + अस्तुरियन + अवेरिक + अवधी + आयमारा + अज़रबैजानी + अज़ेरी + बशख़िर + बलूची + बालिनीस + बसा + बेलारूसी + बेजा + बेम्बा + बुल्गारियाई + भोजपुरी + बिस्लामा + बिकोल + बिनी + सिक्सिका + बाम्बारा + बंगाली + तिब्बती + ब्रेटन + ब्रज + बोस्नियाई + बुरियात + बगिनीस + ब्लिन + कातालान + कैड्डो + कैरिब + अत्सम + चेचन + सिबुआनो + कमोरो + चिब्चा + छगाताई + चूकीस + मारी + चिनूक जारगॉन + चोक्तौ + शिपेव्यान + चेरोकी + शेयेन्न + सोरानी कुर्द + कोर्सीकन + कॉप्टिक + क्री + क्रीमीन तुर्की + चेक + काशुबियन + चर्च साल्विक + चूवाश + वेल्श + डेनिश + दाकोता + दार्गवा + जर्मन + ऑस्ट्रियाई जर्मन + स्विस उच्च जर्मन + डिलैवेयर + स्लेव + डोग्रिब + दिन्का + डोग्री + निचला सॉर्बियन + दुआला + मध्य पुर्तगाली + दिवेही + ड्युला + ज़ोन्गखा + ईवे + एफिक + प्राचीन मिस्री + एकाजुक + यूनानी + एलामाइट + अंग्रेज़ी + ऑस्ट्रेलियाई अंग्रेज़ी + कनाडाई अंग्रेज़ी + ब्रिटिश अंग्रेज़ी + यू.के. अंग्रेज़ी + अमेरिकी अंग्रेज़ी + अमेरिकी अंग्रेज़ी + मध्यकालीन अंग्रेज़ी + एस्पेरेंतो + स्पेनी + लैटिन अमेरिकी स्पेनी + यूरोपीय स्पेनी + एस्टोनियाई + बास्क + इवोन्डो + फ़ारसी + फैन्ग + फन्टी + फुलाह + फ़िनिश + फ़िलिपीनो + फ़ीजी + फ़ैरोइज़ + फॉन + फ़्रेंच + कनाडाई फ़्रेंच + स्विस फ़्रेंच + मध्यकालीन फ़्रांसीसी + पुरातन फ़्रांसीसी + उत्तरी फ्रीसीयन + पूर्वी फ्रीसीयन + फ्रीयुलीयान + पश्चिमी फ़्रिसियाई + आइरिश + गा + गायो + ग्बाया + स्काट्स् गायेलिक् + गीज़ + गिल्बरतीस + गैलिशियन + मध्यकालीन हाइ जर्मन + गुआरानी + पुरातन हाइ जर्मन + गाँडी + गोरोन्तालो + गॉथिक + ग्रेबो + प्राचीन यूनानी + स्विस जर्मन + गुजराती + मैंक्स + ग्विच'इन + हौसा + हैडा + हवाई + हिब्रू + हिंदी + हिलिगेनन + हिताइत + ह्मॉंग + हिरी मोटू + क्रोएशियाई + ऊपरी सॉर्बियन + हैतियाई + हंगेरियाई + हूपा + आर्मेनियाई + हरैरो + ईन्टरलिंगुआ + इबान + इंडोनेशियाई + ईन्टरलिंगुइ + ईग्बो + सिचुआन यी + इनुपियाक् + इलोको + इंगुश + इडौ + आइसलैंडी + इतालवी + इनूकीटूत् + जापानी + लोज्बान + नगोंबा + जुदेओ-पर्शियन + जुदेओ-अरेबिक + जावानीस + जॉर्जियाई + कारा-कल्पक + कबाइल + काचिन + ज्जु + कम्बा + कावी + कबार्डियन + त्याप + कोरो + कोंगो + खासी + खोतानीस + किकुयू + क्वान्यामा + कज़ाख़ + ग्रीनलैंडिक + खमेर + किम्बन्दु + कन्नड़ + कोरियाई + कोंकणी + कोसरैन + क्पेल्लै + कनुरी + कराचय-बल्कार + करेलियन + कुरूख + कश्मीरी + कुर्दी + कुमीक + कुतेनाई + कोमी + कोर्निश + किर्गीज़ + लैटिन + लादीनो + लाह्न्डा + लाम्बा + लग्ज़मबर्गी + लेज़्घीयन + गांडा + लिंबर्गिश + लिंगाला + लाओ + मोंगो + लोज़ी + लिथुआनियाई + ल्यूबा-कटांगा + ल्यूबा-लुलुआ + लुइसेनो + लुन्डा + ल्युओ + लुशाई + लातवियाई + मादुरीस + मगाही + मैथिली + मकासर + मन्डिन्गो + मसाई + मोक्ष + मंधार + मेन्डे + मोरीस्येन + मालागासी + मध्यकाल आइरिश + मेटा + मार्शलीज़ + माओरी + मिकमैक + मिनांग्काबाउ + मैसिडोनियाई + मलयालम + मंगोलीयाई + मन्चु + मणिपूरी + मोहौक + मोस्सी + मराठी + मलय + माल्टीज़ + विविध भाषाएँ + क्रीक + मिरांडी + मारवाड़ी + बर्मीज़ + एर्ज़या + नाउरू + नीपोलिटन + नॉर्वेजियाई बोकमाल + उत्तरी देबेल + निचला जर्मन + नेपाली + नेवाड़ी + डोन्गा + नियास + नियुआन + डच + फ़्लेमिश + नॉर्वेजियाई नॉयनॉर्स्क + नॉर्वेजियाई + नोगाई + पुराना नॉर्स + एन्को + दक्षिण देबेल + उत्तरी सोथो + नावाजो + पारम्परिक नेवारी + न्यानजा + न्यामवेज़ी + न्यानकोल + न्योरो + न्ज़ीमा + ओसीटान + ओजिब्वा + ओरोमो + उड़िया + ओस्सेटिक + ओसेज + ओटोमान तुर्किश + पंजाबी + पंगासीनान + पाह्लावी + पाम्पान्गा + पापियामेन्टो + पलोउआन + पुरानी फारसी + फोएनिशियन + पाली + पोलिश + पोह्नपिएन + पुरानी प्रोवेन्सल + पश्तो + पुश्तो + पुर्तगाली + ब्राज़ीली पुर्तगाली + यूरोपीय पुर्तगाली + क्वेचुआ + राजस्थानी + रापानुई + रारोतोंगन + रोमान्श + रुन्दी + रोमानियाई + मोलडावियन् + रोमानी + रूट + रूसी + अरोमानियन + किन्यारवाण्डा + संस्कृत + सन्डावे + याकूत + सामैरिटन अरैमिक + सासाक + संताली + सार्दिनियन + सिसिलियन + स्कॉट्स + सिंधी + नॉर्दन सामी + सेल्कप + सांगो + पुरानी आइरिश + सेर्बो-क्रोएशन् + शैन + सिंहली + सिदामो + स्लोवाक + स्लोवेनियाई + सामोन + दक्षिण सामी + ल्युल सामी + इनारी सामी + स्कोल्ट सामी + सोणा + सोनिन्के + सोमाली + सोग्डिएन + अल्बानियाई + सर्बियाई + स्रानान टॉन्गो + सेरेर + स्वाती + सेसोथो + सुंडानी + सुकुमा + सुसु + सुमेरियन + स्वीडिश + स्वाहिली + कोमोरियन + क्लासिकल सिरिएक + सिरिएक + तमिल + तेलुगू + टिम्ने + तेरेनो + तेतुम + ताजिक + थाई + तिग्रीन्या + टाइग्रे + तिव + तुर्कमेन + तोकेलाऊ + तागालोग + क्लिंगन + त्लिंगित + तामाशेक + सेत्स्वाना + टोंगन + न्यासा टोन्गा + टोक पिसिन + तुर्की + सोंगा + त्सिमीशियन + तातार + तम्बूका + तुवालु + ट्वी + ताहितियन + तुवीनियन + उदमुर्त + विघुर + युगैरिटिक + यूक्रेनियाई + उम्बुन्डु + अज्ञात भाषा + उर्दू + उज़्बेक + वाई + वेन्दा + वियतनामी + वोलापुक + वॉटिक + वाल्लून + वलामो + वारै + वाशो + वोलोफ़ + काल्मिक + ख़ोसा + याओ + यापीस + येहुदी + योरूबा + कैंटोनीस + ज़ुआंग + ज़ेपोटेक + ब्लिसिम्बॉल्स + ज़ेनान्गा + मानक मोरक्कन तामाज़ाइट + चीनी + सरलीकृत चीनी + पारंपरिक चीनी + ज़ुलू + ज़ूनी + कोई भाषा सामग्री नहीं + ज़ाज़ा + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + विश्व + अफ़्रीका + उत्तर अमेरिका + दक्षिण अमेरिका + ओशिआनिया + पश्चिमी अफ़्रीका + मध्य अमेरिका + पूर्वी अफ़्रीका + उत्तरी अफ़्रीका + मध्य अफ़्रीका + दक्षिणी अफ़्रीका + अमेरिकाज़ + उत्तरी अमेरिका + कैरिबीयन + पूर्वी एशिया + दक्षिणी एशिया + दक्षिण-पूर्व एशिया + दक्षिणी यूरोप + ऑस्ट्रेलेशिया + मेलानेशिया + माइक्रोनेशियाई क्षेत्र + पोलीनेशिया + एशिया + मध्य एशिया + पश्चिमी एशिया + यूरोप + पूर्वी यूरोप + उत्तरी यूरोप + पश्चिमी यूरोप + लैटिन अमेरिका + असेंशन द्वीप + एंडोरा + संयुक्त अरब अमीरात + अफ़गानिस्तान + एंटिगुआ और बरबुडा + एंग्विला + अल्बानिया + आर्मेनिया + नीदरलैंडी ऐंटील + अंगोला + अंटार्कटिका + अर्जेंटीना + अमेरिकी समोआ + ऑस्ट्रिया + ऑस्ट्रेलिया + अरूबा + एलैंड द्वीपसमूह + अज़रबैजान + बोस्निया और हर्ज़ेगोविना + बारबाडोस + बांग्लादेश + बेल्जियम + बुर्किना फ़ासो + बुल्गारिया + बहरीन + बुरुंडी + बेनिन + सेंट बार्थेलेमी + बरमूडा + ब्रूनेई + बोलीविया + कैरिबीयाई नीदरलैंड + ब्राज़ील + बहामास + भूटान + बोवेत द्वीप + बोत्स्वाना + बेलारूस + बेलीज़ + कनाडा + कोकोस (कीलिंग) द्वीपसमूह + कोंगो – किंशासा + कोंगो (डीआरसी) + मध्य अफ़्रीकी गणराज्य + कोंगो – ब्राज़ाविल + कोंगो (गणराज्य) + स्विट्ज़रलैंड + कोट डी आइवर + आइवरी कोस्ट + कुक द्वीपसमूह + चिली + कैमरून + चीन + कोलंबिया + क्लिपर्टन द्वीप + कोस्टारिका + क्यूबा + केप वर्ड + क्यूरासाओ + क्रिसमस द्वीप + साइप्रस + चेक गणराज्य + जर्मनी + डिएगो गार्सिया + जिबूती + डेनमार्क + डोमिनिका + डोमिनिकन गणराज्य + अल्जीरिया + सेउटा और मेलिला + इक्वाडोर + एस्टोनिया + मिस्र + पश्चिमी सहारा + इरिट्रिया + स्पेन + इथियोपिया + यूरोपीय संघ + फ़िनलैंड + फ़िजी + फ़ॉकलैंड द्वीपसमूह + फ़ॉकलैंड द्वीपसमूह (इज़्लास माल्विनास) + माइक्रोनेशिया + फ़ेरो द्वीपसमूह + फ़्रांस + गैबॉन + यूनाइटेड किंगडम + यू.के. + ग्रेनाडा + जॉर्जिया + फ़्रेंच गुयाना + गर्नसी + घाना + जिब्राल्टर + ग्रीनलैंड + गाम्बिया + गिनी + ग्वाडेलूप + इक्वेटोरियल गिनी + यूनान + दक्षिण जॉर्जिया और दक्षिण सैंडविच द्वीपसमूह + ग्वाटेमाला + गुआम + गिनी-बिसाउ + गुयाना + हाँग काँग (चीन विशेष प्रशासनिक क्षेत्र) + हाँग काँग + हर्ड द्वीप और मैकडोनॉल्ड द्वीपसमूह + होंडूरास + क्रोएशिया + हैती + हंगरी + कैनेरी द्वीपसमूह + इंडोनेशिया + आयरलैंड + इसराइल + आइल ऑफ़ मैन + भारत + ब्रिटिश हिंद महासागरीय क्षेत्र + इराक + ईरान + आइसलैंड + इटली + जर्सी + जमैका + जॉर्डन + जापान + केन्या + किर्गिज़स्तान + कंबोडिया + किरिबाती + कोमोरोस + सेंट किट्स और नेविस + उत्तर कोरिया + दक्षिण कोरिया + कुवैत + केमैन द्वीपसमूह + कज़ाखस्तान + लाओस + लेबनान + सेंट लूसिया + लिचेंस्टीन + श्रीलंका + लाइबेरिया + लेसोथो + लिथुआनिया + लग्ज़मबर्ग + लातविया + लीबिया + मोरक्को + मोनाको + मॉल्डोवा + मोंटेनेग्रो + सेंट मार्टिन + मेडागास्कर + मार्शल द्वीपसमूह + मैसिडोनिया + मैसिडोनिया (FYROM) + माली + म्यांमार (बर्मा) + मंगोलिया + मकाओ (चीन विशेष प्रशासनिक क्षेत्र) + मकाओ + उत्तरी मारियाना द्वीपसमूह + मार्टीनिक + मॉरिटानिया + मोंटसेरात + माल्टा + मॉरिशस + मालदीव + मलावी + मैक्सिको + मलेशिया + मोज़ांबिक + नामीबिया + न्यू कैलेडोनिया + नाइजर + नॉरफ़ॉक द्वीप + नाइजीरिया + निकारागुआ + नीदरलैंड + नॉर्वे + नेपाल + नाउरु + नीयू + न्यूज़ीलैंड + ओमान + पनामा + पेरू + फ़्रेंच पोलिनेशिया + पापुआ न्यू गिनी + फ़िलिपींस + पाकिस्तान + पोलैंड + सेंट पिएरे और मिक्वेलान + पिटकैर्न द्वीपसमूह + पोर्टो रिको + फ़िलिस्तीनी क्षेत्र + फ़िलिस्तीन + पुर्तगाल + पलाऊ + पेराग्वे + क़तर + आउटलाइंग ओशिनिया + रियूनियन + रोमानिया + सर्बिया + रूस + रवांडा + सऊदी अरब + सोलोमन द्वीपसमूह + सेशेल्स + सूडान + स्वीडन + सिंगापुर + सेंट हेलेना + स्लोवेनिया + स्वालबार्ड और जान मायेन + स्लोवाकिया + सिएरा लियोन + सैन मेरीनो + सेनेगल + सोमालिया + सूरीनाम + दक्षिण सूडान + साओ टोम और प्रिंसिपे + अल सल्वाडोर + सिंट मार्टिन + सीरिया + स्वाज़ीलैंड + त्रिस्टान डा कुना + तुर्क और कैकोज़ द्वीपसमूह + चाड + फ़्रांसीसी दक्षिणी क्षेत्र + टोगो + थाईलैंड + ताजिकिस्तान + तोकेलाउ + तिमोर-लेस्त + पूर्वी तिमोर + तुर्कमेनिस्तान + ट्यूनीशिया + टोंगा + तुर्की + त्रिनिडाड और टोबैगो + तुवालू + ताइवान + तंज़ानिया + यूक्रेन + युगांडा + यू.एस. आउटलाइंग द्वीपसमूह + संयुक्त राज्य + अमेरिका + उरूग्वे + उज़्बेकिस्तान + वेटिकन सिटी + सेंट विंसेंट एंड ग्रेनाडाइंस + वेनेज़ुएला + ब्रिटिश वर्जिन द्वीपसमूह + यू.एस. वर्जिन द्वीपसमूह + वियतनाम + वनुआतू + वालिस और फ़्यूचूना + समोआ + कोसोवो + यमन + मायोते + दक्षिण अफ़्रीका + ज़ाम्बिया + ज़िम्बाब्वे + अज्ञात क्षेत्र + + + पारम्पारिक जर्मन वर्तनी + जर्मेनी की 1996 वर्तनी + पूर्वी अर्मेनियाई + एकस्वरीय + जीवा बोली + पिनयिन रोमानाइज़ेशन + बहुस्वरीय + कम्प्यूटर + संशोधित वर्तनी + वेड-गाइल्स रोमनाइज़ेशन + + + कैलेंडर + चिह्न वर्गीकरण पर ध्यान न दें + विपरीत उच्‍चारण वर्गीकरण + अपरकेस/लोअरकेस क्रमांकन + केस संवेदी वर्गीकरण + काना वर्गीकरण + सॉर्ट क्रम + सामान्यीकृत वर्गीकरण + संख्यात्मक वर्गीकरण + वर्गीकरण सशक्तता + मुद्रा + संख्या + समय क्षेत्र + स्थानीय प्रकार + चिह्न के रूप में क्रमित करें + निजी-उपयोग + + + अरबी-भारतीय अंक + विस्तृत अरबी-भारतीय अंक + आर्मेनियाई संख्याएँ + आर्मेनियाई लोअरकेस संख्याएँ + बंगाली अंक + पारम्पारिक चीनी वर्गीकरण + बौद्ध पंचांग + चीनी पंचांग + कोप्टिक कैलेंडर + देवनागरी अंक + शब्दकोश क्रम विन्यास + डिफ़ॉल्ट यूनिकोड सॉर्ट क्रम + इथियोपिक संख्याएँ + इथियोपिक कैलेंडर + इथियोपिक अमेते अलेम कैलेंडर + वित्तीय अंक + पूर्ण चौड़ाई अंक + सरलीकृत चीनी वर्गीकरण + जॉर्जियन संख्याएँ + ग्रेगोरियन कैलेंडर + यूनानी संख्याएँ + यूनानी लोअरकेस संख्याएँ + गुजराती अंक + गुरमुखी अंक + चीनी दशमलव संख्याएँ + सरलीकृत चीनी संख्याएँ + सरलीकृत चीनी वित्तीय संख्याएँ + पारंपरिक चीनी संख्याएँ + पारंपरिक चीनी वित्तीय संख्याएँ + हिब्रू संख्याएँ + हिब्रू पंचांग + सभी क्रमित करें + भारतीय राष्ट्रीय पंचांग + इस्लामी पंचांग + इस्लामी नागरिक पंचांग + जापानी पंचांग + जापानी संख्याएँ + जापानी वित्तीय संख्याएँ + खमेर अंक + कन्नड़ अंक + लाओ अंक + पश्चिमी अंक + पहले लोअरकेस क्रमित करें + मलयालम अंक + मंगोलियाई अंक + म्यांमार अंक + स्थानीय अंक + उच्‍चारणों को सामान्‍य रूप से क्रमित करें + सामान्‍य केस क्रम में क्रमित करें + केस असंवेदी क्रमित करें + काना को अलग से क्रमित करें + बिना सामान्‍यीकरण के क्रमित करें + अंको को अलग-अलग क्रमित करें + प्रतीकों को क्रमित करें + उड़िया अंक + फ़ारसी कैलेंडर + दूरभाष निर्देशिका वर्गीकरण + ध्‍वन्यात्मक क्रमित करने का क्रम + पिनयीन वर्गीकरण + केवल आधार अक्षरों को क्रमित करें + उच्‍चारणों/केस/चौड़ाई/काना क्रमित करें + पुनर्निर्मित क्रम विन्यास + चीनी गणतंत्र पंचांग + रोमन संख्याएँ + रोमन लोअरकेस संख्याएँ + सामान्य-उद्देश्य खोज + हांगुल आरंभिक व्‍यंजन द्वारा खोजें + उच्‍चारण क्रमित करें + प्रतीकों पर ध्यान न देकर क्रमित करें + मानक सॉर्ट क्रम + स्ट्रोक वर्गीकरण + पारंपरिक तमिल संख्याएँ + तमिल अंक + तेलुगू अंक + उच्‍चारणों/केस/चौड़ाई क्रमित करें + थाई अंक + तिब्बती अंक + पारम्पारिक वर्गीकरण + परंपरागत अंक + रेडिकल-स्ट्रोक क्रम विन्यास + पहले अपरकेस क्रमित करें + वाई अंक + उच्‍चारण के उलट क्रमित करें + केस संवेदी को क्रमित करें + काना को भिन्‍न रूप में क्रमित करें + यूनिकोड सामान्‍यीकृत क्रमित करें + अंकों को अंकीय रूप से क्रमित करें + + + BGN + सांख्यिक + स्वर + UNGEGN + स्वराघात + पूर्ण-चौड़ाई + आधी-चौड़ाई + जामो + पिनयिन + प्रकाशन + + + मीट्रिक + यूके + यूएस + + + भाषा: {0} + लिपि: {0} + क्षेत्र: {0} + + + + [\u093C ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी \u0941 \u0942 \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D] + [\u200C\u200D] + [अ आ इ ई उ ऊ ऋ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + मस्केरेम + टेकेम्ट + हेदर + तहसास + टर + येकाटिट + मेगाबिट + मियाज़िया + गनबोट + सेन + हम्ले + नेहासे + पागूमन + + + + + + + + + EEEE, d MMMM G y + + + + + d MMMM G y + + + + + d MMM, G y + + + + + d-M-y G + + + + + + + {1} को {0} + + + + + {1} को {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + G y + MMM G y + d MMM G y + E, d MMM G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + M + d/M + E, d/M + dd-MM + MMM + d MMM + E, d MMM + mm:ss + G y + G y + M/y GGGGG + d/M/y G + E, d/M/y G + dd-MM-y G + MMM G y + d MMM G y + E, d MMM G y + QQQ G y + QQQQ G y + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + G y–y + + + M/y – M/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + + + MMM–MMM Gy + MMM Gy – MMM y + + + d MMM–d, Gy + d MMM – d MMM, Gy + d MMM, Gy – d MMM, y + + + E, d MMM – E, d MMM, Gy + E, d MMM – E, d MMM, Gy + E, d MMM, Gy – E, d MMM, y + + + MMMM–MMMM Gy + G MMMM y – MMMM y + + + + + + + + + जन + फ़र + मार्च + अप्रै + मई + जून + जुला + अग + सितं + अक्टू + नवं + दिसं + + + + फ़ + मा + + + जू + जु + + सि + + + दि + + + जनवरी + फ़रवरी + मार्च + अप्रैल + मई + जून + जुलाई + अगस्त + सितंबर + अक्टूबर + नवंबर + दिसंबर + + + + + जन + फ़र + मार्च + अप्रै + मई + जून + जुला + अग + सितं + अक्टू + नवं + दिसं + + + + फ़ + मा + + + जू + जु + + सि + + + दि + + + जनवरी + फ़रवरी + मार्च + अप्रैल + मई + जून + जुलाई + अगस्त + सितंबर + अक्टूबर + नवंबर + दिसंबर + + + + + + + रवि + सोम + मंगल + बुध + गुरु + शुक्र + शनि + + + + सो + मं + बु + गु + शु + + + + + सो + मं + बु + गु + शु + + + + रविवार + सोमवार + मंगलवार + बुधवार + गुरुवार + शुक्रवार + शनिवार + + + + + रवि + सोम + मंगल + बुध + गुरु + शुक्र + शनि + + + + सो + मं + बु + गु + शु + + + + + सो + मं + बु + गु + शु + + + + रविवार + सोमवार + मंगलवार + बुधवार + गुरुवार + शुक्रवार + शनिवार + + + + + + + ति1 + ति2 + ति3 + ति4 + + + 1 + 2 + 3 + 4 + + + पहली तिमाही + दूसरी तिमाही + तीसरी तिमाही + चौथी तिमाही + + + + + ति1 + ति2 + ति3 + ति4 + + + 1 + 2 + 3 + 4 + + + पहली तिमाही + दूसरी तिमाही + तीसरी तिमाही + चौथी तिमाही + + + + + + + पूर्व + अपर + + + पू + + + + पूर्वाह्न + अपराह्न + + + + + + ईसा-पूर्व + ईस्वी + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + dd-MM-y + + + + + d-M-yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} को {0} + + + + + {1} को {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM G y + d MMM, G y + E, d MMM, G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + dd-MM-y + MMM y + d MMM, y + E, d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d MMM–d + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d MMM–d, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + + चैत्र + वैशाख + ज्येष्ठ + आषाढ़ + श्रावण + भाद्र + अश्विन + कार्तिक + अग्रहायण + पौष + माघ + फाल्गुन + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + चैत्र + वैशाख + ज्येष्ठ + आषाढ़ + श्रावण + भाद्र + अश्विन + कार्तिक + अग्रहायण + पौष + माघ + फाल्गुन + + + + + चैत्र + वैशाख + ज्येष्ठ + आषाढ़ + श्रावण + भाद्र + अश्विन + कार्तिक + अग्रहायण + पौष + माघ + फाल्गुन + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + चैत्र + वैशाख + ज्येष्ठ + आषाढ़ + श्रावण + भाद्र + अश्विन + कार्तिक + अग्रहायण + पौष + माघ + फाल्गुन + + + + + + शक + + + + + + + + मुहर्रम + सफर + राबी प्रथम + राबी द्वितीय + जुम्डा प्रथम + जुम्डा द्वितीय + रजब + शावन + रमजान + शव्व्ल + जिल-क्दाह + जिल्-हिज्जाह + + + + + + + + ताएका (645–650) + हाकूची (650–671) + हाकूहो (672–686) + शूचो (686–701) + ताहिओ (701–704) + केउन (704–708) + वाडू (708–715) + रैकी (715–717) + योरो (717–724) + जिंकी (724–729) + टेम्प्यो (729–749) + टेम्प्यो-काम्पो (749–749) + टेम्प्यो-शोहो (749–757) + टेम्प्यो-होजी (757–765) + टेम्प्यो-जिंगो (765–767) + टेम्प्यो-किउन (767–770) + होकी (770–780) + टेनो (781–782) + इंर्याकू (782–806) + डाईडू (806–810) + क़ोनिन (810–824) + टेंचो (824–834) + शोवा (834–848) + काज्यो (848–851) + निंजू (851–854) + शाईकू (854–857) + टेनन (857–859) + जोगन् (859–877) + गेंकेई (877–885) + निन्ना (885–889) + केम्प्यो (889–898) + शूताई (898–901) + ईंगी (901–923) + ईंचो (923–931) + शोहेई (931–938) + टेंग्यो (938–947) + टेंर्याकू (947–957) + टेंटूकू (957–961) + ओवा (961–964) + कोहो (964–968) + अन्ना (968–970) + टेंरोकू (970–973) + टेन-एन (973–976) + जोगन् (976–978) + टेंगेन (978–983) + ईकान (983–985) + कन्ना (985–987) + ई-एन (987–989) + एइसो (989–990) + शोर्याकू (990–995) + चोटूकु (995–999) + चोहो (999–1004) + कंको (1004–1012) + च्योवा (1012–1017) + कन्निन (1017–1021) + ज़ियान (1021–1024) + मंजू (1024–1028) + चोगन (1028–1037) + चोर्याकू (1037–1040) + चोक्यु (1040–1044) + कांटूको (1044–1046) + ईशो (1046–1053) + टेंगी (1053–1058) + कोहैइ (1058–1065) + जिर्याकू (1065–1069) + ईंक्यू (1069–1074) + सोहो (1074–1077) + शोर्याकू (1077–1081) + ईहो (1081–1084) + ओटूको (1084–1087) + कांजि (1087–1094) + कोहो (1094–1096) + ईचो (1096–1097) + शोटूको (1097–1099) + कोवा (1099–1104) + चोजी (1104–1106) + काशो (1106–1108) + टेन्निन (1108–1110) + टेन-ई (1110–1113) + ईक्यू (1113–1118) + जेन-ई (1118–1120) + होआन (1120–1124) + तेंजी (1124–1126) + दाईजी (1126–1131) + टेंशो (1131–1132) + चोशो (1132–1135) + होएन (1135–1141) + ईजी (1141–1142) + कोजी (1142–1144) + टेन्यो (1144–1145) + क्यूआन (1145–1151) + निंपैई (1151–1154) + क्योजो (1154–1156) + होगेन (1156–1159) + हैजी (1159–1160) + ईर्याकू (1160–1161) + ओहो (1161–1163) + चोकान (1163–1165) + ईमान (1165–1166) + निन-आन (1166–1169) + काओ (1169–1171) + शोअन (1171–1175) + अंजन (1175–1177) + जिशो (1177–1181) + योवा (1181–1182) + जूऐई (1182–1184) + जेंर्याकू (1184–1185) + बूंजी (1185–1190) + केंक्यू (1190–1199) + शोजी (1199–1201) + केन्निन (1201–1204) + जेंक्यू (1204–1206) + केन-ई (1206–1207) + शोगेन (1207–1211) + केंर्याकू (1211–1213) + केंपो (1213–1219) + शोक्यू (1219–1222) + जू (1222–1224) + जेन्निन (1224–1225) + कोरोकू (1225–1227) + अंटैइ (1227–1229) + कांकी (1229–1232) + जोएई (1232–1233) + टेम्पूकू (1233–1234) + बुंर्याकू (1234–1235) + काटेई (1235–1238) + र्याकूनिन (1238–1239) + ईन-ओ (1239–1240) + निंजी (1240–1243) + कांजेन (1243–1247) + होजी (1247–1249) + केंचो (1249–1256) + कोगेन (1256–1257) + शोका (1257–1259) + शोगेन (1259–1260) + बुन-ओ (1260–1261) + कोचो (1261–1264) + बुन-ई (1264–1275) + केंजी (1275–1278) + कोअन (1278–1288) + शो (1288–1293) + ईनिन (1293–1299) + शोअन (1299–1302) + केंजेन (1302–1303) + काजेन (1303–1306) + टोकूजी (1306–1308) + ईंकेई (1308–1311) + ओचो (1311–1312) + शोवा (1312–1317) + बुंपो (1317–1319) + जेनो (1319–1321) + जेंक्यो (1321–1324) + शोचू (1324–1326) + कारेकी (1326–1329) + जेंटोकू (1329–1331) + गेंको (1331–1334) + केम्मू (1334–1336) + ईंजेन (1336–1340) + कोकोकू (1340–1346) + शोहेई (1346–1370) + केंटोकू (1370–1372) + बूंचो (1372–1375) + टेंजो (1375–1379) + कोर्याकू (1379–1381) + कोवा (1381–1384) + जेंचू (1384–1392) + मेटोकू (1384–1387) + काकेई (1387–1389) + कू (1389–1390) + मेटोकू (1390–1394) + ओई (1394–1428) + शोचो (1428–1429) + ईक्यो (1429–1441) + काकीत्सू (1441–1444) + बुन-अन (1444–1449) + होटोकू (1449–1452) + क्योटोकू (1452–1455) + कोशो (1455–1457) + चोरोकू (1457–1460) + कांशो (1460–1466) + बुंशो (1466–1467) + ओनिन (1467–1469) + बुन्मेई (1469–1487) + चोक्यो (1487–1489) + ईंटोकू (1489–1492) + मेईओ (1492–1501) + बुंकी (1501–1504) + ईशो (1504–1521) + ताईएई (1521–1528) + क्योरोकू (1528–1532) + टेन्मन (1532–1555) + कोजी (1555–1558) + ईरोकू (1558–1570) + जेंकी (1570–1573) + टेंशो (1573–1592) + बुंरोकू (1592–1596) + केईचो (1596–1615) + जेनवा (1615–1624) + कान-एई (1624–1644) + शोहो (1644–1648) + केईआन (1648–1652) + शो (1652–1655) + मेईर्याकू (1655–1658) + मानजी (1658–1661) + कनबुन (1661–1673) + ईंपो (1673–1681) + टेंवा (1681–1684) + जोक्यो (1684–1688) + जेंरोकू (1688–1704) + होएई (1704–1711) + शोटूको (1711–1716) + क्योहो (1716–1736) + जेंबुन (1736–1741) + कांपो (1741–1744) + इंक्यो (1744–1748) + कान-एन (1748–1751) + होर्याकू (1751–1764) + मेईवा (1764–1772) + अन-एई (1772–1781) + टेनमेई (1781–1789) + कांसेई (1789–1801) + क्योवा (1801–1804) + बुंका (1804–1818) + बुंसेई (1818–1830) + टेंपो (1830–1844) + कोका (1844–1848) + काईए (1848–1854) + अंसेई (1854–1860) + मान-ईन (1860–1861) + बुंक्यौ (1861–1864) + जेंजी (1864–1865) + केईओ (1865–1868) + मेजी + ताईशो + शोवा + हेईसेई + + + + + + + + फर्वादिन + ओर्दिवेहेस्ट + खोरर्दाद + टिर + मोरदाद + शाहरीवर् + मेहर + अवन + अज़र + डे + बहमन + ईस्फन्द् + + + + + + + + युग + + + वर्ष + पिछला वर्ष + यह वर्ष + अगला वर्ष + + {0} वर्ष में + {0} वर्ष में + + + {0} वर्ष पहले + {0} वर्ष पहले + + + + माह + पिछला माह + यह माह + अगला माह + + {0} माह में + {0} माह में + + + {0} माह पहले + {0} माह पहले + + + + सप्ताह + पिछला सप्ताह + यह सप्ताह + अगला सप्ताह + + {0} सप्ताह में + {0} सप्ताह में + + + {0} सप्ताह पहले + {0} सप्ताह पहले + + + + दिन + बीता परसों + बीता कल + आज + आने वाला कल + परसों + + {0} दिन में + {0} दिन में + + + {0} दिन पहले + {0} दिन पहले + + + + सप्ताह का दिन + + + पिछला रविवार + यह रविवार + अगला रविवार + + + पिछला सोमवार + यह सोमवार + अगला सोमवार + + + पिछला मंगलवार + यह मंगलवार + अगला मंगलवार + + + पिछला बुधवार + यह बुधवार + अगला बुधवार + + + पिछला गुरुवार + यह गुरुवार + अगला गुरुवार + + + पिछला शुक्रवार + यह शुक्रवार + अगला शुक्रवार + + + पिछला शनिवार + यह शनिवार + अगला शनिवार + + + AM/PM + + + घंटा + + {0} घंटे में + {0} घंटे में + + + {0} घंटे पहले + {0} घंटे पहले + + + + मिनट + + {0} मिनट में + {0} मिनट में + + + {0} मिनट पहले + {0} मिनट पहले + + + + सेकंड + अब + + {0} सेकंड में + {0} सेकंड में + + + {0} सेकंड पहले + {0} सेकंड पहले + + + + समय क्षेत्र + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} समय + {0} डेलाइट समय + {0} मानक समय + {1} ({0}) + + अज्ञात शहर + + + अंडोरा + + + दुबई + + + काबुल + + + एंटीगुआ + + + एंग्विला + + + टाइरेन + + + येरेवान + + + लुआंडा + + + रोथेरा + + + पॉमर + + + स्योवा + + + मॉसन + + + डेविस + + + वोस्तोक + + + केसी + + + ड्यूमोंट डी अर्विले + + + मैकमुर्डो + + + रियो गालेगोस + + + मेंडोज़ा + + + सान जुआन + + + उशुआइया + + + ला रिओजा + + + सान लुईस + + + काटामार्का + + + साल्टा + + + जुजोए + + + टोकूमन + + + कोर्डोबा + + + ब्यूनस आयरस + + + पागो पागो + + + विएना + + + पर्थ + + + यूक्ला + + + डार्विन + + + एडिलेड + + + ब्रोकन हिल + + + क्यूरी + + + मेलबोर्न + + + होबार्ट + + + लिंडेमान + + + सिडनी + + + ब्रिस्बन + + + मक्वारी + + + लॉर्ड होवे + + + अरुबा + + + मारियाहैम + + + बाकु + + + साराजेवो + + + बारबाडोस + + + ढाका + + + ब्रूसेल्स + + + औगाडोगू + + + सोफ़िया + + + बहरीन + + + बुजुंबूरा + + + पोर्टो-नोवो + + + सेंट बार्थेलेमी + + + बरमूडा + + + ब्रूनेई + + + ला पाज़ + + + क्रालैंडिजिक + + + ईरुनेपे + + + रियो ब्रांको + + + पोर्टो वेल्हो + + + बोआ विस्ता + + + मनौस + + + क्यूआबा + + + सैंटारेम + + + कैंपो ग्रांडे + + + बेलेम + + + आराग्वेना + + + साओ पाउलो + + + बहिया + + + फ़ोर्टालेज़ा + + + मेसीओ + + + रेसाइफ़ + + + नोरोन्हा + + + नासाउ + + + थिंपू + + + गाबोरोन + + + मिंस्क + + + बेलीज़ + + + डॉसन + + + व्हाइटहोर्स + + + इनूविक + + + वैंकूवर + + + डॉसन क्रीक + + + क्रेस्टन + + + येलोनाइफ़ + + + एडमंटन + + + स्विफ़्ट करंट + + + कैम्ब्रिज खाड़ी + + + रेजिना + + + विनीपेग + + + रिसोल्यूट + + + रेनी नदी + + + रेंकिन इनलेट + + + अटिकोकान + + + थंडर खाड़ी + + + निपिगन + + + टोरंटो + + + इकालुईट + + + पांगनिर्टंग + + + मोंकटन + + + हेलिफ़ैक्स + + + गूस खा़ड़ी + + + ग्लेस खा़ड़ी + + + ब्लांक-सेबलोन + + + सेंट जोंस + + + कोकोस + + + किंशासा + + + लुबुमबाशी + + + बांगुइ + + + ब्राज़ाविले + + + ज़्यूरिख़ + + + अबिदजान + + + रारोटोंगा + + + ईस्टर + + + सैंटियागो + + + डूआला + + + काश्गर + + + उरम्ची + + + चोंगकिंग + + + शंघाई + + + हर्बिन + + + बोगोटा + + + कोस्टा रिका + + + हवाना + + + केप वर्ड + + + कुराकाओ + + + क्रिसमस + + + निकोसिया + + + प्राग + + + ब्यूसिनजेन + + + बर्लिन + + + जिबूती + + + कोपेनहेगन + + + डोमिनिका + + + सेंटो डोमिंगो + + + अल्जीयर्स + + + गेलापागोस + + + ग्वायाकील + + + तेलिन + + + कायरो + + + अल आइयून + + + अस्मारा + + + कैनेरी + + + सेउटा + + + मैड्रिड + + + अदीस अबाबा + + + हेलसिंकी + + + फ़िजी + + + स्टैनली + + + चक + + + पोनपेई + + + कोसराए + + + फ़ैरो + + + पेरिस + + + लिब्रेविले + + + + ब्रिटिश ग्रीष्मकालीन समय + + लंदन + + + ग्रेनाडा + + + टबिलिसी + + + कायेन + + + गर्नसी + + + एक्रा + + + जिब्राल्टर + + + थ्यूले + + + नुक + + + इटोकोर्टोरमियाट + + + डेनमार्कशॉन + + + बैंजुल + + + कोनाक्री + + + ग्वाडेलोप + + + मलाबो + + + एथेंस + + + दक्षिण जॉर्जिया + + + ग्वाटेमाला + + + गुआम + + + बिसाऊ + + + गयाना + + + हाँग काँग + + + टेगुसिगल्पा + + + ज़ाग्रेब + + + पोर्ट-ऑ-प्रिंस + + + बुडापेस्ट + + + जकार्ता + + + पोंटीयांक + + + मकस्सर + + + जयापुरा + + + + आइरिश ग्रीष्मकालीन समय + + डबलिन + + + यरूशलम + + + आइल ऑफ़ मैन + + + कोलकाता + + + शागोस + + + बगदाद + + + तेहरान + + + रेक्याविक + + + रोम + + + जर्सी + + + जमैका + + + अम्मान + + + टोक्यो + + + नैरोबी + + + बिश्केक + + + नॉम पेन्ह + + + एंडरबरी + + + किरीतिमाति + + + टारावा + + + कोमोरो + + + सेंट किट्स + + + प्योंगयांग + + + सिओल + + + कुवैत + + + कैमेन + + + अक्ताउ + + + ओरल + + + अक्तोब + + + केज़ेलोर्डा + + + अल्माटी + + + विएनतियान + + + बेरुत + + + सेंट लूसिया + + + वादुज़ + + + कोलंबो + + + मोनरोविया + + + मासेरू + + + विल्नियस + + + लक्ज़मबर्ग + + + रीगा + + + त्रिपोली + + + कासाब्लांका + + + मोनाको + + + चिसीनाउ + + + पोड्गोरिका + + + मैरीगोट + + + एंटानानरीवो + + + क्वाज़ालीन + + + माजुरो + + + स्कोप्जे + + + बामाको + + + रंगून + + + होव्ड + + + उलानबातर + + + चोइबालसन + + + मकाउ + + + सायपान + + + मार्टिनिक + + + नौआकशॉट + + + मोंटसेरात + + + माल्टा + + + मॉरीशस + + + मालदीव + + + ब्लांटायर + + + तिजुआना + + + सांता इसाबेल + + + हर्मोसिल्लो + + + माज़ाटलान + + + चिहुआहुआ + + + बेहिया बांडेरास + + + ओखाजीनागा + + + मोंटेरेरी + + + मैक्सिको सिटी + + + माटामोरोस + + + मेरिडा + + + कैनकुन + + + कुआलालंपुर + + + कूचिंग + + + मापुटो + + + विंडहोक + + + नौमिया + + + नियामी + + + नॉरफ़ॉक + + + लागोस + + + मानागुआ + + + एम्स्टर्डम + + + ओस्लो + + + काठमांडू + + + नौरु + + + नीयू + + + चाथम + + + ऑकलैंड + + + मस्कट + + + पनामा + + + लीमा + + + ताहिती + + + मार्केसस + + + गैंबियर + + + पोर्ट मोरेस्बी + + + मनीला + + + कराची + + + वॉरसॉ + + + मिकेलॉन + + + पिटकैर्न + + + पोर्टो रिको + + + गाज़ा + + + हेब्रोन + + + अज़ोरेस + + + मडेरा + + + लिस्बन + + + पालाऊ + + + एसनशियॉन + + + कतर + + + रीयूनियन + + + बुख़ारेस्ट + + + बेलग्रेड + + + कालीनिनग्राड + + + मॉस्को + + + वोल्गोग्राद + + + समारा + + + येकातेरिनबर्ग + + + ओम्स्क + + + नोवोसिबिर्स्क + + + नोवोकुज़्नेत्स्क + + + क्रास्नोयार्स्क + + + इर्कुत्स्क + + + याकूत्स्क + + + व्लादिवोस्तोक + + + खांडिगा + + + सखालिन + + + यूस्ट–नेरा + + + मागादान + + + कमचत्का + + + अनाडिर + + + किगाली + + + रियाद + + + ग्वाडलकनाल + + + माहे + + + खार्तूम + + + स्टॉकहोम + + + सिंगापुर + + + सेंट हेलेना + + + ल्यूबेलजाना + + + लॉन्गईयरबायेन + + + ब्रातिस्लावा + + + फ़्रीटाउन + + + सैन मारीनो + + + डकार + + + मोगादिशु + + + पारामारिबो + + + जुबा + + + साओ टोम + + + अल सल्वाडोर + + + लोअर प्रिंसेस क्वार्टर + + + दमास्कस + + + एमबाबेन + + + ग्रांड टर्क + + + नेद्जामीना + + + करगुलेन + + + लोम + + + बैंकॉक + + + दुशांबे + + + फ़ाकाओफ़ो + + + डिलि + + + अश्गाबात + + + ट्यूनिस + + + टोंगाटापू + + + इस्तांबुल + + + पोर्ट ऑफ़ स्पेन + + + फ़्यूनाफ़ुटी + + + ताईपेई + + + दार अस सलाम + + + अज़्गोरोद + + + कीव + + + सिम्फ़ेरोपोल + + + ज़ैपोरोज़ाइ + + + कंपाला + + + मिडवे + + + जॉनस्टन + + + वेक + + + अडक + + + नोम + + + होनोलुलु + + + एंकरेज + + + याकूटाट + + + सिट्का + + + ज्यूनाउ + + + मेट्लेकाट्ला + + + लॉस एंजिल्स + + + बॉइस + + + फ़ीनिक्स + + + डेनवर + + + ब्यूला, उत्तरी डकोटा + + + न्यू सालेम, उत्तरी डकोटा + + + मध्य, उत्तरी दाकोता + + + शिकागो + + + मेनोमिनी + + + विंसेनेस, इंडियाना + + + पीटर्सबर्ग, इंडियाना + + + टेल सिटी, इंडियाना + + + नौक्स, इंडियाना + + + विनामेक, इंडियाना + + + मारेंगो, इंडियाना + + + इंडियानापोलिस + + + लुइसविले + + + वेवे, इंडियाना + + + मोंटीसेलो, केंचुकी + + + डेट्रॉयट + + + न्यूयॉर्क + + + मोंटेवीडियो + + + समरकंद + + + ताशकंद + + + वेटिकन + + + सेंट विंसेंट + + + काराकस + + + टोर्टोला + + + सेंट थॉमस + + + हो ची मिन्ह सिटी + + + एफ़ेट + + + वालिस + + + एपिया + + + आदेन + + + मायोत्ते + + + जोहांसबर्ग + + + लुसाका + + + हरारे + + + + अफ़गानिस्तान समय + + + + + मध्य अफ़्रीका समय + + + + + पूर्वी अफ़्रीका समय + + + + + दक्षिण अफ़्रीका समय + + + + + पश्चिम अफ़्रीका समय + पश्चिम अफ़्रीका मानक समय + पश्चिम अफ़्रीका ग्रीष्मकालीन समय + + + + + अलास्का समय + अलास्‍का मानक समय + अलास्‍का डेलाइट समय + + + + + अमेज़न समय + अमेज़न मानक समय + अमेज़न ग्रीष्मकालीन समय + + + + + उत्तरी अमेरिकी केंद्रीय समय + उत्तरी अमेरिकी केंद्रीय मानक समय + उत्तरी अमेरिकी केंद्रीय डेलाइट समय + + + + + उत्तरी अमेरिकी पूर्वी समय + उत्तरी अमेरिकी पूर्वी मानक समय + उत्तरी अमेरिकी पूर्वी डेलाइट समय + + + + + उत्तरी अमेरिकी माउंटेन समय + उत्तरी अमेरिकी माउंटेन मानक समय + उत्तरी अमेरिकी माउंटेन डेलाइट समय + + + + + उत्तरी अमेरिकी प्रशांत समय + उत्तरी अमेरिकी प्रशांत मानक समय + उत्तरी अमेरिकी प्रशांत डेलाइट समय + + + + + एनाडीयर समय + एनाडीयर मानक समय + एनाडीयर ग्रीष्मकालीन समय + + + + + अरब समय + अरब मानक समय + अरब डेलाइट समय + + + + + अर्जेंटीना समय + अर्जेंटीना मानक समय + अर्जेंटीना ग्रीष्मकालीन समय + + + + + पश्चिमी अर्जेंटीना समय + पश्चिमी अर्जेंटीना मानक समय + पश्चिमी अर्जेंटीना ग्रीष्मकालीन समय + + + + + आर्मेनिया समय + आर्मेनिया मानक समय + आर्मेनिया ग्रीष्मकालीन समय + + + + + अटलांटिक समय + अटलांटिक मानक समय + अटलांटिक डेलाइट समय + + + + + मध्य ऑस्ट्रेलियाई समय + ऑस्‍ट्रेलियाई केंद्रीय मानक समय + ऑस्‍ट्रेलियाई केंद्रीय डेलाइट समय + + + + + ऑस्‍ट्रेलियाई केंद्रीय पश्चिमी समय + ऑस्‍ट्रेलियाई केंद्रीय पश्चिमी मानक समय + ऑस्‍ट्रेलियाई केंद्रीय पश्चिमी डेलाइट समय + + + + + पूर्वी ऑस्ट्रेलिया समय + ऑस्‍ट्रेलियाई पूर्वी मानक समय + ऑस्‍ट्रेलियाई पूर्वी डेलाइट समय + + + + + पश्चिमी ऑस्ट्रेलिया समय + ऑस्ट्रेलियाई पश्चिमी मानक समय + ऑस्ट्रेलियाई पश्चिमी डेलाइट समय + + + + + अज़रबैजान समय + अज़रबैजान मानक समय + अज़रबैजान ग्रीष्मकालीन समय + + + + + अज़ोरेस समय + अज़ोरेस मानक समय + अज़ोरेस ग्रीष्मकालीन समय + + + + + बांग्लादेश समय + बांग्लादेश मानक समय + बांग्लादेश ग्रीष्मकालीन समय + + + + + भूटान समय + + + + + बोलीविया समय + + + + + ब्राजीलिया समय + ब्राजीलिया मानक समय + ब्राजीलिया ग्रीष्मकालीन समय + + + + + ब्रूनेई दारूस्सलाम समय + + + + + केप वर्ड समय + केप वर्ड मानक समय + केप वर्ड ग्रीष्मकालीन समय + + + + + चामोरो मानक समय + + + + + चैथम समय + चैथम मानक समय + चैथम डेलाइट समय + + + + + चिली समय + चिली मानक समय + चिली ग्रीष्मकालीन समय + + + + + चीन समय + चीन मानक समय + चीन डेलाइट समय + + + + + कॉइबाल्सन समय + कॉइबाल्सन मानक समय + कॉइबाल्सन ग्रीष्मकालीन समय + + + + + क्रिसमस द्वीप समय + + + + + कोकोस द्वीपसमूह समय + + + + + कोलंबिया समय + कोलंबिया मानक समय + कोलंबिया ग्रीष्मकालीन समय + + + + + कुक द्वीपसमूह समय + कुक द्वीपसमूह मानक समय + कुक द्वीपसमूह अर्द्ध ग्रीष्मकालीन समय + + + + + क्यूबा समय + क्यूबा मानक समय + क्यूबा डेलाइट समय + + + + + डेविस समय + + + + + ड्यूमोंट डर्विल समय + + + + + पूर्वी तिमोर समय + + + + + ईस्टर द्वीप समय + ईस्टर द्वीप मानक समय + ईस्टर द्वीप ग्रीष्मकालीन समय + + + + + इक्वाडोर समय + + + + + मध्य यूरोपीय समय + मध्य यूरोपीय मानक समय + मध्‍य यूरोप ग्रीष्‍मकालीन समय + + + + + पूर्वी यूरोपीय समय + पूर्वी यूरोपीय मानक समय + पूर्वी यूरोपीय ग्रीष्मकालीन समय + + + + + पश्चिमी यूरोपीय समय + पश्चिमी यूरोपीय मानक समय + पश्चिमी यूरोपीय ग्रीष्‍मकालीन समय + + + + + फ़ॉकलैंड द्वीपसमूह समय + फ़ॉकलैंड द्वीपसमूह मानक समय + फ़ॉकलैंड द्वीपसमूह ग्रीष्मकालीन समय + + + + + फ़िजी का समय + फ़िजी का मानक समय + फ़िजी का ग्रीष्मकालीन समय + + + + + फ़्रेंच गुयाना समय + + + + + दक्षिणी फ़्रांस और अंटार्कटिक समय + + + + + गैलापेगोस का समय + + + + + गैंबियर समय + + + + + जॉर्जिया समय + जॉर्जिया मानक समय + जॉर्जिया ग्रीष्मकालीन समय + + + + + गिल्बर्ट द्वीपसमूह समय + + + + + ग्रीनविच मीन टाइम + + + + + पूर्वी ग्रीनलैंड समय + पूर्वी ग्रीनलैंड मानक समय + पूर्वी ग्रीनलैंड ग्रीष्मकालीन समय + + + + + पश्चिमी ग्रीनलैंड समय + पश्चिमी ग्रीनलैंड मानक समय + पश्चिमी ग्रीनलैंड ग्रीष्मकालीन समय + + + + + खाड़ी मानक समय + + + + + गुयाना समय + + + + + हवाई–आल्यूशन समय + हवाई–आल्यूशन मानक समय + हवाई–आल्यूशन डेलाइट समय + + + + + हाँग काँग समय + हाँग काँग मानक समय + हाँग काँग ग्रीष्मकालीन समय + + + + + होव्ड समय + होव्ड मानक समय + होव्ड ग्रीष्मकालीन समय + + + + + भारतीय समय + + + IST + + + + + हिंद महासागर समय + + + + + इंडोचाइना समय + + + + + मध्य इंडोनेशिया समय + + + + + पूर्वी इंडोनेशिया समय + + + + + पश्चिमी इंडोनेशिया समय + + + + + ईरान समय + ईरान मानक समय + ईरान डेलाइट समय + + + + + इर्कुत्स्क समय + इर्कुत्स्क मानक समय + इर्कुत्स्क ग्रीष्मकालीन समय + + + + + इज़राइल समय + इज़राइल मानक समय + इज़राइल डेलाइट समय + + + + + जापान समय + जापान मानक समय + जापान डेलाइट समय + + + + + पेट्रोपेवलास्क-कैमचात्सकी समय + पेट्रोपेवलास्क-कैमचात्सकी मानक समय + पेट्रोपेवलास्क-कैमचात्सकी ग्रीष्मकालीन समय + + + + + पूर्व कज़ाखस्तान समय + + + + + पश्चिम कज़ाखस्तान समय + + + + + कोरियाई समय + कोरियाई मानक समय + कोरियाई डेलाइट समय + + + + + कोसराए समय + + + + + क्रास्नोयार्स्क समय + क्रास्नोयार्स्क मानक समय + क्रास्नोयार्स्क ग्रीष्मकालीन समय + + + + + किर्गिस्‍तान समय + + + + + लाइन द्वीपसमूह समय + + + + + लॉर्ड होवे समय + लॉर्ड होवे मानक समय + लॉर्ड होवे डेलाइट समय + + + + + मक्वारी द्वीप समय + + + + + मागादान समय + मागादान मानक समय + मागादान ग्रीष्मकालीन समय + + + + + मलेशिया समय + + + + + मालदीव समय + + + + + मार्कोसिस समय + + + + + मार्शल द्वीपसमूह समय + + + + + मॉरीशस समय + मॉरीशस मानक समय + मॉरीशस ग्रीष्मकालीन समय + + + + + माव्सन समय + + + + + उलान बटोर समय + उलान बटोर मानक समय + उलान बटोर ग्रीष्मकालीन समय + + + + + मॉस्को समय + मॉस्को मानक समय + मॉस्को ग्रीष्मकालीन समय + + + + + म्यांमार समय + + + + + नौरू समय + + + + + नेपाल समय + + + + + न्यू कैलेडोनिया समय + न्यू कैलेडोनिया मानक समय + न्यू कैलेडोनिया ग्रीष्मकालीन समय + + + + + न्यूज़ीलैंड समय + न्यूज़ीलैंड मानक समय + न्यूज़ीलैंड डेलाइट समय + + + + + न्यूफ़ाउंडलैंड समय + न्यूफ़ाउंडलैंड मानक समय + न्यूफ़ाउंडलैंड डेलाइट समय + + + + + नीयू समय + + + + + नॉरफ़ॉक द्वीप समय + + + + + फ़र्नांर्डो डे नोरोन्हा समय + फ़र्नांर्डो डे नोरोन्हा मानक समय + फ़र्नांर्डो डे नोरोन्हा ग्रीष्मकालीन समय + + + + + नोवोसिबिर्स्क समय + नोवोसिबिर्स्क मानक समय + नोवोसिबिर्स्क ग्रीष्मकालीन समय + + + + + ओम्स्क समय + ओम्स्क मानक समय + ओम्स्क ग्रीष्मकालीन समय + + + + + पाकिस्तान समय + पाकिस्तान मानक समय + पाकिस्तान ग्रीष्मकालीन समय + + + + + पलाउ समय + + + + + पापुआ न्यू गिनी समय + + + + + पैराग्वे समय + पैराग्वे मानक समय + पैराग्वे ग्रीष्मकालीन समय + + + + + पेरू समय + पेरू मानक समय + पेरू ग्रीष्मकालीन समय + + + + + फ़िलिपीन समय + फ़िलिपीन मानक समय + फ़िलिपीन ग्रीष्मकालीन समय + + + + + फ़ीनिक्स द्वीपसमूह समय + + + + + सेंट पियरे और मिकेलान टाइम + सेंट पियरे और मिकेलान मानक टाइम + सेंट पियरे और मिकेलान डेलाइट टाइम + + + + + पिटकैर्न समय + + + + + पोनापे समय + + + + + रीयूनियन समय + + + + + रोथेरा समय + + + + + सखालिन समय + सखालिन मानक समय + सखालिन ग्रीष्मकालीन समय + + + + + समारा समय + समारा मानक समय + समारा ग्रीष्मकालीन समय + + + + + समोआ समय + समोआ मानक समय + समोआ ग्रीष्मकालीन समय + + + + + सेशल्स समय + + + + + सिंगापुर समय + + + + + सोलोमन द्वीपसमूह समय + + + + + दक्षिणी जॉर्जिया समय + + + + + सूरीनाम समय + + + + + स्योवा समय + + + + + ताहिती समय + + + + + ताइपे समय + ताइपे मानक समय + ताइपे डेलाइट समय + + + + + ताजिकिस्तान समय + + + + + टोकेलाऊ समय + + + + + टोंगा समय + टोंगा मानक समय + टोंगा ग्रीष्मकालीन समय + + + + + चूक समय + + + + + तुर्कमेनिस्तान समय + तुर्कमेनिस्तान मानक समय + तुर्कमेनिस्तान ग्रीष्मकालीन समय + + + + + तुवालू समय + + + + + उरुग्वे समय + उरुग्वे मानक समय + उरुग्वे ग्रीष्मकालीन समय + + + + + उज़्बेकिस्तान समय + उज़्बेकिस्तान मानक समय + उज़्बेकिस्तान ग्रीष्मकालीन समय + + + + + वनुआतू समय + वनुआतू मानक समय + वनुआतू ग्रीष्मकालीन समय + + + + + वेनेज़ुएला समय + + + + + व्लादिवोस्तोक समय + व्लादिवोस्तोक मानक समय + व्लादिवोस्तोक ग्रीष्मकालीन समय + + + + + वोल्गोग्राड समय + वोल्गोग्राड मानक समय + वोल्गोग्राड ग्रीष्मकालीन समय + + + + + वोस्तोक समय + + + + + वेक द्वीप समय + + + + + वालिस और फ़्यूचूना समय + + + + + याकुत्स्क समय + याकुत्स्क मानक समय + याकुत्स्क ग्रीष्मकालीन समय + + + + + येकातेरिनबर्ग समय + येकातेरिनबर्ग मानक समय + येकातेरिनबर्ग ग्रीष्मकालीन समय + + + + + + latn + + deva + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##,##0.### + + + + + 0 हज़ार + 0 हज़ार + 00 हज़ार + 00 हज़ार + 0 लाख + 0 लाख + 00 लाख + 00 लाख + 0 करोड़ + 0 करोड़ + 00 करोड़ + 00 करोड़ + 0 अरब + 0 अरब + 00 अरब + 00 अरब + 0 खरब + 0 खरब + 00 खरब + 00 खरब + 000 खरब + 000 खरब + 0000 खरब + 0000 खरब + + + + + 0 + 0 + 0 + 0 + 0L + 0L + 00L + 00L + 0Cr + 0Cr + 00Cr + 00Cr + 000Cr + 000Cr + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + ¤#,##,##0.00 + + + {0} {1} + {0} {1} + + + + संयुक्त अरब अमीरात दिरहाम + संयुक्त अरब अमीरात दिरहाम + संयुक्त अरब अमीरात दिरहाम + + + अफगानी (1927–2002) + + + अफ़गान अफ़गानी + अफ़गान अफ़गानी + अफ़गान अफ़गानी + + + अल्बानियाई लेक + अल्बानियाई लेक + अल्बानियाई लेक + + + आर्मेनियाई द्राम + आर्मेनियाई द्राम + आर्मेनियाई द्राम + + + नीदरलैंड एंटीलियन गिल्डर + नीदरलैंड एंटीलियन गिल्डर + नीदरलैंड एंटीलियन गिल्डर + + + अंगोला क्वांज़ा + अंगोला क्वांज़ा + अंगोला क्वांज़ा + + + अर्जेंटीनी पीसो + अर्जेंटीनी पीसो + अर्जेंटीनी पीसो + + + ऑस्ट्रेलियाई डॉलर + ऑस्ट्रेलियाई डॉलर + ऑस्ट्रेलियाई डॉलर + A$ + + + अरूबाई फ़्लोरिन + अरूबाई फ़्लोरिन + अरूबाई फ़्लोरिन + + + अज़रबैजानी मैनेट + अज़रबैजानी मैनेट + अज़रबैजानी मैनेट + + + बोस्निया हर्ज़ेगोविना परिवर्तनीय मार्क + बोस्निया हर्ज़ेगोविना परिवर्तनीय मार्क + बोस्निया हर्ज़ेगोविना परिवर्तनीय मार्क + + + बार्बेडियन डॉलर + बार्बेडियन डॉलर + बार्बेडियन डॉलर + + + बांग्लादेशी टका + बांग्लादेशी टका + बांग्लादेशी टका + + + बुल्गारियाई लेव + बुल्गारियाई लेव + बुल्गारियाई लेव + + + बहरीनी दिनार + बहरीनी दिनार + बहरीनी दिनार + + + बुरूंडी फ़्रैंक + बुरूंडी फ़्रैंक + बुरूंडी फ़्रैंक + + + बरमूडा डॉलर + बरमूडा डॉलर + बरमूडा डॉलर + + + ब्रूनेई डॉलर + ब्रूनेई डॉलर + ब्रूनेई डॉलर + + + बोलिवियाई बोलिवियानो + बोलिवियाई बोलिवियानो + बोलिवियाई बोलिवियानो + + + ब्राज़ीली रियाल + ब्राज़ीली रियाल + ब्राज़ीली रियाल + R$ + + + बहामाई डॉलर + बहामाई डॉलर + बहामाई डॉलर + + + भूटानी नंगलट्रम + भूटानी नंगलट्रम + भूटानी नंगलट्रम + + + बोत्सवानियाई पुला + बोत्सवानियाई पुला + बोत्सवानियाई पुला + + + बेलारूसी रूबल + बेलारूसी रूबल + बेलारूसी रूबल + + + बेलीज़ डॉलर + बेलीज़ डॉलर + बेलीज़ डॉलर + + + कनाडाई डॉलर + कनाडाई डॉलर + कनाडाई डॉलर + CA$ + + + कोंगोली फ़्रैंक + कोंगोली फ़्रैंक + कोंगोली फ़्रैंक + + + स्विस फ़्रैंक + स्विस फ़्रैंक + स्विस फ़्रैंक + + + चिली पीसो + चिली पीसो + चिली पीसो + + + चीनी युआन + चीनी युआन + चीनी युआन + CN¥ + + + कोलंबियाई पीसो + कोलंबियाई पीसो + कोलंबियाई पीसो + + + कोस्टा रिका कोलोन + कोस्टा रिका कोलोन + कोस्टा रिका कोलोन + + + सर्बिय का ढीनार + + + क्यूबाई परिवर्तनीय पीसो + क्यूबाई परिवर्तनीय पीसो + क्यूबाई परिवर्तनीय पीसो + + + क्यूबाई पीसो + क्यूबाई पीसो + क्यूबाई पीसो + + + केप वर्ड एस्कूडो + केप वर्ड एस्कूडो + केप वर्ड एस्कूडो + + + साईप्रस पाऊंड + + + चेक गणराज्य कोरुना + चेक गणराज्य कोरुना + चेक गणराज्य कोरुना + + + डच मार्क + + + जिबूती फ़्रैंक + जिबूती फ़्रैंक + जिबूती फ़्रैंक + + + डेनमार्क क्रोन + डेनमार्क क्रोन + डेनमार्क क्रोन + + + डोमिनिकन पीसो + डोमिनिकन पीसो + डोमिनिकन पीसो + + + अल्जीरियाई दिनार + अल्जीरियाई दिनार + अल्जीरियाई दिनार + + + एस्टोनियाई क्रून् + + + मिस्र पाउंड + मिस्र पाउंड + मिस्र पाउंड + + + इरीट्रियन नाक्फ़ा + इरीट्रियन नाक्फ़ा + इरीट्रियन नाक्फ़ा + + + इथियोपियन बिर + इथियोपियन बिर + इथियोपियन बिर + + + यूरो + यूरो + यूरो + + + + फ़िजी डॉलर + फ़िजी डॉलर + फ़िजी डॉलर + + + फ़ॉकलैंड द्वीप पाउंड + फ़ॉकलैंड द्वीप पाउंड + फ़ॉकलैंड द्वीप पाउंड + + + फ़्रांसीसी फ़्रैंक + + + ब्रिटिश पाउंड स्टर्लिंग + ब्रिटिश पाउंड स्टर्लिंग + ब्रिटिश पाउंड स्टर्लिंग + £ + + + जॉर्जियन लारी + जॉर्जियन लारी + जॉर्जियन लारी + + + घानियन सेडी + घानियन सेडी + घानियन सेडी + + + जिब्राल्टर पाउंड + जिब्राल्टर पाउंड + जिब्राल्टर पाउंड + + + गैंबियन डलासी + गैंबियन डलासी + गैंबियन डलासी + + + गिनीयन फ़्रैंक + गिनीयन फ़्रैंक + गिनीयन फ़्रैंक + + + ग्वाटेमाला क्वेटज़ल + ग्वाटेमाला क्वेटज़ल + ग्वाटेमाला क्वेटज़ल + + + गयानीज़ डॉलर + गयानीज़ डॉलर + गयानीज़ डॉलर + + + हाँगकाँग डॉलर + हाँगकाँग डॉलर + हाँगकाँग डॉलर + HK$ + + + होंडुरन लेम्पिरा + होंडुरन लेम्पिरा + होंडुरन लेम्पिरा + + + क्रोएशियन दिनार + + + क्रोएशियाई कुना + क्रोएशियाई कुना + क्रोएशियाई कुना + + + हैशियन गर्ड + हैशियन गर्ड + हैशियन गर्ड + + + हंगेरियन फ़ोरिंट + हंगेरियन फ़ोरिंट + हंगेरियन फ़ोरिंट + + + इंडोनेशियाई रुपिया + इंडोनेशियाई रुपिया + इंडोनेशियाई रुपिया + + + इसराइली न्यू शेकेल + इसराइली न्यू शेकेल + इसराइली न्यू शेकेल + + + + भारतीय रुपया + भारतीय रुपया + भारतीय रूपए + + + + इराकी दिनार + इराकी दिनार + इराकी दिनार + + + ईरानी रियाल + ईरानी रियाल + ईरानी रियाल + + + आइसलैंडिक क्रोना + आइसलैंडिक क्रोना + आइसलैंडिक क्रोना + + + इतली का लीरा + + + जमैकन डॉलर + जमैकन डॉलर + जमैकन डॉलर + + + जॉर्डनियन दिनार + जॉर्डनियन दिनार + जॉर्डनियन दिनार + + + जापानी येन + जापानी येन + जापानी येन + JP¥ + + + केन्याई शिलिंग + केन्याई शिलिंग + केन्याई शिलिंग + + + किर्गिस्तानी सोम + किर्गिस्तानी सोम + किर्गिस्तानी सोम + + + कंबोडियाई रियाल + कंबोडियाई रियाल + कंबोडियाई रियाल + + + कोमोरियन फ़्रैंक + कोमोरियन फ़्रैंक + कोमोरियन फ़्रैंक + + + उत्तर कोरियाई वॉन + उत्तर कोरियाई वॉन + उत्तर कोरियाई वॉन + + + दक्षिण कोरियाई वॉन + दक्षिण कोरियाई वॉन + दक्षिण कोरियाई वॉन + + + + कुवैती दिनार + कुवैती दिनार + कुवैती दिनार + + + कैमेन द्वीप डॉलर + कैमेन द्वीप डॉलर + कैमेन द्वीप डॉलर + + + कज़ाखिस्तानी टेंज़ + कज़ाखिस्तानी टेंज़ + कज़ाखिस्तानी टेंज़ + + + लाओशियन किप + लाओशियन किप + लाओशियन किप + + + लेबनानी पाउंड + लेबनानी पाउंड + लेबनानी पाउंड + + + श्रीलंकाई रुपया + श्रीलंकाई रुपया + श्रीलंकाई रुपए + + + लाइबेरियाई डॉलर + लाइबेरियाई डॉलर + लाइबेरियाई डॉलर + + + लेसोथो लोटी + + + लिथुआनियाई लितास + लिथुआनियाई लितास + लिथुआनियाई लितास + + + लात्वियन लैत्स + लात्वियन लैत्स + लात्वियन लैत्स + + + लीबियाई दिनार + लीबियाई दिनार + लीबियाई दिनार + + + मोरक्को दिरहम + मोरक्को दिरहम + मोरक्को दिरहम + + + मोरक्को फ्रैंक + + + मोल्डोवन लियू + मोल्डोवन लियू + मोल्डोवन लियू + + + मालागासी आरियरी + मालागासी आरियरी + मालागासी आरियरी + + + मैसीडोनियन दिनार + मैसीडोनियन दिनार + मैसीडोनियन दिनार + + + म्यांमा क्याट + म्यांमा क्याट + म्यांमा क्याट + + + मंगोलियाई टगरिक + मंगोलियाई टगरिक + मंगोलियाई टगरिक + + + मेकानीज़ पाटाका + मेकानीज़ पाटाका + मेकानीज़ पाटाका + + + मॉरीटेनियन ओगुइया + मॉरीटेनियन ओगुइया + मॉरीटेनियन ओगुइया + + + मॉरिशियन रुपया + मॉरिशियन रुपया + मॉरिशियन रुपया + + + मालदीवी रुफ़िया + मालदीवी रुफ़िया + मालदीवी रुफ़िया + + + मालावियन क्वाचा + मालावियन क्वाचा + मालावियन क्वाचा + + + मैक्सिकन पीसो + मैक्सिकन पीसो + मैक्सिकन पीसो + MX$ + + + मलेशियाई रिंगित + मलेशियाई रिंगित + मलेशियाई रिंगित + + + मोज़ाम्बिकन मेटिकल + मोज़ाम्बिकन मेटिकल + मोज़ाम्बिकन मेटिकल + + + नामीबियाई डॉलर + नामीबियाई डॉलर + नामीबियाई डॉलर + + + नाइजीरियाई नाइरा + नाइजीरियाई नाइरा + नाइजीरियाई नाइरा + + + निकारागुअन कोरडोबा + निकारागुअन कोरडोबा + निकारागुअन कोरडोबा + + + नॉर्वेजियन क्रोन + नॉर्वेजियन क्रोन + नॉर्वेजियन क्रोन + + + नेपाली रुपया + नेपाली रुपया + नेपाली रुपए + + + न्यूज़ीलैंड डॉलर + न्यूज़ीलैंड डॉलर + न्यूज़ीलैंड डॉलर + NZ$ + + + ओमानी रियाल + ओमानी रियाल + ओमानी रियाल + + + पनामेनियन बैल्बोआ + पनामेनियन बैल्बोआ + पनामेनियन बैल्बोआ + + + पेरूवियन नुएवो सोल + पेरूवियन नुएवो सोल + पेरूवियन नुएवो सोल + + + पापुआ न्यू गिनीयन किना + पापुआ न्यू गिनीयन किना + पापुआ न्यू गिनीयन किना + + + फ़िलिपीनी पीसो + फ़िलिपीनी पीसो + फ़िलिपीनी पीसो + + + पाकिस्तानी रुपया + पाकिस्तानी रुपया + पाकिस्तानी रुपए + + + पोलिश ज़्लॉटी + पोलिश ज़्लॉटी + पोलिश ज़्लॉटी + + + पैराग्वियन गुआरानी + पैराग्वियन गुआरानी + पैराग्वियन गुआरानी + + + क़तरी रियाल + क़तरी रियाल + क़तरी रियाल + + + रोडेशियाई डालर + + + रोमानियाई ल्यू + रोमानियाई ल्यू + रोमानियाई ल्यू + + + सर्बियन दिनार + सर्बियन दिनार + सर्बियन दिनार + + + रूसी रूबल + रूसी रूबल + रूसी रूबल + + + रवांडाई फ़्रैंक + रवांडाई फ़्रैंक + रवांडाई फ़्रैंक + + + सउदी रियाल + सउदी रियाल + सउदी रियाल + + + सोलोमन द्वीपसमूह डॉलर + सोलोमन द्वीपसमूह डॉलर + सोलोमन द्वीपसमूह डॉलर + + + सेशेल्सियाई रुपया + सेशेल्सियाई रुपया + सेशेल्सियाई रुपया + + + पुरानी सूडानी दिनार + + + सूडानी पाउंड + सूडानी पाउंड + सूडानी पाउंड + + + पुराना सूडानी पाउंड + + + स्वीडीश क्रोना + स्वीडीश क्रोना + स्वीडीश क्रोना + + + सिंगापुर डॉलर + सिंगापुर डॉलर + सिंगापुर डॉलर + + + सेंट हेलेना पाउंड + सेंट हेलेना पाउंड + सेंट हेलेना पाउंड + + + स्लोवेनियाई तोलार + + + स्लोवाक कोरुना + + + सिएरा लियोनियन लियोन + सिएरा लियोनियन लियोन + सिएरा लियोनियन लियोन + + + सोमाली शिलिंग + सोमाली शिलिंग + सोमाली शिलिंग + + + सूरीनामी डॉलर + सूरीनामी डॉलर + सूरीनामी डॉलर + + + सूरीनामी गिल्डर + + + दक्षिण सूडानी पाउंड + दक्षिण सूडानी पाउंड + दक्षिण सूडानी पाउंड + + + साओ तोम और प्रिंसिपे डोबरा + साओ तोम और प्रिंसिपे डोबरा + साओ तोम और प्रिंसिपे डोबरा + + + सोवियत रूबल + + + सीरियाई पाउंड + सीरियाई पाउंड + सीरियाई पाउंड + + + स्वाज़ी लिलांजेनी + स्वाज़ी लिलांजेनी + स्वाज़ी लिलांजेनी + + + थाई बहत + थाई बहत + थाई बहत + ฿ + + + तजाखी रूबल + + + ताजिकिस्तानी सोमोनी + ताजिकिस्तानी सोमोनी + ताजिकिस्तानी सोमोनी + + + तुर्कमेनिस्तानी मैनत + तुर्कमेनिस्तानी मैनत + तुर्कमेनिस्तानी मैनत + + + ट्यूनीशियाई दिनार + ट्यूनीशियाई दिनार + ट्यूनीशियाई दिनार + + + टोंगन पांगा + टोंगन पांगा + टोंगन पांगा + + + पुरानी तुर्की लीरा + + + तुर्की लीरा + तुर्की लीरा + तुर्की लीरा + + + त्रिनिदाद और टोबैगो डॉलर + त्रिनिदाद और टोबैगो डॉलर + त्रिनिदाद और टोबैगो डॉलर + + + नया ताईवानी डॉलर + नया ताईवानी डॉलर + नया ताईवानी डॉलर + NT$ + + + तंज़ानियाई शिलिंग + तंज़ानियाई शिलिंग + तंज़ानियाई शिलिंग + + + यूक्रेनियन रिव्निया + यूक्रेनियन रिव्निया + यूक्रेनियन रिव्निया + + + युगांडाई शिलिंग + युगांडाई शिलिंग + युगांडाई शिलिंग + + + यूएस डॉलर + यूएस डॉलर + यूएस डॉलर + $ + + + अमेरीकी डालर (कल) + + + अमेरीकी डालर (आज) + + + उरुग्वियन पीसो + उरुग्वियन पीसो + उरुग्वियन पीसो + + + उज़्बेकिस्तान सोम + उज़्बेकिस्तान सोम + उज़्बेकिस्तान सोम + + + वेनेज़ुएला बोलिवर (1871–2008) + + + वेनेज़ुएला बोलिवर + वेनेज़ुएला बोलिवर + वेनेज़ुएला बोलिवर + + + वियतनामी डोंग + वियतनामी डोंग + वियतनामी डोंग + + + + वनुआतू वातू + वनुआतू वातू + वनुआतू वातू + + + समोआई ताला + समोआई ताला + समोआई ताला + + + CFA फ़्रैंक BEAC + CFA फ़्रैंक BEAC + CFA फ़्रैंक BEAC + FCFA + + + पूर्वी कैरिबियाई डॉलर + पूर्वी कैरिबियाई डॉलर + पूर्वी कैरिबियाई डॉलर + EC$ + + + CFA फ़्रैंक BCEAO + CFA फ़्रैंक BCEAO + CFA फ़्रैंक BCEAO + CFA + + + CFP फ़्रैंक + CFP फ़्रैंक + CFP फ़्रैंक + CFPF + + + अज्ञात मुद्रा + (मुद्रा की अज्ञात इकाई) + (अज्ञात मुद्रा) + + + यमनी रियाल + यमनी रियाल + यमनी रियाल + + + दक्षिण अफ़्रीकी रैंड + दक्षिण अफ़्रीकी रैंड + दक्षिण अफ़्रीकी रैंड. + + + ज़ाम्बियन क्वाचा (1968–2012) + + + ज़ाम्बियन क्वाचा + ज़ाम्बियन क्वाचा + ज़ाम्बियन क्वाचा + + + + {0}+ + {0}–{1} + + + + + + {0} प्रति {1} + + + {0} गु–बल + {0} गु–बल + + + {0} मिनट + {0} मिनट + + + {0}सेकंड + {0}सेकंड + + + {0} अंश + {0} अंश + + + {0} एकड़ + {0} एकड़ + + + {0} हेक्टेयर + {0} हेक्टेयर + + + {0} वर्गफ़ुट + {0} वर्गफ़ीट + + + {0} वर्ग किलोमीटर + {0} वर्ग किलोमीटर + + + {0} वर्ग मीटर + {0} वर्ग मीटर + + + {0} वर्ग मील + {0} वर्ग मील + + + {0} दिन + {0} दिन + + + {0} घंटा + {0} घंटे + + + {0} मिलीसेकंड + {0} मिलीसेकंड + + + {0} मिनट + {0} मिनट + + + {0} माह + {0} माह + + + {0} सेकंड + {0} सेकंड + + + {0} सप्ताह + {0} सप्ताह + + + {0} वर्ष + {0} वर्ष + + + {0} सेंटीमीटर + {0} सेंटीमीटर + + + {0} फ़ुट + {0} फ़ीट + + + {0} इंच + {0} इंच + + + {0} किलोमीटर + {0} किलोमीटर + + + {0} प्रकाश वर्ष + {0} प्रकाश वर्ष + + + {0} मीटर + {0} मीटर + + + {0} मील + {0} मील + + + {0} मिलीमीटर + {0} मिलीमीटर + + + {0} पिकोमीटर + {0} पिकोमीटर + + + {0} गज + {0} गज + + + {0} ग्राम + {0} ग्राम + + + {0} किलोग्राम + {0} किलोग्राम + + + {0} औंस + {0} औंस + + + {0} पौंड + {0} पौंड + + + {0} अश्वशक्ति + {0} अश्वशक्ति + + + {0} किलोवॉट + {0} किलोवॉट + + + {0} वॉट + {0} वॉट + + + {0} हैक्टोपास्कल + {0} हैक्टोपास्कल + + + {0} मर्करी इंच + {0} मर्करी इंच + + + {0} मिलीबार + {0} मिलीबार + + + {0} किलोमीटर प्रति घंटा + {0} किलोमीटर प्रति घंटा + + + {0} मीटर प्रति सेकंड + {0} मीटर प्रति सेकंड + + + {0} मील प्रति घंटा + {0} मील प्रति घंटा + + + {0} डिग्री सेल्सियस + {0} डिग्री सेल्सियस + + + {0} डिग्री फ़ेरनहाइट + {0} डिग्री फ़ेरनहाइट + + + {0} घन किलोमीटर + {0} घन किलोमीटर + + + {0} घन मील + {0} घन मील + + + {0} लीटर + {0} लीटर + + + + + {0}/{1} + + + {0} गु. + {0} गु. + + + {0} मि + {0} मि + + + {0} से. + {0} से. + + + {0} अंश + {0} अंश + + + {0} एकड़ + {0} एकड़ + + + {0} हे. + {0} हे. + + + {0} व.फ़ी. + {0} व.फ़ी. + + + {0} वर्ग किमी + {0} वर्ग किमी + + + {0} वर्ग मी. + {0} वर्ग मी. + + + {0} वर्ग मील + {0} वर्ग मील + + + {0} दिन + {0} दिन + + + {0} घं. + {0} घं. + + + {0} मिसे + {0} मिसे + + + {0} मि. + {0} मि. + + + {0} माह + {0} माह + + + {0} सेक. + {0} सेक. + + + {0} स. + {0} स. + + + {0} वर्ष + {0} वर्ष + + + {0} सेमी + {0} सेमी + + + {0} फ़ी + {0} फ़ी + + + {0} इं + {0} इं + + + {0} किमी + {0} किमी + + + {0} प्र.व. + {0} प्र.व. + + + {0} मी + {0} मी + + + {0} मील + {0} मील + + + {0} मिमी + {0} मिमी + + + {0} पि.मी. + {0} पि.मी. + + + {0} गज + {0} गज + + + {0} ग्रा + {0} ग्रा + + + {0} किग्रा + {0} किग्रा + + + {0} औं. + {0} औं. + + + {0} पौंड + {0} पौंड + + + {0} एचपी + {0} एचपी + + + {0} कि.वॉ. + {0} कि.वॉ. + + + {0} वॉ + {0} वॉ + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} किमी प्रति घं + {0} किमी प्रति घं + + + {0} मी./से. + {0} मी./से. + + + {0} mph + {0} mph + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} घन किमी + {0} घन किमी + + + {0} घन मील + {0} घन मील + + + {0} ली. + {0} ली. + + + + + {0}/{1} + + + {0}गु. + {0}गु. + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}एकड़ + {0}एकड़ + + + {0}हे. + {0}हे. + + + {0}ft² + {0}ft² + + + {0} km² + {0} km² + + + {0} वर्ग मी. + {0} वर्ग मी. + + + {0}वर्ग मील + {0}वर्ग मील + + + {0}दिन + {0}दिन + + + {0}घं. + {0}घं. + + + {0} मिसे + {0} मिसे + + + {0}मि. + {0}मि. + + + {0}माह + {0}माह + + + {0}से. + {0}से. + + + {0}स. + {0}स. + + + {0}वर्ष + {0}वर्ष + + + {0}सेमी + {0}सेमी + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}किमी + {0}किमी + + + {0}प्र.व. + {0}प्र.व. + + + {0}मी + {0}मी + + + {0}मील + {0}मील + + + {0}मिमी + {0}मिमी + + + {0}पि.मी. + {0}पि.मी. + + + {0}गज + {0}गज + + + {0}ग्रा + {0}ग्रा + + + {0}किग्रा + {0}किग्रा + + + {0}औं. + {0}औं. + + + {0}# + {0}# + + + {0}एचपी + {0}एचपी + + + {0}कि.वॉ. + {0}कि.वॉ. + + + {0}वॉ + {0}वॉ + + + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + + + {0}mb + {0}mb + + + {0}kph + {0}kph + + + {0}मी./से. + {0}मी./से. + + + {0}mph + {0}mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}घन किमी + {0}घन किमी + + + {0}घन मील + {0}घन मील + + + {0}ली. + {0}ली. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, और {1} + {0} और {1} + + + {0}, {1} + {0}, {1} + {0}, और {1} + {0} और {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + हाँ + नहीं + + + + diff --git a/library/Zend/Locale/Data/hi_IN.xml b/library/Zend/Locale/Data/hi_IN.xml new file mode 100755 index 000000000..29af3259a --- /dev/null +++ b/library/Zend/Locale/Data/hi_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/hr.xml b/library/Zend/Locale/Data/hr.xml new file mode 100755 index 000000000..58acf90aa --- /dev/null +++ b/library/Zend/Locale/Data/hr.xml @@ -0,0 +1,6084 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afarski + abhaski + achinese + acoli + adangme + adigejski + avestan + afrikaans + afrihili + aghem + ainu + akanski + akkadian + aleutski + južni altai + amharski + aragonski + staroengleski + angika + arapski + moderni standardni arapski + aramejski + araukanski + arapaho + arawak + asamski + asu + asturijski + avarski + awadhi + aymara + azerbajdžanski + azerski + baškirski + baluchi + balinezijski + basa + bamunski + ghomala + bjeloruski + beja + bemba + bena + bafut + bugarski + bhojpuri + bislama + bikol + bini + kom + siksika + bambara + bengalski + tibetanski + bretonski + braj + bodo + bosanski + akoose + buriat + buginski + bulu + blin + medumba + katalonski + caddo + karipski + cayuga + atsam + čečenski + cebuano + chiga + chamorro + chibcha + chagatai + chuukese + mari + chinook žargon + choctaw + chipewyan + čeroki + čejenski + soranski kurdski + korzički + koptski + cree + krimski turski + češki + kašupski + crkvenoslavenski + chuvash + velški + danski + dakota jezik + dargwa + taita + njemački + austrijski njemački + gornjonjemački (švicarski) + delavarski + slave + dogrib + dinka + zarma + dogri + lužičkosrpski + duala + nizozemski, srednji + divehi + jola-fonyi + dyula + dzongkha + dazaga + embu + ewe + efik + staroegipatski + ekajuk + grčki + elamitski + engleski + australski engleski + kanadski engleski + britanski engleski + engleski (UK) + američki engleski + engleski (SAD) + engleski, srednji + esperanto + španjolski + latinoamerički španjolski + europski španjolski + meksički španjolski + estonski + baskijski + ewondo + perzijski + fang + fanti + fulah + finski + filipino + fidžijski + ferojski + fon + francuski + kanadski francuski + švicarski francuski + francuski, srednji + starofrancuski + sjevernofrizijski + istočnofrizijski + friulski + zapadnofrizijski + irski + ga + gayo + gbaya + škotski-galski + staroetiopski + gilbertski + galicijski + njemački, srednji visoki + guarani + staronjemački, visoki + gondi + gorontalo + gothic + grebo + starogrčki + švicarski njemački + gudžaratski + gusii + manx + gwich'in + hausa + haidi + havajski + hebrejski + hindski + hiligaynon + hetitski + hmong + hiri motu + hrvatski + gornjolužički + kreolski + mađarski + hupa + armenski + herero + interlingua + iban + ibibio + indonezijski + interligua + igbo + sichuan yi + inupiaq + iloko + ingušetski + ido + islandski + talijanski + inuktitut + japanski + lojban + ngomba + machame + judejsko-perzijski + judejsko-arapski + javanski + gruzijski + kara-kalpak + kabyle + kachin + kaje + kamba + kawi + kabardian + kanembu + tyap + makonde + zelenortski + koro + kongo + khasi + khotanese + koyra chiini + kikuyu + kuanyama + kazaški + kako + kalaallisut + kalenjin + kmerski + kimbundu + kannadski + korejski + konkani + naurski + kpelle + kanuri + karachay-balkar + karelijski + kuruški + kašmirski + shambala + bafia + kelnski + kurdski + kumyk + kutenai + komi + kornski + kirgiški + latinski + ladino + langi + lahnda + lamba + luksemburški + lezgiški + ganda + limburgish + lingala + laoski + mongo + lozi + litavski + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + luyia + latvijski + madurski + mafa + magahi + maithili + makasar + mandingo + masajski + maba + moksha + mandar + mende + meru + mauricijski kreolski + malgaški + irski, srednji + makhuwa-meetto + meta' + maršalski + maorski + micmac + minangkabau + makedonski + malajalamski + mongolski + mandžurski + manipurski + mohawk + mossi + marathski + malajski + malteški + mundang + više jezika + creek + mirandski + marwari + burmanski + myene + mordvinski + nauru + napolitanski + nama + književni norveški + sjeverni ndebele + donjonjemački + nepalski + newari + ndonga + nias + niujski + nizozemski + flamanski + kwasio + novonorveški + ngiemboon + norveški + nogajski + staronorveški + n'ko + južni ndebele + sjeverni sotho + nuer + navajo + klasični newari + nyanja + nyamwezi + nyankole + nyoro + nzima + okcitanski + ojibwa + oromski + orijski + osetski + osage + turski - otomanski + pandžapski + pangasinan + pahlavi + pampanga + papiamento + palauanski + staroperzijski + fenički + pali + poljski + pohnpeian + staroprovansalski + paštu + puštu + portugalski + brazilski portugalski + europski portugalski + kečua + rajasthani + rapa nui + rarotonški + romanš + rundi + rumunjski + moldavski + rombo + romski + korijenski + ruski + aromunski + kinyarwanda + rwa + sanskrtski + sandawe + jakutski + samarijanski aramejski + samburu + sasak + santali + ngambay + sangu + sardski + sicilijski + škotski + sindhi + južni sami + seneca + sena + selkupski + koyraboro senni + sango + staroirski + srpsko-hrvatski + tachelhit + shan + čadski arapski + sinhaleški + sidamo + slovački + slovenski + samoanski + sjeverni sami + lule sami + inari sami + skolt sami + shona + soninke + somalski + sogdien + albanski + srpski + sranan tongo + serer + svati + saho + sesotski + sundanski + sukuma + susu + sumerski + švedski + svahili + komorski + kongoanski swahili + klasični sirski + sirijski + tamilski + telugu + temne + teso + tereno + tetum + tadžički + tajlandski + tigrinya + tigriški + tiv + turkmenski + tokelaunski + tagalog + klingonski + tlingit + tamashek + cvana + tonganski + nyasa tonga + tok pisin + turski + taroko + tsonga + tsimshian + tatarski + tumbuka + tuvaluanski + twi + tasawaq + tahićanski + tuvinian + marokanski tamazight + udmurtski + uighur + ujgurski + ugaritski + ukrajinski + umbundu + nepoznati jezik + urdski + uzbečki + vai + venda + vijetnamski + volapük + votic + vunjo + valonski + walser + walamo + waray + washo + wolof + kalmyk + xhosa + soga + yao + japski + yangben + yemba + jidiš + joruba + kantonski + zhuang + zapotec + blissymbols + zenaga + standardni marokanski tamazight + kineski + kineski (pojednostavljeni) + kineski (tradicionalni) + zulu + zuni + bez jezičnog sadržaja + zazaki + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Svijet + Afrika + Sjevernoamerički kontinent + Južna Amerika + Oceanija + Zapadna Afrika + Centralna Amerika + Istočna Afrika + Sjeverna Afrika + Središnja Afrika + Južna Afrika + Amerike + Sjeverna Amerika + Karibi + Istočna Azija + Južna Azija + Jugoistočna Azija + Južna Europa + Australazija + Melanezija + Mikronezki oblast + Polinezija + Azija + Srednja Azija + Zapadna Azija + Europa + Istočna Europa + Sjeverna Europa + Zapadna Europa + Latinska Amerika + Otok Ascension + Andora + Ujedinjeni Arapski Emirati + Afganistan + Antigua i Barbuda + Angvila + Albanija + Armenija + Nizozemski Antili + Angola + Antarktika + Argentina + Američka Samoa + Austrija + Australija + Aruba + Otoci Aland + Azerbajdžan + Bosna i Hercegovina + Barbados + Bangladeš + Belgija + Burkina Faso + Bugarska + Bahrein + Burundi + Benin + Sveti Bartolomej + Bermuda + Brunej + Bolivija + Karipski otoci Nizozemske + Brazil + Bahami + Butan + Otok Bouvet + Bocvana + Bjelorusija + Belize + Kanada + Kokosovi (Keeling) Otoci + Kongo (DRK) + Srednjoafrička Republika + Kongo - Brazzaville + Kongo (RK) + Švicarska + Obala Bjelokosti + Bjelokosna Obala + Cookovi Otoci + Čile + Kamerun + Kina + Kolumbija + Otok Clipperton + Kostarika + Kuba + Zelenortska Republika + Curaçao + Božićni Otok + Cipar + Češka Republika + Njemačka + Diego Garcia + Džibuti + Danska + Dominika + Dominikanska Republika + Alžir + Ceuta i Melilla + Ekvador + Estonija + Egipat + Zapadna Sahara + Eritreja + Španjolska + Etiopija + Europska Unija + Finska + Fidži + Falklandski Otoci + Falklandski Otoci (Malvini) + Mikronezija + Farski Otoci + Francuska + Gabon + Velika Britanija + UK + Grenada + Gruzija + Francuska Gvajana + Guernsey + Gana + Gibraltar + Grenland + Gambija + Gvineja + Guadalupa + Ekvatorska Gvineja + Grčka + Južna Georgija i Južni Sendvički Otoci + Gvatemala + Guam + Gvineja Bisau + Gvajana + Hong Kong PUP Kina + Hong Kong + Otoci Heard i McDonald + Honduras + Hrvatska + Haiti + Mađarska + Kanarski Otoci + Indonezija + Irska + Izrael + Otok Man + Indija + Britanski Indijskooceanski Teritorij + Irak + Iran + Island + Italija + Jersey + Jamajka + Jordan + Japan + Kenija + Kirgistan + Kambodža + Kiribati + Komori + Sveti Kristofor i Nevis + Sjeverna Koreja + Južna Koreja + Kuvajt + Kajmanski Otoci + Kazahstan + Laos + Libanon + Sveta Lucija + Lihtenštajn + Šri Lanka + Liberija + Lesoto + Litva + Luksemburg + Latvija + Libija + Maroko + Monako + Moldavija + Crna Gora + Sveti Martin + Madagaskar + Maršalovi Otoci + Makedonija + Makedonija (BJRM) + Mali + Mijanmar (Burma) + Mongolija + Makao PUP Kina + Makao + Sjeverni Marijanski Otoci + Martinique + Mauritanija + Montserrat + Malta + Mauricijus + Maldivi + Malavi + Meksiko + Malezija + Mozambik + Namibija + Nova Kaledonija + Niger + Otok Norfolk + Nigerija + Nikaragva + Nizozemska + Norveška + Nepal + Nauru + Niue + Novi Zeland + Oman + Panama + Peru + Francuska Polinezija + Papua Nova Gvineja + Filipini + Pakistan + Poljska + Sveti Petar i Mikelon + Otoci Pitcairn + Portoriko + Palestinsko Područje + Palestina + Portugal + Palau + Paragvaj + Katar + Ostala oceanija + Reunion + Rumunjska + Srbija + Rusija + Ruanda + Saudijska Arabija + Salomonski Otoci + Sejšeli + Sudan + Švedska + Singapur + Sveta Helena + Slovenija + Svalbard i Jan Mayen + Slovačka + Sijera Leone + San Marino + Senegal + Somalija + Surinam + Južni Sudan + Sveti Toma i Princip + Salvador + Sint Maarten + Sirija + Svazi + Tristan da Cunha + Otoci Turks i Caicos + Čad + Francuske Južne i Antarktičke Zemlje + Togo + Tajland + Tadžikistan + Tokelau + Istočni Timor + Turkmenistan + Tunis + Tonga + Turska + Trinidad i Tobago + Tuvalu + Tajvan + Tanzanija + Ukrajina + Uganda + Mali udaljeni otoci SAD-a + Sjedinjene Američke Države + SAD + Urugvaj + Uzbekistan + Sveta Stolica + Sveti Vincent i Grenadini + Venezuela + Britanski Djevičanski Otoci + Američki Djevičanski Otoci + Vijetnam + Vanuatu + Wallis i Futuna + Samoa + Kosovo + Jemen + Mayotte + Južnoafrička Republika + Zambija + Zimbabve + nepoznato područje + + + tradicionalan njemački pravopis + standardizirani resian pravopis + njemačka ortografija iz 1996. + kasni srednjofrancuski do 1606. + rani moderni francuski + akademski + aluku dijalekt + istočno-armenijski + zapadno-armenijski + unificirana turska abeceda + san giorgio/bila dijalekt + boontling + rani moderni engleski + IPA fonetika + UPA fonetika + Uobičajeni pravopis + standardna ortografija + lipovački dijalekt resian jezika + metelčica + monotono + natisone dijalekt + Gniva/Njiva dijalekt + moderni volapuk + oseacco/osojane dijalekt + pamaka dijalekt + Pinyin romanizacija + politono + Računalo + izmijenjen pravopis + resian + saho + škotski standardni engleski + scouse + stolvizza/solbica dijalekt + taraskievica pravopis + ujednačena ortografija + ujednačena revidirana ortografija + valencijski + Wade-Giles romanizacija + + + kalendar + Zanemarivanje poredavanja simbola + Obrnuto poredavanje po naglasku + Poredavanje po velikim/malim slovima + Poredavanje u skladu s veličinom slova + Poredavanje po pismu kana + Redoslijed razvrstavanja + Normalizirano poredavanje + Numeričko poredavanje + Jačina poredavanja + valuta + brojevi + Vremenska zona + Varijanta zemlje/jezika + Poredaj kao simbole + Privatna upotreba + + + arapsko-indijske znamenke + proširene arapsko-indijske znamenke + armenski brojevi + mali armenski brojevi + znamenke bengalskog pisma + razvrstavanje prema tradicionalnom kineskom - Big5 + budistički kalendar + kineski kalendar + Koptski kalendar + Dangi kalendar + znamenke pisma devanagari + rječničko razvrstavanje + Standardno Unicode razvrstavanje + etiopski brojevi + Etiopski kalendar + Etiopski kalendar "Amete Alem" + Financijski brojevi + široke znamenke + razvrstavanje prema pojednostavljenom kineskom - GB2312 + gruzijski brojevi + gregorijanski kalendar + grčki brojevi + mali grčki brojevi + gudžaratske znamenke + znamenke pisma gurmukhi + kineski decimalni brojevi + pojednostavljeni kineski brojevi + pojednostavljeni kineski financijski brojevi + tradicionalni kineski brojevi + tradicionalni kineski financijski brojevi + hebrejski brojevi + hebrejski kalendar + Poredaj sve + indijski nacionalni kalendar + islamski kalendar + islamski civilni kalendar + japanski kalendar + japanski brojevi + japanski financijski brojevi + khmerske znamenke + znamenke pisma kannada + laoske znamenke + arapski brojevi + Prvo poredaj mala slova + malajalamske znamenke + Mongolske znamenke + mijanmarske znamenke + Izvorne znamenke + Poredaj naglaske normalno + Poredaj po normalnom poretku veličine slova + Poredaj zanemarujući veličinu + Poredaj pismo kana zasebno + Poredaj bez normalizacije + Poredaj znamenke pojedinačno + Poredaj simbole + orijske znamenke + Perzijski kalendar + razvrstavanje po abecedi + Fonetski poredak + Pinyin razvrstavanje + Poredaj samo po osnovnim slovima + Poredaj po naglascima/veličini/širini/pismu kana + reformirano razvrstavanje + kalendar Republike Kine + rimski brojevi + mali rimski brojevi + Općenito pretraživanje + Pretraživanje po početnom suglasniku hangula + Poredaj po naglasku + Poredaj zanemarujući simbole + Standardno razvrstavanje + razvrstavanje po redoslijedu poteza za kineski + tamilski brojevi + tamilske znamenke + znamenke teluškog pisma + Poredaj po naglascima/veličini/širini + tajske znamenke + tibetske znamenke + tradicionalno razvrstavanje + Tradicionalni brojevi + razvrstavanje prema korijenu i potezu + Poredaj prvo velika slova + Vai znamenke + Poredaj naglaske obrnuto + Poredaj u skladu s veličinom slova + Poredaj pismo kana drugačije + Poredaj unikod normalizirano + Poredaj znamenke numerički + zhuyin razvrstavanje + + + BGN + Numerički + Ton + UNGEGN + Naglasci + Široki + Uski + Jamo + Pinyin + Nakladnički + + + metrički sustav + imperijalni sustav + američki sustav + + + Jezik: {0} + Pismo: {0} + Regija: {0} + + + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž] + [q w x y] + [A B C Č Ć D {DŽ} Đ E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž] + [‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] @ * / ′ ″] + {0}… + … {0} + {0}… {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + E, d.M.y. + + + + + d.M.y. + + + + + d.M.y. + + + + + d.M.y. + + + + + + + + + EEEE, d. MMMM y. G + + + + + d. MMMM y. G + + + + + d. M. y. G + + + + + d.M.y. GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E, d. + y. G + LLL y. G + d. MMM y. G + E, d. MMM y. G + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L. + d. M. + E, d. M. + LLL + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm:ss + y. G + y. G + M. y. G + d. M. y. G + E, d. M. y. G + LLL y. G + d. MMM y. G + E, d. MMM y. G + LLLL y. G + QQQ y. G + QQQQ y. G + + + {0} – {1} + + dd. - dd. + + + h a - h a + h - h'h' a + + + HH - HH'h' + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h - h 'h' a v + + + HH - HH 'h' v + + + MM. - MM. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + LLL-LLL + + + dd. - dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y. - y. G + + + MM.y. - MM.y. G + MM.y. - MM.y. G + + + dd.MM.y. - dd.MM.y. G + dd.MM.y. - dd.MM.y. G + dd.MM.y. - dd.MM.y. G + + + E, dd.MM.y. - E, dd.MM.y. G + E, dd.MM.y. - E, dd.MM.y. G + E, dd.MM.y. - E, dd.MM.y. G + + + LLL-LLL y. G + LLL y. - LLL y. G + + + dd. - dd. MMM y. G + dd. MMM - dd. MMM y. G + dd. MMM y. - dd. MMM y. G + + + E, dd. - E, dd. MMM y. G + E, dd. MMM - E, dd. MMM y. G + E, dd. MMM y. - E, dd. MMM y. G + + + LLLL - LLLL y. G + LLLL y. - LLLL y. G + + + + + + + + + sij + velj + ožu + tra + svi + lip + srp + kol + ruj + lis + stu + pro + + + 1. + 2. + 3. + 4. + 5. + 6. + 7. + 8. + 9. + 10. + 11. + 12. + + + siječnja + veljače + ožujka + travnja + svibnja + lipnja + srpnja + kolovoza + rujna + listopada + studenoga + prosinca + + + + + sij + velj + ožu + tra + svi + lip + srp + kol + ruj + lis + stu + pro + + + 1. + 2. + 3. + 4. + 5. + 6. + 7. + 8. + 9. + 10. + 11. + 12. + + + siječanj + veljača + ožujak + travanj + svibanj + lipanj + srpanj + kolovoz + rujan + listopad + studeni + prosinac + + + + + + + ned + pon + uto + sri + čet + pet + sub + + + N + P + U + S + Č + P + S + + + ned + pon + uto + sri + čet + pet + sub + + + nedjelja + ponedjeljak + utorak + srijeda + četvrtak + petak + subota + + + + + ned + pon + uto + sri + čet + pet + sub + + + n + p + u + s + č + p + s + + + ned + pon + uto + sri + čet + pet + sub + + + nedjelja + ponedjeljak + utorak + srijeda + četvrtak + petak + subota + + + + + + + 1kv + 2kv + 3kv + 4kv + + + 1. + 2. + 3. + 4. + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + 1kv + 2kv + 3kv + 4kv + + + 1. + 2. + 3. + 4. + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + + + popodne + ujutro + navečer + prijepodne + noću + podne + + + popodne + ujutro + navečer + prijepodne + noću + n + + + AM + podne + PM + + + + + popodne + ujutro + navečer + prijepodne + noću + podne + + + + + + Prije Krista + Poslije Krista + + + pr. Kr. + pr. n. e. + p. Kr. + n.e. + + + pr.n.e. + AD + + + + + + EEEE, d. MMMM y. + + + + + d. MMMM y. + + + + + d. MMM y. + + + + + d.M.yy. + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} 'u' {0} + + + + + {1} 'u' {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E, d. + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y. G + LLL y. G + d. MMM y. G + E, d. MMM y. G + h a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L. + d. M. + E, d. M. + dd. MM. + LLL + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm:ss + y. + M. y. + d. M. y. + E, d. M. y. + MM. y. + LLL y. + d. MMM y. + E, d. MMM y. + LLLL y. + QQQ y. + QQQQ y. + + + {0} {1} + + + {0} - {1} + + dd. - dd. + + + h a - h a + h - h'h' a + + + HH-HH'h' + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h - h 'h' a v + + + HH - HH 'h' v + + + MM. - MM. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + LLL-LLL + + + dd. - dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y. - y. + + + MM.y. - MM.y. + MM.y. - MM.y. + + + dd.MM.y. - dd.MM.y. + dd.MM.y. - dd.MM.y. + dd.MM.y. - dd.MM.y. + + + E, dd.MM.y. - E, dd.MM.y. + E, dd.MM.y. - E, dd.MM.y. + E, dd.MM.y. - E, dd.MM.y. + + + LLL-LLL y. + LLL y. - LLL y. + + + dd. - dd. MMM y. + dd. MMM - dd. MMM y. + dd. MMM y. - dd. MMM y. + + + E, dd. - E, dd. MMM y. + E, dd. MMM - E, dd. MMM y. + E, dd. MMM y. - E, dd. MMM y. + + + LLLL – LLLL y. + LLLL y. - LLLL y. + + + + + + + + AM + + + + + + + AH + + + + + + + E, d. + y. GGG + d. M. + E, d. M. + E, d. MMM + d. MMMM + y. GGG + M. y. GGGGG + d. M. y. GGGGG + E, d. M. y. GGGGG + LLL y. GGGGG + d. MMM y. GGGGG + E, d. MMM y. GGGGG + QQQ y. GGGGG + + + + + + + prije R.O.C. + R.O.C. + + + + + d. + L. + LLL + d. MMM + E, d. MMM + + + + + + + Era + + + Godina + prošle godine + ove godine + sljedeće godine + + za {0} godinu + za {0} godine + za {0} godina + + + prije {0} godinu + prije {0} godine + prije {0} godina + + + + Mjesec + prošli mjesec + ovaj mjesec + sljedeći mjesec + + za {0} mjesec + za {0} mjeseca + za {0} mjeseci + + + prije {0} mjesec + prije {0} mjeseca + prije {0} mjeseci + + + + Tjedan + prošli tjedan + ovaj tjedan + sljedeći tjedan + + za {0} tjedan + za {0} tjedna + za {0} tjedana + + + prije {0} tjedan + prije {0} tjedna + prije {0} tjedana + + + + Dan + prekjučer + jučer + danas + sutra + prekosutra + + za {0} dan + za {0} dana + za {0} dana + + + prije {0} dan + prije {0} dana + prije {0} dana + + + + Dan u tjednu + + + prošla nedjelja + ova nedjelja + sljedeća nedjelja + + + prošli ponedjeljak + ovaj ponedjeljak + sljedeći ponedjeljak + + + prošli utorak + ovaj utorak + sljedeći utorak + + + prošla srijeda + ova srijeda + sljedeća srijeda + + + prošli četvrtak + ovaj četvrtak + sljedeći četvrtak + + + prošli petak + ovaj petak + sljedeći petak + + + prošla subota + ova subota + sljedeća subota + + + Prijepodne/popodne + + + Sat + + za {0} sat + za {0} sata + za {0} sati + + + prije {0} sat + prije {0} sata + prije {0} sati + + + + Minuta + + za {0} minutu + za {0} minute + za {0} minuta + + + prije {0} minutu + prije {0} minute + prije {0} minuta + + + + Sekunda + sada + + za {0} sekundu + za {0} sekunde + za {0} sekundi + + + prije {0} sekundu + prije {0} sekunde + prije {0} sekundi + + + + Vremenska zona + + + + +HH:mm; -HH:mm + GMT{0} + GMT + {0} + {0}, ljetno vrijeme + {0}, standardno vrijeme + {1} ({0}) + + Nepoznati grad + + + Andora + + + Angvila + + + Tirana + + + Erevan + + + Dumont d’Urville + + + Beč + + + Bruxelles + + + Sofija + + + Bahrein + + + Saint Barthélemy + + + Brunej + + + Atikokan + + + St. John’s + + + Kokosovi otoci + + + Kinšasa + + + Lubumbaši + + + Zürich + + + Uskrsni Otok + + + Šangaj + + + Kostarika + + + Zelenortski Otoci + + + Curaçao + + + Božićni otok + + + Nikozija + + + Prag + + + Džibuti + + + Kopenhagen + + + Dominika + + + Alžir + + + Kairo + + + Asmara + + + Kanari + + + Addis Abeba + + + Fidži + + + Chuuk + + + Pohnpei + + + Ferojski otoci + + + Pariz + + + + britansko ljetno vrijeme + + + + Nuuk + + + Ittoqqortoormiit + + + Guadalupa + + + Atena + + + Južna Georgija + + + Gvatemala + + + Gvajana + + + Budimpešta + + + Džakarta + + + + irsko ljetno vrijeme + + + + Jeruzalem + + + Otok Man + + + Kolkata + + + Bagdad + + + Teheran + + + Rim + + + Jamajka + + + Tokio + + + Biškek + + + Komori + + + St. Kitts + + + Pjongjang + + + Kuvajt + + + Kajman + + + Aktau + + + Aktobe + + + Kizilorda + + + Alma Ata + + + St. Lucia + + + Luksemburg + + + Monako + + + Ulan Bator + + + Makao + + + Martinik + + + Mauricijus + + + Maldivi + + + Ciudad de México + + + Kathmandu + + + Markižansko otočje + + + Varšava + + + Portoriko + + + Azorski otoci + + + Lisabon + + + Asunción + + + Katar + + + Réunion + + + Bukurešt + + + Beograd + + + Kalinjingrad + + + Moskva + + + Ekaterinburg + + + Novokuznjeck + + + Krasnojarsk + + + Jakutsk + + + Handiga + + + Sahalin + + + Kamčatka + + + Anadir + + + Rijad + + + Kartum + + + Singapur + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damask + + + Dušanbe + + + Uzgorod + + + Kijev + + + Zaporožje + + + Beulah, Sjeverna Dakota + + + New Salem, Sjeverna Dakota + + + Center, Sjeverna Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taškent + + + Vatikan + + + St. Vincent + + + St. Thomas + + + Ho Ši Min + + + + Acre vrijeme + Acre standardno vrijeme + Acre ljetno vrijeme + + + + + afganistansko vrijeme + + + + + srednjoafričko vrijeme + + + + + istočnoafričko vrijeme + + + + + južnoafričko vrijeme + + + + + zapadnoafričko vrijeme + zapadnoafričko standardno vrijeme + zapadnoafričko ljetno vrijeme + + + + + aljaško vrijeme + aljaško standardno vrijeme + aljaško ljetno vrijeme + + + + + altmajsko vrijeme + altmajsko standardno vrijeme + altmajsko ljetno vrijeme + + + + + amazonsko vrijeme + amazonsko standardno vrijeme + amazonsko ljetno vrijeme + + + + + središnje vrijeme + središnje standardno vrijeme + središnje ljetno vrijeme + + + + + istočno vrijeme + istočno standardno vrijeme + istočno ljetno vrijeme + + + + + planinsko vrijeme + planinsko standardno vrijeme + planinsko ljetno vrijeme + + + + + pacifičko vrijeme + pacifičko standardno vrijeme + pacifičko ljetno vrijeme + + + + + anadirsko vrijeme + anadirsko standardno vrijeme + anadirsko ljetno vrijeme + + + + + vrijeme za Aqtau + standardno vrijeme za Aqtau + ljetno vrijeme za Aqtau + + + + + vrijeme za Aqtobe + standardno vrijeme za Aqtobe + ljetno vrijeme za Aqtobe + + + + + arapsko vrijeme + arapsko standardno vrijeme + arapsko ljetno vrijeme + + + + + argentinsko vrijeme + argentinsko standardno vrijeme + argentinsko ljetno vrijeme + + + + + zapadno-argentinsko vrijeme + zapadno-argentinsko standardno vrijeme + zapadno-argentinsko ljetno vrijeme + + + + + armensko vrijeme + armensko standardno vrijeme + armensko ljetno vrijeme + + + + + atlantsko vrijeme + atlantsko standardno vrijeme + atlantsko dnevno vrijeme + + + + + srednjoaustralsko vrijeme + srednjoaustralsko standardno vrijeme + srednjoaustralsko ljetno vrijeme + + + + + australsko središnje zapadno vrijeme + australsko središnje zapadno standardno vrijeme + australsko središnje zapadno ljetno vrijeme + + + + + istočnoaustralsko vrijeme + istočnoaustralsko standardno vrijeme + istočnoaustralsko ljetno vrijeme + + + + + zapadnoaustralsko vrijeme + zapadnoaustralsko standardno vrijeme + zapadnoaustralsko ljetno vrijeme + + + + + azerbajdžansko vrijeme + azerbajdžansko standardno vrijeme + azerbajdžansko ljetno vrijeme + + + + + azorsko vrijeme + azorsko standardno vrijeme + azorsko ljetno vrijeme + + + + + bangladeško vrijeme + bangladeško standardno vrijeme + bangladeško ljetno vrijeme + + + + + butansko vrijeme + + + + + bolivijsko vrijeme + + + + + brazilijsko vrijeme + brazilijsko standardno vrijeme + brazilijsko ljetno vrijeme + + + + + vrijeme za Brunej Darussalam + + + + + vrijeme Zelenortskog otočja + standardno vrijeme Zelenortskog otočja + ljetno vrijeme Zelenortskog otočja + + + + + vrijeme Chamorro + + + + + vrijeme Chathama + standardno vrijeme Chathama + ljetno vrijeme Chathama + + + + + čileansko vrijeme + čileansko standardno vrijeme + čileansko ljetno vrijeme + + + + + kinesko vrijeme + kinesko standardno vrijeme + kinesko ljetno vrijeme + + + + + choibalsansko vrijeme + choibalsansko standardno vrijeme + choibalsansko ljetno vrijeme + + + + + vrijeme Božićnog otoka + + + + + vrijeme Kokosovih Otoka + + + + + kolumbijsko vrijeme + kolumbijsko standardno vrijeme + kolumbijsko ljetno vrijeme + + + + + vrijeme Cookovih Otoka + standardno vrijeme Cookovih Otoka + Cookovo otočje, polusatni pomak, ljetno vrijeme + + + + + kubansko vrijeme + kubansko standardno vrijeme + kubansko ljetno vrijeme + + + + + vrijeme Davisa + + + + + vrijeme Dumont-d'Urvillea + + + + + istočnotimorsko vrijeme + + + + + vrijeme Uskršnjeg otoka + standardno vrijeme Uskršnjeg otoka + ljetno vrijeme Uskršnjeg otoka + + + + + ekvadorsko vrijeme + + + + + srednjoeuropsko vrijeme + srednjoeuropsko standardno vrijeme + srednjoeuropsko ljetno vrijeme + + + CET + CET + CEST + + + + + istočnoeuropsko vrijeme + istočnoeuropsko standardno vrijeme + istočnoeuropsko ljetno vrijeme + + + EET + EET + EEST + + + + + zapadnoeuropsko vrijeme + zapadnoeuropsko standardno vrijeme + zapadnoeuropsko ljetno vrijeme + + + WET + WET + WEST + + + + + falklandsko vrijeme + falklandsko standardno vrijeme + falklandsko ljetno vrijeme + + + + + vrijeme Fidžija + standardno vrijeme Fidžija + ljetno vrijeme Fidžija + + + + + vrijeme Francuske Gvajane + + + + + južnofrancusko i antarktičko vrijeme + + + + + vrijeme Galapagosa + + + + + vrijeme Gambiera + + + + + gruzijsko vrijeme + gruzijsko standardno vrijeme + gruzijsko ljetno vrijeme + + + + + vrijeme Gilbertovih Otoka + + + + + univerzalno vrijeme + + + GMT + + + + + istočnogrenlandsko vrijeme + istočnogrenlandsko standardno vrijeme + istočnogrenlandsko ljetno vrijeme + + + + + zapadnogrenlandsko vrijeme + zapadnogrenlandsko standardno vrijeme + zapadnogrenlandsko ljetno vrijeme + + + + + guamsko standardno vrijeme + + + + + zaljevsko standardno vrijeme + + + + + gvajansko vrijeme + + + + + havajsko-aleutsko vrijeme + havajsko-aleutsko standardno vrijeme + havajsko-aleutsko ljetno vrijeme + + + + + hongkonško vrijeme + hongkonško standardno vrijeme + hongkonško ljetno vrijeme + + + + + hovdsko vrijeme + hovdsko standardno vrijeme + hovdsko ljetno vrijeme + + + + + indijsko vrijeme + + + + + vrijeme Indijskog oceana + + + + + indokinesko vrijeme + + + + + srednjoindonezijsko vrijeme + + + + + istočnoindonezijsko vrijeme + + + + + zapadnoindonezijsko vrijeme + + + + + iransko vrijeme + iransko standardno vrijeme + iransko ljetno vrijeme + + + + + irkutsko vrijeme + irkutsko standardno vrijeme + irkutsko ljetno vrijeme + + + + + izraelsko vrijeme + izraelsko standardno vrijeme + izraelsko ljetno vrijeme + + + + + japansko vrijeme + japansko standardno vrijeme + japansko ljetno vrijeme + + + + + Petropavlovsk-kamčatsko vrijeme + Petropavlovsk-kamčatsko standardno vrijeme + Petropavlovsk-kamčatsko ljetno vrijeme + + + + + istočnokazahstansko vrijeme + + + + + zapadnokazahstansko vrijeme + + + + + korejsko vrijeme + korejsko standardno vrijeme + korejsko ljetno vrijeme + + + + + vrijeme Kosrae + + + + + krasnojarsko vrijeme + krasnojarsko standardno vrijeme + krasnojarsko ljetno vrijeme + + + + + kirgistansko vrijeme + + + + + vrijeme Lanka + + + + + vrijeme Otoka Line + + + + + vrijeme otoka Lord Howe + standardno vrijeme otoka Lord Howe + ljetno vrijeme otoka Lord Howe + + + + + vrijeme Macao + standardno vrijeme Macao + ljetno vrijeme Macao + + + + + vrijeme otoka Macquarie + + + + + magadansko vrijeme + magadansko standardno vrijeme + magadansko ljetno vrijeme + + + + + malezijsko vrijeme + + + + + vrijeme Maldiva + + + + + markižansko vrijeme + + + + + vrijeme Maršalovih Otoka + + + + + vrijeme Mauricijusa + standardno vrijeme Mauricijusa + ljetno vrijeme Mauricijusa + + + + + mawsonsko vrijeme + + + + + ulan-batorsko vrijeme + ulan-batorsko standardno vrijeme + ulan-batorsko ljetno vrijeme + + + + + moskovsko vrijeme + moskovsko standardno vrijeme + moskovsko ljetno vrijeme + + + + + mianmarsko vrijeme + + + + + vrijeme Naurua + + + + + nepalsko vrijeme + + + + + vrijeme Nove Kaledonije + standardno vrijeme Nove Kaledonije + ljetno vrijeme Nove Kaledonije + + + + + novozelandsko vrijeme + novozelandsko standardno vrijeme + novozelandsko ljetno vrijeme + + + + + newfoundlandsko vrijeme + newfoundlandsko standardno vrijeme + newfoundlandsko ljetno vrijeme + + + + + vrijeme Niuea + + + + + vrijeme Otoka Norfolk + + + + + vrijeme grada Fernando de Noronha + standardno vrijeme grada Fernando de Noronha + ljetno vrijeme grada Fernando de Noronha + + + + + vrijeme Sjevernomarijanskih Otoka + + + + + novosibirsko vrijeme + novosibirsko standardno vrijeme + novosibirsko ljetno vrijeme + + + + + omsko vrijeme + omsko standardno vrijeme + omsko ljetno vrijeme + + + + + pakistansko vrijeme + pakistansko standardno vrijeme + pakistansko ljetno vrijeme + + + + + vrijeme Palaua + + + + + vrijeme Papue Nove Gvineje + + + + + paragvajsko vrijeme + paragvajsko standardno vrijeme + paragvajsko ljetno vrijeme + + + + + peruansko vrijeme + peruansko standardno vrijeme + peruansko ljetno vrijeme + + + + + filipinsko vrijeme + filipinsko standardno vrijeme + filipinsko ljetno vrijeme + + + + + vrijeme Otoka Phoenix + + + + + vrijeme za Sveti Petar i Mikelon + standardno vrijeme za Sveti Petar i Mikelon + ljetno vrijeme za Sveti Petar i Mikelon + + + + + vrijeme Pitcairna + + + + + vrijeme Ponapea + + + + + vrijeme Qyzylorda + standardno vrijeme Qyzylorda + ljetno vrijeme Qyzylorda + + + + + vrijeme Reuniona + + + + + vrijeme Rothere + + + + + sahalinsko vrijeme + sahalinsko standardno vrijeme + sahalinsko ljetno vrijeme + + + + + samarsko vrijeme + samarsko standardno vrijeme + samarsko ljetno vrijeme + + + + + samoansko vrijeme + samoansko standardno vrijeme + samoansko ljetno vrijeme + + + + + sejšelsko vrijeme + + + + + singapursko vrijeme + + + + + vrijeme Salamunovih Otoka + + + + + vrijeme Južne Georgije + + + + + surinamsko vrijeme + + + + + vrijeme Syowe + + + + + vrijeme Tahitija + + + + + tajpeško vrijeme + tajpeško standardno vrijeme + tajpeško ljetno vrijeme + + + + + tadžikistansko vrijeme + + + + + vrijeme Tokelaua + + + + + vrijeme Tonge + standardno vrijeme Tonge + ljetno vrijeme Tonge + + + + + vrijeme Chuuka + + + + + turkmenistansko vrijeme + turkmenistansko standardno vrijeme + turkmenistansko ljetno vrijeme + + + + + vrijeme Tuvalua + + + + + urugvajsko vrijeme + urugvajsko standardno vrijeme + urugvajsko ljetno vrijeme + + + + + uzbekistansko vrijeme + uzbekistansko standardno vrijeme + uzbekistansko ljetno vrijeme + + + + + vrijeme Vanuatua + standardno vrijeme Vanuatua + ljetno vrijeme Vanuatua + + + + + venezuelsko vrijeme + + + + + vladivostočko vrijeme + vladivostočko standardno vrijeme + vladivostočko ljetno vrijeme + + + + + volgogradsko vrijeme + volgogradsko standardno vrijeme + volgogradsko ljetno vrijeme + + + + + vostočko vrijeme + + + + + vrijeme Otoka Wake + + + + + vrijeme Otoka Wallis i Futuna + + + + + jakutsko vrijeme + jakutsko standardno vrijeme + jakutsko ljetno vrijeme + + + + + ekaterinburško vrijeme + ekaterinburško standardno vrijeme + ekaterinburško ljetno vrijeme + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tisuća + 0 tisuće + 0 tisuća + 00 tisuća + 00 tisuće + 00 tisuća + 000 tisuća + 000 tisuće + 000 tisuća + 0 milijun + 0 milijuna + 0 milijuna + 00 milijun + 00 milijuna + 00 milijuna + 000 milijun + 000 milijuna + 000 milijuna + 0 milijarda + 0 milijarde + 0 milijardi + 00 milijarda + 00 milijarde + 00 milijardi + 000 milijarda + 000 milijarde + 000 milijardi + 0 bilijun + 0 bilijuna + 0 bilijuna + 00 bilijun + 00 bilijuna + 00 bilijuna + 000 bilijun + 000 bilijuna + 000 bilijuna + + + + + 0 tis'.' + 0 tis'.' + 0 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 0 mil'.' + 0 mil'.' + 0 mil'.' + 00 mil'.' + 00 mil'.' + 00 mil'.' + 000 mil'.' + 000 mil'.' + 000 mil'.' + 0 mlr'.' + 0 mlr'.' + 0 mlr'.' + 00 mlr'.' + 00 mlr'.' + 00 mlr'.' + 000 mlr'.' + 000 mlr'.' + 000 mlr'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + + + + andorska pezeta + andorska pezeta + andorske pezete + andorskih pezeta + + + UAE dirham + UAE diram + UAE dirhama + UAE dirhama + + + afganistanski afgani (1927.–2002.) + afganistanski afgan (1927.–2002.) + afganistanska afgana (1927.–2002.) + afganistanskih afgana (1927.–2002.) + + + afganistanski afgani + afganistanski afgan + afganistanska afgana + afganistanskih afgana + + + stari albanski lek + stara albanska leka + starih albanskih leka + + + albanski lek + albanski lek + albanska leka + albanskih leka + + + armenski dram + armenski dram + armenska drama + armenskih drama + + + nizozemskoantilski gulden + nizozemskoantilski gulden + nizozemskoantilska guldena + nizozemskoantilskih guldena + + + angolska kvanza + angolska kvanza + angolske kvanze + angolskih kvanzi + + + angolska kvanza (1977.–1990.) + angolska kvanza (1977.–1990.) + angolske kvanze (1977.–1990.) + angolskih kvanzi (1977.–1990.) + + + angolska nova kvanza (1990.–2000.) + angolska nova kvanza (1990.–2000.) + angolske nove kvanze (1990.–2000.) + angolskih novih kvanzi (1990.–2000.) + + + angolska kvanza (1995.–1999.) + angolska kvanza (1995.–1999.) + angolske kvanze (1995.–1999.) + angolskih kvanzi (1995.–1999.) + + + argentinski austral + argentinski austral + argentinska australa + argentinskih australa + + + argentinski pezo lej + argentinska pezo leja + argentinskih pezo leja + + + argentinski pezo moneda nacional + argentinska pezo moneda nacional + argentinskih pezo moneda nacional + + + argentinski pezo (1983.–1985.) + argentinski pezo (1983.–1985.) + argentinska peza (1983.–1985.) + argentinskih peza (1983.–1985.) + + + argentinski pezo + argentinski pezos + argentinska pezosa + argentinskih pezosa + + + austrijski šiling + austrijski šiling + austrijska šilinga + austrijskih šilinga + + + australski dolar + australski dolar + australska dolara + australskih dolara + AUD + + + arupski florin + arupski florin + arupska florina + arupskih florina + + + azerbajdžanski manat (1993.–2006.) + azerbajdžanski manat (1993.–2006.) + azerbajdžanska manata (1993.–2006.) + azerbajdžanskih manata (1993.–2006.) + + + azerbajdžanski manat + azerbajdžanski manat + azerbajdžanska manata + azerbajdžanskih manata + + + bosansko-hercegovački dinar + bosansko-hercegovački dinar + bosansko-hercegovačka dinara + bosansko-hercegovačkih dinara + + + konvertibilna marka + konvertibilna marka + konvertibilne marke + konvertibilnih maraka + + + bosansko-hercegovački novi dinar + bosansko-hercegovački novi dinar + bosansko-hercegovačka nova dinara + bosansko-hercegovačkih novih dinara + + + barbadoski dolar + barbadoski dolar + barbadoska dolara + barbadoskih dolara + + + bangladeška taka + bangladeška taka + bangladeške take + bangladeških taka + + + belgijski franak (konvertibilan) + belgijski franak (konvertibilan) + belgijska franka (konvertibilna) + belgijskih franaka (konvertibilnih) + + + belgijski franak + belgijski franak + belgijska franka + belgijskih franaka + + + belgijski franak (financijski) + belgijski franak (financijski) + belgijska franka (financijska) + belgijskih franaka (financijskih) + + + bugarski čvrsti lev + bugarski čvrsti lev + bugarska čvrsta leva + bugarskih čvrstih leva + + + bugarski socijalistički lev + bugarski socijalistički lev + bugarska socijalistička leva + bugarskih socijalističkih leva + + + bugarski lev + bugarski lev + bugarska leva + bugarskih leva + + + stari bugarski lev + stari bugarski lev + stara bugarska leva + starih bugarskih leva + + + bahreinski dinar + bahreinski dinar + bahreinska dinara + bahreinskih dinara + + + burundski franak + burundski franak + burundska franka + burundskih franaka + + + bermudski dolar + bermudski dolar + bermudska dolara + bermudskih dolara + + + brunejski dolar + brunejski dolar + brunejska dolara + brunejskih dolara + + + bolivijski bolivijano + bolivijski bolivijano + bolivijska bolivijana + bolivijskih bolivijana + + + stari bolivijski bolivijano + stari bolivijski bolivijano + stara bolivijska bolivijana + starih bolivijskih bolivijana + + + bolivijski pezo + bolivijski pezo + bolivijska peza + bolivijskih peza + + + bolivijski mvdol + bolivijski mvdol + bolivijska mvdola + bolivijskih mvdola + + + brazilski novi cruzeiro (1967.–1986.) + brazilski novi cruzeir (1967.–1986.) + brazilska nova cruzeira (1967.–1986.) + brazilskih novih cruzeira (1967.–1986.) + + + brazilski cruzado + brazilski cruzad + brazilska cruzada + brazilskih cruzada + + + brazilski cruzeiro (1990.–1993.) + brazilski cruzeir (1990.–1993.) + brazilska cruzeira (1990.–1993.) + brazilskih cruzeira (1990.–1993.) + + + brazilski real + brazilski real + brazilska reala + brazilskih reala + BRL + + + brazilski novi cruzado + brazilski novi cruzad + brazilska nova cruzada + brazilskih novih cruzada + + + brazilski cruzeiro + brazilski cruzeiro + brazilska cruzeira + brazilskih cruzeira + + + stari brazilski kruzeiro + stari brazilski kruzeiro + stara brazilska kruzeira + starih brazilskih kruzeira + + + bahamski dolar + bahamski dolar + bahamska dolara + bahamskih dolara + + + butanski ngultrum + butanski ngultrum + butanska ngultruma + butanskih ngultruma + + + burmanski kyat + burmanski kyat + burmanska kyata + burmanskih kyata + + + bocvanska pula + bocvanska pula + bocvanske pule + bocvanskih pula + + + bjeloruska nova rublja (1994–1999) + bjeloruska nova rublja (1994–1999) + bjeloruske nove rublje (1994–1999) + bjeloruskih novih rublji (1994–1999) + + + bjeloruska rublja + bjeloruska rublja + bjeloruske rublje + bjeloruskih rublji + + + belizeanski dolar + belizeanski dolar + belizeanska dolara + belizeanskih dolara + + + kanadski dolar + kanadski dolar + kanadska dolara + kanadskih dolara + CAD + + + kongoanski franak + kongoanski franak + kongoanska franka + kongoanskih franaka + + + WIR euro + WIR euro + WIR eura + WIR eura + + + švicarski franak + švicarski franak + švicarska franka + švicarskih franaka + + + WIR franak + WIR franak + WIR franka + WIR franaka + + + čileanski eskudo + čileanski eskudo + čileanska eskuda + čileanskih eskuda + + + čileanski unidades de fomentos + čileanski unidades de fomentos + čileanska unidades de fomentos + čileanskih unidades de fomentos + + + čileanski pezo + čileanski pezo + čileanska peza + čileanskih peza + + + kineski narodni dolar + kineski narodni dolar + kineska narodna dolara + kineskih narodnih dolara + + + kineski yuan + kineski yuan + kineska yuana + kineskih yuana + CNY + + + kolumbijski pezo + kolumbijski pezo + kolumbijska peza + kolumbijskih peza + + + unidad de valor real + unidad de valor real + unidad de valor reala + unidad de valor reala + + + kostarikanski kolon + kostarikanski kolon + kostarikanska kolona + kostarikanskih kolona + + + stari srpski dinar + stari srpski dinar + stara srpska dinara + starih srpskih dinara + + + čehoslovačka kruna + čehoslovačka kruna + čehoslovačke krune + čehoslovačkih kruna + + + kubanski konvertibilni pezo + kubanski konvertibilni pezo + kubanska konvertibilna peza + kubanskih konvertibilnih peza + + + kubanski pezo + kubanski pezo + kubanska peza + kubanskih peza + + + zelenortski eskudo + zelenortski eskudo + zelenortska eskuda + zelenortskih eskuda + + + ciparska funta + ciparska funta + ciparske funte + ciparskih funti + + + češka kruna + češka kruna + češke krune + čeških kruna + + + istočnonjemačka marka + istočnonjemačka marka + istočnonjemačke marke + istočnonjemačkih marki + + + njemačka marka + njemačka marka + njemačke marke + njemačkih marki + + + džibutski franak + džibutski franak + džibutska franka + džibutskih franaka + + + danska kruna + danska kruna + danske krune + danskih kruna + + + dominikanski pezo + dominikanski pezo + dominikanska peza + dominikanskih peza + + + alžirski dinar + alžirski dinar + alžirska dinara + alžirskih dinara + + + ekvatorska sukra + evatorska sucra + ekvatorske sucre + ekvatorskih sucri + + + ekvatorski unidad de valor constante (UVC) + ekvatorski unidad de valor constante (UVC) + ekvatorska unidad de valor constante (UVC) + ekvatorskih unidad de valor constante (UVC) + + + estonska kruna + estonska kruna + estonske krune + estonskih kruna + + + egipatska funta + egipatska funta + egipatske funte + egipatskih funti + + + eritrejska nakfa + eritrejska nakfa + eritrejske nakfe + eritrejskih nakfi + + + španjolska pezeta (A račun) + španjolska pezeta (A račun) + španjolske pezete (A račun) + španjolskih pezeta (A račun) + + + španjolska pezeta (konvertibilni račun) + španjolska pezeta (konvertibilan račun) + španjolske pezete (konvertibilan račun) + španjolskih pezeta (konvertibilan račun) + + + španjolska pezeta + španjolska pezeta + španjolske pezete + španjolskih pezeta + + + etiopski bir + etiopski bir + etiopska bira + etiopskih bira + + + euro + euro + eura + eura + + + finska marka + finska marka + finske marke + finskih marki + + + fidžijski dolar + fidžijski dolar + fidžijska dolara + fidžijskih dolara + + + falklandska funta + falklandska funta + falklandske funte + falklandskih funti + + + francuski franak + francuski franak + francuska franka + francuskih franaka + + + britanska funta + britanska funta + britanske funte + britanskih funti + GBP + + + gruzijski kupon larit + gruzijski kupon larit + gruzijska kupon larita + gruzijskih kupon larita + + + gruzijski lari + gruzijski lar + gruzijska lara + gruzijskih lara + + + ganski cedi (1979.–2007.) + ganski cedi (1979.–2007.) + ganska ceda (1979.–2007.) + ganskih ceda (1979.–2007.) + + + ganski cedi + ganski cedi + ganska ceda + ganskih ceda + + + gibraltarska funta + gibraltarska funta + gibraltarske funte + gibraltarskih funti + + + gambijski dalas + gambijski dalas + gambijska dalasa + gambijskih dalasa + + + gvinejski franak + gvinejski franak + gvinejska franka + gvinejskih franaka + + + gvinejski syli + gvinejski syli + gvinejska sylija + gvinejskih sylija + + + ekvatorski gvinejski ekwele + ekvatorski gvinejski ekwele + ekvatorski gvinejska ekwele + ekvatorskih gvinejskih ekwele + + + grčka drahma + grčka drahma + grčke drahme + grčkih drahmi + + + gvatemalski kvecal + gvatemalski kvecal + gvatemalska kvecala + gvatemalskih kvecala + + + portugalski gvinejski eskudo + portugalski gvinejski eskudo + portugalska gvinejska eskuda + portugalskih gvinejskih eskuda + + + gvinejskobisauski pezo + gvinejskobisauski pezo + gvinejskobisauska peza + gvinejskobisauskih peza + + + gvajanski dolar + gvajanski dolar + gvajanska dolara + gvajanskih dolara + + + hongkonški dolar + honkonški dolar + honkonška dolara + honkonških dolara + HKD + + + honduraška lempira + honduraška lempira + honduraške lempire + honduraških lempira + + + hrvatski dinar + hrvatski dinar + hrvatska dinara + hrvatskih dinara + + + hrvatska kuna + hrvatska kuna + hrvatske kune + hrvatskih kuna + kn + + + haićanski gourd + haićanski gourd + haićanska gourda + haićanskih gourda + + + mađarska forinta + mađarska forinta + mađarske forinte + mađarskih forinti + + + indonezijska rupija + indonezijska rupija + indonezijske rupije + indonezijskih rupija + + + irska funta + irska funta + irske funte + irskih funti + + + izraelska funta + izraelska funta + izraelske funte + izraelskih funti + + + stari izraelski šekel + stari izraelski šekel + stara izraelska šekela + starih izraelskih šekela + + + novi izraelski šekel + novi izraelski šekel + nova izraelska šekela + novih izraelskih šekela + ILS + + + indijska rupija + indijska rupija + indijske rupije + indijskih rupija + INR + + + irački dinar + irački dinar + iračka dinara + iračkih dinara + + + iranski rijal + iranski rijal + iranska rijala + iranskih rijala + + + stara islandska kruna + stara islandska kruna + stare islandske krune + starih islandskih kruna + + + islandska kruna + islandska kruna + islandske krune + islandskih kruna + + + talijanska lira + talijanska lira + talijanske lire + talijanskih lira + + + jamajčanski dolar + jamajčanski dolar + jamajčanska dolara + jamajčanskih dolara + + + jordanski dinar + jordanski dinar + jordanska dinara + jordanskih dinara + + + japanski jen + japanski jen + japanska jena + japanskih jena + ¥ + + + kenijski šiling + kenijski šiling + kenijska šilinga + kenijskih šilinga + + + kirgiski som + kirgijski som + kirgijska soma + kirgijskih soma + + + kambođanski rijal + kambođanski rijal + kambođanska rijala + kambođanskih rijala + + + komorski franak + komorski franak + komorska franka + komorskih franaka + + + sjevernokorejski won + sjevernokorejski won + sjevernokorejska wona + sjevernokorejskih wona + + + južnokorejski hvan + južnokorejski hvan + južnokorejska hvana + južnokorejskih hvana + + + stari južnokorejski von + stari južnokorejski von + stara južnokorejska vona + starih južnokorejskih vona + + + južnokorejski won + južnokorejski won + južnokorejska wona + južnokorejskih wona + KRW + + + kuvajtski dinar + kuvajtski dinar + kuvajtska dinara + kuvajtskih dinara + + + kajmanski dolar + kajmanski dolar + kajmanska dolara + kajmanskih dolara + + + kazahstanski tenge + kazahstanski tenge + kazahstanska tengea + kazahstanskih tengea + + + laoski kip + laoski kip + laoska kipa + laoskih kipa + + + libanonska funta + libanonska funta + libanonske funte + libanonskih funti + + + šrilanska rupija + šrilankanska rupija + šrilankanske rupije + šrilankanskih rupija + + + liberijski dolar + liberijski dolar + liberijska dolara + liberijskih dolara + + + lesoto loti + lesoto loti + lesoto lotija + lesoto lotija + + + litavski litas + litavski litas + litavska litasa + litavskih litasa + + + litavski talonas + litavski talonas + litavska talonasa + litavskih talonasa + + + luksemburški konvertibilni franak + luksemburški konvertibilni franak + luksemburška konvertibilna franka + luksemburških konvertibilnih franaka + + + luksemburški franak + luksemburški franak + luksemburška franka + luksemburških franaka + + + luksemburški financijski franak + luksemburški financijski franak + luksemburška financijska franka + luksemburških financijskih franaka + + + letonski lats + letonski lats + letonska latsa + letonskih latsa + + + letonska rublja + letonska rublja + letonske rublje + letonskih rublji + + + libijski dinar + libijski dinar + libijska dinara + libijskih dinara + + + marokanski dirham + marokanski dirham + marokanska dirhama + marokanskih dirhama + + + marokanski franak + marokanski franak + marokanska franka + marokanskih franaka + + + monegaški franak + monegaški franak + monegaška franka + monegaških franaka + + + moldavski kupon + moldavski kupon + moldavska kupona + moldavskih kupona + + + moldavski lej + moldavski lej + moldavska leja + moldavskih leja + + + madagaskarski ariary + madagaskarski ariary + madagaskarska ariarija + madagaskarskih ariarija + + + madagaskarski franak + madagaskarski franak + madagaskarska franka + madagaskarskih franaka + + + makedonski denar + makedonski dinar + makedonska dinara + makedonskih dinara + + + stari makedonski denar + stari makedonski denar + stara makedonska denara + starih makedonski denara + + + malijski franak + malijski franak + malijska franka + malijskih franaka + + + mjanmarski kjat + mjanmarski kjat + mjanmarska kjata + mjanmarskih kjata + + + mongolski tugrik + mongolski tugrik + mongolska tugrika + mongolskih tugrika + + + makaoška pataka + makaoška pataka + makaoška pataka + makaoških pataka + + + mauritanijska ouguja + mauritanijska ouguja + mauritanijske ouguje + mauritanijskih ouguja + + + malteška lira + malteška lira + malteške lire + malteških lira + + + malteška funta + malteška funta + malteške funte + malteških funti + + + mauricijska rupija + mauricijska rupija + mauricijske rupije + mauricijskih rupija + + + maldivijska rufija + maldivijska rufija + maldivijske rufije + maldivijskih rufija + + + malavijska kvača + malavijska kvača + malavijske kvače + malavijskih kvača + + + meksički pezo + meksički pezo + meksička peza + meksičkih peza + MXN + + + meksički srebrni pezo (1861–1992) + meksički srebrni pezo (1861–1992) + meksička srebrna peza (1861–1992) + meksičkih srebrnih peza (1861–1992) + + + meksički unidad de inversion (UDI) + meksički unidads de inversion (UDI) + meksička unidads de inversion (UDI) + meksičkih unidads de inversion (UDI) + + + malezijski ringit + malezijski ringit + malezijska ringita + malezijskih ringita + + + mozambijski eskudo + mozambijski eskudo + mozambijska eskuda + mozambijskih eskuda + + + stari mozambijski metikal + stari mozambijski metikal + stara mozambijska metikala + starih mozambijskih metikala + + + mozambički metikal + mozambijski metikal + mozambijska metikala + mozambijskih metikala + + + namibijski dolar + namibijski dolar + namibijska dolara + namibijskih dolara + + + nigerijska naira + nigerijski nair + nigerijska naira + nigerijskih naira + + + nikaragvanska kordoba + nikaragvanska kordoba + nikaragvanske kordobe + nikaragvanskih kordoba + + + nikaragvanska zlatna kordoba + nikaragvanska zlatna kordoba + nikaragvanske zlatne kordobe + nikaragvanskih zlatnih kordoba + + + nizozemski gulden + nizozemski gulden + nizozemska guldena + nizozemskih guldena + + + norveška kruna + norveška kruna + norveške krune + norveških kruna + + + nepalska rupija + nepalska rupija + nepalske rupije + nepalskih rupija + + + novozelandski dolar + novozelandski dolar + novozelandska dolara + novozelandskih dolara + NZD + + + omanski rijal + omanski rijal + omanska rijala + omanskih rijala + + + panamska balboa + panamska balboa + panamske balboe + panamskih balboa + + + peruanski inti + peruanski inti + peruanske inti + peruanskih inti + + + peruanski novi sol + peruanski novi sol + peruanska nova sola + peruanskih novih sola + + + peruanski sol + peruanski sol + peruanska sola + peruanskih sola + + + kina Papue Nove Gvineje + kina Papue Nove Gvineje + kine Papue Nove Gvineje + kina Papue Nove Gvineje + + + filipinski pezo + filipinski pezo + filipinska peza + filipinskih peza + + + pakistanska rupija + pakistanska rupija + pakistanske rupije + pakistanskih rupija + + + poljska zlota + poljska zlota + poljske zlote + poljskih zlota + + + poljska zlota (1950.–1995.) + poljska zlota (1950.–1995.) + poljske zlote (1950.–1995.) + poljskih zlota (1950.–1995.) + + + portugalski eskudo + portugalski eskudo + portugalska eskuda + portugalskih eskuda + + + gvarani + paragvajski gvarani + paragvajska gvaranija + paragvajskih gvaranija + + + katarski rial + katarski rijal + katarska rijala + katarskih rijala + + + rodezijski dolar + rodezijski dolar + rodezijska dolara + rodezijskih dolara + + + starorumunjski lek + stari rumunjski lej + stara rumunjska leja + starih rumunjskih leja + + + rumunjski leu + novi rumunjski lej + nova rumunjska leja + novih rumunjskih leja + + + srpski dinar + srpski dinar + srpska dinara + srpskih dinara + + + ruska rublja + ruska rublja + ruske rublje + ruskih rublji + + + ruska rublja (1991.–1998.) + ruska rublja (1991.–1998.) + ruske rublje (1991.–1998.) + ruskih rublji (1991.–1998.) + + + ruandski franak + ruandski franak + ruandska franka + ruandskih franaka + + + saudijski rial + saudijski rijal + saudijska rijala + saudijskih rijala + + + solmonskootočni dolar + solomonskootočni dolar + solomonskootočna dolara + solomonskootočnih dolara + + + sejšelska rupija + sejšelska rupija + sejšelske rupije + sejšelskih rupija + + + sudanski dinar + sudanski dinar + sudanska dinara + sudanskih dinara + + + sudanska funta + sudanska funta + sudanske funte + sudanskih funti + + + stara sudanska funta + stara sudanska funta + stare sudanske funte + starih sudanskih funti + + + švedska kruna + švedska kruna + švedske krune + švedskih kruna + + + singapurski dolar + singapurski dolar + singapurska dolara + singapurskih dolara + + + svetohelenska funta + svetohelenska funta + svetohelenske funte + svetohelenskih funti + + + slovenski tolar + slovenski tolar + slovenska tolara + slovenskih tolara + + + slovačka kruna + slovačka kruna + slovačke krune + slovačkih kruna + + + sijeraleonski leone + sijeraleonski leon + sijeraleonske leone + sijeraleonskih leona + + + somalijski šiling + somalijski šiling + somalijska šilinga + somalijskih šilinga + + + surinamski dolar + surinamski dolar + surinamska dolara + surinamskih dolara + + + surinamski gulden + surinamski gulden + surinamska guldena + surinamskih guldena + + + južnosudanska funta + južnosudanska funta + južnosudanske funte + južnosudanskih funti + + + dobra Svetog Tome i Principa + dobra Svetog Tome i Principa + dobra Svetog Tome i Principa + dobra Svetog Tome i Principa + + + sovjetska rublja + sovjetska rublja + sovjetske rublje + sovjetskih rublji + + + salvadorski kolon + salvadorski kolon + salvadorska kolona + salvadorskih kolona + + + sirijska funta + sirijska funta + sirijske funte + sirijskih funti + + + svazi lilangeni + svazi lilangeni + svazi lilangena + svazi lilangena + + + tajlandski bat + tajlandski baht + tajlandska bahta + tajlandskih bahta + THB + + + tajikistanska rublja + tadžikistanska rublja + tadžikistanske rublje + tadžikistanskih rublji + + + tadžikistanski somoni + tadžikistanski somoni + tadžikistanska somona + tadžikistanskih somona + + + turkmenistanski manat (1993.–2009.) + turkmenistanski manat (1993.–2009.) + turkmenistanska manata (1993.–2009.) + turkmenistanskih manata (1993.–2009.) + + + turkmenistanski manat + turkmenistanski manat + turkmenistanska manata + turkmenistanskih manata + + + tuniski dinar + tuniski dinar + tuniska dinara + tuniskih dinara + + + tongaška pa'anga + tongaška pa'anga + tongaške pa'ange + tongaških pa'angi + + + timorski eskudo + timorski eskudo + timorska eskuda + timorskih eskuda + + + turska lira (1922.–2005.) + turska lira (1922.–2005.) + turske lire (1922.–2005.) + turskih lira (1922.–2005.) + + + turska lira + turska lira + turske lire + turskih lira + + + trininadtobaški dolar + trinidadtobaški dolar + trinidadtobaška dolara + trinidadtobaških dolara + + + novotajvanski dolar + novotajvanski dolar + novotajvanska dolara + novotajvanskih dolara + TWD + + + tanzanijski šiling + tanzanijski šiling + tanzanijska šilinga + tanzanijskih šilinga + + + ukrajinska hrivnja + ukrajinska hrivnja + ukrajinske hrivnje + ukrajinskih hrivnji + + + ukrajinski karbovanet + ukrajinski karbovantsiv + ukrajinska karbovantsiva + ukrajinskih karbovantsiva + + + ugandski šiling (1966.–1987.) + ugandski šiling (1966.–1987.) + ugandska šilinga (1966.–1987.) + ugandskih šilinga (1966.–1987.) + + + ugandski šiling + ugandski šiling + ugandska šilinga + ugandskih šilinga + + + američki dolar + američki dolar + američka dolara + američkih dolara + USD + + + američki dolar (sljedeći dan) + američki dolar (sljedeći dan) + američka dolara (sljedeći dan) + američkih dolara (sljedeći dan) + + + američki dolar (isti dan) + američki dolar (isti dan) + američka dolara (isti dan) + američkih dolara (isti dan) + + + urugvajski pezo en unidades indexadas + urugvajski pesos en unidades indexadas + urugvajska pesosa en unidades indexadas + urugvajskih pesosa en unidades indexadas + + + urugvajski pezo (1975.–1993.) + urugvajski pezo (1975.–1993.) + urugvajska peza (1975.–1993.) + urugvajskih peza (1975.–1993.) + + + urugvajski pezo + urugvajski pezo + urugvajska pezosa + urugvajskih pezosa + + + uzbekistanski som + uzbekistanski som + uzbekistanska soma + uzbekistanskih soma + + + venezuelanski bolivar (1871.–2008.) + venezuelanski bolivar (1871.–2008.) + venezuelanska bolivara (1871.–2008.) + venezuelanskih bolivara (1871.–2008.) + + + venezuelanski bolivar + venezuelanski bolivar + venezuelanska bolivara + venezuelanskih bolivara + + + vijetnamski dong + vijetnamski dong + vijetnamska donga + vijetnamskih donga + VND + + + vijetnamski dong (1978.–1985.) + vijetnamski dong (1978.–1985.) + vijetnamska donga (1978.–1985.) + vijetnamskih donga (1978.–1985.) + + + vanuatuški vatu + vanuatski vatu + vanuatska vatua + vanuatskih vatua + + + samoanska tala + samoanska tala + samoanske tale + samoanskih tala + + + CFA franak BEAC + CFA franak BEAC + CFA franka BEAC + CFA franaka BEAC + FCFA + + + srebro + srebro + srebra + srebra + + + zlato + zlato + zlata + zlata + + + Europska složena jedinica + europska složena jedinica + europske složene jedinice + europskih složenih jedinica + + + Europska monetarna jedinica + europska monetarna jedinica + europske monetarne jedinice + europskih monetarnih jedinica + + + europska obračunska jedinica (XBC) + europska obračunska jedinica (XBC) + europske obračunske jedinice (XBC) + europskih obračunskih jedinica (XBC) + + + europska obračunska jedinica (XBD) + europska obračunska jedinica (XBD) + europske obračunske jedinice (XBD) + europskih obračunskih jedinica (XBD) + + + istočnokaripski dolar + istočnokaripski dolar + istočnokaripska dolara + istočnokaripskih dolara + XCD + + + posebna crtaća prava + posebno crtaće pravo + poseebna crtaća prava + posebnih crtaćih prava + + + europska monetarna jedinica (ECU) + europska monetarna jedinica (ECU) + europske monetarne jedinice (ECU) + europskih monetarnih jedinica (ECU) + + + francuski zlatni franak + francuski zlatni franak + francuska zlatna franka + francuskih zlatnih franaka + + + francuski UIC-franak + francuski UIC-franak + francuska UIC-franka + francuskih UIC-franaka + + + CFA franak BCEAO + CFA franak BCEAO + CFA franka BCEAO + CFA franaka BCEAO + CFA + + + paladij + paladij + paladija + paladija + + + CFP franak + CFP franak + CFP franaka + CFP franaka + XPF + + + platina + platina + platine + platina + + + RINET fondovi + RINET fond + RINET fonda + RINET fondova + + + ispitni kod valute + ispitni kod vlaute + ispitna koda valute + ispitnih kodova valute + + + nepoznata valuta + nepoznata valuta + nepoznata valuta + nepoznata valuta + + + jemenski dinar + jemenski dinar + jemenska dinara + jemenskih dinara + + + jemenski rial + jemenski rijal + jemenska rijala + jemenskih rijala + + + jugoslavenski čvrsti dinar + jugoslavenski čvrsti dinar + jugoslavenska čvrsta dinara + jugoslavenskih čvrstih dinara + + + jugoslavenski novi dinar + jugoslavenski novi dinar + jugoslavenska nova dinara + jugoslavenskih novih dinara + + + jugoslavenski konvertibilni dinar + jugoslavenski konvertibilni dinar + jugoslavenska konvertibilna dinara + jugoslavenskih konvertibilnih dinara + + + jugoslavenski reformirani dinar + jugoslavenska reformirana dinara + jugoslavenskih reformiranih dinara + + + južnoafrički rand (financijski) + južnoafrički rand (financijski) + južnoafrička randa (financijska) + južnoafričkih randa (financijskih) + + + južnoafrički rand + južnoafrički rand + južnoafrička randa + južnoafričkih randa + + + zambijska kvača (1968–2012) + zambijska kvača (1968–2012) + zambijske kvače (1968–2012) + zambijskih kvača (1968–2012) + + + zambijska kvača + zambijska kvača + zambijske kvače + zambijskih kvača + + + zairski novi zair + zairski novi zair + zairska nova zaira + zairskih novih zaira + + + zairski zair + zairski zair + zairska zaira + zairskih zaira + + + zimbabveanski dolar (1980.–2008.) + zimbabveanski dolar (1980.–2008.) + zimbabveanska dolara (1980.–2008.) + zimbabveanskih dolara (1980.–2008.) + + + zimbabveanski dolar (2009) + zimbabveanski dolar (2009) + zimbabveanska dolara (2009) + zimbabveanskih dolara (2009) + + + zimbabveanski dolar (2008) + zimbabveanski dolar (2008) + zimbabveanska dolara (2008) + zimbabveanskih dolara (2008) + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0} minuta + {0} minute + {0} minuta + + + {0} sekunda + {0} sekunde + {0} sekundi + + + {0} stupanj + {0} stupnja + {0} stupnjeva + + + {0} katastarsko jutro + {0} katastarska jutra + {0} katastarskih jutara + + + {0} hektar + {0} hektra + {0} hektara + + + {0} kvadratna stopa + {0} kvadratne stope + {0} kvadratnih stopa + + + {0} kvadratni kilometar + {0} kvadratna kilometra + {0} kvadratnih kilometara + + + {0} kvadratni metar + {0} kvadratna metra + {0} kvadratnih metara + + + {0} kvadratna milja + {0} kvadratne milje + {0} kvadratnih milja + + + {0} dan + {0} dana + {0} dana + + + {0} sat + {0} sata + {0} sati + + + {0} milisekunda + {0} milisekunde + {0} milisekundi + + + {0} minuta + {0} minute + {0} minuta + + + {0} mjesec + {0} mjeseca + {0} mjeseci + + + {0} sekunda + {0} sekunde + {0} sekundi + + + {0} tjedan + {0} tjedna + {0} tjedana + + + {0} godina + {0} godine + {0} godina + + + {0} centimetar + {0} centimetra + {0} centimetara + + + {0} stopa + {0} stope + {0} stopa + + + {0} inč + {0} inča + {0} inča + + + {0} kilometar + {0} kilometra + {0} kilometara + + + {0} svjetlosna godina + {0} svjetlosne godine + {0} svjetlosnih godina + + + {0} metar + {0} metra + {0} metara + + + {0} milja + {0} milje + {0} milja + + + {0} milimetar + {0} milimetra + {0} milimetara + + + {0} pikometar + {0} pikometra + {0} pikometara + + + {0} jard + {0} jarda + {0} jardi + + + {0} gram + {0} grama + {0} grama + + + {0} kilogram + {0} kilograma + {0} kilograma + + + {0} unca + {0} unce + {0} unci + + + {0} funta + {0} funte + {0} funti + + + {0} konjska snaga + {0} konjske snage + {0} konjskih snaga + + + {0} kilovat + {0} kilovata + {0} kilovata + + + {0} vat + {0} vata + {0} vati + + + {0} hektopaskal + {0} hektopaskala + {0} hektopaskala + + + {0} inč žive + {0} inča žive + {0} inča žive + + + {0} milibar + {0} milibara + {0} milibara + + + {0} kilometar na sat + {0} kilometra na sat + {0} kilometara na sat + + + {0} metar u sekundi + {0} metra u sekundi + {0} metara u sekundi + + + {0} milja na sat + {0} milje na sat + {0} milja na sat + + + {0} Celzijev stupanj + {0} Celzijeva stupnja + {0} Celzijevih stupnjeva + + + {0} Fahrenheitov stupanj + {0} Fahrenheitova stupnja + {0} Fahrenheitovih stupnjeva + + + {0} kubni kilometar + {0} kubna kilometra + {0} kubnih kilometara + + + {0} kubna milja + {0} kubne milje + {0} kubnih milja + + + {0} litra + {0} litre + {0} litara + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0} min + {0} min + {0} min + + + {0} s + {0} s + {0} s + + + {0}° + {0}° + {0}° + + + {0} kj + {0} kj + {0} kj + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} dan + {0} dana + {0} dana + + + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + + + {0} mj. + {0} mj. + {0} mj. + + + {0} s + {0} s + {0} s + + + {0} tj. + {0} tj. + {0} tj. + + + {0} g. + {0} g. + {0} g. + + + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + + + {0} KS + {0} KS + {0} KS + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} kj + {0} kj + {0} kj + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} d. + {0} d. + {0} d. + + + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + + + {0} m + {0} m + {0} m + + + {0} mj. + {0} mj. + {0} mj. + + + {0} s + {0} s + {0} s + + + {0} tj. + {0} tj. + {0} tj. + + + {0} g. + {0} g. + {0} g. + + + {0} cm + {0} cm + {0} cm + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + + + {0} KS + {0} KS + {0} KS + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mb + {0} mb + {0} mb + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + da:d + ne:n + + + + diff --git a/library/Zend/Locale/Data/hr_BA.xml b/library/Zend/Locale/Data/hr_BA.xml new file mode 100755 index 000000000..f67ebfd52 --- /dev/null +++ b/library/Zend/Locale/Data/hr_BA.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + KM + + + + diff --git a/library/Zend/Locale/Data/hr_HR.xml b/library/Zend/Locale/Data/hr_HR.xml new file mode 100755 index 000000000..97627238c --- /dev/null +++ b/library/Zend/Locale/Data/hr_HR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/hu.xml b/library/Zend/Locale/Data/hu.xml new file mode 100755 index 000000000..8b6ba2d39 --- /dev/null +++ b/library/Zend/Locale/Data/hu.xml @@ -0,0 +1,5900 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abház + achinéz + akoli + adangme + adyghe + avesztán + afrikaans + afrihili + agem + ainu + akan + akkád + aleut + dél-altaji + amhara + aragonéz + óangol + angika + arab + modern szabányos arab + arámi + araucani + arapaho + aravak + asszámi + asu + asztúr + avar + awádi + ajmara + azerbajdzsáni + azeri + baskír + balucsi + balinéz + basza + bamun + gomala + belorusz + bedzsa + bemba + bena + bafut + bolgár + bodzspuri + bislama + bikol + bini + kom + siksika + bambara + bengáli + tibeti + breton + braj + bodo + bosnyák + koszi + burját + buginéz + bulu + blin + medumba + katalán + caddo + karib + kajuga + atszam + csecsen + cebui + kiga + csamoró + csibcsa + csagatáj + csukéz + mari + csinuk zsargon + csoktó + csipevé + cseroki + csejen + szoráni kurd + korzikai + kopt + krí + krími tatár + cseh + kasub + egyházi szláv + csuvas + walesi + dán + dakota + dargva + taita + német + osztrák német + svájci felnémet + delavár + szlevi + dogrib + dinka + zarma + dogri + alsó szorb + duala + közép holland + divehi + jola-fonyi + diula + butáni + dazaga + embu + eve + efik + óegyiptomi + ekadzsuk + görög + elamit + angol + ausztrál angol + kanadai angol + brit angol + angol (UK) + amerikai angol + angol (USA) + közép angol + eszperantó + spanyol + latin-amerikai spanyol + európai spanyol + spanyol (mexikói) + észt + baszk + evondo + perzsa + fang + fanti + fulani + finn + filippínó + fidzsi + feröeri + fon + francia + kanadai francia + svájci francia + közép francia + ófrancia + északi fríz + keleti fríz + friuli + fríz + ír + ga + gajo + gbaja + skót gael + geez + ikiribati + galíciai + közép felső német + guarani + ófelső német + gondi + gorontalo + gót + grebó + ógörög + svájci német + gudzsarati + guszii + Man-szigeti + gvicsin + hausza + haida + hawaii + héber + hindi + hiligajnon + hittite + hmong + hiri motu + horvát + felső szorb + haiti + magyar + hupa + örmény + herero + interlingva + iban + ibibió + indonéz + interlingue + igbó + szecsuán ji + inupiak + ilokó + ingus + idó + izlandi + olasz + inuktitut + japán + lojban + ngomba + machame + zsidó-perzsa + zsidó-arab + jávai + grúz + kara-kalpak + kabije + kacsin + jju + kamba + kawi + kabardi + kanembu + tyap + makonde + kabuverdianu + koro + kongo + kaszi + kotanéz + kojra-csíni + kikuju + kuanyama + kazah + kakó + grönlandi + kalendzsin + kambodzsai + kimbundu + kannada + koreai + konkani + kosrei + kpelle + kanuri + karacsáj-balkár + karelai + kuruh + kásmíri + sambala + bafia + kölsch + kurd + kumük + kutenai + komi + korni + kirgiz + latin + ladino + langi + lahnda + lamba + luxemburgi + lezg + ganda + limburgi + lingala + laoszi + mongó + lozi + litván + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + lujia + lett + madurai + mafa + magahi + maithili + makaszar + mandingó + masai + maba + moksán + mandar + mende + meru + mauritiusi kreol + málgas + közép ír + makua-metó + meta' + marshalli + maori + mikmak + minangkabau + macedón + malajálam + mongol + mandzsu + manipuri + mohawk + moszi + marathi + maláj + máltai + mundang + többszörös nyelvek + krík + mirandéz + marvari + burmai + myene + erzjány + naurui + nápolyi + nama + norvég bokmal + északi ndebele + alsónémet + nepáli + nevari + ndonga + nias + niui + holland + flamand + ngumba + norvég nynorsk + ngiemboon + norvég + nogaj + óskandináv + n'kó + déli ndebele + északi szotó + nuer + navahó + klasszikus newari + nyanja + nyamvézi + nyankole + nyoró + nzima + okszitán + ojibva + oromói + orija + oszét + osage + ottomán török + pandzsábi + pangaszinan + pahlavi + pampangan + papiamentó + palaui + óperzsa + főniciai + pali + lengyel + pohnpei + óprovánszi + pastu + portugál + brazíliai portugál + európai portugál + kecsua + radzsasztáni + rapanui + rarotongai + réto-román + kirundi + román + moldvai + rombo + roma + ősi + orosz + aromán + kiruanda + rwo + szanszkrit + szandave + jakut + szamaritánus arámi + szamburu + sasak + szantáli + ngambay + szangu + szardíniai + szicíliai + skót + szindhi + északi számi + szeneka + szena + szölkup + kojra-szenni + szangó + óír + szerbhorvát + tachelhit + san + csádi arab + szingaléz + szidamó + szlovák + szlovén + szamoai + déli számi + lule számi + inar sami + koltta lapp + sona + szoninke + szomáliai + sogdien + albán + szerb + szranai tongó + szerer + sziszuati + szahó + szeszotó + szundanéz + szukuma + szuszu + sumér + svéd + szuahéli + comorei + kongói szuahéli + klasszikus szír + szíriai + tamil + telugu + temne + teszó + terenó + tetum + tadzsik + thai + tigrinja + tigré + tiv + türkmén + tokelaui + tagalog + klingon + tlingit + tamasek + szecsuáni + tonga + nyasa tonga + tok pisin + török + tarokó + conga + csimsiáni + tatár + tumbuka + tuvalu + twi + szavák + tahiti + tuvai + közép-marokkói tamazigt + udmurt + ujgur + ugariti + ukrán + umbundu + ismeretlen nyelv + urdu + üzbég + vai + venda + vietnami + volapük + votják + vunjo + vallon + walser + valamo + varaó + vasó + volof + kalmük + hosza + szoga + jaó + japi + jangben + jemba + jiddis + joruba + kantoni + zsuang + zapoték + Bliss jelképrendszer + zenaga + marokkói tamazight + kínai + egyszerűsített kínai + hagyományos kínai + zulu + zuni + nincs nyelvészeti tartalom + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Világ + Afrika + Észak-Amerika + Dél-Amerika + Óceánia + Nyugat-Afrika + Közép-Amerika + Kelet-Afrika + Észak-Afrika + Közép-Afrika + Afrika déli része + Amerika + Amerika északi része + Karib-térség + Kelet-Ázsia + Dél-Ázsia + Délkelet-Ázsia + Dél-Európa + Ausztrálázsia + Melanézia + Mikronéziai régió + Polinézia + Ázsia + Közép-Ázsia + Nyugat-Ázsia + Európa + Kelet-Európa + Észak-Európa + Nyugat-Európa + Latin-Amerika + Ascension-sziget + Andorra + Egyesült Arab Emirátus + Afganisztán + Antigua és Barbuda + Anguilla + Albánia + Örményország + Holland Antillák + Angola + Antarktisz + Argentína + Amerikai Szamoa + Ausztria + Ausztrália + Aruba + Åland-szigetek + Azerbajdzsán + Bosznia-Hercegovina + Barbados + Banglades + Belgium + Burkina Faso + Bulgária + Bahrein + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolívia + Holland Karib-térség + Brazília + Bahama-szigetek + Bhután + Bouvet-sziget + Botswana + Fehéroroszország + Belize + Kanada + Kókusz-szigetek + Kongó - Kinshasa + Kongó (KDK) + Közép-afrikai Köztársaság + Kongó - Brazzaville + Kongó (Köztársaság) + Svájc + Elefántcsontpart + Cook-szigetek + Chile + Kamerun + Kína + Kolumbia + Clipperton-sziget + Costa Rica + Kuba + Zöld-foki Köztársaság + Curaçao + Karácsony-sziget + Ciprus + Csehország + Németország + Diego Garcia + Dzsibuti + Dánia + Dominika + Dominikai Köztársaság + Algéria + Ceuta és Melilla + Ecuador + Észtország + Egyiptom + Nyugat-Szahara + Eritrea + Spanyolország + Etiópia + Európai Unió + Finnország + Fidzsi-szigetek + Falkland-szigetek + Falkland-szigetek (Malvin-szigetek) + Mikronézia + Feröer-szigetek + Franciaország + Gabon + Egyesült Királyság + UK + Grenada + Grúzia + Francia Guyana + Guernsey + Ghána + Gibraltár + Grönland + Gambia + Guinea + Guadeloupe + Egyenlítői-Guinea + Görögország + Déli-Georgia és Déli-Sandwich-szigetek + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong SAR Kína + Hongkong + Heard-sziget és McDonald-szigetek + Honduras + Horvátország + Haiti + Magyarország + Kanári-szigetek + Indonézia + Írország + Izrael + Man-sziget + India + Brit Indiai-óceáni Terület + Irak + Irán + Izland + Olaszország + Jersey + Jamaica + Jordánia + Japán + Kenya + Kirgizisztán + Kambodzsa + Kiribati + Comore-szigetek + Saint Kitts és Nevis + Észak-Korea + Dél-Korea + Kuvait + Kajmán-szigetek + Kazahsztán + Laosz + Libanon + Santa Lucia + Liechtenstein + Srí Lanka + Libéria + Lesotho + Litvánia + Luxemburg + Lettország + Líbia + Marokkó + Monaco + Moldova + Montenegró + Saint Martin + Madagaszkár + Marshall-szigetek + Macedónia + Macedónia (MVJK) + Mali + Mianmar (Burma) + Mongólia + Makaó SAR Kína + Makaó + Északi Mariana-szigetek + Martinique + Mauritánia + Montserrat + Málta + Mauritius + Maldív-szigetek + Malawi + Mexikó + Malajzia + Mozambik + Namíbia + Új-Kaledónia + Niger + Norfolk-sziget + Nigéria + Nicaragua + Hollandia + Norvégia + Nepál + Nauru + Niue + Új-Zéland + Omán + Panama + Peru + Francia Polinézia + Pápua Új-Guinea + Fülöp-szigetek + Pakisztán + Lengyelország + Saint Pierre és Miquelon + Pitcairn-szigetek + Puerto Rico + Palesztin Terület + Palesztina + Portugália + Palau + Paraguay + Katar + Külső-Óceánia + Reunion + Románia + Szerbia + Oroszország + Ruanda + Szaúd-Arábia + Salamon-szigetek + Seychelle-szigetek + Szudán + Svédország + Szingapúr + Szent Ilona + Szlovénia + Spitzbergák és Jan Mayen-szigetek + Szlovákia + Sierra Leone + San Marino + Szenegál + Szomália + Suriname + Dél-Szudán + Sao Tomé és Príncipe + Salvador + Sint Maarten + Szíria + Szváziföld + Tristan da Cunha + Turks- és Caicos-szigetek + Csád + Francia Déli Területek + Togo + Thaiföld + Tádzsikisztán + Tokelau + Kelet-Timor + Türkmenisztán + Tunézia + Tonga + Törökország + Trinidad és Tobago + Tuvalu + Tajvan + Tanzánia + Ukrajna + Uganda + Amerikai Csendes-óceáni Szigetek + Egyesült Államok + USA + Uruguay + Üzbegisztán + Vatikán + Saint Vincent és a Grenadine-szigetek + Venezuela + Brit Virgin-szigetek + Amerikai Virgin-szigetek + Vietnam + Vanuatu + Wallis- és Futuna-szigetek + Szamoa + Koszovó + Jemen + Mayotte + Dél-afrikai Köztársaság + Zambia + Zimbabwe + Ismeretlen körzet + + + Hagyományos német helyesírás + Szabványosított reziján helyesírás + 1996-os német helyesírás + Késői közép francia 1606-ig + Korai modern francia + Akadémiai + ALA-LC romanizáció, 1997-es kiadás + Aluku dialektus + Keleti örmény + Nyugati örmény + Egyesített türkic latin ábécé + Bauddha + Biszkajan + San Giorgo/Bila tájszólás + Boontling + IPA fonetika + UPA fonetika + Fonxsamp + Hepburn romanizáció + Hongorszk + Itihasa + Jauer + Jyutping + Meghatározatlan helyesírás + Laukika + Reziján lipovaz tájszólás + Luna1918 + Monoton + Ndyuka dialektus + Natisone dialektus + Gniva/Njiva tájszólás + Oseacco/Osojane tájszólás + Pamaka dialektus + Petr1708 + pinjin átírás + Politonikus + Számítógép + Puter + Átdolgozott helyesírás + Reziján + Rumgr + Saho + Skót szabványos angol + Scouse + Stolvizza/Solbica tájszólás + Surmiran + Sursilv + Sutsilv + Taraskijevica helyesírás + Egyesített helyesírás + Egyesített átdolgozott helyesírás + Ulster + Vaidika + Valencia + Vallader + Wade-Giles átírás + + + Naptár + Szimbólumokat figyelmen kívül hagyó rendezés + Ékezetek fordított rendezése + Rendezés nagy- vagy kisbetűk szerint + Kisbetű-nagybetű érzékeny rendezés + Kanák szerinti rendezés + Rendezési sorrend + Normalizált rendezés + Numerikus rendezés + Rendezés erőssége + Pénznem + Számok + Időzóna + Földrajzi helyvariáns + Rendezés szimbólumok szerint + Privát használatra + + + Arab-indiai számjegyek + Kibővített arab-indiai számjegyek + Örmény számok + Örmény kisbetűs számok + Bengáli számjegyek + Hagyományos kínai sorrend - Big5 + Buddhista naptár + Kínai naptár + Kopt naptár + Dévanágari számjegyek + Szótári rendezési sorrend + Alapértelmezett Unicode rendezési sorrend + Etióp számok + Etióp naptár + Etióp amete alem naptár + Pénzügyi számok + Teljes szélességű számjegyek + Egyszerűsített kínai sorrend - GB2312 + Grúz számok + Gergely-naptár + Görög számok + Görög kisbetűs számok + Gudzsaráti számjegyek + Gurmuki számjegyek + Kínai tizedes számok + Egyszerűsített kínai számok + Egyszerűsített kínai pénzügyi számok + Hagyományos kínai számok + Hagyományos kínai pénzügyi számok + Héber számok + Héber naptár + Összes rendezése + Indiai nemzeti naptár + Iszlám naptár + Iszlám civil naptár + Japán naptár + Japán számok + Japán pénzügyi számok + Khmer számjegyek + Kannada számjegyek + Lao számjegyek + Nyugati számjegyek + Kisbetűs szavak rendezése előre + Malajálam számjegyek + Mongol számjegyek + Mianmari számjegyek + Natív számjegyek + Ékezetek normál rendezése + Kisbetűs-nagybetűs szavak normál rendezése + Kis- és nagybetűket meg nem különböztető rendezés + Kanák rendezése külön + Rendezés normalizálás nélkül + Számjegyek egyedi rendezése + Szimbólumok rendezése + Orija számjegyek + Perzsa naptár + Telefonkönyv sorrend + Fonetikus rendezési sorrend + Pinyin sorrend + Csak az alapbetűk rendezése + Ékezetek/kisbetű-nagybetű/szélesség/kanák rendezése + Átalakított rendezési elv + Kínai köztársasági naptár + Római számok + Római kisbetűs számok + Általános célú keresés + Keresés hangul kezdő mássalhangzó szerint + Ékezetek rendezése + Rendezés szimbólumok figyelmen kívül hagyásával + Normál rendezési sorrend + Vonássorrend + Tamil hagyományos számok + Tamil számjegyek + Telugu számjegyek + Ékezetek/kisbetű-nagybetű/szélesség rendezése + Thai számjegyek + Tibeti számjegyek + Hagyományos + Hagyományos számok + Szótővonás rendezési sorrend + Nagybetűs szavak rendezése előre + Vai számjegyek + Ékezetek szerinti fordított rendezés + Rendezés kisbetű-nagybetű szerint + Kanák megkülönböztető rendezése + Unicode szerinti normalizált rendezés + Számjegyek numerikus rendezése + + + BGN + Szám + Hangsúly + UNGEGN + Ékezetek + Teljes szélesség + Fél szélesség + Jamo + Pinjin + Kiadásra + + + metrikus + angol + amerikai + + + Nyelv: {0} + Írásrendszer: {0} + Régió: {0} + + + + [a á b c {cs} {ccs} d {dz} {ddz} {dzs} {ddzs} e é f g {gy} {ggy} h i í j k l {ly} {lly} m n {ny} {nny} o ó ö ő p r s {sz} {ssz} t {ty} {tty} u ú ü ű v z {zs} {zzs}] + [à ă â å ä ã ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ô ø ō œ q ù ŭ û ū w x y ÿ] + [A Á B C {CS} D {DZ} {DZS} E É F G {GY} H I Í J K L {LY} M N {NY} O Ó Ö Ő P Q R S {SZ} T {TY} U Ú Ü Ű V W X Y Z {ZS}] + [\- – , ; \: ! ? . … ' ’ " ” „ « » ( ) \[ \] \{ \} ⟨ ⟩ § @ * / \& # ~ ⁒] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0} … {1} + ? + + + + + » + « + + + + + + + BK + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + + G y. MMMM d., EEEE + + + + + G y. MMMM d. + + + + + G y. MMM d. + + + + + GGGGG y. M. d. + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d., E + G y. + G y. MMM + G y. MMM d. + G y. MMM d., E + a h + H + a h:mm + H:mm + a h:mm:ss + H:mm:ss + L + M. d. + M. d., E + LLL + MMM d. + MMM d., E + MMMM d. + mm:ss + G y. + G y. + G y. MM. + G y. MM. dd. + G y. MM. dd., E + G y. MMM + G y. MMM d. + G y. MMM d., E + G y. MMMM + G y. QQQ + G y. QQQQ + + + {0} – {1} + + d–d. + + + a h – a h + a h–h + + + H-H + + + a h:mm – a h:mm + a h:mm–h:mm + a h:mm–h:mm + + + H:mm-H:mm + H:mm-H:mm + + + a h:mm – a h:mm v + a h:mm–h:mm v + a h:mm–h:mm v + + + H:mm-H:mm v + H:mm-H:mm v + + + a h – a h v + a h–h v + + + H-H v + + + M–M. + + + MM. dd–dd. + MM. dd. – MM. dd. + + + MM. dd., E – MM. dd., E + MM. dd., E – MM. dd., E + + + MMM–MMM + + + MMM d–d. + MMM d. – MMM d. + + + MMM d., E – d., E + MMM d., E – MMM d., E + + + G y–y. + + + G y. MM–MM. + G y. MM. – y. MM. + + + G y. MM. dd–dd. + G y. MM. dd. – MM. dd. + G y. MM. dd. – y. MM. dd. + + + G y. MM. dd., E – dd., E + G y. MM. dd., E – MM. dd., E + G y. MM. dd., E – y. MM. dd., E + + + G y. MMM–MMM + G y. MMM – y. MMM + + + G y. MMM d–d. + G y. MMM d. – MMM d. + G y. MMM d. – y. MMM d. + + + G y. MMM d., E – MMM d., E + G y. MMM d., E – MMM d., E + G y. MMM d., E – y. MMM d., E + + + G y. MMMM–MMMM + G y. MMMM – y. MMMM + + + + + + + + + jan. + febr. + márc. + ápr. + máj. + jún. + júl. + aug. + szept. + okt. + nov. + dec. + + + J + F + M + Á + M + J + J + A + Sz + O + N + D + + + január + február + március + április + május + június + július + augusztus + szeptember + október + november + december + + + + + jan. + febr. + márc. + ápr. + máj. + jún. + júl. + aug. + szept. + okt. + nov. + dec. + + + J + F + M + Á + M + J + J + A + Sz + O + N + D + + + január + február + március + április + május + június + július + augusztus + szeptember + október + november + december + + + + + + + V + H + K + Sze + Cs + P + Szo + + + V + H + K + Sz + Cs + P + Sz + + + V + H + K + Sze + Cs + P + Szo + + + vasárnap + hétfő + kedd + szerda + csütörtök + péntek + szombat + + + + + V + H + K + Sze + Cs + P + Szo + + + V + H + K + Sz + Cs + P + Sz + + + V + H + K + Sze + Cs + P + Szo + + + vasárnap + hétfő + kedd + szerda + csütörtök + péntek + szombat + + + + + + + N1 + N2 + N3 + N4 + + + 1. + 2. + 3. + 4. + + + I. negyedév + II. negyedév + III. negyedév + IV. negyedév + + + + + N1 + N2 + N3 + N4 + + + 1. + 2. + 3. + 4. + + + 1. negyedév + 2. negyedév + 3. negyedév + 4. negyedév + + + + + + + de. + du. + + + de. + du. + + + + + + időszámításunk előtt + időszámításunk szerint + + + i. e. + Kr. e. + i. sz. + Kr. u. + + + ie. + isz. + + + + + + y. MMMM d., EEEE + + + + + y. MMMM d. + + + + + y. MMM d. + + + + + y. MM. dd. + + + + + + + H:mm:ss zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d., E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y. + G y. MMM + G y. MMM d. + G y. MMM d., E + a h + H + a h:mm + H:mm + a h:mm:ss + H:mm:ss + L + M. d. + M. d., E + LLL + MMM d. + MMM d., E + MMMM d. + mm:ss + mm:ss + y. + y. M. + y. MM. dd. + y. MM. dd., E + y. MMM + y. MMM d. + y. MMM d., E + y. MMMM + y. QQQ + y. QQQQ + + + {0} {1} + + + {0} – {1} + + d–d. + + + a h – a h + a h–h + + + H-H + + + a h:mm – a h:mm + a h:mm–h:mm + a h:mm–h:mm + + + H:mm–H:mm + H:mm–H:mm + + + a h:mm – a h:mm v + a h:mm–h:mm v + a h:mm–h:mm v + + + H:mm–H:mm v + H:mm–H:mm v + + + a h – a h v + a h–h v + + + H–H v + + + M–M. + + + M. d–d. + M. d. – M. d. + + + M. dd., E – M. d., E + M. d., E – M. d., E + + + MMM–MMM + + + MMM d–d. + MMM d. – MMM d. + + + MMM d., E – d., E + MMM d., E – MMM d., E + + + y–y + + + y. MM–MM. + y. MM. – y. MM. + + + y. MM. dd–dd. + y. MM. dd. – MM. dd. + y. MM. dd. – y. MM. dd. + + + y. MM. dd., E – dd., E + y. MM. dd., E – MM. dd., E + y. MM. dd., E – y. MM. dd., E + + + y. MMM–MMM + y. MMM – y. MMM + + + y. MMM d–d. + y. MMM d. – MMM d. + y. MMM d. – y. MMM d. + + + y. MMM d., E – d., E + y. MMM d., E – MMM d., E + y. MMM d., E – y. MMM d., E + + + y. MMMM–MMMM + y. MMMM – y. MMMM + + + + + + + + + Tisri + Hesván + Kiszlév + Tévész + Svát + Ádár I + Ádár + Ádár II + Niszán + Ijár + Sziván + Tamuz + Áv + Elul + + + Tisri + Hesván + Kiszlév + Tévész + Svát + Ádár I + Ádár + Ádár II + Niszán + Ijár + Sziván + Tamuz + Áv + Elul + + + + + Tisri + Hesván + Kiszlév + Tévész + Svát + Ádár I + Ádár + Ádár II + Niszán + Ijár + Sziván + Tamuz + Áv + Elul + + + Tisri + Hesván + Kiszlév + Tévész + Svát + Ádár I + Ádár + Ádár II + Niszán + Ijár + Sziván + Tamuz + Áv + Elul + + + + + + + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + + + + Moh. + Saf. + Rébi I + Rébi II + Dsem. I + Dsem. II + Red. + Sab. + Ram. + Sev. + Dsül k. + Dsül h. + + + Moharrem + Safar + Rébi el avvel + Rébi el accher + Dsemádi el avvel + Dsemádi el accher + Redseb + Sabán + Ramadán + Sevvál + Dsül kade + Dsül hedse + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Moharrem + Safar + Rébi I + Rébi II + Dsemádi I + Dsemádi II + Redseb + Sabán + Ramadán + Sevvál + Dsül kade + Dsül hedse + + + + + + MF + + + + + + + + + G y. MMMM d., EEEE + + + + + G y. MMMM d. + + + + + G y.MM.dd. + + + + + GGGGG y.MM.dd. + + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + + + R.O.C. előtt + + + + + + + éra + + + év + előző év + ez az év + következő év + + {0} év múlva + {0} év múlva + + + {0} évvel ezelőtt + {0} évvel ezelőtt + + + + hónap + előző hónap + ez a hónap + következő hónap + + {0} hónap múlva + {0} hónap múlva + + + {0} hónappal ezelőtt + {0} hónappal ezelőtt + + + + hét + előző hét + ez a hét + következő hét + + {0} hét múlva + {0} hét múlva + + + {0} héttel ezelőtt + {0} héttel ezelőtt + + + + nap + tegnapelőtt + tegnap + ma + holnap + holnapután + + {0} nap múlva + {0} nap múlva + + + {0} nappal ezelőtt + {0} nappal ezelőtt + + + + hét napja + + + előző vasárnap + ez a vasárnap + következő vasárnap + + + előző hétfő + ez a hétfő + következő hétfő + + + előző kedd + ez a kedd + következő kedd + + + előző szerda + ez a szerda + következő szerda + + + előző csütörtök + ez a csütörtök + következő csütörtök + + + előző péntek + ez a péntek + következő péntek + + + előző szombat + ez a szombat + következő szombat + + + napszak + + + óra + + {0} óra múlva + {0} óra múlva + + + {0} órával ezelőtt + {0} órával ezelőtt + + + + perc + + {0} perc múlva + {0} perc múlva + + + {0} perccel ezelőtt + {0} perccel ezelőtt + + + + másodperc + most + + {0} másodperc múlva + {0} másodperc múlva + + + {0} másodperccel ezelőtt + {0} másodperccel ezelőtt + + + + időzóna + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} idő + {0} nyári idő + {0} zónaidő + {1} ({0}) + + Ismeretlen város + + + Tirana + + + Jereván + + + Vosztok + + + Dumont d’Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Bécs + + + Szarajevó + + + Dháka + + + Brüsszel + + + Szófia + + + Bahrein + + + Saint Barthélemy + + + Eirunepé + + + Río Branco + + + Cuiabá + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Minszk + + + Atikokan + + + St. John’s + + + Kókusz-sziget + + + Zürich + + + Húsvét-szigetek + + + Kasgár + + + Ürümqi + + + Csungking + + + Sanghaj + + + Bogotá + + + Havanna + + + Zöld-Foki Szigetek + + + Karácsony-sziget + + + Prága + + + Büsingen + + + Dzsibuti + + + Koppenhága + + + Dominika + + + Algír + + + Galapagos-szigetek + + + Tallin + + + Kairó + + + El-Ajún + + + Asmera + + + Kanári-szigetek + + + Addisz-Abeba + + + Fidzsi + + + Truk-szigetek + + + Ponape-szigetek + + + Kosrae-szigetek + + + Faroe + + + Párizs + + + + Brit nyári idő + + + + Tbiliszi + + + Gibraltár + + + Nuuk + + + Ittoqqortoormiit + + + Malabó + + + Athén + + + Déli-Georgia + + + Hongkong + + + Zágráb + + + Makasar + + + + Ír nyári idő + + + + Jeruzsálem + + + Man-sziget + + + Kalkutta + + + Bagdad + + + Teherán + + + Reykjavík + + + Róma + + + Ammán + + + Tokio + + + Biskek + + + Kiritimati-sziget + + + Komoró + + + St. Kitts + + + Phenjan + + + Szöul + + + Kuvait + + + Kajmán-szigetek + + + Aktau + + + Aktöbe + + + Kizilorda + + + Alma-Ata + + + Vientián + + + Bejrút + + + St. Lucia + + + Vilniusz + + + Luxemburg + + + Kwajalein-zátony + + + Majuro-zátony + + + Ulánbátor + + + Csojbalszan + + + Makaó + + + Málta + + + Maldív-szigetek + + + Mazatlán + + + Mexikóváros + + + Mérida + + + Cancún + + + Kucseng + + + Amszterdam + + + Katmandu + + + Chatham-szigetek + + + Marquesas-szigetek + + + Gambier-szigetek + + + Karacsi + + + Varsó + + + Pitcairn-szigetek + + + Gáza + + + Azori-szigetek + + + Lisszabon + + + Asunción + + + Katar + + + Réunion + + + Bukarest + + + Belgrád + + + Kalinyingrád + + + Moszkva + + + Volgográd + + + Szamara + + + Jekatyerinburg + + + Omszk + + + Novoszibirszk + + + Novokuznyeck + + + Krasznojarszk + + + Irkutszk + + + Jakutszk + + + Vlagyivosztok + + + Handiga + + + Szahalin + + + Uszty-Nyera + + + Magadán + + + Kamcsatka + + + Anadir + + + Rijád + + + Kartúm + + + Szingapúr + + + Szent Ilona + + + Pozsony + + + São Tomé + + + Salvador + + + Lower Prince's Quarter + + + Damaszkusz + + + Asgabat + + + Tunisz + + + Isztanbul + + + Tajpej + + + Dar es-Salaam + + + Ungvár + + + Kijev + + + Szimferopol + + + Zaporozsje + + + Midway-szigetek + + + Wake-sziget + + + Beulah, Észak-Dakota + + + New Salem, Észak-Dakota + + + Középső, Észak-Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Szamarkand + + + Taskent + + + Vatikán + + + St. Vincent + + + St. Thomas + + + Ho Si Minh-város + + + Áden + + + + Acre idő + Acre zónaidő + Acre nyári idő + + + + + Afganisztáni idő + + + + + Közép-afrikai idő + + + + + Kelet-afrikai idő + + + + + Dél-afrikai idő + + + + + Nyugat-afrikai idő + Nyugat-afrikai zónaidő + Nyugat-afrikai nyári idő + + + + + Alaszkai idő + Alaszkai zónaidő + Alaszkai nyári idő + + + + + Almati idő + Almati zónaidő + Almati nyári idő + + + + + Amazóniai idő + Amazóniai zónaidő + Amazóniai nyári idő + + + + + Középső államokbeli idő + Középső államokbeli zónaidő + Középső államokbeli nyári idő + + + + + Keleti államokbeli idő + Keleti államokbeli zónaidő + Keleti államokbeli nyári idő + + + + + Hegyvidéki idő + Hegyvidéki zónaidő + Hegyvidéki nyári idő + + + + + Csendes-óceáni idő + Csendes-óceáni zónaidő + Csendes-óceáni nyári idő + + + + + Anadiri idő + Anadíri zónaidő + Anadíri nyári idő + + + + + Aqtaui idő + Aqtaui zónaidő + Aqtaui nyári idő + + + + + Aqtobei idő + Aqtobei zónaidő + Aqtobei nyári idő + + + + + Arab idő + Arab zónaidő + Arab nyári idő + + + + + Argentínai idő + Argentínai zónaidő + Argentínai nyári idő + + + + + Nyugat-argentínai idő + Nyugat-argentínai zónaidő + Nyugat-argentínai nyári idő + + + + + Örmény idő + Örmény zónaidő + Örmény nyári idő + + + + + Atlanti-óceáni idő + Atlanti-óceáni zónaidő + Atlanti-óceáni nyári idő + + + + + Közép-ausztráliai idő + Ausztrál középső zónaidő + Ausztrál középső nyári idő + + + + + Ausztrál középső nyugati idő + Ausztrál középső nyugati zónaidő + Ausztrál középső nyugati nyári idő + + + + + Kelet-ausztrál idő + Ausztrál keleti zónaidő + Ausztrál keleti nyári idő + + + + + Nyugat-ausztrál idő + Ausztrál nyugati zónaidő + Ausztrál nyugati nyári idő + + + + + Azerbajdzsáni idő + Azerbajdzsáni zónaidő + Azerbajdzsáni nyári idő + + + + + Azori idő + Azori zónaidő + Azori nyári idő + + + + + Bangladesi idő + Bangladesi zónaidő + Bangladesi nyári idő + + + + + Butáni idő + + + + + Bolíviai idő + + + + + Brazíliai idő + Brazíliai zónaidő + Brazíliai nyári idő + + + + + Brunei Darussalam-i idő + + + + + Zöld-foki-szigeteki idő + Zöld-foki-szigeteki zónaidő + Zöld-foki-szigeteki nyári idő + + + + + Chamorrói idő + + + + + Chathami idő + Chathami zónaidő + Chathami nyári idő + + + + + Chilei idő + Chilei zónaidő + Chilei nyári idő + + + + + Kínai idő + Kínai zónaidő + Kínai nyári idő + + + + + Csojbalszani idő + Csojbalszani zónaidő + Csojbalszani nyári idő + + + + + Karácsony-szigeti idő + + + + + Kókusz-szigeteki idő + + + + + Kolumbiai idő + Kolumbiai zónaidő + Kolumbiai nyári idő + + + + + Cook-szigeteki idő + Cook-szigeteki zónaidő + Cook-szigeteki fél nyári idő + + + + + Kubai idő + Kubai zónaidő + Kubai nyári idő + + + + + Davisi idő + + + + + Dumont-d'Urville-i idő + + + + + Kelet-timori idő + + + + + Húsvét-szigeteki idő + Húsvét-szigeteki zónaidő + Húsvét-szigeteki nyári idő + + + + + Ecuadori idő + + + + + Közép-európai idő + Közép-európai zónaidő + Közép-európai nyári idő + + + CET + CET + CEST + + + + + Kelet-európai idő + Kelet-európai zónaidő + Kelet-európai nyári idő + + + EET + EET + EEST + + + + + Nyugat-európai idő + Nyugat-európai zónaidő + Nyugat-európai nyári idő + + + WET + WET + WEST + + + + + Falkland-szigeteki idő + Falkland-szigeteki zónaidő + Falkland-szigeteki nyári idő + + + + + Fidzsi idő + Fidzsi zónaidő + Fidzsi nyári idő + + + + + Francia-guianai idő + + + + + Francia déli és antarktikus idő + + + + + Galapagosi idő + + + + + Gambieri idő + + + + + Grúz idő + Grúz zónaidő + Grúz nyári idő + + + + + Gilbert-szigeteki idő + + + + + Greenwichi középidő + + + GMT + + + + + Kelet-grönlandi idő + Kelet-grönlandi zónaidő + Kelet-grönlandi nyári idő + + + + + Nyugat-grönlandi idő + Nyugat-grönlandi zónaidő + Nyugat-grönlandi nyári idő + + + + + Guami zónaidő + + + + + Öbölbeli zónaidő + + + + + Guyanai idő + + + + + Hawaii-aleuti idő + Hawaii-aleuti zónaidő + Hawaii-aleuti nyári idő + + + + + Hongkongi idő + Hongkongi zónaidő + Hongkongi nyári idő + + + + + Hovdi idő + Hovdi zónaidő + Hovdi nyári idő + + + + + Indiai zónaidő + + + + + Indiai-óceáni idő + + + + + Indokínai idő + + + + + Közép-indonéziai idő + + + + + Kelet-indonéziai idő + + + + + Nyugat-indonéziai idő + + + + + Iráni idő + Iráni zónaidő + Iráni nyári idő + + + + + Irkutszki idő + Irkutszki zónaidő + Irkutszki nyári idő + + + + + Izraeli idő + Izraeli zónaidő + Izraeli nyári idő + + + + + Japán idő + Japán zónaidő + Japán nyári idő + + + + + Petropavlovszk-kamcsatkai idő + Petropavlovszk-kamcsatkai zónaidő + Petropavlovszk-kamcsatkai nyári idő + + + + + Kelet-kazahsztáni idő + + + + + Nyugat-kazahsztáni idő + + + + + Koreai idő + Koreai zónaidő + Koreai nyári idő + + + + + Kosraei idő + + + + + Krasznojarszki idő + Krasznojarszki zónaidő + Krasznojarszki nyári idő + + + + + Kirgiz idő + + + + + Lankai idő + + + + + Line-szigeteki idő + + + + + Lord Howe-i idő + Lord Howe-i zónaidő + Lord Howe-i nyári idő + + + + + Macaui idő + Macaui zónaidő + Macaui nyári idő + + + + + Macquarie-i idő + + + + + Magadáni idő + Magadáni zónaidő + Magadáni nyári idő + + + + + Malajziai idő + + + + + Maldív-szigeteki idő + + + + + Marquesasi idő + + + + + Marshall-szigeteki idő + + + + + Mauritiusi idő + Mauritiusi zónaidő + Mauritiusi nyári idő + + + + + Mawsoni idő + + + + + Ulánbátori idő + Ulánbátori zónaidő + Ulánbátori nyári idő + + + + + Moszkvai idő + Moszkvai zónaidő + Moszkvai nyári idő + + + + + Mianmari idő + + + + + Naurui idő + + + + + Nepáli idő + + + + + Új-kaledóniai idő + Új-kaledóniai zónaidő + Új-kaledóniai nyári idő + + + + + Új-zélandi idő + Új-zélandi zónaidő + Új-zélandi nyári idő + + + + + Új-fundlandi idő + Új-fundlandi zónaidő + Új-fundlandi nyári idő + + + + + Niuei idő + + + + + Norfolk-szigeteki idő + + + + + Fernando de Noronha-i idő + Fernando de Noronha-i zónaidő + Fernando de Noronha-i nyári idő + + + + + Észak-mariana-szigeteki idő + + + + + Novoszibirszki idő + Novoszibirszki zónaidő + Novoszibirszki nyári idő + + + + + Omszki idő + Omszki zónaidő + Omszki nyári idő + + + + + Pakisztáni idő + Pakisztáni zónaidő + Pakisztáni nyári idő + + + + + Palaui idő + + + + + Pápua új-guineai idő + + + + + Paraguayi idő + Paraguayi zónaidő + Paraguayi nyári idő + + + + + Perui idő + Perui zónaidő + Perui nyári idő + + + + + Fülöp-szigeteki idő + Fülöp-szigeteki zónaidő + Fülöp-szigeteki nyári idő + + + + + Phoenix-szigeteki idő + + + + + Saint Pierre és Miquelon-i idő + Saint Pierre és Miquelon-i zónaidő + Saint Pierre és Miquelon-i nyári idő + + + + + Pitcairni idő + + + + + Ponapei idő + + + + + Qyzylordai idő + Qyzylordai zónaidő + Qyzylordai nyári idő + + + + + Réunioni idő + + + + + Rotherai idő + + + + + Szahalini idő + Szahalini zónaidő + Szahalini nyári idő + + + + + Szamarai idő + Szamarai zónaidő + Szamarai nyári idő + + + + + Szamoai idő + Szamoai zónaidő + Szamoai nyári idő + + + + + Seychelle-szigeteki idő + + + + + Szingapúri zónaidő + + + + + Salamon-szigeteki idő + + + + + Dél-georgiai idő + + + + + Szurinámi idő + + + + + Syowai idő + + + + + Tahiti idő + + + + + Taipei idő + Taipei zónaidő + Taipei nyári idő + + + + + Tádzsikisztáni idő + + + + + Tokelaui idő + + + + + Tongai idő + Tongai zónaidő + Tongai nyári idő + + + + + Truki idő + + + + + Türkmenisztáni idő + Türkmenisztáni zónaidő + Türkmenisztáni nyári idő + + + + + Tuvalui idő + + + + + Uruguayi idő + Uruguayi zónaidő + Uruguayi nyári idő + + + + + Üzbegisztáni idő + Üzbegisztáni zónaidő + Üzbegisztáni nyári idő + + + + + Vanuatui idő + Vanuatui zónaidő + Vanuatui nyári idő + + + + + Venezuelai idő + + + + + Vlagyivosztoki idő + Vlagyivosztoki zónaidő + Vlagyivosztoki nyári idő + + + + + Volgográdi idő + Volgográdi zónaidő + Volgográdi nyári idő + + + + + Vosztoki idő + + + + + Wake-szigeti idő + + + + + Wallis és futunai idő + + + + + Jakutszki idő + Jakutszki zónaidő + Jakutszki nyári idő + + + + + Jekatyerinburgi idő + Jekatyerinburgi zónaidő + Jekatyerinburgi nyári idő + + + + + + + , +   + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 ezer + 0 ezer + 00 ezer + 00 ezer + 000 ezer + 000 ezer + 0 millió + 0 millió + 00 millió + 00 millió + 000 millió + 000 millió + 0 milliárd + 0 milliárd + 00 milliárd + 00 milliárd + 000 milliárd + 000 milliárd + 0 billió + 0 billió + 00 billió + 00 billió + 000 billió + 000 billió + + + + + 0 E + 0 E + 00 E + 00 E + 000 E + 000 E + 0 M + 0 M + 00 M + 00 M + 000 M + 000 M + 0 Mrd + 0 Mrd + 00 Mrd + 00 Mrd + 000 Mrd + 000 Mrd + 0 B + 0 B + 00 B + 00 B + 000 B + 000 B + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Andorrai peseta + Andorrai peseta + Andorrai peseta + + + EAE-dirham + EAE-dirham + EAE-dirham + + + afgán afghani (1927–2002) + afgán afghani (1927–2002) + afgán afghani (1927–2002) + + + afgán afghani + afgán afghani + afgán afghani + + + albán lek + albán lek + albán lek + + + örmény dram + örmény dram + örmény dram + + + holland antilláki forint + holland antilláki forint + holland antilláki forint + + + angolai kwanza + angolai kwanza + angolai kwanza + + + Angolai kwanza (1977–1990) + Angolai kwanza (1977–1990) + Angolai kwanza (1977–1990) + + + Angolai új kwanza (1990–2000) + Angolai új kwanza (1990–2000) + Angolai új kwanza (1990–2000) + + + Angolai kwanza reajustado (1995–1999) + Angolai kwanza reajustado (1995–1999) + Angolai kwanza reajustado (1995–1999) + + + Argentín austral + Argentin austral + Argentin austral + + + Argentín peso (1983–1985) + Argentín peso (1983–1985) + Argentín peso (1983–1985) + + + argentin peso + argentin peso + argentin peso + + + Osztrák schilling + Osztrák schilling + Osztrák schilling + + + ausztrál dollár + ausztrál dollár + ausztrál dollár + AUD + + + arubai florin + arubai florin + arubai florin + + + azerbajdzsáni manat (1993–2006) + azerbajdzsáni manat (1993–2006) + azerbajdzsáni manat (1993–2006) + + + azerbajdzsáni manat + azerbajdzsáni manat + azerbajdzsáni manat + + + Bosznia-hercegovinai dínár (1992–1994) + Bosznia-hercegovinai dínár (1992–1994) + Bosznia-hercegovinai dínár (1992–1994) + + + bosznia-hercegovinai konvertibilis márka + bosznia-hercegovinai konvertibilis márka + bosznia-hercegovinai konvertibilis márka + + + barbadosi dollár + barbadosi dollár + barbadosi dollár + + + bangladesi taka + bangladesi taka + bangladesi taka + + + Belga frank (konvertibilis) + Belga frank (konvertibilis) + Belga frank (konvertibilis) + + + Belga frank + Belga frank + Belga frank + + + Belga frank (pénzügyi) + Belga frank (pénzügyi) + Belga frank (pénzügyi) + + + Bolgár kemény leva + Bolgár kemény leva + Bolgár kemény leva + + + bolgár új leva + bolgár új leva + bolgár új leva + + + bahreini dinár + bahreini dinár + bahreini dinár + + + burundi frank + burundi frank + burundi frank + + + bermudai dollár + bermudai dollár + bermudai dollár + + + brunei dollár + brunei dollár + brunei dollár + + + bolíviai boliviano + bolíviai boliviano + bolíviai boliviano + + + Bolíviai peso + Bolíviai peso + Bolíviai peso + + + Bolíviai mvdol + Bolíviai mvdol + Bolíviai mvdol + + + Brazi cruzeiro novo (1967–1986) + Brazi cruzeiro novo (1967–1986) + Brazi cruzeiro novo (1967–1986) + + + Brazi cruzado (1986–1989) + Brazi cruzado (1986–1989) + Brazi cruzado (1986–1989) + + + Brazil cruzeiro (1990–1993) + Brazil cruzeiro (1990–1993) + Brazil cruzeiro (1990–1993) + + + brazil real + brazil real + brazil real + BRL + + + Brazil cruzado novo (1989–1990) + Brazil cruzado novo (1989–1990) + Brazil cruzado novo (1989–1990) + + + Brazil cruzeiro (1993–1994) + Brazil cruzeiro (1993–1994) + Brazil cruzeiro (1993–1994) + + + bahamai dollár + bahamai dollár + bahamai dollár + + + bhutáni ngultrum + bhutáni ngultrum + bhutáni ngultrum + + + Burmai kyat + + + botswanai pula + botswanai pula + botswanai pula + + + Fehérorosz új rubel (1994–1999) + + + fehérorosz rubel + fehérorosz rubel + fehérorosz rubel + + + belize-i dollár + belize-i dollár + belize-i dollár + + + kanadai dollár + kanadai dollár + kanadai dollár + CAD + + + kongói frank + kongói frank + kongói frank + + + WIR euro + + + svájci frank + svájci frank + svájci frank + + + WIR frank + + + Chilei unidades de fomento + + + chilei peso + chilei peso + chilei peso + + + Kínai jüan renminbi + Kínai jüan renminbi + Kínai jüan renminbi + CNY + + + kolumbiai peso + kolumbiai peso + kolumbiai peso + + + Unidad de Valor Real + + + Costa Rica-i colon + Costa Rica-i colon + Costa Rica-i colon + + + szerb dinár + + + Csehszlovák kemény korona + + + kubai konvertibilis peso + kubai konvertibilis peso + kubai konvertibilis peso + + + kubai peso + kubai peso + kubai peso + + + Cape Verde-i escudo + Cape Verde-i escudo + Cape Verde-i escudo + + + Ciprusi font + + + cseh korona + cseh korona + cseh korona + + + Kelet-Német márka + + + Német márka + + + dzsibuti frank + dzsibuti frank + dzsibuti frank + + + dán korona + dán korona + dán korona + + + dominikai peso + dominikai peso + dominikai peso + + + algériai dínár + algériai dínár + algériai dínár + + + Ecuadori sucre + + + Ecuadori Unidad de Valor Constante (UVC) + + + Észt korona + + + egyiptomi font + egyiptomi font + egyiptomi font + + + eritreai nakfa + eritreai nakfa + eritreai nakfa + + + spanyol peseta (A–kontó) + + + spanyol peseta (konvertibilis kontó) + + + Spanyol peseta + + + etiópiai birr + etiópiai birr + etiópiai birr + + + euró + euró + euró + EUR + + + Finn markka + + + fidzsi dollár + fidzsi dollár + fidzsi dollár + + + falkland-szigeteki font + falkland-szigeteki font + falkland-szigeteki font + + + Francia frank + + + brit font sterling + brit font sterling + brit font sterling + GBP + + + Grúz kupon larit + + + grúz lari + grúz lari + grúz lari + + + Ghánai cedi (1979–2007) + + + ghánai cedi + ghánai cedi + ghánai cedi + + + gibraltári font + gibraltári font + gibraltári font + + + gambiai dalasi + gambiai dalasi + gambiai dalasi + + + guineai frank + guineai frank + guineai frank + + + Guineai syli + + + Egyenlítői-guineai ekwele guineana + Egyenlítői-guineai ekwele + Egyenlítői-guineai ekwele + + + Görög drachma + + + guatemalai quetzal + guatemalai quetzal + guatemalai quetzal + + + Portugál guinea escudo + + + Guinea-Bissaui peso + + + guyanai dollár + guyanai dollár + guyanai dollár + + + hongkongi dollár + hongkongi dollár + hongkongi dollár + HKD + + + hodurasi lempira + hodurasi lempira + hodurasi lempira + + + Horvát dínár + + + horvát kuna + horvát kuna + horvát kuna + + + haiti gourde + haiti gourde + haiti gourde + + + magyar forint + magyar forint + magyar forint + Ft + + + indonéz rúpia + indonéz rúpia + indonéz rúpia + + + Ír font + + + Izraeli font + + + izraeli új sékel + izraeli új sékel + izraeli új sékel + ILS + + + indiai rúpia + indiai rúpia + indiai rúpia + INR + + + iraki dínár + iraki dínár + iraki dínár + + + iráni rial + iráni rial + iráni rial + + + izlandi korona + izlandi korona + izlandi korona + + + Olasz líra + + + jamaicai dollár + jamaicai dollár + jamaicai dollár + + + jordániai dínár + jordániai dínár + jordániai dínár + + + japán jen + japán jen + japán jen + ¥ + + + kenyai shilling + kenyai shilling + kenyai shilling + + + kirgizisztáni szom + kirgizisztáni szom + kirgizisztáni szom + + + kambodzsai riel + kambodzsai riel + kambodzsai riel + + + comorei frank + comorei frank + comorei frank + + + észak-koreai won + észak-koreai won + észak-koreai won + + + dél-koreai won + dél-koreai won + dél-koreai won + KRW + + + kuvaiti dínár + kuvaiti dínár + kuvaiti dínár + + + kajmán-szigeteki dollár + kajmán-szigeteki dollár + kajmán-szigeteki dollár + + + kazahsztáni tenge + kazahsztáni tenge + kazahsztáni tenge + + + laoszi kip + laoszi kip + laoszi kip + + + libanoni font + libanoni font + libanoni font + + + Srí Lanka-i rúpia + Srí Lanka-i rúpia + Srí Lanka-i rúpia + + + libériai dollár + libériai dollár + libériai dollár + + + Lesothoi loti + + + litvániai litas + litvániai litas + litvániai litas + + + Litvániai talonas + + + luxemburgi konvertibilis frank + + + Luxemburgi frank + + + luxemburgi pénzügyi frank + + + lett lats + lett lats + lett lats + + + Lett rubel + + + líbiai dínár + líbiai dínár + líbiai dínár + + + marokkói dirham + marokkói dirham + marokkói dirham + + + Marokkói frank + + + moldován lei + moldován lei + moldován lei + + + madagaszkári ariary + madagaszkári ariary + madagaszkári ariary + + + Madagaszkári frank + + + macedon dínár + macedon dínár + macedon dínár + + + Mali frank + + + mianmari kyat + mianmari kyat + mianmari kyat + + + mongóliai tugrik + mongóliai tugrik + mongóliai tugrik + + + makaói pataca + makaói pataca + makaói pataca + + + mauritániai ouguiya + mauritániai ouguiya + mauritániai ouguiya + + + Máltai líra + + + Máltai font + + + mauritiusi rúpia + mauritiusi rúpia + mauritiusi rúpia + + + maldív-szigeteki rufiyaa + maldív-szigeteki rufiyaa + maldív-szigeteki rufiyaa + + + malawi kwacha + malawi kwacha + malawi kwacha + + + mexikói peso + mexikói peso + mexikói peso + MXN + + + Mexikói ezüst peso (1861–1992) + + + Mexikói Unidad de Inversion (UDI) + + + malajziai ringgit + malajziai ringgit + malajziai ringgit + + + Mozambik escudo + + + Mozambik metical + + + mozambiki metikális + mozambiki metikális + mozambiki metikális + + + namíbiai dollár + namíbiai dollár + namíbiai dollár + + + nigériai naira + nigériai naira + nigériai naira + + + Nikaraguai cordoba + + + nicaraguai córdoba + nicaraguai córdoba + nicaraguai córdoba + + + Holland forint + + + norvég korona + norvég korona + norvég korona + + + nepáli rúpia + nepáli rúpia + nepáli rúpia + + + új-zélandi dollár + új-zélandi dollár + új-zélandi dollár + NZD + + + ománi rial + ománi rial + ománi rial + + + panamai balboa + panamai balboa + panamai balboa + + + Perui inti + + + perui sol nuevo + perui sol nuevo + perui sol nuevo + + + Perui sol + + + pápua új-guineai kina + pápua új-guineai kina + pápua új-guineai kina + + + fülöp-szigeteki peso + fülöp-szigeteki peso + fülöp-szigeteki peso + + + pakisztáni rúpia + pakisztáni rúpia + pakisztáni rúpia + + + lengyel zloty + lengyel zloty + lengyel zloty + + + Lengyel zloty (1950–1995) + + + Portugál escudo + + + paraguayi guarani + paraguayi guarani + paraguayi guarani + + + katari rial + katari rial + katari rial + + + rhodéziai dollár + Rhodéziai dollár + Rhodéziai dollár + + + román lej (1952–2006) + román lej (1952–2006) + román lej (1952–2006) + + + román lej + román lej + román lej + + + szerb dínár + szerb dínár + szerb dínár + + + orosz rubel + orosz rubel + orosz rubel + + + orosz rubel (1991–1998) + orosz rubel (1991–1998) + orosz rubel (1991–1998) + + + ruandai frank + ruandai frank + ruandai frank + + + szaúdi riyal + szaúdi riyal + szaúdi riyal + + + salamon-szigeteki dollár + salamon-szigeteki dollár + salamon-szigeteki dollár + + + seychelle-szigeteki rúpia + seychelle-szigeteki rúpia + seychelle-szigeteki rúpia + + + Szudáni dínár (1992–2007) + Szudáni dínár (1992–2007) + Szudáni dínár (1992–2007) + + + szudáni font + szudáni font + szudáni font + + + Szudáni font (1957–1998) + Szudáni font (1957–1998) + Szudáni font (1957–1998) + + + svéd korona + svéd korona + svéd korona + + + szingapúri dollár + szingapúri dollár + szingapúri dollár + + + Szent Ilona-i font + Szent Ilona-i font + Szent Ilona-i font + + + Szlovén tolar + + + Szlovák korona + + + Sierra Leone-i leone + Sierra Leone-i leone + Sierra Leone-i leone + + + szomáli shilling + szomáli shilling + szomáli shilling + + + suriname-i dollár + suriname-i dollár + suriname-i dollár + + + Suriname-i gulden + + + dél-szudáni font + dél-szudáni font + dél-szudáni font + + + São Tomé és Príncipe-i dobra + São Tomé és Príncipe-i dobra + São Tomé és Príncipe-i dobra + + + Szovjet rubel + + + Salvadori colón + + + szíriai font + szíriai font + szíriai font + + + szváziföldi lilangeni + szváziföldi lilangeni + szváziföldi lilangeni + + + thai baht + thai baht + thai baht + THB + + + Tádzsikisztáni rubel + + + tádzsikisztáni somoni + tádzsikisztáni somoni + tádzsikisztáni somoni + + + türkmenisztáni manat (1993–2009) + türkmenisztáni manat (1993–2009) + türkmenisztáni manat (1993–2009) + + + türkmenisztáni manat + türkmenisztáni manat + türkmenisztáni manat + + + tunéziai dínár + tunéziai dínár + tunéziai dínár + + + tongai paanga + tongai paanga + tongai paanga + + + Timori escudo + + + török líra (1922–2005) + török líra (1922–2005) + török líra (1922–2005) + + + török líra + török líra + török líra + + + Trinidad és Tobago-i dollár + Trinidad és Tobago-i dollár + Trinidad és Tobago-i dollár + + + tajvani új dollár + tajvani új dollár + tajvani új dollár + TWD + + + tanzániai shilling + tanzániai shilling + tanzániai shilling + + + ukrán hrivnya + ukrán hrivnya + ukrán hrivnya + + + Ukrán karbovanec + + + Ugandai shilling (1966–1987) + Ugandai shilling (1966–1987) + Ugandai shilling (1966–1987) + + + ugandai shilling + ugandai shilling + ugandai shilling + + + USA-dollár + USA-dollár + USA-dollár + $ + + + USA dollár (következő napi) + + + USA dollár (aznapi) + + + Uruguayi peso en unidades indexadas + Uruguayi peso en unidades indexadas + Uruguayi peso en unidades indexadas + + + Uruguay-i peso (1975–1993) + Uruguayi peso (1975–1993) + Uruguayi peso (1975–1993) + + + uruguay-i peso + uruguayi peso + uruguayi peso + + + üzbegisztáni szum + üzbegisztáni szum + üzbegisztáni szum + + + Venezuelai bolivar (1871–2008) + Venezuelai bolivar (1871–2008) + Venezuelai bolivar (1871–2008) + + + venezuelai bolivar + venezuelai bolivar + venezuelai bolivar + + + vietnami dong + vietnami dong + vietnami dong + VND + + + vanuatui vatu + vanuatui vatu + vanuatui vatu + + + nyugat-szamoai tala + nyugat-szamoai tala + nyugat-szamoai tala + + + CFA frank BEAC + CFA frank BEAC + CFA frank BEAC + FCFA + + + Ezüst + + + Arany + + + Európai kompozit egység + Európai kompozit egység + Európai kompozit egység + + + Európai monetáris egység + Európai monetáris egység + Európai monetáris egység + + + Európai kontó egység (XBC) + Európai kontó egység (XBC) + Európai kontó egység (XBC) + + + Európai kontó egység (XBD) + Európai kontó egység (XBD) + Európai kontó egység (XBD) + + + kelet-karibi dollár + kelet-karibi dollár + kelet-karibi dollár + XCD + + + Special Drawing Rights + + + európai pénznemegység + Európai pénznemegység + Európai pénznemegység + + + Francia arany frank + + + Francia UIC-frank + + + CFA frank BCEAO + CFA frank BCEAO + CFA frank BCEAO + CFA + + + palládium + Palládium + Palládium + + + csendes-óceáni valutaközösségi frank + csendes-óceáni valutaközösségi frank + csendes-óceáni valutaközösségi frank + CFPF + + + platina + Platina + Platina + + + RINET tőke + + + Tesztelési pénznemkód + + + ismeretlen pénznem + (ismeretlen pénznem) + (ismeretlen pénznem) + + + Jemeni dínár + + + jemeni rial + jemeni rial + jemeni rial + + + Jugoszláv kemény dínár + + + Jugoszláv új dínár + + + Jugoszláv konvertibilis dínár + + + Dél-afrikai rand (pénzügyi) + + + dél-afrikai rand + dél-afrikai rand + dél-afrikai rand + + + Zambiai kwacha (1968–2012) + + + zambiai kwacha + zambiai kwacha + zambiai kwacha + + + Zairei új zaire + + + Zairei zaire + + + Zimbabwei dollár (1980–2008) + Zimbabwei dollár (1980–2008) + Zimbabwei dollár (1980–2008) + + + Zimbabwei dollár (2009) + + + Zimbabwei dollár (2008) + Zimbabwei dollár (2008) + Zimbabwei dollár (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} per {1} + + + {0} g gyorsulás + {0} g gyorsulás + + + {0} perc + {0} perc + + + {0} másodperc + {0} másodperc + + + {0} fok + {0} fok + + + {0} acre + {0} acre + + + {0} hektár + {0} hektár + + + {0} négyzetláb + {0} négyzetláb + + + {0} négyzetkilométer + {0} négyzetkilométer + + + {0} négyzetméter + {0} négyzetméter + + + {0} négyzetmérföld + {0} négyzetmérföld + + + {0} nap + {0} nap + + + {0} óra + {0} óra + + + {0} ezredmásodperc + {0} ezredmásodperc + + + {0} perc + {0} perc + + + {0} hónap + {0} hónap + + + {0} másodperc + {0} másodperc + + + {0} hét + {0} hét + + + {0} év + {0} év + + + {0} centiméter + {0} centiméter + + + {0} láb + {0} láb + + + {0} hüvelyk + {0} hüvelyk + + + {0} kilométer + {0} kilométer + + + {0} fényév + {0} fényév + + + {0} méter + {0} méter + + + {0} mérföld + {0} mérföld + + + {0} milliméter + {0} milliméter + + + {0} pikométer + {0} pikométer + + + {0} yard + {0} yard + + + {0} gramm + {0} gramm + + + {0} kilogramm + {0} kilogramm + + + {0} uncia + {0} uncia + + + {0} font + {0} font + + + {0} lóerő + {0} lóerő + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} higanyhüvelyk + {0} higanyhüvelyk + + + {0} millibar + {0} millibar + + + {0} kilométer per óra + {0} kilométer per óra + + + {0} méter per másodperc + {0} méter per másodperc + + + {0} mérföld per óra + {0} mérföld per óra + + + {0} Celsius-fok + {0} Celsius-fok + + + {0} Fahrenheit-fok + {0} Fahrenheit-fok + + + {0} köbkilométer + {0} köbkilométer + + + {0} köbmérföld + {0} köbmérföld + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} fok + {0} fok + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mf² + {0} mf² + + + {0} nap + {0} nap + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} hónap + {0} hónap + + + {0} s + {0} s + + + {0} hét + {0} hét + + + {0} év + {0} év + + + {0} cm + {0} cm + + + {0} láb + {0} láb + + + {0} hüvelyk + {0} hüvelyk + + + {0} km + {0} km + + + {0} fényév + {0} fényév + + + {0} m + {0} m + + + {0} mf + {0} mf + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} uncia + {0} uncia + + + {0} font + {0} font + + + {0} LE + {0} LE + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} nap + {0} nap + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} h. + {0} h. + + + {0} s + {0} s + + + {0} hét + {0} hét + + + {0} év + {0} év + + + {0} cm + {0} cm + + + {0} láb + {0} láb + + + {0} hüvelyk + {0} hüvelyk + + + {0} km + {0} km + + + {0} fényév + {0} fényév + + + {0} m + {0} m + + + {0} mf + {0} mf + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} uncia + {0} uncia + + + {0} font + {0} font + + + {0} LE + {0} LE + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0} ° + {0} ° + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} és {1} + {0} és {1} + + + {0}, {1} + {0}, {1} + {0} és {1} + {0} és {1} + + + {0}, {1} + {0}, {1} + {0} és {1} + {0} és {1} + + + + + igen:i + nem:n + + + + diff --git a/library/Zend/Locale/Data/hu_HU.xml b/library/Zend/Locale/Data/hu_HU.xml new file mode 100755 index 000000000..13b31496d --- /dev/null +++ b/library/Zend/Locale/Data/hu_HU.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/hy.xml b/library/Zend/Locale/Data/hy.xml new file mode 100755 index 000000000..0dfecadf8 --- /dev/null +++ b/library/Zend/Locale/Data/hy.xml @@ -0,0 +1,4971 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}. {1} + + + աբխազերեն + աֆրիկաանս + ամհարերեն + արաբերեն + ժամանակակից ստանդարտ արաբերեն + ասամերեն + ադրբեջաներեն + բելառուսերեն + բուլղարերեն + բենգալերեն + տիբեթերեն + Բրետոներեն + բոսնիերեն + կատալաներեն + չեխերեն + ուելսերեն + դանիերեն + գերմաներեն + ավստրիական գերմաներեն + շվեյցարական բարձր գերմաներեն + հունարեն + անգլերեն + ավստրալական անգլերեն + կանադական անգլերեն + բրիտանական անգլերեն + անգլերեն (ՄԹ) + ամերիկյան անգլերեն + անգլերեն (ԱՄՆ) + էսպերանտո + իսպաներեն + լատինաամերիկյան իսպաներեն + եվրոպական իսպաներեն + մեքսիկական իսպաներեն + էստոներեն + բասկերեն + պարսկերեն + ֆիններեն + ֆիլիպիներեն + ֆիջիերեն + ֆարյորերեն + ֆրանսերեն + կանադական ֆրանսերեն + շվեյցարական ֆրանսերեն + արևմտյան ֆրիզերեն + իռլանդերեն + Գաելյան Շոտլանդերեն + գալիսերեն + գուարանի + շվեյցարական գերմաներեն + գուջարաթի + հաուսա + հավայիերեն + եբրայերեն + հինդի + խորվաթերեն + հաիթերեն + հունգարերեն + հայերեն + Ինտերլինգուա + ինդոնեզերեն + Ինտերլինգ + իգբո + իսլանդերեն + իտալերեն + ճապոներեն + ճավայերեն + վրացերեն + ղազախերեն + քմերերեն + կաննադա + կորեերեն + քաշմիրերեն + քրդերեն + ղրղզերեն + լատիներեն + լյուքսեմբուրգերեն + Լինգալա + լաոսերեն + լիտվերեն + լատվիերեն + մալագասերեն + մաորի + մակեդոներեն + մալայալամ + Մոնղոլերեն + մարաթի + մալայերեն + մալթերեն + բիրմայերեն + նորվեգերեն բուկմոլ + նեպալերեն + հոլանդերեն + ֆլամանդերեն + նորվեգերեն նյունորսկ + Նորվեգերեն + Ակվիտաներեն + օրիյա + փենջաբերեն + լեհերեն + փուշթու + պորտուգալերեն + բրազիլական պորտուգալերեն + եվրոպական պորտուգալերեն + քեչուա + ռոմանշերեն + ռումիներեն + ռուսերեն + սանսկրիտ + սինդհի + Սերբա-Խորվաթերեն + սինհալերեն + սլովակերեն + սլովեներեն + սոմալիերեն + ալբաներեն + սերբերեն + Սեսոտո + սունդաներեն + շվեդերեն + սուահիլի + թամիլերեն + թելուգու + տաջիկերեն + թայերեն + թիգրինիա + թուրքմեներեն + Կլինգոն + տոնգա + թուրքերեն + թաթարերեն + Տուի + ույղուրերեն + ուկրաիներեն + անհայտ լեզու + ուրդու + ուզբեկերեն + վիետնամերեն + վոլոֆ + քսոզա + Իդիշ + յորուբա + ստանդարտ մարոկական թամազիղտ + չինարեն + պարզեցված չինարեն + ավանդական չինարեն + զուլուսերեն + առանց լեզվային բովանդակության + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Աշխարհ + Աֆրիկա + Հյուսիսային Ամերիկա + Հարավային Ամերիկա + Օվկիանիա + Արևմտյան Աֆրիկա + Կենտրոնական Ամերիկա + Արևելյան Աֆրիկա + Հյուսիսային Աֆրիկա + Կենտրոնական Աֆրիկա + Աֆրիկայի հարավ + Ամերիկա + Հյուսիսային Ամերիկա - Մեքսիկայից հյուսիս + Կարիբյան կղզիներ + Արևելյան Ասիա + Հարավային Ասիա + Հարավ-Արևելյան Ասիա + Հարավային Եվրոպա + Ավստրալասիա + Մալանեզիա + Միկրոնեզիայի տարածաշրջան + Պոլինեզիա + Ասիա + Կենտրոնական Ասիա + Արևմտյան Ասիա + Եվրոպա + Արևելյան Եվրոպա + Հյուսիսային Եվրոպա + Արևմտյան Եվրոպա + Լատինական Ամերիկա + Համբարձման կղզի + Անդորա + Միացյալ Արաբական Էմիրություններ + Աֆղանստան + Անտիգուա և Բարբուդա + Անգիլիա + Ալբանիա + Հայաստան + Անգոլա + Անտարկտիդա + Արգենտինա + Ամերիկյան Սամոա + Ավստրիա + Ավստրալիա + Արուբա + Ալանդյան կղզիներ + Ադրբեջան + Բոսնիա և Հերցեգովինա + Բարբադոս + Բանգլադեշ + Բելգիա + Բուրկինա Ֆասո + Բուլղարիա + Բահրեյն + Բուրունդի + Բենին + Սուրբ Բարթողոմեոսի կղզի + Բերմուդյան կղզիներ + Բրունեյ + Բոլիվիա + Կարիբյան Նիդերլանդներ + Բրազիլիա + Բահամյան կղզիներ + Բութան + Բուվե կղզի + Բոտսվանա + Բելառուս + Բելիզ + Կանադա + Կոկոսյան (Քիլինգ) կղզիներ + Կոնգո - Կինշասա + Կոնգո (Կոնգոյի Ժողովրդավարական Հանրապետություն) + Կենտրոնական Աֆրիկյան Հանրապետություն + Կոնգո - Բրազավիլ + Կոնգո (Կոնգոյի Հանրապետություն) + Շվեյցարիա + Փղոսկրի Ափ + Կուկի կղզիներ + Չիլի + Կամերուն + Չինաստան + Կոլումբիա + Քլիփերթոն կղզի + Կոստա-Ռիկա + Կուբա + Կաբո Վերդե + Կյուրասաո + Ծննդյան կղզի + Կիպրոս + Չեխիա + Գերմանիա + Դիեգո Գարսիա + Ջիբուտի + Դանիա + Դոմինիկա + Դոմինիկյան Հանրապետություն + Ալժիր + Սեուտա և Մելիլյա + Էկվադոր + Էստոնիա + Եգիպտոս + Արևմտյան Սահարա + Էրիտրեա + Իսպանիա + Եթովպիա + Եվրոպական Միություն + Ֆինլանդիա + Ֆիջի + Ֆոլկլենդյան կղզիներ + Ֆոլկլենդյան (Մալվինյան) կղզիներ + Միկրոնեզիա + Ֆարերյան կղզիներ + Ֆրանսիա + Գաբոն + Միացյալ Թագավորություն + Միացյալ Թագավորություն + Գրենադա + Վրաստան + Ֆրանսիական Գվիանա + Գերնսի + Գանա + Ջիբրալթար + Գրենլանդիա + Գամբիա + Գվինեա + Գվադելուպա + Հասարակածային Գվինեա + Հունաստան + Հարավային Ջորջիա և Հարավային Սենդվիչյան կղզիներ + Գվատեմալա + Գուամ + Գվինեա-Բիսաու + Գայանա + Հոնկոնգի ՀՎՇ + Հոնկոնգ + Հերդ կղզի և ՄակԴոնալդի կղզիներ + Հոնդուրաս + Խորվաթիա + Հաիթի + Հունգարիա + Կանարյան կղզիներ + Ինդոնեզիա + Իռլանդիա + Իսրայել + Մեն կղզի + Հնդկաստան + Հնդկական Օվկիանոսում Բրիտանական Տարածք + Իրաք + Իրան + Իսլանդիա + Իտալիա + Ջերսի + Ջամայկա + Հորդանան + Ճապոնիա + Քենիա + Ղրղզստան + Կամբոջա + Կիրիբատի + Կոմորյան կղզիներ + Սենթ Քիթս և Նևիս + Հյուսիսային Կորեա + Հարավային Կորեա + Քուվեյթ + Կայմանյան կղզիներ + Ղազախստան + Լաոս + Լիբանան + Սենթ Լյուսիա + Լիխտենշտեյն + Շրի Լանկա + Լիբերիա + Լեսոտո + Լիտվա + Լյուքսեմբուրգ + Լատվիա + Լիբիա + Մարոկո + Մոնակո + Մոլդովա + Չեռնոգորիա + Սեն Մարտեն + Մադագասկար + Մարշալյան կղզիներ + Մակեդոնիա + Մակեդոնիա (ՄՆՀՀ) + Մալի + Մյանմա (Բիրմա) + Մոնղոլիա + Չինաստանի Մակաո ՀՎՇ + Մակաո + Հյուսիսային Մարիանյան կղզիներ + Մարտինիկա + Մավրիտանիա + Մոնտսերատ + Մալթա + Մավրիկիոս + Մալդիվներ + Մալավի + Մեքսիկա + Մալայզիա + Մոզամբիկ + Նամիբիա + Նոր Կալեդոնիա + Նիգեր + Նորֆոլկ կղզի + Նիգերիա + Նիկարագուա + Նիդերլանդեր + Նորվեգիա + Նեպալ + Նաուրու + Նիուե + Նոր Զելանդիա + Օման + Պանամա + Պերու + Ֆրանսիական Պոլինեզիա + Պապուա Նոր Գվինեա + Ֆիլիպիններ + Պակիստան + Լեհաստան + Սեն Պիեր և Միկելոն + Պիտկեռն կղզիներ + Պուերտո Ռիկո + Պաղեստինյան տարածքներ + Պաղեստին + Պորտուգալիա + Պալաու + Պարագվայ + Կատար + Արտաքին Օվկիանիա + Ռեյունիոն + Ռումինիա + Սերբիա + Ռուսաստան + Ռուանդա + Սաուդյան Արաբիա + Սողոմոնյան կղզիներ + Սեյշելյան կղզիներ + Սուդան + Շվեդիա + Սինգապուր + Սուրբ Հեղինեի կղզի + Սլովենիա + Սվալբարդ և Յան-Մայեն + Սլովակիա + Սյերա-Լեոնե + Սան Մարինո + Սենեգալ + Սոմալի + Սուրինամ + Հարավային Սուդան + Սան Տոմե և Պրինսիպի + Սալվադոր + Սինտ Մարտեն + Սիրիա + Սվազիլենդ + Տրիստան դա Կունյա + Տերկս և Կայկոս կղզիներ + Չադ + Ֆրանսիական Հարավային Տարածքներ + Տոգո + Թաիլանդ + Տաջիկստան + Տոկելաու + Թիմոր-Լեստե + Արևելյան Թիմոր + Թուրքմենստան + Թունիս + Տոնգա + Թուրքիա + Տրինիդադ և Տոբագո + Տուվալու + Թայվան + Տանզանիա + Ուկրաինա + Ուգանդա + Արտաքին կղզիներ (ԱՄՆ) + Ամերիկայի Միացյալ Նահանգներ + ԱՄՆ + Ուրուգվայ + Ուզբեկստան + Վատիկան քաղաք-պետություն + Սենթ Վիսենտ և Գրենադիններ + Վենեսուելա + Բրիտանական Վիրջինյան կղզիներ + Ամերիկյան Վիրջինյան կղզիներ + Վիետնամ + Վանուատու + Ուոլիս և Ֆուտունա + Սամոա + Կոսովո + Եմեն + Մայոտ + Հարավաֆրիկյան Հանրապետություն + Զամբիա + Զիմբաբվե + Անհայտ տարածաշրջան + + + Տոմար + Տեսակավորման կարգ + արժույթ + թվեր + + + արաբա-հնդկական թվեր + արաբա-հնդկական թվերի ընդլայնված համակարգ + հայկական թվեր + հայկական թվեր (փոքրատառ) + բենգալական թվեր + դեվանագարի թվեր + Սկզբնադիր տեսակավորման կարգ Unicode-ի համար + եթովպական թվեր + թվերի լայն ձևաչափ + վրացական թվեր + Գրիգորյան տոմար + հունական թվեր + հունական թվեր (փոքրատառ) + գուջարաթի թվեր + գուրմուխի թվեր + չինական տասնորդական թվեր + չինական պարզեցված թվեր + չինական պարզեցված ֆինանսական թվեր + չինական ավանդական թվեր + չինական ավանդական ֆինանսական թվեր + եբրայերեն թվեր + ճապոնական թվեր + ճապոնական ֆինանսական թվեր + քմերական թվեր + կաննադա թվեր + լաոսական թվեր + արևմտյան թվեր + մալայալամ թվեր + բիրմական թվեր + օրիյա թվեր + հռոմեական թվեր + հռոմեական թվեր (փոքրատառ) + Ընդհանուր որոնում + Տեսակավորման ստանդարտ կարգ + թամիլական ավանդական թվեր + թամիլական թվեր + թելուգու թվեր + թայական թվեր + տիբեթական թվեր + + + Մետրիկ + Անգլիական + Ամերիկյան + + + Լեզու. {0} + Գիր. {0} + Շրջան. {0} + + + + [ա բ գ դ ե զ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն շ ո չ պ ջ ռ ս վ տ ր ց ւ փ ք և օ ֆ] + [] + [Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք Օ Ֆ] + [֊ , ՝ \: ՜ ՞ . « » ՚ ՛ ՟] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + « + » + « + » + + + + + + + + d MMMM, y թ. G, EEEE + + + + + dd MMMM, y թ. G + + + + + dd MMM, y թ. G + + + + + dd.MM.y GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d, ccc + G yթ. + G yթ. LLL + G yթ. MMM d + G yթ. MMM d, E + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + dd.MM + dd.MM, E + LLL + d MMM + d MMM, E + mm:ss + y, G + y, G + G yթ. MM + d.M.yթ., G + d.MM.y թ., G, E + G y թ. LLL + d MMM, y թ., G + d MMM, y թ. G, E + G y թ, QQQ + G y թ, QQQQ + + + {0} - {1} + + d-d + + + h a – h a + h-h a + + + H-H + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a – h a v + h-h a v + + + H-H v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + MMM dd-dd + MMM dd - MMM dd + + + E, MMM dd - E, MMM dd + E, MMM dd - E, MMM dd + + + y-y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + ccc, dd.MM.y - ccc, dd.MM.y G + ccc, dd.MM.y - ccc, dd.MM.y G + ccc, dd.MM.y - ccc, dd.MM.y G + + + MMM-MMM y թ. G + MMM y - MMM y թ. G + + + dd-dd MMM, y թ. G + dd MMM - dd MMM, y թ. G + dd MMM, y - dd MMM, y թ. G + + + E, d MMM - E, d MMM, y թ. G + E, d MMM - E, d MMM, y թ. G + E, d MMM, y - E, d MMM, y թ. G + + + G y թ. MMM – MMM + MMM y - MMM y թ G + + + + + + + + + հնվ + փտվ + մրտ + ապր + մյս + հնս + հլս + օգս + սպտ + հկտ + նյմ + դկտ + + + Հ + Փ + Մ + Ա + Մ + Հ + Հ + Օ + Ս + Հ + Ն + Դ + + + հունվարի + փետրվարի + մարտի + ապրիլի + մայիսի + հունիսի + հուլիսի + օգոստոսի + սեպտեմբերի + հոկտեմբերի + նոյեմբերի + դեկտեմբերի + + + + + հնվ + փտվ + մրտ + ապր + մյս + հնս + հլս + օգս + սպտ + հկտ + նյմ + դկտ + + + Հ + Փ + Մ + Ա + Մ + Հ + Հ + Օ + Ս + Հ + Ն + Դ + + + հունվար + փետրվար + մարտ + ապրիլ + մայիս + հունիս + հուլիս + օգոստոս + սեպտեմբեր + հոկտեմբեր + նոյեմբեր + դեկտեմբեր + + + + + + + կիր + երկ + երք + չրք + հնգ + ուր + շբթ + + + Կ + Ե + Ե + Չ + Հ + Ու + Շ + + + կիր + երկ + երք + չրք + հնգ + ուր + շբթ + + + կիրակի + երկուշաբթի + երեքշաբթի + չորեքշաբթի + հինգշաբթի + ուրբաթ + շաբաթ + + + + + կիր + երկ + երք + չրք + հնգ + ուր + շբթ + + + Կ + Ե + Ե + Չ + Հ + Ու + Շ + + + կր + եկ + եք + չր + հգ + ուր + շբ + + + կիրակի + երկուշաբթի + երեքշաբթի + չորեքշաբթի + հինգշաբթի + ուրբաթ + շաբաթ + + + + + + + 1-ին եռմս. + 2-րդ եռմս. + 3-րդ եռմս. + 4-րդ եռմս. + + + 1 + 2 + 3 + 4 + + + 1-ին եռամսյակ + 2-րդ եռամսյակ + 3-րդ եռամսյակ + 4-րդ եռամսյակ + + + + + 1-ին եռմս. + 2-րդ եռմս. + 3-րդ եռմս. + 4-րդ եռմս. + + + 1 + 2 + 3 + 4 + + + 1-ին եռամսյակ + 2-րդ եռամսյակ + 3-րդ եռամսյակ + 4-րդ եռամսյակ + + + + + + + կեսօրից առաջ + կեսօրից հետո + + + + + + մ.թ.ա. + մ.թ. + + + + + + yթ. MMMM d, EEEE + + + + + dd MMMM, yթ. + + + + + dd MMM, y թ. + + + + + dd.MM.yy + + + + + + + H:mm:ss, zzzz + + + + + H:mm:ss, z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d, ccc + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + G yթ. + G yթ. LLL + d MMM, yթ., + G yթ. MMM d, E + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + dd.MM + dd.MM, E + LLL + d MMM + d MMM, E + mm:ss + y + MM.y + dd.MM.y + d.MM.yթ., E + yթ. LLL + d MMM, yթ. + yթ. MMM d, E + y թ, QQQ + y թ, QQQQ + + + {0}, {1} + + + {0} – {1} + + d-d + + + h a – h a + h-h a + + + H-H + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm a – h:mm a, v + h:mm-h:mm a, v + h:mm-h:mm a, v + + + H:mm-H:mm, v + H:mm-H:mm, v + + + h a – h a, v + h-h a, v + + + H-H, v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + MMM dd-dd + MMM dd - MMM dd + + + E, MMM dd - E, MMM dd + E, MMM dd - E, MMM dd + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + ccc, dd.MM.y - ccc, dd.MM.y + ccc, dd.MM.y - ccc, dd.MM.y + ccc, dd.MM.y - ccc, dd.MM.y + + + MMM-MMM yթ. + MMM y - MMM yթ. + + + dd-dd MMM, yթ. + dd MMM - dd MMM, yթ. + dd MMM, y - dd MMM, yթ. + + + E, d MMM - E, d MMM, yթ. + E, d MMM - E, d MMM, yթ. + E, d MMM, y - E, d MMM, yթ. + + + yթ. MMM – MMM + MMM y - MMM yթ. + + + + + + + + Թվարկություն + + + Տարի + անցյալ տարի + այս տարի + հաջորդ տարի + + {0} տարի անց + {0} տարի անց + + + {0} տարի առաջ + {0} տարի առաջ + + + + Ամիս + անցյալ ամիս + այս ամիս + հաջորդ ամիս + + {0} ամիս անց + {0} ամիս անց + + + {0} ամիս առաջ + {0} ամիս առաջ + + + + Շաբաթ + անցյալ շաբաթ + այս շաբաթ + հաջորդ շաբաթ + + {0} շաբաթ անց + {0} շաբաթ անց + + + {0} շաբաթ առաջ + {0} շաբաթ առաջ + + + + Օր + երեկ չէ առաջի օրը + երեկ + այսօր + վաղը + վաղը չէ մյուս օրը + + {0} օր անց + {0} օր անց + + + {0} օր առաջ + {0} օր առաջ + + + + Շաբաթվա օր + + + անցյալ կիրակի + այս կիրակի + հաջորդ կիրակի + + + անցյալ երկուշաբթի + այս երկուշաբթի + հաջորդ երկուշաբթի + + + անցյալ երեքշաբթի + այս երեքշաբթի + հաջորդ երեքշաբթի + + + անցյալ չորեքշաբթի + այս չորեքշաբթի + հաջորդ չորեքշաբթի + + + անցյալ հինգշաբթի + այս հինգշաբթի + հաջորդ հինգշաբթի + + + անցյալ ուրբաթ + այս ուրբաթ + հաջորդ ուրբաթ + + + անցյալ շաբաթ + այս շաբաթ + հաջորդ շաբաթ + + + ԿԱ/ԿՀ + + + Ժամ + + {0} ժամ անց + {0} ժամ անց + + + {0} ժամ առաջ + {0} ժամ առաջ + + + + Րոպե + + {0} րոպե անց + {0} րոպե անց + + + {0} րոպե առաջ + {0} րոպե առաջ + + + + Վայրկյան + այժմ + + {0} վայրկյան անց + {0} վայրկյան անց + + + {0} վայրկյան առաջ + {0} վայրկյան առաջ + + + + Ժամային գոտի + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Ժամանակ՝ {0} + {0}, ամառային ժամանակ + {0}, ստանդարտ ժամանակ + {1} ({0}) + + Անհայտ քաղաք + + + Անդորա + + + Դուբայ + + + Կաբուլ + + + Անտիգուա + + + Անգիլիա + + + Տիրանա + + + Երևան + + + Լուանդա + + + Ռոտերա + + + Պալմեր + + + Սյովա + + + Մոուսոն + + + Դեյվիս + + + Վոստոկ + + + Քեյսի + + + Դյումոն դ'Յուրվիլ + + + Մակ-Մերդո + + + Ռիո Գալյեգոս + + + Մենդոսա + + + Սան Խուան + + + Ուշուայա + + + Լա-Ռիոխա + + + Սան Լուիս + + + Կատամարկա + + + Սալտա + + + Ժուժույ + + + Տուկուման + + + Կորդովա + + + Բուենոս Այրես + + + Պագո Պագո + + + Վիեննա + + + Պերթ + + + Յուկլա + + + Դարվին + + + Ադելաիդա + + + Բրոքեն Հիլ + + + Քերի + + + Մելբուրն + + + Հոբարտ + + + Լինդեման + + + Սիդնեյ + + + Բրիսբեն + + + Մակկուորի կղզի + + + Լորդ Հաու + + + Արուբա + + + Մարիեհամն + + + Բաքու + + + Սարաևո + + + Բարբադոս + + + Դաքքա + + + Բրյուսել + + + Ուագադուգու + + + Սոֆիա + + + Բահրեյն + + + Բուժումբուրա + + + Պորտո Նովո + + + Սեն Բարտելմի + + + Բերմուդյան կղզիներ + + + Բրունեյ + + + Լա Պաս + + + Կրալենդեյկ + + + Էյրունեպե + + + Ռիո Բրանկու + + + Պորտու Վելյու + + + Բոա-Վիստա + + + Մանաուս + + + Կույաբա + + + Սանտարեմ + + + Կամպո Գրանգե + + + Բելեմ + + + Արագուայնա + + + Սան Պաուլու + + + Բայա + + + Ֆորտալեզա + + + Մասեյո + + + Ռեսիֆի + + + Նորոնխա + + + Նասաու + + + Թիմփու + + + Գաբորոնե + + + Մինսկ + + + Բելիզ + + + Դոուսոն + + + Ուայթհորս + + + Ինուվիկ + + + Վանկուվեր + + + Դոուսոն Կրիկ + + + Քրեսթոն + + + Յելոունայֆ + + + Էդմոնտոն + + + Սվիֆթ-Քարենտ + + + Քեմբրիջ-Բեյ + + + Ռեջայնա + + + Վինիպեգ + + + Ռեզոլյուտ + + + Ռեյնի-Ռիվեր + + + Ռանկին-Ինլետ + + + Ատիկոկան + + + Տանդեր-Բեյ + + + Նիպիգոն + + + Տորոնտո + + + Իկալուիտ + + + Պանգնիրտանգ + + + Մոնկտոն + + + Հալիֆաքս + + + Գուս Բեյ + + + Գլեյս Բեյ + + + Բլան-Սաբլոն + + + Սենթ-Ջոնս + + + Կոկոսյան կղզիներ + + + Կինշասա + + + Լուբումբաշի + + + Բանգի + + + Բրազավիլ + + + Ցյուրիխ + + + Աբիջան + + + Ռառատոնգա + + + Զատիկի կղզի + + + Սանտյագո + + + Դուալա + + + Քաշգար + + + Ուրումչի + + + Չունցին + + + Շանխայ + + + Հարբին + + + Բոգոտա + + + Կոստա Ռիկա + + + Հավանա + + + Կաբո Վերդե + + + Կյուրասաո + + + Ծննդյան կղզի + + + Նիկոսիա + + + Պրահա + + + Բյուզինգեն + + + Բեռլին + + + Ջիբութի + + + Կոպենհագեն + + + Դոմինիկա + + + Սանտո Դոմինգո + + + Ալժիր + + + Գալապագոսյան կղզիներ + + + Գուայակիլ + + + Տալլին + + + Կահիրե + + + Էլ Այուն + + + Ասմարա + + + Կանարյան կղզիներ + + + Սեուտա + + + Մադրիդ + + + Ադիս Աբեբա + + + Հելսինկի + + + Ֆիջի + + + Սթենլի + + + Չուուկ + + + Պոնպեի + + + Կոսրաե + + + Ֆարերյան կղզիներ + + + Փարիզ + + + Լիբրևիլ + + + + Բրիտանական ամառային ժամանակ + + Լոնդոն + + + Գրենադա + + + Թբիլիսի + + + Կայեն + + + Գերնսի + + + Ակրա + + + Ջիբրալթար + + + Տուլե + + + Նուուկ + + + Սկորսբիսուն + + + Դենմարքսհավն + + + Բանժուլ + + + Կոնակրի + + + Գվադելուպա + + + Մալաբո + + + Աթենք + + + Հարավային Ջորջիա + + + Գվատեմալա + + + Գուամ + + + Բիսաու + + + Գայանա + + + Հոնկոնգ + + + Տեգուսիգալպա + + + Զագրեբ + + + Պորտ-օ-Պրենս + + + Բուդապեշտ + + + Ջակարտա + + + Պոնտիանակ + + + Մակասար + + + Ջայպուրա + + + + Իռլանդական ամառային ժամանակ + + Դուբլին + + + Երուսաղեմ + + + Մեն կղզի + + + Կալկուտա + + + Չագոս + + + Բաղդադ + + + Թեհրան + + + Ռեյկյավիկ + + + Հռոմ + + + Ջերսի + + + Ջամայկա + + + Ամման + + + Տոկիո + + + Նայրոբի + + + Բիշքեկ + + + Պնոմպեն + + + Էնդերբերի կղզի + + + Կիրիտիմատի + + + Տարավա + + + Կոմորյան կղզիներ + + + Սենթ Քիթս + + + Փխենյան + + + Սեուլ + + + Քուվեյթ + + + Կայմանի կղզիներ + + + Ակտաու + + + Օրալ + + + Ակտոբե + + + Քիզիլօրդա + + + Ալմաթի + + + Վյենտյան + + + Բեյրութ + + + Սենթ Լյուսիա + + + Վադուց + + + Կոլոմբո + + + Մոնրովիա + + + Մասերու + + + Վիլնյուս + + + Լյուքսեմբուրգ + + + Ռիգա + + + Տրիպոլի + + + Կասաբլանկա + + + Մոնակո + + + Քիշնև + + + Պոդգորիցա + + + Մարիգո + + + Անտանանարիվու + + + Քվաջալեյն + + + Մաջուրո + + + Սկոպյե + + + Բամակո + + + Ռանգուն + + + Հովդ + + + Ուլան Բատոր + + + Չոյբալսան + + + Մակաո + + + Սայպան + + + Մարտինիկա + + + Նուակշոտ + + + Մոնտսեռատ + + + Մալթա + + + Մավրիկիոս + + + Մալդիվյան կղզիներ + + + Բլանթայր + + + Տիխուանա + + + Սանտա Իսաբել + + + Էրմոսիլյո + + + Մազաթլան + + + Չիուաուա + + + Բայա Բանդերաս + + + Օխինագա + + + Մոնտերեյ + + + Մեխիկո + + + Մատամորոս + + + Մերիդա + + + Կանկուն + + + Կուալա Լումպուր + + + Կուչինգ + + + Մապուտու + + + Վինդհուկ + + + Նումեա + + + Նիամեյ + + + Նորֆոլկ + + + Լագոս + + + Մանագուա + + + Ամստերդամ + + + Օսլո + + + Կատմանդու + + + Նաուրու + + + Նիուե + + + Չաթեմ կղզի + + + Օկլենդ + + + Մուսկատ + + + Պանամա + + + Լիմա + + + Թաիթի + + + Մարկիզյան կղզիներ + + + Գամբյե կղզիներ + + + Պորտ Մորսբի + + + Մանիլա + + + Կարաչի + + + Վարշավա + + + Միքելոն + + + Պիտկեռն + + + Պուերտո Ռիկո + + + Գազա + + + Հեբրոն + + + Ազորյան կղզիներ + + + Մադեյրա + + + Լիսաբոն + + + Պալաու + + + Ասունսյոն + + + Կատար + + + Ռեյունիոն + + + Բուխարեստ + + + Բելգրադ + + + Կալինինգրադ + + + Մոսկվա + + + Վոլգոգրադ + + + Սամարա + + + Եկատերինբուրգ + + + Օմսկ + + + Նովոսիբիրսկ + + + Նովոկուզնեցկ + + + Կրասնոյարսկ + + + Իրկուտսկ + + + Յակուտսկ + + + Վլադիվոստոկ + + + Խանդիգա + + + Սախալին + + + Ուստ-Ներա + + + Մագադան + + + Կամչատկա + + + Անադիր + + + Կիգալի + + + Էր Ռիադ + + + Գուադալկանալ + + + Մաէ + + + Խարթում + + + Ստոքհոլմ + + + Սինգապուր + + + Սուրբ Հեղինեի կղզի + + + Լյուբլյանա + + + Լոնգյիր + + + Բրատիսլավա + + + Ֆրիթաուն + + + Սան Մարինո + + + Դակար + + + Մոգադիշո + + + Պարամարիբո + + + Ջուբա + + + Սան Տոմե + + + Սալվադոր + + + Լոուեր Պրինսես Քվորթեր + + + Դամասկոս + + + Մբաբանե + + + Գրանդ Տուրկ + + + Նջամենա + + + Կերգելեն + + + Լոմե + + + Բանգկոկ + + + Դուշանբե + + + Ֆակաոֆո + + + Դիլի + + + Աշխաբադ + + + Թունիս + + + Տոնգատապու + + + Ստամբուլ + + + Պորտ-օֆ-Սփեյն + + + Ֆունաֆուտի + + + Թայպեյ + + + Դար-Էս-Սալամ + + + Ուժգորոդ + + + Կիև + + + Սիմֆերոպոլ + + + Զապորոժյե + + + Կամպալա + + + Միդուեյ կղզի + + + Ջոնսթոն ատոլ + + + Ուեյք կղզի + + + Ադակ կղզի + + + Նոմ + + + Հոնոլուլու + + + Անքորիջ + + + Յակուտատ + + + Սիտկա + + + Ջունո + + + Մետլակատլա + + + Լոս Անջելես + + + Բոյսե + + + Ֆինիքս + + + Դենվեր + + + Բոյլա, Հյուսիսային Դակոտա + + + Նյու Սալեմ, Հյուսիսային Դակոտա + + + Հյուսիսային Դակոտա - Կենտրոն + + + Չիկագո + + + Մենոմինի + + + Վինսենս, Ինդիանա + + + Պետերսբուրգ, Ինդիանա + + + Թել-Սիթի, Ինդիանա + + + Նոքս, Ինդիանա + + + Վինամակ, Ինդիանա + + + Մարենգո, Ինդիանա + + + Ինդիանապոլիս + + + Լուիսվիլ + + + Վիվեյ, Ինդիանա + + + Մոնտիսելո, Կենտուկի + + + Դետրոյթ + + + Նյու Յորք + + + Մոնտեվիդեո + + + Սամարղանդ + + + Տաշքենդ + + + Վատիկան + + + Սենթ Վինսենթ + + + Կարակաս + + + Տորտոլա + + + Սենթ Թոմաս + + + Հոշիմին + + + Էֆատե + + + Ուոլլիս + + + Ապիա + + + Ադեն + + + Մայոտ + + + Յոհանեսբուրգ + + + Լուսակա + + + Հարարե + + + + Աֆղանստանի ժամանակ + + + + + Կենտրոնաաֆրիկյան ժամանակ + + + + + Արևելաաֆրիկյան ժամանակ + + + + + Հարավաֆրիկյան ժամանակ + + + + + Արևմտաաֆրիկյան ժամանակ + Արևմտաաֆրիկյան ստանդարտ ժամանակ + Արևմտաաֆրիկյան ամառային ժամանակ + + + + + Ալյասկայի ժամանակ + Ալյասկայի ստանդարտ ժամանակ + Ալյասկայի ամառային ժամանակ + + + + + Ամազոնյան ժամանակ + Ամազոնյան ստանդարտ ժամանակ + Ամազոնյան ամառային ժամանակ + + + + + Միջին ամերիկյան ժամանակ + Միջին ամերիկյան ստանդարտ ժամանակ + Միջին ամերիկյան ամառային ժամանակ + + + + + Արևելաամերիկյան ժամանակ + Արևելաամերիկյան ստանդարտ ժամանակ + Արևելաամերիկյան ամառային ժամանակ + + + + + Լեռնային ժամանակ (Հյուսիսային Ամերիկա) + Լեռնային ստանդարտ ժամանակ (Հյուսիսային Ամերիկա) + Լեռնային ամառային ժամանակ (Հյուսիսային Ամերիկա) + + + + + Խաղաղօվկիանոսային ժամանակ (Հյուսիսային Ամերիկա) + Խաղաղօվկիանոսային ստանդարտ ժամանակ (Հյուսիսային Ամերիկա) + Խաղաղօվկիանոսային ամառային ժամանակ (Հյուսիսային Ամերիկա) + + + + + Սաուդյան Արաբիայի ժամանակ + Սաուդյան Արաբիայի ստանդարտ ժամանակ + Սաուդյան Արաբիայի ամառային ժամանակ + + + + + Արգենտինայի ժամանակ + Արգենտինայի ստնադարտ ժամանակ + Արգենտինայի ամառային ժամանակ + + + + + Արևմտյան Արգենտինայի ժամանակ + Արևմտյան Արգենտինայի ստնադարտ ժամանակ + Արևմտյան Արգենտինայի ամառային ժամանակ + + + + + Հայաստանի ժամանակ + Հայաստանի ստանդարտ ժամանակ + Հայաստանի ամառային ժամանակ + + + + + Ատլատյան ժամանակ + Ատլատյան ստանդարտ ժամանակ + Ատլատյան ամառային ժամանակ + + + + + Կենտրոնաավստրալիական ժամանակ + Կենտրոնաավստրալիական ստանդարտ ժամանակ + Կենտրոնաավստրալիական ամառային ժամանակ + + + + + Կենտրոնաավստրալիական արևմտյան ժամանակ + Կենտրոնաավստրալիական արևմտյան ստանդարտ ժամանակ + Կենտրոնաավստրալիական արևմտյան ամառային ժամանակ + + + + + Արևելաավստրալիական ժամանակ + Արևելաավստրալիական ստանդարտ ժամանակ + Արևելաավստրալիական ամառային ժամանակ + + + + + Արևմտաավստրալիական ժամանակ + Արևմտաավստրալիական ստանդարտ ժամանակ + Արևմտաավստրալիական ամառային ժամանակ + + + + + Ադրբեջանի ժամանակ + Ադրբեջանի ստանդարտ ժամանակ + Ադրբեջանի ամառային ժամանակ + + + + + Ազորյան կղզիների ժամանակ + Ազորյան կղզիների ստանդարտ ժամանակ + Ազորյան կղզիների ամառային ժամանակ + + + + + Բանգլադեշի ժամանակ + Բանգլադեշի ստանդարտ ժամանակ + Բանգլադեշի ամառային ժամանակ + + + + + Բութանի ժամանակ + + + + + Բոլիվիայի ժամանակ + + + + + Բրազիլիայի ժամանակ + Բրազիլիայի ստանդարտ ժամանակ + Բրազիլիայի ամառային ժամանակ + + + + + Բրունեյի ժամանակ + + + + + Կաբո Վերդեի ժամանակ + Կաբո Վերդեի ստանդարտ ժամանակ + Կաբո Վերդեի ամառային ժամանակ + + + + + Չամորոյի ժամանակ + + + + + Չաթեմ կղզու ժամանակ + Չաթեմ կղզու ստանդարտ ժամանակ + Չաթեմ կղզու ամառային ժամանակ + + + + + Չիլիի ժամանակ + Չիլիի ստանդարտ ժամանակ + Չիլիի ամառային ժամանակ + + + + + Չինաստանի ժամանակ + Չինաստանի ստանդարտ ժամանակ + Չինաստանի ամառային ժամանակ + + + + + Չոյբալսանի ժամանակ + Չոյբալսանի ստանդարտ ժամանակ + Չոյբալսանի ամառային ժամանակ + + + + + Ծննդյան կղզու ժամանակ + + + + + Կոկոսյան կղզիների ժամանակ + + + + + Կոլումբիայի ժամանակ + Կոլումբիայի ստանդարտ ժամանակ + Կոլումբիայի ամառային ժամանակ + + + + + Կուկի կղզիների ժամանակ + Կուկի կղզիների ստանդարտ ժամանակ + Կուկի կղզիների կիսաամառային ժամանակ + + + + + Կուբայի ժամանակ + Կուբայի ստանդարտ ժամանակ + Կուբայի ամառային ժամանակ + + + + + Դեյվիսի ժամանակ + + + + + Դյումոն դ'Յուրվիլի ժամանակ + + + + + Արևելյան Թիմորի ժամանակ + + + + + Զատկի կղզու ժամանակ + Զատկի կղզու ստանդարտ ժամանակ + Զատկի կղզու ամառային ժամանակ + + + + + Էկվադորի ժամանակ + + + + + Կենտրոնաևրոպական ժամանակ + Կենտրոնաևրոպական ստանդարտ ժամանակ + Կենտրոնաևրոպական ամառային ժամանակ + + + + + Արևելաևրոպական ժամանակ + Արևելաևրոպական ստանդարտ ժամանակ + Արևելաևրոպական ամառային ժամանակ + + + + + Արևմտաևրոպական ժամանակ + Արևմտաևրոպական ստանդարտ ժամանակ + Արևմտաևրոպական ամառային ժամանակ + + + + + Ֆոլկլենդյան կղզիների ժամանակ + Ֆոլկլենդյան կղզիների ստանդարտ ժամանակ + Ֆոլկլենդյան կղզիների ամառային ժամանակ + + + + + Ֆիջիի ժամանակ + Ֆիջիի ստանդարտ ժամանակ + Ֆիջիի ամառային ժամանակ + + + + + Ֆրանսիական Գվիանայի ժամանակ + + + + + Ֆրանսիական հարավային և անտարկտիդյան ժամանակ + + + + + Գալապագոսյան կղզիների ժամանակ + + + + + Գամբյե կղզիների ժամանակ + + + + + Վրաստանի ժամանակ + Վրաստանի ստանդարտ ժամանակ + Վրաստանի ամառային ժամանակ + + + + + Ջիլբերթի կղզիների ժամանակ + + + + + Գրինվիչի ժամանակ + + + + + Արևելյան Գրենլանդիայի ժամանակ + Արևելյան Գրենլանդիայի ստանդարտ ժամանակ + Արևելյան Գրենլանդիայի ամառային ժամանակ + + + + + Արևմտյան Գրենլանդիայի ժամանակ + Արևմտյան Գրենլանդիայի ստանդարտ ժամանակ + Արևմտյան Գրենլանդիայի ամառային ժամանակ + + + + + Պարսից ծոցի ժամանակ + + + + + Գայանայի ժամանակ + + + + + Հավայան-ալեուտյան ժամանակ + Հավայան-ալեուտյան ստանդարտ ժամանակ + Հավայան-ալեուտյան ամառային ժամանակ + + + + + Հոնկոնգի ժամանակ + Հոնկոնգի ստանդարտ ժամանակ + Հոնկոնգի ամառային ժամանակ + + + + + Հովդի ժամանակ + Հովդի ստանդարտ ժամանակ + Հովդի ամառային ժամանակ + + + + + Հնդկաստանի ժամանակ + + + + + Հնդկական օվկիանոսի ժամանակ + + + + + Հնդկաչինական ժամանակ + + + + + Կենտրոնական Ինդոնեզիայի ժամանակ + + + + + Արևելյան Ինդոնեզիայի ժամանակ + + + + + Արևմտյան Ինդոնեզիայի ժամանակ + + + + + Պարսկաստանի ժամանակ + Պարսկաստանի ստանդարտ ժամանակ + Պարսկաստանի ամառային ժամանակ + + + + + Իրկուտսկի ժամանակ + Իրկուտսկի ստանդարտ ժամանակ + Իրկուտսկի ամառային ժամանակ + + + + + Իսրայելի ժամանակ + Իսրայելի ստանդարտ ժամանակ + Իսրայելի ամառային ժամանակ + + + + + Ճապոնիայի ժամանակ + Ճապոնիայի ստանդարտ ժամանակ + Ճապոնիայի ամառային ժամանակ + + + + + Արևելյան Ղազախստանի ժամանակ + + + + + Արևմտյան Ղազախստանի ժամանակ + + + + + Կորեայի ժամանակ + Կորեայի ստանդարտ ժամանակ + Կորեայի ամառային ժամանակ + + + + + Կոսրաեյի ժամանակ + + + + + Կրասնոյարսկի ժամանակ + Կրասնոյարսկի ստանդարտ ժամանակ + Կրասնոյարսկի ամառային ժամանակ + + + + + Ղրղզստանի ժամանակ + + + + + Լայն կղզիների ժամանակ + + + + + Լորդ Հաուի ժամանակ + Լորդ Հաուի ստանդարտ ժամանակ + Լորդ Հաուի ամառային ժամանակ + + + + + Մակկուորի կղզու ժամանակ + + + + + Մագադանի ժամանակ + Մագադանի ստանդարտ ժամանակ + Մագադանի ամառային ժամանակ + + + + + Մալայզիայի ժամանակ + + + + + Մալդիվյան կղզիների ժամանակ + + + + + Մարկիզյան կղզիների ժամանակ + + + + + Մարշալյան կղզիների ժամանակ + + + + + Մավրիկիոսի ժամանակ + Մավրիկիոսի ստանդարտ ժամանակ + Մավրիկիոսի ամառային ժամանակ + + + + + Մոուսոնի ժամանակ + + + + + Ուլան-Բատորի ժամանակ + Ուլան-Բատորի ստանդարտ ժամանակ + Ուլան-Բատորի ամառային ժամանակ + + + + + Մոսկվայի ժամանակ + Մոսկվայի ստանդարտ ժամանակ + Մոսկվայի ամառային ժամանակ + + + + + Մյանմայի ժամանակ + + + + + Նաուրուի ժամանակ + + + + + Նեպալի ժամանակ + + + + + Նոր Կալեդոնիայի ժամանակ + Նոր Կալեդոնիայի ստանդարտ ժամանակ + Նոր Կալեդոնիայի ամառային ժամանակ + + + + + Նոր Զելանդիայի ժամանակ + Նոր Զելանդիայի ստանդարտ ժամանակ + Նոր Զելանդիայի ամառային ժամանակ + + + + + Նյուֆաունդլենդի ժամանակ + Նյուֆաունդլենդի ստանդարտ ժամանակ + Նյուֆաունդլենդի ամառային ժամանակ + + + + + Նիուեյի ժամանակ + + + + + Նորֆոլկ կղզու ժամանակ + + + + + Ֆերնանդու դի Նորոնյայի ժամանակ + Ֆերնանդու դի Նորոնյայի ստանդարտ ժամանակ + Ֆերնանդու դի Նորոնյայի ամառային ժամանակ + + + + + Նովոսիբիրսկի ժամանակ + Նովոսիբիրսկի ստանդարտ ժամանակ + Նովոսիբիրսկի ամառային ժամանակ + + + + + Օմսկի ժամանակ + Օմսկի ստանդարտ ժամանակ + Օմսկի ամառային ժամանակ + + + + + Պակիստանի ժամանակ + Պակիստանի ստանդարտ ժամանակ + Պակիստանի ամառային ժամանակ + + + + + Պալաույի ժամանակ + + + + + Պապուա Նոր Գվինեայի ժամանակ + + + + + Պարագվայի ժամանակ + Պարագվայի ստանդարտ ժամանակ + Պարագվայի ամառային ժամանակ + + + + + Պերուի ժամանակ + Պերուի ստանդարտ ժամանակ + Պերուի ամառային ժամանակ + + + + + Ֆիլիպինների ժամանակ + Ֆիլիպինների ստանդարտ ժամանակ + Ֆիլիպինների ամառային ժամանակ + + + + + Ֆինիքս կղզիների ժամանակ + + + + + Սեն Պիեր և Միկելոնի ժամանակ + Սեն Պիեր և Միկելոնի ստանդարտ ժամանակ + Սեն Պիեր և Միկելոնի ամառային ժամանակ + + + + + Պիտկեռնի ժամանակ + + + + + Պոնապե կղզու ժամանակ + + + + + Ռեյունիոնի ժամանակ + + + + + Ռոտերայի ժամանակ + + + + + Սախալինի ժամանակ + Սախալինի ստանդարտ ժամանակ + Սախալինի ամառային ժամանակ + + + + + Սամոայի ժամանակ + Սամոայի ստանդարտ ժամանակ + Սամոայի ամառային ժամանակ + + + + + Սեյշելյան կղզիների ժամանակ + + + + + Սինգապուրի ժամանակ + + + + + Սողոմոնյան կղզիների ժամանակ + + + + + Հարավային Ջորջիայի ժամանակ + + + + + Սուրինամի ժամանակ + + + + + Սյովայի ժամանակ + + + + + Թաիթիի ժամանակ + + + + + Թայպեյի ժամանակ + Թայպեյի ստանդարտ ժամանակ + Թայպեյի ամառային ժամանակ + + + + + Տաջիկստանի ժամանակ + + + + + Տոկելաույի ժամանակ + + + + + Տոնգայի ժամանակ + Տոնգայի ստանդարտ ժամանակ + Տոնգայի ամառային ժամանակ + + + + + Չուուկի ժամանակ + + + + + Թուրքմենստանի ժամանակ + Թուրքմենստանի ստանդարտ ժամանակ + Թուրքմենստանի ամառային ժամանակ + + + + + Տուվալույի ժամանակ + + + + + Ուրուգվայի ժամանակ + Ուրուգվայի ստանդարտ ժամանակ + Ուրուգվայի ամառային ժամանակ + + + + + Ուզբեկստանի ժամանակ + Ուզբեկստանի ստանդարտ ժամանակ + Ուզբեկստանի ամառային ժամանակ + + + + + Վանուատույի ժամանակ + Վանուատույի ստանդարտ ժամանակ + Վանուատույի ամառային ժամանակ + + + + + Վենեսուելայի ժամանակ + + + + + Վլադիվոստոկի ժամանակ + Վլադիվոստոկի ստանդարտ ժամանակ + Վլադիվոստոկի ամառային ժամանակ + + + + + Վոլգոգրադի ժամանակ + Վոլգոգրադի ստանդարտ ժամանակ + Վոլգոգրադի ամառային ժամանակ + + + + + Վոստոկի ժամանակ + + + + + Ուեյք կղզու ժամանակ + + + + + Ուոլիս և Ֆուտունայի ժամանակ + + + + + Յակուտսկի ժամանակ + Յակուտսկի ստանդարտ ժամանակ + Յակուտսկի ամառային ժամանակ + + + + + Եկատերինբուրգի ժամանակ + Եկատերինբուրգի ստանդարտ ժամանակ + Եկատերինբուրգի ամառային ժամանակ + + + + + + latn + + latn + armn + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #0.### + + + + + 0 հազար + 0 հազար + 00 հազար + 00 հազար + 000 հազար + 000 հազար + 0 միլիոն + 0 միլիոն + 00 միլիոն + 00 միլիոն + 000 միլիոն + 000 միլիոն + 0 միլիարդ + 0 միլիարդ + 00 միլիարդ + 00 միլիարդ + 000 միլիարդ + 000 միլիարդ + 0 տրիլիոն + 0 տրիլիոն + 00 տրիլիոն + 00 տրիլիոն + 000 տրիլիոն + 000 տրիլիոն + + + + + 0 հզր + 0 հզր + 00 հզր + 00 հզր + 000 հզր + 000 հզր + 0 մլն + 0 մլն + 00 մլն + 00 մլն + 000 մլն + 000 մլն + 0 մլրդ + 0 մլրդ + 00 մլրդ + 00 մլրդ + 000 մլրդ + 000 մլրդ + 0 տրլն + 0 տրլն + 00 տրլն + 00 տրլն + 000 տրլն + 000 տրլն + + + + + + + #E0 + + + + + + + #0% + + + + + + + #0.00 ¤ + + + {0} {1} + {0} {1} + + + + Արաբական Միացյալ Էմիրությունների դիրհամ + Արաբական Միացյալ Էմիրությունների դիրհամ + Արաբական Միացյալ Էմիրությունների դիրհամ + + + Աֆղանական աֆղանի + Աֆղանական աֆղանի + Աֆղանական աֆղանի + + + Ալբանական լեկ + Ալբանական լեկ + Ալբանական լեկ + + + Հայկական դրամ + Հայկական դրամ + Հայկական դրամ + դր. + ֏ + + + Նիդերլանդական Անտիլների գուլդեն + Նիդերլանդական Անտիլների գուլդեն + Նիդերլանդական Անտիլների գուլդեն + + + Անգոլական կվանզա + Անգոլական կվանզա + Անգոլական կվանզա + + + Արգենտինական պեսո + Արգենտինական պեսո + Արգենտինական պեսո + + + Ավստրալական դոլար + Ավստրալական դոլար + Ավստրալական դոլար + A$ + + + Արուբական ֆլորին + Արուբական ֆլորին + Արուբական ֆլորին + + + Ադրբեջանական մանաթ + Ադրբեջանական մանաթ + Ադրբեջանական մանաթ + + + Բոսնիա և Հերցեգովինայի փոխարկելի մարկա + Բոսնիա և Հերցեգովինայի փոխարկելի մարկա + Բոսնիա և Հերցեգովինայի փոխարկելի մարկա + + + Բարբադոսյան դոլար + Բարբադոսյան դոլար + Բարբադոսյան դոլար + + + Բանգլադեշի տակա + Բանգլադեշի տակա + Բանգլադեշի տակա + + + Բուլղարական լև + Բուլղարական լև + Բուլղարական լև + + + Բահրեյնական դինար + Բահրեյնական դինար + Բահրեյնական դինար + + + Բուրունդիի ֆրանկ + Բուրունդիի ֆրանկ + Բուրունդիի ֆրանկ + + + Բերմուդյան դոլար + Բերմուդյան դոլար + Բերմուդյան դոլար + + + Բրունեյական դոլար + Բրունեյական դոլար + Բրունեյական դոլար + + + Բոլիվիական բոլիվիանո + Բոլիվիական բոլիվիանո + Բոլիվիական բոլիվիանո + + + Բրազիլական ռեալ + Բրազիլական ռեալ + Բրազիլական ռեալ + R$ + + + Բահամական դոլար + Բահամական դոլար + Բահամական դոլար + + + Բութանական նգուլտրում + Բութանական նգուլտրում + Բութանական նգուլտրում + + + Բոթսվանական պուլա + Բոթսվանական պուլա + Բոթսվանական պուլա + + + Բելառուսական ռուբլի + Բելառուսական ռուբլի + Բելառուսական ռուբլի + + + Բելիզի դոլար + Բելիզի դոլար + Բելիզի դոլար + + + Կանադական դոլար + Կանադական դոլար + Կանադական դոլար + CA$ + + + Կոնգոյի ֆրանկ + Կոնգոյի ֆրանկ + Կոնգոյի ֆրանկ + + + Շվեյցարական ֆրանկ + Շվեյցարական ֆրանկ + Շվեյցարական ֆրանկ + + + Չիլիական պեսո + Չիլիական պեսո + Չիլիական պեսո + + + Չինական յուան + Չինական յուան + Չինական յուան + CN¥ + + + Կոլումբիական պեսո + Կոլումբիական պեսո + Կոլումբիական պեսո + + + Կոստա Ռիկայի կոլոն + Կոստա Ռիկայի կոլոն + Կոստա Ռիկայի կոլոն + + + Կուբական փոխարկելի պեսո + Կուբական փոխարկելի պեսո + Կուբական փոխարկելի պեսո + + + Կուբական պեսո + Կուբական պեսո + Կուբական պեսո + + + Կաբո Վերդեի էսկուդո + Կաբո Վերդեի էսկուդո + Կաբո Վերդեի էսկուդո + + + Չեխական կրոնա + Չեխական կրոնա + Չեխական կրոնա + + + Ջիբութիի ֆրանկ + Ջիբութիի ֆրանկ + Ջիբութիի ֆրանկ + + + Դանիական կրոնա + Դանիական կրոնա + Դանիական կրոնա + + + Դոմինիկական պեսո + Դոմինիկական պեսո + Դոմինիկական պեսո + + + Ալժիրական դինար + Ալժիրական դինար + Ալժիրական դինար + + + Եգիպտական ֆունտ + Եգիպտական ֆունտ + Եգիպտական ֆունտ + + + Էրիթրեական նակֆա + Էրիթրեական նակֆա + Էրիթրեական նակֆա + + + Եթովպական բիր + Եթովպական բիր + Եթովպական բիր + + + Եվրո + Եվրո + Եվրո + + + + Ֆիջիական դոլար + Ֆիջիական դոլար + Ֆիջիական դոլար + + + Ֆոլկլենդյան կղզիներ ֆունտ + Ֆոլկլենդյան կղզիներ ֆունտ + Ֆոլկլենդյան կղզիներ ֆունտ + + + Բրիտանական ֆունտ ստեռլինգ + Բրիտանական ֆունտ ստեռլինգ + Բրիտանական ֆունտ ստեռլինգ + £ + + + Վրացական լարի + Վրացական լարի + Վրացական լարի + + + Գանական սեդի + Գանական սեդի + Գանական սեդի + + + Ջիբրալթարի ֆունտ + Ջիբրալթարի ֆունտ + Ջիբրալթարի ֆունտ + + + Գամբիական դալասի + Գամբիական դալասի + Գամբիական դալասի + + + Գվինեական ֆրանկ + Գվինեական ֆրանկ + Գվինեական ֆրանկ + + + Գվատեմալական կետսալ + Գվատեմալական կետսալ + Գվատեմալական կետսալ + + + Գայանական դոլար + Գայանական դոլար + Գայանական դոլար + + + Հոնկոնգի դոլար + Հոնկոնգի դոլար + Հոնկոնգի դոլար + HK$ + + + Հոնդուրասական լեմպրիա + Հոնդուրասական լեմպրիա + Հոնդուրասական լեմպրիա + + + Խորվաթական կունա + Խորվաթական կունա + Խորվաթական կունա + + + Հաիթյան գուրդ + Հաիթյան գուրդ + Հաիթյան գուրդ + + + Հունգարական ֆորինտ + Հունգարական ֆորինտ + Հունգարական ֆորինտ + + + Ինդոնեզական ռուփի + Ինդոնեզական ռուփի + Ինդոնեզական ռուփի + + + Իսրայելի նոր շեկել + Իսրայելի նոր շեկել + Իսրայելի նոր շեկել + + + + Հնդկական ռուփի + Հնդկական ռուփի + Հնդկական ռուփի + + + + Իրաքյան դինար + Իրաքյան դինար + Իրաքյան դինար + + + Իրանական ռիալ + Իրանական ռիալ + Իրանական ռիալ + + + Իսլանդական կրոնա + Իսլանդական կրոնա + Իսլանդական կրոնա + + + Ջամայկական դոլար + Ջամայկական դոլար + Ջամայկական դոլար + + + Հորդանանական դինար + Հորդանանական դինար + Հորդանանական դինար + + + Ճապոնական իեն + Ճապոնական իեն + Ճապոնական իեն + JP¥ + + + Քենիական շիլինգ + Քենիական շիլինգ + Քենիական շիլինգ + + + Ղրղզական սոմ + Ղրղզական սոմ + Ղրղզական սոմ + + + Կամբոջական ռիել + Կամբոջական ռիել + Կամբոջական ռիել + + + Կոմորյան կղզիների ֆրանկ + Կոմորյան կղզիների ֆրանկ + Կոմորյան կղզիների ֆրանկ + + + ԿԺԴՀ-ի վոնա + ԿԺԴՀ-ի վոնա + ԿԺԴՀ-ի վոնա + + + Հարավկորեական վոնա + Հարավկորեական վոնա + Հարավկորեական վոնա + + + + Քուվեյթական դինար + Քուվեյթական դինար + Քուվեյթական դինար + + + Կայմանյան կղզիների դոլար + Կայմանյան կղզիների դոլար + Կայմանյան կղզիների դոլար + + + Ղազախական տենգե + Ղազախական տենգե + Ղազախական տենգե + + + Լաոսական կիպ + Լաոսական կիպ + Լաոսական կիպ + + + Լիբանանական ֆունտ + Լիբանանական ֆունտ + Լիբանանական ֆունտ + + + Լանկիական ռուփի + Լանկիական ռուփի + Լանկիական ռուփի + + + Լիբերիական դոլար + Լիբերիական դոլար + Լիբերիական դոլար + + + Լիտվական լիտ + Լիտվական լիտ + Լիտվական լիտ + + + Լատվիական լատ + Լատվիական լատ + Լատվիական լատ + + + Լիբիական դինար + Լիբիական դինար + Լիբիական դինար + + + Մարոկական դիրհամ + Մարոկական դիրհամ + Մարոկական դիրհամ + + + Մոլդովական լեյ + Մոլդովական լեյ + Մոլդովական լեյ + + + Մադագասկարի արիարի + Մադագասկարի արիարի + Մադագասկարի արիարի + + + Մակեդոնական դենար + Մակեդոնական դենար + Մակեդոնական դենար + + + Մյանմական կյատ + Մյանմական կյատ + Մյանմական կյատ + + + Մոնղոլական տուգրիկ + Մոնղոլական տուգրիկ + Մոնղոլական տուգրիկ + + + Մակաոյի պատակա + Մակաոյի պատակա + Մակաոյի պատակա + + + Մավրիտանական ուգիյա + Մավրիտանական ուգիյա + Մավրիտանական ուգիյա + + + Մավրիկական ռուփի + Մավրիկական ռուփի + Մավրիկական ռուփի + + + Մալդիվյան ռուֆիա + Մալդիվյան ռուֆիա + Մալդիվյան ռուֆիա + + + Մալավիական կվաչա + Մալավիական կվաչա + Մալավիական կվաչա + + + Մեքսիկական պեսո + Մեքսիկական պեսո + Մեքսիկական պեսո + MX$ + + + Մալայզիական ռինգիտ + Մալայզիական ռինգիտ + Մալայզիական ռինգիտ + + + Մոզամբիկյան մետիկալ + Մոզամբիկյան մետիկալ + Մոզամբիկյան մետիկալ + + + Նամիբիական դոլար + Նամիբիական դոլար + Նամիբիական դոլար + + + Նիգերիական նայրա + Նիգերիական նայրա + Նիգերիական նայրա + + + Նիկարագուական կորդոբա + Նիկարագուական կորդոբա + Նիկարագուական կորդոբա + + + Նորվեգական կրոնա + Նորվեգական կրոնա + Նորվեգական կրոնա + + + Նեպալական ռուփի + Նեպալական ռուփի + Նեպալական ռուփի + + + Նորզելանդական դոլար + Նորզելանդական դոլար + Նորզելանդական դոլար + NZ$ + + + Օմանական ռիալ + Օմանական ռիալ + Օմանական ռիալ + + + Պանամական բալբոա + Պանամական բալբոա + Պանամական բալբոա + + + Պերուի նոր սոլ + Պերուի նոր սոլ + Պերուի նոր սոլ + + + Պապուա-Նոր Գվինեայի կինա + Պապուա-Նոր Գվինեայի կինա + Պապուա-Նոր Գվինեայի կինա + + + Ֆիլիպինական պեսո + Ֆիլիպինական պեսո + Ֆիլիպինական պեսո + + + Պակիստանական ռուփի + Պակիստանական ռուփի + Պակիստանական ռուփի + + + Լեհական զլոտի + Լեհական զլոտի + Լեհական զլոտի + + + Պարագվայական գուարանի + Պարագվայական գուարանի + Պարագվայական գուարանի + + + Քաթարական ռիալ + Քաթարական ռիալ + Քաթարական ռիալ + + + Ռումինական լեյ + Ռումինական լեյ + Ռումինական լեյ + + + Սերբական դինար + Սերբական դինար + Սերբական դինար + + + Ռուսական ռուբլի + Ռուսական ռուբլի + Ռուսական ռուբլի + + + Ռուանդական ֆրանկ + Ռուանդական ֆրանկ + Ռուանդական ֆրանկ + + + Սաուդյան Արաբիայի ռիալ + Սաուդյան Արաբիայի ռիալ + Սաուդյան Արաբիայի ռիալ + + + Սողոմոնյան կղզիների դոլար + Սողոմոնյան կղզիների դոլար + Սողոմոնյան կղզիների դոլար + + + Սեյշելյան կղզիների ռուփի + Սեյշելյան կղզիների ռուփի + Սեյշելյան կղզիների ռուփի + + + Սուդանական ֆունտ + Սուդանական ֆունտ + Սուդանական ֆունտ + + + Շվեդական կրոնա + Շվեդական կրոնա + Շվեդական կրոնա + + + Սինգապուրյան դոլար + Սինգապուրյան դոլար + Սինգապուրյան դոլար + + + Սուրբ Հեղինեի կղզու ֆունտ + Սուրբ Հեղինեի կղզու ֆունտ + Սուրբ Հեղինեի կղզու ֆունտ + + + Սիերա-Լեոնեի լեոնե + Սիերա-Լեոնեի լեոնե + Սիերա-Լեոնեի լեոնե + + + Սոմալիական շիլինգ + Սոմալիական շիլինգ + Սոմալիական շիլինգ + + + Սուրինամական դոլար + Սուրինամական դոլար + Սուրինամական դոլար + + + Հարավսուդանական ֆունտ + Հարավսուդանական ֆունտ + Հարավսուդանական ֆունտ + + + Սան Տոմե և Պրինսիպիի դոբրա + Սան Տոմե և Պրինսիպիի դոբրա + Սան Տոմե և Պրինսիպիի դոբրա + + + Սիրիական ֆունտ + Սիրիական ֆունտ + Սիրիական ֆունտ + + + Սվազիլենդական լիլանգենի + Սվազիլենդական լիլանգենի + Սվազիլենդական լիլանգենի + + + Թաիլանդական բատ + Թաիլանդական բատ + Թաիլանդական բատ + ฿ + + + Տաջիկական սոմոնի + Տաջիկական սոմոնի + Տաջիկական սոմոնի + + + Թուրքմենական մանաթ + Թուրքմենական մանաթ + Թուրքմենական մանաթ + + + Թունիսական դինար + Թունիսական դինար + Թունիսական դինար + + + Տոնգայի պաանգա + Տոնգայի պաանգա + Տոնգայի պաանգա + + + Թուրքական լիրա + Թուրքական լիրա + Թուրքական լիրա + + + Տրինիդադ և Տոբագոյի դոլար + Տրինիդադ և Տոբագոյի դոլար + Տրինիդադ և Տոբագոյի դոլար + + + Թայվանական նոր դոլար + Թայվանական նոր դոլար + Թայվանական նոր դոլար + NT$ + + + Տանզանիական շիլինգ + Տանզանիական շիլինգ + Տանզանիական շիլինգ + + + Ուկրաինական գրիվնա + Ուկրաինական գրիվնա + Ուկրաինական գրիվնա + + + Ուգանդական շիլինգ + Ուգանդական շիլինգ + Ուգանդական շիլինգ + + + ԱՄՆ դոլար + ԱՄՆ դոլար + ԱՄՆ դոլար + $ + + + Ուրուգվայական պեսո + Ուրուգվայական պեսո + Ուրուգվայական պեսո + + + Ուզբեկական սում + Ուզբեկական սում + Ուզբեկական սում + + + Վենեսուելական բոլիվար + Վենեսուելական բոլիվար + Վենեսուելական բոլիվար + + + Վիետնամական դոնգ + Վիետնամական դոնգ + Վիետնամական դոնգ + + + + Վանուատուի վատու + Վանուատուի վատու + Վանուատուի վատու + + + Սամոական տալա + Սամոական տալա + Սամոական տալա + + + Աֆրիկական ֆինանսական համայնքի ֆրանկ BEAC + Աֆրիկական ֆինանսական համայնքի ֆրանկ BEAC + Աֆրիկական ֆինանսական համայնքի ֆրանկ BEAC + FCFA + + + Արևելակարիբյան դոլար + Արևելակարիբյան դոլար + Արևելակարիբյան դոլար + EC$ + + + Աֆրիկական ֆինանսական համայնքի ֆրանկ BCEAO + Աֆրիկական ֆինանսական համայնքի ֆրանկ BCEAO + Աֆրիկական ֆինանսական համայնքի ֆրանկ BCEAO + CFA + + + ԿՊՖ ֆրանկ + ԿՊՖ ֆրանկ + ԿՊՖ ֆրանկ + CFPF + + + Անհայտ արժույթ + (անհայտ արժույթ) + (անհայտ արժույթ) + + + Եմենական ռիալ + Եմենական ռիալ + Եմենական ռիալ + + + Հարավաֆրիկական ռենդ + Հարավաֆրիկական ռենդ + Հարավաֆրիկական ռենդ + + + Զամբիական կվաչա (1968–2012) + Զամբիական կվաչա (1968–2012) + Զամբիական կվաչա (1968–2012) + + + Զամբիական կվաչա + Զամբիական կվաչա + Զամբիական կվաչա + + + + {0}+ + {0}-{1} + + + + + + {0}/{1} + + + {0} ձգողության ուժի արագացում + {0} ձգողության ուժի արագացում + + + {0} րոպե + {0} րոպե + + + {0} վայրկյան + {0} վայրկյան + + + {0} աստիճան + {0} աստիճան + + + {0} ակր + {0} ակր + + + {0} հեկտար + {0} հեկտար + + + {0} քառակուսի ֆուտ + {0} քառակուսի ֆուտ + + + {0} քառակուսի կիլոմետր + {0} քառակուսի կիլոմետր + + + {0} քառակուսի մետր + {0} քառակուսի մետր + + + {0} քառակուսի մղոն + {0} քառակուսի մղոն + + + {0} օր + {0} օր + + + {0} ժամ + {0} ժամ + + + {0} միլիվայրկյան + {0} միլիվայրկյան + + + {0} րոպե + {0} րոպե + + + {0} ամիս + {0} ամիս + + + {0} վայրկյան + {0} վայրկյան + + + {0} շաբաթ + {0} շաբաթ + + + {0} տարի + {0} տարի + + + {0} սանտիմետր + {0} սանտիմետր + + + {0} ֆուտ + {0} ֆուտ + + + {0} դյույմ + {0} դյույմ + + + {0} կիլոմետր + {0} կիլոմետր + + + {0} լուսային տարի + {0} լուսային տարի + + + {0} մետր + {0} մետր + + + {0} մղոն + {0} մղոն + + + {0} միլիմետր + {0} միլիմետր + + + {0} պիկոմետր + {0} պիկոմետր + + + {0} յարդ + {0} յարդ + + + {0} գրամ + {0} գրամ + + + {0} կիլոգրամ + {0} կիլոգրամ + + + {0} ունցիա + {0} ունցիա + + + {0} ֆունտ + {0} ֆունտ + + + {0} ձիաուժ + {0} ձիաուժ + + + {0} կիլովատ + {0} կիլովատ + + + {0} վատ + {0} վատ + + + {0} հեկտապասկալ + {0} հեկտապասկալ + + + {0} դյույմ սնդիկի սյուն + {0} դյույմ սնդիկի սյուն + + + {0} միլիբար + {0} միլիբար + + + {0} կիլոմետր / ժամ + {0} կիլոմետր / ժամ + + + {0} մետր / վայրկյան + {0} մետր / վայրկյան + + + {0} մղոն / ժամ + {0} մղոն / ժամ + + + {0} աստիճան ըստ Ցելսիուսի + {0} աստիճան ըստ Ցելսիուսի + + + {0} աստիճան ըստ Ֆարենհայթի + {0} աստիճան ըստ Ֆարենհայթի + + + {0} խորանարդ կիլոմետր + {0} խորանարդ կիլոմետր + + + {0} խորանարդ մղոն + {0} խորանարդ մղոն + + + {0} լիտր + {0} լիտր + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} րոպ + {0} րոպ + + + {0} վրկ + {0} վրկ + + + {0} աստճ. + {0} աստճ. + + + {0} ակր + {0} ակր + + + {0} հա + {0} հա + + + {0} քռ. ֆտ. + {0} քռ. ֆտ. + + + {0} կմ² + {0} կմ² + + + {0} մ² + {0} մ² + + + {0} քռ. մղ. + {0} քռ. մղ. + + + {0} օր + {0} օր + + + {0} ժ. + {0} ժ. + + + {0} մվ + {0}մվ + + + {0} րպ. + {0} րպ. + + + {0} ամս + {0} ամս + + + {0} վրկ + {0} վրկ + + + {0} շբթ. + {0} շբթ. + + + {0} տր. + {0} տր. + + + {0} սմ + {0} սմ + + + {0} ֆտ. + {0} ֆտ. + + + {0} դմ. + {0} դմ. + + + {0} կմ + {0} կմ + + + {0} լ. տ. + {0} լ. տ. + + + {0} մ + {0} մ + + + {0} մղ + {0} մղ + + + {0} մմ + {0} մմ + + + {0} պմ + {0} պմ + + + {0} յդ. + {0} յդ. + + + {0} գր + {0} գր + + + {0} կգ + {0} կգ + + + {0} ունց + {0} ունց + + + {0} ֆն. + {0} ֆն. + + + {0} ձ/ու + {0} ձ/ու + + + {0} կՎ + {0} կՎ + + + {0} Վ + {0} Վ + + + {0} հՊա + {0} հՊա + + + {0} դյույմ ս. ս. + {0} դյույմ ս. ս. + + + {0} մբ + {0} մբ + + + {0} կմ/ժ + {0} կմ/ժ + + + {0} մ/վ + {0} մ/վ + + + {0} մղ/ժ + {0} մղ/ժ + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} կմ³ + {0} կմ³ + + + {0} մղ³ + {0} մղ³ + + + {0} լ. + {0} լ. + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0}ակր + {0}ակր + + + {0}հա + {0}հա + + + {0}ֆտ² + {0}ֆտ² + + + {0} կմ² + {0} կմ² + + + {0} մ² + {0} մ² + + + {0}մղ² + {0}մղ² + + + {0}օ. + {0}օ. + + + {0} ժ. + {0} ժ. + + + {0}մվ + {0}մվ + + + {0} ր. + {0} ր. + + + {0} ա. + {0} ա. + + + {0} վ. + {0} վ. + + + {0} շ. + {0} շ. + + + {0}տ. + {0}տ. + + + {0} սմ + {0} սմ + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} կմ + {0} կմ + + + {0} լ. տ. + {0} լ. տ. + + + {0} մ + {0} մ + + + {0} մղ + {0} մղ + + + {0} մմ + {0} մմ + + + {0} պմ + {0} պմ + + + {0} յդ. + {0} յդ. + + + {0} գր + {0} գր + + + {0} կգ + {0} կգ + + + {0} ունց + {0} ունց + + + {0}# + {0}# + + + {0}ձ/ու + {0}ձ/ու + + + {0}կՎ + {0}կՎ + + + {0}Վ + {0}Վ + + + {0} հՊա + {0} հՊա + + + {0}" ս. ս. + {0}" ս. ս + + + {0} մբ + {0} մբ + + + {0}կմ/ժ + {0}կմ/ժ + + + {0}մ/վ + {0}մ/վ + + + {0}մղ/ժ + {0}մղ/ժ + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}կմ³ + {0}կմ³ + + + {0}մղ³ + {0}մղ³ + + + {0}լ. + {0}լ. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} և {1} + {0} և {1} + + + {0}, {1} + {0}, {1} + {0} և {1} + {0} և {1} + + + {0}, {1} + {0}, {1} + {0} և {1} + {0} և {1} + + + + + այո:ա + ոչ:ո + + + + diff --git a/library/Zend/Locale/Data/hy_AM.xml b/library/Zend/Locale/Data/hy_AM.xml new file mode 100755 index 000000000..22c773314 --- /dev/null +++ b/library/Zend/Locale/Data/hy_AM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ia.xml b/library/Zend/Locale/Data/ia.xml new file mode 100755 index 000000000..bd9ae69c4 --- /dev/null +++ b/library/Zend/Locale/Data/ia.xml @@ -0,0 +1,554 @@ + + + + + + + + + + + + afrikaans + amharico + arabe + Assamese + azerbaidzhani + bielorusso + bulgaro + bengali + breton + bosniaco + catalano + checo + gallese + danese + germano + greco + anglese + anglese (RU) + anglese (SUA) + esperanto + espaniol + estoniano + basco + persiano + finnese + tagalog + faroese + francese + frisiano + irlandese + scoto gaelic + gallego + guarani + gujarati + hebreo + hindi + croato + hungaro + armeniano + interlingua + indonesiano + Interlingue + islandese + italiano + japonese + javanese + georgiano + Cambodiano + kannada + coreano + kurdo + kirghizo + latino + lingala + laotiano + lithuano + letton + macedone + malayalam + mongolico + marathi + malay + maltese + nepalese + nederlandese + norvegiano (nynorsk) + norvegiano + occitano + oriya + punjabi + polonese + pashto + portugese + romaniano + russo + sanscrito + sindhi + serbocroate + sinhalese + slovaco + sloveno + somali + albanese + serbo + sesotho + sundanese + svedese + swahili + tamil + telugu + thai + tigrinya + turkmeno + Klingon + turco + twi + Uyghur + ukrainiano + urdu + uzbeco + vietnamese + xhosa + yiddish + zulu + + + Emiratos Arabe Unite + Afghanistan + Antigua e Barbuda + Albania + Armenia + Antillas nederlandese + Angola + Antarctica + Argentina + Samoa american + Austria + Australia + Azerbaidzhan + Bosnia e Herzegovina + Bangladesh + Belgica + Burkina Faso + Bulgaria + Burundi + Benin + Bolivia + Brasil + Bahamas + Bhutan + Insula de Bouvet + Botswana + Bielorussia + Canada + Republica African Central + Congo + Suissa + Insulas Cook + Chile + Camerun + China + Colombia + Cuba + Insula de Natal + Cypro + Republica Tchec + Germania + Danmark + Republica Dominican + Algeria + Ecuador + Estonia + Egypto + Sahara occidental + Eritrea + Espania + Ethiopia + Finlandia + Micronesia + Insulas Feroe + Francia + Gabon + Regno Unite + Georgia + Guyana francese + Ghana + Groenlandia + Gambia + Guinea + Guinea equatorial + Grecia + Guinea-Bissau + Honduras + Croatia + Haiti + Hungaria + Indonesia + Irlanda + Israel + India + Territorio oceanic britanno-indian + Irak + Iran + Islanda + Italia + Jordania + Japon + Kenya + Kirghizistan + Cambodgia + Kiribati + Comoros + Sancte Christophoro e Nevis + Corea del Nord + Corea del Sud + Insulas de Caiman + Kazakhstan + Libano + Sancte Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Lettonia + Libya + Marocco + Moldavia + Madagascar + Insulas Marshall + Macedonia + Mali + Birmania/Myanmar + Mongolia + Insulas Marianna del Nord + Mauritania + Malawi + Mexico + Malaysia + Mozambique + Namibia + Nove Caledonia + Niger + Insula Norfolk + Nigeria + Nicaragua + Nederlandia + Norvegia + Nepal + Nove Zelanda + Oman + Peru + Polynesia francese + Papua Nove Guinea + Philippinas + Pakistan + Polonia + Portugal + Paraguay + Romania + Ruanda + Arabia Saudita + Insulas Solomon + Seychelles + Sudan + Svedia + Slovenia + Slovachia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + Sudan del Sud + Syria + Swazilandia + Insulas Turcos e Caicos + Tchad + Territorios meridional francese + Togo + Thailandia + Tadzhikistan + Tokelau + Timor del Est + Turkmenistan + Tunisia + tonga + Turchia + Trinidad e Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + Statos Unite + Uruguay + Uzbekistan + Sancte Vincente e le Grenadinas + Venezuela + Vanuatu + Samoa + Yemen + Africa del Sud + Zambia + Zimbabwe + + + + [a b c {ch} d e f g h i j k l m n o p {ph} q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG yy/MM/dd + + + + + + + + + jan + feb + mar + apr + mai + jun + jul + aug + sep + oct + nov + dec + + + januario + februario + martio + april + maio + junio + julio + augusto + septembre + octobre + novembre + decembre + + + + + + + dom + lun + mar + mer + jov + ven + sab + + + dominica + lunedi + martedi + mercuridi + jovedi + venerdi + sabbato + + + + + + + T1 + T2 + T3 + T4 + + + 1-me trimestre + 2-nde trimestre + 3-tie trimestre + 4-te trimestre + + + + + + + a.m. + p.m. + + + + + + ante Christo + post Christo + + + a.Chr. + p.Chr. + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + Capo Verde + + + Djibuti + + + Granada + + + Hongkong + + + Luxemburg + + + Martinica + + + Mauritio + + + Maldivas + + + Insula Pitcairn + + + Porto Rico + + + Mayotta + + + + + + , + . + + + + Dollares australian + + + Dollares canadian + + + Francos suisse + + + Marcos german + + + Coronas danese + + + Euros + + + francos francese + + + Libras sterling britannic + + + Yen japonese + + + Coronas norvegian + + + Coronas svedese + + + Dollares statounitese + + + + + diff --git a/library/Zend/Locale/Data/ia_FR.xml b/library/Zend/Locale/Data/ia_FR.xml new file mode 100755 index 000000000..73beb318c --- /dev/null +++ b/library/Zend/Locale/Data/ia_FR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/id.xml b/library/Zend/Locale/Data/id.xml new file mode 100755 index 000000000..69eeb4843 --- /dev/null +++ b/library/Zend/Locale/Data/id.xml @@ -0,0 +1,5984 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Afar + Abkhaz + Aceh + Acoli + Adangme + Adygei + Avesta + Afrikaans + Afrihili + Aghem + Ainu + Akan + Akkadia + Aleut + Altai Selatan + Amharik + Aragon + Inggris Kuno + Angika + Arab + Arab Standar Modern + Aram + Araukan + Arapaho + Arawak + Assam + Asu + Astur + Avar + Awadhi + Aymara + Azerbaijan + Azeri + Bashkir + Baluchi + Bali + Basa + Bamun + Ghomala + Belarusia + Beja + Bemba + Bena + Bafut + Bulgar + Bhojpuri + Bislama + Bikol + Bini + Kom + Siksika + Bambara + Bengali + Tibet + Breton + Braj + Bodo + Bosnia + Akoose + Buriat + Bugis + Bulu + Blin + Medumba + Katalan + Kado + Karib + Cayuga + Atsam + Chechen + Sebuano + Kiga + Chamorro + Chibcha + Chagatai + Chuuke + Mari + Jargon Chinook + Koktaw + Chipewyan + Cherokee + Cheyenne + Kurdi Sorani + Korsika + Koptik + Kree + Tatar Krimea + Cheska + Kashubia + Bahasa Gereja Slavonia + Chuvash + Welsh + Dansk + Dakota + Dargwa + Taita + Jerman + Jerman Austria + Jerman Tinggi Swiss + Delaware + Slave + Dogrib + Dinka + Zarma + Dogri + Sorbia Rendah + Duala + Belanda Tengah + Divehi + Jola-Fonyi + Dyula + Dzongkha + Dazaga + Embu + Ewe + Efik + Mesir Kuno + Ekajuk + Yunani + Elam + Inggris + Inggris Australia + Inggris Kanada + Inggris Inggris + Inggris U.K. + Inggris Amerika + Inggris A.S. + Inggris Abad Pertengahan + Esperanto + Spanyol + Spanyol Amerika Latin + Spanyol Eropa + Spanyol Meksiko + Esti + Bask + Ewondo + Persia + Fang + Fanti + Fula + Suomi + Filipino + Fiji + Faro + Fon + Prancis + Prancis Kanada + Prancis Swiss + Prancis Abad Pertengahan + Prancis Kuno + Frisia Utara + Frisia Timur + Friuli + Frisia Barat + Irlandia + Ga + Gayo + Gbaya + Gaelik Skotlandia + Geez + Gilbert + Galisia + Jerman Abad Pertengahan + Guarani + Jerman Kuno + Gondi + Gorontalo + Gothik + Grebo + Yunani Kuno + Jerman Swiss + Gujarati + Gusii + Manx + Gwich'in + Hausa + Haida + Hawaii + Ibrani + Hindi + Hiligaynon + Hitit + Hmong + Hiri Motu + Kroasia + Sorbia Atas + Haiti + Hungaria + Hupa + Armenia + Herero + Interlingua + Iban + Ibibio + Bahasa Indonesia + Interlingue + Igbo + Sichuan Yi + Inupiak + Iloko + Ingushetia + Ido + Islandia + Italia + Inuktitut + Jepang + Lojban + Ngomba + Machame + Ibrani-Persia + Ibrani-Arab + Jawa + Georgia + Kara-Kalpak + Kabyle + Kachin + Jju + Kamba + Kawi + Kabardi + Kanembu + Tyap + Makonde + Kabuverdianu + Koro + Kongo + Khasi + Khotan + Koyra Chiini + Kikuyu + Kuanyama + Kazakh + Kako + Kalaallisut + Kalenjin + Khmer + Kimbundu + Kannada + Korea + Konkani + Kosre + Kpelle + Kanuri + Karachai Balkar + Karelia + Kuruk + Kashmir + Shambala + Bafia + Dialek Kolsch + Kurdi + Kumyk + Kutenai + Komi + Kornish + Kirgiz + Latin + Ladino + Langi + Lahnda + Lamba + Luksemburg + Lezghia + Ganda + Limburgia + Lingala + Lao + Mongo + Lozi + Lituavi + Luba-Katanga + Luba-Lulua + Luiseno + Lunda + Luo + Mizo + Luyia + Latvi + Madura + Mafa + Magahi + Maithili + Makasar + Mandingo + Masai + Maba + Moksha + Mandar + Mende + Meru + Morisien + Malagasi + Irlandia Abad Pertengahan + Makhuwa-Meetto + meta' + Marshall + Maori + Mikmak + Minangkabau + Makedonia + Malayalam + Mongolia + Manchuria + Manipuri + Mohawk + Mossi + Marathi + Melayu + Malta + Mundang + Beberapa Bahasa + Bahasa Muskogee + Miranda + Marwari + Burma + Myene + Eryza + Nauru + Neapolitan + Nama + Bokmål Norwegia + Ndebele Utara + Jerman Rendah + Nepali + Newari + Ndonga + Nias + Niuea + Belanda + Flemish + Kwasio + Nynorsk Norwegia + Ngiemboon + Norwegia + Nogai + Norse Kuno + N'Ko + Ndebele Selatan + Sotho Utara + Nuer + Navajo + Newari Klasik + Nyanja + Nyamwezi + Nyankole + Nyoro + Nzima + Ositania + Ojibwa + Oromo + Oriya + Ossetia + Osage + Turki Osmani + Punjabi + Pangasina + Pahlevi + Pampanga + Papiamento + Palau + Persia Kuno + Funisia + Pali + Polski + Pohnpeia + Provencal Lama + Pashto + Pushto + Portugis + Portugis Brasil + Portugis Eropa + Quechua + Rajasthani + Rapanui + Rarotonga + Reto-Roman + Rundi + Rumania + Moldavia + Rombo + Romani + Root + Rusia + Makedo-Rumania + Kinyarwanda + Rwa + Sanskerta + Sandawe + Sakha + Aram Samaria + Samburu + Sasak + Santali + Ngambai + Sangu + Sardinia + Sisilia + Skotlandia + Sindhi + Sami Utara + Seneca + Sena + Selkup + Koyraboro Senni + Sango + Irlandia Kuno + Serbo-Kroasia + Tachelhit + Shan + Arab Suwa + Sinhala + Sidamo + Slovak + Sloven + Samoa + Sami Selatan + Lule Sami + Inari Sami + Skolt Sami + Shona + Soninke + Somali + Sogdien + Albania + Serb + Sranan Tongo + Serer + Swati + Saho + Sotho Selatan + Sunda + Sukuma + Susu + Sumeria + Swedia + Swahili + Komoria + Kongo Swahili + Suriah Klasik + Suriah + Tamil + Telugu + Timne + Teso + Tereno + Tetun + Tajik + Thai + Tigrinya + Tigre + Tiv + Turkmen + Tokelau + Tagalog + Klingon + Tlingit + Tamashek + Tswana + Tonga + Nyasa Tonga + Tok Pisin + Turki + Taroko + Tsonga + Tsimshia + Tatar + Tumbuka + Tuvalu + Twi + Tasawaq + Tahiti + Tuvinia + Tamazight Maroko Tengah + Udmurt + Uyghur + Uighur + Ugarit + Ukraina + Umbundu + Bahasa Tidak Dikenal + Urdu + Uzbek + Vai + Venda + Vietnam + Volapuk + Votia + Vunjo + Walloon + Walser + Walamo + Warai + Washo + Wolof + Kalmuk + Xhosa + Soga + Yao + Yapois + Yangben + Yemba + Yiddish + Yoruba + Kanton + Zhuang + Zapotek + Blissymbol + Zenaga + Tamazight Maroko Standar + China + China (Aksara Sederhana) + China (Aksara Tradisional) + Zulu + Zuni + Tidak ada konten linguistik + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dunia + Afrika + Amerika Utara + Amerika Selatan + Oseania + Afrika Barat + Amerika Tengah + Afrika Timur + Afrika Utara + Afrika Tengah + Afrika Bagian Selatan + Amerika + Amerika Bagian Utara + Kepulauan Karibia + Asia Timur + Asia Selatan + Asia Tenggara + Eropa Selatan + Australasia + Melanesia + Wilayah Mikronesia + Polinesia + Asia + Asia Tengah + Asia Barat + Eropa + Eropa Timur + Eropa Utara + Eropa Barat + Amerika Latin + Pulau Ascension + Andorra + Uni Emirat Arab + Afganistan + Antigua dan Barbuda + Anguilla + Albania + Armenia + Antilla Belanda + Angola + Antarktika + Argentina + Samoa Amerika + Austria + Australia + Aruba + Kepulauan Aland + Azerbaijan + Bosnia dan Herzegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthelemy + Bermuda + Brunei + Bolivia + Karibia Belanda + Brasil + Bahama + Bhutan + Pulau Bouvet + Botswana + Belarus + Belize + Kanada + Kepulauan Cocos + Kongo - Kinshasa + Kongo (RDK) + Republik Afrika Tengah + Kongo - Brazzaville + Kongo (Republik) + Swiss + Cote d'Ivoire + Ivory Coast + Kepulauan Cook + Cile + Kamerun + China + Kolombia + Pulau Clipperton + Kosta Rika + Kuba + Tanjung Verde + Curaçao + Pulau Christmas + Siprus + Republik Cheska + Jerman + Diego Garcia + Jibuti + Denmark + Dominika + Republik Dominika + Aljazair + Ceuta dan Melilla + Ekuador + Estonia + Mesir + Sahara Barat + Eritrea + Spanyol + Etiopia + Uni Eropa + Finlandia + Fiji + Kepulauan Malvinas + Kepulauan Malvinas (Falkland) + Mikronesia + Kepulauan Faroe + Prancis + Gabon + Inggris + GB + Grenada + Georgia + Guyana Prancis + Guernsey + Ghana + Gibraltar + Grinlandia + Gambia + Guinea + Guadeloupe + Guinea Ekuatorial + Yunani + Georgia Selatan dan Kepulauan Sandwich Selatan + Guatemala + Guam + Guinea-Bissau + Guyana + Hong Kong SAR China + Hong Kong + Pulau Heard dan Kepulauan McDonald + Honduras + Kroasia + Haiti + Hungaria + Kepulauan Canary + Indonesia + Irlandia + Israel + Pulau Man + India + Wilayah Inggris di Samudra Hindia + Irak + Iran + Islandia + Italia + Jersey + Jamaika + Yordania + Jepang + Kenya + Kirgistan + Kamboja + Kiribati + Komoro + Saint Kitts dan Nevis + Korea Utara + Korea Selatan + Kuwait + Kepulauan Cayman + Kazakstan + Laos + Lebanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Luksemburg + Latvia + Libia + Maroko + Monako + Moldova + Montenegro + Saint Martin + Madagaskar + Kepulauan Marshall + Makedonia + Makedonia (BRY) + Mali + Myanmar (Burma) + Mongolia + Makau SAR China + Makau + Kepulauan Mariana Utara + Martinik + Mauritania + Montserrat + Malta + Mauritius + Maladewa + Malawi + Meksiko + Malaysia + Mozambik + Namibia + Kaledonia Baru + Niger + Kepulauan Norfolk + Nigeria + Nikaragua + Belanda + Norwegia + Nepal + Nauru + Niue + Selandia Baru + Oman + Panama + Peru + Polinesia Prancis + Papua Nugini + Filipina + Pakistan + Polandia + Saint Pierre dan Miquelon + Kepulauan Pitcairn + Puerto Riko + Wilayah Palestina + Palestina + Portugal + Palau + Paraguay + Qatar + Oseania Luar + Réunion + Rumania + Serbia + Rusia + Rwanda + Arab Saudi + Kepulauan Solomon + Seychelles + Sudan + Swedia + Singapura + Saint Helena + Slovenia + Kepulauan Svalbard dan Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + Sudan Selatan + Sao Tome dan Principe + El Salvador + Sint Maarten + Suriah + Swaziland + Tristan da Cunha + Kepulauan Turks dan Caicos + Cad + Wilayah Kutub Selatan Prancis + Togo + Thailand + Tajikistan + Tokelau + Timor Leste + Turkimenistan + Tunisia + Tonga + Turki + Trinidad dan Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + Kepulauan Terluar A.S. + Amerika Serikat + A.S. + Uruguay + Uzbekistan + Vatikan + Saint Vincent dan Grenadines + Venezuela + Kepulauan Virgin Inggris + Kepulauan Virgin A.S. + Vietnam + Vanuatu + Kepulauan Wallis dan Futuna + Samoa + Kosovo + Yaman + Mayotte + Afrika Selatan + Zambia + Zimbabwe + Wilayah Tidak Dikenal + + + Ortografi Jerman Tradisional + Ortografi Resia Standar + Ortografi Jerman 1996 + Prancis Pertengahan Akhir sampai 1606 + Prancis Modern Awal + Akademik + ALA-LC Latin, edisi 1997 + Dialek Aluku + Armenia Timur + Armenia Barat + Alfabet Latin Turki Terpadu + BISKAY + Dialek San Giorgio/Bila + Boontling + Fonetik IPA + Fonetik UPA + Hepburn Latin + NORWEDIA TINGGI + Ortografi Umum + Dialek Lipovaz Resia + Monoton + Dialek Ndyuka + Dialek Natiso + Dialek Gniva/Njiva + Dialek Oseacco/Osojane + Dialek Pamaka + Pinyin Latin + Politon + Komputer + Ortografi Revisi + Resia + Saho + Inggris Standar Skotlandia + Skaus + Dialek Stolvizza/Solbica + Ortografi Taraskievica + Ortografi Terpadu + Ortografi Revisi Terpadu + Valencia + Wade-Giles Latin + + + Kalender + Penyortiran Abaikan Simbol + Penyortiran Aksen Terbalik + Pengurutan Huruf Besar/Huruf Kecil + Penyortiran Peka Huruf Besar + Penyortiran Kana + Urutan Sortir + Penyortiran Dinormalisasi + Penyortiran Numerik + Kekuatan Penyortiran + Mata Uang + Angka + Zona Waktu + Varian Lokal + Sortir Sebagai Simbol + Penggunaan Pribadi + + + Angka Arab Timur + Angka Arab Timur Diperluas + Angka Armenia + Angka Huruf Kecil Armenia + Angka Bali + Angka Bengali + Urutan Sortir China Tradisional - Big5 + Kalender Buddha + Angka Cham + Kalender China + Kalender Koptik + Angka Devanagari + Urutan Sortir Kamus + Urutan Sortir Unicode Default + Aturan Pengurutan Eropa + Angka Etiopia + Kalender Etiopia + Kalender Amete Alem Etiopia + Angka Finansial + Angka Lebar Penuh + Urutan Sortir China Aks. Sederhana - GB2312 + Angka Georgia + Kalender Gregorian + Angka Yunani + Angka Yunani Huruf Kecil + Angka Gujarati + Angka Gurmukhi + Angka Desimal China + Angka China Sederhana + Angka Keuangan China Sederhana + Angka China Tradisional + Angka Keuangan China Tradisional + Angka Ibrani + Kalender Ibrani + Sortir Semua + Kalender Nasional India + Kalender Islam + Kalender Sipil Islam + Kalender Jepang + Angka Jawa + Angka Jepang + Angka Keuangan Jepang + Angka Kayah Li + Angka Khmer + Angka Kannada + Angka Tai Tham Hora + Angka Tai Tham Tham + Angka Laos + Angka Latin + Angka Lepcha + Angka Limbu + Sortir Huruf Kecil Dahulu + Angka Malayalam + Angka Mongolia + Angka Meetei Mayek + Angka Myanmar + Angka Myanmar Shan + Digit Asli + Angka N'Ko + Sortir Aksen Secara Normal + Sortir Urutan Ukuran Huruf Normal + Sortir Tidak Peka Huruf Besar + Sortir Kana Secara Terpisah + Sortir Tanpa Normalisasi + Sortir Digit Satu Per Satu + Sortir Simbol + Angka Ol Chiki + Angka Oriya + Kalender Persia + Urutan Sortir Buku Telepon + Urutan Sortir Fonetik + Urutan Sortir Pinyin + Sortir Huruf Dasar Saja + Sortir Aksen/Ukuran Huruf/Lebar/Kana + Urutan Sortir yang Diubah Bentuknya + Kalendar Minguo + Angka Romawi + Angka Huruf Kecil Romawi + Angka Saurashtra + Pencarian Tujuan Umum + Pencarian Menurut Konsonan Awal Hangul + Sortir Aksen + Sortir Abaikan Simbol + Urutan Sortir Standar + Urutan Sortir Guratan + Angka Sunda + Angka Tai Lue Baru + Angka Tamil Tradisional + Angka Tamil + Angka Telugu + Sortir Aksen/Ukuran Huruf/Lebar + Angka Thai + Angka Tibet + Urutan Sortir Tradisional + Angka Tradisional + Urutan Sortir Guratan Radikal + Sortir Huruf Besar Dahulu + Angka Vai + Sortir Aksen Terbalik + Sortir Peka Huruf Besar + Sortir Kana Secara Berbeda + Sortir Unicode Dinormalisasi + Sortir Digit Secara Numerik + + + BGN + Angka + Nada + UNGEGN + Aksen + Lebar penuh + Lebar separuh + Jamo + Pinyin + Penerbitan + + + Metrik + BR + AS + + + Bahasa: {0} + Skrip: {0} + Wilayah: {0} + + + + + titlecase-firstword + titlecase-firstword + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [å q x z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [‐ – — , ; \: ! ? . … ' ‘ ’ “ ” ( ) \[ \] /] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + G y + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + + EEEE, U MMMM dd + + + + + U MMMM d + + + + + U MMM d + + + + + y-M-d + + + + + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm.ss + y G + y G + M/y G + d/M/y G + E, d/M/y G + MMM y G + d MMM y G + E, d MMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y-y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + d/M/y – d/M/y GGGGG + d/M/y – d/M/y GGGGG + d/M/y – d/M/y GGGGG + + + E, d/M/y – E, d/M/y GGGGG + E, d/M/y – E, d/M/y GGGGG + E, d/M/y – E, d/M/y GGGGG + + + MMM–MMM y G + MMM y – MMM y G + + + d-d MMM y G + d MMM – d MMM y G + d MMM y – d MMM y G + + + E, d MMM – E, d MMM y G + E, d MMM – E, d MMM y G + E, d MMM y – E, d MMM y G + + + MMMM – MMMM y G + MMMM y – MMMM y G + + + + + + + + + Jan + Feb + Mar + Apr + Mei + Jun + Jul + Agt + Sep + Okt + Nov + Des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januari + Februari + Maret + April + Mei + Juni + Juli + Agustus + September + Oktober + November + Desember + + + + + Jan + Feb + Mar + Apr + Mei + Jun + Jul + Agt + Sep + Okt + Nov + Des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januari + Februari + Maret + April + Mei + Juni + Juli + Agustus + September + Oktober + November + Desember + + + + + + + Min + Sen + Sel + Rab + Kam + Jum + Sab + + + M + S + S + R + K + J + S + + + Min + Sen + Sel + Rab + Kam + Jum + Sab + + + Minggu + Senin + Selasa + Rabu + Kamis + Jumat + Sabtu + + + + + Min + Sen + Sel + Rab + Kam + Jum + Sab + + + M + S + S + R + K + J + S + + + Min + Sen + Sel + Rab + Kam + Jum + Sab + + + Minggu + Senin + Selasa + Rabu + Kamis + Jumat + Sabtu + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + Kuartal ke-1 + Kuartal ke-2 + Kuartal ke-3 + Kuartal ke-4 + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + Kuartal ke-1 + Kuartal ke-2 + Kuartal ke-3 + Kuartal ke-4 + + + + + + + AM + PM + + + AM + PM + + + + + + SM + M + + + SM + SEU + M + EU + + + SM + M + + + + + + EEEE, dd MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/yy + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E h.mm a + E HH.mm + E h.mm.ss a + E HH.mm.ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm.ss + y + M/y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y-y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d-d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + + AM + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + SAKA + + + + + + + + Muh. + Saf. + Rab. I + Rab. II + Jum. I + Jum. II + Raj. + Sha. + Ram. + Syaw. + Dhuʻl-Q. + Dhuʻl-H. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rajab + Sya'ban + Ramadhan + Syawal + Dhuʻl-Qiʻdah + Dhuʻl-Hijjah + + + + + Muh. + Saf. + Rab. I + Rab. II + Jum. I + Jum. II + Raj. + Sha. + Ram. + Syaw. + Dhuʻl-Q. + Dhuʻl-H. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rajab + Sya'ban + Ramadhan + Syawal + Dhuʻl-Qiʻdah + Dhuʻl-Hijjah + + + + + + AH + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + y G + + + + + + + Taika (645-650) + Hakuchi (650-671) + Hakuhō (672-686) + Shuchō (686-701) + Taihō (701-704) + Keiun (704-708) + Wadō (708-715) + Reiki (715-717) + Yōrō (717-724) + Jinki (724-729) + Tempyō (729-749) + Tempyō-kampō (749-749) + Tempyō-shōhō (749-757) + Tempyō-hōji (757-765) + Temphō-jingo (765-767) + Jingo-keiun (767-770) + Hōki (770-780) + Ten-ō (781-782) + Enryaku (782-806) + Daidō (806-810) + Kōnin (810-824) + Tenchō (824-834) + Jōwa (834-848) + Kajō (848-851) + Ninju (851-854) + Saiko (854-857) + Tennan (857-859) + Jōgan (859-877) + Genkei (877-885) + Ninna (885-889) + Kampyō (889-898) + Shōtai (898-901) + Engi (901-923) + Enchō (923-931) + Shōhei (931-938) + Tengyō (938-947) + Tenryaku (947-957) + Tentoku (957-961) + Ōwa (961-964) + Kōhō (964-968) + Anna (968-970) + Tenroku (970-973) + Ten-en (973-976) + Jōgen (976-978) + Tengen (978-983) + Eikan (983-985) + Kanna (985-987) + Ei-en (987-989) + Eiso (989-990) + Shōryaku (990-995) + Chōtoku (995-999) + Chōhō (999-1004) + Kankō (1004-1012) + Chōwa (1012-1017) + Kannin (1017-1021) + Jian (1021-1024) + Manju (1024-1028) + Chōgen (1028-1037) + Chōryaku (1037-1040) + Chōkyū (1040-1044) + Kantoku (1044-1046) + Eishō (1046-1053) + Tengi (1053-1058) + Kōhei (1058-1065) + Jiryaku (1065-1069) + Enkyū (1069-1074) + Shōho (1074-1077) + Shōryaku (1077-1081) + Eiho (1081-1084) + Ōtoku (1084-1087) + Kanji (1087-1094) + Kaho (1094-1096) + Eichō (1096-1097) + Shōtoku (1097-1099) + Kōwa (1099-1104) + Chōji (1104-1106) + Kashō (1106-1108) + Tennin (1108-1110) + Ten-ei (1110-1113) + Eikyū (1113-1118) + Gen-ei (1118-1120) + Hoan (1120-1124) + Tenji (1124-1126) + Daiji (1126-1131) + Tenshō (1131-1132) + Chōshō (1132-1135) + Hoen (1135-1141) + Eiji (1141-1142) + Kōji (1142-1144) + Tenyō (1144-1145) + Kyūan (1145-1151) + Ninpei (1151-1154) + Kyūju (1154-1156) + Hogen (1156-1159) + Heiji (1159-1160) + Eiryaku (1160-1161) + Ōho (1161-1163) + Chōkan (1163-1165) + Eiman (1165-1166) + Nin-an (1166-1169) + Kaō (1169-1171) + Shōan (1171-1175) + Angen (1175-1177) + Jishō (1177-1181) + Yōwa (1181-1182) + Juei (1182-1184) + Genryuku (1184-1185) + Bunji (1185-1190) + Kenkyū (1190-1199) + Shōji (1199-1201) + Kennin (1201-1204) + Genkyū (1204-1206) + Ken-ei (1206-1207) + Shōgen (1207-1211) + Kenryaku (1211-1213) + Kenpō (1213-1219) + Shōkyū (1219-1222) + Jōō (1222-1224) + Gennin (1224-1225) + Karoku (1225-1227) + Antei (1227-1229) + Kanki (1229-1232) + Jōei (1232-1233) + Tempuku (1233-1234) + Bunryaku (1234-1235) + Katei (1235-1238) + Ryakunin (1238-1239) + En-ō (1239-1240) + Ninji (1240-1243) + Kangen (1243-1247) + Hōji (1247-1249) + Kenchō (1249-1256) + Kōgen (1256-1257) + Shōka (1257-1259) + Shōgen (1259-1260) + Bun-ō (1260-1261) + Kōchō (1261-1264) + Bun-ei (1264-1275) + Kenji (1275-1278) + Kōan (1278-1288) + Shōō (1288-1293) + Einin (1293-1299) + Shōan (1299-1302) + Kengen (1302-1303) + Kagen (1303-1306) + Tokuji (1306-1308) + Enkei (1308-1311) + Ōchō (1311-1312) + Shōwa (1312-1317) + Bunpō (1317-1319) + Genō (1319-1321) + Genkyō (1321-1324) + Shōchū (1324-1326) + Kareki (1326-1329) + Gentoku (1329-1331) + Genkō (1331-1334) + Kemmu (1334-1336) + Engen (1336-1340) + Kōkoku (1340-1346) + Shōhei (1346-1370) + Kentoku (1370-1372) + Bunchũ (1372-1375) + Tenju (1375-1379) + Kōryaku (1379-1381) + Kōwa (1381-1384) + Genchũ (1384-1392) + Meitoku (1384-1387) + Kakei (1387-1389) + Kōō (1389-1390) + Meitoku (1390-1394) + Ōei (1394-1428) + Shōchō (1428-1429) + Eikyō (1429-1441) + Kakitsu (1441-1444) + Bun-an (1444-1449) + Kyōtoku (1452-1455) + Kōshō (1455-1457) + Chōroku (1457-1460) + Kanshō (1460-1466) + Bunshō (1466-1467) + Ōnin (1467-1469) + Bunmei (1469-1487) + Chōkyō (1487-1489) + Entoku (1489-1492) + Meiō (1492-1501) + Bunki (1501-1504) + Eishō (1504-1521) + Taiei (1521-1528) + Kyōroku (1528-1532) + Tenmon (1532-1555) + Kōji (1555-1558) + Eiroku (1558-1570) + Genki (1570-1573) + Tenshō (1573-1592) + Bunroku (1592-1596) + Keichō (1596-1615) + Genwa (1615-1624) + Kan-ei (1624-1644) + Shōho (1644-1648) + Keian (1648-1652) + Shōō (1652-1655) + Meiryaku (1655-1658) + Manji (1658-1661) + Kanbun (1661-1673) + Enpō (1673-1681) + Tenwa (1681-1684) + Jōkyō (1684-1688) + Genroku (1688-1704) + Hōei (1704-1711) + Shōtoku (1711-1716) + Kyōhō (1716-1736) + Genbun (1736-1741) + Kanpō (1741-1744) + Enkyō (1744-1748) + Kan-en (1748-1751) + Hōryaku (1751-1764) + Meiwa (1764-1772) + An-ei (1772-1781) + Tenmei (1781-1789) + Kansei (1789-1801) + Kyōwa (1801-1804) + Bunka (1804-1818) + Bunsei (1818-1830) + Tenpō (1830-1844) + Kōka (1844-1848) + Kaei (1848-1854) + Ansei (1854-1860) + Man-en (1860-1861) + Bunkyū (1861-1864) + Genji (1864-1865) + Keiō (1865-1868) + Meiji + Taishō + Shōwa + Heisei + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + G y + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + AP + + + + + + + Sebelum R.O.C. + R.O.C. + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + G y + + + + + + + Era + + + Tahun + tahun lalu + tahun ini + tahun depan + + Dalam {0} tahun + + + {0} tahun yang lalu + + + + Bulan + bulan lalu + bulan ini + Bulan berikutnya + + Dalam {0} bulan + + + {0} bulan yang lalu + + + + Minggu + minggu lalu + minggu ini + Minggu berikutnya + + Dalam {0} minggu + + + {0} minggu yang lalu + + + + Hari + kemarin lusa + kemarin + hari ini + besok + lusa + + Dalam {0} hari + + + {0} hari yang lalu + + + + Hari dalam Seminggu + + + Minggu lalu + Minggu ini + Minggu berikutnya + + + Senin lalu + Senin ini + Senin berikutnya + + + Selasa lalu + Selasa ini + Selasa berikutnya + + + Rabu lalu + Rabu ini + Rabu berikutnya + + + Kamis lalu + Kamis ini + Kamis berikutnya + + + Jumat lalu + Jumat ini + Jumat berikutnya + + + Sabtu lalu + Sabtu ini + Sabtu berikutnya + + + AM/PM + + + Jam + + Dalam {0} jam + + + {0} jam yang lalu + + + + Menit + + Dalam {0} menit + + + {0} menit yang lalu + + + + Detik + sekarang + + Dalam {0} detik + + + {0} detik yang lalu + + + + Zona Waktu + + + + +HH.mm;-HH.mm + GMT{0} + GMT + Waktu {0} + Waktu Terang {0} + Waktu Standar {0} + {1} ({0}) + + Tidak Dikenal + + + Anguila + + + Dumont d’Urville + + + Kordoba + + + Wina + + + Brussel + + + Saint Barthélemy + + + Teluk Cambridge + + + Atikokan + + + Teluk Thunder + + + Teluk Goose + + + Teluk Glace + + + St. John’s + + + Kosta Rika + + + Tanjung Verde + + + Curaçao + + + Nikosia + + + Praha + + + Jibouti + + + Kopenhagen + + + Dominika + + + Aljir + + + Kairo + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + Musim Panas Inggris + + + + Akra + + + Nuuk + + + Ittoqqortoormiit + + + Konakri + + + Athena + + + Georgia Selatan + + + + Musim Panas Irlandia + + + + Kolkata + + + Bagdad + + + Teheran + + + Roma + + + Jamaika + + + Komoro + + + St. Kitts + + + Aktau + + + Aktobe + + + St. Lucia + + + Kolombo + + + Luksemburg + + + Monako + + + Kishinev + + + Makau + + + Martinik + + + Maladewa + + + Kathmandu + + + Muskat + + + Warsawa + + + Puerto Riko + + + Lisboa + + + Asunción + + + Réunion + + + Bukares + + + Beograd + + + Moskwa + + + Riyad + + + Guadalkanal + + + Khartum + + + Singapura + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damaskus + + + Uzhhorod + + + Zaporizhia + + + Beulah, Dakota Utara + + + New Salem, Dakota Utara + + + Center, Dakota Utara + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Vatikan + + + St. Vincent + + + Karakas + + + St. Thomas + + + Kota Ho Chi Minh + + + + Waktu Acre + Waktu Standar Acre + Waktu Musim Panas Acre + + + + + Waktu Afganistan + + + + + Waktu Afrika Tengah + + + + + Waktu Afrika Timur + + + + + Waktu Standar Afrika Selatan + + + + + Waktu Afrika Barat + Waktu Standar Afrika Barat + Waktu Musim Panas Afrika Barat + + + + + Waktu Alaska + Waktu Standar Alaska + Waktu Terang Alaska + + + + + Waktu Almaty + Waktu Standar Almaty + Waktu Musim Panas Almaty + + + + + Waktu Amazon + Waktu Standar Amazon + Waktu Musim Panas Amazon + + + + + Waktu Tengah + Waktu Standar Tengah + Waktu Terang Hari Tengah + + + + + Waktu Timur + Waktu Standar Timur + Waktu Terang Hari Timur + + + + + Waktu Pegunungan + Waktu Standar Pegunungan + Waktu Terang Hari Pegunungan + + + + + Waktu Pasifik + Waktu Standar Pasifik + Waktu Terang Hari Pasifik + + + + + Waktu Anadyr + Waktu Standar Anadyr + Waktu Musim Panas Anadyr + + + + + Waktu Aqtau + Waktu Standar Aqtau + Waktu Musim Panas Aqtau + + + + + Waktu Aqtobe + Waktu Standar Aqtobe + Waktu Musim Panas Aqtobe + + + + + Waktu Arab + Waktu Standar Arab + Waktu Terang Arab + + + + + Waktu Argentina + Waktu Standar Argentina + Waktu Musim Panas Argentina + + + + + Waktu Argentina Bagian Barat + Waktu Standar Argentina Bagian Barat + Waktu Musim Panas Argentina Bagian Barat + + + + + Waktu Armenia + Waktu Standar Armenia + Waktu Musim Panas Armenia + + + + + Waktu Atlantik + Waktu Standar Atlantik + Waktu Terang Atlantik + + + + + Waktu Tengah Australia + Waktu Standar Tengah Australia + Waktu Terang Tengah Australia + + + + + Waktu Barat Tengah Australia + Waktu Standar Barat Tengah Australia + Waktu Terang Barat Tengah Australia + + + + + Waktu Timur Australia + Waktu Standar Timur Australia + Waktu Terang Timur Australia + + + + + Waktu Australia Barat + Waktu Standar Barat Australia + Waktu Terang Barat Australia + + + + + Waktu Azerbaijan + Waktu Standar Azerbaijan + Waktu Musim Panas Azerbaijan + + + + + Waktu Azores + Waktu Standar Azores + Waktu Musim Panas Azores + + + + + Waktu Bangladesh + Waktu Standar Bangladesh + Waktu Musim Panas Bangladesh + + + + + Waktu Bhutan + + + + + Waktu Bolivia + + + + + Waktu Brasil + Waktu Standar Brasil + Waktu Musim Panas Brasil + + + + + Waktu Brunei Darussalam + + + + + Waktu Tanjung Verde + Waktu Standar Tanjung Verde + Waktu Musim Panas Tanjung Verde + + + + + Waktu Casey + + + + + Waktu Chamorro + + + + + Waktu Chatham + Waktu Standar Chatham + Waktu Terang Chatham + + + + + Waktu Cile + Waktu Standar Cile + Waktu Musim Panas Cile + + + + + Waktu China + Waktu Standar China + Waktu Terang China + + + + + Waktu Choibalsan + Waktu Standar Choibalsan + Waktu Musim Panas Choibalsan + + + + + Waktu Pulau Natal + + + + + Waktu Kepulauan Cocos + + + + + Waktu Kolombia + Waktu Standar Kolombia + Waktu Musim Panas Kolombia + + + + + Waktu Kep. Cook + Waktu Standar Kep. Cook + Waktu Tengah Musim Panas Kep. Cook + + + + + Waktu Kuba + Waktu Standar Kuba + Waktu Musim Panas Kuba + + + + + Waktu Davis + + + + + Waktu Dumont-d’Urville + + + + + Waktu Timor Leste + + + + + Waktu Pulau Paskah + Waktu Standar Pulau Paskah + Waktu Musim Panas Pulau Paskah + + + + + Waktu Ekuador + + + + + Waktu Eropa Tengah + Waktu Standar Eropa Tengah + Waktu Musim Panas Eropa Tengah + + + + + Waktu Eropa Timur + Waktu Standar Eropa Timur + Waktu Musim Panas Eropa Timur + + + + + Waktu Eropa Barat + Waktu Standar Eropa Barat + Waktu Musim Panas Eropa Barat + + + + + Waktu Kepulauan Falkland + Waktu Standar Kepulauan Falkland + Waktu Musim Panas Kepulauan Falkland + + + + + Waktu Fiji + Waktu Standar Fiji + Waktu Musim Panas Fiji + + + + + Waktu Guyana Prancis + + + + + Waktu Wilayah Selatan dan Antarktika Prancis + + + + + Waktu Galapagos + + + + + Waktu Gambier + + + + + Waktu Georgia + Waktu Standar Georgia + Waktu Musim Panas Georgia + + + + + Waktu Kep. Gilbert + + + + + Waktu Rata-Rata Greenwich + + + + + Waktu Greenland Timur + Waktu Standar Greenland Timur + Waktu Musim Panas Greenland Timur + + + + + Waktu Greenland Barat + Waktu Standar Greenland Barat + Waktu Musim Panas Greenland Barat + + + + + Waktu Guam + + + + + Waktu Gulf + + + + + Waktu Guyana + + + + + Waktu Hawaii-Aleutian + Waktu Standar Hawaii-Aleutian + Waktu Terang Hawaii-Aleutian + + + + + Waktu Hong Kong + Waktu Standar Hong Kong + Waktu Musim Panas Hong Kong + + + + + Waktu Hovd + Waktu Standar Hovd + Waktu Musim Panas Hovd + + + + + Waktu India + + + + + Waktu Samudera Hindia + + + + + Waktu Indochina + + + + + Waktu Indonesia Tengah + + + WITA + + + + + Waktu Indonesia Timur + + + WIT + + + + + Waktu Indonesia Barat + + + WIB + + + + + Waktu Iran + Waktu Standar Iran + Waktu Musim Panas Iran + + + + + Waktu Irkutsk + Waktu Standar Irkutsk + Waktu Musim Panas Irkutsk + + + + + Waktu Israel + Waktu Standar Israel + Waktu Musim Panas Israel + + + + + Waktu Jepang + Waktu Standar Jepang + Waktu Musim Panas Jepang + + + + + Waktu Petropavlovsk-Kamchatsky + Waktu Standar Petropavlovsk-Kamchatsky + Waktu Musim Panas Petropavlovsk-Kamchatski + + + + + Waktu Kazakhstan Timur + + + + + Waktu Kazakhstan Barat + + + + + Waktu Korea + Waktu Standar Korea + Waktu Musim Panas Korea + + + + + Waktu Kosrae + + + + + Waktu Krasnoyarsk + Waktu Standar Krasnoyarsk + Waktu Musim Panas Krasnoyarsk + + + + + Waktu Kirghizia + + + + + Waktu Lanka + + + + + Waktu Kep. Line + + + + + Waktu Lord Howe + Waktu Standar Lord Howe + Waktu Terang Lord Howe + + + + + Waktu Makau + Waktu Standar Makau + Waktu Musim Panas Makau + + + + + Waktu Kepulauan Macquarie + + + + + Waktu Magadan + Waktu Standar Magadan + Waktu Musim Panas Magadan + + + + + Waktu Malaysia + + + + + Waktu Maladewa + + + + + Waktu Marquesas + + + + + Waktu Kep. Marshall + + + + + Waktu Mauritius + Waktu Standar Mauritius + Waktu Musim Panas Mauritius + + + + + Waktu Mawson + + + + + Waktu Ulan Bator + Waktu Standar Ulan Bator + Waktu Musim Panas Ulan Bator + + + + + Waktu Moskow + Waktu Standar Moskow + Waktu Musim Panas Moskow + + + + + Waktu Myanmar + + + + + Waktu Nauru + + + + + Waktu Nepal + + + + + Waktu Kaledonia Baru + Waktu Standar Kaledonia Baru + Waktu Musim Panas Kaledonia Baru + + + + + Waktu Selandia Baru + Waktu Standar Selandia Baru + Waktu Terang Selandia Baru + + + + + Waktu Newfoundland + Waktu Standar Newfoundland + Waktu Siang Hari Newfoundland + + + + + Waktu Niue + + + + + Waktu Kepulauan Norfolk + + + + + Waktu Fernando de Noronha + Waktu Standar Fernando de Noronha + Waktu Musim Panas Fernando de Noronha + + + + + Waktu Kep. Mariana Utara + + + + + Waktu Novosibirsk + Waktu Standar Novosibirsk + Waktu Musim Panas Novosibirsk + + + + + Waktu Omsk + Waktu Standar Omsk + Waktu Musim Panas Omsk + + + + + Waktu Pakistan + Waktu Standar Pakistan + Waktu Musim Panas Pakistan + + + + + Waktu Palau + + + + + Waktu Papua Nugini + + + + + Waktu Paraguay + Waktu Standar Paraguay + Waktu Musim Panas Paraguay + + + + + Waktu Peru + Waktu Standar Peru + Waktu Musim Panas Peru + + + + + Waktu Filipina + Waktu Standar Filipina + Waktu Musim Panas Filipina + + + + + Waktu Kepulauan Phoenix + + + + + Waktu Saint Pierre dan Miquelon + Waktu Standar Saint Pierre dan Miquelon + Waktu Musim Panas Saint Pierre dan Miquelon + + + + + Waktu Pitcairn + + + + + Waktu Ponape + + + + + Waktu Qyzylorda + Waktu Standar Qyzylorda + Waktu Musim Panas Qyzylorda + + + + + Waktu Reunion + + + + + Waktu Rothera + + + + + Waktu Sakhalin + Waktu Standar Sakhalin + Waktu Musim Panas Sakhalin + + + + + Waktu Samara + Waktu Standar Samara + Waktu Musim Panas Samara + + + + + Waktu Samoa + Waktu Standar Samoa + Waktu Musim Panas Samoa + + + + + Waktu Seychelles + + + + + Waktu Standar Singapura + + + + + Waktu Kepulauan Solomon + + + + + Waktu Georgia Selatan + + + + + Waktu Suriname + + + + + Waktu Syowa + + + + + Waktu Tahiti + + + + + Waktu Taipei + Waktu Standar Taipei + Waktu Musim Panas Taipei + + + + + Waktu Tajikistan + + + + + Waktu Tokelau + + + + + Waktu Tonga + Waktu Standar Tonga + Waktu Musim Panas Tonga + + + + + Waktu Chuuk + + + + + Waktu Turkmenistan + Waktu Standar Turkmenistan + Waktu Musim Panas Turkmenistan + + + + + Waktu Tuvalu + + + + + Waktu Uruguay + Waktu Standar Uruguay + Waktu Musim Panas Uruguay + + + + + Waktu Uzbekistan + Waktu Standar Uzbekistan + Waktu Musim Panas Uzbekistan + + + + + Waktu Vanuatu + Waktu Standar Vanuatu + Waktu Musim Panas Vanuatu + + + + + Waktu Venezuela + + + + + Waktu Vladivostok + Waktu Standar Vladivostok + Waktu Musim Panas Vladivostok + + + + + Waktu Volgograd + Waktu Standar Volgograd + Waktu Musim Panas Volgograd + + + + + Waktu Vostok + + + + + Waktu Kepulauan Wake + + + + + Waktu Wallis dan Futuna + + + + + Waktu Yakutsk + Waktu Standar Yakutsk + Waktu Musim Panas Yakutsk + + + + + Waktu Yekaterinburg + Waktu Standar Yekaterinburg + Waktu Musim Panas Yekaterinburg + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 ribu + 00 ribu + 000 ribu + 0 juta + 00 juta + 000 juta + 0 miliar + 00 miliar + 000 miliar + 0 triliun + 00 triliun + 000 triliun + + + + + 0 + 00 rb + 000 rb + 0 jt + 00 jt + 000 jt + 0 M + 00 M + 000 M + 0 T + 00 T + 000 T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + Peseta Andorra + + + Dirham Uni Emirat Arab + Dirham Uni Emirat Arab + + + Afgani Afganistan (1927–2002) + + + Afgani Afganistan + Afgani Afganistan + + + Lek Albania + Lek Albania + + + Dram Armenia + Dram Armenia + + + Guilder Antilla Belanda + Guilder Antilla Belanda + + + Kwanza Angola + Kwanza Angola + + + Kwanza Angola (1977–1991) + + + Kwanza Baru Angola (1990–2000) + + + Kwanza Angola yang Disesuaikan Lagi (1995–1999) + + + Austral Argentina + + + Peso Ley Argentina (1970–1983) + + + Peso Argentina (1881–1970) + + + Peso Argentina (1983–1985) + + + Peso Argentina + Peso Argentina + + + Schilling Austria + + + Dolar Australia + Dolar Australia + AU$ + + + Florin Aruba + Florin Aruba + + + Manat Azerbaijan (1993–2006) + + + Manat Azerbaijan + Manat Azerbaijan + + + Dinar Bosnia-Herzegovina (1992–1994) + + + Mark Konvertibel Bosnia-Herzegovina + Mark Konvertibel Bosnia-Herzegovina + + + Dinar Baru Bosnia-Herzegovina (1994–1997) + + + Dolar Barbados + Dolar Barbados + + + Taka Bangladesh + Taka Bangladesh + + + Franc Belgia (konvertibel) + + + Franc Belgia + + + Franc Belgia (keuangan) + + + Hard Lev Bulgaria + + + Socialist Lev Bulgaria + + + Lev Bulgaria + Lev Bulgaria + + + Lev Bulgaria (1879–1952) + + + Dinar Bahrain + Dinar Bahrain + + + Franc Burundi + Franc Burundi + + + Dolar Bermuda + Dolar Bermuda + + + Dolar Brunei + Dolar Brunei + + + Boliviano + Boliviano + + + Boliviano Bolivia (1863–1963) + + + Peso Bolivia + + + Mvdol Bolivia + + + Cruzeiro Baru Brasil (1967–1986) + + + Cruzado Brasil (1986–1989) + + + Cruzeiro Brasil (1990–1993) + + + Real Brasil + Real Brasil + R$ + + + Cruzado Baru Brasil (1989–1990) + + + Cruzeiro Brasil (1993–1994) + + + Cruzeiro Brasil (1942–1967) + + + Dolar Bahama + Dolar Bahama + + + Ngultrum Bhutan + Ngultrum Bhutan + + + Kyat Burma + + + Pula Botswana + Pula Botswana + + + Rubel Baru Belarus (1994–1999) + + + Rubel Belarusia + Rubel Belarusia + + + Dolar Belize + Dolar Belize + + + Dolar Kanada + Dolar Kanada + CA$ + + + Franc Kongo + Franc Kongo + + + Euro WIR + + + Franc Swiss + Franc Swiss + + + Franc WIR + + + Escudo Cile + + + Satuan Hitung (UF) Cile + + + Peso Cile + Peso Cile + + + Yuan China + Yuan China + CN¥ + + + Peso Kolombia + Peso Kolombia + + + Unit Nilai Nyata Kolombia + + + Colon Kosta Rika + Colon Kosta Rika + + + Dinar Serbia (2002–2006) + + + Hard Koruna Cheska + + + Peso Konvertibel Kuba + Peso Konvertibel Kuba + + + Peso Kuba + Peso Kuba + + + Escudo Tanjung Verde + Escudo Tanjung Verde + + + Pound Siprus + + + Koruna Cheska + Koruna Cheska + + + Mark Jerman Timur + + + Mark Jerman + + + Franc Jibuti + Franc Jibuti + + + Krone Denmark + Krone Denmark + + + Peso Dominika + Peso Dominika + + + Dinar Algeria + Dinar Algeria + + + Sucre Ekuador + + + Satuan Nilai Tetap Ekuador + + + Kroon Estonia + + + Pound Mesir + Pound Mesir + + + Nakfa Eritrea + Nakfa Eritrea + + + Peseta Spanyol (akun) + + + Peseta Spanyol (konvertibel) + + + Peseta Spanyol + + + Birr Etiopia + Birr Etiopia + + + Euro + Euro + + + + Markka Finlandia + + + Dolar Fiji + Dolar Fiji + + + Pound Kepulauan Falkland + Pound Kepulauan Falkland + + + Franc Prancis + + + Pound Sterling Inggris + Pound Sterling Inggris + £ + + + Kupon Larit Georgia + + + Lari Georgia + Lari Georgia + + + Cedi Ghana (1979–2007) + + + Cedi Ghana + Cedi Ghana + + + Pound Gibraltar + Pound Gibraltar + + + Dalasi Gambia + Dalasi Gambia + + + Franc Guinea + Franc Guinea + + + Syli Guinea + + + Ekuele Guinea Ekuatorial + + + Drachma Yunani + + + Quetzal Guatemala + Quetzal Guatemala + + + Escudo Guinea Portugal + + + Peso Guinea-Bissau + + + Dolar Guyana + Dolar Guyana + + + Dolar Hong Kong + Dolar Hong Kong + HK$ + + + Lempira Honduras + Lempira Honduras + + + Dinar Kroasia + + + Kuna Kroasia + Kuna Kroasia + + + Gourde Haiti + Gourde Haiti + + + Forint Hungaria + Forint Hungaria + + + Rupiah Indonesia + Rupiah Indonesia + Rp + + + Pound Irlandia + + + Pound Israel + + + Shekel Baru Israel + + + + Rupee India + Rupee India + Rs + + + Dinar Irak + Dinar Irak + + + Rial Iran + Rial Iran + + + Krona Islandia + Krona Islandia + + + Lira Italia + + + Dolar Jamaika + Dolar Jamaika + + + Dinar Yordania + Dinar Yordania + + + Yen Jepang + Yen Jepang + JP¥ + + + Shilling Kenya + Shilling Kenya + + + Som Kirgistan + Som Kirgistan + + + Riel Kamboja + Riel Kamboja + + + Franc Komoro + Franc Komoro + + + Won Korea Utara + Won Korea Utara + + + Hwan Korea Selatan (1953–1962) + + + Won Korea Selatan (1945–1953) + + + Won Korea Selatan + Won Korea Selatan + + + + Dinar Kuwait + Dinar Kuwait + + + Dolar Kepulauan Cayman + Dolar Kepulauan Cayman + + + Tenge Kazakstan + Tenge Kazakstan + + + Kip Laos + Kip Laos + + + Pound Lebanon + Pound Lebanon + + + Rupee Sri Lanka + Rupee Sri Lanka + + + Dolar Liberia + Dolar Liberia + + + Loti Lesotho + + + Litas Lituania + Litas Lituania + + + Talonas Lituania + + + Franc Konvertibel Luksemburg + + + Franc Luksemburg + + + Financial Franc Luksemburg + + + Lats Latvia + Lats Latvia + + + Rubel Latvia + + + Dinar Libya + Dinar Libya + + + Dirham Maroko + Dirham Maroko + + + Franc Maroko + + + Franc Monegasque + + + Cupon Moldova + + + Leu Moldova + Leu Moldova + + + Ariary Madagaskar + Ariary Madagaskar + + + Franc Malagasi + + + Denar Makedonia + Denar Makedonia + + + Denar Makedonia (1992–1993) + + + Franc Mali + + + Kyat Myanmar + Kyat Myanmar + + + Tugrik Mongolia + Tugrik Mongolia + + + Pataca Makau + Pataca Makau + + + Ouguiya Mauritania + Ouguiya Mauritania + + + Lira Malta + + + Pound Malta + + + Rupee Mauritius + Rupee Mauritius + + + Rufiyaa Maladewa + Rufiyaa Maladewa + + + Kwacha Malawi + Kwacha Malawi + + + Peso Meksiko + Peso Meksiko + MX$ + + + Peso Silver Meksiko (1861–1992) + + + Unit Investasi Meksiko + + + Ringgit Malaysia + Ringgit Malaysia + + + Escudo Mozambik + + + Metical Mozambik (1980–2006) + + + Metical Mozambik + Metical Mozambik + + + Dolar Namibia + Dolar Namibia + + + Naira Nigeria + Naira Nigeria + + + Kordoba Nikaragua (1988–1991) + + + Cordoba Nikaragua + Cordoba Nikaragua + + + Guilder Belanda + + + Krone Norwegia + Krone Norwegia + + + Rupee Nepal + Rupee Nepal + + + Dolar Selandia Baru + Dolar Selandia Baru + NZ$ + + + Rial Oman + Rial Oman + + + Balboa Panama + Balboa Panama + + + Inti Peru + + + Nuevo Sol Peru + Nuevo Sol Peru + + + Sol Peru (1863–1965) + + + Kina Papua Nugini + Kina Papua Nugini + + + Peso Filipina + Peso Filipina + + + Rupee Pakistan + Rupee Pakistan + + + Polandia Zloty + Polandia Zloty + + + Zloty Polandia (1950–1995) + + + Escudo Portugal + + + Guarani Paraguay + Guarani Paraguay + + + Rial Qatar + Rial Qatar + + + Dolar Rhodesia + + + Leu Rumania (1952–2006) + + + Leu Rumania + Leu Rumania + + + Dinar Serbia + Dinar Serbia + + + Rubel Rusia + Rubel Rusia + + + Rubel Rusia (1991–1998) + + + Franc Rwanda + Franc Rwanda + + + Riyal Arab Saudi + Riyal Arab Saudi + + + Dolar Kepulauan Solomon + Dolar Kepulauan Solomon + + + Rupee Seychelles + Rupee Seychelles + + + Dinar Sudan (1992–2007) + + + Pound Sudan + Pound Sudan + + + Pound Sudan (1957–1998) + + + Krona Swedia + Krona Swedia + + + Dolar Singapura + Dolar Singapura + + + Pound Saint Helena + Pound Saint Helena + + + Tolar Slovenia + + + Koruna Slovakia + + + Leone Sierra Leone + Leone Sierra Leone + + + Shilling Somalia + Shilling Somalia + + + Dolar Suriname + Dolar Suriname + + + Guilder Suriname + + + Pound Sudan Selatan + Pound Sudan Selatan + + + Dobra Sao Tome dan Principe + Dobra Sao Tome dan Principe + + + Rubel Soviet + + + Colon El Savador + + + Pound Suriah + Pound Suriah + + + Lilangeni Swaziland + Lilangeni Swaziland + + + Baht Thailand + Baht Thailand + ฿ + + + Rubel Tajikistan + + + Somoni Tajikistan + Somoni Tajikistan + + + Manat Turkmenistan (1993–2009) + + + Manat Turkimenistan + Manat Turkimenistan + + + Dinar Tunisia + Dinar Tunisia + + + Paʻanga Tonga + Paʻanga Tonga + + + Escudo Timor + + + Lira Turki (1922–2005) + + + Lira Turki + Lira Turki + + + Dolar Trinidad dan Tobago + Dolar Trinidad dan Tobago + + + Dolar Baru Taiwan + NT$ + + + Shilling Tanzania + Shilling Tanzania + + + Hryvnia Ukraina + Hryvnia Ukraina + + + Karbovanet Ukraina + + + Shilling Uganda (1966–1987) + + + Shilling Uganda + Shilling Uganda + + + Dolar Amerika Serikat + Dolar Amerika Serikat + US$ + + + Dolar AS (Hari berikutnya) + + + Dolar AS (Hari yang sama) + + + Peso Uruguay (Unit Diindeks) + + + Peso Uruguay (1975–1993) + + + Peso Uruguay + Peso Uruguay + + + Som Uzbekistan + Som Uzbekistan + + + Bolivar Venezuela (1871–2008) + + + Bolivar Venezuela + Bolivar Venezuela + + + Dong Vietnam + Dong Vietnam + + + + Dong Vietnam (1978–1985) + + + Vatu Vanuatu + Vatu Vanuatu + + + Tala Samoa + Tala Samoa + + + Franc CFA BEAC + Franc CFA BEAC + FCFA + + + Silver + + + Emas + + + Unit Gabungan Eropa + + + Unit Keuangan Eropa + + + Satuan Hitung Eropa (XBC) + + + Satuan Hitung Eropa (XBD) + + + Dolar Karibia Timur + Dolar Karibia Timur + EC$ + + + Hak Khusus Menggambar + + + Satuan Mata Uang Eropa + + + Franc Gold Perancis + + + Franc UIC Perancis + + + Franc CFA BCEAO + Franc CFA BCEAO + CFA + + + Palladium + + + Franc CFP + Franc CFP + CFPF + + + Platinum + + + Dana RINET + + + Kode Mata Uang Pengujian + + + Mata Uang Tidak Dikenal + Mata Uang Tidak Dikenal + + + Dinar Yaman + + + Rial Yaman + Rial Yaman + + + Hard Dinar Yugoslavia (1966–1990) + + + Dinar Baru Yugoslavia (1994–2002) + + + Dinar Konvertibel Yugoslavia (1990–1992) + + + Dinar Reformasi Yugoslavia (1992–1993) + + + Rand Afrika Selatan (Keuangan) + + + Rand Afrika Selatan + Rand Afrika Selatan + + + Kwacha Zambia (1968–2012) + + + Kwacha Zambia + Kwacha Zambia + + + Zaire Baru Zaire (1993–1998) + + + Zaire Zaire (1971–1993) + + + Dolar Zimbabwe (1980–2008) + + + Dolar Zimbabwe (2009) + + + Dolar Zimbabwe (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} per {1} + + + {0} g-force + + + {0} menit + + + {0} detik + + + {0} derajat + + + {0} acre + + + {0} hektar + + + {0} kaki persegi + + + {0} kilometer persegi + + + {0} meter persegi + + + {0} mil persegi + + + {0} hari + + + {0} jam + + + {0} milidetik + + + {0} menit + + + {0} bulan + + + {0} detik + + + {0} minggu + + + {0} tahun + + + {0} sentimeter + + + {0} kaki + + + {0} inci + + + {0} kilometer + + + {0} tahun cahaya + + + {0} meter + + + {0} mil + + + {0} milimeter + + + {0} pikometer + + + {0} yard + + + {0} gram + + + {0} kilogram + + + {0} ons + + + {0} pon + + + {0} daya kuda + + + {0} kilowatt + + + {0} watt + + + {0} hektopaskal + + + {0} inci merkuri + + + {0} milibar + + + {0} kilometer per jam + + + {0} meter per detik + + + {0} mil per jam + + + {0} derajat Celsius + + + {0} derajat Fahrenheit + + + {0} kilometer kubik + + + {0} mil kubik + + + {0} liter + + + + + {0}/{1} + + + {0} G + + + {0} mnt + + + {0} dtk + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0} hr + + + {0} j + + + {0} md + + + {0} mnt + + + {0} bln + + + {0} dtk + + + {0} mgg + + + {0} thn + + + {0} cm + + + {0} ft + + + {0} in + + + {0} km + + + {0} ly + + + {0} m + + + {0} mi + + + {0} mm + + + {0} pm + + + {0} yd + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0} km/jam + + + {0} m/s + + + {0} mph + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0} hr + + + {0} j + + + {0} md + + + {0} mnt + + + {0} bln + + + {0} dtk + + + {0} mgg + + + {0} thn + + + {0} cm + + + {0} ft + + + {0}″ + + + {0} km + + + {0} ly + + + {0} m + + + {0} mi + + + {0} mm + + + {0} pm + + + {0} yd + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0} km/jam + + + {0} m/s + + + {0} mph + + + {0}° + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0}, dan {1} + {0} dan {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ya:y + tidak:t + + + + diff --git a/library/Zend/Locale/Data/id_ID.xml b/library/Zend/Locale/Data/id_ID.xml new file mode 100755 index 000000000..7728141d8 --- /dev/null +++ b/library/Zend/Locale/Data/id_ID.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ig.xml b/library/Zend/Locale/Data/ig.xml new file mode 100755 index 000000000..dbfe98354 --- /dev/null +++ b/library/Zend/Locale/Data/ig.xml @@ -0,0 +1,359 @@ + + + + + + + + + + + + Akan + Amariikị + Arabiikị + Belaruusu + Bọlụgarịa + Bengali + Cheekị + Jamaan + Giriikị + Oyibo + Panya + Peshan + Fụrench + Awụsa + Hindi + Magịya + Indonisia + Igbo + Italo + Japanese + Java + Keme, Etiti + Koria + Maleyi + Mịanma + Nepali + Dọọch + Punjabi + Poliishi + Potoki + Rumenia + Rọshan + Rụwanda + Somali + Sụwidiishi + Tamụlụ + Taị + Tọkiishi + Ukureenị + Urudu + Viyetịnaamụ + Yoruba + Mandarịịnị + Zulu + + + Binin + Bemuda + Chaina + Hati + Comorosu + Libyia + Maldivesa + Nigeria + + + + [a b {ch} d e ẹ f g {gb} {gh} {gw} h i ị j k {kp} {kw} l m n ṅ {nw} {ny} o ọ p r s {sh} t u ụ v w y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jen + Feb + Maa + Epr + Mee + Juu + Jul + Ọgọ + Sep + Ọkt + Nov + Dis + + + Jenụwarị + Febrụwarị + Maachị + Eprel + Mee + Juun + Julaị + Ọgọọst + Septemba + Ọktoba + Novemba + Disemba + + + + + + + Ụka + Mọn + Tiu + Wen + Tọọ + Fraị + Sat + + + Mbọsị Ụka + Mọnde + Tiuzdee + Wenezdee + Tọọzdee + Fraịdee + Satọdee + + + + + + + Ọ1 + Ọ2 + Ọ3 + Ọ4 + + + Ọkara 1 + Ọkara 2 + Ọkara 3 + Ọkara 4 + + + + + + + A.M. + P.M. + + + + + + Tupu Kristi + Afọ Kristi + + + T.K. + A.K. + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Agba + + + Afọ + + + Ọnwa + + + Izu + + + Ụbọchị + Nnyaafụ + Taata + Echi + + + Ụbọchị izu + + + N'ụtụtụ/N'anyasị + + + Elekere + + + Nkeji + + + Nkejinta + + + Mpaghara oge + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Escudo Caboverdiano + + + Naịra + + + + + + + Eye:E + Mba:M + + + + diff --git a/library/Zend/Locale/Data/ig_NG.xml b/library/Zend/Locale/Data/ig_NG.xml new file mode 100755 index 000000000..03a2bac2c --- /dev/null +++ b/library/Zend/Locale/Data/ig_NG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ii.xml b/library/Zend/Locale/Data/ii.xml new file mode 100755 index 000000000..febc60076 --- /dev/null +++ b/library/Zend/Locale/Data/ii.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + ꄓꇩꉙ + ꑱꇩꉙ + ꑭꀠꑸꉙ + ꃔꇩꉙ + ꆈꌠꉙ + ꑴꄊꆺꉙ + ꏝꀪꉙ + ꁍꄨꑸꉙ + ꀠꑟꁍꄨꑸꉙ + ꊉꇩꉙ + ꅉꀋꌠꅇꂷ + ꍏꇩꉙ + ꈝꐯꍏꇩꉙ + ꀎꋏꍏꇩꉙ + + + + + + + + + + + + + ꀠꑭ + ꍏꇩ + ꄓꇩ + ꃔꇩ + ꑱꇩ + ꑴꄗ + ꑴꄊꆺ + ꏝꀪ + ꊉꇆꌦ + ꂰꇩ + ꃅꄷꅉꀋꐚꌠ + + + ꄉꉻꃅꑍ + ꑳꌦꇂꑍꉖ + + + ꂰꌬꌠ + ꂰꇩ + + + ꅇꉙ: {0} + ꇇꁱ: {0} + ꃅꄷ: {0} + + + + [ꀀ-ꒌ] + [ꀀ ꀋ ꀗ ꀣ ꀯ ꀺ ꁆ ꁒ ꁞ ꁩ ꁵ ꂁ ꂍ ꂘ ꂤ ꂰ ꂼ ꃇ ꃓ ꃟ ꃫ ꃶ ꄂ ꄎ ꄚ ꄥ ꄱ ꄽ ꅉ ꅔ ꅠ ꅬ ꅸ ꆃ ꆏ ꆛ ꆧ ꆳ ꆾ ꇊ ꇖ ꇢ ꇭ ꇹ ꈅ ꈑ ꈜ ꈨ ꈴ ꉀ ꉋ ꉗ ꉣ ꉯ ꉺ ꊆ ꊒ ꊞ ꊩ ꊵ ꋁ ꋍ ꋘ ꋤ ꋰ ꋼ ꌇ ꌓ ꌟ ꌫ ꌷ ꍂ ꍎ ꍚ ꍦ ꍱ ꍽ ꎉ ꎕ ꎠ ꎬ ꎸ ꏄ ꏏ ꏛ ꏧ ꏳ ꏾ ꐊ ꐖ ꐢ ꐭ ꐹ ꑅ ꑑ ꑜ ꑨ ꑴ ꒀ ꒋ] + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ꋍꆪ + ꑍꆪ + ꌕꆪ + ꇖꆪ + ꉬꆪ + ꃘꆪ + ꏃꆪ + ꉆꆪ + ꈬꆪ + ꊰꆪ + ꊰꊪꆪ + ꊰꑋꆪ + + + + + + + ꑭꆏ + ꆏꋍ + ꆏꑍ + ꆏꌕ + ꆏꇖ + ꆏꉬ + ꆏꃘ + + + ꑭꆏꑍ + ꆏꊂꋍ + ꆏꊂꑍ + ꆏꊂꌕ + ꆏꊂꇖ + ꆏꊂꉬ + ꆏꊂꃘ + + + + + + + + + + + + + + + + + + ꃅꑌ + ꃅꎸ + ꃅꍵ + ꃅꋆ + + + + + + + ꎸꄑ + ꁯꋒ + + + + + + ꃅꋊꂿ + ꃅꋊꊂ + + + + + + + ꃅꋊ + + + + + + + + + ꑭꆏ + + + + ꎴꂿꋍꑍ + ꀋꅔꉈ + ꀃꑍ + ꃆꏂꑍ + ꌕꀿꑍ + + + ꆏꑍ + + + ꎸꄑ/ꁯꋒ + + + ꄮꈉ + + + + + + + + + ꃅꄷꄮꈉ + + + + + ꅉꀋꐚꌠ + + + + + + . + , + + + + ¥ + + + ꅉꀋꐚꌠꌋꆀꎆꃀꀋꈁꀐꌠ + + + + + + + ꀋꉬ + + + diff --git a/library/Zend/Locale/Data/ii_CN.xml b/library/Zend/Locale/Data/ii_CN.xml new file mode 100755 index 000000000..100bcc268 --- /dev/null +++ b/library/Zend/Locale/Data/ii_CN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/is.xml b/library/Zend/Locale/Data/is.xml new file mode 100755 index 000000000..2d1fc8077 --- /dev/null +++ b/library/Zend/Locale/Data/is.xml @@ -0,0 +1,4824 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afár + abkasíska + akkíska + acoli + adangme + adýge + avestíska + afríkanska + afríhílí + aghem + aínu (Japan) + akan + akkadíska + aleúska + suðuraltaíska + amharíska + aragonska + fornenska + angíka + arabíska + stöðluð nútímaarabíska + arameíska + arákaníska + arapahó + aravakska + assamska + asu (Tanzania) + astúríska + avaríska + avadí + aímara + aserska + azeri + baskír + balúkí + balíska + basa + bamun + hvítrússneska + beja + bemba + bena (Tanzania) + búlgarska + bojpúrí + bíslama + bíkol + bíní + siksika + bambara + bengalska + tíbeska + bretónska + braí + bodo + bosníska + bakossi + búríat + búgíska + blín + katalónska + kaddó + karíbamál + kajúga + atsam + tsjetsjenska + kebúanó + sjíga + kamorró + síbsja + sjagataí + sjúkíska + marí + sínúk + sjoktá + sípevíska + Cherokee-mál + sjeyen + sorani-kúrdíska + korsíska + koptíska + krí + krímtyrkneska + tékkneska + kasúbíska + kirkjuslavneska + sjúvas + velska + danska + dakóta + dargva + taíta + þýska + austurrísk þýska + svissnesk háþýska + delaver + slavneska + dogríb + dinka + zarma + dogrí + lágsorbneska + dúala + miðhollenska + dívehí + jola-fonyi + djúla + dsongka + embu + ewe + efík + fornegypska + ekajúk + gríska + elamít + enska + áströlsk enska + kanadísk enska + bresk enska + bandarísk enska + miðenska + esperantó + spænska + rómanskamerísk spænska + evrópsk spænska + mexíkósk spænska + eistneska + baskneska + evondó + persneska + fang + fantí + fúla + finnska + filippseyska + fídjeyska + færeyska + fón + franska + kanadísk franska + svissnesk franska + miðfranska + fornfranska + norðurfrísneska + austurfrísneska + fríúlska + vesturfrísneska + írska + ga + gajó + gbaja + skosk gelíska + gís + gilberska + gallegska + miðháþýska + gvaraní + fornháþýska + gondí + gorontaló + gotneska + gerbó + forngríska + svissnesk þýska + gújaratí + gusii + manx + gvísín + hása + haída + havaíska + hebreska + hindí + híligaínon + hettitíska + hmong + hírímótú + króatíska + hásorbneska + haítíska + ungverska + húpa + armenska + hereró + alþjóðatunga + íban + ibibio + indónesíska + interlingve + ígbó + sísúanjí + ínúpíak + ílokó + ingús + ídó + íslenska + ítalska + inúktitút + japanska + lojban + masjáme + gyðingapersneska + gyðingaarabíska + javanska + georgíska + karakalpak + kabíle + kasín + jju + kamba + kaví + kabardíska + tyap + makónde + kappverdiska + koro + kongóska + kasí + kotaska + kíkújú + kúanjama + kasakska + kako + grænlenska + kmer + kimbúndú + kannada + kóreska + konkaní + kosraska + kpelle + kanúrí + karasaíbalkar + karélska + kúrúk + kasmírska + bafia + kölníska + kúrdneska + kúmík + kútenaí + komíska + korníska + kirgiska + latína + ladínska + landa + lamba + lúxemborgíska + lesgíska + ganda + limbúrgíska + lingala + laó + mongó + lozi + litháíska + lúbakatanga + luba-lulua + lúisenó + lúnda + lúó + lúsaí + olulujía + lettneska + madúrska + magahí + maítílí + makasar + mandingó + masaí + moksa + mandar + mende + morisyen + malagasíska + miðírska + marshallska + maórí + mikmak + mínangkabá + makedónska + malajalam + mongólska + mansjú + manípúrí + móhíska + mossí + maratí + malaíska + maltneska + margvísleg mál + krík + mirandesíska + marvarí + burmneska + ersja + nárúska + napólíska + norskt bókmál + norðurndebele + lágþýska; lágsaxneska + nepalska + nevarí + ndonga + nías + níveska + hollenska + flæmska + nýnorska + norska + nógaí + norræna + n’ko + suðurndebele + norðursótó + navahó + klassísk nevaríska + njanja; sísjeva; sjeva + njamvesí + nyankole + njóró + nsíma + oksítaníska + ojibva + oromo + óría + ossetíska + ósage + tyrkneska, ottóman + púnjabí + pangasínmál + palaví + pampanga + papíamentó + paláska + fornpersneska + fönikíska + palí + pólska + ponpeiska + fornpróvensalska + pastú + afghanska + portúgalska + brasílísk portúgalska + evrópsk portúgalska + kvesjúa + rajastaní + rapanúí + rarótongska + rómanska + rúndí + rúmenska + moldóvska + romaní + rót + rússneska + arúmenska + kínjarvanda + sanskrít + sandave + jakút + samversk arameíska + sasak + santalí + sardínska + sikileyska + skoska + sindí + norðursamíska + selkúp + sangó + fornírska + serbókróatíska + sjan + sinhala + sídamó + slóvakíska + slóvenska + samóska + suðursamíska + lúlesamíska + enaresamíska + skoltesamíska + shóna + sóninke + sómalska + sogdíen + albanska + serbneska + sranan tongo + serer + svatí + saho + suðursótó + súndanska + súkúma + súsú + súmerska + sænska + svahílí + shimaoríska + klassísk sýrlenska + sýrlenska + tamílska + telúgú + tímne + terenó + tetúm + tadsjikska + taílenska + tígrinja + tígre + tív + túrkmenska + tókeláska + tagalog + klingonska + tlingit + tamasjek + tsúana + tongverska + tongverska (nyasa) + tokpisin + tyrkneska + tsonga + tsimsíska + tatarska + túmbúka + túvalúska + tví + tahítíska + túvínska + údmúrt + úígúr + uyghur + úgarítíska + úkraínska + úmbúndú + óþekkt tungumál + úrdú + úsbekska + vaí + venda + víetnamska + volapyk + votíska + vallónska + valamó + varaí + vasjó + volof + kalmúkska + sósa + jaó + japíska + jiddíska + jórúba + kantoneska + súang + sapótek + blisstákn + senaga + staðlað marokkóskt tamazight + kínverska + kínverska (einfölduð) + kínverska (hefðbundin) + súlú + súní + ekkert tungumálaefni + zázáíska + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Heimurinn + Afríka + Norður-Ameríka + Suður-Ameríka + Eyjaálfa + Vestur-Afríka + Mið-Ameríka + Austur-Afríka + Norður-Afríka + Mið-Afríka + Suðurhluti Afríku + Ameríka + Ameríka norðan Mexikó + Karabíska hafið + Austur-Asía + Suður-Asía + Suðaustur-Asía + Suður-Evrópa + Ástralasía + Melanesía + Míkrónesía + Pólýnesía + Asía + Mið-Asía + Vestur-Asía + Evrópa + Austur-Evrópa + Norður-Evrópa + Vestur-Evrópa + Rómanska Ameríka + Ascension-eyja + Andorra + Sameinuðu arabísku furstadæmin + Afganistan + Antígva og Barbúda + Angvilla + Albanía + Armenía + Hollensku Antillur + Angóla + Suðurskautslandið + Argentína + Bandaríska Samóa + Austurríki + Ástralía + Arúba + Álandseyjar + Aserbaídsjan + Bosnía og Hersegóvína + Barbados + Bangladess + Belgía + Búrkína Fasó + Búlgaría + Barein + Búrúndí + Benín + Saint Barthélemy + Bermúdaeyjar + Brúnei + Bólivía + Karíbahafshluti Hollands + Brasilía + Bahamaeyjar + Bútan + Bouveteyja + Botsvana + Hvíta-Rússland + Belís + Kanada + Kókoseyjar (Keeling) + Kongó-Kinshasa + Kongó (Lýðstjórnarlýðveldið) + Mið-Afríkulýðveldið + Kongó-Brazzaville + Kongó (Lýðveldið) + Sviss + Fílabeinsströndin + Cooks-eyjar + Síle + Kamerún + Kína + Kólumbía + Clipperton-eyja + Kostaríka + Kúba + Grænhöfðaeyjar + Curaçao + Jólaey + Kýpur + Tékkland + Þýskaland + Diego Garcia + Djíbútí + Danmörk + Dóminíka + Dóminíska lýðveldið + Alsír + Ceuta og Melilla + Ekvador + Eistland + Egyptaland + Vestur-Sahara + Erítrea + Spánn + Eþíópía + Evrópusambandið + Finnland + Fídjieyjar + Falklandseyjar + Falklandseyjar (Malvinas) + Míkrónesía (FM) + Færeyjar + Frakkland + Gabon + Bretland + Stóra Bretland + Grenada + Georgía + Franska Gvæjana + Guernsey + Gana + Gíbraltar + Grænland + Gambía + Gínea + Gvadelúpeyjar + Miðbaugs-Gínea + Grikkland + Suður-Georgía og Suður-Sandvíkureyjar + Gvatemala + Gvam + Gínea-Bissá + Gvæjana + Sjálfstjórnarsvæðið Hong Kong + Hong Kong + Heard og McDonaldseyjar + Hondúras + Króatía + Haítí + Ungverjaland + Kanaríeyjar + Indónesía + Írland + Ísrael + Mön + Indland + Bresku Indlandshafseyjar + Írak + Íran + Ísland + Ítalía + Jersey + Jamaíka + Jórdanía + Japan + Kenía + Kirgisistan + Kambódía + Kíribatí + Kómoreyjar + Sankti Kristófer og Nevis + Norður-Kórea + Suður-Kórea + Kúveit + Caymaneyjar + Kasakstan + Laos + Líbanon + Sankti Lúsía + Liechtenstein + Srí Lanka + Líbería + Lesótó + Litháen + Lúxemborg + Lettland + Líbía + Marokkó + Mónakó + Moldóva + Svartfjallaland + Saint Martin + Madagaskar + Marshalleyjar + Makedónía + Makedónía (Fyrrverandi lýðveldi Júgóslavíu) + Malí + Mjanmar (Búrma) + Mongólía + Sjálfstjórnarsvæðið Makaó + Makaó + Norður-Maríanaeyjar + Martiník + Máritanía + Montserrat + Malta + Máritíus + Maldíveyjar + Malaví + Mexíkó + Malasía + Mósambík + Namibía + Nýja-Kaledónía + Níger + Norfolkeyja + Nígería + Níkaragva + Holland + Noregur + Nepal + Nárú + Niue + Nýja-Sjáland + Óman + Panama + Perú + Franska Pólýnesía + Papúa Nýja-Gínea + Filippseyjar + Pakistan + Pólland + Sankti Pierre og Miquelon + Pitcairn-eyjar + Púertó Ríkó + Heimastjórnarsvæði Palestínumanna + Palestína + Portúgal + Palá + Paragvæ + Katar + Ytri Eyjaálfa + Réunion + Rúmenía + Serbía + Rússland + Rúanda + Sádi-Arabía + Salómonseyjar + Seychelles-eyjar + Súdan + Svíþjóð + Singapúr + Sankti Helena + Slóvenía + Svalbarði og Jan Mayen + Slóvakía + Síerra Leóne + San Marínó + Senegal + Sómalía + Súrínam + Suður-Súdan + Saó Tóme og Prinsípe + El Salvador + Sint Maarten + Sýrland + Svasíland + Tristan da Cunha + Turks- og Caicoseyjar + Tsjad + Frönsku suðlægu landsvæðin + Tógó + Taíland + Tadsjikistan + Tókelá + Tímor-Leste + Austur-Tímor + Túrkmenistan + Túnis + Tonga + Tyrkland + Trínidad og Tóbagó + Túvalú + Taívan + Tansanía + Úkraína + Úganda + Smáeyjar Bandaríkjanna + Bandaríkin + BNA + Úrúgvæ + Úsbekistan + Páfastóll + Sankti Vinsent og Grenadíneyjar + Venesúela + Bresku Jómfrúaeyjar + Bandarísku Jómfrúaeyjar + Víetnam + Vanúatú + Wallis- og Fútúnaeyjar + Samóa + Kósóvó + Jemen + Mayotte + Suður-Afríka + Sambía + Simbabve + Óþekkt svæði + + + monotonísk + pinyin + polytonísk + Wade-Giles + + + Dagatal + Röðun óháð táknum + Röðun með viðsnúnum áherslum + Röðun eftir hástöfum/lágstöfum + Stafrétt röðun + Kana-röðun + Röðun + Stöðluð röðun + Talnaröðun + Röðunarstyrkur + Gjaldmiðill + Tölur + Tímabelti + Landsstaðalsafbrigði + Raða sem táknum + Einkanotkun + + + Arabískar-indverskar tölur + Auknar arabískar-indverskar tölur + Armenskir tölustafir + Armenskar lágstafatölur + Bengalskar tölur + hefðbundin kínversk röðun - Big5 + Búddískt dagatal + Kínverskt dagatal + Koptískt tímatal + Tölur í devanagari + Orðabókarröð + Sjálfgefin Unicode-röðun + röðina fyrir fjöltyngi evrópskum skjölum + Eþíópískir tölustafir + Eþíópískt tímatal + Eþíópískt 'amete alem' tímatal + Viðskiptafræðileg töluorð + Tölur með fullri breidd + einfölduð kínversk röðun - GB2312 + Tölustafir í georgísku + Gregorískt dagatal + Grískir tölustafir + Grískar lágstafatölur + Tölur í gujarati + Tölur í gurmukhi + Kínverskir tugatölustafir + Einfaldaðir kínverskir tölustafir + Einfaldaðar kínverskar fjármálatölur + Hefðbundnir kínverskir tölustafir + Hefðbundnar kínverskar fjármálatölur + Hebreskir tölustafir + Hebreskt dagatal + Raða öllu + indverskt dagatal + Íslamskt dagatal + Íslamskt borgaradagatal + Japanskt dagatal + Japanskir tölustafir + Japanskar fjármálatölur + Tölur í khmer + Tölur í kannada + Tölur í lao + Vestrænar tölur + Raða lágstöfum fyrst + Tölur í malayalam + Mongólskar tölur + Tölur í myanmar + Upprunalegir tölustafir + Raða áherslum eðlilega + Raða eðlilega eftir hástöfum og lágstöfum + Raða óháð hástöfum og lágstöfum + Raða Kana sér + Raða án stöðlunar + Raða tölustöfum sér + Raða táknum + Tölur í oriya + Persneskt tímatal + Símaskráarröðun + Hljóðfræðileg röð + Pinyin-röðun + Raða aðeins grunnstöfum + Raða áherslum/hástaf eða lágstaf/breidd/Kana + Endurbætt röð + kínverskt dagatal + Rómverskir tölustafir + Rómverkar lágstafatölur + Almenn leit + Leita eftir upphafssamhljóða í Hangul + Raða áherslum + Raða óháð táknum + Stöðluð röðun + Strikaröðun + Tamílskir tölustafir + Tamílskar tölur + Tölur í telúgú + Raða áherslum/hástaf eða lágstaf/breidd + Tælenskar tölur + Tíbeskir tölustafir + Hefðbundin + Hefðbundin tölutákn + Röðun eftir grunnstrikum + Raða hástöfum fyrst + Vai-tölustafir + Raða öfugt eftir áherslum + Raða stafrétt + Raða Kana öðruvísi + Raða Unicode með stöðluðum hætti + Raða tölustöfum tölulega + + + BGN + Tölulegur + Tónn + UNGEGN + Áherslur + Full breidd + Hálf breidd + Jamo + Pinyin + Birting + + + metrakerfi + breskt + bandarískt + + + tungumál: {0} + leturgerð: {0} + svæði: {0} + + + + [a á b d ð e é f g h i í j k l m n o ó p r s t u ú v y ý þ æ ö] + [c q w x z] + [A Á B C D Ð E É F G H I Í J K L M N O Ó P Q R S T U Ú V W X Y Ý Z Þ Æ Ö] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + d.M.y G + + + + + d.M.y GGGGG + + + + + + + {1} 'kl.' {0} + + + + + {1} 'kl.' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d. + y G + MMM y G + d. MMM y G + E, d. MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M. + E, d.M. + LLL + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm:ss + y G + y G + M.y G + d.M.y G + E, d.M.y G + MMM y G + d. MMM y G + E, d. MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + d.–d.M. + d.M.–d.M. + + + E, d. – E, d.M. + E, d.M. – E, d.M. + + + MMM–MMM + + + d.–d. MMM + d. MMM – d. MMM + + + E, d. – E, d. MMM + E, d. MMM – E, d. MMM + + + MMMM–MMMM + + + y–y G + + + M.–M.y G + M.y–M.y G + + + d.–d.M.y G + d.M.–d.M.y G + d.M.y–d.M.y G + + + E, d. – E, d.M.y G + E, d.M. – E, d.M.y G + E, d.M.y – E, d.M.y G + + + MMM–MMM y G + MMM y – MMM y G + + + d.–d. MMM y G + d. MMM – d. MMM y G + d. MMM y – d. MMM y G + + + E, d. – E, d. MMM y G + E, d. MMM – E, d. MMM y G + E, d. MMM y – E, d. MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + jan. + feb. + mar. + apr. + maí + jún. + júl. + ágú. + sep. + okt. + nóv. + des. + + + J + F + M + A + M + J + J + Á + S + O + N + D + + + janúar + febrúar + mars + apríl + maí + júní + júlí + ágúst + september + október + nóvember + desember + + + + + jan. + feb. + mar. + apr. + maí + jún. + júl. + ágú. + sep. + okt. + nóv. + des. + + + J + F + M + A + M + J + J + Á + S + O + N + D + + + janúar + febrúar + mars + apríl + maí + júní + júlí + ágúst + september + október + nóvember + desember + + + + + + + sun. + mán. + þri. + mið. + fim. + fös. + lau. + + + S + M + Þ + M + F + F + L + + + su. + má. + þr. + mi. + fi. + fö. + la. + + + sunnudagur + mánudagur + þriðjudagur + miðvikudagur + fimmtudagur + föstudagur + laugardagur + + + + + sun. + mán. + þri. + mið. + fim. + fös. + lau. + + + S + M + Þ + M + F + F + L + + + su. + má. + þr. + mi. + fi. + fö. + la. + + + sunnudagur + mánudagur + þriðjudagur + miðvikudagur + fimmtudagur + föstudagur + laugardagur + + + + + + + F1 + F2 + F3 + F4 + + + 1 + 2 + 3 + 4 + + + 1. fjórðungur + 2. fjórðungur + 3. fjórðungur + 4. fjórðungur + + + + + F1 + F2 + F3 + F4 + + + 1 + 2 + 3 + 4 + + + 1. fjórðungur + 2. fjórðungur + 3. fjórðungur + 4. fjórðungur + + + + + + + f.h. + e.h. + + + f.h. + e.h. + + + + + árdegi + síðdegi + + + + + + fyrir Krist + fyrir látlaus tímatal + eftir Krist + látlaus tímatal + + + f.Kr. + f.l.t. + e.Kr. + l.t. + + + f.k. + flt + e.k. + lt + + + + + + EEEE, d. MMMM y + + + + + d. MMMM y + + + + + d. MMM y + + + + + d.M.y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} 'kl.' {0} + + + + + {1} 'kl.' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d. + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y G + MMM y G + d. MMM y G + E, d. MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M. + E, d.M. + LLL + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm:ss + y + M. y + d.M.y + E, d.M.y + MMM y + d. MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + d.M.–d.M. + d.M.–d.M. + + + E, d.M. – E, d.M. + E, d.M. – E, d.M. + + + MMM–MMM + + + d.–d. MMM + d. MMM – d. MMM + + + E, d. – E, d. MMM + E, d. MMM – E, d. MMM + + + LLLL–LLLL + + + y–y + + + M.y – M.y + M.y – M.y + + + d.M.y – d.M.y + d.M.y – d.M.y + d.M.y – d.M.y + + + E, d.M.y – E, d.M.y + E, d.M.y – E, d.M.y + E, d.M.y – E, d.M.y + + + MMM–MMM y + MMM y – MMM y + + + d.–d. MMM y + d. MMM – d. MMM y + d. MMM y – d. MMM y + + + E, d. – E, d. MMM y + E, d. MMM – E, d. MMM y + E, d. MMM y – E, d. MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + tímabil + + + ár + á síðasta ári + á þessu ári + á næsta ári + + eftir {0} ár + eftir {0} ár + + + fyrir {0} ári + fyrir {0} árum + + + + mánuður + í síðasta mánuði + í þessum mánuði + í næsta mánuði + + eftir {0} mánuð + eftir {0} mánuði + + + fyrir {0} mánuði + fyrir {0} mánuðum + + + + vika + í síðustu viku + í þessari viku + í næstu viku + + eftir {0} viku + eftir {0} vikur + + + fyrir {0} viku + fyrir {0} vikum + + + + dagur + í fyrradag + í gær + í dag + á morgun + eftir tvo daga + + eftir {0} dag + eftir {0} daga + + + fyrir {0} degi + fyrir {0} dögum + + + + vikudagur + + + sunnudagur í síðustu viku + sunnudagur í þessari viku + sunnudagur í næstu viku + + + mánudagur í síðustu viku + mánudagur í þessari viku + mánudagur í næstu viku + + + þriðjudagur í síðustu viku + þriðjudagur í þessari viku + þriðjudagur í næstu viku + + + miðvikudagur í síðustu viku + miðvikudagur í þessari viku + miðvikudagur í næstu viku + + + fimmtudagur í síðustu viku + fimmtudagur í þessari viku + fimmtudagur í næstu viku + + + föstudagur í síðustu viku + föstudagur í þessari viku + föstudagur í næstu viku + + + laugardagur í síðustu viku + laugardagur í þessari viku + laugardagur í næstu viku + + + f.h./e.h. + + + klukkustund + + eftir {0} klukkustund + eftir {0} klukkustundir + + + fyrir {0} klukkustund + fyrir {0} klukkustundum + + + + mínúta + + eftir {0} mínútu + eftir {0} mínútur + + + fyrir {0} mínútu + fyrir {0} mínútum + + + + sekúnda + núna + + eftir {0} sekúndu + eftir {0} sekúndur + + + fyrir {0} sekúndu + fyrir {0} sekúndum + + + + tímabelti + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} + {0} (sumartími) + {0} (staðaltími) + {1} ({0}) + + Óþekkt borg + + + Kabúl + + + Antígva + + + Angvilla + + + Dumont d’Urville + + + Vín + + + Arúba + + + Bakú + + + Sarajevó + + + Dakka + + + Brussel + + + Sófía + + + Barein + + + Saint Barthélemy + + + Bermúda + + + Brúnei + + + Belís + + + Atikokan + + + St. John’s + + + Kókoseyjar + + + Zürich + + + Páskaeyja + + + Kostaríka + + + Grænhöfðaeyjar + + + Jólaey + + + Níkósía + + + Prag + + + Berlín + + + Djibútí + + + Kaupmannahöfn + + + Dóminíka + + + Algeirsborg + + + Kaíró + + + Asmara + + + Kanaríeyjar + + + Madríd + + + Fídjieyjar + + + Chuuk + + + Pohnpei + + + Færeyjar + + + París + + + + Sumartími í Bretlandi + + Lundúnir + + + Gíbraltar + + + Nuuk + + + Ittoqqortoormiit + + + Gvadelúp + + + Aþena + + + Suður-Georgía + + + Gvatemala + + + Gvam + + + Bissá + + + Gvæjana + + + Búdapest + + + Djakarta + + + + Sumartími á Írlandi + + + + Jerúsalem + + + Mön + + + Kalkútta + + + Bagdad + + + Teheran + + + Reykjavík + + + Róm + + + Jamaíka + + + Tókýó + + + Ankti Kristófer + + + Seúl + + + Kúveit + + + Cayman-eyjar + + + Beirút + + + Sankti Lúsía + + + Kólombó + + + Vilníus + + + Lúxemborg + + + Mónakó + + + Úlan Bator + + + Makaó + + + Martiník + + + Máritíus + + + Maldíveyjar + + + Mexíkóborg + + + Kankún + + + Kúala Lúmpúr + + + Osló + + + Katmandú + + + Nárú + + + Tahítí + + + Marquesas-eyjar + + + Varsjá + + + Púertó Ríkó + + + Azoreyjar + + + Lissabon + + + Palá + + + Asunción + + + Katar + + + Réunion + + + Búkarest + + + Belgrad + + + Moskva + + + Stokkhólmur + + + Singapúr + + + Sankti Helena + + + San Marínó + + + Saó Tóme + + + Lower Prince's Quarter + + + Damaskus + + + Túnisborg + + + Istanbúl + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Vatíkanið + + + Sankti Vinsent + + + St. Thomas + + + Ho Chi Minh-borg + + + Jóhannesarborg + + + + Afganistantími + + + + + Mið-Afríkutími + + + + + Austur-Afríkutími + + + + + Suður-Afríkutími + + + + + Vestur-Afríkutími + Staðaltími í Vestur-Afríku + Sumartími í Vestur-Afríku + + + + + Tími í Alaska + Staðaltími í Alaska + Sumartími í Alaska + + + + + Amasóntími + Staðaltími á Amasónsvæðinu + Sumartími á Amasónsvæðinu + + + + + Tími í miðhluta Bandaríkjanna og Kanada + Staðaltími í miðhluta Bandaríkjanna og Kanada + Sumartími í miðhluta Bandaríkjanna og Kanada + + + + + Tími í austurhluta Bandaríkjanna og Kanada + Staðaltími í austurhluta Bandaríkjanna og Kanada + Sumartími í austurhluta Bandaríkjanna og Kanada + + + + + Tími í Klettafjöllum + Staðaltími í Klettafjöllum + Sumartími í Klettafjöllum + + + + + Tími á Kyrrahafssvæðinu + Staðaltími á Kyrrahafssvæðinu + Sumartími á Kyrrahafssvæðinu + + + + + Tími í Anadyr + Staðaltími í Anadyr + Sumartími í Anadyr + + + + + Arabíutími + Staðaltími í Arabíu + Sumartími í Arabíu + + + + + Argentínutími + Staðaltími í Argentínu + Sumartími í Argentínu + + + + + Vestur-Argentínutími + Staðaltími í Vestur-Argentínu + Sumartími í Vestur-Argentínu + + + + + Armeníutími + Staðaltími í Armeníu + Sumartími í Armeníu + + + + + Tími á Atlantshafssvæðinu + Staðaltími á Atlantshafssvæðinu + Sumartími á Atlantshafssvæðinu + + + + + Tími í Mið-Ástralíu + Staðaltími í Mið-Ástralíu + Sumartími í Mið-Ástralíu + + + + + Tími í miðvesturhluta Ástralíu + Staðaltími í miðvesturhluta Ástralíu + Sumartími í miðvesturhluta Ástralíu + + + + + Tími í Austur-Ástralíu + Staðaltími í Austur-Ástralíu + Sumartími í Austur-Ástralíu + + + + + Tími í Vestur-Ástralíu + Staðaltími í Vestur-Ástralíu + Sumartími í Vestur-Ástralíu + + + + + Aserbaídsjantími + Staðaltími í Aserbaídsjan + Sumartími í Aserbaídsjan + + + + + Asóreyjatími + Staðaltími á Asóreyjum + Sumartími á Asóreyjum + + + + + Bangladesstími + Staðaltími í Bangladess + Sumartími í Bangladess + + + + + Bútantími + + + + + Bólivíutími + + + + + Brasilíutími + Staðaltími í Brasilíu + Sumartími í Brasilíu + + + + + Brúneitími + + + + + Grænhöfðaeyjatími + Staðaltími á Grænhöfðaeyjum + Sumartími á Grænhöfðaeyjum + + + + + Chamorro-staðaltími + + + + + Chatham-tími + Staðaltími í Chatham + Sumartími í Chatham + + + + + Síletími + Staðaltími í Síle + Sumartími í Síle + + + + + Kínatími + Staðaltími í Kína + Sumartími í Kína + + + + + Tími í Choibalsan + Staðaltími í Choibalsan + Sumartími í Choibalsan + + + + + Jólaeyjartími + + + + + Kókoseyjatími + + + + + Kólumbíutími + Staðaltími í Kólumbíu + Sumartími í Kólumbíu + + + + + Cooks-eyjatími + Staðaltími á Cooks-eyjum + Hálfsumartími á Cooks-eyjum + + + + + Kúbutími + Staðaltími á Kúbu + Sumartími á Kúbu + + + + + Davis-tími + + + + + Tími á Dumont-d’Urville + + + + + Tími á Tímor-Leste + + + + + Páskaeyjutími + Staðaltími á Páskaeyju + Sumartími á Páskaeyju + + + + + Ekvadortími + + + + + Mið-Evróputími + Staðaltími í Mið-Evrópu + Sumartími í Mið-Evrópu + + + + + Austur-Evróputími + Staðaltími í Austur-Evrópu + Sumartími í Austur-Evrópu + + + + + Vestur-Evróputími + Staðaltími í Vestur-Evrópu + Sumartími í Vestur-Evrópu + + + + + Falklandseyjatími + Staðaltími á Falklandseyjum + Sumartími á Falklandseyjum + + + + + Fídjíeyjatími + Staðaltími á Fídjíeyjum + Sumartími á Fídjíeyjum + + + + + Tími í Frönsku Gvæjana + + + + + Tími á frönsku suðurhafssvæðum og Suðurskautslandssvæði + + + + + Galapagos-tími + + + + + Gambier-tími + + + + + Georgíutími + Staðaltími í Georgíu + Sumartími í Georgíu + + + + + Gilberteyjatími + + + + + Greenwich-staðaltími + + + + + Austur-Grænlandstími + Staðaltími á Austur-Grænlandi + Sumartími á Austur-Grænlandi + + + + + Vestur-Grænlandstími + Staðaltími á Vestur-Grænlandi + Sumartími á Vestur-Grænlandi + + + + + Staðaltími við Persaflóa + + + + + Gvæjanatími + + + + + Tími á Hawaii og Aleútaeyjum + Staðaltími á Hawaí og Aleútaeyjum + Sumartími á Hawaii og Aleútaeyjum + + + + + Hong Kong-tími + Staðaltími í Hong Kong + Sumartími í Hong Kong + + + + + Tími í Hovd + Staðaltími í Hovd + Sumartími í Hovd + + + + + Indlandstími + + + + + Indlandshafstími + + + + + Indókínatími + + + + + Mið-Indónesíutími + + + + + Austur-Indónesíutími + + + + + Vestur-Indónesíutími + + + + + Íranstími + Staðaltími í Íran + Sumartími í Íran + + + + + Tími í Irkutsk + Staðaltími í Irkutsk + Sumartími í Irkutsk + + + + + Ísraelstími + Staðaltími í Ísrael + Sumartími í Ísrael + + + + + Japanstími + Staðaltími í Japan + Sumartími í Japan + + + + + Tími í Petropavlovsk-Kamchatski + Staðaltími í Petropavlovsk-Kamchatski + Sumartími í Petropavlovsk-Kamchatski + + + + + Tími í Austur-Kasakstan + + + + + Tími í Vestur-Kasakstan + + + + + Kóreutími + Staðaltími í Kóreu + Sumartími í Kóreu + + + + + Kosrae-tími + + + + + Tími í Krasnoyarsk + Staðaltími í Krasnoyarsk + Sumartími í Krasnoyarsk + + + + + Kirgisistantími + + + + + Línueyjatími + + + + + Tími á Lord Howe-eyju + Staðaltími á Lord Howe-eyju + Sumartími á Lord Howe-eyju + + + + + Macquarie-eyjartími + + + + + Tími í Magadan + Staðaltími í Magadan + Sumartími í Magadan + + + + + Malasíutími + + + + + Maldíveyjatími + + + + + Tími á Markgreifafrúreyjum + + + + + Marshall-eyjatími + + + + + Máritíustími + Staðaltími á Máritíus + Sumartími á Máritíus + + + + + Mawson-tími + + + + + Tími í Úlan Bator + Staðaltími í Úlan Bator + Sumartími í Úlan Bator + + + + + Tími í Moskvu + Staðaltími í Moskvu + Sumartími í Moskvu + + + + + Mjanmartími + + + + + Nárútími + + + + + Nepaltími + + + + + Tími í Nýju-Kaledóníu + Staðaltími í Nýju-Kaledóníu + Sumartími í Nýju-Kaledóníu + + + + + Nýja-Sjálandstími + Staðaltími á Nýja-Sjálandi + Sumartími á Nýja-Sjálandi + + + + + Tími á Nýfundnalandi + Staðaltími á Nýfundnalandi + Sumartími á Nýfundnalandi + + + + + Niue-tími + + + + + Norfolk-eyjartími + + + + + Tími í Fernando de Noronha + Staðaltími í Fernando de Noronha + Sumartími í Fernando de Noronha + + + + + Tími í Novosibirsk + Staðaltími í Novosibirsk + Sumartími í Novosibirsk + + + + + Tími í Omsk + Staðaltími í Omsk + Sumartími í Omsk + + + + + Pakistantími + Staðaltími í Pakistan + Sumartími í Pakistan + + + + + Palátími + + + + + Tími á Papúa Nýju-Gíneu + + + + + Paragvætími + Staðaltími í Paragvæ + Sumartími í Paragvæ + + + + + Perútími + Staðaltími í Perú + Sumartími í Perú + + + + + Filippseyjatími + Staðaltími á Filippseyjum + Sumartími á Filippseyjum + + + + + Fönixeyjatími + + + + + Tími á Sankti Pierre og Miquelon + Staðaltími á Sankti Pierre og Miquelon + Sumartími á Sankti Pierre og Miquelon + + + + + Pitcairn-tími + + + + + Ponape-tími + + + + + Réunion-tími + + + + + Rothera-tími + + + + + Tími í Sakhalin + Staðaltími í Sakhalin + Sumartími í Sakhalin + + + + + Tími í Samara + Staðaltími í Samara + Sumartími í Samara + + + + + Tími í Samóa + Staðaltími á Samóa + Sumartími í Samóa + + + + + Seychelles-eyjatími + + + + + Singapúrtími + + + + + Salómonseyjatími + + + + + Suður-Georgíutími + + + + + Súrinamtími + + + + + Syowa-tími + + + + + Tahítítími + + + + + Taipei-tími + Staðaltími í Taipei + Sumartími í Taipei + + + + + Tadsjíkistantími + + + + + Tókelátími + + + + + Tongatími + Staðaltími á Tonga + Sumartími á Tonga + + + + + Chuuk-tími + + + + + Túrkmenistantími + Staðaltími í Túrkmenistan + Sumartími í Túrkmenistan + + + + + Túvalútími + + + + + Úrúgvætími + Staðaltími í Úrúgvæ + Sumartími í Úrúgvæ + + + + + Úsbekistantími + Staðaltími í Úsbekistan + Sumartími í Úsbekistan + + + + + Vanúatútími + Staðaltími í Vanúatú + Sumartími í Vanúatú + + + + + Venesúelatími + + + + + Tími í Vladivostok + Staðaltími í Vladivostok + Sumartími í Vladivostok + + + + + Tími í Volgograd + Staðaltími í Volgograd + Sumartími í Volgograd + + + + + Vostok-tími + + + + + Wake-eyjartími + + + + + Tími á Wallis- og Fútúnaeyjum + + + + + Tími í Yakutsk + Staðaltími í Yakutsk + Sumartími í Yakutsk + + + + + Tími í Yekaterinburg + Staðaltími í Yekaterinborg + Sumartími í Yekaterinburg + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 þúsund + 0 þúsund + 00 þúsund + 00 þúsund + 000 þúsund + 000 þúsund + 0 milljón + 0 milljónir + 00 milljónir + 00 milljónir + 000 milljón + 000 milljónir + 0 milljarður + 0 milljarðar + 00 milljarðar + 00 milljarðar + 000 milljarðar + 000 milljarðar + 0 billjón + 0 billjónir + 00 billjónir + 00 billjónir + 000 billjónir + 000 billjónir + + + + + 0 þ'.' + 0 þ'.' + 00 þ'.' + 00 þ'.' + 000 þ'.' + 000 þ'.' + 0 m'.' + 0 m'.' + 00 m'.' + 00 m'.' + 000 m'.' + 000 m'.' + 0 ma'.' + 0 ma'.' + 00 ma'.' + 00 ma'.' + 000 ma'.' + 000 ma'.' + 0 bn + 0 bn + 00 bn + 00 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Andorrskur peseti + + + Arabískt dírham + arabískt dírham + arabísk dírhöm + + + Afgani + afgani + afganar + + + Albanskt lek + albanskt lek + albönsk lek + + + Armenskt dramm + armenskt dramm + armensk drömm + + + Hollenskt Antillugyllini + hollenskt Antillugyllini + hollensk Antillugyllini + + + Angólsk kvansa + angólsk kvansa + angólskar kvönsur + + + Argentine Austral + + + Argentískur pesi (1983–1985) + + + Argentínskur pesi + argentínskur pesi + argentínskir pesar + + + Austurrískur skildingur + + + Ástralskur dalur + ástralskur dalur + ástralskir dalir + + + Arúbönsk flórína + arúbönsk flórína + arúbanskar flórínur + + + Aserskt manat + aserskt manat + asersk manöt + + + Skiptanlegt Bosníu og Hersegóvínu-mark + skiptanlegt Bosníu og Hersegóvínu-mark + skiptanleg Bosníu og Hersegóvínu-mörk + + + Barbadoskur dalur + barbadoskur dalur + barbadoskir dalir + + + Bangladessk taka + bangladessk taka + bangladesskar tökur + + + Belgískur franki + + + Lef + + + Búlgarskt lef + búlgarskt lef + búlgörsk lef + + + Bareinskur denari + bareinskur denari + bareinskir denarar + + + Búrúndískur franki + búrúndískur franki + búrúndískir frankar + + + Bermúdadalur + Bermúdadalur + Bermúdadalir + + + Brúneiskur dalur + brúneiskur dalur + brúneiskir dalir + + + Bólivíani + bólivíani + bólivíanar + + + Bólivískur pesi + + + Bolivian Mvdol + + + Brasilískt ríal + brasilískt ríal + brasilísk ríöl + + + Bahamadalur + Bahamadalur + Bahamadalir + + + Bútanskt núltrum + bútanskt núltrum + bútönsk núltrum + + + Búrmverskt kjat + + + Botsvönsk púla + botsvönsk púla + botsvanskar púlur + + + Hvítrússnesk rúbla + hvítrússnesk rúbla + hvítrússneskar rúblur + + + Belískur dalur + belískur dalur + belískir dalir + + + Kanadískur dalur + kanadískur dalur + kanadískir dalir + CAD + + + Kongóskur franki + kongóskur franki + kongóskir frankar + + + Svissneskur franki + svissneskur franki + svissneskir frankar + + + Chilean Unidades de Fomento + + + Síleskur pesi + síleskur pesi + síleskir pesar + + + Kínverskt júan + kínverskt júan + kínversk júön + CN¥ + + + Kólumbískur pesi + kólumbískur pesi + kólumbískir pesar + + + Kostarískt kólon + kostarískt kólon + kostarísk kólon + + + Tékknesk króna, eldri + + + Kúbverskur skiptanlegur pesi + kúbverskur skiptanlegur pesi + kúbverskir skiptanlegir pesar + + + Kúbverskur pesi + kúbverskur pesi + kúbverskir pesar + + + Grænhöfðeyskur skúti + grænhöfðeyskur skúti + grænhöfðeyskir skútar + + + Kýpverskt pund + + + Tékknesk króna + tékknesk króna + tékkneskar krónur + + + Austurþýskt mark + + + Þýskt mark + + + Djíbútískur franki + djíbútískur franki + djíbútískir frankar + + + Dönsk króna + dönsk króna + danskar krónur + + + Dóminískur pesi + dóminískur pesi + dóminískir pesar + + + Alsírskur denari + alsírskur denari + alsírskir denarar + + + Ecuador Sucre + + + Eistnesk króna + eistnesk króna + eistnesku krónur + + + Egypskt pund + egypskt pund + egypsk pund + + + Erítresk nakfa + erítresk nakfa + erítreskar nökfur + + + Spænskur peseti + + + Eþíópískt birr + eþíópískt birr + eþíópísk birr + + + Evra + evra + evrur + + + + Finnskt mark + + + Fídjeyskur dalur + fídjeyskur dalur + fídjeyskir dalir + + + Falklenskt pund + falklenskt pund + falklensk pund + + + Franskur franki + + + Sterlingspund + sterlingspund + sterlingspund + + + Georgískur lari + georgískur lari + georgískir larar + + + Ganverskur sedi + ganverskur sedi + ganverskir sedar + + + Gíbraltarspund + Gíbraltarspund + Gíbraltarspund + + + Gambískur dalasi + gambískur dalasi + gambískir dalasar + + + Gíneufranki + Gíneufranki + Gíneufrankar + + + Drakma + + + Gvatemalskt kvesal + gvatemalskt kvesal + gvatemölsk kvesöl + + + Portúgalskur, gíneskur skúti + + + Gvæjanskur dalur + gvæjanskur dalur + gvæjanskir dalir + + + Hong Kong-dalur + Hong Kong-dalur + Hong Kong-dalir + + + Hondúrsk lempíra + hondúrsk lempíra + hondúrskar lempírur + + + Króatísk kúna + króatísk kúna + króatískar kúnur + + + Haítískur gúrdi + haítískur gúrdi + haítískir gúrdar + + + Ungversk fórinta + ungversk fórinta + ungverskar fórintur + + + Indónesísk rúpía + indónesísk rúpía + indónesískar rúpíur + + + Írskt pund + + + Ísraelskt pund + + + Nýr ísraelskur sikill + nýr ísraelskur sikill + nýir ísraelskir siklar + + + Indversk rúpía + indversk rúpía + indverskar rúpíur + + + + Írakskur denari + írakskur denari + írakskir denarar + + + Íranskt ríal + íranskt ríal + írönsk ríöl + + + Íslensk króna + íslensk króna + íslenskar krónur + kr + + + Ítölsk líra + + + Jamaískur dalur + jamaískur dalur + jamaískir dalir + + + Jórdanskur denari + jórdanskur denari + jórdanskir denarar + + + Japanskt jen + japanskt jen + japönsk jen + JP¥ + + + Kenískur skildingur + kenískur skildingur + kenískir skildingar + + + Kirgiskt som + kirgiskt som + kirgisk som + + + Kambódískt ríal + kambódískt ríal + kambódísk ríöl + + + Kómoreyskur franki + kómoreyskur franki + kómoreyskir frankar + + + Norðurkóreskt vonn + norðurkóreskt vonn + norðurkóresk vonn + + + Suðurkóreskt vonn + suðurkóreskt vonn + suðurkóresk vonn + + + Kúveiskur denari + kúveiskur denari + kúveiskir denarar + + + Caymaneyskur dalur + caymaneyskur dalur + caymaneyskir dalir + + + Kasakst tengi + kasakst tengi + kasöksk tengi + + + Laoskt kip + laoskt kip + laosk kip + + + Líbanskt pund + líbanskt pund + líbönsk pund + + + Srílönsk rúpía + srílönsk rúpía + srílanskar rúpíur + + + Líberískur dalur + líberískur dalur + líberískir dalir + + + Lesotho Loti + + + Litháískt lít + litháískt lít + litháísk lít + + + Lithuanian Talonas + + + Lúxemborgarfranki + + + Lettneskt lat + lettneskt lat + lettnesk löt + + + Lettnesk rúbla + + + Líbískur denari + líbískur denari + líbískir denarar + + + Marokkóskt dírham + marokkóskt dírham + marokkósk dírhöm + + + Marokkóskur franki + + + Moldavískt lei + moldavískt lei + moldavísk lei + + + Madagaskararjari + Madagaskararjari + Madagaskararjarar + + + Madagaskur franki + + + Makedónskur denari + makedónskur denari + makedónskir denarar + + + Malískur franki + + + Mjanmarskt kjat + mjanmarskt kjat + mjanmörsk kjöt + + + Mongólskur túríkur + mongólskur túríkur + mongólskir túríkar + + + Makaópataka + Makaópataka + Makaópatökur + + + Máritönsk úgía + máritönsk úgía + máritanskar úgíur + + + Meltnesk líra + + + Maltneskt pund + + + Máritísk rúpía + máritísk rúpía + máritískar rúpíur + + + Maldíveysk rúpía + maldíveysk rúpía + maldíveyskar rúpíur + + + Malavísk kvaka + malavísk kvaka + malavískar kvökur + + + Mexíkóskur pesi + mexíkóskur pesi + mexíkóskir pesar + MXN + + + Mexíkóskur silfurpesi (1861–1992) + + + Mexíkóskur pesi, UDI + + + Malasískt ringit + malasískt ringit + malasísk ringit + + + Mósambískur skúti + + + Mósambískt metikal + mósambískt metikal + mósambísk metiköl + + + Namibískur dalur + namibískur dalur + namibískir dalir + + + Nígerísk næra + nígerísk næra + nígerískar nærur + + + Níkarögsk kordóva (1988–1991) + Níkarögsk kordóva (1988–1991) + Níkaragskar kordóvur (1988–1991) + + + Níkarögsk kordóva + níkarögsk kordóva + níkaragskar kordóvur + + + Hollenskt gyllini + + + Norsk króna + norsk króna + norskar krónur + + + Nepölsk rúpía + nepölsk rúpía + nepalskar rúpíur + + + Nýsjálenskur dalur + nýsjálenskur dalur + nýsjálenskir dalir + + + Ómanskt ríal + ómanskt ríal + ómönsk ríöl + + + Balbói + balbói + balbóar + + + Perúskt sól + perúskt sól + perúsk sól + + + Papúsk kína + papúsk kína + papúskar kínur + + + Filippseyskur pesi + filippseyskur pesi + filippseyskir pesar + + + Pakistönsk rúpía + pakistönsk rúpía + pakistanskar rúpíur + + + Pólskt slot + pólskt slot + pólsk slot + + + Slot + + + Portúgalskur skúti + + + Paragvæskt gvaraní + paragvæskt gvaraní + paragvæsk gvaraní + + + Katarskt ríal + katarskt ríal + katörsk ríöl + + + Rúmenskt lei (1952–2006) + Rúmenskt lei (1952–2006) + Rúmenskt lei (1952–2006) + + + Rúmenskt lei + rúmenskt lei + rúmensk lei + + + Serbneskur denari + serbneskur denari + serbneskir denarar + + + Rússnesk rúbla + rússnesk rúbla + rússneskar rúblur + + + Rússnesk rúbla (1991–1998) + + + Rúandskur franki + rúandskur franki + rúandskir frankar + + + Sádiarabískt ríal + sádiarabískt ríal + sádiarabísk ríöl + + + Salómonseyskur dalur + salómonseyskur dalur + salómonseyskir dalir + + + Seychellesrúpía + Seychellesrúpía + Seychellesrúpíur + + + Súdanskur denari + + + Súdanskt pund + súdanskt pund + súdönsk pund + + + Súdanskt pund (1957–1998) + + + Sænsk króna + sænsk króna + sænskar krónur + + + Singapúrskur dalur + singapúrskur dalur + singapúrskir dalir + + + Helenskt pund + helenskt pund + helensk pund + + + Slóvenskur dalur + + + Slóvakísk króna + + + Síerraleónsk ljóna + síerraleónsk ljóna + síerraleónskar ljónur + + + Sómalískur skildingur + sómalískur skildingur + sómalískir skildingar + + + Súrínamdalur + Súrínamdalur + Súrínamdalir + + + Suriname Guilder + + + Suðursúdanskt pund + suðursúdanskt pund + suðursúdönsk pund + + + Saó Tóme og Prinsípe-dóbra + Saó Tóme og Prinsípe-dóbra + Saó Tóme og Prinsípe-dóbrur + + + Soviet Rouble + + + El Salvador Colon + El Salvador Colon + El Salvador Colon + + + Sýrlenskt pund + sýrlenskt pund + sýrlensk pund + + + Svasílenskur lílangeni + svasílenskur lílangeni + svasílenskir lílangenar + + + Taílenskt bat + taílenskt bat + taílensk böt + ฿ + + + Tadsjiksk rúbla + + + Tadsjikskur sómóni + tadsjikskur sómóni + tadsjikskir sómónar + + + Túrkmenskt manat (1993–2009) + Túrkmenskt manat (1993–2009) + Túrkmenskt manat (1993–2009) + + + Túrkmenskt manat + túrkmenskt manat + túrkmensk manöt + + + Túniskur denari + túniskur denari + túniskir denarar + + + Tongapanga + Tongapanga + Tongapöngur + + + Tímorskur skúti + + + Tyrknesk líra (1922–2005) + + + Tyrknesk líra + tyrknesk líra + tyrkneskar lírur + + + Trínidad og Tóbagó-dalur + Trínidad og Tóbagó-dalur + Trínidad og Tóbagó-dalir + + + Taívanskur dalur + taívanskur dalur + taívanskir dalir + + + Tansanískur skildingur + tansanískur skildingur + tansanískir skildingar + + + Úkraínsk hrinja + úkraínsk hrinja + úkraínskar hrinjur + + + Ukrainian Karbovanetz + + + Úgandskur skildingur + úgandskur skildingur + úgandskir skildingur + + + Bandaríkjadalur + Bandaríkjadalur + Bandaríkjadalir + USD + + + Bandaríkjadalur (næsta dag) + + + Bandaríkjadalur (sama dag) + + + Úrúgvæskur pesi + úrúgvæskur pesi + úrúgvæskir pesar + + + Úsbekskt súm + úsbekskt súm + úsbeksk súm + + + Bolívar í Venesúela (1871–2008) + + + Venesúelskur bólívari + venesúelskur bólívari + venesúelskir bólívarar + + + Víetnamskt dong + víetnamskt dong + víetnömsk dong + + + Vanúatúskt vatú + vanúatúskt vatú + vanúatúsk vatú + + + Samóatala + Samóatala + Samóatölur + + + Miðafrískur franki + miðafrískur franki + miðafrískir frankar + FCFA + + + unse silfur + unse silfur + unse silfur + + + unse gull + unse gull + unse gull + + + Austurkarabískur dalur + austurkarabískur dalur + austurkarabískir dalir + + + Sérstök dráttarréttindi + + + Franskur gullfranki + + + Franskur franki, UIC + + + Vesturafrískur franki + vesturafrískur franki + vesturafrískir frankar + CFA + + + unse palladín + unse palladín + unse palladín + + + Pólinesískur franki + pólinesískur franki + pólinesískir frankar + + + unse platína + unse platína + unse platína + + + Óþekktur gjaldmiðill + (óþekktur gjaldmiðill) + (óþekktur gjaldmiðill) + + + Jemenskur denari + + + Jemenskt ríal + jemenskt ríal + jemensk ríöl + + + Júgóslavneskur denari + + + Rand (viðskipta) + + + Suðurafrískt rand + suðurafrískt rand + suðurafrísk rönd + + + Zambian Kwacha (1968–2012) + + + Sambísk kvaka + sambísk kvaka + sambískar kvökur + + + Simbabveskur dalur + + + + {0}+ + {0}–{1} + + + + + + {0} á {1} + + + {0} G + {0} G + + + {0} bogamínúta + {0} bogamínútur + + + {0} bogasekúnda + {0} bogasekúndur + + + {0} gráða + {0} gráður + + + {0} ekra + {0} ekrur + + + {0} hektari + {0} hektarar + + + {0} ferfet + {0} ferfet + + + {0} ferkílómetri + {0} ferkílómetrar + + + {0} fermetri + {0} fermetrar + + + {0} fermíla + {0} fermílur + + + {0} dagur + {0} dagar + + + {0} klukkustund + {0} klukkustundir + + + {0} millisekúnda + {0} millisekúndur + + + {0} mínúta + {0} mínútur + + + {0} mánuður + {0} mánuðir + + + {0} sekúnda + {0} sekúndur + + + {0} vika + {0} vikur + + + {0} ár + {0} ár + + + {0} sentimetri + {0} sentimetrar + + + {0} fet + {0} fet + + + {0} tomma + {0} tommu + + + {0} kílómetri + {0} kílómetrar + + + {0} ljósár + {0} ljósár + + + {0} metri + {0} metrar + + + {0} míla + {0} mílur + + + {0} millimetri + {0} millimetrar + + + {0} píkómetri + {0} píkómetrar + + + {0} yard + {0} yardar + + + {0} gramm + {0} grömm + + + {0} kílógramm + {0} kílógrömm + + + {0} únsa + {0} únsur + + + {0} pund + {0} pund + + + {0} hestafl + {0} hestöfl + + + {0} kílóvatt + {0} kílóvött + + + {0} vatt + {0} vött + + + {0} hektópaskal + {0} hektópasköl + + + {0} tomma af kvikasilfri + {0} tommur af kvikvasilfri + + + {0} millibar + {0} millibör + + + {0} kílómetri á klukkustund + {0} kílómetrar á klukkustund + + + {0} metri á sekúndu + {0} metrar á sekúndu + + + {0} míla á klukkustund + {0} mílur á klukkustund + + + {0} gráða á Celsíus + {0} gráður á Celsíus + + + {0} gráða á Fahrenheit + {0} gráður á Fahrenheit + + + {0} rúmkílómetri + {0} rúmkílómetrar + + + {0} rúmmíla + {0} rúmmílur + + + {0} lítri + {0} lítrar + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ek. + {0} ek. + + + {0} ha + {0} ha + + + {0} ferfet + {0} ferfet + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} fermíla + {0} fermílur + + + {0} dagur + {0} dagar + + + {0} klst. + {0} klst. + + + {0} ms + {0} ms + + + {0} mín. + {0} mín. + + + {0} mán. + {0} mán. + + + {0} sek. + {0} sek. + + + {0} vika + {0} vikur + + + {0} ár + {0} ár + + + {0} cm + {0} cm + + + {0} fet + {0} fet + + + {0} t. + {0} t. + + + {0} km + {0} km + + + {0} ljósár + {0} ljósár + + + {0} m + {0} m + + + {0} mí + {0} mí + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} y. + {0} y. + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} únsa + {0} únsur + + + {0} p. + {0} p. + + + {0} hestafl + {0} hestöfl + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} tomma Hg + {0} tommur Hg + + + {0} mbar + {0} mbör + + + {0} km/klst. + {0} km/klst. + + + {0} m/sek. + {0} m/sek. + + + {0} míla/klst. + {0} mílur/klst. + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} rúmmíla + {0} rúmmílur + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ek. + {0} ek. + + + {0} ha + {0} ha + + + {0} ferfet + {0} ferfet + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0}mí² + {0}mí² + + + {0} d. + {0} d. + + + {0} klst. + {0} klst. + + + {0}ms + {0}ms + + + {0} mín. + {0} mín. + + + {0} mán. + {0} mán. + + + {0} sek. + {0} sek. + + + {0} v. + {0} v. + + + {0}á + {0}á + + + {0} cm + {0} cm + + + {0} fet + {0} fet + + + {0}″ + {0}″ + + + {0} km + {0} km + + + {0} lj. + {0} lj. + + + {0} m + {0} m + + + {0} mí + {0} mí + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} únsa + {0} únsur + + + {0} p. + {0} p. + + + {0} ek + {0} ek + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0}" Hg + {0}" Hg + + + {0} mbar + {0} mbör + + + {0} km/klst. + {0} km/klst. + + + {0} m/sek. + {0} m/sek. + + + {0} míla/klst. + {0} míl./klst. + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0}mi³ + {0}mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0} {1} + {0} {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + + + já:j + nei:n + + + + diff --git a/library/Zend/Locale/Data/is_IS.xml b/library/Zend/Locale/Data/is_IS.xml new file mode 100755 index 000000000..37a8cb60b --- /dev/null +++ b/library/Zend/Locale/Data/is_IS.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/it.xml b/library/Zend/Locale/Data/it.xml new file mode 100755 index 000000000..5ff9e14df --- /dev/null +++ b/library/Zend/Locale/Data/it.xml @@ -0,0 +1,5159 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abcaso + accinese + acioli + adangme + adyghe + avestan + afrikaans + afrihili + aghem + ainu + akan + accado + aleuto + altai meridionale + amarico + aragonese + inglese antico + angika + arabo + arabo moderno standard + aramaico + araucano + arapaho + aruaco + assamese + asu + asturiano + avaro + awadhi + aymara + azerbaigiano + azero + baschiro + beluci + balinese + basa + bamun + ghomala + bielorusso + begia + wemba + bena + bafut + bulgaro + bhojpuri + bislama + bicol + bini + kom + siksika + bambara + bengalese + tibetano + bretone + braj + bodo + bosniaco + akoose + buriat + bugi + bulu + blin + medumba + catalano + caddo + caribico + cayuga + atsam + ceceno + cebuano + chiga + chamorro + chibcha + ciagataico + chuukese + mari + gergo chinook + choctaw + chipewyan + cherokee + cheyenne + curdo sorani + corso + copto + cree + turco crimeo + ceco + kashubian + slavo della Chiesa + chuvash + gallese + danese + dakota + dargwa + taita + tedesco + tedesco austriaco + alto tedesco svizzero + delaware + slave + dogrib + dinca + zarma + dogri + basso sorabo + duala + olandese medio + divehi + jola-fony + diula + dzongkha + dazaga + embu + ewe + efik + egiziano antico + ekajuka + greco + elamitico + inglese + inglese australiano + inglese canadese + inglese britannico + inglese (GB) + inglese americano + inglese (USA) + inglese medio + esperanto + spagnolo + spagnolo latinoamericano + spagnolo europeo + spagnolo messicano + estone + basco + ewondo + persiano + fang + fanti + fulah + finlandese + filippino + figiano + faroese + fon + francese + francese canadese + francese svizzero + francese medio + francese antico + frisone settentrionale + frisone orientale + friulano + frisone occidentale + irlandese + ga + gayo + gbaya + gaelico scozzese + geez + gilbertese + galiziano + tedesco medio alto + guarana + tedesco antico alto + gondi + gorontalo + gotico + gerbo + greco antico + tedesco svizzero + gujarati + gusii + manx + gwichʼin + haussa + haida + hawaiano + ebraico + hindi + hiligayna + hittite + hmong + hiri motu + croato + alto sorabo + haitiano + ungherese + hupa + armeno + herero + interlingua + iban + ibibio + indonesiano + interlingue + igbo + sichuan yi + inupiak + ilocano + ingush + ido + islandese + italiano + inuktitut + giapponese + lojban + Ngamambo + machame + giudeo persiano + giudeo arabo + giavanese + georgiano + kara-kalpak + kabyle + kachin + kai + kamba + kawi + kabardia + kanembu + tyap + makonde + capoverdiano + koro + kongo + khasi + khotanese + koyra chiini + kikuyu + kuanyama + kazako + kako + kalaallisut + kalenjin + khmer + kimbundu + kannada + coreano + konkani + kosraean + kpelle + kanuri + karachay-Balkar + careliano + kurukh + kashmiri + shambala + bafia + coloniese + curdo + kumyk + kutenai + komi + cornico + kirghiso + latino + ladino + langi + lahnda + lamba + lussemburghese + lezghian + ganda + limburgese + lingala + lao + lolo bantu + lozi + lituano + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + luyia + lettone + madurese + mafa + magahi + maithili + makasar + mandingo + masai + maba + moksha + mandar + mende + meru + creolo mauriziano + malgascio + irlandese medio + makhuwa-meetto + Meta' + marshallese + maori + micmac + menangkabau + macedone + malayalam + mongolo + manchu + manipuri + mohawk + mossi + marathi + malese + maltese + mundang + multilingua + creek + mirandese + marwari + birmano + myene + erzya + nauru + napoletano + nama + norvegese bokmal + ndebele del nord + basso tedesco + nepalese + newari + ndonga + nias + niue + olandese + fiammingo + kwasio + norvegese nynorsk + ngiemboon + norvegese + nogai + norse antico + n'ko + ndebele del sud + sotho del nord + nuer + navajo + newari classico + nyanja + nyamwezi + nyankole + nyoro + nzima + occitano + ojibwa + oromo + oriya + ossetico + osage + turco ottomano + punjabi + pangasinan + pahlavi + pampanga + papiamento + palau + persiano antico + fenicio + pali + polacco + ponape + provenzale antico + pashto + portoghese + portoghese brasiliano + portoghese europeo + quechua + rajasthani + rapanui + rarotonga + romancio + rundi + rumeno + moldavo + rombo + romani + root + russo + arumeno + kinyarwanda + rwa + sanscrito + sandawe + yakut + aramaico samaritano + samburu + sasak + santali + ngambay + sangu + sardo + siciliano + scozzese + sindhi + sami del nord + seneca + sena + selkup + koyraboro senni + sango + irlandese antico + serbo-croato + tachelhit + shan + chadian arabic + singalese + sidamo + slovacco + sloveno + samoano + sami del sud + sami lule + sami inari + sami skolt + shona + soninke + somalo + sogdiano + albanese + serbo + sranan tongo + serer + swati + saho + sotho del sud + sundanese + sukuma + susu + sumero + svedese + swahili + comoriano + congo swahili + siriaco classico + siriaco + tamil + telugu + temne + teso + tereno + tetum + tagicco + thai + tigrino + tigre + tiv + turcomanno + tokelau + tagalog + klingon + tlingit + tamashek + tswana + tongano + nyasa del Tonga + tok pisin + turco + taroko + tsonga + tsimshian + tatarico + tumbuka + tuvalu + ci + tasawaq + taitiano + tuvinian + tamazight + udmurt + uigurico + uiguro + ugaritico + ucraino + mbundu + lingua imprecisata + urdu + usbeco + vai + venda + vietnamita + volapük + voto + vunjo + vallone + walser + walamo + waray + washo + wolof + kalmyk + xhosa + soga + yao (bantu) + yapese + yangben + yemba + yiddish + yoruba + cantonese + zhuang + zapotec + blissymbol + zenaga + tamazight del Marocco standard + cinese + cinese semplificato + cinese tradizionale + zulu + zuni + nessun contenuto linguistico + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mondo + Africa + Nord America + America del Sud + Oceania + Africa occidentale + America centrale + Africa orientale + Africa del Nord + Africa centrale + Africa del Sud + Americhe + America del Nord + Caraibi + Asia orientale + Asia del Sud + Asia sudorientale + Europa del Sud + Australasia + Melanesia + Regione Micronesiana + Polinesia + Asia + Asia centrale + Asia occidentale + Europa + Europa orientale + Europa del Nord + Europa occidentale + America Latina + Isola di Ascensione + Andorra + Emirati Arabi Uniti + Afghanistan + Antigua e Barbuda + Anguilla + Albania + Armenia + Antille Olandesi + Angola + Antartide + Argentina + Samoa Americane + Austria + Australia + Aruba + Isole Aland + Azerbaigian + Bosnia Erzegovina + Barbados + Bangladesh + Belgio + Burkina Faso + Bulgaria + Bahrein + Burundi + Benin + San Bartolomeo + Bermuda + Brunei + Bolivia + Caraibi Olandesi + Brasile + Bahamas + Bhutan + Isola Bouvet + Botswana + Bielorussia + Belize + Canada + Isole Cocos + Congo - Kinshasa + Congo - RDC + Repubblica Centrafricana + Congo + Repubblica del Congo + Svizzera + Costa d’Avorio + Costa d'Avorio + Isole Cook + Cile + Camerun + Cina + Colombia + Isola di Clipperton + Costa Rica + Cuba + Capo Verde + Curaçao + Isola di Christmas + Cipro + Repubblica Ceca + Germania + Diego Garcia + Gibuti + Danimarca + Dominica + Repubblica Dominicana + Algeria + Ceuta e Melilla + Ecuador + Estonia + Egitto + Sahara Occidentale + Eritrea + Spagna + Etiopia + Unione Europea + Finlandia + Figi + Isole Falkland + Isole Falkland (isole Malvine) + Micronesia + Isole Faroe + Francia + Gabon + Regno Unito + GB + Grenada + Georgia + Guiana Francese + Guernsey + Ghana + Gibilterra + Groenlandia + Gambia + Guinea + Guadalupa + Guinea Equatoriale + Grecia + Georgia del Sud e Isole Sandwich del Sud + Guatemala + Guam + Guinea-Bissau + Guyana + RAS di Hong Kong + Hong-Kong + Isole Heard ed Isole McDonald + Honduras + Croazia + Haiti + Ungheria + Isole Canarie + Indonesia + Irlanda + Israele + Isola di Man + India + Territorio Britannico dell’Oceano Indiano + Iraq + Iran + Islanda + Italia + Jersey + Giamaica + Giordania + Giappone + Kenya + Kirghizistan + Cambogia + Kiribati + Comore + Saint Kitts e Nevis + Corea del Nord + Corea del Sud + Kuwait + Isole Cayman + Kazakistan + Laos + Libano + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Lussemburgo + Lettonia + Libia + Marocco + Monaco + Moldavia + Montenegro + Saint Martin + Madagascar + Isole Marshall + Repubblica di Macedonia + Repubblica ex Jugoslava di Macedonia + Mali + Myanmar + Mongolia + RAS di Macao + Macao + Isole Marianne Settentrionali + Martinica + Mauritania + Montserrat + Malta + Mauritius + Maldive + Malawi + Messico + Malesia + Mozambico + Namibia + Nuova Caledonia + Niger + Isola Norfolk + Nigeria + Nicaragua + Paesi Bassi + Norvegia + Nepal + Nauru + Niue + Nuova Zelanda + Oman + Panama + Perù + Polinesia Francese + Papua Nuova Guinea + Filippine + Pakistan + Polonia + Saint Pierre e Miquelon + Isole Pitcairn + Portorico + Territori palestinesi + Palestina + Portogallo + Palau + Paraguay + Qatar + Oceania lontana + Réunion + Romania + Serbia + Federazione Russa + Ruanda + Arabia Saudita + Isole Solomon + Seychelles + Sudan + Svezia + Singapore + Sant’Elena + Slovenia + Svalbard e Jan Mayen + Slovacchia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + Sudan del Sud + Sao Tomé e Príncipe + El Salvador + Sint Maarten + Siria + Swaziland + Tristan da Cunha + Isole Turks e Caicos + Ciad + Territori australi francesi + Togo + Tailandia + Tagikistan + Tokelau + Timor Est + Turkmenistan + Tunisia + Tonga + Turchia + Trinidad e Tobago + Tuvalu + Taiwan + Tanzania + Ucraina + Uganda + Isole minori lontane dagli USA + Stati Uniti + USA + Uruguay + Uzbekistan + Città del Vaticano + Saint Vincent e Grenadines + Venezuela + Isole Vergini Britanniche + Isole Vergini Americane + Vietnam + Vanuatu + Wallis e Futuna + Samoa + Kosovo + Yemen + Mayotte + Sudafrica + Zambia + Zimbabwe + Regione non valida o sconosciuta + + + ortografia tradizionale tedesca + ortografia resiana standard + ortografia tedesca del 1996 + francese medio-tardo fino al 1606 + primo francese moderno + accademico + romanizzazione di ALA-LC, versione 1997 + dialetto aluku + armeno orientale + armeno occidentale + alfabeto latino altaico unificato + dialetto San Giorgio/Bila + alfabeto bohorič + boontling + alfabeto Dajnko + primo inglese moderno + alfabeto fonetico internazionale IPA + alfabeto fonetico uralico UPA + romanizzazione Hepburn + ortografia comune + ortografia standard + dialetto resiano di Lipovaz + alfabeto Metelko + monotonico + dialetto Ndyuka + dialetto del Natisone + dialetto Gniva/Njiva + volapük moderno + dialetto Oseacco/Osojane + dialetto Pamaka + romanizzazione Pinyin + politonico + computer + ortografia revisionata + Volapük classico + resiano + saho + inglese scozzese standard + scouse + dialetto Stolvizza/Solbica + ortografia taraskievica + ortografia unificata + ortografia rivista unificata + valenziano + romanizzazione Wade-Giles + + + Calendario + Ordinamento Ignora simboli + Ordinamento Accento capovolto + Ordinamento Maiuscole/Minuscole + Ordinamento Distinzione fra maiuscole e minuscole + Ordinamento Kana + Ordinamento + Ordinamento normalizzato + Ordinamento numerico + Sicurezza ordinamento + Valuta + Numeri + Fuso orario + Variante lingua + Ordina come simboli + Uso privato + + + Cifre indo-arabe + Cifre indo-arabe estese + Numeri armeni + Numeri armeni minuscoli + Cifre balinesi + Cifre bengalesi + cinese tradizionale + Cifre brahmi + calendario buddista + Cifre chakma + Cifre cham + calendario cinese + Calendario copto + Calendario Dangi + Cifre devanagari + Ordinamento dizionario + Ordinamento Unicode predefinito + Numeri etiopi + Calendario etiope + Calendario etiope Amete Alem + Numeri finanziari + Cifre a larghezza intera + cinese semplificato + Numeri georgiani + Calendario gregoriano + Numeri greci + Numeri greci minuscoli + Cifre gujarati + Cifre gurmukhi + Numeri decimali cinesi + Numeri in cinese semplificato + Numeri finanziari in cinese semplificato + Numeri in cinese tradizionale + Numeri finanziari in cinese tradizionale + Numeri ebraici + calendario ebraico + Ordina tutto + calendario nazionale indiano + calendario islamico + calendario civile islamico + Calendario islamico (Arabia Saudita, osservazione) + Calendario islamico (tabulare, era astronomica) + Calendario islamico (Umm al-Qura) + Calendario ISO-8601 + calendario giapponese + Cifre giavanesi + Numeri giapponesi + Numeri finanziari giapponesi + Cifre Kayah Li + Cifre khmer + Cifre kannada + Cifre tai tham hora + Cifre tai tham tham + Cifre lao + Cifre occidentali + Cifre lepcha + Cifre limbu + Ordina prima lettere minuscole + Cifre malayalam + Numeri mongoli + Cifre Meetei Mayek + Cifre birmane + Cifre shan birmane + Cifre native + Cifre N'Ko + Ordina accenti normalmente + Ordina lettere maiuscole/minuscole normalmente + Ordina senza distinzione tra maiuscole e minuscole + Ordina Kana separatamente + Ordina senza normalizzazione + Ordina cifre individualmente + Ordina simboli + Cifre Ol Chiki + Cifre oriya + Cifre osmanya + Calendario persiano + ordine elenco telefonico + Ordinamento fonetico + ordine pinyin + Ordina solo lettere di base + Ordina accenti/lettere/larghezza/Kana + Ordinamento riformato + Calendario Minguo + Numeri romani + Numeri romani minuscoli + Cifre saurashtra + Ricerca generica + Cerca per consonante hangul iniziale + Ordina accenti + Ordina ignorando i simboli + Cifre sharada + Cifre Sora Sompeng + Ordinamento standard + ordine segni + Cifre sundanesi + Cifre takri + Cifre nuovo Tai Lue + Numeri tamil tradizionali + Cifre tamil + Cifre telugu + Ordina accenti/lettere/larghezza + Cifre thailandesi + Cifre tibetane + ordine tradizionale + Numeri tradizionali + Ordinamento in base ai radicali + Ordina prima lettere minuscole + Cifre Vai + Ordina accenti capovolti + Ordina distinzione tra maiuscole e minuscole + Ordina Kana diversamente + Ordina Unicode normalizzato + Ordina cifre numericamente + Ordinamento Zhuyin + + + BGN + Numerica + Tono + UNGEGN + Accenti + Larghezza intera + Metà larghezza + Jamo + Pinyin + Pubblicazione + + + metrico + britannico + USA + + + Lingua: {0} + Scrittura: {0} + Regione: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a à b c d e é è f g h i ì j k l m n o ó ò p q r s t u ù v w x y z] + [á â å ä ã æ ç ê ë í î ï ñ ô ö õ ø œ ß ú û ü ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- — , ; \: ! ? . … “ ” « » ( ) \[ \] \{ \} @ /] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + « + » + + + + + + + + + EB + + + + + + + + EEEE d MMMM U + + + + + dd MMMM U + + + + + dd/MMM U + + + + + dd/MM/yy + + + + + + + + + EEEE d MMMM y G + + + + + dd MMMM y G + + + + + dd/MMM/y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} 'alle' {0} + + + + + {1} 'alle' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + mm:ss + y G + y G + M/y GGGGG + d/M/y GGGGG + E d/M/y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + MMMM-MMMM y G + MMMM y - MMMM y G + + + + + + + + + gen + feb + mar + apr + mag + giu + lug + ago + set + ott + nov + dic + + + G + F + M + A + M + G + L + A + S + O + N + D + + + gennaio + febbraio + marzo + aprile + maggio + giugno + luglio + agosto + settembre + ottobre + novembre + dicembre + + + + + gen + feb + mar + apr + mag + giu + lug + ago + set + ott + nov + dic + + + G + F + M + A + M + G + L + A + S + O + N + D + + + Gennaio + Febbraio + Marzo + Aprile + Maggio + Giugno + Luglio + Agosto + Settembre + Ottobre + Novembre + Dicembre + + + + + + + dom + lun + mar + mer + gio + ven + sab + + + D + L + M + M + G + V + S + + + dom + lun + mar + mer + gio + ven + sab + + + domenica + lunedì + martedì + mercoledì + giovedì + venerdì + sabato + + + + + dom + lun + mar + mer + gio + ven + sab + + + D + L + M + M + G + V + S + + + dom + lun + mar + mer + gio + ven + sab + + + Domenica + Lunedì + Martedì + Mercoledì + Giovedì + Venerdì + Sabato + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1º trimestre + 2º trimestre + 3º trimestre + 4º trimestre + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + Primo trimestre + Secondo trimestre + Terzo trimestre + Quarto trimestre + + + + + + + m. + p. + + + AM + PM + + + + + + a.C. + BCE + d.C. + CE + + + aC + BCE + dC + CE + + + aC + BCE + dC + CE + + + + + + EEEE d MMMM y + + + + + dd MMMM y + + + + + dd/MMM/y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h.mm a + E HH.mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + mm:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + E dd/MM/y - E dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + MMMM-MMMM y + MMMM y - MMMM y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE d MMMM y G + + + + + dd MMMM y G + + + + + dd/MMM/y G + + + + + dd/MM/yy GGGGG + + + + + + + + Prima della R.O.C. + Minguo + + + + + + + era + + + anno + anno scorso + quest'anno + anno prossimo + + tra {0} anno + tra {0} anni + + + {0} anno fa + {0} anni fa + + + + mese + mese scorso + questo mese + mese prossimo + + tra {0} mese + tra {0} mesi + + + {0} mese fa + {0} mesi fa + + + + settimana + settimana scorsa + questa settimana + settimana prossima + + tra {0} settimana + tra {0} settimane + + + {0} settimana fa + {0} settimane fa + + + + giorno + l'altro ieri + ieri + oggi + domani + dopodomani + + tra {0} giorno + tra {0} giorni + + + {0} giorno fa + {0} giorni fa + + + + giorno della settimana + + + domenica scorsa + questa domenica + domenica prossima + + + lunedì scorso + questo lunedì + lunedì prossimo + + + martedì scorso + questo martedì + martedì prossimo + + + mercoledì scorso + questo mercoledì + mercoledì prossimo + + + giovedì scorso + questo giovedì + giovedì prossimo + + + venerdì scorso + questo venerdì + venerdì prossimo + + + sabato scorso + questo sabato + sabato prossimo + + + periodo del giorno + + + ora + + tra {0} ora + tra {0} ore + + + {0} ora fa + {0} ore fa + + + + minuto + + tra {0} minuto + tra {0} minuti + + + {0} minuto fa + {0} minuti fa + + + + secondo + ora + + tra {0} secondo + tra {0} secondi + + + {0} secondo fa + {0} secondi fa + + + + fuso orario + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Ora {0} + Ora legale: {0} + Ora standard: {0} + {1} ({0}) + + Città sconosciuta + + + Tirana + + + Dumont D'Urville + + + Tucumán + + + Cordova + + + Bruxelles + + + Bahrein + + + Saint-Barthélemy + + + Santarém + + + San Paolo + + + Atikokan + + + St. John’s + + + Zurigo + + + Pasqua + + + Bogotá + + + L'Avana + + + Capo Verde + + + Curaçao + + + Natale + + + Praga + + + Berlino + + + Gibuti + + + Copenaghen + + + Algeri + + + Il Cairo + + + Asmara + + + Canarie + + + Addis Abeba + + + Figi + + + Chuuk + + + Pohnpei + + + Isole Faeroe + + + Parigi + + + + Ora legale Regno Unito + + Londra + + + Caienna + + + Gibilterra + + + Nuuk + + + Ittoqqortoormiit + + + Guadalupa + + + Atene + + + Georgia meridionale + + + Guiana + + + Zagabria + + + Giacarta + + + + Ora legale Irlanda + + Dublino + + + Gerusalemme + + + Isola di Man + + + Kolkata + + + Teheran + + + Reykjavík + + + Roma + + + Giamaica + + + Comore + + + St. Kitts + + + Seul + + + Santa Lucia + + + Lussemburgo + + + Macao + + + Martinica + + + Maldive + + + Bahía de Banderas + + + Città del Messico + + + Mérida + + + Cancún + + + Kathmandu + + + Marchesi + + + Varsavia + + + Pitcairn, isole + + + Portorico + + + Azzorre + + + Lisbona + + + Asunción + + + La Riunione + + + Bucarest + + + Belgrado + + + Mosca + + + Stoccolma + + + Sant'Elena + + + Lubiana + + + Mogadiscio + + + São Tomé + + + Lower Prince's Quarter + + + Damasco + + + N'Djamena + + + Tunisi + + + Fuso orario Alaska + + + Beulah, Dakota del nord + + + New Salem, Dakota del nord + + + Center, Dakota del nord + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Samarcanda + + + Città del Vaticano + + + Saint Vincent + + + Saint Thomas + + + Ho Chi Minh + + + + Ora dell'Afghanistan + + + + + Ora dell'Africa centrale + + + + + Ora dell'Africa orientale + + + + + Ora dell'Africa meridionale + + + + + Ora dell'Africa occidentale + Ora standard dell'Africa occidentale + Ora legale dell'Africa occidentale + + + + + Ora dell'Alaska + Ora standard Alaska + Ora legale Alaska + + + + + Ora dell'Amazzonia + Ora standard dell'Amazzonia + Ora legale dell'Amazzonia + + + + + Ora centrale USA + Ora standard centrale USA + Ora legale centrale USA + + + + + Ora orientale USA + Ora standard orientale USA + Ora legale orientale USA + + + + + Ora Montagne Rocciose USA + Ora standard Montagne Rocciose USA + Ora legale Montagne Rocciose USA + + + + + Ora del Pacifico USA + Ora standard del Pacifico USA + Ora legale del Pacifico USA + + + + + Ora di Anadyr + Ora standard di Anadyr + Ora legale di Anadyr + + + + + Ora araba + Ora standard araba + Ora legale araba + + + + + Ora dell'Argentina + Ora standard dell'Argentina + Ora legale dell'Argentina + + + + + Ora dell'Argentina occidentale + Ora standard dell'Argentina occidentale + Ora legale dell'Argentina occidentale + + + + + Ora dell'Armenia + Ora standard dell'Armenia + Ora legale dell'Armenia + + + + + Ora dell'Atlantico + Ora standard dell'Atlantico + Ora legale dell'Atlantico + + + + + Ora dell'Australia centrale + Ora standard dell'Australia centrale + Ora legale dell'Australia centrale + + + + + Ora dell'Australia centroccidentale + Ora standard dell'Australia centroccidentale + Ora legale dell'Australia centroccidentale + + + + + Ora dell'Australia orientale + Ora standard dell'Australia orientale + Ora legale dell'Australia orientale + + + + + Ora dell'Australia occidentale + Ora standard dell'Australia occidentale + Ora legale dell'Australia occidentale + + + + + Ora dell'Azerbaigian + Ora standard dell'Azerbaigian + Ora legale dell'Azerbaigian + + + + + Ora delle Azzorre + Ora standard delle Azzorre + Ora legale delle Azzorre + + + + + Ora del Bangladesh + Ora standard del Bangladesh + Ora legale del Bangladesh + + + + + Ora del Bhutan + + + + + Ora della Bolivia + + + + + Ora di Brasilia + Ora standard di Brasilia + Ora legale di Brasilia + + + + + Ora del Brunei Darussalam + + + + + Ora di Capo Verde + Ora standard di Capo Verde + Ora legale di Capo Verde + + + + + Ora Chamorro + + + + + Ora delle Chatham + Ora standard delle Chatham + Ora legale delle Chatham + + + + + Ora del Cile + Ora standard del Cile + Ora legale del Cile + + + + + Ora della Cina + Ora standard della Cina + Ora legale della Cina + + + + + Ora di Choibalsan + Ora standard di Choibalsan + Ora legale di Choibalsan + + + + + Ora dell'Isola di Natale + + + + + Ora delle Isole Cocos + + + + + Ora della Colombia + Ora standard della Colombia + Ora legale della Colombia + + + + + Ora delle Isole Cook + Ora standard delle Isole Cook + Ora legale media delle Isole Cook + + + + + Ora di Cuba + Ora standard di Cuba + Ora legale di Cuba + + + + + Ora di Davis + + + + + Ora di Dumont-d'Urville + + + + + Ora di Timor Est + + + + + Ora dell'Isola di Pasqua + Ora standard dell'Isola di Pasqua + Ora legale dell'Isola di Pasqua + + + + + Ora dell'Ecuador + + + + + Ora dell'Europa centrale + Ora standard dell'Europa centrale + Ora legale dell'Europa centrale + + + CET + CET + CEST + + + + + Ora dell'Europa orientale + Ora standard dell'Europa orientale + Ora legale dell'Europa orientale + + + EET + EET + EEST + + + + + Ora dell'Europa occidentale + Ora standard dell'Europa occidentale + Ora legale dell'Europa occidentale + + + WET + WET + WEST + + + + + Ora delle Isole Falkland + Ora standard delle Isole Falkland + Ora legale delle Isole Falkland + + + + + Ora delle Fiji + Ora standard delle Fiji + Ora legale delle Fiji + + + + + Ora della Guiana francese + + + + + Ora delle Terre australi e antartiche francesi + + + + + Ora delle Galapagos + + + + + Ora di Gambier + + + + + Ora della Georgia + Ora standard della Georgia + Ora legale della Georgia + + + + + Ora delle Isole Gilbert + + + + + Ora del meridiano di Greenwich + + + + + Ora della Groenlandia orientale + Ora standard della Groenlandia orientale + Ora legale della Groenlandia orientale + + + + + Ora della Groenlandia occidentale + Ora standard della Groenlandia occidentale + Ora legale della Groenlandia occidentale + + + + + Ora del Golfo + + + + + Ora della Guyana + + + + + Ora delle isole Hawaii-Aleutine + Ora standard delle Isole Hawaii-Aleutine + Ora legale delle Isole Hawaii-Aleutine + + + + + Ora di Hong Kong + Ora standard di Hong Kong + Ora legale di Hong Kong + + + + + Ora di Hovd + Ora standard di Hovd + Ora legale di Hovd + + + + + Ora standard dell'India + + + + + Ora dell'Oceano Indiano + + + + + Ora dell'Indocina + + + + + Ora dell'Indonesia centrale + + + + + Ora dell'Indonesia orientale + + + + + Ora dell'Indonesia occidentale + + + + + Ora dell'Iran + Ora standard dell'Iran + Ora legale dell'Iran + + + + + Ora di Irkutsk + Ora standard di Irkutsk + Ora legale di Irkutsk + + + + + Ora di Israele + Ora standard di Israele + Ora legale di Israele + + + + + Ora del Giappone + Ora standard del Giappone + Ora legale del Giappone + + + + + Ora di Petropavlovsk-Kamchatski + Ora standard di Petropavlovsk-Kamchatski + Ora legale di Petropavlovsk-Kamchatski + + + + + Ora del Kazakistan orientale + + + + + Ora del Kazakistan occidentale + + + + + Ora coreana + Ora standard coreana + Ora legale coreana + + + + + Ora del Kosrae + + + + + Ora di Krasnoyarsk + Ora standard di Krasnoyarsk + Ora legale di Krasnoyarsk + + + + + Ora del Kirghizistan + + + + + Ora delle Sporadi equatoriali + + + + + Ora di Lord Howe + Ora standard di Lord Howe + Ora legale di Lord Howe + + + + + Ora dell'Isola Macquarie + + + + + Ora di Magadan + Ora standard di Magadan + Ora legale di Magadan + + + + + Ora della Malesia + + + + + Ora delle Maldive + + + + + Ora delle Marchesi + + + + + Ora delle Isole Marshall + + + + + Ora delle Mauritius + Ora standard delle Mauritius + Ora legale delle Mauritius + + + + + Ora di Mawson + + + + + Ora di Ulan Bator + Ora standard di Ulan Bator + Ora legale di Ulan Bator + + + + + Ora di Mosca + Ora standard di Mosca + Ora legale di Mosca + + + + + Ora della Birmania + + + + + Ora di Nauru + + + + + Ora del Nepal + + + + + Ora della Nuova Caledonia + Ora standard della Nuova Caledonia + Ora legale della Nuova Caledonia + + + + + Ora della Nuova Zelanda + Ora standard della Nuova Zelanda + Ora legale della Nuova Zelanda + + + + + Ora di Terranova + Ora standard di Terranova + Ora legale di Terranova + + + + + Ora di Niue + + + + + Ora delle Isole Norfolk + + + + + Ora di Fernando de Noronha + Ora standard di Fernando de Noronha + Ora legale di Fernando de Noronha + + + + + Ora di Novosibirsk + Ora standard di Novosibirsk + Ora legale di Novosibirsk + + + + + Ora di Omsk + Ora standard di Omsk + Ora legale di Omsk + + + + + Ora del Pakistan + Ora standard del Pakistan + Ora legale del Pakistan + + + + + Ora di Palau + + + + + Ora della Papua Nuova Guinea + + + + + Ora del Paraguay + Ora standard del Paraguay + Ora legale del Paraguay + + + + + Ora del Perù + Ora standard del Perù + Ora legale del Perù + + + + + Ora delle Filippine + Ora standard delle Filippine + Ora legale delle Filippine + + + + + Ora delle Isole della Fenice + + + + + Ora di Saint-Pierre e Miquelon + Ora standard di Saint-Pierre e Miquelon + Ora legale di Saint-Pierre e Miquelon + + + + + Ora delle Pitcairn + + + + + Ora di Pohnpei + + + + + Ora di Riunione + + + + + Ora di Rothera + + + + + Ora di Sakhalin + Ora standard di Sakhalin + Ora legale di Sakhalin + + + + + Ora di Samara + Ora standard di Samara + Ora legale di Samara + + + + + Ora di Samoa + Ora standard di Samoa + Ora legale di Samoa + + + + + Ora delle Seychelles + + + + + Ora Singapore + + + + + Ora delle Isole Salomone + + + + + Ora della Georgia del Sud + + + + + Ora del Suriname + + + + + Ora di Syowa + + + + + Ora di Tahiti + + + + + Ora di Taipei + Ora standard di Taipei + Ora legale di Taipei + + + + + Ora del Tagikistan + + + + + Ora di Tokelau + + + + + Ora di Tonga + Ora standard di Tonga + Ora legale di Tonga + + + + + Ora del Chuuk + + + + + Ora del Turkmenistan + Ora standard del Turkmenistan + Ora legale del Turkmenistan + + + + + Ora di Tuvalu + + + + + Ora dell'Uruguay + Ora standard dell'Uruguay + Ora legale dell'Uruguay + + + + + Ora dell'Uzbekistan + Ora standard dell'Uzbekistan + Ora legale dell'Uzbekistan + + + + + Ora del Vanuatu + Ora standard del Vanuatu + Ora legale del Vanuatu + + + + + Ora del Venezuela + + + + + Ora di Vladivostok + Ora standard di Vladivostok + Ora legale di Vladivostok + + + + + Ora di Volgograd + Ora standard di Volgograd + Ora legale di Volgograd + + + + + Ora di Vostok + + + + + Ora dell'Isola di Wake + + + + + Ora di Wallis e Futuna + + + + + Ora di Yakutsk + Ora standard di Yakutsk + Ora legale di Yakutsk + + + + + Ora di Ekaterinburg + Ora standard di Ekaterinburg + Ora legale di Ekaterinburg + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 migliaio + 0 migliaia + 00 migliaia + 00 migliaia + 000 migliaia + 000 migliaia + 0 milione + 0 milioni + 00 milioni + 00 milioni + 000 milioni + 000 milioni + 0 miliardi + 0 miliardi + 00 miliardi + 00 miliardi + 000 miliardi + 000 miliardi + 0 bilione + 0 bilioni + 00 bilioni + 00 bilioni + 000 bilioni + 000 bilioni + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 Mln + 0 Mln + 00 Mln + 00 Mln + 000 Mln + 000 Mln + 0 Mld + 0 Mld + 00 Mld + 00 Mld + 000 Mld + 000 Mld + 0 Bln + 0 Bln + 00 Bln + 00 Bln + 000 Bln + 000 Bln + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Peseta Andorrana + + + Dirham degli Emirati Arabi Uniti + dirham degli EAU + dirham degli EAU + + + Afgani (1927–2002) + + + Afghani + afghani + afghani + + + Lek Albanese + lek albanese + lek albanese + + + Dram Armeno + dram + dram + + + Fiorino delle Antille Olandesi + fiorino delle Antille Olandesi + fiorini delle Antille Olandesi + + + Kwanza Angolano + kwanza angolano + kwanza angolani + + + Kwanza Angolano (1977–1990) + + + Nuovo Kwanza Angolano (1990–2000) + + + Kwanza Reajustado Angolano (1995–1999) + + + Austral Argentino + + + Peso Argentino (vecchio Cod.) + + + Peso Argentino + peso argentino + pesos argentini + + + Scellino Austriaco + + + Dollaro Australiano + dollaro australiano + dollari australiani + A$ + + + Fiorino di Aruba + fiorino di Aruba + fiorini di Aruba + + + Manat Azero (1993–2006) + + + Manat Azero + manat azero + manat azeri + + + Dinar Bosnia-Herzegovina + + + Marco Conv. Bosnia-Erzegovina + marco bosniaco + marchi bosniaci + + + Dollaro di Barbados + dollaro di Barbados + dollari di Barbados + + + Taka Bangladese + taka bengalese + taka bengalesi + + + Franco Belga (convertibile) + + + Franco Belga + + + Franco Belga (finanziario) + + + Lev Bulgaro + + + Nuovo Lev Bulgaro + nuovo lev bulgaro + nuovi lev bulgari + + + Dinaro del Bahraini + dinaro del Bahrain + dinari del Bahrain + + + Franco del Burundi + franco del Burundi + franchi del Burundi + + + Dollaro delle Bermuda + dollaro delle Bermuda + dollari delle Bermuda + + + Dollaro del Brunei + dollaro del Brunei + dollari del Brunei + + + Boliviano + boliviano + boliviani + + + Peso Boliviano + + + Mvdol Boliviano + + + Cruzeiro Novo Brasiliano (1967–1986) + + + Cruzado Brasiliano + + + Cruzeiro Brasiliano (1990–1993) + + + Real Brasiliano + real brasiliano + real brasiliani + R$ + + + Cruzado Novo Brasiliano + + + Cruzeiro Brasiliano + + + Dollaro delle Bahamas + dollaro delle Bahamas + dollari delle Bahamas + + + Ngultrum Butanese + ngultrum del Bhutan + ngultrum del Bhutan + + + Kyat Birmano + + + Pula del Botswana + pula del Botswana + pula del Botswana + + + Nuovo Rublo Bielorussia (1994–1999) + + + Rublo Bielorussia + rublo bielorusso + rubli bielorussi + + + Dollaro del Belize + dollaro del Belize + dollari del Belize + + + Dollaro Canadese + dollaro canadese + dollari canadesi + CA$ + + + Franco Congolese + franco congolese + franchi congolesi + + + Franco Svizzero + franco svizzero + franchi svizzeri + + + Unidades de Fomento Chilene + + + Peso Cileno + peso cileno + pesos cileni + + + Renmimbi Cinese + renmimbi cinese + renmimbi cinesi + CN¥ + + + Peso Colombiano + peso colombiano + pesos colombiani + + + Colón Costaricano + colón costaricano + colón costaricani + + + Antico Dinaro Serbo + + + Corona forte cecoslovacca + + + Peso Cubano Convertibile + peso cubano convertibile + pesos cubani convertibili + + + Peso Cubano + peso cubano + pesos cubani + + + Escudo del Capo Verde + escudo del Capo Verde + escudo del Capo Verde + + + Sterlina Cipriota + + + Corona Ceca + corona ceca + corone ceche + + + Ostmark della Germania Orientale + + + Marco Tedesco + + + Franco Gibutiano + Franco Gibutiano + Franco Gibutiano + + + Corona Danese + corona danese + corone danesi + + + Peso Dominicano + peso dominicano + pesos dominicani + + + Dinaro Algerino + dinaro algerino + dinari algerini + + + Sucre dell’Ecuador + + + Unidad de Valor Constante (UVC) dell’Ecuador + + + Corona dell’Estonia + + + Sterlina Egiziana + sterlina egiziana + sterline egiziane + + + Nakfa Eritreo + nakfa eritreo + nakfa eritrei + + + Peseta Spagnola Account + + + Peseta Spagnola Account Convertibile + + + Peseta Spagnola + + + Birr Etiopico + birr etiopico + birr etiopici + + + Euro + euro + euro + + + Markka Finlandese + + + Dollaro delle Figi + dollaro delle Figi + dollari delle Figi + + + Sterlina delle Falkland + sterlina delle Falkland + sterline delle Falkland + + + Franco Francese + + + Sterlina Inglese + sterlina inglese + sterline inglesi + £ + + + Kupon Larit Georgiano + + + Lari Georgiano + lari georgiano + lari georgiani + + + Cedi del Ghana + + + Cedi ghanese + cedi ghanese + cedi ghanesi + + + Sterlina di Gibilterra + sterlina di Gibilterra + sterline di Gibilterra + + + Dalasi del Gambia + dalasi del Gambia + dalasi del Gambia + + + Franco della Guinea + franco della Guinea + franchi della Guinea + + + Syli della Guinea + + + Ekwele della Guinea Equatoriale + + + Dracma Greca + + + Quetzal Guatemalteco + quetzal guatemalteco + quetzal guatemaltechi + + + Escudo della Guinea portoghese + + + Peso della Guinea-Bissau + + + Dollaro della Guyana + dollaro della Guyana + dollari della Guyana + + + Dollaro di Hong Kong + dollaro di Hong Kong + dollari di Hong Kong + HK$ + + + Lempira Honduregna + lempira honduregna + lempire honduregne + + + Dinaro Croato + + + Kuna Croata + kuna croata + kuna croate + + + Gourde Haitiano + gourde haitiano + gourde haitiani + + + Fiorino Ungherese + fiorino ungherese + fiorini ungheresi + + + Rupia Indonesiana + rupia indonesiana + rupie indonesiane + + + Sterlina irlandese + + + Sterlina Israeliana + + + Nuovo Shequel Israeliano + nuovo shekel israeliano + Nuovi shekel israeliani + + + + Rupia Indiana + rupia indiana + rupie indiane + + + + Dinaro Iracheno + dinaro iracheno + dinari iracheni + + + Rial Iraniano + rial iraniano + rial iraniani + + + Corona Islandese + corona islandese + corone islandesi + + + ¤ #,##0.00 + Lira Italiana + , + . + + + Dollaro Giamaicano + dollaro giamaicano + dollari giamaicani + + + Dinaro Giordano + dinaro giordano + dinari giordani + + + Yen Giapponese + yen giapponese + yen giapponesi + JP¥ + + + Scellino Keniota + scellino keniota + scellini keniota + + + Som Kirghiso + som Kirghiso + som Kirghisi + + + Riel Cambogiano + riel cambogiano + riel cambogiani + + + Franco Comoriano + franco Comoriano + franchi Comoriani + + + Won Nordcoreano + won nordcoreano + word nordcoreani + + + Won Sudcoreano + won sudcoreano + won sudcoreani + + + + Dinaro Kuwaitiano + dinaro kuwaitiano + dinari kuwaitiani + + + Dollaro delle Isole Cayman + dollaro delle Isole Cayman + dollari delle Isole Cayman + + + Tenge Kazaco + tenge kazaco + tenge kazaco + + + Kip Laotiano + kip laotiano + kip laotiani + + + Sterlina Libanese + sterlina libanese + sterline libanesi + + + Rupia di Sri Lanka + rupia dello Sri Lanka + rupie dello Sri Lanka + + + Dollaro Liberiano + dollaro liberiano + dollari liberiani + + + Loti del Lesotho + + + Litas Lituano + litas lituano + litas lituani + + + Talonas Lituani + + + Franco Convertibile del Lussemburgo + + + Franco del Lussemburgo + + + Franco Finanziario del Lussemburgo + + + Lats Lettone + lats lettone + lati lettoni + + + Rublo Lettone + + + Dinaro Libico + dinaro libico + dinari libici + + + Dirham Marocchino + dirham marocchino + Dirham marocchini + + + Franco Marocchino + + + Leu Moldavo + leu moldavo + leu moldavi + + + Ariary Malgascio + ariary malgascio + ariary malgasci + + + Franco Malgascio + + + Dinaro Macedone + denaro macedone + denari macedoni + + + Franco di Mali + + + Kyat di Myanmar + kyat di Myanmar + kyat di Myanmar + + + Tugrik Mongolo + tugrik mongolo + tugrik mongoli + + + Pataca di Macao + pataca di Macao + patacas di Macao + + + Ouguiya della Mauritania + ouguiya della Mauritania + ouguiya della Mauritania + + + Lira Maltese + + + Sterlina Maltese + + + Rupia Mauriziana + rupia mauriziana + rupie mauriziane + + + Rufiyaa delle Maldive + rufiyaa delle Maldive + rufiyaa delle Maldive + + + Kwacha Malawiano + kwacha malawiano + kwacha malawiani + + + Peso Messicano + peso messicano + pesos messicani + MX$ + + + Peso messicano d’argento (1861–1992) + + + Unidad de Inversion (UDI) Messicana + + + Ringgit della Malesia + ringgit malese + ringgit malesi + + + Escudo del Mozambico + + + Metical mozambicano + metical mozambicano + metical mozambicani + + + Dollaro Namibiano + dollaro namibiano + dollari namibiani + + + Naira Nigeriana + naira nigeriana + naire nigeriane + + + Cordoba Nicaraguense + Cordoba Nicaraguense + Cordoba Nicaraguense + + + Córdoba Nicaraguense + córdoba nicaraguense + córdoba nicaraguensi + + + Fiorino Olandese + + + Corona Norvegese + corona norvegese + corone norvegesi + + + Rupia Nepalese + rupia nepalese + rupie nepalesi + + + Dollaro Neozelandese + dollaro neozelandese + dollari neozelandesi + NZ$ + + + Rial dell'Oman + rial dell'Oman + rial dell'Oman + + + Balboa di Panama + balboa panamense + balboa panamensi + + + Inti Peruviano + + + Sol Nuevo Peruviano + nuevo sol peruviano + nuevos soles peruviani + + + Sol Peruviano + + + Kina della Papua Nuova Guinea + kina papuana + kina papuane + + + Peso delle Filippine + peso filippino + pesos filippini + + + Rupia del Pakistan + rupia pakistana + rupie pakistane + + + Zloty Polacco + zloty polacco + zloty polacchi + + + Zloty Polacco (1950–1995) + + + Escudo Portoghese + + + Guaraní del Paraguay + guaraní paraguaiano + guaraní paraguaiani + + + Rial del Qatar + rial del Qatar + rial del Qatar + + + Dollaro della Rhodesia + + + Leu della Romania + + + Leu Rumeno + leu rumeno + lei rumeni + + + Dinaro Serbo + dinaro serbo + dinara serbi + + + Rublo Russo + rublo russo + rubli russi + + + Rublo della CSI + + + Franco Ruandese + franco ruandese + franchi ruandesi + + + Ryal Saudita + riyal saudita + riyal sauditi + + + Dollaro delle Isole Solomon + dollaro delle Isole Solomon + dollari delle Isole Solomon + + + Rupia delle Seychelles + rupia delle Seychelles + rupie delle Seychelles + + + Dinaro Sudanese + + + Sterlina Sudanese + sterlina sudanese + sterline sudanesi + + + Corona Svedese + corona svedese + corone svedesi + + + Dollaro di Singapore + dollaro di Singapore + dollari di Singapore + + + Sterlina di Sant’Elena + sterlina di Sant’Elena + sterline di Sant’Elena + + + Tallero Sloveno + + + Corona Slovacca + + + Leone della Sierra Leone + leone della Sierra Leone + leoni della Sierra Leone + + + Scellino Somalo + scellino somalo + scellini somali + + + Dollaro Surinamese + dollaro surinamese + dollari surinamesi + + + Fiorino del Suriname + + + Sterlina sudsudanese + sterlina sudsudanese + sterline sudsudanesi + + + Dobra di Sao Tomé e Principe + dobra di Sao Tomé e Principe + dobra di Sao Tomé e Principe + + + Rublo Sovietico + + + Colón Salvadoregno + + + Sterlina Siriana + sterlina siriana + sterline siriane + + + Lilangeni dello Swaziland + lilangeni dello Swaziland + lilangeni dello Swaziland + + + Baht Tailandese + baht tailandese + baht tailandesi + ฿ + + + Rublo del Tajikistan + + + Somoni del Tajikistan + somoni del Tajikistan + somoni del Tajikistan + + + Manat Turkmeno (1993–2009) + + + Manat Turkmeno + manat turkmeno + manat turkmeni + + + Dinaro Tunisino + dinaro tunisino + dinari tunisini + + + Paʻanga di Tonga + paʻanga di Tonga + paʻanga di Tonga + + + Escudo di Timor + + + Lira Turca + lira turca + lire turche + + + Nuova Lira Turca + nuova lira turca + nuove lire turche + + + Dollaro di Trinidad e Tobago + dollaro di Trinidad e Tobago + dollari di Trinidad e Tobago + + + Nuovo dollaro taiwanese + nuovo dollaro taiwanese + nuovi dollari taiwanesi + NT$ + + + Scellino della Tanzania + scellino della Tanzania + scellini della Tanzania + + + Grivnia Ucraina + grivnia ucraina + grivnie ucraine + + + Karbovanetz Ucraino + + + Scellino Ugandese (1966–1987) + + + Scellino Ugandese + scellino ugandese + scellini ugandesi + + + Dollaro Statunitense + dollaro statunitense + dollari statunitensi + US$ + + + Dollaro Statunitense (Next day) + + + Dollaro Statunitense (Same day) + + + Peso uruguaiano in unità indicizzate + + + Peso Uruguaiano (1975–1993) + + + Peso Uruguaiano + peso uruguaiano + pesos uruguaiani + + + Sum dell’Uzbekistan + sum dell’Uzbekistan + sum dell’Uzbekistan + + + Bolivar Venezuelano (1871–2008) + bolivar Venezuelano (1871–2008) + bolivares venezuelani (1871–2008) + + + Bolívar Venezuelano + bolívar venezuelano + bolívares venezuelani + + + Dong Vietnamita + dong vietnamita + dong vietnamiti + + + + Vatu di Vanuatu + vatu di Vanuatu + vatu di Vanuatu + + + Tala della Samoa Occidentale + tala samoano + tala samoani + + + Franco CFA BEAC + franco CFA BEAC + franchi CFA BEAC + FCFA + + + Argento + + + Oro + + + Unità composita europea + + + Unità monetaria europea + + + Unità di acconto europea (XBC) + + + Unità di acconto europea (XBD) + + + Dollaro dei Caraibi Orientali + dollaro dei Caraibi orientali + dollari dei Caraibi orientali + EC$ + + + Diritti Speciali di Incasso + + + Franco Oro Francese + + + Franco UIC Francese + + + Franco CFA BCEAO + franco CFA BCEAO + franchi CFA BCEAO + CFA + + + Palladio + + + Franco CFP + franco CFP + franchi CFP + CFPF + + + Platino + + + Fondi RINET + + + Codice di verifica della valuta + + + Valuta sconosciuta + valuta sconosciuta/non valida + valuta sconosciuta + + + Dinaro dello Yemen + + + Rial dello Yemen + rial yemenita + rial yemeniti + + + Dinaro Forte Yugoslavo + + + Dinaro Noviy Yugoslavo + + + Dinaro Convertibile Yugoslavo + + + Rand Sudafricano (finanziario) + + + Rand Sudafricano + rand sudafricano + rand sudafricani + + + Kwacha dello Zambia (1968–2012) + kwacha zambiano (1968–2012) + kwacha zambiani (1968–2012) + + + Kwacha dello Zambia + kwacha zambiano + kwacha zambiani + + + Nuovo Zaire dello Zaire + + + Zaire dello Zaire + + + Dollaro dello Zimbabwe + + + Dollaro Zimbabwiano (2009) + + + + {0}+ + {0}-{1} + + + + + + {0} al {1} + + + {0} forza g + {0} forza g + + + {0} minuto + {0} minuti + + + {0} secondo + {0} secondi + + + {0} grado + {0} gradi + + + {0} acro + {0} acri + + + {0} ettaro + {0} ettari + + + {0} piede quadrato + {0} piedi quadrati + + + {0} chilometro quadrato + {0} chilometri quadrati + + + {0} metro quadrato + {0} metri quadrati + + + {0} miglio quadrato + {0} miglia quadrate + + + {0} giorno + {0} giorni + + + {0} ora + {0} ore + + + {0} millisecondo + {0} millisecondi + + + {0} minuto + {0} minuti + + + {0} mese + {0} mesi + + + {0} secondo + {0} secondi + + + {0} settimana + {0} settimane + + + {0} anno + {0} anni + + + {0} centimetro + {0} centimetri + + + {0} piede + {0} piedi + + + {0} pollice + {0} pollici + + + {0} chilometro + {0} chilometri + + + {0} anno luce + {0} anni luce + + + {0} metro + {0} metri + + + {0} miglio + {0} miglia + + + {0} millimetro + {0} millimetri + + + {0} picometro + {0} picometri + + + {0} yarda + {0} yarde + + + {0} grammo + {0} grammi + + + {0} chilogrammo + {0} chilogrammi + + + {0} oncia + {0} once + + + {0} libbra + {0} libbre + + + {0} cavallo vapore + {0} cavalli vapore + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} ettopascal + {0} ettopascal + + + {0} pollice di mercurio + {0} pollici di mercurio + + + {0} millibar + {0} millibar + + + {0} chilometro all’ora + {0} chilometri all’ora + + + {0} metro al secondo + {0} metri al secondo + + + {0} miglio all’ora + {0} miglia all’ora + + + {0} grado Celsius + {0} gradi Celsius + + + {0} grado Fahrenheit + {0} gradi Fahrenheit + + + {0} chilometro cubo + {0} chilometri cubi + + + {0} miglio cubo + {0} miglia cube + + + {0} litro + {0} litri + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} giorno + {0} giorni + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mese + {0} mesi + + + {0} s + {0} s + + + {0} settimana + {0} settimane + + + {0} anno + {0} anni + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} anno luce + {0} anni luce + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} gg + {0} gg + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} m + {0} m + + + {0} mesi + {0} mesi + + + {0} s + {0} s + + + {0} sett. + {0} sett. + + + {0} anno + {0} anni + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0}″ + {0}″ + + + {0} km + {0} km + + + {0} al + {0} al + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0}, e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0}, e {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, e {1} + {0}, {1} + + + + + sì:si:s + no:n + + + + diff --git a/library/Zend/Locale/Data/it_CH.xml b/library/Zend/Locale/Data/it_CH.xml new file mode 100755 index 000000000..8acaf662c --- /dev/null +++ b/library/Zend/Locale/Data/it_CH.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d-MMM-y G + + + + + dd.MM.yy GGGGG + + + + + + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + dd.MM + MM.y GGGGG + + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d-MMM-y + + + + + dd.MM.yy + + + + + + + HH.mm:ss 'h' zzzz + + + + + + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + dd.MM + MM.y + + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + + + + + + + . + ' + + + + + ¤ #,##0.00;¤-#,##0.00 + + + + + + CHF + + + + + diff --git a/library/Zend/Locale/Data/it_IT.xml b/library/Zend/Locale/Data/it_IT.xml new file mode 100755 index 000000000..38e3a0354 --- /dev/null +++ b/library/Zend/Locale/Data/it_IT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/it_SM.xml b/library/Zend/Locale/Data/it_SM.xml new file mode 100755 index 000000000..22ff32d14 --- /dev/null +++ b/library/Zend/Locale/Data/it_SM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ja.xml b/library/Zend/Locale/Data/ja.xml new file mode 100755 index 000000000..151f42c46 --- /dev/null +++ b/library/Zend/Locale/Data/ja.xml @@ -0,0 +1,7868 @@ + + + + + + + + + + + + {0} ({1}) + {0}、{1} + {0}: {1} + + + アファル語 + アブハズ語 + アチェ語 + アチョリ語 + アダングメ語 + アディゲ語 + アヴェスタ語 + アフリカーンス語 + アフリヒリ語 + アゲム語 + アイヌ語 + アカン語 + アッカド語 + アレウト語 + 南アルタイ語 + アムハラ語 + アラゴン語 + 古英語 + アンギカ語 + アラビア語 + アラム語 + アラウカン語 + アラパホー語 + アラワク語 + アッサム語 + アス語 + アストゥリアス語 + アヴァル語 + アワディー語 + アイマラ語 + アゼルバイジャン語 + アゼリー語 + バシキール語 + バルーチー語 + バリ語 + バサ語 + バムン語 + ゴーマラ語 + ベラルーシ語 + ベジャ語 + ベンバ語 + ベナ語 + バフット語 + ブルガリア語 + ボージュプリー語 + ビスラマ語 + ビコル語 + ビニ語 + コム語 + シクシカ語 + バンバラ語 + ベンガル語 + チベット語 + ブルトン語 + ブラジ語 + ボド語 + ボスニア語 + アコース語 + ブリヤート語 + ブギ語 + ブル語 + ビリン語 + メドゥンバ語 + カタロニア語 + カドー語 + カリブ語 + カユーガ語 + チャワイ語 + チェチェン語 + セブアノ語 + チガ語 + チャモロ語 + チブチャ語 + チャガタイ語 + チューク語 + マリ語 + チヌーク混成語 + チョクトー語 + チペワイアン語 + チェロキー語 + シャイアン語 + クルド語(ソラニー) + コルシカ語 + コプト語 + クリー語 + クリミア・タタール語 + チェコ語 + カシューブ語 + 教会スラブ語 + チュヴァシ語 + ウェールズ語 + デンマーク語 + ダコタ語 + ダルガン語 + タイタ語 + ドイツ語 + 正統ドイツ語(スイス) + デラウェア語 + スレイビー語 + ドグリブ語 + ディンカ語 + ザルマ語 + ドーグリー語 + 低ソルビア語 + ドゥアラ語 + 中世オランダ語 + ディベヒ語 + ジョラ=フォニィ語 + ジュラ語 + ゾンカ語 + ダザガ語 + エンブ語 + エウェ語 + エフィク語 + 古代エジプト語 + エカジュク語 + ギリシャ語 + エラム語 + 英語 + オーストラリア英語 + カナダ英語 + イギリス英語 + アメリカ英語 + 中世英語 + エスペラント語 + スペイン語 + スペイン語(イベリア半島) + エストニア語 + バスク語 + エウォンド語 + ペルシア語 + ファング語 + ファンティー語 + フラニ語 + フィンランド語 + フィリピノ語 + フィジー語 + フェロー語 + フォン語 + フランス語 + 中期フランス語 + 古フランス語 + 北フリジア語 + 東フリジア語 + フリウリ語 + 西フリジア語 + アイルランド語 + ガ語 + ガヨ語 + バヤ語 + スコットランド・ゲール語 + ゲエズ語 + キリバス語 + ガリシア語 + 中高ドイツ語 + グアラニー語 + 古高ドイツ語 + ゴーンディー語 + ゴロンタロ語 + ゴート語 + グレボ語 + 古代ギリシャ語 + スイスドイツ語 + グジャラート語 + グシイ語 + マン島語 + グウィッチン語 + ハウサ語 + ハイダ語 + ハワイ語 + ヘブライ語 + ヒンディー語 + ヒリガイノン語 + ヒッタイト語 + フモン語 + ヒリモツ語 + クロアチア語 + 上ソルビア語 + ハイチ語 + ハンガリー語 + アタパスカ語 + アルメニア語 + ヘレロ語 + インターリングア + イバン語 + イビビオ語 + インドネシア語 + インターリング + イボ語 + 四川イ語 + イヌピアック語 + イロカノ語 + イングーシ語 + イド語 + アイスランド語 + イタリア語 + イヌクウティトット語 + 日本語 + ロジバン語 + ンゴンバ語 + マチャメ語 + ユダヤ・ペルシア語 + ユダヤ・アラビア語 + ジャワ語 + グルジア語 + カラカルパク語 + カビル語 + カチン語 + カジェ語 + カンバ語 + カウィ語 + カバルド語 + カネンブ語 + カタブ語 + マコンデ語 + カーボベルデ・クレオール語 + コロ語 + コンゴ語 + カシ語 + コータン語 + コイラ・チーニ語 + キクユ語 + クワニャマ語 + カザフ語 + カコ語 + グリーンランド語 + カレンジン語 + クメール語 + キンブンド語 + カンナダ語 + 韓国語 + コンカニ語 + コスラエ語 + クペレ語 + カヌリ語 + カラチャイ語 + カレリア語 + クルク語 + カシミール語 + サンバー語 + バフィア語 + ケルン語 + クルド語 + クムク語 + クテナイ語 + コミ語 + コーンウォール語 + キルギス語 + ラテン語 + ラディノ語 + ランギ語 + ラフンダー語 + ランバ語 + ルクセンブルク語 + レズギ語 + ガンダ語 + リンブルフ語 + リンガラ語 + ラオ語 + モンゴ語 + ロジ語 + リトアニア語 + ルバ・カタンガ語 + ルバ・ルルア語 + ルイセーニョ語 + ルンダ語 + ルオ語 + ルシャイ語 + ルヒヤ語 + ラトビア語 + マドゥラ語 + マファ語 + マガヒー語 + マイティリー語 + マカッサル語 + マンディンゴ語 + マサイ語 + マバ語 + モクシャ語 + マンダル語 + メンデ語 + メル語 + モーリシャス・クレオール語 + マダガスカル語 + 中期アイルランド語 + マクア・ミート語 + メタ語 + マーシャル語 + マオリ語 + ミクマク語 + ミナンカバウ語 + マケドニア語 + マラヤーラム語 + モンゴル語 + 満州語 + マニプリ語 + モーホーク語 + モシ語 + マラーティー語 + マレー語 + マルタ語 + ムンダン語 + 複数言語 + クリーク語 + ミランダ語 + マールワーリー語 + ビルマ語 + ミエネ語 + エルジャ語 + ナウル語 + ナポリ語 + ナマ語 + ノルウェー語(ブークモール) + 北ンデベレ語 + 低地ドイツ語 + ネパール語 + ネワール語 + ンドンガ語 + ニアス語 + ニウーエイ語 + オランダ語 + フレミッシュ語 + クワシオ語 + ノルウェー語(ニーノシュク) + ンジエムブーン語 + ノルウェー語 + ノガイ語 + 古ノルド語 + ンコ語 + 南ンデベレ語 + 北部ソト語 + ヌエル語 + ナバホ語 + 古典ネワール語 + ニャンジャ語 + ニャムウェジ語 + ニャンコレ語 + ニョロ語 + ンゼマ語 + オック語 + オジブウェー語 + オロモ語 + オリヤー語 + オセット語 + オセージ語 + オスマントルコ語 + パンジャブ語 + パンガシナン語 + パフラヴィー語 + パンパンガ語 + パピアメント語 + パラオ語 + 古代ペルシア語 + フェニキア語 + パーリ語 + ポーランド語 + ポンペイ語 + 古期プロバンス語 + パシュトゥー語 + パシュトゥ語 + ポルトガル語 + ポルトガル語(イベリア半島) + ケチュア語 + ラージャスターン語 + ラパヌイ語 + ラロトンガ語 + ロマンシュ語 + ルンディ語 + ルーマニア語 + モルダビア語 + ロンボ語 + ロマーニー語 + ルート + ロシア語 + アルーマニア語 + ルワンダ語 + ルワ語 + サンスクリット語 + サンダウェ語 + ヤクート語 + サマリア・アラム語 + サンブル語 + ササク語 + サンターリー語 + ンガムバイ語 + サング語 + サルデーニャ語 + シチリア語 + スコットランド語 + シンド語 + 北サーミ語 + セネカ語 + セナ語 + セリクプ語 + コイラボロ・センニ語 + サンゴ語 + 古期アイルランド語 + セルボ・クロアチア語 + タシルハイト語 + シャン語 + チャド・アラビア語 + シンハラ語 + シダモ語 + スロバキア語 + スロベニア語 + サモア語 + 南サーミ語 + ルレ・サーミ語 + イナリ・サーミ語 + スコルト・サーミ語 + ショナ語 + ソニンケ語 + ソマリ語 + ソグド語 + アルバニア語 + セルビア語 + スリナム語 + セレル語 + スワジ語 + サホ語 + 南部ソト語 + スンダ語 + スクマ語 + スス語 + シュメール語 + スウェーデン語 + スワヒリ語 + コモロ語 + コンゴ・スワヒリ語 + 古典シリア語 + シリア語 + タミル語 + テルグ語 + テムネ語 + テソ語 + テレーノ語 + テトゥン語 + タジク語 + タイ語 + ティグリニア語 + ティグレ語 + ティブ語 + トルクメン語 + トケラウ語 + タガログ語 + クリンゴン語 + トリンギット語 + タマシェク語 + ツワナ語 + トンガ語 + トンガ語(ニアサ) + トク・ピシン語 + トルコ語 + タロコ語 + ツォンガ語 + チムシュ語 + タタール語 + トゥンブカ語 + ツバル語 + トウィ語 + タサワク語 + タヒチ語 + トゥヴァ語 + 中央アトラス・タマジクト語 + ウドムルト語 + ウイグル語 + ウイグル + ウガリト語 + ウクライナ語 + ムブンドゥ語 + 言語不明 + ウルドゥー語 + ウズベク語 + ヴァイ語 + ベンダ語 + ベトナム語 + ヴォラピュク語 + ヴォート語 + ヴンジョ語 + ワロン語 + ヴァリス語 + ウォライタ語 + ワライ語 + ワショ語 + ウォロフ語 + カルムイク語 + コサ語 + ソガ語 + ヤオ語 + ヤップ語 + ヤンベン語 + イエンバ語 + イディッシュ語 + ヨルバ語 + 広東語 + チワン語 + サポテカ語 + ブリスシンボル + ゼナガ語 + タマージク語(モロッコ公用語) + 中国語 + 簡体中国語 + 繁体中国語 + ズールー語 + ズニ語 + 言語的内容なし + ザザ語 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 世界 + アフリカ + 北アメリカ大陸 + 南アメリカ + オセアニア + 西アフリカ + 中央アメリカ + 東アフリカ + 北アフリカ + 中部アフリカ + 南部アフリカ + アメリカ大陸 + 北アメリカ + カリブ + 東アジア + 南アジア + 東南アジア + 南ヨーロッパ + オーストララシア + メラネシア + ミクロネシア + ポリネシア + アジア + 中央アジア + 西アジア + ヨーロッパ + 東ヨーロッパ + 北ヨーロッパ + 西ヨーロッパ + ラテンアメリカ + アセンション島 + アンドラ + アラブ首長国連邦 + アフガニスタン + アンティグア・バーブーダ + アンギラ + アルバニア + アルメニア + オランダ領アンティル + アンゴラ + 南極 + アルゼンチン + 米領サモア + オーストリア + オーストラリア + アルバ + オーランド諸島 + アゼルバイジャン + ボスニア・ヘルツェゴビナ + バルバドス + バングラデシュ + ベルギー + ブルキナファソ + ブルガリア + バーレーン + ブルンジ + ベナン + サン・バルテルミー島 + バミューダ + ブルネイ + ボリビア + オランダ領カリブ + ブラジル + バハマ + ブータン + ブーベ島 + ボツワナ + ベラルーシ + ベリーズ + カナダ + ココス(キーリング)諸島 + コンゴ民主共和国(キンシャサ) + コンゴ民主共和国 + 中央アフリカ共和国 + コンゴ共和国(ブラザビル) + コンゴ共和国 + スイス + コートジボワール + 象牙海岸 + クック諸島 + チリ + カメルーン + 中国 + コロンビア + クリッパートン島 + コスタリカ + キューバ + カーボベルデ + キュラソー + クリスマス島 + キプロス + チェコ共和国 + ドイツ + ディエゴガルシア島 + ジブチ + デンマーク + ドミニカ国 + ドミニカ共和国 + アルジェリア + セウタ・メリリャ + エクアドル + エストニア + エジプト + 西サハラ + エリトリア + スペイン + エチオピア + 欧州連合 + フィンランド + フィジー + フォークランド諸島 + フォークランド諸島(マルビナス諸島) + ミクロネシア連邦 + フェロー諸島 + フランス + ガボン + イギリス + 英国 + グレナダ + グルジア + 仏領ギアナ + ガーンジー + ガーナ + ジブラルタル + グリーンランド + ガンビア + ギニア + グアドループ + 赤道ギニア + ギリシャ + 南ジョージア島・南サンドイッチ諸島 + グアテマラ + グアム + ギニアビサウ + ガイアナ + 中華人民共和国香港特別行政区 + 香港 + ハード島・マクドナルド諸島 + ホンジュラス + クロアチア + ハイチ + ハンガリー + カナリア諸島 + インドネシア + アイルランド + イスラエル + マン島 + インド + 英領インド洋地域 + イラク + イラン + アイスランド + イタリア + ジャージー + ジャマイカ + ヨルダン + 日本 + ケニア + キルギス + カンボジア + キリバス + コモロ + セントクリストファー・ネイビス + 朝鮮民主主義人民共和国 + 大韓民国 + クウェート + ケイマン諸島 + カザフスタン + ラオス + レバノン + セントルシア + リヒテンシュタイン + スリランカ + リベリア + レソト + リトアニア + ルクセンブルグ + ラトビア + リビア + モロッコ + モナコ + モルドバ + モンテネグロ + サン・マルタン + マダガスカル + マーシャル諸島 + マケドニア + マケドニア(旧ユーゴスラビア共和国) + マリ + ミャンマー + モンゴル + 中華人民共和国マカオ特別行政区 + マカオ + 北マリアナ諸島 + マルティニーク + モーリタニア + モントセラト + マルタ + モーリシャス + モルジブ + マラウイ + メキシコ + マレーシア + モザンビーク + ナミビア + ニューカレドニア + ニジェール + ノーフォーク島 + ナイジェリア + ニカラグア + オランダ + ノルウェー + ネパール + ナウル + ニウエ島 + ニュージーランド + オマーン + パナマ + ペルー + 仏領ポリネシア + パプアニューギニア + フィリピン + パキスタン + ポーランド + サンピエール島・ミクロン島 + ピトケアン諸島 + プエルトリコ + パレスチナ + パレスチナ + ポルトガル + パラオ + パラグアイ + カタール + オセアニア周辺地域 + レユニオン島 + ルーマニア + セルビア + ロシア + ルワンダ + サウジアラビア + ソロモン諸島 + セーシェル + スーダン + スウェーデン + シンガポール + セントヘレナ + スロベニア + スバールバル諸島・ヤンマイエン島 + スロバキア + シエラレオネ + サンマリノ + セネガル + ソマリア + スリナム + 南スーダン + サントメ・プリンシペ + エルサルバドル + シント・マールテン + シリア + スワジランド + トリスタン・ダ・クーニャ + タークス・カイコス諸島 + チャド + 仏領極南諸島 + トーゴ + タイ + タジキスタン + トケラウ + 東ティモール + トルクメニスタン + チュニジア + トンガ + トルコ + トリニダード・トバゴ + ツバル + 台湾 + タンザニア + ウクライナ + ウガンダ + 米領太平洋諸島 + アメリカ合衆国 + アメリカ + ウルグアイ + ウズベキスタン + バチカン市国 + セントビンセント・グレナディーン諸島 + ベネズエラ + 英領ヴァージン諸島 + 米領ヴァージン諸島 + ベトナム + バヌアツ + ウォリス・フツナ + サモア + コソボ + イエメン + マヨット島 + 南アフリカ + ザンビア + ジンバブエ + 不明な地域 + + + ドイツ語旧正書法 + 標準レージア方言正書法 + ドイツ語正書法(1996) + 後期中世フランス語(〜1606) + 初期現代フランス語 + 標準ベラルーシ語 (1959) + ALA-LCラテン文字化(1997) + アロコ方言 + 東アルメニア文語 + 西アルメニア文語 + 統一トルコラテン文字 + バウッダ + ビスカヤ語 + サン・ジョルジョ/ビーラ方言 + ボホリッツ・アルファベット + ブーントリング + ダインチッツァ + 初期近代英語 + 国際音声記号 + ウラル音声記号 + フォンクサンプ + ヘボン式ローマ字 + ヘグノシュク + イティハーサ + ヤウエル + 略称粤拼 + 共通コーンウォール語正書法 + 標準コーンウォール語正書法 + ラウキカ + レージア方言 リポヴァツ方言 + メテルチッツァ + モノトニック + ンジュカ方言 + ナティゾーネ方言 + ニヴァ方言 + 現代ヴォラピュク語 + オゼアッコ/オソヤネ方言 + パマカ方言 + ピン音(ローマ字表記法) + ポリトニック + コンピュータ + プーター + 改訂版 + 古典ヴォラピュク語 + レシア方言 + サホ語 + スコットランド標準英語 + リバプール方言 + ストルヴィッツァ/ソルビツァ方言 + スルミラン + スルシルヴァン + ストシルヴァン + タラシケヴィツァ正書法 + 統一コーンウォール語正書法 + 改訂統一コーンウォール語正書法 + アルスター + ヴァイディカ + バレンシア方言 + ヴァラダー + ウェード式ローマ字表記法 + + + 暦法 + 記号を無視した並べ替え + アクセント(逆方向)による並べ替え + 大文字順/小文字順による並べ替え + 大文字小文字を区別した並べ替え + 仮名による並べ替え + 並べ替え順序 + 正規化による並べ替え + 数値による並べ替え + 強度による並べ替え + 通貨 + 数値書式 + タイムゾーン + ロケールのバリアント + 記号として並べ替え + 私用 + + + アラビア・インド数字 + ペルシア数字 + アルメニア数字 + アルメニア数字(小文字) + バリ数字 + ベンガル数字 + 繁体字中国語順(Big5) + ブラーフミー数字 + タイ仏教暦 + チャクマ数字 + チャム数字 + 中国暦 + コプト暦 + ダンギ暦 + デーヴァナーガリー数字 + 辞書順 + ユニコード照合順 + エチオピア数字 + エチオピア暦 + エチオピア創世紀元暦 + 財務用漢数字 + 全角数字 + 簡体字中国語順(GB2312) + グルジア数字 + 西暦(グレゴリオ暦) + ギリシャ数字 + ギリシャ数字(小文字) + グジャラート数字 + グルムキー数字 + 漢数字(位取り記数法) + 簡体漢数字 + 簡体大字 + 繁体漢数字 + 繁体大字 + ヘブライ数字 + ユダヤ暦 + すべてを区別して並べ替え + インド国定暦 + イスラム暦 + 太陽イスラム暦 + イスラム暦(サウジアラビア、月観測) + イスラム暦(天文紀元) + イスラム暦(ウンム・アルクラー) + ISO-8601 + 和暦 + ジャワ数字 + 漢数字 + 大字 + カヤー数字 + クメール数字 + カンナダ数字 + ラーンナー数字 + ラーンナー・タム数字 + ラオ数字 + 算用数字 + レプチャ数字 + リンブ数字 + 小文字優先で並べ替え + マラヤーラム数字 + モンゴル数字 + マニプリ数字 + ミャンマー数字 + ミャンマー・シャン数字 + 独自の記数法 + ンコ数字 + アクセント(順方向)で並べ替え + 大文字小文字を通常の順序で並べ替え + 大文字小文字を区別しないで並べ替え + 仮名を区別しないで並べ替え + 正規化しないで並べ替え + 数値を独立して並べ替え + 記号で並べ替え + オルチキ数字 + オリヤー数字 + オスマニア数字 + ペルシア暦 + 電話帳順 + 音声順による並べ替え + ピンイン + 基本文字のみで並べ替え + アクセント/大文字小文字/全角半角/仮名で並べ替え + リフォーム + 中華民国暦 + ローマ数字 + ローマ数字(小文字) + サウラーシュトラ数字 + 汎用検索 + ハングル語頭子音による並べ替え + アクセントで並べ替え + 記号を無視して並べ替え + シャーラダー数字 + ソラ・ソンペン数字 + 標準ソート順序 + 画数順 + スンダ数字 + タークリー数字 + 新タイ・ルー数字 + タミール数字 + タミル数字 + テルグ数字 + アクセント/大文字小文字/全角半角で並べ替え + タイ数字 + チベット数字 + トラディッショナル + 従来の記数法 + 部首順 + 大文字優先で並べ替え + ヴァイ文字の記数法 + アクセント(逆方向)で並べ替え + 大文字小文字を区別して並べ替え + 仮名を区別して並べ替え + Unicode 正規化で並べ替え + 数値を数値として並べ替え + 注音順 + + + BGN + 数字 + 声調 + UNGEGN + アクセント + 全角 + 半角 + 字母 + ピンイン + 出版 + + + メートル法 + 英ヤード・ポンド法 + 米ヤード・ポンド法 + + + 言語: {0} + 文字: {0} + 地域: {0} + + + + [々 ゝ ゞ ー-ヾ ぁ あ ァア ぃ い ィイ ぅ う ゥウ ヴ ぇ え ェエ ぉ お ォオ か ヵ カ がガ きキ ぎギ くク ぐグ け ヶ ケ げゲ こコ ごゴ さサ ざザ しシ じジ すス ずズ せセ ぜゼ そソ ぞゾ たタ だダ ちチ ぢヂ っ つ ッツ づヅ てテ でデ とト どド なナ にニ ぬヌ ねネ のノ はハ ばバ ぱパ ひヒ びビ ぴピ ふフ ぶブ ぷプ へヘ べベ ぺペ ほホ ぼボ ぽポ まマ みミ むム めメ もモ ゃ や ャヤ ゅ ゆ ュユ ょ よ ョヨ らラ りリ るル れレ ろロ ゎ わ ヮワ ゐヰ ゑヱ をヲ んン 一 丁 七 万-下 不 与 丑 且 世 丘 丙 両 並 中 丸 丹 主 久 乏 乗 乙 九 乱 乳 乾 亀 了 予 争 事 二 互 五 井 亜 亡 交 亥 亨 享-亭 人 仁 今 介 仏 仕 他 付 仙 代-以 仮 仰 仲 件 任 企 伊 伏-休 会 伝 伯 伴 伸 伺 似 但 位-佐 体 何 余 作 佳 併 使 例 侍 供 依 価 侮 侯 侵 便 係 促 俊 俗 保 信 修 俳 俵 俸 俺 倉 個 倍 倒 候 借 倣 値 倫 倹 偉 偏 停 健 側-偶 偽 傍 傑 傘 備 催 債 傷 傾 働 像 僕 僚 僧 儀 億 儒 償 優 元-兆 先 光 克 免 兎 児 党 入 全 八-六 共 兵 具 典 兼 内 円 冊 再 冒 冗 写 冠 冬 冷 准 凍 凝 凡 処 凶 凸-出 刀 刃 分-刈 刊 刑 列 初 判 別 利 到 制-券 刺 刻 則 削 前 剖 剛 剣 剤 副 剰 割 創 劇 力 功 加 劣 助 努 励 労 効 劾 勅 勇 勉 動 勘 務 勝 募 勢 勤 勧 勲 勺 匁 包 化 北 匠 匹-医 匿 十 千 升 午 半 卑-協 南 単 博 占 卯-危 即-卵 卸 厄 厘 厚 原 厳 去 参 又 及-収 叔 取 受 叙 口-句 叫 召 可 台 史 右 号 司 各 合 吉 同-向 君 吟 否 含 吸 吹 呈-告 周 味 呼 命 和 咲 哀 品 員 哲 唆 唇 唐 唯 唱 商 問 啓 善 喚 喜 喝 喪 喫 営 嗣 嘆 嘉 嘱 器 噴 嚇 囚 四 回 因 団 困 囲 図 固 国 圏 園 土 圧 在 地 坂 均 坊 坑 坪 垂 型 垣 埋 城 域 執 培 基 埼 堀 堂 堅 堕 堤 堪 報 場 塀 塁 塊 塑 塔 塗 塚 塩 塾 境 墓 増 墜 墨 墳 墾 壁 壇 壊 壌 士 壬 壮 声-売 変 夏 夕 外 多 夜 夢 大 天-夫 央 失 奇-奉 奏 契 奔 奥 奨 奪 奮 女 奴 好 如-妄 妊 妙 妥 妨 妹 妻 姉 始 姓 委 姫 姻 姿 威 娘 娠 娯 婆 婚 婦 婿 媒 嫁 嫌 嫡 嬢 子 孔 字 存 孝 季 孤 学 孫 宅 宇-安 完 宗-定 宜 宝 実 客-室 宮 宰 害-家 容 宿 寂 寄-密 富 寒 寛 寝 察 寡 寧 審 寮 寸 寺 対 寿 封 専 射 将 尉-尋 導 小 少 尚 就 尺 尼-局 居 屈 届 屋 展 属 層 履 屯 山 岐 岡 岩 岬 岳 岸 峠 峡 峰 島 崇 崎 崩 川 州 巡 巣 工-巨 差 己 巳 巻 市 布 帆 希 帝 帥 師 席 帯 帰 帳 常 帽 幅 幕 幣 干-年 幸 幹 幻-幾 庁 広 床 序 底 店 庚 府 度 座 庫 庭 庶-庸 廃 廉 廊 延 廷 建 弁 弊 式 弐 弓-引 弘 弟 弦 弧 弱 張 強 弾 当 形 彩 彫 彰 影 役 彼 往 征 径 待 律 後 徐 徒 従 得 御 復 循 微 徳 徴 徹 心 必 忌 忍 志-忙 応 忠 快 念 怒 怖 思 怠 急 性 怪 恋 恐 恒 恥 恨 恩 恭 息 恵 悔 悟 悠 患 悦 悩 悪 悲 悼 情 惑 惜 惨 惰 想 愁 愉 意 愚 愛 感 慈 態 慌 慎 慕 慢 慣 慨 慮 慰 慶 憂 憎 憤 憩 憲 憶 憾 懇 懐 懲 懸 戊 戌 成-戒 戦 戯 戸 戻 房 所 扇 扉 手 才 打 払 扱 扶 批 承 技 抄 把 抑 投 抗 折 抜 択 披 抱 抵 抹 押 抽 担 拍 拐 拒 拓 拘 拙 招 拝 拠 拡 括 拷 拾 持 指 挑 挙 挟 振 挿 捕 捜 捨 据 掃 授 掌 排 掘 掛 採 探 接 控 推 措 掲 描 提 揚 換 握 揮 援 揺 損 搬 搭 携 搾 摂 摘 摩 撃 撤 撮 撲 擁 操 擦 擬 支 改 攻 放 政 故 敏 救 敗 教 敢 散 敬 数 整 敵 敷 文 斉 斎 斗 料 斜 斤 斥 断 新 方 施 旅 旋 族 旗 既 日 旧-早 旬 昆 昇 昌 明 易 昔 星 映 春 昨 昭 是 昼 時 晩 普 景 晴 晶 暁 暇 暑 暖 暗 暦 暫 暮 暴 曇 曜 曲 更 書 曹 替 最 月 有 服 朕 朗 望 朝 期 木 未-札 朱 朴 机 朽 杉 材 村 束 条 来 杯 東 松 板 析 林 枚 果 枝 枠 枢 枯 架 柄 某 染 柔 柱 柳 査 栄 栓 校 株 核 根 格 栽 桃 案 桑 桜 桟 梅 械 棄 棋 棒 棚 棟 森 棺 植 検 業 極 楼 楽 概 構 様 槽 標 模 権 横 樹 橋 機 欄 欠 次 欧 欲 欺 款 歌 歓 止 正 武 歩 歯 歳 歴 死 殉-残 殖 殴 段 殺 殻 殿 母 毎 毒 比 毛 氏 民 気 水 氷 永 汁 求 汎 汗 汚 江 池 決 汽 沈 沖 没 沢 河 沸 油 治 沼 沿 況 泉 泊 泌 法 泡-泣 泥 注 泰 泳 洋 洗 洞 津 洪 活 派 流 浄 浅 浜 浦 浪 浮 浴 海 浸 消 涙 涯 液 涼 淑 淡 深 混 添 清 渇-渉 渋 渓 減 渡 渦 温 測 港 湖 湯 湾-満 源 準 溝 溶 滅 滋 滑 滝 滞 滴 漁 漂 漆 漏 演 漠 漢 漫 漬 漸 潔 潜 潟 潤 潮 澄 激 濁 濃 濫 濯 瀬 火 灯 灰 災 炉 炊 炎 炭 点 為 烈 無 焦 然 焼 煙 照 煩 煮 熟 熱 燃 燥 爆 爵 父 片 版 牙 牛 牧 物 牲 特 犠 犬 犯 状 狂 狩 独 狭 猛 猟 猪 猫 献 猶 猿 獄 獣 獲 玄 率 玉 王 珍 珠 班 現 球 理 琴 環 璽 瓶 甘 甚 生 産 用 田-申 男 町 画 界 畑 畔 留 畜 畝 略 番 異 畳 疎 疑 疫 疲 疾 病 症 痘 痛 痢 痴 療 癒 癖 癸 発 登 白 百 的 皆 皇 皮 皿 盆 益 盗 盛 盟 監 盤 目 盲 直 相 盾 省 看 県 真 眠 眺 眼 着 睡 督 瞬 矛 矢 知 短 矯 石 砂 研 砕 砲 破 硝 硫 硬 碁 碑 確 磁 磨 礁 礎 示 礼 社 祈 祉 祖 祚 祝 神 祥 票 祭 禁 禄 禅 禍-福 秀 私 秋 科 秒 秘 租 秩 称 移 程 税 稚 種 稲 稼 稿 穀 穂 積 穏 穫 穴 究 空 突 窃 窒 窓 窮 窯 立 竜 章 童 端 競 竹 笑 笛 符 第 筆 等 筋 筒 答 策 箇 算 管 箱 節 範 築 篤 簡 簿 籍 米 粉 粋 粒 粗 粘 粛 粧 精 糖 糧 糸 系 糾 紀 約 紅 紋 納 純 紙-紛 素-索 紫 累 細 紳 紹 紺 終 組 経 結 絞 絡 給 統 絵 絶 絹 継 続 維 綱 網 綿 緊 総 緑 緒 線 締 編 緩 緯 練 縁 縄 縛 縦 縫 縮 績 繁 繊 織 繕 繭 繰 缶 罪 置 罰 署 罷 羅 羊 美 群 義 羽 翁 翌 習 翻 翼 老 考 者 耐 耕 耗 耳 聖 聞 聴 職 肉 肌 肖 肝 肢 肥 肩 肪 肯 育 肺 胃 胆 背 胎 胞 胴 胸 能 脂 脅 脈 脚 脱 脳 脹 腐 腕 腰 腸 腹 膚 膜 膨 臓 臣 臨 自 臭 至 致 興 舌 舎 舗 舞 舟 航 般 舶 船 艇 艦 良 色 芋 芝 花 芳 芸 芽 苗 若 苦 英 茂 茎 茶 草 荒 荘 荷 菊 菌 菓 菜 華 落 葉 著 葬 蒸 蓄 蔵 薄 薦 薪-薬 藤 藩 藻 虎 虐 虚 虜 虞 虫 蚊 蚕 蛇 蛍 蛮 融 血 衆 行 術 街 衛 衝 衡 衣 表 衰 衷 袋 被 裁 裂 装 裏 裕 補 裸 製 複 褐 褒 襟 襲 西 要 覆 覇 見 規 視 覚 覧 親 観 角 解 触 言 訂 計 討 訓 託 記 訟 訪 設 許 訳 訴 診 証 詐 詔 評 詞 詠 試 詩 詰-詳 誇 誉 誌 認 誓 誕 誘 語 誠 誤 説 読 誰 課 調 談 請 論 諭 諮 諸 諾 謀 謁 謄 謙 講 謝 謡 謹 識 譜 警 議 譲 護 谷 豆 豊 豚 象 豪 貝 貞 負-貢 貧-販 貫 責 貯 貴 買 貸 費 貿 賀 賃 賄 資 賊 賓 賛 賜 賞 賠 賢 賦 質 購 贈 赤 赦 走 赴 起 超 越 趣 足 距 跡 路 跳 践 踊 踏 躍 身 車 軌 軍 軒 軟 転 軸 軽 較 載 輝 輩 輪 輸 轄 辛 辞 辰-農 辺 込 迅 迎 近 返 迫 迭 述 迷 追 退 送 逃 逆 透 逐 逓 途 通 逝 速 造 連 逮 週 進 逸 遂 遅 遇 遊 運 遍 過 道-違 遠 遣 適 遭 遮 遵 遷 選 遺 避 還 邦 邪 邸 郊 郎 郡 部 郭 郵 郷 都 酉 酌 配 酒 酔 酢 酪 酬 酵 酷 酸 醜 醸 釈 里-量 金 針 釣 鈍 鈴 鉄 鉛 鉢 鉱 銀 銃 銅 銑 銘 銭 鋭 鋳 鋼 錘 錠 錬 錯 録 鍛 鎖 鎮 鏡 鐘 鑑 長 門 閉 開 閏 閑 間 関 閣 閥 閲 闘 阪 防 阻 附 降 限 陛 院-陥 陪 陰 陳 陵 陶 陸 険 陽 隅 隆 隊 階 随 隔 際 障 隠 隣 隷 隻 雄-雇 雉 雌 雑 離 難 雨 雪 雰 雲 零 雷 電 需 震 霊 霜 霧 露 青 静 非 面 革 靴 韓 音 韻 響 頂 頃 項 順 預-頒 領 頭 頻 頼 題 額 顔 顕 願 類 顧 風 飛 食 飢 飯 飲 飼-飾 養 餓 館 首 香 馬 駄-駆 駐 騎 騒 験 騰 驚 骨 髄 高 髪 鬼 魂 魅 魔 魚 鮮 鯨 鳥 鳴 鶏 鹿 麗 麦 麻 黄 黒 黙 鼓 鼠 鼻 齢] + [兌 拼 楔 錄 鳯] + [あ か さ た な は ま や ら わ] + [‾ __ \-- ‐ — ― 〜 ・ ・ ,, 、、 ;; \:: !! ?? .. ‥ … 。。 ' ‘ ’ "" “ ” (( )) \[[ \]] \{{ \}} 〈 〉 《 》 「「 」」 『 』 【 】 〔 〕 ‖ § ¶ @@ ** // \\ \ \&& ## %% ‰ † ‡ ′ ″ 〃 ※] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + 仏暦 + + + BE + + + + + + GGGGy年M月d日EEEE + + + + + GGGGy年M月d日 + + + + + Gy/MM/dd + + + + + Gy/MM/dd + + + + + + d日 + d日(E) + d日EEEE + GGGGy年 + GGGGy年M月d日 + GGGGy年M月 + GGGGy年M月d日 + GGGGy年M月d日(E) + GGGGy年M月d日EEEE + aK時 + H時 + aK:mm + H:mm + aK:mm:ss + H:mm:ss + M月 + M/d + M/d(E) + M/dEEEE + M月 + M月d日 + M月d日(E) + M月d日EEEE + mm:ss + GGGGy年 + GGGGy年 + GGGGy年M月 + Gy/M/d + GGGGy年M/d(E) + GGGGy年M/dEEEE + Gy/MM + GGGGy年M月 + GGGGy年M月d日 + GGGGy年M月d日(E) + GGGGy年M月d日EEEE + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + 閏{0} + + + + + 閏{0} + + + + + 閏{0} + + + + + + + + + + + + + + + + + + + + + + + + + + 甲子 + 乙丑 + 丙寅 + 丁卯 + 戊辰 + 己巳 + 庚午 + 辛未 + 壬申 + 癸酉 + 甲戌 + 乙亥 + 丙子 + 丁丑 + 戊寅 + 己卯 + 庚辰 + 辛巳 + 壬午 + 癸未 + 甲申 + 乙酉 + 丙戌 + 丁亥 + 戊子 + 己丑 + 庚寅 + 辛卯 + 壬辰 + 癸巳 + 甲午 + 乙未 + 丙申 + 丁酉 + 戊戌 + 己亥 + 庚子 + 辛丑 + 壬寅 + 癸卯 + 甲辰 + 乙巳 + 丙午 + 丁未 + 戊申 + 己酉 + 庚戌 + 辛亥 + 壬子 + 癸丑 + 甲寅 + 乙卯 + 丙辰 + 丁巳 + 戊午 + 己未 + 庚申 + 辛酉 + 壬戌 + 癸亥 + + + + + + + + + + + + + + + + + + + + + + + + + + U年MMMd日EEEE + + + + + U年MMMd日 + + + + + U年MMMd日 + + + + + U-M-d + + + + + + d日 + d日(E) + d日EEEE + U年 + U年MMM + U年MMMd日 + U年MMMd日(E) + U年MMMd日EEEE + aK時 + H時 + aK:mm + H:mm + aK:mm:ss + H:mm:ss + MMM + M/d + M/d(E) + M/dEEEE + MMMd日 + MMMd日(E) + MMMd日EEEE + U年 + U年M月d日 + U年 + U年M月 + U年M月d日 + U年M月d日(E) + U年M月d日EEEE + U年MMM + U年MMMd日 + U年MMMd日(E) + U年MMMd日EEEE + U年QQQ + U年QQQQ + + + {0}~{1} + + d日~d日 + + + aK時~aK時 + aK時~K時 + + + H時~H時 + + + aK時mm分~aK時mm分 + aK時mm分~K時mm分 + aK時mm分~K時mm分 + + + H時mm分~H時mm分 + H時mm分~H時mm分 + + + aK時mm分~aK時mm分(v) + aK時mm分~K時mm分(v) + aK時mm分~K時mm分(v) + + + H時mm分~H時mm分(v) + H時mm分~H時mm分(v) + + + aK時~aK時(v) + aK時~K時(v) + + + H時~H時(v) + + + M月~M月 + + + MM/dd~MM/dd + MM/dd~MM/dd + + + MM/dd(E)~MM/dd(E) + MM/dd(E)~MM/dd(E) + + + MMM~MMM + + + MMMd日~d日 + MMMd日~MMMd日 + + + MMMd日(E)~d日(E) + MMMd日(E)~MMMd日(E) + + + MMMM~MMMM + + + U年~U年 + + + U/MM~U/MM + U/MM~U/MM + + + U/MM/dd~U/MM/dd + U/MM/dd~U/MM/dd + U/MM/dd~U/MM/dd + + + U/MM/dd(E)~U/MM/dd(E) + U/MM/dd(E)~U/MM/dd(E) + U/MM/dd(E)~U/MM/dd(E) + + + U年MMM~MMM + U年MMM~U年MMM + + + U年MMMd日~d日 + U年MMMd日~MMMd日 + U年MMMd日~U年MMMd日 + + + U年MMMd日(E)~d日(E) + U年MMMd日(E)~MMMd日(E) + U年MMMd日(E)~U年MMMd日(E) + + + U年MMM~MMM + U年MMM~U年MMM + + + + + + + + + トウト + ババ + ハトール + キアック + トーバ + アムシール + バラムハート + バラモウダ + バシャンス + パオーナ + エペープ + メスラ + ナシエ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + トウト + ババ + ハトール + キアック + トーバ + アムシール + バラムハート + バラモウダ + バシャンス + パオーナ + エペープ + メスラ + ナシエ + + + + + トウト + ババ + ハトール + キアック + トーバ + アムシール + バラムハート + バラモウダ + バシャンス + パオーナ + エペープ + メスラ + ナシエ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + トウト + ババ + ハトール + キアック + トーバ + アムシール + バラムハート + バラモウダ + バシャンス + パオーナ + エペープ + メスラ + ナシエ + + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + + + + + + + + + + + + + + 甲子 + 乙丑 + 丙寅 + 丁卯 + 戊辰 + 己巳 + 庚午 + 辛未 + 壬申 + 癸酉 + 甲戌 + 乙亥 + 丙子 + 丁丑 + 戊寅 + 己卯 + 庚辰 + 辛巳 + 壬午 + 癸未 + 甲申 + 乙酉 + 丙戌 + 丁亥 + 戊子 + 己丑 + 庚寅 + 辛卯 + 壬辰 + 癸巳 + 甲午 + 乙未 + 丙申 + 丁酉 + 戊戌 + 己亥 + 庚子 + 辛丑 + 壬寅 + 癸卯 + 甲辰 + 乙巳 + 丙午 + 丁未 + 戊申 + 己酉 + 庚戌 + 辛亥 + 壬子 + 癸丑 + 甲寅 + 乙卯 + 丙辰 + 丁巳 + 戊午 + 己未 + 庚申 + 辛酉 + 壬戌 + 癸亥 + + + + + + + + + + + + + + + + + + + + + + + + + + U年MMMd日EEEE + + + + + U年MMMd日 + + + + + U年MMMd日 + + + + + U-M-d + + + + + + + + + メスケレム + テケムト + ヘダル + ターサス + テル + イェカティト + メガビト + ミアジア + ゲンボト + セネ + ハムレ + ネハッセ + パグメン + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + メスケレム + テケムト + ヘダル + ターサス + テル + イェカティト + メガビト + ミアジア + ゲンボト + セネ + ハムレ + ネハッセ + パグメン + + + + + メスケレム + テケムト + ヘダル + ターサス + テル + イェカティト + メガビト + ミアジア + ゲンボト + セネ + ハムレ + ネハッセ + パグメン + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + メスケレム + テケムト + ヘダル + ターサス + テル + イェカティト + メガビト + ミアジア + ゲンボト + セネ + ハムレ + ネハッセ + パグメン + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy/MM/dd + + + + + Gy/MM/dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日(E) + d日EEEE + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日(E) + Gy年M月d日EEEE + aK時 + H時 + aK:mm + H:mm + aK:mm:ss + H:mm:ss + M月 + M/d + M/d(E) + M/dEEEE + M月 + M月d日 + M月d日(E) + M月d日EEEE + mm:ss + Gy年 + Gy年 + Gy/M + Gy/M/d + Gy/M/d(E) + Gy/M/dEEEE + Gy年M月 + Gy年M月d日 + Gy年M月d日(E) + Gy年M月d日EEEE + Gy/QQQ + GyQQQQ + + + {0}~{1} + + d日~d日 + + + aK時~aK時 + aK時~K時 + + + H時~H時 + + + aK時mm分~aK時mm分 + aK時mm分~K時mm分 + aK時mm分~K時mm分 + + + H時mm分~H時mm分 + H時mm分~H時mm分 + + + aK時mm分~aK時mm分(v) + aK時mm分~K時mm分(v) + aK時mm分~K時mm分(v) + + + H時mm分~H時mm分(v) + H時mm分~H時mm分(v) + + + aK時~aK時(v) + aK時~K時(v) + + + H時~H時(v) + + + M月~M月 + + + MM/dd~MM/dd + MM/dd~MM/dd + + + MM/dd(E)~MM/dd(E) + MM/dd(E)~MM/dd(E) + + + M月~M月 + + + M月d日~d日 + M月d日~M月d日 + + + M月d日(E)~d日(E) + M月d日(E)~M月d日(E) + + + M月~M月 + + + Gy年~y年 + + + Gy/MM~y/MM + Gy/MM~y/MM + + + Gy/MM/dd~y/MM/dd + Gy/MM/dd~y/MM/dd + Gy/MM/dd~y/MM/dd + + + Gy/MM/dd(E)~y/MM/dd(E) + Gy/MM/dd(E)~y/MM/dd(E) + Gy/MM/dd(E)~y/MM/dd(E) + + + Gy年M月~M月 + Gy年M月~y年M月 + + + Gy年M月d日~d日 + Gy年M月d日~M月d日 + Gy年M月d日~y年M月d日 + + + Gy年M月d日(E)~d日(E) + Gy年M月d日(E)~M月d日(E) + Gy年M月d日(E)~y年M月d日(E) + + + Gy年M月~M月 + Gy年M月~y年M月 + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 日曜日 + 月曜日 + 火曜日 + 水曜日 + 木曜日 + 金曜日 + 土曜日 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 日曜日 + 月曜日 + 火曜日 + 水曜日 + 木曜日 + 金曜日 + 土曜日 + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 第1四半期 + 第2四半期 + 第3四半期 + 第4四半期 + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 第1四半期 + 第2四半期 + 第3四半期 + 第4四半期 + + + + + + + 午前 + 正午 + 午後 + + + 午前 + 正午 + 午後 + + + + + + 紀元前 + 西暦紀元前 + 西暦 + + + 紀元前 + 西暦紀元前 + 西暦 + + + BC + BCE + AD + CE + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y/MM/dd + + + + + y/MM/dd + + + + + + + H時mm分ss秒 zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日(E) + d日EEEE + a K 時 mm 分 (E) + HH 時 mm 分 (E) + a K 時 mm 分 ss 秒 (E) + HH 時 mm 分 ss 秒 (E) + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日(E) + Gy年M月d日EEEE + aK時 + H時 + aK:mm + H:mm + aK:mm:ss + H:mm:ss + M月 + M/d + M/d(E) + M/dEEEE + M月 + M月d日 + M月d日(E) + M月d日EEEE + mm:ss + y年 + y/M + y/M/d + y/M/d(E) + y/M/dEEEE + y/MM + y年M月 + y年M月d日 + y年M月d日(E) + y年M月d日EEEE + y/QQQ + yQQQQ + + + {0} {1} + + + {0}~{1} + + d日~d日 + + + aK時~aK時 + aK時~K時 + + + H時~H時 + + + aK時mm分~aK時mm分 + aK時mm分~K時mm分 + aK時mm分~K時mm分 + + + H時mm分~H時mm分 + H時mm分~H時mm分 + + + aK時mm分~aK時mm分(v) + aK時mm分~K時mm分(v) + aK時mm分~K時mm分(v) + + + H時mm分~H時mm分(v) + H時mm分~H時mm分(v) + + + aK時~aK時(v) + aK時~K時(v) + + + H時~H時(v) + + + M月~M月 + + + MM/dd~MM/dd + MM/dd~MM/dd + + + MM/dd(E)~MM/dd(E) + MM/dd(E)~MM/dd(E) + + + M月~M月 + + + M月d日~d日 + M月d日~M月d日 + + + M月d日(E)~d日(E) + M月d日(E)~M月d日(E) + + + M月~M月 + + + y年~y年 + + + y/MM~y/MM + y/MM~y/MM + + + y/MM/dd~y/MM/dd + y/MM/dd~y/MM/dd + y/MM/dd~y/MM/dd + + + y/MM/dd(E)~y/MM/dd(E) + y/MM/dd(E)~y/MM/dd(E) + y/MM/dd(E)~y/MM/dd(E) + + + y年M月~M月 + y年M月~y年M月 + + + y年M月d日~d日 + y年M月d日~M月d日 + y年M月d日~y年M月d日 + + + y年M月d日(E)~d日(E) + y年M月d日(E)~M月d日(E) + y年M月d日(E)~y年M月d日(E) + + + y年M月~M月 + y年M月~y年M月 + + + + + + + + + ティスレ + へシボン + キスレブ + テベット + シバット + アダル I + アダル + アダル II + ニサン + イヤル + シバン + タムズ + アヴ + エルル + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + ティスレ + へシボン + キスレブ + テベット + シバット + アダル I + アダル + アダル II + ニサン + イヤル + シバン + タムズ + アヴ + エルル + + + + + ティスレ + へシボン + キスレブ + テベット + シバット + アダル I + アダル + アダル II + ニサン + イヤル + シバン + タムズ + アヴ + エルル + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + ティスレ + へシボン + キスレブ + テベット + シバット + アダル I + アダル + アダル II + ニサン + イヤル + シバン + タムズ + アヴ + エルル + + + + + + AM + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy/MM/dd + + + + + Gy/MM/dd + + + + + + + + + カイトラ + ヴァイサカ + ジャイスタ + アーサダ + スラバナ + バードラ + アスビナ + カルディカ + アヴラハヤナ + パウサ + マーガ + パルグナ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + カイトラ + ヴァイサカ + ジャイスタ + アーサダ + スラバナ + バードラ + アスビナ + カルディカ + アヴラハヤナ + パウサ + マーガ + パルグナ + + + + + カイトラ + ヴァイサカ + ジャイスタ + アーサダ + スラバナ + バードラ + アスビナ + カルディカ + アヴラハヤナ + パウサ + マーガ + パルグナ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + カイトラ + ヴァイサカ + ジャイスタ + アーサダ + スラバナ + バードラ + アスビナ + カルディカ + アヴラハヤナ + パウサ + マーガ + パルグナ + + + + + + サカ + + + + + + + + ムハッラム + サフアル + ラビー・ウル・アウワル + ラビー・ウッ・サーニー + ジュマーダル・アウワル + ジュマーダッサーニー + ラジャブ + シャアバーン + ラマダーン + シャウワール + ズル・カイダ + ズル・ヒッジャ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ムハッラム + サフアル + ラビー・ウル・アウワル + ラビー・ウッ・サーニー + ジュマーダル・アウワル + ジュマーダッサーニー + ラジャブ + シャアバーン + ラマダーン + シャウワール + ズル・カイダ + ズル・ヒッジャ + + + + + ムハッラム + サフアル + ラビー・ウル・アウワル + ラビー・ウッ・サーニー + ジュマーダル・アウワル + ジュマーダッサーニー + ラジャブ + シャアバーン + ラマダーン + シャウワール + ズル・カイダ + ズル・ヒッジャ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ムハッラム + サフアル + ラビー・ウル・アウワル + ラビー・ウッ・サーニー + ジュマーダル・アウワル + ジュマーダッサーニー + ラジャブ + シャアバーン + ラマダーン + シャウワール + ズル・カイダ + ズル・ヒッジャ + + + + + + AH + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy/MM/dd + + + + + Gy/MM/dd + + + + + + d日 + M月 + M/d + M/d(E) + M月 + M月d日 + M月d日(E) + Gy年 + + + + + + + 大化 + 白雉 + 白鳯 + 朱鳥 + 大宝 + 慶雲 + 和銅 + 霊亀 + 養老 + 神亀 + 天平 + 天平感宝 + 天平勝宝 + 天平宝字 + 天平神護 + 神護景雲 + 宝亀 + 天応 + 延暦 + 大同 + 弘仁 + 天長 + 承和 + 嘉祥 + 仁寿 + 斉衡 + 天安 + 貞観 + 元慶 + 仁和 + 寛平 + 昌泰 + 延喜 + 延長 + 承平 + 天慶 + 天暦 + 天徳 + 応和 + 康保 + 安和 + 天禄 + 天延 + 貞元 + 天元 + 永観 + 寛和 + 永延 + 永祚 + 正暦 + 長徳 + 長保 + 寛弘 + 長和 + 寛仁 + 治安 + 万寿 + 長元 + 長暦 + 長久 + 寛徳 + 永承 + 天喜 + 康平 + 治暦 + 延久 + 承保 + 承暦 + 永保 + 応徳 + 寛治 + 嘉保 + 永長 + 承徳 + 康和 + 長治 + 嘉承 + 天仁 + 天永 + 永久 + 元永 + 保安 + 天治 + 大治 + 天承 + 長承 + 保延 + 永治 + 康治 + 天養 + 久安 + 仁平 + 久寿 + 保元 + 平治 + 永暦 + 応保 + 長寛 + 永万 + 仁安 + 嘉応 + 承安 + 安元 + 治承 + 養和 + 寿永 + 元暦 + 文治 + 建久 + 正治 + 建仁 + 元久 + 建永 + 承元 + 建暦 + 建保 + 承久 + 貞応 + 元仁 + 嘉禄 + 安貞 + 寛喜 + 貞永 + 天福 + 文暦 + 嘉禎 + 暦仁 + 延応 + 仁治 + 寛元 + 宝治 + 建長 + 康元 + 正嘉 + 正元 + 文応 + 弘長 + 文永 + 建治 + 弘安 + 正応 + 永仁 + 正安 + 乾元 + 嘉元 + 徳治 + 延慶 + 応長 + 正和 + 文保 + 元応 + 元亨 + 正中 + 嘉暦 + 元徳 + 元弘 + 建武 + 延元 + 興国 + 正平 + 建徳 + 文中 + 天授 + 康暦 + 弘和 + 元中 + 至徳 + 嘉慶 + 康応 + 明徳 + 応永 + 正長 + 永享 + 嘉吉 + 文安 + 宝徳 + 享徳 + 康正 + 長禄 + 寛正 + 文正 + 応仁 + 文明 + 長享 + 延徳 + 明応 + 文亀 + 永正 + 大永 + 享禄 + 天文 + 弘治 + 永禄 + 元亀 + 天正 + 文禄 + 慶長 + 元和 + 寛永 + 正保 + 慶安 + 承応 + 明暦 + 万治 + 寛文 + 延宝 + 天和 + 貞享 + 元禄 + 宝永 + 正徳 + 享保 + 元文 + 寛保 + 延享 + 寛延 + 宝暦 + 明和 + 安永 + 天明 + 寛政 + 享和 + 文化 + 文政 + 天保 + 弘化 + 嘉永 + 安政 + 万延 + 文久 + 元治 + 慶応 + 明治 + 大正 + 昭和 + 平成 + + + 大化 + 白雉 + 白鳯 + 朱鳥 + 大宝 + 慶雲 + 和銅 + 霊亀 + 養老 + 神亀 + 天平 + 天平感宝 + 天平勝宝 + 天平宝字 + 天平神護 + 神護景雲 + 宝亀 + 天応 + 延暦 + 大同 + 弘仁 + 天長 + 承和 + 嘉祥 + 仁寿 + 斉衡 + 天安 + 貞観 + 元慶 + 仁和 + 寛平 + 昌泰 + 延喜 + 延長 + 承平 + 天慶 + 天暦 + 天徳 + 応和 + 康保 + 安和 + 天禄 + 天延 + 貞元 + 天元 + 永観 + 寛和 + 永延 + 永祚 + 正暦 + 長徳 + 長保 + 寛弘 + 長和 + 寛仁 + 治安 + 万寿 + 長元 + 長暦 + 長久 + 寛徳 + 永承 + 天喜 + 康平 + 治暦 + 延久 + 承保 + 承暦 + 永保 + 応徳 + 寛治 + 嘉保 + 永長 + 承徳 + 康和 + 長治 + 嘉承 + 天仁 + 天永 + 永久 + 元永 + 保安 + 天治 + 大治 + 天承 + 長承 + 保延 + 永治 + 康治 + 天養 + 久安 + 仁平 + 久寿 + 保元 + 平治 + 永暦 + 応保 + 長寛 + 永万 + 仁安 + 嘉応 + 承安 + 安元 + 治承 + 養和 + 寿永 + 元暦 + 文治 + 建久 + 正治 + 建仁 + 元久 + 建永 + 承元 + 建暦 + 建保 + 承久 + 貞応 + 元仁 + 嘉禄 + 安貞 + 寛喜 + 貞永 + 天福 + 文暦 + 嘉禎 + 暦仁 + 延応 + 仁治 + 寛元 + 宝治 + 建長 + 康元 + 正嘉 + 正元 + 文応 + 弘長 + 文永 + 建治 + 弘安 + 正応 + 永仁 + 正安 + 乾元 + 嘉元 + 徳治 + 延慶 + 応長 + 正和 + 文保 + 元応 + 元亨 + 正中 + 嘉暦 + 元徳 + 元弘 + 建武 + 延元 + 興国 + 正平 + 建徳 + 文中 + 天授 + 康暦 + 弘和 + 元中 + 至徳 + 嘉慶 + 康応 + 明徳 + 応永 + 正長 + 永享 + 嘉吉 + 文安 + 宝徳 + 享徳 + 康正 + 長禄 + 寛正 + 文正 + 応仁 + 文明 + 長享 + 延徳 + 明応 + 文亀 + 永正 + 大永 + 享禄 + 天文 + 弘治 + 永禄 + 元亀 + 天正 + 文禄 + 慶長 + 元和 + 寛永 + 正保 + 慶安 + 承応 + 明暦 + 万治 + 寛文 + 延宝 + 天和 + 貞享 + 元禄 + 宝永 + 正徳 + 享保 + 元文 + 寛保 + 延享 + 寛延 + 宝暦 + 明和 + 安永 + 天明 + 寛政 + 享和 + 文化 + 文政 + 天保 + 弘化 + 嘉永 + 安政 + 万延 + 文久 + 元治 + 慶応 + M + T + S + H + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gyy/MM/dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日(E) + d日EEEE + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日(E) + Gy年M月d日EEEE + aK時 + H時 + aK:mm + H:mm + aK:mm:ss + H:mm:ss + M月 + M/d + M/d(E) + M/dEEEE + M月 + M月d日 + M月d日(E) + M月d日EEEE + mm:ss + Gy年 + Gy年 + Gy/M/d + Gy/M/d(E) + Gy/M/dEEEE + Gy/MM + Gy年M月 + Gy年M月d日 + Gy年M月d日(E) + Gy年M月d日EEEE + + + + + + + + ファルヴァルディーン + オルディーベヘシュト + ホルダード + ティール + モルダード + シャハリーヴァル + メフル + アーバーン + アーザル + デイ + バフマン + エスファンド + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ファルヴァルディーン + オルディーベヘシュト + ホルダード + ティール + モルダード + シャハリーヴァル + メフル + アーバーン + アーザル + デイ + バフマン + エスファンド + + + + + ファルヴァルディーン + オルディーベヘシュト + ホルダード + ティール + モルダード + シャハリーヴァル + メフル + アーバーン + アーザル + デイ + バフマン + エスファンド + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ファルヴァルディーン + オルディーベヘシュト + ホルダード + ティール + モルダード + シャハリーヴァル + メフル + アーバーン + アーザル + デイ + バフマン + エスファンド + + + + + + AP + + + + + + + 民国前 + 民国 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy/MM/dd + + + + + Gy/MM/dd + + + + + + d日 + M月 + M/d + M/d(E) + M月 + M月d日 + M月d日(E) + Gy年 + + + + + + + 時代 + + + + 昨年 + 今年 + 翌年 + + {0} 年後 + + + {0} 年前 + + + + + 先月 + 今月 + 翌月 + + {0} か月後 + + + {0} か月前 + + + + + 先週 + 今週 + 翌週 + + {0} 週間後 + + + {0} 週間前 + + + + + 一昨日 + 昨日 + 今日 + 明日 + 明後日 + + {0} 日後 + + + {0} 日前 + + + + 曜日 + + + 先週の日曜日 + 今週の日曜日 + 来週の日曜日 + + + 先週の月曜日 + 今週の月曜日 + 来週の月曜日 + + + 先週の火曜日 + 今週の火曜日 + 来週の火曜日 + + + 先週の水曜日 + 今週の水曜日 + 来週の水曜日 + + + 先週の木曜日 + 今週の木曜日 + 来週の木曜日 + + + 先週の金曜日 + 今週の金曜日 + 来週の金曜日 + + + 先週の土曜日 + 今週の土曜日 + 来週の土曜日 + + + 午前/午後 + + + + + {0} 時間後 + + + {0} 時間前 + + + + + + {0} 分後 + + + {0} 分前 + + + + + 今すぐ + + {0} 秒後 + + + {0} 秒前 + + + + タイムゾーン + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0}時間 + {0}夏時間 + {0}標準時 + {1}({0}) + + 地域不明 + + + アンドラ + + + ドバイ + + + カブール + + + アンティグア + + + アンギラ + + + ティラナ + + + エレバン + + + ルアンダ + + + ロゼラ基地 + + + パーマー基地 + + + 昭和基地 + + + モーソン基地 + + + デービス基地 + + + ボストーク基地 + + + ケーシー基地 + + + デュモン・デュルビル基地 + + + マクマード基地 + + + リオガジェゴス + + + メンドーサ + + + サンファン + + + ウシュアイア + + + ラリオハ + + + サンルイス + + + カタマルカ + + + サルタ + + + フフイ + + + トゥクマン + + + コルドバ + + + ブエノスアイレス + + + パゴパゴ + + + ウィーン + + + パース + + + ユークラ + + + ダーウィン + + + アデレード + + + ブロークンヒル + + + カリー + + + メルボルン + + + ホバート + + + リンデマン + + + シドニー + + + ブリスベン + + + マッコリー + + + ロードハウ + + + アルバ + + + マリエハムン + + + バクー + + + サラエボ + + + バルバドス + + + ダッカ + + + ブリュッセル + + + ワガドゥグー + + + ソフィア + + + バーレーン + + + ブジュンブラ + + + ポルトノボ + + + サン・バルテルミー + + + バミューダ + + + ブルネイ + + + ラパス + + + クラレンダイク + + + エイルネペ + + + リオブランコ + + + ポルトベーリョ + + + ボアビスタ + + + マナウス + + + クイアバ + + + サンタレム + + + カンポグランデ + + + ベレン + + + アラグァイナ + + + サンパウロ + + + バイーア + + + フォルタレザ + + + マセイオ + + + レシフェ + + + ノローニャ + + + ナッソー + + + ティンプー + + + ハボローネ + + + ミンスク + + + ベリーズ + + + ドーソン + + + ホワイトホース + + + イヌヴィク + + + バンクーバー + + + ドーソンクリーク + + + クレストン + + + イエローナイフ + + + エドモントン + + + スウィフトカレント + + + ケンブリッジベイ + + + レジャイナ + + + ウィニペグ + + + レゾリュート + + + レイニーリバー + + + ランキンインレット + + + アティコカン + + + サンダーベイ + + + ニピゴン + + + トロント + + + イカルイット + + + パンナータング + + + モンクトン + + + ハリファクス + + + グースベイ + + + グレースベイ + + + ブラン・サブロン + + + セントジョンズ + + + ココス諸島 + + + キンシャサ + + + ルブンバシ + + + バンギ + + + ブラザビル + + + チューリッヒ + + + アビジャン + + + ラロトンガ + + + イースター島 + + + サンチアゴ + + + ドゥアラ + + + カシュガル + + + ウルムチ + + + 重慶 + + + 上海 + + + ハルビン + + + ボゴタ + + + コスタリカ + + + ハバナ + + + カーボベルデ + + + キュラソー + + + クリスマス島 + + + ニコシア + + + プラハ + + + ビュージンゲン + + + ベルリン + + + ジブチ + + + コペンハーゲン + + + ドミニカ + + + サントドミンゴ + + + アルジェ + + + ガラパゴス + + + グアヤキル + + + タリン + + + カイロ + + + アイウン + + + アスマラ + + + カナリア + + + セウタ + + + マドリード + + + アジスアベバ + + + ヘルシンキ + + + フィジー + + + スタンレー + + + チューク + + + ポンペイ島 + + + コスラエ + + + フェロー + + + パリ + + + リーブルヴィル + + + + 英国夏時間 + + ロンドン + + + グレナダ + + + トビリシ + + + カイエンヌ + + + ガーンジー + + + アクラ + + + ジブラルタル + + + チューレ + + + ゴッドホープ + + + スコルズビスーン + + + デンマークシャウン + + + バンジュール + + + コナクリ + + + グアダループ + + + マラボ + + + アテネ + + + サウスジョージア + + + グアテマラ + + + グアム + + + ビサウ + + + ガイアナ + + + 香港 + + + テグシガルパ + + + ザグレブ + + + ポルトープランス + + + ブダペスト + + + ジャカルタ + + + ポンティアナック + + + マカッサル + + + ジャヤプラ + + + + アイルランド夏時間 + + ダブリン + + + エルサレム + + + マン島 + + + コルカタ + + + チャゴス + + + バグダッド + + + テヘラン + + + レイキャビク + + + ローマ + + + ジャージー + + + ジャマイカ + + + アンマン + + + 東京 + + + ナイロビ + + + ビシュケク + + + プノンペン + + + エンダーベリー島 + + + キリスィマスィ島 + + + タラワ + + + コモロ + + + セントキッツ + + + 平壌 + + + ソウル + + + クウェート + + + ケイマン + + + アクタウ + + + オラル + + + アクトベ + + + クズロルダ + + + アルマトイ + + + ビエンチャン + + + ベイルート + + + セントルシア + + + ファドゥーツ + + + コロンボ + + + モンロビア + + + マセル + + + ヴィリニュス + + + ルクセンブルグ + + + リガ + + + トリポリ + + + カサブランカ + + + モナコ + + + キシナウ + + + ポドゴリツァ + + + マリゴ + + + アンタナナリボ + + + クェゼリン + + + マジュロ + + + スコピエ + + + バマコ + + + ラングーン + + + ホブド + + + ウランバートル + + + チョイバルサン + + + マカオ + + + サイパン + + + マルティニーク + + + ヌアクショット + + + モントセラト + + + マルタ + + + モーリシャス + + + モルディブ + + + ブランタイヤ + + + ティフアナ + + + サンタイサベル + + + エルモシヨ + + + マサトラン + + + チワワ + + + バイアバンデラ + + + オヒナガ + + + モンテレイ + + + メキシコシティー + + + マタモロス + + + メリダ + + + カンクン + + + クアラルンプール + + + クチン + + + マプト + + + ウィントフック + + + ヌメア + + + ニアメ + + + ノーフォーク島 + + + ラゴス + + + マナグア + + + アムステルダム + + + オスロ + + + カトマンズ + + + ナウル + + + ニウエ + + + チャタム + + + オークランド + + + マスカット + + + パナマ + + + リマ + + + タヒチ + + + マルキーズ + + + ガンビエ諸島 + + + ポートモレスビー + + + マニラ + + + カラチ + + + ワルシャワ + + + ミクロン島 + + + ピトケアン諸島 + + + プエルトリコ + + + ガザ + + + ヘブロン + + + アゾレス + + + マデイラ + + + リスボン + + + パラオ + + + アスンシオン + + + カタール + + + レユニオン + + + ブカレスト + + + ベオグラード + + + カリーニングラード + + + モスクワ + + + ボルゴグラード + + + サマラ + + + エカテリンブルグ + + + オムスク + + + ノヴォシビルスク + + + ノヴォクズネツク + + + クラスノヤルスク + + + イルクーツク + + + ヤクーツク + + + ウラジオストク + + + ハンドゥイガ + + + サハリン + + + ウスチネラ + + + マガダン + + + カムチャッカ + + + アナディリ + + + キガリ + + + リヤド + + + ガダルカナル + + + マヘ + + + ハルツーム + + + ストックホルム + + + シンガポール + + + セントヘレナ + + + リュブリャナ + + + ロングイェールビーン + + + ブラチスラバ + + + フリータウン + + + サンマリノ + + + ダカール + + + モガディシオ + + + パラマリボ + + + ジュバ + + + サントメ + + + エルサルバドル + + + ローワー・プリンセズ・クウォーター + + + ダマスカス + + + ムババーネ + + + グランドターク + + + ンジャメナ + + + ケルゲレン諸島 + + + ロメ + + + バンコク + + + ドゥシャンベ + + + ファカオフォ + + + ディリ + + + アシガバード + + + チュニス + + + トンガタプ + + + イスタンブール + + + ポートオブスペイン + + + フナフティ + + + 台北 + + + ダルエスサラーム + + + ウージュホロド + + + キエフ + + + シンフェロポリ + + + ザポリージャ + + + カンパラ + + + ミッドウェー島 + + + ジョンストン島 + + + ウェーク島 + + + アダック + + + ノーム + + + ホノルル + + + アンカレッジ + + + ヤクタット + + + シトカ + + + ジュノー + + + メトラカトラ + + + ロサンゼルス + + + ボイシ + + + フェニックス + + + デンバー + + + ノースダコタ州ビューラー + + + ノースダコタ州ニューセーラム + + + ノースダコタ州センター + + + シカゴ + + + メノミニー + + + インディアナ州ビンセンス + + + インディアナ州ピーターズバーグ + + + インディアナ州テルシティ + + + インディアナ州ノックス + + + インディアナ州ウィナマック + + + インディアナ州マレンゴ + + + インディアナポリス + + + ルイビル + + + インディアナ州ビベー + + + ケンタッキー州モンティチェロ + + + デトロイト + + + ニューヨーク + + + モンテビデオ + + + サマルカンド + + + タシケント + + + バチカン + + + セントビンセント + + + カラカス + + + トルトーラ + + + セントトーマス + + + ホーチミン + + + エフェテ島 + + + ウォリス諸島 + + + アピア + + + アデン + + + マヨット + + + ヨハネスブルグ + + + ルサカ + + + ハラレ + + + + アクレ時間 + アクレ標準時 + アクレ夏時間 + + + + + アフガニスタン時間 + + + + + 中央アフリカ時間 + + + + + 東アフリカ時間 + + + + + 南アフリカ時間 + + + + + 西アフリカ時間 + 西アフリカ標準時 + 西アフリカ夏時間 + + + + + アラスカ時間 + アラスカ標準時 + アラスカ夏時間 + + + + + アルトマイ時間 + アルトマイ標準時 + アルマトイ夏時間 + + + + + アマゾン時間 + アマゾン標準時 + アマゾン夏時間 + + + + + アメリカ中部時間 + アメリカ中部標準時 + アメリカ中部夏時間 + + + + + アメリカ東部時間 + アメリカ東部標準時 + アメリカ東部夏時間 + + + + + アメリカ山地時間 + アメリカ山地標準時 + アメリカ山地夏時間 + + + + + アメリカ太平洋時間 + アメリカ太平洋標準時 + アメリカ太平洋夏時間 + + + + + アナディリ時間 + アナディリ標準時 + アナディリ夏時間 + + + + + アクタウ時間 + アクタウ標準時 + アクタウ夏時間 + + + + + アクトベ時間 + アクトベ標準時 + アクトベ夏時間 + + + + + アラビア時間 + アラビア標準時 + アラビア夏時間 + + + + + アルゼンチン時間 + アルゼンチン標準時 + アルゼンチン夏時間 + + + + + 西部アルゼンチン時間 + 西部アルゼンチン標準時 + 西部アルゼンチン夏時間 + + + + + アルメニア時間 + アルメニア標準時 + アルメニア夏時間 + + + + + 大西洋時間 + 大西洋標準時 + 大西洋夏時間 + + + + + オーストラリア中部時間 + オーストラリア中部標準時 + オーストラリア中部夏時間 + + + + + オーストラリア中西部時間 + オーストラリア中西部標準時 + オーストラリア中西部夏時間 + + + + + オーストラリア東部時間 + オーストラリア東部標準時 + オーストラリア東部夏時間 + + + + + オーストラリア西部時間 + オーストラリア西部標準時 + オーストラリア西部夏時間 + + + + + アゼルバイジャン時間 + アゼルバイジャン標準時 + アゼルバイジャン夏時間 + + + + + アゾレス時間 + アゾレス標準時 + アゾレス夏時間 + + + + + バングラデシュ時間 + バングラデシュ標準時 + バングラデシュ夏時間 + + + + + ブータン時間 + + + + + ボリビア時間 + + + + + ブラジリア時間 + ブラジリア標準時 + ブラジリア夏時間 + + + + + ブルネイ・ダルサラーム時間 + + + + + カーボベルデ時間 + カーボベルデ標準時 + カーボベルデ夏時間 + + + + + ケイシー基地時間 + + + + + チャモロ時間 + + + + + チャタム時間 + チャタム標準時 + チャタム夏時間 + + + + + チリ時間 + チリ標準時 + チリ夏時間 + + + + + 中国時間 + 中国標準時 + 中国夏時間 + + + + + チョイバルサン時間 + チョイバルサン標準時 + チョイバルサン夏時間 + + + + + クリスマス島時間 + + + + + ココス諸島時間 + + + + + コロンビア時間 + コロンビア標準時 + コロンビア夏時間 + + + + + クック諸島時間 + クック諸島標準時 + クック諸島夏時間 + + + + + キューバ時間 + キューバ標準時 + キューバ夏時間 + + + + + デービス基地時間 + + + + + デュモン・デュルヴィル基地時間 + + + + + 東ティモール時間 + + + + + イースター島時間 + イースター島標準時 + イースター島夏時間 + + + + + エクアドル時間 + + + + + 中央ヨーロッパ時間 + 中央ヨーロッパ標準時 + 中央ヨーロッパ夏時間 + + + + + 東ヨーロッパ時間 + 東ヨーロッパ標準時 + 東ヨーロッパ夏時間 + + + + + 西ヨーロッパ時間 + 西ヨーロッパ標準時 + 西ヨーロッパ夏時間 + + + + + フォークランド諸島時間 + フォークランド諸島標準時 + フォークランド諸島夏時間 + + + + + フィジー時間 + フィジー標準時 + フィジー夏時間 + + + + + 仏領ギアナ時間 + + + + + 仏領南方南極時間 + + + + + ガラパゴス時間 + + + + + ガンビエ諸島時間 + + + + + グルジア時間 + グルジア標準時 + グルジア夏時間 + + + + + ギルバート諸島時間 + + + + + グリニッジ標準時 + + + + + グリーンランド東部時間 + グリーンランド東部標準時 + グリーンランド東部夏時間 + + + + + グリーンランド西部時間 + グリーンランド西部標準時 + グリーンランド西部夏時間 + + + + + グアム時間 + + + + + 湾岸時間 + + + + + ガイアナ時間 + + + + + ハワイ・アリューシャン時間 + ハワイ・アリューシャン標準時 + ハワイ・アリューシャン夏時間 + + + + + 香港時間 + 香港標準時 + 香港夏時間 + + + + + ホブド時間 + ホブド標準時 + ホブド夏時間 + + + + + インド時間 + + + + + インド洋時間 + + + + + インドシナ時間 + + + + + インドネシア中部時間 + + + + + インドネシア東部時間 + + + + + インドネシア西部時間 + + + + + イラン時間 + イラン標準時 + イラン夏時間 + + + + + イルクーツク時間 + イルクーツク標準時 + イルクーツク夏時間 + + + + + イスラエル時間 + イスラエル標準時 + イスラエル夏時間 + + + + + 日本時間 + 日本標準時 + 日本夏時間 + + + ∅∅∅ + JST + JDT + + + + + ペトロパブロフスク・カムチャツキー時間 + ペトロパブロフスク・カムチャツキー標準時 + ペトロパブロフスク・カムチャツキー夏時間 + + + + + 東カザフスタン時間 + + + + + 西カザフスタン時間 + + + + + 韓国時間 + 韓国標準時 + 韓国夏時間 + + + + + コスラエ時間 + + + + + クラスノヤルスク時間 + クラスノヤルスク標準時 + クラスノヤルスク夏時間 + + + + + キルギスタン時間 + + + + + ランカ時間 + + + + + ライン諸島時間 + + + + + ロードハウ時間 + ロードハウ標準時 + ロードハウ夏時間 + + + + + マカオ時間 + マカオ標準時 + マカオ夏時間 + + + + + マッコーリー島時間 + + + + + マガダン時間 + マガダン標準時 + マガダン夏時間 + + + + + マレーシア時間 + + + + + モルディブ時間 + + + + + マルキーズ時間 + + + + + マーシャル諸島時間 + + + + + モーリシャス時間 + モーリシャス標準時 + モーリシャス夏時間 + + + + + モーソン基地時間 + + + + + メキシコ北西部時間 + メキシコ北西部標準時 + メキシコ北西部夏時間 + + + + + メキシコ太平洋時間 + メキシコ太平洋標準時 + メキシコ太平洋夏時間 + + + + + ウランバートル時間 + ウランバートル標準時 + ウランバートル夏時間 + + + + + モスクワ時間 + モスクワ標準時 + モスクワ夏時間 + + + + + ミャンマー時間 + + + + + ナウル時間 + + + + + ネパール時間 + + + + + ニューカレドニア時間 + ニューカレドニア標準時 + ニューカレドニア夏時間 + + + + + ニュージーランド時間 + ニュージーランド標準時 + ニュージーランド夏時間 + + + + + ニューファンドランド時間 + ニューファンドランド標準時 + ニューファンドランド夏時間 + + + + + ニウエ時間 + + + + + ノーフォーク島時間 + + + + + フェルナンド・デ・ノローニャ時間 + フェルナンド・デ・ノローニャ標準時 + フェルナンド・デ・ノローニャ夏時間 + + + + + 北マリアナ諸島時間 + + + + + ノヴォシビルスク時間 + ノヴォシビルスク標準時 + ノヴォシビルスク夏時間 + + + + + オムスク時間 + オムスク標準時 + オムスク夏時間 + + + + + パキスタン時間 + パキスタン標準時 + パキスタン夏時間 + + + + + パラオ時間 + + + + + パプアニューギニア時間 + + + + + パラグアイ時間 + パラグアイ標準時 + パラグアイ夏時間 + + + + + ペルー時間 + ペルー標準時 + ペルー夏時間 + + + + + フィリピン時間 + フィリピン標準時 + フィリピン夏時間 + + + + + フェニックス諸島時間 + + + + + サンピエール・ミクロン時間 + サンピエール・ミクロン標準時 + サンピエール・ミクロン夏時間 + + + + + ピトケアン時間 + + + + + ポナペ時間 + + + + + クズロルダ時間 + クズロルダ標準時 + クズロルダ夏時間 + + + + + レユニオン時間 + + + + + ロゼラ基地時間 + + + + + サハリン時間 + サハリン標準時 + サハリン夏時間 + + + + + サマラ時間 + サマラ標準時 + サマラ夏時間 + + + + + サモア時間 + サモア標準時 + サモア夏時間 + + + + + セーシェル時間 + + + + + シンガポール時間 + + + + + ソロモン諸島時間 + + + + + サウスジョージア時間 + + + + + スリナム時間 + + + + + 昭和基地時間 + + + + + タヒチ時間 + + + + + 台北時間 + 台北標準時 + 台北夏時間 + + + + + タジキスタン時間 + + + + + トケラウ時間 + + + + + トンガ時間 + トンガ標準時 + トンガ夏時間 + + + + + チューク時間 + + + + + トルクメニスタン時間 + トルクメニスタン標準時 + トルクメニスタン夏時間 + + + + + ツバル時間 + + + + + ウルグアイ時間 + ウルグアイ標準時 + ウルグアイ夏時間 + + + + + ウズベキスタン時間 + ウズベキスタン標準時 + ウズベキスタン夏時間 + + + + + バヌアツ時間 + バヌアツ標準時 + バヌアツ夏時間 + + + + + ベネズエラ時間 + + + + + ウラジオストク時間 + ウラジオストク標準時 + ウラジオストク夏時間 + + + + + ボルゴグラード時間 + ヴォルゴグラード標準時 + ボルゴグラード夏時間 + + + + + ボストーク基地時間 + + + + + ウェーク島時間 + + + + + ウォリス・フツナ時間 + + + + + ヤクーツク時間 + ヤクーツク標準時 + ヤクーツク夏時間 + + + + + エカテリンブルグ時間 + エカテリンブルグ標準時 + エカテリンブルグ夏時間 + + + + + + latn + + latn + jpan + jpanfin + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0千 + 0万 + 00万 + 000万 + 0000万 + 0億 + 00億 + 000億 + 0000億 + 0兆 + 00兆 + 000兆 + + + + + 0千 + 0万 + 00万 + 000万 + 0000万 + 0億 + 00億 + 000億 + 0000億 + 0兆 + 00兆 + 000兆 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + アンドラ ペセタ + アンドラ ペセタ + + + アラブ首長国連邦ディルハム + アラブ首長国連邦ディルハム + + + アフガニスタン アフガニー (1927–2002) + アフガニスタン アフガニー (1927–2002) + + + アフガニー + アフガニー + + + アルバニア レク + アルバニア レク + + + アルメニア ドラム + アルメニア ドラム + + + オランダ領アンティル ギルダー + オランダ領アンティル ギルダー + + + クワンザ + クワンザ + + + アンゴラ クワンザ (1977–1991) + アンゴラ クワンザ (1977–1991) + + + アンゴラ 新クワンザ (1990–2000) + アンゴラ 新クワンザ (1990–2000) + + + アンゴラ 旧クワンザ (1995–1999) + アンゴラ 旧クワンザ (1995–1999) + + + アルゼンチン アゥストラール + アルゼンチン アゥストラール + + + アルゼンチン・ペソ・レイ(1970-1983) + アルゼンチン・ペソ・レイ(1970-1983) + + + アルゼンチン・ペソ(1881-1970) + アルゼンチン・ペソ(1881-1970) + + + アルゼンチン ペソ (1983–1985) + アルゼンチン ペソ (1983–1985) + + + アルゼンチン ペソ + アルゼンチン ペソ + + + オーストリア シリング + オーストリア シリング + + + オーストラリア ドル + オーストラリア ドル + AU$ + + + アルバ ギルダー + アルバ ギルダー + + + アゼルバイジャン マナト (1993–2006) + アゼルバイジャン マナト (1993–2006) + + + アゼルバイジャン マナト + アゼルバイジャン マナト + + + ボスニア・ヘルツェゴビナ ディナール (1992–1994) + ボスニア・ヘルツェゴビナ ディナール (1992–1994) + + + ボスニア マルク (BAM) + ボスニア マルク (BAM) + + + ボスニア・ヘルツェゴビナ 新ディナール(1994-1997) + ボスニア・ヘルツェゴビナ 新ディナール(1994-1997) + + + バルバドス ドル + バルバドス ドル + + + バングラデシュ タカ + バングラデシュ タカ + + + ベルギー フラン (BEC) + ベルギー フラン (BEC) + + + ベルギー フラン + ベルギー フラン + + + ベルギー フラン (BEL) + ベルギー フラン (BEL) + + + ブルガリア レフ + ブルガリア レフ + + + ブルガリア社会主義 レフ + ブルガリア社会主義 レフ + + + ブルガリア 新レフ + ブルガリア 新レフ + + + ブルガリア レフ(1879-1952) + ブルガリア レフ(1879-1952) + + + バーレーン ディナール + バーレーン ディナール + + + ブルンジ フラン + ブルンジ フラン + + + バミューダ ドル + バミューダ ドル + + + ブルネイ ドル + ブルネイ ドル + + + ボリビア ボリビアーノ + ボリビア ボリビアーノ + + + ボリビア ボリビアーノ (1863–1963) + ボリビア ボリビアーノ (1863–1963) + + + ボリビア ペソ + ボリビア ペソ + + + ボリビア (Mvdol) + ボリビア (Mvdol) + + + ブラジル 新クルゼイロ (1967–1986) + ブラジル 新クルゼイロ (1967–1986) + + + ブラジル クルザード (1986–1989) + ブラジル クルザード (1986–1989) + + + ブラジル クルゼイロ (1990–1993) + ブラジル クルゼイロ (1990–1993) + + + ブラジル レアル + ブラジル レアル + R$ + + + ブラジル 新クルザード (1989–1990) + ブラジル 新クルザード (1989–1990) + + + ブラジル クルゼイロ (1993–1994) + ブラジル クルゼイロ (1993–1994) + + + ブラジル クルゼイロ(1942-1967) + ブラジル クルゼイロ(1942-1967) + + + バハマ ドル + バハマ ドル + + + ブータン ニュルタム + ブータン ニュルタム + + + ビルマ チャット + ビルマ チャット + + + ボツワナ プラ + ボツワナ プラ + + + ベラルーシ 新ルーブル (1994–1999) + ベラルーシ 新ルーブル (1994–1999) + + + ベラルーシ ルーブル + ベラルーシ ルーブル + + + ベリーズ ドル + ベリーズ ドル + + + カナダ ドル + カナダ ドル + CA$ + + + コンゴ フラン + コンゴ フラン + + + ユーロ (WIR) + ユーロ (WIR) + + + スイス フラン + スイス フラン + + + フラン (WIR) + フラン (WIR) + + + チリ エスクード + チリ エスクード + + + チリ ウニダ・デ・フォメント (UF) + チリ ウニダ・デ・フォメント (UF) + + + チリ ペソ + チリ ペソ + + + 中国人民元 + 中国人民元 + + + + コロンビア ペソ + コロンビア ペソ + + + コロンビア レアル (UVR) + コロンビア レアル (UVR) + + + コスタリカ コロン + コスタリカ コロン + + + セルビア ディナール (2002–2006) + セルビア ディナール (2002–2006) + + + チェコスロバキア コルナ + チェコスロバキア コルナ + + + キューバ 兌換ペソ + キューバ 兌換ペソ + + + キューバ ペソ + キューバ ペソ + + + カーボベルデ エスクード + カーボベルデ エスクード + + + キプロス ポンド + キプロス ポンド + + + チェコ コルナ + チェコ コルナ + + + 東ドイツ マルク + 東ドイツ マルク + + + ドイツ マルク + ドイツ マルク + + + ジブチ フラン + ジブチ フラン + + + デンマーク クローネ + デンマーク クローネ + + + ドミニカ ペソ + ドミニカ ペソ + + + アルジェリア ディナール + アルジェリア ディナール + + + エクアドル スクレ + エクアドル スクレ + + + エクアドル (UVC) + エクアドル (UVC) + + + エストニア クルーン + エストニア クルーン + + + エジプト ポンド + エジプト ポンド + + + エリトリア ナクファ + エリトリア ナクファ + + + スペインペセタ(勘定A) + スペインペセタ(勘定A) + + + スペイン 兌換ペセタ + スペイン 兌換ペセタ + + + スペイン ペセタ + スペイン ペセタ + + + エチオピア ブル + エチオピア ブル + + + ユーロ + ユーロ + + + + フィンランド マルカ + フィンランド マルカ + + + フィジー諸島 ドル + フィジー諸島 ドル + + + フォークランド(マルビナス)諸島 ポンド + フォークランド(マルビナス)諸島 ポンド + + + フランス フラン + フランス フラン + + + 英国ポンド + 英国ポンド + £ + + + グルジア クーポン ラリ + グルジア クーポン ラリ + + + グルジア ラリ + グルジア ラリ + + + ガーナ セディ (1979–2007) + ガーナ セディ (1979–2007) + + + ガーナ セディ + ガーナ セディ + + + ジブラルタル ポンド + ジブラルタル ポンド + + + ガンビア ダラシ + ガンビア ダラシ + + + ギニア フラン + ギニア フラン + + + ギニア シリー + ギニア シリー + + + 赤道ギニア エクウェレ + 赤道ギニア エクウェレ + + + ギリシャ ドラクマ + ギリシャ ドラクマ + + + グアテマラ ケツァル + グアテマラ ケツァル + + + ポルトガル領ギニア エスクード + ポルトガル領ギニア エスクード + + + ギニアビサウ ペソ + ギニアビサウ ペソ + + + ガイアナ ドル + ガイアナ ドル + + + 香港ドル + 香港ドル + HK$ + + + ホンジュラス レンピラ + ホンジュラス レンピラ + + + クロアチア ディナール + クロアチア ディナール + + + クロアチア クーナ + クロアチア クーナ + + + ハイチ グールド + ハイチ グールド + + + ハンガリー フォリント + ハンガリー フォリント + + + インドネシア ルピア + インドネシア ルピア + + + アイリッシュ ポンド + アイリッシュ ポンド + + + イスラエル ポンド + イスラエル ポンド + + + イスラエル新シェケル + イスラエル新シェケル + + + + インド ルピー + インド ルピー + + + + イラク ディナール + イラク ディナール + + + イラン リアル + イラン リアル + + + アイスランド クローナ + アイスランド クローナ + + + イタリア リラ + イタリア リラ + + + ジャマイカ ドル + ジャマイカ ドル + + + ヨルダン ディナール + ヨルダン ディナール + + + 日本円 + + + + + ケニア シリング + ケニア シリング + + + キルギスタン ソム + キルギスタン ソム + + + カンボジア リエル + カンボジア リエル + + + コモロ フラン + コモロ フラン + + + 北朝鮮 ウォン + 北朝鮮 ウォン + + + 韓国 ファン(1953-1962) + 韓国 ファン(1953-1962) + + + 韓国 ウォン(1945-1953) + 韓国 ウォン(1945-1953) + + + 韓国 ウォン + 韓国 ウォン + + + + クウェート ディナール + クウェート ディナール + + + ケイマン諸島 ドル + ケイマン諸島 ドル + + + カザフスタン テンゲ + カザフスタン テンゲ + + + ラオス キープ + ラオス キープ + + + レバノン ポンド + レバノン ポンド + + + スリランカ ルピー + スリランカ ルピー + + + リベリア ドル + リベリア ドル + + + レソト ロティ + レソト ロティ + + + リトアニア リタス + リトアニア リタス + + + リトアニア タロナ + リトアニア タロナ + + + ルクセンブルク 兌換フラン + ルクセンブルク 兌換フラン + + + ルクセンブルグ フラン + ルクセンブルグ フラン + + + ルクセンブルク 金融フラン + ルクセンブルク 金融フラン + + + ラトビア ラッツ + ラトビア ラッツ + + + ラトビア ルーブル + ラトビア ルーブル + + + リビア ディナール + リビア ディナール + + + モロッコ ディルハム + モロッコ ディルハム + + + モロッコ フラン + モロッコ フラン + + + モネガスク フラン + モネガスク フラン + + + モルドバ クーポン + モルドバ クーポン + + + モルドバ レイ + モルドバ レイ + + + マダガスカル アリアリ + マダガスカル アリアリ + + + マラガシ フラン + マラガシ フラン + + + マケドニア デナル + マケドニア デナル + + + マケドニア ディナール(1992-1993) + マケドニア ディナール(1992-1993) + + + マリ フラン + マリ フラン + + + ミャンマー チャット + ミャンマー チャット + + + モンゴル トグログ + モンゴル トグログ + + + マカオ パタカ + マカオ パタカ + + + モーリタニア ウギア + モーリタニア ウギア + + + マルタ リラ + マルタ リラ + + + マルタ ポンド + マルタ ポンド + + + モーリシャス ルピー + モーリシャス ルピー + + + モルディブ諸島 ルフィア + モルディブ諸島 ルフィア + + + マラウィ クワチャ + マラウィ クワチャ + + + メキシコ ペソ + メキシコ ペソ + MX$ + + + メキシコ ペソ (1861–1992) + メキシコ ペソ (1861–1992) + + + メキシコ (UDI) + メキシコ (UDI) + + + マレーシア リンギット + マレーシア リンギット + + + モザンピーク エスクード + モザンピーク エスクード + + + モザンビーク メティカル (1980–2006) + モザンビーク メティカル (1980–2006) + + + モザンビーク メティカル + モザンビーク メティカル + + + ナミビア ドル + ナミビア ドル + + + ナイジェリア ナイラ + ナイジェリア ナイラ + + + ニカラグア コルドバ (1988–1991) + ニカラグア コルドバ (1988–1991) + + + ニカラグア コルドバ オロ + ニカラグア コルドバ オロ + + + オランダ ギルダー + オランダ ギルダー + + + ノルウェー クローネ + ノルウェー クローネ + + + ネパール ルピー + ネパール ルピー + + + ニュージーランド ドル + ニュージーランド ドル + NZ$ + + + オマーン リアル + オマーン リアル + + + パナマ バルボア + パナマ バルボア + + + ペルー インティ + ペルー インティ + + + ペルー 新ソル + ペルー 新ソル + + + ペルー ソル (1863–1965) + ペルー ソル (1863–1965) + + + パプアニューギニア キナ + パプアニューギニア キナ + + + フィリピン ペソ + フィリピン ペソ + + + パキスタン ルピー + パキスタン ルピー + + + ポーランド ズウォティ + ポーランド ズウォティ + + + ポーランド ズウォティ (1950–1995) + ポーランド ズウォティ (1950–1995) + + + ポルトガル エスクード + ポルトガル エスクード + + + パラグアイ グアラニ + パラグアイ グアラニ + + + カタール リアル + カタール リアル + + + ローデシア ドル + ローデシア ドル + + + ルーマニア レイ (1952–2006) + ルーマニア レイ (1952–2006) + + + ルーマニア レイ + ルーマニア レイ + + + ディナール (セルビア) + ディナール (セルビア) + + + ロシア ルーブル + ロシア ルーブル + + + ロシア ルーブル (1991–1998) + ロシア ルーブル (1991–1998) + + + ルワンダ フラン + ルワンダ フラン + + + サウジ リヤル + サウジ リヤル + + + ソロモン諸島 ドル + ソロモン諸島 ドル + + + セーシェル ルピー + セーシェル ルピー + + + スーダン ディナール (1992–2007) + スーダン ディナール (1992–2007) + + + スーダン ポンド + スーダン ポンド + + + スーダン ポンド (1957–1998) + スーダン ポンド (1957–1998) + + + スウェーデン クローナ + スウェーデン クローナ + + + シンガポール ドル + シンガポール ドル + + + セントヘレナ島 ポンド + セントヘレナ島 ポンド + + + スロベニア トラール + スロベニア トラール + + + スロバキア コルナ + スロバキア コルナ + + + シエラレオネ レオン + シエラレオネ レオン + + + ソマリア シリング + ソマリア シリング + + + スリナム ドル + スリナム ドル + + + スリナム ギルダー + スリナム ギルダー + + + 南スーダン・ポンド + 南スーダン・ポンド + + + サントメ・プリンシペ ドブラ + サントメ・プリンシペ ドブラ + + + ソ連 ルーブル + ソ連 ルーブル + + + エルサルバドル コロン + エルサルバドル コロン + + + シリア ポンド + シリア ポンド + + + スワジランド リランゲニ + スワジランド リランゲニ + + + タイ バーツ + タイ バーツ + ฿ + + + タジキスタン ルーブル + タジキスタン ルーブル + + + タジキスタン ソモニ + タジキスタン ソモニ + + + トルクメニスタン マナト (1993–2009) + トルクメニスタン マナト (1993–2009) + + + トルクメニスタン マナト + トルクメニスタン マナト + + + チュニジア ディナール + チュニジア ディナール + + + トンガ パ・アンガ + トンガ パ・アンガ + + + ティモール エスクード + ティモール エスクード + + + トルコ リラ (1922–2005) + トルコ リラ (1922–2005) + + + 新トルコリラ + 新トルコリラ + + + トリニダードトバゴ ドル + トリニダードトバゴ ドル + + + 新台湾ドル + 新台湾ドル + NT$ + + + タンザニア シリング + タンザニア シリング + + + ウクライナ グリブナ + ウクライナ グリブナ + + + ウクライナ カルボバネツ + ウクライナ カルボバネツ + + + ウガンダ シリング (1966–1987) + ウガンダ シリング (1966–1987) + + + ウガンダ シリング + ウガンダ シリング + + + 米ドル + 米ドル + $ + + + 米ドル (翌日) + 米ドル (翌日) + + + 米ドル (当日) + 米ドル (当日) + + + ウルグアイ ペソエン + ウルグアイ ペソエン + + + ウルグアイ ペソ (1975–1993) + ウルグアイ ペソ (1975–1993) + + + ウルグアイ ペソ + ウルグアイ ペソ + + + ウズベキスタン スム + ウズベキスタン スム + + + ベネズエラ ボリバル (1871–2008) + ベネズエラ ボリバル (1871–2008) + + + ベネズエラ ボリバル + ベネズエラ ボリバル + + + ベトナム ドン + ベトナム ドン + + + + ベトナム ドン(1978-1985) + ベトナム ドン(1978-1985) + + + バヌアツ バツ + バヌアツ バツ + + + サモア タラ + サモア タラ + + + CFA フラン(BEAC) + CFA フラン(BEAC) + FCFA + + + + + + + + + + + ヨーロッパ混合単位 (EURCO) + ヨーロッパ混合単位 (EURCO) + + + ヨーロッパ通貨単位 (EMU–6) + ヨーロッパ通貨単位 (EMU–6) + + + ヨーロッパ勘定単位 (EUA–9) + ヨーロッパ勘定単位 (EUA–9) + + + ヨーロッパ勘定単位 (EUA–17) + ヨーロッパ勘定単位 (EUA–17) + + + 東カリブ ドル + 東カリブ ドル + EC$ + + + 特別引き出し権 + 特別引き出し権 + + + ヨーロッパ通貨単位 + ヨーロッパ通貨単位 + + + フランス金フラン + フランス金フラン + + + フランス フラン (UIC) + フランス フラン (UIC) + + + CFA フラン(BCEAO) + CFA フラン(BCEAO) + CFA + + + パラジウム + パラジウム + + + CFP フラン + CFP フラン + CFPF + + + プラチナ + プラチナ + + + RINET基金 + RINET基金 + + + スクレ + スクレ + + + テスト用通貨コード + テスト用通貨コード + + + UA (アフリカ開発銀行) + UA (アフリカ開発銀行) + + + 不明または無効な通貨 + 不明または無効な通貨 + + + イエメン ディナール + イエメン ディナール + + + イエメン リアル + イエメン リアル + + + ユーゴスラビア ハード・ディナール (1966–1990) + ユーゴスラビア ハード・ディナール (1966–1990) + + + ユーゴスラビア ノビ・ディナール (1994–2002) + ユーゴスラビア ノビ・ディナール (1994–2002) + + + ユーゴスラビア 兌換ディナール (1990–1992) + ユーゴスラビア 兌換ディナール (1990–1992) + + + ユーゴスラビア 改革ディナール(1992-1993) + ユーゴスラビア 改革ディナール(1992-1993) + + + 南アフリカ ランド (ZAL) + 南アフリカ ランド (ZAL) + + + 南アフリカ ランド + 南アフリカ ランド + + + ザンビア クワチャ (1968–2012) + ザンビア クワチャ (1968–2012) + + + ザンビア クワチャ + ザンビア クワチャ + + + ザイール 新ザイール (1993–1998) + ザイール 新ザイール (1993–1998) + + + ザイール ザイール (1971–1993) + ザイール ザイール (1971–1993) + + + ジンバブエ ドル (1980–2008) + ジンバブエ ドル (1980–2008) + + + ジンバブエ ドル (2009) + ジンバブエ ドル (2009) + + + シンバブエ ドル(2008) + シンバブエ ドル(2008) + + + + {0} 以上 + {0}~{1} + + + + + + 毎{1} {0} + + + {0} G フォース + + + {0} 分 + + + {0} 秒 + + + {0} 度 + + + {0} エーカー + + + {0} ヘクタール + + + {0} 平方フィート + + + {0} 平方キロメートル + + + {0} 平方メートル + + + {0} 平方マイル + + + {0} 日 + + + {0} 時間 + + + {0} ミリ秒 + + + {0} 分 + + + {0} か月 + + + {0} 秒 + + + {0} 週間 + + + {0} 年 + + + {0} センチメートル + + + {0} フィート + + + {0} インチ + + + {0} キロメートル + + + {0} 光年 + + + {0} メートル + + + {0} マイル + + + {0} ミリメートル + + + {0} ピコメートル + + + {0} ヤード + + + {0} グラム + + + {0} キログラム + + + {0} オンス + + + {0} ポンド + + + {0} 馬力 + + + {0} キロワット + + + {0} ワット + + + {0} ヘクトパスカル + + + {0} 水銀柱インチ + + + {0} ミリバール + + + 時速 {0} キロメートル + + + 秒速 {0} メートル + + + 時速 {0} マイル + + + 摂氏 {0} 度 + + + 華氏 {0} 度 + + + {0} 立方キロメートル + + + {0} 立法マイル + + + {0} リットル + + + + + {0}/{1} + + + {0} G + + + {0} 分 + + + {0} 秒 + + + {0} 度 + + + {0} エーカー + + + {0} ヘクタール + + + {0} 平方フィート + + + {0} km² + + + {0} m² + + + {0} 平方マイル + + + {0} 日 + + + {0} 時間 + + + {0} ms + + + {0} 分 + + + {0} か月 + + + {0} 秒 + + + {0} 週間 + + + {0} 年 + + + {0} cm + + + {0} フィート + + + {0} インチ + + + {0} km + + + {0} 光年 + + + {0} m + + + {0} マイル + + + {0} mm + + + {0} pm + + + {0} ヤード + + + {0} g + + + {0} kg + + + {0} オンス + + + {0} ポンド + + + {0} 馬力 + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mb + + + {0} km/h + + + {0} m/s + + + {0} mi/h + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + + {0}/{1} + + + {0}G + + + {0}′ + + + {0}″ + + + {0}° + + + {0}ac + + + {0}ha + + + {0}ft² + + + {0}km² + + + {0}m² + + + {0}mi² + + + {0}日 + + + {0}時間 + + + {0}ms + + + {0}分 + + + {0}か月 + + + {0}秒 + + + {0}週間 + + + {0}年 + + + {0}cm + + + {0}′ + + + {0}″ + + + {0}km + + + {0}光年 + + + {0}m + + + {0}マイル + + + {0}mm + + + {0}pm + + + {0}ヤード + + + {0}g + + + {0}kg + + + {0}oz + + + {0}lb + + + {0}hp + + + {0}kW + + + {0}W + + + {0}hPa + + + {0}" Hg + + + {0}mb + + + {0}km/h + + + {0}m/s + + + {0}mi/h + + + {0}° + + + {0}°F + + + {0}km³ + + + {0}mi³ + + + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}、{1} + {0}、{1} + {0}、{1} + {0}、{1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + + はい:ハイ + いいえ:イイエ + + + + diff --git a/library/Zend/Locale/Data/ja_JP.xml b/library/Zend/Locale/Data/ja_JP.xml new file mode 100755 index 000000000..1b8d94d92 --- /dev/null +++ b/library/Zend/Locale/Data/ja_JP.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/jgo.xml b/library/Zend/Locale/Data/jgo.xml new file mode 100755 index 000000000..25ad2bc50 --- /dev/null +++ b/library/Zend/Locale/Data/jgo.xml @@ -0,0 +1,608 @@ + + + + + + + + + + + + Alâbɛ + Njáman + Ŋgɛlɛ̂k + Aŋgɛlúshi + Fɛlánci + Ndaꞌa + cú-pʉɔ yi pɛ́ ká kɛ́ jí + Shinwâ + + + + + + + + Mbí + Afɛlîk + Amɛlîk + Azî + Ʉlôp + Aŋgɔ́la + Ajɛntîn + Mbulukína Fásɔ + Mbulundí + Mbɛnɛ̂ŋ + Mbɔlivî + Mbɛlazîl + Mbɔtswána + Kanadâ + Kɔ́ŋgɔ-Kinshása + Kɔ́ŋgɔ-Mbɛlazavîl + Sẅísɛ + Kɔ́t Ndivwâ + Cíllɛ + Kamɛlûn + Shîn + Kɔllɔmbî + Kúba + Njáman + Njimbúti + Aljɛlî + Ɛkwandɔ̂ + Ɛjíptɛ + Ɛlitɛlɛ́ya + Ɛspániya + Ɛtiyɔpî + Fɛlánci + Ŋgabɔ̂ŋ + Ŋgána + Ŋgambî + Ŋginɛ̂ + Ŋginɛ̂ Ɛkwatɔliyâl + Ŋgɛlɛ̂k + Ŋginɛ̂ Mbisáwu + Islayɛ̂l + Ándɛ + Ilâk + Italî + Japɔ̂n + Kɛ́nya + Kɔmɔ́lɔshi + Libɛrî + Lɛsɔ́tɔ + Libî + Mɔlɔ̂k + Mándaŋgasɛkâ + Malî + Mɔlitanî + Maláwi + Mɛksîk + Mɔzambîk + Namimbî + Nijɛ̂ + Ninjɛliyâ + Nɔlɛvɛ́jɛ + Pɛlû + Lɛ́uniyɔ̂n + Sɛlɛbî + Lusî + Luwánda + Pɛsɛ́shɛl + Sundân + Siyɛ́la Lɛɔ̂n + Sɛnɛgâl + Sɔmalî + Sáwɔŋ Tɔmɛ́ nɛ́ Pɛlínsipɛ + Swazilân + Cât + Tɔ́ŋgɔ + Tunizî + Tanzanî + Uŋgánda + Vɛnɛzwɛ́la + Mayɔ̂t + Zambî + Zimbámbwɛ + ŋgɔŋ yi pɛ́ ká kɛ́ jʉɔ + + + Ŋkáp + Pɛnɔ́mba + + + mɛlɛ́ꞌ-mɛkát + pɛnɔ́mba + + + + [a á â ǎ b c d ɛ {ɛ\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} {ɛ\u0304} f g h i í î ǐ j k l m ḿ {m\u0300} {m\u0304} n ń ǹ {n\u0304} ŋ {ŋ\u0301} {ŋ\u0300} {ŋ\u0304} ɔ {ɔ\u0301} {ɔ\u0302} {ɔ\u030C} p {pf} s {sh} t {ts} u ú û ǔ ʉ {ʉ\u0301} {ʉ\u0302} {ʉ\u030C} {ʉ\u0308} v w ẅ y z ꞌ] + [e o q r x] + [A B C D Ɛ F G H I J K L M N Ŋ Ɔ P {Pf} S {Sh} T {Ts} U Ʉ {Ʉ\u0308} V W Ẅ Y Z Ꞌ] + [\- , ; \: ! ? . ‹ › « »] + ? + + + « + » + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E d + d.M + E, d.M + M.d.y G + + + {0} – {1} + + + + + + + + Nduŋmbi Saŋ + Pɛsaŋ Pɛ́pá + Pɛsaŋ Pɛ́tát + Pɛsaŋ Pɛ́nɛ́kwa + Pɛsaŋ Pataa + Pɛsaŋ Pɛ́nɛ́ntúkú + Pɛsaŋ Saambá + Pɛsaŋ Pɛ́nɛ́fɔm + Pɛsaŋ Pɛ́nɛ́pfúꞋú + Pɛsaŋ Nɛgɛ́m + Pɛsaŋ Ntsɔ̌pmɔ́ + Pɛsaŋ Ntsɔ̌ppá + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Nduŋmbi Saŋ + Pɛsaŋ Pɛ́pá + Pɛsaŋ Pɛ́tát + Pɛsaŋ Pɛ́nɛ́kwa + Pɛsaŋ Pataa + Pɛsaŋ Pɛ́nɛ́ntúkú + Pɛsaŋ Saambá + Pɛsaŋ Pɛ́nɛ́fɔm + Pɛsaŋ Pɛ́nɛ́pfúꞋú + Pɛsaŋ Nɛgɛ́m + Pɛsaŋ Ntsɔ̌pmɔ́ + Pɛsaŋ Ntsɔ̌ppá + + + + + Nduŋmbi Saŋ + Pɛsaŋ Pɛ́pá + Pɛsaŋ Pɛ́tát + Pɛsaŋ Pɛ́nɛ́kwa + Pɛsaŋ Pataa + Pɛsaŋ Pɛ́nɛ́ntúkú + Pɛsaŋ Saambá + Pɛsaŋ Pɛ́nɛ́fɔm + Pɛsaŋ Pɛ́nɛ́pfúꞋú + Pɛsaŋ Nɛgɛ́m + Pɛsaŋ Ntsɔ̌pmɔ́ + Pɛsaŋ Ntsɔ̌ppá + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Nduŋmbi Saŋ + Pɛsaŋ Pɛ́pá + Pɛsaŋ Pɛ́tát + Pɛsaŋ Pɛ́nɛ́kwa + Pɛsaŋ Pataa + Pɛsaŋ Pɛ́nɛ́ntúkú + Pɛsaŋ Saambá + Pɛsaŋ Pɛ́nɛ́fɔm + Pɛsaŋ Pɛ́nɛ́pfúꞋú + Pɛsaŋ Nɛgɛ́m + Pɛsaŋ Ntsɔ̌pmɔ́ + Pɛsaŋ Ntsɔ̌ppá + + + + + + + Sɔ́ndi + Mɔ́ndi + Ápta Mɔ́ndi + Wɛ́nɛsɛdɛ + Tɔ́sɛdɛ + Fɛlâyɛdɛ + Sásidɛ + + + Sɔ́ + Mɔ́ + ÁM + Wɛ́ + Tɔ́ + + + + + Sɔ́ndi + Mɔ́ndi + Ápta Mɔ́ndi + Wɛ́nɛsɛdɛ + Tɔ́sɛdɛ + Fɛlâyɛdɛ + Sásidɛ + + + + + Sɔ́ndi + Mɔ́ndi + Ápta Mɔ́ndi + Wɛ́nɛsɛdɛ + Tɔ́sɛdɛ + Fɛlâyɛdɛ + Sásidɛ + + + Sɔ́ + Mɔ́ + ÁM + Wɛ́ + Tɔ́ + + + + + Sɔ́ndi + Mɔ́ndi + Ápta Mɔ́ndi + Wɛ́nɛsɛdɛ + Tɔ́sɛdɛ + Fɛlâyɛdɛ + Sásidɛ + + + + + + + mbaꞌmbaꞌ + ŋka mbɔ́t nji + + + + + + tsɛttsɛt mɛŋguꞌ mi ɛ́ lɛɛnɛ Kɛlísɛtɔ gɔ ńɔ́ + tsɛttsɛt mɛŋguꞌ mi ɛ́ fúnɛ Kɛlísɛtɔ tɔ́ mɔ́ + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E d + d.M + E, d.M + M.d.y + + + {0} – {1} + + + + + + + + Nǔu ŋguꞋ {0} + Nǔu ŋguꞋ {0} + + + Ɛ́gɛ́ mɔ́ ŋguꞋ {0} + Ɛ́gɛ́ mɔ́ ŋguꞋ {0} + + + + + Nǔu {0} saŋ + Nǔu {0} saŋ + + + ɛ́ gɛ́ mɔ́ pɛsaŋ {0} + ɛ́ gɛ́ mɔ́ pɛsaŋ {0} + + + + + Nǔu ŋgap-mbi {0} + Nǔu ŋgap-mbi {0} + + + Ɛ́ gɛ́ mɔ {0} ŋgap-mbi + Ɛ́ gɛ́ mɔ {0} ŋgap-mbi + + + + lɔꞋɔ + + Nǔu lɛ́Ꞌ {0} + Nǔu lɛ́Ꞌ {0} + + + Ɛ́ gɛ́ mɔ́ lɛ́Ꞌ {0} + Ɛ́ gɛ́ mɔ́ lɛ́Ꞌ {0} + + + + + nǔu háwa {0} + nǔu háwa {0} + + + ɛ́ gɛ mɔ́ {0} háwa + ɛ́ gɛ mɔ́ {0} háwa + + + + + nǔu {0} minút + nǔu {0} minút + + + ɛ́ gɛ́ mɔ́ minút {0} + ɛ́ gɛ́ mɔ́ minút {0} + + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} + {1} ({0}) + + + + latn + + latn + + + , + . + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + Ndɔ́la-Kanandâ + + + Ʉ́lɔ + + + Ndɔ́la-Amɛlîk + + + Fɛlâŋ + FCFA + + + ntɛ-ŋkáp yi pɛ́ ká kɛ́ jínɛ + + + + + + + {0} lɛ́Ꞌ + {0} lɛ́Ꞌ + + + {0} háwa + {0} háwa + + + {0} minút + {0} minút + + + pɛsaŋ {0} + pɛsaŋ {0} + + + ŋguꞋ {0} + ŋguꞋ {0} + + + + + + {0}, ŋ́gɛ {1} + {0}, ŋ́gɛ {1} + {0}, ḿbɛn ŋ́gɛ {1} + {0} pɔp {1} + + + + + ɔ́ŋ:ɔ́ + ŋgáŋ:ŋ + + + + diff --git a/library/Zend/Locale/Data/jgo_CM.xml b/library/Zend/Locale/Data/jgo_CM.xml new file mode 100755 index 000000000..18ae2a61c --- /dev/null +++ b/library/Zend/Locale/Data/jgo_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/jmc.xml b/library/Zend/Locale/Data/jmc.xml new file mode 100755 index 000000000..7af782e6c --- /dev/null +++ b/library/Zend/Locale/Data/jmc.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakanyi + Kiamharyi + Kyiarabu + Kyibelarusi + Kyibulgaryia + Kyibangla + Kyichecki + Kyijerumani + Kyigiriki + Kyingereza + Kyihispania + Kyiajemi + Kyifaransa + Kyihausa + Kyihindi + Kyihungari + Kyiindonesia + Kyiigbo + Kyiitaliano + Kyijapani + Kimachame + Kyijava + Kyikambodia + Kyikorea + Kyimalesia + Kyiburma + Kyinepali + Kyiholanzi + Kyipunjabi + Kyipolandi + Kyireno + Kyiromania + Kyirusi + Kyinyarwanda + Kyisomalyi + Kyiswidi + Kyitamil + Kyitailandi + Kyiturukyi + Kyiukrania + Kyiurdu + Kyivietinamu + Kyiyoruba + Kyichina + Kyizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Des + + + Januari + Februari + Machi + Aprilyi + Mei + Junyi + Julyai + Agusti + Septemba + Oktoba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Jpi + Jtt + Jnn + Jtn + Alh + Iju + Jmo + + + Jumapilyi + Jumatatuu + Jumanne + Jumatanu + Alhamisi + Ijumaa + Jumamosi + + + + + J + J + J + J + A + I + J + + + + + + + R1 + R2 + R3 + R4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + + + utuko + kyiukonyi + + + + + + Kabla ya Kristu + Baada ya Kristu + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Kacha + + + Maka + + + Mori + + + Wiikyi + + + Mfiri + Ukou + Inu + Ngama + + + Mfiri o siku + + + Saa + + + Dakyika + + + Sekunde + + + Mfiri o saa + + + + + + + + ¤#,##0.00 + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Faranga ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Dinari ya Sudani + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + TSh + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Haya:H + Ote:O + + + + diff --git a/library/Zend/Locale/Data/jmc_TZ.xml b/library/Zend/Locale/Data/jmc_TZ.xml new file mode 100755 index 000000000..af9ada2a3 --- /dev/null +++ b/library/Zend/Locale/Data/jmc_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ka.xml b/library/Zend/Locale/Data/ka.xml new file mode 100755 index 000000000..401f17bf7 --- /dev/null +++ b/library/Zend/Locale/Data/ka.xml @@ -0,0 +1,5946 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + აფარი + აფხაზური + აჩეხური + აჩოლი + ადანგმე + ადიღეური + ავესტური + აფრიკაანსი + აღემი + აინუური + აკანი + აქადური + ალეუტური + სამხრეთ ალთაური + ამჰარული + არაგონული + ძველი ინგლისური + ანგიკა + არაბული + თანამედროვე სტანდარტული არაბული + არამეული + მაპუდუნგუნი + არაპაჰო + არავაკი + ასამური + ასუ + ასტურიული + ხუნძური + ავადი + აიმარა + აზერბაიჯანული + ბაშკირული + ბელუჯი + ბალინური + ბასა + ბამუნი + ბელორუსული + ბეჯა + ბემბა + ბენა + ბულგარული + ბოჯპური + ბენგალური + ტიბეტური + ბრეტონული + ბრაჯი + ბოდო + ბოსნიური + ბურიატული + ბილინი + კატალანური + კაიუგა + ჩეჩნური + ჩიბჩა + მარიული + ჩინუკი ვავა + ჩოკტო + დენე სულინე + ჩეროკი + ჩეიენი + სორანი ქურთული + კორსიკული + კოპტური + კრი + ყირიმულ-თურქული + ჩეხური + კაშუბური + საეკლესიო სლავური + ჩუვაშური + უელსური + დანიური + დაკოტა + დარგუული + ტაიტა + გერმანული + ავსტრიული გერმანული + შვეიცარიული ზემოგერმანული + დელავარული + სლეივი + დოგრიბი + დინკა + ზარმა + დოგრი + დუალა + საშუალო ჰოლანდიური + დივეჰი + დიოლა + დიულა + ძონგხა + ემბუ + ევე + ეფიკი + ძველეგვიპტური + ბერძნული + ინგლისური + ავსტრალიური ინგლისური + კანადური ინგლისური + ბრიტანული ინგლისური + გართ. სამ. ინგლისური + ამერიკული ინგლისური + აშშ ინგლისური + საშუალო ინგლისური + ესპერანტო + ესპანური + ლათინურ ამერიკული ესპანური + ევროპული ესპანური + მექსიკური ესპანური + ესტონური + ბასკური + ევონდო + სპარსული + ფინური + ფილიპინური + ფიჯი + ფარერული + ფონი + ფრანგული + კანადური ფრანგული + შვეიცარიული ფრანგული + საშუალო ფრანგული + ძველი ფრანგული + ჩრდილოფრიზიული + აღმოსავლეთფრიზიული + ფრიულური + დასავლეთფრიზიული + ირლანდიური + გბაია + შოტლანდიური გელური + გეეზი + გალისიური + საშუალო ზემოგერმანული + გუარანი + ძველი ზემოგერმანული + გონდი + გოთური + ძველი ბერძნული + შვეიცარიული გერმანული + გუჯარათი + მენური + ჰაუსა + ჰავაიური + ებრაული + ჰინდი + ხეთური ენა + ხორვატული + ჰაიტიური + უნგრული + სომხური + ინტერლინგუალური + იბანი + იბიბიო + ინდონეზიური + ინტერლინგი + იგბო + ინგუშური + იდო + ისლანდიური + იტალიური + ინუკტიტუტი + იაპონური + ლოჟბანი + იუდეო-სპარსული + იუდეო-არაბული + იავური + ქართული + ყარაყალფახური + კაჩინი + კამბა + ყაბარდოული + კაბუვერდიანუ + კონგო + ყაზახური + გრენლანდიური + კალენჯინი + ქმერული + კიმბუნდუ + კანადა + კორეული + კონკანი + კუსაიე + კპელე + კანური + ყარაჩაულ-ბალყარული + კარელიური + კურუქი + ქაშმირული + შამბალა + ბაფია + ქურთული + ყუმუხური + კუტენაი + კომი + კორნული + ყირგიზული + ლათინური + ლადინო + ლანგი + ლანდა + ლამბა + ლუქსემბურგული + ლეზგიური + განდა + ლიმბურგული + ლინგალა + ლაოსური + მონგო + ლოზი + ლიტვური + ლუბა-კატანგა + ლუბა-კასაი + ლუისენიო + ლუნდა + ლუო + მიზო + ლუჰია + ლატვიური + მაფა + მაგაჰი + მაითილი + მაბა + მოქშა + მენდე + მერუ + მალაგასიური + საშუალო ირლანდიური + მაქუვა-მეეტო + მაორი + მიკმაკი + მინანგკაბაუ + მაკედონური + მალაიალამური + მონღოლური + მანჯურიული + მანიპური + მოჰავკი + მოორე + მარათჰი + მალაიური + მალტური + მუნდანგი + კრიკი + მირანდული + მარვარი + ბირმული + მიენე + ერზია + ნაურუ + ნეაპოლიტანური + ნამა + ნორვეგიული ბუკმოლი + ქვემოგერმანული + ნეპალური + ნევარი + ნიდერლანდური + ფლამანდიური + ნორვეგიული ნიუნორსკი + ნორვეგიული + ნოღაური + ძველსკანდინავიური + ნკო + ნავახო + კლასიკური ნევარული + ნიანჯა + ნიამვეზი + ნიანკოლე + ნიორო + ნზიმა + ოქსიტანური + ოჯიბვე + ორია + ოსური + პენჯაბური + ფალაური + ძველი სპარსული + ფინიკიური + პალი + პოლონური + ძველი პროვანსული + პუშტუ + პორტუგალიური + ბრაზილიური პორტუგალიური + ევროპული პორტუგალიური + კეჩუა + რაჯასთანი + რაპანუი + რაროტონგული + რეტორომანული + რუნდი + რუმინული + მოლდავური + ბოშური + რუსული + სანსკრიტი + იაკუტური + სამარიულ-არამეული + სარდინიული + სიცილიური + სინდჰური + სენეკა + სელკუპური + ძველი ირლანდიური + სერბულ-ხორვატული + შილჰა + შანი + ჩადური არაბული + სინჰალური + სლოვაკური + სლოვენური + სამოა + სომალიური + ალბანური + სერბული + სამხრეთ სოთოს ენა + სუნდური + შუმერული + შვედური + სუაჰილი + კომორული + კლასიკური სირიული + სირიული + ტამილური + ტელუგუ + ტაჯიკური + ტაი + თიგრინია + თიგრე + თურქმენული + კლინგონი + ტსვანა + ტონგანური + თურქული + თათრული + თუი + ტუვა + უდმურტული + უიღურული + უგარითული + უკრაინული + უცნობი ენა + ურდუ + უზბეკური + ვაი + ვიეტნამური + ველაითა + ვოლოფური + ყალმუხური + ქჰოსა + იდიში + იორუბა + კანტონური + ბლისსიმბოლოები + ზენაგა + სტანდარტული მაროკოული ტამაზიგხტი + ჩინური + გამარტივებული ჩინური + ტრადიციული ჩინური + ზულუ + ლინგვისტური შიგთავსი არ არის + ზაზაკი + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + მსოფლიო + აფრიკა + ჩრდილოეთი ამერიკა + სამხრეთი ამერიკა + ოკეანეთი + დასავლეთი აფრიკა + ცენტრალური ამერიკა + აღმოსავლეთი აფრიკა + ჩრდილოეთი აფრიკა + შუა აფრიკა + სამხრეთი აფრიკა + ამერიკები + ამერიკის ჩრდილოეთი + კარიბის ზღვა + აღმოსავლეთი აზია + სამხრეთი აზია + სამხრეთ-აღმოსავლეთი აზია + სამხრეთი ევროპა + ავსტრალაზია + მელანეზია + მიკრონეზიის რეგიონი + პოლინეზია + აზია + ცენტრალური აზია + დასავლეთი აზია + ევროპა + აღმოსავლეთი ევროპა + ჩრდილოეთი ევროპა + დასავლეთი ევროპა + ლათინური ამერიკა + ამაღლების კუნძული + ანდორა + არაბთა გაერთიანებული საამიროები + ავღანეთი + ანტიგუა და ბარბუდა + ანგვილა + ალბანეთი + სომხეთი + ნიდერლანდების ანტილები + ანგოლა + ანტარქტიკა + არგენტინა + ამერიკული სამოა + ავსტრია + ავსტრალია + არუბა + ალანდის კუნძულები + აზერბაიჯანი + ბოსნია და ჰერცეგოვინა + ბარბადოსი + ბანგლადეში + ბელგია + ბურკინა-ფასო + ბულგარეთი + ბაჰრეინი + ბურუნდი + ბენინი + სენ-ბართლემი + ბერმუდი + ბრუნეი + ბოლივია + კარიბის ნიდერლანდები + ბრაზილია + ბაჰამის კუნძულები + ბუტანი + ბუვეს კუნძული + ბოტსვანა + ბელორუსია + ბელიზი + კანადა + ქოქოსის (კილინგის) კუნძულები + კონგო - კინშასა + კონგო (კონგოს დემოკრატიული რესპუბლიკა) + ცენტრალური აფრიკის რესპუბლიკა + კონგო - ბრაზავილი + კონგო (რესპუბლიკა) + შვეიცარია + კოტ-დივუარი + სპილოს ძვლის სანაპირო + კუკის კუნძულები + ჩილე + კამერუნი + ჩინეთი + კოლუმბია + კლიპერტონის კუნძული + კოსტა-რიკა + კუბა + კაბო-ვერდე + კიურასაო + შობის კუნძული + კვიპროსი + ჩეხეთის რესპუბლიკა + გერმანია + დიეგო-გარსია + ჯიბუტი + დანია + დომინიკა + დომინიკანის რესპუბლიკა + ალჟირი + სეუტა და მელილა + ეკვადორი + ესტონეთი + ეგვიპტე + დასავლეთი საჰარა + ერიტრეა + ესპანეთი + ეთიოპია + ევროკავშირი + ფინეთი + ფიჯი + ფოლკლენდის კუნძულები + ფოლკლენდის კუნძულები (მალვინის კუნძულები) + მიკრონეზია + ფარერის კუნძულები + საფრანგეთი + გაბონი + დიდი ბრიტანეთი + გაერთ.სამ. + გრენადა + საქართველო + ფრანგული გვიანა + გერნსი + განა + გიბრალტარი + გრენლანდია + გამბია + გვინეა + გვადელუპე + ეკვატორული გვინეა + საბერძნეთი + სამხრეთი გეორგია და სამხრეთ სენდვიჩის კუნძულები + გვატემალა + გუამი + გვინეა-ბისაუ + გაიანა + ჰონკონგის სპეციალური ადმინისტრაციული რეგიონი ჩინეთი + ჰონკონგი + ჰერდი და მაკდონალდის კუნძულები + ჰონდურასი + ხორვატია + ჰაიტი + უნგრეთი + კანარის კუნძულები + ინდონეზია + ირლანდია + ისრაელი + მენის კუნძული + ინდოეთი + ბრიტანული ტერიტორია ინდოეთის ოკეანეში + ერაყი + ირანი + ისლანდია + იტალია + ჯერსი + იამაიკა + იორდანია + იაპონია + კენია + ყირგიზეთი + კამბოჯა + კირიბატი + კომორის კუნძულები + სენტ-კიტსი და ნევისი + ჩრდილოეთი კორეა + სამხრეთი კორეა + ქუვეითი + კაიმანის კუნძულები + ყაზახეთი + ლაოსი + ლიბანი + სენტ-ლუსია + ლიხტენშტეინი + შრი-ლანკა + ლიბერია + ლესოთო + ლიტვა + ლუქსემბურგი + ლატვია + ლიბია + მაროკო + მონაკო + მოლდოვა + მონტენეგრო + სენ-მარტენი + მადაგასკარი + მარშალის კუნძულები + მაკედონია + მაკედონია (ყოფილი იუგოსლავიის რესპუბლიკა მაკედონია) + მალი + მიანმარი (ბირმა) + მონღოლეთი + მაკაოს სპეციალური ადმინისტრაციული რეგიონი ჩინეთი + მაკაო + ჩრდილოეთ მარიანას კუნძულები + მარტინიკა + მავრიტანია + მონსერატი + მალტა + მავრიკი + მალდივის კუნძულები + მალავი + მექსიკა + მალაიზია + მოზამბიკი + ნამიბია + ახალი კალედონია + ნიგერი + ნორფოლკის კუნძული + ნიგერია + ნიკარაგუა + ნიდერლანდები + ნორვეგია + ნეპალი + ნაურუ + ნიუე + ახალი ზელანდია + ომანი + პანამა + პერუ + ფრანგული პოლინეზია + პაპუა-ახალი გვინეა + ფილიპინები + პაკისტანი + პოლონეთი + სენ-პიერი და მიკელონი + პიტკერნის კუნძულები + პუერტო-რიკო + პალესტინის ტერიტორიები + პალესტინა + პორტუგალია + პალაუ + პარაგვაი + კატარი + შორეული ოკეანეთი + რეუნიონი + რუმინეთი + სერბეთი + რუსეთი + რუანდა + საუდის არაბეთი + სოლომონის კუნძულები + სეიშელის კუნძულები + სუდანი + შვედეთი + სინგაპური + წმინდა ელენეს კუნძული + სლოვენია + შპიცბერგენი და იან-მაიენი + სლოვაკეთი + სიერა-ლეონე + სან-მარინო + სენეგალი + სომალი + სურინამი + სამხრეთი სუდანი + სან-ტომე და პრინსიპი + სალვადორი + სინტ-მარტენი + სირია + სვაზილენდი + ტრისტან-და-კუნია + ტერკსის და კაიკოსის კუნძულები + ჩადი + ფრანგული სამხრეთის ტერიტორიები + ტოგო + ტაილანდი + ტაჯიკეთი + ტოკელაუ + ტიმორ-ლეშტი + აღმოსავლეთი ტიმორი + თურქმენეთი + ტუნისი + ტონგა + თურქეთი + ტრინიდადი და ტობაგო + ტუვალუ + ტაივანი + ტანზანია + უკრაინა + უგანდა + აშშ-ის შორეული კუნძულები + ამერიკის შეერთებული შტატები + აშშ + ურუგვაი + უზბეკეთი + ქალაქი ვატიკანი + სენტ-ვინსენტი და გრენადინები + ვენესუელა + ბრიტანეთის ვირჯინიის კუნძულები + აშშ-ის ვირჯინიის კუნძულები + ვიეტნამი + ვანუატუ + უოლისი და ფუტუნა + სამოა + კოსოვო + იემენი + მაიოტა + სამხრეთ აფრიკა + ზამბია + ზიმბაბვე + უცნობი რეგიონი + + + ტრადიციული გერმანული ორთოგრაფია + სტანდარტული რეზიანული ორთოგრაფია + 1996 წლის გერმანული ორთოგრაფია + გვიანი საშუალო ფრანგული + ადრე ახალი ფრანგული + აკადემიური + ALA-LC რომანიზაცია + ალუკუ + აღმოსავლეთსომხური + დასავლეთსომხური + უნიფიცირებული თურქული ლათინური + ბუდისტური სანსკრიტი + ბისკაიური ბასკური + ბილური რეზიული + ბოხორიჩიცა + ბუნტლინგი + დაინჩიცა + ადრე ახალი ინგლისური + IPA + UPA + X-SAMPA + ჰეპბერნის რომანიზაცია + ჰეგნორსკი + იტიხასა + მიუნსტერული რეტორომანული + იუტ-ფინი + ზოგადი ორთოგრაფია + სტანდარტული ორთოგრაფია + ლაუკიკა + ლიპოვაცური რეზიული + 1918 წლის რუსილი + მეტელკოსი + ნჯუკა + ნატისონური + ნიივური რეზიული + თანამედროვე ვოლაპიუკი + ოსოიანური რეზიული + პამაკა + პეტრის 1708 წლის + პინ-ინი + კომპიუტერული + პუტერული რეტორომანული + ახალი ორთოგრაფია + კლასიკური ვოლაპიუკი + რეზიული + გრიშუნული რეტორომანული + საჰო + შოტლანდიური ინგლისური + სკაუსი + სოლბიცური რეზიული + სურმირანული რეტორომანული + სურსილვანური რეტორომანული + სუტსილვანური რეტორომანული + ტარაშკევიცა + უნიფიცირებული ორთოგრაფია + გადასინჯული უნიფიცირებული ორთოგრაფია + ულსტერის ირლანდიური + ვედური სანსკრიტი + ვალენსიური კატალანური + ვალადერული რეტორომანული + ვეიდ-ჯაილზი + + + კალენდარი + დახარისხების თანმიმდევრობა + ვალუტა + რიცხვები + + + არაბულ-ინდური ციფრები + გაფართოებული არაბულ-ინდური ციფრები + სომხური რიცხვები + სომხური ქვედა რეგისტრის რიცხვები + ბალიური ციფრები + ბენგალური ციფრები + ტრადიციული ჩინური + ბუდისტური კალენდარი + ჩამური ციფრები + ჩინური კალენდარი + კოპტური კალენდარი + კალენდარი დანგი + დევანაგარის ციფრები + ლექსიკონით + უნიკოდის ნაგულისხმევი დახარისხების თანმიმდევრობა + ეთიოპიური რიცხვები + ეთიოპიური კალენდარი + ეთიოპიური ამეთე ალემი კალენდარი + სრულსიგანიანი ციფრები + გამარტივებული ჩინური + ქართული რიცხვები + გრიგორიანული კალენდარი + ბერძნული რიცხვები + ბერძნული ქვედა რეგისტრის რიცხვები + გუჯარათული ციფრები + გურმუხული ციფრები + ჩინური ათობითი რიცხვები + გამარტივებული ჩინური რიცხვები + გამარტივებული ჩინური ფინანსური რიცხვები + ტრადიციული ჩინური რიცხვები + ტრადიციული ჩინური ფინანსური რიცხვები + ებრაული რიცხვები + ებრაული კალენდარი + ინდოეთის ეროვნული კალენდარი + ისლამური კალენდარი + ისლამური სამოქალაქო კალენდარი + იაპონური კალენდარი + იავური ციფრები + იაპონური რიცხვები + იაპონური ფინანსური რიცხვები + კაიაჰ-ლისი ციფრები + ქხმერული ციფრები + კანადური რიცხვები + ტაი თამის ჰორასი ციფრები + ტაი თამის თამისი ციფრები + ლაოსური ციფრები + დასავლური ციფრები + რონგ-რინგის ციფრები + ლიმბური ციფრები + მალაიალამური ციფრები + მონღოლური ციფრები + მანიპური ციფრები + მიანმური ციფრები + მიანმური შანი ციფრები + ნკოური ციფრები + ოლ-ჩიკის ციფრები + ორიული ციფრები + სპარსული კალენდარი + ტელეფონის წიგნით + პინ-ინი + რეფორმირებული + ჩინეთის რესპუბლიკის კალენდარი + რომაული ციფრები + რომაული ქვედა რეგისტრის რიცხვები + საურაშტრული ციფრები + ზოგადი დანიშნულების ძიება + ჰანგულის პირველი თანხმოვნით + სტანდარტული დახარისხების თანმიმდევრობა + შტრიხით + სუნდანური ციფრები + ახალი ტაი ლიუსი ციფრები + ტრადიციული ტამილური რიცხვები + ტამილური ციფრები + ტელუგუს ციფრები + ტაილანდური ციფრები + ტიბეტური ციფრები + ტრადიციული + ძირითადი შტრიხით + ვაიური ციფრები + ჟუინი + + + მეტრული + ბრიტანული + ამერიკული + + + ენა: {0} + დამწერლობა: {0} + რეგიონი: {0} + + + + [ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ] + [ⴀ ⴁ ⴂ ⴃ ⴄ ⴅ ⴆ ჱ ⴡ ⴇ ⴈ ⴉ ⴊ ⴋ ⴌ ჲ ⴢ ⴍ ⴎ ⴏ ⴐ ⴑ ⴒ ჳ ⴣ ⴓ ⴔ ⴕ ⴖ ⴗ ⴘ ⴙ ⴚ ⴛ ⴜ ⴝ ⴞ ჴ ⴤ ⴟ ⴠ ჵ ⴥ ჶ ჷ ჸ ჹ ჺ] + [ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ] + [\- ‐ – — , ; \: ! ? . … ჻ ' ‘ ‚ “ „ « » ( ) \[ \] \{ \} § @ * / \& # † ‡ ′ ″ №] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + « + » + + + + + + + + EEEE, dd MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + dd.MM.y GGGGG + + + + + + + {1} {0} + + + + + {1}, {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM, y G + d MMM, y G + E, d MMM, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M + E, d.M + LLL + d MMM + E, d MMM + mm:ss + y G + y G + M.y G + d.M.y G + E, d.M.y G + MMM, y G + d MMM, y G + E, d MMM, y G + QQQ, y G + QQQQ, y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y–y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + MMM-MMM y G + MMM y - MMM y G + + + d – d MMM, y + dd MM - dd MM, y + dd MMM, y - d MMM, y + + + E, d - E, d MMM y G + E, d MMM - E, d MMM, y G + E, d MMM, y - E, d MMM, y G + + + MM - MM.y G + MM.y - MM.y G + + + + + + + + + იან + თებ + მარ + აპრ + მაი + ივნ + ივლ + აგვ + სექ + ოქტ + ნოე + დეკ + + + + + + + + + + + + + + + + + იანვარი + თებერვალი + მარტი + აპრილი + მაისი + ივნისი + ივლისი + აგვისტო + სექტემბერი + ოქტომბერი + ნოემბერი + დეკემბერი + + + + + იან + თებ + მარ + აპრ + მაი + ივნ + ივლ + აგვ + სექ + ოქტ + ნოე + დეკ + + + + + + + + + + + + + + + + + იანვარი + თებერვალი + მარტი + აპრილი + მაისი + ივნისი + ივლისი + აგვისტო + სექტემბერი + ოქტომბერი + ნოემბერი + დეკემბერი + + + + + + + კვი + ორშ + სამ + ოთხ + ხუთ + პარ + შაბ + + + + + + + + + + + + კვ + ორ + სმ + ოთ + ხთ + პრ + შბ + + + კვირა + ორშაბათი + სამშაბათი + ოთხშაბათი + ხუთშაბათი + პარასკევი + შაბათი + + + + + კვი + ორშ + სამ + ოთხ + ხუთ + პარ + შაბ + + + + + + + + + + + + კვ + ორ + სმ + ოთ + ხთ + პრ + შბ + + + კვირა + ორშაბათი + სამშაბათი + ოთხშაბათი + ხუთშაბათი + პარასკევი + შაბათი + + + + + + + I კვ. + II კვ. + III კვ. + IV კვ. + + + 1 + 2 + 3 + 4 + + + I კვარტალი + II კვარტალი + III კვარტალი + IV კვარტალი + + + + + I კვ. + II კვ. + III კვ. + IV კვ. + + + 1 + 2 + 3 + 4 + + + I კვარტალი + II კვარტალი + III კვარტალი + IV კვარტალი + + + + + + + AM + შუადღე + PM + + + AM + შუადღე + PM + + + დილის + შუადღე + საღამოს + + + + + + ძველი წელთაღრიცხვით + ახალი წელთაღრიცხვით + + + ძვ. წ. + ახ. წ. + + + + + + EEEE, dd MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1}, {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM, y G + d MMM, y G + E, d MMM, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M + E, d.M + LLL + d MMM + E, d MMM + mm:ss + y + M.y + d.M.y + E, d.M.y + MMM, y + d MMM, y + E, d MMM, y + QQQ, y + QQQQ, y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y–y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM, y + dd MM - dd MM, y + dd MMM, y - d MMM, y + + + E, d MMM - E, d MMM, y + E, d MMM - E, d MMM, y + E, d MMM, y - E, d MMM, y + + + MM - MM.y + MM.y - MM.y + + + + + + + + + თიშრეი + ხეშვანი + ქისლევი + ტევეთი + შვატი + ადარი I + ადარი + ადარი II + ნისანი + იარი + სივანი + თამუზი + ავი + ელული + + + თიშრეი + ხეშვანი + ქისლევი + ტევეთი + შვატი + ადარი I + ადარი + ადარი II + ნისანი + იარი + სივანი + თამუზი + ავი + ელული + + + + + თიშრეი + ხეშვანი + ქისლევი + ტევეთი + შვატი + ადარი I + ადარი + ადარი II + ნისანი + იარი + სივანი + თამუზი + ავი + ელული + + + თიშრეი + ხეშვანი + ქისლევი + ტევეთი + შვატი + ადარი I + ადარი + ადარი II + ნისანი + იარი + სივანი + თამუზი + ავი + ელული + + + + + + AM + + + + + + + + მუჰ. + საფ. + რაბ. I + რაბ. II + ჯუმ. I + ჯუმ. II + რაჯ. + შაბ. + რამ. + შავ. + ზულ-კ. + ზულ-ჰ. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + მუჰარამი + საფარი + რაბი ულ-ავალი + რაბი ულ-ახირი + ჯუმადა ულ-ავალი + ჯუმადა ულ-ახირი + რაჯაბი + შაბანი + რამადანი + შავალი + ზულ-კაადა + ზულ-ჰიჯა + + + + + მუჰ. + საფ. + რაბ. I + რაბ. II + ჯუმ. I + ჯუმ. II + რაჯ. + შაბ. + რამ. + შავ. + ზულ-კ. + ზულ-ჰ. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + მუჰარამი + საფარი + რაბი ულ-ავალი + რაბი ულ-ახირი + ჯუმადა ულ-ავალი + ჯუმადა ულ-ახირი + რაჯაბი + შაბანი + რამადანი + შავალი + ზულ-კაადა + ზულ-ჰიჯა + + + + + + AH + + + + + + + + ფარვარდინი + ორდიბეჰეშთი + ხორდადი + თირი + მორდადი + შაჰრივარი + მეჰრი + აბანი + აზარი + დეი + ბაჰმანი + ესფანდი + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ფარვარდინი + ორდიბეჰეშთი + ხორდადი + თირი + მორდადი + შაჰრივარი + მეჰრი + აბანი + აზარი + დეი + ბაჰმანი + ესფანდი + + + + + ფარვარდინი + ორდიბეჰეშთი + ხორდადი + თირი + მორდადი + შაჰრივარი + მეჰრი + აბანი + აზარი + დეი + ბაჰმანი + ესფანდი + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ფარვარდინი + ორდიბეჰეშთი + ხორდადი + თირი + მორდადი + შაჰრივარი + მეჰრი + აბანი + აზარი + დეი + ბაჰმანი + ესფანდი + + + + + + AP + + + + + + + ეპოქა + + + წელი + გასულ წელს + ამ წელს + მომავალ წელს + + {0} წელიწადში + {0} წელიწადში + + + {0} წლის წინ + {0} წლის წინ + + + + თვე + გასულ თვეს + ამ თვეში + მომავალ თვეს + + {0} თვეში + {0} თვეში + + + {0} თვის წინ + {0} თვის წინ + + + + კვირა + გასულ კვირაში + ამ კვირაში + მომავალ კვირაში + + {0} კვირაში + {0} კვირაში + + + {0} კვირის წინ + {0} კვირის წინ + + + + დღე + გუშინწინ + გუშინ + დღეს + ხვალ + ზეგ + + {0} დღეში + {0} დღეში + + + {0} დღის წინ + {0} დღის წინ + + + + კვირის დღე + + + გასულ კვირას + ამ კვირას + მომავალ კვირას + + + გასულ ორშაბათს + ამ ორშაბათს + მომავალ ორშაბათს + + + გასულ სამშაბათს + ამ სამშაბათს + მომავალ სამშაბათს + + + გასულ ოთხშაბათს + ამ ოთხშაბათს + მომავალ ოთხშაბათს + + + გასულ ხუთშაბათს + ამ ხუთშაბათს + მომავალ ხუთშაბათს + + + გასულ პარასკევს + ამ პარასკევს + მომავალ პარასკევს + + + გასულ შაბათს + ამ შაბათს + მომავალ შაბათს + + + დღის ნახევარი + + + საათი + + {0} საათში + {0} საათში + + + {0} საათის წინ + {0} საათის წინ + + + + წუთი + + {0} წუთში + {0} წუთში + + + {0} წუთის წინ + {0} წუთის წინ + + + + წამი + ახლა + + {0} წამში + {0} წამში + + + {0} წამის წინ + {0} წამის წინ + + + + დროის სარტყელი + + + + +HH:mm;-HH:mm + GMT{0} + GMT + დრო: {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + უცნობი ქალაქი + + + ანდორა + + + დუბაი + + + ქაბული + + + ანტიგუა + + + ანგილა + + + ტირანა + + + ერევანი + + + ლუანდა + + + როთერა + + + პალმერი + + + სიოუა + + + მოუსონი + + + დევისი + + + ვოსტოკი + + + კეისი + + + დიუმონ დ'ურვილი + + + მაკმურდო + + + რიო გალეგოსი + + + მენდოზა + + + სან ხუანი + + + უშუაია + + + ლა რიოხა + + + სან-ლუისი + + + კატამარკა + + + სალტა + + + ჯუჯუი + + + ტუკუმანი + + + კორდობა + + + ბუენოს-აირესი + + + პაგო-პაგო + + + ვენა + + + პერთი + + + ეუკლა + + + დარვინი + + + ადელაიდა + + + ბროუკენ ჰილი + + + ქური + + + მელბურნი + + + ჰობარტი + + + ლინდმანი + + + სიდნეი + + + ბრისბეინი + + + მექვორი + + + ლორდ ჰოუი + + + არუბა + + + მარიჰამნი + + + ბაქო + + + სარაევო + + + ბარბადოსი + + + დაკა + + + ბრიუსელი + + + უაგადუგუ + + + სოფია + + + ბაჰრეინი + + + ბუჯუმბურა + + + პორტო-ნოვო + + + სენ-ბართელემი + + + ბერმუდი + + + ბრუნეი + + + ლა-პაზი + + + კრალენდიიკი + + + ეირუნეპე + + + რიო ბრანკო + + + პორტუ-ველიო + + + ბოა ვისტა + + + მანაუსი + + + კუიაბა + + + სანტარემი + + + კამპო გრანდე + + + ბელემი + + + არაგუაინა + + + სან-პაულუ + + + ბაია + + + ფორტალეზა + + + მასეიო + + + რეციფე + + + ნორონია + + + ნასაუ + + + თხიმფხუ + + + გაბორონე + + + მინსკი + + + ბელიზი + + + დოუსონი + + + უაითჰორსი + + + ინუვიკი + + + ვანკუვერი + + + დოუსონ ქრიკი + + + კრესტონი + + + იელოუნაიფი + + + ედმონტონი + + + სვიფტ კარენტი + + + კემბრიჯ ბეი + + + რეჯინა + + + უინიპეგი + + + რეზოლუტე + + + რეინი რივერი + + + რენკინ ინლეტი + + + ატიკოკანი + + + თანდერ ბეი + + + ნიპიგონი + + + ტორონტო + + + იქალუიტი + + + პანგნირტუნგი + + + მონქტონი + + + ჰალიფაქსი + + + გუზ ბეი + + + გლეის ბეი + + + ბლან-საბლონი + + + სენტ ჯონსი + + + ქოქოსი + + + კინშასა + + + ლუბუმბაში + + + ბანგი + + + ბრაზავილი + + + ციურიხი + + + აბიჯანი + + + რაროტონგა + + + ისთერი + + + სანტიაგო + + + დუალა + + + კაშგარი + + + ურუმქი + + + ჩონგქინგი + + + შანხაი + + + ჰარბინი + + + ბოგოტა + + + კოსტა-რიკა + + + ჰავანა + + + კაბო-ვერდე + + + კიურასაო + + + შობის კუნძული + + + ნიკოსია + + + პრაღა + + + ბუსინგენი + + + ბერლინი + + + ჯიბუტი + + + კოპენჰაგენი + + + დომინიკა + + + სანტო-დომინგო + + + ალჟირი + + + გალაპაგოსი + + + გუაიაკილი + + + ტალინი + + + კაირო + + + ელ-ააიუნი + + + ასმარა + + + კანარი + + + სეუტა + + + მადრიდი + + + ადის-აბება + + + ჰელსინკი + + + ფიჯი + + + სტენლი + + + ჩუუკი + + + პონპეი + + + კოსრაე + + + ფარერის კუნძულები + + + პარიზი + + + ლიბრევილი + + + + ბრიტანეთის ზაფხულის დრო + + ლონდონი + + + გრენადა + + + თბილისი + + + კაიენა + + + გერნსი + + + აკრა + + + გიბრალტარი + + + თულე + + + გოდთები + + + სკორსბისუნდი + + + დენმარკშავნი + + + ბანჯული + + + კონაკრი + + + გვადელუპე + + + მალაბო + + + ათენი + + + სამხრეთ ჯორჯია + + + გვატემალა + + + გუამი + + + ბისაუ + + + გაიანა + + + ჰონკონგი + + + ტეგუჩიგალპა + + + ზაგრები + + + პორტ-ა-პრინსი + + + ბუდაპეშტი + + + ჯაკარტა + + + პონტიანაკი + + + მაკასარი + + + ჯაიაპურა + + + + ირლანდიის ზაფხულის დრო + + დუბლინი + + + იერუსალიმი + + + მენის კუნძული + + + კალკუტა + + + ჩაგოსი + + + ბაღდადი + + + თეირანი + + + რეიკიავიკი + + + რომი + + + ჯერსი + + + იამაიკა + + + ამანი + + + ტოკიო + + + ნაირობი + + + ბიშკეკი + + + პნომპენი + + + ენდერბური + + + კირიტიმატი + + + ტარაუა + + + კომორო + + + სენტ-კიტსი + + + ფხენიანი + + + სეული + + + ქუვეითი + + + კაიმანი + + + აქტაუ + + + ორალი + + + აქტობე + + + ყიზილორდა + + + ალმატი + + + ვიენტიანი + + + ბეირუთი + + + სენტ-ლუსია + + + ვადუზი + + + კოლომბო + + + მონროვია + + + მასერუ + + + ვილნიუსი + + + ლუქსემბურგი + + + რიგა + + + ტრიპოლი + + + კასაბლანკა + + + მონაკო + + + კიშინიოვი + + + პოდგორიცა + + + მარიგო + + + ანტანანარივუ + + + კვაჯალეინი + + + მახურო + + + სკოპიე + + + ბამაკო + + + რანგუნი + + + ჰოვდი + + + ულანბატარი + + + ჩოიბალსანი + + + მაკაო + + + საიპანი + + + მარტინიკი + + + ნუაკშოტი + + + მონსერატი + + + მალტა + + + მავრიკი + + + მალდივები + + + ბლანტირი + + + ტიხუანა + + + სანტა ისაბელი + + + ჰერმოსილო + + + მაზატლანი + + + ჩიჰუაჰუა + + + ბაჰია ბანდერასი + + + ოხინაგა + + + მონტერეი + + + მეხიკო + + + მატამოროსი + + + მერიდა + + + კანკუნი + + + კუალა-ლუმპური + + + კუჩინგი + + + მაპუტო + + + ვინდხუკი + + + ნუმეა + + + ნიამეი + + + ნორფოლკი + + + ლაგოსი + + + მანაგუა + + + ამსტერდამი + + + ოსლო + + + კატმანდუ + + + ნაურუ + + + ნიუე + + + ჩათამი + + + ოკლენდი + + + მუსკატი + + + პანამა + + + ლიმა + + + ტაიტი + + + მარკეზასი + + + გამბიერი + + + პორტ მორსბი + + + მანილა + + + კარაჩი + + + ვარშავა + + + მიკელონი + + + პიტკერნი + + + პუერტო-რიკო + + + გაზა + + + ჰებრონი + + + აზორის კუნძულები + + + მადეირა + + + ლისაბონი + + + პალაუ + + + ასუნსიონი + + + კატარი + + + რეიუნიონი + + + ბუხარესტი + + + ბელგრადი + + + კალინინგრადი + + + მოსკოვი + + + ვოლგოგრადი + + + სამარა + + + ეკატერინბურგი + + + ომსკი + + + ნოვოსიბირსკი + + + ნოვოკუზნეცკი + + + კრასნოიარსკი + + + ირკუტსკი + + + იაკუტსკი + + + ვლადივოსტოკი + + + ხანდიგა + + + სახალინი + + + უსტ-ნერა + + + მაგადანი + + + კამჩატკა + + + ანადირი + + + კიგალი + + + ერ-რიადი + + + გვადალკანალი + + + მაჰე + + + ხარტუმი + + + სტოკჰოლმი + + + სინგაპური + + + წმ. ელენეს კუნძული + + + ლიუბლიანა + + + ლონგირბიენი + + + ბრატისლავა + + + ფრიტაუნი + + + სან-მარინო + + + დაკარი + + + მოგადიშუ + + + პარამარიბო + + + ჯუბა + + + სენ-ტომე + + + სალვადორი + + + ლოერ პრინც კვორტერი + + + დამასკი + + + მბაბანე + + + გრანდ-ტურკი + + + ნჯამენა + + + კერგელენი + + + ლომე + + + ბანგკოკი + + + დუშანბე + + + ფაკაოფო + + + დილი + + + აშხაბადი + + + ტუნისი + + + ტონგატაპუ + + + სტამბოლი + + + პორტ-ოვ-სპეინი + + + ფუნაფუტი + + + ტაიპეი + + + დარ-ეს-სალამი + + + უჟგოროდი + + + კიევი + + + სიმფეროპოლი + + + ზაპოროჟიე + + + კამპალა + + + მიდუეი + + + ჯონსტონი + + + უეიკი + + + ადაკი + + + ნომი + + + ჰონოლულუ + + + ენქორაჯი + + + იაკუტატი + + + სიტკა + + + ჯუნო + + + მეტლაკატლა + + + ლოს-ანჯელესი + + + ბუასი + + + ფენიქსი + + + დენვერი + + + ბიულა, ჩრდილოეთი დაკოტა + + + ნიუ სალემი, ჩრდილოეთი დაკოტა + + + ცენტრი, ჩრდილოეთი დაკოტა + + + ჩიკაგო + + + მენომინი + + + ვინსენი, ინდიანა + + + პიტერსბურგი, ინდიანა + + + თელ სითი, ინდიანა + + + ნოქსი, ინდიანა + + + უინემაკი, ინდიანა + + + მარენგო, ინდიანა + + + ინდიანაპოლისი + + + ლუისვილი + + + ვივეი, ინდიანა + + + მონტიჩელო, კენტუკი + + + დეტროიტი + + + ნიუ-იორკი + + + მონტევიდეო + + + სამარყანდი + + + ტაშკენტი + + + ვატიკანი + + + სენ-ვინსენტი + + + კარაკასი + + + ტორტოლა + + + სენ-ტომასი + + + ჰოჩიმინი + + + ეფატე + + + ვალისი + + + აპია + + + ადენი + + + მაიოტი + + + იოჰანესბურგი + + + ლუსაკა + + + ჰარარე + + + + ავღანეთის დრო + + + + + ცენტრალური აფრიკის დრო + + + + + აღმოსავლეთ აფრიკის დრო + + + + + სამხრეთ აფრიკის დრო + + + + + დასავლეთ აფრიკის დრო + დასავლეთ აფრიკის სტანდარტული დრო + დასავლეთ აფრიკის ზაფხულის დრო + + + + + ალასკის დრო + ალასკის სტანდარტული დრო + ალასკის დროის სარტყელი + + + + + ამაზონიის დრო + ამაზონიის სტანდარტული დრო + ამაზონიის ზაფხულის დრო + + + + + ჩრდილოეთ ამერიკის ცენტრალური დრო + ჩრდილოეთ ამერიკის ცენტრალური სტანდარტული დრო + ჩრდილოეთ ამერიკის ცენტრალური დროის სარტყელი + + + + + ჩრდილოეთ ამერიკის აღმოსავლეთის დრო + ჩრდილოეთ ამერიკის აღმოსავლეთის სტანდარტული დრო + ჩრდილოეთ ამერიკის აღმოსავლეთის დროის სარტყელი + + + + + ჩრდილოეთ ამერიკის მაუნთინის დრო + ჩრდილოეთ ამერიკის მაუნთინის სტანდარტული დრო + ჩრდილოეთ ამერიკის მაუნთინის დროის სარტყელი + + + + + ჩრდილოეთ ამერიკის წყნარი ოკეანის დრო + ჩრდილოეთ ამერიკის წყნარი ოკეანის სტანდარტული დრო + ჩრდილოეთ ამერიკის წყნარი ოკეანის დროის სარტყელი + + + + + არაბეთის დრო + არაბეთის სტანდარტული დრო + არაბეთის დროის სარტყელი + + + + + არგენტინის დრო + არგენტინის სტანდარტული დრო + არგენტინის ზაფხულის დრო + + + + + დასავლეთ არგენტინის დრო + დასავლეთ არგენტინის სტანდარტული დრო + დასავლეთ არგენტინის ზაფხულის დრო + + + + + სომხეთის დრო + სომხეთის სტანდარტული დრო + სომხეთის ზაფხულის დრო + + + + + ატლანტიკის ოკეანის დრო + ატლანტიკის ოკეანის სტანდარტული დრო + ატლანტიკის ოკეანის დროის სარტყელი + + + + + ცენტრალური ავსტრალიის დრო + ავსტრალიის ცენტრალური სტანდარტული დრო + ცენტრალური ავსტრალიის დროის სარტყელი + + + + + ცენტრალური და დასავლეთ ავსტრალიის დრო + ცენტრალური და დასავლეთ ავსტრალიის სტანდარტული დრო + ცენტრალური და დასავლეთ ავსტრალიის დროის სარტყელი + + + + + აღმოსავლეთ ავსტრალიის დრო + აღმოსავლეთ ავსტრალიის სტანდარტული დრო + აღმოსავლეთ ავსტრალიის დროის სარტყელი + + + + + დასავლეთ ავსტრალიის დრო + დასავლეთ ავსტრალიის სტანდარტული დრო + დასავლეთ ავსტრალიის დროის სარტყელი + + + + + აზერბაიჯანის დრო + აზერბაიჯანის სტანდარტული დრო + აზერბაიჯანის ზაფხულის დრო + + + + + აზორის კუნძულების დრო + აზორის კუნძულების სტანდარტული დრო + აზორის კუნძულების ზაფხულის დრო + + + + + ბანგლადეშის დრო + ბანგლადეშის სტანდარტული დრო + ბანგლადეშის ზაფხულის დრო + + + + + ბუტანის დრო + + + + + ბოლივიის დრო + + + + + ბრაზილიის დრო + ბრაზილიის სტანდარტული დრო + ბრაზილიის ზაფხულის დრო + + + + + ბრუნეი-დარუსალამის დრო + + + + + კაბო-ვერდეს დრო + კაბო-ვერდეს სტანდარტული დრო + კაბო-ვერდეს ზაფხულის დრო + + + + + ჩამოროს დრო + + + + + ჩატემის დრო + ჩატემის სტანდარტული დრო + ჩატემის დროის სარტყელი + + + + + ჩილეს დრო + ჩილეს სტანდარტული დრო + ჩილეს ზაფხულის დრო + + + + + ჩინეთის დრო + ჩინეთის სტანდარტული დრო + ჩინეთის დროის სარტყელი + + + + + ჩოიბალსანის დრო + ჩოიბალსანის სტანდარტული დრო + ჩოიბალსანის ზაფხულის დრო + + + + + შობის კუნძულის დრო + + + + + ქოქოსის კუნძულების დრო + + + + + კოლუმბიის დრო + კოლუმბიის სტანდარტული დრო + კოლუმბიის ზაფხულის დრო + + + + + კუკის კუნძულების დრო + კუკის კუნძულების სტანდარტული დრო + კუკის კუნძულების ნახევრად ზაფხულის დრო + + + + + კუბის დრო + კუბის სტანდარტული დრო + კუბის დროის სარტყელი + + + + + დევისის დრო + + + + + დუმონ-დურვილის დრო + + + + + აღმოსავლეთ ტიმორის დრო + + + + + აღდგომის კუნძულის დრო + აღდგომის კუნძულის სტანდარტული დრო + აღდგომის კუნძულის ზაფხულის დრო + + + + + ეკვადორის დრო + + + + + ცენტრალური ევროპის დრო + ცენტრალური ევროპის სტანდარტული დრო + ცენტრალური ევროპის ზაფხულის დრო + + + + + აღმოსავლეთ ევროპის დრო + აღმოსავლეთ ევროპის სტანდარტული დრო + აღმოსავლეთ ევროპის ზაფხულის დრო + + + + + დასავლეთ ევროპის დრო + დასავლეთ ევროპის სტანდარტული დრო + დასავლეთ ევროპის ზაფხულის დრო + + + + + ფოლკლენდის კუნძულების დრო + ფოლკლენდის კუნძულების სტანდარტული დრო + ფოლკლენდის კუნძულების ზაფხულის დრო + + + + + ფიჯის დრო + ფიჯის სტანდარტული დრო + ფიჯის ზაფხულის დრო + + + + + საფრანგეთის გვიანის დრო + + + + + ფრანგული სამხრეთის და ანტარქტიკის დრო + + + + + გალაპაგოსის დრო + + + + + გამბიერის დრო + + + + + საქართველოს დრო + საქართველოს სტანდარტული დრო + საქართველოს ზაფხულის დრო + + + + + გილბერტის კუნძულების დრო + + + + + გრინვიჩის საშუალო დრო + + + + + აღმოსავლეთ გრენლანდიის დრო + აღმოსავლეთ გრენლანდიის სტანდარტული დრო + აღმოსავლეთ გრენლანდიის ზაფხულის დრო + + + + + დასავლეთ გრენლანდიის დრო + დასავლეთ გრენლანდიის სტანდარტული დრო + დასავლეთ გრენლანდიის ზაფხულის დრო + + + + + გალფის დრო + + + + + გაიანის დრო + + + + + ჰავაის და ალეუტის დრო + ჰავაის და ალეუტის სტანდარტული დრო + ჰავაის და ალეუტის დროის სარტყელი + + + + + ჰონკონგის დრო + ჰონკონგის სტანდარტული დრო + ჰონკონგის ზაფხულის დრო + + + + + ჰოვდის დრო + ჰოვდის სტანდარტული დრო + ჰოვდის ზაფხულის დრო + + + + + ინდოეთის დრო + + + + + ინდოეთის ოკეანის კუნძულების დრო + + + + + ინდოჩინეთის დრო + + + + + ცენტრალური ინდონეზიის დრო + + + + + აღმოსავლეთ ინდონეზიის დრო + + + + + დასავლეთ ინდონეზიის დრო + + + + + ირანის დრო + ირანის სტანდარტული დრო + ირანის დროის სარტყელი + + + + + ირკუტსკის დრო + ირკუტსკის სტანდარტული დრო + ირკუტსკის ზაფხულის დრო + + + + + ისრაელის დრო + ისრაელის სტანდარტული დრო + ისრაელის დროის სარტყელი + + + + + იაპონიის დრო + იაპონიის სტანდარტული დრო + იაპონიის დროის სარტყელი + + + + + აღმოსავლეთ ყაზახეთის დრო + + + + + დასავლეთ ყაზახეთის დრო + + + + + კორეის დრო + კორეის სტანდარტული დრო + კორეის დროის სარტყელი + + + + + კოსრეს დრო + + + + + კრასნოიარსკის დრო + კრასნოიარსკის სტანდარტული დრო + კრასნოიარსკის ზაფხულის დრო + + + + + ყირგიზეთის დრო + + + + + ლაინის კუნძულების დრო + + + + + ლორდ-ჰაუს დრო + ლორდ-ჰაუს სტანდარტული დრო + ლორდ-ჰაუს დროის სარტყელი + + + + + მაქკუორის კუნძულის დრო + + + + + მაგადანის დრო + მაგადანის სტანდარტული დრო + მაგადანის ზაფხულის დრო + + + + + მალაიზიის დრო + + + + + მალდივების დრო + + + + + მარკიზის კუნძულების დრო + + + + + მარშალის კუნძულების დრო + + + + + მავრიკის დრო + მავრიკის სტანდარტული დრო + მავრიკის ზაფხულის დრო + + + + + მოუსონის დრო + + + + + ულან-ბატორის დრო + ულან-ბატორის სტანდარტული დრო + ულან-ბატორის ზაფხულის დრო + + + + + მოსკოვის დრო + მოსკოვის სტანდარტული დრო + მოსკოვის ზაფხულის დრო + + + + + მიანმარის დრო + + + + + ნაურუს დრო + + + + + ნეპალის დრო + + + + + ახალი კალედონიის დრო + ახალი კალედონიის სტანდარტული დრო + ახალი კალედონიის ზაფხულის დრო + + + + + ახალი ზელანდიის დრო + ახალი ზელანდიის სტანდარტული დრო + ახალი ზელანდიის დროის სარტყელი + + + + + ნიუფაუნდლენდის დრო + ნიუფაუნდლენდის სტანდარტული დრო + ნიუფაუნდლენდის დროის სარტყელი + + + + + ნიუეს დრო + + + + + ნორფოლკის კუნძულის დრო + + + + + ფერნანდო-დე-ნორონიას დრო + ფერნანდო-დე-ნორონიას სტანდარტული დრო + ფერნანდო-დე-ნორონიას ზაფხულის დრო + + + + + ნოვოსიბირსკის დრო + ნოვოსიბირსკის სტანდარტული დრო + ნოვოსიბირსკის ზაფხულის დრო + + + + + ომსკის დრო + ომსკის სტანდარტული დრო + ომსკის ზაფხულის დრო + + + + + პაკისტანის დრო + პაკისტანის სტანდარტული დრო + პაკისტანის ზაფხულის დრო + + + + + პალაუს დრო + + + + + პაპუა-ახალი გვინეის დრო + + + + + პარაგვაის დრო + პარაგვაის სტანდარტული დრო + პარაგვაის ზაფხულის დრო + + + + + პერუს დრო + პერუს სტანდარტული დრო + პერუს ზაფხულის დრო + + + + + ფილიპინების დრო + ფილიპინების სტანდარტული დრო + ფილიპინების ზაფხულის დრო + + + + + ფენიქსის კუნძულების დრო + + + + + სენ-პიერის და მიკელონის დრო + სენ-პიერის და მიკელონის სტანდარტული დრო + სენ-პიერის და მიკელონის დროის სარტყელი + + + + + პიტკერნის დრო + + + + + პონაპეს დრო + + + + + რეიუნიონის დრო + + + + + როთერის დრო + + + + + სახალინის დრო + სახალინის სტანდარტული დრო + სახალინის ზაფხულის დრო + + + + + სამოას დრო + სამოას სტანდარტული დრო + სამოას ზაფხულის დრო + + + + + სეიშელის კუნძულების დრო + + + + + სინგაპურის დრო + + + + + სოლომონის კუნძულების დრო + + + + + სამხრეთ გეორგიის დრო + + + + + სურინამის დრო + + + + + სიოვას დრო + + + + + ტაიტის დრო + + + + + ტაიბეის დრო + ტაიბეის სტანდარტული დრო + ტაიბეის დროის სარტყელი + + + + + ტაჯიკეთის დრო + + + + + ტოკელაუს დრო + + + + + ტონგის დრო + ტონგის სტანდარტული დრო + ტონგის ზაფხულის დრო + + + + + ჩუუკის დრო + + + + + თურქმენეთის დრო + თურქმენეთის სტანდარტული დრო + თურქმენეთის ზაფხულის დრო + + + + + ტუვალუს დრო + + + + + ურუგვაის დრო + ურუგვაის სტანდარტული დრო + ურუგვაის ზაფხულის დრო + + + + + უზბეკეთის დრო + უზბეკეთის სტანდარტული დრო + უზბეკეთის ზაფხულის დრო + + + + + ვანუატუს დრო + ვანუატუს სტანდარტული დრო + ვანუატუს ზაფხულის დრო + + + + + ვენესუელის დრო + + + + + ვლადივოსტოკის დრო + ვლადივოსტოკის სტანდარტული დრო + ვლადივოსტოკის ზაფხულის დრო + + + + + ვოლგოგრადის დრო + ვოლგოგრადის სტანდარტული დრო + ვოლგოგრადის ზაფხულის დრო + + + + + ვოსტოკის დრო + + + + + ვეიკის კუნძულის დრო + + + + + ვოლისი და ფუტუნას დრო + + + + + იაკუტსკის დრო + იაკუტსკის სტანდარტული დრო + იაკუტსკის ზაფხულის დრო + + + + + ეკატერინბურგის დრო + ეკატერინბურგის სტანდარტული დრო + ეკატერინბურგის ზაფხულის დრო + + + + + + latn + + latn + geor + + + , +   + ; + % + + + - + E + × + + + არ არის რიცხვი + + + + + #,##0.### + + + + + 0 ათასი + 0 ათასი + 00 ათასი + 00 ათასი + 000 ათასი + 000 ათასი + 0 მილიონი + 0 მილიონი + 00 მილიონი + 00 მილიონი + 000 მილიონი + 000 მილიონი + 0 მილიარდი + 0 მილიარდი + 00 მილიარდი + 00 მილიარდი + 000 მილიარდი + 000 მილიარდი + 0 ტრილიონი + 0 ტრილიონი + 00 ტრილიონი + 00 ტრილიონი + 000 ტრილიონი + 000 ტრილიონი + + + + + 0 ათ'.' + 0 ათ'.' + 00 ათ'.' + 00 ათ'.' + 000 ათ'.' + 000 ათ'.' + 0 მლნ'.' + 0 მლნ'.' + 00 მლნ'.' + 00 მლნ'.' + 000 მლნ'.' + 000 მლნ'.' + 0 მლრდ'.' + 0 მლრდ'.' + 00 მლრდ'.' + 00 მლრდ'.' + 000 მლრ'.' + 000 მლრ'.' + 0 ტრლ'.' + 0 ტრლ'.' + 00 ტრლ'.' + 00 ტრლ'.' + 000 ტრლ'.' + 000 ტრლ'.' + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + ანდორული პესეტა + + + არაბთა გაერთიანებული საამიროების დირჰამი + არაბთა გაერთიანებული საამიროების დირჰამი + არაბთა გაერთიანებული საამიროების დირჰამი + + + ავღანი (1927–2002) + + + ავღანური ავღანი + ავღანური ავღანი + ავღანი + + + ალბანური ლეკი + ალბანური ლეკი + ალბანური ლეკი + + + სომხური დრამი + სომხური დრამი + სომხური დრამი + + + ნიდერლანდების ანტილების გულდენი + ნიდრელანდების ანტილიის გულდენი + ნიდრელანდების ანტილიის გულდენი + + + ანგოლური კვანზა + ანგოლური კვანზა + ანგოლური კვანზა + + + ანგოლური კვანზა (1977–1990) + + + ანგოლური ახალი კვანზა (1990–2000) + + + ანგოლური მიტოლებული კვანზა (1995–1999) + + + არგენტინული აუსტრალი + + + არგენტინული პესო (1983–1985) + + + არგენტინული პესო + არგენტინული პესო + არგენტინული პესო + + + ავსტრიული შილინგი + + + ავსტრალიური დოლარი + ავსტრალიური დოლარი + ავსტრალიური დოლარი + AUD + + + არუბანული გულდენი + არუბანული გულდენი + არუბანული გულდენი + + + აზერბაიჯანული მანათი (1993–2006) + + + აზერბაიჯანული მანათი + აზერბაიჯანული მანათი + აზერბაიჯანული მანათი + + + ბოსნია-ჰერცოგოვინას დინარი + + + ბოსნია და ჰერცოგოვინას კონვერტირებადი მარკა + ბოსნია და ჰერცოგოვინას კონვერტირებადი მარკა + ბოსნია და ჰერცოგოვინას კონვერტირებადი მარკა + + + ბარბადოსული დოლარი + ბარბადოსული დოლარი + ბარბადოსული დოლარი + + + ბანგლადეშური ტაკა + ბანგლადეშური ტაკა + ბანგლადეშური ტაკა + + + ბელგიური ფრანკი (კოვერტირებადი) + + + ბელგიური ფრანკი + + + ბელგიური ფრანკი (ფინანსური) + + + ბულგარული მყარი ლევი + + + ბულგარული ლევი + ბულგარული ლევი + ბულგარული ლევი + + + ბაჰრეინული დინარი + ბაჰრეინული დინარი + ბაჰრეინული დინარი + + + ბურუნდიული ფრანკი + ბურუნდიული ფრანკი + ბურუნდიული ფრანკი + + + ბერმუდული დოლარი + ბერმუდული დოლარი + ბერმუდული დოლარი + + + ბრუნეული დოლარი + ბრუნეული დოლარი + ბრუნეული დოლარი + + + ბოლივიური ბოლივიანო + ბოლივიური ბოლივიანო + ბოლივიური ბოლივიანო + + + ბოლივიური პესო + + + ბრაზილიური კრუზეირო ნოვო (1967–1986) + + + ბრაზილიური კრუზადო + + + ბრაზილიური კრუზეირო (1990–1993) + + + ბრაზილიური რეალი + ბრაზილიური რეალი + ბრაზილიური რეალი + R$ + + + ბრაზილიური კრუზადო ნოვო + + + ბრაზილიური კრუზეირო + + + ბაჰამური დოლარი + ბაჰამური დოლარი + ბაჰამური დოლარი + + + ბუტანური ნგულტრუმი + ბუტანური ნგულტრუმი + ბუტანური ნგულტრუმი + + + ბოცვანური პულა + ბოცვანური პულა + ბოცვანური პულა + + + ახალი ბელარუსიული რუბლი (1994–1999) + + + ბელორუსული რუბლი + ბელორუსული რუბლი + ბელორუსული რუბლი + + + ბელიზის დოლარი + ბელიზის დოლარი + ბელიზის დოლარი + + + კანადური დოლარი + კანადური დოლარი + კანადური დოლარი + CA$ + + + კონგოს ფრანკი + კონგოს ფრანკი + კონგოს ფრანკი + + + შვეიცარიული ფრანკი + შვეიცარიული ფრანკი + შვეიცარიული ფრანკი + + + ჩილეს პესო + ჩილეს პესო + ჩილიური პესო + + + ჩინური იუანი + ჩინური უანი + ჩინური უანი + CNY + + + კოლუმბიური პესო + კოლუმბიური პესო + კოლუმბიური პესო + + + კოსტა-რიკული კოლონი + კოსტა-რიკული კოლონი + კოსტა რიკული კოლონი + + + ძველი სერბიული დინარი + + + ჩეხოსლოვაკიის მყარი კრონა + + + კუბური კონვერტირებადი პესო + კუბური კონვერტირებადი პესო + კუბური კონვერტირებადი პესო + + + კუბური პესო + კუბური პესო + კუბური პესო + + + კაბო-ვერდეს ესკუდო + კაბო-ვერდეს ესკუდო + კაბო-ვერდეს ესკუდო + + + კვიპროსის გირვანქა + + + ჩეხური კრონა + ჩეხური კრონა + ჩეხური კრონა + + + აღმოსავლეთ გერმანული მარკა + + + გერმანული მარკა + + + ჯიბუტის ფრანკი + ჯიბუტის ფრანკი + ჯიბუტის ფრანკი + + + დანიური კრონა + დანიური კრონა + დანიური კრონა + + + დომინიკური პესო + დომინიკური პესო + დომინიკური პესო + + + ალჟირული დინარი + ალჟირული დინარი + ალჟირული დინარი + + + ესტონური კრუნა + + + ეგვიპტური გირვანქა + ეგვიპტური გირვანქა + ეგვიპტური გირვანქა + + + ერიტრეის ნაკფა + ერიტრეის ნაკფა + ერიტრეის ნაკფა + + + ესპანური პესეტა + + + ეთიოპიური ბირი + ეთიოპიური ბირი + ეთიოპიური ბირი + + + ევრო + ევრო + ევრო + + + + ფინური მარკა + + + ფიჯის დოლარი + ფიჯის დოლარი + ფიჯის დოლარი + + + ფოლკლენდის კუნძულების ფუნტი + ფოლკლენდის კუნძულების ფუნტი + ფოლკლენდის კუნძულების ფუნტი + + + ფრანგული ფრანკი + + + ბრიტანული გირვანქა სტერლინგი + ბრიტანული გირვანქა სტერლინგი + ინგლისური გირვანქა სტერლინგი + £ + + + ქართული კუპონი ლარით + + + ქართული ლარი + ქართული ლარი + ქართული ლარი + + + განური სედი + განური სედი + განური სედი + + + გიბრალტარული ფუნტი + გიბრალტარული ფუნტი + გიბრალტარული ფუნტი + + + გამბიური დალასი + გამბიური დალასი + გამბიური დალასი + + + გვინეური ფრანკი + გვინეური ფრანკი + გვინეური ფრანკი + + + ბერძნული დრაჰმა + + + გვატემალური კეტსალი + გვატემალური კეტსალი + გვატემალური კეტსალი + + + პორტუგალიური გინეა ესკუდო + + + გაიანური დოლარი + გაიანური დოლარი + გაიანური დოლარი + + + ჰონკონგის დოლარი + ჰონკონგის დოლარი + ჰონგ კონგის დოლარი + HKD + + + ჰონდურასული ლემპირა + ჰონდურასული ლემპირა + ჰონდურასული ლემპირა + + + ხორვატიული დინარი + + + ხორვატული კუნა + ხორვატული კუნა + ხორვატული კუნა + + + ჰაიტური გურდი + ჰაიტური გურდი + ჰაიტური გურდი + + + უნგრული ფორინტი + უნგრული ფორინტი + უნგრული ფორინტი + + + ინდონეზიური რუპია + ინდონეზიური რუპია + ინდონეზიური რუპია + + + ირლანდიური გირვანქა + + + ისრაელის ახალი შეკელი + ისრაელის ახალი შეკელი + ისრაელის ახალი შეკელი + ILS + + + ინდური რუპია + ინდური რუპია + ინდური რუპია + INR + + + ერაყული დინარი + ერაყული დინარი + ერაყული დინარი + + + ირანული რიალი + ირანული რიალი + ირანული რიალი + + + ისლანდიური კრონა + ისლანდიური კრონა + ისლანდიური კრონა + + + იტალიური ლირა + + + იამაიკური დოლარი + იამაიკური დოლარი + იამაიკური დოლარი + + + იორდანიული დოლარი + იორდანიული დოლარი + იორდანიული დოლარი + + + იაპონური იენი + იაპონური იენი + იაპონური იენი + JPY + + + კენიური შილინგი + კენიური შილინგი + კენიური შილინგი + + + ყირგიზული სომი + ყირგიზული სომი + ყირგიზული სომი + + + კამბოჯური რიელი + კამბოჯური რიელი + კამბოჯური რიელი + + + კომორული ფრანკი + კომორული ფრანკი + კომორული ფრანკი + + + ჩრდილოეთ კორეული ვონი + ჩრდილოეთ კორეული ვონი + ჩრდილოეთ კორეული ვონი + + + სამხრეთ კორეული ვონი + სამხრეთ კორეული ვონი + სამხრეთ კორეული ვონი + KRW + + + ქუვეითური დინარი + ქუვეითური დინარი + ქუვეითური დინარი + + + კაიმანის კუნძულების დოლარი + კაიმანის კუნძულების დოლარი + კაიმანის კუნძულების დოლარი + + + ყაზახური ტენგე + ყაზახური ტენგე + ყაზახური ტენგე + + + ლაოსური კიპი + ლაოსური კიპი + ლაოსური კიპი + + + ლიბანური ფუნტი + ლიბანური ფუნტი + ლიბანური ფუნტი + + + შრი-ლანკური რუპია + შრი-ლანკური რუპია + შრი ლანკას რუპია + + + ლიბერიული დოლარი + ლიბერიული დოლარი + ლიბერიული დოლარი + + + ლიტვური ლიტა + ლიტვური ლიტა + ლიტვური ლიტა + + + ლიტვური ტალონი + + + ლუქსემბურგის კონვერტირებადი ფრანკი + + + ლუქსემბურგის ფრანკი + + + ლუქსემბურგის ფინანსური ფრანკი + + + ლატვიური ლატი + ლატვიური ლატი + ლატვიური ლატი + + + ლატვიური რუბლი + + + ლიბიური დინარი + ლიბიური დინარი + ლიბიური დინარი + + + მაროკოს დირჰამი + მაროკოს დირჰამი + მაროკოს დირჰამი + + + მაროკოს ფრანკი + + + მოლდოვური ლეუ + მოლდოვური ლეუ + მოლდოვური ლეუ + + + მადაგასკარის არიარი + მადაგასკარის არიარი + მადაგასკარის არიარი + + + მადაგასკარის ფრანკი + + + მაკედონიური დინარი + მაკედონიური დინარი + მაკედონიური დინარი + + + მალის ფრანკი + + + მიანმარის კიატი + მიანმარის კიატი + მიანმარის კიატი + + + მონღოლური ტუგრიკი + მონღოლური ტუგრიკი + მონღოლური ტუგრიკი + + + მაკაუს პატაკა + მაკაუს პატაკა + მაკაუს პატაკა + + + მავრიტანული უგია + მავრიტანული უგია + მავრიტანული უგია + + + მალტის ლირა + + + მალტის გირვანქა + + + მავრიტანული რუპია + მავრიტანული რუპია + მავრიტანული რუპია + + + მალდივური რუფია + მალდივური რუფია + მალდივური რუფია + + + მალავიური კვაჩა + მალავიური კვაჩა + მალავიური კვაჩა + + + მექსიკური პესო + მექსიკური პესო + მექსიკური პესო + MX$ + + + მექსიკური ვერცხლის პესო (1861–1992) + + + მალაიზიური რინგიტი + მალაიზიური რინგიტი + მალაიზიური რინგიტი + + + მოზამბიკური ესკუდო + მოზამბიკური ესკუდო + მოზამბიკური ესკუდო + + + ძველი მოზამბიკური მეტიკალი + + + მოზამბიკური მეტიკალი + მოზამბიკური მეტიკალი + მოზამბიკური მეტიკალი + + + ნამიბიური დოლარი + ნამიბიური დოლარი + ნამიბიური დოლარი + + + ნიგერიული ნაირა + ნიგერიული ნაირა + ნიგერიული ნაირა + + + ნიკარაგუას კორდობა + + + ნიკარაგუული კორდობა + ნიკარაგუას ოქროს კორდობა + ნიკარაგუას ოქროს კორდობა + + + ჰოლანდიური გულდენი + + + ნორვეგიული კრონა + ნორვეგიული კრონა + ნორვეგიული კრონა + + + ნეპალური რუპია + ნეპალური რუპია + ნეპალური რუპია + + + ახალი ზელანდიის დოლარი + ახალი ზელანდიის დოლარი + ახალი ზელანდიის დოლარი + NZD + + + ომანის რიალი + ომანის რიალი + ომანის რიალი + + + პანამური ბალბოა + პანამური ბალბოა + პანამური ბალბოა + + + პერუს ინტი + + + პერუს ახალი სოლი + პერუს ახალი სოლი + პერუს ახალი სოლი + + + პერუს სოლი + + + პაპუა-ახალი გვინეის კინა + პაპუა-ახალი გვინეის კინა + პაპუა-ახალი გვინეის კინა + + + ფილიპინური პესო + ფილიპინური პესო + ფილიპინური პესო + + + პაკისტანური რუპია + პაკისტანური რუპია + პაკისტანური რუპია + + + პოლონური ზლოტი + პოლონური ზლოტი + პოლონური ზლოტი + + + პოლონური ზლოტი (1950–1995) + + + პორტუგალიური ესკუდო + + + პარაგვაული გუარანი + პარაგვაული გუარანი + პარაგვაული გუარანი + + + კატარის რიალი + კატარის რიალი + კატარის რიალი + + + როდეზიული დოლარი + + + ძველი რუმინული ლეუ + + + რუმინული ლეუ + რუმინული ლეუ + რუმინული ლეუ + + + სერბული დინარი + სერბული დინარი + სერბული დინარი + + + რუსული რუბლი + რუსული რუბლი + რუსული რუბლი + + + რუსული რუბლი (1991–1998) + + + რუანდული ფრანკი + რუანდული ფრანკი + რუანდული ფრანკი + + + საუდის არაბეთის რიალი + საუდის არაბეთის რიალი + საუდის არაბეთის რიალი + + + სოლომონის კუნძულების დოლარი + სოლომონის კუნძულების დოლარი + სოლომონის კუნძულების დოლარი + + + სეიშელური რუპია + სეიშელური რუპია + სეიშელური რუპია + + + სუდანის დინარი + + + სუდანური ფუნტი + სუდანური ფუნტი + სუდანური ფუნტი + + + სუდანის გირვანქა + + + შვედური კრონა + შვედური კრონა + შვედური კრონა + + + სინგაპურის დოლარი + სინგაპურის დოლარი + სინგაპურის დოლარი + + + წმ. ელენეს კუნძულის ფუნტი + წმ. ელენეს კუნძულის ფუნტი + წმ. ელენეს კუნძულის ფუნტი + + + სიერა-ლეონეს ლეონე + სიერა-ლეონეს ლეონე + სიერა-ლეონეს ლეონე + + + სომალური შილინგი + სომალური შილინგი + სომალური შილინგი + + + სურინამული დოლარი + სურინამული დოლარი + სურინამული დოლარი + + + სურინამის გულდენი + + + სამხრეთ სუდანური ფუნტი + სამხრეთ სუდანური ფუნტი + სამხრეთ სუდანური ფუნტი + + + სან-ტომე და პრინსიპის დობრა + სან-ტომე და პრინსიპის დობრა + სან-ტომე და პრინსიპის დობრა + + + საბჭოთა რუბლი + + + სირიული ფუნტი + სირიული გირვანქა + სირიული გირვანქა + + + სვაზილენდის ლილანგენი + სვაზილენდის ლილანგენი + სვაზილენდის ლილანგენი + + + ტაილანდური ბატი + ტაილანდური ბატი + ტაილანდური ბატი + THB + + + ტაჯიკური რუბლი + + + ტაჯიკური სომონი + ტაჯიკური სომონი + ტაჯიკური სომონი + + + თურქმენული მანათი + + + თურქმენეთის მანათი + თურქმენეთის მანათი + თურქმენეთის მანათი + + + ტუნისური დინარი + ტუნისის დინარი + ტუნისის დინარი + + + ტონგანური პაანგა + ტონგანური პაანგა + ტონგანური პაანგა + + + თურქული ლირა + + + ახალი თურქული ლირა + ახალი თურქული ლირა + ახალი თურქული ლირა + + + ტრინიდად და ტობაგოს დოლარი + ტრინიდად და ტობაგოს დოლარი + ტრინიდად და ტობაგოს დოლარი + + + ტაივანური ახალი დოლარი + ტაივანური ახალი დოლარი + ტაივანური ახალი დოლარი + TWD + + + ტანზანიური შილინგი + ტანზანიური შილინგი + ტანზანიური შილინგი + + + უკრაინული გრივნა + უკრაინული გრივნა + უკრაინული გრივნა + + + უკრაინული კარბოვანეცი + + + უგანდური შილინგი (1966–1987) + + + უგანდური შილინგი + უგანდური შილინგი + უგანდური შილინგი + + + აშშ დოლარი + აშშ დოლარი + აშშ დოლარი + US$ + + + აშშ დოლარი (შემდეგი დღე) + + + აშშ დოლარი (იგივე დღე) + + + ურუგვაის პესო (1975–1993) + + + ურუგვაის პესო + ურუგვაის პესო + ურუგვაის პესო + + + უზბეკური სუმი + უზბეკური სუმი + უზბეკური სუმი + + + ვენესუელის ბოლივარი (1871–2008) + + + ვენესუელის ბოლივარი + ვენესუელის ბოლივარი + ვენესუელის ბოლივარი + + + ვიეტნამური დონგი + ვიეტნამური დონგი + ვიეტნამური დონგი + VND + + + ვანუატუს ვატუ + ვანატუს ვატუ + ვანატუს ვატუ + + + სამოური ტალა + დასავლეთ სამოას ტალა + დასავლეთ სამოას ტალა + + + CFA ფრანკი (BEAC) + CFA ფრანკი (BEAC) + CFA ფრანკი (BEAC) + FCFA + + + ვერცხლი + + + ევროპული კომპპოზიტური ერთეული + + + ევროპული ფულადი ერთეული + + + აღმოსავლეთ კარიბიული დოლარი + აღმოსავლეთ კარიბიული დოლარი + აღმოსავლეთ კარიბიული დოლარი + EC$ + + + ევროპული სავალუტო ერთეული + + + ფრანგული ოქროს ფრანკი + + + (CFA) ფრანკი (BCEAO) + CFA ფრანკი (BCEAO) + CFA ფრანკი (BCEAO) + CFA + + + CFP ფრანკი + CFP ფრანკი + CFP ფრანკი + CFPF + + + უცნობი ვალუტა + (ვალუტის უცნობი ერთეული) + უცნობი ვალუტა + + + იემენის დინარი + + + იემენის რეალი + იემენის რეალი + იემენის რეალი + + + იუგოსლავიური მყარი დინარი + + + იუგოსლავიური ახალი დინარი + + + იუგოსლავიური კონვერტირებადი დინარი + + + სამხრეთ აფრიკული რანდი + სამხრეთ აფრიკული რანდი + სამხრეთ აფრიკული რანდი + + + ზამბიური კვაჩა (1968–2012) + ზამბიური კვაჭა (1968–2012) + ზამბიური კვაჭა (1968–2012) + + + ზამბიური კვაჭა + ზამბიური კვაჭა + ზამბიური კვაჭა + + + ზაირის ახალი ზაირი + + + ზაირის ზაირი + + + ზიმბაბვეს დოლარი + + + + {0}+ + {0}-{1} + + + + + + {0}/{1} + + + {0} ინერციის ძალა + {0} ინერციის ძალა + + + {0} წუთი + {0} წუთი + + + {0} წამი + {0} წამი + + + {0} გრადუსი + {0} გრადუსი + + + {0} აკრი + {0} აკრი + + + {0} ჰექტარი + {0} ჰექტარი + + + {0} კვადრატული ფუტი + {0} კვადრატული ფუტი + + + {0} კვადრატული კილომეტრი + {0} კვადრატული კილომეტრი + + + {0} კვადრატული მეტრი + {0} კვადრატული მეტრი + + + {0} კვადრატული მილი + {0} კვადრატული მილი + + + {0} დღე + {0} დღე + + + {0} საათი + {0} საათი + + + {0} მილიწამი + {0} მილიწამი + + + {0} წუთი + {0} წუთი + + + {0} თვე + {0} თვე + + + {0} წამი + {0} წამი + + + {0} კვირა + {0} კვირა + + + {0} წელი + {0} წელი + + + {0} სანტიმეტრი + {0} სანტიმეტრი + + + {0} ფუტი + {0} ფუტი + + + {0} დუიმი + {0} დუიმი + + + {0} კილომეტრი + {0} კილომეტრი + + + {0} სინათლის წელი + {0} სინათლის წელი + + + {0}მეტრი + {0}მეტრი + + + {0} მილი + {0} მილი + + + {0} მილიმეტრი + {0} მილიმეტრი + + + {0} პიკომეტრი + {0} პიკომეტრი + + + {0} იარდი + {0} იარდი + + + {0} გრამი + {0} გრამი + + + {0} კილოგრამი + {0} კილოგრამი + + + {0} უნცია + {0} უნცია + + + {0} ფუნტი + {0} ფუნტი + + + {0} ცხენის ძალა + {0} ცხენის ძალა + + + {0} კილოვატი + {0} კილოვატი + + + {0} ვატი + {0} ვატი + + + {0} ჰექტოპასკალი + {0} ჰექტოპასკალი + + + {0} ვერცხლისწყლის დუიმი + {0} ვერცხლისწყლის დუიმი + + + {0} მილიბარი + {0} მილიბარი + + + {0} კილომეტრი საათში + {0} კილომეტრი საათში + + + {0} მეტრი წამში + {0} მეტრი წამში + + + {0} მილი საათში + {0} მილი საათში + + + {0} გრადუსი ცელსიუსით + {0} გრადუსი ცელსიუსით + + + {0} გრადუსი ფარენჰეიტით + {0} გრადუსი ფარენჰეიტით + + + {0} კუბური კილომეტრი + {0} კუბური კილომეტრი + + + {0} კუბური მილი + {0} კუბური მილი + + + {0} ლიტრი + {0} ლიტრი + + + + + {0}/{1} + + + {0} ინ. ძ. + {0} ინ. ძ. + + + {0} წთ + {0} წთ + + + {0} წმ + {0} წმ + + + {0}° + {0}° + + + {0} აკრი + {0} აკრი + + + {0} ჰა + {0} ჰა + + + {0} ფტ² + {0} ფტ² + + + {0} კმ² + {0} კმ² + + + {0} მ² + {0} მ² + + + {0} მილი² + {0} მილი² + + + {0} დღე + {0} დღე + + + {0} სთ + {0} სთ + + + {0} მწ + {0} მწ + + + {0} წთ + {0} წთ + + + {0} თვე + {0} თვე + + + {0} წმ + {0} წმ + + + {0} კვრ + {0} კვრ + + + {0} წ + {0} წ + + + {0} სმ + {0} სმ + + + {0} ფტ + {0} ფტ + + + {0} დმ + {0} დმ + + + {0} კმ + {0} კმ + + + {0} სწ + {0} სწ + + + {0} მ + {0} მ + + + {0} მილი + {0} მილი + + + {0} მმ + {0} მმ + + + {0} პმ + {0} პმ + + + {0} იარდი + {0} იარდი + + + {0} გ + {0} გ + + + {0} კგ + {0} კგ + + + {0} უნც + {0} უნც + + + {0} ფნტ + {0} ფნტ + + + {0} ცხ. ძ. + {0} ცხ. ძ. + + + {0} კვტ + {0} კვტ + + + {0} ვტ + {0} ვტ + + + {0} ჰპა + {0} ჰპა + + + {0} ვრც. დმ. + {0} ვრც. დმ. + + + {0} მბარი + {0} მბარი + + + {0} კმ/სთ + {0} კმ/სთ + + + {0} მ/წმ + {0} მ/წმ + + + {0} მილი/სთ + {0} მილი/სთ + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} კმ³ + {0} კმ³ + + + {0} მილი³ + {0} მილი³ + + + {0} ლ + {0}ლ + + + + + {0}/{1} + + + {0} ინ. ძ. + {0} ინ. ძ. + + + {0} წთ + {0} წთ + + + {0} წმ + {0} წმ + + + {0}° + {0}° + + + {0} აკრი + {0} აკრი + + + {0} ჰა + {0} ჰა + + + {0} ფტ² + {0} ფტ² + + + {0} კმ² + {0} კმ² + + + {0} მ² + {0} მ² + + + {0} მილი² + {0} მილი² + + + {0} დღე + {0} დღე + + + {0} სთ + {0} სთ + + + {0} მწ + {0} მწ + + + {0} წთ + {0} წთ + + + {0} თვე + {0} თვე + + + {0} წმ + {0} წმ + + + {0} კვრ + {0} კვრ + + + {0} წ + {0} წ + + + {0} სმ + {0} სმ + + + {0} ფტ + {0} ფტ + + + {0} დმ + {0} დმ + + + {0} კმ + {0} კმ + + + {0} სწ + {0} სწ + + + {0}მ + {0}მ + + + {0} მილი + {0} მილი + + + {0} მმ + {0} მმ + + + {0} პმ + {0} პმ + + + {0} იარდი + {0} იარდი + + + {0} გ + {0} გ + + + {0} კგ + {0} კგ + + + {0} უნც + {0} უნც + + + {0} ფნტ + {0} ფნტ + + + {0}ცხ.ძ. + {0}ცხ.ძ. + + + {0} კვტ + {0} კვტ + + + {0} ვტ + {0} ვტ + + + {0} ჰპა + {0} ჰპა + + + {0} ვრც. დმ. + {0} ვრც. დმ. + + + {0} მბრ + {0} მბრ + + + {0} კმ/სთ + {0} კმ/სთ + + + {0} მ/წმ + {0} მ/წმ + + + {0} მილი/სთ + {0} მილი/სთ + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} კმ³ + {0} კმ³ + + + {0} მილი³ + {0} მილი³ + + + {0}ლ + {0}ლ + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} და {1} + {0} და {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + კი:კ + არა:ა + + + + diff --git a/library/Zend/Locale/Data/ka_GE.xml b/library/Zend/Locale/Data/ka_GE.xml new file mode 100755 index 000000000..46f58a76f --- /dev/null +++ b/library/Zend/Locale/Data/ka_GE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kab.xml b/library/Zend/Locale/Data/kab.xml new file mode 100755 index 000000000..f2eef1497 --- /dev/null +++ b/library/Zend/Locale/Data/kab.xml @@ -0,0 +1,763 @@ + + + + + + + + + + + + Takanit + Tamahrict + Taɛrabt + Tabilarusit + Tabulgarit + Tabengalit + Tačikit + Talmant + Tagrikit + Taglizit + Taspenyulit + Tafarisit + Tafransist + Tahwasit + Tahendit + Tahungarit + Tandunisit + Tigbut + Taṭalyanit + Tajapunit + Tajavanit + Taqbaylit + Takemrit + Takurit + Tamalawit + Taburmisit + Tanipalit + Tadučit + Tapunjabit + Tapulunit + Tapurtugalit + Tarumanit + Tarusit + Taruwandit + Taṣumalit + Taswidit + Taṭamulit + Taṭaylundit + Taṭurkit + Tukranit + Turdut + Tabyiṭnamit + Tayurubit + Tacinwat, Tamundarint + Tazulut + + + Undura + Tigeldunin Yedduklen Taɛrabin + Afɣanistan + Untiga d Barbuda + Ungiya + Lalbani + Arminya + Antilles n Tmura-Yessakesren + Ungula + Arjuntin + Samwa Tamarikanit + Ustriya + Ustrali + Aruba + Azrabijan + Busna d Hersek + Barbadus + Bangladac + Belǧik + Burkina Fasu + Bulgari + Baḥrin + Burandi + Binin + Bermuda + Bruney + Bulivi + Brizil + Bahamas + Bhutan + Bustwana + Bilarus + Biliz + Kanada + Tigduda Tagdudant n Kungu + Tigduda n Tefriqt Talemmast + Kungu + Swis + Kuṭ Divwar + Tigzirin n Kuk + Cili + Kamirun + Lacin + Kulumbi + Kusta Rika + Kuba + Tigzirin n yixef azegzaw + Cipr + Čček + Lalman + Ǧibuti + Denmark + Duminik + Tigduda Taduminikit + Lezzayer + Ikwaṭur + Istunya + Maṣr + Iritiria + Spanya + Utyupi + Finlund + Fiji + Tigzirin n Falkland + Mikrunizya + Fransa + Gabun + Tagelda Yedduklen + Grunad + Jiyurji + Ɣana tafransist + Ɣana + Jibraltar + Grunland + Gambya + Ɣinya + Gwadalupi + Ɣinya Tasebgast + Lagris + Gwatimala + Gwam + Ɣinya-Bisaw + Guwana + Hunduras + Kerwasya + Hayti + Hungri + Indunizi + Lirlund + Izrayil + Lhend + Akal Aglizi deg Ugaraw Ahendi + Lɛiraq + Iran + Island + Ṭelyan + Jamyika + Lajurdani + Jappu + Kinya + Kirigistan + Cambudya + Kiribati + Kumur + San Kits d Nivis + Kurya, Ufella + Kurya, Wadda + Kuwayt + Tigzirin n Kamyan + Kazaxistan + Laws + Lubnan + San Lučya + Layctenstan + Sri Lanka + Libirya + Lizuṭu + Liṭwanya + Luksamburg + Latvia + Libya + Lmerruk + Munaku + Muldabi + Madaɣecqer + Tigzirin n Marcal + Masidwan + Mali + Myanmar + Mungulya + Tigzirin n Maryan Ufella + Martinik + Muriṭanya + Munsirat + Malṭ + Muris + Maldib + Malawi + Meksik + Malizya + Muzembiq + Namibya + Kalidunya Tamaynut + Nijer + Tigzirin Tinawfukin + Nijirya + Nikaragwa + Timura-Yessakesren + Nurvij + Nipal + Nuru + Niwi + Ziland Tamaynut + Ɛuman + Panam + Piru + Pulunizi tafransist + Ɣinya Tamaynut Tapaput + Filipin + Pakistan + Pulund + San Pyar d Miklun + Pitkarin + Purtu Riku + Falisṭin d Ɣezza + Purtugal + Palu + Paragway + Qaṭar + Timlilit + Rumani + Rrus + Ruwanda + Suɛudiya Taɛrabt + Tigzirin n Sulumun + Seycel + Sudan + Swid + Singafur + Sant Ilina + Sluvinya + Sluvakya + Sira Lyun + San Marinu + Sinigal + Ṣumal + Surinam + Saw Tumi d Pransip + Salvadur + Surya + Swazilund + Ṭurk d Tegzirin n Kaykus + Čad + Ṭugu + Ṭayland + Tajikistan + Ṭuklu + Tumur Asamar + Ṭurkmanistan + Tunes + Ṭunga + Ṭurk + Ṭrindad d Ṭubagu + Ṭuvalu + Ṭaywan + Ṭanzanya + Ukran + Uɣanda + WDM + Urugway + Uzbaxistan + Awanek n Vatikan + San Vansu d Grunadin + Venzwila + Tigzirin Tiverjiniyin Tigliziyin + W.D. Tigzirin n Virginya + Vyeṭnam + Vanwatu + Wallis d Futuna + Samwa + Lyamen + Mayuṭ + Tafriqt Wadda + Zambya + Zimbabwi + + + + [a b c č d ḍ e ɛ f g ǧ ɣ h ḥ i j k l m n p q r ṛ s ṣ t ṭ u w x y z ẓ] + [o v] + [A B C Č D Ḍ E Ɛ F G Ǧ Ɣ H Ḥ I J K L M N P Q R Ṛ S Ṣ T Ṭ U W X Y Z Ẓ] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + Yen + Fur + Meɣ + Yeb + May + Yun + Yul + Ɣuc + Cte + Tub + Nun + Duǧ + + + Yennayer + Fuṛar + Meɣres + Yebrir + Mayyu + Yunyu + Yulyu + Ɣuct + Ctembeṛ + Tubeṛ + Nunembeṛ + Duǧembeṛ + + + + + Y + F + M + Y + M + Y + Y + Ɣ + C + T + N + D + + + + + + + Yan + San + Kraḍ + Kuẓ + Sam + Sḍis + Say + + + Yanass + Sanass + Kraḍass + Kuẓass + Samass + Sḍisass + Sayass + + + + + Y + S + K + K + S + S + S + + + + + + + Kḍg1 + Kḍg2 + Kḍg3 + Kḍg4 + + + akraḍaggur amenzu + akraḍaggur wis-sin + akraḍaggur wis-kraḍ + akraḍaggur wis-kuẓ + + + + + + + n tufat + n tmeddit + + + + + + send talalit n Ɛisa + seld talalit n Ɛisa + + + snd. T.Ɛ + sld. T.Ɛ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Tallit + + + Aseggas + + + Aggur + + + Ddurt + + + Ass + Iḍelli + Ass-a + Azekka + + + Ussan n ddurt + + + n tufat / n tmeddit + + + Tamert + + + Tamrect + + + Tasint + + + Aseglem asergan + + + + + + , +   + + + + + #,##0.00¤ + + + + + + Adirham n Tgeldunin Taɛrabin Yedduklen + + + Akwanza n Ungula + + + Adular n Lusṭrali + + + Adinar Abaḥrini + + + Afrank Aburandi + + + Apula Abusṭwanan + + + Adular Akanadi + + + Afrank Akunguli + + + Afrank Aswis + + + Ayuwan Renminbi Acinwa + + + Akabuviradinu Askudi + + + Afrank Ajibuti + + + Adinar Azzayri + DA + + + Apund Amaṣri + + + Anakfa Iritiri + + + Abir Utyupi + + + Uru + + + Apund Sterling Aglizi + + + Asidi Aɣani + + + Adalasi Agambi + + + Afrank Aɣini + + + Arupi Ahendi + + + Ayen Ajappuni + + + Aciling Akini + + + Afrank Akamiruni + + + Adular Alibiri + + + Aluṭi Alizuṭi + + + Adinar Alibi + + + Adirham Amerruki + + + Aryari Amalgac + + + Agiya Amuriṭani + + + Arupi Amurisi + + + Akwaca Amalawi + + + Amitikal Amuzembiqi + + + Adular Anamibi + + + Anayra Anijiri + + + Afrank Aruwandi + + + Aryal Asuɛudi + + + Arupi Aseycili + + + Apund Asudani + + + Apund Asant Ilini + + + Alyun + + + Aciling Aṣumali + + + Asw Ṭum d Udubra Amenzay + + + Alilangini + + + Adinar Atunsi + + + Aciling Aṭanẓani + + + Aciling Awgandi + + + Adular WD + + + Afrank BCEA CFA + + + Afrank BCEAO CFA + + + Arand Afriqi n Wadda + + + Akwaca Azambi (1968–2012) + + + Akwaca Azambi + + + Adular Azimbabwi + + + + + + Ih:I + Uhu:U + + + + diff --git a/library/Zend/Locale/Data/kab_DZ.xml b/library/Zend/Locale/Data/kab_DZ.xml new file mode 100755 index 000000000..4b3b3ba94 --- /dev/null +++ b/library/Zend/Locale/Data/kab_DZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kam.xml b/library/Zend/Locale/Data/kam.xml new file mode 100755 index 000000000..9544b62a7 --- /dev/null +++ b/library/Zend/Locale/Data/kam.xml @@ -0,0 +1,763 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikamba + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Mbulundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kananda + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Isiwa sya Cook + Chile + Kameluni + Kyaina + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misili + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Uvalanza + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Isiwa sya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Lwanda + Saudi + Isiwa sya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Ukanda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Nzambia + Nzimbambwe + + + + [a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Mbe + Kel + Ktũ + Kan + Ktn + Tha + Moo + Nya + Knd + Ĩku + Ĩkm + Ĩkl + + + Mwai wa mbee + Mwai wa kelĩ + Mwai wa katatũ + Mwai wa kana + Mwai wa katano + Mwai wa thanthatũ + Mwai wa muonza + Mwai wa nyaanya + Mwai wa kenda + Mwai wa ĩkumi + Mwai wa ĩkumi na ĩmwe + Mwai wa ĩkumi na ilĩ + + + + + M + K + K + K + K + T + M + N + K + Ĩ + Ĩ + Ĩ + + + + + + + Wky + Wkw + Wkl + Wtũ + Wkn + Wtn + Wth + + + Wa kyumwa + Wa kwambĩlĩlya + Wa kelĩ + Wa katatũ + Wa kana + Wa katano + Wa thanthatũ + + + + + Y + W + E + A + A + A + A + + + + + + + L1 + L2 + L3 + L4 + + + Lovo ya mbee + Lovo ya kelĩ + Lovo ya katatũ + Lovo ya kana + + + + + + + Ĩyakwakya + Ĩyawĩoo + + + + + + Mbee wa Yesũ + Ĩtina wa Yesũ + + + MY + IY + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ĩvinda + + + Mwaka + + + Mwai + + + Kyumwa + + + Mũthenya + Ĩyoo + Ũmũnthĩ + Ũnĩ + + + Kyumwanĩ + + + Ĩyakwakya/Ĩyawĩoo + + + Saa + + + Ndatĩka + + + sekondi + + + Kĩsio kya ĩsaa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Ndola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Ndola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Vaundi ya Misili + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Ndalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Silingi ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Ndola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Vaũndi ya Sudani + + + Vaũndi ya Santahelena + + + Leoni + + + Silingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Ndinari ya Tunisia + + + Silingi ya Tanzania + + + Silingi ya Uganda + + + Ndola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Ndola ya Zimbabwe + + + + + + Ĩĩ:Ĩ + Aiee:A + + + + diff --git a/library/Zend/Locale/Data/kam_KE.xml b/library/Zend/Locale/Data/kam_KE.xml new file mode 100755 index 000000000..481ccb0bf --- /dev/null +++ b/library/Zend/Locale/Data/kam_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kde.xml b/library/Zend/Locale/Data/kde.xml new file mode 100755 index 000000000..9f0446e36 --- /dev/null +++ b/library/Zend/Locale/Data/kde.xml @@ -0,0 +1,766 @@ + + + + + + + + + + + + Chakan + Chamhali + Chalabu + Chibelalusi + Chibulgalia + Chibangla + Chichechi + Chidyelumani + Chigilichi + Chiingeleza + Chihispania + Chiajemi + Chifalansa + Chihausa + Chihindi + Chihungali + Chiiongonesia + Chiigbo + Chiitaliano + Chidyapani + Chidyava + Chimakonde + Chikambodia + Chikolea + Chimalesia + Chibulma + Chinepali + Chiholanzi + Chipunjabi + Chipolandi + Chileno + Chilomania + Chilusi + Chinyalwanda + Chisomali + Chiswidi + Chitamil + Chitailandi + Chituluchi + Chiuklania + Chiuldu + Chivietinamu + Chiyoluba + Chichina + Chizulu + + + Andola + Dimiliki dya Vakulungwa va Chalabu + Afuganistani + Antigua na Balbuda + Angwila + Albania + Almenia + Antili za Uholanzi + Angola + Adyentina + Samoa ya Malekani + Austlia + Austlalia + Aluba + Azabadyani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgidi + Buchinafaso + Bulgalia + Bahaleni + Bulundi + Benini + Belmuda + Blunei + Bolivia + Blazili + Bahama + Butani + Botswana + Belalusi + Belize + Kanada + Jamuhuli ya Chidemoklasia ya kuKongo + Jamuhuli ya Afilika ya Paching'ati + Kongo + Uswisi + Kodivaa + Chisiwa cha Cook + Chile + Kameluni + China + Kolombia + Kostalika + Kuba + Kepuvede + Kuplosi + Jamuhuli ya Chechi + Udyerumani + Dyibuti + Denmaki + Dominika + Jamuhuli ya Dominika + Aljelia + Ekwado + Estonia + Misli + Elitilea + Hispania + Uhabeshi + Ufini + Fiji + Chisiwa cha Falkland + Mikilonesia + Ufalansa + Gaboni + Nngalesa + Glenada + Dyodya + Gwiyana ya Ufalansa + Ghana + Diblalta + Glinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugilichi + Gwatemala + Gwam + Ginebisau + Guyana + Hondulasi + Kolasia + Haiti + Hungalia + Indonesia + Ayalandi + Islaeli + India + Lieneo lyaki Nngalesa Nbahali ya Hindi + Ilaki + Uadyemi + Aislandi + Italia + Dyamaika + Yordani + Dyapani + Kenya + Kiligizistani + Kambodia + Kilibati + Komolo + Santakitzi na Nevis + Kolea Kasikazini + Kolea Kusini + Kuwaiti + Chisiwa cha Kemen + Kazachistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sililanka + Libelia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moloko + Monako + Moldova + Bukini + Chisiwa cha Malushal + Masedonia + Mali + Myama + Mongolia + Chisiwa cha Marian cha Kasikazini + Malitiniki + Molitania + Monselati + Malta + Molisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nidyeli + Chisiwa cha Nolufok + Nidyelia + Nikalagwa + Uholanzi + Norwe + Nepali + Naulu + Niue + Nyuzilandi + Omani + Panama + Pelu + Polinesia ya Ufalansa + Papua + Filipino + Pakistani + Polandi + Santapieli na Mikeloni + Pitikeluni + Pwetoliko + Nchingu wa Magalibi wa Mpanda wa kuGaza wa kuPales + Uleno + Palau + Palagwai + Katali + Liyunioni + Lomania + Ulusi + Lwanda + Saudia + Chisiwa cha Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siela Leoni + Samalino + Senegali + Somalia + Sulinamu + Saotome na Prinsipe + Elsavado + Silia + Uswazi + Chisiwa cha Tuluchi na Kaiko + Chadi + Togo + Tailandi + Tadikistani + Tokelau + Timoli ya Mashaliki + Tuluchimenistani + Tunisia + Tonga + Utuluchi + Tilinidad na Tobago + Tuvalu + Taiwani + Tanzania + Uklaini + Uganda + Malekani + Ulugwai + Uzibechistani + Vatikani + Santavisenti na Glenadini + Venezuela + Chisiwa Chivihi cha Wingalesa + Chisiwa Chivihi cha Malekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Maole + Afilika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Des + + + Mwedi Ntandi + Mwedi wa Pili + Mwedi wa Tatu + Mwedi wa Nchechi + Mwedi wa Nnyano + Mwedi wa Nnyano na Umo + Mwedi wa Nnyano na Mivili + Mwedi wa Nnyano na Mitatu + Mwedi wa Nnyano na Nchechi + Mwedi wa Nnyano na Nnyano + Mwedi wa Nnyano na Nnyano na U + Mwedi wa Nnyano na Nnyano na M + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Ll2 + Ll3 + Ll4 + Ll5 + Ll6 + Ll7 + Ll1 + + + Liduva lyapili + Liduva lyatatu + Liduva lyanchechi + Liduva lyannyano + Liduva lyannyano na linji + Liduva lyannyano na mavili + Liduva litandi + + + + + 2 + 3 + 4 + 5 + 6 + 7 + 1 + + + + + + + L1 + L2 + L3 + L4 + + + Lobo 1 + Lobo 2 + Lobo 3 + Lobo 4 + + + + + + + Muhi + Chilo + + + + + + Akanapawa Yesu + Nankuida Yesu + + + AY + NY + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Mahiku + + + Mwaka + + + Mwedi + + + Lijuma + + + Lihiku + Lido + Nelo + Nundu + + + Disiku dya lijuma + + + Muhi/Chilo + + + Saa + + + Dakika + + + Sekunde + + + Npanda wa muda + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme za Chiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Chijapani + + + Shilingi ya Kenya + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Faranga ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Dinari ya Sudani + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + TSh + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Elo:E + Nanga:N + + + + diff --git a/library/Zend/Locale/Data/kde_TZ.xml b/library/Zend/Locale/Data/kde_TZ.xml new file mode 100755 index 000000000..adb9249f6 --- /dev/null +++ b/library/Zend/Locale/Data/kde_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kea.xml b/library/Zend/Locale/Data/kea.xml new file mode 100755 index 000000000..320ff54d5 --- /dev/null +++ b/library/Zend/Locale/Data/kea.xml @@ -0,0 +1,1665 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abkaziu + afrikaner + akan + amariku + arabi + asames + aimara + azerbaijanu + bielorusu + bulgaru + bengali + tibetanu + bosniu + katalãu + txeku + gales + dinamarkes + alemãu + alimãu austriaku + altu alimãu suisu + gregu + ingles + ingles australianu + ingles kanadianu + ingles britanuku + ingles merkanu + sperantu + spanhol + spanhol latinu-merkanu + spanhol europeu + stonianu + basku + persa + finlandes + filipinu + fijianu + faroes + franses + franses kanadianu + franses suisu + frisiu osidental + irlandes + galegu + guarani + alimãu di Suisa + gujarati + auza + avaianu + ebraiku + indi + kroata + aitianu + úngaru + arméniu + indoneziu + ibo + islandes + italianu + japones + javanes + jorjianu + kabuverdianu + kazak + kmer + kanares + kureanu + kaxmira + kurdu + kirgiz + latin + luxemburges + lausianu + lituanes + letãu + malgaxi + maori + masedoniu + malaialam + marati + malaiu + maltes + birmanes + norueges bokmål + nepales + olandes + flamengu + norueges nynorsk + oriya + pandjabi + pulaku + paxto + purtuges + purtuges brazileru + purtuges europeu + kexua + romanxi + rumenu + rusu + kiniaruanda + sanskritu + sindi + singales + slovaku + sloveniu + somali + albanes + sérviu + sundanes + sueku + suaíli + tamil + telugu + tajik + tailandes + tigrinia + turkmenu + tonganes + turku + tatar + uigur + ukranianu + lingua diskonxedu + urdu + uzbeki + vietnamita + uolof + koza + ioruba + xines + xines simplifikadu + xines tradisional + zulu + sem konteudo linguistiku + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundu + Afrika + Merka di Norti + Merka di Sul + Oseania + Afrika Osidental + Merka Sentral + Afrika Oriental + Norti di Afrika + Afrika Sentral + Sul di Afrika + Merkas + Norti di Merka + Karaibas + Azia Oriental + Sul di Azia + Sudesti Aziatiku + Europa di Sul + Australazia + Melanezia + Rejiãu di Mikronezia + Polinezia + Azia + Azia Sentral + Azia Osidental + Europa + Europa Oriental + Europa di Norti + Europa Osidental + Merka Latinu + Ilha di Asensãu + Andora + Emiradus Arabi Unidu + Afeganistãu + Antigua i Barbuda + Angila + Albania + Armenia + Antilhas Olandeza + Angola + Antartika + Arjentina + Samoa Merkanu + Austria + Australia + Aruba + Ilhas Åland + Azerbaijãu + Bosnia-Erzegovina + Barbadus + Bangladexi + Béljika + Burkina Fasu + Bulgaria + Barain + Burundi + Benin + Sãu Bartolomeu + Bermudas + Brunei + Bolivia + Karaibas olandes + Brazil + Baamas + Butãu + Ilha Buve + Botsuana + Belarus + Belizi + Kanadá + Ilhas Kokus + Kongu - Kinxasa + Republika Dimokratika di Kongu + Republika Sentru-Afrikanu + Kongu - Brazavili + Republika di Kongu + Suisa + Kosta di Marfin + Kosta di Marfin (Côte d'Ivoire) + Ilhas Kuk + Xili + Kamarõis + Xina + Kulombia + Ilha Kliperton + Kosta Rika + Kuba + Kabu Verdi + Kurasau + Ilha di Natal + Xipri + Republika Txeka + Alimanha + Diegu Garsia + Djibuti + Dinamarka + Dominika + Repúblika Dominikana + Arjelia + Seuta i Melila + Ekuador + Stonia + Ejitu + Sara Osidental + Iritreia + Spanha + Itiopia + Uniãu Europeia + Finlandia + Fidji + Ilhas Malvinas + Mikronezia + Ilhas Faroe + Fransa + Gabãu + Reinu Unidu + Granada + Jiorjia + Giana Franseza + Gernzi + Gana + Jibraltar + Gronelandia + Gambia + Gine + Guadalupi + Gine Ekuatorial + Gresia + Jeórjia di Sul i Ilhas di Sanduixi di Sul + Guatimala + Guam + Gine-Bisau + Giana + Rejiãu Administrativu Special di Ong Kong + Ong Kong + Ilha Heard i Ilhas McDonald + Onduras + Kroasia + Aiti + Ungria + Kanárias + Indonezia + Irlanda + Israel + Ilha di Man + India + Ilhas Britanika di Indiku + Iraki + Iron + Islandia + Italia + Jersi + Jamaika + Jordania + Japãu + Kenia + Kirgiston + Kambodja + Kiribati + Kamoris + Sãu Kristovãu i Nevis + Koreia di Norti + Koreia di Sul + Kueiti + Ilhas Kaimãu + Kazakistãu + Laus + Libanu + Santa Lúsia + Lixenstain + Sri Lanka + Liberia + Lezotu + Lituania + Luxemburgu + Letonia + Libia + Marokus + Monaku + Moldavia + Montenegru + Sãu Martinhu di Fransa + Madagaskar + Ilhas Marxal + Masidonia + Masidonia (FYROM) + Mali + Mianmar + Mongolia + Rejiãu Administrativu Special di Makau + Makau + Ilhas Marianas di Norti + Martinika + Mauritania + Monserat + Malta + Ilhas Maurisia + Maldivas + Malaui + Mexiku + Malazia + Musambiki + Namibia + Nova Kalidonia + Nijer + Ilhas Norfolk + Nijeria + Nikaragua + Olanda + Noruega + Nepal + Nauru + Niue + Nova Zilandia + Oman + Panama + Peru + Polinezia Franseza + Papua-Nova Gine + Filipinas + Pakistãu + Pulonia + San Piere i Mikelon + Pirkairn + Portu Riku + Palistina + Purtugal + Palau + Paraguai + Katar + Oseania Insular + Runion + Romenia + Servia + Rúsia + Ruanda + Arabia Saudita + Ilhas Salumon + Seixelis + Sudãu + Suesia + Singapura + Santa Ilena + Slovenia + Svalbard i Jan Maien + Slovakia + Sera Lioa + San Marinu + Senegal + Sumalia + Surinami + Sudãu di Sul + Sãu Tume i Prinsipi + El Salvador + Sãu Martinhu di Olanda + Siria + Suazilándia + Tristan da Kunha + Ilhas Turkas i Kaikus + Txadi + Terras Franses di Sul + Togu + Tailandia + Tadjikistãu + Tokelau + Timor Lesti + Turkumenistãu + Tunizia + Tonga + Turkia + Trinidad i Tobagu + Tuvalu + Taiuan + Tanzania + Ukrania + Uganda + Ilhas Minoris Distantis de Stadus Unidus + Stadus Unidos di Merka + Uruguai + Uzbekistãu + Vatikanu + Sãu Bisenti i Granadinas + Vinizuea + Ilhas Virjens Britanikas + Ilhas Virjens Merkanu + Vietnam + Vanuatu + Ualis i Futuna + Samoa + Iemen + Maiote + Afrika di Sul + Zambia + Zimbabui + Rejiãu Diskonxedu + + + Kalendariu Gregorianu + Numerus Arabikus + + + Metriku + Ingles + Merkanu + + + Lingua: {0} + Skrita: {0} + Rejiãu: {0} + + + + [a b d {dj} e f g h i j k l {lh} m n ñ {nh} o p r s t {tx} u v x y z] + [á à ă â å ä ã ā æ c ç é è ĕ ê ë ẽ ē í ì ĭ î ï ĩ ī {n\u0308} ó ò ŏ ô ö õ ø ō œ q {rr} ú ù ŭ û ü ũ ū w ÿ] + [A B D E F G H I J K L M N O P R S T U V X Z] + {0}… + …{0} + {0}…{1} + ? + + + + + + + + + + + + + + EEEE, d 'di' MMMM 'di' y G + + + + + d 'di' MMMM 'di' y G + + + + + d 'di' MMM 'di' y G + + + + + d/M/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd/MM + E, dd/MM + dd/MM + LLL + d MMM + E, d MMM + d 'di' MMMM + E, d 'di' MMMM + mm:ss + mm:ss + y + MM/y + dd/MM/y + E, dd/MM/y + MM/y + MMM 'di' y + d MMM y + E, d 'di' MMM 'di' y + MMMM 'di' y + QQQ y + QQQQ y + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E, dd/MM – E, dd/MM + E, dd/MM – E, dd/MM + + + LLL–LLL + + + d–d MMM + dd/MM – dd/MM + + + E, dd/MM – E, dd/MM + E, dd/MM – E, dd/MM + + + y–y + + + MM/y – MM/y + MM/y – MM/y + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + Jan + Fev + Mar + Abr + Mai + Jun + Jul + Ago + Set + Otu + Nuv + Diz + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Janeru + Fevereru + Marsu + Abril + Maiu + Junhu + Julhu + Agostu + Setenbru + Otubru + Nuvenbru + Dizenbru + + + + + Jan + Fev + Mar + Abr + Mai + Jun + Jul + Ago + Set + Otu + Nuv + Diz + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Janeru + Fevereru + Marsu + Abril + Maiu + Junhu + Julhu + Agostu + Setenbru + Otubru + Nuvenbru + Dizenbru + + + + + + + dum + sig + ter + kua + kin + ses + sab + + + d + s + t + k + k + s + s + + + du + si + te + ku + ki + se + sa + + + dumingu + sigunda-fera + tersa-fera + kuarta-fera + kinta-fera + sesta-fera + sabadu + + + + + dum + sig + ter + kua + kin + ses + sab + + + d + s + t + k + k + s + s + + + du + si + te + ku + ki + se + sa + + + dumingu + sigunda-fera + tersa-fera + kuarta-fera + kinta-fera + sesta-fera + sabadu + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + Primeru Trimestri + Sigundu Trimestri + Terseru Trimestri + Kuartu Trimestri + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + Primeru Trimestri + Sigundu Trimestri + Terseru Trimestri + Kuartu Trimestri + + + + + + + am + pm + + + + + + Antis di Kristu + Dispos di Kristu + + + AK + DK + + + + + + EEEE, d 'di' MMMM 'di' y + + + + + d 'di' MMMM 'di' y + + + + + d 'di' MMM 'di' y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd/MM + E, dd/MM + dd/MM + LLL + d MMM + E, d MMM + d 'di' MMMM + E, d 'di' MMMM + mm:ss + mm:ss + y + MM/y + dd/MM/y + E, dd/MM/y + MM/y + MMM 'di' y + d MMM y + E, d 'di' MMM 'di' y + MMMM 'di' y + QQQ y + QQQQ y + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E, dd/MM – E, dd/MM + E, dd/MM – E, dd/MM + + + LLL–LLL + + + d–d MMM + dd/MM – dd/MM + + + E, dd/MM – E, dd/MM + E, dd/MM – E, dd/MM + + + y–y + + + MM/y – MM/y + MM/y – MM/y + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Era + + + Anu + + di li {0} anu + + + a ten {0} anu + + + + Mes + + di li {0} mes + + + a ten {0} mes + + + + Simana + + di li {0} simana + + + a ten {0} simana + + + + Dia + Onti + Oji + Manha + + di li {0} dia + + + a ten {0} dia + + + + Dia di simana + + + am/pm + + + Ora + + di li {0} ora + + + a ten {0} ora + + + + Minutu + + di li {0} minutu + + + a ten {0} minutu + + + + Sigundu + + di li {0} sigundu + + + a ten {0} sigundu + + + + Ora lokal + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Ora di {0} + {1} ({0}) + + Sidadi Diskonxedu + + + Blank-Sablon + + + + Ora di Afrika Sentral + + + + + Ora di Afrika Oriental + + + + + Ora di Sul di Afrika + + + + + Ora di Afrika Osidental + Ora Padrãu di Afrika Osidental + Ora di Verão di Afrika Osidental + + + + + Ora Sentral + Ora Sentral Padrãu + Ora Sentral di Verãu + + + + + Ora Oriental + Ora Oriental Padrãu + Ora Oriental di Verãu + + + + + Ora di Montanha + Ora di Montanha Padrãu + Ora di Verãu di Montanha + + + + + Ora di Pasifiku + Ora di Pasifiku Padrãu + Ora di Pasifiku di Verãu + + + + + Ora di Atlantiku + Ora Padrãu di Atlantiku + Ora di Verãu di Atlantiku + + + + + Ora di Australia Sentral + Ora Padrãu di Australia Sentral + Ora di Verãu di Australia Sentral + + + + + Ora di Autralia Sentru-Osidental + Ora Padrãu di Australia Sentru-Osidental + Ora di Verãu di Australia Sentru-Osidental + + + + + Ora di Australia Oriental + Ora Padrãu di Australia Oriental + Ora di Verãu di Australia Oriental + + + + + Ora di Australia Osidental + Ora Padrãu di Australia Osidental + Ora di Verãu di Australia Osidental + + + + + Ora di Europa Sentral + Ora Padrãu di Europa Sentral + Ora di Verãu di Europa Sentral + + + + + Ora di Europa Oriental + Ora Padrãu di Europa Oriental + Ora di Verãu di Europa Oriental + + + + + Ora di Europa Osidental + Ora Padrãu di Europa Osidental + Ora di Verãu di Europa Osidental + + + + + + + , + . + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + 0K + 00K + 000K + 0M + 00M + 000M + 0T + 00T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00¤ + + + {0} {1} + + + + Diren di Emiradus Arabi Unidu + + + Kuanza + + + Dola australianu + AU$ + + + Dinar di Barain + + + Franku borundes + + + Rial brazileru + R$ + + + Pula di Botsuana + + + Dola kanadianu + CA$ + + + Franku kongoles + + + Franku suisu + + + Iuan xines + CN¥ + + + #,##0.00 ¤ + Skudu Kabuverdianu + $ + , + + + Franku di Djibuti + + + Kuroa dinamarkeza + + + Dinar arjelinu + + + Libra ejipsiu + + + Nafka di Eritreia + + + Bir etiopi + + + Euro + + + + Libra sterlina britaniku + £ + + + Sedi di Gana + + + Dalasi + + + Sili + + + Dola di Ong Kong + HK$ + + + Rupia indoneziu + + + + + + Rupia indianu + + + + Ieni japones + JP¥ + + + Xelin kenianu + + + Franku di Komoris + + + Won sul-koreanu + + + + Dola liberianu + + + Loti di Lezotu + + + Dinar libiu + + + Diren marokinu + + + Ariari di Madagaskar + + + Ougia + + + Rupia di Maurisias + + + Kuaxa di Malaui + + + Pezu mexikanu + MX$ + + + Metikal + + + Dola namibianu + + + Naira + + + Kuroa norueges + + + NZ$ + + + Zloty polaku + + + Rublu rusu + + + Franku ruandes + + + Rial saudita + + + Rupia di Seixelis + + + Libra sudanes + + + Libra sudanes antigu + + + Kuroa sueku + + + Libra di Santa Ilena + + + Leone di Sera Leoa + + + Xelin somalianu + + + Dobra di Sãu Tume i Prinsipi + + + Lilanjeni + + + Baht tailandes + ฿ + + + Dinar tunizianu + + + Lira turku + + + Dola Novu di Taiwan + NT$ + + + Xelin di Tanzania + + + Xelin ugandensi + + + Dola merkanu + US$ + + + + + + Franku CFA BEAC + FCFA + + + EC$ + + + Franku CFA BCEAO + + + CFPF + + + Mueda diskonxedu + + + Rand sulafrikanu + + + Kuaxa zambianu (1968–2012) + + + Kuaxa zambianu + + + Dola di Zimbabue + + + + + + + {0} dia + + + {0} ora + + + {0} minutu + + + {0} mes + + + {0} sigundu + + + {0} simana + + + {0} anu + + + + + + {0}, {1} + {0}, {1} + {0} y {1} + {0} y {1} + + + + + Sin:S + Nãu:N + + + + diff --git a/library/Zend/Locale/Data/kea_CV.xml b/library/Zend/Locale/Data/kea_CV.xml new file mode 100755 index 000000000..6b41eb9ce --- /dev/null +++ b/library/Zend/Locale/Data/kea_CV.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/khq.xml b/library/Zend/Locale/Data/khq.xml new file mode 100755 index 000000000..d18b67917 --- /dev/null +++ b/library/Zend/Locale/Data/khq.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Akan senni + Amhaarik senni + Laaraw senni + Belaruus senni + Bulagaari senni + Bengali senni + Cek senni + Almaŋ senni + Grek senni + Inglisi senni + Espaaɲe senni + Farsi senni + Fransee senni + Hawsance senni + Induu senni + Hungaari senni + Indoneesi senni + Iboo senni + Itaali senni + Japonee senni + Javanee senni + Koyra ciini + Kmeer senni, Game here + Koree senni + Maleezi senni + Burme senni + Neepal senni + Holandee senni + Punjaabi sennii + Polonee senni + Portugee senni + Rumaani senni + Ruusi senni + Rwanda senni + Somaali senni + Suweede senni + Tamil senni + Taailandu senni + Turku senni + Ukreen senni + Urdu senni + Vietnaam senni + Yorbance senni + Sinuwa senni, Mandareŋ + Julu senni + + + Andoora + Laaraw Imaarawey Margantey + Afgaanistan + Antigua nda Barbuuda + Angiiya + Albaani + Armeeni + Hollandu Antiiyey Laboo + Angoola + Argentine + Ameriki Samoa + Otriši + Ostraali + Aruuba + Azerbaayijaŋ + Bosni nda Herzegovine + Barbaados + Bangladeši + Belgiiki + Burkina faso + Bulgaari + Bahareen + Burundi + Beniŋ + Bermuda + Bruunee + Boolivi + Breezil + Bahamas + Buutaŋ + Botswaana + Biloriši + Beliizi + Kanaada + Kongoo demookaratiki laboo + Centraafriki koyra + Kongoo + Swisu + Kudwar + Kuuk gungey + Šiili + Kameruun + Šiin + Kolombi + Kosta rika + Kuuba + Kapuver gungey + Šiipur + Cek labo + Almaaɲe + Jibuuti + Danemark + Doominiki + Doominiki laboo + Alžeeri + Ekwateer + Estooni + Misra + Eritree + Espaaɲe + Ecioopi + Finlandu + Fiji + Kalkan gungey + Mikronezi + Faransi + Gaabon + Albaasalaama Marganta + Grenaada + Gorgi + Faransi Guyaan + Gaana + Gibraltar + Grinland + Gambi + Gine + Gwadeluup + Ginee Ekwatorial + Greece + Gwatemaala + Guam + Gine-Bisso + Guyaane + Honduras + Krwaasi + Haiti + Hungaari + Indoneezi + Irlandu + Israyel + Indu laboo + Britiši Indu teekoo laama + Iraak + Iraan + Ayceland + Itaali + Jamaayik + Urdun + Jaapoŋ + Keeniya + Kyrgyzstan + Kamboogi + Kiribaati + Komoor + Seŋ Kitts nda Nevis + Kooree, Gurma + Kooree, Hawsa + Kuweet + Kayman gungey + Kaazakstan + Laawos + Lubnaan + Seŋ Lussia + Liechtenstein + Srilanka + Liberia + Leesoto + Lituaani + Luxembourg + Letooni + Liibi + Maarok + Monako + Moldovi + Madagascar + Maršal gungey + Maacedooni + Maali + Maynamar + Mongooli + Mariana Gurma Gungey + Martiniiki + Mooritaani + Montserrat + Malta + Mooris gungey + Maldiivu + Malaawi + Mexiki + Maleezi + Mozambik + Naamibi + Kaaledooni Taagaa + Nižer + Norfolk Gungoo + Naajiriia + Nikaragwa + Hollandu + Norveej + Neepal + Nauru + Niue + Zeelandu Taaga + Omaan + Panama + Peeru + Faransi Polineezi + Papua Ginee Taaga + Filipine + Paakistan + Poloɲe + Seŋ Piyer nda Mikelon + Pitikarin + Porto Riko + Palestine Dangay nda Gaaza + Portugaal + Palu + Paraguwey + Kataar + Reenioŋ + Rumaani + Iriši laboo + Rwanda + Saudiya + Solomon Gungey + Seešel + Suudaŋ + Sweede + Singapur + Seŋ Helena + Sloveeni + Slovaaki + Seera Leon + San Marino + Senegal + Somaali + Surinaam + Sao Tome nda Prinsipe + Salvador laboo + Suuria + Swaziland + Turk nda Kayikos Gungey + Caadu + Togo + Taayiland + Taažikistan + Tokelau + Timoor hawsa + Turkmenistaŋ + Tunizi + Tonga + Turki + Trinidad nda Tobaago + Tuvalu + Taayiwan + Tanzaani + Ukreen + Uganda + Ameriki Laabu Margantey + Uruguwey + Uzbeekistan + Vaatikan Laama + Seŋvinsaŋ nda Grenadine + Veneezuyeela + Britiši Virgin gungey + Ameerik Virgin Gungey + Vietnaam + Vanautu + Wallis nda Futuna + Samoa + Yaman + Mayooti + Hawsa Afriki Laboo + Zambi + Zimbabwe + + + + [a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž] + [v] + [A à B C D E Ẽ F G H I J K L M N Ɲ Ŋ O Õ P Q R S Š T U W X Y Z Ž] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + Žan + Fee + Mar + Awi + Me + Žuw + Žuy + Ut + Sek + Okt + Noo + Dee + + + Žanwiye + Feewiriye + Marsi + Awiril + Me + Žuweŋ + Žuyye + Ut + Sektanbur + Oktoobur + Noowanbur + Deesanbur + + + + + Ž + F + M + A + M + Ž + Ž + U + S + O + N + D + + + + + + + Alh + Ati + Ata + Ala + Alm + Alj + Ass + + + Alhadi + Atini + Atalata + Alarba + Alhamiisa + Aljuma + Assabdu + + + + + H + T + T + L + L + L + S + + + + + + + A1 + A2 + A3 + A4 + + + Arrubu 1 + Arrubu 2 + Arrubu 3 + Arrubu 4 + + + + + + + Adduha + Aluula + + + + + + Isaa jine + Isaa jamanoo + + + IJ + IZ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Zaman + + + Jiiri + + + Handu + + + Hebu + + + Jaari + Bi + Hõo + Suba + + + Adduha wala Aluula + + + Guuru + + + Miniti + + + Miti + + + Leerazuu + + + + + +   + + + + + #,##0.00¤ + + + + + + Laaraw Immaara Margantey Dirham + + + Angoola Kwanza + + + Ostraali Dollar + + + Bahareen Dinar + + + Burundi Fraŋ + + + Botswaana Pund + + + Kanaada Dollar + + + Kongo Fraŋ + + + Swisu Fraŋ + + + Sinwa Yuan Renminbi + + + Kapuver Escudo + + + Jibuuti Fraŋ + + + Alžeeri Dinar + + + Misra Pund + + + Eritree Nafka + + + Ecioopi Birr + + + Eero + + + Britin Pund + + + Gaana Šiidi + + + Gambi Dalasi + + + Ginee Fraŋ + + + Indu Rupii + + + Jaapoŋ Yen + + + Keeniya Šiiliŋ + + + Komoor Fraŋ + + + Liberia Dollar + + + Leezoto Loti + + + Liibi Dinar + + + Maarok Dirham + + + Malgaaši Fraŋ + + + Mooritaani Ugiya + + + Mooris Rupii + + + Malaawi Kwaca + + + Mozambik Metikal + + + Naamibi Dollar + + + Naajiriya Neera + + + Rwanda Fraŋ + + + Saudiya Riyal + + + Seešel Rupii + + + Suudaŋ Dinar + + + Suudaŋ Pund + + + Seŋ Helena Fraŋ + + + Leeon + + + Somaali Šiiliŋ + + + Sao Tome nda Prinsipe Dobra + + + Lilangeni + + + Tunizi Dinar + + + Tanzaani Šiiliŋ + + + Uganda Šiiliŋ + + + Ameriki Dollar + + + CFA Fraŋ (BEAC) + + + CFA Fraŋ (BCEAO) + + + Hawasa Afriki Rand + + + Zambi Kwaca (1968–2012) + + + Zambi Kwaca + + + Zimbabwe Dollar + + + + + + Ayyo:A + Kala:K + + + + diff --git a/library/Zend/Locale/Data/khq_ML.xml b/library/Zend/Locale/Data/khq_ML.xml new file mode 100755 index 000000000..f36882e83 --- /dev/null +++ b/library/Zend/Locale/Data/khq_ML.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ki.xml b/library/Zend/Locale/Data/ki.xml new file mode 100755 index 000000000..ddc852f30 --- /dev/null +++ b/library/Zend/Locale/Data/ki.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kĩarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kĩnjeremani + Kigiriki + Gĩthungũ + Kihispania + Kiajemi + Kĩbaranja + Kihausa + Kĩhĩndĩ + Kihungari + Kiindonesia + Kiigbo + Kĩtaliano + Kĩnjabani + Kijava + Gikuyu + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kĩracia + Kinyarwanda + Kĩcumarĩ + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kĩcaina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Mburundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + Caina + Kolombia + Kostarika + Kiumba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Njeremani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ubaranja + Gaboni + Ngeretha + Grenada + Jojia + Gwiyana ya Ufaransa + Ngana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Njorondani + Njabani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namimbia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nainjeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somaria + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Amerika + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e g h i ĩ j k m n o r t u ũ w y] + [f l p q s v x z] + [A B C D E G H I J K M N O R T U W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + JEN + WKR + WGT + WKN + WTN + WTD + WMJ + WNN + WKD + WIK + WMW + DIT + + + Njenuarĩ + Mwere wa kerĩ + Mwere wa gatatũ + Mwere wa kana + Mwere wa gatano + Mwere wa gatandatũ + Mwere wa mũgwanja + Mwere wa kanana + Mwere wa kenda + Mwere wa ikũmi + Mwere wa ikũmi na ũmwe + Ndithemba + + + + + J + K + G + K + G + G + M + K + K + I + I + D + + + + + + + KMA + NTT + NMN + NMT + ART + NMA + NMM + + + Kiumia + Njumatatũ + Njumaine + Njumatana + Aramithi + Njumaa + Njumamothi + + + + + K + N + N + N + A + N + N + + + + + + + R1 + R2 + R3 + R4 + + + Robo ya mbere + Robo ya kerĩ + Robo ya gatatũ + Robo ya kana + + + + + + + Kiroko + Hwaĩ-inĩ + + + + + + Mbere ya Kristo + Thutha wa Kristo + + + MK + TK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Kĩhinda + + + Mwaka + + + Mweri + + + Kiumia + + + Mũthenya + Ira + Ũmũthĩ + Rũciũ + + + Mũthenya kiumia-inĩ + + + Ithaa + + + Ndagĩka + + + Sekunde + + + Mũcooro wa mathaa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Ndora ya Kananda + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Mbauini cia Ngeretha + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rubia rwa India + + + Sarafu ya Kijapani + + + Ciringi ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + ciringi cia cumarĩ + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + ciringi cia Tanizania + + + ciringi cia Ũganda + + + Ndora cia Amerika + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Ĩĩ:Ĩ + Ca:C + + + + diff --git a/library/Zend/Locale/Data/ki_KE.xml b/library/Zend/Locale/Data/ki_KE.xml new file mode 100755 index 000000000..d5f6db222 --- /dev/null +++ b/library/Zend/Locale/Data/ki_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kk.xml b/library/Zend/Locale/Data/kk.xml new file mode 100755 index 000000000..a22260a23 --- /dev/null +++ b/library/Zend/Locale/Data/kk.xml @@ -0,0 +1,4875 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + абхаз + африкаанс + амхар + араб + қазіргі стандартты араб тілі + ассам + Аймара + әзірбайжан + беларус + болгар + бенгал + тибет тілі + брит + босния + каталан + чех + валлий + дат + неміс тілі + австриялық неміс тілі + швейцариялық ұлы неміс тілі + Мальдив + дзонг-кэ + эфик + грек + ағылшын тілі + австралиялық ағылшын тілі + канадалық ағылшын тілі + британиялық ағылшын тілі + ағылшын тілі (Біріккен Корольдік) + американдық ағылшын тілі + ағылшын тілі (US) + эсперанто + испан тілі + латын американдық испан тілі + ибериялық испан тілі + мексикалық испан тілі + эстон + баск + парсы + фин + филиппин + фиджи + фарер + француз тілі + канадалық француз тілі + швейцариялық француз тілі + батыс фриз + ирланд + Солтүстік Шотландия + гали + гуарани + швейцариялық неміс тілі + гуджарати + хауса + гавай + иврит + хинди + хорват + гаитян + венгер + армян + интерлингва + индонезия + интерлингве + игбо + исланд + итальян тілі + жапон тілі + ява + грузин + қазақ тілі + кхмер + каннада + кәріс + кашмир + күрд + қырғыз + латын + люксембург + лингала + лаос + литва + латыш + малагаси + маори + македон + малайялам + моңғол + маратхи + малай + мальта + бирман + норвегиялық букмол + Солтүстік ндебел + непал + голланд + флемиш + норвегиялық нинорск + норвег + Солтүстік сотхо + ньянджа + окситан + ория + осетин + панджаб + поляк + пушту + португал тілі + бразилиялық португал тілі + еуропалық португал тілі + кечуа + романш + рунди + румын + орыс тілі + киньяруанда + санскрит + якут + синдхи + Солтүстік саам + санго + сербхорват + сингал + словак + словен + сомали + албан + серб + сесото + судан + швед + суахили + тамил + телугу + тәжік + тай + тигринья + түрікмен + клингон + тонган + түрік + татар + тви + ұйғыр + украин + белгісіз тіл + урду + өзбек + вьетнам + волоф + ксоза + идиш + йоруба + марокколық стандартты тамазигхт + қытай тілі + қарапайым қытай тілі + дәстүрлік қытай тілі + зулу + тілдік мазмұны жоқ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Әлем + Африка + Солтүстік Америка + Оңтүстік Америка + Океания + Батыс Африка + Орталық Америка + Шығыс Африка + Солтүстік Африка + Орталық Африка + Оңтүстік Африка + Америкалар + Американың солтүстігі + Кариб + Шығыс Азия + Оңтүстік Азия + Оңтүстік-шығыс Азия + Оңтүстік Еуропа + Австралазия + Меланезия + Микронезия регионы + Полинезия + Азия + Орталық Азия + Батыс Азия + Еуропа + Шығыс Еуропа + Солтүстік Еуропа + Батыс Еуропа + Латын Америкасы + Ғибадат аралы + Андорра + Біріккен Араб Эмираттары + Ауғанстан + Антигуа мен Барбуда + Ангилья + Албания + Армения + Ангола + Антарктика + Аргентина + Американ Самоасы + Австрия + Австралия + Аруба + Аланд аралдары + Әзербайжан + Босния және Герцеговина + Барбадос + Бангладеш + Бельгия + Буркина-Фасо + Болгария + Бахрейн + Бурунди + Бенин + Сен-Бартелеми + Бермуд аралдары + Бруней + Боливия + Кариб Нидерландысы + Бразилия + Багам аралдары + Бутан + Буве аралы + Ботсвана + Беларусь + Белиз + Канада + Кокос аралдары + Конго + Конго Демократиялық Республикасы + Орталық Африка Республикасы + Конго Республикасы + Швейцария + Кот-д’Ивуар + Піл сүйегі жағалауы Республикасы + Кук аралдары + Чили + Камерун + Қытай + Колумбия + Клиппертон аралы + Коста-Рика + Куба + Кабо-Верде + Кюрасао + Кристмас аралы + Кипр + Чех Республикасы + Алмания + Диего-Гарсия + Джибути + Дания + Доминика + Доминикан Республикасы + Алжир + Сеута мен Мелилья + Эквадор + Эстония + Мысыр + Батыс Сахара + Эритрея + Испания + Эфиопия + Еуропалық Одақ + Финляндия + Фиджи + Фолкленд аралдары + Фолкленд аралдары (Мальвин аралдары) + Микронезия + Фарер аралдары + Франция + Габон + Ұлыбритания + Ұлыбритания + Гренада + Грузия + Француз Гвианасы + Гернси + Гана + Гибралтар + Гренландия + Гамбия + Гвинея + Гваделупа + Экваторлық Гвинея + Грекия + Оңтүстік Георгия және Оңтүстік Сандвичев аралы + Гватемала + Гуам + Гвинея-Бисау + Гайана + Қытай Халық Республикасының Гонг-Конг арнайы әкімшілік ауданы + Гонконг + Херд аралы мен Макдональд аралы + Гондурас + Хорватия + Гаити + Венгрия + Канар аралдары + Индонезия + Ирландия + Израиль + Мэн аралы + Индия + Үнді мұхитындағы Британ аймағы + Ирак + Иран + Исландия + Италия + Джерси + Ямайка + Иордания + Жапония + Кения + Қырғызстан + Камбоджа + Кирибати + Комор + Сент-Китс және Невис + Оңтүстік Корея + Солтүстік Корея + Кувейт + Кайман аралдары + Қазақстан + Лаос + Лебанон + Сент-Люсия + Лихтенштейн + Шри-Ланка + Либерия + Лесото + Литва + Люксембург + Латвия + Либия + Морокко + Монако + Молдова + Черногория + Сен-Мартен + Мадагаскар + Маршалл аралдары + Македония + Македония Республикасы + Мали + Мьянма (Бирма) + Моңғолия + Қытай Халық Республикасының Макао арнайы әкімшілік ауданы + Макао + Солтүстік Мариан аралдары + Мартиника + Мавритания + Монтсеррат + Мальта + Маврикий + Мальдив Республикасы + Малави + Мексика + Малайзия + Мозамбик + Намибия + Жаңа Каледония + Нигер + Норфолк аралы + Нигерия + Никарагуа + Голландия + Норвегия + Непал + Науру + Ниуэ + Жаңа Зеландия + Оман + Панама + Перу + Француз Полинезиясы + Папуа — Жаңа Гвинея + Филиппиндер + Пәкістан + Польша + Сен-Пьер және Микелон + Питкэрн аралдары + Пуэрто-Рико + Палестина аймақтары + Палестина + Португалия + Палау + Парагвай + Катар + Алыс Океания + Реюньон + Румыния + Сербия + Ресей + Руанда + Сауд Арабиясы + Соломон аралдары + Сейшель аралдары + Судан + Швеция + Сингапур + Әулие Елена аралы + Словения + Шпицберген мен Ян-Майен + Словакия + Сьерра-Леоне + Сан-Марино + Сенегал + Сомали + Суринам + Оңтүстік Судан + Сан-Томе мен Принсипи + Сальвадор + Синт-Мартен + Сирия + Свазиленд + Тристан-да-Кунья + Туркс пен Кайкос + Чад + Францияның солтүстік аймағы + Того + Тайланд + Тәжікстан + Токелау + Тимор-Лесте + Шығыс Тимор + Түрікменстан + Тунис + Тонга + Түркия + Тринидад пен Тобаго + Тувалу + Тайвань + Танзания + Украина + Уганда + АҚШ-тың ішкі кіші аралдары + АҚШ + АҚШ + Уругвай + Өзбекстан + Ватикан + Сент-Винсент және Гренадиндер + Венесуэла + Британдық Виргин аралдары + АҚШ-тың Виргин аралдары + Вьетнам + Вануату + Уоллис пен Футуна + Самоа + Косово + Йемен + Майотта + Оңтүстік Африка республикасы + Замбия + Зимбабве + Белгісіз аймақ + + + Шығыс-армян + Батыс-армян + Сахо + Уейд-Джайлс жүйесі + + + Күнтізбе + Салыстыру + Валюта + Сандар + + + Үнді-араб сандары + Үнді-араб сандарының кеңейтілген жүйесі + Армян сандары + Төменгі регистрдегі армян сандары + Бенгал сандары + Қытай күнтізбесі + Деванагари сандары + Әдепкі уникод сұрыптау реті + Эфиопия сандары + Сандардың толық пішімі + Грузин сандары + Грегориандық күнтізбе + Грек сандары + Төменгі регистрдегі грек сандары + Гуджарати сандары + Гурмукхи сандары + Қытай ондық сандары + Қарапайым қытай сандары + Қаржы саласындағы қарапайым қытай сандары + Дәстүрлі қытай сандары + Қаржы саласындағы дәстүрлі қытай сандары + Иврит сандары + Үндістанның ұлттық күнтізбесі + Ислам күнтізбесі + Ислам азаматтық күнтізбесі + Жапон күнтізбесі + Жапон сандары + Қаржы саласындағы жапаон сандары + Кхмер сандары + Каннада сандары + Лаос сандары + Батыс сандары + Малаялам + Мьянма сандары + Ория сандары + Парсы күнтізбесі + Рим сандары + Төменгі регистрдегі рим сандары + Жалпы мақсаттағы іздеу + Стандартты сұрыптау реті + Дәстүрлі тамил сандары + Тамил сандары + Телугу сандары + Тай сандары + Тибет сандары + + + метрикалық жүйе + ҰБ + АҚШ + + + Тіл: {0} + Жазылуы: {0} + Аймақ: {0} + + + + [а ә б в г ғ д е ё ж з и й к қ л м н ң о ө п р с т у ұ ү ф х һ ц ч ш щ ъ ы і ь э ю я] + [] + [А Ә Б В Г Ғ Д Е Ё Ж З И Й К Қ Л М Н Ң О Ө П Р С Т У Ұ Ү Ф Х Һ Ц Ч Ш Щ Ъ Ы І Ь Э Ю Я] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” « » ( ) \[ \] \{ \} § @ * / \& #] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + EEEE, d MMMM y 'ж'. G + + + + + d MMMM y 'ж'. G + + + + + dd.MM.y G + + + + + dd.MM.y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + G y + G y MMM + G y MMM d + G y MMM d, E + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + G y + G y + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + MMM-MMM y 'ж'. G + MMM y 'ж'. - MMM y 'ж'. G + + + d-d MMM y 'ж'. G + d MMM - d MMM y 'ж'. G + d MMM y 'ж'. - d MMM y 'ж'. G + + + E, d - E, d MMM y 'ж'. G + E, d MMM - E, d MMM y 'ж'. G + E, d MMM y 'ж'. - E, d MMM y 'ж'. G + + + MMMM - MMMM y G + MMMM y - MMMM y G + + + + + + + + + қаң. + ақп. + нау. + сәу. + мам. + мау. + шіл. + там. + қыр. + қаз. + қар. + желт. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + қаңтар + ақпан + наурыз + сәуір + мамыр + маусым + шілде + тамыз + қыркүйек + қазан + қараша + желтоқсан + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + жс. + дс. + сс. + ср. + бс. + жм. + сб. + + + Ж + Д + С + С + Б + Ж + С + + + жексенбі + дүйсенбі + сейсенбі + сәрсенбі + бейсенбі + жұма + сенбі + + + + + Ж + Д + С + С + Б + Ж + С + + + + + + + 1-тоқсан + 2-тоқсан + 3-тоқсан + 4-тоқсан + + + 1 + 2 + 3 + 4 + + + 1-інші тоқсан + 2-інші тоқсан + 3-інші тоқсан + 4-інші тоқсан + + + + + 1-тоқсан + 2-тоқсан + 3-тоқсан + 4-тоқсан + + + 1 + 2 + 3 + 4 + + + 1-інші тоқсан + 2-інші тоқсан + 3-інші тоқсан + 4-інші тоқсан + + + + + + + түске дейін + түстен кейін + + + + + + б.з.д. + б.з. + + + + + + EEEE, d MMMM y 'ж'. + + + + + d MMMM y 'ж'. + + + + + dd.MM.y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd-MM + E, dd-MM + LLL + d MMM + E, d MMM + mm:ss + y + MM-y + dd-MM-y + E, dd-MM-y + MMM y + d MMM y + E, d MMM y + y QQQ + y QQQQ + + + {0} {1} + + + {0} - {1} + + d-d + + + h a – h a + h-h a + + + HH-HH + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a – h a v + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y 'ж'. + MMM y 'ж'. - MMM y 'ж'. + + + d-d MMM y 'ж'. + d MMM - d MMM y 'ж'. + d MMM y 'ж'. - d MMM y 'ж'. + + + E, d - E, d MMM y 'ж'. + E, d MMM - E, d MMM y 'ж'. + E, d MMM y 'ж'. - E, d MMM y 'ж'. + + + MMMM - MMMM y + MMMM y - MMMM y + + + + + + + + ғасыр + + + жыл + былтырғы жыл + биылғы жыл + келесі жыл + + {0} жылдан кейін + {0} жылдан кейін + + + {0} жыл бұрын + {0} жыл бұрын + + + + ай + өткен ай + осы ай + келесі ай + + {0} айдан кейін + {0} айдан кейін + + + {0} ай бұрын + {0} ай бұрын + + + + апта + өткен апта + осы апта + келесі апта + + {0} аптадан кейін + {0} аптадан кейін + + + {0} апта бұрын + {0} апта бұрын + + + + күн + алдыңғы күні + кеше + бүгін + ертең + арғы күні + + {0} күннен кейін + {0} күннен кейін + + + {0} күн бұрын + {0} күн бұрын + + + + апта күні + + + өткен жексенбі + осы жексенбі + келесі жексенбі + + + өткен дүйсенбі + осы дүйсенбі + келесі дүйсенбі + + + өткен сейсенбі + осы сейсенбі + келесі сейсенбі + + + өткен сәрсенбі + осы сәрсенбі + келесі сәрсенбі + + + өткен бейсенбі + осы бейсенбі + келесі бейсенбі + + + өткен жұма + осы жұма + келесі жұма + + + өткен сенбі + осы сенбі + келесі сенбі + + + түске дейін/түстен кейін + + + сағат + + {0} сағаттан кейін + {0} сағаттан кейін + + + {0} сағат бұрын + {0} сағат бұрын + + + + минут + + {0} минуттан кейін + {0} минуттан кейін + + + {0} минут бұрын + {0} минут бұрын + + + + секунд + қазір + + {0} секундтан кейін + {0} секундтан кейін + + + {0} секунд бұрын + {0} секунд бұрын + + + + уақыт белдеуі + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} уақыты + {0} күндізгі уақыты + {0} стандартты уақыты + {1} ({0}) + + Белгісіз + + + Андора + + + Дубай + + + Кабул + + + Антгуа + + + Ангилиа + + + Тирана + + + Ереван + + + Луанда + + + Ротера + + + Палмер + + + Сева + + + Моусон + + + Дэйвис + + + Восток + + + Кейси + + + Дюмон-д'Юрвиль + + + Мак Мердо + + + Рио Галлегос + + + Мендоза + + + Сан-Хуан + + + Ушуаиа + + + Ла Риоха + + + Сан Луис + + + Катамарка + + + Салта + + + Жужуй + + + Тукуман + + + Кордоба + + + Буэнос Айрес + + + Паго-Паго + + + Вена + + + Перт + + + Юкла + + + Дарвин + + + Аделаида + + + Брокен Хилл + + + Керри + + + Мельбурн + + + Хобарт + + + Линдеман + + + Сидней + + + Брисбен + + + Маккуори + + + Лорд Хау, арал + + + Аруба + + + Мариехамн + + + Баку + + + Сараево + + + Барбадос + + + Дакка + + + Брюссель + + + Уадагуду + + + София + + + Бахрейн + + + Бужумбура + + + Порто-Ново + + + Сен-Бартелеми + + + Бермуда + + + Бруней + + + Ла-Пас + + + Кралендейк + + + Эйрунепе + + + Риу Бранку + + + Порту-Велью + + + Бао Виста + + + Манаус + + + Куяба + + + Сантарем + + + Кампо Гранде + + + Белем + + + Арагуаина + + + Сан Паулу + + + Баия + + + Форталеза + + + Масейо + + + Ресифи + + + Норонха + + + Нассау + + + Тимбу + + + Габороне + + + Минск + + + Белиз + + + Досон + + + Уайтхорс + + + Инувик + + + Ванкувер + + + Досон Крик + + + Крестон + + + Йеллоунайф + + + Эдмонтон + + + Свифт-Карент + + + Кембридж Бей + + + Регина + + + Виннипег + + + Резолют + + + Рейни-Ривер + + + Ранкин-Инлет + + + Корал Харбор + + + Тандер-Бей + + + Нипигон + + + Торонто + + + Икалуит + + + Пангниртанг + + + Монктон + + + Галифакс + + + Гус-Бей + + + Глейс-Бей + + + Бланк Саблон + + + Сент-Джонс + + + Кокос аралдары + + + Киншаса + + + Лубумбаши + + + Банги + + + Браззавил + + + Цюрих + + + Абиджан + + + Раротонга + + + Пасха арала + + + Сантьяго + + + Дуала + + + Қашқар + + + Үрімші + + + Чунцин + + + Шанхай + + + Харбин + + + Богота + + + Коста-Рика + + + Гавана + + + Кабо-Верде + + + Курасао + + + Кристмас аралдары + + + Никосиа + + + Прага + + + Бюзинген + + + Берлин + + + Джибути + + + Копенгаген + + + Доминика + + + Санто Доминго + + + Алжир + + + Галапагос + + + Гуаякиль + + + Таллин + + + Каир + + + Эл-Аюн + + + Асмера + + + Канар аралдары + + + Сеута + + + Мадрид + + + Аддис Абеба + + + Хелсинки + + + Фиджи + + + Стенли + + + Трук + + + Понапе + + + Косрае + + + Фарер аралдары + + + Париж + + + Либревил + + + + Ұлыбританиялық жазғы уақыт + + Лондон + + + Гренада + + + Тбилиси + + + Кайенна + + + Гернси + + + Аккра + + + Гибралтар + + + Туле + + + Нуук + + + Скорсбиссун + + + Денмарксхавн + + + Банжул + + + Конакри + + + Гваделупа + + + Малабо + + + Афина + + + Оңтүстік Джорджия + + + Гватемала + + + Гуам + + + Бисау + + + Гайана + + + Гонконг + + + Тегусигальпа + + + Загреб + + + Порт-о-Пренс + + + Будапешт + + + Жакарта + + + Понтианак + + + Макассар + + + Жайпур + + + + Ирландиаялық жазғы уақыт + + Дублин + + + Иерусалим + + + Мэн, арал + + + Колката + + + Чагос + + + Бағдат + + + Тегеран + + + Рейкьявик + + + Рим + + + Джерси + + + Ямайка + + + Амман + + + Токио + + + Найроби + + + Бішкек + + + Пномпен + + + Эндербери + + + Киритимати + + + Тарава + + + Коморо + + + Сент Китс + + + Пхеньян + + + Сеул + + + Кувейт + + + Кайман аралдары + + + Ақтау + + + Орал + + + Ақтөбе + + + Қызылорда + + + Алматы + + + Вьентьян + + + Бейрут + + + Сент-Люсия + + + Вадуц + + + Коломбо + + + Монравия + + + Масеру + + + Вильнус + + + Люксембург + + + Рига + + + Триполи + + + Кассабланка + + + Монако + + + Кишинев + + + Подгорица + + + Мариго + + + Антананариво + + + Кваджалейн + + + Маджуро + + + Скопье + + + Бамако + + + Рангун + + + Ховд + + + Улан-Батор + + + Чойбалсан + + + Макао + + + Сайпан + + + Мартиника + + + Нуакшот + + + Монсеррат + + + Мальта + + + Маврикий + + + Мальдив + + + Блантаир + + + Тихуана + + + Санта-Изабел + + + Эрмосилло + + + Мазалтан + + + Чиуауа + + + Баия-де-Бандерас + + + Охинага + + + Монтеррей + + + Мехико + + + Матаморос + + + Мерида + + + Канкун + + + Куала-Лумпур + + + Кучинг + + + Мапуту + + + Виндхук + + + Нумеа + + + Ниамей + + + Норфолк + + + Лагос + + + Манагуа + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуэ + + + Чатем + + + Окленд + + + Маскат + + + Панама + + + Лима + + + Таити + + + Маркиз аралдары + + + Гамбье + + + Порт Морсби + + + Манила + + + Карачи + + + Варшава + + + Микелон + + + Питкерн + + + Пуэрто-Рико + + + Газа + + + Хеврон + + + Азор аралдары + + + Мадейра + + + Лиссабон + + + Палау + + + Асунсион + + + Катар + + + Реюньон + + + Бухарест + + + Белград + + + Калининград + + + Мәскеу + + + Волгоград + + + Самара + + + Екатеринбург + + + Омбы + + + Новосібір + + + Новокузнецк + + + Красноярск + + + Иркутск + + + Якутск + + + Владивосток + + + Хандыга + + + Сахалин + + + Усть-Нера + + + Магадан + + + Камчатка + + + Анадыр + + + Кигали + + + Эр-Рияд + + + Гвадалканал + + + Маэ + + + Хартум + + + Стокгольм + + + Сингапур + + + Әулие Елена аралы + + + Любляна + + + Лонгйир + + + Братислава + + + Фритаун + + + Сан-Марино + + + Дакар + + + Могадишо + + + Парамарибо + + + Джуба + + + Сан-Томе + + + Сальвадор + + + Лоуэр-Принсес-Куортер + + + Дамаск + + + Мбабане + + + Гранд Турк + + + Нджамена + + + Кергелен + + + Ломе + + + Бангкок + + + Душанбе + + + Факаофо + + + Дили + + + Азхабат + + + Тунис + + + Тонгатапу + + + Стамбул + + + Порт-оф-Спейн + + + Фунафути + + + Тайбэй + + + Дар-эс-Салам + + + Ужгород + + + Киев + + + Симферополь + + + Запорожье + + + Кампала + + + Мидуэй + + + Джонстон + + + Уэйк + + + Адак + + + Ном + + + Гонолулу + + + Анкоридж + + + Якутат + + + Ситка + + + Джуно + + + Метлакатла + + + Лос-Анжелес + + + Бойсе + + + Финикс + + + Денвер + + + Бьюла, Солтүстік Дакота + + + Нью Салем + + + Солтүстік Дакота, Орталық + + + Чикаго + + + Меномини + + + Винсенс, Индиана + + + Питерсберг + + + Телл-Сити, Индиана + + + Нокс, Индиана + + + Винамак, Индиана + + + Маренго, Индиана + + + Индианаполис + + + Луисвилл + + + Вивей, Индиана + + + Монтиселло, Кентуки + + + Детройт + + + Нью-Йорк + + + Монтевидео + + + Самарқанд + + + Ташкент + + + Ватикан + + + Сент Винсент + + + Каракас + + + Тортола + + + Сент Томас + + + Хошимин + + + Эфате + + + Уоллис + + + Апия + + + Аден + + + Майорка + + + Йоханнесбург + + + Лусака + + + Хараре + + + + Ауғаныстан уақыты + + + + + Орталық Африка уақыты + + + + + Шығыс Африка уақыты + + + + + Оңтүстік Африка уақыты + + + + + Батыс Африка уақыты + Батыс Африка стандарт уақыты + Батыс Африка жаздық уақыты + + + + + Аляска уақыты + Аляска стандартты уақыты + Аляска күндізгі уақыты + + + + + Амазонка уақыты + Амазонка стандартты уақыты + Амазонка жазғы уақыты + + + + + Солтүстік Америка орталығының уақыты + Солтүстік Америка орталығының стандартты уақыты + Солтүстік Америка орталығының күндізгі уақыты + + + + + Оңтүстік Америка шығыс бөлігінің уақыты + Оңтүстік Америка шығыс бөлігінің стандартты уақыты + Оңтүстік Америка шығыс бөлігінің күндізгі уақыты + + + + + Оңтүстік Америка таулы бөлігінің уақыты + Оңтүстік Америка таулы бөлігінің стандартты уақыты + Оңтүстік Америка таулы бөлігінің күндізгі уақыты + + + + + Тынық мұхитындағы Оңтүстік Америка уақыты + Тынық мұхитындағы Оңтүстік Америка стандартты уақыты + Тынық мұхитындағы Оңтүстік Америка жазғы уақыты + + + + + Сауд Арабиясы уақыты + Сауд Арабиясы стандартты уақыты + Сауд Арабиясы күндізгі уақыты + + + + + Аргентина уақыты + Аргентина стандартты уақыты + Аргентина жазғы уақыты + + + + + Батыс Аргентина уақыты + Батыс Аргентина стандартты уақыты + Батыс Аргентина жазғы уақыты + + + + + Армения уақыты + Армения стандартты уақыты + Армения жазғы уақыты + + + + + Атлантика уақыты + Атлантика стандарт уақыты + Атлантикалық жаздық уақыт + + + + + Орталық Австралия уақыты + Австралияның орталық стандарт уақыты + Австралиялық орталық жаздық уақыт + + + + + Орталық Австралиялық батыс уақыты + Орталық Австралиялық батыс стандарт уақыты + Орталық Австралиялық батыс жаздық уақыты + + + + + Шығыс Австралиялық уақыт + Шығыс Австралиялық стандарт уақыты + Шығыс Австралиялық жаздық уақыт + + + + + Батыс Австралиялық уақыт + Батыс Австралиялық стандарт уақыты + Батыс Австралиялық жаздық уақыт + + + + + Әзірбайжан уақыты + Әзірбайжан стандартты уақыты + Әзірбайжан жазғы уақыты + + + + + Азор аралдары уақыты + Азор аралдары стандартты уақыты + Азор аралдары жазғы уақыты + + + + + Бангладеш уақыты + Бангладеш стандартты уақыты + Бангладеш жазғы уақыты + + + + + Бутан уақыты + + + + + Боливия уақыты + + + + + Бразилия уақыты + Бразилия стандартты уақыты + Бразилия жазғы уақыты + + + + + Бруней-Даруссалам уақыты + + + + + Кабо-Верде уақыты + Кабо-Верде стандартты уақыты + Кабо-Верде жазғы уақыты + + + + + Чаморро уақыты + + + + + Чатем уақыты + Чатем стандартты уақыты + Чатем жазғы уақыты + + + + + Чили уақыты + Чили стандартты уақыты + Чили жазғы уақыты + + + + + Қытай уақыты + Қытай стандартты уақыты + Қытай күндізгі уақыты + + + + + Чойбалсан уақыты + Чойбалсан стандартты уақыты + Чойбалсан жазғы уақыты + + + + + Кристмас аралы уақыты + + + + + Кокос аралдары уақыты + + + + + Колумбия уақыты + Колумбия стандартты уақыты + Колумбия жазғы уақыты + + + + + Кук аралдары уақыты + Кук аралдары стандартты уақыты + Кук аралдары жартылай жазғы уақыты + + + + + Куба уақыты + Куба стандартты уақыты + Куба күндізгі уақыты + + + + + Дейвис уақыты + + + + + Дюмон д'Юрвиль уақыты + + + + + Шығыс Тимор уақыты + + + + + Пасха аралы уақыты + Пасха аралы стандартты уақыты + Пасха аралы жазғы уақыты + + + + + Эквадор уақыты + + + + + Орталық Еуропа уақыты + Орталық Еуропа стандарт уақыты + Орталық Еуропа жаздық уақыты + + + + + Шығыс Еуропа уақыты + Шығыс Еуропа стандарт уақыты + Шығыс Еуропа жаздық уақыты + + + EET + EET + EEST + + + + + Батыс Еуропа уақыты + Батыс Еуропа стандарт уақыты + Батыс Еуропа жаздық уақыты + + + + + Фолкленд аралдары уақыты + Фолкленд аралдары стандартты уақыты + Фолкленд аралдары жазғы уақыты + + + + + Фиджи уақыты + Фиджи стандартты уақыты + Фиджи жазғы уақыты + + + + + Француз Гвианасы уақыты + + + + + Францияның оңтүстік аймағы және Антарктика уақыты + + + + + Галапагос уақыты + + + + + Гамбье уақыты + + + + + Грузия уақыты + Грузия стандартты уақыты + Грузия жазғы уақыты + + + + + Гилберт аралдары уақыты + + + + + Гринвич уақыты + + + + + Шығыс Гренландия уақыты + Шығыс Гренландия стандартты уақыты + Шығыс Гренландия жазғы уақыты + + + + + Батыс Гренландия уақыты + Батыс Гренландия стандартты уақыты + Батыс Гренландия жазғы уақыты + + + + + Мексика шығанағы уақыты + + + + + Гайана уақыты + + + + + Гавай және Алеут аралдары уақыты + Гавай және Алеут аралдары стандартты уақыты + Гавай және Алеут аралдары жазғы уақыты + + + + + Гонконг уақыты + Гонконг стандартты уақыты + Гонконг жазғы уақыты + + + + + Ховд уақыты + Ховд стандартты уақыты + Ховд жазғы уақыты + + + + + Үндістан уақыты + + + + + Үнді мұхиты уақыты + + + + + Үндіқытай уақыты + + + + + Орталық Индонезия уақыты + + + + + Шығыс Индонезия уақыты + + + + + Батыс Индонезия уақыты + + + + + Иран уақыты + Иран стандартты уақыты + Иран күндізгі уақыты + + + + + Иркутск уақыты + Иркутск стандартты уақыты + Иркутск жазғы уақыты + + + + + Израиль уақыты + Израиль стандартты уақыты + Израиль күндізгі уақыты + + + + + Жапония уақыты + Жапония стандартты уақыты + Жапония күндізгі уақыты + + + + + Шығыс Қазақстан уақыты + + + + + Батыс Қазақстан уақыты + + + + + Корея уақыты + Корея стандартты уақыты + Корея күндізгі уақыты + + + + + Косраэ уақыты + + + + + Красноярск уақыты + Красноярск стандартты уақыты + Красноярск жазғы уақыты + + + + + Қырғызстан уақыты + + + + + Лайн аралдары уақыты + + + + + Лорд-Хау уақыты + Лорд-Хау стандартты уақыты + Лорд-Хау жазғы уақыты + + + + + Маккуори аралы уақыты + + + + + Магадан уақыты + Магадан стандартты уақыты + Магадан жазғы уақыты + + + + + Малайзия уақыты + + + + + Мальдив уақыты + + + + + Маркиз аралдары уақыты + + + + + Маршалл аралдары уақыты + + + + + Маврикий уақыты + Маврикий стандартты уақыты + Маврикий жазғы уақыты + + + + + Моусон уақыты + + + + + Улан-Батор уақыты + Улан-Батор стандартты уақыты + Улан-Батор жазғы уақыты + + + + + Мәскеу уақыты + Мәскеу стандартты уақыты + Мәскеу жазғы уақыты + + + + + Мьянма уақыты + + + + + Науру уақыты + + + + + Непал уақыты + + + + + Жаңа Каледония уақыты + Жаңа Каледония стандартты уақыты + Жаңа Каледония жазғы уақыты + + + + + Жаңа Зеландия уақыты + Жаңа Зеландия стандартты уақыты + Жаңа Зеландия күндізгі уақыты + + + + + Ньюфаундленд уақыты + Ньюфаундленд стандартты уақыты + Ньюфаундленд жазғы уақыты + + + + + Ниуэ уақыты + + + + + Норфолк аралы уақыты + + + + + Фернанду-ди-Норонья уақыты + Фернанду-ди-Норонья стандартты уақыты + Фернанду-ди-Норонья жазғы уақыты + + + + + Новосібір уақыты + Новосібір стандартты уақыты + Новосібір жазғы уақыты + + + + + Омбы уақыты + Омбы стандартты уақыты + Омбы жазғы уақыты + + + + + Пәкістан уақыты + Пәкістан стандартты уақыты + Пәкістан жазғы уақыты + + + + + Палау уақыты + + + + + Папуа – Жаңа Гвинея уақыты + + + + + Парагвай уақыты + Парагвай стандартты уақыты + Парагвай жазғы уақыты + + + + + Перу уақыты + Перу стандартты уақыты + Перу жазғы уақыты + + + + + Филиппин уақыты + Филиппин стандартты уақыты + Филиппин жазғы уақыты + + + + + Феникс аралдары уақыты + + + + + Сен-Пьер және Микелон уақыты + Сен-Пьер және Микелон стандартты уақыты + Сен-Пьер және Микелон күндізгі уақыты + + + + + Питкэрн уақыты + + + + + Понапе уақыты + + + + + Реюньон уақыты + + + + + Ротера уақыты + + + + + Сахалин уақыты + Сахалин стандартты уақыты + Сахалин жазғы уақыты + + + + + Самоа уақыты + Самоа стандартты уақыты + Самоа күндізгі уақыты + + + + + Сейшель уақыты + + + + + Сингапур уақыты + + + + + Соломон аралдары уақыты + + + + + Оңтүстік Георгия уақыты + + + + + Суринам уақыты + + + + + Сёва уақыты + + + + + Таити уақыты + + + + + Тайбэй уақыты + Тайбэй стандартты уақыты + Тайбэй күндізгі уақыты + + + + + Тәжікстан уақыты + + + + + Токелау уақыты + + + + + Тонга уақыты + Тонга стандартты уақыты + Тонга жазғы уақыты + + + + + Чуук уақыты + + + + + Түрікменстан уақыты + Түрікменстан стандартты уақыты + Түрікменстан жазғы уақыты + + + + + Тувалу уақыты + + + + + Уругвай уақыты + Уругвай стандартты уақыты + Уругвай жазғы уақыты + + + + + Өзбекстан уақыты + Өзбекстан стандартты уақыты + Өзбекстан жазғы уақыты + + + + + Вануату уақыты + Вануату стандартты уақыты + Вануату жазғы уақыты + + + + + Венесуэла уақыты + + + + + Владивосток уақыты + Владивосток стандартты уақыты + Владивосток жазғы уақыты + + + + + Волгоград уақыты + Волгоград стандартты уақыты + Волгоград жазғы уақыты + + + + + Восток уақыты + + + + + Уэйк аралы уақыты + + + + + Уоллис және Футуна уақыты + + + + + Якутск уақыты + Якутск стандартты уақыты + Якутск жазғы уақыты + + + + + Екатеринбург уақыты + Екатеринбург стандартты уақыты + Екатеринбург жазғы уақыты + + + + + + + , +   + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 мың + 0 мың + 00 мың + 00 мың + 000 мың + 000 мың + 0 млн + 0 млн + 00 млн + 00 млн + 000 млн + 000 млн + 0 млрд + 0 млрд + 00 млрд + 00 млрд + 000 млрд + 000 млрд + 0 трлн + 0 трлн + 00 трлн + 00 трлн + 000 трлн + 000 трлн + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Дихрам (БАЭ) + Дихрам (БАЭ) + Дихрам (БАЭ) + + + Ауғаныстан афганиі + Ауғаныстан афганиі + Ауғаныстан афганиі + + + Албания лекі + Албания лекі + Албания лекі + + + Армения драмы + Армения драмы + Армения драмы + + + Нидерланды антиль гульдені + Нидерланды антиль гульдені + Нидерланды антиль гульдені + + + Ангола кванзасы + Ангола кванзасы + Ангола кванзасы + + + Аргентина песосы + Аргентина песосы + Аргентина песосы + + + Австралия доллары + Австралия доллары + Австралия доллары + + + Арубан флоринсы + Арубан флоринсы + Арубан флоринсы + + + Азербайджан манаты (1993–2006) + + + Әзірбайжан манаты + Әзірбайжан манаты + Әзірбайжан манаты + + + Босния және Герцеговина айырбасталмалы маркасы + Босния және Герцеговина айырбасталмалы маркасы + Босния және Герцеговина айырбасталмалы маркасы + + + Барбадос доллары + Барбадос доллары + Барбадос доллары + + + Бангладеш такасы + Бангладеш такасы + Бангладеш такасы + + + Болгар леві + Болгар леві + Болгар леві + + + Бахрейн динары + Бахрейн динары + Бахрейн динары + + + Бурунди франкы + Бурунди франкы + Бурунди франкы + + + Бермуд доллары + Бермуд доллары + Бермуд доллары + + + Бруней доллары + Бруней доллары + Бруней доллары + + + Боливия боливианосы + Боливия боливианосы + Боливия боливианосы + + + Бразилия реалы + + + Багам доллары + Багам доллары + Багам доллары + + + Бутан нгултрумы + Бутан нгултрумы + Бутан нгултрумы + + + Ботсвана пуласы + Ботсвана пуласы + Ботсвана пуласы + + + Беларус рублі + Беларус рублі + Беларус рублі + + + Белиз доллары + Белиз доллары + Белиз доллары + + + Канада доллары + Канада доллары + Канада доллары + CA$ + + + Конго франкы + Конго франкы + Конго франкы + + + Швейцария франкы + Швейцария франкы + Швейцария франкы + + + Чили песосы + Чили песосы + Чили песосы + + + Қытай юаны + + + Колумбия песосы + Колумбия песосы + Колумбия песосы + + + Коста-рика колоны + Коста-рика колоны + Коста-рика колоны + + + Куба айырбасталмалы песосы + Куба айырбасталмалы песосы + Куба айырбасталмалы песосы + + + Куба песосы + Куба песосы + Куба песосы + + + Кабо-Верде эскудосы + Кабо-Верде эскудосы + Кабо-Верде эскудосы + + + Чех кронасы + Чех кронасы + Чех кронасы + + + Джибути франкы + Джибути франкы + Джибути франкы + + + Дат кроны + Дат кроны + Дат кроны + + + Доминикан песосы + Доминикан песосы + Доминикан песосы + + + Алжир динары + Алжир динары + Алжир динары + + + Мысыр фунты + Мысыр фунты + Мысыр фунты + + + Эритрей накфасы + Эритрей накфасы + Эритрей накфасы + + + Эфиопия быры + Эфиопия быры + Эфиопия быры + + + Еуро + + + Фиджи доллары + Фиджи доллары + Фиджи доллары + + + Фолкленд аралдарының фунты + Фолкленд аралдарының фунты + Фолкленд аралдарының фунты + + + Британия фунты + + + Грузия лариі + Грузия лариі + Грузия лариі + + + Гана седиі + Гана седиі + Гана седиі + + + Гибралтар фунты + Гибралтар фунты + Гибралтар фунты + + + Гамбия даласиі + Гамбия даласиі + Гамбия даласиі + + + Гвиней франкы + Гвиней франкы + Гвиней франкы + + + Гватемала кетсалі + Гватемала кетсалі + Гватемала кетсалі + + + Гайана доллары + Гайана доллары + Гайана доллары + + + Гонконг доллары + Гонконг доллары + Гонконг доллары + + + Гондурас лемпираcы + Гондурас лемпираcы + Гондурас лемпираcы + + + Хорватия кунасы + Хорватия кунасы + Хорватия кунасы + + + Гаити гурды + Гаити гурды + Гаити гурды + + + Венгер форинты + Венгер форинты + Венгер форинты + + + Индонезия рупиі + Индонезия рупиі + Индонезия рупиі + + + Израиль жаңа шекелі + Израиль жаңа шекелі + Израиль жаңа шекелі + + + Үнді рупиясы + Үнді рупиясы + Үнді рупиясы + + + Ирак динары + Ирак динары + Ирак динары + + + Иран риалы + Иран риалы + Иран риалы + + + Исландия кронасы + Исландия кронасы + Исландия кронасы + + + Ямайка доллары + Ямайка доллары + Ямайка доллары + + + Йордания динары + Йордания динары + Йордания динары + + + Жапон иені + + + Кения шиллингі + Кения шиллингі + Кения шиллингі + + + Қырғызстан сомы + Қырғызстан сомы + Қырғызстан сомы + + + Камбоджа риелі + Камбоджа риелі + Камбоджа риелі + + + Комор аралдары франкы + Комор аралдары франкы + Комор аралдары франкы + + + Солтүстік Корея воны + Солтүстік Корея воны + Солтүстік Корея воны + + + Оңтүстік Корея воны + Оңтүстік Корея воны + Оңтүстік Корея воны + + + Кувейт динары + Кувейт динары + Кувейт динары + + + Кайман аралдары доллары + Кайман аралдары доллары + Кайман аралдары доллары + + + Қазақстан теңгесі + + + + Лаос кипі + Лаос кипі + Лаос кипі + + + Ливан фунты + Ливан фунты + Ливан фунты + + + Шри-Ланка рупиясы + Шри-Ланка рупиясы + Шри-Ланка рупиясы + + + Либерия доллары + Либерия доллары + Либерия доллары + + + Литва литы + Литва литы + Литва литы + + + Латвия латы + Латвия латы + Латвия латы + + + Ливия динары + Ливия динары + Ливия динары + + + Марокко дирхамы + Марокко дирхамы + Марокко дирхамы + + + Молдава лейі + Молдава лейі + Молдава лейі + + + Малагаси ариариы + Малагаси ариариы + Малагаси ариариы + + + Македония динары + Македония динары + Македония динары + + + Мьянма кьяты + Мьянма кьяты + Мьянма кьяты + + + Моңғолия тугрикасы + Моңғолия тугрикасы + Моңғолия тугрикасы + + + Макао патакасы + Макао патакасы + Макао патакасы + + + Мавритания угиясы + Мавритания угиясы + Мавритания угиясы + + + Маврикий рупиясы + Маврикий рупиясы + Маврикий рупиясы + + + Мальдив руфиясы + Мальдив руфиясы + Мальдив руфиясы + + + Малави квачасы + Малави квачасы + Малави квачасы + + + Мексика пессосы + Мексика пессосы + Мексика пессосы + MX$ + + + Малайзия ринггиті + Малайзия ринггиті + Малайзия ринггиті + + + Мозамбик метикалы + Мозамбик метикалы + Мозамбик метикалы + + + Намибия доллары + Намибия доллары + Намибия доллары + + + Нигерия найрасы + Нигерия найрасы + Нигерия найрасы + + + Никарагуа кордобасы + Никарагуа кордобасы + Никарагуа кордобасы + + + Норвегия кроны + Норвегия кроны + Норвегия кроны + + + Непал рупиі + Непал рупиі + Непал рупиі + + + Жаңа Зеландия доллары + Жаңа Зеландия доллары + Жаңа Зеландия доллары + + + Оман риалы + Оман риалы + Оман риалы + + + Панама бальбоасы + Панама бальбоасы + Панама бальбоасы + + + Перу жаңа солі + Перу жаңа солі + Перу жаңа солі + + + Папуа - Жаңа Гвинея кинасы + Папуа - Жаңа Гвинея кинасы + Папуа - Жаңа Гвинея кинасы + + + Филиппин песосы + Филиппин песосы + Филиппин песосы + + + Пәкістан рупиі + Пәкістан рупиі + Пәкістан рупиі + + + Польша злотасы + Польша злотасы + Польша злотасы + + + Парагвай гуараниі + Парагвай гуараниі + Парагвай гуараниі + + + Катар риалы + Катар риалы + Катар риалы + + + Румыния лейі + Румыния лейі + Румыния лейі + + + Сербия динары + Сербия динары + Сербия динары + + + Ресей рубль + руб. + + + Руанда франкы + Руанда франкы + Руанда франкы + + + Сауд Арабия риалы + Сауд Арабия риалы + Сауд Арабия риалы + + + Соломон аралдары доллары + Соломон аралдары доллары + Соломон аралдары доллары + + + Сейшель рупиясы + Сейшель рупиясы + Сейшель рупиясы + + + Судан фунты + Судан фунты + Судан фунты + + + Швед кроны + Швед кроны + Швед кроны + + + Сингапур доллары + Сингапур доллары + Сингапур доллары + + + Әулие Елена аралы фунты + Әулие Елена аралы фунты + Әулие Елена аралы фунты + + + Сьерра-Леоне леонесы + Сьерра-Леоне леонесы + Сьерра-Леоне леонесы + + + Сомали шиллингі + Сомали шиллингі + Сомали шиллингі + + + Суринам доллары + Суринам доллары + Суринам доллары + + + Оңтүстік Судан фунты + Оңтүстік Судан фунты + Оңтүстік Судан фунты + + + Сант-Томе мен Принсипи добрасы + Сант-Томе мен Принсипи добрасы + Сант-Томе мен Принсипи добрасы + + + Сирия фунты + Сирия фунты + Сирия фунты + + + Свазиленд лилангениі + Свазиленд лилангениі + Свазиленд лилангениі + + + Тай баты + Тай баты + Тай баты + + + Тәжікстан сомониі + Тәжікстан сомониі + Тәжікстан сомониі + + + Түрікменстан манаты + Түрікменстан манаты + Түрікменстан манаты + + + Тунис динары + Тунис динары + Тунис динары + + + Тонга паангасы + Тонга паангасы + Тонга паангасы + + + Түрік лирасы + Түрік лирасы + Түрік лирасы + + + Тринидад пен Тобаго доллары + Тринидад пен Тобаго доллары + Тринидад пен Тобаго доллары + + + Жаңа Тайван доллары + Жаңа Тайван доллары + Жаңа Тайван доллары + + + Танзания шиллингі + Танзания шиллингі + Танзания шиллингі + + + Украина гривнасы + Украина гривнасы + Украина гривнасы + + + Уганда шиллингі + Уганда шиллингі + Уганда шиллингі + + + АҚШ доллары + US$ + + + Уругвай песосы + Уругвай песосы + Уругвай песосы + + + Өзбекстан сомы + Өзбекстан сомы + Өзбекстан сомы + + + Венесуэла боливары + Венесуэла боливары + Венесуэла боливары + + + Вьетнам донгы + Вьетнам донгы + Вьетнам донгы + + + Вануату ватуы + Вануату ватуы + Вануату ватуы + + + Самоа таласы + Самоа таласы + Самоа таласы + + + КФА ВЕАС франкы + КФА ВЕАС франкы + КФА ВЕАС франкы + + + Шығыс Кариб доллары + Шығыс Кариб доллары + Шығыс Кариб доллары + + + КФА ВСЕАО франкы + КФА ВСЕАО франкы + КФА ВСЕАО франкы + + + КФП франкы + КФП франкы + КФП франкы + + + Белгісіз валюта + + + Йемен риалы + Йемен риалы + Йемен риалы + + + Оңтүстік Африка рэнді + Оңтүстік Африка рэнді + Оңтүстік Африка рэнді + + + Замбия квачасы + Замбия квачасы + Замбия квачасы + + + + {0}+ + {0}–{1} + + + + + + {0}{1}қатынасы + + + {0} гравитациялық күш + {0} гравитациялық күш + + + {0}минут + {0}минут + + + {0}секунд + {0}секунд + + + {0}градус + {0}градус + + + {0} акр + {0} акр + + + {0} гектар + {0} гектар + + + {0} шаршы фут + {0} шаршы фут + + + {0} шаршы километр + {0} шаршы километр + + + {0} шаршы метр + {0} шаршы метр + + + {0} шаршы миля + {0} шаршы миля + + + {0} тәулік + {0} тәулік + + + {0} сағат + {0} сағат + + + {0} миллисекунд + {0} миллисекунд + + + {0} минут + {0} минут + + + {0} ай + {0} ай + + + {0} секунд + {0} секунд + + + {0} апта + {0} апта + + + {0} жыл + {0} жыл + + + {0} сантиметр + {0} сантиметр + + + {0} фут + {0} фут + + + {0} дюйм + {0} дюйм + + + {0} километр + {0} километр + + + {0} жарық жылы + {0} жарық жылы + + + {0} метр + {0} метр + + + {0} миля + {0} миля + + + {0} миллиметр + {0} миллиметр + + + {0} пикометр + {0} пикометр + + + {0} ярд + {0} ярд + + + {0} грамм + {0} грамм + + + {0} килограмм + {0} килограмм + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} ат күші + {0} ат күші + + + {0} киловатт + {0}киловатт + + + {0} ватт + {0} ватт + + + {0} гектопаскаль + {0} гектопаскаль + + + {0} сынапты бағана дюймы + {0} сынапты бағана дюймы + + + {0} миллибар + {0} миллибар + + + {0} километр/сағат + {0} километр/сағат + + + {0} метр/секунд + {0} метр/секунд + + + {0} миля/сағат + {0} миля/сағат + + + {0}Цельсий градусы + {0}Цельсий градусы + + + {0} Фаренгейт бойынша градус + {0} Фаренгейт бойынша градус + + + {0} текше километр + {0} текше километр + + + {0} текше миля + {0} текше миля + + + {0} литр + {0} литр + + + + + {0}/{1} + + + {0} грав. күш + {0} грав. күш + + + {0}мин + {0}мин + + + {0}сек + {0}сек + + + {0}градус + {0}градус + + + {0} акр + {0} акр + + + {0} га + {0} га + + + {0} фут² + {0} фут² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} миля² + {0} миля² + + + {0} тәулік + {0} тәулік + + + {0} сағат + {0} сағат + + + {0} мс + {0} мс + + + {0} мин + {0} мин + + + {0} ай + {0} ай + + + {0} секунд + {0} секунд + + + {0} апта + {0} апта + + + {0} ж. + {0} ж. + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} дюйм + {0} дюйм + + + {0} км + {0} км + + + {0} жарық жылы + {0} жарық жылы + + + {0} м + {0} м + + + {0} миля + {0} миля + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} гр + {0} гр + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} ат күші + {0} ат күші + + + {0}кВт + {0}кВт + + + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + + + {0} inHg + {0} inHg + + + {0} мб + {0} мб + + + {0} км/сағ + {0} км/сағ + + + {0} м/с + {0} м/с + + + {0} миля/сағ + {0} миля/сағ + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} миля³ + {0} миля³ + + + {0} л + {0} л + + + + + {0}/{1} + + + {0} г + {0} г + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акр + + + {0} га + {0} га + + + {0} фут² + {0} фут² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} миля² + {0} миля² + + + {0} тәулік + {0} тәулік + + + {0} сағат + {0} сағат + + + {0} мс + {0} мс + + + {0} мин + {0} мин + + + {0} ай + {0} ай + + + {0} сек. + {0} сек. + + + {0} апта + {0} апта + + + {0} ж. + {0} ж. + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} дюйм + {0} дюйм + + + {0} км + {0} км + + + {0} ly + {0} ly + + + {0} м + {0} м + + + {0} миля + {0} миля + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} гр + {0} гр + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} ат күші + {0} ат күші + + + {0}кВт + {0}кВт + + + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + + + {0} inHg + {0} inHg + + + {0} мб + {0} мб + + + {0} км/сағ + {0} км/сағ + + + {0} м/с + {0} м/с + + + {0} миля/сағ + {0} миля/сағ + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} миля³ + {0} миля³ + + + {0} л + {0} л + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + иә:и + жоқ:ж + + + + diff --git a/library/Zend/Locale/Data/kk_Cyrl.xml b/library/Zend/Locale/Data/kk_Cyrl.xml new file mode 100755 index 000000000..fb8a2b35d --- /dev/null +++ b/library/Zend/Locale/Data/kk_Cyrl.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + silarsuaq + Afrika + Amerika Avannarleq + Amerika Kujalleq + Oceania + Afrika Killiit + America Qitiusumik + Afrika Kangilliit + Afrika Avannarleq + Afrika Qitiusumik + Afrika Kujalleq + Amerika + Asia Kangilliit + Asia Kujalleq + Europa Kujalleq + Australia aamma Nutaaq Zeelandi + Melanesia + Polynesia + Asia + Asia Qitiusumik + Asia Killiit + Europa + Europa Kangilliit + Europa Avannarleq + Europa Killiit + America Latin aamma Karibia + Ascension qeqertaq + Andorra + Afghanistani + Antigua aamma Barbuda + Anguilla + Albania + Armenia + Angola + Qalasersuaq Kujalleq + Argentina + Østrigi + Australia + Aruba + Ålandi + Bosnia aamma Herzegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Brazil + Bahamas + Bhutan + Bouvet qeqertaq + Botswana + Hvideruslandi + Belize + Canada + Cocos qeqertaq + Kongo-Kinshasa + Kongo-Brazzaville + Schweizi + Cook qeqertaq + Chile + Kamerun + Kina + Colombia + Clipperton qeqertaq + Costa Rica + Kuba + Cap Verde + Curaçao + Jul-qeqertaq + Cypern + Tjekkia + Tysklandi + Diego Garcia + Djibouti + Danmarki + Dominica + Algeriet + Ceuta aamma Melilla + Ecuador + Estlandi + Egypten + Sahara Killiit + Eritrea + Spania + Ethiopia + Europami nunat kattusimaffiat + Finlandi + Fiji + Falklandi qeqertaq + Micronesia + Savalimmiut + Frankrigi + Gabon + Tuluit Nunaat + Tuluit Nunaat + Grenada + Georgia + Guernsey + Ghana + Gibraltar + Kalaallit Nunaat + Gambia + Guinea + Guadeloupe + Grækenlandi + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong + Hongkong + Honduras + Kroatia + Haiti + Ungarni + Kanaria qeqertaq + Indonesia + Irlandi + Israel + Isle of Man + India + Irak + Iran + Islandi + Italia + Jersey + Jamaica + Jordani + Japani + Kenya + Kambodia + Kiribati + Comoros + Saint Kitts aamma Nevis + Korea Avannarleq + Korea Kujalleq + Kuwait + Cayman qeqertaq + Kasakhstani + Laos + Libanon + Saint Lucia + Liechtensteini + Sri Lanka + Liberia + Lesotho + Litaueni + Luxembourg + Letlandi + Libya + Marocko + Monaco + Moldova + Montenegro + Frankrigi Saint Martin + Madagaskar + Makedonia + Mali + Burma + Macao + Macao + Martinique + Mauritania + Montserrat + Malta + Mauritius + Malawi + Mexiko + Malaysia + Moçambique + Namibia + Nutaaq Caledonia + Niger + Nigeria + Nicaragua + Hollandi + Norge + Nepal + Nauru + Niue + Nutaaq Zeelandi + Oman + Panama + Peru + Papua Nutaaq Guinea + Pakistani + Poleni + Saint Pierre aamma Miquelon + Puerto Rico + Portugali + Palau + Paraguay + Quatar + Réunion + Rumænia + Serbia + Ruslandi + Rwanda + Saudi Arabia + Avannarleqsudan + Sverige + Singapore + Saint Helena + Slovenia + Svalbard aamma Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + Kujalleqsudan + São Tomé aamma Príncipe + El Salvador + Syria + Swazilandi + Tristan da Cunha + Chad + Togo + Thailandi + Tajikistani + Tokelau + Timor Kangilliit + Turkmenistani + Tunisia + Tonga + Tyrkia + Trinidad aamma Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + Naalagaaffeqatigiit + USA + Uruguay + Uzbekistani + Vatikani + Venezuela + Vietnam + Vanuatu + Wallis aamma Futuna + Samoa + Kosovo + Jemen + Mayotte + Kujalleqafrika + Zambia + Zimbabwe + (atorsinnaanngitsoq nunap imartaa nunataalu) + + + ullorsiut + akissaat + normu + + + atitooq atugartuut normu + gregorianskit ullorsiutaat + atugartuut normu + ruumamiut-kisitsisaat + naqippoq ruumamiut-kisitsisaat + + + SI + UK + US + + + oqaatsit: {0} + allaqqitaq: {0} + nunap imartaa nunataalu: {0} + + + + [a á â ã b c d e é ê f g h i í î ĩ j k l m n o ô p q ĸ r s t u ú û ũ v w x y z æ ø å] + [b c d h x z æ ø å] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å] + {0}… + …{0} + {0}…{1} + ? + + + » + « + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + MMM dd, y G + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E, d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + mm:ss + y-MM + y-MM-dd + E, y-MM-dd + MMM y + MMM d, y + E, MMM d, y + y QQQQ + y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM-dd – dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + LLL–LLL + + + MM-d – d + MM-d – MM-d + + + E, MM-d – E, MM-d + E, MM-d – E, MM-d + + + y–y + + + y-MM – MM + y-MM – y-MM + + + y-MM-dd – dd + y-MM-dd – MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + y-MM-d – d + y-MM-dd – MM-d + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + + + + + + + jan + feb + mar + apr + maj + jun + jul + aug + sep + okt + nov + dec + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januari + februari + martsi + aprili + maji + juni + juli + augustusi + septemberi + oktoberi + novemberi + decemberi + + + + + jan + feb + mar + apr + maj + jun + jul + aug + sep + okt + nov + dec + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januari + februari + martsi + aprili + maji + juni + juli + augustusi + septemberi + oktoberi + novemberi + decemberi + + + + + + + sab + ata + mar + pin + sis + tal + arf + + + sab + ata + mar + pin + sis + tal + arf + + + sabaat + ataasinngorneq + marlunngorneq + pingasunngorneq + sisamanngorneq + tallimanngorneq + arfininngorneq + + + + + S + A + M + P + S + T + A + + + sab + ata + mar + pin + sis + tal + arf + + + sabaat + ataasinngorneq + marlunngorneq + pingasunngorneq + sisamanngorneq + tallimanngorneq + arfininngorneq + + + + + + + S1 + S2 + S3 + S4 + + + S1 + S2 + S3 + S4 + + + ukiup sisamararterutaa 1 + ukiup sisamararterutaa 2 + ukiup sisamararterutaa 3 + ukiup sisamararterutaa 4 + + + + + S1 + S2 + S3 + S4 + + + S1 + S2 + S3 + S4 + + + ukiup sisamararterutaa 1 + ukiup sisamararterutaa 2 + ukiup sisamararterutaa 3 + ukiup sisamararterutaa 4 + + + + + + + u.t. + u.k. + + + ulloqeqqata-tungaa + ulloqeqqata-kingorna + + + + + + Kristusip inunngornerata siornagut + før vesterlandsk tidsregning + Kristusip inunngornerata kingornagut + vesterlandsk tidsregning + + + Kr.in.si. + f.v.t. + Kr.in.king. + v.t. + + + Kr.s. + f.v.t. + Kr.k. + v.t. + + + + + + EEEE dd MMMM y + + + + + dd MMMM y + + + + + MMM dd, y + + + + + y-MM-dd + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + E, d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + mm:ss + y-MM + y-MM-dd + E, y-MM-dd + MMM y + MMM d, y + E, MMM d, y + y QQQQ + y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM-dd – dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + LLL–LLL + + + MM-d – d + MM-d – MM-d + + + E, MM-d – E, MM-d + E, MM-d – E, MM-d + + + y–y + + + y-MM – MM + y-MM – y-MM + + + y-MM-dd – dd + y-MM-dd – MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + y-MM-d – d + y-MM-dd – MM-d + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + y-MM – MM + y-MM – y-MM + + + + + + + + æra + + + ukioq + kingulleq ukioq + manna ukioq + tulleq ukioq + + om {0} ukioq + om {0} ukioq + + + for {0} ukioq siden + for {0} ukioq siden + + + + qaammat + kingulleq qaammat + manna qaammat + tulleq qaammat + + om {0} qaammat + om {0} qaammat + + + for {0} qaammat siden + for {0} qaammat siden + + + + sapaatip-akunnera + kingulleq sapaatip-akunnera + manna sapaatip-akunnera + tulleq sapaatip-akunnera + + om {0} sapaatip-akunnera + om {0} sapaatip-akunnera + + + for {0} sapaatip-akunnera siden + for {0} sapaatip-akunnera siden + + + + ulloq + ippassaani + ippassaq + ullumi + aqagu + aqaguagu + + om {0} ulloq unnuarlu + om {0} ulloq unnuarlu + + + for {0} ulloq unnuarlu siden + for {0} ulloq unnuarlu siden + + + + sapaatip akunnerata ullui + + + sapaat kingulleq sapaatip-akunnera + sapaat manna sapaatip-akunnera + sapaat tulleq sapaatip-akunnera + + + ataasinngorneq kingulleq sapaatip-akunnera + ataasinngorneq manna sapaatip-akunnera + ataasinngorneq tulleq sapaatip-akunnera + + + marlunngorneq kingulleq sapaatip-akunnera + marlunngorneq manna sapaatip-akunnera + marlunngorneq tulleq sapaatip-akunnera + + + pingasunngorneq kingulleq sapaatip-akunnera + pingasunngorneq manna sapaatip-akunnera + pingasunngorneq tulleq sapaatip-akunnera + + + sisamanngorneq kingulleq sapaatip-akunnera + sisamanngorneq manna sapaatip-akunnera + sisamanngorneq tulleq sapaatip-akunnera + + + tallimanngorneq kingulleq sapaatip-akunnera + tallimanngorneq manna sapaatip-akunnera + tallimanngorneq tulleq sapaatip-akunnera + + + arfininngorneq kingulleq sapaatip-akunnera + arfininngorneq manna sapaatip-akunnera + arfininngorneq tulleq sapaatip-akunnera + + + piffissaq ulloq + + + nalunaaquttap-akunnera + + om {0} nalunaaquttap-akunnera + om {0} nalunaaquttap-akunnera + + + for {0} nalunaaquttap-akunnera siden + for {0} nalunaaquttap-akunnera siden + + + + minutsi + + om {0} minutsi + om {0} minutsi + + + for {0} minutsi siden + for {0} minutsi siden + + + + sekundi + + om {0} sekundi + om {0} sekundi + + + for {0} sekundi siden + for {0} sekundi siden + + + + nalunaaqutaqaqatigiissut + + + + +HH:mm;−HH:mm + GMT{0} + GMT + {0} + {0} ({1}) + + atorsinnaanngitsoq nalunaaqutaqaqatigiissut + + + Qaanaaq + + + Ittoqqortoormiit + + + + + + , + . + ; + % + + + + ×10^ + · + + + ¤¤¤ + + + + + #,##0.### + + + + + 0 tusind + 0 tusind + 00 tusind + 00 tusind + 000 tusind + 000 tusind + 0 million + 0 millioner + 00 million + 00 millioner + 000 million + 000 millioner + 0 milliard + 0 milliarder + 00 milliard + 00 milliarder + 000 milliard + 000 milliarder + 0 billion + 0 billioner + 00 billion + 00 billioner + 000 billion + 000 billioner + + + + + 0 td + 0 td + 00 td + 00 td + 000 td + 000 td + 0 mn + 0 mn + 00 mn + 00 mn + 000 mn + 000 mn + 0 md + 0 md + 00 md + 00 md + 000 md + 000 md + 0 bn + 0 bn + 00 bn + 00 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + ¤#,##0.00;¤-#,##0.00 + + + {0} {1} + {0} {1} + + + + danmarkimut koruuni + danskinut koruuni + danmarkimut koruuni + kr + + + euro + euro + euro + + + + norskit koruuni + norskit koruuni + norskit koruuni + Nkr + + + svenskit koruuni + svenskit koruuni + svenskit koruuni + Skr + + + + + + + {0} per {1} + + + {0} Jordgravitation + {0} Jordgravitationer + + + {0} bueminutsi + {0} bueminutsi + + + {0} buesekundi + {0} buesekundi + + + {0} gradi + {0} gradi + + + {0} amerikanskt tønde land + {0} amerikanske tønde land + + + {0} hektari + {0} hektari + + + {0} kvadratfod + {0} kvadratfod + + + {0} kvadratkilometeri + {0} kvadratkilometeri + + + {0} kvadratmeteri + {0} kvadratmeteri + + + {0} engelsk kvadratmil + {0} engelske kvadratmil + + + {0} ulloq unnuarlu + {0} ulloq unnuarlu + + + {0} nalunaaquttap-akunnera + {0} nalunaaquttap-akunnera + + + {0} millisekundi + {0} millisekundi + + + {0} minutsi + {0} minutsi + + + {0} qaammat + {0} qaammat + + + {0} sekundi + {0} sekundi + + + {0} sapaatip-akunnera + {0} sapaatip-akunnera + + + {0} ukioq + {0} ukioq + + + {0} centimeteri + {0} centimeteri + + + {0} fod + {0} fod + + + {0} tomme + {0} tommer + + + {0} kilometeri + {0} kilometeri + + + {0} lysukioq + {0} lysukioq + + + {0} meteri + {0} meteri + + + {0} engelsk mil + {0} engelske mil + + + {0} millimeteri + {0} millimeteri + + + {0} pikometeri + {0} pikometeri + + + {0} engelsk yard + {0} engelske yard + + + {0} grammi + {0} grammi + + + {0} kilogrammi + {0} kilogrammi + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0} hestekraft + {0} hestekrafter + + + {0} kilowatti + {0} kilowatti + + + {0} watti + {0} watti + + + {0} hektopascali + {0} hektopascali + + + {0} tomme kviksølv + {0} tommer kviksølv + + + {0} millibari + {0} millibari + + + {0} kilometeri per nalunaaquttap-akunnera + {0} kilometeri per nalunaaquttap-akunnera + + + {0} meteri per sekundi + {0} meteri per sekundi + + + {0} engelsk mil per nalunaaquttap-akunnera + {0} engelske mil per nalunaaquttap-akunnera + + + {0} gradi Celsius + {0} gradi Celsius + + + {0} gradi Fahrenheit + {0} gradi Fahrenheit + + + {0} kubikkilometeri + {0} kubikkilometeri + + + {0} engelsk kubikmil + {0} engelske kubikmil + + + {0} literi + {0} literi + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mån + {0} mån + + + {0} s + {0} s + + + {0} u + {0} u + + + {0} ukioq + {0} ukioq + + + {0} cm + {0} cm + + + {0} fod + {0} fod + + + {0} tomme + {0} tommer + + + {0} km + {0} km + + + {0} lysukioq + {0} lysukioq + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0} hk + {0} hk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0}ha + {0}ha + + + {0} ft² + {0} ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}u + {0}u + + + {0}å + {0}å + + + {0}cm + {0}cm + + + {0} fod + {0} fod + + + {0} tomme + {0} tommer + + + {0}km + {0}km + + + {0} lysukioq + {0} lysukioq + + + {0}m + {0}m + + + {0} mi + {0} mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} yd + {0} yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0}hk + {0}hk + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0} inHg + {0} inHg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + + + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} aamma {1} + {0} aamma {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + aap:a + naagga:n + + + + diff --git a/library/Zend/Locale/Data/kl_GL.xml b/library/Zend/Locale/Data/kl_GL.xml new file mode 100755 index 000000000..d9cdf43d0 --- /dev/null +++ b/library/Zend/Locale/Data/kl_GL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kln.xml b/library/Zend/Locale/Data/kln.xml new file mode 100755 index 000000000..5dba1562f --- /dev/null +++ b/library/Zend/Locale/Data/kln.xml @@ -0,0 +1,768 @@ + + + + + + + + + + + + kutitab Aka + kutitab Amariek + kutitab Arabuk + kutitab Belarusa + kutitab Bulgaria + kutitab Bengali + kutitab Chek + kutitab Chermani + kutitab Greece + kutitab Uingeresa + kutitab Espianik + kutitab Persia + kutitab Kifaransa + kutitab Hausa + kutitab Maindiik + kutitab Hangari + kutitab Indonesia + kutitab Igbo + kutitab Talianek + kutitap Japan + kutitap Javanese + Kalenjin + kutitab Kher nebo Kwen + kutitab Korea + kutitab Malay + kutitab Burma + kutitab Nepali + kutitab Boa + kutitab Punjab + kutitap Poland + kutitab Portugal + kutitab Romaniek + kutitab Russia + kutitab Kinyarwanda + kutitab Somaliek + kutitab Sweden + kutitab Tamil + kutitab Thailand + kutitab Turkey + kutitab Ukraine + kutitab Urdu + kutitab Vietnam + kutitab Yoruba + kutitab China + kutitab Zulu + + + Emetab Andorra + Emetab kibagenge nebo arabuk + Emetab Afghanistan + Emetab Antigua ak Barbuda + Emetab Anguilla + Emetab Albania + Emetab Armenia + Emetab Antile nebo Holand + Emetab Angola + Emetab Argentina + Emetab American Samoa + Emetab Austria + Emetab Australia + Emetab Aruba + Emetab Azerbaijan + Emetab Bosnia ak Herzegovina + Emetab Barbados + Emetab Bangladesh + Emetab Belgium + Emetab Burkina Faso + Emetab Bulgaria + Emetab Bahrain + Emetab Burundi + Emetab Benin + Emetab Bermuda + Emetab Brunei + Emetab Bolivia + Emetab Brazil + Emetab Bahamas + Emetab Bhutan + Emetab Botswana + Emetab Belarus + Emetab Belize + Emetab Canada + Emetab Congo - Kinshasa + Emetab Afrika nebo Kwen + Emetab Congo - Brazzaville + Emetab Switzerland + Emetab Côte d'Ivoire + Ikwembeyotab Cook + Emetab Chile + Emetab Cameroon + Emetab China + Emetab Colombia + Emetab Costa Rica + Emetab Cuba + Ikwembeyotab Cape Verde + Emetab Cyprus + Emetab Czech Republic + Emetab Geruman + Emetab Djibouti + Emetab Denmark + Emetab Dominica + Emetab Dominican Republic + Emetab Algeria + Emetab Ecuador + Emetab Estonia + Emetab Misiri + Emetab Eritrea + Emetab Spain + Emetab Ethiopia + Emetab Finland + Emetab Fiji + Ikwembeyotab Falkland + Emetab Micronesia + Emetab France + Emetab Gabon + Emetab Kibagenge nebo Uingereza + Emetab Grenada + Emetab Georgia + Emetab Guiana nebo Ufaransa + Emetab Ghana + Emetab Gibraltar + Emetab Greenland + Emetab Gambia + Emetab Guinea + Emetab Guadeloupe + Emetab Equatorial Guinea + Emetab Greece + Emetab Guatemala + Emetab Guam + Emetab Guinea-Bissau + Emetab Guyana + Emetab Honduras + Emetab Croatia + Emetab Haiti + Emetab Hungary + Emetab Indonesia + Emetab Ireland + Emetab Israel + Emetab India + Kebebertab araraitab indian Ocean nebo Uingeresa + Emetab Iraq + Emetab Iran + Emetab Iceland + Emetab Italy + Emetab Jamaica + Emetab Jordan + Emetab Japan + Emetab Kenya + Emetab Kyrgyzstan + Emetab Cambodia + Emetab Kiribati + Emetab Comoros + Emetab Saint Kitts ak Nevis + Emetab Korea nebo murot katam + Emetab korea nebo murot tai + Emetab Kuwait + Ikwembeyotab Cayman + Emetab Kazakhstan + Emetab Laos + Emetab Lebanon + Emetab Lucia Ne + Emetab Liechtenstein + Emetab Sri Lanka + Emetab Liberia + Emetab Lesotho + Emetab Lithuania + Emetab Luxembourg + Emetab Latvia + Emetab Libya + Emetab Morocco + Emetab Monaco + Emetab Moldova + Emetab Madagascar + Ikwembeiyotab Marshall + Emetab Macedonia + Emetab Mali + Emetab Myanmar + Emetab Mongolia + Ikwembeiyotab Mariana nebo murot katam + Emetab Martinique + Emetab Mauritania + Emetab Montserrat + Emetab Malta + Emetab Mauritius + Emetab Maldives + Emetab Malawi + Emetab Mexico + Emetab Malaysia + Emetab Mozambique + Emetab Namibia + Emetab New Caledonia + Emetab niger + Ikwembeiyotab Norfork + Emetab Nigeria + Emetab Nicaragua + Emetab Holand + Emetab Norway + Emetab Nepal + Emetab Nauru + Emetab Niue + Emetab New Zealand + Emetab Oman + Emetab Panama + Emetab Peru + Emetab Polynesia nebo ufaransa + Emetab Papua New Guinea + Emetab Philippines + Emetab Pakistan + Emetab Poland + Emetab Peter Ne titil ak Miquelon + Emetab Pitcairn + Emetab Puerto Rico + Emetab Palestine + Emetab Portugal + Emetab Palau + Emetab Paraguay + Emetab Qatar + Emetab Réunion + Emetab Romania + Emetab Russia + Emetab Rwanda + Emetab Saudi Arabia + Ikwembeiyotab Solomon + Emetab Seychelles + Emetab Sudan + Emetab Sweden + Emetab Singapore + Emetab Helena Ne tilil + Emetab Slovenia + Emetab Slovakia + Emetab Sierra Leone + Emetab San Marino + Emetab Senegal + Emetab Somalia + Emetab Suriname + Emetab São Tomé and Príncipe + Emetab El Salvador + Emetab Syria + Emetab Swaziland + Ikwembeiyotab Turks ak Caicos + Emetab Chad + Emetab Togo + Emetab Thailand + Emetab Tajikistan + Emetab Tokelau + Emetab Timor nebo Murot tai + Emetab Turkmenistan + Emetab Tunisia + Emetab Tonga + Emetab Turkey + Emetab Trinidad ak Tobago + Emetab Tuvalu + Emetab Taiwan + Emetab Tanzania + Emetab Ukrainie + Emetab Uganda + Emetab amerika + Emetab Uruguay + Emetab Uzibekistani + Emetab Vatican + Emetab Vincent netilil ak Grenadines + Emetab Venezuela + Ikwembeyotab British Virgin + Ikwemweiyotab Amerika + Emetab Vietnam + Emetab Vanuatu + Emetab Walis ak Futuna + Emetab Samoa + Emetab Yemen + Emetab Mayotte + Emetab Afrika nebo Murot tai + Emetab Zambia + Emetab Zimbabwe + + + + [a b c d e g h i j k l m n o p r s t u w y] + [f q v x z] + [A B C D E G H I J K L M N O P R S T U W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Mul + Nga + Kip + Iwa + Nge + Wak + Rop + Kog + Bur + Epe + Tai + Aen + + + Mulgul + Ng'atyato + Kiptamo + Iwat kut + Ng'eiyet + Waki + Roptui + Kipkogaga + Buret + Epeso + Kipsunde netai + Kipsunde nebo aeng + + + + + M + N + K + I + N + W + R + K + B + E + K + K + + + + + + + Tis + Tai + Aen + Som + Ang + Mut + Loh + + + Betutab tisap + Betut netai + Betutab aeng' + Betutab somok + Betutab ang'wan + Betutab mut + Betutab lo + + + + + T + T + A + S + A + M + L + + + + + + + R1 + R2 + R3 + R4 + + + Robo netai + Robo nebo aeng' + Robo nebo somok + Robo nebo ang'wan + + + + + + + BE + KE + + + Beet + Kemo + + + + + + Amait kesich Jesu + Kokakesich Jesu + + + AM + KO + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ibinta + + + Kenyit + + + Arawet + + + Wikit + + + Betut + Amut + Raini + Mutai + + + Betutab wikit + + + BE/KE + + + Sait + + + Minitit + + + Sekondit + + + Saitab sonit + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Rabisiekab Kibagegeitab arabuk + + + Rabisiekab Angolan + + + Dolaitab Australian + + + Rabisiekab Bahrain + + + Rabisiekab Burundi + + + Rabisiekab Botswana + + + Dolaitab Kanada + + + Rabisiekab Congo + + + Rabisiekab Swiss + + + Rabisiekab China + + + Rabisiekab Kepuvede + + + Rabisiekab Jibuti + + + Rabisiekab Algerian + + + Pauditab Misri + + + Rabisiekab Eritrea + + + Rabisiekab Ethiopia + + + Yuroit + + + pounditab Uingereza + + + Rabisiekab Ghana + + + Rabisiekab Gambia + + + Rabisiekab Guinea + + + Rabisiekab India + + + Rabisiekab Japan + + + Silingitab ya Kenya + Ksh + + + Rabisiekab Komoro + + + Dolaitab Liberia + + + Rabisiekab Lesoto + + + Rabisiekab Libya + + + Rabisiekab Moroccan + + + Rabisiekab Malagasy + + + Rabisiekab Mauritania + + + Rabisiekab Mauritius + + + Rabisiekaby Malawi + + + Rabisiekab Msumbiji + + + Dolaitab Namibia + + + Rabisiekab Nigeria + + + Rabisiekab Rwanda + + + Rabisiekab Saudia + + + Rabisiekab Shelisheli + + + Pouditab Sudan + + + Pouditab helena ne tilil + + + Leonit + + + siligitab Somalia + + + Rabisiekab Sao Tome ak Principe + + + Lilangenit + + + RabisiekabTunisia + + + silingitab Tanzania + + + Silingitab Uganda + + + Dolaitab ya Amareka + + + Rabisiekab CFA BEAC + + + Rabisiekab CFA BCEAO + + + Randitab Afrika nebo murot tai + + + Kwachaitab Zambia (1968–2012) + + + Kwachaitab Zambia + + + Dolaitab ya Zimbabwe + + + + + + Wei:W + Achicha:A + + + + diff --git a/library/Zend/Locale/Data/kln_KE.xml b/library/Zend/Locale/Data/kln_KE.xml new file mode 100755 index 000000000..c2441e161 --- /dev/null +++ b/library/Zend/Locale/Data/kln_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/km.xml b/library/Zend/Locale/Data/km.xml new file mode 100755 index 000000000..9efd7c361 --- /dev/null +++ b/library/Zend/Locale/Data/km.xml @@ -0,0 +1,4504 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + ភាសាអាហ្វារ + អាប់ខាហ៊្សាន + ភាសាអាវែស្តង់ + អាហ្វ្រីកាអាន + អាមហារីច + ភាសាអារ៉ាហ្គោន + អារ៉ាប់ + អារ៉ាប់​ស្តង់ដារ​ទំនើប + អាសាមីស + ភាសាអីម៉ារ៉ា + អាហ៊្សែរបែហ្សង់ + បេឡារុស្ស + ប៊ុលហ្ការី + ភាសាបាម្បារា + បង់ក្លាដែស + ទីបេ + ប្រីស្តុន + បូស្នី + កាតាឡាន + ឆេក + វេល + ដាណឺម៉ាក + អាល្លឺម៉ង់ + អាល្លឺម៉ង់ អូទ្រីស + អាល្លឺម៉ង់ ស្វីស + ភាសាប៊ូតាន + ក្រិច + អង់គ្លេស + អង់គ្លេស អូស្ត្រាលី + អង់គ្លេស កាណាដា + អង់គ្លេស ចក្រភព​អង់គ្លេស + អង់គ្លេស (ច.អ.) + អង់គ្លេស អាមេរិក + អង់គ្លេស (ស.រ.អា.) + អេស្ពេរ៉ាន់តូ + អេស្ប៉ាញ + អេស្ប៉ាញ អាមេរីកឡាតាំង + អេស្ប៉ាញ អឺរ៉ុប + អេស្តូនី + បាស្កេ + ភឺសៀន + ហ្វាំងឡង់ + ហ្វីលីពីន + ហ៊្វីជី + ហ្វារូស + បារាំង + ហ្វ្រីស៊ានខាងលិច + អៀរឡង់ + ភាសាហ្កែលិគ (gd) + ហ្គាលីស្យាន + ហ្គូរ៉ានី + អាល្លឺម៉ង ស្វីស + ហ្កុយ៉ារាទី + ហូសា + ហាវៃ + អ៊ីស្រាអែល + ហិណ្ឌូ + ក្រូអាត + ហៃទី + ហុងគ្រី + អារមេនី + អីនធើលីង + ឥណ្ឌូណេស៊ី + អ៊ីកបូ + អ៊ីស្លង់ + អ៊ីតាលី + ជប៉ុន + ជ្វា + ហ្សក​ហ្ស៊ី + កាហ្សាក់ស្តង់់ + ខ្មែរ + កន្នដ + កូរ៉េ + កាស្មៀរ + ឃឺដ + គៀរហ្គីស្តង់ + ឡាតំាង + លុចហ្សំបួរ + លីនកាឡា + ឡាវ + លីទុយអានី + ឡាតវីយ៉ា + ម៉ាឡាហ្គាស៊ី + ម៉ោរី + ម៉ាសេដូនី + មលយាល័ម + ភាសាម៉ុងហ្គោលី + មរាធិ + ម៉ាឡេស៊ី + ម៉ាល់តា + ភូមា + ន័រវែស បុកម៉ាល់ + នេប៉ាល់ + ហុល្លង់ + ផ្លាមីស + ន័រវែស នីនូស + ភាសាន័រវែស + អូសីតាន់ + អូរីយ៉ា + បឹនជាពិ + ប៉ូឡូញ + បាស្តូ + ព័រទុយហ្កាល់ + ព័រទុយហ្គាល់ ប្រេស៊ីល + ព័រទុយហ្គាល់ អឺរ៉ុប + កេទជួអា + រ៉ូម៉ង់ + ភាសារូន្ឌី + រូម៉ានី + ភាសាម៉ុលដាវី + រុស្ស៊ី + សំស្ក្រឹត + ​​ស៊ីន្តី + សើបូក្រូទៀន + ស្រីលង្កា + ស្លូវ៉ាគី + ស្លូវ៉ានី + ភាសាសាមូអា + សូម៉ាលី + អាល់បានី + សើប + សេសូដូ + ស៊ូដង់ + ស៊ុយអែដ + ស្វាហ៊ីលី + តាមីល + តេលុគុ + តាដហ្សីគីស្តង់ + ថៃ + ទីរិនយា + ទួគមេនីស្តង់ + ខ្លិងសុន + តុងហ្គោ + ទួរគី + តាតារ + ទ្វី + អ៊ុយហ្គឺរ + អ៊ុយក្រែន + មិន​ស្គាល់​ភាសា + អ៊ូរឌូ + អ៊ូហ្សបេគីស្តង់ + វៀតណាម + វូឡុហ្វ + ឃសា + ភាសាយីឌីហ្ស + យរូបា + ភាសាចួង + ម៉ារ៉ុក + ចិន + អក្សរ​ចិន​កាត់ + អក្សរ​ចិន​ពេញ + សូលូ + គ្មាន​ទិន្នន័យ​ភាសា + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ពិភពលោក + អាហ្វ្រិក + អាមេរិក​ខាង​ជើង + អាមេរិក​ខាង​ត្បូង + មហា​សមុទ្រ + អាព្រិក​ខាង​លិច + អាមេរិក​កណ្ដាល + អាព្រិក​ខាង​កើត + អាព្រិក​ខាង​ជើង + អាព្រិក​កណ្ដាល + អាព្រិក​ខាង​ត្បូង + អាមេរិក + អាមេរិក​ភាគ​ខាង​ជើង + ការ៉ាប៊ីន + អាស៊ី​ខាង​កើត + អាស៊ី​ខាង​ត្បូង + អាស៊ី អាគ្នេយ៍ + អឺរ៉ុប​ខាង​ត្បូង + អូស្ត្រាឡាស៊ី + មេឡែណេស៊ី + តំបន់​មីក្រូណេស៊ី + ប៉ូលីណេស៊ី + អាស៊ី + អាស៊ី​កណ្ដាល + អាស៊ី​ខាង​លិច + អឺរ៉ុប + អឺរ៉ុប​ខាង​កើត + អឺរ៉ុប​ខាង​ជើង + អឺរ៉ុប​ខាង​លិច + អាមេរិក​ឡាទីន + កោះ​អាសេនសិន + អង់ដូរ៉ា + អេមីរ៉ែទអារ៉ាប់រួម + អាហ្វហ្គានីស្ថាន + អង់ទីគ័រ និង​បាបុយដា + អង់កូឡា + អាល់បានី + អារមេនី + អង់ហ្គោឡា + អង់តាទីកា + អាហ្សង់ទីន + សៅម៉ៅ អាមេរិក + អូទ្រីស + អូស្ត្រាលី + អារូបា + កោះ​អាឡាំង + អាហ៊្សែរបែហ្សង់ + បូស្ន៉ី + បារបាដូស + បង់ក្លាដេស្ហ + បែលហ្ស៉ិក + ប៊ូរគីណាហ្វាសូ + ប៊ុលហ្គារី + បារ៉ែន + ប៊ូរុនឌី + បេណាំង + សង់ បាតេឡេម៉ី + ប៊ឺមុយដា + ព្រុយណេ + បូលីវី + ហុល្លង់ ការ៉ាប៊ីន + ប្រេស៊ីល + បាហាម៉ា + ប៊ូតាន + កោះ​ប៊ូវ៉េត + បុតស្វាណា + បេឡារុស្ស + បេលីហ្ស + កាណាដា + កោះ​កូកូស + កុងហ្គោ- គីនស្ហាសា + កុងហ្គោ (សាធារណរដ្ឋ​ប្រជាធិបតេយ្យ) + សាធារណរដ្ឋអាហ្វ្រិកកណ្ដាល + កុងហ្គោ - ប្រាហ្សាវីល + កុងហ្គោ (សធារណៈរដ្ឋ) + ស្វីស + កូដឌីវ័រ + កូតឌីវ័រ + កោះ​ខូក + ស៊ីលី + កាមេរូន + ចិន + កូឡុំប៊ី + កោះ​ឃ្លីភឺតុន + កូស្តារីកា + គុយបា + កាបវែរ + កូរ៉ាកៅ + កោះ​គ្រីស្មាស + ស៉ីពរ៍ + សាធារណរដ្ឋឆេក + អាល្លឺម៉ង់ + ឌៀហ្គោហ្គាស៊ី + ហ្ស៉ីបូទី + ដាណឺម៉ាក + ដូមីនីកា + សាធារណរដ្ឋដូមីនីកែន + អាល់ហ្សេរី + ជឺតា និង​ម៉េលីឡា + អេក្វាឌ័រ + អេស្តូនី + អេហ្ស៉ីប + សាហារ៉ាខាងលិច + អេរីទ្រា + អេស្ប៉ាញ + អេត្យូពី + សហភាព​អឺរ៉ុប + ហ្វាំងឡង់ + ហ្វីជី + កោះ​ហ្វក់ឡែន + កោះ​ហ្វក់ឡែន (Islas Malvinas) + មិក្រូនេស៊ី + កោះ​ហ្វារ៉ូ + បារាំង + ហ្គាបុង + ចក្រភព​អង់គ្លេស + ច.អ. + ហ្គ្រើណាដ + ហ្សកហ្ស៉ី + ហ្វ្វេន​ហ្គៀណា + ហ្គេនស៊ី + ហ្គាណា + ហ្គីប្រាលតា + ហ្គ្រោអង់ឡង់ + ហ្គាំប៊ី + ហ្គីណេ + ហ្គោដឺឡុប + ហ្គីណេអេក្វាទ័រ + ក្រិច + កោះ​ហ្សកហ្ស៊ី​ខាង​ត្បូង និង​សាន់វិច​ខាង​ត្បូង + ហ្គាតេម៉ាឡា + ហ្គាំ + ហ្គីណេប៊ីសូ + ហ្គីយ៉ាណា + ហុងកុង + ហុងកុង + កោះ​ហឺដ និង​ម៉ាក់ដូណាល់ + ហុងឌួរ៉ាស់ + ក្រូអាត + ហៃទី + ហុងគ្រី + កោះ​កាណារី + ឥណ្ឌូណេស៊ី + អៀរឡង់ + អ៊ីស្រាអែល + អែលអុហ្វមែន + ឥណ្ឌា + ដែន​មហា​សមុទ្រ​ឥណ្ឌា ចក្រភព​អង់គ្លេស + អ៊ីរ៉ាក់ + អ៊ីរ៉ង់ + អ៊ីស្លង់ + អ៊ីតាលី + ជឺស៊ី + ហ្សាម៉ាអ៉ិគ + ហ៊្សកដានី + ជប៉ុន + កេនយ៉ា + គៀរហ្គីស្តង់ + កម្ពុជា + គិរិបាទី + កុំម៉ូរ៉ូស + សង់ឃីត និង​ណេវីស + កូរ៉េ​ខាង​ជើង + កូរ៉េ​ខាង​ត្បូង + គុយវ៉ែត + កោះ​កៃម៉ង់ + កាហ្សាក់ស្តាង់់ + ឡាវ + លីបង់ + សង់​លូសៀ + លិចទេនស្តែន + ស្រីលង្កា + លីបេរីយ៉ា + លើសូតូ + លីទុយអានី + លុចហ្សំបួរ + ឡាតវីយ៉ា + លីប៊ី + ម៉ារ៉ុក + ម៉ូណាកូ + សាធារណរដ្ឋម៉ុលដាវី + ម៉ុងតេណេហ្គ្រោ + សង់​ម៉ាទីន + ម៉ាដាហ្កាស្ការ + កោះ​ម៉ាស់សល + ម៉ាសេដន + ម៉ាសេដ្វាន + ម៉ាលី + មីយ៉ាន់ម៉ា + ម៉ុងហ្គោលី + ម៉ាកាវ + ម៉ាកាវ + កោះ​ម៉ារីណា​ខាង​ជើង + ម៉ាទីនីក + ម៉ូរីតានី + ម៉ុង​សេរ៉ង់ + ម៉ាល់តា + ម៉ូរីទុស + ម៉ាល់ឌីវ + ម៉ាឡាវី + ម៉ិចសិក + ម៉ាឡេស៊ី + ម៉ូហ្សាំប៊ិក + ណាមីប៊ី + ញូកាឡេដូនៀ + នីហ្សេរ + កោះ​ណ័រហ្វក់ + នីហ្សេរីយ៉ា + នីការ៉ាហ្គ័រ + ហុល្លង់ + ន័រវែស + នេប៉ាល់ + ណូរូ + ណៀ + នូវែលហ្សេឡង់ + អូម៉ង់ + ប៉ាណាម៉ា + ប៉េរូ + ហ្វ្រេន​ប៉ូលី​ណេស៊ី + ប៉ាពូអានូវែលហ្គីណេ + ហ្វីលីពីន + ប៉ាគីស្ថាន + ប៉ូលូញ + សង់ព្យែរ និង​មីគីឡុង + កោះ​ភីតខារិន + ព័រតូរីកូ + ដែន​ប៉ាលេស្ទីន + ប៉ាលេស្ទីន + ព័រទុយហ្កាល់ + ផៅឡូ + ប៉ារ៉ាហ្គាយ + កាតារ + អៅលីយីង អុកស៊ីន + រ៉េអ៊ុយ៉ុង + រូម៉ានី + សើប + រុស្ស៊ី + រវ៉ាន់ដា + អារ៉ាប៊ីសាអ៊ូឌីត + កោះ​ស៊ូឡូម៉ុង + សីសែល + ស៊ូដង់ + ស៊ុយអែដ + សិង្ហបុរី + សង់​ហេឡេណា + ស្លូវេនី + ស្វាប៊ឺត និង​ហ្យង់ម៉ាយេន + ស្លូវ៉ាគី + សេរ៉ាឡេអូន + សាន​ម៉ារីណូ + សេនេហ្កាល់ + សូម៉ាលី + សូរីណាម + ស៊ូដង់​ខាង​ត្បូង + សៅ​តុំ និង​ព្រីនស៊ីប៉េ + អែលសាល់វ៉ាឌ័រ + សីង​ម៉ាធីន + ស៊ីរី + សូហ្ស៉ីឡង់ + ទ្រីស្តង់​ដា​ចូនហា + កោះ​កៃកូស និងទូក + ឆាដ + ដែន​បារាំង​ខាង​ត្បូង + តូហ្គូ + ថៃ + តាដហ្ស៉ីគីស្តង់ + តូខេឡៅ + ទីម័រ + ទីម័រ​ខាង​កើត + ទួគមេនីស្តង់ + ទុយនេស៊ី + តុងហ្គា + ទួរគី + ទ្រីនីដាត និង​តូបាហ្គោ + ទូវ៉ាលូ + តៃវ៉ាន់ + តង់ហ្សានី + អ៊ុយក្រែន + អ៊ូហ្កង់ដា + កោះ​អៅឡាយីង​អាមេរិក + សហរដ្ឋអាមេរិក + ស.រ.អ + អ៊ុយរុយហ្គាយ + អ៊ូហ្សបេគីស្តង់ + ទីក្រុងវ៉ាទីកង់ + សាំង​វីនសេន និង​ឌឹ​ហ្គ្រីណាឌីនីស + វេនេហ្ស៊ុយឡា + កោះ​វឺជិន​ចក្រភព​អង់គ្លេស + កោះ​វឺជីន​អាមេរិក + វៀតណាម + វ៉ាន់ណៅទូ + វ៉ាលីស និង​ហ្វូទូណា + សាមូអា + កូសូវ៉ូ + យេមែន + ម៉ាយុត + អាព្រិក​ភាគ​ខាង​ត្បូង + ហ្សាំប៊ី + ហ្ស៊ីមបាបវ៉េ + មិន​ស្គាល់​តំបន់ + + + ប្រតិទិន + ការ​តម្រៀប + រូបិយប័ណ្ណ + លេខ + + + លេខ​ឥណ្ឌា-អារ៉ាប់ + លេខ​ឥណ្ឌា-អារ៉ាប់​ពង្រីក + លេខ​អាមេនី + លេខ​តូច​អាមេនី + លេខ​បង់ក្លាដែស + លេខ​ឌីវ៉ាណាការី + លំដាប់​តម្រៀប​យូនីកូដ​លំនាំដើម + លេខ​អេត្យូពី + លេខ​ទទឹង​ពេញ + លេខ​ហ្សកហ្សី + ប្រតិទិន​ហ្សកហ្ស៊ី + លេខ​ក្រិក + លេខ​តូច​ក្រិក + លេខ​ហ្កុយ៉ារាទី + លេខ​កុមុឃី + លេខ​ទសភាគ​ចិន + លេខ​ទសភាគ​ចិន​អក្សរ​កាត់ + លេខ​ហិរញ្ញវត្ថុ​ចិន​អក្សរ​កាត់ + លេខ​ចិន​អក្សរ​ពេញ + លេខ​ហិរញ្ញវត្ថុ​ចិន​អក្សរ​ពេញ + លេខ​អ៊ីស្រាអែល + លេខ​ជប៉ុន + លេខ​ហិរញ្ញវត្ថុ​ជប៉ុន + លេខ​ខ្មែរ + លេខ​កន្នដ + លេខ​ឡាវ + លេខ​បច្ចឹម​ប្រទេស + លេខ​មលយាល័ម + លេខ​ភូមា + លេខ​អូរីយ៉ា + លេខ​រ៉ូមាំង + លេខ​តូច​រ៉ូមាំង + ស្វែងរក​ទូទៅ + ការ​តម្រៀប​ស្តង់ដារ + លេខ​តាមីល + លេខ​តាមីល + លេខ​តេលុគុ + លេខ​ថៃ + លេខ​តៃប៉ិ + + + ម៉ែត្រ + ចក្រភព​អង់គ្លេស + សហរដ្ឋអាមេរិក + + + ភាសា៖ {0} + អក្សរ៖ {0} + តំបន់៖ {0} + + + + [\u17CC \u17CE \u17CF \u17D1 \u17D0 ៈ \u17CB \u17C9 \u17CA \u17CD ក ខ គ ឃ ង ច ឆ ជ ឈ ញ ដ ឋ ឌ ឍ ណ ត ថ ទ ធ ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ ឲ ឪ {អា} ឥ ឦ ឧ {ឧក} ឩ ឯ ឰ ឱ ឳ ា \u17B7 \u17B8 \u17B9 \u17BA \u17BB \u17BC \u17BD ើ ឿ ៀ េ ែ ៃ ោ ៅ \u17C6 ះ \u17D2] + [\u17B4\u17B5\u200B ឝ ឞ] + [ក ខ គ ឃ ង ច ឆ ជ ឈ ញ ដ ឋ ឌ ឍ ណ ត ថ ទ ធ ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ ឪ ឥ ឦ ឧ ឩ ឯ ឰ ឱ ឳ] + [\- , ៖ ! ? . ។ ៕ ‘ ’ " “ ” ( ) \[ \] \{ \} ៙ ៚] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + ព.ស. + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM, y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E d MMM + mm:ss + y G + y G + GGGGG M/y + d-M-y G + E, d-M-y G + MMM y G + d MMM y G + E, d MMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h a – h a + h-h a + + + H-H + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a – h a v + h-h a v + + + H-H v + + + M-M + + + d/M– d/M + d/M - d/M + + + E, d/M– E, d/M + E, d/M - E, d/M + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y-y G + + + M/y - M/y G + M/y - M/y G + + + d/M/y - d/M/y G + d/M/y - d/M/y G + d/M/y - d/M/y G + + + E, d/M/y - E, d/M/y G + E, d/M/y - E, d/M/y G + E, d/M/y - E, d/M/y G + + + MM – MM-y G + MM-y – MM-y G + + + d-d MMM y G + d MMM y – d MMM + d MMM y - d MMM y G + + + E, dd MMM y - E, dd MMM y G + E, dd MMM y - E, dd MMM y G + E, dd-MM-y – E, dd MMM y G + + + MM – MM y G + MM-y – MM-y G + + + + + + + + + មករា + កុម្ភៈ + មីនា + មេសា + ឧសភា + មិថុនា + កក្កដា + សីហា + កញ្ញា + តុលា + វិច្ឆិកា + ធ្នូ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + មករា + កុម្ភៈ + មីនា + មេសា + ឧសភា + មិថុនា + កក្កដា + សីហា + កញ្ញា + តុលា + វិច្ឆិកា + ធ្នូ + + + + + មករា + កុម្ភៈ + មីនា + មេសា + ឧសភា + មិថុនា + កក្កដា + សីហា + កញ្ញា + តុលា + វិច្ឆិកា + ធ្នូ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + មករា + កុម្ភៈ + មីនា + មេសា + ឧសភា + មិថុនា + កក្កដា + សីហា + កញ្ញា + តុលា + វិច្ឆិកា + ធ្នូ + + + + + + + អាទិត្យ + ចន្ទ + អង្គារ + ពុធ + ព្រហស្បតិ៍ + សុក្រ + សៅរ៍ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + អាទិត្យ + ចន្ទ + អង្គារ + ពុធ + ព្រហស្បតិ៍ + សុក្រ + សៅរ៍ + + + អាទិត្យ + ចន្ទ + អង្គារ + ពុធ + ព្រហស្បតិ៍ + សុក្រ + សៅរ៍ + + + + + អាទិត្យ + ចន្ទ + អង្គារ + ពុធ + ព្រហស្បតិ៍ + សុក្រ + សៅរ៍ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + អាទិត្យ + ចន្ទ + អង្គារ + ពុធ + ព្រហស្បតិ៍ + សុក្រ + សៅរ៍ + + + អាទិត្យ + ចន្ទ + អង្គារ + ពុធ + ព្រហស្បតិ៍ + សុក្រ + សៅរ៍ + + + + + + + ត្រីមាស ១ + ត្រីមាស ២ + ត្រីមាស ៣ + ត្រីមាស ៤ + + + + + + + + + ត្រីមាសទី ១ + ត្រីមាសទី ២ + ត្រីមាសទី ៣ + ត្រីមាសទី ៤ + + + + + ត្រីមាស ១ + ត្រីមាស ២ + ត្រីមាស ៣ + ត្រីមាស ៤ + + + + + + + + + ត្រីមាសទី ១ + ត្រីមាសទី ២ + ត្រីមាសទី ៣ + ត្រីមាសទី ៤ + + + + + + + ព្រឹក + ល្ងាច + + + + + + មុន​គ្រិស្តសករាជ + គ្រិស្តសករាជ + + + មុន គ.ស. + ក្រោយ គ.ស. + គ.ស. + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y នៃ G + MMM y នៃ G + d MMM y នៃ G + E d MMM y នៃ G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d MMM + LLL + d MMM + E d MMM + mm:ss + y + M-y + d-M-y + E d-M-y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a – h a + h-h a + + + H-H + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M-M + + + d/M– d/M + d/M - d/M + + + E d/M– E d/M + E d/M - E d/M + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d MMM - E d MMM + E d MMM - E d MMM + + + y-y + + + M/y - M/y + M/y - M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E d/M/y - E d/M/y + E d/M/y - E d/M/y + E d/M/y - E d/M/y + + + MMM–MMM​ y + MMM y – MMM y + + + d-d MMM y + d MMM – d MMM y + d MMM y - d MMM y + + + E dd MMM y - E dd MMM y + E dd MMM y - E dd MMM y + E dd-MM-y – E dd MMM y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + សករាជ + + + ឆ្នាំ + ឆ្នាំ​មុន + ឆ្នាំ​នេះ + ឆ្នាំ​ក្រោយ + + ក្នុង​រយៈ​ពេល {0} ឆ្នាំ + + + {0} ឆ្នាំ​មុន + + + + ខែ + ខែ​មុន + ខែ​នេះ + ខែ​ក្រោយ + + ក្នុង​រយៈ​ពេល {0} ខែ + + + {0} ខែមុន + + + + សប្ដាហ៍ + សប្ដាហ៍​មុន + សប្ដាហ៍​នេះ + សប្ដាហ៍​ក្រោយ + + ក្នុង​រយៈ​ពេល {0} សប្ដាហ៍ + + + {0} សប្ដាហ៍​មុន + + + + ថ្ងៃ + ម្សិល​ម៉្ងៃ + ម្សិលមិញ + ថ្ងៃ​នេះ + ថ្ងៃ​ស្អែក + ​ខាន​ស្អែក + + ក្នុង​រយៈ​ពេល {0} ថ្ងៃ + + + {0} ថ្ងៃ​មុន + + + + ថ្ងៃ​នៃ​សប្ដាហ៍ + + + ថ្ងៃ​អាទិត្យ​មុន + ថ្ងៃ​អាទិត្យ​នេះ + ថ្ងៃ​អាទិត្យ​ក្រោយ + + + ថ្ងៃ​ច័ន្ទ​មុន + ថ្ងៃ​ច័ន្ទ​នេះ + ថ្ងៃ​ច័ន្ទ​ក្រោយ + + + ថ្ងៃ​អង្គារ​មុន + ថ្ងៃ​អង្គារ​នេះ + ថ្ងៃ​អង្គារ​ក្រោយ + + + ថ្ងៃ​ពុធ​មុន + ថ្ងៃ​ពុធ​នេះ + ថ្ងៃ​ពុធ​ក្រោយ + + + ថ្ងៃ​ព្រហស្បតិ៍​មុន + ថ្ងៃ​ព្រហស្បតិ៍​នេះ + ថ្ងៃ​ព្រហស្បតិ៍​ក្រោយ + + + ថ្ងៃ​សុក្រ​មុន + ថ្ងៃ​សុក្រ​នេះ + ថ្ងៃ​សុក្រ​ក្រោយ + + + ថ្ងៃ​សៅរ៍​មុន + ថ្ងៃ​សៅរ៍​នេះ + ថ្ងៃ​សៅរ៍​ក្រោយ + + + ព្រឹក/ល្ងាច + + + ម៉ោង + + ក្នុង​រយៈ​ពេល {0} ម៉ោង + + + {0} ម៉ោង​មុន + + + + នាទី + + ក្នុង​រយៈពេល {0} នាទី + + + {0} នាទី​មុន + + + + វិនាទី + ឥឡូវ + + ក្នុង​រយៈពេល {0} វិនាទី + + + {0} វិនាទី​មុន + + + + តំបន់​ពេល​វេលា + + + + +HH:mm;-HH:mm + ម៉ោង​សកល{0} + ម៉ោង​សកល + ម៉ោង​នៅ​ {0} + ម៉ោង​ពេល​ថ្ងៃ​នៅ​{0} + ម៉ោង​ស្តង់ដារ​នៅ​{0} + {1} ({0}) + + មិនស្គាល់ + + + អង់ដូរ៉ា + + + ឌុយបៃ + + + កាប៊ុល + + + អង់ទីហ្គា + + + អង់ហ្គីឡា + + + ទីរ៉ាណេ + + + យ៉េរ៉េវ៉ាន់ + + + លូអង់ដា + + + រ៉ូធីរ៉ា + + + ផាល់ម័រ + + + ស៊ីយ៉ូវ៉ា + + + ម៉ៅសាន់ + + + ដាវីស + + + វ៉ូស្តុក + + + កាសី + + + ឌុយម៉ុងដឺអ៊ុយវីល + + + ម៉ាក់មុយដូ + + + រ៉យហ្គាឡេហ្គូស + + + ម៉ែនឌូហ្សា + + + សាំងហ្សង់ + + + អ៊ុយសូអៃ + + + ឡារ៉យ៉ា + + + សានលូអ៊ីស + + + កាតាម៉ាកា + + + សាល់តា + + + សូសុយ + + + ទូគូម៉ង់ + + + កូដូបា + + + ប៊ុយណូស៊ែ + + + ប៉ាហ្គោ ប៉ាហ្គោ + + + វីយែន + + + ភឺធ + + + អ៊ុយក្លា + + + ដាវីន + + + អាឌីឡៃ + + + ប្រូកខិនហីល + + + ខូរៀ + + + ម៉ែលប៊ើន + + + ហូបាត + + + លីនឌីម៉ែន + + + ស៊ីតនី + + + ប្រីសបាណេ + + + ម៉ាកខ្វារី + + + ឡតហូវ៉េ + + + អារ៉ូបា + + + ម៉ារៀហាំ + + + បាគូ + + + សារ៉ាយ៉េវ៉ូ + + + បាបាដុស + + + ដាក្កា + + + ព្រុចសែល + + + អៅហ្គាឌូហ្គូ + + + សូហ៊្វីយ៉ា + + + បារ៉ែន + + + ប៊ូយ៉ាំប៊ូរ៉ា + + + ព័រតូណូវ៉ូ + + + សាំង​បាធីលីម៉ី + + + ប៉ឺមុយដា + + + ប្រុយណេ + + + ឡាប៉ាស + + + ក្រាលែនឌីក + + + អ៊ីរ៉ុយណេភី + + + រ៉ៃអូប្រានកូ + + + ព័រតូ​វិលហូ + + + បៅ​វីស្តា + + + ម៉ាណាអ៊ូស + + + គុយអាបា + + + សាន់តារឹម + + + ខេមបូហ្គ្រានឌី + + + បេឡឹម + + + អារ៉ាហ្គុយណា + + + សៅ​ប៉ូឡូ + + + បាហៀ + + + ហ្វ័រតាឡេហ្សារ + + + ម៉ាកសេអូ + + + រ៉េស៊ីហ្វី + + + ណូរ៉ុនហា + + + ណាស្សូ + + + ធីមភូ + + + ហ្គាបូរ៉ូន + + + មីនស្កិ៍ + + + បេលី + + + ដាវសុន + + + វាយហស + + + អ៊ីនូវីក + + + វ៉ាន់កូវើ + + + ដាវសុន​ក្រិក + + + ក្រេស្តុន + + + យេឡូណៃ + + + អែតម៉ុងតុង + + + ស្វីត​ខឺរិន + + + ខេមប្រីដបេ + + + រ៉េកីណា + + + វីនីភិក + + + រ៉េ​ស៊ូឡូត + + + រ៉េនីរីវើ + + + រ៉ាន់ឃីន​អ៊ីនឡិត + + + អាទីកូកាន + + + សាន់ដឺ​បេ + + + នីពីកុន + + + តូរ៉ុនតូ + + + អ៊ីកាឡូអ៊ីត + + + ប៉ាងនីទុង + + + ម៉ុងតុន + + + ហាលីហ្វាក + + + កូសេបេ + + + ក្លាស​បេ + + + ប្លង់​សាប់ឡុង + + + សាំង​ចន + + + កូកូស + + + គីនស្ហាសា + + + លូប៊ុមបាស៊ី + + + បង់ហ្គី + + + ប្រាស្ហាវីល + + + សូរីច + + + អាប៊ីដ្យាន + + + រ៉ារ៉ូតុងហ្គា + + + អ៊ីស្ទ័រ + + + សាន់ត្យាហ្គោ + + + ឌូអ៊ូឡា + + + កាសហ្គារ + + + អ៊ូរាំហ្គី + + + ឆុងហ្គីង + + + សៀងហៃ + + + ហាប៊ីន + + + បូហ្គោតា + + + កូស្តារីកា + + + ឡាហាវ៉ាន + + + កាប់វែរ + + + កូរ៉ាកៅ + + + គ្រីស្មាស + + + នីកូស៊ី + + + ប្រាក + + + ប៊ូស៊ីងហ្គែន + + + បែរឡាំង + + + ជីប៊ូទី + + + កូប៉ិនហាក + + + ដូមីនីក + + + សាន់ដូម៉ាំង + + + អាល់ហ្សេ + + + ហ្គាឡាប៉ាហ្គោស + + + ហ្គុយ៉ាហ្គីល + + + តាលិន + + + គែរ + + + អែល​អ៊ុយញៀន + + + អាស្មារ៉ា + + + កាណារី + + + ឈៀតា + + + ម៉ាឌ្រីដ + + + អាឌីសអាបេបា + + + ហែលស៊ិងគី + + + ហ្វីជី + + + ស្តង់លី + + + ឈូអុក + + + ផុនប៉ី + + + កូស្រាអ៊ី + + + ហ្វារ៉ូ + + + ប៉ារីស + + + លីប្រីវីល + + + + ម៉ោង​​នៅ​ចក្រភព​អង់គ្លេស រដូវ​ក្ដៅ + + ឡុងដ៍ + + + ហ្គ្រើណាដ + + + ប៊ីលីស៊ី + + + ហ្គៃយ៉ាណេ + + + ហ្គេនស៊ី + + + អាក្រា + + + ហ្ស៊ីប្រាល់តា + + + ធុឡេ + + + ហ្កូដតាអាប + + + ស្ករ៉េប៊ីសាន់ + + + ដែនម៉ាក់ស្ហាវិន + + + បង់ហ្ស៊ុល + + + កូណាគ្រី + + + ហ្គោដេលូប៉េ + + + ម៉ាឡាបូ + + + អាថែន + + + ហ្សកហ្ស៊ី​ខាង​ត្បូង + + + ក្វាតេម៉ាឡា + + + ហ្គាំ + + + ប៊ីស្សូ + + + ហ្គីយ៉ាន + + + ហុងកុង + + + តេហ្គូស៊ីហ្គាល់ប៉ា + + + សាគ្រែប + + + ព័រអូប៉្រប៉ាំង + + + ប៊ុយដាប៉ែស + + + ហ្សាការតា + + + ប៉ុនទីអាណាក់ + + + ម៉ាកាសសារ + + + យ៉ាវ៉ាភូរ៉ា + + + + ម៉ោង​នៅ​អៀរឡង់​ រដូវ​ក្ដៅ + + ឌុយប្លាំង + + + ហ្ស៊េរុយសាឡិម + + + អែលអុហ្វម៉ែន + + + កុលកាតា + + + កាហ្គោ + + + បាកដាដ + + + តេហេរ៉ង់ + + + រីក្យាវីក + + + រ៉ូម + + + ជេស៊ី + + + ហ្សាម៉ាអ៊ីក + + + អាម៉ាន់ + + + តូក្យូ + + + ណៃរ៉ូប៊ី + + + ប៊ីស្កេក + + + ភ្នំពេញ + + + អ៊ីនដឺប៊ូរី + + + គីរីទីម៉ាទី + + + តារ៉ាវ៉ា + + + កូម័រ + + + សាំង​ឃីត + + + ព្យុងយ៉ាង + + + សេអ៊ូល + + + កូវ៉ែត + + + កៃមែន + + + អាកទូ + + + អូរ៉ាល់ + + + អាកទូប៊ី + + + កីស៊ីឡូដា + + + អាល់ម៉ាទី + + + វៀងចន្ទន៍ + + + បេរូត + + + សាំង​លូសៀ + + + វ៉ាឌូស + + + កូឡុំបូ + + + ម៉ុងរ៉ូវីយ៉ា + + + ម៉ាសេរុយ + + + វីលនីញូស + + + លុចសំបួ + + + រីហ្គា + + + ទ្រីប៉ូលី + + + កាសាប្លាំងកា + + + ម៉ូណាកូ + + + ជីស៊ីណូ + + + ប៉ូដហ្គោរីកា + + + ម៉ារីហ្គុត + + + អង់តាណាណារីវ + + + ក្វាហ្សាលៀន + + + ម៉ាហ្សូរ៉ូ + + + ស្កុបជេ + + + បាម៉ាកូ + + + រ៉ង់ហ្គូន + + + + + + អ៊ូឡង់បាទ័រ + + + ឈូបាល់សាន + + + ម៉ាកាវ + + + សៃប៉ាន + + + ម៉ាទីនីហ្គី + + + ណួកសុត + + + ម៉ុងស៊ែរ៉ា + + + ម៉ាល់តា + + + ម៉ូរីស + + + ម៉ាល់ឌីវ + + + ប្លាំងទីរ៉េ + + + ទីយ្យូអាណា + + + សាន់តាអ៊ីសាប៊ែល + + + ហ៊ែម៉ូស៊ីឡូ + + + ម៉ាហ្សាតឡង់ + + + ជីហួហួ + + + បាហៀបង់ដេរ៉ាស + + + អូជីណាហ្កា + + + ម៉ុនតេរ៉េ + + + ម៉ិកស៊ីកូ​ស៊ីធី + + + ម៉ាតាម៉ូរ៉ូស + + + ម៉េរីដា + + + ខានខុន + + + គូឡាឡាំពួ + + + ឃឺតចីង + + + ម៉ាពុយតូ + + + វីនដុក + + + ណូមៀ + + + នីញ៉ាម៉េ + + + ណ័រហ្វុក + + + ឡាហ្គូស + + + ម៉ាណាហ្គា + + + អាំស្ទែដាំ + + + អូស្លូ + + + កដ្ឋមណ្ឌូ + + + ណៅរ៉ូ + + + នុយ + + + ចាថាំ + + + អាអ៊ុកឡែន + + + ម៉ាស្កាត + + + ប៉ាណាម៉ា + + + លីម៉ា + + + តាហីទី + + + ម៉ាហ្គីសាស + + + ហ្គាំបៀ + + + ព័រម៉ូរេសប៊ី + + + ម៉ានីល + + + ការ៉ាជី + + + វ៉ាសូវី + + + មីហ្គីឡុង + + + ភីតខៃរ៉ិន + + + ព័រតូរីកូ + + + កាសា + + + ហេវ័ន + + + អាសូរ៉េស + + + ម៉ាដៀរ៉ា + + + លីសបោន + + + ប៉ាឡៅ + + + អាសង់ស្យុង + + + កាតា + + + រេអ៊ុយ៉ុង + + + ប៊ុយការ៉េស + + + បែលក្រាដ + + + កាលីនីងហ្រ្គាដ + + + មូស្គូ + + + វ៉ុលហ្គោហ្គ្រាដ + + + សាម៉ារ៉ា + + + យ៉េកាធឺរិនប៊ើក + + + អ៊ូម + + + ណូវ៉ូស៊ីប៊ឺក + + + ណូវ៉ូឃូសណេត + + + ក្រាសនុយ៉ាក + + + អ៊ីឃឺត + + + យ៉ាកូត + + + វ័រលាដីវ៉ូស្តុក + + + ខាន់ឌីហ្គា + + + សាខាលីន + + + អ៊ូសណេរ៉ា + + + ម៉ាហ្គាដាន + + + កាំឆាតកា + + + អាណាឌី + + + គីហ្គាលី + + + រីយ៉ាដ + + + ហ្គាដាល់ខាណាល់ + + + ម៉ាហេ + + + ខាទុំ + + + ស្តុកខុល + + + សិង្ហបូរី + + + សាំងហេឡេណា + + + ជូបហ្សាណា + + + ឡុង​យ៉ា​ប៊ីយេន + + + ប្រាទីសឡាវ៉ា + + + ហ្វ្រីថោន + + + សាំងម៉ារ៉ាំង + + + ដាកា + + + ម៉ូហ្គាឌីស្យូ + + + ប៉ារ៉ាម៉ារីបូ + + + ជូបា + + + សៅតុំ + + + អែលសាល់វ៉ាឌ័រ + + + ឡូវើ​ព្រីន​ហ្គ័រទ័រ + + + ដាម៉ាស + + + បាបាន + + + ហ្គ្រេន​ទូក + + + ដ្យាមេណា + + + ឃឺហ្គុយឡែន + + + ឡូម៉េ + + + បាងកក + + + ឌូស្ហាន់បេ + + + ហ្វាកៅហ្វូ + + + ដេលី + + + អាសហ្គាបាត + + + ទុយនីស + + + តុងហ្គាតាពូ + + + អ៊ីស្តង់ប៊ុល + + + ព័រអេស្ប៉ាញ + + + ហ្វូណាហ្វូទី + + + តៃប៉ិ + + + ដាអ៊ីសាឡាំ + + + អ៊ុយហ្គោរ៉ូដ + + + កៀវ + + + ស៊ីមហ្វើរ៉ុប៉ូល + + + ហ្សាប៉ូរ៉ូហ្ស៊ីយ៉េ + + + កំប៉ាឡា + + + មីតវ៉េ + + + ចនស្តុន + + + វ៉ាគី + + + អាដាក + + + ណូម + + + ហូណូលូលូ + + + អង់ចូរ៉ាក + + + យ៉ាគូតាត + + + ស៊ីតកា + + + ហ្យូនៀ + + + មេត្លា ឃែតឡា + + + ឡូអង់ហ្គិឡេស + + + ប៊ូអ៊ីសេ + + + ផូនីក + + + ដែនវើ + + + ប៊ឺឡា ដាកូតា​ខាង​ត្បូង + + + ញូ​សាឡឹម ដាកូតា​ខាង​ជើង + + + សីនធឺ ដាកូតា​ខាង​ជើង + + + ស៊ីកាកូ + + + ម៉េណូមីនី + + + វិនសេណេស ឥណ្ឌា + + + ភីធើ​ប៊ឹក ឥណ្ឌា + + + ថែល​ស៊ីធី ឥណ្ឌា + + + ណុក ឥណ្ឌា + + + វីណាម៉ាក់ ឥណ្ឌា + + + ម៉ារេនកូ ឥណ្ឌា + + + ឥណ្ឌាណាប៉ូលីស + + + លូអ៊ីវីល + + + វេវ៉ៃ ឥណ្ឌា + + + ម៉ងទីសេឡូ កេនទូគី + + + ដេត្រូអ៊ីត + + + ញូយ៉ក + + + ម៉ុងតេវីដេអូ + + + សាម៉ាកាន់ + + + តាស្កិន + + + បុរីវ៉ាទីកង់ + + + សាំង​វីនសេន + + + ការ៉ាកាស + + + តូតូឡា + + + សាំង​តូម៉ាស់ + + + ហូជីមីញ + + + អ៊ីហ្វាតេ + + + វ៉ាលីស + + + អាពី + + + អាដែន + + + ម៉ាយុត + + + ជូហានណេប៊ឺហ្គ + + + លូសាកា + + + ហារ៉ារ៉េ + + + + ម៉ោង​នៅ​អាហ្វហ្គានីស្ថាន + + + + + ម៉ោង​នៅ​អាហ្វ្រិក​កណ្ដាល + + + + + ម៉ោង​នៅ​អាហ្វ្រិក​ខាង​កើត + + + + + ម៉ោង​នៅ​អាហ្វ្រិក​ខាង​ត្បូង + + + + + ម៉ោង​នៅ​អាហ្វ្រិក​ខាង​លិច + ម៉ោង​ស្តង់ដារ​នៅ​អាហ្វ្រិក​ខាង​លិច + ម៉ោង​​រដូវ​ក្ដៅ​នៅ​អាហ្វ្រិក​​​ខាងលិច + + + + + ម៉ោង​នៅ​អាឡាស្កា + ម៉ោង​ស្តង់ដារ​នៅ​អាឡាស្កា + ម៉ោង​ពេល​ថ្ងៃ​នៅ​​អាឡាស្កា + + + + + ម៉ោង​នៅ​អាម៉ាសូន + ម៉ោង​ស្តង់ដារ​នៅ​អាម៉ាសូន + ម៉ោង​នៅ​អាម៉ាសូន រដូវ​ក្ដៅ + + + + + ម៉ោង​ភាគ​កណ្ដាល​នៅ​អាមេរិក​ខាង​ជើង + ម៉ោង​ស្តង់ដារ​ភាគ​កណ្ដាល​នៅ​អាមេរិក​ខាង​ជើង + ម៉ោង​ពេល​ថ្ងៃ​ភាគ​កណ្ដាល​នៅ​អាមេរិក​ខាង​ជើង + + + + + ម៉ោង​ភាគ​ខាង​កើត​នៅ​អាមេរិក​ខាង​ជើង + ម៉ោង​ស្តង់ដារ​ភាគ​ខាង​កើត​នៅ​អាមេរិក​ខាង​ជើង + ម៉ោង​ពេល​ថ្ងៃ​ភាគខាង​ជើង​នៅ​អាមេរិក​ខាង​ត្បូង + + + + + ម៉ោង​នៅ​តំបន់​ភ្នំ​អាមេរិក​ភាគ​ខាង​ជើង + ម៉ោង​ស្តង់ដារ​នៅ​តំបន់​ភ្នំ​អាមេរិក​ខាង​ជើង + ម៉ោង​ពេល​ថ្ងៃ​នៅ​តំបន់​ភ្នំ​អាមេរិក​ភាគ​ខាង​ជើង + + + + + ម៉ោង​ភាគ​ខាង​លិច​នៅ​អាមរិក​ខាង​ជើង + ម៉ោង​ស្តង់ដារ​ភាគ​ខាង​លិច​នៅ​អាមេរិក​ខាង​ជើង + ម៉ោង​ពេល​ថ្ងៃ​​ភាគ​ខាងលិច​នៅ​អាមេរិក​ភាគ​ខាង​ជើង + + + + + ម៉ោង​នៅ​អារ៉ាប់ + ម៉ោង​ស្តង់ដារ​នៅ​អារ៉ាប់ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​អារ៉ាប់ + + + + + ម៉ោង​នៅ​អាសង់ទីន + ម៉ោង​​ស្តង់ដារ​នៅ​អាសង់ទីន + ម៉ោង​នៅ​អាង់ទីន រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អាសង់​ទីន​​ខាង​លិច + ម៉ោង​ស្តង់ដារ​នៅ​អាសង់ទីន​​ខាង​លិច + ម៉ោង​នៅ​អាសង់ទីន​​ខាង​លិច រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អាមេនី + ម៉ោង​ស្ដង់ដារ​នៅ​អាមេនី + ម៉ោង​នៅ​អាមេនី រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អាត្លង់ទិក + ម៉ោង​ស្តង់ដារ​នៅ​អាត្លង់ទិក + ម៉ោង​ពេល​ថ្ងៃ​នៅ​អាត្លង់ទិក + + + + + ម៉ោង​នៅអូស្ត្រាលី​កណ្ដាល + ម៉ោង​ស្តង់ដារ​នៅ​អូស្ត្រាលី​កណ្ដាល + ម៉ោង​ពេលថ្ងៃ​​​​នៅ​អូស្ត្រាលី​កណ្ដាល + + + + + ម៉ោង​ពេល​ថ្ងៃ​​ភាគ​ខាង​លិច​នៅ​អូស្ត្រាលី​កណ្ដាល + ម៉ោង​ស្តង់ដារ​នៅ​ភាគ​ខាង​លិច​នៃ​អូស្ត្រាលី​កណ្ដាល + ម៉ោង​ពេល​ថ្ងៃ​នៅ​​ភាគ​ខាង​លិច​នៃ​អូស្ត្រាលី​ខាង​លិច + + + + + ម៉ោង​ស្តងដារ​នៅ​អូស្ត្រាលី​ខាង​កើត + ម៉ោង​ស្តង់ដារ​នៅ​អូស្ត្រាលី​ខាង​កើត + ម៉ោង​ពេល​ថ្ងៃ​នៅ​អូស្ត្រាលី​ខាង​កើត + + + + + ម៉ោង​​​នៅ​អូស្ត្រាលី​ខាង​លិច + ម៉ោង​​ស្តង់ដារ​នៅ​អូស្ត្រាលី​ខាង​លិច + ម៉ោង​ពេល​ថ្ងៃ​នៅ​អូស្ត្រាលី​ខាង​លិច + + + + + ម៉ោង​នៅ​អាស៊ែបៃហ្សង់ + ម៉ោង​ស្តង់ដារ​នៅ​អាស៊ែបៃហ្សង់ + ម៉ោង​នៅ​អាស៊ែបៃហ្សង់ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អេហ្សស + ម៉ោង​ស្តង់ដារ​នៅ​អេហ្សស + ម៉ោង​នៅ​អេហ្សស រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​បង់ក្លាដែស + ម៉ោង​ស្ដង់ដារ​នៅ​បង់ក្លាដែស + ម៉ោង​នៅ​បង់ក្លាដែស រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ប៊ូតង់ + + + + + ម៉ោង​នៅ​បូលីវី + + + + + ម៉ោង​នៅ​ប្រាស៊ីលីយ៉ា + ម៉ោង​ស្តង់ដារ​នៅ​ប្រាស៊ីលីយ៉ា + ម៉ោង​នៅ​ប្រាស៊ីលីយ៉ា​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ដារូសាឡឹម ប្រុយណេ + + + + + ម៉ោង​នៅ​កាប់វែរ + ម៉ោង​ស្តង់ដារ​នៅ​កាប់វែរ + ម៉ោង​​រដូវ​ក្ដៅនៅ​កាប់វែរ + + + + + ម៉ោង​នៅ​ចាំម៉ូរ៉ូ + + + + + ម៉ោង​នៅ​ចាថាំ + ម៉ោង​ស្តង់ដារ​នៅ​ចាថាំ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​ចាថាំ + + + + + ម៉ោង​នៅ​ស៊ីលី + ម៉ោង​ស្តង់ដារ​នៅ​ស៊ីលី + ម៉ោង​នៅ​ស៊ីលី រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ចិន + ម៉ោង​ស្តង់ដារ​នៅ​ចិន + ម៉ោង​ពេល​ថ្ងៃ​នៅ​ចិន + + + + + ម៉ោង​នៅ​ឆូបាល់សាន + ម៉ោង​ស្តង់ដារ​នៅ​ឆូបាល់សាន + ម៉ោង​នៅ​ឆូបាល់សាន រដូច​ក្ដៅ + + + + + ម៉ោង​នៅ​កោះ​គ្រីស្មាស + + + + + ម៉ោង​នៅ​កោះ​កូកូស + + + + + ម៉ោង​នៅ​កូឡុំប៊ី + ម៉ោង​ស្តង់ដារ​នៅ​កូឡុំប៊ី + ម៉ោង​នៅ​កូឡុំប៊ី រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​កោះ​ខូក + ម៉ោង​ស្តង់ដារ​នៅ​កោះ​ខូក + ម៉ោង​នៅ​កោះ​ខូក​ពាក់កណ្ដាល​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​គុយបា + ម៉ោង​ស្តង់ដារ​នៅ​គុយបា + ម៉ោង​ពេល​ថ្ងៃ​នៅ​គុយបា + + + + + ម៉ោង​នៅ​ដាវីស + + + + + ម៉ោង​នៅ​ឌុយម៉ុងដឺអ៊ុយវីល + + + + + ម៉ោង​នៅ​​ទីម័រ​ខាង​កើត + + + + + ម៉ោង​នៅ​កោះ​​ខាង​កើត + ម៉ោង​ស្តង់ដារ​នៅ​កោះ​​​ខាង​កើត + ម៉ោង​នៅ​កោះ​​ខាង​កើត រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អេក្វាទ័រ + + + + + ម៉ោង​នៅ​អឺរ៉ុប​កណ្ដាល + ម៉ោង​ស្តង់ដារ​នៅ​អឺរ៉ុប​កណ្ដាល + ម៉ោង​នៅ​អឺរ៉ុប​កណ្ដាល រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អឺរ៉ុប​​ខាង​កើត​ + ម៉ោង​ស្តង់ដារ​​នៅ​អឺរ៉ុប​​ខាង​កើត​ + ម៉ោង​នៅ​អឺរ៉ុប​​ខាង​កើត​ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អឺរ៉ុប​ខាង​លិច + ម៉ោង​ស្តង់ដារ​នៅ​អឺរ៉ុប​ខាង​លិច + ម៉ោង​នៅ​អឺរ៉ុប​ខាង​លិច រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​កោះ​ហ្វក់ឡែន + ម៉ោង​ស្តង់ដារ​នៅ​កោះ​ហ្វក់ឡែន + ម៉ោង​នៅ​កោះ​ហ្វក់ឡែន រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ហ្វីជី + ម៉ោង​ស្តង់ដារ​នៅ​ហ៊្វីជី + ម៉ោង​នៅ​ហ៊្វីជី ​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ឃ្វីយ៉ាន​បារាំង + + + + + ម៉ោង​នៅ​អែតាឃីត និង​បារាំខាង​ត្បូង + + + + + ម៉ោង​នៅ​កាឡាប៉ាកូស + + + + + ម៉ោង​នៅ​កាំបៀ + + + + + ម៉ោង​នៅ​ហ្សកហ្ស៊ី + ម៉ោង​ស្តង់ដារ​នៅ​ហ្សកហ្ស៊ី + ម៉ោង​នៅ​ហ្សកហ្ស៊ី ​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​កោះ​កីប៊ឺត + + + + + ម៉ោងនៅគ្រីនវិច + + + + + ម៉ោង​​នៅ​ហ្គ្រោអង់ឡង់ + ម៉ោង​​​ស្តង់ដារ​នៅ​ហ្គ្រោអង់ឡង់​​​ខាង​កើត + ម៉ោង​​នៅ​ហ្គ្រោអង់ឡង់​​ខាង​កើត​ រដូវ​ក្ដៅ + + + + + ម៉ោង​​នៅ​ហ្គ្រោអង់ឡង់​​ខាងលិច + ម៉ោង​​​ស្តង់ដារ​នៅ​ហ្គ្រោអង់ឡង់​​ខាង​លិច + ម៉ោង​​នៅ​ហ្គ្រោអង់ឡង់​ខាង​​លិច​ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​កាល់ + + + + + ម៉ោង​នៅ​ឃ្វីយ៉ាន + + + + + ម៉ោង​​នៅ​ហាវៃ-អាល់ដ្យូសិន + ម៉ោង​ស្តង់ដារ​​នៅ​ហាវៃ-អាល់ដ្យូសិន + ម៉ោង​ពេល​ថ្ងៃ​នៅ​ហាវៃ-អាល់ដ្យូសិន + + + + + ម៉ោង​នៅ​ហុងកុង + ម៉ោង​ស្តង់ដារ​នៅ​ហុងកុង + ម៉ោង​នៅ​ហុងកុង រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ហូវ + ម៉ោង​ស្តង់ដារ​នៅហូវ + ម៉ោង​នៅ​ហូវ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ឥណ្ឌា + + + + + ម៉ោង​នៅ​មហាសមុទ្រ​ឥណ្ឌា + + + + + ម៉ោង​នៅ​ឥណ្ឌូចិន + + + + + ម៉ោង​នៅ​ឥណ្ឌូណេស៊ី​​​កណ្ដាល + + + + + ម៉ោង​នៅ​ឥណ្ឌូណេស៊ី​​ខាង​កើត + + + + + ម៉ោង​នៅ​ឥណ្ឌូណេស៊ី​​ខាង​លិច + + + + + ម៉ោង​នៅ​អ៊ីរ៉ង់ + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ីរ៉ង់ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​អ៊ីរ៉ង់ + + + + + ម៉ោង​នៅ​អ៊ីគុត + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ីគុត + ម៉ោង​នៅ​អ៊ីគុត​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អ៊ីស្រាអែល + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ីស្រាអែល + ម៉ោង​ពេល​ថ្ងៃ​នៅ​អ៊ីស្រាអែល + + + + + ម៉ោង​នៅ​ជប៉ុន + ម៉ោង​ស្តង់ដារ​នៅ​ជប៉ុន + ម៉ោង​ពេល​ថ្ងៃ​នៅជប៉ុន + + + + + ម៉ោង​កាហ្សាក់ស្ថាន​​ខាង​កើត + + + + + ម៉ោង​នៅ​កាហ្សាក់ស្ថាន​ខាង​​​លិច + + + + + ម៉ោង​នៅ​កូរ៉េ + ម៉ោង​ស្តង់ដារ​នៅ​កូរ៉េ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​កូរ៉េ + + + + + ម៉ោង​នៅ​កូស្រៃ + + + + + ម៉ោង​នៅ​ក្រាណូយ៉ាស + ម៉ោង​ស្តង់ដារ​នៅ​ក្រាណូយ៉ាស + ម៉ោង​នៅ​ក្រាណូយ៉ាស​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ឃឺកីស្តង់ + + + + + ម៉ោង​នៅ​កោះ​ឡាញ + + + + + ម៉ោង​នៅ​ឡតហៅ + ម៉ោង​ស្តង់ដារ​នៅ​ឡត​ហៅ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​ឡតហៅ + + + + + ម៉ោង​នៅ​កោះ​ម៉ាកគែរី + + + + + ម៉ោង​នៅ​ម៉ាហ្កាដាន + ម៉ោង​ស្តង់ដារ​នៅ​ម៉ាហ្កាដាន + ម៉ោង​នៅ​ម៉ាហ្កាដាន​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ម៉ាឡេស៊ី + + + + + ម៉ោង​នៅ​ម៉ាល់ឌីវ + + + + + ម៉ោង​នៅ​កោះ​ម៉ាគឺសាស់ + + + + + ម៉ោង​នៅ​ម៉ាសាល + + + + + ម៉ោង​នៅ​ម៉ូរីស + ម៉ោង​ស្តង់ដារ​នៅ​ម៉ូរីស + ម៉ោង​​រដូវ​ក្ដៅនៅ​ម៉ូរីស + + + + + ម៉ោង​នៅ​ម៉ៅ​សាន់ + + + + + ម៉ោង​នៅ​អ៊ូឡាន​បាទូ + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ូឡាន​បាទូ + ម៉ោង​នៅ​អ៊ូឡាន​បាទូ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​មូស្គូ + ម៉ោង​ស្តង់ដារ​នៅ​មូស្គូ + ម៉ោង​នៅ​មូស្គូ​ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ភូមា + + + + + ម៉ោង​នៅ​ណូរូ + + + + + ម៉ោង​នៅ​ណេប៉ាល់ + + + + + ម៉ោង​នៅ​កាឡេដូនៀ + ម៉ោង​ស្តង់ដារ​នៅ​កាឡេដូនៀ + ម៉ោង​នៅ​ញូ​កាឡេដូនៀ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​នូវែលសេឡង់ + ម៉ោង​ស្តង់ដារ​នៅ​នូវែលសេឡង់ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​នូវែលសេឡង់ + + + + + ម៉ោង​​នៅ​ញូហ្វោនឡែន + ម៉ោង​​ស្តង់ដារ​​នៅ​ញូហ្វោនឡែន + ម៉ោង​ពេលថ្ងៃ​នៅ​ញូហ្វោនឡែន + + + + + ម៉ោងនៅ​ដ្យូអៀ + + + + + ម៉ោង​នៅ​កោះ​ន័រហ្វក់ + + + + + ម៉ោង​នៅ​ហ្វឺណាន់ដូ​ដឺណូរ៉ុនហា + ម៉ោង​​ស្តង់ដារ​នៅ​ហ្វឺណាន់ដូ​ដឺណូរ៉ុនហា + ម៉ោង​នៅ​ហ្វឺណាន់ដូ​ដឺណូរ៉ុនហា រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ណូវ៉ូស៊ីប៊ីក + ម៉ោង​ស្តង់ដារ​នៅ​ណូវ៉ូស៊ីប៊ីក + ម៉ោង​នៅ​ណូវ៉ូស៊ីប៊ីក​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អូម + ម៉ោង​ស្តង់ដារ​នៅ​អូម + ម៉ោង​នៅ​អូម​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ប៉ាគីស្ថាន + ម៉ោង​ស្ដង់ដារ​នៅ​ប៉ាគីស្ថាន + ម៉ោង​នៅ​ប៉ាគីស្ថាន រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ផាឡៅ + + + + + ម៉ោង​នៅ​ប៉ាបៅញូកីនៀ + + + + + ម៉ោង​នៅ​ប៉ារ៉ាហ្គាយ + ម៉ោង​ស្តង់ដារ​នៅ​ប៉ារ៉ាហ្គាយ + ម៉ោង​នៅប៉ារ៉ាហ្គាយ រដូវ + + + + + ម៉ោង​នៅ​ប៉េរូ + ម៉ោង​ស្តង់ដារ​នៅ​ប៉េរូ + ម៉ោង​នៅ​ប៉េរូ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ហ្វីលីពីន + ម៉ោង​ស្តង់ដារ​នៅ​ហ្វីលីពីន + ម៉ោង​​នៅ​ហ្វីលីពីន រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​កោះ​ផូនីក + + + + + ម៉ោង​​​នៅសង់​ព្យែរ និង​មីគុយឡុង + ម៉ោង​ស្តង់ដារ​នៅសង់​ព្យែរ និង​មីគុយឡុង + ម៉ោង​ពេល​ថ្ងៃ​នៅសង់​ព្យែរ និង​មីគុយឡុង + + + + + ម៉ោង​នៅ​ភីឃឺន + + + + + ម៉ោង​នៅ​ប៉ូណាប់ + + + + + ម៉ោង​នៅ​អ៊ុយនៀន + + + + + ម៉ោង​នៅ​រ៉ូធឺរ៉ា + + + + + ម៉ោង​នៅ​សាក់ខាលីន + ម៉ោង​ស្តង់ដារ​នៅ​សាក់ខាលីន + ម៉ោង​នៅ​សាក់ខាលីន​រដួវ​ក្ដៅ + + + + + ម៉ោង​នៅ​សាម៉ៅ + ម៉ោង​ស្តង់ដារនៅ​សាម៉ៅ + ម៉ោង​នៅ​សាម៉ៅ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​សីស្ហែល + + + + + ម៉ោង​នៅ​សិង្ហបូរី + + + + + ម៉ោង​នៅ​កោះ​សូឡូម៉ុន + + + + + ម៉ោង​នៅ​កោះ​ហ្សកហ្ស៊ី + + + + + ម៉ោង​នៅ​សូរីណាម + + + + + ម៉ោង​នៅ​ស៊ីអូវ៉ា + + + + + ម៉ោង​នៅ​តាហិទី + + + + + ម៉ោង​នៅ​តៃប៉ិ + ម៉ោង​ស្តង់ដារ​នៅ​តៃប៉ិ + ម៉ោង​ពេល​ថ្ងៃ​នៅ​តៃប៉ិ + + + + + ម៉ោង​នៅ​តាស៊ីគីស្តង់ + + + + + ម៉ោង​នៅ​តូខេឡៅ + + + + + ម៉ោង​នៅ​តុងកា + ម៉ោង​ស្តង់ដារ​​នៅ​តុងកា + ម៉ោង​នៅ​តុងកា រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ចូអុក + + + + + ម៉ោង​នៅ​តួកម៉េនីស្ថាន + ម៉ោង​ស្តង់ដារ​នៅតួកម៉េនីស្ថាន + ម៉ោង​តួកម៉េនីស្ថាន​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​ទុយវ៉ាឡុ + + + + + ម៉ោង​នៅ​អ៊ុយរូហ្គាយ + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ុយរូហ្គាយ + ម៉ោង​នៅ​អ៊ុយរូហ្គាយ​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អ៊ូសបេគីស្ថាន + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ូសបេគីស្ថាន + ម៉ោង​នៅ​អ៊ូសបេគីស្ថាន រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​វ៉ានូទូ + ម៉ោង​​ស្តង់ដារ​នៅ​វ៉ានូទូ + ម៉ោង​នៅ​វ៉ានូទូ រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​វ៉េណេស៊ុយអេឡា + + + + + ម៉ោង​នៅ​វ៉្លាឌីវ៉ូស្តក + ម៉ោង​ស្តង់ដារ​នៅ​វ៉្លាឌីវ៉ូស្តក + ម៉ោង​នៅ​វ៉្លាឌីវ៉ូស្តក​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​វ៉ូហ្កាក្រាត + ម៉ោង​ស្តង់ដារ​នៅ​វ៉ូហ្កាក្រាត + ម៉ោង​នៅ​វ៉ូហ្កាក្រាត​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​វ័រស្តុក + + + + + ម៉ោង​នៅ​កោះវេក + + + + + ម៉ោង​នៅ​វ៉ាលីស និង​ផូទូណា + + + + + ម៉ោង​នៅ​យ៉ាគុត + ម៉ោង​ស្តង់ដារ​នៅ​យ៉ាគុត + ម៉ោង​នៅ​យ៉ាគុត​រដូវ​ក្ដៅ + + + + + ម៉ោង​នៅ​អ៊ិខាធឺរីនប៊័ក + ម៉ោង​ស្តង់ដារ​នៅ​អ៊ិខាធឺរីនប៊័ក + ម៉ោង​នៅ​អ៊ិខាធឺរីនប៊័ក​រដួវ​​ក្ដៅ + + + + + + latn + + khmr + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0ពាន់ + 0ម៉ឺន + 0សែន + 0លាន + 00លាន + 000លាន + 0ពាន់លាន + 00ពាន់លាន + 000ពាន់លាន + 0លានលាន + 00លានលាន + 000លានលាន + + + + + 0ព + 0ម + 0ស + 0ល + 00ល + 000ល + 0ព'.'ល + 00ព'.'ល + 000ព'.'ល + 0ល'.'ល + 00ល'.'ល + 000ល'.'ល + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + ឌៀរហាំ អេមីរ៉ាតអារ៉ាប់រួម + + + អាហ្វហ្គានី អាហ្វហ្គានីស្ថាន + + + លិក អាល់បានី + + + ដ្រាំ អាមេនី + + + ហ្គីឌិន ហុល្លង់​អង់ទីលៀន + + + ក្វាន់ហ្សា អង់ហ្គោឡា + + + ប៉ឺហ្សូ អាហ្សង់ទីន + + + ដុល្លារ អូស្ត្រាលី + A$ + + + ហ្វ្រ័ររិញ អារ៉ូបា + + + ម៉ាណាត អាស៊ែបៃហ្សង់ + + + ម៉ាក ​ខុនវើ់ទីបល បូស្នី + + + ដុល្លារ បាបាដុស + + + តាកា បង់ក្លាដែស + + + លីវ ប៊ុលហ្គារី + + + ឌីណា បារ៉ែន + + + ហ្វ្រង់ ប៊ូរុនឌី + + + ដុល្លារ ប៊ឺមុយដា + + + ដុល្លារ ប្រុយណេ + + + បូលីវីណូ បូលីវី + + + រៀល ប្រេស៊ីល + R$ + + + ដុល្លារ បាហាម៉ា + + + ញូលត្រឹម ប៊ូតង់ + + + ពូឡា បុតស្វាណា + + + រ៉ូបល បេឡារុស + + + ដុល្លារ បេលី + + + ដុល្លារ កាណាដា + CA$ + + + ហ្វ្រង់ កុងហ្គោ + + + ហ្វ្រង់ ស្វីស + + + ប៉ឺហ្សូ ស៊ីលី + + + យ៉ន់ ចិន + CN¥ + + + ប៉ឺហ្សូ កូឡុំប៊ី + + + កូឡុង កូស្តារីកា + + + ប៉ឺហ្សូ​អាច​បម្លែង​បាន គុយបា + + + ប៉ឺហ្សូ គុយបា + + + អ៊ីស្កូឌូ កាប់វែរ + + + កូរុណា សាធារណៈ​ឆេក + + + ហ្វ្រង់ ជីប៊ូទី + + + ក្រូណេ ដាណាម៉ាក់ + + + ប៉ឺហ្សូ ដូមីនីក + + + ឌីណា អាល់ស៊េរី + + + ផោន​ អេហ្សីប + + + ណាក់ហ្វា អេរីត្រេ + + + ប៊័រ អេត្យូពី + + + អឺរ៉ូ + + + + ដុល្លារ ហ្វីជី + + + ផោន កោះ​ហ្វក់ឡែន + + + ផោនស្ទែរលិញ ចក្រភព​អង់គ្លេស + £ + + + ឡារី​ ហ្សកហ្ស៊ី + + + ស៊ីឌី ហ្គាណា + + + ផោន ហ្ស៊ីប្រាល់តា + + + ដាឡាស៊ី ហ្គំប៊ី + + + ហ្វ្រង់ ហ្គីណេ + + + ហ្គីស្សាល ក្វាតេម៉ាឡា + + + ដុល្លារ ហ្គីយ៉ាន + + + ដុល្លារ ហុងកុង + HK$ + + + លិមពីរ៉ា ហុងឌូរ៉ាស + + + គូណា ក្រូអាត + + + ហ្គោឌី ហៃទី + + + ហ្វូរីន ហុងគ្រី + + + រ៉ូព៉្យាស ឥណ្ឌូណេស៊ី + + + ស្ស៊ីហ្គែល អ៊ីស្រាអែល + + + + រ៉ូពី ឥណ្ឌា + + + + ឌីណា អ៊ីរ៉ាក់ + + + រៀល អ៊ីរ៉ង់ + + + ក្រូណា អ៊ីស្លង់ + + + ដុល្លារ ហ្សាម៉ាអ៊ីក + + + ឌីណា ហ្ស៊កដានី + + + យេន ជប៉ុន + JP¥ + + + ស៊ីលិញ កេនយ៉ា + + + សុម កៀហ្ស៊ីស៊ីស្ថាន + + + រៀល កម្ពុជា + + + + ហ្វ្រង់ កូម័រ + + + វូន កូរ៉េ​ខាង​ជើង + + + វូន កូរ៉េ​ខាង​ត្បូង + + + + ឌីណា គុយវ៉ែត + + + ដុល្លារ កោះ​កៃម៉ែន + + + តង់ហ្គី កាហ្សាក់ស្ថាន + + + គីប ឡាវ + + + ផោន លីបង់ + + + រ៉ូពី ស្រីលង្ការ + + + ដុល្លារ លីប៊ី + + + លីតា លីទុយអានី + + + ឡាត់ ឡេតូនី + + + ឌីណា លីប៊ី + + + ឌៀរហាំ ម៉ារ៉ុក + + + លូ ម៉ុលដាវី + + + អារៀរី ម៉ាឡាហ្គាស៊ី + + + ឌីណា ម៉ាសេដ្វាន + + + គីយ៉ាត ភូមា + + + ទូរីក ម៉ុងហ្គោលី + + + ប៉ាតាកា ម៉ាកាវ + + + អ៊ូហ្គីយ៉ា ម៉ូរីតានី + + + រ៉ូពី ម៉ូរីតានី + + + រ៉ូហ្វីយ៉ា ម៉ាល់ឌីវ + + + ក្វាចា ម៉ាឡាវី + + + ប៉ីហ្សូ ម៉ិកស៉ិក + MX$ + + + រីងហ្គីត ម៉ាឡេស៊ី + + + មីទីខល ម៉ូសំប៊ិក + + + ដុល្លារ ណាមីប៊ី + + + ណៃរ៉ា នីហ្សេរីយ៉ា + + + ខឌូបា នីការ៉ាហ្គា + + + ក្រូណេ ន័រវ៉េ + + + រ៉ូពី នេប៉ាល់ + + + ដុល្លារ នូវែលសេឡង់ + NZ$ + + + រៀល រូម៉ានី + + + បាល់ប៉ៅ ប៉ាណាម៉ា + + + ញូវ៉ូសូល ប៉េរូ + + + គីណា ប៉ាពូនូហ្គីណេ + + + ប៉ឺហ្សូ ហ្វីលីពីន + + + រ៉ូពី ប៉ាគីស្ថាន + + + ហ្សូទី ប៉ូឡូញ + + + ហ្គូរីនី ប៉ារ៉ាហ្គាយ + + + រៀល កាតា + + + លូ រូម៉ានី + + + ឌីណា សើប + + + រ៉ូបល រុស្ស៊ី + + + ហ្វ្រង់ រវ៉ាន់ដា + + + រីយ៉ាល អារ៉ាប៊ីសាអូឌីត + + + ដុល្លារ កោះ​សូឡូម៉ុង + + + រ៉ូពី សីស្ហែល + + + ផោន ស៊ូដង់ + + + ក្រូណា ស៊ុយអែត + + + ដុល្លារ​ សិង្ហបូរី + + + ផោន សាំងហេឡេណា + + + លីអ៊ុន សៀរ៉ាឡេអូន + + + ស៊ីលិញ សូម៉ាលី + + + ដុល្លារ សូរីណាម + + + ផោន ស៊ូដង់​ខាង​ត្បូង + + + ឌូប្រា សៅតូម៉េ និងប្រាំងស៊ីប + + + ផោន ស៊ីរី + + + លីឡាងហ្គីនី ស្វាស៊ីឡង់ + + + បាត ថៃ + ฿ + + + សូមុនី តាហ្ស៊ីគីស្ថាន + + + ម៉ាណាត តួកម៉េនីស្ថាន + + + ឌីណា ទុយនីស៊ី + + + ប៉ាអង់កា តុងហ្គា + + + លីរ៉ា ទួគី + + + ដុល្លារ ទ្រីនីដាដ និងតូបាហ្គោ + + + ដុល្លារ តៃវ៉ាន់ + NT$ + + + ស៊ីលិញ តង់សានី + + + ហ៊ូនីយ៉ា អ៊ុយក្រែន + + + ស៊ីលិញ អ៊ូហ្គង់ដា + + + ដុល្លារ អាមេរិក + US$ + + + ប៉ឺហ្សូ អ៊ុយរូហ្គាយ + + + សុម អ៊ូសបេគីស្ថាន + + + ប៊ូលីវ៉ា វ៉េណេស៊ុយអេឡា + + + ដុង វៀតណាម + + + + វ៉ាទូ វ៉ានូទូ + + + តាឡា សាម័រ + + + ហ្វ្រង់ BEAC CFA + FCFA + + + ដុល្លារ ការ៉ាប៊ីន​ខាង​កើត + EC$ + + + ហ្វ្រង់ BCEAO CFA + CFA + + + ហ្វ្រង់ CFP + CFPF + + + មិនស្គាល់​រូបិយប័ណ្ណ + + + រៀល យេម៉ែន + + + រ៉ង់ អាព្រិក​ខាង​ត្បូង + + + ក្វាចា សំប៊ី (1968–2012) + + + ក្វាចា សំប៊ី + + + + {0}+ + {0}–{1} + + + + + + {0}​ក្នុង​មួយ​{1} + + + {0} កម្លាំង​ទំនាញ + + + {0} នាទី + + + {0} វិនាទី + + + {0} ដឺក្រេ + + + {0} អា + + + {0} ហិកតា + + + {0} ហ្វីត​ការ៉េ + + + {0} គីឡូម៉ែត្រ​ការ៉េ + + + {0} ម៉ែត្រ​ការ៉េ + + + {0} ម៉ាយល៍​ការ៉េ + + + {0} ថ្ងៃ + + + {0} ម៉ោង + + + {0} មិល្លី​វិនាទី + + + {0} នាទី + + + {0} ខែ + + + {0} វិនាទី + + + {0} សប្ដាហ៍ + + + {0} ឆ្នាំ + + + {0} សង់ទីម៉ែត្រ + + + {0} ហ្វីត + + + {0} អ៊ិន្ឈ៍ + + + {0} គីឡូម៉ែត្រ + + + {0} ឆ្នាំ​ពន្លឺ + + + {0} ម៉ែត្រ + + + {0} ម៉ាយល៍ + + + {0} មិល្លីម៉ែត្រ + + + {0} ពីកូម៉ែត្រ + + + {0} យ៉ាត + + + {0} ក្រាម + + + {0} គីឡូក្រាម + + + {0} អោនស៍ + + + {0} ផោន + + + {0} សេះ + + + {0} គីឡូវ៉ាត់ + + + {0} វ៉ាត់ + + + {0} ហិចតូប៉ាស្កាល់ + + + {0} inHg + + + {0} មិល្លីបារ + + + {0} គីឡូម៉ែត្រ​ក្នុង​មួយ​ម៉ោង + + + {0} ម៉ែត្រ​ក្នុង​មួយ​វិនាទី + + + {0} ម៉ាយល៍​ក្នុង​មួយ​ម៉ោង + + + {0}ដឺក្រេសែលស៊ីស + + + {0}ដឺក្រេហ្វារិនហៃ + + + {0} គីឡូម៉ែត្រ​គីប + + + {0} ម៉ាយល៍​គីប + + + {0} លីត្រ + + + + + {0}/{1} + + + {0} ក.ទ. + + + {0} ន. + + + {0} វិ. + + + {0}° + + + {0} អា + + + {0} ហ. + + + {0} ហ្វ². + + + {0} គ.ម². + + + {0} ម². + + + {0} ម៉². + + + {0} ថ្ងៃ + + + {0} ម៉. + + + {0} មិ.វិ. + + + {0} ន. + + + {0} ខែ + + + {0} វិ. + + + {0} សប្ដាហ៍ + + + {0} ឆ្នាំ + + + {0} ស.ម. + + + {0} ហ្វ. + + + {0} អ៊ិន្ឈ៍ + + + {0} គ.ម. + + + {0} ឆ្នាំ​ពន្លឺ + + + {0} ម. + + + {0} ម៉. + + + {0} ម.ម. + + + {0} ព.ម. + + + {0} យ៉. + + + {0} ក. + + + {0} គ.ក. + + + {0} អ. + + + {0} ផ. + + + {0} សេះ + + + {0} គ.វ. + + + {0} វ. + + + {0} hPa + + + {0} inHg + + + {0} ម.ប. + + + {0} គ.ម./ម៉ + + + {0} ម./វិ. + + + {0} ម៉./ម៉ + + + {0}°C + + + {0}°F + + + {0} គ.ម³. + + + {0} ម៉³. + + + {0} ល. + + + + + {0}/{1} + + + {0} ក.ទ. + + + {0}′ + + + {0}″ + + + {0}° + + + {0} អា + + + {0} ហ. + + + {0} ហ្វ². + + + {0} គ.ម². + + + {0} ម². + + + {0} ម៉². + + + {0} ថ្ងៃ + + + {0} ម៉. + + + {0} មិ.វិ. + + + {0} ន. + + + {0} ខែ + + + {0} វិ. + + + {0} សប្ដាហ៍ + + + {0} ឆ្នាំ + + + {0} ស.ម. + + + {0}′ + + + {0}″ + + + {0} គ.ម + + + {0} ឆ្នាំ​ពន្លឺ + + + {0} ម. + + + {0} ម៉. + + + {0} ម.ម. + + + {0} ព.ម. + + + {0} យ៉. + + + {0} ក. + + + {0} គ.ក. + + + {0} អ. + + + {0}# + + + {0} សេះ + + + {0} គ.វ. + + + {0} វ. + + + {0} hPa + + + {0}" Hg + + + {0} ម.ប. + + + {0} គ.ម./ម៉ + + + {0} ម./វិ. + + + {0} ម៉./ម៉ + + + {0}° + + + {0}°F + + + {0} គ.ម³. + + + {0} ម៉³. + + + {0} ល. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} និង {1} + + + {0} {1} + {0} {1} + {0} និង {1} + {0} និង {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + + បាទ/ចាស ៖ y + ទេ​ ៖ n + + + + diff --git a/library/Zend/Locale/Data/km_KH.xml b/library/Zend/Locale/Data/km_KH.xml new file mode 100755 index 000000000..0b90951ac --- /dev/null +++ b/library/Zend/Locale/Data/km_KH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kn.xml b/library/Zend/Locale/Data/kn.xml new file mode 100755 index 000000000..d2c3c17a5 --- /dev/null +++ b/library/Zend/Locale/Data/kn.xml @@ -0,0 +1,5207 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + ಅಫಾರ್ + ಅಬ್ಖಾಜಿಯನ್ + ಅಛಿನೀಸ್ + ಅಕೋಲಿ + ಅಡಂಗ್‌ಮೆ + ಅಡೈಘೆ + ಅವೆಸ್ಟನ್ + ಆಫ್ರಿಕಾನ್ಸ್ + ಆಫ್ರಿಹಿಲಿ + ಐನು + ಅಕಾನ್ + ಅಕ್ಕಾಡಿಯನ್ + ಅಲೆಯುಟ್ + ದಕ್ಷಿಣ ಅಲ್ಟಾಯ್ + ಅಂಹರಿಕ್ + ಅರಗೊನೀಸ್ + ಪ್ರಾಚೀನ ಇಂಗ್ಲೀಷ್ + ಆಂಗಿಕಾ + ಅರೇಬಿಕ್ + ಆಧುನಿಕ ಪ್ರಮಾಣಿತ ಅರೇಬಿಕ್ + ಅರಾಮಿಕ್ + ಅರೌಕೇನಿಯನ್ + ಅರಪಾಹೋ + ಅರಾವಾಕ್ + ಅಸ್ಸಾಮೀಸ್ + ಆಸ್ಟುರಿಯನ್ + ಅವರಿಕ್ + ಅವಧಿ + ಅಯ್ಮಾರಾ + ಅಜೆರ್ಬೈಜಾನಿ + ಅಝೆರಿ + ಬಶ್ಕಿರ್ + ಬಲೂಚಿ + ಬಲಿನೀಸ್ + ಬಸಾ + ಬೆಲರೂಸಿಯನ್ + ಬೇಜಾ + ಬೆಂಬಾ + ಬಲ್ಗೇರಿಯನ್ + ಭೋಜಪುರಿ + ಬಿಸ್ಲಾಮಾ + ಬಿಕೊಲ್ + ಬಿನಿ + ಸಿಕ್ಸಿಕಾ + ಬಂಬಾರಾ + ಬೆಂಗಾಲಿ + ಟಿಬೇಟಿಯನ್ + ಬ್ರೆಟನ್ + ಬ್ರಾಜ್ + ಬೋಸ್ನಿಯನ್ + ಬುರಿಯಟ್ + ಬುಗಿನೀಸ್ + ಬ್ಲಿನ್ + ಕೆಟಲಾನ್ + ಕ್ಯಾಡ್ಡೋ + ಕಾರಿಬ್ + ಅಟ್ಸಮ್ + ಚೆಚನ್ + ಸೆಬುಆನೋ + ಕಮೊರೊ + ಚಿಬ್ಚಾ + ಚಗಟಾಯ್ + ಚೂಕಿಸೆ + ಮಾರಿ + ಚಿನೂಕ್ ಜಾರ್ಗೋನ್ + ಚೋಕ್ಟಾವ್ + ಚಿಪೆವ್ಯಾನ್ + ಚೆರೋಕೀ + ಚೀಯೆನ್ನೇ + ಸೊರಾನಿ ಕುರ್ದಿಷ್ + ಕೋರ್ಸಿಕನ್ + ಕೊಪ್ಟಿಕ್ + ಕ್ರೀ + ಕ್ರಿಮೀಯನ್ ಟರ್ಕಿಷ್ + ಜೆಕ್ + ಕಶುಬಿಯನ್ + ಚರ್ಚ್ ಸ್ಲಾವಿಕ್ + ಚುವಾಶ್ + ವೆಲ್ಶ್ + ಡ್ಯಾನಿಶ್ + ಡಕೋಟ + ದರ್ಗ್ವಾ + ಜರ್ಮನ್ + ಆಸ್ಟ್ರಿಯನ್ ಜರ್ಮನ್ + ಸ್ವಿಸ್ ಹೈ ಜರ್ಮನ್ + ಡೆಲಾವೇರ್ + ಸ್ಲೇವ್ + ಡೋಗ್ರಿಬ್ + ಡಿಂಕಾ + ಡೋಗ್ರಿ + ಲೋವರ್ ಸೋರ್ಬಿಯನ್ + ಡುವಾಲಾ + ಮಧ್ಯ ಡಚ್ + ದಿವೆಹಿ + ಡ್ಯೂಲಾ + ಜೋಂಗ್‌ಖಾ + ಎವ್ + ಎಫಿಕ್ + ಪ್ರಾಚೀನ ಈಜಿಪ್ಟಿಯನ್ + ಎಕಾಜುಕ್ + ಗ್ರೀಕ್ + ಎಲಾಮೈಟ್ + ಇಂಗ್ಲೀಷ್ + ಆಸ್ಟ್ರೇಲಿಯನ್ ಇಂಗ್ಲೀಷ್ + ಕೆನೆಡಿಯನ್ ಇಂಗ್ಲೀಷ್ + ಬ್ರಿಟಿಷ್ ಇಂಗ್ಲೀಷ್ + ಯು.ಕೆ. ಇಂಗ್ಲಿಷ್ + ಯು.ಎಸ್. ಇಂಗ್ಲೀಷ್ + ಯು.ಎಸ್. ಇಂಗ್ಲಿಷ್ + ಮಧ್ಯ ಇಂಗ್ಲೀಷ್ + ಎಸ್ಪೆರಾಂಟೊ + ಸ್ಪ್ಯಾನಿಷ್ + ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕನ್ ಸ್ಪ್ಯಾನಿಶ್ + ಯುರೋಪಿಯನ್ ಸ್ಪ್ಯಾನಿಷ್ + ಮೆಕ್ಸಿಕನ್ ಸ್ಪ್ಯಾನಿಷ್ + ಎಸ್ಟೊನಿಯನ್ + ಬಾಸ್ಕ್ + ಇವಾಂಡೋ + ಪರ್ಶಿಯನ್ + ಫೆಂಗ್ + ಫಾಂಟಿ + ಫುಲಾಹ್ + ಫಿನ್ನಿಶ್ + ಫಿಲಿಪಿನೊ + ಫಿಜಿಯನ್ + ಫರೋಸಿ + ಫೋನ್ + ಫ್ರೆಂಚ್ + ಕೆನೆಡಿಯನ್ ಫ್ರೆಂಚ್ + ಸ್ವಿಸ್ ಫ್ರೆಂಚ್ + ಮಧ್ಯ ಫ್ರೆಂಚ್ + ಪ್ರಾಚೀನ ಫ್ರೆಂಚ್ + ಉತ್ತರ ಫ್ರಿಸಿಯನ್ + ಪೂರ್ವ ಫ್ರಿಸಿಯನ್ + ಫ್ರಿಯುಲಿಯನ್ + ಪಶ್ಚಿಮ ಫ್ರಿಸಿಯನ್ + ಐರಿಷ್ + + ಗಾಯೋ + ಗ್ಬಾಯಾ + ಸ್ಕಾಟಿಶ್ ಗ್ಯಾಲಿಕ್ + ಗೀಝ್ + ಗಿಲ್ಬರ್ಟೀಸ್ + ಗ್ಯಾಲಿಶಿಯನ್ + ಮಧ್ಯ ಹೈ ಜರ್ಮನ್ + ಗೌರಾನಿ + ಪ್ರಾಚೀನ ಹೈ ಜರ್ಮನ್ + ಗೊಂಡಿ + ಗೊರೊಂಟಾಲೋ + ಗೋಥಿಕ್ + ಗ್ರೇಬೋ + ಪ್ರಾಚೀನ ಗ್ರೀಕ್ + ಸ್ವಿಸ್ ಜರ್ಮನ್ + ಗುಜರಾತಿ + ಮ್ಯಾಂಕ್ಸ್ + ಗ್ವಿಚ್‌ಇನ್ + ಹೌಸಾ + ಹೈಡಾ + ಹವಾಯಿಯನ್ + ಹೀಬ್ರ್ಯೂ + ಹಿಂದಿ + ಹಿಲಿಗೇನನ್ + ಹಿಟ್ಟಿಟೆ + ಮೋಂಗ್ + ಹಿರಿ ಮೊಟು + ಕ್ರೊಯೇಶಿಯನ್ + ಅಪ್ಪರ್ ಸರ್ಬಿಯನ್ + ಹೈತಿಯನ್ + ಹಂಗೇರಿಯನ್ + ಹೂಪಾ + ಅರ್ಮೇನಿಯನ್ + ಹೆರೆರೊ + ಇಂಟರ್‌ಲಿಂಗ್ವಾ + ಇಬಾನ್ + ಇಂಡೋನೇಶಿಯನ್ + ಇಂಟರ್ಲಿಂಗ್ + ಇಗ್ಬೊ + ಸಿಚುಅನ್ ಯಿ + ಇನುಪಿಯಾಕ್ + ಇಲ್ಲಿಕೋ + ಇಂಗುಷ್ + ಇಡೊ + ಐಸ್ಲಾಂಡಿಕ್ + ಇಟಾಲಿಯನ್ + ಇನುಕ್ಟಿಟುಟ್ + ಜಾಪನೀಸ್ + ಲೊಜ್ಬಾನ್ + ಜೂಡಿಯೋ-ಪರ್ಶಿಯನ್ + ಜೂಡಿಯೋ-ಅರೇಬಿಕ್ + ಜಾವಾನೀಸ್ + ಜಾರ್ಜಿಯನ್ + ಕಾರಾ-ಕಲ್ಪಾಕ್ + ಕಬೈಲ್ + ಕಚಿನ್ + ಜ್ಜು + ಕಂಬಾ + ಕಾವಿ + ಕಬರ್ಡಿಯನ್ + ಟ್ಯಾಪ್ + ಕೋರೋ + ಕೊಂಗೊ + ಖಾಸಿ + ಖೋಟಾನೀಸ್ + ಕಿಕುಯು + ಕ್ವಾನ್‌ಯಾಮಾ + ಕಝಕ್ + ಕಲಾಲ್ಲಿಸುಟ್ + ಖಮೇರ್ + ಕಿಂಬುಂಡು + ಕನ್ನಡ + ಕೋರಿಯನ್ + ಕೊಂಕಣಿ + ಕೊಸರಿಯನ್ + ಕಪೆಲ್ಲೆ + ಕನುರಿ + ಕರಚಯ್-ಬಲ್ಕಾರ್ + ಕರೇಲಿಯನ್ + ಕುರುಖ್ + ಕಾಶ್ಮೀರಿ + ಕುರ್ದಿಷ್ + ಕುಮೈಕ್ + ಕುಟೇನಾಯ್ + ಕೋಮಿ + ಕೋರ್ನಿಷ್ + ಕಿರ್ಜಿಝ್ + ಲ್ಯಾಟಿನ್ + ಕಾಡಿನೋ + ಲಹಂಡಾ + ಲಂಬಾ + ಲಕ್ಸಂಬರ್ಗ್ + ಲೆಜ್ಘಿಯನ್ + ಗಾಂಡಾ + ಲಿಂಬರ್ಗಿಶ್ + ಲಿಂಗಾಲ + ಲಾವೋ + ಮೊಂಗೋ + ಲೋಝಿ + ಲಿಥುವೇನಿಯನ್ + ಲೂಬಾ-ಕಟಾಂಗಾ + ಲುಬ-ಲುಲಾ + ಲೂಯಿಸೆನೋ + ಲುಂಡಾ + ಲುವೋ + ಲುಶಾಯ್ + ಲಟ್ವಿಯನ್ + ಮದುರೀಸ್ + ಮಗಾಹಿ + ಮೈಥಿಲಿ + ಮಕಾಸರ್ + ಮಂಡಿಂಗೊ + ಮಸಾಯ್ + ಮೋಕ್ಷ + ಮಂದಾರ್ + ಮೆಂಡೆ + ಮೊರಿಸನ್ + ಮಲಗಾಸಿ + ಮಧ್ಯ ಐರಿಷ್ + ಮಾರ್ಶಲ್ಲೀಸ್ + ಮಾವೋರಿ + ಮಿಕ್‌ಮ್ಯಾಕ್ + ಮಿನಂಗ್‌ಕಬಾವು + ಮೆಸಿಡೋನಿಯನ್ + ಮಲಯಾಳಂ + ಮಂಗೋಲಿಯನ್ + ಮಂಚು + ಮಣಿಪುರಿ + ಮೊಹಾವ್ಕ್ + ಮೊಸ್ಸಿ + ಮರಾಠಿ + ಮಲಯ + ಮಾಲ್ಟೀಸ್ + ಬಹುಸಂಖ್ಯೆಯ ಭಾಷೆಗಳು + ಕ್ರೀಕ್ + ಕಿರಾಂಡೀಸ್ + ಮಾರ್ವಾಡಿ + ಬರ್ಮೀಸ್ + ಎರ್‌ಝ್ಯಾ + ನೌರು + ನಿಯಾಪೊಲಿಟನ್ + ನಾರ್ವೇಜಿಯನ್ ಬೊಕ್ಮಲ್ + ಉತ್ತರ ದೆಬೆಲೆ + ಲೋ ಜರ್ಮನ್ + ನೇಪಾಳಿ + ನೇವಾರೀ + ಡೋಂಗಾ + ನಿಯಾಸ್ + ನಿಯುವನ್ + ಡಚ್ + ಫ್ಲೆಮಿಷ್ + ನಾರ್ವೇಜಿಯನ್ ನೂನಾರ್ಸ್ಕ್ + ನಾರ್ವೇಜಿಯನ್ + ನೊಗಾಯ್ + ಪ್ರಾಚೀನ ನೋರ್ಸ್ + ಎನ್‌ಕೋ + ದಕ್ಷಿಣ ದೆಬೆಲೆ + ಉತ್ತರ ಸೋಥೋ + ನವಾಜೊ + ಶಾಸ್ತ್ರೀಯ ನೇವಾರಿ + ನ್ಯಾಂಜಾ + ನ್ಯಾಮ್‌ವೆಂಜಿ + ನ್ಯಾನ್‌ಕೋಲೆ + ನ್ಯೋರೋ + ಜೀಮಾ + ಒಸಿಟನ್ + ಒಜಿಬ್ವಾ + ಓರೊಮೋ + ಓರಿಯಾ + ಒಸ್ಸೆಟಿಕ್ + ಓಸಾಜ್ + ಒಟ್ಟೋಮನ್ ತುರ್ಕಿಷ್ + ಪಂಜಾಬಿ + ಪಂಗಾಸಿನನ್ + ಪಹ್ಲವಿ + ಪಂಪಾಂಗಾ + ಪಾಪಿಯಮೆಂಟೋ + ಪಲುಆನ್ + ಪ್ರಾಚೀನ ಪರ್ಶಿಯನ್ + ಫೀನಿಷಿಯನ್ + ಪಾಲಿ + ಪೋಲಿಶ್ + ಪೋನ್‌‌ಪಿಯನ್ + ಪ್ರಾಚೀನ ಪ್ರೊವೆನ್ಶಿಯಲ್ + ಪಾಷ್ಟೋ + ಪುಶ್ತೋ + ಪೋರ್ಚುಗೀಸ್ + ಬ್ರೆಜಿಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್ + ಯೂರೋಪಿಯನ್ ಪೋರ್ಚುಗೀಸ್ + ಕ್ವೆಚುವಾ + ರಾಜಾಸ್ಥಾನಿ + ರಾಪಾನುಯಿ + ರಾರೋಟೊಂಗನ್ + ರೋಮ್ಯಾನ್ಸ್ + ರುಂಡಿ + ರೊಮೇನಿಯನ್ + ಮಾಲ್ಡೀವಿಯನ್ + ರೋಮಾನಿ + ರೂಟ್ + ರಶಿಯನ್ + ಅರೋಮಾನಿಯನ್ + ಕೀನ್ಯಾರುವಾಂಡಾ + ಸಂಸ್ಕೃತ + ಸಂಡಾವೇ + ಯಾಕುಟ್ + ಸಮರಿಟನ್ ಅರಾಮಿಕ್ + ಸಸಾಕ್ + ಸಂತಾಲಿ + ಸರ್ಡೀನಿಯನ್ + ಸಿಸಿಲಿಯನ್ + ಸ್ಕೋಟ್ಸ್ + ಸಿಂಧಿ + ಉತ್ತರ ಸಾಮಿ + ಸೆಲ್ಕಪ್ + ಸಾಂಗೋ + ಪ್ರಾಚೀನ ಐರಿಷ್ + ಸರ್ಬೋ-ಕ್ರೊಯೇಶಿಯನ್ + ಶಾನ್ + ಸಿಂಹಳ + ಸಿಡಾಮೋ + ಸ್ಲೋವಾಕ್ + ಸ್ಲೋವೇನಿಯನ್ + ಸಮೋವನ್ + ದಕ್ಷಿಣ ಸಾಮಿ + ಲೂಲ್ ಸಾಮಿ + ಇನರಿ ಸಾಮಿ + ಸ್ಕೋಟ್ ಸಾಮಿ + ಶೋನಾ + ಸೋನಿಂಕೆ + ಸೊಮಾಲಿ + ಸೋಗ್ಡಿಏನ್ + ಅಲ್ಬೇನಿಯನ್ + ಸರ್ಬಿಯನ್ + ಸ್ರಾನನ್ ಟೋಂಗೋ + ಸೇರೇರ್ + ಸ್ವಾತಿ + ದಕ್ಷಿಣ ಸೋಥೋ + ಸುಂಡಾನೀಸ್ + ಸುಕುಮಾ + ಸುಸು + ಸುಮೇರಿಯನ್ + ಸ್ವೀಡಿಷ್ + ಸ್ವಹಿಲಿ + ಕೊಮೊರಿಯನ್ + ಶಾಸ್ತ್ರೀಯ ಸಿರಿಯಕ್ + ಸಿರಿಯಕ್ + ತಮಿಳು + ತೆಲುಗು + ಟಿಮ್ನೆ + ಟೆರೆನೋ + ಟೇಟಮ್ + ತಾಜಿಕ್ + ಥಾಯ್ + ಟಿಗ್ರಿನ್ಯಾ + ಟೈಗ್ರೆ + ಟಿವ್ + ಟರ್ಕ್‌ಮೆನ್ + ಟೊಕೆಲಾವ್ + ಟ್ಯಾಗಲೋಗ್ + ಕ್ಲಿಂಗನ್ + ಟ್ಲಿಂಗಿಟ್ + ಟಮಾಷೆಕ್ + ಸ್ವಾನಾ + ಟೋಂಗನ್ + ನ್ಯಾಸಾ ಟೋಂಗಾ + ಟೋಕ್ ಪಿಸಿನ್ + ಟರ್ಕಿಶ್ + ಸೋಂಗಾ + ಸಿಂಶಿಯನ್ + ಟಾಟರ್ + ತುಂಬುಕಾ + ಟುವಾಲು + ಟ್ವಿ + ತಹಿತಿಯನ್ + ಟುವಿನಿಯನ್ + ಉಡ್‌ಮುರ್ಟ್ + ಉಯಿಘರ್ + ಉಯ್‌ಗರ್ + ಉಗಾರಿಟಿಕ್ + ಉಕ್ರೈನಿಯನ್ + ಉಂಬುಂಡು + ಅಪರಿಚಿತ ಅಥವಾ ಅಮಾನ್ಯ ಭಾಷೆ + ಉರ್ದು + ಉಜ್ಬೇಕ್ + ವಾಯಿ + ವೆಂಡಾ + ವಿಯೇಟ್ನಾಮೀಸ್ + ವೋಲಾಪುಕ್ + ವೋಟಿಕ್ + ವಾಲೂನ್ + ವಲಾಮೋ + ವರಾಯ್ + ವಾಷೋ + ವೋಲೋಫ್ + ಕಲ್‌ಮೈಕ್ + ಷೋಸಾ + ಯಾಓ + ಯಪೀಸೆ + ಯಡ್ಡಿಶ್ + ಯೊರುಬಾ + ಕಾಂಟೊನೀಸ್ + ಝೂವಾಂಗ್ + ಝೋಪೊಟೆಕ್ + ಬ್ಲಿಸ್‌ಸಿಂಬಲ್ಸ್ + ಝೆನಾಗಾ + ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಮೊರಾಕಿಯನ್ ತಮಜೈಟ್ + ಚೈನೀಸ್ + ಸಿಂಪ್ಲಿಫೈಡ್ ಚೈನೀಸ್ + ಸಾಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್ + ಜುಲು + ಝೂನಿ + ಯಾವುದೇ ಭಾಷಾಸಂಬಂಧಿ ವಿಷಯವಿಲ್ಲ + ಜಾಝಾ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ಪ್ರಪಂಚ + ಆಫ್ರಿಕಾ + ಉತ್ತರ ಅಮೇರಿಕಾ + ದಕ್ಷಿಣ ಅಮೇರಿಕಾ + ಓಶಿಯೇನಿಯಾ + ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ + ಮಧ್ಯ ಅಮೇರಿಕಾ + ಪೂರ್ವ ಆಫ್ರಿಕಾ + ಉತ್ತರ ಆಫ್ರಿಕಾ + ಮಧ್ಯ ಆಫ್ರಿಕಾ + ಆಫ್ರಿಕಾದ ದಕ್ಷಿಣ ಭಾಗ + ಅಮೆರಿಕಾಸ್ + ಅಮೇರಿಕಾದ ಉತ್ತರ ಭಾಗ + ಕೆರೀಬಿಯನ್ + ಏಷ್ಯಾದ ಪೂರ್ವ ಭಾಗ + ಏಷ್ಯಾದ ದಕ್ಷಿಣ ಭಾಗ + ಆಗ್ನೇಯ ಏಷ್ಯಾ + ದಕ್ಷಿಣ ಯೂರೋಪ್ + ಆಸ್ಟ್ರೇಲಿಯೇಷಿಯಾ + ಮೇಲಿನೇಶಿಯಾ + ಮೈಕ್ರೋನೇಶಿಯನ್ ಪ್ರದೇಶ + ಪೋಲಿನೇಶಿಯಾ + ಏಷ್ಯಾ + ಮಧ್ಯ ಏಷ್ಯಾ + ಪಶ್ಚಿಮ ಏಷ್ಯಾ + ಯೂರೋಪ್ + ಪೂರ್ವ ಯೂರೋಪ್ + ಉತ್ತರ ಯೂರೋಪ್ + ಪಶ್ಚಿಮ ಯೂರೋಪ್ + ಲ್ಯಾಟಿನ್ ಅಮೇರಿಕಾ + ಅಸೆನ್ಶನ್ ದ್ವೀಪ + ಅಂಡೋರಾ + ಸಂಯುಕ್ತ ಅರಬ್ ಎಮಿರೇಟಸ್ + ಅಫಘಾನಿಸ್ಥಾನ್ + ಆಂಟಿಗುವಾ ಮತ್ತು ಬರ್ಬುಡಾ + ಆಂಗುಯಿಲ್ಲಾ + ಅಲ್ಬೇನಿಯಾ + ಅರ್ಮೇನಿಯಾ + ನೆದರ್‌ಲ್ಯಾಂಡ್ + ಅಂಗೋಲಾ + ಅಂಟಾರ್ಟಿಕಾ + ಅರ್ಜೆಂಟಿನಾ + ಅಮೇರಿಕನ್ ಸಮೋವಾ + ಆಸ್ಟ್ರಿಯಾ + ಆಸ್ಟ್ರೇಲಿಯ + ಅರುಬಾ + ಆಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು + ಅಜರ್ಬೈಜಾನ್ + ಬೋಸ್ನಿಯಾ ಮತ್ತು ಹರ್ಜೆಗೋವಿನಾ + ಬಾರ್ಬಡೋಸ್ + ಬಾಂಗ್ಲಾದೇಶ್ + ಬೆಲ್ಜಿಯಮ್ + ಬುರ್ಕಿನಾ ಫಾಸೋ + ಬಲ್ಗೇರಿಯಾ + ಬಹರೈನ್ + ಬುರುಂಡಿ + ಬೆನಿನ್ + ಸೇಂಟ್ ಬಾರ್ಥೆಲೆಮಿ + ಬರ್ಮುಡಾ + ಬ್ರೂನಿ + ಬೊಲಿವಿಯಾ + ಕೆರೀಬಿಯನ್ ನೆದರ್‌ಲ್ಯಾಂಡ್ಸ್ + ಬ್ರೆಜಿಲ್ + ಬಹಾಮಾಸ್ + ಭೂತಾನ್ + ಬೋವೆಟ್ ದ್ವೀಪ + ಬೋಟ್ಸ್‌ವಾನಾ + ಬೆಲಾರಸ್ + ಬೆಲಿಜ್ + ಕೆನಡಾ + ಕೊಕೊಸ್ ದ್ವೀಪಗಳು + ಕಾಂಗೋ - ಕಿನ್ಶಾಸಾ + ಕಾಂಗೋ (DRC) + ಮಧ್ಯ ಆಫ್ರಿಕಾ ಗಣರಾಜ್ಯ + ಕಾಂಗೋ - ಬ್ರಾಜಾವಿಲ್ಲೇ + ಕಾಂಗೋ (ಗಣರಾಜ್ಯ) + ಸ್ವಿಟ್ಜರ್ಲ್ಯಾಂಡ್ + ಕೋತ್‌ ದಿವಾರ್‍ + ಐವರಿ ಕೋಸ್ಟ್ + ಕುಕ್ ದ್ವೀಪಗಳು + ಚಿಲಿ + ಕ್ಯಾಮರೋನ್ + ಚೀನಾ + ಕೊಲಂಬಿಯಾ + ಕ್ಲಿಪ್ಪರ್‌ಟಾನ್ ದ್ವೀಪಗಳು + ಕೊಸ್ಟಾ ರಿಕಾ + ಕ್ಯೂಬಾ + ಕೇಪ್ ವರ್ಡೆ + ಕುರಾಕಾವ್ + ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ + ಸೈಪ್ರಸ್ + ಚೆಕ್ ರಿಪಬ್ಲಿಕ್ + ಜರ್ಮನಿ + ಡೈಗೋ ಗಾರ್ಸಿಯ + ಜಿಬೋಟಿ + ಡೆನ್ಮಾರ್ಕ್ + ಡೊಮಿನಿಕಾ + ಡೊಮೆನಿಕನ್ ರಿಪಬ್ಲಿಕ್ + ಅಲ್ಗೇರಿಯಾ + ಸೆಯುಟಾ ಹಾಗೂ ಮೆಲಿಲ್ಲಾ + ಈಕ್ವೆಡಾರ್ + ಎಸ್ಟೋನಿಯಾ + ಈಜಿಪ್ಟ್ + ಪಶ್ಚಿಮ ಸಹಾರಾ + ಏರಿಟ್ರಿಯಾ + ಸ್ಪೇನ್ + ಇಥಿಯೋಪಿಯಾ + ಯುರೋಪಿಯನ್ ಯೂನಿಯನ್ + ಫಿನ್‌ಲ್ಯಾಂಡ್ + ಫಿಜಿ + ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು + ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳು (ಇಸ್ಲಾಸ್ ಮಾಲ್ವಿನಸ್) + ಮೈಕ್ರೋನೇಶಿಯಾ + ಫರೋ ದ್ವೀಪಗಳು + ಫ್ರಾನ್ಸ್ + ಗೆಬೊನ್ + ಬ್ರಿಟನ್/ಇಂಗ್ಲೆಂಡ್ + ಯು.ಕೆ. + ಗ್ರೆನೆಡಾ + ಜಾರ್ಜಿಯಾ + ಫ್ರೆಂಚ್ ಗಯಾನಾ + ಗುರ್ನ್‌ಸೆ + ಘಾನಾ + ಗಿಬ್ರಾಲ್ಟರ್ + ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ + ಗ್ಯಾಂಬಿಯಾ + ಗಿನಿ + ಗುಡೆಲೋಪ್ + ಈಕ್ವೆಟೋರಿಯಲ್ ಗಿನಿ + ಗ್ರೀಸ್ + ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಮತ್ತು ದಕ್ಷಿಣ ಸ್ಯಾಂಡ್ವಿಚ್ ದ್ವೀಪಗಳು + ಗ್ವಾಟೆಮಾಲಾ + ಗುಯಾಮ್ + ಗಿನಿ-ಬಿಸ್ಸಾವ್ + ಗಯಾನಾ + ಹಾಂಕ್‌ ಕಾಂಗ್ SAR ಚೈನಾ + ಹಾಂಗ್ ಕಾಂಗ್ + ಹರ್ಡ್ ದ್ವೀಪ ಮತ್ತು ಮ್ಯಾಕ್ಡೊನಾಲ್ಡ್ ದ್ವೀಪಗಳು + ಹೊಂಡುರಾಸ್ + ಕ್ರೊಯೇಶಿಯಾ + ಹೈಟಿ + ಹಂಗಾರಿ + ಕ್ಯಾನರಿ ದ್ವೀಪಗಳು + ಇಂಡೋನೇಶಿಯಾ + ಐರ್ಲೆಂಡ್ + ಇಸ್ರೇಲ್ + ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ + ಭಾರತ + ಬ್ರಿಟೀಶ್ ಇಂಡಿಯನ್ ಮಹಾಸಾಗರ ಪ್ರದೇಶ + ಇರಾಕ್ + ಇರಾನ್ + ಐಸ್‌ಲ್ಯಾಂಡ್ + ಇಟಲಿ + ಜೆರ್ಸಿ + ಜಮೈಕಾ + ಜೋರ್ಡಾನ್ + ಜಪಾನ್ + ಕೀನ್ಯಾ + ಕಿರ್ಗಿಸ್ಥಾನ್ + ಕಾಂಬೋಡಿಯಾ + ಕಿರಿಬಾತಿ + ಕೊಮೊರೊಸ್ + ಸೇಂಟ್ ಕಿಟ್ಸ್ ಮತ್ತು ನೆವಿಸ್ + ಉತ್ತರ ಕೋರಿಯಾ + ದಕ್ಷಿಣ ಕೋರಿಯಾ + ಕುವೈತ್ + ಕೇಮನ್ ದ್ವೀಪಗಳು + ಕಝಾಕಿಸ್ಥಾನ್ + ಲಾವೋಸ್ + ಲೆಬನಾನ್ + ಸೇಂಟ್ ಲೂಸಿಯಾ + ಲಿಚೆನ್‌ಸ್ಟೈನ್ + ಶ್ರೀಲಂಕಾ + ಲಿಬೇರಿಯಾ + ಲೆಸೊಥೋ + ಲಿಥುವೇನಿಯಾ + ಲಕ್ಸಂಬರ್ಗ್ + ಲಾಟ್ವಿಯಾ + ಲಿಬಿಯಾ + ಮೊರಾಕ್ಕೊ + ಮೊನಾಕೊ + ಮೊಲ್ಡೋವಾ + ಮೊಂಟೆನೆಗ್ರೋ + ಸೇಂಟ್ ಮಾರ್ಟಿನ್ + ಮಡಗಾಸ್ಕರ್ + ಮಾರ್ಶಲ್ ದ್ವೀಪಗಳು + ಮ್ಯಾಸಿಡೋನಿಯಾ + ಮ್ಯಾಸಿಡೋನಿಯ (FYROM) + ಮಾಲಿ + ಮಯನ್ಮಾರ್ + ಮೊಂಗೋಲಿಯಾ + ಮಖಾವ್ SAR ಚೈನಾ + ಮಖಾವ್ + ಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳು + ಮಾರ್ಟಿನಿಕ್ + ಮಾರಿಟೇನಿಯಾ + ಮಾಂಟ್‌ಸೆರೇಟ್ + ಮಾಲ್ಟಾ + ಮಾರಿಶಿಯಸ್ + ಮಾಲ್ಡಿವ್ಸ್ + ಮಲಾವಿ + ಮೆಕ್ಸಿಕೊ + ಮಲೇಶಿಯಾ + ಮೊಜಾಂಬಿಕ್ + ನಮೀಬಿಯಾ + ನ್ಯೂ ಕ್ಯಾಲಿಡೋನಿಯಾ + ನೈಜರ್ + ನಾರ್ಫೋಕ್ ದ್ವೀಪ + ನೈಜೀರಿಯಾ + ನಿಕಾರಾಗುವಾ + ನೆದರ್‌ಲ್ಯಾಂಡ್ಸ್ + ನಾರ್ವೇ + ನೇಪಾಳ + ನೌರು + ನಿಯು + ನ್ಯೂಜಿಲೆಂಡ್ + ಓಮನ್ + ಪನಾಮಾ + ಪೆರು + ಫ್ರೆಂಚ್ ಪೋಲಿನೇಶಿಯಾ + ಪಪುವಾ ನ್ಯೂಗೀನಿಯಾ + ಫಿಲಿಫೈನ್ಸ್ + ಪಾಕಿಸ್ತಾನ + ಪೋಲ್ಯಾಂಡ್ + ಸೇಂಟ್ ಪಿಯರೆ ಮತ್ತು ಮಿಕೆಲನ್ + ಪಿಟ್‌ಕೈರ್ನ್ ದ್ವೀಪಗಳು + ಪ್ಯೂರ್ಟೋ ರಿಕೊ + ಪ್ಯಾಲಿಸ್ಟೇನಿಯನ್ ಪ್ರದೇಶ + ಪ್ಯಾಲೆಸ್ಟೇನ್ + ಪೋರ್ಚುಗಲ್ + ಪಲಾವು + ಪರಾಗ್ವೇ + ಕತಾರ್ + ಔಟ್‌‌ಲೇಯಿಂಗ್ ಓಷಿಯಾನಿಯ + ರೀಯೂನಿಯನ್ + ರೊಮೇನಿಯಾ + ಸೆರ್ಬಿಯಾ + ರಷ್ಯಾ + ರುವಾಂಡಾ + ಸೌದಿ ಅರೇಬಿಯಾ + ಸೊಲೊಮನ್ ದ್ವೀಪಗಳು + ಸೀಶೆಲ್ಲೆಸ್ + ಸೂಡಾನ್ + ಸ್ವೀಡನ್ + ಸಿಂಗಪುರ + ಸೇಂಟ್ ಹೆಲೆನಾ + ಸ್ಲೋವೇನಿಯಾ + ಸ್ವಾಲ್ಬಾರ್ಡ್ ಮತ್ತು ಜಾನ್ ಮೆಯನ್ + ಸ್ಲೋವೇಕಿಯಾ + ಸಿಯೆರ್ರಾ ಲಿಯೋನ್ + ಸ್ಯಾನ್ ಮೆರಿನೋ + ಸೆನೆಗಲ್ + ಸೊಮಾಲಿಯಾ + ಸುರಿನಾಮ + ದಕ್ಷಿಣ ಸೂಡಾನ್ + ಸಾವೋ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪಿ + ಎಲ್ ಸಾಲ್ವೇಡಾರ್ + ಸಿಂಟ್ ಮಾರ್ಟೆನ್ + ಸಿರಿಯಾ + ಸ್ವಾಜಿಲ್ಯಾಂಡ್ + ಟ್ರಿಸ್ತನ್ ಡಾ ಕುನ್ಹಾ + ಟರ್ಕ್ಸ್ ಮತ್ತು ಕೈಕೋಸ್ ದ್ವೀಪಗಳು + ಚಾದ್ + ಫ್ರೆಂಚ್ ದಕ್ಷಿಣ ಪ್ರದೇಶಗಳು + ಟೋಗೋ + ಥೈಲ್ಯಾಂಡ್ + ತಜಾಕಿಸ್ಥಾನ್ + ಟೊಕೆಲಾವ್ + ಪೂರ್ವ ತಿಮೋರ್ + ಈಸ್ಟ್ ಟಿಮೋರ್ + ತುರ್ಕ್ಮೇನಿಸ್ಥಾನ್ + ಟುನಿಶಿಯಾ + ಟೊಂಗ + ಟರ್ಕಿ + ಟ್ರಿನಿಡಾಡ್ ಮತ್ತು ಟೊಬಾಗೊ + ಟುವಾಲು + ಥೈವಾನ್ + ತಾಂಜೇನಿಯಾ + ಉಕ್ರೈನ್ + ಉಗಾಂಡಾ + ಯುಎಸ್‌. ಔಟ್‌ಲೇಯಿಂಗ್ ದ್ವೀಪಗಳು + ಅಮೇರಿಕಾ ಸಂಯುಕ್ತ ಸಂಸ್ಥಾನ + ಯು.ಎಸ್ + ಉರುಗ್ವೇ + ಉಜ್ಬೇಕಿಸ್ಥಾನ್ + ವ್ಯಾಟಿಕನ್ + ಸೇಂಟ್ ವಿನ್ಸೆಂಟ್ ಮತ್ತು ಗ್ರೆನೆಡೈನ್ಸ್ + ವೆನೆಜುವೆಲಾ + ಬ್ರಿಟಿಷ್ ವರ್ಜಿನ್ ದ್ವೀಪಗಳು + ಯು.ಎಸ್. ವರ್ಜಿನ್ ದ್ವೀಪಗಳು + ವಿಯೇಟ್ನಾಮ್ + ವನೌಟು + ವಾಲಿಸ್ ಮತ್ತು ಫುಟುನಾ + ಸಮೋವಾ + ಕೊಸೊವೊ + ಯೆಮನ್ + ಮಯೊಟ್ಟೆ + ದಕ್ಷಿಣ ಆಫ್ರಿಕಾ + ಝಾಂಬಿಯಾ + ಜಿಂಬಾಬ್ವೆ + ಅಮಾನ್ಯ ಪ್ರದೇಶ + + + ಪಿನ್‌ಯಿನ್ ರೋಮನೈಸೇಶನ್ + ವೇಡ್-ಗೈಲ್ಸ್ ರೋಮನೈಸೇಶನ್ + + + ಕ್ಯಾಲೆಂಡರ್ + ಸಂಕೇತಗಳ ವಿಂಗಡಣೆಯನ್ನು ಕಡೆಗಣಿಸಿ + ತಿರುಗು ಮುರುಗಾದ ಉಚ್ಛಾರಣೆಯ ವಿಂಗಡಣೆ + ದೊಡ್ಡಕ್ಷರ/ಸಣ್ಣಕ್ಷರ ಕ್ರಮಗೊಳಿಸುವಿಕೆ + ಕೇಸ್-ಸೆನ್ಸಿಟೀವ್ ವಿಂಗಡಣೆ + ಕನಾ ವಿಂಗಡಣೆ + ವಿಂಗಡಣೆ ಕ್ರಮ + ಸಾಮಾನ್ಯ ವಿಂಗಡಣೆ + ಸಂಖ್ಯೆ ವಿಂಗಡಣೆ + ವಿಂಗಡಣೆ ಸಾಮರ್ಥ್ಯ + ಕರೆನ್ಸಿ + ಸಂಖ್ಯೆಗಳು + ಸಮಯ ವಲಯ + ಸ್ಥಳೀಯ ಭಿನ್ನತೆ + ಚಿಹ್ನೆಗಳ ಪ್ರಕಾರವಾಗಿ ವಿಂಗಡಿಸಿ + ಖಾಸಗಿ ಬಳಕೆ + + + ಅರೇಬಿಕ್-ಇಂಡಿಕ್ ಅಂಕೆಗಳು + ವಿಸ್ತರಿಸಲಾದ ಅರೇಬಿಕ್-ಇಂಡಿಕ್ ಅಂಕೆಗಳು + ಆರ್ಮೇನಿಯಾದ ಸಂಖ್ಯೆಗಳು + ಅರ್ಮೇನಿಯಾದ ಸಣ್ಣಕ್ಷರ ಸಂಖ್ಯೆಗಳು + ಬಂಗಾಳಿ ಅಂಕೆಗಳು + ಸಾಂಪ್ರದಾಯಿಕ ಚೀನಾದ ಅನುಕ್ರಮ ವಿನ್ಯಾಸ - ದೊಡ್ಡ ಐದು + ಬೌದ್ಧರ ಕ್ಯಾಲೆಂಡರ್ + ಚೈನೀಸ್ ಪಂಚಾಂಗ + ಕೋಪ್ಟಿಕ್ ಕ್ಯಾಲೆಂಡರ್ + ದೇವನಾಗರಿ ಅಂಕೆಗಳು + ಡಿಕ್ಷನರಿ ಅನುಕ್ರಮ ವಿನ್ಯಾಸ + ಡೀಫಾಲ್ಟ್ ಯೂನಿಕೋಡ್ ವಿಂಗಡಣೆ ಕ್ರಮ + ಇಥಿಯೋಪಿಯಾದ ಸಂಖ್ಯೆಗಳು + ಇಥಿಯೋಪಿಕ್ ಕ್ಯಾಲೆಂಡರ್ + ಇಥಿಯೋಪಿಕ್ ಅಮೆಟೆ ಅಲೆಮ್ ಕ್ಯಾಲೆಂಡರ್ + ಆರ್ಥಿಕ ಸಂಖ್ಯೆಗಳು + ಪೂರ್ಣ ಅಗಲ ಅಂಕೆಗಳು + ಸರಳೀಕೃತ ಚೈನೀಸ್ ವಿಂಗಡಣೆ ಕ್ರಮ - GB2312 + ಜಾರ್ಜಿಯಾದ ಸಂಖ್ಯೆಗಳು + ಗ್ರಿಗೋರಿಯನ್ ಕ್ಯಾಲೆಂಡರ್ + ಗ್ರೀಕ್ ಸಂಖ್ಯೆಗಳು + ಗ್ರೀಕ್ ಲೋವರ್‌ಕೇಸ್ ಸಂಖ್ಯೆಗಳು + ಗುಜರಾತಿ ಅಂಕೆಗಳು + ಗುರುಮುಖಿ ಅಂಕೆಗಳು + ಚೀನಾದ ದಶಮಾಂಶ ಸಂಖ್ಯೆಗಳು + ಸರಳೀಕೃತ ಚೀನಾದ ಸಂಖ್ಯೆಗಳು + ಸರಳೀಕೃತ ಚೀನಾದ ಆರ್ಥಿಕ ಸಂಖ್ಯೆಗಳು + ಸಾಂಪ್ರದಾಯಿಕ ಚೀನಾ ಸಂಖ್ಯೆಗಳು + ಸಾಂಪ್ರದಾಯಿಕ ಚೀನಾದ ಆರ್ಥಿಕ ಸಂಖ್ಯೆಗಳು + ಹೀಬ್ರೂ ಸಂಖ್ಯೆಗಳು + ಹೀಬ್ರೂ ಕ್ಯಾಲೆಂಡರ್ + ಎಲ್ಲವನ್ನೂ ವಿಂಗಡಿಸಿ + ಭಾರತೀಯ ರಾಷ್ಟ್ರೀಯ ಕ್ಯಾಲೆಂಡರ್ + ಇಸ್ಲಾಮಿಕ್ ಕ್ಯಾಲೆಂಡರ್ + ಇಸ್ಲಾಮಿಕ್-ಸಿವಿಲ್ ಕ್ಯಾಲೆಂಡರ್ + ಜಪಾನೀಸ್ ಕ್ಯಾಲೆಂಡರ್ + ಜಪಾನೀ ಸಂಖ್ಯೆಗಳು + ಜಪಾನೀ ಆರ್ಥಿಕ ಸಂಖ್ಯೆಗಳು + ಖಮೆ ಅಂಕೆಗಳು + ಕನ್ನಡ ಅಂಕೆಗಳು + ಲಾವೋ ಅಂಕೆಗಳು + ಪಶ್ಚಿಮ ಅಂಕೆಗಳು + ಮೊದಲು ಲೋವರ್‌ಕೇಸ್ ಅನ್ನು ವಿಂಗಡಿಸಿ + ಮಲಯಾಳಂನ ಅಂಕೆಗಳು + ಮಂಗೋಲಿಯಾದ ಅಂಕೆಗಳು + ಮ್ಯಾನ್ಮಾರ್ ಅಂಕೆಗಳು + ಸ್ಥಳೀಯ ಅಂಕೆಗಳು + ಉಚ್ಛಾರಣೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ವಿಂಗಡಿಸಿ + ಸಾಮಾನ್ಯ ಕೇಸ್ ಕ್ರಮವನ್ನು ವಿಂಗಡಿಸಿ + ಕೇಸ್ ಇನ್‌ಸೆಂಟೀವ್ ಅನ್ನು ವಿಂಗಡಿಸಿ + ಕಾನಾ ಅನ್ನು ಬೇರೆಯಾಗಿ ವಿಂಗಡಿಸಿ + ಸಾಮಾನ್ಯ ಸ್ಥಿತಿಯನ್ನು ಹೊರತುಪಡಿಸಿ ವಿಂಗಡಿಸಿ + ಅಂಕೆಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ವಿಂಗಡಿಸಿ + ಚಿಹ್ನೆಗಳನ್ನು ವಿಂಗಡಿಸಿ + ಒರಿಯಾ ಅಂಕೆಗಳು + ಪರ್ಷಿಯನ್ ಕ್ಯಾಲೆಂಡರ್ + ಫೋನ್‌ಬುಕ್ ವಿಂಗಡಣೆ ಕ್ರಮ + ಉಚ್ಛಾರಣಾನುರೂಪವಾಗಿ ವಿಂಗಡಣೆ ಕ್ರಮ + ಪಿನ್‌ಯಿನ್ ವಿಂಗಡಣೆ ಕ್ರಮ + ವಿಂಗಡಣೆ ಆಧರಿಸಿದ ಅಕ್ಷರಗಳನ್ನು ಮಾತ್ರ + ಉಚ್ಛಾರಣೆ/ಕೇಸ್/ಅಳತೆ/ಕಾನಾ ವಿಂಗಡಿಸಿ + ಪರಿಷ್ಕೃತ ಅನುಕ್ರಮ ವಿನ್ಯಾಸ + ಮಿಂಗೋ ಕ್ಯಾಲೆಂಡರ್ + ರೋಮನ್ ಸಂಖ್ಯೆಗಳು + ರೋಮನ್ ಲೋವರ್‌ಕೇಸ್ ಸಂಖ್ಯೆಗಳು + ಸಾಮಾನ್ಯ- ಉದ್ದೇಶ ಹುಡುಕಾಟ + ಹಂಗುಲ್ ಆದ್ಯಕ್ಷರ ವ್ಯಂಜನದ ಮೂಲಕ ಹುಡುಕಿ + ಉಚ್ಛಾರಣೆಗಳನ್ನು ವಿಂಗಡಿಸಿ + ನಿರ್ಲಕ್ಷಿಸಿದ ಚಿಹ್ನೆಗಳನ್ನು ವಿಂಗಡಿಸಿ + ಸ್ಟ್ಯಾಂಡರ್ಡ್ ವಿಂಗಡಣೆ ಕ್ರಮ + ಸ್ಟ್ರೋಕ್ ವಿಂಗಡಣೆ ಕ್ರಮ + ಸಾಂಪ್ರದಾಯಿಕ ತಮಿಳು ಸಂಖ್ಯೆಗಳು + ತಮಿಳು ಅಂಕೆಗಳು + ತೆಲುಗು ಅಂಕೆಗಳು + ಉಚ್ಛಾರಣೆ/ಕೇಸ್/ಅಳತೆ ವಿಂಗಡಿಸಿ + ಥಾಯ್ ಅಂಕೆಗಳು + ಟಿಬೇಟಿಯನ್ ಅಂಕೆಗಳು + ಸಾಂಪ್ರದಾಯಿಕ ಅನುಕ್ರಮ ವಿನ್ಯಾಸ + ಸಾಂಪ್ರದಾಯಿಕ ಸಂಖ್ಯೆಗಳು + ರ್ಯಾಡಿಕಲ್-ಸ್ಟ್ರೋಕ್ ವಿಂಗಡಣೆ ಕ್ರಮ + ಮೊದಲು ಅಪ್ಪರ್‌ಕೇಸ್ ಅನ್ನು ವಿಂಗಡಿಸಿ + ವಾಯ್ ಅಂಕೆಗಳು + ತಿರುಗು ಮುರುಗಾದ ಉಚ್ಛಾರಣೆಗಳನ್ನು ವಿಂಗಡಿಸಿ + ಕೇಸ್‌ ಸೆನ್ಸಿಟೀವ್‌‌ ವಿಂಗಡಿಸಿ + ಕಾನಾ ಅನ್ನು ಬೇರೆಯಾಗಿ ವಿಂಗಡಿಸಿ + ಸಾಮಾನ್ಯವಾದ ಯೂನಿಕೋಡ್ ಅನ್ನು ವಿಂಗಡಿಸಿ + ಅಂಕೆಗಳನ್ನು ಸಂಖ್ಯಾತ್ಮಕವಾಗಿ ವಿಂಗಡಿಸಿ + + + BGN + ಸಂಖ್ಯೆ + ಧ್ವನಿ + UNGEGN + ಉಚ್ಚಾರಣೆಗಳು + ಪೂರ್ಣಅಗಲ + ಅರೆಅಗಲ + ಹಮೋ + ಪಿನ್‌ಯಿನ್‌ + ಪ್ರಕಟಣೆ + + + ಮೆಟ್ರಿಕ್ + UK + US + + + ಭಾಷೆ: {0} + ಸ್ಕ್ರಿಪ್ಟ್ : {0} + ಪ್ರದೇಶ: {0} + + + + [\u0CBC ೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ ಂ ಃ ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ಯ ರ ಱ ಲ ವ ಶ ಷ ಸ ಹ ಳ ೞ ಽ ಾ \u0CBF ೀ ು ೂ ೃ ೄ \u0CC6 ೇ ೈ ೊ ೋ \u0CCC \u0CCD ೕ ೖ] + [\u200C\u200D] + [ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ಯ ರ ಱ ಲ ವ ಶ ಷ ಸ ಹ ಳ ೞ] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] @ * / \& # ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d-M-y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM y G + d, MMM, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y G + y G + M/y GGGGG + d/M/y GGGGG + E, M/d/y GGGGG + MM-y G + MMM y G + d, MMM, y G + E, MMM d, y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h-h a v + + + HH–HH v + + + M–M + + + d/M - d/M + d/M – d/M + + + d/M, E - d/M, E + d/M, E - d/M, E + + + MMM–MMM + + + d –d MMM + d MMM - d MMM + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + d/M/y – d/M/y GGGGG + d/M/y – d/M/y G + d/M/y – d/M/y G + + + GGGGG y-MM-dd, E – y-MM-dd, E + d/M/y, E - d/M/y G + d/M/y, E - d/M/y, E G + + + MMM–MMM y G + MMM y - MMM y G + + + d, MMM –d y G + d MMM - d MMM, y G + d, MMM, y - d, MMM, y G + + + E,d MMM - E,d MMM, y G + E,d MMM - E,d MMM, y G + E,d MMM, y - E,d MMM, y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + ಜನ. + ಫೆಬ್ರು. + ಮಾ + ಏಪ್ರಿ. + ಮೇ + ಜೂ + ಜು. + ಆಗ. + ಸೆಪ್ಟೆಂ. + ಅಕ್ಟೋ. + ನವೆಂ. + ಡಿಸೆಂ. + + + + ಫೆ + ಮಾ + + ಮೇ + ಜೂ + ಜು + + ಸೆ + + + ಡಿ + + + ಜನವರಿ + ಫೆಬ್ರವರಿ + ಮಾರ್ಚ್ + ಏಪ್ರಿಲ್ + ಮೇ + ಜೂನ್ + ಜುಲೈ + ಆಗಸ್ಟ್ + ಸಪ್ಟೆಂಬರ್ + ಅಕ್ಟೋಬರ್ + ನವೆಂಬರ್ + ಡಿಸೆಂಬರ್ + + + + + ಜನ. + ಫೆಬ್ರು. + ಮಾ + ಏಪ್ರಿ. + ಮೇ + ಜೂ + ಜು. + ಆಗ. + ಸೆಪ್ಟೆಂ. + ಅಕ್ಟೋ. + ನವೆಂ. + ಡಿಸೆಂ. + + + + ಫೆ + ಮಾ + + ಮೇ + ಜೂ + ಜು + + ಸೆ + + + ಡಿ + + + ಜನವರಿ + ಫೆಬ್ರವರಿ + ಮಾರ್ಚ್ + ಏಪ್ರಿಲ್ + ಮೇ + ಜೂನ್ + ಜುಲೈ + ಆಗಸ್ಟ್ + ಸಪ್ಟೆಂಬರ್ + ಅಕ್ಟೋಬರ್ + ನವೆಂಬರ್ + ಡಿಸೆಂಬರ್ + + + + + + + ರ. + ಸೋ. + ಮಂ. + ಬು. + ಗು. + ಶು. + ಶನಿ. + + + + ಸೋ + ಮಂ + ಬು + ಗು + ಶು + + + + ರವಿ + ಸೋಮ + ಮಂಗಳ + ಬುಧ + ಗುರು + ಶುಕ್ರ + ಶನಿ + + + ರವಿವಾರ + ಸೋಮವಾರ + ಮಂಗಳವಾರ + ಬುಧವಾರ + ಗುರುವಾರ + ಶುಕ್ರವಾರ + ಶನಿವಾರ + + + + + ರವಿ + ಸೋಮ + ಮಂಗಳ + ಬುಧ + ಗುರು + ಶುಕ್ರ + ಶನಿ + + + + ಸೋ + ಮಂ + ಬು + ಗು + ಶು + + + + ರವಿ + ಸೋಮ + ಮಂಗಳ + ಬುಧ + ಗುರು + ಶುಕ್ರ + ಶನಿ + + + ರವಿವಾರ + ಸೋಮವಾರ + ಮಂಗಳವಾರ + ಬುಧವಾರ + ಗುರುವಾರ + ಶುಕ್ರವಾರ + ಶನಿವಾರ + + + + + + + ತ್ರೈ 1 + ತ್ರೈ 2 + ತ್ರೈ 3 + ತ್ರೈ 4 + + + 1 + 2 + 3 + 4 + + + 1 ನೇ ತ್ರೈಮಾಸಿಕ + 2ನೇ ತ್ರೈಮಾಸಿಕ + 3 ನೇ ತ್ರೈಮಾಸಿಕ + 4 ನೇ ತ್ರೈಮಾಸಿಕ + + + + + ತ್ರೈ 1 + ತ್ರೈ 2 + ತ್ರೈ 3 + ತ್ರೈ 4 + + + 1 + 2 + 3 + 4 + + + 1 ನೇ ತ್ರೈಮಾಸಿಕ + 2 ನೇ ತ್ರೈಮಾಸಿಕ + 3 ನೇ ತ್ರೈಮಾಸಿಕ + 4 ನೇ ತ್ರೈಮಾಸಿಕ + + + + + + + AM + PM + + + AM + PM + + + AM + PM + + + + + + ಈಸಪೂವ೯. + ಕ್ರಿಸ್ತ ಶಕ + + + ಕ್ರಿ.ಪೂ + ಜಾಹೀ + ಸಾಮಾನ್ಯ ಯುಗ + + + + + + d MMMM y, EEEE + + + + + d MMMM y + + + + + d MMM y + + + + + d-M-yy + + + + + + + hh:mm:ss a zzzz + + + + + hh:mm:ss a z + + + + + hh:mm:ss a + + + + + hh:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d, MMM, y G + MMM d, y G, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + d/M, E + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + MMM y + d, MMM, y + d MMM, y E + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h-h a v + + + HH–HH v + + + M–M + + + d/M - d/M + d/M – d/M + + + MM-dd, E – MM-dd, E + d/M,E -d/M E. + + + MMM–MMM + + + d –d MMM + d MMM - d MMM + + + d MMM, E- d MMM, E + d MMM, E - d MMM, E + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + d/M/y,E - d/M/y,E, + d/M/y, E - d/M/y, E + d/M/y, E - d/M/y, E + + + MMM–MMM y + MMM y - MMM y + + + d, MMM –d y + d MMM - d MMM, y + d, MMM, y - d, MMM, y + + + d MMM,E - d MMM, y E + d MMM, E - d MMM, y, E + d MMM, y E - d MMM, y E + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + ಯುಗ + + + ವರ್ಷ + ಕಳೆದ ವರ್ಷ + ಈ ವರ್ಷ + ಮುಂದಿನ ವರ್ಷ + + {0} ವರ್ಷಗಳಲ್ಲಿ + {0} ವರ್ಷಗಳಲ್ಲಿ + + + {0} ವರ್ಷಗಳ ಹಿಂದೆ + {0} ವರ್ಷಗಳ ಹಿಂದೆ + + + + ತಿಂಗಳು + ಕಳೆದ ತಿಂಗಳು + ಈ ತಿಂಗಳು + ಮುಂದಿನ ತಿಂಗಳು + + {0} ತಿಂಗಳುಗಳಲ್ಲಿ + {0} ತಿಂಗಳುಗಳಲ್ಲಿ + + + {0} ತಿಂಗಳುಗಳ ಹಿಂದೆ + {0} ತಿಂಗಳುಗಳ ಹಿಂದೆ + + + + ವಾರ + ಕಳೆದ ವಾರ + ಈ ವಾರ + ಮುಂದಿನ ವಾರ + + {0} ವಾರಗಳಲ್ಲಿ + {0} ವಾರಗಳಲ್ಲಿ + + + {0} ವಾರಗಳ ಹಿಂದೆ + {0} ವಾರಗಳ ಹಿಂದೆ + + + + ದಿನ + ಮೊನ್ನೆ + ನಿನ್ನೆ + ಇಂದು + ನಾಳೆ + ನಾಡಿದ್ದು + + {0} ದಿನಗಳಲ್ಲಿ + {0} ದಿನಗಳಲ್ಲಿ + + + {0} ದಿನಗಳ ಹಿಂದೆ + {0} ದಿನಗಳ ಹಿಂದೆ + + + + ವಾರದ ದಿನ + + + ಕಳೆದ ರವಿವಾರ + ಈ ರವಿವಾರ + ಮುಂದಿನ ರವಿವಾರ + + + ಕಳೆದ ಸೋಮವಾರ + ಈ ಸೋಮವಾರ + ಮುಂದಿನ ಸೋಮವಾರ + + + ಕಳೆದ ಮಂಗಳವಾರ + ಈ ಮಂಗಳವಾರ + ಮುಂದಿನ ಮಂಗಳವಾರ + + + ಕಳೆದ ಬುಧವಾರ + ಈ ಬುಧವಾರ + ಮುಂದಿನ ಬುಧವಾರ + + + ಕಳೆದ ಗುರುವಾರ + ಈ ಗುರುವಾರ + ಮುಂದಿನ ಗುರುವಾರ + + + ಕಳೆದ ಶುಕ್ರವಾರ + ಈ ಶುಕ್ರವಾರ + ಮುಂದಿನ ಶುಕ್ರವಾರ + + + ಕಳೆದ ಶನಿವಾರ + ಈ ಶನಿವಾರ + ಮುಂದಿನ ಶನಿವಾರ + + + ಪೂರ್ವಾಹ್ನ/ಅಪರಾಹ್ನ + + + ಗಂಟೆ + + {0} ಗಂಟೆಗಳಲ್ಲಿ + {0} ಗಂಟೆಗಳಲ್ಲಿ + + + {0} ಗಂಟೆಗಳ ಹಿಂದೆ + {0} ಗಂಟೆಗಳ ಹಿಂದೆ + + + + ನಿಮಿಷ + + {0} ನಿಮಿಷಗಳಲ್ಲಿ + {0} ನಿಮಿಷಗಳಲ್ಲಿ + + + {0} ನಿಮಿಷಗಳ ಹಿಂದೆ + {0} ನಿಮಿಷಗಳ ಹಿಂದೆ + + + + ಸೆಕೆಂಡ್ + ಇದೀಗ + + {0} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ + {0} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ + + + {0} ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ + {0} ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ + + + + ಸಮಯ ವಲಯ + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} ಸಮಯ + {0} (+1) + {0} (+0) + {1} ({0}) + + ಅಜ್ಞಾತ ನಗರ + + + ಅಂಡೋರಾ + + + ದುಬೈ + + + ಕಾಬೂಲ್ + + + ಆಂಟಿಗುವಾ + + + ಅಂಗುಲ್ಲಾ + + + ಟಿರಾನೆ + + + ಯೆರಿವಾನ್ + + + ಲುವಾಂಡಾ + + + ರೊಥೇರಾ + + + ಪಾಲ್ಮರ್ + + + ಸ್ಯೋವಾ + + + ಮಾವ್ಸನ್ + + + ಡೇವೀಸ್ + + + ವೋಸ್ಟೋಕ್ + + + ಕೇಸಿ + + + ಡುಮಂಟ್ ಡಿ ಉರ್ವಿಲೆ + + + ಮ್ಯಾಕ್ಮುರ್ಡೋ + + + ರಿಯೋ ಗಯೇಗೋ + + + ಮೆಂಡೊಜಾ + + + ಸ್ಯಾನ್ ಜುವಾನ್ + + + ಉಶ್ವಾಯ + + + ಲಾ ರಿಯೋಜಾ + + + ಸ್ಯಾನ್ ಲೂಯೀಸ್ + + + ಕಟಮಾರ್ಕ + + + ಸಾಲ್ಟಾ + + + ಹೂಹ್ವೀ + + + ಟುಕುಮಾನ್ + + + ಕೊರ್ಡೊಬಾ + + + ಬ್ಯೂನಸ್ ಏರಿಸ್ + + + ಪಾಗೊ ಪಾಗೊ + + + ವಿಯೆನ್ನಾ + + + ಪರ್ಥ್ + + + ಯುಕ್ಲಾ + + + ಡಾರ್ವಿನ್ + + + ಅಡಿಲೇಡ್ + + + ಬ್ರೊಕನ್ ಹಿಲ್ + + + ಕರೀ + + + ಮೆಲ್ಬರ್ನ್ + + + ಹೋಬಾರ್ಟ್‌ + + + ಲಿಂಡಿಮಾನ್ + + + ಸಿಡ್ನಿ + + + ಬ್ರಿಸ್ಬೇನ್‌ + + + ಮ್ಯಾಕ್ವೆರಿ + + + ಲಾರ್ಡ್ ಹೋ + + + ಅರುಬಾ + + + ಮರಿಹಮ್ನ್ + + + ಬಕು + + + ಸರಜೆವೊ + + + ಬಾರ್ಬಡೋಸ್ + + + ಢಾಕಾ + + + ಬ್ರಸ್ಸೆಲ್ಸ್ + + + ಔಗಾಡೋಗು + + + ಸೋಫಿಯಾ + + + ಬಹ್ರೇನ್ + + + ಬುಜುಂಬುರಾ + + + ಪೋರ್ಟೋ-ನೋವೋ + + + ಸೇಂಟ್ ಬಾರ್ತೆಲೆಮಿ + + + ಬರ್ಮುಡಾ + + + ಬ್ರೂನಿ + + + ಲಾ ಪೆಜ್ + + + ಕ್ರೆಲೆಂಡಿಜ್ಕ್ + + + ಇರುನಿಪೆ + + + ರಿಯೋ ಬ್ರ್ಯಾಂಕೊ + + + ಪೋರ್ಟೊ ವೆಲ್ಹೋ + + + ಬೋವವೀಸ್ತಾ + + + ಮನಾವ್ಸ್ + + + ಕ್ಯೂಇಬಾ + + + ಸಾಂತರಮ್ + + + ಕಾಂಪೋ ಗ್ರಾಂದ್‌ + + + ಬೇಲೆಂ + + + ಅರಾಗುಯಾನಾ + + + ಸಾವ್ ಪಾಲೊ + + + ಬಹೀಯಾ + + + ಫೊರ್ಟಲೆಜಾ + + + ಮೆಸೀಯೊ + + + ರೆಸೀಫಿ + + + ನೊರೊನ್ಹಾ + + + ನಸ್ಸೂವಾ + + + ಥಿಂಪು + + + ಗ್ಯಾಬರೋನೆ + + + ಮಿನ್‌ಸ್ಕ್ + + + ಬೆಲೀಜ್ + + + ಡೌಸನ್ + + + ವೈಟ್‌ಹಾರ್ಸ್ + + + ಇನುವಿಕ್ + + + ವ್ಯಾಂಕೊವರ್‌ + + + ಡೌಸನ್ ಕ್ರೀಕ್ + + + ಕ್ರೆಸ್ಟನ್ + + + ಯೆಲ್ಲೋ‌ನೈಫ್ + + + ಎಡ್ಮಂಟನ್‌ + + + ಸ್ವಿಪ್ಟ್ ಕರೆಂಟ್ + + + ಕೇಮ್‌ಬ್ರಿಡ್ಜ್ ಬೇ + + + ರೆಜಿನಾ + + + ವಿನ್ನಿಪೇಗ್ + + + ರೆಸೊಲ್ಯೂಟ್ + + + ಮಳೆಯ ನದಿ + + + ರಾಂಕಿನ್ ಇನ್‌ಲೆಟ್ + + + ಅಟಿಕೊಕಾನ್ + + + ಥಂಡರ್ ಬೇ + + + ನಿಪಿಗನ್ + + + ಟೊರೊಂಟೋ + + + ಈಕ್ವಾಲಿಟ್ + + + ಪಂಗ್ನೀರ್‌ಟಂಗ್ + + + ಮಾಂಕ್ಟನ್ + + + ಹ್ಯಾಲಿಫೆಕ್ಸ್ + + + ಗೂಸ್ ಬೇ + + + ಗ್ಲೇಸ್ ಬೇ + + + ಬ್ಲಾಂಕ್-ಸಾಬ್ಲನ್ + + + ಸೇಂಟ್ ಜಾನ್ಸ್ + + + ಕೊಕೋಸ್ + + + ಕಿನ್ಷಾಸಾ + + + ಲುಬುಂಬಾಶಿ + + + ಬಾಂಗಿ + + + ಬ್ರೆಜಾವೀಲ್ + + + ಜ್ಯೂರಿಕ್ + + + ಅಬಿದ್‌ಜನ್ + + + ರರೋಟೋಂಗಾ + + + ಈಸ್ಟರ್ + + + ಸ್ಯಾಂಟಿಯಾಗೊ + + + ದೌಲಾ + + + ಕಶ್‌ಗರ್ + + + ಉರ್‌ಮಕಿ + + + ಚೋಂಗ್‌ಕಿಂಗ್ + + + ಶಾಂಗೈ + + + ಹರ್ಬಿನ್ + + + ಬೊಗೋಟ + + + ಕೋಸ್ಟಾ ರಿಕಾ + + + ಹವಾನಾ + + + ಕೇಪ್ ವೆರ್ಡ್ + + + ಕುರಾಕಾವ್ + + + ಕ್ರಿಸ್ಮಸ್ + + + ನಿಕೋಸಿಯಾ + + + ಪ್ರಾಗ್ವೆ + + + ಬುಸಿಂಜೆನ್ + + + ಬರ್ಲಿನ್ + + + ಡಿಬೌಟಿ + + + ಕೋಪೆನ್‌ಹೇಗನ್ + + + ಡೊಮಿನಿಕಾ + + + ಸ್ಯಾಂಟೋ ಡೊಮಿಂಗೊ + + + ಅಲ್ಗೀರ್ಸ್ + + + ಗಲಾಪಗೋಸ್ + + + ಗುಯಾಕ್ವಿಲ್ + + + ಟ್ಯಾಲಿನ್ + + + ಕೈರೋ + + + ಎಲ್ ಔನ್ + + + ಅಸ್ಮಾರಾ + + + ಕ್ಯಾನರಿ + + + ಸೆಯುಟಾ + + + ಮ್ಯಾಡ್ರಿಡ್ + + + ಆಡಿಸ್ ಅಬಾಬಾ + + + ಹೆಲ್ಸಿಂಕಿ + + + ಫಿಜಿ + + + ಸ್ಟಾನ್ಲಿ + + + ಚುಕ್ + + + ಪೋನ್‌ಪೆ + + + ಕೋಸ್ರೆ + + + ಫ್ಯಾರೊ + + + ಪ್ಯಾರಿಸ್ + + + ಲಿಬ್ರೆವೀಲ್ + + + + ಬ್ರಿಟಿಷ್ ಬೇಸಿಗೆ ಸಮಯ + + ಲಂಡನ್ + + + ಗ್ರೆನೇಡಾ + + + ತ್ಯುಬಿಲ್ಸಿ + + + ಕೆಯೆನಿ + + + ಗುರ್ನ್ಜೀ + + + ಅಕ್ರಾ + + + ಜಿಬ್ರಾಲ್ಟರ್ + + + ಥೂಲೆ + + + ಗೋಡ್ಥಾಬ್ + + + ಸ್ಕೋರ್ಸ್‌ಬೈಸಂದ್ + + + ಡನ್‌ಮಾರ್ಕ್‌ಶ್ವಾನ್ + + + ಬಂಜುಲ್ + + + ಕೊನಾಕ್ರಿ + + + ಗ್ವಾಡೆಲೋಪ್ + + + ಮಲಾಬೋ + + + ಅಥೆನ್ಸ್ + + + ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ + + + ಗ್ವಾಟೆಮಾಲಾ + + + ಗ್ವಾಮ್ + + + ಬಿಸ್ಸಾವ್ + + + ಗಯಾನಾ + + + ಹಾಂಗ್ ಕಾಂಗ್ + + + ತೆಗುಸಿಗಲ್ಪಾ + + + ಜಾಗ್ರೆಬ್‌ + + + ಪೋರ್ಟ್-ಒ-ಪ್ರಿನ್ಸ್ + + + ಬುಡಾಪೆಸ್ಟ್ + + + ಜಕಾರ್ತಾ + + + ಪೊಂಟಿಯಾನಕ್ + + + ಮೆಕಾಸ್ಸರ್ + + + ಜಯಪುರ + + + + ಐರಿಷ್ ಬೇಸಿಗೆ ಸಮಯ + + ಡುಬ್ಲಿನ್ + + + ಜೆರುಸಲೆಮ್ + + + ಐಲ್ ಆಫ್ ಮ್ಯಾನ್ + + + ಕೊಲ್ಕತ್ತಾ + + + ಚಾಗೊಸ್ + + + ಬಾಗ್ದಾದ್ + + + ತೆಹ್ರಾನ್ + + + ರೈಕ್ಜಾವಿಕ್ + + + ರೋಮ್ + + + ಜೆರ್ಸಿ + + + ಜಮೈಕಾ + + + ಅಮ್ಮಾನ್ + + + ಟೋಕಿಯೊ + + + ನೈರೋಬಿ + + + ಬಿಶ್ಕೆಕ್ + + + ನೋಮ್ ಪೆನ್ + + + ಎಂಡರ್ಬರಿ + + + ಕಿರಿತಿಮತಿ + + + ತರಾವಾ + + + ಕೊಮೋರೊ + + + ಸೇಂಟ್ ಕಿಟ್ಸ್ + + + ಪ್ಯಾಂಗ್ಂಯೇ + + + ಸಿಯೋಲ್ + + + ಕುವೈತ್ + + + ಕೇಮನ್ + + + ಅಕ್ತಾವ್ + + + ಒರಲ್ + + + ಅಕ್ಟೋಬೆ + + + ಕಿಜೈಲೋರ್ದ + + + ಅಲ್ಮಾಟಿ + + + ವಿಯೆಂಟಿಯಾನ್ + + + ಬೀರಟ್ + + + ಸೇಂಟ್ ಲೂಸಿಯಾ + + + ವಡೂಜ್ + + + ಕೊಲಂಬೊ + + + ಮೊನ್ರೋವಿಯಾ + + + ಮಸೇರು + + + ವಿಲ್ನಿಯಸ್ + + + ಲಕ್ಸೆಂಬರ್ಗ್ + + + ರಿಗಾ + + + ಟ್ರೈಪೋಲಿ + + + ಕಾಸಾಬ್ಲಾಂಕಾ + + + ಮೊನಾಕೊ + + + ಚಿಸಿನಾವ್ + + + ಪೊದ್ಗೊರಿಸಾ + + + ಮರಿಗೊ + + + ಅಂಟಾನನಾರಿವೊ + + + ಕ್ವಾಜಲೇನ್ + + + ಮಜುರೊ + + + ಸ್ಕಾಪಿಯಾ + + + ಬಮಾಕೊ + + + ರಂಗೂನ್ + + + ಹೋವ್ಡ್ + + + ಉಲಾನ್ಬಾತರ್ + + + ಚೊಯ್ಬಾಲ್ಸನ್ + + + ಮಖಾವ್ + + + ಸೈಪನ್ + + + ಮಾರ್ಟಿನಿಕ್ + + + ನೌಕ್‌ಚೋಟ್ಟ್ + + + ಮಾಂಟ್‌ಸೆರೇಟ್ + + + ಮಾಲ್ಟಾ + + + ಮಾರಿಶಸ್ + + + ಮಾಲ್ಡೀವ್ಸ್ + + + ಬ್ಲ್ಯಾಂಟೈರ್ + + + ತಿಜ್ವಾನಾ + + + ಸಾಂತಾ ಇಸಾಬೆಲ್ + + + ಹರ್ಮೊಸಿಲ್ಲೋ + + + ಮಜಟ್ಲಾನ್ + + + ಚಿವಾವ + + + ಬಾಹಿಯಾ ಬಂಡೇರಾಸ್ + + + ಓಜಿನಾಗಾ + + + ಮಾಂತುರೇ + + + ಮೆಕ್ಸಿಕೋ ನಗರ + + + ಮಟಾಮೋರಸ್ + + + ಮೆರಿದಾ + + + ಕ್ಯಾಂಕನ್ + + + ಕೌಲಾ ಲಂಪುರ + + + ಕುಚಿಂಗ್ + + + ಮ್ಯಾಪುಟೊ + + + ವಿಂಡ್ಹೋಕ್ + + + ನ್ಯೂಮಿಯಾ + + + ನಿಯಾಮೆ + + + ನಾರ್ಫೋಕ್ + + + ಲಾಗೋಸ್ + + + ಮನಾಗುವಾ + + + ಆಮ್‌ಸ್ಟೆರ್‌ಡ್ಯಾಂ + + + ಓಸ್ಲೋ + + + ಕಠ್ಮಂಡು + + + ನೌರು + + + ನಿಯು + + + ಚತಮ್ + + + ಆಕ್ ಲ್ಯಾಂಡ್ + + + ಮಸ್ಕತ್ + + + ಪನಾಮಾ + + + ಲಿಮಾ + + + ತಹಿತಿ + + + ಮಾರ್ಕ್ಯೂಸಸ್ + + + ಗ್ಯಾಂಬಿಯರ್ + + + ಪೋರ್ಟ್ ಮೋರಿಸ್‌ಬೈ + + + ಮನಿಲಾ + + + ಕರಾಚಿ + + + ವಾರ್ಸಾ + + + ಮಿಕೆಲಾನ್ + + + ಪಿಟ್‌ಕೈರ್ನ್ + + + ಪ್ಯುರ್ಟೋ ರಿಕೊ + + + ಗಾಜಾ + + + ಹೆಬ್ರಾನ್ + + + ಅಝೋರಿಸ್ + + + ಮೆಡಿರಾ + + + ಲಿಸ್ಬನ್ + + + ಪಾಲಾವ್ + + + ಅಸುಂಕಿಯನ್ + + + ಖತಾರ್ + + + ರಿಯುನಿಯನ್ + + + ಬುಕಾರೆಸ್ಟ್ + + + ಬೆಲ್‌ಗ್ರೇಡ್ + + + ಕಲಿನಿನ್‌ಗ್ರದ್ + + + ಮಾಸ್ಕೋ + + + ವೊಲ್ಗೊಗ್ರಾದ್‌ + + + ಸಮರ + + + ಎಕ್ಯಾಟೆರಿನ್ಬರ್ಗ್ + + + ಒಮಸ್ಕ್ + + + ನೊವೋಸಿಬಿಸ್ಕ್ + + + ನೋವೋಕುಜೆ + + + ಕ್ರಾಸ್ನೊಯಾರ್ಸ್ಕ್ + + + ಇರ್‌ಕುಟ್ಸ್ + + + ಯಕುಟ್ಸ್ಕ್ + + + ವ್ಲಾದಿವೊಸ್ಟಾಕ್‌ + + + ಖಂಡ್ಯಾಗಾ + + + ಸಖಾಲಿನ್ + + + ಉಸ್ತ್-ನೆರಾ + + + ಮಗದನ್‌ + + + ಕಮ್ಚತ್ಕ + + + ಅನದ್ಯರ್ + + + ಕಿಗಾಲಿ + + + ರಿಯಾದ್ + + + ಗ್ವಾಡಲ್ಕೆನಾಲ್ + + + ಮಾಹೆ + + + ಖರ್ಟೋಮ್ + + + ಸ್ಟಾಕ್ಹೋಮ್ + + + ಸಿಂಗಾಪೂರ್ + + + ಸೇಂಟ್ ಹೆಲೆನಾ + + + ಲ್ಯೂಬ್ಲ್ಯಾನಾ + + + ಲಾಂಗ್‌ಇಯರ್‌ಬೇನ್ + + + ಬ್ರಾಟಿಸ್ಲಾವ + + + ಫ್ರೀಟೌನ್ + + + ಸ್ಯಾನ್ ಮರೀನೊ + + + ಡಾಕರ್ + + + ಮೊಗಾದಿಶು + + + ಪರಮಾರಿಬೋ + + + ಜುಬಾ + + + ಸಾ ಟೋಮ್ + + + ಎಲ್ ಸಾಲ್ವಡೋರ್ + + + ಲೋವರ್ ಪ್ರಿನ್ಸಸ್ ಕ್ವಾರ್ಟರ್ + + + ಡಮಾಸ್ಕಸ್ + + + ಅಂಬಬಾನೆ + + + ಗ್ರ್ಯಾಂಡ್ ಟರ್ಕ್ + + + ಡ್ಜಮೇನಾ + + + ಕೆರ್ಗ್ಯುಲೆನ್ + + + ಲೋಮ್ + + + ಬ್ಯಾಂಕಾಕ್ + + + ದುಶಾಂಬೆ + + + ಫಕೋಫೋ + + + ದಿಲಿ + + + ಅಶ್ಗಬಾತ್ + + + ಟುನೀಸ್ + + + ಟೊಂಗಾಟಾಪು + + + ಇಸ್ತಾನ್‌ಬುಲ್ + + + ಪೋರ್ಟ್ ಆಫ್ ಸ್ಪೇನ್ + + + ಫುನಾಫುಟಿ + + + ತೈಪೆ + + + ಡಾರ್ ಎಸ್ ಸಲಾಮ್ + + + ಉಜ್‌ಗೊರೊದ್ + + + ಕಿವ್ + + + ಸಿಮ್ಫೆರೋಪೋಲ್ + + + ಜಾಪರೀಝಿಯಾ + + + ಕಂಪಾಲಾ + + + ಮಿಡ್‌ವೇ + + + ಜಾನ್‌ಸ್ಟನ್ + + + ವೇಕ್ + + + ಅಡಕ್‌‌ + + + ನೋಮ್ + + + ಹೊನಲುಲು + + + ಆಂಕರೋಜ್ + + + ಯಾಕುಟಾಟ್ + + + ಸಿತ್ಕಾ + + + ಜುನೇವ್ + + + ಮೆಟ್ಲಾಕಾಟ್ಲಾ + + + ಲಾಸ್ ಏಂಜಲೀಸ್ + + + ಬ್ವಾಸಿ + + + ಫೋನಿಕ್ಸ್ + + + ಡೆನ್‌ವೀರ್ + + + ಬೆವುಲಾ ಉತ್ತರ ಡೆಕೊತಾ + + + ನ್ಯೂ ಸಲೇಂ, ಉತ್ತರ ಡಕೋಟಾ + + + ಕೇಂದ್ರ ಉತ್ತರ ಡೆಕೊತಾ + + + ಶಿಕಾಗೋ + + + ಮೆನೊಮಿನೀ + + + ವಿನ್‌ಸೆನ್ನೀಸ್, ಇಂಡಿಯಾನಾ + + + ಪೀಟರ್ಸ್‌ಬರ್ಗ್, ಇಂಡಿಯಾನಾ + + + ಟೆಲ್ ಸಿಟಿ, ಇಂಡಿಯಾನಾ + + + ನಾಕ್ಸ್, ಇಂಡಿಯಾನಾ + + + ವಿನಾಮೆಕ್, ಇಂಡಿಯಾನಾ + + + ಮಾರೆಂಗೋ, ಇಂಡಿಯಾನಾ + + + ಇಂಡಿಯಾನಾಪೊಲಿಸ್ + + + ಲೂಯೀಸ್‌ವಿಲ್ಲೆ + + + ವೇವಾಯ್, ಇಂಡಿಯಾನಾ + + + ಮೊಂಟಿಸೆಲ್ಲೋ, ಕೆಂಟುಕಿ + + + ಡೆಟ್ರಾಯ್ಟ್ + + + ನ್ಯೂಯಾರ್ಕ್ + + + ಮಾಂಟಿವೀಡಿಯೊ + + + ಸಮರಖಂಡ + + + ತಾಶ್ಕೆಂಟ್ + + + ವ್ಯಾಟಿಕನ್ + + + ಸೇಂಟ್ ವಿನ್ಸೆಂಟ್ + + + ಕ್ಯಾರಕಾಸ್ + + + ಟಾರ್ಟೊಲಾ + + + ಸೆಂಟ್ ಥಾಮಸ್ + + + ಹೊ ಚಿ ಮಿನ್ ಸಿಟಿ + + + ಇಫೇಟ್ + + + ವ್ಯಾಲಿಸ್ + + + ಅಪಿಯಾ + + + ಅಡೆನ್ + + + ಮಯೊಟ್ಟೆ + + + ಜೊಹಾನ್ಸ್‌ಬರ್ಗ್ + + + ಲುಸಾಕಾ + + + ಹರಾರೆ + + + + ಏಕರ್ ಸಮಯ + ಏಕರ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಏಕರ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅಫಘಾನಿಸ್ತಾನ ಸಮಯ + + + + + ಮಧ್ಯ ಆಫ್ರಿಕಾ ಸಮಯ + + + + + ಪೂರ್ವ ಆಫ್ರಿಕಾ ಸಮಯ + + + + + ದಕ್ಷಿಣ ಆಫ್ರಿಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಸಮಯ + ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪಶ್ಚಿಮ ಆಫ್ರಿಕಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅಲಾಸ್ಕಾ ಸಮಯ + ಅಲಸ್ಕಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ‌ಅಲಾಸ್ಕಾ ಹಗಲು ಸಮಯ + + + + + ಆಲ್ಮೇಟಿ ಸಮಯ + ಆಲ್ಮೇಟಿ ಪ್ರಮಾಣಿತ ಸಮಯ + ಆಲ್ಮೇಟಿ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅಮೆಜಾನ್ ಸಮಯ + ಅಮೆಜಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅಮೆಜಾನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಕೇಂದ್ರ ಸಮಯ + ಕೇಂದ್ರ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕೇಂದ್ರ ಹಗಲು ಸಮಯ + + + + + ಪೂರ್ವ ಸಮಯ + ಪೂರ್ವದ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪೂರ್ವದ ಹಗಲು ಸಮಯ + + + + + ಮೌಂಟೇನ್ ಸಮಯ + ಮೌಂಟೆನ್‌‌ನ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಮೌಂಟೆನ್‌‌ ಬೆಳಗಿನ ಸಮಯ + + + + + ಪೆಸಿಫಿಕ್ ಸಮಯ + ಪೆಸಿಫಿಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಪೆಸಿಫಿಕ್ ಬೆಳಗಿನ ಸಮಯ + + + + + ಅನಡೀರ್‌ ಸಮಯ + ಅನಡೀರ್‌ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅನಡೀರ್‌ ಹಗಲು ಸಮಯ + + + + + ಅಕ್ಟೌ ಸಮಯ + ಅಕ್ಟೌ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅಕ್ಟೌ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅಕ್ಟೋಬೆ ಸಮಯ + ಅಕ್ಟೋಬೆ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅಕ್ಟೋಬೆ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅರೇಬಿಯನ್ ಸಮಯ + ಅರೇಬಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅರೇಬಿಯನ್ ಹಗಲು ಸಮಯ + + + + + ಅರ್ಜೆಂಟಿನಾ ಸಮಯ + ಅರ್ಜೆಂಟೀನಾ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಅರ್ಜೆಂಟಿನಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಸಮಯ + ಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪಶ್ಚಿಮ ಅರ್ಜೆಂಟೀನಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅರ್ಮೇನಿಯ ಸಮಯ + ಅರ್ಮೇನಿಯ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅರ್ಮೇನಿಯ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅಟ್ಲಾಂಟಿಕ್ ಸಮಯ + ಅಟ್ಲಾಂಟಿಕ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅಟ್ಲಾಂಟಿಕ್ ಬೆಳಗಿನ ಸಮಯ + + + + + ಕೇಂದ್ರ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪ್ರಮಾಣಿತ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಹಗಲು ಸಮಯ + + + + + ಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ್ಚಿಮ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ್ಚಿಮ ಪ್ರಮಾಣಿತ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಕೇಂದ್ರ ಪಶ್ಚಿಮ ಹಗಲು ಸಮಯ + + + + + ಪೂರ್ವ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಪೂರ್ವ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪೂರ್ವ ಆಸ್ಟ್ರೇಲಿಯಾದ ಹಗಲು ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಆಸ್ಟ್ರೇಲಿಯಾ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಪಶ್ಚಿಮ ಪ್ರಮಾಣಿತ ಸಮಯ + ಆಸ್ಟ್ರೇಲಿಯಾದ ಪಶ್ಚಿಮ ಹಗಲು ಸಮಯ + + + + + ಅಜರ್ಬೈಜಾನ್ ಸಮಯ + ಅಜರ್ಬೈಜಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅಜರ್ಬೈಜಾನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಅಜೋರಸ್ ಸಮಯ + ಅಜೋರಸ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಅಜೋರಸ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಬಾಂಗ್ಲಾದೇಶ ಸಮಯ + ಬಾಂಗ್ಲಾದೇಶ ಪ್ರಮಾಣಿತ ಸಮಯ + ಬಾಂಗ್ಲಾದೇಶ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಭೂತಾನ್ ಸಮಯ + + + + + ಬೊಲಿವಿಯಾ ಸಮಯ + + + + + ಬ್ರೆಸಿಲಿಯಾದ ಸಮಯ + ಬ್ರೆಜಿಲಿಯಾ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಬ್ರೆಸಿಲಿಯಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಬ್ರೂನಿ ದಾರುಸಲೆಮ್ ಸಮಯ + + + + + ಕೇಪ್ ವರ್ಡ್ ಸಮಯ + ಕೇಪ್ ವರ್ಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕೇಪ್ ವರ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಚಮೋರೋ ಪ್ರಮಾಣಿತ ಸಮಯ + + + + + ಚಥಾಮ್ ಸಮಯ + ಚಥಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಚಥಾಮ್ ಹಗಲು ಸಮಯ + + + + + ಚಿಲಿ ಸಮಯ + ಚಿಲಿ ಪ್ರಮಾಣಿತ ಸಮಯ + ಚಿಲಿ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಚೀನಾ ಸಮಯ + ಚೀನಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಚೀನಾ ಹಗಲು ಸಮಯ + + + + + ಚೊಯ್‌ಬಲ್ಸಾನ್ ಸಮಯ + ಚೊಯ್‌‌ಬಲ್ಸಾನ್‌ ಪ್ರಮಾಣಿತ ಸಮಯ + ಚೊಯ್‌ಬಲ್ಸಾನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಕ್ರಿಸ್ಮಸ್ ದ್ವೀಪ ಸಮಯ + + + + + ಕೋಕೋಸ್ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ಕೊಲಂಬಿಯಾ ಸಮಯ + ಕೊಲಂಬಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕೊಲಂಬಿಯಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಕುಕ್ ದ್ವೀಪಗಳ ಸಮಯ + ಕುಕ್ ದ್ವೀಪಗಳ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕುಕ್ ದ್ವೀಪಗಳ ಮಧ್ಯಕಾಲೀನ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಕ್ಯೂಬಾ ಸಮಯ + ಕ್ಯೂಬಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕ್ಯೂಬಾ ಹಗಲು ಸಮಯ + + + + + ಡೇವಿಸ್ ಸಮಯ + + + + + ಡುಮಂಟ್-ಡಿ ಉರ್ವಿಲೆ ಸಮಯ + + + + + ಪೂರ್ವ ಟಿಮೋರ್ ಸಮಯ + + + + + ಈಸ್ಟರ್ ದ್ವೀಪ ಸಮಯ + ಈಸ್ಟರ್ ದ್ವೀಪ ಪ್ರಮಾಣಿತ ಸಮಯ + ಈಸ್ಟರ್ ದ್ವೀಪ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಈಕ್ವೆಡಾರ್ ಸಮಯ + + + + + ಮಧ್ಯ ಯುರೋಪಿಯನ್ ಸಮಯ + ಮಧ್ಯ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಮಧ್ಯ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಸಮಯ + ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪೂರ್ವ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಸಮಯ + ಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪಶ್ಚಿಮ ಯುರೋಪಿಯನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಸಮಯ + ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪ್ರಮಾಣಿತ ಸಮಯ + ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಫಿಜಿ ಸಮಯ + ಫಿಜಿ ಪ್ರಮಾಣಿತ ಸಮಯ + ಫಿಜಿ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಫ್ರೆಂಚ್ ಗಯಾನಾ ಸಮಯ + + + + + ದಕ್ಷಿಣ ಫ್ರೆಂಚ್ ಮತ್ತು ಅಂಟಾರ್ಟಿಕಾ ಸಮಯ + + + + + ಗಾಲಾಪಾಗೋಸ್ ಸಮಯ + + + + + ಗ್ಯಾಂಬಿಯರ್ ಸಮಯ + + + + + ಜಾರ್ಜಿಯಾ ಸಮಯ + ಜಾರ್ಜಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಜಾರ್ಜಿಯಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಗಿಲ್ಬರ್ಟ್ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ಗ್ರೀನ್‌ವಿಚ್ ಸರಾಸರಿ ಕಾಲಮಾನ + + + + + *ಪೂರ್ವ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಸಮಯ + *ಪೂರ್ವ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪೂರ್ವ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಸಮಯ + ಪಶ್ಚಿಮ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪಶ್ಚಿಮ ಗ್ರೀನ್‌ಲ್ಯಾಂಡ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಗುವಾಮ್ ಪ್ರಮಾಣಿತ ಸಮಯ + + + + + ಗಲ್ಫ್ ಪ್ರಮಾಣಿತ ಸಮಯ + + + + + ಗಯಾನಾ ಸಮಯ + + + + + ಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಸಮಯ + ಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಹವಾಯಿ-ಅಲ್ಯುಟಿಯನ್ ಹಗಲು ಸಮಯ + + + + + ಹಾಂಗ್ ಕಾಂಗ್ ಸಮಯ + ಹಾಂಗ್ ಕಾಂಗ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಹಾಂಗ್ ಕಾಂಗ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಹವ್ಡ್ ಸಮಯ + ಹವ್ಡ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಹವ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಭಾರತೀಯ ಪ್ರಮಾಣಿತ ಸಮಯ + + + IST + + + + + ಹಿಂದೂ ಮಹಾಸಾಗರ ಸಮಯ + + + + + ಇಂಡೊಚೈನಾ ಸಮಯ + + + + + ಮಧ್ಯ ಇಂಡೋನೇಷಿಯ ಸಮಯ + + + + + ಪೂರ್ವ ಇಂಡೋನೇಷಿಯ ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಇಂಡೋನೇಷಿಯ ಸಮಯ + + + + + ಇರಾನ್ ಸಮಯ + ಇರಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಇರಾನ್ ಹಗಲು ಸಮಯ + + + + + ಇರ್‌ಕುಟಸ್ಕ್ ಸಮಯ + ಇರ್‌ಕುಟಸ್ಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಇರ್‌ಕುಟಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಇಸ್ರೇಲ್ ಸಮಯ + ಇಸ್ರೇಲ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಇಸ್ರೇಲ್ ಹಗಲು ಸಮಯ + + + + + ಜಪಾನ್ ಸಮಯ + ಜಪಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಜಪಾನ್ ಹಗಲು ಸಮಯ + + + + + ಪೆತ್ರೋಪಾವ್ಲೋಸ್ಕ್‌‌-ಕಮ್ಚತ್ಸ್‌ಕೀ ಸಮಯ + ಪೆತ್ರೋಪಾವ್ಲೋಸ್ಕ್‌‌-ಕಮ್ಚತ್ಸ್‌ಕೀ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪೆತ್ರೋಪಾವ್ಲೋಸ್ಕ್‌‌-ಕಮ್ಚತ್ಸ್‌ಕೀ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪೂರ್ವ ಕಜಕಿಸ್ತಾನ್ ಸಮಯ + + + + + ಪಶ್ಚಿಮ ಕಜಕಿಸ್ತಾನ್ ಸಮಯ + + + + + ಕೊರಿಯನ್ ಸಮಯ + ಕೊರಿಯನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕೊರಿಯನ್ ಹಗಲು ಸಮಯ + + + + + ಕೊಸರೆ ಸಮಯ + + + + + ಕ್ರಸ್ನಿಯಾರ್ಕ್ಸ್ ಸಮಯ + ಕ್ರಾಸ್‌ನೊಯಾರ್ಸ್ಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಕ್ರಾಸ್‌ನೊಯಾರ್ಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಕಿರ್ಗಿಸ್ತಾನ್ ಸಮಯ + + + + + ಲಂಕಾ ಸಮಯ + + + + + ಲೈನ್ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ಲಾರ್ಡ್ ಹೋವ್ ಸಮಯ + ಲಾರ್ಡ್ ಹೋವ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಲಾರ್ಡ್ ಹೋವ್ ಬೆಳಗಿನ ಸಮಯ + + + + + ಮಕಾವ್ ಸಮಯ + ಮಕಾವ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಮಕಾವ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಮ್ಯಾಕ್‌ಕ್ಯುರೈ ದ್ವೀಪ ಸಮಯ + + + + + ಮಗದನ್ ಸಮಯ + ಮಗದನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಮಗಡಾನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಮಲೇಷಿಯಾ ಸಮಯ + + + + + ಮಾಲ್ಡೀವ್ಸ್ ಸಮಯ + + + + + ಮಾರ್ಕ್ಯುಸಸ್ ಸಮಯ + + + + + ಮಾರ್ಷಲ್ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ಮಾರಿಶಸ್ ಸಮಯ + ಮಾರಿಶಸ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಮಾರಿಶಸ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಮಾವ್‌ಸನ್ ಸಮಯ + + + + + ಉಲನ್ ಬ್ಯಾಟರ್ ಸಮಯ + ಉಲನ್ ಬ್ಯಾಟರ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಉಲನ್ ಬ್ಯಾಟರ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಮಾಸ್ಕೋ ಸಮಯ + ಮಾಸ್ಕೋ ಪ್ರಮಾಣಿತ ಸಮಯ + ಮಾಸ್ಕೋ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಮ್ಯಾನ್ಮಾರ್ ಸಮಯ + + + + + ನೌರು ಸಮಯ + + + + + ನೇಪಾಳ ಸಮಯ + + + + + ಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಸಮಯ + ಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಹೊಸ ಕ್ಯಾಲೆಡೋನಿಯಾ ಬೇಸಿಗೆಯ ಸಮಯ + + + + + ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಸಮಯ + ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಹಗಲು ಸಮಯ + + + + + ನ್ಯೂಫೌಂಡ್‌ಲ್ಯಾಂಡ್ ಸಮಯ + ನ್ಯೂಫೌಂಡ್‌ಲ್ಯಾಂಡ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ನ್ಯೂಫೌಂಡ್‌ಲ್ಯಾಂಡ್ ಬೆಳಗಿನ ಸಮಯ + + + + + ನಿಯು ಸಮಯ + + + + + ನಾರ್ಫೋಕ್ ದ್ವಿಪಗಳ ಸಮಯ + + + + + ಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಸಮಯ + ಫೆರ್ನಾಂಡೋ ಡೆ ನೊರೊನ್ಹಾ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಫರ್ನಾಂಡೋ ದೆ ನೊರೊನ್ಹಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಉತ್ತರ ಮರಿಯಾನಾ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ನೊವೊಸಿಬಿರ್‌ಸ್ಕ್ ಸಮಯ + ನೊವೊಸಿಬಿಸ್ಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ನೊವೊಸಿಬಿರ್‌ಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಒಮಾಸ್ಕ್ ಸಮಯ + ಒಮಾಸ್ಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಒಮಾಸ್ಕ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪಾಕಿಸ್ತಾನ ಸಮಯ + ಪಾಕಿಸ್ತಾನ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪಾಕಿಸ್ತಾನ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪಾಲಾವ್ ಸಮಯ + + + + + ಪಪುವ ನ್ಯೂ ಗಿನೀ ಸಮಯ + + + + + ಪರಾಗ್ವೇ ಸಮಯ + ಪರಾಗ್ವೇ ಪ್ರಮಾಣಿತ ಸಮಯ + ಪರಾಗ್ವೇ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಪೆರು ಸಮಯ + ಪೆರು ಪ್ರಮಾಣಿತ ಸಮಯ + ಪೆರು ಬೇಸಿಗೆ ಸಮಯ + + + + + ಫಿಲಿಫೈನ್ ಸಮಯ + ಫಿಲಿಫೈನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಫಿಲಿಫೈನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಫೋನಿಕ್ಸ್ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ಸೇಂಟ್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಸಮಯ + ಸೇಂಟ್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಸೇಂಟ್ ಪಿಯರ್ ಮತ್ತು ಮಿಕ್ವೆಲನ್ ಹಗಲು ಸಮಯ + + + + + ಪಿಟ್‌ಕೈರ್ನ್ ಸಮಯ + + + + + ಪೊನಾಪೆ ಸಮಯ + + + + + ಕೋಜಿಲೋರ್ಡಾ ಸಮಯ + ಕೋಜಿಲೋರ್ಡಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಕೋಜಿಲೋರ್ಡಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ರಿಯೂನಿಯನ್ ಸಮಯ + + + + + ರೊತೇರಾ ಸಮಯ + + + + + ಸ್ಯಾಕ್‌ಹಲಿನ್ ಸಮಯ + ಸ್ಯಾಕ್‌ಹಲಿನ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಸ್ಯಾಕ್‌ಹಲಿನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಸಮರ ಸಮಯ + ಸಮರ ಪ್ರಮಾಣಿತ ಸಮಯ + ಸಮರ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಸಮೋವಾ ಸಮಯ + ಸಮೋವಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಸಮೋವಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಸೀಷೆಲ್ಸ್ ಸಮಯ + + + + + ಸಿಂಗಪುರ್ ಪ್ರಮಾಣಿತ ಸಮಯ + + + + + ಸಾಲಮನ್ ದ್ವೀಪಗಳ ಸಮಯ + + + + + ದಕ್ಷಿಣ ಜಾರ್ಜಿಯಾ ಸಮಯ + + + + + ಸುರಿನೇಮ್ ಸಮಯ + + + + + ಸ್ಯೊವಾ ಸಮಯ + + + + + ತಾಹಿತಿ ಸಮಯ + + + + + ತೈಪೆ ಸಮಯ + ತೈಪೆ ಪ್ರಮಾಣಿತ ಸಮಯ + ತೈಪೆ ಹಗಲು ಸಮಯ + + + + + ತಝಕಿಸ್ತಾನ್ ಸಮಯ + + + + + ಟೊಕೆಲಾವ್ ಸಮಯ + + + + + ಟೊಂಗಾ ಸಮಯ + ಟೊಂಗಾ ಪ್ರಮಾಣಿತ ಸಮಯ + ಟೊಂಗಾ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಚುಕ್ ಸಮಯ + + + + + ತುರ್ಕ್‌ಮೇನಿಸ್ತಾನ್ ಸಮಯ + ತುರ್ಕ್‌ಮೇನಿಸ್ತಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ತುರ್ಕ್‌ಮೇನಿಸ್ತಾನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ತುವಾಲು ಸಮಯ + + + + + ಉರುಗ್ವೇ ಸಮಯ + ಉರುಗ್ವೇ ಪ್ರಮಾಣಿತ ಸಮಯ + ಉರುಗ್ವೇ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಉಜ್ಬೇಕಿಸ್ತಾನ್ ಸಮಯ + ಉಜ್ಬೇಕಿಸ್ತಾನ್ ಪ್ರಮಾಣಿತ ಸಮಯ + ಉಜ್ಬೇಕಿಸ್ತಾನ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ವನೌತು ಸಮಯ + ವನೌತು ಪ್ರಮಾಣಿತ ಸಮಯ + ವನೌತು ಬೇಸಿಗೆ ಸಮಯ + + + + + ವೆನಿಜುವೆಲಾ ಸಮಯ + + + + + ವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಸಮಯ + ವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ವ್ಲಾಡಿವೋಸ್ಟೋಕ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ವೋಲ್ಗೋಗಾರ್ಡ್ ಸಮಯ + ವೋಲ್ಗೋಗಾರ್ಡ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ವೋಲ್ಗೋಗಾರ್ಡ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ವೋಸ್ಟೊಕ್ ಸಮಯ + + + + + ವೇಕ್ ದ್ವೀಪ ಸಮಯ + + + + + ವ್ಯಾಲೀಸ್ ಮತ್ತು ಫ್ಯುಟುನಾ ಸಮಯ + + + + + ಯಾಕುಟ್ಸಕ್ ಸಮಯ + ಯಾಕುಟ್ಸಕ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಯಾಕುಟ್ಸಕ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + ಯೇಕಟರಿನ್‌ಬರ್ಗ್ ಸಮಯ + ಯೇಕಟರಿನ್‌ಬರ್ಗ್ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಮಯ + ಯೇಕೇಟರ್ನ್‌ಬರ್ಗ್ ಬೇಸಿಗೆ ಸಮಯ + + + + + + latn + + knda + + + . + , + ; + % + + + - + + × + + + NaN + + + + + #,##0.### + + + + + 0 ಸಾವಿರ + 0 ಸಾವಿರ + 00 ಸಾವಿರ + 00 ಸಾವಿರ + 000 ಸಾವಿರ + 000 ಸಾವಿರ + 0 ಮಿಲಿಯನ್ + 0 ಮಿಲಿಯನ್ + 00 ಮಿಲಿಯನ್ + 00 ಮಿಲಿಯನ್ + 000 ಮಿಲಿಯನ್ + 000 ಮಿಲಿಯನ್ + 0 ಬಿಲಿಯನ್ + 0 ಬಿಲಿಯನ್ + 00 ಬಿಲಿಯನ್ + 00 ಬಿಲಿಯನ್ + 000 ಬಿಲಿಯನ್ + 000 ಬಿಲಿಯನ್ + 0 ಟ್ರಿಲಿಯನ್‌ + 0 ಟ್ರಿಲಿಯನ್‌ + 00 ಟ್ರಿಲಿಯನ್‌ + 00 ಟ್ರಿಲಿಯನ್‌ + 000 ಟ್ರಿಲಿಯನ್‌ + 000 ಟ್ರಿಲಿಯನ್‌ + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + ಸಂಯುಕ್ತ ಅರಬ್‌ ಎಮಿರೇಟ್‌‌ಗಳ ದಿರಾಮ್‌‌ + + + ಅಫ್‌ಘನ್ ಅಫಗಾನಿ + + + ಅಲ್‌ಬೇನಿಯನ್ ಲೆಕ್ + + + ಅರ್‌ಮೇನಿಯನ್ ಡ್ರಾಮ್ + + + ನೆದರ್‌ಲ್ಯಾಂಡ್ಸ್‌‌ ಎಂಟಿಲಿಯಾದ ಗಿಲ್ಡರ್‌‌ + + + ಅಂಗೋಲಾದ ಕ್ವಾನ್ಝಾ + + + ಅರ್ಜೆಂಟಿನಾ ಪೆಸೊ + + + ಆಸ್ಟ್ರೇಲಿಯನ್ ಡಾಲರ್‌ + A$ + + + ಅರುಬ ಫ್ಲೊರೀನ್‌‌ + + + ಅಝರ್‌ಬೈಜಾನಿ ಮನಾತ್ + + + ಬೋಸ್ನಿಯಾ-ಹರ್ಜ್‌ಗೋವಿನ ಪರಿವರ್ತನೀಯ ಗುರುತು + + + ಬರ್ಬಾಡಿಯನ್ ಡಾಲರ್ + + + ಬಾಂಗ್ಲಾದೇಶದ ಟಾಕಾ + + + ಬಲ್ಗೇರಿಯನ್ ಲೀವ್ + + + ಬಹ್‌‌ರೈನಿ ದಿನಾರ್ + + + ಬುರುಂದಿಯನ್ ಫ್ರಾಂಕ್ + + + ಬರ್ಮುಡನ್ ಡಾಲರ್ + ಬರ್ಮುಡನ್ ಡಾಲರ್ + ಬರ್ಮುಡನ್ ಡಾಲರ್ + + + ಬ್ರೂನಿ ಡಾಲರ್ + + + ಬೊಲಿವಿಯಾದ ಬೊಲಿವಿಯಾನೊ + + + ಬ್ರೆಜಿಲಿಯನ್‌ ರಿಯಲ್ + R$ + + + ಬಹಾಮಿಯನ್ ಡಾಲರ್ + + + ಭೂತಾನೀಸ್ ನುಲ್ತರಮ್ + + + ಬೋಟ್ಸ್‌ವಾನನ್ ಪುಲಾ + + + ಬೆಲಾರುಸಿಯನ್ ರೂಬಲ್ + + + ಬೆಲೀಜ್ ಡಾಲರ್ + + + ಕೆನಡಾದ ಡಾಲರ್ + CA$ + + + ಕಾಂಗೋಲೀಸ್ ಫ್ರಾಂಕ್ + + + ಸ್ವಿಸ್ ಫ್ರಾಂಕ್ + + + ಚಿಲಿಯ ಪೆಸೊ + + + ಚೈನೀಸ್ ಯುವಾನ್ + CN¥ + + + ಕೊಲೊಂಬಿಯೋದ ಪೆಸೊ + + + ಕೋಸ್ಟಾ ರಿಕಾದ ಕೊಲೊನ್‌ + + + ಕ್ಯುಬಾದ ಪರಿವರ್ತನೀಯ ಪೆಸೊ + + + ಕ್ಯೂಬಾದ ಪೆಸೊ + + + ಕೇಪ್ ವರ್ಡಿನ್ ಎಸ್‌ಕೂಡೊ + + + ಝೆಕ್ ಗಣರಾಜ್ಯ ಕೊರೂನ + + + ಜಿಬೊಟಿಯನ್ ಫ್ರಾಂಕ್ + + + ಡ್ಯಾನಿಶ್ ಕ್ರೋನ್ + + + ಡೊಮಿನಿಕನ್ ಪೆಸೊ + + + ಅಲ್ಗೇರಿಯನ್ ದಿನಾರ್ + + + ಈಜಿಪ್ಟಿಯನ್ ಪೌಂಡ್ + + + ಎರಿತ್ರಿಯನ್ ನಕ್ಫಾ + + + ಇಥಿಯೋಪಿಯನ್ ಬಿರ್ + + + ಯೂರೊ + + + + ಫಿಜಾನ್ ಡಾಲರ್ + + + ಫಾಲ್ಕ್‌ಲ್ಯಾಂಡ್ ದ್ವೀಪಗಳ ಪೌಂಡ್ + + + ಬ್ರಿಟೀಷ್ ಪೌಂಡ್ ಸ್ಟೆರ್ಲಿಂಗ್ + £ + + + ಜಾರ್ಜಿಯಾದ ಲಾರಿ + + + ಘಾನಾದ ಸೆದಿ + + + ಗಿಬ್ರಾಲ್ಟರ್ ಪೌಂಡ್ + + + ಗ್ಯಾಂಬಿಯಾದ ದಲಾಸಿ + + + ಗ್ವೀನಿಯನ್ ಫ್ರಾಂಕ್ + + + ಗ್ವಾಟೆಮಾಲಾದ ಕುಯಿಟ್ಸಲ್‌‌ + + + ಗುಯಾನೀಸ್‌ ಡಾಲರ್‌ + + + ಹಾಂಗ್ ಕಾಂಗ್ ಡಾಲರ್ + HK$ + + + ಹೊಂಡುರಾನ್‌ ಲೆಂಪಿರಾ + + + ಕ್ರೊಯೆಷ್ಯಾದ ಕೂನಾ + + + ಹೈಟಿಯ ಗೋರ್ದೆ + + + ಹಂಗೇರಿಯನ್ ಫೋರಿಂಟ್ + + + ಇಂಡೊನೇಷ್ಯಾ ರುಪೈ + + + ಇಸ್ರೇಲಿ ನ್ಯೂ ಶೇಖಲ್ + + + + ಭಾರತೀಯ ರುಪಾಯಿ + + + + ಇರಾಖಿಯನ್ ದಿನಾರ್ + + + ಇರಾನಿಯನ್ ರಿಯಲ್ + + + ಐಸ್‌ಲ್ಯಾಂಡಿಕ್ ಕ್ರೋನಾ + + + ಜಮೈಕನ್ ಡಾಲರ್ + + + ಜೋರ್ಡಾನಿಯನ್ ದಿನಾರ್ + + + ಜಪಾನೀಸ್ ಯೆನ್ + JP¥ + + + ಕೆನ್ಯನ್ ಶಿಲ್ಲಿಂಗ್ + + + ಕಿರ್ಗಿಸ್ತಾನಿ ಸೋಮ್ + + + ಕಾಂಬೋಡಿಯನ್ ರಿಯಲ್ + + + ಕೊಮೊರಿಯನ್ ಫ್ರಾಂಕ್ + + + ಉತ್ತರ ಕೊರಿಯನ್ ವೋನ್ + + + ದಕ್ಷಿಣ ಕೊರಿಯನ್ ವೊನ್ + + + + ಕುವೈತೀ ದಿನಾರ್ + + + ಕೆಮ್ಯಾನ್‌ ಐಲ್ಯಾಂಡ್‌ನ ಡಾಲರ್‌ + ಕೆಮ್ಯಾನ್‌ ಐಲ್ಯಾಂಡ್‌ನ ಡಾಲರ್‌ + ಕೆಮ್ಯಾನ್‌ ಐಲ್ಯಾಂಡ್‌ನ ಡಾಲರ್‌ + + + ಕಜಕಿಸ್ತಾನ್ ತೆಂಗೇ + + + ಲೋಟಿಯನ್ ಕಿಪ್ + ಲೋಟಿಯನ್ ಕಿಪ್ + ಲೋಟಿಯನ್ ಕಿಪ್ + + + ಲೆಬೆನೀಸ್ ಪೌಂಡ್ + + + ಶ್ರೀಲಂಕಾದ ರುಪೀ + + + ಲಿಬೇರಿಯನ್ ಡಾಲರ್ + + + ಲೆಸೊತೊ ಲೊತಿ + + + ಲಿಥುನಿಯನ್‌ ಲಿತಾಸ್‌ + + + ಲ್ಯಾಟ್ವಿಯನ್ ಲ್ಯಾಟ್ಸ್ + + + ಲಿಬಿಯಾದ ದಿನಾರ್‌ + + + ಮೊರೊಕನ್ ದಿರ್‌ಹಮ್ + + + ಮಲ್ದೋವಾದ ಲೆವೂ + + + ಮಲಗಾಸಿ ಅರಿಯಾರಿ + + + ಮೆಸಡೋನಿಯನ್ ದಿನಾರ್ + + + ಮ್ಯಾನ್ಮಾ ಕ್ಯಾಟ್ + + + ಮಂಗೋಲಿಯಾದ ತುಗ್ರಿಕ್‌‌ + + + ಮಕ್ಯೂದ ಪಟಕಾ + + + ಮೌರೀಶಿಯನಿಯನ್ ಒಗಿಯ + + + ಮಾರಿಷಿಯನ್ ರುಪಿ + + + ಮಾಲ್ಡೀವಿಯನ್ ರುಫಿಯಾ + + + ಮಲಾವಿಯ ಕ್ವಾಚ + + + ಮೆಕ್ಸಿಕೊದ ಪೆಸೊ + MX$ + + + ಮಲೇಶಿಯನ್ ರಿಂಗಿಟ್ಟ್ + + + ಮೊಝಾಂಬಿಕನ್ ಮೆಟಿಕಲ್ + + + ನಮೀಬಿಯನ್ ಡಾಲರ್ + + + ನೈಜೀರಿಯಾದ ನೇರಾ + + + ನಿಕಾರಗ್ವಾದ ಕರ್ದೊಬಾ + + + ನಾರ್‌ವೇಜಿಯನ್ ಕ್ರೋನ್ + + + ನೇಪಾಳದ ರುಪೀ + + + ನ್ಯೂಜಿಲ್ಯಾಂಡ್ ಡಾಲರ್ + NZ$ + + + ಒಮಾನಿ ರಿಯಲ್ + + + ಪನಾಮಾನಿಯನ್ ಬಲ್ಬೋವಾ + ಪನಾಮಾನಿಯನ್ ಬಲ್ಬೋವಾ + ಪನಾಮಾನಿಯನ್ ಬಲ್ಬೋವಾ + + + ಪೆರುವಿಯನ್ ನವೆವೋ ಸೊಲ್ + + + ಪಪುವಾ ನ್ಯೂ ಗುನಿಯನ್ ಕಿನಾ + + + ಫಿಲಿಪ್ಪೈನ್ ಪೆಸೊ + + + ಪಾಕಿಸ್ತಾನದ ರುಪೀ + + + ಪೊಲಿಶ್ ಝ್ಲೋಟಿ + + + ಪೆರುಗ್ವೇಯ ಗ್ವಾರನೀ + + + ಖತಾರಿ ರಿಯಲ್ + + + ರೊಮೇನಿಯನ್ ಲೆವು + + + ಸೆರ್ಬಿಯನ್ ದಿನಾರ್ + + + ರಶಿಯನ್ ರೂಬಲ್ + + + ರಾವಂದನ್ ಫ್ರಾಂಕ್ + + + ಸೌದಿ ರಿಯಾಲ್ + + + ಸೊಲೊಮನ್ ದ್ವೀಪಗಳ ಡಾಲರ್ + + + ಸೆಚೊಲಿಯೊಸ್ ರುಪಿ + + + ಸೂಡಾನೀಸ್ ಪೌಂಡ್ + + + ಸ್ವೀಡಿಶ್ ಕ್ರೋನಾ + + + ಸಿಂಗಾಪುರ್ ಡಾಲರ್‌ + + + ಸೇಂಟ್ ಹೆಲೇನಾ ಪೌಂಡ್ + + + ಸಿಯೆರಾ ಲಿಯೋನಿಯನ್ ಲಿಯೋನ್ + + + ಸೊಮಾಲಿ ಶಿಲ್ಲಿಂಗ್ + + + ಸುರಿನಾಮೀಸ್ ಡಾಲರ್ + + + ದಕ್ಷಿಣ ಸುಡಾನೀಸ್ ಪೌಂಡ್ + + + ಸಾವೊ ಟೋಮ್ ಮತ್ತು ಪ್ರಿನ್ಸಿಪ್ ದೊಬ್ರಾ + + + ಸಿರಿಯನ್ ಪೌಂಡ್ + + + ಸ್ವಾಜಿ ಲಿಲಂಗೆನಿ + + + ಥಾಯ್ ಬಹ್ತ್ + ฿ + + + ತಜಕಿಸ್ತಾನಿ ಸೊಮೋನಿ + + + ತುರ್ಕ್‌ಮೇನಿಸ್ತಾನಿ ಮನಾತ್ + + + ತುನೀಸಿಯನ್ ದಿನಾರ್ + + + ಟೊಂಗಾ ಪಾಂಗ + + + ತುರ್ಕಿಶ್ ಲಿರಾ + + + ತ್ರಿನಿದಾದ್ ಮತ್ತು ಟೊಬಾಗೊ ಡಾಲರ್ + + + ನ್ಯೂ ತೈವಾನ್ ಡಾಲರ್ + NT$ + + + ತಾನ್‌ಜೇನಿಯನ್ ಶಿಲ್ಲಿಂಗ್ + + + ಉಕ್ರೇನಿಯನ್ ಹ್ರಿವ್ನೀಯ + + + ಉಗಾಂಡನ್ ಶಿಲ್ಲಿಂಗ್ + + + ಅಮೆರಿಕದ ಡಾಲರ್‌ + US$ + + + ಉರುಗ್ವೆಯ ಪೆಸೊ + + + ಉಜ್‌ಬೈಕಿಸ್ತಾನ್ ಸೋಮ್ + + + ವೆನಿಜುಲಿಯನ್ ಬೊಲಿವರ್ + + + ವಿಯೆಟ್ನಾಮೀಸ್ ಡಾಂಗ್ + + + + ವನೂತು ವತು + + + ಸಮೋನ್ ತಲಾ + + + CFA ಫ್ರಾಂಕ್ BEAC + + + ಪೂರ್ವ ಕೆರೀಬಿಯನ್ ಡಾಲರ್ + EC$ + + + CFA ಫ್ರಾಂಕ್ BCEAO + CFA + + + CFP ಫ್ರಾಂಕ್ + CFPF + + + ಗೊತ್ತಿಲ್ಲದ ಕರೆನ್ಸಿ + ಗೊತ್ತಿಲ್ಲದ ಕರೆನ್ಸಿ + ಗೊತ್ತಿಲ್ಲದ ಕರೆನ್ಸಿ + + + ಯೆಮನಿ ರಿಯಲ್ + + + ದಕ್ಷಿಣ ಆಫ್ರಿಕನ್ ರಾಂಡ್ + + + ಜಾಂಬಿಯಾ ಕ್ವಾಚ (1968–2012) + + + ಜಾಂಬಿಯಾ ಕ್ವಾಚ + + + + ⩾{0} + {0}–{1} + + + + + + {0}/{1} + + + {0} ಜಿ-ಫೋರ್ಸ್ + {0} ಜಿ-ಫೋರ್ಸ್ + + + {0}ನಿಮಿಷ + {0}ನಿಮಿಷಗಳು + + + {0} ಸೆಕೆಂಡ್ + {0} ಸೆಕೆಂಡುಗಳು + + + {0}ಡಿಗ್ರಿ + {0}ಡಿಗ್ರಿಗಳು + + + {0} ಎಕರೆ + {0} ಎಕರೆಗಳು + + + {0} ಹೆಕ್ಟೇರ್ + {0} ಹೆಕ್ಟೇರುಗಳು + + + {0} ಚದರಡಿ + {0} ಚದರಡಿ + + + {0} ಚದರ ಕಿಲೋಮೀಟರ್ + {0} ಚದರ ಕಿಲೋಮೀಟರ್‌ಗಳು + + + {0} ಚದರ ಮೀಟರ್ + {0} ಚದರ ಮೀಟರ್‌ಗಳು + + + {0} ಚದರ ಮೈಲು + {0} ಚದರ ಮೈಲುಗಳು + + + {0} ದಿನಗಳು + {0} ದಿನಗಳು + + + {0} ಗಂಟೆಗಳು + {0} ಗಂಟೆಗಳು + + + {0} ಮಿಲಿಸೆಕೆಂಡ್ + {0} ಮಿಲಿಸೆಕೆಂಡುಗಳು + + + {0} ನಿಮಿಷಗಳು + {0} ನಿಮಿಷಗಳು + + + {0} ತಿಂಗಳುಗಳು + {0} ತಿಂಗಳುಗಳು + + + {0} ಸೆಕೆಂಡುಗಳು + {0} ಸೆಕೆಂಡುಗಳು + + + {0} ವಾರಗಳು + {0} ವಾರಗಳು + + + {0} ವರ್ಷಗಳು + {0} ವರ್ಷಗಳು + + + {0} ಸೆಂಟಿಮೀಟರ್ + {0} ಸೆಂಟಿಮೀಟರ್‌ಗಳು + + + {0} ಅಡಿ + {0} ಅಡಿ + + + {0} ಅಂಗುಲ + {0} ಅಂಗುಲಗಳು + + + {0} ಕಿಲೋಮೀಟರ್ + {0} ಕಿಲೋಮೀಟರ್‌ಗಳು + + + {0} ಹಗುರವಾದ ವರ್ಷ + {0} ಹಗುರವಾದ ವರ್ಷಗಳು + + + {0} ಮೀಟರ್ + {0} ಮೀಟರ್‌ಗಳು + + + {0} ಮೈಲು + {0} ಮೈಲುಗಳು + + + {0} ಮಿಲಿಮೀಟರ್ + {0} ಮಿಲಿಮೀಟರ್‌ಗಳು + + + {0} ಪಿಕೋಮೀಟರ್ + {0} ಪಿಕೋಮೀಟರ್‌ಗಳು + + + {0} ಗಜ + {0} ಗಜಗಳು + + + {0} ಗ್ರಾಂ + {0} ಗ್ರಾಂಗಳು + + + {0} ಕಿಲೋಗ್ರಾಂ + {0} ಕಿಲೋಗ್ರಾಂಗಳು + + + {0} ಔನ್ಸ್ + {0} ಔನ್ಸ್‌ಗಳು + + + {0} ಪೌಂಡ್ + {0} ಪೌಂಡ್‌ಗಳು + + + {0} ಹಾರ್ಸ್‌ಪವರ್ + {0} ಹಾರ್ಸ್‌ಪವರ್ + + + {0} ಕಿಲೋವ್ಯಾಟ್ + {0} ಕಿಲೋವ್ಯಾಟ್‌ಗಳು + + + {0} ವ್ಯಾಟ್ + {0} ವ್ಯಾಟ್‌ಗಳು + + + {0} ಹೆಕ್ಟೋಪ್ಯಾಸ್ಕಲ್ + {0} ಹೆಕ್ಟೋಪ್ಯಾಸ್ಕಲ್‌ಗಳು + + + {0} ಮರ್ಕ್ಯುರಿ ಅಂಗುಲ + {0} ಮರ್ಕ್ಯುರಿ ಅಂಗುಲಗಳು + + + {0} ಮಿಲಿಬಾರ್ + {0} ಮಿಲಿಬಾರ್‌ಗಳು + + + {0} ಗಂಟೆಗೆ ಕಿಲೋಮೀಟರ್ + {0} ಗಂಟೆಗೆ ಕಿಲೋಮೀಟರ್‌ಗಳು + + + {0} ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ಮೀಟರ್ + {0} ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ಮೀಟರ್‌ಗಳು + + + {0} ಗಂಟೆಗೆ ಮೈಲು + {0} ಗಂಟೆಗೆ ಮೈಲುಗಳು + + + {0}ಡಿಗ್ರಿ ಸೆಲ್ಶಿಯಸ್ + {0}ಡಿಗ್ರಿ ಸೆಲ್ಶಿಯಸ್ + + + {0}ಡಿಗ್ರಿ ಫ್ಯಾರೆನ್‌ಹಿಟ್ + {0}ಡಿಗ್ರಿ ಫ್ಯಾರೆನ್‌ಹಿಟ್ + + + {0} ಘನ ಕಿಲೋಮೀಟರ್ + {0} ಘನ ಕಿಲೋಮೀಟರ್‌ಗಳು + + + {0} ಘನ ಮೈಲು + {0} ಘನ ಮೈಲುಗಳು + + + {0} ಲೀಟರ್ + {0} ಲೀಟರುಗಳು + + + + + {0}/{1} + + + {0} ಜಿ-ಫೋ. + {0} ಜಿ-ಫೋ. + + + {0} ನಿ. + {0} ನಿ. + + + {0} ಸೆಕೆಂ + {0} ಸೆಕೆಂ + + + {0} ಡಿ. + {0} ಡಿ. + + + {0} ಎಕ. + {0} ಎಕ. + + + {0} ಹೆ. + {0} ಹೆ. + + + {0} ಚ.ಅ + {0} ಚ.ಅ + + + {0} ಚ.ಕಿಮೀ. + {0} ಚ.ಕಿಮೀ. + + + {0} ಮೀ² + {0} ಮೀ² + + + {0} ಚ.ಮೀ. + {0} ಚ.ಮೀ. + + + {0} ದಿನ + {0} ದಿನ + + + {0} ಗಂ. + {0} ಗಂ. + + + {0} ms + {0} ms + + + {0} ನಿಮಿ + {0} ನಿಮಿ + + + {0} ತಿಂ. + {0} ತಿಂ. + + + {0} ಸೆಕೆಂ + {0} ಸೆಕೆಂ + + + {0} ವಾರಗಳು + {0} ವಾರಗಳು + + + {0} ವರ್ಷಗಳು + {0} ವರ್ಷಗಳು + + + {0} ಸೆಮೀ + {0} ಸೆಮೀ + + + {0} ಅ + {0} ಅ + + + {0} ಅಂ + {0} ಅಂ + + + {0} ಕಿಮೀ + {0} ಕಿಮೀ + + + {0} ಹಗು. ವರ್ಷ. + {0} ಹಗು. ವ. + + + {0} ಮೀ + {0} ಮೀ + + + {0} ಮೈ. + {0} ಮೈ. + + + {0} ಮಿಮೀ + {0} ಮಿಮೀ + + + {0} ಪಿಎಂ + {0} ಪಿಎಂ + + + {0} ಗ + {0} ಗ + + + {0} ಗ್ರಾ + {0} ಗ್ರಾ + + + {0} ಕೆಜಿ + {0} ಕೆಜಿ + + + {0} ಔ + {0} ಔ + + + {0} ಪೌಂ + {0} ಪೌಂ + + + {0} ಹೆಚ್‌ಪಿ + {0} ಹೆಚ್‌ಪಿ + + + {0} ಕಿ.ವ್ಯಾ + {0} ಕಿ.ವ್ಯಾ + + + {0} ವ್ಯಾ. + {0} ವ್ಯಾ. + + + {0} ಹೆ.ಪ್ಯಾ + {0} ಹೆ.ಪ್ಯಾ + + + {0} ಮರ್ಕ್ಯು. ಅಂ. + {0} ಮರ್ಕ್ಯು. ಅಂ. + + + {0} ಮಿ.ಬಾರ್ + {0} ಮಿ.ಬಾರ್ + + + {0} ಕಿ.ಮೀ./ಗಂ + {0} ಕಿ.ಮೀ./ಗಂ + + + {0} ಮೀ/ಸೆ. + {0} ಮೀ/ಸೆ. + + + {0} ಮೈ/ಗಂ + {0} ಮೈ/ಗಂ + + + {0}°ಸೆ + {0}°ಸೆ + + + {0}°ಫ್ಯಾ + {0}°ಫ್ಯಾ + + + {0} ಕಿಮೀ³ + {0} ಕಿಮೀ³ + + + {0} ಮೈ³ + {0} ಮೈ³ + + + {0} ಲೀ + {0} ಲೀ + + + + + {0}/{1} + + + {0}ಜಿ-ಫೋ. + {0}ಜಿ-ಫೋ. + + + {0}ನಿ. + {0}ನಿ. + + + {0}ಸೆಕೆಂ + {0}ಸೆಕೆಂ + + + {0}° + {0}° + + + {0} ಎಕ. + {0} ಎಕ. + + + {0} ಹೆ. + {0} ಹೆ. + + + {0}ಚ.ಅ + {0}ಚ.ಅ + + + {0} ಚ.ಕಿಮೀ. + {0} ಚ.ಕಿಮೀ. + + + {0} ಮೀ² + {0} ಮೀ² + + + {0}ಚ.ಮೀ. + {0}ಚ.ಮೀ. + + + {0} ms + {0} ms + + + {0}y + {0}y + + + {0} ಸೆಮೀ + {0} ಸೆಮೀ + + + {0} ′ + {0} ′ + + + {0} ″ + {0} ″ + + + {0} ಕಿಮೀ + {0} ಕಿಮೀ + + + {0}ಹಗು. ವ. + {0}ಹಗು. ವ. + + + {0}ಮೀ + {0}ಮೀ + + + {0}ಮೈ. + {0}ಮೈ. + + + {0}ಮಿಮೀ + {0}ಮಿಮೀ + + + {0}ಪಿಎಂ + {0}ಪಿಎಂ + + + {0}ಗ + {0} ಗ + + + {0}ಗ್ರಾ + {0}ಗ್ರಾ + + + {0}ಕೆಜಿ + {0}ಕೆಜಿ + + + {0}ಔ + {0}ಔ + + + {0}# + {0}# + + + {0}ಹೆಚ್‌ಪಿ + {0}ಹೆಚ್‌ಪಿ + + + {0}ಕಿ.ವ್ಯಾ + {0}ಕಿ.ವ್ಯಾ + + + {0}ವ್ಯಾ. + {0}ವ್ಯಾ. + + + {0}ಹೆ.ಪ್ಯಾ + {0}ಹೆ.ಪ್ಯಾ + + + {0}" Hg + {0}" Hg + + + {0}ಮಿ.ಬಾ. + {0}ಮಿ.ಬಾ. + + + {0}ಕಿ.ಮೀ./ಗಂ + {0}ಕಿ.ಮೀ./ಗಂ + + + {0}ಮೀ/ಸೆ. + {0}ಮೀ/ಸೆ. + + + {0}ಮೈ/ಗಂ + {0}ಮೈ/ಗಂ + + + {0}° + {0}° + + + {0}°ಫ್ಯಾ + {0}°ಫ್ಯಾ + + + {0}ಕಿಮೀ³ + {0}ಕಿಮೀ³ + + + {0}ಮೈ³ + {0}ಮೈ³ + + + {0}ಲೀ + {0}ಲೀ + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, ಮತ್ತು {1} + {0}, {1} + + + + + ಹೌದು:ಹೌ + ಇಲ್ಲ:ಇ + + + + diff --git a/library/Zend/Locale/Data/kn_IN.xml b/library/Zend/Locale/Data/kn_IN.xml new file mode 100755 index 000000000..1b43ce425 --- /dev/null +++ b/library/Zend/Locale/Data/kn_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ko.xml b/library/Zend/Locale/Data/ko.xml new file mode 100755 index 000000000..f9983a05b --- /dev/null +++ b/library/Zend/Locale/Data/ko.xml @@ -0,0 +1,6286 @@ + + + + + + + + + + + + {0}({1}) + {0}, {1} + {0}: {1} + + + 아파르어 + 압카즈어 + 아체어 + 아콜리어 + 아당메어 + 아닥헤어 + 아베스타어 + 남아공 공용어 + 아프리히리어 + 아그햄어 + 아이누어 + 아칸어 + 아카드어 + 알류트어 + 남부 알타이어 + 암하라어 + 아라곤어 + 고대 영어 + 앙가어 + 아랍어 + 현대 표준 아랍어 + 아람어 + 아라우칸어 + 아라파호어 + 아라와크어 + 아샘어 + 아수어 + 아스투리아어 + 아바릭어 + 아와히어 + 아이마라어 + 아제르바이잔어 + 아제리어 + 바슈키르어 + 발루치어 + 발리어 + 바사어 + 바문어 + 고말라어 + 벨라루스어 + 베자어 + 벰바어 + 베나어 + 바푸트어 + 불가리아어 + 호즈푸리어 + 비슬라마어 + 비콜어 + 비니어 + 콤어 + 식시카어 + 밤바라어 + 벵골어 + 티베트어 + 브르타뉴어 + 브라지어 + 보도어 + 보스니아어 + 아쿠즈어 + 부리아타 + 부기어 + 불루어 + 브린어 + 메둠바어 + 카탈로니아어 + 카도어 + 카리브어 + 카유가어 + 아삼어 + 체첸어 + 세부아노어 + 치가어 + 차모로어 + 치브차어 + 차가타이어 + 추크어 + 마리어 + 치누크어와 영어 프랑스어의 혼성어 + 촉토어 + 치페우얀 + 체로키어 + 샤이엔어 + 소라니 쿠르드어 + 코르시카어 + 콥트어 + 크리어 + 크리민 터키어; 크리민 타타르어 + 체코어 + 카슈비아어 + 교회 슬라브어 + 추바시어 + 웨일스어 + 덴마크어 + 다코타어 + 다르그와어 + 타이타어 + 독일어 + 고지 독일어 (스위스) + 델라웨어어 + 슬라브어 + 도그리브어 + 딩카어 + 자르마어 + 도그리어 + 저지 소르비아어 + 드와라어 + 중세 네덜란드어 + 디베히어 + 졸라 포니어 + 드율라어 + 종카어 + 다장가어 + 엠부어 + 에웨어 + 이픽어 + 이집트어 (고대) + 이카죽어 + 그리스어 + 엘람어 + 영어 + 영어(호주) + 영어 (캐나다) + 영어 (영국식) + 영어 (미국식) + 영어, 중세 + 에스페란토어 + 스페인어 + 중남미 스페인어 + 유럽식 스페인어 + 에스토니아어 + 바스크어 + 이원도어 + 페르시아어 + 팡그어 + 판티어 + 풀라어 + 핀란드어 + 필리핀어 + 피지어 + 페로어 + 폰어 + 프랑스어 + 프랑스어 (캐나다) + 프랑스어 (스위스) + 중세 프랑스어 + 고대 프랑스어 + 북부 프리슬란드어 + 동부 프리슬란드어 + 프리우리안어 + 프리지아어 + 아일랜드어 + 가어 + 가요어 + 그바야어 + 스코틀랜드 게일어 + 게이즈어 + 키리바시어 + 갈리시아어 + 중세 고지 독일어 + 과라니어 + 고대 고지 독일어 + 곤디어 + 고론탈로어 + 고트어 + 게르보어 + 그리스어, 고대 + 독일어(스위스) + 구자라트어 + 구시어 + 맹크스어 + 그위친어 + 하우사어 + 하이다어 + 하와이어 + 히브리어 + 힌디어 + 헤리가뇬어 + 하타이트어 + 히몸어 + 히리 모투어 + 크로아티아어 + 고지 소르비아어 + 아이티어 + 헝가리어 + 후파어 + 아르메니아어 + 헤레로어 + 인테르링구아 (국제보조어협회) + 이반어 + 이비비오어 + 인도네시아어 + 인테르링구에 + 이그보어 + 쓰촨 이어 + 이누피아크어 + 이로코어 + 인귀시어 + 이도어 + 아이슬란드어 + 이탈리아어 + 이눅티투트어 + 일본어 + 로반어 + 마차메어 + 유대-페르시아어 + 유대-아라비아어 + 자바어 + 조지아어 + 카라칼파크어 + 커바일어 + 카친어 + 까꼬토끄어 + 캄바어 + 카위어 + 카바르디어 + 카넴부어 + 티얍어 + 마콘데어 + 크리올어 + 코로어 + 콩고어 + 카시어 + 호탄어 + 코이라 친니어 + 키쿠유어 + 쿠안야마어 + 카자흐어 + 카코어 + 그린란드어 + 칼렌진어 + 캄보디아어 + 킴분두어 + 칸나다어 + 한국어 + 코카니어 + 코스라이엔어 + 크펠레어 + 칸누리어 + 카라챠이-발카르어 + 카렐리야어 + 쿠르크어 + 카슈미르어 + 샴발라어 + 바피아어 + 콜로그니안어 + 쿠르드어 + 쿠믹어 + 쿠테네어 + 코미어 + 콘월어 + 키르기스어 + 라틴어 + 라디노어 + 랑기어 + 라한다어 + 람바어 + 룩셈부르크어 + 레즈기안어 + 간다어 + 림버거어 + 링갈라어 + 라오어 + 몽구어 + 로지어 + 리투아니아어 + 루바-카탄가어 + 루바-룰루아어 + 루이세노어 + 룬다어 + 루오어 + 루샤이어 + 루야어 + 라트비아어 + 마두라어 + 마파어 + 마가히 + 마이틸리 + 마카사어 + 만딩고어 + 마사이어 + 마바어 + 모크샤어 + 만다르어 + 멘데어 + 메루어 + 모리스얀어 + 말라가시어 + 아일랜드어, 중세 + 마크후와-메토어 + 마셜제도어 + 마오리어 + 미크맥어 + 미낭카바우 + 마케도니아어 + 말라얄람어 + 몽고어 + 만주어 + 마니푸리어 + 모호크어 + 모시어 + 마라티어 + 말레이어 + 몰타어 + 문당어 + 다중 언어 + 크리크어 + 미란데어 + 마르와리어 + 버마어 + 미예네어 + 엘즈야어 + 나우루어 + 나폴리어 + 나마어 + 노르웨이어(보크말) + 북부 은데벨레어 + 저지 독일어 + 네팔어 + 네와르어 + 느동가어 + 니아스어 + 니웨언어 + 네덜란드어 + 플라망어 + 크와시오어 + 노르웨이어(니노르스크) + 느기엠본어 + 노르웨이어 + 노가이어 + 노르웨이, 고대 + 응코어 + 남부 은데벨레어 + 소토어 (북부) + 누에르어 + 나바호어 + 네와르어 (고전) + 니안자어; 치츄어; 츄어 + 니암웨지어 + 니안콜어 + 뉴로어 + 느지마어 + 오크어 + 오지브웨이어 + 오로모어 + 오리야어 + 오세트어 + 오세이지어 + 터키어, 오스만 + 펀잡어 + 판가시난어 + 팔레비어 + 팜팡가어 + 파피아먼토어 + 파라우안어 + 고대 페르시아어 + 페니키아어 + 팔리어 + 폴란드어 + 폼페이어 + 고대 프로방스어 + 파슈토어 + 포르투갈어 + 포르투갈어 (브라질) + 유럽식 포르투갈어 + 케추아어 + 라자스탄어 + 라파뉴이 + 라로통가어 + 레토로만어 + 룬디어 + 루마니아어 + 몰도바어 + 롬보어 + 집시어 + 어근 + 러시아어 + 아로마니아어 + 르완다어 + 르와어 + 산스크리트어 + 산다웨어 + 야큐트어 + 사마리아 아랍어 + 삼부루어 + 사사크어 + 산탈리어 + 느감바이어 + 상구어 + 사르디니아어 + 시칠리아어 + 스코틀랜드어 + 신디어 + 북부 사미어 + 세네카어 + 세나어 + 셀쿠프어 + 코이야보로 세니어 + 산고어 + 아일랜드, 고대 + 세르비아-크로아티아어 + 타셸히트어 + 샨어 + 차디언 아라비아어 + 스리랑카어 + 시다모어 + 슬로바키아어 + 슬로베니아어 + 사모아어 + 남부 사미어 + 룰레 사미어 + 이나리 사미어 + 스콜트 사미어 + 쇼나어 + 소닌케어 + 소말리아어 + 소그디엔어 + 알바니아어 + 세르비아어 + 스라난 통가어 + 세레르어 + 시스와티어 + 사호어 + 소토어 (남부) + 순다어 + 수쿠마족어 + 수수어 + 수메르어 + 스웨덴어 + 스와힐리어 + 코모로어 + 콩고 스와힐리어 + 시리아어 (고전) + 시리아어 + 타밀어 + 텔루구어 + 팀니어 + 테조어 + 테레노어 + 테툼어 + 타지키스탄어 + 태국어 + 티그리냐어 + 티그레어 + 티비어 + 투르크멘어 + 토켈라우제도어 + 타갈로그어 + 클링온어 + 틀링깃족어 + 타마섹어 + 세츠와나어 + 통가어 + 통가어 (니아살랜드) + 토크 피신어 + 터키어 + 타로코어 + 총가어 + 트심시안어 + 타타르어 + 툼부카어 + 투발루어 + 트위어 + 타사와크어 + 타히티어 + 투비니안어 + 중앙모로코 타마지트어 + 우드말트어 + 위구르어 + 유가리틱어 + 우크라이나어 + 윤번두어 + 알 수 없는 언어 + 우르두어 + 우즈베크어 + 바이어 + 벤다어 + 베트남어 + 볼라퓌크어 + 보틱어 + 분조어 + 왈론어 + 월저어 + 와라모어 + 와라이어 + 와쇼어 + 올로프어 + 칼미크어 + 코사어 + 소가어 + 야오족어 + 얍페세어 + 양본어 + 옘바어 + 이디시어 + 요루바어 + 광둥어 + 주앙어 + 사포테크어 + 블리스 심볼 + 제나가어 + 표준 모로코 타마제크어 + 중국어 + 중국어(간체) + 중국어(번체) + 줄루어 + 주니어 + 언어 관련 내용 없음 + 자자어 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 세계 + 아프리카 + 북아메리카 + 남아메리카(남미) + 오세아니아 + 서아프리카 + 중앙 아메리카 + 동부 아프리카 + 북부 아프리카 + 중부 아프리카 + 남부 아프리카 + 아메리카 대륙 + 북부 아메리카 + 카리브 해 제도 + 동아시아 + 남아시아 + 동남 아시아 + 남유럽 + 오스트랄라시아 + 멜라네시아 + 미크로네시아 지역 + 폴리네시아 + 아시아 + 중앙 아시아 + 서아시아 + 유럽 + 동유럽 + 북유럽 + 서유럽 + 라틴 아메리카 + 어센션 섬 + 안도라 + 아랍에미리트 연합 + 아프가니스탄 + 앤티가 바부다 + 안길라 + 알바니아 + 아르메니아 + 네덜란드령 안틸레스 + 앙골라 + 남극 대륙 + 아르헨티나 + 아메리칸 사모아 + 오스트리아 + 오스트레일리아 + 아루바 + 올란드 제도 + 아제르바이잔 + 보스니아 헤르체고비나 + 바베이도스 + 방글라데시 + 벨기에 + 부르키나파소 + 불가리아 + 바레인 + 부룬디 + 베냉 + 생 바르텔르미 + 버뮤다 + 브루나이 + 볼리비아 + 네덜란드령 카리브 + 브라질 + 바하마 + 부탄 + 부베 + 보츠와나 + 벨라루스 + 벨리즈 + 캐나다 + 코코스제도 + 콩고-킨샤사 + 콩고민주공화국 + 중앙 아프리카 공화국 + 콩고 + 콩고 공화국 + 스위스 + 코트디부아르 + 쿡제도 + 칠레 + 카메룬 + 중국 + 콜롬비아 + 클립퍼튼 섬 + 코스타리카 + 쿠바 + 까뽀베르데 + 퀴라소 + 크리스마스섬 + 사이프러스 + 체코 + 독일 + 디에고 가르시아 + 지부티 + 덴마크 + 도미니카 + 도미니카 공화국 + 알제리 + 세우타 및 멜리야 + 에콰도르 + 에스토니아 + 이집트 + 서사하라 + 에리트리아 + 스페인 + 이디오피아 + 유럽 연합 + 핀란드 + 피지 + 포클랜드 제도 + 포클랜드 제도(말비나스 군도) + 미크로네시아 + 페로제도 + 프랑스 + 가봉 + 영국 + 영국 + 그레나다 + 조지아 + 프랑스령 기아나 + 건지 + 가나 + 지브롤터 + 그린란드 + 감비아 + 기니 + 과들루프 + 적도 기니 + 그리스 + 사우스조지아 사우스샌드위치 제도 + 과테말라 + + 기네비쏘 + 가이아나 + 홍콩, 중국 특별행정구 + 홍콩 + 허드섬-맥도널드제도 + 온두라스 + 크로아티아 + 아이티 + 헝가리 + 카나리아 제도 + 인도네시아 + 아일랜드 + 이스라엘 + 맨 섬 + 인도 + 영국령인도양식민지 + 이라크 + 이란 + 아이슬란드 + 이탈리아 + 저지 + 자메이카 + 요르단 + 일본 + 케냐 + 키르기스스탄 + 캄보디아 + 키리바시 + 코모로스 + 세인트크리스토퍼 네비스 + 조선 민주주의 인민 공화국 + 대한민국 + 쿠웨이트 + 케이맨제도 + 카자흐스탄 + 라오스 + 레바논 + 세인트루시아 + 리히텐슈타인 + 스리랑카 + 라이베리아 + 레소토 + 리투아니아 + 룩셈부르크 + 라트비아 + 리비아 + 모로코 + 모나코 + 몰도바 + 몬테네그로 + 생 마르탱 + 마다가스카르 + 마샬 군도 + 마케도니아 + 마케도니아(FYROM) + 말리 + 미얀마 + 몽골 + 마카오, 중국 특별행정구 + 마카오 + 북마리아나제도 + 말티니크 + 모리타니 + 몬트세라트 + 몰타 + 모리셔스 + 몰디브 + 말라위 + 멕시코 + 말레이시아 + 모잠비크 + 나미비아 + 뉴 칼레도니아 + 니제르 + 노퍽섬 + 나이지리아 + 니카라과 + 네덜란드 + 노르웨이 + 네팔 + 나우루 + 니우에 + 뉴질랜드 + 오만 + 파나마 + 페루 + 프랑스령 폴리네시아 + 파푸아뉴기니 + 필리핀 + 파키스탄 + 폴란드 + 세인트피에르-미케롱 + 핏케언섬 + 푸에르토리코 + 팔레스타인 지구 + 팔레스타인 + 포르투갈 + 팔라우 + 파라과이 + 카타르 + 오세아니아 외곽 + 리유니온 + 루마니아 + 세르비아 + 러시아 + 르완다 + 사우디아라비아 + 솔로몬 제도 + 쉐이쉘 + 수단 + 스웨덴 + 싱가포르 + 세인트헬레나 + 슬로베니아 + 스발바르제도-얀마웬섬 + 슬로바키아 + 시에라리온 + 산마리노 + 세네갈 + 소말리아 + 수리남 + 남수단 + 상투메 프린시페 + 엘살바도르 + 신트마르턴 + 시리아 + 스와질랜드 + 트리스탄다쿠나 + 터크스케이커스제도 + 차드 + 프랑스 남부 지방 + 토고 + 태국 + 타지키스탄 + 토켈라우 + 동티모르 + 투르크메니스탄 + 튀니지 + 통가 + 터키 + 트리니다드 토바고 + 투발루 + 대만 + 탄자니아 + 우크라이나 + 우간다 + 미국령 해외 제도 + 미국 + 미국 + 우루과이 + 우즈베키스탄 + 바티칸 + 세인트빈센트그레나딘 + 베네수엘라 + 영국령 버진 아일랜드 + 미국령 버진 아일랜드 + 베트남 + 바누아투 + 왈리스-푸투나 제도 + 사모아 + 코소보 + 예멘 + 마요티 + 남아프리카 + 잠비아 + 짐바브웨 + 알수없거나 유효하지 않은 지역 + + + 전통 독일어 표기법 + 표준 레지아어 표기법 + 독일어 표기법(1996년) + 중세 후기 프랑스어(1606년까지) + 근대 초기 프랑스어 + 관학식 + ALA-LC 로마자 표기법(1997년 개정) + 알루꾸 방언 + 동아르메니아어 + 서아르메니아어 + 통합 투르크어 라틴 알파벳 + 바우다 + 비스카얀 + 산조르지오/빌라 방언 + 분틀링어 + IPA 음성학 + UPA 음성학 + 헵번식 로마자 표기법 + 호그노르스크 + 이띠아사 + 야우어 + 공통 표기법 + 라우키카 + 레지아어 리포바치 방언 + 루나1918 + 단음 + 느듀카 방언 + 나티소네 방언 + 니바 방언 + 오세아코/오소가네 방언 + 파마카 방언 + 병음 로마자 표기법 + 복음 + Computer + 퓨터 + 개정 + 레지아어 + 사호어 + 스코틀랜드 표준 영어 + 리버풀 방언 + 스톨비자/솔비카 방언 + 서미안 + 타라쉬키에비샤 표기법 + 통합 표기법 + 통합 개정 표기법 + 얼스터 + 바이디카 + 발렌시아어 + 발라더 + 웨이드-자일스식 로마자 표기법 + + + 달력 + 기호 정렬 무시 + 악센트 역순 정렬 + 대문자/소문자 순서 + 대/소문자 구분 정렬 + 가나 정렬 + 정렬 순서 + 표준 정렬 + 숫자 정렬 + 정렬 강도 + 통화 + 숫자 + 시간대 + 방언 + 기호로 정렬 + 공개 여부 + + + 아라비아-인도식 숫자 + 확장형 아라비아-인도식 숫자 + 아르메니아 숫자 + 아르메니아 소문자 숫자 + 발리 숫자 + 뱅골 숫자 + 중국어 번체 정렬 순서 (Big5) + 불교력 + 참 숫자 + 중국력 + 콥트력 + 단기력 + 데바나가리 숫자 + 사전 정렬순 + 기본 유니코드 정렬 순서 + 에티오피아 숫자 + 에티오피아력 + 에티오피아 아메테 알렘력 + 재무 숫자 + 전체 숫자 + 중국어 간체 정렬 순서 (GB2312) + 그루지아 숫자 + 태양력 + 그리스 숫자 + 그리스어 소문자 숫자 + 구자라트 숫자 + 굴묵키 숫자 + 중국어 십진 숫자 + 중국어 간체 숫자 + 중국어 간체 재무 숫자 + 중국어 번체 숫자 + 중국어 번체 재무 숫자 + 히브리 숫자 + 히브리력 + 모두 정렬 + 인도력 + 이슬람력 + 이슬람 상용력 + 일본력 + 자바 숫자 + 일본 숫자 + 일본 재무 숫자 + 카야 리식 숫자 + 크메르 숫자 + 칸나다 숫자 + 타이 탐 호라 숫자 + 타이 탐탐 숫자 + 라오 숫자 + 서양 숫자 + 렙차 숫자 + 림부 숫자 + 첫 소문자 정렬 + 말라얄람 숫자 + 몽골 숫자 + 메이테이 마옉 숫자 + 미얀마 숫자 + 미얀마 샨 숫자 + 기본 숫자 + 악센트 일반 정렬 + 일반 대/소문자 정렬 순서 + 대/소문자 무시 정렬 + 가나 별도 정렬 + 표준화 없이 정렬 + 숫자별 정렬 + 기호 정렬 + 올치키 숫자 + 오리야 숫자 + 페르시안력 + 전화번호부순 + 소리나는 대로 정렬 순서 + 병음순 + 기본 문자만 정렬 + 악센트/대소문자/전반각/가나 정렬 + 개정 정렬순 + 대만력 + 로마 숫자 + 로마 소문자 숫자 + 사우라슈트라 숫자 + 범용 검색 + 한글 자음으로 검색 + 악센트 정렬 + 기호 무시 정렬 + 표준 정렬 순서 + 자획순 + 순다 숫자 + 타밀어 숫자 + 타밀 숫자 + 텔루구 숫자 + 악센트/대소문자/전반각 정렬 + 태국 숫자 + 티벳 숫자 + 전통 역법 + 전통적인 숫자 + 부수순 + 대문자 우선 정렬 + 바이 숫자 + 악센트 역순 정렬 + 대/소문자 구분 정렬 + 가나를 다르게 정렬 + 유니코드 표준화 정렬 + 숫자 정렬 + + + 미국 지명위원회(BGN) + 숫자 + 성조 + 유엔지명전문가회의(UNGEGN) + 악센트 + 전각 + 반각 + 자모 + 병음 + 게시 + + + 미터법 + 영국 + 미국 + + + 언어: {0} + 스크립트: {0} + 지역: {0} + + + + [가-힣] + [ᄀ-ᄒ ᅡ-ᅵ ᆨ-ᇂ 丘 串 乃 久 乖 九 乞 乫 乾 亂 亘 交 京 仇 今 介 件 价 企 伋 伎 伽 佳 佶 侃 來 侊 供 係 俓 俱 個 倞 倦 倨 假 偈 健 傀 傑 傾 僅 僑 價 儆 儉 儺 光 克 兢 內 公 共 其 具 兼 冀 冠 凱 刊 刮 券 刻 剋 剛 劇 劍 劒 功 加 劤 劫 勁 勍 勘 勤 勸 勻 勾 匡 匣 區 南 卦 却 卵 卷 卿 厥 去 及 口 句 叩 叫 可 各 吉 君 告 呱 呵 咎 咬 哥 哭 啓 喀 喇 喝 喫 喬 嗜 嘉 嘔 器 囊 困 固 圈 國 圭 圻 均 坎 坑 坤 坰 坵 垢 基 埼 堀 堅 堈 堪 堺 塊 塏 境 墾 壙 壞 夔 奇 奈 奎 契 奸 妓 妗 姑 姜 姦 娘 娜 嫁 嬌 孔 季 孤 宏 官 客 宮 家 寄 寇 寡 寬 尻 局 居 屆 屈 岐 岡 岬 崎 崑 崗 嵌 嵐 嶇 嶠 工 巧 巨 己 巾 干 幹 幾 庚 庫 康 廊 廐 廓 廣 建 弓 强 彊 徑 忌 急 怪 怯 恐 恝 恪 恭 悸 愆 感 愧 愷 愾 慊 慣 慤 慨 慶 慷 憩 憬 憾 懃 懇 懦 懶 懼 戈 戒 戟 戡 扱 技 抉 拉 拏 拐 拒 拘 括 拮 拱 拳 拷 拿 捏 据 捲 捺 掘 掛 控 揀 揆 揭 擊 擎 擒 據 擧 攪 攷 改 攻 故 敎 救 敢 敬 敲 斛 斤 旗 旣 昆 昑 景 晷 暇 暖 暠 暻 曠 曲 更 曷 朗 朞 期 机 杆 杞 杰 枏 果 枯 架 枸 柑 柩 柬 柯 校 根 格 桀 桂 桔 桿 梏 梗 械 梱 棄 棋 棍 棘 棨 棺 楗 楠 極 槁 構 槐 槨 槪 槻 槿 樂 橄 橋 橘 機 檄 檎 檢 櫃 欄 權 欺 款 歌 歐 歸 殼 毆 毬 氣 求 江 汨 汲 決 汽 沂 沽 洛 洸 浪 涇 淃 淇 減 渠 渴 湳 溝 溪 滑 滾 漑 潔 潰 澗 激 濫 灌 灸 炅 炚 炬 烙 烱 煖 爛 牽 犬 狂 狗 狡 狼 獗 玖 玘 珂 珏 珖 珙 珞 珪 球 琦 琨 琪 琯 琴 瑾 璂 璟 璣 璥 瓊 瓘 瓜 甄 甘 甲 男 畇 界 畸 畺 畿 疆 疥 疳 痂 痙 痼 癎 癩 癸 皆 皎 皐 盖 監 看 眷 睾 瞰 瞼 瞿 矜 矩 矯 硅 硬 碁 碣 磎 磬 磯 磵 祁 祇 祈 祛 祺 禁 禽 科 稈 稼 稽 稿 穀 究 穹 空 窘 窟 窮 窺 竅 竟 竭 競 竿 筋 筐 筠 箇 箕 箝 管 簡 粳 糠 系 糾 紀 納 紘 級 紺 絅 結 絞 給 絳 絹 絿 經 綱 綺 緊 繫 繭 繼 缺 罐 罫 羅 羈 羌 羔 群 羹 翹 考 耆 耉 耕 耭 耿 肌 肝 股 肩 肯 肱 胛 胱 脚 脛 腔 腱 膈 膏 膠 臘 臼 舅 舊 舡 艮 艱 芎 芥 芩 芹 苛 苟 苦 苽 茄 莖 菅 菊 菌 菓 菫 菰 落 葛 葵 蓋 蕎 蕨 薑 藁 藍 藿 蘭 蘿 虔 蚣 蛟 蝎 螺 蠟 蠱 街 衢 衲 衾 衿 袈 袞 袴 裙 裸 褐 襁 襟 襤 見 規 覡 覲 覺 觀 角 計 記 訣 訶 詭 誇 誡 誥 課 諫 諾 謙 講 謳 謹 譏 警 譴 谷 谿 豈 貢 貫 貴 賈 購 赳 起 跏 距 跨 踞 蹇 蹶 躬 軀 車 軌 軍 軻 較 輕 轎 轟 辜 近 迦 迲 适 逑 逕 逵 過 遣 遽 邏 那 邯 邱 郊 郎 郡 郭 酪 醵 金 鈐 鈞 鉀 鉅 鉗 鉤 銶 鋸 鋼 錡 錤 錦 錮 鍋 鍵 鎌 鎧 鏡 鑑 鑒 鑛 開 間 閘 閣 閨 闕 關 降 階 隔 隙 雇 難 鞏 鞠 鞨 鞫 頃 頸 顆 顧 飢 餃 館 饉 饋 饑 駒 駕 駱 騎 騏 騫 驅 驕 驚 驥 骨 高 鬼 魁 鮫 鯤 鯨 鱇 鳩 鵑 鵠 鷄 鷗 鸞 麒 麴 黔 鼓 龕 龜] + [ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ] + [‾ _ _ \- - ‐ — ― 〜 ・ , , 、 ; ; \: : ! ! ¡ ? ? ¿ . . ‥ … 。 · ' ‘ ’ " " “ ” ( ( ) ) \[ [ \] ] \{ { \} } 〈 〉 《 》 「 」 『 』 【 】 〔 〕 § ¶ @ @ * * / / \\ \ \& & # # % % ‰ † ‡ ′ ″ 〃 ※] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + 불기 + + + + + + + + + 갑자 + 을축 + 병인 + 정묘 + 무진 + 기사 + 경오 + 신미 + 임신 + 계유 + 갑술 + 을해 + 병자 + 정축 + 무인 + 기묘 + 경진 + 신사 + 임오 + 계미 + 갑신 + 을유 + 병술 + 정해 + 무자 + 기축 + 경인 + 신묘 + 임진 + 계사 + 갑오 + 을미 + 병신 + 정유 + 무술 + 기해 + 경자 + 신축 + 임인 + 계묘 + 갑진 + 을사 + 병오 + 정미 + 무신 + 기유 + 경술 + 신해 + 임자 + 계축 + 갑인 + 을묘 + 병진 + 정사 + 무오 + 기미 + 경신 + 신유 + 임술 + 계해 + + + + + + + + U년 M월 d일 EEEE + + + + + U년 M월 d일 + + + + + y. M. d. + + + + + y. M. d. + + + + + + d일 + d일 (E) + d일 EEEE + U년 + U년 MMM + U년 MMM d일 + U년 MMM d일 (E) + U년 MMM d일 EEEE + a h시 + H시 + a h:mm + a h:mm:ss + H시 m분 s초 + M월 + M. d. + M. d. (E) + M. d. EEEE + LLL + MMM d일 + MMM d일 (E) + MMM d일 EEEE + U년 + U. M. d. + U년 + U. M. + U. M. d. + U. M. d. (E) + U. M. d. EEEE + U년 MMM + U년 MMM d일 + U년 MMM d일 (E) + U년 MMM d일 EEEE + U년 QQQ + U년 QQQQ + + + + + + + + 투트 + 바바흐 + 하투르 + 키야흐크 + 투바흐 + 암쉬르 + 바라마트 + 바라문다흐 + 바샨스 + 바우나흐 + 아비브 + 미스라 + 나시 + + + + + 투트 + 바바흐 + 하투르 + 키야흐크 + 투바흐 + 암쉬르 + 바라마트 + 바라문다흐 + 바샨스 + 바우나흐 + 아비브 + 미스라 + 나시 + + + 투트 + 바바흐 + 하투르 + 키야흐크 + 투바흐 + 암쉬르 + 바라마트 + 바라문다흐 + 바샨스 + 바우나흐 + 아비브 + 미스라 + 나시 + + + + + + + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + U년 M월 d일 EEEE + + + + + U년 M월 d일 + + + + + y. M. d. + + + + + y. M. d. + + + + + + + + + 매스캐램 + 테켐트 + 헤다르 + 타흐사스 + 테르 + 얘카티트 + 매가비트 + 미야지야 + 겐보트 + 새네 + 함레 + 내하세 + 파구맨 + + + + + 매스캐램 + 테켐트 + 헤다르 + 타흐사스 + 테르 + 얘카티트 + 매가비트 + 미야지야 + 겐보트 + 새네 + 함레 + 내하세 + 파구맨 + + + 매스캐램 + 테켐트 + 헤다르 + 타흐사스 + 테르 + 얘카티트 + 매가비트 + 미야지야 + 겐보트 + 새네 + 함레 + 내하세 + 파구맨 + + + + + + + + + G y년 M월 d일 EEEE + + + + + G y년 M월 d일 + + + + + G y. M. d. + + + + + G y. M. d. + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d일 + d일 (E) + d일 EEEE + G y년 + G y년 MMM + G y년 MMM d일 + G y년 MMM d일 (E) + G y년 MMM d일 EEEE + a h시 + H시 + HH:mm:ss + a h:mm + HH:mm + a h:mm:ss + H시 m분 s초 + M월 + M. d. + M. d. (E) + M. d. EEEE + LLL + MMM d일 + MMM d일 (E) + MMM d일 EEEE + mm:ss + G y년 + G y년 + G y. M. + G y. M. d. + G y. M. d. (E) + G y. M. d. EEEE + G y년 MMM + G y년 MMM d일 + G y년 MMM d일 (E) + G y년 MMM d일 EEEE + G y년 QQQ + G y년 QQQQ + + + {0} ~ {1} + + d일 ~ d일 + + + a h시 ~ a h시 + a h시 ~ h시 + + + HH ~ HH시 + + + a h:mm ~ a h:mm + a h:mm~h:mm + a h:mm~h:mm + + + HH:mm ~ HH:mm + HH:mm ~ HH:mm + + + a h:mm ~ a h:mm v + a h:mm~h:mm v + a h:mm~h:mm v + + + HH:mm ~ HH:mm v + HH:mm ~ HH:mm v + + + a h시 ~ a h시(v) + a h시 ~ h시(v) + + + HH ~ HH시 v + + + M월 ~ M월 + + + M. d ~ M. d + M. d ~ M. d + + + M. d (E) ~ M. d (E) + M. d (E) ~ M. d (E) + + + MMM ~ MMM + + + M월 d일 ~ d일 + M월 d일 ~ M월 d일 + + + M월 d일 (E) ~ d일 (E) + M월 d일 (E) ~ M월 d일 (E) + + + M월 d일 EEEE ~ d일 EEEE + M월 d일 EEEE ~ M월 d일 EEEE + + + LLLL-LLLL + + + G y년 ~ y년 + + + G y. M ~ y. M + G y. M ~ y. M + + + G y. M. d. ~ y. M. d. + G y. M. d. ~ y. M. d. + G y. M. d. ~ y. M. d. + + + G y. M. d. (E) ~ y. M. d. (E) + G y. M. d. (E) ~ y. M. d. (E) + G y. M. d. (E) ~ y. M. d. (E) + + + G y년 M월~M월 + G y년 M월 ~ y년 M월 + + + G y년 M월 d일~d일 + G y년 M월 d일 ~ M월 d일 + G y년 M월 d일 ~ y년 M월 d일 + + + G y년 M월 d일 (E) ~ d일 (E) + G y년 M월 d일 (E) ~ M월 d일 (E) + G y년 M월 d일 (E) ~ y년 M월 d일 (E) + + + G y년 M월 d일 EEEE ~ d일 EEEE + G y년 M월 d일 EEEE ~ M월 d일 EEEE + G y년 M월 d일 EEEE ~ y년 M월 d일 EEEE + + + G y년 MM월 ~ MM월 + G y년 MM월 ~ y년 MM월 + + + + + + + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + 1월 + 2월 + 3월 + 4월 + 5월 + 6월 + 7월 + 8월 + 9월 + 10월 + 11월 + 12월 + + + + + + + + + + + + + + + + + + + + + + + + + 일요일 + 월요일 + 화요일 + 수요일 + 목요일 + 금요일 + 토요일 + + + + + + + + + + + + + + + + + + + + + + + + + + + 1분기 + 2분기 + 3분기 + 4분기 + + + 1 + 2 + 3 + 4 + + + 제 1/4분기 + 제 2/4분기 + 제 3/4분기 + 제 4/4분기 + + + + + 1분기 + 2분기 + 3분기 + 4분기 + + + 1 + 2 + 3 + 4 + + + 제 1/4분기 + 제 2/4분기 + 제 3/4분기 + 제 4/4분기 + + + + + + + 오전 + 오후 + + + + + + 서력기원전 + 서력기원 + + + 기원전 + 서기 + + + + + + y년 M월 d일 EEEE + + + + + y년 M월 d일 + + + + + y. M. d. + + + + + yy. M. d. + + + + + + + a h시 m분 s초 zzzz + + + + + a h시 m분 s초 z + + + + + a h:mm:ss + + + + + a h:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d일 + d일 (E) + d일 EEEE + (E) a h:mm + (E) HH:mm + (E) a h:mm:ss + (E) HH:mm:ss + G y년 + G y년 MMM + G y년 MMM d일 + G y년 MMM d일 (E) + G y년 MMM d일 EEEE + a h시 + H시 + HH:mm:ss + a h:mm + HH:mm + a h:mm:ss + H시 m분 s초 + M월 + M. d. + M. d. (E) + M. d. EEEE + LLL + MMM d일 + MMM d일 (E) + MMM d일 EEEE + mm:ss + mm:ss + y년 + y. M. + y. M. d. + y. M. d. (E) + y. M. d. EEEE + y. M. + y년 MMM + y년 MMM d일 + y년 MMM d일 (E) + y년 MMM d일 EEEE + y년 QQQ + y년 QQQQ + + + {0} {1} + + + {0} ~ {1} + + d일 ~ d일 + + + a h시 ~ a h시 + a h시 ~ h시 + + + HH ~ HH시 + + + a h:mm ~ a h:mm + a h:mm~h:mm + a h:mm~h:mm + + + HH:mm ~ HH:mm + HH:mm ~ HH:mm + + + a h:mm ~ a h:mm v + a h:mm~h:mm v + a h:mm~h:mm v + + + HH:mm ~ HH:mm v + HH:mm ~ HH:mm v + + + a h시 ~ a h시(v) + a h시 ~ h시(v) + + + HH ~ HH시 v + + + M월 ~ M월 + + + M. d ~ M. d + M. d ~ M. d + + + M. d (E) ~ M. d (E) + M. d (E) ~ M. d (E) + + + MMM ~ MMM + + + M월 d일 ~ d일 + M월 d일 ~ M월 d일 + + + M월 d일 (E) ~ d일 (E) + M월 d일 (E) ~ M월 d일 (E) + + + LLLL-LLLL + + + y년 ~ y년 + + + y. M ~ y. M + y. M ~ y. M + + + y. M. d. ~ y. M. d. + y. M. d. ~ y. M. d. + y. M. d. ~ y. M. d. + + + y. M. d. (E) ~ y. M. d. (E) + y. M. d. (E) ~ y. M. d. (E) + y. M. d. (E) ~ y. M. d. (E) + + + y년 M월~M월 + y년 M월 ~ y년 M월 + + + y년 M월 d일~d일 + y년 M월 d일 ~ M월 d일 + y년 M월 d일 ~ y년 M월 d일 + + + y년 M월 d일 (E) ~ d일 (E) + y년 M월 d일 (E) ~ M월 d일 (E) + y년 M월 d일 (E) ~ y년 M월 d일 (E) + + + y년 M월 d일 EEEE ~ d일 EEEE + y년 M월 d일 EEEE ~ M월 d일 EEEE + y년 M월 d일 EEEE ~ y년 M월 d일 EEEE + + + y년 MM월 ~ MM월 + y년 MM월 ~ y년 MM월 + + + + + + + + + 디스리월 + 말케스월 + 기슬르월 + 데벳월 + 스밧월 + 아달월 1 + 아달월 + 아달월 2 + 닛산월 + 이야르월 + 시완월 + 담무르월 + 압월 + 엘룰월 + + + + + 디스리월 + 말케스월 + 기슬르월 + 데벳월 + 스밧월 + 아달월 1 + 아달월 + 아달월 2 + 닛산월 + 이야르월 + 시완월 + 담무르월 + 압월 + 엘룰월 + + + 디스리월 + 말케스월 + 기슬르월 + 데벳월 + 스밧월 + 아달월 1 + 아달월 + 아달월 2 + 닛산월 + 이야르월 + 시완월 + 담무르월 + 압월 + 엘룰월 + + + + + + AM + + + + + + + AH + + + + + + + + 다이카 (645 ~ 650) + 하쿠치 (650 ~ 671) + 하쿠호 (672 ~ 686) + 슈초 (686 ~ 701) + 다이호 (701 ~ 704) + 게이운 (704 ~ 708) + 와도 (708 ~ 715) + 레이키 (715 ~ 717) + 요로 (717 ~ 724) + 진키 (724 ~ 729) + 덴표 (729 ~ 749) + 덴표칸포 (749 ~ 749) + 덴표쇼호 (749 ~ 757) + 덴표호지 (757 ~ 765) + 덴표진고 (765 ~ 767) + 진고케이운 (767 ~ 770) + 호키 (770 ~ 780) + 덴오 (781 ~ 782) + 엔랴쿠 (782 ~ 806) + 다이도 (806 ~ 810) + 고닌 (810 ~ 824) + 덴초 (824 ~ 834) + 조와 (834 ~ 848) + 가쇼 (848 ~ 851) + 닌주 (851 ~ 854) + 사이코 (854 ~ 857) + 덴난 (857 ~ 859) + 조간 (859 ~ 877) + 간교 (877 ~ 885) + 닌나 (885 ~ 889) + 간표 (889 ~ 898) + 쇼타이 (898 ~ 901) + 엔기 (901 ~ 923) + 엔초 (923 ~ 931) + 조헤이 (931 ~ 938) + 덴교 (938 ~ 947) + 덴랴쿠 (947 ~ 957) + 덴토쿠 (957 ~ 961) + 오와 (961 ~ 964) + 고호 (964 ~ 968) + 안나 (968 ~ 970) + 덴로쿠 (970 ~ 973) + 덴엔 (973 ~ 976) + 조겐 (976 ~ 978) + 덴겐 (978 ~ 983) + 에이간 (983 ~ 985) + 간나 (985 ~ 987) + 에이엔 (987 ~ 989) + 에이소 (989 ~ 990) + 쇼랴쿠 (990 ~ 995) + 조토쿠 (995 ~ 999) + 조호 (999 ~ 1004) + 간코 (1004 ~ 1012) + 조와 (1012 ~ 1017) + 간닌 (1017 ~ 1021) + 지안 (1021 ~ 1024) + 만주 (1024 ~ 1028) + 조겐 (1028 ~ 1037) + 조랴쿠 (1037 ~ 1040) + 조큐 (1040 ~ 1044) + 간토쿠 (1044 ~ 1046) + 에이쇼 (1046 ~ 1053) + 덴기 (1053 ~ 1058) + 고헤이 (1058 ~ 1065) + 지랴쿠 (1065 ~ 1069) + 엔큐 (1069 ~ 1074) + 조호 (1074 ~ 1077) + 쇼랴쿠 (1077 ~ 1081) + 에이호 (1081 ~ 1084) + 오토쿠 (1084 ~ 1087) + 간지 (1087 ~ 1094) + 가호 (1094 ~ 1096) + 에이초 (1096 ~ 1097) + 조토쿠 (1097 ~ 1099) + 고와 (1099 ~ 1104) + 조지 (1104 ~ 1106) + 가쇼 (1106 ~ 1108) + 덴닌 (1108 ~ 1110) + 덴에이 (1110 ~ 1113) + 에이큐 (1113 ~ 1118) + 겐에이 (1118 ~ 1120) + 호안 (1120 ~ 1124) + 덴지 (1124 ~ 1126) + 다이지 (1126 ~ 1131) + 덴쇼 (1131 ~ 1132) + 조쇼 (1132 ~ 1135) + 호엔 (1135 ~ 1141) + 에이지 (1141 ~ 1142) + 고지 (1142 ~ 1144) + 덴요 (1144 ~ 1145) + 규안 (1145 ~ 1151) + 닌페이 (1151 ~ 1154) + 규주 (1154 ~ 1156) + 호겐 (1156 ~ 1159) + 헤이지 (1159 ~ 1160) + 에이랴쿠 (1160 ~ 1161) + 오호 (1161 ~ 1163) + 조칸 (1163 ~ 1165) + 에이만 (1165 ~ 1166) + 닌난 (1166 ~ 1169) + 가오 (1169 ~ 1171) + 조안 (1171 ~ 1175) + 안겐 (1175 ~ 1177) + 지쇼 (1177 ~ 1181) + 요와 (1181 ~ 1182) + 주에이 (1182 ~ 1184) + 겐랴쿠 (1184 ~ 1185) + 분지 (1185 ~ 1190) + 겐큐 (1190 ~ 1199) + 쇼지 (1199 ~ 1201) + 겐닌 (1201 ~ 1204) + 겐큐 (1204 ~ 1206) + 겐에이 (1206 ~ 1207) + 조겐 (1207 ~ 1211) + 겐랴쿠 (1211 ~ 1213) + 겐포 (1213 ~ 1219) + 조큐 (1219 ~ 1222) + 조오 (1222 ~ 1224) + 겐닌 (1224 ~ 1225) + 가로쿠 (1225 ~ 1227) + 안테이 (1227 ~ 1229) + 간키 (1229 ~ 1232) + 조에이 (1232 ~ 1233) + 덴푸쿠 (1233 ~ 1234) + 분랴쿠 (1234 ~ 1235) + 가테이 (1235 ~ 1238) + 랴쿠닌 (1238 ~ 1239) + 엔오 (1239 ~ 1240) + 닌지 (1240 ~ 1243) + 간겐 (1243 ~ 1247) + 호지 (1247 ~ 1249) + 겐초 (1249 ~ 1256) + 고겐 (1256 ~ 1257) + 쇼카 (1257 ~ 1259) + 쇼겐 (1259 ~ 1260) + 분오 (1260 ~ 1261) + 고초 (1261 ~ 1264) + 분에이 (1264 ~ 1275) + 겐지 (1275 ~ 1278) + 고안 (1278 ~ 1288) + 쇼오 (1288 ~ 1293) + 에이닌 (1293 ~ 1299) + 쇼안 (1299 ~ 1302) + 겐겐 (1302 ~ 1303) + 가겐 (1303 ~ 1306) + 도쿠지 (1306 ~ 1308) + 엔쿄 (1308 ~ 1311) + 오초 (1311 ~ 1312) + 쇼와 (1312 ~ 1317) + 분포 (1317 ~ 1319) + 겐오 (1319 ~ 1321) + 겐코 (1321 ~ 1324) + 쇼추 (1324 ~ 1326) + 가랴쿠 (1326 ~ 1329) + 겐토쿠 (1329 ~ 1331) + 겐코 (1331 ~ 1334) + 겐무 (1334 ~ 1336) + 엔겐 (1336 ~ 1340) + 고코쿠 (1340 ~ 1346) + 쇼헤이 (1346 ~ 1370) + 겐토쿠 (1370 ~ 1372) + 분추 (1372 ~ 1375) + 덴주 (1375 ~ 1379) + 고랴쿠 (1379 ~ 1381) + 고와 (1381 ~ 1384) + 겐추 (1384 ~ 1392) + 메이토쿠 (1384 ~ 1387) + 가쿄 (1387 ~ 1389) + 고오 (1389 ~ 1390) + 메이토쿠 (1390 ~ 1394) + 오에이 (1394 ~ 1428) + 쇼초 (1428 ~ 1429) + 에이쿄 (1429 ~ 1441) + 가키쓰 (1441 ~ 1444) + 분안 (1444 ~ 1449) + 호토쿠 (1449 ~ 1452) + 교토쿠 (1452 ~ 1455) + 고쇼 (1455 ~ 1457) + 조로쿠 (1457 ~ 1460) + 간쇼 (1460 ~ 1466) + 분쇼 (1466 ~ 1467) + 오닌 (1467 ~ 1469) + 분메이 (1469 ~ 1487) + 조쿄 (1487 ~ 1489)< + 엔토쿠 (1489 ~ 1492) + 메이오 (1492 ~ 1501) + 분키 (1501 ~ 1504) + 에이쇼 (1504 ~ 1521) + 다이에이 (1521 ~ 1528) + 교로쿠 (1528 ~ 1532) + 덴분 (1532 ~ 1555) + 고지 (1555 ~ 1558) + 에이로쿠 (1558 ~ 1570) + 겐키 (1570 ~ 1573) + 덴쇼 (1573 ~ 1592) + 분로쿠 (1592 ~ 1596) + 게이초 (1596 ~ 1615) + 겐나 (1615 ~ 1624) + 간에이 (1624 ~ 1644) + 쇼호 (1644 ~ 1648) + 게이안 (1648 ~ 1652) + 조오 (1652 ~ 1655) + 메이레키 (1655 ~ 1658) + 만지 (1658 ~ 1661) + 간분 (1661 ~ 1673) + 엔포 (1673 ~ 1681) + 덴나 (1681 ~ 1684) + 조쿄 (1684 ~ 1688) + 겐로쿠 (1688 ~ 1704) + 호에이 (1704 ~ 1711) + 쇼토쿠 (1711 ~ 1716) + 교호 (1716 ~ 1736) + 겐분 (1736 ~ 1741) + 간포 (1741 ~ 1744) + 엔쿄 (1744 ~ 1748) + 간엔 (1748 ~ 1751) + 호레키 (1751 ~ 1764) + 메이와 (1764 ~ 1772) + 안에이 (1772 ~ 1781) + 덴메이 (1781 ~ 1789) + 간세이 (1789 ~ 1801) + 교와 (1801 ~ 1804) + 분카 (1804 ~ 1818) + 분세이 (1818 ~ 1830) + 덴포 (1830 ~ 1844) + 고카 (1844 ~ 1848) + 가에이 (1848 ~ 1854) + 안세이 (1854 ~ 1860) + 만엔 (1860 ~ 1861) + 분큐 (1861 ~ 1864) + 겐지 (1864 ~ 1865) + 게이오 (1865 ~ 1868) + 메이지 + 다이쇼 + 쇼와 + 헤이세이 + + + + + + + 중화민국전 + 중화민국 + + + + + + + 연호 + + + + 지난해 + 올해 + 내년 + + {0}년 후 + + + {0}년 전 + + + + + 지난달 + 이번 달 + 다음 달 + + {0}개월 후 + + + {0}개월 전 + + + + + 지난주 + 이번 주 + 다음 주 + + {0}주 후 + + + {0}주 전 + + + + + 그저께 + 어제 + 오늘 + 내일 + 모레 + + {0}일 후 + + + {0}일 전 + + + + 요일 + + + 지난 일요일 + 이번 일요일 + 다음 일요일 + + + 지난 월요일 + 이번 월요일 + 다음 월요일 + + + 지난 화요일 + 이번 화요일 + 다음 화요일 + + + 지난 수요일 + 이번 수요일 + 다음 수요일 + + + 지난 목요일 + 이번 목요일 + 다음 목요일 + + + 지난 금요일 + 이번 금요일 + 다음 금요일 + + + 지난 토요일 + 이번 토요일 + 다음 토요일 + + + 오전/오후 + + + + + {0}시간 후 + + + {0}시간 전 + + + + + + {0}분 후 + + + {0}분 전 + + + + + 지금 + + {0}초 후 + + + {0}초 전 + + + + 시간대 + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} 시간 + {0} 일광 절약 시간 + {0} 표준시 + {1} ({0}) + + 알 수 없는 장소 + + + 안도라 + + + 두바이 + + + 카불 + + + 안티과 + + + 앙귈라 + + + 티라나 + + + 예레반 + + + 루안다 + + + 로데라 + + + 파머 + + + 쇼와 + + + 모슨 + + + 데이비스 + + + 보스토크 + + + 케이시 + + + 뒤몽 뒤르빌 + + + 맥머도 + + + 리오 가예고스 + + + 멘도사 + + + 산후안 + + + 우수아이아 + + + 라 리오하 + + + 산루이스 + + + 카타마르카 + + + 살타 + + + 후후이 + + + 뚜꾸만 + + + 코르도바 + + + 부에노스 아이레스 + + + 파고파고 + + + 비엔나 + + + 퍼스 + + + 유클라 + + + 다윈 + + + 애들레이드 + + + 브로컨힐 + + + 퀴리 + + + 멜버른 + + + 호바트 + + + 린데만 + + + 시드니 + + + 브리스베인 + + + 맥쿼리 + + + 로드 하우 + + + 아루바 + + + 마리에하먼 + + + 바쿠 + + + 사라예보 + + + 바베이도스 + + + 다카 + + + 브뤼셀 + + + 와가두구 + + + 소피아 + + + 바레인 + + + 부줌부라 + + + 포르토노보 + + + 생바르텔레미 + + + 버뮤다 + + + 브루나이 + + + 라파스 + + + 크라렌디즈크 + + + 아이루네페 + + + 리오 브랑코 + + + 포르토 벨로 + + + 보아 비스타 + + + 마나우스 + + + 쿠이아바 + + + 산타렘 + + + 캄포 그란데 + + + 벨렘 + + + 아라과이나 + + + 상파울로 + + + 바히아 + + + 포르탈레자 + + + 마세이오 + + + 레시페 + + + 노롱야 + + + 나소 + + + 팀부 + + + 가보로네 + + + 민스크 + + + 벨리즈 + + + 도슨 + + + 화이트호스 + + + 이누빅 + + + 벤쿠버 + + + 도슨크릭 + + + 크레스톤 + + + 옐로나이프 + + + 에드먼턴 + + + 스위프트커런트 + + + 케임브리지 베이 + + + 리자이나 + + + 위니펙 + + + 리졸루트 + + + 레이니강 + + + 랭킹 인렛 + + + 코랄하버 + + + 선더베이 + + + 니피곤 + + + 토론토 + + + 이칼루이트 + + + 팡니르퉁 + + + 몽턴 + + + 핼리팩스 + + + 구즈베이 + + + 글라스베이 + + + 블랑 사블롱 + + + 세인트존스 + + + 코코스 + + + 킨샤사 + + + 루붐바시 + + + 방기 + + + 브라자빌 + + + 취리히 + + + 아비장 + + + 라로통가 + + + 이스터 섬 + + + 산티아고 + + + 두알라 + + + 카슈가르 + + + 우루무치 + + + 충칭 + + + 상하이 + + + 하얼빈 + + + 보고타 + + + 코스타리카 + + + 하바나 + + + 카보 베르데 + + + 퀴라소 + + + 크리스마스 + + + 니코시아 + + + 프라하 + + + 뷔지겐 + + + 베를린 + + + 지부티 + + + 코펜하겐 + + + 도미니카 + + + 산토도밍고 + + + 알제 + + + 갈라파고스 + + + 과야킬 + + + 탈린 + + + 카이로 + + + 엘아이운 + + + 아스메라 + + + 카나리아 제도 + + + 세우타 + + + 마드리드 + + + 아디스아바바 + + + 헬싱키 + + + 피지 + + + 스탠리 + + + 트루크 + + + 포나페 + + + 코스레 + + + 페로 제도 + + + 파리 + + + 리브르빌 + + + + 영국 일광 절약 시간 + + 런던 + + + 그레나다 + + + 트빌리시 + + + 카옌 + + + 건지 + + + 아크라 + + + 지브롤터 + + + 툴레 + + + 고드호프 + + + 스코레스바이선드 + + + 덴마크샤븐 + + + 반줄 + + + 코나크리 + + + 과들루프 + + + 말라보 + + + 아테네 + + + 사우스조지아 + + + 과테말라 + + + + + + 비사우 + + + 가이아나 + + + 홍콩 + + + 테구시갈파 + + + 자그레브 + + + 포르토프랭스 + + + 부다페스트 + + + 자카르타 + + + 폰티아나크 + + + 마카사르 + + + 자야푸라 + + + + 아일랜드 시간 + + 더블린 + + + 예루살렘 + + + 맨섬 + + + 콜카타 + + + 차고스 + + + 바그다드 + + + 테헤란 + + + 레이캬비크 + + + 로마 + + + 저지 + + + 자메이카 + + + 암만 + + + 도쿄 + + + 나이로비 + + + 비슈케크 + + + 프놈펜 + + + 엔더베리 + + + 키리티마티 + + + 타라와 + + + 코모로 + + + 세인트 키츠 + + + 평양 + + + 서울 + + + 쿠웨이트 + + + 케이맨 + + + 아크타우 + + + 오랄 + + + 악토브 + + + 키질로르다 + + + 알마티 + + + 비엔티안 + + + 베이루트 + + + 세인트 루시아 + + + 파두츠 + + + 콜롬보 + + + 몬로비아 + + + 마세루 + + + 빌니우스 + + + 룩셈부르크 + + + 리가 + + + 트리폴리 + + + 카사블랑카 + + + 모나코 + + + 키시나우 + + + 포드고리차 + + + 마리곳 + + + 안타나나리보 + + + 콰잘렌 + + + 마주로 + + + 스코페 + + + 바마코 + + + 랑군 + + + 호브드 + + + 울란바토르 + + + 초이발산 + + + 마카오 + + + 사이판 + + + 마티니크 + + + 누악쇼트 + + + 몬세라트 + + + 몰타 + + + 모리셔스 + + + 몰디브 + + + 블랜타이어 + + + 티후아나 + + + 산타 이사벨 + + + 에르모시요 + + + 마사틀란 + + + 치와와 + + + 바이아 반데라스 + + + 오히나가 + + + 몬테레이 + + + 멕시코 시티 + + + 마타모로스 + + + 메리다 + + + 칸쿤 + + + 쿠알라룸푸르 + + + 쿠칭 + + + 마푸토 + + + 빈트후크 + + + 누메아 + + + 니아메 + + + 노퍽 + + + 라고스 + + + 마나과 + + + 암스텔담 + + + 오슬로 + + + 카트만두 + + + 나우루 + + + 니우에 + + + 채텀 + + + 오클랜드 + + + 무스카트 + + + 파나마 + + + 리마 + + + 타히티 + + + 마퀘사스 + + + 감비어 + + + 포트모르즈비 + + + 마닐라 + + + 카라치 + + + 바르샤바 + + + 미클롱 + + + 핏케언 + + + 푸에르토리코 + + + 가자 + + + 헤브론 + + + 아조레스 + + + 마데이라 + + + 리스본 + + + 팔라우 + + + 아순시온 + + + 카타르 + + + 레위니옹 + + + 부쿠레슈티 + + + 베오그라드 + + + 칼리닌그라드 + + + 모스크바 + + + 볼고그라트 + + + 사마라 + + + 예카테린부르크 + + + 옴스크 + + + 노보시비르스크 + + + 노보쿠즈네츠크 + + + 크라스노야르스크 + + + 이르쿠츠크 + + + 야쿠츠크 + + + 블라디보스토크 + + + 한디가 + + + 사할린 + + + 우스티네라 + + + 마가단 + + + 캄차카 + + + 아나디리 + + + 키갈리 + + + 리야드 + + + 과달카날 + + + 마헤 + + + 카르툼 + + + 스톡홀름 + + + 싱가포르 + + + 세인트 헬레나 + + + 류블랴나 + + + 롱이어비엔 + + + 브라티슬라바 + + + 프리타운 + + + 산마리노 + + + 다카르 + + + 모가디슈 + + + 파라마리보 + + + 주바 + + + 상투메 + + + 엘살바도르 + + + 로워 프린스 쿼터 + + + 다마스쿠스 + + + 음바바네 + + + 그랜드 터크 + + + 엔자메나 + + + 케르켈렌 + + + 로메 + + + 방콕 + + + 두샨베 + + + 파카오푸 + + + 딜리 + + + 아슈하바트 + + + 튀니스 + + + 통가타푸 + + + 이스탄불 + + + 포트오브스페인 + + + 푸나푸티 + + + 타이베이 + + + 다르에스살람 + + + 우주고로트 + + + 키예프 + + + 심페로폴 + + + 자포로지예 + + + 캄팔라 + + + 미드웨이 + + + 존스톤 + + + 웨이크 + + + 에이닥 + + + + + + 호놀룰루 + + + 앵커리지 + + + 야쿠타트 + + + 싯카 + + + 주노 + + + 메틀라카틀라 + + + 로스앤젤레스 + + + 보이시 + + + 피닉스 + + + 덴버 + + + 노스다코타주, 베라 + + + 노스 다코타주, 뉴살렘 + + + 중부, 노스다코타 + + + 시카고 + + + 메노미니 + + + 인디아나주, 뱅센 + + + 인디애나주, 피츠버그 + + + 인디아나주, 텔시티 + + + 인디애나주 녹스 + + + 인디아나주, 워너맥 + + + 인디애나주, 마렝고 + + + 인디애나폴리스 + + + 루이빌 + + + 비비 + + + 켄터키주, 몬티첼로 + + + 디트로이트 + + + 뉴욕 + + + 몬테비데오 + + + 사마르칸트 + + + 타슈켄트 + + + 바티칸 + + + 세인트 빈센트 + + + 카라카스 + + + 토르톨라 + + + 세인트 토마스 + + + 사이공 + + + 에파테 + + + 월리스 + + + 아피아 + + + 아덴 + + + 메요트 + + + 요하네스버그 + + + 루사카 + + + 하라레 + + + + 아크레 시간 + 아크레 표준시 + 아크레 하계 표준시 + + + + + 아프가니스탄 시간 + + + + + 중앙아프리카 시간 + + + + + 동아프리카 시간 + + + + + 남아프리카 시간 + + + + + 서아프리카 시간 + 서아프리카 표준시 + 서아프리카 하계 표준시 + + + + + 알래스카 시간 + 알래스카 표준시 + 알래스카 하계 표준시 + + + + + 알마티 표준 시간 + 알마티 표준 표준시 + 알마티 서머 타임 + + + + + 아마존 시간 + 아마존 표준시 + 아마존 하계 표준시 + + + + + 미 중부 시간 + 미 중부 표준시 + 미 중부 하계 표준시 + + + + + 미 동부 시간 + 미 동부 표준시 + 미 동부 하계 표준시 + + + + + 미 산지 시간 + 미 산악 표준시 + 미 산지 하계 표준시 + + + + + 미 태평양 시간 + 미 태평양 표준시 + 미 태평양 하계 표준시 + + + + + 아나디리 시간 + 아나디리 표준시 + 아나디리 서머 타임 + + + + + 악타우 표준 시간 + 악타우 표준 표준시 + 악타우 서머 타임 + + + + + 악퇴베 표준 시간 + 악퇴베 표준 표준시 + 악퇴베 서머 타임 + + + + + 아라비아 시간 + 아라비아 표준시 + 아라비아 하계 표준시 + + + + + 아르헨티나 시간 + 아르헨티나 표준시 + 아르헨티나 하계 표준시 + + + + + 아르헨티나 서부 시간 + 아르헨티나 서부 표준시 + 아르헨티나 서부 하계 표준시 + + + + + 아르메니아 시간 + 아르메니아 표준시 + 아르메니아 하계 표준시 + + + + + 대서양 시간 + 대서양 표준시 + 미 대서양 하계 표준시 + + + + + 중앙 오스트레일리아 시간 + 오스트레일리아 중부 표준시 + 오스트레일리아 중부 하계 표준시 + + + + + 오스트레일리아 중서부 시간 + 오스트레일리아 중서부 표준시 + 오스트레일리아 중서부 하계 표준시 + + + + + 동부 오스트레일리아 시간 + 오스트레일리아 동부 표준시 + 오스트레일리아 동부 하계 표준시 + + + + + 서부 오스트레일리아 시간 + 오스트레일리아 서부 표준시 + 오스트레일리아 서부 하계 표준시 + + + + + 아제르바이잔 시간 + 아제르바이잔 표준시 + 아제르바이잔 하계 표준시 + + + + + 아조레스 시간 + 아조레스 표준시 + 아조레스 하계 표준시 + + + + + 방글라데시 시간 + 방글라데시 표준시 + 방글라데시 하계 표준시 + + + + + 부탄 시간 + + + + + 볼리비아 시간 + + + + + 브라질리아 시간 + 브라질리아 표준시 + 브라질리아 하계 표준시 + + + + + 브루나이 왕국 시간 + + + + + 카보 베르데 시간 + 카보 베르데 표준시 + 카보 베르데 하계 표준시 + + + + + 케이시 시간 + + + + + 차모로 시간 + + + + + 채텀 시간 + 채텀 표준시 + 채텀 일광 절약 시간대 + + + + + 칠레 시간 + 칠레 표준시 + 칠레 하계 표준시 + + + + + 중국 시간 + 중국 표준시 + 중국 하계 표준시 + + + + + 초이발산 시간 + 초이발산 표준시 + 초이발산 하계 표준시 + + + + + 크리스마스섬 시간 + + + + + 코코스 제도 시간 + + + + + 콜롬비아 시간 + 콜롬비아 표준시 + 콜롬비아 하계 표준시 + + + + + 쿡 제도 시간 + 쿡 제도 표준시 + 쿡 제도 절반 서머 타임 + + + + + 쿠바 시간 + 쿠바 표준시 + 쿠바 하계 표준시 + + + + + 데이비스 시간 + + + + + 뒤몽뒤르빌 시간 + + + + + 동티모르 시간 + + + + + 이스터섬 시간 + 이스터섬 표준시 + 이스터섬 하계 표준시 + + + + + 에콰도르 시간 + + + + + 중부 유럽 시간 + 중부 유럽 표준시 + 중부유럽 하계 표준시 + + + + + 동부유럽 시간 + 동부유럽 표준시 + 동부유럽 하계 표준시 + + + + + 서유럽 시간 + 서유럽 표준시 + 서유럽 서머 타임 + + + + + 포클랜드 시간 + 포클랜드 제도 표준시 + 포클랜드 하계 표준시 + + + + + 피지 시간 + 피지 표준시 + 피지 서머 타임 + + + + + 프랑스령 가이아나 시간 + + + + + 프랑스령 남부 식민지 및 남극 시간 + + + + + 갈라파고스 시간 + + + + + 감비에 시간 + + + + + 그루지아 시간 + 그루지아 표준시 + 그루지아 하계 표준시 + + + + + 길버트 제도 시간 + + + + + 그리니치 표준시 + + + + + 그린란드 동부 시간 + 그린란드 동부 표준시 + 그린란드 동부 하계 표준시 + + + + + 그린란드 서부 시간 + 그린란드 서부 표준시 + 그린란드 서부 하계 표준시 + + + + + 괌 표준 시간 + + + + + 걸프만 표준시 + + + + + 가이아나 시간 + + + + + 하와이 알류샨 시간 + 하와이 알류샨 표준시 + 하와이 알류샨 하계 표준시 + + + + + 홍콩 시간 + 홍콩 표준시 + 홍콩 하계 표준시 + + + + + 호브드 시간 + 호브드 표준시 + 호브드 하계 표준시 + + + + + 인도 표준시 + + + + + 인도양 시간 + + + + + 인도차이나 시간 + + + + + 중부 인도네시아 시간 + + + + + 동부 인도네시아 시간 + + + + + 서부 인도네시아 시간 + + + + + 이란 시간 + 이란 표준시 + 이란 일광 절약 시간대 + + + + + 이르쿠츠크 시간 + 이르쿠츠크 표준시 + 이르쿠츠크 하계 표준시 + + + + + 이스라엘 시간 + 이스라엘 표준시 + 이스라엘 하계 표준시 + + + + + 일본 시간 + 일본 표준시 + 일본 하계 표준시 + + + + + 페트로파블롭스크-캄차츠키 시간 + 페트로파블롭스크-캄차츠키 표준시 + 페트로파블롭스크-캄차츠키 서머 타임 + + + + + 동부 카자흐스탄 시간 + + + + + 서부 카자흐스탄 시간 + + + + + 대한민국 시간 + 대한민국 표준시 + 대한민국 하계 표준시 + + + + + 코스라에섬 시간 + + + + + 크라스노야르스크 시간 + 크라스노야르스크 표준시 + 크라스노야르스크 하계 표준시 + + + + + 키르기스스탄 시간 + + + + + 랑카 표준 시간 + + + + + 라인 제도 시간 + + + + + 로드 하우 시간 + 로드 하우 표준시 + 로드 하우 하계 표준시 + + + + + 마카오 시간 + 마카오 표준 시간 + 마카오 서머 타임 + + + + + 매쿼리섬 시간 + + + + + 마가단 시간 + 마가단 표준시 + 마가단 하계 표준시 + + + + + 말레이시아 시간 + + + + + 몰디브 시간 + + + + + 마르키즈 제도 시간 + + + + + 마셜 제도 시간 + + + + + 모리셔스 시간 + 모리셔스 표준시 + 모리셔스 하계 표준시 + + + + + 모슨 시간 + + + + + 울란바토르 시간 + 울란바토르 표준시 + 울란바토르 하계 표준시 + + + + + 모스크바 시간 + 모스크바 표준시 + 모스크바 하계 표준시 + + + + + 미얀마 시간 + + + + + 나우루 시간 + + + + + 네팔 시간 + + + + + 뉴칼레도니아 시간 + 뉴칼레도니아 표준시 + 뉴 칼레도니아 하계 표준시 + + + + + 뉴질랜드 시간 + 뉴질랜드 표준시 + 뉴질랜드 일광 절약 시간대 + + + + + 뉴펀들랜드 시간 + 뉴펀들랜드 표준시 + 뉴펀들랜드 하계 표준시 + + + + + 니우에 시간 + + + + + 노퍽섬 시간 + + + + + 페르난도 데 노로냐 시간 + 페르난도 데 노로냐 표준시 + 페르난도 데 노로냐 하계 표준시 + + + + + 북마리아나 제도 표준 시간 + + + + + 노보시비르스크 시간 + 노보시비르스크 표준시 + 노보시비르스크 하계 표준시 + + + + + 옴스크 시간 + 옴스크 표준시 + 옴스크 하계 표준시 + + + + + 파키스탄 시간 + 파키스탄 표준시 + 파키스탄 서머 타임 + + + + + 팔라우 시간 + + + + + 파푸아뉴기니 시간 + + + + + 파라과이 시간 + 파라과이 표준시 + 파라과이 하계 표준시 + + + + + 페루 시간 + 페루 표준시 + 페루 하계 표준시 + + + + + 필리핀 시간 + 필리핀 표준시 + 필리핀 하계 표준시 + + + + + 피닉스 제도 시간 + + + + + 세인트피에르 미클롱 시간 + 세인트피에르 미클롱 표준시 + 세인트피에르 미클롱 하계 표준시 + + + + + 핏케언 시간 + + + + + 포나페 시간 + + + + + 키질로르다 시간 + 키질로르다 표준 시간 + 키질로르다 서머 타임 + + + + + 레위니옹 시간 + + + + + 로데라 시간 + + + + + 사할린 시간 + 사할린 표준시 + 사할린 하계 표준시 + + + + + 사마라 시간 + 사마라 표준시 + 사마라 서머 타임 + + + + + 사모아 시간 + 사모아 표준시 + 사모아 하계 표준시 + + + + + 세이셸 시간 + + + + + 싱가포르 표준시 + + + + + 솔로몬 제도 시간 + + + + + 사우스 조지아 시간 + + + + + 수리남 시간 + + + + + 쇼와 시간 + + + + + 타히티 시간 + + + + + 대만 시간 + 대만 표준시 + 대만 일광 절약 시간대 + + + + + 타지키스탄 시간 + + + + + 토켈라우 시간 + + + + + 통가 시간 + 통가 표준시 + 통가 서머 타임 + + + + + 추크 시간 + + + + + 투르크메니스탄 시간 + 투르크메니스탄 표준시 + 투르크메니스탄 하계 표준시 + + + + + 투발루 시간 + + + + + 우루과이 시간 + 우루과이 표준시 + 우루과이 하계 표준시 + + + + + 우즈베키스탄 시간 + 우즈베키스탄 표준시 + 우즈베키스탄 하계 표준시 + + + + + 바누아투 시간 + 바누아투 표준시 + 바누아투 서머 타임 + + + + + 베네수엘라 시간 + + + + + 블라디보스토크 시간 + 블라디보스토크 표준시 + 블라디보스토크 하계 표준시 + + + + + 볼고그라드 시간 + 볼고그라드 표준시 + 볼고그라드 하계 표준시 + + + + + 보스톡 시간 + + + + + 웨이크섬 시간 + + + + + 월리스푸투나 제도 시간 + + + + + 야쿠츠크 시간 + 야쿠츠크 표준시 + 야쿠츠크 하계 표준시 + + + + + 예카테린부르크 시간 + 예카테린부르크 표준시 + 예카테린부르크 하계 표준시 + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0000 + 0만 + 00만 + 000만 + 0000만 + 0억 + 00억 + 000억 + 0000억 + 0조 + 00조 + 000조 + + + + + 0000 + 0만 + 00만 + 000만 + 0000만 + 0억 + 00억 + 000억 + 0000억 + 0조 + 00조 + 000조 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + 안도라 페세타 + + + 아랍에미리트 디르함 + + + 아프가니 (1927–2002) + + + 아프가니스탄 아프가니 + + + 알바니아 레크 + + + 아르메니아 드람 + + + 네덜란드령 안틸레스 길더 + + + 앙골라 콴자 + + + 앙골라 콴자 (1977–1990) + + + 앙골라 신콴자 (1990–2000) + + + 앙골라 재조정 콴자 (1995–1999) + + + 아르헨티나 오스트랄 + + + 아르헨티나 페소 레이 (1970–1983) + + + 아르헨티나 페소 (18810–1970) + + + 아르헨티나 페소 (1983–1985) + + + 아르헨티나 페소 + + + 호주 실링 + + + 호주 달러 + AU$ + + + 아루바 플로린 + + + 아제르바이젠 마나트(1993–2006) + + + 아제르바이잔 마나트 + + + 보스니아-헤르체고비나 디나르 + + + 보스니아-헤르체고비나 태환 마르크 + + + 보스니아-헤르체고비나 신디나르 (1994–1997) + + + 바베이도스 달러 + + + 방글라데시 타카 + + + 벨기에 프랑 (태환) + + + 벨기에 프랑 + + + 벨기에 프랑 (금융) + + + 불가리아 동전 렛 + + + 불가리아 사회주의자 렛 + + + 불가리아 레프 + 불가리아 신권 렛 + + + 불가리아 렛 (1879–1952) + + + 바레인 디나르 + + + 부룬디 프랑 + + + 버뮤다 달러 + + + 부루나이 달러 + + + 볼리비아노 + + + 볼리비아 볼리비아노 (1863–1963) + + + 볼리비아노 페소 + + + 볼리비아노 Mvdol(기금) + + + 볼리비아노 크루제이루 노보 (1967–1986) + + + 브라질 크루자두 + + + 브라질 크루제이루 (1990–1993) + + + 브라질 레알 + R$ + + + 브라질 크루자두 노보 + + + 브라질 크루제이루 + + + 브라질 크루제이루 (1942–1967) + + + 바하마 달러 + + + 부탄 눌투눔 + 부탄 눌투눔 + + + 버마 차트 + + + 보츠와나 폴라 + + + 벨라루스 신권 루블 (1994–1999) + + + 벨라루스 루블 + + + 벨리즈 달러 + + + 캐나다 달러 + CA$ + + + 콩고 프랑 콩골라스 + + + 유로 (WIR) + + + 스위스 프랑 + + + 프랑 (WIR) + + + 칠레 에스쿠도 + + + 칠레 (UF) + + + 칠레 페소 + + + 중국 위안화 + 중국 위안 인민폐 + CN¥ + + + 콜롬비아 페소 + + + 콜롬비아 실가 단위 + + + 코스타리카 콜론 + + + 고 세르비아 디나르 + + + 체코슬로바키아 동전 코루나 + + + 쿠바 태환 페소 + + + 쿠바 페소 + + + 카보베르데 에스쿠도 + + + 싸이프러스 파운드 + + + 체코 공화국 코루나 + + + 동독 오스트마르크 + + + 독일 마르크 + + + 지부티 프랑 + + + 덴마크 크로네 + + + 도미니카 페소 + + + 알제리 디나르 + + + 에쿠아도르 수크레 + + + 에콰도르 (UVC) + + + 에스토니아 크룬 + + + 이집트 파운드 + + + 에리트리아 나크파 + + + 스페인 페세타(예금) + + + 스페인 페세타(변환 예금) + + + 스페인 페세타 + + + 이디오피아 비르 + + + 유로화 + + + + 핀란드 마르카 + + + 피지 달러 + + + 포클랜드제도 파운드 + + + 프랑스 프랑 + + + 영국령 파운드 스털링 + £ + + + 그루지야 지폐 라리트 + + + 조지아 라리 + 조지아 라리 + + + 가나 시디 (1979–2007) + + + 가나 시디 + + + 지브롤터 파운드 + + + 감비아 달라시 + + + 기니 프랑 + + + 기니 시리 + + + 적도 기니 에쿨 (Ekwele) + + + 그리스 드라크마 + + + 과테말라 케트살 + + + 포르투갈령 기니 에스쿠도 + + + 기네비쏘 페소 + + + 가이아나 달러 + + + 홍콩 달러 + HK$ + + + 온두라스 렘피라 + + + 크로아티아 디나르 + + + 크로아티아 쿠나 + + + 하이티 구르드 + + + 헝가리 포린트 + + + 인도네시아 루피아 + + + 아일랜드 파운드 + + + 이스라엘 파운드 + + + 이스라엘 신권 세켈 + + + + 인도 루피 + + + + 이라크 디나르 + + + 이란 리얄 + + + 아이슬란드 크로나 + + + 이탈리아 리라 + + + 자메이카 달러 + + + 요르단 디나르 + + + 일본 엔화 + JP¥ + + + 케냐 실링 + + + 키르기스스탄 솜 + + + 캄보디아 리얄 + + + 코모르 프랑 + + + 조선 민주주의 인민 공화국 원 + + + 대한민국 환 (1953–1962) + + + 대한민국 원 + + + + 쿠웨이트 디나르 + + + 케이맨 제도 달러 + + + 카자흐스탄 텐게 + + + 라오스 키프 + + + 레바논 파운드 + + + 스리랑카 루피 + + + 라이베리아 달러 + + + 레소토 로티 + + + 리투아니아 리타 + + + 룩셈부르크 타로나 + + + 룩셈부르크 변환 프랑 + + + 룩셈부르크 프랑 + + + 룩셈부르크 재정 프랑 + + + 라트비아 라트 + + + 라트비아 루블 + + + 리비아 디나르 + + + 모로코 디렘 + + + 모로코 프랑 + + + 모나코 프랑 + + + 몰도바 쿠폰 + + + 몰도바 레이 + + + 마다가스카르 아리아리 + + + 마다가스카르 프랑 + + + 마케도니아 디나르 + + + 말리 프랑 + + + 미얀마 키얏 + + + 몽골 투그릭 + + + 마카오 파타카 + + + 모리타니 우기야 + + + 몰타 리라 + + + 몰타 파운드 + + + 모리셔스 루피 + + + 몰디브 제도 루피아 + + + 말라위 콰쳐 + + + 멕시코 페소 + MX$ + + + 멕시코 실버 페소 (1861–1992) + + + 멕시코 (UDI) + + + 말레이시아 링깃 + + + 모잠비크 에스쿠도 + + + 고 모잠비크 메티칼 + + + 모잠비크 메티칼 + + + 나미비아 달러 + + + 니제르 나이라 + + + 니카라과 코르도바 + + + 니카라과 코르도바 오로 + + + 네델란드 길더 + + + 노르웨이 크로네 + + + 네팔 루피 + + + 뉴질랜드 달러 + NZ$ + + + 오만 리얄 + + + 파나마 발보아 + + + 페루 인티 + + + 페루 누에보 솔 + + + 페루 솔 + + + 파푸아뉴기니 키나 + + + 필리핀 페소 + + + 파키스탄 루피 + + + 폴란드 즐로티 + + + 폴란드 즐로티 (1950–1995) + + + 포르투갈 에스쿠도 + + + 파라과이 과라니 + + + 카타르 리얄 + + + 로디지아 달러 + + + 루마니아 레이 + + + 루마니아 레우 + + + 세르비아 디나르 + + + 러시아 루블 + + + 러시아 루블 (1991–1998) + + + 르완다 프랑 + + + 사우디아라비아 리얄 + + + 솔로몬 제도 달러 + + + 세이셸 루피 + 세이셸 루피 + + + 수단 디나르 + + + 수단 파운드 + + + 고 수단 파운드 + + + 스웨덴 크로나 + + + 싱가폴 달러 + + + 세인트헬레나 파운드 + + + 슬로베니아 톨라르 + + + 슬로바키아 코루나 + + + 시에라리온 리온 + + + 소말리아 실링 + + + 수리남 달러 + + + 수리남 길더 + + + 남수단 파운드 + + + 상투메 프린시페 도브라 + + + 소련 루블 + + + 엘살바도르 콜론 + + + 시리아 파운드 + + + 스와질란드 릴랑게니 + + + 태국 바트 + ฿ + + + 타지키스탄 루블 + + + 타지키스탄 소모니 + + + 투르크메니스탄 마나트 (1993–2009) + + + 투르크메니스탄 마나트 + + + 튀니지 디나르 + + + 통가 파앙가 + + + 티모르 에스쿠도 + + + 터키 리라 + + + 신 터키 리라 + 신 터키 리라 + + + 트리니다드 토바고 달러 + + + 신 타이완 달러 + 신 타이완 달러 + NT$ + + + 탄자니아 실링 + + + 우크라이나 그리브나 + + + 우크라이나 카보바네츠 + + + 우간다 실링 (1966–1987) + + + 우간다 실링 + + + 미국 달러 + US$ + + + 미국 달러(다음날) + + + 미국 달러(당일) + + + 우루과이 페소 (UI) + + + 우루과이 페소 (1975–1993) + + + 우루과이 페소 우루과요 + + + 우즈베키스탄 숨 + + + 베네주엘라 볼리바르 (1871–2008) + + + 베네주엘라 볼리바르 + + + 베트남 동 + + + + 베트남 동 (1978–1985) + + + 바누아투 바투 + + + 서 사모아 탈라 + + + CFA 프랑 BEAC + CFA 프랑 BEAC + FCFA + + + 은화 + + + + + + 유르코 (유럽 회계 단위) + + + 유럽 통화 동맹 + + + 유럽 계산 단위 (XBC) + + + 유럽 계산 단위 (XBD) + + + 동카리브 달러 + EC$ + + + 특별인출권 + + + 유럽 환율 단위 + + + 프랑스 프랑 (Gold) + + + 프랑스 프랑 (UIC) + + + CFA 프랑 BCEAO + CFA 프랑 BCEAO + CFA + + + 팔라듐 + + + CFP 프랑 + CFP 프랑 + CFPF + + + 백금 + + + RINET 기금 + + + 테스트 통화 코드 + + + 알 수 없는 통화단위 + + + 예멘 디나르 + + + 예멘 리알 + + + 유고슬라비아 동전 디나르 + + + 유고슬라비아 노비 디나르 + + + 유고슬라비아 전환 디나르 + + + 남아프리카 랜드 (금융) + + + 남아프리카 랜드 + + + 쟘비아 콰쳐 (1968–2012) + + + 잠비아 콰쳐 + + + 자이르 신권 자이르 + + + 자이르 자이르 + + + 짐바브웨 달러 + + + 짐바브웨 달러 (2009) + + + 짐바브웨 달러 (2008) + + + + {0}+ + {0}-{1} + + + + + + {1}당 {0} + + + {0}중력가속도 + + + {0}분 + + + {0}초 + + + {0}도 + + + {0}에이커 + + + {0}헥타르 + + + {0}제곱피트 + + + {0}제곱킬로미터 + + + {0}제곱미터 + + + {0}제곱마일 + + + {0}일 + + + {0}시간 + + + {0}밀리초 + + + {0}분 + + + {0}개월 + + + {0}초 + + + {0}주 + + + {0}년 + + + {0}센티미터 + + + {0}피트 + + + {0}인치 + + + {0}킬로미터 + + + {0}광년 + + + {0}미터 + + + {0}마일 + + + {0}밀리미터 + + + {0}피코미터 + + + {0}야드 + + + {0}그램 + + + {0}킬로그램 + + + {0}온스 + + + {0}파운드 + + + {0}마력 + + + {0}킬로와트 + + + {0}와트 + + + {0}헥토파스칼 + + + {0}수은주인치 + + + {0}밀리바 + + + 시속 {0}킬로미터 + + + 초속 {0}미터 + + + 시속 {0}마일 + + + 섭씨 {0}도 + + + 화씨 {0}도 + + + {0}세제곱킬로미터 + + + {0}세제곱마일 + + + {0}리터 + + + + + {0}/{1} + + + {0} G + + + {0}분 + + + {0}초 + + + {0}도 + + + {0}ac + + + {0}ha + + + {0}ft² + + + {0}km² + + + {0}m² + + + {0}mi² + + + {0}일 + + + {0}시간 + + + {0}ms + + + {0}분 + + + {0}개월 + + + {0}초 + + + {0}주 + + + {0}년 + + + {0}cm + + + {0}ft + + + {0}in + + + {0}km + + + {0}ly + + + {0}m + + + {0}mil + + + {0}mm + + + {0}pm + + + {0}yd + + + {0}g + + + {0}kg + + + {0}oz + + + {0}lb + + + {0}HP + + + {0}kW + + + {0}W + + + {0}hPa + + + {0}inHg + + + {0}mb + + + 시속 {0}km + + + 초속 {0}m + + + 시속 {0}mi + + + {0}°C + + + {0}°F + + + {0}km³ + + + {0}mi³ + + + {0}L + + + + + {0}/{1} + + + {0}G + + + {0}′ + + + {0}″ + + + {0}° + + + {0}ac + + + {0}ha + + + {0}ft² + + + {0}km² + + + {0}m² + + + {0}mi² + + + {0}일 + + + {0}시간 + + + {0}ms + + + {0}분 + + + {0}개월 + + + {0}초 + + + {0}주 + + + {0}년 + + + {0}cm + + + {0}′ + + + {0}″ + + + {0}km + + + {0}ly + + + {0}m + + + {0}mi + + + {0}mm + + + {0}pm + + + {0}yd + + + {0}g + + + {0}kg + + + {0}oz + + + {0}lb + + + {0}HP + + + {0}kW + + + {0}W + + + {0}hPa + + + {0}"Hg + + + {0}mb + + + {0}km/h + + + {0}m/s + + + {0}mph + + + {0}° + + + {0}°F + + + {0}km³ + + + {0}mi³ + + + {0}ℓ + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} 및 {1} + {0} 및 {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + + + 아니오 + + + + diff --git a/library/Zend/Locale/Data/ko_KP.xml b/library/Zend/Locale/Data/ko_KP.xml new file mode 100755 index 000000000..1bcaababf --- /dev/null +++ b/library/Zend/Locale/Data/ko_KP.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + 조선 시간 + 조선 표준시 + 조선 하계 표준시 + + + + + diff --git a/library/Zend/Locale/Data/ko_KR.xml b/library/Zend/Locale/Data/ko_KR.xml new file mode 100755 index 000000000..f91abb255 --- /dev/null +++ b/library/Zend/Locale/Data/ko_KR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kok.xml b/library/Zend/Locale/Data/kok.xml new file mode 100755 index 000000000..e839af341 --- /dev/null +++ b/library/Zend/Locale/Data/kok.xml @@ -0,0 +1,330 @@ + + + + + + + + + + + + अफार + अबखेज़ियन + अफ्रिकान्स + अमहारिक् + अरेबिक् + असामी + ऐमरा + अज़रबैजानी + बष्किर + बैलोरुसियन् + बल्गेरियन + बिसलमा + बंगाली + तिबेतियन + ब्रेटन + कटलान + कोर्शियन + ज़ेक् + वेळ्ष् + डानिष + जर्मन + भूटानी + ग्रीक् + आंग्ल + इस्परान्टो + स्पानिष + इस्टोनियन् + बास्क + पर्षियन् + फिन्निष् + फिजी + फेरोस् + फ्रेन्च + फ्रिशियन् + ऐरिष + स्काटस् गेलिक् + गेलीशियन + गौरानी + गुजराती + हौसा + हेब्रु + हिन्दी + क्रोयेषियन् + हंगेरियन् + आर्मीनियन् + इन्टरलिंग्वा + इन्डोनेषियन + इन्टरलिंग् + इनूपेयाक् + आईस्लान्डिक + इटालियन + इन्युकट्ट + जापनीस् + जावनीस् + जार्जियन् + कज़ख् + ग्रीनलान्डिक + कंबोडियन + कन्नडा + कोरियन् + कोंकणी + कश्मीरी + कुर्दिष + किर्गिज़ + लाटिन + लिंगाला + लाओतियन् + लिथुआनियन् + लाट्वियन् (लेट्टिष्) + मलागसी + माओरी + मसीडोनियन् + मळियाळम + मंगोलियन् + मराठी + मलय + मालतीस् + बर्मीज़् + नौरो + नेपाळी + डच् + नोर्वेजियन + ओसिटान् + ओरोमो (अफान) + ओरिया + पंजाबी + पोलिष + पाष्टो (पुष्टो) + पोर्चुगीज़् + क्वेच्वा + रहटो-रोमान्स् + किरुन्दी + रोमानियन् + मोल्डावियन् + रष्यन् + किन्यार्वान्डा + संस्कृत + सिंधी + सांग्रो + सेर्बो-क्रोयेषियन् + सिन्हलीस् + स्लोवाक + स्लोवेनियन् + समोन + शोना + सोमाळी + आल्बेनियन् + सेर्बियन् + सिस्वाती + सेसोथो + सुंदनीस + स्वीदीष + स्वाहिली + तमिळ + तेलुगू + तजिक + थाई + तिग्रिन्या + तुर्कमन + तगालोग + सेत्स्वाना + तोंगा + तुर्किष + त्सोगा + तटार + त्वि + उधूर + युक्रेनियन् + उर्दू + उज़बेक + वियत्नामीज़ + ओलापुक + उलोफ़ + झ़ौसा + इद्दिष् + यूरुबा + झ्हुन्ग + चीनीस् + जुलू + + + भारत + + + + [\u093C ० १ २ ३ ४ ५ ६ ७ ८ ९ ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क {क\u093C} ख {ख\u093C} ग {ग\u093C} घ ङ च छ ज {ज\u093C} झ ञ ट ठ ड {ड\u093C} ढ {ढ\u093C} ण त थ द ध न प फ {फ\u093C} ब भ म य {य\u093C} र ल व श ष स ह ळ ऽ ा ि ी \u0941 \u0942 \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D] + [\u200C\u200D] + [ॐ अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ] + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + dd-MM-y G + + + + + d-M-y GGGGG + + + + + + + + + जानेवारी + फेब्रुवारी + मार्च + एप्रिल + मे + जून + जुलै + ओगस्ट + सेप्टेंबर + ओक्टोबर + नोव्हेंबर + डिसेंबर + + + + + + + रवि + सोम + मंगळ + बुध + गुरु + शुक्र + शनि + + + आदित्यवार + सोमवार + मंगळार + बुधवार + गुरुवार + शुक्रवार + शनिवार + + + + + + + म.पू. + म.नं. + + + + + + क्रिस्तपूर्व + क्रिस्तशखा + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + dd-MM-y + + + + + d-M-yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + + भारतीय समय + + + IST + + + + + + latn + + deva + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/kok_IN.xml b/library/Zend/Locale/Data/kok_IN.xml new file mode 100755 index 000000000..46b2b2609 --- /dev/null +++ b/library/Zend/Locale/Data/kok_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ks.xml b/library/Zend/Locale/Data/ks.xml new file mode 100755 index 000000000..bd224b493 --- /dev/null +++ b/library/Zend/Locale/Data/ks.xml @@ -0,0 +1,4135 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + + + اَفار + اَبخازِیان + اَچَےنیٖز + اَکولی + اَدَنٛگمیے + اَدَیٖگیے + اَویستَن + اَفریٖکانٛز + اَفرِہِلی + اینوٗ + اَکان + اَکادِیَن + اَلویتی + جنوٗبی اَلتایی + اَمہاری + اَراگونی + پرون اَنٛگریٖزی + اَنٛگِکا + عربی + اَرَمیک + ایرو کونِیَن + اَراپاہو + اَراوَک + اسٲمۍ + ایسٹوٗریَن + اَوارِک + اَوَدی + ایمارا + اَزَربیجانی + بَشکیٖر + بَلوٗچی + بالِنیٖز + باسا + بیلَروٗشیَن + بیجا + بیٚمبا + بینا + بوجپوٗری + بِسلاما + بِکول + بِنی + سِکسِکا + بَمبارا + بَنٛگٲلۍ + تِبتی + بریٹَن + برٛج + بوسنِیَن + بُرِیَت + بَگنیٖز + بٕلِن + کَتلان + کاڈو + کارِب + اتسَم + چیچَن + سیباونو + کَمورو + چیٖبچا + چھَگتاے + چُکیٖز + ماری + چِنوٗک جارگَن + چوکتَو + شیپویان + چیٚروکی + شییون + کارسِکَن + کاپٹِک + کری + کرٕمیٖن تُرکی + چیٚک + کَشوٗبِیَن + چٔرچ سلاوِک + چُواش + ویٚلش + ڈینِش + ڈکوٹا + دَرگوا + جٔرمَن + آسٹرِیَن جٔرمَن + سٕوِس ہاےجٔرمَن + ڈیٚلوییَر + سلیو + ڈاگرِب + ڈِنکا + ڈوگری + بوٚنِم ساربِیَن + دُوالا + وَستی پُرتُگالی + دِویہی + ڈِیوٗلا + زونٛگکھا + ایٖو + ایٚفِک + قدیٖمی مِصری + ایٚکاجُک + یوٗنٲنی + ایٚلامایِٹ + اَنٛگیٖزۍ + آسٹریلیَن اَنٛگریٖزۍ + کینَڈِیٲیی اَنٛگریٖزۍ + بَرطانوی اَنٛگریٖزۍ + یوٗ ایٚس اَنٛگریٖزۍ + وَسطی اَنٛگریٖزۍ + ایٚسپَرینٹو + سپینِش + لیٹٕن امریٖکی سپینِش + لِبیریَن سپینِش + ایٚسٹونیَن + باسک + ایٚوونڈو + فارسی + فینٛگ + فانٹی + فُلاہ + فِنِش + فِلِپیٖنو + فِجیَن + فَروس + فون + فریٚنچ + کَنیڈیَن فریٚنچ + سٕوٕس فریٚنچ + وسطی فریٚنچ + پرون فریٚنچ + شُمٲلی فرِشیَن + مشرِقی فرِشیَن + فروٗلِیَن + مغربی فرِشیَن + اَیرِش + گا + گیےیو + گبایا + سکوٹِش گیےلِک + گیٖز + گِلبٔرٹیٖز + گیلِشِیَن + وَسطی ہاے جٔرمَن + گُوارَنی + پرون ہاے جٔرمَن + گوندی + گورینٹیلو + گوتھِک + گرِبو + قدیٖم یوٗنٲنی + سٕوِس جٔرمَن + گُجرٲتی + مینٛکس + گُوِچ اِن + ہاوسا + ہَیدا + ہوایِیَن + عبرٲنۍ + ہِندی + ہِلیٖگینَن + ہِتایِت + ہمونٛگ + ہِری موتوٗ + کروشِیَن + ہیٚرِم ساربِیَن + ہیتِیاں + ہَنٛگیریَن + ہُپا + اَرمینیَن + ہیٚریٖرو + اِنٹَرلِنٛگوا + اِبان + اِنڈونیشیا + اِنٹَر لِنٛنگویے + اِگبو + سِچوان یٖی + اِنُپِیاک + اِلوکو + اِنٛگُش + اِڈو + آیِسلینڈِک + اِٹیلیَن + اِنُکتِتوٗ + جاپٲنۍ + لوجبان + جوڈیو فارسی + جوڈیو عربی + جَوَنیٖز + جارجِیَن + کارا کَلپَک + کَبایِل + کاچِن + جُوٗ + کامبا + کَوی + کَبارڈِیَن + تَیَپ + کورو + کونٛگو + کھاسی + کھوتَنیٖز + کِکُیوٗ + کُوانیاما + کازَخ + کَلالِسُت + خَمیر + کِمبُندوٗ + کَنَڑ + کوریَن + کونکَنی + کوسرییَن + کَپیلی + کَنوٗری + کراچیے بَلکار + کَریلِیَن + کُرُکھ + کٲشُر + کُردِش + کُمِک + کُتینَے + کومی + کورنِش + کِرگِز + لاتیٖنی + لیڈِنو + لَہَندا + لَمبا + لُکھزیمبورگِش + لیزگِیَن + گاندا + لِمبٔرگِش + لِنگالا + لاو + مونٛگو + لوزی + لِتھوانِیَن + لوُبا کَتَنٛگا + لوٗبا لوٗلُوا + لویِسینو + لُندا + لُوو + لُسہاے + لَتوِیَن + مَدُریٖز + مَگاے + میتَھلی + مَکَسار + مَندِنٛگو + مَساے + موکشا + مَندَر + میندیے + مَلاگَسی + وَستی ایرِش + مارشَلیٖز + ماوری + مِکمیک + مِنَنٛگکَباو + میکَڈونیَن + مٔلیالَم + مَنٛگولی + مانٛچوٗ + مَنیپوٗری + موہاک + موسی + مَرٲٹھۍ + مَلَے + مَلتیٖس + واریاہ زبان + کریٖک + مِراندیٖز + مارواڑی + بٔمیٖز + ایٚرزِیا + ناورُ + نیٖپالیٹَن + ناروییَن بوکمال + شُمال ڈَبیل + بوٚنِم جٔرمَن + نیٚپٲلۍ + نیٚواری + ڈونٛگا + نِیاس + نِیویَن + ڈَچ + فلیٚمِش + ناروییَن نَے نورسک + ناروییَن + نوگاے + پرون نارسی + ایٚن کو + جنوب ڈیٚبیل + شمالی ستھو + نَواجو + کلاسِکَل نیواری + نِیَنجا + نِیَمویٚزی + نِیَنکول + نِیورو + نَظیٖما + اوکسیٖٹَن + اوجِبوا + اوٚرومو + اوٚرِیا + اوٚسیٚٹِک + اوٚسیج + اوٹومَن تُرکِش + پَنجٲبۍ + پَنٛگاسِنَن + پَہلَوی + پَمپَنٛگا + پَپِیامیٚنٹو + پَلااُواں + پرون فارسی + فونیٖشیَن + پالی + پالِش + پانپیٚیَن + پرون پروویٚنچَل + پَشتوٗ + پُرتَگیٖز + برازیٖلی پُتَگیٖز + لِبیریَن پُرتَگیٖز + کُویشُوا + راجِستھٲنۍ + رَپانوی + رَروٹونٛگَن + رومانش + رُندی + رومٲنی + مولداوِیَن + رومَنی + روٗٹ + روٗسی + اَرومانی + کِنیاوِندا + سَنسکرٕت + سَندَویے + یاکُت + سَمارِتَن اَرامیک + سَسَک + سَنتالی + سراڈیٖنی + سِچِلِیَن + سکاٹس + سِندی + شُمٲلی سَمی + سیٚلکُپ + سَنگو + پرون ایرِش + سیٚربو کروشِیَن + شان + سِنہالا + سِدامو + سلووَک + سلووینیَن + سَمواَن + جنوٗبی سَمی + لولیے سَمی + اِناری سَمی + سکولٹ سَمی + شونا + سونِنکیے + سومٲلی + سوگڈِیَن + البانِیَن + سٔربِیَن + سرٛانَن ٹونٛگو + سیٚریر + سواتی + جنوبی ستھو + سَنڈَنیٖز + سُکُما + سُسوٗ + سُمیریَن + سویٖڈِش + سواہِلی + سیٖریٲیی + تَمِل + تیلگوٗ + ٹِمنیے + ٹیٚریٚنو + ٹیٹَم + تاجِک + تھاے + ٹِگرِنیا + ٹاےگریے + تیٖو + تُرکمین + ٹوکیٖلاو + تَماشیک + کِلِنگون + ٹِلِنگِت + تاماشیک + سوانا + ٹونٛگا + نیاسا ٹونٛگا + ٹاک پِسِن + تُرکِش + ژونٛگا + ژھِمشِیان + تَتار + تُمبُکا + تُوالوٗ + توی + تاہیشِیَن + تُویٖنیَن + اُدمُرت + اُگارتِک + یوٗکرینیٲیی + یُمبُندوٗ + اَنزٲنۍ یا نَہ لَگہٕہار زبان + اُردوٗ + اُزبیک + واے + ویندا + وِیَتنَمیٖز + وولَپُک + ووتِک + وَلوٗن + والامو + وَریے + واشو + وولوف + کالمِک + کھوسا + یاو + یَپیٖز + یِدِش + یورُبا + زُہانٛگ + زَپوتیٚک + زیناگا + چیٖنی + سیٚود چیٖنی + رِوٲجی چیٖنی + زُلوٗ + زوٗنی + کانٛہہ تہِ لِسانیاتی مواد نہٕ + زازا + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + دُنیا + اَفریٖکا + شُمٲلی اَمریٖکا + جَنوٗنی اَمرٖیٖکا + اوشَنیا + مَغریٖبی اَفریٖکا + مرکٔزی اَمریٖکا + مَشرِقی اَفریٖکا + شُمٲلی اَفریٖکا + وسطی اَفریٖکا + جنوٗبی اَفریٖکا + اَمریٖکَس + شُمٲلی اَمریٖکا خٕطہٕ + کَرِببیٖن + مَشرِقی ایشیا + جنوٗبی ایشیا + جنوٗبہِ مَشرِقی ایشیا + جنوٗبی یوٗرَپ + آسٹریلیا تہٕ نِوزِلینٛڑ + مٮ۪لَنیٖشِیا + مَیکرونَیشِیَن خٕطہٕ + پالنیشِیا + ایشیا + مرکٔزی ایشیا + مَغرِبی ایشیا + یوٗرَپ + مشرِقی یوٗرَپ + شُمٲلی یوٗرَپ + مغرِبی یوٗرَپ + لاطیٖنی اَمریٖکا تہٕ کیرَبیٖن + اٮ۪نڑورا + مُتحدہ عرَب امارات + اَفغانَستان + اٮ۪نٹِگُوا تہٕ باربوڑا + انگوئیلا + اٮ۪لبانِیا + اَرمانِیا + نَیدَرلینٛڑٕس اٮ۪نٹَیلٕس + انگولا + اینٹارٹِکا + أرجَنٹینا + اَمریٖکَن سَموا + آسٹِیا + آسٹریلِیا + اَروٗبا + ایلینٛڑ جٔزیٖرٕ + آزَرباجان + بوسنِیا تہٕ ہَرزِگووِنا + باربیڈاس + بَنٛگلادیش + بیٛلجِیَم + بُرکِنا فیسو + بَلجیرِیا + بحریٖن + بورَنڈِ + بِنِن + سینٛٹ بارتَھیلمی + بٔرمیوڈا + بُرنٔے + بولِوِیا + برطانوی قُطبہِ جَنوٗبی علاقہٕ + برٛازِل + بَہامَس + بوٗٹان + بووَٹ جٔزیٖرٕ + بوتَسوانا + بیلاروٗس + بیلِج + کینَڑا + کوکَس کیٖلِنٛگ جٔزیٖرٕ + کونٛگو کِنشاسا + مرکٔزی اَفریٖکی جموٗریَت + کونٛگو بٔرٛزاوِلی + سُوِزَرلینٛڑ + اَیوٕری کوسٹ + کُک جٔزیٖرٕ + چِلی + کیٚمِروٗن + چیٖن + کولَمبِیا + کوسٹا رِکا + کیوٗبا + کیپ ؤرڑی + کرِسمَس جٔزیٖرٕ + سایفرٛس + چیک جَموٗرِیَت + جرمٔنی + جِبوٗتی + ڈینٛمارٕک + ڈومِنِکا + ڈومِنِکَن جموٗرِیَت + اٮ۪لجیرِیا + اِکواڑور + ایسٹونِیا + مِسٔر + مشرِقی سَہارا + اِرٕٹِیا + سٕپین + اِتھوپِیا + فِنلینٛڑ + فِجی + فٕلاکلینٛڑ جٔزیٖرٕ + فرٛانس + گیبان + یُنایٹِڑ کِنٛگڈَم + گرٛنیڑا + جارجِیا + فرٛانسِسی گِانا + گیوَنَرسے + گانا + جِبرالٹَر + گریٖنلینٛڑ + گَمبِیا + گِنی + گَواڑیلوپ + اِکوِٹورِیَل گِنی + گریٖس + جنوٗبی جارجِیا تہٕ جنوٗبی سینٛڑوٕچ جٔزیٖرٕ + گوتیدالا + گُوام + گیٖنی بِساو + گُیانا + ہانٛگ کانٛگ ایس اے آر چیٖن + ہَرٕڑ جٔزیٖرٕ تہٕ مٮ۪کڈونالڑٕ جٔزیٖرٕ + ہانٛڈوٗرِس + کرٛوشِیا + ہایتی + ہَنٛگری + اِنڑونیشِیا + اَیَرلینٛڑ + اِسرایٖل + آیِل آف میٛن + ہِنٛدوستان + برطانوی بحرِ ہِنٛدۍ علاقہٕ + ایٖراق + ایٖران + اَیِسلینٛڑ + اِٹلی + جٔرسی + جَمایکا + جاپان + کِنٛیا + کِرگِستان + کَمبوڑِیا + کِرٕباتی + کَمورَس + سینٛٹ کِٹَس تہٕ نیوِس + شُمٲلی کورِیا + جنوٗبی کورِیا + کُویت + کیمَن جٔزیٖرٕ + کَزاکِستان + لاس + لٮ۪بنان + سینٛٹ لوٗسِیا + لِکٹیٛسٹیٖن + سِریٖلَنٛکا + لایبیرِیا + لیسوتھو + لِتھُوانِیا + لَکسَمبٔرٕگ + لیٛٹوِیا + لِبیا + موروکو + مونیٚکو + مولڑاوِیا + موٹونیٛگِریو + سینٛٹ مارٹِن + میڑاگاسکار + مارشَل جٔزیٖرٕ + مٮ۪سوڑونِیا + مالی + مَیَنما بٔرما + مَنٛگولِیا + مَکاوو ایس اے آر چیٖن + شُمٲلی مارِیانا جٔزیٖرٕ + مارٹِنِک + مارٕٹانِیا + مانٛٹسیراٹ + مالٹا + مورِشَس + مالدیٖو + ملاوی + مٮ۪کسِکو + مَلیشِیا + موزَمبِک + نامِبِیا + نِو کیلِڑونِیا + نایجَر + نارفاک جٔزیٖرٕ + نایجیرِیا + ناکاراگُوا + نیٖدَرلینٛڑ + ناروے + نیپال + نارووٗ + نیوٗ + نیوٗزِلینٛڑ + اومان + پَناما + پیٖروٗ + فرٛانسی پولِنیشِیا + پاپُوا نیوٗ گیٖنی + فِلِپِینس + پاکِستان + پولینٛڑ + سینٛٹ پیٖری تہٕ موکیلِیَن + پِٹکیرٕنۍ جٔزیٖرٕ + پٔرٹو رِکو + فَلَستیٖن + پُرتِگال + پَلاو + پَراگُے + قَطِر + آوُٹلاینِگ اوشینِیا + رِیوٗنِیَن + رومانِیا + سَربِیا + روٗس + روٗوانٛڈا + سوٗدی عربِیہ + سولامان جٔزیٖرٕ + سیشَلِس + سوٗڈان + سُوِڈَن + ٛسِنٛگاپوٗر + سینٛٹ ہٮ۪لِنا + سَلووینِیا + سَوالبریڑ تہٕ جان ماییڑ + سَلوواکِیا + سیٖرالیوون + سین میرِنو + سینیگَل + سومالِیا + سُرِنام + ساو توم تہٕ پرٛنسِپی + اٮ۪ل سَلواڑور + شام + سُوزِلینٛڑ + تُرُک تہٕ کیکوس جٔزیٖرٕ + چاڑ + فرٛانسِسی جَنوٗبی عَلاقہٕ + ٹوگو + تھایلینٛڑ + تاجکِستان + توکیلاو + مَشرِقی تایمور + تُرمِنِستان + ٹونیشِیا + ٹونٛگا + تُرکی + ٹرٛنِنداد تہٕ ٹوبیگو + توٗوالوٗ + تایوان + تَنجانِیا + یوٗرِکین + یوٗگانٛڑا + یوٗنایٹِڑ سِٹیٹِس ماینَر آوُٹلییِنٛگ جٔزیٖرٕ + یوٗنایٹِڑ سِٹیٹِس + یوٗروگے + اُزبِکِستان + ویٹِکَن سِٹی + سینٛٹ وینسٮ۪ٹ تہٕ گرٛیناڑاینٕز + وینازوٗلا + بَرطانوی ؤرجِن جٔزیٖرٕ + یوٗ ایس ؤرجِن جٔزیٖرٕ + ویٹِنام + وانوٗتوٗ + والِس تہٕ فیوٗچوٗنا + سیمووا + یَمَن + مَییٹ + جَنوٗبی اَفریٖکا + جامبِیا + زِمبابے + نامعلوٗم تہٕ نالَگہار عَلاقہٕ + + + رٮ۪وٲتی جٔرمَن عِلمہِ ہِجا + مَیعٲری روٗسی عِلمہِ ہِجا + جٔرمَن عِلمہِ ہِجا ۱۹۹۶سُک + بعد وَقت وَسطی فرٛانس پٮ۪ٹھ ۱۶٠۶ تام + مَشرِقی اَمریٖکا + جٔمع کٔرِتھ تُرکی لاطیٖنی اَچھر + سین جارجِیو/بِلا بوٗلۍ + آوازیات + یوٗ پی اے آوازِیات + روٗسی زَبانہِ ہِنٛز لِپوواز بوٗلۍ + اَکٔے لہجہٕ واجٮ۪ن زَبان + نٮ۪ٹِسون بوٗلۍ + نیجِوا بوٗلۍ + اُشیکو/اوسوجین بوٗلۍ + واریاہ لہجہٕ واجٮ۪ن زَبان + کَمپیوٗٹَر + دُبارٕ دۄہراونہٕ آمُت عِلمہِ ہِجا + روٗسی + سوہو + سُکاٹِش مَیعٲری اَنٛگریٖزۍ + سِکوس + ثٹولوِزا/سولبِکا بوٗلۍ + تاراسکیٖوِکا علمہ ہِجاِ + + + کیلنڑر + ضَرب + + + رٮ۪وٲتی چیٖنی تِرتیٖب + بُدَن ہُنٛد کیلنڑَر + چیٖنی کیلَنڑَر + گرگوریَن کیلنڑَر + ہِبرِو کیلنڑَر + اِسلٲمی کیلنڑَر + اِسلٲمی اِجتمٲیی کیلنڑَر + جاپٲنۍ کیلنڑَر + فون بُک تَرتیٖب + آسان بَناونہٕ آمُت چیٖنی پیٖنیَن تَرتیٖب + جموٗریٲتی چیٖنی کیلَنڑَر + رٮ۪وٲتی چیٖنی سٹروک تَرتیٖب + رٮ۪وٲتی تَرتیٖب + + + میٖٹرِک + یوٗ ایس + + + زَبان: {0} + رَسم الخط: {0} + علاقہٕ: {0} + + + + + right-to-left + + + + [\u06EA\u06ED \u064E \u064F \u0650 \u0654 \u0655 \u0656 \u0657 \u065A \u065B ء آ أ ٲ ؤ ا ٮ ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں ھ ہ و ۄ ی ۍ ے] + [\u200E\u200F] + + + + + + + + EEEE, MMMM d, Gy + + + + + MMMM d, Gy + + + + + MMM d, Gy + + + + + M/d/Gy + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + EEEE,dd MMMM GGGGy + Gy + MMM Gy + MMM d, Gy + EEE, MMM d, Gy + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + d-MMM + E, MMM d + MMMM d + E, MMMM d + mm:ss + Gy + Gy + M/Gy + EEE, M/d/Gy + MMM Gy + MMM d, Gy + EEE, MMM d, Gy + MMMM Gy + QQQ Gy + QQQQ Gy + + + + + + + + جنؤری + فرؤری + مارٕچ + اپریل + میٔ + جوٗن + جوٗلایی + اگست + ستمبر + اکتوٗبر + نومبر + دسمبر + + + + + ج + ف + م + ا + م + ج + ج + ا + س + س + ا + ن + + + + + + + آتھوار + ژٔنٛدٕروار + بوٚموار + بودوار + برٛٮ۪سوار + جُمہ + بٹوار + + + اَتھوار + ژٔنٛدرٕروار + بوٚموار + بودوار + برٛٮ۪سوار + جُمہ + بٹوار + + + + + ا + ژ + ب + ب + ب + ج + ب + + + + + + + ژۄباگ + دوٚیِم ژۄباگ + ترٛیِم ژۄباگ + ژوٗرِم ژۄباگ + + + گۄڑنیُک ژۄباگ + دوٚیِم ژۄباگ + ترٛیِم ژۄباگ + ژوٗرِم ژۄباگ + + + + + + قبٕل مسیٖح + عیٖسوی سنہٕ + + + بی سی + اے ڈی + + + + + + EEEE, MMMM d, y + + + + + MMMM d, y + + + + + MMM d, y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + EEEE,dd MMMM GGGGy + Gy + MMM Gy + MMM d, Gy + EEE, MMM d, Gy + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + d-MMM + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + EEE, M/d/y + MMM y + EEE, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + محرم + صفر + ربیٖع الاول + ربیٖع الثانی + جمادی الاول + جمادی الثانی + رجب + شعبان + رمضان + شوال + ذِی القد + ذِی الحج + + + + + + + + دور + + + ؤری + + + رٮ۪تھ + + + ہفتہٕ + + + دۄہ + راتھ + اَز + پگاہ + + + ہفتُک دۄہ + + + صبح/رات + + + گٲنٛٹہٕ + + + مِنَٹ + + + سٮ۪کَنڑ + + + زون + + + + +HH:mm;-HH:mm + GMT{0} + + غٲر زان + + + اَنٛڑورا + + + دُبَے + + + قابُل + + + اٮ۪نٹِگُوا + + + اٮ۪نگِولا + + + ٹِرین + + + یےریٚوَن + + + لُعٮ۪نٛڑا + + + روتھیرا + + + پامَر + + + سیٚووا + + + ماسَن + + + ڈیوِس + + + ووستوک + + + کیسی + + + ڈُمونٛٹ ڈ اَروِل + + + مٮ۪ک مٲڑو + + + رِیو گالیگوس + + + مٮ۪نڑوزا + + + سین جُواں + + + اُشُوٗاییا + + + لا رِیوجا + + + سین لوٗیِس + + + کیٹامارکا + + + جُجویے + + + ٹوکوٗمَن + + + کورڑوبا + + + بیوٗنَس آیرَس + + + پیگو پیگو + + + وِیَننا + + + پٔرتھ + + + یوٗکلا + + + ڈاروِن + + + اٮ۪ڑِلیڑ + + + برٛوکٕن ہِل + + + کیوٗری + + + مٮ۪لبعارن + + + حۄبٲٹ + + + لِنڑیمان + + + سِڑنی + + + برٛسبین + + + لعاڑ ہووے + + + اَروٗبا + + + باقوٗ + + + بَرباڑوس + + + ڈھاکا + + + برٛسٕلس + + + اوآگدوگو + + + سوفِیا + + + بٮ۪ہریٖن + + + بُجُمبُرا + + + پوٹو نووو + + + برموٗڑا + + + برٛوٗنَے + + + لا پاز + + + ایٖروٗنیپ + + + رِیو برٛانٛکو + + + پوٹو وٮ۪لہو + + + بوآ وِسٹا + + + مَنوس + + + کوٗیابا + + + کٮ۪مپو گرینٛڑ + + + بٮ۪لٮ۪م + + + اٮ۪ریگُوینا + + + ساو پعالو + + + بَہِیا + + + فورٹیلیزا + + + میسِیوو + + + رٮ۪چیٖف + + + نورونٛہا + + + نساؤں + + + تھِمپوٗ + + + گٮ۪بورون + + + مِنٛسک + + + بٮ۪لیٖز + + + ڑاسَن + + + وایِٹ ہارٕس + + + اِنوٗوِک + + + وٮ۪نٛکووَر + + + ڑاسَن کرٛیٖک + + + یٮ۪لو نایِف + + + اٮ۪ڑمَنٹَن + + + سٕوِفٹ کَرَنٛٹ + + + کیمبرِج خلیٖج + + + رٮ۪جیٖنا + + + وِنِپٮ۪گ + + + رِسولیوٗٹ + + + رینی رِوَر + + + رینٛکِن اِنلٮ۪ٹ + + + کورَل بٔنٛدٕرگاہ + + + تھَنڑَر خلیٖج + + + نِپِگَن + + + ٹورونٛٹو + + + اِقالیوٗیِت + + + پَنٛگنِرٹَنٛگ + + + مونٛکٹٕن + + + حیلِفٮ۪کس + + + گوٗس خلیٖج + + + گلیس خلیٖج + + + بلانٛک سٮ۪بلَن + + + سٮ۪نٛٹ جونس + + + کوکوس + + + کِنشاسا + + + لُبُمباشی + + + بٮ۪نٛگوٗیی + + + برٛازاوِل + + + زیوٗرِک + + + عابِدجان + + + راروٹونٛگا + + + ایٖسٹَر + + + سینٹِعٮ۪گو + + + دوعالا + + + کاشگَر + + + اُرَمچی + + + چونٛگقِنٛگ + + + حاربِن + + + بوگوٹا + + + کوسٹا ریٖکا + + + حوانا + + + کیپ ؤرڑے + + + کیوٗراکااو + + + کرِسمَس + + + نِکوسِیا + + + بٔرلِن + + + ڑِزِبوٹی + + + کوپَنہیگَن + + + ڈومِنِکا + + + سٮ۪نٹو ڑومِنگو + + + اَلجیٖرِیا + + + گٮ۪لَپگوس + + + گوایاکِوَل + + + ٹٮ۪لِن + + + کَیرو + + + اَسمیرا + + + کٮ۪نَری + + + کیوٗٹا + + + میڑرِڑ + + + حٮ۪لسِنٛکی + + + فِجی + + + سٹینلی + + + ٹرٛک + + + پوناپے + + + کوسراے + + + فٮ۪رو + + + پیرِس + + + لِبَروِل + + + + برطٲنوی سَمَر ٹایِم + + لَنٛدَن + + + گرٛیناڑا + + + بِلِسی + + + کَیین + + + اٮ۪کرا + + + گِبرالٹَر + + + تھیوٗلے + + + گعاڑتھیب + + + سکورٕسباےسَنٛڑ + + + ڑٮ۪نمارکشَون + + + بَنجوٗل + + + کوناکرٛی + + + گوڑلوپ + + + مالابو + + + اٮ۪تھٕنس + + + ساوتھ جورجِیا + + + گواٹیمالا + + + گوام + + + بِساؤں + + + گُیانا + + + حانٛگ کانٛگ + + + پوٹ آؤں پرِنٛس + + + بُڑاپیسٹ + + + جکارتا + + + پونٛتِعانٛک + + + مَکَسَر + + + جَیاپوٗرا + + + + اَیرِش سَمَر ٹایِم + + ڈَبلِن + + + یٮ۪روٗسَلَم + + + چاگوس + + + بغداد + + + تٮ۪ہران + + + رٮ۪کیاوِک + + + روم + + + جَمَیکا + + + اَمان + + + ٹوکیو + + + نیروبی + + + بِشکیک + + + نوم پٮ۪نٛہہ + + + اٮ۪نٛڑربیری + + + کِرِتِماتی + + + ٹَراوا + + + کومورو + + + سینٛٹ کِٹس + + + پیونٛگیانٛگ + + + سول + + + کُویت + + + کیمَن + + + اَکتاؤں + + + اورَل + + + اَقٹوب + + + قٮ۪زٮ۪لوڑا + + + اَلماٹی + + + وِیَنتِیین + + + بیرُت + + + سٮ۪نٛٹ لوٗسِیا + + + وادُز + + + کولَمبو + + + مونرووِیا + + + مَسیروٗ + + + وِلِنِیَس + + + لَکزٕمبٔرگ + + + رِگا + + + ترٛپولی + + + کٮ۪سابلٮ۪نٛکا + + + موناکو + + + چِسیٖنو + + + اٮ۪نٛٹنانرِوو + + + کُوجلین + + + مَجوٗرو + + + بماکو + + + رنٛگوٗن + + + حووڑ + + + اُلانباٹَر + + + چویبالسَن + + + مقاؤں + + + سَیپان + + + مارٹِنِک + + + نوواکچھوت + + + مونژیرات + + + مالٹا + + + مورِشیٚس + + + مالدیٖوز + + + بلانتَیر + + + تِجُوانا + + + ۂرموسِلو + + + مَزَٹلان + + + چِہُوا ہُوا + + + موٹیٚری + + + میٚکسِکو سِٹی + + + میٚرِڈا + + + کینکَن + + + کولالَمپوٗر + + + کُچِنٛگ + + + مَپوٗٹو + + + وِنڈہوک + + + نومیی + + + نَیمیے + + + نورفوک + + + لیٚگوس + + + مَناگوا + + + ایمسٹَرڈیم + + + اوسلو + + + کاٹھمَنڈوٗ + + + ناوروٗ + + + نِو + + + چَتھَم + + + آکلینڈ + + + مَسکَت + + + پَناما + + + لِما + + + تَہِتی + + + مارکیسَس + + + گیمبِیَر + + + پوٹ مورسبی + + + مَنیٖلا + + + کَراچی + + + وارسا + + + مِکیٖلَن + + + پِٹکیرَن + + + پیٖٹو رِکو + + + غازا + + + اَزورَس + + + مَڈیٖرا + + + لِسبَن + + + پَلاو + + + اَسُنچِیَن + + + قَتَر + + + رِیوٗنیَن + + + بَچاریٚسٹ + + + کَلِناِنگرَد + + + ماسکو + + + وولگوگرَد + + + سَمارا + + + یَکاتِرِنبٔرگ + + + اومسک + + + نوووسِبِرسک + + + کرنٛسنویارسک + + + اِرکُسک + + + یکوسک + + + لادِووستوک + + + سَکھالِن + + + مَگادَن + + + کَمچھٹکا + + + اَنَدیر + + + کِگالی + + + رِیاد + + + گُوادَلچَنَل + + + ماہیے + + + کھارتوم + + + سٹاک ہولم + + + سِنٛگاپور + + + سینٛٹ ہیٚلِنا + + + فری ٹاوُن + + + دَکار + + + موگادِشوٗ + + + پَرامارِبو + + + ساو ٹوم + + + ایٚل سَلویدَر + + + دَمَسکَس + + + مابین + + + گرینٛڈ تٔرک + + + جَمیٖنا + + + کیرگولِن + + + لوم + + + بینگ کاک + + + دُشانبیے + + + فَکَوفو + + + دِلی + + + اَشگَبَت + + + ٹوٗنِس + + + تونگاتَپوٗ + + + اِستانبُل + + + پوٹ آف سپین + + + فُنافوٗتی + + + تَیپیے + + + دارُالسلام + + + اُزگورود + + + کیٖو + + + سِمفیٚروپول + + + زَپوروزَے + + + کَمپالا + + + مِڈویے + + + جانسٹَن + + + ویک + + + اِدَک + + + نوم + + + ہونولو لو + + + اَنکوراج + + + یکوٗتات + + + جوٗنی + + + لاس ایٚنجٕلز + + + بویِس + + + پھِنِکس + + + ڈیٚنوَر + + + نوو سیلٕم + + + مَرکزی جنوٗبی ڈکوٹا + + + شِکاگو + + + میٚنومِنی + + + وِنسیٚنیٚس + + + پِٹس بٔرگ + + + ٹیٚل سِٹی + + + نوکس + + + وِنیمیک + + + میٚریٚنگو + + + اِنڈیَن پولِس + + + لوٗیِس وِل + + + ویٚویے + + + مونٹِسیٚلو + + + ڈیٚٹرایِٹ + + + نِو یارک + + + مونٹیٚوِڈیو + + + سَمَرکَنٛد + + + تاشکیٚنٛٹ + + + وِنسیٚنٛٹ + + + کیرَکَس + + + ٹارٹولا + + + سینٛٹ تھامَس + + + سیگَن + + + ایٚفاتیے + + + ویلِس + + + آپِیا + + + ایٚڈٕن + + + میوٹ + + + جانسبٔرگ + + + لُساکا + + + ہَراریے + + + + اٮ۪کرے ٹایِم + اٮ۪کرے سٹینڑاڑ ٹایِم + اٮ۪کرے سَمَر ٹایِم + + + + + افغانِستان ٹایِم + + + + + مرکزی افریٖقا ٹایِم + + + + + مشرقی افریٖقا ٹایِم + + + + + جنوٗبی افریقا ٹایِم + + + + + مغربی افریٖقا ٹایِم + مغربی افریٖقا سٹینڑاڑ ٹایِم + مغربی افریٖقا سَمَر ٹایِم + + + + + اٮ۪لاسکا ٹایِم + اٮ۪لاسکا سٹینڑاڑ ٹایِم + اٮ۪لاسکا ڈےلایِٔٹ ٹایِم + + + + + اٮ۪لمٮ۪ٹی ٹایِم + اٮ۪لمٮ۪ٹی سٹینڑاڑ ٹایِم + اٮ۪لمٮ۪ٹی سَمَر ٹایِم + + + + + اٮ۪مَزَن ٹایِم + اٮ۪مَزَن سٹینڑاڑ ٹایِم + اٮ۪مَزَن سَمَر ٹایِم + + + + + مرکزی ٹایِم + مرکزی سٹینڑاڑ ٹایِم + مرکزی ڈےلایِٔٹ ٹایِم + + + + + مشرقی ٹایِم + مشرقی سٹینڑاڑ ٹایِم + مشرقی ڈےلایِٔٹ ٹایِم + + + + + ماونٹین ٹایِم + ماونٹین سٹینڑاڑ ٹایِم + ماونٹین ڈےلایِٔٹ ٹایِم + + + + + پیسِفِک ٹایِم + پیسِفِک سٹینڑاڑ ٹایِم + پیسِفِک ڈےلایِٔٹ ٹایِم + + + + + اٮ۪نَڑیٖر ٹایِم + اٮ۪نَڑیٖر سٹینڑاڑ ٹایِم + اٮ۪نڑیٖر سَمَر ٹایِم + + + + + اٮ۪کٹاؤ ٹایِم + اٮ۪کٹاؤ سٹینڑاڑ ٹایِم + اٮ۪کٹاؤ سَمَر ٹایِم + + + + + اٮ۪کٹوب ٹایِم + اٮ۪کٹوب سٹینڑاڑ ٹایِم + اٮ۪کٹوب سَمَر ٹایِم + + + + + ارٮ۪بِیَن ٹایِم + ارٮ۪بِیَن سٹینڑاڑ ٹایِم + ارٮ۪بِیَن ڈےلایِٔٹ ٹایِم + + + + + ارجٮ۪نٹیٖنا ٹایِم + ارجٮ۪نٹیٖنا سٹینڑاڑ ٹایِم + ارجٮ۪نٹیٖنا سَمَر ٹایِم + + + + + مغربی ارجٮ۪نٹیٖنا ٹایِم + مغربی ارجٮ۪نٹیٖنا سٹینڑاڑ ٹایِم + مغربی ارجٮ۪نٹیٖنا سَمَر ٹایِم + + + + + ارمیٖنِیا ٹایِم + ارمیٖنِیا سٹینڑاڑ ٹایِم + ارمیٖنِیا سَمَر ٹایِم + + + + + اٮ۪ٹلانٹِک ٹایِم + اٮ۪ٹلانٹِک سٹینڑاڑ ٹایِم + اٮ۪ٹلانٹِک ڈےلایِٔٹ ٹایِم + + + + + مرکزی آسٹریلِیَن ٹایِم + آسٹریلِیَن مرکزی سٹینڑاڑ ٹایِم + آسٹریلِیَن مرکزی ڈےلایِٔٹ ٹایِم + + + + + آسٹریلِیَن مرکزی مغربی ٹایِم + آسٹریلِیَن مرکزی مغربی سٹینڑاڑ ٹایِم + آسٹریلِیَن مرکزی مغربی ڈےلایِٔٹ ٹایِم + + + + + مشرِقی آسٹریلِیا ٹایِم + آسٹریلِیَن مشرقی سٹینڑاڑ ٹایِم + آسٹریلِیَن مشرقی ڈےلایِٔٹ ٹایِم + + + + + مغرِبی آسٹریلِیا ٹایِم + آسٹریلِیَن مغرِبی سٹینڑاڑ ٹایِم + آسٹریلِیَن مغرِبیٖ ڈےلایٔٹ ٹایِم + + + + + اَزَربیجان ٹایِم + اَزَربیجان سٹینڑاڑ ٹایِم + اَزَربیجان سَمَر ٹایِم + + + + + اٮ۪زورٕس ٹایِم + اٮ۪زورٕس سٹینڑاڑ ٹایِم + اٮ۪زورٕس سَمَر ٹ + + + + + بَنٛگلادیش ٹایِم + بَنٛگلادیش سٹینڑاڑ ٹایِم + بَنٛگلادیش سَمَر ٹایِم + + + + + بوٗٹان ٹایِم + + + + + بولِوِیا ٹایِم + + + + + برٮ۪سِلِیا ٹایِم + برٮ۪سِلِیا سٹینڑاڑ ٹایِم + برٮ۪سِلِیا سَمَر ٹایِم + + + + + برٛوٗنَے دَروٗسَلَم ٹایِم + + + + + کیپ ؤرڑو ٹایِم + کیپ ؤرڑو سٹینڑاڑ ٹایِم + کیپ سَمَر ٹایِم + + + + + کٮ۪مورو سٹینڑاڑ ٹایِم + + + + + کٮ۪تھَم ٹایِم + کٮ۪تھَم سٹینڑاڑ ٹایِم + چٮ۪تھَم سَمَر ٹایِم + + + + + چِلی ٹایِم + چِلی سٹینڑاڑ ٹایِم + چِلی سَمَر ٹایِم + + + + + چَینا ٹایِم + چَینا سٹینڑاڑ ٹایِم + چَینا ڈےلایِٔٹ ٹایِم + + + + + کوےبٮ۪لسَن ٹایِم + کوےبٮ۪لسَن سٹینڑاڑ ٹایِم + کوےبٮ۪لسَن سَمَر ٹایِم + + + + + کرٛسمَس ٹایِم + + + + + کوکوز اَیلینڑز ٹایِم + + + + + کولومبِیا ٹایِم + کولومبِیا سٹینڑاڑ ٹایِم + کولومبِیا سَمَر ٹایِم + + + + + کُک اَیلینڑز ٹایِم + کُک اَیلینڑز سٹینڑاڑ ٹایِم + کُک اَیلینڑز حاف سَمَر ٹایِم + + + + + کیوٗبا ٹایِم + کیوٗبا سٹینڑاڑ ٹایِم + کیوٗبا ڈےلایِٔٹ ٹایِم + + + + + ڑیوِس ٹایِم + + + + + ڑمانٹ ڈی اُرویٖل ٹایِم + + + + + ایٖسٹ ٹیٖمَر ٹایِم + + + + + ایٖسٹَر ٹایِم + ایٖسٹَر سٹینڑاڑ ٹایِم + ایٖسٹَر سَمَر ٹایِم + + + + + اِکویڑَر ٹایِم + + + + + مرکزی یوٗرپی ٹایِم + مرکزی یوٗرپی سٹینڑاڑ ٹایِم + مرکزی یوٗرپی سَمَر ٹایِم + + + + + مشرقی یوٗرپی ٹایِم + مشرقی یوٗرپی سٹینڑاڑ ٹایِم + مشرقی یوٗرپی سَمَر ٹایِم + + + + + مغرِبی یوٗرپی ٹایِم + مغرِبی یوٗرپی سٹینڑاڑ ٹایِم + مغرِبی یوٗرِپی سَمَر ٹایِم + + + + + فاکلینڑ ٹایِم + فاکلینڑ سٹینڑاڑ ٹایِم + فاکلینڑ سَمَر ٹایِم + + + + + فیٖجی ٹایِم + فیٖجی سٹینڑاڑ ٹایِم + فیٖجی سَمَر ٹایِم + + + + + فرٛٮ۪نٛچ گیوٗٮ۪نا ٹایِم + + + + + جنوٗبی فرٮ۪نٛچ ٹایِم + + + + + گٮ۪لٮ۪پیٚگوز ٹایِم + + + + + گٮ۪مبِیَر ٹایِم + + + + + جورجِیاہُک ٹایِم + جورجِیاہُک سٹینڑاڑ ٹایِم + جورجِیاہُک سَمَر ٹایِم + + + + + گِلبٲٹ ججیٖرُک ٹایِم + + + + + گرٛیٖن وِچ میٖن ٹایِم + + + + + مشرِقی گریٖن لینڑُک ٹایِم + مشرِقی گریٖن لینڑُک سٹینڑاڑ ٹایِم + مشرِقی گریٖن لینڑُک سَمَر ٹایِم + + + + + مغرِبی گریٖن لینڑُک ٹایِم + مغرِبی گریٖن لینڑُک سٹینڑاڑ ٹایِم + مغرِبی گریٖن لینڑُک سَمَر ٹایِم + + + + + گُوٮ۪م ٹایِم + + + + + گَلف سٹینڑاڑ ٹایِم + + + + + گُیَنا ٹایِم + + + + + حَواے اٮ۪لیوٗٹِیَن ٹایِم + حَواے اٮ۪لیوٗٹِیَن سٹینڑاڑ ٹایِم + حَواے اٮ۪لیوٗٹِیَن سَمَر ٹایِم + + + + + حانگ کانٛگ ٹایِم + حانگ کانٛگ سٹینڑاڑ ٹایِم + حانٛگ کانٛگ سَمَر ٹایِم + + + + + حووڑ ٹایِم + حووڑ سٹینڑاڑ ٹایِم + حووڑ سَمَر ٹایِم + + + + + ہِنٛدوستان + + + + + ہِندوستٲنۍ اوشَن ٹایِن + + + + + اِنڑوچَینا ٹایِم + + + + + مرکزی اِنڑونیشِیا ٹایِم + + + + + مشرِقی اِنڑونیشِیا ٹایِم + + + + + مغرِبی اِنڑونیشِیا ٹایِم + + + + + اِیٖرٲنۍ ٹایِم + اِیٖرٲنۍ سٹینڑاڑ ٹایِم + اِیٖرٲنی سَمَر ٹایِم + + + + + اِرکُٹسک ٹایِم + اِرکُٹسک سٹینڑاڑ ٹایِم + اِرکُٹسک سَمَر ٹایِم + + + + + اِسرٲیِلی ٹایِم + اِسرٲیِلی سٹینڑاڑ ٹایِم + اِسرٲیِلی ڑےلایِٔٹ ٹایِم + + + + + جاپٲنۍ ٹایِم + جاپٲنۍ سٹینڑاڑ ٹایِم + جاپٲنۍ ڑےلایِٔٹ ٹایِم + + + + + کَمچَٹکا ٹایِم + کَمچَٹکا سٹینڑاڑ ٹایِم + کَمچَٹکا سَمَر ٹایِم + + + + + مشرِقی کَزاکھِستان ٹایِم + + + + + مغرِبی کَزاکھِستان ٹایِم + + + + + کورِیا ٹایِم + کورِیا سٹینڑاڑ ٹایِم + کورِیا ڑےلایِٔٹ ٹایِم + + + + + کورسَے ٹایِم + + + + + کرٮ۪سنوےیارسک ٹایِم + کرٮ۪سنوےیارسک سٹینڑاڑ ٹایِم + کرٮ۪سنوےیارسک سَمَر ٹایِم + + + + + کِرگِستان ٹایِم + + + + + لَنٛکا ٹایِم + + + + + لایِٔن ججیٖرُک ٹایِم + + + + + لعاڑ حووے ٹایِم + لعاڑ حووے سٹینڑاڑ ٹایِم + لعاڑ ڑےلایٔٹ ٹایِم + + + + + مَکَعوٗ ٹایِم + مَکَعوٗ سٹینڑاڑ ٹایِم + مَکَعوٗ سَمَر ٹایِم + + + + + مَگَدَن ٹایِم + مَگَدَن سٹینڑاڑ ٹایِم + مَگَدَن سَمَر ٹایِم + + + + + مَلیشِیا ٹایِم + + + + + مالدیٖوٕز ٹایِم + + + + + مارقیوٗسَس ٹایِم + + + + + مارشَل ججیٖرُک ٹایِم + + + + + مورِشَس ٹایِم + مورِشَس سٹینڑاڑ ٹایِم + مورِشَس سَمَر ٹایِم + + + + + ماسَن ٹایِم + + + + + مونگولِیا ٹایِم + مونگولِیا سٹینڑاڑ ٹایِم + مونگولِیا سَمَر ٹایِم + + + + + ماسکَو ٹایِم + ماسکو سٹینڑاڑ ٹایِم + ماسکو سَمَر ٹایِم + + + + + مِیانمَر ٹایِم + + + + + نَعوٗروٗ ٹایِم + + + + + نٮ۪پٲلۍ ٹایِم + + + + + نِو کیلٮ۪ڑونِیا ٹایِم + نِو کیلٮ۪ڑونِیا سٹینڑاڑ ٹایِم + نِو کیلٮ۪ڑونِیس سَمَر ٹایِم + + + + + نِوزِلینڑ ٹایِم + نِوزِلینڑ سٹینڑاڑ ٹایِم + نِوزِلینڑ ڑےلایٔٹ ٹایِم + + + + + نیوٗ فاونڑلینڑ ٹایِم + نیوٗ فاونڑلینڑ سٹینڑاڑ ٹایِم + نیوٗ فاونڑ لینڑ ڑےلایِٔٹ ٹایِم + + + + + نِیوٗ ٹایِم + + + + + نورفعاک ٹایِم + + + + + نورونہا ٹایِم + نورونہا سٹینڑاڑ ٹایِم + نورونہا سَمَر ٹایِم + + + + + شُمٲلی مَرِیانا ٹایِم + + + + + نۄوۄسِبٔرسک ٹایِم + نۄوۄسِبٔرسک سٹینڑاڑ ٹایِم + نۄوۄسِبٔرسک سَمَر ٹایِم + + + + + اۄمسک ٹایِم + اۄمسک سٹینڑاڑ ٹایِم + اۄمسک سَمَر ٹایِم + + + + + پاکِستان ٹایِم + پاکِستان سٹینڑاڑ ٹایِم + پاکِستان سَمَر ٹایِم + + + + + پَلاو ٹایِم + + + + + پاپُعا نیوٗ گٮ۪نی ٹایِم + + + + + پیرٮ۪گوے ٹایِم + پیرٮ۪گوے سٹینڑاڑ ٹایِم + پیرٮ۪گوے سَمَر ٹایِم + + + + + پٔروٗ ٹایِم + پٔروٗ سٹینڑاڑ ٹایِم + پٔروٗ سَمَر ٹایِم + + + + + پھِلِپایِن ٹایِم + پھِلِپایِن سٹینڑاڑ ٹایِم + پھِلِپایِن سَمَر ٹایِم + + + + + پھونِکس ججیٖرُک ٹایِم + + + + + سینٛٹ پَیری مِقیوٗلَن ٹایِم + سینٛٹ پَیری مِقیوٗلَن سٹینڑاڑ ٹایِم + سینٛٹ پَیری مِقیوٗلَن ڑےلایِٔٹ ٹایِم + + + + + پِٹکیرٕن ٹایِم + + + + + پونیپ ٹایِم + + + + + قِزلوڑا ٹایِم + قِزلوڑا سٹینڑاڑ ٹایِم + قِزلوڑا سَمَر ٹایِم + + + + + رِیوٗنِیَن ٹایِم + + + + + روتھٮ۪را ٹایِم + + + + + سَکھٮ۪لِن ٹایِم + سَکھٮ۪لِن سٹینڑاڑ ٹایِم + سَکھٮ۪لِن سَمَر ٹایِم + + + + + سمٮ۪را ٹایِم + سمٮ۪را سٹینڑاڑ ٹایِم + سمٮ۪را سَمَر ٹایِم + + + + + سٮ۪موآ ٹایِم + سٮ۪موآ سٹینڑاڑ ٹایِم + سٮ۪موآ سَمَر ٹایِم + + + + + سیشٮ۪لٕز ٹایِم + + + + + سِنٛگاپوٗر ٹایِم + + + + + سولومَن ججیٖرَن ہُنٛد ٹایِم + + + + + شُمٲلی جورجِیا ٹایِم + + + + + سُرِنام ٹایِم + + + + + سیووا ٹایِم + + + + + ٹاہِٹی ٹایِم + + + + + تازِکِستان ٹایِم + + + + + ٹوکٮ۪لو ٹایِم + + + + + ٹعانٛگا ٹایِم + ٹعانٛگا سٹینڑاڑ ٹایِم + ٹعانٛگا سَمَر ٹایِم + + + + + ٹٔرک ٹایِم + + + + + تُرکمٮ۪نِستان ٹایِم + تُرکمٮ۪نِستان سٹینڑاڑ ٹایِم + تُرکمٮ۪نِستان سَمَر ٹایِم + + + + + ٹوٗوَلوٗ ٹایِم + + + + + یوٗرٮ۪گوَے ٹایِم + یوٗرٮ۪گوَے سٹینڑاڑ ٹایِم + یوٗرٮ۪گوَے سَمَر ٹایِم + + + + + اُزبیکِستان ٹایِم + اُزبیکِستان سٹینڑاڑ ٹایِم + اُزبیکِستانُک سَمَر ٹایِم + + + + + وَنوٗاَٹوٗ ٹایِم + وَنوٗاَٹوٗ سٹینڑاڑ ٹایِم + وَنوٗاَٹوٗ سَمَر ٹایِم + + + + + وٮ۪نٮ۪زیوٗلا ٹایِم + + + + + ولاڑِووسٹوک ٹایِم + ولاڑِووسٹوک سٹینڑاڑ ٹایِم + ولاڑِووسٹوک سَمَر ٹایِم + + + + + وولگوگریڑ ٹایِم + وولگوگریڑ سٹینڑاڑ ٹایِم + وولگوگریڑ سَمَر ٹایِم + + + + + ووسٹوک ٹایِم + + + + + ویک ججیٖرُک ٹایِم + + + + + والِس تہٕ فیوٗٹیوٗنا ٹایِم + + + + + یَکُٹسک ٹایِم + یَکُٹسک سٹینڑاڑ ٹایِم + یَکُٹُسک سَمَر ٹایِم + + + + + یٮ۪کَٹٔرِنبٔرگ ٹایِم + یٮ۪کَٹٔرِنبٔرگ سٹینڑاڑ ٹایِم + یٮ۪کَٹرِنبٔرگ سَمَر ٹایِم + + + + + + arabext + + arabext + + + . + , + ; + % + ‎+ + ‎- + E + + ? + NaN + + + + + #,##,##0.### + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + اٮ۪ڑورَن پیسِٹا + + + مُتحدہ عرب اِمارات دِرہم + + + افغان افغٲنی + + + اٮ۪لبینِیَن لِک + + + اَرمانٮ۪ن ڈرٛٮ۪م + + + نایدَرلینٛڑ اٮ۪نٹٕلیٖیَن گِلڑَر + + + اٮ۪نگولَن کوانزا + + + اٮ۪نگولَن کوانٛزا رٮ۪جِسٹاڑو + + + أرجَنٹیٖن اَسٹرل + + + أرجَنٹیٖن پِسو + + + آسٹریَن شِلِنٛگ + + + آسٹریلِیَن ڈالَر + + + اَروبَن فِلورِن + + + آزَرباجانی مَنَٹ + + + بوزنِیاہَرزِگووِنا دیٖنار + + + بوزنِیاہَرزِگووِنا کَنوٲٹیبٕل مارٕک + + + بابیڑِیَن ڈالَر + + + بَنگلادیٖشی ٹَکا + + + بَلجِیَن فرینٛک + + + بیلگیرِیَن ہاڑ لِو + + + بحریٖنی دیٖنار + + + بُرُنڑِین فرینٛک + + + بٔرمیوٗڑَن ڈالَر + + + برٛونی ڈالَر + + + بولِوِیَن بولوینو + + + بولویَن پِسو + + + بولوِیَن مَوڈال + + + برٛازیٖلین کرٛوزِرو نووو + + + برٛازیٖلین کرٛوزیڑو + + + (برٛازیٖلین کرٛوزِرو + + + برٛازیٖلین رِیَل + + + برٛازیٖلین کرٛوزیڑو نووو + + + برٛازیٖلین کرٛوزیرو + + + بہامِیَن ڈالر + + + بوٗٹینیٖز نگُلٹرٛم + + + بٔرمیٖز کیٹ + + + بوٹٕسوانَن پُلا + + + بِلیروشِیَن نِو رِبٕل + + + بِلیروشِیَن رِبٕل + + + بِلِزی ڈالر + + + کینَڑِیَن ڈالر + + + کونٛگولیٖز فرٛیک + + + وِر یوٗرو + + + سُوِز فریک + + + وِر فرٛیک + + + چِلِن یوٗنِڑیدیٖز ڑِ فومیٹو + + + چِلِن پِسو + + + چینیٖز یَن رِنمِنبی + + + کولَمبِین پِسو + + + ِٖیوٗنِڑیڑ ڑِ ویلور رِیل + + + کوسٹا رِکَن کولَن + + + پرٛون سٔربِین ڈالر + + + چِکوسولوواک ہاڑ کوروٗنا + + + کیوٗبَن پِسو + + + کیپروٹ پَوُڑ + + + چیک کوریٖنا + + + مٔشرِقی جٔرمَن مارٕک + + + جٔرمَن مارٕک + + + ڈٔنِش کرٛون + + + ڈومِنِکَن پِسو + + + اٮ۪لجیرِیَن ڈیٖنار + + + اٮ۪سٹونِیَن کرٛون + + + اِجِپٹِیَن پَوُنڑ + + + رِٹریٖن نَفکا + + + سِپینِش پیسِٹا + + + اِتھوپِیَن بِر + + + یوٗرو + + + فِنِش مارکا + + + فِجین ڈالر + + + فیکلینٛڑِس آیلینٛڑ پونٛڑ + + + فرٛانسِسی فرٛیک + + + برطٲنوی پاونٛڑ سٹٔرلِنٛگ + + + جارجِیَن کیوٗپَن لَرِٹ + + + جارجِیَن لاری + + + گَنیٚیَن سٮ۪ڑی(۱۹۷۹–۲٠٠۷) + + + گَنیٚیَن سٮ۪ڑی + + + گِبریلٹَر پَاونٛڑ + + + گیمبِیاہُک دلاسی + + + گِنِیَن فرٛینٛک + + + گِنِیَن سِلی + + + اِکویٹورِیَل گِنِیَن اٮ۪کویٖل + + + گریٖسُک ڑرٛٮ۪کما + + + گواٹَمالَن قیوٗٹزَل + + + پورتگیٖزُک گِنی اٮ۪سکیوٗڑو + + + گِنی بِساوُک پٮ۪سو + + + گَیَنیٖزُک ڑالَر + + + حانٛگ کانٛگُک ڑالَر + + + حونڑورنُک لٮ۪مپیٖرا + + + کروایشنُک دیٖنار + + + کروایشنُک کوٗنا + + + حیشَنُک گوڑ + + + حَنگیرِیَن فورِنٛٹ + + + اِنڑونیشیاہُک رُپِیاہ + + + اَیرلینڑُک پاونٛڑ + + + اِزرٲیِلی پاونٛڑ + + + اِزرٲیِلی نٔوۍ شٮ۪قٕل + + + ہِندُستٲنۍ رۄپَے + + + ایٖراقُک دیٖنار + + + ایٖرانُک رِیال + + + اَیسلینٛڑُک کرٛونا + + + اِٹلیٖ یُک لیٖرا + + + جَمَیکاہُک ڑالَر + + + جَرڑینیاہُک دیٖنار + + + جاپانُک یَن + + + کٮ۪نیَن شِلِنٛگ + + + کِرگِستانُک سوم + + + کَمبوڑِیاہُک رِیال + + + کومورِیَن فرٛینٛک + + + جنوٗبی کورِیَن وَن + + + ساوتھ کورِیَن وَن + + + قُویتُک دیٖنار + + + کیمین ججیٖرُک ڑالَر + + + کزاکِستان ٹینٛج + + + لَوٹِیَن کِپ + + + لیبنیٖزُک پاونٛڑ + + + سری لَنکاہٕچ رۄپَے + + + لَیبیرِیَن ڑالَر + + + لِسوتھو لوٹی + + + لِتھوینِیَن لِٹاس + + + لِتھوینِیَن ٹٮ۪لوناس + + + لَکزٕمبورگِیَن کَنؤرٹِبٕل فرٛینٛک + + + لَکزٕمبورگِیَن فرٛینٛک + + + لَکزٕمبوگ فَینانشَل فرٛینٛک + + + لَتوِیَن لیٹس + + + لَتوِیَن رَبٕل + + + لِبیَن دیٖنار + + + موروکَن دِرہَم + + + موروکَن فرٛینٛک + + + مولڑووین لیوٗ + + + مٮ۪لٮ۪گیسی اٮ۪ریَری + + + مٮ۪لٮ۪گیسی فرٛینٛک + + + مٮ۪کَڑونِیَن دیٖنار + + + میلِیَن فرٛینٛک + + + مِیانما کیاٹ + + + مۄنگولِیَن ٹُگرِک + + + مٮ۪کانیٖز پَٹاکا + + + مورِٹینِیَن عوگیوٗیا + + + مالٹیٖزُک لیٖرا + + + مالٹیٖزُک پاونٛڑ + + + مورٮ۪شِیاہٕچ رۄپَے + + + مالدِیٖوِیَن رُفِیا + + + مٮ۪لیوِیَن کواچا + + + مٮ۪کسِکَن پٮ۪سو + + + مٮ۪کسِکَن سِلوَر پٮ۪سو (۱۸۶۱–۱۹۹۲) + + + مَلیشِیَن رِنٛگِٹ + + + موزیمبِکَن سکیوٗڑو + + + پرٛون موزیمبِکَن مٮ۪ٹِکَل + + + موزیمبِکَن مٮ۪ٹِکَل + + + نامِبِیَن ڑالَر + + + نَیجیرِیَن ڑالَر + + + نِکٮ۪راگُوٮ۪ن کورڑوبا + + + نِکٮ۪راگُوٮ۪ن کورڑوبا اورو + + + ڈَچ گِلڑَر + + + نورویٚیِنُک کرٛون + + + نیپالٕچ رۄپَے + + + نِوزیٖلینٛڑُک ڑالَر + + + اومِنی رِیال + + + پانامانِیَن بالبوز + + + پٔریوٗوِیَن اِنٛٹی + + + پٔریوٗوِیَن نیوٗاوز سولٕز + + + پٔریوٗوِیَن سول + + + نیوٗ پیپُعا گِنِیَن کیٖنا + + + پھِلِپایِٔن پٮ۪سو + + + پاکِستٲنۍ رۄپَے + + + پولِش زلوٹی + + + پولِش زلوٹی(۱۹۵٠–۱۹۹۵) + + + پورتُگیٖز اٮ۪سکیوٗڑو + + + پٮ۪رٮ۪گیوٗوَیَن گُعارانی + + + قطاری رِیال + + + رھوڑیشِیَن ڑالَر + + + اولڑ رومانِیَن لٮ۪یوٗ + + + رومانِیَن لٮ۪یوٗ + + + سٔربِیَن دیٖنار + + + رٔشیَن رَبٕل + + + رٔشیَن رَبٕل(۱۹۹۱–۱۹۹۸) + + + روانٛڑَن فرانٛک + + + سودیٖیُک رِیال + + + سولَمَن جٔزیٖرُک ڈالَر + + + پرون سوٗڈانُک دیٖنار + + + سوٗڈانُک پونٛڈ + + + پرون سوٗڈانُک پونٛڈ + + + سویٖڈِش کَرونا + + + سِنگاپورُک ڈالَر + + + سینٹ ہیلِنا پونٛڈ + + + سلووینُک ٹولَر + + + سلووَک کَرونا + + + سومالی شِلِنٛگ + + + سُریٖنامُک ڈالَر + + + سُریٖنام گِلدَر + + + سوویت روبٕل + + + سَلویدَرُک کولَن + + + سیٖریاہُک پونٛڈ + + + سوازی لِلَنگیٚنی + + + تھایھک بات + + + تاجکِستانُک رَبٕل + + + تاجِکتانُک سَمونی + + + تُکَمَنِستانُک مَنَت + + + ٹُنیشیاہُک دیٖنار + + + ٹونگَن پانٛگا + + + ٹیموریٚسو ایٚکیٖڈو + + + پرون تُرکِش لیرا + + + تُرکیہُک لیرا + + + ٹرِنہِ ڈیڈ تہٕ ٹوبیگو ڈالَر + + + نوٚو تیوانُک ڈالَر + + + تَنزانیاہُک شِلِنٛگ + + + یوٗکرینیاہُک ہرِوِنیا + + + یوٗکرینیاہُک کاربووَنیٹس + + + اُگاداہُک شِلِنٛگ(۱۹۶۶–۱۹۸۷) + + + اُگاداہُک شِلِنٛگ + + + یوٗ ایٚس ڈالَر + + + یوٗ ایٚس ڈالَر(پَگاہ) + + + یوٗ ایٚس ڈالَر(تَمی دًۄہ) + + + اُرگایَن پیٚسو یوٗنِڈیڈَس اِنڈیٚکسَس + + + اُرگایَن پیٚسو(۱۹۷۵–۱۹۹۳) + + + اُروٗگایَن پیٚسو + + + اُبیکِستان سوم + + + وینٕزوٗلیُک بولِوَر (۱۸۷۱–۲۰۰۸) + + + وینٕزوٗلیُک بولِوَر + + + وِیَنَمُک ڈانٛگ + + + وَنوٗاَتوٗ وَتوٗ + + + سَمون تَلا + + + سی ایٚف اے فرینک بی ایٖ اے سی + + + رۄپھ + + + سۄن + + + یوٗرپی کَمپوسِٹ یوٗنِٹ + + + یوٗرپی مونِٹَری یوٗنِٹ + + + یوٗرپی یوٗنِٹ آف ایٚکاوُنٛٹ (ایکس بی سی) + + + یوٗرپی یوٗنِٹ آف ایٚکاوُنٛٹ (ایکس بی ڈی) + + + مَشرِقی کیرِبِیَن ڈالَر + + + خاص ڈرایِنٛگ رایٹس + + + یوٗرپی کَرَنسی یوٗنِٹ + + + فریٚنچ گولڈ فرینک + + + فریٛنچ یوٗ اے سی فرینک + + + سی ایٚف اے فرینک بی سی ایٖ اے او + + + پُلیڈیَم + + + سی ایٚف پی فرینک + + + پلیٹِنَم + + + آر آے ایٚن ایٖ ٹی فَنٛڈ + + + ٹیٚسٹِنٛگ کَرَنسی کوڈ + + + اَنزٲنۍ یا نالَگہٕ ہار سِکہٕ + + + یَمنُک دیٖنار + + + یَمنُک رِیال + + + یوگوسلاوِیَن ہاڑ دیٖنار + + + یوگوسلاوِیَن نووِے دیٖنار + + + یوگوسلاوِیَن کَنؤٹِبٕل دیٖنار + + + ساوُتھ افریٖکاہُک رینڈ + + + زِمبابیُک کواچا (1968–2012) + + + زِمبابیُک کواچا + + + زایرِیَن نِو زایِر + + + زَیرُک ڈالَر + + + زِمبابِیُک ڈالَر + + + + + + + {0} دۄہ + {0} دۄہ + + + {0} گَنٹہٕ + {0} گٲنٛٹہٕ + + + {0} مِنَٹ + {0} مِنَٹ + + + {0} ریٚتھ + {0} ریٚتھ + + + {0} سیٚکَنٛڈ + {0} سیٚکَنٛڈ + + + {0} ہَفتہٕ + {0} ہَفتہٕ + + + {0} ؤری + {0} ؤری + + + + + + اۭں + نَہ + + + + diff --git a/library/Zend/Locale/Data/ks_Arab.xml b/library/Zend/Locale/Data/ks_Arab.xml new file mode 100755 index 000000000..9099f569a --- /dev/null +++ b/library/Zend/Locale/Data/ks_Arab.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + de Ääd + Affrika + Nood-Amärrika + Söd-Amärrika + Ozejaanije + Wäß-Affrika + Meddelammärrika + Oß-Affrika + Nood-Affrika + Meddel-Affrika + Söd-Affrika + Ammärrika + der Norde vun Amärrika + de Karribik + Oß-Aasije + Söd-Aasije + Söd-Oß-Aasije + Söd-Europpa + de Rejjohn öm Austraalije + Mellaneesije + de Rejohn vun Mikroneeseje + Polineesije + Aasije + Meddelaasije + Wäß-Aasije + Europpa + Oß-Europpa + Nood-Europpa + Wäß-Europpa + Lateinamärrika + Aßension + Andorra + Vereinschte Arrabesche Emmirate + Afjaanistahn + Antigwa un Barbuda + Anggwilla + Albaanije + Arrmeenije + de Nederlängsche Antille + Angjoola + der Södpol + Ajjentiinije + Ammerikaanesch Sammoha + Öösterisch + Austraalije + Aruba + de Ohland-Enselle + Asserbaidschahn + Boßnije un Herzegovina + de Ensel Barbados + Bangladesch + Bellje + Bukkinna-Faase + Bulljaarije + Bachrain + Burundi + dä Benin + de Zint Battälmi-Enselle + de Bermudas + Brunei + Bolliivije + de karribbesche Nederläng + Brasilije + de Bahamas + Buttaan + de Buvee-Ensel + Bozwaana + Wießrußland + Belize + Kanada + de Kokkos-Enselle + dä Konggo (Kinschasa) + de Demmokraatesche Republik Konggo + de Zäntraalaffrikaanesche Republik + dä Konggo (Brassavill) + de Republik Konggo + de Schweiz + Älfebeijn-Köß + de Älfebeijnköß + de Kuuk-Enselle + Schiile + Kammeruhn + Schiina + Kolumbije + de Klipperton-Ensel + Kostarika + Kuba + de kapvärdesche Enselle + Curaçao + de Weihnaachs-Ensel + Züppere + de Tschäschei + Doütschland + de Diego-Garcia-Ensel + Dschibutti + Dänemark + Dominnika + de Dommenekaanesche Reppublik + Alljeerije + Ze'uta un Meliija + Äkwador + Äßland + Äjüpte + Wäß-Sahara + Äritreja + Schpaanije + Ättijoopije + de Europäjesche Unijon + Finnland + de Fidschi-Endelle + de Falkland-Enselle + de malleviinesche Enselle + Mikroneesije + de Färrör-Enselle + Frankrisch + Jabuhn + Jruußbrettannije + Jruußbrettannije + Jrenaada + Jeorrjije + Franzüüsesch Jujaana + Jöönsei + Jaana + Jibralltaa + Jröhnland + Jambija + Jinneha + Juadelupp + Äquatorial Jineeja + Jriescheland + Söd-Jeorjie un de södlijje Botteramms-Enselle + Juwatemaala + Juham + Jinneha_Bißau + Jujaana + Hongkong + Hongkong + de Heart Ensel un de McDonald-Enselle + Honduras + Krowazije + Ha'itti + Unjann + de Kannaresche Enselle + Indoneesije + Irrland + Ißraäl + de Ensel Män + Indije + Brettesche Besezunge em indesche Oozejahn + Irak + Persije + Ißland + Itaalije + Jööseh + Jammaika + Jordaanije + Japan + Keenija + Kirrjiisije + Kambodscha + Kiribati + de Kommoore + Zint Kitts un Nevis + Nood-Koreja + Söd-Koreja + Kuweit + de Kaiman-Enselle + Kassakstahn + La'os + Lebbannon + de Ensel Zint-Lutscha + Lischteschtein + Sri Lanka + Libeerija + Lesooto + Littaue + Luxembursch + Lätland + Libbije + Marokko + Monakko + Moldaavije + et Monteneejro + de Zint-Määtes-Ensel + Maddajaska + de Machschall-Enselle + Mazedoonije + de vörmaals ens jugoßlaawesch jewääse Republik Mazedoonije + Maali + Birma + Mongjolei + Makau + Makau + de nöödlijje Marijanne-Enselle + Machtinik + Mautitaanije + Mongßerrat + Malta + Maurizijus + Mallediive + Malawi + Mäxiko + Malaisije + Mosambik + Namiibije + Neuschottland + Nijer + de Noofok-Ensel + Nikaraagua + Nikaraaguwa + de Nederläng + Norrweeje + Nepall + Nauru + Niue + Neuseeland + Oman + Pannama + Perruh + Franzüüsesch Pollineesije + Papuwa Neujineeja + Fillipiine + Pakistahn + Pole + Zint Pjäär un Mikelong + de Pitkärn-Ensel + Pochtoriko + Palästina + Pochtojall + Pallau + Parraguwai + Kataa + Ozejaanije ußerhallef + Rehunjohn + Romäänije + Särbije + Rußland + Ruanda + Saudi Arraabije + de Solomone-Enselle + de Seischälle + Noodsudahn + Schweede + Singjapuur + de Ensel Zint Hellena + ẞloveenije + de Enselle Svalbard un Jan Mayen + ẞlovakei + Sjärra Lejone + San-Marino + der Sennejall + Somaalije + Sürinamm + Södsudahn + Zint Tommeh un Printschipe + Äl Slavadoor + Zint Maarten + Sürije + ẞwaasiland + Tristan da Cunja + de Enselle Turks un Kaikos + der Tschadd + Franzüüsesche Södsee-Enselle + Toojo + Tailand + Tadschikistahn + Tokelau + Oß-Timor + Turkmenistahn + Tuneesije + Tongga + de Törkei + Trinidad un Tobääjo + Tuvalu + Taiwan + Tansanija + de Ukra'iine + Ujanda + de Vereineschte Schtaate vun Amärrika ier ußerhallef jelääje Enselsche + de vereineschte Schtaate vun Ammärrika + USA + Urrujwai + Ußbeekistahn + der Vattikahn + Zint Vinzänz un de Jrenadines-Enselle + Venezuela + de brettesche Juffer-Enselle + de ammärrikahnesche Juffer-Enselle + Vijätnamm + Vanuatu + Wallis un Futuna + Sammoha + Kosovo + Jämme + Majott + de Republik Södaffrika + Sambija + Simbabwe + - Jääjend onbikannt - + + + Schriefwiiß vun 1901 aff + resijanesch schtandatt Schriefwiiß vun 1994 + Schriefwiiß vun 1996 aff + späätmeddelfranzüüsesch vör 1606 + fröhneufranzüüsesch aff 1694 + akademesche Schriefwiiß vun 1959 + de lateinesche Ömschreff ALA-LC vun 1997 + oß-armeensch + wäß-armeenesch + eijheijtlesch törkesch lateijnesch Allfabeet + zint jorjo'sche uder bila'sche reijanesche Dijaläk + boontlingsche Dijaläk + IPA-Loutschreff + UPA-Loutschreff + De Lateinesche Ömschreff noh Hepburn + Huhnorrweejesch + jemeinsam widderbeläf kornesche Schriefwiiß + lipovazesch resijanesche Dijaläk + monnotoonesch + ndyukanesche Dijaläk + natisonesche Dijaläk + gniva'sche uder njiva'sche reijanesche Dijaläk + oseacco'sche uder osojanesche reijanesche Dijaläk + pamakanesche Dijaläk + Pinjin-Ömschreff + pollütoonesch + neu opjelate Schriefwiiß + resijanesche Dijaläk + schottesche Dijaläk + scouse Dijaläk + stolvizanesche uder solbizanesch reijanesche Dijaläk + Taraskijeviza-Schriefwiiß + eijheijtlesch Schriefwiiß + eijheijtlesch, neu opjelate Schriefwiiß + valenzijaanesche Dijaläk + lateijnesche Ömschreff noh Wade-Giles + + + dä Kalländer + de Reijefollsch zom Zotiere + de Zoot Jeld + de Nummere + + + araabesche un indesche Zeffere + ußjedehnt araabesche un indesche Zeffere + armeenesche Zahle + klein jeschrevve armeenesche Zahle + bängjaalesche Zeffere + zoteert nohm tradizjonäll schineesesch Big5 + buddistesche Kaländer + schineesesche Kaländer + kopttesche Kaländer + Devanagari-Zeffere + zoteert wi em Wööterbooch + standattmääßesch zoteert nohm Unicode + ätejoopesche Zahle + ätejoopesche Kaländer + ätejoopesche Amete Alem Kaländer + janz breede Zeffere + zoteert nohm eijfacher schineesesch GB2312 + jeorjeesche Zahle + jrejorejaanesche Kaländer + jriischesche Zahle + klein jeschrevve jriischesche Zahle + Jujarati-Zeffere + Jurmukhi-Zeffere + schineesesche Zehnerzahle + eijfache schineesesche Zahle + eijfache schineesesche Finanzzahle + tradizjonälle schineesesche Zahle + tradizjonälle schineesesche Finanzzahle + hebräjesche Zahle + jüdesche Kaländer + indesche Nazjonahl-Kaländer + ißlaamesche Kaländer + wältlesche islaamesche Kaländer + japaanesche Kaländer + japanesche Zahle + japaanesche Finazzahle + Khmer-Zeffere + Kannada-Zeffere + laootesche Zeffere + wäßlejje Zeffere + Malayalam-Zeffere + mongjoolesche Zeffere + Myanmar-Zeffere + Oriya-Zeffere + pärsesche Kaländer + zoteert wi em Tollefoonbooch + zoteert noh de Pinjin Ömschreff vum Schineesesch + rotschineesesche Kaländer + römesche Zahle + klein jeschrevve römesche Zahle + Söhke + Schtandatt + zoteert noh de Stresche vum tradizjonäll schineesesch + tradizjonälle tamilesche Zahle + tamiilesche Zeffere + Teluju-Zeffere + thailändesche Zeffere + tibetaanesche Zeffere + tradizjonäll zoteert + zoteert noh de Radikaale un Stresche vum Schineesesch + + + SI + änglesch + ammärekaanesch + + + de Schprooch afjekööz met „{0}“ + de Schreff afjekööz met „{0}“ + de Jääjend afjekööz met „{0}“ + + + + [a å ä æ b c d e ë ė f g h i j k l m n o ö œ p q r s ß t u ů ü v w x y z] + [á à ă â å ä ã ā æ ç é è ĕ ê ë ē ğ í ì ĭ î ï ī ij ı ł ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [_ ‐ – — ⸗ , ; \: ! ? . … ' ‘ ‚ " “ „ ( ) \[ \] \{ \} § @ * / \& # % † ‡ ° < = > ~ \$] + + + + + + + + + + + + + + EEEE, d. MMMM y G + + + + + + + + + EEEE, 'dä' d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM. y G + + + + + d. M. y GGGGG + + + + + + d + E 'dä' d. + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + E d. M. + LLL + d. MMM + E d. MMM + d. MMMM + mm:ss + y + Y-MM + y-MM-dd + E y-MM-dd + MMM y + d. MMM. y + E d. MMM. y + MMMM y + QQQy + QQQQ y + + + + d–d + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + M–M + + + dd. – dd. MM. + + + LLL–LLL + + + y–y + + + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + + + MMM–MMM y + MMM. y – MMM. y + + + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + Jan + Fäb + Mäz + Apr + Mäi + Jun + Jul + Ouj + Säp + Okt + Nov + Dez + + + Jannewa + Fäbrowa + Määz + Aprell + Mäi + Juuni + Juuli + Oujoß + Septämber + Oktoober + Novämber + Dezämber + + + + + Jan. + Fäb. + Mäz. + Apr. + Mäi + Jun. + Jul. + Ouj. + Säp. + Okt. + Nov. + Dez. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Su. + Mo. + Di. + Me. + Du. + Fr. + Sa. + + + Su + Mo + Di + Me + Du + Fr + Sa + + + Sunndaach + Moondaach + Dinnsdaach + Metwoch + Dunnersdaach + Friidaach + Samsdaach + + + + + S + M + D + M + D + F + S + + + Su + Mo + Di + Me + Du + Fr + Sa + + + + + + + 1.Q. + 2.Q. + 3.Q. + 4.Q. + + + 1. Quattaal + 2. Quattaal + 3. Quattaal + 4. Quattaal + + + + + + + v.m. + n.m. + + + Uhr vörmiddaachs + Uhr nommendaachs + + + + + Vormittag + Nachmittag + + + + + + vür Chrestus + vür der gewöhnlichen Zeitrechnung + noh Chrestus + der gewöhnlichen Zeitrechnung + + + v. Chr. + v. d. Z. + n. Chr. + d. Z. + + + vC + vdZ + nC + dZ + + + + + + EEEE, 'dä' d. MMMM y + + + + + d. MMMM y + + + + + d. MMM. y + + + + + d. M. y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E 'dä' d. + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + E d. M. + LLL + d. MMM + E d. MMM + d. MMMM + mm:ss + y + Y-MM + y-MM-dd + E y-MM-dd + MMM y + d. MMM. y + E d. MMM. y + MMMM y + QQQy + QQQQ y + + + + d–d + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + M–M + + + dd. – dd. MM. + + + LLL–LLL + + + y–y + + + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + + + MMM–MMM y + MMM. y – MMM. y + + + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + E y-MM-dd – E y-MM-dd + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Era + + + Johr + läz Johr + diese Johr + nächste Johr + + + Mohnd + lätzde Mohnd + diese Mohnd + nächste Mohnd + + + Woch + läz Woch + di Woch + nächste Woche + + + Daach + vörjestere + jestere + hück + morje + övvermorje + + + Wochedaach + + + Sunndaach letzte Woche + Sunndaach diese Woche + Sunndaach nächste Woche + + + Moondaach letzte Woche + Moondaach diese Woche + Moondaach nächste Woche + + + Dinnsdaach letzte Woche + Dinnsdaach diese Woche + Dinnsdaach nächste Woche + + + Metwoch letzte Woche + Metwoch diese Woche + Metwoch nächste Woche + + + Dunnersdaach letzte Woche + Dunnersdaach diese Woche + Dunnersdaach nächste Woche + + + Friidaach letzte Woche + Friidaach diese Woche + Friidaach nächste Woche + + + Samsdaach letzte Woche + Samsdaach diese Woche + Samsdaach nächste Woche + + + Daachteil + + + Schtund + + + Menutt + + + Sekond + + + Zickzohn + + + + +HH:mm;-HH:mm + GMT{0} + Zick vun {0} + Summerzick vun {0} + Schtandattzick vun {0} + {1} ({0}) + + - weße mer nit - + + + Tiraana + + + Eriwan + + + Schoowa-Schtazjohn op dä Ensel Onjul + + + Wostok + + + Dumont-d'Urville-Schtazjohn + + + Wien + + + Brüssel + + + Zint Barthélemy + + + Zint John's + + + Züresch + + + Urrumptschi + + + Schanghai + + + Koßtaricka + + + Kap Verde + + + Nikosija + + + Prag + + + Kopenharen + + + Jalappajos + + + Juayaquil + + + Kaijro + + + Kannaare + + + Färör + + + + Jrußbretannije sing Summerzick + + + + Tiblis + + + Jöönsei + + + Jibraltaa + + + Athen + + + Juam + + + Hongkong + + + Sagreb + + + + Irland sing Summerzick + + + + Ensel Män + + + Bagdad + + + Rom + + + Jöösei + + + Bischkek + + + Pnom Penh + + + Zint Kitts + + + Aqtöbe + + + Qysylorda + + + Santa Lutschiija + + + Luxembursch + + + Riija + + + Ranjun + + + Ulan Bator + + + Malldive + + + Schtadt Mexiko + + + Windhuk + + + Laajos + + + Warschau + + + Pitkern + + + Jaasa + + + Azoore + + + Lissabon + + + Bukarest + + + Beljrad + + + Kalinninjraad + + + Moskau + + + Woljojrad + + + Jekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Wladiwostok + + + Kamschattka + + + Rijad + + + Singjapuur + + + Zint Helena + + + Damaskus + + + Duschanbe + + + Asshgabat + + + Istambul + + + Uschjorod + + + Saporischschja + + + Honululu + + + Jakutat + + + Beulah en Nood Dakota + + + Neu Salem en Nood Dakota + + + Zenter en Nood Dakota + + + Vincennes en Indiana + + + Petersburg en Indiana + + + Tell City en Indiana + + + Knox en Indiana + + + Winamac en Indiana + + + Marengo en Indiana + + + Vevay en Indiana + + + Monticello en Kentucky + + + Taschkent + + + der Vatikahn + + + Zint Vintschänt + + + Zint Thomas + + + Sigong (Ho-Tschi-Minh-Schtadt) + + + + Zentraal-Affrekaanesche Zigg + + + + + Oß-Affrekaanesche Zigg + + + + + Söd-Affrekaanesche Zigg + + + + + Wäß-Affrekaanesche Zigg + Jewöhnlijje Wäß-Affrekaanesche Zigg + Wäß-Affrekaanesche Sommerzigg + + + + + de Azore ier Zick + de Azore ier jewöhnlijje Zick + de Azore ier Summerzick + + + + + Kapvärdejaansche Zigg + Jewöhnlijje Kapvärdejaansche Zigg + Kapvärdejaansche Sommerzigg + + + + + Meddel-Europpa sing Zick + Meddel-Europpa sing jewöhnlijje Zick + Meddel-Europpa sing Summerzick + + + MEZ + MEZ + MESZ + + + + + Oß-Europpa sing Zick + Oß-Europpa sing jewöhnlijje Zick + Oß-Europpa sing Summerzick + + + OEZ + OEZ + OESZ + + + + + Weß-Europpa sing Zick + Weß-Europpa sing jewöhnlijje Zick + Weß-Europpa sing Summerzick + + + WEZ + WEZ + WESZ + + + + + Greenwich sing Standat-Zick + + + + + dem Indische Ozejan sing Zick + + + + + Zigg vun Mauritius + Jewöhnlijje Zigg vun Mauritius + Summerzigg vun Mauritius + + + + + Zigg vun Reunion + + + + + Zigg vun de Seischälle + + + + + + + , +   + ; + % + + + + ×10^ + + + ¤¤¤ + + + + + #,##0.### + + + + + 0 Dousend + 0 Dousend + 0 Dousend + 00 Dousend + 00 Dousend + 00 Dousend + 000 Dousend + 000 Dousend + 000 Dousend + 0 Milljuhne + 0 Million + 0 Milljuhne + 00 Milljuhne + 00 Milljuhne + 00 Millionen + 000 Milljuhne + 000 Milljuhne + 000 Millionen + 0 Milljard + 0 Milliarde + 0 Milljarde + 00 Milljarde + 00 Milljarde + 00 Milliarden + 000 Milljarde + 000 Milliarde + 000 Milliarden + 0 Billjuhn + 0 Billjuhn + 0 Billjuhn + 00 Billjuhn + 00 Billion + 00 Billionen + 000 Billjuhn + 000 Billion + 000 Billionen + + + + + 0 tsd + 0 tsd + 0 tsd + 00 tsd + 00 tsd + 00 tsd + 000 tsd + 000 tsd + 000 tsd + 0 Mio + 0 Mio + 0 Mio + 00 Mio + 00 Mio + 00 Mio + 000 Mio + 000 Mio + 000 Mio + 0 Mrd + 0 Mrd + 0 Mrd + 00 Mrd + 00 Mrd + 00 Mrd + 000 Mrd + 000 Mrd + 000 Mrd + 0 Bio + 0 Bio + 0 Bio + 00 Bio + 00 Bio + 00 Bio + 000 Bio + 000 Bio + 000 Bio + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + + + + de vereineschte arraabesche Emiraate ier Dirham + + + Afjahni + + + albaanesche Lek + + + armeenesche Dram + + + neederlängsch antillesche Jullde + + + angjolaanesche Kwansa + + + ajentiinesche Peeso + ajentiinesche Peesos + ajentiinesche Peesos + ajentiinesche Peesos + + + austraalesche Dollaa + + + arubesche Florin + + + Asserbaidschaani Manat (1993–2006) + + + Asserbaidschaani Manat + + + ömtuuschbaa Mark us Boßnije un dä Hächejovvina + öpmtuuschbaa Mark us Boßnije un dä Hächejovvina + öpmtuuschbaa Mark us Boßnije un dä Hächejovvina + öpmtuuschbaa Mark us Boßnije un dä Hächejovvina + + + Barbados-Dollaa + + + Taka us Bangladäsch + + + buljaaresche Lev + + + Bachrainesche Denaa + + + burundesche Frang + + + Bermuuda-Dollaa + + + Brunei-Dollaa + Brunei-Dollaaa + Brunei-Dollaaa + Brunei-Dollaaa + + + Bollivijano + Bollivijano + Bollivijano + Bollivijano + + + brasilljaanesche Real + + + bahama'sche Dollaa + + + bhutanesesche Ngultrum + Bhutanesesche Ngultrum + Bhutanesesche Ngultrum + Bhutanesesche Ngultrum + + + Pula us Bozwaana + + + wiißrußesche Rubel + + + belizjaanesche Dollaa + Belizjaanesche Dollaa + Belizjaanesche Dollaa + Belizjaanesche Dollaa + + + kannaadesche Dollaa + + + kongjoleesesche Frang + + + schweijzer Fränkli + + + schileenesche Peeso + schileenesche Peesos + schileenesche Peesos + schileenesche Peesos + + + schineesesche Yuan Renminbi + + + kolumbesche Peso + kolumbesche Pesos + kolumbesche Pesos + kolumbesche Pesos + + + koßtarikaanesche Colón + Kaßtarikaanesche Colón + Kaßtarikaanesche Colón + Kaßtarikaanesche Colón + + + ömtuuschbaa kubaanesche Pesos + ömtuuschbaa kubaanesche Pesos + ömtuuschbaa kubaanesche Pesos + ömtuuschbaa kubaanesche Pesos + + + kubaanesche Peesos + kubaanesche Peesos + kubaanesche Peesos + kubaanesche Peesos + + + kapverdesche Eskuudos + kapverdesche Eskuudos + kapverdesche Eskuudos + kapverdesche Eskuudos + + + tschäschesche Kruhne + tschäschesche Kruhne + tschäschesche Kruhne + tschäschesche Kruhne + + + Frang uß Dschibuti + + + dänesche Kruhne + dänesche Kruhne + dänesche Kruhne + dänesche Kruhne + + + dommenikaanesche Peesos + dommenikaanesche Peesos + dommenikaanesche Peeso + dommenikaanesche Peesos + + + aljeresche Denaa + + + Äßnesche Kruhne + + + äjiptesche Pongk + + + Nafka uß Erritreja + + + ätejoopesche Birr + + + Euro + + + Fidschi-Dollaa + + + Pongk vun de Falkland-Enselle + + + brittesche £ + + + jeorjesche Lari + jeorjesche LAri + jeorjesche LAri + jeorjesche LAri + + + janaaesche Cedi + + + jibraltaa'sche Pongk + + + jambesche Dalasi + + + Jineea-Frang + Jineea-Franke + Jineea-Franke + Jineea-Franke + + + juatemalesche Quetzal + + + Juaana-Dollaa + + + Hongkong-Dollaa + + + hondureanesche Lempira + + + krowaatesche Kuna + + + haiitesche Gourde + + + unjarresche Forint + + + indoneesesche Ruupije + + + ißraeelesche Schekel + + + indesche Ruupije + + + iraakesche Denaa + + + persesche Rial + + + ißländesche Kruhne + ißländesche Kruhne + ißländesche Kruhne + ißländesche Kruhne + + + jamaikaanesche Dollaa + + + Jordaanesche Dollaa + + + japaanesche Jen + + + Kenjaanesche Schillinge + Kenjaanesche Schillinge + Kenjaanesche Schillinge + Kenjaanesche Schillinge + + + kirjiisesche Som + + + kambodschaanesche Riel + + + kommooresche Frang + + + noodkorejaansche Won + + + söödkorejaansche Won + + + kuwaitesche Denaa + + + Kaimann-Dollaa + + + kasakesche Tenge + kasakstaanesche Tenge + kasakstaanesche Tenge + kasakstaanesche Tenge + + + loaatesche Kip + + + libaneesesche Pongk + + + schrilankesche Ruupije + schri-lankesche Ruupije + schri-lankesche Ruupije + schri-lankesche Ruupije + + + liberijaanesche Dollaa + + + lesoothesche Loti + + + littouesche Litas + + + lättesche Lats + + + libesche Denaa + + + marrokaanesche Dirhamm + + + moldaavesche Leu + + + madajaskesche Ariary + + + mazedoonesche Denaa + + + burmeesesche Kyat + + + mongjoolesche Tugrik + + + makaneesesche Pataca + + + mauretanesche Ouguiya + + + maurizjahnesche Ruupije + + + mallediivesche Rufiyaa + + + malaawesche Kwache + + + mexekaanesche Peeso + mexekaanesche Peeso + mexekaanesche Peeso + mexekaanesche Peeso + + + malaisesche Ringgit + + + mosambikaanesche Metical (1980–2006) + + + mossambikaanesche Metical + + + namiibesche Dollaa + + + nijerijaanesche Naira + + + nikarajaanesche Córdoba + nikarajaanesche Córdoba + nikarajaanesche Córdoba + nikarajaanesche Córdoba + + + norrweejesche Kruhne + norrweejesche Kruhne + norrweejesche Kruhne + norrweejesche Kruhne + + + nepaleesesche Ruupije + + + neuseeländesche Dollaa + + + ommaanesche Rijal + + + pannameesesche Balboa + pannameesesche Balboa + pannameesesche Balboa + pannameesesche Balboa + + + perruaanesche Nuevo Sol + + + papua neujinejaanesche Kina + + + fillipiinesche Pesos + fillipiinesche Pesos + fillipiinesche Pesos + fillipiinesche Pesos + + + pakestaanesche Ruupije + + + polnesche Złoty + polnesche Złoty + polnesche Złoty + polnesche Złoty + + + parajuaanesche Juarani + + + kataaresche Rijal + + + romäänesche Leu (1952–2006) + + + romäänesche Leu + + + särbesche Denaare + + + russesche Ruubel + + + ruandesche Frang + + + saudesche Rijal + + + solomonesche Dollaa + + + seischellesche Ruupije + + + sudaneesesche Pongk + + + schweedesche Kruhne + schweedesche Kruhne + schweedesche Kruhne + schweedesche Kruhne + + + singjapurejaanesche Dollaa + + + Zint-Hellena-Pongk + + + ßlovaakesche Kruhne + + + ẞjärra-lejoneesesche Leone + + + somaalesche Schillenge + somaalesche Schillenge + somaalesche Schillenge + somaalesche Schillenge + + + sürinameesesche Dollaa + + + södsudaneesesche Pongk + södsudaneesesche Pongk + södsudaneesesche Pongk + södsudaneesesche Pongk + + + Dobra vun São Tomé un Príncipe + Dobra vun São Tomé un Príncipe + Dobra vun São Tomé un Príncipe + Dobra vun São Tomé un Príncipe + + + asalvadorejaanesche Cosan + + + süüresche Pund + + + swasiländesche Lilangeni + + + tailändesche Baht + + + tadschikißtaanesche Somoni + + + turkmeneßtaanesche Manat (1993–2009) + + + turkmeneßtaanesche Manat + turkmeneßtaanesche Manat + turkmeneßtaanesche Manat + turkmeneßtaanesche Manat + + + tuneesesche Denaa + + + tongjanes Paʻangache + + + törkesche Liire + + + Dollaa uß Trinidad un Tobääjo + Dollaa uß Trinidad un Tobääjo + Dollaa uß Trinidad un Tobääjo + Dollaa uß Trinidad un Tobääjo + + + neu taiwaneesesche Dollaa + + + tansaanesche Schillenge + tansaanesche Schillenge + tansaanesche Schillenge + tansaanesche Schillenge + + + ukraijnesche Hryvnia + + + ujandesche Schillenge + ujandesche Schillenge + ujandesche Schillenge + ujandesche Schillenge + + + ammärrikaanesche Dollaa + + + urrujuwaische Peeso + urrujuwaische Peeso + urrujuwaische Peeso + urrujuwaische Peeso + + + ußbeekesche Som + + + venezuelaanesche Bolívar + + + vijätnammeesesche Dong + + + vanuatesche Vatu + + + samowaanesche Tala + + + Kmmeruhner Frang + + + Sellver + + + Jold + + + oß-karribbesche Dollaa + + + franzüüsesche Joldfranke + + + Frang uß de Älfebeinköß + + + Palladijum + + + polineesesche Frang + polineesesche Frang + polineesesche Frang + polineesesche Frang + + + Plaatin + + + Währong zum Prööfe + + + onbikannte Währong + + + jemenitesche Rijal + + + södaffrekaanesche Rand + + + sambesche Kwacha (1968–2012) + + + sambesche Kwacha + + + simbabwesche Dollaa (1980–2008) + + + simbabwesche Dollaa (2009) + + + + + + + {0} pro {1} + + + {0}-fache Erdbeschleunigung + {0}-fache Erdbeschleunigung + {0}-fache Erdbeschleunigung + + + {0} Winkelmenutte + {0} Winkelmenutte + {0} Winkelmenutte + + + {0} Winkelsekunde + {0} Winkelsekunde + {0} Winkelsekunde + + + {0} Graad + {0} Graad + {0} Graad + + + {0} angloamerikanischen Acre + {0} angloamerikanische Acre + {0} angloamerikanischen Acre + + + {0} hektar + {0} hektar + {0} hektar + + + {0} Quadratvoss + {0} Quadratvoss + {0} Quadratvoss + + + {0} Quadratkilometer + {0} Quadratkilometer + {0} Quadratkilometer + + + {0} Quadratmeter + {0} Quadratmeter + {0} Quadratmeter + + + {0} englischen Quadratmeilen + {0} englische Quadratmeile + {0} englischen Quadratmeilen + + + {0} Dääsch + {0} Dääsch + {0} Dääsch + + + {0} Schtunde + {0} Schtunde + {0} Schtunde + + + {0} Millisekunde + {0} Millisekunde + {0} Millisekunde + + + {0} Menutte + {0} Menutte + {0} Menutte + + + {0} Mohnde + {0} Mohnde + {0} Mohnde + + + {0} Sekunde + {0} Sekunde + {0} Sekunde + + + {0} Woche + {0} Woche + {0} Woche + + + {0} Johre + {0} Johre + {0} Johre + + + {0} Zentimeter + {0} Zentimeter + {0} Zentimeter + + + {0} Voss + {0} Voss + {0} Voss + + + {0} Dumm + {0} Dumm + {0} Dumm + + + {0} Kilometer + {0} Kilometer + {0} Kilometer + + + {0} Meter + {0} Meter + {0} Meter + + + {0} englischen Meilen + {0} englische Meile + {0} englischen Meilen + + + {0} Millimeter + {0} Millimeter + {0} Millimeter + + + {0} Pikometer + {0} Pikometer + {0} Pikometer + + + {0} Gramm + {0} Gramm + {0} Gramm + + + {0} Kilogramm + {0} Kilogramm + {0} Kilogramm + + + {0} Unzen + {0} Unze + {0} Unzen + + + {0} Pfund + {0} Pfund + {0} Pfund + + + {0} Pferdestärken + {0} Pferdestärke + {0} Pferdestärken + + + {0} Kilowatt + {0} Kilowatt + {0} Kilowatt + + + {0} Watt + {0} Watt + {0} Watt + + + {0} Hektopascal + {0} Hektopascal + {0} Hektopascal + + + {0} Dumm Quecksilbersäule + {0} Dumm Quecksilbersäule + {0} Dumm Quecksilbersäule + + + {0} Millibar + {0} Millibar + {0} Millibar + + + {0} Kilometer pro Schtunde + {0} Kilometer pro Schtunde + {0} Kilometer pro Schtunde + + + {0} Meter pro Sekunde + {0} Meter pro Sekunde + {0} Meter pro Sekunde + + + {0} englischen Meilen pro Schtunde + {0} englische Meile pro Schtunde + {0} englischen Meilen pro Schtunde + + + {0} Graad Celsius + {0} Graad Celsius + {0} Graad Celsius + + + {0} Graad Fahrenheit + {0} Graad Fahrenheit + {0} Graad Fahrenheit + + + {0} Kubikkilometer + {0} Kubikkilometer + {0} Kubikkilometer + + + {0} englischen Kubikmeilen + {0} englische Kubikmeile + {0} englischen Kubikmeilen + + + {0} Liter + {0} Liter + {0} Liter + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + + + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + + + {0} s + {0} s + {0} s + + + {0} cm + {0} cm + {0} cm + + + {0} Voss + {0} Voss + {0} Voss + + + {0} Dumm + {0} Dumm + {0} Dumm + + + {0} km + {0} km + {0} km + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} Unzen + {0} Unze + {0} Unzen + + + {0} Pfund + {0} Pfund + {0} Pfund + + + {0} PS + {0} PS + {0} PS + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + {0}G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0}ha + {0}ha + {0}ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0}km² + {0}km² + {0}km² + + + {0}m² + {0}m² + {0}m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0}d + {0}d + {0}d + + + {0}h + {0}h + {0}h + + + {0}ms + {0}ms + {0}ms + + + {0}m + {0}m + {0}m + + + {0}s + {0}s + {0}s + + + {0}cm + {0}cm + {0}cm + + + {0} Voss + {0} Voss + {0} Voss + + + {0} Dumm + {0} Dumm + {0} Dumm + + + {0}km + {0}km + {0}km + + + {0}m + {0}m + {0}m + + + {0} mi + {0} mi + {0} mi + + + {0}mm + {0}mm + {0}mm + + + {0}pm + {0}pm + {0}pm + + + {0}g + {0}g + {0}g + + + {0}kg + {0}kg + {0}kg + + + {0} Unzen + {0} Unze + {0} Unzen + + + {0} Pfund + {0} Pfund + {0} Pfund + + + {0}PS + {0}PS + {0}PS + + + {0}kW + {0}kW + {0}kW + + + {0}W + {0}W + {0}W + + + {0}hPa + {0}hPa + {0}hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0}mbar + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0}km³ + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0}L + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} un {1} + {0} un {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + jo:joh:joo:j + nä:nää:näh:n + + + + diff --git a/library/Zend/Locale/Data/ksh_DE.xml b/library/Zend/Locale/Data/ksh_DE.xml new file mode 100755 index 000000000..b2e8be3e9 --- /dev/null +++ b/library/Zend/Locale/Data/ksh_DE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/kw.xml b/library/Zend/Locale/Data/kw.xml new file mode 100755 index 000000000..95152cb8d --- /dev/null +++ b/library/Zend/Locale/Data/kw.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + Arabek + Kembrek + Danek + Almaynek + Sowsnek + Spaynek + Baskek + Frenkek + Wordhonek + Italek + Japanek + kernewek + Iseldiryek + Portyngalek + Portyngalek Brasil + Russek + Kantonek + Chinek + Chinek sempel + Chînek Tradycyonal + + + + + + Brasil + China + Almayn + Pow Frenk + Rywvaneth Unys + Eynda + Itali + Japan + Russi + Statys Unys + + + kalans + + + Kalans gregorek + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + + + Gen + Whe + Mer + Ebr + Me + Efn + Gor + Est + Gwn + Hed + Du + Kev + + + Mys Genver + Mys Whevrel + Mys Merth + Mys Ebrel + Mys Me + Mys Efan + Mys Gortheren + Mye Est + Mys Gwyngala + Mys Hedra + Mys Du + Mys Kevardhu + + + + + + + Sul + Lun + Mth + Mhr + Yow + Gwe + Sad + + + De Sul + De Lun + De Merth + De Merher + De Yow + De Gwener + De Sadorn + + + + + + + a.m. + p.m. + + + + + + RC + AD + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + Bledhen + + + Mis + + + Seythun + + + Dedh + + + Dedh an seythun + + + AM/PM + + + Eur + + + + + Ankoth + + + + CET + CET + CEST + + + + + EET + EET + EEST + + + + + WET + WET + WEST + + + + + GMT + + + + + + + + + ¤#,##0.00 + + + + + + Euro + + + + + diff --git a/library/Zend/Locale/Data/kw_GB.xml b/library/Zend/Locale/Data/kw_GB.xml new file mode 100755 index 000000000..277caa5b4 --- /dev/null +++ b/library/Zend/Locale/Data/kw_GB.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ky.xml b/library/Zend/Locale/Data/ky.xml new file mode 100755 index 000000000..e2a29bde4 --- /dev/null +++ b/library/Zend/Locale/Data/ky.xml @@ -0,0 +1,4961 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + абхазча + африкаанча + амхарча + Арабча + азыркы араб адабий тилинде + ассамча + азербайжанча + беларусча + болгарияча + бангладешче + тибетче + бретон + боснияча + каталанча + чех тили + уелшче + датча + немисче + австриялык германча + швейцариялык таза германча + грекче + англисче + австралиялык англисче + канадалык англисче + британча англисче + британча англисче + америкалык англисче + америкалык англисче + эсперанто + испанча + латын америкалык испанча + европалык испанча + мексикалык испанча + эстончо + баскча + Фарзча + финче + тагалча + фижиче + фароэче + французча + канадалык французча + швейцариялык французча + батыш фризче + ирландча + галисияча + гуараш + швейцариялык германча + гужаратча + хаусача + гаваиче + еврейче + индусча + хорватча + гаитиче + венгрияча + армянча + индонезияча + игбочо + исландча + италиянча + япончо + жаванизче + грузинче + казакча + кмерче + каннадача + корейче + кашмирче + курт + кыргызча + латынча + Люксембургча + лаочо + литвача + латвияча + малагасча + маориче + македонияча + малайаламча + маратиче + малайча + малтизче + бурмача + норвежче букмалча + непалча + голландча + фламандча + норвегияча + норвежче + ория + пунжабиче + полякча + пашто + португалча + бразилиялык португалча + европалык португалча + кечуача + романшча + румынияча + орусча + санскритче + синдхиче + серб-хорват + сингалача + словакча + словенче + сомаличе + албанча + сербче + сесото + сунданча + шведче + суахиличе + тамилче + телугуча + тажикче + тайча + тигриниача + түркмөн + клингончо + тонгача + туркчо + татарча + тви + уйгурча + украинче + белгисиз тилде + урдуча + озбекче + вьетнамча + уолофчо + косача + идишче + йорубача + марокко тамазигт адабий тилинде + кытайча + жөнөкөйлөтүлгөн кытайча + салттуу кытайча + зулуча + тилдик мазмун жок + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Дүйнө + Африка + Түндүк Америка + Түштүк Америка + Океания + Батыш Африка + Борбордук Америка + Чыгыш Африка + Түндүк Африка + Орто Африка + Түштүк Африка + Америка + Американын Түндүгү + Кариб аралдары + Чыгыш Азия + Түштүк Азия + Түштүк-Чыгыш Азия + Түштүк Европа + Австралазия + Меланезия + Микронезия Региону + Полинезия + Азия + Борбор Азия + Батыш Азия + Европа + Чыгыш Европа + Түндүк Европа + Батыш Европа + Латын Америкасы + Асенсион аралы + Андорра + Бириккен Араб Эмираттары + Афганистан + Антигуа жана Барбуда + Ангуила + Албания + Армения + Ангола + Антарктика + Аргентина + Америка Самоасы + Австрия + Австралия + Аруба + Аланд аралдары + Азербайжан + Босния жана Герцеговина + Барбадос + Бангладеш + Белгия + Буркина Фасо + Болгария + Бахрейн + Бурунди + Бенин + Ыйык Бартелеми + Бермуда + Бруней + Боливия + Кариб Нидерланддары + Бразилия + Багамас + Бутан + Буве аралдары + Ботсвана + Беларусь + Белиз + Канада + Кокос (Килиӊ) аралдары + Конго - Киншаса + Конго (КДР) + Борбордук Африка Республикасы + Конго - Браззавил + Конго (Респ.) + Швейцария + Кот-д-Ивуар + Пил Сөөгү Жээги + Кук аралдары + Чили + Камерун + Кытай + Колумбия + Клиппертон аралы + Коста Рика + Куба + Капе Верде + Кюрасао + Крисмас аралы + Кипр + Чехия + Германия + Диего Гарсия + Жибути + Дания + Доминика + Доминика Республикасы + Алжир + Сеута жана Мелилла + Экуадор + Эстония + Мисир + Батыш Сахара + Эритреа + Испания + Эфиопия + Европа Бирлиги + Финляндия + Фижи + Фолклэнд аралдары + Фолклэнд (Малвина) аралдары + Микронезия + Фарер аралдары + Франция + Габон + Улуу Британия + Улуу Британия + Гренада + Грузия + Француз Гуианасы + Гернси + Гана + Гибралтар + Гренландия + Гамбия + Гине + Гваделупа + Экваториялык Гине + Грекия + Түштүк Жоржия жана Түштүк Сэндвич аралдары + Гватемала + Гуам + Гине-Бисау + Гуиана + Гоӊ Коӊ Кытай ААА + Гоӊ Коӊ + Херд жана Макдоналд аралдары + Гондурас + Хорватия + Гаити + Венгрия + Канар аралдары + Индонезия + Ирландия + Израил + Мэн аралы + Индия + Британиянын Инд Океанындагы аймагы + Ирак + Иран + Исландия + Италия + Жерси + Жамайка + Йордания + Жапан + Кения + Кыргызстан + Камбожа + Кирибати + Коморос + Ыйык Китс жана Невис + Түндүк Корея + Түштүк Корея + Кувейт + Кайман Аралдары + Казакстан + Лаос + Ливан + Ыйык Лючия + Лихтенштейн + Шри Ланка + Либерия + Лесото + Литва + Люксембург + Латвия + Ливия + Марокко + Монако + Молдова + Монтенегро + Ыйык Мартин + Мадагаскар + Маршалл аралдары + Македония + Македония (Мур. Югосл.) + Мали + Мйанмар (Бурма) + Монголия + Макау Кытай ААА + Макау + Түндүк Мариана аралдары + Мартиник + Мавритания + Монсеррат + Мальта + Маврикий + Малдивз + Малави + Мексика + Малайзия + Мозамбик + Намибия + Жаӊы Каледония + Нигер + Норфолк аралы + Нигерия + Никарагуа + Голландия + Норвегия + Непал + Науру + Ниуэ + Жаӊы Зеландия + Оман + Панама + Перу + Француз Полинезиясы + Папуа Жаӊы Гине + Филиппинз + Пакистан + Польша + Ыйык Пьер жана Микуелон + Питкэрн аралдары + Пуэрто Рико + Палестина аймактары + Палестина + Португалия + Палау + Парагвай + Катар + Алыскы Океания + Реюнион + Румыния + Сербия + Орусия + Руанда + Сауд Арабиясы + Соломон аралдары + Сейшелдер + Судан + Швеция + Сингапур + Ыйык Елена + Словения + Свалбард жана Жан Майен + Словакия + Сиерра Леоне + Сан Марино + Сенегал + Сомали + Суринаме + Түштүк Судан + Сао Томе жана Принсипе + Эл Салвадор + Синт Маартен + Сирия + Суазиленд + Тристан да Кунья + Түркс жана Кайкос аралдары + Чад + Франциянын Түштүктөгү аймактары + Того + Тайланд + Тажикстан + Токелау + ТиморЛесте + Чыгыш Тимор + Түркмөнстан + Тунис + Тонга + Түркия + Тринидад жана Тобаго + Тувалу + Тайуан + Танзания + Украина + Уганда + АКШнын Алыскы аралдары + Кошмо Штаттар + АКШ + Уругвай + Өзбекстан + Ватикан + Ыйык Винсент жана Гренадинз + Венесуэла + Британ Виргин аралдары + АКШ Виржин аралдары + Вьетнам + Вануату + Уоллис жана Футуна + Самоа + Косово + Йемен + Майотт + Түштүк Африка Республикасы + Замбия + Зимбабве + Белгисиз регион + + + күнбарак + ылгоо тартиби + акча + сандар + + + Арап-Инд сандары + кеӊейтилген Арап-Инд сандары + Армян сандары + Армян кичине сандары + Бенгали сандары + Деванагари сандары + баштапкы коюлгандай Уникод ылгоо тартиби + Эфиоп сандары + Толук эндүү сандар + Грузин сандары + Григориан календары + Грек сандары + Грек кичине сандары + Гужарати сандары + Гурмухи сандары + Кытай ондук сандары + Жөн. Кытай сандары + Жөн. Кытай финансылык сандары + Салттуу Кытай сандары + Салттуу Кытай финансылык сандары + Иврит сандары + Жапан сандары + Жапан финансылык сандары + Кмер сандары + Каннада сандары + Лао сандары + Батыш сандары + Малайалам сандары + Мйанмар сандары + Ория сандары + Роман сандары + Роман кичине сандары + жалпы максатта издөө + стандарттуу ылгоо тартиби + Салттуу Тамил сандары + Тамил сандары + Телугу сандары + Тай сандары + Тибет сандары + + + Сандык + Тондук + Диакриттик белгилер + Кең формат + Кыска формат + Джамо + Пиньин + Басмаканалык + + + метрикалык + Британия + АКШ + + + Тили: {0} + Жазуусу: {0} + Регион: {0} + + + + [а б г д е ё ж з и й к л м н ӊ о ө п р с т у ү х ч ш ъ ы э ю я] + [в ф ц щ ь] + [А Б Г Д Е Ж З И Й К Л М Н Ӊ О Ө П Р С Т У Ү Х Ч Ш Ъ Ы Э Ю Я] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ « » ( ) \[ \] \{ \} § @ * / \& #] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + « + » + + + + + + + + + + EEEE, G d-MMMM y-'ж'. + + + + + d-MMMM G y-'ж'. + + + + + dd.MM.y G + + + + + dd.MM.y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + G y + G y MMM + G y-'ж'. d-MMM + G y-'ж'. d-MMM, E + L + MM-dd + MM-dd, E + LLL + d-MMM + d-MMM, E + y-G + y-G + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y-'ж'. MMM + G y-'ж'. d-MMM + G y-'ж'. d-MMM, E + G y-'ж'. QQQ + G y-'ж'. QQQQ + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + y-y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + MMM-MMM y-'ж'. G + MMM y-'ж'. - MMM y-'ж'. G + + + d-d-MMM y-'ж'. G + d-MMM - d-MMM y-'ж'. G + d-MMM y-'ж'. - d-MMM y-'ж'. G + + + E, d - E, d-MMM y-'ж'. G + E, d-MMM - E, d-MMM y-'ж'. G + E, d-MMM y-'ж'. - E, d-MMM y-'ж'. G + + + G y-'ж'. MMMM - MMMM + G y-'ж'. MMMM - y-'ж'. MMMM + + + + + + + + + янв. + фев. + мар. + апр. + май + июн. + июл. + авг. + сен. + окт. + ноя. + дек. + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + январь + февраль + март + апрель + май + июнь + июль + август + сентябрь + октябрь + ноябрь + декабрь + + + + + янв. + фев. + мар. + апр. + май + июн. + июл. + авг. + сен. + окт. + ноя. + дек. + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + январь + февраль + март + апрель + май + июнь + июль + август + сентябрь + октябрь + ноябрь + декабрь + + + + + + + Жк + Дш + Ше + Ша + Бш + Жм + Иш + + + Ж + Д + Ш + Ш + Б + Ж + И + + + Жк + Дш + Ше + Ша + Бш + Жм + Иш + + + Жек + Дүй + Шей + Шар + Бей + Жум + Ишм + + + + + Жек + Дүй + Шей + Шар + Бей + Жум + Ишм + + + Ж + Д + Ш + Ш + Б + Ж + И + + + Жк + Дш + Ше + Ша + Бш + Жм + Иш + + + Жекшемби + Дүйшөмбү + Шейшемби + Шаршемби + Бейшемби + Жума + Ишемби + + + + + + + 1-чей. + 2-чей. + 3-чей. + 4-чей. + + + 1 + 2 + 3 + 4 + + + 1-чейрек + 2-чейрек + 3-чейрек + 4-чейрек + + + + + 1-ч. + 2-ч. + 3-ч. + 4-ч. + + + 1 + 2 + 3 + 4 + + + 1-чейрек + 2-чейрек + 3-чейрек + 4-чейрек + + + + + + + түшкө чейинки + түштөн кийинки + + + + + + б.з. чейин + б.з. + + + б.з. ч. + б.з.ч. + б.з. + + + б.з. ч. + б.з. + + + + + + EEEE, d-MMMM, y-'ж'. + + + + + d-MMMM, y-'ж'. + + + + + dd.MM.y + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E a h:mm + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y-'ж'. + G y-'ж'. MMM + G y-'ж'. d-MMM + G y-'ж'. d-MMM, E + a h + HH + a h:mm + HH:mm + a h:mm:ss + HH:mm:ss + L + dd-MM + dd-MM, E + LLL + d-MMM + d-MMM, E + mm:ss + y + y-MM + y-MM-dd + y-MM-dd, E + y-'ж'. MMM + y-'ж'. d-MMM + y-'ж'. d-MMM, E + y-'ж'., QQQ + y-'ж'., QQQQ + + + {0} {1} + + + {0} - {1} + + d-d + + + a h – a h + a h-h + + + HH-HH + + + a h:mm – a h:mm + a h:mm-h:mm + a h:mm-h:mm + + + HH:mm-HH:mm + HH:mm-HH:mm + + + a h:mm – a h:mm v + a h:mm-h:mm v + a h:mm-h:mm v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + a h – a h v + a h-h v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d-MMM + d-MMM - d-MMM + + + E, d - E, d-MMM + E, d-MMM - E, d-MMM + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y-'ж'. + MMM y-'ж'. - MMM y-'ж'. + + + d-d-MMM y-'ж'. + d-MMM - d-MMM y-'ж'. + d-MMM y-'ж'. - d-MMM y-'ж'. + + + E, d - E, d-MMM y-'ж'. + E, d-MMM - E, d-MMM y-'ж'. + E, d-MMM y-'ж'. - E, d-MMM y-'ж'. + + + MMMM - MMMM y + MMMM y - MMMM y + + + + + + + + заман + + + жыл + былтыр + быйыл + эмдиги жылы + + {0} жылдан кийин + {0} жылдан кийин + + + {0} жыл мурун + {0} жыл мурун + + + + ай + өткөн айда + бул айда + эмдиги айда + + {0} айдан кийин + {0} айдан кийин + + + {0} ай мурун + {0} ай мурун + + + + апта + өткөн аптада + ушул аптада + келерки аптада + + {0} аптадан кийин + {0} аптадан кийин + + + {0} апта мурун + {0} апта мурун + + + + күн + мурдагы күнү + кечээ + бүгүн + эртеӊ + бүрсүгүнү + + {0} күндөн кийин + {0} күндөн кийин + + + {0} күн мурун + {0} күн мурун + + + + апта күнү + + + өткөн дем алышта + ушул дем алышта + келерки дем алышта + + + өткөн Дүйшөмбүдө + ушул Дүйшөмбүдө + кийинки Дүйшөмбүдө + + + өткөн Шейшембиде + ушул Шейшембиде + эмки Шейшембиде + + + өткөн Шаршембиде + ушул Шаршембиде + эмки Шаршембиде + + + өткөн Бейшембиде + ушул Бейшембиде + эмдиги Бейшембиде + + + өткөн Жума көнү + ушул Жума күнү + эмдиги Жума күнү + + + өткөн Ишембиде + ушул Ишембиде + келерки Ишембиде + + + ТЧ/ТК + + + саат + + {0} сааттан кийин + {0} сааттан кийин + + + {0} саат мурун + {0} саат мурун + + + + мүнөт + + {0} мүнөттөн кийин + {0} мүнөттөн кийин + + + {0} мүнөт мурун + {0} мүнөт мурун + + + + секунд + азыр + + {0} секунддан кийин + {0} секунддан кийин + + + {0} секунд мурун + {0} секунд мурун + + + + саат алкагы + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Белгисиз + + + Андорра + + + Дубай + + + Кабул + + + Антигуа + + + Ангуила + + + Тирана + + + Ереван + + + Луанда + + + Ротера + + + Палмер + + + Саоа + + + Моосон + + + Дэвис + + + Восток + + + Кейси + + + Дүмон д-Өрвил + + + МакМөрдо + + + Рио Галлегос + + + Мендоза + + + Сан Хуан + + + Ушуайа + + + Ла Риоха + + + Сан Луи + + + Катамарка + + + Салта + + + Жужуй + + + Тукуман + + + Кордова + + + Буэнос Айрес + + + Паго Паго + + + Вена + + + Перт + + + Юкла + + + Дарвин + + + Аделаида + + + Броукен Хил + + + Керри + + + Мелбурн + + + Хобарт + + + Линдеман + + + Сидней + + + Брисбен + + + Маккуори + + + Лорд Хау + + + Аруба + + + Мариехамн + + + Баку + + + Сараево + + + Барбадос + + + Дакка + + + Брюссел + + + Уагадугу + + + София + + + Бахрейн + + + Бужумбура + + + Порто-Ново + + + Ыйык Бартелеми + + + Бермуда + + + Бруней + + + Ла Пас + + + Кралендейк + + + Эйрунепе + + + Рио Бранко + + + Порто Велио + + + Боа Виста + + + Манаус + + + Куйаба + + + Сантарем + + + Кампо Гранде + + + Белем + + + Арагуаина + + + Сао Пауло + + + Байиа + + + Форталеза + + + Масейо + + + Ресифи + + + Норониа + + + Нассау + + + Тимпу + + + Габороне + + + Минск + + + Белиз + + + Доусон + + + Уайтхорс + + + Инувик + + + Ванкувер + + + Доусон Грек + + + Крестон + + + Йеллоунайф + + + Эдмонтон + + + Свифт Каррент + + + Кэмбриж Бей + + + Регина + + + Уиннипег + + + Резолут + + + Рейни Ривер + + + Рэнкин Инлет + + + Атикокан + + + Сандер Бей + + + Нипигон + + + Торонто + + + Икалуит + + + Пангиртуӊ + + + Монктон + + + Галифакс + + + Гус Бей + + + Глейс Бей + + + Бланк-Саблон + + + Сент Жонс + + + Кокос + + + Киншаса + + + Лубумбаши + + + Баги + + + Браззавилл + + + Цюрих + + + Абиджан + + + Раготонга + + + Истер + + + Сантиаго + + + Дуала + + + Кашкар + + + Үрүмчү + + + Чунцин + + + Шанхай + + + Харбин + + + Богота + + + Коста Рика + + + Гавана + + + Капе Верде + + + Кюрасао + + + Крисмас + + + Никосия + + + Прага + + + Бузинген + + + Берлин + + + Жибути + + + Копенгаген + + + Доминика + + + Санто Доминго + + + Алжир + + + Галапагос + + + Гуайакил + + + Таллинн + + + Каир + + + Эл Айун + + + Асмара + + + Канари + + + Сеута + + + Мадрид + + + Аддис Абеба + + + Хелсинки + + + Фижи + + + Стэнли + + + Чуук + + + Понпей + + + Козрае + + + Фарер + + + Париж + + + Либревилл + + + + Британия жайкы убактысы + + Лондон + + + Гренада + + + Тбилиси + + + Кайен + + + Гернси + + + Аккра + + + Гибралтар + + + Туле + + + Нуук + + + Иттоккортоормиит + + + Данмарксхавн + + + Банжул + + + Конакри + + + Гваделупе + + + Малабо + + + Афины + + + Түштүк Жоржия + + + Гватемала + + + Гуам + + + Бисау + + + Гуйана + + + Гоӊ Коӊ + + + Тегусигальпа + + + Загреб + + + Порт-о-Пренс + + + Будапешт + + + Жакарта + + + Понтианак + + + Макассар + + + Жайапура + + + + Ирландия жайкы убактысы + + Дублин + + + Иерусалим + + + Мэн аралы + + + Калькутта + + + Чагос + + + Багдад + + + Тегеран + + + Рейкьявик + + + Рим + + + Жерси + + + Жамайка + + + Амман + + + Токио + + + Найроби + + + Бишкек + + + Пномпень + + + Эндербери + + + Киритимати + + + Тарава + + + Коморо + + + Ыйык Китс + + + Пхенйан + + + Сеул + + + Кувейт + + + Кайман + + + Актау + + + Орал + + + Актобе + + + Кызылорда + + + Алматы + + + Виентиан + + + Бейрут + + + Санта Лючия + + + Фадуц + + + Коломбо + + + Монровиа + + + Масеру + + + Вилнюс + + + Люксембург + + + Рига + + + Триполи + + + Касабланка + + + Монако + + + Кишинев + + + Подгорица + + + Мариго + + + Антананариво + + + Куажалейн + + + Мажуро + + + Скопйе + + + Бамако + + + Рангун + + + Ховд + + + Улан Батор + + + Чойбалсан + + + Макау + + + Сайпан + + + Мартиник + + + Нуакшот + + + Монсерат + + + Мальта + + + Маврикий + + + Малдивз + + + Блантайр + + + Тихуана + + + Санта Изабел + + + Эрмосийо + + + Мазатлан + + + Чихуахуа + + + Баийа Бандерас + + + Охинага + + + Монтерей + + + Мехико шаары + + + Матаморос + + + Мерида + + + Канкун + + + Куала Лумпур + + + Кучиӊ + + + Мапуто + + + Уиндхук + + + Нумеа + + + Нйаме + + + Норфолк + + + Лагос + + + Манагуа + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуэ + + + Чатем + + + Оклэнд + + + Мускат + + + Панама + + + Лима + + + Таити + + + Маркезас + + + Гамбие + + + Порт Моэрсби + + + Манила + + + Карачи + + + Варшава + + + Микелон + + + Питкэрн + + + Пуэрто Рико + + + Газа + + + Хеброн + + + Азорс + + + Мадейра + + + Лиссабон + + + Палау + + + Асунсион + + + Катар + + + Реюнион + + + Бухарест + + + Белград + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Екатеринбург + + + Омск + + + Новосибирск + + + Новокузнецк + + + Красноярск + + + Иркутск + + + Якутск + + + Владивосток + + + Кандыга + + + Сахалин + + + Усть-Нера + + + Магадан + + + Камчатка + + + Анадыр + + + Кигали + + + Рийад + + + Гуадалканал + + + Маэ + + + Картум + + + Стокголм + + + Сингапур + + + Ыйык Елена + + + Любляна + + + Лонгйербиен + + + Братислава + + + Фритаун + + + Сан Марино + + + Дакар + + + Могадишу + + + Парамарибо + + + Жуба + + + Сао Томе + + + Эл Салвадор + + + Лоуэр Принсес Куате + + + Дамаск + + + Мбабане + + + Гранд Түрк + + + Нжамена + + + Кергелен + + + Ломе + + + Бангкок + + + Душамбе + + + Факаофо + + + Дили + + + Ашгабат + + + Тунис + + + Тонгатапу + + + Стамбул + + + Порт оф Спейн + + + Фунафути + + + Тайпей + + + Дар эс Салаам + + + Ужгород + + + Киев + + + Симферополь + + + Запорожье + + + Кампала + + + Мидуэй + + + Жонстон + + + Уейк + + + Адак + + + Ноум + + + Гонолулу + + + Анкориж + + + Якутат + + + Ситка + + + Жуно + + + Метлакатла + + + Лос Анжелес + + + Бойсе + + + Феникс + + + Денвер + + + Беула, Түндүк Дакота + + + Ню Салем, Түндүк Дакота + + + Сентер, Түндүк Дакота + + + Чикаго + + + Меномини + + + Венсен, Индиана + + + Питерсбург, Индиана + + + Телл шаары, Индиана + + + Нокс, Индиана + + + Уинамак, Индиана + + + Маренго, Индиана + + + Индианаполис + + + Луизвилл + + + Вивей, Индиана + + + Монтичелло, Кентукки + + + Детройт + + + Нью Йорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Ыйык Винсент + + + Каракас + + + Тортола + + + Ыйык Томас + + + Хо Ши Мин + + + Эфат + + + Уолис + + + Апиа + + + Аден + + + Майотт + + + Йоханнесбург + + + Лусака + + + Хараре + + + + Афганистан убактысы + + + + + Борбордук Африка убактысы + + + + + Чыгыш Африка убактысы + + + + + Түштүк Африка убактысы + + + + + Батыш Африка убактысы + Батыш Африка стандарт убактысы + Батыш Африка жайкы убактысы + + + + + Аляска убактысы + Аляска стандарт убактысы + Аляска үнөмдөө убактысы + + + + + Амазон убактысы + Амазон стандарт убактысы + Амазон жайкы убактысы + + + + + Түндүк Америка борбордук убактысы + Түндүк Америка борбордук стандарт убактысы + Түндүк Америка борбордук үнөмдөө убактысы + + + + + Түндүк Америка чыгыш убактысы + Түндүк Америка чыгыш стандарт убактысы + Түндүк Америка чыгыш үнөмдөө убактысы + + + + + Түндүк Америка тоолук убактысы + Түндүк Америка тоолук стандарт убактысы + Түндүк Америка тоолук үнөмдөө убактысы + + + + + Түндүк Америка Тынч океандык убактысы + Түндүк Америка Тынч океандык стандарт убактысы + Түндүк Америка Тынч океандык үнөмдөө убактысы + + + + + Арабия убактысы + Арабия стандарт убактысы + Арабия үнөмдөө убактысы + + + + + Аргентина убактысы + Аргентина стандарт убактысы + Аргентина жайкы убактысы + + + + + Батыш Аргентина убактысы + Батыш Аргентина стандарт убактысы + Батыш Аргентина жайкы убактысы + + + + + Армения убактысы + Армения стандарт убактысы + Армения жайкы убактысы + + + + + Атлантика убактысы + Атлантика стандарт убактысы + Атлантика үнөмдөө убактысы + + + + + Австралия борбордук убактысы + Австралия борбордук стандарт убактысы + Австралия борбордук үнөмдөө убактысы + + + + + Австралия борбордук батыш убактысы + Австралия борбордук батыш стандарт убактысы + Австралия борбордук батыш үнөмдөө убактысы + + + + + Австралия чыгыш убактысы + Австралия чыгыш стандарт убактысы + Австралия чыгыш үнөмдөө убактысы + + + + + Австралия батыш убактысы + Австралия батыш стандарт убактысы + Австралия батыш үнөмдөө убактысы + + + + + Азербайжан убактысы + Азербайжан стандарт убактысы + Азербайжан жайкы убактысы + + + + + Азорс убактысы + Азорс стандарт убактысы + Азорс жайкы убактысы + + + + + Бангладеш убактысы + Бангладеш стандарт убактысы + Бангладеш жайкы убактысы + + + + + Бутан убактысы + + + + + Боливия убактысы + + + + + Бразилия убактысы + Бразилия стандарт убактысы + Бразилия жайкы убактысы + + + + + Бруней Даруссалам убактысы + + + + + Капе Верде убактысы + Капе Верде стандарт убактысы + Капе Верде жайкы убактысы + + + + + Чаморро убактысы + + + + + Чатам убактысы + Чатам стандарт убактысы + Чатам үнөмдөө убактысы + + + + + Чили убактысы + Чили стандарт убактысы + Чили жайкы убактысы + + + + + Кытай убактысы + Кытай стандарт убактысы + Кытай үнөмдөө убактысы + + + + + Чойбалсан убактысы + Чойбалсан стандарт убактысы + Чойбалсан жайкы убактысы + + + + + Крисмас убактысы + + + + + Кокос убактысы + + + + + Колумбия убактысы + Колумбия стандарт убактысы + Колумбия жайкы убактысы + + + + + Кук аралдарынын убактысы + Кук аралдарынын стандарт убактысы + Кук аралдарынын жарым жай убактысы + + + + + Куба убактысы + Куба стандарт убактысы + Куба үнөмдөө убактысы + + + + + Дэвис убактысы + + + + + Дүмон-д-Өрвил убактысы + + + + + Чыгыш Тимор убактысы + + + + + Истер убактысы + Истер стандарт убактысы + Истер жайкы убактысы + + + + + Экуадор убактысы + + + + + Борбордук Европа убактысы + Борбордук Европа стандарт убактысы + Борбордук Европа жайкы убактысы + + + + + Чыгыш Европа убактысы + Чыгыш Европа стандарт убактысы + Чыгыш Европа жайкы убактысы + + + + + Батыш Европа убактысы + Батыш Европа стандарт убактысы + Батыш Европа жайкы убактысы + + + + + Фолкленд убактысы + Фолкленд стандарт убактысы + Фолкленд жайкы убактысы + + + + + Фижи убактысы + Фижи стандарт убактысы + Фижи жайкы убактысы + + + + + Френч Гуйана убактысы + + + + + Френч Түштүк жана Антарктик убактысы + + + + + Галапагос убактысы + + + + + Гамбие убактысы + + + + + Грузия убактысы + Грузия стандарт убактысы + Грузия жайкы убактысы + + + + + Гилберт убактысы + + + + + Гринвич универсалдуу убактысы + + + + + Чыгыш Гринлэнд убактысы + Чыгыш Гринлэнд стандарт убактысы + Чыгыш Гринлэнд жайкы убактысы + + + + + Батыш Гринлэнд убактысы + Батыш Гринлэнд стандарт убактысы + Батыш Гринлэнд жайкы убактысы + + + + + Булуӊ убактысы + + + + + Гуйана убактысы + + + + + Гавайи-Алеут убактысы + Гавайи-Алеут стандарт убактысы + Гавайи-Алеут үнөмдөө убактысы + + + + + Гоӊ Коӊ убактысы + Гоӊ Коӊ стандарт убактысы + Гоӊ Коӊ жайкы убактысы + + + + + Ховд убактысы + Ховд стандарт убактысы + Ховд жайкы убактысы + + + + + Индия убактысы + + + + + Инд Океаны убактысы + + + + + Индокытай убактысы + + + + + Борбордук Индонезия убактысы + + + + + Чыгыш Индонезия убактысы + + + + + Батыш Индонезия убактысы + + + + + Иран убактысы + Иран стандарт убактысы + Иран үнөмдөө убактысы + + + + + Иркутск убактысы + Иркутск стандарт убактысы + Иркутск жайкы убактысы + + + + + Израил убактысы + Израил стандарт убактысы + Израил үнөмдөө убактысы + + + + + Жапан убактысы + Жапан стандарт убактысы + Жапан үнөмдөө убактысы + + + + + Чыгыш Казакстан убактысы + + + + + Батыш Казакстан убактысы + + + + + Корея убактысы + Корея стандарт убактысы + Корея үнөмдөө убактысы + + + + + Косрае убактысы + + + + + Красноярск убактысы + Красноярск стандарт убактысы + Красноярск жайкы убактысы + + + + + Кыргызстан убактысы + + + + + Лайн убактысы + + + + + Лорд Хау убактысы + Лорд Хау стандарт убактысы + Лорд Хау үнөмдөө убактысы + + + + + Макуари убактысы + + + + + Магадан убактысы + Магадан стандарт убактысы + Магадан жайкы убактысы + + + + + Малайзия убактысы + + + + + Малдив убактысы + + + + + Маркезас убактысы + + + + + Маршалл убактысы + + + + + Маврикий убактысы + Маврикий стандарт убактысы + Маврикий жайкы убактысы + + + + + Мосон убактысы + + + + + Улан Батор убактысы + Улан Батор стандарт убактысы + Улан Батор жайкы убактысы + + + + + Москва убактысы + Москва стандарт убактысы + Москва жайкы убактысы + + + + + Мйанмар убактысы + + + + + Науру убактысы + + + + + Непал убактысы + + + + + Жаӊы Каледония убактысы + Жаӊы Каледония стандарт убактысы + Жаӊы Каледония жайкы убактысы + + + + + Жаӊы Зеландия убактысы + Жаӊы Зеландия стандарт убактысы + Жаӊы Зеландия үнөмдөө убактысы + + + + + Нюфаундлэнд убактысы + Нюфаундлэнд стандарт убактысы + Нюфаундлэнд үнөмдөө убактысы + + + + + Ниуэ убактысы + + + + + Норфолк убактысы + + + + + Фернандо де Норонья убактысы + Фернандо де Норонья стандарт убактысы + Фернандо де Норонья жайкы убактысы + + + + + Новосибирск убактысы + Новосибирск стандарт убактысы + Новосибирск жайкы убактысы + + + + + Омск убактысы + Омск стандарт убактысы + Омск жайкы убактысы + + + + + Пакистан убактысы + Пакистан стандарт убактысы + Пакистан жайкы убактысы + + + + + Палау убактысы + + + + + Папуа Жаӊы Гине убактысы + + + + + Парагвай убактысы + Парагвай стандарт убактысы + Парагвай жайкы убактысы + + + + + Перу убактысы + Перу стандарт убактысы + Перу жайкы убактысы + + + + + Филиппинз убактысы + Филиппинз стандарт убактысы + Филиппинз жайкы убактысы + + + + + Феникс аралдарынын убактысы + + + + + Сен Пьер жана Микелон убактысы + Сен Пьер жана Микелон стандарт убактысы + Сен Пьер жана Микелон үнөмдөө убактысы + + + + + Питкэрнг убактысы + + + + + Понапе убактысы + + + + + Реюнион убактысы + + + + + Ротера убактысы + + + + + Сахалин убактысы + Сахалин стандарт убактысы + Сахалин жайкы убактысы + + + + + Сама убактысы + Самоа стандарт убактысы + Самоа үнөм убактысы + + + + + Сейшел убактысы + + + + + Сингапур убактысы + + + + + Соломон аралдарынын убактысы + + + + + Түштүк Жоржия убактысы + + + + + Суринаме убактысы + + + + + Саоа убактысы + + + + + Таити убактысы + + + + + Тайпей убактысы + Тайпей стандарт убактысы + Тайпей үнөмдөө убактысы + + + + + Тажикстан убактысы + + + + + Токелау убактысы + + + + + Тонга убактысы + Тонга стандарт убактысы + Тонга жайкы убактысы + + + + + Чуук убактысы + + + + + Түркмөнстан убактысы + Түркмөнстан стандарт убактысы + Түркмөнстан жайкы убактысы + + + + + Тувалу убактысы + + + + + Уругвай убактысы + Уругвай стандарт убактысы + Уругвай жайкы убактысы + + + + + Өзбекстан убактысы + Өзбекстан стандарт убактысы + Өзбекстан жайкы убактысы + + + + + Вануату убактысы + Вануату стандарт убактысы + Вануату жайкы убактысы + + + + + Венесуэла убактысы + + + + + Владивосток убактысы + Владивосток стандарт убактысы + Владивосток жайкы убактысы + + + + + Волгоград убактысы + Волгоград стандарт убактысы + Волгоград жайкы убактысы + + + + + Восток убактысы + + + + + Уейк убактысы + + + + + Уолис жана Футуна убактысы + + + + + Якутск убактысы + Якутск стандарт убактысы + Якутск жайкы убактысы + + + + + Екатеринбург убактысы + Екатеринбург стандарт убактысы + Екатеринбург жайкы убактысы + + + + + + + , +   + % + + + - + E + × + + + сан эмес + + + + + #,##0.### + + + + + 0 миӊ + 0 миӊ + 00 миӊ + 00 миӊ + 000 миӊ + 000 миӊ + 0 миллион + 0 миллион + 00 миллион + 00 миллион + 000 миллион + 000 миллион + 0 миллиард + 0 миллиард + 00 миллиард + 00 миллиард + 000 миллиард + 000 миллиард + 0 триллион + 0 триллион + 00 триллион + 00 триллион + 000 триллион + 000 триллион + + + + + 0 миӊ + 0 миӊ + 00 миӊ + 00 миӊ + 000 миӊ + 000 миӊ + 0 млн + 0 млн + 00 млн + 00 млн + 000 млн + 000 млн + 0 млд + 0 млд + 00 млд + 00 млд + 000 млд + 000 млд + 0 трн + 0 трн + 00 трн + 00 трн + 000 трн + 000 трн + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Бириккен Араб Эмираттары дирхамы + БАЭ дирхамы + БАЭ дирхамы + + + Афганстан афганиси + Афганстан афганиси + Афганстан афганиси + + + Албания леги + Албания леги + Албания леги + + + Армения драмы + Армения драмы + Армения драмы + + + Нидерланд Антил гулдени + Нидерланд Антил гулдени + Нидерланд Антил гулдени + + + Ангола кванзасы + Ангола кванзасы + Ангола кванзасы + + + Аргентина песосу + Аргентина песосу + Аргентина песосу + + + Австралия доллары + Австралия доллары + Австралия доллары + AUD + + + Аруба флорини + Аруба флорини + Аруба флорини + + + Азербайжан манаты + Азербайжан манаты + Азербайжан манаты + + + Босния-Герцеговина оодарылма маркы + Босния-Герцеговина оодарылма маркы + Босния-Герцеговина оодарылма маркы + + + Барбадос доллары + Барбадос доллары + Барбадос доллары + + + Бангладеш такасы + Бангладеш такасы + Бангладеш такасы + + + Болгария леви + Болгария леви + Болгария леви + + + Бахрейн динары + Бахрейн динары + Бахрейн динары + + + Бурунди франкы + Бурунди франкы + Бурунди франкы + + + Бермуд доллары + Бермуд доллары + Бермуд доллары + + + Бруней доллары + Бруней доллары + Бруней доллары + + + Боливия боливианосу + Боливия боливианосу + Боливия боливианосу + + + Бразилия реалы + Бразилия реалы + Бразилия реалы + BRL + + + Багама доллары + Багама доллары + Багама доллары + + + Бутан нгултруму + Бутан нгултруму + Бутан нгултруму + + + Ботсвана пуласы + Ботсвана пуласы + Ботсвана пуласы + + + Беларусь рублу + Беларусь рублу + Беларусь рублу + + + Белиз доллары + Белиз доллары + Белиз доллары + + + Канада доллары + Канада доллары + Канада доллары + CAD + + + Конго франкы + Конго франкы + Конго франкы + + + Швейцария франкы + Швейцария франкы + Швейцария франкы + + + Чили песосу + Чили песосу + Чили песосу + + + Кытай юаны + Кытай юаны + Кытай юаны + CN¥ + + + Колумбия песосу + Колумбия песосу + Колумбия песосу + + + Коста Рика колону + Коста Рика колону + Коста Рика колону + + + Куба оодарылма песосу + Куба оодарылма песосу + Куба оодарылма песосу + + + Куба песосу + Куба песосу + Куба песосу + + + Капе Верде эскудосу + Капе Верде эскудосу + Капе Верде эскудосу + + + Чехия корунасы + Чехия корунасы + Чехия корунасы + + + Жибути франкы + Жибути франкы + Жибути франкы + + + Дания крону + Дания крону + Дания крону + + + Доминика песосу + Доминика песосу + Доминика песосу + + + Алжир динары + Алжир динары + Алжир динары + + + Мисир фунту + Мисир фунту + Мисир фунту + + + Эритреа накфасы + Эритреа накфасы + Эритреа накфасы + + + Эфиопия бирри + Эфиопия бирри + Эфиопия бирри + + + Евро + евро + евро + + + Фижи доллары + Фижи доллары + Фижи доллары + + + Фолкленд аралдарынын фунту + Фолкленд аралдарынын фунту + Фолкленд аралдарынын фунту + + + Британия фунт стерлинги + Британия фунт стерлинги + Британия фунт стерлинги + GBP + + + Грузия лариси + Грузия лариси + Грузия лариси + + + Гана седиси + Гана седиси + Гана седиси + + + Гибралтар фунту + Гибралтар фунту + Гибралтар фунту + + + Гамбия даласиси + Гамбия даласиси + Гамбия даласиси + + + Гине франкы + Гине франкы + Гине франкы + + + Гватемала кетсалы + Гватемала кетсалы + Гватемала кетсалы + + + Гуйана доллары + Гуйана доллары + Гуйана доллары + + + Гоӊ Коӊ доллары + Гоӊ Коӊ доллары + Гоӊ Коӊ доллары + HKD + + + Гондурас лемпирасы + Гондурас лемпирасы + Гондурас лемпирасы + + + Хорватия кунасы + Хорватия кунасы + Хорватия кунасы + + + Гаити гурду + Гаити гурду + Гаити гурду + + + Венгрия форинти + Венгрия форинти + Венгрия форинти + + + Индонезия рупийасы + Индонезия рупийасы + Индонезия рупийасы + + + Израил жаӊы шегели + Израил жаӊы шегели + Израил жаӊы шегели + ILS + + + Индия руписи + Индия руписи + Индия руписи + INR + + + Ирак динары + Ирак динары + Ирак динары + + + Иран риалы + Иран риалы + Иран риалы + + + Исландия крону + Исландия крону + Исландия крону + + + Жамайка доллары + Жамайка доллары + Жамайка доллары + + + Йордания динары + Йордания динары + Йордания динары + + + Жапан йени + Жапан йени + Жапан йени + JP¥ + + + Кения шиллинги + Кения шиллинги + Кения шиллинги + + + Кыргызстан сому + Кыргызстан сому + Кыргызстан сому + сом + + + Камбожа риели + Камбожа риели + Камбожа риели + + + Коморос франкы + Коморос франкы + Коморос франкы + + + Түндүк Корея уону + Түндүк Корея уону + Түндүк Корея уону + + + Түштүк Корея уону + Түштүк Корея уону + Түштүк Корея уону + KRW + + + Кувейт динары + Кувейт динары + Кувейт динары + + + Кайман доллары + Кайман доллары + Кайман доллары + + + Казакстан теӊгеси + Казакстан теӊгеси + Казакстан теӊгеси + + + Лаос киби + Лаос киби + Лаос киби + + + Ливан фунту + Ливан фунту + Ливан фунту + + + Шри Ланка руписи + Шри Ланка руписи + Шри Ланка руписи + + + Либерия доллары + Либерия доллары + Либерия доллары + + + Литва литасы + Литва литасы + Литва литасы + + + Латвия латсы + Латвия латсы + Латвия латсы + + + Ливия динары + Ливия динары + Ливия динары + + + Марокко дирхамы + Марокко дирхамы + Марокко дирхамы + + + Молдова лейи + Молдова лейи + Молдова лейи + + + Мадагаскар ариариси + Мадагаскар ариариси + Мадагаскар ариариси + + + Македония денары + Македония денары + Македония денары + + + Мйанмар кйаты + Мйанмар кйаты + Мйанмар кйаты + + + Монгол тугриги + Монгол тугриги + Монгол тугриги + + + Макау патакасы + Макау патакасы + Макау патакасы + + + Мавритания угиясы + Мавритания угиясы + Мавритания угиясы + + + Мавританий руписи + Мавританий руписи + Мавританий руписи + + + Малдив Руфийасы + Малдив Руфийасы + Малдив Руфийасы + + + Малави квачасы + Малави квачасы + Малави квачасы + + + Мексика песосу + Мексика песосу + Мексика песосу + MXN + + + Малайзия ринггити + Малайзия ринггити + Малайзия ринггити + + + Мозамбик метикалы + Мозамбик метикалы + Мозамбик метикалы + + + Намибия доллары + Намибия доллары + Намибия доллары + + + Нигерия найрасы + Нигерия найрасы + Нигерия найрасы + + + Никарагуа кордобасы + Никарагуа кордобасы + Никарагуа кордобасы + + + Норвегия крону + Норвегия крону + Норвегия крону + + + Непал руписи + Непал руписи + Непал руписи + + + Жаӊы Зеландия доллары + Жаӊы Зеландия доллары + Жаӊы Зеландия доллары + NZD + + + Оман риалы + Оман риалы + Оман риалы + + + Панама балбоасы + Панама балбоасы + Панама балбоасы + + + Перу нуэво солу + Перу нуэво солу + Перу нуэво солу + + + Папуа Жаӊы Гине кинасы + Папуа Жаӊы Гине кинасы + Папуа Жаӊы Гине кинасы + + + Филиппин песосу + Филиппин песосу + Филиппин песосу + + + Пакистан руписи + Пакистан руписи + Пакистан руписи + + + Польша злотыйы + Польша злотыйы + Польша злотыйы + + + Парагвай гуараниси + Парагвай гуараниси + Парагвай гуараниси + + + Катар риалы + Катар риалы + Катар риалы + + + Румыния лейи + Румыния лейи + Румыния лейи + + + Сербия динары + Сербия динары + Сербия динары + + + Орусия рублу + Орусия рублу + Орусия рублу + + + Руанда франкы + Руанда франкы + Руанда франкы + + + Сауд риалы + Сауд риалы + Сауд риалы + + + Соломон доллары + Соломон доллары + Соломон доллары + + + Сейшел руписи + Сейшел руписи + Сейшел руписи + + + Судан фунту + Судан фунту + Судан фунту + + + Швеция крону + Швеция крону + Швеция крону + + + Сингапур доллары + Сингапур доллары + Сингапур доллары + + + Ыйык Елена фунту + Ыйык Елена фунту + Ыйык Елена фунту + + + Сиерра Леоне леонеси + Сиерра Леоне леонеси + Сиерра Леоне леонеси + + + Сомали шиллинги + Сомали шиллинги + Сомали шиллинги + + + Суринам доллары + Суринам доллары + Суринам доллары + + + Түштүк Судан фунту + Түштүк Судан фунту + Түштүк Судан фунту + + + Сао Томе жана Принсипе добрасы + Сао Томе жана Принсипе добрасы + Сао Томе жана Принсипе добрасы + + + Сирия фунту + Сирия фунту + Сирия фунту + + + Свази лилангени + Свази лилангени + Свази эмалангени + + + Тай баты + Тай баты + Тай баты + ฿ + + + Тажикстан сомониси + Тажикстан сомониси + Тажикстан сомониси + + + Түркмөнстан манаты + Түркмөнстан манаты + Түркмөнстан манаты + + + Тунис динары + Тунис динары + Тунис динары + + + Тонга паангасы + Тонга паангасы + Тонга паангасы + + + Түркия лирасы + Түркия лирасы + Түркия лирасы + + + Тринидад жана Тобаго доллары + Тринидад жана Тобаго доллары + Тринидад жана Тобаго доллары + + + Тайвань жаӊы доллары + Тайвань жаӊы доллары + Тайвань жаӊы доллары + TWD + + + Танзания шиллинги + Танзания шиллинги + Танзания шиллинги + + + Украина гривени + Украина гривени + Украина гривени + + + Уганда шиллинги + Уганда шиллинги + Уганда шиллинги + + + АКШ доллары + АКШ доллары + АКШ доллары + USD + + + Уругвай песосу + Уругвай песосу + Уругвай песосу + + + Өзбекстан сому + Өзбекстан сому + Өзбекстан сому + + + Венесуэла боливары + Венесуэла боливары + Венесуэла боливары + + + Вьетнам доӊу + Вьетнам доӊу + Вьетнам доӊу + + + + Вануату ватусу + Вануату ватусу + Вануату ватусу + + + Самоа таласы + Самоа таласы + Самоа таласы + + + Борбор Африка CFA франкы + Борбор Африка CFA франкы + Борбор Африка CFA франкы + FCFA + + + Чыгыш Кариб доллары + Чыгыш Кариб доллары + Чыгыш Кариб доллары + XCD + + + Батыш Африка CFA франкы + Батыш Африка CFA франкы + Батыш Африка CFA франкы + CFA + + + CFP франкы + CFP франкы + CFP франкы + CFPF + + + Белгисиз акча + Белгисиз акча + Белгисиз акча + + + Йемен риалы + Йемен риалы + Йемен риалы + + + Түштүк Африка ранды + Түштүк Африка ранды + Түштүк Африка ранды + + + Замбия квачасы + Замбия квачасы + Замбия квачасы + + + + ⩾{0} + {0}–{1} + + + + + + {0}/{1} + + + {0} оордук күчү + {0} оордук күчү + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} градус + {0} градус + + + {0} акр + {0} акр + + + {0} гектар + {0} гектар + + + {0} чарчы фут + {0} чарчы фут + + + {0} чарчы километр + {0} чарчы километр + + + {0} чарчы метр + {0} чарчы метр + + + {0} чарчы чакырым + {0} чарчы чакырым + + + {0} күн + {0} күн + + + {0} саат + {0} саат + + + {0} миллисекунд + {0} миллисекунд + + + {0} мүнөт + {0} мүнөт + + + {0} ай + {0} ай + + + {0} секунд + {0} секунд + + + {0} апта + {0} апта + + + {0} жыл + {0} жыл + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} дүйм + {0} дүйм + + + {0} километр + {0} километр + + + {0} жарык жылы + {0} жарык жылы + + + {0} метр + {0} метр + + + {0} чакырым + {0} чакырым + + + {0} миллиметр + {0} миллиметр + + + {0} пикометр + {0} пикометр + + + {0} ярд + {0} ярд + + + {0} грамм + {0} грамм + + + {0} килограмм + {0} килограмм + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} аттын күчү + {0} аттын күчү + + + {0} киловатт + {0} киловатт + + + {0} ватт + {0} ватт + + + гектопаскаль + {0} гектопаскаль + + + {0} дүйм сымап мамычасы + {0} дүйм сымап мамычасы + + + {0} миллибар + {0} миллибар + + + саатына {0} километр + саатына {0} километр + + + секундуна {0} метр + секундуна {0} метр + + + саатына {0} чакырым + саатына {0} чакырым + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} куб километр + {0} куб километр + + + {0} куб чакырым + {0}куб чакырым + + + {0} литр + {0} литр + + + + + {0}/{1} + + + {0} о.к. + {0} о.к. + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акр + + + {0} га + {0} га + + + {0} фут² + {0} фут² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} чак² + {0} чак² + + + {0} күн + {0} күн + + + {0} с + {0} с + + + {0} мс + {0} мс + + + {0} мүн + {0} мүн + + + {0} ай + {0} ай + + + {0} сек + {0} сек + + + {0} ап + {0} ап + + + {0} ж. + {0} ж. + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} д + {0} д + + + {0} км + {0} км + + + {0} жар.ж. + {0} жар.ж. + + + {0} м + {0} м + + + {0} чак + {0} чак + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} ат + {0} ат + + + {0} кВт + {0} кВт + + + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + + + {0} дүйм сымап + {0} дүйм сымап + + + {0} мб + {0} мб + + + {0} км/с + {0} км/с + + + {0} м/с + {0} м/с + + + {0} чак/с + {0} чак/с + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} чак³ + {0} чак³ + + + {0} л + {0} л + + + + + {0}/{1} + + + {0} о.к. + {0} о.к. + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акр + + + {0} га + {0} га + + + {0} фут² + {0} фут² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} чак² + {0} чак² + + + {0} к + {0} к + + + {0} с + {0} с + + + {0} мс + {0} мс + + + {0} мүн + {0} мүн + + + {0} ай + {0} ай + + + {0} сек + {0} сек + + + {0} ап + {0} ап + + + {0} ж. + {0} ж. + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} д + {0} д + + + {0} км + {0} км + + + {0} жар.ж. + {0} жар.ж. + + + {0} м + {0} м + + + {0} чак + {0} чак + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} ат + {0} ат + + + {0} кВт + {0} кВт + + + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + + + {0} inHg + {0} inHg + + + {0} мб + {0} мб + + + {0} км/с + {0} км/с + + + {0} м/с + {0} м/с + + + {0} чак/с + {0} чак/с + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} чак³ + {0} чак³ + + + {0} л + {0} л + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} жана {1} + {0} жана {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ооба:о + жок:ж + + + + diff --git a/library/Zend/Locale/Data/ky_Cyrl.xml b/library/Zend/Locale/Data/ky_Cyrl.xml new file mode 100755 index 000000000..7f027c913 --- /dev/null +++ b/library/Zend/Locale/Data/ky_Cyrl.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ໂລກ + ອາຟຣິກາ + ອາເມລິກາເໜືອ + ອາເມລິກາໃຕ້ + ໂອຊີເນຍ + ອາຟຣິກາຕາເວັນຕົກ + ອາເມລິກາກາງ + ອາຟຣິກາຕາເວັນອອກ + ອາຟຣິກາເໜືອ + ອາຟຣິກາກາງ + ອາຟຣິກາໃຕ້ + ອາເມຣິກາ + ອາເມລິກາເໜືອສຸດ + ຄາຣິບບຽນ + ເອເຊຍຕາເວັນອອກ + ເອເຊຍໃຕ້ + ເອເຊຍຕາເວັນອອກສ່ຽງໃຕ້ + ຢູໂຣບໃຕ້ + ອອສເຕຣເລເຊຍ + ເມລານີເຊຍ + ເຂດໄມໂຄຣເນຊຽນ + ໂພລີນີເຊຍ + ເອເຊຍ + ເອເຊຍກາງ + ເອເຊຍຕາເວັນຕົກ + ຢູໂຣບ + ຢູໂຣບຕາເວັນອອກ + ຢູໂຣບເໜືອ + ຢູໂຣບຕາເວັນຕົກ + ອາເມລິກາ ລາຕິນ + ເກາະອາເຊນຊັນ + ອັນດໍຣາ + ສະຫະລັດອາຫຣັບເອມິເຣດ + ອາຟການິສຖານ + ອາທິກົວ ບາບູດາ + ແອນກຸຍລາ + ແອວເບເນຍ + ອາມີເນຍ + ເນເທີແລນແອນເທິນ + ອັນໂກລາ + ແອນຕາດຕິກາ + ອາເຈນທິນາ + ອາເມຣິກາ ຊາມົວ + ອອສເທຣຍ + ອອສເຕຣເລຍ + ອໍຣູບາ + ຫມູ່ເກາະໂອລັນ + ອາເຊີໄບຈານ + ບອດສະເນຍ ແລະ ແຮສໂກວີນາ + ບາບາໂດສ + ບັງກະລາເທດ + ເບວຢຽມ + ເບີກິນາ ຟາໂຊ + ບັງກາເຣຍ + ບາເຣນ + ບູຣຸນດິ + ເບນິນ + ເຊນ ບາເທເລມີ + ເບີມິວດາ + ບຣູໄນ + ໂບລິເວຍ + ຄາຣິບບຽນ ເນເທີແລນ + ບຣາຊິວ + ບາຮາມາສ + ພູຖານ + ເກາະບູເວດ + ບອດສະວານາ + ເບວບາຣຸສ + ເບລີຊ + ແຄນາດາ + ຫມູ່ເກາະໂກໂກສ + ຄອງໂກ - ຄິນຊາຊາ + ຄອງໂກ (ສາທາລະນະລັດປະຊາທິປະໄຕ) + ສາທາລະນະລັດອາຟຣິກາກາງ + ຄອງໂກ - ບຣາຊາວິວ + ສາທາລະນະລັດຄອງໂກ + ສະວິດເຊີແລນ + ໂຄຕີ ວົວ + ໄອໂວຣີ ໂຄທ + ຫມູ່ເກາະຄູກ + ຊິລີ + ຄາເມຣູນ + ຈີນ + ໂຄລົມເບຍ + ເກາະຄລິບເປີຕັນ + ໂຄສຕາ ຣິກາ + ຄິວບາ + ເຄບ ເວີດ + ຄູຣາຊາວ + ເກາະຄຣິສມາດ + ໄຊປຣັສ + ສາທາລະນະລັດເຊກ + ເຢຍລະມັນ + ດິເອໂກ ກາເຊຍ + ຈິບູຕິ + ເດນມາກ + ໂດມີນິຄາ + ສາທາລະນະລັດ ໂດມິນິກັນ + ອັລຈິເຣຍ + ເຊວຕາ ແລະເມລິນລາ + ເອກກວາດໍ + ເອສໂຕເນຍ + ອີຢິບ + ຊາຮາຣາຕາເວັນຕົກ + ເອຣິເທຣຍ + ສະເປນ + ອີທິໂອເປຍ + ສະຫະພາບຢູໂຣບ + ຟິນແລນ + ຟິຈິ + ຫມູ່ເກາະຟອກແລນ + ໝູ່ເກາະຟອກແລນ (ອິສລາສ ມາວິນນາສ) + ໄມໂຄຣນີເຊຍ + ຫມູ່ເກາະແຟໂຣ + ຝຣັ່ງ + ກາບອນ + ສະຫະລາດຊະອະນາຈັກ + ສະຫະລາດຊະອະນາຈັກຯ + ເກຣເນດາ + ຈໍເຈຍ + ເຟຣນຊ ກຸຍອານາ + ເກີນຊີ + ການ່າ + ຈິບບຣອນທາ + ກຣີນແລນ + ສາທາລະນະລັດແກມເບຍ + ກິນີ + ກົວດາລູບ + ອີຄົວໂຕຣຽວ ກີນີ + ກຣີຊ + ເກາະຈອດເຈຍໃຕ້ແລະຫມູ່ເກາະແຊນວິດຕອນໃຕ້ + ກົວເທມາລາ + ກວມ + ກິນີ-ບິສໂຊ + ກາຍຢານາ + ຮົງກົງ ເຂດປົກຄອງພິເສດ ຈີນ + ຮົງກົງ + ເກາະເຮີດແລະຫມູ່ເກາະແມັກໂດນອລ + ຮອນດູຣັສ + ໂຄເອເຊຍ + ເຮທີ + ຮັງກາຣີ + ໝູ່ເກາະຄານາຣີ + ອິນໂດເນເຊຍ + ໄອແລນ + ອິສຣາເອວ + ເອວ ອອບ ແມນ + ອິນເດຍ + ເຂດແດນບຣິທິສອິນດຽນໂອຊຽນ + ອີຣັກ + ອີຣ່ານ + ໄອສແລນ + ອິຕາລີ + ເຈີຊີ + ຈາໄມຄາ + ຈໍແດນ + ຍີ່ປຸ່ນ + ເຄນຢາ + ຄີກິສຖານ + ກຳປູເຈຍ + ຄຣິບາຕິ + ໂຄໂມໂຣສ + ເຊນ ຄິດ ແລະ ເນວິສ + ເກົາຫລີເໜືອ + ເກົາຫລີໃຕ້ + ຄູເວດ + ເຄແມນ ໄອສແລນ + ຄາຊັກສະຖານ + ລາວ + ເລບານອນ + ເຊນ ລູເຊຍ + ລິດເທນສະຕາຍ + ສີລັງກາ + ລິເບີເຣຍ + ເລໂຊໂທ + ລິທົວເນຍ + ລຸກແຊມເບີກ + ລັດເວຍ + ລິເບຍ + ໂມຣັອກໂຄ + ໂມນາໂຄ + ໂມນໂດວາ + ມອນເຕເນໂກຣ + ເຊນ ມາທິນ + ມາດາກາສກາ + ຫມູ່ເກາະມາແຊວ + ແມຊິໂດເນຍ + ແມຊິໂດເນຍ (FYROM) + ມາລິ + ມຽນມາ pເບີມາ) + ມອງໂກເລຍ + ມາເກົ້າ ເຂດປົກຄອງພິເສດ ຈີນ + ມາເກົ້າ + ຫມູ່ເກາະມາແຊວຕອນເຫນືອ + ມາຕິນີກ + ມົວຣິເທເນຍ + ມອນເຊີຣາດ + ມອນທາ + ມົວຣິຊຽສ + ມັນດິຟ + ມາລາວີ + ເມັກຊິໂກ + ມາເລເຊຍ + ໂມແຊມບິກ + ນາມີເບຍ + ນິວ ຄາເລໂດເນຍ + ນິເຈີ + ເກາະນໍໂຟກ + ໄນຈີເຣຍ + ນິກຄາຣາກົວ + ເນເທີແລນ + ນໍເວ + ເນປານ + ນາອູຣູ + ນີອູເອ + ນິວຊີແລນ + ໂອມານ + ພານາມາ + ເພີຣູ + ເຟຣນຊ ໂພລີເນເຂຍ + ປາປົວນິວກີນີ + ຟິລິບປິນ + ປາກິສຖານ + ໂປແລນ + ເຊນ ປີແອ ມິເກວລອນ + ໝູ່ເກາະພິດແຄນ + ເພືອໂຕ ຣິໂກ + ດິນແດນ ປາເລສຕິນຽນ + ປາເລສຕິນ + ພອລທູໂກ + ປາເລົາ + ພາຣາກວຍ + ກາຕາ + ເຂດຫ່າງໄກໂອຊີເນຍ + ເຣອູນິຍົງ + ໂຣແມເນຍ + ເຊີເບຍ + ຣັດເຊຍ + ວັນດາ + ຊາອຸດິ ອາຣາເບຍ + ຫມູ່ເກາະໂຊໂລມອນ + ເຊເຊວເລສ + ຊູດານ + ສະວີເດັນ + ສິງກະໂປ + ເຊນ ເຮເລນາ + ສະໂລເວເນຍ + ສະວາບາ ແລະ ແຢນ ມາເຢນ + ສະໂລວາເກຍ + ເຊຍຣາ ລີໂອນ + ແຊນ ມາຣິໂນ + ເຊນີໂກລ + ໂຊມາເລຍ + ຊູຣິນາມ + ຊູດານໃຕ້ + ເຊົາທູເມ ແລະ ພຣິນຊິບ + ເອວ ຊໍວາດໍ + ຊິນ ມາທິນ + ຊີເຣຍ + ສະວາຊິແລນ + ທຣິສຕັນ ດາ ກັນຮາ + ໝູ່ເກາະ ເທີກ ແລະ ໄຄໂຄສ + ແຊດ + ອານາເຂດທາງໃຕ້ຂອງຝຣັ່ງ + ໂຕໂກ + ໄທ + ທາຈິກິສຖານ + ໂຕເກເລົາ + ທິມໍ-ເລສເຕ + ທິມໍ ຕາເວັນອອກ + ເທີກເມນິສຖານ + ຕູນິເຊຍ + ທອງກາ + ເທີຄີ + ທຣິນິແດດ ແລະ ໂທແບໂກ + ຕູວາລູ + ໄຕ້ຫວັນ + ທານຊາເນຍ + ຢູເຄຣນ + ອູການດາ + ຫມູ່ເກາະຮອບນອກຂອງສະຫະລັດ + ສະຫະລັດ + ສະຫະລັດຯ + ອູຣຸກວຍ + ອຸສເບກິສຖານ + ນະຄອນ ວາຕິກັນ + ເຊນ ວິນເຊນ ແລະ ເດິ ເກຣເນດິນ + ເວເນຊູເອລາ + ໝູ່ເກາະ ບຣິທິຊ ເວີຈິນ + ໝູ່ເກາະ ຢູເອສ ເວີຈິນ + ຫວຽດນາມ + ວານົວຕູ + ວາລິສ ແລະ ຟຸຕູນາ + ຊາມົວ + ໂຄໂຊໂວ + ເຢເມນ + ມາຢອດ + ອາຟະລິກາໃຕ້ + ແຊມເບຍ + ຊິມບັບເວ + ຂົງເຂດທີ່ບໍ່ຮູ້ຈັກ + + + ເຢຍລະມັນອໍໂທກຣາຟີດັ້ງເດີມ + ອັກສອນເຣຊ່ຽນມາດຕະຖານ + ເຢຍລະມັນອໍໂທກຣາຟີປີ1996 + ປາຍຍຸກກາງຝຣັ່ງເຖິງປີ ຄສ 1606 + ຕອນຕົ້ນຍຸກໃໝ່ຝຣັ່ງ + ວິຊາການ + ການຖອດອັກສອນເປັນອັກສອນໂຣມັນຕາມເກນຂອງສະມາຄົມຫ້ອງສະໝຸດອາເມລິກາແລະຫ້ອງສະໝຸດລັດຖະສະພາ ສະບັບພິມປີ 1997 + ພາສາພື້ນເມືອງອລູຄຸ + ອາເມເນຍຕາເວັນອອກ + ອາເມເນຍຕາເວັນຕົກ + ຕົວອັກສອນລາຕິນເທີກິກແບບຄົບວົງຈອນ + ພະພຸດທະເຈົ້າ + ບິສຄາຍັນ + ພາສາພື້ນເມືອງຊານຈິໂອໂຈ/ບິລາ + ບູນທລິ່ງ + ສັດທະສາດອັກສອນສາກົນ + ສັດທະສາດອັກສອນ UPA + ຟອນແຊມ + ການຖອດອັກສອນແບບເຮບເບິນ + ພາສານໍວີຈ່ຽນສູງ + ອິຕິຫາສະ + ເຍົາເອີ + ການຖອດອັກສອນແບບຍູດພິງ + ອັກຂະລະວິທີສາມັນ + ລົວກິກາ + ພາສາພື້ນເມືອງລິໂພວາຊ໌ຂອງເຣຊ່ຽນ + ລູນ່າ1918 + ໂມໂນໂທນິກ + ພາສາພື້ນເມືອງດິວຄາ + ພາສາພື້ນເມືອງນາທິໂຊເນ + ພາສາພື້ນເມືອງຈີວາ/ນີວາ + ພາສາພື້ນເມືອງໂອຊຽກໂຄ/ໂອໂຊຍາເນ + ພາສາພື້ນເມືອງພາມາຄາ + ພີທ໌1708 + ພິນຢິນ + ໂພລີໂທນິກ + ຄອມພິວເຕີ + ພິວເຕີ + ອັກຂະລະວິທີສະບັບປັບປຸງ + ເຣຊ່ຽນ + ຣຳກຣ໌ + ຊາໂຮ + ພາສາອັງກິດມາດຕະຖານສະກັອດ + ສະເກົາສ໌ + ພາສາພື້ນເມືອງສະໂຕວິຊ໌ຊ່າ/ໂຊລ໌ບີກາ + ຊູຣ໌ມິລານ + ຊູຣ໌ຊີລ໌ + ຊຸຕ໌ຊີລ໌ + ອັກຂະລະວິທີທາຣາຊ໌ເຄຍວິກາ + ອັກຂະລະວິທີແບບຄົບວົງຈອນ + ອັກຂະລະວິທີສະບັບປັບປຸງແບບຄົບວົງຈອນ + ອັລສະເຕີ + ເວດິກາ + ວາເລັນເຊຍ + ວັລລາເດີ + ການຖອດອັກສອນແບບເວດ-ໄຈລ໌ + + + ປະຕິທິນ + ຮຽງລຳດັບ + ເງິນຕາ + ຕົວເລກ + + + ຕົວເລກອາຣາບິກ-ອິນດິກ + ຕົວເລກອາຣາບິກ-ອິນດິກຕົວເຕັມ + ຕົວເລກອາເມນຽນ + ຕົວເລກອາເມນຽນຕົວພິມນ້ອຍ + ຕົວເລກບາລີ + ຕົວເລກເບັງກາລີ + ລຽງຕາມອັກສອນຈີນດັ້ງເດີມ + ປະຕິທິນພຸດ + ຕົວເລກຊຣາມ + ປະຕິທິນຈີນ + ປະຕິທິນຄັອບຕິກ + ຕົວເລກເດວັນເນກາ + ລຽງຕາມພົດຈະນານຸກົມ + ຮຽງຕາມລຳດັບຢູນິໂຄດເລີ່ມຕົ້ນ + ຕົວເລກເອທິໂອປິກ + ປະຕິທິນເອທິໂອເປຍ + ປະຕິທິນປີໂອເອທິໂອເປຍ + ຕົວເລກຄວາມກວ້າງເຕັມ + ລຽງຕາມອັກສອນຈີນປະຍຸກ + ຕົວເລກຈໍຈຽນ + ປະຕິທິນເກຣໂກຣຽນ + ຕົວເລກກຣີກ + ຕົວເລກກຣີກຕົວພິມນ້ອຍ + ຕົວເລກກຸຈາລາຕິ + ຕົວເລກກົວມູຄິ + ຕົວເລກທົດສະນິນົມຈີນ + ຕົວເລກຈີນແບບຮຽບງ່າຍ + ຕົວເລກທາງການເງິນແບບຮຽບງ່າຍຂອງຈີນ + ຕົວເລກຈີນແບບດັ້ງເດີມ + ຕົວເລກທາງການເງິນແບບດັ້ງເດີມຂອງຈີນ + ຕົວເລກຮິບຣິວ + ປະຕິທິນຮິບບິວ + ປະຕິທິນແຫ່ງຊາດອິນເດຍ + ປະຕິທິນອິສະລາມ + ປະຕິທິນອິດສະລາມ + ປະຕິທິນຍີ່ປຸ່ນ + ຕົວເລກຊົວ + ຕົວເລກຍີ່ປຸ່ນ + ຕົວເລກທາງການເງິນຂອງຍີ່ປຸ່ນ + ຕົວເລກກາຢາ + ຕົວເລກຂະແມ + ຕົວເລກແຄນນາດາ + ຕົວເລກໄທທຳໂຮລາ + ຕົວເລກໄທທຳທຳ + ຕົວເລກລາວ + ຕົວເລກຕາເວັນຕົກ + ຕົວເລກເລຊາ + ຕົວເລກລິມບູ + ຕົວເລກມາເລອາລຳ + ຕົວເລກມ່ອງໂກເລຍ + ຕົວເລກເມໄຕມາເຢກ + ຕົວເລກມຽນມາ + ຕົວເລກຊານພະມ້າ + ຕົວເລກເອັນໂກ້ + ຕົວເລກໂອລຈິກິ + ຕົວເລກໂອຣິຢາ + ປະຕິທິນເປີຊຽນ + ລຽງຕາມສະໝຸດໂທລະສັບ + ລຽງຕາມການອອກສຽງພາສາຈີນ + ລຽງຕາມລຳດັບສຸດທ້າຍ + ປະຕິທິນໄຕ້ຫວັນ + ຕົວເລກໂຣມັນ + ຕົວເລກໂຣມັນຕົວພິມນ້ອຍ + ຕົວເລກເສົາລັດທາ + ການຊອກຫາທົ່ວໄປ + ຄົ້ນຫາຕາມພະຍັນຊະນະຂຶ້ນຕົ້ນທີ່ເປັນຮັງກີຣ + ຮຽງຕາມມາດຕະຖານ + ລຽງຕາມການລາກເສັ້ນ + ຕົວເລກຊຸນດາ + ຕົວເລກໄຕລື້ໃໝ່ + ຕົວເລກທາມິວແບບດັ້ງເດີມ + ຕົວເລກທາມິວ + ຕົວເລກເຕລູກູ + ຕົວເລກໄທ + ຕົວເລກທິເບດ + ລຽງຕາມແບບດັ້ງເດີມ + ລຽງລຳດັບຕາມຈຳນວນຂີດ + ຕົວເລກໃນລະບົບໄວ + + + ເມທຣິກ + ອັງກິດ + ອາເມລິກາ + + + {0} + {0} + {0} + + + + [\u0EC8 \u0EC9 \u0ECA \u0ECB \u0ECC \u0ECD ໆ ກ ຂ ຄ ງ ຈ ສ ຊ ຍ ດ ຕ ຖ ທ ນ ບ ປ ຜ ຝ ພ ຟ ມ ຢ ຣ ລ ວ ຫ ໜ ໝ ອ ຮ ຯ ະ \u0EB1 າ ຳ \u0EB4 \u0EB5 \u0EB6 \u0EB7 \u0EB8 \u0EB9 \u0EBB \u0EBC ຽ ເ ແ ໂ ໃ ໄ] + [\u200B ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙] + [ກ ຂ ຄ ງ ຈ ສ ຊ ຍ ດ ຕ ຖ ທ ນ ບ ປ ຜ ຝ ພ ຟ ມ ຢ ຣ ລ ວ ຫ {ຫງ} {ຫຍ} {ຫນ} {ຫມ} {ຫລ} {ຫວ} ອ ຮ] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ຂໍ້ມູນເພີ່ມເຕີມ + + + + + + + + + + + + + ພ.ສ. + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + ຊີ + ຊູ + ຢິນ + ເມົາ + ເຊັນ + ຊື່ + ວູ + ເວີຍ + ເຊິ່ນ + ຢູ + ຊູ່ + ໄຮ + + + + + + + ເຈຍ-ຊິ + ຢີ-ຊູ + ບິງ-ຢິນ + ດິງ-ເມົາ + ວູ-ເຊັນ + ຈີ-ຊິ + ແກງ-ວູ + ຊິນ-ເວີຍ + ເຣນ-ເຊນ + ກຸຍ-ຢູ + ໄຈ-ຊູ + ຢີ-ໄຮ + ບິງ-ຊີ + ດິງ-ຊູ + ວູ-ຢິນ + ຈີ-ເມົາ + ແກງ-ເຊນ + ຊິນ-ຊິ + ເຣນ-ວູ + ກຸຍ-ເວີຍ + ເຈຍ-ເຊນ + ຢີ-ຢູ + ບິງ-ຊູ + ດິງ-ໄຫ + ວູ-ຊິ + ຈີ-ຊູ + ເກງ-ຢິນ + ຊິນ-ເມົາ + ເຣນເຊິ່ນ + ກຸຍ-ຊິ + ໄຈ-ວູ + ຢີ-ເວີຍ + ບິງ-ເຊນ + ດິງ-ຢູ + ວູ-ຊູ + ຈີ-ໄຫ + ເກງ-ຊິ + ຊິນ-ຊູ + ເຣຍ-ຢິນ + ກຸຍ-ເມົາ + ໄຈ-ເຊນ + ຢີ-ຊິ + ບິງ-ວູ + ດິງ-ເວີຍ + ວູ-ເກນ + ຈີ-ຢູ + ເກງ-ຊູ + ຊິນ-ໄຫ + ເຣນ-ຊິ + ກຸຍ-ຊູ + ເຈຍ-ຢິນ + ຢິ-ເມົາ + ບິງເຊິ່ນ + ດິງ-ຊິ + ວູ-ວູ + ຈີ-ເວີຍ + ເກງ-ເຊນ + ຊິນ-ຢູ + ເຣນ-ຊູ + ກຸຍຮ່າຍ + + + + + + + ໜູ + ງົວຜູ້ + ເສືອ + ກະຕ່າຍ + ມັງກອນ + ງູ + ມ້າ + ແກະ + ລິງ + ໄກ່ຜູ້ + ໝາ + ໝູ + + + + + + + + EEEE, U MMMM dd + + + + + U MMMM d + + + + + U MMM d + + + + + y-M-d + + + + + + + + + ເທົາ + ບາບາ + ຮາໂຕ + ເຄຍ + ໂທບາ + ອຳເຊີ + ບາລຳຮາດ + ບາລາມູດາ + ບາສຮານ + ເປົານາ + ອີແປບ + ມາສລາ + ນາຊິວ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + ເທົາ + ບາບາ + ຮາໂຕ + ເຄຍ + ໂທບາ + ອາເຊີ + ບາລຳຮາດ + ບາລາມູດາ + ບາສຮານ + ເປົານາ + ອີແປບ + ມາສລາ + ນາຊີວ + + + + + ເທົາ + ບາບາ + ຮາໂຕ + ເຄຍ + ໂທບາ + ອຳເຊີ + ບາລຳຮາດ + ບາລາມູດາ + ບາສຮານ + ເປົານາ + ອີແປບ + ມາສລາ + ນາຊີວ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + ເທົາ + ບາບາ + ຮາໂຕ + ເຄຍ + ໂທບາ + ອຳເຊີ + ບາລຳຮາດ + ບາລາມູດາ + ບາສຮານ + ເປົານາ + ອີແປບ + ມາສລາ + ນາຊີວ + + + + + + + + + ແມສເຄີແຣມ + ເຕເກມ + ເຮດາ + ທາຊັສ + ເທີ + ເຍຄາທິດ + ເມກາບິດ + ເມຍເຊຍ + ເຈນບອດ + ເຊເນ + ຮຳເລ + ເນແຮສ໌ + ພາກູເມນ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + ແມສເຄີແຣມ + ເຕເກມ + ເຮດາ + ທາຊັສ + ເທີ + ເຍຄາທິດ + ເມກາບິດ + ເມຍເຊຍ + ເຈນບອດ + ເຊເນ + ຮຳເລ + ເນແຮສ໌ + ພາກູເມນ + + + + + ແມສເຄີແຣມ + ເຕເກມ + ເຮດາ + ທາຊັສ + ເທີ + ເຍຄາທິດ + ເມກາບິດ + ເມຍເຊຍ + ເຈນບອດ + ເຊເນ + ຮຳເລ + ເນແຮສ໌ + ພາກູເມນ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + ແມສເຄີແຣມ + ເຕເກມ + ເຮດາ + ທາຊັສ + ເທີ + ເຍຄາທິດ + ເມກາບິດ + ເມຍເຊຍ + ເຈນບອດ + ເຊເນ + ຮຳເລ + ເນແຮສ໌ + ພາກູເມນ + + + + + + + + + EEEEທີ d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + G y + G MMM y + G d MMM y + G E, d MMM y + h ໂມງa + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E d MMM + mm:ss + G y + G y + G M/y + G d/M/y + E, G d/M/y + G MMM y + G d MMM y + E, G d MMM y + G QQQ y + G y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM-dd – dd + MM-dd – MM-dd + + + E, MM-dd – E, MM-dd + E, MM-dd – E, MM-dd + + + LLL–LLL + + + MM-d – d + MM-d – MM-d + + + E, MM-d – E, MM-d + E, MM-d – E, MM-d + + + G y–y + + + G y-MM – MM + G y-MM – y-MM + + + G y-MM-dd – dd + G y-MM-dd – MM-dd + G y-MM-dd – y-MM-dd + + + E, G y-MM-dd – E, y-MM-dd + E, G y-MM-dd – E, y-MM-dd + E, G y-MM-dd – E, y-MM-dd + + + G y-MM – MM + G y-MM – y-MM + + + G y-MM-d – d + G y-MM-dd – MM-d + G y-MM-dd – y-MM-dd + + + E, G y-MM-dd – E, y-MM-dd + E, G y-MM-dd – E, y-MM-dd + E, G y-MM-dd – E, y-MM-dd + + + G y-MM – MM + G y-MM – y-MM + + + + + + + + + ມ.ກ. + ກ.ພ. + ມ.ນ. + ມ.ສ. + ພ.ພ. + ມິ.ຖ. + ກ.ລ. + ສ.ຫ. + ກ.ຍ. + ຕ.ລ. + ພ.ຈ. + ທ.ວ. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ມັງກອນ + ກຸມພາ + ມີນາ + ເມສາ + ພຶດສະພາ + ມິຖຸນາ + ກໍລະກົດ + ສິງຫາ + ກັນຍາ + ຕຸລາ + ພະຈິກ + ທັນວາ + + + + + ມ.ກ. + ກ.ພ. + ມ.ນ. + ມ.ສ. + ພ.ພ. + ມິ.ຖ. + ກ.ລ. + ສ.ຫ. + ກ.ຍ. + ຕ.ລ. + ພ.ຈ. + ທ.ວ. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ມັງກອນ + ກຸມພາ + ມີນາ + ເມສາ + ພຶດສະພາ + ມິຖຸນາ + ກໍລະກົດ + ສິງຫາ + ກັນຍາ + ຕຸລາ + ພະຈິກ + ທັນວາ + + + + + + + ວັນອາທິດ + ວັນຈັນ + ວັນອັງຄານ + ວັນພຸດ + ວັນພະຫັດ + ວັນສຸກ + ວັນເສົາ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + ວັນອາທິດ + ວັນຈັນ + ວັນອັງຄານ + ວັນພຸດ + ວັນພະຫັດ + ວັນສຸກ + ວັນເສົາ + + + ວັນອາທິດ + ວັນຈັນ + ວັນອັງຄານ + ວັນພຸດ + ວັນພະຫັດ + ວັນສຸກ + ວັນເສົາ + + + + + ວັນອາທິດ + ວັນຈັນ + ວັນອັງຄານ + ວັນພຸດ + ວັນພະຫັດ + ວັນສຸກ + ວັນເສົາ + + + + + + ​ພຸ + + ​ສຸ + + + + ອ.ທ. + ຈັນ + + + ພຫ + ວັນສຸກ + ເສົາ + + + ວັນອາທິດ + ວັນຈັນ + ວັນອັງຄານ + ວັນພຸດ + ວັນພະຫັດ + ວັນສຸກ + ວັນເສົາ + + + + + + + ຕມ1 + ຕມ2 + ຕມ3 + ຕມ4 + + + 1 + 2 + 3 + 4 + + + ໄຕຣມາດ 1 + ໄຕຣມາດ 2 + ໄຕຣມາດ 3 + ໄຕຣມາດ 4 + + + + + ຕ1 + ຕ2 + ຕ3 + ຕ4 + + + 1 + 2 + 3 + 4 + + + ໄຕຣມາດ 1 + ໄຕຣມາດ 2 + ໄຕຣມາດ 3 + ໄຕຣມາດ 4 + + + + + + + ກ່ອນທ່ຽງ + ຫຼັງທ່ຽງ + + + + + + ກ່ອນ ຄ.ສ. + ຄ.ສ. + + + + + + EEEE ທີ d MMMM G y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + H ໂມງ m ນາທີ ss ວິນາທີ zzzz + + + + + H ໂມງ m ນາທີ ss ວິນາທີ z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + MMM, G y + d MMMM, G y + E d MMMM, G y + h ໂມງa + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E d MMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd/MM – dd/MM + dd/MM – dd/MM + + + E, dd/MM – E, dd/MM + E, dd/MM – E, dd/MM + + + LLL–LLL + + + d/MM – d/MM + d/MM – d/MM + + + E, d/MM – E, d/MM + E, d/MM – E, d/MM + + + y–y + + + MM/y – MM/y + y/MM – y/MM + + + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + dd/MM/y – dd/MM/y + + + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + + + MM/y – MM/y + MM/y – MM/y + + + d/MM/y – d/MM/y + d/MM/y – d/MM + dd/MM/y – dd/MM/y + + + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + E, dd/MM/y – E, dd/MM/y + + + MM/y – MM + MM/y – MM/y + + + + + + + + + ທຣິດຣີ + ເຮວານ + ກິດເລບ + ເຕເວດ + ຊີວັດ + ອາດາ I + ອາດາ + ອາດາ II + ນິດຊານ + ອີຍາຣ + ສີວານ + ຕາມູ + ເອບ + ອີລູ + + + ທຣິດຣີ + ເຮວານ + ກິດເລບ + ເຕເວດ + ຊີວັດ + ອາດາ I + ອາດາ + ອາດ II + ນິດຊານ + ອີຍາ + ສີວານ + ຕາມູ + ເອບ + ອີລູ + + + + + ທຣິດຣີ + ເຮວານ + ກິດເລບ + ເຕເວດ + ຊີວັດ + ອາດາ I + ອາດາ + ອາດາ II + ນິດຊານ + ອີຍາຣ + ສີວານ + ຕາມູ + ເອບ + ອີລູ + + + ທຣິດຣີ + ເຮວານ + ກິດເລບ + ເຕເວດ + ຊີວັດ + ອາດາ I + ອາດາ + ອາດາ II + ນິດຊານ + ອີຍາ + ສີວານ + ຕາມູ + ເອບ + ອີລູ + + + + + + AM + + + + + + + + ຈິຕຣາ + ວິສາຂະ + ເຊດຖາ + ອັດສາ + ສາຣາວານາ + ພະຕຣາ + ອັສວິຊາ + ການຕິກາ + ອັກຣາຮາຢານາ + ປຸສາ + ມາຄະ + ຜາລກຸນີ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ຈິຕຣາ + ວິສາຂະ + ເຊດຖາ + ອັດສາ + ສາຣາວານາ + ພະຕຣາ + ອັສວິຊາ + ການຕິກາ + ອັກຣາຮາຢານາ + ປຸສະຍາ + ມາຄະ + ຜາລກຸນີ + + + + + ຈິຕຣາ + ວິສາຂະ + ເຊດຖາ + ອັດສາ + ສາຣາວານາ + ພະຕຣາ + ອັສວິຊາ + ການຕິກາ + ອັກຣາຮາຢານາ + ປຸສະຍາ + ມາຄະ + ຜາລກຸນີ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ຈິຕຣາ + ວິສາຂະ + ເຊດຖາ + ອັດສາ + ສາຣາວານາ + ພະຕຣາ + ອັສວິຊາ + ການຕິກາ + ອັກຣາຮາຢານາ + ປຸສະຍາ + ມາຄະ + ຜາລກຸນີ + + + + + + ມ.ສ. + + + + + + + + ມຸຮັດ + ເຄາະ + ຮອດບີ 1 + ຮອກບີ 2 + ນຸມາ 1 + ນຸມາ 2 + ເຮາະ + ຊະອ໌ + ເຮາະມະ + ເຊົາ + ຊຸລກິອຸ + ຊຸລຫິຈ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ມຸຣະຮອມ + ຊາຟາຣ + ຮາບີ 1 + ຮາບີ 2 + ຈຸມາດາ 1 + ຈຸມາດາ 2 + ຮາຈັບ + ຊະບານ + ຮາມາດອນ + ເຊົາວັດ + ດຸອັດກິດະ + ດຸອັດກິຈະ + + + + + ມຸຮັດ + ເຄາະ + ຮອກບີ 1 + ຮອກບີ 2 + ນຸມາ 1 + ນຸມາ 2 + ເຮາະ + ຊາ + ເຮາະມະ + ເຊົາ + ຊຸລກິອຸ + ຊຸລຫິຈ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ມຸຣະຮອມ + ຊາຟາຣ + ຮາບີ 1 + ຮາບີ 2 + ຈຸມາດາ 1 + ຈຸມາດາ 2 + ຮາຈັບ + ຊະບານ + ຮາມາດອນ + ເຊົາວັດ + ດຸອັດກິດະ + ດຸອັດກິຈະ + + + + + + AH + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + d + ha + H + h mm a + H:mm + H:mm:ss + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E MMM d + mm:ss + y + M/y + E M/d/y + MMM y + E,MMM d,y + QQQ y + QQQQ y + + + + + + + ທະອິກະ (645–650) + ຮາກູຊິ (650–671) + ຮາກູໂຮ (672–686) + ຊູໂຊ (686–701) + ທາອິໂຮ (701–704) + ເຄອຸງ (704–708) + ວະໂດ (708–715) + ເຣອິກິ (715–717) + ໂຢໂຣ (717–724) + ຈິງກິ (724–729) + ເທັມປຽວ (729–749) + ເທັມປຽວ-ຄໍາໂປ (749–749) + ເທັມປຽວ-ໂຊໂຮ (749–757) + ເທັມປຽວ-ໂຮຈິ (757–765) + ເທັມປຽວ-ຈິງໂງະ (765–767) + ຈິງໂງະ-ເຄອຸງ (767–770) + ໂຮກິ (770–780) + ເທັນ-ໂອ (781–782) + ເອັນຣຢາກຸ (782–806) + ດາອິໂດ (806–810) + ໂກນິນ (810–824) + ເທັນໂຊ (824–834) + ໂຊວະ (834–848) + ກະໂຈ (848–851) + ນິນຈູ (851–854) + ສະອິໂກະ (854–857) + ເທັນນານ (857–859) + ໂຈງານ (859–877) + ເກັນເກ (877–885) + ນິນນາ (885–889) + ກໍາປຽວ (889–898) + ໂຊຕາອິ (898–901) + ເອັນງິ (901–923) + ເອັນໂຊ (923–931) + ໂຊເຮ (931–938) + ເທັນງຽວ (938–947) + ເທັນຣຢາກູ (947–957) + ເທັນໂຕະກຸ (957–961) + ໂອວະ (961–964) + ໂກໂຮ (964–968) + ອານະ (968–970) + ເທັນໂຣະກຸ (970–973) + ເທັນ-ເອັນ (973–976) + ໂຈເງັນ (976–978) + ເທັນເງັນ (978–983) + ເອການ (983–985) + ການນະ (985–987) + ເອ-ເອັນ (987–989) + ເອໂຊ (989–990) + ໂຊຣຢະກຸ (990–995) + ໂຊໂຕະກຸ (995–999) + ໂຊໂຮ (999–1004) + ການໂກ (1004–1012) + ໂຊຫວະ (1012–1017) + ການນິງ (1017–1021) + ຈິອານ (1021–1024) + ມານຈຸ (1024–1028) + ໂຊເງັນ (1028–1037) + ໂຊເຣຢະກຸ (1037–1040) + ໂຊຄິວ (1040–1044) + ການໂຕະກຸ (1044–1046) + ເອະໂຊ (1046–1053) + ເທັນງິ (1053–1058) + ໂກເຮ (1058–1065) + ຈິເຣຢະກຸ (1065–1069) + ເອັນຄິວ (1069–1074) + ໂຊະໂຮ (1074–1077) + ໂຊະເຣຢະກຸ (1077–1081) + ເອໂຊະ (1081–1084) + ໂອໂຕະກຸ (1084–1087) + ການຈິ (1087–1094) + ກາໂຊ (1094–1096) + ເອະໂຊະ (1096–1097) + ໂຊະໂຕະກຸ (1097–1099) + ໂກະວະ (1099–1104) + ໂຊະຈິ (1104–1106) + ກາໂຊະ (1106–1108) + ເທັນນິນ (1108–1110) + ເທັນ-ອິ (1110–1113) + ເອກິວ (1113–1118) + ເຄັນ-ເອ (1118–1120) + ໂຮະອານ (1120–1124) + ເທັນຈິ (1124–1126) + ດາອິຈິ (1126–1131) + ເທັນໂຊະ (1131–1132) + ໂຊະໂຊະ (1132–1135) + ໂຮເອັນ (1135–1141) + ເອຈິ (1141–1142) + ໂກະຈິ (1142–1144) + ເທັນໂຢະ (1144–1145) + ຄິວອານ (1145–1151) + ນິນເປ (1151–1154) + ຄິວຈຸ (1154–1156) + ໂຮເຄັນ (1156–1159) + ເຮຈິ (1159–1160) + ເອເຣຢະກຸ (1160–1161) + ໂອໂຊ (1161–1163) + ໂຊະການ (1163–1165) + ເອມານ (1165–1166) + ນິນ-ອານ (1166–1169) + ກະໂອ (1169–1171) + ໂຊະອານ (1171–1175) + ອານເຄັນ (1175–1177) + ຈິໂຊະ (1177–1181) + ໂຢະວະ (1181–1182) + ຈຸເອະ (1182–1184) + ເຄັນເຣຢຸກິ (1184–1185) + ບັນຈິ (1185–1190) + ເກັນຄິວ (1190–1199) + ໂຊຈິ (1199–1201) + ເກັນນິນ (1201–1204) + ເຄັນກິວ (1204–1206) + ເກັນ-ເອະ (1206–1207) + ໂຊະເຄັນ (1207–1211) + ເກັນເຣຢະກຸ (1211–1213) + ເກັນໂປະ (1213–1219) + ໂຊະກິວ (1219–1222) + ໂຈະໂອະ (1222–1224) + ເຄັນນິນ (1224–1225) + ກາໂຮກຸ (1225–1227) + ອານເຕະ (1227–1229) + ການກິ (1229–1232) + ໂຈະເອະ (1232–1233) + ເທັມປຸກຸ (1233–1234) + ບັນເຣຢະກຸ (1234–1235) + ກາເຕະ (1235–1238) + ເຣຢະກຸນິນ (1238–1239) + ເອັນ-ໂອ (1239–1240) + ນິນຈີ (1240–1243) + ຄານເຈນ (1243–1247) + ໂຫຈີ (1247–1249) + ເຄນໂຊ (1249–1256) + ໂຄເຈນ (1256–1257) + ໂຊກາ (1257–1259) + ໂຊເກນ (1259–1260) + ບຸນ-ໂອ (1260–1261) + ໂຄໂຊ (1261–1264) + ບຸນ-ອີ (1264–1275) + ເຄນຈີ (1275–1278) + ເຄິນ (1278–1288) + ໂຊ (1288–1293) + ອິນນິນ (1293–1299) + ເຊີນ (1299–1302) + ເຄນເຈນ (1302–1303) + ຄາເຈນ (1303–1306) + ໂຕກູຈິ (1306–1308) + ອິນກິ (1308–1311) + ໂອໂຊ (1300–1312) + ໂຊວາ (1312–1317) + ບຸນໂປ (1317–1319) + ຈີໂນ (1319–1321) + ເຈນກຽວ (1321–1324) + ໂຊຊິ (1324–1326) + ຄາຣາກິ (1326–1329) + ເຈນໂຕກູ (1329–1331) + ເຈນໂກ (1331–1334) + ເກັມມຸ (1334–1336) + ເອັນເຈັນ (1336–1340) + ໂກໂກກຸ (1340–1346) + ໂຊຊິ (1346–1370) + ເຄນໂຕກຸ (1370–1372) + ບຸນຊຸ (1372–1375) + ເທັນຈຸ (1375–1379) + ຄໍຢາກຸ (1379–1381) + ໂກວາ (1381–1384) + ເຈັນຊຸ (1384–1392) + ມີໂຕກຸ (1384–1387) + ກາກິ (1387–1389) + ຄູ (1389–1390) + ມິໂຕກຸ (1390–1394) + ໂອອິ (1394–1428) + ໂຊໂຊ (1428–1429) + ອິກຽວ (1429–1441) + ກາກິຊຸ (1441–1444) + ບຸນ-ອານ (1444–1449) + ໂຫໂຕກຸ (1449–1452) + ກຽວໂຕກຸ (1452–1455) + ເກໂຊ (1455–1457) + ໂຊໂຣກຸ (1457–1460) + ຄານໂຊ (1460–1466) + ບຸນໂຊ (1466–1467) + ໂອນິນ (1467–1469) + ບຸນມິ (1469–1487) + ໂຊກຽວ (1487–1489) + ເອັນໂຕກຸ (1489–1492) + ມິໂອ (1492–1501) + ບຸນກິ (1501–1504) + ອິໂຊ (1504–1521) + ໄຕອິ (1521–1528) + ກຽວໂຣກຸ (1528–1532) + ເທັນມອນ (1532–1555) + ໂກຈິ (1555–1558) + ອິໂຣກຸ (1558–1570) + ເຈັນກິ (1570–1573) + ເທັນໂຊ (1573–1592) + ບຸນໂຣກຸ (1592–1596) + ຄິໂຊ (1596–1615) + ເກັນວາ (1615–1624) + ຄານ-ອິ (1624–1644) + ໂຊໂຊ (1644–1648) + ຄຽນ (1648–1652) + ຊຸ (1652–1655) + ເມຍຢາກຸ (1655–1658) + ແມນຈິ (1658–1661) + ການບຸນ (1661–1673) + ເອັນໂປ (1673–1681) + ເທັນວາ (1681–1684) + ໂຈກຽວ (1684–1688) + ເຈັນໂຣກຸ (1688–1704) + ໂຫອິ (1704–1711) + ຊຸຕຸກຸ (1711–1716) + ກຽວຫຸ (1716–1736) + ເຈັນບຸນ (1736–1741) + ຄານໂປ (1741–1744) + ເອັນກຽວ (1744–1748) + ຄານ-ອິນ (1748–1751) + ໂຫຢາກຸ (1751–1764) + ເມຍວາ (1764–1772) + ເອັນ-ອິ (1772–1781) + ເທັນມິ (1781–1789) + ຄານຊິ (1789–1801) + ກຽວວາ (1801–1804) + ບຸນກາ (1804–1818) + ບຸນຊິ (1818–1830) + ເທັນໂປ (1830–1844) + ກຸກາ (1844–1848) + ກາອິ (1848–1854) + ແອັນຊິ (1854–1860) + ແມັນ-ເອັນ (1860–1861) + ບຸນກຸ (1861–1864) + ເຈນຈີ (1864–1865) + ຄີໂອ (1865–1868) + ມີຈີ + ໄຕໂຊ + ໂຊວາ + ຮີຊີ + + + + + + + + ຟາຣວາດິນ + ອໍຣດີບີເຫຣດ + ຄໍຣເດດ + ແຕຣ + ມໍຣເດດ + ຊາຣຫິວາ + ເມີ + ອາບານ + ອາຊາ + ດີຣ + ບຣາມານ + ເອສຟານ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ຟຣາວາດິນ + ອໍຣດີບີເຫຣດ + ຄໍຣເດດ + ແຕຣ + ມໍຣດາເ + ຊາຣຫິວາ + ເມີ + ອາບານ + ອາຊາຣ + ດີຣ + ບຣາແມນ + ເອສຟານ + + + + + ຟຣາວາດິນ + ອໍຣດີບີເຫຮດ + ຄໍຣເດດ + ແຕຣ + ມໍຣເດດ + ຊາຣລິວາ + ເມີ + ອາບານ + ອາຊາ + ດີຣ + ບຣາມານ + ເອສຟານ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ຟຣາວາດິນ + ອໍຣດີບີເຫຣດ + ຄໍຣເດດ + ແຕຣ + ມໍຣເດດ + ຊາຣຫິວາ + ເມີ + ອາບານ + ອາຊາຣ + ດີຣ + ບຣາແມນ + ເອສຟານ + + + + + + ປີເປີເຊຍ + + + + + + + ກ່ອນ R.O.C. + + + + + + + ສະໄໝ + + + ປີ + ປີກາຍ + ປີນີ້ + ປີໜ້າ + + ໃນອີກ {0} ປີ + + + {0} ປີກ່ອນ + + + + ເດືອນ + ເດືອນແລ້ວ + ເດືອນນີ້ + ເດືອນໜ້າ + + ໃນອີກ {0} ເດືອນ + + + {0} ເດືອນກ່ອນ + + + + ອາທິດ + ອາທິດແລ້ວ + ອາທິດນີ້ + ອາທິດໜ້າ + + ໃນອີກ {0} ອາທິດ + + + {0} ອາທິດກ່ອນ + + + + ມື້ + ມື້ກ່ອນ + ມື້ວານ + ມື້ນີ້ + ມື້ອື່ນ + ມື້ຮື + + ໃນອີກ {0} ມື້ + + + {0} ມື້ກ່ອນ + + + + ມື້ຂອງອາທິດ + + + ວັນເສົາແລ້ວ + ວັນເສົານີ້ + ວັນເສົາໜ້າ + + + ວັນຈັນແລ້ວ + ວັນຈັນນີ້ + ວັນຈັນໜ້າ + + + ວັນອັງຄານແລ້ວ + ວັນອັງຄານນີ້ + ວັນອັງຄານໜ້າ + + + ວັນພຸດແລ້ວ + ວັນພຸດນີ້ + ວັນພຸດໜ້າ + + + ວັນພະຫັດແລ້ວ + ວັນພະຫັດນີ້ + ວັນພະຫັດໜ້າ + + + ວັນສຸກແລ້ວ + ວັນສຸກນີ້ + ວັນສຸກໜ້າ + + + ວັນເສົາແລ້ວ + ວັນເສົານີ້ + ວັນເສົາໜ້າ + + + ກ່ອນທ່ຽງ/ຫຼັງທ່ຽງ + + + ຊົ່ວໂມງ + + ໃນອີກ {0} ຊົ່ວໂມງ + + + {0} ຊົ່ວໂມງກ່ອນ + + + + ນາທີ + + {0} ໃນອີກ 0 ນາທີ + + + {0} ນາທີກ່ອນ + + + + ວິນາທີ + ຕອນນີ້ + + ໃນອີກ {0} ວິນາທີ + + + {0} ວິນາທີກ່ອນ + + + + ເຂດເວລາ + + + + +HH:mm;-HH:mm + GMT{0} + GMT + ເວລາ {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + ບໍ່ຮູ້ຈັກ + + + ອັນໂດລາ + + + ດູໃບ + + + ກາບູຣ + + + ແອນຕີກາ + + + ແອນກິນລາ + + + ຕີລານີ + + + ເຍເຣວານ + + + ແລມດາ + + + ໂຣເທຣາ + + + ພາມເມີ + + + ເຊຍວາ + + + ເມົາຊັນ + + + ດາວີສ + + + ວໍສະຕອກ + + + ເຄຊີ + + + ດູມອນດີຍູວີວສ໌ + + + ແມັກມົວໂດ + + + ຣີໂອ ການເລກອດ + + + ເມັນໂດຊ່າ + + + ແຊນຈືນ + + + ອູຊູເອຍ + + + ເລ ຣີໂອຈາ + + + ແຊນລຸຍ + + + ກາຕາມາກາ + + + ຊານຕາ + + + ຈູຈຸຍ + + + ຕູຄູແມນ + + + ຄໍໂດບາ + + + ເບີນອດແອ + + + ປາໂກປາໂກ + + + ວຽນນາ + + + ເພີດ + + + ຍູລາ + + + ດາຣວິນ + + + ເອດີແລດ + + + ໂບເຄນຮີວ + + + ກູຣີ + + + ເມວເບິຣນ + + + ໂຮບາດ + + + ລິນດີແມນ + + + ຊິດນີ + + + ບຣິດເບນ + + + ແມັກຄົວຣີ + + + ໂລດໂຮວີ + + + ອາຣູບາ + + + ມາລີຮາມ + + + ບາກູ + + + ສາຣາເຍໂວ + + + ບາເບດອສ + + + ດາກາ + + + ບາສເຊວ + + + ອູກາດູກູ + + + ໂຊເຟຍ + + + ບາເຫເຣນ + + + ບູຈູມບູລາ + + + ປໍໂຕ-ໂນໂວ + + + ຊຽນບາທີລີມີ + + + ເບີມູດາ + + + ບຣູໄນ + + + ລາປາສ + + + ຄຣາເລນດິກ + + + ເອລູເນປີ + + + ລີໂອບັງໂກ + + + ປໍໂຕເວໂຢ + + + ບົວວີສຕາ + + + ມານົວ + + + ກຸຍບາ + + + ຊັນຕາເລມ + + + ກຳໂປກັນດີ + + + ບີແລນ + + + ອາລາກົວນາ + + + ຊາວໂປໂລ + + + ບີເຍຍ + + + ຟໍຕາເລຊາ + + + ມາເຊໂອ + + + ເລຊີເຟ + + + ນໍລອນຮາ + + + ແນສຊໍ + + + ທິມພູ + + + ກາໂບລອນ + + + ມີນາດສ + + + ເບຊິນ + + + ດໍສັນ + + + ໄວຫອກສ + + + ອີນູວິກ + + + ແວນຄູເວີ + + + ດໍສັນ ຄຣີກ + + + ເຄຣສຕັນ + + + ເຢນໂລໄນ + + + ເອດມັນຕັນ + + + ສະວິດເຄີເຣນ + + + ອ່າວແຄມບຣິດ + + + ຣີຈີນາ + + + ວິນນີເພກ + + + ເຣໂຊລຸດ + + + ເຣນນີ ຣີເວີ + + + ແຣນກິນອິນເລັດ + + + ອາທິໂຄຄານ + + + ທັນເດີເບ + + + ນີປີກອນ + + + ໂທຣອນໂຕ + + + ອີກົວລິດ + + + ພາງນີທັງ + + + ມອນຕັນ + + + ຫາລີແຟັກ + + + ກູສເບ + + + ເກລັກເບ + + + ບລານ-ຊາບລອນ + + + ເຊນຈອນ + + + ໂຄໂຄດ + + + ກິນຊາຊາ + + + ລູບຳບາຊິ + + + ບັງກີ + + + ບາຊາວິດ + + + ຊູຣິກ + + + ອາບິດແຈນ + + + ຣາໂຣຕອງກາ + + + ເອສເຕີ + + + ຊັນຕີອາໂກ + + + ດູອາລາ + + + ຄາດຣ໌ກາ + + + ອູຣຸມຊີ + + + ຈົງຊິ່ງ + + + ຊ່ຽງໄຮ້ + + + ຮາຣ໌ບິນ + + + ໂບໂກຕ້າ + + + ຄອສຕາຣິກາ + + + ຮາວານາ + + + ເຄບເວີດ + + + ເຄີລາຄາວ + + + ຄຣິດສະມາດ + + + ນິໂຄເຊຍ + + + ປາກີ + + + ບັດຊິນເກນ + + + ເບີລີນ + + + ຈີບູຕິ + + + ໂກເປນຮາເກັນ + + + ໂດມິນິກາ + + + ຊານໂຕໂດມິນໂກ + + + ແອເຈຍ + + + ກາລາປາໂກດສ + + + ກົວຢາກິ + + + ທໍລິນ + + + ໄຄໂລ + + + ເອວອີອຸງ + + + ອາສມາລາ + + + ຄານາຣີ + + + ຊີວຕາ + + + ມາດຣິດ + + + ແອດດິດອາບາບາ + + + ຮໍຊິນກິ + + + ຟູຈິ + + + ສະແຕນລີ + + + ຈັກ + + + ໂປນາເປ + + + ຄໍສແຣ + + + ເຟໂລ + + + ປາຮີດ + + + ລີເບີເລີວີວ + + + + ເວລາລະດູຮ້ອນອັງກິດ + + ລອນດອນ + + + ເກຣນາດາ + + + ທີບີລີຊີ + + + ກາເຢນ + + + ເກີນຊີ + + + ອັກກາ + + + ຢີບຣໍຕາຣ + + + ທູເລ + + + ກອດແທບ + + + ສະກໍເຣນໄບຊັນ + + + ດານນາຊາວ + + + ບານຈູ + + + ໂກນາກີ + + + ກາວເດລູບ + + + ມາລາໂບ + + + ເອເທນ + + + ເຊົາຈໍເຈຍ + + + ກົວເຕມາລາ + + + ກຣວມ + + + ບິດເຊົາ + + + ກູຢານາ + + + ຮ່ອງກົງ + + + ເຕກູຊີການປາ + + + ຊາແກັບ + + + ພອດອັນແປຣນ + + + ບູດາເປດສ + + + ຈາກາຣ໌ຕາ + + + ພອນເທຍນັກ + + + ມາກາດຣ໌ຊາ + + + ຈາຍາປູຣະ + + + + ເວລາລະດູຮ້ອນໄອແລນ + + ດັບລິນ + + + ເຍຣູສະແລັມ + + + ເກາະແມນ + + + ໂກຣກາຕາ + + + ຊາກັດ + + + ແບກແດດ + + + ເຕຫະຣານ + + + ເລດຢາວິກ + + + ໂຣມ + + + ເຈີຊີ + + + ຈາໄມກາ + + + ອຳມານ + + + ໂຕກຽວ + + + ໄນໂລບີ + + + ບິດເຄກ + + + ພະນົມເປັນ + + + ເອັນເດີເບີລີ + + + ຄີຣິທີມາຕີ + + + ຕາຣາວາ + + + ໂຄໂມໂລ້ + + + ຊຽນຄີສ + + + ປຽງຢາງ + + + ໂຊຣ + + + ຄູເວດ + + + ຄາຍແມນ + + + ອັດຕາອູ + + + ອໍຣໍ + + + ອັດໂທບີ + + + ໄຄຊີລໍດາ + + + ອໍມາຕີ + + + ວຽງຈັນ + + + ເບຣຸດ + + + ຊຽນລູເຊຍ + + + ວາດາຊ + + + ໂຄລຳໂບ + + + ມອນໂລເວຍ + + + ມາເຊໂລ + + + ວີນີອຸດ + + + ລັກແຊມເບີກ + + + ລີກາ + + + ຕີໂປລີ + + + ຄາຊາບລັງກາ + + + ໂມນາໂຄ + + + ຄີຊີເນົາ + + + ພອດກໍຣີກາ + + + ມາຣີໂກດ + + + ອັນຕານານາລີໂວ + + + ຄວາຈາເລນ + + + ມາຈູໂຣ + + + ສະໂກເປຍ + + + ບາມາໂກ + + + ຍາງກຸ້ງ + + + ຮອບ + + + ອູລານບາຕາຣ໌ + + + ຊອຍບາຣຊານ + + + ມາເກົາ + + + ໄຊປານ + + + ມາທີນິກ + + + ນູແອກຊອດ + + + ມອນເຊີຣັດ + + + ມໍຕາ + + + ມູເລຕຽດ + + + ມໍດີເວດສ໌ + + + ແບນໄທສ + + + ທີຈົວນາ + + + ຊານຕາ ອິດຊາເບວ + + + ຮີໂມຊິນໂລ + + + ມາຊາດລານ + + + ຊີຫົວຫົວ + + + ບາເຮຍ ແບນເດີຣາສ + + + ໂອຈິນາກາ + + + ມອນເຕີເຣຍ + + + ແມັກຊິໂກ ຊີຕີ + + + ມາຕາໂມຣອສ + + + ມີຣິດາ + + + ແຄນກຸນ + + + ກູລາລຳເປີ + + + ກູຊີງ + + + ມາປູໂຕ + + + ວີນຮູດ + + + ນູເມອາ + + + ນີອາມີ້ + + + ນໍຟຣອກ + + + ລາໂກດສ + + + ມານາກົວ + + + ອຳເຕີດຳ + + + ອໍໂລ + + + ກາດສ໌ມັນດູ + + + ນາອູຣູ + + + ນີອູເອ + + + ແຊແທມ + + + ອັກແລນ + + + ມາດກັດ + + + ປານາມາ + + + ລີມາ + + + ທາຮີຕິ + + + ມາຄິວຊັດ + + + ແກມເບຍ + + + ພອດມໍສບີ + + + ມານີລາ + + + ກາຣາຈີ + + + ວອດຊາວ + + + ມີກົວລອນ + + + ພິດເຄຣນ + + + ເປີໂທຣິໂກ + + + ກາຊາ + + + ເຮບຣອນ + + + ອາຊໍເຣດ + + + ມາເດຣາ + + + ຣິດບອນ + + + ປາເລົາ + + + ອາຊຸນຊີອອນ + + + ກາຕາຣ + + + ລຸຍນີອອນ + + + ບູຊາເລດສ + + + ເບວເກຣດ + + + ກາລີນິງກາດສ + + + ມອດສໂກ + + + ວໍໂກກາດສ + + + ຊາມາລາ + + + ຢີຄາເຕີລີນແບກ + + + ໂອມາດສ + + + ໂນໂວຊີບີລາດສ + + + ໂນໂວຄຸສເນັດ + + + ຄາດສນໍຢາດສ + + + ອີຄຸດສ + + + ຢາຄູທາດສ + + + ວາດີໂວຕອກ + + + ແຄນດີກາ + + + ຊາຄາລິນ + + + ອຸສ ເນຣາ + + + ມາກາແດນ + + + ຄາມຊາດກາ + + + ອານາດີ + + + ຄີກາລີ + + + ຣີຢາດ + + + ກົວດັດຄານັດ + + + ມາເຮ + + + ຄາທູມ + + + ສະຕອກໂຮມ + + + ສິງກະໂປ + + + ເຊນເຮລີນ່າ + + + ລູບລີຍານາ + + + ລອງເຢຍບຽນ + + + ບຮາຕີສລາວາ + + + ຟີທາວ + + + ຊານມາຣີໂນ + + + ດາກາສ + + + ໂມກາດີຊູ + + + ປາລາມາລີໂບ + + + ຈູບາ + + + ຊາວໂຕເມ + + + ເອວຊັນວາເດີ + + + ໂລເວີແປຣນໂກຕາ + + + ດາມັດກັດ + + + ອຳບາບາເນ + + + ແກຣນທັກ + + + ເອນຈາເມນ່າ + + + ແກເກີເລນ + + + ລຳ + + + ບາງກອກ + + + ດູຊານເບ + + + ຟາກາວໂຟ + + + ດີລີ + + + ອາດກາບັດ + + + ຕູນິດ + + + ຕອງກາຕາປູ + + + ອິດຕານບູ + + + ພອດຂອງສະເປນ + + + ຟູນະຟູຕິ + + + ໄທເປ + + + ດາເອສສະລາມ + + + ອາສໂກລອດດ + + + ເຄຍ + + + ຊີມເຟໂລໂປ + + + ຊາໂປໂລຊີ + + + ຄຳປາລາ + + + ມິດເວ + + + ຈອນສະໂຕນ + + + ເວກ + + + ອາແດກ + + + ນອມ + + + ໂຫໂນລູລູ + + + ແອນເຄີເຣກ + + + ຢາຄູຕັດ + + + ຊິດກາ + + + ຈູໂນ + + + ເມັດລາກັດລາ + + + ລອສແອນເຈີລິດ + + + ບອຍຊີ + + + ໂພນິກ + + + ເດັນເວີ + + + ເບີລາ, ດາໂກຕາເໜືອ + + + ນີວສາເລັມ, ດາໂກຕາເໜືອ + + + ສູນກາງ, ດາໂກດາເໝືອ + + + ຊີຄາໂກ + + + ມີໂນມີນີ + + + ວິນເຊນເນັດ, ອິນດີເອນາ + + + ປີເຕີເບີກ, ອິນດີເອນາ + + + ເທວຊິຕີ, ອິນດີເອນາ + + + ນ໋ອກ, ອິນດີແອນາ + + + ວິນນາແມັກ, ອິນດີເອນາ + + + ມາເຣນໂກ, ອິນດີເອນາ + + + ອິນດີເອນາໂພລິສ + + + ລຸຍວິນເລ + + + ວີເວ, ອິນດີເອນາ + + + ມອນຕີເຊວໂລ, ເຄນທັກກີ + + + ດີທຣອຍ + + + ນິວຢອກ + + + ມອນເຕດີເວໂອ + + + ສາມາກກາດ + + + ທາດສ໌ເຄນ + + + ວາຕິກັນ + + + ຊຽນວິນເຊນ + + + ກາລາກາດສ + + + ທໍໂຕລາ + + + ຊຽນໂທມັສ + + + ໂຮ່ຈີມິງ + + + ເອຟາເຕ + + + ວາລິດ + + + ເອປີອາ + + + ເອເດັນ + + + ມາໂຢເຕ + + + ໂຈຮັນເນດສເບີກ + + + ລູຊາກ້າ + + + ຮາລາເລ້ + + + + ເວລາຂອງອາເກຣ + ເວລາມາດຕະຖານຂອງອາເກຣ + ເວລາລະດູຮ້ອນຂອງອາເກຣ + + + + + ເວລາ ອັຟການິສຖານ + + + + + ເວລາອາຟຣິລິກາກາງ + + + + + ເວລາອາຟຣິລິກາຕາເວັນອອກ + + + + + ເວລາອາຟຣິລິກາໃຕ້ + + + + + ເວລາອາຟຣິລິກາຕາເວັນຕົກ + ເວລາມາດຕະຖານອາຟຣິລິກາຕາເວັນຕົກ + ເວລາລະດູຮ້ອນອາຟຣິລິກາຕາເວັນຕົກ + + + + + ເວລາອະແລສກາ + ເວລາມາດຕະຖານອະແລສກາ + ເວລາຕອນທ່ຽງຂອງອະແລສກາ + + + + + ເວລາອໍມາຕີ + ເວລາມາດຕະຖານອໍມາຕີ + ເວລາລະດູຮ້ອນອໍມາຕີ + + + + + ເວລາອາມາໂຊນ + ເວລາມາດຕະຖານອາມາໂຊນ + ເວລາລະດູຮ້ອນອາມາໂຊນ + + + + + ເວລາຕອນທ່ຽງ + ເວລາມາດຕະຖານ + ເວລາຕອນທ່ຽງຂອງອາເມລິກາເໝືອ + + + + + ເວລາຕາເວັນອອກ + ເວລາມາດຕະຖານຕາເວັນອອກ + ເວລາຕອນທ່ຽງທາງຕາເວັນອອກ + + + + + ເວລາແຖບພູເຂົາ + ເວລາມາດຕະຖານແຖບພູເຂົົາ + ເວລາຕອນທ່ຽງແຖວພູເຂົາ + + + + + ເວລາປາຊີຟິກ + ເວລາມາດຕະຖານຂອງປາຊີຟິກ + ເວລາຕອນທ່ຽງຂອງປາຊີຟິກ + + + + + ເວລາອັດຕາອູ + ເວລາມາດຕະຖານອັດຕາອູ + ເວລາລະດູຮ້ອນອັດຕາອູ + + + + + ເວລາອັດໂຕເບ + ເວລາມາດຕະຖານອັດໂຕເບ + ເວລາລະດູຮ້ອນອັດໂຕເບ + + + + + ເວລາອາລາບຽນ + ເວລາມາດຕະຖານອາລາບຽນ + ເວລາກາງເວັນອາລາບຽນ + + + + + ເວລາອາເຈນຕີນາ + ເວລາມາດຕະຖານອາເຈນຕີນາ + ເວລາລະດູຮ້ອນອາເຈນຕີນາ + + + + + ເວລາຕາເວັນຕົກຂອງອາເຈນຕີນາ + ເວລາມາດຕະຖານຕາເວັນຕົກຂອງອາເຈນຕີນາ + ເວລາລະດູຮ້ອນທາງຕາເວັນຕົກຂອງອາເຈນຕີນາ + + + + + ເວລາອາເມເນຍ + ເວລາມາດຕະຖານອາເມເນຍ + ເວລາລະດູຮ້ອນອາເມເນຍ + + + + + ເວລາຂອງອາແລນຕິກ + ເວລາມາດຕະຖານຂອງອາແລນຕິກ + ເວລາຕອນທ່ຽງຂອງອາແລນຕິກ + + + + + ເວລາ ອົດສະຕາລີກາງ + ເວລາມາດຕະຖານ ອົດສະຕາລີກາງ + ເວລາກາງເວັນ ອົດສະຕາລີກາງ + + + + + ເວລາ ຕາເວັນຕົກຕອນກາງຂອງອົດສະຕາລີ + ເວລາມາດຕະຖານ ຕາເວັນຕົກຕອນກາງຂອງອົດສະຕາລີ + ເວລາກາງເວັນ ຕາເວັນຕົກຕອນກາງຂອງອົດສະຕາລີ + + + + + ເວລາອົດສະຕາລີຕາເວັນອອກ + ເວລາມາດຕະຖານອົດສະຕາລີຕາເວັນອອກ + ເວລາກາງເວັນ ອົດສະຕາລີຕາເວັນອອກ + + + + + ເວລາອົດສະຕາລີຕາເວັນຕົກ + ເວລາມາດຕະຖານ ອົດສະຕາລີຕາເວັນຕົກ + ເວລາກາງເວັນອົດສະຕາລີຕາເວັນຕົກ + + + + + ເວລາອັສເຊີໄບຈັນ + ເວລາມາດຕະຖານອັສເຊີໄບຈັນ + ເວລາລະດູຮ້ອນອັສເຊີໄບຈັນ + + + + + ເວລາອາໂຊເລສ + ເວລາມາດຕະຖານອາໂຊເລສ + ເວລາລະດູຮ້ອນອາໂຊເລສ + + + + + ເວລາ ບັງກະລາເທດ + ເວລາມາດຕະຖານ ບັງກະລາເທດ + ເວລາ ລະດູຮ້ອນ ບັງກະລາເທດ + + + + + ເວລາ ບູຖານ + + + + + ເວລາໂບລີເວີຍ + + + + + ເວລາເບຣຊີເລຍ + ເວລາມາດຕາຖານເບຣຊີເລຍ + ເວລາລະດູຮ້ອນເບຣຊີເລຍ + + + + + ເວລາບຼູນາຍດາລູຊາແລັມ + + + + + ເວລາເຄບເວິຣດ + ເວລາມາດຕະຖານເຄບເວິຣດ + ເວລາລະດູຮ້ອນຂອງເຄບເວິຣດ + + + + + ເວລາເຄຊີ + + + + + ເວລາຊາມໍໂລ + + + + + ເວລາ ຊາທາມ + ເວລາມາດຕະຖານ ຊາທາມ + ເວລາກາງເວັນ ຊາທາມ + + + + + ເວລາຊີລີ + ເວລາມາດຕາຖານຊີລີ + ເວລາລະດູຮ້ອນຊີລີ + + + + + ເວລາຂອງຈີນ + ເວລາມາດຕະຖານຈີນ + ເວລາກາງເວັນ ຈີນ + + + + + ເວລາ ໂຊຍບາຊັນ + ເວລາມາດຕະຖານໂຊຍບາຊັນ + ເວລາລະດູຮ້ອນ ໂຊຍບາຊັນ + + + + + ເວລາເກາະຄຣິສມາດ + + + + + ເວລາຫມູ່ເກາະໂກໂກສ + + + + + ເວລາໂຄລໍາເບຍ + ເວລາມາດຕະຖານໂຄລຳເບຍ + ເວລາລະດູຮ້ອນໂຄລໍາເບຍ + + + + + ເວລາຫມູ່ເກາະຄຸກ + ເວລາມາດຕະຖານຫມູ່ເກາະຄຸກ + ເວລາເຄີ່ງລະດູຮ້ອນຫມູ່ເກາະຄຸກ + + + + + ເວລາຄິວບາ + ເວລາມາດຕະຖານຂອງຄິວບາ + ເວລາຕອນທ່ຽງຂອງຄິວບາ + + + + + ເວລາເດວິດ + + + + + ເວລາດູມອງດູວິລ + + + + + ເວລາຕີມໍຕາເວັນອອກ + + + + + ເວລາເກາະອີແລນ + ເວລາມາດຕະຖານເກາະອີແລນ + ເວລາລະດູຮ້ອນຂອງເກາະອີແລນ + + + + + ເວລາເອວາດໍ + + + + + ເວລາເອີຣົບກາງ + ເວລາມາດຕະຖານເອີຮົບກາງ + ເວລາລະດູຮ້ອນເອີຣົບກາງ + + + + + ເວລາເອີຣົບຕາເວັນອອກ + ເວລາມາດຕະຖານເອີຣົບຕາເວັນອອກ + ເວລາລະດູຮ້ອນເອີຣົບຕາເວັນອອກ + + + + + ເວລາເອີຣົບຕາເວັນຕົກ + ເວລາມາດຕະຖານເອີຣົບຕາເວັນຕົກ + ເວລາລະດູຮ້ອນເອີຣົບຕາເວັນຕົກ + + + + + ເວລາຟອກແລນ + ເວລາມາດຕະຖານຟອກແລນ + ເວລາລະດູຮ້ອນຟອກແລນ + + + + + ເວລາຟິຈິ + ເວລາມາດຕະຖານຟິຈິ + ເວລາລະດູຮ້ອນຟິຈິ + + + + + ເວລາກີອານາຝຮັ່ງ + + + + + ເວລາຝຣັ່ງຕອນໃຕ້ແລະແອນຕາກຕິກ + + + + + ເວລາກາລາປາໂກ + + + + + ເວລາແກມເບຍ + + + + + ເວລາຈໍເຈຍ + ເວລາມາດຕະຖານຈໍເຈຍ + ເວລາລະດູຮ້ອນຈໍເຈຍ + + + + + ເວລາຫມູ່ເກາະກິລເບີດ + + + + + ເວລາກຣີນີສ + + + + + ເວລາຕາເວັນອອກຂອງກຮີນແລນ + ເວລາມາດຕະຖານຕາເວັນອອກກຮີນແລນ + ເວລາລະດູຮ້ອນກຮີນແລນຕາເວັນອອກ + + + + + ເວລາກຮີນແລນຕາເວັນຕົກ + ເວລາມາດຕະຖານກຮີນແລນຕາເວັນຕົກ + ເວລາຕອນທ່ຽງກຮີນແລນຕາເວັນຕົກ + + + + + ເວລາກວມ + + + + + ເວລາກຣູ + + + + + ເວລາກາຍອານາ + + + + + ເວລາຮາວາຍ-ເອລູທຽນ + ເວລາມາດຕະຖານຮາວາຍ-ເອລູທຽນ + ເວລາຕອນທ່ຽງຮາວາຍ-ເອລູທຽນ + + + + + ເວລາ ຮົງກົງ + ເວລາມາດຕະຖານຮົງກົງ + ເວລາລະດູຮ້ອນ ຮົງກົງ + + + + + ເວລາ ຮອຟ + ເວລາມາດຕະຖານ ຮອຟ + ເວລາລະດູຮ້ອນ ຮອຟ + + + + + ເວລາ ອິນເດຍ + + + + + ເວລາຫມະຫາສະຫມຸດອິນເດຍ + + + + + ເວລາອິນດູຈີນ + + + + + ເວລາອິນໂດເນເຊັຍກາງ + + + + + ເວລາອິນໂດເນເຊັຍຕາເວັນອອກ + + + + + ເວລາອິນໂດເນເຊັຍຕາເວັນຕົກ + + + + + ເວລາ ອີຣານ + ເວລາມາດຕະຖານ ອີີຣານ + ເວລາກາງເວັນ ອີຣານ + + + + + ເວລາອີຣກຣູດ + ເວລາມາດຕະຖານອີຣກຣູດ + ເວລາລະດູຮ້ອນອີຣກຣູດ + + + + + ເວລາອິດສະລາແອນ + ເວລາມາດຕະຖານອິດສະລາແອນ + ເວລາກາງເວັນອິດສະລາແອນ + + + + + ເວລາ ຍີ່ປຸ່ນ + ເວລາມາດຕະຖານຂອງຍີ່ປຸ່ນ + ເວລາກາງເວັນ ຍີ່ປູ່ນ + + + + + ເວລາກາຊັກສະຖານຕາເວັນອອກ + + + + + ເວລາກາຊັກສະຖານຕາເວັນຕົກ + + + + + ເວລາເກົາຫຼີ + ເວລາ ມາດຕະຖານ ເກົາຫຼີ + ເວລາກາງເວັນ ເກົາຫຼີ + + + + + ເວລາຄອສແຣ + + + + + ເວລາຄຣາສໂນຢາດສ + ເວລາມາດຕະຖານຄຣາສໂນຢາດສ + ເວລາລະດູຮ້ອນຄຣາສໂນຢາດສ + + + + + ເວລາຄຣີກິສຖານ + + + + + ເວລາລັງກາ + + + + + ເວລາຫມູ່ເກາະໄລນ໌ + + + + + ເວລາ ລອດໂຮ + ເວລາ ມາດຕະຖານລອດໂຮ + ເວລາກາງເວັນ ລອດໂຮ + + + + + ເວລາມາເກົາ + ເວລາມາດຕະຖານມາເກົາ + ເວລາລະດູຮ້ອນມາເກົາ + + + + + ເວລາແມັກຄໍຣີ + + + + + ເວລາເມັກກາເດນ + ເວລາມາດຕະຖານເມັກກາເດນ + ເວລາລະດູຮ້ອນເມັກກາເດນ + + + + + ເວລາມາເລເຊັຍ + + + + + ເວລາມັນດີຟ + + + + + ເວລາມາເຄີຊັສ + + + + + ເວລາຫມູ່ເກາະມາແຊລ໌ + + + + + ເວລາມໍຣິເຊຍ + ເວລາມາດຕະຖານມໍຣິເຊຍ + ເວລາລະດູຮ້ອນຂອງມໍຣິເຊຍ + + + + + ເວລາມໍສັນ + + + + + ເວລາ ອູລານບາເຕີ + ເວລາມາດຕະຖານ ອູລານບາເຕີ + ເວລາລະດູຮ້ອນອູລານບາເຕີ + + + + + ເວລາໂມ້ສໂກ + ເວລາມາດຕະຖານໂມ້ສໂກ + ເວລາລະດູຮ້ອນໂມ້ສໂກ + + + + + ເວລາມຽນມາ + + + + + ເວລານາອຸລຸ + + + + + ເວລາ ເນປານ + + + + + ເວລານິວແຄລິໂດເນຍ + ເວລາມາດຕະຖານນິວແຄລິໂດເນຍ + ເວລາລະດູຮ້ອນນິວແຄລິໂດເນຍ + + + + + ເວລາ ນິວຊີແລນ + ເວລາມາດຕະຖານ ນິວຊີແລນ + ເວລາກາງເວັນ ນິວຊີແລນ + + + + + ເວລານິວຟັນແລນ + ເວລາມາດຕະຖານນິວຟັນແລນ + ເວລາຕອນທ່ຽງນິວຟັນແລນ + + + + + ເວລານິອູເອ + + + + + ເວລາ ເກາະ ນອກຟອກ + + + + + ເວລາເຟນັນໂດເດໂນຮອນຮາ + ເວລາມາດຕະຖານເຟນັນໂດເດໂນຮອນຮາ + ເວລາລະດູຮ້ອນເຟນັນໂດເດໂນຮອນຮາ + + + + + ເວລາຫມູ່ເກາະມາເຣຍນາເຫນືອ + + + + + ເວລາໂນໂວຊີບຣິສ + ເວລາມາດຕະຖານໂນໂວຊີບຣິສ + ເວລາລະດູຮ້ອນໂນໂວຊີບຣິສ + + + + + ເວລາໂອ້ມສ + ເວລາມາດຕະຖານໂອ້ມສ + ເວລາລະດູຮ້ອນໂອ້ມສ + + + + + ເວລາປາກິສຖານ + ເວລາມາດຕະຖານປາກິສຖານ + ເວລາລະດູຮ້ອນ ປາກິສຖານ + + + + + ເວລາປາເລົາ + + + + + ເວລາປາປົວກິນີ + + + + + ເວລາປາຮາກວາຍ + ເວລາມາດຕະຖານປາຮາກວາຍ + ເວລາລະດູຮ້ອນປາຮາກວາຍ + + + + + ເວລາເປຮູ + ເວລາມາດຕະຖານເປຮູ + ເວລາລະດູຮ້ອນຂອງເປຮູ + + + + + ເວລາຟີລີປິນ + ເວລາມາດຕະຖານຟີລີປີນ + ເວລາຟີລີປີນຍາມຮ້ອນ + + + + + ເວລາຫມູ່ເກາະຟີນິກ + + + + + ເວລາປີແຍຮແລະມີເກີລົງ + ເວລາມາດຕະຖານປີແຍຮແລະມີເກີລົງ + ເວລາຕອນທ່ຽງປີແຍຮແລະມີເກີລົງ + + + + + ເວລາພິດແຄຣ໌ນ + + + + + ເວລາໂປເນບ + + + + + ເວລາຄີວລໍດາ + ເວລາມາດຕະຖານຄີວລໍດາ + ເວລາລະດູຮ້ອນຄີວລໍດາ + + + + + ເວລາເຮອູເນຍ + + + + + ເວລາ ໂຣທີຕາ + + + + + ເວລາສາຄາລິງ + ເວລາມາດຕະຖານສາຄາລິງ + ເວລາລະດູຮ້ອນສາຄາລິງ + + + + + ເວລາຊາມົວ + ເວລາມາດຕະຖານຊາມົວ + ເວລາລະດູຮ້ອນຊາມົວ + + + + + ເວລາເຊເຊວ + + + + + ເວລາສີງກະໂປ + + + + + ເວລາຫມູ່ເກາະໂຊໂລມອນ + + + + + ເວລາຈໍເຈຍໃຕ້ + + + + + ເວລາຊູຮິນາເມ + + + + + ເວລາ ໂຊວາ + + + + + ເວລາທາຮິຕິ + + + + + ເວລາ ໄທເປ + ເວລາມາດຕະຖານ ໄທເປ + ເວລາກາງເວັນ ໄທເປ + + + + + ເວລາທາຈິກິສຖານ + + + + + ເວລາໂຕເກເລົາ + + + + + ເວລາຕອງກາ + ເວລາມາດຕະຖານຕອງກາ + ເວລາລະດູຮ້ອນຕອງກາ + + + + + ເວລາຊຸກ + + + + + ເວລາຕວກເມນິສຖານ + ເວລາມາດຕະຖານຕວກເມນິສຖານ + ເວລາລະດູຮ້ອນ ຕວກເມນິສຖານ + + + + + ເວລາຕູວາລູ + + + + + ເວລາອຸກູໄວ + ເວລາມາດຕະຖານອຸກູໄວ + ເວລາລະດູຮ້ອນອຸກູໄວ + + + + + ເວລາອຸສເບກິດສະຖານ + ເວລາມາດຕະຖານອຸສເບກິດສະຖານ + ເວລາລະດູຮ້ອນອຸສເບກິດສະຖານ + + + + + ເວລາວານູອາຕູ + ເວລາມາດຕະຖານວານູອາຕູ + ເວລາລະດູຮ້ອນວານູອາຕູ + + + + + ເວລາເວເນຊູລາ + + + + + ເວລາລາດີໂວສຕົກ + ເວລາມາດຕະຖານລາດີໂວສຕົກ + ເວລາລະດູຮ້ອນລາດີໂວສຕົກ + + + + + ເວລາໂວໂກກຣາດ + ເວລາມາດຕະຖານໂວໂກກຣາດ + ເວລາລະດູຮ້ອນໂວໂກກຣາດ + + + + + ເວລາ ວອສໂຕກ + + + + + ເວລາເກາະເວກ + + + + + ເວລາວາລລີສແລະຟຸຕູນາ + + + + + ເວລາຢາກູດສ + ເວລາມາດຕະຖານຢາກູດສ + ເວລາລະດູຮ້ອນຢາກູດສ + + + + + ເວລາເຢກາເຕລິນເບີກ + ເວລາມາດຕະຖານເຢກາເຕລິນເບີກ + ເວລາລະດູຮ້ອນເຢກາເຕລິນເບີກ + + + + + + latn + + laoo + + + , + . + ; + % + + + - + E + × + + + ບໍ່ແມ່ນໂຕເລກ + + + + + 0ພັນ + 00ພັນ + 000ພັນ + 0ລ້ານ + 00ລ້ານ + 000ລ້ານ + 0ພັນລ້ານ + 00ພັນລ້ານ + 000ພັນລ້ານ + 0000ພັນລ້ານ + 00ລ້ານລ້ານ + 000ລ້ານລ້ານ + + + + + 0ພັນ + 00ພັນ + 000ພັນ + 0ລ້ານ + 00ລ້ານ + 000ລ້ານ + 0ຕື້ + 00ຕື້ + 000ຕື້ + 0000ຕື້ + 00ພັນຕື້ + 000ພັນຕື້ + + + + + + + #,##0.### + + + + + 0 ພັນ + 00 ພັນ + 0 ແສນ + 0 ລ້ານ + 00 ລ້ານ + 000 ລ້ານ + 0 ຕື້ + 00 ຕື້ + 000 ຕື້ + 0 ລ້ານລ້ານ + 00 ລ້ານລ້ານ + 000 ລ້ານລ້ານ + + + + + 0 ພັນ + 00 ພັນ + 000 ກີບ + 0 ລ້ານ + 00 ລ້ານ + 000 ລ້ານ + 0 ຕື້ + 00 ຕື້ + 000 ຕື້ + 0 ລ້ານລ້ານ + 00 ລ້ານລ້ານ + 000 ລ້ານລ້ານ + + + + + + + # + + + + + + + #,##0% + + + + + + + ¤#,##0.00;¤-#,##0.00 + + + {0} {1} + + + + ເປເຊຕາ ອັນໂດລາ + + + ດີແຮມ ສະຫະລັດອາຣັບ ເອມີເຣດ + + + ອັບການິ ອັບການິສະຖານ (1927–2002) + + + ອັບການິ ອັບກັນນິສະຖານ + + + ແລັກ ອານບາເນຍ + + + ດຣມອາເມເນຍ + + + ຫຼຽນເງິນ ເນເທີແລນ + + + ກວານຊາ ແອງໂກລາ + + + ກວານຊາ ແອງໂກລາ (1977–1991) + + + ກວານຊາ ແອງໂກລາ ໃໝ່ (1995–1999) + + + ກວານຊາກທີ່ແກ້ໄຂໃໝ່ ແອງກູລາ (1995–1999) + + + ອອສຕຣານ ອາກຊັງຕິນ + + + ເປໂຊເລ ອາກຊັງຕິນ (1970–1983) + + + ເປໂຊ ອາກຊັງຕິນ (1881–1970) + + + ເປໂຊ ອາກຊັງຕິນ (1983–1985) + + + ເປໂຊ ອາເຈນຕີນາ + + + ຊິລລິງ ອົດສະຕາລີ + + + ໂດລາ ອອດສະເຕເລຍ + A$ + + + ອະຣູແບນ ຟລໍຣິນ + ຟລໍຣິນ + + + ມານັດ ອາແຊກບາຍຊານ (1993–2006) + + + ມານັດ ອາຊັກບາຍຊານ + + + ດີນາ ບອສເນຍ ເຮີເຊໂບວາເນຍ (1992–1994) + + + ມາກບອສເນຍ ເຮເຊໂກເວນາ + + + ດີນາໃໝ່ ບອສເນຍ ເຮີເຊໂບວີນາ(1994–1997) + + + ໂດລ່າ ບາບາດຽນ + ດອນລາ ບາເບດຽນ + + + ຕາກາ ບັງກາເດດ + + + ຟຣັງ ບູນກາລີ (ປ່ຽນແປງໄດ້) + + + ຟຣັງ ບູນກາລີ + + + ຟຣັງ ບູນກາລີ (ການເງິນ) + + + ຮາດເລບ ບູນກາລີ + + + ເລບ ສັງຄົມບູນກາລີ + + + ເລບ ບັງແກເຣຍ + + + ເລບ ບູນກາລີ (1879–1952) + + + ດີນາ ບາເຣນ + + + ຟຣັງ ບຸຣັນດີ + + + ໂດລ່າເບີມູແດນ + ໂດລ່າເບີມູແດນ + + + ໂດລາ ບຣູໄນ + + + ໂບລິເວຍໂນ ໂລລິເວຍ + + + ໂລລິເວຍໂນ ໂລລິເວຍ (1863–1963) + + + ເປໂຊໂລລິເວຍ + + + ມະດອນ ໂລລິເວຍ + + + ກຣູເຊໂດບາຊິ ໃໝ່ (1967–1986) + + + ກຣູຊາໂດບາຊິວ (1986–1989) + + + ກຣູເຊໂຣ ບາຊິ ກຣູໂຊ ບາຊິວ (1993–1994) + + + ຣຽນ ບຣາຊິນ + R$ + + + ກຣູຊາໂດ ບາຊິວ ໃໝ່ (1989–1990) + + + ກຣູເຊໂຣ ບາຊິວ (1993–1994) + + + ກຣູເຊໂຣ ບາຊິວ (1942–1967) + + + ໂດລ່າ ບາຮາມຽນ + ໂດລ່າ ບາຮາມຽນ + + + ອັງກູຕຣາມ ບູຖານ + + + ຈາດ ພະມ້າ + + + ປູລາ ບອສວານາ + + + ຣູໂບ ເບຣາຣຸສ ໃໝ່(1994–1999) + + + ຣູໂບ ເບຣາຣູສ + + + ໂດລ່າ ເບວລິຊ + ໂດລ່າ ເບວລິຊ + + + ໂດລ່າຄານາດາ + ໂດລ່າຄານາດາ + CA$ + + + ຟຣັງ ຄອງໂກ + + + ເອີໂຣ WIR + + + ຟຣັງ ສະວິດເຊີແລນ + + + ຟຣັງ WIR + + + ເອສກູໂດ ຊິລີ + + + ຫົວໜ່ວຍບັນຊີ (UF) ຊິລີ + + + ເປໂຊ ຊິລີ + + + ຢວນ ຈີນ + CN¥ + + + ເປໂຊໂຄລຳເບຍ + + + ຫົວໜ່ວຍຄ່າຈິງ ໂຄລັມເບຍ + + + ໂຄສຕາ ຣິກັນ ໂຄລອນ + ໂຄລອນ + + + ດີນາ ເຊີເບຍ (2002–2006) + + + ຮາດໂກຣູນາ ເຊັກໂກສະໂລວັກ + + + ຄິວແບນ ຄອນເວີດຕິໂບ ເປໂຊ + ຄິວແບນ ຄອນເວີດຕິໂບ ເປໂຊ + + + ຄິວແບນ ເປໂຊ + ຄິວແບນ ເປໂຊ + + + ເອສກູໂດ ເຄບເວີດ + + + ປອນ ໄຊປຣັດ + + + ໂຄຣູນາ ສາທາລະນະລັດເຊັກ + + + ມາກ ເຢຍລະມັນ ຕາເວັນອອກ + + + ມາກ ເຢຍລະມັນ + + + ຟຣັງ ຈິບູຕິ + + + ໂຄຣນ ເດັນມາກ + + + ເປໂຊໂດມິນິການ + + + ດີນາ ອາຍຈີເຣຍ + + + ຊູເກ ເອກາວາດໍ + + + ຫົວໜ່ວຍຄ່າຄົງທີ່ຂອງເອກາວາດໍ + + + ຄຣູນເອສ ໂຕເນຍ + + + ປອນ ອີຢິບ + + + ແນກຟຣາ ອີຣິເທຣຍ + + + ເປເຊຕາສະເປັນ (ບັນຊີ) + + + ເປເຊຕາສະເປນ (ປ່ຽນແປງໄດ້) + + + ເປເຊຕາ ສະເປນ + + + ເບີ ເອທີໂອເປຍ + + + ເອີໂຣ + + + + ມາກກາ ຟິນແລນ + + + ໂດລາ ຟິຈິ + + + ປອນ ໝູ່ເກາະ ຟໍແລນ + + + ຟຣັງ ຝຣັ່ງ + + + ປອນສະເຕີຣິງ (ອັງກິດ) + £ + + + ກູປອນ ລາຣິທ ຈໍເຈຍ + + + ລາຣິ ຈໍເຈຍ + + + ເຊດີ ການາ (1979–2007) + + + ເຊດີການາ + + + ປອນ ຍິບຣາຕາ + + + ດາລາຊິ ແກມເບຍ + + + ຟຣັງ ກິນີ + + + ໄຊລິ ກີນີ + + + ເອັກເວເລ ອີຄວາຕິຣຽວ ກິນີ + + + ດາກຊະມາ ເກຣັກ + + + ກົວເຕມາລານ ເຄັດຊອນ + ເຄັດຊອນ + + + ເອສກູໂດ ກີນີໂປຕູເກດ + + + ເປໂຊກິນີ-ບິສເຊົາ + + + ດອນລາ ກາຍອານາ + + + ດອນລາ ຮົງກົງ + HK$ + + + ຮອນດູແຣນ ເລມພິຣາ + ເລມພິຣາ + + + ດີນາ ໂຄຣເອເຊຍ + + + ຄູນາ ໂກຣເອເຊຍ + + + ກູດເຮຕິ + + + ຟໍຣິນ ຮົງກາຣີ + + + ຣູປີ ອິນໂດເນເຊຍ + + + ປອນ ໄອຣິຊ + + + ປອນ ອີສະລາເອວ + + + ນິວເຊເກນ ອີສະລາແອນ + + + + ຣູປີ ອິນເດຍ + + + + ດີນາ ອີຣັກ + + + ຣີວ ອີຣ່ານ + + + ໂຄຣນາ ໄອສແລນ + + + ລິຣາ ອີຕາລີ + + + ດອນລາ ຈາເມກາ + + + ດີນາ ຈໍແດນ + + + ເຢນ ຍີ່ປຸ່ນ + JP¥ + + + ຊິລລິງ ເຄນຢາ + + + ໂຊມ ຄຣີກິສະຖານ + + + ຫຼຽນກຳປູເຈ້ຍ + + + ຟຣັງ ໂກໂມໂຣສ + + + ວອນ ເກົາຫຼີເໜືອ + + + ຮາວານ ເກົາຫຼີເນື້ + + + ວອນ ເກົາຫຼີໃຕ້ (1945–1953) + + + ວອນ ເກົາຫຼີໃຕ້ + + + + ດີນາ ຄູເວດ + + + ດອນລາໝູ່ເກາະເກແມນ + + + ເຕັງເຈ ກາຊັກສະຖານ + + + ກີບ ລາວ + + + + ປອນ ເລບານອນ + + + ຣູປີ ສີຣັງກາ + + + ດອນລາ ໄລບິເລຍ + + + ໂລຕິ ເລໂຊໂຕ + + + ລິຕັສ ລິທົວເນຍ + + + ທາໂລນັສ ລິທົວເນຍ + + + ຟຣັງ ລຸກຊຳບວກ ທີ່ປ່ຽນແປງ + + + ຟຣັງ ລຸກຊຳບວກ + + + ຟຣັງ ລຸກຊຳບວກ ການເງິນ + + + ລັສ ລັດເວຍ + + + ຣູໂບ ລາວຽນ + + + ດີນາ ລິເບຍ + + + ດີຮາມ ໂມລອກໂກ + + + ຟຣັງ ໂມຣອກໂກ + + + ຟຣັງ ໂມດາໂກ + + + ບັດປັນສ່ວນ ມອງໂດວາ + + + ເລອູ ມອງໂດວາ + + + ອາເຣຍຣີ ມາດາກາສກາ + + + ຟຣັງ ມາດາກັດສະກາ + + + ເດນາ ມາຊິໂດເນຍ + + + ດີນາ ມາຊີໂດເນຍ (1992–1993) + + + ຟຣັງ ມາລີ + + + ຈາດ ມ່ຽນມາ + + + ຕຸກຣີ ມົງໂກເລຍ + + + ປາຕາກາ ມາເກົາ + + + ອໍກິວຢາ ມໍຣິເຕເນຍ + + + ລິຣາ ມອນຕາ + + + ປອນ ມອນຕາ + + + ຣູປີ ມໍຣີເຊຍ + + + ຣູຟີຢາ ມາດີເວຍ + + + ຄວາຊາມາລາວີ + + + ເມັກຊິກັນ ເປໂຊ + ເປໂຊ + MX$ + + + ຫົວໜ່ວຍເງິນ ເປໂຊ ແມັກຊິໂກ(1861–1992) + + + ຫົວໜ່ວຍການລົງທຶນ ແມັກຊິໂກ + + + ຣິງກິດ ມາເລເຂຍ + + + ເອສກູໂດ ໂມຊຳບິກ + + + ເມຕິຄໍ ໂມຊຳບິກ (1980–2006) + + + ເມຕິຄໍ ໂມຊັມບິກ + + + ດອນລາ ນາມິເບຍ + + + ໄນຣາ ໄນຈີເຣຍ + + + ຄໍໂດບາ ນິກາຣາກົວ (1988–1991) + + + ນິກາຣາກວນ ໂຄໂດບາ + ໂຄໂດບາ + + + ກິລເດີ ເນເທີແລນ + + + ໂຄຣນ ນອກເວ + + + ຣູປີ ເນປານ + + + ໂດລາ ນີວຊີແລນ + NZ$ + + + ຣຽວ ໂອມານ + + + ພານາມານຽນ ບອນບົວ + ບອນບົວ + + + ອິນຕິ ເປຣູ + + + ນູໂວຊໍ ເປຣູ + + + ໂຊນ ເປຣູ (1863–1965) + + + ກີນາ ປາປົວນີວກຸນນີນ + + + ເປໂຊ ຟີລິປິນ + + + ຣູປີ ປາກີສະຖານ + + + ຊລໍຕີ ໂປແລນ + + + ຊະລອສຕີ ໂປແລນ (1950–1995) + + + ເອສກູໂດ ໂປຕູເກສ + + + ກວາຣານີ ປາຣາກວາຍ + + + ຣຽວ ກາຕາ + + + ດອນລາ ໂຣດີເຊຍ + + + ລິວ ໂຣມາເນຍເກົ່າ + + + ເລອູ ໂຣມາເນຍ + + + ດີນາ ເຊີເບຍ + + + ຣູໂລ ຣັດເຊຍ + + + ຣູໂບ ຣັດເຊຍ (1991–1998) + + + ຟຣັງ ວັນດາ + + + ຣີຢອນ ຊາອຸດິດອາຣາບີ + + + ໂດລາ ໝູ່ເກາະໂຊໂລມອນ + + + ຣູປີ ເຊເຊລ + + + ດີນາ ຊູດານເກົ່າ + + + ປອນ ຊູດານ + + + ປອນ ຊູດານເກົ່າ + + + ໂຄຣນາ ສະວີເດັນ + + + ໂດລາ ສິງກະໂປ + + + ປອນ ເຊັນເຮເຣນາ + + + ໂຕລາ ສະໂລວິເນຍ + + + ຄູໂຣນາ ສະໂລວັກ + + + ເລໂອນ ຊີລາເລໂອນ + + + ຊິລລິງ ໂຊມາເລຍ + + + ດອນລາ ຊູຣິນາເມ + + + ກິລເດີ ຊູຣິນາເມ + + + ປອນ ຊູດານໃຕ້ + + + ໂດບຣາ ຊາວຕົວເມ ແລະ ປຣິນຊິບປີ + + + ຣູໂບ ໂຊວຽດ + + + ໂກລອງ ເອກາວາດໍ + + + ປອນ ຊິເຣຍ + + + ລິລັນກິນີ ສະວາຊິແລນ + + + ບາດ ໄທ + ฿ + + + ຣູໂບ ຕັຈີກິສຖານ + + + ໂຊໂມນີ ທາຈິກິສຖານ + + + ມານັດ ຕວກເມນິສຖານ (1966–1987) + + + ເມນັດ ຕວກເມນິດສະຖານ + + + ດີນາ ຕູນີເຊຍ + + + ປາອັງກາ ຕອງກາ + + + ເອສກູໂດ ຕີມໍ + + + ລີຕາ ຕູຣາກີເກົ່າ + + + ລິຣາ ເທີກີ + + + ດອນລາທຣິນິແດດ ແລະ ໂທເບໂກ + + + ໂດລາ ໄຕຫວັນ + NT$ + + + ຊິລລິງ ຕາຊາເນຍ + + + ຮາຣິບເນຍ ຢູເຄຣນ + + + ຄາໂບວາເນດ ອູແກຣນ + + + ຊິນລິງ ອູກັນດາ (1966–1987) + + + ຊິລລິງ ອູການດາ + + + ໂດລ່າ ສະຫະລັດຯ + ໂດລ່າ ສະຫະລັດຯ + US$ + + + ດອນລາສະຫະລັດ (ມື້ຖັດໄປ) + + + ດອນລາສະຫະລັດ (ມື້ດຽວກັນ) + + + ເປໂຊອູຣຸກວຍ (ຫົວໜ່ວຍອິນເດັກ) + + + ເປໂຊ ອູຣຸກວຍ (1975–1993) + + + ເປໂຊ ອູຣູກວາຍ + + + ໂຊມ ອຸສເບກິສຖາານ + + + ໂບລີວາ ເວເນຊູເອລາ (1871–2008) + + + ໂບລິວາ ເວເນຊູເອລາ + + + ດົງ ຫວຽດນາມ + + + + ດົງ ຫວຽດນາມ (1978–1985) + + + ວາຕູ ວານົວຕູ + + + ຕາລາ ຊາມົວ + + + ຟຣັງ ເຊຟານ ທະນາຄານລັດອາຟຣິກາກາງ + FCFA + + + ເງິນ + + + ຄຳ + + + ຫົວໜ່ວຍຄອມໂປຊິດ ເອີຣົບ + + + ຫົວໜ່ວຍໂມນີແທຣີ ເອີຣົບ + + + ຫົວໜ່ວຍບັນຊີເອີຣົບ (XBC) + + + ຫົວໜ່ວຍບັນຊີເອີຣົບ (XBD) + + + ດອນລາຄາຣີບຽນຕາເວັນອອກ + EC$ + + + ສິດທິຖອນເງິນພິເສດ + + + ຫົວໜ່ວຍສະກຸນເງິນ ເອີຣົບ + + + ຟຣັງ ຄຳຝຣັ່ງ + + + ຟຣັງ ຢູໄອຊີ ຝຣັ່ງ + + + ຟັງເຊຟານ ອາຟຣິກາຕາເວັນຕົກ + CFA + + + ແພເລດຽມ + + + ຊີເອັບພີ ຝຣັ່ງ + CFPF + + + ແພລັດຕິນຳ + + + ກອງທຶນໄຣເນັດ + + + ລະຫັດທົດສອບສະກຸນເງິນ + + + ສະກຸນເງິນທີ່ບໍ່ຮູ້ຈັກ + ສະກຸນເງິນທີ່ບໍ່ຮູ້ຈັກ + + + ດີນາ ເຢເມນ + + + ຣຽວ ເຢເມນ + + + ຮາດດີນາ ຢູໂກສະລາວີ + + + ດີນາໃໝ່ ຢູໂກສະລາວີ (1994–2002) + + + ດີນາ ທີ່ປ່ຽນສະພາບ ຢູໂກສະລາວີ (1990–1992) + + + ດີນາ ປະຕິຮູບ ຢູໂກສະລາວີ (1992–1993) + + + ແຣນ ອາຟຣິກາໃຕ້ (ການເງິນ) + + + ແຣນ ອາຟຣິກາໃຕ້ + + + ຄວາຊາ ຊັມເບຍ (1968–2012) + + + ຄວາຊາ ຊັມເບຍ + + + ແຊ ຄອງໂກໃໝ່ + + + ແຊຄອງໂກ + + + ດອນລາ ຊິມບັບເວ (1980–2008) + + + ດອນລາ ຊິມບັບເວ (2009) + + + ດອນລາ ຊິມບັບເວ (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} ຕໍ່ {1} + + + {0} ແຮງຈີ + + + {0} ນາທີ + + + {0} ວິນາທີ + + + {0} ອົງສາ + + + {0} ເອເຄີ + + + {0} ເຮັກຕາ + + + {0} ft² + + + {0} ກິໂລຕາແມັດ + + + {0} ຕາແມັດ + + + {0} ຕາໄມ + + + {0} ມື້ + + + {0} ຊົ່ວໂມງ + + + {0} ມິນລີວິນາທີ + + + {0} ນາທີ + + + {0} ເດືອນ + + + {0} ວິນາທີ + + + {0} ອາທິດ + + + {0} ປີ + + + {0} ຊັງຕີແມັດ + + + {0} ຟຸດ + + + {0} ນິ້ວ + + + {0} ກິໂລແມັດ + + + {0} ປີແສງ + + + {0} ແມັດ + + + {0} ໄມ + + + {0} ມິນລິແມັດ + + + {0} ປິໂກແມັດ + + + {0} ຫລາ + + + {0} ກຣາມ + + + {0} ກິໂລກຣາມ + + + {0} ອອນ + + + {0} ປອນ + + + {0} ແຮງມ້າ + + + {0} ກິໂລວັດ + + + {0} ວັດ + + + {0} hPa + + + {0} inHg + + + {0} ມິນລິບາ + + + {0} ກິໂລແມັດຕໍ່ຊົ່ວໂມງ + + + {0} ແມັດຕໍ່ນາທີ + + + {0} ໄມຕໍ່ຊົ່ວໂມງ + + + {0} ອົງສາເຊວຊຽສ + + + {0} ອົງສາຟາເຣນຮາຍ + + + {0} ກິໂລແມັດກ້ອນ + + + {0} ໄມກ້ອນ + + + {0} ລິດ + + + + + {0}/{1} + + + {0} g force + + + {0} ນທ. + + + {0} ວິ. + + + {0} ອົງສາ + + + {0} ເອເຄີ + + + {0} ຮຕ. + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0} ມື້ + + + {0} ຊມ. + + + {0} ມລ ວິນາທີ + + + {0} ນທ. + + + {0} ດ. + + + {0} ວິ. + + + {0} ອທ. + + + {0} ປີ + + + {0} ຊມ + + + {0} ຟ + + + {0} ນິ + + + {0} ກມ + + + {0} ປສ + + + {0} ມ + + + {0} ໄມ + + + {0} ມິນ + + + {0} ປກມ + + + {0} ຫລາ + + + {0} ກຼ + + + {0} ກິໂລ + + + {0} ອ + + + {0} ປ + + + {0} hp + + + {0} ກລ. ວັດ + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} ມິນ. ບາ + + + {0} ກມ/ຊມ + + + {0} ມ/ນທ + + + {0} ໄມ/ຊມ + + + {0} ອົງສາ ຊີ. + + + {0} ອົງສາ ຟ. + + + {0} km³ + + + {0} mi³ + + + {0} ລິດ + + + + + {0}/{1} + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0} ຮຕ + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0} ມື້ + + + {0} ຊມ + + + {0} ມລ. ວິ. + + + {0} ນທ + + + {0} ດ + + + {0} ວິ + + + {0} ອທ + + + {0} ປ + + + {0} ຊມ + + + {0} ຟ + + + {0} ນ + + + {0} ກມ + + + {0} ປສ + + + {0} ມ + + + {0} ໄມ + + + {0} ມິນ + + + {0} ປກມ + + + {0} ຫລາ + + + {0} ກຼ + + + {0} ກລ + + + {0} ອ + + + {0} ປ + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} ມິນ. ບາ + + + {0} km/h + + + {0} m/s + + + {0} mi/h + + + {0} ອົງສາ ຊີ. + + + {0} ອົງສາ ຟ. + + + {0} km³ + + + {0} mi³ + + + {0} ລ + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} ແລະ {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ແມ່ນ + ບໍ່ແມ່ນ + + + + diff --git a/library/Zend/Locale/Data/lo_LA.xml b/library/Zend/Locale/Data/lo_LA.xml new file mode 100755 index 000000000..c055280ac --- /dev/null +++ b/library/Zend/Locale/Data/lo_LA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/lt.xml b/library/Zend/Locale/Data/lt.xml new file mode 100755 index 000000000..c4cc16a66 --- /dev/null +++ b/library/Zend/Locale/Data/lt.xml @@ -0,0 +1,7291 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afarų + abchazų + ačinezų + akolių + adangmų + adygėjų + avestų + afrikanų + afrihili + aghemų + ainų + akanų + akadianų + aleutų + pietų Altajaus + amharų + aragonesų + senoji anglų + angikų + arabų + šiuolaikinė standartinė arabų + aramaikų + araukanų + arapahų + aravakų + asamų + asu + asturianų + avarikų + avadhi + aimarų + azerbaidžaniečių + azeri + baškirų + baluči + balinezų + basų + bamunų + ghomalų + baltarusių + bėjų + bemba + benų + bafutų + bulgarų + baučpuri + bislama + bikolų + bini + komų + siksika + bambarų + bengalų + tibetiečių + bretonų + brajų + bodo + bosnių + akūsų + buriatų + buginezų + bulu + blin + medumbų + katalonų + kado + karibų + kaijūgų + atsamų + čečėnų + cebuanų + čigų + čamorų + čibča + čagatų + čukesų + mari + činuk žargonas + čoktau + čipvėjų + čerokių + čajenų + soranių kurdų + korsikiečių + koptų + kry + Krymo turkų + čekų + kašubų + bažnytinė slavų + čiuvašų + valų + danų + dakotų + dargva + taitų + vokiečių + Austrijos vokiečių + Šveicarijos aukštutinė vokiečių + delavero + slave + dogribų + dinkų + zarmų + dogri + Žemutinės Serbijos + dualų + Vidurio Vokietijos + divehi + džiola-foni + dyulų + svazilando + dazagų + ebu + eve + efik + senovės egiptiečių + ekajuk + graikų + elamitų + anglų + Australijos anglų + Kanados anglų + Didžiosios Britanijos anglų + anglų (JK) + Jungtinių Valstijų anglų + Vidurio Anglijos + esperanto + ispanų + Lotynų Amerikos ispanų + Europos ispanų + Meksikos ispanų + estų + baskų + evondo + persų + fang + fanti + fulahų + suomių + filipiniečių + fidžių + farerų + fon + prancūzų + Kanados prancūzų + Šveicarijos prancūzų + Vidurio Prancūzijos + senoji prancūzų + šiaurinių fryzų + rytų fryzų + frulan + vakarų fryzų + airių + ga + gajo + gbaja + škotų (gėlų) + gyz + kiribati + galisų + Vidurio Aukštosios Vokietijos + gvaranių + Senoji Aukštosios Vokietijos + gondi + gorontalo + gotų + grebo + senovės graikų + Šveicarijos vokiečių + gudžaratų + gusi + manks + gvičino + hausų + haido + havajiečių + hebrajų + hindi + hiligainon + hititų + hmong + hiri motu + kroatų + viršutinė sorbian + Haičio + vengrų + hupa + armėnų + herero + interlingva + iban + ibibio + indoneziečių + interkalba + igbų + sičuan ji + inupiak + iloko + ingušų + ido + islandų + italų + inukitut + japonų + loiban + machamų + judėjų persų + judėjų arabų + javiečių + gruzinų + karakalpakų + kabilo + kačin + ju + kamba + kavi + kabardinų + kanembų + tyap + makondų + Žaliojo Kyšulio kreolų + koro + Kongo + kasi + kotanezų + koyra čini + kikui + kuaniama + kazachų + kako + kalalisut + kalenjinų + khmerų + kimbundu + kanadų + korėjiečių + kankani + kosreanų + kpele + kanuri + karačiajų balkarijos + karelų + kuruk + kašmyrų + sambalų + bafų + kolognų + kurdų + kumikų + kutenai + komi + kornų + kirgizų + lotynų + ladino + langi + landa + lamba + liuksemburgiečių + lezginų + ganda + limburgiš + lingala + laosiečių + mongo + lozi + lietuvių + luba katanga + luba lulua + luiseno + lunda + luo + lušai + luyia + latvių + madurezų + mafų + magahi + maithili + makasaro + mandingo + masajų + mabų + mokša + mandar + mende + merų + morisijų + malagasų + Vidurio Airijos + makhuva-maeto + Maršalo Salų + maorių + mikmak + minankabu + makedonų + malajalių + mongolų + manču + manipuri + mohok + mosi + maratų + malajiečių + maltiečių + mundangų + kelios kalbos + krykų + mirandezų + marvari + birmiečių + mjenų + erzyjų + naurų + neapoliečių + namų + Norvegijos rašytinė – būkmolų + šiaurės ndebelų + Žemutinės Vokietijos + nepaliečių + nevari + ndongų + nias + niuenų + olandų + flamandų + kvasių + naujoji norvegų + ngiembūnų + norvegų + nogų + norsu + enko + pietų ndebele + šiaurės sothų + nuerų + navajų + klasikinė nevari + nianja + niamvezi + niankole + nioro + nzima + očitarų + ojibva + oromų + orijų + osetinų + osage + osmanų turkų + pendžabų + pangasinan + pahlavi + pampanga + papiemento + palau + senoji persų + finikiečių + pali + lenkų + ponapean + senovės provansalų + puštūnų + portugalų + Brazilijos portugalų + Europos portugalų + kečujų + radžastano + rapanui + rarotongan + retoromanų + rundi + rumunų + moldavų + rombo + romų + rūt + rusų + aromanių + kinjarvanda + rwa + sanskritas + sandavi + jakutų + samarėjų aramių + samburų + sasak + santali + ngambajų + sangų + sardiniečių + siciliečių + škotų + sindų + šiaurinių samių + senecų + senų + selkup + koyraboro seni + sango + senoji airių + serbų-kroatų + tachelhitų + šan + chadian arabų + sinhalų + sidamo + slovakų + slovėnų + samoa + pietų sami + lule sami + inari sami + skolt sami + šona + soninke + somaliečių + sogdien + albanų + serbų + sranan tongo + sererų + svati + saho + pietų sesuto + sundų + sukuma + susu + šumerų + švedų + suahilių + Comorian + Kongo svahili + klasikinė siriečių + sirų + tamilų + telugų + timne + teso + tereno + tetum + tadžikų + tajų + tigrajų + tigre + tiv + turkmėnų + tokelau + tagalogų + klingonų + tlingit + tamašek + tsvana + tonganų + niasa tongos + tok pisin + turkų + taroko + tsonga + tsimšian + totorių + tumbukų + tuvalu + tvi + tasavakų + taitiečių + tuvių + Centrinio Maroko tamazightų + udmurtų + uigūrų + ugaritic + ukrainiečių + umbundu + nežinoma kalba + urdų + uzbekų + vai + venda + vietnamiečių + volapiuk + votik + vunjo + valonų + valserų + valamo + varai + vašo + volofų + kalmukų + kosų + sogų + jao + japezų + jangbenų + jembų + jidiš + jorubų + kinų kalbos Kantono tarmė + chuang + zapotekų + „Bliss“ simbolių + zenaga + standartinė Maroko tamazigtų + kinų + supaprastintoji kinų + tradicinė kinų + zulų + zuni + nėra kalbinio turinio + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pasaulis + Afrika + Šiaurės Amerika + Pietų Amerika + Okeanija + Vakarų Afrika + Centrinė Amerika + Rytų Afrika + Šiaurės Afrika + Vidurio Afrika + Pietinė Afrika + Amerika + Šiaurinė Amerika + Karibai + Rytų Azija + Pietų Azija + Pietryčių Azija + Pietų Europa + Australazija + Melanezija + Mikronezijos regionas + Polinezija + Azija + Centrinė Azija + Vakarų Azija + Europa + Rytų Europa + Šiaurės Europa + Vakarų Europa + Lotynų Amerika + Dangun Žengimo sala + Andora + Jungtiniai Arabų Emyratai + Afganistanas + Antigva ir Barbuda + Angilija + Albanija + Armėnija + Olandijos Antilai + Angola + Antarktida + Argentina + Amerikos Samoa + Austrija + Australija + Aruba + Alandų Salos + Azerbaidžanas + Bosnija ir Hercegovina + Barbadosas + Bangladešas + Belgija + Burkina Fasas + Bulgarija + Bahreinas + Burundis + Beninas + Sen Bartelemi + Bermuda + Brunėjus + Bolivija + Karibų Nyderlandai + Brazilija + Bahamos + Butanas + Buvė Sala + Botsvana + Baltarusija + Belizas + Kanada + Kokosų (Kilingo) Salos + Kongas-Kinšasa + Kongo Demokratinė Respublika + Centrinės Afrikos Respublika + Kongas-Brazavilis + Kongo Respublika + Šveicarija + Dramblio Kaulo Krantas + Kuko Salos + Čilė + Kamerūnas + Kinija + Kolumbija + Klipertono sala + Kosta Rika + Kuba + Žaliasis Kyšulys + Kiurasao + Kalėdų Sala + Kipras + Čekija + Vokietija + Diego Garsija + Džibutis + Danija + Dominika + Dominikos Respublika + Alžyras + Seuta ir Melila + Ekvadoras + Estija + Egiptas + Vakarų Sachara + Eritrėja + Ispanija + Etiopija + Europos Sąjunga + Suomija + Fidžis + Folklando Salos + Folklando (Malvinų) Salos + Mikronezija + Farerų Salos + Prancūzija + Gabonas + Didžioji Britanija + Didžioji Britanija + Grenada + Gruzija + Prancūzijos Gviana + Gernsis + Gana + Gibraltaras + Grenlandija + Gambija + Gvinėja + Gvadelupa + Pusiaujo Gvinėja + Graikija + Pietų Džordžija ir Pietų Sandvičo salos + Gvatemala + Guamas + Bisau Gvinėja + Gajana + Ypatingasis Administracinis Kinijos Regionas Honkongas + Honkongas + Herdo ir Makdonaldo Salos + Hondūras + Kroatija + Haitis + Vengrija + Kanarų salos + Indonezija + Airija + Izraelis + Meno Sala + Indija + Indijos Vandenyno Britų Sritis + Irakas + Iranas + Islandija + Italija + Džersis + Jamaika + Jordanija + Japonija + Kenija + Kirgizija + Kambodža + Kiribatis + Komorai + Sent Kitsas ir Nevis + Šiaurės Korėja + Pietų Korėja + Kuveitas + Kaimanų Salos + Kazachstanas + Laosas + Libanas + Šventoji Liucija + Lichtenšteinas + Šri Lanka + Liberija + Lesotas + Lietuva + Liuksemburgas + Latvija + Libija + Marokas + Monakas + Moldova + Juodkalnija + Sen Martenas + Madagaskaras + Maršalo Salos + Makedonija + Malis + Mianmaras (Birma) + Mongolija + Ypatingasis Administracinis Kinijos Regionas Makao + Makao + Marianos Šiaurinės Salos + Martinika + Mauritanija + Montseratas + Malta + Mauricijus + Maldyvai + Malavis + Meksika + Malaizija + Mozambikas + Namibija + Naujoji Kaledonija + Nigeris + Norfolko sala + Nigerija + Nikaragva + Nyderlandai + Norvegija + Nepalas + Nauru + Niujė + Naujoji Zelandija + Omanas + Panama + Peru + Prancūzų Polinezija + Papua Naujoji Gvinėja + Filipinai + Pakistanas + Lenkija + Sen Pjeras ir Mikelonas + Pitkernas + Puerto Rikas + Palestinos teritorija + Palestina + Portugalija + Palau + Paragvajus + Kataras + Nuošali Okeanija + Reunjonas + Rumunija + Serbija + Rusija + Ruanda + Saudo Arabija + Saliamono Salos + Seišeliai + Sudanas + Švedija + Singapūras + Šv. Elenos Sala + Slovėnija + Svalbardas ir Janas Majenas + Slovakija + Siera Leonė + San Marinas + Senegalas + Somalis + Surinamas + Pietų Sudanas + San Tomė ir Prinsipė + Salvadoras + Sint Martenas + Sirija + Svazilandas + Tristanas da Kunja + Terkso ir Kaikoso Salos + Čadas + Prancūzijos Pietų sritys + Togas + Tailandas + Tadžikija + Tokelau + Rytų Timoras + Turkmėnistanas + Tunisas + Tonga + Turkija + Trinidadas ir Tobagas + Tuvalu + Taivanas + Tanzanija + Ukraina + Uganda + Jungtinių Valstijų Mažosios Tolimosios Salos + Jungtinės Valstijos + JAV + Urugvajus + Uzbekistanas + Vatikano Miesto Valstybė + Šventasis Vincentas ir Grenadinai + Venesuela + Didžiosios Britanijos Mergelių Salos + Jungtinių Valstijų Mergelių Salos + Vietnamas + Vanuatu + Volisas ir Futuna + Samoa + Kosovas + Jemenas + Majotas + Pietų Afrika + Zambija + Zimbabvė + nežinoma sritis + + + Įprasta vokiečių rašyba + Sunorminta Resian rašyba + 1996 -ųjų metų vokiečių rašyba + 1606 -ųjų metų prancūzų kalba + Ankstyvasis Prancūzijos modernizmas + Akademinis + Rytų armėnai + Vakarų armėnai + Suvienodinta turkų kalbos lotyniška abėcėlė + San Giorgio / Bila tarmė + Boontling + Tarptautinės abėcėlės fonetika + UPA fonetika + Įprasta rašyba + Resian tarmei priklausanti Lipovaz tarmė + Vienodas + Natisone tarmė + Gniva / Njiva tarmė + Oseacco / Osojane tarmė + Kinų hieroglifų vertimo sistema Romanization + Polytonic + Kompiuteris + Ištaisyta rašyba + Resian + Saho + Norminė škotiška anglų kalba + Scouse + Stolvizza / Solbica tarmė + Taraskievica tarmė + Suvienodinta rašyba + Suvienodinta ištaisyta rašyba + Valenciečiai + Wade-Giles Romanization + + + kalendorius + Rikiavimas nepaisant simbolių + Atvirkštinis rikiavimas + Didžiųjų / mažųjų raidžių tvarka + Rikiavimas skiriant didžiąsias ir mažąsias raides + Rikiavimas pagal kanos ženklus + rikiavimas + Normalizuotas rikiavimas + Skaitinis rikiavimas + Rikiavimo intensyvumas + valiuta + skaičiai + Laiko juosta + Lokalės variantas + Rikiavimas simbolių principu + Naudoti privačiai + + + arabų-indų skaitmenys + išplėstiniai arabų-indų skaitmenys + armėnų skaitmenys + armėnų skaitmenys mažosiomis raidėmis + bali skaitmenys + bengalų skaitmenys + įprasta kiniška rūšiavimo tvarka - Big5 + budistų kalendorius + cham skaitmenys + kinų kalendorius + koptų kalendorius + dangi kalendorius + devanagari skaitmenys + žodyno rūšiavimo tvarka + numatytasis unikodo rikiavimas + rūšiavimo tvarka daugiakalbės Europos dokumentų + Etiopijos skaitmenys + Etiopijos kalendorius + Etiopijos „Amete Alem“ kalendorius + Finansiniai skaičiai + viso pločio skaitmenys + supaprastinta kiniška rūšiavimo tvarka - GB2312 + gruzinų skaitmenys + Grigaliaus kalendorius + graikų skaitmenys + graikų skaitmenys mažosiomis raidėmis + gudžaratų skaitmenys + gurmuki skaitmenys + kinų dešimtainiai skaitmenys + supaprastintos kinų skaitmenys + supaprastintos kinų finans. skaitmenys + tradicinės kinų skaitmenys + tradicinės kinų finans. skaitmenys + hebrajų skaitmenys + hebrajų kalendorius + Rikiuoti viską + nacionalinis indų kalendorius + islamo kalendorius + pilietinis islamo kalendorius + ISO 8601 kalendorius + japonų kalendorius + javiečių skaitmenys + japonų skaitmenys + japonų finans. skaitmenys + khmerų skaitmenys + kanadų skaitmenys + laosiečių skaitmenys + lotyniški skaitmenys + Rikiuoti suteikiant pirmumą mažosioms raidėms + malajalių skaitmenys + mongolų skaitmenys + mianmariečių skaitmenys + Vietiniai skaitmenys + Rikiuoti diakritinius ženklus įprastai + Rikiuoti įprasta didžiųjų ir mažųjų raidžių tvarka + Rikiuoti neskiriant didžiųjų ir mažųjų raidžių + Rikiuoti kanos ženklus atskirai + Rikiuoti nenormalizuojant + Rikiuoti skaitmenis atskirai + Rikiuoti simbolius + orijų skaitmenys + persų kalendorius + telefonų knygos rūšiavimo tvarka + Fonetinė rikiavimo tvarka + supaprastinta kiniškų hieroglifų rūšiavimo tvarka + Rikiuoti tik pagal pamatines raides + Rikiuoti pagal didžiąsias ir mažąsias raides / plotį / diakritinius / kanos ženklus + reformuota rūšiavimo tvarka + Kinijos Respublikos kalendorius + romėniški skaitmenys + romėniški skaitmenys mažosiomis raidėmis + bendroji paieška + ieškoti pagal hangul pirmines priebalses + Rikiuoti diakritinius ženklus + Rikiuoti nepaisant simbolių + standartinis rikiavimas + Įprasta kiniško požymio rūšiavimo tvarka + tradicinės tamilų skaitmenys + tamilų skaitmenys + telugų skaitmenys + Rikiuoti pagal diakritinius ženklus / didžiąsias ir mažąsias raides / plotį + tajų skaitmenys + tibetiečių skaitmenys + įprasta rūšiavimo tvarka + Tradiciniai skaičiai + Šaknies ženklų ir brūkšnių rūšiavimo tvarka + Rikiuoti suteikiant pirmumą didžiosioms raidėms + vai skaitmenys + Rikiuoti diakritinius ženklus atvirkščiai + Rikiuoti skiriant didžiąsias ir mažąsias raides + Rikiuoti kanos ženklus kitaip + Rikiuoti normalizuojant unikodą + Rikiuoti skaitmenis pagal skaičius + + + BGN simboliai + Skaitinis + Tonas + UNGEGN simboliai + Kirčiai + Viso pločio + Vidutinio pločio + Jamo simboliai + Pinjino simboliai + Skelbimas + + + metrinė + JK + JAV + + + Kalba: {0} + Rašmenys: {0} + Sritis: {0} + + + + [a ą b c č d e ę ė f g h i į y j k l m n o p r s š t u ų ū v z ž] + [á à ã {ą\u0301} {ą\u0303} {ch} {dz} {dž} é è ẽ {ę\u0301} {ę\u0303} {ė\u0301} {ė\u0303} {i\u0307\u0301}í {i\u0307\u0300}ì {i\u0307\u0303}ĩ {į\u0301}{į\u0307\u0301} {į\u0303}{į\u0307\u0303} {j\u0303}{j\u0307\u0303} {l\u0303} {m\u0303} ñ ó ò õ q {r\u0303} ú ù ũ {ų\u0301} {ų\u0303} {ū\u0301} {ū\u0303} w x] + [A Ą B C Č D E Ę Ė F G H I Į Y J K L M N O P R S Š T U Ų Ū V Z Ž] + [\- ‐ – — , ; \: ! ? . … “ „ ( ) \[ \] \{ \}] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + y MMMM d G, EEEE + + + + + y MMMM d G + + + + + y MMM d G + + + + + y-MM-dd G + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + y G + y MMM G + y MMM d G + y MMM d G, E + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + LL + MM-dd + MM-dd, E + MM.dd + LLL + MMM-d + MMM-d, E + mm:ss + y G + y G + y MM G + y-MM-dd G + y-MM-dd G, E + y MMM G + y MMM d G + y MMM d G, E + y G QQQ + y G QQQQ + + + {0} – {1} + + d–d + + + h a–h a + h–h a + + + HH–HH + + + hh:mm a–hh:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + hh:mm a–hh:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a–h a v + h–h a v + + + HH–HH v + + + M–M + + + MM-dd–MM-dd + MM-dd–MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + MMM–MMM + + + MMM d–d + MMM d–MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y G + + + y-MM – y-MM G + y-MM – y-MM G + + + y-MM-dd–y-MM-dd G + y-MM-dd– y-MM-dd G + y-MM-dd – y-MM-dd G + + + y-MM-dd G, E – y-MM-dd G, E + y-MM-dd G, E – y-MM-dd G, E + y-MM-dd G, E – y-MM-dd G, E + + + y MMM–MMM G + y-MM – y-MM G + + + y 'm'. MMM d 'd'.–d 'd'. G + y-MM-dd – MM-d G + y-MM-dd – y-MM-dd G + + + y-MM-dd G, E – y-MM-dd G, E + y-MM-dd G, E – y-MM-dd G, E + y-MM-dd G, E – y-MM-dd G, E + + + y MMMM – MMMM G + y MMMM – y MMMM G + + + + + + + + + saus. + vas. + kov. + bal. + geg. + birž. + liep. + rugp. + rugs. + spal. + lapkr. + gruod. + + + S + V + K + B + G + B + L + R + R + S + L + G + + + sausis + vasaris + kovas + balandis + gegužė + birželis + liepa + rugpjūtis + rugsėjis + spalis + lapkritis + gruodis + + + + + saus. + vas. + kov. + bal. + geg. + birž. + liep. + rugp. + rugs. + spal. + lapkr. + gruod. + + + S + V + K + B + G + B + L + R + R + S + L + G + + + sausis + vasaris + kovas + balandis + gegužė + birželis + liepa + rugpjūtis + rugsėjis + spalis + lapkritis + gruodis + + + + + + + sk + pr + an + tr + kt + pn + št + + + S + P + A + T + K + P + Š + + + Sk + Pr + An + Tr + Kt + Pn + Št + + + sekmadienis + pirmadienis + antradienis + trečiadienis + ketvirtadienis + penktadienis + šeštadienis + + + + + sk + pr + an + tr + kt + pn + št + + + S + P + A + T + K + P + Š + + + Sk + Pr + An + Tr + Kt + Pn + Št + + + sekmadienis + pirmadienis + antradienis + trečiadienis + ketvirtadienis + penktadienis + šeštadienis + + + + + + + I k. + II k. + III k. + IV k. + + + 1 + 2 + 3 + 4 + + + I ketvirtis + II ketvirtis + III ketvirtis + IV ketvirtis + + + + + I ketv. + II ketv. + III ketv. + IV ketv. + + + 1 + 2 + 3 + 4 + + + I ketvirtis + II ketvirtis + III ketvirtis + IV ketvirtis + + + + + + + pr.p. + pop. + + + priešpiet + popiet + + + + + + prieš Kristų + prieš mūsų erą + po Kristaus + po mūsų erą + + + pr. Kr. + pr. m. e. + po Kr. + po m. e. + + + pr. Kr. + prme + po Kr. + pome + + + + + + y 'm'. MMMM d 'd'., EEEE + + + + + y 'm'. MMMM d 'd'. + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + dd + d, E + hh:mm a, E + HH:mm, E + hh:mm:ss a, E + HH:mm:ss, E + y G + y G MMM + y G MMM d + y G MMM d, E + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + LL + MM-d + MM-dd, E + MM-dd + LLL + MMM d + MMM d, E + mm:ss + y + y-MM + y-MM-dd + y-MM-dd, E + y MMM + y MMM d + y MMM d, E + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + dd–dd + + + hh a–hh a + hh–hh a + + + HH–HH + + + hh:mm a–hh:mm a + hh:mm–hh:mm a + hh:mm–hh:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + hh:mm a–hh:mm a v + hh:mm–hh:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + hh a–hh a v + hh–hh a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + + + y 'm'. MMM–MMM + y-MM – y-MM + + + y MMM d–d + y MMM d – MMM d + y MMM d – y MMM d + + + y MMM d, E – MMM d, E + y MMM d, E. – MMM d, E. + y MMM d, E. – y MMM d, E. + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + Era + + + Metai + praėjusiais metais + šiais metais + kitais metais + + po {0} metų + po {0} metų + po {0} metų + po {0} metų + + + prieš {0} metus + prieš {0} metus + prieš {0} metų + prieš {0} metų + + + + Mėnuo + praėjusį mėnesį + šį mėnesį + kitą mėnesį + + po {0} mėnesio + po {0} mėnesių + po {0} mėnesio + po {0} mėnesių + + + prieš {0} mėnesį + prieš {0} mėnesius + prieš {0} mėnesio + prieš {0} mėnesių + + + + Savaitė + praėjusią savaitę + šią savaitę + kitą savaitę + + po {0} savaitės + po {0} savaičių + po {0} savaitės + po {0} savaičių + + + prieš {0} savaitę + prieš {0} savaites + prieš {0} savaitės + prieš {0} savaičių + + + + Diena + užvakar + vakar + šiandien + rytoj + poryt + + po {0} dienos + po {0} dienų + po {0} dienos + po {0} dienų + + + prieš {0} dieną + prieš {0} dienas + prieš {0} dienos + prieš {0} dienų + + + + Savaitės diena + + + praėjusį sekmadienį + šį sekmadienį + kitą sekmadienį + + + praėjusį pirmadienį + šį pirmadienį + kitą pirmadienį + + + praėjusį antradienį + šį antradienį + kitą antradienį + + + praėjusį trečiadienį + šį trečiadienį + kitą trečiadienį + + + praėjusį ketvirtadienį + šį ketvirtadienį + kitą ketvirtadienį + + + praėjusį penktadienį + šį penktadienį + kitą penktadienį + + + praėjusį šeštadienį + šį šeštadienį + kitą šeštadienį + + + Iki pietų / po pietų + + + Valanda + + po {0} valandos + po {0} valandų + po {0} valandos + po {0} valandų + + + prieš {0} valandą + prieš {0} valandas + prieš {0} valandos + prieš {0} valandų + + + + Minutė + + po {0} minutės + po {0} minučių + po {0} minutės + po {0} minučių + + + prieš {0} minutę + prieš {0} minutes + prieš {0} minutės + prieš {0} minučių + + + + Sekundė + dabar + + po {0} sekundės + po {0} sekundžių + po {0} sekundės + po {0} sekundžių + + + prieš {0} sekundę + prieš {0} sekundes + prieš {0} sekundės + prieš {0} sekundžių + + + + Laiko juosta + + + + +HH:mm;−HH:mm + GMT{0} + GMT + Laikas: {0} + Vasaros laikas: {0} + Standartinis laikas: {0} + {1} ({0}) + + nežinomas miestas + + + Andora + + + Dubajus + + + Kabulas + + + Antigva + + + Angilija + + + Tirana + + + Jerevanas + + + Rotera + + + Palmeris + + + Siova + + + Mosonas + + + Deivisas + + + Vostokas + + + Keisis + + + Diumonas d'Urvilis + + + Makmerdas + + + Rio Galjegosas + + + Mendosa + + + San Chuanas + + + Ušuaja + + + La Riocha + + + Sent Luisas + + + Katamarka + + + Saltas + + + Chuchujus + + + Tukumanas + + + Kordoba + + + Buenos Airės + + + Pago Pagas + + + Viena + + + Pertas + + + Jukla + + + Darvinas + + + Adelaidė + + + Broken Hilis + + + Karis + + + Melburnas + + + Hobartas + + + Lindemanas + + + Sidnėjus + + + Brisbanas + + + Makvoris + + + Lordo Hau sala + + + Marianhamina + + + Sarajevas + + + Barbadosas + + + Daka + + + Briuselis + + + Vagadugu + + + Sofija + + + Bahreinas + + + Bužumbūra + + + Porto Novas + + + Sen Bartelemi + + + Brunėjus + + + La Pasas + + + Kralendeikas + + + Eirunepė + + + Rio Brankas + + + Porto Veljas + + + Bua Vista + + + Manausas + + + Kujaba + + + Santarenas + + + Kampo Grandė + + + Belenas + + + Aragvajana + + + San Paulas + + + Baija + + + Masejo + + + Resifė + + + Noronja + + + Timpu + + + Gaboronas + + + Minskas + + + Belizas + + + Dosonas + + + Vaithorsas + + + Inuvikas + + + Vankuveris + + + Doson Krikas + + + Krestonas + + + Jelounaifas + + + Edmontonas + + + Svift Karentas + + + Keimbridž Bėjus + + + Redžina + + + Vinipegas + + + Resolutas + + + Reini Riveris + + + Rankin Inletas + + + Atikokanas + + + Tander Bėjus + + + Nipigonas + + + Torontas + + + Ikaluitas + + + Pangnirtungas + + + Monktonas + + + Halifaksas + + + Gus Bėjus + + + Gleis Bėjus + + + Blanč Sablonas + + + Sent Džonsas + + + Kokosų sala + + + Kinšasa + + + Lubumbašis + + + Bangis + + + Brazavilis + + + Ciurichas + + + Abidžanas + + + Velykų sala + + + Santjagas + + + Duala + + + Kašgaras + + + Urumči + + + Čongčingas + + + Šanchajus + + + Harbinas + + + Kosta Rika + + + Žaliasis Kyšulys + + + Kiurasao + + + Kalėdų Sala + + + Nikosija + + + Praha + + + Biusingenas + + + Berlynas + + + Džibutis + + + Kopenhaga + + + Dominika + + + Santo Domingas + + + Alžyras + + + Galapagai + + + Gvajakilis + + + Talinas + + + Kairas + + + al Ajūnas + + + Asmara + + + Kanarų salos + + + Seuta + + + Madridas + + + Adis Abeba + + + Helsinkis + + + Fidžis + + + Stenlis + + + Čukas + + + Ponapė + + + Kosrajė + + + Farerai + + + Paryžius + + + Librevilis + + + + Britanijos vasaros laikas + + Londonas + + + Tbilisis + + + Kajenas + + + Gernsis + + + Akra + + + Gibraltaras + + + Kanakas + + + Nūkas + + + Itokortormitas + + + Danmarkshaunas + + + Bandžulis + + + Konakris + + + Gvadalupė + + + Malabas + + + Atėnai + + + Pietų Džordžija + + + Gvatemala + + + Guamas + + + Bisau + + + Gvajana + + + Honkongas + + + Tegusigalpa + + + Zagrebas + + + Port o Prensas + + + Budapeštas + + + Džakarta + + + Pontianakas + + + Makasaras + + + Džajapura + + + + Airijos vasaros laikas + + Dublinas + + + Jeruzalė + + + Meno sala + + + Kolkata + + + Čagosas + + + Bagdadas + + + Teheranas + + + Reikjavikas + + + Roma + + + Džersis + + + Jamaika + + + Amanas + + + Tokijas + + + Nairobis + + + Biškekas + + + Pnompenis + + + Enderburis + + + Kiritimatis + + + Tarava + + + Komoras + + + Sent Kitsas + + + Pchenjanas + + + Seulas + + + Kuveitas + + + Kaimanas + + + Aktau + + + Uralskas + + + Aktiubinskas + + + Kzyl-Orda + + + Alma Ata + + + Vientianas + + + Beirutas + + + Sent Lusija + + + Vaducas + + + Kolombas + + + Monrovija + + + Liuksemburgas + + + Ryga + + + Tripolis + + + Kasablanka + + + Monakas + + + Kišiniovas + + + Marigo + + + Antananaryvas + + + Kvadžaleinas + + + Madžūras + + + Skopjė + + + Bamakas + + + Rangūnas + + + Hovdas + + + Ulan Batoras + + + Čoibalsanas + + + Makao + + + Saipanas + + + Martinika + + + Nuakšotas + + + Montseratas + + + Mauricijus + + + Maldyvai + + + Blantairas + + + Tichuana + + + Santa Izabelė + + + Hermosiljas + + + Masatlanas + + + Čihuahua + + + Bahia Banderasas + + + Ochinaga + + + Monterėjus + + + Meksikas + + + Matamorosas + + + Kankūnas + + + Kvala Lumpūras + + + Kučingas + + + Maputas + + + Vindhukas + + + Numėja + + + Niamėjus + + + Norfolkas + + + Lagosas + + + Managva + + + Amsterdamas + + + Oslas + + + Katmandu + + + Niujė + + + Čatamas + + + Oklandas + + + Maskatas + + + Taitis + + + Markizo salos + + + Gambyras + + + Port Morsbis + + + Karačis + + + Varšuva + + + Mikelonas + + + Pitkerno sala + + + Puerto Rikas + + + Gazos ruožas + + + Hebronas + + + Azorai + + + Lisabona + + + Asunsjonas + + + Kataras + + + Reunjonas + + + Bukareštas + + + Belgradas + + + Kaliningradas + + + Maskva + + + Volgogradas + + + Jekaterinburgas + + + Omskas + + + Novosibirskas + + + Novokuzneckas + + + Krasnojarskas + + + Irkutskas + + + Jakutskas + + + Vladivostokas + + + Chandyga + + + Sachalinas + + + Ust Nera + + + Magadanas + + + Kamčiatka + + + Anadyris + + + Kigalis + + + Rijadas + + + Gvadalkanalis + + + Mahė + + + Chartumas + + + Stokholmas + + + Singapūras + + + Sent Helena + + + Liubliana + + + Longjyrbienas + + + Fritaunas + + + San Marinas + + + Dakaras + + + Mogadišas + + + Paramaribas + + + Džuba + + + San Tomė + + + Salvadoras + + + Žemutinis Prinses Kvorteris + + + Damaskas + + + Mbabanė + + + Grand Terkas + + + Ndžamena + + + Kergelenas + + + Lomė + + + Bankokas + + + Dušanbė + + + Fakaofas + + + Dilis + + + Ašchabadas + + + Tunisas + + + Stambulas + + + Port of Speinas + + + Funafutis + + + Taipėjus + + + Dar es Salamas + + + Užhorodas + + + Kijevas + + + Simferopolis + + + Zaporožė + + + Midvėjus + + + Džonstonas + + + Veiko sala + + + Eidakas + + + Nomas + + + Ankoridžas + + + Jakutatas + + + Džunas + + + Los Andželas + + + Boisis + + + Finiksas + + + Denveris + + + Bjula, Šiaurės Dakota + + + Niu Seilemas, Šiaurės Dakota + + + Senteris, Šiaurės Dakota + + + Čikaga + + + Menominis + + + Vinsenas, Indiana + + + Pitersbergas, Indiana + + + Tel Sitis, Indiana + + + Noksas, Indiana + + + Vinamakas, Indiana + + + Marengas, Indiana + + + Luisvilis + + + Vivis, Indiana + + + Montiselas, Kentukis + + + Detroitas + + + Niujorkas + + + Montevidėjas + + + Samarkandas + + + Taškentas + + + Vatikanas + + + Sent Vincentas + + + Karakasas + + + Sent Tomasas + + + Hošiminas + + + Efatė + + + Volisas + + + Apija + + + Adenas + + + Majotas + + + Johanesburgas + + + Hararė + + + + Afganistano laikas + + + + + Centrinės Afrikos laikas + + + + + Rytų Afrikos laikas + + + + + Pietų Afrikos laikas + + + + + Vakarų Afrikos laikas + Vakarų Afrikos žiemos laikas + Vakarų Afrikos vasaros laikas + + + + + Aliaskos laikas + Aliaskos žiemos laikas + Aliaskos vasaros laikas + + + + + Almatos laikas + Almatos žiemos laikas + Almatos vasaros laikas + + + + + Amazonės laikas + Amazonės žiemos laikas + Amazonės vasaros laikas + + + + + Šiaurės Amerikos centro laikas + Šiaurės Amerikos centro žiemos laikas + Šiaurės Amerikos centro vasaros laikas + + + + + Šiaurės Amerikos rytų laikas + Šiaurės Amerikos rytų žiemos laikas + Šiaurės Amerikos rytų vasaros laikas + + + + + Šiaurės Amerikos kalnų laikas + Šiaurės Amerikos kalnų žiemos laikas + Šiaurės Amerikos kalnų vasaros laikas + + + + + Šiaurės Amerikos Ramiojo vandenyno laikas + Šiaurės Amerikos Ramiojo vandenyno žiemos laikas + Šiaurės Amerikos Ramiojo vandenyno vasaros laikas + + + + + Anadyrės laikas + Anadyrės žiemos laikas + Anadyrės vasaros laikas + + + + + Aktau laikas + Aktau žiemos laikas + Aktau vasaros laikas + + + + + Aktobės laikas + Aktobės žiemos laikas + Aktobės vasaros laikas + + + + + Arabijos laikas + Arabijos žiemos laikas + Arabijos vasaros laikas + + + + + Argentinos laikas + Argentinos žiemos laikas + Argentinos vasaros laikas + + + + + Vakarų Argentinos laikas + Vakarų Argentinos žiemos laikas + Vakarų Argentinos vasaros laikas + + + + + Armėnijos laikas + Armėnijos žiemos laikas + Armėnijos vasaros laikas + + + + + Atlanto laikas + Atlanto žiemos laikas + Atlanto vasaros laikas + + + + + Centrinės Australijos laikas + Centrinės Australijos žiemos laikas + Centrinės Australijos vasaros laikas + + + + + Centrinės vakarų Australijos laikas + Centrinės vakarų Australijos žiemos laikas + Centrinės vakarų Australijos vasaros laikas + + + + + Rytų Australijos laikas + Rytų Australijos žiemos laikas + Rytų Australijos vasaros laikas + + + + + Vakarų Australijos laikas + Vakarų Australijos žiemos laikas + Vakarų Australijos vasaros laikas + + + + + Azerbaidžano laikas + Azerbaidžano žiemos laikas + Azerbaidžano vasaros laikas + + + + + Azorų Salų laikas + Azorų Salų žiemos laikas + Azorų Salų vasaros laikas + + + + + Bangladešo laikas + Bangladešo žiemos laikas + Bangladešo vasaros laikas + + + + + Butano laikas + + + + + Bolivijos laikas + + + + + Brazilijos laikas + Brazilijos žiemos laikas + Brazilijos vasaros laikas + + + + + Brunėjaus Darusalamo laikas + + + + + Žaliojo Kyšulio laikas + Žaliojo Kyšulio žiemos laikas + Žaliojo Kyšulio vasaros laikas + + + + + Čamoro laikas + + + + + Čatamo laikas + Čatamo žiemos laikas + Čatamo vasaros laikas + + + + + Čilės laikas + Čilės žiemos laikas + Čilės vasaros laikas + + + + + Kinijos laikas + Kinijos žiemos laikas + Kinijos vasaros laikas + + + + + Čoibalsano laikas + Čoibalsano žiemos laikas + Čoibalsano vasaros laikas + + + + + Kalėdų Salos laikas + + + + + Kokosų Salų laikas + + + + + Kolumbijos laikas + Kolumbijos žiemos laikas + Kolumbijos vasaros laikas + + + + + Kuko Salų laikas + Kuko Salų žiemos laikas + Kuko Salų pusės vasaros laikas + + + + + Kubos laikas + Kubos žiemos laikas + Kubos vasaros laikas + + + + + Deiviso laikas + + + + + Diumono d'Urvilio laikas + + + + + Rytų Timoro laikas + + + + + Velykų Salos laikas + Velykų salos žiemos laikas + Velykų Salos vasaros laikas + + + + + Ekvadoro laikas + + + + + Vidurio Europos laikas + Vidurio Europos žiemos laikas + Vidurio Europos vasaros laikas + + + + + Rytų Europos laikas + Rytų Europos žiemos laikas + Rytų Europos vasaros laikas + + + + + Vakarų Europos laikas + Vakarų Europos žiemos laikas + Vakarų Europos vasaros laikas + + + + + Folklando Salų laikas + Folklandų salų žiemos laikas + Folklando Salų vasaros laikas + + + + + Fidžio laikas + Fidžio žiemos laikas + Fidžio vasaros laikas + + + + + Prancūzijos Gvianos laikas + + + + + Pietų Prancūzijos ir antarktinis laikas + + + + + Galapagų laikas + + + + + Gambyro laikas + + + + + Gruzijos laikas + Gruzijos žiemos laikas + Gruzijos vasaros laikas + + + + + Gilberto Salų laikas + + + + + Grinvičo laikas + + + + + Grenlandijos rytų laikas + Grenlandijos rytų žiemos laikas + Grenlandijos rytų vasaros laikas + + + + + Grenlandijos vakarų laikas + Grenlandijos vakarų žiemos laikas + Grenlandijos vakarų vasaros laikas + + + + + Guamo laikas + + + + + Persijos įlankos laikas + + + + + Gajanos laikas + + + + + Havajų-Aleutų laikas + Havajų–Aleutų žiemos laikas + Havajų–Aleutų vasaros laikas + + + + + Honkongo laikas + Honkongo žiemos laikas + Honkongo vasaros laikas + + + + + Hovdo laikas + Hovdo žiemos laikas + Hovdo vasaros laikas + + + + + Indijos laikas + + + + + Indijos vandenyno laikas + + + + + Indokinijos laikas + + + + + Centrinės Indonezijos laikas + + + + + Rytų Indonezijos laikas + + + + + Vakarų Indonezijos laikas + + + + + Irano laikas + Irano žiemos laikas + Irano vasaros laikas + + + + + Irkutsko laikas + Irkutsko žiemos laikas + Irkutsko vasaros laikas + + + + + Izraelio laikas + Izraelio žiemos laikas + Izraelio vasaros laikas + + + + + Japonijos laikas + Japonijos žiemos laikas + Japonijos vasaros laikas + + + + + Kamčiatkos Petropavlovsko laikas + Kamčiatkos Petropavlovsko žiemos laikas + Kamčiatkos Petropavlovsko vasaros laikas + + + + + Rytų Kazachstano laikas + + + + + Vakarų Kazachstano laikas + + + + + Korėjos laikas + Korėjos žiemos laikas + Korėjos vasaros laikas + + + + + Kosrajė laikas + + + + + Krasnojarsko laikas + Krasnojarsko žiemos laikas + Krasnojarsko vasaros laikas + + + + + Kirgistano laikas + + + + + Lankos laikas + + + + + Laino Salų laikas + + + + + Lordo Hau laikas + Lordo Hau žiemos laikas + Lordo Hau vasaros laikas + + + + + Makau laikas + Makau žiemos laikas + Makau vasaros laikas + + + + + Makvorio Salos laikas + + + + + Magadano laikas + Magadano žiemos laikas + Magadano vasaros laikas + + + + + Malaizijos laikas + + + + + Maldyvų laikas + + + + + Markizo Salų laikas + + + + + Maršalo Salų laikas + + + + + Mauricijaus laikas + Mauricijaus žiemos laikas + Mauricijaus vasaros laikas + + + + + Mosono laikas + + + + + Ulan Batoro laikas + Ulan Batoro žiemos laikas + Ulan Batoro vasaros laikas + + + + + Maskvos laikas + Maskvos žiemos laikas + Maskvos vasaros laikas + + + + + Mianmaro laikas + + + + + Nauru laikas + + + + + Nepalo laikas + + + + + Naujosios Kaledonijos laikas + Naujosios Kaledonijos žiemos laikas + Naujosios Kaledonijos vasaros laikas + + + + + Naujosios Zelandijos laikas + Naujosios Zelandijos žiemos laikas + Naujosios Zelandijos vasaros laikas + + + + + Niufaundlendo laikas + Niufaundlendo žiemos laikas + Niufaundlendo vasaros laikas + + + + + Niujė laikas + + + + + Norfolko Salų laikas + + + + + Fernando de Noronjos laikas + Fernando de Noronjos žiemos laikas + Fernando de Noronjos vasaros laikas + + + + + Šiaurės Marianos Salų laikas + + + + + Novosibirsko laikas + Novosibirsko žiemos laikas + Novosibirsko vasaros laikas + + + + + Omsko laikas + Omsko žiemos laikas + Omsko vasaros laikas + + + + + Pakistano laikas + Pakistano žiemos laikas + Pakistano vasaros laikas + + + + + Palau laikas + + + + + Papua Naujosios Gvinėjos laikas + + + + + Paragvajaus laikas + Paragvajaus žiemos laikas + Paragvajaus vasaros laikas + + + + + Peru laikas + Peru žiemos laikas + Peru vasaros laikas + + + + + Filipinų laikas + Filipinų žiemos laikas + Filipinų vasaros laikas + + + + + Fenikso Salų laikas + + + + + Sen Pjero ir Mikelono laikas + Sen Pjero ir Mikelono žiemos laikas + Sen Pjero ir Mikelono vasaros laikas + + + + + Pitkerno laikas + + + + + Ponapės laikas + + + + + Kyzylordos laikas + Kyzylordos žiemos laikas + Kyzylordos vasaros laikas + + + + + Reunjono laikas + + + + + Roteros laikas + + + + + Sachalino laikas + Sachalino žiemos laikas + Sachalino vasaros laikas + + + + + Samaros laikas + Samaros žiemos laikas + Samaros vasaros laikas + + + + + Samoa laikas + Samoa žiemos laikas + Samoa vasaros laikas + + + + + Seišelių laikas + + + + + Singapūro laikas + + + + + Saliamono Salų laikas + + + + + Pietų Džordžijos laikas + + + + + Surinamo laikas + + + + + Siovos laikas + + + + + Tahičio laikas + + + + + Taipėjaus laikas + Taipėjaus žiemos laikas + Taipėjaus vasaros laikas + + + + + Tadžikistano laikas + + + + + Tokelau laikas + + + + + Tongos laikas + Tongos žiemos laikas + Tongos vasaros laikas + + + + + Čuko laikas + + + + + Turkmėnistano laikas + Turkmėnistano žiemos laikas + Turkmėnistano vasaros laikas + + + + + Tuvalu laikas + + + + + Urugvajaus laikas + Urugvajaus žiemos laikas + Urugvajaus vasaros laikas + + + + + Uzbekistano laikas + Uzbekistano žiemos laikas + Uzbekistano vasaros laikas + + + + + Vanuatu laikas + Vanuatu žiemos laikas + Vanuatu vasaros laikas + + + + + Venesuelos laikas + + + + + Vladivostoko laikas + Vladivostoko žiemos laikas + Vladivostoko vasaros laikas + + + + + Volgogrado laikas + Volgogrado žiemos laikas + Volgogrado vasaros laikas + + + + + Vostoko laikas + + + + + Veiko Salos laikas + + + + + Voliso ir Futūnos laikas + + + + + Jakutsko laikas + Jakutsko žiemos laikas + Jakutsko vasaros laikas + + + + + Jekaterinburgo laikas + Jekaterinburgo žiemos laikas + Jekaterinburgo vasaros laikas + + + + + + latn + + , +   + ; + % + + + + ×10^ + × + + + NaN + + + + + #,##0.### + + + + + 0 tūkstantis + 0 tūkstančiai + 0 tūkstančio + 0 tūkstančių + 00 tūkstantis + 00 tūkstančiai + 00 tūkstančio + 00 tūkstančių + 000 tūkstantis + 000 tūkstančiai + 000 tūkstančio + 000 tūkstančių + 0 milijonas + 0 milijonai + 0 milijono + 0 milijonų + 00 milijonas + 00 milijonai + 00 milijono + 00 milijonų + 000 milijonas + 000 milijonai + 000 milijono + 000 milijonų + 0 milijardas + 0 milijardai + 0 milijardo + 0 milijardų + 00 milijardas + 00 milijardai + 00 milijardo + 00 milijardų + 000 milijardas + 000 milijardai + 000 milijardo + 000 milijardų + 0 trilijonas + 0 trilijonai + 0 trilijono + 0 trilijonų + 00 trilijonas + 00 trilijonai + 00 trilijono + 00 trilijonų + 000 trilijonas + 000 trilijonai + 000 trilijono + 000 trilijonų + + + + + 0 tūkst'.' + 0 tūkst'.' + 0 tūkst'.' + 0 tūkst'.' + 00 tūkst'.' + 00 tūkst'.' + 00 tūkst'.' + 00 tūkst'.' + 000 tūkst'.' + 000 tūkst'.' + 000 tūkst'.' + 000 tūkst'.' + 0 mln'.' + 0 mln'.' + 0 mln'.' + 0 mln'.' + 00 mln'.' + 00 mln'.' + 00 mln'.' + 00 mln'.' + 000 mln'.' + 000 mln'.' + 000 mln'.' + 000 mln'.' + 0 mlrd'.' + 0 mlrd'.' + 0 mlrd'.' + 0 mlrd'.' + 00 mlrd'.' + 00 mlrd'.' + 00 mlrd'.' + 00 mlrd'.' + 000 mlrd'.' + 000 mlrd'.' + 000 mlrd'.' + 000 mlrd'.' + 0 trln'.' + 0 trln'.' + 0 trln'.' + 0 trln'.' + 00 trln'.' + 00 trln'.' + 00 trln'.' + 00 trln'.' + 000 trln'.' + 000 trln'.' + 000 trln'.' + 000 trln'.' + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + Andoros peseta + Andoros peseta + Andoros pesetos + Andoros pesetos + Andoros pesetos + + + Jungtinių Arabų Emyratų dirhamas + JAE dirhamas + JAE dirhamai + JAE dirhamo + JAE dirhamų + + + Afganistano afganis (1927–2002) + Afganistano afganis (1927–2002) + Afganistano afganiai (1927–2002) + Afganistano afganio (1927–2002) + Afganistano afganių (1927–2002) + + + Afganistano afganis + Afganistano afganis + Afganistano afganiai + Afganistano afganio + Afganistano afganių + + + Albanijos lekas (1946–1965) + Albanijos lekas (1946–1965) + Albanijos lekai (1946–1965) + Albanijos leko (1946–1965) + Albanijos lekų (1946–1965) + + + Albanijos lekas + Albanijos lekas + Albanijos lekai + Albanijos leko + Albanijos lekų + + + Armėnijos dramas + Armėnijos dramas + Armėnijos dramai + Armėnijos dramo + Armėnijos dramų + + + Olandijos Antilų guldenas + Olandijos Antilų guldenas + Olandijos Antilų guldenai + Olandijos Antilų guldeno + Olandijos Antilų guldenų + + + Angolos kvanza + Angolos kvanza + Angolos kvanzos + Angolos kvanzos + Angolos kvanzų + + + Angolos kvanza (1977–1990) + Angolos kvanza (1977–1990) + Angolos kvanzos (1977–1990) + Angolos kvanzos (1977–1990) + Angolos kvanzų (1977–1990) + + + Angolos naujoji kvanza + Angolos naujoji kvanza + Angolos naujosios kvanzos + Angolos naujosios kvanzos + Angolos naujosios kvanzos + + + Angolan kwanzas reajustado (AOR) + Angolan kwanzas reajustado (AOR) + Angolan kwanzas reajustado (AOR) + Angolan kwanzas reajustado (AOR) + Angolan kwanzas reajustado (AOR) + + + Argentinos australs + Argentinos austral + Argentinos australs + Argentinos australs + Argentinos australs + + + Argentinos pesos ley + Argentinos pesos ley + Argentinos pesos ley + Argentinos pesos ley + Argentinos pesos ley + + + Argentinos pesai moneda nacional + Argentinos pesai moneda nacional + Argentinos pesai moneda nacional + Argentinos pesai moneda nacional + Argentinos pesai moneda nacional + + + Argentinos pesas (1983–1985) + Argentinos pesas (1983–1985) + Argentinos pesai (1983–1985) + Argentinos pesai (1983–1985) + Argentinos pesai (1983–1985) + + + Argentinos pesas + Argentinos pesas + Argentinos pesai + Argentinos peso + Argentinos pesų + + + Austrijos šilingas + Austrijos šilingas + Austrijos šilingai + Austrijos šilingo + Austrijos šilingų + + + Australijos doleris + Australijos doleris + Australijos doleriai + Australijos dolerio + Australijos dolerių + AUD + + + Arubos guldenas + Arubos guldenas + Arubos guldenai + Arubos guldeno + Arubos guldenų + + + Azerbaidžano manatas (1993–2006) + Azerbaidžano manatas (1993–2006) + Azerbaidžano manatai (1993–2006) + Azerbaidžano manato (1993–2006) + Azerbaidžano manatų (1993–2006) + + + Azerbaidžano manatas + Azerbaidžano manatas + Azerbaidžano manatai + Azerbaidžano manato + Azerbaidžano manatų + + + Bosnijos ir Hercegovinos dinaras (1992–1994) + Bosnijos ir Hercegovinos dinaras (1992–1994) + Bosnijos ir Hercegovinos dinarai (1992–1994) + Bosnijos ir Hercegovinos dinaro (1992–1994) + Bosnijos ir Hercegovinos dinarų (1992–1994) + + + Bosnijos ir Hercegovinos konvertuojamoji markė + Bosnijos ir Hercegovinos konvertuojamoji markė + Bosnijos ir Hercegovinos konvertuojamosios markės + Bosnijos ir Hercegovinos konvertuojamosios markės + Bosnijos ir Hercegovinos konvertuojamųjų markių + + + Bosnijos ir Hercegovinos naujasis dinaras (1994–1997) + Bosnijos ir Hercegovinos naujasis dinaras (1994–1997) + Bosnijos ir Hercegovinos naujieji dinarai (1994–1997) + Bosnijos ir Hercegovinos naujojo dinaro (1994–1997) + Bosnijos ir Hercegovinos naujųjų dinarų (1994–1997) + + + Barbadoso doleris + Barbadoso doleris + Barbadoso doleriai + Barbadoso dolerio + Barbadoso dolerių + + + Bangladešo taka + Bangladešo taka + Bangladešo takos + Bangladešo takos + Bangladešo takų + + + Belgijos frankas (konvertuojamas) + Belgijos frankas (konvertuojamas) + Belgijos frankai (konvertuojami) + Belgijos franko (konvertuojamo) + Belgijos frankų (konvertuojamų) + + + Belgijos frankas + Belgijos frankas + Belgijos frankai + Belgijos franko + Belgijos frankų + + + Belgijos frankas (finansinis) + Belgijos frankas (finansinis) + Belgijos frankai (finansiniai) + Belgijos franko (finansinio) + Belgijos frankų (finansinių) + + + Bulgarijos levas (1962–1999) + Bulgarijos levas (1962–1999) + Bulgarijos levai (1962–1999) + Bulgarijos levo (1962–1999) + Bulgarijos levų (1962–1999) + + + Bulgarų socialistų leva + Bulgarų socialistų lev + Bulgarų socialistų leva + Bulgarų socialistų leva + Bulgarų socialistų leva + + + Bulgarijos levas + Bulgarijos levas + Bulgarijos levai + Bulgarijos levo + Bulgarijos levų + + + Bulgarijos levas (1879–1952) + Bulgarijos levas (1879–1952) + Bulgarijos levai (1879–1952) + Bulgarijos levo (1879–1952) + Bulgarijos levų (1879–1952) + + + Bahreino dinaras + Bahreino dinaras + Bahreino dinarai + Bahreino dinaro + Bahreino dinarų + + + Burundžio frankas + Burundžio frankas + Burundžio frankai + Burundžio franko + Burundžio frankų + + + Bermudos doleris + Bermudos doleris + Bermudos doleriai + Bermudos dolerio + Bermudos dolerių + + + Brunėjaus doleris + Brunėjaus doleris + Brunėjaus doleriai + Brunėjaus dolerio + Brunėjaus dolerių + + + Bolivijos bolivijanas + Bolivijos bolivijanas + Bolivijos bolivijanai + Bolivijos bolivijano + Bolivijos bolivijanų + + + Bolivijos bolivijanas (1863–1963) + Bolivijos bolivijanas (1863–1963) + Bolivijos bolivijanai (1863–1963) + Bolivijos bolivijano (1863–1963) + Bolivijos bolivijanų (1863–1963) + + + Bolivijos pesas + Bolivijos pesas + Bolivijos pesai + Bolivijos peso + Bolivijos pesų + + + Bolivijos mvdol + Bolivijos mvdol + Boliviečių mvdols + Bolivijos mvdol + Bolivijos mvdol + + + Brazilijos naujasis kruzeiras + Brazilijos naujasis kruzeiras + Brazilijos naujieji kruzeirai + Brazilijos naujieji kruzeirai + Brazilijos naujieji kruzeirai + + + Brazilijos kruzadas + Brazilijos kruzadas + Brazilijos kruzadai + Brazilijos kruzadai + Brazilijos kruzadai + + + Brazilijos kruzeiras (1990–1993) + Brazilijos kruzeiras (1990–1993) + Brazilijos kruzeirai (1990–1993) + Brazilijos kruzeirai (1990–1993) + Brazilijos kruzeirai (1990–1993) + + + Brazilijos realas + Brazilijos realas + Brazilijos realai + Brazilijos realo + Brazilijos realų + BRL + + + Brazilijos naujasis kruzadas + Brazilijos naujasis kruzadas + Brazilijos naujieji kruzadai + Brazilijos naujieji kruzadai + Brazilijos naujieji kruzadai + + + Brazilijos kruzeiras + Brazilijos kruzeiras + Brazilijos kruzeirai + Brazilijos kruzeirai + Brazilijos kruzeirai + + + Senasis brazilų cruzeiros + Senasis brazilų cruzeiros + Senasis brazilų cruzeiros + Senasis brazilų cruzeiros + Senasis brazilų cruzeiros + + + Bahamų doleris + Bahamų doleris + Bahamų doleriai + Bahamų dolerio + Bahamų dolerių + + + Butano ngultrumas + Butano ngultrumas + Butano ngultrumai + Butano ngultrumo + Butano ngultrumų + + + Birmos kijatas + Birmos kijatas + Birmos kijatai + Birmos kijato + Birmos kijatų + + + Botsvanos pula + Botsvanos pula + Botsvanos pulos + Botsvanos pulos + Botsvanos pulų + + + Baltarusijos naujasis rublis (1994–1999) + Baltarusijos naujasis rublis (1994–1999) + Baltarusijos naujieji rubliai (1994–1999) + Baltarusijos naujojo rublio (1994–1999) + Baltarusijos naujųjų rublių + + + Baltarusijos rublis + Baltarusijos rublis + Baltarusijos rubliai + Baltarusijos rublio + Baltarusijos rublių + + + Belizo doleris + Belizo doleris + Belizo doleriai + Belizo dolerio + Belizo dolerių + + + Kanados doleris + Kanados doleris + Kanados doleriai + Kanados dolerio + Kanados dolerių + CAD + + + Kongo frankas + Kongo frankas + Kongo frankai + Kongo franko + Kongo frankų + + + WIR eurai + WIR euras + WIR eurai + WIR euro + WIR eurų + + + Šveicarijos frankas + Šveicarijos frankas + Šveicarijos frankai + Šveicarijos franko + Šveicarijos frankų + + + WIR frankas + WIR frankas + WIR frankai + WIR franko + WIR frankų + + + Čilės eskudai + Čilės eskudas + Čilės eskudai + Čilės eskudo + Čilės eskudų + + + Čiliečių unidades de fomentos + Čiliečių unidades de fomentos + Čiliečių unidades de fomentos + Čiliečių unidades de fomentos + Čiliečių unidades de fomentos + + + Čilės pesas + Čilės pesas + Čilės pesai + Čilės peso + Čilės pesų + + + Kinijos "People" banko doleris + Kinijos "People" banko doleris + Kinijos "People" banko doleriai + Kinijos "People" banko dolerio + Kinijos "People" banko dolerių + + + Kinijos ženminbi juanis + Kinijos ženminbi juanis + Kinijos ženminbi juaniai + Kinijos ženminbi juanio + Kinijos ženminbi juanių + CNY + + + Kolumbijos pesas + Kolumbijos pesas + Kolumbijos pesai + Kolumbijos peso + Kolumbijos pesų + + + unidad de valor realai + unidad de valor realas + unidad de valor realai + unidad de valor realai + unidad de valor realai + + + Kosta Rikos kolonas + Kosta Rikos kolonas + Kosta Rikos kolonai + Kosta Rikos kolono + Kosta Rikos kolonų + + + Serbijos dinaras (2002–2006) + Serbijos dinaras (2002–2006) + Serbijos dinarai (2002–2006) + Serbijos dinaro (2002–2006) + Serbijos dinarų (2002–2006) + + + Čekoslovakų sunkusis korunas + Čekoslovakų sunkusis korunas + Čekoslovakų sunkieji korunai + Čekoslovakų sunkiejio koruno + Čekoslovakų sunkiejių korunų + + + Kubos konvertuojamasis pesas + Kubos konvertuojamasis pesas + Kubos konvertuojamieji pesai + Kubos konvertuojamojo peso + Kubos konvertuojamųjų pesų + + + Kubos pesas + Kubos pesas + Kubos pesai + Kubos peso + Kubos pesų + + + Žaliojo Kyšulio eskudas + Žaliojo Kyšulio eskudas + Žaliojo Kyšulio eskudai + Žaliojo Kyšulio eskudo + Žaliojo Kyšulio eskudų + + + Kipro svaras + Kipro svaras + Kipro svarai + Kipro svaro + Kipro svarų + + + Čekijos krona + Čekijos krona + Čekijos kronos + Čekijos kronos + Čekijos kronų + + + Rytų Vokietijos markė + Rytų Vokietijos markė + Rytų Vokietijos markės + Rytų Vokietijos markės + Rytų Vokietijos markės + + + Vokietijos markė + Vokietijos markė + Vokietijos markės + Vokietijos markės + Vokietijos markės + + + Džibučio frankas + Džibučio frankas + Džibučio frankai + Džibučio franko + Džibučio frankų + + + Danijos krona + Danijos krona + Danijos kronos + Danijos kronos + Danijos kronų + + + Dominikos pesas + Dominikos pesas + Dominikos pesai + Dominikos peso + Dominikos pesų + + + Alžyro dinaras + Alžyro dinaras + Alžyro dinarai + Alžyro dinaro + Alžyro dinarų + + + Ekvadoro sukrė + Ekvadoro sucre + Ekvadoro sucres + Ekvadoro sucres + Ekvadoro sucres + + + Ekvadoro constante (UVC) + Ekvadoro unidads de narsa Constante (UVC) + Ekvadoro unidads de narsa Constante (UVC) + Ekvadoro unidads de narsa Constante (UVC) + Ekvadoro unidads de narsa Constante (UVC) + + + Estijos krona + Estijos krona + Estijos kronos + Estijos kronos + Estijos kronų + + + Egipto svaras + Egipto svaras + Egipto svarai + Egipto svaro + Egipto svarų + + + Eritrėjos nakfa + Eritrėjos nakfa + Eritrėjos nakfos + Eritrėjos nakfos + Eritrėjos nakfų + + + Ispanų pesetai (A sąskaita) + Ispanų pesetas (A sąskaita) + Ispanų pesetai (A sąskaita) + Ispanų pesetai (A sąskaita) + Ispanų pesetai (A sąskaita) + + + Ispanų pesetai (konvertuojama sąskaita) + Ispanų pesetas (konvertuojama sąskaita) + Ispanų pesetai (konvertuojama sąskaita) + Ispanų pesetai (konvertuojama sąskaita) + Ispanų pesetai (konvertuojama sąskaita) + + + Ispanijos peseta + Ispanų pesetas + Ispanų pesetai + Ispanų pesetai + Ispanų pesetai + + + Etiopijos biras + Etiopijos biras + Etiopijos birai + Etiopijos biro + Etiopijos birų + + + Euras + euras + eurai + euro + eurų + + + Suomijos markė + Suomijos markė + Suomijos markės + Suomijos markės + Suomijos markės + + + Fidžio doleris + Fidžio doleris + Fidžio doleriai + Fidžio dolerio + Fidžio dolerių + + + Falklando salų svaras + Falklando salų svaras + Falklando salų svarai + Falklando salų svaro + Falklando salų svarų + + + Prancūzijos frankas + Prancūzijos frankas + Prancūzijos frankai + Prancūzijos franko + Prancūzijos frankų + + + Didžiosios Britanijos svaras sterlingų + Didžiosios Britanijos svaras sterlingų + Didžiosios Britanijos svarai sterlingų + Didžiosios Britanijos svaro sterlingų + Didžiosios Britanijos svarų sterlingų + GBP + + + Gruzinų kupon larits + Gruzinų kupon larit + Gruzinų kupon larits + Gruzinų kupon larits + Gruzinų kupon larits + + + Gruzijos laris + Gruzijos laris + Gruzijos lariai + Gruzijos lario + Gruzijos larių + + + Ganos sedis (1979–2007) + Ganos sedis (1979–2007) + Ganos sedžiai (1979–2007) + Ganos sedžio (1979–2007) + Ganos sedžių (1979–2007) + + + Ganos sedis + Ganos sedis + Ganos sedžiai + Ganos sedžio + Ganos sedžių + + + Gibraltaro svaras + Gibraltaro svaras + Gibraltaro svarai + Gibraltaro svaro + Gibraltaro svarų + + + Gambijos dalasis + Gambijos dalasis + Gambijos dalasiai + Gambijos dalasio + Gambijos dalasių + + + Gvinėjos frankas + Gvinėjos frankas + Gvinėjos frankai + Gvinėjos franko + Gvinėjos frankų + + + Guinean sylis + Guinean syli + Guinean sylis + Guinean sylis + Guinean sylis + + + Pusiaujo Guinean ekwele + Pusiaujo Guinean ekwele + Pusiaujo Guinean ekwele + Pusiaujo Guinean ekwele + Pusiaujo Guinean ekwele + + + Graikijos drachma + Graikijos drachma + Graikijos drachmos + Graikijos drachmos + Graikijos drachmos + + + Gvatemalos ketcalis + Gvatemalos ketcalis + Gvatemalos ketcaliai + Gvatemalos ketcalio + Gvatemalos ketcalių + + + Portugalų Gvinėjos eskudas + Portugalijos Gvinėjos eskudas + Portugalijos Gvinėjos eskudai + Portugalijos Gvinėjos eskudo + Portugalijos Gvinėjos eskudų + + + Gvinėjos-Bisau pesas + Bisau Gvinėjos pesas + Bisau Gvinėjos pesai + Bisau Gvinėjos peso + Bisau Gvinėjos pesai + + + Gajanos doleris + Gajanos doleris + Gajanos doleriai + Gajanos dolerio + Gajanos dolerių + + + Honkongo doleris + Honkongo doleris + Honkongo doleriai + Honkongo dolerio + Honkongo dolerių + HKD + + + Hondūro lempira + Hondūro lempira + Hondūro lempiros + Hondūro lempiros + Hondūro lempirų + + + Kroatijos dinaras + Kroatijos dinaras + Krotaijos dinarai + Kroatijos dinaro + Kroatijos dinarų + + + Kroatijos kuna + Kroatijos kuna + Kroatijos kunos + Kroatijos kunos + Kroatijos kunų + + + Haičio gurdas + Haičio gurdas + Haičio gurdai + Haičio gurdo + Haičio gurdų + + + Vengrijos forintas + Vengrijos forintas + Vengrijos forintai + Vengrijos forinto + Vengrijos forintų + + + Indonezijos rupija + Indonezijos rupija + Indonezijos rupijos + Indonezijos rupijos + Indonezijos rupijų + + + Airijos svaras + Airijos svaras + Airijos svarai + Airijos svaro + Airijos svarų + + + Izraelio svaras + Izraelio svaras + Izraelio svarai + Izraelio svaro + Izraelio svarų + + + Izraelio šekelis (1980–1985) + Izraelio šekelis (1980–1985) + Izraelio šekeliai (1980–1985) + Izraelio šekelio (1980–1985) + Izraelio šekelių (1980–1985) + + + Izraelio naujasis šekelis + Izraelio naujasis šekelis + Izraelio naujieji šekeliai + Izraelio naujojo šekelio + Izraelio naujųjų šekelių + ILS + + + Indijos rupija + Indijos rupija + Indijos rupijos + Indijos rupijos + Indijos rupijų + INR + + + Irako dinaras + Irako dinaras + Irako dinarai + Irako dinaro + Irako dinarų + + + Irano rialas + Irano rialas + Irano rialai + Irano rialo + Irano rialų + + + Islandijos krona (1918–1981) + Islandijos krona (1918–1981) + Islandijos kronos (1918–1981) + Islandijos kronos (1918–1981) + Islandijos kronų (1918–1981) + + + Islandijos krona + Islandijos krona + Islandijos kronos + Islandijos kronos + Islandijos kronų + + + Italijos lira + Italijos lira + Italijos liros + Italijos liros + Italijos lirų + + + Jamaikos doleris + Jamaikos doleris + Jamaikos doleriai + Jamaikos dolerio + Jamaikos dolerių + + + Jordanijos dinaras + Jordanijos dinaras + Jordanijos dinarai + Jordanijos dinaro + Jordanijos dinarų + + + Japonijos jena + Japonijos jena + Japonijos jenos + Japonijos jenos + Japonijos jenų + JPY + + + Kenijos šilingas + Kenijos šilingas + Kenijos šilingai + Kenijos šilingo + Kenijos šilingų + + + Kirgizijos somas + Kirgizijos somas + Kirgizijos somai + Kirgizijos somo + Kirgizijos somų + + + Kambodžos rielis + Kambodžos rielis + Kambodžos rieliai + Kambodžos rielio + Kambodžos rielių + + + Komoro frankas + Komoro frankas + Komoro frankai + Komoro franko + Komoro frankų + + + Šiaurės Korėjos vonas + Šiaurės Korėjos vonas + Šiaurės Korėjos vonai + Šiaurės Korėjos vono + Šiaurės Korėjos vonų + + + Pietų Korėjos hwanas (1953–1962) + Pietų Korėjos hwanas (1953–1962) + Pietų Korėjos hwanai (1953–1962) + Pietų Korėjos hwano (1953–1962) + Pietų Korėjos hwanų (1953–1962) + + + Pietų Korėjos vonas (1945–1953) + Pietų Korėjos vonas (1945–1953) + Pietų Korėjos vonai (1945–1953) + Pietų Korėjos vono (1945–1953) + Pietų Korėjos vonų (1945–1953) + + + Pietų Korėjos vonas + Pietų Korėjos vonas + Pietų Korėjos vonai + Pietų Korėjos vono + Pietų Korėjos vonų + KRW + + + Kuveito dinaras + Kuveito dinaras + Kuveito dinarai + Kuveito dinaro + Kuveito dinarų + + + Kaimanų salų doleris + Kaimanų salų doleris + Kaimanų salų doleriai + Kaimanų salų dolerio + Kaimanų salų dolerių + + + Kazachstano tengė + Kazachstano tengė + Kazachstano tengės + Kazachstano tengės + Kazachstano tengių + + + Laoso kipas + Laoso kipas + Laoso kipai + Laoso kipo + Laoso kipų + + + Libano svaras + Libano svaras + Libano svarai + Libano svaro + Libano svarų + + + Šri Lankos rupija + Šri Lankos rupija + Šri Lankos rupijos + Šri Lankos rupijos + Šri Lankos rupijų + + + Liberijos doleris + Liberijos doleris + Liberijos doleriai + Liberijos dolerio + Liberijos dolerių + + + Lesoto lotis + Lesoto loti + Lesoto lotis + Lesoto lotis + Lesoto lotis + + + Lietuvos litas + Lietuvos litas + Lietuvos litai + Lietuvos lito + Lietuvos litų + Lt + + + Lietuvos talonas + Lietuvos talonas + Lietuvos talonai + Lietuvos talonai + Lietuvos talonai + + + Liuksemburgo konvertuojamas frankas + Liuksemburgo konvertuojas frankas + Liuksemburgo konvertuojami frankai + Liuksemburgo konvertuojamo franko + Liuksemburgo konvertuojamų frankų + + + Liuksemburgo frankas + Liuksemburgo frankas + Liuksemburgo frankai + Liuksemburgo franko + Liuksemburgo frankų + + + Liuksemburgo finansinis frankas + Liuksemburgo finansinis frankas + Liuksemburgo finansiniai frankai + Liuksemburgo finansinio franko + Liuksemburgo finansinių frankų + + + Latvijos latas + Latvijos latas + Latvijos latai + Latvijos lato + Latvijos latų + + + Latvijos rublis + Latvijos rublis + Latvijos rubliai + Latvijos rublio + Latvijos rublių + + + Libijos dinaras + Libijos dinaras + Libijos dinarai + Libijos dinaro + Libijos dinarų + + + Maroko dirhamas + Maroko dirhamas + Maroko dirhamai + Maroko dirhamo + Maroko dirhamų + + + Maroko frankas + Maroko frankas + Maroko frankai + Maroko franko + Maroko frankų + + + Monegasque frankas + Monegasque frankas + Monegasque frankai + Monegasque franko + Monegasque frankų + + + Moldovų cupon + Moldovų cupon + Moldovų cupon + Moldovų cupon + Moldovų cupon + + + Moldovos lėja + Moldovos lėja + Moldovos lėjos + Moldovos lėjos + Moldovos lėjų + + + Madagaskaro ariaris + Madagaskaro ariaris + Madagaskaro ariariai + Madagaskaro ariario + Madagaskaro ariarių + + + Madagaskaro frankas + Madagaskaro frankas + Madagaskaro frankai + Madagaskaro franko + Madagaskaro frankų + + + Makedonijos denaras + Makedonijos denaras + Makedonijos denarai + Makedonijos denaro + Makedonijos denarų + + + Makedonijos denaras (1992–1993) + Makedonijos denaras (1992–1993) + Makedonijos denarai (1992–1993) + Makedonijos denaro (1992–1993) + Makedonijos denarų (1992–1993) + + + Malio frankas + Malio frankas + Malio frankai + Malio franko + Malio frankų + + + Mianmaro kijatas + Mianmaro kijatas + Mianmaro kijatai + Mianmaro kijato + Mianmaro kijatų + + + Mongolijos tugrikas + Mongolijos tugrikas + Mongolijos tugrikai + Mongolijos tugriko + Mongolijos tugrikų + + + Makao pataka + Makao pataka + Makao patakos + Makao patakos + Makao patakų + + + Mauritanijos ugija + Mauritanijos ugija + Mauritanijos ugijos + Mauritanijos ugijos + Mauritanijos ugijų + + + Maltos lira + Maltos lira + Maltos lira + Maltos lira + Maltos lira + + + Maltos svaras + Maltos svaras + Maltos svarai + Maltos svaro + Maltos svarų + + + Mauricijaus rupija + Mauricijaus rupija + Mauricijaus rupijos + Mauricijaus rupijos + Mauricijaus rupijų + + + Maldyvų rufija + Maldyvų rufija + Maldyvų rufijos + Maldyvų rufijos + Maldyvų rufijų + + + Malavio kvača + Malavio kvača + Malavio kvačos + Malavio kvačos + Malavio kvačų + + + Meksikos pesas + Meksikos pesas + Meksikos pesai + Meksikos peso + Meksikos pesų + MXN + + + Meksikos sidabrinis pesas (1861–1992) + Meksikos sidabrinis pesas (1861–1992) + Meksikos sidabriniai pesai (1861–1992) + Meksikos sidabrino peso (1861–1992) + Meksikos sidabrinių pesų (1861–1992) + + + Meksikos United de Inversion (UDI) + Meksikos unidad de inversija (UDI) + Meksikos unidads de inversija (UDI) + Meksikos unidads de inversija (UDI) + Meksikos unidads de inversija (UDI) + + + Malaizijos ringitas + Malaizijos ringitas + Malaizijos ringitai + Malaizijos ringito + Malaizijos ringitų + + + Mozambiko eskudas + Mozambiko eskudas + Mozambiko eskudai + Mozambiko eskudo + Mozambiko eskudų + + + Mozambiko metikalis (1980–2006) + Mozambiko metikalis (1980–2006) + Mozambiko metikaliai (1980–2006) + Mozambiko metikalio (1980–2006) + Mozambiko metikalių (1980–2006) + + + Mozambiko metikalis + Mozambiko metikalis + Mozambiko metikaliai + Mozambiko metikalio + Mozambiko metikalių + + + Namibijos doleris + Namibijos doleris + Namibijos doleriai + Namibijos dolerio + Namibijos dolerių + + + Nigerijos naira + Nigerijos naira + Nigerijos nairos + Nigerijos nairos + Nigerijos nairų + + + Nikaragvos kardoba (1988–1991) + Nikaragvos kordoba (1988–1991) + Nikaragvos kordobai (1988–1991) + Nikaragvos kordobos (1988–1991) + Nikaragvos kordobų (1988–1991) + + + Nikaragvos kordoba + Nikaragvos kordoba + Nikaragvos kordobai + Nikaragvos kordobos + Nikaragvos kordobų + + + Nyderlandų guldenas + Nyderlandų guldenas + Nyderlandų guldenai + Nyderlandų guldeno + Nyderlandų guldenų + + + Norvegijos krona + Norvegijos krona + Norvegijos kronos + Norvegijos kronos + Norvegijos kronų + + + Nepalo rupija + Nepalo rupija + Nepalo rupijos + Nepalo rupijos + Nepalo rupijų + + + Naujosios Zelandijos doleris + Naujosios Zelandijos doleris + Naujosios Zelandijos doleriai + Naujosios Zelandijos dolerio + Naujosios Zelandijos dolerių + NZD + + + Omano rialas + Omano rialas + Omano rialai + Omano rialo + Omano rialų + + + Panamos balboja + Panamos balboja + Panamos balbojos + Panamos balbojos + Panamos balbojų + + + Peru intis + Peru inti + Peru intis + Peru intis + Peru intis + + + Peru naujasis solis + Peru naujasis solis + Peru naujieji soliai + Peru naujojo solio + Peru naujųjų solių + + + Peru solis (1863–1965) + Peru solis (1863–1965) + Peru soliai (1863–1965) + Peru solio (1863–1965) + Peru solių (1863–1965) + + + Papua Naujosios Gvinėjos kina + Papua Naujosios Gvinėjos kina + Papua Naujosios Gvinėjos kinos + Papua Naujosios Gvinėjos kinos + Papua Naujosios Gvinėjos kinų + + + Filipinų pesas + Filipinų pesas + Filipinų pesai + Filipinų peso + Filipinų pesų + + + Pakistano rupija + Pakistano rupija + Pakistano rupijos + Pakistano rupijos + Pakistano rupijų + + + Lenkijos zlotas + Lenkijos zlotas + Lenkijos zlotai + Lenkijos zloto + Lenkijos zlotų + + + Lenkijos zlotas (1950–1995) + Lenkijos zlotas (1950–1995) + Lenkijos zlotai (1950–1995) + Lenkijos zloto (1950–1995) + Lenkijos zlotų (1950–1995) + + + Portugalijos eskudas + Portugalijos eskudas + Portugalijos eskudai + Portugalijos eskudo + Portugalijos eskudų + + + Paragvajaus guaranis + Paragvajaus guaranis + Paragvajaus guaraniai + Paragvajaus guaranio + Paragvajaus guaranių + + + Kataro rialas + Kataro rialas + Kataro rialai + Kataro rialo + Kataro rialų + + + Rodezijos doleris + Rodezijos doleris + Rodezijos doleriai + Rodezijos dolerio + Rodezijos dolerių + + + Rumunijos lėja (1952–2006) + Rumunijos lėja (1952–2006) + Rumunijos lėjos (1952–2006) + Rumunijos lėjos (1952–2006) + Rumunijos lėjų (1952–2006) + + + Rumunijos lėja + Rumunijos lėja + Rumunijos lėjos + Rumunijos lėjos + Rumunijos lėjų + + + Serbijos dinaras + Serbijos dinaras + Serbijos dinarai + Serbijos dinaro + Serbijos dinarų + + + Rusijos rublis + Rusijos rublis + Rusijos rubliai + Rusijos rublio + Rusijos rublių + + + Rusijos rublis (1991–1998) + Rusijos rublis (1991–1998) + Rusijos rubliai (1991–1998) + Rusijos rublio (1991–1998) + Rusijos rublių (1991–1998) + + + Ruandos frankas + Ruandos frankas + Ruandos frankai + Ruandos franko + Ruandos frankų + + + Saudo Arabijos rijalas + Saudo Arabijos rijalas + Saudo Arabijos rijalai + Saudo Arabijos rijalo + Saudo Arabijos rijalų + + + Saliamono salų doleris + Saliamono salų doleris + Saliamono salų doleriai + Saliamono salų dolerio + Saliamono salų dolerių + + + Seišelių rupija + Seišelių rupija + Seišelių rupijos + Seišelių rupijos + Seišelių rupijų + + + Sudano dinaras (1992–2007) + Sudano dinaras (1992–2007) + Sudano dinarai (1992–2007) + Sudano dinaro (1992–2007) + Sudano dinarų (1992–2007) + + + Sudano svaras + Sudano svaras + Sudano svarai + Sudano svaro + Sudano svarų + + + Sudano svaras (1957–1998) + Sudano svaras (1957–1998) + Sudano svarai (1957–1998) + Sudano svaro (1957–1998) + Sudano svarų (1957–1998) + + + Švedijos krona + Švedijos krona + Švedijos kronos + Švedijos kronos + Švedijos kronų + + + Singapūro doleris + Singapūro doleris + Singapūro doleriai + Singapūro dolerio + Singapūro dolerių + + + Šv. Elenos salų svaras + Šv. Elenos salų svaras + Šv. Elenos salų svarai + Šv. Elenos salų svaro + Šv. Elenos salų svarų + + + Slovėnijos tolaras + Slovėnijos tolars + Slovėnijos tolars + Slovėnijos tolar + Slovėnijos tolar + + + Slovakijos krona + Slovakijos krona + Slovakijos kronos + Slovakijos kronos + Slovakijos kronų + + + Siera Leonės leonė + Siera Leonės leonė + Siera Leonės leonės + Siera Leonės leonės + Siera Leonės leonių + + + Somalio šilingas + Somalio šilingas + Somalio šilingai + Somalio šilingo + Somalio šilingų + + + Surimano doleris + Surimano doleris + Surimano doleriai + Surimano dolerio + Surimano dolerių + + + Surimano guldenas + Surimano guldenas + Surimano guldenai + Surimano guldeno + Surimano guldenų + + + Pietų Sudano svaras + Pietų Sudano svaras + Pietų Sudano svarai + Pietų Sudano svaro + Pietų Sudano svarų + + + San Tomės ir Principės dobra + San Tomės ir Principės dobra + San Tomės ir Principės dobros + San Tomės ir Principės dobros + Sao Tomės ir Principės dobrų + + + Sovietų rublis + Sovietų rublis + Sovietų rubliai + Sovietų rublio + Sovietų rublių + + + Salvadoro kolonas + Salvadoro kolonas + Salvadoro kolonai + Salvadoro kolonai + Salvadoro kolonai + + + Sirijos svaras + Sirijos svaras + Sirijos svarai + Sirijos svaro + Sirijos svarų + + + Svazilando lilangenis + Svazilando lilangenis + Svazilando lilangeniai + Svazilendo lilangenio + Svazilendo lilangenių + + + Tailando batas + Tailando batas + Tailando batai + Tailando bato + Tailando batų + THB + + + Tadžikistano rublis + Tadžikistano rublis + Tadžikistano rubliai + Tadžikistano rublio + Tadžikistano rublių + + + Tadžikistano somonis + Tadžikistano somonis + Tadžikistano somoniai + Tadžikistano somonio + Tadžikistano somonių + + + Turkmėnistano manatas (1993–2009) + Turkmėnistano manatas (1993–2009) + Turkmėnistano manatai (1993–2009) + Turkmėnistano manato (1993–2009) + Turkmėnistano manatų (1993–2009) + + + Turkmėnistano manatas + Turkmėnistano manatas + Turkmėnistano manatai + Turkmėnistano manato + Turkmėnistano manatų + + + Tuniso dinaras + Tuniso dinaras + Tuniso dinarai + Tuniso dinaro + Tuniso dinarų + + + Tongo paanga + Tongo paanga + Tongo paangos + Tongo paangos + Tongo paangų + + + Timoro eskudas + Timoro eskudas + Timoro eskudai + Timoro eskudo + Timoro eskudų + + + Turkijos lira (1922–2005) + Turkijos lira (1922–2005) + Turkijos liros (1922–2005) + Turkijos liros (1922–2005) + Turkijos lirų (1922–2005) + + + Turkijos lira + Turkijos lira + Turkijos liros + Turkijos liros + Turkijos lirų + + + Trinidado ir Tobago doleris + Trinidado ir Tobago doleris + Trinidado ir Tobago doleriai + Trinidado ir Tobago dolerio + Trinidado ir Tobago dolerių + + + Taivano naujasis doleris + Taivano naujasis doleris + Taivano naujieji doleriai + Taivano naujojo dolerio + Taivano naujųjų dolerių + TWD + + + Tanzanijos šilingas + Tanzanijos šilingas + Tanzanijos šilingai + Tanzanijos šilingo + Tanzanijos šilingų + + + Ukrainos grivina + Ukrainos grivina + Ukrainos grivinos + Ukrainos grivinos + Ukrainos grivinų + + + Ukrainos karbovanecas + Ukrainos karbovanets + Ukrainos karbovantsiv + Ukrainos karbovantsiv + Ukrainos karbovantsiv + + + Ugandos šilingas (1966–1987) + Ugandos šilingas (1966–1987) + Ugandos šilingai (1966–1987) + Ugandos šilingo (1966–1987) + Ugandos šilingų (1966–1987) + + + Ugandos šilingas + Ugandos šilingas + Ugandos šilingai + Ugandos šilingo + Ugandos šilingų + + + JAV doleris + JAV doleris + JAV doleriai + JAV dolerio + JAV dolerių + USD + + + JAV doleris (kitos dienos) + JAV doleris (kitą dieną) + JAV doleriai (kitą dieną) + JAV dolerio (kitą dieną) + JAV dolerių (kitą dieną) + + + JAV doleris (šios dienos) + JAV doleris (tą pačią dieną) + JAV doleriai (tą pačią dieną) + JAV dolerio (tą pačią dieną) + JAV dolerių (tą pačią dieną) + + + Urugvajaus pesai en unidades indexadas + Urugvajaus pesas en unidades indexadas + Uragvajaus pesai en unidades indexadas + Urugvajaus pesai en unidades indexadas + Urugvajaus pesai en unidades indexadas + + + Urugvajaus pesas (1975–1993) + Urugvajaus pesas (1975–1993) + Urugvajaus pesai (1975–1993) + Urugvajaus peso (1975–1993) + Urugvajaus pesų (1975–1993) + + + Urugvajaus pesas + Urugvajaus pesas + Urugvajaus pesai + Urugvajaus peso + Urugvajaus pesų + + + Uzbekistano sumas + Uzbekistano sumas + Uzbekistano sumai + Uzbekistano sumo + Uzbekistano sumų + + + Venesuelos bolivaras (1871–2008) + Venesuelos bolivaras (1871–2008) + Venesuelos bolivarai (1871–2008) + Venesuelos bolivaro (1871–2008) + Venesuelos bolivarų (1871–2008) + + + Venesuelos bolivaras + Venesuelos bolivaras + Venesuelos bolivarai + Venesuelos bolivaro + Venesuelos bolivarų + + + Vietnamo dongas + Vietnamo dongas + Vietnamo dongai + Vietnamo dongo + Vietnamo dongų + VND + + + Vietnamo dongas (1978–1985) + Vietnamo dongas (1978–1985) + Vietnamo dongai (1978–1985) + Vietnamo dongo (1978–1985) + Vietnamo dongų (1978–1985) + + + Vanuatu vatas + Vanuatu vatas + Vanuatu vatai + Vanuatu vato + Vanuatu vatų + + + Samoa tala + Samoa tala + Samoa talos + Samoa talos + Samoa talų + + + CFA BEAC frankas + CFA BEAC frankas + CFA BEAC frankai + CFA BEAC franko + CFA BEAC frankų + XAF + + + Sidabras + Sidabras + Sidabras + Sidabras + Sidabras + + + Auksas + Auksas + Auksas + Auksas + Auksas + + + Europos suvestinės vienetas + Europos suvestinės vienetas + Europos suvestinės vienetai + Europos suvestinės vienetai + Europos suvestinės vienetai + + + Europos piniginis vienetas + Europos piniginis vienetas + Europos piniginiai vienetai + Europos piniginiai vienetai + Europos piniginiai vienetai + + + Europos valiutos / apskaitos vienetas (XBC) + Europos valiutos / apskaitos vienetas (XBC) + Europos valiutos / apskaitos vienetai (XBC) + Europos valiutos / apskaitos vienetai (XBC) + Europos valiutos / apskaitos vienetai (XBC) + + + Europos valiutos / apskaitos vienetas (XBD) + Europos valiutos / apskaitos vienetas (XBD) + Europos valiutos / apskaitos vienetas (XBD) + Europos valiutos / apskaitos vienetai (XBD) + Europos valiutos / apskaitos vienetai (XBD) + + + Rytų Karibų doleris + Rytų Karibų doleris + Rytų Karibų doleriai + Rytų Karibų dolerio + Rytų Karibų dolerių + XCD + + + SDR tarptautinis valiutos fondas + SDR tarptautinis valiutos fondas + SDR tarptautinis valiutos fondas + SDR tarptautinis valiutos fondas + SDR tarptautinis valiutos fondas + + + Europos piniginis vienetas (1993–1999) + + + Aukso frankas + Aukso frankas + Aukso frankai + Aukso franko + Aukso frankų + + + Prancūzijos UIC - frankas + Prancūzijos UIC - frankas + Prancūzijos UIC - frankai + Prancūzijos UIC - franko + Prancūzijos UIC - frankų + + + CFA BCEAO frankas + CFA BCEAO frankas + CFA BCEAO frankai + CFA BCEAO franko + CFA BCEAO frankų + XOF + + + Paladis + Paladis + Paladis + Paladis + Paladis + + + CFP frankas + CFP frankas + CFP frankai + CFP franko + CFP frankų + XPF + + + Platina + Platina + Platina + Platina + Platina + + + RINET fondai + RINET fondas + RINET fondai + RINET fondai + RINET fondai + + + Tikrinamas valiutos kodas + Tikrinamas valiutos kodas + Tikrinamas valiutos kodas + Tikrinamas valiutos kodas + Tikrinamas valiutos kodas + + + nežinoma valiuta + (nežinoma valiuta) + (nežinoma valiuta) + (nežinoma valiuta) + (nežinoma valiuta) + + + Jemeno dinaras + Jemeno dinaras + Jemeno dinarai + Jemeno dinaro + Jemeno dinarų + + + Jemeno rialas + Jemeno rialas + Jemeno rialai + Jemeno rialo + Jemeno rialų + + + Jugoslavijos kietasis dinaras (1966–1990) + Jugoslavijos kietasis dinaras (1966–1990) + Jugoslavijos kietieji dinarai (1966–1990) + Jugoslavijos kietiejo dinaro (1966–1990) + Jugoslavijos kietiejų dinarų (1966–1990) + + + Jugoslavijos naujasis dinaras (1994–2002) + Jugoslavijos naujasis dinaras (1994–2002) + Jugoslavijos naujieji dinarai (1994–2002) + Jugoslavijos naujojo dinaro (1994–2002) + Jugoslavijos naujųjų dinarų (1994–2002) + + + Jugoslavijos konvertuojamas dinaras + Jugoslavijos konvertuotas dinaras + Jugoslavijos konvertuoti dinarai + Jugoslavijos konvertuoti dinarai + Jugoslavijos konvertuoti dinarai + + + Jugoslavijos reformuoti dinarai + Jugoslavijos reformuotas dinaras + Jugoslavijos reformuoti dinarai + Jugoslavijos reformuoti dinarai + Jugoslavijos reformuoti dinarai + + + Pietų Afrikos finansinis randas + Pietų Afrikos randas (finansinis) + Pietų Afrikos randai (finansinis) + Pietų Afrikos rando (finansinis) + Pietų Afrikos randų (finansinis) + + + Pietų Afrikos Respublikos randas + Pietų Afrikos Respublikos randas + Pietų Afrikos Respublikos randai + Pietų Afrikos Respublikos rando + Pietų Afrikos Respublikos randų + + + Zambijos kvača (1968–2012) + Zambijos kvača (1968–2012) + Zambijos kvačos (1968–2012) + Zambijos kvačos (1968–2012) + Zambijos kvačų (1968–2012) + + + Zambijos kvača + Zambijos kvača + Zambijos kvačos + Zambijos kvačos + Zambijos kvačų + + + Zairo naujasis zairas + Naujasis Zairo zairas + Naujieji Zairo zairai + Naujieji Zairo zairai + Naujieji Zairo zairai + + + Zairo zairas + Zairo zairas + Zairo zairai + Zairo zairai + Zairo zairai + + + Zimbabvės doleris (1980–2008) + Zimbabvės doleris (1980–2008) + Zimbabvės doleriai (1980–2008) + Zimbabvės dolerio (1980–2008) + Zimbabvės dolerių (1980–2008) + + + Zimbabvės doleris (2009) + Zimbabvės doleris (2009) + Zimbabvės doleriai (2009) + Zimbabvės dolerio (2009) + Zimbabvės dolerių (2009) + + + Zimbabvės doleris (2008) + Zimbabvės doleris (2008) + Zimbabvės doleriai (2008) + Zimbabvės dolerio (2008) + Zimbabvės dolerių (2008) + + + + ⩾{0} + {0}–{1} + + + + + + {0} per {1} + + + {0} laisvojo kritimo pagreitis + {0} laisvojo kritimo pagreičiai + {0} laisvojo kritimo pagreičio + {0} laisvojo kritimo pagreičių + + + {0} kampo minutė + {0} kampo minutės + {0} kampo minutės + {0} kampo minučių + + + {0} kampo sekundė + {0} kampo sekundės + {0} kampo sekundės + {0} kampo sekundžių + + + {0} laipsnis + {0} laipsniai + {0} laipsnio + {0} laipsnių + + + {0} akras + {0} akrai + {0} akro + {0} akrų + + + {0} hektaras + {0} hektarai + {0} hektaro + {0} hektarų + + + {0} kvadratinė pėda + {0} kvadratinės pėdos + {0} kvadratinės pėdos + {0} kvadratinių pėdų + + + {0} kvadratinis kilometras + {0} kvadratiniai kilometrai + {0} kvadratinio kilometro + {0} kvadratinių kilometrų + + + {0} kvadratinis metras + {0} kvadratiniai metrai + {0} kvadratinio metro + {0} kvadratinių metrų + + + {0} kvadratinė mylia + {0} kvadratinės mylios + {0} kvadratinės mylios + {0} kvadratinių mylių + + + {0} diena + {0} dienos + {0} dienos + {0} dienų + + + {0} valanda + {0} valandos + {0} valandos + {0} valandų + + + {0} milisekundė + {0} milisekundės + {0} milisekundės + {0} milisekundzių + + + {0} minutė + {0} minutės + {0} minutės + {0} minučių + + + {0} mėnuo + {0} mėnesiai + {0} mėnesio + {0} mėnesių + + + {0} sekundė + {0} sekundės + {0} sekundės + {0} sekundžių + + + {0} savaitė + {0} savaitės + {0} savaitės + {0} savaičių + + + {0} metai + {0} metai + {0} metų + {0} metų + + + {0} centimetras + {0} centimetrai + {0} centimetro + {0} centimetrų + + + {0} pėda + {0} pėdos + {0} pėdos + {0} pėdų + + + {0} colis + {0} coliai + {0} colio + {0} colių + + + {0} kilometras + {0} kilometrai + {0} kilometro + {0} kilometrų + + + {0} šviesmetis + {0} šviesmečiai + {0} šviesmečio + {0} šviesmečių + + + {0} metras + {0} metrai + {0} metro + {0} metrų + + + {0} mylia + {0} mylios + {0} mylios + {0} mylių + + + {0} milimetras + {0} milimetrai + {0} milimetro + {0} milimetrų + + + {0} pikometras + {0} pikometrai + {0} pikometro + {0} pikometrų + + + {0} jardas + {0} jardai + {0} jardo + {0} jardų + + + {0} gramas + {0} gramai + {0} gramo + {0} gramų + + + {0} kilogramas + {0} kilogramai + {0} kilogramo + {0} kilogramų + + + {0} uncija + {0} uncijos + {0} uncijos + {0} uncijų + + + {0} svaras + {0} svarai + {0} svaro + {0} svarų + + + {0} arklio galia + {0} arklio galios + {0} arklio galios + {0} arklio galių + + + {0} kilovatas + {0} kilovatai + {0} kilovato + {0} kilovatų + + + {0} vatas + {0} vatai + {0} vato + {0} vatų + + + {0} hektopaskalis + {0} hektopaskaliai + {0} hektopaskalio + {0} hektopaskalių + + + {0} gyvsidabrio stulpelio colis + {0} gyvsidabrio stulpelio coliai + {0} gyvsidabrio stulpelio colio + {0} gyvsidabrio stulpelio colių + + + {0} milibaras + {0} milibarai + {0} milibaro + {0} milibarų + + + {0} kilometras per valandą + {0} kilometrai per valandą + {0} kilometro per valandą + {0} kilometrų per valandą + + + {0} metras per sekundę + {0} metrai per sekundę + {0} metro per sekundę + {0} metrų per sekundę + + + {0} mylia per valandą + {0} mylios per valandą + {0} mylios per valandą + {0} mylių per valandą + + + {0} Celsijaus laipsnis + {0} Celsijaus laipsniai + {0} Celsijaus laipsnio + {0} Celsijaus laipsnių + + + {0}Farenheito laipsnis + {0}Farenheito laipsniai + {0}Farenheito laipsnio + {0}Farenheito laipsnių + + + {0} kubinis kilometras + {0} kubiniai kilimetrai + {0} kubinio kilometro + {0} kubinių kilometrų + + + {0} kubinė mylia + {0} kubinės mylios + {0} kubinės mylios + {0} kubinių mylių + + + {0} litras + {0} litrai + {0} litro + {0} litrų + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} akras + {0} akrai + {0} akro + {0} akrų + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} kv. pėda + {0} kv. pėdos + {0} kv. pėdos + {0} kv. pėdų + + + {0} kv. km + {0} kv. km + {0} kv. km + {0} kv. km + + + {0} kv. m + {0} kv. m + {0} kv. m + {0} kv. m + + + {0} kv. my + {0} kv. my + {0} kv. my + {0} kv. my + + + {0} d. + {0} d. + {0} d. + {0} d. + + + {0} val. + {0} val. + {0} val. + {0} val. + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min. + {0} min. + {0} min. + {0} min. + + + {0} mėn. + {0} mėn. + {0} mėn. + {0} mėn. + + + {0} sek. + {0} sek. + {0} sek. + {0} sek. + + + {0} sav. + {0} sav. + {0} sav. + {0} sav. + + + {0} m. + {0} m. + {0} m. + {0} m. + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} šm. + {0} šm. + {0} šm. + {0} šm. + + + {0} m + {0} m + {0} m + {0} m + + + {0} my + {0} my + {0} my + {0} my + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} AG + {0} AG + {0} AG + {0} AG + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/val. + {0} km/val. + {0} km/val. + {0} km/val. + + + {0} m/sek. + {0} m/sek. + {0} m/sek. + {0} m/sek. + + + {0} my/val. + {0} my/val. + {0} my/val. + {0} my/val. + + + {0}°C + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} akr. + {0} akr. + {0} akr. + {0} akr. + + + {0}ha + {0}ha + {0}ha + {0}ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} d. + {0} d. + {0} d. + {0} d. + + + {0} h + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min. + {0} min. + {0} min. + {0} min. + + + {0} mėn. + {0} mėn. + {0} mėn. + {0} mėn. + + + {0} s + {0} s + {0} s + {0} s + + + {0} sav. + {0} sav. + {0} sav. + {0} sav. + + + {0} m. + {0} m. + {0} m. + {0} m. + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} šm. + {0} šm. + {0} šm. + {0} šm. + + + {0} m + {0} m + {0} m + {0} m + + + {0} my + {0} my + {0} my + {0} my + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0}kg + {0}kg + {0}kg + {0}kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} AG + {0} AG + {0} AG + {0} AG + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} my/h + {0} my/h + {0} my/h + {0} my/h + + + {0}° + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} ir {1} + {0} ir {1} + + + {0}, {1} + {0}, {1} + {0} ir {1} + {0} ir {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} ir {1} + + + + + taip:t + ne:n + + + + diff --git a/library/Zend/Locale/Data/lt_LT.xml b/library/Zend/Locale/Data/lt_LT.xml new file mode 100755 index 000000000..0903c6e01 --- /dev/null +++ b/library/Zend/Locale/Data/lt_LT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/lu.xml b/library/Zend/Locale/Data/lu.xml new file mode 100755 index 000000000..b2c6ff9a5 --- /dev/null +++ b/library/Zend/Locale/Data/lu.xml @@ -0,0 +1,775 @@ + + + + + + + + + + + + Liakan + Liamhariki + Arabi + Belarusi + Bulegari + Bengali + Tsheki + Lizelumani + Giliki + Lingelesa + Lihispania + Mpepajemi + Mfwàlànsa + Hausa + Hindi + Hongili + Lindonezia + Igbo + Litali + Liyapani + Java + Likoreya + Tshiluba + Limalezia + nepali + olandi + Lipunjabi + Mpoloni + Mputulugɛsi + Liromani + Lirisi + kinyarwanda + Lisomali + Lisuwidi + Mtamuili + Ntailandi + Ntuluki + Nkrani + Urdu + Liviyetinamu + Nyoruba + shinɛ + Nzulu + + + Andore + Lemila alabu + Afuganisita + Antiga ne Barbuda + Angiye + Alubani + Ameni + Antiye wa Olande + Angola + Alijantine + Samoa wa Ameriki + Otilisi + Ositali + Aruba + Ajelbayidja + Mbosini ne Hezegovine + Barebade + Benguladeshi + Belejiki + Bukinafaso + Biligari + Bahrene + Burundi + Bene + Bermuda + Brineyi + Mbolivi + Mnulezile + Bahamase + Butani + Mbotswana + Byelorisi + Belize + Kanada + Ditunga wa Kongu + Ditunga dya Afrika wa munkatshi + Kongu + Swise + Kotedivuale + Lutanda lua Kookɛ + Shili + Kamerune + Shine + Kolombi + Kositarika + Kuba + Lutanda lua Kapevele + Shipele + Ditunga dya Tsheka + Alemanu + Djibuti + Danemalaku + Duminiku + Ditunga wa Duminiku + Alijeri + Ekwatele + Esitoni + Mushidi + Elitele + Nsipani + Etshiopi + Filande + Fuji + Lutanda lua Maluni + Mikronezi + Nfalanse + Ngabu + Angeletele + Ngelenade + Joriji + Giyane wa Nfalanse + Ngana + Jibeletale + Ngowelande + Gambi + Ngine + Ngwadelupe + Gine Ekwatele + Ngeleka + Ngwatemala + Ngwame + Nginebisau + Ngiyane + Ondurase + Krowasi + Ayiti + Ongili + Indonezi + Irelande + Isirayele + Inde + Lutanda lwa Angeletele ku mbu wa Indiya + Iraki + Ira + Isilande + Itali + Jamaiki + Jodani + Japu + Kenya + Kigizisita + Kambodza + Kiribati + Komoru + Santu krístofe ne Neves + Kore wa muulu + Kore wa mwinshi + Koweti + Lutanda lua Kayima + Kazakusita + Lawosi + Liba + Santu lisi + Lishuteni + Sirilanka + Liberiya + Lesoto + Litwani + Likisambulu + Letoni + Libi + Maroke + Monaku + Molidavi + Madagasikari + Lutanda lua Marishale + Masedwane + Mali + Myamare + Mongoli + Lutanda lua Mariane wa muulu + Martiniki + Moritani + Musera + Malite + Morise + Madive + Malawi + Meksike + Malezi + Mozambiki + Namibi + Kaledoni wa mumu + Nijere + Lutanda lua Norfok + Nijerya + Nikaragwa + Olandɛ + Noriveje + Nepálɛ + Nauru + Nyue + Zelanda wa mumu + Omane + Panama + Peru + Polinezi wa Nfalanse + Papwazi wa Nginɛ wa mumu + Nfilipi + Pakisita + Mpoloni + Santu pététo ne Mikelu + Pikairni + Mpotoriku + Palesine + Mputulugeshi + Palau + Palagwei + Katari + Lenyo + Romani + Risi + Rwanda + Alabu Nsawudi + Lutanda lua Solomu + Seshele + Suda + Suwedi + Singapure + Santu eleni + Siloveni + Silovaki + Siera Leone + Santu Marine + Senegale + Somali + Suriname + Sao Tome ne Presipɛ + Savadore + Siri + Swazilandi + Lutanda lua Tuluki ne Kaiko + Tshadi + Togu + Tayilanda + Tazikisita + Tokelau + Timoru wa diboku + Tukemenisita + Tinizi + Tonga + Tuluki + Tinidade ne Tobago + Tuvalu + Taiwani + Tanzani + Ukreni + Uganda + Ameriki + Irigwei + Uzibekisita + Nvatika + Santu vesa ne Ngelenadine + Venezuela + Lutanda lua Vierzi wa Angeletele + Lutanda lua Vierzi wa Ameriki + Viyetiname + Vanuatu + Walise ne Futuna + Samoa + Yemenu + Mayote + Afrika ya Súdi + Zambi + Zimbabwe + + + + [a á à b c d e é è ɛ {ɛ\u0301} {ɛ\u0300} f h i í ì j k l m n {ng} {ny} o ó ò ɔ {ɔ\u0301} {ɔ\u0300} p {ph} q s {shi} t u ú ù v w y z] + [g r x] + [A B C D E F H I J K L M N O P Q S T U V W Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + Cio + Lui + Lus + Muu + Lum + Luf + Kab + Lush + Lut + Lun + Kas + Cis + + + Ciongo + Lùishi + Lusòlo + Mùuyà + Lumùngùlù + Lufuimi + Kabàlàshìpù + Lùshìkà + Lutongolo + Lungùdi + Kaswèkèsè + Ciswà + + + + + C + L + L + M + L + L + K + L + L + L + K + C + + + + + + + Lum + Nko + Ndy + Ndg + Njw + Ngv + Lub + + + Lumingu + Nkodya + Ndàayà + Ndangù + Njòwa + Ngòvya + Lubingu + + + + + L + N + N + N + N + N + L + + + + + + + M1 + M2 + M3 + M4 + + + Mueji 1 + Mueji 2 + Mueji 3 + Mueji 4 + + + + + + + Dinda + Dilolo + + + + + + Kumpala kwa Yezu Kli + Kunyima kwa Yezu Kli + + + kmp. Y.K. + kny. Y. K. + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Tshipungu + + + Tshidimu + + + Ngondo + + + Lubingu + + + Dituku + Makelela + Lelu + Malaba + + + Dituku dia lubingu + + + Mutantshi wa diba + + + Diba + + + Kasunsu + + + Kasunsukusu + + + Nzeepu + + + + + + , + . + + + + + #,##0.### + + + + + + + #,##0.00¤ + + + + + + Ndiriha wa Lemila alabu + + + Kwanza wa Angola + + + Ndola wa Ositali + + + Ndina wa Bahrene + + + Nfalanga wa Bulundi + + + Pula wa Botswana + + + Ndola wa Kanada + + + Nfalanga wa Kongu + FC + + + Nfalanga wa Swise + + + Yuani Renminbi wa Shine + + + Esikuludo wa Kapevere + + + Nfalanga wa Dzibuti + + + Ndina wa Alijeri + + + Pauni wa Mushidi + + + Nakfa wa Elitle + + + Bira wa Etshiopi + + + Iro + + + Pauni wa Angeletele + + + Sedi wa Ngana + + + Ndalasi wa Ngambi + + + Nfalanga wa Ngina + + + Rupi wa Inde + + + Yeni wa Zapɔ + + + Nshili wa Kenya + + + Nfalanga wa Komoru + + + Ndola wa Liberya + + + Loti wa Lesoto + + + Ndina wa Libi + + + Ndiriha wa Maroke + + + Nfalanga wa Madagasikare + + + Ugwiya wa Moritani + + + Rupia wa Morisi + + + Kwasha wa Malawi + + + Metikali wa Mozambiki + + + Ndola wa Namibi + + + Naira wa Nizerya + + + Nfalanga wa Rwanda + + + Riyale wa Alabu Nsawu + + + Rupya wa Seshele + + + Ndina wa Suda + + + Pauni wa Suda + + + Pauni wa Santu Elena + + + Leone + + + Nshili wa Somali + + + Dobra wa Sao Tome ne Presipe + + + Lilangeni + + + Ndina wa Tinizi + + + Nshili wa Tanzani + + + Nshili wa Uganda + + + Ndola wa Ameriki + + + Nfalanga CFA BEAC + + + Nfalanga CFA BCEAO + + + Rande wa Afrika wa Mwinshi + + + Kwasha wa Zambi (1968–2012) + + + Kwasha wa Zambi + + + Ndola wa Zimbabwe + + + + + + Eyo:E + To:T + + + + diff --git a/library/Zend/Locale/Data/lu_CD.xml b/library/Zend/Locale/Data/lu_CD.xml new file mode 100755 index 000000000..766749b71 --- /dev/null +++ b/library/Zend/Locale/Data/lu_CD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/luo.xml b/library/Zend/Locale/Data/luo.xml new file mode 100755 index 000000000..0cc822046 --- /dev/null +++ b/library/Zend/Locale/Data/luo.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Dholuo + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andorra + United Arab Emirates + Afghanistan + Antigua gi Barbuda + Anguilla + Albania + Armenia + Netherlands Antilles + Angola + Argentina + American Samoa + Austria + Australia + Aruba + Azerbaijan + Bosnia gi Herzegovina + Barbados + Bangladesh + Belgium + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Bermuda + Brunei + Bolivia + Brazil + Bahamas + Bhutan + Botswana + Belarus + Belize + Canada + Democratic Republic of the Congo + Central African Republic + Congo + Switzerland + Côte d + Cook Islands + Chile + Cameroon + China + Colombia + Costa Rica + Cuba + Cape Verde Islands + Cyprus + Czech Republic + Germany + Djibouti + Denmark + Dominica + Dominican Republic + Algeria + Ecuador + Estonia + Egypt + Eritrea + Spain + Ethiopia + Finland + Fiji + Chuia mar Falkland + Micronesia + France + Gabon + United Kingdom + Grenada + Georgia + French Guiana + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Equatorial Guinea + Greece + Guatemala + Guam + Guinea-Bissau + Guyana + Honduras + Croatia + Haiti + Hungary + Indonesia + Ireland + Israel + India + British Indian Ocean Territory + Iraq + Iran + Iceland + Italy + Jamaica + Jordan + Japan + Kenya + Kyrgyzstan + Cambodia + Kiribati + Comoros + Saint Kitts gi Nevis + Korea Masawa + Korea Milambo + Kuwait + Cayman Islands + Kazakhstan + Laos + Lebanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lithuania + Luxembourg + Latvia + Libya + Morocco + Monaco + Moldova + Madagascar + Chuia mar Marshall + Macedonia + Mali + Myanmar + Mongolia + Northern Mariana Islands + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambique + Namibia + New Caledonia + Niger + Chuia mar Norfolk + Nigeria + Nicaragua + Netherlands + Norway + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + French Polynesia + Papua New Guinea + Philippines + Pakistan + Poland + Saint Pierre gi Miquelon + Pitcairn + Puerto Rico + Palestinian West Bank gi Gaza + Portugal + Palau + Paraguay + Qatar + Réunion + Romania + Russia + Rwanda + Saudi Arabia + Solomon Islands + Seychelles + Sudan + Sweden + Singapore + Saint Helena + Slovenia + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + São Tomé gi Príncipe + El Salvador + Syria + Swaziland + Turks gi Caicos Islands + Chad + Togo + Thailand + Tajikistan + Tokelau + East Timor + Turkmenistan + Tunisia + Tonga + Turkey + Trinidad gi Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + USA + Uruguay + Uzbekistan + Vatican State + Saint Vincent gi Grenadines + Venezuela + British Virgin Islands + U.S. Virgin Islands + Vietnam + Vanuatu + Wallis gi Futuna + Samoa + Yemen + Mayotte + South Africa + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y] + [q x z] + [A B C D E F G H I J K L M N O P R S T U V W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + DAC + DAR + DAD + DAN + DAH + DAU + DAO + DAB + DOC + DAP + DGI + DAG + + + Dwe mar Achiel + Dwe mar Ariyo + Dwe mar Adek + Dwe mar Ang'wen + Dwe mar Abich + Dwe mar Auchiel + Dwe mar Abiriyo + Dwe mar Aboro + Dwe mar Ochiko + Dwe mar Apar + Dwe mar gi achiel + Dwe mar Apar gi ariyo + + + + + C + R + D + N + B + U + B + B + C + P + C + P + + + + + + + JMP + WUT + TAR + TAD + TAN + TAB + NGS + + + Jumapil + Wuok Tich + Tich Ariyo + Tich Adek + Tich Ang'wen + Tich Abich + Ngeso + + + + + J + W + T + T + T + T + N + + + + + + + NMN1 + NMN2 + NMN3 + NMN4 + + + nus mar nus 1 + nus mar nus 2 + nus mar nus 3 + nus mar nus 4 + + + + + + + OD + OT + + + + + + Kapok Kristo obiro + Ka Kristo osebiro + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + ndalo + + + higa + + + dwe + + + juma + + + chieng' + nyoro + kawuono + kiny + + + ndalo mar juma + + + odieochieng'/otieno + + + saa + + + dakika + + + nyiriri mar saa + + + kar saa + + + + + + + + #,##0.00¤ + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula mar Botswana + + + Dola mar Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Paund mar Misri + + + Nakfa ya Eritrea + + + Birr mar Ethiopia + + + Yuro + + + Pauni mar Uingereza + + + Sedi mar Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Yen mar Japan + + + Siling mar Kenya + Ksh + + + Faranga ya Komoro + + + Dola mar Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + + + Shilingi ya Uganda + + + Dola + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + ee:e + da:d + + + + diff --git a/library/Zend/Locale/Data/luo_KE.xml b/library/Zend/Locale/Data/luo_KE.xml new file mode 100755 index 000000000..e576804b7 --- /dev/null +++ b/library/Zend/Locale/Data/luo_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/luy.xml b/library/Zend/Locale/Data/luy.xml new file mode 100755 index 000000000..0a2d9a17e --- /dev/null +++ b/library/Zend/Locale/Data/luy.xml @@ -0,0 +1,763 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Lusungu + Kihispania + Kiajemi + Kifaransa + Kihausa + Luhindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Luluhia + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa lya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + Metric + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mar + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Des + + + Januari + Februari + Machi + Aprili + Mei + Juni + Julai + Agosti + Septemba + Oktoba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + J2 + J3 + J4 + J5 + Al + Ij + J1 + + + Jumapiri + Jumatatu + Jumanne + Jumatano + Murwa wa Kanne + Murwa wa Katano + Jumamosi + + + + + S + M + T + W + T + F + S + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Robo ya Kala + Robo ya Kaviri + Robo ya Kavaga + Robo ya Kanne + + + + + + + a.m. + p.m. + + + + + + Imberi ya Kuuza Kwa + Muhiga Kuvita Kuuza + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Rimenya + + + Muhiga + + + Mweri + + + Risiza + + + Ridiku + Mgorova + Lero + Mgamba + + + Mrisiza + + + Vuche/Vwira + + + Isaa + + + Idagika + + + Sekunde + + + Havundu + + + + + + + + ¤#,##0.00;¤- #,##0.00 + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Sirinji ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Sirinji ya Tanzania + + + Sirinji ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Ye:Y + Dave:D + + + + diff --git a/library/Zend/Locale/Data/luy_KE.xml b/library/Zend/Locale/Data/luy_KE.xml new file mode 100755 index 000000000..703c73cd7 --- /dev/null +++ b/library/Zend/Locale/Data/luy_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/lv.xml b/library/Zend/Locale/Data/lv.xml new file mode 100755 index 000000000..dceac8fa5 --- /dev/null +++ b/library/Zend/Locale/Data/lv.xml @@ -0,0 +1,5930 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afāru + abhāzu + ačinu + ačolu + adangmu + adigu + avesta + afrikandu + afrihili + aghemu + ainu + akanu + akadiešu + aleutu + dienvidaltajiešu + amharu + aragoniešu + senangļu + angika + arābu + mūsdienu standarta arābu + aramiešu + araukāņu + arapahu + aravaku + asamiešu + asu + astūriešu + avāru + avadhu + aimaru + azerbaidžāņu + azerbaidžāņu + baškīru + beludžu + baliešu + basu + bamumu + gomalu + baltkrievu + bedžu + bembu + bena + bafutu + bulgāru + bhodžpūru + bišlamā + bikolu + binu + komu + siksiku + bambaru + bengāļu + tibetiešu + bretoņu + bradžiešu + bodo + bosniešu + nkosi + burjatu + bugu + bulu + bilinu + medumbu + katalāņu + kadu + karību + kajuga + atsamu + čečenu + sebuāņu + kiga + čamorru + čibču + džagatajs + čūku + mariešu + činuku žargons + čoktavu + čipevaianu + čiroku + šejenu + kurdu (Sorani) + korsikāņu + koptu + krī + Krimas tatāru + čehu + kašubu + baznīcslāvu + čuvašu + velsiešu + dāņu + dakotu + dargu + taitu + vācu + Austrijas vācu + Šveices augšvācu + delavēru + sleivu + dogribu + dinku + zarmu + dogru + lejassorbu + dualu + vidusholandiešu + maldīviešu + diola-fonjī + diūlu + dzongke + dazu + kjembu + evu + efiku + ēģiptiešu + ekadžuku + grieķu + elamiešu + angļu + Austrālijas angļu + Kanādas angļu + Lielbritānijas angļu + ASV angļu + angļu (ASV) + vidusangļu + esperanto + spāņu + Latīņamerikas spāņu + Eiropas spāņu + Meksikas spāņu + igauņu + basku + evondu + persiešu + fangu + fantu + fulu + somu + filipīniešu + fidžiešu + fēru + fonu + franču + Kanādas franču + Šveices franču + vidusfranču + senfranču + ziemeļfrīzu + austrumfrīzu + friūlu + rietumfrīzu + īru + ga + gajo + gbaju + gēlu + gēzu + kiribatiešu + galisiešu + vidusaugšvācu + gvaranu + senaugšvācu + gondu valodas + gorontalu + gotu + grebo + sengrieķu + Šveices vācu + gudžaratu + gusii + meniešu + kučinu + hausu + haidu + havajiešu + ivrits + hindi + hiligainonu + hetu + hmongu + hirimotu + horvātu + augšsorbu + haitiešu + ungāru + hupu + armēņu + hereru + interlingva + ibanu + ibibio + indonēziešu + interlingve + igbo + Sičuaņas ji + inupiaku + iloku + ingušu + ido + īslandiešu + itāļu + inuītu + japāņu + ložbans + jgo + mačamu + jūdpersiešu + jūdarābu + javiešu + gruzīnu + karakalpaku + kabilu + kačinu + kadži + kambu + kāvi + kabardiešu + kaņembu + katabu + makonde + kaboverdiešu + koru + kongu + khasu + hotaniešu + koiračiinī + kikuju + kvaņamu + kazahu + kako + grenlandiešu + kalendžīnu + khmeru + kimbundu + kannadu + korejiešu + konkanu + kosrājiešu + kpellu + kanuru + karačaju un balkāru + karēļu + kuruhu + kašmiriešu + šambalu + bafiju + Ķelnes vācu + kurdu + kumiku + kutenaju + komiešu + korniešu + kirgīzu + latīņu + ladino + langi + landu + lambu + luksemburgiešu + lezgīnu + gandu + limburgiešu + lingala + laosiešu + mongu + lozu + lietuviešu + lubakatanga + lubalulva + luisenu + lundu + luo + lušeju + luhju + latviešu + maduriešu + mafu + magahiešu + maithili + makasaru + mandingu + masaju + mabu + mokšu + mandaru + mendu + meru + Maurīcijas kreolu + malagasu + vidusīru + makua-meetto + mgo + māršaliešu + maoru + mikmaku + minangkabavu + maķedoniešu + malajalu + mongoļu + mandžūru + manipūru + mohauku + mosu + maratu + malajiešu + maltiešu + mundangu + vairākas valodas + krīku + mirandiešu + marvaru + birmiešu + mjenu + erzju + nauruiešu + neapoliešu + nama + norvēģu bukmols + ziemeļndebelu + lejasvācu + nepāliešu + nevaru + ndongu + njasu + niuāņu + holandiešu + flāmu + kvasio + jaunnorvēģu + ngjembūnu + norvēģu + nogaju + sennorvēģu + nko + dienvidndebelu + ziemeļsotu + nueru + navahu + klasiskā nevaru + čičeva + ņamvezu + ņankolu + ņoru + nzemu + oksitāņu + odžibvu + oromu + oriju + osetīnu + važāžu + turku osmaņu + pandžabu + pangasinanu + pehlevi + pampanganu + papjamento + palaviešu + senpersu + feniķiešu + pāli + poļu + ponapiešu + senprovansiešu + puštu + portugāļu + Brazīlijas portugāļu + Eiropas portugāļu + kečvu + radžastāņu + rapanuju + rarotongiešu + retoromāņu + rundu + rumāņu + moldāvu + rombo + čigānu + sakne + krievu + aromūnu + kiņaruanda + ruanda + sanskrits + sandavu + jakutu + samārijas aramiešu + samburu + sasaku + santalu + ngambeju + sangu + sardīniešu + sicīliešu + skotu + sindhu + ziemeļsāmu + seneku + senu + selkupu + koiraboro senni + sango + senīru + serbu-horvātu + šilhu + šanu + Čadas arābu + singāļu + sidamu + slovāku + slovēņu + samoāņu + dienvidsāmu + luleo sāmu + inari sāmu + skoltsāmu + šonu + soninku + somāļu + sogdiešu + albāņu + serbu + sranantogo + serēru + svatu + saho + dienvidsotu + sundaniešu + sukumu + susu + šumeru + zviedru + svahili + komoru + Kongo svahili + klasiskā sīriešu + sīriešu + tamilu + telugu + temnu + teso + tereno + tetumu + tadžiku + taju + tigrinja + tigru + tivu + turkmēņu + tokelaviešu + tagalu + klingoņu + tlinkitu + tuaregu + cvanu + tongiešu + njasas tongu + tokpisins + turku + taroko + congu + cimšiāņu + tatāru + tumbuku + tuvaliešu + tvī + tasavaku + taitiešu + tuviešu + Centrālmarokas tamazīts + udmurtu + uiguru + ugaritiešu + ukraiņu + umbundu + nezināma valoda + urdu + uzbeku + vaju + vendu + vjetnamiešu + volapiks + votu + vundžo + valoņu + Vallisas vācu + valamu + varaju + vašo + volofu + kalmiku + khosu + sogu + jao + japiešu + janbaņu + jembu + jidišs + jorubu + kantoniešu + džuanu + sapoteku + blissimbolika + zenagu + standarta marokāņu berberu + ķīniešu + ķīniešu vienkāršotā + ķīniešu tradicionālā + zulu + zunju + bez lingvistiska satura + zazaki + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pasaule + Āfrika + Ziemeļamerika + Dienvidamerika + Okeānija + Rietumāfrika + Centrālamerika + Austrumāfrika + Ziemeļāfrika + Vidusāfrika + Dienvidāfrika + Amerika + Amerikas ziemeļu daļa + Karību jūras reģions + Austrumāzija + Dienvidāzija + Centrālaustrumāzija + Dienvideiropa + Austrālāzija + Melanēzija + Mikronēzijas reģions + Polinēzija + Āzija + Centrālāzija + Rietumāzija + Eiropa + Austrumeiropa + Ziemeļeiropa + Rietumeiropa + Latīņamerika + Debesbraukšanas sala + Andora + Apvienotie Arābu Emirāti + Afganistāna + Antigva un Barbuda + Angilja + Albānija + Armēnija + Nīderlandes Antiļas + Angola + Antarktika + Argentīna + Amerikāņu Samoa + Austrija + Austrālija + Aruba + Olandes salas + Azerbaidžāna + Bosnija un Hercegovina + Barbadosa + Bangladeša + Beļģija + Burkinafaso + Bulgārija + Bahreina + Burundi + Benina + Senbartelmī + Bermudu salas + Bruneja + Bolīvija + Nīderlandes Karību salas + Brazīlija + Bahamu salas + Butāna + Buvē sala + Botsvāna + Baltkrievija + Beliza + Kanāda + Kokosu jeb Kīlinga salas + Kongo-Kinšasa + Kongo Demokrātiskā Republika + Centrālāfrikas Republika + Kongo - Brazavila + Kongo (Republika) + Šveice + Kotdivuāra + Ziloņkaula krasts + Kuka salas + Čīle + Kamerūna + Ķīna + Kolumbija + Klipertona sala + Kostarika + Kuba + Kaboverde + Kirasao + Ziemsvētku sala + Kipra + Čehija + Vācija + Djego Garsijas atols + Džibutija + Dānija + Dominika + Dominikāna + Alžīrija + Seūta un Melilja + Ekvadora + Igaunija + Ēģipte + Rietumsahāra + Eritreja + Spānija + Etiopija + Eiropas Savienība + Somija + Fidži + Folklenda salas + Folklenda salas (Malvinu salas) + Mikronēzija + Fēru Salas + Francija + Gabona + Lielbritānija + Lielbritānija + Grenāda + Gruzija + Franču Gviāna + Gērnsija + Gana + Gibraltārs + Grenlande + Gambija + Gvineja + Gvadelupa + Ekvatoriālā Gvineja + Grieķija + Dienviddžordžija un Dienvidsendviču salas + Gvatemala + Guama + Gvineja-Bisava + Gajāna + Ķīnas īpašās pārvaldes apgabals Honkonga + Honkonga + Hērda un Makdonalda salas + Hondurasa + Horvātija + Haiti + Ungārija + Kanāriju salas + Indonēzija + Īrija + Izraēla + Mena + Indija + Indijas okeāna Britu teritorija + Irāka + Irāna + Īslande + Itālija + Džērsija + Jamaika + Jordānija + Japāna + Kenija + Kirgizstāna + Kambodža + Kiribati + Komoru salas + Sentkitsa un Nevisa + Ziemeļkoreja + Dienvidkoreja + Kuveita + Kaimanu salas + Kazahstāna + Laosa + Libāna + Sentlūsija + Lihtenšteina + Šrilanka + Libērija + Lesoto + Lietuva + Luksemburga + Latvija + Lībija + Maroka + Monako + Moldova + Melnkalne + Senmartēna + Madagaskara + Māršala salas + Maķedonija + Maķedonija (BDRM) + Mali + Mjanma (Birma) + Mongolija + Ķīnas īpašās pārvaldes apgabals Makao + Makao + Ziemeļu Marianas salas + Martinika + Mauritānija + Montserrata + Malta + Maurīcija + Maldīvija + Malāvija + Meksika + Malaizija + Mozambika + Namībija + Jaunkaledonija + Nigēra + Norfolkas sala + Nigērija + Nikaragva + Nīderlande + Norvēģija + Nepāla + Nauru + Niue + Jaunzēlande + Omāna + Panama + Peru + Franču Polinēzija + Papua-Jaungvineja + Filipīnas + Pakistāna + Polija + Senpjēra un Mikelona + Pitkērna + Puertoriko + Palestīna + Palestīna + Portugāle + Palau + Paragvaja + Katara + Okeānijas attālās salas + Reinjona + Rumānija + Serbija + Krievija + Ruanda + Saūda Arābija + Zālamana salas + Seišeļu salas + Sudāna + Zviedrija + Singapūra + Sv.Helēnas sala + Slovēnija + Svalbāra un Jana Majena sala + Slovākija + Sjerraleone + Sanmarīno + Senegāla + Somālija + Surinama + Dienvidsudāna + Santome un Prinsipi + Salvadora + Sintmārtena + Sīrija + Svazilenda + Tristana da Kuņas salas + Tērksas un Kaikosas salas + Čada + Francijas Dienvidjūru Zemes + Togo + Taizeme + Tadžikistāna + Tokelau + Austrumtimora + Turkmenistāna + Tunisija + Tonga + Turcija + Trinidāda un Tobāgo + Tuvalu + Taivāna + Tanzānija + Ukraina + Uganda + ASV Aizjūras salas + Amerikas Savienotās Valstis + ASV + Urugvaja + Uzbekistāna + Vatikāns + Sentvinsenta un Grenadīnas + Venecuēla + Britu Virdžīnas + ASV Virdžīnas + Vjetnama + Vanuatu + Volisa un Futuna + Samoa + Kosova + Jemena + Majota + Dienvidāfrikas Republika + Zambija + Zimbabve + nezināms reģions + + + tradicionālā vācu ortogrāfija + vācu ortogrāfija no 1996. gada + akadēmiskā + austrumarmēņu + rietumarmēņu + Starptautiskais fonētiskais alfabēts + UPA fonētika + tradicionālā ortogrāfija + monotons + Natisona dialekts + piņjiņa romanizācija + politons + datoru + saho + Skotijas angļu + Taraškeviča ortogrāfija + vienotā ortogrāfija + valensiešu + Veida-Džailza romanizācija + + + Kalendārs + Kārtošana, ignorējot simbolus + Diakritisko zīmju kārtošana apgrieztā secībā + Lielo/mazo burtu kārtošana + Reģistrjutīgo rakstzīmju kārtošana + Kana rakstzīmju kārtošana + Kārtošanas secība + Normalizētā kārtošana + Kārtošana skaitliskā secībā + Kārtošanas pakāpe + Valūta + Cipari + Laika josla + Lokalizācijas variants + Kārtot kā simbolus + Personīgai lietošanai + + + Arābu-indiešu cipari + Izvērstie arābu-indiešu cipari + Armēņu cipari + Mazie armēņu cipari + Bengāļu cipari + tradicionālās ķīniešu valodas kārtošanas secība - Big5 + budistu kalendārs + ķīniešu kalendārs + Koptu kalendārs + dangi kalendārs + Devanāgarī cipari + Vārdnīcas kārtošanas secība + Noklusējuma unikoda kārtošanas secība + kārtošanas secība daudzvalodu Eiropas dokumentiem + Etiopiešu cipari + Etiopiešu kalendārs + Etiopiešu kalendārs + Finanšu cipari + Pilna platuma cipari + vienkāršotās ķīniešu valodas kārtošanas secība - GB2312 + Gruzīnu cipari + Gregora kalendārs + Grieķu cipari + Mazie grieķu cipari + Gudžaratu cipari + Gurmuki cipari + Ķīniešu decimāldaļskaitļi + Vienkāršotie ķīniešu cipari + Vienkāršotie ķīniešu cipari finanšu dokumentiem + Tradicionālie ķīniešu cipari + Tradicionālie ķīniešu cipari finanšu dokumentiem + Ivrita cipari + ebreju kalendārs + Kārtot visus + Indijas nacionālais kalendārs + islāma kalendārs + islāma pilsoņu kalendārs + ISO 8601 kalendārs + japāņu kalendārs + Japāņu cipari + Japāņu cipari finanšu dokumentiem + Khmeru cipari + Kannadu cipari + Laosiešu cipari + Arābu cipari + Kārtot pēc pirmā mazā burta + Malajalu cipari + Mongoļu cipari + Birmiešu cipari + Vietējie cipari + Kārtot diakritiskās zīmes parastā secībā + Kārtot burtu reģistra parastā secībā + Kārtot reģistrnejutīgas rakstzīmes + Kārtot kana rakstzīmes atsevišķi + Kārtot bez normalizēšanas + Kārtot ciparus atsevišķi + Kārtot simbolus + Oriju cipari + Persiešu kalendārs + tālruņu grāmatas kārtošanas secība + Fonētiskā kārtošanas secība + piņjiņa kārtošanas secība + Kārtot tikai pamata burtus + Kārtot diakritiskās zīmes/reģistrjutīgās rakstzīmes/rakstzīmes pēc platuma/Kana rakstzīmes + Reformētā kārtošanas secība + Ķīnas Republikas kalendārs + Romiešu cipari + Mazie romiešu cipari + Vispārīga meklēšana + Meklēt pēc Hangul sākuma līdzskaņa + Kārtot diakritiskās zīmes + Kārtot, ignorējot simbolus + Standarta kārtošanas secība + Stroke kārtošanas secība + Tamilu tradicionālie cipari + Tamilu cipari + Telugu cipari + Kārtot diakritiskās zīmes/reģistrjutīgās rakstzīmes/rakstzīmes pēc platuma + Tajiešu cipari + Tibetiešu cipari + tradicionālā kārtošanas secība + Tradicionālā ciparu sistēma + Radikālā kārtošanas secība pēc vilkumu skaita + Kārtot pēc pirmā lielā burta + VAI cipari + Kārtot diakritiskās zīmes apgrieztā secībā + Kārtot reģistrjutīgās rakstzīmes + Kārtot kana rakstzīmes, norādot atšķirības + Kārtot unikodu normalizējot + Kārtot ciparus skaitliskā secībā + + + BGN + Ciparu + Intonācija + UNGEGN + Diakritiskās zīmes + Pilna platuma + Pusplatuma + Džamo + Piņjiņ + Izdevējdarbība + + + metriskā + angļu + amerikāņu + + + Valoda: {0} + Rakstība: {0} + Reģions: {0} + + + + [a ā b c č d e ē f g ģ h i ī j k ķ l ļ m n ņ o p r s š t u ū v z ž] + [y ō q ŗ w x] + [A Ā B C Č D E Ē F G Ģ H I Ī Y J K Ķ L Ļ M N Ņ O P Q R S Š T U Ū V W X Z Ž] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ ‚ " “ ” „ ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0}…{1} + ? + + + + + + + + + + + + + + EEEE, y. 'gada' d. MMMM G + + + + + y. 'gada' d. MMMM G + + + + + y. 'gada' d. MMM G + + + + + dd.MM.y GGGGG + + + + + + + {1} 'plkst.' {0} + + + + + {1} 'plkst.' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d. + y. 'g'. G + y. 'g'. MMM G + y. 'g'. d. MMM G + E, y. 'g'. d. MMM G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm:ss + y. 'g'. G + y. 'g'. G + MM.y. G + d.MM.y. G + E, d.M.y. G + y. 'g'. MMM G + y. 'g'. d. MMM G + E, y. 'g'. d. MMM G + y. 'g'. MMMM G + QQQ y G + y. 'gada' QQQQ G + + + {0}–{1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + dd.MM.–dd.MM. + dd.MM–dd.MM + + + E, dd.MM–E, dd.MM + E, dd.MM–E, dd.MM + + + MMM–MMM + + + d.–d. MMM + d. MMM–d. MMM + + + E, d. MMM–E, d. MMM + E, d. MMM–E, d. MMM + + + y.–y. G + + + MM.y.–MM.y. GGGGG + MM.y.–MM.y. GGGGG + + + dd.MM.y.–dd.MM.y. GGGGG + dd.MM.y.–dd.MM.y. GGGGG + dd.MM.y.–dd.MM.y. GGGGG + + + E, dd.MM.y.–E, dd.MM.y. GGGGG + E, dd.MM.y.–E, dd.MM.y. GGGGG + E, dd.MM.y.–E, dd.MM.y. GGGGG + + + y. 'gada' MMM–MMM G + y. 'gada' MMM–y. 'gada' MMM G + + + y. 'gada' d.–d. MMM G + y. 'gada' d. MMM–d. MMM G + y. 'gada' d. MMM–y. 'gada' d. MMM G + + + E, y. 'gada' d. MMM–E, y. 'gada' d. MMM G + E, y. 'gada' d. MMM–E, y. 'gada' d. MMM G + E, y. 'gada' d. MMM–E, y. 'gada' d. MMM G + + + y. 'gada' MMMM–MMMM G + y. 'gada' MMMM–y. 'gada' MMMM G + + + + + + + + + janv. + febr. + marts + apr. + maijs + jūn. + jūl. + aug. + sept. + okt. + nov. + dec. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + janvāris + februāris + marts + aprīlis + maijs + jūnijs + jūlijs + augusts + septembris + oktobris + novembris + decembris + + + + + Janv. + Febr. + Marts + Apr. + Maijs + Jūn. + Jūl. + Aug. + Sept. + Okt. + Nov. + Dec. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Janvāris + Februāris + Marts + Aprīlis + Maijs + Jūnijs + Jūlijs + Augusts + Septembris + Oktobris + Novembris + Decembris + + + + + + + Sv + Pr + Ot + Tr + Ce + Pk + Se + + + S + P + O + T + C + P + S + + + Sv + Pr + Ot + Tr + Ce + Pk + Se + + + svētdiena + pirmdiena + otrdiena + trešdiena + ceturtdiena + piektdiena + sestdiena + + + + + Sv + Pr + Ot + Tr + Ce + Pk + Se + + + S + P + O + T + C + P + S + + + Sv + Pr + Ot + Tr + Ce + Pk + Se + + + Svētdiena + Pirmdiena + Otrdiena + Trešdiena + Ceturtdiena + Piektdiena + Sestdiena + + + + + + + C1 + C2 + C3 + C4 + + + 1. + 2. + 3. + 4. + + + 1. ceturksnis + 2. ceturksnis + 3. ceturksnis + 4. ceturksnis + + + + + C1 + C2 + C3 + C4 + + + 1. + 2. + 3. + 4. + + + 1. ceturksnis + 2. ceturksnis + 3. ceturksnis + 4. ceturksnis + + + + + + + priekšpusdienā + pēcpusdienā + + + + + + pirms mūsu ēras + mūsu ērā + + + p.m.ē. + m.ē. + + + p.m.ē. + pmē + m.ē. + + + + + + + EEEE, y. 'gada' d. MMMM + + + + + y. 'gada' d. MMMM + + + + + y. 'gada' d. MMM + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d. + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + G y. 'g'. + G y. 'g'. MMM + G y. 'g'. d. MMM + E, G y. 'g'. d. MMM + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM. + E, dd.MM. + LLL + d. MMM + E, d. MMM + d. MMMM + E, d. MMMM + mm:ss + mm:ss + y. 'g'. + MM.y. + d.M.y. + E, d.M.y. + y. 'g'. MMM + y. 'g'. d. MMM + E, y. 'g'. d. MMM + y. 'g'. MMMM + QQQ y + y. 'g'. QQQQ + + + {0} {1} + + + {0} - {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM.–MM. + + + dd.MM.–dd.MM. + dd.MM–dd.MM + + + E, dd.MM – E, dd.MM + E, dd.MM – E, dd.MM + + + LLL–LLL + + + d.–d. MMM + d. MMM – d. MMM + + + E, d. MMM – E, d. MMM + E, d. MMM – E, d. MMM + + + y.–y. + + + MM.y.–MM.y. + MM.y.–MM.y. + + + dd.MM.y.–dd.MM.y. + dd.MM.y.–dd.MM.y. + dd.MM.y.–dd.MM.y. + + + E, dd.MM.y. – E, dd.MM.y. + E, dd.MM.y. – E, dd.MM.y. + E, dd.MM.y. – E, dd.MM.y. + + + y. 'gada' MMM–MMM + y. 'gada' MMM – y. 'gada' MMM + + + y. 'gada' d.–d. MMM + y. 'gada' d. MMM – d. MMM + y. 'gada' d. MMM – y. 'gada' d. MMM + + + E, y. 'gada' d. MMM – E, y. 'gada' d. MMM + E, y. 'gada' d. MMM – E, y. 'gada' d. MMM + E, y. 'gada' d. MMM – E, y. 'gada' d. MMM + + + y. 'gada' MMMM–MMMM + y. 'gada' MMMM – y. 'gada' MMMM + + + + + + + + + tišri + hešvans + kisļevs + tevets + ševats + 1. adars + adars + 2. adars + nisans + ijars + sivans + tamuzs + avs + eluls + + + + + + + + + muharams + safars + 1. rabī + 2. rabī + 1. džumādā + 2. džumādā + radžabs + šabans + ramadāns + šauvals + du al-kidā + du al-hidžā + + + + + + + + Ēra + + + Gads + pagājušajā gadā + šogad + nākamgad + + Pēc {0} gadiem + Pēc {0} gada + Pēc {0} gadiem + + + Pirms {0} gadiem + Pirms {0} gada + Pirms {0} gadiem + + + + Mēnesis + pagājušajā mēnesī + šomēnes + nākammēnes + + Pēc {0} mēnešiem + Pēc {0} mēneša + Pēc {0} mēnešiem + + + Pirms {0} mēnešiem + Pirms {0} mēneša + Pirms {0} mēnešiem + + + + Nedēļa + pagājušajā nedēļā + šonedēļ + nākamnedēļ + + Pēc {0} nedēļām + Pēc {0} nedēļas + Pēc {0} nedēļām + + + Pirms {0} nedēļām + Pirms {0} nedēļas + Pirms {0} nedēļām + + + + Diena + aizvakar + vakar + šodien + rīt + parīt + + Pēc {0} dienām + Pēc {0} dienas + Pēc {0} dienām + + + Pirms {0} dienām + Pirms {0} dienas + Pirms {0} dienām + + + + Nedēļas diena + + + pagājušajā svētdienā + šosvētdien + nākamsvētdien + + + pagājušajā pirmdienā + šopirmdien + nākampirmdien + + + pagājušajā otrdienā + šootrdien + nākamajā otrdienā + + + pagājušajā trešdienā + šotrešdien + nākamajā trešdienā + + + pagājušajā ceturtdienā + šoceturtdien + nākamajā ceturtdienā + + + pagājušajā piektdienā + šopiektdien + nākamajā piektdienā + + + pagājušajā sestdienā + šosestdien + nākamajā sestdienā + + + Priekšpusdienā/pēcpusdienā + + + Stundas + + Pēc {0} stundām + Pēc {0} stundas + Pēc {0} stundām + + + Pirms {0} stundām + Pirms {0} stundas + Pirms {0} stundām + + + + Minūtes + + Pēc {0} minūtēm + Pēc {0} minūtes + Pēc {0} minūtēm + + + Pirms {0} minūtēm + Pirms {0} minūtes + Pirms {0} minūtēm + + + + Sekundes + tagad + + Pēc {0} sekundēm + Pēc {0} sekundes + Pēc {0} sekundēm + + + Pirms {0} sekundēm + Pirms {0} sekundes + Pirms {0} sekundēm + + + + Laika josla + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Laika josla: {0} + {0}: vasaras laiks + {0}: standarta laiks + {0} ({1}) + + nezināma pilsēta + + + Andora + + + Dubaija + + + Kabula + + + Antigva + + + Angilja + + + Tirāna + + + Erevāna + + + Rotera + + + Palmera + + + Sjova + + + Mavsona + + + Deivisa + + + Vostoka + + + Kesija + + + Dimondirvila + + + Makmerdo + + + Riogaljegosa + + + Mendosa + + + Sanhuana + + + Ušuaja + + + Larioha + + + Sanluisa + + + Katamarka + + + Žužuja + + + Tukumana + + + Kordoba + + + Buenosairesa + + + Pagopago + + + Vīne + + + Pērta + + + Jūkla + + + Dārvina + + + Adelaida + + + Brokenhila + + + Kerija + + + Melburna + + + Hobarta + + + Lindemana + + + Sidneja + + + Brisbena + + + Makvori + + + Lordhova + + + Mariehamna + + + Sarajeva + + + Barbadosa + + + Daka + + + Brisele + + + Vagadugu + + + Sofija + + + Bahreina + + + Bužumbura + + + Portonovo + + + Senbartelmī + + + Bruneja + + + Lapasa + + + Krālendeika + + + Eirenupe + + + Riobranko + + + Portuvelju + + + Boavista + + + Manausa + + + Kujaba + + + Santarena + + + Kampugrandi + + + Belena + + + Aragvaina + + + Sanpaulu + + + Baija + + + Fortalesa + + + Maseio + + + Resifi + + + Noroņa + + + Naso + + + Minska + + + Beliza + + + Dausona + + + Vaithorsa + + + Inuvika + + + Vankūvera + + + Dousonkrīka + + + Krestona + + + Jelounaifa + + + Edmontona + + + Sviftkarenta + + + Kembridžbeja + + + Regīna + + + Vinipega + + + Rezolūta + + + Reinirivera + + + Rankininleta + + + Koralharbora + + + Tanderbeja + + + Nipigona + + + Ikaluita + + + Pangnirtanga + + + Monktona + + + Halifaksa + + + Gūsbeja + + + Gleisbeja + + + Blanksablona + + + Sentdžonsa + + + Kokosa sala + + + Kinšasa + + + Lubumbaši + + + Bangi + + + Brazavila + + + Cīrihe + + + Abidžana + + + Lieldienu sala + + + Santjago + + + Duala + + + Kašgara + + + Urumči + + + Čuncina + + + Šanhaja + + + Harbina + + + Kostarika + + + Kaboverde + + + Kirasao + + + Ziemsvētku sala + + + Nikozija + + + Prāga + + + Bīzingene + + + Berlīne + + + Džibutija + + + Kopenhāgena + + + Dominika + + + Santodomingo + + + Alžīra + + + Galapagu salas + + + Gvajakila + + + Tallina + + + Kaira + + + Ajūna + + + Asmara + + + Kanāriju salas + + + Seūta + + + Madride + + + Adisabeba + + + Fidži + + + Stenli + + + Trūka + + + Ponpeja + + + Kosraja + + + Fēru salas + + + Parīze + + + Librevila + + + + Lielbritānijas vasaras laiks + + Londona + + + Grenāda + + + Kajenna + + + Gērnsija + + + Akra + + + Gibraltārs + + + Tūle + + + Nūka + + + Skoresbisunda + + + Denmārkšavna + + + Bandžula + + + Konakri + + + Gvadelupa + + + Atēnas + + + Dienviddžordžija + + + Gvatemala + + + Guama + + + Bisava + + + Gajāna + + + Honkonga + + + Tegusigalpa + + + Zagreba + + + Portoprensa + + + Budapešta + + + Džakarta + + + Pontianaka + + + Makasara + + + Džajapūra + + + + Īrijas vasaras laiks + + Dublina + + + Jeruzaleme + + + Menas sala + + + Kolkata + + + Čagosa + + + Bagdāde + + + Teherāna + + + Reikjavika + + + Roma + + + Džērsija + + + Jamaika + + + Ammāna + + + Tokija + + + Biškeka + + + Pnompeņa + + + Enderburija + + + Kirisimasi + + + Tarava + + + Komoras + + + Sentkitsa + + + Phenjana + + + Seula + + + Kuveita + + + Kaimanu salas + + + Aktau + + + Orāla + + + Aktobe + + + Kizilorda + + + Almati + + + Vjenčana + + + Beirūta + + + Sentlūsija + + + Vaduca + + + Kolombo + + + Monrovija + + + Viļņa + + + Luksemburga + + + Rīga + + + Tripole + + + Kasablanka + + + Monako + + + Kišiņeva + + + Merigota + + + Antananarivu + + + Kvadžaleina + + + Madžuro + + + Ranguna + + + Hovda + + + Ulanbatora + + + Čoibalsana + + + Makao + + + Saipana + + + Martinika + + + Nuakšota + + + Montserrata + + + Maurīcija + + + Maldīvu salas + + + Blantaira + + + Tihuāna + + + Santaizabela + + + Ermosiljo + + + Masatlāna + + + Čihuahua + + + Bajabanderasa + + + Ohinaga + + + Montereja + + + Mehiko + + + Matamorosa + + + Kankūna + + + Kualalumpura + + + Kučinga + + + Vindhuka + + + Numea + + + Niameja + + + Norfolka + + + Lagosa + + + Managva + + + Amsterdama + + + Katmandu + + + Četema + + + Oklenda + + + Maskata + + + Taiti + + + Markvesa + + + Gambjera + + + Portmorsbi + + + Karāči + + + Varšava + + + Mikelona + + + Pitkērna + + + Puertoriko + + + Hebrona + + + Azoru salas + + + Lisabona + + + Asunsjona + + + Katara + + + Reinjona + + + Bukareste + + + Belgrada + + + Kaļiņingrada + + + Maskava + + + Volgograda + + + Jekaterinburga + + + Omska + + + Novosibirska + + + Novokuzņecka + + + Krasnojarska + + + Irkutska + + + Jakutska + + + Vladivostoka + + + Handiga + + + Sahalīna + + + Ustjņera + + + Magadāna + + + Kamčatka + + + Anadira + + + Rijāda + + + Gvadalkanala + + + Hartūma + + + Stokholma + + + Singapūra + + + Sv.Helēnas sala + + + Ļubļana + + + Longjērbīene + + + Frītauna + + + Sanmarīno + + + Dakara + + + Mogadīšo + + + Džūba + + + Santome + + + Salvadora + + + Louerprinseskvotera + + + Damaska + + + Grandtkērka + + + Ndžamena + + + Kergelēna + + + Bangkoka + + + Dušanbe + + + Ašgabata + + + Tunisa + + + Stambula + + + Portofspeina + + + Taibei + + + Dāresalāma + + + Užgoroda + + + Kijeva + + + Simferopole + + + Zaporožje + + + Midveja + + + Džonstauna + + + Veika + + + Adaka + + + Noma + + + Ankurāža + + + Jakutata + + + Džuno + + + Losandželosa + + + Boisisitija + + + Fīniksa + + + Denvera + + + Bjula + + + Ņūsalema, Ziemeļdakota + + + Centra, Ziemeļdakota + + + Čikāga + + + Menominī + + + Vinsensa, Indiāna + + + Pēterburga, Indiāna + + + Tellsitija, Indiāna + + + Noksa, Indiāna + + + Vinimaka, Indiāna + + + Marengo, Indiāna + + + Indianapolisa + + + Luisvilla + + + Vīveja, Indiāna + + + Montiselo, Kentuki + + + Detroita + + + Ņujorka + + + Samarkanda + + + Taškenta + + + Vatikāns + + + Sentvinsenta + + + Karakasa + + + Senttomasa sala + + + Hošimina + + + Volisa + + + Apija + + + Adena + + + Majota + + + Johannesburga + + + + Afganistānas laiks + + + + + Centrālāfrikas laiks + + + + + Austrumāfrikas laiks + + + + + Dienvidāfrikas laiks + + + + + Rietumāfrikas laiks + Rietumāfrikas ziemas laiks + Rietumāfrikas vasaras laiks + + + + + Aļaskas laiks + Aļaskas ziemas laiks + Aļaskas vasaras laiks + + + + + Amazones laiks + Amazones ziemas laiks + Amazones vasaras laiks + + + + + Centrālais laiks + Centrālais ziemas laiks + Centrālais vasaras laiks + + + + + Austrumu laiks + Austrumu ziemas laiks + Austrumu vasaras laiks + + + + + Kalnu laiks + Kalnu ziemas laiks + Kalnu vasaras laiks + + + + + Klusā okeāna laiks + Klusā okeāna ziemas laiks + Klusā okeāna vasaras laiks + + + + + Anadiras laiks + Anadiras ziemas laiks + Anadiras vasaras laiks + + + + + Saūda Arābijas laiks + Saūda Arābijas ziemas laiks + Saūda Arābijas vasaras laiks + + + + + Argentīnas laiks + Argentīnas ziemas laiks + Argentīnas vasaras laiks + + + + + Rietumargentīnas laiks + Rietumargentīnas ziemas laiks + Rietumargentīnas vasaras laiks + + + + + Armēnijas laiks + Armēnijas ziemas laiks + Armēnijas vasaras laiks + + + + + Atlantijas laiks + Atlantijas ziemas laiks + Atlantijas vasaras laiks + + + + + Austrālijas centrālais laiks + Austrālijas centrālais ziemas laiks + Austrālijas centrālais vasaras laiks + + + + + Austrālijas centrālais rietumu laiks + Austrālijas centrālais rietumu ziemas laiks + Austrālijas centrālais rietumu vasaras laiks + + + + + Austrālijas austrumu laiks + Austrālijas austrumu ziemas laiks + Austrālijas austrumu vasaras laiks + + + + + Rietumaustrālijas laiks + Austrālijas rietumu ziemas laiks + Austrālijas rietumu vasaras laiks + + + + + Azerbaidžānas laiks + Azerbaidžānas ziemas laiks + Azerbaidžānas vasaras laiks + + + + + Azoru salu laiks + Azoru salu ziemas laiks + Azoru salu vasaras laiks + + + + + Bangladešas laiks + Bangladešas ziemas laiks + Bangladešas vasaras laiks + + + + + Butānas laiks + + + + + Bolīvijas laiks + + + + + Brazīlijas laiks + Brazīlijas ziemas laiks + Brazīlijas vasaras laiks + + + + + Brunejas Darusalamas laiks + + + + + Kaboverdes laiks + Kaboverdes ziemas laiks + Kaboverdes vasaras laiks + + + + + Čamoro standarta laiks + + + + + Četemas laiks + Četemas ziemas laiks + Četemas vasaras laiks + + + + + Čīles laiks + Čīles ziemas laiks + Čīles vasaras laiks + + + + + Ķīnas laiks + Ķīnas ziemas laiks + Ķīnas vasaras laiks + + + + + Čoibalsanas laiks + Čoibalsanas ziemas laiks + Čoibalsanas vasaras laiks + + + + + Ziemsvētku salas laiks + + + + + Kokosa salu laiks + + + + + Kolumbijas laiks + Kolumbijas ziemas laiks + Kolumbijas vasaras laiks + + + + + Kuka salu laiks + Kuka salu ziemas laiks + Kuka salu vasaras laiks + + + + + Kubas laiks + Kubas ziemas laiks + Kubas vasaras laiks + + + + + Deivisas laiks + + + + + Dimondirvilas laiks + + + + + Austrumtimoras laiks + + + + + Lieldienu salas laiks + Lieldienu salas ziemas laiks + Lieldienu salas vasaras laiks + + + + + Ekvadoras laiks + + + + + Centrāleiropas laiks + Centrāleiropas ziemas laiks + Centrāleiropas vasaras laiks + + + CET + CET + CEST + + + + + Austrumeiropas laiks + Austrumeiropas ziemas laiks + Austrumeiropas vasaras laiks + + + EET + EET + EEST + + + + + Rietumeiropas laiks + Rietumeiropas ziemas laiks + Rietumeiropas vasaras laiks + + + WET + WET + WEST + + + + + Folklenda salu laiks + Folklenda salu ziemas laiks + Folklenda salu vasaras laiks + + + + + Fidži laiks + Fidži ziemas laiks + Fidži vasaras laiks + + + + + Franču Gviānas laiks + + + + + Francijas Dienidjūru un Antarktikas teritorijas laiks + + + + + Galapagu laiks + + + + + Gambjē salu laiks + + + + + Gruzijas laiks + Gruzijas ziemas laiks + Gruzijas vasaras laiks + + + + + Gilberta salu laiks + + + + + Griničas laiks + + + + + Austrumgrenlandes laiks + Austrumgrenlandes ziemas laiks + Austrumgrenlandes vasaras laiks + + + + + Rietumgrenlandes laiks + Rietumgrenlandes ziemas laiks + Rietumgrenlandes vasaras laiks + + + + + Persijas līča laiks + + + + + Gvijānas laiks + + + + + Havaju–Aleutu laiks + Havaju–Aleutu ziemas laiks + Havaju–Aleutu vasaras laiks + + + + + Honkongas laiks + Honkongas ziemas laiks + Honkongas vasaras laiks + + + + + Hovdas laiks + Hovdas ziemas laiks + Hovdas vasaras laiks + + + + + Indijas ziemas laiks + + + + + Indijas okeāna laiks + + + + + Indoķīnas laiks + + + + + Centrālindonēzijas laiks + + + + + Austrumindonēzijas laiks + + + + + Rietumindonēzijas laiks + + + + + Irānas laiks + Irānas ziemas laiks + Irānas vasaras laiks + + + + + Irkutskas laiks + Irkutskas ziemas laiks + Irkutskas vasaras laiks + + + + + Izraēlas laiks + Izraēlas ziemas laiks + Izraēlas vasaras laiks + + + + + Japānas laiks + Japānas ziemas laiks + Japānas vasaras laiks + + + + + Petropavlovskas-Kamčatskas laiks + Petropavlovskas-Kamčatskas ziemas laiks + Petropavlovskas-Kamčatskas vasaras laiks + + + + + Austrumkazahstānas laiks + + + + + Rietumkazahstānas laiks + + + + + Korejas laiks + Korejas ziemas laiks + Korejas vasaras laiks + + + + + Kosrae laiks + + + + + Krasnojarskas laiks + Krasnojarskas ziemas laiks + Krasnojarskas vasaras laiks + + + + + Kirgizstānas laiks + + + + + Lainas salu laiks + + + + + Lorda Hava salas laiks + Lorda Hava salas standarta laiks + Lorda Hava salas vasaras laiks + + + + + Makvorija salas laiks + + + + + Magadanas laiks + Magadānas ziemas laiks + Magadānas vasaras laiks + + + + + Malaizijas laiks + + + + + Maldīvu salu laiks + + + + + Marķīza salu laiks + + + + + Māršala salu laiks + + + + + Maurīcijas laiks + Maurīcijas ziemas laiks + Maurīcijas vasaras laiks + + + + + Mosonas laiks + + + + + Ulanbatoras laiks + Ulanbatoras ziemas laiks + Ulanbatoras vasaras laiks + + + + + Maskavas laiks + Maskavas ziemas laiks + Maskavas vasaras laiks + + + + + Mjanmas laiks + + + + + Nauru laiks + + + + + Nepālas laiks + + + + + Jaunkaledonijas laiks + Jaunkaledonijas ziemas laiks + Jaunkaledonijas vasaras laiks + + + + + Jaunzēlandes laiks + Jaunzēlandes standarta laiks + Jaunzēlandes vasaras laiks + + + + + Ņūfaundlendas laiks + Ņūfaundlendas standarta laiks + Ņūfaundlendas vasaras laiks + + + + + Niue laiks + + + + + Norfolkas salas laiks + + + + + Fernandu di Noroņas laiks + Fernandu di Noroņas ziemas laiks + Fernandu di Noroņas vasaras laiks + + + + + Novosibirskas laiks + Novosibirskas ziemas laiks + Novosibirskas vasaras laiks + + + + + Omskas laiks + Omskas ziemas laiks + Omskas vasaras laiks + + + + + Pakistānas laiks + Pakistānas ziemas laiks + Pakistānas vasaras laiks + + + + + Palau laiks + + + + + Papua-Jaungvinejas laiks + + + + + Paragvajas laiks + Paragvajas ziemas laiks + Paragvajas vasaras laiks + + + + + Peru laiks + Peru ziemas laiks + Peru vasaras laiks + + + + + Filipīnu laiks + Filipīnu ziemas laiks + Filipīnu vasaras laiks + + + + + Fēniksa salu laiks + + + + + Senpjēras un Mikelonas laiks + Senpjēras un Mikelonas ziemas laiks + Senpjēras un Mikelonas vasaras laiks + + + + + Pitkērnas laiks + + + + + Ponapē laiks + + + + + Reinjonas laiks + + + + + Roteras laiks + + + + + Sahalīnas laiks + Sahalīnas ziemas laiks + Sahalīnas vasaras laiks + + + + + Samaras laiks + Samaras ziemas laiks + Samaras vasaras laiks + + + + + Samoa laiks + Samoa standarta laiks + Samoa vasaras laiks + + + + + Seišeļu salu laiks + + + + + Singapūras laiks + + + + + Zālamana salu laiks + + + + + Dienviddžordžijas laiks + + + + + Surinamas laiks + + + + + Šovas laiks + + + + + Taiti laiks + + + + + Taibei laiks + Taibei ziemas laiks + Taibei vasaras laiks + + + + + Tadžikistānas laiks + + + + + Tokelau laiks + + + + + Tongas laiks + Tongas ziemas laiks + Tongas vasaras laiks + + + + + Čūkas laiks + + + + + Turkmenistānas laiks + Turkmenistānas ziemas laiks + Turkmenistānas vasaras laiks + + + + + Tuvalu laiks + + + + + Urugvajas laiks + Urugvajas ziemas laiks + Urugvajas vasaras laiks + + + + + Uzbekistānas laiks + Uzbekistānas ziemas laiks + Uzbekistānas vasaras laiks + + + + + Vanuatu laiks + Vanuatu ziemas laiks + Vanuatu vasaras laiks + + + + + Venecuēlas laiks + + + + + Vladivostokas laiks + Vladivostokas ziemas laiks + Vladivostokas vasaras laiks + + + + + Volgogradas laiks + Volgogradas ziemas laiks + Volgogradas vasaras laiks + + + + + Vostokas laiks + + + + + Veika salas laiks + + + + + Volisas un Futunas laiks + + + + + Jakutskas laiks + Jakutskas ziemas laiks + Jakutskas vasaras laiks + + + + + Jekaterinburgas laiks + Jekaterinburgas ziemas laiks + Jekaterinburgas vasaras laiks + + + + + + + , +   + ; + % + + + - + E + · + + + nav skaitlis + + + + + #,##0.### + + + + + 0 tūkstoši + 0 tūkstotis + 0 tūkstoši + 00 tūkstoši + 00 tūkstotis + 00 tūkstoši + 000 tūkstoši + 000 tūkstotis + 000 tūkstoši + 0 miljoni + 0 miljons + 0 miljoni + 00 miljoni + 00 miljons + 00 miljoni + 000 miljoni + 000 miljons + 000 miljoni + 0 miljardi + 0 miljards + 0 miljardi + 00 miljardi + 00 miljards + 00 miljardi + 000 miljardi + 000 miljards + 000 miljardi + 0 triljoni + 0 triljons + 0 triljoni + 00 triljoni + 00 triljons + 00 triljoni + 000 triljoni + 000 triljons + 000 triljoni + + + + + 0 tūkst'.' + 0 tūkst'.' + 0 tūkst'.' + 00 tūkst'.' + 00 tūkst'.' + 00 tūkst'.' + 000 tūkst'.' + 000 tūkst'.' + 000 tūkst'.' + 0 milj'.' + 0 milj'.' + 0 milj'.' + 00 milj'.' + 00 milj'.' + 00 milj'.' + 000 milj'.' + 000 milj'.' + 000 milj'.' + 0 mljrd'.' + 0 mljrd'.' + 0 mljrd'.' + 00 mljrd'.' + 00 mljrd'.' + 00 mljrd'.' + 000 mljrd'.' + 000 mljrd'.' + 000 mljrd'.' + 0 trilj'.' + 0 trilj'.' + 0 trilj'.' + 00 trilj'.' + 00 trilj'.' + 00 trilj'.' + 000 trilj'.' + 000 trilj'.' + 000 trilj'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00 + + + {0} {1} + {0} {1} + {0} {1} + + + + Apvienoto Arābu Emirātu dirhēms + Apvienoto Arābu Emirātu dirhēmi + Apvienoto Arābu Emirātu dirhēms + Apvienoto Arābu Emirātu dirhēmi + + + Afganistānas afgāns + Afganistānas afgāni + Afganistānas afgāns + Afganistānas afgāni + + + Albānijas leks + Albānijas leki + Albānijas leks + Albānijas leki + + + Armēnijas drams + Armēnijas drami + Armēnijas drams + Armēnijas drami + + + Nīderlandes Antiļu guldenis + Nīderlandes Antiļu guldeņi + Nīderlandes Antiļu guldenis + Nīderlandes Antiļu guldeņi + + + Angolas kvanza + Angolas kvanzas + Angolas kvanza + Angolas kvanzas + + + Argentīnas peso + Argentīnas peso + Argentīnas peso + Argentīnas peso + + + Austrijas šiliņš + + + Austrālijas dolārs + Austrālijas dolāri + Austrālijas dolārs + Austrālijas dolāri + AU$ + + + Arubas guldenis + Arubas guldeņi + Arubas guldenis + Arubas guldeņi + + + Azerbaidžānas manats (1993–2006) + Azerbaidžānas manati (1993–2006) + Azerbaidžānas manats (1993–2006) + Azerbaidžānas manati (1993–2006) + + + Azerbaidžānas manats + Azerbaidžānas manati + Azerbaidžānas manats + Azerbaidžānas manati + + + Bosnijas un Hercogovinas marka + Bosnijas un Hercogovinas markas + Bosnijas un Hercogovinas marka + Bosnijas un Hercogovinas markas + + + Barbadosas dolārs + Barbadosas dolāri + Barbadosas dolārs + Barbadosas dolāri + + + Bangladešas taka + Bangladešas takas + Bangladešas taka + Bangladešas takas + + + Beļģijas franks + Beļģijas franki + Beļģijas franks + Beļģijas franki + + + Bulgārijas leva + Bulgārijas levas + Bulgārijas leva + Bulgārijas levas + + + Bahreinas dinārs + Bahreinas dināri + Bahreinas dinārs + Bahreinas dināri + + + Burundi franks + Burundi franki + Burundi franks + Burundi franki + + + Bermudu dolārs + Bermudu dolāri + Bermudu dolārs + Bermudu dolāri + + + Brunejas dolārs + Brunejas dolāri + Brunejas dolārs + Brunejas dolāri + + + Bolīvijas boliviano + Bolīvijas boliviano + Bolīvijas boliviano + Bolīvijas boliviano + + + Brazīlijas reāls + Brazīlijas reāli + Brazīlijas reāls + Brazīlijas reāli + R$ + + + Bahamu dolārs + Bahamu dolāri + Bahamu dolārs + Bahamu dolāri + + + Butānas ngultrums + Butānas ngultrumi + Butānas ngultrums + Butānas ngultrumi + + + Botsvānas pula + Botsvānas pulas + Botsvānas pula + Botsvānas pulas + + + Baltkrievijas rubelis + Baltkrievijas rubeļi + Baltkrievijas rubelis + Baltkrievijas rubeļi + + + Belizas dolārs + Belizas dolāri + Belizas dolārs + Belizas dolāri + + + Kanādas dolārs + Kanādas dolāri + Kanādas dolārs + Kanādas dolāri + CA$ + + + KDR franks + KDR franki + KDR franks + KDR franki + + + Šveices franks + Šveices franki + Šveices franks + Šveices franki + + + Čīles peso + Čīles peso + Čīles peso + Čīles peso + + + Ķīnas juaņs + Ķīnas juaņi + Ķīnas juaņs + Ķīnas juaņi + CN¥ + + + Kolumbijas peso + Kolumbijas peso + Kolumbijas peso + Kolumbijas peso + + + Kolumbijas reāls + + + Kostarikas kolons + Kostarikas koloni + Kostarikas kolons + Kostarikas koloni + + + Kubas konvertējamais peso + Kubas konvertējamie peso + Kubas konvertējamais peso + Kubas konvertējamie peso + + + Kubas peso + Kubas peso + Kubas peso + Kubas peso + + + Kaboverdes eskudo + Kaboverdes eskudo + Kaboverdes eskudo + Kaboverdes eskudo + + + Kipras mārciņa + + + Čehijas krona + Čehijas kronas + Čehijas krona + Čehijas kronas + + + Vācijas marka + + + Džibutijas franks + Džibutijas franki + Džibutijas franks + Džibutijas franki + + + Dānijas krona + Dānijas kronas + Dānijas krona + Dānijas kronas + + + Dominikānas peso + Dominikānas peso + Dominikānas peso + Dominikānas peso + + + Alžīrijas dinārs + Alžīrijas dināri + Alžīrijas dinārs + Alžīrijas dināri + + + Igaunijas krona + + + Ēģiptes mārciņa + Ēģiptes mārciņas + Ēģiptes mārciņa + Ēģiptes mārciņas + + + Eritrejas nakfa + Eritrejas nakfas + Eritrejas nakfa + Eritrejas nakfas + + + Spānijas peseta + + + Etiopijas birs + Etiopijas biri + Etiopijas birs + Etiopijas biri + + + eiro + eiro + eiro + eiro + + + + Somijas marka + + + Fidži dolārs + Fidži dolāri + Fidži dolārs + Fidži dolāri + + + Folklenda salu mārciņa + Folklenda salu mārciņas + Folklenda salu mārciņa + Folklenda salu mārciņas + + + Francijas franks + + + Lielbritānijas sterliņu mārciņa + Lielbritānijas sterliņu mārciņas + Lielbritānijas sterliņu mārciņa + Lielbritānijas sterliņu mārciņas + £ + + + Gruzijas lari + Gruzijas lari + Gruzijas lari + Gruzijas lari + + + Ganas sedi + Ganas sedi + Ganas sedi + Ganas sedi + + + Gibraltāra mārciņa + Gibraltāra mārciņas + Gibraltāra mārciņa + Gibraltāra mārciņas + + + Gambijas dalasi + Gambijas dalasi + Gambijas dalasi + Gambijas dalasi + + + Gvinejas franks + Gvinejas franki + Gvinejas franks + Gvinejas franki + + + Grieķijas drahma + + + Gvatemalas ketsals + Gvatemalas ketsali + Gvatemalas ketsals + Gvatemalas ketsali + + + Gajānas dolārs + Gajānas dolāri + Gajānas dolārs + Gajānas dolāri + + + Honkongas dolārs + Honkongas dolāri + Honkongas dolārs + Honkongas dolāri + HK$ + + + Hondurasas lempīra + Hondurasas lempīras + Hondurasas lempīra + Hondurasas lempīras + + + Horvātijas kuna + Horvātijas kunas + Horvātijas kuna + Horvātijas kunas + + + Haiti gurds + Haiti gurdi + Haiti gurds + Haiti gurdi + + + Ungārijas forints + Ungārijas forinti + Ungārijas forints + Ungārijas forinti + + + Indonēzijas rūpija + Indonēzijas rūpijas + Indonēzijas rūpija + Indonēzijas rūpijas + + + Īrijas mārciņa + + + Izraēlas šekelis + Izraēlas šekeļi + Izraēlas šekelis + Izraēlas šekeļi + + + + Indijas rūpija + Indijas rūpijas + Indijas rūpija + Indijas rūpijas + + + + Irākas dinārs + Irākas dināri + Irākas dinārs + Irākas dināri + + + Irānas riāls + Irānas riāli + Irānas riāls + Irānas riāli + + + Īslandes krona + Īslandes kronas + Īslandes krona + Īslandes kronas + + + Itālijas lira + + + Jamaikas dolārs + Jamaikas dolāri + Jamaikas dolārs + Jamaikas dolāri + + + Jordānas dinārs + Jordānas dināri + Jordānas dinārs + Jordānas dināri + + + Japānas jena + Japānas jenas + Japānas jena + Japānas jenas + ¥ + + + Kenijas šiliņš + Kenijas šiliņi + Kenijas šiliņš + Kenijas šiliņi + + + Kirgizstānas soms + Kirgizstānas somi + Kirgizstānas soms + Kirgizstānas somi + + + Kambodžas riels + Kambodžas rieli + Kambodžas riels + Kambodžas rieli + + + Komoru franks + Komoru franki + Komoru franks + Komoru franki + + + Ziemeļkorejas vona + Ziemeļkorejas vonas + Ziemeļkorejas vona + Ziemeļkorejas vonas + + + Dienvidkorejas vona + Dienvidkorejas vonas + Dienvidkorejas vona + Dienvidkorejas vonas + + + + Kuveitas dinārs + Kuveitas dināri + Kuveitas dinārs + Kuveitas dināri + + + Kaimanu salu dolārs + Kaimanu salu dolāri + Kaimanu salu dolārs + Kaimanu salu dolāri + + + Kazahstānas tenge + Kazahstānas tenges + Kazahstānas tenge + Kazahstānas tenges + + + Laosas kips + Laosas kipi + Laosas kips + Laosas kipi + + + Libānas mārciņa + Libānas mārciņas + Libānas mārciņa + Libānas mārciņas + + + Šrilankas rūpija + Šrilankas rūpijas + Šrilankas rūpija + Šrilankas rūpijas + + + Libērijas dolārs + Libērijas dolāri + Libērijas dolārs + Libērijas dolāri + + + Lesoto loti + + + Lietuvas lits + Lietuvas liti + Lietuvas lits + Lietuvas liti + + + Luksemburgas franks + + + Latvijas lats + Latvijas lati + Latvijas lats + Latvijas lati + Ls + + + Latvijas rublis + + + Lībijas dinārs + Lībijas dināri + Lībijas dinārs + Lībijas dināri + + + Marokas dirhēms + Marokas dirhēmi + Marokas dirhēms + Marokas dirhēmi + + + Moldovas leja + Moldovas lejas + Moldovas leja + Moldovas lejas + + + Madagaskaras ariari + Madagaskaras ariari + Madagaskaras ariari + Madagaskaras ariari + + + Maķedonijas denārs + Maķedonijas denāri + Maķedonijas denārs + Maķedonijas denāri + + + CFA (Āfrikas) franks + + + Mjanmas kjats + Mjanmas kjati + Mjanmas kjats + Mjanmas kjati + + + Mongolijas tugriks + Mongolijas tugriki + Mongolijas tugriks + Mongolijas tugriki + + + Makao pataka + Makao patakas + Makao pataka + Makao patakas + + + Mauritānijas ugija + Mauritānijas ugijas + Mauritānijas ugija + Mauritānijas ugijas + + + Maltas lira + + + Maltas mārciņa + + + Maurīcijas rūpija + Maurīcijas rūpijas + Maurīcijas rūpija + Maurīcijas rūpijas + + + Maldīvijas rūfija + Maldīvijas rūfijas + Maldīvijas rūfija + Maldīvijas rūfijas + + + Malāvijas kvača + Malāvijas kvačas + Malāvijas kvača + Malāvijas kvačas + + + Meksikas peso + Meksikas peso + Meksikas peso + Meksikas peso + MX$ + + + Malaizijas ringits + Malaizijas ringiti + Malaizijas ringits + Malaizijas ringiti + + + Mozambikas eskudo + + + Mozambikas vecais metikals + Mozambikas vecie metikali + Mozambikas vecais metikals + Mozambikas vecie metikali + + + Mozambikas metikals + Mozambikas metikali + Mozambikas metikals + Mozambikas metikali + + + Namībijas dolārs + Namībijas dolāri + Namībijas dolārs + Namībijas dolāri + + + Nigērijas naira + Nigērijas nairas + Nigērijas naira + Nigērijas nairas + + + Nikaragvas kordoba + Nikaragvas kordobas + Nikaragvas kordoba + Nikaragvas kordobas + + + Nīderlandes guldenis + + + Norvēģijas krona + Norvēģijas kronas + Norvēģijas krona + Norvēģijas kronas + + + Nepālas rūpija + Nepālas rūpijas + Nepālas rūpija + Nepālas rūpijas + + + Jaunzēlandes dolārs + Jaunzēlandes dolāri + Jaunzēlandes dolārs + Jaunzēlandes dolāri + NZ$ + + + Omānas riāls + Omānas riāli + Omānas riāls + Omānas riāli + + + Panamas balboa + Panamas balboa + Panamas balboa + Panamas balboa + + + Peru jaunais sols + Peru jaunie soli + Peru jaunais sols + Peru jaunie soli + + + Papua-Jaungvinejas kina + Papua-Jaungvinejas kinas + Papua-Jaungvinejas kina + Papua-Jaungvinejas kinas + + + Filipīnu peso + Filipīnu peso + Filipīnu peso + Filipīnu peso + + + Pakistānas rūpija + Pakistānas rūpijas + Pakistānas rūpija + Pakistānas rūpijas + + + Polijas zlots + Polijas zloti + Polijas zlots + Polijas zloti + + + Portugāles eskudo + + + Paragvajas guarani + Paragvajas guarani + Paragvajas guarani + Paragvajas guarani + + + Kataras riāls + Kataras riāli + Kataras riāls + Kataras riāli + + + Rumānijas vecā leja + Rumānijas vecās levas + Rumānijas vecā leva + Rumānijas vecās levas + + + Rumānijas leja + Rumānijas lejas + Rumānijas leja + Rumānijas lejas + + + Serbijas dinārs + Serbijas dināri + Serbijas dinārs + Serbijas dināri + + + Krievijas rublis + Krievijas rubļi + Krievijas rublis + Krievijas rubļi + + + Ruandas franks + Ruandas franki + Ruandas franks + Ruandas franki + + + Saūda riāls + Saūda riāli + Saūda riāls + Saūda riāli + + + Zālamana Salu dolārs + Zālamana Salu dolāri + Zālamana Salu dolārs + Zālamana Salu dolāri + + + Seišelu salu rūpija + Seišelu salu rūpijas + Seišelu salu rūpija + Seišelu salu rūpijas + + + Sudānas mārciņa + Sudānas mārciņas + Sudānas mārciņa + Sudānas mārciņas + + + Zviedrijas krona + Zviedrijas kronas + Zviedrijas krona + Zviedrijas kronas + + + Singapūras dolārs + Singapūras dolāri + Singapūras dolārs + Singapūras dolāri + + + Sv.Helēnas salas mārciņa + Sv.Helēnas salas mārciņas + Sv.Helēnas salas mārciņa + Sv.Helēnas salas mārciņas + + + Slovēnijas tolars + + + Slovakijas krona + + + Sjerraleones leone + Sjerraleones leones + Sjerraleones leone + Sjerraleones leones + + + Somālijas šiliņš + Somālijas šiliņi + Somālijas šiliņš + Somālijas šiliņi + + + Surinamas dolārs + Surinamas dolāri + Surinamas dolārs + Surinamas dolāri + + + Surinamas guldenis + + + Dienvidsudānas mārciņa + Dienvidsudānas mārciņas + Dienvidsudānas mārciņa + Dienvidsudānas mārciņas + + + Santome un Prinsipi dobra + Santome un Prinsipi dobras + Santome un Prinsipi dobra + Santome un Prinsipi dobras + + + Salvadoras kolons + + + Sīrijas mārciņa + Sīrijas mārciņas + Sīrijas mārciņa + Sīrijas mārciņas + + + Svazilendas lilangeni + Svazilendas lilangeni + Svazilendas lilangeni + Svazilendas lilangeni + + + Taizemes bāts + Taizemes bāti + Taizemes bāts + Taizemes bāti + ฿ + + + Tadžikistānas somons + Tadžikistānas somoni + Tadžikistānas somons + Tadžikistānas somoni + + + Turkmenistānas manats + + + Turkmenistānas jaunais manats + Turkmenistānas manati + Turkmenistānas jaunais manats + Turkmenistānas manati + + + Tunisijas dinārs + Tunisijas dināri + Tunisijas dinārs + Tunisijas dināri + + + Tongas paanga + Tongas paangas + Tongas paanga + Tongas paangas + + + Turcijas lira + + + Turcijas jaunā lira + Turcijas liras + Turcijas jaunā lira + Turcijas liras + + + Trinidādas un Tobāgo dolārs + Trinidādas un Tobāgo dolāri + Trinidādas un Tobāgo dolārs + Trinidādas un Tobāgo dolāri + + + Taivānas jaunais dolārs + Taivānas jaunie dolāri + Taivānas jaunais dolārs + Taivānas jaunie dolāri + NT$ + + + Tanzānijas šiliņš + Tanzānijas šiliņi + Tanzānijas šiliņš + Tanzānijas šiliņi + + + Ukrainas grivna + Ukrainas grivnas + Ukrainas grivna + Ukrainas grivnas + + + Ugandas šiliņš + Ugandas šiliņi + Ugandas šiliņš + Ugandas šiliņi + + + ASV dolārs + ASV dolāri + ASV dolārs + ASV dolāri + $ + + + Urugvajas peso + Urugvajas peso + Urugvajas peso + Urugvajas peso + + + Uzbekistānas sums + Uzbekistānas sumi + Uzbekistānas sums + Uzbekistānas sumi + + + Venecuēlas bolivārs (1871–2008) + Venecuēlas bolivāri (1871–2008) + Venecuēlas bolivārs (1871–2008) + Venecuēlas bolivāri (1871–2008) + + + Venecuēlas bolivārs + Venecuēlas bolivāri + Venecuēlas bolivārs + Venecuēlas bolivāri + + + Vjetnamas dongi + Vjetnamas dongi + Vjetnamas dongi + Vjetnamas dongi + + + + Vanuatu vatu + Vanuatu vatu + Vanuatu vatu + Vanuatu vatu + + + Samoa tala + Samoa talas + Samoa tala + Samoa talas + + + Centrālāfrikas CFA franks + Centrālāfrikas CFA franki + Centrālāfrikas CFA franks + Centrālāfrikas CFA franki + FCFA + + + sudrabs + unces sudrabs + unces sudrabs + unces sudrabs + + + zelts + unces zelts + unces zelts + unces zelts + + + Eiropas norēķinu vienība EURCO + Eiropas norēķinu vienības EURCO + Eiropas norēķinu vienība EURCO + Eiropas norēķinu vienības EURCO + + + Eiropas naudas vienība + + + Eiropas norēķinu vienība (XBC) + Eiropas norēķinu vienības (XBC) + Eiropas norēķinu vienība (XBC) + Eiropas norēķinu vienības (XBC) + + + Eiropas norēķinu vienība (XBD) + Eiropas norēķinu vienības (XBD) + Eiropas norēķinu vienība (XBD) + Eiropas norēķinu vienības (XBD) + + + Austrumkarību dolārs + Austrumkarību dolāri + Austrumkarību dolārs + Austrumkarību dolāri + EC$ + + + Speciālās aizņēmuma tiesības + + + Eiropas norēķinu vienība + + + Francijas zelta franks + + + Francijas UIC franks + + + Rietumāfrikas CFA franks + Rietumāfrikas CFA franki + Rietumāfrikas CFA franks + Rietumāfrikas CFA franki + CFA + + + pallādijs + unces pallādijs + unces pallādijs + unces pallādijs + + + CFP franks + CFP franki + CFP franks + CFP franki + CFPF + + + platīns + unces platīns + unces platīns + unces platīns + + + Testa valūtas kods + testa valūtas kods + testa valūtas kods + testa valūtas kods + + + Nezināma valūta + (nezināma valūta) + (nezināma valūta) + (nezināma valūta) + + + Jemenas riāls + Jemenas riāli + Jemenas riāls + Jemenas riāli + + + Dienvidāfrikas rands + Dienvidāfrikas randi + Dienvidāfrikas rands + Dienvidāfrikas randi + + + Zambijas kvača (1968–2012) + Zambijas kvačas (1968–2012) + Zambijas kvača (1968–2012) + Zambijas kvačas (1968–2012) + + + Zambijas kvača + Zambijas kvačas + Zambijas kvača + Zambijas kvačas + + + Zimbabves dolārs + + + Zimbabves dolārs (2009) + Zimbabves dollāri (2009) + Zimbabves dollārs (2009) + Zimbabves dollāri (2009) + + + + {0}+ + {0}‒{1} + + + + + + {0}/{1} + + + Brīvās krišanas paātrinājums: {0} + Brīvās krišanas paātrinājums: {0} + Brīvās krišanas paātrinājums: {0} + + + {0} minūtes + {0} minūte + {0} minūtes + + + {0} sekundes + {0} sekunde + {0} sekundes + + + {0} grādi + {0} grāds + {0} grādi + + + {0} akri + {0} akrs + {0} akri + + + {0} hektāri + {0} hektārs + {0} hektāri + + + {0} kvadrātpēdas + {0} kvadrātpēda + {0} kvadrātpēdas + + + {0} kvadrātkilometri + {0} kvadrātkilometrs + {0} kvadrātkilometri + + + {0} kvadrātmetri + {0} kvadrātmetrs + {0} kvadrātmetri + + + {0} kvadrātjūdzes + {0} kvadrātjūdze + {0} kvadrātjūdzes + + + {0} dienas + {0} diena + {0} dienas + + + {0} stundas + {0} stunda + {0} stundas + + + {0} milisekundes + {0} milisekunde + {0} milisekundes + + + {0} minūtes + {0} minūte + {0} minūtes + + + {0} mēneši + {0} mēnesis + {0} mēneši + + + {0} sekundes + {0} sekunde + {0} sekundes + + + {0} nedēļas + {0} nedēļa + {0} nedēļas + + + {0} gadi + {0} gads + {0} gadi + + + {0} centimetri + {0} centimetrs + {0} centimetri + + + {0} pēdas + {0} pēda + {0} pēdas + + + {0} collas + {0} colla + {0} collas + + + {0} kilometri + {0} kilometrs + {0} kilometri + + + {0} gaismas gadi + {0} gaismas gads + {0} gaismas gadi + + + {0} metri + {0} metrs + {0} metri + + + {0} jūdzes + {0} jūdze + {0} jūdzes + + + {0} milimetri + {0} milimetrs + {0} milimetri + + + {0} pikometri + {0} pikometrs + {0} pikometri + + + {0} jardi + {0} jards + {0} jardi + + + {0} grami + {0} grams + {0} grami + + + {0} kilogrami + {0} kilograms + {0} kilogrami + + + {0} unces + {0} unce + {0} unces + + + {0} mārciņas + {0} mārciņa + {0} mārciņas + + + {0} zirgspēki + {0} zirgspēks + {0} zirgspēki + + + {0} kilovati + {0} kilovats + {0} kilovati + + + {0} vati + {0} vats + {0} vati + + + {0} hektopaskāli + {0} hektopaskāls + {0} hektopaskāli + + + {0} dzīvsudraba staba collas + {0} dzīvsudraba staba colla + {0} dzīvsudraba staba collas + + + {0} milibāri + {0} milibārs + {0} milibāri + + + {0} kilometri stundā + {0} kilometrs stundā + {0} kilometri stundā + + + {0} metri sekundē + {0} metrs sekundē + {0} metri sekundē + + + {0} jūdzes stundā + {0} jūdze stundā + {0} jūdzes stundā + + + {0} Celsija grādi + {0} Celsija grāds + {0} Celsija grādi + + + {0} Fārenheita grādi + {0} Fārenheita grāds + {0} Fārenheita grādi + + + {0} kubikkilometri + {0} kubikkilometrs + {0} kubikkilometri + + + {0} kubikjūdzes + {0} kubikjūdze + {0} kubikjūdzes + + + {0} litri + {0} litrs + {0} litri + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0} min + {0} min + {0} min + + + {0} s + {0} s + {0} s + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + + + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + + + {0} mēn. + {0} mēn. + {0} mēn. + + + {0} s + {0} s + {0} s + + + {0} ned. + {0} ned. + {0} ned. + + + {0} g. + {0} g. + {0} g. + + + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + + + {0} ZS + {0} ZS + {0} ZS + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + {0} °C + + + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + {0}G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0}ac + {0}ac + {0}ac + + + {0}ha + {0}ha + {0}ha + + + {0}ft² + {0}ft² + {0}ft² + + + {0}km² + {0}km² + {0}km² + + + {0}m² + {0}m² + {0}m² + + + {0}mi² + {0}mi² + {0}mi² + + + {0}d + {0}d + {0}d + + + {0}h + {0}h + {0}h + + + {0}ms + {0}ms + {0}ms + + + {0} min + {0} min + {0} min + + + {0} mēn. + {0} mēn. + {0} mēn. + + + {0}s + {0}s + {0}s + + + {0} ned. + {0} ned. + {0} ned. + + + {0}g. + {0}g. + {0}g. + + + {0}cm + {0}cm + {0}cm + + + {0}ft + {0}ft + {0}ft + + + {0}in + {0}in + {0}in + + + {0}km + {0}km + {0}km + + + {0}ly + {0}ly + {0}ly + + + {0}m + {0}m + {0}m + + + {0}mi + {0}mi + {0}mi + + + {0}mm + {0}mm + {0}mm + + + {0}pm + {0}pm + {0}pm + + + {0}yd + {0}yd + {0}yd + + + {0}g + {0}g + {0}g + + + {0}kg + {0}kg + {0}kg + + + {0}oz + {0}oz + {0}oz + + + {0}lb + {0}lb + {0}lb + + + {0} ZS + {0} ZS + {0} ZS + + + {0}kW + {0}kW + {0}kW + + + {0}W + {0}W + {0}W + + + {0}hPa + {0}hPa + {0}hPa + + + {0}inHg + {0}inHg + {0}inHg + + + {0}mbar + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + {0}m/s + + + {0}mi/h + {0}mi/h + {0}mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0}km³ + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + {0}mi³ + + + {0}l + {0}l + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} un {1} + {0} un {1} + + + {0}, {1} + {0}, {1} + {0} un {1} + {0} un {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0} un {1} + {0} un {1} + + + + + jā:ja:j + nē:ne:n + + + + diff --git a/library/Zend/Locale/Data/lv_LV.xml b/library/Zend/Locale/Data/lv_LV.xml new file mode 100755 index 000000000..50a43b869 --- /dev/null +++ b/library/Zend/Locale/Data/lv_LV.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mas.xml b/library/Zend/Locale/Data/mas.xml new file mode 100755 index 000000000..45e5586d6 --- /dev/null +++ b/library/Zend/Locale/Data/mas.xml @@ -0,0 +1,751 @@ + + + + + + + + + + + + nkʉtʉ́k ɔ́ɔ̄ lAkan + nkʉtʉ́k ɔ́ɔ̄ lAmhari + nkʉtʉ́k ɔ́ɔ̄ lmarabu + nkʉtʉ́k ɔ́ɔ̄ lBelarusi + nkʉtʉ́k ɔ́ɔ̄ lBulgaria + lnkʉtʉ́k ɔ́ɔ̄ lBengali + nkʉtʉ́k ɔ́ɔ̄ lcheki + nkʉtʉ́k ɔ́ɔ̄ ljerumani + nkʉtʉ́k ɔ́ɔ̄ lgiriki + nkʉtʉ́k ɔ́ɔ̄ nkɨ́resa + nkʉtʉ́k ɔ́ɔ̄ lspania + nkʉtʉ́k ɔ́ɔ̄ lpersia + nkʉtʉ́k ɔ́ɔ̄ faransa + nkʉtʉ́k ɔ́ɔ̄ hausa + nkʉtʉ́k ɔ́ɔ̄ lmoindi + nkʉtʉ́k ɔ́ɔ̄ lhungari + nkʉtʉ́k ɔ́ɔ̄ Indonesia + nkʉtʉ́k ɔ́ɔ̄ Igbo + nkʉtʉ́k ɔ́ɔ̄ ltalian + nkʉtʉ́k ɔ́ɔ̄ japani + nkʉtʉ́k ɔ́ɔ̄ ljana + nkʉtʉ́k ɔ́ɔ̄ lkambodia + nkʉtʉ́k ɔ́ɔ̄ lkorea + Maa + nkʉtʉ́k ɔ́ɔ̄ malay + nkʉtʉ́k ɔ́ɔ̄ lBurma + nkʉtʉ́k ɔ́ɔ̄ lnepali + nkʉtʉ́k ɔ́ɔ̄ lduchi + nkʉtʉ́k ɔ́ɔ̄ lpunjabi + nkʉtʉ́k ɔ́ɔ̄ lpoland + nkʉtʉ́k ɔ́ɔ̄ lportuguese + nkʉtʉ́k ɔ́ɔ̄ lromania + nkʉtʉ́k ɔ́ɔ̄ lrusi + nkʉtʉ́k ɔ́ɔ̄ lruwanda + nkʉtʉ́k ɔ́ɔ̄ lchumari + nkʉtʉ́k ɔ́ɔ̄ lswidi + nkʉtʉ́k ɔ́ɔ̄ ltamil + nkʉtʉ́k ɔ́ɔ̄ ltai + nkʉtʉ́k ɔ́ɔ̄ lturuki + nkʉtʉ́k ɔ́ɔ̄ lkrania + nkʉtʉ́k ɔ́ɔ̄ lurdu + nkʉtʉ́k ɔ́ɔ̄ lvietinamu + nkʉtʉ́k ɔ́ɔ̄ lyoruba + nkʉtʉ́k ɔ́ɔ̄ lchina + nkʉtʉ́k ɔ́ɔ̄ lzulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tansania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Sambia + Simbabwe + + + Metric + + + + [a á à â ā b c d e é è ê ē ɛ g h i í ì î ī ɨ j k l m n {ny} ŋ o ó ò ô ō ɔ p r {rr} s {sh} t u ú ù û ū ʉ {ʉ\u0301} w {wu} y {yi}] + [f q v x z] + [A B C D E Ɛ G H I Ɨ J K L M N Ŋ O Ɔ P R S T U Ʉ W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Dal + Ará + Ɔɛn + Doy + Lép + Rok + Sás + Bɔ́r + Kús + Gís + Shʉ́ + Ntʉ́ + + + Oladalʉ́ + Arát + Ɔɛnɨ́ɔɨŋɔk + Olodoyíóríê inkókúâ + Oloilépūnyīē inkókúâ + Kújúɔrɔk + Mórusásin + Ɔlɔ́ɨ́bɔ́rárɛ + Kúshîn + Olgísan + Pʉshʉ́ka + Ntʉ́ŋʉ́s + + + + + + + Jpi + Jtt + Jnn + Jtn + Alh + Iju + Jmo + + + Jumapílí + Jumatátu + Jumane + Jumatánɔ + Alaámisi + Jumáa + Jumamósi + + + + + 2 + 3 + 4 + 5 + 6 + 7 + 1 + + + + + + + E1 + E2 + E3 + E4 + + + Erobo 1 + Erobo 2 + Erobo 3 + Erobo 4 + + + + + + + Ɛnkakɛnyá + Ɛndámâ + + + + + + Meínō Yɛ́sʉ + Eínō Yɛ́sʉ + + + MY + EY + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ɛnkátá + + + Ɔlárì + + + Ɔlápà + + + Ewíkî + + + Ɛnkɔlɔ́ŋ + Ŋolé + Táatá + Tááisérè + + + Ɛnkɔ́lɔŋ ewíkî + + + Ɛnkakɛnyá/Ɛndámâ + + + Ɛ́sáâ + + + Oldákikaè + + + Sekunde + + + Ɛ́sáâ o inkuapí + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Iropiyianí ɔ́ɔ̄ lmarabu + + + Iropiyianí e Angola + + + Iropiyianí e Austria + + + Iropiyianí e Bahareini + + + Iropiyianí e Burundi + + + Iropiyianí e Botswana + + + Iropiyianí e Kanada + + + Iropiyianí e Kongo + + + Iropiyianí e Uswisi + + + Iropiyianí e China + + + Iropiyianí e Kepuvede + + + Iropiyianí e Jibuti + + + Iropiyianí e Algeria + + + Iropiyianí e Misri + + + Iropiyianí e Eritrea + + + Iropiyianí e Uhabeshi + + + Iropiyianí e yuro + + + Iropiyianí e Nkɨ́resa + + + Iropiyianí e Ghana + + + Iropiyianí e Gambia + + + Iropiyianí e Gine + + + Iropiyianí e India + + + Iropiyianí e Japani + + + Iropiyianí e Kenya + Ksh + + + Iropiyianí e Komoro + + + Iropiyianí e Liberia + + + Iropiyianí e Lesoto + + + Iropiyianí e Libya + + + Iropiyianí e Moroko + + + Iropiyianí e Bukini + + + Iropiyianí e Moritania + + + Iropiyianí e Morisi + + + Iropiyianí e Malawi + + + Iropiyianí e Msumbiji + + + Iropiyianí e Namibia + + + Iropiyianí e Nijeria + + + Iropiyianí e Rwanda + + + Iropiyianí e Saudi + + + Iropiyianí e Shelisheli + + + Iropiyianí e Sudani + + + Iropiyianí e Santahelena + + + Iropiyianí e leoni + + + Iropiyianí e Somalia + + + Iropiyianí e Saotome + + + Iropiyianí e lilangeni + + + Iropiyianí e Tunisia + + + Iropiyianí e Tanzania + + + Iropiyianí e Uganda + + + Iropiyianí ɔ́ɔ̄ lamarekani + + + Iropiyianí e CFA BEAC + + + Iropiyianí e CFA BCEAO + + + Iropiyianí e Afrika Kusini + + + Iropiyianí e Sambia (1968–2012) + + + Iropiyianí e Sambia + + + Iropiyianí e Simbabwe + + + + + + Eé:E + Á'ā:A + + + + diff --git a/library/Zend/Locale/Data/mas_KE.xml b/library/Zend/Locale/Data/mas_KE.xml new file mode 100755 index 000000000..e2adb58a5 --- /dev/null +++ b/library/Zend/Locale/Data/mas_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mas_TZ.xml b/library/Zend/Locale/Data/mas_TZ.xml new file mode 100755 index 000000000..ea1417e7e --- /dev/null +++ b/library/Zend/Locale/Data/mas_TZ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + TSh + + + + diff --git a/library/Zend/Locale/Data/mer.xml b/library/Zend/Locale/Data/mer.xml new file mode 100755 index 000000000..1d54d3d95 --- /dev/null +++ b/library/Zend/Locale/Data/mer.xml @@ -0,0 +1,757 @@ + + + + + + + + + + + + Kĩakani + Kĩamarĩki + Kĩarabu + Kĩbelarusi + Kĩbulugĩria + Kĩbangira + Kĩcheki + Kĩnjamanĩ + Kĩngiriki + Kĩngeretha + Kĩspĩni + Kĩpasia + Kĩfuransi + Kĩhausa + Kĩhĩndi + Kĩhangarĩ + Kĩindonesia + Kĩigbo + Kĩitalĩ + Kĩjapani + Kĩjava + Kĩkambodia + Kĩkorea + Kĩmĩrũ + Kĩmalesia + Kĩburma + Kĩnepali + Kĩholandi + Kĩpunjabu + Kĩpolandi + Kĩpochogo + Kĩromania + Kĩrashia + Kĩrwanda + Kĩsomali + Kĩswideni + Kĩtamilu + Kĩthailandi + Kĩtakĩ + Kĩukirĩni + Kĩurdu + Kĩvietinamu + Kĩyoruba + Kĩchina + Kĩzulu + + + Andora + Falme cia Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Alubania + Armenia + Antili cia Holandi + Angola + Ajentina + Samoa ya Amerika + Austiria + Austrĩlia + Aruba + Azebaijani + Bosnia na Hezegovina + Babadosi + Bangiradeshi + Beronjiamu + Bukinafaso + Bulgaria + Baharini + Burundi + Benini + Bamuda + Brunei + Bolivia + Brazilu + Bahamasi + Butani + Botswana + Belarusi + Belize + Kanada + Nthĩ ya Kidemokrasĩ ya Kongo + Nthĩ ya Afrika gatĩgatĩ + Kongo + Swizilandi + Kodivaa + Aĩrandi cia Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kiuba + Kepuvede + Caipurasi + Nthĩ ya Cheki + Njamanĩ + Jibuti + Denimaki + Dominika + Nthĩ ya Dominika + Angiria + Ekwado + Estonia + Misiri + Eritrea + Spĩni + Ithiopia + Finilandi + Fiji + Aĩrandi cia Falklandi + Mikronesia + Fransi + Gaboni + Ngeretha + Grenada + Jojia + Gwiyana ya Fransi + Ghana + Ngĩbrata + Ngirinilandi + Gambia + Gine + Gwadelupe + Gine ya Iquita + Ngiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Koroashia + Haiti + Hangarĩ + Indonesia + Aelandi + Isiraeli + India + Nthĩ cia Ngeretha gatagatĩ ka ĩria ria Hindi + Iraki + Irani + Aisilandi + Italĩ + Jamaika + Jorondani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Nothi + Korea Saũthi + Kuwĩ ti + Aĩrandi cia Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesotho + Lithuania + Luxembogu + Lativia + Lĩbia + Moroko + Monako + Moldova + Madagasika + Aĩrandi cia Marshal + Macedonia + Mali + Myanima + Mongolia + Aĩrandi cia Mariana ya nothi + Martiniki + Mauritania + Montserrati + Malta + Maurĩtiasi + Modivu + Malawi + Mexiko + Malĩsia + Mozambiki + Namibia + Kalendoia Ĩnjeru + Nija + Aĩrandi cia Norfok + Nijeria + Nikaragwa + Holandi + Norwi + Nepali + Nauru + Niue + Niuzilandi + Omani + Panama + Peru + Polinesia ya Fransi + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Rũtere rwa Westi banki na Gaza cia Palestina + Potogo + Palau + Paragwai + Kata + Riyunioni + Romania + Rashia + Rwanda + Saudi + Airandi Cia Solomon + Shelisheli + Sudani + Swideni + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senego + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Swazilandi + Aĩrandi cia Takĩ na Kaiko + Chadi + Togo + Thaĩlandi + Tajikistani + Tokelau + Timori ya Isti + Tukumenistani + Tunisia + Tonga + Takĩ + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukirĩni + Uganda + Amerika + Urugwĩ + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Aĩrandi cia Virgin cia Ngeretha + Aĩrandi cia Virgin cia Amerika + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika ya Southi + Zambia + Zimbabwe + + + + [a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + JAN + FEB + MAC + ĨPU + MĨĨ + NJU + NJR + AGA + SPT + OKT + NOV + DEC + + + Januarĩ + Feburuarĩ + Machi + Ĩpurũ + Mĩĩ + Njuni + Njuraĩ + Agasti + Septemba + Oktũba + Novemba + Dicemba + + + + + J + F + M + Ĩ + M + N + N + A + S + O + N + D + + + + + + + KIU + MRA + WAI + WET + WEN + WTN + JUM + + + Kiumia + Muramuko + Wairi + Wethatu + Wena + Wetano + Jumamosi + + + + + K + M + W + W + W + W + J + + + + + + + Ĩmwe kĩrĩ inya + Ijĩrĩ kĩrĩ inya + Ithatũ kĩrĩ inya + Inya kĩrĩ inya + + + + + + + + ŨG + + + + + + Mbere ya Kristũ + Nyuma ya Kristũ + + + MK + NK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ĩgita + + + Mwaka + + + Mweri + + + Kiumia + + + Ntukũ + Ĩgoro + Narua + Rũjũ + + + Ntukũ ya ngũgĩ + + + Mũthenya + + + Ĩthaa + + + Ndagika + + + Sekondi + + + Gũntũ kwa thaa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dirham ya Falme cia Kiarabu + + + Kwanza ya Angola + + + Dola ya Austrĩlia + + + Dinari ya Baharini + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Swisilandi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Anjĩria + + + Paũndi ya Misri + + + Nakfa ya Eritrea + + + Bĩrũ ya Ithiopia + + + Yuro + + + Paũndi ya Ngeretha + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya japani + + + Shilingi ya Kenya + Ksh + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariarĩ ya Bukini + + + Ugwiya ya Mauritania + + + Rupia ya Maurĩtiasi + + + Kwacha ya Malawi + + + Metikali ya Mozambĩkĩ + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudi Arĩbia + + + Rupia ya Shelisheli + + + Paũndi ya Sudani + + + Paũndi ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + + + Shilingi ya Uganda + + + Dola ya Amerika + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika ya Sauthi + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Ii:I + Arĩ:A + + + + diff --git a/library/Zend/Locale/Data/mer_KE.xml b/library/Zend/Locale/Data/mer_KE.xml new file mode 100755 index 000000000..b6f63827f --- /dev/null +++ b/library/Zend/Locale/Data/mer_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/metaZones.xml b/library/Zend/Locale/Data/metaZones.xml new file mode 100755 index 000000000..a7d3c3ecb --- /dev/null +++ b/library/Zend/Locale/Data/metaZones.xml @@ -0,0 +1,1849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + America/Santiago + Asia/Shanghai + Europe/Berlin + America/Guayaquil + Europe/Madrid + Pacific/Majuro + Asia/Kuala_Lumpur + Pacific/Auckland + Europe/Lisbon + Europe/Kiev + Asia/Tashkent + + diff --git a/library/Zend/Locale/Data/mfe.xml b/library/Zend/Locale/Data/mfe.xml new file mode 100755 index 000000000..d62689512 --- /dev/null +++ b/library/Zend/Locale/Data/mfe.xml @@ -0,0 +1,749 @@ + + + + + + + + + + + + akan + amarik + arab + bieloris + bilgar + bengali + tchek + alman + grek + angle + espagnol + persan + franse + haoussa + hindi + hongrwa + indonezien + igbo + italien + zapone + zavane + khmer, santral + koreen + kreol morisien + male + birman + nepale + olande + penjabi + polone + portige + roumin + ris + rwanda + somali + swedwa + tamoul + thaï + tirk + ikrenien + ourdou + vietnamien + yoruba + sinwa, mandarin + zoulou + + + Andor + Emira arab ini + Afganistan + Antigua-ek-Barbuda + Anguilla + Albani + Armeni + Antiy neerlande + Angola + Larzantinn + Samoa amerikin + Lostris + Lostrali + Aruba + Azerbaïdjan + Bosni-Herzegovinn + Barbad + Banglades + Belzik + Burkina Faso + Bilgari + Bahreïn + Burundi + Benin + Bermid + Brunei + Bolivi + Brezil + Bahamas + Boutan + Botswana + Belaris + Beliz + Kanada + Repiblik demokratik Kongo + Repiblik Lafrik Santral + Kongo + Laswis + Côte d'Ivoire + Zil Cook + Shili + Kamerounn + Lasinn + Kolonbi + Costa Rica + Cuba + Kap-Ver + Cyprus + Repiblik Chek + Almagn + Djibouti + Dannmark + Dominik + Repiblik dominikin + Alzeri + Ekwater + Estoni + Lezipt + Erythre + Lespagn + Letiopi + Finland + Fidji + Zil malwinn + Mikronezi + Lafrans + Gabon + United Kingdom + Grenad + Zeorzi + Gwiyann franse + Ghana + Zibraltar + Greenland + Gambi + Gine + Guadloup + Gine ekwatoryal + Gres + Guatemala + Guam + Gine-Bisau + Guyana + Honduras + Kroasi + Ayti + Ongri + Indonezi + Irland + Izrael + Lenn + Teritwar Britanik Losean Indien + Irak + Iran + Island + Itali + Zamaik + Zordani + Zapon + Kenya + Kirghizistan + Kambodj + Kiribati + Komor + Saint-Christophe-ek-Niévès + Lakore-dinor + Lakore-disid + Koweit + Zil Kayman + Kazakstan + Laos + Liban + Sainte-Lucie + Liechtenstein + Sri Lanka + Liberia + Lezoto + Lituani + Luxembourg + Letoni + Libi + Marok + Monako + Moldavi + Madagaskar + Zil Marshall + Masedwann + Mali + Myanmar + Mongoli + Zil Maryann dinor + Martinik + Moritani + Montsera + Malt + Moris + Maldiv + Malawi + Mexik + Malezi + Mozambik + Namibi + Nouvel-Kaledoni + Nizer + Lil Norfolk + Nizeria + Nicaragua + Oland + Norvez + Nepal + Nauru + Niowe + Nouvel Zeland + Oman + Panama + Perou + Polinezi franse + Papouazi-Nouvel-Gine + Filipinn + Pakistan + Pologn + Saint-Pierre-ek-Miquelon + Pitcairn + Porto Rico + Teritwar Palestinn + Portigal + Palau + Paraguay + Katar + Larenion + Roumani + Larisi + Rwanda + Larabi Saoudit + Zil Salomon + Sesel + Soudan + Laswed + Singapour + Sainte-Hélène + Sloveni + Slovaki + Sierra Leone + Saint-Marin + Senegal + Somali + Surinam + São Tome-ek-Prínsip + Salvador + Lasiri + Swaziland + Zil Tirk ek Caïcos + Tchad + Togo + Thayland + Tadjikistan + Tokelau + Timor oriantal + Turkmenistan + Tinizi + Tonga + Tirki + Trinite-ek-Tobago + Tuvalu + Taiwan + Tanzani + Ikrenn + Ouganda + Lamerik + Uruguay + Ouzbekistan + Lata Vatikan + Saint-Vincent-ek-Grenadines + Venezuela + Zil vierz britanik + Zil Vierz Lamerik + Vietnam + Vanuatu + Wallis-ek-Futuna + Samoa + Yemenn + Mayot + Sid-Afrik + Zambi + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w x y z] + [A B C D E F G H I J K L M N O P R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + zan + fev + mar + avr + me + zin + zil + out + sep + okt + nov + des + + + zanvie + fevriye + mars + avril + me + zin + zilye + out + septam + oktob + novam + desam + + + + + z + f + m + a + m + z + z + o + s + o + n + d + + + + + + + dim + lin + mar + mer + ze + van + sam + + + dimans + lindi + mardi + merkredi + zedi + vandredi + samdi + + + + + d + l + m + m + z + v + s + + + + + + + T1 + T2 + T3 + T4 + + + 1e trimes + 2em trimes + 3em trimes + 4em trimes + + + + + + avan Zezi-Krist + apre Zezi-Krist + + + av. Z-K + ap. Z-K + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Lepok + + + Lane + + + Mwa + + + Semenn + + + Zour + Yer + Zordi + Demin + + + Zour lasemenn + + + Peryod dan lazourne + + + Ler + + + Minit + + + Segonn + + + Peryod letan + + + + + +   + + + + dirham Emira arab ini + + + kwanza angole + + + dolar ostralien + + + dinar bahreïn + + + fran burunde + + + pula ya botswane + + + dolar kanadien + + + fran kongole + + + fran swis + + + yuan renminbi sinwa + + + eskudo kapverdien + + + fran djiboutien + + + dinar alzerien + + + liv ezipsien + + + nafka erythreen + + + birr etiopien + + + euro + + + liv sterlin + + + sedi ganeen + + + dalasi gambien + + + fran gineen + + + roupi + + + yen zapone + + + shiling kenyan + + + fran komorien + + + dolar liberien + + + loti lezoto + + + dinar libien + + + dirham marokin + + + fran malgas + + + ouguiya moritanien + + + roupi morisien + Rs + + + kwacha malawit + + + metikal mozanbikin + + + dolar namibien + + + naira nizerian + + + fran rwande + + + rial saoudien + + + roupi seselwa + + + dinar soudane + + + liv soudane + + + liv Sainte-Hélène + + + leonn Sierra-Leone + + + shilingi somalien + + + dobra santomeen + + + lilangeni swazi + + + dinar tinizien + + + shiling tanzanien + + + shiling ougande + + + dolar amerikin + + + fran CFA (BEAC) + + + fran CFA (BCEAO) + + + rand sid-afrikin + + + kwacha zanbien (1968–2012) + + + kwacha zanbien + + + dolar zimbawe + + + + + + Wi:W + Non:N + + + + diff --git a/library/Zend/Locale/Data/mfe_MU.xml b/library/Zend/Locale/Data/mfe_MU.xml new file mode 100755 index 000000000..d80ed8b31 --- /dev/null +++ b/library/Zend/Locale/Data/mfe_MU.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mg.xml b/library/Zend/Locale/Data/mg.xml new file mode 100755 index 000000000..24ca32ddb --- /dev/null +++ b/library/Zend/Locale/Data/mg.xml @@ -0,0 +1,750 @@ + + + + + + + + + + + + Akan + Amharika + Arabo + Bielorosy + Biolgara + Bengali + Tseky + Alemanina + Grika + Anglisy + Espaniola + Persa + Frantsay + haoussa + hindi + hongroà + Indonezianina + igbo + Italianina + Japoney + Javaney + khmer + Koreanina + Malagasy + Malay + Birmana + Nepale + Holandey + Penjabi + Poloney + Portiogey + Romanianina + Rosianina + Roande + Somalianina + Soisa + Tamoila + Taioaney + Tiorka + Okrainianina + Ordò + Vietnamianina + Yôrobà + Sinoa, Mandarin + Zolò + + + Andorra + Emirà Arabo mitambatra + Afghanistan + Antiga sy Barboda + Anguilla + Albania + Armenia + Vondronosy karaiba holandey + Angola + Arzantina + Samoa amerikanina + Aotrisy + Aostralia + Arobà + Azerbaidjan + Bosnia sy Herzegovina + Barbady + Bangladesy + Belzika + Borkina Faso + Biolgaria + Bahrain + Borondi + Benin + Bermioda + Brunei + Bolivia + Brezila + Bahamas + Bhotana + Botsoana + Belarosy + Belize + Kanada + Repoblikan'i Kongo + Repoblika Ivon'Afrika + Kôngô + Soisa + Côte d’Ivoire + Nosy Kook + Shili + Kamerona + Sina + Kôlômbia + Kosta Rikà + Kiobà + Nosy Cap-Vert + Sypra + Repoblikan'i Tseky + Alemaina + Djiboti + Danmarka + Dominika + Repoblika Dominikanina + Alzeria + Ekoatera + Estonia + Ejypta + Eritrea + Espaina + Ethiopia + Finlandy + Fidji + Nosy Falkand + Mikrônezia + Frantsa + Gabon + Angletera + Grenady + Zeorzia + Guyana frantsay + Ghana + Zibraltara + Groenland + Gambia + Ginea + Goadelopy + Guinea Ekoatera + Gresy + Goatemalà + Guam + Giné-Bisao + Guyana + Hondiorasy + Kroasia + Haiti + Hongria + Indonezia + Irlandy + Israely + Indy + Faridranomasina indiana britanika + Irak + Iran + Islandy + Italia + Jamaïka + Jordania + Japana + Kenya + Kiordistan + Kambôdja + Kiribati + Kômaoro + Saint-Christophe-et-Niévès + Korea Avaratra + Korea Atsimo + Kôeity + Nosy Kayman + Kazakhstan + Laôs + Libana + Sainte-Lucie + Listenstein + Sri Lanka + Liberia + Lesotho + Litoania + Lioksamboro + Letonia + Libya + Marôka + Mônakô + Môldavia + Madagasikara + Nosy Marshall + Makedonia + Mali + Myanmar + Môngôlia + Nosy Mariana Atsinanana + Martinika + Maoritania + Montserrat + Malta + Maorisy + Maldiva + Malaoì + Meksika + Malaizia + Mozambika + Namibia + Nouvelle-Calédonie + Niger + Nosy Norfolk + Nizeria + Nikaragoà + Holanda + Nôrvezy + Nepala + Naorò + Nioé + Nouvelle-Zélande + Oman + Panama + Peroa + Polynezia frantsay + Papouasie-Nouvelle-Guinée + Filipina + Pakistan + Pôlôna + Saint-Pierre-et-Miquelon + Pitkairn + Pôrtô Rikô + Palestina + Pôrtiogala + Palao + Paragoay + Katar + Larenion + Romania + Rosia + Roanda + Arabia saodita + Nosy Salomona + Seyshela + Sodan + Soedy + Singaporo + Sainte-Hélène + Slovenia + Slovakia + Sierra Leone + Saint-Marin + Senegal + Somalia + Sorinam + São Tomé-et-Príncipe + El Salvador + Syria + Soazilandy + Nosy Turks sy Caïques + Tsady + Togo + Thailandy + Tajikistan + Tokelao + Timor Atsinanana + Torkmenistan + Tonizia + Tongà + Torkia + Trinidad sy Tobagô + Tovalò + Taioana + Tanzania + Okraina + Oganda + Etazonia + Orogoay + Ozbekistan + Firenen'i Vatikana + Saint-Vincent-et-les Grenadines + Venezoelà + Nosy britanika virijiny + Nosy Virijiny Etazonia + Vietnam + Vanoatò + Wallis sy Futuna + Samoa + Yemen + Mayôty + Afrika Atsimo + Zambia + Zimbaboe + + + + [a à â b d e é è ê ë f g h i ì î ï j k l m n ñ o ô p r s t v y z] + [c q u w x] + [A B D E F G H I J K L M N O P R S T V Y Z] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + E d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mar + Apr + Mey + Jon + Jol + Aog + Sep + Okt + Nov + Des + + + Janoary + Febroary + Martsa + Aprily + Mey + Jona + Jolay + Aogositra + Septambra + Oktobra + Novambra + Desambra + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Alah + Alats + Tal + Alar + Alak + Zom + Asab + + + Alahady + Alatsinainy + Talata + Alarobia + Alakamisy + Zoma + Asabotsy + + + + + A + A + T + A + A + Z + A + + + + + + + T1 + T2 + T3 + T4 + + + Telovolana voalohany + Telovolana faharoa + Telovolana fahatelo + Telovolana fahefatra + + + + + + Alohan'i JK + Aorian'i JK + + + BC + AD + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + E d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Era + + + Taona + + + Volana + + + Herinandro + + + Andro + Omaly + Anio + Rahampitso + + + AM/PM + + + Ora + + + Minitra + + + Segondra + + + + + + + + ¤#,##0.00 + + + + + + Dirham + + + kwanza angoley + + + Dolara aostralianina + + + dinar bahreïni + + + Farantsa Borondi + + + Pola botsoaney + + + Dôlara Kanadianina + + + Farantsa kôngôley + + + Farantsa soisa + + + Yoan sinoa Renminbi + + + Escudo + + + Farantsa Djibotianina + + + Dinara alzerianina + + + vola venty ejipsiana + + + Nakfà Eritreanina + + + Bir etiopianina + + + Eoro + + + livre sterling + + + cédi + + + Dalasi gambianina + + + Farantsa Gineanina + + + Ropia Indianina + + + Yen Japoney + + + Shilling kenianina + + + Farantsa Komorianina + + + Dôlara Liberianina + + + Loti + + + Dinara Libyanina + + + Dirham marokianina + + + Ariary + Ar + + + Ouguiya moritanianina + + + Ropia maorisianina + + + kwacha malawite + + + Metikaly + + + Dolara namibianina + + + Naira nigerianina + + + Farantsa Roande + + + Rial saodianina + + + Ropia Seysheloà + + + Dinara Sodaney + + + livre soudanaise (1956–2007) + + + livre de Sainte-Hélène + + + Leone + + + Shilling somalianina + + + Dobra + + + Lilangeni + + + Dinar tonizianina + + + Shilling tanzanianina + + + Shilling ogandianina + + + Dolara amerikanina + + + Farantsa CFA (BEAC) + + + Farantsa CFA (BCEAO) + + + Rand afrikanina tatsimo + + + Kwacha zambianina (1968–2012) + + + Kwacha zambianina + + + Dôlara Zimbaboeanina + + + + + + Eny:E + Tsia:T + + + + diff --git a/library/Zend/Locale/Data/mg_MG.xml b/library/Zend/Locale/Data/mg_MG.xml new file mode 100755 index 000000000..f0615590d --- /dev/null +++ b/library/Zend/Locale/Data/mg_MG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mgh.xml b/library/Zend/Locale/Data/mgh.xml new file mode 100755 index 000000000..eeeaedfe7 --- /dev/null +++ b/library/Zend/Locale/Data/mgh.xml @@ -0,0 +1,479 @@ + + + + + + + + + + + + Ikan + Imhari + Iarabu + Ibelausi + Ibulgaria + Ibangla + Icheki + Ijerimani + Igiriki + Ingilishi + Ihispaniola + Iajemi + Ifaransa + Ihausa + Ihindi + Ihungari + Igbo + Italiano + Ijapani + Ijava + Ikambodia + Ikorea + Makua + Imalesia + Iburma + Inepali + Iholanzi + Ipunjabi + Ipolandi + Nreno + Iromania + Irisi + Inyaranda + Isomali + Iswidi + Itamil + Itailandi + Ituruki + Iukran + Ihurdu + Ivyetinamu + Iyoruba + Ichina + Izulu + + + Uandora + Ufugustani + Ualbania + Usamoa ya Marekani + Uazabajani + Urundi + Ubelin + Ukanada + Ukongo + Uswisi + Ukodiva + Uchile + Uchina + Ukolombia + Ukuba + Ukuprosi + Ucheki + Ujibuti + Udenimaka + Udominika + Alujeria + Umisiri + Uriterea + Uhispania + Uhabeshi + Ufini + Ufiji + Ufaransa + Ugaboni + Ugrenada + Ujojia + Ufaransa yo Gwaya + Ugana + Ujibralta + Ugrinlandi + Ugambia + Ugine + Ugwadelupe + Ugwatemala + Ugwam + Uginebisau + Uguyana + Uhondurasi + Ukorasia + Uhaiti + Uhungaria + Undonesia + Uayalandi + Uisraeli + Uhindini + Wiraki + Italia + Ujamaika + Uyordani + Ujapani + Ukenya + Ukambodia + Ukomoro + Usantakitzi na Nevis + Ukorea Kaskazini + Ukorea Kusini + Ukazakistani + Ulebanoni + Usantalusia + Ushenteni + Usirilanka + Uliberia + Ulesoto + Utwania + Usembaji + Ulativia + Ulibya + Umantegro + Ubukini + Umasedonia + Umalawi + Umozambiki + Unijeri + Unijeria + Unorwe + Uomani + Upanama + Uperuu + Ufaransa yo Potina + Upapua + Ufilipino + Upakistani + Upolandi + Usantapieri na Mikeloni + Upitkairni + Upwetoriko + Paragwai + Ukatari + Uriyunioni + Uromania + Urwanda + Usaudi + Ushelisheli + Usudani + Uswidi + Usingapoo + Usantahelena + Uslovenia + Uslovakia + Usamarino + Usenegali + Usomalia + Usurinamu + Usao Tome na Principe + Usalavado + Usiria + Uswazi + Uchadi + Utogo + Utailandi + Ujikistani + Utokelau + Utimo Mashariki + Uturukimenistani + Utunisia + Utonga + Utuki + Utrinidad na Tobago + Utuvalu + Utanzania + Umarekani + Uvatikani + Usantavisenti na Grenadini + Uvenezuela + Uvietinamu + Uvanuatu + Uwalis na Futuna + Usamoa + Uyemeni + Afrika du Sulu + Uzambia + Uzimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, M/d + LLL + MMM d + E, MMM d + m:ss + y + M/y + d/M/y + E, M/d/y + MMM y + MMM d, y + E, MMM d, y + QQQ y + QQQQ y + + + + + + + + Kwa + Una + Rar + Che + Tha + Moc + Sab + Nan + Tis + Kum + Moj + Yel + + + Mweri wo kwanza + Mweri wo unayeli + Mweri wo uneraru + Mweri wo unecheshe + Mweri wo unethanu + Mweri wo thanu na mocha + Mweri wo saba + Mweri wo nane + Mweri wo tisa + Mweri wo kumi + Mweri wo kumi na moja + Mweri wo kumi na yel'li + + + + + K + U + R + C + T + M + S + N + T + K + M + Y + + + + + + + Sab + Jtt + Jnn + Jtn + Ara + Iju + Jmo + + + Sabato + Jumatatu + Jumanne + Jumatano + Arahamisi + Ijumaa + Jumamosi + + + + + S + J + J + J + A + I + J + + + + + + + wichishu + mchochil'l + + + + + + Hinapiya yesu + Yopia yesu + + + HY + YY + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, M/d + LLL + MMM d + E, MMM d + m:ss + y + M/y + d/M/y + E, M/d/y + MMM y + MMM d, y + E, MMM d, y + QQQ y + QQQQ y + + + + + + + kal'lai + + + yaka + + + mweri + + + iwiki mocha + + + nihuku + n'chana + lel'lo + me'llo + + + nihuku no mwisho wa wiki + + + isaa + + + idakika + + + isekunde + + + + + + , + . + + + + MTn + + + + + + eyo:e + akin'tuna:a + + + diff --git a/library/Zend/Locale/Data/mgh_MZ.xml b/library/Zend/Locale/Data/mgh_MZ.xml new file mode 100755 index 000000000..b2be9f5f4 --- /dev/null +++ b/library/Zend/Locale/Data/mgh_MZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mgo.xml b/library/Zend/Locale/Data/mgo.xml new file mode 100755 index 000000000..87dc32c79 --- /dev/null +++ b/library/Zend/Locale/Data/mgo.xml @@ -0,0 +1,539 @@ + + + + + + + + + + + + metaʼ + ngam tisɔʼ + + + + + + + + Kamalun + aba aben tisɔ̀ + + + ngàb mə̀kala + inu + + + {0} + {0} + {0} + + + + [a à b {ch} d e è ə {ə\u0300} f g {gh} i ì j k m n ŋ o ò ɔ {ɔ\u0300} p r s t u ù w y z ʼ] + [c h l q v x] + [A B {CH} D E Ə F G {GH} I J K M N Ŋ O Ɔ P R S T U W Y Z ʼ] + [, ; \: ! ? . ' ‘ ’ " “ ”] + {0}… + …{0} + {0}…{1} + ? + + + + + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + + + {0} – {1} + + + + + + + + mbegtug + imeg àbùbì + imeg mbəŋchubi + iməg ngwə̀t + iməg fog + iməg ichiibɔd + iməg àdùmbə̀ŋ + iməg ichika + iməg kud + iməg tèsiʼe + iməg zò + iməg krizmed + + + M1 + A2 + M3 + N4 + F5 + I6 + A7 + I8 + K9 + 10 + 11 + 12 + + + iməg mbegtug + imeg àbùbì + imeg mbəŋchubi + iməg ngwə̀t + iməg fog + iməg ichiibɔd + iməg àdùmbə̀ŋ + iməg ichika + iməg kud + iməg tèsiʼe + iməg zò + iməg krizmed + + + + + mbegtug + imeg àbùbì + imeg mbəŋchubi + iməg ngwə̀t + iməg fog + iməg ichiibɔd + iməg àdùmbə̀ŋ + iməg ichika + iməg kud + iməg tèsiʼe + iməg zò + iməg krizmed + + + M1 + A2 + M3 + N4 + F5 + I6 + A7 + I8 + K9 + 10 + 11 + 12 + + + iməg mbegtug + imeg àbùbì + imeg mbəŋchubi + iməg ngwə̀t + iməg fog + iməg ichiibɔd + iməg àdùmbə̀ŋ + iməg ichika + iməg kud + iməg tèsiʼe + iməg zò + iməg krizmed + + + + + + + Aneg 1 + Aneg 2 + Aneg 3 + Aneg 4 + Aneg 5 + Aneg 6 + Aneg 7 + + + A1 + A2 + A3 + A4 + A5 + A6 + A7 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + Aneg 1 + Aneg 2 + Aneg 3 + Aneg 4 + Aneg 5 + Aneg 6 + Aneg 7 + + + + + Aneg 1 + Aneg 2 + Aneg 3 + Aneg 4 + Aneg 5 + Aneg 6 + Aneg 7 + + + A1 + A2 + A3 + A4 + A5 + A6 + A7 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + Aneg 1 + Aneg 2 + Aneg 3 + Aneg 4 + Aneg 5 + Aneg 6 + Aneg 7 + + + + + + + AM + PM + + + + + + BCE + CE + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + + + {0} – {1} + + + + + + + Era + + + fituʼ + + + iməg + + +{0} m + +{0} m + + + -{0} m + -{0} m + + + + nkap + + + anəg + ikwiri + tèchɔ̀ŋ + isu + isu ywi + + +{0} d + +{0} d + + + -{0} d + -{0} d + + + + anəg agu nkap + + + Dayperiod + + + Hour + + +{0} h + +{0} h + + + -{0} h + -{0} h + + + + Minute + + +{0} min + +{0} min + + + -{0} min + -{0} min + + + + Second + + +{0} s + +{0} s + + + -{0} s + -{0} s + + + + Zone + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} + {1} ({0}) + + + + latn + + latn + + + . + , + ; + % + + + - + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + shirè + FCFA + + + iku ikap mɔʼɔ + + + + + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + + + + èè + ideg. + + + + diff --git a/library/Zend/Locale/Data/mgo_CM.xml b/library/Zend/Locale/Data/mgo_CM.xml new file mode 100755 index 000000000..8a855c63a --- /dev/null +++ b/library/Zend/Locale/Data/mgo_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mk.xml b/library/Zend/Locale/Data/mk.xml new file mode 100755 index 000000000..597ebffd8 --- /dev/null +++ b/library/Zend/Locale/Data/mk.xml @@ -0,0 +1,5581 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + афар + апхаски + акинески + аколи + адангме + адиге + авестан + африканс + африхили + агемски + аину + акан + акадијски + алеут + јужен алтај + амхарски + арагонески + стар англиски + ангика + арапски + литературен арапски + арамејски + арокенски + арапахо + аравак + асамски + асу + астуриски + аварски + авади + ајмара + азербејџански + башкирски + балучи + балинезе + баса + бамунски + гомала + белоруски + беха + бемба + бена + бафут + бугарски + бојпури + бислама + бикол + бини + ком + сиксика + бамбара + бенгалски + тибетски + бретонски + брај + бодо + босански + акосе + буријат + буџински + булу + блин + медумба + каталонски + кадо + кариб + кајуга + ацам + чеченски + себуано + чига + чаморо + чибча + чагатај + чуук + мари + жаргон чинук + чокто + чипујан + чироки + чејенски + сорански курдски + корзикански + коптски + кри + кримско турски + чешки + кашубиски + црковнословенски + чувашки + велшки + дански + дакота + даргва + таита + германски + германски (во Австрија) + германски (во Швајцарија) + делавер + славски + догриб + динка + зарма + догри + долносорбиски + дуала + среднохоландски + дивехи + јола-фоњи + џула + џонга + дазага + ембу + еве + ефик + староегипетски + екајук + грчки + еламит + англиски + англиски (во Австралија) + англиски (во Канада) + англиски (во Велика Британија) + англиски (во ОК) + американски англиски + англиски (во САД) + средноанглиски + есперанто + шпански + шпански (во Латинска Америка) + шпански (во Европа) + шпански (во Мексико) + естонски + баскиски + евондо + персиски + фанг + фанти + фула + фински + филипински + фиџиски + фарски + фон + француски + француски (во Канада) + француски (во Швајцарија) + среднофранцуски + стар француски + северен фризиски + источен фризиски + фрулијански + западнофризиски + ирски + га + гајо + гбаја + шкотско галски + гиз + гилбертански + галициски + среден горногермански + гварански + стар високогермански + гонди + горонтало + готски + гребо + старогрчки + швајцарски германски + гуџарати + гуси + манкс + гвишин + хауса + хајда + хавајски + хебрејски + хинди + хилигајнон + хитите + хмонг + хири моту + хрватски + горносорбиски + хаитски + унгарски + хупа + ерменски + хереро + интерлингва + ибан + ибибио + индонезиски + интерлинг + игбо + сичуан ји + инупијак + илоко + ингуш + идо + исландски + италијански + инуктитут + јапонски + лојбански + нгомба + мачаме + еврејско персиски + еврејско арапски + јавански + грузиски + кара калпак + кабиле + кашин + жжи + камба + кави + кабардиски + канембу + тјап + маконде + кабувердиану + коро + конго + каси + котанески + којра чиини + кикују + куањама + казакстански + како + калалисут + каленџин + кмерски + кимбунду + каннада + корејски + конкани + козрејски + кпеле + канури + карашај-балкар + карелијски + курук + кашмирски + шамбала + бафија + колоњски + курдски + кумик + кутенајски + коми + корнуолски келтски + киргистански + латински + ладино + ланги + ланда + ламба + луксембуршки + лежгијски + ганда + лимбуршки + лингала + лаошки + монго + лози + литвански + луба-катанга + луба-лулуа + луизено + лунда + луо + лушајски + луја + латвиски + мадурески + мафа + магахи + маитхили + макасарски + мандинго + масаи + маба + мокша + мандар + мендески + меру + морисјен + малгашки + средноирски + макува-мито + мета + маршалски + маорски + микмек + минанкабау + македонски + малајалам + монголски + манчу + манипури + мохак + моси + марати + малезиски + малтешки + мунданг + повеќе јазици + крик + мирандески + марвари + бурмански + мјене + ержа + науру + неаполски + нама + норвешки букмол + северен ндебеле + долногермански + непалски + невари + ндонга + нијас + најуан + холандски + холандски (во Белгија) + квазио + норвешки нинорск + нгиембун + норвешки + ногај + стар норски + нко + јужен ндебелески + северен сото + нуер + навахо + класичен невари + њања + њамвези + њанколе + њоро + нзима + окситански + оџибва + оромо + орија + осетиски + осаж + отомански турски + панџаби + пангасинан + палависки + пампанга + папиаменто + палауански + стар персиски + феникиски + пали + полски + понпејански + стар провенчал + паштунски + португалски + португалски (во Бразил) + португалски (во Европа) + кечуански + раџастански + рапануи + раротонган + реторомански + рундиски + романски + молдавски + ромбо + ромски + рутски + руски + влашки + кињарванда + руа + санскрит + сандаве + јакутски + самариќански арамејски + самбуру + сасак + сантали + нгембеј + сангу + сардиниски + сицилијански + скоц + синди + северен самиски + сенека + сена + селкап + којраборо сени + санго + стар ирски + српско-хрватски + тачелхит + шан + чадски арапски + синхалски + сидамо + словачки + словенечки + самоански + јужен сами + луле сами + инари сами + сколт сами + шона + сонинке + сомалиски + согдијен + албански + српски + срански тонго + серер + свати + сахо + сесото + сундски + сукума + сусу + сумериски + шведски + свахили + коморијански + конго свахили + класичен сиријак + сиријак + тамилски + телугу + тимне + тесо + терено + тетум + таџикистански + тајландски + тигриња + тигре + тив + туркменски + токелау + тагалог + клингонски + тлингит + тамашек + цвана + тонгански + њаса тонга + ток писин + турски + тароко + цонга + цимшијански + татарски + тумбука + тувалу + тви + тазавак + тахитски + тувинијански + централно марокански тамазитски + удмурт + ујгурски + угаритски + украински + умбунду + непознат јазик + урду + узбекистански + ваи + венда + виетнамски + волапјок + вотски + вунџо + валунски + валсер + валамо + вареј + вашо + волофски + калмик + коса + сога + јао + јапезе + јенгбен + јемба + јидски + јорупски + кантонски + жуанг + запотек + блисимболс + зенага + стандарден марокански тамазигтски + кинески + поедноставен кинески + традиционален кинески + зулу + зуни + без лингвистичка содржина + заза + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Свет + Африка + Северна Америка + Јужна Америка + Океанија + Западна Африка + Централна Америка + Источна Африка + Северна Африка + Средна Африка + Јужна Африка + Америки + Северна континентална Америка + Кариби + Источна Азија + Јужна Азија + Југоисточна Азија + Јужна Европа + Австралазија + Меланезија + Микронезиски регион + Полинезија + Азија + Централна Азија + Западна Азија + Европа + Источна Европа + Северна Европа + Западна Европа + Латинска Америка + Остров Асенсион + Андора + Обединети Арапски Емирати + Авганистан + Антигва и Барбуда + Ангвила + Албанија + Ерменија + Холандски Антили + Ангола + Антарктик + Аргентина + Американска Самоа + Австрија + Австралија + Аруба + Оландски острови + Азербејџан + Босна и Херцеговина + Барбадос + Бангладеш + Белгија + Буркина Фасо + Бугарија + Бахреин + Бурунди + Бенин + Сент Бартоломеј + Бермуди + Брунеј + Боливија + Карипска Холандија + Бразил + Бахами + Бутан + Остров Буве + Боцвана + Белорусија + Белизе + Канада + Кокосови (Килиншки) Острови + Конго - Киншаса + Конго (Демократска Република Конго) + Централноафриканска Република + Конго - Бразавил + Конго (Република) + Швајцарија + Брегот на Слоновата Коска + Брег на Слонова Коска + Кукови Острови + Чиле + Камерун + Кина + Колумбија + Остров Клипертон + Костарика + Куба + Зелен ’Рт + Курасао + Божиќен Остров + Кипар + Република Чешка + Германија + Диего Гарсија + Џибути + Данска + Доминика + Доминиканска Република + Алжир + Сеута и Мелиља + Еквадор + Естонија + Египет + Западна Сахара + Еритреја + Шпанија + Етиопија + Европска унија + Финска + Фиџи + Фолкландски Острови + Фолкландски Острови (Малвински Острови) + Микронезија + Фарски Острови + Франција + Габон + Обединето Кралство + ОК + Гренада + Грузија + Француска Гвајана + Гернзи + Гана + Гибралтар + Гренланд + Гамбија + Гвинеја + Гвадалупе + Екваторска Гвинеја + Грција + Јужна Грузија и Јужни Сендвич Острови + Гватемала + Гвам + Гвинеја-Бисау + Гвајана + Хонг Конг С.А.Р Кина + Хонг Конг + Остров Херд и Острови Макдоналд + Хондурас + Хрватска + Хаити + Унгарија + Канарски острови + Индонезија + Ирска + Израел + Остров Ман + Индија + Британска Индоокеанска Територија + Ирак + Иран + Исланд + Италија + Џерси + Јамајка + Јордан + Јапонија + Кенија + Киргистан + Камбоџа + Кирибати + Коморски Острови + Сент Кристофер и Невис + Северна Кореја + Јужна Кореја + Кувајт + Кајмански Острови + Казахстан + Лаос + Либан + Света Луција + Лихтенштајн + Шри Ланка + Либерија + Лесото + Литванија + Луксембург + Латвија + Либија + Мароко + Монако + Молдавија + Црна Гора + Сент Мартин + Мадагаскар + Маршалски Острови + Македонија + Република Македонија + Мали + Мјанмар (Бурма) + Монголија + Макао С.А.Р Кина + Макао + Северни Маријански Острови + Мартиник + Мавританија + Монсерат + Малта + Маврициус + Малдиви + Малави + Мексико + Малезија + Мозамбик + Намибија + Нова Каледонија + Нигер + Норфолшки Остров + Нигерија + Никарагва + Холандија + Норвешка + Непал + Науру + Нијуе + Нов Зеланд + Оман + Панама + Перу + Француска Полинезија + Папуа Нова Гвинеја + Филипини + Пакистан + Полска + Сент Пјер и Микелан + Питкернски Острови + Порторико + Палестински територии + Палестина + Португалија + Палау + Парагвај + Катар + Зависни земји во Океанија + Ријунион + Романија + Србија + Русија + Руанда + Саудиска Арабија + Соломонски Острови + Сејшели + Судан + Шведска + Сингапур + Света Елена + Словенија + Свалбард и Жан Мејен + Словачка + Сиера Леоне + Сан Марино + Сенегал + Сомалија + Суринам + Јужен Судан + Сао Томе и Принсипе + Ел Салвадор + Свети Мартин + Сирија + Свазиленд + Тристан да Куња + Острови Туркс и Кајкос + Чад + Француски Јужни територии + Того + Тајланд + Таџикистан + Токелау + Источен Тимор (Тимор Лесте) + Источен Тимор + Туркменистан + Тунис + Тонга + Турција + Тринидад и Тобаго + Тувалу + Тајван + Танзанија + Украина + Уганда + Американски територии во Пацификот + Соединети Американски Држави + САД + Уругвај + Узбекистан + Ватикан + Сент Винсент и Гренадините + Венецуела + Британски Девствени Острови + Американски Девствени Острови + Виетнам + Вануату + Волис и Футуна + Самоа + Косово + Јемен + Мајот + Јужноафриканска Република + Замбија + Зимбабве + Непознат регион + + + Пинјин романизација + Вејд-Џајлс романизација + + + Календар + Сортирање + Валута + Броеви + + + Арапски-индиски цифри + Проширени арапско-индиски цифри + Ерменски броеви + Ерменски мали броеви + Бенгалски цифри + Традиционално кинеско сортирање + Будистички календар + Кинески календар + Коптски календар + Деванагари цифри + Стандардно сортирање во уникод + Етиопски броеви + Етиопски календар + Етиопски Амет Алем календар + Цифри со целосна ширина + Поедноставено кинеско сортирање + Грузиски броеви + Грегоријански календар + Грчки броеви + Грчки мали броеви + Гуџарати цифри + Гурмуки цифри + Кинески децимални броеви + Поедноставени кинески броеви + Поедноставени кинески финансиски броеви + Традиционални кинески броеви + Традиционални кинески финансиски броеви + Хебрејски броеви + Еврејски календар + Индијски национален календар + Исламски календар + Исламски граѓански календар + Јапонски календар + Јапонски броеви + Јапонски финансиски броеви + Кмерски цифри + Канада цифри + Лаошки цифри + Арапски броеви + Малајаламски цифри + Мјанмарски цифри + Оријски цифри + Азбучен редослед + Сортирање Pinyin + Календар на Република Кина + Римски броеви + Римски мали броеви + Општо пребарување + Стандардно сортирање + Ритмички редослед + Традиционални тамилски броеви + Тамилски цифри + Телугу цифри + Тајландски цифри + Тибетски цифри + Традиционално сортирање + + + метрички + британски + американски + + + Јазик: {0} + Писмо: {0} + Регион: {0} + + + + [а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш] + [ѐ ѝ] + [А Б В Г Д Ѓ Е Ж З Ѕ И Ј К Л Љ М Н Њ О П Р С Т Ќ У Ф Х Ц Ч Џ Ш] + [\- ‐ – — , ; \: ! ? . … ‘ ‚ “ „ ( ) \[ \] \{ \}] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0}… {1} + ? + + + + + + + + + + + + + + EEEE, dd MMMM y 'г'. G + + + + + dd MMMM y 'г'. G + + + + + dd.M.y G + + + + + dd.M.y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y 'г'. G + MMM y 'г'. G + dd MMM y 'г'. G + E, dd MMM y 'г'. G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.M + E, dd.M + LLL + dd MMM + E, dd MMM + dd MMMM + E, dd MMMM + mm:ss + y 'г'. G + y 'г'. G + M.y G + dd.M.y G + E, dd.M.y G + MMM y 'г'. G + dd MMM y 'г'. G + E, dd MMM y 'г'. G + MMMM y 'г'. G + G y QQQ + G y QQQQ + + + {0} - {1} + + d-d + + + h a – h a + h-h a + + + HH-HH + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a – h a v + h-h a v + + + HH-HH v + + + M-M + + + dd.M - dd.M + dd.M - dd.M + + + E, dd.M - E, dd.M + E, dd.M - E, dd.M + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + LLLL–LLLL + + + y-y G + + + M.y - M.y G + M.y - M.y G + + + dd.M.y - dd.M.y G + dd.M.y - dd.M.y G + dd.M.y - dd.M.y G + + + E, dd.M.y - E, dd.M.y G + E, dd.M.y - E, dd.M.y G + E, dd.M.y - E, dd.M.y G + + + MMM-MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E, dd - E, dd MMM y G + E, dd MMM - E, dd MMM y G + E, dd MMM y - E, dd MMM y G + + + MMMM-MMMM y G + MMMM y - MMMM y G + + + + + + + + + јан. + фев. + мар. + апр. + мај + јун. + јул. + авг. + септ. + окт. + ноем. + дек. + + + ј + ф + м + а + м + ј + ј + а + с + о + н + д + + + јануари + февруари + март + април + мај + јуни + јули + август + септември + октомври + ноември + декември + + + + + јан. + фев. + мар. + апр. + мај + јун. + јул. + авг. + септ. + окт. + ноем. + дек. + + + ј + ф + м + а + м + ј + ј + а + с + о + н + д + + + јануари + февруари + март + април + мај + јуни + јули + август + септември + октомври + ноември + декември + + + + + + + нед. + пон. + вт. + сре. + чет. + пет. + саб. + + + н + п + в + с + ч + п + с + + + нед. + пон. + 3 + сре. + чет. + пет. + 7 + + + недела + понеделник + вторник + среда + четврток + петок + сабота + + + + + нед. + пон. + вт. + сре. + чет. + пет. + саб. + + + н + п + в + с + ч + п + с + + + нед. + пон. + вто. + сре. + чет. + пет. + саб. + + + недела + понеделник + вторник + среда + четврток + петок + сабота + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + прво тромесечје + второ тромесечје + трето тромесечје + четврто тромесечје + + + + + јан-мар + апр-јун + јул-сеп + окт-дек + + + 1 + 2 + 3 + 4 + + + прво тромесечје + второ тромесечје + трето тромесечје + четврто тромесечје + + + + + + + претпладне + попладне + + + + + + пр.н.е. + н.е. + + + + + + EEEE, dd MMMM y 'г'. + + + + + dd MMMM y 'г'. + + + + + dd.M.y + + + + + dd.M.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y 'г'. G + MMM y 'г'. G + dd MMM y 'г'. G + E, dd MMM y 'г'. G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M + dd.M + E, d.M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y 'г'. + M.y + d.M.y + E, d.M.y + MMM y 'г'. + d MMM y 'г'. + E, d MMM y 'г'. + MMMM y 'г'. + QQQ y 'г'. + QQQQ y 'г'. + + + {0} {1} + + + {0} - {1} + + d-d + + + h a – h a + h-h a + + + HH–HH + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a – h a v + h-h a v + + + HH-HH v + + + M-M + + + dd.M - dd.M + dd.M - dd.M + + + E, dd.M - E, dd.M + E, dd.M - E, dd.M + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + LLLL–LLLL + + + y-y + + + M.y - M.y + M.y - M.y + + + dd.M.y - dd.M.y + dd.M.y - dd.M.y + dd.M.y - dd.M.y + + + E, dd.M.y - E, dd.M.y + E, dd.M.y - E, dd.M.y + E, dd.M.y - E, dd.M.y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E, dd - E, dd MMM y + E, dd MMM - E, dd MMM y + E, dd MMM y - E, dd MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Ера + + + година + минатата година + оваа година + следната година + + За {0} година + За {0} години + + + Пред {0} година + Пред {0} години + + + + Месец + минатиот месец + овој месец + следниот месец + + За {0} месец + За {0} месеци + + + Пред {0} месец + Пред {0} месеци + + + + Недела + минатата седмица + оваа седмица + следната седмица + + За {0} седмица + За {0} седмици + + + Пред {0} седмица + Пред {0} седмици + + + + ден + завчера + вчера + Денес + утре + задутре + + За {0} ден + За {0} дена + + + Пред {0} ден + Пред {0} дена + + + + Ден во неделата + + + минатата недела + оваа недела + следната недела + + + минатиот понеделник + овој понеделник + следниот понеделник + + + минатиот вторник + овој вторник + следниот вторник + + + минатата среда + оваа среда + следната среда + + + минатиот четврток + овој четврток + следниот четврток + + + минатиот петок + овој петок + следниот петок + + + минатата сабота + оваа сабота + следната сабота + + + претпладне/попладне + + + Час + + За {0} час + За {0} часа + + + Пред {0} час + Пред {0} часа + + + + Минута + + За {0} минута + За {0} минути + + + Пред {0} минута + Пред {0} минути + + + + Секунда + сега + + За {0} секунда + За {0} секунди + + + Пред {0} секунда + Пред {0} секунди + + + + зона + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Време во {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Непознато + + + Андора + + + Дубаи + + + Кабул + + + Антигва + + + Ангилја + + + Тирана + + + Ереван + + + Луанда + + + Ротера + + + Палмер + + + Сајова + + + Мосон + + + Дејвис + + + Восток + + + Кејси + + + Димон Дирвил + + + Макмурдо + + + Рио Галегос + + + Мендоза + + + Сан Хуан + + + Ушуаја + + + Ла Риоха + + + Сан Луис + + + Катамарка + + + Салта + + + Хухуј + + + Тукуман + + + Кордоба + + + Буенос Аирес + + + Паго Паго + + + Виена + + + Перт + + + Јукла + + + Дарвин + + + Аделаида + + + Брокен Хил + + + Курие + + + Мелбурн + + + Хобарт + + + Линдеман + + + Сиднеј + + + Бризбејн + + + Маквори + + + Лорд Хау + + + Аруба + + + Маријехамен + + + Баку + + + Сараево + + + Барбадос + + + Дака + + + Брисел + + + Уагадугу + + + Софија + + + Бахреин + + + Буџумбура + + + Порто Ново + + + Сент Бартоломеј + + + Бермуди + + + Брунеј + + + Ла Паз + + + Кралендајк + + + Еирунепе + + + Рио Бранко + + + Порто Вељо + + + Боа Виста + + + Манаус + + + Кујаба + + + Сантарем + + + Кампо Гранде + + + Белем + + + Арагвајана + + + Сао Паоло + + + Бахиа + + + Форталеза + + + Масејо + + + Ресифи + + + Нороња + + + Насау + + + Тимпу + + + Габороне + + + Минск + + + Белизе + + + Досон + + + Вајтхорс + + + Инувик + + + Ванкувер + + + Досон Крик + + + Крестон + + + Јелоунајф + + + Едмонтон + + + Свифт Курент + + + Кембриџ Беј + + + Реџајна + + + Винипег + + + Резолут + + + Рејни Ривер + + + Ренкин Инлет + + + Корал Харбор + + + Тандр Беј + + + Нипигон + + + Торонто + + + Икалуит + + + Пангниртунг + + + Монктон + + + Халифакс + + + Гус Беј + + + Глејс Беј + + + Бланк-Сејблон + + + Сент Џонс + + + Кокосови Острови + + + Киншаса + + + Лубумбаши + + + Банги + + + Бразавил + + + Цирих + + + Абиџан + + + Раротонга + + + Велигденски Остров + + + Сантијаго + + + Дуала + + + Кашгар + + + Урумчи + + + Чонгчинг + + + Шангај + + + Харбин + + + Богота + + + Костарика + + + Хавана + + + Зелен 'Рт + + + Курасао + + + Божиќен Остров + + + Никозија + + + Прага + + + Бисинген + + + Берлин + + + Џибути + + + Копенхаген + + + Доминика + + + Санто Доминго + + + Алжир + + + Галапагос + + + Гвајакил + + + Талин + + + Каиро + + + Ел Ајун + + + Асмара + + + Канарски Острови + + + Сеута + + + Мадрид + + + Адис Абеба + + + Хелсинки + + + Фиџи + + + Стенли + + + Чук + + + Понпеј + + + Косрае + + + Фарски Острови + + + Париз + + + Либрвил + + + + Британско летно време + + Лондон + + + Гренада + + + Тбилиси + + + Кајена + + + Гернзи + + + Акра + + + Гибралтар + + + Туле + + + Нук + + + Итокортормит + + + Данмаркшан + + + Банџул + + + Конакри + + + Гвадалупе + + + Малабо + + + Атина + + + Јужна Џорџија + + + Гватемала + + + Гвам + + + Бисау + + + Гвајана + + + Хонг Конг + + + Тегусигалпа + + + Загреб + + + Порт о Пренс + + + Будимпешта + + + Џакарта + + + Понтијанак + + + Макасар + + + Џајапура + + + + Ирско летно време + + Даблин + + + Ерусалим + + + Остров Ман + + + Колката + + + Чагос + + + Багдад + + + Техеран + + + Рејкјавик + + + Рим + + + Џерзи + + + Јамајка + + + Аман + + + Токио + + + Најроби + + + Бишкек + + + Пном Пен + + + Ендербери + + + Киритимати + + + Тарава + + + Коморски Острови + + + Свети Кристофер + + + Пјонгјанг + + + Сеул + + + Кувајт + + + Кајмански Острови + + + Актау + + + Орал + + + Актобе + + + Кизилорда + + + Алмати + + + Виентијан + + + Бејрут + + + Света Луција + + + Вадуц + + + Коломбо + + + Монровија + + + Масеру + + + Вилнус + + + Луксембург + + + Рига + + + Триполи + + + Казабланка + + + Монако + + + Кишинау + + + Подгорица + + + Мариго + + + Антананариво + + + Кваџалејн + + + Маџуро + + + Скопје + + + Бамако + + + Рангун + + + Ховд + + + Улан Батор + + + Чојбалсан + + + Макао + + + Сајпан + + + Мартиник + + + Нуакшот + + + Монтсерат + + + Малта + + + Маврициус + + + Малдиви + + + Блантајр + + + Тихуана + + + Света Изабела + + + Ермосиљо + + + Мазатлан + + + Чивава + + + Бахија де Бандерас + + + Охинага + + + Монтереј + + + Мексико Сити + + + Матаморос + + + Мерида + + + Канкун + + + Куала Лумпур + + + Кучинг + + + Мапуто + + + Виндхук + + + Нумеа + + + Нијамеј + + + Норфолк + + + Лагос + + + Манагва + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуе + + + Чатам + + + Окленд + + + Мускат + + + Панама + + + Лима + + + Тахити + + + Маркески Острови + + + Гамбије + + + Порт Морсби + + + Манила + + + Карачи + + + Варшава + + + Микелан + + + Питкернски Острови + + + Порторико + + + Газа + + + Хеброн + + + Азорски Острови + + + Мадеира + + + Лисабон + + + Палау + + + Асунсион + + + Катар + + + Ријунион + + + Букурешт + + + Белград + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Екатеринбург + + + Омск + + + Новосибирск + + + Новокузњецк + + + Краснојарск + + + Иркутск + + + Јакутск + + + Владивосток + + + Хандига + + + Сакалин + + + Уст-Нера + + + Магадан + + + Камчатка + + + Анадир + + + Кигали + + + Ријад + + + Гвадалканал + + + Махе + + + Картум + + + Стокхолм + + + Сингапур + + + Света Елена + + + Љубљана + + + Лонгјиербјен + + + Братислава + + + Фритаун + + + Сан Марино + + + Дакар + + + Могадишу + + + Парамарибо + + + Џуба + + + Сао Томе + + + Ел Салвадор + + + Долен Принс квортр + + + Дамаск + + + Мбабане + + + Гранд Турк + + + Нџамена + + + Кергелен + + + Ломе + + + Бангкок + + + Душанбе + + + Факаофо + + + Дили + + + Ашкабад + + + Тунис + + + Тонгатапу + + + Истанбул + + + Порт ов Спејн + + + Фунафути + + + Тајпеј + + + Дар ес Салам + + + Ужгород + + + Киев + + + Симферопол + + + Запорожје + + + Кампала + + + Мидвеј + + + Џонстон + + + Вејк + + + Адак + + + Ном + + + Хонолулу + + + Енкориџ + + + Јакутат + + + Ситка + + + Џуно + + + Метлакатла + + + Лос Анџелес + + + Бојзи + + + Феникс + + + Денвер + + + Бјула, Северна Дакота + + + Њу Салем, Северна Дакота + + + Центар, Северна Дакота + + + Чикаго + + + Меномини + + + Венсен, Индијана + + + Питерсбург, Индијана + + + Тел Сити, Индијана + + + Нокс, Индијана + + + Винамак, Индијана + + + Маренго, Индијана + + + Индијанаполис + + + Луизвил + + + Вивеј, Индијана + + + Монтичело, Кентаки + + + Детроит + + + Њујорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сент Винсент + + + Каракас + + + Тортола + + + Сент Томас + + + Хо Ши Мин + + + Ефате + + + Валис + + + Апија + + + Аден + + + Мајот + + + Јоханесбург + + + Лусака + + + Хараре + + + + Акре време + Акре стандардно време + Акре летно сметање на времето + + + + + Време во Авганистан + + + + + Средноафриканско време + + + + + Источноафриканско време + + + + + Време во Јужноафриканска Република + + + + + Западноафриканско време + Западноафриканско стандардно време + Западноафриканско летно сметање на времето + + + + + Време во Аљаска + Стандардно време во Аљаска + Летно сметање на времето во Аљаска + + + + + Време во Амазон + Стандардно време во Амазон + Летно сметање на времето во Амазон + + + + + Централно време во Северна Америка + Централно стандардно време во Северна Америка + Централно летно сметање на времето + + + + + Источно време + Источно стандардно време + Источно летно сметање на времето + + + + + Планинско време + Планинско стандардно време + Планинско летно сметање на времето + + + + + Пацифичко време + Пацифичко стандардно време + Пацифичко летно сметање на времето + + + + + Арапско време + Стандардно арапско време + Арапски летно сметање на времето + + + + + Време во Аргентина + Стандардно време во Аргентина + Летно сметање на времето во Аргентина + + + + + Време во западна Аргентина + Стандардно време во западна Аргентина + Летно сметање на времето во западна Аргентина + + + + + Време во Ерменија + Стандардно време во Ерменија + Летно време во Ерменија + + + + + Атлантско време + Атлантско стандардно време + Атлантско летно сметање на времето + + + + + Време во Централна Австралија + Стандардно време во Централна Австралија + Летно сметање на времето во Централна Австралија + + + + + Време во Централна и Западна Австралија + Стандардно време во Централна и Западна Австралија + Летно сметање на времето во Централна и Западна Австралија + + + + + Време во Источна Австралија + Стандардно време во Источна Австралија + Летно сметање на времето во Источна Австралија + + + + + Време во Западна Австралија + Стандардно време во Западна Австралија + Летно сметање на времето во Западна Австралија + + + + + Време во Азербејџан + Стандардно време во Азербејџан + Летно време во Азербејџан + + + + + Време во Азорес + Стандардно време во Азорес + Летно време во Азорес + + + + + Време во Бангладеш + Стандардно време во Бангладеш + Летно време во Бангладеш + + + + + Време во Бутан + + + + + Време во Боливија + + + + + Време во Бразилија + Стандардно време во Бразилија + Летно сметање на времето во Бразилија + + + + + Време во Брунеи Дарусалам + + + + + Време на Зелениот 'Рт + Стандардно време на Зелениот 'R + Летно време на Зелениот 'Рт + + + + + Време во Чаморо + + + + + Време во Четем + Стандардно време во Четем + Летно сметање на времето во Четем + + + + + Време во Чиле + Стандардно време во Чиле + Летно сметање на времето во Чиле + + + + + Време во Кина + Стандардно време во Кина + Летно сметање на времето во Кина + + + + + Време во Чојбалсан + Стандардно време во Чојбалсан + Летно време во Чојбалсан + + + + + Време на Божиќниот остров + + + + + Време на Кокосовите Острови + + + + + Време во Колумбија + Стандардно време во Колумбија + Летно сметање на времето во Колумбија + + + + + Време на островите Кук + Стандардно време на Островите Кук + Летно време на Островите Кук + + + + + Време во Куба + Стандардно време во Куба + Летно сметање на времето во Куба + + + + + Време во Дејвис + + + + + Димон-дурвил време + + + + + Време во Источен Тимор + + + + + Време на Велигденскиот Остров + Стандардно време на Велигденскиот Остров + Летно време на Велигденскиот Остров + + + + + Време во Еквадор + + + + + Средноевропско време + Средноевропско стандардно време + Средноевропско летно сметање на времето + + + CET + CET + CEST + + + + + Источноевропско време + Источноевропско стандардно време + Источноевропско летно сметање на времето + + + EET + EET + EEST + + + + + Западноевропско време + Западноевропско стандардно време + Западноевропско летно сметање на времето + + + WET + WET + WEST + + + + + Време на Фолкландските Острови + Стандардно време на Фолкландските Острови + Летно сметање на времето на Фолкландските Острови + + + + + Време во Фиџи + Стандардно време во Фиџи + Летно време во Фиџи + + + + + Време во Француска Гвајана + + + + + Француско јужно и антарктичко време + + + + + Време во Галапагос + + + + + Време во Гамбе + + + + + Време во Грузија + Стандардно време во Грузија + Летно време во Грузија + + + + + Време на Островите Гилберт + + + + + Средно време по Гринич + + + + + Време во Источен Гренланд + Стандардно време во Источен Гренланд + Летно сметање на времето во Источен Гренланд + + + + + Време во Западен Гренланд + Стандардно време во Западен Гренланд + Летно сметање на времето во Западен Гренланд + + + + + Време на Мексиканскиот Залив + + + + + Време во Гвајана + + + + + Време во Хаваи - Алеутски острови + Стандардно време во Хаваи - Алеутски острови + Летно сметање на времето во Хаваи - Алеутски острови + + + + + Време во Хонг Конг + Стандардно време во Хонг Конг + Летно време во Хонг Конг + + + + + Време во Ховд + Стандардно време во Ховд + Летно време во Ховд + + + + + Време во Индија + + + + + Време на Индиски океан + + + + + Време во Индокина + + + + + Време во Централна Индонезија + + + + + Време во Источна Индонезија + + + + + Време во Западна Индонезија + + + + + Време во Иран + Стандардно време во Иран + Летно сметање на времето во Иран + + + + + Време во Иркутск + Стандардно време во Иркутск + Летно време во Иркутск + + + + + Време во Израел + Стандардно време во Израел + Летно сметање на времето во Израел + + + + + Време во Јапонија + Стандардно време во Јапонија + Летно сметање на времето во Јапонија + + + + + Време во Источен Казахстан + + + + + Време во Западен Казахстан + + + + + Време во Кореја + Стандардно време во Кореја + Летно сметање на времето во Кореја + + + + + Време во Косра + + + + + Време во Краснојарск + Стандардно време во Краснојарск + Летно време во Краснојарск + + + + + Време во Киргистан + + + + + Време во Линиски Острови + + + + + Време во Лорд Хау + Стандардно време во Лорд Хау + Летно сметање на времето во Лорд Хау + + + + + Време на Островот Макуари + + + + + Време во Магадан + Стандардно време во Магадан + Летно време во Магадан + + + + + Време во Малезија + + + + + Време на Малдиви + + + + + Време во Маркесас + + + + + Време на Маршалски острови + + + + + Време на Маврициус + Стандардно време на Маврициус + Летно сметање на времето на Маврициус + + + + + Време во Мосон + + + + + Време во Улан Батор + Стандардно време во Улан Батор + Летно време во Улан Батор + + + + + Време во Москва + Стандардно време во Москва + Летно сметање на времето во Москва + + + + + Време во Мјанмар + + + + + Време во Науру + + + + + Време во Непал + + + + + Време во Нова Каледонија + Стандардно време во Нова Каледонија + Летно време во Нова Каледонија + + + + + Време во Нов Зеланд + Стандардно време во Нов Зеланд + Летно сметање на времето во Нов Зеланд + + + + + Време на Њуфаундленд + Стандардно време на Њуфаундленд + Летно сметање на времето на Њуфаундленд + + + + + Време во Ниуе + + + + + Време на Островите Норфолк + + + + + Време на Фернандо де Нороња + Стандардно време на Фернандо де Нороња + Летно сметање на времето на Фернандо де Нороња + + + + + Време во Новосибирск + Стандардно време во Новосибирск + Летно време во Новосибирск + + + + + Време во Омск + Стандардно време во Омск + Летно време во Омск + + + + + Време во Пакистан + Стандардно време во Пакистан + Летно време во Пакистан + + + + + Време во Палау + + + + + Време во Папуа Нова Гвинеја + + + + + Време во Парагвај + Стандардно време во Парагвај + Летно сметање на времето во Парагвај + + + + + Време во Перу + Стандардно време во Перу + Летно сметање на времето во Перу + + + + + Време во Филипини + Стандардно време во Филипини + Летно време во Филипини + + + + + Време на Островите Феникс + + + + + Време на на Сент Пјер и Микелан + Стандардно време на Сент Пјер и Микелан + Летно сметање на времето на Сент Пјер и Микелан + + + + + Време во Питкерн + + + + + Време во Понапе + + + + + Време на Ријунион + + + + + Време во Ротера + + + + + Време во Сакалин + Стандардно време во Сакалин + Летно време во Сакалин + + + + + Самара време + Самара стандардно време + Самара летно сметање на времето + + + + + Време во Самоа + Стандардно време во Самоа + Летно време во Самоа + + + + + Време на Сејшели + + + + + Време во Сингапур + + + + + Време на Соломонските острови + + + + + Време во Јужна Грузија + + + + + Време во Суринам + + + + + Време во Сајова + + + + + Време во Тахити + + + + + Време во Таипеи + Стандардно време во Таипеи + Летно сметање на времето во Таипеи + + + + + Време во Таџикистан + + + + + Време во Токелау + + + + + Време во Тонга + Стандардно време во Тонга + Летно време во Тонга + + + + + Време во Чуук + + + + + Време во Туркменистан + Стандардно време во Туркменистан + Летно време во Туркменистан + + + + + Време во Тувалу + + + + + Време во Уругвај + Стандардно време во Уругвај + Летно сметање на времето во Уругвај + + + + + Време во Узбекистан + Стандардно време во Узбекистан + Летно време во Узбекистан + + + + + Време во Вануату + Стандардно време во Вануату + Летно време во Вануату + + + + + Време во Венецуела + + + + + Време во Владивосток + Стандардно време во Владивосток + Летно време во Владивосток + + + + + Време во Волгоград + Стандардно време во Волгоград + Летно сметање на времето во Волгоград + + + + + Време во Восток + + + + + Време на островот Вејк + + + + + Време во Валис и Футуна + + + + + Време во Јакутск + Стандардно време во Јакутск + Летно време во Јакутск + + + + + Време во Екатеринбург + Стандардно време во Екатеринбург + Летно време во Екатеринбург + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 илјада + 0 илјади + 00 илјади + 00 илјади + 000 илјади + 000 илјади + 0 милион + 0 милиони + 00 милиони + 00 милиони + 000 милиони + 000 милиони + 0 милијарда + 0 милијарди + 00 милијарди + 00 милијарди + 000 милијарди + 000 милијарди + 0 трилиони + 0 трилиони + 00 трилиони + 00 трилиони + 000 трилиони + 000 трилиони + + + + + 0 илј'.' + 0 илј'.' + 00 илј'.' + 00 илј'.' + 000 илј'.' + 000 илј'.' + 0 мил'.' + 0 мил'.' + 00 мил'.' + 00 мил'.' + 000 мил'.' + 000 мил'.' + 0 милј'.' + 0 милј'.' + 00 милј'.' + 00 милј'.' + 000 милј'.' + 000 милј'.' + 0 трил'.' + 0 трил'.' + 00 трил'.' + 00 трил'.' + 000 трил'.' + 000 трил'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Андорска Пезета + + + Обединети Арапски Емирати Дирхам + Обединети Арапски Емирати Дирхам + Обединети Арапски Емирати Дирхам + + + Авгани (1927–2002) + + + Авгани + Авгани + Авгани + + + Албански Лек + Албански Лек + Албански Лек + + + Ермениски Драм + Ермениски Драм + Ермениски Драм + + + Холандски антилски гилдер + Холандски антилски гилдер + Холандски антилски гилдери + + + Анголска Кванза + Анголска Кванза + Анголска Кванза + + + Анголска Кванза (1977–1990) + + + Анголска нова Кванза (1990–2000) + + + Аргентински Пезос (1983–1985) + + + Аргентински Пезос + Аргентински пезоси + Аргентински пезоси + + + Австралиски Шилинг + + + Австралиски долар + Австралиски Долар + Австралиски Долар + AUD + + + Арубиски флорин + Арубиски флорин + Арубиски флорин + + + Азербејџански манат + Азербејџански манат + Азербејџански манати + + + Босанско-Херцеговски Динар + + + Босанско-Херцеговска конвертибилна марка + Босанско-Херцеговска конвертибилна марка + Босанско-Херцеговска конвертибилна марка + + + Барбадоски долар + Барбадоски Долар + Барбадоски долари + + + Бангладешка така + Бангладешка така + Бангладешки таки + + + Белгиски Франк (конвертибилен) + + + Белгиски Франк + + + Белгиски Франк (финансиски) + + + Бугарски цврст лев + + + Бугарски лев + Бугарски нов лев + Бугарски нов лев + + + Бахреински Динар + Бахреински Динар + Бахреински Динар + + + Бурундиски Франк + Бурундиски Франк + Бурундиски Франк + + + Бермудски долар + Бермудски долари + Бермудски долари + + + Брунејски долар + Брунејски долар + Брунејски долар + + + Бразилски реал + Бразилски реал + Бразилски реали + R$ + + + Бахамски долар + Бахамски долари + Бахамски долари + + + Бутански нгултрум + Бутански нгултрум + Бутански нгултруми + + + Боцванска Пула + Боцванска Пула + Боцванска Пула + + + Белоруска нова рубља (1994–1999) + + + Белоруска рубља + Белоруска Рубља + Белоруска Рубља + + + Белизиски Долар + Белизиски Долар + Белизиски Долар + + + Канадски долар + Канадски долари + Канадски долари + CA$ + + + Конголски франк + Конголски франк + Конголски франци + + + Швајцарски Франк + Швајцарски Франк + Швајцарски Франк + + + Чилеански пезос + Чилеански пезос + Чилеански пезос + + + Кинески јуан + Кинески јуан + Кинески јуани + CNY + + + Колумбиски Пезос + Колумбиски Пезос + Колумбиски Пезос + + + Костарикански колон + Костарикански колони + Костарикански колони + + + Чехословачка цврста корона + + + Кубански пезос (конвертибилен) + Кубански пезос (конвертибилен) + Кубански пезос (конвертибилен) + + + Кубански пезос + Кубански пезос + Кубански пезос + + + Зелено'ртски ескудо + Зелено'ртски ескудо + Зелено'ртски ескуди + + + Кипарска фунта + + + Чешка корона + Чешка корона + Чешка корона + + + Германска Марка + + + Џибути франк + Џибути франк + Џибути франци + + + Данска круна + Данска круна + Данска круна + + + Доминикански Пезос + Доминикански Пезос + Доминикански Пезос + + + Алжирски Динар + Алжирски Динар + Алжирски Динар + + + Египетска Фунта + Египетска Фунта + Египетска Фунта + + + Еритрејска Накфа + Еритрејска Накфа + Еритрејски Накфи + + + Шпанска Пезета + + + Етиописки Бир + Етиописки Бир + Етиописки Бир + + + Евро + Евро + Евро + + + Финска марка + + + Фиџиски долар + Фиџи долар + Фиџи долар + + + Фолкландска фунта + Фолкландски фунти + Фолкландски фунти + + + Француски франк + + + Британска Фунта + Британска Фунта + Британска Фунта + GBP + + + Грузиски лари + Грузиски лари + Грузиски лари + + + Ганајски Седи + + + Гански седи + Гански седи + Гански седи + + + Гибралтарска фунта + Гибралтарска фунта + Гибралтарска фунта + + + Гамбиски даласи + Гамбиски Даласи + Гамбиски Даласи + + + Гвинејски франк + Гвинејски франк + Гвинејски франк + + + Грчка драхма + + + Гватемалски кветцал + Гватемалски кветцал + Гватемалски кветцал + + + Гвинејски Бисау пезос + + + Гвијански Долар + Гвијански Долар + Гвијански Долар + + + Хонгконшки долар + Хонгконшки долар + Хонгконшки долар + HKD + + + Хондурска лемпира + Хондурски лемпири + Хондурски лемпири + + + Хрватски динар + + + Хрватска Куна + Хрватска Куна + Хрватска Куна + + + Хаитски гурд + Хаитски гурд + Хаитски гурд + + + Унгарска форинта + Унгарска форинта + Унгарска форинта + + + Индонезиска рупија + Индонезиска рупија + Индонезиска рупија + + + Ирска фунта + + + Изрелска фунта + + + Израелски нов шекел + Израелски нов шекел + Израелски нов шекел + ILS + + + Индијска рупија + Индијска рупија + Индијска рупија + INR + + + Ирачки динар + Ирачки динар + Ирачки динар + + + Ирански риал + Ирански риал + Ирански риал + + + Исландска крона + Исландска крона + Исландска крона + + + Италијанска лира + + + Јамајкански долар + Јамајкански долари + Јамајкански долари + + + Јордански динар + Јордански динар + Јордански динар + + + Јапонски јен + Јапонски јен + Јапонски јен + JPY + + + Кениски шилинг + Кениски шилинг + Кениски шилинг + + + Киргистански сом + Киргистански сом + Киргистански сом + + + Камбоџиски рел + Камбоџиски рел + Камбоџиски рел + + + Коморски долар + Коморски долар + Коморски долар + + + Северно корејски вон + Северно корејски вон + Северно корејски вон + + + Јужно корејски вон + Јужно корејски вон + Јужно корејски вон + KRW + + + Кувајтски динар + Кувајтски динар + Кувајтски динар + + + Долар на кајмански острови + Долар на кајмански острови + Долари на кајмански острови + + + Казахстанска тенга + Казахстанска тенга + Казахстанска тенга + + + Лаоски кип + Лаоски кип + Лаоски кип + + + Либанска фунта + Либанска фунта + Либанска фунта + + + Шриланканска рупија + Шриланканска рупија + Шриланканска рупија + + + Либериски долар + Либериски долар + Либериски долари + + + Лесотско лоти + + + Литваниска лита + Литваниска лита + Литваниска лита + + + Литваниски литаз + + + Луксембуршки франк + + + Латвијски лат + Латвијски лат + Латвијски лат + + + Латвијска рубља + + + Либијски динар + Либијски динар + Либијски динар + + + Марокански Дирхам + Марокански Дирхам + Марокански Дирхам + + + Марокански франк + + + Молдавски леу + Молдавски леу + Молдавски леу + + + Малагасиски ариари + Малагасиски ариари + Малагасиски ариари + + + Македонски денар + Македонски денар + Македонски денар + ден + + + Малски франк + + + Мја + Мјанмарски киат + Мјанмарски киати + + + Монголиски тугрик + Монголиски тугрик + Монголиски тугрик + + + Макао патака + Макао патака + Макао патака + + + Мавританска угија + Мавританска угија + Мавритански угии + + + Малтешка лира + + + Малтешка фунта + + + Мавританска рупија + Мавританска рупија + Мавритански рупии + + + Малдивиска руфија + Малдивска руфија + Малдивски руфии + + + Малависка квача + Малависка квача + Малависки квачи + + + Мексикански пезос + Мексикански пезоси + Мексикански пезоси + MX$ + + + Мексикански сребрен пезос (1861–1992) + + + Малазиски рингит + Малазиски рингит + Малазиски рингит + + + Мозамбиско ескудо + + + Стар мозамбиски метикал + + + Мозамбиски метикал + Мозамбиски метикали + Мозамбиски метикал + + + Намибиски долар + Намибиски долар + Намибиски долар + + + Нигериска наира + Нигериска наира + Нигериска наира + + + Никарагванска кордоба (1988–1991) + Никарагванска кордоба (1988–1991) + Никарагвански кордоби (1988–1991) + + + Никарагванска кордоба + Никарагванска кордоба + Никарагвански кордоби + + + Холандски гилдер + + + Норвешка круна + Норвешка круна + Норвешка круна + + + Непалска рупија + Непалска рупија + Непалска рупија + + + Новозеландски долар + Новозеландски долар + Новозеландски долар + NZD + + + Омански риал + Омански риал + Омански риал + + + Панамска балбоа + Панамска балбоа + Панамска балбоа + + + Перуански нов сол + Перуански нов сол + Перуански нов сол + + + Перуански сол + + + Папуа новогвинејска кина + Папуа новогвинејска кина + Папуа новогвинејска кина + + + Филипински пезос + Филипински пезос + Филипински пезос + + + Пакистанска рупија + Пакистанска рупија + Пакистанска рупија + + + Полска злота + Полска злота + Полска злота + + + Полска злота (1950–1995) + + + Португалско ескудо + + + Парагвајска гуарана + Парагвајска гуарана + Парагвајска гуарана + + + Катарски риал + Катарски риал + Катарски риал + + + Романска леи (1952–2006) + Романска леи (1952–2006) + Романска леи (1952–2006) + + + Романска леи + Романска леи + Романска леи + + + Српски динар + Српски динар + Српски динар + + + Руска рубља + Руска рубља + Руска рубља + + + Руска рубља (1991–1998) + + + Руандски франк + Руандски франк + Руандски франк + + + Саудиски ријал + Саудиски ријал + Саудиски ријал + + + Соломонски долар + Соломонски долар + Соломонски долар + + + Сејшелска рупија + Сејшелска рупија + Сејшелски рупии + + + Стар судански динар + + + Суданска фунта + Суданска фунта + Судански фунти + + + Стара суданска фунта + + + Шведска круна + Шведска круна + Шведска круна + + + Сингапурски долар + Сингапурски долар + Сингапурски долар + + + Фунта на Света Елена + Фунта на Света Елена + Фунти на Света Елена + + + Словенечки толар + + + Словачка круна + + + Сиералеонско леоне + Сиералеонско леоне + Сиералеонско леоне + + + Сомалијски шилинг + Сомалијски шилинзи + Сомалијски шилинзи + + + Суринамски долар + Суринамски долар + Суринамски долари + + + Суринамски гилдер + + + Јужносуданска фунта + Јужносуданска фунта + Јужносудански фунти + + + Добра на Сао Томе и Принсипе + Добра на Сао Томе и Принсипе + Добри на Сао Томе и Принсипе + + + Советска рубља + + + Салвадорски колон + + + Сиријска фунта + Сиријска фунта + Сиријска фунта + + + Свазилендски лиланген + Свазилендски лиланген + Свазилендски лиланген + + + Таи бат + Таи бат + Таи бат + THB + + + Таџикистанска рубља + + + Таџикистански сомони + Таџикистански сомони + Таџикистански сомони + + + Туркменистански манат + + + Туркменистански манати + Туркменистански манати + + + Тунизиски динар + Тунизиски динар + Тунизиски динари + + + Тонганска панга + Тонганска панга + Тонганска панга + + + Тиморски ескудо + + + Турска лира (1922–2005) + Турска лира (1922–2005) + Турска лира (1922–2005) + + + Турска лира + Турска лира + Турски лири + + + Тајвански нов долар + Тајвански нов долар + Тајвански нов долар + TWD + + + Танзаниски шилинг + Танзаниски шилинг + Танзаниски шилинг + + + Украинска хривнија + Украинска хривнија + Украинска хривнија + + + Угандиски шилинг (1966–1987) + + + Угандиски шилинг + Угандиски шилинг + Угандиски шилинг + + + Американски долар + Американски долари + Американски долари + US$ + + + САД долар (Next day) + + + САД долар (Same day) + + + Уругвајски пезос (1975–1993) + + + Уругвајски пезос + Уругвајски пезоси + Уругвајски пезоси + + + Узбекистански сом + Узбекистански сом + Узбекистански сом + + + Венецуелски боливар (1871–2008) + Венецуелски боливар (1871–2008) + Венецуелски боливар (1871–2008) + + + Венецуелски боливар + Венецуелски боливар + Венецуелски боливари + + + Виетнамски донг + Виетнамски донг + Виетнамски донг + VND + + + Ванатски вату + Ванатски вату + Ванатски вату + + + Самоанска тала + Самоанска тала + Самоанска тала + + + FCFA + + + Источно карибиски долар + Источно карибиски долар + Источно карибиски долар + EC$ + + + CFA + + + ЦФП франк + ЦФП франк + ЦФП франци + CFPF + + + Непозната валута + Непозната валута + Непозната валута + + + Јеменски динар + + + Јеменски риал + Јеменски риал + Јеменски риал + + + Југословенски динар + + + Југословенски конвертибилен динар + + + Јужно афрички ранд(финансиски) + + + Јужно афрички ранд + Јужно афрички ранд + Јужно афрички ранд + + + Замбијска квача (1968–2012) + + + Замбијска квача + Замбијска квача + Замбијска квача + + + Заирско новозаире + + + Заирско заире + + + Зимбабвиски долар + + + + {0}+ + {0}–{1} + + + + + + {0} на {1} + + + {0} гравитациска сила + {0} гравитациска сила + + + {0} минута + {0} минути + + + {0} секунда + {0} секунди + + + {0} степен + {0} степени + + + {0} акр + {0} акри + + + {0} хектар + {0} хектари + + + {0} квадратна стапка + {0} квадратни стапки + + + {0} квадратен километар + {0} квадратни километри + + + {0} квадратен метар + {0} квадратни метри + + + {0} квадратна милја + {0} квадратни милји + + + {0} ден + {0} дена + + + {0} час + {0} часа + + + {0} милисекунда + {0} милисекунди + + + {0} минута + {0} минути + + + {0} месец + {0} месеци + + + {0} секунда + {0} секунди + + + {0} седмица + {0} седмици + + + {0} година + {0} години + + + {0} сантиметар + {0} сантиметри + + + {0} стапка + {0} стапки + + + {0} инч + {0} инчи + + + {0} километар + {0} километри + + + {0} светлосна година + {0} светлосни години + + + {0} метар + {0} метри + + + {0} милја + {0} милји + + + {0} милиметар + {0} милиметри + + + {0} пикометар + {0} пикометри + + + {0} јард + {0} јарди + + + {0} грам + {0} грама + + + {0} килограм + {0} килограми + + + {0} унца + {0} унци + + + {0} фунта + {0} фунти + + + {0} коњска сила + {0} коњски сили + + + {0} киловат + {0} киловати + + + {0} ват + {0} вати + + + {0} хектопаскал + {0} хектопаскали + + + {0} инч жива + {0} инчи жива + + + {0} милибар + {0} милибари + + + {0} километар на час + {0} километри на час + + + {0} метар во секунда + {0} метри во секунда + + + {0} милја на час + {0} милји на час + + + {0} целзиусов степен + {0} целзиусови степени + + + {0} фаренхајтов степен + {0} фаренхајтови степени + + + {0} кубен километар + {0} кубни километри + + + {0} кубна милја + {0} кубни милји + + + {0} литар + {0} литри + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} мин. + {0} мин. + + + {0} сек + {0} сек + + + {0} степ. + {0} степ. + + + {0} акр + {0} акри + + + {0} ха + {0} ха + + + {0} кв. стапка + {0} кв. стапки + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} кв. милја + {0} кв. милји + + + {0} ден + {0} дена + + + {0} час + {0} часа + + + {0} мс + {0} мс + + + {0} мин. + {0} мин. + + + {0} мес. + {0} мес. + + + {0} сек. + {0} сек. + + + {0} сед. + {0} сед. + + + {0} год. + {0} год. + + + {0} см + {0} см + + + {0} ст + {0} ст + + + {0} инч + {0} инчи + + + {0} км + {0} км + + + {0} сг + {0} сг + + + {0} м + {0} м + + + {0} ми + {0} ми + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} јард + {0} јарди + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унца + {0} унци + + + {0} фунта + {0} фунти + + + {0} кс + {0} кс + + + {0} kW + {0} kW + + + {0} ват + {0} вати + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} мб + {0} мб + + + {0} к/ч + {0} к/ч + + + {0} м/с + {0} м/с + + + {0} ми/ч + {0} ми/ч + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} ми³ + {0} ми³ + + + {0} л + {0} л + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акри + + + {0} ха + {0} ха + + + {0} ст² + {0} ст² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} ми² + {0} ми² + + + {0} ден + {0} дена + + + {0} час + {0} часа + + + {0} мс + {0} мс + + + {0} мин. + {0} мин. + + + {0} мес. + {0} мес. + + + {0} сек. + {0} сек. + + + {0} сед. + {0} сед. + + + {0} год. + {0} год. + + + {0} см + {0} см + + + {0} ст + {0} ст + + + {0} инч + {0} инчи + + + {0} км + {0} км + + + {0} сг + {0} сг + + + {0} м + {0} м + + + {0} ми + {0} ми + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} јард + {0} јарди + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унца + {0} унци + + + {0} фунта + {0} фунти + + + {0} кс + {0} кс + + + {0} kW + {0} kW + + + {0} ват + {0} вати + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} мб + {0} мб + + + {0} к/ч + {0} к/ч + + + {0} м/с + {0} м/с + + + {0} ми/ч + {0} ми/ч + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} ми³ + {0} ми³ + + + {0} л + {0} л + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} и {1} + + + {0} и {1} + {0} и {1} + + + {0} и {1} + {0} и {1} + + + + + да:д + не:н + + + + diff --git a/library/Zend/Locale/Data/mk_MK.xml b/library/Zend/Locale/Data/mk_MK.xml new file mode 100755 index 000000000..6e64e55ab --- /dev/null +++ b/library/Zend/Locale/Data/mk_MK.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ml.xml b/library/Zend/Locale/Data/ml.xml new file mode 100755 index 000000000..39d489e69 --- /dev/null +++ b/library/Zend/Locale/Data/ml.xml @@ -0,0 +1,6149 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + അഫാർ + അബ്‌ഖാസിയൻ + അചിനീസ് + അകോലി + അഡാങ്ഗമി + അഡൈഗേ + അവസ്റ്റാൻ + ആഫ്രിക്കാൻസ് + ആഫ്രിഹിലി + ആഘേം + അയിനു + അകാൻ + അക്കാഡിയൻ + അലൈട്ട് + തെക്കൻ അൾത്തായി + അമാറിക് + അരഗോണീസ് + പഴയ ഇംഗ്ലീഷ് + ആൻഗിക + അറബിക് + ആധുനിക സ്റ്റാൻഡേർഡ് അറബിക് + അരമായഭാഷ + ആരൗകാനിയൻ + അരപാഹോ + അറാവക് + ആസ്സാമീസ് + ആസു + ഓസ്‌ട്രിയൻ + അവാരിക് + അവധി + അയ്മാറ + അസർബൈജാനി + അസേരി + ബഷ്ഖിർ + ബലൂചി + ബാലിനീസ് + ബസ + ബാമുൻ + ഘോമാല + ബൈലോറഷ്യൻ + ബേജ + ബെംബ + ബെനാ + ബാഫട്ട് + ബൾഗേറിയൻ + ഭോജ്‌പൂരി + ബിസ്‌ലാമ + ബികോൽ + ബിനി + കോം + സിക്സിക + ബംബാറ + ബംഗാളി + തിബറ്റൻ + ബ്രറ്റൺ + ബ്രജ് + ബോഡോ + ബോസ്നിയൻ + അക്കൂസ് + ബുറിയത്ത് + ബുഗിനീസ് + ബുളു + ബ്ലിൻ + മെഡുംബ + കറ്റാലൻ + കാഡോ + കാരിബ് + കയൂഗ + അറ്റ്സാം + ചെചൻ + സെബുവാനോ + ചിഗ + കമോറോ + ചിബ്ച + ചഗതൈ + ചൂകീസ് + മാരി + ചിനൂഗ്-ജാർഗൺ + ചോക്റ്റാവ് + ചിപേവ്യൻ + ചെരോകീ + ചിയേന്നേ + സൊറാനി കുർദിഷ് + കോഴ്സിക്കൺ + കോപ്റ്റിക് + ക്രീ + ക്രിമിയൻ ടർക്കിഷ് + ചെക്ക് + കാഷുബിയാൻ + ചർച്ച് സ്ലാവിക് + ചുവാഷ് + വെൽഷ് + ഡാനിഷ് + ഡകോട്ട + ഡർഗ്വാ + തൈത + ജർമ്മൻ + ഓസ്‌ട്രിയൻ ജർമൻ + സ്വിസ് ഹൈ ജർമൻ + ദലവാരെ + സ്ലേവ് + ഡോഗ്രിബ് + ദിൻക + സാർമ്മ + ഡോഗ്രി + ലോവർ സോർബിയൻ + ദ്വാല + മദ്ധ്യ ഡച്ച് + ദിവെഹി + യോല-ഫോന്യി + ദ്വൈല + ഭൂട്ടാനി + ഡാസാഗ + എംബു + എവ് + എഫിക് + പ്രാചീന ഈജിപ്ഷ്യൻ + എകാജുക് + ഗ്രീക്ക് + എലാമൈറ്റ് + ഇംഗ്ലീഷ് + ഓസ്‌ട്രേലിയൻ ഇംഗ്ലീഷ് + കനേഡിയൻ ഇംഗ്ലീഷ് + ബ്രിട്ടീഷ് ഇംഗ്ലീഷ് + യു.കെ. ഇംഗ്ലീഷ് + അമേരിക്കൻ ഇംഗ്ലീഷ് + യു.എസ്. ഇംഗ്ലീഷ് + മദ്ധ്യ ഇംഗ്ലീഷ് + എസ്‌പരാന്റോ + സ്‌പാനിഷ് + ലാറ്റിൻ അമേരിക്കൻ സ്‌പാനിഷ് + ഇബേറിയൻ സ്‌പാനിഷ് + മെക്സിക്കൻ സ്പാനിഷ് + എസ്റ്റോണിയൻ + ബാസ്‌ക് + എവോൻഡോ + പേർഷ്യൻ + ഫങ് + ഫിലിപ്പീനോ + ഫുല + ഫിന്നിഷ് + ഫിലിപ്പിനോ + ഫിജിയൻ + ഫാറോസ് + ഫോൻ + ഫ്രഞ്ച് + കനേഡിയൻ ഫ്രഞ്ച് + സ്വിസ് ഫ്രഞ്ച് + മദ്ധ്യ ഫ്രഞ്ച് + പഴയ ഫ്രഞ്ച് + നോർത്തേൻ ഫ്രിഷ്യൻ + ഈസ്റ്റേൺ ഫ്രിഷ്യൻ + ഫ്രിയുലിയാൻ + പശ്ചിമ ഫ്രിഷിയൻ + ഐറിഷ് + ഗാ + ഗയൊ + ഗബ്യ + സ്കോട്ടിഷ് ഗൈലിക് + ഗീസ് + ഗിൽബർസേ + ഗലീഷ്യൻ + മദ്ധ്യ ഉച്ച ജർമൻ + ഗ്വാറാനി + പ്രാചീന ഉച്ച ജർമൻ + ഗോണ്ഡി + ഗൊറോൻറാലോ + ഗോഥിക്ക് + ഗ്രബൊ + പുരാതന യവന ഭാഷ + സ്വിസ് ജർമൻ + ഗുജറാത്തി + ഗുസീ + മാൻസ് + ഗ്വിച്ച് ഇൻ + ഹൗസ + ഹൈഡ + ഹവായിയൻ + ഹീബ്രു + ഹിന്ദി + ഹിലിഗയ്നോൺ + ഹിറ്റൈറ്റേ + മോങ് + ഹിരി മോതു + ക്രൊയേഷ്യൻ + അപ്പർ സോർബിയൻ + ഹെയ്‌തിയൻ + ഹംഗേറിയൻ + ഹൂപ + അർമേനിയൻ + ഹെരേരൊ + ഇൻറർലിംഗ്വാ + ഇബാൻ + ഇബീബിയോ + ഇൻഡോനേഷ്യൻ + ഇന്റർലിംഗ്വ + ഇഗ്ബോ + ഷുവാൻയി + ഇനുപിയാക് + ഇലോകോ + ഇംഗ്വിഷ് + ഇഡോ + ഐസ്‌ലാൻഡിക് + ഇറ്റാലിയൻ + ഇനുക്റ്റിറ്റട്ട് + ജപ്പാനീസ് + ലോജ്ബാൻ + മചേം + ജൂഡിയോ-പേർഷ്യൻ + ജൂഡിയോ-അറബിക് + ജാവാനീസ് + ജോർജിയൻ + കര-കാൽപ്പക് + കബൈൽ + കാചിൻ + ജ്ജു + കംബ + കാവി + കബർഡിയാൻ + കനെംബു + ട്യാപ് + മക്കോണ്ടെ + കബുവെർദിയാനു + കോറോ + കോംഗോ + ഘാസി + ഘോറ്റാനേസേ + കൊയ്റ ചീനി + കികൂയു + ക്വാന്യമ + കസാഖ് + കക്കോ + കലാല്ലിസട്ട് + കലെഞ്ഞിൻ + കംബോഡിയൻ + ക്ലിംഗൻ + കന്നഡ + കൊറിയൻ + കൊങ്കണി + കൊസറേയൻ + കപെല്ലേ + കനൂറി + കരചൈ-ബാൽകർ + കരീലിയൻ + കുരുഖ് + കാശ്‌മീരി + ഷംഭാള + ഭാഫിയ + കൊളോഞ്ഞിയൻ + കുർദ്ദിഷ് + കുമൈക് + കുതേനൈ + കോമി + കോർണിഷ് + കിർഗിസ് + ലാറ്റിൻ + ലാഡിനോ + ലാംഗി + ലഹ്‌ൻഡ + ലംബ + ലക്‌സംബർഗിഷ് + ലഹ്ഗിയാൻ + ഗാൻഡ + ലിംബർഗിഷ് + ലിംഗാല + ലാവോ + മോങ്കോ + ലോസി + ലിത്വേനിയൻ + ലുബ-കറ്റംഗ + ലൂബ-ലുലുവ + ലൂയിസെനോ + ലുൻഡ + ലവോ + മിസോ + ലുയിയ + ലാത്വിയൻ + മദുരേസേ + മാഫ + മഗാഹി + മൈഥിലി + മകാസർ + മണ്ഡിൻഗോ + മസൈ + മാബ + മോക്ഷ + മണ്ഡാർ + മെൻഡെ + മേരു + മൊറിസിൻ + മലഗാസി + മദ്ധ്യ ഐറിഷ് + മാഖുവാ-മീത്തോ + മാർഷല്ലീസ് + മൗറി + മിക്മാക് + മിനാങ്കബൗ + മാസിഡോണിയൻ + മലയാളം + മംഗോളിയൻ + മൻചു + മണിപ്പൂരി + മോഹാക് + മൊസ്സി + മറാഠി + മലയ + മാൾട്ടീസ് + മുന്ദാംഗ് + പലഭാഷകൾ + ക്രീക്ക് + മിരാൻറസേ + മർവാരി + ബർമീസ് + മയീൻ + ഏഴ്സ്യ + നൗറു + നെപ്പോളിറ്റാൻ + നാമ + നോർവീജിയൻ ബുക്‌മൽ + നോർത്ത് ഡെബിൾ + ലോ ജർമൻ + നേപ്പാളി + നേവാരി + ഡോങ്ക + നിയാസ് + ന്യുവാൻ + ഡച്ച് + ഫ്ലമിഷ് + ക്വാസിയോ + നോർവീജിയൻ നൈനോർക്‌സ് + ഗീംബൂൺ + നോർവീജിയൻ + നോഗൈ + പഴയ പേർഷ്യൻ + ഇൻകോ + ദക്ഷിണ നെഡിബിൾ + നോർത്തേൻ സോതോ + നുവേർ + നവാഹൊ + ക്ലാസിക്കൽ നേവാരി + ന്യൻജ + ന്യാംവേസി + ന്യാൻകലേ + ന്യോറോ + സിമ + ഒക്സിററൻ + ഓജിബ്വാ + ഒറോമൂ + ഒറിയ + ഒസ്സെറ്റിക് + ഒസേജ് + ഓട്ടോമൻ തുർക്കിഷ് + പഞ്ചാബി + പങ്കാസിനൻ + പാഹ്ലവി + പാംപൻഗ + പാപിയാമെൻറൊ + പലാവുൻ + പ്രാചീന പേർഷ്യൻ + ഫീനിഷ്യൻ + പാലി + പോളിഷ് + പൊൻപിയൻ + പ്രൊവൻഷ്ൽ + പഷ്തു + പുഷ്തോ + പോർച്ചുഗീസ് + ബ്രസീലിയൻ പോർച്ചുഗീസ് + ഇബേറിയൻ പോർച്ചുഗീസ് + ക്വെച്ചുവ + രാജസ്ഥാനി + രാപനൂയി + രാരോടോങ്കൻ + റെയ്‌തോ-റോമൻസ് + റുണ്ടി + റുമേനിയൻ + മോൾഡാവിയൻ + റോംബോ + റോമനി + മൂലഭാഷ + റഷ്യൻ + ആരോമാനിയൻ + കിന്യർവണ്ട + റുവാ + സംസ്‌കൃതം + സാൻഡവേ + സാഖ + സമരിയാക്കാരുടെ അരമായ + സംബുരു + സസാക് + സന്താലി + ഗംബായ് + സംഗു + സർഡിനിയാൻ + സിസിലിയൻ + സ്കോട്സ് + സിന്ധി + വടക്കൻ സമി + സെനേക + സേന + സെൽകപ് + കൊയ്റാബൊറോ സെന്നി + സാങ്കോ + പ്രാചീന ഐറിഷ് + സെർബോ-ക്രൊയേഷ്യൻ + താച്ചലിറ്റ് + ഷാൻ + ചാഡ് അറബി + സിംഹള + സിഡാമോ + സ്ലോവാക്ക് + സ്ലോവേനിയൻ + സമോവൻ + തെക്കൻ സാമി + ലൂലീ സമി + ഇനാരി സാമി + സ്കോൾട്ട് സമി + ഷോണാ + സോണിൻകെ + സോമാലി + സോജിഡിയൻ + അൽബേനിയൻ + സെർബിയൻ + ശ്രാനൻ ഡോങ്കോ + സെറർ + സ്വാറ്റി + സാഹോ + തെക്കൻ സോതോ + സുഡാനീസ് + സുകുമ + സുസു + സുമേരിയൻ + സ്വീഡിഷ് + സ്വാഹിലി + കൊമോറിയൻ + കോംഗോ സ്വാഹിലി + പുരാതന സുറിയാനിഭാഷ + സുറിയാനി + തമിഴ് + തെലുങ്ക് + ടിംനേ + ടെസോ + ടെറേനോ + ടെറ്റും + താജിക് + തായ് + ടൈഗ്രിന്യ + ടൈഗ്രി + ടിവ് + തുർക്‌മെൻ + ടൊക്കേലൗ + തഗാലോഗ് + ക്ലിംഗോൺ + ലിംഗ്വിറ്റ് + ടമഷേക് + ത്സ്വാന + ടോംഗൻ + ന്യാസാ ഡോങ്ക + ടോക് പിസിൻ + തുർക്കി + തരോക്കോ + ത്സോംഗ + സിംഷ്യൻ + ടാട്ടാർ + തുംബുക + തുവാലു + ട്വി + ടസവാക്ക് + താഹിതിയൻ + തുവിനിയൻ + മധ്യ അറ്റ്‌ലസ് ടമാസൈറ്റ് + ഉഡ്മുർട്ട് + ഉയ്ഘുർ + വിഗോർ + ഉഗറിട്ടിക് + ഉക്രേനിയൻ + ഉംബുന്ദു + നിലവിലില്ലാത്ത ഭാഷ + ഉറുദു + ഉസ്‌ബെക്ക് + വൈ + വെന്ദ + വിയറ്റ്നാമീസ് + വോളാപുക് + വോട്ടിക് + വുഞ്ജോ + വല്ലൂൺ + വാൾസർ + വലമൊ + വാരേയ് + വാഷൊ + വൊളോഫ് + കൽമൈക് + ഖോസാ + സോഗോ + യാവോ + യെപ്പീസ് + യാംഗ്ബെൻ + യംബ + യിദ്ദിഷ് + യൊറൂബാ + കാന്റണീസ് + സ്വാംഗ് + സാപ്പോടെക് + ബ്ലിസ്സിംബൽസ് + സെനഗ + മൊറോക്കൻ സാധാരണ താമസൈറ്റ് + ചൈനീസ് + ചീനഭാഷ-ലളിതലിപി + ചീനഭാഷ-പരമ്പരാഗതലിപി + സുലു + സുനി + ഭാഷേതരം + സാസാ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ലോകം + ആഫ്രിക്ക + വടക്കേ അമേരിക്കൻ ഭൂഖണ്ഡം + തെക്കേ അമേരിക്കൻ ഭൂഖണ്ഡം + ഓഷ്യാനിയ + പശ്ചിമ ആഫ്രിക്ക + മദ്ധ്യഅമേരിക്ക + കിഴക്കൻ ആഫ്രിക്ക + വടക്കേ ആഫ്രിക്ക + മദ്ധ്യആഫ്രിക്ക + തെക്കേ ആഫ്രിക്ക + അമേരിക്കൻ ഭൂഖണ്ഡം + വടക്കേ അമേരിക്ക + കരീബിയൻ + കിഴക്കൻ ഏഷ്യ + തെക്കേ ഏഷ്യ + തെക്ക്-കിഴക്കൻ ഏഷ്യ + തെക്കേ യൂറോപ്പ് + ഓസ്‌ട്രേലിയയും ന്യൂസിലാൻഡും + മെലനേഷ്യ + മൈക്രോനേഷ്യൻ പ്രദേശം + പോളിനേഷ്യ + ഏഷ്യ + മദ്ധ്യേഷ്യ + പശ്ചിമേഷ്യ + യൂറോപ്പ് + കിഴക്കൻ യൂറോപ്പ് + വടക്കേ യൂറോപ്പ് + പശ്ചിമ യൂറോപ്പ് + ലാറ്റിനമേരിക്ക + അസൻഷൻ ദ്വീപ് + അന്റോറ + യുണൈറ്റഡ് അറബ് എമിറൈറ്റ്‌സ് + അഫ്‌ഗാനിസ്ഥാൻ + ആൻറിഗ്വയും ബർബുഡയും + ആൻഗ്വില്ല + അൽബേനിയ + അർമേനിയ + നെതർലൻഡ്സ് ആൻറിലിസ് + അംഗോള + അൻറാർട്ടിക്ക + അർജൻറീന + അമേരിക്കൻ സാമോവ + ഓസ്ട്രിയ + ഓസ്‌ട്രേലിയ + അറുബ + അലൻഡ് ദ്വീപുകൾ + അസർബൈജാൻ + ബോസ്നിയയും ഹെർസഗോവിനയും + ബാർബഡോസ് + ബംഗ്ലാദേശ് + ബെൽജിയം + ബുർക്കിനാ ഫാസോ + ബൾഗേറിയ + ബഹ്റൈൻ + ബുറുണ്ടി + ബെനിൻ + സെൻറ് ബാർത്തെൽമി + ബർമുഡ + ബ്രൂണൈ + ബൊളീവിയ + ബൊണെയ്ർ, സിന്റ് യുസ്റ്റേഷ്യസ്, സാബ എന്നിവ + ബ്രസീൽ + ബഹാമാസ് + ഭൂട്ടാൻ + ബൗവെറ്റ് ദ്വീപ് + ബോട്സ്വാന + ബെലറൂസ് + ബെലീസ് + കാനഡ + കോക്കസ് ദ്വീപുകൾ + കോംഗോ - കിൻഷാസ + കോംഗോ (DRC) + സെൻട്രൽ ആഫ്രിക്കൻ റിപ്പബ്ലിക് + കോംഗോ - ബ്രാസാവിൽ + കോംഗോ (റിപ്പബ്ലിക്ക്) + സ്വിറ്റ്സർലാൻഡ് + കോട്ട് ഡി വാർ + ഐവറി കോസ്റ്റ് + കൂക്ക് ദ്വീപുകൾ + ചിലി + കാമറൂൺ + ചൈന + കൊളംബിയ + ക്ലിപ്പെർട്ടൻ ദ്വീപ് + കോസ്റ്ററിക്ക + ക്യൂബ + കേപ്പ് വെർഡെ + കുറാകാവോ + ക്രിസ്മസ് ദ്വീപ് + സൈപ്രസ്സ് + ചെക്ക് റിപ്പബ്ലിക് + ജർമനി + ഡീഗോ ഗ്രാഷ്യ + ജിബൂട്ടി + ഡെൻമാർക്ക് + ഡൊമിനിക്ക + ഡൊമിനിക്കൻ റിപ്പബ്ലിക് + അൾജീരിയ + സെയൂത്ത ആൻഡ് മെലിയ + ഇക്വഡോർ + എസ്റ്റോണിയ‍ + ഈജിപ്ത് + പശ്ചിമ സഹാറ + എറിത്രിയ + സ്‌പെയിൻ + എത്യോപ്യ + യൂറോപ്യൻ യൂണിയൻ + ഫിൻലാൻഡ് + ഫിജി + ഫാക്ക്‌ലാന്റ് ദ്വീപുകൾ + ഫാക്ക്‌ലാൻഡ് ദ്വീപുകൾ (മൽവിനാസ്) + മൈക്രോനേഷ്യ + ഫറോയി ദ്വീപുകൾ + ഫ്രാൻസ് + ഗാബോൺ + ബ്രിട്ടൻ + യു.കെ. + ഗ്രനേഡ + ജോർജിയ + ഫ്രഞ്ച് ഗയാന + ഗേൺസി + ഘാന + ജിബ്രാൾട്ടർ + ഗ്രീൻലാൻറ് + ഗാംബിയ + ഗ്വിനിയ + ഗുവാഡെലോപ് + ഇക്വിറ്റോറിയൽ ഗ്വിനിയ + ഗ്രീസ് + ദക്ഷിണ ജോർജ്ജിയയും ദക്ഷിണ സാൻഡ്‌വിച്ച് ദ്വീപുകളും + ഗ്വാട്ടിമാലാ + ഗ്വാം + ഗിനി-ബിസോ + ഗയാന + ഹോങ് കോങ് എസ്.ഏ.ആർ. ചൈന + ഹോങ് കോങ് + ഹിയേർഡ് ദ്വീപും മക്ഡൊണാള്ഡ് ദ്വീപുകളും + ഹോണ്ടുറാസ് + ക്രൊയേഷ്യ + ഹെയ്തി + ഹംഗറി + കാനറി ദ്വീപുകൾ + ഇൻഡോനേഷ്യ + അയർലാൻഡ് + ഇസ്രായേൽ + ഐൽ ഓഫ് മാൻ + ഇന്ത്യ + ബ്രിട്ടീഷ് ഇന്ത്യൻ മഹാസമുദ്ര പ്രദേശം + ഇറാക്ക് + ഇറാൻ + ഐസ്‌ലാന്റ് + ഇറ്റലി + ജേഴ്സി + ജമൈക്ക + ജോർദ്ദാൻ + ജപ്പാൻ + കെനിയ + കിർഗിസ്ഥാൻ + കംബോഡിയ + കിരിബാത്തി + കോമറോസ് + സെയ്ൻറ് കിറ്റ്സും നെവിസും + ഉത്തരകൊറിയ + ദക്ഷിണകൊറിയ + കുവൈറ്റ് + കേമാൻ ദ്വീപുകൾ + കസാഖിസ്ഥാൻ + ലാവോസ് + ലബനോൺ + സെൻറ് ലൂസിയ + ലിച്ചൺസ്റ്റൈൻ + ശ്രീലങ്ക + ലൈബീരിയ + ലെസോത്തോ + ലിത്വാനിയ + ലക്സംബർഗ് + ലാത്വിയ + ലിബിയ + മൊറോക്കൊ + മൊണോക്കൊ + മൾഡോവ + മോണ്ടേനേഗ്രോ + സെൻറ് മാർട്ടിൻ + മഡഗാസ്കർ + മാർഷൽ‍‍ ദ്വീപുകൾ + മാസിഡോണിയ + മാസിഡോണിയ (FYROM) + മാലി + മ്യാൻമാർ (ബർമ്മ) + മംഗോളിയ + മക്കാവോ SAR ചൈന + മക്കാവോ + ഉത്തര മറിയാനാ ദ്വീപുകൾ + മാർട്ടീനിക് + മൗറിറ്റാനിയ + മോണ്ട്സെറാറ്റ് + മാൾട്ട + മൗറീഷ്യസ് + മാലിദ്വീപ് + മലാവി + മെക്സിക്കോ + മലേഷ്യ + മൊസാംബിക്ക് + നമീബിയ + പുതിയ കാലിഡോണിയ + നൈജർ + നോർഫോക് ദ്വീപ് + നൈജീരിയ + നിക്കാരഗ്വ + നെതർലൻഡ്സ് + നോർവെ + നേപ്പാൾ + നൗറൂ + ന്യൂവേ + ന്യൂസിലാൻറ് + ഒമാൻ + പനാമ + പെറു + ഫ്രഞ്ച് പോളിനേഷ്യ + പപ്പുവ ന്യൂ ഗ്വിനി + ഫിലിപ്പൈൻസ് + പാക്കിസ്ഥാൻ + പോളണ്ട് + സെൻറ് പിയാറും മിക്വലണും + പിറ്റ്കെയ്ൻ + പോർട്ടോ റിക്കോ + പാലസ്‌തീൻ പ്രദേശങ്ങൾ + പാലസ്‌തീൻ + പോർച്ചുഗൽ + പലാവു + പരാഗ്വേ + ഖത്തർ + പുറംദ്വീപുകൾ + റീയൂണിയൻ + റുമേനിയ + സെർബിയ + റഷ്യ + റുവാണ്ട + സൗദി അറേബ്യ + സോളമൻ‍ ദ്വീപുകൾ + സെയ്‌ഷെൽസ് + സുഡാൻ + സ്വീഡൻ + സിംഗപ്പുർ + സെൻറ് ഹെലീന + സ്ലോവേനിയ + സ്വാൽബാഡും ജാൻ മായേനും + സ്ലോവാക്യ + സിയേറാ ലിയോൺ + സാൻ മറിനോ + സെനഗൽ + സോമാലിയ + സുറിനാം + ദക്ഷിണ സുഡാൻ + സാവോ റ്റമെ ആൻഡ് പ്രിൻസിപ്പി + എൽ സാൽവദോർ + സിന്റ് മാർട്ടെൻ + സിറിയ + സ്വാസിലാൻറ് + ട്രസ്റ്റൻ ഡ കൂന + ടർക്ക്സും കൈക്കോ ദ്വീപുകളും + ചാഡ് + ഫ്രഞ്ച് ദക്ഷിണ ഭൂപ്രദേശം + ടോഗോ + തായ്‌ലാൻഡ് + താജിക്കിസ്ഥാൻ + ടൊകെലാവു + കിഴക്കൻ തിമൂർ + കിഴക്കൻ തിമോർ + തുർക്ക്മെനിസ്ഥാൻ + ടുണീഷ്യ + ടോംഗ + തുർക്കി + ട്രിനിഡാഡും റ്റൊബാഗോയും + തുവാലു + തായ്‌വാൻ + ടാൻസാനിയ + ഉക്രൈൻ + ഉഗാണ്ട + യു.എസ് ചെറിയ പുറംദ്വീപുകളും + അമേരിക്കൻ ഐക്യനാടുകൾ + യു.എസ് + ഉറുഗ്വേ + ഉസ്‌ബെക്കിസ്ഥാൻ + വത്തിക്കാൻ + സെൻറ് വിൻസൻറും ഗ്രനഡൈൻസും + വെനിസ്വേല + ബ്രിട്ടീഷ് വെർജിൻ ദ്വീപുകൾ + യു.എസ്. വെർജിൻ ദ്വീപുകൾ + വിയറ്റ്നാം + വന്വാത്തു + വാലിസ് ആൻഡ് ഫ്യുചൂന + സാമോവ + കൊസോവൊ + യമൻ + മയോട്ട് + ദക്ഷിണാഫ്രിക്ക + സാംബിയ + സിംബാബ്‌വേ + അജ്ഞാത പ്രദേശം + + + 1996-ലെ ജർമൻ ലിപി + 1606 വരെയുള്ള ആധുനികമദ്ധ്യകാല ഫ്രഞ്ച് + കിഴക്കൻ അർമീനിയൻ + ബൂണ്ട്‌ലിങ്ങ് + ഐപി‌എ സ്വനവ്യവസ്ഥ + മോണോറ്റോണിക് + നേറ്റിസോൺ പ്രാദേശികരൂപം + ഗ്നിവ/നിജിവ പ്രാദേശികരൂപം + പിൻയിൻ റോമനൈസേഷൻ + കമ്പ്യൂട്ടർ + പരിഷ്ക്കരിച്ച ലിപി + വേഡ്-ഗൈൽസ് റോമനൈസേഷൻ + + + കലണ്ടർ + ചിഹ്നങ്ങൾ പ്രകാരം അടുക്കുന്നത് അവഗണിക്കുക + വിപരീതക്രമ ആക്‌സന്റ് പ്രകാരമുള്ള അടുക്കൽ + വലിയക്ഷര/ചെറിയക്ഷര പ്രകാരമുള്ള അടുക്കൽ + കേസ് സെൻസിറ്റീവ് അടുക്കൽ + Kana അടുക്കൽ + അകാരാദിക്രമം + സാധാരണ അടുക്കൽ + അക്കങ്ങൾ പ്രകാരമുള്ള അടുക്കൽ + അടുക്കൽ ദൃഢത + നാണയം + അക്കങ്ങൾ‌ + സമയ മേഖല + ഭാഷാ ഭേദം + ചിഹ്നങ്ങളായി അടുക്കുക + സ്വകാര്യ ഉപയോഗം + + + അറബിക്-ഇന്ത്യ അക്കങ്ങൾ + വിപുലീകൃത അറബി-ഭാരതീയ അക്കങ്ങൾ + അർമേനിയൻ സംഖ്യകൾ + അർമേനിയൻ ചെറിയ സംഖ്യകൾ + ബംഗാളി അക്കങ്ങൾ + പരമ്പരാഗത ചൈനീസ് ക്രമീകരണം - ബിഗ്5 + ബുദ്ധമതകലണ്ടർ + ചൈനീസ് കലണ്ടർ + കോപ്റ്റിക് കലണ്ടർ + ദേവനാഗരി അക്കങ്ങൾ + നിഘണ്ടു അടുക്കൽ ക്രമം + സ്ഥിരസ്ഥിതി യൂണീകോഡ് അടുക്കൽ ക്രമം + എത്യോപിക് സംഖ്യകൾ + എത്യോപിക് കലണ്ടർ + എത്യോപിക് അമെതെ അലെം കലണ്ടർ + സാമ്പത്തിക സംഖ്യകൾ + പൂർണ വലുപ്പമുള്ള സംഖ്യകൾ + ലളിതമായ ചൈനീസ് ക്രമീകരണം - ജീബി2312 + ജോർജിയൻ സംഖ്യകൾ + ഇംഗ്ലീഷ് കലണ്ടർ + ഗ്രീക്ക് സംഖ്യകൾ + ഗ്രീക്ക് ചെറിയക്ഷര സംഖ്യകൾ + ഗുജറാത്തി അക്കങ്ങൾ + ഗുരുമുഖി അക്കങ്ങൾ + ചൈനീസ് + ലളിതവൽക്കരിച്ച ചൈനീസ് സംഖ്യകൾ + ലളിതവൽക്കരിച്ച ചൈനീസ് ധനകാര്യ സംഖ്യകൾ + പരമ്പരാഗത ചൈനീസ് സംഖ്യകൾ + പരമ്പരാഗത ചൈനീസ് ധനകാര്യ സംഖ്യകൾ + ഹീബ്രു സംഖ്യകൾ + ഹീബ്രൂ കലണ്ടർ + എല്ലാം അടുക്കുക + ശകവർഷ കലണ്ടർ + ഇസ്ലാം കലണ്ടർ + ഇസ്ലാം-സിവിൽ കലണ്ടർ + ജാപ്പനീസ് കലണ്ടർ + ജപ്പാനീസ് സംഖ്യകൾ + ജപ്പാനീസ് ധനകാര്യ സംഖ്യകൾ + ഖമേർ അക്കങ്ങൾ + കന്നഡ സംഖ്യകൾ + ലാവോ അക്കങ്ങൾ + പടിഞ്ഞാറൻ അക്കങ്ങൾ + ആദ്യം ചെറിയക്ഷര പ്രകാരം അടുക്കുക + മലയാളം അക്കങ്ങൾ + മംഗോളിയൻ സംഖ്യകൾ + മ്യാൻമാർ അക്കങ്ങൾ + സ്വാഭാവിക ഡിജിറ്റുകൾ + സാധാരണ ആക്‌സന്റുകൾ പ്രകാരം അടുക്കുക + സാധാരണ കേസ് ക്രമത്തിൽ അടുക്കുക + കേസ് സെൻസിറ്റീവ് പ്രകാരം അടുക്കുക + Kana പ്രത്യേകം അടുക്കുക + സാധാരണരീതി ഇല്ലാതെ അടുക്കുക + ഓരോ ഡിജിറ്റുകൾ പ്രകാരം അടുക്കുക + ചിഹ്നങ്ങൾ അടുക്കുക + ഒഡിയ അക്കങ്ങൾ + പേർഷ്യൻ കലണ്ടർ + ഫോൺബുക്കിലെ ക്രമീകരണം + സ്വരസൂചക അടുക്കൽ ക്രമം + പിൻ‌യിൻ ക്രമീകരണം + അടിസ്ഥാന അക്ഷരങ്ങൾ മാത്രം അടുക്കുക + ആക്‌സന്റുകൾ/കേസ്/വീതി/Kana അടുക്കുക + നവീകരിച്ച അടുക്കൽ ക്രമം + ചൈനീസ് കലണ്ടർ + റോമൻ സംഖ്യകൾ + റോമൻ ചെറിയ സംഖ്യകൾ + പൊതുലക്ഷ്യത്തിനുള്ള തിരയൽ + ഹാംഗൽ പ്രാരംഭ വ്യഞ്ജനാക്ഷരം പ്രകാരം തിരയുക + ആക്‌സന്റുകൾ അടുക്കുക + അവഗണിക്കൽ ചിഹ്നങ്ങൾ അടുക്കുക + സാധാരണ ക്രമം + സ്റ്റ്രോക്ക് ക്രമീകരണം + പഴയ തമിഴ് സംഖ്യകൾ + തമിഴ് അക്കങ്ങൾ + തെലുങ്ക് സംഖ്യകൾ + ആക്‌സന്റുകൾ/കേസ്/വീതി അടുക്കുക + തായി അക്കങ്ങൾ + തിബത്തൻ അക്കങ്ങൾ + പരമ്പരാഗത ക്രമീകരണം + സാധാരണയായി ഉപയോഗിച്ചുവരുന്ന സംഖ്യകൾ + റാഡിക്കൽ-സ്ട്രോക്ക് അടുക്കൽ ക്രമം + ആദ്യം വലിയക്ഷരപ്രകാരം അടുക്കുക + വായ് സംഖ്യകൾ + ആക്‌സന്റുകളെ വിപരീതക്രമത്തിൽ അടുക്കുക + കേസ് സെൻസിറ്റീവ് അടുക്കുക + Kana വ്യത്യസ്‌തമായി അടുക്കുക + സാധാരണ യൂണിക്കോഡ് അടുക്കുക + ഡിജിറ്റുകളെ സംഖ്യാപരമായി അടുക്കുക + + + BGN + സംഖ്യാപരമായ + ശബ്ദം + UNGEGN + ആൿസൻറുകൾ‌ + പൂർണവീതി + ഹാഫ്‍വിഡ്ത്ത് + ജാമോ + പിൻയിൻ + പ്രസിദ്ധീകരിക്കുന്നു + + + മെട്രിക്ക് + യുകെ + യുഎസ്സ് + + + ഭാഷ: {0} + ലിപി: {0} + പ്രദേശം: {0} + + + + [\u200C\u200D ഃ അ ആ ഇ ഈ ഉ ഊ ഋ ൠ ഌ ൡ എ ഏ ഐ ഒ ഓ ഔ ക ൿ ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ൺ ത ഥ ദ ധ ന ൻ പ ഫ ബ ഭ മ ം യ ര ർ ല ൽ വ ശ ഷ സ ഹ ള ൾ ഴ റ ാ ി ീ \u0D41 \u0D42 \u0D43 െ േ ൈ ൊ ോ ൗ ൌ \u0D4D] + [\u200C\u200D] + [അ ആ ഇ ഈ ഉ ഊ ഋ എ ഏ ഐ ഒ ഓ ഔ ക ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ത ഥ ദ ധ ന പ ഫ ബ ഭ മ യ ര ല വ ശ ഷ സ ഹ ള ഴ റ] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + G y, MMMM d, EEEE + + + + + G y, MMMM d + + + + + G y, MMM d + + + + + dd/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + M/d, E + dd-MM + LLL + MMM d + MMM d, E + MMMM d + MMMM d, E + mm:ss + G y + G y + M-y G + d/M/y G + d-M-y G, E + MM-y G + G y MMM + G y MMM d + G y MMM d, E + G y MMMM + G y QQQ + G y QQQQ + + + {0} - {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M-M + + + d/M - d/M + d/M - d/M + + + d/M, E - d/M, E + d/M, E - d/M, E + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + MMM d, E - MMM d, E + MMM d, E - MMM d, E + + + LLLL-LLLL + + + G y-y + + + M/y – M/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + d/M/y, E - d/M/y, E + d/M/y, E - d/M/y, E + d/M/y, E - d/M/y, E + + + G y MMM-MMM + G y MMM - y MMM + + + G y MMM d-d + G y MMM d - MMM d + G y MMM d - y MMM d + + + G y, MMM d, E - d, E + G y MMM d, E - MMM d, E + G y MMM d, E - y MMM d, E + + + G y MMMM-MMMM + G y MMMM - y MMMM + + + + + + + + + ജനു + ഫെബ്രു + മാർ + ഏപ്രി + മേയ് + ജൂൺ + ജൂലൈ + ഓഗ + സെപ്റ്റം + ഒക്ടോ + നവം + ഡിസം + + + ജനുവരി + ഫെബ്രുവരി + മാർച്ച് + ഏപ്രിൽ + മേയ് + ജൂൺ + ജൂലൈ + ആഗസ്റ്റ് + സെപ്റ്റംബർ + ഒക്‌ടോബർ + നവംബർ + ഡിസംബർ + + + + + ജനു + ഫെബ്രു + മാർ + ഏപ്രി + മേയ് + ജൂൺ + ജൂലൈ + ഓഗ + സെപ്റ്റം + ഒക്ടോ + നവം + ഡിസം + + + + ഫെ + മാ + + മേ + ജൂ + ജൂ + + സെ + + + ഡി + + + ജനുവരി + ഫെബ്രുവരി + മാർച്ച് + ഏപ്രിൽ + മേയ് + ജൂൺ + ജൂലൈ + ആഗസ്റ്റ് + സെപ്റ്റംബർ + ഒക്‌ടോബർ + നവംബർ + ഡിസംബർ + + + + + + + ഞായർ + തിങ്കൾ + ചൊവ്വ + ബുധൻ + വ്യാഴം + വെള്ളി + ശനി + + + ഞാ + തി + ചൊ + ബു + വ്യാ + വെ + + + + ഞായറാഴ്‌ച + തിങ്കളാഴ്‌ച + ചൊവ്വാഴ്ച + ബുധനാഴ്‌ച + വ്യാഴാഴ്‌ച + വെള്ളിയാഴ്‌ച + ശനിയാഴ്‌ച + + + + + ഞായർ + തിങ്കൾ + ചൊവ്വ + ബുധൻ + വ്യാഴം + വെള്ളി + ശനി + + + ഞാ + തി + ചൊ + ബു + വ്യാ + വെ + + + + ഞാ + തി + ചൊ + ബു + വ്യാ + വെ + + + + ഞായറാഴ്‌ച + തിങ്കളാഴ്‌ച + ചൊവ്വാഴ്‌ച + ബുധനാഴ്‌ച + വ്യാഴാഴ്‌ച + വെള്ളിയാഴ്‌ച + ശനിയാഴ്‌ച + + + + + + + ഒന്നാം പാദം + രണ്ടാം പാദം + മൂന്നാം പാദം + നാലാം പാദം + + + 1 + 2 + 3 + 4 + + + ഒന്നാം പാദം + രണ്ടാം പാദം + മൂന്നാം പാദം + നാലാം പാദം + + + + + ഒന്നാം പാദം + രണ്ടാം പാദം + മൂന്നാം പാദം + നാലാം പാദം + + + 1 + 2 + 3 + 4 + + + ഒന്നാം പാദം + രണ്ടാം പാദം + മൂന്നാം പാദം + നാലാം പാദം + + + + + + + AM + PM + + + AM + PM + + + + + + ക്രിസ്തുവിനു് മുമ്പ്‌ + ക്രിസ്തുവിന് പിൻപ് + + + ക്രി.മൂ + ബിസിഇ + എഡി + സിഇ + + + + + + y, MMMM d, EEEE + + + + + y, MMMM d + + + + + y, MMM d + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + M/d, E + dd-MM + LLL + MMM d + MMM d, E + MMMM d + MMMM d, E + mm:ss + y + M-y + d/M/y + d-M-y, E + MM-y + y MMM + y MMM d + y MMM d, E + y MMMM + y QQQ + y QQQQ + + + {0} {1} + + + {0} - {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + d/M - d/M + d/M - d/M + + + d/M, E - d/M, E + d/M, E - d/M, E + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + MMM d, E - MMM d, E + MMM d, E - MMM d, E + + + LLLL-LLLL + + + y-y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + d/M/y, E - d/M/y, E + d/M/y, E - d/M/y, E + d/M/y, E - d/M/y, E + + + y MMM-MMM + y MMM - y MMM + + + y MMM d-d + y MMM d - MMM d + y MMM d - y MMM d + + + y MMM d, E – MMM d, E + y MMM d, E - MMM d, E + y MMM d, E - y MMM d, E + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + + ചൈത്രം + വൈശാഖം + ജ്യേഷ്ഠം + ആഷാഢം + ശ്രാവണം + ഭാദ്രപാദം + ആശ്വിനം + കാർത്തികം + മാർഗശീർഷം + പൗഷം + മാഘം + ഫൽഗുനം + + + + + ചൈ + വൈ + ജ്യേ + + ശ്രാ + ഭാ + + കാ + മാ + പൗ + മാ + + + + + + + ശക + + + + + + + + മുഹറം + സഫർ + റബീഹുൽ അവ്വൽ + റബീഹുൽ ആഖിർ + ജമാദുൽ അവ്വൽ + ജമാദുൽ ആഖിർ + റജബ് + ശഹബാൻ + റമളാൻ + ശവ്വാൽ + ദുൽ ഖഹദ് + ദുൽ ഹിജ്ജ + + + + + മു + + + + + + + + + + ദു + ദു + + + + + + ഹിജറ + + + + + + + കാലഘട്ടം + + + വർഷം + കഴിഞ്ഞ വർഷം + ഈ വർ‌ഷം + അടുത്തവർഷം + + {0} വർഷത്തിൽ + {0} വർഷത്തിൽ + + + {0} വർഷം മുമ്പ് + {0} വർഷം മുമ്പ് + + + + മാസം + കഴിഞ്ഞ മാസം + ഈ മാസം + അടുത്ത മാസം + + {0} മാസത്തിൽ + {0} മാസത്തിൽ + + + {0} മാസം മുമ്പ് + {0} മാസം മുമ്പ് + + + + ആഴ്ച + കഴിഞ്ഞ ആഴ്‌ച + ഈ ആഴ്ച + അടുത്ത ആഴ്ച + + {0} ആഴ്ചയിൽ + {0} ആഴ്ചയിൽ + + + {0} ആഴ്ച മുമ്പ് + {0} ആഴ്ച മുമ്പ് + + + + ദിവസം + മിനിഞ്ഞാന്ന് + ഇന്നലെ + ഇന്ന് + നാളെ + മറ്റന്നാൾ + + {0} ദിവസത്തിൽ + {0} ദിവസത്തിൽ + + + {0} ദിവസം മുമ്പ് + {0} ദിവസം മുമ്പ് + + + + ആഴ്ചയിലെ ദിവസം + + + കഴിഞ്ഞ ഞായറാഴ്ച + ഈ ഞായറാഴ്ച + അടുത്ത ഞായറാഴ്ച + + + കഴിഞ്ഞ തിങ്കളാഴ്ച + ഈ തിങ്കളാഴ്ച + അടുത്ത തിങ്കളാഴ്ച + + + കഴിഞ്ഞ ചൊവാഴ്ച + ഈ ചൊവാഴ്ച + അടുത്ത ചൊവാഴ്ച + + + കഴിഞ്ഞ ബുധനാഴ്ച + ഈ ബുധനാഴ്ച + അടുത്ത ബുധനാഴ്ച + + + കഴിഞ്ഞ വ്യാഴാഴ്ച + ഈ വ്യാഴാഴ്ച + അടുത്ത വ്യാഴാഴ്ച + + + കഴിഞ്ഞ വെള്ളിയാഴ്ച + ഈ വെള്ളിയാഴ്ച + അടുത്ത വെള്ളിയാഴ്ച + + + കഴിഞ്ഞ ശനിയാഴ്ച + ഈ ശനിയാഴ്ച + അടുത്ത ശനിയാഴ്ച + + + am/pm + + + മണിക്കൂർ + + {0} മണിക്കൂറിൽ + {0} മണിക്കൂറിൽ + + + {0} മണിക്കൂർ മുമ്പ് + {0} മണിക്കൂർ മുമ്പ് + + + + മിനിട്ട് + + {0} മിനിറ്റിൽ + {0} മിനിറ്റിനുള്ളിൽ + + + {0} മിനിറ്റ് മുമ്പ് + {0} മിനിറ്റ് മുമ്പ് + + + + സെക്കൻറ് + ഇപ്പോൾ + + {0} സെക്കൻഡിൽ + {0} സെക്കൻഡിൽ + + + {0} സെക്കൻറ് മുമ്പ് + {0} സെക്കൻറ് മുമ്പ് + + + + മേഖല + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} സമയം + {0} ഡേലൈറ്റ് സമയം + {0} സ്റ്റാന്റേഡ് സമയം + {1} ({0}) + + അജ്ഞാത നഗരം + + + അണ്ടോറ + + + ദുബായ് + + + കാബൂൾ + + + ആൻറിഗ്വ + + + ആൻഗ്വില്ല + + + ടിരാനെ + + + യേരവൻ‌ + + + ലുവാൻഡ + + + റൊതീറ + + + പാമർ + + + സ്യോവ + + + മാവ്സൺ + + + ഡെയ്‌വിസ് + + + വോസ്റ്റോക് + + + കാസെ + + + ഡ്യൂമണ്ട് ഡി യുർവിൽ + + + മാക്മർഡോ + + + റിയോ ഗ്യാലഗോസ് + + + മെൻഡോസ + + + സാൻ ജുവാൻ + + + ഉഷിയ + + + ലാ റിയോജ + + + സാൻ ലൂയിസ് + + + ‍ക്യാറ്റമാർക്ക + + + സാൽട്ട + + + ജുജുയ് + + + റ്റുകുമാൻ + + + കൊർദോവ + + + ബ്യൂനസ് ഐറിസ് + + + പാഗോ പോഗോ + + + വിയന്ന + + + പെർത്ത് + + + യൂക്ല + + + ഡാർവിൻ + + + അഡലെയ്ഡ് + + + ബ്രോക്കൺ ഹിൽ + + + ക്യൂറി + + + മെൽബൺ + + + ഹൊബാർട്ട് + + + ലിൻഡെമാൻ + + + സിഡ്നി + + + ബ്രിസ്‌ബേയ്ൻ + + + മക്വയറി + + + ലോഡ് ഹോവ് + + + അറൂബ + + + മരിയാഹാമൻ + + + ബാക്കു + + + സരയേവോ + + + ബാർബഡോസ് + + + ധാക്ക + + + ബ്രസ്സൽ‌സ് + + + ഔഗാദൌഗൌ + + + സോഫിയ + + + ബഹ്റിൻ + + + ബുജും‌ബുര + + + പോർ‌ട്ടോ-നോവോ + + + സെൻറ് ബർത്തലെമി + + + ബർമുഡ + + + ബ്രൂണൈ + + + ലാ പാസ് + + + കാർലൻഡിജെക്ക് + + + യെറുനീപ്പെ + + + റിയോ ബ്രാങ്കോ + + + പോർട്ടോ വെല്ലോ + + + ബോവ വിസ്റ്റ + + + മനൌസ് + + + കുയ്‌ബ + + + സാൻററെം + + + ക്യാന്പോ ഗ്രാൻഡെ + + + ബെലം + + + അറഗ്വൈന + + + സാവോ പോലോ + + + ബഹിയ + + + ഫോർട്ടലീസ + + + മാസിയോ + + + റെസീഫെ + + + നൊറോന + + + നസ്സാവു + + + തിംഫു + + + ഗാബൊറോൺ‌ + + + മിൻ‌സ്ക് + + + ബെലീസ് + + + ഡോവ്സൺ + + + വൈറ്റ്ഹോഴ്സ് + + + ഇനുവിക് + + + വാൻ‌കൂവർ + + + ഡോവ്സൺ ക്രീക്ക് + + + ക്രെസ്റ്റൺ + + + യെല്ലോനൈഫ് + + + എഡ്മോൺടൺ + + + സ്വിഫ്റ്റ് കറൻറ് + + + കേംബ്രിഡ്‌ജ് ബേ + + + റിജീന + + + വിന്നിപെഗ് + + + റെസല്യൂട്ട് + + + റെയ്നി റിവർ + + + റാങ്കിൻ ഇൻലെറ്റ് + + + കോറൽ ഹാർബർ + + + തണ്ടർ ബേ + + + നിപ്പിഗോൺ + + + ടൊറണ്ടോ + + + ഇഖാലിത് + + + പാൻഗ്‌നിറ്റങ് + + + മോങ്റ്റൺ + + + ഹാലിഫാക്സ് + + + ഗൂസ് ബേ + + + ഗ്ലെയ്സ് ബേ + + + ബ്ലാങ്ക് സാബ്ലോൺ + + + സെയ്ൻറ് ജോൺസ് + + + കോക്കോസ് + + + കിൻഷാസ + + + ലൂബുംബാഷി + + + ബംഗുയി + + + ബ്രാസവിൽ + + + സൂറിച്ച് + + + അബിദ്‌ജാൻ‌ + + + റാരോടോംഗ + + + ഈസ്റ്റർ + + + സാൻറിയാഗോ + + + ഡൌല + + + കാഷ്ഗർ + + + ഉറുംഖി + + + ചോങ്ഖിങ് + + + ഷാങ്‌ഹായി + + + ഹാർബിൻ + + + ബൊഗോട്ട + + + കോസ്റ്റ റിക്ക + + + ഹവാന + + + കേപ് വെർദെ + + + കുറാക്കാവോ + + + ക്രിസ്തുമസ് + + + നിക്കോഷ്യ + + + പ്രാഗ് + + + ബുസിൻജൻ + + + ബെർ‌ലിൻ‌ + + + ദിബൌട്ടി + + + കോപ്പൻ‌ഹേഗൻ‌ + + + ഡൊമിനിക്ക + + + സാന്തോ ഡോമിംഗോ + + + അൾജിയേഴ്‌സ് + + + ഗാലപ്പാഗോസ് + + + ഗുവായക്വിൽ + + + ടാലിൻ‌ + + + കെയ്‌റോ + + + എൽ‌ ഐയുൻ‌ + + + അസ്‍മാര + + + ക്യാനറി + + + ക്യൂട്ട + + + മാഡ്രിഡ് + + + അഡിസ് അബാബ + + + ഹെൽ‌സിങ്കി + + + ഫിജി + + + സ്റ്റാൻ‌ലി + + + ട്രക് + + + പൊനാപ് + + + കൊസ്രേ + + + ഫെറോ + + + പാരീസ് + + + ലിബ്രെവില്ല + + + + ബ്രിട്ടീഷ് വേനൽക്കാലം + + ലണ്ടൻ‌ + + + ഗ്രനേഡ + + + തിബിലിസി + + + കയീൻ‌ + + + ഗേൺസേ + + + ആക്ര + + + ജിബ്രാൾട്ടർ + + + തൂളി + + + ഗോഡ്‌താബ് + + + സ്കോർസ്ബൈസണ്ട് + + + ഡാൻമാർക്ക്ഷാവ്ൻ + + + ബഞ്ചുൽ + + + കൊണാക്രി + + + ഗ്വാഡലൂപ്പ് + + + മലാബോ + + + ഏതൻ‌സ് + + + ദക്ഷിണ ജോർജിയ + + + ഗ്വോട്ടിമാല + + + ഗ്വാം + + + ബിസ്സാവു + + + ഗയാന + + + ഹോങ്കോംഗ് + + + റ്റെഗുസി‍ഗാൽപ്പ + + + സാക്രെബ് + + + പോർട്ട്-ഓവ്-പ്രിൻസ് + + + ബുഡാപെസ്റ്റ് + + + ജക്കാർത്ത + + + പൊൻറിയാനക് + + + മകസ്സർ + + + ജയപുര + + + + ഐറിഷ് വേനൽക്കാലം + + ഡബ്ലിൻ + + + ജെറുസലേം + + + ഐൽ‌ ഓഫ് മാൻ‌ + + + കൊൽ‌ക്കത്ത + + + ചാഗോസ് + + + ബാഗ്‌ദാദ് + + + ടെഹ്‌റാൻ‌ + + + റേയ്‌ജാവിക് + + + റോം + + + ജേഴ്‌സി + + + ജമൈക്ക + + + അമ്മാൻ‌ + + + ടോക്കിയോ + + + നയ്‌റോബി + + + ബിഷ്‌കേക് + + + നാം പെൻ + + + എൻഡബറി + + + കിരിതിമാത്തി + + + തരാവ + + + കൊമോറോ + + + സെൻറ് കിറ്റസ് + + + പ്യോംഗ്‌യാംഗ് + + + സിയൂൾ + + + കുവൈത്ത് + + + കേമാൻ + + + അഖ്തൌ + + + ഓറൽ + + + അഖ്‌തോബ് + + + ഖിസിലോർഡ + + + അൽമതി + + + വെന്റിയാൻ + + + ബെയ്‌റൂട്ട് + + + സെൻറ് ലൂസിയ + + + വാദുസ് + + + കൊളം‌ബോ + + + മൺ‌റോവിയ + + + മസേറു + + + വിൽ‌നിയസ് + + + ലക്‌സംബർഗ് + + + റിഗ + + + ട്രിപൊളി + + + കാസബ്ലാങ്ക + + + മൊണാക്കോ + + + ചിസിനാവു + + + പൊഡ്‍ഗൊറിസ + + + മാരിഗോ + + + അൻറാനനറിവോ + + + ക്വാജലെയ്ൻ + + + മജൂറോ + + + സ്കോപ്പിയെ + + + ബമാകോ + + + റങ്കൂൺ‌ + + + ഹൌഡ് + + + ഉലാൻബട്ടൂർ + + + ചൊയ്ബൽസൻ + + + മക്കാ + + + സെയ്‌പ്പാൻ‌ + + + മാർട്ടിനിക് + + + നൌവാൿഷോട്ട് + + + മൊണ്ടെസരത്ത് + + + മാൾട്ട + + + മൌറീഷ്യസ് + + + മാലിദ്വീപുകൾ + + + ബ്ലാണ്ടെയർ‌ + + + തിയുവാന + + + സാന്ത ഇസബേൽ + + + ഹെർമോസില്ലോ + + + മാസറ്റ്ലാൻ + + + ചിവാവു + + + ബഹിയ ബൻഡാരസ് + + + ഒജിൻഗ + + + മോണ്ടർ‌റേ + + + മെക്സിക്കോ സിറ്റി + + + മറ്റാമൊറോസ് + + + മെരിഡ + + + കാൻകൂൺ + + + ക്വാലലം‌പൂർ‌‌ + + + കുചിങ് + + + മാപ്യുട്ടോ + + + വിൻഡ്‌ഹോക് + + + നോമിയ + + + നിയാമി + + + നോർ‌ഫോക്ക് + + + ലാഗോസ് + + + മനാഗ്വ + + + ആം‌സ്റ്റർ‌ഡാം + + + ഓസ്ലോ + + + കാഠ്‌മണ്ഡു + + + നവ്‌റു + + + നിയു + + + ചാതം + + + ഓക്ക്‌‌ലാൻറ് + + + മസ്കറ്റ് + + + പനാമ + + + ലിമ + + + താഹിതി + + + മാർക്യുസാസ് + + + ഗാന്പിയർ + + + പോർട്ട് മോഴ്‌സ്ബൈ + + + മനില + + + കറാച്ചി + + + വാർസോ + + + മൈക്വെലൻ‌ + + + പിറ്റ്കയിൻ‌ + + + പ്യൂർട്ടറിക്കോ + + + ഗാസ + + + ഹെബ്‌റോൺ + + + എയ്സോർസ് + + + മഡെയ്റ + + + ലിസ്‌ബൺ‌ + + + പലാവു + + + അസൻ‌ഷ്യൻ‌ + + + ഖത്തർ + + + റീയൂണിയൻ + + + ബുച്ചാറെസ്റ്റ് + + + ബെൽഗ്രേഡ് + + + ക്യാലിനിൻഗ്രാഡ് + + + മോസ്കോ + + + വോൾഗോഗ്രാഡ് + + + സമാറ + + + യാകാറ്റെറിൻബർഗ് + + + ഒംസ്ക് + + + നൊവോസിബിർസ്ക് + + + നോവോകുസെൻസ്‌ക് + + + ക്രാസ്നോയാസ്ക് + + + ഇർകസ്ക് + + + യാകസ്ക് + + + വ്ളാഡിവോസ്റ്റോക് + + + കച്ചൻഗ + + + സഖാലിൻ + + + യുസ്-നേര + + + മഗഡാൻ + + + കാംചട്ക + + + അനാഡിർ + + + കിഗാലി + + + റിയാദ് + + + ഗ്വാഡോ കനാൽ + + + മാഹി + + + ഖാർ‌തൌം + + + സ്റ്റോക്ൿഹോം + + + സിംഗപ്പൂർ + + + സെൻറ് ഹെലെന + + + ലുബ്‍ലിയാന + + + ലംഗ്‍യെർബിൻ + + + ബ്രാട്ടിസ്‍ലാവ + + + ഫ്രീടൌൺ‌ + + + സാൻ മാരിനോ + + + ഡാക്കർ‌ + + + മൊഗാദിഷു + + + പരാമാരിബോ + + + ജുബ + + + സാവോ ടോം‌ + + + എൽ സാൽ‌വദോർ + + + ലോവർ പ്രിൻസസ് ക്വാർട്ടർ + + + ദമാസ്കസ് + + + മബാബെയ്‌ൻ‌ + + + ഗ്രാൻഡ് ടർക്ക് + + + ജമെന + + + കെർഗുലെൻ + + + ലോം + + + ബാങ്കോക്ക് + + + ദുഷൻ‌ബെ + + + ഫക്കാവോഫോ + + + ദിലി + + + ആഷ്‌ഗാബട്ട് + + + ട്യൂണിസ് + + + ടോംഗാടാപു + + + ഇസ്താം‌ബുൾ‌ + + + പോർ‌ട്ട് ഓഫ് സ്‌പെയിൻ‌ + + + ഫുണാഫുട്ടി + + + തായ്‌പെയ് + + + ദാർ എസ് സലാം + + + ഉസ്ഗൊറോഡ് + + + കീവ് + + + സിംഫെറോപോൾ + + + സാപ്പറോസൈ + + + കമ്പാല + + + മിഡ്‌വേ + + + ജോൺസ്റ്റൺ + + + വെയ്ക് + + + അഡാക് + + + നൌം + + + ഹോണലൂലു + + + ആങ്കറേജ് + + + യാകുറ്റാറ്റ് + + + സിറ്റ്‌കാ + + + ജൂനോ + + + മെറ്റ്‌ലാകാറ്റ്‌ല + + + ലോസ് എയ്ഞ്ചലസ് + + + ബൊയ്സി + + + ഫീനിക്സ് + + + ഡെൻ‌വർ + + + ബ്യൂല, വടക്കൻ ഡെക്കോട്ട + + + ന്യൂ സെയ്‌ലം, നോർത്ത് ഡക്കോട്ട + + + സെൻറർ, നോർത്ത് ഡക്കോട്ട + + + ചിക്കാഗോ + + + മെനോമിനീ + + + വിൻസെൻസ്, ഇൻഡ്യാന + + + പീറ്റേഴ്സ്ബർഗ്, ഇൻഡ്യാന + + + റ്റെൽ സിറ്റി, ഇൻഡ്യാന + + + നോക്സ്, ഇൻഡ്യാന + + + വിനാമാക്, ഇൻഡ്യാന + + + മരെങ്കോ, ഇൻഡ്യാനാ + + + ഇൻഡ്യാനാപോലീസ് + + + ലൂയിവിൽ + + + വിവെയ്, ഇൻഡ്യാന + + + മോണ്ടിസെല്ലോ, കെൻറക്കി + + + ഡെട്രോയിറ്റ് + + + ന്യൂയോർക്ക് + + + മൊണ്ടെ‌വീഡിയോ + + + സമർക്കന്ദ് + + + താഷ്‌ക്കൻറ് + + + വത്തിക്കാൻ + + + സെൻറ് വിൻ‌സെൻറ് + + + കരാക്കസ് + + + ടോർ‌ട്ടോള + + + സെൻറ്. തോമസ് + + + ഹോ ചി മിൻ സിറ്റി + + + ഇഫാതെ + + + വാല്ലിസ് + + + ആപിയ + + + ഏദെൻ + + + മയോട്ടി + + + ജോഹന്നാസ്ബർ‌ഗ് + + + ലുസാക + + + ഹരാരെ + + + + എയ്ക്കർ സമയം + എയ്ക്കർ സ്റ്റാൻഡേർഡ് സമയം + എയ്ക്കർ വേനൽക്കാല സമയം + + + + + അഫ്ഗാനിസ്ഥാൻ സമയം + + + + + മദ്ധ്യ ആഫ്രിക്കൻ സമയം + + + + + കിഴക്കേ ആഫ്രിക്കൻ സമയം + + + + + ദക്ഷിണാഫ്രിക്കൻ സമയം + + + + + പശ്ചിമാഫ്രിക്കൻ സമയം + പശ്ചിമാഫ്രിക്കൻ സ്റ്റാൻഡേർഡ് സമയം + പശ്ചിമാഫ്രിക്കൻ വേനൽക്കാല സമയം + + + + + അലാസ്ക്ക സമയം + അലാസ്ക സ്റ്റാൻഡേർഡ് സമയം + അലാസ്ക പകൽ സമയം + + + + + അൽമതി സമയം + അൽമതി സ്റ്റാൻഡേർഡ് സമയം + അൽമതി വേനൽക്കാല സമയം + + + + + ആമസോൺ സമയം + ആമസോൺ സ്റ്റാൻഡേർഡ് സമയം + ആമസോൺ വേനൽക്കാല സമയം + + + + + സെൻട്രൽ സമയം + സെൻട്രൽ സ്റ്റാൻഡേർഡ് സമയം + സെൻട്രൽ പകൽ സമയം + + + + + കിഴക്കൻ സമയം + കിഴക്കൻ സ്റ്റാൻഡേർഡ് സമയം + കിഴക്കൻ പകൽ സമയം + + + + + മൌണ്ടൻ സമയം + മൌണ്ടൻ സ്റ്റാൻഡേർഡ് സമയം + മൌണ്ടൻ പകൽ സമയം + + + + + പസഫിക് സമയം + പസഫിക് സ്റ്റാൻഡേർഡ് സമയം + പസഫിക് പകൽ സമയം + + + + + അനാഡിർ സമയം + അനാഡിർ സ്റ്റാൻഡേർഡ് സമയം + അനാഡിർ വേനൽക്കാല സമയം + + + + + അഖ്തൌ സമയം + അഖ്തൌ സ്റ്റാൻഡേർഡ് സമയം + അഖ്തൌ വേനൽക്കാല സമയം + + + + + അഖ്തോബ് സമയം + അഖ്തോബ് സ്റ്റാൻഡേർഡ് സമയം + അഖ്തോബ് വേനൽക്കാല സമയം + + + + + അറേബ്യൻ സമയം + അറേബ്യൻ സ്റ്റാൻഡേർഡ് സമയം + അറേബ്യൻ പകൽ സമയം + + + + + അർജൻറീന സമയം + അർജൻറീന സ്റ്റാൻഡേർഡ് സമയം + അർജൻറീന വേനൽക്കാല സമയം + + + + + പശ്ചിമ അർജൻറീന സമയം + പശ്ചിമ അർജൻറീന സ്റ്റാൻഡേർഡ് സമയം + പശ്ചിമ അർജൻറീന വേനൽക്കാല സമയം + + + + + അർമേനിയ സമയം + അർമേനിയ സ്റ്റാൻഡേർഡ് സമയം + അർമേനിയ വേനൽക്കാല സമയം + + + + + അറ്റ്ലാൻറിക് സമയം + അറ്റ്ലാൻറിക് സ്റ്റാൻഡേർഡ് സമയം + അറ്റ്ലാൻറിക് പകൽ സമയം + + + + + സെൻട്രൽ ഓസ്ട്രേലിയ സമയം + ഓസ്ട്രേലിയൻ സെൻട്രൽ സ്റ്റാൻഡേർഡ് സമയം + ഓസ്ട്രേലിയൻ സെൻട്രൽ പകൽ സമയം + + + + + ഓസ്ട്രേലിയൻ സെൻട്രൽ വെസ്റ്റേൺ സമയം + ഓസ്ട്രേലിയൻ സെൻട്രൽ വെസ്റ്റേൺ സ്റ്റാൻഡേർഡ് സമയം + ഓസ്ട്രേലിയൻ സെൻട്രൽ വെസ്റ്റേൺ പകൽ സമയം + + + + + ഈസ്റ്റേൺ ഓസ്ട്രേലിയ സമയം + ഓസ്ട്രേലിയൻ ഈസ്റ്റേൺ സ്റ്റാൻഡേർഡ് സമയം + ഓസ്ട്രേലിയൻ ഈസ്റ്റേൺ പകൽ സമയം + + + + + വെസ്റ്റേൺ ഓസ്ട്രേലിയ സമയം + ഓസ്ട്രേലിയൻ ‍വെസ്റ്റേൺ സ്റ്റാൻഡേർഡ് + ഓസ്ട്രേലിയൻ ‍വെസ്റ്റേൺ പകൽ സമയം + + + + + അസർബയ്ജാൻ സമയം + അസർബയ്ജാൻ സ്റ്റാൻഡേർഡ് സമയം + അസർബയ്ജാൻ വേനൽക്കാല സമയം + + + + + എയ്സോർസ് സമയം + എയ്സോർസ് സ്റ്റാൻഡേർഡ് സമയം + എയ്സോർസ് വേനൽക്കാല സമയം + + + + + ബംഗ്ലാദേശ് സമയം + ബംഗ്ലാദേശ് സ്റ്റാൻഡേർഡ് സമയം + ബംഗ്ലാദേശ് വേനൽക്കാല സമയം + + + + + ഭൂട്ടാൻ സമയം + + + + + ബൊളീവിയ സമയം + + + + + ബ്രാസിലിയ സമയം + ബ്രസീലിയ സ്റ്റാൻഡേർഡ് സമയം + ബ്രസീലിയ വേനൽക്കാല സമയം + + + + + ബ്രൂണെ ഡാറുസ്സലാം സമയം + + + + + കെയ്പ് വെർഡെ സമയം + കെയ്പ് വെർഡെ സ്റ്റാൻഡേർഡ് സമയം + കെയ്പ് വെർഡെ വേനൽക്കാല സമയം + + + + + കമോറോ സമയം + + + + + ചാതം സമയം + ചാതം സ്റ്റാൻഡേർഡ് സമയം + ചാതം വേനൽക്കാല സമയം + + + + + ചിലി സമയം + ചിലി സ്റ്റാൻഡേർഡ് സമയം + ചിലി വേനൽക്കാല സമയം + + + + + ചൈന സമയം + ചൈനാ സ്റ്റാൻഡേർഡ് സമയം + ചൈന പകൽ സമയം + + + + + ചോയി‍ബൽസാൻ സമയം + ചോയ്ബൽസൻ സ്റ്റാൻഡേർഡ് സമയം + ചോയ്ബൽസൻ വേനൽക്കാല സമയം + + + + + ക്രിസ്മസ് ദ്വീപ് സമയം + + + + + കൊക്കോസ് ദ്വീപുകൾ സമയം + + + + + കൊളംബിയ സമയം + കൊളംബിയ സ്റ്റാൻഡേർഡ് സമയം + കൊളംബിയ വേനൽക്കാല സമയം + + + + + കുക്ക് ദ്വീപുകൾ സമയം + കുക്ക് ദ്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയം + കുക്ക് ദ്വീപുകൾ അർദ്ധ വേനൽക്കാല സമയം + + + + + ക്യൂബ സമയം + ക്യൂബ സ്റ്റാൻഡേർഡ് സമയം + ക്യൂബ പകൽ സമയം + + + + + ഡെയ്‌വിസ് സമയം + + + + + ഡ്യൂമണ്ട് ഡി യൂർവിൽ സമയം + + + + + കിഴക്കൻ തിമൂർ സമയം + + + + + ഈസ്റ്റർ ദ്വീപ് സമയം + ഈസ്റ്റർ ദ്വീപ് സ്റ്റാൻഡേർഡ് സമയം + ഈസ്റ്റർ ദ്വീപ് വേനൽക്കാല സമയം + + + + + ഇക്വഡോർ സമയം + + + + + സെൻട്രൽ യൂറോപ്യൻ സമയം + സെൻട്രൽ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയം + സെൻട്രൽ യൂറോപ്യൻ വേനൽക്കാല സമയം + + + + + കിഴക്കൻ യൂറോപ്യൻ സമയം + കിഴക്കൻ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയം + കിഴക്കൻ യൂറോപ്യൻ വേനൽക്കാല സമയം + + + + + പടിഞ്ഞാറൻ യൂറോപ്യൻ സമയം + പടിഞ്ഞാറൻ യൂറോപ്യൻ സ്റ്റാൻഡേർഡ് സമയം + പടിഞ്ഞാറൻ യൂറോപ്യൻ ഗ്രീഷ്‌മകാല സമയം + + + + + ഫാക്‌ലാൻഡ് ദ്വീപുകൾ സമയം + ഫാക്‌ലാൻഡ് ദ്വീപുകൾ സ്റ്റാൻഡേർഡ് സമയം + ഫാക്‌ലാൻഡ് ദ്വീപുകൾ വേനൽക്കാല സമയം + + + + + ഫിജി സമയം + ഫിജി സ്റ്റാൻഡേർഡ് സമയം + ഫിജി വേനൽക്കാല സമയം + + + + + ഫ്രെഞ്ച് ഗയാന സമയം + + + + + ഫ്രെഞ്ച് സതേൺ ആൻഡ് അൻറാർട്ടിക് സമയം + + + + + ഗാലപ്പാഗോസ് സമയം + + + + + ഗാമ്പിയർ സമയം + + + + + ജോർജ്ജിയ സമയം + ജോർജ്ജിയ സ്റ്റാൻഡേർഡ് സമയം + ജോർജ്ജിയ വേനൽക്കാല സമയം + + + + + ഗിൽബർട്ട് ദ്വീപുകൾ സമയം + + + + + ഗ്രീൻവിച്ച് മീൻ സമയം + + + + + കിഴക്കൻ ഗ്രീൻലാൻഡ് സമയം + കിഴക്കൻ ഗ്രീൻലാൻഡ് സ്റ്റാൻഡേർഡ് സമയം + കിഴക്കൻ ഗ്രീൻലാൻഡ് വേനൽക്കാല സമയം + + + + + പശ്ചിമ ഗ്രീൻലാൻഡ് സമയം + പശ്ചിമ ഗ്രീൻലാൻഡ് സ്റ്റാൻഡേർഡ് സമയം + പശ്ചിമ ഗ്രീൻലാൻഡ് വേനൽക്കാല സമയം + + + + + ഗ്വാം സ്റ്റാൻഡേർഡ് സമയം + + + + + ഗൾഫ് സമയം + + + + + ഗയാന സമയം + + + + + ഹവായി-അലൂഷ്യൻ സമയം + ഹവായി-അലൂഷ്യൻ സ്റ്റാൻഡേർഡ് സമയം + ഹവായി-അലൂഷ്യൻ പകൽ സമയം + + + + + ഹോങ് കോങ് സമയം + ഹോങ് കോങ് സ്റ്റാൻഡേർഡ് സമയം + ഹോങ് കോങ് വേനൽക്കാല സമയം + + + + + ഹൌഡ് സമയം + ഹൌഡ് സ്റ്റാൻഡേർഡ് സമയം + ഹൌഡ് വേനൽക്കാല സമയം + + + + + ഇൻ‌ഡ്യ സ്റ്റാൻഡേർഡ് സമയം + + + IST + + + + + ഇൻഡ്യൻ മഹാസമുദ്ര സമയം + + + + + ഇൻഡോചൈന സമയം + + + + + സെൻട്രൽ ഇൻഡോനേഷ്യ സമയം + + + + + കിഴക്കൻ ഇൻഡോനേഷ്യ സമയം + + + + + പശ്ചിമ ഇൻഡോനേഷ്യ സമയം + + + + + ഇറാൻ സമയം + ഇറാൻ സ്റ്റാൻഡേർഡ് സമയം + ഇറാൻ പകൽ സമയം + + + + + ഇർകസ്ക് സമയം + ഇർകസ്ക് സ്റ്റാൻഡേർഡ് സമയം + ഇർകസ്ക് വേനൽക്കാല സമയം + + + + + ഇസ്രായേൽ സമയം + ഇസ്രായേൽ സ്റ്റാൻഡേർഡ് സമയം + ഇസ്രായേൽ പകൽ സമയം + + + + + ജപ്പാൻ സമയം + ജപ്പാൻ സ്റ്റാൻഡേർഡ് സമയം + ജപ്പാൻ പകൽ സമയം + + + + + പെട്രോപാവ്‌ലോസ്ക് കംചാസ്കി സമയം + പെട്രോപാവ്‌ലോസ്ക് കംചാസ്കി സ്റ്റാൻഡേർഡ് സമയം + പെട്രോപാവ്‌ലോസ്ക് കംചാസ്കി വേനൽക്കാല സമയം + + + + + കിഴക്കൻ കസാഖ്സ്ഥാൻ സമയം + + + + + പടിഞ്ഞാറൻ കസാഖ്സ്ഥാൻ സമയം + + + + + കൊറിയൻ സമയം + കൊറിയൻ സ്റ്റാൻഡേർഡ് സമയം + കൊറിയൻ പകൽ സമയം + + + + + കൊസ്റേ സമയം + + + + + ക്രിസ്നോയാർസ്കി സമയം + ക്രാസ്നോയാഴ്സ്ക് സ്റ്റാൻഡേർഡ് സമയം + ക്രാസ്നോയാഴ്സ്ക് വേനൽക്കാല സമയം + + + + + കിർഗിസ്ഥാൻ സമയം + + + + + ലങ്ക സമയം + + + + + ലൈൻ ദ്വീപുകൾ സമയം + + + + + ലോർഡ് ഹോവ് സമയം + ലോർഡ് ഹോവ് സ്റ്റാൻഡേർഡ് സമയം + ലോർഡ് ഹോവ് പകൽ സമയം + + + + + മകൌ സമയം + മകൌ സ്റ്റാൻഡേർഡ് സമയം + മകൌ വേനൽക്കാല സമയം + + + + + മക്വാറെ സമയം + + + + + മഗഡാൻ സ്മയം + മഗാഡൻ സ്റ്റാൻഡേർഡ് സമയം + മഗാഡൻ വേനൽക്കാല സമയം + + + + + മലേഷ്യ സമയം + + + + + മാലിദ്വീപ് സമയം + + + + + മാർക്യുസാസ് സമയം + + + + + മാർഷൽ ദ്വീപുകൾ സമയം + + + + + മൌറിഷ്യസ് സമയം + മൌറിഷ്യസ് സ്റ്റാൻഡേർഡ് സമയം + മൌറീഷ്യസ് വേനൽക്കാല സമയം + + + + + മാവ്സൺ സമയം + + + + + യുലാൻ ബാറ്റർ സമയം + യുലാൻ ബാറ്റർ സ്റ്റാൻഡേർഡ് സമയം + യുലാൻ ബാറ്റർ വേനൽക്കാല സമയം + + + + + മോസ്കോ സമയം + മോസ്കോ സ്റ്റാൻഡേർഡ് സമയം + മോസ്കോ വേനൽക്കാല സമയം + + + + + മ്യാൻമാർ സമയം + + + + + നൌറു സമയം + + + + + നേപ്പാൾ സമയം + + + + + ന്യൂ കാലിഡോണിയ സമയം + ന്യൂ കാലിഡോണിയ സ്റ്റാൻഡേർഡ് സമയം + ന്യൂ കാലിഡോണിയ വേനൽക്കാല സമയം + + + + + ന്യൂസീലൻഡ് സമയം + ന്യൂസീലൻഡ് സ്റ്റാൻഡേർഡ് സമയം + ന്യൂസീലൻഡ് പകൽ സമയം + + + + + ന്യൂഫൌണ്ട്‌ലാൻഡ് സമയം + ന്യൂഫൌണ്ട്‌ലാൻഡ് സ്റ്റാൻഡേർഡ് സമയം + ന്യൂഫൌണ്ട്‌ലാൻഡ് പകൽ‌ സമയം + + + + + നിയു സമയം + + + + + നോർഫോക് ദ്വീപുകൾ സമയം + + + + + ഫെർണാണ്ടോ ഡി നൊറോന സമയം + ഫെർണാണ്ടോ ഡി നൊറോന സ്റ്റാൻഡേർഡ് സമയം + ഫെർണാണ്ടോ ഡി നൊറോന വേനൽക്കാല സമയം + + + + + നോർത്ത് മറിയാനാ ദ്വീപുകൾ സമയം + + + + + നൊവേസിബിർസ്ക് സമയം + നോവോസിബിർസ്ക് സ്റ്റാൻഡേർഡ് സമയം + നോവോസിബിർസ്ക് വേനൽക്കാല സമയം + + + + + ഓംസ്‌ക്ക് സമയം + ഓംസ്‌ക്ക് സ്റ്റാൻഡേർഡ് സമയം + ഓംസ്‌ക്ക് വേനൽക്കാല സമയം + + + + + പാകിസ്ഥാൻ സമയം + പാകിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയം + പാകിസ്ഥാൻ വേനൽക്കാല സമയം + + + + + പലൌ സമയം + + + + + പാപ്യു ന്യൂ ഗിനിയ സമയം + + + + + പരാഗ്വേ സമയം + പരാഗ്വേ സ്റ്റാൻഡേർഡ് സമയം + പരാഗ്വേ വേനൽക്കാല സമയം + + + + + പെറു സമയം + പെറു സ്റ്റാൻഡേർഡ് സമയം + പെറു വേനൽക്കാല സമയം + + + + + ഫിലിപ്പീൻ സമയം + ഫിലിപ്പീൻ സ്റ്റാൻഡേർഡ് സമയം + ഫിലിപ്പീൻ വേനൽക്കാല സമയം + + + + + ഫീനിക്സ് ദ്വീപുകൾ സമയം + + + + + പിയറി ആൻഡ് മിക്വലൻ സമയം + പിയറി ആൻഡ് മിക്വലൻ സ്റ്റാൻഡേർഡ് സമയം + പിയറി ആൻഡ് മിക്വലൻ പകൽ സമയം + + + + + പിറ്റ്കെയ്ൻ സമയം + + + + + പൊനാപ് സമയം + + + + + ഖിസിലോർഡ സമയം + ഖിസിലോർഡ സ്റ്റാൻഡേർഡ് സമയം + ഖിസിലോർഡ വേനൽക്കാല സമയം + + + + + റീയൂണിയൻ സമയം + + + + + റൊതീറ സമയം + + + + + സഖലിൻ സമയം + സഖാലിൻ സ്റ്റാൻഡേർഡ് സമയം + സഖാലിൻ വേനൽക്കാല സമയം + + + + + സമാര സമയം + സമാറ സ്റ്റാൻഡേർഡ് സമയം + സമാറ വേനൽക്കാല സമയം + + + + + സമോവാ സമയം + സമോവാ സ്റ്റാൻഡേർഡ് സമയം + സമോവാ വേനൽക്കാല സമയം + + + + + സെയ്ഷെൽസ് സമയം + + + + + സിംഗപ്പൂർ സ്റ്റാൻഡേർഡ് സമയം + + + + + സോളമൻ ദ്വീപുകൾ സമയം + + + + + ദക്ഷിണ ജോർജ്ജിയ സമയം + + + + + സൂറിനാം സമയം + + + + + സ്യോവ സമയം + + + + + തഹിതി സമയം + + + + + തായ്‌പെയ് സമയം + തായ്‌പെയ് സ്റ്റാൻഡേർഡ് സമയം + തായ്‌പെയ് പകൽ സമയം + + + + + തജികിസ്ഥാൻ സമയം + + + + + റ്റോക്കിലൌ സമയം + + + + + റ്റോംഗാ സമയം + റ്റോംഗാ സ്റ്റാൻഡേർഡ് സമയം + റ്റോംഗാ വേനൽക്കാല സമയം + + + + + ചൂക്ക് സമയം + + + + + തുർക്ക്മെനിസ്ഥാൻ സമയം + തുർക്ക്മെനിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയം + തുർക്ക്മെനിസ്ഥാൻ വേനൽക്കാല സമയം + + + + + തുവാലു സമയം + + + + + ഉറുഗ്വെ സമയം + ഉറുഗ്വെ സ്റ്റാൻഡേർഡ് സമയം + ഉറുഗ്വെ വേനൽക്കാല സമയം + + + + + ഉസ്ബക്കിസ്ഥാൻ സമയം + ഉസ്ബക്കിസ്ഥാൻ സ്റ്റാൻഡേർഡ് സമയം + ഉസ്ബക്കിസ്ഥാൻ വേനൽ‌ക്കാല സമയം + + + + + വന്വാതു സമയം + വന്വാതു സ്റ്റാൻഡേർഡ് സമയം + വന്വാതു വേനൽക്കാല സമയം + + + + + വെനസ്വേല സമയം + + + + + വ്‌ളാഡിവോസ്റ്റോക് സമയം + വ്‌ളാഡിവോസ്റ്റോക് സ്റ്റാൻഡേർഡ് സമയം + വ്‌ളാഡിവോസ്റ്റോക് വേനൽക്കാല സമയം + + + + + വോൾഗോഗ്രാഡ് സമയം + വോൾഗോഗ്രാഡ് സ്റ്റാൻഡേർഡ് സമയം + വോൾഗോഗ്രാഡ് വേനൽക്കാല സമയം + + + + + വോസ്റ്റോക് സമയം + + + + + വെയ്ക് ദ്വീപ് സമയം + + + + + വാലിസ് ആൻഡ് ഫ്യൂചുന സമയം + + + + + യാകസ്‌ക്ക് സമയം + യാകസ്‌ക്ക് സ്റ്റാൻഡേർഡ് സമയം + യാകസ്‌ക്ക് വേനൽക്കാല സമയം + + + + + യിക്കാരെറിൻബർഗ് സമയം + യെക്കാറ്ററിൻബർഗ് സ്റ്റാൻഡേർഡ് സമയം + യെക്കാറ്ററിൻബർഗ് വേനൽക്കാല സമയം + + + + + + latn + + mlym + + + . + , + ; + % + + + - + E + × + + + NaN + + + . + , + ; + % + + + - + E + + + സംഖ്യയല്ല + + + + + #,##,##0.### + + + + + 0 ആയിരം + 0 ആയിരം + 00 ആയിരം + 00 ആയിരം + 000 ആയിരം + 000 ആയിരം + 0 ദശലക്ഷം + 0 ദശലക്ഷം + 00 ദശലക്ഷം + 00 ദശലക്ഷം + 000 ദശലക്ഷം + 000 ദശലക്ഷം + 0 ലക്ഷം കോടി + 0 ലക്ഷം കോടി + 00 ലക്ഷം കോടി + 00 ലക്ഷം കോടി + 000 ലക്ഷം കോടി + 000 ലക്ഷം കോടി + 0 ട്രില്യൺ + 0 ട്രില്യൺ + 00 ട്രില്യൺ + 00 ട്രില്യൺ + 000 ട്രില്യൺ + 000 ട്രില്യൺ + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + #,##,##0.00¤ + + + {0} {1} + {0} {1} + + + + അൻഡോറൻ പെസെയ്റ്റ + അൻഡോറൻ പെസെയ്റ്റ + അൻഡോറൻ പെസെയ്റ്റാസ് + + + യു.എ.ഇ. ദിർഹം + യു.എ.ഇ. ദിർഹം + യു.എ.ഇ. ദിർഹംസ് + + + അഫ്ഘാനി (1927–2002) + അഫ്ഘാനി (AFA) + അഫ്ഘാനിസ് (AFA) + + + അഫ്‌ഗാൻ അഫ്‌‌ഗാനി + അഫ്‌ഗാൻ അഫ്‌‌ഗാനി + അഫ്‌ഗാൻ അഫ്‌‌ഗാനിസ് + + + അൽബേനിയൻ ലെക് + അൽബേനിയൻ ലെക് + അൽബേനിയൻ ലെക്സ് + + + അർമേനിയൻ ഡ്രാം + അർമേനിയൻ ഡ്രാം + അർമേനിയൻ ഡ്രാംസ് + + + നെതർലൻഡ്സ് ആൻറിലൻ ഗിൽഡർ + നെതർലൻഡ്സ് ആൻഡിലൻ ഗിൽഡർ + നെതർലൻഡ്സ് ആൻഡിലൻ ഗിൽഡേഴ്സ് + + + അംഗോളൻ ‍ക്വാൻസ + അംഗോളൻ ക്വാൻസ + അംഗോളൻ ക്വാൻസാസ് + + + അംഗോളൻ ‍ക്വാൻസ (1977–1990) + അംഗോളൻ ക്വാൻസാ (AOK) + അംഗോളൻ ക്വാൻസാസ് (AOK + + + അംഗോളൻ ‍ന്യൂ ക്വാൻസ (1990–2000) + അംഗോളൻ ന്യൂ ക്വാൻസാ (AON) + അംഗോളൻ ന്യൂ ക്വാൻസാസ് (AON) + + + അംഗോളൻ ‍ക്വാൻസ റിയാജസ്റ്റാഡോ (1995–1999) + അംഗോളൻ ക്വാൻസ റീഅഡ്ജസ്റ്റാഡോ (AOR) + അംഗോളൻ ക്വാൻസാസ് റീഅഡ്ജസ്റ്റാഡോ (AOR) + + + അർജൻറീൻ ഓസ്ട്രൽ + അർജൻറീൻ ഓസ്ട്രൽ + അർജൻറീൻ ഓസ്ട്രൽസ് + + + അർജൻറീൻ പെയ്സോ (1983–1985) + അർജൻറീൻ പെയ്സോ (ARP) + അർജൻറീൻ പെയ്സോസ് (ARP) + + + അർജൻറീൻ പെസോ + അർജൻറീൻ പെസോ + അർജൻറീൻ പെസോ + + + ഓസ്ട്രേലിയൻ ഷില്ലിംഗ് + ഓസ്ട്രിയൻ ഷില്ലിംഗ് + ഓസ്ട്രിയൻ ഷില്ലിംഗ്സ് + + + ആസ്ട്രേലിയൻ ഡോളർ + ഓസ്ട്രേലിയൻ ഡോളർ + ഓസ്ട്രേലിയൻ ഡോളേഴ്സ് + A$ + + + അറൂബൻ ഗിൽഡർ + അറൂബൻ ഗിൽഡർ + അറൂബൻ ഗിൽഡേഴ്സ് + + + അസർബയ്ജാനിയൻ മനത് (1993–2006) + അസർബയ്ജാൻ മനത്‌ (AZM) + അസർബയ്ജാൻ മനത്‌സ് (AZM) + + + അസർബയ്ജാനിയൻ മനത് + അസർബയ്ജാൻ മനത് + അസർബയ്ജാൻ മനത്‌സ് + + + ബോസ്നിയ-ഹെർസഗോവിന ദിനാർ + ബോസ്നിയ ഹെർസഗോവിന ദിനാർ + ബോസ്നിയ ഹെർസഗോവിന ദിനാർസ് + + + ബോസ്നിയ-ഹെർസഗോവിന കൺവേർട്ടിബിൾ മാർക്ക് + ബോസ്നിയ ഹെർസഗോവിന കൺവേർട്ടിബിൾ മാർക്ക് + ബോസ്നിയ ഹെർസഗോവിന കൺവേർട്ടിബിൾ മാർക്സ് + + + ബാർബഡോസ് ഡോളർ + ബാർബഡോസ് ഡോളർ + ബാർബഡോസ് ഡോളർ + + + ബംഗ്ലാദേശി ടാക്ക + ബംഗ്ലാദേശ് താക്കാ + ബംഗ്ലാദേശ് താക്കാസ് + + + ബെൽജിയൻ ഫ്രാങ്ക് (കൈമാറ്റം ചെയ്യാവുന്നത്) + ബെൽജിയൻ ഫ്രാങ്ക് (കൈമാറ്റം ചെയ്യാവുന്നത്) + ബെൽജിയൻ ഫ്രാങ്ക്സ് (കൈമാറ്റം ചെയ്യാവുന്നത്) + + + ബെൽജിയൻ ഫ്രാങ്ക് + ബെൽജിയൻ ഫ്രാങ്ക് + ബെൽജിയൻ ഫ്രാങ്ക്സ് + + + ബൽജിയൻ ഫ്രാങ്ക് + ബെൽജിയൻ ഫ്രാങ്ക് (ഫിനാൻഷ്യൽ) + ബെൽജിയൻ ഫ്രാങ്ക്സ്(ഫിനാൻഷ്യൽ) + + + ബൾഗേറിയൻ ഹാർഡ് ലെവ് + ബൾഗേറിയൻ ഹാർഡ് ലെവ് + ബൾഗേറിയൻ ഹാർഡ് ലെവ്സ് + + + ബൾഗേറിയൻ ന്യൂലവ് + ബൾഗേറിയൻ ന്യൂ ലെവ് + ബൾഗേറിയൻ ന്യൂ ലെവ്സ് + + + ബഹറിൻ ദിനാർ + ബഹ്റൈൻ ദിനാർ + ബഹ്റൈൻ ദിനാർസ് + + + ബുറുണ്ടിയൻ ഫ്രാങ്ക് + ബുറുണ്ടിയൻ ഫ്രാങ്ക് + ബുറുണ്ടിയൻ ഫ്രാങ്ക് + + + ബെർമുഡൻ ഡോളർ + ബെർമുഡൻ ഡോളർ + ബെർമുഡൻ ഡോളർ + + + ബ്രൂണെ ഡോളർ + ബ്രൂണെ ഡോളർ + ബ്രൂണെ ഡോളറുകൾ + + + ബൊളീവിയൻ ബൊളിവിയാനോ + ബൊളീവിയൻ ബൊളിവിയാനോ + ബൊളീവിയൻ ബൊളീവിയാനോസ് + + + ബൊളീവിയൻ പെയ്സോ + ബൊളീവിയൻ പെയ്സോ + ബൊളീവിയൻ പെയ്സോസ് + + + ബൊളീവിയൻ എംവിഡോൾ + ബൊളീവിയൻ എംവിഡോ + ബൊളീവിയൻ എംവിഡോസ് + + + ബ്രസീലിയൻ ക്രുസെയ്റോ നോവോ (1967–1986) + ബ്രസീലിയൻ ക്രുസെയ്റോ നോവോ (BRB) + ബ്രസീലിയൻ ക്രുസെയ്റോസ് നോവോ (BRB) + + + ബ്രസീലിയൻ ക്രുസാഡോ + ബ്രസീലിയൻ ക്രുസാഡോ + ബ്രസീലിയൻ ക്രുസാഡോസ് + + + ബ്രസീലിയൻ ക്രുസെയ്റോ (1990–1993) + ബ്രസീലിയൻ ക്രുസെയ്റോ (BRE) + ബ്രസീലിയൻ ക്രുസെയ്റോസ് (BRE) + + + ബ്രസീലിയൻ റിയാൽ + ബ്രസീലിയൻ റിയാൽ + ബ്രസീലിയൻ റിയാൽ + + + ബ്രസീലിയൻ ക്രുസാഡോ നോവോ + ബ്രസീലിയൻ ക്രുസാഡോ നോവോ + ബ്രസീലിയൻ ക്രുസാഡോ നോവോസ് + + + ബ്രസീലിയൻ ക്രുസെയ്റോ + ബ്രസീലിയൻ ക്രുസെയ്റോ + ബ്രസീലിയൻ ക്രുസെയ്റോസ് + + + ബഹാമിയൻ ഡോളർ + ബഹാമിയൻ ഡോളർ + ബഹാമിയൻ ഡോളർ + + + ഭൂട്ടാൻ എൻഗൾട്രം + ഭൂട്ടാൻ എൻഗൾട്രം + ഭൂട്ടാൻ എൻഗൾട്രംസ് + + + ബർമീസ് ചാറ്റ് + ബർമീസ് ചാറ്റ് + ബർമീസ് ചാറ്റ്സ് + + + ബോട്സ്വാനൻ പ്യൂല + ബോട്സ്വാനൻ പ്യൂല + ബോട്സ്വാനൻ പ്യൂലാസ് + + + ബെലാറഷ്യൻ ന്യൂ റൂബിൾ (1994–1999) + ബെലാറഷ്യൻ ന്യൂ റൂബിൾ (BYB) + ബെലാറഷ്യൻ ന്യൂ റൂബിൾസ് (BYB) + + + ബെലാറഷ്യൻ റൂബിൾ + ബെലാറഷ്യൻ റൂബിൾ + ബെലാറഷ്യൻ റൂബിൾസ് + + + ബെലീസ് ഡോളർ + ബെലീസ് ഡോളർ + ബെലീസ് ഡോളർ + + + കനേഡിയൻ ഡോളർ + കനേഡിയൻ ഡോളർ + കനേഡിയൻ ഡോളർ + CA$ + + + കോംഗോളീസ് ഫ്രാങ്ക് + കോംഗോളീസ് ഫ്രാങ്ക് + കോംഗോളീസ് ഫ്രാങ്ക് + + + WIR യൂറോ + WIR യൂറോ + WIR യൂറോസ് + + + സ്വിസ് ഫ്രാങ്ക് + സ്വിസ് ഫ്രാങ്ക് + സ്വിസ് ഫ്രാങ്ക്സ് + + + WIR ഫ്രാങ്ക് + WIR ഫ്രാങ്ക് + WIR ഫ്രാങ്ക്സ് + + + ചിലിയൻ യൂണിഡാഡ്സ് ഡി ഫോമെൻറോ + ചിലിയൻ യൂണിഡാഡ്സ് ഡി ഫോമെൻറോ + ചിലിയൻ യൂണിഡാഡ്സ് ഡി ഫോമെൻറോസ് + + + ചിലിയൻ പെസോ + ചിലിയൻ പെസോ + ചിലിയൻ പെസോ + + + ചൈനീസ് യുവാൻ + ചൈനീസ് യുവാൻ + ചൈനീസ് യുവാൻ + CN¥ + + + കൊളംബിയൻ പെസോ + കൊളംബിയൻ പെസോ + കൊളംബിയൻ പെസോ + + + യൂണിഡാഡ് ഡി വാലർ റിയൽ + യൂണിഡാഡ് ഡി വാലർ റിയൽ + യൂണിഡാഡ് ഡി വാലർ റിയൽസ് + + + കോസ്റ്റാ റിക്കൻ കോളൻ + കോസ്റ്റാ റിക്കൻ കോളൻ + കോസ്റ്റാ റിക്കൻ കോളൻ + + + പ്രാചീന സെർബിയൻ ദിനാർ + പ്രാചീന സെർബിയൻ ദിനാർ + പ്രാചീന സെർബിയൻ ദിനാർസ് + + + ചെക്കോസ്ലൊവാക്ക് ഹാർഡ് കൊരൂന + ചെക്കോസ്ലൊവാക്ക് ഹാർഡ് കൊരൂന + ചെക്കോസ്ലൊവാക്ക് ഹാർഡ് കൊരൂനാസ് + + + ക്യൂബൻ പരിവർത്തിത പെസോ + ക്യൂബൻ പരിവർത്തിത പെയ്‍സോ + ക്യൂബൻ പരിവർത്തിത പെസോ + + + ക്യൂബൻ പെസോ + ക്യൂബൻ പെസോ + ക്യൂബൻ പെസോ + + + കെയ്പ് വെർഡെ എസ്ക്യുഡോ + കെയ്പ് വെർഡെ എസ്ക്യുഡോ + കെയ്പ് വെർഡെ എസ്ക്യുഡോസ് + + + സൈപ്രസ് പൌണ്ട് + സൈപ്രസ് പൌണ്ട് + സൈപ്രസ് പൌണ്ട്സ് + + + ചെക്ക് റിപ്പബ്ലിക് കൊരൂന + ചെക്ക് റിപ്പബ്ലിക് കൊരൂന + ചെക്ക് റിപ്പബ്ലിക് കൊരൂനാസ് + + + കിഴക്കൻ ജർമൻ ഓസ്റ്റ്മാർക്ക് + കിഴക്കൻ ജർമൻ ഓസ്റ്റ്മാർക്ക് + കിഴക്കൻ ജർമൻ ഓസ്റ്റ്മാർക്ക്സ് + + + ജർമൻ മാർക്ക് + ജർമൻ മാർക്ക് + ജർമൻ മാർക്ക്സ് + + + ജീബൂട്ടിയൻ ഫ്രാങ്ക് + ജീബൂട്ടിയൻ ഫ്രാങ്ക് + ജീബൂട്ടിയൻ ഫ്രാങ്ക് + + + ഡാനിഷ് ക്രോണെ + ഡാനിഷ് ക്രോൺ + ഡാനിഷ് ക്രോൺസ് + + + ഡൊമിനിക്കൻ പെസോ + ഡൊമിനിക്കൻ പെസോ + ഡൊമിനിക്കൻ പെസോ + + + അൾജീരിയൻ ദിനാർ + അൾജീരിയൻ ദിനാർ + അൾജീരിയൻ ദിനാർ + + + ഇക്വഡോർ സൂക്രേ + ഇക്വഡോർ സൂക്രേ + ഇക്വഡോർ സൂക്രേസ് + + + ഇക്വഡോർ യൂണിഡാഡ് വാലർ കോൺസ്റ്റൻറെ (UVC) + ഇക്വഡോർ യൂണിഡാഡ് ഡി വാലർ കോൺസ്റ്റൻറെ (UVC) + ഇക്വഡോർ യൂണിഡാഡ്സ് ഡി വാലർ കോൺസ്റ്റൻറെ (UVC) + + + എസ്റ്റൌനിയൻ ക്രൂൺ + എസ്റ്റൌനിയൻ ക്രൂൺ + എസ്റ്റൌനിയൻ ക്രൂൺസ് + + + ഈജിപ്ഷ്യൻ പൌണ്ട് + ഈജിപ്ഷ്യൻ പൌണ്ട് + ഈജിപ്ഷ്യൻ പൌണ്ട് + + + എറിത്രിയൻ നക്ഫ + എറിത്രിയൻ നക്ഫ + എറിത്രിയൻ നക്ഫാസ് + + + സ്പാനിഷ് പസെയ്റ്റ (A അക്കൌണ്ട്) + സ്പാനിഷ് പസെയ്റ്റ (A അക്കൌണ്ട്) + സ്പാനിഷ് പസെയ്റ്റാസ് (A അക്കൌണ്ട്) + + + സ്പാനിഷ് പസെയ്റ്റ (കൈമാറ്റം ചെയ്യാവുന്ന അക്കൌണ്ട്) + സ്പാനിഷ് പസെയ്റ്റ (കൈമാറ്റം ചെയ്യാവുന്ന അക്കൌണ്ട്) + സ്പാനിഷ് പസെയ്റ്റാസ് (കൈമാറ്റം ചെയ്യാവുന്ന അക്കൌണ്ട്) + + + സ്പാനിഷ് പസെയ്റ്റ + സ്പാനിഷ് പസെയ്റ്റ + സ്പാനിഷ് പസെയ്റ്റാസ് + + + എത്യോപ്പിയൻ ബിർ + എത്യോപ്പിയൻ ബിർ + എത്യോപ്പിയൻ ബിർസ് + + + യൂറോ + യൂറോ + യൂറോ + + + + ഫിന്നിഷ് മാർക്ക + ഫിന്നിഷ് മാർക്ക + ഫിന്നിഷ് മാർക്കാസ് + + + ഫിജിയൻ ഡോളർ + ഫിജിയൻ ഡോളർ + ഫിജിയൻ ഡോളേഴ്സ് + + + ഫോക്‌ലാൻഡ് ദ്വീപുകളുടെ പൌണ്ട് + ഫോക്‌ലാൻഡ് ദ്വീപുകളുടെ പൌണ്ട് + ഫോക്‌ലാൻഡ് ദ്വീപുകളുടെ പൌണ്ട്സ് + + + ഫ്രാങ്ക് + ഫ്രെഞ്ച് ഫ്രാങ്ക് + ഫ്രെഞ്ച് ഫ്രാങ്ക്സ് + + + ബ്രിട്ടീഷ് പൌണ്ട് സ്റ്റെർലിംങ് + ബ്രിട്ടീഷ് പൌണ്ട് സ്റ്റെർലിംഗ് + ബ്രിട്ടീഷ് പൌണ്ട് സ്റ്റെർലിംഗ്സ് + £ + + + ജോർ‍ജ്ജിയൻ ക്യൂപോൺ ലാരിറ്റ് + ജോർ‍ജ്ജിയൻ ക്യൂപോൺ ലാരിറ്റ് + ജോർ‍ജ്ജിയൻ ക്യൂപോൺ ലാരിറ്റ്സ് + + + ജോർ‍ജ്ജിയൻ ലാരി + ജോർ‍ജ്ജിയൻ ലാരി + ജോർ‍ജ്ജിയൻ ലാരിസ് + + + ഘാന കെഡി (1979–2007) + ഘാന കെഡി (GHC) + ഘാന കെഡിസ് (GHC) + + + ഘാന കെഡി + ഘാന കെഡി + ഘാന കെഡിസ് + + + ഗിബ്രാൽട്ടർ പൌണ്ട് + ഗിബ്രാൽട്ടർ പൌണ്ട് + ഗിബ്രാൽട്ടർ പൌണ്ട്സ് + + + ഗാമ്പിയൻ ദലാസി + ഗാമ്പിയൻ ദലാസി + ഗാമ്പിയൻ ദലാസി + + + ഗിനിയൻ ഫ്രാങ്ക് + ഗിനിയൻ ഫ്രാങ്ക് + ഗിനിയൻ ഫ്രാങ്ക് + + + ഗിനിയ സൈലി + ഗിനിയ സൈലി + ഗിനിയ സൈലിസ് + + + ഇക്വിറ്റോറിയൽ ഗിനിയ എക്വീലെ ഗിനിയാന + ഇക്വിറ്റോറിയൽ ഗിനി എക്വീലെ + ഇക്വിറ്റോറിയൽ ഗിനി എക്വീലെ + + + ഗ്രീക്ക് ഡ്രാക്ക്മ + ഗ്രീക്ക് ഡ്രാക്ക്മ + ഗ്രീക്ക് ഡ്രാക്ക്മാസ് + + + ഗ്വാട്ടിമാല ക്വെറ്റ്സൽ + ഗ്വാട്ടിമാല ക്വെറ്റ്സൽ + ഗ്വാട്ടിമാല ക്വെറ്റ്സൽസ് + + + പോർച്ചുഗീസ് ഗിനി എസ്ക്യൂഡോ + പോർച്ചുഗീസ് ഗിനി എസ്ക്യൂഡോ + പോർച്ചുഗീസ് ഗിനി എസ്ക്യൂഡോസ് + + + ഗിനിയ-ബിസാവു പെയ്സോ + ഗിനി-ബിസാവു പെയ്സോ + ഗിനി-ബിസാവു പെയ്സോസ് + + + ഗയാന ഡോളർ + ഗയാന ഡോളർ + ഗയാന ഡോളർ + + + ഹോങ് കോങ് ഡോളർ + ഹോങ് കോങ് ഡോളർ + ഹോങ് കോങ് ഡോളേഴ്സ് + HK$ + + + ഹോൻഡ്യുറാസ് ലെംപീര + ഹോൻഡ്യുറാസ് ലെംപീര + ഹോൻഡ്യുറാസ് ലെംപീരാസ് + + + ക്രൊയേഷ്യൻ ദിനാർ + ക്രൊയേഷ്യൻ ദിനാർ + ക്രൊയേഷ്യൻ ദിനാർസ് + + + ക്രൊയേഷ്യൻ ക്യൂന + ക്രൊയേഷ്യൻ ക്യൂന + ക്രൊയേഷ്യൻ ക്യൂനാസ് + + + ഹെയ്ഷ്യൻ ഗൂർഡ് + ഹെയ്ഷ്യൻ ഗൂർഡ് + ഹെയ്ഷ്യൻ ഗൂർഡ്സ് + + + ഹംഗേറിയൻ ഫോറിൻറ് + ഹംഗേറിയൻ ഫോറിൻറ് + ഹംഗേറിയൻ ഫോറിൻറ്സ് + + + ഇന്തോനേഷ്യൻ രൂപ + ഇന്തോനേഷ്യൻ രൂപ + ഇന്തോനേഷ്യൻ രൂപ + + + ഐറിഷ് പൌണ്ട് + ഐറിഷ് പൌണ്ട് + ഐറിഷ് പൌണ്ട്സ് + + + ഇസ്രയേലി പൌണ്ട് + ഇസ്രയേലി പൌണ്ട് + ഇസ്രയേലി പൌണ്ട്സ് + + + ഇസ്രായേലി ഷക്കേൽ + ഇസ്രായേലി ന്യൂ ഷെക്കൽ + ഇസ്രായേലി ന്യൂ ഷെക്കൽസ് + + + + ഇന്ത്യൻ രൂപ + ഇന്ത്യൻ രൂപ + ഇന്ത്യൻ രൂപ + + + + ഇറാക്കി ദിനാർ + ഇറാക്കി ദിനാർ + ഇറാക്കി ദിനാർസ് + + + ഇറാനിയൻ റിയാൽ + ഇറാനിയൻ റിയാൽ + ഇറാനിയൻ റിയാൽസ് + + + ഐസ്‌ലാൻഡിക് ക്രോണ + ഐസ്‌ലാൻഡിക് ക്രോണ + ഐസ്‌ലാൻഡിക് ക്രോണാസ് + + + ഇറ്റാലിയൻ ലിറ + ഇറ്റാലിയൻ ലിറ + ഇറ്റാലിയൻ ലിറാസ് + + + ജമൈക്കൻ ഡോളർ + ജമൈക്കൻ ഡോളർ + ജമൈക്കൻ ഡോളർ + + + ജോർദ്ദാൻ ദിനാർ + ജോർദ്ദാൻ ദിനാർ + ജോർദ്ദാൻ ദിനാർസ് + + + ജപ്പാനീസ് യെൻ + ജാപ്പനീസ് യെൻ + ജാപ്പനീസ് യെൻ + JP¥ + + + കെനിയൻ ഷില്ലിംഗ് + കെനിയൻ ഷില്ലിംഗ് + കെനിയൻ ഷില്ലിംഗ് + + + കിർഗിസ്ഥാൻ സോം + കിർഗിസ്ഥാൻ സോം + കിർഗിസ്ഥാൻ സോംസ് + + + കംബോഡിയൻ റീൽ + കംബോഡിയൻ റീൽ + കംബോഡിയൻ റീൽസ് + + + കൊമോറിയൻ ഫ്രാങ്ക് + കൊമോറിയൻ ഫ്രാങ്ക് + കൊമോറിയൻ ഫ്രാങ്ക് + + + നോർത്ത് കൊറിയൻ വോൺ + ഉത്തര കൊറിയൻ വോൺ + ഉത്തര കൊറിയൻ വോൺസ് + + + ദക്ഷിണ കൊറിയൻ വോൺ + ദക്ഷിണ കൊറിയൻ വോൺ + ദക്ഷിണ കൊറിയൻ വോൺസ് + + + + കുവൈറ്റി ദിനാർ + കുവൈറ്റ് ദിനാർ + കുവൈറ്റി ദിനാർസ്‌ + + + കെയ്മൻദ്വീപുകളുടെ ഡോളർ‌ + കെയ്മൻദ്വീപുകളുടെ ഡോളർ‌ + കെയ്മൻദ്വീപുകളുടെ ഡോളർ + + + കസാഖ്സ്ഥാൻ റ്റെംഗെ + കസാഖ്സ്ഥാൻ റ്റെംഗെ + കസാഖ്സ്ഥാൻ റ്റെംഗെസ്‌ + + + ലാവോഷിയൻ കിപ് + ലാവോഷ്യൻ കിപ്‌ + ലാവോഷ്യൻ കിപ്‌സ്‌ + + + ലെബനീസ് പൌണ്ട് + ലെബനീസ് പൌണ്ട് + ലെബനീസ് പൌണ്ട്സ് + + + ശ്രീലങ്കൻ രൂപ + ശ്രീലങ്കൻ രൂപ + ശ്രീലങ്കൻ രൂപ + + + ലൈബീരിയൻ ഡോളർ + ലൈബീരിയൻ ഡോളർ + ലൈബീരിയൻ ഡോളർ + + + ലെസോതോ ലോത്തി + ലെസോതോ ലോത്തി + ലെസോതോ ലോത്തിസ്‌ + + + ലിത്വാനിയൻ ലിത + ലിത്വാനിയൻ ലിത + ലിത്വാനിയൻ ലിതാസ്‌ + + + ലിത്വാനിയൻ തലോനാസ് + ലിത്വാനിയൻ തലോനാസ് + ലിത്വാനിയൻ തലോനാസെസ്‌ + + + ലക്സംബർഗ് കൺവേർട്ടിബിൾ ഫ്രാങ്ക് + ലക്സംബർഗ് കൈമാറ്റം ചെയ്യാവുന്ന ഫ്രാങ്ക്‌ + ലക്സംബർഗ് കൈമാറ്റം ചെയ്യാവുന്ന ഫ്രാങ്ക്‌സ്‌ + + + ലക്സംബർഗ് ഫ്രാങ്ക് + ലക്സംബർഗ് ഫ്രാങ്ക് + ലക്സംബർഗ് ഫ്രാങ്ക്‌സ്‌ + + + ലക്സംബർഗ് ഫിനാൻഷ്യൽ ഫ്രാങ്ക് + ലക്സംബർഗ് ഫിനാൻഷ്യൽ ഫ്രാങ്ക് + ലക്സംബർഗ് ഫിനാൻഷ്യൽ ഫ്രാങ്ക്‌സ്‌ + + + ലാറ്റ്വിയൻ ലാറ്റ്സ് + ലാറ്റ്വിയൻ ലാറ്റ്സ് + ലാറ്റ്വിയൻ ലാറ്റ്സെസ്‌ + + + ലാറ്റ്വിയൻ റൂബിൾ + ലാറ്റ്വിയൻ റൂബിൾ + ലാറ്റ്വിയൻ റൂബിൾ + + + ലിബിയൻ ദിനാർ + + + മൊറോക്കൻ ദിർഹം + + + മൊറോക്കൻ ഫ്രാങ്ക് + + + മൊൽഡോവൻ ലിയൂ + + + മഡഗാസ്കർ ഏരിയറി + + + മഡഗാസ്കർ ഫ്രാങ്ക് + + + മാസിഡോണിയൻ ദിനാർ + + + മാലി ഫ്രാങ്ക് + + + മ്യാൻമാർ ചാറ്റ് + മ്യാൻമാർ ചാറ്റ് + മ്യാൻമാർ ചാറ്റ് + + + മംഗോളിയൻ തുഗ്രിക് + + + മക്കാനീസ് പതാക്ക + മക്കാനീസ് പതാക്ക + മക്കാനീസ് പതാക്കാസ് + + + മൌറിറ്റേനിയൻ ഔഗിയ + മൌറിറ്റേനിയൻ ഔഗിയ + മൌറിറ്റേനിയൻ ഔഗിയ + + + മൽത്തീസ് ലിറ + + + മൽത്തീസ് പൌണ്ട് + + + മൌറീഷ്യൻ രൂപ + മൌറീഷ്യൻ രൂപ + മൌറീഷ്യൻ രൂപ + + + മാലദ്വീപ് രൂപ + മാലദ്വീപ് രൂപ + മാലദ്വീപ് രൂപ + + + മലാവിയൻ ക്വാച + മലാവിയൻ ക്വാച + മലാവിയൻ ക്വാച + + + മെക്സിക്കൻ പെസോ + മെക്സിക്കൻ പെസോ + മെക്സിക്കൻ പെസോ + MX$ + + + മെക്സിക്കൻ സിൽവർ പെയ്സോ (1861–1992) + മെക്സിക്കൻ സിൽവർ പെയ്സോ (MXP) + മെക്സിക്കൻ സിൽവർ പെയ്സോസ് (MXP) + + + മെക്സിക്കൻ യൂണിഡാഡ് ഡി ഇൻവെർഷൻ (UDI) + മെക്സിക്കൻ യൂണിഡാഡ് ഡി ഇൻവെർഷൻ (UDI) + മെക്സിക്കൻ യൂണിഡാഡ്സ് ഡി ഇൻവെർഷൻ (UDI) + + + മലേഷ്യൻ റിംഗിറ്റ് + + + മൊസാന്പിക്ക് എസ്ക്യുഡോ + + + ഓൾഡ് മൊസാന്പിക്ക് മെറ്റിക്കൽ + + + മൊസാമ്പിക്ക് മെറ്റിക്കൽ + + + നമീബിയൻ ഡോളർ + + + നൈജീരിയൻ നൈറ + + + നികരാഗ്വൻ കൊർഡോബ + + + നികരാഗ്വൻ കൊർഡോബ ഒരോ + + + നെതർലൻഡ്സ് ഗിൽഡർ + നെതർലൻഡ്സ് ഗിൽഡർ + നെതർലൻഡ്സ് ഗിൽഡേഴ്സ് + + + നോർവീജിയൻ ക്രോണെ + നോർവീജിയൻ ക്രോൺ + നോർവീജിയൻ ക്രോൺസ് + + + നേപ്പാളി രൂപ + + + ന്യൂസിലാൻഡ് ഡോളർ + ന്യൂസിലൻഡ് ഡോളർ + ന്യൂസിലൻഡ് ഡോളേഴ്സ് + NZ$ + + + ഒമാൻ റിയാൽ + + + പനാമെയ്നിയൻ ബാൽബോവ + പനാമെയ്നിയൻ ബാൽബോവ + പനാമെയ്നിയൻ ബാൽബോവാസ് + + + പെറൂവിയൻ ഇൻറി + പെറൂവിയൻ ഇൻറി + പെറൂവിയൻ ഇൻറിസ് + + + പെറൂവിയൻ സോൾ ന്യൂവോ + പെറൂവിയൻ സോൾ ന്യൂവോ + പെറൂവിയൻ സോൾ ന്യൂവോസ് + + + പെറൂവിയൻ സോൾ + പെറൂവിയൻ സോൾ + പെറൂവിയൻ സോൾസ് + + + പാപുവ ന്യൂ ഗിനിയൻ കിന + പാപുവ ന്യൂ ഗിനിയൻ കിന + പാപുവ ന്യൂ ഗിനിയൻ കിനാസ് + + + ഫിലിപ്പൈൻ പെസോ + ഫിലിപ്പൈൻ പെസോ + ഫിലിപ്പൈൻ പെസോ + + + പാക്കിസ്ഥാനി രൂപ + പാക്കിസ്ഥാനി രൂപ + പാക്കിസ്ഥാനി രൂപ + + + പോളിഷ് സ്ലോട്ടി + പോളിഷ് സ്ലോട്ടി + പോളിഷ് സ്ലോട്ടിസ് + + + പോളിഷ് സ്ലോട്ടി (1950–1995) + + + പോർച്ചുഗീസ് എസ്ക്യുഡോ + + + പരാഗ്വേയൻ ഗ്വരനീ + പരാഗ്വേയൻ ഗ്വരനീ + പരാഗ്വേയൻ ഗ്വരനീ + + + ഖത്തർ റിയാൽ + + + റൊഡേഷ്യൻ ഡോളർ + + + പ്രാചീന റൊമേനിയൻ ലിയു + + + റൊമേനിയൻ ലിയു + + + സെർബിയൻ ദിനാർ + + + റഷ്യൻ റൂബിൾ + റഷ്യൻ റൂബിൾ + റഷ്യൻ റൂബിൾസ് + + + റഷ്യൻ റൂബിൾ (1991–1998) + + + റുവാണ്ടൻ ഫ്രാങ്ക് + + + സൌദി റിയാൽ + + + സോളമൻ ദ്വീപുകളുടെ ഡോളർ + + + സെയ്ഷെൽസ് രൂപ + + + പ്രാചീന സുഡാനീസ് ദിനാർ + + + സുഡാനീസ് പൌണ്ട് + + + പ്രാചീന സുഡാനീസ് പൌണ്ട് + + + സ്വീഡിഷ് ക്രോണ + + + സിംഗപ്പൂർ ഡോളർ + + + സെയ്ൻറ് ഹെലെന പൌണ്ട് + + + സ്ലൊവേനിയ റ്റോളർ + + + സ്ലോവാക് കൊരൂന + + + സിയറാ ലിയോൺ ലിയോൺ + + + സൊമാലി ഷില്ലിംഗ് + + + സൂരിനാം ഡോളർ + + + സൂരിനാം ഗിൽഡർ + + + ദക്ഷിണ സുഡാനീസ് പൗണ്ട് + ദക്ഷിണ സുഡാനീസ് പൗണ്ട് + ദക്ഷിണ സുഡാനീസ് പൗണ്ട് + + + സാവോ റ്റോമി ആൻഡ് പ്രിൻസിപ്പി ഡോബ്ര + + + സോവിയറ്റ് റൂബിൾ + + + എൽ സാൽവഡോർ കോളൻ + + + സിറിയൻ പൌണ്ട് + സിറിയൻ പൌണ്ട് + സിറിയൻ പൌണ്ട് + + + സ്വാസിലാൻഡ് ലിലാംഗനി + + + തായ് ബാത്ത് + തായ് ബാത്ത് + തായ് ബാത്ത് + ฿ + + + താജിക്കിസ്ഥാൻ റൂബിൾ + തജിക്സ്ഥാൻ റൂബിൾ + തജിക്സ്ഥാൻ റൂബിൾസ് + + + താജിക്കിസ്ഥാൻ സൊമോനി + തജികിസ്ഥാൻ സൊമോനി + തജികിസ്ഥാൻ സൊമോനിസ് + + + തുർക്മെനിസ്ഥാൻ മനത് + തുർക്മെനിസ്ഥാൻ മനത് + തുർക്മെനിസ്ഥാൻ മനത്‌സ് + + + തുർക്കമനിസ്ഥാനി മനാത്ത് + തുർക്കമനിസ്ഥാനി മനാത്ത് + തുർക്കമനിസ്ഥാനി മനാത്ത് + + + തുനീസിയൻ ദിനാർ + + + റ്റോംഗൻ പാംഗ + റ്റോംഗൻ പാംഗ + റ്റോംഗൻ പാംഗാസ് + + + തിമോർ എസ്ക്യൂഡോ + തിമോർ എസ്ക്യൂഡോ + തിമോർ എസ്ക്യൂഡോസ് + + + പ്രാചീന തുർക്കിഷ് ലിറ + പ്രാചീന തുർക്കിഷ് ലിറ + പ്രാചീന തുർക്കിഷ് ലിറാസ് + + + തുർക്കിഷ് ലിറ + തുർക്കിഷ് ലിറ + തുർക്കിഷ് ലിറാസ് + + + ട്രിനിഡാഡ് ആൻഡ് റ്റൊബാഗോ ഡോളർ + + + തായ്‌വാൻ ഡോളർ + തായ്‌വാൻ ഡോളർ + തായ്‌വാൻ ഡോളേഴ്സ് + NT$ + + + ടാൻസാനിയൻ ഷില്ലിംഗ് + + + യുക്രേനിയൻ ഹ്രിവ്നിയ + ഉക്രേനിയൻ ഹ്രിവ്നിയ + ഉക്രേനിയൻ ഹ്രിവ്നിയാസ് + + + യുക്രേനിയൻ കാർബോവാനെസ് + ഉക്രേനിയൻ കാർബോവാനെസ് + ഉക്രേനിയൻ കാർബോവാനെസ് + + + ഉഗാണ്ടൻ ഷില്ലിംഗ് (1966–1987) + + + ഉഗാണ്ടൻ ഷില്ലിംഗ് + + + യു.എസ്. ഡോളർ + യു.എസ് ഡോളർ + യു.എസ് ഡോളർ + $ + + + യുഎസ് ഡോളർ (അടുത്ത ദിവസം) + + + യുഎസ് ഡോളർ (അതേ ദിവസം) + യുഎസ് ഡോളർ (അതേ ദിവസം) + യുഎസ് ഡോളേഴ്സ് (അതേ ദിവസം) + + + ഉറുഗ്വേ പെയ്സോ എൻ യൂണിഡാഡ്സ് + ഉറുഗ്വേ പെയ്സോ എൻ യൂണിഡാഡ്സ് ഇൻഡെക്സാഡാസ് + ഉറുഗ്വേ പെയ്സോസ് എൻ യൂണിഡാഡ്സ് ഇൻഡെക്സാഡാസ് + + + ഉറുഗ്വേ പെയ്സോ (1975–1993) + ഉറുഗ്വേ പെയ്സോ (UYP) + ഉറുഗ്വേ പെയ്സോസ് (UYP) + + + ഉറുഗ്വേൻ പെസോ + ഉറുഗ്വേൻ പെസോ + ഉറുഗ്വേൻ പെസോ + + + ഉസ്ബക്കിസ്ഥാൻ സം + ഉസ്ബക്കിസ്ഥാൻ സം + ഉസ്ബക്കിസ്ഥാൻ സംസ് + + + വെനസ്വേലൻ ബോലിവർ (1871–2008) + വെനസ്വേലൻ ബോലിവർ (1871–2008) + വെനസ്വേലൻ ബോലിവർസ് (1871–2008) + + + വെനസ്വേലൻ ബോലിവർ + വെനസ്വേലൻ ബോലിവർ + വെനസ്വേലൻ ബോലിവർ + + + വിയറ്റ്നാമീസ് ഡോങ് + + + + വനുവാതു വാതു + വനുവാതു വാതു + വനുവാതു വാതൂസ് + + + സമോവൻ താല + സമോവൻ താല + സമോവൻ താല + + + CFA ഫ്രാങ്ക് BEAC + CFA ഫ്രാങ്ക് BEAC + CFA ഫ്രാങ്ക്സ് BEAC + + + വെള്ളി + വെള്ളി + വെള്ളി + + + സ്വർണ്ണം + സ്വർണ്ണം + സ്വർണ്ണം + + + യൂറോപ്യൻ കോന്പസിറ്റ് യൂണിറ്റ് + യൂറോപ്യൻ കോന്പസിറ്റ് യൂണിറ്റ് + യൂറോപ്യൻ കോന്പസിറ്റ് യൂണിറ്റ്സ് + + + യൂറോപ്യൻ മോണിറ്ററി യൂണിറ്റ് + യൂറോപ്യൻ മോണിറ്ററി യൂണിറ്റ് + യൂറോപ്യൻ മോണിറ്ററി യൂണിറ്റ്സ് + + + യൂറോപ്യൻ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBC) + യൂറോപ്യൻ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBC) + യൂറോപ്യൻ യൂണിറ്റ്സ് ഓഫ് അക്കൌണ്ട് (XBC) + + + യൂറോപ്യൻ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBD) + യൂറോപ്യൻ യൂണിറ്റ് ഓഫ് അക്കൌണ്ട് (XBD) + യൂറോപ്യൻ യൂണിറ്റ്സ് ഓഫ് അക്കൌണ്ട് (XBD) + + + കിഴക്കൻ കരീബിയൻ ഡോളർ + കിഴക്കൻ കരീബിയൻ ഡോളർ + കിഴക്കൻ കരീബിയൻ ഡോളർ + EC$ + + + സ്പെഷ്യൽ ഡ്രോയിംഗ് റൈറ്റ്സ് + സ്പെഷ്യൽ ഡ്രോയിംഗ് റൈറ്റ്സ് + സ്പെഷ്യൽ ഡ്രോയിംഗ് റൈറ്റ്സ് + + + യൂറോപ്യൻ നാണയ യൂണിറ്റ് + യൂറോപ്യൻ നാണയ യൂണിറ്റ് + യൂറോപ്യൻ നാണയ യൂണിറ്റ്സ് + + + ഫ്രെഞ്ച് ഗോൾഡ് ഫ്രാങ്ക് + ഫ്രെഞ്ച് ഗോൾഡ് ഫ്രാങ്ക് + ഫ്രെഞ്ച് ഗോൾഡ് ഫ്രാങ്ക്സ് + + + ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക് + ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക് + ഫ്രെഞ്ച് UIC-ഫ്രാങ്ക്സ് + + + CFA ഫ്രാങ്ക് BCEAO + CFA ഫ്രാങ്ക് BCEAO + CFA ഫ്രാങ്ക്സ് BCEAO + CFA + + + പലാഡിയം + പലാഡിയം + പലാഡിയം + + + CFP ഫ്രാങ്ക് + CFP ഫ്രാങ്ക് + CFP ഫ്രാങ്ക്സ് + CFPF + + + പ്ലാറ്റിനം + പ്ലാറ്റിനം + പ്ലാറ്റിനം + + + RINET ഫണ്ട്സ് + RINET ഫണ്ട്സ് + RINET ഫണ്ട്സ് + + + ടെസ്റ്റിംഗിനുള്ള കറൻസി കോഡ് + റ്റെസ്റ്റിംഗ് കറൻസി കോഡ് + റ്റെസ്റ്റിംഗ് കറൻസി കോഡ് + + + അജ്ഞാത നാണയം + (അജ്ഞാത നാണയം‌) + (അജ്ഞാത നാണയം) + + + യമനി ദിനാർ + യമനി ദിനാർ + യമനി ദിനാർസ് + + + യമനി റിയാൽ + യമനി റിയാൽ + യമനി റിയാൽസ് + + + യൂഗോസ്ലേവിയൻ ഹാർഡ് ദിനാർ + യൂഗോസ്ലേവിയൻ ഹാർഡ് ദിനാർ + യൂഗോസ്ലേവിയൻ ഹാർഡ് ദിനാർസ് + + + യൂഗോസ്ലേവിയൻ നോവി ദിനാർ + യൂഗോസ്ലേവിയൻ നോവി ദിനാർ + യൂഗോസ്ലേവിയൻ നോവി ദിനാർസ് + + + യൂഗോസ്ലേവിയൻ കൺവേർട്ടിബിൾ ദിനാർ + യൂഗോസ്ലേവിയൻ കൺവേർട്ടിബിൾ ദിനാർ + യൂഗോസ്ലേവിയൻ കൺവേർട്ടിബിൾ ദിനാർസ് + + + ദക്ഷിണാഫ്രിക്കൻ റാൻഡ് (ഫിനാൻഷ്യൽ) + ദക്ഷിണാഫ്രിക്കൻ റാൻഡ് (ഫിനാൻഷ്യൽ) + ദക്ഷിണാഫ്രിക്കൻ റാൻഡ്സ് (ഫിനാൻഷ്യൽ) + + + ദക്ഷിണ ആഫ്രിക്കൻ റാൻഡ് + ദക്ഷിണാഫ്രിക്കൻ റാൻഡ് + ദക്ഷിണാഫ്രിക്കൻ റാൻഡ്സ് + + + സാംബിയൻ ക്വാച (1968–2012) + സാംബിയൻ ക്വാച (1968–2012) + സാംബിയൻ ക്വാചാസ് (1968–2012) + + + സാംബിയൻ ക്വാച + സാംബിയൻ ക്വാച + സാംബിയൻ ക്വാചാസ് + + + സൈറിയൻ ന്യൂ സൈർ + സൈറിയൻ ന്യൂ സൈർ + സൈറിയൻ ന്യൂ സൈർസ് + + + സൈറിയൻ സൈർ + സൈറിയൻ സൈർ + സൈറിയൻ സൈർസ് + + + സിംബാബ്‌വെ ഡോളർ + സിംബാബ്‌വെ ഡോളർ + സിംബാബ്‌വെ ഡോളേഴ്സ് + + + + {0}+ + {0}-{1} + + + + + + {0}/{1} + + + {0} ജി-ഫോഴ്‌സ് + {0} ജി-ഫോഴ്‌സ് + + + {0} മിനിറ്റ് + {0} മിനിറ്റ് + + + {0} സെക്കന്റ് + {0} സെക്കന്റ് + + + {0} ഡിഗ്രി + {0} ഡിഗ്രി + + + {0} ഏക്കർ + {0} ഏക്കർ + + + {0} ഹെക്‌ടർ + {0} ഹെക്‌ടർ + + + {0} ചതുരശ്ര അടി + {0} ചതുരശ്ര അടി + + + {0} ചതുരശ്ര കിലോമീറ്റർ + {0} ചതുരശ്ര കിലോമീറ്റർ + + + {0} ചതുരശ്ര മീറ്റർ + {0} ചതുരശ്ര മീറ്റർ + + + {0} ചതുരശ്ര മൈൽ + {0} ചതുരശ്ര മൈൽ + + + {0} ദിവസം + {0} ദിവസം + + + {0} മണിക്കൂർ + {0} മണിക്കൂർ + + + {0} മില്ലിസെക്കന്റ് + {0} മില്ലിസെക്കന്റ് + + + {0} മിനിട്ട് + {0} മിനിട്ട് + + + {0} മാസം + {0} മാസം + + + {0} സെക്കന്റ് + {0} സെക്കന്റ് + + + {0} ആഴ്ച + {0} ആഴ്ച + + + {0} വർഷം + {0} വർഷം + + + {0} സെന്റീമീറ്റർ + {0} സെന്റീമീറ്റർ + + + {0} അടി + {0} അടി + + + {0} ഇഞ്ച് + {0} ഇഞ്ച് + + + {0} കിലോമീറ്റർ + {0} കിലോമീറ്റർ + + + {0} പ്രകാശവർഷം + {0} പ്രകാശവർഷം + + + {0} മീറ്റർ + {0} മീറ്റർ + + + {0} മൈൽ + {0} മൈൽ + + + {0} മില്ലീമീറ്റർ + {0} മില്ലീമീറ്റർ + + + {0} പൈക്കോമീറ്റർ + {0} പൈക്കോമീറ്റർ + + + {0} യാർഡ് + {0} യാർഡ് + + + {0} ഗ്രാം + {0} ഗ്രാം + + + {0} കിലോഗ്രാം + {0} കിലോഗ്രാം + + + {0} ഔൺസ് + {0} ഔൺസ് + + + {0} പൗണ്ട് + {0} പൗണ്ട് + + + {0} കുതിരശക്തി + {0} കുതിരശക്തി + + + {0} കിലോവാട്ട് + {0} കിലോവാട്ട് + + + {0} വാട്ട് + {0} വാട്ട് + + + {0} ഹെക്‌ടോപാസ്‌ക്കൽ + {0} ഹെക്‌ടോപാസ്‌ക്കൽ + + + {0} ഇഞ്ച് ഓഫ് മെർക്കുറി + {0} ഇഞ്ച് ഓഫ് മെർക്കുറി + + + {0} മില്ലിബാർ + {0} മില്ലിബാർ + + + മണിക്കൂറിൽ {0} കിലോമീറ്റർ + മണിക്കൂറിൽ {0} കിലോമീറ്റർ + + + സെക്കന്റിൽ {0} മീറ്റർ + സെക്കന്റിൽ {0} മീറ്റർ + + + മണിക്കൂറിൽ {0} മൈൽ + മണിക്കൂറിൽ {0} മൈൽ + + + {0} ഡിഗ്രി സെൽഷ്യൽസ് + {0} ഡിഗ്രി സെൽഷ്യസ് + + + {0} ഡിഗ്രി ഫാരൻഹീറ്റ് + {0} ഡിഗ്രി ഫാരൻഹീറ്റ് + + + {0} ക്യൂബിക്ക് കിലോമീറ്റർ + {0} ക്യൂബിക്ക് കിലോമീറ്റർ + + + {0} ക്യൂബിക്ക് മൈൽ + {0} ക്യൂബിക്ക് മൈൽ + + + {0} ലിറ്റർ + {0} ലിറ്റർ + + + + + {0}/{1} + + + {0} ജി + {0} ജി + + + {0} മി + {0} മി + + + {0} സെ + {0} സെ + + + {0} ഡിഗ്രി + {0} ഡിഗ്രി + + + {0} ഏക്ക + {0} ഏക്ക + + + {0} ഹെക് + {0} ഹെക് + + + {0} ചതുര.അടി + {0} ചതുര.അടി + + + {0} ചതു. കിമീ + {0} ചതു.കിമീ + + + {0} ചതു.മീ + {0} ചതു.മീ + + + {0} ചതു.മൈ + {0} ചതു.മൈ + + + {0} ദിവസം‌ + {0} ദിവസം‌ + + + {0} മണിക്കൂർ‌ + {0} മണിക്കൂർ + + + {0} മി.സെ + {0} മി.സെ + + + {0} മിനിറ്റ് + {0} മിനിറ്റ് + + + {0} മാസം + {0} മാസം + + + {0} സെക്കൻറ് + {0} സെക്കൻറ് + + + {0} ആഴ്‌ച + {0} ആഴ്‌ച + + + {0} വർ‌ഷം + {0} വർ‌ഷം + + + {0} സെമി + {0} സെമി + + + {0} അടി + {0} അടി + + + {0} ഇഞ്ച് + {0} ഇഞ്ച് + + + {0} കിമി + {0} കിമി + + + {0} പ്രകാ.വർ + {0} പ്രക.വർ + + + {0} മീ + {0} മീ + + + {0} മൈൽ + {0} മൈ + + + {0} മിമീ + {0} മിമീ + + + {0} പൈ.മീ + {0} പൈ.മീ + + + {0} യാ + {0} യാ + + + {0} ഗ്രാം + {0} ഗ്രാം + + + {0} കി.ഗ്രാം + {0} kg + + + {0} ഔ + {0} ഔ + + + {0} പൗ + {0} പൗ + + + {0} എച്ച്‌പി + {0} എച്ച്‌പി + + + {0} kW + {0} kW + + + {0} വാ + {0} വാ + + + {0} hPa + {0} hPa + + + Hg ൽ {0} + Hg ൽ {0} + + + {0} മി.ബാ + {0} മി.ബാ + + + {0} കിമീ/മ + {0} കിമീ/മ + + + {0} മീ/സെ + {0} മീ/സെ + + + {0} മൈ/മ + {0} മൈ/മ + + + {0}°സെ + {0}°സെ + + + {0}° ഫാ + {0}°ഫാ + + + {0} കി.മീ³ + {0} കി.മീ³ + + + {0} മൈ³ + {0} മൈ³ + + + {0} ലിറ്റ. + {0} ലിറ്റ. + + + + + {0}/{1} + + + {0} ജി + {0} ജി + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ഏ + {0} ഏക്ക + + + {0} ഹെ + {0} ഹെ + + + {0} ച. അടി + {0} ച.അടി + + + {0} ച.കിമീ + {0} ച.കിമീ + + + {0} ച.മീ + {0} ച.മീ + + + {0} ച.മൈ + {0} ച.മൈ + + + {0} ദി + {0} ദി + + + {0} മ + {0} മ + + + {0} മിസെ + {0} മിസെ + + + {0} മി + {0} മി + + + {0} മാ + {0} മാ + + + {0} സെ + {0} സെ + + + {0} ആ + {0} ആ + + + {0} വ + {0} വ + + + {0} സെമി + {0} സെമി + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} കിമി + {0} കിമി + + + {0} പ്ര.വ + {0} പ്ര.വ + + + {0} മീ + {0} മീ + + + {0} മൈ + {0} മൈ + + + {0} മിമീ + {0} മിമീ + + + {0} പൈ.മീ + {0} പൈ.മീ + + + {0} യാ + {0} യാ + + + {0} ഗ്രാം + {0} ഗ്രാം + + + {0} ഔ + {0} ഔ + + + {0} പൗ + {0} പൗ + + + {0} hp + {0} hp + + + {0}kW + {0}kW + + + {0} വാ + {0} വാ + + + {0} hPa + {0} hPa + + + {0}" Hg + {0}" Hg + + + {0} മിബാ + {0} മിബാ + + + {0}കിമീ/മ + {0}കിമീ/മ + + + {0} മീ/സെ + {0} മീ/സെ + + + {0} മൈ/മ + {0} മൈ/മ + + + {0}° + {0}° + + + {0}°ഫാ + {0}°ഫാ + + + {0} കിമീ³ + {0} കിമീ³ + + + {0} മൈ³ + {0} മൈ³ + + + {0} ലി + {0} ലി + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} എന്നിവ + {0} കൂടാതെ {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} കൂടാതെ {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} കൂടാതെ {1} + + + + + അതെ + അല്ല + + + + diff --git a/library/Zend/Locale/Data/ml_IN.xml b/library/Zend/Locale/Data/ml_IN.xml new file mode 100755 index 000000000..ef80554b1 --- /dev/null +++ b/library/Zend/Locale/Data/ml_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mn.xml b/library/Zend/Locale/Data/mn.xml new file mode 100755 index 000000000..a4b7d9cc2 --- /dev/null +++ b/library/Zend/Locale/Data/mn.xml @@ -0,0 +1,4986 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + абхаз + африк + амхар + араб + стандарт араб + ассам + азербайжан + беларусь + болгар + бенгал + төвд + бретон + босни + каталан + чех + уэлс + дани + герман + австри герман + швейцари герман + грек + англи + австрали англи + канад англи + британийн англи + их британийн англи + америкийн англи + америкийн нэгдсэн улсын англи + эсперанто + испани + латин америкийн испани + европын испани + мексикийн испани + эстони + баск + перс + финлянд + филиппин + фижи + фарер + франц + канад франц + швейцари франц + баруун фризын + ирланд + шотланд келт + галик + гуарани + швейцар герман + гужарати + хауса + хавай + еврей + хинди + хорват + гаити + унгар + армен + интерлингво + индонези + нэгдмэл хэл + игбо + исланд + итали + япон + ява + гүрж + хасаг + камбож + каннада + солонгос + кашмир + күрд + киргиз + латин + люксембург + лингала + лаос + литва + латви + малагаси + маори + македон + малайлам + монгол + марати + малай + малти + бирм + норвегийн букмол + балба + голланд + фламанд + норвегийн нинорск + норвеги + францын окситан + ория + панжаб + польш + пашто + португал + португал (бразил) + европын португал + кечуа + романш + румын + орос + санскрит + синдхи + хорватын серб + синхала + словак + словен + сомали + албани + серб + сесото + сундан + швед + свахили + тамил + тэлүгү + тажик + тай + тигрина + туркмен + клингон хэл + тонга + турк + татар + тви + уйгар + украйн + тодорхойгүй хэл + урду + узбек + вьетнам + волоф + хоса + иддиш + ёруба + тамазит + хятад + хялбаршуулсан хятад + уламжлалт хятад + зулу + хэл зүйн агуулга байхгүй + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Дэлхий + Африк + Хойд Америк + Өмнөд Америк + Номхон далайн орнууд + Баруун Африк + Төв Америк + Зүүн Африк + Хойд Африк + Төв Африк + Өмнөд Африк + Америк + Хойд Америк тив + Карибын + Зүүн Ази + Өмнөд Ази + Зүүн Өмнөд Ази + Өмнөд Европ + Австралиази + Меланези + Микронезийн бүс + Полинез + Ази + Төв Ази + Баруун Ази + Европ + Зүүн Европ + Хойд Европ + Баруун Европ + Латин Америк + Аскенсион Арал + Андорра + Арабын Нэгдсэн Эмират + Афганистан + Антигуа ба Барбуда + Ангила + Албани + Армен + Ангол + Антарктик + Аргентин + Америкийн Самоа + Австри + Австрали + Аруба + Аландын Арлууд + Азербайжан + Босни Херцеговин + Барбадос + Бангладеш + Белги + Буркина фасо + Болгар + Бахрейн + Бурунди + Бенин + Сент Бартельми + Бермуд + Бруней + Боливи + Карибын Нидерланд + Бразил + Багам + Бутан + Буветын Арлууд + Ботсвана + Беларус + Белиз + Канад + Кокос (Кийлинг) Арлууд + Конго-Киншаса + Конго (БНУ) + Төв Африкийн Бүгд Найрамдах Улс + Конго Браззавиль + Конго (Бүгд Найрамдах улс) + Швейцари + Кот д'Ивуар + Зааны Ясан Эрэг + Күүкийн Арлууд + Чили + Камерун + Хятад + Колумб + Клиппертон Арал + Коста Рика + Куба + Капе Верде + Куракао + Зул Сарын Арал + Кипр + Бүгд Найрамдах Чех Улс + Герман + Диего Гарсиа + Джибути + Дани + Доминик + Бүгд Найрамдах Доминикан + Алжир + Сеута ба Мелилья + Эквадор + Эстон + Египет + Баруун Сахар + Эритри + Испани + Этиоп + Европын Холбоо + Финланд + Фижи + Фолькландын Арлууд + Фолькландын Арлууд (Ислас Мальвинас) + Микронези + Фароэ Арлууд + Франц + Габон + Их Британи + ИБ + Гренада + Гүрж + Францын Гайана + Гернси + Гана + Гибралтар + Гренланд + Гамби + Гвиней + Гваделуп + Экваторын Гвиней + Грек + Өмнөд Жоржиа ба Өмнөд Сэндвичийн Арлууд + Гватемал + Гуам + Гвиней-Бисау + Гайана + БНХАУ-ын Тусгай захиргааны бүс Хонг Конг + Хонг Конг + Хэрд болон Макдоналд Арлууд + Гондурас + Хорват + Гаити + Унгар + Канарын арлууд + Индонези + Ирланд + Израиль + Мэн Арал + Энэтхэг + Британийн харьяа Энэтхэгийн далай дахь нутаг дэвсгэрүүд + Ирак + Иран + Исланд + Итали + Жерси + Ямайк + Йордан + Япон + Кени + Кыргызстан + Камбож + Кирибати + Коморос + Сент-Киттс ба Невис + Хойд Солонгос + Өмнөд Солонгос + Кувейт + Кайманы Арлууд + Казахстан + Лаос + Ливан + Сент Люсиа + Лихтенштейн + Шри Ланка + Либери + Лесото + Литва + Люксембург + Латви + Ливи + Марокко + Монако + Молдав + Монтенегро + Сент-Мартин + Мадагаскар + Маршаллын Арлууд + Македон + Македон (Хуучин Югославын бүрэлдэхүүний Македон) + Мали + Мьянмар (Бурма) + Монгол + БНХАУ-ын Тусгай захиргааны бүс Макао + Макао + Хойд Марианы Арлууд + Мартиник + Мавритани + Монтсеррат + Мальта + Мавритус + Мальдив + Малави + Мексик + Малайз + Мозамбик + Намиби + Шинэ Каледони + Нигер + Норфолк Арлууд + Нигери + Никарагуа + Голланд + Норвеги + Балба + Науру + Ниуэ + Шинэ Зеланд + Оман + Панам + Перу + Францын Полинез + Папуа Шинэ Гвиней + Филиппин + Пакистан + Польш + Сэнт Пьер ба Микелон + Питкэрн Арлууд + Пуэрто Рико + Палестины нутаг дэвсгэрүүд + Палестин + Португал + Палау + Парагвай + Катар + Номхон далайг тойрсон улс орнууд + Реюньон + Румын + Серби + Орос + Руанда + Саудын Араб + Соломоны Арлууд + Сейшел + Судан + Швед + Сингапур + Сент Хелена + Словени + Свалбард ба Ян Майен + Словак + Сьерра-Леоне + Сан-Марино + Сенегал + Сомали + Суринам + Өмнөд Судан + Сан-Томе ба Принсипи + Эль Сальвадор + Синт Мартен + Сири + Свазиланд + Тристан да Кунья + Турк ба Кайкосын Арлууд + Чад + Францын өмнөд газар нутаг + Того + Тайланд + Тажикистан + Токелау + Тимор-Лесте + Зүүн Тимор + Туркменистан + Тунис + Тонга + Турк + Тринидад ба Тобаго + Тувалу + Тайван + Танзани + Украйн + Уганда + АНУ-ын тойрсон арлууд + Америкийн Нэгдсэн Улс + АНУ + Уругвай + Узбекистан + Ватикан хот улс + Сэнт Винсэнт ба Гренадин + Венесуэл + Британийн Виржиний Арлууд + АНУ-ын Виржиний Арлууд + Вьетнам + Вануату + Уоллис ба Футуна + Самоа + Косово + Йемен + Майотте + Өмнөд Африк тив + Замби + Зимбабве + Тодорхойгүй + + + хуанли + Захиалга ялгах + мөнгөн тэмдэгт + Тоо + + + араб-энэтхэг тоо + өргөтгөсөн араб-энэтхэг тоо + армен тоо + жижиг армен тоо + бенгал тоо + деванагари тоо + юникодын үндсэн эрэмбэлэх дараалал + этиоп тоо + бүрэн хэмжээтэй тоо + гүрж тоо + грегорийн хуанли + грек тоо + жижиг грек тоо + гүжарати тоо + гүрмүкхи тоо + хятад аравтын тоо + хялбаршуулсан хятад тоо + хялбаршуулсан хятад санхүүгийн тоо + уламжлалт хятад тоо + уламжлалт хятад санхүүгийн тоо + еврей тоо + япон тоо + япон санхүүгийн тоо + кхмер тоо + каннада тоо + лаос тоо + араб тоо + малаялам тоо + монгол тоо + мьянмар тоо + ория тоо + ром тоо + жижиг ром тоо + ерөнхий зорилготой хайлт + стандарт эрэмбэлэх дараалал + уламжлалт тамил тоо + тамил тоо + телүгү тоо + тай тоо + тибет тоо + + + метрийн + Их Британийн + АНУ-ын + + + {0} + {0} + {0} + + + + [а б в г д е ё ж з и й к л м н о ө п р с т у ү ф х ц ч ш щ ъ ы ь э ю я] + [ә җ ӊ һ] + [А Б В Г Д Е Ж З И Й К Л М Н О Ө П Р С Т У Ү Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, G y 'оны' MM 'сарын' dd + + + + + G y 'оны' MM 'сарын' d + + + + + G y MM d + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + d + dd E + G y + G y MM + G y MMM d + E, G y MMM d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M-d + E, M-d + LLL + MMM d + E MMM d + mm:ss + G y + G y + G y-M + G y-M-d + E, G y-M-d + G y MMM + G y MMM d + E, G y MMM d + G y QQQ + G y 'оны' QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM/dd-MM/dd + MM/dd-MM/dd + + + E, MM/dd - E, MM/dd + E, MM/dd - E, MM/dd + + + LLL–LLL + + + MM/d-d + MM/d - MM/d + + + E, MM/dd - E, MM/dd + E, MM/dd - E, MM/dd + + + G y–y + + + G y/MM-MM + G y/MM - y/MM + + + G y/MM/dd-dd + G y/MM/dd -MM/dd + G y/MM/dd - y/MM/dd + + + E, G y/MM/dd – E, y/MM/dd + E, G y/MM/dd – E, y/MM/dd + E, G y/MM/dd – E, y/MM/dd + + + G y/MM-MM + G y/MM - y/MM + + + G y/MM/d-d + G y/MM/dd - MM/dd + G y/MM/dd - y/MM/dd + + + E, G y/MM/dd – E, y/MM/dd + E, G y/MM/dd – E, y/MM/dd + E, G y/MM/dd – E, y/MM/dd + + + G y 'оны' MM-MM-'р' 'сар' + G y/MM -y/MM + + + + + + + + + 1-р сар + 2-р сар + 3-р сар + 4-р сар + 5-р сар + 6-р сар + 7-р сар + 8-р сар + 9-р сар + 10-р сар + 11-р сар + 12-р сар + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Нэгдүгээр сар + Хоёрдугаар сар + Гуравдугаар сар + Дөрөвдүгээр сар + Тавдугаар сар + Зургадугаар сар + Долдугаар сар + Наймдугаар сар + Есдүгээр сар + Аравдугаар сар + Арван нэгдүгээр сар + Арван хоёрдугаар сар + + + + + 1-р сар + 2-р сар + 3-р сар + 4-р сар + 5-р сар + 6-р сар + 7-р сар + 8-р сар + 9-р сар + 10-р сар + 11-р сар + 12-р сар + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Нэгдүгээр сар + Хоёрдугаар сар + Гуравдугаар сар + Дөрөвдүгээр сар + Тавдугаар сар + Зургадугаар сар + Долдугаар сар + Наймдугаар сар + Есдүгээр сар + Аравдугаар сар + Арван нэгдүгээр сар + Арван хоёрдугаар сар + + + + + + + Ня + Да + Мя + Лх + Пү + Ба + Бя + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + Ня + Да + Мя + Лх + Пү + Ба + Бя + + + ням + даваа + мягмар + лхагва + пүрэв + баасан + бямба + + + + + Ня + Да + Мя + Лх + Пү + Ба + Бя + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + Ня + Да + Мя + Лх + Пү + Ба + Бя + + + ням + даваа + мягмар + лхагва + пүрэв + баасан + бямба + + + + + + + У1 + У2 + У3 + У4 + + + 1 + 2 + 3 + 4 + + + 1-р улирал + 2-р улирал + 3-р улирал + 4-р улирал + + + + + У1 + У2 + У3 + У4 + + + 1 + 2 + 3 + 4 + + + 1-р улирал + 2-р улирал + 3-р улирал + 4-р улирал + + + + + + + ҮӨ + ҮХ + + + + + + манай эриний өмнөх + манай эриний + + + МЭӨ + НТӨ + МЭ + НТ + + + м.э.ө + м.э. + + + + + + EEEE, y 'оны' MMMM 'сарын' dd + + + + + y 'оны' MMMM 'сарын' d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + d + dd E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + E, G y MMM d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M-d + E, M-d + LLL + MMM d + E MMM d + mm:ss + y + y-M + y-M-d + E, y-M-d + y MMM + y MMM d + E, y MMM d + y QQQ + y 'оны' QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + MM/dd-MM/dd + MM/dd-MM/dd + + + E, MM/dd - E, MM/dd + E, MM/dd - E, MM/dd + + + LLL–LLL + + + MM/d-d + MM/d - MM/d + + + E, MM/dd - E, MM/dd + E, MM/dd - E, MM/dd + + + y–y + + + y/MM-MM + y/MM - y/MM + + + y/MM/dd-dd + y/MM/dd -MM/dd + y/MM/dd - y/MM/dd + + + E, y/MM/dd – E, y/MM/dd + E, y/MM/dd – E, y/MM/dd + E, y/MM/dd – E, y/MM/dd + + + y/MM-MM + y/MM - y/MM + + + y/MM/d-d + y/MM/dd - MM/dd + y/MM/dd - y/MM/dd + + + E, y/MM/dd – E, y/MM/dd + E, y/MM/dd – E, y/MM/dd + E, y/MM/dd – E, y/MM/dd + + + y 'оны' MM-MM-'р' 'сар' + y/MM -y/MM + + + + + + + + Эрин + + + Жил + өнгөрсөн жил + энэ жил + ирэх жил + + {0} жилийн дараа + {0} жилийн дараа + + + {0} жилийн өмнө + {0} жилийн өмнө + + + + Сар + өнгөрсөн сар + энэ сар + ирэх сар + + {0} сарын дараа + {0} сарын дараа + + + {0} сарын өмнө + {0} сарын өмнө + + + + Долоо хоног + өнгөрсөн долоо хоног + энэ долоо хоног + ирэх долоо хоног + + {0} долоо хоногийн дараа + {0} долоо хоногийн дараа + + + {0} долоо хоногийн өмнө + {0} долоо хоногийн өмнө + + + + Өдөр + Уржигдар + өчигдөр + өнөөдөр + маргааш + Нөгөөдөр + + {0} өдрийн дараа + {0} өдрийн дараа + + + {0} өдрийн өмнө + {0} өдрийн өмнө + + + + Гараг + + + өнгөрсөн ням гараг + энэ ням гараг + ирэх ням гараг + + + өнгөрсөн даваа гараг + энэ даваа гараг + ирэх даваа гараг + + + өнгөрсөн мягмар гараг + энэ мягмар гараг + ирэх мягмар гараг + + + өнгөрсөн лхагва гараг + энэ лхагва гараг + ирэх лхагва гараг + + + өнгөрсөн пүрэв гараг + энэ пүрэв гараг + ирэх пүрэв гараг + + + өнгөрсөн баасан гараг + энэ баасан гараг + ирэх баасан гараг + + + өнгөрсөн бямба гараг + энэ бямба гараг + ирэх бямба гараг + + + Өдрийн цаг + + + Цаг + + {0} цагийн дараа + {0} цагийн дараа + + + {0} цагийн өмнө + {0} цагийн өмнө + + + + Минут + + {0} минутын дараа + {0} минутын дараа + + + {0} минутын өмнө + {0} минутын өмнө + + + + Секунд + Одоо + + {0} секундын дараа + {0} секундын дараа + + + {0} секундын өмнө + {0} секундын өмнө + + + + Цагийн бүс + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0}-н цагаар + {0} (+1) + {0} (+0) + {1} ({0}) + + Тодорхойгүй хот + + + Андорра + + + Дубай + + + Кабул + + + Антигуа + + + Ангилла + + + Тирана + + + Ереван + + + Луанда + + + Ротера + + + Палмер + + + Сьёва + + + Моусон + + + Дэвис + + + Восток + + + Кэсей + + + Дюмон д’Юрвиль + + + Мак-Мёрдо + + + Рио-Гальегос + + + Мендоза + + + Сан-Хуан + + + Ушуайя + + + Ла-Риоха + + + Сан Луи + + + Катамарка + + + Салта + + + Жужуй + + + Тукуман + + + Кордова + + + Буэнос-Айрес + + + Паго Паго + + + Вена + + + Перс + + + Еукла + + + Дарвин + + + Аделэйд + + + Брокен Хилл + + + Кюрри + + + Мельбурн + + + Хобарт + + + Линдемэн + + + Сидней + + + Брисбэн + + + Маккуори + + + Лорд Хау + + + Аруба + + + Мариехамн + + + Баку + + + Сараево + + + Барбадос + + + Дака + + + Брюссель + + + Уагадугу + + + София + + + Бахрейн + + + Бужумбура + + + Порто-Ново + + + Сент Бартельми + + + Бермуда + + + Бруней + + + Ла Паз + + + Кралендик + + + Эйрунепе + + + Рио-Бранко + + + Порто-Велью + + + Боа-Виста + + + Манаус + + + Куяба + + + Сантарем + + + Кампо-Гранде + + + Белем + + + Арагуана + + + Сан-Паулу + + + Байя + + + Форталеза + + + Масейо + + + Ресифи + + + Норона + + + Нассау + + + Тхимпху + + + Габороне + + + Минск + + + Белизе + + + Доусон + + + Уайтхорз + + + Инувик + + + Ванкувер + + + Доусон Грик + + + Крестон + + + Йелоунайф + + + Эдмонтон + + + Свифт Каррент + + + Кэмбриж булан + + + Регина + + + Виннипег + + + Резолют + + + Рейни Ривер + + + Рэнкин Инлет + + + Атикокан + + + Сандер Бэй + + + Нипигон + + + Торонто + + + Икалуит + + + Пангниртунг + + + Монктон + + + Халифакс + + + Гуус булан + + + Глейс булан + + + Бланк-Саблон + + + Сент Жонс + + + Кокос + + + Киншаса + + + Лубумбаши + + + Бангуй + + + Браззавиль + + + Цюрих + + + Абижан + + + Раротонга + + + Истер + + + Сантьяго + + + Дуала + + + Кашгар + + + Үрүмчи + + + Чунцин + + + Шанхай + + + Харбин + + + Богота + + + Коста Рика + + + Хавана + + + Капе-Верде + + + Куракао + + + Зул Сар + + + Никосия + + + Прага + + + Бусинген + + + Берлин + + + Жибоути + + + Копенгаген + + + Доминика + + + Санта Доминго + + + Алжир + + + Галапагос + + + Гуаякиль + + + Таллин + + + Каир + + + Эль-Аюн + + + Асмара + + + Канари + + + Сеута + + + Мадрид + + + Аддис-абеба + + + Хельсинк + + + Фижи + + + Стэнлей + + + Чүүк + + + Понпей + + + Косраэ + + + Фароэ + + + Парис + + + Либревиль + + + + Британийн зуны цаг + + Лондон + + + Гренада + + + Тбилиси + + + Кайенна + + + Гернси + + + Аккра + + + Гибралтар + + + Туле + + + Годтаб + + + Скорсбисунн + + + Данмаркшавн + + + Банжул + + + Конакри + + + Гваделуп + + + Малабо + + + Афин + + + Өмнөд Жоржиа + + + Гватемал + + + Гуам + + + Биссау + + + Гуяана + + + Хонг Конг + + + Тегусигальпа + + + Загреб + + + Порт-о-Принс + + + Будапешт + + + Жакарта + + + Понтианак + + + Макассар + + + Жайпур + + + + Ирландын зуны цаг + + Дублин + + + Ерусалем + + + Мэн Арал + + + Кольката + + + Чагос + + + Багдад + + + Тегеран + + + Рекьявик + + + Ром + + + Жерси + + + Ямайка + + + Амман + + + Токио + + + Найроби + + + Бишкек + + + Пномпень + + + Эндербери + + + Киритимати + + + Тарава + + + Коморо + + + Сент-Киттс + + + Пхеньян + + + Сөүл + + + Кувейт + + + Кайман + + + Актау + + + Орал + + + Актөбе + + + Кызылорд + + + Алматы + + + Вьентьян + + + Бейрут + + + Сент Люсиа + + + Вадуз + + + Коломбо + + + Монрова + + + Масеру + + + Вильнюс + + + Люксембург + + + Рига + + + Триполи + + + Касабланка + + + Монако + + + Кишинёв + + + Подгорица + + + Маригот + + + Антананариво + + + Кважалейн + + + Мажуро + + + Скопье + + + Бамако + + + Рангун + + + Ховд + + + Улаанбаатар + + + Чойбалсан + + + Макао + + + Сайпан + + + Мартиник + + + Нуакшот + + + Монтсеррат + + + Мальта + + + Мавриту + + + Мальдив + + + Блантайр + + + Тижуана + + + Санта Изабель + + + Хермосилло + + + Мазатлан + + + Чихуахуа + + + Бахья Бандерас + + + Ожинага + + + Монтерей + + + Мехико хот + + + Матаморос + + + Мерида + + + Канкун + + + Куала Лумпур + + + Кучин + + + Мапуто + + + Виндхук + + + Нумеа + + + Ниамей + + + Норфолк + + + Лагос + + + Манагуа + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуэ + + + Чатем + + + Оклэнд + + + Мускат + + + Панама + + + Лима + + + Таити + + + Маркизас + + + Гамбьер + + + Порт-Морсби + + + Манила + + + Карачи + + + Варшав + + + Микелон + + + Питкейрн + + + Пуэрто-Рико + + + Газа + + + Хеброн + + + Азор + + + Мадейра + + + Лисбон + + + Палау + + + Асунсьон + + + Катар + + + Реюньон + + + Бухарест + + + Белград + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Екатеринбург + + + Омск + + + Новосибирск + + + Новокузнецк + + + Красноярск + + + Эрхүү + + + Якутск + + + Владивосток + + + Кандяга + + + Сахалин + + + Уст-Нера + + + Магадан + + + Камчатка + + + Анадыр + + + Кигали + + + Рияд + + + Гуадалканал + + + Махе + + + Хартум + + + Стогкольм + + + Сингапур + + + Сент Хелена + + + Любляна + + + Лонгирбюен + + + Братислав + + + Фритаун + + + Сан-Марино + + + Дакар + + + Могадишу + + + Парамарибо + + + Жуба + + + Сан-Том + + + Эль Сальвадор + + + Доод хунтайжийн орон + + + Дамаск + + + Мбабане + + + Гранд Турк + + + Нжамена + + + Кергелен + + + Ломе + + + Бангкок + + + Душанбе + + + Факаофо + + + Дили + + + Ашхабад + + + Тунис + + + Тонгатапу + + + Истанбул + + + Порт-оф-Спейн + + + Фунафути + + + Тайпей + + + Дар-эс-Салам + + + Ужгород + + + Киев + + + Симферополь + + + Запорожье + + + Кампала + + + Мидвей + + + Жонстон + + + Уэйк + + + Адак + + + Ном + + + Хонолулу + + + Анкораж + + + Якутат + + + Ситка + + + Жуно + + + Метлакатла + + + Лос-Анжелес + + + Боисе + + + Феникс + + + Денвер + + + Била, Хойд Дакота + + + Нью-Салем, Хойд Дакота + + + Төв, Хойд Дакота + + + Чикаго + + + Меномини + + + Винсенес, Индиана + + + Питерсбург, Индиана + + + Тел Сити, Индиана + + + Нокс, Индиана + + + Винамак, Индиана + + + Маренго, Индиана + + + Индианаполис + + + Луисвилл + + + Вивей, Индиана + + + Монтичелло, Кентаки + + + Детройт + + + Нью-Йорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сент Винсент + + + Каракас + + + Тортола + + + Сент Томас + + + Хо Ши Мин + + + Эфате + + + Уоллис + + + Апиа + + + Аден + + + Майотта + + + Йоханнесбург + + + Лусака + + + Хараре + + + + Афганистаны цаг + + + + + Төв Африкийн цаг + + + + + Зүүн Африкийн цаг + + + + + Өмнөд Африкийн цаг + + + + + Баруун Африкийн цаг + Баруун Африкийн стандарт цаг + Баруун Африкийн зуны цаг + + + + + Аляскийн цаг + Аляскийн стандарт цаг + Аляскийн зуны цаг + + + + + Амазоны цаг + Амазоны стандарт цаг + Амазоны зуны цаг + + + + + Хойд Америкийн төв цаг + Хойд Америкийн стандарт төвийн цаг + Хойд Америкийн зуны цаг + + + + + Хойд Америкийн зүүн эргийн цаг + Хойд Америкийн зүүн эргийн стандарт цаг + Хойд Америкийн зүүн эргийн зуны цаг + + + + + Хойд Америкийн уулын цаг + Хойд Америкийн уулын стандарт цаг + Хойд Америкийн уулын зуны цаг + + + + + Хойд Америкийн Номхон далайн цаг + Хойд Америкийн Номхон далайн стандарт цаг + Хойд Америкийн Номхон далайн зуны цаг + + + + + Арабын цаг + Арабын стандарт цаг + Арабын зуны цаг + + + + + Аргентины цаг + Аргентины стандарт цаг + Аргентины зуны цаг + + + + + Баруун Аргентины цаг + Баруун Аргентины стандарт цаг + Баруун Аргентины зуны цаг + + + + + Армений цаг + Армений стандарт цаг + Армений зуны цаг + + + + + Атлантын цаг + Атлантын стандарт цаг + Атлантын зуны цаг + + + + + Төв Австралийн цаг + Төв Австралийн стандарт цаг + Төв Австралийн зуны цаг + + + + + Австралийн төв баруун эргийн цаг + Австралийн төв баруун эргийн стандарт цаг + Австралийн төв баруун эргийн зуны цаг + + + + + Зүүн Австралийн цаг + Австралийн зүүн эргийн стандарт цаг + Австралийн зүүн эргийн зуны цаг + + + + + Баруун Австралийн цаг + Австралийн баруун эргийн стандарт цаг + Австралийн баруун эргийн зуны цаг + + + + + Азербайжаны цаг + Азербайжаны стандарт цаг + Азербайжаны зуны цаг + + + + + Азорын цаг + Азорын стандарт цаг + Азорын зуны цаг + + + + + Бангладешийн цаг + Бангладешийн стандарт цаг + Бангладешийн зуны цаг + + + + + Бутаны цаг + + + + + Боливийн цаг + + + + + Бразилийн цаг + Бразилийн стандарт цаг + Бразилийн зуны цаг + + + + + Бруней Дарассаламын цаг + + + + + Капе-Вердегийн цаг + Капе-Вердегийн стандарт цаг + Капе-Вердегийн зуны цаг + + + + + Чаморрогийн цаг + + + + + Чэтамын цаг + Чэтамын стандарт цаг + Чэтамын зуны цаг + + + + + Чилийн цаг + Чилийн стандарт цаг + Чилийн зуны цаг + + + + + Хятадын цаг + Хятадын стандарт цаг + Хятадын зуны цаг + + + + + Чойбалсангийн цаг + Чойбалсангийн стандарт цаг + Чойбалсангийн зуны цаг + + + + + Зул Сарын Арлын цаг + + + + + Кокос Арлуудын цаг + + + + + Колумбын цаг + Колумбын стандарт цаг + Колумбын зуны цаг + + + + + Күүкийн Арлуудын цаг + Күүкийн Арлуудын стандарт цаг + Күүкийн Арлуудын хагас зуны цаг + + + + + Кубын цаг + Кубын стандарт цаг + Кубын зуны цаг + + + + + Дэвисын цаг + + + + + Дюмон д’Юрвилийн цаг + + + + + Зүүн Тиморын цаг + + + + + Истерын Арлын цаг + Истерын Арлын стандарт цаг + Истерын Арлын зуны цаг + + + + + Эквадорын цаг + + + + + Төв Европын цаг + Төв Европын стандарт цаг + Төв Европын зуны цаг + + + + + Зүүн Европын цаг + Зүүн Европын стандарт цаг + Зүүн Европын зуны цаг + + + + + Баруун Европын цаг + Баруун Европын стандарт цаг + Баруун Европын зуны цаг + + + + + Фолькландын Арлуудын цаг + Фолькландын Арлуудын стандарт цаг + Фолькландын Арлуудын зуны цаг + + + + + Фижигийн цаг + Фижигийн стандарт цаг + Фижигийн зуны цаг + + + + + Францын Гияанагийн цаг + + + + + Францын Өмнөд ба Антарктик цаг + + + + + Галапагосын цаг + + + + + Гамбьегийн цаг + + + + + Гүржийн цаг + Гүржийн стандарт цаг + Гүржийн зуны цаг + + + + + Жильбертын Арлуудын цаг + + + + + Гринвичийн үндсэн цаг + + + + + Зүүн Гринландын цаг + Зүүн Гринландын стандарт цаг + Зүүн Гринландын зуны цаг + + + + + Баруун Гринландын цаг + Баруун Гринландын стандарт цаг + Баруун Гринландын зуны цаг + + + + + Гульфын цаг + + + + + Гуяанагийн цаг + + + + + Хавай-Алеутын цаг + Хавай-Алеутын стандарт цаг + Хавай-Алеутын зуны цаг + + + + + Хонг Конгын цаг + Хонг Конгын стандарт цаг + Хонг Конгын зуны цаг + + + + + Ховдын цаг + Ховдын стандарт цаг + Ховдын зуны цаг + + + + + Энэтхэгийн цаг + + + + + Энэтхэг далайн цаг + + + + + Энэтхэг-Хятадын хойгийн цаг + + + + + Төв Индонезийн цаг + + + + + Зүүн Индонезийн цаг + + + + + Баруун Индонезийн цаг + + + + + Ираны цаг + Ираны стандарт цаг + Ираны зуны цаг + + + + + Эрхүүгийн цаг + Эрхүүгийн стандарт цаг + Эрхүүгийн зуны цаг + + + + + Израилийн цаг + Израилийн стандарт цаг + Израилийн зуны цаг + + + + + Японы цаг + Японы стандарт цаг + Японы зуны цаг + + + + + Зүүн Казахстаны цаг + + + + + Баруун Казахстаны цаг + + + + + Өмнөд Солонгосын цаг + Өмнөд Солонгосын стандарт цаг + Өмнөд Солонгосын зуны цаг + + + + + Косраегийн цаг + + + + + Красноярскийн цаг + Красноярскийн стандарт цаг + Красноярскийн зуны цаг + + + + + Кыргызстаны цаг + + + + + Лайн Арлуудын цаг + + + + + Лорд Хаугийн цаг + Лорд Хаугийн стандарт цаг + Лорд Хаугийн зуны цаг + + + + + Маккуори Арлын цаг + + + + + Магаданы цаг + Магаданы стандарт цаг + Магаданы зуны цаг + + + + + Малайзийн цаг + + + + + Мальдивийн цаг + + + + + Маркесасын цаг + + + + + Маршаллын Арлуудын цаг + + + + + Мавритусын цаг + Мавритусын стандарт цаг + Мавритусын зуны цаг + + + + + Моусоны цаг + + + + + Улаанбаатарын цаг + Улаанбаатарын стандарт цаг + Улаанбаатарын зуны цаг + + + + + Москвагийн цаг + Москвагийн стандарт цаг + Москвагийн зуны цаг + + + + + Мьянмарын цаг + + + + + Науругийн цаг + + + + + Балбын цаг + + + + + Шинэ Каледонийн цаг + Шинэ Каледонийн стандарт цаг + Шинэ Каледонийн зуны цаг + + + + + Шинэ Зеландын цаг + Шинэ Зеландын стандарт цаг + Шинэ Зеландын зуны цаг + + + + + Нью-Фаундлендын цаг + Нью-Фаундлендын стандарт цаг + Нью-Фаундлендын зуны цаг + + + + + Ниуэгийн цаг + + + + + Норфолк Арлын цаг + + + + + Фернандо де Норонагийн цаг + Фернандо де Норонагийн стандарт цаг + Фернандо де Норонагийн зуны цаг + + + + + Новосибирскийн цаг + Новосибирскийн стандарт цаг + Новосибирскийн зуны цаг + + + + + Омскийн цаг + Омскийн стандарт цаг + Омскийн зуны цаг + + + + + Пакистаны цаг + Пакистаны стандарт цаг + Пакистаны зуны цаг + + + + + Палаугийн цаг + + + + + Папуа Шинэ Гвинейн цаг + + + + + Парагвайн цаг + Парагвайн стандарт цаг + Парагвайн зуны цаг + + + + + Перугийн цаг + Перугийн стандарт цаг + Перугийн зуны цаг + + + + + Филиппины цаг + Филиппины стандарт цаг + Филиппины зуны цаг + + + + + Феникс арлуудын цаг + + + + + Сент-Пьерре ба Микелоны цаг + Сент-Пьерре ба Микелоны стандарт цаг + Сент-Пьерре ба Микелоны зуны цаг + + + + + Питкерны цаг + + + + + Понапегийн цаг + + + + + Реюньоны цаг + + + + + Ротерагийн цаг + + + + + Сахалины цаг + Сахалины стандарт цаг + Сахалины зуны цаг + + + + + Самоагийн цаг + Самоагийн стандарт цаг + Самоагийн зуны цаг + + + + + Сейшелийн цаг + + + + + Сингапурын цаг + + + + + Соломоны Арлуудын цаг + + + + + Өмнөд Жоржийн цаг + + + + + Суринамын цаг + + + + + Сёвагийн цаг + + + + + Таитигийн цаг + + + + + Тайпейн цаг + Тайпейн стандарт цаг + Тайпейн зуны цаг + + + + + Тажикистаны цаг + + + + + Токелаугийн цаг + + + + + Тонгагийн цаг + Тонгагийн стандарт цаг + Тонгагийн зуны цаг + + + + + Чүүкийн цаг + + + + + Туркменистаны цаг + Туркменистаны стандарт цаг + Туркменистаны зуны цаг + + + + + Тувалугийн цаг + + + + + Уругвайн цаг + Уругвайн стандарт цаг + Уругвайн зуны цаг + + + + + Узбекистаны цаг + Узбекистаны стандарт цаг + Узбекистаны зуны цаг + + + + + Вануатугийн цаг + Вануатугийн стандарт цаг + Вануатугийн зуны цаг + + + + + Венесуэлийн цаг + + + + + Владивостокийн цаг + Владивостокийн стандарт цаг + Владивостокийн зуны цаг + + + + + Волгоградын цаг + Волгоградын стандарт цаг + Волгоградын зуны цаг + + + + + Востокийн цаг + + + + + Уэйк Арлуудын цаг + + + + + Уоллис ба Футунагийн цаг + + + + + Якутийн цаг + Якутийн стандарт цаг + Якутийн зуны цаг + + + + + Екатеринбургийн цаг + Екатеринбургийн стандарт цаг + Екатеринбургийн зуны цаг + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 мянга + 0 мянга + 00 мянга + 00 мянга + 000 мянга + 000 мянга + 0 сая + 0 сая + 00 сая + 00 сая + 000 сая + 000 сая + 0 тэрбум + 0 тэрбум + 00 тэрбум + 00 тэрбум + 000 тэрбум + 000 тэрбум + 0 их наяд + 0 их наяд + 00 их наяд + 00 их наяд + 000 их наяд + 000 их наяд + + + + + 0 мянга + 0 мянга + 00 мянга + 00 мянга + 000 мянга + 000 мянга + 0 сая + 0 сая + 00 сая + 00 сая + 000 сая + 000 сая + 0 тэрбум + 0 тэрбум + 00 тэрбум + 00 тэрбум + 000B + 000B + 0 их наяд + 0 их наяд + 00ИН + 00их наяд + 000ИН + 000ИН + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Арабын Нэгдсэн Эмиратын дирхам + Арабын Нэгдсэн Эмиратын дирхам + Арабын Нэгдсэн Эмиратын дирхам + + + Афганистаний афгани + афганистаний афгани + афганистаний афгани + + + Албани лек + албани лек + албани лек + + + Армени драм + армени драм + армени драм + + + Нидерланд Антиллъя гулден + Нидерланд Антиллъя гулден + Нидерланд Антиллъя гулден + + + Ангол кванза + ангол кванза + ангол кванза + + + Аргентин песо + аргентин песо + аргентин песо + + + Австралийн доллар + австралийн доллар + австралийн доллар + A$ + + + Аруба флорин + аруба флорин + аруба флорин + + + Азербайжан манат + азербайжан манат + азербайжан манат + + + Босни-Герцеговин хөрвөгч марк + Босни-Герцеговин хөрвөгч марк + Босни-Герцеговин хөрвөгч марк + + + Барбадос доллар + барбадос доллар + барбадос доллар + + + Бангладеш така + бангладеш така + бангладеш така + + + Болгар лев + болгар лев + болгар лев + + + Бахрейн динар + бахрейн динар + бахрейн динар + + + Бурунд франк + бурунд франк + бурунд франк + + + Бермудын доллар + бермудын доллар + бермудын доллар + + + Бруней доллар + бруней доллар + бруней доллар + + + Боливи боливиано + боливи боливиано + боливи боливиано + + + Бразилийн рил + бразилийн рил + бразилийн рил + R$ + + + Багам доллар + багам доллар + багам доллар + + + Бутан нгултрум + бутан нгултрум + бутан нгултрум + + + Ботсвани пула + Ботсвани пула + Ботсвани пула + + + Беларус рубль + беларус рубль + беларус рубль + + + Белиз доллар + белиз доллар + белиз доллар + + + Канад доллар + канад доллар + канад доллар + CA$ + + + Конго франк + конго франк + конго франк + + + Швейцар франк + Швейцар франк + Швейцар франк + + + Чили песо + чили песо + чили песо + + + Хятад юань + хятад юань + хятад юань + CN¥ + + + Колумбын песо + колумбын песо + колумбын песо + + + Коста Рика колон + коста рика колон + коста рика колон + + + Куба хөрвөгч песо + куба хөрвөгч песо + куба хөрвөгч песо + + + Куба песо + куба песо + куба песо + + + Кабо-Верде эскудо + кабо-верде эскудо + кабо-верде эскудо + + + Чех коруна + чех коруна + чех коруна + + + Жибоути франк + жибоути франк + жибоути франк + + + Данийн крон + Данийн крон + Данийн крон + + + Доминикан песо + доминикан песо + доминикан песо + + + Алжир доллар + алжир доллар + алжир доллар + + + Египет паунд + египет паунд + египет паунд + + + Эритрей накфа + эритрей накфа + эритрей накфа + + + Этиоп бирр + этиоп бирр + этиоп бирр + + + Евро + евро + евро + + + + Фижи доллар + Фижи доллар + Фижи доллар + + + Фолклэнд Арлууд паунд + фолклэнд арлууд паунд + фолклэнд арлууд паунд + + + Англи фунт стерлинг + англи фунт стерлинг + англи фунт стерлинг + £ + + + Гүрж лари + гүрж лари + гүрж лари + + + Гана седи + гана седи + гана седи + + + Гибралтар паунд + гибралтар паунд + гибралтар паунд + + + Гамби даласи + гамби даласи + гамби даласи + + + Гвиней франк + гвиней франк + гвиней франк + + + Гватемал кецал + гватемал кецал + гватемал кецал + + + Гайана доллар + гайана доллар + гайана доллар + + + Хонгконг доллар + Хонгконг доллар + Хонгконг доллар + HK$ + + + Гондурас лемпира + гондурас лемпира + гондурас лемпира + + + Хорватын куна + Хорватын куна + Хорватын куна + + + Гайти гоурде + гайти гоурде + гайти гоурде + + + Унгар форинт + унгар форинт + унгар форинт + + + Индонези рупи + индонези рупи + индонези рупи + + + Израиль шинэ шекел + израиль шинэ шекел + израиль шинэ шекел + + + + Энэтхэг рупи + энэтхэг рупи + энэтхэг рупи + INR + + + Ирак динар + ирак динар + ирак динар + + + Иран риал + иран риал + иран риал + + + Исланд крона + Исланд крона + Исланд крона + + + Ямайк доллар + ямайк доллар + Ямайк доллар + + + Йордан динар + йордан динар + йордан динар + + + Япон иен + япон иен + япон иен + JP¥ + + + Кени шиллинг + кени шиллинг + Кени шиллинг + + + Кыргыз сом + кыргыз сом + кыргыз сом + + + Камбож риел + камбож риел + камбож риел + + + Комор франк + комор франк + комор франк + + + Хойд Солонгос вон + хойд солонгос вон + хойд солонгос вон + + + Өмнөд Солонгос вон + өмнөд солонгос вон + өмнөд солонгос вон + + + + Кувейт динар + кувейт динар + кувейт динар + + + Кайманы Арлууд доллар + кайманы арлууд доллар + кайманы арлууд доллар + + + Казах тэнгэ + казах тэнгэ + казах тэнгэ + + + Лао кип + лао кип + лао кип + + + Ливан паунд + ливан паунд + ливан паунд + + + Шри-Ланк рупи + шри-ланк рупи + шри-ланк рупи + + + Либери доллар + либери доллар + либери доллар + + + Литва литас + Литва литас + Литва литас + + + Латви лац + Латви лац + Латви лац + + + Ливи доллар + ливи доллар + ливи доллар + + + Марокко дирхам + марокко дирхам + марокко дирхам + + + Молдав леу + молдав леу + молдав леу + + + Малайн ариари + малайн ариари + малайн ариари + + + Македони денар + македони денар + македони денар + + + Мьянмар киат + мьянмар киат + мьянмар киат + + + Төгрөг + төгрөг + төгрөг + + + + Макао патака + макао патака + макао патака + + + Мавритан угия + мавритан угия + мавритан угия + + + Мавритын рупи + мавритын рупи + мавритын рупи + + + Мальдив руфия + мальдив руфия + мальдив руфия + + + Малави квача + малави квача + Малави квача + + + Мексик песо + мексик песо + мексик песо + MX$ + + + Малайз ринггит + малайз ринггит + малайз ринггит + + + Мозамбик метикал + мозамбик метикал + мозамбик метикал + + + Намиби доллар + Намиби доллар + Намиби доллар + + + Нигери найра + нигери найра + нигери найра + + + Никарагуа кордоба + никарагуа кордоба + никарагуа кордоба + + + Норвеги кроне + норвеги кроне + норвеги кроне + + + Балба рупи + балба рупи + балба рупи + + + Шинэ Зеланд доллар + Шинэ Зеланд доллар + Шинэ Зеланд доллар + NZ$ + + + Омани риал + омани риал + омани риал + + + Панам бальбоа + панам бальбоа + панам бальбоа + + + Перу шинэ соль + перу шинэ соль + перу шинэ соль + + + Папуа-Шинэ Гвиней кина + Папуа-Шинэ Гвиней кина + Папуа-Шинэ Гвиней кина + + + Филиппин песо + филиппин песо + филиппин песо + + + Пакистан рупи + пакистан рупи + пакистан рупи + + + Польш злот + польш злот + польш злот + + + Парагвай гуарани + парагвай гуарани + парагвай гуарани + + + Катар риал + катар риал + катар риал + + + Румын леу + румын леу + румын леу + + + Серб динар + серб динар + серб динар + + + Орос рубль + орос рубль + орос рубль + + + Руанд франк + руанд франк + руанд франк + + + Саудын риял + саудын риял + саудын риял + + + Соломоны арлуудын доллар + соломоны арлуудын доллар + соломоны арлуудын доллар + + + Сейшел рупи + сейшел рупи + сейшел рупи + + + Судан паунд + судан паунд + судан паунд + + + Швед крона + швед крона + швед крона + + + Сингапур доллар + сингапур доллар + сингапур доллар + + + Сент Хелена паунд + сент хелена паунд + сент хелена паунд + + + Сьерра Леоне леоне + сьерра леоне леоне + сьерра леоне леоне + + + Сомали шиллинг + сомали шиллинг + сомали шиллинг + + + Суринам доллар + суринам доллар + суринам доллар + + + Өмнөд Судан паунд + өмнөд судан паунд + өмнөд судан паунд + + + Сан-Томе ба Принсипи добра + сан-томе ба принсипи добра + сан-томе ба принсипи добра + + + Сири паунд + сири паунд + сири паунд + + + Свазиланд лилангени + Свазиланд лилангени + Свазиланд лилангени + + + Тай бат + тай бат + тай бат + ฿ + + + Тажик сом + тажик сом + тажик сом + + + Туркмен манат + туркмен манат + туркмен манат + + + Тунис доллар + тунис доллар + тунис доллар + + + Тонга панга + тонга панга + тонга панга + + + Туркийн лира + Туркийн лира + Туркийн лира + + + Тринидад ба Тобаго доллар + тринидад ба тобаго доллар + тринидад ба тобаго доллар + + + Шинэ Тайван доллар + Шинэ Тайван доллар + Шинэ Тайван доллар + TWD + + + Танзани шиллинг + танзани шиллинг + танзани шиллинг + + + Украйн гривня + украйн гривня + украйн гривня + + + Уганд шиллинг + Уганд шиллинг + Уганд шиллинг + + + Америк доллар + америк доллар + америк доллар + $ + + + Уругвай песо + уругвай песо + уругвай песо + + + Узбек сом + узбек сом + узбек сом + + + Венесуэл боливар + венесуэл боливар + венесуэл боливар + + + Вьетнам донг + вьетнам донг + вьетнам донг + + + + Вануату вату + вануату вату + вануату вату + + + Самоа тала + самоа тала + самоа тала + + + Франк КФА BEAC + франк КФА BEAC + франк КФА BEAC + FCFA + + + Зүүн Карибийн доллар + зүүн карибийн доллар + зүүн карибийн доллар + EC$ + + + Франк КФА BCЕАО + франк КФА BCЕАО + франк КФА BCЕАО + CFA + + + Франц Номхон далайн франк + Франц Номхон далайн франк + Франц Номхон далайн франк + CFPF + + + Тодорхойгүй мөнгөн тэмдэгт + (тодорхойгүй мөнгөн тэмдэгтийн нэгж) + (тодорхойгүй мөнгөн тэмдэгт) + + + Йемен риал + йемен риал + йемен риал + + + Өмнөд Африкийн ранд + Өмнөд Африкийн ранд + Өмнөд Африкийн ранд + + + Замби квача (1968–2012) + Замби квача (1968–2012) + Замби квача (1968–2012) + + + Замби квача + Замби квача + Замби квача + + + + {0}-с багагүй + {0}–{1} + + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акр + + + {0} гектар + {0} гектар + + + {0} фүүт квадрат + {0} фүүт квадрат + + + {0} километр квадрат + {0} километр квадрат + + + {0} метр квадрат + {0} метр квадрат + + + {0} миль квадрат + {0} миль квадрат + + + {0} өдөр + {0} өдөр + + + {0} цаг + {0} цаг + + + {0} милсекунд + {0}милсекунд + + + {0} минут + {0} минут + + + {0} сар + {0} сар + + + {0} секунд + {0} секунд + + + {0} долоо хоног + {0} долоо хоног + + + {0} жил + {0} жил + + + {0} сантиметр + {0} сантиметр + + + {0} фүүт + {0} фүүт + + + {0} инч + {0} инч + + + {0} километр + {0} километр + + + {0} гэрлийн жил + {0} гэрлийн жил + + + {0} метр + {0} метр + + + {0} миль + {0} миль + + + {0} милметр + {0} милметр + + + {0} пикометр + {0} пикометр + + + {0} ярд + {0} ярд + + + {0} грам + {0} грам + + + {0} килограм + {0} килограм + + + {0} унц + {0} унц + + + {0} фунт + {0} фунт + + + {0} морины хүч + {0} морины хүч + + + {0} киловатт + {0} киловатт + + + {0} ватт + {0} ватт + + + {0} гектопаскал + {0} гектопаскал + + + {0} мөнгөн усны багана + {0} мөнгөн усны багана + + + {0} милбар + {0} милбар + + + {0} километр/цаг + {0} километр/цаг + + + {0} метр/секунд + {0} метр/секунд + + + {0} миль/цаг + {0} миль/цаг + + + {0} Цельсийн градус + {0} Цельсийн градус + + + {0} Фаренгейт градус + {0} Фаренгейт градус + + + {0} километр куб + {0} километр куб + + + {0} миль куб + {0} миль куб + + + {0} литр + {0} литр + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акр + + + {0} га + {0} га + + + {0} фт² + {0} фт² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} миль² + {0} миль² + + + {0} өдөр + {0} өдөр + + + {0} цаг + {0} цаг + + + {0} мс + {0} мс + + + {0} мин + {0} мин + + + {0} сар + {0} сар + + + {0} сек + {0} сек + + + {0} дол/хон + {0} дол/хон + + + {0} жил + {0} жил + + + {0} см + {0} см + + + {0} фт + {0} фт + + + {0} инч + {0} инч + + + {0} км + {0} км + + + {0} гэрлийн жил + {0} гэрлийн жил + + + {0} м + {0} м + + + {0} миль + {0} миль + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унц + {0} унц + + + {0} фунт + {0} фунт + + + {0} м.х. + {0} м.х. + + + {0} кватт + {0} кватт + + + {0} ватт + {0} ватт + + + {0} гПа + {0} гПа + + + {0} муб + {0} муб + + + {0} милбар + {0} милбар + + + {0} км/цаг + {0} км/цаг + + + {0} м/сек + {0} м/сек + + + {0} миль/цаг + {0} миль/цаг + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} миль куб + {0} миль куб + + + {0} л + {0} л + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} акр + {0} акр + + + {0} га + {0} га + + + {0} фт² + {0} фт² + + + {0} км² + {0} км² + + + {0} м² + {0} м² + + + {0} миль² + {0} миль² + + + {0} ө + {0} ө + + + {0} ц + {0} ц + + + {0} мс + {0} мс + + + {0} м + {0} м + + + {0} сар + {0} сар + + + {0} с + {0} с + + + {0} д/х + {0} д/х + + + {0} ж + {0} ж + + + {0} см + {0} см + + + {0} фт + {0} фт + + + {0} инч + {0} инч + + + {0} км + {0} км + + + {0} гэр/жил + {0} гэр/жил + + + {0} м + {0} м + + + {0} миль + {0} миль + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унц + {0} унц + + + {0} фунт + {0} фунт + + + {0} м.х. + {0} м.х. + + + {0} кватт + {0} кватт + + + {0} ватт + {0} ватт + + + {0} гПа + {0} гПа + + + {0} муб + {0} муб + + + {0} милбар + {0} милбар + + + {0} км/цаг + {0} км/цаг + + + {0} м/сек + {0} м/сек + + + {0} миль/цаг + {0} миль/цаг + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} км³ + {0} км³ + + + {0} миль куб + {0} миль куб + + + {0} л + {0} л + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + тийм:т + үгүй:ү + + + + diff --git a/library/Zend/Locale/Data/mn_Cyrl.xml b/library/Zend/Locale/Data/mn_Cyrl.xml new file mode 100755 index 000000000..536d5ca44 --- /dev/null +++ b/library/Zend/Locale/Data/mn_Cyrl.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + विश्व + आफ्रिका + उत्तर अमेरिका + दक्षिण अमेरिका + ओशनिया + पश्चिम आफ्रिका + मध्य अमेरिका + पूर्व आफ्रिका + उत्तर आफ्रिका + मध्य आफ्रिका + दक्षिणी आफ्रिका + अमेरिका + उत्तरी अमेरिका + कॅरीबियन + पूर्व अशिया + दक्षिण अशिया + दक्षिण पूर्व अशिया + दक्षिण युरोप + ऑस्‍ट्रेलेशिया + मेलानेशिया + मायक्रोनेशियन प्रदेश + पॉलिनेशिया + अशिया + मध्य अशिया + पश्चिम अशिया + युरोप + पूर्व युरोप + उत्तर युरोप + पश्चिम युरोप + लॅटिन अमेरिका + अ‍ॅसेन्शियन बेट + अँडोरा + संयुक्त अरब अमीरात + अफगाणिस्तान + अँटिग्वा आणि बर्बुडा + अँग्विला + अल्बानिया + अर्मेनिया + नेदरलँड्‍स अँ‍टिल्स + अंगोला + अंटार्क्टिका + अर्जेंटिना + अमेरिकन सामोआ + ऑस्ट्रिया + ऑस्ट्रेलिया + अरुबा + अ‍ॅलँड बेटे + अझरबैजान + बोस्निया अणि हर्जेगोविना + बार्बाडोस + बांग्लादेश + बेल्जियम + बुर्किना फासो + बल्गेरिया + बहारीन + बुरुंडी + बेनिन + सेंट बार्थेलेमी + बर्मुडा + ब्रुनेई + बोलिव्हिया + कॅरिबियन नेदरलँड्स + ब्राझिल + बहामाज + भूतान + बोउवेट बेट + बोट्सवाना + बेलारूस + बेलिझे + कॅनडा + कोकोस बेटे + काँगो - किंशासा + काँगो (ङीआरसी) + केंद्रीय अफ्रिकी प्रजासत्ताक + काँगो - ब्राझाविले + काँगो (प्रजासत्ताक) + स्वित्झर्लंड + आयव्हरी कोस्ट + कुक बेटे + चिली + कॅमेरून + चीन + कोलम्बिया + क्लिपरटोन बेट + कोस्टारिका + क्यूबा + केप व्हर्डे + कुरॅको + ख्रिसमस बेट + सायप्रस + झेक प्रजासत्ताक + जर्मनी + दिएगो गार्सिया + जिबौटी + डेन्मार्क + डोमिनिका + डोमिनिकन प्रजासत्ताक + अल्जीरिया + स्यूटा आणि मेलिला + इक्वाडोर + एस्टोनिया + इजिप्त + पश्चिम सहारा + एरिट्रिया + स्पेन + इथिओपिया + युरोपीय संघ + फिनलंड + फिजी + फॉकलंड बेटे + फॉकलंड बेटे (इस्लास मालविनास) + मायक्रोनेशिया + फरोए बेटे + फ्रान्स + गॅबॉन + युनायटेड किंगडम + यू.के. + ग्रेनेडा + जॉर्जिया + फ्रेंच गयाना + ग्वेर्नसे + घाना + जिब्राल्टर + ग्रीनलंड + गाम्बिया + गिनी + ग्वाडेलोउपे + इक्वेटोरियल गिनी + ग्रीस + दक्षिण जॉर्जिया आणि दक्षिण सँडविच बेटे + ग्वाटेमाला + गुआम + गिनी-बिसाउ + गयाना + हाँगकाँग एसएआर चीन + हाँगकाँग + हर्ड आणि मॅक्डोनाल्ड बेटे + होंडुरास + क्रोएशिया + हैती + हंगेरी + कॅनरी बेटे + इंडोनेशिया + आयर्लंड + इस्त्राइल + इस्ले ऑफ मॅन + भारत + ब्रिटिश इंडियन ओशन प्रदेश + इराक + ईराण + आइसलँड + इटली + जर्सी + जमैका + जॉर्डन + जपान + केनिया + किरगिझस्तान + कंबोडिया + किरीबाटी + कोमोरोज + सेंट किट्स आणि नेव्हिस + उत्तर कोरिया + दक्षिण कोरिया + कुवेत + केमन बेटे + कझाकस्तान + लाओस + लेबनॉन + सेंट ल्यूसिया + लिंचेनस्टाइन + श्रीलंका + लायबेरिया + लेसोथो + लिथुआनिया + लक्झेंबर्ग + लाट्‌विया + लिबिया + मोरोक्को + मोनॅको + मोल्डोव्हा + मोंटेनेग्रो + सेंट मार्टिन + मादागास्कर + मार्शल बेटे + मॅसेडोनिया + मॅसेडोनिया (FYROM) + माली + म्यानमार (बर्मा) + मंगोलिया + मकाओ एसएआर चीन + मकाऊ + उत्तरी मारियाना बेटे + मार्टिनिक + मॉरिटानिया + मॉन्ट्सेराट + माल्टा + मॉरिशस + मालदीव + मलावी + मेक्सिको + मलेशिया + मोझाम्बिक + नामिबिया + न्यू कॅलेडोनिया + नाइजर + नॉरफॉक बेट + नायजेरिया + निकाराग्वे + नेदरलँड + नॉर्वे + नेपाळ + नऊरु + नीयू + न्यूझीलंड + ओमान + पनामा + पेरू + फ्रेंच पॉलिनेशिया + पापुआ न्यू गिनी + फिलिपिन्स + पाकिस्तान + पोलंड + सेंट पियरे आणि मिक्वेलोन + पिटकैर्न बेटे + पोर्टो रिको + पॅलेस्टिनियन प्रदेश + पॅलेस्टाईन + पोर्तुगाल + पलाऊ + पराग्वे + कतार + आउटलाईंग ओशनिया + रियुनियन + रोमानिया + सर्बिया + रशिया + रवांडा + सौदी अरब + सोलोमन बेटे + सेशेल्स + सुदान + स्वीडन + सिंगापूर + सेंट हेलेना + स्लोव्हेनिया + स्वालबर्ड आणि जान मायेन + स्लोव्हाकिया + सिएरा लिओन + सॅन मरीनो + सेनेगल + सोमालिया + सुरिनाम + दक्षिण सुदान + साओ टोम आणि प्रिंसिपे + अल साल्वाडोर + सिंट मार्टेन + सीरिया + स्वाझिलँड + ट्रिस्टन दा कन्हा + टर्क्स आणि कैकोस बेटे + चाड + फ्रेंच दाक्षिणात्य प्रदेश + टोगो + थायलंड + ताजिकिस्तान + तोकेलाउ + पूर्व तिमोर + तुर्कमेनिस्तान + ट्यूनिशिया + टोंगा + तुर्की + त्रिनिदाद आणि टोबॅगो + टुवालु + तैवान + टांझानिया + युक्रेन + युगांडा + यू.एस. आउटलाइंग बेटे + युनायटेड स्टेट्स + यू.एस. + उरुग्वे + उझबेकिस्तान + व्हॅटिकन सिटी + सेंट व्हिन्सेंट आणि ग्रेनडाइन्स + व्हेनेझुएला + ब्रिटिश व्हर्जिन बेटे + यू.एस. व्हर्जिन बेटे + व्हिएतनाम + वानौटु + वालिस आणि फ्यूचूना + सामोआ + कोसोव्हो + येमेन + मायोट्टे + दक्षिण आफ्रिका + झाम्बिया + झिम्बाब्वे + अज्ञात प्रदेश + + + पिनयिन रोमनायझेशन + वादे-गिलेस रोमनायझेशन + + + दिनदर्शिका + प्रतीक क्रमवारीकडे दुर्लक्ष करा + उलट उच्चार क्रमवारी + अपरकेस/लोअरकेस क्रम + केस संवेदी क्रमवारी + काना क्रमवारी + क्रमवारी क्रम + सामान्य क्रमवारी + अंकीय क्रमवारी + क्रमवारी सामर्थ्य + चलन + संख्या + टाइम झोन + लोकेल व्हेरियंट + प्रतीक म्हणून क्रमवारी लावा + खासगी-वापर + + + अरबी-भारतीय अंक + विस्तारित अरबी-भारतीय अंक + अमेरिकन अंक + अमेरिकन छोटी लिपी अंक + बंगाली अंक + पारंपारिक चिनी क्रमवारी क्रम - Big5 + बौद्ध दिनदर्शिका + चीनी दिनदर्शिका + कॉप्टिक दिनदर्शिका + देवनागरी अंक + शब्दकोश अनुक्रम + डीफॉल्ट युनिकोड क्रमवारी क्रम + इथिओपिक अंक + इथिओपिक दिनदर्शिका + इतिओपिक अमेटे अलेम दिनदर्शिका + वित्तीय संख्‍या + पूर्ण रुंदीचे अंक + सरलीकृत चिनी क्रमवारी क्रम - GB2312 + जॉर्जियन अंक + ग्रेगोरियन दिनदर्शिका + ग्रीक अंक + ग्रीक लहान लिपीचे अंक + गुजराती अंक + गुरमुखी अंक + चीनी दशांश अंक + सरलीकृत चीनी अंक + सरलीकृत चीनी वित्तीय अंक + पारंपारिक चीनी अंक + पारंपारिक चीनी वित्तीय अंक + हिब्रू अंक + यहूदी दिनदर्शिका + सर्व क्रमवारी लावा + भारतीय राष्ट्रीय दिनदर्शिका + मुस्लिम दिनदर्शिका + मुस्लिम- नागरी दिनदर्शिका + जपानी दिनदर्शिका + जपानी अंक + जपानी वित्तीय अंक + ख्मेर अंक + कन्नड अंक + लाओ अंक + पश्चिमी अंक + प्रथम लोअरकेस क्रमवारी लावा + मल्याळम अंक + मंगोलियन अंक + म्यानमार अंक + मूळ अंक + सामान्यपणे उच्चार क्रमवारी करा + सामान्य केस क्रमाची क्रमवारी लावा + केस संवेदी क्रमवारी लावा + काना विभक्तपणे क्रमवारी लावा + नेहमीसारखे न करता क्रमवारी लावा + अंकांची वैयक्तिकरित्या क्रमवारी लावा + प्रतीकांची क्रमवारी लावा + उडिया अंक + फारसी दिनदर्शिका + फोनबुक अनुक्रम + ध्वनीविचार क्रमवारी क्रम + पिनयिन अनुक्रम + केवळ मूळ अक्षरांची क्रमवारी लावा + उच्चार/केस/रुंदी/काना क्रमवारी लावा + पुनर्स्वरूपित अनुक्रम + मिनदोउ दिनदर्शिका + रोमन अंक + रोमन लहान लिपीचे अंक + सामान्य हेतु शोध + हँगुल प्रारंभिक व्यंजनानुसार शोधा + उच्चार क्रमवारी लावा + दुर्लक्षित प्रतीकांची क्रमवारी लावा + प्रमाणित क्रमवारी क्रम + स्ट्रोक अनुक्रम + पारंपारिक तामिळ अंक + तामिळ अंक + तेलगु अंक + उच्चार/केस/रुंदीची क्रमवारी लावा + थाई अंक + तिबेटी अंक + पारंपारिक अनुक्रम + पारंपारिक संख्‍या + रॅडिकल-स्ट्रोक अनुक्रम + प्रथम अपरकेस क्रमवारी लावा + व्हाई अंक + उलट उच्चार क्रमवारी लावा + केस संवेदी क्रमवारी लावा + काना भिन्नपणे क्रमवारी लावा + युनिकोड सामान्यीकृत क्रमवारी लावा + अंकांची संख्‍याक्रमानुसार क्रमवारी लावा + + + BGN + अंकीय + स्वर + UNGEGN + गडद-फिकेपणा + पूर्णरुंदी + अर्धीरुंदी + जामो + पिनयिन + प्रकाशन + + + मेट्रिक + यूके + यूएस + + + भाषा: {0} + लिपी: {0} + प्रदेश: {0} + + + + [\u093C ० १ २ ३ ४ ५ ६ ७ ८ ९ ॐ \u0902 \u0901 ः अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ ा ि ी \u0941 \u0942 \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D] + [\u200C\u200D] + [\u200D ॐ \u0902 ः अ आ इ ई उ ऊ ऋ ऌ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ ऽ \u0945 \u094D] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] @ * / \& # ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + + {1} 'वाजता' {0} + + + + + {1} 'वाजता' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + y G + MMM y G + d MMM, y G + E, d MMM, y G + h a + HH + h:mm a + H-mm + h:mm:ss a + H-mm-ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y G + y G + M/y GGGGG + d/M/y GGGGG + E, d/M/y GGGGG + MM-y G + MMM y G + d MMM, y G + E, d MMM, y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + d/M/y – d/M/y GGGGG + d/M/y – d/M/y GGGGG + d/M/y – d/M/y GGGGG + + + E, d/M/y – E, d/M/y GGGGG + E, d/M/y – E, d/M/y GGGGG + E, d/M/y – E, d/M/y GGGGG + + + MMM–MMM y G + MMM y – MMM y G + + + d–d, MMM y G + d MMM – d, MMM y G + d, MMM y – d, MMM y G + + + E, d MMM y – E, d MMM, y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + जाने + फेब्रु + मार्च + एप्रि + मे + जून + जुलै + ऑग + सप्टें + ऑक्टो + नोव्हें + डिसें + + + जा + फे + मा + + मे + जू + जु + + + + नो + डि + + + जानेवारी + फेब्रुवारी + मार्च + एप्रिल + मे + जून + जुलै + ऑगस्ट + सप्टेंबर + ऑक्टोबर + नोव्हेंबर + डिसेंबर + + + + + जाने + फेब्रु + मार्च + एप्रि + मे + जून + जुलै + ऑग + सप्टें + ऑक्टो + नोव्हें + डिसें + + + जा + फे + मा + + मे + जू + जु + + + + नो + डि + + + जानेवारी + फेब्रुवारी + मार्च + एप्रिल + मे + जून + जुलै + ऑगस्ट + सप्टेंबर + ऑक्टोबर + नोव्हेंबर + डिसेंबर + + + + + + + रवि + सोम + मंगळ + बुध + गुरु + शुक्र + शनि + + + + सो + मं + बु + गु + शु + + + + + सो + मं + बु + गु + शु + + + + रविवार + सोमवार + मंगळवार + बुधवार + गुरुवार + शुक्रवार + शनिवार + + + + + रवि + सोम + मंगळ + बुध + गुरु + शुक्र + शनि + + + + सो + मं + बु + गु + शु + + + + + सो + मं + बु + गु + शु + + + + रविवार + सोमवार + मंगळवार + बुधवार + गुरुवार + शुक्रवार + शनिवार + + + + + + + ति1 + ति2 + ति3 + ति4 + + + 1 + 2 + 3 + 4 + + + प्रथम तिमाही + द्वितीय तिमाही + तृतीय तिमाही + चतुर्थ तिमाही + + + + + ति1 + ति2 + ति3 + ति4 + + + 1 + 2 + 3 + 4 + + + प्रथम तिमाही + द्वितीय तिमाही + तृतीय तिमाही + चतुर्थ तिमाही + + + + + + + AM + PM + + + AM + PM + + + [AM] + [PM] + + + + + + ईसवीसनपूर्व + ईसवीसन + + + ईसापूर्व + ईसापूर्व युग + सन + ईसायुग + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} 'रोजी' {0} + + + + + {1} 'रोजी' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + MMM G y + d MMM, G y + E, d MMM, G y + h a + HH + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + MMM y + d MMM, y + E, d, MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M - d/M + d/M - d/M + + + E, d/M - E, d/M + E, d/M - E, d/M + + + MMM–MMM + + + d-d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d-d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM y – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + युग + + + वर्ष + मागील वर्ष + हे वर्ष + पुढील वर्ष + + {0} वर्षामध्ये + {0} वर्षांमध्ये + + + {0} वर्षापूर्वी + {0} वर्षांपूर्वी + + + + महिना + मागील महिना + हा महिना + पुढील महिना + + {0} महिन्यामध्ये + {0} महिन्यांमध्ये + + + {0} महिन्यापूर्वी + {0} महिन्यांपूर्वी + + + + आठव़डा + मागील आठवडा + हा आठवडा + पुढील आठवडा + + {0} आठवड्यामध्ये + {0} आठवड्यांमध्ये + + + {0} आठवड्यापूर्वी + {0} आठवड्यांपूर्वी + + + + दिवस + काल + आज + उद्या + + {0} दिवसामध्ये + {0} दिवसांमध्ये + + + {0} दिवसापूर्वी + {0} दिवसांपूर्वी + + + + आठवड्याचा दिवस + + + मागील रविवार + हा रविवार + पुढील रविवार + + + मागील सोमवार + हा सोमवार + पुढील सोमवार + + + मागील मंगळवार + हा मंगळवार + पुढील मंगळवार + + + मागील बुधवार + हा बुधवार + पुढील बुधवार + + + मागील गुरुवार + हा गुरुवार + पुढील गुरुवार + + + मागील शुक्रवार + हा शुक्रवार + पुढील शुक्रवार + + + मागील शनिवार + हा शनिवार + पुढील शनिवार + + + [AM/PM] + + + तास + + {0} तासामध्ये + {0} तासांमध्ये + + + {0} तासापूर्वी + {0} तासांपूर्वी + + + + मिनिट + + {0} मिनिटामध्ये + {0} मिनिटांमध्ये + + + {0} मिनिटापूर्वी + {0} मिनिटांपूर्वी + + + + सेकंद + आत्ता + + {0} सेकंदामध्ये + {0} सेकंदांमध्ये + + + {0} सेकंदापूर्वी + {0} सेकंदांपूर्वी + + + + वेळ क्षेत्र + + + + +HH:mm;-HH:mm + [GMT]{0} + [GMT] + {0} वेळ + {0} सूर्यप्रकाश वेळ + {0} प्रमाण वेळ + {1} ({0}) + + अज्ञात शहर + + + अँडोरा + + + दुबई + + + काबूल + + + अँटिग्वा + + + अँग्विला + + + टिराने + + + येरेवन + + + लुआंडा + + + रोथेरा + + + पामेर + + + स्योवा + + + मॉसन + + + डेव्हिस + + + वोस्टोक + + + कॅसे + + + डुमोंट डी'उर्व्हिल + + + मॅक्मुरडो + + + रियो गॅलेगॉस + + + मेंदोझा + + + सान जुआन + + + उस्वाइया + + + ला रियोजा + + + सॅन लुईस + + + कॅटामार्का + + + सॉल्ता + + + जुजुय + + + टुकुमान + + + कॉर्डोबा + + + ब्युनोस आयर्स + + + पॅगो पॅगो + + + व्हिएन्ना + + + पर्थ + + + उक्ला + + + डार्विन + + + एडलेड + + + ब्रोकन हिल + + + कुह्री + + + मेलबोर्न + + + होबार्ट + + + लिंडेमन + + + सिडनी + + + ब्रिस्बेन + + + मॅक्वायर + + + लॉर्ड होवे + + + अरुबा + + + मरियेहामेन + + + बाकु + + + साराजेव्हो + + + बार्बाडोस + + + ढाका + + + ब्रुसेल्स + + + ओउगाडोउगोउ + + + सोफिया + + + बहारीन + + + बुजुंबुरा + + + पोर्टो-नोव्हो + + + सेंट बार्थेलेमी + + + बर्मुडा + + + ब्रुनेई + + + ला पेझ + + + क्रालेंदिजिक + + + यूरुनीपे + + + रियो ब्रांको + + + पोर्टो वेल्हो + + + बोआ व्हिस्टा + + + मनौस + + + कुइबा + + + सँटारेम + + + कॅम्पो ग्रँडे + + + बेलेम + + + अरागुआइना + + + साओ पावलो + + + बहिया + + + फोर्टालेझा + + + मेसेइओ + + + रेसिफे + + + नोरोन्हा + + + नसाऊ + + + थिंफू + + + गाबोरोन + + + मिन्स्क + + + बेलिझे + + + डॉसन + + + व्हाइटहॉर्स + + + इनुविक + + + व्हँकुव्हर + + + डॉसन क्रीक + + + क्रेस्टन + + + यलोनाइफ + + + एडमाँटन + + + स्विफ्ट करंट + + + केंब्रिज उपसागर + + + रेजिना + + + विनीपेग + + + रेजोल्यूट + + + रेनी नदी + + + रॅनकिन इनलेट + + + अॅटिकोकन + + + थंडर उपसागर + + + निपिगोन + + + टोरोंटो + + + इकालुइत + + + पँगनिरतुंग + + + माँकटन + + + हॅलिफॅक्स + + + गूस उपसागर + + + ग्लेस उपसागर + + + ब्लांक सॅबलोन + + + सेंट जॉन्स + + + कोकोस + + + किन्शासा + + + लुबंबाशी + + + बांगुई + + + ब्राझाव्हिले + + + झुरिच + + + अबिद्जान + + + रारोटोंगा + + + ईस्टर + + + सॅन्टिएगो + + + दोउआला + + + कशगर + + + उरुम्की + + + चाँगकिंग + + + शांघाय + + + हार्बिन + + + बोगोटा + + + कोस्टा रिका + + + हवाना + + + केप व्हर्डे + + + कुराकाओ + + + ख्रिसमस + + + निकोसिया + + + प्राग + + + बुसिंजेन + + + बर्लिन + + + जिबौटी + + + कोपेनहेगन + + + डोमिनिका + + + सॅन्टो डोमिंगो + + + अल्जिअर्स + + + गॅलापागोस + + + गुआयाक्विल + + + तल्लिन्न + + + कैरो + + + एल ऐउन + + + एस्मारा + + + कॅनरी + + + सेउटा + + + माद्रिद + + + आदिस अबाबा + + + हेलसिंकी + + + फिजी + + + स्टॅनले + + + चूक + + + पोनपेई + + + कोसराए + + + फॅरो + + + पॅरिस + + + लिबरव्हिल + + + + ब्रिटिश उन्हाळी वेळ + + लंडन + + + ग्रेनेडा + + + बिलिसी + + + कायेने + + + ग्वेर्नसे + + + अ‍ॅक्रा + + + जिब्राल्टर + + + थुले + + + नूक + + + इट्टोकोर्टूरमिट + + + डेन्मार्कशॉन + + + बंजुल + + + कोनाक्रि + + + ग्वाडेलोउपे + + + मलाबो + + + अथेन्स + + + दक्षिण जॉर्जिया + + + ग्वाटेमाला + + + गुआम + + + बिसाउ + + + गयाना + + + हाँगकाँग + + + टेगुसिगाल्पा + + + झॅग्रेब + + + पोर्ट-औ-प्रिंस + + + बुडापेस्ट + + + जकार्ता + + + पाँटियानाक + + + मकस्सार + + + जयापुरा + + + + इरिश उन्हाळी वेळ + + डब्लिन + + + जेरुसलेम + + + आइल ऑफ मॅन + + + कोलकाता + + + चागोस + + + बगदाद + + + तेहरान + + + रेयक्जाविक + + + रोम + + + जर्सी + + + जमैका + + + अम्मान + + + टोकियो + + + नैरोबी + + + बिश्केक + + + प्नोम पेन्ह + + + एंडरबरी + + + किरितिमाती + + + तारावा + + + कोमोरो + + + सेंट किट्स + + + प्योंगयांग + + + सेउल + + + कुवेत + + + केमन + + + अ‍ॅक्टौ + + + ओरल + + + अ‍ॅक्टोबे + + + किझीलोर्डा + + + अल्माटी + + + व्हिएन्टाइन + + + बैरुत + + + सेंट लुसिया + + + वडूझ + + + कोलंबो + + + मोनरोव्हिया + + + मसेरु + + + विलनियस + + + लक्झेंबर्ग + + + रिगा + + + त्रिपोली + + + कॅसाब्लान्का + + + मोनॅको + + + चिसिनौ + + + पॉडगोरिका + + + मेरीगोट + + + अंटानानारिवो + + + क्वाजालेईन + + + मजुरो + + + स्कॉप्जे + + + बामको + + + रंगून + + + होव्ड + + + उलानबातर + + + चोईबाल्सन + + + मकाऊ + + + सैपान + + + मार्टिनिक + + + नुआकचॉट + + + माँन्टसेरात + + + माल्टा + + + मॉरिशस + + + मालदीव + + + ब्लँटायर + + + तिजुआना + + + सँटा इसाबेल + + + हर्मोसिलो + + + माझातलान + + + चिहुआहुआ + + + बाहिया बांदेरास + + + ओजिनागा + + + मॉन्टेरे + + + मेक्सिको सिटी + + + माटामोरोस + + + मेरिडा + + + कानकुन + + + क्वालालंपूर + + + कुचिंग + + + मापुटो + + + विंडहोएक + + + नौमिआ + + + नियामे + + + नॉरफोक + + + लागोस + + + मानागुआ + + + अ‍ॅमस्टरडॅम + + + ऑस्लो + + + काठमांडू + + + नउरु + + + नियू + + + चॅटहॅम + + + ऑकलंड + + + मस्कत + + + पनामा + + + लीमा + + + ताहिती + + + मारक्विसास + + + गॅम्बियर + + + पोर्ट मोरेस्बे + + + मनिला + + + कराची + + + वॉर्सा + + + मिक्वेलोन + + + पिट्कैर्न + + + पोर्टो रिको + + + गाझा + + + हेब्रॉन + + + अझोरेस + + + मडीयरा + + + लिस्बन + + + पलाऊ + + + आसुन्सियोन + + + कतार + + + रियुनियन + + + बुखारेस्ट + + + बेलग्रेड + + + कलिनिनग्राड + + + मॉस्को + + + व्होल्गोग्राड + + + समारा + + + येक्तेरिनबर्ग + + + ओम्स्क + + + नोवोसिबिर्स्क + + + नोवोकुझ्नेत्स्क + + + क्रास्नोयार्स्क + + + ईर्कुत्स्क + + + यकुत्स्क + + + व्लादिवोस्टोक + + + खंदिगा + + + साखालिन + + + उस्त-नेरा + + + मेगाडन + + + कॅमचाटका + + + एनाडीयर + + + कीगाली + + + रियाध + + + ग्वाडलकनाल + + + माहे + + + खार्टुम + + + स्टॉकहोम + + + सिंगापूर + + + सेंट. हेलेना + + + लुब्लियाना + + + लाँगइयरबीयेन + + + ब्रातिस्लाव्हा + + + फ्रीटाउन + + + सॅन मरिनो + + + डकर + + + मोगादिशु + + + पारमरीबो + + + जुबा + + + साओ तोमे + + + एल साल्वाडोर + + + लोअर प्रिन्स क्वार्टर + + + दमास्कस + + + मबाबाने + + + ग्रँड टर्क + + + डीजमेना + + + करग्यूलेन + + + लोम + + + बँकॉक + + + दुशान्बे + + + फाकाओफो + + + डिलि + + + अश्गाबात + + + टयूनिस + + + टोंगाटापू + + + इस्तंबूल + + + पोर्ट ऑफ स्पेन + + + फुनाफुती + + + तैपेई + + + दार ए सलाम + + + उझगोरोड + + + कीव + + + सिम्फरोपोल + + + झापोरोझे + + + कंपाला + + + मिडवे + + + जोहान्स्टन + + + वेक + + + अडॅक + + + नोम + + + होनोलुलू + + + अँकरेज + + + यकुतात + + + सितका + + + ज्यूनौ + + + मेतलाकतला + + + लॉस एंजेलिस + + + बोइसी + + + फॉनिक्स + + + डेन्व्हर + + + ब्युलाह, उत्तर डकोटा + + + न्यू सालेम, उत्तर डकोटा + + + मध्य, उत्तर डकोटा + + + शिकागो + + + मेनोमिनी + + + विंसेनस, इंडियाना + + + पीटर्सबर्ग, इंडियाना + + + टेल सिटी, इंडियाना + + + नॉक्स, इंडियाना + + + विनमॅक, इंडियाना + + + मारेंगो, इंडियाना + + + इंडियानापोलिस + + + लुईव्हिल + + + वेवाय-इंडियाना + + + माँटिसेलो, केंटुकी + + + डेट्रॉइट + + + न्यूयॉर्क + + + मोन्टेव्हिडियो + + + समरकंद + + + ताश्कंद + + + व्हॅटिकन + + + सेंट विन्सेंट + + + कराकास + + + टोर्टोला + + + सेंट थॉमस + + + हो चि मिन्ह शहर + + + इफेट + + + वालिस + + + अपिया + + + एडेन + + + मायोट्टे + + + जोहान्सबर्ग + + + लुसाका + + + हरारे + + + + एकर वेळ + एकर प्रमाणवेळ + ऐकर ग्रीष्म वेळ + + + + + अफगाणिस्तान वेळ + + + + + मध्‍य आफ्रिका वेळ + + + + + पूर्व आफ्रिका वेळ + + + + + दक्षिण आफ्रिका वेळ + + + + + पश्चिम आफ्रिका वेळ + पश्चिम आफ्रिका प्रमाण वेळ + पश्चिम आफ्रिका उन्हाळी वेळ + + + + + अलास्का वेळ + अलास्का प्रमाण वेळ + अलास्का सूर्यप्रकाश वेळ + + + + + अल्माटी वेळ + अल्माटी प्रमाणवेळ + अल्माटी ग्रीष्मकालीन वेळ + + + + + अॅमेझॉन वेळ + अ‍ॅमेझॉन प्रमाण वेळ + अ‍ॅमेझॉन उन्हाळी वेळ + + + + + उत्तर अमेरिकन केंद्रीय वेळ + उत्तर अमेरिकन प्रमाण वेळ + उत्तर अमेरिकन केंद्रीय सूर्यप्रकाश वेळ + + + + + उत्तर अमेरिकन पूर्वी वेळ + उत्तर अमेरिकन पूर्वी प्रमाण वेळ + उत्तर अमेरिकन पूर्वी सूर्यप्रकाश वेळ + + + + + उत्तर अमेरिकन पर्वतीय वेळ + उत्तर अमेरिकन पर्वतीय प्रमाण वेळ + उत्तर अमेरिकन पर्वतीय सूर्यप्रकाश वेळ + + + + + उत्तर अमेरिकन पॅसिफिक वेळ + उत्तर अमेरिकन पॅसिफिक प्रमाण वेळ + उत्तर अमेरिकन पॅसिफिक सूर्यप्रकाश वेळ + + + + + एनाडीयर वेळ + अनादीर प्रमाणवेळ + अनादीर ग्रीष्मकालीन वेळ + + + + + अ‍ॅक्ताउ वेळ + अ‍ॅक्ताउ प्रमाणवेळ + अ‍ॅक्ताउ ग्रीष्मकालीन वेळ + + + + + अ‍ॅक्टोबे वेळ + अ‍ॅक्टोबे प्रमाणवेळ + अ‍ॅक्टोबे ग्रीष्मकालीन वेळ + + + + + अरेबियन वेळ + अरेबियन प्रमाण वेळ + अरेबियन सूर्यप्रकाश वेळ + + + + + अर्जेंटिना वेळ + अर्जेंटिना प्रमाण वेळ + अर्जेंटिना उन्हाळी वेळ + + + + + पश्चिम अर्जेंटिना वेळ + पश्चिम अर्जेंटिना प्रमाण वेळ + पश्चिम अर्जेंटिना उन्हाळी वेळ + + + + + आर्मेनिया वेळ + आर्मेनिया प्रमाण वेळ + आर्मेनिया उन्हाळी वेळ + + + + + अटलांटिक वेळ + अटलांटिक प्रमाण वेळ + अटलांटिक सूर्यप्रकाश वेळ + + + + + मध्य ऑस्ट्रेलिया वेळ + ऑस्ट्रेलियन मध्य प्रमाण वेळ + ऑस्ट्रेलियन मध्य सूर्यप्रकाश वेळ + + + + + ऑस्ट्रेलियन मध्य-पश्चिम वेळ + ऑस्ट्रेलियन मध्य-पश्चिम प्रमाण वेळ + ऑस्ट्रेलियन मध्य-पश्चिम सूर्यप्रकाश वेळ + + + + + पूर्व ऑस्ट्रेलिया वेळ + ऑस्ट्रेलियन पूर्व प्रमाण वेळ + ऑस्ट्रेलियन पूर्व सूर्यप्रकाश वेळ + + + + + पश्चिम ऑस्ट्रेलिया वेळ + ऑस्ट्रेलियन पश्चिम प्रमाण वेळ + ऑस्ट्रेलियन पश्चिम सूर्यप्रकाश वेळ + + + + + अझरबैजान वेळ + अझरबैजान प्रमाण वेळ + अझरबैजान उन्हाळी वेळ + + + + + अ‍ॅझोरेस वेळ + अ‍ॅझोरेस प्रमाण वेळ + अ‍ॅझोरेस उन्हाळी वेळ + + + + + बांग्लादेश वेळ + बांग्लादेश प्रमाण वेळ + बांग्लादेश उन्हाळी वेळ + + + + + भूतान वेळ + + + + + बोलिव्हिया वेळ + + + + + ब्राझिलिया वेळ + ब्राझिलिया प्रमाण वेळ + ब्राझिलिया उन्हाळी वेळ + + + + + ब्रुनेई दारूसलाम वेळ + + + + + केप व्हर्डे वेळ + केप व्हर्डे प्रमाण वेळ + केप व्हर्डे उन्हाळी वेळ + + + + + चामोरो वेळ + + + + + चॅथम वेळ + चॅथम प्रमाण वेळ + चॅथम सूर्यप्रकाश वेळ + + + + + चिली वेळ + चिली प्रमाण वेळ + चिली उन्हाळी वेळ + + + + + चीनी वेळ + चीनी प्रमाण वेळ + चीनी सूर्यप्रकाश वेळ + + + + + चोईबाल्सन वेळ + चोईबाल्सन प्रमाण वेळ + चोईबाल्सन उन्हाळी वेळ + + + + + ख्रिसमस बेट वेळ + + + + + कॉकोस बेटे वेळ + + + + + कोलंबिया वेळ + कोलंबिया प्रमाण वेळ + कोलंबिया उन्हाळी वेळ + + + + + कुक बेटे वेळ + कुक बेटे प्रमाण वेळ + कुक बेटे अर्ध उन्हाळी वेळ + + + + + क्यूबा वेळ + क्यूबा प्रमाण वेळ + क्यूबा सूर्यप्रकाश वेळ + + + + + डेव्हिस वेळ + + + + + डरमाँट-डी'उर्व्हिले वेळ + + + + + पूर्व तिमोर वेळ + + + + + इस्टर बेट वेळ + इस्टर बेट प्रमाण वेळ + इस्टर बेट उन्हाळी वेळ + + + + + इक्वेडोर वेळ + + + + + मध्‍य युरोपियन वेळ + मध्‍य युरोपियन प्रमाण वेळ + मध्‍य युरोपियन उन्हाळी वेळ + + + + + पूर्व युरोपियन वेळ + पूर्व युरोपियन प्रमाण वेळ + पूर्व युरोपियन उन्हाळी वेळ + + + + + पश्चिम युरोपियन वेळ + पश्चिम युरोपियन प्रमाण वेळ + पश्चिम युरोपियन उन्हाळी वेळ + + + + + फॉकलंड बेटे वेळ + फॉकलंड बेटे प्रमाण वेळ + फॉकलंड बेटे उन्हाळी वेळ + + + + + फिजी वेळ + फिजी प्रमाण वेळ + फिजी उन्हाळी वेळ + + + + + फ्रेंच गयाना वेळ + + + + + फ्रेंच दक्षिण आणि अंटार्क्टिक वेळ + + + + + गॅलापागोस वेळ + + + + + गॅम्बियर वेळ + + + + + जॉर्जिया वेळ + जॉर्जिया प्रमाण वेळ + जॉर्जिया उन्हाळी वेळ + + + + + गिल्बर्ट बेटे वेळ + + + + + ग्रीनिच प्रमाण वेळ + + + + + पूर्व ग्रीनलँड वेळ + पूर्व ग्रीनलँड प्रमाण वेळ + पूर्व ग्रीनलँड उन्हाळी वेळ + + + + + पश्चिम ग्रीनलँड वेळ + पश्चिम ग्रीनलँड प्रमाण वेळ + पश्चिम ग्रीनलँड उन्हाळी वेळ + + + + + गुआम प्रमाणवेळ + + + + + खाडी वेळ + + + + + गयाना वेळ + + + + + हवाई-अलूशन वेळ + हवाई-अलूशन प्रमाण वेळ + हवाई-अलूशन सूर्यप्रकाश वेळ + + + + + हाँग काँग वेळ + हाँग काँग प्रमाण वेळ + हाँग काँग उन्हाळी वेळ + + + + + होव्ह्ड वेळ + होव्ह्ड प्रमाण वेळ + होव्ह्ड उन्हाळी वेळ + + + + + भारतीय प्रमाण वेळ + + + IST + + + + + हिंदमहासागर वेळ + + + + + इंडोचायना वेळ + + + + + मध्‍य इंडोनेशिया वेळ + + + + + पूर्व इंडोनेशिया वेळ + + + + + पश्चिम इंडोनेशिया वेळ + + + + + इराण वेळ + इराण प्रमाण वेळ + इराण सूर्यप्रकाश वेळ + + + + + इर्कुत्सक वेळ + इर्कुत्सक प्रमाण वेळ + इर्कुत्सक उन्हाळी वेळ + + + + + इस्राएल वेळ + इस्राएल प्रमाण वेळ + इस्राएल सूर्यप्रकाश वेळ + + + + + जपान वेळ + जपान प्रमाण वेळ + जपान सूर्यप्रकाश वेळ + + + + + पेट्रोपाव्हलोस्क- कामचाट्स्की वेळ + पेट्रोपाव्हलोस्क- कामचाट्स्की प्रमाणवेळ + पेट्रोपाव्हलोस्क- कामचाट्स्की ग्रीष्मकालीन वेळ + + + + + पूर्व कझाकस्तान वेळ + + + + + पश्चिम कझाकस्तान वेळ + + + + + कोरियन वेळ + कोरियन प्रमाण वेळ + कोरियन सूर्यप्रकाश वेळ + + + + + कोस्राई वेळ + + + + + क्रास्नोयार्स्क वेळ + क्रास्नोयार्स्क प्रमाण वेळ + क्रास्नोयार्क्स उन्हाळी वेळ + + + + + किरगिस्तान वेळ + + + + + लंका वेळ + + + + + लाइन बेटे वेळ + + + + + लॉर्ड होवे वेळ + लॉर्ड होवे प्रमाण वेळ + लॉर्ड होवे सूर्यप्रकाश वेळ + + + + + मकाऊ वेळ + मकाऊ प्रमाणवेळ + मकाऊ ग्रीष्मकालीन वेळ + + + + + मॅक्वेरी बेट वेळ + + + + + मॅगाडन वेळ + मॅगाडन प्रमाण वेळ + मॅगाडन उन्हाळी वेळ + + + + + मलेशिया वेळ + + + + + मालदिव वेळ + + + + + मार्क्वेसास वेळ + + + + + मार्शल बेटे वेळ + + + + + मॉरीशस वेळ + मॉरीशस प्रमाण वेळ + मॉरीशस उन्हाळी वेळ + + + + + मॉसन वेळ + + + + + उलान बाटोर वेळ + उलान बाटोर प्रमाण वेळ + उलान बाटोर उन्हाळी वेळ + + + + + मॉस्को वेळ + मॉस्को प्रमाण वेळ + मॉस्को उन्हाळी वेळ + + + + + म्यानमार वेळ + + + + + नउरु वेळ + + + + + नेपाळ वेळ + + + + + न्यू कॅलेडोनिया वेळ + नवीन कॅलेडोनिया प्रमाण वेळ + न्यू कॅलेडोनिया उन्हाळी वेळ + + + + + न्यूझीलंड वेळ + न्यूझीलंड प्रमाण वेळ + न्यूझीलंड सूर्यप्रकाश वेळ + + + + + न्यू फाउंडलंड वेळ + न्यू फाउंडलंड प्रमाण वेळ + न्यू फाउंडलंड सूर्यप्रकाश वेळ + + + + + निऊइ वेळ + + + + + नॉरफोक बेट वेळ + + + + + फर्नांडो दी नोरोन्हा वेळ + फर्नांडो दी नोरोन्हा प्रमाण वेळ + फर्नांडो दी नोरोन्हा उन्हाळी वेळ + + + + + उत्तर मरिना बेटे वेळ + + + + + नोवोसिबिर्स्क वेळ + नोवोसिबिर्स्क प्रमाण वेळ + नोवोसिबिर्स्क उन्हाळी वेळ + + + + + ओम्स्क वेळ + ऑम्स्क प्रमाण वेळ + ओम्स्क उन्हाळी वेळ + + + + + पाकिस्तान वेळ + पाकिस्तान प्रमाण वेळ + पाकिस्तान उन्हाळी वेळ + + + + + पलाऊ वेळ + + + + + पापुआ न्यू गिनी वेळ + + + + + पॅराग्वे वेळ + पॅराग्वे प्रमाण वेळ + पॅराग्वे उन्हाळी वेळ + + + + + पेरु वेळ + पेरु प्रमाण वेळ + पेरु उन्हाळी वेळ + + + + + फिलिपाइन वेळ + फिलिपाइन प्रमाण वेळ + फिलिपाइन उन्हाळी वेळ + + + + + ‍फोनिक्स बेटे वेळ + + + + + सेंट पियर आणि मिक्वेलोन वेळ + सेंट पियर आणि मिक्वेलोन प्रमाण वेळ + सेंट पियर आणि मिक्वेलोन सूर्यप्रकाश वेळ + + + + + पिटकैर्न वेळ + + + + + पोनॅपे वेळ + + + + + क़िझीलोर्डा वेळ + क़िझीलोर्डा प्रमाणवेळ + क़िझीलोर्डा ग्रीष्मकालीन वेळ + + + + + रियुनियन वेळ + + + + + रोथेरा वेळ + + + + + सखलिन वेळ + सखलिन प्रमाण वेळ + सखलिन उन्हाळी वेळ + + + + + समारा वेळ + सामरा प्रमाणवेळ + सामरा ग्रीष्मकालीन वेळ + + + + + सामोआ वेळ + सामोआ प्रमाण वेळ + सामोआ उन्हाळी वेळ + + + + + सेशेल्स वेळ + + + + + सिंगापूर प्रमाण वेळ + + + + + सोलोमॉन बेटे वेळ + + + + + दक्षिण जॉर्जिया वेळ + + + + + सुरिनाम वेळ + + + + + स्योवा वेळ + + + + + ताहिती वेळ + + + + + तैपेई वेळ + तैपेई प्रमाण वेळ + तैपेई सूर्यप्रकाश वेळ + + + + + ताजिकिस्तान वेळ + + + + + टोकेलाऊ वेळ + + + + + टोंगा वेळ + टोंगा प्रमाण वेळ + टोंगा उन्हाळी वेळ + + + + + चूक वेळ + + + + + तुर्कमेनिस्तान वेळ + तुर्कमेनिस्तान प्रमाण वेळ + तुर्कमेनिस्तान उन्हाळी वेळ + + + + + तुवालू वेळ + + + + + उरुग्वे वेळ + उरुग्वे प्रमाण वेळ + उरुग्वे उन्हाळी वेळ + + + + + उझबेकिस्तान वेळ + उझबेकिस्तान प्रमाण वेळ + उझबेकिस्तान उन्हाळी वेळ + + + + + वनातू वेळ + वनातू प्रमाण वेळ + वनातू उन्हाळी वेळ + + + + + व्हेनेझुएला वेळ + + + + + व्लादिवोस्तोक वेळ + व्लादिवोस्तोक प्रमाण वेळ + व्लादिवोस्तोक उन्हाळी वेळ + + + + + व्होल्गोग्राड वेळ + व्होल्गोग्रड प्रमाण वेळ + व्होल्गोग्राड उन्हाळी वेळ + + + + + व्होस्टॉक वेळ + + + + + वेक बेट वेळ + + + + + वॉलिस आणि फुटुना वेळ + + + + + याकुत्सक वेळ + याकुत्सक प्रमाण वेळ + याकुत्सक उन्हाळी वेळ + + + + + येकतरिनबर्ग वेळ + येकतरिनबर्ग प्रमाण वेळ + येकतरिनबर्ग उन्हाळी वेळ + + + + + + deva + + deva + + + . + , + % + + + - + E + × + + + NaN + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + + + #,##0.### + + + + + 0 हजार + 0 हजार + 00 हजार + 00 हजार + 000 हजार + 000 हजार + 0 दशलक्ष + 0 दशलक्ष + 00 दशलक्ष + 00 दशलक्ष + 000 दशलक्ष + 000 दशलक्ष + 0 महापद्म + 0 महापद्म + 00 महापद्म + 00 महापद्म + 000 महापद्म + 000 महापद्म + 0 खरब + 0 खरब + 00 खरब + 00 खरब + 000 खरब + 000 खरब + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + [#E0] + + + + + + + [#E0] + + + + + + + #,##0% + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + संयुक्त अरब अमीरात दिरहॅम + संयुक्त अरब अमीरात दिरहॅम + संयुक्त अरब अमीरात दिरहॅम + + + अफगाण अफगाणी + अफगाण अफगाणी + अफगाण अफगाणी + + + अल्बानियन लेक + अल्बानियन लेक + अल्बानियन लेक + + + आर्मेनियन द्रॅम + आर्मेनियन द्रॅम + आर्मेनियन द्रॅम + + + नेदरलँडचा अँटिलीन गिल्डर + नेदरलँडचा अँटिलीन गिल्डर + नेदरलँडचा अँटिलीन गिल्डर + + + अँगोलन क्वॅन्झा + अँगोलन क्वॅन्झा + अँगोलन क्वॅन्झा + + + अर्जेंटाइन पेसो + अर्जेंटाइन पेसो + अर्जेंटाइन पेसो + + + ऑस्ट्रेलियन डॉलर + ऑस्ट्रेलियन डॉलर + ऑस्ट्रेलियन डॉलर + A$ + + + अरुबा फ्लोरिन + अरुबा फ्लोरिन + अरुबा फ्लोरिन + + + अझरबैझानी मानाट + अझरबैझानी मानाट + अझरबैझानी मानाट + + + बोस्निया-हर्जेगोविना कन्व्हर्टिबल मार्क + बोस्निया-हर्जेगोविना कन्व्हर्टिबल मार्क + बोस्निया-हर्जेगोविना कन्व्हर्टिबल मार्क + + + बार्बाडियन डॉलर + बार्बाडियन डॉलर + बार्बाडियन डॉलर + + + बांगलादेशी टका + बांगलादेशी टका + बांगलादेशी टका + + + बल्गेरियन लेव + बल्गेरियन लेव + बल्गेरियन लेव + + + बाहरिनी दिनार + बाहरिनी दिनार + बाहरिनी दिनार + + + बुरुडियन फ्रँक + बुरुडियन फ्रँक + बुरुडियन फ्रँक + + + बर्मुडा डॉलर + बर्मुडा डॉलर + बर्मुडा डॉलर + + + ब्रुनेई डॉलर + ब्रुनेई डॉलर + ब्रुनेई डॉलर + + + बोलिव्हियन बोलिव्हियानो + बोलिव्हियन बोलिव्हियानो + बोलिव्हियन बोलिव्हियानो + + + ब्राझिलियन रेयाल + ब्राझिलियन रेयाल + ब्राझिलियन रेयाल + R$ + + + बहामी डॉलर + बहामी डॉलर + बहामी डॉलर + + + भूतानी एंगल्ट्रम + भूतानी एंगल्ट्रम + भूतानी एंगल्ट्रम + + + बोट्सवाना पुला + बोट्सवाना पुला + बोट्सवाना पुला + + + बेलारुशियन रुबल + बेलारुशियन रुबल + बेलारुशियन रुबल + + + बेलीझ डॉलर + बेलीझ डॉलर + बेलीझ डॉलर + + + कॅनडियन डॉलर + कॅनडियन डॉलर + कॅनडियन डॉलर + CA$ + + + काँगोलीज फ्रँक + काँगोलीज फ्रँक + काँगोलीज फ्रँक + + + स्विस फ्रँक + स्विस फ्रँक + स्विस फ्रँक + + + चिली पेसो + चिली पेसो + चिली पेसो + + + चीनी युआन + चीनी युआन + चीनी युआन + CN¥ + + + कोलंबियन पेसो + कोलंबियन पेसो + कोलंबियन पेसो + + + कोस्टा रिका कोलोन + कोस्टा रिका कोलोन + कोस्टा रिका कोलोन + + + क्यूबन विनिमय पेसो + क्यूबन विनिमय पेसो + क्यूबन विनिमय पेसो + + + क्यूबन पेसो + क्यूबन पेसो + क्यूबन पेसो + + + केप व्हर्डेयन एस्कुडो + केप व्हर्डेयन एस्कुडो + केप व्हर्डेयन एस्कुडो + + + झेक प्रजासत्ताक कोरुना + झेक प्रजासत्ताक कोरुना + झेक प्रजासत्ताक कोरुना + + + जिबौटियन फ्रँक + जिबौटियन फ्रँक + जिबौटियन फ्रँक + + + डॅनिश क्रोन + डॅनिश क्रोन + डॅनिश क्रोन + + + डोमिनिकन पेसो + डोमिनिकन पेसो + डोमिनिकन पेसो + + + अल्जेरियन दिनार + अल्जेरियन दिनार + अल्जेरियन दिनार + + + इजिप्शियन पाउंड + इजिप्शियन पाउंड + इजिप्शियन पाउंड + + + इरिट्रियन नाफ्का + इरिट्रिया नाफ्का + इरिट्रिया नाफ्का + + + इथिओपियन बिर + इथिओपियन बिर + इथिओपियन बिर + + + यूरो + युरो + युरो + + + + फिजियन डॉलर + फिजियन डॉलर + फिजियन डॉलर + + + फॉकलंड आयलंड पाउंड + फॉकलंड आयलंड पाउंड + फॉकलंड आयलंड पाउंड + + + ब्रिटिश पाऊंड स्टर्लिंग + ब्रिटिश पाऊंड स्टर्लिंग + ब्रिटिश पाऊंड स्टर्लिंग + £ + + + जॉर्जियन लारी + जॉर्जियन लारी + जॉर्जियन लारी + + + घानीयन सेडी + घानीयन सेडी + घानीयन सेडी + + + जिब्राल्टर पाउंड + जिब्राल्टर पाउंड + जिब्राल्टर पाउंड + + + गाम्बियन डालासी + गाम्बियन डालासी + गाम्बियन डालासी + + + गिनी फ्रँक + गिनी फ्रँक + गिनी फ्रँक + + + ग्वाटेमालाचे क्वेत्झाल + ग्वाटेमालाचे क्वेत्झाल + ग्वाटेमालाचे क्वेत्झाल + + + गयाना डॉलर + गयाना डॉलर + गयाना डॉलर + + + हाँगकाँग डॉलर + हाँगकाँग डॉलर + हाँगकाँग डॉलर + HK$ + + + होंडुरा लेम्पियरा + होंडुरा लेम्पियरा + होंडुरा लेम्पियरा + + + क्रोएशियन कूना + क्रोएशियन कूना + क्रोएशियन कूना + + + हैती गोअर्ड + हैती गोअर्ड + हैती गोअर्ड + + + हंगेरियन फॉरिन्ट + हंगेरियन फॉरिन्ट + हंगेरियन फॉरिन्ट + + + इंडोनेशियन रुपैयाह + इंडोनेशियन रुपैयाह + इंडोनेशियन रुपैयाह + + + ईस्त्रायली न्यू शेकेल + ईस्त्रायली न्यू शेकेल + ईस्त्रायली न्यू शेकेल + + + + भारतीय रुपया + भारतीय रुपया + भारतीय रुपया + + + + इराकी दिनार + इराकी दिनार + इराकी दिनार + + + इराणी रियाल + इराणी रियाल + इराणी रियाल + + + आइसलँडिक क्रोन + आइसलँडिक क्रोन + आइसलँडिक क्रोन + + + जमैकन डॉलर + जमैकन डॉलर + जमैकन डॉलर + + + जॉर्डनियन दिनार + जॉर्डनियन दिनार + जॉर्डनियन दिनार + + + जपानी येन + जपानी येन + जपानी येन + JP¥ + + + केनियन शिलिंग + केनियन शिलिंग + केनियन शिलिंग + + + किरगिस्तानी सॉम + किरगिस्तानी सॉम + किरगिस्तानी सॉम + + + कंबोडियन रियेल + कंबोडियन रियेल + कंबोडियन रियेल + + + कोलोरियन फ्रँक + कोलोरियन फ्रँक + कोलोरियन फ्रँक + + + उत्तर कोरियन वॉन + उत्तर कोरियन वॉन + उत्तर कोरियन वॉन + + + दक्षिण कोरियन वॉन + दक्षिण कोरियन वॉन + दक्षिण कोरियन वॉन + + + + कुवैती दिनार + कुवैती दिनार + कुवैती दिनार + + + केमेन आयलॅंड डॉलर + केमेन आयलॅंड डॉलर + केमेन आयलॅंड डॉलर + + + कझाकिस्तानी तेंगे + कझाकिस्तानी तेंगे + कझाकिस्तानी तेंगे + + + लेओशियन किप + लेओशियन किप + लेओशियन किप + + + लेबनीज पाउंड + लेबनीज पाउंड + लेबनीज पाउंड + + + श्रीलंकन रुपी + श्रीलंकन रुपी + श्रीलंकन रुपी + + + लाइबेरियन डॉलर + लाइबेरियन डॉलर + लाइबेरियन डॉलर + + + लेसोटो लोटी + + + लिथुआनियन लिटाज् + लिथुआनियन लिटाज् + लिथुआनियन लिटाज् + + + लाट्व्हियन लाट्झ + लाट्व्हियन लाट्झ + लाट्व्हियन लाटी + + + लिबियाचा दिनार + लिबियाचा दिनार + लिबियाचा दिनार + + + मोरोक्को दिरहॅम + मोरोक्को दिरहॅम + मोरोक्को दिरहॅम + + + मोल्डोवन लेउ + मोल्डोवन लेउ + मोल्डोवन लेई + + + मालागासी एरियारी + मालागासी एरियारी + मालागासी एरियारी + + + मॅसेडोनियन दिनार + मॅसेडोनियन दिनार + मॅसेडोनियन दिनार + + + म्यानमा क्याट + म्यानमा क्याट + म्यानमा क्याट + + + मंगोलियन टुग्रिक + मंगोलियन टुग्रिक + मंगोलियन टुग्रिक + + + मॅकॅनीज् पटाका + मॅकॅनीज् पटाका + मॅकॅनीज् पटाका + + + मॉरिटानियन ओगिया + मॉरिटानियन ओगिया + मॉरिटानियन ओगिया + + + मॉरिशियन रुपी + मॉरिशियन रुपी + मॉरिशियन रुपी + + + मालदीवियन रुफिया + मालदीवियन रुफिया + मालदीवियन रुफिया + + + मालावियन क्वाचा + मालावियन क्वाचा + मालावियन क्वाचा + + + मेक्सिको पेसो + मेक्सिको पेसो + मेक्सिको पेसो + MX$ + + + मलेशियन रिंगिट + मलेशियन रिंगिट + मलेशियन रिंगिट + + + मोझांबिकन मेटिकल + मोझांबिकन मेटिकल + मोझांबिकन मेटिकल + + + नमिबियन डॉलर + नमिबियन डॉलर + नमिबियन डॉलर + + + नायजेरियन नायरा + नायजेरियन नायरा + नायजेरियन नायरा + + + निकाराग्वेचा कोर्डोबा + निकाराग्वेचा कोर्डोबा + निकाराग्वेचा कोर्डोबा + + + नॉर्वेजियन क्रोन + नॉर्वेजियन क्रोन + नॉर्वेजियन क्रोन + + + नेपाळी रुपया + नेपाळी रुपया + नेपाळी रुपया + + + न्यूझीलँड डॉलर + न्यूझीलँड डॉलर + न्यूझीलँड डॉलर + NZ$ + + + ओमानी रियाल + ओमानी रियाल + ओमानी रियाल + + + पनामा बाल्बोआ + पनामा बाल्बोआ + पनामा बाल्बोआ + + + पेरुवियन नुइव्हो सोल + पेरुवियन नुइव्हो सोल + पेरुवियन नुइव्हो सोल + + + पापुआ न्यू गिनीयन किना + पापुआ न्यू गिनीयन किना + पापुआ न्यू गिनीयन किना + + + फिलिपिनी पेसो + फिलिपिनी पेसो + फिलिपिनी पेसो + + + पाकिस्तानी रुपया + पाकिस्तानी रुपया + पाकिस्तानी रुपया + + + पोलिश झ्लॉटी + पोलिश झ्लॉटी + पोलिश झ्लॉटी + + + पराग्वे ग्वारानी + पराग्वे ग्वारानी + पराग्वे ग्वारानी + + + कतारी रियाल + कतारी रियाल + कतारी रियाल + + + रोमानियन लेऊ + रोमानियन लेऊ + रोमानियन लेई + + + सर्बियन दिनार + सर्बियन दिनार + सर्बियन दिनार + + + रशियन रुबल + रशियन रुबल + रशियन रुबल + + + रवांडा फ्रँक + रवांडा फ्रँक + रवांडा फ्रँक + + + सौदी रियाल + सौदी रियाल + सौदी रियाल + + + सोलोमन आयलँड्स + सोलोमन आयलँड्स + सोलोमन आयलँड्स + + + सेशेलोईस रुपी + सेशेलोईस रुपी + सेशेलोईस रुपी + + + सुदानी पाउंड + सुदानी पाउंड + सुदानी पाउंड + + + स्वीडिश क्रोन + स्वीडिश क्रोन + स्वीडिश क्रोन + + + सिंगापूर डॉलर + सिंगापूर डॉलर + सिंगापूर डॉलर + + + सेंट हेलेना पाउंड + सेंट हेलेना पाउंड + सेंट हेलेना पाउंड + + + सिएरा लिऑनचा लिऑन + सिएरा लिऑनचा लिऑन + सिएरा लिऑनचा लिऑन + + + सोमाली शिलिंग + सोमाली शिलिंग + सोमाली शिलिंग + + + सुरिनामी डॉलर + सुरिनामी डॉलर + सुरिनामी डॉलर + + + दक्षिण सुदानी पाउंड + दक्षिण सुदानी पाउंड + दक्षिण सुदानी पाउंड + + + साओ टोम आणि प्रिन्सिपे डोबरा + साओ टोम आणि प्रिन्सिपे डोबरा + साओ टोम आणि प्रिन्सिपे डोबरा + + + सीरियन पाउंड + सीरियन पाउंड + सीरियन पाउंड + + + स्वाझी लीलांगेनी + स्वाझी लीलांगेनी + स्वाझी लीलांगेनी + + + थाई बाहत + थाई बाहत + थाई बाहत + ฿ + + + ताजकीस्तानी सोमोनी + ताजकीस्तानी सोमोनी + ताजकीस्तानचा सोमोनी + + + तुर्कमेनिस्तानी मानाट + तुर्कमेनिस्तानी मानाट + तुर्कमेनिस्तानी मानाट + + + ट्यूनिसियन दिनार + ट्यूनिसियन दिनार + ट्यूनिसियन दिनार + + + टोंगा पाआंगा + टोंगा पाआंगा + टोंगा पाआंगा + + + तुर्की लिरा + तुर्की लिरा + तुर्की लिरा + + + त्रिनिदाद आणि टोबॅगो डॉलर + त्रिनिदाद आणि टोबॅगो डॉलर + त्रिनिदाद आणि टोबॅगो डॉलर + + + न्यू तैवान डॉलर + न्यू तैवान डॉलर + न्यू तैवान डॉलर + NT$ + + + टांझानियन शिलिंग + टांझानियन शिलिंग + टांझानियन शिलिंग + + + यूक्रेनियन हरिन्या + युक्रेनियन हरिन्या + युक्रेनियन हरिन्या + + + युगांडा शिलिंग + युगांडा शिलिंग + युगांडा शिलिंग + + + यूएस डॉलर + यूएस डॉलर + यूएस डॉलर + $ + + + उरुग्वेचा पेसो + उरुग्वेचा पेसो + उरुग्वेचा पेसो + + + उझबेकिस्तान सॉम + उझबेकिस्तान सॉम + उझबेकिस्तान सॉम + + + व्हेनेझुएला बोलिव्हार + व्हेनेझुएला बोलिव्हार + व्हेनेझुएला बोलिव्हार + + + व्हिएतनामी डोंग + व्हिएतनामी डोंग + व्हिएतनामी डोंग + + + + वानाटु वाटु + वानाटु वाटु + वानाटु वाटु + + + सामोअन टाला + सामोअन टाला + सामोअन टाला + + + [CFA] फ्रँक [BEAC] + [CFA] फ्रँक [BEAC] + [CFA] फ्रँक्स [BEAC] + FCFA + + + पूर्व कॅरीबियन डॉलर + पूर्व कॅरीबियन डॉलर + पूर्व कॅरीबियन डॉलर + EC$ + + + [CFA] फ्रँक [BCEAO] + [CFA] फ्रँक [BCEAO] + [CFA] फ्रँक्स [BCEAO] + CFA + + + सीएफपी फ्रँक + सीएफपी फ्रँक + सीएफपी फ्रँक + CFPF + + + अज्ञात चलन + अज्ञात चलन + अज्ञात चलन + + + येमेनी रियाल + येमेनी रियाल + येमेनी रियाल + + + दक्षिण आफ्रिकी रँड + दक्षिण आफ्रिकी रँड + दक्षिण आफ्रिकी रँड + + + झांबियन क्वाचा (1968–2012) + + + झांबियन क्वाचा + झांबियन क्वाचा + झांबियन क्वाचा + + + + {0}+ + {0}–{1} + + + + + + {0} प्रति {1} + + + {0} जी-फोर्स + {0} जी-फोर्स + + + {0} मिनिट + {0} मिनिटे + + + {0} सेकंद + {0} सेकंद + + + {0} अंश + {0} अंश + + + {0} एकर + {0} एकर + + + {0} हेक्टर + {0} हेक्टर + + + {0} चौरस फूट + {0} चौरस फूट + + + {0} चौरस किलोमीटर + {0} चौरस किलोमीटर + + + {0} चौरस मीटर + {0} चौरस मीटर + + + {0} चौरस मैल + {0} चौरस मैल + + + {0} दिवस + {0} दिवस + + + {0} तास + {0} तास + + + {0} मिलिसेकंद + {0} मिलिसेकंद + + + {0} मिनिट + {0} मिनिटे + + + {0} महिना + {0} महिने + + + {0} सेकंद + {0} सेकंद + + + {0} आठवडा + {0} आठवडे + + + {0} वर्ष + {0} वर्षे + + + {0} सेंटीमीटर + {0} सेंटीमीटर + + + {0} फूट + {0} फूट + + + {0} इंच + {0} इंच + + + {0} किलोमीटर + {0} किलोमीटर + + + {0} प्रकाश वर्ष + {0} प्रकाश वर्षे + + + {0} मीटर + {0} मीटर + + + {0} मैल + {0} मैल + + + {0} मिलिमीटर + {0} मिलिमीटर + + + {0} पिकोमीटर + {0} पिकोमीटर + + + {0} यार्ड + {0} यार्ड + + + {0} ग्रॅम + {0} ग्रॅम + + + {0} किलोग्रॅम + {0} किलोग्रॅम + + + {0} औंस + {0} औंस + + + {0} पाउंड + {0} पाउंड + + + {0} हॉर्सपॉवर + {0} हॉर्सपॉवर + + + {0} किलोवॉट + {0} किलोवॉट + + + {0} वॉट + {0} वॉट + + + {0} हेक्टोपास्कल + {0} हेक्टोपास्कल + + + {0} मर्क्यूरी इंच + {0} मर्क्यूरी इंच + + + {0} मिलिबार + {0} मिलिबार + + + {0} किलोमीटर प्रति तास + {0} किलोमीटर प्रति तास + + + {0} मीटर प्रति सेकंद + {0} मीटर प्रति सेकंद + + + {0} मैल प्रति तास + {0} मैल प्रति तास + + + {0} अंश सेल्सिअस + {0} अंश सेल्सिअस + + + {0} अंश फॅरनहाईट + {0} अंश फॅरनहाईट + + + {0} क्युबिक किलोमीटर + {0} क्युबिक किलोमीटर + + + {0} क्युबिक मैल + {0} क्युबिक मैल + + + {0} लीटर + {0} लीटर + + + + + {0}/{1} + + + {0} जी + {0} जी + + + {0} मिनि + {0} मिनि + + + {0} सेक + {0} सेक + + + {0} अंश + {0} अंश + + + {0} एकर + {0} एकर + + + {0} हेक्टर + {0} हेक्टर + + + {0} चौ फूट + {0} चौ फूट + + + {0} किमी² + {0} किमी² + + + {0} मी² + {0} मी² + + + {0} चौ मी + {0} चौ मी + + + {0} दिवस + {0} दिवस + + + {0} ता + {0} ता + + + {0} मिलिसे + {0} मिलिसे + + + {0} मिनि + {0} मिनि + + + {0} महिना + {0} महिने + + + {0} से + {0} से + + + {0} आ + {0} आ + + + {0} वर्ष + {0} वर्षे + + + {0} सेंमी + {0} सेंमी + + + {0} फूट + {0} फूट + + + {0} इंच + {0} इंच + + + {0} किमी + {0} किमी + + + {0} प्रव + {0} प्रव + + + {0} मी + {0} मी + + + {0} मैल + {0} मैल + + + {0} मिमी + {0} मिमी + + + {0} पिमी + {0} पिमी + + + {0} यार्ड + {0} यार्ड + + + {0} ग्रॅ + {0} ग्रॅ + + + {0} किग्रॅ + {0} किग्रॅ + + + {0} औंस + {0} औंस + + + {0} पाउंड + {0} पाउंड + + + {0} हॉपॉ + {0} हॉपॉ + + + {0} किवॉ + {0} किवॉ + + + {0} वॉ + {0} वॉ + + + {0} हेक्टोपा + {0} हेक्टोपा + + + {0} हेग्रॅमध्ये + {0} हेग्रॅमध्ये + + + {0} मिबा + {0} मिबा + + + {0} किप्रता + {0} किप्रता + + + {0} मी/से + {0} मी/से + + + {0} मैप्रता + {0} मैप्रता + + + {0}°से + {0}°से + + + {0}°फॅ + {0}°फॅ + + + {0} किमी³ + {0} किमी³ + + + {0} मै³ + {0} मै³ + + + {0} ली + {0} ली + + + + + {0}/{1} + + + {0}जी + {0}जी + + + {0}′ + {0}' + + + {0}″ + {0}" + + + {0}° + {0}° + + + {0}एकर + {0}एकर + + + {0}हेक्टर + {0}हेक्टर + + + {0} फूट² + {0}फूट² + + + {0} किमी² + {0} किमी² + + + {0} मी² + {0} मी² + + + {0}मै² + {0}मै² + + + {0}दि + {0}दि + + + {0}ता + {0}ता + + + {0} मिलिसे + {0} मिलिसे + + + {0} मिनिट + {0}मि + + + {0}म + {0}म + + + {0}से + {0}से + + + {0}आ + {0}आ + + + {0}व + {0}व + + + {0}सेंमी + {0}सेंमी + + + {0}' + {0}' + + + {0}″ + {0}″ + + + {0}किमी + {0}किमी + + + {0}प्रव + {0}प्रव + + + {0}मी + {0}मी + + + {0}मैल + {0}मैल + + + {0}मिमी + {0}मिमी + + + {0}पिमी + {0}पिमी + + + {0}यार्ड + {0}यार्ड + + + {0}ग्रॅ + {0}ग्रॅ + + + {0}किग्रॅ + {0}किग्रॅ + + + {0}औंस + {0}औंस + + + {0}# + {0}# + + + {0} हॉपॉ + {0}हॉपॉ + + + {0}किवॉ + {0}किवॉ + + + {0}वॉ + {0}वॉ + + + {0}हेक्टोपा + {0}हेक्टोपा + + + {0}" हेग्रॅ + {0}" हेग्रॅ + + + {0}मिबा + {0}मिबा + + + {0}किप्रता + {0}किप्रता + + + {0}मी/से + {0}मी/से + + + {0}मैप्रता + {0}मैप्रता + + + {0}° + {0}° + + + {0}°फॅ + {0}°फॅ + + + {0}किमी³ + {0}किमी³ + + + {0}मै³ + {0}मै³ + + + {0}ली + {0}ली + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} आणि {1} + {0} आणि {1} + + + {0}, {1} + {0}, {1} + {0} आणि {1} + {0} आणि {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + होयःहो + नाहीःना + + + + diff --git a/library/Zend/Locale/Data/mr_IN.xml b/library/Zend/Locale/Data/mr_IN.xml new file mode 100755 index 000000000..38608b570 --- /dev/null +++ b/library/Zend/Locale/Data/mr_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ms.xml b/library/Zend/Locale/Data/ms.xml new file mode 100755 index 000000000..65aa60c34 --- /dev/null +++ b/library/Zend/Locale/Data/ms.xml @@ -0,0 +1,3833 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Abkhazia + Akoli + Afrikaans + Aghem + Akan + Amharic + Arab + Arab Standard Moden + Assam + Asu + Aymara + Azerbaijan + Azeri + Bamun + Ghomala + Belarus + Bemba + Bena + Bafut + Bulgaria + Kom + Benggala + Tibet + Breton + Bodo + Bosnia + Akoose + Bulu + Medumba + Catalonia + Cayuga + Chiga + Cherokee + Kurdi Sorani + Corsica + Czech + Wales + Denmark + Taita + Jerman + Jerman Austria + Jerman Halus Switzerland + Zarma + Divehi + Jola-Fonyi + Dzongkha + Dazaga + Embu + Ewe + Efik + Greek + Inggeris + Inggeris Australia + Inggeris Kanada + Inggeris British + Inggeris U.K. + Inggeris AS + Inggeris A.S. + Esperanto + Sepanyol + Sepanyol Amerika Latin + Sepanyol Eropah + Sepanyol Mexico + Estonia + Basque + Parsi + Finland + Filipina + Fiji + Faroe + Perancis + Perancis Kanada + Perancis Switzerland + Frisian + Ireland + Ga + Scots Gaelic + Galicia + Guarani + Jerman Switzerland + Gujerat + Gusii + Hausa + Hawaii + Ibrani + Hindi + Croat + Haiti + Hungary + Armenia + Interlingua + Ibibio + Indonesia + Interlingue + Igbo + Iceland + Itali + Jepun + Ngomba + Machame + Jawa + Georgia + Kanembu + Makonde + Kabuverdianu + Kongo + Koyra Chiini + Kazakhstan + Kako + Kalenjin + Khmer + Kannada + Korea + Kashmir + Shambala + Bafia + Colognian + Kurdish + Kirghiz + Latin + Langi + Luxembourg + Ganda + Lakota + Lingala + Laos + Lozi + Lithuania + Luba-Lulua + Luyia + Latvia + Mafa + Maba + Meru + Morisyen + Malagasy + Makhuwa-Meetto + Meta' + Maori + Macedonia + Malayalam + Mongolia + Marathi + Bahasa Melayu + Malta + Mundang + Burma + Myene + Nama + Bokmål Norway + Ndebele Utara + Nepal + Belanda + Flemish + Kwasio + Nynorsk Norway + Norway + Sotho Utara + Nuer + Nyanja + Nyankole + Occitania + Oromo + Oriya + Ossete + Punjabi + Poland + Pashto + Pushto + Portugis + Portugis Brazil + Portugis Eropah + Quechua + Romansh + Rundi + Romania + Rombo + Rusia + Kinyarwanda + Rwa + Sanskrit + Samburu + Ngambay + Sangu + Sindhi + Sami Utara + Seneca + Sena + Koyraboro Senni + Sango + SerboCroatia + Tachelhit + Chadian Arab + Sinhala + Slovak + Slovenia + Samoa + Shona + Somali + Albania + Serbia + Swati + Saho + Sotho Selatan + Sunda + Sweden + Swahili + Congo Swahili + Tamil + Telugu + Teso + Tetum + Tajik + Thai + Tigrinya + Turkmen + Klingon + Tswana + Tonga + Tok Pisin + Turki + Taroko + Tsonga + Tatar + Tumbuka + Twi + Tasawaq + Tahiti + Tamazight Atlas Tengah + Uighur + Uyghur + Ukraine + Bahasa Tidak Diketahui + Urdu + Uzbekistan + Venda + Vietnam + Vunjo + Walser + Wolof + Xhosa + Soga + Yangben + Yemba + Yiddish + Yoruba + Tamazight Maghribi Standard + Cina + Cina Ringkas + Cina Tradisional + Zulu + Tiada kandungan linguistik + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dunia + Afrika + Amerika Utara + Amerika Selatan + Oceania + Afrika Barat + Amerika Tengah + Afrika Timur + Afrika Utara + Afrika Tengah + Selatan Afrika + Amerika + Utara Amerika + Caribbean + Asia Timur + Asia Selatan + Asia Tenggara + Eropah Selatan + Australasia + Melanesia + Wilayah Mikronesia + Polinesia + Asia + Asia Tengah + Asia Barat + Eropah + Eropah Timur + Eropah Utara + Eropah Barat + Amerika Latin + Pulau Ascension + Andorra + Emiriah Arab Bersatu + Afghanistan + Antigua dan Barbuda + Anguilla + Albania + Armenia + Netherlands Antilles + Angola + Antartika + Argentina + American Samoa + Austria + Australia + Aruba + Kepulauan Aland + Azerbaijan + Bosnia dan Herzegovina + Barbados + Bangladesh + Belgium + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Belanda Caribbean + Brazil + Bahamas + Bhutan + Pulau Bouvet + Botswana + Belarus + Belize + Kanada + Kepulauan Cocos (Keeling) + Congo - Kinshasa + Congo (DRC) + Republik Afrika Tengah + Congo - Brazzaville + Congo (Republik) + Switzerland + Cote d’Ivoire + Ivory Coast + Kepulauan Cook + Chile + Cameroon + China + Colombia + Pulau Clipperton + Costa Rica + Cuba + Cape Verde + Curacao + Pulau Krismas + Cyprus + Republik Czech + Jerman + Diego Garcia + Djibouti + Denmark + Dominica + Republik Dominica + Algeria + Ceuta dan Melilla + Ecuador + Estonia + Mesir + Sahara Barat + Eritrea + Sepanyol + Ethiopia + Kesatuan Eropah + Finland + Fiji + Kepulauan Falkland + Kepulauan Falkland (Islas Malvinas) + Micronesia + Kepulauan Faroe + Perancis + Gabon + United Kingdom + GB + Grenada + Georgia + Guiana Perancis + Guernsey + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Guinea Khatulistiwa + Yunani + Kepualaun Georgia Selatan dan Sandwich Selatan + Guatemala + Guam + Guinea Bissau + Guyana + Hong Kong SAR China + Hong Kong + Pulau Heard dan Kepulauan McDonald + Honduras + Croatia + Haiti + Hungary + Kepulauan Canary + Indonesia + Ireland + Israel + Isle of Man + India + Wilayah Lautan Hindi British + Iraq + Iran + Iceland + Itali + Jersey + Jamaica + Jordan + Jepun + Kenya + Kyrgyzstan + Kemboja + Kiribati + Comoros + Saint Kitts dan Nevis + Korea Utara + Korea Selatan + Kuwait + Kepulauan Cayman + Kazakhstan + Laos + Lubnan + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lithuania + Luxembourg + Latvia + Libya + Maghribi + Monaco + Moldova + Montenegro + Saint Martin + Madagaskar + Kepulauan Marshall + Macedonia + Macedonia (FYROM) + Mali + Myanmar (Burma) + Mongolia + Macau SAR China + Macau + Kepulauan Mariana Utara + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambik + Namibia + New Caledonia + Niger + Norfolk Island + Nigeria + Nicaragua + Belanda + Norway + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + Polinesia Perancis + Papua New Guinea + Filipina + Pakistan + Poland + Saint Pierre dan Miquelon + Kepulauan Pitcairn + Puerto Rico + Wilayah Palestin + Palestin + Portugal + Palau + Paraguay + Qatar + Oceania Terpencil + Reunion + Romania + Serbia + Rusia + Rwanda + Arab Saudi + Kepulauan Solomon + Seychelles + Sudan + Sweden + Singapura + Saint Helena + Slovenia + Svalbard dan Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sudan Selatan + Sao Tome dan Principe + El Salvador + Sint Maarten + Syria + Swaziland + Tristan da Cunha + Kepulauan Turks dan Caicos + Chad + Wilayah Selatan Perancis + Togo + Thailand + Tajikistan + Tokelau + Timor Timur + Turkmenistan + Tunisia + Tonga + Turki + Trinidad dan Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + Kepulauan Terpencil A.S. + Amerika Syarikat + A.S + Uruguay + Uzbekistan + Kota Vatican + Saint Vincent dan Grenadines + Venezuela + Kepulauan Virgin British + Kepulauan Virgin A.S. + Vietnam + Vanuatu + Wallis dan Futuna + Samoa + Kosovo + Yaman + Mayotte + Afrika Selatan + Zambia + Zimbabwe + Wilayah Tidak Diketahui + + + Kalendar + Abaikan Pengisihan Simbol + Pengisihan Aksen Terbalik + Penyusunan Huruf Besar/Huruf Kecil + Pengisihan Sensitif Atur + Pengisihan Kana + Urutan Isihan + Pengisihan Ternormal + Pengisihan Berangka + Kekuatan Pengisihan + Mata wang + Nombor + Zon Waktu + Varian Tempat + Isih Sebagai Simbol + Penggunaan Peribadi + + + Digit Indi-Arab + Digit Indi Arab Lanjutan + Angka Armenia + Angka Kecil Armenia + Digit Bengali + Aturan Isih Cina Tradisional - Big5 + Kalendar Buddha + Kalendar Cina + Kalendar Qibti + Digit Devanagari + Aturan Isih Kamus + Aturan Isih Unikod Lalai + Angka Ethiopia + Kalendar Ethiopia + Kalendar Amete Alem Ethiopia + Angka Kewangan + Digit Lebar Penuh + Aturan Isih Bahasa Cina Ringkas - GB2312 + Angka Georgia + Kalendar Gregory + Angka Greek + Angka Huruf Kecil Greek + Digit Gujarat + Digit Gurmukhi + Angka Perpuluhan Cina + Angka Cina Ringkas + Angka Kewangan Cina Ringkas + Angka Cina Tradisional + Angka Kewangan Cina Tradisional + Angka Ibrani + Kalendar Ibrani + Isih Semua + Kalendar Kebangsaan India + Kalendar Islam + Kalendar Sivil Islam + Kalendar Jepun + Angka Jepun + Angka Kewangan Jepun + Digit Khmer + Digit Kannada + Digit Lao + Digit Barat + Isih Huruf Kecil Dahulu + Digit Malayalam + Digit Mongolia + Digit Myammar + Digit Asal + Isih Aksen Secara Biasa + Isih Urutan Atur Biasa + Isih Tidak Sensitif Atur + Isih Kana Berasingan + Isih Tanpa Penormalan + Isih Digit Secara Berasingan + Isih Simbol + Digit Oriya + Kalendar Parsi + Aturan Isih Buku Telefon + Urutan Isih Fonetik + Aturan Isih Pinyin + Isih Huruf Asas Sahaja + Isih Aksen/Atur/Lebar/Kana + Aturan Isih Pembaharuan + Kalendar Minguo + Angka Roman + Angka Huruf Kecil Roman + Carian Tujuan Umum + Cari Mengikut Konsonan Awal Hangul + Isih Aksen + Isih Mengabaikan Simbol + Urutan Isihan Standard + Aturan Isih Coretan + Angka Tamil + Digit Tamil + Digit Telugu + Isih Aksen/Atur/Lebar + Digit Thai + Digit Tibet + Aturan Isih Tradisional + Angka Tradisional + Aturan Isih Coretan Radikal + Isih Huruf Besar Dahulu + Digit Vai + Isih Aksen Terbalik + Isih Sensitif Atur + Isih Kana Secara Berbeza + Isih Unikod Ternormal + Isih Digit Mengikut Nombor + + + BGN + Bernombor + Nada + UNGEGN + Aksen + Kelebaran penuh + Kelebaran separa + Jamo + Pinyin + Penerbitan + + + Metrik + UK + AS + + + Bahasa: {0} + Skrip: {0} + Kawasan: {0} + + + + [a {ai} {au} b c d {dz} e f g h i j k {kh} l m n {ng} {ngg} {ny} o p q r s {sy} t {ts} u {ua} v w x y z] + [] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ogo + Sep + Okt + Nov + Dis + + + Jn + Fb + Mc + Ap + Me + Ju + Jl + Og + Sp + Ok + Nv + Ds + + + Januari + Februari + Mac + April + Mei + Jun + Julai + Ogos + September + Oktober + November + Disember + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ogo + Sep + Okt + Nov + Dis + + + Jn + Fe + Mc + Ap + Me + Ju + Jl + Og + Sp + Ok + Nv + Ds + + + Januari + Februari + Mac + April + Mei + Jun + Julai + Ogos + September + Oktober + November + Disember + + + + + + + EEEE, U MMMM dd + + + + + U MMMM d + + + + + U MMM d + + + + + y-M-d + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + dd/MM/y G + + + + + d/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + H:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y G + y G + M/y G + d/M/y G + E, d/M/y G + MMM y G + d MMM y G + E, d MMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y G + + + M/y – M/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d–d MMM y G + d MMM – d MMM, y G + d MMM y – d MMM y G + + + E, d MMM – E, d MMM, y G + E, d MMM – E, d MMM, y G + E, d MMM y – E, d MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ogo + Sep + Okt + Nov + Dis + + + J + F + M + A + M + J + J + O + S + O + N + D + + + Januari + Februari + Mac + April + Mei + Jun + Julai + Ogos + September + Oktober + November + Disember + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ogo + Sep + Okt + Nov + Dis + + + J + F + M + A + M + J + J + O + S + O + N + D + + + Januari + Februari + Mac + April + Mei + Jun + Julai + Ogos + September + Oktober + November + Disember + + + + + + + Ahd + Isn + Sel + Rab + Kha + Jum + Sab + + + A + I + S + R + K + J + S + + + Ah + Is + Se + Ra + Kh + Ju + Sa + + + Ahad + Isnin + Selasa + Rabu + Khamis + Jumaat + Sabtu + + + + + Ahd + Isn + Sel + Rab + Kha + Jum + Sab + + + A + I + S + R + K + J + S + + + Ah + Is + Se + Ra + Kh + Ju + Sa + + + Ahad + Isnin + Selasa + Rabu + Khamis + Jumaat + Sabtu + + + + + + + S1 + S2 + S3 + S4 + + + 1 + 2 + 3 + 4 + + + Suku pertama + Suku Ke-2 + Suku Ke-3 + Suku Ke-4 + + + + + S1 + S2 + S3 + S4 + + + 1 + 2 + 3 + 4 + + + Suku pertama + Suku Ke-2 + Suku Ke-3 + Suku Ke-4 + + + + + + + pg + ptg + + + PG + PTG + + + + + + S.M. + TM + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + H:mm + h:mm:ss a + HH:mm:ss + L + d-M + E, d-M + dd/MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y + M-y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM, y + d MMM y – d MMM y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM y – E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + AH + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + dd/MM/y G + + + + + d/MM/y GGGGG + + + + + + + + Before R.O.C. + R.O.C. + + + + + + + Era + + + Tahun + tahun lepas + tahun ini + tahun depan + + Dalam {0} tahun + + + {0} tahun lalu + + + + Bulan + bulan lalu + bulan ini + bulan depan + + Dalam {0} bulan + + + {0} bulan lalu + + + + Minggu + minggu lepas + minggu ini + minggu depan + + Dalam {0} minggu + + + {0} minggu lalu + + + + Hari + Hari sebelum semalam + Semalam + Hari ini + Esok + Hari selepas esok + + Dalam {0} hari + + + {0} hari lalu + + + + Hari dalam Minggu + + + Ahad lalu + Ahad ini + Ahad depan + + + Isnin lalu + Isnin ini + Isnin depan + + + Selasa lalu + Selasa ini + Selasa depan + + + Rabu lalu + Rabu ini + Rabu depan + + + Khamis lalu + Khamis ini + Khamis depan + + + Jumaat lalu + Jumaat ini + Jumaat depan + + + Sabtu lalu + Sabtu ini + Sabtu depan + + + PG/PTG + + + Jam + + Dalam {0} jam + + + {0} jam lalu + + + + Minit + + Dalam {0} minit + + + {0} minit lalu + + + + Kedua + sekarang + + Dalam {0} saat + + + {0} saat lalu + + + + Zon Waktu + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Waktu {0} + Waktu Siang {0} + Waktu Piawai {0} + {1} ({0}) + + Bandar Tidak Diketahui + + + Dumont d’Urville + + + Saint Barthelemy + + + Atikokan + + + St John + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + Waktu Musim Panas British + + + + Nuuk + + + Ittoqqortoormiit + + + + Waktu Musim Panas Ireland + + + + Baitulmuqaddis + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Yangon + + + Bandar Raya Mexico + + + Kathmandu + + + Singapura + + + St. Helena + + + Lower Prince's Quarter + + + Damsyik + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + + Waktu Afghanistan + + + + + Waktu Afrika Tengah + + + + + Waktu Afrika Timur + + + + + Waktu Piawai Afrika Selatan + + + + + Waktu Afrika Barat + Waktu Piawai Afrika Barat + Waktu Musim Panas Afrika Barat + + + + + Waktu Alaska + Waktu Piawai Alaska + Waktu Siang Alaska + + + + + Waktu Amazon + Waktu Piawai Amazon + Waktu Musim Panas Amazon + + + + + Waktu Pusat + Waktu Piawai Pusat + Waktu Siang Tengah + + + + + Waktu Timur + Waktu Piawai Timur + Waktu Siang Timur + + + + + Waktu Gunung + Waktu Piawai Pergunungan + Waktu Hari Siang Pergunungan + + + + + Waktu Pasifik + Waktu Piawai Pasifik + Waktu Siang Pasifik + + + + + Waktu Anadyr + Waktu Piawai Anadyr + Waktu Musim Panas Anadyr + + + + + Waktu Arab + Waktu Piawai Arab + Waktu Siang Arab + + + + + Waktu Argentina + Waktu Piawai Argentina + Waktu Musim Panas Argentina + + + + + Waktu Argentina Barat + Waktu Piawai Argentina Barat + Waktu Musim Panas Argentina Barat + + + + + Waktu Armenia + Waktu Piawai Armenia + Waktu Musim Panas Armenia + + + + + Waktu Atlantik + Waktu Piawai Atlantik + Waktu Siang Atlantik + + + + + Waktu Australia Tengah + Waktu Piawai Australia Tengah + Waktu Siang Australia Tengah + + + + + Waktu Barat Tengah Australia + Waktu Piawai Barat Tengah Australia + Waktu Siang Barat Tengah Australia + + + + + Waktu Australia Timur + Waktu Piawai Timur Australia + Waktu Siang Australia Timur + + + + + Waktu Australia Barat + Waktu Piawai Australia Barat + Waktu Siang Australia Barat + + + + + Waktu Azerbaijan + Waktu Piawai Azerbaijan + Waktu Musim Panas Azerbaijan + + + + + Waktu Azores + Waktu Piawai Azores + Waktu Musim Panas Azores + + + + + Waktu Bangladesh + Waktu Piawai Bangladesh + Waktu Musim Panas Bangladesh + + + + + Waktu Bhutan + + + + + Waktu Bolivia + + + + + Waktu Brasilia + Waktu Piawai Brasilia + Waktu Musim Panas Brasilia + + + + + Waktu Brunei Darussalam + + + + + Waktu Tanjung Verde + Waktu Piawai Tanjung Verde + Waktu Musim Panas Tanjung Verde + + + + + Waktu Piawai Chamorro + + + + + Waktu Chatham + Waktu Piawai Chatham + Waktu Siang Chatham + + + + + Waktu Chile + Waktu Piawai Chile + Waktu Musim Panas Chile + + + + + Waktu China + Waktu Piawai China + Waktu Siang China + + + + + Waktu Choibalsan + Waktu Piawai Choibalsan + Waktu Musim Panas Choibalsan + + + + + Waktu Pulau Christmas + + + + + Waktu Kepulauan Cocos + + + + + Waktu Colombia + Waktu Piawai Colombia + Waktu Musim Panas Colombia + + + + + Waktu Kepulauan Cook + Waktu Piawai Kepulauan Cook + Waktu Musim Panas Separuh Kepulauan Cook + + + + + Waktu Cuba + Waktu Piawai Cuba + Waktu Siang Cuba + + + + + Waktu Davis + + + + + Waktu Dumont-d'Urville + + + + + Waktu Timor Timur + + + + + Waktu Pulau Easter + Waktu Piawai Pulau Easter + Waktu Musim Panas Pulau Easter + + + + + Waktu Ecuador + + + + + Waktu Eropah Tengah + Waktu Piawai Eropah Tengah + Waktu Musim Panas Eropah Tengah + + + + + Waktu Eropah Timur + Waktu Piawai Eropah Timur + Waktu Musim Panas Eropah Timur + + + + + Waktu Eropah Barat + Waktu Piawai Eropah Barat + Waktu Musim Panas Eropah Barat + + + + + Waktu Kepulauan Falkland + Waktu Piawai Kepulauan Falkland + Waktu Musim Panas Kepulauan Falkland + + + + + Waktu Fiji + Waktu Piawai Fiji + Waktu Musim Panas Fiji + + + + + Waktu Guyana Perancis + + + + + Waktu Perancis Selatan dan Antartika + + + + + Waktu Galapagos + + + + + Waktu Gambier + + + + + Waktu Georgia + Waktu Piawai Georgia + Waktu Musim Panas Georgia + + + + + Waktu Kepulauan Gilbert + + + + + Waktu Min Greenwich + + + + + Waktu Greenland Timur + Waktu Piawai Greenland Timur + Waktu Musim Panas Greenland Timur + + + + + Waktu Greenland Barat + Waktu Piawai Greenland Barat + Waktu Musim Panas Greenland Barat + + + + + Waktu Teluk + + + + + Waktu Guyana + + + + + Waktu Hawaii-Aleut + Waktu Piawai Hawaii-Aleut + Waktu Siang Hawaii-Aleut + + + + + Waktu Hong Kong + Waktu Piawai Hong Kong + Waktu Musim Panas Hong Kong + + + + + Waktu Hovd + Waktu Piawai Hovd + Waktu Musim Panas Hovd + + + + + Waktu Piawai India + + + + + Waktu Lautan Hindi + + + + + Waktu Indochina + + + + + Waktu Indonesia Tengah + + + + + Waktu Indonesia Timur + + + + + Waktu Indonesia Barat + + + + + Waktu Iran + Waktu Piawai Iran + Waktu Siang Iran + + + + + Waktu Irkutsk + Waktu Piawai Irkutsk + Waktu Musim Panas Irkutsk + + + + + Waktu Israel + Waktu Piawai Israel + Waktu Siang Israel + + + + + Waktu Jepun + Waktu Piawai Jepun + Waktu Siang Jepun + + + + + Waktu Petropavlovsk-Kamchatski + Waktu Piawai Petropavlovsk-Kamchatski + Waktu Musim Panas Petropavlovsk-Kamchatski + + + + + Waktu Kazakhstan Timur + + + + + Waktu Kazakhstan Barat + + + + + Waktu Korea + Waktu Piawai Korea + Waktu Siang Korea + + + + + Waktu Kosrae + + + + + Waktu Krasnoyarsk + Waktu Piawai Krasnoyarsk + Waktu Musim Panas Krasnoyarsk + + + + + Waktu Kyrgystan + + + + + Waktu Kepulauan Line + + + + + Waktu Lord Howe + Waktu Piawai Lord Howe + Waktu Siang Lord Howe + + + + + Waktu Pulau Macquarie + + + + + Waktu Magadan + Waktu Piawai Magadan + Waktu Musim Panas Magadan + + + + + Waktu Malaysia + + + MYT + + + + + Waktu Maldives + + + + + Waktu Marquesas + + + + + Waktu Kepulauan Marshall + + + + + Waktu Mauritius + Waktu Piawai Mauritius + Waktu Musim Panas Mauritius + + + + + Waktu Mawson + + + + + Waktu Ulan Bator + Waktu Piawai Ulan Bator + Waktu Musim Panas Ulan Bator + + + + + Waktu Moscow + Waktu Piawai Moscow + Waktu Musim Panas Moscow + + + + + Waktu Myanmar + + + + + Waktu Nauru + + + + + Waktu Nepal + + + + + Waktu New Caledonia + Waktu Piawai New Caledonia + Waktu Musim Panas New Caledonia + + + + + Waktu New Zealand + Waktu Piawai New Zealand + Waktu Siang New Zealand + + + + + Waktu Newfoundland + Waktu Piawai Newfoundland + Waktu Siang Newfoundland + + + + + Waktu Niue + + + + + Waktu Kepulauan Norfolk + + + + + Waktu Fernando de Noronha + Waktu Piawai Fernando de Noronha + Waktu Musim Panas Fernando de Noronha + + + + + Waktu Novosibirsk + Waktu Piawai Novosibirsk + Waktu Musim Panas Novosibirsk + + + + + Waktu Omsk + Waktu Piawai Omsk + Waktu Musim Panas Omsk + + + + + Waktu Pakistan + Waktu Piawai Pakistan + Waktu Musim Panas Pakistan + + + + + Waktu Palau + + + + + Waktu Papua New Guinea + + + + + Waktu Paraguay + Waktu Piawai Paraguay + Waktu Musim Panas Paraguay + + + + + Waktu Peru + Waktu Piawai Peru + Waktu Musim Panas Peru + + + + + Waktu Filipina + Waktu Piawai Filipina + Waktu Musim Panas Filipina + + + + + Waktu Kepulauan Phoenix + + + + + Waktu Saint Pierre dan Miquelon + Waktu Piawai Saint Pierre dan Miquelon + Waktu Siang Saint Pierre dan Miquelon + + + + + Waktu Pitcairn + + + + + Waktu Ponape + + + + + Waktu Reunion + + + + + Waktu Rothera + + + + + Waktu Sakhalin + Waktu Piawai Sakhalin + Waktu Musim Panas Sakhalin + + + + + Waktu Samara + Waktu Piawai Samara + Waktu Musim Panas Samara + + + + + Waktu Samoa + Waktu Piawai Samoa + Waktu Musim Panas Samoa + + + + + Waktu Seychelles + + + + + Waktu Piawai Singapura + + + SGT + + + + + Waktu Kepulauan Solomon + + + + + Waktu Georgia Selatan + + + + + Waktu Suriname + + + + + Waktu Syowa + + + + + Waktu Tahiti + + + + + Waktu Taipei + Waktu Piawai Taipei + Waktu Siang Taipei + + + + + Waktu Tajikistan + + + + + Waktu Tokelau + + + + + Waktu Tonga + Waktu Piawai Tonga + Waktu Musim Panas Tonga + + + + + Waktu Chuuk + + + + + Waktu Turkmenistan + Waktu Piawai Turkmenistan + Waktu Musim Panas Turkmenistan + + + + + Waktu Tuvalu + + + + + Waktu Uruguay + Waktu Piawai Uruguay + Waktu Musim Panas Uruguay + + + + + Waktu Uzbekistan + Waktu Piawai Uzbekistan + Waktu Musim Panas Uzbekistan + + + + + Waktu Vanuatu + Waktu Piawai Vanuatu + Waktu Musim Panas Vanuatu + + + + + Waktu Venezuela + + + + + Waktu Vladivostok + Waktu Piawai Vladivostok + Waktu Musim Panas Vladivostok + + + + + Waktu Volgograd + Waktu Piawai Volgograd + Waktu Musim Panas Volgograd + + + + + Waktu Vostok + + + + + Waktu Pulau Wake + + + + + Waktu Wallis dan Futuna + + + + + Waktu Yakutsk + Waktu Piawai Yakutsk + Waktu Musim Panas Yakutsk + + + + + Waktu Yekaterinburg + Waktu Piawai Yekaterinburg + Waktu Musim Panas Yekaterinburg + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 ribu + 00 ribu + 000 ribu + 0 juta + 00 juta + 000 juta + 0 bilion + 00 bilion + 000 bilion + 0 trilion + 00 trilion + 000 trilion + + + + + 0K + 00K + 000K + 0J + 00J + 000J + 0B + 00B + 000B + 0T + 00T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + Dirham Emiriah Arab Bersatu + + + Afghani Afghanistan + Afghani Afghanistan + + + Lek Albania + + + Dram Armenia + + + Guilder Antillean Netherland + Guilder Antillean Netherland + + + Kwanza Angola + Kwanza Angola + + + Peso Argentina + Peso Argentina + + + Dolar Australia + Dolar Australia + A$ + + + Florin Aruba + Florin Aruba + + + Manat Azerbaijan + + + Mark Boleh Tukar Bosnia-Herzegovina + + + Dolar Barbados + Dolar Barbados + + + Taka Bangladesh + Taka Bangladesh + + + Lev Bulgaria + + + Dinar Bahrain + + + Franc Burundia + Franc Burundia + + + Dolar Bermuda + Dolar Bermuda + + + Dolar Brunei + Dolar Brunei + + + Boliviano Bolivia + Boliviano Bolivia + + + Real Brazil + Real Brazil + R$ + + + Dolar Bahamas + Dolar Bahamas + + + Ngultrum Bhutan + Ngultrum Bhutan + + + Pula Botswana + + + Ruble Belarus + + + Dolar Belize + Dolar Belize + + + Dolar Kanada + Dolar Kanada + CA$ + + + Franc Congo + Franc Congo + + + Franc Switzerland + + + Peso Chile + Peso Chile + + + Yuan Cina + Yuan Cina + CN¥ + + + Peso Colombia + Peso Colombia + + + Colon Costa Rica + Colon Costa Rica + + + Peso Boleh Tukar Cuba + Peso Boleh Tukar Cuba + + + Peso Cuba + Peso Cuba + + + Escudo Tanjung Verde + Escudo Tanjung Verde + + + Koruna Republik Czech + + + Franc Djibouti + Franc Djibouti + + + Krone Denmark + + + Peso Dominican + Peso Dominican + + + Dinar Algeria + Dinar Algeria + + + Paun Mesir + Paun Mesir + + + Nakfa Eritrea + + + Birr Ethiopia + Birr Ethiopia + + + Euro + + + + Dolar Fiji + Dolar Fiji + + + Paun Kepulauan Falkland + Paun Kepulauan Falkland + + + Paun Sterling British + £ + + + Lari Georgia + + + Cedi Ghana + Cedi Ghana + + + Paun Gibraltar + + + Dalasi Gambia + Dalasi Gambia + + + Franc Guinea + Franc Guinea + + + Quetzal Guatemala + Quetzal Guatemala + + + Dolar Guyana + Dolar Guyana + + + Dolar Hong Kong + Dolar Hong Kong + HK$ + + + Lempira Honduras + Lempira Honduras + + + Kuna Croatia + + + Gourde Haiti + Gourde Haiti + + + Forint Hungary + + + Rupiah Indonesia + Rupiah Indonesia + + + Sheqel Baru Israel + + + + Rupee India + Rupee India + + + + Dinar Iraq + Dinar Iraq + + + Rial Iran + Rial Iran + + + Krona Iceland + Krona Iceland + + + Dolar Jamaica + Dolar Jamaica + + + Dinar Jordan + Dinar Jordan + + + Yen Jepun + Yen Jepun + JP¥ + + + Syiling Kenya + Syiling Kenya + + + Som Kyrgystani + Som Kyrgystani + + + Riel Kemboja + Riel Kemboja + + + Franc Comoria + Franc Comoria + + + Won Korea Utara + Won Korea Utara + + + Won Korea Selatan + Won Korea Selatan + + + + Dinar Kuwait + Dinar Kuwait + + + Dolar Kepulauan Cayman + Dolar Kepulauan Cayman + + + Tenge Kazakhstan + Tenge Kazakhstan + + + Kip Laos + Kip Laos + + + Paun Lubnan + Paun Lubnan + + + Rupee Sri Lanka + Rupee Sri Lanka + + + Dolar Liberia + Dolar Liberia + + + Loti Lesotho + + + Litas Lithuania + + + Lats Latvia + + + Dinar Libya + Dinar Libya + + + Dirham Maghribi + Dirham Maghribi + + + Leu Moldova + + + Ariary Malagasy + + + Denar Macedonia + + + Kyat Myanma + Kyat Myanma + + + Tugrik Mongolia + Tugrik Mongolia + + + Pataca Macau + Pataca Macau + + + Ouguiya Mauritania + Ouguiya Mauritania + + + Rupee Mauritia + + + Rufiyaa Maldives + Rufiyaa Maldives + + + Kwacha Malawi + + + Peso Mexico + Peso Mexico + MX$ + + + Ringgit Malaysia + Ringgit Malaysia + RM + + + Metikal Mozambique + + + Dolar Namibia + + + Naira Nigeria + Naira Nigeria + + + Cordoba Nicaragua + Cordoba Nicaragua + + + Krone Norway + + + Rupee Nepal + Rupee Nepal + + + Dolar New Zealand + Dolar New Zealand + NZ$ + + + Rial Oman + Rial Oman + + + Balboa Panama + Balboa Panama + + + Nuevo Sol Peru + Nuevo Sol Peru + + + Kina Papua New Guinea + Kina Papua New Guinea + + + Peso Filipina + Peso Filipina + + + Rupee Pakistan + Rupee Pakistan + + + Zloty Poland + + + Guarani Paraguay + Guarani Paraguay + + + Rial Qatar + Rial Qatar + + + Leu Romania + + + Dinar Serbia + + + Ruble Rusia + + + Franc Rwanda + + + Riyal Saudi + Riyal Saudi + + + Dolar Kepulauan Solomon + Dolar Kepulauan Solomon + + + Rupee Seychelles + + + Paun Sudan + Paun Sudan + + + Krona Sweden + + + Dolar Singapura + Dolar Singapura + + + Paun Saint Helena + Paun Saint Helena + + + Leone Sierra Leone + Leone Sierra Leone + + + Syiling Somali + + + Dolar Surinam + Dolar Surinam + + + Paun Sudan selatan + Paun Sudan selatan + + + Dobra Sao Tome dan Principe + Dobra Sao Tome dan Principe + + + Paun Syria + Paun Syria + + + Lilangeni Swazi + + + Baht Thai + Baht Thai + ฿ + + + Somoni Tajikistan + Somoni Tajikistan + + + Manat Turkmenistan + Manat Turkmenistan + + + Dinar Tunisia + Dinar Tunisia + + + Tongan Paʻanga + Tongan Paʻanga + + + Lira Turki + Lira Turki + + + Dolar Trinidad dan Tobago + Dolar Trinidad dan Tobago + + + Dolar Taiwan Baru + Dolar Taiwan Baru + NT$ + + + Syiling Tanzania + + + Hryvnia Ukraine + + + Syiling Uganda + + + Dolar AS + Dolar AS + US$ + + + Peso Uruguay + + + Som Uzbekistan + Som Uzbekistan + + + Bolivar Venezuela + Bolivar Venezuela + + + Dong Vietnam + Dong Vietnam + + + + Vatu Vanuatu + Vatu Vanuatu + + + Tala Samoa + Tala Samoa + + + Franc CFA BEAC + FCFA + + + Dolar Caribbean Timur + Dolar Caribbean Timur + EC$ + + + Franc CFA BCEAO + Franc CFA BCEAO + CFA + + + Franc CFP + Franc CFP + CFPF + + + Mata Wang Tidak Diketahui + + + Rial Yaman + Rial Yaman + + + Rand Afrika Selatan + + + Kwacha Zambia (1968–2012) + + + Kwacha Zambia + + + + {0}+ + {0}–{1} + + + + + + {0} per {1} + + + {0} daya g + + + {0} minit + + + {0} saat + + + {0} darjah + + + {0} ekar + + + {0} hektar + + + {0} kaki persegi + + + {0} kilometer persegi + + + {0} meter persegi + + + {0} batu persegi + + + {0} hari + + + {0} jam + + + {0} milisaat + + + {0} minit + + + {0} bulan + + + {0} saat + + + {0} minggu + + + {0} tahun + + + {0} sentimeter + + + {0} kaki + + + {0} inci + + + {0} kilometer + + + {0} tahun cahaya + + + {0} meter + + + {0} batu + + + {0} milimeter + + + {0} pikometer + + + {0} ela + + + {0} gram + + + {0} kilogram + + + {0} auns + + + {0} paun + + + {0} kuasa kuda + + + {0} kilowatt + + + {0} watt + + + {0} hektopascal + + + {0} inci raksa + + + {0} milibar + + + {0} kilometer sejam + + + {0} meter sesaat + + + {0} batu sejam + + + {0}darjah Celsius + + + {0}darjah Fahrenheit + + + {0} kilometer padu + + + {0} batu padu + + + {0} liter + + + + + {0}/{1} + + + {0} G + + + {0} min + + + {0} saat + + + {0} darjah + + + {0} ekar + + + {0} ha + + + {0} ka² + + + {0} km² + + + {0} m² + + + {0} bt² + + + {0} hari + + + {0} j + + + {0} ms + + + {0} min + + + {0} bln + + + {0} saat + + + {0} mgu + + + {0} thn + + + {0} sm + + + {0} ka + + + {0} in + + + {0} km + + + {0} thn cahaya + + + {0} m + + + {0} bt + + + {0} mm + + + {0} pm + + + {0} ela + + + {0} g + + + {0} kg + + + {0} auns + + + {0} paun + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mb + + + {0} kmj + + + {0} m/s + + + {0} bsj + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} bt³ + + + {0} l + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ekar + + + {0} ha + + + {0} ka² + + + {0} km² + + + {0} m² + + + {0} bt² + + + {0} h + + + {0} j + + + {0} ms + + + {0} min + + + {0} bln + + + {0} s + + + {0} mgu + + + {0} thn + + + {0} sm + + + {0}' + + + {0}" + + + {0} km + + + {0} t. chya + + + {0} m + + + {0} bt + + + {0} mm + + + {0} pm + + + {0} ela + + + {0} g + + + {0} kg + + + {0} auns + + + {0} paun + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mb + + + {0} kmj + + + {0} m/s + + + {0} bsj + + + {0}° + + + {0}°F + + + {0} km³ + + + {0} bt³ + + + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, dan {1} + {0} dan {1} + + + {0}, {1} + {0}, {1} + {0} dan {1} + {0} dan {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ya:y + tidak:t + + + + diff --git a/library/Zend/Locale/Data/ms_Latn.xml b/library/Zend/Locale/Data/ms_Latn.xml new file mode 100755 index 000000000..31df57664 --- /dev/null +++ b/library/Zend/Locale/Data/ms_Latn.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + Dinja + Affrika + Amerika ta’ Fuq + Amerika t’Isfel + Oċejanja + Affrika tal-Punent + Amerika Ċentrali + Affrika tal-Lvant + Affrika ta’ Fuq + Affrika Nofsani + Affrika t’Isfel + Amerika + Amerika Nòrdiku + Karibew + Asja tal-Lvant + Asja t’Isfel Ċentrali + Asja tax-Xlokk + Ewropa t’Isfel + Awstralja u New Zealand + Melanesja + Reġjun ta’ Mikroneżja + Polinesja + Asja + Asja Ċentrali + Asja tal-Punent + Ewropa + Ewropa tal-Lvant + Ewropa ta’ Fuq + Ewropa tal-Punent + Amerika Latina + Andorra + Emirati Għarab Maqgħuda + Afganistan + Antigua and Barbuda + Angwilla + Albanija + Armenja + Antilles Olandiżi + Angola + Antartika + Arġentina + Samoa Amerikana + Awstrija + Awstralja + Aruba + Gżejjer Aland + Ażerbajġan + Bożnija Ħerżegovina + Barbados + Bangladexx + Belġju + Burkina Faso + Bulgarija + Baħrajn + Burundi + Benin + Bermuda + Brunej + Bolivja + Brażil + Baħamas + Butan + Bouvet Island + Botswana + Bjelorussja + Beliże + Kanada + Cocos (Keeling) Islands + Democratic Republic of the Congo + Repubblika Afrikana Ċentrali + Kongo + Svizzera + Kosta ta’ l-Avorju + Cook Islands + Ċili + Kamerun + Ċina + Kolumbja + Kosta Rika + Kuba + Kape Verde + Christmas Island + Ċipru + Repubblika Ċeka + Ġermanja + Ġibuti + Danimarka + Dominika + Republikka Domenikana + Alġerija + Ekwador + Estonja + Eġittu + Sahara tal-Punent + Eritreja + Spanja + Etijopja + Unjoni Ewropea + Finlandja + Fiġi + Falkland Islands + Mikronesja + Gżejjer Faroe + Franza + Gabon + Ingilterra + Grenada + Ġorġja + Gujana Franċiża + Gana + Gibraltar + Grinlandja + Gambja + Gineja + Gwadelupe + Ginea Ekwatorjali + Greċja + South Georgia and the South Sandwich Islands + Gwatemala + Gwam + Ginea-Bissaw + Gujana + Ħong Kong S.A.R. Ċina + Ħong Kong + Heard Island and McDonald Islands + Ħonduras + Kroazja + Ħaiti + Ungerija + Indoneżja + Irlanda + Iżrael + Isle of Man + Indja + British Indian Ocean Territory + Iraq + Iran + Islanda + Italja + Ġamajka + Ġordan + Ġappun + Kenja + Kirgistan + Kambodja + Kiribati + Komoros + Saint Kitts and Nevis + Koreja ta’ Fuq + Koreja t’Isfel + Kuwajt + Gżejjer Kajmani + Każakstan + Laos + Libanu + Santa Luċija + Liechtenstein + Sri Lanka + Liberja + Lesoto + Litwanja + Lussemburgu + Latvja + Libja + Marokk + Monako + Maldova + Madagaskar + Gżejjer ta’ Marshall + Maċedonja + Mali + Mjanmar + Mongolja + Macao S.A.R., China + Macao + Gżejjer Marjana ta’ Fuq + Martinik + Mawritanja + Montserrat + Malta + Mawrizju + Maldives + Malawi + Messiku + Malasja + Możambik + Namibja + New Caledonia + Niġer + Norfolk Island + Niġerja + Nikaragwa + Olanda + Norveġja + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + Polinesja Franċiża + Papwa-Ginea Ġdida + Filippini + Pakistan + Polonja + Saint Pierre and Miquelon + Pitcairn + Puerto Rico + Territorju Palestinjan + Portugall + Palau + Paragwaj + Qatar + Réunion + Rumanija + Russja + Rwanda + Għarabja Sawdita + Solomon Islands + Seychelles + Sudan + Żvezja + Singapor + Saint Helena + Slovenja + Svalbard and Jan Mayen + Slovakkja + Sierra Leone + San Marino + Senegal + Somalja + Surinam + Sao Tome and Principe + El Salvador + Sirja + Sważiland + Turks and Caicos Islands + Ċad + Territorji Franċiżi ta’ Nofsinhar + Togo + Tajlandja + Taġikistan + Tokelaw + Timor tal-Lvant + Turkmenistan + Tuneż + Tonga + Turkija + Trinidad u Tobago + Tuvalu + Tajwan + Tanżanija + Ukraina + Uganda + United States Minor Outlying Islands + Stati Uniti + Urugwaj + Użbekistan + Vatikan + Saint Vincent and the Grenadines + Venezwela + British Virgin Islands + U.S. Virgin Islands + Vjetnam + Vanwatu + Wallis and Futuna + Samoa + Kosovo + Jemen + Majotte + Afrika t’Isfel + Żambja + Żimbabwe + Reġjun Mhux Magħruf + + + Ortografija Irriveda + + + Kalendarju + Kollazjoni + Munita + Numri + + + Ordni Ċiniż Tradizzjonali (Big5) + Kalendarju Buddist + Kalendarju Ċiniż + Ordni tad-Dizzjunarju + Ordni Ċiniż Sempliċi (GB2312) + Kalendarju Gregorjan + Kalendarju Ebrajk + Kalendarju Islamiku + Kalendarju Islamiku-Ċivili + Kalendarju Ġappuniż + Numri Oċċidentali + Ordni Telefonika + Ordni tal-Pinjin + Ordni Maħżuża + Tradizzjonali + + + Metriku + UK + US + + + Lingwa: {0} + Skritt: {0} + Reġjun: {0} + + + + [a à b ċ d e è f ġ g {għ} h ħ i ì j k l m n o ò p q r s t u ù v w x ż z] + [c y] + [A B Ċ C D E F Ġ G {GĦ} H Ħ I {IE} J K L M N O P Q R S T U V W X Y Ż Z] + [\- , ; \: ! ? . ' ‘ ’ " “ ” ( ) \[ \] \{ \}] + + + + + + + + + + + + + + EEEE, d 'ta'’ MMMM y G + + + + + d 'ta'’ MMMM y G + + + + + dd MMM y G + + + + + dd/MM/y GGGGG + + + + + + d 'ta'’ MMMM + MMMM 'ta'’ y G + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + d 'ta'’-d 'ta'’ MMM + d 'ta'’ MMM - d 'ta'’ MMM + + + E, d 'ta'’ - E, d 'ta'’ MMM + E, d 'ta'’ MMM - E, d 'ta'’ MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + + + MMM-MMM y G + MMM y - MMM y G + + + d 'ta'’-d 'ta'’ MMM y G + d 'ta'’ MMM - d 'ta'’ MMM y G + d 'ta'’ MMM y - d 'ta'’ MMM y G + + + E, d 'ta'’ - E, d 'ta'’ MMM y G + E, d 'ta'’ MMM - E, d 'ta'’ MMM y G + E, d 'ta'’ MMM y - E, d 'ta'’ MMM y G + + + + + + + + + Jan + Fra + Mar + Apr + Mej + Ġun + Lul + Aww + Set + Ott + Nov + Diċ + + + Jannar + Frar + Marzu + April + Mejju + Ġunju + Lulju + Awwissu + Settembru + Ottubru + Novembru + Diċembru + + + + + J + F + M + A + M + Ġ + L + A + S + O + N + D + + + Jannar + Frar + Marzu + April + Mejju + Ġunju + Lulju + Awwissu + Settembru + Ottubru + Novembru + Diċembru + + + + + + + Ħad + Tne + Tli + Erb + Ħam + Ġim + Sib + + + Ħ + T + T + E + Ħ + Ġ + S + + + Il-Ħadd + It-Tnejn + It-Tlieta + L-Erbgħa + Il-Ħamis + Il-Ġimgħa + Is-Sibt + + + + + Ħ + T + T + E + Ħ + Ġ + S + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + K1 + K2 + K3 + K4 + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1el kwart + 2ni kwart + 3et kwart + 4ba' kwart + + + + + + + QN + WN + + + + + + Qabel Kristu + Wara Kristu + + + QK + QEK + WK + EK + + + + + + EEEE, d 'ta'’ MMMM y + + + + + d 'ta'’ MMMM y + + + + + dd MMM y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d 'ta'’ MMMM + MMMM 'ta'’ y + + + {0} - {1} + + d-d + + + h-h a + + + HH-HH + + + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + d 'ta'’-d 'ta'’ MMM + d 'ta'’ MMM - d 'ta'’ MMM + + + E, d 'ta'’ - E, d 'ta'’ MMM + E, d 'ta'’ MMM - E, d 'ta'’ MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + d 'ta'’-d 'ta'’ MMM y + d 'ta'’ MMM - d 'ta'’ MMM y + d 'ta'’ MMM y - d 'ta'’ MMM y + + + E, d 'ta'’ - E, d 'ta'’ MMM y + E, d 'ta'’ MMM - E, d 'ta'’ MMM y + E, d 'ta'’ MMM y - E, d 'ta'’ MMM y + + + + + + + + Epoka + + + Sena + Is-sena li għaddiet + Din is-sena + Is-sena d-dieħla + + {0} sena ilu + {0} snin ilu + {0} snin ilu + {0} snin ilu + + + + Xahar + Ix-xahar li għadda + Dan ix-xahar + Ix-xahar id-dieħel + + + Ġimgħa + Il-ġimgħa li għaddiet + Din il-ġimgħa + Il-ġimgħa d-dieħla + + + Jum + Ilbieraħ + Illum + Għada + + + Jum tal-Ġimgħa + + + Il-Ħadd li għadda + Dan il-Ħadd + Il-Ħadd li ġej + + + It-Tnejn li għadda + It-Tnejn li ġej + + + QN/WN + + + Siegħa + + + Minuta + + + Sekonda + + + Żona + + + + +HH:mm;-HH:mm + GMT{0} + Ħin ta’ {0} + + Belt Mhux Magħruf + + + Londra + + + Valletta + + + + Ħin Ċentrali Ewropew + Ħin Ċentrali Ewropew Standard + Ħin Ċentrali Ewropew tas-Sajf + + + CET + CET + CEST + + + + + EET + EET + EEST + + + + + WET + WET + WEST + + + + + GMT + + + + + + + . + , + + + + + ¤#,##0.00 + + + + + + Ewro + + + Lira Maltija + + + Munita Mhux Magħrufa jew Mhux Valida + Munita Mhux Magħruf jew Mhux Validu + Munita Mhux Magħruf jew Mhux Validu + Munita Mhux Magħruf jew Mhux Validu + Munita Mhux Magħruf jew Mhux Validu + + + + + + {0}, {1} + {0}, {1} + {0}, u {1} + {0} u {1} + + + + + iva:i + le:l + + + + diff --git a/library/Zend/Locale/Data/mt_MT.xml b/library/Zend/Locale/Data/mt_MT.xml new file mode 100755 index 000000000..345d5bb13 --- /dev/null +++ b/library/Zend/Locale/Data/mt_MT.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/mua.xml b/library/Zend/Locale/Data/mua.xml new file mode 100755 index 000000000..f3c082ce6 --- /dev/null +++ b/library/Zend/Locale/Data/mua.xml @@ -0,0 +1,783 @@ + + + + + + + + + + + + akaŋ + amharik + arabiya + belarussiya + bulgaria + bengalia + syekya + germaŋ + grek + zah Anglofoŋ + Espaniya + Persia + zah sǝr Franssǝ + haussa + hindi + hungariya + indonesiya + igbo + italiya + zah sǝr Japoŋ + javaniya + kmer + korea + malasiya + MUNDAŊ + birmania + Nepaliya + zah sǝr ma kasǝŋ + Pǝnjabi + Poloniya + Zah sǝr Portugal + Romaniya + Russiya + Zah sǝr Rwanda + Somaliya + Swedia + Tamul + th + Turk + Ukrainia + Urdu + Vietnamiya + Yoruba + zah Syiŋ + Zulu + + + andorra + Sǝr Arabiya ma taini + afghanistaŋ + antiguan ne Barbuda + anguiya + albaniya + armeniya + Sǝr ma kasǝŋ ma laŋne + angola + argentiniya + samoa Amerika + austriya + australiya + aruba + azerbaijaŋ + bosniya ne Herzegovina + barbadiya + bangladeshiya + belgika + burkina Faso + bulgariya + bahraiŋ + burundi + beniŋ + bermudiya + bruniya + boliviya + brazilya + bahamas + butaŋ + botswana + belarussiya + beliziya + kanada + Sǝr Kongo ma dii ne zair + centrafrika + kongo + Sǝr Swiss + ser Ivoiriya + kook ma laŋne + syili + kameruŋ + syiŋ + kolombiya + kosta Rika + Kuba + kap ma laŋne + Syipriya + Sǝr Syek + Germaniya + Djibouti + Daŋmark + Dominik + Sǝr Dominik ma lii + algeriya + Ekwatǝr + Estoniya + Sǝr Egypt + Sǝr Eritre + Espaŋiya + Etiopia + Sǝr Finland + Sǝr Fiji + Sǝr malouniya ma laŋne + Micronesiya + Franssǝ + Gaboŋ + Sǝr Anglofoŋ + Grenadǝ + Georgiya + Sǝr Guyana ma Franssǝ + Gana + Sǝr Gibraltar + Sǝr Groenland + Gambiya + Guine + Sǝr Gwadeloupǝ + Sǝr Guine + Sǝr Grek + Gwatemala + Gwam + Guine ma Bissao + Guyana + Sǝr Honduras + kroatiya + Sǝr Haiti + Hungriya + Indonesiya + Sǝr Ireland + Sǝr Israel + Sǝr Indǝ + anglofoŋ ma Indiya + Irak + Iraŋ + Sǝr Island + Italiya + Jamaika + Jordaniya + Japaŋ + Sǝr Kenya + Kirgizstaŋ + kambodiya + Sǝr Kiribati + komora + Sǝr Kristof ne Nievǝ + Sǝr Kore fah sǝŋ + Sǝr Kore nekǝsǝŋ + Sǝr Kowait + kayman ma laŋne + Kazakstaŋ + Sǝr Laos + Libaŋ + Sǝr Lucia + Lichtǝnsteiŋ + Sǝr Lanka + Liberiya + Sǝr Lesotho + Lituaniya + Sǝr Luxemburg + Letoniya + Libiya + Marok + Monako + Moldoviya + Madagaskar + Sǝr Marshall ma laŋne + Macedoniya + Sǝr Mali + Sǝr Myanmar + Mongoliya + Sǝr Maria ma laŋne + Martinika + Mauritaniya + Sǝr Montserrat + Sǝr Malta + Sǝr Mauricǝ + Maldivǝ + Sǝr Malawi + Mexiko + Malaysiya + Mozambika + Namibiya + Kaledoniya mafuu + Sǝr Niger + Norfolk ma laŋne + Nigeriya + Nikaragwa + Sǝr ma kasǝŋ + Norvegǝ + Sǝr Nepal + Sǝr Nauru + Niwe + Zeland mafuu + Omaŋ + Sǝr Panama + Peru + Sǝr Polynesiya ma Franssǝ + Papuasiya Guine mafuu + Filipiŋ + Pakistaŋ + Pologŋ + Sǝr Pǝtar ne Mikǝlon + Pitkairn + Porto Riko + Sǝr Palestiniya + Sǝr Portugal + Sǝr Palau + Paragwai + Katar + Sǝr Reunion + Romaniya + Russiya + Rwanda + Sǝr Arabiya + Sǝr Salomon ma laŋne + Saichel + Sudaŋ + Sǝr Sued + Singapur + Sǝr Helena + Sloveniya + Slovakiya + Sierra Leonǝ + Sǝr Marino + Senegal + Somaliya + Sǝr Surinam + Sao Tome ne Principe + Sǝr Salvador + Syria + Sǝr Swaziland + Turkiya ne kaicos ma laŋne + syad + Sǝr Togo + Tailand + Tajikistaŋ + Sǝr Tokelau + Timoriya + Turkmenistaŋ + Tunisiya + Sǝr Tonga + Turkiya + Trinite ne Tobago + Sǝr Tuvalu + Taiwaŋ + Tanzaniya + Ukraiŋ + Uganda + Amerika + Urugwai + Uzbekistaŋ + Vaticaŋ + Sǝr Vinceŋ ne Grenadiŋ + Sǝr Venezuela + ser Anglofon ma laŋne + Sǝr amerika ma laŋne + Sǝr Vietnam + Sǝr Vanuatu + Wallis ne Futuna + Sǝr Samoa + Yemeŋ + Mayot + Afrika nekǝsǝŋ + Zambiya + Zimbabwe + + + + [a ã b ɓ c d ɗ e ë ǝ f g h i ĩ j k l m n ŋ o õ p r s t u v ṽ w y z] + [q x] + [A B Ɓ C D Ɗ E Ǝ F G H I J K L M N Ŋ O P R S T U V W Y Z] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + FLO + CLA + CKI + FMF + MAD + MBI + MLI + MAM + FDE + FMU + FGW + FYU + + + Fĩi Loo + Cokcwaklaŋne + Cokcwaklii + Fĩi Marfoo + Madǝǝuutǝbijaŋ + Mamǝŋgwãafahbii + Mamǝŋgwãalii + Madǝmbii + Fĩi Dǝɓlii + Fĩi Mundaŋ + Fĩi Gwahlle + Fĩi Yuru + + + + + O + A + I + F + D + B + L + M + E + U + W + Y + + + + + + + Cya + Cla + Czi + Cko + Cka + Cga + Cze + + + Com'yakke + Comlaaɗii + Comzyiiɗii + Comkolle + Comkaldǝɓlii + Comgaisuu + Comzyeɓsuu + + + + + Y + L + Z + O + A + G + E + + + + + + + F1 + F2 + F3 + F4 + + + Tai fĩi sai ma tǝn kee zah + Tai fĩi sai zah lǝn gwa ma kee + Tai fĩi sai zah lǝn sai ma kee + Tai fĩi sai ma coo kee zah 'na + + + + + + + comme + lilli + + + + + + KǝPel Kristu + Pel Kristu + + + KK + PK + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Syii ma tãa + + + Syii + + + Fĩi + + + Luma + + + Zah'nane/ Comme + Tǝsoo + Tǝ'nahko + Tǝ'nane + + + Kǝsyil luma + + + Cok comme + + + Cok comme ma laŋne + + + Cok comme ma laŋ tǝ biŋ + + + Waŋ cok comme + + + + + + , + . + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Solai Arabiya + + + solai Angola + + + solai Australya + + + solai Barenya + + + solai Burundi + + + solai Botswana + + + solai Kanada + + + solai Kongo + + + Solai Swiss + + + solai Syiŋ + + + solai Kapverdiya + + + solai Djibouti + + + solai Algerya + + + solai Egypt + + + solai Eritre + + + solai Etiopia + + + solai Euro + + + solai Britaniya + + + solai Gana + + + solai Gambiya + + + solai Guine + + + solai India + + + solai Japoŋ + + + solai Kenia + + + solai Komorya + + + solai Liberiya + + + solai Lesotho + + + solai Libya + + + Solai Marok + + + Solai Malagasya + + + Solai Mauritaniya + + + Solai Mauricǝ + + + Solai Malawi + + + Solai Mozambika + + + Solai Namibiya + + + Solai Nigeriya + + + Solai Rwanda + + + Solai Saudiya + + + Solai Saichel + + + Solai Sudaŋ ma dii ne dinar + + + Solai Sudaŋ ma dii ne livre + + + Solai Helena + + + solai Sierra leonǝ + + + Solai Somaliya + + + Solai Sao Tome + + + solai Swaziland + + + Solai Tunisiya + + + Solai Tanzaniya + + + Solai Uganda + + + Solai Amerika + + + solai BEAC + + + solai BCEAO + + + Solai Africa nekǝsǝŋ + + + Solai Zambiya (1968–2012) + + + Solai Zambiya + + + Solai Zimbabwe + + + + + + Oho:O + A a:A + + + + diff --git a/library/Zend/Locale/Data/mua_CM.xml b/library/Zend/Locale/Data/mua_CM.xml new file mode 100755 index 000000000..0baa05e23 --- /dev/null +++ b/library/Zend/Locale/Data/mua_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/my.xml b/library/Zend/Locale/Data/my.xml new file mode 100755 index 000000000..726469f09 --- /dev/null +++ b/library/Zend/Locale/Data/my.xml @@ -0,0 +1,4737 @@ + + + + + + + + + + + + {0} ({1}) + {0}၊{1} + {0} ၊ {1} + + + အက်ခါဇူအနျ + အာဖရိကန်းစ် + အန်ဟာရစျချ + အင်္ဂလိပ်စာဟောင်း + အာရေဗီ + အရေဗီ(ပုံမှန်) + အက္စမီစ် + အော်ဇောဘိုင်ဂျောနီ + ဘာလီ + ဘာဆာ + ဘီလာရု + ဘူဂေးရီးယား + ဘင်္ဂါလီ + တိဘက် + ဘော့စ်နီးယား + ကာတာလန် + ချေချင်း + ချာရိုကီ + ခရီး + ချက် + ဝေလ + ဒိန်းမတ် + ဒါကိုတာ + ဂျာမန် + ဩစတြီးယ ဂျာမန် + ဆွစ် အမြင့် ဂျာမန် + ဒီလာဝဲ + အလယ်ပိုင်း ဒတ်ချ် + ဒွန်ကာ + ရှေးဟောင်း အီဂျစ် + ဂရိ + အင်္ဂလိပ် + ဩစတြေးလျှ အင်္ဂလိပ် + ကနေဒါ အင်္ဂလိပ် + ဗြိတိသျှ အင်္ဂလိပ် + အင်္ဂလိပ်(ယူကေ) + အမေရိကန် အင်္ဂလိပ် + အင်္ဂလိပ်(ယူအက်စ်) + အလယ်ပိုင်း အင်္ဂလိပ် + အက္စပရန္တို + စပိန် + လက်တင်အမေရိက စပိန် + စပိန်(ဥရောပ) + အက်စ်တိုးနီးရန်း + ဘစ်က္ကီ + ပါရှန် + ဖင်နစ်ရှ် + ဖိလစ်ပီနို + ဖီဂျီ + ဖာရိုအိစ် + ပြင်သစ် + ကနေဒါ ပြင်သစ် + ဆွစ် ပြင်သစ် + အလယ်ပိုင်းပြင်သစ် + ပြင်သစ်ဟောင်း + မြောက်ပိုင်း ဖရီစီရန် + အရှေ့ပိုင်း ဖရီစီရန် + အနောက်ပိုင်း ဖရီစီရန် + အိုင်းရစ် + ဂါလာစီယံ + အလယ်ပိုင်းအမြင့်ဂျာမန် + ဂူအာရာနီ + ရှေးဟောင်း ဂရိ + ဆွစ် ဂျာမန် + ဂူဂျာရသီ + ဟာဥစာ + ဟာဝေယံ + ဟီးဘရူး + ဟိန္ဒီ + ခရိုအေရှန် + ဟာအီတီအန် + ဟန်ဂေရီ + အာမေနီအန် + အင်ဒိုနီးရှား + အစ္ဂဘို + စီချွမ် ရီ + အိုင်စ်လန္ဒီ + အီတလီ + ဂျပန် + ဂျူဒီယို-ပါရှန် + ဂျူဒီယို-အာရေဗျ + ဂျာဗားနီးစ် + ဂျော်ဂျီယန် + ကချင် + ကွန်ဂို + ခါစီ + ခါဇါခ် + ခမာ + ကန္နာဒါ + ကိုးရီးယား + ကက်ရှ်မီရီ + ကဒ် + ခရူဂစ် + လက်တင် + လူဇင်ဘတ်က် + လာအို + လစ္သူအာနီယံ + လက္ဘီအံ + အာလာဂါစီ + အလယ်ပိုင်း အိုင်းရစ် + မောင်းရီ (နယူးဇီလန်ကျွန်းရှိ ပင်ရင်းတိုင်းရင်းသားလူမျိုး) + မာစီဒိုနီယံ + မလေးရာလမ် + မွန်ဂိုလီးယန်း + မန်ချူး + မနိပူရီ + မာရသီ + မလေး + မောလ္တီစ် + အကြိမ်များစွာ ဘာသာစကားများ + ဗမာ + ဘွတ်မော်လ် + အနိမ့် ဂျာမန် + နီပါလီ + ဒတ်ချ် + ဖလီမစ်ရှ် + နော်ဝေး နီးနော်စ်ခ် + နော်ဝေး + အိုရီရာ + ပန်ချာပီ + ပါရှန် အဟောင်း + ပါဠိ + ပိုလန် + ပါရှ်တို + ပေါ်တူဂီ + ဘရာဇီး ပေါ်တူဂီ + ခက်ချ်ဝါ + ရောမ + ရိုမေနီယား + မူလရင်းမြစ် + ရုရှ + သင်္သကရိုက် + စကော့ + စင်ဒီ + အိုင်းရစ် ဟောင်း + ရှမ်း + ဆင်ဟာလ + စလိုဗက် + စလိုဗေးနီးယမ်း + တောင်ပိုင်း ဆာမိ + ဆိုမာလီ + အယ်လ်ဘေးနီးယန်း + ဆားဗီးယန်း + ဆူဒန် + ဆွီဒင် + ဆြာဟီလီ + တမီးလ် + တီလီဂု + တာဂွီခ် + ထိုင်း + တီဂ်ရင်ရာ + တခ္မင် + တွန်ဂါ + တာကစ် + တတာ + ဝီဂါ + ယူကရိန်း + မသိ သို့မဟုတ် မရှိ သော ဘာသာစကား + အော်ဒူ + ဦးဇ်ဘက် + ဗီယက်နမ် + ဝူလိုဖ် + ဇိုစာ + ရိုရုဘာ + မိုရိုကန် တွမ်မဇိုတ် စံ + တရုတ် + ရိုးရှင်းသော တရုတ် + ရှေးရိုးစဉ်လာ တရုတ် + ဇူလူ + ဘာသာစကား နှင့် ပတ်သက် သောအရာမရှိ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ကမ္ဘာ + အာဖရိက + မြောက် အမေရိက + တောင် အမေရိက + သမုဒ္ဒရာဒေသ + အနောက် အာဖရိက + အလယ်ပိုင်း အမေရိက + အရှေ့ပိုင်း အာဖရိက + မြောက်ပိုင်း အာဖရိက + အလယ်ပိုင်း အာဖရိက + တောင်ပိုင်း အာဖရိက + အမေရိကများ + မြောက်ပိုင်း အမေရိက + ကာရီဘီယံ + အရှေ့ပိုင်း အာရှ + တောင်ပိုင်း အာရှ + အရှေ့တောင်ပိုင်းအာရှ + တောင်ပိုင်း ဥရောပ + ဩစတြေးလျနှင့် နယူးဇီလန် + မီလာနီးရှား + မိုင်ခရိုနီရှားနယ် + ပိုလီနီရှား + အာရှ + အလယ် အာရှ + အနောက် အာရှ + ဥရောပ + အရှေ့ပိုင်း ဥရောပ + မြောက်ပိုင်း ဥရောပ + အနောက်ပိုင်း ဥရောပ + လက်တင်အမေရိက + အက်စ်စင်ရှီအွန်ကျွန်း + အန်ဒိုရာ + ယူအေအီး + အာဖဂန်နစ္စတန် + အန်တီဂုအာနှင့်ဘာဘုဒါ + အန်ဂွီလာ + အဲလ်ဘာနီအာ + အာမေနီးယား + အင်ဂိုလာ + အန္တာတိက + အာဂျင်တီးနား + အမေရိကန် စမိုအ + ဩစတြီးယား + ဩစတြေးလျ + အာရုဘာ + အာလန်ကျွန်း + အဇာဘိုင်ဂျန် + ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနား + ဘာဘဒိုးစ် + ဘင်္ဂလားဒေ့ရှ် + ဘယ်လ်ဂျီယမ် + ဘာကီနာ ဖာဆို + ဘူဂေးရီးယား + ဘာရိန်း + ဘူရွန်ဒီ + ဘီနင် + စိန့်ဘာသီလီမိုင် + ဘာမူဒါ + ဘရူနိုင်း + ဘိုလီးဘီးယား + ကာရီဘီယံနယ်သာလန် + ဘရာဇီး + ဘဟားမား + ဘူတန် + ဘူဗက်ကျွန်း + ဘော့စ်ဝါနာ + ဘီလာရုစ် + ဘေလီဇ် + ကနေဒါ + ကိုကိုး ကျွန်းစု + ကွန်ဂို-ကင်ရှာစ + ကွန်ဂို (DRC) + အလယ်ပိုင်း အာဖရိက ပြည်ထောင်စု + ကွန်ဂို-ဘရာဇာဗီလ် + ကွန်ဂို (Republic) + ဆွစ်ဇလန် + အိုင်ဗရီကိုစ့် + ကွတ် ကျွန်းစု + ချီလီ + ကင်မရွန်း + တရုတ် + ကိုလံဘီယာ + ကလစ်ပါတန်ကျွန်း + ကော့စ်တာရီကာ + ကျူးဘား + ခေ့ပ်ဗာဒူ + ခူရာကာအို + ခရစ်စမတ် ကျွန်း + ဆိုက်ပရက်စ် + ချက် ပြည်ထောင်စု + ဂျာမဏီ + ဒီအေဂိုဂရာစီအာ + ဂျီဘူတီ + ဒိန်းမတ် + ဒိုမီနီကာ + ဒိုမီနီကန် + အယ်လ်ဂျီးရီးယား + ဆယ်ဥတာနှင့်မယ်လီလ်လာ + အီကွေဒေါ + အက်စတိုးနီးယား + အီဂျစ် + အနောက်ပိုင်း ဆာဟာရ + အီရီတရီအာ + စပိန် + အီသီယိုးပီးယား + ဥရောပသမဂ္ဂ + ဖင်လန် + ဖီဂျီ + ဖောက်ကလန် ကျွန်းစု + ဖော့ခ်လန်ကျွန်းစု(အီလားစ် မောလ်ဗီနာစ်) + မိုင်ခရိုနီရှား + ဖာရိုး ကျွန်းစုများ + ပြင်သစ် + ဂါဘွန် + ယူနိုက်တက်ကင်းဒမ်း + ယူကေ + ဂရီနာဒါ + ဂျော်ဂျီယာ + ပြင်သစ် ဂီယာနာ + ဂွန်းဇီ + ဂါနာ + ဂျီဘရော်လ်တာ + ဂရင်းလန်း + ဂန်ဘီရာ + ဂီးနီ + ဂူအာဒီလုပ် + အီကွေတာ ဂီရာနာ + ဂရိ + တောင် ဂျော်ဂျီယာ နှင့် တောင် ဆင်းဒဝစ်ဂျ် ကျွန်းစုများ + ဂွာတီမာလာ + ဂူအမ် + ဂီရာနာ-ဘီစ်စာဥ + ဂူရာနာ + တရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ ဟောင်ကောင် + ဟောင်ကောင် + ဟတ်ကျွန်းနှင့်မက်ဒေါနယ်ကျွန်းစု + ဟွန်ဒူးရပ်စ် + ခရိုအေးရှား + ဟေတီ + ဟန်ဂေရီ + ကာနာရီကျွန်းစု + အင်ဒိုနီးရှား + အိုင်ယာလန် + အစ္စရေး + မန်ကျွန်း + အိန္ဒိယ + ဗြိတိသျှ အိန္ဒြိယ သမုဒ္ဒရာ ပိုင်နက် + အီရတ် + အီရန် + အိုက်စလန် + အီတလီ + ဂျာစီ + ဂျမေကာ + ဂျော်ဒန် + ဂျပန် + ကင်ညာ + ခရူဂစ်စတန် + ကမ္ဘောဒီးယား + ခီရီဘာတီ + ကိုမိုရိုစ် + စိန့်ကစ်နှင့်နီဗီစ် + မြောက်ကိုရီးယား + တောင်ကိုရီးယား + ကူဝိတ် + ကေမန် ကျွန်းစု + ကာဇက်စတန် + လာအို + လက်ဘနွန် + စိန့်လူစီအာ + လစ်ခ်ထင်စတိုင် + သီရိလင်္ကာ + လိုင်ဘေးရီးယား + လီဆိုသို + လစ်သူယေးနီးယား + လူဇင်ဘတ် + လတ်ဗီးယား + လီဗရာ + မော်ရိုကို + မိုနာကို + မောလ်ဒိုဗာ + မွန်တီနိဂရိုး + စိန့်မာတင် + မာဒါဂတ်စကာ + မာရှယ် ကျွန်းစု + မာစီဒိုးနီးယား + မာစီဒိုနီအာ + မာလီ + မြန်မာ + မွန်ဂိုးလီးယား + တရုတ်၏ အထူးအုပ်ချုပ်ခွင့်ရ မကာအို + မကာအို + တောင်ပိုင်းမာရီအာနာကျွန်းစု + မာတီနီကီ + မောရီတာနီအာ + မောင့်စဲရက် + မောလ်တာ + မော်ရေရှားစ် + မော်လ်ဒိုက် + မာလာဝီ + မက္ကဆီကို + မလေးရှား + မိုဇန်ဘစ် + နမ်မီးဘီးယား + နယူး ကယ်လီဒိုနီးယား + နိုင်ဂျာ + နောဖော့ခ်ကျွန်း + နိုင်ဂျီးရီးယား + နီကာရာဂွာ + နယ်သာလန် + နော်ဝေ + နီပေါ + နာဥူရူ + နီဥူအေ + နယူးဇီလန် + အိုမန် + ပနားမား + ပီရူး + ပြင်သစ် ပေါ်လီနေးရှား + ပါပူရာနယူးဂီနီ + ဖိလစ်ပိုင် + ပါကစ္စတန် + ပိုလန် + စိန့်ပီအဲရီနှင့်မီကွီလွန် + ပစ်တ်ကိန်းကျွန်းစု + ပေါ်တူရီကို + ပါလက်စတိုင်း ပိုင်နက် + ပါလက်စတိုင်း + ပေါ်တူဂီ + ပလောင် + ပါရာဂွေး + ကာတာ + သမုဒ္ဒရာဒေသအပြင်ထွက်နေသောဒေသများ + ရဲအူနီရွန် + ရိုမေးနီးယား + ဆားဘီးယား + ရုရှ + ရဝန်ဒါ + ဆော်ဒီအာရေးဗီးယား + ဆော်လမွန်ကျွန်းစု + ဆေးရှလ် + ဆူဒန် + ဆွီဒင် + စင်္ကာပူ + စိန့်ဟဲလီနာ + စလိုဗေးနီးယား + စဗိုလ်ဘတ်နှင့်ဂျန်မေရန် + စလိုဗေးကီးယား + ဆီအဲရာ လီအိုနီ + ဆော့န်မာရီနို + ဆီနီဂေါ + ဆိုမာလီယာ + ဆူရီနိမ်း + မြောက်ဆူဒန် + စိန့်တိုမီနှင့်ပရင်စီပ့် + အယ်လ်ဆာဗေးဒိုး + ဆင့်မာအာတင် + ဆီးရီးယား + စွာဇီလန် + ထရစ်တန်ဒါကွန်ဟာ + တခ်စ်နှင့်ကာအီကိုစ်ကျွန်းစု + ချဒ် + ပြင်သစ် တောင်ပိုင်း ပိုင်နက်များ + တိုဂို + ထိုင်း + တာဂျီကစ္စတန် + ထိုးခါလူ + အရှေ့တီမော + တာခ်မီန့စ်တန် + တူနီးရှား + တွန်ဂါ + တူရကီ + ထရိုင်နီဒတ်နှင့်တိုဘာဂို + ထူးဗလူ + ထိုင်ဝမ် + တန်ဇန်းနီးယား + ယူကရိန်း + ယူဂန္ဓာ + ယူနိုက်တက်စတိတ် အပြင်ထွက် နေသည့် သေးငယ်သောကျွန်းများ + ယူနိုက်တက်စတိတ် + ယူအက်စ် + ဥရုဂွေး + ဥဘက်ကစ္စတန် + ဗာတီကန်စီတီး + စိန့်ဗင့်ဆင့်နှင့် သည်ဂရဲနာဒင်းစ် + ဗင်နီဇွဲလား + ဗြိတိသျှ ဗာဂျင်း ကျွန်းစု + ယူအက်စ် ဗာဂျင်း ကျွန်းစု + ဗီယက်နမ် + ဗာနုအာတူ + ဝေါလစ်နှင့်ဖူထူးနား + ဆာမိုအာ + ကိုဆိုဗို + ယီမင် + မေအိုတီ + တောင်အာဖရိက + ဇမ်ဘီယာ + ဇင်ဘာဘွေ + မသိ သို့မဟုတ် မရှိ သော နေရာ + + + ရှေးရိုးစဉ်လာ ဂျာမန် ရေးထုံး + ၁၉၉၆ ဂျာမန် ရေးထုံး + အလယ်ပိုင်းနောက်ကျသောပြင်သစ်မှ ၁၆၀၆ + ၁၆၉၄ACAD + အရှေ့ပိုင်းအာမေးနီးယန်း + ပေါင်းစပ်ထားသော တူရကီ လက်တင်စကားလုံး + IPA အသံထွက် + UPA အသံထွက် + ကွန်ပျူတာ + ပြန်လည်စီစစ်ထားသော ရေးထုံး + စကော့ စံ အင်္ဂလိပ် + + + ပြက္ခဒိန် + စနစ်တကျစီသော + ငွေကြေး + ဂဏန်းနံပါတ် + + + အာရပ်ဂဏန်းခြေ + တိုးချဲ့အာရပ်ဂဏန်းခြေ + အာမေနီယန်ဂဏန်းခြေ + အာမေနီယန်ဂဏန်းခြေအသေး + ဘန်ဂါလီဂဏန်းခြေ + ဗုဒ္ဓ ပြက္ခဒိန် + တရုတ် ပြက္ခဒိန် + ဒီပါနာဂါရီဂဏန်းခြေ + ယူနီကုတ်အစဉ်လိုက်စီထားသော + အီသီအိုပီးယားဂဏန်းခြေ + အနံအပြည့်နှင့်ဂဏန်းခြေ + နိုင်ငံတကာသုံးဂဏန်းခြေ + နိုင်ငံတကာသုံး ပြက္ခဒိန် + ဂရိဂဏန်းခြေ + ဂရိဂဏန်းခြေအသေး + ဂုဂျာရာတီဂဏန်းခြေ + ဂူမူခီဂဏန်းခြေ + တရုတ်ဆယ်လီစနစ်ဂဏန်းခြေ + ရိုးရှင်းသောတရုတ်ဂဏန်းခြေ + ရိုးရှင်းသောတရုတ်ဘဏ္ဏာရေးသုံးဂဏန်းခြေ + ရိုးရာတရုတ်ဂဏန်းခြေ + ရိုးရာတရုတ်ဘဏ္ဏာရေးသုံးဂဏန်းခြေ + ဟေဗြဲဂဏန်းခြေ + ဟီဗရူး ပြက္ခဒိန် + အိန္ဒြိယ အမျိုးသား ပြက္ခဒိန် + အစ္စလာမ် ပြက္ခဒိန် + ဂျပန် ပြက္ခဒိန် + ဂျပန်ဂဏန်းခြေ + ဂျပန်ဘဏ္ဏာရေးသုံးဂဏန်းခြေ + ခမာဂဏန်းခြေ + ခန္နဒါဂဏန်းခြေ + လာအိုဂဏန်းခြေ + အနောက်တိုင်းဂဏန်းခြေ + မလာရာလမ်ဂဏန်းခြေ + မြန်မာဂဏန်းခြေ + ရှမ်းဂဏန်းခြေ + ဩရီရာဂဏန်းခြေ + ဖုန်းစာအုပ် အစီအစဉ် + ရောမဂဏန်းခြေ + ရောမဂဏန်းခြေအသေး + ယေဘုယျရှာခြင်း + ပုံမှန်စီသော + ရိုးရာတမီးလ်ဂဏန်းခြေ + တမီးလ်ဂဏန်းခြေ + တီရီဂုဂဏန်းခြေ + ထိုင်းဂဏန်းခြေ + တိဘက်ဂဏန်းခြေ + + + မက်ထရစ်စနစ် + ဗြိတိန်စနစ် + အမေရိကန်စနစ် + + + ဘာသာစကား - {0} + စာ - {0} + နယ်ပယ်ဒေသ - {0} + + + + [\u1036 း \u1037 က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ျ ရ ြ လ ဝ \u103D သ ဿ ဟ \u103E ဠ အ ဣ ဤ ဥ ဦ ဧ ဩ ဪ ာ ါ \u102D \u102E \u102F \u1030 ေ \u1032 \u1039 \u103A] + [ၐ ၑ ဢ ၒ ၓ ၔ ၕ ဨ ၖ ၗ \u1058 \u1059] + [က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ] + [၊ ။ ‘ ’ “ ”] + + + + + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y/MM/dd + + + + + + + {1} {0}တွင် + + + + + {1} {0}တွင် + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + G y + G y MMM + G y MMM d + E, G y MMM d + HH + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + G y + G y + G y/M + GGGGG y-MM-dd + E, G y/M/d + G y MMM + G y MMM d + E, G y MMM d + G y MMMM + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + M/d – M/d + M/d – M/d + + + EEEE၊ M/d – EEEE၊ M/d + EEEE၊ M/d – EEEE၊ M/d + + + MMM – MMM + + + MMM d–d + MMM d – MMM d + + + MMM d၊ EEEE – MMM d၊ EEEE + MMM d၊ EEEE – MMM d၊ EEEE + + + G y-y + + + G y/M – y/M + G y/M – y/M + + + G y/M/d – y/M/d + G y/M/d – y/M/d + G y/M/d – y/M/d + + + EEEE၊ G y/M/d – EEEE၊ y/M/d + EEEE၊ G y/M/d – EEEE၊ y/M/d + EEEE၊ G y/M/d – EEEE၊ y/M/d + + + G y MMM – y MMM + G y MMM – y MMM + + + G y MMM d–d + G y၊ MMM d – MMM d + G y MMM d – y MMM d + + + G y၊ MMM d၊ EEEE – MMM d၊ EEEE + G y၊ MMM d၊ EEEE – MMM d၊ EEEE + G y၊ MMM d၊ EEEE – y၊ MMM d၊ EEEE + + + G y MMMM–MMMM + G y MMMM – y MMMM + + + + + + + + + ဇန်နဝါရီ + ဖေဖော်ဝါရီ + မတ် + ဧပြီ + မေ + ဇွန် + ဇူလိုင် + ဩဂုတ် + စက်တင်ဘာ + အောက်တိုဘာ + နိုဝင်ဘာ + ဒီဇင်ဘာ + + + ဇန်နဝါရီ + ဖေဖော်ဝါရီ + မတ် + ဧပြီ + မေ + ဇွန် + ဇူလိုင် + ဩဂုတ် + စက်တင်ဘာ + အောက်တိုဘာ + နိုဝင်ဘာ + ဒီဇင်ဘာ + + + + + ဇန်နဝါရီ + ဖေဖော်ဝါရီ + မတ် + ဧပြီ + မေ + ဇွန် + ဇူလိုင် + ဩဂုတ် + စက်တင်ဘာ + အောက်တိုဘာ + နိုဝင်ဘာ + ဒီဇင်ဘာ + + + + + + + + + + + + + + + + + ဇန်နဝါရီ + ဖေဖော်ဝါရီ + မတ် + ဧပြီ + မေ + ဇွန် + ဇူလိုင် + ဩဂုတ် + စက်တင်ဘာ + အောက်တိုဘာ + နိုဝင်ဘာ + ဒီဇင်ဘာ + + + + + + + တနင်္ဂနွေ + တနင်္လာ + အင်္ဂါ + ဗုဒ္ဓဟူး + ကြာသပတေး + သောကြာ + စနေ + + + တနင်္ဂနွေ + တနင်္လာ + အင်္ဂါ + ဗုဒ္ဓဟူး + ကြာသပတေး + သောကြာ + စနေ + + + တနင်္ဂနွေ + တနင်္လာ + အင်္ဂါ + ဗုဒ္ဓဟူး + ကြာသပတေး + သောကြာ + စနေ + + + + + တနင်္ဂနွေ + တနင်္လာ + အင်္ဂါ + ဗုဒ္ဓဟူး + ကြာသပတေး + သောကြာ + စနေ + + + + + + + က + + + + + တနင်္ဂနွေ + တနင်္လာ + အင်္ဂါ + ဗုဒ္ဓဟူး + ကြာသပတေး + သောကြာ + စနေ + + + + + + + ပထမ သုံးလပတ် + ဒုတိယ သုံးလပတ် + တတိယ သုံးလပတ် + စတုတ္ထ သုံးလပတ် + + + + ဒု + + + + + ပထမ သုံးလပတ် + ဒုတိယ သုံးလပတ် + တတိယ သုံးလပတ် + စတုတ္ထ သုံးလပတ် + + + + + ပထမ သုံးလပတ် + ဒုတိယ သုံးလပတ် + တတိယ သုံးလပတ် + စတုတ္ထ သုံးလပတ် + + + + ဒု + + + + + ပထမ သုံးလပတ် + ဒုတိယ သုံးလပတ် + တတိယ သုံးလပတ် + စတုတ္ထ သုံးလပတ် + + + + + + + နံနက် + ညနေ + + + + + + ခရစ်တော် မပေါ်မီကာလ + ခရစ်တော် ပေါ်ထွန်းပြီးကာလ + + + ဘီစီ + ဘီစီအီး + အေဒီ + စီအီး + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1}မှာ {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + E, G y MMM d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + y/M + y-MM-dd + E, y/M/d + y MMM + y MMM d + E, y MMM d + y MMMM + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + M/d – M/d + M/d – M/d + + + EEEE၊ M/d – EEEE၊ M/d + EEEE၊ M/d – EEEE၊ M/d + + + MMM – MMM + + + MMM d – MMM d + MMM d – MMM d + + + MMM d၊ EEEE – MMM d၊ EEEE + MMM d၊ EEEE – MMM d၊ EEEE + + + y-y + + + y/M – y/M + y/M – y/M + + + y/M/d – y/M/d + y/M/d – y/M/d + y/M/d – y/M/d + + + EEEE၊ y/M/d – EEEE၊ y/M/d + EEEE၊ y/M/d – EEEE၊ y/M/d + EEEE၊ y/M/d – EEEE၊ y/M/d + + + y MMM – y MMM + y MMM – y MMM + + + y MMM d–d + y၊ MMM d – MMM d + y MMM d – y MMM d + + + y၊ MMM d၊ EEEE – MMM d၊ EEEE + y၊ MMM d၊ EEEE – MMM d၊ EEEE + y၊ MMM d၊ EEEE – y၊ MMM d၊ EEEE + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + ခေတ် + + + နှစ် + ယမန်နှစ် + ယခုနှစ် + နောက်နှစ် + + {0}နှစ်အတွင်း + + + လွန်ခဲ့သော{0}နှစ် + + + + + ယမန်လ + ယခုလ + နောက်လ + + {0}လအတွင်း + + + လွန်ခဲ့သော{0}လ + + + + ပတ် + ပြီးခဲ့သောအပတ် + ဒီအပတ် + နောက်အပတ် + + {0}ပတ်အတွင်း + + + လွန်ခဲ့သော{0}ပတ် + + + + ရက် + တနေ့က + မနေ့က + ယနေ့ + မနက်ဖြန် + သဘက်ခါ + + {0}ရက်အတွင်း + + + လွန်ခဲ့သော{0}ရက် + + + + နေ့ + + + ပြီးခဲ့သောတနင်္ဂနွေ + ဒီတနင်္ဂနွေ + နောက်တနင်္ဂနွေ + + + ပြီးခဲ့သောတနင်္လာ + ဒီတနင်္လာ + နောက်တနင်္လာ + + + ပြီးခဲ့သောအင်္ဂါ + ဒီအင်္ဂါ + နောက်အင်္ဂါ + + + ပြီးခဲ့သော ဗုဒ္ဓဟူး + ဒီဗုဒ္ဓဟူး + နောက်ဗုဒ္ဓဟူး + + + ပြီးခဲ့သောကြာသပတေး + ဒီကြာသပတေး + နောက်ကြာသပတေး + + + ပြီးခဲ့သောသောကြာ + ဒီသောကြာ + နောက်သောကြာ + + + ပြီးခဲ့သောစနေ + ဒီစနေ + နောက်စနေ + + + နံနက်/ညနေ + + + နာရီ + + {0}နာရီအတွင်း + + + လွန်ခဲ့သော{0}နာရီ + + + + မိနစ် + + {0}မိနစ်အတွင်း + + + လွန်ခဲ့သော{0}မိနစ် + + + + စက္ကန့် + ယခု + + {0}စက္ကန့်အတွင်း + + + လွန်ခဲ့သော{0}စက္ကန့် + + + + ဇုန် + + + + +HH:mm;-HH:mm + ဂရင်းနစ်စံတော်ချိန်{0} + ဂရင်းနစ်စံတော်ချိန် + {0}အချိန် + {0} (+1) + {0} (စံတော်ချိန်) + {1} ({0}) + + အမည်မသိသောမြို့ + + + အန်ဒိုရာ + + + ဒူဘိုင်း + + + ကာဘူလ် + + + အန်တီဂုအာ + + + အန်ဂွီလာ + + + တီရာနီ + + + ရဲယ်ရေဗန်း + + + လူအန်ဒါ + + + ရိုသီရာ + + + ပါလ်မာ + + + ရှိုးဝါ + + + မော်စွန် + + + ဒေးဗစ် + + + ဗိုစ်တိုခ် + + + ကေစီ + + + ဒူးမော့တ် ဒါရ်ဗီးလ် + + + မက်မူဒိုး + + + ရီအို ဂါလီဂိုစ် + + + မိန်ဒိုဇာ + + + စော့တ ဂျုအန် + + + ဥဆွာအီအာ + + + လာ ရီအိုဂျာ + + + စော့န် လူအီးစ် + + + ကာတာမာရ်ကာ + + + ဆာလ်တာ + + + ဂျုဂျေ + + + တူကူမန် + + + ကိုဒိုဘာ + + + ဘရူနိုစ်အေရီစ် + + + ဖါငိုဖါငို + + + ဗီအင်နာ + + + ပါးသ် + + + ယူးခလာ + + + ဒေါဝင် + + + အန္ဒီလိတ်ဒ် + + + ဘရိုကင်ဟီးလ် + + + ကာရီ + + + မယ်လ်ဘွန်း + + + ဟိုးဘားတ် + + + လင်းဒီမန်း + + + ဆစ်ဒနီ + + + ဘရစ္စဘိန်း + + + မခွါရီး + + + လော့ဒ် ဟောင် + + + အာရုဘာ + + + မရီအာ ဟားမန် + + + ဘာခူး + + + ဆာရာဂျေဗို + + + ဘာဘဒိုးစ် + + + ဒက္ကာ + + + ဘရူဆဲလ် + + + ဝါဂါဒူးဂူ + + + ဆိုပီအာ + + + ဘာရိန်း + + + ဘူဂျွန်ဘူးရာ + + + ပိုတို-နိုဗို + + + စိန့်ဘာသည်လီမိုင် + + + ဘာမူဒါ + + + ဘရူနိုင်း + + + လာပါဇ် + + + ခရာလဲန်းဒီခ် + + + အီရူနီပီ + + + ရီယို ဘရန်ကို + + + ဖို့တ်တို ဗဲလ်လီအာ + + + ဘိုအာဗီစ်တာ + + + မာနောက်စ် + + + ခူရာဘာ + + + ဆန်တာရန် + + + ကိမ်ပို ဂရန်ဒီ + + + ဘာလီန် + + + အာရာဂွာအီနာ + + + ဆာပိုလို + + + ဘာဟီအာ + + + ဖို့တ်တာလီဇာ + + + မာဆဲသြာ + + + ရယ်စီ့ဖ်ဖာ + + + နိုရိုညာ + + + နာ့ဆော် + + + တင်ဖူး + + + ဂါဘာရွန်းနီ + + + မင်းစခ် + + + ဘီလီဇ် + + + ဒေါ်စွန် + + + ဝိုက်(တ်)ဟိုစ် + + + အီနုဗီခ် + + + ဗင်ခူဘာ + + + ဒေါ်စွန်ကရိခ် + + + ကရစ်စတွန် + + + ရဲလိုနိုင်ဖ် + + + အက်ဒ်မွန်တွန် + + + စဝီ(ဘ်)ကာရင့် + + + ကိန်းဘရီဂျ်ဘေး + + + ရယ်ဂျီနာ + + + ဝီနီဗက်ဂ် + + + ရဲလ်ဆိုလု(တ်) + + + ရိမ်းနီး ရီဗာ + + + ရမ်ကင် အင်လက် + + + အာတီကိုကန် + + + သံဒါဘေး + + + နီပီဂွန် + + + တိုရွန်တို + + + အီကာလူအီတ် + + + ဖန်ဂ်နသ်တံ + + + မွန်ခ်တွန် + + + ဟလီဖက်စ် + + + ဂူးစ်ဘေး + + + ဂလဲစ်ဘေး + + + ဘလွန်ခ်-စာဘလွန် + + + စိန့်ဂျွန်းစ် + + + ကိုကိုးစ် + + + ခင်ရှာစာ + + + လူဘွန်းဘာရှီ + + + ဘာန်ဂီး + + + ဘရားဇာဗီးလ် + + + ဇူရီချ် + + + အာဘီဂျွန်း + + + ရာရိုတွန်းဂါ + + + အီစတာ + + + ဆန်တီအာဂို + + + ဒိုအူအာလာ + + + ခါရှီးဂ် + + + အီရင်ချီး + + + ချောင်ချင်း + + + ရှန်ဟိုင်း + + + ဟာဘင် + + + ဘိုဂိုတာ + + + ကိုစတာရီကာ + + + ဟာဗာနာ + + + ကိတ်ဗာဒု + + + ခူရာကာအို + + + ခရစ်စမတ်စ် + + + နီခိုစီးအား + + + ပါရာဂ် + + + ဘူရှင်ဂျင် + + + ဘာလင် + + + ဂျီးဘူးတီ + + + ကိုပါဟေဂန် + + + ဒိုမီနီကာ + + + ဆန်တို ဒိုမီနီကာ + + + အယ်လ်ဂျီးအားစ် + + + ဂါလာပါဂိုစ် + + + ဂွာရာကီးလ် + + + ထားလင် + + + ကိုင်ရို + + + အယ်လ်အာယွန်း + + + အားစ်မားရာ + + + ကာနာရီ + + + ဆီရူးတာ + + + မာဒရစ် + + + အားဒစ် အားဘဘာ + + + ဟဲလ်စင်ကီ + + + ဖီဂျီ + + + စတန်လီ + + + ချုခ် + + + ဖိုနာဖဲအ် + + + ခိုစ်ရိုင် + + + ဖဲရို + + + ပါရီစ် + + + လီဗရာဗီးလ် + + + + ဗြိတိန်နွေရာသီအချိန် + + လန်ဒန် + + + ဂရီနာဒါ + + + တဘီးလီစီ + + + ခါရန်း + + + ဂွန်းဇီ + + + အက်ကရာ + + + ဂျီဘရော်လ်တာ + + + သုလီ + + + နုအုခ် + + + အို့တိုခိုတိုမစ် + + + ဒန်မတ်ရှာန် + + + ဘန်ဂျုးလ် + + + ခေါ်နာခရီး + + + ဂူအာဒီလူပ် + + + မာလာဘို + + + အေသင် + + + စောက်ဂျိုဂျီရာ + + + ဂွာတီမာလာ + + + ဂူအမ် + + + ဘီစာအို + + + ဂိုင်းရာနား + + + ဟောင်ကောင် + + + တီဂူစီဂလ်ပါ + + + ဇာဂ်ဂရက်ဘ် + + + ပို့တ်-အို-ပရင့်စ် + + + ဘူတာပက်စ် + + + ဂျာကာတာ + + + ပွန်တီအားနာ့ခ် + + + မခက်စ်ဆာ + + + ဂျာရာပူရာ + + + + အိုင်းရစ်နွေရာသီအချိန် + + ဒတ်ဘလင် + + + ဂျေရုစလန် + + + မန်းကျွန်း + + + ကိုလ်ကာတာ + + + ချာဂိုစ် + + + ဘက်ဂဒက် + + + တီရန် + + + ရေးခဗခ့် + + + ရောမ + + + ဂျဲးအ်ဇီ + + + ဂျာမေကာ + + + အာမာန်း + + + တိုကျို + + + နိုင်ရိုဘီ + + + ဘီရှ်ခက် + + + ပနွမ်ဖင် + + + အန်ဒါဘူရီ + + + ခရစ့်မားစ် + + + တာရာဝါ + + + ကွန်မိုရို + + + စိန့်ကိစ် + + + ပြုံယန်း + + + ဆိုးလ် + + + ကူဝိတ် + + + ကေမန် + + + အက်တာဥု + + + အောရဲယ် + + + အာခ်တူးဘီ + + + ခွီဇိုင်လိုဒါ + + + အော်မာတီ + + + ဗီအင်ချမ် + + + ဘေရု + + + စိန့်လူစီအာ + + + ဗာဒူးစ် + + + ကိုလံဘို + + + မွန်ရိုဗီအာ + + + မာဆူရူး + + + ဗီးလ်နီအိုးစ် + + + လူဇင်ဘာဂ် + + + ရီဂါ + + + ထရီပိုလီ + + + ကာစာဘလန်ကာ + + + မိုနာကို + + + ချီရှီနားအူ + + + ဖို့တ်ဂိုရီစာ + + + မာရီဂိုတ် + + + အန်တာနာနာရီးဘို + + + ခွာဂျာလိန် + + + မူဂျုးရို + + + စကော့ပ်ရာ + + + ဘာမာကို + + + ရန်ကုန် + + + ဟိုးဗ် + + + ဥလန်ဘာတော + + + ချွဲဘောဆန် + + + မာကာအို + + + ဆိုင်းပန် + + + မာတီနီဂ် + + + နိုအာ့ခ်ရှော့တ် + + + မွန့်(တ်)ဆေးရတ် + + + မော်လ်တာ + + + မောရီလျာ + + + မောလ်ဒီးဖ်စ် + + + ဘလန်တိုင်းအာ + + + တီဂျုအာနာ + + + ဆန်တာ အီးဇဘဲယ်လ် + + + ဟာမိုစ်စီလို + + + မာဇတ်လန် + + + ချီဟူအာဟူအာ + + + ဘာဟီအာ ဘန်ဒရက်စ် + + + အိုဂျီနာဂါ + + + မွန်တီရဲယ်လ် + + + မက်ခ်စီကိုစီတီး + + + မာတာမိုရိုစ် + + + မီရီဒါ + + + ကန်ခန် + + + ကွာလာလမ်ပူ + + + ကူချင် + + + မာပူးတို + + + ဗင်းဟူးခ် + + + နူမယ်အာ + + + ညာမဲယ် + + + နော်ဖော့ခ် + + + လာဂိုစ် + + + မာနာဂူအာ + + + အမ္စတာဒန် + + + အော့စ်လို + + + ခတ္တမန္ဒူ + + + နာဥူရူ + + + နီဦးအေ + + + ချားသမ် + + + အော့ကလန် + + + မတ်စ်ကက်တ် + + + ပါနားမား + + + လီမာ + + + တာဟီတီ + + + မာခေးအပ်စ် + + + ဂန်ဘီအာ + + + ဖို့တ် မိုရက်စ်ဘီ + + + မနီလာ + + + ကာရာချီ + + + ဝါဆော + + + မိခွီလွန် + + + ပိကိန်း + + + ပိုတိုရီကို + + + ဂါဇာ + + + ဟီဘရွန် + + + အာဇိုးစ် + + + မဒီးရာ + + + လစ္စဘွန် + + + ဖလောင် + + + အာဆူစီအွန်း + + + ကာတာ + + + ရယ်ယူးနယွန် + + + ဘူချာရက်စ် + + + ဘဲလ်ဂရိတ် + + + ခါလီနင်ဂရက် + + + မော့စ်ကို + + + ဗိုလ်ဂိုဂရက် + + + ဆာမားရာ + + + ရယ်ခါးတီရင်ဘားခ် + + + အွမ်းစ်ခ် + + + နိုဗိုစဲဘီအဲယ်စ် + + + နိုဗိုခူဇ်နက်စ် + + + ခရာ့စ်နိုရာစ် + + + အီရူခူတ် + + + ယူခူးတ်စ် + + + ဗလာဒါဗိုစ်တိုခ် + + + ခန်ဒိုင်ဂါ + + + စဲက်ခါလီးင် + + + အူးစ် နီရား + + + မာဂါဒန်း + + + ခမ်ချာ့ခါ + + + အန်အာဒီအာ + + + ခီဂါးလီ + + + ရီယားဒ် + + + ဂွာဒါခယ်နယ်လ် + + + မာဟီ + + + ကာတိုအန် + + + စတော့ဟုမ်း + + + စင်္ဂပူ + + + စိန့်ဟီလီနာ + + + လူဘလီအားနား + + + လောင်ရီယားဘရံ + + + ဘရာတီးစ်လားဗာ + + + ဖရီးတောင်းန် + + + ဆန်မရီးနို + + + ဒါကာ + + + မော်ဂါဒီးသျုး + + + ပါရာမာရီဘို + + + ဂျုဘာ + + + ဆာအို တိုမီ + + + အဲလ် ဆာဗီဒို + + + လိုအာပရင့်စ် ကွာတာ + + + ဒါးမားစ်ကတ်စ် + + + ဘားဘာန်း + + + ဂရန်ဒ် တခ် + + + အင်ဂျာမီနာ + + + ခူဂါလန် + + + လိုမီ + + + ဘန်ကောက် + + + ဒူရှောန်းဘာ + + + ဖာခါအိုဖို + + + ဒစ်လီ + + + အာရှ်ဂါဘာဒ် + + + တူနီစ် + + + တွန်ဂါတာပု + + + အစ္စတန်ဘူလ် + + + ပို့တ် အော့ဖ် စပိန် + + + ဖူနာဖူတီ + + + ထိုင်ပေ + + + ဒါအက်စ်ဆာလမ်း + + + ဥဇ်ဂိုရို့တ် + + + ခီးအက်ဖ် + + + စင်ဖာရိုးဖို + + + ဇာဖိုရိုးစ်ဂျာ + + + ခမ်ပါးလား + + + မစ်ဒ်ဝေး + + + ဂျွန်စတန် + + + ဝက်ခ် + + + အာဒခ် + + + နိုမီ + + + ဟိုနိုလူလူ + + + အန်ကာရေ့ဂျ် + + + ရာကုတတ် + + + စစ်ကာ + + + ဂျုနိုအော + + + မက်တ်လာကက်လာ + + + လော့စ်အိန်ဂျယ်လိစ် + + + ဘိုအီဇီ + + + ဖီးနစ် + + + ဒင်ဗာ + + + ဘီဥလာ မြောက်ဒါကိုတာ + + + နယူးစီလန် မြောက်ဒါကိုတာ + + + စင်တာ မြောက်ဒါကိုတာ + + + ချီကာကို + + + မီနိုမီနီး + + + ဗင်ဆင့်စ် အင်ဒီအားနား + + + ပီတာဘာဂ်စ် အင်ဒီအားနား + + + တဲလ်စီးတီး အင်ဒီအားနား + + + နို့ခ်စ် အင်ဒီအားနား + + + ဝီနာမက်ခ် အင်ဒီအားနား + + + မာရန်ဂို အင်ဒီအားနား + + + အင်ဒီယားနားပိုလစ် + + + လူအီးစ်ဗီလ် + + + ဗီဗဲ အင်ဒီအားနား + + + မွန်တီဆယ်လို ကင်တပ်ခ်ကီး + + + ဒေထရိုအ် + + + နယူးယောက် + + + မွန်တီဗီဒီအို + + + ဆမ်းမာခန်းဒ် + + + တာရှ်ကဲန့် + + + ဗာတီကန် + + + စိန့်ဗင်းဆင့် + + + ကာရာကာစ် + + + တောတိုလာ + + + စိန့်သောမားစ် + + + ဟိုချီမင် + + + အီဖာတီ + + + ဝေါလီစ် + + + အားပီအား + + + အာဒင် + + + မာရော့တ် + + + ဂျိုဟန်နက်စ်ဘခ် + + + လူစားခါး + + + ဟာရားရဲယ် + + + + အာဖဂန်နစ္စတန် အချိန် + + + + + အလယ်ပိုင်း အာဖရိက အချိန် + + + + + အရှေ့ပိုင်း အာဖရိက အချိန် + + + + + တောင်အာဖရိက အချိန် + + + + + အနောက်ပိုင်း အာဖရိက အချိန် + အနောက်ပိုင်း အာဖရိက စံတော်ချိန် + အနောက်ပိုင်း အာဖရိက နွေရာသီ အချိန် + + + + + အလာစကာအချိန် + အလာစကာစံတော်ချိန် + အလာစကာနေ့ပိုင်းအချိန် + + + + + အမေဇွန်အချိန် + အမေဇွန်စံတော်ချိန် + အမေဇွန်နွေရာသီအချိန် + + + + + အလယ်ပိုင်း အမေရိက အချိန် + အလယ်ပိုင်း အမေရိက စံတော်ချိန် + အလယ်ပိုင်း အမေရိက နွေရာသီ အချိန် + + + + + အရှေ့ပိုင်း အမေရိက အချိန် + အရှေ့ပိုင်း အမေရိက စံတော်ချိန် + အရှေ့ပိုင်း အမေရိက နေ့ပိုင်း အချိန် + + + + + အမေရိက တောင် အချိန် + အမေရိက တောင် စံတော်ချိန် + အမေရိက တောင် နေ့ပိုင်း အချိန် + + + + + ပစိဖိတ် အချိန် + ပစိဖိတ် စံတော်ချိန် + ပစိဖိတ် နေ့ပိုင်း အချိန် + + + + + အာရေဗျ အချိန် + အာရေဗျ စံတော်ချိန် + အာရေဗျ နေ့ပိုင်း အချိန် + + + + + အာဂျင်တီးနား အချိန် + အာဂျင်တီးနား စံတော်ချိန် + အာဂျင်တီးနား နွေရာသီ အချိန် + + + + + အနောက် အာဂျင်တီးနား အချိန် + အနောက် အာဂျင်တီးနား စံတော်ချိန် + အနောက် အာဂျင်တီးနား နွေရာသီ အချိန် + + + + + အာမေနီးယား အချိန် + အာမေနီးယား စံတော်ချိန် + အာမေနီးယား နွေရာသီ အချိန် + + + + + အတ္ထလန်တစ် အချိန် + အတ္ထလန်တစ် စံတော်ချိန် + အတ္ထလန်တစ် နေ့ပိုင်း အချိန် + + + + + အလယ်ဩစတြေးလျှား အချိန် + အလယ်ပိုင်း ဩစတြေးလျှား စံတော်ချိန် + အလယ်ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန် + + + + + အလယ်အနောက်ပိုင်း ဩစတြေးလျှား အချိန် + အလယ်အနောက်ပိုင်း ဩစတြေးလျှား စံတော်ချိန် + အလယ်အနောက်ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန် + + + + + အရှေ့ဩစတြေးလျှား အချိန် + အရှေ့ပိုင်း ဩစတြေးလျှား စံတော်ချိန် + အရှေ့ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန် + + + + + အနောက် ဩစတြေးလျှား အချိန် + အနောက်ပိုင်း ဩစတြေးလျှား စံတော်ချိန် + အနောက်ပိုင်း ဩစတြေးလျှား နေ့ပိုင်း အချိန် + + + + + အဇာဘိုင်ဂျန် အချိန် + အဇာဘိုင်ဂျန် စံတော်ချိန် + အဇာဘိုင်ဂျန် နွေရာသီ အချိန် + + + + + အာဇိုးစ်အချိန် + အာဇိုးစ်စံတော်ချိန် + အာဇိုးစ်နွေရာသီအချိန် + + + + + ဘင်္ဂလားဒေ့ရှ် အချိန် + ဘင်္ဂလားဒေ့ရှ် စံတော်ချိန် + ဘင်္ဂလားဒေ့ရှ် နွေရာသီ အချိန် + + + + + ဘူတန် အချိန် + + + + + ဘိုလီးဘီးယား အချိန် + + + + + ဘရာဇီး အချိန် + ဘရာဇီး စံတော်ချိန် + ဘရာဇီး နွေရာသီ အချိန် + + + + + ဘရူနိုင်း စံတော်ချိန် + + + + + ခေ့ပ်ဗာဒူအချိန် + ခေ့ပ်ဗာဒူစံတော်ချိန် + ခေ့ပ်ဗာဒူနွေရာသီအချိန် + + + + + ချာမိုရိုအချိန် + + + + + ချားသမ်အချိန် + ချားသမ်စံတော်ချိန် + ချားသမ်နေ့ပိုင်းအချိန် + + + + + ချီလီ အချိန် + ချီလီ စံတော်ချိန် + ချီလီ နွေရာသီ အချိန် + + + + + တရုတ် အချိန် + တရုတ် စံတော်ချိန် + တရုတ် နေ့ပိုင်း အချိန် + + + + + ချွဲဘော်ဆန်းအချိန် + ချွဲဘော်ဆန်းစံတော်ချိန် + ချွဲဘော်ဆန်းနွေရာသီအချိန် + + + + + ခရစ်စမတ်ကျွန်းအချိန် + + + + + ကိုးကိုးကျွန်းအချိန် + + + + + ကိုလံဘီယာ အချိန် + ကိုလံဘီယာ စံတော်ချိန် + ကိုလံဘီယာ နွေရာသီ အချိန် + + + + + ကွတ်ခ်ကျွန်းစုအချိန် + ကွတ်ခ်ကျွန်းစုစံတော်ချိန် + ကွတ်က်ကျွန်းစုနွေရာသီအချိန် + + + + + ကျူးဘား အချိန် + ကျူးဘား စံတော်ချိန် + ကျူးဘား နေ့ပိုင်းအချိန် + + + + + ဒေးဗစ်အချိန် + + + + + ဒူးမော့တ် ဒါရ်ဗီးလ်အချိန် + + + + + အရှေ့တီမော အချိန် + + + + + အီစတာကျွန်းအချိန် + အီစတာကျွန်းစံတော်ချိန် + အီစတာကျွန်းနွေရာသီအချိန် + + + + + အီကွေဒေါ အချိန် + + + + + ဥရောပအလယ်ပိုင်းအချိန် + ဥရောပ အလယ်ပိုင်း စံတော်ချိန် + ဥရောပ အလယ်ပိုင်း နွေရာသီ အချိန် + + + + + အရှေ့ဥရောပ အချိန် + အရှေ့ဥရောပ စံတော်ချိန် + အရှေ့ဥရောပ နွေရာသီ အချိန် + + + + + အနောက်ပိုင်း ဥရောပ အချိန် + အနောက်ပိုင်း ဥရောပ စံတော်ချိန် + အနောက်ပိုင်း ဥရောပ နွေရာသီ အချိန် + + + + + ဖောင်ကလန်ကျွန်းစု အချိန် + ဖောင်ကလန်ကျွန်းစု စံတော်ချိန် + ဖောင်ကလန်ကျွန်းစု နွေရာသီ အချိန် + + + + + ဖီဂျီအချိန် + ဖီဂျီစံတော်ချိန် + ဖီဂျီနွေရာသီအချိန် + + + + + ပြင်သစ် ဂီယာနာ အချိန် + + + + + ပြင်သစ်တောင်ပိုင်းနင့်အန္တတစ်အချိန် + + + + + ဂါလားပါဂိုးစ်အချိန် + + + + + ဂန်ဘီအာအချိန် + + + + + ဂျော်ဂျီယာ အချိန် + ဂျော်ဂျီယာ စံတော်ချိန် + ဂျော်ဂျီယာ နွေရာသီ အချိန် + + + + + ဂီလ်ဘတ်ကျွန်းစုအချိန် + + + + + ဂရင်းနစ် စံတော်ချိန် + + + + + အရှေ့ဂရင်းလန်း အချိန် + အရှေ့ဂရင်းလန်း စံတော်ချိန် + အရှေ့ဂရင်းလန်း နွေရာသီ အချိန် + + + + + အနောက် ဂရင်းလန်း အချိန် + အနောက် ဂရင်းလန်း စံတော်ချိန် + အနောက် ဂရင်းလန်း နွေရာသီ အချိန် + + + + + ပင်လယ်ဂွေ့ အချိန် + + + + + ဂိုင်ရာနားအချိန် + + + + + ဟာဝိုင်အီ အာလူးရှန်အချိန် + ဟာဝိုင်အီ အာလူးရှန်စံတော်ချိန် + ဟာဝိုင်အီ အာလူးရှန်နေ့ပိုင်းအချိန် + + + + + ဟောင်ကောင် အချိန် + ဟောင်ကောင် စံတော်ချိန် + ဟောင်ကောင် နွေရာသီ အချိန် + + + + + ဟိုးဗ်အချိန် + ဟိုးဗ်စံတော်ချိန် + ဟိုးဗ်နွေရာသီအချိန် + + + + + အိန္ဒြိယ စံတော်ချိန် + + + + + အိန္ဒြိယ သမုဒ္ဒရာ အချိန် + + + + + အင်ဒိုချိုင်းနား အချိန် + + + + + အလယ်ပိုင်း အင်ဒိုနီးရှား အချိန် + + + + + အရှေ့ပိုင်း အင်ဒိုနီးရှား အချိန် + + + + + အနောက်ပိုင်း အင်ဒိုနီးရှား အချိန် + + + + + အီရန် အချိန် + အီရန် စံတော်ချိန် + အီရန် နေ့ပိုင်း အချိန် + + + + + အီရူခူတ်အချိန် + အီရူခူတ်စံတော်ချိန် + အီရူခူတ်နွေရာသီအချိန် + + + + + အစ္စရေး အချိန် + အစ္စရေး စံတော်ချိန် + အစ္စရေး နေ့ပိုင်း အချိန် + + + + + ဂျပန် အချိန် + ဂျပန် စံတော်ချိန် + ဂျပန် နေ့ပိုင်း အချိန် + + + + + အရှေ့ကာဇက်စတန် အချိန် + + + + + အနောက်ကာဇက်စတန်အချိန် + + + + + ကိုးရီးယား အချိန် + ကိုးရီးယား စံတော်ချိန် + ကိုးရီးယား နေ့ပိုင်း အချိန် + + + + + ခိုစ်ရိုင်အချိန် + + + + + ခရာ့စ်နိုရာစ်အချိန် + ခရာ့စ်နိုရာစ်စံတော်ချိန် + ခရာ့စ်နိုရာစ်နွေရာသီအချိန် + + + + + ခယ်ကစ်တန်အချိန် + + + + + သီရိလင်္ကာ အချိန် + + + + + လိုင်းကျွန်းစုအချိန် + + + + + လော့ဒ်ဟောင်အချိန် + လော့ဒ်ဟောင်စံတော်ချိန် + လော့ဒ်ဟောင်နေ့ပိုင်းအချိန် + + + + + မကာအို အချိန် + မကာအို စံတော်ချိန် + မကာအို နွေရာသီ အချိန် + + + + + မခွါရီးအချိန် + + + + + မာဂါဒန်းအချိန် + မာဂါဒန်းစံတော်ချိန် + မာဂါဒန်းနွေရာသီအချိန် + + + + + မလေးရှား အချိန် + + + + + မောလ်ဒိုင်းဗ်အချိန် + + + + + မာခေးအပ်စ်အချိန် + + + + + မာရယ်ကျွန်းစုအချိန် + + + + + မော်ရေရှားစ်အချိန် + မော်ရေရှားစ်စံတော်ချိန် + မော်ရေရှားစ်နွေရာသီအချိန် + + + + + မော်စွန်အချိန် + + + + + ဥလန်ဘာတောအချိန် + ဥလန်ဘာတောစံတော်ချိန် + ဥလန်ဘာတောနွေရာသီအချိန် + + + + + မော့စ်ကို အချိန် + မော့စ်ကိုစံတော်ချိန် + မော့စ်ကိုနွေရာသီ အချိန် + + + + + မြန်မာ အချိန် + + + + + နာဥူရူအချိန် + + + + + နီပေါ အချိန် + + + + + နယူးကာလီဒိုးနီးယားအချိန် + နယူးကာလီဒိုးနီးယားစံတော်ချိန် + နယူးကာလီဒိုးနီးယားနွေရာသီအချိန် + + + + + နယူးဇီလန် အချိန် + နယူးဇီလန် စံတော်ချိန် + နယူးဇီလန် နေ့ပိုင်း အချိန် + + + + + နယူးဖောင်လန် အချိန် + နယူးဖောင်လန် စံတော်ချိန် + နယူးဖောင်လန် နေ့ပိုင်း အချိန် + + + + + နီဦးအေအချိန် + + + + + နောဖော့ခ်ကျွန်းအချိန် + + + + + ဖာနန်ဒိုးဒီနိုးရိုးညာအချိန် + ဖာနန်ဒိုးဒီနိုးရိုးညာစံတော်ချိန် + ဖာနန်ဒိုးဒီနိုးရိုးညာနွေရာသီအချိန် + + + + + နိုဗိုစဲဘီအဲယ်စ်အချိန် + နိုဗိုစဲဘီအဲယ်စ်စံတော်ချိန် + နိုဗိုစဲဘီအဲယ်စ်နွေရာသီအချိန် + + + + + အွမ်းစ်ခ်အချိန် + အွမ်းစ်ခ်စံတော်ချိန် + အွမ်းစ်ခ်နွေရာသီအချိန် + + + + + ပါကစ္စတန် အချိန် + ပါကစ္စတန် စံတော်ချိန် + ပါကစ္စတန် နွေရာသီ အချိန် + + + + + ဖလောင်အချိန် + + + + + ပါပူရာနယူးဂီနီ အချိန် + + + + + ပါရာဂွေး အချိန် + ပါရာဂွေး စံတော်ချိန် + ပါရာဂွေး နွေရာသီ အချိန် + + + + + ပီရူး အချိန် + ပီရူး စံတော်ချိန် + ပီရူး နွေရာသီ အချိန် + + + + + ဖိလစ်ပိုင် အချိန် + ဖိလစ်ပိုင် စံတော်ချိန် + ဖိလစ်ပိုင် နွေရာသီ အချိန် + + + + + ဖီးနစ်ကျွန်းစုအချိန် + + + + + စိန့်ပီအဲနှင့်မီခွီလွန်အချိန် + စိန့်ပီအဲနှင့်မီခွီလွန်စံတော်ချိန် + စိန့်ပီအဲနှင့်မီခွီလွန်နေ့ပိုင်းအချိန် + + + + + ပိကိန်းအချိန် + + + + + ဖိုနာဖဲအ်အချိန် + + + + + ရဲအူနီရွန်အချိန် + + + + + ရိုသီရာအချိန် + + + + + စဲက်ခါလီင်းအချိန် + စဲက်ခါလီင်းစံတော်ချိန် + စဲက်ခါလီးင်နွေရာသီအချိန် + + + + + ဆာမိုအာအချိန် + ဆာမိုအာစံတော်ချိန် + ဆာမိုအာနေ့အချိန် + + + + + ဆေးရှလ်အချိန် + + + + + စင်္ကာပူ စံတော်ချိန် + + + + + ဆိုလိုမွန်ကျွန်းစုအချိန် + + + + + တောင်ဂျော်ဂျီယာ အချိန် + + + + + စူးရီနာမ်အချိန် + + + + + ရှိုဝါအချိန် + + + + + တာဟီတီအချိန် + + + + + တိုင်ပေအချိန် + တိုင်ပေစံတော်ချိန် + တိုင်ပေနေ့ပိုင်းအချိန် + + + + + တာဂျီကစ္စတန်အချိန် + + + + + တိုကီလာဥ အချိန် + + + + + တွန်ဂါအချိန် + တွန်ဂါစံတော်ချိန် + တွန်ဂါနွေရာသီအချိန် + + + + + ချုခ်အချိန် + + + + + တာခ်မီန့စ်တန်အချိန် + တာခ်မီန့စ်တန်စံတော်ချိန် + တာခ်မီန့စ်တန်နွေရာသီအချိန် + + + + + ထူဗာလူအချိန် + + + + + ဥရုဂွေး အချိန် + ဥရုဂွေး စံတော်ချိန် + ဥရုဂွေး နွေရာသီ အချိန် + + + + + ဥဘက်ကစ္စတန် အချိန် + ဥဘက်ကစ္စတန် စံတော်ချိန် + ဥဘက်ကစ္စတန် နွေရာသီ အချိန် + + + + + ဗာနုအာတူအချိန် + ဗာနုအာတူစံတော်ချိန် + ဗာနုအာတူနွေရာသီအချိန် + + + + + ဗင်နီဇွဲလား အချိန် + + + + + ဗလာဒါဗိုစ်တိုခ်အချိန် + ဗလာဒါဗိုစ်တိုခ်စံတော်ချိန် + ဗလာဒါဗိုစ်တိုခ်နွေရာသီအချိန် + + + + + ဗိုလ်ဂိုဂရက်အချိန် + ဗိုလ်ဂိုဂရက်စံတော်ချိန် + ဗိုလ်ဂိုဂရက်နွေရာသီအချိန် + + + + + ဗိုစ်တိုခ်အချိန် + + + + + ဝိတ်ခ်ကျွန်းအချိန် + + + + + ဝေါလီစ်နှင့် + + + + + ယူခူးတ်စ်အချိန် + ယူခူးတ်စ်စံတော်ချိန် + ယူခူးတ်စ်နွေရာသီအချိန် + + + + + ရယ်ခါးတီရင်ဘားခ်အချိန် + ရယ်ခါးတီရင်ဘားခ်စံတော်ချိန် + ရယ်ခါးတီရင်ဘာခ်နွေရာသီအချိန် + + + + + + mymr + + mymr + + + . + , + ; + % + + + - + E + × + + + ဂဏန်းမဟုတ်သော + + + + + + + + #,##0.### + + + + + 0ထောင် + 0သောင်း + 0သိန်း + 0သန်း + 0ကုဋေ + 00ကုဋေ + 000ကုဋေ + 0000ကုဋေ + 00000ကုဋေ + 000000ကုဋေ + 0000000ကုဋေ + 0ကောဋိ + + + + + 0ထောင် + 0သောင်း + 0သိန်း + 0သန်း + 0ကုဋေ + 00ကုဋေ + ကုဋေ000 + ကုဋေ0000 + 0000ကုဋေ + ကုဋေ0သိန်း + ကုဋေ0သန်း + 0ကောဋိ + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + ¤ #,##0.00 + + + {0} {1} + + + + အာရပ်ဒူဟမ်း + အာရပ်ဒူဟမ်း + + + အာဖဂန်အာဖဂါနီ + အာဖဂန်အာဖဂါနီ + + + အယ်လ်ဘီးနီးယားလီခ် + အယ်လ်ဘီးနီးယားလီခ် + + + အာမေးနီးယားဒရမ်း + အာမေးနီးယားဒရမ်း + + + နယ်သာလန် အန်တီလန် ဂင်းဒါး + နယ်သာလန် အန်တီလန် ဂင်းဒါး + + + အင်ဂိုလာ ကန်ဇာ + အင်ဂိုလာ ကန်ဇာ + + + အာဂျင်တီးနား ပီဆို (၁၉၈၃–၁၉၈၅) + + + အာဂျင်တီးနား ပီဆို + အာဂျင်တီးနား ပီဆို + + + ဩစတြေးလျ ဒေါ်လာ + ဩစတြေးလျ ဒေါ်လာ + A$ + + + အရူဘန် ဂင်းဒါး + + + အဇာဘိုင်ဂျန်မာနတ် + အဇာဘိုင်ဂျန်မာနတ် + + + ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနားမတ်က် + ဘော့စနီးယား နှင့် ဟာဇီဂိုဘီးနားမတ်က် + + + ဘာဘဒီယံဒေါ်လာ + ဘာဘဒီယံဒေါ်လာ + + + ဘင်္ဂလားဒေ့ရှ် တာကာ + ဘင်္ဂလားဒေ့ရှ် တာကာ + + + ဘယ်လ်ဂျီယမ် ဖရန့် + + + ဘူဂေးရီးယားလက်ဖ် + ဘူဂေးရီးယားလက်ဖ် + + + ဘာရိန်းဒီနား + ဘာရိန်းဒီနား + + + ဘူရွန်ဒီ ဖရန့် + ဘူရွန်ဒီ ဖရန့် + + + ဘာမူဒါ ဒေါ်လာ + ဘာမူဒါ ဒေါ်လာ + + + ဘရူနိုင်း ဒေါ်လာ + ဘရူနိုင်း ဒေါ်လာ + + + ဘိုလီဘီယံ ဘိုလီဘီအားနို + ဘိုလီဘီယံ ဘိုလီဘီအားနိုစ် + + + ဘိုလီးဘီးယား ပီဆို + + + ဘရာဇီး ရီးယဲ + ဘရာဇီး ရီးယဲ + R$ + + + ဘဟားမား ဒေါ်လာ + ဘဟားမား ဒေါ်လာ + + + ဘူတန်အံဂါလ်ထရန် + ဘူတန်အံဂါလ်ထရန် + + + ဗမာ ကျပ် + + + ဘော့စ်ဝါနာ ပုလ + + + ဘီလာရုစ် ရူဘယ်အသစ် (၁၉၉၄–၁၉၉၉) + + + ဘီလာရုစ် ရူဘယ် + ဘီလာရုစ် ရူဘယ် + + + ဘေလီဇ် ဒေါ်လာ + ဘေလီဇ် ဒေါ်လာ + + + ကနေဒါ ဒေါ်လာ + ကနေဒါ ဒေါ်လာ + CA$ + + + ကွန်ဂို ဖရန့် + ကွန်ဂို ဖရန့် + + + ဆွစ် ဖရန့် + ဆွစ် ဖရန့် + + + ချီလီ ပီဆို + ချီလီ ပီဆို + + + တရုတ် ယွမ် + တရုတ် ယွမ် + CN¥ + + + ကိုလံဘီယာ ပီဆို + ကိုလံဘီယာ ပီဆို + + + ကော့စ်တာရီကာ ခိုလုံး + ကော့စ်တာရီကာ ခိုလုံး + + + နိုင်ငျံခားငွေလဲလှယ်နိုင်သော ကျူးဘားပီဆို ငွေ။ + နိုင်ငျံခားငွေလဲလှယ်နိုင်သော ကျူးဘားပီဆို ငွေ။ + + + ကျူးဘား ပီဆို + + + ခေ့ပ်ဗာဒူ အက်စ်ခူဒို + ခေ့ပ်ဗာဒူ အက်စ်ခူဒို + + + ဆိုက်ပရက်စ် ပေါင် + + + ချက်ခိုရိုနာ + ချက်ခိုရိုနာ + + + ဂျာမဏီ မတ် + + + ဂျီဘူတီ ဖရန့် + ဂျီဘူတီ ဖရန့် + + + ဒိန်းမတ်ခရိုဏာ + ဒိန်းမတ် ခရိုဏာ + + + ဒိုမီနီကန် ပီဆို + + + အဲလ်ဂျီရီယန် ဒီနာ + အဲလ်ဂျီရီယန် ဒီနာ + + + အီဂျစ် ပေါင် + အီဂျစ် ပေါင် + + + အီရီတရီအာနာ့ခ်ဖာ + အီရီတရီအာနာ့ခ်ဖာ + + + စပိန် ပယ်စေးတာ + + + အီသီယိုးပီးယားဘီးယာ + အီသီယိုးပီးယားဘီးယာ + + + ယူရို + ယူရို + + + + ဖီဂျီ ဒေါ်လာ + ဖီဂျီ ဒေါ်လာ + + + ဖောက်ကလန် ကျွန်းစု ပေါင် + ဖောက်ကလန် ကျွန်းစု ပေါင် + + + ပြင်သစ် ဖရန့် + + + ဗြိတိသျှ ပေါင် + ဗြိတိသျှ ပေါင် + £ + + + ဂျော်ဂျီယာလားရီ + ဂျော်ဂျီယာလားရီ + + + ဂါနာ ဆဲဒီ + ဂါနာ ဆဲဒီ + + + ဂျီဘရော်လ်တာ ပေါင် + + + ဂန်ဘီယာ ဒါလာစီ + ဂန်ဘီယာ ဒါလာစီ + + + ဂီးနီ ဖရန့် + ဂီရာနာ ဖရန့် + + + ဂွာတီမာလာ ခက်ဇော်လ် + ဂွာတီမာလာ ခက်ဇော်လ် + + + ဂူရာနာ ဒေါ်လာ + ဂူရာနာ ဒေါ်လာ + + + ဟောင်ကောင် ဒေါ်လာ + HK$ + + + ဟွန်ဒူးရပ်စ် လန်းပီးရာ + ဟွန်ဒူးရပ်စ် လန်းပီးရာ + + + ခရိုအေးရှားခူးနာ + ခရိုအေးရှားခူးနာ + + + ဟေတီဂူးအော်ဒ် + ဟေတီဂူးအော်ဒ် + + + ဟန်ဂေရီယံဖော်ရင့်တ် + ဟန်ဂေရီယံဖော်ရင့်တ် + + + အင်ဒိုနီးရှား ရူပီးယား + အင်ဒိုနီးရှား ရူပီးယား + + + အစ္စရေး ပေါင် + + + အစ္စရေးရှဲကလ်အသစ် + အစ္စရေးရှဲကလ်အသစ် + + + + အိန္ဒိယ ရူပီး + အိန္ဒိယ ရူပီး + + + + အီရပ်ဒီနား + အီရပ်ဒီနား + + + အီရန်ရီအော်လ် + အီရန်ရီအော်လ် + + + အိုက်စလန် ခရိုဏာ + အိုက်စလန် ခရိုဏာ + + + ဂျမေကာ ဒေါ်လာ + + + ဂျော်ဒန်ဒီနား + ဂျော်ဒန်ဒီနား + + + ဂျပန်ယန်း + ဂျပန်ယန်း + JP¥ + + + ကင်ညာသျှီလင် + ကင်ညာသျှီလင် + + + ခရူဂစ်စတန်ဆော်မ် + ခရူဂစ်စတန်ဆော်မ် + + + ကမ္ဘောဒီးယား ရီးယဲ + ကမ္ဘောဒီးယား ရီးယဲ + + + ကိုမိုရိုစ် ဖရန့် + ကိုမိုရိုစ် ဖရန့် + + + မြောက်ကိုးရီးယား ဝမ် + မြောက်ကိုးရီးယား ဝမ် + + + တောင်ကိုးရီးယား ဝမ် + တောင်ကိုးရီးယား ဝမ် + + + + ကူဝိတ်ဒီနာ + ကူဝိတ်ဒီနာ + + + ကေမန် ကျွန်းစု ဒေါ်လာ + ကေမန် ကျွန်းစု ဒေါ်လာ + + + ခရူဂစ်စတန်ထိန်ဂျီ + ခရူဂစ်စတန်ထိန်ဂျီ + + + လာအိုခိပ် + လာအိုခိပ် + + + လက်ဘနွန် ပေါင် + လက်ဘနွန် ပေါင် + + + သီရိလင်္ကာ ရူပီး + သီရိလင်္ကာ ရူပီး + + + လိုင်ဘေးရီးယား ဒေါ်လာ + လိုင်ဘေးရီးယား ဒေါ်လာ + + + လစ်သူယေးနီးယားလီတားစ် + လစ်သူယေးနီးယားလီတားစ် + + + လတ်ဗီးယားလတ် + လတ်ဗီးယားလတ် + + + လီဗျာ ဒီနာ + လီဗျာ ဒီနာ + + + မိုရိုကို ဒရမ် + မိုရိုကို ဒရမ် + + + မောလ်ဒိုဗာလယ်အို + မောလ်ဒိုဗာလယ်အို + + + မလာဂစ်စီ အရီရရီ ငွေႀကး။ + မလာဂစ်စီ အရီရရီ ငွေႀကး။ + + + မာစီဒိုးနီးယားဒီနာ + မာစီဒိုးနီးယားဒီနာ + + + မြန်မာကျပ် + မြန်မာကျပ် + K + + + မွန်ဂိုးလီးယားထူးဂရခ် + မွန်ဂိုးလီးယားထူးဂရခ် + + + မကာအိုပါတားကား + မကာအိုပါတားကား + + + မောရီတာနီအာအူဂီးယာ + မောရီတာနီအာအူဂီးယာ + + + မော်ရေရှားစ် ရူပီ + မော်ရေရှားစ် ရူပီ + + + မော်လ်ဒိုက်ရူးဖီရာ + မော်လ်ဒိုက်ရူးဖီရာ + + + မာလာဝီခွါးချာ + မာလာဝီခွါးချာ + + + မက္ကဆီကို ပီဆို + မက္ကဆီကို ပီဆို + MX$ + + + မလေးရှား ရင်းဂစ် + မလေးရှား ရင်းဂစ် + + + မိုဇန်ဘစ်မက်တီခယ်လ် + မိုဇန်ဘစ်မက်တီခယ်လ် + + + နမ်မီးဘီးယား ဒေါ်လာ + နမ်မီးဘီးယား ဒေါ်လာ + + + နိုင်ဂျီးရီးယားနိုင်းရာ + နိုင်ဂျီးရီးယားနိုင်းရာ + + + နီကာရာဂွာ ခိုးဒိုဘာ + နီကာရာဂွာ ခိုးဒိုဘာ + + + နော်ဝေ ခရိုဏာ + နော်ဝေ ခရိုဏာ + + + နီပေါ ရူပီး + နီပေါ ရူပီး + + + နယူးဇီလန် ဒေါ်လာ + နယူးဇီလန် ဒေါ်လာ + NZ$ + + + အိုမန်ရီအော်လ် + အိုမန်ရီအော်လ် + + + ပနားမား ဘလ်ဘိုးအာ + ပနားမား ဘလ်ဘိုးအာ + + + ပီရူး နူအီဗိုဆိုးလ် + ပီရူး နူအီဗိုဆိုးလ် + + + ပါပူရာနယူးဂီနီခီးနာ + ပါပူရာနယူးဂီနီခီးနာ + + + ဖိလစ်ပိုင် ပီဆို + ဖိလစ်ပိုင် ပီဆို + + + ပါကစ္စတန် ရူပီး + + + ပိုလန် ဇ‌လော့တီ + ပိုလန် ဇ‌လော့တီ + + + ပါရာဂွေးဂွါးအ်နီး + ပါရာဂွေးဂွါးအ်နီး + + + ကာတာရီအော်လ် + ကာတာရီအော်လ် + + + ရိုမေးနီယားလယ်အို + ရိုမေးနီယားလယ်အို + + + ဆားဘီးယားဒယ်နား + ဆားဘီးယားဒယ်နား + + + ရုရှ ရူဘယ် + + + ရုရှ ရူဘယ် (၁၉၉၁–၁၉၉၈) + + + ရဝန်ဒါ ဖရန့် + ရဝန်ဒါ ဖရန့် + + + ဆော်ဒီအာရေးဗီးယားရီယော်လ် + ဆော်ဒီအာရေးဗီးယားရီယော်လ် + + + ဆော်လမွန်ကျွန်းစု ဒေါ်လာ + ဆော်လမွန်ကျွန်းစု ဒေါ်လာ + + + ဆေးရှလ်ရူးပီး + ဆေးရှလ်ရူးပီး + + + ဆူဒန် ပေါင် + ဆူဒန် ပေါင် + + + ဆူဒန် ပေါင်အဟောင်း + + + ဆွီဒင် ခရိုဏာ + ဆွီဒင် ခရိုဏာ + + + စင်္ကာပူ ဒေါ်လာ + စင်္ကာပူ ဒေါ်လာ + + + စိန့်ဟဲလီနာ ပေါင် + စိန့်ဟဲလီနာ ပေါင် + + + ဆီအဲရာ လီအိုနီယန် လီအိုနီ + ဆီအဲရာ လီအိုနီယန် လီအိုနီ + + + ဆိုမာလီသျှီလင် + ဆိုမာလီသျှီလင် + + + ဆူရီနိမ်း ဒေါ်လာ + ဆူရီနိမ်း ဒေါ်လာ + + + တောင်ဆူဒန်ပေါင် + တောင်ဆူဒန်ပေါင် + + + စိန့်တိုမီနှင့်ပရင်စီပ့် ဒိုဘရာ + စိန့်တိုမီနှင့်ပရင်စီပ့် ဒိုဘရာ + + + ဆိုဗီယက် ရူဗယ် + + + ဆီးရီးယား ပေါင် + ဆီးရီးယား ပေါင် + + + စွာဇီလန်လီလန်းဂီနီ + စွာဇီလန်လီလန်းဂီနီ + + + ထိုင်းဘတ် + ထိုင်းဘတ် + ฿ + + + တာဂျီကစ္စတန်ဆိုမိုနီ + တာဂျီကစ္စတန်ဆိုမိုနီ + + + တာခ်မီန့စ်တန်မာနတ် + တာခ်မီန့စ်တန်မာနတ် + + + တူနီရှားဒီနာ + တူနီရှားဒီနာ + + + တွန်ဂါဗန်ဂါ + တွန်ဂါဗန်ဂါ + + + ရှေးဟောင်းတူရကီ လိုင်ရာ + + + တူရကီ လိုင်ရာ + တူရကီ လိုင်ရာ + + + ထရိုင်နီဒတ်နှင့်တိုဘာဂိုဒေါ်လာ + တရီနာဒတ်နှင့်တိုဘာဂိုဒေါ်လာ + + + ထိုင်ဝမ် ဒေါ်လာအသစ် + ထိုင်ဝမ် ဒေါ်လာအသစ် + NT$ + + + တန်ဇန်းနီးယားသျှီလင် + တန်ဇန်းနီးယားသျှီလင် + + + ယူကရိန်း + + + + ယူဂန္ဓာသျှီလင် + ယူဂန္ဓာသျှီလင် + + + အမေရိကန် ဒေါ်လာ + အမေရိကန် ဒေါ်လာ + US$ + + + အမေရိကန် ဒေါ်လာ (နောက်နေ့) + + + အမေရိကန် ဒေါ်လာ (တနေ့တည်း) + + + ဥရုဂွေးပီဆို + ဥရုဂွေးပီဆို + + + ဥဘက်ကစ္စတန်ဆော်မ် + ဥဘက်ကစ္စတန်ဆော်မ် + + + ဗင်နီဇွဲလား ဘိုလီဗာ + ဗင်နီဇွဲလား ဘိုလီဗာ + + + ဗီယက်နမ် ဒေါင် + ဗီယက်နမ် ဒေါင် + + + + ဗာနုအာတူဗားထူ + ဗာနုအာတူဗားထူ + + + စမိုအထားလာ + စမိုအထားလာ + + + ကင်မရွန်းဖရန့် + ကင်မရွန်းဖရန့် + FCFA + + + ငွေ + + + ရွှေ + + + ဥရောပငွေကြေးစံနစ် + + + အရှေ့ကာရီဘီယံဒေါ်လာ + အရှေ့ကာရီဘီယံဒေါ်လာ + EC$ + + + အထူးထုတ်ယူခွင့် + + + အိုင်ဗရီးကိုးစ်ဖရန့် + အိုင်ဗရီးကိုးစ်ဖရန့် + CFA + + + XPFဖရန့် + XPFဖရန့် + CFPF + + + ပလက်တီနမ် + + + စမ်းသပ် ငွေကြေး ကုဒ် + + + မသိသို့မဟုတ်မရှိသောငွေကြေး + မသိ သို့မဟုတ် မရှိသော ငွေကြေး + + + ယီမင်ရီအော်လ် + ယီမင်ရီအော်လ် + + + တောင်အဖရိက ရန်း + တောင်အဖရိက ရန်း + + + ဇင်ဘာဘွေခွါးချာ + ဇင်ဘာဘွေခွါးချာ + + + ဇင်ဘာဘွေ ဒေါ်လာ + + + + ⩾{0} + {0}–{1} + + + + + + {0}လျှင်{1}နှုန်း + + + {0} ဆွဲငင်အား + + + {0}မိနစ် + + + {0}စက္ကန့် + + + {0}ဒီဂရီ + + + {0}ဧက + + + {0} ဟက်တာ + + + {0}စတုရန်းပေ + + + {0}စတုရန်းကီလိုမီတာ + + + {0}စတုရန်းမီတာ + + + {0}စတုရန်းမိုင် + + + {0}ရက် + + + {0}နာရီ + + + {0}မီလီစက္ကန့် + + + {0} မိနစ် + + + {0}လ + + + {0} စက္ကန့် + + + {0}ပတ် + + + {0}နှစ် + + + {0} စင်တီမီတာ + + + {0} ပေ + + + {0} လက်မ + + + {0} ကီလိုမီတာ + + + {0} အလင်းနှစ် + + + {0}မီတာ + + + {0} မိုင် + + + {0} မီလီမီတာ + + + {0} ပီကိုမီတာ + + + {0} ကိုက် + + + {0} ဂရမ် + + + {0}ကီလိုဂရမ် + + + {0}အောင်စ + + + {0}ပေါင် + + + {0}မြင်ကောင်ရေအား + + + {0}ကီလိုဝပ် + + + {0}ဝပ် + + + {0}ဟက်တိုပါစကယ် + + + ပွဒါး{0}လက်မ + + + {0}မီလီဘား + + + တစ်နာရီလျှင်{0}ကီလိုမီတာနှုန်း + + + တစ်စက္ကန့်လျှင်{0}မီတာနှုန်း + + + တစ်နာရီလျှင်{0}မိုင်နှုန်း + + + {0}စင်တီဂရိတ် + + + {0}ဖာရင်ဟိုက် + + + {0} ကုဗကီလိုမီတာ + + + {0}ကုဗမိုင် + + + {0}လီတာ + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0}ရက် + + + {0}နာရီ + + + {0} ms + + + {0}မိနစ် + + + {0}လ + + + {0} s + + + {0}ပတ် + + + {0} y + + + {0} cm + + + {0} ပေ + + + {0} လက်မ + + + {0} km + + + {0} အလင်းနှစ် + + + {0} m + + + {0}မိုင် + + + {0} mm + + + {0} pm + + + {0} ကိုက် + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0} km/h + + + {0} m/s + + + {0} mi/h + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0}ရက် + + + {0}နာရီ + + + {0} ms + + + {0}မိနစ် + + + {0}လ + + + {0} s + + + {0}ပတ် + + + {0} y + + + {0} cm + + + {0} ' + + + {0} ″ + + + {0} km + + + {0} အလင်းနှစ် + + + {0} m + + + {0}မိုင် + + + {0} mm + + + {0} pm + + + {0} ကိုက် + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0} km/h + + + {0} m/s + + + {0} mi/h + + + {0}° + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, နှင့်{1} + {0}နှင့်{1} + + + {0}, {1} + {0}, {1} + {0}, နှင့်{1} + {0}နှင့်{1} + + + {0}, {1} + {0}, {1} + {0}, နှင့်{1} + {0}နှင့်{1} + + + {0}, {1} + {0}, {1} + {0}, နှင့်{1} + {0}နှင့်{1} + + + + + ဟုတ်တယ် + မဟုတ်ဘူး + + + + diff --git a/library/Zend/Locale/Data/my_MM.xml b/library/Zend/Locale/Data/my_MM.xml new file mode 100755 index 000000000..ccd4fc64e --- /dev/null +++ b/library/Zend/Locale/Data/my_MM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/naq.xml b/library/Zend/Locale/Data/naq.xml new file mode 100755 index 000000000..9a7f7782c --- /dev/null +++ b/library/Zend/Locale/Data/naq.xml @@ -0,0 +1,762 @@ + + + + + + + + + + + + Akangowab + Amharicgowab + Arabiǁî gowab + Belarusanǁî gowab + Bulgariaǁî gowab + Bengaliǁî gowab + Czechǁî gowab + Duits + Xriks + Engels + Spaans + Persiaǁî gowab + Frans + Hausagowab + Hindigowab + Hungariaǁî gowab + Indonesiaǁî gowab + Igbogowab + Italians + Japanees + Javanese + Khmerǁî gowab, Central + Koreaǁî gowab + Malayǁî gowab + Burmesǁî gowab + Khoekhoegowab + Nepalǁî gowab + Hollands + Punjabigowab + Poleǁî gowab + Portugees + Romaniaǁî gowab + Russiaǁî gowab + Rwandaǁî gowab + Somaliǁî gowab + Swedeǁî gowab + Tamilǁî gowab + Thaiǁî gowab + Turkeǁî gowab + Ukrainiaǁî gowab + Urduǁî gowab + Vietnamǁî gowab + Yorubab + Chineesǁî gowab, Mandarinni + Zulub + + + Andorrab + United Arab Emirates + Afghanistanni + Antiguab tsî Barbudab + Anguillab + Albaniab + Armeniab + Netherlands Antilles + Angolab + Argentinab + Americab Samoab + Austriab + Australieb + Arubab + Azerbaijanni + Bosniab tsî Herzegovinab + Barbados + Banglades + Belgiummi + Burkina Fasob + Bulgariab + Bahrain + Burundib + Benins + Bermudas + Brunei + Boliviab + Braziliab + Bahamas + Bhutans + Botswanab + Belarus + Belize + Kanadab + Democratic Republic of the Congo + Central African Republiki + Congob + Switzerlandi + Ivoorkusi + Cook Islands + Chilib + Cameroonni + Chinab + Colombiab + Costa Rica + Cubab + Cape Verde Islands + Cyprus + Czech Republiki + Duitslandi + Djibouti + Denmarki + Dominicab + Dominican Republic + Algeriab + Ecuadori + Estoniab + Egipteb + Eritreab + Spanieb + Ethiopiab + Finlandi + Fijib + Falkland Islands + Micronesia + Frankreiki + Gaboni + United Kingdom + Grenada + Georgiab + French Guiana + Ghanab + Gibraltar + Greenland + Gambiab + Guineab + Guadeloupe + Equatorial Guineab + Xrikelandi + Guatemala + Guam + Guinea-Bissau + Guyana + Honduras + Croatiab + Haiti + Hongareieb + Indonesiab + Irlandi + Israeli + Indiab + British Indian Ocean Territory + Iraqi + Iranni + Iceland + Italiab + Jamaicab + Jordanni + Japanni + Kenyab + Kyrgyzstanni + Cambodiab + Kiribati + Comoros + Saint Kitts and Nevis + Koreab, Noord + Koreab, Suid + Kuwaiti + Cayman Islands + Kazakhstanni + Laos + Lebanonni + Saint Lucia + Liechtensteinni + Sri Lankab + Liberiab + Lesothob + Lithuaniab + Luxembourgi + Latvia + Libyab + Morocco + Monaco + Moldova + Madagascari + Marshall Islands + Macedoniab + Malib + Myanmar + Mongolia + Northern Mariana Islands + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawib + Mexicob + Malaysiab + Mozambiki + Namibiab + New Caledonia + Nigeri + Norfolk Island + Nigerieb + Nicaraguab + Netherlands + Noorweeb + Nepali + Nauru + Niue + New Zealandi + Oman + Panama + Perub + French Polynesia + Papua New Guineab + Philippinni + Pakistanni + Polandi + Saint Pierre and Miquelon + Pitcairn + Puerto Rico + Palestinian West Bank and Gaza + Portugali + Palau + Paraguaib + Qatar + Réunion + Romania + Rasiab + Rwandab + Saudi Arabiab + Solomon Islands + Seychelles + Sudanni + Swedeb + Singapore + Saint Helena + Slovenia + Slovakia + Sierra Leone + San Marino + Senegali + Somaliab + Suriname + São Tomé and Príncipe + El Salvadori + Syriab + Swazilandi + Turks and Caicos Islands + Chadi + Togob + Thailandi + Tajikistan + Tokelau + East Timor + Turkmenistan + Tunisiab + Tonga + Turkeieb + Trinidad and Tobago + Tuvalu + Taiwan + Tanzaniab + Ukraine + Ugandab + Amerikab + Uruguaib + Uzbekistan + Vatican State + Saint Vincent and the Grenadines + Venezuelab + British Virgin Islands + U.S. Virgin Islands + Vietnammi + Vanuatu + Wallis and Futuna + Samoa + Yemen + Mayotte + Suid Afrikab + Zambiab + Zimbabweb + + + + [a â b c d e f g h i î k m n o ô p q r s t u û w x y z ǀ ǁ ǂ ǃ] + [j l v] + [A B C D E F G H I K M N O P Q R S T U W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + + + ǃKhanni + ǃKhanǀgôab + ǀKhuuǁkhâb + ǃHôaǂkhaib + ǃKhaitsâb + Gamaǀaeb + ǂKhoesaob + Aoǁkhuumûǁkhâb + Taraǀkhuumûǁkhâb + ǂNûǁnâiseb + ǀHooǂgaeb + Hôasoreǁkhâb + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Son + Ma + De + Wu + Do + Fr + Sat + + + Sontaxtsees + Mantaxtsees + Denstaxtsees + Wunstaxtsees + Dondertaxtsees + Fraitaxtsees + Satertaxtsees + + + + + S + M + E + W + D + F + A + + + + + + + KW1 + KW2 + KW3 + KW4 + + + 1ro kwartals + 2ǁî kwartals + 3ǁî kwartals + 4ǁî kwartals + + + + + + + ǁgoagas + ǃuias + + + + + + Xristub aiǃâ + Xristub khaoǃgâ + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + ǁAeǃgâs + + + Kurib + + + ǁKhâb + + + Wekheb + + + Tsees + Neetsee + + + Wekheb tsees + + + ǁgoas/ǃuis + + + Iiri + + + Haib + + + ǀGâub + + + ǁAeb ǀharib + + + + + + + + ¤#,##0.00 + + + + + + United Arab Emirates Dirham + + + Angolan Kwanzab + + + Australian Dollari + + + Bahrain Dinar + + + Burundi Franc + + + Botswanan Pulab + + + Canadian Dollari + + + Congolese Franc + + + Swiss Franci + + + Chinese Yuan Renminbi + + + Escudo Caboverdiano + + + Djibouti Franc + + + Algerian Dinar + + + Egytian Ponds + + + Eritreian Nakfa + + + Ethiopian Birr + + + Eurob + + + British Ponds + + + Ghana Cedi + + + Gambia Dalasi + + + Guinea Franc + + + Indian Rupee + + + Japanese Yenni + + + Kenyan Shilling + + + Comorian Franc + + + Liberian Dollar + + + Lesotho Loti + + + Libyan Dinar + + + Moroccan Dirham + + + Malagasy Franc + + + Mauritania Ouguiya + + + Mauritius Rupeeb + + + Malawian Kwachab + + + Mozambique Metical + + + Namibia Dollari + $ + + + Nigerian Naira + + + Rwanda Franci + + + Saudi Riyal + + + Seychelles Rupee + + + Sudanese Dinar + + + Sudanese Ponds + + + St Helena Ponds + + + Leone + + + Somali Shillings + + + Sao Tome and Principe Dobra + + + Lilangeni + + + Tunisian Dinar + + + Tanzanian Shillings + + + Ugandan Shillings + + + US Dollari + + + CFA Franc BEAC + + + CFA Franc BCEAO + + + South African Randi + + + Zambian Kwachab (1968–2012) + + + Zambian Kwachab + + + Zimbabwe Dollari + + + + + + Îi:Î + Hî-î:H + + + + diff --git a/library/Zend/Locale/Data/naq_NA.xml b/library/Zend/Locale/Data/naq_NA.xml new file mode 100755 index 000000000..c02cae9fe --- /dev/null +++ b/library/Zend/Locale/Data/naq_NA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nb.xml b/library/Zend/Locale/Data/nb.xml new file mode 100755 index 000000000..8ca61ba87 --- /dev/null +++ b/library/Zend/Locale/Data/nb.xml @@ -0,0 +1,5602 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abkhasisk + achinesisk + acoli + adangme + adyghe + avestisk + afrikaans + afrihili + aghem + ainu + akan + akkadisk + aleutisk + søraltaisk + amharisk + aragonsk + gammelengelsk + angika + arabisk + moderne standard arabisk + arameisk + araukansk + arapaho + arawak + assamisk + asu + asturisk + avarisk + awadhi + aymara + aserbajdsjansk + azeri + basjkirsk + baluchi + balinesisk + basa + bamun + ghomala + hviterussisk + beja + bemba + bena + bafut + bulgarsk + bhojpuri + bislama + bikol + bini + kom + siksika + bambara + bengali + tibetansk + bretonsk + braj + bodo + bosnisk + akose + buriat + buginesisk + bulu + blin + medumba + katalansk + caddo + karibisk + cayuga + atsam + tsjetsjensk + cebuansk + kiga + chamorro + chibcha + chagatai + chuukesisk + mari + chinook + choctaw + chipewiansk + cherokee + cheyenne + kurdisk (sorani) + korsikansk + koptisk + cree + krimtatarisk + tsjekkisk + kasjubisk + kirkeslavisk + tsjuvansk + walisisk + dansk + dakota + dargwa + taita + tysk + østerriksk tysk + sveitsisk høytysk + delaware + slavisk + dogrib + dinka + zarma + dogri + lavsorbisk + duala + mellomnederlandsk + divehi + jola-fonyi + dyula + dzongkha + dazaga + kiembu + ewe + efik + gammelegyptisk + ekajuk + gresk + elamittisk + engelsk + australsk engelsk + canadisk engelsk + britisk engelsk + engelsk – britisk + amerikansk engelsk + engelsk – USA + mellomengelsk + esperanto + spansk + latinamerikansk spansk + europeisk spansk + meksikansk spansk + estisk + baskisk + ewondo + persisk + fang + fanti + fulani + finsk + filippinsk + fijiansk + færøysk + fon + fransk + canadisk fransk + sveitsisk fransk + mellomfransk + gammelfransk + nordfrisisk + østfrisisk + friuliansk + vestfrisisk + irsk + ga + gayo + gbaya + skotsk gælisk + ges + kiribatisk + galisisk + mellomhøytysk + guarani + gammelhøytysk + gondi + gorontalo + gotisk + grebo + gammelgresk + sveitsertysk + gujarati + gusii + manx + gwichin + hausa + haida + hawaiisk + hebraisk + hindi + hiligaynon + hettittisk + hmong + hiri motu + kroatisk + høysorbisk + haitisk + ungarsk + hupa + armensk + herero + interlingua + iban + ibibio + indonesisk + interlingue + ibo + sichuan-yi + inupiak + iloko + ingusjisk + ido + islandsk + italiensk + inuktitut + japansk + lojban + ngomba + machame + jødepersisk + jødearabisk + javanesisk + georgisk + karakalpakisk + kabylsk + kachin + jju + kamba + kawi + kabardisk + kanembu + tyap + makonde + kappverdisk + koro + kikongo + khasi + khotanesisk + koyra chiini + kikuyu + kuanyama + kasakhisk + kako + grønlandsk + kalenjin + khmer + kimbundu + kannada + koreansk + konkani + kosraeansk + kpelle + kanuri + karachay-balkar + karelsk + kurukh + kasjmiri + shambala + bafia + kølnsk + kurdisk + kumyk + kutenai + komi + kornisk + kirgisisk + latin + ladinsk + langi + lahnda + lamba + luxemburgsk + lezghian + ganda + limburgisk + lingala + laotisk + mongo + lozi + litauisk + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + oluluyia + latvisk + maduresisk + mafa + magahi + maithili + makasar + mandingo + masai + maba + moksha + mandar + mende + meru + mauritisk-kreolsk + madagassisk + mellomirsk + makhuwa-meetto + meta' + marshallesisk + maori + micmac + minangkabau + makedonsk + malayalam + mongolsk + mandsju + manipuri + mohawk + mossi + marathi + malayisk + maltesisk + mundang + flere språk + creek + mirandesisk + marwari + burmesisk + myene + erzya + nauru + napolitansk + nama + norsk bokmål + nord-ndebele + lavtysk + nepalsk + newari + ndonga + nias + niueansk + nederlandsk + flamsk + kwasio + norsk nynorsk + ngiemboon + norsk + nogai + gammelnorsk + nkå + sør-ndebele + nord-sotho + nuer + navajo + klassisk newari + nyanja + nyamwezi + nyankole + nyoro + nzima + oksitansk + ojibwa + oromo + oriya + ossetisk + osage + ottomansk tyrkisk + panjabi + pangasinan + pahlavi + pampanga + papiamento + palauisk + gammelpersisk + fønikisk + pali + polsk + ponapisk + gammelprovençalsk + pashto + pushto + portugisisk + brasiliansk portugisisk + europeisk portugisisk + quechua + rajasthani + rapanui + rarotongansk + retoromansk + rundi + rumensk + moldavisk + rombo + romani + rot + russisk + aromansk + kinjarwanda + rwa + sanskrit + sandawe + jakutsk + samaritansk arameisk + samburu + sasak + santali + ngambay + sangu + sardinsk + siciliansk + skotsk + sindhi + nordsamisk + seneca + sena + selkupisk + koyraboro senni + sango + gammelirsk + serbokroatisk + tachelhit + shan + Tsjad-arabisk + singalesisk + sidamo + slovakisk + slovensk + samoansk + sørsamisk + lulesamisk + enaresamisk + skoltesamisk + shona + soninke + somali + sogdisk + albansk + serbisk + sranan tongo + serer + swati + saho + sør-sotho + sundanesisk + sukuma + susu + sumerisk + svensk + swahili + komorisk + kongolesisk swahili + klassisk syrisk + syrisk + tamil + telugu + temne + teso + tereno + tetum + tadsjikisk + thai + tigrinja + tigré + tiv + turkmensk + tokelau + tagalog + klingon + tlingit + tamasjek + setswana + tongansk + nyasa-tongansk + tok pisin + tyrkisk + taroko + tsonga + tsimshian + tatarisk + tumbuka + tuvalu + twi + tasawaq + tahitisk + tuvinisk + sentralmarokkansk tamazight + udmurt + uigurisk + ugaritisk + ukrainsk + umbundu + ukjent språk + urdu + usbekisk + vai + venda + vietnamesisk + volapyk + votisk + vunjo + vallonsk + walser + walamo + waray + washo + wolof + kalmyk + xhosa + soga + yao + yapesisk + yangben + yemba + jiddisk + joruba + kantonesisk + zhuang + zapotec + blissymboler + zenaga + standard marrokansk tamazight + kinesisk + forenklet kinesisk + tradisjonell kinesisk + zulu + zuni + uten språklig innhold + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + verden + Afrika + Nord-Amerika + Sør-Amerika + Oseania + Vest-Afrika + Sentral-Amerika + Øst-Afrika + Nord-Afrika + Sentral-Afrika + Sørlige Afrika + Amerika + Nordlige Amerika + Karibia + Øst-Asia + Sør-Asia + Sørøst-Asia + Sør-Europa + Australasia + Melanesia + Mikronesia + Polynesia + Asia + Sentral-Asia + Vest-Asia + Europa + Øst-Europa + Nord-Europa + Vest-Europa + Latin-Amerika + Ascension + Andorra + De forente arabiske emirater + Afghanistan + Antigua og Barbuda + Anguilla + Albania + Armenia + De nederlandske antiller + Angola + Antarktis + Argentina + Amerikansk Samoa + Østerrike + Australia + Aruba + Åland + Aserbajdsjan + Bosnia-Hercegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei Darussalam + Bolivia + Karibisk Nederland + Brasil + Bahamas + Bhutan + Bouvetøya + Botswana + Hviterussland + Belize + Canada + Kokosøyene + Kongo-Kinshasa + Den demokratiske republikken Kongo + Den sentralafrikanske republikk + Kongo-Brazzaville + Republikken Kongo + Sveits + Elfenbenskysten + Cookøyene + Chile + Kamerun + Kina + Colombia + Clippertonøya + Costa Rica + Cuba + Kapp Verde + Curaçao + Christmasøya + Kypros + Tsjekkia + Tyskland + Diego Garcia + Djibouti + Danmark + Dominica + Den dominikanske republikk + Algerie + Ceuta og Melilla + Ecuador + Estland + Egypt + Vest-Sahara + Eritrea + Spania + Etiopia + Den europeiske union + Finland + Fiji + Falklandsøyene + Mikronesiaføderasjonen + Færøyene + Frankrike + Gabon + Storbritannia + Storbritannia + Grenada + Georgia + Fransk Guyana + Guernsey + Ghana + Gibraltar + Grønland + Gambia + Guinea + Guadeloupe + Ekvatorial-Guinea + Hellas + Sør-Georgia og Sør-Sandwichøyene + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong S.A.R. Kina + Hongkong + Heardøya og McDonaldøyene + Honduras + Kroatia + Haiti + Ungarn + Kanariøyene + Indonesia + Irland + Israel + Man + India + Britiske territorier i Indiahavet + Irak + Iran + Island + Italia + Jersey + Jamaica + Jordan + Japan + Kenya + Kirgisistan + Kambodsja + Kiribati + Komorene + St. Kitts og Nevis + Nord-Korea + Sør-Korea + Kuwait + Caymanøyene + Kasakhstan + Laos + Libanon + St. Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litauen + Luxembourg + Latvia + Libya + Marokko + Monaco + Moldova + Montenegro + Saint-Martin + Madagaskar + Marshalløyene + Makedonia + Makedonia (FYROM) + Mali + Myanmar (Burma) + Mongolia + Macao S.A.R. Kina + Macao + Nord-Marianene + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldivene + Malawi + Mexico + Malaysia + Mosambik + Namibia + Ny-Caledonia + Niger + Norfolkøya + Nigeria + Nicaragua + Nederland + Norge + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + Fransk Polynesia + Papua Ny-Guinea + Filippinene + Pakistan + Polen + St. Pierre og Miquelon + Pitcairn + Puerto Rico + Det palestinske området + Palestina + Portugal + Palau + Paraguay + Qatar + ytre Oseania + Réunion + Romania + Serbia + Russland + Rwanda + Saudi-Arabia + Salomonøyene + Seychellene + Sudan + Sverige + Singapore + St. Helena + Slovenia + Svalbard og Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sør-Sudan + São Tomé og Príncipe + El Salvador + Sint Maarten + Syria + Swaziland + Tristan da Cunha + Turks- og Caicosøyene + Tsjad + De franske sørterritorier + Togo + Thailand + Tadsjikistan + Tokelau + Øst-Timor + Turkmenistan + Tunisia + Tonga + Tyrkia + Trinidad og Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + USAs ytre øyer + USA + USA + Uruguay + Usbekistan + Vatikanstaten + St. Vincent og Grenadinene + Venezuela + De britiske jomfruøyene + De amerikanske jomfruøyene + Vietnam + Vanuatu + Wallis og Futuna + Samoa + Kosovo + Jemen + Mayotte + Sør-Afrika + Zambia + Zimbabwe + ukjent område + + + tradisjonell tysk ortografi + standardisert resisk ortografi + tysk ortografi fra 1996 + nyere mellomfransk til 1606 + eldre nyfransk + akademisk + ALA-LC-romanisering, 1997-utgaven + Aluku-dialekt + øst-armensk + vest-armensk + samlet tyrkisk-latinsk alfabet + bauddha + biscayan + san giorgio- og biladialekt + bohorisk alfabet + boontling + dajnkoalfabet + tidlig moderne engelsk + det internasjonale fonetiske alfabet (IPA) + det uraliske fonetiske alfabet (UPA) + fonxsamp + Hepburn-romanisering + høgnorsk + itihasa + jauer + jyutping + felles ortografi + standard ortografi + laukika + resia med Lipovaz-dialekt + Metelko-alfabet + monotonisk rettskriving + Ndyuka-dialekt + natisonedialekt + gniva- og njivadialekt + moderne volapük + oseacco- og osojanedialekt + Pamaka-dialekt + pinyin + polytonisk rettskriving + dataspråk + revidert rettskriving + klassisk volapük + resisk dialekt + saaho dialekt + skotsk standard engelsk + scouse dialekt + stolvizza- og solbicadialekt + surmiransk + sursilvan + sutsilvan + taraskievica-ortografi + felles revidert ortografi + ulster + vaidika + valensisk dialekt + vallader + Wade-Giles + + + kalender + Ignorer sortering etter symboler + Omvendt sortering etter aksent + Organisering av store og små bokstaver + Sortering av store og små bokstaver + Sortering av kana + sorteringsrekkefølge + Normalisert sortering + Numerisk sortering + Sorteringsstyrke + valuta + tall + tidssone + Språkvariant + Sortér som symboler + privat bruk + + + arabisk-indiske tall + utvidede arabisk-indiske tall + armenske tallsymboler + små armenske tallsymboler + baliske tall + bengalske tall + tradisjonell kinesisk sortering - Big 5 + brahmiske tall + buddhistisk kalender + chakma-tall + cham-tall + kinesisk kalender + koptisk kalender + dangisk kalender + devanagari-tall + ordlistesortering + standard Unicode-sorteringsrekkefølge + sorteringsrekkefølge for flerspråklige europeiske dokumenter + etiopiske tallsymboler + etiopisk kalender + etiopisk amete-alem-kalender + Finansielle tall + tall med full bredde + forenklet kinesisk sortering - GB2312 + georgiske tall + gregoriansk kalender + greske tallsymboler + små greske tallsymboler + gujarati-tall + gurmukhi-tall + kinesiske desimaltallsymboler + forenklede kinesiske tallsymboler + forenklede kinesiske finanstallsymboler + tradisjonelle kinesiske tallsymboler + tradisjonelle kinesiske finanstallsymboler + hebraiske tallsymboler + hebraisk kalender + Sortér alle + indisk nasjonalkalender + islamsk kalender + islamsk sivil kalender + islamsk kalender (Saudi-Arabia. synlighet) + islamsk kalender (tabellarisk, astronomisk epoke) + islamsk kalender (Umm al-Qura) + ISO-8601-kalender + japansk kalender + java-tall + japanske tallsymboler + japanske finanstallsymboler + kayah li-tall + khmer-tall + kannada-tall + thai tham hora-tall + tai tham tham-tall + lao-tall + vestlige tall + lepecha-tall + limbu-tall + Sortér små bokstaver først + malayalam-tall + mongolske tall + meetei mayek-tall + myanmar-tall + myanmar shan-tall + Språkspesifikke sifre + n'ko-tall + Sortér aksenttegn normalt + Sortér store og små bokstaver i vanlig rekkefølge + Sortér uavhengig av store og små bokstaver. + Sortér kana separat + Sortér uten normalisering + Sortér sifre individuelt + Sortér symboler + ol chiki-tall + oriya-tall + osmanya-tall + persisk kalender + telefonkatalogsortering + Fonetisk sorteringsrekkefølge + pinyinsortering + Sortér bare basisbokstaver + Sortér aksenttegn / små og store bokstaver / bredde / kana + reformert sortering + kalender for Republikken Kina + romertall + små romertall + sarushatra-tall + søk av normaltype + Søk etter første konsonant i hangul + Sortér aksenttegn + Ignorer symboler under sortering + sharada-tall + sora sompeng-tall + standard sorteringsrekkefølge + streksortering + sundanese-tall + takri-tall + ny tai lue-tall + tamilske tallsymboler + tamilske tall + telugu-tall + Sortér aksenttegn / små og store bokstaver / bredde + thailandske tall + tibetanske tall + tradisjonell sortering + Tradisjonelle tall + radikal-strek-sortering + Sortér store bokstaver først + vai-sifre + Sortér aksenttegn i motsatt rekkefølge + Sortér med skille mellom små og store bokstaver + Sortér med skille mellom forskjellige varianter av kana + Sortér Unicode normalisert + Sortér sifre numerisk + zhuyin-sortering + + + BGN + Numerisk + Tonespråk + UNGEGN + Aksenter + Full bredde + Halv bredde + Jamo + Pinyin + For publisering + + + metrisk + engelsk + amerikansk + + + Språk: {0} + Skrift: {0} + Område: {0} + + + + + titlecase-firstword + + + + [a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å] + [á ǎ ã č ç đ è ê í ń ñ ŋ š ŧ ü ž ä ö] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å] + [\- – , ; \: ! ? . ' " « » ( ) \[ \] \{ \} § @ * / \\] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + « + » + + + + + + + + + BE + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + d.M. y G + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E d. + y G + MMM y G + d. MMM y G + E d. MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L. + d.M. + E d.M + d.M. + LLL + d. MMM + E d. MMM + mm.ss + y G + y G + M.y G + d.M.y G + E d.M.y G + MM.y G + MMM y G + d. MMM y G + E d. MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0}–{1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + d.M.–d.M. + d.M.–d.M. + + + E d.M.–E d.M. + E d.M.–E d.M. + + + MMM–MMM + + + d.–d. MMM + d. MMM–d. MMM + + + E d. MMM–E d. MMM + E d. MMM–E d. MMM + + + y–y G + + + M.y–M.y G + M.y–M.y G + + + d.M.y–d.M.y G + d.M.y–d.M.y G + d.M.y–d.M.y G + + + E d.M.y–E d.M.y G + E d.M.y–E d.M.y G + E d.M.y–E d.M.y G + + + MMM–MMM y G + MMM y–MMM y G + + + d.–d. MMM y G + d. MMM–d. MMM y G + d. MMM y–d. MMM y G + + + E d. MMM–E d. MMM y G + E d. MMM–E d. MMM y G + E d. MMM y–E d. MMM y G + + + MMMM–MMMM y G + MMMM y–MMMM y G + + + + + + + + + jan. + feb. + mar. + apr. + mai + jun. + jul. + aug. + sep. + okt. + nov. + des. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januar + februar + mars + april + mai + juni + juli + august + september + oktober + november + desember + + + + + jan + feb + mar + apr + mai + jun + jul + aug + sep + okt + nov + des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januar + februar + mars + april + mai + juni + juli + august + september + oktober + november + desember + + + + + + + søn. + man. + tir. + ons. + tor. + fre. + lør. + + + S + M + T + O + T + F + L + + + sø. + ma. + ti. + on. + to. + fr. + lø. + + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + + + + sø. + ma. + ti. + on. + to. + fr. + lø. + + + S + M + T + O + T + F + L + + + sø. + ma. + ti. + on. + to. + fr. + lø. + + + søndag + mandag + tirsdag + onsdag + torsdag + fredag + lørdag + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + + + a.m. + p.m. + + + a + p + + + a.m. + p.m. + + + + + AM + PM + + + + + + f.Kr. + før vår tidsregning + e.Kr. + vår tidsregning + + + f.Kr. + fvt. + e.Kr. + vt. + + + f.Kr. + fvt. + e.Kr. + vt + + + + + + EEEE d. MMMM y + + + + + d. MMMM y + + + + + d. MMM y + + + + + dd.MM.yy + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + + {1} {0} + + + + + {1} 'kl.' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d. + E d. + E h.mm a + E HH.mm + E h.mm.ss a + E HH.mm.ss + y G + MMM y G + d. MMM y G + E d. MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L. + d.M. + E d.M + d.M. + LLL + d. MMM + E d. MMM + mm.ss + y + M.y + d.M.y + E d.MM.y + MM.y + MMM y + d. MMM y + E d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0}–{1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + dd.MM.–dd.MM. + dd.MM.–dd.MM. + + + E dd.MM.–E dd.MM. + E dd.MM.–E dd.MM. + + + MMM–MMM + + + d.–d. MMM + d. MMM–d. MMM + + + E d.–E d. MMM + E d. MMM–E d. MMM + + + y–y + + + MM.y–MM.y + MM.y–MM.y + + + dd.MM.y–dd.MM.y + dd.MM.y–dd.MM.y + dd.MM.y–dd.MM.y + + + E dd.MM.y–E dd.MM.y + E dd.MM.y–E dd.MM.y + E dd.MM.y–E dd.MM.y + + + MMM–MMM y + MMM y–MMM y + + + d.–d. MMM y + d. MMM–d. MMM y + d. MMM y–d. MMM y + + + E d.–E d. MMM y + E d. MMM–E d. MMM y + E d. MMM y–E d. MMM y + + + MMMM–MMMM y + MMMM y–MMMM y + + + + + + + + AM + + + + + + + AH + + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + d.M y G + + + + + + + + Before R.O.C. + Minguo + + + + + + + Tidsalder + + + År + I fjor + Dette året + Neste år + + om {0} år + om {0} år + + + for {0} år siden + for {0} år siden + + + + Måned + Sist måned + Denne måneden + Neste måned + + om {0} måned + om {0} måneder + + + for {0} måned siden + for {0} måneder siden + + + + Uke + Sist uke + Denne uken + Neste uke + + om {0} uke + om {0} uker + + + for {0} uke siden + for {0} uker siden + + + + Dag + i forgårs + i går + i dag + i morgen + i overmorgen + + om {0} døgn + om {0} døgn + + + for {0} døgn siden + for {0} døgn siden + + + + Ukedag + + + søndag sist uke + søndag denne uken + søndag neste uke + + + mandag sist uke + mandag denne uken + mandag neste uke + + + tirsdag sist uke + tirsdag denne uken + tirsdag neste uke + + + onsdag sist uke + onsdag denne uken + onsdag neste uke + + + torsdag sist uke + torsdag denne uken + torsdag neste uke + + + fredag sist uke + fredag denne uken + fredag neste uke + + + lørdag sist uke + lørdag denne uken + lørdag neste uke + + + AM/PM + + + Time + + om {0} time + om {0} timer + + + for {0} time siden + for {0} timer siden + + + + Minutt + + om {0} minutt + om {0} minutter + + + for {0} minutt siden + for {0} minutter siden + + + + Sekund + + + om {0} sekund + om {0} sekunder + + + for {0} sekund siden + for {0} sekunder siden + + + + Tidssone + + + + +HH.mm;-HH.mm + GMT{0} + GMT + tidssone for {0} + sommertid – {0} + normaltid – {0} + {1} ({0}) + + ukjent by + + + Tirana + + + Jerevan + + + Dumont d’Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Wien + + + Brussel + + + Saint Barthélemy + + + Cuiabá + + + Santarém + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Thimpu + + + Atikokan + + + St John's + + + Kokosøyene + + + Zürich + + + Påskeøya + + + Ürümqi + + + Bogotá + + + Kapp Verde + + + Curaçao + + + Christmasøya + + + Nikosia + + + Praha + + + Büsingen + + + København + + + Alger + + + Galápagosøyene + + + Kairo + + + El Aaiún + + + Asmara + + + Kanariøyene + + + Addis Abeba + + + Helsingfors + + + Chuuk + + + Pohnpei + + + Færøyene + + + + britisk sommertid + + + + Godthåb + + + Ittoqqortoormiit + + + Athen + + + Sør-Georgia + + + Hongkong + + + Jajapura + + + + irsk sommertid + + + + Man + + + Kolkata + + + Bagdad + + + Teheran + + + Roma + + + Bisjkek + + + Komorene + + + St. Kitts + + + Caymanøyene + + + Aktau + + + Uralsk + + + Aqtöbe + + + Kyzylorda + + + St. Lucia + + + Luxemburg + + + Chișinău + + + Yangon + + + Ulan Bator + + + Choybalsan + + + Macao + + + Maldivene + + + Bahía Banderas + + + Mexico by + + + Mérida + + + Cancún + + + Nouméa + + + Katmandu + + + Warszawa + + + + Azorene + + + Lisboa + + + Asunción + + + Réunion + + + Bucuresti + + + Beograd + + + Moskva + + + Jekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Kamtsjatka + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Damaskus + + + N'Djamena + + + Lomé + + + Dusjanbe + + + Asjkhabad + + + Dar-es-Salaam + + + Uzjhorod + + + Zaporozje + + + Beulah, Nord-Dakota + + + New Salem, Nord-Dakota + + + Center, Nord-Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Tasjkent + + + Vatikanstaten + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh-byen + + + + Acre-tid + Acre normaltid + Acre sommertid + + + + + afghansk tid + + + + + sentralafrikansk tid + + + + + østafrikansk tid + + + + + sørafrikansk tid + + + + + vestafrikansk tid + vestafrikansk normaltid + vestafrikansk sommertid + + + + + alaskisk tid + alaskisk normaltid + alaskisk sommertid + + + + + Almaty-tid + Almaty, standardtid + Almaty, sommertid + + + + + tidssone for Amazonas + normaltid for Amazonas + sommertid for Amazonas + + + + + tidssone for det sentrale Nord-Amerika + normaltid for det sentrale Nord-Amerika + sommertid for det sentrale Nord-Amerika + + + + + tidssone for den nordamerikanske østkysten + normaltid for den nordamerikanske østkysten + sommertid for den nordamerikanske østkysten + + + + + tidssone for Rocky Mountains (USA) + normaltid for Rocky Mountains (USA) + sommertid for Rocky Mountains (USA) + + + + + tidssone for den nordamerikanske Stillehavskysten + normaltid for den nordamerikanske Stillehavskysten + sommertid for den nordamerikanske Stillehavskysten + + + + + Russisk (Anadyr) tid + Russisk (Anadyr) normaltid + Russisk (Anadyr) sommertid + + + + + Aqtau-tid + Aqtau, standardtid + Aqtau, sommertid + + + + + Aqtobe-tid + Aqtobe, standardtid + Aqtobe, sommertid + + + + + arabisk tid + arabisk standardtid + arabisk sommertid + + + + + argentinsk tid + argentinsk normaltid + argentinsk sommertid + + + + + vestargentinsk tid + vestargentinsk normaltid + vestargentinsk sommertid + + + + + armensk tid + armensk normaltid + armensk sommertid + + + + + atlanterhavskystlig tid + atlanterhavskystlig standardtid + atlanterhavskystlig sommertid + + + + + sentralaustralsk tid + sentralaustralsk normaltid + sentralaustralsk sommertid + + + + + vest-sentralaustralsk tid + vest-sentralaustralsk normaltid + vest-sentralaustralsk sommertid + + + + + østaustralsk tid + østaustralsk normaltid + østaustralsk sommertid + + + + + vestaustralsk tid + vestaustralsk normaltid + vestaustralsk sommertid + + + + + aserbajdsjansk tid + aserbajdsjansk normaltid + aserbajdsjansk sommertid + + + + + asorisk tid + asorisk normaltid + asorisk sommertid + + + + + bangladeshisk tid + bangladeshisk normaltid + bangladeshisk sommertid + + + + + bhutansk tid + + + + + boliviansk tid + + + + + tidssone for Brasilia + normaltid for Brasilia + sommertid for Brasilia + + + + + tidssone for Brunei Darussalam + + + + + tidssone for Kapp Verde + normaltid for Kapp Verde + sommertid for Kapp Verde + + + + + Casey-tid + + + + + tidssone for Chamorro + + + + + tidssone for Chatham + normaltid for Chatham + sommertid for Chatham + + + + + chilensk tid + chilensk normaltid + chilensk sommertid + + + + + kinesisk tid + kinesisk standardtid + kinesisk sommertid + + + + + tidssone for Tsjojbalsan + normaltid for Tsjojbalsan + sommertid for Tsjojbalsan + + + + + tidssone for Christmasøya + + + + + tidssone for Kokosøyene + + + + + colombiansk tid + colombiansk normaltid + colombiansk sommertid + + + + + tidssone for Cookøyene + normaltid for Cookøyene + halv sommertid for Cookøyene + + + + + cubansk tid + cubansk normaltid + cubansk sommertid + + + + + tidssone for Davis + + + + + tidssone for Dumont d'Urville + + + + + øst-timoresisk tid + + + + + tidssone for Påskeøya + normaltid for Påskeøya + sommertid for Påskeøya + + + + + ecuadoriansk tid + + + + + sentraleuropeisk tid + sentraleuropeisk normaltid + sentraleuropeisk sommertid + + + CET + CET + CEST + + + + + østeuropeisk tid + østeuropeisk normaltid + østeuropeisk sommertid + + + EET + EET + EEST + + + + + vesteuropeisk tid + vesteuropeisk normaltid + vesteuropeisk sommertid + + + WET + WET + WEST + + + + + tidssone for Falklandsøyene + normaltid for Falklandsøyene + sommertid for Falklandsøyene + + + + + fijiansk tid + fijiansk normaltid + fijiansk sommertid + + + + + tidssone for Fransk Guyana + + + + + tidssone for De franske sørterritorier + + + + + tidssone for Galápagosøyene + + + + + tidssone for Gambier + + + + + georgisk tid + georgisk normaltid + georgisk sommertid + + + + + tidssone for Gilbertøyene + + + + + Greenwich middeltid + + + GMT + + + + + østgrønlandsk tid + østgrønlandsk normaltid + østgrønlandsk sommertid + + + + + vestgrønlandsk tid + vestgrønlandsk normaltid + vestgrønlandsk sommertid + + + + + Guam-tid + + + + + tidssone for Persiabukta + + + + + guyansk tid + + + + + tidssone for Hawaii og Aleutene + normaltid for Hawaii og Aleutene + sommertid for Hawaii og Aleutene + + + + + tidssone for Hongkong + normaltid for Hongkong + sommertid for Hongkong + + + + + tidssone for Khovd + normaltid for Khovd + sommertid for Khovd + + + + + indisk tid + + + + + tidssone for Indiahavet + + + + + indokinesisk tid + + + + + sentralindonesisk tid + + + + + østindonesisk tid + + + + + vestindonesisk tid + + + + + iransk tid + iransk normaltid + iransk sommertid + + + + + tidssone for Irkutsk + normaltid for Irkutsk + sommertid for Irkutsk + + + + + israelsk tid + israelsk normaltid + israelsk sommertid + + + + + japansk tid + japansk normaltid + japansk sommertid + + + + + Russisk (Petropavlovsk-Kamtsjatskij) tid + Russisk (Petropavlovsk-Kamtsjatskij) normaltid + Russisk (Petropavlovsk-Kamtsjatskij) sommertid + + + + + østkasakhstansk tid + + + + + vestkasakhstansk tid + + + + + koreansk tid + koreansk normaltid + koreansk sommertid + + + + + tidssone for Kosrae + + + + + tidssone for Krasnojarsk + normaltid for Krasnojarsk + sommertid for Krasnojarsk + + + + + kirgisisk tid + + + + + Lanka-tid + + + + + tidssone for Linjeøyene + + + + + tidssone for Lord Howe-øya + normaltid for Lord Howe-øya + sommertid for Lord Howe-øya + + + + + Macau-tid + Macau, standardtid + Macau, sommertid + + + + + tidssone for Macquarieøya + + + + + tidssone for Magadan + normaltid for Magadan + sommertid for Magadan + + + + + malaysisk tid + + + + + maldivisk tid + + + + + tidssone for Marquesasøyene + + + + + tidssone for Marshalløyene + + + + + mauritisk tid + mauritisk normaltid + mauritisk sommertid + + + + + tidssone for Mawson + + + + + tidssone for Ulan Bator + normaltid for Ulan Bator + sommertid for Ulan Bator + + + + + tidssone for Moskva + normaltid for Moskva + sommertid for Moskva + + + + + myanmarsk tid + + + + + naurisk tid + + + + + nepalsk tid + + + + + kaledonsk tid + kaledonsk normaltid + kaledonsk sommertid + + + + + newzealandsk tid + newzealandsk normaltid + newzealandsk sommertid + + + + + tidssone for Newfoundland + normaltid for Newfoundland + sommertid for Newfoundland + + + + + tidssone for Niue + + + + + tidssone for Norfolkøya + + + + + tidssone for Fernando de Noronha + normaltid for Fernando de Noronha + sommertid for Fernando de Noronha + + + + + Nord-Marianene-tid + + + + + tidssone for Novosibirsk + normaltid for Novosibirsk + sommertid for Novosibirsk + + + + + tidssone for Omsk + normaltid for Omsk + sommertid for Omsk + + + + + pakistansk tid + pakistansk normaltid + pakistansk sommertid + + + + + palauisk tid + + + + + papuansk tid + + + + + paraguayansk tid + paraguayansk normaltid + paraguayansk sommertid + + + + + peruansk tid + peruansk normaltid + peruansk sommertid + + + + + filippinsk tid + filippinsk normaltid + filippinsk sommertid + + + + + tidssone for Phoenixøyene + + + + + tidssone for Saint-Pierre-et-Miquelon + normaltid for Saint-Pierre-et-Miquelon + sommertid for Saint-Pierre-et-Miquelon + + + + + tidssone for Pitcairn + + + + + tidssone for Pohnpei + + + + + Qyzylorda-tid + Qyzylorda, standardtid + Qyzylorda, sommertid + + + + + tidssone for Réunion + + + + + tidssone for Rothera + + + + + tidssone for Sakhalin + normaltid for Sakhalin + sommertid for Sakhalin + + + + + Russisk (Samara) tid + Russisk (Samara) normaltid + Russisk (Samara) sommertid + + + + + samoansk tid + samoansk normaltid + samoansk sommertid + + + + + seychellisk tid + + + + + singaporsk tid + + + + + tidssone for Salomonøyene + + + + + tidssone for Sør-Georgia + + + + + surinamsk tid + + + + + tidssone for Syowa + + + + + tahitisk tid + + + + + tidssone for Taipei + normaltid for Taipei + sommertid for Taipei + + + + + tadsjikisk tid + + + + + tidssone for Tokelau + + + + + tongansk tid + tongansk normaltid + tongansk sommertid + + + + + tidssone for Chuukøyene + + + + + turkmensk tid + turkmensk normaltid + turkmensk sommertid + + + + + tuvalsk tid + + + + + uruguayansk tid + uruguayansk normaltid + uruguayansk sommertid + + + + + usbekisk tid + usbekisk normaltid + usbekisk sommertid + + + + + vanuatisk tid + vanuatisk normaltid + vanuatisk sommertid + + + + + venezuelansk tid + + + + + tidssone for Vladivostok + normaltid for Vladivostok + sommertid for Vladivostok + + + + + tidssone for Volgograd + normaltid for Volgograd + sommertid for Volgograd + + + + + tidssone for Vostok + + + + + tidssone for Wake Island + + + + + tidssone for Wallis- og Futunaøyene + + + + + tidssone for Jakutsk + normaltid for Jakutsk + sommertid for Jakutsk + + + + + tidssone for Jekaterinburg + normaltid for Jekaterinburg + sommertid for Jekaterinburg + + + + + + + , +   + ; + % + + + + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tusen + 0 tusen + 00 tusen + 00 tusen + 000 tusen + 000 tusen + 0 million + 0 millioner + 00 million + 00 millioner + 000 million + 000 millioner + 0 milliard + 0 milliarder + 00 milliard + 00 milliarder + 000 milliard + 000 milliarder + 0 billion + 0 billioner + 00 billioner + 00 billioner + 000 billioner + 000 billioner + + + + + 0 K + 0 K + 00 K + 00 K + 000 K + 000 K + 0 mill + 0 mill + 00 mill + 00 mill + 000 mill + 000 mill + 0 mrd + 0 mrd + 00 mrd + 00 mrd + 000 mrd + 000 mrd + 0 bill + 0 bill + 00 bill + 00 bill + 000 bill + 000 bill + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + ¤ #,##0.00 + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + andorranske pesetas + andorransk pesetas + andorranske pesetas + + + emiratarabiske dirham + emiratarabisk dirham + emiratarabiske dirham + + + afgansk afghani (1927–2002) + afghansk afghani (1927–2002) + afghanske afghani (1927–2002) + + + afghansk afghani + afghansk afghani + afghanske afghani + + + albanske lek (1946–1965) + albansk lek (1946–1965) + albanske lek (1946–1965) + ALK + + + albanske lek + albansk lek + albanske lek + + + armenske dram + armensk dram + armenske dram + + + nederlandske antillegylden + nederlandsk antillegylden + nederlandske antillegylden + + + angolanske kwanza + angolansk kwanza + angolanske kwanza + + + angolanske kwanza (1977–1990) + angolansk kwanza (1977–1990) + angolanske kwanza (1977–1990) + + + angolanske nye kwanza (1990–2000) + angolansk ny kwanza + angolanske nye kwanza (1990–2000) + + + angolanske omjusterte kwanza (1995–1999) + angolansk kwanza reajustado (1995–1999) + angolanske omjusterte kwanza (1995–1999) + + + argentinske australer + argentinsk austral + argentinske australer + + + argentinske peso ley + argentinsk peso ley + argentinske peso ley + + + argentinsk pesos (1881–1970) + argentinsk pesos (1881–1970) + argentinske pesos (1881–1970) + + + argentinske pesos (1983–1985) + argentinsk pesos (1983–1985) + argentinske pesos (1983–1985) + + + argentinske pesos + argentinsk peso + argentinske pesos + + + østerrikske shilling + østerriksk schilling + østerrikske schilling + + + australske dollar + australsk dollar + australske dollar + AUD + + + arubiske floriner + arubisk florin + arubiske floriner + + + aserbajdsjanske manat (1993–2006) + aserbajdsjansk manat (1993–2006) + aserbajdsjanske manat (1993–2006) + + + aserbajdsjanske manat + aserbajdsjansk manat + aserbajdsjanske manat + + + bosnisk-hercegovinske dinarer (1992–1994) + bosnisk-hercegovinsk dinar (1992–1994) + bosnisk-hercegovinske dinarer (1992–1994) + + + bosnisk-hercegovinske konvertible mark + bosnisk-hercegovinsk konvertibel mark + bosnisk-hercegovinske konvertible mark + + + nye bosnisk-hercegovinske dinarer (1994–1997) + ny bosnisk-hercegovinsk dinar (1994–1997) + nye bosnisk-hercegovinske dinarer (1994–1997) + + + barbadiske dollar + barbadisk dollar + barbadiske dollar + + + bangladeshiske taka + bangladeshisk taka + bangladeshiske taka + + + belgiske franc (konvertible) + belgisk franc (konvertibel) + belgiske franc (konvertible) + + + belgiske franc + belgisk franc + belgiske franc + + + belgiske franc (finansielle) + belgisk franc (finansiell) + belgiske franc (finansielle) + + + bulgarske lev (hard) + bulgarsk lev (hard) + bulgarske lev (hard) + + + bulgarske lev (sosialist) + bulgarsk lev (sosialist) + bulgarske lev (sosialist) + + + bulgarske lev + bulgarsk lev + bulgarske lev + + + bulgarske lev (1879–1952) + bulgarsk lev (1879–1952) + bulgarske lev (1879–1952) + + + bahrainske dinarer + bahrainsk dinar + bahrainske dinarer + + + burundiske franc + burundisk franc + burundiske franc + + + bermudiske dollar + bermudisk dollar + bermudiske dollar + + + bruneiske dollar + bruneisk dollar + bruneiske dollar + + + bolivianske boliviano + boliviansk boliviano + bolivianske boliviano + + + bolivianske boliviano (1863–1963) + boliviansk boliviano (1863–1963) + bolivianske boliviano (1863–1963) + + + bolivianske pesos + boliviansk pesos + bolivianske pesos + + + bolivianske mvdol + bolivianske mvdol + bolivianske mvdol + + + brasilianske cruzeiro novo (1967–1986) + brasiliansk cruzeiro novo (1967–1986) + brasilianske cruzeiro novo (1967–1986) + + + brasilianske cruzado + brasiliansk cruzado (1986–1989) + brasilianske cruzado (1986–1989) + + + brasilianske cruzeiro (1990–1993) + brasiliansk cruzeiro (1990–1993) + brasilianske cruzeiro (1990–1993) + + + brasilianske real + brasiliansk real + brasilianske real + BRL + + + brasilianske cruzado novo (1989–1990) + brasiliansk cruzado novo (1989–1990) + brasilianske cruzado novo + + + brasilianske cruzeiro + brasiliansk cruzeiro + brasilianske cruzeiro + + + brasilianske cruzeiro (1942–1967) + brasiliansk cruzeiro (1942–1967) + brasilianske cruzeiro (1942–1967) + + + bahamanske dollar + bahamansk dollar + bahamanske dollar + + + bhutanske ngultrum + bhutansk ngultrum + bhutanske ngultrum + + + burmesiske kyat + burmesisk kyat + burmesiske kyat + + + botswanske pula + botswansk pula + botswanske pula + + + hviterussiske nye rubler (1994–1999) + hviterussisk ny rubel (1994–1999) + hviterussiske nye rubler (1994–1999) + + + hviterussiske rubler + hviterussisk rubel + hviterussiske rubler + + + beliziske dollar + belizisk dollar + beliziske dollar + + + kanadiske dollar + kanadisk dollar + kanadiske dollar + CAD + + + kongolesiske franc + kongolesisk franc + kongolesiske franc + + + WIR euro + + + sveitsiske franc + sveitsisk franc + sveitsiske franc + + + WIR franc + + + chilenske escudo + chilensk escudo + chilenske escudo + + + chilenske unidades de fomento + chilensk unidades de fomento + chilenske unidades de fomento + + + chilenske pesos + chilensk peso + chilenske pesos + + + Kinas folkebank dollar + Kinas folkebank dollar + Kinas folkebank dollar + CNX + + + kinesiske yuan + kinesisk yuan + kinesiske yuan + CNY + + + colombianske pesos + colombiansk peso + colombianske pesos + + + unidad de valor real + unidad de valor real + unidad de valor real + + + costaricanske colón + costaricansk colón + costaricanske colón + + + serbiske dinarer (2002–2006) + serbisk dinar (2002–2006) + serbiske dinarer (2002–2006) + + + tsjekkoslovakiske koruna (hard) + tsjekkoslovakisk koruna (hard) + tsjekkoslovakiske koruna (hard) + + + kubanske konvertible pesos + kubansk konvertibel peso + kubanske konvertible pesos + + + kubanske pesos + kubansk peso + kubanske pesos + + + kappverdiske escudos + kappverdisk escudo + kappverdiske escudos + + + kypriotiske pund + kypriotisk pund + kypriotiske pund + + + tsjekkiske koruna + tsjekkisk koruna + tsjekkiske koruna + + + østtyske ostmark + østtysk ostmark + østtyske ostmark + + + tyske mark + tysk mark + tyske mark + + + djiboutiske franc + djiboutisk franc + djiboutiske franc + + + danske kroner + dansk krone + danske kroner + + + dominikanske pesos + dominikansk peso + dominikanske pesos + + + algeriske dinarer + algerisk dinar + algeriske dinarer + + + ecuadorianske sucre + ecuadoriansk sucre + ecuadorianske sucre + + + ecuadorianske unidad de valor constante (UVC) + ecuadoriansk unidad de valor constante (UVC) + ecuadorianske unidad de valor constante (UVC) + + + estiske kroon + estisk kroon + estiske kroner + + + egyptiske pund + egyptisk pund + egyptiske pund + + + eritreiske nakfa + eritreisk nakfa + eritreiske nakfa + + + spanske peseta (A–konto) + spansk peseta (A–konto) + spanske peseta (A–konto) + + + spanske peseta (konvertibel konto) + spansk peseta (konvertibel konto) + spanske peseta (konvertibel konto) + + + spanske peseta + spansk peseta + spanske peseta + + + etiopiske birr + etiopisk birr + etiopiske birr + + + euro + euro + euro + + + + finske mark + finsk mark + finske mark + + + fijianske dollar + fijiansk dollar + fijianske dollar + + + falklandspund + falklandspund + falklandspund + + + franske franc + fransk franc + franske franc + + + britiske pund sterling + britisk pund sterling + britiske pund sterling + £ + + + georgiske kupon larit + georgisk kupon larit + georgiske kupon larit + + + georgiske lari + georgisk lari + georgiske lari + + + ghanesisk cedi (1979–2007) + ghanesisk cedi (1979–2007) + ghanesiske cedi (1979–2007) + + + ghanesiske cedi + ghanesisk cedi + ghanesiske cedi + + + gibraltarske pund + gibraltarsk pund + gibraltarske pund + + + gambiske dalasi + gambisk dalasi + gambiske dalasi + + + guineanske franc + guineansk franc + guineanske franc + + + guineanske syli + guineansk syli + guineanske syli + + + ekvatorialguineanske ekwele guineana + ekvatorialguineansk ekwele guineana + ekvatorialguineanske ekwele guineana + + + greske drakmer + gresk drakme + greske drakmer + + + guatemalanske quetzal + guatemalansk quetzal + guatemalanske quetzal + + + portugisiske guinea escudo + portugisisk guinea escudo + portugisiske guinea escudo + + + Guinea-Bissau-pesos + Guinea-Bissau-pesos + Guinea-Bissau-pesos + + + guyanske dollar + guyansk dollar + guyanske dollar + + + Hongkong-dollar + Hongkong-dollar + Hongkong-dollar + HKD + + + honduranske lempira + honduransk lempira + honduranske lempira + + + kroatiske dinarer + kroatisk dinar + kroatiske dinarer + + + kroatiske kuna + kroatisk kuna + kroatiske kuna + + + haitiske gourde + haitisk gourde + haitiske gourde + + + ungarske forinter + ungarsk forint + ungarske forinter + + + indonesiske rupier + indonesisk rupi + indonesiske rupier + + + irske pund + irsk pund + irske pund + + + israelske pund + israelsk pund + israelske pund + + + israelske shekler (1980–1985) + israelsk shekel (1980–1985) + israelske shekler (1980–1985) + ILR + + + nye israelske shekler + ny israelsk shekel + nye israelske shekler + ILS + + + indiske rupier + indisk rupi + indiske rupier + INR + + + irakske dinarer + iraksk dinar + irakske dinarer + + + iranske rialer + iransk rial + iranske rialer + + + gammel islandsk krone + gammel islandsk krone + gamle islandske kroner + + + islandske kroner + islandsk krone + islandske kroner + + + italienske lire + italiensk lire + italienske lire + + + jamaikanske dollar + jamaikansk dollar + jamaikanske dollar + + + jordanske dinarer + jordansk dinar + jordanske dinarer + + + japanske yen + japansk yen + japanske yen + JPY + + + kenyanske shilling + kenyansk shilling + kenyanske shilling + + + kirgisiske som + kirgisisk som + kirgisiske som + + + kambodsjanske riel + kambodsjansk riel + kambodsjanske riel + + + komoriske franc + komorisk franc + komoriske franc + + + nordkoreanske won + nordkoreansk won + nordkoreanske won + + + sørkoreanske hwan (1953–1962) + sørkoreansk hwan (1953–1962) + sørkoreanske hwan (1953–1962) + + + sørkoreanske won (1945–1953) + sørkoreansk won (1945–1953) + sørkoreanske won (1945–1953) + + + sørkoreanske won + sørkoreansk won + sørkoreanske won + KRW + + + kuwaitiske dinarer + kuwaitisk dinar + kuwaitiske dinarer + + + caymanske dollar + caymansk dollar + caymanske dollar + + + kasakhstanske tenge + kasakhstansk tenge + kasakhstanske tenge + + + laotiske kip + laotisk kip + laotiske kip + + + libanesiske pund + libanesisk pund + libanesiske pund + + + srilankiske rupier + srilankisk rupi + srilankiske rupier + + + liberiske dollar + liberisk dollar + liberiske dollar + + + lesothiske loti + lesothisk loti + lesothiske loti + + + litauiske lita + litauisk lita + litauiske lita + + + litauiske talonas + litauisk talonas + litauiske talonas + + + luxemburgske konvertible franc + luxemburgsk konvertibel franc + luxemburgske konvertible franc + + + luxemburgske franc + luxemburgsk franc + luxemburgske franc + + + luxemburgske finansielle franc + luxemburgsk finansiell franc + luxemburgske finansielle franc + + + latviske lats + latvisk lats + latviske lats + + + latviske rubler + latvisk rubel + latviske rubler + + + libyske dinarer + libysk dinar + libyske dinarer + + + marokkanske dirham + marokkansk dirham + marokkanske dirham + + + marokkanske franc + marokkansk franc + marokkanske franc + + + moldovske cupon + moldovsk cupon + moldovske cupon + + + moldovske leu + moldovsk leu + moldovske leu + + + madagassiske ariary + madagassisk ariary + madagassiske ariary + + + madagassiske franc + madagassisk franc + madagassiske franc + + + makedonske denarer + makedonsk denar + makedonske denarer + + + makedonske denarer (1992–1993) + makedonsk denar (1992–1993) + makedonske denarer (1992–1993) + + + maliske franc + malisk franc + maliske franc + + + myanmarske kyat + myanmarsk kyat + myanmarske kyat + + + mongolske tugrik + mongolsk tugrik + mongolske tugrik + + + makaoiske pataca + makaoisk pataca + makaoiske pataca + + + mauritanske ouguiya + mauritansk ouguiya + mauritanske ouguiya + + + maltesiske lira + maltesisk lira + maltesiske lira + + + maltesiske pund + maltesisk pund + maltesiske pund + + + mauritiske rupier + mauritisk rupi + mauritiske rupier + + + maldiviske rupier + maldivisk rupi + maldiviske rupier + MVP + + + maldiviske rufiyaa + maldivisk rufiyaa + maldiviske rufiyaa + + + malawiske kwacha + malawisk kwacha + malawiske kwacha + + + meksikanske pesos + meksikansk peso + meksikanske pesos + MXN + + + meksikanske sølvpesos (1861–1992) + meksikansk sølvpesos (1860–1992) + meksikanske sølvpesos (1860–1992) + + + meksikanske unidad de inversion (UDI) + meksikansk unidad de inversion (UDI) + meksikanske unidad de inversion (UDI) + + + malaysiske ringgit + malaysisk ringgit + malaysiske ringgit + + + mosambikiske escudo + mosambikisk escudo + mosambikiske escudo + + + gamle mosambikiske metical + gammel mosambikisk metical + gamle mosambikiske metical + + + mosambikiske metical + mosambikisk metical + mosambikiske metical + + + namibiske dollar + namibisk dollar + namibiske dollar + + + nigerianske naira + nigeriansk naira + nigerianske naira + + + nicaraguanske cordoba (1988–1991) + nicaraguansk cordoba (1988–1991) + nicaraguanske cordoba (1988–1991) + + + nicaraguanske córdoba + nicaraguansk córdoba + nicaraguanske córdoba + + + nederlandske gylden + nederlandsk gylden + nederlandske gylden + + + norske kroner + norsk krone + norske kroner + kr + + + nepalske rupier + nepalsk rupi + nepalske rupier + + + newzealandske dollar + newzealandsk dollar + newzealandske dollar + NZD + + + omanske rialer + omansk rial + omanske rialer + + + panamanske balboa + panamansk balboa + panamanske balboa + + + peruvianske inti + peruviansk inti + peruvianske inti + + + peruanske nuevo sol + peruansk nuevo sol + peruanske nuevo sol + + + peruvianske sol (1863–1965) + peruviansk sol (1863–1965) + peruvianske sol (1863–1965) + + + papuanske kina + papuansk kina + papuanske kina + + + filippinske pesos + filippinsk peso + filippinske pesos + + + pakistanske rupier + pakistansk rupi + pakistanske rupier + + + polske zloty + polsk zloty + polske zloty + + + polske zloty (1950–1995) + polsk zloty (1950–1995) + polske zloty (1950–1995) + + + portugisiske escudo + portugisisk escudo + portugisiske escudo + + + paraguayanske guarani + paraguayansk guarani + paraguayanske guarani + + + qatarske rialer + qatarsk rial + qatarske rialer + + + rhodesiske dollar + rhodesisk dollar + rhodesiske dollar + + + rumenske leu (1952–2006) + rumensk leu (1952–2006) + rumenske leu (1952–2006) + + + rumenske leu + rumensk leu + rumenske leu + + + serbiske dinarer + serbisk dinar + serbiske dinarer + + + russiske rubler + russisk rubel + russiske rubler + + + russiske rubler (1991–1998) + russisk rubel (1991–1998) + russiske rubler (1991–1998) + + + rwandiske franc + rwandisk franc + rwandiske franc + + + saudiarabiske riyaler + saudiarabisk riyal + saudiarabiske riyaler + + + salomonske dollar + salomonsk dollar + salomonske dollar + + + seychelliske rupier + seychellisk rupi + seychelliske rupier + + + sudanesiske dinarer (1992–2007) + sudanesisk dinar (1992–2007) + sudanesiske dinarer (1992–2007) + + + sudanske pund + sudansk pund + sudanske pund + + + sudanesiske pund + sudansk pund (1957–1998) + sudanske pund (1957–1998) + + + svenske kroner + svensk krone + svenske kroner + + + singaporske dollar + singaporsk dollar + singaporske dollar + + + sankthelenske pund + sankthelensk pund + sankthelenske pund + + + slovenske tolar + slovensk tolar + slovenske tolar + + + slovakiske koruna + slovakisk koruna + slovakiske koruna + + + sierraleonske leone + sierraleonsk leone + sierraleonske leone + + + somaliske shilling + somalisk shilling + somaliske shilling + + + surinamske dollar + surinamsk dollar + surinamske dollar + + + surinamske gylden + surinamsk gylden + surinamske gylden + + + sørsudanske pund + sørsudansk pund + sørsudanske pund + + + São Tomé og Príncipe-dobra + São Tomé og Príncipe-dobra + São Tomé og Príncipe-dobra + + + sovjetiske rubler + sovjetisk rubel + sovjetiske rubler + + + salvadoranske colon + salvadoransk colon + salvadoranske colon + + + syriske pund + syrisk pund + syriske pund + + + swazilandske lilangeni + swazilandsk lilangeni + swazilandske lilangeni + + + thailandske baht + thailandsk baht + thailandske baht + THB + + + tadsjikiske rubler + tadsjikisk rubel + tadsjikiske rubler + + + tadsjikiske somoni + tadsjikisk somoni + tadsjikiske somoni + + + turkmenske manat (1993–2009) + turkmensk manat (1993–2009) + turkmenske manat (1993–2009) + + + turkmenske manat + turkmensk manat + turkmenske manat + + + tunisiske dinarer + tunisisk dinar + tunisiske dinarer + + + tonganske paʻanga + tongansk paʻanga + tonganske paʻanga + + + timoresiske escudo + timoresisk escudo + timoresiske escudo + + + tyrkiske lire (1922–2005) + tyrkisk lire (1922–2005) + tyrkiske lire (1922–2005) + + + tyrkiske lire + tyrkisk lire + tyrkiske lire + + + trinidadiske dollar + trinidadisk dollar + trinidadiske dollar + + + nye taiwanske dollar + ny taiwansk dollar + nye taiwanske dollar + TWD + + + tanzanianske shilling + tanzaniansk shilling + tanzanianske shilling + + + ukrainske hryvnia + ukrainsk hryvnia + ukrainske hryvnia + + + ukrainske karbovanetz + ukrainsk karbovanetz + ukrainske karbovanetz + + + ugandiske shilling (1966–1987) + ugandisk shilling (1966–1987) + ugandiske shilling (1966–1987) + + + ugandiske shilling + ugandisk shilling + ugandiske shilling + + + amerikanske dollar + amerikansk dollar + amerikanske dollar + USD + + + amerikanske dollar (neste dag) + amerikansk dollar (neste dag) + amerikanske dollar (neste dag) + + + amerikanske dollar (samme dag) + amerikansk dollar (samme dag) + amerikanske dollar (samme dag) + + + uruguyanske pesos (indekserte enheter) + + + uruguayanske pesos (1975–1993) + uruguayansk pesos (1975–1993) + uruguayanske pesos (1975–1993) + + + uruguayanske pesos + uruguyansk peso + uruguayanske pesos + + + usbekiske som + usbekisk som + usbekiske som + + + venezuelanske bolivar (1871–2008) + venezuelansk bolivar (1871–2008) + venezuelanske bolivar (1871–2008) + + + venezuelanske bolivar + venezuelansk bolivar + venezuelanske bolivarer + + + vietnamesiske dong + vietnamesisk dong + vietnamesiske dong + VND + + + vietnamesiske dong (1978–1985) + vietnamesisk dong (1978–1985) + vietnamesiske dong (1978–1985) + + + vanuatiske vatu + vanuatisk vatu + vanuatiske vatu + + + samoanske tala + samoansk tala + samoanske tala + + + sentralafrikanske CFA-franc + sentralafrikansk CFA-franc + sentralafrikanske CFA-franc + XAF + + + sølv + unse sølv + unser sølv + + + gull + unse gull + unser gull + + + europeisk sammensatt enhet + europeisk sammensatt enhet + europeiske sammensatte enheter + + + europeisk monetær enhet + europeisk monetær enhet + europeiske monetære enheter + + + europeisk kontoenhet (XBC) + europeisk kontoenhet (XBC) + europeiske kontoenheter + + + europeisk kontoenhet (XBD) + europeisk kontoenhet (XBD) + europeiske kontoenheter (XBD) + + + østkaribiske dollar + østkaribisk dollar + østkaribiske dollar + XCD + + + spesielle trekkrettigheter + spesiell trekkrettighet + spesielle trekkrettigheter + + + europeisk valutaenhet + europeisk valutaenhet + europeiske valutaenheter + + + franske gullfranc + fransk gullfranc + franske gullfranc + + + franske UIC-franc + fransk UIC-franc + franske UIC-franc + + + vestafrikanske CFA-franc + vestafrikansk CFA-franc + vestafrikanske CFA-franc + CFA + + + palladium + unse palladium + unser palladium + + + CFP-franc + CFP-franc + CFP-franc + XPF + + + platina + unse platina + unser platina + + + RINET-fond + + + sucre + sucre + sucre + + + testvalutakode + testvaluta + testvaluta + + + ADB-kontoenhet + ADB-kontoenhet + ADB-kontoenheter + + + ukjent valuta + (ukjent valuta) + (ukjent valuta) + + + jemenittiske dinarer + jemenittisk dinar + jemenittiske dinarer + + + jemenittiske rialer + jemenittisk rial + jemenittiske rialer + + + jugoslaviske dinarer (hard) + jugoslavisk dinar (hard) + jugoslaviske dinarer (hard) + + + jugoslaviske noviy-dinarer + jugoslavisk noviy-dinar + jugoslaviske noviy-dinarer + + + jugoslaviske konvertible dinarer + jugoslavisk konvertibel dinar + jugoslaviske konvertible dinarer + + + jugoslaviske reformerte dinarer (1992–1993) + jugoslavisk reformert dinar (1992–1993) + jugoslaviske reformerte dinarer (1992–1993) + + + sørafrikanske rand (finansielle) + sørafrikansk rand (finansiell) + sørafrikanske rand (finansielle) + + + sørafrikanske rand + sørafrikansk rand + sørafrikanske rand + + + zambiske kwacha (1968–2012) + zambisk kwacha (1968–2012) + zambiske kwacha (1968–2012) + + + zambiske kwacha + zambisk kwacha + zambiske kwacha + + + zairiske nye zaire + zairisk ny zaire + zairiske nye zaire + + + zairiske zaire + zairisk zaire + zairiske zaire + + + zimbabwiske dollar (1980–2008) + zimbabwisk dollar (1980–2008) + zimbabwiske dollar (1980–2008) + + + zimbabwisk dollar (2009) + zimbabwisk dollar (2009) + zimbabwiske dollar (2009) + + + zimbabwisk dollar (2008) + zimbabwisk dollar (2008) + zimbabwiske dollar (2008) + + + + ⩾{0} + {0}‒{1} + + + + + + {0} per {1} + + + {0} g-kraft + {0} g-kraft + + + {0} bueminutt + {0} bueminutter + + + {0} buesekund + {0} buesekunder + + + {0} grad + {0} grader + + + {0} acre + {0} acres + + + {0} hektar + {0} hektar + + + {0} kvadratfot + {0} kvadratfot + + + {0} kvadratkilometer + {0} kvadratkilometer + + + {0} kvadratmeter + {0} kvadratmeter + + + {0} engelsk kvadratmil + {0} engelske kvadratmil + + + {0} døgn + {0} døgn + + + {0} time + {0} timer + + + {0} millisekund + {0} millisekunder + + + {0} minutt + {0} minutter + + + {0} måned + {0} måneder + + + {0} sekund + {0} sekunder + + + {0} uke + {0} uker + + + {0} år + {0} år + + + {0} centimeter + {0} centimeter + + + {0} fot + {0} fot + + + {0} tomme + {0} tommer + + + {0} kilometer + {0} kilometer + + + {0} lysår + {0} lysår + + + {0} meter + {0} meter + + + {0} engelsk mil + {0} engelske mil + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} yard + {0} yard + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} unse + {0} unser + + + {0} pund + {0} pund + + + {0} hestekraft + {0} hestekrefter + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} tomme kvikksølv + {0} tommer kvikksølv + + + {0} millibar + {0} millibar + + + {0} kilometer per time + {0} kilometer per time + + + {0} meter per sekund + {0} meter per sekund + + + {0} engelsk mil per time + {0} engelske mil per time + + + {0} grad Celsius + {0} grader Celsius + + + {0} grad Fahrenheit + {0} grader Fahrenheit + + + {0} kubikkilometer + {0} kubikkilometer + + + {0} engelsk kubikkmil + {0} engelske kubikkmil + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} bmin + {0} bmin + + + {0} bsek + {0} bsek + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} fot² + {0} fot² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} engelsk mil² + {0} engelske mil² + + + {0} d + {0} d + + + {0} t + {0} t + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mnd + {0} mnd + + + {0} sek + {0} sek + + + {0} u + {0} u + + + {0} år + {0} år + + + {0} cm + {0} cm + + + {0} fot + {0} fot + + + {0} tomme + {0} tommer + + + {0} km + {0} km + + + {0} lysår + {0} lysår + + + {0} m + {0} m + + + {0} engelsk mil + {0} engelske mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yard + {0} yard + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} unse + {0} unser + + + {0} pund + {0} pund + + + {0} hk + {0} hk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} tomme Hg + {0} tommer Hg + + + {0} mbar + {0} mbar + + + {0} km/t + {0} km/t + + + {0} m/s + {0} m/s + + + {0} engelsk mil/t + {0} engelske mil/t + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} engelsk mil³ + {0} engelske mil³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0}ha + {0}ha + + + {0}fot² + {0}fot² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} eng mil² + {0} eng mil² + + + {0}d + {0}d + + + {0}t + {0}t + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0} m + {0} m + + + {0}s + {0}s + + + {0}u + {0}u + + + {0}å + {0}å + + + {0}cm + {0}cm + + + {0} fot + {0} fot + + + {0} tomme + {0} tommer + + + {0}km + {0}km + + + {0} lysår + {0} lysår + + + {0}m + {0}m + + + {0} eng mil + {0} eng mil + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} yard + {0} yard + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} unse + {0} unser + + + {0} pund + {0} pund + + + {0}hk + {0}hk + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}ʹʹ Hg + {0}ʹʹ Hg + + + {0}mbar + {0}mbar + + + {0}km/t + {0}km/t + + + {0}m/s + {0}m/s + + + {0} eng mil/t + {0} eng mil/t + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} eng mil³ + {0} eng mil³ + + + {0}L + {0}L + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + + + ja + nei + + + + diff --git a/library/Zend/Locale/Data/nb_NO.xml b/library/Zend/Locale/Data/nb_NO.xml new file mode 100755 index 000000000..7ee495b78 --- /dev/null +++ b/library/Zend/Locale/Data/nb_NO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nb_SJ.xml b/library/Zend/Locale/Data/nb_SJ.xml new file mode 100755 index 000000000..e07c16df9 --- /dev/null +++ b/library/Zend/Locale/Data/nb_SJ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nd.xml b/library/Zend/Locale/Data/nd.xml new file mode 100755 index 000000000..1e69f310c --- /dev/null +++ b/library/Zend/Locale/Data/nd.xml @@ -0,0 +1,752 @@ + + + + + + + + + + + + isi-Akhani + isi-Amaharikhi + isi-Alabhu + isi-Bhelarashiyani + isi-Bulgaria + isi-Bhengali + isi-Czech + isi-Jalimani + isi-Giliki + isi-Ngisi + isi-Sipeyini + isi-Pheshiyani + isi-Fulentshi + isi-Hausa + isi-Hindi + isi-Hangari + isi-Indonesia + isi-Igbo + isi-Italiano + isi-Japhani + isi-Java + isi-Khambodiya + isi-Koriya + isi-Malayi + isi-Burma + isiNdebele + isi-Nepali + isi-Dutch + isi-Phunjabi + isi-Pholoshi + isi-Potukezi + isi-Romani + isi-Rashiya + isi-Ruwanda + isi-Somali + isi-Swidishi + isi-Thamil + isi-Thayi + isi-Thekishi + isi-Ukrain + isi-Udu + isi-Vietnamese + isi-Yorubha + isi-China + isi-Zulu + + + Andora + United Arab Emirates + Afghanistan + Antigua le Barbuda + Anguilla + Albania + Armenia + Netherlands Antilles + Angola + Ajentina + Samoa ye Amelika + Austria + Australia + Arubha + Azerbaijan + Bhosnia le Herzegovina + Bhabhadosi + Bhangiladeshi + Bhelgium + Bhukina Faso + Bhulgariya + Bhahareni + Bhurundi + Bhenini + Bhemuda + Brunei + Bholiviya + Brazili + Bhahamas + Bhutani + Botswana + Bhelarusi + Bhelize + Khanada + Democratic Republic of the Congo + Central African Republic + Khongo + Switzerland + Ivory Coast + Cook Islands + Chile + Khameruni + China + Kholombiya + Khosta Rikha + Cuba + Cape Verde Islands + Cyprus + Czech Republic + Germany + Djibouti + Denmakhi + Dominikha + Dominican Republic + Aljeriya + Ecuador + Estonia + Egypt + Eritrea + Spain + Ethiopia + Finland + Fiji + Falkland Islands + Micronesia + Furansi + Gabhoni + United Kingdom + Grenada + Georgia + Gwiyana ye Furansi + Ghana + Gibraltar + Greenland + Gambiya + Guinea + Guadeloupe + Equatorial Guinea + Greece + Guatemala + Guam + Guinea-Bissau + Guyana + Honduras + Croatia + Hayiti + Hungary + Indonesiya + Ireland + Isuraeli + Indiya + British Indian Ocean Territory + Iraki + Iran + Iceland + Itali + Jamaica + Jodani + Japan + Khenya + Kyrgyzstan + Cambodia + Khiribati + Khomoro + Saint Kitts and Nevis + North Korea + South Korea + Khuweiti + Cayman Islands + Kazakhstan + Laos + Lebhanoni + Saint Lucia + Liechtenstein + Sri Lanka + Libheriya + Lesotho + Lithuania + Luxembourg + Latvia + Libhiya + Morokho + Monakho + Moldova + Madagaska + Marshall Islands + Macedonia + Mali + Myanmar + Mongolia + Northern Mariana Islands + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Meksikho + Malezhiya + Mozambique + Namibhiya + New Caledonia + Niger + Norfolk Island + Nigeriya + Nicaragua + Netherlands + Noweyi + Nephali + Nauru + Niue + New Zealand + Omani + Panama + Pheru + Pholinesiya ye Fulansi + Papua New Guinea + Philippines + Phakistani + Pholandi + Saint Pierre and Miquelon + Pitcairn + Puerto Rico + Palestinian West Bank and Gaza + Portugal + Palau + Paraguay + Kathari + Réunion + Romania + Rashiya + Ruwanda + Saudi Arabia + Solomon Islands + Seychelles + Sudani + Sweden + Singapore + Saint Helena + Slovenia + Slovakia + Sierra Leone + San Marino + Senegali + Somaliya + Suriname + São Tomé and Príncipe + El Salvador + Syria + Swaziland + Turks and Caicos Islands + Chadi + Thogo + Thayilandi + Tajikistan + Thokelawu + East Timor + Turkmenistan + Tunisiya + Thonga + Thekhi + Trinidad le Tobago + Thuvalu + Thayiwani + Tanzaniya + Yukreini + Uganda + Amelika + Yurugwai + Uzbekistan + Vatican State + Saint Vincent and the Grenadines + Venezuela + British Virgin Islands + U.S. Virgin Islands + Vietnam + Vhanuatu + Wallis and Futuna + Samowa + Yemeni + Mayotte + Mzansi ye Afrika + Zambiya + Zimbabwe + + + + [a b c d e f g h i j k l m n o p q s t u v w x y z] + [r] + [A B C D E F G H I J K L M N O P Q S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Zib + Nhlo + Mbi + Mab + Nkw + Nhla + Ntu + Ncw + Mpan + Mfu + Lwe + Mpal + + + Zibandlela + Nhlolanja + Mbimbitho + Mabasa + Nkwenkwezi + Nhlangula + Ntulikazi + Ncwabakazi + Mpandula + Mfumfu + Lwezi + Mpalakazi + + + + + Z + N + M + M + N + N + N + N + M + M + L + M + + + + + + + Son + Mvu + Sib + Sit + Sin + Sih + Mgq + + + Sonto + Mvulo + Sibili + Sithathu + Sine + Sihlanu + Mgqibelo + + + + + S + M + S + S + S + S + M + + + + + + + K1 + K2 + K3 + K4 + + + Kota 1 + Kota 2 + Kota 3 + Kota 4 + + + + + + UKristo angakabuyi + Ukristo ebuyile + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Umnyaka + + + Inyangacale + + + Iviki + + + Ilanga + Izolo + Lamuhla + Kusasa + + + Ilanga leviki + + + Ihola + + + Umuzuzu + + + Isekendi + + + Isikhathi + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Dola laseArab + + + Kwanza yase Angola + + + Dola yase Australia + + + Dinari yase Bhahareni + + + Fulenki yase Bhurundi + + + Phula yase Botswana + + + Dola yase Khanada + + + Fulenki yase Khongo + + + Fulenki yase Swisi + + + Yuan Renminbi yase China + + + Escudo Caboverdiano + + + Fulenki yase Jibhuthi + + + Dinali yase Aljeriya + + + Phawundi laseGibhide + + + Nakfa yase Eritrea + + + Dola laseEthiopia + + + Yuro + + + Phawundi yase Ngilandi + + + Sedi yase Ghana + + + Dalasi yase Gambia + + + Fulenki yase Gine + + + Rupi yase Indiya + + + Yeni yase Japhani + + + Shilingi yase Kenya + + + Fulenki yase Khomoro + + + Dola yase Libheriya + + + Lothi yase Lesotho + + + Dinari yase Libya + + + Dirham yase Morokho + + + Fulenki yase Malagasi + + + Ugwiya yase Moritaniya + + + Rupi yase Morishasi + + + Kwacha yase Malawi + + + Metikali yase Mozambiki + + + Dola yase Namibiya + + + Nayira yase Nijeriya + + + Fulenki yase Ruwanda + + + Riyal yase Saudi + + + Rupi yase Seyisheli + + + Dinari yase Sudani + + + Phawundi yase Sudani + + + Phawundindi laseSt Helena + + + Leyoni + + + Shilingi yase Somaliya + + + Dobra yase Sao Tome lo Principe + + + Lilangeni + + + Dinari yase Tunisiya + + + Shilingi yase Tanzaniya + + + Shilingi yase Uganda + + + Dola yase Amelika + + + Fulenki CFA BEAC + + + Fulenki CFA BCEAO + + + Randi yase Afrika ye Zanzi + + + Kwacha yase Zambiya (1968–2012) + + + Kwacha yase Zambiya + + + Dola yase Zimbabwe + + + + + + Yebo:Y + Hatshi:H + + + + diff --git a/library/Zend/Locale/Data/nd_ZW.xml b/library/Zend/Locale/Data/nd_ZW.xml new file mode 100755 index 000000000..37403b835 --- /dev/null +++ b/library/Zend/Locale/Data/nd_ZW.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ne.xml b/library/Zend/Locale/Data/ne.xml new file mode 100755 index 000000000..bea6714e2 --- /dev/null +++ b/library/Zend/Locale/Data/ne.xml @@ -0,0 +1,5055 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + अब्खाजियाली + अफ्रिकान्स + अम्हारिक + अरबी + अधुनिक प्रमाणिक अरबी + आसामी + अजरबैजानी + वेलारूसी + बुल्गेरियाली + बंगाली + तिब्बती + बोस्नियाली + क्याटालन + चेक + वेल्श + डेनिश + जर्मन + अष्ट्रियन जर्मन + स्वीस हाई जर्मन + ग्रीक + अंग्रेजी + अष्ट्रेलियाली अंग्रेजी + क्यानाडाली अंग्रेजी + वेलायती अंग्रेजी + वेलायती अंग्रेजी + अमेरिकी अंग्रेजी + अमेरिकी अंग्रेजी + एस्पेरान्तो + स्पेनिस + ल्याटिन अमेरिकी स्पेनिस + युरोपेली स्पेनिस + स्पेनिस (मेक्सिकन) + इस्टोनियाली + बास्क + फारसी + फिनिश + फिलिपिनी + फिजियाली + फारोज + फ्रान्सेली + क्यानाडाली फ्रान्सेली + स्वीस फ्रान्सेली + फ्रिजीयन + आइरिश + स्कट्स गाएलिक + गलिसियाली + गुजरानी + स्वीस जर्मन + गुजराती + हाउसा + हवाइयन + हिब्रु + हिन्दी + क्रोएशियाली + हैटियाली + हंग्रीयाली + आर्मेनियाली + इन्टर्लिङ्गुआ + इन्डोनेसियाली + अन्तरभाषी + इग्बो + आइसल्यान्डिक + इटालियन + जापानी + जाभानिज + जर्जियाली + काजाख + खमेर + कन्नाडा + कोरियाली + काश्मीरी + कुर्दिश + किर्गिज + ल्याटिन + लक्जेम्बर्गिस + लिंगाला + लाओ + लिथुआनियाली + लात्भियाली + मलागासी + माओरी + म्याकेडोनियन + मलयालम + मंगोल + मराठी + मलाया + माल्टिज + वर्मेली + नर्वेली बोकमाल + नेपाली + डच + फ्लेमिश + नर्वेली नाइनोर्स्क + नर्वेजियाली + अक्सिटन + ओरिया + पंजाबी + पोलिश + पाश्तो + पोर्तुगी + पोर्तुगी (युरोप) + क्वेचुवा + रोमानिश + रोमानियाली + रूसी + संस्कृत + सिन्धी + सिन्हाला + स्लोभाकियाली + स्लोभेनियाली + सोमाली + अल्बेनियन + सर्बियाली + सुडानी + स्विडिश + स्वाहिली + तामिल + तेलुगु + ताजिक + थाई + तिग्रीन्या + टर्कमेन + क्लिङ्गन + टोङ्गन + टर्किश + तातार + उइघुर + युक्रेनी + अज्ञात भाषा + उर्दु + उज्बेकी + भियतनामी + वुलुफ + खोसा + यिद्दिस + योरूवा + प्रमाणिक मोरोक्कोन तामाज्ईट + चिनियाँ + सरलिकृत चिनियाँ + परम्परागत चिनियाँ + जुलु + भाषिक सामग्री छैन + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + विश्व + अफ्रिका + उत्तर अमेरिका + दक्षिण अमेरिका + ओसनिया + पश्चिमी अफ्रिका + केन्द्रीय अमेरिका + पूर्वी अफ्रिका + उत्तरी अफ्रिका + मध्य अफ्रिका + दक्षिणी अफ्रिका + अमेरिकास + उत्तरी अमेरिका + क्यारिबियन + पूर्वी एशिया + दक्षिणी एशिया + दक्षिण पूर्वी एशिया + दक्षिणी युरोप + अष्ट्रालासिया + मेलानेसिया + माइक्रोनेसियाली क्षेत्र + पोलिनेशिया + एशिया + केन्द्रीय एशिया + पश्चिमी एशिया + युरोप + पूर्वी युरोप + उत्तरी युरोप + पश्चिमी युरोप + ल्याटिन अमेरिका + एस्केन्सन टापु + अन्डोर्रा + संयुक्त अरब इमिराट्स + अफगानिस्तान + एन्टिगुआ र बारबुडा + आङ्गुइला + अल्बानिया + आर्मेनिया + नेदरल्याण्ड्स एण्टिलिस + अङ्गोला + अन्टारतिका + अर्जेन्टिना + अमेरिकी समोआ + अष्ट्रिया + अष्ट्रेलिया + आरूबा + अलान्ड टापुहरु + अजरबैजान + बोस्निया एण्ड हर्जगोभिनिया + बार्बाडोस + बङ्गलादेश + बेल्जियम + बर्किना फासो + बुल्गेरिया + बहराइन + बुरूण्डी + बेनिन + सेन्ट बार्थालेमी + बर्मुडा + ब्रुनाइ + बोलिभिया + क्यारिवियन नेदरल्याण्ड्स + ब्राजिल + बहामास + भुटान + बुभेट टापु + बोट्स्वाना + बेलारूस + बेलिज + क्यानाडा + कोकोस (किलिंग) टापुहरु + कोङ्गो-किन्शासा + कङ्गो (डीआर्‌सी) + केन्द्रीय अफ्रिकी गणतन्त्र + कोङ्गो - ब्राज्जाभिल्ले + कङ्गो (गणतन्त्र) + स्विजरल्याण्ड + आइभरी कोस्ट + कुक टापुहरु + चिली + क्यामरून + चीन + कोलोम्बिया + क्लिप्पेर्टन टापु + कोष्टारिका + क्युबा + केप भर्डे + कुराकाओ + क्रिष्टमस टापु + साइप्रस + चेक गणतन्त्र + जर्मनी + डियगो गार्सिया + डिजिबुटी + डेनमार्क + डोमिनिका + डोमिनिकन गणतन्त्र + अल्जेरिया + सिउटा र मेलिला + इक्वडेर + इस्टोनिया + इजिप्ट + पश्चिमी साहारा + एरित्रिया + स्पेन + इथियोपिया + युरोपियन युनियन + फिन्ल्याण्ड + फिजी + फकल्याण्ड टापुहरु + फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास) + माइक्रोनेसिया + फारोर टापुहरु + फ्रान्स + गावोन + बेलायत + बेलायत + ग्रेनाडा + जर्जिया + फ्रान्सेली गायना + गुएर्नसे + घाना + जिब्राल्टार + ग्रिनल्याण्ड + गाम्विया + गिनी + ग्वाडेलुप + भू-मध्यीय गिनी + ग्रिस + दक्षिण जर्जिया र दक्षिण स्यान्डवीच टापुहरू + ग्वाटेमाला + गुवाम + गिनी-बिसाउ + गुयाना + हङकङ चिनिया समाजवादी स्वायत्त क्षेत्र + हङकङ + हर्ड टापु एण्ड म्याकडोनाल्ड टापुहरु + हन्डुरास + क्रोएशिया + हैटी + हङ्गेरी + क्यानारी टापुहरू + इन्डोनेशिया + आयरल्याण्ड + इजरायल + आइज्ले अफ् म्यान + भारत + बेलायती हिन्द महासागर क्षेत्र + इराक + इरान + आइस्ल्याण्ड + इटाली + जर्सी + जमाइका + जोर्डन + जापान + केन्या + किर्गिस्थान + कम्बोडिया + किरिबाटी + कोमोरोस + सेन्ट किट्स र नेभिस + उत्तर कोरिया + दक्षिण कोरिया + कुवेत + केयमान टापु + काजाकस्तान + लाओस + लेबनन + सेन्ट लुसिया + लिएखटेन्स्टाइन + श्रीलङ्का + लाइबेरिया + लेसोथो + लिथुअनिया + लक्जेमबर्ग + लाट्भिया + लिबिया + मोरोक्को + मोनाको + माल्डोभा + मोन्टेनेग्रो + सेन्ट मार्टिन + मडागास्कर + मार्शल टापुहरु + म्याकेडोनिया + म्याकेडोनिया (फाइरम) + माली + म्यान्मार (बर्मा) + मङ्गोलिया + मकावो चिनिँया स्वशासित क्षेत्र + मकावो + उत्तरी मारिआना टापु + मार्टिनिक + माउरिटानिया + मोन्टसेर्राट + माल्टा + माउरिटस + माल्दिभ्स + मालावी + मेक्सिको + मलेसिया + मोजाम्बिक + नामिबिया + नयाँ कालेडोनिया + नाइजर + नोरफोल्क टापु + नाइजेरिया + निकारागुवा + नेदरल्याण्ड्स + नर्वे + नेपाल + नाउरू + नियुइ + न्युजिल्याण्ड + ओमन + पनामा + पेरू + फ्रान्सेली पोलिनेसिया + पपुआ न्यू गाइनिया + फिलिपिन्स + पाकिस्तान + पोल्याण्ड + सेन्ट पिर्रे र मिक्केलोन + पिटकाइर्न टापुहरु + पुएर्टो रिको + प्यालेस्टनी भू-भागहरु + प्यालेसटाइन + पोर्चुगल + पलाउ + प्याराग्वे + कतार + बाह्य ओसनिया + रियुनियन + रोमानिया + सर्बिया + रूस + रवाण्डा + साउदी अरब + सोलोमोन टापुहरु + सेचेलेस + सुडान + स्विडेन + सिङ्गापुर + सेन्ट हेलेना + स्लोभेनिया + सभाल्बार्ड र जान मायेन + स्लोभाकिया + सिएर्रा लिओन + सान् मारिनो + सेनेगाल + सोमालिया + सुरिनेम + दक्षिणी सुडान + साओ टोमे र प्रिन्सिप + एल् साल्भाडोर + सिन्ट मार्टेन + सिरिया + स्वाजिल्याण्ड + ट्रिस्टान डा कुन्हा + तुर्क र काइकोस टापु + चाड + फ्रान्सेली दक्षिणी क्षेत्रहरु + टोगो + थाइल्याण्ड + ताजिकिस्तान + तोकेलाउ + टिमोर-लेस्टे + पृर्वी टीमोर + तुर्कमेनिस्तान + ट्युनिसिया + टोंगा + टर्की + त्रिनिडाड एण्ड टोबागो + तुभालु + ताइवान + तान्जानिया + युक्रेन + युगाण्डा + संयुक्त राज्य बाह्य टापुहरु + संयुक्त राज्य + अमेरिका + उरूग्वे + उज्बेकिस्तान + भेटिकन सिटी + सेन्ट भिन्सेन्ट र ग्रेनाडिन्स + भेनेजुएला + बेलायती भर्जिन टापुहरु + संयुक्त राज्य भर्जिन टापुहरु + भिएतनाम + भानुआतु + वालिस र फुटुना + सामोआ + कोसोवो + येमेन + मायोट्ट + दक्षिण अफ्रिका + जाम्बिया + जिम्बाबे + अपरिचित क्षेत्र + + + पूर्वी आर्मेनियाली + कम्प्युटर + + + पात्रो + क्रमबद्ध सुची + मुद्रा + अङ्कहरू + + + अरबी भारतीय अङ्कहरू + विस्तृत अरबी भारतीय अङ्कहरू + आर्मेनियाली अङ्कहरू + आर्मनियाली साना अङ्कहरू + बङ्गाली अङ्कहरू + परम्परागत चिनिँया क्रमबद्धता पद्दति - बिग फाइभ + बुद्धिष्ट पात्रो + चिनिँया पात्रो + देवनागरी अङ्कहरू + पूर्वनिर्धारित युनिकोड क्रमबद्ध सूची + इथियोपाली अङ्कहरू + पुरा चौडाईका अङ्कहरू + सरलिकृत चिनियाँ क्रमबद्धता पद्दति-गीबीटुथ्रीवानटु + जर्जियाली अङ्कहरू + ग्रेगोरियन पात्रो + ग्रीक अङ्कहरू + ग्रीक साना अङ्कहरू + गुजराती अङ्कहरू + गुरूमुखी अङ्कहरू + चिनियाँ दशमलव अङ्कहरू + सरलिकृत चिनियाँ अङ्कहरू + सरलिकृत चिनियाँ वित्तीय अङ्कहरू + परम्परागत चिनियाँ अङ्कहरू + परम्परागत चिनियाँ वित्तीय अङ्कहरू + हिब्रु अङ्कहरू + हिब्रु पात्रो + भारतीय राष्ट्रिय पात्रो + इस्लामी पात्रो + इस्लामी नागरिक पात्रो + जापानी पात्रो + जापानी अङ्कहरू + जापानी वित्तीय अङ्कहरू + खमेर अङ्कहरू + कन्नाडा अङ्कहरू + लाओ अङ्कहरू + पश्चिमी अङ्कहरू + मलायलम अङ्कहरू + म्यान्मारका अङ्कहरू + ओरिया अङ्कहरू + टेलिफोन पुस्तिका क्रमबद्धतापद्दति + पिनयिन क्रमबद्धता पद्दति + चिनिँया गणतन्त्र पात्रो + रोमन अङ्कहरू + रोमन साना केसका अङ्कहरू + सामान्य खोजी + स्तर + स्ट्रोक क्रमबद्धता पद्दति + परम्परागत तामिल अङ्कहरू + तामिल अङ्कहरू + तेलेगु अङ्कहरू + थाई अङ्कहरू + तिब्बती अङ्कहरू + परम्परागत क्रमबद्धता पद्दति + + + मेट्रिक + UK + US + + + {0} + {0} + {0} + + + + [\u093C \u0901 \u0902 ः ॐ अ आ इ ई उ ऊ ऋ ऌ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ह ऽ ा ि ी \u0941 \u0942 \u0943 \u0944 \u0945 \u0947 \u0948 ॉ ो ौ \u094D] + [\u200C\u200D] + [अ आ इ ई उ ऊ ऋ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह] + {0}… + …{0} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + G y MMMM d, EEEE + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + G y + G y MMM + G y MMM d + G y MMM d, E + L + MM-dd + MM/dd, E + LLL + MMM d + MMM d, E + G y + G y + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM/dd, E – MM/dd, E + MM/dd, E – MM/dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + G y–y + + + GGGGG y-MM – y-MM + GGGGG y-MM – y-MM + + + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + + + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + + + G y MMM–MMM + G y MMM – y MMM + + + G y MMM d–d + G y MMM d – MMM d + G y MMM d – y MMM d + + + G y MMM d, E – MMM d, E + G y MMM d, E – MMM d, E + G y MMM d, E – y MMM d, E + + + G y MMMM–MMMM + G y MMMM – y MMMM + + + + + + + + + जनवरी + फेब्रुअरी + मार्च + अप्रिल + मे + जुन + जुलाई + अगस्ट + सेप्टेम्बर + अक्टोबर + नोभेम्बर + डिसेम्बर + + + + + + + + + + + + १० + ११ + १२ + + + जनवरी + फेब्रुअरी + मार्च + अप्रिल + मे + जुन + जुलाई + अगस्ट + सेप्टेम्बर + अक्टोबर + नोभेम्बर + डिसेम्बर + + + + + जनवरी + फेब्रुअरी + मार्च + अप्रिल + मे + जुन + जुलाई + अगस्ट + सेप्टेम्बर + अक्टोबर + नोभेम्बर + डिसेम्बर + + + + + + + + + + + + १० + ११ + १२ + + + जनवरी + फेब्रुअरी + मार्च + अप्रिल + मे + जुन + जुलाई + अगस्ट + सेप्टेम्बर + अक्टोबर + नोभेम्बर + डिसेम्बर + + + + + + + आइत + सोम + मङ्गल + बुध + बिही + शुक्र + शनि + + + + सो + + बु + बि + शु + + + + आइत + सोम + मङ्गल + बुध + बिही + शुक्र + शनि + + + आइतबार + सोमबार + मङ्गलबार + बुधबार + बिहीबार + शुक्रबार + शनिबार + + + + + आइत + सोम + मङ्गल + बुध + बिही + शुक्र + शनि + + + + सो + + बु + बि + शु + + + + आइत + सोम + मङ्गल + बुध + बिही + शुक्र + शनि + + + आइतबार + सोमबार + मङ्गलबार + बुधबार + बिहीबार + शुक्रबार + शनिबार + + + + + + + पहिलो सत्र + दोस्रो सत्र + तेस्रो सत्र + चौथो सत्र + + + + + + + + + पहिलो सत्र + दोस्रो सत्र + तेस्रो सत्र + चौथो सत्र + + + + + पहिलो सत्र + दोस्रो सत्र + तेस्रो सत्र + चौथो सत्र + + + + + + + + + पहिलो सत्र + दोस्रो सत्र + तेस्रो सत्र + चौथो सत्र + + + + + + + पूर्व मध्यान्ह + उत्तर मध्यान्ह + + + + + + ईसा पूर्व + सन् + + + + + + y MMMM d, EEEE + + + + + y MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + mm:ss + y + y-MM + y-MM-dd + y-MM-dd, E + y MMM + y MMM d + y MMM d, E + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + + + y MMM–MMM + y MMM – y MMM + + + y MMM d–d + y MMM d – MMM d + y MMM d – y MMM d + + + y MMM d, E – MMM d, E + y MMM d, E – MMM d, E + y MMM d, E – y MMM d, E + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + काल + + + बर्ष + पहिलो वर्ष + यो वर्ष + अर्को वर्ष + + {0} वर्षमा + {0} वर्षमा + + + {0} वर्ष अघि + {0} वर्ष अघि + + + + महिना + गएको महिना + यो महिना + अर्को महिना + + {0} महिनामा + {0} महिनामा + + + {0} महिना पहिले + {0} महिना पहिले + + + + हप्ता + गएको हप्ता + यो हप्ता + आउने हप्ता + + {0} हप्तामा + {0} हप्तामा + + + {0} हप्ता पहिले + {0} हप्ता पहिले + + + + बार + अस्ति + हिजो + आज + भोली + + {0} दिनमा + {0} दिनमा + + + {0} दिन पहिले + {0} दिन पहिले + + + + हप्ताको बार + + + गत आईतबार + यो आईतबार + अर्को आईतबार + + + गत सोमबार + यो सोमबार + अर्को सोमबार + + + गत मंगलबार + यो मंगलबार + अर्को मंगलबार + + + गत बुधबार + यो बुधबार + अर्को बुधबार + + + गत बिहिबार + यो बिहिबार + अर्को बिहिबार + + + गत शुक्रबार + यो शुक्रबार + अर्को शुक्रबार + + + गत शनिबार + यो शनिबार + अर्को शनिबार + + + पूर्व मध्यान्ह/उत्तर मध्यान्ह + + + घण्टा + + {0} घण्टामा + {0} घण्टामा + + + {0} घण्टा पहिले + {0} घण्टा पहिले + + + + मिनेट + + {0} मिनेटमा + {0} मिनेटमा + + + {0} मिनेट पहिले + {0} मिनेट पहिले + + + + दोस्रो + अब + + {0} सेकेण्डमा + {0} सेकेण्डमा + + + {0} सेकेण्ड पहिले + {0} सेकेण्ड पहिले + + + + क्षेत्र + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} समय + {0} (+१) + {0} (+०) + {1} ({0}) + + अज्ञात शहर + + + आन्डोर्रा + + + दुबही + + + काबुल + + + एण्टिगुवा + + + एङ्ग्विल्ला + + + टिराने + + + येरेभान + + + लुवान्डा + + + रोथेरा + + + पाल्मेर + + + सिओआ + + + माउसन + + + डेभिस + + + भास्टोक + + + केजे + + + दुमोन्ट डि उर्भेल्ले + + + माकमुर्डो + + + रियो ग्यालेगोस + + + मेन्डोजा + + + सान जुवान + + + उशुआइआ + + + ला रियोजा + + + सान लुइस + + + कातामार्का + + + साल्टा + + + जुजुई + + + टुकुमान + + + कोरडोवा + + + ब्यनेश आयर्स + + + पागो पागो + + + भियना + + + पर्थ + + + इयुक्ला + + + डार्विन + + + एडेलेड + + + ब्रोकन हिल + + + क्युरी + + + मेल्बर्न + + + होभार्ट + + + लिन्डेम्यान + + + सिड्नी + + + ब्रिस्बेन + + + मक्वारिई + + + लर्ड होवे + + + एरूवा + + + म्यारिह्याम्न + + + बाकु + + + साराजेभो + + + वार्वाडोस् + + + ढाका + + + ब्रसेल्स + + + औआगाडौगौ + + + सोफिया + + + बहराईन + + + बुजुम्बुरा + + + पोर्टो-नोभो + + + सेन्ट बार्थेलेमी + + + बर्मुडा + + + ब्रुनाइ + + + ला पाज + + + कालेन्देजिक + + + आइरनेपे + + + रियो ब्रान्को + + + पोर्टो भेल्हो + + + बोआ भिष्टा + + + मानाउस + + + क्युइआबा + + + सान्टारेम + + + क्याम्पो ग्रान्डे + + + बेलेम + + + आरागुवाना + + + साओ पाउलो + + + बाहिया + + + फोर्टालेजा + + + मासेइओ + + + रिसाइफ + + + नोरोन्हा + + + नास्साउ + + + थिम्पु + + + गावोरोन + + + मिन्स्क + + + वेलिज + + + डेजन + + + ह्वाइटहर्स + + + इनुभिक + + + भ्यानकोभर + + + डेजन क्रिक + + + क्रेस्टन + + + येल्लोनाइफ + + + एड्मोन्टन + + + स्विफ्ट करेण्ट + + + क्याम्ब्रिज बे + + + रेजिना + + + विन्निपेग + + + रिजोलुट + + + रेनिरिभर + + + रान्किन इन्लेट + + + कोराल बन्दरगाहा + + + थण्डर बे + + + निपिगन + + + टोरोण्टो + + + इक्वालुइट + + + पाङ्निरतुङ + + + मोन्कटन + + + हालेफाक्स + + + गुज बे + + + ग्लेस बे + + + ब्लान्क-साब्लोन + + + सेन्ट जोन्स + + + कोकोस + + + किन्शासा + + + लुबुम्बासी + + + बाङ्गुवी + + + ब्राजाभिल्ले + + + जुरिक + + + अविड्जान + + + राओतोंगा + + + इस्टर + + + सान्टिआगो + + + डोउआला + + + काश्गर + + + उरूम्की + + + चोङकिङ + + + सान्घाई + + + हार्विन + + + बोगोटा + + + कोष्टा रिका + + + हवाना + + + केप भर्डे + + + कुराकाओ + + + ख्रिस्टमस + + + निकोसिया + + + प्राग + + + बुसिन्नगन + + + बर्लिन + + + जिबौंटी + + + कोपेनह्यागन + + + डोमिनिका + + + सान्टो डोमिन्गो + + + अल्जियर्स + + + गलापागोस + + + गुयाक्विल + + + ताल्लिन + + + काइरो + + + एल् आइयुन + + + आस्मारा + + + क्यानारी + + + सेउटा + + + म्याड्रिड + + + एड्डिस आबाबा + + + हेल्सिन्की + + + फिजी + + + स्टान्ले + + + चूक + + + पोनापे + + + कोस्राए + + + फारोइ + + + पेरिस + + + लिब्रेभिल्ले + + + + ब्रिटिश ग्रीष्मकालीन समय + + लण्डन + + + ग्रेनाडा + + + तिबिलिसी + + + कायेन्ने + + + गुएर्नसे + + + अक्रा + + + जिब्राल्टार + + + थुले + + + नूक + + + ईट्टोक्कोरटूर्मिट + + + डान्मार्कशाभन + + + बन्जुल + + + कोनाक्री + + + ग्वाडेलुप + + + मालाबो + + + एथेन्स + + + दक्षिण जर्जिया + + + ग्वाटेमाला + + + गुवाम + + + बिसाउ + + + गुयाना + + + हंकग + + + टेगुसिगाल्पा + + + जाग्रेब + + + पोर्ट-अउ-प्रिन्स + + + बुडापेस्ट + + + जाकार्ता + + + पोन्टिआनाक + + + माकास्सार + + + जयापुरा + + + + आईरिस ग्रीष्मकालीन समय + + डब्लिन + + + जेरुसलेम + + + इजल अफ् म्यान + + + कोलकाता + + + चागोस + + + बगदाद + + + तेहेराण + + + रेक्जाभिक + + + रोम + + + जर्सी + + + जमाइका + + + आम्मान + + + टोकियो + + + नाइरोबी + + + बिसकेक् + + + फेनोम फेन + + + एन्डरबरी + + + किरितिमाटी + + + तरवा + + + कोमोरो + + + सेन्ट् किट्स + + + प्योग्ङाग + + + स्योल + + + कुवेत + + + केम्यान + + + आक्टाउ + + + ओरल + + + आक्टोब + + + किजिलोर्डा + + + आल्माटी + + + भेतनाम + + + बेईरुट + + + सेन्ट लुसिया + + + भाडुज + + + कोलम्बो + + + मोन्रोभिया + + + मासेरू + + + भिल्निअस + + + लक्जेम्वर्ग + + + रिगा + + + त्रिपोली + + + कासाब्लान्का + + + मोनाको + + + चिसिनाउ + + + पड्गोरिका + + + म्यारिगट + + + अन्टानारिभो + + + क्वाजालेइन + + + माजुरो + + + स्कोपजे + + + बोमाको + + + रान्गुन + + + होभ्ड + + + उलानबटार + + + चोइबाल्सान + + + मकाउ + + + साईपन + + + मार्टिनिक + + + नोउआकचोट + + + मन्टसेर्राट + + + माल्टा + + + मउरिटिअस + + + माल्दिभ्स + + + ब्लान्टायर + + + तिजुआना + + + सान्टा ईसाबेल + + + हेर्मोसिल्लो + + + माजाट्लान + + + चिहुआहुआ + + + बाहिअ बन्देर्स + + + वोन्जिनागा + + + मोन्टेर्रे + + + मेक्सिको सिटी + + + माट्तामोरोस् + + + मेरिडा + + + कानकुन + + + कुआ लाम्पुर + + + कुचिङ + + + मापुतो + + + विन्डहोएक + + + नोउमेअ + + + नायमे + + + नरफोल्क + + + लागोस + + + मानागुवा + + + एम्स्ट्र्डम + + + ओस्लो + + + काठमाण्डौं + + + नाउरु + + + निउई + + + चाथाम + + + अक्कल्यान्ड + + + मस्क्याट + + + पानामा + + + लिमा + + + ताहिती + + + मार्केसास + + + ग्याम्बियर + + + पोर्ट मोरेस्बी + + + मनिला + + + कराची + + + वारसअ + + + मिक्विलन + + + पितकाईरन + + + प्युर्टो रिको + + + गाजा + + + हिब्रोन + + + आजोर्स + + + माडेइरा + + + लिस्बोन + + + पलाउ + + + असन्सियन + + + कतार + + + रियुनियन + + + वुचारेस्ट + + + बेलग्रेड + + + कालिनिनग्राद + + + मस्को + + + भोल्गोग्राद + + + सामारा + + + एकटरिनबुर्ग + + + ओम्स्क + + + नोबोसिबिर्स्क + + + नेभोकुजनेस्क + + + क्रास्नोयार्स्क + + + इर्कुत्स्क + + + याकुत्स्क + + + भ्लाडिभास्टोक + + + खान्दिगा + + + साखालिन + + + उस्ट-नेरा + + + मागाडान + + + कामचट्का + + + आनाडियर + + + किगाली + + + रियाद + + + गुअडालकनाल + + + माहे + + + खार्टउम + + + स्टकहोल्म + + + सिंगापुर + + + सेन्ट हेलेना + + + लजुबिजाना + + + लङयिअरबाइएन + + + ब्राटिस्लाभा + + + फ्रिटाउन + + + सान मारिनो + + + डाकार + + + मोगाडिशु + + + पारामारिवो + + + जुबा + + + साओ टोमे + + + एल् साल्भाडोर + + + लोअर प्रिन्स्स क्वार्टर + + + दामास्कस् + + + एमबाबेन + + + ग्रान्ड टर्क + + + एन्‌जामेना + + + केर्गुएलेन + + + लोम + + + बैंकक + + + दस्सान्बे + + + फाकाओफो + + + दिल्ली + + + अस्काबाट + + + टुनिस + + + टंगातपु + + + ईस्टानबुल + + + पोर्ट अफ् स्पेन + + + फुनाफुति + + + ताईपे + + + डार एस् सलाम + + + उझगोरद + + + किभ + + + सिम्फेरोपोल + + + जापोरोझ्ये + + + काम्पाला + + + मिडवे + + + जोन्सटन + + + वेक + + + आडाक + + + नोमे + + + होनोलुलु + + + एङ्कोरेज + + + याकुतात + + + सित्तका + + + जुनिउ + + + मेट्लाक्टला + + + लस् एन्जेलस + + + बोइज + + + फोनिक्स + + + डेन्भर + + + बेलुआ, उत्तर डोकोटा + + + नयाँ सालेम, उत्तर डाकोटा + + + उत्तर डाकोटा, केन्द्र + + + चिकागो + + + मेनोमिनी + + + भिन्सेन्स + + + पिटर्सबर्ग, इन्डियाना + + + टेल सिटी, इन्डियाना + + + नोक्स, इण्डियाना + + + विनामाक, इन्डियाना + + + मारेन्गो, इन्डियाना + + + इण्डियानापोलिस + + + लुइसभिल्ले + + + भेभे, इन्डियाना + + + मोन्टिसेल्लो,केन्टकी + + + डिट्रोइट + + + न्युयोर्क + + + मोन्टेभिडियो + + + समारकण्ड + + + तास्केन्ट + + + भ्याटिकन + + + सेन्ट भिन्सेन्ट + + + काराकास + + + टार्टोला + + + सेन्ट थोमस + + + हो ची मिन्ह शहर + + + ईफाते + + + वालिस + + + अपिया + + + एडेन + + + मायोट्टे + + + जोहानेसवर्ग + + + लुसाका + + + हरारे + + + + अफगानिस्तान समय + + + + + केन्द्रीय अफ्रिकी समय + + + + + पुर्वी अफ्रिकी समय + + + + + दक्षिण अफ्रिकी समय + + + + + पश्चिम अफ्रिकी समय + पश्चिम अफ्रिकी प्रमाणीक समय + पश्चिम अफ्रिकी ग्रीष्मकालीन समय + + + + + अलास्का समय + अलास्का प्रमाणिक समय + अलस्का दिनको समय + + + + + अमेजन समय + अमेजन प्रमाणिक समय + अमेजन ग्रीष्मकालीन समय + + + + + उत्तर अमेरिका केन्द्रिय समय + उत्तर अमेरिका केन्द्रिय प्रमाणिक समय + उत्तर अमेरिका केन्द्रिय दिनको समय + + + + + उत्तर अमेरिकी पूर्वी समय + उत्तर अमेरिकी प्रमाणिक समय + उत्तर अमेरिकी दिनको समय + + + + + उत्तर अमेरिकी हिमाली समय + अमेरिकी पूर्वी हिमाली प्रमाणिक समय + अमेरिकी पूर्वी हिमाली दिनको समय + + + + + उत्तर अमेरिकी प्यासफिक समय + उत्तर अमेरिकी प्यासफिक प्रमाणिक समय + उत्तर अमेरिकी प्यासफिक दिनको समय + + + + + अरेबी समय + अरेबी प्रमाणिक समय + अरेबी दिनको समय + + + + + अर्जेनटिनी समय + अर्जेनटिनी प्रमाणिक समय + अर्जेनटिनी ग्रीष्मकालीन समय + + + + + उत्तरी अर्जेनटिनी समय + उत्तरी अर्जेनटिनी प्रमाणिक समय + उत्तरी अर्जेनटिनी ग्रीष्मकालिन समय + + + + + अर्मेनिया समय + अर्मेनिया प्रमाणिक समय + अर्मेनिया ग्रीष्मकालीन समय + + + + + एट्लान्टिक समय + एट्लान्टिक प्रमाणिक समय + एट्लान्टिक दिनको समय + + + + + केन्द्रिय अस्ट्रेलिया समय + केन्द्रिय अस्ट्रेलिया प्रमाणिक समय + केन्द्रिय अस्ट्रेलिया दिनको समय + + + + + केन्द्रिय पश्चिमी अस्ट्रेलिया समय + केन्द्रिय पश्चिमी अस्ट्रेलिया प्रमाणिक समय + केन्द्रिय पश्चिमी अस्ट्रेलिया दिनको समय + + + + + पूर्वी अस्ट्रेलिया समय + पूर्वी अस्ट्रेलिया प्रमाणिक समय + पूर्वी अस्ट्रेलिया दिनको समय + + + + + पश्चिमी अस्ट्रेलिया समय + पश्चिमी अस्ट्रेलिया प्रमाणिक समय + पश्चिमी अस्ट्रेलिया दिनको समय + + + + + अजेरबैजन समय + अजेरबैजन प्रमाणिक समय + अजेरबैजन ग्रीष्मकालीन समय + + + + + एजोरेस् समय + एजोरेस् प्रमाणीक समय + एजोरेस् ग्रीष्मकालीन समय + + + + + बंगलादेशी समय + बंगलादेशी प्रमाणिक समय + बंगलादेशी ग्रीष्मकालीन समय + + + + + भुटानी समय + + + + + बोलिभिया समय + + + + + ब्राजिलीया समय + ब्राजिलीया प्रमाणिक समय + ब्राजिलीया ग्रीष्मकालीन समय + + + + + ब्रुनाई दरुस्सलाम समय + + + + + केप भर्दे समय + केप भर्दे प्रमाणिक समय + केप भर्दे ग्रीष्मकालीन समय + + + + + च्यामोर्रो समय + + + + + चाथाम समय + चाथाम प्रमाणिक समय + चाथाम दिनको समय + + + + + चिल्लि समय + चिल्लि प्रमाणिक समय + चिल्लि ग्रीष्मकालीन समय + + + + + चीनीयाँ समय + चीनीयाँ प्रमाणिक समय + चीनीयाँ ग्रीष्मकालीन समय + + + + + चोईबाल्सन समय + चोईबाल्सन प्रमाणिक समय + चोईबाल्सन ग्रीष्मकालीन समय + + + + + क्रिस्मस टापू समय + + + + + कोकोस् टापू समय + + + + + कोल्मवियन समय + कोल्मवियन प्रमाणिक समय + कोल्मवियन ग्रीष्मकालीन समय + + + + + कुक टापू समय + कुक टापू प्रमाणिक समय + कुक टापू आधा ग्रीष्मकालीन समय + + + + + क्यूबा समय + क्यूबा प्रमाणिक समय + क्यूबा दिनको समय + + + + + डेभिस समय + + + + + डुमोन्ट-डी' उर्भिले समय + + + + + पूर्वी टिमोर समय + + + + + इस्टर टापू समय + इस्टर टापू प्रमाणिक समय + इस्टर टापू ग्रीष्म समय + + + + + ईक्वोडोर समय + + + + + केन्द्रिय युरोपेली समय + केन्द्रिय युरोपेली प्रमाणीक समय + केन्द्रिय युरोपेली ग्रीष्मकालीन समय + + + + + पूर्वी युरोपेली समय + पूर्वी युरोपेली प्रमाणीक समय + पूर्वी युरोपेली ग्रीष्मकालीन समय + + + + + युरोपेली समय + युरोपेली प्रमाणीक समय + युरोपेली ग्रीष्मकालीन समय + + + + + फल्कल्यान्ड टापू समय + फल्कल्यान्ड टापू प्रमाणिक समय + फल्कल्यान्ड टापू ग्रीष्मकालीन समय + + + + + फिजी समय + फिजी प्रमाणिक समय + फिजी ग्रीष्मकालीन समय + + + + + फ्रेन्च ग्वाना समय + + + + + फ्रेन्च दक्षिणी र अन्टार्टिक समय + + + + + गालापागोस् समय + + + + + ग्याम्बियर समय + + + + + जर्जीया समय + जर्जीया प्रमाणिक समय + जर्जीया ग्रीष्मकालीन समय + + + + + गिल्बर्ट टापू समय + + + + + ग्रीनवीच मान समय + + + + + पूर्वी ग्रीनल्याड समय + पूर्वी ग्रीनल्याड प्रमाणिक समय + पूर्वी ग्रीनल्याड ग्रीष्मकालीन समय + + + + + पश्चिमी ग्रीनल्याड समय + पश्चिमी ग्रीनल्याड प्रमाणिक समय + पश्चिमी ग्रीनल्याड ग्रीष्मकालीन समय + + + + + गल्फ समय + + + + + गुयाना समय + + + + + हवाई-एलुटियन समय + हवाई-एलुटियन प्रमाणिक समय + हवाई-एलुटियन दिनको समय + + + + + हंगकंग समय + हंगकंग प्रमाणिक समय + हंगकंग ग्रीष्मकालीन समय + + + + + होब्ड समय + होब्ड प्रमाणिक समय + होब्ड ग्रीष्मकालीन समय + + + + + भारतीय समय + + + + + ईन्डियन महाद्वीप समय + + + + + इन्डोचाईना समय + + + + + केन्द्रिय इन्डोनेसियन समय + + + + + पूर्वी इन्डोनेसियन समय + + + + + पश्चिमी इन्डोनेसियन समय + + + + + ईरानी समय + ईरानी प्रमाणिक समय + ईरानी दिनको समय + + + + + ईर्कुट्स्क समय + ईर्कुट्स्क प्रमाणिक समय + ईर्कुट्स्क ग्रीष्मकालीन समय + + + + + ईजरायल समय + ईजरायल प्रमाणिक समय + ईजरायल दिनको समय + + + + + जापानी समय + जापानी प्रमाणिक समय + जापानी दिनको समय + + + + + पूर्वी काजकस्थान समय + + + + + पश्चिम काजकस्थान समय + + + + + कोरियाली समय + कोरियाली प्रमाणिक समय + कोरियाली दिनको समय + + + + + कोसराए समय + + + + + क्रासनोयार्क समय + क्रासनोयार्क प्रमाणिक समय + क्रासनोयार्क ग्रीष्मकालीन समय + + + + + किर्गिस्तान समय + + + + + लाईन टापू समय + + + + + लर्ड ह्ववी समय + लर्ड ह्ववी प्रमाणिक समय + लर्ड ह्ववी दिनको समय + + + + + म्याक्वारीया टापू समय + + + + + मागादान् समय + मागादान् प्रमाणिक समय + मागादान् ग्रीष्मकालीन समय + + + + + मलेसिया समय + + + + + माल्दिभ्स समय + + + + + मार्केस्स समय + + + + + मार्सेल टापू समय + + + + + मैरीत्यूस् समय + मैरीत्यूस् प्रमाणिक समय + मैरीत्यूस् ग्रीष्मकालीन समय + + + + + म्वसन समय + + + + + उलान बाटोर समय + उलान बाटोर प्रमाणिक समय + उलान बाटोर ग्रीष्मकालीन समय + + + + + मस्काउ समय + मस्काउ प्रमाणिक समय + मस्काउ ग्रीष्मकालीन समय + + + + + म्यानमार समय + + + + + नाउरु समय + + + + + नेपाली समय + + + + + नयाँ क्यालदोनिया समय + नयाँ क्यालदोनिया प्रमाणिक समय + नयाँ क्यालदोनिया ग्रीष्मकालीन समय + + + + + न्यूजिल्यान्ड समय + न्यूजिल्यान्ड प्रमाणिक समय + न्यूजिल्यान्ड दिनको समय + + + + + न्यूफाउन्डल्याड समय + न्यूफाउन्डल्याड प्रमाणिक समय + न्यूफाउन्डल्याड दिनको समय + + + + + निउए समय + + + + + नोर्फल्क टापू समय + + + + + फर्नान्डो डे नोरोन्हा समय + फर्नान्डो डे नोरोन्हा प्रमाणिक समय + फर्नान्डो डे नोरोन्हा ग्रीष्मकालीन समय + + + + + नोभोसीबीर्स्क समय + नोभोसीबीर्स्क प्रमाणिक समय + नोभोसीबीर्स्क ग्रीष्मकालीन समय + + + + + ओमस्क समय + ओमस्क प्रमाणिक समय + ओमस्क ग्रीष्मकालीन समय + + + + + पाकिस्तानी समय + पाकिस्तानी प्रमाणिक समय + पाकिस्तानी ग्रीष्मकालीन समय + + + + + पालाउ समय + + + + + पपूवा न्यू गिनी समय + + + + + पाराग्वे समय + पाराग्वे प्रमाणिक समय + पाराग्वे ग्रीष्मकालीन समय + + + + + पेरु समय + पेरु प्रमाणिक समय + पेरु ग्रीष्मकालीन समय + + + + + फिलीपिनी समय + फिलीपिनी प्रमाणिक समय + फिलीपिनी ग्रष्मकालीन समय + + + + + फोइनिक्स टापू समय + + + + + साय्ट पेईरि र मिक्यूलोन समय + साय्ट पेईरि र मिक्यूलोन प्रमाणिक समय + साय्ट पेईरि र मिक्यूलोन दिनको समय + + + + + पिटकैरण समय + + + + + पोनापे समय + + + + + रियुनियन समय + + + + + रोथेरा समय + + + + + साखालिन समय + साखालिन प्रमाणिक समय + साखालिन ग्रीष्मकालीन समय + + + + + सामोअ समय + सामोअ प्रमाणिक समय + सामोअ दिनको समय + + + + + सेयेचेलास् समय + + + + + सिंगापुर समय + + + + + सोलोमोन टापू समय + + + + + दक्षिण जर्जिया समय + + + + + सुरिनामा समय + + + + + स्योवा समय + + + + + ताहिती समय + + + + + ताईपे समय + ताईपे प्रमाणिक समय + ताईपे दिनको समय + + + + + ताजकस्थान समय + + + + + तोकेल्यू समय + + + + + टोंगा समय + टोंगा प्रमाणिक समय + टोंगा ग्रीष्मकालीन समय + + + + + चुउक समय + + + + + तुर्कमेनीस्थान समय + तुर्कमेनीस्थान प्रमाणिक समय + तुर्कमेनीस्थान ग्रीष्मकालीन समय + + + + + टुभालु समय + + + + + उरुग्वे समय + उरुग्वे प्रमाणिक समय + उरुग्वे ग्रीष्मकालीन समय + + + + + उज्बे्कस्थान समय + उज्बे्कस्थान प्रमाणिक समय + उज्बे्कस्थान ग्रीष्मकालीन समय + + + + + भानुआतु समय + भानुआतु प्रमाणिक समय + भानुआतु ग्रीष्मकालीन समय + + + + + भेनेज्युएला समय + + + + + भ्लदिस्भोस्टोक समय + भ्लदिस्भोस्टोक प्रमाणिक समय + भ्लदिस्भोस्टोक ग्रीष्मकालीन समय + + + + + भोल्गोग्राड समय + भोल्गोग्राड प्रमाणिक समय + भोल्गोग्राड ग्रीष्मकालीन समय + + + + + भोस्टोक समय + + + + + वेक टापू समय + + + + + वालिस् र फुटुना समय + + + + + याकुस्ट समय + याकुस्ट प्रमाणिक समय + याकुस्ट ग्रीष्मकालीन समय + + + + + येकाटेरिनबर्ग समय + येकाटेरिनबर्ग प्रमाणीक समय + येकाटेरिनबर्ग ग्रीष्मकालीन समय + + + + + + deva + + deva + + + . + , + % + + + - + E + × + + + NaN + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + + + #,##0.### + + + + + 0 हजार + 0 हजार + 00 हजार + 00 हजार + 0 लाख + 0 लाख + 0 करोड + 0 करोड + 00 करोड + 00 करोड + 000 करोड + 000 करोड + 0 अर्ब + 0 अर्ब + 00 अर्ब + 00 अर्ब + 0 खरब + 0 खरब + 0T + 0T + 0 शंख + 0 शंख + 00 शंख + 00 शंख + + + + + 0 हजार + 0 हजार + 00 हजार + 00 हजार + 0 लाख + 0 लाख + 00 लाख + 00 लाख + 0 करोड + 0 करोड + 00 करोड + 00 करोड + 0 अरब + 0 अरब + 00 अरब + 00 अरब + 0 खरब + 0 खरब + 00 खरब + 00 खरब + 0 शंख + 0 शंख + 00 शंख + 00 शंख + + + + + + + #E0 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + + ¤ #,##0.00 + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + संयुक्त अरब एमिराट्स डिर्हाम + संयुक्त अरब एमिराट्स डिर्हाम + संयुक्त अरब एमिराट्स डिर्हाम + + + अफ्गानी(१९२७–२००२) + + + अफ्गान अफ्गानी + अफ्गान अफ्गानी + अफ्गान अफ्गानीहरू + + + अल्बानियन लेक + + + आर्मेनियाली ड्राम + आर्मेनियाली ड्राम + आर्मेनियाली ड्रामहरू + + + नेदरल्याण्ड्स एन्टिलियन गिल्डर + नेदरल्याण्ड्स एन्टिलियन गिल्डर + नेदरल्याण्ड्स एन्टिलियन गिल्डर + + + एङ्गोलान क्वान्जा + एङ्गोलान क्वान्जा + एङ्गोलान क्वान्जाहरू + + + अर्जेन्टिनी पेसो + अर्जेन्टिनी पेसो + अर्जेन्टिनी पेसोहरू + + + अष्ट्रेलियन डलर + A$ + + + आरूबन फ्लोरिन + आरूबन फ्लोरिन + आरूबन फ्लोरिन + + + अजरबैजानी मानात + अजरबैजानी मानात + अजरबैजानी मानात + + + बोस्निया-हर्जगोभिनिया रूपान्तरयोग्य मार्क + बोस्निया-हर्जगोभिनिया रूपान्तरयोग्य मार्क + बोस्निया-हर्जगोभिनिया रूपान्तरयोग्य मार्कहरू + + + बर्बाडियन डलर + बार्बाडियन डलर + बार्बाडियन डलरहरू + + + बङ्गलादेशी टाका + बङ्गलादेशी टाका + बङ्गलादेशी टाकाहरू + + + बुल्गारियाली लेभ + बुल्गारियाली लेभ + बुल्गारियाली लेभा + + + बाहारैनी डिनार + बाहारैनी डिनार + बाहारैनी डिनारहरू + + + बुरूण्डियाली फ्रान्क + बुरूण्डियाली फ्रान्क + बुरूण्डियाली फ्रान्कहरू + + + बर्मुडन डलर + बर्मुडन डलर + बर्मुडन डलर + + + ब्रुनाई डलर + ब्रुनाई डलर + ब्रुनाई डलरहरू + + + बोलिभियन बोलिभियानो + बोलिभियन बोलिभियानो + बोलिभियन बोलिभियानोहरू + + + ब्राजिलियन रियल + R$ + + + बहामियाली डलर + बहामियाली डलर + बहामियाली डलरहरू + + + भुटानी एन्‌गुल्ट्रुम + भुटानी एन्‌गुल्ट्रुम + भुटानी एन्‌गुल्ट्रुमहरू + + + बोट्सवानान पुला + बोट्सवानान पुला + बोट्सवानान पुलाहरू + + + बेलारूसी रूबल + बेलारूसी रूबल + बेलारूसी रूबलहरू + + + वेलिज डलर + वेलिज डलर + वेलिज डलर + + + क्यानाडियाली डलर + क्यानाडियाली डलर + क्याननाडियाली डलरहरू + CA$ + + + कङ्गोली फ्रान्क + कङ्गोली फ्रान्क + कङ्गोली फ्रान्कहरू + + + स्विस् फ्रैङ्क + स्विस् फ्रैङ्क + स्विस् फ्रैङ्क + + + चिलियन पेसो + चिलियन पेसो + चिलियन पेसोहरू + + + चिनिँया युआन + CN¥ + + + कोलम्वियन पेसो + कोलम्वियन पेसो + कोलम्वियन पेसोहरू + + + कोष्टारिकन कोलोन + कोष्टारिकन कोलोन + कोष्टारिकन कोलोनहरू + + + क्यूवाली रूपान्तरणयोग्य पेसो + क्यूवाली रूपान्तरणयोग्य पेसो + क्यूवाली रूपान्तरणयोग्य पेसो + + + क्यूवाली पेसो + क्यूवाली पेसो + क्यूवाली पेसोहरू + + + केप भर्डियन एस्कुडो + केप भर्डियन एस्कुडो + केप भर्डियन एस्कुडोहरू + + + चेख गणतञ्त्र कोरूना + चेख गणतञ्त्र कोरूना + चेख गणतञ्त्र कोरूनाहरू + + + जिबौंटियाली फ्रान्क + जिबौटियाली फ्रान्क + जिबौटियाली फ्रान्कहरू + + + ड्यानिश क्रोन + ड्यानिश क्रोन + ड्यानिश क्रोनर + + + डोमिनिकन पेसो + डोमिनिकन पेसो + डोमिनिकन पेसोहरू + + + अल्जेरियाली डिनार + अल्जेरियाली डिनार + अल्जेरियाली डिनारहरू + + + इजिप्सियन पाउन्ड + इजिप्सियन पाउन्ड + इजिप्सियन पाउन्डहरू + + + एरिट्रियन नाक्फा + एरिट्रियन नाक्फा + एरिट्रियन नाक्फाहरू + + + इथियोपियाली बिर + इथियोपियाली बिर + इथियोपियाली बिरहरू + + + युरो + + + + फिजीयाली डलर + फिजीयाली डलर + फिजीयाली डलरहरू + + + फक्‌ल्याण्ड टापुहरूका पाउन्ड + फक्‌ल्याण्ड टापुहरूका पाउन्ड + फक्‌ल्याण्ड टापुहरूका पाउन्डहरू + + + बेलायती पाउण्ड स्टर्लिङ + £ + + + जर्जियन लारी + जर्जियाली लारी + जर्जियाली लारीहरू + + + घानाली सेडी + घानाली सेडी + घानाली सेडीहरू + + + जिब्राल्टर पाउण्ड + जिब्राल्टर पाउण्ड + जिब्राल्टर पाउण्डहरू + + + गाम्वियाली डालासी + गाम्वियाली डालासी + गाम्वियाली डालासीहरू + + + गिनियाली फ्रान्क + गिनियाली फ्रान्क + गिनियाली फ्रान्कहरू + + + ग्वाटेमाला क्वेट्जाल + ग्वाटेमाला क्वेट्जाल + ग्वाटेमाला क्वेट्जालहरू + + + गाइनिज डलर + गाइनिज डलर + गाइनिज डलरहरू + + + हङकङ डलर + हङकङ डलर + हङकङ डलरहरू + HK$ + + + होन्डुरान लेम्पिरा + होन्डुरान लेम्पिरा + होन्डुरान लेम्पिराहरू + + + क्रोएशियाली कुना + क्रोएशियाली कुना + क्रोएशियाली कुना + + + हैटियाली गुर्ड + हैटियाली + हैटियाली गुर्डहरु + + + हङ्गेरियन फोरिन्ट + हङ्गेरियन फोरिन्ट + हङ्घैृीञण पओृीण्ठअृु + + + इण्डोनेशियाली रूपियाँ + इण्डोनेशियाली रूपियाँ + इण्डोनेशियाली रूपियाँहरू + + + इजरायली नयाँ शेकेल + इजरायली नयाँ शेकेल + इजरायली नयाँ शेकेलहरु + + + + भारती रूपिँया + + + + इराकी डिनार + इराकी डिनार + इराकी डिनारहरू + + + इरानियाली रियाल + इरानियाली रियाल + इरानियाली रियालहरू + + + आइसल्याण्डिक क्रोना + आइसल्याण्डिक क्रोना + आइसल्याण्डिक क्रोनर + + + जमाइकाली डलर + जमाइकाली डलर + जमाइकाली डलरहरू + + + जोर्डानियाली डलर + जोर्डानियाली डलर + जोर्डानियाली डलरहरू + + + जापानी येन + JP¥ + + + केन्याली शिलिङ + केन्याली शिलिङ + केन्याली शिलिङहरू + + + किर्गिस्तानी सोम + किर्गिस्तानी सोम + किर्गिस्तानी सोमहरू + + + कम्बोडिनेयाली रियल + कम्बोडिनेयाली रियल + कम्बोडिनेयाली रियलहरू + + + कोमोरियन फ्रान्क + कोमोरियन फ्रान्क + कोमोरियन फ्रान्कहरू + + + उत्तर कोरियाली वन + उत्तर कोरियाली वन + उत्तर कोरियाली वन + + + दक्षिण कोरियाली वन + दक्षिण कोरियाली वन + दक्षिण कोरियाली वन + + + + कुवेती डिनार + कुवेती डिनार + कुवेती डिनारहरू + + + केम्यान टापुहरूका डलर + केम्यान टापुहरूका डलर + केम्यान टापुहरूका डलरहरू + + + काजाखस्तानी टेन्ज + काजाखस्तानी टेन्ज + काजाखस्तानी टेन्जहरू + + + लाओशियन किप + लाओशियन किप + लाओशियन किपहरू + + + लेबनाली पाउन्ड + लेबनाली पाउन्ड + लेबनाली पाउन्डहरू + + + श्रीलङ्काली रूपिया + श्रीलङ्काली रूपिया + श्रीलङ्काली रूपियाहरू + + + लिबेरियाली डलर + लिबेरियाली डलर + लिबेरियाली डलरहरू + + + लिथुनियाली लिटास + लिथुनियाली लिटास + लिथुनियाली लिटाई + + + लाट्भियाली लाट्स + लाट्भियन लाट्स + लाट्भियन लाटी + + + लिवियाली डिनार + लिवियाली डिनार + लिवियाली डिनार + + + मोरोक्काली डिर्‌हाम + मोरोक्काली डिर्‌हाम + मोरोक्काली डिर्‌हामहरू + + + माल्डोभन लेउ + माल्डोभन लेउ + माल्डोभन लेई + + + मालागासी एरिआरी + मालागासी एरिआरी + मालागासी एरिआरीहरू + + + म्यासेडोनियाली डेनार + म्यासेडोनियाली डेनार + म्यासेडोनियाली डेनारी + + + म्यान्मा क्याट + म्यान्मा क्याट + म्यान्मा क्याटहरू + + + मङ्गोलियाली टुग्रिक + मङ्गोलियाली टुग्रिक + मङ्गोलियाली टुग्रिकहरू + + + माकानिज पटाका + माकानिज पटाका + माकानिज पटाकाहरू + + + माउरिटानियानली औगुइया + माउरिटानियाली औगुइया + माउरिटानियाली औगुइयाहरू + + + माउरिटियन रूपी + माउरिटियन रूपी + माउरिटियन रूपीहरू + + + मालडिभियाली रूफियाँ + मालडिभियाली रूफियाँ + मालडिभियाली रूफियाँहरू + + + मलाविअन क्वाचा + मलाविअन क्वाचा + मलाविअन क्वाचाहरू + + + मेक्सिकन पेसो + मेक्सिकन पेसो + मेक्सिकन पेसोहरू + MX$ + + + मलेशियाली रिङ्गेट + मलेशियाली रिङ्गेट + मलेशियाली रिङ्गेटहरू + + + मोजाम्विकन मेटिकल + मोजाम्विकन मेटिकल + मोजाम्विकन मेटिकलहरू + + + नामिबियन डलर + नामिबियन डलर + नामिबियन डलरहरु + + + नाइजेरियन नाइरा + नाइजेरियन नाइरा + नाइजेरियन नाइराहरू + + + निकारागुवान कोर्डोवा + निकारागुवान कोर्डोवा + निकारागुवान कोर्डोवाहरू + + + नर्वेजियाली क्रोन + + + नेपाली रूपैयाँ + नेपाली रूपैयाँ + नेपाली रूपैयाँहरू + नेरू + + + न्यूजिल्याण्ड डलर + न्यूजिल्याण्ड डलर + न्यूजिल्याण्ड डलरहरू + NZ$ + + + ओमनी रियल + ओमनी रियाल + ओमनी रियलहरू + + + पानामानियाली बाल्बोआ + पानामानियाली बाल्बोआ + पानामानियाली बाल्बोआहरू + + + पेरूभियाली न्यूभो सोल + पेरूभियाली न्यूभो सोल + पेरूभियाली न्यूभो सोल + + + पपुआ न्यू गिनियाली किना + पपुआ न्यू गिनियाली किना + पपुआ न्यू गिनियाली किना + + + फिलिपिनी पेसो + + + पाकिस्तानी रूपियाँ + पाकिस्तानी रूपियाँ + पाकिस्तानी रूपियाँहरू + + + पोलिश ज्लोटाई + पोलिश ज्लोटाई + पोलिश ज्लोटाईहरू + + + पारागुयाली गुरानी + पारागुयाली गुरानी + पारागुयाली गुरानीस + + + कतारी रियल + कतारी रियाल + कतारी रियालहरू + + + रोमानियाली लेऊ + रोमानियाली लेऊ + रोमानियाली लेई + + + सर्बियाली डिनार + सर्बियाली डिनार + सर्बियाली डिनारहरू + + + रूसी रूबल + रूसी रूबल + रूसी रूबलहरू + + + र्‌वाण्डाली फ्रान्क + र्‌वाण्डाली फ्रान्क + र्‌वाण्डाली फ्रान्क + + + साउदी रियालहरू + साउदी रियाल + साउदी रियालहरू + + + सोलोमन टापुहरूका डलर + सोलोमन टापुहरूका डलर + सोलोमन टापुहरूका डलर + + + सेचेलोइस रूपी + सेचेलोइस रूपी + सेचेलोइस रूपीहरू + + + सुडानी पाउन्ड + सुडानी पाउन्ड + सुडानी पाउन्डहरू + + + स्विडिश क्रोना + स्विडिश क्रोना + स्विडिश क्रोना + + + सिङ्गापुर डलर + सिङ्गापुर डलर + सिङ्गापुर डलरहरू + + + सेन्ट हेलेना पाउन्ड + सेन्ट हेलेना पाउन्ड + सेन्ट हेलेना पाउन्डहरू + + + सियरा लियोनेन लियोन + सियरा लियोनेन लियोन + सियारा लियोनेन लियोनहरू + + + सोमाली शिलिङ + सोमाली शिलिङ + सोमाली शिलिङहरू + + + सुरिनामिज डलर + सुरिनामिज डलर + सुरिनामिज डलरहरू + + + दक्षिण सुडानी पाउन्ड + दक्षिण सुडानी पाउन्ड + दक्षिण सुडानी पाउन्डहरू + + + साओ टोम र प्रिन्सिप डोब्रा + साओ टोम र प्रिन्सिप डोब्रा + साओ टोम र प्रिन्सिप डोब्राहरू + + + सिरियाली पाउन्ड + सिरियाली पाउन्ड + सिरियाली पाउन्डहरू + + + स्वाजी लिलान्गेनी + स्वाजी लिलान्गेनी + स्वाजी इमालेन्गेनी + + + थाई भाट + थाई भाट + थाई भाट + ฿ + + + ताजिक्स्तानी सोमोनी + ताजिक्स्तानी सोमोनी + ताजिक्स्तानी सोमोनीहरू + + + टुर्क्मेनिस्तानी मानात + टुर्क्मेनिस्तानी मानात + टुर्क्मेनिस्तानी मानात + + + टुनिसियाली डिनार + टुनिसियाली डिनार + टुनिसियाली डिनारहरू + + + टङ्गन पाङ्गा + टङ्गन पाङ्गा + टङ्गन पाङ्गा + + + टर्किश लिरा + टर्किश लिरा + टर्किश लिराहरू + + + त्रिनिडाड र टोबागो डलर + त्रिनिडाड र टोबागो डलर + त्रिनिडाड र टोबागो डलर + + + नयाँ ताइवान डलर + नयाँ ताइवान डलर + नयाँ ताइवान डलरहरू + NT$ + + + ताञ्जानियाली शिलिङ + ताञ्जानियाली शिलिङ + ताञ्जानियाली शिलिङहरू + + + युक्रेनी हिर्भिनिया + युक्रेनी हिर्भिनिया + युक्रेनी हिर्भिनिया + + + युगाण्डाली शिलिङ + युगाण्डाली शिलिङहरू + युगाण्डाली शिलिङहरू + + + संयुक्त राज्य डलर + US$ + + + उरूग्वेयन पेसो + युरूगुयाली पेसो + युरूगुयाली पेसोहरू + + + उज्बेकिस्तान सोम + युज्बेकिस्तान सोम + युज्बेकिस्तान सोम + + + भेनेजुएलन बोलिभर + भेनेजुएलन बोलिभर + भेनेजुएलन बोलिभरहरू + + + भियतनामी डङ् + भियतनामी डङ् + भियतनामी डङ् + + + + भानुआतू भातु + भानुआतू भातु + भानुआतू भातुहरू + + + सामोआन ताला + सामोआन ताला + सामोआन ताला + + + सीएफ्‌ए फ्रान्क बीइएसी + सीएफ्‌ए फ्रान्क बीइएसी + सीएफ्‌ए फ्रान्कहरू बीइएसी + FCFA + + + पूर्वी क्यारिबियन डलर + पूर्वी क्यारिबियन डलर + पूर्वी क्यारिबियन डलरहरू + EC$ + + + सीएफ्‌ए फ्रान्क बीसीइएओ + सीएफ्‌ए फ्रान्क बीसीइएओ + सीऐफ्‌ए फ्रान्क्स बीसीइएओ + CFA + + + सीएफ्‌पी फ्रान्क + सीएफ्‌पी फ्रान्क + सीएफ्‌पी फ्रान्कहरू + CFPF + + + अपरिचित मुद्रा + + + येमेनी रियाल + येमेनी रियाल + येमेनी रियालहरू + + + दक्षिण अफ्रिकी र्‍यान्ड + दक्षिण अफ्रिकी र्‍यान्ड + दक्षिण अफ्रिकी र्‍यान्ड + + + जाम्बियाली क्वाचा (१९६८–२०१२) + जाम्बियाली क्वाचा (१९६८–२०१२) + जाम्बियाली क्वाचाहरू (१९६८–२०१२) + + + जाम्बियाली क्वाचा + जाम्बियाली क्वाचा + जाम्बियाली क्वाचाहरू + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} गुरूत्वाकर्षण शक्ति + {0} गुरूत्वाकर्षण शक्ति + + + {0} मिनेट + {0} मिनेट + + + {0} सेकेण्ड + {0} सेकेण्ड + + + {0} डिग्री + {0} डिग्री + + + {0} एकर + {0} एकर + + + {0} हेक्टर + {0} हेक्टर + + + {0} बर्ग फुट + {0} बर्ग फुट + + + {0} बर्ग किलोमिटर + {0} बर्ग किलोमिटर + + + {0} बर्ग मिटर + {0} बर्ग मिटर + + + {0} बर्ग माईल + {0} बर्ग माईल + + + {0} दिन + {0} दिन + + + {0} घण्टा + {0} घण्टा + + + {0} मिली सेकेण्ड + {0} मिली सेकेण्ड + + + {0} मिनेट + {0} मिनेट + + + {0} महिना + {0} महिना + + + {0} सेकेण्ड + {0} सेकेण्ड + + + {0} हप्ता + {0} सप्ताह + + + {0} वर्ष + {0} वर्ष + + + {0} सेन्टिमिटर + {0} सेन्टिमिटर + + + {0} फुट + {0} फुट + + + {0} ईञ्‍च + {0} ईञ्‍च + + + {0} किलो मिटर + {0} किलो मिटर + + + {0} प्रकाश वर्ष + {0} प्रकाश वर्ष + + + {0} मिटर + {0} मिटर + + + {0} माईल + {0} माईल + + + {0} मिलि मिटर + {0} मिलि मिटर + + + {0} पिको मिटर + {0} पिको मिटर + + + {0} गज + {0} गज + + + {0} ग्राम + {0} ग्राम + + + {0} किलोग्राम + {0} किलोग्राम + + + {0} आऊन्स + {0} आऊन्स + + + {0} पाउण्ड + {0} पाउण्ड + + + {0} घोडा शक्ति + {0} घोडा शक्ति + + + {0} किलो वाट + {0} किलो वाट + + + {0} वाट + {0} वाट + + + {0} हेक्टो पास्कल + {0} हेक्टो पास्कल + + + {0} ईञ्‍च पारो + {0} ईञ्‍च पारो + + + {0} मिलीबार + {0} मिलीबार + + + {0} किलोमिटर प्रति घण्टा + {0} किलोमिटर प्रति घण्टा + + + {0} मिटर प्रति सेकेण्ड + {0} मिटर प्रति सेकेण्ड + + + {0} माईल प्रति घण्टा + {0} माईल प्रति घण्टा + + + {0} डिग्री सेल्सियस् + {0} डिग्री सेल्सियस् + + + {0}डिग्री फरेनहाइट + {0}डिग्री फरेनहाइट + + + {0} घन किलोमिटर + {0} घन किलोमिटर + + + {0} घन माईल + {0} घन माईल + + + {0} लिटर + {0} लिटर + + + + + {0}/{1} + + + {0} गुरूत्वाकर्षण शक्त + {0} गुरूत्वाकर्षण शक्ति + + + {0} मिनेट + {0} मिनेट + + + {0} सेकेण्ड + {0} सेकेण्ड + + + {0}° + {0}° + + + {0} एकर + {0} एकर + + + {0} हे. + {0} हे. + + + {0} ब.फु. + {0} ब.फु. + + + {0} ब.कि.मि. + {0} ब.कि.मि. + + + {0} ब.मि. + {0} ब.मि. + + + {0} बर्ग माईल + {0} बर्ग माईल + + + {0} दिन + {0} दिन + + + {0} घण्टा + {0} घण्टा + + + {0} मिली से. + {0} मिली से. + + + {0} मिनेट + {0} मिनेट + + + {0} महिना + {0} महिना + + + {0} सेकेण्ड + {0} सेकेण्ड + + + {0} हप्ता + {0} सप्ताह + + + {0} वर्ष + {0} वर्ष + + + {0} से.मी. + {0} से.मी. + + + {0} फुट + {0} फुट + + + {0} ईञ्‍च + {0} ईञ्‍च + + + {0} कि.मी. + {0} कि.मी. + + + {0} प्रकाश वर्ष + {0} प्रकाश वर्ष + + + {0} मि. + {0} मि. + + + {0} माईल + {0} माईल + + + {0} मिमि. + {0} मिमि. + + + {0} पिको मिटर + {0} पिको मिटर + + + {0} गज + {0} गज + + + {0} ग्राम + {0} ग्राम + + + {0} किलो + {0} किलो + + + {0} आऊन्स + {0} आऊन्स + + + {0} पाउण्ड + {0} पाउण्ड + + + {0} घोडा + {0} घोडा + + + {0} किलो वाट + {0} किलो वाट + + + {0} वाट + {0} वाट + + + {0} हेक्टो पास्कल + {0} हेक्टो पास्कल + + + {0} ईञ्‍च पारो + {0} ईञ्‍च पारो + + + {0} मिलीबार + {0} मिलीबार + + + {0} कि.मि. प्रति घण्टा + {0} कि.मि. प्रति घण्टा + + + {0} मि. प्रति सेकेण्ड + {0} मि. प्रति सेकेण्ड + + + {0} माईल प्रति घण्टा + {0} माईल प्रति घण्टा + + + {0}°से + {0}°से + + + {0}°फ + {0}°फ + + + {0} घन किलोमिटर³ + {0} घन किलोमिटर³ + + + {0} घन माईल + {0} घन माईल + + + {0} लि. + {0} लि. + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} एकर + {0} एकर + + + {0} हे. + {0} हे. + + + {0} ब.फु. + {0} ब.फु. + + + {0} ब.कि.मि. + {0} ब.कि.मि. + + + {0} ब.मि. + {0} ब.मि. + + + {0} बर्ग माईल + {0} बर्ग माईल + + + {0} दिन + {0} दिन + + + {0} घण्टा + {0} घण्टा + + + {0} मिली से. + {0} मिली से. + + + {0} मिनेट + {0} मिनेट + + + {0} महिना + {0} महिना + + + {0} सेकेण्ड + {0} सेकेण्ड + + + {0} हप्ता + {0} सप्ताह + + + {0} वर्ष + {0} वर्ष + + + {0} से.मी. + {0} से.मी. + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} कि.मी. + {0} कि.मी. + + + {0} ly + {0} ly + + + {0} मि. + {0} मि. + + + {0} माईल + {0} माईल + + + {0} मिमि. + {0} मिमि. + + + {0} pm + {0} pm + + + {0} गज + {0} गज + + + {0} ग्राम + {0} ग्राम + + + {0} किलो + {0} किलो + + + {0} आऊन्स + {0} आऊन्स + + + {0} पाउण्ड + {0} पाउण्ड + + + {0} घोडा + {0} घोडा + + + किलो वाट + {0} किलो वाट + + + {0} वाट + {0} वाट + + + {0} hPa + {0} hPa + + + {0} ईञ्‍च पारो + {0} ईञ्‍च पारो + + + {0} मिलीबार + {0} मिलीबार + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°फ + {0}°फ + + + {0} km³ + {0} km³ + + + {0} घन माईल + {0} घन माईल + + + {0} लि. + {0} लि. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0} र {1} + {0}, {1} + {0} र {1} + {0} र {1} + + + {0} {1} + {0}, {1} + {0} {1} + {0} {1} + + + {0} {1} + {0}, {1} + {0} {1} + {0} {1} + + + {0} {1} + {0}, {1} + {0} {1} + {0} {1} + + + + + हो + होईन + + + + diff --git a/library/Zend/Locale/Data/ne_IN.xml b/library/Zend/Locale/Data/ne_IN.xml new file mode 100755 index 000000000..5115f6e2f --- /dev/null +++ b/library/Zend/Locale/Data/ne_IN.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + अमेरिकेली + + + + + + + + + जनवरी + फरवरी + मार्च + अप्रेल + मई + जुन + जुलाई + अगस्त + सेप्टेम्बर + अक्टोबर + नोभेम्बर + दिसम्बर + + + + + + + आइतवार + सोमवार + मङ्गलवार + बुधवार + बिहीवार + शुक्रवार + शनिवार + + + + + + + पूर्वाह्न + अपराह्न + + + + + + + + + वैशाख + जेठ + असार + साउन + भदौ + असोज + कात्तिक + मङसिर + पुस + माघ + फागुन + चैत + + + + + + + + युग + + + वर्ष + + + साता + + + वार + पर्सि + + + हप्ताको वार + + + पूर्वाह्न / अपराह्न + + + सेकेन्ड + + + अञ्‍चल + + + + + + IST + + + + + + + + भारतीय रूपिँया + भारतीय रूपिँया + भारतीय रूपिँया + + + + + + + {0} साता + {0} सप्ताह + + + + + diff --git a/library/Zend/Locale/Data/ne_NP.xml b/library/Zend/Locale/Data/ne_NP.xml new file mode 100755 index 000000000..452b8598b --- /dev/null +++ b/library/Zend/Locale/Data/ne_NP.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nl.xml b/library/Zend/Locale/Data/nl.xml new file mode 100755 index 000000000..13a99fd74 --- /dev/null +++ b/library/Zend/Locale/Data/nl.xml @@ -0,0 +1,6954 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Afar + Abchazisch + Atjees + Akoli + Adangme + Adyghe + Avestisch + Afrikaans + Afrihili + Aghem + Ainu + Akan + Akkadisch + Aleut + Zuid-Altaïsch + Amhaars + Aragonees + Oudengels + Angika + Arabisch + Modern standaard Arabisch + Aramees + Araukaans + Arapaho + Arawak + Assamees + Asu + Asturisch + Avarisch + Awadhi + Aymara + Azerbeidzjaans + Azeri + Basjkiers + Baloetsji + Balinees + Basa + Bamoun + Ghomala' + Wit-Russisch + Beja + Bemba + Bena + Bafut + Bulgaars + Bhojpuri + Bislama + Bikol + Bini + Kom + Siksika + Bambara + Bengaals + Tibetaans + Bretons + Braj + Bodo + Bosnisch + Akoose + Buriat + Buginees + Bulu + Blin + Medumba + Catalaans + Caddo + Caribisch + Cayuga + Atsam + Tsjetsjeens + Cebuano + Chiga + Chamorro + Chibcha + Chagatai + Chuukees + Mari + Chinook-jargon + Choctaw + Chipewyan + Cherokee + Cheyenne + Soranî + Corsicaans + Koptisch + Cree + Krim-Tataars + Tsjechisch + Kasjoebisch + Kerkslavisch + Tsjoevasjisch + Welsh + Deens + Dakota + Dargwa + Taita + Duits + Oostenrijks Duits + Zwitsers Hoogduits + Delaware + Slave + Dogrib + Dinka + Zarma + Dogri + Nedersorbisch + Duala + Middelnederlands + Divehi + Jola-Fonyi + Dyula + Dzongkha + Dazaga + Embu + Ewe + Efik + Oudegyptisch + Ekajuk + Grieks + Elamitisch + Engels + Australisch Engels + Canadees Engels + Brits Engels + Amerikaans Engels + Middelengels + Esperanto + Spaans + Latijns-Amerikaans Spaans + Europees Spaans + Mexicaans Spaans + Estlands + Baskisch + Ewondo + Perzisch + Fang + Fanti + Fulah + Fins + Filipijns + Fijisch + Faeröers + Fon + Frans + Canadees Frans + Zwitsers Frans + Middelfrans + Oudfrans + Noord-Fries + Oost-Fries + Friulisch + West-Fries + Iers + Ga + Gayo + Gbaya + Schots Gaelic + Geez + Gilbertees + Galicisch + Middelhoogduits + Guaraní + Oudhoogduits + Gondi + Gorontalo + Gothisch + Grebo + Oudgrieks + Zwitsers Duits + Gujarati + Gusii + Manx + Gwichʼin + Hausa + Haida + Hawaïaans + Hebreeuws + Hindi + Hiligaynon + Hettitisch + Hmong + Hiri Motu + Kroatisch + Oppersorbisch + Haïtiaans + Hongaars + Hupa + Armeens + Herero + Interlingua + Iban + Ibibio + Indonesisch + Interlingue + Igbo + Sichuan Yi + Inupiaq + Iloko + Ingoesj + Ido + IJslands + Italiaans + Inuktitut + Japans + Lojban + Ngomba + Machame + Judeo-Perzisch + Judeo-Arabisch + Javaans + Georgisch + Karakalpaks + Kabyle + Kachin + Jju + Kamba + Kawi + Kabardisch + Kanembu + Tyap + Makonde + Kaapverdisch Creools + Koro + Kongo + Khasi + Khotanees + Koyra Chiini + Kikuyu + Kuanyama + Kazachs + Kako + Groenlands + Kalenjin + Khmer + Kimbundu + Kannada + Koreaans + Konkani + Kosraeaans + Kpelle + Kanuri + Karachay-Balkar + Karelisch + Kurukh + Kasjmiri + Shambala + Bafia + Kölsch + Koerdisch + Koemuks + Kutenai + Komi + Cornish + Kirgizisch + Latijn + Ladino + Langi + Lahnda + Lamba + Luxemburgs + Lezgisch + Ganda + Limburgs + Lakota + Lingala + Laotiaans + Mongo + Lozi + Litouws + Luba-Katanga + Luba-Lulua + Luiseno + Lunda + Luo + Lushai + Luyia + Letlands + Madurees + Mafa + Magahi + Maithili + Makassaars + Mandingo + Masai + Maba + Moksha + Mandar + Mende + Meru + Morisyen + Malagasisch + Middeliers + Makhuwa-Meetto + Meta' + Marshallees + Maori + Mi'kmaq + Minangkabau + Macedonisch + Malayalam + Mongools + Mantsjoe + Manipoeri + Mohawk + Mossi + Marathi + Maleis + Maltees + Mundang + Meerdere talen + Creek + Mirandees + Marwari + Birmees + Myene + Erzja + Nauruaans + Napolitaans + Nama + Noors - Bokmål + Noord-Ndbele + Laagduits + Nepalees + Newari + Ndonga + Nias + Niueaans + Nederlands + Vlaams + Ngumba + Noors - Nynorsk + Ngiemboon + Noors + Nogai + Oudnoors + N’ko + Zuid-Ndbele + Noord-Sotho + Nuer + Navajo + Klassiek Newari + Nyanja + Nyamwezi + Nyankole + Nyoro + Nzima + Occitaans + Ojibwa + Oromo + Odia + Ossetisch + Osage + Ottomaans-Turks + Punjabi + Pangasinan + Pahlavi + Pampanga + Papiaments + Palauaans + Oudperzisch + Foenicisch + Pali + Pools + Pohnpeiaans + Oudprovençaals + Pasjtoe + Pashto + Portugees + Braziliaans Portugees + Europees Portugees + Quechua + Rajasthani + Rapanui + Rarotongan + Reto-Romaans + Kirundi + Roemeens + Moldavisch + Rombo + Romani + Root + Russisch + Aromaniaans + Kinyarwanda + Rwa + Sanskriet + Sandawe + Jakoets + Samaritaans-Aramees + Samburu + Sasak + Santali + Ngambay + Sangu + Sardinisch + Siciliaans + Schots + Sindhi + Noord-Samisch + Seneca + Sena + Selkup + Koyraboro Senni + Sango + Oudiers + Servokroatisch + Tashelhiyt + Shan + Tsjadisch Arabisch + Singalees + Sidamo + Slowaaks + Sloveens + Samoaans + Zuid-Samisch + Lule Sami + Inari Sami + Skolt Sami + Shona + Soninke + Somalisch + Sogdisch + Albanees + Servisch + Sranantongo + Serer + Swazi + Saho + Zuid-Sotho + Soendanees + Sukuma + Soesoe + Soemerisch + Zweeds + Swahili + Shimaore + Congo Swahili + Klassiek Syrisch + Syrisch + Tamil + Telugu + Timne + Teso + Tereno + Tetun + Tadzjieks + Thais + Tigrinya + Tigre + Tiv + Turkmeens + Tokelaus + Tagalog + Klingon + Tlingit + Tamashek + Tswana + Tongaans + Nyasa Tonga + Tok Pisin + Turks + Taroko + Tsonga + Tsimshian + Tataars + Toemboeka + Tuvaluaans + Twi + Tasawaq + Tahitisch + Tuvinisch + Tamazight (Centraal-Marokko) + Oedmoerts + Oeigoers + Oegaritisch + Oekraïens + Umbundu + Onbekende taal + Urdu + Oezbeeks + Vai + Venda + Vietnamees + Volapük + Votisch + Vunjo + Waals + Walser + Walamo + Waray + Washo + Wolof + Kalmyk + Xhosa + Soga + Yao + Yapees + Yangben + Yemba + Jiddisch + Yoruba + Kantonees + Zhuang + Zapotec + Blissymbolen + Zenaga + Standaard Marokkaanse Tamazight + Chinees + Vereenvoudigd Chinees + Traditioneel Chinees + Zulu + Zuni + Geen linguïstische inhoud + Zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wereld + Afrika + Noord-Amerika + Zuid-Amerika + Oceanië + West-Afrika + Midden-Amerika + Oost-Afrika + Noord-Afrika + Centraal-Afrika + Zuidelijk Afrika + Amerika + Noordelijk Amerika + Caribisch gebied + Oost-Azië + Zuid-Azië + Zuidoost-Azië + Zuid-Europa + Australazië + Melanesië + Micronesische regio + Polynesië + Azië + Centraal-Azië + West-Azië + Europa + Oost-Europa + Noord-Europa + West-Europa + Latijns-Amerika + Ascension + Andorra + Verenigde Arabische Emiraten + Afghanistan + Antigua en Barbuda + Anguilla + Albanië + Armenië + Nederlandse Antillen + Angola + Antarctica + Argentinië + Amerikaans Samoa + Oostenrijk + Australië + Aruba + Åland + Azerbeidzjan + Bosnië en Herzegovina + Barbados + Bangladesh + België + Burkina Faso + Bulgarije + Bahrein + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Caribisch Nederland + Brazilië + Bahama’s + Bhutan + Bouveteiland + Botswana + Wit-Rusland + Belize + Canada + Cocoseilanden + Congo-Kinshasa + Congo (DRC) + Centraal-Afrikaanse Republiek + Congo-Brazzaville + Congo (Republiek) + Zwitserland + Ivoorkust + Cookeilanden + Chili + Kameroen + China + Colombia + Clipperton + Costa Rica + Cuba + Kaapverdië + Curaçao + Christmaseiland + Cyprus + Tsjechië + Duitsland + Diego Garcia + Djibouti + Denemarken + Dominica + Dominicaanse Republiek + Algerije + Ceuta en Melilla + Ecuador + Estland + Egypte + Westelijke Sahara + Eritrea + Spanje + Ethiopië + Europese Unie + Finland + Fiji + Falklandeilanden + Falklandeilanden (Islas Malvinas) + Micronesië + Faeröer + Frankrijk + Gabon + Verenigd Koninkrijk + VK + Grenada + Georgië + Frans-Guyana + Guernsey + Ghana + Gibraltar + Groenland + Gambia + Guinee + Guadeloupe + Equatoriaal-Guinea + Griekenland + Zuid-Georgia en Zuidelijke Sandwicheilanden + Guatemala + Guam + Guinee-Bissau + Guyana + Hongkong SAR van China + Hongkong + Heard- en McDonaldeilanden + Honduras + Kroatië + Haïti + Hongarije + Canarische Eilanden + Indonesië + Ierland + Israël + Isle of Man + India + Britse Gebieden in de Indische Oceaan + Irak + Iran + IJsland + Italië + Jersey + Jamaica + Jordanië + Japan + Kenia + Kirgizië + Cambodja + Kiribati + Comoren + Saint Kitts en Nevis + Noord-Korea + Zuid-Korea + Koeweit + Caymaneilanden + Kazachstan + Laos + Libanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litouwen + Luxemburg + Letland + Libië + Marokko + Monaco + Moldavië + Montenegro + Saint-Martin + Madagaskar + Marshalleilanden + Macedonië + Macedonië (FYROM) + Mali + Myanmar (Birma) + Mongolië + Macao SAR van China + Macao + Noordelijke Marianeneilanden + Martinique + Mauritanië + Montserrat + Malta + Mauritius + Maldiven + Malawi + Mexico + Maleisië + Mozambique + Namibië + Nieuw-Caledonië + Niger + Norfolkeiland + Nigeria + Nicaragua + Nederland + Noorwegen + Nepal + Nauru + Niue + Nieuw-Zeeland + Oman + Panama + Peru + Frans-Polynesië + Papoea-Nieuw-Guinea + Filipijnen + Pakistan + Polen + Saint-Pierre en Miquelon + Pitcairneilanden + Puerto Rico + Palestijnse gebieden + Palestina + Portugal + Palau + Paraguay + Qatar + Overig Oceanië + Réunion + Roemenië + Servië + Rusland + Rwanda + Saoedi-Arabië + Salomonseilanden + Seychellen + Soedan + Zweden + Singapore + Sint-Helena + Slovenië + Spitsbergen en Jan Mayen + Slowakije + Sierra Leone + San Marino + Senegal + Somalië + Suriname + Zuid-Soedan + Sao Tomé en Principe + El Salvador + Sint-Maarten + Syrië + Swaziland + Tristan da Cunha + Turks- en Caicoseilanden + Tsjaad + Franse Gebieden in de zuidelijke Indische Oceaan + Togo + Thailand + Tadzjikistan + Tokelau + Oost-Timor + Turkmenistan + Tunesië + Tonga + Turkije + Trinidad en Tobago + Tuvalu + Taiwan + Tanzania + Oekraïne + Oeganda + Kleine afgelegen eilanden van de Verenigde Staten + Verenigde Staten + VS + Uruguay + Oezbekistan + Vaticaanstad + Saint Vincent en de Grenadines + Venezuela + Britse Maagdeneilanden + Amerikaanse Maagdeneilanden + Vietnam + Vanuatu + Wallis en Futuna + Samoa + Kosovo + Jemen + Mayotte + Zuid-Afrika + Zambia + Zimbabwe + Onbekend gebied + + + Traditionele Duitse spelling + Gestandaardiseerde Resiaanse spelling + Duitse spelling van 1996 + Laat Middelfrans tot 1606 + Vroeg modern Frans + Academisch + Romanisering ALA-LC, editie 1997 + Aloekoe dialect + Oost-Armeens + West-Armeens + Eenvormig Turkse Latijnse alfabet + Bauddha + Biskajaans + San Giorgio/Bila-dialect + Boontling + Dajnko-alfabet + Vroegmodern Engels + Internationaal Fonetisch Alfabet + Oeralisch Fonetisch Alfabet + Fonxsamp + Hepburn-romanisering + Hoognoors + Itihasa + Jauer + Jyutping + Algemene spelling + Standaardspelling + Laukika + Het Lipovaz-dialect van het Resiaans + Luna1918 + Monotonaal + Ndyuka + Natisone-dialect + Gniva/Njiva-dialect + Modern Volapük + Oseacco/Osojane-dialect + Pamaka + Petr1708 + Pinyin + Polytonaal + Computer + Puter + Gewijzigde spelling + Klassiek Volapük + Resiaans + Rumgr + Saho + Schots standaard-Engels + Liverpools (Scouse) + Stolvizza/Solbica-dialect + Surmiran + Sursilvan + Sutsilvan + Taraskievica-spelling + Eenvormige spelling + Eenvormig herziene spelling + Ulster + Vaidika + Valenciaans + Vallader + Wade-Giles-romanisering + + + Kalender + Sorteren van symbolen negeren + Omgekeerd sorteren op accenten + Indelen op hoofdletters/kleine letters + Hoofdlettergevoelig sorteren + Kana sorteren + Sorteervolgorde + Genormaliseerd sorteren + Numeriek sorteren + Sorteervoorrang + Valuta + Cijfers + Tijdzone + Landvariant + Sorteren als symbolen + Privégebruik + + + Arabisch-Indische cijfers + Uitgebreide Arabisch-Indische cijfers + Armeense cijfers + Kleine Armeense cijfers + Balinese cijfers + Bengaalse cijfers + Traditioneel-Chinese sorteervolgorde - Big5 + Boeddhistische kalender + Chinese kalender + Koptische kalender + Devanagari cijfers + Woordenboeksorteervolgorde + Standaard Unicode-sorteervolgorde + Ethiopische cijfers + Ethiopische kalender + Ethiopische Amete Alem-kalender + Financiële cijfers + Cijfers met volledige breedte + Vereenvoudigd-Chinese sorteervolgorde - GB2312 + Georgische cijfers + Gregoriaanse kalender + Griekse cijfers + Kleine Griekse cijfers + Gujarati cijfers + Gurmukhi cijfers + Chinese decimale getallen + Vereenvoudigd Chinese cijfers + Vereenvoudigd Chinese financiële cijfers + Traditioneel Chinese cijfers + Traditioneel Chinese financiële cijfers + Hebreeuwse cijfers + Hebreeuwse kalender + Alles sorteren + Indiase nationale kalender + Islamitische kalender + Islamitische kalender (cyclisch) + Japanse kalender + Javaanse cijfers + Japanse cijfers + Japanse financiële cijfers + Khmer cijfers + Kannada cijfers + Laotiaanse cijfers + Westerse cijfers + Eerst sorteren op kleine letters + Malayalam cijfers + Mongoolse cijfers + Myanmarese cijfers + Binnenlandse cijfers + Normaal sorteren op accenten + Sorteervolgorde algemeen hoofdlettergebruik + Niet hoofdlettergevoelig sorteren + Kana afzonderlijk sorteren + Zonder normalisatie sorteren + Cijfers afzonderlijk sorteren + Symbolen sorteren + Oriya cijfers + Perzische kalender + Telefoonboeksorteervolgorde + Fonetische sorteervolgorde + Pinyinvolgorde + Alleen sorteren op letters + Sorteren op accenten/hoofdlettergebruik/breedte/Kana + Herziene sorteervolgorde + Kalender van de Chinese Republiek + Romeinse cijfers + Kleine Romeinse cijfers + Algemeen zoeken + Zoeken op eerste Hangul-medeklinker + Sorteren op accenten + Sorteren zonder symbolen + standaard sorteervolgorde + Streeksorteervolgorde + Traditionele Tamil cijfers + Tamil cijfers + Telugu cijfers + Sorteren op accenten/hoofdlettergebruik/breedte + Thaise cijfers + Tibetaanse cijfers + Traditionele sorteervolgorde + Traditionele cijfers + Sorteervolgorde radicalen/strepen + Eerst sorteren op hoofdletters + Vai-cijfers + Omgekeerd sorteren op accenten + Hoofdlettergevoelig sorteren + Kana anders sorteren + Unicode genormaliseerd sorteren + Cijfers numeriek sorteren + + + BGN + Numeriek + Toon + UNGEGN + Accenten + Volledige breedte + Halve breedte + Jamo + Pinyin + Publicatie + + + Metriek + Brits + Amerikaans + + + Taal: {0} + Schrift: {0} + Regio: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a á ä b c d e é ë f g h i í ï {ij} {íj\u0301} j k l m n o ó ö p q r s t u ú ü v w x y z] + [à â å ã æ ç è ê î ñ ô ø œ ù û ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + Rat + Os + Tijger + Konijn + Draak + Slang + Paard + Geit + Aap + Haan + Hond + Varken + + + + + + + + EEEE d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + dd-MM-yy + + + + + + d + E d + U + MMM U + d MMM U + E d MMM U + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + mm:ss + U + U + M-y + d-M-y + E d-M-y + MMM U + d MMM U + E d MMM U + MMMM U + QQQ U + QQQQ U + + + + + + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Tut + Babah + Hatur + Kiyahk + Tubah + Amshir + Baramhat + Baramundah + Bashans + Ba'unah + Abib + Misra + Nasi + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + Rat + Os + Tijger + Konijn + Draak + Slang + Paard + Geit + Aap + Haan + Hond + Varken + + + + + + + + EEEE d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + dd-MM-yy + + + + + + + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Mäskäräm + Teqemt + Hedar + Tahsas + T'er + Yäkatit + Mägabit + Miyazya + Genbot + Säne + Hamle + Nähase + Pagumän + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + mm:ss + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd-MM - dd-MM + dd-MM - dd-MM + + + E dd-MM - E dd-MM + E dd-MM - E dd-MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MMMM–MMMM + + + y-y G + + + MM-y - MM-y G + MM-y - MM-y G + + + dd-MM-y - dd-MM-y G + dd-MM-y - dd-MM-y G + dd-MM-y - dd-MM-y G + + + E dd-MM-y - E dd-MM-y G + E dd-MM-y - E dd-MM-y G + E dd-MM-y - E dd-MM-y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + MMMM-MMMM y G + MMMM y - MMMM y G + + + + + + + + + jan. + feb. + mrt. + apr. + mei + jun. + jul. + aug. + sep. + okt. + nov. + dec. + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + + + + jan + feb + mrt + apr + mei + jun + jul + aug + sep + okt + nov + dec + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januari + februari + maart + april + mei + juni + juli + augustus + september + oktober + november + december + + + + + + + zo + ma + di + wo + do + vr + za + + + Z + M + D + W + D + V + Z + + + zo + ma + di + wo + do + vr + za + + + zondag + maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + + + + + zo + ma + di + wo + do + vr + za + + + Z + M + D + W + D + V + Z + + + zo + ma + di + wo + do + vr + za + + + zondag + maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1e kwartaal + 2e kwartaal + 3e kwartaal + 4e kwartaal + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1e kwartaal + 2e kwartaal + 3e kwartaal + 4e kwartaal + + + + + + + 12 uur 's middags + + + AM + n + PM + + + AM + 12 uur 's middags + PM + + + + + a.m. + p.m. + + + voormiddag + p.m. + + + + + + Voor Christus + vóór gewone jaartelling + na Christus + gewone jaartelling + + + v.Chr. + v.g.j. + n.Chr. + g.j. + + + v.C. + vgj + n.C. + gj + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd-MM-yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + mm:ss + y + M-y + d-M-y + E d-M-y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd-MM - dd-MM + dd-MM - dd-MM + + + E dd-MM - E dd-MM + E dd-MM - E dd-MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + MMMM–MMMM + + + y-y + + + MM-y - MM-y + MM-y - MM-y + + + dd-MM-y - dd-MM-y + dd-MM-y - dd-MM-y + dd-MM-y - dd-MM-y + + + E dd-MM-y - E dd-MM-y + E dd-MM-y - E dd-MM-y + E dd-MM-y - E dd-MM-y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + MMMM-MMMM y + MMMM y - MMMM y + + + + + + + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + Tisjrie + Chesjwan + Kislev + Tevet + Sjevat + Adar A + Adar + Adar B + Nisan + Ijar + Sivan + Tammoez + Av + Elloel + + + + + + AM + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Chaitra + Vaishakha + Jyeshtha + Aashaadha + Shraavana + Bhaadrapada + Ashvina + Kaartika + Agrahayana + Pausha + Maagha + Phaalguna + + + + + + SAKA + + + + + + + + Moeh. + Saf. + Rab. I + Rab. II + Joem. I + Joem. II + Raj. + Sja. + Ram. + Sjaw. + Doe al k. + Doe al h. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Moeharram + Safar + Rabiʻa al awal + Rabiʻa al thani + Joemadʻal awal + Joemadʻal thani + Rajab + Sjaʻaban + Ramadan + Sjawal + Doe al kaʻaba + Doe al hizja + + + + + Moeh. + Saf. + Rab. I + Rab. II + Joem. I + Joem. II + Raj. + Sja. + Ram. + Sjaw. + Doe al k. + Doe al h. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Moeharram + Safar + Rabiʻa al awal + Rabiʻa al thani + Joemadʻal awal + Joemadʻal thani + Rajab + Sjaʻaban + Ramadan + Sjawal + Doe al kaʻaba + Doe al hizja + + + + + + Saʻna Hizjria + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + Taika (645-650) + Hakuchi (650-671) + Hakuhō (672-686) + Shuchō (686-701) + Taihō (701-704) + Keiun (704-708) + Wadō (708-715) + Reiki (715-717) + Yōrō (717-724) + Jinki (724-729) + Tempyō (729-749) + Tempyō-kampō (749-749) + Tempyō-shōhō (749-757) + Tempyō-hōji (757-765) + Temphō-jingo (765-767) + Jingo-keiun (767-770) + Hōki (770-780) + Ten-ō (781-782) + Enryaku (782-806) + Daidō (806-810) + Kōnin (810-824) + Tenchō (824-834) + Jōwa (834-848) + Kajō (848-851) + Ninju (851-854) + Saiko (854-857) + Tennan (857-859) + Jōgan (859-877) + Genkei (877-885) + Ninna (885-889) + Kampyō (889-898) + Shōtai (898-901) + Engi (901-923) + Enchō (923-931) + Shōhei (931-938) + Tengyō (938-947) + Tenryaku (947-957) + Tentoku (957-961) + Ōwa (961-964) + Kōhō (964-968) + Anna (968-970) + Tenroku (970-973) + Ten-en (973-976) + Jōgen (976-978) + Tengen (978-983) + Eikan (983-985) + Kanna (985-987) + Ei-en (987-989) + Eiso (989-990) + Shōryaku (990-995) + Chōtoku (995-999) + Chōhō (999-1004) + Kankō (1004-1012) + Chōwa (1012-1017) + Kannin (1017-1021) + Jian (1021-1024) + Manju (1024-1028) + Chōgen (1028-1037) + Chōryaku (1037-1040) + Chōkyū (1040-1044) + Kantoku (1044-1046) + Eishō (1046-1053) + Tengi (1053-1058) + Kōhei (1058-1065) + Jiryaku (1065-1069) + Enkyū (1069-1074) + Shōho (1074-1077) + Shōryaku (1077-1081) + Eiho (1081-1084) + Ōtoku (1084-1087) + Kanji (1087-1094) + Kaho (1094-1096) + Eichō (1096-1097) + Shōtoku (1097-1099) + Kōwa (1099-1104) + Chōji (1104-1106) + Kashō (1106-1108) + Tennin (1108-1110) + Ten-ei (1110-1113) + Eikyū (1113-1118) + Gen-ei (1118-1120) + Hoan (1120-1124) + Tenji (1124-1126) + Daiji (1126-1131) + Tenshō (1131-1132) + Chōshō (1132-1135) + Hoen (1135-1141) + Eiji (1141-1142) + Kōji (1142-1144) + Tenyō (1144-1145) + Kyūan (1145-1151) + Ninpei (1151-1154) + Kyūju (1154-1156) + Hogen (1156-1159) + Heiji (1159-1160) + Eiryaku (1160-1161) + Ōho (1161-1163) + Chōkan (1163-1165) + Eiman (1165-1166) + Nin-an (1166-1169) + Kaō (1169-1171) + Shōan (1171-1175) + Angen (1175-1177) + Jishō (1177-1181) + Yōwa (1181-1182) + Juei (1182-1184) + Genryuku (1184-1185) + Bunji (1185-1190) + Kenkyū (1190-1199) + Shōji (1199-1201) + Kennin (1201-1204) + Genkyū (1204-1206) + Ken-ei (1206-1207) + Shōgen (1207-1211) + Kenryaku (1211-1213) + Kenpō (1213-1219) + Shōkyū (1219-1222) + Jōō (1222-1224) + Gennin (1224-1225) + Karoku (1225-1227) + Antei (1227-1229) + Kanki (1229-1232) + Jōei (1232-1233) + Tempuku (1233-1234) + Bunryaku (1234-1235) + Katei (1235-1238) + Ryakunin (1238-1239) + En-ō (1239-1240) + Ninji (1240-1243) + Kangen (1243-1247) + Hōji (1247-1249) + Kenchō (1249-1256) + Kōgen (1256-1257) + Shōka (1257-1259) + Shōgen (1259-1260) + Bun-ō (1260-1261) + Kōchō (1261-1264) + Bun-ei (1264-1275) + Kenji (1275-1278) + Kōan (1278-1288) + Shōō (1288-1293) + Einin (1293-1299) + Shōan (1299-1302) + Kengen (1302-1303) + Kagen (1303-1306) + Tokuji (1306-1308) + Enkei (1308-1311) + Ōchō (1311-1312) + Shōwa (1312-1317) + Bunpō (1317-1319) + Genō (1319-1321) + Genkyō (1321-1324) + Shōchū (1324-1326) + Kareki (1326-1329) + Gentoku (1329-1331) + Genkō (1331-1334) + Kemmu (1334-1336) + Engen (1336-1340) + Kōkoku (1340-1346) + Shōhei (1346-1370) + Kentoku (1370-1372) + Bunchū (1372-1375) + Tenju (1375-1379) + Kōryaku (1379-1381) + Kōwa (1381-1384) + Genchū (1384-1392) + Meitoku (1384-1387) + Kakei (1387-1389) + Kōō (1389-1390) + Meitoku (1390-1394) + Ōei (1394-1428) + Shōchō (1428-1429) + Eikyō (1429-1441) + Kakitsu (1441-1444) + Bun-an (1444-1449) + Hōtoku (1449-1452) + Kyōtoku (1452-1455) + Kōshō (1455-1457) + Chōroku (1457-1460) + Kanshō (1460-1466) + Bunshō (1466-1467) + Ōnin (1467-1469) + Bunmei (1469-1487) + Chōkyō (1487-1489) + Entoku (1489-1492) + Meiō (1492-1501) + Bunki (1501-1504) + Eishō (1504-1521) + Taiei (1521-1528) + Kyōroku (1528-1532) + Tenmon (1532-1555) + Kōji (1555-1558) + Eiroku (1558-1570) + Genki (1570-1573) + Tenshō (1573-1592) + Bunroku (1592-1596) + Keichō (1596-1615) + Genwa (1615-1624) + Kan-ei (1624-1644) + Shōho (1644-1648) + Keian (1648-1652) + Shōō (1652-1655) + Meiryaku (1655-1658) + Manji (1658-1661) + Kanbun (1661-1673) + Enpō (1673-1681) + Tenwa (1681-1684) + Jōkyō (1684-1688) + Genroku (1688-1704) + Hōei (1704-1711) + Shōtoku (1711-1716) + Kyōhō (1716-1736) + Genbun (1736-1741) + Kanpō (1741-1744) + Enkyō (1744-1748) + Kan-en (1748-1751) + Hōryaku (1751-1764) + Meiwa (1764-1772) + An-ei (1772-1781) + Tenmei (1781-1789) + Kansei (1789-1801) + Kyōwa (1801-1804) + Bunka (1804-1818) + Bunsei (1818-1830) + Tenpō (1830-1844) + Kōka (1844-1848) + Kaei (1848-1854) + Ansei (1854-1860) + Man-en (1860-1861) + Bunkyū (1861-1864) + Genji (1864-1865) + Keiō (1865-1868) + Meiji + Taishō + Shōwa + Heisei + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + AP + + + + + + + Before R.O.C. + Minguo + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + L + d-M + E d-M + LLL + d MMM + E d MMM + d MMMM + y G + y G + M-y GGGGG + d-M-y GGGGG + E d-M-y GGGGG + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + + + + + Tijdperk + + + Jaar + vorig jaar + dit jaar + volgend jaar + + Over {0} jaar + Over {0} jaar + + + {0} jaar geleden + {0} jaar geleden + + + + Maand + vorige maand + deze maand + volgende maand + + Over {0} maand + Over {0} maanden + + + {0} maand geleden + {0} maanden geleden + + + + Week + vorige week + deze week + volgende week + + Over {0} week + Over {0} weken + + + {0} week geleden + {0} weken geleden + + + + Dag + eergisteren + gisteren + vandaag + morgen + overmorgen + + Over {0} dag + Over {0} dagen + + + {0} dag geleden + {0} dagen geleden + + + + Dag van de week + + + afgelopen zondag + deze zondag + volgende week zondag + + + afgelopen maandag + deze maandag + volgende week maandag + + + afgelopen dinsdag + deze dinsdag + volgende week dinsdag + + + afgelopen woensdag + deze woensdag + volgende week woensdag + + + afgelopen donderdag + deze donderdag + volgende week donderdag + + + afgelopen vrijdag + deze vrijdag + volgende week vrijdag + + + afgelopen zaterdag + deze zaterdag + volgende week zaterdag + + + AM/PM + + + Uur + + Over {0} uur + Over {0} uur + + + {0} uur geleden + {0} uur geleden + + + + Minuut + + Over {0} minuut + Over {0} minuten + + + {0} minuut geleden + {0} minuten geleden + + + + Seconde + nu + + Over {0} seconde + Over {0} seconden + + + {0} seconde geleden + {0} seconden geleden + + + + Zone + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0}-tijd + Zomertijd {0} + Standaardtijd {0} + {1} ({0}) + + Onbekende stad + + + Tirana + + + Jerevan + + + Dumont d’Urville + + + Río Gallegos + + + Tucumán + + + Córdoba + + + Wenen + + + Bakoe + + + Brussel + + + Bahrein + + + Saint-Barthélemy + + + Pôrto Velho + + + Cuiabá + + + Belém + + + São Paulo + + + Maceió + + + Atikokan + + + St. John’s + + + Cocoseilanden + + + Zürich + + + Paaseiland + + + Sjanghai + + + Bogotá + + + Kaapverdië + + + Curaçao + + + Christmaseiland + + + Praag + + + Berlijn + + + Kopenhagen + + + Galápagos + + + Caïro + + + Asmara + + + Canarische Eilanden + + + Addis Abeba + + + Chuuk + + + Pohnpei + + + Faeröer + + + Parijs + + + + Britse zomertijd + + Londen + + + Nuuk + + + Ittoqqortoormiit + + + Athene + + + Zuid-Georgia + + + Hongkong + + + Boedapest + + + + Ierse zomertijd + + + + Jeruzalem + + + Calcutta + + + Chagosarchipel + + + Bagdad + + + Teheran + + + Tokio + + + Bisjkek + + + Phnom-Penh + + + Enderbury-eiland + + + St. Kitts + + + Koeweit + + + Aqtöbe + + + Alma-Ata + + + Beiroet + + + St. Lucia + + + Luxemburg + + + Maldiven + + + Mazatlán + + + Bahía de Banderas + + + Mexico-stad + + + Mérida + + + Nouméa + + + Kathmandu + + + Marquesaseilanden + + + Gambiereilanden + + + Manilla + + + Warschau + + + Azoren + + + Lissabon + + + Asunción + + + Réunion + + + Boekarest + + + Belgrado + + + Moskou + + + Wolgograd + + + Jekaterinenburg + + + Krasnojarsk + + + Irkoetsk + + + Jakoetsk + + + Sachalin + + + Kamtsjatka + + + Riyad + + + Mahé + + + Khartoem + + + Sint-Helena + + + Sao Tomé + + + Salvador + + + Beneden Prinsen Kwartier + + + Lomé + + + Dusjanbe + + + Asjchabad + + + Istanboel + + + Oezjhorod + + + Zaporizja + + + Beulah, Noord-Dakota + + + New Salem, Noord-Dakota + + + Center, Noord-Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Tasjkent + + + Vaticaanstad + + + St. Vincent + + + St. Thomas + + + Ho Chi Minhstad + + + + Acre-tijd + Acre-standaardtijd + Acre-zomertijd + + + + + Afghaanse tijd + + + + + Centraal-Afrikaanse tijd + + + + + Oost-Afrikaanse tijd + + + + + Zuid-Afrikaanse tijd + + + + + West-Afrikaanse tijd + West-Afrikaanse standaardtijd + West-Afrikaanse zomertijd + + + + + Alaska-tijd + Alaska-standaardtijd + Alaska-zomertijd + + + + + Alma-Ata-tijd + Alma-Ata-standaardtijd + Alma-Ata-zomertijd + + + + + Amazone-tijd + Amazone-standaardtijd + Amazone-zomertijd + + + + + Central-tijd + Central-standaardtijd + Central-zomertijd + + + + + Eastern-tijd + Eastern-standaardtijd + Eastern-zomertijd + + + + + Mountain-tijd + Mountain-standaardtijd + Mountain-zomertijd + + + + + Pacific-tijd + Pacific-standaardtijd + Pacific-zomertijd + + + + + Anadyr-tijd + Anadyr-standaardtijd + Anadyr-zomertijd + + + + + Aqtau-tijd + Aqtau-standaardtijd + Aqtau-zomertijd + + + + + Aqtöbe-tijd + Aqtöbe-standaardtijd + Aqtöbe-zomertijd + + + + + Arabische tijd + Arabische standaardtijd + Arabische zomertijd + + + + + Argentijnse tijd + Argentijnse standaardtijd + Argentijnse zomertijd + + + + + West-Argentijnse tijd + West-Argentijnse standaardtijd + West-Argentijnse zomertijd + + + + + Armeense tijd + Armeense standaardtijd + Armeense zomertijd + + + + + Atlantic-tijd + Atlantic-standaardtijd + Atlantic-zomertijd + + + + + Midden-Australische tijd + Midden-Australische standaardtijd + Midden-Australische zomertijd + + + + + Midden-Australische westelijke tijd + Midden-Australische westelijke standaardtijd + Midden-Australische westelijke zomertijd + + + + + Oost-Australische tijd + Oost-Australische standaardtijd + Oost-Australische zomertijd + + + + + West-Australische tijd + West-Australische standaardtijd + West-Australische zomertijd + + + + + Azerbeidzjaanse tijd + Azerbeidzjaanse standaardtijd + Azerbeidzjaanse zomertijd + + + + + Azoren-tijd + Azoren-standaardtijd + Azoren-zomertijd + + + + + Bengalese tijd + Bengalese standaardtijd + Bengalese zomertijd + + + + + Bhutaanse tijd + + + + + Boliviaanse tijd + + + + + Braziliaanse tijd + Braziliaanse standaardtijd + Braziliaanse zomertijd + + + + + Bruneise tijd + + + + + Kaapverdische tijd + Kaapverdische standaardtijd + Kaapverdische zomertijd + + + + + Chamorro-tijd + + + + + Chatham tijd + Chatham standaardtijd + Chatham zomertijd + + + + + Chileense tijd + Chileense standaardtijd + Chileense zomertijd + + + + + Chinese tijd + Chinese standaardtijd + Chinese zomertijd + + + + + Tsjojbalsan tijd + Tsjojbalsan standaardtijd + Tsjojbalsan zomertijd + + + + + Christmaseilandse tijd + + + + + Cocoseilandse tijd + + + + + Colombiaanse tijd + Colombiaanse standaardtijd + Colombiaanse zomertijd + + + + + Cookeilandse tijd + Cookeilandse standaardtijd + Cookeilandse halve zomertijd + + + + + Cubaanse tijd + Cubaanse standaardtijd + Cubaanse zomertijd + + + + + Davis tijd + + + + + Dumont-d'Urville tijd + + + + + Oost-Timorese tijd + + + + + Paaseilandse tijd + Paaseilandse standaardtijd + Paaseilandse zomertijd + + + + + Ecuadoraanse tijd + + + + + Midden-Europese tijd + Midden-Europese standaardtijd + Midden-Europese zomertijd + + + CET + CET + CEST + + + + + Oost-Europese tijd + Oost-Europese standaardtijd + Oost-Europese zomertijd + + + EET + EET + EEST + + + + + West-Europese tijd + West-Europese standaardtijd + West-Europese zomertijd + + + WET + WET + WEST + + + + + Falklandeilandse tijd + Falklandeilandse standaardtijd + Falklandeilandse zomertijd + + + + + Fijische tijd + Fijische standaardtijd + Fijische zomertijd + + + + + Frans-Guyaanse tijd + + + + + Franse zuidelijke en Antarctische tijd + + + + + Galapagoseilandse tijd + + + + + Gambiereilandse tijd + + + + + Georgische tijd + Georgische standaardtijd + Georgische zomertijd + + + + + Gilberteilandse tijd + + + + + Greenwich Mean Time + + + + + Oost-Groenlandse tijd + Oost-Groenlandse standaardtijd + Oost-Groenlandse zomertijd + + + + + West-Groenlandse tijd + West-Groenlandse standaardtijd + West-Groenlandse zomertijd + + + + + Guamese standaardtijd + + + + + Golf standaardtijd + + + + + Guyaanse tijd + + + + + Hawaii-Aleoetische tijd + Hawaii-Aleoetische standaardtijd + Hawaii-Aleoetische zomertijd + + + + + Hongkongse tijd + Hongkongse standaardtijd + Hongkongse zomertijd + + + + + Hovd tijd + Hovd standaardtijd + Hovd zomertijd + + + + + Indiase tijd + + + + + Indische Oceaan-tijd + + + + + Indochinese tijd + + + + + Centraal-Indonesische tijd + + + + + Oost-Indonesische tijd + + + + + West-Indonesische tijd + + + + + Iraanse tijd + Iraanse standaardtijd + Iraanse zomertijd + + + + + Irkoetsk-tijd + Irkoetsk-standaardtijd + Irkoetsk-zomertijd + + + + + Israëlische tijd + Israëlische standaardtijd + Israëlische zomertijd + + + + + Japanse tijd + Japanse standaardtijd + Japanse zomertijd + + + + + Petropavlovsk-Kamtsjatski-tijd + Petropavlovsk-Kamtsjatski-standaardtijd + Petropavlovsk-Kamtsjatski-zomertijd + + + + + Oost-Kazachse tijd + + + + + West-Kazachse tijd + + + + + Koreaanse tijd + Koreaanse standaardtijd + Koreaanse zomertijd + + + + + Kosraese tijd + + + + + Krasnojarsk-tijd + Krasnojarsk-standaardtijd + Krasnojarsk-zomertijd + + + + + Kirgizische tijd + + + + + Lanka-tijd + + + + + Line-eilandse tijd + + + + + Lord Howe-eilandse tijd + Lord Howe-eilandse standaardtijd + Lord Howe-eilandse zomertijd + + + + + Macause tijd + Macause standaardtijd + Macause zomertijd + + + + + Macquarie-eilandse tijd + + + + + Magadan-tijd + Magadan-standaardtijd + Magadan-zomertijd + + + + + Maleisische tijd + + + + + Maldivische tijd + + + + + Marquesaseilandse tijd + + + + + Marshalleilandse tijd + + + + + Mauritiaanse tijd + Mauritiaanse standaardtijd + Mauritiaanse zomertijd + + + + + Mawson tijd + + + + + Ulaanbaatar tijd + Ulaanbaatar standaardtijd + Ulaanbaatar zomertijd + + + + + Moskou-tijd + Moskou-standaardtijd + Moskou-zomertijd + + + + + Myanmarese tijd + + + + + Nauruaanse tijd + + + + + Nepalese tijd + + + + + Nieuw-Caledonische tijd + Nieuw-Caledonische standaardtijd + Nieuw-Caledonische zomertijd + + + + + Nieuw-Zeelandse tijd + Nieuw-Zeelandse standaardtijd + Nieuw-Zeelandse zomertijd + + + + + Newfoundland-tijd + Newfoundland-standaardtijd + Newfoundland-zomertijd + + + + + Niuese tijd + + + + + Norfolkeilandse tijd + + + + + Fernando de Noronha-tijd + Fernando de Noronha-standaardtijd + Fernando de Noronha-zomertijd + + + + + Noordelijk Mariaanse tijd + + + + + Novosibirsk-tijd + Novosibirsk-standaardtijd + Novosibirsk-zomertijd + + + + + Omsk-tijd + Omsk-standaardtijd + Omsk-zomertijd + + + + + Pakistaanse tijd + Pakistaanse standaardtijd + Pakistaanse zomertijd + + + + + Belause tijd + + + + + Papoea-Nieuw-Guineese tijd + + + + + Paraguayaanse tijd + Paraguayaanse standaardtijd + Paraguayaanse zomertijd + + + + + Peruaanse tijd + Peruaanse standaardtijd + Peruaanse zomertijd + + + + + Filipijnse tijd + Filipijnse standaardtijd + Filipijnse zomertijd + + + + + Phoenixeilandse tijd + + + + + Saint Pierre en Miquelon-tijd + Saint Pierre en Miquelon-standaardtijd + Saint Pierre en Miquelon-zomertijd + + + + + Pitcairneilandse tijd + + + + + Pohnpei tijd + + + + + Qyzylorda-tijd + Qyzylorda-standaardtijd + Qyzylorda-zomertijd + + + + + Réunionse tijd + + + + + Rothera tijd + + + + + Sachalin-tijd + Sachalin-standaardtijd + Sachalin-zomertijd + + + + + Samara-tijd + Samara-standaardtijd + Samara-zomertijd + + + + + Samoaanse tijd + Samoaanse standaardtijd + Samoaanse zomertijd + + + + + Seychelse tijd + + + + + Singaporese standaardtijd + + + + + Salomonseilandse tijd + + + + + Zuid-Georgische tijd + + + + + Surinaamse tijd + + + + + Syowa tijd + + + + + Tahitiaanse tijd + + + + + Taipei tijd + Taipei standaardtijd + Taipei zomertijd + + + + + Tadzjiekse tijd + + + + + Tokelau-eilandse tijd + + + + + Tongaanse tijd + Tongaanse standaardtijd + Tongaanse zomertijd + + + + + Chuukse tijd + + + + + Turkmeense tijd + Turkmeense standaardtijd + Turkmeense zomertijd + + + + + Tuvaluaanse tijd + + + + + Uruguayaanse tijd + Uruguayaanse standaardtijd + Uruguayaanse zomertijd + + + + + Oezbeekse tijd + Oezbeekse standaardtijd + Oezbeekse zomertijd + + + + + Vanuatuaanse tijd + Vanuatuaanse standaardtijd + Vanuatuaanse zomertijd + + + + + Venezolaanse tijd + + + + + Vladivostok-tijd + Vladivostok-standaardtijd + Vladivostok-zomertijd + + + + + Wolgograd-tijd + Wolgograd-standaardtijd + Wolgograd-zomertijd + + + + + Vostok tijd + + + + + Wake-eilandse tijd + + + + + Wallis en Futunase tijd + + + + + Jakoetsk-tijd + Jakoetsk-standaardtijd + Jakoetsk-zomertijd + + + + + Jekaterinenburg-tijd + Jekaterinenburg-standaardtijd + Jekaterinenburg-zomertijd + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 duizend + 0 duizend + 00 duizend + 00 duizend + 000 duizend + 000 duizend + 0 miljoen + 0 miljoen + 00 miljoen + 00 miljoen + 000 miljoen + 000 miljoen + 0 miljard + 0 miljard + 00 miljard + 00 miljard + 000 miljard + 000 miljard + 0 biljoen + 0 biljoen + 00 biljoen + 00 biljoen + 000 biljoen + 000 biljoen + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0 mln'.' + 0 mln'.' + 00 mln'.' + 00 mln'.' + 000 mln'.' + 000 mln'.' + 0 mld'.' + 0 mld'.' + 00 mld'.' + 00 mld'.' + 000 mld'.' + 000 mld'.' + 0 bln'.' + 0 bln'.' + 00 bln'.' + 00 bln'.' + 000 bln'.' + 000 bln'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00;¤ #,##0.00- + + + ¤ #,##0.00;(¤ #,##0.00) + + + {0} {1} + {0} {1} + + + + Andorrese peseta + Andorrese peseta + Andorrese peseta + + + Verenigde Arabische Emiraten-dirham + VAE-dirham + VAE-dirham + + + Afghani (1927–2002) + Afghani (AFA) + Afghani (AFA) + + + Afghaanse afghani + Afghaanse afghani + Afghaanse afghani + + + Albanese lek + Albanese lek + Albanese lek + + + Armeense dram + Armeense dram + Armeense dram + + + Nederlands-Antilliaanse gulden + Nederlands-Antilliaanse gulden + Nederlands-Antilliaanse gulden + + + Angolese kwanza + Angolese kwanza + Angolese kwanza + + + Angolese kwanza (1977–1990) + Angolese kwanza (1977–1990) + Angolese kwanza (1977–1990) + + + Angolese nieuwe kwanza (1990–2000) + Angolese nieuwe kwanza (1990–2000) + Angolese nieuwe kwanza (1990–2000) + + + Angolese kwanza reajustado (1995–1999) + Angolese kwanza reajustado (1995–1999) + Angolese kwanza reajustado (1995–1999) + + + Argentijnse austral + Argentijnse austral + Argentijnse austral + + + Argentijnse peso ley (1970–1983) + Argentijnse peso ley (1970–1983) + Argentijnse peso ley (1970–1983) + + + Argentijnse peso (1881–1970) + Argentijnse peso (1881–1970) + Argentijnse peso (1881–1970) + + + Argentijnse peso (1983–1985) + Argentijnse peso (1983–1985) + Argentijnse peso (1983–1985) + + + Argentijnse peso + Argentijnse peso + Argentijnse peso + + + Oostenrijkse schilling + Oostenrijkse schilling + Oostenrijkse schilling + + + Australische dollar + Australische dollar + Australische dollar + AU$ + + + Arubaanse gulden + Arubaanse gulden + Arubaanse gulden + + + Azerbeidzjaanse manat (1993–2006) + Azerbeidzjaanse manat (1993–2006) + Azerbeidzjaanse manat (1993–2006) + + + Azerbeidzjaanse manat + Azerbeidzjaanse manat + Azerbeidzjaanse manat + + + Bosnische dinar + Bosnische dinar + Bosnische dinar + + + Bosnische convertibele mark + Bosnische convertibele mark + Bosnische convertibele mark + + + Nieuwe Bosnische dinar (1994–1997) + Nieuwe Bosnische dinar (1994–1997) + Nieuwe Bosnische dinar (1994–1997) + + + Barbadaanse dollar + Barbadaanse dollar + Barbadaanse dollar + + + Bengalese taka + Bengalese taka + Bengalese taka + + + Belgische frank (convertibel) + Belgische frank (convertibel) + Belgische frank (convertibel) + + + Belgische frank + Belgische frank + Belgische frank + + + Belgische frank (financieel) + Belgische frank (financieel) + Belgische frank (financieel) + + + Bulgaarse harde lev + Bulgaarse harde lev + Bulgaarse harde lev + + + Bulgaarse socialistische lev + Bulgaarse socialistische lev + Bulgaarse socialistische lev + + + Bulgaarse lev + Bulgaarse lev + Bulgaarse leva + + + Bulgaarse lev (1879–1952) + Bulgaarse lev (1879–1952) + Bulgaarse lev (1879–1952) + + + Bahreinse dinar + Bahreinse dinar + Bahreinse dinar + + + Burundese frank + Burundese frank + Burundese frank + + + Bermuda-dollar + Bermuda-dollar + Bermuda-dollar + + + Bruneise dollar + Bruneise dollar + Bruneise dollar + + + Boliviaanse boliviano + Boliviaanse boliviano + Boliviaanse boliviano + + + Boliviaanse boliviano (1863–1963) + Boliviaanse boliviano (1863–1963) + Boliviaanse boliviano (1863–1963) + + + Boliviaanse peso + Boliviaanse peso + Boliviaanse peso + + + Boliviaanse mvdol + Boliviaanse mvdol + Boliviaanse mvdol + + + Braziliaanse cruzeiro novo (1967–1986) + Braziliaanse cruzeiro novo (1967–1986) + Braziliaanse cruzeiro novo (1967–1986) + + + Braziliaanse cruzado + Braziliaanse cruzado + Braziliaanse cruzado + + + Braziliaanse cruzeiro (1990–1993) + Braziliaanse cruzeiro (1990–1993) + Braziliaanse cruzeiro (1990–1993) + + + Braziliaanse real + Braziliaanse real + Braziliaanse real + R$ + + + Braziliaanse cruzado novo + Braziliaanse cruzado novo + Braziliaanse cruzado novo + + + Braziliaanse cruzeiro + Braziliaanse cruzeiro + Braziliaanse cruzeiro + + + Braziliaanse cruzeiro (1942–1967) + Braziliaanse cruzeiro (1942–1967) + Braziliaanse cruzeiro (1942–1967) + + + Bahamaanse dollar + Bahamaanse dollar + Bahamaanse dollar + + + Bhutaanse ngultrum + Bhutaanse ngultrum + Bhutaanse ngultrum + + + Birmese kyat + Birmese kyat + Birmese kyat + + + Botswaanse pula + Botswaanse pula + Botswaanse pula + + + Wit-Russische nieuwe roebel (1994–1999) + Wit-Russische nieuwe roebel (1994–1999) + Wit-Russische nieuwe roebel (1994–1999) + + + Wit-Russische roebel + Wit-Russische roebel + Wit-Russische roebel + + + Belizaanse dollar + Belizaanse dollar + Belizaanse dollar + + + Canadese dollar + Canadese dollar + Canadese dollar + C$ + + + Congolese frank + Congolese frank + Congolese frank + + + WIR euro + WIR euro + WIR euro + + + Zwitserse frank + Zwitserse frank + Zwitserse frank + + + WIR franc + WIR franc + WIR franc + + + Chileense escudo + Chileense escudo + Chileense escudo + + + Chileense unidades de fomento + Chileense unidades de fomento + Chileense unidades de fomento + + + Chileense peso + Chileense peso + Chileense peso + + + Chinese yuan renminbi + Chinese renminbi + Chinese renminbi + CN¥ + + + Colombiaanse peso + Colombiaanse peso + Colombiaanse peso + + + Unidad de Valor Real + Unidad de Valor Real + Unidad de Valor Real + + + Costaricaanse colón + Costaricaanse colón + Costaricaanse colón + + + Oude Servische dinar + Oude Servische dinar + Oude Servische dinar + + + Tsjechoslowaakse harde koruna + Tsjechoslowaakse harde koruna + Tsjechoslowaakse harde koruna + + + Cubaanse convertibele peso + Cubaanse convertibele peso + Cubaanse convertibele peso + + + Cubaanse peso + Cubaanse peso + Cubaanse peso + + + Kaapverdische escudo + Kaapverdische escudo + Kaapverdische escudo + + + Cyprisch pond + Cyprisch pond + Cyprisch pond + + + Tsjechische kroon + Tsjechische kroon + Tsjechische kronen + + + Oost-Duitse ostmark + Oost-Duitse ostmark + Oost-Duitse ostmark + + + Duitse mark + Duitse mark + Duitse mark + + + Djiboutiaanse frank + Djiboutiaanse frank + Djiboutiaanse frank + + + Deense kroon + Deense kroon + Deense kronen + + + Dominicaanse peso + Dominicaanse peso + Dominicaanse peso + + + Algerijnse dinar + Algerijnse dinar + Algerijnse dinar + + + Ecuadoraanse sucre + Ecuadoraanse sucre + Ecuadoraanse sucre + + + Ecuadoraanse unidad de valor constante (UVC) + Ecuadoraanse unidad de valor constante (UVC) + Ecuadoraanse unidad de valor constante (UVC) + + + Estlandse kroon + Estlandse kroon + Estlandse kroon + + + Egyptisch pond + Egyptisch pond + Egyptisch pond + + + Eritrese nakfa + Eritrese nakfa + Eritrese nakfa + + + Spaanse peseta (account A) + Spaanse peseta (account A) + Spaanse peseta (account A) + + + Spaanse peseta (convertibele account) + Spaanse peseta (convertibele account) + Spaanse peseta (convertibele account) + + + Spaanse peseta + Spaanse peseta + Spaanse peseta + + + Ethiopische birr + Ethiopische birr + Ethiopische birr + + + Euro + euro + euro + + + + Finse markka + Finse markka + Finse markka + + + Fiji-dollar + Fiji-dollar + Fiji-dollar + FJ$ + + + Falklandeilands pond + Falklandeilands pond + Falklandeilands pond + + + Franse franc + Franse franc + Franse franc + + + Brits pond sterling + Brits pond sterling + Brits pond sterling + £ + + + Georgische kupon larit + Georgische kupon larit + Georgische kupon larit + + + Georgische lari + Georgische lari + Georgische lari + + + Ghanese cedi (1979–2007) + Ghanese cedi (1979–2007) + Ghanese cedi (1979–2007) + + + Ghanese cedi + Ghanese cedi + Ghanese cedi + + + Gibraltarees pond + Gibraltarees pond + Gibraltarees pond + + + Gambiaanse dalasi + Gambiaanse dalasi + Gambiaanse dalasi + + + Guinese franc + Guinese franc + Guinese franc + + + Guinese syli + Guinese syli + Guinese syli + + + Equatoriaal-Guinese ekwele guineana + Equatoriaal-Guinese ekwele guineana + Equatoriaal-Guinese ekwele guineana + + + Griekse drachme + Griekse drachme + Griekse drachme + + + Guatemalteekse quetzal + Guatemalteekse quetzal + Guatemalteekse quetzal + + + Portugees-Guinese escudo + Portugees-Guinese escudo + Portugees-Guinese escudo + + + Guinee-Bissause peso + Guinee-Bissause peso + Guinee-Bissause peso + + + Guyaanse dollar + Guyaanse dollar + Guyaanse dollar + + + Hongkongse dollar + Hongkongse dollar + Hongkongse dollar + HK$ + + + Hondurese lempira + Hondurese lempira + Hondurese lempira + + + Kroatische dinar + Kroatische dinar + Kroatische dinar + + + Kroatische kuna + Kroatische kuna + Kroatische kuna + + + Haïtiaanse gourde + Haïtiaanse gourde + Haïtiaanse gourde + + + Hongaarse forint + Hongaarse forint + Hongaarse forint + + + Indonesische roepia + Indonesische roepia + Indonesische roepia + + + Iers pond + Iers pond + Iers pond + + + Israëlisch pond + Israëlisch pond + Israëlisch pond + + + Israëlische nieuwe shekel + Israëlische nieuwe shekel + Israëlische nieuwe shekel + + + + Indiase roepie + Indiase roepie + Indiase roepie + + + + Iraakse dinar + Iraakse dinar + Iraakse dinar + + + Iraanse rial + Iraanse rial + Iraanse rial + + + IJslandse kroon + IJslandse kroon + IJslandse kronen + + + Italiaanse lire + Italiaanse lire + Italiaanse lire + + + Jamaicaanse dollar + Jamaicaanse dollar + Jamaicaanse dollar + + + Jordaanse dinar + Jordaanse dinar + Jordaanse dinar + + + Japanse yen + Japanse yen + Japanse yen + JP¥ + + + Keniaanse shilling + Keniaanse shilling + Keniaanse shilling + + + Kirgizische som + Kirgizische som + Kirgizische som + + + Cambodjaanse riel + Cambodjaanse riel + Cambodjaanse riel + + + Comorese frank + Comorese frank + Comorese frank + + + Noord-Koreaanse won + Noord-Koreaanse won + Noord-Koreaanse won + + + Zuid-Koreaanse hwan (1953–1962) + Zuid-Koreaanse hwan (1953–1962) + Zuid-Koreaanse hwan (1953–1962) + + + Oude Zuid-Koreaanse won (1945–1953) + oude Zuid-Koreaanse won (1945–1953) + oude Zuid-Koreaanse won (1945–1953) + + + Zuid-Koreaanse won + Zuid-Koreaanse won + Zuid-Koreaanse won + + + + Koeweitse dinar + Koeweitse dinar + Koeweitse dinar + + + Caymaneilandse dollar + Caymaneilandse dollar + Caymaneilandse dollar + + + Kazachstaanse tenge + Kazachstaanse tenge + Kazachstaanse tenge + + + Laotiaanse kip + Laotiaanse kip + Laotiaanse kip + + + Libanees pond + Libanees pond + Libanees pond + + + Sri Lankaanse roepie + Sri Lankaanse roepie + Sri Lankaanse roepie + + + Liberiaanse dollar + Liberiaanse dollar + Liberiaanse dollar + + + Lesothaanse loti + Lesothaanse loti + Lesothaanse loti + + + Litouwse litas + Litouwse litas + Litouwse litas + + + Litouwse talonas + Litouwse talonas + Litouwse talonas + + + Luxemburgse convertibele franc + Luxemburgse convertibele franc + Luxemburgse convertibele franc + + + Luxemburgse frank + Luxemburgse frank + Luxemburgse frank + + + Luxemburgse financiële franc + Luxemburgse financiële franc + Luxemburgse financiële franc + + + Letse lats + Letse lats + Letse lats + + + Letse roebel + Letse roebel + Letse roebel + + + Libische dinar + Libische dinar + Libische dinar + + + Marokkaanse dirham + Marokkaanse dirham + Marokkaanse dirham + + + Marokkaanse franc + Marokkaanse franc + Marokkaanse franc + + + Monegaskische frank + Monegaskische frank + Monegaskische frank + + + Moldavische cupon + Moldavische cupon + Moldavische cupon + + + Moldavische leu + Moldavische leu + Moldavische leu + + + Malagassische ariary + Malagassische ariary + Malagassische ariary + + + Malagassische franc + Malagassische franc + Malagassische franc + + + Macedonische denar + Macedonische denar + Macedonische denar + + + Macedonische denar (1992–1993) + Macedonische denar (1992–1993) + Macedonische denar (1992–1993) + + + Malinese franc + Malinese franc + Malinese franc + + + Myanmarese kyat + Myanmarese kyat + Myanmarese kyat + + + Mongoolse tugrik + Mongoolse tugrik + Mongoolse tugrik + + + Macause pataca + Macause pataca + Macause pataca + + + Mauritaanse ouguiya + Mauritaanse ouguiya + Mauritaanse ouguiya + + + Maltese lire + Maltese lire + Maltese lire + + + Maltees pond + Maltees pond + Maltees pond + + + Mauritiaanse roepie + Mauritiaanse roepie + Mauritiaanse roepie + + + Maldivische rufiyaa + Maldivische rufiyaa + Maldivische rufiyaa + + + Malawische kwacha + Malawische kwacha + Malawische kwacha + + + Mexicaanse peso + Mexicaanse peso + Mexicaanse peso + MX$ + + + Mexicaanse zilveren peso (1861–1992) + Mexicaanse zilveren peso (1861–1992) + Mexicaanse zilveren peso (1861–1992) + + + Mexicaanse unidad de inversion (UDI) + Mexicaanse unidad de inversion (UDI) + Mexicaanse unidad de inversion (UDI) + + + Maleisische ringgit + Maleisische ringgit + Maleisische ringgit + + + Mozambikaanse escudo + Mozambikaanse escudo + Mozambikaanse escudo + + + Oude Mozambikaanse metical + Oude Mozambikaanse metical + Oude Mozambikaanse metical + + + Mozambikaanse metical + Mozambikaanse metical + Mozambikaanse metical + + + Namibische dollar + Namibische dollar + Namibische dollar + + + Nigeriaanse naira + Nigeriaanse naira + Nigeriaanse naira + + + Nicaraguaanse córdoba (1988–1991) + Nicaraguaanse córdoba (1988–1991) + Nicaraguaanse córdoba (1988–1991) + + + Nicaraguaanse córdoba + Nicaraguaanse córdoba + Nicaraguaanse córdoba + + + Nederlandse gulden + Nederlandse gulden + Nederlandse gulden + + + Noorse kroon + Noorse kroon + Noorse kronen + + + Nepalese roepie + Nepalese roepie + Nepalese roepie + + + Nieuw-Zeelandse dollar + Nieuw-Zeelandse dollar + Nieuw-Zeelandse dollar + NZ$ + + + Omaanse rial + Omaanse rial + Omaanse rial + + + Panamese balboa + Panamese balboa + Panamese balboa + + + Peruaanse inti + Peruaanse inti + Peruaanse inti + + + Peruaanse nieuwe sol + Peruaanse nieuwe sol + Peruaanse nieuwe sol + + + Peruaanse sol + Peruaanse sol + Peruaanse sol + + + Papuaanse kina + Papuaanse kina + Papuaanse kina + + + Filipijnse peso + Filipijnse peso + Filipijnse peso + + + Pakistaanse roepie + Pakistaanse roepie + Pakistaanse roepie + + + Poolse zloty + Poolse zloty + Poolse zloty + + + Poolse zloty (1950–1995) + Poolse zloty (1950–1995) + Poolse zloty (1950–1995) + + + Portugese escudo + Portugese escudo + Portugese escudo + + + Paraguayaanse guarani + Paraguayaanse guarani + Paraguayaanse guarani + + + Qatarese rial + Qatarese rial + Qatarese rial + + + Rhodesische dollar + Rhodesische dollar + Rhodesische dollar + + + Oude Roemeense leu + Oude Roemeense leu + Oude Roemeense leu + + + Roemeense leu + Roemeense leu + Roemeense leu + + + Servische dinar + Servische dinar + Servische dinar + + + Russische roebel + Russische roebel + Russische roebel + + + Russische roebel (1991–1998) + Russische roebel (1991–1998) + Russische roebel (1991–1998) + + + Rwandese frank + Rwandese frank + Rwandese frank + + + Saoedi-Arabische riyal + Saoedi-Arabische riyal + Saoedi-Arabische riyal + + + Salomon-dollar + Salomon-dollar + Salomon-dollar + SI$ + + + Seychelse roepie + Seychelse roepie + Seychelse roepie + + + Soedanese dinar + Soedanese dinar + Soedanese dinar + + + Soedanees pond + Soedanees pond + Soedanees pond + + + Soedanees pond (1957–1998) + Soedanees pond (1957–1998) + Soedanees pond (1957–1998) + + + Zweedse kroon + Zweedse kroon + Zweedse kronen + + + Singaporese dollar + Singaporese dollar + Singaporese dollar + + + Sint-Heleens pond + Sint-Heleens pond + Sint-Heleens pond + + + Sloveense tolar + Sloveense tolar + Sloveense tolar + + + Slowaakse koruna + Slowaakse koruna + Slowaakse koruna + + + Sierraleoonse leone + Sierraleoonse leone + Sierraleoonse leone + + + Somalische shilling + Somalische shilling + Somalische shilling + + + Surinaamse dollar + Surinaamse dollar + Surinaamse dollar + + + Surinaamse gulden + Surinaamse gulden + Surinaamse gulden + + + Zuid-Soedanees pond + Zuid-Soedanees pond + Zuid-Soedanees pond + + + Santomese dobra + Santomese dobra + Santomese dobra + + + Sovjet-roebel + Sovjet-roebel + Sovjet-roebel + + + Salvadoraanse colón + Salvadoraanse colón + Salvadoraanse colón + + + Syrisch pond + Syrisch pond + Syrisch pond + + + Swazische lilangeni + Swazische lilangeni + Swazische lilangeni + + + Thaise baht + Thaise baht + Thaise baht + ฿ + + + Tadzjikistaanse roebel + Tadzjikistaanse roebel + Tadzjikistaanse roebel + + + Tadzjikistaanse somoni + Tadzjikistaanse somoni + Tadzjikistaanse somoni + + + Turkmeense manat (1993–2009) + Turkmeense manat (1993–2009) + Turkmeense manat (1993–2009) + + + Turkmeense manat + Turkmeense manat + Turkmeense manat + + + Tunesische dinar + Tunesische dinar + Tunesische dinar + + + Tongaanse paʻanga + Tongaanse paʻanga + Tongaanse paʻanga + + + Timorese escudo + Timorese escudo + Timorese escudo + + + Turkse lire + oude Turkse lira + oude Turkse lira + + + Turkse lira + Turkse lira + Turkse lira + + + Trinidad en Tobago-dollar + Trinidad en Tobago-dollar + Trinidad en Tobago-dollar + + + Nieuwe Taiwanese dollar + Nieuwe Taiwanese dollar + Nieuwe Taiwanese dollar + NT$ + + + Tanzaniaanse shilling + Tanzaniaanse shilling + Tanzaniaanse shilling + + + Oekraïense hryvnia + Oekraïense hryvnia + Oekraïense hryvnia + + + Oekraïense karbovanetz + Oekraïense karbovanetz + Oekraïense karbovanetz + + + Oegandese shilling (1966–1987) + Oegandese shilling (1966–1987) + Oegandese shilling (1966–1987) + + + Oegandese shilling + Oegandese shilling + Oegandese shilling + + + Amerikaanse dollar + Amerikaanse dollar + Amerikaanse dollar + US$ + + + Amerikaanse dollar (volgende dag) + Amerikaanse dollar (volgende dag) + Amerikaanse dollar (volgende dag) + + + Amerikaanse dollar (zelfde dag) + Amerikaanse dollar (zelfde dag) + Amerikaanse dollar (zelfde dag) + + + Uruguayaanse peso en geïndexeerde eenheden + Uruguayaanse peso en geïndexeerde eenheden + Uruguayaanse peso en geïndexeerde eenheden + + + Uruguayaanse peso (1975–1993) + Uruguayaanse peso (1975–1993) + Uruguayaanse peso (1975–1993) + + + Uruguayaanse peso + Uruguayaanse peso + Uruguayaanse peso + + + Oezbekistaanse sum + Oezbekistaanse sum + Oezbekistaanse sum + + + Venezolaanse bolivar (1871–2008) + Venezolaanse bolivar (1871–2008) + Venezolaanse bolivar (1871–2008) + + + Venezolaanse bolivar + Venezolaanse bolivar + Venezolaanse bolivar + + + Vietnamese dong + Vietnamese dong + Vietnamese dong + + + + Oude Vietnamese dong (1978–1985) + oude Vietnamese dong (1978–1985) + oude Vietnamese dong (1978–1985) + + + Vanuatuaanse vatu + Vanuatuaanse vatu + Vanuatuaanse vatu + + + Samoaanse tala + Samoaanse tala + Samoaanse tala + + + CFA-frank + CFA-frank + CFA-frank + FCFA + + + Zilver + Troy ounce zilver + Troy ounces zilver + + + Goud + Troy ounce goud + Troy ounces goud + + + Europese samengestelde eenheid + Europese samengestelde eenheid + Europese samengestelde eenheid + + + Europese monetaire eenheid + Europese monetaire eenheid + Europese monetaire eenheid + + + Europese rekeneenheid (XBC) + Europese rekeneenheid (XBC) + Europese rekeneenheid (XBC) + + + Europese rekeneenheid (XBD) + Europese rekeneenheid (XBD) + Europese rekeneenheid (XBD) + + + Oost-Caribische dollar + Oost-Caribische dollar + Oost-Caribische dollar + EC$ + + + Special Drawing Rights + Special Drawing Rights + Special Drawing Rights + + + European Currency Unit + European Currency Unit + European Currency Unit + + + Franse gouden franc + Franse gouden franc + Franse gouden franc + + + Franse UIC-franc + Franse UIC-franc + Franse UIC-franc + + + CFA-franc BCEAO + CFA-franc BCEAO + CFA-franc BCEAO + CFA + + + Palladium + Troy ounce palladium + Troy ounces palladium + + + CFP-franc + CFP-franc + CFP-frank + XPF + + + Platina + Troy ounce platina + Troy ounces platina + + + RINET-fondsen + RINET-fondsen + RINET-fondsen + + + Sucre + Sucre + Sucre + + + Valutacode voor testdoeleinden + Valutacode voor testdoeleinden + Valutacode voor testdoeleinden + + + ADB-rekeneenheid + ADB-rekeneenheid + ADB-rekeneenheid + + + Onbekende munteenheid + onbekende munteenheid + onbekende munteenheid + + + Jemenitische dinar + Jemenitische dinar + Jemenitische dinar + + + Jemenitische rial + Jemenitische rial + Jemenitische rial + + + Joegoslavische harde dinar + Joegoslavische harde dinar + Joegoslavische harde dinar + + + Joegoslavische noviy-dinar + Joegoslavische noviy-dinar + Joegoslavische noviy-dinar + + + Joegoslavische convertibele dinar + Joegoslavische convertibele dinar + Joegoslavische convertibele dinar + + + Joegoslavische hervormde dinar (1992–1993) + Joegoslavische hervormde dinar (1992–1993) + Joegoslavische hervormde dinar (1992–1993) + + + Zuid-Afrikaanse rand (financieel) + Zuid-Afrikaanse rand (financieel) + Zuid-Afrikaanse rand (financieel) + + + Zuid-Afrikaanse rand + Zuid-Afrikaanse rand + Zuid-Afrikaanse rand + + + Zambiaanse kwacha (1968–2012) + Zambiaanse kwacha (1968–2012) + Zambiaanse kwacha (1968–2012) + + + Zambiaanse kwacha + Zambiaanse kwacha + Zambiaanse kwacha + + + Zaïrese nieuwe zaïre + Zaïrese nieuwe zaïre + Zaïrese nieuwe zaïre + + + Zaïrese zaïre + Zaïrese zaïre + Zaïrese zaïre + + + Zimbabwaanse dollar + Zimbabwaanse dollar + Zimbabwaanse dollar + + + Zimbabwaanse dollar (2009) + Zimbabwaanse dollar (2009) + Zimbabwaanse dollar (2009) + + + Zimbabwaanse dollar (2008) + Zimbabwaanse dollar (2008) + Zimbabwaanse dollar (2008) + + + + {0}+ + {0}-{1} + + + + + + {0} per {1} + + + {0} G-kracht + {0} G-krachten + + + {0} boogminuut + {0} boogminuten + + + {0} boogseconde + {0} boogseconden + + + {0} booggraad + {0} booggraden + + + {0} acre + {0} acres + + + {0} hectare + {0} hectare + + + {0} vierkante voet + {0} vierkante voet + + + {0} vierkante kilometer + {0} vierkante kilometer + + + {0} vierkante meter + {0} vierkante meter + + + {0} vierkante mijl + {0} vierkante mijl + + + {0} dag + {0} dagen + + + {0} uur + {0} uur + + + {0} milliseconde + {0} milliseconden + + + {0} minuut + {0} minuten + + + {0} maand + {0} maanden + + + {0} seconde + {0} seconden + + + {0} week + {0} weken + + + {0} jaar + {0} jaar + + + {0} centimeter + {0} centimeter + + + {0} voet + {0} voet + + + {0} inch + {0} inches + + + {0} kilometer + {0} kilometer + + + {0} lichtjaar + {0} lichtjaar + + + {0} meter + {0} meter + + + {0} mijl + {0} mijl + + + {0} millimeter + {0} millimeter + + + {0} picometer + {0} picometer + + + {0} yard + {0} yards + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} paardenkracht + {0} paardenkrachten + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hectopascal + {0} hectopascal + + + {0} inHg + {0} inHg + + + {0} millibar + {0} millibar + + + {0} kilometer per uur + {0} kilometer per uur + + + {0} meter per seconde + {0} meter per seconde + + + {0} mijl per uur + {0} mijl per uur + + + {0} graad Celsius + {0} graden Celsius + + + {0} graad Fahrenheit + {0} graden Fahrenheit + + + {0} kubieke kilometer + {0} kubieke kilometer + + + {0} kubieke mijl + {0} kubieke mijl + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dag + {0} dagen + + + {0} uur + {0} uur + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mnd + {0} mnd + + + {0} sec. + {0} sec. + + + {0} wk + {0} wkn + + + {0} jr + {0} jr + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} in + {0} in + + + {0} km + {0} km + + + {0} lj + {0} lj + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} pk + {0} pk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} u + {0} u + + + {0} ms + {0} ms + + + {0} m + {0} m + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} w + {0} w + + + {0} jr + {0} jr + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0}" + {0}" + + + {0} km + {0} km + + + {0} lj + {0} lj + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} pk + {0} pk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} en {1} + {0} en {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} en {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ja:j + nee:n + + + + diff --git a/library/Zend/Locale/Data/nl_AW.xml b/library/Zend/Locale/Data/nl_AW.xml new file mode 100755 index 000000000..52e7301f0 --- /dev/null +++ b/library/Zend/Locale/Data/nl_AW.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Afl. + + + + diff --git a/library/Zend/Locale/Data/nl_BE.xml b/library/Zend/Locale/Data/nl_BE.xml new file mode 100755 index 000000000..a4f09fc4c --- /dev/null +++ b/library/Zend/Locale/Data/nl_BE.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + Lets + Occitaans; Provençaals + Servo-Kroatisch + + + Centraal-Amerika + Het Eiland Man + Malediven + Salomoneilanden + + + Traditioneel + + + + + + + + + d-MMM-y G + + + + + d/MM/yy GGGGG + + + + + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MM/y - MM/y G + MM/y - MM/y G + + + d/MM/y - d/MM/y G + d/MM/y - d/MM/y G + d/MM/y - d/MM/y G + + + E d/MM/y - E d/MM/y G + E d/MM/y - E d/MM/y G + E d/MM/y - E d/MM/y G + + + + + + + + + d-MMM-y + + + + + d/MM/yy + + + + + + + d/MM - d/MM + d/MM - d/MM + + + E d/MM - E d/MM + E d/MM - E d/MM + + + MM/y - MM/y + MM/y - MM/y + + + d/MM/y - d/MM/y + d/MM/y - d/MM/y + d/MM/y - d/MM/y + + + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + E d/MM/y - E d/MM/y + + + + + + + + + + + #,##0.00 ¤ + + + + + + diff --git a/library/Zend/Locale/Data/nl_BQ.xml b/library/Zend/Locale/Data/nl_BQ.xml new file mode 100755 index 000000000..e4175de53 --- /dev/null +++ b/library/Zend/Locale/Data/nl_BQ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/nl_CW.xml b/library/Zend/Locale/Data/nl_CW.xml new file mode 100755 index 000000000..b25cfe16d --- /dev/null +++ b/library/Zend/Locale/Data/nl_CW.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + NAf. + + + + diff --git a/library/Zend/Locale/Data/nl_NL.xml b/library/Zend/Locale/Data/nl_NL.xml new file mode 100755 index 000000000..ac9207986 --- /dev/null +++ b/library/Zend/Locale/Data/nl_NL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nl_SR.xml b/library/Zend/Locale/Data/nl_SR.xml new file mode 100755 index 000000000..47425671c --- /dev/null +++ b/library/Zend/Locale/Data/nl_SR.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + $ + + + + diff --git a/library/Zend/Locale/Data/nl_SX.xml b/library/Zend/Locale/Data/nl_SX.xml new file mode 100755 index 000000000..ea7606a73 --- /dev/null +++ b/library/Zend/Locale/Data/nl_SX.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + NAf. + + + + diff --git a/library/Zend/Locale/Data/nmg.xml b/library/Zend/Locale/Data/nmg.xml new file mode 100755 index 000000000..b71d72987 --- /dev/null +++ b/library/Zend/Locale/Data/nmg.xml @@ -0,0 +1,764 @@ + + + + + + + + + + + + Kiɛl akan + Kiɛl amaria + Kiɛl b'árabe + Kiɛl belarussie + Kiɛl bulgaria + Kiɛl bengalia + Kiɛl bó tchɛk + Jáman + Kiɛl bó grɛk + Ngɛ̄lɛ̄n + Paŋá + Kiɛl pɛrsia + Fala + Kiɛl máwúsá + Kiɛl b'indien + Kiɛl b'ɔ́ngrois + Kiɛl indonesie + Kiɛl ikbo + Kiɛl italia + Kiɛl bó japonɛ̌ + Kiɛl bó javanɛ̌ + Kiɛl bó mɛr + Kiɛl koré + Kiɛl Malɛ̌siā + Kiɛl birmania + Kiɛl nepal + Kiɛl bóllandais + Kwasio + Kiɛl pɛndjabi + Kiɛl pɔlɔŋe + Kiɛl bó pɔ̄rtugɛ̂ + Kiɛl bó rumɛ̂n + Kiɛl russia + Kiɛl rwandā + Kiɛl somaliā + Kiɛl bó suedois + Kiɛl tamul + Kiɛl thaï + Kiɛl bó turk + Kiɛl b'ukrɛ̄nien + Kiɛl úrdu + Kiɛl viɛtnam + Yorúbâ + Kiɛl bó chinois + Zulu + + + Andɔ́ra + Minlambɔ́ Nsaŋ́nsa mí Arabia + Afganistaŋ + Antíga bá Barbúda + Anguílla + Albania + Arménia + B'Antilles bó Nedɛrland + Angola + Argentína + Samoa m ́Amɛ́rka + Ötrish + Östraliá + Árúba + Azerbaïjaŋ + Bosnia na Ɛrzegovina + Barbado + Bɛŋgladɛsh + Bɛlgik + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Bɛrmuda + Brunɛi + Bolivia + Brésil + Bahamas + Butaŋ + Botswana + Belarus + Bɛliz + Kanada + Kongó Zaïre + Sentrafríka + Kongo + Switzɛrland + Kote d´Ivoire + Maŋ́ má Kook + Tshili + Kamerun + Shine + Kɔlɔ́mbia + Kosta Ríka + Kuba + Maŋ́ má Kapvɛr + Sipria + Nlambɔ́ bó tschɛk + Jaman + Jibúti + Danemark + Dominíka + Nlambɔ́ Dominíka + Algeria + Ekuateur + Ɛstonia + Ägyptɛn + Erytrea + Paŋá + Ethiopiá + Finlande + Fijiá + Maŋ má Falkland + Mikronesia + Fala + Gabɔŋ + Nlambɔ́ Ngɛlɛn + Grenada + Jɔrgia + Guyane Fala + Gána + Gilbratar + Greenland + Gambia + Guine + Guadeloup + Guine Ekuatorial + Grɛce + Guatemala + Guam + Guine Bisso + Guyana + Ɔndúras + Kroasia + Haïti + Ɔngría + Indonesia + Irland + Äsrɛl + India + Nlambɔ́ ngɛlɛn ma yí maŋ ntsiɛh + Irak + Iran + Island + Italia + Jamaika + Jɔrdania + Japɔn + Kɛnya + Kyrgystaŋ + Kambodia + Kiribati + Kɔmɔr + Saint Kitts na Nevis + Koré yí bvuɔ + Koré yí sí + Kowɛit + Maŋ́ má kumbi + Kazakstaŋ + Laos + Libaŋ + Saint Lucia + Lishenstein + Sri Lanka + Liberia + Lesoto + Lituaniá + Luxembourg + Latvia + Libya + Marɔk + Monako + Mɔldavia + Madagaskar + Maŋ́ má Marshall + Macedonia + Mali + Myanmar + Mɔngolia + Maŋ́ Mariá + Martinika + Moritania + Mɔnserrat + Malta + Morisse + Maldivia + Malawi + Mɛxik + Malaysia + Mozambik + Namibia + Kaledoni nwanah + Niger + Maŋ́ má Nɔrfɔrk + Nigeria + Nikaragua + Nedɛrland + Nɔrvɛg + Nepal + Noru + Niuɛ + Zeland nwanah + Oman + Panama + Peru + Polynesia Fala + Guine Papuasi + Filipin + Pakistan + Pɔlɔŋ + Saint Peter ba Mikelɔn + Pitkairn + Puɛrto Riko + Palɛstin + Pɔrtugal + Palo + Paraguay + Katar + Réuniɔn + Roumania + Russi + Rwanda + Saudi Arabia + Maŋ́ má Salomɔn + Seychɛlle + Sudaŋ + Suɛd + Singapur + Saint Lina + Slovenia + Slovakia + Sierra Leɔn + San Marino + Senegal + Somália + Surinam + Sao Tomé ba Prinship + Salvadɔr + Syria + Swaziland + Maŋ́ má Turk na Kaiko + Tshad + Togo + Taïland + Tajikistaŋ + Tokelo + Timɔr tsindikēh + Turkmɛnistaŋ + Tunisiá + Tɔnga + Turki + Trinidad ba Tobágó + Tuvalú + Taïwan + Tanzánía + Ukrɛn + Uganda + Amɛŕka + Uruguay + Usbǝkistaŋ + Vatikaŋ + Saint Vincent ba Grenadines + Vǝnǝzuela + Minsilɛ́ mímaŋ mí ngɛ̄lɛ̄n + Minsilɛ mí maŋ́ m´Amɛrka + Viɛtnam + Vanuatu + Wallis ba Futuna + Samoa + Yǝmɛn + Mayɔt + Afríka yí sí + Zambia + Zimbabwǝ + + + + [a á â ǎ ä ā b ɓ c d e é ê ě ē ǝ {ǝ\u0301} {ǝ\u0302} {ǝ\u030C} {ǝ\u0304} ɛ {ɛ\u0301} {ɛ\u0302} {ɛ\u030C} {ɛ\u0304} f g h i í î ǐ ï ī j k l m n ń ŋ o ó ô ǒ ö ō ɔ {ɔ\u0301} {ɔ\u0302} {ɔ\u030C} {ɔ\u0304} p r ŕ s t u ú û ǔ ū v w y] + [q x z] + [A B Ɓ C D E Ǝ Ɛ F G H I J K L M N Ŋ O Ɔ P R S T U V W Y] + + + + + « + » + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + ng1 + ng2 + ng3 + ng4 + ng5 + ng6 + ng7 + ng8 + ng9 + ng10 + ng11 + kris + + + ngwɛn matáhra + ngwɛn ńmba + ngwɛn ńlal + ngwɛn ńna + ngwɛn ńtan + ngwɛn ńtuó + ngwɛn hɛmbuɛrí + ngwɛn lɔmbi + ngwɛn rɛbvuâ + ngwɛn wum + ngwɛn wum navǔr + krísimin + + + + + + + sɔ́n + mɔ́n + smb + sml + smn + mbs + sas + + + sɔ́ndɔ + mɔ́ndɔ + sɔ́ndɔ mafú mába + sɔ́ndɔ mafú málal + sɔ́ndɔ mafú mána + mabágá má sukul + sásadi + + + + + s + m + s + s + s + m + s + + + + + + + T1 + T2 + T3 + T4 + + + Tindɛ nvúr + Tindɛ ńmba + Tindɛ ńlal + Tindɛ ńna + + + + + + + maná + kugú + + + + + + Bó Lahlɛ̄ + Pfiɛ Burī + + + BL + PB + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Pīl/Lahlɛ̄ + + + Mbvu + + + Ngwɛn + + + Sɔ́ndɔ + + + Duö + Nakugú + Dɔl + Namáná + + + Máná, Muó, Kugú, Bvul + + + Wulā + + + Mpálâ + + + Nyiɛl + + + Nkɛ̌l wulā + + + + + + , +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + + + + Mɔn B ´Arabe + + + Mɔn Angola + + + Dɔ́llɔ Ɔstralia + + + Mɔn Bahrein + + + Fraŋ Burundi + + + Mɔn Botswana + + + Dɔ́llɔ Kanada + + + Fraŋ bó Kongolɛ̌ + + + Fraŋ Suisse + + + Mɔn bó Chinois + + + Mɔn Kapvɛrt + + + Fraŋ Jibuti + + + Mɔn Algeria + + + Mɔn Ägyptɛn + + + Mɔn Erytré + + + Mɔn Ethiopia + + + Euro + + + Mɔn Ngɛ̄lɛ̄n + + + Mɔn Gana + + + Mɔn Gambia + + + Fraŋ Guiné + + + Mɔn India + + + Mɔn Japɔn + + + Mɔn Kɛnya + + + Fraŋ bó Kɔmɔr + + + Dɔ́llɔ Liberia + + + Mɔn Lesoto + + + Mɔn Libya + + + Mɔn Marɔk + + + Mɔn Madagaskar + + + Mɔn Moritania + + + Mɔn Moriss + + + Mɔn Malawi + + + Mɔn Mozambik + + + Dɔ́llɔ Namibia + + + Naïra Nigeria + + + Fraŋ Rwanda + + + Mɔn Saudi Arabia + + + Mɔn Seychɛlle + + + Mɔn Sudan + + + Mɔn Sudan (1957–1998) + + + Mɔn má Saint Lina + + + Mɔn Leɔne + + + Mɔn Somalía + + + Mɔn Sao tomé na prinship + + + Mɔn Ligangeni + + + Mɔn Tunisia + + + Mɔn Tanzania + + + Mɔn Uganda + + + Dɔ́llɔ Amɛŕka + + + Fraŋ CFA BEAC + + + Fraŋ CFA BCEAO + + + Mɔn Afrik yí sí + + + Mɔn Zambia (1968–2012) + + + Mɔn Zambia + + + Dɔ́llɔ Zimbabwǝ (1980–2008) + + + + + + Yaŋ:Y + Nzúl:N + + + + diff --git a/library/Zend/Locale/Data/nmg_CM.xml b/library/Zend/Locale/Data/nmg_CM.xml new file mode 100755 index 000000000..d99be4860 --- /dev/null +++ b/library/Zend/Locale/Data/nmg_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nn.xml b/library/Zend/Locale/Data/nn.xml new file mode 100755 index 000000000..a17516780 --- /dev/null +++ b/library/Zend/Locale/Data/nn.xml @@ -0,0 +1,3812 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abkhasisk + achinesisk + acoli + adangme + adyghe + avestisk + afrikaans + afrihili + aghem + ainu + akan + akkadisk + aleutisk + sør-altai + amharisk + aragonsk + gammalengelsk + angika + arabisk + arameisk + araukansk + arapaho + arawak + assamisk + asu (Tanzania) + asturisk + avarisk + awadhi + aymara + aserbajdsjansk + basjkirsk + baluchi + balinesisk + basa + bamun + kviterussisk + beja + bemba + bena (Tanzania) + bulgarsk + bhojpuri + bislama + bikol + bini + siksika + bambara + bengali + tibetansk + bretonsk + braj + bodo + bosnisk + bakossi + burjatisk + buginesisk + blin + katalansk + caddo + karibisk + atsam + tsjetsjensk + cebuansk + chamorro + chibcha + chagatai + chuukesisk + mari + chinook + choctaw + chipewiansk + cherokee + cheyenne + korsikansk + koptisk + cree + krimtatarisk + tsjekkisk + kasjubisk + kyrkjeslavisk + tsjuvansk + walisisk + dansk + dakota + dargwa + tysk + austerriksk tysk + sveitsisk høgtysk + delaware + slavej + dogrib + dinka + zarma + dogri + lågsorbisk + duala + mellumnederlandsk + divehi + jola-fonyi + dyula + dzongkha + kiembu + ewe + efik + gammalegyptisk + ekajuk + gresk + elamittisk + engelsk + australisk engelsk + kanadisk engelsk + britisk engelsk + engelsk (amerikansk) + mellomengelsk + esperanto + spansk + latinamerikansk spansk + iberisk spansk + estisk + baskisk + ewondo + persisk + fang + fanti + fulani + finsk + filippinsk + fijiansk + færøysk + fon + fransk + kanadisk fransk + sveitsisk fransk + mellomfransk + gammalfransk + nordfrisisk + austfrisisk + friuliansk + vestfrisisk + irsk + ga + gayo + gbaya + skotsk-gælisk + ges + kiribatisk + galicisk + mellomhøgtysk + guarani + gammalhøgtysk + gondi + gorontalo + gotisk + grebo + gammalgresk + sveitsertysk + gujarati + manx + gwichin + hausa + haida + hawaiisk + hebraisk + hindi + hiligaynon + hettittisk + hmong + hiri motu + kroatisk + høgsorbisk + haitisk + ungarsk + hupa + armensk + herero + interlingua + iban + ibibio + indonesisk + interlingue + ibo + sichuan-yi + inupiak + iloko + ingusjisk + ido + islandsk + italiensk + inuktitut + japansk + lojban + jødepersisk + jødearabisk + javanesisk + georgisk + karakalpakisk + kabylsk + kachin + jju + kamba + kawi + kabardisk + tyap + kapverdisk + koro + kikongo + khasi + khotanesisk + kikuyu + kuanyama + kasakhisk + kako + kalaallisut; grønlandsk + khmer + kimbundu + kannada + koreansk + konkani + kosraeansk + kpelle + kanuri + karachay-balkar + karelsk + kurukh + kasjmiri + bafia + kurdisk + kumyk + kutenai + komi + kornisk + kirgisisk + latin + ladinsk + lahnda + lamba + luxemburgsk + lezghian + ganda + limburgisk + lingala + laotisk + mongo + lozi + litauisk + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + olulujia + latvisk + maduresisk + magahi + maithili + makasar + mandingo + masai + moksha + mandar + mende + madagassisk + mellomirsk + marshallesisk + maori + micmac + minangkabau + makedonsk + malayalam + mongolsk + mandsju + manipuri + mohawk + mossi + marathi + malayisk + maltesisk + mundang + fleire språk + creek + mirandesisk + marwari + burmesisk + erzya + nauru + napolitansk + bokmål + nord-ndebele + lågtysk + nepalsk + newari + ndonga + nias + niueansk + nederlandsk + flamsk + kwasio + nynorsk + norsk + nogai + gammalnorsk + n'ko + sør-ndebele + nordsotho + nuer + navajo + klassisk newarisk + nyanja + nyamwezi + nyankole + nyoro + nzima + oksitansk + ojibwa + oromo + oriya + ossetisk + osage + ottomansk tyrkisk + panjabi + pangasinan + pahlavi + pampanga + papiamento + palauisk + gammalpersisk + fønikisk + pali + polsk + ponapisk + gammalprovençalsk + pashto + portugisisk + brasiliansk portugisisk + europeisk portugisisk + quechua + rajasthani + rapanui + rarotongansk + retoromansk + rundi + rumensk + moldavisk + rombo + romani + rot + russisk + aromansk + kinjarwanda + rwa + sanskrit + sandawe + jakutsk + samaritansk arameisk + sasak + santali + sangu + sardinsk + siciliansk + skotsk + sindhi + nordsamisk + selkupisk + sango + gammalirsk + serbokroatisk + shan + singalesisk + sidamo + slovakisk + slovensk + samoansk + sørsamisk + lulesamisk + enaresamisk + skoltesamisk + shona + soninke + somali + sogdisk + albansk + serbisk + sranan tongo + serer + swati + sørsotho + sundanesisk + sukuma + susu + sumerisk + svensk + swahili + shimaore + klassisk syrisk + syrisk + tamil + telugu + temne + tereno + tetum + tatsjikisk + thai + tigrinja + tigré + tivi + turkmensk + tokelau + tagalog + klingon + tlingit + tamasjek + tswana + tonga (Tonga-øyane) + tonga (Nyasa) + tok pisin + tyrkisk + tsonga + tsimshian + tatarisk + tumbuka + tuvalu + twi + tasawaq + tahitisk + tuvinisk + udmurt + uigurisk + ugaritisk + ukrainsk + umbundu + ukjent språk + urdu + usbekisk + vai + venda + vietnamesisk + volapyk + votisk + vallonsk + walamo + waray + washo + wolof + kalmyk + xhosa + yao + yapesisk + yangben + jiddisk + joruba + kantonesisk + zhuang + zapotec + blissymbol + zenaga + kinesisk + forenkla kinesisk + tradisjonell kinesisk + zulu + zuni + utan språkleg innhald + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + verda + Afrika + Nord-Amerika + Sør-Amerika + Oseania + Vest-Afrika + Sentral-Amerika + Aust-Afrika + Nord-Afrika + Sentral-Afrika + Sørlege Afrika + Amerika + nordlege Amerika + Karibia + Aust-Asia + Sør-Asia + Søraust-Asia + Sør-Europa + Australia og New Zealand + Melanesia + Mikronesia + Polynesia + Asia + Sentral-Asia + Vest-Asia + Europa + Aust-Europa + Nord-Europa + Vest-Europa + Latin-Amerika + Ascension + Andorra + Dei sameinte arabiske emirata + Afghanistan + Antigua og Barbuda + Anguilla + Albania + Armenia + Dei nederlandske Antillane + Angola + Antarktis + Argentina + Amerikansk Samoa + Austerrike + Australia + Aruba + Åland + Aserbajdsjan + Bosnia og Hercegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei Darussalam + Bolivia + Karibisk Nederland + Brasil + Bahamas + Bhutan + Bouvetøya + Botswana + Kviterussland + Belize + Canada + Kokosøyane + Kongo-Kinshasa + Den sentralafrikanske republikken + Kongo-Brazzaville + Sveits + Elfenbeinskysten + Cookøyane + Chile + Kamerun + Kina + Colombia + Clippertonøya + Costa Rica + Cuba + Kapp Verde + Curaçao + Christmasøya + Kypros + Tsjekkia + Tyskland + Diego Garcia + Djibouti + Danmark + Dominica + Den dominikanske republikken + Algerie + Ceuta og Melilla + Ecuador + Estland + Egypt + Vest-Sahara + Eritrea + Spania + Etiopia + Den europeiske unionen + Finland + Fiji + Falklandsøyane + Mikronesiaføderasjonen + Færøyane + Frankrike + Gabon + Storbritannia + Storbritannia + Grenada + Georgia + Fransk Guyana + Guernsey + Ghana + Gibraltar + Grønland + Gambia + Guinea + Guadeloupe + Ekvatorial-Guinea + Hellas + Sør-Georgia og Sør-Sandwich-øyane + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong S.A.R. Kina + Hongkong + Heard- og McDonaldsøyane + Honduras + Kroatia + Haiti + Ungarn + Kanariøyane + Indonesia + Irland + Israel + Man + India + Britiske område i Det indiske hav + Irak + Iran + Island + Italia + Jersey + Jamaica + Jordan + Japan + Kenya + Kirgisistan + Kambodsja + Kiribati + Komorene + St. Christopher og Nevis + Nord-Korea + Sør-Korea + Kuwait + Caymanøyane + Kasakhstan + Laos + Libanon + St. Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litauen + Luxembourg + Latvia + Libya + Marokko + Monaco + Moldova + Montenegro + Saint Martin + Madagaskar + Marshalløyane + Makedonia + Mali + Myanmar + Mongolia + Macao S.A.R. Kina + Macao + Nord-Marianane + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldivane + Malawi + Mexico + Malaysia + Mosambik + Namibia + Ny-Caledonia + Niger + Norfolkøyane + Nigeria + Nicaragua + Nederland + Noreg + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + Fransk Polynesia + Papua Ny-Guinea + Filippinane + Pakistan + Polen + St. Pierre og Miquelon + Pitcairn + Puerto Rico + Palestinsk territorium + Palestina + Portugal + Palau + Paraguay + Qatar + Ytre Oseania + Réunion + Romania + Serbia + Russland + Rwanda + Saudi Arabia + Salomonøyane + Seychellane + Sudan + Sverige + Singapore + Saint Helena + Slovenia + Svalbard og Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sør-Sudan + São Tomé og Príncipe + El Salvador + Nederlandsk St. Martin + Syria + Swaziland + Tristan da Cunha + Turks- og Caicosøyane + Tchad + Franske sørområde + Togo + Thailand + Tadsjikistan + Tokelau + Aust-Timor + Turkmenistan + Tunisia + Tonga + Tyrkia + Trinidad og Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + USAs ytre småøyar + USA + USA + Uruguay + Usbekistan + Vatikanstaten + St. Vincent og Grenadinane + Venezuela + Dei britiske jomfruøyane + Dei amerikanske jomfruøyane + Vietnam + Vanuatu + Wallis og Futuna + Samoa + Kosovo + Yemen + Mayotte + Sør-Afrika + Zambia + Zimbabwe + ukjent område + + + tradisjonell tysk ortografi + standardisert resisk ortografi + tysk ortografi frå 1996 + nyare mellomfransk til 1606 + eldre nyfransk + austarmensk + vestarmensk + samla tyrkisk-latinsk alfabet + san giorgio- og biladialekt + boontling + det internasjonale fonetiske alfabetet (IPA) + det uralske fonetiske alfabetet UPA + resian, lipovazdialekt + monotonisk rettskriving + natisonedialekt + gniva- og njivadialekt + oseacco- og osojanedialekt + pinyin + polytonisk rettskriving + dataspråk + revidert rettskriving + resisk dialekt + saaho-dialekt + skotsk standard engelsk + scouse-dialekt + stolvizza- og solbicadialekt + taraskievica-ortografi + valensisk dialekt + wade-giles + + + kalender + kollasjon + valuta + tal + + + hindu-arabiske siffer (vestlige) + hindu-arabiske siffer (østlige) + armenske numeraler + armenske numeraler i små bogstaver + bengalske siffer + tradisjonell kinesisk sortering + buddhistisk kalender + kinesisk kalender + devanagariske siffer + grunnleggjande Unicode-sorteringsrekkjefølgje + sorteringsrekkefølge for flerspråklige europeiske dokumenter + etiopiske numeraler + etiopisk kalender + etiopisk amete-alem-kalender + vesterlandske siffer i fuld bredde + forenkla kinesisk sortering + georgiske numeraler + gregoriansk kalender + græske numeraler + græske numeraler i små bogstaver + gujaratiske siffer + gurmukhiske siffer + kinesiskt stavede siffer + forenklet stavede kinesiske numeraler + forenklet stavede kinesiske financielle numeraler + traditionelt stavede kinesiske numeraler + traditionelt stavede kinesiske financielle numeraler + hebæiske numeraler + hebraisk kalender + indisk nasjonalkalender + islamsk kalender + islamsk sivil kalender + japansk kalender + javanesiske siffer + japanskt stavede numeraler + japanskt stavede financielle numeraler + kambodiske siffer + kannadiske siffer + laotiske siffer + vesterlandske siffer + malayalamiske siffer + burmeske siffer + oryiske siffer + persisk kalender + telefonkatalogsortering + pinyin-sortering + kalender for Republikken Kina + romernumeraler + romernumeraler i små bogstaver + søksorteringsrekkjefølgje etter CLDR + streksortering + traditionelle tamilske numeraler + tamilske siffer + telugiske siffer + thailandske siffer + tibetanske siffer + tradisjonell sortering + + + metrisk + engelsk + amerikansk + + + Språk: {0} + Skrift: {0} + Område: {0} + + + + [a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å] + [á ǎ č ç đ è ê ń ñ ŋ š ŧ ü ž ä ö] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Æ Ø Å] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + + + « + » + + + + + + + + + + EEEE d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + d.M y G + + + + + + d. + E d. + y G + MMM y G + d. MMM y G + E d. MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.M. + E d.M + d.M. + LLL + d. MMM + E d. MMM + mm:ss + y G + y G + M y G + d.M.y G + E d.M.y G + MM.y G + MMM y G + d. MMM y G + E d. MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + dd.MM.–dd.MM. + dd.MM.–dd.MM. + + + E dd.MM.–E dd.MM. + E dd.MM.–E dd.MM. + + + MMM–MMM + + + d.–d. MMM + d. MMM–d. MMM + + + E d.–E d. MMM + E d. MMM–E d. MMM + + + y–y G + + + MM.y–MM.y G + MM.y–MM.y G + + + dd.MM.y–dd.MM.y G + dd.MM.y–dd.MM.y G + dd.MM.y–dd.MM.y G + + + E dd.MM.y–E dd.MM.y G + E dd.MM.y–E dd.MM.y G + E dd.MM.y–E dd.MM.y G + + + MMM–MMM y G + MMM y–MMM y G + + + d.–d. MMM y G + d. MMM–d. MMM y G + d. MMM y–d. MMM y G + + + E d.–E d. MMM y G + E d. MMM–E d. MMM y G + E d. MMM y–E d. MMM y G + + + MMMM–MMMM y G + MMMM y–MMMM y G + + + + + + + + + jan. + feb. + mars + apr. + mai + juni + juli + aug. + sep. + okt. + nov. + des. + + + januar + februar + mars + april + mai + juni + juli + august + september + oktober + november + desember + + + + + jan + feb + mar + apr + mai + jun + jul + aug + sep + okt + nov + des + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + sø. + må. + ty. + on. + to. + fr. + la. + + + søndag + måndag + tysdag + onsdag + torsdag + fredag + laurdag + + + + + søn + mån + tys + ons + tor + fre + lau + + + S + M + T + O + T + F + L + + + + + + + K1 + K2 + K3 + K4 + + + 1. kvartal + 2. kvartal + 3. kvartal + 4. kvartal + + + + + + + f.m. + e.m. + + + f.m. + e.m. + + + formiddag + ettermiddag + + + + + + f.Kr. + før vesterlandsk tidsrekning + e.Kr. + vesterlandsk tidsrekning + + + f.Kr. + f.v.t. + e.Kr. + v.t. + + + f.Kr. + fvt + e.Kr. + vt + + + + + + EEEE d. MMMM y + + + + + d. MMMM y + + + + + d. MMM y + + + + + dd.MM.yy + + + + + + + 'kl'. HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} 'kl.' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d. + E d. + y G + MMM y G + d. MMM y G + E d. MMM y G + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + d.M. + E d.M + d.M. + d. MMM + E d. MMM + d. MMMM + mm:ss + M y + d.M.y + E d.M.y + MM.y + MMM y + d. MMM y + E d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} – {1} + + d.–d. + + + h–h a + + + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h–h a v + + + M.–M. + + + dd.MM–dd.MM + dd.MM–dd.MM + + + E dd.MM.–E dd.MM. + E dd.MM.–E dd.MM. + + + MMM–MMM + + + d.–d. MMM + d. MMM–d. MMM + + + E d.–E d. MMM + E d. MMM–E d. MMM + + + y–y + + + MM.y–MM.y + MM.y–MM.y + + + dd.MM.y–dd.MM.y + dd.MM.y–dd.MM.y + dd.MM.y–dd.MM.y + + + E dd.MM.y–E dd.MM.y + E dd.MM.y–E dd.MM.y + E dd.MM.y–E dd.MM.y + + + MMM–MMM y + MMM y–MMM y + + + d.–d. MMM y + d. MMM–d. MMM y + d. MMM y–d. MMM y + + + E d.–E d. MMM y + E d. MMM–E d. MMM y + E d. MMM y–E d. MMM + + + MMMM–MMMM y + MMMM y–MMMM y + + + + + + + + æra + + + år + i fjor + dette år + neste år + + om {0} år + om {0} år + + + for {0} år siden + for {0} år siden + + + + månad + forrige månad + denne månad + neste månad + + om {0} måned + om {0} måneder + + + for {0} måned siden + for {0} måneder siden + + + + veke + forrige veke + denne veke + neste veke + + om {0} uke + om {0} uker + + + for {0} uke siden + for {0} uker siden + + + + dag + i forgårs + i går + i dag + i morgon + i overmorgon + + om {0} døgn + om {0} døgn + + + for {0} døgn siden + for {0} døgn siden + + + + vekedag + + + søndag forrige veke + søndag denne veke + søndag neste veke + + + måndag forrige veke + måndag denne veke + måndag neste veke + + + tysdag forrige veke + tysdag denne veke + tysdag neste veke + + + onsdag forrige veke + onsdag denne veke + onsdage neste veke + + + torsdag forrige veke + torsdag denne veke + torsdag neste veke + + + fredag forrige veke + fredag denne veke + fredag neste veke + + + laurdag forrige veke + laurdag denne veke + laurdag neste veke + + + f.m./e.m.-val + + + time + + om {0} time + om {0} timer + + + for {0} time siden + for {0} timer siden + + + + minutt + + om {0} minutt + om {0} minutter + + + for {0} minutt siden + for {0} minutter siden + + + + sekund + + om {0} sekund + om {0} sekunder + + + for {0} sekund siden + for {0} sekunder siden + + + + sone + + + + +HH:mm;-HH:mm + GMT{0} + {1} ({0}) + + ukjend + + + Belém + + + Påskeøya + + + Kapp Verde + + + Curaçao + + + København + + + Kanariøyane + + + Færøyane + + + Godthåb + + + Hongkong + + + Luxemburg + + + Ulan Bator + + + Maldivane + + + Mexico by + + + Cancún + + + Azorane + + + Lisboa + + + Réunion + + + Moskva + + + São Tomé + + + Center, Nord-Dakota + + + Tasjkent + + + Ho Chi Minh-byen + + + + sentralafrikansk tid + + + + + austafrikansk tid + + + + + sørafrikansk tid + + + + + vestafrikansk tid + vestafrikansk standardtid + vestafrikansk sommartid + + + + + sentralaustralsk tid + sentralaustralsk standardtid + sentralaustralsk sommartid + + + + + vest-sentralaustralsk tid + vest-sentralaustralsk standardtid + vest-sentralaustralsk sommartid + + + + + austaustralsk tid + austaustralsk standardtid + austaustralsk sommartid + + + + + vestaustralsk tid + vestaustralsk standardtid + vestaustralsk sommartid + + + + + sentraleuropeisk tid + sentraleuropeisk standardtid + sentraleuropeisk sommartid + + + CET + CET + CEST + + + + + austeuropeisk tid + austeuropeisk standardtid + austeuropeisk sommartid + + + EET + EET + EEST + + + + + vesteuropeisk tid + vesteuropeisk standardtid + vesteuropeisk sommartid + + + WET + WET + WEST + + + + + greenwich middeltid + + + GMT + + + + + + + , +   + ; + % + + + + E + + + NaN + + + + + #,##0.### + + + + + 0 tusen + 0 tusen + 00 tusen + 00 tusen + 000 tusen + 000 tusen + 0 million + 0 millioner + 00 million + 00 millioner + 000 million + 000 millioner + 0 milliard + 0 milliarder + 00 milliard + 00 milliarder + 000 milliard + 000 milliarder + 0 billion + 0 billioner + 00 billion + 00 billioner + 000 billion + 000 billioner + + + + + 0 tn + 0 tn + 00 tn + 00 tn + 000 tn + 000 tn + 0 mn + 0 mn + 00 mn + 00 mn + 000 mn + 000 mn + 0 md + 0 md + 00 md + 00 md + 000 md + 000 md + 0 bn + 0 bn + 00 bn + 00 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + andorransk peseta + + + UAE dirham + + + afghani (1927–2002) + + + afghani + + + albansk lek + + + armensk dram + + + nederlansk antillegylden + + + angolsk kwanza + + + angolsk kwanza (1977–1990) + + + angolsk ny kwanza (1990–2000) + + + angolsk kwanza reajustado (1995–1999) + + + argentisk austral + + + argentinsk peso (1983–1985) + + + argentinsk peso + + + austerriksk schilling + + + australsk dollar + + + arubisk gylden + + + aserbaijansk manat + + + aserbajdsjansk manat + aserbajdsjansk manat + aserbajdsjanske manat + + + bosnisk-hercegovinsk dinar + + + bosnisk-hercegovinsk mark (konvertibel) + + + barbadisk dollar + + + bangladeshisk taka + + + belgisk franc (konvertibel) + + + belgisk franc + + + belgisk franc (finansiell) + + + bulgarsk hard lev + + + bulgarsk ny lev + + + bahrainsk dinar + + + burundisk franc + + + bermudisk dollar + + + bruneisk dollar + + + boliviano + + + bolivisk peso + + + bolivisk mvdol + + + brasiliansk cruzeiro novo (1967–1986) + + + brasiliansk cruzado + + + brasiliansk cruzeiro (1990–1993) + + + brasiliansk real + + + brasiliansk cruzado novo + + + brasiliansk cruzeiro + + + bahamisk dollar + + + bhutansk ngultrum + + + burmesisk kyat + + + botswansk pula + botswansk pula + botswanske pula + + + kviterussisk ny rubel (1994–1999) + kviterussisk ny rubel (BYB) + kviterussiske nye rublar (BYB) + + + kviterussisk rubel + kviterussisk rubel + kviterussiske rublar + + + belizisk dollar + belizisk dollar + beliziske dollar + + + kanadisk dollar + kanadisk dollar + kanadiske dollar + + + kongolesisk franc + kongolesisk franc + kongolesiske franc + + + WIR euro + WIR euro + WIR euro + + + sveitsisk franc + sveitsisk franc + sveitsiske franc + + + WIR franc + WIR franc + WIR franc + + + chilensk unidades de fomento + chilensk unidades de fomento + chilenske unidades de fomento + + + chilensk peso + chilensk peso + chilenske peso + + + kinesisk yuan renminbi + + + colombiansk peso + colombiansk peso + colombianske peso + + + unidad de valor real + unidad de valor real + unidad de valor real + + + costaricansk colon + costaricansk colon + costaricanske colon + + + gammal serbisk dinar + gammal serbisk dinar + gamle serbiske dinarar + + + tsjekkoslovakisk koruna (hard) + tsjekkoslovakisk koruna (hard) + tsjekkoslovakiske koruna (hard) + + + kubansk peso (konvertibel) + kubanska pesos (konvertibla) + + + kubansk peso + kubansk peso + kubanske peso + + + kappverdisk escudo + + + kypriotisk pund + kypriotisk pund + kypriotiske pund + + + tsjekkisk koruna + tsjekkisk koruna + tsjekkiske koruna + + + austtysk mark + austtysk mark + austtyske mark + + + tysk mark + tysk mark + tyske mark + + + djiboutisk franc + djiboutisk franc + djiboutiske franc + + + dansk krone + dansk krone + danske kroner + + + dominikansk peso + dominikansk peso + dominikanske peso + + + algerisk dinar + algerisk dinar + algeriske dinarar + + + ecuadoriansk sucre + ecuadoriansk sucre + ecuadorianske sucre + + + ecuadoriansk unidad de valor constante (UVC) + ecuadoriansk unidad de valor constante (UVC) + ecuadorianske unidad de valor constante (UVC) + + + estisk kroon + estisk kroon + estiske kroon + + + egyptisk pund + egyptisk pund + egyptiske pund + + + eritreisk nakfa + eritreisk nakfa + eritreiske nakfa + + + spansk peseta (A–konto) + spansk peseta (A–konto) + spanske peseta (A–konto) + + + spansk peseta (konvertibel konto) + spansk peseta (konvertibel konto) + spanske peseta (konvertibel konto) + + + spansk peseta + spansk peseta + spanske peseta + + + etiopisk birr + etiopisk birr + etiopiske birr + + + euro + euro + euro + + + finsk mark + finsk mark + finske mark + + + fijiansk dollar + fijiansk dollar + fijianske dollar + + + Falkland-pund + Falkland-pund + Falkland-pund + + + fransk franc + fransk franc + franske franc + + + britisk pund sterling + britisk pund sterling + britiske pund sterling + + + georgisk kupon larit + georgisk kupon larit + georgiske kupon larit + + + georgisk lari + georgisk lari + georgiske lari + + + ghanesisk cedi (1979–2007) + ghanesisk cedi (GHC) + ghanesiske cedi (GHC) + + + ghanesisk cedi + ghanesisk cedi + ghanesiske cedi + + + gibraltarsk pund + gibraltarsk pund + gibraltarske pund + + + gambisk dalasi + gambisk dalasi + gambiske dalasi + + + guineansk franc + guineansk franc + guineanske franc + + + guineansk syli + guineansk syli + guineanske syli + + + ekvatorialguineansk ekwele guineana + ekvatorialguineansk ekwele + ekvatorialguineanske ekwele + + + gresk drakme + gresk drakme + greske drakmer + + + guatemalansk quetzal + guatemalansk quetzal + guatemalanske quetzal + + + portugisisk guinea escudo + portugisisk guinea escudo + portugisiske guinea escudo + + + Guinea-Bissau-peso + + + guyansk dollar + guyansk dollar + guyanske dollar + + + Hongkong-dollar + Hongkong-dollar + Hongkong-dollar + + + honduransk lempira + honduransk lempira + honduranske lempira + + + kroatisk dinar + kroatisk dinar + kroatiske dinarar + + + kroatisk kuna + kroatisk kuna + kroatiske kuna + + + haitisk gourde + haitisk gourde + haitiske gourde + + + ungarsk forint + ungarsk forint + ungarske forintar + + + indonesisk rupi + indonesisk rupi + indonesiske rupiar + + + irsk pund + irsk pund + irske pund + + + israelsk pund + israelsk pund + israelske pund + + + israelsk ny shekel + israelsk ny shekel + israelske nye sheklar + + + indisk rupi + indisk rupi + indiske rupier + + + iraksk dinar + irakisk dinar + irakiske dinarar + + + iransk rial + iransk rial + iranske rialar + + + islandsk krone + islandsk krone + islandske kroner + + + italiensk lire + italiensk lire + italienske lire + + + jamaikansk dollar + jamaikansk dollar + jamaikanske dollar + + + jordansk dinar + jordansk dinar + jordanske dinarar + + + japansk yen + japansk yen + japanske yen + + + kenyansk shilling + kenyansk shilling + kenyanske shilling + + + kirgisisk som + kirgisisk som + kirgisiske som + + + kambodsjansk riel + kambodsjansk riel + kambodsjanske riel + + + komorisk franc + komorisk franc + komoriske franc + + + nordkoreansk won + nordkoreansk won + nordkoreanske won + + + sørkoreansk won + sørkoreansk won + sørkoreanske won + + + kuwaitisk dinar + kuwaitisk dinar + kuwaitiske dinarar + + + caymansk dollar + caymansk dollar + caymanske dollar + + + kasakhstansk tenge + kasakhstansk tenge + kasakhstanske tenge + + + laotisk kip + laotisk kip + laotiske kip + + + libanesisk pund + libanesisk pund + libanesiske pund + + + srilankisk rupi + srilankisk rupi + srilankiske rupiar + + + liberisk dollar + liberisk dollar + liberiske dollar + + + lesothisk loti + lesothisk loti + lesothiske loti + + + litauisk lita + litauisk lita + litauiske lita + + + litauisk talona + litauisk talona + litauiske talona + + + luxemburgsk konvertibel franc + luxemburgsk konvertibel franc + luxemburgske konvertible franc + + + luxemburgsk franc + luxemburgsk franc + luxemburgske franc + + + luxemburgsk finansiell franc + luxemburgsk finansiell franc + luxemburgske finansielle franc + + + latvisk lat + latvisk lat + latviske lat + + + latvisk rubel + latvisk rubel + latviske rublar + + + libysk dinar + libysk dinar + libyske dinarar + + + marokkansk dirham + marokkansk dirham + marokkanske dirham + + + marokkansk franc + marokkansk franc + marokkanske franc + + + moldovsk leu + moldovsk leu + moldovske lei + + + madagassisk ariary + madagassisk ariary + madagassiske ariary + + + madagassisk franc + madagassisk franc + madagassiske franc + + + makedonsk denar + makedonsk denar + makedonske denarar + + + malisk franc + malisk franc + maliske franc + + + myanmarsk kyat + myanmarsk kyat + myanmarske kyat + + + mongolsk tugrik + mongolsk tugrik + mongolske tugrik + + + makaosk pataca + makaosk pataca + makaoske pataca + + + mauritansk ouguiya + mauritansk ouguiya + mauritanske ouguiya + + + maltesisk lira + maltesisk lira + maltesiske lira + + + maltesisk pund + maltesisk pund + maltesiske pund + + + mauritansk rupi + mauritansk rupi + mauritanske rupiar + + + maldivisk rufiyaa + maldivisk rufiyaa + maldiviske rufiyaa + + + malawisk kwacha + malawisk kwacha + malawiske kwacha + + + meksikansk peso + meksikansk peso + meksikanske peso + + + meksikansk sølvpeso (1861–1992) + meksikansk sølvpeso (MXP) + meksikanske sølvpeso (MXP) + + + meksikansk unidad de inversion (UDI) + meksikansk unidad de inversion (UDI) + meksikanske unidad de inversion (UDI) + + + malaysisk ringgit + malaysisk ringgit + malaysiske ringgit + + + mosambikisk escudo + mosambikisk escudo + mosambikiske escudo + + + gammal mosambikisk metical + gammal mosambikisk metical + gamle mosambikiske metical + + + mosambikisk metical + + + namibisk dollar + namibisk dollar + namibiske dollar + + + nigeriansk naira + nigeriansk naira + nigerianske naira + + + nicaraguansk cordoba + nicaraguansk cordoba + nicaraguanske cordoba + + + nicaraguansk cordoba oro + nicaraguansk cordoba oro + nicaraguanske cordoba oro + + + nederlandsk gylden + nederlandsk gylden + nederlandske gylden + + + norsk krone + norsk krone + norske kroner + kr + + + nepalsk rupi + nepalsk rupi + nepalske rupiar + + + new zealandsk dollar + new zealandsk dollar + new zealandske dollar + + + omansk rial + omansk rial + omanske rial + + + panamansk balboa + panamansk balboa + panamanske balboa + + + peruansk inti + peruansk inti + peruanske inti + + + peruansk nuevo sol + peruansk nuevo sol + peruanske nuevo sol + + + peruansk sol + peruansk sol + peruanske sol + + + papuansk kina + papuansk kina + papuanske kina + + + filippinsk peso + filippinsk peso + filippinske peso + + + pakistansk rupi + pakistansk rupi + pakistanske rupiar + + + polsk zloty + polsk zloty + polske zloty + + + polsk zloty (1950–1995) + polsk zloty (PLZ) + polske zloty (PLZ) + + + portugisisk escudo + portugisisk escudo + portugisiske escudo + + + paraguayansk guarani + paraguayansk guarani + paraguayanske guarani + + + qatarsk rial + qatarsk rial + qatarske rial + + + rhodesisk dollar + rhodesisk dollar + rhodesiske dollar + + + gammal rumensk leu + gammal rumensk leu + gamle rumenske lei + + + rumensk leu + rumensk leu + rumenske lei + + + serbisk dinar + serbisk dinar + serbiske dinarar + + + russisk rubel + + + russisk rubel (1991–1998) + russisk rubel (RUR) + russiske rublar (RUR) + + + rwandisk franc + rwandisk franc + rwandiske franc + + + saudiarabisk rial + saudiarabisk rial + saudiarabiske rial + + + salomonsk dollar + salomonsk dollar + salomonske dollar + + + seychellisk rupi + seychellisk rupi + seychelliske rupiar + + + gammal sudanesisk dinar + gammal sudansk dinar + gamle sudanske dinarar + + + sudansk pund + sudansk pund + sudanske pund + + + gammalt sudanesisk pund + gammalt sudansk pund + gamle sudanske pund + + + svensk krone + svensk krone + svenske kroner + + + singaporsk dollar + singaporsk dollar + singaporske dollar + + + sankthelensk pund + sankthelensk pund + sankthelenske pund + + + slovensk tolar + slovensk tolar + slovenske tolar + + + slovakisk koruna + slovakisk koruna + slovakiske koruna + + + sierraleonsk leone + sierraleonsk leone + sierraleonske leone + + + somalisk shilling + somalisk shilling + somaliske shilling + + + surinamsk dollar + surinamsk dollar + surinamske dollar + + + surinamsk gylden + surinamsk gylden + surinamske gylden + + + Sao Tome og Principe-dobra + + + sovjetisk rubel + sovjetisk rubel + sovjetiske rublar + + + salvadoransk colon + salvadoransk colon + salvadoranske colon + + + syrisk pund + syrisk pund + syriske pund + + + swazilandsk lilangeni + swazilandsk lilangeni + swazilandske lilangeni + + + thailandsk baht + thailandsk baht + thailandske baht + + + tadsjikisk rubel + tadsjikisk rubel + tadsjikiske rublar + + + tadsjikisk somoni + tadsjikisk somoni + tadsjikiske somoni + + + turkmensk manat + turkmensk manat + turkmenske manat + + + turkmenistansk manat + turkmenistanska manat + + + tunisisk dinar + tunisisk dinar + tunisiske dinarar + + + tongansk paʻanga + tongansk paʻanga + tonganske paʻanga + + + timoresisk escudo + timoresisk escudo + timoresiske escudo + + + gammal tyrkiske lire + gammal tyrkisk lire + gamle tyrkiske lire + + + tyrkisk lire + tyrkisk lire + tyrkiske lire + + + trinidadisk dollar + trinidadisk dollar + trinidadiske dollar + + + taiwansk ny dollar + taiwansk ny dollar + taiwanske nye dollar + + + tanzaniansk shilling + tanzaniansk shilling + tanzanianske shilling + + + ukrainsk hryvnia + ukrainsk hryvnia + ukrainske hryvnia + + + ukrainsk karbovanetz + ukrainsk karbovanetz + ukrainske karbovanetz + + + ugandisk shilling (1966–1987) + ugandisk shilling (UGS) + ugandiske shilling (UGS) + + + ugandisk shilling + ugandisk shilling + ugandiske shilling + + + amerikansk dollar + amerikansk dollar + amerikanske dollar + + + amerikansk dollar (neste dag) + amerikansk dollar (neste dag) + amerikanske dollar (neste dag) + + + amerikansk dollar (same dag) + amerikansk dollar (same dag) + amerikanske dollar (same dag) + + + uruguayansk peso en unidades indexadas + uruguayansk peso en unidades indexadas + uruguayanske peso en unidades indexadas + + + uruguayansk peso (1975–1993) + uruguayansk peso (UYP) + uruguayanske peso (UYP) + + + uruguayansk peso + uruguayansk peso + uruguayanske peso + + + usbekisk sum + usbekisk sum + usbekiske sum + + + venezuelansk bolivar (1871–2008) + venezuelansk bolivar (1871–2008) + venezuelanske bolivar (1871–2008) + + + venezuelansk bolivar + venezuelansk bolivar + venezuelanske bolivar + + + vietnamesisk dong + vietnamesisk dong + vietnamesiske dong + + + vanuatuisk vatu + vanuatuisk vatu + vanuatuiske vatu + + + vestsamoisk tala + vestsamoisk tala + vestsamoiske tala + + + CFA franc BEAC + CFA franc BEAC + CFA franc BEAC + + + sølv + sølv + sølv + + + gull + gull + gull + + + europeisk samansett eining + europeisk samansett eining + europeiske samansette einingar + + + europeisk monetær eining + europeisk monetær eining + europeiske monetære einingar + + + europeisk kontoeining (XBC) + europeisk kontoeining (XBC) + europeiske kontoeiningar (XBC) + + + europeisk kontoeining (XBD) + europeisk kontoeining (XBD) + europeiske kontoeiningar (XBD) + + + austkaribisk dollar + austkaribisk dollar + austkaribiske dollar + + + spesielle trekkrettar + spesiell trekkrett + spesielle trekkrettar + + + europeisk valutaeining + europeisk valutaeining + europeiske valutaeiningar + + + fransk gullfranc + fransk gullfranc + franske gullfranc + + + fransk UIC-franc + fransk UIC-franc + franske UIC-franc + + + CFA franc BCEAO + + + palladium + palladium + palladium + + + CFP franc + CFP-franc + CFP-franc + + + platina + platina + platina + + + RINET-fond + RINET-fond + RINET-fond + + + testvalutakode + testvalutakode + testvalutakode + + + ukjend eller ugyldig valuta + ukjend/ugyldig valuta + ukjend eller ugyldig valuta + + + jemenittisk dinar + jemenittisk dinar + jemenittiske dinarar + + + jemenittisk rial + jemenittisk rial + jemenittiske rialar + + + jugoslavisk dinar (hard) + jugoslavisk dinar (hard) + jugoslaviske dinarar (hard) + + + jugoslavisk noviy-dinar + jugoslavisk noviy-dinarar + jugoslaviske noviy-dinar + + + jugoslavisk konvertibel dinar + jugoslavisk konvertibel dinar + jugoslaviske konvertible dinarar + + + sørafrikansk rand (finansiell) + + + sørafrikansk rand + + + zambisk kwacha (1968–2012) + + + zambisk kwacha + + + zairisk ny zaire + + + zairisk zaire + + + zimbabwisk dollar + + + Zimbabwe-dollar (2009) + Zimbabwe-dollar (2009) + + + + {0}‒{1} + + + + + + {0} per {1} + + + {0} Jordgravitasjon + {0} Jordgravitasjoner + + + {0} bueminutt + {0} bueminutter + + + {0} buesekund + {0} buesekunder + + + {0} grad + {0} grader + + + {0} amerikanskt tønneland + {0} amerikanske tønneland + + + {0} hektar + {0} hektar + + + {0} kvadratfot + {0} kvadratfot + + + {0} kvadratkilometer + {0} kvadratkilometer + + + {0} kvadratmeter + {0} kvadratmeter + + + {0} kvadrat-engelsk mil + {0} kvadrat-engelske mil + + + {0} døgn + {0} døgn + + + {0} time + {0} timer + + + {0} millisekund + {0} millisekunder + + + {0} minutt + {0} minutter + + + {0} måned + {0} måneder + + + {0} sekund + {0} sekunder + + + {0} uke + {0} uker + + + {0} år + {0} år + + + {0} centimeter + {0} centimeter + + + {0} fot + {0} fot + + + {0} tomme + {0} tommer + + + {0} kilometer + {0} kilometer + + + {0} lysår + {0} lysår + + + {0} meter + {0} meter + + + {0} engelsk mil + {0} engelske mil + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} engelsk yard + {0} engelske yard + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0} hestekraft + {0} hestekrafter + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} tomme kvikksølv + {0} tommer kvikksølv + + + {0} millibar + {0} millibar + + + {0} kilometer per time + {0} kilometer per time + + + {0} meter per sekund + {0} meter per sekund + + + {0} engelsk mil per time + {0} engelske mil per time + + + {0} grad Celsius + {0} grader Celsius + + + {0} grad Fahrenheit + {0} grader Fahrenheit + + + {0} kubikkilometer + {0} kubikkilometer + + + {0} kubikk-engelsk mil + {0} kubikk-engelske mil + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} kvadratfot + {0} kvadratfot + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} d + {0} d + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mån + {0} mån + + + {0} s + {0} s + + + {0} u + {0} u + + + {0} år + {0} år + + + {0} cm + {0} cm + + + {0} fot + {0} fot + + + {0} tomme + {0} tommer + + + {0} km + {0} km + + + {0} lysår + {0} lysår + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0} hk + {0} hk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0}ha + {0}ha + + + {0} ft² + {0} ft² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}u + {0}u + + + {0}å + {0}å + + + {0}cm + {0}cm + + + {0} fot + {0} fot + + + {0} tomme + {0} tommer + + + {0}km + {0}km + + + {0} lysår + {0} lysår + + + {0}m + {0}m + + + {0} mi + {0} mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0} yd + {0} yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} unse + {0} unser + + + {0} skålpund + {0} skålpund + + + {0}hk + {0}hk + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0} inHg + {0} inHg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + + + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} og {1} + {0} og {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ja:j + nei:n + + + + diff --git a/library/Zend/Locale/Data/nn_NO.xml b/library/Zend/Locale/Data/nn_NO.xml new file mode 100755 index 000000000..7e3e27d19 --- /dev/null +++ b/library/Zend/Locale/Data/nn_NO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nnh.xml b/library/Zend/Locale/Data/nnh.xml new file mode 100755 index 000000000..1992ec54c --- /dev/null +++ b/library/Zend/Locale/Data/nnh.xml @@ -0,0 +1,320 @@ + + + + + + + + + + + + Shwóŋò pʉa mbasǎ + Shwóŋò pamom + Shwóŋò pʉa nzsekàʼa + Shwóŋò pafut + Shwóŋò pʉ̀a njinikom + Shwóŋò pakɔsi + Shwóŋò mbulu + Shwóŋò ngáŋtʉɔʼ + nzǎmɔ̂ɔn + ngilísè + Shwóŋò pʉa Yɔɔnmendi + Shwóŋò menkesaŋ + felaŋsée + Shwóŋò pʉa shÿó Bɛgtùa + Shwóŋò ngiembɔɔn + Shwóŋò pʉa shÿó Mbafìa + Shwóŋò Tsaŋ + + + Kàmalûm + + + fʉ̀ʼ njÿó + nkáb + + + fʉ̀ʼʉ mmó + + + + [a á à â ǎ b c d e é è ê ě ɛ {ɛ\u0301} {ɛ\u0300} {ɛ\u0302} {ɛ\u030C} f g h i í ì j k l m n ŋ o ó ò ô ǒ ɔ {ɔ\u0301} {ɔ\u0300} {ɔ\u0302} {ɔ\u030C} p {pf} s {sh} t {ts} u ú ù û ǔ ʉ {ʉ\u0301} {ʉ\u0300} {ʉ\u0302} {ʉ\u030C} v w ẅ y ÿ z ʼ] + [q r x] + [A B C D E Ɛ F G H I J K L M N Ŋ O Ɔ P {Pf} R S {Sh} T {Ts} U Ʉ V W Ẅ Y Ÿ Z ʼ] + [, ; \: ! ? . ' ‘ ’ « »] + + + « + » + + + + + + + + + + EEEE , 'lyɛ'̌ʼ d 'na' MMMM, y G + + + + + 'lyɛ'̌ʼ d 'na' MMMM, y G + + + + + d MMM, y G + + + + + dd/MM/yy GGGGG + + + + + + + {1},{0} + + + + + {1}, {0} + + + + d/M/y + E , 'lyɛ'̌ʼ d 'na' M, y + MMM y + 'lyɛ'̌ʼ d 'na' MMMM, y + E , 'lyɛ'̌ʼ d 'na' MMM, y + + + + + + + + saŋ tsetsɛ̀ɛ lùm + saŋ kàg ngwóŋ + saŋ lepyè shúm + saŋ cÿó + saŋ tsɛ̀ɛ cÿó + saŋ njÿoláʼ + saŋ tyɛ̀b tyɛ̀b mbʉ̀ + saŋ mbʉ̀ŋ + saŋ ngwɔ̀ʼ mbÿɛ + saŋ tàŋa tsetsáʼ + saŋ mejwoŋó + saŋ lùm + + + saŋ tsetsɛ̀ɛ lùm + saŋ kàg ngwóŋ + saŋ lepyè shúm + saŋ cÿó + saŋ tsɛ̀ɛ cÿó + saŋ njÿoláʼ + saŋ tyɛ̀b tyɛ̀b mbʉ̀ + saŋ mbʉ̀ŋ + saŋ ngwɔ̀ʼ mbÿɛ + saŋ tàŋa tsetsáʼ + saŋ mejwoŋó + saŋ lùm + + + + + saŋ tsetsɛ̀ɛ lùm + saŋ kàg ngwóŋ + saŋ lepyè shúm + saŋ cÿó + saŋ tsɛ̀ɛ cÿó + saŋ njÿoláʼ + saŋ tyɛ̀b tyɛ̀b mbʉ̀ + saŋ mbʉ̀ŋ + saŋ ngwɔ̀ʼ mbÿɛ + saŋ tàŋa tsetsáʼ + saŋ mejwoŋó + saŋ lùm + + + saŋ tsetsɛ̀ɛ lùm + saŋ kàg ngwóŋ + saŋ lepyè shúm + saŋ cÿó + saŋ tsɛ̀ɛ cÿó + saŋ njÿoláʼ + saŋ tyɛ̀b tyɛ̀b mbʉ̀ + saŋ mbʉ̀ŋ + saŋ ngwɔ̀ʼ mbÿɛ + saŋ tàŋa tsetsáʼ + saŋ mejwoŋó + saŋ lùm + + + + + + + lyɛʼɛ́ sẅíŋtè + mvfò lyɛ̌ʼ + mbɔ́ɔntè mvfò lyɛ̌ʼ + tsètsɛ̀ɛ lyɛ̌ʼ + mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ + mvfò màga lyɛ̌ʼ + màga lyɛ̌ʼ + + + lyɛʼɛ́ sẅíŋtè + mvfò lyɛ̌ʼ + mbɔ́ɔntè mvfò lyɛ̌ʼ + tsètsɛ̀ɛ lyɛ̌ʼ + mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ + mvfò màga lyɛ̌ʼ + màga lyɛ̌ʼ + + + lyɛʼɛ́ sẅíŋtè + mvfò lyɛ̌ʼ + mbɔ́ɔntè mvfò lyɛ̌ʼ + tsètsɛ̀ɛ lyɛ̌ʼ + mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ + mvfò màga lyɛ̌ʼ + màga lyɛ̌ʼ + + + + + lyɛʼɛ́ sẅíŋtè + mvfò lyɛ̌ʼ + mbɔ́ɔntè mvfò lyɛ̌ʼ + tsètsɛ̀ɛ lyɛ̌ʼ + mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ + mvfò màga lyɛ̌ʼ + màga lyɛ̌ʼ + + + lyɛʼɛ́ sẅíŋtè + mvfò lyɛ̌ʼ + mbɔ́ɔntè mvfò lyɛ̌ʼ + tsètsɛ̀ɛ lyɛ̌ʼ + mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ + mvfò màga lyɛ̌ʼ + màga lyɛ̌ʼ + + + lyɛʼɛ́ sẅíŋtè + mvfò lyɛ̌ʼ + mbɔ́ɔntè mvfò lyɛ̌ʼ + tsètsɛ̀ɛ lyɛ̌ʼ + mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ + mvfò màga lyɛ̌ʼ + màga lyɛ̌ʼ + + + + + + + mbaʼámbaʼ + ncwònzém + + + + + + mé zyé Yěsô + mé gÿo ńzyé Yěsô + + + m.z.Y. + m.g.n.Y. + + + + + + EEEE , 'lyɛ'̌ʼ d 'na' MMMM, y + + + + + 'lyɛ'̌ʼ d 'na' MMMM, y + + + + + d MMM, y + + + + + dd/MM/yy + + + + + + + {1},{0} + + + + + {1}, {0} + + + + d/M/y + E , 'lyɛ'̌ʼ d 'na' M, y + MMM y + 'lyɛ'̌ʼ d 'na' MMMM, y + E , 'lyɛ'̌ʼ d 'na' MMM, y + + + + + + + tsɔ́ fʉ̀ʼ + + + ngùʼ + + + lyɛ̌ʼ + jǔɔ gẅie à ka tɔ̌g + lyɛ̌ʼɔɔn + jǔɔ gẅie à ne ntóo + + + ngàba láʼ + + + fʉ̀ʼ nèm + + + + + + , + . + ; + % + + + + feláŋ CFA + FCFA + + + + diff --git a/library/Zend/Locale/Data/nnh_CM.xml b/library/Zend/Locale/Data/nnh_CM.xml new file mode 100755 index 000000000..4368f16d3 --- /dev/null +++ b/library/Zend/Locale/Data/nnh_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nr.xml b/library/Zend/Locale/Data/nr.xml new file mode 100755 index 000000000..027851935 --- /dev/null +++ b/library/Zend/Locale/Data/nr.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + isiNdebele + + + + [a b c d e f g h i j k l m n o p q s t u v w x y z] + [r] + [A B C D E F G H I J K L M N O P Q S T U V W X Y Z] + + + + + + + + + + + + + + Jan + Feb + Mat + Apr + Mey + Jun + Jul + Arh + Sep + Okt + Usi + Dis + + + Janabari + uFeberbari + uMatjhi + u-Apreli + Meyi + Juni + Julayi + Arhostosi + Septemba + Oktoba + Usinyikhaba + Disemba + + + + + + + Son + Mvu + Bil + Tha + Ne + Hla + Gqi + + + uSonto + uMvulo + uLesibili + Lesithathu + uLesine + ngoLesihlanu + umGqibelo + + + + + + BC + AD + + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + R + + + + + diff --git a/library/Zend/Locale/Data/nr_ZA.xml b/library/Zend/Locale/Data/nr_ZA.xml new file mode 100755 index 000000000..65cb83f64 --- /dev/null +++ b/library/Zend/Locale/Data/nr_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nso.xml b/library/Zend/Locale/Data/nso.xml new file mode 100755 index 000000000..b701e9183 --- /dev/null +++ b/library/Zend/Locale/Data/nso.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + Sesotho sa Leboa + + + + [a b d e ê f g h i j k l m n o ô p r s š t u w x y] + [c q v z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + Jan + Feb + Mat + Apo + Mei + Jun + Jul + Ago + Set + Okt + Nof + Dis + + + Janaware + Feberware + Matšhe + Aporele + Mei + June + Julae + Agostose + Setemere + Oktobore + Nofemere + Disemere + + + + + + + Son + Mos + Bed + Rar + Ne + Hla + Mok + + + Sontaga + Mosupalogo + Labobedi + Laboraro + Labone + Labohlano + Mokibelo + + + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + R + + + + + diff --git a/library/Zend/Locale/Data/nso_ZA.xml b/library/Zend/Locale/Data/nso_ZA.xml new file mode 100755 index 000000000..7f73905c5 --- /dev/null +++ b/library/Zend/Locale/Data/nso_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/numberingSystems.xml b/library/Zend/Locale/Data/numberingSystems.xml new file mode 100755 index 000000000..6d18cdd15 --- /dev/null +++ b/library/Zend/Locale/Data/numberingSystems.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nus.xml b/library/Zend/Locale/Data/nus.xml new file mode 100755 index 000000000..d0826814b --- /dev/null +++ b/library/Zend/Locale/Data/nus.xml @@ -0,0 +1,435 @@ + + + + + + + + + + + + Thok aka̱ni + Thok bunyni + Thok Jalabni + Thok bälärutha + Thok bälga̱a̱riani + Thok bängali + Thok cik + Thok jarmani + Thok girikni + Thok liŋli̱thni + Thok i̱thpaaniani + Thok perthiani + Thok pɔrɔthani + Thok ɣowthani + Thok ɣändini + Thok ɣänga̱a̱riɛni + Thok indunithiani + Thok i̱gboni + Thok i̱taliani + Thok japanni + Thok jabanithni + Thok kameeri + Thok kuriani + Thok mayɛyni + Thok bormi̱thni + Thok napalni + Thok da̱c + Thok Nath + Thok puɔnjabani + Thok pölicni + Thok puɔtigali + Thok ji̱ röm + Thok ra̱ciaani + Thok ruaandani + Thok thomaaliani + Thok i̱thwidicni + Thok tamilni + Thok tayni + Thok turkicni + Thok ukeraanini + Thok udoni + Thok betnaamni + Thok yurubani + Thok cayna + Thok dhuluni + + + Andora + Abganithtan + Antiguaa kɛnɛ Barbuda + Aŋguɛla + Albänia + Aɛrmänia + Aŋgola + Aɛrgentin + Amerika thamow + Athtɛria + Athɔra̱lia + Aruba + Adhe̱rbe̱ja̱n + Bothnia kɛnɛ ɣärgobinia + Bärbadoth + Bengeladiec + Be̱lgim + Burkinɛ pa̱thu + Bulga̱a̱ria + Ba̱reen + Burundi + Be̱ni̱n + Be̱rmudaa + Burunɛy + Bulibia + Bäraadhiil + Bämuɔth + Buta̱n + Bothiwaana + Be̱lɛruth + Bilidha + Känɛda + Cɛntrɔl aprika repuɔblic + Kɔŋgɔ + Kodibo̱o̱ + Kuk ɣa̱ylɛn + Cili̱ + Kɛmɛrun + Cayna + Kolombia + Kothtirika + Kɛp bedi ɣa̱ylɛn + Algeria + Korwaatia + Burutic ɣe̱ndian oce̱n + Kombodia + Komruth + Kaymɛn ɣa̱ylɛn + Sudan + Ca̱d + Burutic dhuɔ̱ɔ̱l be̱rgin + + + + [a ä {a\u0331} b c d e ë {e\u0331} ɛ {ɛ\u0308} {ɛ\u0331} {ɛ\u0331\u0308} f g ɣ h i ï {i\u0331} j k l m n ŋ o ö {o\u0331} ɔ {ɔ\u0308} {ɔ\u0331} p q r s t u v w x y z] + [A B C D E Ɛ F G Ɣ H I J K L M N Ŋ O Ɔ P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/MM/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E، d-M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E، d/M/y + MMM y + d MMM y + E، d MMM y + QQQ y + QQQQ y + + + + + + + + Tiop + Pɛt + Duɔ̱ɔ̱ + Guak + Duä + Kor + Pay + Thoo + Tɛɛ + Laa + Kur + Tid + + + Tiop thar pɛt + Pɛt + Duɔ̱ɔ̱ŋ + Guak + Duät + Kornyoot + Pay yie̱tni + Tho̱o̱r + Tɛɛr + Laath + Kur + Tio̱p in di̱i̱t + + + + + T + P + D + G + D + K + P + T + T + L + K + T + + + + + + + Cäŋ + Jiec + Rɛw + Diɔ̱k + Ŋuaan + Dhieec + Bäkɛl + + + Cäŋ kuɔth + Jiec la̱t + Rɛw lätni + Diɔ̱k lätni + Ŋuaan lätni + Dhieec lätni + Bäkɛl lätni + + + + + C + J + R + D + Ŋ + D + B + + + + + + + P1 + P2 + P3 + P4 + + + Päth diɔk tin nhiam + Päth diɔk tin guurɛ + Päth diɔk tin wä kɔɔriɛn + Päth diɔk tin jiɔakdiɛn + + + + + + + RW + + + + + + + A ka̱n Yecu ni dap + Ɛ ca Yecu dap + + + AY + ƐY + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/MM/y + + + + + + + zzzz h:mm:ss a + + + + + z h:mm:ss a + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E، d-M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E، d/M/y + MMM y + d MMM y + E، d MMM y + QQQ y + QQQQ y + + + + + + + Gua̱a̱th Ruëc + + + Ruɔ̱n + + + Pay + + + Jiɔk + + + Cäŋ + Pan + Walɛ + Ruun + + + Ni̱n jokä + + + Thaak + + + Minit + + + Thɛkɛni + + + + + + . + , + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + + Ɣää:Ɣ + Ëëy:Ë + + + + diff --git a/library/Zend/Locale/Data/nus_SD.xml b/library/Zend/Locale/Data/nus_SD.xml new file mode 100755 index 000000000..179f689a1 --- /dev/null +++ b/library/Zend/Locale/Data/nus_SD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/nyn.xml b/library/Zend/Locale/Data/nyn.xml new file mode 100755 index 000000000..1c090a80a --- /dev/null +++ b/library/Zend/Locale/Data/nyn.xml @@ -0,0 +1,755 @@ + + + + + + + + + + + + Orukani + Orumariki + Oruharabu + Oruberarusi + Oruburugariya + Orubengari + Oruceeki + Orugirimaani + Oruguriiki + Orungyereza + Orusupaani + Orupaasiya + Orufaransa + Oruhausa + Oruhindi + Oruhangare + Oruindonezia + Oruibo + Oruyitare + Orujapaani + Orujava + Orukambodiya + Orukoreya + Orumalesiya + Oruburuma + Orunepali + Orudaaki + Runyankore + Orupungyabi + Orupoori + Orupocugo + Oruromania + Orurrasha + Orunyarwanda + Orusomaari + Oruswidi + Orutamiri + Orutailandi + Orukuruki + Orukuraini + Oru-Urudu + Oruviyetinaamu + Oruyoruba + Oruchaina + Oruzuru + + + Andora + Amahanga ga Buharabu ageeteereine + Afuganistani + Angiguwa na Babuda + Angwira + Arubania + Arimeniya + Antiri za Hoorandi + Angora + Arigentina + Samowa ya Ameerika + Osituria + Ositureeriya + Aruba + Azabagyani + Boziniya na Hezegovina + Babadosi + Bangaradeshi + Bubirigi + Bokina Faso + Burugariya + Bahareni + Burundi + Benini + Berimuda + Burunei + Boriiviya + Buraziiri + Bahama + Butani + Botswana + Bararusi + Berize + Kanada + Demokoratika Ripaaburika ya Kongo + Eihanga rya Rwagati ya Afirika + Kongo + Swisi + Aivore Kositi + Ebizinga bya Kuuku + Chile + Kameruuni + China + Korombiya + Kositarika + Cuba + Ebizinga bya Kepuvade + Saipurasi + Ripaaburika ya Zeeki + Bugirimaani + Gyibuti + Deenimaaka + Dominika + Ripaaburika ya Dominica + Arigyeriya + Ikweda + Esitoniya + Misiri + Eriteriya + Sipeyini + Ethiyopiya + Bufini + Figyi + Ebizinga bya Faakilanda + Mikironesiya + Bufaransa + Gabooni + Bungyereza + Gurenada + Gyogiya + Guyana ya Bufaransa + Gana + Giburaata + Guriinirandi + Gambiya + Gine + Gwaderupe + Guni + Guriisi + Gwatemara + Gwamu + Ginebisau + Guyana + Hondurasi + Korasiya + Haiti + Hangare + Indoneeziya + Irerandi + Isirairi + Indiya + Ebizinga bya Indian ebya Bungyereza + Iraaka + Iraani + Aisilandi + Itare + Gyamaika + Yorudaani + Gyapaani + Kenya + Kirigizistani + Kambodiya + Kiribati + Koromo + Senti Kittis na Nevisi + Koreya Amatemba + Koreya Amashuuma + Kuweiti + Ebizinga bya Kayimani + Kazakisitani + Layosi + Lebanoni + Senti Rusiya + Lishenteni + Siriranka + Liberiya + Lesotho + Lithuania + Lakizembaaga + Latviya + Libya + Morocco + Monaco + Moridova + Madagasika + Ebizinga bya Marshaa + Masedoonia + Mari + Myanamar + Mongoria + Ebizinga by'amatemba ga Mariana + Martinique + Mauriteeniya + Montserrati + Marita + Maurishiasi + Maridives + Marawi + Mexico + marayizia + Mozambique + Namibiya + Niukaredonia + Naigya + Ekizinga Norifoko + Naigyeriya + Nikaragwa + Hoorandi + Noorwe + Nepo + Nauru + Niue + Niuzirandi + Omaani + Panama + Peru + Polinesia ya Bufaransa + Papua + Firipino + Pakisitaani + Poorandi + Senti Piyerre na Mikweron + Pitkaini + Pwetoriko + Parestiina na Gaza + Pocugo + Palaawu + Paragwai + Kata + Riyuniyoni + Romaniya + Rrasha + Rwanda + Saudi Areebiya + Ebizinga bya Surimaani + Shesheresi + Sudani + Swideni + Singapo + Senti Herena + Sirovaaniya + Sirovaakiya + Sirra Riyooni + Samarino + Senego + Somaariya + Surinaamu + Sawo Tome na Purinsipo + Eri Salivado + Siriya + Swazirandi + Ebizinga bya Buturuki na Kaiko + Chadi + Togo + Tairandi + Tajikisitani + Tokerawu + Burugweizooba bwa Timori + Turukimenisitani + Tunizia + Tonga + Buturuki /Take + Turinidad na Tobago + Tuvaru + Tayiwaani + Tanzania + Ukureini + Uganda + Amerika + Urugwai + Uzibekisitani + Vatikani + Senti Vinsent na Gurenadini + Venezuwera + Ebizinga bya Virigini ebya Bungyereza + Ebizinga bya Virigini ebya Amerika + Viyetinaamu + Vanuatu + Warris na Futuna + Samowa + Yemeni + Mayote + Sausi Afirika + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + KBZ + KBR + KST + KKN + KTN + KMK + KMS + KMN + KMW + KKM + KNK + KNB + + + Okwokubanza + Okwakabiri + Okwakashatu + Okwakana + Okwakataana + Okwamukaaga + Okwamushanju + Okwamunaana + Okwamwenda + Okwaikumi + Okwaikumi na kumwe + Okwaikumi na ibiri + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + SAN + ORK + OKB + OKS + OKN + OKT + OMK + + + Sande + Orwokubanza + Orwakabiri + Orwakashatu + Orwakana + Orwakataano + Orwamukaaga + + + + + S + K + R + S + N + T + M + + + + + + + K1 + K2 + K3 + K4 + + + KWOTA 1 + KWOTA 2 + KWOTA 3 + KWOTA 4 + + + + + + Kurisito Atakaijire + Kurisito Yaijire + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Obunaku + + + Omwaka + + + Omwezi + + + Esande + + + Eizooba + Nyomwabazyo + Erizooba + Nyenkyakare + + + Eizooba ry'okukora + + + Nyomushana/nyekiro + + + Shaaha + + + Edakiika + + + Obucweka/Esekendi + + + Eshaaha za + + + + + + + + ¤#,##0.00 + + + + + + Dirham za Buharabu + + + Kwanza ya Angora + + + Doora ya Austureeriya + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pura ya Botswana + + + Doora ya Kanada + + + Faranga ya Kongo + + + Faranga ya Swisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Gyibuti + + + Dinari ya Arigyeriya + + + Paundi ya Misiri + + + Nakfa ya Eritireya + + + Birr ya Ethiopiya + + + Yuro + + + Paundi ya Bungyereza + + + Cedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Guinea + + + Rupiya ya India + + + Yeni ya Japaani + + + Shiringi ya Kenya + + + Faranga ya Komoro + + + Doora ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirram ya Moroko + + + Ariari ya Maragariita + + + Ougwiya ya Mouriteeniya + + + Rupiiha ya Mauritiasi + + + Kwaca ya Malawi + + + Metikari ya Mozambikwi + + + Doora ya Namibiya + + + Naira ya Naigyeriya + + + Faranga ya Rwanda + + + Riya ya Saudi + + + Rupiiha ya Sherisheri + + + Dinari ya Sudani + + + Paundi ya Sudan + + + Paundi ya Senti Herena + + + Leone + + + Eshiringi ya Somalia + + + Dobra ya Sao Tome na Purinsipo + + + Lilangeni + + + Dinari ya Tunisia + + + Eshiringi ya Tanzania + + + Eshiringi ya Uganda + USh + + + Doora ya America + + + Faranga ya CFA BEAC + + + Faranga ya CFA BCEAO + + + Randi ya Sausi Afirika + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Doora ya Zimbabwe + + + + + + Eego:E + Ngaaha/apaana:N + + + + diff --git a/library/Zend/Locale/Data/nyn_UG.xml b/library/Zend/Locale/Data/nyn_UG.xml new file mode 100755 index 000000000..cb1c2703f --- /dev/null +++ b/library/Zend/Locale/Data/nyn_UG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/om.xml b/library/Zend/Locale/Data/om.xml new file mode 100755 index 000000000..948bb7737 --- /dev/null +++ b/library/Zend/Locale/Data/om.xml @@ -0,0 +1,360 @@ + + + + + + + + + + + + Afrikoota + Afaan Sidaamaa + Arabiffaa + Afaan Azerbaijani + Afaan Belarusia + Afaan Bulgariya + Afaan Baangladeshi + Afaan Bosniyaa + Afaan Katalaa + Afaan Czech + Welishiffaa + Afaan Deenmaark + Afaan Jarmanii + Afaan Giriiki + Ingliffa + Afaan Esperantoo + Afaan Ispeen + Afaan Istooniya + Afaan Baskuu + Afaan Persia + Afaan Fiilaandi + Afaan Filippinii + Afaan Faroese + Afaan Faransaayii + Afaan Firisiyaani + Afaan Ayirishii + Scots Gaelic + Afaan Galishii + Afaan Guarani + Afaan Gujarati + Afaan Hebrew + Afaan Hindii + Afaan Croatian + Afaan Hangaari + Interlingua + Afaan Indoneziya + Ayiislandiffaa + Afaan Xaaliyaani + Afaan Japanii + Afaan Java + Afaan Georgian + Afaan Kannada + Afaan Korea + Afaan Laatini + Afaan Liituniyaa + Afaan Lativiyaa + Afaan Macedooniyaa + Malayaalamiffaa + Afaan Maratii + Malaayiffaa + Afaan Maltesii + Afaan Nepalii + Afaan Dachii + Afaan Norwegian + Afaan Norweyii + Afaan Occit + Oromoo + Afaan Punjabii + Afaan Polandii + Afaan Porchugaal + Afaan Portugali (Braazil) + Afaan Protuguese + Afaan Romaniyaa + Afaan Rushiyaa + Afaan Sinhalese + Afaan Slovak + Afaan Islovaniyaa + Afaan Albaniyaa + Afaan Serbiya + Afaan Sudaanii + Afaan Suwidiin + Suwahilii + Afaan Tamilii + Afaan Telugu + Afaan Tayii + Afaan Tigiree + Lammii Turkii + Afaan Kilingon + Afaan Turkii + Afaan Ukreenii + Afaan Urdu + Afaan Uzbek + Afaan Veetinam + Afaan Xhosa + Chinese + Afaan Zuulu + + + + + + Brazil + China + Germany + Itoophiyaa + France + United Kingdom + India + Italy + Japan + Keeniyaa + Russia + United States + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + EEEE, MMMM d, y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + dd/MM + dd MMMM + MM/y + MMMM y + QQQ y + + + + + + + + Ama + Gur + Bit + Elb + Cam + Wax + Ado + Hag + Ful + Onk + Sad + Mud + + + Amajjii + Guraandhala + Bitooteessa + Elba + Caamsa + Waxabajjii + Adooleessa + Hagayya + Fuulbana + Onkololeessa + Sadaasa + Muddee + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Dil + Wix + Qib + Rob + Kam + Jim + San + + + Dilbata + Wiixata + Qibxata + Roobii + Kamiisa + Jimaata + Sanbata + + + + + S + M + T + W + T + F + S + + + + + + + WD + WB + + + + + + KD + KB + + + + + + EEEE, MMMM d, y + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + dd/MM + dd MMMM + MM/y + MMMM y + QQQ y + + + + + + +HH:mm;-HH:mm + GMT{0} + + + + latn + + latn + ethi + + + + + ¤#,##0.00 + + + + + + Brazilian Real + + + Chinese Yuan Renminbi + + + Itoophiyaa Birrii + Br + + + Euro + + + British Pound Sterling + + + Indian Rupee + + + Japanese Yen + + + Russian Ruble + + + US Dollar + + + + + diff --git a/library/Zend/Locale/Data/om_ET.xml b/library/Zend/Locale/Data/om_ET.xml new file mode 100755 index 000000000..2eebe5c76 --- /dev/null +++ b/library/Zend/Locale/Data/om_ET.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/om_KE.xml b/library/Zend/Locale/Data/om_KE.xml new file mode 100755 index 000000000..939f15f0a --- /dev/null +++ b/library/Zend/Locale/Data/om_KE.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Ksh + + + + diff --git a/library/Zend/Locale/Data/or.xml b/library/Zend/Locale/Data/or.xml new file mode 100755 index 000000000..7103cad58 --- /dev/null +++ b/library/Zend/Locale/Data/or.xml @@ -0,0 +1,1101 @@ + + + + + + + + + + + + ଅଫାର୍ + ଆବ୍ଖାଜିଆନ୍ + ଆଚାଇନୀଜ୍ + ଆକୋଲି + ଆଦାଙ୍ଗେମ୍ + ଅଦ୍ୟଘେ + ଅବେସ୍ତନ + ଆଫ୍ରିକାନସ୍ + ଆଫ୍ରିହିଲି + ଆଇନୁ + ଅକନ୍ + ଆକାଡିଆନ୍ + ଆଲେଇଟୁ + ଦକ୍ଷିଣ ଆଲ୍ଟାଇ + ଆମହାରକି + ଆର୍ଗୋନୀ + ପୁରୁଣା ଇଁରାଜୀ + ଅଁଗୀକା + ଆରବିକ୍ + ଆରାମାଇକ୍ + ଆରାଉକାନିଆନ୍ + ଆରାପାହୋ + ଆରୱକ + ଆସାମୀ + ଆଷ୍ଟୁରିଆନ୍ + ଆଭାରିକ୍ + ଆୱାଧି + ଆୟମାରା + ଆଜେରବାଇଜାନି + ବଶଖିର୍ + ବାଲୁଚି + ବାଲିନୀଜ୍ + ବାସା + ବେଲାରୁଷିଆନ୍ + ବେଜା + ବେମ୍ବା + ବୁଲଗେରିଆନ୍ + ଭୋଜପୁରୀ + ବିସଲାମା + ବିକୋଲ୍ + ବିନି + ବିକ୍ସିକା + ବାମ୍ବାରା + ବଙ୍ଗାଳୀ + ତିବେତାନ୍ + ବ୍ରେଟନ୍ + ବ୍ରାଜ୍ + କାଟଲାନ୍ + ବୁରିଆଟ୍ + ବୁଗୀନୀଜ୍ + ବ୍ଲିନ୍ + କାଟାଲାନ୍ + କାଡୋ + କାରିବ୍ + ଆତ୍ସମ୍ + ଚେଚନ୍ + ସୀବୁଆନୋ + ଚାମୋରୋ + ଚିବ୍ଚା + ଛଗତାଇ + ଚୁକୀସେ + ମାରୀ + ଚିନୁକ୍ ଜାରଗାଁନ୍ + ଚୋଟୱା + ଚିପେୱାନ୍ + ଚେରୋକୀ + ଚେଚେନା + କୋର୍ସିକାନ୍ + କପ୍ଟିକ୍ + କ୍ରୀ + କ୍ରୀମିନ୍ ତୁର୍କୀସ୍ + ଚେକ୍ + କାଶୁବିଆନ୍ + ଚର୍ଚ୍ଚ ସ୍ଲାଭିକ୍ + ଚୁଭାଶ୍ + ୱେଲ୍ସ + ଡାନ୍ନିସ୍ + ଡାକୋଟା + ଡାରାଗ୍ୱା + ଜର୍ମାନ୍ + ଅଷ୍ଟ୍ରିଆନ୍ ଜର୍ମାନ + ସ୍ବିସ୍ ହାଇ ଜର୍ମାନ୍ + ଡେଲାୱେର୍ + ସ୍ଲେଭ୍ + ଡୋଗ୍ରିବ୍ + ଦିଙ୍କା + ଡୋଗ୍ରୀ + ନିଚଳା ସର୍ବିଆନ୍ + ଡୁଆନା + ମଧ୍ୟ ପର୍ତ୍ତୁଗାଲୀ + ଡିଭେହୀ + ଡୁଆଲା + ଭୂଟାନୀ + ଇୱେ + ଏଫିକ୍ + ପ୍ରାଚୀନ୍ ମିଶିରି + ଏକାଜୁକ୍ + ଗ୍ରୀକ୍ + ଏଲାମାଇଟ୍ + ଇଂରାଜୀ + ଅଷ୍ଟ୍ରେଲିଆନ୍ ଇଁରାଜୀ + କାନାଡିଆନ୍ ଇଁରାଜୀ + ବ୍ରିଟିଶ୍ ଇଁରାଜୀ + ୟୁ.ଏସ୍. ଇଁରାଜୀ + ମଧ୍ୟ ଇଁରାଜୀ + ଏସ୍ପାରେଣ୍ଟୋ + ସ୍ପାନିସ୍ + ଲାଟିନ୍ ଆମେରିକାନ୍ ସ୍ପାନିଶ୍ + ଲେବେରିଆନ୍ ସ୍ପାନିଶ୍ + ଏସ୍ତୋନିଆନ୍ + ବାସ୍କ୍ୱି + ଇୱୋଣ୍ଡୋ + ପର୍ସିଆନ୍ + ଫାଙ୍ଗ + ଫାଣ୍ଟି + ଫୁଲାହ + ଫିନ୍ନିସ୍ + ଫିଲିପିନୋ + ଫିଜି + ଫାରୋଏସେ + ଫନ୍ + ଫ୍ରେଞ୍ଚ + କାନାଡିଆନ୍ ଫ୍ରେଞ୍ଚ + ସ୍ବିସ୍ ଫ୍ରେଞ୍ଚ୍ + ମଧ୍ୟ ଫ୍ରେଞ୍ଚ + ପୁରୁଣା ଫ୍ରେଞ୍ଚ + ଉତ୍ତର ଫ୍ରିସିୟାନ୍ + ପୂର୍ବ ଫ୍ରିସିୟାନ୍ + ଫ୍ରିୟୁଲୀୟାନ୍ + ପଶ୍ଚିମ ଫ୍ରିସିୟନ୍ + ଇରିସ୍ + ଗା + ଗାୟୋ + ଗବାୟା + ସ୍କଟିସ୍ ଗାଏଲିକ୍ + ଗୀଜ୍ + ଜିବ୍ରାଟୀଜ୍ + ଗାଲସିଆନ୍ + ମିଡିଲ୍ ହାଇ ଜର୍ମାନ୍ + ଗୁଆରାନୀ + ପୁରୁଣା ହାଇ ଜର୍ମାନ୍ + ଗୋଣ୍ଡି + ଗୋରୋଣ୍ଟାଲୋ + ଗୋଥିକ୍ + ଗ୍ରେବୋ + ପ୍ରାଚୀନ୍ ୟୁନାନୀ + ସ୍ବିସ୍ ଜର୍ମାନ୍ + ଗୁଜୁରାଟୀ + ମାଁକ୍ସ + ସ୍ବିଚ୍ ଇନ୍ + ହୌସା + ହାଇଡା + ହାୱାଇନ୍ + ହେବ୍ର୍ୟୁ + ହିନ୍ଦୀ + ହିଲିଗୈନନ୍ + ହିତୀତେ + ହଁଙ୍ଗ + ହିରି ମୋଟୁ + କ୍ରୋଆଟିଆନ୍ + ଉପର ସର୍ବିଆନ୍ + ହୈତାୟିନ୍ + ହଙ୍ଗେରିଆନ୍ + ହୁପା + ଆର୍ମେନିଆନ୍ + ହେରେରୋ + ଇର୍ଣ୍ଟଲିଙ୍ଗୁଆ + ଇବାନ୍ + ଇଣ୍ଡୋନେସିଆନ୍ + ଇର୍ଣ୍ଟରଲିଙ୍ଗୁଇ + ଇଗ୍ବୋ + ସିଚୁଆନ୍ ୟୀ + ଇନୁପିୟାକ୍ + ଇଲୋକୋ + ଇଁଙ୍ଗୁଶ୍ + ଇଡୋ + ଆଇସଲାଣ୍ଡିକ୍ + ଇଟାଲିଆନ୍ + ଇନକୀଟୁତ୍ + ଜାପାନୀଜ୍ + ଲୋଜବାନ୍ + ଜୁଡେଓ-ପର୍ସିଆନ୍ + ଜୁଡେଓ-ଆରବୀକ୍ + ଜାଭାନୀଜ୍ + ଜର୍ଜିଆନ୍ + କାରା-କଲ୍ପକ୍ + କବାଇଲ୍ + କଚିନ୍ + ଜ୍ଜୁ + କମ୍ବା + କାୱି + କାବାର୍ଡିଆନ୍ + ତ୍ୟାପ୍ + କୋରୋ + କଙ୍ଗୋ + ଖାସୀ + ଖୋତାନୀଜ୍ + କୀକୁୟୁ + କ୍ୱାନ୍ୟାମ୍ + କାଜାକ୍ + ଗ୍ରୀନଲାଣ୍ଡିକ୍ + ଖ୍ମେର୍ + କିମ୍ବୁଣ୍ଡୁ + କନ୍ନଡ + କୋରିଆନ୍ + କୋନକାନୀ + କୋସରୈନ୍ + କୈପେଲେ + କନୁରୀ + କରାଚୟ-ବଲ୍କାର + କାରେଲିୟାନ୍ + କୁରୁଖ + କାଶ୍ମିରୀ + କୁର୍ଦ୍ଦିଶ୍ + କୁମୀକ୍ + କୁତେନାଉ + କୋମି + କୋର୍ନିସ୍ + କିରଗିଜ୍ + ଲାଟିନ୍ + ଲାଦିନୋ + ଲାହାଣ୍ଡା + ଲାମ୍ବା + ଲକ୍ସେମବର୍ଗିସ୍ + ଲେଜଗିୟାନ୍ + ଗନ୍ଦା + ଲିମ୍ବୁର୍ଗିସ୍ + ଲିଙ୍ଗାଲା + ଲାଓ + ମଙ୍ଗୋ + ଲୋଜି + ଲିଥୁଆନିଆନ୍ + ଲ୍ୟୁବା-କାଟାଙ୍ଗା + ଲୁବା-ଲୁଲୁଆ + ଲୁଇସେନୋ + ଲୁଣ୍ଡା + ଲୁଓ + ଲୁସାଉ + ଲାଟଭିଆନ୍ + ମାଦୁରୀସ୍ + ମାଗାହୀ + ମୈଥିଳୀ + ମକାସର୍ + ମାଣ୍ଡିଙ୍ଗୋ + ମାସାଇ + ମୋକ୍ଷ + ମନ୍ଦାର + ମେଣ୍ଡେ + ମାଲାଗାସୀ + ମଧ୍ୟ ଇରିଶ୍ + ମାର୍ଶାଲୀଜ୍ + ମାଓରୀ + ମିକମୌକ୍ + ମିନାଙ୍ଗାବାଉ + ମାକଡୋନିଆନ୍ + ମାଲାୟଲମ୍ + ମଙ୍ଗୋଲିଆନ୍ + ମାଞ୍ଚୁ + ମଣିପୁରୀ + ମୋହୌକ + ମୋସି + ମରାଠୀ + ମାଲୟ + ମାଲଟୀଜ୍ + ବିବିଧ ଭାଷାମାନ + କ୍ରୀକ୍ + ମିରାଣ୍ଡିଜ୍ + ମାରୱାରୀ + ବର୍ମୀଜ୍ + ଏର୍ଜୟା + ନାଉରୁ + ନୀପୋଲିଟାନ୍ + ନରୱେଜିଆନ୍ ବୋକମଲ୍ + ଉତ୍ତର ନେଡବେଲେ + ଲୋ ଜର୍ମାନ୍ + ନେପାଳୀ + ନେୱାରୀ + ଡୋଙ୍ଗା + ନୀୟାସ୍ + ନିୟୁଆନ୍ + ଡଚ୍ + ଫ୍ଲେମିଶ୍ + ନରୱେଜିଆନ୍ ନିୟୋର୍ସ୍କ + ନରୱେଜିଆନ୍ + ନୋଗାଇ + ପୁରୁଣା ନର୍ସ + ଏନ୍କୋ + ଦକ୍ଷିଣ ନେଡବେଲେ + ଉତ୍ତରୀ ସୋଥୋ + ନାଭାଜୋ + ପାରମ୍ପରିକ ନେୱାରୀ + ନିୟାଞ୍ଜ + ନ୍ୟାମୱେଜୀ + ନ୍ୟାନକୋଲ୍ + ନ୍ୟାରୋ + ଞ୍ଜିମା + ଓସିଟାନ୍ + ଓଜିୱା + ଓରୋମୋ + ଓଡ଼ିଆ + ଓସେଟିକ୍ + ୱୌସେଜ୍ + ଓଟ୍ଟୋମନ୍ ତୁର୍କିସ୍ + ପଞ୍ଜାବୀ + ପାଙ୍ଗାସିନିଆନ୍ + ପାହ୍ଲାଭି + ପାମ୍ପାଙ୍ଗା + ପାପିୟାମିଣ୍ଟୋ + ପାଲାଉଆନ୍ + ପୁରୁଣା ପର୍ସିଆନ୍ + ଫୋନେସିଆନ୍ + ପାଲି + ପୋଲିଶ୍ + ପୋହପିଏନ୍ + ପୁରୁଣା ପ୍ରେଭେନେସିଆଲ୍ + ପାସ୍ତୋ + ପର୍ତ୍ତୁଗ୍ରୀଜ୍ + ବ୍ରାଜିଲିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ + ଲେବେରିଆନ୍ ପର୍ତ୍ତୁଗୀଜ୍ + କ୍ୱେଚୁଆ + ରାଜସ୍ଥାନୀ + ରାପାନୁଇ + ରାରୋତୋଙ୍ଗନ୍ + ରେହେଟୋ-ରୋମାନ୍ସ + ରୁଣ୍ଡି + ରୋମାନିଆନ୍ + ମୋଲଡୋଭିଆନ୍ + ରୋମାନି + ମୂଳ + ରଷିଆନ୍ + ଆରୋମାନିଆନ୍ + କିନ୍ୟାରୱାଣ୍ଡା + ସଂସ୍କୃତ + ସଣ୍ଡାୱେ + ୟାକୁଟ୍ + ସାମୌରିଟନ୍ ଆରମାଇକ୍ + ସାସାକ୍ + ସାନ୍ତାଳି + ସର୍ଦିନିଆନ୍ + ସିଶିଲିଆନ୍ + ସ୍କଟସ୍ + ସିନ୍ଧୀ + ଉତ୍ତର ସାମି + ସେଲ୍କପ୍ + ସାଙ୍ଗୋ + ପୁରୁଣା ଇରିଶ୍ + ସର୍ବୋ-କ୍ରୋଆଟିଆନ୍ + ଶାନ୍ + ସିଂହଳ + ସିଦାମୋ + ସ୍ଲୋଭାକ୍ + ସ୍ଲୋଭେନିଆନ୍ + ସାମୋଆନ୍ + ଦକ୍ଷିଣ ସାମି + ଲୁଲେ ସାମି + ଇନାରୀ ସାମି + ସ୍କୋଲ୍ଟ ସାମୀ + ଶୋନା + ସୋନିଙ୍କେ + ସୋମାଲିଆ + ସୋଗଡିଏନ୍ + ଆଲବାନିଆନ୍ + ସର୍ବିଆନ୍ + ଶାରାନା ଟୋଙ୍ଗୋ + ଶେରେର୍ + ସ୍ବାତୀ + ସେସୋଥୋ + ସୁଦାନୀଜ୍ + ସୁକୁମା + ଶୁଶୁ + ସୁମେରିଆନ୍ + ସ୍ୱେଡିସ୍ + ସ୍ୱାହିଲ୍ + କ୍ଲାସିକାଲ୍ ସିରିକ୍ + ସିରିକ୍ + ତାମିଲ୍ + ତେଲୁଗୁ + ତିମନେ + ତେରେନୋ + ତେତୁମ୍ + ତାଜିକ୍ + ଥାଇ + ଟ୍ରିଗିନିଆ + ଟାଇଗ୍ରେ + ତୀଭ୍ + ତୁର୍କମେନ୍ + ଟୋକେଲାଉ + ଟାଗାଲଗ୍ + କ୍ଲିଙ୍ଗନ୍ + ତ୍ଲିଙ୍ଗିଟ୍ + ତାମାଶେକ୍ + ସେସ୍ବାନା + ଟୋଙ୍ଗା + ନ୍ୟାସା ଟୋଙ୍ଗୋ + ଟୋକ୍ ପିସିନ୍ + ତୁର୍କିସ୍ + ସୋଂଗା + ତିସିମିସିଆନ୍ + ତାତାର୍ + ଟୁମ୍ବୁକା + ତୁଭାଲୁ + ତ୍ୱି + ତାହିତିଆନ୍ + ତୁଭିନିଆନ୍ + ଉଦମୂର୍ତ୍ତ + ୟୁଘୁର୍ + ୟୁଗୋରଟିକ୍ + ୟୁକ୍ରାନିଆନ୍ + ଉମ୍ବୁଣ୍ଡୁ + ଅଜଣା ଏବଂ ଅବୈଧ ଭାଷା + ଉର୍ଦ୍ଦୁ + ଉଜବେକ୍ + ଭାଇ + ଭେଣ୍ଡା + ଭିଏତନାମିଜ୍ + ବୋଲାପୁକ + ଭୋଟିକ୍ + ୱାଲୁନ୍ + ୱାଲମୋ + ୱାରୈ + ୱାସୋ + ୱୋଲଫ୍ + କାଲ୍ମୀକ୍ + ଖୋସା + ୟାଓ + ୟାପୀସ୍ + ୟିଡିସ୍ + ୟୋରୁବା + ଜୁଆଙ୍ଗ + ଜାପୋଟେକ୍ + ବ୍ଲିସିମ୍ବଲସ୍ + ଜେନାଗା + ଚାଇନୀଜ୍ + ସରଳିକରଣ ଚାଇନୀଜ୍ + ପାରମ୍ପରିକ ଚାଇନୀଜ୍ + ଜୁଲୁ + ଜୁନୀ + କୌଣସି ଲିଙ୍ଗୁଇଷ୍ଟ ସାମଗ୍ରୀ ନାହିଁ + ଜାଜା + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ବିଶ୍ବ + ଆଫ୍ରିକା + ଉତ୍ତର ଆମେରିକା + ଦକ୍ଷିଣ ଆମେରିକା + ଓସୋନିଆନ୍ + ପଶ୍ଚିମ ଆଫ୍ରିକା + ମଧ୍ୟ ଆମେରିକା + ପୂର୍ବ ଆଫ୍ରିକା + ଉତ୍ତର ଆଫ୍ରିକା + ମଧ୍ୟ ଆଫ୍ରିକା + ଦକ୍ଷିଣସ୍ଥ ଆଫ୍ରିକା + ଆମେରିକାସ୍ + ଉତ୍ତରସ୍ଥ ଆମେରିକା + କାରିବିଆନ୍ + ପୂର୍ବ ଏସିଆ + ଦକ୍ଷିଣ ଏସିଆ + ଦକ୍ଷିଣ-ପୂର୍ବ ଏସିଆ + ଦକ୍ଷିଣ ୟୁରୋପ୍ + ଅଷ୍ଟ୍ରେଲିଆ ଏବଂ ନ୍ୟୁଜିଲ୍ୟାଣ୍ଡ + ମେଲାନେସିଆ + ମାଇକ୍ରୋନେସିଆନ୍ ଅଞ୍ଚଳ + ପଲିନେସିଆ + ଏସିଆ + ମଧ୍ୟ ଏସିଆ + ପଶ୍ଚିମ ଏସିଆ + ୟୁରୋପ୍ + ପୂର୍ବ ୟୁରୋପ୍ + ଉତ୍ତର ୟୁରୋପ୍ + ପଶ୍ଚିମ ୟୁରୋପ୍ + ଲାଟିନ୍ ଆମେରିକା ଏବଂ କାରିବିଆନ୍ + ଆଣ୍ଡୋରା + ସଂଯୁକ୍ତ ଆରବ ଏମିରେଟସ୍ + ଆଫାଗାନିସ୍ତାନ୍ + ଆଣ୍ଟିଗୁଆ ଏବଂ ବାରବୁଦା + ଆଙ୍ଗୁଇଲ୍ଲା + ଆଲବାନିଆ + ଆର୍ମେନିଆ + ନେଦରଲ୍ୟାଣ୍ଡସ୍ ଆଣ୍ଟିଲିଜ୍ + ଆଙ୍ଗୋଲା + ଆର୍ଣ୍ଟକଟିକା + ଆର୍ଜେଣ୍ଟିନା + ଆମେରିକାନ୍ ସାମୋଆ + ଅଷ୍ଟ୍ରିଆ + ଅଷ୍ଟ୍ରେଲିଆ + ଆରୁବା + ଆଲାଣ୍ଡ ଆଇସଲ୍ୟାଣ୍ଡ + ଆଜେରବାଇଜାନ୍ + ବୋସନିଆ ଏବଂ ହର୍ଜଗୋଭିନା + ବାରବାଡୋସ୍ + ବାଙ୍ଗଲାଦେଶ୍ + ବେଲଜିୟମ୍ + ବୁର୍କିନୋ ଫାସୋ + ବୁଲଗେରିଆ + ବାହାରିନ୍ + ବୁରୁନ୍ଦି + ବେନିନ୍ + ସେଣ୍ଟ ବାର୍ଥେଲେମି + ବରମୁଡା + ବ୍ରୁନେଇ + ବୋଲଭିଆ + ବ୍ରାଜିଲ୍ + ବାହାମାସ୍ + ଭୁଟାନ୍ + ବୌଭେଟ୍ ଆଇସଲ୍ୟାଣ୍ଡ + ବୋଟସ୍ବାନ୍ + ବେଲାରୁଷ୍ + ବେଲିଜ୍ + କାନାଡା + କୋକୋସ୍ ଆଇସଲ୍ୟାଣ୍ଡ + କଙ୍ଗୋ-କିନସାସା + ମଧ୍ୟ ଆଫ୍ରିକୀୟ ଗଣତନ୍ତ୍ର + କଙ୍ଗୋ-ବ୍ରାଜିଭିଲ୍ଲେ + ସ୍ବିଜରଲ୍ୟାଣ୍ଡ + ଆଇବରୀ କୋଷ୍ଟ + କୁକ୍ ଆଇସଲ୍ୟାଣ୍ଡ + ଚିଲ୍ଲୀ + କାମେରୁନ୍ + ଚିନ୍ + କୋଲମ୍ବିଆ + କୋଷ୍ଟା ରିକା + କ୍ୱିବା + କେପ୍ ଭର୍ଦେ + ଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ + ସାଇପ୍ରସ୍ + ଚେକ୍ ସାଧାରଣତନ୍ତ୍ର + ଜର୍ମାନୀ + ଡିବୌଟି + ଡେନମାର୍କ + ଡୋମିନାକା + ଡୋମିନକାନ୍ ପ୍ରଜାତନ୍ତ୍ର + ଆଲଜେରିଆ + ଇକ୍ୱାଡୋର୍ + ଏସ୍ତୋନିଆ + ଇଜିପ୍ଟ + ପଶ୍ଚିମ ସାହାରା + ଇରିଟ୍ରିୟା + ସ୍ପେନ୍ + ଇଥିଓପିଆ + ୟୁରୋପିଆନ୍ ୟୁନିଅନ୍ + ଫିନଲ୍ୟାଣ୍ଡ + ଫିଜି + ଫଲ୍କଲ୍ୟାଣ୍ଡ ଦ୍ବୀପପୁଞ୍ଜ + ମାଇକ୍ରୋନେସିଆ + ଫାରୋଇ ଦ୍ବୀପପୁଞ୍ଜ + ଫ୍ରାନ୍ସ + ଗାବୋନ୍ + ବ୍ରିଟେନ୍ + ଗ୍ରେନାଡା + ଜର୍ଜିଆ + ଫ୍ରେଞ୍ଚ ଗୁଇନା + ଗୁଏରନେସି + ଘାନା + ଜିବ୍ରାଲ୍ଟର୍ + ଗ୍ରୀନଲ୍ୟାଣ୍ଡ + ଗାମ୍ବିଆ + ଗୁଏନେଆ + ଗୌଡେଲୌପେ + ଇକ୍ବାଟେରିଆଲ୍ ଗୁଇନିଆ + ଗ୍ରୀସ୍ + ଦକ୍ଷିଣ ଜର୍ଜିଆ ଏବଂ ଦକ୍ଷିଣ ସାଣ୍ଡୱିଚ୍ ଦ୍ବୀପପୁଞ୍ଜ + ଗୁଏତମାଲା + ଗୁଆମ୍ + ଗୁଇନିଆ-ବିସାଉ + ଗୁଇନା + ହଂକଂ ବିଶେଷ ପ୍ରଶାସନିକ କ୍ଷେତ୍ର ଚୀନ୍ + ହାର୍ଡ ଦ୍ବୀପପୁଞ୍ଜ ଏବଂ ମ୍ୟାକଡୋନାଲ୍ ଦ୍ବୀପପୁଞ୍ଜ + ହୋଣ୍ଡାରୁସ୍ + କ୍ରୋଆଟିଆ + ହାଇତି + ହଙ୍ଗେରୀ + ଇଣ୍ଡୋନେସିଆ + ଆୟରଲ୍ୟାଣ୍ଡ + ଇସ୍ରାଏଲ୍ + ଆଇଲ୍ ଅଫ୍ ମୈନ୍ + ଭାରତ + ବ୍ରିଟିଶ୍ ଭାରତୀୟ ସାମୁଦ୍ରିକ କ୍ଷେତ୍ର + ଇରାକ୍ + ଇରାନ୍ + ଆଇସଲ୍ୟାଣ୍ଡ + ଇଟାଲୀ + ଜର୍ସି + ଜାମାଇକା + ଜୋର୍ଡାନ୍ + ଜାପାନ୍ + କେନିୟା + କିର୍ଗିଜିସ୍ଥାନ + କାମ୍ବୋଡିଆ + କିରିବାଟୀ + କାମୋରସ୍ + ସେଣ୍ଟ କିଟସ୍ ଏଣ୍ଡ ନେଭିସ୍ + ଉତ୍ତର କୋରିଆ + ଦକ୍ଷିଣ କୋରିଆ + କୁଏତ୍ + କେମ୍ୟାନ୍ ଦ୍ବୀପପୁଞ୍ଜ + କାଜାକାସ୍ଥାନ୍ + ଲାଓସ୍ + ଲେବାନନ୍ + ସେଣ୍ଟ ଲୁସିଆ + ଲିଚେସ୍ତିଆନାନ୍ + ଶ୍ରୀଲଙ୍କା + ଲିବେରିଆ + ଲେସୋଥୋ + ଲିଥାଆନିଆ + ଲକ୍ସେମବର୍ଗ + ଲାଟଭିଆ + ଲିବିଆ + ମୋରୋକ୍କୋ + ମୋନାକୋ + ମାଲଡୋଭା + ମଣ୍ଟେଗ୍ରୋ + ସେଣ୍ଟ ମାର୍ଟିନ୍ + ମାଡାଗାସ୍କର୍ + ମାର୍ଶଲ୍ ଦ୍ବୀପପୁଞ୍ଜ + ମାସେଡୋନିଆ + ମାଳୀ + ମିୟାମାର୍ + ମଙ୍ଗୋଲିଆ + ମାକାଉ SAR ଚିନ୍ + ଉତ୍ତର ମାରିଆନା ଦ୍ବୀପପୁଞ୍ଜ + ମାର୍ଟିନିକ୍ୟୁ + ମାଉରିଟାନିଆ + ମଣ୍ଟେସେରାଟ୍ + ମାଲ୍ଟା + ମୌରିସସ୍ + ମାଳଦ୍ବୀପ + ମାଲୱି + ମେକ୍ସିକୋ + ମାଲେସିଆ + ମୋଜାମ୍ବିକ୍ୟୁ + ନାମ୍ବିଆ + ନୂତନ କାଲେଡୋନିଆ + ନାଇଜର୍ + ନରଫ୍ଲକ୍ ଦ୍ବୀପ + ନାଇଜେରିଆ + ନିକାରାଗୁଆ + ନେଦରଲ୍ୟାଣ୍ଡ + ନରୱେ + ନେପାଳ + ନାଉରୁ + ନିଉ + ନ୍ୟୁଜିଲାଣ୍ଡ + ଓମାନ୍ + ପାନାମା + ପେରୁ + ଫ୍ରେଞ୍ଚ ପଲିନେସିଆ + ପପୁଆ ନ୍ୟୁ ଗୁଏନିଆ + ଫିଲିପାଇନସ୍ + ପାକିସ୍ତାନ + ପୋଲାଣ୍ଡ + ସେଣ୍ଟ ପିଏରେ ଏବଂ ମିକ୍ବାଲୋନ୍ + ପିଟକାଇରିନ୍ + ପୁଏର୍ତ୍ତୋ ରିକୋ + ପାଲେସ୍ତେନିଆ + ପର୍ତ୍ତୁଗାଲ୍ + ପାଲାଉ + ପାରାଗୁଏ + କତାର୍ + ଆଉଟଲେଇଂ ଓସେନିଆ + ରିୟୁନିଅନ୍ + ରୋମାନିଆ + ସର୍ବିଆ + ରୁଷିଆ + ରାୱାଣ୍ଡା + ସାଉଦି ଆରବିଆ + ସୋଲୋମନ୍ ଦ୍ବୀପପୁଞ୍ଜ + ସେଚେଲସ୍ + ସୁଦାନ୍ + ସ୍ୱେଡେନ୍ + ସିଙ୍ଗାପୁର୍ + ସେଣ୍ଟ ହେଲେନା + ସ୍ଲୋଭେନିଆ + ସାଲ୍ଭାର୍ଡ ଏବଂ ଜାନ୍ ମାୟୋନ୍ + ସ୍ଲୋଭାକିଆ + ସିଓରା ଲିଓନ୍ + ସାନ୍ ମାରିନୋ + ସେନେଗାଲ୍ + ସୋମାଲିଆ + ସୁରିନାମ + ଦକ୍ଷିନ ସୁଦାନ + ସାଓ ଟୋମେ ଏବଂ ପ୍ରିନସିପି + ଏଲ୍ ସାଲଭାଡୋର୍ + ସିରିଆ + ସ୍ବାଜିଲାଣ୍ଡ + ତୁର୍କସ୍ ଏବଂ ସାଇକସ୍ ଦ୍ବୀପପୁଞ୍ଜ + ଚାଦ୍ + ଫରାସୀ ଦକ୍ଷିଣ କ୍ଷେତ୍ର + ଟୋଗୋ + ଥାଇଲାଣ୍ଡ + ତାଜିକିସ୍ଥାନ୍ + ଟୋକେଲାଉ + ପୁର୍ବ ତିମୋର୍ + ତୁର୍କମେନିସ୍ତାନ୍ + ତୁନିସିଆ + ଟୋଙ୍ଗା + ତୁର୍କୀ + ତ୍ରିନିଦାଦ୍ ଏବଂ ଟୋବାଗୋ + ଟୁଭାଲୁ + ତାଇୱାନ୍ + ତାଞ୍ଜାନିଆ + ୟୁକ୍ରାଇନ୍ + ଉଗାଣ୍ଡା + ୟୁନାଇଟେଡ୍ ଷ୍ଟେଟସ୍ ମାଇନର୍ ଆଉଟଲେଇଂ ଦ୍ବୀପପୁଞ୍ଜ + ଯୁକ୍ତ ରାଷ୍ଟ୍ର ଆମେରିକା + ଉରୁଗୁଏ + ଉଜବେକିସ୍ଥାନ୍ + ଭାଟିକାନ୍ + ସେଣ୍ଟ ଭିନସେଣ୍ଟ ଏବଂ ଦି ଗ୍ରେନାଡିସ୍ + ଭେନଜୁଏଲା + ବ୍ରିଟିଶ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜ + ୟୁଏସ୍ ଭର୍ଜିନ୍ ଦ୍ବୀପପୁଞ୍ଜ + ଭିଏତନାମ୍ + ଭାନୁଆତୁ + ୱାଲିସ୍ ଏବଂ ଫୁତୁନା + ସାମୋଆ + ୟେମେନ୍ + ମାୟୋଟେ + ଦକ୍ଷିଣ ଆଫ୍ରିକା + ଜାମ୍ବିଆ + ଜିମ୍ବାୱେ + ଅଜଣା କିମ୍ବା ଅବୈଧ ପ୍ରଦେଶ + + + + [\u0B3C ଅ ଆ ଇ ଈ ଉ ଊ ଋ ଏ ଐ ଓ ଔ \u0B01 ଂ ଃ କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ {ଡ\u0B3C} ଢ {ଢ\u0B3C} ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ୟ ର ଲ ଳ ଵ ୱ ଶ ଷ ସ ହ ା \u0B3F ୀ \u0B41 \u0B42 \u0B43 େ ୈ ୋ ୌ \u0B4D] + [\u200C\u200D] + [ଅ ଆ ଇ ଈ ଉ ଊ ଋ ଏ ଐ ଓ ଔ କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ ଢ ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ର ଲ ଳ ଶ ଷ ସ ହ {କ\u0B4Dଷ}] + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d-M-y GGGGG + + + + + + dd-MM + MMMM d + MM-y G + MMMM y G + QQQ y G + + + + + + + + ଜାନୁଆରୀ + ଫେବ୍ରୁୟାରୀ + ମାର୍ଚ୍ଚ + ଅପ୍ରେଲ + ମେ + ଜୁନ + ଜୁଲାଇ + ଅଗଷ୍ଟ + ସେପ୍ଟେମ୍ବର + ଅକ୍ଟୋବର + ନଭେମ୍ବର + ଡିସେମ୍ବର + + + + + ଜା + ଫେ + ମା + + ମେ + ଜୁ + ଜୁ + + ସେ + + + ଡି + + + + + + + ରବି + ସୋମ + ମଙ୍ଗଳ + ବୁଧ + ଗୁରୁ + ଶୁକ୍ର + ଶନି + + + ରବିବାର + ସୋମବାର + ମଙ୍ଗଳବାର + ବୁଧବାର + ଗୁରୁବାର + ଶୁକ୍ରବାର + ଶନିବାର + + + + + + ସୋ + + ବୁ + ଗୁ + ଶୁ + + + + + + + + am + pm + + + am + pm + + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d-M-yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + dd-MM + MMMM d + MM-y + MMMM y + QQQ y + + + + + + + + ଖ୍ରୀଷ୍ଟମାସ ଆଇଲ୍ୟାଣ୍ଡ ସମୟ + + + + + IST + + + + + + latn + + orya + + + . + , + + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + ଟଙକା + + + + + + ହଁ + ନା + + + + diff --git a/library/Zend/Locale/Data/or_IN.xml b/library/Zend/Locale/Data/or_IN.xml new file mode 100755 index 000000000..99f5356af --- /dev/null +++ b/library/Zend/Locale/Data/or_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ordinals.xml b/library/Zend/Locale/Data/ordinals.xml new file mode 100755 index 000000000..9b5894d31 --- /dev/null +++ b/library/Zend/Locale/Data/ordinals.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + @integer 0~15, 100, 1000, 10000, 100000, 1000000, … + + + + + + n % 10 = 1,2 and n % 100 != 11,12 @integer 1, 2, 21, 22, 31, 32, 41, 42, 51, 52, 61, 62, 71, 72, 81, 82, 101, 1001, … + @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … + + + n = 1 @integer 1 + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … + + + n = 1,5 @integer 1, 5 + @integer 0, 2~4, 6~17, 100, 1000, 10000, 100000, 1000000, … + + + n = 1..4 @integer 1~4 + @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + + + + + + n % 10 = 6 or n % 10 = 9 or n % 10 = 0 and n != 0 @integer 6, 9, 10, 16, 19, 20, 26, 29, 30, 36, 39, 40, 100, 1000, 10000, 100000, 1000000, … + @integer 0~5, 7, 8, 11~15, 17, 18, 21, 101, 1001, … + + + n = 11,8,80,800 @integer 8, 11, 80, 800 + @integer 0~7, 9, 10, 12~17, 100, 1000, 10000, 100000, 1000000, … + + + + + + i = 1 @integer 1 + i = 0 or i % 100 = 2..20,40,60,80 @integer 0, 2~16, 102, 1002, … + @integer 21~36, 100, 1000, 10000, 100000, 1000000, … + + + n = 1 @integer 1 + n % 10 = 4 and n % 100 != 14 @integer 4, 24, 34, 44, 54, 64, 74, 84, 104, 1004, … + @integer 0, 2, 3, 5~17, 100, 1000, 10000, 100000, 1000000, … + + + + + + n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … + n % 10 = 2 and n % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 102, 1002, … + n % 10 = 3 and n % 100 != 13 @integer 3, 23, 33, 43, 53, 63, 73, 83, 103, 1003, … + @integer 0, 4~18, 100, 1000, 10000, 100000, 1000000, … + + + n = 1 @integer 1 + n = 2,3 @integer 2, 3 + n = 4 @integer 4 + @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + + + n = 1,3 @integer 1, 3 + n = 2 @integer 2 + n = 4 @integer 4 + @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + + + + + + i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … + i % 10 = 2 and i % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 102, 1002, … + i % 10 = 7,8 and i % 100 != 17,18 @integer 7, 8, 27, 28, 37, 38, 47, 48, 57, 58, 67, 68, 77, 78, 87, 88, 107, 1007, … + @integer 0, 3~6, 9~19, 100, 1000, 10000, 100000, 1000000, … + + + + + + i % 10 = 1,2,5,7,8 or i % 100 = 20,50,70,80 @integer 1, 2, 5, 7, 8, 11, 12, 15, 17, 18, 20~22, 25, 101, 1001, … + i % 10 = 3,4 or i % 1000 = 100,200,300,400,500,600,700,800,900 @integer 3, 4, 13, 14, 23, 24, 33, 34, 43, 44, 53, 54, 63, 64, 73, 74, 100, 1003, … + i = 0 or i % 10 = 6 or i % 100 = 40,60,90 @integer 0, 6, 16, 26, 36, 40, 46, 56, 106, 1006, … + @integer 9, 10, 19, 29, 30, 39, 49, 59, 69, 79, 109, 1000, 10000, 100000, 1000000, … + + + + + + n = 1 @integer 1 + n = 2,3 @integer 2, 3 + n = 4 @integer 4 + n = 6 @integer 6 + @integer 0, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … + + + n = 1,5,7,8,9,10 @integer 1, 5, 7~10 + n = 2,3 @integer 2, 3 + n = 4 @integer 4 + n = 6 @integer 6 + @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … + + + + + + n = 0,7,8,9 @integer 0, 7~9 + n = 1 @integer 1 + n = 2 @integer 2 + n = 3,4 @integer 3, 4 + n = 5,6 @integer 5, 6 + @integer 10~25, 100, 1000, 10000, 100000, 1000000, … + + + diff --git a/library/Zend/Locale/Data/os.xml b/library/Zend/Locale/Data/os.xml new file mode 100755 index 000000000..487cea50a --- /dev/null +++ b/library/Zend/Locale/Data/os.xml @@ -0,0 +1,879 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + абхазаг + адыгейаг + авестӕ + африкаанс + рагон англисаг + араббаг + авайраг + тӕтӕйраг + башкираг + болгайраг + босниаг + бурятаг + каталайнаг + цӕцӕйнаг + коптаг + чехаг + чувашаг + даниаг + немыцаг + австралиаг немыцаг + швйецариаг немыцаг + рагон египтаг + бердзейнаг + англисаг + австралиаг англисаг + канадӕйаг англисаг + бритайнаг англисаг + америкаг англисаг + есперанто + испайнаг + латинаг америкаг англисаг + европӕйаг англисаг + естойнаг + баскаг + персайнаг + финнаг + филиппинаг + фиджи + фарераг + францаг + канадӕйаг францаг + швейцариаг францаг + рагон францаг + ирландиаг + рагон бердзейнаг + уираг + хорватаг + венгериаг + сомихаг + мӕхъӕлон + италиаг + япойнаг + гуырдзиаг + кӕсгон + бӕлхъӕрон + курдаг + хъуымыхъхъаг + латинаг + лекъаг + мӕчъидон + ирон + португалиаг + бразилиаг португалиаг + европӕйаг полтугалиаг + цигайнаг + уырыссаг + нӕзонгӕ ӕвзаг + китайаг + ӕнцонгонд китайаг + традицион китайаг + + + + + + + + + + + + Дуне + Африкӕ + Океани + Америкӕ + Ази + Европӕ + Бразили + Китай + Герман + Франц + Стыр Британи + Гуырдзыстон + Инди + Итали + Япон + Уӕрӕсе + АИШ + Нӕзонгӕ бӕстӕ + + + Къӕлиндар + Нымӕцтӕ + + + Грегориан къӕлиндар + Уирӕгты къӕлиндар + Нырыккон цифрӕтӕ + Персайнаг къӕлиндар + + + Метрикон + СБ + АИШ + + + Ӕвзаг: {0} + Скрипт: {0} + Бӕстӕ: {0} + + + + [а ӕ б в г {гъ} д {дж} {дз} е ё ж з и й к {къ} л м н о п {пъ} р с т {тъ} у ф х {хъ} ц {цъ} ч {чъ} ш щ ъ ы ь э ю я] + [] + [А Ӕ Б В Г {Гъ} Д {Дж} {Дз} Е Ё Ж З И Й К {Къ} Л М Н О П {Пъ} Р С Т {Тъ} У Ф Х {Хъ} Ц {Цъ} Ч {Чъ} Ш Щ Ы Э Ю Я] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ « » ( ) \[ \] \{ \} § @ * / \& #] + {0}… + …{0} + {0}…{1} + ? + + + « + » + + + + + + + + + + EEEE, d MMMM, y 'аз' G + + + + + d MMMM, y 'аз' G + + + + + dd MMM y 'аз' G + + + + + dd.MM.yy GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + ccc, d MMM + mm:ss + y + MM.y + E, dd.MM.y + LLL y + E, d MMM y + y-'ӕм' 'азы' QQQ + y-'ӕм' 'азы' QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + + + + + + + янв. + фев. + мар. + апр. + мая + июны + июлы + авг. + сен. + окт. + ноя. + дек. + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + январы + февралы + мартъийы + апрелы + майы + июны + июлы + августы + сентябры + октябры + ноябры + декабры + + + + + Янв. + Февр. + Март + Апр. + Май + Июнь + Июль + Авг. + Сент. + Окт. + Нояб. + Дек. + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + Январь + Февраль + Мартъи + Апрель + Май + Июнь + Июль + Август + Сентябрь + Октябрь + Ноябрь + Декабрь + + + + + + + хцб + крс + дцг + ӕрт + цпр + мрб + сбт + + + Х + К + Д + Ӕ + Ц + М + С + + + хуыцаубон + къуырисӕр + дыццӕг + ӕртыццӕг + цыппӕрӕм + майрӕмбон + сабат + + + + + Хцб + Крс + Дцг + Ӕрт + Цпр + Мрб + Сбт + + + Х + К + Д + Ӕ + Ц + М + С + + + Хуыцаубон + Къуырисӕр + Дыццӕг + Ӕртыццӕг + Цыппӕрӕм + Майрӕмбон + Сабат + + + + + + + 1-аг кв. + 2-аг кв. + 3-аг кв. + 4-ӕм кв. + + + 1 + 2 + 3 + 4 + + + 1-аг квартал + 2-аг квартал + 3-аг квартал + 4-ӕм квартал + + + + + 1-аг кв. + 2-аг кв. + 3-аг кв. + 4-ӕм кв. + + + 1 + 2 + 3 + 4 + + + 1-аг квартал + 2-аг квартал + 3-аг квартал + 4-ӕм квартал + + + + + + + ӕмбисбоны размӕ + ӕмбисбоны фӕстӕ + + + + + + н.д.а. + н.д. + + + + + + EEEE, d MMMM, y 'аз' + + + + + d MMMM, y 'аз' + + + + + dd MMM y 'аз' + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + ccc, d MMM + mm:ss + y + MM.y + E, dd.MM.y + LLL y + E, d MMM y + y-'ӕм' 'азы' QQQ + y-'ӕм' 'азы' QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + + + + + + Дуг + + + Аз + + + Мӕй + + + Къуыри + + + Бон + Ӕндӕрӕбон + Знон + Абон + Сом + Иннӕбон + + {0} боны фӕстӕ + {0} боны фӕстӕ + + + {0} бон раздӕр + {0} боны размӕ + + + + Къуырийы бон + + + Боны период + + + Сахат + + {0} сахаты фӕстӕ + {0} сахаты фӕстӕ + + + {0} сахаты размӕ + {0} сахаты размӕ + + + + Минут + + + Секунд + + + Рӕстӕджы зонӕ + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} рӕстӕг + {1} ({0}) + + Нӕзонгӕ + + + Минск + + + Тбилис + + + Мӕскуы + + + + Астӕуккаг Европӕйаг рӕстӕг + Астӕуккаг Европӕйаг стандартон рӕстӕг + Астӕуккаг Европӕйаг сӕрдыгон рӕстӕг + + + + + Скӕсӕн Европӕйаг рӕстӕг + Скӕсӕн Европӕйаг стандартон рӕстӕг + Скӕсӕн Европӕйаг сӕрдыгон рӕстӕг + + + + + Ныгъуылӕн Европӕйаг рӕстӕг + Ныгъуылӕн Европӕйаг стандартон рӕстӕг + Ныгъуылӕн Европӕйаг сӕрдыгон рӕстӕг + + + + + Гуырдзыстоны рӕстӕг + Гуырдзыстоны стандартон рӕстӕг + Гуырдзыстоны сӕрдыгон рӕстӕг + + + + + Гринвичы рӕстӕмбис рӕстӕг + + + + + Мӕскуыйы рӕстӕг + Мӕскуыйы стандартон рӕстӕг + Мӕскуыйы сӕрдыгон рӕстӕг + + + + + + latn + + , +   + ; + % + + + - + E + + + НН + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Бразилиаг реал + бразилиаг реал + бразилиаг реалы + R$ + + + Евро + евро + евройы + + + + Бритайнаг Стерлингы Фунт + бритайнаг стерлингы фунт + бритайнаг стерлингы фунты + £ + + + Лар + лар + лары + + + Сом + сом + сомы + + + АИШ-ы Доллар + АИШ-ы доллар + АИШ-ы доллары + $ + + + Нӕзонгӕ валютӕ + нӕзонгӕ валютӕ + нӕзонгӕ валютӕйы + + + + + + + {0} бон + {0} боны + + + {0} сахат + {0} сахаты + + + {0} минут + {0} минуты + + + {0} мӕй + {0} мӕйы + + + {0} секунд + {0} секунды + + + {0} къуыри + {0} къуырийы + + + {0} аз + {0} азы + + + + + {0} бон + {0} боны + + + {0} с. + {0} с. + + + {0} мин. + {0} мин. + + + + + + {0}, {1} + {0}, {1} + {0} ӕмӕ {1} + {0} ӕмӕ {1} + + + + + уойы:у + нӕйы:н + + + + diff --git a/library/Zend/Locale/Data/os_GE.xml b/library/Zend/Locale/Data/os_GE.xml new file mode 100755 index 000000000..288a9cd49 --- /dev/null +++ b/library/Zend/Locale/Data/os_GE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/os_RU.xml b/library/Zend/Locale/Data/os_RU.xml new file mode 100755 index 000000000..957f1cdb0 --- /dev/null +++ b/library/Zend/Locale/Data/os_RU.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + руб. + + + + diff --git a/library/Zend/Locale/Data/pa.xml b/library/Zend/Locale/Data/pa.xml new file mode 100755 index 000000000..c4bded3db --- /dev/null +++ b/library/Zend/Locale/Data/pa.xml @@ -0,0 +1,4967 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + ਅਬਖਾਜ਼ੀਅਨ + ਅਚੀਨੀ + ਅਕੋਲੀ + ਅਫ਼ਰੀਕੀ + ਅਮਹਾਰਿਕ + ਅਰਬੀ + ਆਧੁਨਿਕ ਸਟੈਂਡਰਡ ਅਰਬੀ + ਅਸਾਮੀ + ਅਜ਼ਰਬੈਜਾਨੀ + ਬੇਲਾਰੂਸੀ + ਬੁਲਗਾਰੀਅਨ + ਬੰਗਾਲੀ + ਤਿੱਬਤੀ + ਬੋਸਨੀਅਨ + ਕੈਟਾਲਾਨ + ਚੈਕ + ਵੈਲਸ਼ + ਡੈਨਿਸ਼ + ਜਰਮਨ + ਔਸਟ੍ਰੀਅਨ ਜਰਮਨ + ਸਵਿਸ + ਗ੍ਰੀਕ + ਅੰਗਰੇਜ਼ੀ + ਆਸਟ੍ਰੇਲੀਆਈ ਅੰਗਰੇਜ਼ੀ + ਕਨੈਡੀਅਨ ਅੰਗਰੇਜ਼ੀ + ਬ੍ਰਿਟਿਸ਼ ਅੰਗਰੇਜ਼ੀ + ਯੂ.ਕੇ ਅੰਗਰੇਜ਼ੀ + ਅਮਰੀਕੀ ਅੰਗਰੇਜ਼ੀ + ਯੂ.ਐਸ. ਅੰਗਰੇਜ਼ੀ + ਇਸਪੇਰਾਂਟੋ + ਸਪੈਨਿਸ਼ + ਲੈਟਿਨ ਅਮਰੀਕੀ ਸਪੈਨਿਸ਼ + ਯੂਰੋਪੀਅਨ ਸਪੈਨਿਸ਼ + ਮੈਕਸੀਕਨ ਸਪੈਨਿਸ਼ + ਇਸਟੋਨੀਅਨ + ਬਾਸਕੀ + ਫ਼ਾਰਸੀ + ਫਿਨਿਸ਼ + ਫਿਲੀਪਿਨੋ + ਫਿਜੀਅਨ + ਫ਼ੇਰੋਸੇ + ਫ੍ਰੈਂਚ + ਕਨੈਡੀਅਨ ਫ੍ਰੈਂਚ + ਸਵਿਸ ਫ੍ਰੈਂਚ + ਪਛਮੀ ਫ੍ਰਿਸ਼ੀਅਨ + ਆਇਰਿਸ਼ + ਗੈਲਿਸ਼ਿਅਨ + ਗੁਆਰਾਨੀ + ਸਵਿਸ ਜਰਮਨ + ਗੁਜਰਾਤੀ + ਹੌਸਾ + ਹਵਾਈਅਨ + ਯਹੂਦੀ + ਹਿੰਦੀ + ਕ੍ਰੋਏਸ਼ਿਆਈ + ਹਾਈਟਿਅਨ + ਹੰਗੇਰੀਅਨ + ਆਰਮੀਨੀਅਨ + ਇੰਡੋਨੇਸ਼ੀਆਈ + ਇਗਬੋ + ਆਈਸਲੈਂਡਿਕ + ਇਤਾਲਵੀ + ਜਾਪਾਨੀ + ਜਾਵਾਨੀਜ਼ + ਜਾਰਜੀਅਨ + ਕਜ਼ਾਖ਼ + ਖਮੇਰ + ਕੰਨੜ + ਕੋਰੀਆਈ + ਕਸ਼ਮੀਰੀ + ਕੁਰਦਿਸ਼ + ਕਿਰਗੀਜ਼ + ਲੈਟਿਨ + ਲਕਜ਼ਮਬਰਗਿਸ਼ + ਲਾਓ + ਲਿਥੁਆਨੀਅਨ + ਲਾਟਵਿਅਨ + ਮਾਲਾਗੈਸੀ + ਮਾਉਰੀ + ਮੈਕਡੋਨੀਅਨ + ਮਲਿਆਲਮ + ਮਰਾਠੀ + ਮਲਯ + ਮਾਲਟੀਜ਼ + ਬਰਮੀ + ਨੌਰਵੇਜਿਅਨ ਬੋਕਮਲ + ਨੇਪਾਲੀ + ਡੱਚ + ਫਲੈਮਿਸ਼ + ਨੌਰਵੇਜਿਅਨ ਨਿਨੋਰਸ੍ਕ + ਨਾਰਵੇਜੀਅਨ + ਉੜੀਆ + ਪੰਜਾਬੀ + ਪੋਲਿਸ਼ + ਪਸ਼ਤੋ + ਪੁਰਤਗਾਲੀ + ਬ੍ਰਾਜ਼ਿਲੀਅਨ ਪੁਰਤਗਾਲੀ + ਯੂਰੋਪੀਅਨ ਪੁਰਤਗਾਲੀ + ਕਿਊਚੁਆ + ਰੋਮਾਂਸ਼ + ਰੋਮਾਨੀਆਈ + ਰੂਸੀ + ਸੰਸਕ੍ਰਿਤ + ਸਿੰਧੀ + ਸਿੰਹਾਲਾ + ਸਲੋਵਾਕ + ਸਲੋਵੇਨੀਅਨ + ਸੋਮਾਲੀ + ਅਲਬਾਨੀਅਨ + ਸਰਬਿਆਈ + ਸੂਡਾਨੀ + ਸਵੀਡਿਸ਼ + ਸਵਾਹਿਲੀ + ਤਮਿਲ + ਤੇਲਗੂ + ਤਾਜਿਕ + ਥਾਈ + ਟਿਗਰੀਨਿਆ + ਤੁਰਕਮੇਨ + ਟੌਂਗਨ + ਤੁਰਕਿਸ਼ + ਤਤਾਰ + ਤ੍ਵਿ + ਉਇਗੁਰ + ਯੂਕਰੇਨੀਅਨ + ਅਗਿਆਤ ਭਾਸ਼ਾ + ਉਰਦੂ + ਉਜ਼ਬੇਕ + ਵਿਯਤਨਾਮੀ + ਵੋਲੋਫ + ਖੋਸਾ + ਯੋਰੂਬਾ + ਸਟੈਂਡਰਡ ਮੋਰੋਕੈਨ ਟੈਮਾਜ਼ਾਈਟ + ਚੀਨੀ + ਸਰਲ ਕੀਤੀ ਚੀਨੀ + ਰਵਾਇਤੀ ਚੀਨੀ + ਜ਼ੁਲੂ + ਕੋਈ ਭਾਸ਼ਾ-ਵਿਗਿਆਨਿਕ ਸਮੱਗਰੀ ਨਹੀਂ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ਵਿਸ਼ਵ + ਅਫ਼ਰੀਕਾ + ਉੱਤਰ ਅਮਰੀਕਾ + ਦੱਖਣ ਅਮਰੀਕਾ + ਓਸ਼ਨਿਆ + ਪੱਛਮੀ ਅਫ਼ਰੀਕਾ + ਕੇਂਦਰੀ ਅਮਰੀਕਾ + ਪੂਰਬੀ ਅਫ਼ਰੀਕਾ + ਉੱਤਰੀ ਅਫ਼ਰੀਕਾ + ਮੱਧਮ ਅਫ਼ਰੀਕਾ + ਦੱਖਣੀ ਅਫ਼ਰੀਕਾ + ਅਮਰੀਕਾ + ਉੱਤਰੀ ਅਮਰੀਕਾ + ਕੈਰੇਬੀਅਨ + ਪੂਰਬੀ ਏਸ਼ੀਆ + ਦੱਖਣੀ ਏਸ਼ੀਆ + ਦੱਖਣ-ਪੂਰਬੀ ਏਸ਼ੀਆ + ਦੱਖਣੀ ਯੂਰਪ + ਔਸਟ੍ਰਾਲੇਸ਼ੀਆ + ਮੈਲਾਨੇਸ਼ੀਆ + ਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆਈ ਖੇਤਰ + ਪੋਲਿਨੇਸ਼ੀਆ + ਏਸ਼ੀਆ + ਕੇਂਦਰੀ ਏਸ਼ੀਆ + ਪੱਛਮੀ ਏਸ਼ੀਆ + ਯੂਰਪ + ਪੂਰਬੀ ਯੂਰਪ + ਉੱਤਰੀ ਯੂਰਪ + ਪੱਛਮੀ ਯੂਰਪ + ਲੈਟਿਨ ਅਮਰੀਕਾ + ਅਸੈਂਸ਼ਨ ਆਈਲੈਂਡ + ਅੰਡੋਰਾ + ਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤ + ਅਫ਼ਗਾਨਿਸਤਾਨ + ਐਂਟੀਗੁਆ ਅਤੇ ਬਾਰਬੁਡਾ + ਅੰਗੁਇਲਾ + ਅਲਬਾਨੀਆ + ਆਰਮੀਨਿਆ + ਅੰਗੋਲਾ + ਅੰਟਾਰਕਟਿਕਾ + ਅਰਜਨਟੀਨਾ + ਅਮੈਰੀਕਨ ਸਮੋਆ + ਆਸਟਰੀਆ + ਆਸਟ੍ਰੇਲੀਆ + ਅਰੂਬਾ + ਅਲੈਂਡ ਆਈਲੈਂਡਸ + ਅਜ਼ਰਬੈਜਾਨ + ਬੋਸਨੀਆ ਅਤੇ ਹਰਜ਼ੇਗੋਵੀਨਾ + ਬਾਰਬਾਡੋਸ + ਬੰਗਲਾਦੇਸ਼ + ਬੈਲਜੀਅਮ + ਬੁਰਕੀਨਾ ਫ਼ਾਸੋ + ਬੁਲਗਾਰਿਆ + ਬਹਿਰੀਨ + ਬੁਰੁੰਡੀ + ਬੇਨਿਨ + ਸੇਂਟ ਬਾਰਥੇਲੇਮੀ + ਬਰਮੂਡਾ + ਬਰੂਨੇਈ + ਬੋਲੀਵੀਆ + ਕੈਰੇਬੀਅਨ ਨੀਦਰਲੈਂਡ + ਬ੍ਰਾਜ਼ੀਲ + ਬਹਾਮਾਸ + ਭੂਟਾਨ + ਬੌਵੇਟ ਆਈਲੈਂਡ + ਬੋਟਸਵਾਨਾ + ਬੇਲਾਰੂਸ + ਬੇਲੀਜ਼ + ਕੈਨੇਡਾ + ਕੋਕੋਜ਼ (ਕੀਲਿੰਗ) ਆਈਲੈਂਡਸ + ਕਾਂਗੋ - ਕਿਂਸ਼ਾਸਾ + ਕਾਂਗੋ ਲੋਕਤੰਤਰੀ ਗਣਰਾਜ + ਕੇਂਦਰੀ ਅਫਰੀਕੀ ਗਣਰਾਜ + ਕਾਂਗੋ - ਬ੍ਰਾਜ਼ਾਵਿਲੇ + ਕਾਂਗੋ ਗਣਰਾਜ + ਸਵਿਟਜ਼ਰਲੈਂਡ + ਕੋਟ ਡੀਵੋਆਰ + ਆਇਵਰੀ ਕੋਸਟ + ਕੁਕ ਆਈਲੈਂਡਸ + ਚਿਲੀ + ਕੈਮਰੂਨ + ਚੀਨ + ਕੋਲੰਬੀਆ + ਕਲਿਪਰਟਨ ਆਈਲੈਂਡ + ਕੋਸਟਾ ਰੀਕਾ + ਕਿਊਬਾ + ਕੇਪ ਵਰਡ + ਕੁਰਾਕਾਓ + ਕ੍ਰਿਸਮਸ ਆਈਲੈਂਡ + ਸਾਇਪਰਸ + ਚੈਕ ਗਣਰਾਜ + ਜਰਮਨੀ + ਡੀਗੋ ਗਾਰਸ਼ੀਆ + ਜ਼ੀਬੂਤੀ + ਡੈਨਮਾਰਕ + ਡੋਮੀਨਿਕਾ + ਡੌਮਿਨਿਕਨ ਗਣਰਾਜ + ਅਲਜੀਰੀਆ + ਸਿਓਟਾ ਅਤੇ ਮੇਲਿੱਲਾ + ਇਕਵੇਡੋਰ + ਇਸਟੋਨੀਆ + ਮਿਸਰ + ਪੱਛਮੀ ਸਹਾਰਾ + ਇਰੀਟ੍ਰਿਆ + ਸਪੇਨ + ਇਥੋਪੀਆ + ਯੂਰੋਪੀਅਨ ਯੂਨਿਅਨ + ਫਿਨਲੈਂਡ + ਫ਼ਿਜੀ + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ (ਆਈਲਾਸ ਮਾਲਵਿਨਾਸ) + ਮਾਇਕ੍ਰੋਨੇਸ਼ੀਆ + ਫੈਰੋ ਆਇਲੈਂਡਸ + ਫ੍ਰਾਂਸ + ਗਾਬੋਨ + ਯੁਨਾਇਟੇਡ ਕਿੰਗਡਮ + ਯੂ.ਕੇ. + ਗ੍ਰੇਨਾਡਾ + ਜਾਰਜਿਆ + ਫ੍ਰੈਂਚ ਗੁਏਨਾ + ਗਰਨਸੀ + ਘਾਨਾ + ਜਿਬਰਾਲਟਰ + ਗ੍ਰੀਨਲੈਂਡ + ਗਾਂਬੀਆ + ਗਿਨੀ + ਗੁਆਡੇਲੋਪ + ਭੂ-ਖੰਡੀ ਗਿਨੀ + ਗ੍ਰੀਸ + ਦੱਖਣੀ ਜਾਰਜਿਆ ਅਤੇ ਦੱਖਣੀ ਸੈਂਡਵਿਚ ਆਇਲੈਂਡਸ + ਗੁਆਟੇਮਾਲਾ + ਗੁਆਮ + ਗਿਨੀ-ਬਿਸਾਉ + ਗੁਯਾਨਾ + ਹਾਂਗ ਕਾਂਗ ਐਸਏਆਰ ਚੀਨ + ਹਾਂਗ ਕਾਂਗ + ਹਰਡ ਆਈਲੈਂਡ ਅਤੇ ਮੈਕਡੋਨਾਲਡ ਆਈਲੈਂਡਸ + ਹਾਨਡੂਰਸ + ਕਰੋਏਸ਼ੀਆ + ਹਾਈਟੀ + ਹੰਗਰੀ + ਕੇਨੇਰੀ ਆਈਲੈਂਡਜ਼ + ਇੰਡੋਨੇਸ਼ੀਆ + ਆਇਰਲੈਂਡ + ਇਜ਼ਰਾਈਲ + ਆਇਲ ਆਫ ਮੈਨ + ਭਾਰਤ + ਬ੍ਰਿਟਿਸ਼ ਹਿੰਦ ਮਹਾਂਸਾਗਰ ਟੈਰਿਟਰੀ + ਇਰਾਕ + ਈਰਾਨ + ਆਈਸਲੈਂਡ + ਇਟਲੀ + ਜਰਸੀ + ਜਮਾਇਕਾ + ਜੌਰਡਨ + ਜਾਪਾਨ + ਕੀਨੀਆ + ਕਿਰਗਿਜ਼ਸਤਾਨ + ਕੰਬੋਡੀਆ + ਕੀਰੀਬਾਟੀ + ਕੋਮੋਰੋਸ + ਸੈਂਟ ਕਿਟਸ ਐਂਡ ਨੇਵਿਸ + ਉੱਤਰੀ ਕੋਰੀਆ + ਦੱਖਣੀ ਕੋਰੀਆ + ਕੁਵੈਤ + ਕੇਮੈਨ ਆਈਲੈਂਡਸ + ਕਜ਼ਾਕਸਤਾਨ + ਲਾਓਸ + ਲੈਬਨਾਨ + ਸੇਂਟ ਲੂਸੀਆ + ਲਿਕਟਨਸਟਾਇਨ + ਸ੍ਰੀ ਲੰਕਾ + ਲਾਈਬੀਰੀਆ + ਲੇਸੋਥੋ + ਲਿਥੁਆਨੀਆ + ਲਕਜ਼ਮਬਰਗ + ਲਾਟਵਿਆ + ਲੀਬੀਆ + ਮੋਰੱਕੋ + ਮੋਨਾਕੋ + ਮੋਲਡੋਵਾ + ਮੋਨਟੇਨੇਗਰੋ + ਸੇਂਟ ਮਾਰਟਿਨ + ਮੈਡਾਗਾਸਕਰ + ਮਾਰਸ਼ਲ ਆਈਲੈਂਡਸ + ਮੈਕਡੋਨੀਆ + ਮੈਕਡੋਨੀਆ (ਪੂਰਵ ਯੁਗੋਸਲਾਵ ਮੈਕਡੋਨੀਆਈ ਗਣਰਾਜ) + ਮਾਲੀ + ਮਿਆਂਮਾਰ + ਮੰਗੋਲੀਆ + ਮਕਾਉ ਐਸਏਆਰ ਚੀਨ + ਮਕਾਉ + ਉੱਤਰੀ ਮਰੀਆਨਾ ਆਈਲੈਂਡ + ਮਾਰਟੀਨਿਕ + ਮੋਰਿਟਾਨੀਆ + ਮੋਂਟਸੇਰਾਤ + ਮਾਲਟਾ + ਮੌਰਿਸ਼ਸ + ਮਾਲਦੀਵ + ਮਾਲਾਵੀ + ਮੈਕਸਿਕੋ + ਮਲੇਸ਼ੀਆ + ਮੋਜ਼ਾਮਬੀਕ + ਨਾਮੀਬੀਆ + ਨਿਊ ਕੈਲੇਡੋਨਿਆ + ਨਾਇਜਰ + ਨੋਰਫੌਕ ਆਈਲੈਂਡ + ਨਾਇਜੀਰੀਆ + ਨਿਕਾਰਾਗੁਆ + ਨੀਦਰਲੈਂਡਸ + ਨਾਰਵੇ + ਨੇਪਾਲ + ਨਾਉਰੂ + ਨਿਯੂ + ਨਿਊਜ਼ੀਲੈਂਡ + ਓਮਾਨ + ਪਨਾਮਾ + ਪੇਰੂ + ਫ੍ਰੈਂਚ ਪੋਲਿਨੇਸ਼ੀਆ + ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ + ਫਿਲਿਪੀਨੀਜ਼ + ਪਾਕਿਸਤਾਨ + ਪੋਲੈਂਡ + ਸੈਂਟ ਪੀਅਰੇ ਐਂਡ ਮਿਕੇਲਨ + ਪਿਟਕੈਰਨ ਆਈਲੈਂਡਸ + ਪਿਊਰਟੋ ਰਿਕੋ + ਪਲੈਸਟਿਨੀ ਪ੍ਰਦੇਸ਼ + ਪਲੈਸਟੀਨ + ਪੁਰਤਗਾਲ + ਪਲਾਉ + ਪੈਰਾਗਵੇ + ਕਤਰ + ਆਊਟਲਾਇੰਗ ਓਸ਼ਨੀਆ + ਰਿਯੂਨਿਅਨ + ਰੋਮਾਨੀਆ + ਸਰਬੀਆ + ਰੂਸ + ਰਵਾਂਡਾ + ਸਾਉਦੀ ਅਰਬ + ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ + ਸੇਸ਼ਲਸ + ਸੁਡਾਨ + ਸਵੀਡਨ + ਸਿੰਗਾਪੁਰ + ਸੇਂਟ ਹੇਲੇਨਾ + ਸਲੋਵੇਨੀਆ + ਸਵਾਲਬਰਡ ਅਤੇ ਜਾਨ ਮਾਯੇਨ + ਸਲੋਵਾਕੀਆ + ਸਿਏਰਾ ਲਿਓਨ + ਸੈਨ ਮਰੀਨੋ + ਸੇਨੇਗਲ + ਸੋਮਾਲੀਆ + ਸੂਰੀਨਾਮ + ਦੱਖਣੀ ਸੁਡਾਨ + ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ + ਅਲ ਸਲਵਾਡੋਰ + ਸਿੰਟ ਮਾਰਟੀਨ + ਸੀਰੀਆ + ਸਵਾਜ਼ੀਲੈਂਡ + ਤ੍ਰਿਸਟਾਨ ਡਾ ਕੁਨਾ + ਤੁਰਕਸ ਐਂਡ ਕੇਕੋਸ ਆਈਲੈਂਡਸ + ਚਾਡ + ਫ੍ਰੈਂਚ ਸਾਉਦਰਨ ਟੈਰੀਟਰੀਜ਼ + ਟੋਗੋ + ਥਾਈਲੈਂਡ + ਤਾਜਿਕਿਸਤਾਨ + ਟੋਕੇਲਾਉ + ਟੀਮੁਰ-ਲੀਸਟੀ + ਪੂਰਬੀ ਟੀਮੁਰ + ਤੁਰਕਮੇਨਿਸਤਾਨ + ਟਿਉਨੀਸ਼ੀਆ + ਟੌਂਗਾ + ਤੁਰਕੀ + ਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋ + ਟੁਵਾਲੂ + ਤਾਇਵਾਨ + ਤਨਜ਼ਾਨੀਆ + ਯੂਕਰੇਨ + ਯੂਗਾਂਡਾ + ਯੂ.ਐਸ. ਆਊਟਲਾਇੰਗ ਆਈਲੈਂਡਸ + ਯੂਨਾਇਟੇਡ ਸਟੇਟਸ + ਯੂ.ਐਸ. + ਉਰੂਗਵੇ + ਉਜ਼ਬੇਕਿਸਤਾਨ + ਵੈਟਿਕਨ ਸਿਟੀ + ਸੇਂਟ ਵਿਨਸੈਂਟ ਐਂਡ ਗ੍ਰੇਨਾਡੀਨਸ + ਵੇਨੇਜ਼ੂਏਲਾ + ਬ੍ਰਿਟਿਸ਼ ਵਰਜਿਨ ਆਈਲੈਂਡਸ + ਯੂ ਐਸ ਵਰਜਿਨ ਆਈਲੈਂਡਸ + ਵਿਯਤਨਾਮ + ਵਾਨੂਆਟੂ + ਵਾਲਿਸ ਐਂਡ ਫਯੁਚੁਨਾ + ਸਾਮੋਆ + ਕੋਸੋਵੋ + ਯਮਨ + ਮਾਯੋਟੀ + ਦੱਖਣੀ ਅਫਰੀਕਾ + ਜ਼ਾਮਬੀਆ + ਜ਼ਿੰਬਾਬਵੇ + ਅਗਿਆਤ ਖੇਤਰ + + + ਕੈਲੰਡਰ + ਸੌਰਟ ਓਰਡਰ + ਮੁਦਰਾ + ਸੰਖਿਆ + + + ਅਰਬੀ-ਇੰਡਿਕ ਅੰਕ + ਵਿਸਤਰਿਤ ਅਰਬੀ-ਇੰਡਿਕ ਅੰਕ + ਆਰਮੀਨੀਅਨ ਸੰਖਿਆਵਾਂ + ਆਰਮੀਨੀਅਨ ਲੋਅਰਕੇਸ ਸੰਖਿਆਵਾਂ + ਬੰਗਾਲੀ ਅੰਕ + ਦੇਵਨਾਗਰੀ ਅੰਕ + ਡਿਫੌਲਟ ਯੂਨੀਕੋਡ ਸੌਰਟ ਓਰਡਰ + ਐਥਿਓਪਿਕ ਸੰਖਿਆਵਾਂ + ਪੂਰਨ ਵਿਸਤਾਰ ਅੰਕ + ਜਾਰਜੀਅਨ ਸੰਖਿਆਵਾਂ + ਗਰੀਜੋਰੀਅਨ ਕੈਲੰਡਰ + ਗ੍ਰੀਕ ਸੰਖਿਆਵਾਂ + ਗ੍ਰੀਕ ਲੋਅਰਕੇਸ ਸੰਖਿਆਵਾਂ + ਗੁਜਰਾਤੀ ਅੰਕ + ਗੁਰਮੁਖੀ ਅੰਕ + ਚੀਨੀ ਦਸ਼ਮਲਵ ਸੰਖਿਆਵਾਂ + ਸਰਲ ਕੀਤੀ ਚੀਨੀ ਸੰਖਿਆਵਾਂ + ਸਰਲ ਕੀਤੀ ਚੀਨੀ ਵਿੱਤੀ ਸੰਖਿਆਵਾਂ + ਰਵਾਇਤੀ ਚੀਨੀ ਸੰਖਿਆਵਾਂ + ਰਵਾਇਤੀ ਚੀਨੀ ਵਿੱਤੀ ਸੰਖਿਆਵਾਂ + ਹਿਬਰੂ ਸੰਖਿਆਵਾਂ + ਜਾਪਾਨੀ ਸੰਖਿਆਵਾਂ + ਜਾਪਾਨੀ ਵਿੱਤੀ ਸੰਖਿਆਵਾਂ + ਖਮੇਰ ਅੰਕ + ਕੰਨੜ ਅੰਕ + ਲਾਓ ਅੰਕ + ਪੱਛਮੀ ਅੰਕ + ਮਲਿਆਲਮ ਅੰਕ + ਮਿਆਂਮਾਰ ਅੰਕ + ਉੜੀਆ ਅੰਕ + ਰੋਮਨ ਸੰਖਿਆਵਾਂ + ਰੋਮਨ ਲੋਅਰਕੇਸ ਸੰਖਿਆਵਾਂ + ਆਮ-ਮੰਤਵ ਖੋਜ + ਸਟੈਂਡਰਡ ਸੌਰਟ ਓਰਡਰ + ਰਵਾਇਤੀ ਤਮਿਲ ਸੰਖਿਆਵਾਂ + ਤਮਿਲ ਅੰਕ + ਤੇਲਗੂ ਅੰਕ + ਥਾਈ ਅੰਕ + ਤਿੱਬਤੀ ਅੰਕ + + + ਮੈਟਰਿਕ + ਯੂ. ਕੇ. + ਯੂ. ਐਸ. + + + ਪੰਜਾਬੀ: {0} + ਲਿਪੀ: {0} + ਖੇਤਰ: {0} + + + + [\u0A71 \u0A70 \u0A3C ੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ {ਸ\u0A3C} ਹ ਕ ਖ {ਖ\u0A3C} ਗ {ਗ\u0A3C} ਘ ਙ ਚ ਛ ਜ {ਜ\u0A3C} ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ {ਫ\u0A3C} ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ \u0A4D ਾ ਿ ੀ \u0A41 \u0A42 \u0A47 \u0A48 \u0A4B \u0A4C] + [\u200C\u200D ਃ \u0A02 \u0A01 {ਲ\u0A3C}] + [ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ ਹ ਕ ਖ ਗ ਘ ਙ ਚ ਛ ਜ ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ] + [\- ‐ – — , ; \: ! ? . ' ‘ ’ " “ ” ( ) \[ \] / \& ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + ' + ' + " + " + + + + + + + + EEEE, dd MMMM G y + + + + + d MMMM G y + + + + + d MMM G y + + + + + dd/MM/GGGGG y + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + G y + MMM G y + d MMM, G y + E, d MMM G y + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E, d MMM + mm:ss + G y + MMM G y + QQQ G y + G y + M/GGGGG y + d/M/GGGGG y + E, d/M/GGGGG y + MMM G y + d MMM, G y + E, d MMM, G y + QQQ G y + QQQQ G y + + + {0} – {1} + + d–d + + + MM–MM + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + G y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM-MMM y + MMM y-MMM y + + + d-d, MMM y + d MMM – d MMM y + d, MMM – d, MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + ਜਨਵਰੀ + ਫ਼ਰਵਰੀ + ਮਾਰਚ + ਅਪ੍ਰੈਲ + ਮਈ + ਜੂਨ + ਜੁਲਾਈ + ਅਗਸਤ + ਸਤੰਬਰ + ਅਕਤੂਬਰ + ਨਵੰਬਰ + ਦਸੰਬਰ + + + + ਫ਼ + ਮਾ + + + ਜੂ + ਜੁ + + + + + + + + ਜਨਵਰੀ + ਫ਼ਰਵਰੀ + ਮਾਰਚ + ਅਪ੍ਰੈਲ + ਮਈ + ਜੂਨ + ਜੁਲਾਈ + ਅਗਸਤ + ਸਤੰਬਰ + ਅਕਤੂਬਰ + ਨਵੰਬਰ + ਦਸੰਬਰ + + + + + ਜਨਵਰੀ + ਫ਼ਰਵਰੀ + ਮਾਰਚ + ਅਪ੍ਰੈਲ + ਮਈ + ਜੂਨ + ਜੁਲਾਈ + ਅਗਸਤ + ਸਤੰਬਰ + ਅਕਤੂਬਰ + ਨਵੰਬਰ + ਦਸੰਬਰ + + + + ਫ਼ + ਮਾ + + + ਜੂ + ਜੁ + + + + + + + + ਜਨਵਰੀ + ਫ਼ਰਵਰੀ + ਮਾਰਚ + ਅਪ੍ਰੈਲ + ਮਈ + ਜੂਨ + ਜੁਲਾਈ + ਅਗਸਤ + ਸਤੰਬਰ + ਅਕਤੂਬਰ + ਨਵੰਬਰ + ਦਸੰਬਰ + + + + + + + ਐਤ. + ਸੋਮ. + ਮੰਗਲ. + ਬੁਧ. + ਵੀਰ. + ਸ਼ੁੱਕਰ. + ਸ਼ਨੀ. + + + + ਸੋ + ਮੰ + ਬੁੱ + ਵੀ + ਸ਼ੁੱ + ਸ਼ + + + ਐਤ. + ਸੋਮ. + ਮੰਗਲ. + ਬੁਧ. + ਵੀਰ. + ਸ਼ੁੱਕਰ. + ਸ਼ਨੀ. + + + ਐਤਵਾਰ + ਸੋਮਵਾਰ + ਮੰਗਲਵਾਰ + ਬੁਧਵਾਰ + ਵੀਰਵਾਰ + ਸ਼ੁੱਕਰਵਾਰ + ਸ਼ਨੀਵਾਰ + + + + + ਐਤ. + ਸੋਮ. + ਮੰਗਲ. + ਬੁਧ. + ਵੀਰ. + ਸ਼ੁੱਕਰ. + ਸ਼ਨੀ. + + + + ਸੋ + ਮੰ + ਬੁੱ + ਵੀ + ਸ਼ੁੱ + ਸ਼ + + + ਐਤ. + ਸੋਮ. + ਮੰਗਲ. + ਬੁਧ. + ਵੀਰ. + ਸ਼ੁੱਕਰ. + ਸ਼ਨੀ. + + + ਐਤਵਾਰ + ਸੋਮਵਾਰ + ਮੰਗਲਵਾਰ + ਬੁਧਵਾਰ + ਵੀਰਵਾਰ + ਸ਼ੁੱਕਰਵਾਰ + ਸ਼ਨੀਵਾਰ + + + + + + + ਪਊਆ + ਅੱਧਾ + ਪੌਣਾ + ਪੂਰਾ + + + + + + + + + ਪਊਆ + ਅੱਧਾ + ਪੌਣਾ + ਪੂਰਾ + + + + + ਪਊਆ + ਅੱਧਾ + ਪੌਣਾ + ਪੂਰਾ + + + + + + + + + ਪਊਆ + ਅੱਧਾ + ਪੌਣਾ + ਪੂਰਾ + + + + + + + AM + PM + + + + + + ਈ. ਪੂ. + ਈ. ਪੂ. ਯੁ. + ਸੰਨ + ਈ.ਯੁ. + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + MMM, G y + d MMM y + E d MMM, G y + h a + HH + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, dd-MM. + LLL + d MMM + E, d MMM + mm:ss + mm:ss + y + M-y + d/M/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, dd-MM – E, dd-MM + E, dd-MM – E, dd-MM + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d MMM – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + ਯੁੱਗ + + + ਸਾਲ + ਪਿਛਲਾ ਸਾਲ + ਇਹ ਸਾਲ + ਅਗਲਾ ਸਾਲ + + {0} ਸਾਲ ਵਿਚ + {0} ਸਾਲ ਵਿਚ + + + {0} ਸਾਲ ਪਹਿਲਾਂ + {0} ਸਾਲ ਪਹਿਲਾਂ + + + + ਮਹੀਨਾ + ਪਿਛਲਾ ਮਹੀਨਾ + ਇਹ ਮਹੀਨਾ + ਅਗਲਾ ਮਹੀਨਾ + + {0} ਮਹੀਨੇ ਵਿਚ + {0} ਮਹੀਨੇ ਵਿਚ + + + {0} ਮਹੀਨੇ ਪਹਿਲਾਂ + {0} ਮਹੀਨੇ ਪਹਿਲਾਂ + + + + ਹਫ਼ਤਾ + ਪਿਛਲਾ ਹਫ਼ਤਾ + ਇਹ ਹਫ਼ਤਾ + ਅਗਲਾ ਹਫ਼ਤਾ + + {0} ਹਫ਼ਤੇ ਵਿਚ + {0} ਹਫ਼ਤੇ ਵਿਚ + + + {0} ਹਫ਼ਤਾ ਪਹਿਲਾਂ + {0} ਹਫ਼ਤੇ ਪਹਿਲਾਂ + + + + ਦਿਨ + ਲੰਘਿਆ ਕੱਲ + ਅੱਜ + ਭਲਕੇ + + {0} ਦਿਨ ਵਿਚ + {0} ਦਿਨਾਂ ਵਿਚ + + + {0} ਦਿਨ ਪਹਿਲਾਂ + {0} ਦਿਨ ਪਹਿਲਾਂ + + + + ਹਫ਼ਤੇ ਦਾ ਦਿਨ + + + ਪਿਛਲਾ ਐਤਵਾਰ + ਇਹ ਐਤਵਾਰ + ਅਗਲਾ ਐਤਵਾਰ + + + ਪਿਛਲਾ ਸੋਮਵਾਰ + ਇਹ ਸੋਮਵਾਰ + ਅਗਲਾ ਸੋਮਵਾਰ + + + ਪਿਛਲਾ ਮੰਗਲਵਾਰ + ਇਹ ਮੰਗਲਵਾਰ + ਅਗਲਾ ਮੰਗਲਵਾਰ + + + ਪਿਛਲਾ ਬੁੱਧਵਾਰ + ਇਹ ਬੁੱਧਵਾਰ + ਅਗਲਾ ਬੁੱਧਵਾਰ + + + ਪਿਛਲਾ ਵੀਰਵਾਰ + ਇਹ ਵੀਰਵਾਰ + ਅਗਲਾ ਵੀਰਵਾਰ + + + ਪਿਛਲਾ ਸ਼ੁੱਕਰਵਾਰ + ਇਹ ਸ਼ੁੱਕਰਵਾਰ + ਅਗਲਾ ਸ਼ੁੱਕਰਵਾਰ + + + ਪਿਛਲਾ ਸ਼ਨਿੱਚਰਵਾਰ + ਇਹ ਸ਼ਨਿੱਚਰਵਾਰ + ਅਗਲਾ ਸ਼ਨਿੱਚਰਵਾਰ + + + AM/PM + + + ਘੰਟਾ + + {0} ਘੰਟੇ ਵਿਚ + {0} ਘੰਟੇ ਵਿਚ + + + {0} ਘੰਟਾ ਪਹਿਲਾਂ + {0} ਘੰਟੇ ਪਹਿਲਾਂ + + + + ਮਿੰਟ + + {0} ਮਿੰਟ ਵਿਚ + {0} ਮਿੰਟ ਵਿਚ + + + {0} ਮਿੰਟ ਪਹਿਲਾਂ + {0} ਮਿੰਟ ਪਹਿਲਾਂ + + + + ਸਕਿੰਟ + ਹੁਣ + + {0} ਸਕਿੰਟ ਵਿਚ + {0} ਸਕਿੰਟ ਵਿਚ + + + {0} ਸਕਿੰਟ ਪਹਿਲਾਂ + {0} ਸਕਿੰਟ ਪਹਿਲਾਂ + + + + ਖੇਤਰ + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} ਸਮਾਂ + {0} ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + {0} ਮਿਆਰੀ ਸਮਾਂ + {1} ({0}) + + ਅਗਿਆਤ ਸ਼ਹਿਰ + + + ਅੰਡੋਰਾ + + + ਦੁਬਈ + + + ਕਾਬੁਲ + + + ਐਂਟੀਗੁਆ + + + ਅੰਗੁਇਲਾ + + + ਤਿਰਾਨੇ + + + ਯੇਰੇਵਨ + + + ਲੁਆਂਡਾ + + + ਰੋਥੇਰਾ + + + ਪਾਮਰ + + + ਸਵੋਯਾ + + + ਮੌਸਨ + + + ਡੇਵਿਸ + + + ਵੋਸਟੋਕ + + + ਕਾਸੇ + + + ਡਿਉਮੋਂਟ ਡਿਉਰਵਿਲੇ + + + ਮੈਕਮੁਰਡੋ + + + ਰਿਓ ਗੈਲੇਗੋਸ + + + ਮੈਂਡੋਜ਼ਾ + + + ਸੇਨ ਜੁਆਨ + + + ਉਸ਼ਵਾਇਆ + + + ਲਾ ਰਿਉਜਾ + + + ਸੇਨ ਲੂਈਸ + + + ਕੈਟਾਮਾਰਕਾ + + + ਸਾਲਟਾ + + + ਜੂਜੁਏ + + + ਟੁਕੁਮਨ + + + ਕੋਰਡੋਬਾ + + + ਬਿਉਨੋ ਆਇਰਸ + + + ਪਾਗੋ ਪਾਗੋ + + + ਵਿਏਨਾ + + + ਪਰਥ + + + ਯੂਕਲਾ + + + ਡਾਰਵਿਨ + + + ਏਡੀਲੇਡ + + + ਬ੍ਰੋਕਨ ਹਿਲ + + + ਕਰੀ + + + ਮੈਲਬੋਰਨ + + + ਹੋਬਾਰਟ + + + ਲਿੰਡੇਮਨ + + + ਸਿਡਨੀ + + + ਬ੍ਰਿਸਬੇਨ + + + ਮੈਕਕਵੈਰੀ + + + ਲੌਰਡ ਹੋਵੇ + + + ਅਰੂਬਾ + + + ਮਾਰੀਏਹਾਮੇਨ + + + ਬਾਕੂ + + + ਸਾਰਾਜੇਵੋ + + + ਬਾਰਬਾਡੋਸ + + + ਢਾਕਾ + + + ਬਰੂਸੇਲਸ + + + ਉਆਗਾਡੂਗੂ + + + ਸੋਫੀਆ + + + ਬਹਿਰੀਨ + + + ਬੁਜੁੰਬੁਰਾ + + + ਪੋਰਟੋ-ਨੋਵੋ + + + ਸੇਂਟ ਬਾਰਥੇਲੇਮੀ + + + ਬਰਮੂਡਾ + + + ਬਰੂਨੇਈ + + + ਲਾ ਪਾਜ਼ + + + ਕ੍ਰਾਲੇਂਦਿਜਕ + + + ਯੁਰੂਨੀਪੇ + + + ਰਿਓ ਬ੍ਰਾਂਕੋ + + + ਪੋਰਟੋ ਵੇਲ੍ਹੋ + + + ਬੋਆ ਵਿਸਟਾ + + + ਮਨੌਸ + + + ਕਯੁਏਬਾ + + + ਸੇਂਟਾਰਮ + + + ਕੈਂਪੋ ਗ੍ਰਾਂਡੇ + + + ਬੇਲੇਮ + + + ਆਰਗੁਆਇਨਾ + + + ਸਾਓ ਪੌਲੋ + + + ਬਾਹੀਆ + + + ਫੋਰਟਾਲੇਜ਼ਾ + + + ਮੈਸੀਓ + + + ਰੇਸੀਫੇ + + + ਨੌਰੋਨਹਾ + + + ਨਾਸਾਓ + + + ਥਿੰਫੂ + + + ਗਾਬੋਰੋਨ + + + ਮਿੰਸਕ + + + ਬੇਲੀਜ਼ + + + ਡੌਅਸਨ + + + ਵਾਈਟਹੌਰਸ + + + ਇਨੁਵਿਕ + + + ਵੈਨਕੂਵਰ + + + ਡੌਅਸਨ ਕ੍ਰੀਕ + + + ਕ੍ਰੈਸਟਨ + + + ਯੈਲੋਨਾਈਫ + + + ਐਡਮੋਂਟਨ + + + ਸਵਿਫਟ ਕਰੈਂਟ + + + ਕੈਮਬ੍ਰਿਜ ਬੇ + + + ਰੈਜੀਨਾ + + + ਵਿਨੀਪੇਗ + + + ਰੈਜ਼ੋਲਿਊਟ + + + ਰੇਨੀ ਰਿਵਰ + + + ਰੈਂਕਿਨ ਇਨਲੈਟ + + + ਐਟੀਕੋਕਨ + + + ਥੰਡਰ ਬੇ + + + ਨਿਪਿਗੌਨ + + + ਟੋਰੰਟੋ + + + ਇਕਾਲੁਈਟ + + + ਪੈਂਗਨਿਰਟੰਗ + + + ਮੋਂਕਟਨ + + + ਹੈਲੀਫੈਕਸ + + + ਗੂਜ਼ ਬੇ + + + ਗਲੇਸ ਬੇ + + + ਬਲੈਂਕ-ਸੈਬਲਾਨ + + + ਸੇਂਟ ਜੌਨਸ + + + ਕੋਕੋਜ਼ + + + ਕਿੰਸ਼ਾਸਾ + + + ਲੁਬੁਮਬਾਸ਼ੀ + + + ਬਾਂਗੁਈ + + + ਬ੍ਰਾਜ਼ਾਵਿਲੇ + + + ਜਿਊਰਿਖ + + + ਐਬੀਡਜਾਨ + + + ਰਾਰੋਟੋਂਗਾ + + + ਈਸਟਰ + + + ਸੇਂਟੀਆਗੋ + + + ਡੌਆਲਾ + + + ਕੈਸ਼ਗਰ + + + ਊਰੂਮਕੀ + + + ਚੋਂਗਿੰਗ + + + ਸ਼ੰਘਾਈ + + + ਹਾਰਬਿਨ + + + ਬੋਗੋਟਾ + + + ਕੋਸਟਾ ਰੀਕਾ + + + ਹਵਾਨਾ + + + ਕੇਪ ਵਰਡ + + + ਕੁਰਾਕਾਓ + + + ਕ੍ਰਿਸਮਸ + + + ਨਿਕੋਸੀਆ + + + ਪ੍ਰਾਗ + + + ਬੁਸਿਂਜੇਨ + + + ਬਰਲਿਨ + + + ਜ਼ੀਬੂਤੀ + + + ਕੋਪੇਨਹੇਗਨ + + + ਡੋਮੀਨਿਕਾ + + + ਸੇਂਟੋ ਡੋਮਿੰਗੋ + + + ਅਲਜੀਅਰਸ + + + ਗਲਪੇਗੋਸ + + + ਗੁਆਇਕਵਿਲ + + + ਟੱਲਿਨ + + + ਕੈਰੋ + + + ਅਲ ਅਯੂਨ + + + ਅਸਮਾਰਾ + + + ਕੇਨੇਰੀ + + + ਸੀਊਟਾ + + + ਮੈਡ੍ਰਿਡ + + + ਐਡਿਸ ਅਬਾਬਾ + + + ਹੇਲਸਿੰਕੀ + + + ਫ਼ਿਜੀ + + + ਸਟੇਨਲੀ + + + ਚੂਕ + + + ਪੋਹਨਪੇਈ + + + ਕੋਸ੍ਰਾਏ + + + ਫੈਰੋ + + + ਪੈਰਿਸ + + + ਲਿਬਰਵਿਲੇ + + + + ਬ੍ਰਿਟਿਸ਼ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + ਲੰਡਨ + + + ਗ੍ਰੇਨਾਡਾ + + + ਟਬਿਲਿਸੀ + + + ਕੇਯੇਨੇ + + + ਗਰਨਸੀ + + + ਅੱਕਰਾ + + + ਜਿਬਰਾਲਟਰ + + + ਥੁਲੇ + + + ਨੂਕ + + + ਇੱਟੋਕੋਰਟੂਰਮੀਟ + + + ਡੈਨਮਾਰਕਸ਼ੌਨ + + + ਬਾਂਜੁਲ + + + ਕੋਨੇਕਰੀ + + + ਗੁਆਡੇਲੋਪ + + + ਮਾਲਾਬੋ + + + ਏਥਨਸ + + + ਦੱਖਣੀ ਜਾਰਜਿਆ + + + ਗੁਆਟੇਮਾਲਾ + + + ਗੁਆਮ + + + ਬਿਸਾਉ + + + ਗੁਯਾਨਾ + + + ਹਾਂਗ ਕਾਂਗ + + + ਟੇਗੁਸੀਗਲਪਾ + + + ਜ਼ਗਰੇਬ + + + ਪੋਰਟ-ਔ-ਪ੍ਰਿੰਸ + + + ਬੁਡਾਪੇਸਟ + + + ਜਕਾਰਤਾ + + + ਪੌਂਟੀਆਨਾਕ + + + ਮਕਸਾਰ + + + ਜਯਾਪੁਰਾ + + + + ਆਇਰਿਸ਼ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + ਡਬਲਿਨ + + + ਜੇਰੂਸਲਮ + + + ਆਇਲ ਆਫ ਮੈਨ + + + ਕੋਲਕਾਤਾ + + + ਚਾਗੋਸ + + + ਬਗਦਾਦ + + + ਤੇਹਰਾਨ + + + ਰੇਕਜਾਵਿਕ + + + ਰੋਮ + + + ਜਰਸੀ + + + ਜਮਾਇਕਾ + + + ਅੰਮਾਨ + + + ਟੋਕਯੋ + + + ਨੈਰੋਬੀ + + + ਬਿਸ਼ਕੇਕ + + + ਫਨੋਮ ਪੇਨਹ + + + ਏੰਡਰਬਰੀ + + + ਕਿਰਿਤਿਮਤੀ + + + ਟਾਰਾਵਾ + + + ਕੋਮੋਰੋ + + + ਸੇਂਟ ਕਿਟਸ + + + ਪਯੋਂਗਯਾਂਗ + + + ਸਿਉਲ + + + ਕੁਵੈਤ + + + ਕੇਮੈਨ + + + ਅਕਤੌ + + + ਓਰਲ + + + ਅਕਤੋਬੇ + + + ਕਿਜ਼ੀਲੋਰਡਾ + + + ਅਲਮੇਟੀ + + + ਵਾਏਨਟਿਆਨੇ + + + ਬੈਰੂਤ + + + ਸੇਂਟ ਲੁਸੀਆ + + + ਵਾਡੁਜ਼ + + + ਕੋਲੰਬੋ + + + ਮੋਨਰੋਵੀਆ + + + ਮਸੇਰੂ + + + ਵਿਲਨਿਅਸ + + + ਲਕਜ਼ਮਬਰਗ + + + ਰਿਗਾ + + + ਟ੍ਰਿਪੋਲੀ + + + ਕਾਸਬਲੈਂਕਾ + + + ਮੋਨਾਕੋ + + + ਚਿਸਿਨੌ + + + ਪੋਡਗੋਰੀਕਾ + + + ਮੈਰੀਗੋਟ + + + ਅੰਟਾਨਨੇਰਿਵੋ + + + ਕਵਾਜਾਲੀਨ + + + ਮੇਜੁਰੋ + + + ਸਕੋਪਜੇ + + + ਬਮੇਕੋ + + + ਰੰਗੂਨ + + + ਹੋਵਡ + + + ਉਲਾਨਬਾਤਰ + + + ਚੋਇਲਬਾਲਸਨ + + + ਮਕਾਉ + + + ਸੈਪਾਨ + + + ਮਾਰਟੀਨਿਕ + + + ਨੌਆਕਸ਼ਾਟ + + + ਮੋਂਟਸੇਰਾਤ + + + ਮਾਲਟਾ + + + ਮੌਰਿਸ਼ਸ + + + ਮਾਲਦੀਵ + + + ਬਲੰਟਾਇਰ + + + ਟਿਜੂਆਨਾ + + + ਸੈਂਟਾ ਇਸਾਬੇਲ + + + ਹਰਮੋਸਿੱਲੋ + + + ਮਜ਼ੇਤਲਾਨ + + + ਚਿਹੁਆਹੁਆ + + + ਬਾਹੀਆ ਬਾਂਦੇਰਸ + + + ਓਜੀਨਾਗਾ + + + ਮੋਨਟੇਰੀ + + + ਮੈਕਸੀਕੋ ਸਿਟੀ + + + ਮਾਟਾਮੋਰਸ + + + ਮੇਰਿਡਾ + + + ਕੈਨਕੁਨ + + + ਕੌਲਾ ਲੁੰਪੁਰ + + + ਕੁਚਿੰਗ + + + ਮਾਪੁਟੋ + + + ਵਿੰਡਹੋਇਕ + + + ਨਾਉਮੇ + + + ਨਿਆਮੇ + + + ਨੋਰਫੌਕ + + + ਲਾਗੋਸ + + + ਮਨਾਗੁਆ + + + ਐਮਸਟਰਡਮ + + + ਓਸਲੋ + + + ਕਾਠਮਾਂਡੂ + + + ਨਾਉਰੂ + + + ਨਿਯੂ + + + ਚੈਤਹੈਮ + + + ਔਕਲੈਂਡ + + + ਮਸਕਟ + + + ਪਨਾਮਾ + + + ਲੀਮਾ + + + ਤਹਿਤੀ + + + ਮਾਰਕਿਸਾਸ + + + ਗੈਂਬੀਅਰ + + + ਪੋਰਟ ਮੋਰੇਸਬੀ + + + ਮਨੀਲਾ + + + ਕਰਾਚੀ + + + ਵਾਰਸਾਅ + + + ਮਿਕੇਲਨ + + + ਪਿਟਕੈਰਨ + + + ਪਿਊਰਟੋ ਰੀਕੋ + + + ਗਾਜਾ + + + ਹੇਬਰਾਨ + + + ਅਜੋਰੇਸ + + + ਮਡੀਅਰਾ + + + ਲਿਸਬਨ + + + ਪਲਾਉ + + + ਐਸੁਂਕੀਅਨ + + + ਕਤਰ + + + ਰਿਯੂਨੀਅਨ + + + ਬੁਚਾਰੇਸਟ + + + ਬੈਲਗ੍ਰੇਡ + + + ਕਾਲੀਨਿੰਗ੍ਰੇਡ + + + ਮਾਸਕੋ + + + ਵੋਲਗੋਗ੍ਰੇਡ + + + ਸਮਾਰਾ + + + ਯਕੇਤਰਿਨਬਰਗ + + + ਓਮਸਕ + + + ਨੋਵੋਸਿਬੀਰਸਕ + + + ਨੋਵੋਕੁਜ਼ਨੇਟਸਕ + + + ਕਰੈਸਨੇਜਰਸ + + + ਇਰਕੁਤਸਕ + + + ਯਕੁਤਸਕ + + + ਵਲਾਦੀਵੋਸਤਕ + + + ਖਾਨਡਿਗਾ + + + ਸਖਲੀਨ + + + ਉਸਤ-ਨੇਰਾ + + + ਮੈਗੇਡਨ + + + ਕਮਚਟਕਾ + + + ਇਨਾਡਾਇਰ + + + ਕਿਗਾਲੀ + + + ਰਿਯਾਧ + + + ਗੁਆਡਾਕੇਨਲ + + + ਮਾਹੇ + + + ਖਾਰਟੌਮ + + + ਸਟਾਕਹੋਮ + + + ਸਿੰਗਾਪੁਰ + + + ਸੇਂਟ ਹੇਲੇਨਾ + + + ਲਜੁਬਲਜਾਨਾ + + + ਲੋਂਗਈਅਰਬਾਇਨ + + + ਬ੍ਰਟਿਸਲਾਵਾ + + + ਫਰੀਟਾਉਨ + + + ਸੈਨ ਮਰੀਨੋ + + + ਡਕਾਰ + + + ਮੋਗਾਦਿਸ਼ੂ + + + ਪੈਰਾਮਰੀਬੋ + + + ਜੂਬਾ + + + ਸਾਓ ਟੋਮ + + + ਅਲ ਸਲਵਾਡੋਰ + + + ਲੋਅਰ ਪ੍ਰਿੰਸ'ਸ ਕਵਾਰਟਰ + + + ਡੈਮਸਕਸ + + + ਏਮਬਾਬਾਨੇ + + + ਗਰਾਂਡ ਤੁਰਕ + + + ਐੰਜਾਮੀਨਾ + + + ਕਰਗਯੂਲੇਨ + + + ਲੋਮ + + + ਬੈਂਗਕਾਕ + + + ਦੁਸ਼ਾਂਬੇ + + + ਫਕਾਉਫੋ + + + ਡਿਲੀ + + + ਅਸ਼ਗਾਬਾਟ + + + ਟਿਉਨੀਸ + + + ਟੋਂਗਾਟਾਪੂ + + + ਇਸਤਨਾਬੁਲ + + + ਪੋਰਟ ਔਫ ਸਪੇਨ + + + ਫੁਨਾਫੁਟੀ + + + ਤੈਪਈ + + + ਦਾਰ ਏਸ ਸਲਾਮ + + + ਉਝਗੋਰੋਡ + + + ਕੀਵ + + + ਸਿਮਫਰੋਪੋਲ + + + ਜਪੋਰੋਜ਼ਾਏ + + + ਕੰਪਾਲਾ + + + ਮਿਡਵੇ + + + ਜੋਨਸਟਨ + + + ਵੇਕ + + + ਏਡਕ + + + ਨੋਮ + + + ਹੋਨੋਲੁਲੂ + + + ਐਂਕਰੇਜ + + + ਯਕੁਤਤ + + + ਸਿਟਕਾ + + + ਜਯੂਨੋ + + + ਮੇਟਲਾਕਾਟਲਾ + + + ਲਾਸ ਐਂਜਲਸ + + + ਬੋਇਸ + + + ਫੋਨਿਕਸ + + + ਡੇਨਵਰ + + + ਬਿਉਲਾ, ਉੱਤਰੀ ਡਕੋਟਾ + + + ਨਿਊ ਸਲੇਮ, ਉੱਤਰੀ ਡਕੋਟਾ + + + ਸੇਂਟਰ, ਉੱਤਰੀ ਡਕੋਟਾ + + + ਸ਼ਿਕਾਗੋ + + + ਮੈਨੋਮਿਨੀ + + + ਵਿੰਸੇਨੇਸ, ਇੰਡੀਆਨਾ + + + ਪੀਟਰਸਬਰਗ, ਇੰਡੀਆਨਾ + + + ਟੈਲ ਸਿਟੀ, ਇੰਡੀਆਨਾ + + + ਨੋਕਸ, ਇੰਡੀਆਨਾ + + + ਵਿਨਮੈਕ, ਇੰਡੀਆਨਾ + + + ਮਾਰੇਂਗੋ, ਇੰਡੀਆਨਾ + + + ਇੰਡੀਆਨਾਪੋਲਿਸ + + + ਲੁਈਸਵਿਲੇ + + + ਵੇਵੇ + + + ਮੋੰਟੀਸੈਲੋ, ਕੈਂਟਕੀ + + + ਡਿਟਰੋਇਟ + + + ਨਿਊ ਯਾਰਕ + + + ਮੋਂਟੇਵੀਡੀਓ + + + ਸਮਰਕਂਡ + + + ਤਾਸ਼ਕੈਂਟ + + + ਵੈਟਿਕਨ + + + ਸੇਂਟ ਵਿਨਸੇਂਟ + + + ਕੈਰਾਕਾਸ + + + ਟੋਰਟੋਲਾ + + + ਸੇਂਟ ਥੋਮਸ + + + ਹੋ ਚਾਈ ਮਿਨ੍ਹ ਸਿਟੀ + + + ਇਫੇਟ + + + ਵਾਲਿਸ + + + ਐਪਿਆ + + + ਅਡੇਨ + + + ਮਾਯੋਟੀ + + + ਜੋਹਨਸਬਰਗ + + + ਲੁਸਾਕਾ + + + ਹਰਾਰੇ + + + + ਅਫ਼ਗਾਨਿਸਤਾਨ ਸਮਾਂ + + + + + ਕੇਂਦਰੀ ਅਫਰੀਕਾ ਸਮਾਂ + + + + + ਪੂਰਬੀ ਅਫਰੀਕਾ ਸਮਾਂ + + + + + ਦੱਖਣੀ ਅਫਰੀਕਾ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਅਫਰੀਕਾ ਸਮਾਂ + ਪੱਛਮੀ ਅਫਰੀਕਾ ਮਿਆਰੀ ਸਮਾਂ + ਪੱਛਮੀ ਅਫਰੀਕਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਅਲਾਸਕਾ ਸਮਾਂ + ਅਲਾਸਕਾ ਮਿਆਰੀ ਸਮਾਂ + ਅਲਾਸਕਾ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਅਮੇਜ਼ਨ ਸਮਾਂ + ਅਮੇਜ਼ਨ ਮਿਆਰੀ ਸਮਾਂ + ਅਮੇਜ਼ਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਕੇਂਦਰੀ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਕੇਂਦਰੀ ਮਿਆਰੀ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਕੇਂਦਰੀ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਪੂਰਬੀ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਮਿਆਰੀ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਪੂਰਬੀ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਮਾਉਂਟੇਨ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਮਾਉਂਟੇਨ ਮਿਆਰੀ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਮਾਉਂਟੇਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਪੈਸਿਫਿਕ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਪੈਸਿਫਿਕ ਮਿਆਰੀ ਸਮਾਂ + ਉੱਤਰੀ ਅਮੇਰਿਕਨ ਪੈਸਿਫਿਕ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਅਰੇਬੀਅਨ ਸਮਾਂ + ਅਰੇਬੀਅਨ ਮਿਆਰੀ ਸਮਾਂ + ਅਰੇਬੀਅਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਅਰਜਨਟੀਨਾ ਸਮਾਂ + ਅਰਜਨਟੀਨਾ ਮਿਆਰੀ ਸਮਾਂ + ਅਰਜਨਟੀਨਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਸਮਾਂ + ਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਮਿਆਰੀ ਸਮਾਂ + ਪੱਛਮੀ ਅਰਜਨਟੀਨਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਆਰਮੀਨਿਆ ਸਮਾਂ + ਆਰਮੀਨਿਆ ਮਿਆਰੀ ਸਮਾਂ + ਆਰਮੀਨਿਆ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਅਟਲਾਂਟਿਕ ਸਮਾਂ + ਅਟਲਾਂਟਿਕ ਮਿਆਰੀ ਸਮਾਂ + ਅਟਲਾਂਟਿਕ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਕੇਂਦਰੀ ਆਸਟ੍ਰੇਲੀਅਨ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਕੇਂਦਰੀ ਮਿਆਰੀ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਕੇਂਦਰੀ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਆਸਟ੍ਰੇਲੀਅਨ ਕੇਂਦਰੀ ਪੱਛਮੀ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਕੇਂਦਰੀ ਪੱਛਮੀ ਮਿਆਰੀ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਕੇਂਦਰੀ ਪੱਛਮੀ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਪੂਰਬੀ ਆਸਟ੍ਰੇਲੀਅਨ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਪੂਰਬੀ ਮਿਆਰੀ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਪੂਰਬੀ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਆਸਟ੍ਰੇਲੀਅਨ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਪੱਛਮੀ ਮਿਆਰੀ ਸਮਾਂ + ਆਸਟ੍ਰੇਲੀਅਨ ਪੱਛਮੀ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਅਜ਼ਰਬੈਜਾਨ ਸਮਾਂ + ਅਜ਼ਰਬੈਜਾਨ ਮਿਆਰੀ ਸਮਾਂ + ਅਜ਼ਰਬੈਜਾਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਅਜੋਰੇਸ ਸਮਾਂ + ਅਜੋਰੇਸ ਮਿਆਰੀ ਸਮਾਂ + ਅਜੋਰੇਸ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਬੰਗਲਾਦੇਸ਼ ਸਮਾਂ + ਬੰਗਲਾਦੇਸ਼ ਮਿਆਰੀ ਸਮਾਂ + ਬੰਗਲਾਦੇਸ਼ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਭੂਟਾਨ ਸਮਾਂ + + + + + ਬੋਲੀਵੀਆ ਸਮਾਂ + + + + + ਬ੍ਰਾਜ਼ੀਲੀਆਂ ਸਮਾਂ + ਬ੍ਰਾਜ਼ੀਲੀਆਂ ਮਿਆਰੀ ਸਮਾਂ + ਬ੍ਰਾਜ਼ੀਲੀਆਂ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਬਰੂਨੇਈ ਦਾਰੂਸਲਾਮ ਸਮਾਂ + + + + + ਕੇਪ ਵਰਡ ਸਮਾਂ + ਕੇਪ ਵਰਡ ਮਿਆਰੀ ਸਮਾਂ + ਕੇਪ ਵਰਡ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਚਾਮੋਰੋ ਸਮਾਂ + + + + + ਚੈਟਹੇਮ ਸਮਾਂ + ਚੈਟਹੇਮ ਮਿਆਰੀ ਸਮਾਂ + ਚੈਟਹੇਮ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਚਿਲੀ ਸਮਾਂ + ਚਿਲੀ ਮਿਆਰੀ ਸਮਾਂ + ਚਿਲੀ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਚੀਨ ਸਮਾਂ + ਚੀਨ ਮਿਆਰੀ ਸਮਾਂ + ਚੀਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਚੌਇਬਾਲਸਨ ਸਮਾਂ + ਚੌਇਬਾਲਸਨ ਮਿਆਰੀ ਸਮਾਂ + ਚੌਇਬਾਲਸਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਕ੍ਰਿਸਮਸ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਕੋਕੋਜ਼ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਕੋਲੰਬੀਆ ਸਮਾਂ + ਕੋਲੰਬੀਆ ਮਿਆਰੀ ਸਮਾਂ + ਕੋਲੰਬੀਆ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਕੁੱਕ ਆਈਲੈਂਡ ਸਮਾਂ + ਕੁੱਕ ਆਈਲੈਂਡ ਅੱਧਾ ਮਿਆਰੀ ਸਮਾਂ + ਕੁੱਕ ਆਈਲੈਂਡ ਅੱਧਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਕਿਊਬਾ ਸਮਾਂ + ਕਿਊਬਾ ਮਿਆਰੀ ਸਮਾਂ + ਕਿਊਬਾ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਡੇਵਿਸ ਸਮਾਂ + + + + + ਡਿਉਮੋਂਟ ਡਿਉਰਵਿਲੇ ਸਮਾਂ + + + + + ਪੂਰਬੀ ਟੀਮੁਰ ਸਮਾਂ + + + + + ਈਸਟਰ ਆਈਲੈਂਡ ਸਮਾਂ + ਈਸਟਰ ਆਈਲੈਂਡ ਮਿਆਰੀ ਸਮਾਂ + ਈਸਟਰ ਆਈਲੈਂਡ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਇਕਵੇਡੋਰ ਸਮਾਂ + + + + + ਕੇਂਦਰੀ ਯੂਰੋਪੀਅਨ ਸਮਾਂ + ਕੇਂਦਰੀ ਯੂਰੋਪੀਅਨ ਮਿਆਰੀ ਸਮਾਂ + ਕੇਂਦਰੀ ਯੂਰੋਪੀਅਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪੂਰਬੀ ਯੂਰੋਪੀਅਨ ਸਮਾਂ + ਪੂਰਬੀ ਯੂਰੋਪੀਅਨ ਮਿਆਰੀ ਸਮਾਂ + ਪੂਰਬੀ ਯੂਰੋਪੀਅਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਯੂਰੋਪੀਅਨ ਸਮਾਂ + ਪੱਛਮੀ ਯੂਰੋਪੀਅਨ ਮਿਆਰੀ ਸਮਾਂ + ਪੱਛਮੀ ਯੂਰੋਪੀਅਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਸਮਾਂ + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਮਿਆਰੀ ਸਮਾਂ + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਫ਼ਿਜ਼ੀ ਸਮਾਂ + ਫ਼ਿਜ਼ੀ ਮਿਆਰੀ ਸਮਾਂ + ਫ਼ਿਜ਼ੀ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਫ੍ਰੈਂਚ ਗੁਏਨਾ ਸਮਾਂ + + + + + ਫ੍ਰੈਂਚ ਦੱਖਣੀ ਅਤੇ ਐਂਟਾਰਟਿਕ ਸਮਾਂ + + + + + ਗਲਾਪਾਗੋਸ ਸਮਾਂ + + + + + ਗੈਂਬੀਅਰ ਸਮਾਂ + + + + + ਜਾਰਜਿਆ ਸਮਾਂ + ਜਾਰਜਿਆ ਮਿਆਰੀ ਸਮਾਂ + ਜਾਰਜਿਆ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਗਿਲਬਰਟ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਗ੍ਰੀਨਵਿਚ ਮੀਨ ਟਾਈਮ + + + + + ਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਸਮਾਂ + ਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਮਿਆਰੀ ਸਮਾਂ + ਪੂਰਬੀ ਗ੍ਰੀਨਲੈਂਡ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਸਮਾਂ + ਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਮਿਆਰੀ ਸਮਾਂ + ਪੱਛਮੀ ਗ੍ਰੀਨਲੈਂਡ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਖਾੜੀ ਸਮਾਂ + + + + + ਗੁਯਾਨਾ ਸਮਾਂ + + + + + ਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਸਮਾਂ + ਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਮਿਆਰੀ ਸਮਾਂ + ਹਵਾਈ-ਅਲੇਯੂਸ਼ਿਅਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਹਾਂਗ ਕਾਂਗ ਸਮਾਂ + ਹਾਂਗ ਕਾਂਗ ਮਿਆਰੀ ਸਮਾਂ + ਹਾਂਗ ਕਾਂਗ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਹੋਵਡ ਸਮਾਂ + ਹੋਵਡ ਮਿਆਰੀ ਸਮਾਂ + ਹੋਵਡ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਭਾਰਤ ਸਮਾਂ + + + IST + + + + + ਭਾਰਤੀ ਓਸ਼ਨ ਸਮਾਂ + + + + + ਇੰਡੋਚਾਈਨਾ ਸਮਾਂ + + + + + ਕੇਂਦਰੀ ਇੰਡੋਨੇਸ਼ੀਆ ਸਮਾਂ + + + + + ਪੂਰਬੀ ਇੰਡੋਨੇਸ਼ੀਆ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਇੰਡੋਨੇਸ਼ੀਆ ਸਮਾਂ + + + + + ਈਰਾਨ ਸਮਾਂ + ਈਰਾਨ ਮਿਆਰੀ ਸਮਾਂ + ਈਰਾਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਇਰਕੁਤਸਕ ਸਮਾਂ + ਇਰਕੁਤਸਕ ਮਿਆਰੀ ਸਮਾਂ + ਇਰਕੁਤਸਕ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਇਜ਼ਰਾਈਲ ਸਮਾਂ + ਇਜ਼ਰਾਈਲ ਮਿਆਰੀ ਸਮਾਂ + ਇਜ਼ਰਾਈਲ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਜਾਪਾਨ ਸਮਾਂ + ਜਾਪਾਨ ਮਿਆਰੀ ਸਮਾਂ + ਜਾਪਾਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਪੂਰਬੀ ਕਜ਼ਾਕਸਤਾਨ ਸਮਾਂ + + + + + ਪੱਛਮੀ ਕਜ਼ਾਕਸਤਾਨ ਸਮਾਂ + + + + + ਕੋਰੀਆਈ ਸਮਾਂ + ਕੋਰੀਆਈ ਮਿਆਰੀ ਸਮਾਂ + ਕੋਰੀਆਈ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਕੋਸ੍ਰਾਏ ਸਮਾਂ + + + + + ਕ੍ਰਾਸਨੋਯਾਰਕਸ ਸਮਾਂ + ਕ੍ਰਾਸਨੋਯਾਰਕਸ ਮਿਆਰੀ ਸਮਾਂ + ਕ੍ਰਾਸਨੋਯਾਰਕਸ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਕਿਰਗਿਸਤਾਨ ਸਮਾਂ + + + + + ਲਾਈਨ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਲੌਰਡ ਹੋਵੇ ਸਮਾਂ + ਲੌਰਡ ਹੋਵੇ ਮਿਆਰੀ ਸਮਾਂ + ਲੌਰਡ ਹੋਵੇ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਮੈਕਕਵੇਰੀ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਮੈਗੇਡਨ ਸਮਾਂ + ਮੈਗੇਡਨ ਮਿਆਰੀ ਸਮਾਂ + ਮੈਗੇਡਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਮਲੇਸ਼ੀਆ ਸਮਾਂ + + + + + ਮਾਲਦੀਵ ਸਮਾਂ + + + + + ਮਾਰਕਿਸਾਸ ਸਮਾਂ + + + + + ਮਾਰਸ਼ਲ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਮੌਰਿਸ਼ਸ ਸਮਾਂ + ਮੌਰਿਸ਼ਸ ਮਿਆਰੀ ਸਮਾਂ + ਮੌਰਿਸ਼ਸ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਮੌਸਨ ਸਮਾਂ + + + + + ਉਲਨ ਬਟੋਰ ਸਮਾਂ + ਉਲਨ ਬਟੋਰ ਮਿਆਰੀ ਸਮਾਂ + ਉਲਨ ਬਟੋਰ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਮਾਸਕੋ ਸਮਾਂ + ਮਾਸਕੋ ਮਿਆਰੀ ਸਮਾਂ + ਮਾਸਕੋ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਮਿਆਂਮਾਰ ਸਮਾਂ + + + + + ਨਾਉਰੂ ਸਮਾਂ + + + + + ਨੇਪਾਲ ਸਮਾਂ + + + + + ਨਿਊ ਕੈਲੇਡੋਨਿਆ ਸਮਾਂ + ਨਿਊ ਕੈਲੇਡੋਨਿਆ ਮਿਆਰੀ ਸਮਾਂ + ਨਿਊ ਕੈਲੇਡੋਨਿਆ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਨਿਊਜ਼ੀਲੈਂਡ ਸਮਾਂ + ਨਿਊਜ਼ੀਲੈਂਡ ਮਿਆਰੀ ਸਮਾਂ + ਨਿਊਜ਼ੀਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਨਿਊਫਾਉਂਡਲੈਂਡ ਸਮਾਂ + ਨਿਊਫਾਉਂਡਲੈਂਡ ਮਿਆਰੀ ਸਮਾਂ + ਨਿਊਫਾਉਂਡਲੈਂਡ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਨਿਊ ਸਮਾਂ + + + + + ਨੋਰਫੌਕ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਸਮਾਂ + ਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਮਿਆਰੀ ਸਮਾਂ + ਫਰਨਾਂਡੋ ਡੇ ਨੋਰੋਨਹਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਨੌਵੋਸਿਬੀਰਕਸ ਸਮਾਂ + ਨੌਵੋਸਿਬੀਰਕਸ ਮਿਆਰੀ ਸਮਾਂ + ਨੌਵੋਸਿਬੀਰਕਸ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਓਮਸਕ ਸਮਾਂ + ਓਮਸਕ ਮਿਆਰੀ ਸਮਾਂ + ਓਮਸਕ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪਾਕਿਸਤਾਨ ਸਮਾਂ + ਪਾਕਿਸਤਾਨ ਮਿਆਰੀ ਸਮਾਂ + ਪਾਕਿਸਤਾਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪਲਾਉ ਸਮਾਂ + + + + + ਪਾਪੂਆ ਨਿਊ ਗਿਨੀ ਸਮਾਂ + + + + + ਪੈਰਾਗਵੇ ਸਮਾਂ + ਪੈਰਾਗਵੇ ਮਿਆਰੀ ਸਮਾਂ + ਪੈਰਾਗਵੇ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਪੇਰੂ ਸਮਾਂ + ਪੇਰੂ ਮਿਆਰੀ ਸਮਾਂ + ਪੇਰੂ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਫਿਲਿਪਾਈਨ ਸਮਾਂ + ਫਿਲਿਪਾਈਨ ਮਿਆਰੀ ਸਮਾਂ + ਫਿਲਿਪਾਈਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਫੋਨਿਕਸ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਸਮਾਂ + ਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਮਿਆਰੀ ਸਮਾਂ + ਸੈਂਟ ਪੀਅਰੇ ਅਤੇ ਮਿਕੇਲਨ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਪਿਟਕੈਰਨ ਸਮਾਂ + + + + + ਪੋਹਨਪੇਈ ਸਮਾਂ + + + + + ਰਿਯੂਨੀਅਨ ਸਮਾਂ + + + + + ਰੋਥੇਰਾ ਸਮਾਂ + + + + + ਸਖਲੀਨ ਸਮਾਂ + ਸਖਲੀਨ ਮਿਆਰੀ ਸਮਾਂ + ਸਖਲੀਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਸਾਮੋਆ ਸਮਾਂ + ਸਾਮੋਆ ਮਿਆਰੀ ਸਮਾਂ + ਸਾਮੋਆ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਸੇਸ਼ਲਸ ਸਮਾਂ + + + + + ਸਿੰਗਾਪੁਰ ਸਮਾਂ + + + + + ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਸਮਾਂ + + + + + ਦੱਖਣੀ ਜਾਰਜਿਆ ਸਮਾਂ + + + + + ਸੂਰੀਨਾਮ ਸਮਾਂ + + + + + ਸਵੋਯਾ ਸਮਾਂ + + + + + ਤਹਿਤੀ ਸਮਾਂ + + + + + ਤੈਪਈ ਸਮਾਂ + ਤੈਪਈ ਮਿਆਰੀ ਸਮਾਂ + ਤੈਪਈ ਪ੍ਰਕਾਸ਼ ਸਮਾਂ + + + + + ਤਾਜਿਕਿਸਤਾਨ ਸਮਾਂ + + + + + ਟੋਕੇਲਾਉ ਸਮਾਂ + + + + + ਟੋਂਗਾ ਸਮਾਂ + ਟੋਂਗਾ ਮਿਆਰੀ ਸਮਾਂ + ਟੋਂਗਾ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਚੂਕ ਸਮਾਂ + + + + + ਤੁਰਕਮੇਨਿਸਤਾਨ ਸਮਾਂ + ਤੁਰਕਮੇਨਿਸਤਾਨ ਮਿਆਰੀ ਸਮਾਂ + ਤੁਰਕਮੇਨਿਸਤਾਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਟੁਵਾਲੂ ਸਮਾਂ + + + + + ਉਰੂਗਵੇ ਸਮਾਂ + ਉਰੂਗਵੇ ਮਿਆਰੀ ਸਮਾਂ + ਉਰੂਗਵੇ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਉਜ਼ਬੇਕਿਸਤਾਨ ਸਮਾਂ + ਉਜ਼ਬੇਕਿਸਤਾਨ ਮਿਆਰੀ ਸਮਾਂ + ਉਜ਼ਬੇਕਿਸਤਾਨ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਵਾਨੂਆਟੂ ਸਮਾਂ + ਵਾਨੂਆਟੂ ਮਿਆਰੀ ਸਮਾਂ + ਵਾਨੂਆਟੂ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਵੈਨੇਜ਼ੂਏਲਾ ਸਮਾਂ + + + + + ਵਲਾਦੀਵੋਸਤਕ ਸਮਾਂ + ਵਲਾਦੀਵੋਸਤਕ ਮਿਆਰੀ ਸਮਾਂ + ਵਲਾਦੀਵੋਸਤਕ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਵੋਲਵੋਗ੍ਰੇਡ ਸਮਾਂ + ਵੋਲਵੋਗ੍ਰੇਡ ਮਿਆਰੀ ਸਮਾਂ + ਵੋਲਵੋਗ੍ਰੇਡ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਵੋਸਟੋਕ ਸਮਾਂ + + + + + ਵੇਕ ਆਈਲੈਂਡ ਸਮਾਂ + + + + + ਵਾਲਿਸ ਅਤੇ ਫਯੁਚੁਨਾ ਸਮਾਂ + + + + + ਯਕੁਤਸਕ ਸਮਾਂ + ਯਕੁਤਸਕ ਮਿਆਰੀ ਸਮਾਂ + ਯਕੁਤਸਕ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + ਯਕੇਤਰਿਨਬਰਗ ਸਮਾਂ + ਯਕੇਤਰਿਨਬਰਗ ਮਿਆਰੀ ਸਮਾਂ + ਯਕੇਤਰਿਨਬਰਗ ਗਰਮੀ-ਰੁੱਤ ਸਮਾਂ + + + + + + latn + + guru + + + ٫ + , + % + + + - + ×۱۰^ + × + + + NaN + + + . + , + % + + + - + E + × + + + NaN + + + + + #,##,##0.### + + + + + + + #,##,##0.### + + + + + 0 ਹਜ਼ਾਰ + 0 ਹਜ਼ਾਰ + 00 ਹਜ਼ਾਰ + 00 ਹਜ਼ਾਰ + 0 ਲੱਖ + 0 ਲੱਖ + 00 ਲੱਖ + 00 ਲੱਖ + 0 ਕਰੋੜ + 0 ਕਰੋੜ + 00 ਕਰੋੜ + 00 ਕਰੋੜ + 0 ਅਰਬ + 0 ਅਰਬ + 00 ਅਰਬ + 00 ਅਰਬ + 0 ਖਰਬ + 0 ਖਰਬ + 00 ਖਰਬ + 00 ਖਰਬ + 0 ਨੀਲ + 0 ਨੀਲ + 00 ਨੀਲ + 00 ਨੀਲ + + + + + 0 ਹਜ਼ਾਰ + 0 ਹਜ਼ਾਰ + 00 ਹਜ਼ਾਰ + 00 ਹਜ਼ਾਰ + 0 ਲੱਖ + 0 ਲੱਖ + 00 ਲੱਖ + 00 ਲੱਖ + 0 ਕਰੋੜ + 0 ਕਰੋੜ + 00 ਕਰੋੜ + 00 ਕਰੋੜ + 0 ਅਰਬ + 0 ਅਰਬ + 00 ਅਰਬ + 00 ਅਰਬ + 0 ਖਰਬ + 0 ਖਰਬ + 00 ਖਰਬ + 00 ਖਰਬ + 0 ਨੀਲ + 0 ਨੀਲ + 00 ਨੀਲ + 00 ਨੀਲ + + + + + + + #E0 + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + #,##,##0% + + + + + + + ¤#,##,##0.00 + + + + + + + ¤ #,##,##0.00 + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + ਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤ ਦਿਰਹਾਮ + ਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤ ਦਿਰਹਾਮ + ਸੰਯੁਕਤ ਅਰਬ ਅਮੀਰਾਤ ਦਿਰਹਾਮ + + + ਅਫ਼ਗਾਨ ਅਫ਼ਗਾਨੀ + ਅਫ਼ਗਾਨ ਅਫ਼ਗਾਨੀ + ਅਫ਼ਗਾਨ ਅਫ਼ਗਾਨੀ + + + ਅਲਬਾਨੀਆਈ ਲੇਕ + ਅਲਬਾਨੀਆਈ ਲੇਕ + ਅਲਬਾਨੀਆਈ ਲੇਕ + + + ਆਰਮੀਨਿਆਈ ਦਰਮ + ਆਰਮੀਨਿਆਈ ਦਰਮ + ਆਰਮੀਨਿਆਈ ਦਰਮ + + + ਨੀਦਰਲੈਂਡਸ ਐਂਟੀਲੀਅਨ ਗਿਲਡਰ + ਨੀਦਰਲੈਂਡਸ ਐਂਟੀਲੀਅਨ ਗਿਲਡਰ + ਨੀਦਰਲੈਂਡਸ ਐਂਟੀਲੀਅਨ ਗਿਲਡਰ + + + ਅੰਗੋਲਾ ਕਵਾਂਜਾ + ਅੰਗੋਲਾ ਕਵਾਂਜਾ + ਅੰਗੋਲਾ ਕਵਾਂਜਾ + + + ਅਰਜਨਟਾਈਨ ਪੈਸੋ + ਅਰਜਨਟਾਈਨ ਪੈਸੋ + ਅਰਜਨਟਾਈਨ ਪੈਸੋ + + + ਆਸਟ੍ਰੇਲੀਆਈ ਡਾਲਰ + ਆਸਟ੍ਰੇਲੀਆਈ ਡਾਲਰ + ਆਸਟ੍ਰੇਲੀਆਈ ਡਾਲਰ + A$ + + + ਅਰੂਬਨ ਫਲੋਰਿਨ + ਅਰੂਬਨ ਫਲੋਰਿਨ + ਅਰੂਬਨ ਫਲੋਰਿਨ + + + ਅਜ਼ਰਬੈਜਾਨੀ ਮਾਨਤ + ਅਜ਼ਰਬੈਜਾਨੀ ਮਾਨਤ + ਅਜ਼ਰਬੈਜਾਨੀ ਮਾਨਤ + + + ਬੋਸਨੀਆ-ਹਰਜ਼ੇਗੋਵੀਨਾ ਬਦਲਣ੍ਯੋਗ ਮਾਰਕ + ਬੋਸਨੀਆ-ਹਰਜ਼ੇਗੋਵੀਨਾ ਬਦਲਣ੍ਯੋਗ ਮਾਰਕ + ਬੋਸਨੀਆ-ਹਰਜ਼ੇਗੋਵੀਨਾ ਬਦਲਣ੍ਯੋਗ ਮਾਰਕ + + + ਬਾਰਬਾਡੀਅਨ ਡਾਲਰ + ਬਾਰਬਾਡੀਅਨ ਡਾਲਰ + ਬਾਰਬਾਡੀਅਨ ਡਾਲਰ + + + ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ + ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ + ਬੰਗਲਾਦੇਸ਼ੀ ਟਕਾ + + + ਬੁਲਗਾਰਿਆਈ ਲੇਵ + ਬੁਲਗਾਰਿਆਈ ਲੇਵ + ਬੁਲਗਾਰਿਆਈ ਲੇਵ + + + ਬਹਿਰੀਨੀ ਦਿਨਾਰ + ਬਹਿਰੀਨੀ ਦਿਨਾਰ + ਬਹਿਰੀਨੀ ਦਿਨਾਰ + + + ਬੁਰੁੰਡੀਆਈ ਫ੍ਰੈਂਕ + ਬੁਰੁੰਡੀਆਈ ਫ੍ਰੈਂਕ + ਬੁਰੁੰਡੀਆਈ ਫ੍ਰੈਂਕ + + + ਬਰਮੂਡਾ ਡਾਲਰ + ਬਰਮੂਡਾ ਡਾਲਰ + ਬਰਮੂਡਾ ਡਾਲਰ + + + ਬਰੂਨੇਈ ਡਾਲਰ + ਬਰੂਨੇਈ ਡਾਲਰ + ਬਰੂਨੇਈ ਡਾਲਰ + + + ਬੋਲੀਵੀਅਨ ਬੋਲੀਵੀਅਨੋ + ਬੋਲੀਵੀਅਨ ਬੋਲੀਵੀਅਨੋ + ਬੋਲੀਵੀਅਨ ਬੋਲੀਵੀਅਨੋ + + + ਬ੍ਰਾਜ਼ਿਲਿਆਈ ਰੀਅਲ + ਬ੍ਰਾਜ਼ਿਲਿਆਈ ਰੀਅਲ + ਬ੍ਰਾਜ਼ਿਲਿਆਈ ਰੀਅਲ + R$ + + + ਬਾਹਾਮੀਅਨ ਡਾਲਰ + ਬਾਹਾਮੀਅਨ ਡਾਲਰ + ਬਾਹਾਮੀਅਨ ਡਾਲਰ + + + ਭੂਟਾਨੀ ਐਂਗਲਟ੍ਰਮ + ਭੂਟਾਨੀ ਐਂਗਲਟ੍ਰਮ + ਭੂਟਾਨੀ ਐਂਗਲਟ੍ਰਮ + + + ਬੋਟਸਵਾਨਾ ਪੁਲਾ + ਬੋਟਸਵਾਨਾ ਪੁਲਾ + ਬੋਟਸਵਾਨਾ ਪੁਲਾ + + + ਬੇਲਾਰੂਸੀ ਰੂਬਲ + ਬੇਲਾਰੂਸੀ ਰੂਬਲ + ਬੇਲਾਰੂਸੀ ਰੂਬਲ + + + ਬੇਲੀਜ਼ ਡਾਲਰ + ਬੇਲੀਜ਼ ਡਾਲਰ + ਬੇਲੀਜ਼ ਡਾਲਰ + + + ਕੇਨੇਡਿਆਈ ਡਾਲਰ + ਕੇਨੇਡਿਆਈ ਡਾਲਰ + ਕੇਨੇਡਿਆਈ ਡਾਲਰ + CA$ + + + ਕਾਂਗੋਲੀਜ਼ ਫ੍ਰੈਂਕ + ਕਾਂਗੋਲੀਜ਼ ਫ੍ਰੈਂਕ + ਕਾਂਗੋਲੀਜ਼ ਫ੍ਰੈਂਕ + + + ਸਵਿਸ ਫ੍ਰੈਂਕ + ਸਵਿਸ ਫ੍ਰੈਂਕ + ਸਵਿਸ ਫ੍ਰੈਂਕ + + + ਚਿਲੀਅਨ ਪੈਸੋ + ਚਿਲੀਅਨ ਪੈਸੋ + ਚਿਲੀਅਨ ਪੈਸੋ + + + ਚੀਨੀ ਯੁਆਨ + ਚੀਨੀ ਯੁਆਨ + ਚੀਨੀ ਯੁਆਨ + CN¥ + + + ਕੋਲੰਬੀਅਨ ਪੈਸੋ + ਕੋਲੰਬੀਅਨ ਪੈਸੋ + ਕੋਲੰਬੀਅਨ ਪੈਸੋ + + + ਕੋਸਟਾ ਰੀਕਨ ਕੋਲਨ + ਕੋਸਟਾ ਰੀਕਨ ਕੋਲਨ + ਕੋਸਟਾ ਰੀਕਨ ਕੋਲਨ + + + ਕਿਊਬਨ ਬਦਲਣ੍ਯੋਗ ਪੈਸੋ + ਕਿਊਬਨ ਬਦਲਣ੍ਯੋਗ ਪੈਸੋ + ਕਿਊਬਨ ਬਦਲਣ੍ਯੋਗ ਪੈਸੋ + + + ਕਿਊਬਨ ਪੈਸੋ + ਕਿਊਬਨ ਪੈਸੋ + ਕਿਊਬਨ ਪੈਸੋ + + + ਕੇਪ ਵਰਡੀਅਨ ਸ਼ਿਊਡੋ + ਕੇਪ ਵਰਡੀਅਨ ਸ਼ਿਊਡੋ + ਕੇਪ ਵਰਡੀਅਨ ਸ਼ਿਊਡੋ + + + ਚੈਕ ਗਣਰਾਜ ਕੋਰੁਨਾ + ਚੈਕ ਗਣਰਾਜ ਕੋਰੁਨਾ + ਚੈਕ ਗਣਰਾਜ ਕੋਰੁਨਾ + + + ਜ਼ੀਬੂਤੀਅਨ ਫ੍ਰੈਂਕ + ਜ਼ੀਬੂਤੀਅਨ ਫ੍ਰੈਂਕ + ਜ਼ੀਬੂਤੀਅਨ ਫ੍ਰੈਂਕ + + + ਦਾਨਿਸ਼ ਕਰੌਨ + ਦਾਨਿਸ਼ ਕਰੌਨ + ਦਾਨਿਸ਼ ਕਰੌਨ + + + ਡੌਮਿਨਿਕਨ ਪੈਸੋ + ਡੌਮਿਨਿਕਨ ਪੈਸੋ + ਡੌਮਿਨਿਕਨ ਪੈਸੋ + + + ਅਲਜੀਰਿਆਈ ਦਿਨਾਰ + ਅਲਜੀਰਿਆਈ ਦਿਨਾਰ + ਅਲਜੀਰਿਆਈ ਦਿਨਾਰ + + + ਮਿਸਰੀ ਪਾਉਂਡ + ਮਿਸਰੀ ਪਾਉਂਡ + ਮਿਸਰੀ ਪਾਉਂਡ + + + ਇਰੀਟ੍ਰਿਆਈ ਨਾਕਫਾ + ਇਰੀਟ੍ਰਿਆਈ ਨਾਕਫਾ + ਇਰੀਟ੍ਰਿਆਈ ਨਾਕਫਾ + + + ਇਥੋਪੀਆਈ ਬਿਰ + ਇਥੋਪੀਆਈ ਬਿਰ + ਇਥੋਪੀਆਈ ਬਿਰ + + + ਯੂਰੋ + ਯੂਰੋ + ਯੂਰੋ + + + + ਫ਼ਿਜੀਆਈ ਡਾਲਰ + ਫ਼ਿਜੀਆਈ ਡਾਲਰ + ਫ਼ਿਜੀਆਈ ਡਾਲਰ + + + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਪਾਉਂਡ + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਪਾਉਂਡ + ਫ਼ਾਕਲੈਂਡ ਆਈਲੈਂਡਸ ਪਾਉਂਡ + + + ਬ੍ਰਿਟਿਸ਼ ਪਾਉਂਡ ਸਟਰਲਿੰਗ + ਬ੍ਰਿਟਿਸ਼ ਪਾਉਂਡ ਸਟਰਲਿੰਗ + ਬ੍ਰਿਟਿਸ਼ ਪਾਉਂਡ ਸਟਰਲਿੰਗ + £ + + + ਜਾਰਜਿਆਈ ਲਾਰੀ + ਜਾਰਜਿਆਈ ਲਾਰੀ + ਜਾਰਜਿਆਈ ਲਾਰੀ + + + ਘਾਨਾਈ ਸੇਡੀ + ਘਾਨਾਈ ਸੇਡੀ + ਘਾਨਾਈ ਸੇਡੀ + + + ਜਿਬਰਾਲਟਰ ਪਾਉਂਡ + ਜਿਬਰਾਲਟਰ ਪਾਉਂਡ + ਜਿਬਰਾਲਟਰ ਪਾਉਂਡ + + + ਗਾਂਬੀਆਈ ਦਲਾਸੀ + ਗਾਂਬੀਆਈ ਦਲਾਸੀ + ਗਾਂਬੀਆਈ ਦਲਾਸੀ + + + ਗਿਨੀਅਨ ਫ੍ਰੈਂਕ + ਗਿਨੀਅਨ ਫ੍ਰੈਂਕ + ਗਿਨੀਅਨ ਫ੍ਰੈਂਕ + + + ਗੁਆਟੇਮਾਲਾ ਕੁਏਟਜ਼ਲ + ਗੁਆਟੇਮਾਲਾ ਕੁਏਟਜ਼ਲ + ਗੁਆਟੇਮਾਲਾ ਕੁਏਟਜ਼ਲ + + + ਗੁਯਾਨਾਈਜ਼ ਡਾਲਰ + ਗੁਯਾਨਾਈਜ਼ ਡਾਲਰ + ਗੁਯਾਨਾਈਜ਼ ਡਾਲਰ + + + ਹਾਂਗ ਕਾਂਗ ਡਾਲਰ + ਹਾਂਗ ਕਾਂਗ ਡਾਲਰ + ਹਾਂਗ ਕਾਂਗ ਡਾਲਰ + HK$ + + + ਹਾਨਡੂਰਨ ਲੇਮਪਿਰਾ + ਹਾਨਡੂਰਨ ਲੇਮਪਿਰਾ + ਹਾਨਡੂਰਨ ਲੇਮਪਿਰਾ + + + ਕਰੋਏਸ਼ੀਆਈ ਕੁਨਾ + ਕਰੋਏਸ਼ੀਆਈ ਕੁਨਾ + ਕਰੋਏਸ਼ੀਆਈ ਕੁਨਾ + + + ਹਾਈਟੀਅਨ ਗੌਰਡੇ + ਹਾਈਟੀਅਨ ਗੌਰਡੇ + ਹਾਈਟੀਅਨ ਗੌਰਡੇ + + + ਹੰਗਰਾਈ ਫੋਰਿੰਟ + ਹੰਗਰਾਈ ਫੋਰਿੰਟ + ਹੰਗਰਾਈ ਫੋਰਿੰਟ + + + ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੁਪਿਆਹ + ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੁਪਿਆਹ + ਇੰਡੋਨੇਸ਼ੀਆਈ ਰੁਪਿਆਹ + + + ਇਜ਼ਰਾਈਲੀ ਨਵੀਂ ਸ਼ੇਕੇਲ + ਇਜ਼ਰਾਈਲੀ ਨਵੀਂ ਸ਼ੇਕੇਲ + ਇਜ਼ਰਾਈਲੀ ਨਵੀਂ ਸ਼ੇਕੇਲ + + + + ਭਾਰਤੀ ਰੁਪਏ + ਭਾਰਤੀ ਰੁਪਏ + ਭਾਰਤੀ ਰੁਪਏ + + + + ਇਰਾਕੀ ਦਿਨਾਰ + ਇਰਾਕੀ ਦਿਨਾਰ + ਇਰਾਕੀ ਦਿਨਾਰ + + + ਈਰਾਨੀ ਰਿਆਲ + ਈਰਾਨੀ ਰਿਆਲ + ਈਰਾਨੀ ਰਿਆਲ + + + ਆਈਸਲੈਂਡਿਕ ਕਰੌਨ + ਆਈਸਲੈਂਡਿਕ ਕਰੌਨ + ਆਈਸਲੈਂਡਿਕ ਕਰੌਨ + + + ਜਮਾਇਕਨ ਡਾਲਰ + ਜਮਾਇਕਨ ਡਾਲਰ + ਜਮਾਇਕਨ ਡਾਲਰ + + + ਜੌਰਡਨੀਆਈ ਦਿਨਾਰ + ਜੌਰਡਨੀਆਈ ਦਿਨਾਰ + ਜੌਰਡਨੀਆਈ ਦਿਨਾਰ + + + ਜਾਪਾਨੀ ਯੇਨ + ਜਾਪਾਨੀ ਯੇਨ + ਜਾਪਾਨੀ ਯੇਨ + JP¥ + + + ਕੀਨੀਆਈ ਸ਼ਿਲਿੰਗ + ਕੀਨੀਆਈ ਸ਼ਿਲਿੰਗ + ਕੀਨੀਆਈ ਸ਼ਿਲਿੰਗ + + + ਕਿਰਗਿਸਤਾਨੀ ਸੋਮ + ਕਿਰਗਿਸਤਾਨੀ ਸੋਮ + ਕਿਰਗਿਸਤਾਨੀ ਸੋਮ + + + ਕੰਬੋਡੀਆਈ ਰੀਅਲ + ਕੰਬੋਡੀਆਈ ਰੀਅਲ + ਕੰਬੋਡੀਆਈ ਰੀਅਲ + + + ਕੋਮੋਰੀਅਨ ਫੈਂਕ + ਕੋਮੋਰੀਅਨ ਫੈਂਕ + ਕੋਮੋਰੀਅਨ ਫੈਂਕ + + + ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੋਨ + ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੋਨ + ਉੱਤਰੀ ਕੋਰੀਆਈ ਵੋਨ + + + ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੋਨ + ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੋਨ + ਦੱਖਣੀ ਕੋਰੀਆਈ ਵੋਨ + + + + ਕੁਵੈਤੀ ਦਿਨਾਰ + ਕੁਵੈਤੀ ਦਿਨਾਰ + ਕੁਵੈਤੀ ਦਿਨਾਰ + + + ਕੇਮੈਨ ਆਈਲੈਂਡਸ ਡਾਲਰ + ਕੇਮੈਨ ਆਈਲੈਂਡਸ ਡਾਲਰ + ਕੇਮੈਨ ਆਈਲੈਂਡਸ ਡਾਲਰ + + + ਕਜ਼ਾਕਸਤਾਨੀ ਤੇਂਗੇ + ਕਜ਼ਾਕਸਤਾਨੀ ਤੇਂਗੇ + ਕਜ਼ਾਕਸਤਾਨੀ ਤੇਂਗੇ + + + ਲਾਓਟਿਆਈ ਕਿਪ + ਲਾਓਟਿਆਈ ਕਿਪ + ਲਾਓਟਿਆਈ ਕਿਪ + + + ਲੈਬਨਾਨੀ ਪਾਉਂਡ + ਲੈਬਨਾਨੀ ਪਾਉਂਡ + ਲੈਬਨਾਨੀ ਪਾਉਂਡ + + + ਸ੍ਰੀ ਲੰਕਾਈ ਰੁਪਏ + ਸ੍ਰੀ ਲੰਕਾਈ ਰੁਪਏ + ਸ੍ਰੀ ਲੰਕਾਈ ਰੁਪਏ + + + ਲਾਈਬੀਰੀਆਈ ਡਾਲਰ + ਲਾਈਬੀਰੀਆਈ ਡਾਲਰ + ਲਾਈਬੀਰੀਆਈ ਡਾਲਰ + + + ਲਿਥੁਆਨੀਆਈ ਲਿਤਾਸ + ਲਿਥੁਆਨੀਆਈ ਲਿਤਾਸ + ਲਿਥੁਆਨੀਆਈ ਲਿਤਾਸ + + + ਲਾਟਵਿਆਈ ਲਾਟਸ + ਲਾਟਵਿਆਈ ਲਾਟਸ + ਲਾਟਵਿਆਈ ਲਾਟਸ + + + ਲੀਬੀਅਨ ਦਿਨਾਰ + ਲੀਬੀਅਨ ਦਿਨਾਰ + ਲੀਬੀਅਨ ਦਿਨਾਰ + + + ਮੋਰੱਕਨ ਦਿਰਹਾਮ + ਮੋਰੱਕਨ ਦਿਰਹਾਮ + ਮੋਰੱਕਨ ਦਿਰਹਾਮ + + + ਮੋਲਡੋਵਨ ਲਿਯੂ + ਮੋਲਡੋਵਨ ਲਿਯੂ + ਮੋਲਡੋਵਨ ਲਿਯੂ + + + ਮਾਲਾਗਾਸੀ ਅਰਾਇਰੀ + ਮਾਲਾਗਾਸੀ ਅਰਾਇਰੀ + ਮਾਲਾਗਾਸੀ ਅਰਾਇਰੀ + + + ਮੈਕਡੋਨੀਆਈ ਡੇਨਾਰ + ਮੈਕਡੋਨੀਆਈ ਡੇਨਾਰ + ਮੈਕਡੋਨੀਆਈ ਡੇਨਾਰ + + + ਮਿਆਂਮਾ ਕ੍ਯਾਤ + ਮਿਆਂਮਾ ਕ੍ਯਾਤ + ਮਿਆਂਮਾ ਕ੍ਯਾਤ + + + ਮੰਗੋਲੀਆਈ ਤੁਗਰਿਕ + ਮੰਗੋਲੀਆਈ ਤੁਗਰਿਕ + ਮੰਗੋਲੀਆਈ ਤੁਗਰਿਕ + + + ਮੇਕਾਨੀ ਪਟਾਕਾ + ਮੇਕਾਨੀ ਪਟਾਕਾ + ਮੇਕਾਨੀ ਪਟਾਕਾ + + + ਮੋਰਿਟਾਨੀਆਈ ਊਗੀਆ + ਮੋਰਿਟਾਨੀਆਈ ਊਗੀਆ + ਮੋਰਿਟਾਨੀਆਈ ਊਗੀਆ + + + ਮੌਰਿਸ਼ੀਆਈ ਰੁਪਏ + ਮੌਰਿਸ਼ੀਆਈ ਰੁਪਏ + ਮੌਰਿਸ਼ੀਆਈ ਰੁਪਏ + + + ਮਾਲਦੀਵੀ ਰੁਫੀਆ + ਮਾਲਦੀਵੀ ਰੁਫੀਆ + ਮਾਲਦੀਵੀ ਰੁਫੀਆ + + + ਮਾਲਾਵੀਆਈ ਕਵਾਚਾ + ਮਾਲਾਵੀਆਈ ਕਵਾਚਾ + ਮਾਲਾਵੀਆਈ ਕਵਾਚਾ + + + ਮੈਕਸਿਕਨ ਪੈਸੋ + ਮੈਕਸਿਕਨ ਪੈਸੋ + ਮੈਕਸਿਕਨ ਪੈਸੋ + MX$ + + + ਮੇਲੇਸ਼ਿਆਈ ਰਿਨਗਿੱਟ + ਮੇਲੇਸ਼ਿਆਈ ਰਿਨਗਿੱਟ + ਮੇਲੇਸ਼ਿਆਈ ਰਿਨਗਿੱਟ + + + ਮੋਜ਼ਾਮਬੀਕਨ ਮੈਟੀਕਲ + ਮੋਜ਼ਾਮਬੀਕਨ ਮੈਟੀਕਲ + ਮੋਜ਼ਾਮਬੀਕਨ ਮੈਟੀਕਲ + + + ਨਾਮੀਬੀਆਈ ਡਾਲਰ + ਨਾਮੀਬੀਆਈ ਡਾਲਰ + ਨਾਮੀਬੀਆਈ ਡਾਲਰ + + + ਨਾਇਜੀਰੀਆਈ ਨਾਇਰਾ + ਨਾਇਜੀਰੀਆਈ ਨਾਇਰਾ + ਨਾਇਜੀਰੀਆਈ ਨਾਇਰਾ + + + ਨਿਕਾਰਾਗੁਆਨ ਕੋਰਡੋਬਾ + ਨਿਕਾਰਾਗੁਆਨ ਕੋਰਡੋਬਾ + ਨਿਕਾਰਾਗੁਆਨ ਕੋਰਡੋਬਾ + + + ਨੌਰਵੇਜਿਅਨ ਕਰੌਨ + ਨੌਰਵੇਜਿਅਨ ਕਰੌਨ + ਨੌਰਵੇਜਿਅਨ ਕਰੌਨ + + + ਨੇਪਾਲੀ ਰੁਪਏ + ਨੇਪਾਲੀ ਰੁਪਏ + ਨੇਪਾਲੀ ਰੁਪਏ + + + ਨਿਊਜ਼ੀਲੈਂਡ ਡਾਲਰ + ਨਿਊਜ਼ੀਲੈਂਡ ਡਾਲਰ + ਨਿਊਜ਼ੀਲੈਂਡ ਡਾਲਰ + NZ$ + + + ਓਮਾਨੀ ਰਿਆਲ + ਓਮਾਨੀ ਰਿਆਲ + ਓਮਾਨੀ ਰਿਆਲ + + + ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ + ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ + ਪਨਾਮੇਨੀਅਨ ਬਾਲਬੋਆ + + + ਪੇਰੂਵੀਅਨ ਨਿਊਵੋ ਸੋਲ + ਪੇਰੂਵੀਅਨ ਨਿਊਵੋ ਸੋਲ + ਪੇਰੂਵੀਅਨ ਨਿਊਵੋ ਸੋਲ + + + ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕਿਨਾ + ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕਿਨਾ + ਪਾਪੂਆ ਨਿਊ ਗਿਨੀਆਈ ਕਿਨਾ + + + ਫਿਲਿਪੀਨੀ ਪੈਸੋ + ਫਿਲਿਪੀਨੀ ਪੈਸੋ + ਫਿਲਿਪੀਨੀ ਪੈਸੋ + + + ਪਾਕਿਸਤਾਨੀ ਰੁਪਏ + ਪਾਕਿਸਤਾਨੀ ਰੁਪਏ + ਪਾਕਿਸਤਾਨੀ ਰੁਪਏ + + + ਪੋਲਿਸ਼ ਜ਼ਲੌਟੀ + ਪੋਲਿਸ਼ ਜ਼ਲੌਟੀ + ਪੋਲਿਸ਼ ਜ਼ਲੌਟੀ + + + ਪੈਰਾਗੁਵਾਇਨ ਗੁਆਰਾਨੀ + ਪੈਰਾਗੁਵਾਇਨ ਗੁਆਰਾਨੀ + ਪੈਰਾਗੁਵਾਇਨ ਗੁਆਰਾਨੀ + + + ਕਤਰੀ ਰਿਆਲ + ਕਤਰੀ ਰਿਆਲ + ਕਤਰੀ ਰਿਆਲ + + + ਰੋਮਾਨੀਆਈ ਲਿਯੂ + ਰੋਮਾਨੀਆਈ ਲਿਯੂ + ਰੋਮਾਨੀਆਈ ਲਿਯੂ + + + ਸਰਬੀਆਈ ਦਿਨਾਰ + ਸਰਬੀਆਈ ਦਿਨਾਰ + ਸਰਬੀਆਈ ਦਿਨਾਰ + + + ਰੂਸੀ ਰੂਬਲ + ਰੂਸੀ ਰੂਬਲ + ਰੂਸੀ ਰੂਬਲ + + + ਰਵਾਂਡਨ ਫ੍ਰੈਂਕ + ਰਵਾਂਡਨ ਫ੍ਰੈਂਕ + ਰਵਾਂਡਨ ਫ੍ਰੈਂਕ + + + ਸਾਉਦੀ ਰਿਆਲ + ਸਾਉਦੀ ਰਿਆਲ + ਸਾਉਦੀ ਰਿਆਲ + + + ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਡਾਲਰ + ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਡਾਲਰ + ਸੋਲੋਮਨ ਆਈਲੈਂਡਸ ਡਾਲਰ + + + ਸੇਸ਼ਲਸ ਰੁਪਏ + ਸੇਸ਼ਲਸ ਰੁਪਏ + ਸੇਸ਼ਲਸ ਰੁਪਏ + + + ਸੁਡਾਨੀਜ਼ ਪਾਉਂਡ + ਸੁਡਾਨੀਜ਼ ਪਾਉਂਡ + ਸੁਡਾਨੀਜ਼ ਪਾਉਂਡ + + + ਸਵੀਡਿਸ਼ ਕਰੋਨਾ + ਸਵੀਡਿਸ਼ ਕਰੋਨਾ + ਸਵੀਡਿਸ਼ ਕਰੋਨਾ + + + ਸਿੰਗਾਪੁਰ ਡਾਲਰ + ਸਿੰਗਾਪੁਰ ਡਾਲਰ + ਸਿੰਗਾਪੁਰ ਡਾਲਰ + + + ਸੇਂਟ ਹੇਲੇਨਾ ਪਾਉਂਡ + ਸੇਂਟ ਹੇਲੇਨਾ ਪਾਉਂਡ + ਸੇਂਟ ਹੇਲੇਨਾ ਪਾਉਂਡ + + + ਸਿਏਰਾ ਲਿਓਨੀਅਨ ਲਿਓਨ + ਸਿਏਰਾ ਲਿਓਨੀਅਨ ਲਿਓਨ + ਸਿਏਰਾ ਲਿਓਨੀਅਨ ਲਿਓਨ + + + ਸੋਮਾਲੀ ਸ਼ਿਲਿੰਗ + ਸੋਮਾਲੀ ਸ਼ਿਲਿੰਗ + ਸੋਮਾਲੀ ਸ਼ਿਲਿੰਗ + + + ਸੂਰੀਨਾਮੀਜ਼ ਡਾਲਰ + ਸੂਰੀਨਾਮੀਜ਼ ਡਾਲਰ + ਸੂਰੀਨਾਮੀਜ਼ ਡਾਲਰ + + + ਦੱਖਣੀ ਸੁਡਾਨੀਜ਼ ਪਾਉਂਡ + ਦੱਖਣੀ ਸੁਡਾਨੀਜ਼ ਪਾਉਂਡ + ਦੱਖਣੀ ਸੁਡਾਨੀਜ਼ ਪਾਉਂਡ + + + ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ + ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ + ਸਾਉ ਟੋਮੀ ਐਂਡ ਪ੍ਰਿੰਸਪੀ ਡੋਬਰਾ + + + ਸੀਰੀਆਈ ਪਾਉਂਡ + ਸੀਰੀਆਈ ਪਾਉਂਡ + ਸੀਰੀਆਈ ਪਾਉਂਡ + + + ਸਵਾਜ਼ੀ ਲਾਇਲੈਂਗਨੀ + ਸਵਾਜ਼ੀ ਲਾਇਲੈਂਗਨੀ + ਸਵਾਜ਼ੀ ਲਾਇਲੈਂਗਨੀ + + + ਥਾਈ ਬਾਹਤ + ਥਾਈ ਬਾਹਤ + ਥਾਈ ਬਾਹਤ + ฿ + + + ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ + ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ + ਤਾਜਿਕਿਸਤਾਨੀ ਸੋਮੋਨੀ + + + ਤੁਰਕਮੇਨਿਸਤਾਨੀ ਮਾਨਤ + ਤੁਰਕਮੇਨਿਸਤਾਨੀ ਮਾਨਤ + ਤੁਰਕਮੇਨਿਸਤਾਨੀ ਮਾਨਤ + + + ਟਿਉਨੀਸ਼ੀਆਈ ਦਿਨਾਰ + ਟਿਉਨੀਸ਼ੀਆਈ ਦਿਨਾਰ + ਟਿਉਨੀਸ਼ੀਆਈ ਦਿਨਾਰ + + + ਟੌਂਗਨ ਪੈਂਗਾ + ਟੌਂਗਨ ਪੈਂਗਾ + ਟੌਂਗਨ ਪੈਂਗਾ + + + ਤੁਰਕਿਸ਼ ਲਿਰਾ + ਤੁਰਕਿਸ਼ ਲਿਰਾ + ਤੁਰਕਿਸ਼ ਲਿਰਾ + + + ਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋ ਡਾਲਰ + ਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋ ਡਾਲਰ + ਟ੍ਰਿਨੀਡਾਡ ਅਤੇ ਟੋਬਾਗੋ ਡਾਲਰ + + + ਨਵਾਂ ਤਾਇਵਾਨ ਡਾਲਰ + ਨਵਾਂ ਤਾਇਵਾਨ ਡਾਲਰ + ਨਵਾਂ ਤਾਇਵਾਨ ਡਾਲਰ + NT$ + + + ਤਨਜ਼ਾਨੀਆਈ ਸ਼ਿਲਿੰਗ + ਤਨਜ਼ਾਨੀਆਈ ਸ਼ਿਲਿੰਗ + ਤਨਜ਼ਾਨੀਆਈ ਸ਼ਿਲਿੰਗ + + + ਯੂਕਰੇਨੀਆਈ ਰਿਵਨਿਆ + ਯੂਕਰੇਨੀਆਈ ਰਿਵਨਿਆ + ਯੂਕਰੇਨੀਆਈ ਰਿਵਨਿਆ + + + ਯੂਗਾਂਡਨ ਸ਼ਿਲਿੰਗ + ਯੂਗਾਂਡਨ ਸ਼ਿਲਿੰਗ + ਯੂਗਾਂਡਨ ਸ਼ਿਲਿੰਗ + + + ਯੂ.ਐਸ. ਡਾਲਰ + ਯੂ.ਐਸ. ਡਾਲਰ + ਯੂ.ਐਸ. ਡਾਲਰ + US$ + + + ਉਰੂਗੁਵਾਇਨ ਪੈਸੋ + ਉਰੂਗੁਵਾਇਨ ਪੈਸੋ + ਉਰੂਗੁਵਾਇਨ ਪੈਸੋ + + + ਉਜ਼ਬੇਕਿਸਤਾਨ ਸੋਮ + ਉਜ਼ਬੇਕਿਸਤਾਨ ਸੋਮ + ਉਜ਼ਬੇਕਿਸਤਾਨ ਸੋਮ + + + ਵੇਨੇਜ਼ੂਏਲਨ ਬੋਲੀਵਰ + ਵੇਨੇਜ਼ੂਏਲਨ ਬੋਲੀਵਰ + ਵੇਨੇਜ਼ੂਏਲਨ ਬੋਲੀਵਰ + + + ਵਿਯਤਨਾਮੀ ਡੋਂਗ + ਵਿਯਤਨਾਮੀ ਡੋਂਗ + ਵਿਯਤਨਾਮੀ ਡੋਂਗ + + + + ਵਾਨੂਆਟੂ ਵਾਟੂ + ਵਾਨੂਆਟੂ ਵਾਟੂ + ਵਾਨੂਆਟੂ ਵਾਟੂ + + + ਸਾਮੋਆਈ ਤਾਲਾ + ਸਾਮੋਆਈ ਤਾਲਾ + ਸਾਮੋਆਈ ਤਾਲਾ + + + ਫ੍ਰੈਂਕ (CFA BEAC) + ਫ੍ਰੈਂਕ (CFA BEAC) + ਫ੍ਰੈਂਕ (CFA BEAC) + FCFA + + + ਪੂਰਬੀ ਕੈਰੇਬੀਅਨ ਡਾਲਰ + ਪੂਰਬੀ ਕੈਰੇਬੀਅਨ ਡਾਲਰ + ਪੂਰਬੀ ਕੈਰੇਬੀਅਨ ਡਾਲਰ + EC$ + + + ਫ੍ਰੈਂਕ (CFA BCEAO) + ਫ੍ਰੈਂਕ (CFA BCEAO) + ਫ੍ਰੈਂਕ (CFA BCEAO) + CFA + + + ਫ੍ਰੈਂਕ (CFP) + ਫ੍ਰੈਂਕ (CFP) + ਫ੍ਰੈਂਕ (CFP) + CFPF + + + ਅਗਿਆਤ ਮੁਦਰਾ + (ਮੁਦਰਾ ਦੀ ਅਗਿਆਤ ਇਕਾਈ) + (ਅਗਿਆਤ ਮੁਦਰਾ) + + + ਯਮਨੀ ਰਿਆਲ + ਯਮਨੀ ਰਿਆਲ + ਯਮਨੀ ਰਿਆਲ + + + ਦੱਖਣੀ ਅਫਰੀਕੀ ਰੈਂਡ + ਦੱਖਣੀ ਅਫਰੀਕੀ ਰੈਂਡ + ਦੱਖਣੀ ਅਫਰੀਕੀ ਰੈਂਡ + + + ਜ਼ਾਮਬੀਆਈ ਕਵਾਚਾ + ਜ਼ਾਮਬੀਆਈ ਕਵਾਚਾ + ਜ਼ਾਮਬੀਆਈ ਕਵਾਚਾ + + + + {0}+ + {0}–{1} + + + + + + {0} ਪ੍ਰਤੀ {1} + + + {0} ਗੁਰੂਤੱਵ ਆਕਰਸ਼ਨ ਸ਼ਕਤੀ + {0} ਗੁਰੂਤੱਵ ਆਕਰਸ਼ਨ ਸ਼ਕਤੀ + + + {0} ਮਿਨਟ + {0} ਮਿਨਟ + + + {0} ਸੈਕੇਂਡ + {0} ਸੈਕੇਂਡ + + + {0} ਡਿਗਰੀ + {0} ਡਿਗਰੀ + + + {0} ਏਕੜ + {0} ਏਕੜ + + + {0} ਹੈਕਟੇਅਰ + {0} ਹੈਕਟੇਅਰ + + + {0} ਵਰਗ ਫੁੱਟ + {0} ਵਰਗ ਫੁੱਟ + + + {0} ਵਰਗ ਕਿਲੋਮੀਟਰ + {0} ਵਰਗ ਕਿਲੋਮੀਟਰ + + + {0} ਵਰਗ ਮੀਟਰ + {0} ਵਰਗ ਮੀਟਰ + + + {0} ਵਰਗ ਮੀਲ + {0} ਵਰਗ ਮੀਲ + + + {0} ਦਿਨ + {0} ਦਿਨ + + + {0} ਘੰਟਾ + {0} ਘੰਟੇ + + + {0} ਮਿਲੀ ਸਕਿੰਟ + {0} ਮਿਲੀ ਸਕਿੰਟ + + + {0} ਮਿੰਟ + {0} ਮਿੰਟ + + + {0} ਮਹੀਨਾ + {0} ਮਹੀਨੇ + + + {0} ਸਕਿੰਟ + {0} ਸਕਿੰਟ + + + {0} ਹਫ਼ਤਾ + {0} ਹਫ਼ਤੇ + + + {0} ਸਾਲ + {0} ਸਾਲ + + + {0} ਸੈਂਟੀਮੀਟਰ + {0} ਸੈਂਟੀਮੀਟਰ + + + {0} ਫੁੱਟ + {0} ਫੁੱਟ + + + {0} ਇੰਚ + {0} ਇੰਚ + + + {0} ਕਿਲੋਮੀਟਰ + {0} ਕਿਲੋਮੀਟਰ + + + {0} ਪ੍ਰਕਾਸ਼ ਸਾਲ + {0} ਪ੍ਰਕਾਸ਼ ਸਾਲ + + + {0} ਮੀਟਰ + {0} ਮੀਟਰ + + + {0} ਮੀਲ + {0} ਮੀਲ + + + {0} ਮਿਲੀਮੀਟਰ + {0} ਮਿਲੀਮੀਟਰ + + + {0} ਪਿਕੋਮੀਟਰ + {0} ਪਿਕੋਮੀਟਰ + + + {0} ਯਾਰਡ + {0} ਯਾਰਡ + + + {0} ਗ੍ਰਾਮ + {0} ਗ੍ਰਾਮ + + + {0} ਕਿਲੋਗ੍ਰਾਮ + {0} ਕਿਲੋਗ੍ਰਾਮ + + + {0} ਆਉਂਸ + {0} ਆਉਂਸ + + + {0} ਪਾਉਂਡ + {0} ਪਾਉਂਡ + + + {0} ਹੌਰਸਪਾਵਰ + {0} ਹੌਰਸਪਾਵਰ + + + {0} ਕਿਲੋਵਾਟ + {0} ਕਿਲੋਵਾਟ + + + {0} ਵਾਟ + {0} ਵਾਟ + + + {0} ਹੈਕਟੋਪਾਸਕਲ + {0} ਹੈਕਟੋਪਾਸਕਲ + + + {0} ਪਾਰੇ ਦਾ ਇੰਚ + {0} ਪਾਰੇ ਦਾ ਇੰਚ + + + {0} ਮਿਲੀਬਾਰ + {0} ਮਿਲੀਬਾਰ + + + {0} ਕਿਲੋਮੀਟਰ ਪ੍ਰਤੀ ਘੰਟਾ + {0} ਕਿਲੋਮੀਟਰ ਪ੍ਰਤੀ ਘੰਟਾ + + + {0} ਮੀਟਰ ਪ੍ਰਤੀ ਸਕਿੰਟ + {0} ਮੀਟਰ ਪ੍ਰਤੀ ਸਕਿੰਟ + + + {0} ਮੀਲ ਪ੍ਰਤੀ ਘੰਟਾ + {0} ਮੀਲ ਪ੍ਰਤੀ ਘੰਟਾ + + + {0} ਡਿਗਰੀ ਸੈਲਸੀਅਸ + {0} ਡਿਗਰੀ ਸੈਲਸੀਅਸ + + + {0} ਡਿਗਰੀ ਫਾਰੇਨਹਾਈਟ + {0} ਡਿਗਰੀ ਫਾਰੇਨਹਾਈਟ + + + {0} ਘਣ ਕਿਲੋਮੀਟਰ + {0} ਘਣ ਕਿਲੋਮੀਟਰ + + + {0} ਘਣ ਮੀਲ + {0} ਘਣ ਮੀਲ + + + {0} ਲੀਟਰ + {0} ਲੀਟਰ + + + + + {0}/{1} + + + {0} ਗੁ-ਸ਼ਕਤੀ + {0} ਗੁ-ਸ਼ਕਤੀ + + + {0} ਮਿਨਟ + {0} ਮਿਨਟ + + + {0} ਸੈਕੇਂਡ + {0} ਸੈਕੇਂਡ + + + {0} ਡਿ. + {0} ਡਿ. + + + {0} ਏਕੜ + {0} ਏਕੜ + + + {0} ਹੈਕਟੇਅਰ + {0} ਹੈਕਟੇਅਰ + + + {0} ਵ.ਫੁੱ. + {0} ਵ.ਫੁੱ. + + + {0} ਵ.ਕਿ.ਮੀ. + {0} ਵ.ਕਿ.ਮੀ. + + + {0} ਵ.ਮੀ. + {0} ਵ.ਮੀ. + + + {0} ਵ. ਮੀਲ + {0} ਵ. ਮੀਲ + + + {0} ਦਿਨ + {0} ਦਿਨ + + + {0} ਘੰਟਾ + {0} ਘੰਟੇ + + + {0} ਮਿਲੀ ਸਕਿੰਟ + {0} ਮਿਲੀ ਸਕਿੰਟ + + + {0} ਮਿੰਟ + {0} ਮਿੰਟ + + + {0} ਮਹੀਨਾ + {0} ਮਹੀਨੇ + + + {0} ਸਕਿੰਟ + {0} ਸਕਿੰਟ + + + {0} ਹਫ਼ਤਾ + {0} ਹਫ਼ਤੇ + + + {0} ਸਾਲ + {0} ਸਾਲ + + + {0} ਸੈਂਟੀਮੀਟਰ + {0} ਸੈਂਟੀਮੀਟਰ + + + {0} ਫੁੱ. + {0} ਫੁੱ. + + + {0} ਇੰਚ + {0} ਇੰਚ + + + {0} ਕਿ.ਮੀ. + {0} ਕਿ.ਮੀ. + + + {0} ਪ੍ਰਕਾਸ਼ ਸਾਲ + {0} ਪ੍ਰਕਾਸ਼ ਸਾਲ + + + {0} ਮੀ. + {0} ਮੀ. + + + {0} ਮੀਲ + {0} ਮੀਲ + + + {0} ਮਿ.ਮੀ. + {0} ਮਿ.ਮੀ. + + + {0} ਪਿਕੋਮੀਟਰ + {0} ਪਿਕੋਮੀਟਰ + + + {0} ਯਾਰਡ + {0} ਯਾਰਡ + + + {0} ਗ੍ਰਾ. + {0} ਗ੍ਰਾ. + + + {0} ਕਿ.ਗ੍ਰਾ. + {0} ਕਿ.ਗ੍ਰਾ. + + + {0} ਆਉਂਸ + {0} ਆਉਂਸ + + + {0} ਪਾਉਂਡ + {0} ਪਾਉਂਡ + + + {0} ਹੌਰਸਪਾਵਰ + {0} ਹੌਰਸਪਾਵਰ + + + {0} ਕਿ. ਵਾਟ + {0} ਕਿ. ਵਾਟ + + + {0} ਵਾਟ + {0} ਵਾਟ + + + {0} ਹੈਕਟੋਪਾਸਕਲ + {0} ਹੈਕਟੋਪਾਸਕਲ + + + {0} ਪਾਰੇ ਦਾ ਇੰਚ + {0} ਪਾਰੇ ਦਾ ਇੰਚ + + + {0} ਮਿਲੀਬਾਰ + {0} ਮਿਲੀਬਾਰ + + + {0} ਕਿ.ਮੀ./ਘੰਟਾ + {0} ਕਿ.ਮੀ./ਘੰਟਾ + + + {0} ਮੀ./ਸਕਿੰਟ + {0} ਮੀ./ਸਕਿੰਟ + + + {0} ਮੀਲ/ਘੰਟਾ + {0} ਮੀਲ/ਘੰਟਾ + + + {0} ਡਿਗਰੀ ਸੈਲਸੀਅਸ + {0} ਡਿਗਰੀ ਸੈਲਸੀਅਸ + + + {0} ਡਿਗਰੀ ਫਾਰੇਨਹਾਈਟ + {0} ਡਿਗਰੀ ਫਾਰੇਨਹਾਈਟ + + + {0} ਘਣ ਕਿ.ਮੀ. + {0} ਘਣ ਕਿ.ਮੀ. + + + {0} ਘਣ ਮੀਲ + {0} ਘਣ ਮੀਲ + + + {0} ਲੀ. + {0} ਲੀ. + + + + + {0} ਪ੍ਰਤੀ {1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ਏਕੜ + {0} ਏਕੜ + + + {0} ਹੈਕਟੇਅਰ + {0} ਹੈਕਟੇਅਰ + + + {0} ਵ.ਫੁੱ. + {0} ਵ.ਫੁੱ. + + + {0} ਵ.ਕਿਮੀ + {0} ਵ.ਕਿਮੀ + + + {0} ਵ.ਮੀ. + {0} ਵ.ਮੀ. + + + {0} ਵ. ਮੀਲ + {0} ਵ. ਮੀਲ + + + {0} ਦਿਨ + {0} ਦਿਨ + + + {0} ਘੰਟੇ + {0} ਘੰਟੇ + + + {0} ms + {0} ms + + + {0} ਮਿੰਟ + {0} ਮਿੰਟ + + + {0} ਮਹੀਨਾ + {0} ਮਹੀਨੇ + + + {0} ਸਕਿੰਟ + {0} ਸਕਿੰਟ + + + {0} ਹਫ਼ਤਾ + {0} ਹਫ਼ਤੇ + + + {0} ਸਾਲ + {0} ਸਾਲ + + + {0} ਸੈਂਟੀਮੀਟਰ + {0} ਸੈਂਟੀਮੀਟਰ + + + {0}' + {0}' + + + {0}" + {0}" + + + {0} ਕਿਮੀ + {0} ਕਿਮੀ + + + {0} ਪ੍ਰਕਾਸ਼ ਸਾਲ + {0} ਪ੍ਰਕਾਸ਼ ਸਾਲ + + + {0} ਮੀ + {0} ਮੀ + + + {0} ਮੀਲ + {0} ਮੀਲ + + + {0} ਮਿਮੀ + {0} ਮਿਮੀ + + + {0} ਪਿਕੋਮੀਟਰ + {0} ਪਿਕੋਮੀਟਰ + + + {0} ਯਾਰਡ + {0} ਯਾਰਡ + + + {0} ਗ੍ਰਾ. + {0} ਗ੍ਰਾ. + + + {0} ਕਿ.ਗ੍ਰਾ. + {0} ਕਿ.ਗ੍ਰਾ. + + + {0} ਆਉਂਸ + {0} ਆਉਂਸ + + + {0} ਪਾਉਂਡ + {0} ਪਾਉਂਡ + + + {0} hp + {0} hp + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0} hPa + {0} hPa + + + {0} ਪਾਰੇ ਦਾ ਇੰਚ + {0} ਪਾਰੇ ਦਾ ਇੰਚ + + + {0} ਮਿਲੀਬਾਰ + {0} ਮਿਲੀਬਾਰ + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0}mph + {0}mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} ਘਣ ਕਿਮੀ + {0} ਘਣ ਕਿਮੀ + + + {0} ਘਣ ਮੀਲ + {0} ਘਣ ਮੀਲ + + + {0} ਲੀ. + {0} ਲੀ. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} ਅਤੇ {1} + {0} ਅਤੇ {1} + + + {0}, {1} + {0}, {1} + {0} ਅਤੇ {1} + {0} ਅਤੇ {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ਹਾਂ + ਨਹੀਂ + + + + diff --git a/library/Zend/Locale/Data/pa_Arab.xml b/library/Zend/Locale/Data/pa_Arab.xml new file mode 100755 index 000000000..eb9e4834a --- /dev/null +++ b/library/Zend/Locale/Data/pa_Arab.xml @@ -0,0 +1,230 @@ + + + + + + + + + + + + + پکستان + + + + + right-to-left + + + + [\u064F ء آ ؤ ئ ا ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں ه ھ ہ و ی ے] + [\u200E\u200F أ ٻ ة ٺ ټ ٽ] + [ء آ ؤ ئ ا ب پ ت ث ٹ ج چ ح خ د ذ ڈ ر ز ڑ ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں ه ھ ہ و ی ے] + + + + + + + + EEEE, dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + HH:mm:ss + d/M + mm:ss + MMM y + QQQ y + + + + + + + + جنوری + فروری + مارچ + اپریل + مئ + جون + جولائی + اگست + ستمبر + اکتوبر + نومبر + دسمبر + + + + + + + اتوار + پیر + منگل + بُدھ + جمعرات + جمعہ + ہفتہ + + + + + + + چوتھاي پہلاں + چوتھاي دوجا + چوتھاي تيجا + چوتھاي چوتھا + + + + + + ايساپورو + سں + + + + + + EEEE, dd MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + HH:mm:ss + d/M + mm:ss + MMM y + QQQ y + + + + + + + ورھا + + + مہينا + + + ہفتہ + + + دئن + + + ہفتے دا دن + + + گھنٹا + + + منٹ + + + ٹپہ + + + + + arabext + + arabext + + + ‎+ + ‎- + + + + يورو + + + روپئیہ [INR] + + + روپئیہ + ر + + + + + + ہاں + نہيں + + + + diff --git a/library/Zend/Locale/Data/pa_Arab_PK.xml b/library/Zend/Locale/Data/pa_Arab_PK.xml new file mode 100755 index 000000000..dccb80981 --- /dev/null +++ b/library/Zend/Locale/Data/pa_Arab_PK.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + świat + Afryka + Ameryka Północna + Ameryka Południowa + Oceania + Afryka Zachodnia + Ameryka Środkowa + Afryka Wschodnia + Afryka Północna + Afryka Środkowa + Afryka Południowa + Ameryka + Ameryka Północna (USA, Kanada) + Karaiby + Azja Wschodnia + Azja Południowa + Azja Południowo-Wschodnia + Europa Południowa + Australazja + Melanezja + Region Mikronezji + Polinezja + Azja + Azja Środkowa + Azja Zachodnia + Europa + Europa Wschodnia + Europa Północna + Europa Zachodnia + Ameryka Łacińska + Wyspa Wniebowstąpienia + Andora + Zjednoczone Emiraty Arabskie + Afganistan + Antigua i Barbuda + Anguilla + Albania + Armenia + Antyle Holenderskie + Angola + Antarktyka + Argentyna + Samoa Amerykańskie + Austria + Australia + Aruba + Wyspy Alandzkie + Azerbejdżan + Bośnia i Hercegowina + Barbados + Bangladesz + Belgia + Burkina Faso + Bułgaria + Bahrajn + Burundi + Benin + Saint-Barthélemy + Bermudy + Brunei Darussalam + Boliwia + Niderlandy Karaibskie + Brazylia + Bahamy + Bhutan + Wyspa Bouveta + Botswana + Białoruś + Belize + Kanada + Wyspy Kokosowe + Demokratyczna Republika Konga + Republika Środkowoafrykańska + Kongo + Republika Konga + Szwajcaria + Côte d’Ivoire + Wybrzeże Kości Słoniowej + Wyspy Cooka + Chile + Kamerun + Chiny + Kolumbia + Clipperton + Kostaryka + Kuba + Republika Zielonego Przylądka + Curaçao + Wyspa Bożego Narodzenia + Cypr + Czechy + Niemcy + Diego Garcia + Dżibuti + Dania + Dominika + Dominikana + Algieria + Ceuta i Melilla + Ekwador + Estonia + Egipt + Sahara Zachodnia + Erytrea + Hiszpania + Etiopia + Unia Europejska + Finlandia + Fidżi + Falklandy + Falklandy (Malwiny) + Mikronezja + Wyspy Owcze + Francja + Gabon + Wielka Brytania + GB + Grenada + Gruzja + Gujana Francuska + Wyspa Guernsey + Ghana + Gibraltar + Grenlandia + Gambia + Gwinea + Gwadelupa + Gwinea Równikowa + Grecja + Georgia Południowa i Sandwich Południowy + Gwatemala + Guam + Gwinea Bissau + Gujana + Hongkong SAR + Hongkong + Wyspy Heard i McDonalda + Honduras + Chorwacja + Haiti + Węgry + Wyspy Kanaryjskie + Indonezja + Irlandia + Izrael + Wyspa Man + Indie + Brytyjskie Terytorium Oceanu Indyjskiego + Irak + Iran + Islandia + Włochy + Wyspa Jersey + Jamajka + Jordania + Japonia + Kenia + Kirgistan + Kambodża + Kiribati + Komory + Saint Kitts i Nevis + Korea Północna + Korea Południowa + Kuwejt + Kajmany + Kazachstan + Laos + Liban + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litwa + Luksemburg + Łotwa + Libia + Maroko + Monako + Mołdawia + Czarnogóra + Saint-Martin + Madagaskar + Wyspy Marshalla + Macedonia + Mali + Mjanma (Birma) + Mongolia + Makau SAR + Makau + Mariany Północne + Martynika + Mauretania + Montserrat + Malta + Mauritius + Malediwy + Malawi + Meksyk + Malezja + Mozambik + Namibia + Nowa Kaledonia + Niger + Norfolk + Nigeria + Nikaragua + Holandia + Norwegia + Nepal + Nauru + Niue + Nowa Zelandia + Oman + Panama + Peru + Polinezja Francuska + Papua-Nowa Gwinea + Filipiny + Pakistan + Polska + Saint-Pierre i Miquelon + Pitcairn + Portoryko + Terytoria Palestyńskie + Palestyna + Portugalia + Palau + Paragwaj + Katar + Oceania inne + Reunion + Rumunia + Serbia + Rosja + Rwanda + Arabia Saudyjska + Wyspy Salomona + Seszele + Sudan + Szwecja + Singapur + Wyspa Świętej Heleny + Słowenia + Svalbard i Jan Mayen + Słowacja + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sudan Południowy + Wyspy Świętego Tomasza i Książęca + Salwador + Sint Maarten + Syria + Suazi + Tristan da Cunha + Turks i Caicos + Czad + Francuskie Terytoria Południowe + Togo + Tajlandia + Tadżykistan + Tokelau + Timor Wschodni + Turkmenistan + Tunezja + Tonga + Turcja + Trynidad i Tobago + Tuvalu + Tajwan + Tanzania + Ukraina + Uganda + Dalekie Wyspy Mniejsze Stanów Zjednoczonych + Stany Zjednoczone + USA + Urugwaj + Uzbekistan + Watykan + Saint Vincent i Grenadyny + Wenezuela + Brytyjskie Wyspy Dziewicze + Wyspy Dziewicze Stanów Zjednoczonych + Wietnam + Vanuatu + Wallis i Futuna + Samoa + Kosowo + Jemen + Majotta + Republika Południowej Afryki + Zambia + Zimbabwe + Nieznany region + + + tradycyjna ortografia niemiecka + standardowa ortografia regionu Resia + ortografia niemiecka z 1996 r. + szesnastowieczny francuski + siedemnastowieczny francuski + akademicki + ormiański wchodni + ormiański zachodni + turecki zunifikowany alfabet łaciński + dialekt San Giorgio/Bila + dialekt Boontling + fonetyczny międzynarodowy + fonetyczny + ortografia wspólna + dialekt Lipovaz w regionie Resia + monotoniczny + dialekt Natisone + dialekt Gniva/Njiva + dialekt Oseacco/Osojane + pinyin + politoniczny + komputerowy + ortografia zreformowana + dialekt regionu Resia + dialekt Saho + standardowy szkocki angielski + dialekt Scouse + dialekt Stolvizza/Solbica + ortografia taraszkiewicka + ortografia ujednolicona + zreformowana ortografia ujednolicona + walencki + latynizacja Wade'a i Gilesa + + + kalendarz + Sortowanie ignorujące symbole + Odwrotne sortowanie ze znakami akcentowanymi + Porządek wielkie/małe litery + Sortowanie uwzględniające wielkość liter + Sortowanie Kana + Porządek sortowania + Sortowanie znormalizowane + Sortowanie numeryczne + Siła sortowania + waluta + cyfry + Strefa czasowa + Wariant regionalny + Sortuj jak symbole + Do prywatnego użytku + + + cyfry arabsko-indyjskie + rozszerzone cyfry arabsko-indyjskie + cyfry ormiańskie + cyfry ormiańskie (małe litery) + cyfry bengalskie + chiński tradycyjny porządek sortowania - Big5 + kalendarz buddyjski + kalendarz chiński + Kalendarz koptyjski + cyfry dewanagari + sortowanie słownikowe + Domyślna kolejność sortowania Unicode + europejskie reguły określania kolejności + cyfry etiopskie + Kalendarz etiopski + Kalendarz etiopski Amete Alem + Liczebniki księgowe + cyfry o pełnej szerokości + chiński uproszczony porządek sortowania - GB2312 + cyfry gruzińskie + kalendarz gregoriański + cyfry greckie + cyfry greckie (małe litery) + cyfry gudżarati + cyfry gurmukhi + chińskie cyfry dziesiętne + uproszczone cyfry chińskie + uproszczone chińskie cyfry księgowe + tradycyjne cyfry chińskie + tradycyjne chińskie cyfry księgowe + cyfry hebrajskie + kalendarz hebrajski + Sortuj wszystko + narodowy kalendarz hinduski + kalendarz islamski (metoda wzrokowa) + kalendarz islamski (metoda obliczeniowa) + kalendarz islamski (Arabia Saudyjska, metoda wzrokowa) + kalendarz islamski (metoda obliczeniowa, epoka astronomiczna) + kalendarz islamski (Umm al-Kura) + kalendarz japoński + cyfry japońskie + japońskie cyfry księgowe + cyfry khmerskie + cyfry kannada + cyfry laotańskie + cyfry arabskie + Sortowanie od małych liter + cyfry malajalam + Cyfry mongolskie + cyfry birmańskie + Cyfry macierzyste + Zwykłe sortowanie znaków akcentowanych + Sortowanie z zachowaniem zwykłej kolejności wielkości liter + Sortowanie bez rozróżniania wielkości liter + Osobne sortowanie kana + Sortowanie bez normalizacji + Oddzielne sortowanie cyfr + Sortowanie symboli + cyfry orija + Kalendarz perski + porządek sortowania książki telefonicznej + sortowanie fonetyczne + porządek sortowania pinyin + Sortowanie tylko liter podstawowych + Sortowanie znaków akcentowanych/wielkości liter/szerokości/kana + sortowanie zreformowane + kalendarz Republiki Chińskiej + cyfry rzymskie + cyfry rzymskie (małe litery) + uniwersalny porządek sortowania + Wyszukiwanie według początkowej spółgłoski hangul + Sortowanie znaków akcentowanych + Sortowanie ignorujące symbole + sortowanie standardowe + porządek akcentów + cyfry tamilskie + cyfry tamilskie + cyfry telugu + Sortowanie znaków akcentowanych/wielkości liter/szerokości + cyfry tajskie + cyfry tybetańskie + tradycyjny porządek sortowania + Liczebniki tradycyjne + sortowanie wg kluczy i ich liczby kresek + Sortowanie od wielkich liter + Cyfry vai + Sortowanie znaków akcentowanych w odwróconej kolejności + Sortowanie z rozróżnianiem wielkości liter + Inne sortowanie kana + Sortowanie z normalizacją unicode + Numeryczne sortowanie cyfr + + + BGN + Liczbowe + Ton + UNGEGN + Akcenty + Pełna szerokość + Połowa szerokości + Jamo + Pinyin + Druk + + + metryczny + brytyjski + anglosaski + + + Język: {0} + Pismo: {0} + Region: {0} + + + + + titlecase-firstword + titlecase-firstword + + + + [a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż] + [à â å ä æ ç é è ê ë î ï ô ö œ q ß ù û ü v x ÿ] + [A Ą B C Ć D E Ę F G H I J K L Ł M N Ń O Ó P Q R S Ś T U V W X Y Z Ź Ż] + [\- ‐ – — , ; \: ! ? . … ' " ” „ « » ( ) \[ \] \{ \} § @ * / \& # % † ‡ ′ ″ ° ~] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0} … {1} + ? + + + + + « + » + + + + + + + BE + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + EEEE, d MMMM U + + + + + d MMMM U + + + + + d MMM U + + + + + dd.MM.y + + + + + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd.MM.y G + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + y G + LLL y G + d MMM y G + E, d MMM y G + hh a + HH + hh:mm a + HH:mm + hh:mm:ss a + HH:mm:ss + L + d.MM + E, d.MM + d.MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y G + y G + MM.y G + d.MM.y G + E, d.MM.y G + MM.y G + LLL y G + d MMM y G + E, d MMM y G + LLLL y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm-h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM-MM + + + dd.MM–dd.MM + dd.MM–dd.MM + + + E, dd.MM – E, dd.MM + E, dd.MM – E, dd.MM + + + LLL–LLL + + + d-d MMM + d MMM - d MMM + + + E, d MMM – E, d MMM + E, d MMM - E, d MMM + + + y–y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd-dd.MM.y GGGGG + dd.MM-dd.MM.y GGGGG + dd.MM.y-dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y GGGGG + + + LLL-LLL y G + LLL y - LLL y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + LLLL-LLLL y G + LLLL y - LLLL y G + + + + + + + + + sty + lut + mar + kwi + maj + cze + lip + sie + wrz + paź + lis + gru + + + s + l + m + k + m + c + l + s + w + p + l + g + + + stycznia + lutego + marca + kwietnia + maja + czerwca + lipca + sierpnia + września + października + listopada + grudnia + + + + + sty + lut + mar + kwi + maj + cze + lip + sie + wrz + paź + lis + gru + + + s + l + m + k + m + c + l + s + w + p + l + g + + + styczeń + luty + marzec + kwiecień + maj + czerwiec + lipiec + sierpień + wrzesień + październik + listopad + grudzień + + + + + + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + + N + P + W + Ś + C + P + S + + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + + niedziela + poniedziałek + wtorek + środa + czwartek + piątek + sobota + + + + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + + N + P + W + Ś + C + P + S + + + niedz. + pon. + wt. + śr. + czw. + pt. + sob. + + + niedziela + poniedziałek + wtorek + środa + czwartek + piątek + sobota + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + I kwartał + II kwartał + III kwartał + IV kwartał + + + + + 1 kw. + 2 kw. + 3 kw. + 4 kw. + + + 1 + 2 + 3 + 4 + + + I kwartał + II kwartał + III kwartał + IV kwartał + + + + + + + po południu + AM + nad ranem + wieczorem + przed południem + rano + w nocy + w południe + PM + + + + + + p.n.e. + n.e. + + + p.n.e. + n.e. + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd.MM.y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d.MM + E, d.MM + d.MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y + MM.y + d.MM.y + E, d.MM.y + MM.y + LLL y + d MMM y + E, d MMM y + LLLL y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm-h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM-MM + + + dd.MM–dd.MM + dd.MM–dd.MM + + + E, dd.MM – E, dd.MM + E, dd.MM – E, dd.MM + + + LLL–LLL + + + d-d MMM + d MMM - d MMM + + + E, d MMM – E, d MMM + E, d MMM - E, d MMM + + + y–y + + + MM.y - MM.y + MM.y - MM.y + + + dd-dd.MM.y + dd.MM-dd.MM.y + dd.MM.y-dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + LLL-LLL y + LLL y - LLL y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + LLLL-LLLL y + LLLL y - LLLL y + + + + + + + + + Tiszri + Cheszwan + Kislew + Tewet + Szwat + Adar I + Adar + Adar II + Nisan + Ijar + Siwan + Tamuz + Aw + Elul + + + Tiszri + Cheszwan + Kislew + Tewet + Szwat + Adar I + Adar + Adar II + Nisan + Ijar + Siwan + Tamuz + Aw + Elul + + + + + Tiszri + Cheszwan + Kislew + Tewet + Szwat + Adar I + Adar + Nisan + Ijar + Siwan + Tamuz + Aw + Elul + + + Tiszri + Cheszwan + Kislew + Tewet + Szwat + Adar I + Adar + Adar II + Nisan + Ijar + Siwan + Tamuz + Aw + Elul + + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + + + + Muh. + Saf. + Rab. I + Rab. II + Dżu. I + Dżu. II + Ra. + Sza. + Ram. + Szaw. + Zu al-k. + Zu al-h. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Dżumada I + Dżumada II + Radżab + Szaban + Ramadan + Szawwal + Zu al-kada + Zu al-hidżdża + + + + + Muh. + Saf. + Rab. I + Rab. II + Dżu. I + Dżu. II + Ra. + Sza. + Ram. + Szaw. + Zu al-k. + Zu al-h. + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Dżumada I + Dżumada II + Radżab + Szaban + Ramadan + Szawwal + Zu al-kada + Zu al-hidżdża + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd.MM.y G + + + + + + + + + Farwardin + Ordibeheszt + Chordād + Tir + Mordād + Szahriwar + Mehr + Ābān + Āsar + Déi + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Farwardin + Ordibeheszt + Chordād + Tir + Mordād + Szahriwar + Mehr + Ābān + Āsar + Déi + Bahman + Esfand + + + + + Farwardin + Ordibeheszt + Chordād + Tir + Mordād + Szahriwar + Mehr + Ābān + Āsar + Déi + Bahman + Esfand + + + Farwardin + Ordibeheszt + Chordād + Tir + Mordād + Szahriwar + Mehr + Ābān + Āsar + Déi + Bahman + Esfand + + + + + + + + Przed ROC + ROC + + + + + + + era + + + rok + w zeszłym roku + w tym roku + w przyszłym roku + + Za {0} rok + Za {0} lata + Za {0} lat + Za {0} roku + + + {0} rok temu + {0} lata temu + {0} lat temu + {0} roku temu + + + + miesiąc + w zeszłym miesiącu + w tym miesiącu + w przyszłym miesiącu + + Za {0} miesiąc + Za {0} miesiące + Za {0} miesięcy + Za {0} miesiąca + + + {0} miesiąc temu + {0} miesiące temu + {0} miesięcy temu + {0} miesiąca temu + + + + tydzień + Zeszły tydzień + w tym tygodniu + w przyszłym tygodniu + + Za {0} tydzień + Za {0} tygodnie + Za {0} tygodni + Za {0} tygodnia + + + {0} tydzień temu + {0} tygodnie temu + {0} tygodni temu + {0} tygodnia temu + + + + dzień + przedwczoraj + wczoraj + dzisiaj + jutro + pojutrze + + Za {0} dzień + Za {0} dni + Za {0} dni + Za {0} dnia + + + {0} dzień temu + {0} dni temu + {0} dni temu + {0} dnia temu + + + + dzień tygodnia + + + w zeszłą niedzielę + w tę niedzielę + w przyszłą niedzielę + + + w zeszły poniedziałek + w ten poniedziałek + w przyszły poniedziałek + + + w zeszły wtorek + w ten wtorek + w przyszły wtorek + + + w zeszłą środę + w tę środę + w przyszłą środę + + + w zeszły czwartek + w ten czwartek + w przyszły czwartek + + + w zeszły piątek + w ten piątek + w przyszły piątek + + + w zeszłą sobotę + w tę sobotę + w przyszłą sobotę + + + rano / po południu / wieczorem + + + godzina + + Za {0} godzinę + Za {0} godziny + Za {0} godzin + Za {0} godziny + + + {0} godzinę temu + {0} godziny temu + {0} godzin temu + {0} godziny temu + + + + minuta + + Za {0} minutę + Za {0} minuty + Za {0} minut + Za {0} minuty + + + {0} minutę temu + {0} minuty temu + {0} minut temu + {0} minuty temu + + + + sekunda + teraz + + Za {0} sekundę + Za {0} sekundy + Za {0} sekund + Za {0} sekundy + + + {0} sekundę temu + {0} sekundy temu + {0} sekund temu + {0} sekundy temu + + + + strefa czasowa + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Czas: {0} + {0} (czas letni) + {0} (czas standardowy) + {1} ({0}) + + Nieznane + + + Andora + + + Dubaj + + + Tirana + + + Erywań + + + Stacja Naukowa Rothera + + + Archipelag Palmera + + + Stacja Syowa + + + Wybrzeże Mawsona + + + Stacja Davis + + + Stacja Wostok + + + Stacja Casey + + + Dumont d’Urville + + + Mc Murdo + + + Kordoba + + + Wiedeń + + + Adelajda + + + Wyspa Lord Howe + + + Maarianhamina + + + Sarajewo + + + Dakka + + + Bruksela + + + Wagadugu + + + Bahrajn + + + Bużumbura + + + Porto Novo + + + Saint-Barthélemy + + + Bermudy + + + Cuiabá + + + Belém + + + Salvador + + + Maceió + + + Mińsk + + + Atikokan + + + St. John’s + + + Wyspy Kokosowe + + + Kinszasa + + + Bangi + + + Zurych + + + Abidżan + + + Wyspa Wielkanocna + + + Duala + + + Kaszgar + + + Urumczi + + + Czunking + + + Szanghaj + + + Kostaryka + + + Hawana + + + Zielony Przylądek + + + Curaçao + + + Wyspa Bożego Narodzenia + + + Nikozja + + + Praga + + + Dżibuti + + + Kopenhaga + + + Dominika + + + Algier + + + Tallin + + + Kair + + + Ujun + + + Asmara + + + Wyspy Kanaryjskie + + + Madryt + + + Addis Abeba + + + Fidżi + + + Chuuk + + + Pohnpei + + + Wyspy Owcze + + + Paryż + + + + Brytyjski czas letni + + Londyn + + + Kajenna + + + Akra + + + Qaanaaq + + + Nuuk + + + Ittoqqortoormiit + + + Bandżul + + + Konakri + + + Gwadelupa + + + Ateny + + + Georgia Południowa + + + Gwatemala + + + Gujana + + + Hongkong + + + Zagrzeb + + + Budapeszt + + + Dżakarta + + + + Irlandia (czas letni) + + + + Jerozolima + + + Wyspa Man + + + Kalkuta + + + Czagos + + + Bagdad + + + Teheran + + + Rejkiawik + + + Rzym + + + Jamajka + + + Tokio + + + Biszkek + + + Komory + + + Saint Kitts + + + Pjongjang + + + Seul + + + Kuwejt + + + Kajmany + + + Aktau + + + Uralsk + + + Aktiubińsk + + + Kyzył Orda + + + Ałma Ata + + + Wientian + + + Bejrut + + + Saint Lucia + + + Kolombo + + + Wilno + + + Luksemburg + + + Ryga + + + Trypolis + + + Monako + + + Kiszyniów + + + Antananarywa + + + Rangun + + + Howd + + + Ułan Bator + + + Czojbalsan + + + Makau + + + Martynika + + + Nawakszut + + + Malediwy + + + Meksyk (miasto) + + + Cancún + + + Kuczing + + + Windhuk + + + Numea + + + Niamej + + + Katmandu + + + Maskat + + + Markizy + + + Karaczi + + + Warszawa + + + Wyspy Pitcairn + + + Portoryko + + + Azory + + + Madera + + + Lizbona + + + Asunción + + + Katar + + + Réunion + + + Bukareszt + + + Belgrad + + + Moskwa + + + Wołgograd + + + Jekaterynburg + + + Nowosybirsk + + + Nowokuźnieck + + + Krasnojarsk + + + Irkuck + + + Jakuck + + + Władywostok + + + Chandyga + + + Sachalin + + + Kamczatka + + + Rijad + + + Mahé + + + Chartum + + + Sztokholm + + + Singapur + + + Święta Helena + + + Lublana + + + Bratysława + + + Mogadiszu + + + São Tomé + + + Salwador + + + Lower Prince's Quarter + + + Damaszek + + + Ndżamena + + + Wyspy Kerguelena + + + Lomé + + + Duszanbe + + + Aszchabad + + + Stambuł + + + Port-of-Spain + + + Tajpej + + + Dar es-Salaam + + + Użgorod + + + Kijów + + + Symferopol + + + Zaporoże + + + Beulah, Dakota Północna + + + New Salem, Dakota Północna + + + Center, Dakota Północna + + + Vincennes + + + Petersburg + + + Tell City, Indiana + + + Knox + + + Winamac + + + Marengo + + + Vevay + + + Monticello + + + Nowy Jork + + + Samarkanda + + + Taszkient + + + Watykan + + + Saint Vincent + + + Saint Thomas + + + Ho Chi Minh (miasto) + + + Majotta + + + + Afganistan + + + + + Czas środkowoafrykański + + + + + Czas wschodnioafrykański + + + + + Czas południowoafrykański + + + + + Czas zachodnioafrykański + Czas zachodnioafrykański standardowy + Czas zachodnioafrykański letni + + + + + Czas Alaska + Alaska (czas standardowy) + Alaska (czas letni) + + + + + Czas amazoński + Czas amazoński standardowy + Czas amazoński letni + + + + + Czas środkowoamerykański + Czas środkowoamerykański standardowy + Czas środkowoamerykański letni + + + + + Czas wschodnioamerykański + Czas wschodnioamerykański standardowy + Czas wschodnioamerykański letni + + + + + Czas górski + Czas górski standardowy + Czas górski letni + + + + + Czas pacyficzny + Czas pacyficzny standardowy + Czas pacyficzny letni + + + + + Czas Anadyr + Czas standardowy Anadyr + Czas Anadyr letni + + + + + Półwysep Arabski + Półwysep Arabski (czas standardowy) + Półwysep Arabski (czas letni) + + + + + Czas argentyński + Argentyna (czas standardowy) + Argentyna (czas letni) + + + + + Argentyna Zachodnia + Argentyna Zachodnia (czas standardowy) + Argentyna Zachodnia (czas letni) + + + + + Armenia + Armenia (czas standardowy) + Armenia (czas letni) + + + + + Czas atlantycki + Czas standardowy atlantycki + Czas atlantycki letni + + + + + Czas środkowoaustralijski + Czas środkowoaustralijski standardowy + Czas środkowoaustralijski letni + + + + + Czas środkowo-zachodnioaustralijski + Czas środkowo-zachodnioaustralijski standardowy + Czas środkowo-zachodnioaustralijski letni + + + + + Czas wschodnioaustraliski + Czas standardowy wschodnioaustraliski + Czas wschodnioaustraliski letni + + + + + Czas zachodnioaustralijski + Czas zachodnioaustralijski standardowy + Czas zachodnioaustralijski letni + + + + + Azerbejdżan + Azerbejdżan (czas standardowy) + Azerbejdżan (czas letni) + + + + + Azory + Azory (czas standardowy) + Azory (czas letni) + + + + + Bangladesz + Bangladesz (czas standardowy) + Bangladesz (czas letni) + + + + + Bhutan + + + + + Boliwia + + + + + Brasília + Brasília (czas standardowy) + Brasília (czas letni) + + + + + Brunei Darussalam + + + + + Republika Zielonego Przylądka + Republika Zielonego Przylądka (czas standardowy) + Republika Zielonego Przylądka (czas letni) + + + + + Czamorro + + + + + Chatham + Chatham (czas standardowy) + Chatham (czas letni) + + + + + Chile + Chile (czas standardowy) + Chile (czas letni) + + + + + Chiny + Chiny (czas standardowy) + Chiny (czas letni) + + + + + Czojbalsan + Czojbalsan (czas standardowy) + Czojbalsan (czas letni) + + + + + Wyspa Bożego Narodzenia + + + + + Wyspy Kokosowe + + + + + Kolumbia + Kolumbia (czas standardowy) + Kolumbia (czas letni) + + + + + Wyspy Cooka + Wyspy Cooka (czas standardowy) + Wyspy Cooka (czas letni) + + + + + Kuba + Kuba (czas standardowy) + Kuba (czas letni) + + + + + Davis + + + + + Dumont-d'Urville + + + + + Timor Wschodni + + + + + Wyspa Wielkanocna + Wyspa Wielkanocna (czas standardowy) + Wyspa Wielkanocna (czas letni) + + + + + Ekwador + + + + + Czas środkowoeuropejski + Czas środkowoeuropejski standardowy + Czas środkowoeuropejski letni + + + CET + CET + CEST + + + + + Czas wschodnioeuropejski + Czas wschodnioeuropejski standardowy + Czas wschodnioeuropejski letni + + + EET + EET + EEST + + + + + Czas zachodnioeuropejski + Czas zachodnioeuropejski standardowy + Czas zachodnioeuropejski letni + + + WET + WET + WEST + + + + + Falklandy + Falklandy (czas standardowy) + Falklandy (czas letni) + + + + + Fidżi + Fidżi (czas standardowy) + Fidżi (czas letni) + + + + + Gujana Francuska + + + + + Francuskie Terytoria Południowe i Antarktyczne + + + + + Galapagos + + + + + Gambier + + + + + Gruzja + Gruzja (czas standardowy) + Gruzja (czas letni) + + + + + Wyspy Gilberta + + + + + Czas uniwersalny + + + + + Grenlandia Wschodnia + Grenlandia Wschodnia (czas standardowy) + Grenlandia Wschodnia (czas letni) + + + + + Grenlandia Zachodnia + Grenlandia Zachodnia (czas standardowy) + Grenlandia Zachodnia (czas letni) + + + + + Zatoka Perska + + + + + Gujana + + + + + Hawaje-Aleuty + Hawaje-Aleuty (czas standardowy) + Hawaje-Aleuty (czas letni) + + + + + Hongkong + Hongkong (czas standardowy) + Hongkong (czas letni) + + + + + Kobdo + Kobdo (czas standardowy) + Kobdo (czas letni) + + + + + Czas indyjski + + + + + Ocean Indyjski + + + + + Czas indochiński + + + + + Indonezja Środkowa + + + + + Indonezja Wschodnia + + + + + Indonezja Zachodnia + + + + + Iran + Iran (czas standardowy) + Iran (czas letni) + + + + + Irkuck + Irkuck (czas standardowy) + Irkuck (czas letni) + + + + + Izrael + Izrael (czas standardowy) + Izrael (czas letni) + + + + + Japonia + Japonia (czas standardowy) + Japonia (czas letni) + + + + + Czas Pietropawłowsk Kamczacki + Czas standardowy Pietropawłowsk Kamczacki + Czas Pietropawłowsk Kamczacki letni + + + + + Kazachstan Wschodni + + + + + Kazachstan Zachodni + + + + + Korea + Korea (czas standardowy) + Korea (czas letni) + + + + + Kosrae + + + + + Krasnojarsk + Krasnojarsk (czas standardowy) + Krasnojarsk (czas letni) + + + + + Kirgistan + + + + + Sporady Środkowopolinezyjskie + + + + + Lord Howe + Lord Howe (czas standardowy) + Lord Howe (czas letni) + + + + + Macquarie + + + + + Magadan + Magadan (czas standardowy) + Magadan (czas letni) + + + + + Malezja + + + + + Malediwy + + + + + Markizy + + + + + Wyspy Marshalla + + + + + Mauritius + Mauritius (czas standardowy) + Mauritius (czas letni) + + + + + Mawson + + + + + Ułan Bator + Ułan Bator (czas standardowy) + Ułan Bator (czas letni) + + + + + Czas moskiewski + Czas moskiewski standardowy + Czas moskiewski letni + + + + + Mjanma + + + + + Nauru + + + + + Nepal + + + + + Nowa Kaledonia + Nowa Kaledonia (czas standardowy) + Nowa Kaledonia (czas letni) + + + + + Nowa Zelandia + Nowa Zelandia (czas standardowy) + Nowa Zelandia (czas letni) + + + + + Czas nowofunlandzki + Nowa Fundlandia (czas standardowy) + Nowa Fundlandia (czas letni) + + + + + Niue + + + + + Norfolk + + + + + Fernando de Noronha + Fernando de Noronha (czas standardowy) + Fernando de Noronha (czas letni) + + + + + Nowosybirsk + Nowosybirsk (czas standardowy) + Nowosybirsk (czas letni) + + + + + Omsk + Omsk (czas standardowy) + Omsk (czas letni) + + + + + Pakistan + Pakistan (czas standardowy) + Pakistan (czas letni) + + + + + Palau + + + + + Papua-Nowa Gwinea + + + + + Paragwaj + Paragwaj (czas standardowy) + Paragwaj (czas letni) + + + + + Peru + Peru (czas standardowy) + Peru (czas letni) + + + + + Filipiny + Filipiny (czas standardowy) + Filipiny (czas letni) + + + + + Feniks + + + + + Saint-Pierre i Miquelon + Saint-Pierre i Miquelon (czas standardowy) + Saint-Pierre i Miquelon (czas letni) + + + + + Pitcairn + + + + + Pohnpei + + + + + Reunion + + + + + Rothera + + + + + Sachalin + Sachalin (czas standardowy) + Sachalin (czas letni) + + + + + Czas Samara + Czas standardowy Samara + Czas Samara letni + + + + + Samoa + Samoa (czas standardowy) + Samoa (czas letni) + + + + + Seszele + + + + + Singapur + + + + + Wyspy Salomona + + + + + Georgia Południowa + + + + + Surinam + + + + + Syowa + + + + + Tahiti + + + + + Tajpej + Tajpej (czas standardowy) + Tajpej (czas letni) + + + + + Tadżykistan + + + + + Tokelau + + + + + Tonga + Tonga (czas standardowy) + Tonga (czas letni) + + + + + Chuuk + + + + + Turkmenistan + Turkmenistan (czas standardowy) + Turkmenistan (czas letni) + + + + + Tuvalu + + + + + Urugwaj + Urugwaj (czas standardowy) + Urugwaj (czas letni) + + + + + Uzbekistan + Uzbekistan (czas standardowy) + Uzbekistan (czas letni) + + + + + Vanuatu + Vanuatu (czas standardowy) + Vanuatu (czas letni) + + + + + Wenezuela + + + + + Władywostok + Władywostok (czas standardowy) + Władywostok (czas letni) + + + + + Wołgograd + Wołgograd (czas standardowy) + Wołgograd (czas letni) + + + + + Wostok + + + + + Wake + + + + + Wallis i Futuna + + + + + Jakuck + Jakuck (czas standardowy) + Jakuck (czas letni) + + + + + Jekaterynburg + Jekaterynburg (czas standardowy) + Jekaterynburg (czas letni) + + + + + + + , +   + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tysiąc + 0 tysiące + 0 tysięcy + 0 tysiąca + 00 tysiąc + 00 tysiące + 00 tysięcy + 00 tysiąca + 000 tysiąc + 000 tysiące + 000 tysięcy + 000 tysiąca + 0 milion + 0 miliony + 0 milionów + 0 miliona + 00 milion + 00 miliony + 00 milionów + 00 miliona + 000 milion + 000 miliony + 000 milionów + 000 miliona + 0 miliard + 0 miliardy + 0 miliardów + 0 miliarda + 00 miliard + 00 miliardy + 00 miliardów + 00 miliarda + 000 miliard + 000 miliardy + 000 miliardów + 000 miliarda + 0 bilion + 0 biliony + 0 bilionów + 0 biliona + 00 bilion + 00 biliony + 00 bilionów + 00 biliona + 000 bilion + 000 biliony + 000 bilionów + 000 biliona + + + + + 0 tys'.' + 0 tys'.' + 0 tys'.' + 0 tys'.' + 00 tys'.' + 00 tys'.' + 00 tys'.' + 00 tys'.' + 000 tys'.' + 000 tys'.' + 000 tys'.' + 000 tys'.' + 0 mln + 0 mln + 0 mln + 0 mln + 00 mln + 00 mln + 00 mln + 00 mln + 000 mln + 000 mln + 000 mln + 000 mln + 0 mld + 0 mld + 0 mld + 0 mld + 00 mld + 00 mld + 00 mld + 00 mld + 000 mld + 000 mld + 000 mld + 000 mld + 0 bln + 0 bln + 0 bln + 0 bln + 00 bln + 00 bln + 00 bln + 00 bln + 000 bln + 000 bln + 000 bln + 000 bln + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + peseta andorska + peseta andorska + pesety andorskie + peset andorskich + peseta andorska + + + dirham arabski + dirham arabski + dirhamy arabskie + dirhamów arabskich + dirhama arabskiego + + + afgani (1927–2002) + afgani (1927–2002) + afgani (1927–2002) + afgani (1927–2002) + afgani (1927–2002) + + + afgani + afgani + afgani + afgani + afgani + + + lek albański + lek albański + leki albańskie + leków albańskich + leka albańskiego + + + dram armeński + dram ormiański + dramy armeńskie + dramów armeńskich + dramy ormiańskiej + + + gulden antylski + gulden antylski + guldeny antylskie + guldenów antylskich + guldena antylskiego + + + kwanza angolańska + kwanza angolańska + kwanzy angolańskie + kwanz angolańskich + kwanzy angolańskiej + + + kwanza angolańska (1977–1990) + kwanza angolańska (1977–1990) + kwanzy angolańskie (1977–1990) + kwanz angolańskich (1977–1990) + kwanza angolańska (1977–1990) + + + nowa kwanza angolańska (1990–2000) + nowa kwanza angolańska (1990–2000) + nowe kwanzy angolańskie (1990–2000) + nowych kwanz angolańskich (1990–2000) + nowa kwanza angolańska (1990–2000) + + + kwanza angolańska Reajustado (1995–1999) + kwanza angolańska Reajustado (1995–1999) + kwanzy angolańskie Reajustado (1995–1999) + kwanz angolańskich Reajustado (1995–1999) + kwanza angolańska Reajustado (1995–1999) + + + austral argentyński + + + peso argentyńskie (1983–1985) + + + peso argentyńskie + peso argentyńskie + pesos argentyńskie + pesos argentyńskich + peso argentyńskiego + + + szyling austriacki + + + dolar australijski + dolar australijski + dolary australijskie + dolarów australijskich + dolara australijskiego + AUD + + + florin arubański + florin arubański + floriny arubańskie + florinów arubańskich + florina arubańskiego + + + manat azerbejdżański + manat azerbejdżański + manat azerbejdżański + manat azerbejdżański + manat azerbejdżański + + + manat azerski + manat azerski + manaty azerskie + manatów azerskich + manata azerskiego + + + dinar Bośni i Hercegowiny + + + marka zamienna Bośni i Hercegowiny + marka zamienna Bośni i Hercegowiny + marki zamienne Bośni i Hercegowiny + marek zamiennych Bośni i Hercegowiny + marki zamiennej Bośni i Hercegowiny + + + dolar Barbadosu + dolar Barbadosu + dolary Barbadosu + dolarów Barbadosu + dolara Barbadosu + + + taka bengalska + taka bengalska + taka bengalskie + taka bengalskich + taka bengalskiej + + + frank belgijski (zamienny) + frank belgijski (wymienialny) + franki belgijskie (wymienialne) + franków belgijskich (wymienialnych) + frank belgijski (zamienny) + + + frank belgijski + + + frank belgijski (finansowy) + + + lew bułgarski wymienny + lew bułgarski wymienny + lewa bułgarskie wymienne + lewa bułgarskich wymiennych + lewa bułgarskich wymiennych + + + lew bułgarski socjalistyczny + lew bułgarski socjalistyczny + lew bułgarski socjalistyczny + lew bułgarski socjalistyczny + lew bułgarski socjalistyczny + + + lew bułgarski + lew bułgarski + lewy bułgarskie + lewów bułgarskich + lewa bułgarskiego + + + lew bułgarski (1879–1952) + lew bułgarski (1879–1952) + lew bułgarski (1879–1952) + lew bułgarski (1879–1952) + lew bułgarski (1879–1952) + + + dinar bahrański + dinar bahrański + dinary bahrańskie + dinarów bahrańskich + dinara barhańskiego + + + frank burundyjski + frank burundyjski + franki burundyjskie + franków burundyjskich + franka burundyjskiego + + + dolar bermudzki + dolar bermudzki + dolary bermudzkie + dolarów bermudzkich + dolara bermudzkiego + + + dolar brunejski + dolar brunejski + dolary brunejskie + dolarów brunejskich + dolara brunejskiego + + + boliviano + boliviano + boliviano + boliviano + boliviano + + + peso boliwijskie + + + mvdol boliwijski + + + cruzeiro novo brazylijskie (1967–1986) + + + cruzado brazylijskie + + + cruzeiro brazylijskie (1990–1993) + + + real brazylijski + real brazylijski + reale brazylijskie + reali brazylijskich + reala brazylijskiego + R$ + + + nowe cruzado brazylijskie + + + cruzeiro brazylijskie + + + dolar bahamski + dolar bahamski + dolary bahamskie + dolarów bahamskich + dolara bahamskiego + + + ngultrum bhutański + ngultrum bhutański + ngultrum bhutańskie + ngultrum bhutańskich + ngultrum bhutańskiego + + + kyat birmański + + + pula botswańska + pula botswańska + pule botswańskie + pul botswańskich + puli botswańskiej + + + rubel białoruski (1994–1999) + + + rubel białoruski + rubel białoruski + ruble białoruskie + rubli białoruskich + rubla białoruskiego + + + dolar belizeński + dolar belizeński + dolary belizeńskie + dolarów belizeńskich + dolara belizeńskiego + + + dolar kanadyjski + dolar kanadyjski + dolary kanadyjskie + dolarów kanadyjskich + dolara kanadyjskiego + CAD + + + frank kongijski + frank kongijski + franki kongijskie + franków kongijskich + franka kongijskiego + + + frank szwajcarski + frank szwajcarski + franki szwajcarskie + franków szwajcarskich + franka szwajcarskiego + + + peso chilijskie + peso chilijskie + pesos chilijskie + pesos chilijskich + peso chilijskiego + + + juan chiński + juan chiński + juany chińskie + juanów chińskich + juana chińskiego + CNY + + + peso kolumbijskie + peso kolumbijskie + pesos kolumbijskie + pesos kolumbijskich + peso kolumbijskiego + + + colon kostarykański + colon kostarykański + colony kostarykańskie + colonów kostarykańskich + colona kostarykańskiego + + + stary dinar serbski + + + korona czechosłowacka + korona czechosłowacka + korony czechosłowackie + koron czechosłowackich + korona czechosłowacka + + + peso kubańskie wymienialne + peso kubańskie wymienialne + pesos kubańskie wymienialne + pesos kubańskich wymienialnych + peso kubańskiego wymienialnego + + + peso kubańskie + peso kubańskie + pesos kubańskie + pesos kubańskich + peso kubańskiego + + + escudo zielonoprzylądkowe + escudo zielonoprzylądkowe + escudo zielonoprzylądkowe + escudo zielonoprzylądkowych + escudo zielonoprzylądkowego + + + funt cypryjski + + + korona czeska + korona czeska + korony czeskie + koron czeskich + korony czeskiej + + + wschodnia marka wschodnioniemiecka + + + marka niemiecka + marka niemiecka + marki niemieckie + marek niemieckich + marka niemiecka + + + frank dżibutyjski + frank dżibutyjski + franki dżibutyjskie + franków dżibutyjskich + franka dżibutyjskiego + + + korona duńska + korona duńska + korony duńskie + koron duńskich + korony duńskiej + + + peso dominikańskie + peso dominikańskie + pesos dominikańskie + pesos dominikańskich + peso dominikańskiego + + + dinar algierski + dinar algierski + dinary algierskie + dinarów algierskich + dinara algierskiego + + + sucre ekwadorski + + + korona estońska + korona estońska + korony estońskie + koron estońskich + korona estońska + + + funt egipski + funt egipski + funty egipskie + funtów egipskich + funta egipskiego + + + nakfa erytrejska + nakfa erytrejska + nakfy erytrejskie + nakf erytrejskich + nakfy erytrejskiej + + + peseta hiszpańska (Konto A) + + + peseta hiszpańska (konto wymienne) + peseta hiszpańska (konto wymienialne) + pesety hiszpańskie (konto wymienialne) + peset hiszpańskich (konto wymienialne) + peseta hiszpańska (konto wymienne) + + + peseta hiszpańska + + + birr etiopski + birr etiopski + birra etiopskie + birra etiopskich + birra etiopskiego + + + euro + euro + euro + euro + euro + + + marka fińska + + + dolar fidżi + dolar fidżyjski + dolary fidżyjskie + dolarów fidżyjskich + dolara fidżyjskiego + + + funt falklandzki + funt falklandzki + funty falklandzkie + funtów falklandzkich + funta falklandzkiego + + + frank francuski + frank francuski + franki francuskie + franków francuskich + frank francuski + + + funt szterling + funt szterling + funty szterlingi + funtów szterlingów + funta szterlinga + GBP + + + kupon gruziński larit + + + lari gruzińskie + lari gruzińskie + lari gruzińskie + lari gruzińskich + lari gruzińskiego + + + cedi ghańskie (1979–2007) + + + cedi ghański + cedi ghański + cedi ghańskie + cedi ghańskich + cedi ghańskiego + + + funt gibraltarski + funt gibraltarski + funty gibraltarskie + funtów gibraltarskich + funta gibraltarskiego + + + dalasi gambijskie + dalasi gambijskie + dalasi gambijskie + dalasi gambijskich + dalasi gambijskiego + + + frank gwinejski + frank gwinejski + franki gwinejskie + franków gwinejskich + franka gwinejskiego + + + syli gwinejskie + + + ekwele gwinejskie Gwinei Równikowej + + + drachma grecka + + + quetzal gwatemalski + quetzal gwatemalski + quetzale gwatemalskie + quetzali gwatemalskich + quetzala gwatemalskiego + + + escudo Gwinea Portugalska + + + peso Guinea-Bissau + + + dolar gujański + dolar gujański + dolary gujańskie + dolarów gujańskich + dolara gujańskiego + + + dolar hongkoński + dolar hongkoński + dolary hongkońskie + dolarów hongkońskich + dolara hongkońskiego + HKD + + + lempira honduraska + lempira honduraska + lempiry honduraskie + lempir honduraskich + lempiry honduraskiej + + + dinar chorwacki + + + kuna chorwacka + kuna chorwacka + kuny chorwackie + kun chorwackich + kuny chorwackiej + + + gourde haitańskie + gourde haitańskie + gourde haitańskie + gourde haitańskich + gourde haitańskiego + + + forint węgierski + forint węgierski + forinty węgierskie + forintów węgierskich + forinta węgierskiego + + + rupia indonezyjska + rupia indonezyjska + rupie indonezyjskie + rupii indonezyjskich + rupii indonezyjskiej + + + funt irlandzki + + + funt izraelski + + + nowy szekel izraelski + nowy szekel izraelski + nowe szekle izraelskie + nowych szekli izraelskich + nowego szekla izraelskiego + ILS + + + rupia indyjska + rupia indyjska + rupie indyjskie + rupii indyjskich + rupii indyjskiej + INR + + + dinar iracki + dinar iracki + dinary irackie + dinarów irackich + dinara irackiego + + + rial irański + rial irański + riale irańskie + riali irańskich + riala irańskiego + + + korona islandzka + korona islandzka + korony islandzkie + koron islandzkich + korony islandzkiej + + + lir włoski + + + dolar jamajski + dolar jamajski + dolary jamajskie + dolarów jamajskich + dolara jamajskiego + + + dinar jordański + dinar jordański + dinary jordańskie + dinarów jordańskich + dinara jordańskiego + + + jen japoński + jen japoński + jeny japońskie + jenów japońskich + jena japońskiego + JPY + + + szyling kenijski + szyling kenijski + szylingi kenijskie + szylingów kenijskich + szylinga kenijskiego + + + som kirgiski + som kirgiski + somy kirgiskie + somów kirgiskich + soma kirgiskiego + + + riel kambodżański + riel kambodżański + riele kambodżańskie + rieli kambodżańskich + riela kambodżańskiego + + + frank komoryjski + frank komoryjski + franki komoryjskie + franków komoryjskich + franka komoryjskiego + + + won północnokoreański + won północnokoreański + wony północnokoreańskie + wonów północnokoreańskich + wona północnokoreańskiego + + + won południowokoreański + won południowokoreański + wony południowokoreańskie + wonów południowokoreańskich + wona południowokoreańskiego + KRW + + + dinar kuwejcki + dinar kuwejcki + dinary kuwejckie + dinarów kuwejckich + dinara kuwejckiego + + + dolar kajmański + dolar kajmański + dolary kajmańskie + dolarów kajmańskich + dolara kajmańskiego + + + tenge kazachskie + tenge kazachskie + tenge kazachskie + tenge kazachskich + tenge kazachskiego + + + kip laotański + kip laotański + kipy laotańskie + kipów laotańskich + kipa laotańskiego + + + funt libański + funt libański + funty libańskie + funtów libańskich + funta libańskiego + + + rupia lankijska + rupia lankijska + rupie lankijskie + rupii lankijskich + rupii lankijskiej + + + dolar liberyjski + dolar liberyjski + dolary liberyjskie + dolarów liberyjskich + dolara liberyjskiego + + + loti Lesoto + + + lit litewski + lit litewski + lity litewskie + litów litewskich + lita litewskiego + + + talon litewski + + + frank luksemburski + + + łat łotewski + łat łotewski + łaty łotewskie + łatów łotewskich + łata łotewskiego + + + rubel łotewski + + + dinar libijski + dinar libijski + dinary libijskie + dinarów libijskich + dinara libijskiego + + + dirham marokański + dirham marokański + dirhamy marokańskie + dirhamów marokańskich + dirhama marokańskiego + + + frank marokański + frank marokański + franki marokańskie + franków marokańskich + frank marokański + + + lej mołdawski + lej mołdawski + leje mołdawskie + lejów mołdawskich + leja mołdawskiego + + + ariary malgaski + ariary malgaski + ariary malgaskie + ariary malgaskich + ariary malgaskiego + + + frank malgaski + + + denar macedoński + denar macedoński + denary macedońskie + denarów macedońskich + denara macedońskiego + + + frank malijski + + + kiat birmański + kiat birmański + kiaty birmańskie + kiatów birmańskich + kiata birmańskiego + + + tugrik mongolski + tugrik mongolski + tugriki mongolskie + tugrików mongolskich + tugrika mongolskiego + + + pataca Makau + pataca Makau + pataca Makau + pataca Makau + pataca Makau + + + ouguiya mauretańska + ouguiya mauretańska + ouguiya mauretańskie + ouguiya mauretańskich + ouguiya mauretańskiej + + + lira maltańska + + + funt maltański + + + rupia maurytyjska + rupia maurytyjska + rupie maurytyjskie + rupii maurytyjskich + rupii maurytyjskiej + + + rupia malediwska + rupia malediwska + rupie malediwskie + rupii malediwskich + rupii malediwskiej + + + kwacha malawska + kwacha malawska + kwacha malawskie + kwacha malawskich + kwacha malawskiej + + + peso meksykańskie + peso meksykańskie + pesos meksykańskie + pesos meksykańskich + peso meksykańskiego + MXN + + + peso srebrne meksykańskie (1861–1992) + + + ringgit malezyjski + ringgit malezyjski + ringgity malezyjskie + ringgitów malezyjskich + ringgita malezyjskiego + + + escudo mozambickie + + + metical Mozambik + + + metical mozambicki + metical mozambijski + meticale mozambijskie + meticali mozambijskich + meticala mozambijskiego + + + dolar namibijski + dolar namibijski + dolary namibijskie + dolarów namibijskich + dolara namibijskiego + + + naira nigeryjska + naira nigeryjska + nairy nigeryjskie + nair nigeryjskich + nairy nigeryjskiej + + + cordoba nikaraguańska (1988–1991) + cordoba nikaraguańska (1988–1991) + cordoby nikaraguańskie (1988–1991) + cordob nikaraguańskich (1988–1991) + cordoby nikaraguańskiej (1988–1991) + + + cordoba nikaraguańska + cordoba nikaraguańska + cordoby nikaraguańskie + cordob nikaraguańskich + cordoby nikaraguańskiej + + + gulden holenderski + + + korona norweska + korona norweska + korony norweskie + koron norweskich + korony norweskiej + + + rupia nepalska + rupia nepalska + rupie nepalskie + rupii nepalskich + rupii nepalskiej + + + dolar nowozelandzki + dolar nowozelandzki + dolary nowozelandzkie + dolarów nowozelandzkich + dolara nowozelandzkiego + NZD + + + rial omański + rial omański + riale omańskie + riali omańskich + riala omańskiego + + + balboa panamski + balboa panamski + balboa panamskie + balboa panamskich + balboa panamskiego + + + inti peruwiański + + + nowy sol peruwiański + nowy sol peruwiański + nowe sole peruwiańskie + nowych soli peruwiańskich + nowego sola peruwiańskiego + + + sol peruwiański + + + kina Papua Nowa Gwinea + kina papuaska + kina papuaskie + kina papuaskich + kina papuaskiej + + + peso filipińskie + peso filipińskie + pesos filipińskie + pesos filipińskich + peso filipińskiego + + + rupia pakistańska + rupia pakistańska + rupie pakistańskie + rupii pakistańskich + rupii pakistańskiej + + + złoty polski + złoty polski + złote polskie + złotych polskich + złotego polskiego + + + + złoty polski (1950–1995) + złoty polski (1950–1995) + złote polskie (1950–1995) + złotych polskich (1950–1995) + złotego polskiego (1950–1995) + + + escudo portugalskie + + + guarani paragwajskie + guarani paragwajskie + guarani paragwajskie + guarani paragwajskich + guarani paragwajskiego + + + rial katarski + rial katarski + riale katarskie + riali katarskich + riala katarskiego + + + dolar rodezyjski + + + lej rumuński (1952–2006) + lej rumuński (1952–2006) + lei rumuńskie (1952–2006) + lei rumuńskich (1952–2006) + leja rumuńskiego (1952–2006) + + + leja rumuńska + lej rumuński + leje rumuńskie + lejów rumuńskich + leja rumuńskiego + + + dinar serbski + dinar serbski + dinary serbskie + dinarów serbskich + dinara serbskiego + + + rubel rosyjski + rubel rosyjski + ruble rosyjskie + rubli rosyjskich + rubla rosyjskiego + + + rubel rosyjski (1991–1998) + rubel rosyjski (1991–1998) + ruble rosyjskie (1991–1998) + rubli rosyjskich (1991–1998) + rubla rosyjskiego (1991–1998) + + + frank ruandyjski + frank ruandyjski + franki ruandyjskie + franków ruandyjskich + franka ruandyjskiego + + + rial saudyjski + rial saudyjski + riale saudyjskie + riali saudyjskich + riala saudyjskiego + + + dolar Wysp Salomona + dolar Wysp Salomona + dolary Wysp Salomona + dolarów Wysp Salomona + dolara Wysp Salomona + + + rupia seszelska + rupia seszelska + rupie seszelskie + rupii seszelskich + rupii seszelskiej + + + dinar sudański + + + funt sudański + funt sudański + funty sudańskie + funtów sudańskich + funta sudańskiego + + + funt sudański (1957–1998) + funt sudański (1957–1998) + funty sudańskie (1957–1998) + funtów sudańskich (1957–1998) + funta sudańskiego (1957–1998) + + + korona szwedzka + korona szwedzka + korony szwedzkie + koron szwedzkich + korony szwedzkiej + + + dolar singapurski + dolar singapurski + dolary singapurskie + dolarów singapurskich + dolara singapurskiego + + + funt Wyspy Świętej Heleny + funt Wyspy Świętej Heleny + funty Wyspy Świętej Heleny + funtów Wyspy Świętej Heleny + funta Wyspy Świętej Heleny + + + tolar słoweński + tolar słoweński + tolary słoweńskie + tolarów słoweńskich + tolar słoweński + + + korona słowacka + korona słowacka + korony słowackie + koron słowackich + korona słowacka + + + leone sierraleoński + leone sierraleoński + leone sierraleońskie + leone sierraleońskich + leone sierraleońskiego + + + szyling somalijski + szyling somalijski + szylingi somalijskie + szylingów somalijskich + szylinga somalijskiego + + + dolar surinamski + dolar surinamski + dolary surinamskie + dolarów surinamskich + dolara surinamskiego + + + gulden surinamski + + + funt południowosudański + funt południowosudański + funty południowosudańskie + funtów południowosudańskich + funta południowosudańskiego + + + dobra Wysp Świętego Tomasza i Książęcej + dobra Wysp Świętego Tomasza i Książęcej + dobry Wysp Świętego Tomasza i Książęcej + dobr Wysp Świętego Tomasza i Książęcej + dobry Wysp Świętego Tomasza i Książęcej + + + rubel radziecki + rubel radziecki + ruble radzieckie + rubli radzieckich + rubel radziecki + + + colon salwadorski + + + funt syryjski + funt syryjski + funty syryjskie + funtów syryjskich + funta syryjskiego + + + lilangeni Suazi + lilangeni Suazi + emalangeni Suazi + emalangeni Suazi + emalangeni Suazi + + + baht tajski + baht tajski + bahty tajskie + bahtów tajskich + bahta tajskiego + THB + + + rubel tadżycki + + + somoni tadżyckie + somoni tadżyckie + somoni tadżyckie + somoni tadżyckich + somoni tadżyckiego + + + manat turkmeński (1993–2009) + manat turkmeński (1993–2009) + manaty turkmeńskie (1993–2009) + manatów turkmeńskich (1993–2009) + manata turkmeńskiego (1993–2009) + + + manat turkmeński + manat turkmeński + manaty turkmeńskie + manatów turkmeńskich + manata turkmeńskiego + + + dinar tunezyjski + dinar tunezyjski + dinary tunezyjskie + dinarów tunezyjskich + dinara tunezyjskiego + + + pa'anga tongijska + pa'anga tongijska + pa'anga tongijskie + pa'anga tongijskich + pa'anga tongijskiej + + + escudo timorskie + + + lira turecka (1922–2005) + lira turecka (1922–2005) + liry tureckie (1922–2005) + lir tureckich (1922–2005) + liry tureckiej (1922–2005) + + + lira turecka + lira turecka + liry tureckie + lir tureckich + liry tureckiej + + + dolar Trynidadu i Tobago + dolar Trynidadu i Tobago + dolary Trynidadu i Tobago + dolarów Trynidadu i Tobago + dolara Trynidadu i Tobago + + + nowy dolar tajwański + nowy dolar tajwański + nowe dolary tajwańskie + nowych dolarów tajwańskich + nowego dolara tajwańskiego + TWD + + + szyling tanzański + szyling tanzański + szylingi tanzańskie + szylingów tanzańskich + szylinga tanzańskiego + + + hrywna ukraińska + hrywna ukraińska + hrywny ukraińskie + hrywien ukraińskich + hrywny ukraińskiej + + + karbowaniec ukraiński + karbowaniec ukraiński + karbowańce ukraińskie + karbowańców ukraińskich + karbowaniec ukraiński + + + szyling ugandyjski (1966–1987) + + + szyling ugandyjski + szyling ugandyjski + szylingi ugandyjskie + szylingów ugandyjskich + szylinga ugandyjskiego + + + dolar amerykański + dolar amerykański + dolary amerykańskie + dolarów amerykańskich + dolara amerykańskiego + USD + + + peso urugwajskie (1975–1993) + + + peso urugwajskie + peso urugwajskie + pesos urugwajskie + pesos urugwajskich + peso urugwajskiego + + + som uzbecki + som uzbecki + somy uzbeckie + somów uzbeckich + soma uzbeckiego + + + boliwar wenezuelski (1871–2008) + boliwar wenezuelski (1871–2008) + boliwary wenezuelskie (1871–2008) + boliwarów wenezuelskich (1871–2008) + boliwary wenezuelskiego (1871–2008) + + + boliwar wenezuelski + boliwar wenezuelski + boliwary wenezuelskie + boliwarów wenezuelskich + boliwara wenezuelskiego + + + dong wietnamski + dong wietnamski + dongi wietnamskie + dongów wietnamskich + donga wietnamskiego + VND + + + vatu Vanuatu + vatu vanuatuańskie + vatu vanuatuańskie + vatu vanuatuańskich + vatu vanuatuańskiego + + + tala samoańska + tala samoańskie + tala samoańskie + tala samoańskich + tala samoańskiego + + + frank CFA BEAC + frank CFA BEAC + franki CFA BEAC + franków CFA BEAC + franka CFA BEAC + FCFA + + + srebro + + + złoto + + + jednostka emisji euroobligacji + + + europejska jednostka monetarna + + + europejska jednostka rozrachunkowa (XBC) + + + europejska jednostka rozrachunkowa (XBD) + + + dolar wschodniokaraibski + dolar wschodniokaraibski + dolary wschodniokaraibskie + dolarów wschodniokaraibskich + dolara wschodniokaraibskiego + EC$ + + + specjalne prawa ciągnienia + + + ECU + + + frank złoty francuski + + + UIC-frank francuski + + + frank CFA + frank CFA + franki CFA + franków CFA + franka CFA + CFA + + + pallad + + + frank CFP + frank CFP + franki CFP + franków CFP + franka CFP + CFPF + + + platyna + + + testowy kod waluty + + + nieznana waluta + nieznana waluta + nieznanej waluty + nieznanej waluty + nieznanej waluty + + + dinar jemeński + + + rial jemeński + rial jemeński + riale jemeńskie + riali jemeńskich + riala jemeńskiego + + + nowy dinar jugosławiański + + + dinar jugosławiański wymienny + + + rand południowoafrykański (finansowy) + + + rand południowoafrykański + rand południowoafrykański + randy południowoafrykańskie + randów południowoafrykańskich + randa południowoafrykańskiego + + + kwacha zambijska (1968–2012) + kwacha zambijska (1968–2012) + kwacha zambijskie (1968–2012) + kwacha zambijskich (1968–2012) + kwacha zambijskiej (1968–2012) + + + kwacha zambijska + kwacha zambijska + kwacha zambijskie + kwacha zambijskich + kwacha zambijskiej + + + nowy zair zairski + + + zair zairski + + + dolar Zimbabwe (1980–2008) + + + dolar Zimbabwe (2009) + + + dolar Zimbabwe (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} na {1} + + + {0} G + {0} G + {0} G + {0} G + + + {0} minuta + {0} minuty + {0} minut + {0} minuty + + + {0} sekunda + {0} sekundy + {0} sekund + {0} sekundy + + + {0} stopień + {0} stopnie + {0} stopni + {0} stopnia + + + {0} akr + {0} akry + {0} akrów + {0} akra + + + {0} hektar + {0} hektary + {0} hektarów + {0} hektara + + + {0} stopa kwadratowa + {0} stopy kwadratowe + {0} stóp kwadratowych + {0} stopy kwadratowej + + + {0} kilometr kwadratowy + {0} kilometry kwadratowe + {0} kilometrów kwadratowych + {0} kilometra kwadratowego + + + {0} metr kwadratowy + {0} metry kwadratowe + {0} metrów kwadratowych + {0} metra kwadratowego + + + {0} mila kwadratowa + {0} mile kwadratowe + {0} mil kwadratowych + {0} mili kwadratowej + + + {0} dzień + {0} dni + {0} dni + {0} dnia + + + {0} godzina + {0} godziny + {0} godzin + {0} godzin + + + {0} milisekunda + {0} milisekundy + {0} milisekund + {0} milisekundy + + + {0} minuta + {0} minuty + {0} minut + {0} minuty + + + {0} miesiąc + {0} miesiące + {0} miesięcy + {0} miesiąca + + + {0} sekunda + {0} sekundy + {0} sekund + {0} sekundy + + + {0} tydzień + {0} tygodnie + {0} tygodni + {0} tygodnia + + + {0} rok + {0} lata + {0} lat + {0} roku + + + {0} centymetr + {0} centymetry + {0} centymetrów + {0} centymetra + + + {0} stopa + {0} stopy + {0} stóp + {0} stopy + + + {0} cal + {0} cale + {0} cali + {0} cala + + + {0} kilometr + {0} kilometry + {0} kilometrów + {0} kilometra + + + {0} rok świetlny + {0} lata świetlne + {0} lat świetlnych + {0} roku świetlnego + + + {0} metr + {0} metry + {0} metrów + {0} metra + + + {0} mila + {0} mile + {0} mil + {0} mili + + + {0} milimetr + {0} milimetry + {0} milimetrów + {0} milimetra + + + {0} pikometr + {0} pikometry + {0} pikometrów + {0} pikometra + + + {0} jard + {0} jardy + {0} jardów + {0} jarda + + + {0} gram + {0} gramy + {0} gramów + {0} grama + + + {0} kilogram + {0} kilogramy + {0} kilogramów + {0} kilograma + + + {0} uncja + {0} uncje + {0} uncji + {0} uncji + + + {0} funt + {0} funty + {0} funtów + {0} funta + + + {0} koń mechaniczny + {0} konie mechaniczne + {0} koni mechanicznych + {0} konia mechanicznego + + + {0} kilowat + {0} kilowaty + {0} kilowatów + {0} kilowata + + + {0} wat + {0} waty + {0} watów + {0} wata + + + {0} hektopaskal + {0} hektopaskale + {0} hektopaskali + {0} hektopaskala + + + {0} cal słupa rtęci + {0} cale słupa rtęci + {0} cali słupa rtęci + {0} cala słupa rtęci + + + {0} millibar + {0} millibary + {0} millibarów + {0} millibara + + + {0} kilometr na godzinę + {0} kilometry na godzinę + {0} kilometrów na godzinę + {0} kilometra na godzinę + + + {0} metr na sekundę + {0} metry na sekundę + {0} metrów na sekundę + {0} metra na sekundę + + + {0} mila na godzinę + {0} mile na godzinę + {0} mil na godzinę + {0} mili na godzinę + + + {0} stopień Celsjusza + {0} stopnie Celsjusza + {0} stopni Celsjusza + {0} stopnia Celsjusza + + + {0} stopień Fahrenheita + {0} stopnie Fahrenheita + {0} stopni Fahrenheita + {0} stopnia Fahrenheita + + + {0} kilometr sześcienny + {0} kilometry sześcienne + {0} kilometrów sześciennych + {0} kilometra sześciennego + + + {0} mila sześcienna + {0} mile sześcienne + {0} mil sześciennych + {0} mili sześciennej + + + {0} litr + {0} litry + {0} litrów + {0} litra + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0} min + {0} min + {0} min + {0} min + + + {0} s + {0} s + {0} s + {0} s + + + {0}° + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} dzień + {0} dni + {0} dni + {0} dnia + + + {0} godz. + {0} godz. + {0} godz. + {0} godz. + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + {0} min + + + {0} mies. + {0} mies. + {0} mies. + {0} mies. + + + {0} sek. + {0} sek. + {0} sek. + {0} sek. + + + {0} tydz. + {0} tyg. + {0} tyg. + {0} tyg. + + + {0} rok + {0} lata + {0} lat + {0} roku + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} km + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + {0} m + + + {0} mila + {0} mile + {0} mil + {0} mili + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} KM + {0} KM + {0} KM + {0} KM + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} d. + {0} dn. + {0} dn. + {0} dn. + + + {0} godz. + {0} godz. + {0} godz. + {0} godz. + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + {0} min + + + {0} m-c + {0} m-ce + {0} m-cy + {0} m-ca + + + {0} s + {0} s + {0} s + {0} s + + + {0} tydz. + {0} tyg. + {0} tyg. + {0} tyg. + + + {0} r. + {0} l. + {0} l. + {0} r. + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} km + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} KM + {0} KM + {0} KM + {0} KM + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + + + tak:t + nie:n + + + + diff --git a/library/Zend/Locale/Data/pl_PL.xml b/library/Zend/Locale/Data/pl_PL.xml new file mode 100755 index 000000000..c6ed8e424 --- /dev/null +++ b/library/Zend/Locale/Data/pl_PL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/plurals.xml b/library/Zend/Locale/Data/plurals.xml new file mode 100755 index 000000000..ca2765794 --- /dev/null +++ b/library/Zend/Locale/Data/plurals.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + + + + i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04 + @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + i = 0,1 @integer 0, 1 @decimal 0.0~1.5 + @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + i = 1 and v = 0 @integer 1 + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000 + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000 + @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000 + @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0 + @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 1 and v = 0 @integer 1 + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6 + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, … + @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, … + @integer 0, 2~10, 12~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9 @integer 0~3, 5, 7, 8, 10~13, 15, 17, 18, 20, 21, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.3, 0.5, 0.7, 0.8, 1.0~1.3, 1.5, 1.7, 1.8, 2.0, 2.1, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + @integer 4, 6, 9, 14, 16, 19, 24, 26, 104, 1004, … @decimal 0.4, 0.6, 0.9, 1.4, 1.6, 1.9, 2.4, 2.6, 10.4, 100.4, 1000.4, … + + + + + + n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, … + @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, … + + + n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000 + i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6 + @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000 + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + + + + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000 + @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + + + + i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04 + n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00 + @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + i = 1 and v = 0 @integer 1 + v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + @integer 20~35, 100, 1000, 10000, 100000, 1000000, … + + + v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, … + v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, … + @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + + + + n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000 + n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000 + n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00 + @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, … + v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, … + v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + + + + + + i = 1 and v = 0 @integer 1 + i = 2 and v = 0 @integer 2 + v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, … + @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + + + + i = 1 and v = 0 @integer 1 + i = 2..4 and v = 0 @integer 2~4 + v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + + + i = 1 and v = 0 @integer 1 + v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … + v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, … + n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, … + n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, … + + + n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, … + n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, … + f != 0 @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, … + @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, … + n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, … + @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … + v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … + v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … + @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + + + + n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, … + n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, … + n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, … + n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, … + @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, … + + + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000 + n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000 + n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000 + @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + v = 0 and i % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … + v = 0 and i % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, … + v = 0 and i % 100 = 0,20,40,60,80 @integer 0, 20, 40, 60, 80, 100, 120, 140, 1000, 10000, 100000, 1000000, … + v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + @integer 3~10, 13~19, 23, 103, 1003, … + + + + + + n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000 + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000 + n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, … + n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, … + @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000 + n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000 + n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000 + n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000 + n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000 + @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, … + + + diff --git a/library/Zend/Locale/Data/postalCodeData.xml b/library/Zend/Locale/Data/postalCodeData.xml new file mode 100755 index 000000000..15f3d65eb --- /dev/null +++ b/library/Zend/Locale/Data/postalCodeData.xml @@ -0,0 +1,171 @@ + + + + + + + + GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4} + JE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2} + GY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2} + IM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2} + \d{5}([ \-]\d{4})? + [ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ ]?\d[ABCEGHJ-NPRSTV-Z]\d + \d{5} + \d{3}-\d{4} + \d{2}[ ]?\d{3} + \d{4} + \d{5} + \d{4} + \d{4} + \d{5} + \d{4}[ ]?[A-Z]{2} + \d{4} + \d{4} + \d{3}[ ]?\d{2} + \d{4} + \d{5}[\-]?\d{3} + \d{4}([\-]\d{3})? + \d{5} + 22\d{3} + \d{3}[\-]\d{3} + \d{6} + \d{3}(\d{2})? + \d{6} + \d{5} + AD\d{3} + ([A-HJ-NP-Z])?\d{4}([A-Z]{3})? + (37)?\d{4} + \d{4} + ((1[0-2]|[2-9])\d{2})? + \d{4} + (BB\d{5})? + \d{6} + [A-Z]{2}[ ]?[A-Z0-9]{2} + \d{5} + BBND 1ZZ + [A-Z]{2}[ ]?\d{4} + \d{4} + \d{5} + \d{4} + \d{7} + \d{4,5}|\d{3}-\d{4} + \d{5} + \d{4} + \d{3}[ ]?\d{2} + \d{5} + ([A-Z]\d{4}[A-Z]|(?:[A-Z]{2})?\d{6})? + \d{5} + \d{5} + \d{3} + \d{4} + \d{3}[ ]?\d{2} + 39\d{2} + \d{5} + \d{4} + (?:\d{5})? + \d{4} + \d{3} + \d{6} + \d{5} + \d{5} + \d{5} + \d{6} + \d{5} + \d{5} + \d{5} + \d{4} + (\d{4}([ ]?\d{4})?)? + (948[5-9])|(949[0-7]) + \d{5} + \d{4} + \d{4} + \d{5} + \d{5} + [A-Z]{3}[ ]?\d{2,4} + (\d{3}[A-Z]{2}\d{3})? + \d{5} + \d{4} + 980\d{2} + \d{5} + \d{5} + \d{4} + ((\d{4}-)?\d{3}-\d{3}(-\d{1})?)? + (\d{6})? + (PC )?\d{3} + \d{5} + \d{4} + \d{4} + \d{2}-\d{3} + 00[679]\d{2}([ \-]\d{4})? + \d{6} + \d{6} + 4789\d + \d{5} + \d{5} + \d{3}[ ]?\d{2} + \d{4} + \d{4} + \d{5} + \d{6} + \d{5} + \d{4} + \d{5} + \d{6} + \d{5} + \d{5} + \d{6} + 00120 + \d{4} + \d{5} + 96799 + 6799 + \d{4} + \d{6} + 8\d{4} + \d{5} + \d{5} + 6798 + \d{4} + FIQQ 1ZZ + 2899 + (9694[1-4])([ \-]\d{4})? + 9[78]3\d{2} + \d{3} + 9[78][01]\d{2} + SIQQ 1ZZ + 969[123]\d([ \-]\d{4})? + \d{4} + \d{4} + \d{5} + \d{6} + \d{4} + \d{3} + \d{3} + 969[67]\d([ \-]\d{4})? + \d{6} + 9695[012]([ \-]\d{4})? + 9[78]2\d{2} + 988\d{2} + \d{4} + 008(([0-4]\d)|(5[01]))([ \-]\d{4})? + 987\d{2} + \d{3} + 9[78]5\d{2} + PCRN 1ZZ + 96940 + 9[78]4\d{2} + (ASCN|STHL) 1ZZ + \d{4} + \d{5} + [HLMS]\d{3} + TKCA 1ZZ + 986\d{2} + \d{5} + 976\d{2} + + diff --git a/library/Zend/Locale/Data/ps.xml b/library/Zend/Locale/Data/ps.xml new file mode 100755 index 000000000..106e9adc1 --- /dev/null +++ b/library/Zend/Locale/Data/ps.xml @@ -0,0 +1,407 @@ + + + + + + + + + + + + افريکاني + امهاري + عربي + اسمائى ژبه + أذربائجاني + بلوڅي + بېلاروسي + بلغاري + بنګالي + برېتون + بوسني + کټلاني + چېک + ويلشي + ډېنش + الماني + یوناني + انګلیسي + اسپرانتو + هسپانوي + حبشي + باسکي + فارسي + فینلنډي + تګالوګ + فاروئې + فرانسوي + فريزي + ائيرلېنډي + سکاټلېنډي ګېلک + ګلېشيايي + ګوراني + ګجراتي + عبري + هندي + کروواتي + هنګري + ارمني + انټرلنګوا + انډونېشيايي + آسا نا جبة + أيسلېنډي + ایټالوي + جاپانی + جاوايې + جورجيائي + کمبوډيايې يا د کمبوډيا + کنأډه + کوريائي + کردي + کرګيز + لاتیني + لويتين + ليتواني + لېټواني + ملغاسي + مقدوني + مالايالم + مغولي + مراټهي + ملایا + مالټايي + نېپالي + هالېنډي + ناروېئي (نائنورسک) + ناروېئې + اوکسيټاني + اوريا + پنجابي + پولنډي + پښتو + پورتګالي + پرتگال (برازيل) + پرتګالي (پرتګال) + روماني + روسي + سنسکریټ + سندهي + سرب-کروشيايي + سينهالي + سلوواکي + سلوواني + سومالي + الباني + سربيائي + سيسوتو + سوډاني + سویډنی + سواهېلي + تامل + تېليګو + تاجک + تايلېنډي + تيګريني + ترکمني + کلينګاني + ترکي + تاتار + توی + اويگور + اوکرانايي + اردو + ازبکي + وېتنامي + خوسا + يديش + چیني + زولو + + + + + + افغانستان + البانیه + انګولا + انتارکتیکا + اتریش + بنګله‌دیش + بلغاریه + کاناډا + سویس + چین + کولمبیا + کیوبا + المان + ډنمارک + الجزایر + مصر + هسپانیه + حبشه + فنلینډ + فرانسه + برتانیه + ګانا + ګیانا + یونان + ګواتیمالا + هانډوراس + مجارستان + اندونیزیا + هند + عراق + آیسلینډ + ایټالیه + جمیکا + جاپان + کمبودیا + کویټ + لاوس + لبنان + لایبریا + لیبیا + مراکش + مغولستان + مالیزیا + نایجیریا + نکاراګوا + هالېنډ + ناروې + نیپال + نیوزیلنډ + پاکستان + پولنډ + فلسطین + پورتګال + روسیه + روندا + سعودی عربستان + سویډن + سالوېډور + سوریه + تاجکستان + تنزانیا + یوروګوای + یمن + + + + + right-to-left + + + + [\u064E \u0650 \u064F \u064B \u064D \u064C \u0651 \u0652 \u0654 \u0670 آ ا أ ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ ل م ن ڼ ه ة و ؤ ی ي ې ۍ ئ] + [\u200C \u200D \u200E\u200F] + [آ ا ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ ل م ن ڼ ه و ی] + + + + + + + + EEEE د G y د MMMM d + + + + + د G y د MMMM d + + + + + d MMM y G + + + + + GGGGG y/M/d + + + + + + H + H:mm + H:mm:ss + M/d + d MMMM + G y/M + د G y د MMMM + + + + + + + + جنوري + فبروري + مارچ + اپریل + می + جون + جولای + اګست + سپتمبر + اکتوبر + نومبر + دسمبر + + + + + + + یکشنبه + دوشنبه + سه‌شنبه + چهارشنبه + پنجشنبه + جمعه + شنبه + + + + + + + غ.م. + غ.و. + + + + + + ق.م. + م. + + + + + + EEEE د y د MMMM d + + + + + د y د MMMM d + + + + + d MMM y + + + + + y/M/d + + + + + + + H:mm:ss (zzzz) + + + + + H:mm:ss (z) + + + + + H:mm:ss + + + + + H:mm + + + + + + H + H:mm + H:mm:ss + M/d + d MMMM + y/M + د y د MMMM + + + {0} ({1}) + + + + + + + + وری + غویی + غبرګولی + چنګاښ + زمری + وږی + تله + لړم + لیندۍ + مرغومی + سلواغه + کب + + + + + + + د {0} په وخت + + کابل + + + + + arabext + + arabext + + + ٫ + ٬ + ٪ + ×۱۰^ + + + , + . + % + ‎+ + ‎− + E + + + + + #,##0.00 ¤ + + + + + + افغانۍ + ؋ + + + + + diff --git a/library/Zend/Locale/Data/ps_AF.xml b/library/Zend/Locale/Data/ps_AF.xml new file mode 100755 index 000000000..2d7be67e2 --- /dev/null +++ b/library/Zend/Locale/Data/ps_AF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/pt.xml b/library/Zend/Locale/Data/pt.xml new file mode 100755 index 000000000..d9656e03e --- /dev/null +++ b/library/Zend/Locale/Data/pt.xml @@ -0,0 +1,6115 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abcázio + achém + acoli + adangme + adigue + avéstico + africâner + afrihili + aghem + ainu + akan + acadiano + aleúte + altai do sul + amárico + aragonês + inglês arcaico + angika + árabe + árabe moderno + aramaico + araucano + arapaho + arauaqui + assamês + asa + asturiano + avaric + awadhi + aimara + azerbaijano + azeri + bashkir + balúchi + balinês + basa + bamum + ghomala' + bielo-russo + beja + bemba + bena + bafut + búlgaro + bhojpuri + bislamá + bikol + bini + kom + siksika + bambara + bengali + tibetano + bretão + braj + bodo + bósnio + akoose + buriat + buguinês + bulu + blin + medumba + catalão + caddo + caribe + cayuga + atsam + checheno + cebuano + chiga + chamorro + chibcha + chagatai + chuukese + mari + chinook jargon + choctaw + chipewyan + cherokee + cheiene + sorâni curdo + córsico + copta + cree + turco da Crimeia + tcheco + kashubian + eslavo eclesiástico + chuvash + galês + dinamarquês + dacota + dargwa + taita + alemão + alemão austríaco + alto alemão suíço + delaware + slave + dogrib + dinka + zarma + dogri + sérvio baixo + duala + holandês médio + divehi + jola-fonyi + diúla + dzonga + dazaga + embu + eve + efique + egípcio arcaico + ekajuk + grego + elamite + inglês + inglês australiano + inglês canadense + inglês britânico + inglês do Reino Unido + inglês americano + inglês dos Estados Unidos + inglês médio + esperanto + espanhol + espanhol latino-americano + espanhol europeu + espanhol mexicano + estoniano + basco + ewondo + persa + fangue + fanti + fula + finlandês + filipino + fijiano + feroês + fom + francês + francês canadense + francês suíço + francês médio + francês arcaico + frísio setentrional + frisão oriental + friulano + frísio ocidental + irlandês + ga + gayo + gbaia + gaélico escocês + geez + gilbertês + galego + alemão médio-alto + guarani + alemão arcaico alto + gondi + gorontalo + gótico + grebo + grego arcaico + alemão suíço + guzerate + gusii + manx + gwichʼin + hauçá + haida + havaiano + hebraico + híndi + hiligaynon + hitita + hmong + hiri motu + croata + sorábio superior + haitiano + húngaro + hupa + armênio + herero + interlíngua + iban + ibibio + indonésio + interlingue + ibo + sichuan yi + inupiaque + ilocano + inguche + ido + islandês + italiano + inuktitut + japonês + lojban + nguemba + machame + judaico-persa + judaico-arábico + javanês + georgiano + kara-kalpak + kabyle + kachin + jju + kamba + kawi + kabardiano + kanembu + tyap + maconde + kabuverdianu + koro + congolês + khasi + khotanês + koyra chiini + quicuio + kuanyama + cazaque + kako + groenlandês + kalenjin + cmer + quimbundo + canarês + coreano + concani + kosraean + kpelle + canúri + karachay-balkar + idioma carélio + kurukh + caxemira + shambala + bafia + kölsch + curdo + kumyk + kutenai + komi + córnico + quirguiz + latim + ladino + langi + lahnda + lamba + luxemburguês + lezghian + luganda + limburguês + lacota + lingala + laosiano + mongo + lozi + lituano + luba-catanga + luba-lulua + luiseno + lunda + luo + lushai + luyia + letão + madurês + mafa + magahi + maithili + makasar + mandinga + massai + maba + mocsa + mandar + mende + meru + morisyen + malgaxe + irlandês médio + macua + meta' + marshalês + maori + miquemaque + minangkabau + macedônio + malaiala + mongol + manchu + manipuri + mohawk + mossi + marata + malaio + maltês + mundang + idiomas múltiplos + creek + mirandês + marwari + birmanês + myene + erzya + nauruano + napolitano + nama + bokmål norueguês + ndebele do norte + baixo-alemão + nepali + newari + dongo + nias + niueano + holandês + flamengo + kwasio + nynorsk norueguês + ngiemboon + norueguês + nogai + nórdico arcaico + n'ko + ndebele do sul + soto setentrional + nuer + navajo + newari clássico + nianja + nyamwezi + nyankole + nyoro + nzima + occitânico + ojibwa + oromo + oriya + ossetic + osage + turco otomano + panjabi + pangasinã + pálavi + pampanga + papiamento + palauano + persa arcaico + fenício + páli + polonês + pohnpeian + provençal arcaico + pashto + pushto + português + português do Brasil + português europeu + quíchua + rajastani + rapanui + rarotongano + romanche + rundi + romeno + moldávio + rombo + romani + russo + aromeno + kinyarwanda + rwa + sânscrito + sandawe + iacuto + aramaico samaritano + samburu + sasak + santali + ngambay + sangu + sardo + siciliano + escocês + sindi + sami do norte + seneca + sena + selkup + koyraboro senni + sango + irlandês arcaico + servo-croata + tachelhit + shan + árabe chadiano + cingalês + sidamo + eslovaco + esloveno + samoano + sami do sul + lule sami + inari sami + skolt sami + shona + soninquê + somali + sogdiano + albanês + sérvio + idioma surinamês + serere + swati + saho + soto do sul + sundanês + sukuma + sosso + sumério + sueco + suaíli + comoriano + suaíli do Congo + siríaco clássico + siríaco + tâmil + telugu + timne + teso + tereno + tétum + tadjique + tailandês + tigrínia + tigré + tiv + turcomano + toquelauano + tagalo + klingon + tlinguite + tamaxeque + tswana + tonganês + tonganês de Nyasa + tok pisin + turco + taroko + tsonga + tsimshian + tatar + tumbuka + tuvaluano + twi + tasawaq + taitiano + tuvinian + tamazight + udmurt + uigur + ugarítico + ucraniano + umbundu + idioma desconhecido + urdu + usbeque + vai + venda + vietnamita + volapuque + votic + vunjo + valão + walser + walamo + waray + washo + uólofe + kalmyk + xosa + lusoga + yao + yapese + yangben + yemba + iídiche + ioruba + cantonês + zhuang + zapoteca + símbolos blis + zenaga + tamazight marroquino padrão + chinês + chinês simplificado + chinês tradicional + zulu + zunhi + sem conteúdo linguístico + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundo + África + América do Norte + América do Sul + Oceania + África Ocidental + América Central + África Oriental + África do Norte + África Central + África Austral + Américas + América Setentrional + Caribe + Ásia Oriental + Ásia do Sul + Ásia Centro-Oriental + Europa do Sul + Australásia + Melanésia + Região da Micronésia + Polinésia + Ásia + Ásia Central + Ásia Ocidental + Europa + Europa Oriental + Europa Setentrional + Europa Ocidental + América Latina + Ilha de Ascensão + Andorra + Emirados Árabes Unidos + Afeganistão + Antígua e Barbuda + Anguilla + Albânia + Armênia + Antilhas Holandesas + Angola + Antártida + Argentina + Samoa Americana + Áustria + Austrália + Aruba + Ilhas Åland + Azerbaijão + Bósnia e Herzegovina + Barbados + Bangladesh + Bélgica + Burquina Faso + Bulgária + Bahrein + Burundi + Benin + São Bartolomeu + Bermudas + Brunei + Bolívia + Países Baixos Caribenhos + Brasil + Bahamas + Butão + Ilha Bouvet + Botsuana + Bielorrússia + Belize + Canadá + Ilhas Coco + Congo - Kinshasa + República Democrática do Congo + República Centro-Africana + Congo - Brazzaville + Congo + Suíça + Costa do Marfim + Ilhas Cook + Chile + República dos Camarões + China + Colômbia + Ilha de Clipperton + Costa Rica + Cuba + Cabo Verde + Curaçao + Ilhas Natal + Chipre + República Tcheca + Alemanha + Diego Garcia + Djibuti + Dinamarca + Dominica + República Dominicana + Argélia + Ceuta e Melilha + Equador + Estônia + Egito + Saara Ocidental + Eritreia + Espanha + Etiópia + União Europeia + Finlândia + Fiji + Ilhas Malvinas + Micronésia + Ilhas Faroe + França + Gabão + Reino Unido + GB + Granada + Geórgia + Guiana Francesa + Guernsey + Gana + Gibraltar + Groênlandia + Gâmbia + Guiné + Guadalupe + Guiné Equatorial + Grécia + Geórgia do Sul e Ilhas Sandwich do Sul + Guatemala + Guam + Guiné Bissau + Guiana + Hong Kong, RAE da China + Hong Kong + Ilha Heard e Ilhas McDonald + Honduras + Croácia + Haiti + Hungria + Ilhas Canárias + Indonésia + Irlanda + Israel + Ilha de Man + Índia + Território Britânico do Oceano Índico + Iraque + Irã + Islândia + Itália + Jersey + Jamaica + Jordânia + Japão + Quênia + Quirguistão + Camboja + Quiribati + Comores + São Cristovão e Nevis + Coreia do Norte + Coreia do Sul + Kuwait + Ilhas Caiman + Cazaquistão + Laos + Líbano + Santa Lúcia + Liechtenstein + Sri Lanka + Libéria + Lesoto + Lituânia + Luxemburgo + Letônia + Líbia + Marrocos + Mônaco + Moldávia + Montenegro + São Martinho + Madagascar + Ilhas Marshall + Macedônia + Macedônia (Antiga República Iugoslava da Macedônia - ARIM) + Mali + Mianmar (Birmânia) + Mongólia + Macau, RAE da China + Macau + Ilhas Marianas do Norte + Martinica + Mauritânia + Montserrat + Malta + Maurício + Maldivas + Malawi + México + Malásia + Moçambique + Namíbia + Nova Caledônia + Níger + Ilha Norfolk + Nigéria + Nicarágua + Holanda + Noruega + Nepal + Nauru + Niue + Nova Zelândia + Omã + Panamá + Peru + Polinésia Francesa + Papua-Nova Guiné + Filipinas + Paquistão + Polônia + Saint Pierre e Miquelon + Ilhas Pitcairn + Porto Rico + Territórios palestinos + Palestina + Portugal + Palau + Paraguai + Catar + Oceania Remota + Reunião + Romênia + Sérvia + Rússia + Ruanda + Arábia Saudita + Ilhas Salomão + Seychelles + Sudão + Suécia + Cingapura + Santa Helena + Eslovênia + Svalbard e Jan Mayen + Eslováquia + Serra Leoa + San Marino + Senegal + Somália + Suriname + Sudão do Sul + São Tomé e Príncipe + El Salvador + Sint Maarten + Síria + Suazilândia + Tristão da Cunha + Ilhas Turks e Caicos + Chade + Territórios Franceses do Sul + Togo + Tailândia + Tadjiquistão + Tokelau + Timor-Leste + Turcomenistão + Tunísia + Tonga + Turquia + Trinidad e Tobago + Tuvalu + Taiwan + Tanzânia + Ucrânia + Uganda + Ilhas Distantes dos EUA + Estados Unidos + EUA + Uruguai + Uzbequistão + Cidade do Vaticano + São Vicente e Granadinas + Venezuela + Ilhas Virgens Britânicas + Ilhas Virgens dos EUA + Vietnã + Vanuatu + Wallis e Futuna + Samoa + Kosovo + Iêmen + Mayotte + África do Sul + Zâmbia + Zimbábue + Região desconhecida + + + ortografia alemã tradicional + ortografia resiana padronizada + ortografia alemã de 1996 + francês antigo de 1606 + francês da idade moderna + acadêmico + armênio oriental + armênio ocidental + alfabeto latino turco unificado + biscainho + dialeto san giorgio/bila + boontling + fonética do Alfabeto Fonético Internacional + fonética do Alfabeto Fonético Urálico + romanização hepburn + alto noruego + ortografia comum + dialeto lipovaz de Resian + monotônico + dialeto ndyuka + dialeto natisone + dialeto gniva/njiva + dialeto oseacco/osojane + dialeto pamaka + romanização Pinyin + politônico + computador + Ortografia Revisada + resiano + saho + inglês padrão escocês + scouse + dialeto stolvizza/solbica + ortografia taraskievica + ortografia unificada + ortografia revisada e unificada + valenciano + romanização Wade-Giles + + + Calendário + Ignorar classificação de símbolos + Classificação reversa de acentos + Ordem de maiúsculas/minúsculas + Ordem com diferenciação de maiúsculas e minúsculas + Classificação kana + Ordenação + Classificação normalizada + Classificação numérica + Intensidade da classificação + Moeda + Números + Fuso horário + Variante de localidade + Classificar como símbolos + Uso privado + + + Algarismos indo-arábicos + Algarismos indo-arábicos por extenso + Algarismos armênios + Algarismos armênios minúsculos + Algarismos Bengali + Ordem do Chinês Tradicional - Big5 + Calendário Budista + Calendário Chinês + Calendário Coptic + Algarismos Devanagari + Ordem do dicionário + Ordem padrão do Unicode + Algarismos etiópicos + Calendário etiópico + Calendário Amete Alem da Etiópia + Numerais financeiros + Algarismos em extensão total + Ordem do Chinês Simplificado - GB2312 + Algarismos georgianos + Calendário Gregoriano + Algarismos gregos + Algarismos gregos minúsculos + Algarismos Gujarati + Algarismos Gurmukhi + Algarismos decimais chineses + Algarismos chineses simplificados + Algarismos financeiros chineses simplificados + Algarismos chineses tradicionais + Algarismos financeiros chineses tradicionais + Algarismos hebraicos + Calendário Hebraico + Classificar tudo + Calendário Nacional Indiano + Calendário Islâmico + Calendário Civil Islâmico + Calendário Japonês + Algarismos japoneses + Algarismos financeiros japoneses + Algarismos Khmer + Algarismos Kannada + Algarismos laosianos + Algarismos ocidentais + Classificar por minúsculas + Algarismos Malayalam + Algarismos mongóis + Algarismos Myanmar + Dígitos nativos + Classificar acentos normalmente + Classificação normal de maiúsculas e minúsculas + Classificação sem diferenciação de maiúsculas e minúsculas + Classificar kana separadamente + Classificar sem normalização + Classificar dígitos individualmente + Classificar símbolos + Algarismos Oriya + Calendário persa + Ordem de Lista Telefônica + Ordem de classificação fonética + Ordem Pin-yin + Classificar somente letras básicas + Classificar acentos/maiúsculas e minúsculas/largura/kana + Ordem reformulada + Calendário da República da China + Algarismos romanos + Algarismos romanos minúsculos + Pesquisa de uso geral + Pesquisar por consonante inicial hangul + Classificar acentos + Classificar ignorando símbolos + padrão + Ordem dos Traços + Algarismos Tâmil + Algarismos Tâmil + Algarismos Telugu + Classificar acentos/maiúsculas e minúsculas/largura + Algarismos tailandeses + Algarismos tibetanos + Ordem Tradicional + Numerais tradicionais + Ordem por Radical-Traços + Classificar por maiúsculas + Dígitos vai + Classificação reversa de acentos + Classificação com diferenciação de maiúsculas e minúsculas + Classificar kana diferentemente + Classificar Unicode normalizado + Classificar dígitos numericamente + + + BGN + Numérico + Tom + UNGEGN + Tonalidade + Extensão total + Extensão total + Jamo + Pinyin + Publicação + + + métrico + inglês + americano + + + Idioma: {0} + Alfabeto: {0} + Região: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y z] + [ª ă å ä ā æ è ĕ ë ē ì ĭ î ï ī ñ º ŏ ö ø ō œ ù ŭ û ü ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + {0}… + …{0} + {0}… {1} + {0}… + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Mês 1 + Mês 2 + Mês 3 + Mês 4 + Mês 5 + Mês 6 + Mês 7 + Mês 8 + Mês 9 + Mês 10 + Mês 11 + Mês 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + EEEE, d 'de' MMMM 'de' U + + + + + d 'de' MMMM 'de' U + + + + + dd/MM U + + + + + dd/MM/yy + + + + + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + dd/MM/y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + y G + MMM 'de' y G + d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, dd/MM + LLL + d 'de' MMM + E, d 'de' MMM + mm:ss + y G + y G + MM/y GGGGG + dd/MM/y GGGGG + E, dd/MM/y GGGGG + MMM 'de' y G + d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y G + G y QQQ + G y QQQQ + + + {0} - {1} + + d-d + + + h'h' a - h'h' a + h'h' - h'h' a + + + HH'h' - HH'h' + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a - h a v + h - h a v + + + HH - HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM - MMM + + + d-d 'de' MMM + d 'de' MMM - d 'de' MMM + + + E, d - E, d 'de' MMM + E, d 'de' MMM - E, d 'de' MMM + + + y - y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + + + MMM-MMM 'de' y G + MMM 'de' y - MMM 'de' y G + + + d-d 'de' MMM 'de' y + d 'de' MMM - d 'de' MMM 'de' y G + d 'de' MMM 'de' y - d 'de' MMM 'de' y G + + + E, d - E, d 'de' MMM 'de' y G + E, d 'de' MMM - E, d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y - E, d 'de' MMM 'de' y G + + + MMMM-MMMM 'de' y G + MMMM 'de' y - MMMM 'de' y G + + + + + + + + + jan + fev + mar + abr + mai + jun + jul + ago + set + out + nov + dez + + + J + F + M + A + M + J + J + A + S + O + N + D + + + janeiro + fevereiro + março + abril + maio + junho + julho + agosto + setembro + outubro + novembro + dezembro + + + + + jan + fev + mar + abr + mai + jun + jul + ago + set + out + nov + dez + + + J + F + M + A + M + J + J + A + S + O + N + D + + + janeiro + fevereiro + março + abril + maio + junho + julho + agosto + setembro + outubro + novembro + dezembro + + + + + + + dom + seg + ter + qua + qui + sex + sáb + + + D + S + T + Q + Q + S + S + + + dom + seg + ter + qua + qui + sex + sáb + + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + + + + dom + seg + ter + qua + qui + sex + sáb + + + D + S + T + Q + Q + S + S + + + dom + seg + ter + qua + qui + sex + sáb + + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1º trimestre + 2º trimestre + 3º trimestre + 4º trimestre + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1º trimestre + 2º trimestre + 3º trimestre + 4º trimestre + + + + + + + AM + PM + + + a + p + + + tarde + AM + manhã + noite + meio-dia + PM + + + + + tarde + manhã + noite + meia-noite + + + + + + Antes de Cristo + Ano do Senhor + + + a.C. + d.C. + + + + + + EEEE, d 'de' MMMM 'de' y + + + + + d 'de' MMMM 'de' y + + + + + dd/MM/y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y G + MMM 'de' y G + d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y G + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, dd/MM + dd/MM + LLL + d 'de' MMM + E, d 'de' MMM + mm:ss + y + MM/y + dd/MM/y + E, dd/MM/y + MM/y + MMM 'de' y + d 'de' MMM 'de' y + E, d 'de' MMM 'de' y + y QQQ + y QQQQ + + + {0} {1} + + + {0} - {1} + + d-d + + + h'h' a - h'h' a + h'h' - h'h' a + + + HH'h' - HH'h' + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a - h a v + h - h a v + + + HH - HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM - MMM + + + d-d 'de' MMM + d 'de' MMM - d 'de' MMM + + + E, d - E, d 'de' MMM + E, d 'de' MMM - E, d 'de' MMM + + + y - y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y - MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM - d 'de' MMM 'de' y + d 'de' MMM 'de' y - d 'de' MMM 'de' y + + + E, d - E, d 'de' MMM 'de' y + E, d 'de' MMM - E, d 'de' MMM 'de' y + E, d 'de' MMM 'de' y - E, d 'de' MMM 'de' y + + + MMMM - MMMM 'de' y + MMMM 'de' y - MMMM 'de' y + + + + + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + + + AH + + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + dd/MM/y G + + + + + dd/MM/yy GGGGG + + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + + + Antes de R.O.C. + R.O.C. + + + + + + + Era + + + Ano + ano passado + este ano + próximo ano + + Dentro de {0} ano + Dentro de {0} anos + + + Há {0} ano + Há {0} anos + + + + Mês + mês passado + este mês + próximo mês + + Dentro de {0} mês + Dentro de {0} meses + + + Há {0} mês + Há {0} meses + + + + Semana + semana passada + esta semana + próxima semana + + Dentro de {0} semana + Dentro de {0} semanas + + + Há {0} semana + Há {0} semanas + + + + Dia + anteontem + ontem + hoje + amanhã + depois de amanhã + + Dentro de {0} dia + Dentro de {0} dias + + + Há {0} dia + Há {0} dias + + + + Dia da semana + + + domingo passado + este domingo + próximo domingo + + + segunda-feira passada + esta segunda-feira + próxima segunda-feira + + + terça-feira passada + esta terça-feira + próxima terça-feira + + + quarta-feira passada + esta quarta-feira + próxima quarta-feira + + + quinta-feira passada + esta quinta-feira + próxima quinta-feira + + + sexta-feira passada + esta sexta-feira + próxima sexta-feira + + + sábado passado + este sábado + próximo sábado + + + Período do dia + + + Hora + + Dentro de {0} hora + Dentro de {0} horas + + + Há {0} hora + Há {0} horas + + + + Minuto + + Dentro de {0} minuto + Dentro de {0} minutos + + + Há {0} minuto + Há {0} minutos + + + + Segundo + agora + + Dentro de {0} segundo + Dentro de {0} segundos + + + Há {0} segundo + Há {0} segundos + + + + Fuso + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Horário {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Cidade desconhecida + + + Antígua + + + Tirana + + + Showa + + + Dumont d’Urville + + + Tucumã + + + Córdoba + + + Viena + + + Dacca + + + Bruxelas + + + Sófia + + + Barein + + + Porto Novo + + + São Bartolomeu + + + Bermudas + + + Eirunepé + + + Cuiabá + + + Santarém + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Fernando de Noronha + + + Timphu + + + Atikokan + + + St. John’s + + + Zurique + + + Ilha de Páscoa + + + Xangai + + + Bogotá + + + Cabo Verde + + + Curaçao + + + Nicósia + + + Praga + + + Büsingen + + + Berlim + + + Djibuti + + + Copenhague + + + Argel + + + Galápagos + + + Guaiaquil + + + El Aaiún + + + Asmara + + + Canárias + + + Madri + + + Adis-Abeba + + + Helsinque + + + Chuuk + + + Pohnpei + + + Ilhas Faroe + + + + Horário de Verão Britânico + + Londres + + + Granada + + + Caiena + + + Acra + + + Nuuk + + + Ittoqqortoormiit + + + Conacri + + + Guadalupe + + + Atenas + + + Geórgia do Sul + + + Guiana + + + Porto Príncipe + + + Budapeste + + + Jacarta + + + Macassar + + + + Horário de Verão da Irlanda + + + + Jerusalém + + + Ilha de Man + + + Kolkata + + + Bagdá + + + Teerã + + + Roma + + + Amã + + + Tóquio + + + Nairóbi + + + Taraua + + + Comores + + + São Cristóvão + + + Seul + + + Caimã + + + Aqtöbe + + + Beirute + + + Santa Lúcia + + + Monróvia + + + Luxemburgo + + + Trípoli + + + Mônaco + + + Podgóritza + + + Bamaco + + + Yangon + + + Ulan Bator + + + Martinica + + + Maurício + + + Maldivas + + + Monterrei + + + Cidade do México + + + Mérida + + + Cancún + + + Kuala Lampur + + + Nouméa + + + Niamei + + + Manágua + + + Amsterdã + + + Catmandu + + + Mascate + + + Panamá + + + Taiti + + + Carachi + + + Varsóvia + + + Porto Rico + + + Açores + + + Lisboa + + + Assunção + + + Reunião + + + Bucareste + + + Belgrado + + + Kaliningrado + + + Moscou + + + Volgogrado + + + Ecaterimburgo + + + Sacalina + + + Riadi + + + Mahé + + + Cartum + + + Estocolmo + + + Cingapura + + + Santa Helena + + + Liubliana + + + Dacar + + + Mogadíscio + + + São Tomé + + + Lower Prince's Quarter + + + Damasco + + + Lomé + + + Duchambe + + + Asgabate + + + Túnis + + + Istambul + + + Porto Espanha + + + Zaporizhia + + + Campala + + + Beulah, Dakota do Norte + + + New Salen, Dakota do Norte + + + Central, Dakota do Norte + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Indianápolis + + + Vevay, Indiana + + + Monticello, Kentucky + + + Nova York + + + Montevidéu + + + Samarcanda + + + Vaticano + + + São Vicente + + + St. Thomas + + + Ho Chi Minh + + + Éfaté + + + Ápia + + + Adem + + + Johannesburgo + + + Lusaca + + + + Horário do Acre + Horário Padrão do Acre + Horário de Verão do Acre + + + ACT + ACT + ACST + + + + + Horário do Afeganistão + + + + + Horário da África Central + + + + + Horário da África Oriental + + + + + Horário da África do Sul + + + + + Horário da África Ocidental + Horário Padrão da África Ocidental + Horário de Verão da África Ocidental + + + + + Horário do Alasca + Horário Padrão do Alasca + Horário de Verão do Alasca + + + + + Horário do Almaty + Horário Padrão do Almaty + Horário de Verão do Almaty + + + + + Horário do Amazonas + Horário Padrão do Amazonas + Horário de Verão do Amazonas + + + AMT + AMT + AMST + + + + + Horário Central + Horário Padrão Central + Horário de Verão Central + + + + + Horário Oriental + Horário Padrão Oriental + Horário de Verão Oriental + + + + + Horário da Montanha + Horário Padrão da Montanha + Horário de Verão da Montanha + + + + + Horário do Pacífico + Horário Padrão do Pacífico + Horário de Verão do Pacífico + + + + + Horário de Anadyr + Horário Padrão do Anadyr + Horário de Verão do Anadyr + + + + + Horário do Aqtau + Horário Padrão do Aqtau + Horário de Verão do Aqtau + + + + + Horário do Aqtobe + Horário Padrão do Aqtobe + Horário de Verão do Aqtobe + + + + + Horário da Arábia + Horário Padrão da Arábia + Horário de Verão da Arábia + + + + + Horário da Argentina + Horário Padrão da Argentina + Horário de Verão da Argentina + + + + + Horário da Argentina Ocidental + Horário Padrão da Argentina Ocidental + Horário de Verão da Argentina Ocidental + + + + + Horário da Armênia + Horário Padrão da Armênia + Horário de Verão da Armênia + + + + + Horário do Atlântico + Horário Padrão do Atlântico + Horário de Verão do Atlântico + + + + + Horário da Austrália Central + Horário Padrão da Austrália Central + Horário de Verão da Austrália Central + + + + + Horário da Austrália Centro-Ocidental + Horário Padrão da Austrália Centro-Ocidental + Horário de Verão da Austrália Centro-Ocidental + + + + + Horário da Austrália Oriental + Horário Padrão da Austrália Oriental + Horário de Verão da Austrália Oriental + + + + + Horário da Austrália Ocidental + Horário Padrão da Austrália Ocidental + Horário de Verão da Austrália Ocidental + + + + + Horário do Arzeibaijão + Horário Padrão do Arzeibaijão + Horário de Verão do Arzeibaijão + + + + + Horário dos Açores + Horário Padrão dos Açores + Horário de Verão dos Açores + + + + + Horário de Bangladesh + Horário Padrão de Bangladesh + Horário de Verão de Bangladesh + + + + + Horário do Butão + + + + + Horário da Bolívia + + + + + Horário de Brasília + Horário Padrão de Brasília + Horário de Verão de Brasília + + + BRT + BRT + BRST + + + + + Horário de Brunei Darussalam + + + + + Horário do Cabo Verde + Horário Padrão do Cabo Verde + Horário de Verão do Cabo Verde + + + + + Horário de Chamorro + + + + + Horário de Chatham + Horário Padrão de Chatham + Horário de Verão de Chatham + + + + + Horário do Chile + Horário Padrão do Chile + Horário de Verão do Chile + + + + + Horário da China + Horário Padrão da China + Horário de Verão da China + + + + + Horário de Choibalsan + Horário Padrão de Choibalsan + Horário de Verão de Choibalsan + + + + + Horário das Ilhas Natal + + + + + Horário das Ilhas Coco + + + + + Horário da Colômbia + Horário Padrão da Colômbia + Horário de Verão da Colômbia + + + + + Horário das Ilhas Cook + Horário Padrão das Ilhas Cook + Meio Horário de Verão das Ilhas Cook + + + + + Horário de Cuba + Horário Padrão de Cuba + Horário de Verão de Cuba + + + + + Horário de Davis + + + + + Horário de Dumont-d'Urville + + + + + Horário do Timor-Leste + + + + + Horário da Ilha de Páscoa + Horário Padrão da Ilha de Páscoa + Horário de Verão da Ilha de Páscoa + + + + + Horário do Equador + + + + + Horário da Europa Central + Horário Padrão da Europa Central + Horário de Verão da Europa Central + + + + + Horário da Europa Oriental + Horário Padrão da Europa Oriental + Horário de Verão da Europa Oriental + + + + + Horário da Europa Ocidental + Horário Padrão da Europa Ocidental + Horário de Verão da Europa Ocidental + + + + + Horário das Ilhas Falkland + Horário Padrão das Ilhas Falkland + Horário de Verão das Ilhas Falkland + + + + + Horário de Fiji + Horário Padrão de Fiji + Horário de Verão de Fiji + + + + + Horário da Guiana Francesa + + + + + Horário da Antártida e do Sul da França + + + + + Horário de Galápagos + + + + + Horário de Gambier + + + + + Horário da Geórgia + Horário Padrão da Geórgia + Horário de Verão da Geórgia + + + + + Horário das Ilhas Gilberto + + + + + Horário do Meridiano de Greenwich + + + + + Horário da Groelândia Oriental + Horário Padrão da Groelândia Oriental + Horário de Verão da Groelândia Oriental + + + + + Horário da Groenlândia Ocidental + Horário Padrão da Groenlândia Ocidental + Horário de Verão da Groenlândia Ocidental + + + + + Horário Padrão de Guam + + + + + Horário do Golfo + + + + + Horário da Guiana + + + + + Horário do Havaí e Ilhas Aleutas + Horário Padrão do Havaí e Ilhas Aleutas + Horário de Verão do Havaí e Ilhas Aleutas + + + + + Horário de Hong Kong + Horário Padrão de Hong Kong + Horário de Verão de Hong Kong + + + + + Horário de Hovd + Horário Padrão de Hovd + Horário de Verão de Hovd + + + + + Horário Padrão da Índia + + + + + Horário do Oceano Índico + + + + + Horário da Indochina + + + + + Horário da Indonésia Central + + + + + Horário da Indonésia Oriental + + + + + Horário da Indonésia Ocidental + + + + + Horário do Irã + Horário Padrão do Irã + Horário de Verão do Irã + + + + + Horário de Irkutsk + Horário Padrão de Irkutsk + Horário de Verão de Irkutsk + + + + + Horário de Israel + Horário Padrão de Israel + Horário de Verão de Israel + + + + + Horário do Japão + Horário Padrão do Japão + Horário de Verão do Japão + + + + + Horário de Petropavlovsk-Kamchatski + Horário Padrão de Petropavlovsk-Kamchatski + Horário de Verão de Petropavlovsk-Kamchatski + + + + + Horário do Casaquistão Oriental + + + + + Horário do Casaquistão Ocidental + + + + + Horário da Coreia + Horário Padrão da Coreia + Horário de Verão da Coreia + + + + + Horário de Kosrae + + + + + Horário de Krasnoyarsk + Horário Padrão de Krasnoyarsk + Horário de Verão de Krasnoyarsk + + + + + Horário do Quirguistão + + + + + Horário de Lanka + + + + + Horário das Ilhas Line + + + + + Horário de Lord Howe + Horário Padrão de Lord Howe + Horário de Verão de Lord Howe + + + + + Horário de Macau + Horário Padrão de Macau + Horário de Verão de Macau + + + + + Horário da Ilha Macquarie + + + + + Horário de Magadan + Horário Padrão de Magadan + Horário de Verão de Magadan + + + + + Horário da Malásia + + + + + Horário das Ilhas Maldivas + + + + + Horário das Marquesas + + + + + Horário das Ilhas Marshall + + + + + Horário das Ilhas Maurício + Horário Padrão das Ilhas Maurício + Horário de Verão das Ilhas Maurício + + + + + Horário de Mawson + + + + + Horário de Ulan Bator + Horário Padrão de Ulan Bator + Horário de Verão de Ulan Bator + + + + + Horário de Moscou + Horário Padrão de Moscou + Horário de Verão de Moscou + + + + + Horário de Mianmar + + + + + Horário de Nauru + + + + + Horário do Nepal + + + + + Horário da Nova Caledônia + Horário Padrão da Nova Caledônia + Horário de Verão da Nova Caledônia + + + + + Horário da Nova Zelândia + Horário Padrão da Nova Zelândia + Horário de Verão da Nova Zelândia + + + + + Horário de Terra Nova + Horário Padrão de Terra Nova + Horário de Verão de Terra Nova + + + + + Horário de Niue + + + + + Horário da Ilha Norfolk + + + + + Horário de Fernando de Noronha + Horário Padrão de Fernando de Noronha + Horário de Verão de Fernando de Noronha + + + + + Horário das Ilhas Mariana do Norte + + + + + Horário de Novosibirsk + Horário Padrão de Novosibirsk + Horário de Verão de Novosibirsk + + + + + Horário de Omsk + Horário Padrão de Omsk + Horário de Verão de Omsk + + + + + Horário do Paquistão + Horário Padrão do Paquistão + Horário de Verão do Paquistão + + + + + Horário de Palau + + + + + Horário de Papua Nova Guiné + + + + + Horário do Paraguai + Horário Padrão do Paraguai + Horário de Verão do Paraguai + + + + + Horário do Peru + Horário Padrão do Peru + Horário de Verão do Peru + + + + + Horário das Filipinas + Horário Padrão das Filipinas + Horário de Verão das Filipinas + + + + + Horário das Ilhas Fênix + + + + + Horário de Saint Pierre e Miquelon + Horário Padrão de Saint Pierre e Miquelon + Horário de Verão de Saint Pierre e Miquelon + + + + + Horário de Pitcairn + + + + + Horário de Ponape + + + + + Horário de Qyzylorda + Horário Padrão de Qyzylorda + Horário de Verão de Qyzylorda + + + + + Horário das Ilhas Reunião + + + + + Horário de Rothera + + + + + Horário de Sacalina + Horário Padrão de Sacalina + Horário de Verão de Sacalina + + + + + Horário de Samara + Horário Padrão de Samara + Horário de Verão de Samara + + + + + Horário de Samoa + Horário Padrão de Samoa + Horário de Verão de Samoa + + + + + Horário das Ilhas Seychelles + + + + + Horário Padrão de Cingapura + + + + + Horário das Ilhas Salomão + + + + + Horário da Geórgia do Sul + + + + + Horário do Suriname + + + + + Horário de Syowa + + + + + Horário do Taiti + + + + + Horário de Taipei + Horário Padrão de Taipei + Horário de Verão de Taipei + + + + + Horário do Tajiquistão + + + + + Horário de Tokelau + + + + + Horário de Tonga + Horário Padrão de Tonga + Horário de Verão de Tonga + + + + + Horário de Chuuk + + + + + Horário do Turcomenistão + Horário Padrão do Turcomenistão + Horário de Verão do Turcomenistão + + + + + Horário de Tuvalu + + + + + Horário do Uruguai + Horário Padrão do Uruguai + Horário de Verão do Uruguai + + + + + Horário do Uzbequistão + Horário Padrão do Uzbequistão + Horário de Verão do Uzbequistão + + + + + Horário de Vanuatu + Horário Padrão de Vanuatu + Horário de Verão de Vanuatu + + + + + Horário da Venezuela + + + + + Horário de Vladivostok + Horário Padrão de Vladivostok + Horário de Verão de Vladivostok + + + + + Horário de Volgogrado + Horário Padrão de Volgogrado + Horário de Verão de Volgogrado + + + + + Horário de Vostok + + + + + Horário das Ilhas Wake + + + + + Horário de Wallis e Futuna + + + + + Horário de Yakutsk + Horário Padrão de Yakutsk + Horário de Verão de Yakutsk + + + + + Horário de Ecaterimburgo + Horário Padrão de Ecaterimburgo + Horário de Verão de Ecaterimburgo + + + + + + latn + + latn + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 milhão + 0 milhões + 00 milhão + 00 milhões + 000 milhão + 000 milhões + 0 bilhão + 0 bilhões + 00 bilhão + 00 bilhões + 000 bilhão + 000 bilhões + 0 trilhão + 0 trilhões + 00 trilhão + 00 trilhões + 000 trilhão + 000 trilhões + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 mi + 0 mi + 00 mi + 00 mi + 000 mi + 000 mi + 0 bi + 0 bi + 00 bi + 00 bi + 000 bi + 000 bi + 0 tri + 0 tri + 00 tri + 00 tri + 000 tri + 000 tri + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + Peseta de Andorra + Peseta de Andorra + Pesetas de Andorra + + + Dirém dos Emirados Árabes Unidos + Dirrã dos Emirados Árabes Unidos + Dirrãs dos Emirados Árabes Unidos + + + Afegane (1927–2002) + Afegane do Afeganistão (AFA) + Afeganes do Afeganistão (AFA) + + + Afegane afegão + Afegane afegão + Afeganes afegãos + + + Lek Albanês (1946–1965) + Lek Albanês (1946–1965) + Leks Albaneses (1946–1965) + + + Lek Albanês + Lek albanês + Leks albaneses + + + Dram armênio + Dram armênio + Drams armênios + + + Florim das Antilhas Holandesas + Florim das Antilhas Holandesas + Florins das Antilhas Holandesas + + + Cuanza angolano + Kwanza angolano + Kwanzas angolanos + + + Cuanza angolano (1977–1990) + Kwanza angolano (AOK) + Kwanzas angolanos (AOK) + + + Novo cuanza angolano (1990–2000) + Novo kwanza angolano (AON) + Novos kwanzas angolanos (AON) + + + Cuanza angolano reajustado (1995–1999) + Kwanza angolano reajustado (AOR) + Kwanzas angolanos reajustados (AOR) + + + Austral argentino + Austral argentino + Austrais argentinos + + + Peso lei argentino (1970–1983) + Peso lei argentino (1970–1983) + Pesos lei argentinos (1970–1983) + + + Peso argentino (1881–1970) + Peso argentino (1881–1970) + Pesos argentinos (1881–1970) + + + Peso argentino (1983–1985) + Peso argentino (1983–1985) + Pesos argentinos (1983–1985) + + + Peso argentino + Peso argentino + Pesos argentinos + + + Xelim austríaco + Schilling australiano + Schillings australianos + + + Dólar australiano + Dólar australiano + Dólares australianos + AU$ + + + Florim arubano + Florim arubano + Florins arubanos + + + Manat azerbaijano (1993–2006) + Manat do Azeibaijão (1993–2006) + Manats do Azeibaijão (1993–2006) + + + Manat azeri + Manat azeri + Manats azeris + + + Dinar da Bósnia-Herzegovina (1992–1994) + Dinar da Bósnia Herzegovina + Dinares da Bósnia Herzegovina + + + Marco bósnio-herzegovino conversível + Marca conversível da Bósnia Herzegovina + Marcas conversíveis da Bósnia Herzegovina + + + Novo dinar da Bósnia-Herzegovina (1994–1997) + Novo dinar da Bósnia-Herzegovina + Novos dinares da Bósnia-Herzegovina + + + Dólar barbadense + Dólar barbadense + Dólares barbadenses + + + Taka bengalesa + Taka bengalesa + Takas bengalesas + + + Franco belga (conversível) + Franco belga (conversível) + Francos belgas (conversíveis) + + + Franco belga + Franco belga + Francos belgas + + + Franco belga (financeiro) + Franco belga (financeiro) + Francos belgas (financeiros) + + + Lev forte búlgaro + Lev forte búlgaro + Levs fortes búlgaros + + + Lev socialista búlgaro + Lev socialista búlgaro + Levs socialistas búlgaros + + + Lev búlgaro + Lev búlgaro + Levs búlgaros + + + Lev búlgaro (1879–1952) + Lev búlgaro (1879–1952) + Levs búlgaros (1879–1952) + + + Dinar bareinita + Dinar bareinita + Dinares bareinitas + + + Franco burundiano + Franco burundiano + Francos burundianos + + + Dólar das Bermudas + Dólar bermudense + Dólares bermudenses + + + Dólar do Brunei + Dólar bruneano + Dólares bruneanos + + + Boliviano + Boliviano + Bolivianos + + + Boliviano (1863–1963) + Boliviano (1863–1963) + Bolivianos (1863–1963) + + + Peso boliviano + Peso boliviano + Pesos bolivianos + + + Mvdol boliviano + Mvdol boliviano + Mvdols bolivianos + + + Cruzeiro novo brasileiro (1967–1986) + Cruzeiro novo brasileiro (BRB) + Cruzeiros novos brasileiros (BRB) + + + Cruzado brasileiro (1986–1989) + Cruzado brasileiro + Cruzados brasileiros + + + Cruzeiro brasileiro (1990–1993) + Cruzeiro brasileiro (BRE) + Cruzeiros brasileiros (BRE) + + + Real brasileiro + Real brasileiro + Reais brasileiros + R$ + + + Cruzado novo brasileiro (1989–1990) + Cruzado novo brasileiro + Cruzados novos brasileiros + + + Cruzeiro brasileiro (1993–1994) + Cruzeiro brasileiro + Cruzeiros brasileiros + + + Cruzeiro brasileiro (1942–1967) + Cruzeiro brasileiro antigo + Cruzeiros brasileiros antigos + + + Dólar bahamense + Dólar bahamense + Dólares bahamenses + + + Ngultrum butanês + Ngultrum butanês + Ngultruns butaneses + + + Kyat birmanês + Kyat burmês + Kyats burmeses + + + Pula botsuanesa + Pula de Botsuana + Pulas de Botsuana + + + Rublo novo bielo-russo (1994–1999) + Novo rublo bielorusso (BYB) + Novos rublos bielorussos (BYB) + + + Rublo bielorrusso + Rublo bielorrusso + Rublos bielorrussos + + + Dólar do Belize + Dólar belizenho + Dólares belizenhos + + + Dólar canadense + Dólar canadense + Dólares canadenses + CA$ + + + Franco congolês + Franco congolês + Francos congoleses + + + Euro WIR + Euro WIR + Euros WIR + + + Franco suíço + Franco suíço + Francos suíços + + + Franco WIR + Franco WIR + Francos WIR + + + Escudo chileno + Escudo chileno + Escudos chilenos + + + Unidades de Fomento chilenas + Unidade de fomento chilena + Unidades de fomento chilenas + + + Peso chileno + Peso chileno + Pesos chilenos + + + Dólar do Banco Popular da China + Dólar do Banco Popular da China + Dólares do Banco Popular da China + + + Yuan chinês + Yuan chinês + Yuans chineses + CN¥ + + + Peso colombiano + Peso colombiano + Pesos colombianos + + + Unidade de Valor Real + Unidade de valor real + Unidades de valor real + + + Colón costarriquenho + Colón costarriquenho + Colóns costarriquenhos + + + Dinar sérvio (2002–2006) + Dinar antigo da Sérvia + Dinares antigos da Sérvia + + + Coroa Forte checoslovaca + Coroa forte tchecoslovaca + Coroas fortes tchecoslovacas + + + Peso cubano conversível + Peso cubano conversível + Pesos cubanos conversíveis + + + Peso cubano + Peso cubano + Pesos cubanos + + + Escudo cabo-verdiano + Escudo cabo-verdiano + Escudos cabo-verdianos + + + Libra cipriota + Libra cipriota + Libras cipriotas + + + Coroa checa + Coroa da República Tcheca + Coroas da República Tcheca + + + Ostmark da Alemanha Oriental + Marco da Alemanha Oriental + Marcos da Alemanha Oriental + + + Marco alemão + Marco alemão + Marcos alemães + + + Franco djibutiense + Franco djibutiense + Francos djibutienses + + + Coroa dinamarquesa + Coroa dinamarquesa + Coroas dinamarquesas + + + Peso dominicano + Peso dominicano + Pesos dominicanos + + + Dinar argelino + Dinar argelino + Dinares argelinos + + + Sucre equatoriano + Sucre equatoriano + Sucres equatorianos + + + Unidade de Valor Constante (UVC) do Equador + Unidade de valor constante equatoriana (UVC) + Unidades de valor constante equatorianas (UVC) + + + Coroa estoniana + Coroa estoniana + Coroas estonianas + + + Libra egípcia + Libra egípcia + Libras egípcias + + + Nakfa da Eritreia + Nakfa da Eritreia + Nakfas da Eritreia + + + Peseta espanhola (conta A) + Peseta espanhola (conta A) + Pesetas espanholas (conta A) + + + Peseta espanhola (conta conversível) + Peseta espanhola (conta conversível) + Pesetas espanholas (conta conversível) + + + Peseta espanhola + Peseta espanhola + Pesetas espanholas + + + Birr etíope + Birr etíope + Birrs etíopes + + + Euro + Euro + Euros + + + + Marca finlandesa + Marco finlandês + Marcos finlandeses + + + Dólar fijiano + Dólar fijiano + Dólares fijianos + + + Libra malvinense + Libra malvinense + Libras malvinenses + + + Franco francês + Franco francês + Francos franceses + + + Libra esterlina britânica + Libra esterlina britânica + Libras esterlinas britânicas + £ + + + Cupom Lari georgiano + Kupon larit da Geórgia + Kupon larits da Geórgia + + + Lari georgiano + Lari da Geórgia + Laris da Geórgia + + + Cedi de Gana (1979–2007) + Cedi de Gana (1979–2007) + Cedis de Gana (1979–2007) + + + Cedi ganês + Cedi ganês + Cedis ganeses + + + Libra de Gibraltar + Libra de Gibraltar + Libras de Gibraltar + + + Dalasi gambiano + Dalasi gambiano + Dalasis gambianos + + + Franco guineano + Franco guineano + Francos guineanos + + + Syli da Guiné + Syli guineano + Sylis guineanos + + + Ekwele da Guiné Equatorial + Ekwele da Guiné Equatorial + Ekweles da Guiné Equatorial + + + Dracma grego + Dracma grego + Dracmas gregos + + + Quetzal guatemalense + Quetzal guatemalense + Quetzais guatemalenses + + + Escudo da Guiné Portuguesa + Escudo da Guiné Portuguesa + Escudos da Guinéa Portuguesa + + + Peso da Guiné-Bissau + Peso de Guiné-Bissau + Pesos de Guiné-Bissau + + + Dólar guianense + Dólar guianense + Dólares guianenses + + + Dólar de Hong Kong + Dólar de Hong Kong + Dólares de Hong Kong + HK$ + + + Lempira hondurenha + Lempira hondurenha + Lempiras hondurenhas + + + Dinar croata + Dinar croata + Dinares croatas + + + Kuna croata + Kuna croata + Kunas croatas + + + Gourde haitiano + Gourde haitiano + Gourdes haitianos + + + Forinte húngaro + Forint húngaro + Forints húngaros + + + Rupia indonésia + Rupia indonésia + Rupias indonésias + + + Libra irlandesa + Libra irlandesa + Libras irlandesas + + + Libra israelita + Libra israelita + Libras israelitas + + + Sheqel antigo israelita + Sheqel antigo israelita + Sheqels antigos israelitas + + + Sheqel Novo israelita + Sheqel novo israelita + Sheqels novo israelitas + + + + Rupia indiana + Rupia indiana + Rupias indianas + + + + Dinar iraquiano + Dinar iraquiano + Dinares iraquianos + + + Rial iraniano + Rial iraniano + Riales iranianos + + + Coroa antiga islandesa + Coroa antiga islandesa + Coroas antigas islandesas + + + Coroa islandesa + Coroa islandesa + Coroas islandesas + + + Lira italiana + Lira italiana + Liras italianas + + + Dólar jamaicano + Dólar jamaicano + Dólares jamaicanos + + + Dinar jordaniano + Dinar jordaniano + Dinares jordanianos + + + Iene japonês + Iene japonês + Ienes japoneses + JP¥ + + + Xelim queniano + Shilling queniano + Shillings quenianos + + + Som quirguiz + Som quirguiz + Sons quirguizes + + + Riel cambojano + Riel cambojano + Rieles cambojanos + + + Franco comorense + Franco comorense + Francos comorenses + + + Won norte-coreano + Won norte-coreano + Wons norte-coreanos + + + Hwan da Coreia do Sul (1953–1962) + Hwan da Coreia do Sul + Hwans da Coreia do Sul + + + Won da Coreia do Sul (1945–1953) + Won antigo da Coreia do Sul + Wons antigos da Coreia do Sul + + + Won sul-coreano + Won sul-coreano + Wons sul-coreanos + + + + Dinar coveitiano + Dinar kuwaitiano + Dinares kuwaitianos + + + Dólar das Ilhas Caiman + Dólar das Ilhas Cayman + Dólares das Ilhas Caiman + + + Tenge cazaque + Tenge cazaque + Tenges cazaques + + + Kip de Laos + Kip do Laos + Kips do Laos + + + Libra libanesa + Libra libanesa + Libras libanesas + + + Rupia ceilandesa + Rupia ceilandesa + Rupias ceilandesas + + + Dólar liberiano + Dólar liberiano + Dólares liberianos + + + Loti do Lesoto + Loti do Lesoto + Lotis do Lesoto + + + Litas lituano + Litas lituano + Litai lituanos + + + Talonas lituano + Talonas lituanas + Talonases lituanas + + + Franco conversível de Luxemburgo + Franco conversível de Luxemburgo + Francos conversíveis de Luxemburgo + + + Franco luxemburguês + Franco de Luxemburgo + Francos de Luxemburgo + + + Franco financeiro de Luxemburgo + Franco financeiro de Luxemburgo + Francos financeiros de Luxemburgo + + + Lats letão + Lats letão + Lati letões + + + Rublo letão + Rublo da Letônia + Rublos da Letônia + + + Dinar líbio + Dinar líbio + Dinares líbios + + + Dirrã marroquino + Dirrã marroquino + Dirrãs marroquinos + + + Franco marroquino + Franco marroquino + Francos marroquinos + + + Franco monegasco + Franco monegasco + Francos monegascos + + + Cupon moldávio + Cupon moldávio + Cupon moldávio + + + Leu moldávio + Leu moldávio + Leus moldávios + + + Ariary malgaxe + Ariary malgaxe + Ariarys malgaxes + + + Franco de Madagascar + Franco de Madagascar + Francos de Madagascar + + + Dinar macedônio + Dinar da Macedônia + Dinares da Macedônia + + + Dinar macedônio (1992–1993) + Dinar macedônio (1992–1993) + Dinares macedônios (1992–1993) + + + Franco de Mali + Franco de Mali + Francos de Mali + + + Kyat mianmarense + Kyat mianmarense + Kyats mianmarenses + + + Tugrik mongol + Tugrik da Mongólia + Tugriks da Mongólia + + + Pataca macaense + Pataca macaense + Patacas macaenses + + + Ouguiya mauritana + Ouguiya mauritana + Ouguiyas mauritanas + + + Lira maltesa + Lira Maltesa + Liras maltesas + + + Libra maltesa + Libra maltesa + Libras maltesas + + + Rupia mauriciana + Rupia mauriciana + Rupias mauricianas + + + Rupia maldiva + Rupia maldiva + Rupias maldivas + + + Kwacha malawiana + Kwacha malawiana + Kwachas malawianas + + + Peso mexicano + Peso mexicano + Pesos mexicanos + MX$ + + + Peso Prata mexicano (1861–1992) + Peso de prata mexicano (1861–1992) + Pesos de prata mexicanos (1861–1992) + + + Unidade Mexicana de Investimento (UDI) + Unidade de investimento mexicana (UDI) + Unidades de investimento mexicanas (UDI) + + + Ringgit malaio + Ringgit malaio + Ringgits malaios + + + Escudo de Moçambique + Escudo de Moçambique + Escudos de Moçambique + + + Metical de Moçambique (1980–2006) + Metical antigo de Moçambique + Meticales antigos de Moçambique + + + Metical moçambicano + Metical moçambicano + Meticales de Moçambique + + + Dólar namibiano + Dólar namibiano + Dólares namibianos + + + Naira nigeriana + Naira nigeriana + Nairas nigerianas + + + Córdoba nicaraguense (1988–1991) + Córdoba nicaraguense (1988–1991) + Córdobas nicaraguense (1988–1991) + + + Córdoba nicaraguense + Córdoba nicaraguense + Córdobas nicaraguenses + + + Florim holandês + Florim holandês + Florins holandeses + + + Coroa norueguesa + Coroa norueguesa + Coroas norueguesas + + + Rupia nepalesa + Rupia nepalesa + Rupias nepalesas + + + Dólar da Nova Zelândia + Dólar da Nova Zelândia + Dólares da Nova Zelândia + NZ$ + + + Rial omanense + Rial omanense + Riales de Omã + + + Balboa panamenha + Balboa panamenha + Balboas panamenhas + + + Inti peruano + Inti peruano + Intis peruanos + + + Novo sol peruano + Novo sol peruano + Novos sóis peruanos + + + Sol peruano (1863–1965) + Sol peruano + Soles peruanos + + + Kina papuásia + Kina papuásia + Kinas papuásias + + + Peso filipino + Peso filipino + Pesos filipinos + + + Rupia paquistanesa + Rupia paquistanesa + Rupias paquistanesas + + + Zloti polonês + Zloti polonês + Zlotis poloneses + + + Zloti polonês (1950–1995) + Zloti polonês (1950–1995) + Zlotis poloneses (1950–1995) + + + Escudo português + Escudo português + Escudos portugueses + Esc. + + + Guarani paraguaio + Guarani paraguaio + Guaranis paraguaios + + + Rial catariano + Rial do Qatar + Riales do Qatar + + + Dólar rodesiano + Dólar da Rodésia + Dólares da Rodésia + + + Leu romeno (1952–2006) + Leu antigo da Romênia + Leus antigos da Romênia + + + Leu romeno + Leu da Romênia + Leus da Romênia + + + Dinar sérvio + Dinar sérvio + Dinares sérvios + + + Rublo russo + Rublo russo + Rublos russos + + + Rublo russo (1991–1998) + Rublo russo (1991–1998) + Rublos russos (1991–1998) + + + Franco ruandês + Franco de Ruanda + Francos de Ruanda + + + Rial saudita + Riyal saudita + Riyales sauditas + + + Dólar das Ilhas Salomão + Dólar das Ilhas Salomão + Dólares das Ilhas Salomão + + + Rupia seichelense + Rupia seichelense + Rupias seichelenses + + + Dinar sudanês (1992–2007) + Dinar antigo do Sudão + Dinares antigos do Sudão + + + Libra sudanesa + Libra sudanesa + Libras sudanesas + + + Libra sudanesa (1957–1998) + Libra antiga sudanesa + Libras antigas sudanesas + + + Coroa sueca + Coroa sueca + Coroas suecas + + + Dólar de Cingapura + Dólar de Singapura + Dólares de Singapura + + + Libra de Santa Helena + Libra de Santa Helena + Libras de Santa Helena + + + Tolar Bons esloveno + Tolar da Eslovênia + Tolares da Eslovênia + + + Coroa eslovaca + Coroa eslovaca + Coroas eslovacas + + + Leone de Serra Leoa + Leone de Serra Leoa + Leones de Serra Leoa + + + Xelim somali + Shilling da Somália + Shillings da Somália + + + Dólar surinamês + Dólar surinamês + Dólares surinameses + + + Florim do Suriname + Florim do Suriname + Florins do Suriname + + + Libra sul-sudanesa + Libra sul-sudanesa + Libras sul-sudanesas + + + Dobra de São Tomé e Príncipe + Dobra de São Tomé e Príncipe + Dobras de São Tomé e Príncipe + + + Rublo soviético + Rublo soviético + Rublos soviéticos + + + Colom salvadorenho + Colon de El Salvador + Colons de El Salvador + + + Libra síria + Libra síria + Libras sírias + + + Lilangeni suazi + Lilangeni suazi + Lilangenis suazis + + + Baht tailandês + Baht da Tailândia + Bahts tailandeses + ฿ + + + Rublo do Tadjiquistão + Rublo do Tajaquistão + Rublos do Tajaquistão + + + Somoni tadjique + Somoni tadjique + Somonis tadjiques + + + Manat do Turcomenistão (1993–2009) + Manat do Turcomenistão (1993–2009) + Manats do Turcomenistão (1993–2009) + + + Manat do Turcomenistão + Manat do Turcomenistão + Manats do Turcomenistão + + + Dinar tunisiano + Dinar tunisiano + Dinares tunisianos + + + Paʻanga tonganesa + Paʻanga tonganesa + Paʻangas tonganesas + + + Escudo timorense + Escudo do Timor + Escudos do Timor + + + Lira turca (1922–2005) + Lira turca antiga + Liras turcas antigas + + + Lira turca + Lira turca + Liras turcas + + + Dólar de Trinidad e Tobago + Dólar de Trinidad e Tobago + Dólares de Trinidad e Tobago + + + Novo dólar taiwanês + Novo dólar taiwanês + Novos dólares taiwaneses + NT$ + + + Xelim da Tanzânia + Shilling da Tanzânia + Shillings da Tanzânia + + + Hryvnia ucraniano + Hryvnia da Ucrânia + Hryvnias da Ucrânia + + + Karbovanetz ucraniano + Karbovanetz da Ucrânia + Karbovanetzs da Ucrânia + + + Xelim ugandense (1966–1987) + Shilling de Uganda (1966–1987) + Shillings de Uganda (1966–1987) + + + Xelim ugandense + Shilling de Uganda + Shillings de Uganda + + + Dólar norte-americano + Dólar americano + Dólares americanos + US$ + + + Dólar norte-americano (Dia seguinte) + Dólar americano (dia seguinte) + Dólares americanos (dia seguinte) + + + Dólar norte-americano (Mesmo dia) + Dólar americano (mesmo dia) + Dólares americanos (mesmo dia) + + + Peso uruguaio en unidades indexadas + Peso uruguaio em unidades indexadas + Pesos uruguaios em unidades indexadas + + + Peso uruguaio (1975–1993) + Peso uruguaio (1975–1993) + Pesos uruguaios (1975–1993) + + + Peso uruguaio + Peso uruguaio + Pesos uruguaios + + + Som uzbeque + Som uzbeque + Sons uzbeques + + + Bolívar venezuelano (1871–2008) + Bolívar venezuelano (1871–2008) + Bolívares venezuelanos (1871–2008) + + + Bolívar venezuelano + Bolívar venezuelano + Bolívares venezuelanos + + + Dong vietnamita + Dong vietnamita + Dongs vietnamitas + + + + Dong vietnamita (1978–1985) + Dong vietnamita (1978–1985) + Dong vietnamita (1978–1985) + + + Vatu de Vanuatu + Vatu de Vanuatu + Vatus de Vanuatu + + + Tala samoano + Tala samoano + Talas samoanos + + + Franco CFA BEAC + Franco CFA de BEAC + Francos CFA de BEAC + FCFA + + + Prata + Prata + Pratas + + + Ouro + Ouro + Ouros + + + Unidade Composta Europeia + Unidade de composição europeia + Unidades de composição europeias + + + Unidade Monetária Europeia + Unidade monetária europeia + Unidades monetárias europeias + + + Unidade de Conta Europeia (XBC) + Unidade europeia de conta (XBC) + Unidades europeias de conta (XBC) + + + Unidade de Conta Europeia (XBD) + Unidade europeia de conta (XBD) + Unidades europeias de conta (XBD) + + + Dólar do Caribe Oriental + Dólar do Caribe Oriental + Dólares do Caribe Oriental + EC$ + + + Direitos Especiais de Giro + Direitos de desenho especiais + Direitos de desenho especiais + + + Unidade de Moeda Europeia + Unidade de moeda europeia + Unidades de moedas europeias + + + Franco-ouro francês + Franco de ouro francês + Francos de ouro franceses + + + Franco UIC francês + Franco UIC francês + Francos UIC franceses + + + Franco CFA BCEAO + Franco CFA de BCEAO + Francos CFA de BCEAO + CFA + + + Paládio + Paládio + Paládios + + + Franco CFP + Franco CFP + Francos CFP + CFPF + + + Platina + Platina + Platinas + + + Fundos RINET + Fundos RINET + Fundos RINET + + + Código de Moeda de Teste + Código de moeda de teste + Códigos de moeda de teste + + + Moeda desconhecida + (moeda desconhecida) + (moedas desconhecidas) + + + Dinar iemenita + Dinar do Iêmen + Dinares do Iêmen + + + Rial iemenita + Rial do Iêmen + Riales do Iêmen + + + Dinar forte iugoslavo (1966–1990) + Dinar forte iugoslavo + Dinares fortes iugoslavos + + + Dinar noviy iugoslavo (1994–2002) + Dinar noviy da Iugoslávia + Dinares noviy da Iugoslávia + + + Dinar conversível iugoslavo (1990–1992) + Dinar conversível da Iugoslávia + Dinares conversíveis da Iugoslávia + + + Dinar reformado iugoslavo (1992–1993) + Dinar iugoslavo reformado + Dinares iugoslavos reformados + + + Rand sul-africano (financeiro) + Rand da África do Sul (financeiro) + Rands da África do Sul (financeiro) + + + Rand sul-africano + Rand sul-africano + Rands sul-africanos + + + Cuacha zambiano (1968–2012) + Kwacha da Zâmbia (1968–2012) + Kwachas da Zâmbia (1968–2012) + + + Cuacha zambiano + Kwacha da Zâmbia + Kwachas da Zâmbia + + + Zaire Novo zairense (1993–1998) + Novo zaire do Zaire + Novos zaires do Zaire + + + Zaire zairense (1971–1993) + Zaire do Zaire + Zaires do Zaire + + + Dólar do Zimbábue (1980–2008) + Dólar do Zimbábue + Dólares do Zimbábue + + + Dólar do Zimbábue (2009) + Dólar do Zimbábue (2009) + Dólares do Zimbábue (2009) + + + Dólar do Zimbábue (2008) + Dólar do Zimbábue (2008) + Dólares do Zimbábue (2008) + + + + +{0} + {0}–{1} + + + + + + {0} por {1} + + + {0} força G + {0} de força gravitacional + + + {0} minuto + {0} minutos + + + {0} segundo + {0} segundos + + + {0} grau + {0} graus + + + {0} acre + {0} acres + + + {0} hectare + {0} hectares + + + {0} pé quadrado + {0} pés quadrados + + + {0} quilômetro quadrado + {0} quilômetros quadrados + + + {0} metro quadrado + {0} metros quadrados + + + {0} milha quadrada + {0} milhas quadradas + + + {0} dia + {0} dias + + + {0} hora + {0} horas + + + {0} milissegundo + {0} milissegundos + + + {0} minuto + {0} minutos + + + {0} mês + {0} meses + + + {0} segundo + {0} segundos + + + {0} semana + {0} semanas + + + {0} ano + {0} anos + + + {0} centímetro + {0} centímetros + + + {0} pé + {0} pés + + + {0} polegada + {0} polegadas + + + {0} quilômetro + {0} quilômetros + + + {0} ano-luz + {0} anos-luz + + + {0} metro + {0} metros + + + {0} milha + {0} milhas + + + {0} milímetro + {0} milímetros + + + {0} picômetro + {0} picômetros + + + {0} jarda + {0} jardas + + + {0} grama + {0} gramas + + + {0} quilograma + {0} quilogramas + + + {0} onça + {0} onças + + + {0} libra + {0} libras + + + {0} cavalo-vapor + {0} cavalos-vapor + + + {0} quilowatt + {0} quilowatts + + + {0} watt + {0} watts + + + {0} hectopascal + {0} hectopascals + + + {0} polegada de mercúrio + {0} polegadas de mercúrio + + + {0} milibar + {0} milibares + + + {0} quilômetro por hora + {0} quilômetros por hora + + + {0} metro por segundo + {0} metros por segundo + + + {0} milha por hora + {0} milhas por hora + + + {0} grau Celsius + {0} graus Celsius + + + {0} grau Fahrenheit + {0} graus Fahrenheit + + + {0} quilômetro cúbico + {0} quilômetros cúbicos + + + {0} milha cúbica + {0} milhas cúbicas + + + {0} litro + {0} litros + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dia + {0} dias + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mês + {0} meses + + + {0} seg + {0} seg + + + {0} sem. + {0} sem. + + + {0} ano + {0} anos + + + {0} cm + {0} cm + + + {0} pé + {0} pés + + + {0} pol. + {0} pol. + + + {0} km + {0} km + + + {0} ano-luz + {0} anos-luz + + + {0} m + {0} m + + + {0} milha + {0} milhas + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} cv + {0} cv + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}' + {0}' + + + {0}" + {0}" + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dia + {0} dias + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mês + {0} meses + + + {0} s + {0} s + + + {0} sem. + {0} sem. + + + {0} ano + {0} anos + + + {0} cm + {0} cm + + + {0} pé + {0} pés + + + {0}″ + {0}″ + + + {0} km + {0} km + + + {0} ano-luz + {0} anos-luz + + + {0} m + {0} m + + + {0} milha + {0} milhas + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} cv + {0} cv + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0}" Hg + {0}" Hg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} ° + {0} ° + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + + + sim:s + não:n + + + + diff --git a/library/Zend/Locale/Data/pt_AO.xml b/library/Zend/Locale/Data/pt_AO.xml new file mode 100755 index 000000000..b39de866c --- /dev/null +++ b/library/Zend/Locale/Data/pt_AO.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + Kz + + + + diff --git a/library/Zend/Locale/Data/pt_BR.xml b/library/Zend/Locale/Data/pt_BR.xml new file mode 100755 index 000000000..f66b15616 --- /dev/null +++ b/library/Zend/Locale/Data/pt_BR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/pt_CV.xml b/library/Zend/Locale/Data/pt_CV.xml new file mode 100755 index 000000000..da1234482 --- /dev/null +++ b/library/Zend/Locale/Data/pt_CV.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + $ + + + , +   + + + + diff --git a/library/Zend/Locale/Data/pt_GW.xml b/library/Zend/Locale/Data/pt_GW.xml new file mode 100755 index 000000000..907b4c128 --- /dev/null +++ b/library/Zend/Locale/Data/pt_GW.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + diff --git a/library/Zend/Locale/Data/pt_MO.xml b/library/Zend/Locale/Data/pt_MO.xml new file mode 100755 index 000000000..b6481d81d --- /dev/null +++ b/library/Zend/Locale/Data/pt_MO.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + MOP$ + + + + diff --git a/library/Zend/Locale/Data/pt_MZ.xml b/library/Zend/Locale/Data/pt_MZ.xml new file mode 100755 index 000000000..f760ee89e --- /dev/null +++ b/library/Zend/Locale/Data/pt_MZ.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + MTn + + + + diff --git a/library/Zend/Locale/Data/pt_PT.xml b/library/Zend/Locale/Data/pt_PT.xml new file mode 100755 index 000000000..7ab87d463 --- /dev/null +++ b/library/Zend/Locale/Data/pt_PT.xml @@ -0,0 +1,5553 @@ + + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abcázio + adigue + avéstico + afrikaans + aghem + altai do sul + amárico + angika + árabe + assamês + asu + avaric + azerbaijano + azeri + bashkir + balúchi + bamun + ghomala + bielo-russo + beja + bena + bafut + búlgaro + bhojpuri + kom + bengali + tibetano + braj + bodo + bósnio + akoose + buriat + buginese + bulu + medumba + catalão + cayuga + chechene + chiga + mari + jargão chinook + sorani curdo + corso + copta + turco da Crimeia + checo + chuvash + galês + dinamarquês + dargwa + taita + alemão + alemão austríaco + alto alemão suíço + zarma + dogri + jola-fonyi + diula + dazaga + ewe + egípcio clássico + grego + inglês + inglês australiano + inglês canadiano + inglês britânico + inglês (RU) + inglês americano + inglês (EUA) + inglês medieval + esperanto + espanhol + espanhol latino-americano + espanhol europeu + espanhol do México + estónio + basco + persa + finlandês + filipino + fijiano + feroês + francês + francês canadiano + francês suíço + francês medieval + frísio oriental + frísico ocidental + irlandês + gbaia + galego + alemão medieval alto + guarani + gondi + grego clássico + alemão suíço + guzerate + gusii + haúça + havaiano + hebraico + hindi + croata + sorbiano superior + haitiano + húngaro + arménio + ibibio + indonésio + igbo + inupiaq + inguche + islandês + italiano + japonês + nguemba + machame + javanês + georgiano + kara-kalpak + kabardiano + kanembu + makonde + cabo-verdiano + conguês + koyra chiini + cazaque + kako + kalenjin + cmer + canarim + coreano + concani + karachay-balkar + idioma carélio + kurukh + caxemirense + shambala + bafia + curdo + kumyk + komi + quirguiz + latim + langi + lahnda + luxemburguês + lezghiano + ganda + laosiano + lozi + lituano + luba-lulua + lushai + luyia + letão + mafa + magahi + maithili + maba + mocsa + meru + crioulo das Ilhas Maurícias + malgaxe + irlandês, medieval + makhuwa-meetto + meta' + maori + macedónio + malaiala + mongol + manipuri + marata + malaio + maltês + mundang + marwari + birmanês + myene + erzya + nama + norueguês bokmål + baixo alemão + nepali + newari + holandês + flamengo + kwasio + norueguês nynorsk + ngiemboon + nogai + norse, old + nuer + provençal + oriya + ossético + panjabi + páli + polaco + provençal, arcaico + pastó + português + português do Brasil + português europeu + quíchua + romanche + romeno + romanês + root + russo + sânscrito + sakha + samburu + ngambay + sangu + sindi + seneca + sena + selkup + koyraboro senni + tachelhit + árabe do Chade + cingalês + eslovaco + esloveno + somali + albanês + sérvio + saho + sundanês + sueco + suaili + língua comoriana + suaili do Congo + tâmil + telugu + teso + tajique + tailandês + tigre + turcomano + tagalogue + tonga + toganês + turco + taroko + tatar + tasawaq + tuviniano + tamazight de Marrocos Central + udmurt + uighur + uigur + ucraniano + idioma desconhecido + urdu + usbeque + vietnamita + vunjo + uólofe + kalmyk + xosa + soga + yangben + yemba + ioruba + símbolos blis + tamaxeque padrão de Marrocos + chinês + chinês simplificado + chinês tradicional + zulu + sem conteúdo linguístico + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mundo + África + América do Norte + América do Sul + Oceânia + África Ocidental + América Central + África Oriental + Norte de África + África Central + África Austral + Américas + América Setentrional + Caraíbas + Ásia Oriental + Ásia do Sul + Sudeste Asiático + Europa do Sul + Australásia + Melanésia + Região da Micronésia + Polinésia + Ásia + Ásia Central + Ásia Ocidental + Europa + Europa Oriental + Europa do Norte + Europa Ocidental + América Latina + Ilha de Ascensão + Andorra + Emirados Árabes Unidos + Afeganistão + Antígua e Barbuda + Anguila + Albânia + Arménia + Angola + Antártida + Argentina + Samoa Americana + Áustria + Austrália + Aruba + Ilhas Åland + Azerbaijão + Bósnia e Herzegovina + Barbados + Bangladesh + Bélgica + Burquina Faso + Bulgária + Barém + Burundi + Benim + São Bartolomeu + Bermudas + Brunei + Bolívia + Países Baixos Caribenhos + Brasil + Bahamas + Butão + Ilha Bouvet + Botswana + Bielorrússia + Belize + Canadá + Ilhas Cocos + Congo-Kinshasa + República Democrática do Congo + República Centro-Africana + Congo-Brazzaville + República do Congo + Suíça + Costa do Marfim + Ilhas Cook + Chile + Camarões + China + Colômbia + Ilha de Clipperton + Costa Rica + Cuba + Cabo Verde + Curaçau + Ilha do Natal + Chipre + República Checa + Alemanha + Diego Garcia + Jibuti + Dinamarca + Domínica + República Dominicana + Argélia + Ceuta e Melilha + Equador + Estónia + Egipto + Saara Ocidental + Eritreia + Espanha + Etiópia + União Europeia + Finlândia + Fiji + Ilhas Falkland + Ilhas Malvinas + Micronésia + Ilhas Faroé + França + Gabão + Reino Unido + RU + Granada + Geórgia + Guiana Francesa + Guernsey + Gana + Gibraltar + Gronelândia + Gâmbia + Guiné + Guadalupe + Guiné Equatorial + Grécia + Ilhas Geórgia do Sul e Sandwich do Sul + Guatemala + Guame + Guiné-Bissau + Guiana + Hong Kong, RAE da China + Hong Kong + Ilhas Heard e McDonald + Honduras + Croácia + Haiti + Hungria + Ilhas Canárias + Indonésia + Irlanda + Israel + Ilha de Man + Índia + Território Britânico do Oceano Índico + Iraque + Irão + Islândia + Itália + Jersey + Jamaica + Jordânia + Japão + Quénia + Quirguizistão + Camboja + Quiribati + Comoros + São Cristóvão e Nevis + Coreia do Norte + Coreia do Sul + Kuwait + Ilhas Caimão + Cazaquistão + Laos + Líbano + Santa Lúcia + Liechtenstein + Sri Lanca + Libéria + Lesoto + Lituânia + Luxemburgo + Letónia + Líbia + Marrocos + Mónaco + Moldávia + Montenegro + São Martinho + Madagáscar + Ilhas Marshall + Macedónia + Antiga República Jugoslava da Macedónia + Mali + Mianmar (Birmânia) + Mongólia + Macau, RAE da China + Macau + Ilhas Marianas do Norte + Martinica + Mauritânia + Monserrate + Malta + Maurícia + Maldivas + Malawi + México + Malásia + Moçambique + Namíbia + Nova Caledónia + Níger + Ilha Norfolk + Nigéria + Nicarágua + Países Baixos + Noruega + Nepal + Nauru + Niue + Nova Zelândia + Omã + Panamá + Peru + Polinésia Francesa + Papua-Nova Guiné + Filipinas + Paquistão + Polónia + Saint Pierre e Miquelon + Pitcairn + Porto Rico + Território Palestiniano + Palestina + Portugal + Palau + Paraguai + Catar + Oceânia Insular + Reunião + Roménia + Sérvia + Rússia + Ruanda + Arábia Saudita + Ilhas Salomão + Seicheles + Sudão + Suécia + Singapura + Santa Helena + Eslovénia + Svalbard e Jan Mayen + Eslováquia + Serra Leoa + São Marino + Senegal + Somália + Suriname + Sudão do Sul + São Tomé e Príncipe + El Salvador + Sint Maarten + Síria + Suazilândia + Tristão da Cunha + Ilhas Turcas e Caicos + Chade + Territórios Franceses do Sul + Togo + Tailândia + Tajiquistão + Toquelau + Timor-Leste + Turquemenistão + Tunísia + Tonga + Turquia + Trindade e Tobago + Tuvalu + Taiwan + Tanzânia + Ucrânia + Uganda + Ilhas Distantes dos EUA + Estados Unidos + EUA + Uruguai + Uzbequistão + Cidade do Vaticano + São Vicente e Granadinas + Venezuela + Ilhas Virgens Britânicas + Ilhas Virgens dos EUA + Vietname + Vanuatu + Wallis e Futuna + Samoa + Kosovo + Iémen + Maiote + África do Sul + Zâmbia + Zimbabué + Região desconhecida ou inválida + + + Ortografia alemã tradicional + Ortografia resiana padronizada + Ortografia alemã de 1996 + Francês antigo de 1606 + Francês da idade moderna + Académica + arménio oriental + arménio ocidental + Alfabeto latino turco unificado + dialecto san giorgio/bila + buntlingue + Fonética do Alfabeto Fonético Internacional + Fonética do Alfabeto Fonético Urálico + Ortografia Comum + dialecto lipovaz de Resian + monotónico + dialecto natisone + dialecto gniva/njiva + dialecto oseacco/osojane + Romanização pinyin + politónico + Computador + Ortografia Modificada + Resiano + Saho + inglês padrão escocês + Scouse + dialecto stolvizza/solbica + Ortografia taraskievica + Ortografia Unificada + Ortografia Modificada Unificada + Valenciano + Romanização Wade-Giles + + + Calendário + Ignorar Ordenação de Símbolos + Ordenação de Acentos Invertida + Disposição de Maiúsculas/Minúsculas + Ordenação Sensível a Maiúsculas e Minúsculas + Ordenação Kana + Ordenação + Ordenação Normalizada + Ordenação Numérica + Força da Ordenação + Moeda + Números + Fuso Horário + Variante Local + Ordenar Como Símbolos + Utilização Privada + + + Algarismos indo-arábicos + Algarismos indo-arábicos por extenso + Algarismos Arménios + Numeração Arménia Minúscula + Algarismos Bengalis + Calendário Chinês + Calendário Copta + Algarismos Devanágaris + Ordenação do Dicionário + Ordenação Unicode Predefinida + Numeração Etíope + Calendário Etíope + Calendário Etíope Amete Alem + Algarismos Financeiros + Algarismos de Largura Completa + Numeração Georgiana + Calendário Gregoriano + Numeração Grega + Numeração Grega Minúscula + Algarismos de Guzerate + Algarismos Gurmukhi + Numeração Decimal Chinesa + Numeração Chinês Simplificado + Numeração Financeira Chinês Simplificado + Numeração Chinês Tradicional + Numeração Financeira Chinês Tradicional + Numeração Hebraica + Ordenar Tudo + Calendário Islâmico/Civil + Numeração Japonesa + Numeração Financeira Japonesa + Algarismos Khmer + Algarismos de Canarim + Algarismos de Laos + Algarismos Ocidentais + Ordenar Minúsculas Primeiro + Algarismos Malaiala + Algarismos Mongóis + Algarismos de Mianmar + Dígitos Nativos + Ordenar Acentos Normalmente + Ordenar Disposição de Tipo de Letra Normal + Ordenar Insensível a Maiúsculas/Minúsculas + Ordenar Kana Separadamente + Ordenar Sem Normalização + Ordenar Dígitos Individualmente + Ordenar Símbolos + Algarismos Oriá + Calendário Persa + Ordem da Lista Telefónica + Sequência de Ordenação Fonética + Ordem do Chinês Simplificado Pinyin + Ordenar Apenas Letras Básicas + Ordenar Acentos/Tipo de Letra/Largura/Kana + Reforma da Ordenação + Numeração Romana + Numeração Romana Minúscula + Pesquisa de uso geral + Pesquisar Por Consoante Inicial Hangul + Ordenar Acentos + Ordenar Símbolos Ignorados + Ordenação Predefinida + Ordem por traços + Numeração Tâmil + Algarismos Tâmil + Algarismos de Telugu + Ordenar Acentos/Tipo de Letra/Largura + Algarismos Tailandeses + Algarismos Tibetanos + Ordem tradicional + Algarismos Tradicionais + Ordem por radical e traços + Ordenar Maiúsculas Primeiro + Dígitos Vai + Ordenar Acentos Inversamente + Ordenar Sensível a Maiúsculas/Minúsculas + Ordenar Kana Diferentemente + Ordenar Unicode Normalizado + Ordenar Dígitos Numericamente + + + Acentos + Largura Completa + Meia Largura + + + Métrico + Reino Unido + Estados Unidos + + + Idioma: {0} + Escrita: {0} + Região: {0} + + + + [\- ‐ – — , ; \: ! ? . … ' " “ ” « » ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0}… + … {0} + {0} … {1} + ? + + + « + » + + + + + + + + + + d/M/y G + + + + + + + + + M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 + M12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Mês 1 + Mês 2 + Mês 3 + Mês 4 + Mês 5 + Mês 6 + Mês 7 + Mês 8 + Mês 9 + Mês 10 + Mês 11 + Mês 12 + + + + + M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 + M12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Mês 1 + Mês 2 + Mês 3 + Mês 4 + Mês 5 + Mês 6 + Mês 7 + Mês 8 + Mês 9 + Mês 10 + Mês 11 + Mês 12 + + + + + + + EEEE, d 'de' MMMM 'de' U + + + + + d 'de' MMMM 'de' U + + + + + d 'de' MMM 'de' U + + + + + dd/MM/yy + + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + d 'de' MMM, y G + + + + + d/M/y G + + + + + + + {1} 'às' {0} + + + + + {1} 'às' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + y G + MMM 'de' y G + d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y G + L + d/M + E, dd/MM + LLL + d 'de' MMM + E, d 'de' MMM + d 'de' MMMM + E, d 'de' MMMM + y G + y G + MM/y GGGGG + dd/MM/y GGGGG + E, dd/MM/y GGGGG + MM/y G + d/MM/y G + E, d/MM/y G + EEEE, d/MM/y + MMMM 'de' y G + d 'de' MMMM 'de' y G + E, d 'de' MMMM 'de' y G + QQQQ 'de' y G + QQQQ 'de' y G + + + {0} - {1} + + d - d + + + h a - h a + h-h a + + + h:mm - h:mm a + + + M - M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM - d 'de' MMM + + + E, d 'de' MMM - E, d 'de' MMM + E, d 'de' MMM - E, d 'de' MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + E, dd/MM/y - E, dd/MM/y G + + + MMM-MMM 'de' y G + MMM 'de' y - MMM 'de' y G + + + d-d 'de' MMM 'de' y + d 'de' MMM - d 'de' MMM 'de' y G + d 'de' MMM 'de' y - d 'de' MMM 'de' y G + + + E, d 'de' MMM - E, d 'de' MMM 'de' y G + E, d 'de' MMM - E, d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y - E, d 'de' MMM 'de' y G + + + MMMM - MMMM 'de' y G + MMMM 'de' y - MMMM 'de' y G + + + + + + + + + Jan + Fev + Mar + Abr + Mai + Jun + Jul + Ago + Set + Out + Nov + Dez + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Janeiro + Fevereiro + Março + Abril + Maio + Junho + Julho + Agosto + Setembro + Outubro + Novembro + Dezembro + + + + + Jan + Fev + Mar + Abr + Mai + Jun + Jul + Ago + Set + Out + Nov + Dez + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Janeiro + Fevereiro + Março + Abril + Maio + Junho + Julho + Agosto + Setembro + Outubro + Novembro + Dezembro + + + + + + + dom + seg + ter + qua + qui + sex + sáb + + + D + S + T + Q + Q + S + S + + + do + sg + te + qu + qi + sx + sb + + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + + + + dom + seg + ter + qua + qui + sex + sáb + + + D + S + T + Q + Q + S + S + + + do + sg + te + qu + qi + sx + sb + + + domingo + segunda-feira + terça-feira + quarta-feira + quinta-feira + sexta-feira + sábado + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1.º trimestre + 2.º trimestre + 3.º trimestre + 4.º trimestre + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + 1.º trimestre + 2.º trimestre + 3.º trimestre + 4.º trimestre + + + + + + + a.m. + p.m. + + + a.m. + p.m. + + + da manhã + da tarde + + + + + a.m. + p.m. + + + a.m. + p.m. + + + + + + a.C. + a.E.C. + d.C. + E.C. + + + + + + EEEE, d 'de' MMMM 'de' y + + + + + d 'de' MMMM 'de' y + + + + + dd/MM/y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} 'às' {0} + + + + + {1} 'às' {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E, d + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y G + MMM 'de' y G + d 'de' MMM 'de' y G + E, d 'de' MMM 'de' y G + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, dd/MM + dd/MM + LLL + d/MM + E, d/MM + d 'de' MMMM + E, d 'de' MMMM + mm:ss + y + MM/y + dd/MM/y + E, dd/MM/y + MM/y + MM/y + d/MM/y + E, d/MM/y + EEEE, d/MM/y + MMMM 'de' y + d 'de' MMMM 'de' y + E, d 'de' MMMM 'de' y + QQQQ 'de' y + QQQQ 'de' y + + + {0} {1} + + + {0} - {1} + + d–d + + + h a - h a + h-h a + + + HH–HH + + + h:mm a - h:mm a + h:mm - h:mm a + h:mm - h:mm a + + + HH:mm - HH:mm + HH:mm - HH:mm + + + h:mm a – h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + HH:mm - HH:mm v + HH:mm - HH:mm v + + + h a - h a v + h - h a v + + + HH - HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + d-d 'de' MMM + d 'de' MMM - d 'de' MMM + + + E, d 'de' MMM - E, d 'de' MMM + E, d 'de' MMM - E, d 'de' MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM 'de' y + MMM 'de' y - MMM 'de' y + + + d-d 'de' MMM 'de' y + d 'de' MMM - d 'de' MMM 'de' y + d 'de' MMM 'de' y - d 'de' MMM 'de' y + + + E, d 'de' MMM - E, d 'de' MMM 'de' y + E, d 'de' MMM - E, d 'de' MMM 'de' y + E, d 'de' MMM 'de' y - E, d 'de' MMM 'de' y + + + MMMM - MMMM 'de' y + MMMM 'de' y - MMMM 'de' y + + + + + + + + + d/M/y G + + + + + + + + + d/M/y G + + + + + + + + + d/M/y G + + + + + + + + + d/M/y G + + + + + + + + Era + + + Ano + ano passado + este ano + próximo ano + + Dentro de {0} ano + Dentro de {0} anos + + + Há {0} ano + Há {0} anos + + + + Mês + mês passado + este mês + próximo mês + + Dentro de {0} mês + Dentro de {0} meses + + + Há {0} mês + Há {0} meses + + + + Semana + semana passada + esta semana + próxima semana + + Dentro de {0} semana + Dentro de {0} semanas + + + Há {0} semana + Há {0} semanas + + + + Dia + anteontem + ontem + hoje + amanhã + depois de amanhã + + Dentro de {0} dia + Dentro de {0} dias + + + Há {0} dia + Há {0} dias + + + + Dia da semana + + + domingo passado + este domingo + próximo domingo + + + segunda-feira passada + esta segunda-feira + próxima segunda-feira + + + terça-feira passada + esta terça-feira + próxima terça-feira + + + quarta-feira passada + esta quarta-feira + próxima quarta-feira + + + quinta-feira passada + esta quinta-feira + próxima quinta-feira + + + sexta-feira passada + esta sexta-feira + próxima sexta-feira + + + sábado passado + este sábado + próximo sábado + + + Da manhã/da tarde + + + Hora + + Dentro de {0} hora + Dentro de {0} horas + + + Há {0} hora + Há {0} horas + + + + Minuto + + Dentro de {0} minuto + Dentro de {0} minutos + + + Há {0} minuto + Há {0} minutos + + + + Segundo + + Dentro de {0} segundo + Dentro de {0} segundos + + + Há {0} segundo + Há {0} segundos + + + + Fuso horário + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Hora de {0} + Hora de Verão de {0} + Hora Padrão de {0} + {1} ({0}) + + Cidade desconhecida + + + Andorra + + + Dubai + + + Cabul + + + Antígua + + + Anguilla + + + Tirana + + + Erevan + + + Luanda + + + Rothera + + + Palmer + + + Showa + + + Mawson + + + Davis + + + Vostok + + + Casey + + + Dumont d’Urville + + + McMurdo + + + Rio Gallegos + + + Mendoza + + + San Juan + + + Ushuaia + + + La Rioja + + + San Luis + + + Catamarca + + + Salta + + + Jujuy + + + Tucumán + + + Córdoba + + + Buenos Aires + + + Pago Pago + + + Viena + + + Perth + + + Eucla + + + Darwin + + + Adelaide + + + Broken Hill + + + Currie + + + Melbourne + + + Hobart + + + Lindeman + + + Sydney + + + Brisbane + + + Macquarie + + + Ilha de Lord Howe + + + Aruba + + + Mariehamn + + + Baku + + + Sarajevo + + + Barbados + + + Daca + + + Bruxelas + + + Ouagadougou + + + Sófia + + + Barém + + + Bujumbura + + + Porto-Novo + + + São Bartolomeu + + + Bermudas + + + Brunei + + + La Paz + + + Kralendijk + + + Eirunepé + + + Rio Branco + + + Porto Velho + + + Boa Vista + + + Manaus + + + Cuiabá + + + Santarém + + + Campo Grande + + + Belém + + + Araguaina + + + São Paulo + + + Baía + + + Fortaleza + + + Maceió + + + Recife + + + Fernando de Noronha + + + Nassau + + + Timphu + + + Gaborone + + + Minsk + + + Belize + + + Dawson + + + Whitehorse + + + Inuvik + + + Vancouver + + + Dawson Creek + + + Creston + + + Yellowknife + + + Edmonton + + + Swift Current + + + Cambridge Bay + + + Regina + + + Winnipeg + + + Resolute + + + Rainy River + + + Rankin Inlet + + + Atikokan + + + Thunder Bay + + + Nipigon + + + Toronto + + + Iqaluit + + + Pangnirtung + + + Moncton + + + Halifax + + + Goose Bay + + + Glace Bay + + + Blanc-Sablon + + + St. John’s + + + Ilhas Coco + + + Kinshasa + + + Lubumbashi + + + Bangui + + + Brazzaville + + + Zurique + + + Abidjan + + + Rarotonga + + + Ilha de Páscoa + + + Santiago + + + Douala + + + Kashgar + + + Urumqi + + + Chongqing + + + Xangai + + + Harbin + + + Bogotá + + + Costa Rica + + + Havana + + + Cabo Verde + + + Curaçao + + + Ilha do Natal + + + Nicósia + + + Praga + + + Busingen + + + Berlim + + + Jibuti + + + Copenhaga + + + Domínica + + + Santo Domingo + + + Argel + + + Galápagos + + + Guaiaquil + + + Tallinn + + + Cairo + + + El Aaiún + + + Asmara + + + Canárias + + + Ceuta + + + Madrid + + + Adis-Abeba + + + Helsínquia + + + Fiji + + + Stanley + + + Chuuk + + + Pohnpei + + + Kosrae + + + Faroé + + + Paris + + + Libreville + + + + Hora de Verão Britânico + + Londres + + + Granada + + + Tbilisi + + + Caiena + + + Guernsey + + + Acra + + + Gibraltar + + + Thule + + + Nuuk + + + Ittoqqortoormiit + + + Danmarkshavn + + + Banjul + + + Conacri + + + Guadalupe + + + Malabo + + + Atenas + + + Geórgia do Sul + + + Guatemala + + + Guam + + + Bissau + + + Guiana + + + Hong Kong + + + Tegucigalpa + + + Zagreb + + + Port-au-Prince + + + Budapeste + + + Jacarta + + + Pontianak + + + Macassar + + + Jayapura + + + + Hora de Verão da Irlanda + + Dublin + + + Jerusalém + + + Ilha de Man + + + Calcutá + + + Chagos + + + Bagdade + + + Teerão + + + Reiquiavique + + + Roma + + + Jersey + + + Jamaica + + + Amã + + + Tóquio + + + Nairobi + + + Bishkek + + + Phnom Penh + + + Enderbury + + + Kiritimati + + + Tarawa + + + Comores + + + São Cristóvão + + + Pyongyang + + + Seul + + + Kuwait + + + Caimão + + + Aqtau + + + Oral + + + Aqtobe + + + Qyzylorda + + + Almaty + + + Vientiane + + + Beirute + + + Santa Lúcia + + + Vaduz + + + Colombo + + + Monróvia + + + Maseru + + + Vilnius + + + Luxemburgo + + + Riga + + + Tripoli + + + Casablanca + + + Mónaco + + + Chisinau + + + Podgóritza + + + Marigot + + + Antananarivo + + + Kwajalein + + + Majuro + + + Skopje + + + Bamaco + + + Yangon + + + Hovd + + + Ulan Bator + + + Choibalsan + + + Macau + + + Saipan + + + Martinica + + + Nouakchott + + + Montserrat + + + Malta + + + Maurícia + + + Maldivas + + + Blantyre + + + Tijuana + + + Santa Isabel + + + Hermosillo + + + Mazatlan + + + Chihuahua + + + Bahia Banderas + + + Ojinaga + + + Monterrey + + + Cidade do México + + + Matamoros + + + Mérida + + + Cancun + + + Kuala Lampur + + + Kuching + + + Maputo + + + Windhoek + + + Nouméa + + + Niamei + + + Norfolk + + + Lagos + + + Manágua + + + Amesterdão + + + Oslo + + + Catmandu + + + Nauru + + + Niue + + + Chatham + + + Auckland + + + Mascate + + + Panamá + + + Lima + + + Taiti + + + Marquesas + + + Gambier + + + Port Moresby + + + Manila + + + Carachi + + + Varsóvia + + + Miquelon + + + Ilhas Pitcairn + + + Porto Rico + + + Gaza + + + Hebron + + + Açores + + + Madeira + + + Lisboa + + + Palau + + + Assunção + + + Qatar + + + Reunião + + + Bucareste + + + Belgrado + + + Caliningrado + + + Moscovo + + + Volgogrado + + + Samara + + + Ecaterimburgo + + + Omsk + + + Novosibirsk + + + Novokuznetsk + + + Krasnoyarsk + + + Irkutsk + + + Yakutsk + + + Vladivostok + + + Khandyga + + + Sacalina + + + Ust-Nera + + + Magadan + + + Kamchatka + + + Anadyr + + + Kigali + + + Riade + + + Guadalcanal + + + Mahe + + + Cartum + + + Estocolmo + + + Singapura + + + Santa Helena + + + Liubliana + + + Longyearbyen + + + Bratislava + + + Freetown + + + São Marinho + + + Dacar + + + Mogadíscio + + + Paramaribo + + + Juba + + + São Tomé + + + El Salvador + + + Lower Prince's Quarter + + + Damasco + + + Mbabane + + + Grand Turk + + + Ndjamena + + + Kerguelen + + + Lomé + + + Banguecoque + + + Duchambe + + + Fakaofo + + + Dili + + + Asgabate + + + Tunes + + + Tongatapu + + + Istambul + + + Porto de Espanha + + + Funafuti + + + Taipé + + + Dar es Salaam + + + Uzhgorod + + + Kiev + + + Simferopol + + + Zaporizhia + + + Campala + + + Midway + + + Johnston + + + Wake + + + Adak + + + Nome + + + Honolulu + + + Anchorage + + + Yakutat + + + Sitka + + + Juneau + + + Metlakatla + + + Los Angeles + + + Boise + + + Phoenix + + + Denver + + + Beulah, Dakota do Norte + + + New Salen, Dakota do Norte + + + Center, Dakota do Norte + + + Chicago + + + Menominee + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Indianápolis + + + Louisville + + + Vevay, Indiana + + + Monticello, Kentucky + + + Detroit + + + Nova Iorque + + + Montevideu + + + Samarcanda + + + Tashkent + + + Vaticano + + + São Vicente + + + Caracas + + + Tortola + + + St. Thomas + + + Cidade de Ho Chi Minh + + + Efate + + + Wallis + + + Ápia + + + Adem + + + Mayotte + + + Joanesburgo + + + Lusaca + + + Harare + + + + Hora do Acre + Hora Padrão do Acre + Hora de Verão do Acre + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + Hora do Afeganistão + + + + + Hora da África Central + + + + + Hora da África Oriental + + + + + Hora da África do Sul + + + + + Hora da África Ocidental + Hora Padrão da África Ocidental + Hora de Verão da África Ocidental + + + + + Hora do Alasca + Hora Padrão do Alasca + Hora de Verão do Alasca + + + + + Hora de Almaty + Hora Padrão de Almaty + Hora de Verão de Almaty + + + + + Hora do Amazonas + Hora Padrão do Amazonas + Hora de Verão do Amazonas + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + Hora Central + Hora Padrão Central + Hora de Verão Central + + + + + Hora Oriental + Hora Padrão Oriental + Hora de Verão Oriental + + + + + Hora da Montanha + Hora Padrão da Montanha + Hora de Verão da Montanha + + + + + Hora do Pacífico + Hora Padrão do Pacífico + Hora de Verão do Pacífico + + + + + Hora de Anadyr + Hora Padrão de Anadyr + Hora de Verão de Anadyr + + + + + Hora de Aqtau + Hora Padrão de Aqtau + Hora de Verão de Aqtau + + + + + Hora de Aqtobe + Hora Padrão de Aqtobe + Hora de Verão de Aqtobe + + + + + Hora da Arábia + Hora Padrão da Arábia + Hora de Verão da Arábia + + + + + Hora da Argentina + Hora Padrão da Argentina + Hora de Verão da Argentina + + + + + Hora da Argentina Ocidental + Hora Padrão da Argentina Ocidental + Hora de Verão da Argentina Ocidental + + + + + Hora da Arménia + Hora Padrão da Arménia + Hora de Verão da Arménia + + + + + Hora do Atlântico + Hora Padrão do Atlântico + Hora de Verão do Atlântico + + + + + Hora da Austrália Central + Hora Padrão da Austrália Central + Hora de Verão da Austrália Central + + + + + Hora da Austrália Central Ocidental + Hora Padrão da Austrália Central Ocidental + Hora de Verão da Austrália Central Ocidental + + + + + Hora da Austrália Oriental + Hora Padrão da Austrália Oriental + Hora de Verão da Austrália Oriental + + + + + Hora da Austrália Ocidental + Hora Padrão da Austrália Ocidental + Hora de Verão da Austrália Ocidental + + + + + Hora do Azerbaijão + Hora Padrão do Azerbaijão + Hora de Verão do Azerbaijão + + + + + Hora dos Açores + Hora Padrão dos Açores + Hora de Verão dos Açores + + + AZOT + AZOT + AZOST + + + + + Hora do Bangladeche + Hora Padrão do Bangladeche + Hora de Verão do Bangladeche + + + + + Hora do Butão + + + + + Hora da Bolívia + + + + + Hora de Brasília + Hora Padrão de Brasília + Hora de Verão de Brasília + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + Hora do Brunei Darussalam + + + + + Hora de Cabo Verde + Hora Padrão de Cabo Verde + Hora de Verão de Cabo Verde + + + + + Hora Padrão do Chamorro + + + + + Hora do Chatham + Hora Padrão do Chatham + Hora de Verão do Chatham + + + + + Hora do Chile + Hora Padrão do Chile + Hora de Verão do Chile + + + + + Hora da China + Hora Padrão da China + Hora de Verão da China + + + + + Hora de Choibalsan + Hora Padrão de Choibalsan + Hora de Verão de Choibalsan + + + + + Hora da Ilha do Natal + + + + + Hora das Ilhas Cocos + + + + + Hora da Colômbia + Hora Padrão da Colômbia + Hora de Verão da Colômbia + + + + + Hora das Ilhas Cook + Hora Padrão das Ilhas Cook + Hora de Verão das Ilhas Cook + + + + + Hora de Cuba + Hora Padrão de Cuba + Hora de Verão de Cuba + + + + + Hora de Davis + + + + + Hora de Dumont-d'Urville + + + + + Hora de Timor Leste + + + + + Hora da Ilha da Páscoa + Hora Padrão da Ilha da Páscoa + Hora de Verão da Ilha da Páscoa + + + + + Hora do Equador + + + + + Hora da Europa Central + Hora Padrão da Europa Central + Hora de Verão da Europa Central + + + CET + CET + CEST + + + + + Hora da Europa de Leste + Hora Padrão da Europa de Leste + Hora de Verão da Europa de Leste + + + EET + EET + EEST + + + + + Hora da Europa Ocidental + Hora Padrão da Europa Ocidental + Hora de Verão da Europa Ocidental + + + WET + WET + WEST + + + + + Hora das Ilhas Falkland + Hora Padrão das Ilhas Falkland + Hora de Verão das Ilhas Falkland + + + + + Hora de Fiji + Hora Padrão de Fiji + Hora de Verão de Fiji + + + + + Hora da Guiana Francesa + + + + + Hora das Terras Austrais e Antártidas Francesas + + + + + Hora das Galápagos + + + + + Hora de Gambier + + + + + Hora da Geórgia + Hora Padrão da Geórgia + Hora de Verão da Geórgia + + + + + Hora das Ilhas Gilbert + + + + + Hora de Greenwich + + + + + Hora da Gronelândia Oriental + Hora Padrão da Gronelândia Oriental + Hora de Verão da Gronelândia Oriental + + + + + Hora da Gronelândia Ocidental + Hora Padrão da Gronelândia Ocidental + Hora de Verão da Gronelândia Ocidental + + + + + Hora Padrão de Guam + + + + + Hora Padrão do Golfo + + + + + Hora da Guiana + + + + + Hora do Havai e Aleutas + Hora Padrão do Havai e Aleútes + Hora de Verão do Havai e Aleútes + + + + + Hora de Hong Kong + Hora Padrão de Hong Kong + Hora de Verão de Hong Kong + + + + + Hora de Hovd + Hora Padrão de Hovd + Hora de Verão de Hovd + + + + + Hora Padrão da Índia + + + + + Hora do Oceano Índico + + + + + Hora da Indochina + + + + + Hora da Indonésia Central + + + + + Hora da Indonésia Oriental + + + + + Hora da Indonésia Ocidental + + + + + Hora do Irão + Hora Padrão do Irão + Hora de Verão do Irão + + + + + Hora de Irkutsk + Hora Padrão de Irkutsk + Hora de Verão de Irkutsk + + + + + Hora de Israel + Hora Padrão de Israel + Hora de Verão de Israel + + + + + Hora do Japão + Hora Padrão do Japão + Hora de Verão do Japão + + + + + Hora de Petropavlovsk-Kamchatski + Hora Padrão de Petropavlovsk-Kamchatski + Hora de Verão de Petropavlovsk-Kamchatski + + + + + Hora do Cazaquistão Oriental + + + + + Hora do Cazaquistão Ocidental + + + + + Hora da Coreia + Hora Padrão da Coreia + Hora de Verão da Coreia + + + + + Hora de Kosrae + + + + + Hora de Krasnoiarsk + Hora Padrão de Krasnoyarsk + Hora de Verão de Krasnoyarsk + + + + + Hora do Quirguistão + + + + + Hora do Sri Lanka + + + + + Hora das Ilhas Line + + + + + Hora de Lord Howe + Hora Padrão de Lord Howe + Hora de Verão de Lord Howe + + + + + Hora de Macau + Hora Padrão de Macau + Hora de Verão de Macau + + + + + Hora da Ilha Macquarie + + + + + Hora de Magadan + Hora Padrão de Magadan + Hora de Verão de Magadan + + + + + Hora da Malásia + + + + + Hora das Maldivas + + + + + Hora das Ilhas Marquesas + + + + + Hora das Ilhas Marshall + + + + + Hora das Maurícias + Hora Padrão das Maurícias + Hora de Verão das Maurícias + + + + + Hora de Mawson + + + + + Hora de Ulan Bator + Hora Padrão de Ulan Bator + Hora de Verão de Ulan Bator + + + + + Hora de Moscovo + Hora Padrão de Moscovo + Hora de Verão de Moscovo + + + + + Hora de Mianmar + + + + + Hora de Nauru + + + + + Hora do Nepal + + + + + Hora da Nova Caledónia + Hora Padrão da Nova Caledónia + Hora de Verão da Nova Caledónia + + + + + Hora da Nova Zelândia + Hora Padrão da Nova Zelândia + Hora de Verão da Nova Zelândia + + + + + Hora da Terra Nova + Hora Padrão da Terra Nova + Hora de Verão da Terra Nova + + + + + Hora de Niue + + + + + Hora das Ilhas Norfolk + + + + + Hora de Fernando de Noronha + Hora Padrão de Fernando de Noronha + Hora de Verão de Fernando de Noronha + + + + + Hora das Ilhas Mariana do Norte + + + + + Hora de Novosibirsk + Hora Padrão de Novosibirsk + Hora de Verão de Novosibirsk + + + + + Hora de Omsk + Hora Padrão de Omsk + Hora de Verão de Omsk + + + + + Hora do Paquistão + Hora Padrão do Paquistão + Hora de Verão do Paquistão + + + + + Hora de Palau + + + + + Hora de Papua Nova Guiné + + + + + Hora do Paraguai + Hora Padrão do Paraguai + Hora de Verão do Paraguai + + + + + Hora do Peru + Hora Padrão do Peru + Hora de Verão do Peru + + + + + Hora das Filipinas + Hora Padrão das Filipinas + Hora de Verão das Filipinas + + + + + Hora das Ilhas Fénix + + + + + Hora de São Pedro e Miquelão + Hora Padrão de São Pedro e Miquelão + Hora de Verão de São Pedro e Miquelão + + + + + Hora de Pitcairn + + + + + Hora de Ponape + + + + + Hora de Qyzylorda + Hora Padrão de Qyzylorda + Hora de Verão de Qyzylorda + + + + + Hora de Reunião + + + + + Hora de Rothera + + + + + Hora de Sacalina + Hora Padrão de Sacalina + Hora de Verão de Sacalina + + + + + Hora de Samara + Hora Padrão de Samara + Hora de Verão de Samara + + + + + Hora de Samoa + Hora Padrão de Samoa + Hora de Verão de Samoa + + + + + Hora das Seicheles + + + + + Hora Padrão de Singapura + + + + + Hora das Ilhas Salomão + + + + + Hora da Geórgia do Sul + + + + + Hora do Suriname + + + + + Hora de Syowa + + + + + Hora do Taiti + + + + + Hora de Taipé + Hora Padrão de Taipé + Hora de Verão de Taipé + + + + + Hora do Tajiquistão + + + + + Hora de Tokelau + + + + + Hora de Tonga + Hora Padrão de Tonga + Hora de Verão de Tonga + + + + + Hora de Chuuk + + + + + Hora do Turquemenistão + Hora Padrão do Turquemenistão + Hora de Verão do Turquemenistão + + + + + Hora de Tuvalu + + + + + Hora do Uruguai + Hora Padrão do Uruguai + Hora de Verão do Uruguai + + + + + Hora do Uzbequistão + Hora Padrão do Uzbequistão + Hora de Verão do Uzbequistão + + + + + Hora do Vanuatu + Hora Padrão do Vanuatu + Hora de Verão do Vanuatu + + + + + Hora da Venezuela + + + + + Hora de Vladivostok + Hora Padrão de Vladivostok + Hora de Verão de Vladivostok + + + + + Hora de Volgogrado + Hora Padrão de Volgogrado + Hora de Verão de Volgogrado + + + + + Hora de Vostok + + + + + Hora da Ilha Wake + + + + + Hora de Wallis e Futuna + + + + + Hora de Yakutsk + Hora Padrão de Yakutsk + Hora de Verão de Yakutsk + + + + + Hora de Ecaterimburgo + Hora Padrão de Ecaterimburgo + Hora de Verão de Ecaterimburgo + + + + + + + , +   + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 milhão + 0 milhões + 00 milhões + 00 milhões + 000 milhões + 000 milhões + 0 mil milhões + 0 mil milhões + 00 mil milhões + 00 mil milhões + 000 mil milhões + 000 mil milhões + 0 bilião + 0 biliões + 00 biliões + 00 biliões + 000 biliões + 000 biliões + + + + + 0 mil + 0 mil + 00 mil + 00 mil + 000 mil + 000 mil + 0 M + 0 M + 00 M + 00 M + 000 M + 000 M + 0 MM + 0 MM + 00 MM + 00 MM + 000 MM + 000 MM + 0 Bi + 0 Bi + 00 Bi + 00 Bi + 000 Bi + 000 Bi + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + + + + Dirham dos Emirados Árabes Unidos + Dirham dos Emirados Árabes Unidos + Dirhams dos Emirados Árabes Unidos + + + Afeghani (1927–2002) + + + Afegani do Afeganistão + Afegani do Afeganistão + Afeganis do Afeganistão + + + Lek albanês + Lek albanês + Leks albaneses + + + Dram arménio + Dram arménio + Drams arménios + + + Florim das Antilhas Holandesas + Florim das Antilhas Holandesas + Florins das Antilhas Holandesas + + + Kwanza angolano + Kwanza angolano + Kwanzas angolanos + + + Peso argentino + Peso argentino + Pesos argentinos + + + Dólar australiano + Dólar australiano + Dólares australianos + AU$ + + + Florim de Aruba + Florim de Aruba + Florins de Aruba + + + Manat do Azerbaijão + Manat do Azerbaijão + Manats do Azerbaijão + + + Dinar da Bósnia-Herzegóvina + + + Marco bósnio-herzegóvino conversível + Marco bósnio-herzegóvino conversível + Marcos bósnio-herzegóvinos conversíveis + + + Dólar barbadense + Dólar barbadense + Dólares barbadenses + + + Taka de Bangladesh + Taka de Bangladesh + Takas de Bangladesh + + + Franco belga (convertível) + + + Lev búlgaro + Lev búlgaro + Levs búlgaros + + + Dinar baremita + Dinar baremita + Dinares baremitas + + + Franco burundiano + Franco burundiano + Francos burundianos + + + Dólar bermudense + Dólar bermudense + Dólares bermudenses + + + Dólar bruneíno + Dólar bruneíno + Dólares bruneínos + + + Boliviano + Boliviano + Bolivianos + + + Real brasileiro + Real brasileiro + Reais brasileiros + R$ + + + Dólar das Bahamas + Dólar das Bahamas + Dólares das Bahamas + + + Ngultrum do Butão + Ngultrum do Butão + Ngultruns do Butão + BTN + + + Pula de Botswana + Pula de Botswana + Pulas de Botswana + + + Rublo novo bielorusso (1994–1999) + + + Rublo bielorusso + Rublo bielorusso + Rublos bielorussos + + + Dólar belizense + Dólar belizense + Dólares belizenses + + + Dólar canadiano + Dólar canadiano + Dólares canadianos + CA$ + + + Franco congolês + Franco congolês + Francos congoleses + + + Franco suíço + Franco suíço + Francos suíços + + + Peso chileno + Peso chileno + Pesos chilenos + + + Yuan chinês + Yuan chinês + Yuans chineses + CN¥ + + + Peso colombiano + Peso colombiano + Pesos colombianos + + + Colon costa-riquenho + Colon costa-riquenho + Colons costa-riquenhos + + + Peso cubano conversível + Peso cubano conversível + Pesos cubanos conversíveis + + + Peso cubano + Peso cubano + Pesos cubanos + + + Escudo cabo-verdiano + Escudo cabo-verdiano + Escudos cabo-verdianos + + + Libra de Chipre + + + Coroa checa + Coroa checa + Coroas checas + + + Franco jibutiano + Franco jibutiano + Francos jibutianos + + + Coroa dinamarquesa + Coroa dinamarquesa + Coroas dinamarquesas + + + Peso dominicano + Peso dominicano + Pesos dominicanos + + + Dinar argelino + Dinar argelino + Dinares argelinos + + + Unidad de Valor Constante (UVC) do Equador + + + Libra egípcia + Libra egípcia + Libras egípcias + + + Nakfa da Eritreia + Nakfa da Eritreia + Nakfas da Eritreia + + + Birr etíope + Birr etíope + Birrs etíopes + + + Euro + Euro + Euros + + + + Dólar de Fiji + Dólar de Fiji + Dólares de Fiji + + + Libra das Ilhas Falkland + Libra das Ilhas Falkland + Libras das Ilhas Falkland + + + Libra esterlina britânica + Libra esterlina britânica + Libras esterlinas britânicas + £ + + + Lari georgiano + Lari georgiano + Laris georgianos + + + Cedi do Gana + + + Cedi de Gana + Cedi de Gana + Cedis de Gana + + + Libra de Gibraltar + Libra de Gibraltar + Libras de Gibraltar + + + Dalasi da Gâmbia + Dalasi da Gâmbia + Dalasis da Gâmbia + GMD + + + Franco Guineense + Franco Guineense + Francos Guineenses + + + Quetzal da Guatemala + Quetzal da Guatemala + Quetzales da Guatemala + + + Dólar da Guiana + Dólar da Guiana + Dólares da Guiana + + + Dólar de Hong Kong + Dólar de Hong Kong + Dólares de Hong Kong + HK$ + + + Lempira das Honduras + Lempira de Honduras + Lempiras das Honduras + + + Kuna croata + Kuna croata + Kunas croatas + + + Gourde haitiano + Gourde haitiano + Gourdes haitianos + + + Forint húngaro + Forint húngaro + Forints húngaros + + + Rupia indonésia + Rupia indonésia + Rupias indonésias + + + Sheqel novo israelita + Sheqel novo israelita + Sheqels novos israelitas + + + + Rupia indiana + Rupia indiana + Rupias indianas + + + + Dinar iraquiano + Dinar iraquiano + Dinares iraquianos + + + Rial iraniano + Rial iraniano + Riais iranianos + + + Coroa islandesa + Coroa islandesa + Coroas islandesas + + + Dólar jamaicano + Dólar jamaicano + Dólares jamaicanos + + + Dinar jordaniano + Dinar jordaniano + Dinares jordanianos + + + Iene japonês + Iene japonês + Ienes japoneses + JP¥ + + + Xelim queniano + Xelim queniano + Xelins quenianos + + + Som do Quirguistão + Som do Quirguistão + Soms do Quirguistão + + + Riel cambojano + Riel cambojano + Rieles cambojanos + + + Franco comoriano + Franco comoriano + Francos comorianos + + + Won norte-coreano + Won norte-coreano + Wons norte-coreanos + + + Won sul-coreano + Won sul-coreano + Wons sul-coreanos + + + + Dinar kuwaitiano + Dinar kuwaitiano + Dinares kuwaitianos + + + Dólar das Ilhas Caimão + Dólar das Ilhas Caimão + Dólares das Ilhas Caimão + + + Tenge do Cazaquistão + Tenge do Cazaquistão + Tenges do Cazaquistão + + + Kip de Laos + Kip de Laos + Kips de Laos + + + Libra libanesa + Libra libanesa + Libras libanesas + + + Rupia do Sri Lanka + Rupia do Sri Lanka + Rupias do Sri Lanka + + + Dólar liberiano + Dólar liberiano + Dólares liberianos + + + Litas da Lituânia + Litas da Lituânia + Litas da Lituânia + + + Lats da Letónia + Lats da Letónia + Lats da Letónia + + + Dinar líbio + Dinar líbio + Dinares líbios + + + Dirham marroquino + Dirham marroquino + Dirhams marroquinos + + + Leu moldavo + Leu moldavo + Lei moldavos + + + Ariari de Madagáscar + Ariari de Madagáscar + Ariaris de Madagáscar + + + Dinar macedónio + Dinar macedónio + Dinares macedónios + + + Franco do Mali + + + Kyat de Mianmar + Kyat de Mianmar + Kyats de Mianmar + + + Tugrik da Mongólia + Tugrik da Mongólia + Tugriks da Mongólia + + + Pataca de Macau + Pataca de Macau + Patacas de Macau + + + Ouguiya da Mauritânia + Ouguiya da Mauritânia + Ouguiyas da Mauritânia + + + Rupia mauriciana + Rupia mauriciana + Rupias mauricianas + + + Rupia das Ilhas Maldivas + Rupia das Ilhas Maldivas + Rupias das Ilhas Maldivas + + + Kwacha do Malawi + Kwacha do Malawi + Kwachas do Malawi + + + Peso mexicano + Peso mexicano + Pesos mexicanos + MX$ + + + Peso Plata mexicano (1861–1992) + + + Unidad de Inversion (UDI) mexicana + + + Ringgit malaio + Ringgit malaio + Ringgits malaios + + + Metical de Moçambique + Metical de Moçambique + Meticales de Moçambique + + + Dólar da Namíbia + Dólar da Namíbia + Dólares da Namíbia + + + Naira nigeriana + Naira da Nigéria + Nairas nigerianas + + + Córdoba nicaraguano + + + Córdoba Ouro nicaraguano + Córdoba de ouro da Nicarágua + Córdobas de ouro da Nicarágua + + + Coroa norueguesa + Coroa norueguesa + Coroas norueguesas + + + Rupia nepalesa + Rupia nepalesa + Rupias nepalesas + + + Dólar neozelandês + Dólar neozelandês + Dólares neozelandeses + NZ$ + + + Rial de Omã + Rial de Omã + Riais de Omã + + + Balboa panamenho + Balboa panamenho + Balboa panamenho + + + Novo sol peruano + Novo sol peruano + Novos soles peruanos + + + Kina da Papua-Nova Guiné + Kina da Papua-Nova Guiné + Kinas da Papua-Nova Guiné + + + Peso filipino + Peso filipino + Pesos filipinos + + + Rupia paquistanesa + Rupia paquistanesa + Rupias paquistanesas + + + Zloti polaco + Zloti polaco + Zlotis polacos + + + Zloti polaco (1950–1995) + + + #,##0.00 ¤ + $ + , + + + Guarani paraguaio + Guarani paraguaio + Guaranis paraguaios + + + Rial do Qatar + Rial do Qatar + Riais do Qatar + + + Leu romeno + Leu romeno + Lei romenos + + + Dinar sérvio + Dinar sérvio + Dinares sérvios + + + Rublo russo + Rublo russo + Rublos russos + + + Franco ruandês + Franco ruandês + Francos ruandeses + + + Rial saudita + Rial saudita + Riais sauditas + + + Dólar das Ilhas Salomão + Dólar das Ilhas Salomão + Dólares das Ilhas Salomão + + + Rupia seichelense + Rupia seichelense + Rupias seichelenses + + + Libra sudanesa + Libra sudanesa + Libras sudanesas + + + Coroa sueca + Coroa sueca + Coroas suecas + + + Dólar de Singapura + Dólar de Singapura + Dólares de Singapura + + + Libra de Santa Helena + Libra de Santa Helena + Libras de Santa Helena + + + Leone de Serra Leoa + Leone de Serra Leoa + Leones de Serra Leoa + + + Xelim somali + Xelim somali + Xelins somalis + + + Dólar do Suriname + Dólar do Suriname + Dólares do Suriname + + + Libra sul-sudanesa + Libra sul-sudanesa + Libras sul-sudanesas + + + Dobra de São Tomé e Príncipe + Dobra de São Tomé e Príncipe + Dobras de São Tomé e Príncipe + + + Libra síria + Libra síria + Libras sírias + + + Lilangeni da Suazilândia + Lilangeni da Suazilândia + Lilangenis da Suazilândia + + + Baht da Tailândia + Baht da Tailândia + Bahts da Tailândia + ฿ + + + Somoni do Tajaquistão + Somoni do Tajaquistão + Somonis do Tajaquistão + + + Manat do Turcomenistão + Manat do Turcomenistão + Manats do Turcomenistão + + + Dinar tunisino + Dinar tunisino + Dinares tunisinos + + + Paʻanga de Tonga + Paʻanga de Tonga + Paʻangas de Tonga + + + Lira turca + Lira turca + Liras turcas + + + Dólar de Trindade e Tobago + Dólar de Trindade e Tobago + Dólares de Trindade e Tobago + + + Novo dólar taiwanês + Novo dólar taiwanês + Novos dólares taiwaneses + NT$ + + + Xelim tanzaniano + Xelim tanzaniano + Xelins tanzanianos + + + Hryvnia da Ucrânia + Hryvnia da Ucrânia + Hryvnias da Ucrânia + + + Xelim ugandense + Xelim ugandense + Xelins ugandenses + + + Dólar dos Estados Unidos + Dólar dos Estados Unidos + Dólares dos Estados Unidos + US$ + + + Peso uruguaio + Peso uruguaio + Pesos uruguaios + + + Som do Uzbequistão + Som do Uzbequistão + Sons do Uzbequistão + UZS + + + Bolívar venezuelano + Bolívar venezuelano + Bolívares venezuelanos + + + Dong vietnamita + Dong vietnamita + Dongs vietnamitas + + + + Vatu de Vanuatu + Vatu de Vanuatu + Vatus de Vanuatu + + + Tala samoano + Tala samoano + Talas samoanos + + + Franco CFA de BEAC + Franco CFA de BEAC + Francos CFA de BEAC + FCFA + + + Dólar das Caraíbas Orientais + Dólar das Caraíbas Orientais + Dólares das Caraíbas Orientais + EC$ + + + direito especial de saque + direitos especiais de saque + + + Unidade da Moeda Europeia + + + Franco CFA de BCEAO + Franco CFA de BCEAO + Francos CFA de BCEAO + CFA + + + Franco CFP + Franco CFP + Francos CFP + CFPF + + + Moeda desconhecida + (Moeda desconhecida) + (Moeda desconhecida) + + + Rial iemenita + Rial iemenita + Riais iemenitas + + + Dinar forte jugoslavo + + + Super Dinar jugoslavo + + + Dinar conversível jugoslavo + + + Rand sul-africano + Rand sul-africano + Rands sul-africanos + + + Kwacha zambiano (1968–2012) + Kwacha zambiano (1968–2012) + Kwachas zambianos (1968–2012) + + + Kwacha zambiano + Kwacha zambiano + Kwachas zambianos + + + Dólar do Zimbabwe + + + + +{0} + {0} - {1} + + + + + + {0} por {1} + + + {0} força G + {0} força G + + + {0} minuto + {0} minutos + + + {0} segundo + {0} segundos + + + {0} grau + {0} graus + + + {0} acre + {0} acres + + + {0} hectare + {0} hectares + + + {0} pé quadrado + {0} pés quadrados + + + {0} quilómetro quadrado + {0} quilómetros quadrados + + + {0} metro quadrado + {0} metros quadrados + + + {0} milha quadrada + {0} milhas quadradas + + + {0} dia + {0} dias + + + {0} hora + {0} horas + + + {0} milissegundo + {0} milissegundos + + + {0} minuto + {0} minutos + + + {0} mês + {0} meses + + + {0} segundo + {0} segundos + + + {0} semana + {0} semanas + + + {0} ano + {0} anos + + + {0} centímetro + {0} centímetros + + + {0} pé + {0} pés + + + {0} polegada + {0} polegadas + + + {0} quilómetro + {0} quilómetros + + + {0} ano-luz + {0} anos-luz + + + {0} metro + {0} metros + + + {0} milha + {0} milhas + + + {0} milímetro + {0} milímetros + + + {0} picómetro + {0} picómetros + + + {0} jarda + {0} jardas + + + {0} grama + {0} gramas + + + {0} quilograma + {0} quilogramas + + + {0} onça + {0} onças + + + {0} libra + {0} libras + + + {0} cavalo-vapor + {0} cavalos-vapor + + + {0} quilowatt + {0} quilowatts + + + {0} watt + {0} watts + + + {0} hectopascal + {0} hectopascals + + + {0} polegada de mercúrio + {0} polegadas de mercúrio + + + {0} milibar + {0} milibares + + + {0} quilómetro por hora + {0} quilómetros por hora + + + {0} metro por segundo + {0} metros por segundo + + + {0} milha por hora + {0} milhas por hora + + + {0} grau Celsius + {0} graus Celsius + + + {0} grau Fahrenheit + {0} graus Fahrenheit + + + {0} quilómetro cúbico + {0} quilómetros cúbicos + + + {0} milha cúbica + {0} milhas cúbicas + + + {0} litro + {0} litros + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} min + {0} min + + + {0} s + {0} s + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dia + {0} dias + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mês + {0} meses + + + {0} s + {0} s + + + {0} sem. + {0} sem. + + + {0} ano + {0} anos + + + {0} cm + {0} cm + + + {0} pé + {0} pés + + + {0} pol. + {0} pol. + + + {0} km + {0} km + + + {0} ano-luz + {0} anos-luz + + + {0} m + {0} m + + + {0} milha + {0} milhas + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} cv + {0} cv + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}' + {0}' + + + {0}" + {0}" + + + {0}° + {0}° + + + {0} acre + {0} acres + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} dia + {0} dias + + + {0} h + {0} h + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mês + {0} meses + + + {0} s + {0} s + + + {0} sem. + {0} sem. + + + {0} ano + {0} anos + + + {0} cm + {0} cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} km + {0} km + + + {0} ano-luz + {0} anos-luz + + + {0} m + {0} m + + + {0} milha + {0} milhas + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} cv + {0} cv + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0}" Hg + {0}" Hg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} ° + {0} ° + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + + + sim:s + não:n + + + + + diff --git a/library/Zend/Locale/Data/pt_ST.xml b/library/Zend/Locale/Data/pt_ST.xml new file mode 100755 index 000000000..c4665e704 --- /dev/null +++ b/library/Zend/Locale/Data/pt_ST.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + + + + Db + + + + diff --git a/library/Zend/Locale/Data/pt_TL.xml b/library/Zend/Locale/Data/pt_TL.xml new file mode 100755 index 000000000..6f7be5082 --- /dev/null +++ b/library/Zend/Locale/Data/pt_TL.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + ∅∅∅ + ∅∅∅ + ∅∅∅ + + + + + diff --git a/library/Zend/Locale/Data/rm.xml b/library/Zend/Locale/Data/rm.xml new file mode 100755 index 000000000..a5d933c09 --- /dev/null +++ b/library/Zend/Locale/Data/rm.xml @@ -0,0 +1,2793 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + + + afar + abchasian + aceh + acoli + andangme + adygai + avestic + afrikaans + afrihili + ainu + akan + accadic + aleutic + altaic dal sid + amaric + aragonais + englais vegl + angika + arab + arameic + araucanic + arapaho + arawak + assami + asturian + avaric + awadhi + aymara + aserbeidschanic + baschkir + belutschi + balinais + basaa + bieloruss + bedscha + bemba + bulgar + bhojpuri + bislama + bikol + bini + siksika + bambara + bengal + tibetan + breton + braj + bosniac + buriat + bugi + blin + catalan + caddo + caribic + atsam + tschetschen + cebuano + chamorro + chibcha + tschagataic + chuukais + mari + patuà chinook + choctaw + chipewyan + cherokee + cheyenne + cors + coptic + cree + tirc crimean + tschec + kaschubic + slav da baselgia + tschuvasch + kimric + danais + dakota + dargwa + tudestg + tudestg austriac + delaware + slavey + dogrib + dinka + dogri + bass sorb + duala + ollandais mesaun + maledivic + diula + dzongkha + ewe + efik + egipzian vegl + ekajuk + grec + elamitic + englais + englais australian + englais canadais + englais britannic + englais american + englais mesaun + esperanto + spagnol + spagnol latinamerican + spagnol iberic + eston + basc + ewondo + persian + fang + fanti + fulah + finlandais + filippino + fidschian + ferrais + fon + franzos + franzos canadais + franzos svizzer + franzos mesaun + franzos vegl + fris dal nord + fris da l'ost + friulan + fris + irlandais + ga + gayo + gbaya + gaelic scot + geez + gilbertais + galician + tudestg mesaun + guarani + vegl tudestg da scrittira + gondi + gorontalo + gotic + grebo + grec vegl + tudestg svizzer + gujarati + manx + gwichʼin + haussa + haida + hawaian + ebraic + hindi + hiligaynon + ettitic + hmong + hiri motu + croat + aut sorb + haitian + ungarais + hupa + armen + herero + interlingua + iban + indonais + interlingue + igbo + sichuan yi + inupiak + ilocano + ingush + ido + islandais + talian + inuktitut + giapunais + lojban + giudaic-persian + giudaic-arab + javanais + georgian + karakalpak + kabyle + kachin + jju + kamba + kawi + kabardic + tyap + koro + kongo + khasi + khotanais + kikuyu + kuanyama + casac + grönlandais + cambodschan + kimbundu + kannada + corean + konkani + kosraean + kpelle + kanuri + karachay-balkar + carelian + kurukh + kashmiri + curd + kumuk + kutenai + komi + cornic + kirghis + latin + ladino + lahnda + lamba + luxemburgais + lezghian + ganda + limburgais + lingala + laot + lomongo + lozi + lituan + luba-katanga + luba-lulua + luiseno + lunda + luo + lushai + letton + madurais + magahi + maithili + makassar + mandingo + masai + moksha + mandar + mende + malagassi + irlandais mesaun + marschallais + maori + micmac + minangkabau + macedon + malayalam + mongolic + manchu + manipuri + mohawk + mossi + marathi + malaic + maltais + pluriling + creek + mirandais + marwari + birman + erzya + nauru + neapolitan + norvegais bokmål + ndebele dal nord + bass tudestg + nepalais + newari + ndonga + nias + niue + ollandais + flam + norvegiais nynorsk + norvegiais + nogai + nordic vegl + n'ko + ndebele dal sid + sotho dal nord + navajo + newari classic + nyanja + nyamwezi + nyankole + nyoro + nzima + occitan + ojibwa + oromo + oriya + ossetic + osage + tirc ottoman + punjabi + pangasinan + pahlavi + pampanga + papiamento + palau + persian vegl + fenizian + pali + polac + ponapean + provenzal vegl + paschto + portugais + portugais brasilian + portugais iberian + quechua + rajasthani + rapanui + rarotonga + rumantsch + rundi + rumen + moldav + romani + russ + aromunic + kinyarwanda + sanscrit + sandawe + jakut + arameic samaritan + sasak + santali + sard + sicilian + scot + sindhi + sami dal nord + selkup + sango + irlandais vegl + serbo-croat + shan + singalais + sidamo + slovac + sloven + samoan + sami dal sid + sami lule + sami inari + sami skolt + shona + soninke + somali + sogdian + albanais + serb + sranan tongo + serer + swazi + sotho dal sid + sundanais + sukuma + susu + sumeric + svedais + suahili + siric classic + siric + tamil + telugu + temne + tereno + tetum + tadjik + tailandais + tigrinya + tigre + tiv + turkmen + tokelau + tagalog + klingonic + tlingit + tamasheq + tswana + tonga + lingua tsonga + tok pisin + tirc + tsonga + tsimshian + tatar + tumbuka + tuvalu + twi + tahitian + tuvinian + udmurt + uiguric + ugaritic + ucranais + mbundu + linguas betg determinadas + urdu + usbec + vai + venda + vietnamais + volapuk + votic + vallon + walamo + waray + washo + wolof + kalmuk + xhosa + yao + yapais + jiddic + yoruba + zhuang + zapotec + simbols da Bliss + zenaga + chinais + chinais simplifitgà + chinais tradiziunal + zulu + zuni + nagins cuntegns linguistics + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mund + Africa + America dal Nord + America dal Sid + Oceania + Africa dal Vest + America Centrala + Africa da l'Ost + Africa dal Nord + Africa Centrala + Africa Meridiunala + America dal Nord, America Centrala ed America dal Sid + Caribica + Asia da l'Ost + Asia dal Sid + Asia dal Sidost + Europa dal Sid + Australia e Nova Zelanda + Melanesia + Regiun Micronesica + Polinesia + Asia + Asia Centrala + Asia dal Vest + Europa + Europa Orientala + Europa dal Nord + Europa dal Vest + America Latina + Andorra + Emirats Arabs Unids + Afghanistan + Antigua e Barbuda + Anguilla + Albania + Armenia + Antillas Ollandaisas + Angola + Antarctica + Argentinia + Samoa Americana + Austria + Australia + Aruba + Inslas Aland + Aserbaidschan + Bosnia ed Erzegovina + Barbados + Bangladesch + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Son Barthélemy + Bermudas + Brunei + Bolivia + Brasila + Bahamas + Bhutan + Insla Bouvet + Botswana + Bielorussia + Belize + Canada + Inslas Cocos + Republica Democratica dal Congo + Republica Centralafricana + Congo + Svizra + Costa d'Ivur + Inslas Cook + Chile + Camerun + China + Columbia + Costa Rica + Cuba + Cap Verd + Insla da Christmas + Cipra + Republica Tscheca + Germania + Dschibuti + Danemarc + Dominica + Republica Dominicana + Algeria + Ecuador + Estonia + Egipta + Sahara Occidentala + Eritrea + Spagna + Etiopia + Uniun europeica + Finlanda + Fidschi + Inslas dal Falkland + Micronesia + Inslas Feroe + Frantscha + Gabun + Reginavel Unì + Grenada + Georgia + Guyana Franzosa + Guernsey + Ghana + Gibraltar + Grönlanda + Gambia + Guinea + Guadeloupe + Guinea Equatoriala + Grezia + Georgia dal Sid e las Inslas Sandwich dal Sid + Guatemala + Guam + Guinea-Bissau + Guyana + Regiun d'administraziun speziala da Hongkong, China + Inslas da Heard e da McDonlad + Honduras + Croazia + Haiti + Ungaria + Indonesia + Irlanda + Israel + Insla da Man + India + Territori Britannic en l'Ocean Indic + Irac + Iran + Islanda + Italia + Jersey + Giamaica + Jordania + Giapun + Kenia + Kirghisistan + Cambodscha + Kiribati + Comoras + Saint Kitts e Nevis + Corea dal Nord + Corea dal Sid + Kuwait + Inslas Cayman + Kasachstan + Laos + Libanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Luxemburg + Lettonia + Libia + Maroc + Monaco + Moldavia + Montenegro + Saint Martin + Madagascar + Inslas da Marshall + Macedonia + Mali + Myanmar + Mongolia + Regiun d'administraziun speziala Macao, China + Inslas Mariannas dal Nord + Martinique + Mauretania + Montserrat + Malta + Mauritius + Maldivas + Malawi + Mexico + Malaisia + Mosambic + Namibia + Nova Caledonia + Niger + Insla Norfolk + Nigeria + Nicaragua + Pajais Bass + Norvegia + Nepal + Nauru + Niue + Nova Zelanda + Oman + Panama + Peru + Polinesia Franzosa + Papua Nova Guinea + Filippinas + Pakistan + Pologna + Saint Pierre e Miquelon + Pitcairn + Puerto Rico + Territori Palestinais + Portugal + Palau + Paraguai + Katar + Oceania Periferica + Réunion + Rumenia + Serbia + Russia + Ruanda + Arabia Saudita + Salomonas + Seychellas + Sudan + Svezia + Singapur + Sontg'Elena + Slovenia + Svalbard e Jan Mayen + Slovachia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sudan dal Sid + São Tomé e Principe + El Salvador + Siria + Swaziland + Inslas Turks e Caicos + Tschad + Territoris Franzos Meridiunals + Togo + Tailanda + Tadschikistan + Tokelau + Timor da l'Ost + Turkmenistan + Tunesia + Tonga + Tirchia + Trinidad e Tobago + Tuvalu + Taiwan + Tansania + Ucraina + Uganda + Inslas pitschnas perifericas dals Stadis Unids da l'America + Stadis Unids da l'America + Uruguay + Usbekistan + Citad dal Vatican + Saint Vincent e las Grenadinas + Venezuela + Inslas Verginas Britannicas + Inslas Verginas Americanas + Vietnam + Vanuatu + Wallis e Futuna + Samoa + Jemen + Mayotte + Africa dal Sid + Sambia + Simbabwe + Regiun betg encouschenta u nunvalaivla + + + ortografia tudestga tradiziunala + ortografia standardisada da Resia + nova ortografia tudestga + franzos mesaun tardiv (fin 1606) + franzos modern tempriv (a partir da 1694) + armen oriental + armen occidental + alfabet tirc unifitgà + dialect da San Giorgio + dialect boontling + alfabet fonetic internaziunal (IPA) + alfabet fonetic da l'Ural (UPA) + dialect lipovaz da Resia + monotonic + dialect da Natisone + dialect da Gniva + dialect da Oscacco + politonic + computer + ortografia revedida + dialect da Resia + Saho + englais da standard scot + dialect scouse + dialect da Stolvizza + ortografia taraskievica + valencian + + + chalender + zavrada + munaida + + + chinaisa tradiziunala - Big5 + chalender budistic + chalender chinais + chinaisa simplifitgada - GB2312 + chalender gregorian + chalender ebraic + chalender naziunal indic + chalender islamic + chalender islamic civil + chalender giapunais + cudesch da telefon + Pinyin + chalendar da la republica chinaisa + urden dals stritgs + reglas tradiziunalas + + + unitads metrics + unitads americans + + + Lingua: {0} + Scrittira: {0} + Regiun: {0} + + + + [a à b c d e é è f g h i ì j k l m n o ò p q r s t u ù v w x y z] + [á à ă â å ä ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ] + [A À B C D E É È F G H I Ì J K L M N O Ò P Q R S T U Ù V W X Y Z] + + + « + » + + + + + + + + + + EEEE, 'ils' d 'da' MMMM y G + + + + + d 'da' MMMM y G + + + + + dd-MM-y G + + + + + dd-MM-yy GGGGG + + + + + + d + E d. + H + HH:mm + HH:mm:ss + H:mm + L + d.M. + E, d.M. + d.MM. + dd.MM. + LLL + d. MMM + E d. MMM + d. MMMM + E d. MMMM + mm:ss + mm:ss + y + y-M + E, y-M-d + MM.y + dd.MM.y + MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} - {1} + + d.-d. + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M.-M. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d.-d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d.-d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MM – MM.y + MM.y – MM.y + + + + + + + + + schan. + favr. + mars + avr. + matg + zercl. + fan. + avust + sett. + oct. + nov. + dec. + + + schaner + favrer + mars + avrigl + matg + zercladur + fanadur + avust + settember + october + november + december + + + + + S + F + M + A + M + Z + F + A + S + O + N + D + + + + + + + du + gli + ma + me + gie + ve + so + + + dumengia + glindesdi + mardi + mesemna + gievgia + venderdi + sonda + + + + + D + G + M + M + G + V + S + + + + + + + 1. quartal + 2. quartal + 3. quartal + 4. quartal + + + + + + + am + sm + + + + + + avant Cristus + suenter Cristus + + + av. Cr. + s. Cr. + + + + + + EEEE, 'ils' d 'da' MMMM y + + + + + d 'da' MMMM y + + + + + dd-MM-y + + + + + dd-MM-yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d. + H + HH:mm + HH:mm:ss + H:mm + L + d.M. + E, d.M. + d.MM. + dd.MM. + LLL + d. MMM + E d. MMM + d. MMMM + E d. MMMM + mm:ss + mm:ss + y + y-M + E, y-M-d + MM.y + dd.MM.y + MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} - {1} + + d.-d. + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M.-M. + + + dd.MM. - dd.MM. + dd.MM. - dd.MM. + + + E, dd.MM. - E, dd.MM. + E, dd.MM. - E, dd.MM. + + + MMM-MMM + + + d.-d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d.-d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MM – MM.y + MM.y – MM.y + + + + + + + + epoca + + + onn + + + mais + + + emna + + + Tag + stersas + ier + oz + damaun + puschmaun + + + di da l'emna + + + mesadad dal di + + + ura + + + minuta + + + secunda + + + zona d'urari + + + + +HH:mm;-HH:mm + GMT{0} + {1} ({0}) + + zona betg enconuschenta + + + The Valley + + + Tirana + + + Jerevan + + + Showa + + + Dumont d’Urville + + + Mac Murdo + + + San Juan, Argentinia + + + Ushuaïa + + + San Salvador de Jujuy + + + Tucumán + + + Córdoba + + + Oranjestad + + + Bruxelles + + + Bermudas + + + Bandar Seri Begawan + + + Eirunepé + + + Cuiabá + + + Belém + + + Araguaína + + + São Paulo + + + Fernando de Noronha + + + Belmopan + + + Saint John’s + + + West Island + + + Turitg + + + Insla da Pasca + + + Kaschgar + + + Ürümqi + + + San José + + + Cap Verd + + + Curaçao + + + Flying Fish Cove + + + Dschibuti + + + Copenhaghen + + + Algier + + + Galápagos + + + El Ayun + + + Asmara + + + Inslas Canarias + + + Addis Abeba + + + Fidschi + + + Port Stanley + + + Weno + + + Palikir + + + Tofol + + + Inslas Feroe + + + Londra + + + Saint Peter Port + + + Godthåb + + + Basse-Terre + + + Athen + + + Georgia dal Sid + + + Hagåtña + + + Hongkong + + + Macassar + + + Douglas + + + Diego Garcia + + + Bagdad + + + Teheran + + + Roma + + + Saint Helier + + + Giamaica + + + Tokio + + + Bischkek + + + South Tarawa + + + Comoras + + + Saint Kitts + + + Seul + + + Inslas Cayman + + + Aqtöbe + + + Santa Lucia + + + Luxemburg + + + Tschoibalsan + + + Macao + + + Brades + + + Maldivas + + + Mazatlán + + + Citad da Mexico + + + Mérida + + + Cancún + + + Nouméa + + + Kingston + + + Yaren + + + Alofi + + + Mascate + + + Rikitea + + + Karatschi + + + Varsovia + + + Saint Pierre + + + Azoras + + + Lissabon + + + Melekok + + + Asunción + + + Réunion + + + Bucarest + + + Moscau + + + Jekaterinburg + + + Nowosibirsk + + + Krasnojarsk + + + Jakutsk + + + Sachalin + + + Kamtschatka + + + Riyad + + + Honiara + + + Khartum + + + Singapur + + + Sontg'elena + + + Mogadischu + + + São Tomé + + + Salvador + + + Cockburn Town + + + Port-aux-Français + + + Lomé + + + Duschanbe + + + Aşgabat + + + Nukuʻalofa + + + Port-of-Spain + + + Daressalam + + + Uschgorod + + + Saporischja + + + Alasca + + + North Dakota (New Salem) + + + North Dakota (Central) + + + Vincennes + + + Petersburg + + + Tell City + + + Knox + + + Winamac + + + Marengo + + + Vevay + + + Monticello + + + Samarcanda + + + Taschkent + + + Citad dal Vatican + + + Saint Vincent + + + Road Town + + + Saint Thomas + + + Ho Chi Minh + + + Matāʻutu + + + + + + . + + ; + % + + + + E + + + NaN + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + peseta andorrana + + + dirham dals Emirats Arabs Unids + + + afghani (1927–2002) + + + afghani + + + lek albanais (1947–1961) + + + lek + + + dram armen + + + flurin da las Antillas Olandaisas + + + kwanza angolan + + + kwanza angolan (1977–1990) + + + nov kwanza angolan + + + kwanza angolan reajustado + + + austral argentin + + + peso argentin ley + + + peso argentin moneda nacional + + + peso argentin (1983–1985) + + + peso argentin + + + schilling austriac + + + dollar australian + + + flurin da l'Aruba + + + manat aserbaidschanic (1993–2006) + + + manat aserbaidschanic + + + dinar da la Bosnia ed Erzegovina + + + marc convertibel bosniac + + + nov dinar da la Bosnia ed Erzegovina + + + dollar da Barbados + + + taka bangladais + + + franc beltg (convertibel) + + + franc beltg + + + franc beltg (finanzial) + + + lev bulgar + + + lev bulgar socialistic + + + nov lev bulgar + + + vegl lev bulgar + + + dinar dal Bahrain + + + franc dal Burundi + + + dollar da las Bermudas + + + dollar dal Brunei + + + boliviano + + + vegl boliviano + + + peso bolivian + + + mvdol bolivian + + + cruzeiro novo brasilian (1967–1986) + + + cruzado brasilian + + + cruzeiro brasilian (1990–1993) + + + real brasilian + + + cruzado novo brasilian + + + cruzeiro brasilian + + + vegl cruzeiro brasilian + + + dollar da las Bahamas + + + ngultrum butanais + + + Kyat burmais + + + pula da la Botswana + + + nov rubel bieloruss (1994–1999) + + + rubel bieloruss + + + dollar dal Belize + + + dollar canadais + + + franc congolais + + + euro WIR + + + franc svizzer + CHF + + + franc WIR + + + escudo chilen + + + unidades de fomento chilenas + + + peso chilen + + + yuan renminbi chinais + + + peso columbian + + + unidad de valor real + + + colon da la Costa Rica + + + vegl dinar serb + + + cruna tschecoslovaca + + + peso cuban + + + escudo dal Cap Verd + + + glivra cipriota + + + cruna tscheca + + + marc da la Germania da l'Ost + + + marc tudestg + + + franc dal Dschibuti + + + cruna danaisa + + + peso dominican + + + dinar algerian + + + sucre equadorian + + + unitad da scuntrada da l'Ecuador + + + cruna estona + + + glivra egipziana + + + nakfa eritreic + + + peseta spagnola (conto A) + + + peseta spagnola (conto convertibel) + + + peseta spagnola + + + birr etiopic + + + euro + + + marc finlandais + + + dollar dal Fidschi + + + glivra dal Falkland + + + franc franzos + + + glivra sterlina + + + kupon larit georgian + + + lari georgian + + + cedi ghanais (1979–2007) + + + cedi ghanais + + + glivra da Gibraltar + + + dalasi gambic + + + franc da la Guinea + + + syli da la Guinea + + + ekwele da la Guinea Equatoriala + + + drachma greca + + + quetzal da la Guatemala + + + escudo da la Guinea Portugaisa + + + peso da la Guinea-Bissau + + + dollar da la Guyana + + + dollar da Hongkong + + + lempira hondurian + + + dinar croat + + + kuna croata + + + gourde haitian + + + forint ungarais + + + rupia indonaisa + + + glivra indonaisa + + + glivra israeliana + + + vegl sheqel israelian + + + sheqel + + + rupia indica + + + dinar iracais + + + rial iranais + + + veglia cruna islandaisa + + + cruna islandaisa + + + lira taliana + + + dollar giamaican + + + dinar jordanic + + + yen giapunais + + + schilling kenian + + + som kirghis + + + riel cambodschan + + + franc comorian + + + won da la Corea dal Nord + + + hwan da la Corea dal Sid + + + vegl won da la Corea dal Sid + + + won da la Corea dal Sid + + + dinar dal Kuwait + + + dollar da las Inslas Cayman + + + tenge casac + + + kip laot + + + glivra libanaisa + + + rupia da la Sri Lanka + + + dollar liberian + + + loti dal Lesotho + + + litas lituan + + + talonas lituan + + + franc convertibel luxemburgais + + + franc luxemburgais + + + franc finanzial luxemburgais + + + lats letton + + + rubel letton + + + dinar libic + + + dirham marocan + + + franc marocan + + + franc monegas + + + cupon moldav + + + leu moldav + + + ariary madagasc + + + franc madagasc + + + dinar da la Macedonia + + + vegl dinar macedon + + + franc dal Mali + + + Kyat dal Myanmar + + + tugrik mongolic + + + pataca dal Macao + + + ouguiya da la Mauretania + + + lira maltaisa + + + glivra maltaisa + + + rupia dal Mauritius + + + rupia da las Maledivas + + + rufiyaa da las Maledivas + + + kwacha dal Malawi + + + peso mexican + + + peso d'argient mexican (1861–1992) + + + unidad de inversion mexicana (UDI) + + + ringgit da la Malaisia + + + escudo dal mozambican + + + vegl metical mozambican + + + metical dal mozambican + + + dollar namibian + + + naira nigeriana + + + cordoba nicaraguan + + + cordoba oro nicaraguan + + + flurin ollandais + + + cruna norvegiaisa + + + rupia nepalaisa + + + dollar da la Nova Zelanda + + + rial da l'Oman + + + balboa dal Panama + + + inti peruan + + + nov sol peruan + + + sol peruan + + + kina da la Papua Nova Guinea + + + peso filippin + + + rupia pakistana + + + zloty polac + + + zloty polac (1950–1995) + + + escudo portugais + + + guarani paraguaian + + + riyal da Katar + + + dollar rodesian + + + vegl leu rumen + + + leu rumen + + + dinar serb + + + rubel russ (nov) + + + rubel russ (vegl) + + + franc ruandais + + + riyal saudit + + + dollar da las Salomonas + + + rupia da las Seychellas + + + dinar sudanais + + + glivra sudanaisa + + + glivra sudanaisa (1956–2007) + + + cruna svedaisa + + + dollar dal Singapur + + + glivra da Sontg'Elena + + + tolar sloven + + + cruna slovaca + + + leone da la Sierra Leone + + + schilling somalian + + + dollar surinam + + + flurin surinam + + + dobra da São Tomé e Principe + + + rubel sovietic + + + colon da l'El Salvador + + + glivra siriana + + + lilangeni dal Swaziland + + + baht tailandais + + + rubel dal Tadschikistan + + + somoni dal Tadschikistan + + + manat turkmen + + + dinar tunesian + + + pa'anga da Tonga + + + escudo da Timor + + + lira tirca + + + nova lira tirca + + + dollar da Trinidad e Tobago + + + nov dollar taiwanais + + + schilling tansanian + + + hryvnia ucranais + + + karbovanetz ucranais + + + schilling ucranais + + + schilling ugandais + + + dollar dals Stadis Unids da l'America + + + dollar dals Stadis Unids da l'America (proxim di) + + + dollar dals Stadis Unids da l'America (medem di) + + + peso da l'Uruguay (unidades indexadas) + + + nov peso da l'Uruguay (1975–1993) + + + peso da l'Uruguay + + + sum usbec + + + bolivar venezuelan (1871–2008) + + + bolivar venezuelan + + + dong vietnamais + + + vegl dong vietnamais + + + vatu dal Vanuatu + + + tala da la Samoa + + + franc CFA BEAC + + + argient + + + aur + + + unitad europeica cumponida + + + unitad dal quint europeica (XBC) + + + unitad dal quint europeica (XBD) + + + dollar da la Caribica Orientala + + + dretgs da prelevaziun spezials + + + franc d'aur franzos + + + franc UIC franzos + + + franc CFA BCEAO + + + palladi + + + franc CFP + + + platin + + + fonds RINET + + + code per verifitgar la valuta + + + valuta nunenconuschenta + + + dinar dal Jemen + + + rial dal Jemen + + + dinar jugoslav (1966–1990) + + + nov dinar jugoslav + + + dinar jugoslav convertibel + + + dinar jugoslav refurmà + + + rand sidafrican (finanzial) + + + rand sidafrican + + + kwacha da la sambia (1968–2012) + + + kwacha da la sambia + + + nov zaire dal Zaire + + + zaire dal Zaire + + + dollar dal Simbabwe + + + + + + + {0} di + {0} dis + + + {0} ura + {0} uras + + + {0} minuta + {0} minutas + + + {0} mais + {0} mais + + + {0} secunda + {0} secundas + + + {0} emna + {0} emnas + + + {0} onn + {0} onns + + + + + {0} di + {0} dis + + + {0} ura + {0} uras + + + {0} min. + {0} mins. + + + {0} mais + {0} mais + + + {0} sec. + {0} secs. + + + {0} emna + {0} emnas + + + {0} onn + {0} onns + + + + + + gea:g + na:n + + + + diff --git a/library/Zend/Locale/Data/rm_CH.xml b/library/Zend/Locale/Data/rm_CH.xml new file mode 100755 index 000000000..338ecd552 --- /dev/null +++ b/library/Zend/Locale/Data/rm_CH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/rn.xml b/library/Zend/Locale/Data/rn.xml new file mode 100755 index 000000000..a9ceae86c --- /dev/null +++ b/library/Zend/Locale/Data/rn.xml @@ -0,0 +1,747 @@ + + + + + + + + + + + + Igikani + Ikimuhariki + Icarabu + Ikibelarusiya + Ikinyabuligariya + Ikibengali + Igiceke + Ikidage + Ikigereki + Icongereza + Icesipanyolo + Igiperisi + Igifaransa + Igihawusa + Igihindi + Ikinyahongiriya + Ikinyendoziya + Ikigubo + Igitaliyani + Ikiyapani + Ikinyejava + Igikambodiya + Ikinyakoreya + Ikinyamaleziya + Ikinyabirimaniya + Ikinepali + Igiholandi + Igipunjabi + Ikinyapolonye + Igiporutugari + Ikirundi + Ikinyarumaniya + Ikirusiya + Ikinyarwanda + Igisomali + Igisuweduwa + Igitamili + Ikinyatayilandi + Igiturukiya + Ikinyayukereni + Inyeyurudu + Ikinyaviyetinamu + Ikiyoruba + Igishinwa + Ikizulu + + + Andora + Leta Zunze Ubumwe z'Abarabu + Afuganisitani + Antigwa na Baribuda + Angwila + Alubaniya + Arumeniya + Antiye y'Abaholandi + Angola + Arijantine + Samowa nyamerika + Otirishe + Ositaraliya + Aruba + Azerubayijani + Bosiniya na Herigozevine + Barubadosi + Bangaladeshi + Ububiligi + Burukina Faso + Buligariya + Bahareyini + Uburundi + Bene + Berimuda + Buruneyi + Boliviya + Burezili + Bahamasi + Butani + Botswana + Belausi + Belize + Kanada + Repubulika Iharanira Demokarasi ya Kongo + Repubulika ya Santarafurika + Kongo + Ubusuwisi + Kotedivuware + Izinga rya Kuku + Shili + Kameruni + Ubushinwa + Kolombiya + Kositarika + Kiba + Ibirwa bya Kapuveri + Izinga rya Shipure + Repubulika ya Ceke + Ubudage + Jibuti + Danimariki + Dominika + Repubulika ya Dominika + Alijeriya + Ekwateri + Esitoniya + Misiri + Elitereya + Hisipaniya + Etiyopiya + Finilandi + Fiji + Izinga rya Filikilandi + Mikoroniziya + Ubufaransa + Gabo + Ubwongereza + Gerenada + Jeworujiya + Gwayana y'Abafaransa + Gana + Juburalitari + Gurunilandi + Gambiya + Guneya + Gwadelupe + Gineya Ekwatoriyali + Ubugereki + Gwatemala + Gwamu + Gineya Bisawu + Guyane + Hondurasi + Korowasiya + Hayiti + Hungariya + Indoneziya + Irilandi + Isiraheli + Ubuhindi + Intara y'Ubwongereza yo mu birwa by'Abahindi + Iraki + Irani + Ayisilandi + Ubutaliyani + Jamayika + Yorudaniya + Ubuyapani + Kenya + Kirigisitani + Kamboje + Kiribati + Izinga rya Komore + Sekitsi na Nevisi + Koreya y'amajaruguru + Koreya y'amajepfo + Koweti + Ibirwa bya Keyimani + Kazakisitani + Layosi + Libani + Selusiya + Lishyitenshitayini + Sirilanka + Liberiya + Lesoto + Lituwaniya + Lukusamburu + Lativa + Libiya + Maroke + Monako + Moludavi + Madagasikari + Izinga rya Marishari + Masedoniya + Mali + Birimaniya + Mongoliya + Amazinga ya Mariyana ryo mu majaruguru + Maritiniki + Moritaniya + Monteserati + Malita + Izinga rya Morise + Moludave + Malawi + Migizike + Maleziya + Mozambiki + Namibiya + Niyukaledoniya + Nijeri + izinga rya Norufoluke + Nijeriya + Nikaragwa + Ubuholandi + Noruveji + Nepali + Nawuru + Niyuwe + Nuvelizelandi + Omani + Panama + Peru + Polineziya y'Abafaransa + Papuwa Niyugineya + Amazinga ya Filipine + Pakisitani + Polonye + Sempiyeri na Mikeloni + Pitikeyirini + Puwetoriko + Palesitina Wesitibanka na Gaza + Porutugali + Palawu + Paragwe + Katari + Amazinga ya Reyiniyo + Rumaniya + Uburusiya + u Rwanda + Arabiya Sawudite + Amazinga ya Salumoni + Amazinga ya Seyisheli + Sudani + Suwedi + Singapuru + Sehelene + Siloveniya + Silovakiya + Siyeralewone + Sanimarino + Senegali + Somaliya + Suriname + Sawotome na Perensipe + Eli Saluvatori + Siriya + Suwazilandi + Amazinga ya Turkisi na Cayikosi + Cadi + Togo + Tayilandi + Tajikisitani + Tokelawu + Timoru y'iburasirazuba + Turukumenisitani + Tuniziya + Tonga + Turukiya + Tirinidadi na Tobago + Tuvalu + Tayiwani + Tanzaniya + Ikerene + Ubugande + Leta Zunze Ubumwe za Amerika + Irigwe + Uzubekisitani + Umurwa wa Vatikani + Sevensa na Gerenadine + Venezuwela + Ibirwa by'isugi by'Abongereza + Amazinga y'Isugi y'Abanyamerika + Viyetinamu + Vanuwatu + Walisi na Futuna + Samowa + Yemeni + Mayote + Afurika y'Epfo + Zambiya + Zimbabwe + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + Mut. + Gas. + Wer. + Mat. + Gic. + Kam. + Nya. + Kan. + Nze. + Ukw. + Ugu. + Uku. + + + Nzero + Ruhuhuma + Ntwarante + Ndamukiza + Rusama + Ruheshi + Mukakaro + Nyandagaro + Nyakanga + Gitugutu + Munyonyo + Kigarama + + + + + + + cu. + mbe. + kab. + gtu. + kan. + gnu. + gnd. + + + Ku w'indwi + Ku wa mbere + Ku wa kabiri + Ku wa gatatu + Ku wa kane + Ku wa gatanu + Ku wa gatandatu + + + + + + + I1 + I2 + I3 + I4 + + + Igice ca mbere c'umwaka + Igice ca kabiri c'umwaka + Igice ca gatatu c'umwaka + Igice ca kane c'umwaka + + + + + + + Z.MU. + Z.MW. + + + + + + Mbere ya Yezu + Nyuma ya Yezu + + + Mb.Y. + Ny.Y + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Igihe + + + Umwaka + + + Ukwezi + + + Indwi, Iyinga + + + Umusi + Ejo (haheze) + Uyu musi + Ejo (hazoza) + + + Iminsi y'iyinga + + + M.s/N.s + + + Isaha + + + Umunota + + + Isegonda + + + Isaha yo mukarere + + + + + + , + . + + + + + #,##0.### + + + + + + + #,##0 % + + + + + + + #,##0.00¤ + + + + + + Idiramu ryo muri Leta Zunze Ubumwe z'Abarabu + + + Ikwanza ryo muri Angola + + + Idolari ryo muri Ositaraliya + + + Idinari ry'iribahireyini + + + Ifaranga ry'Uburundi + FBu + + + Ipula ryo muri Botswana + + + Idolari rya Kanada + + + Ifaranga rya Kongo + + + Ifaranga ry'Ubusuwisi + + + Iyuwani ryo mu Bushinwa + + + Irikaboveridiyano ryo muri Esikudo + + + Ifaranga ryo muri Jibuti + + + Idinari ryo muri Alijeriya + + + Ipawundi rya Misiri + + + Irinakufa ryo muri Eritereya + + + Ibiri ryo muri Etiyopiya + + + Iyero + + + Ipawundi ryo mu Bwongereza + + + Icedi ryo muri Gana + + + Idalasi ryo muri Gambiya + + + Ifaranga ryo muri Gineya + + + Irupiya ryo mu Buhindi + + + Iyeni ry'Ubuyapani + + + Ishilingi rya Kenya + + + Ifaranga rya Komore + + + Idolari rya Liberiya + + + Iloti ryo muro Lesoto + + + Idinari rya Libiya + + + Idiramu ryo muri Maroke + + + Iriyari ryo muri Madagasikari + + + Ugwiya ryo muri Moritaniya + + + Irupiya ryo mu birwa bya Morise + + + Ikwaca ryo muri Malawi + + + Irimetikali ryo muri Mozambike + + + Idolari rya Namibiya + + + Inayira ryo muri Nijeriya + + + Ifaranga ry'u Rwanda + + + Iriyari ryo muri Arabiya Sawudite + + + Irupiya ryo mu birwa bya Sayisheli + + + Ipawundi rya Sudani + + + Ipawundi rya Sente Helena + + + Ilewone + + + Ishilingi ryo muri Somaliya + + + Idobura ryo muri Sawotome na Perensipe + + + Ililangeni + + + Idinari ryo muri Tuniziya + + + Ishilingi rya Tanzaniya + + + Ishilingi ry'Ubugande + + + Idolari ry'abanyamerika + + + Irandi ryo muri Afurika y'Epfo + + + Ikwaca ryo muri Zambiya (1968–2012) + + + Ikwaca ryo muri Zambiya + + + Idolari ryo muri Zimbabwe + + + + + + Ego:E + Oya:O + + + + diff --git a/library/Zend/Locale/Data/rn_BI.xml b/library/Zend/Locale/Data/rn_BI.xml new file mode 100755 index 000000000..4c4975734 --- /dev/null +++ b/library/Zend/Locale/Data/rn_BI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ro.xml b/library/Zend/Locale/Data/ro.xml new file mode 100755 index 000000000..430e8e4b7 --- /dev/null +++ b/library/Zend/Locale/Data/ro.xml @@ -0,0 +1,5595 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abhază + aceh + acoli + adangme + adyghe + avestană + afrikaans + afrihili + aghem + ainu + akan + akkadiană + aleută + altaică meridională + amharică + aragoneză + engleză veche + angika + arabă + arabă standard modernă + aramaică + araucaniană + arapaho + arawak + asameză + asu + asturiană + avară + awadhi + aymara + azeră + azeră + bașkiră + baluchi + balineză + basaa + bamun + ghomala + bielorusă + beja + bemba + bena + bafut + bulgară + bhojpuri + bislama + bikol + bini + kom + siksika + bambara + bengaleză + tibetană + bretonă + braj + bodo + bosniacă + akoose + buriat + bugineză + bulu + blin + medumba + catalană + caddo + carib + cayuga + atsam + cecenă + cebuano + chiga + chamorro + chibcha + chagatai + chuukese + mari + jargon chinook + choctaw + chipewyan + cherokee + cheyenne + kurdă sorani + corsicană + coptă + cree + turcă crimeeană + cehă + cașubiană + slavonă + ciuvașă + velșă + daneză + dakota + dargwa + taita + germană + germană austriacă + germană standard elvețiană + delaware + slave + dogrib + dinka + zarma + dogri + sorabă de jos + duala + olandeză mijlocie + divehi + Jola-Fonyi + dyula + dzongkha + dazaga + embu + ewe + efik + egipteană veche + ekajuk + greacă + elamită + engleză + engleză australiană + engleză canadiană + engleză britanică + engleză britanică + engleză americană + engleză (S.U.A) + engleză mijlocie + esperanto + spaniolă + spaniolă latino-americană + spaniolă europeană + spaniolă mexicană + estoniană + bască + ewondo + persană + fang + fanti + fulah + finlandeză + filipineză + fijiană + faroeză + fon + franceză + franceză canadiană + franceză elvețiană + franceză mijlocie + franceză veche + frizonă nordică + frizonă orientală + friulană + frizonă occidentală + irlandeză + ga + gayo + gbaya + gaelică scoțiană + geez + gilbertină + galiciană + germană mijlocie înaltă + guarani + germană veche înaltă + gondi + gorontalo + gotică + grebo + greacă veche + germană elvețiană + gujarati + gusii + manx + gwichʼin + hausa + haida + hawaiiană + ebraică + hindi + hiligaynon + hitită + hmong + hiri motu + croată + sorabă de sus + haitiană + maghiară + hupa + armeană + herero + interlingua + iban + ibibio + indoneziană + interlingue + igbo + sichuan yi + inupiak + iloko + ingușă + ido + islandeză + italiană + inuktitut + japoneză + lojban + ngomba + machame + iudeo-persană + iudeo-arabă + javaneză + georgiană + karakalpak + kabyle + kachin + jju + kamba + kawi + kabardian + kanembu + tyap + makonde + kabuverdianu + koro + congoleză + khasi + limbp khotaneză + koyra chiini + kikuyu + kuanyama + kazahă + kako + kalaallisut + kalenjin + khmeră + kimbundu + kannada + coreeană + konkani + kosrae + kpelle + kanuri + karaceai-balkar + kareliană + kurukh + cașmiră + shambala + bafia + kölsch + kurdă + kumyk + kutenai + komi + cornică + kârgâză + latină + ladino + langi + lahnda + lamba + luxemburgheză + lezghian + ganda + limburgheză + lingala + laoțiană + mongo + lozi + lituaniană + luba-katanga + luba-lulua + luiseno + lunda + luo + lusahi + luyia + letonă + madureză + mafa + magahi + maithili + makasar + mandingo + masai + maba + moksha + mandar + mende + meru + morisyen + malgașă + irlandeză mijlocie + makhuwa-meetto + meta' + marshalleză + maori + micmac + minangkabau + macedoneană + malayalam + mongolă + manciuriană + manipur + mohawk + mossi + marathi + malay + malteză + mundang + limbi multiple + creek + mirandeză + marwari + birmaneză + myene + erzya + nauru + napolitană + nama + norvegiană bokmål + ndebele de nord + germana de jos + nepaleză + newari + ndonga + nias + niueană + olandeză + flamandă + kwasio + norvegiană nynorsk + ngiemboon + norvegiană + nogai + nordică veche + n’ko + ndebele de sud + sotho de nord + nuer + navajo + newari clasică + nyanja + nyamwezi + nyankole + nyoro + nzima + occitană + ojibwa + oromo + oriya + osetă + osage + turcă otomană + punjabi + pangasinan + pahlavi + pampanga + papiamento + palauană + persană veche + feniciană + pali + poloneză + pohnpeiană + provensală veche + paștună + pushto + portugheză + portugheză braziliană + portugheză europeană + quechua + rajasthani + rapanui + rarotongan + romanșă + kirundi + română + moldovenească + rombo + romani + root + rusă + aromână + kinyarwanda + rwa + sanscrită + sandawe + sakha + aramaică samariteană + samburu + sasak + santali + ngambay + sangu + sardiniană + siciliană + scots + sindhi + sami de nord + seneca + sena + selkup + koyraboro Senni + sango + irlandeză veche + sârbo-croată + tachelhit + shan + arabă ciadiană + singhaleză + sidamo + slovacă + slovenă + samoană + sami de sud + lule sami + inari sami + skolt sami + shona + soninke + somaleză + sogdien + albaneză + sârbă + sranan tongo + serer + swati + saho + sesotho + sundaneză + sukuma + susu + sumeriană + suedeză + swahili + comoreză + swahili Congo + siriacă clasică + siriacă + tamilă + telugu + timne + teso + tereno + tetum + tadjică + thailandeză + tigrinya + tigre + tiv + turkmenă + tokelau + tagalog + klingoniană + tlingit + tamashek + setswana + tonga + nyasa tonga + tok pisin + turcă + taroko + tsonga + tsimshian + tătară + tumbuka + tuvalu + twi + tasawaq + tahitiană + tuvană + tamazight central marocană + udmurt + uigură + uigur + ugaritică + ucraineană + umbundu + limbă necunoscută + urdu + uzbecă + vai + venda + vietnameză + volapuk + votic + vunjo + valonă + walser + walamo + waray + washo + wolof + calmucă + xhosa + soga + yao + yapeză + yangben + yemba + idiș + yoruba + cantoneză + zhuang + zapotecă + simboluri Bilss + zenaga + tamazight standard marocană + chineză + chineză simplificată + chineză tradițională + zulu + zuni + fară conținut lingvistic + zaza + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lume + Africa + America de Nord + America de Sud + Oceania + Africa Occidentală + America Centrală + Africa Orientală + Africa Septentrională + Africa Centrală + Africa Meridională + Americi + America Septentrională + Caraibe + Asia Orientală + Asia Meridională + Asia de Sud-Est + Europa Meridională + Australasia + Melanezia + Regiunea Micronezia + Polinezia + Asia + Asia Centrală + Asia Occidentală + Europa + Europa Orientală + Europa Septentrională + Europa Occidentală + America Latină + Insula Ascension + Andorra + Emiratele Arabe Unite + Afganistan + Antigua și Barbuda + Anguilla + Albania + Armenia + Antilele Olandeze + Angola + Antarctica + Argentina + Samoa Americană + Austria + Australia + Aruba + Insulele Åland + Azerbaidjan + Bosnia și Herțegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgaria + Bahrain + Burundi + Benin + Sfântul Bartolomeu + Bermuda + Brunei + Bolivia + Insulele Caraibe Olandeze + Brazilia + Bahamas + Bhutan + Insula Bouvet + Botswana + Belarus + Belize + Canada + Insulele Cocos (Keeling) + Republica Democrată Congo + Congo (RDC) + Republica Centrafricană + Congo + Congo (Republică) + Elveția + Côte d’Ivoire + Coasta de Fildeș + Insulele Cook + Chile + Camerun + China + Columbia + Insula Clipperton + Costa Rica + Cuba + Capul Verde + Curaçao + Insula Christmas + Cipru + Republica Cehă + Germania + Diego Garcia + Djibouti + Danemarca + Dominica + Republica Dominicană + Algeria + Ceuta și Melilla + Ecuador + Estonia + Egipt + Sahara Occidentală + Eritreea + Spania + Etiopia + Uniunea Europeană + Finlanda + Fiji + Insulele Falkland + Insulele Falkland (Insulele Malvine) + Micronezia + Insulele Feroe + Franța + Gabon + Regatul Unit + Regatul Unit + Grenada + Georgia + Guyana Franceză + Guernsey + Ghana + Gibraltar + Groenlanda + Gambia + Guineea + Guadelupa + Guineea Ecuatorială + Grecia + Georgia de Sud și Insulele Sandwich de Sud + Guatemala + Guam + Guineea-Bissau + Guyana + R.A.S. Hong Kong a Chinei + Hong Kong + Insula Heard și Insulele McDonald + Honduras + Croația + Haiti + Ungaria + Insulele Canare + Indonezia + Irlanda + Israel + Insula Man + India + Teritoriul Britanic din Oceanul Indian + Irak + Iran + Islanda + Italia + Jersey + Jamaica + Iordania + Japonia + Kenya + Kârgâzstan + Cambodgia + Kiribati + Comore + Saint Kitts și Nevis + Coreea de Nord + Coreea de Sud + Kuweit + Insulele Cayman + Kazahstan + Laos + Liban + Sfânta Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lituania + Luxemburg + Letonia + Libia + Maroc + Monaco + Republica Moldova + Muntenegru + Sfântul Martin + Madagascar + Insulele Marshall + Macedonia + Macedonia (FRIM) + Mali + Myanmar (Birmania) + Mongolia + R.A.S. Macao a Chinei + Macao + Insulele Mariane de Nord + Martinica + Mauritania + Montserrat + Malta + Mauritius + Maldive + Malawi + Mexic + Malaezia + Mozambic + Namibia + Noua Caledonie + Niger + Insulele Norfolk + Nigeria + Nicaragua + Țările de Jos + Norvegia + Nepal + Nauru + Niue + Noua Zeelandă + Oman + Panama + Peru + Polinezia Franceză + Papua-Noua Guinee + Filipine + Pakistan + Polonia + Saint-Pierre și Miquelon + Insulele Pitcairn + Puerto Rico + Teritoriile Palestiniene + Palestina + Portugalia + Palau + Paraguay + Qatar + Oceania Periferică + Réunion + România + Serbia + Rusia + Rwanda + Arabia Saudită + Insulele Solomon + Seychelles + Sudan + Suedia + Singapore + Sfânta Elena + Slovenia + Svalbard și Jan Mayen + Slovacia + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sudanul de Sud + Sao Tome și Principe + El Salvador + Sint-Maarten + Siria + Swaziland + Tristan da Cunha + Insulele Turks și Caicos + Ciad + Teritoriile Australe și Antarctice Franceze + Togo + Thailanda + Tadjikistan + Tokelau + Timorul de Est + Turkmenistan + Tunisia + Tonga + Turcia + Trinidad și Tobago + Tuvalu + Taiwan + Tanzania + Ucraina + Uganda + Insulele Minore Îndepărtate ale Statelor Unite ale Americii + Statele Unite ale Americii + S.U.A. + Uruguay + Uzbekistan + Statul Cetății Vaticanului + Saint Vincent și Grenadine + Venezuela + Insulele Virgine Britanice + Insulele Virgine S.U.A. + Vietnam + Vanuatu + Wallis și Futuna + Samoa + Kosovo + Yemen + Mayotte + Africa de Sud + Zambia + Zimbabwe + Regiune necunoscută + + + ortografie germană tradițională + ortografie resiană standardizată + ortografie germană de la 1996 + franceză medievală târzie până la 1606 + franceză modernă veche + belarusă academică + armeană orientală + armeană occidentală + alfabet latin altaic unificat + dialect San Giorgio/Bila + boontling + alfabet fonetic internațional + alfabet fonetic uralic + ortografie comuna cornish + dialect lipovaz din resiană + monotonică + dialect Natisone + dialect Gniva/Njiva + dialect Oseacco/Osojane + pinyin + politonică + informantică + ortografie revizuită + dialect resian + dialect saho + engleză standard scoțiană + dialect scouse + dialet Stolvizza/Solbica + ortografie taraskievica + ortografie unificată cornish + ortografie revizuită unificată cornish + valenciană + Wade-Giles + + + Ordonare cu simbolurile ignorate + Ordonare inversă după accent + Ordonare după majuscule/minuscule + Ordonare care ține seama de majuscule/minuscule + Ordonare după kana + ordine de sortare + Ordonare normalizată + Ordonare numerică + Puterea ordonării + monedă + numere + Fusul orar + Varianta locală + Ordonați ca simboluri + Utilizare privată + + + cifre indo-arabe + cifre indo-arabe extinse + numerale armenești + numerale armenești cu minuscule + cifre bengaleze + sortare pentru chineza tradițională - Big5 + calendar budist + calendar chinezesc + calendar copt + cifre devanagari + Ordine de sortare a dicționarului + ordine de sortare Unicode implicită + regulile europene de sortare + numerale etiopiene + calendar etiopian + Calendarul etiopian amete alem + Sistemul numeric financiar + cifre cu lățimea întreagă + sortare pentru chineza simplificată - GB2312 + numerale georgiene + calendar gregorian + numerale grecești + numerale grecești cu minuscule + cifre gujarati + cifre gurmukhi + numerale zecimale chinezești + numerale chinezești simplificate + numerale financiare chinezești simplificate + numerale chinezești tradiționale + numerale financiare chinezești tradiționale + numerale ebraice + calendar ebraic + Ordonați-le pe toate + calendar național indian + calendar islamic + calendar islamic civil + calendar japonez + numerale japoneze + numerale financiare japoneze + cifre khmere + cifre kannada + cifre laoțiene + cifre occidentale + Ordonați întâi minusculele + cifre malayalam + Cifre mongole + cifre birmaneze + Cifre native + Ordonați accentele în mod normal + Ordonați după dimensiunea normală a literei + Ordonați neținând seama de diferența dintre majuscule/minuscule + Ordonați caracterele kana separat + Ordonați fără normalizare + Ordonați cifrele individual + Ordonați simbolurile + cifre oriya + calendar persan + sortare după cartea de telefon + Tip de ordonare fonetică + sortare pinyin + Ordonați numai literele de bază + Ordonați după accente/dimensiunea literei/lățime/kana + Ordine de sortare reformată + calendar al Republicii Chineze + numerale romane + numerale romane cu minuscule + căutare cu scop general + Căutați în funcție de consoana inițială hangul + Ordonați după accent + Ordonați ignorând simbolurile + ordine de sortare standard + ordine de sortare după trasare + numerale tradiționale tamilă + cifre tamilă + cifre telugu + Ordonați după accente/dimensiunea literei/lățime + cifre thailandeze + cifre tibetane + sortare tradițională + Numere tradiționale + Ordine de sortare a liniilor ideogramelor + Ordonați mai întâi majusculele + Cifre Vai + Ordonați după accente în ordine inversă + Ordonați ținând seama de diferența dintre majuscule/minuscule + Ordonați kana diferențiat + Ordonați caracterele unicode normalizat + Ordonați cifrele în ordine numerică + + + BGN + Numeric + Ton + UNGEGN + Accente + Cu lățime întreagă + Cu jumătate de lățime + Jamo + Pinyin + Publicare + + + metric + britanic + american + + + Limbă: {0} + Scriere: {0} + Regiune: {0} + + + + [a ă â b c d e f g h i î j k l m n o p r s ș t ț u v x z] + [á à å ä ç é è ê ë ñ ö q ş ţ ü w y] + [A Ă Â B C D E F G H I Î J K L M N O P Q R S Ș T Ț U V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ " “ ” „ « » ( ) \[ \] @ * /] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0} … {1} + ... + + + + + « + » + + + + + + + era budistă + + + e.b. + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + Tout + Baba + Hathor + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesori + El Nasii + + + + + + + + + meskerem + taqemt + hedar + tahsas + ter + yekatit + megabit + miazia + genbot + sene + hamle + nehase + pagumen + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + dd.MM.y G + + + + + dd.MM.y GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + y G + MM.y G + dd.MM.y G + E, dd.MM.y G + MMM y G + d MMM y G + E, d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y-y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + E, dd.MM.y - E, dd.MM.y G + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d MMM - E, d MMM y G + E, d MMM - E, d MMM y G + E, d MMM y - E, d MMM y G + + + MMMM-MMMM y G + MMMM y – MMMM y G + + + + + + + + + ian. + feb. + mar. + apr. + mai + iun. + iul. + aug. + sept. + oct. + nov. + dec. + + + I + F + M + A + M + I + I + A + S + O + N + D + + + ianuarie + februarie + martie + aprilie + mai + iunie + iulie + august + septembrie + octombrie + noiembrie + decembrie + + + + + ian. + feb. + mar. + apr. + mai + iun. + iul. + aug. + sept. + oct. + nov. + dec. + + + I + F + M + A + M + I + I + A + S + O + N + D + + + ianuarie + februarie + martie + aprilie + mai + iunie + iulie + august + septembrie + octombrie + noiembrie + decembrie + + + + + + + Dum + Lun + Mar + Mie + Joi + Vin + Sâm + + + D + L + M + M + J + V + S + + + Du + Lu + Ma + Mi + Jo + Vi + + + + duminică + luni + marți + miercuri + joi + vineri + sâmbătă + + + + + Dum + Lun + Mar + Mie + Joi + Vin + Sâm + + + D + L + M + M + J + V + S + + + Du + Lu + Ma + Mi + Jo + Vi + + + + duminică + luni + marți + miercuri + joi + vineri + sâmbătă + + + + + + + trim. I + trim. II + trim. III + trim. IV + + + 1 + 2 + 3 + 4 + + + trimestrul I + trimestrul al II-lea + trimestrul al III-lea + trimestrul al IV-lea + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + trimestrul I + trimestrul al II-lea + trimestrul al III-lea + trimestrul al IV-lea + + + + + + + a.m. + p.m. + + + + + + înainte de Hristos + după Hristos + + + î.Hr. + î.e.n + d.Hr. + e.n. + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd.MM.y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + E, dd.MM + dd.MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + MM.y + dd.MM.y + E, dd.MM.y + MM.y + MMM y + d MMM y + E, d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + MMM-MMM + + + d-d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d MMM - E, d MMM y + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + MMMM - MMMM y + MMMM y – MMMM y + + + + + + + + + Tișrei + Heșvan + Kislev + Tevet + Șevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tammuz + Av + Elul + + + Tișrei + Heșvan + Kislev + Tevet + Șevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tammuz + Av + Elul + + + + + Tișrei + Heșvan + Kislev + Tevet + Șevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tammuz + Av + Elul + + + Tișrei + Heșvan + Kislev + Tevet + Șevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tammuz + Av + Elul + + + + + + + + AH + + + + + + + eră + + + an + anul trecut + anul acesta + anul viitor + + Peste {0} an + Peste {0} ani + Peste {0} de ani + + + Acum {0} an + Acum {0} ani + Acum {0} de ani + + + + lună + luna trecută + luna aceasta + luna viitoare + + Peste {0} lună + Peste {0} luni + Peste {0} de luni + + + Acum {0} lună + Acum {0} luni + Acum {0} de luni + + + + săptămână + săptămâna trecută + săptămâna aceasta + săptămâna viitoare + + Peste {0} săptămână + Peste {0} săptămâni + Peste {0} de săptămâni + + + Acum {0} săptămână + Acum {0} săptămâni + Acum {0} de săptămâni + + + + zi + alaltăieri + ieri + azi + mâine + poimâine + + Peste {0} zi + Peste {0} zile + Peste {0} de zile + + + Acum {0} zi + Acum {0} zile + Acum {0} de zile + + + + zi a săptămânii + + + duminica trecută + duminica aceasta + duminica viitoare + + + lunea trecută + lunea aceasta + lunea viitoare + + + marțea trecută + marțea aceasta + marțea viitoare + + + miercurea trecută + miercurea aceasta + miercurea viitoare + + + joia trecută + joia aceasta + joia viitoare + + + vinerea trecută + vinerea aceasta + vinerea viitoare + + + sâmbăta trecută + sâmbăta aceasta + sâmbăta viitoare + + + a.m./p.m + + + oră + + Peste {0} oră + Peste {0} ore + Peste {0} de ore + + + Acum {0} oră + Acum {0} ore + Acum {0} de ore + + + + minut + + Peste {0} minut + Peste {0} minute + Peste {0} de minute + + + Acum {0} minut + Acum {0} minute + Acum {0} de minute + + + + secundă + acum + + Peste {0} secundă + Peste {0} secunde + Peste {0} de secunde + + + Acum {0} secundă + Acum {0} secunde + Acum {0} de secunde + + + + fus orar + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Ora din {0} + Ora de vară din {0} + Ora standard din {0} + {1} ({0}) + + Oraș necunoscut + + + Tirana + + + Erevan + + + Showa + + + Dumont d’Urville + + + Viena + + + Dacca + + + Bruxelles + + + Saint Barthélemy + + + Atikokan + + + St. John’s + + + Zürich + + + Insula Paștelui + + + Kaxgar + + + Capul Verde + + + Curaçao + + + Insula Crăciunului + + + Praga + + + Copenhaga + + + Alger + + + Asmara + + + Canare + + + Addis Abeba + + + Chuuk + + + Pohnpei + + + Faroe + + + + Ora de vară britanică + + Londra + + + Nuuk + + + Ittoqqortoormiit + + + Guadelupa + + + Atena + + + Georgia de Sud + + + Budapesta + + + + Ora de vară a Irlandei + + + + Ierusalim + + + Insula Man + + + Calcutta + + + Bagdad + + + Teheran + + + Roma + + + Tokio + + + Bișkek + + + Comore + + + St. Kitts + + + Phenian + + + Seul + + + Kuweit + + + Aktau + + + Uralsk + + + Aktobe + + + Kyzylorda + + + Almatî + + + St. Lucia + + + Luxemburg + + + Chișinău + + + Yangon + + + Ulan Bator + + + Macao + + + Martinica + + + Maldive + + + Kathmandu + + + Marchize + + + Varșovia + + + Insula Pitcairn + + + Azore + + + Lisabona + + + Asunción + + + Réunion + + + București + + + Belgrad + + + Moscova + + + Ekaterinburg + + + Novokuznețk + + + Krasnoiarsk + + + Irkuțk + + + Yakuțk + + + Sahalin + + + Kamciatka + + + Anadir + + + Riyad + + + Sf. Elena + + + São Tomé + + + Lower Prince's Quarter + + + Damasc + + + N'Djamena + + + Dușanbe + + + Așgabat + + + Ujhorod + + + Zaporoje + + + Beulah, Dakota de Nord + + + New Salem, Dakota de Nord + + + Centru, Dakota de Nord + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Tașkent + + + St. Vincent + + + St. Thomas + + + Ho Și Min + + + + Ora Acre + Ora standard Acre + Ora de vară Acre + + + + + Ora Afganistanului + + + + + Ora Africii Centrale + + + + + Ora Africii Orientale + + + + + Ora Africii Meridionale + + + + + Ora Africii Occidentale + Ora standard a Africii Occidentale + Ora de vară a Africii Occidentale + + + + + Ora din Alaska + Ora standard din Alaska + Ora de vară din Alaska + + + + + Ora Almaty + Ora standard Almaty + Ora de vară Almaty + + + + + Ora Amazonului + Ora standard a Amazonului + Ora de vară a Amazonului + + + + + Ora centrală nord-americană + Ora standard centrală nord-americană + Ora de vară centrală nord-americană + + + + + Ora orientală nord-americană + Ora standard orientală nord-americană + Ora de vară orientală nord-americană + + + + + Ora zonei montane nord-americane + Ora standard în zona montană nord-americană + Ora de vară în zona montană nord-americană + + + + + Ora zonei Pacific nord-americane + Ora standard în zona Pacific nord-americană + Ora de vară în zona Pacific nord-americană + + + + + Ora din Anadyr + Ora standard din Anadyr + Ora de vară din Anadyr + + + + + Ora Aqtau + Ora standard Aqtau + Ora de vară a zonei Aqtau + + + + + Ora Aqtobe + Ora standard Aqtobe + Ora de vară a zonei Aqtobe + + + + + Ora arabă + Ora standard arabă + Ora de vară arabă + + + + + Ora Argentinei + Ora standard a Argentinei + Ora de vară a Argentinei + + + + + Ora Argentinei Occidentale + Ora standard a Argentinei Occidentale + Ora de vară a Argentinei Occidentale + + + + + Ora Armeniei + Ora standard a Armeniei + Ora de vară a Armeniei + + + + + Ora zonei Atlantic nord-americane + Ora standard în zona Atlantic nord-americană + Ora de vară în zona Atlantic nord-americană + + + + + Ora Australiei Centrale + Ora standard a Australiei Centrale + Ora de vară a Australiei Centrale + + + + + Ora Australiei Central Occidentale + Ora standard a Australiei Central Occidentale + Ora de vară a Australiei Central Occidentale + + + + + Ora Australiei Orientale + Ora standard a Australiei Orientale + Ora de vară a Australiei Orientale + + + + + Ora Australiei Occidentale + Ora standard a Australiei Occidentale + Ora de vară a Australiei Occidentale + + + + + Ora Azerbaidjanului + Ora standard a Azerbaidjanului + Ora de vară a Azerbaidjanului + + + + + Ora din Azore + Ora standard din Azore + Ora de vară din Azore + + + + + Ora din Bangladesh + Ora standard din Bangladesh + Ora de vară din Bangladesh + + + + + Ora Bhutanului + + + + + Ora Boliviei + + + + + Ora Brasiliei + Ora standard a Brasiliei + Ora de vară a Brasiliei + + + + + Ora din Brunei Darussalam + + + + + Ora din Capul Verde + Ora standard din Capul Verde + Ora de vară din Capul Verde + + + + + Ora din Chamorro + + + + + Ora din Chatham + Ora standard din Chatham + Ora de vară din Chatham + + + + + Ora din Chile + Ora standard din Chile + Ora de vară din Chile + + + + + Ora Chinei + Ora standard a Chinei + Ora de vară a Chinei + + + + + Ora din Choibalsan + Ora standard din Choibalsan + Ora de vară din Choibalsan + + + + + Ora din Insula Christmas + + + + + Ora Insulelor Cocos + + + + + Ora Columbiei + Ora standard a Columbiei + Ora de vară a Columbiei + + + + + Ora Insulelor Cook + Ora standard a Insulelor Cook + Ora de vară a Insulelor Cook + + + + + Ora Cubei + Ora standard a Cubei + Ora de vară a Cubei + + + + + Ora din Davis + + + + + Ora din Dumont-d'Urville + + + + + Ora Timorului de Est + + + + + Ora din Insula Paștelui + Ora standard din Insula Paștelui + Ora de vară din Insula Paștelui + + + + + Ora Ecuadorului + + + + + Ora Europei Centrale + Ora standard a Europei Centrale + Ora de vară a Europei Centrale + + + CET + CET + CEST + + + + + Ora Europei de Est + Ora standard a Europei de Est + Ora de vară a Europei de Est + + + EET + EET + EEST + + + + + Ora Europei de Vest + Ora standard a Europei de Vest + Ora de vară a Europei de Vest + + + WET + WET + WEST + + + + + Ora din Insulele Falkland + Ora standard din Insulele Falkland + Ora de vară din Insulele Falkland + + + + + Ora din Fiji + Ora standard din Fiji + Ora de vară din Fiji + + + + + Ora Guianei Franceze + + + + + Ora din Teritoriile Australe și Antarctice Franceze + + + + + Ora din Galapagos + + + + + Ora din Gambier + + + + + Ora Georgiei + Ora standard a Georgiei + Ora de vară a Georgiei + + + + + Ora Insulelor Gilbert + + + + + Ora de Greenwhich + + + GMT + + + + + Ora Groenlandei orientale + Ora standard a Groenlandei orientale + Ora de vară a Groenlandei orientale + + + + + Ora Groenlandei occidentale + Ora standard a Groenlandei occidentale + Ora de vară a Groenlandei occidentale + + + + + Ora standard a Golfului + + + + + Ora din Guyana + + + + + Ora din Hawaii-Aleutine + Ora standard din Hawaii-Aleutine + Ora de vară din Hawaii-Aleutine + + + + + Ora din Hong Kong + Ora standard din Hong Kong + Ora de vară din Hong Kong + + + + + Ora din Hovd + Ora standard din Hovd + Ora de vară din Hovd + + + + + Ora Indiei + + + + + Ora Oceanului Indian + + + + + Ora Indochinei + + + + + Ora Indoneziei Centrale + + + + + Ora Indoneziei de Est + + + + + Ora Indoneziei de Vest + + + + + Ora Iranului + Ora standard a Iranului + Ora de vară a Iranului + + + + + Ora din Irkuțk + Ora standard din Irkuțk + Ora de vară din Irkuțk + + + + + Ora Israelului + Ora standard a Israelului + Ora de vară a Israelului + + + + + Ora Japoniei + Ora standard a Japoniei + Ora de vară a Japoniei + + + + + Ora din Petropavlovsk-Kamciațki + Ora standard din Petropavlovsk-Kamciațki + Ora de vară din Petropavlovsk-Kamciațki + + + + + Ora din Kazahstanul de Est + + + + + Ora din Kazahstanul de Vest + + + + + Ora Coreei + Ora standard a Coreei + Ora de vară a Coreei + + + + + Ora din Kosrae + + + + + Ora din Krasnoiarsk + Ora standard din Krasnoiarsk + Ora de vară din Krasnoiarsk + + + + + Ora din Kârgâzstan + + + + + Ora din Insulele Line + + + + + Ora din Lord Howe + Ora standard din Lord Howe + Ora de vară din Lord Howe + + + + + Ora din Macquarie + + + + + Ora din Magadan + Ora standard din Magadan + Ora de vară din Magadan + + + + + Ora din Malaysia + + + + + Ora din Maldive + + + + + Ora Insulelor Marchize + + + + + Ora Insulelor Marshall + + + + + Ora din Mauritius + Ora standard din Mauritius + Ora de vară din Mauritius + + + + + Ora din Mawson + + + + + Ora din Ulan Bator + Ora standard din Ulan Bator + Ora de vară din Ulan Bator + + + + + Ora Moscovei + Ora standard a Moscovei + Ora de vară a Moscovei + + + + + Ora Myanmarului + + + + + Ora din Nauru + + + + + Ora Nepalului + + + + + Ora Noii Caledonii + Ora standard a Noii Caledonii + Ora de vară a Noii Caledonii + + + + + Ora Noii Zeelande + Ora standard a Noii Zeelande + Ora de vară a Noii Zeelande + + + + + Ora din Newfoundland + Ora standard din Newfoundland + Ora de vară din Newfoundland + + + + + Ora din Niue + + + + + Ora Insulelor Norfolk + + + + + Ora din Fernando de Noronha + Ora standard din Fernando de Noronha + Ora de vară din Fernando de Noronha + + + + + Ora din Novosibirsk + Ora standard din Novosibirsk + Ora de vară din Novosibirsk + + + + + Ora din Omsk + Ora standard din Omsk + Ora de vară din Omsk + + + + + Ora Pakistanului + Ora standard a Pakistanului + Ora de vară a Pakistanului + + + + + Ora din Palau + + + + + Ora din Papua Noua Guinee + + + + + Ora din Paraguay + Ora standard din Paraguay + Ora de vară din Paraguay + + + + + Ora din Peru + Ora standard din Peru + Ora de vară din Peru + + + + + Ora din Filipine + Ora standard din Filipine + Ora de vară din Filipine + + + + + Ora Insulelor Phoenix + + + + + Ora din Saint-Pierre și Miquelon + Ora standard din Saint-Pierre și Miquelon + Ora de vară din Saint-Pierre și Miquelon + + + + + Ora din Pitcairn + + + + + Ora din Ponape + + + + + Ora din Reunion + + + + + Ora din Rothera + + + + + Ora din Sahalin + Ora standard din Sahalin + Ora de vară din Sahalin + + + + + Ora din Samara + Ora standard din Samara + Ora de vară din Samara + + + + + Ora din Samoa + Ora standard din Samoa + Ora de vară din Samoa + + + + + Ora din Seychelles + + + + + Ora din Singapore + + + + + Ora Insulelor Solomon + + + + + Ora Georgiei de Sud + + + + + Ora Surinamului + + + + + Ora din Syowa + + + + + Ora din Tahiti + + + + + Ora din Taipei + Ora standard din Taipei + Ora de vară din Taipei + + + + + Ora din Tadjikistan + + + + + Ora din Tokelau + + + + + Ora din Tonga + Ora standard din Tonga + Ora de vară din Tonga + + + + + Ora din Chuuk + + + + + Ora din Turkmenistan + Ora standard din Turkmenistan + Ora de vară din Turkmenistan + + + + + Ora din Tuvalu + + + + + Ora Uruguayului + Ora standard a Uruguayului + Ora de vară a Uruguayului + + + + + Ora din Uzbekistan + Ora standard din Uzbekistan + Ora de vară din Uzbekistan + + + + + Ora din Vanuatu + Ora standard din Vanuatu + Ora de vară din Vanuatu + + + + + Ora Venezuelei + + + + + Ora din Vladivostok + Ora standard din Vladivostok + Ora de vară din Vladivostok + + + + + Ora din Volgograd + Ora standard din Volgograd + Ora de vară din Volgograd + + + + + Ora din Vostok + + + + + Ora Insulei Wake + + + + + Ora din Wallis și Futuna + + + + + Ora din Yakuțk + Ora standard din Yakuțk + Ora de vară din Yakuțk + + + + + Ora din Ekaterinburg + Ora standard din Ekaterinburg + Ora de vară din Ekaterinburg + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mie + 0 mii + 0 de mii + 00 mie + 00 mii + 00 de mii + 000 mie + 000 mii + 000 de mii + 0 milion + 0 milioane + 0 de milioane + 00 milion + 00 milioane + 00 de milioane + 000 milion + 000 milioane + 000 de milioane + 0 miliard + 0 miliarde + 0 de miliarde + 00 miliard + 00 miliarde + 00 de miliarde + 000 miliard + 000 miliarde + 000 de miliarde + 0 trilion + 0 trilioane + 0 de trilioane + 00 trilion + 00 trilioane + 00 de trilioane + 000 trilion + 000 trilioane + 000 de trilioane + + + + + 0 K + 0 K + 0 K + 00 K + 00 K + 00 K + 000 K + 000 K + 000 K + 0 mil'.' + 0 mil'.' + 0 mil'.' + 00 mil'.' + 00 mil'.' + 00 mil'.' + 000 mil'.' + 000 mil'.' + 000 mil'.' + 0 mld'.' + 0 mld'.' + 0 mld'.' + 00 mld'.' + 00 mld'.' + 00 mld'.' + 000 mld'.' + 000 mld'.' + 000 mld'.' + 0 tril'.' + 0 tril'.' + 0 tril'.' + 00 tril'.' + 00 tril'.' + 00 tril'.' + 000 tril'.' + 000 tril'.' + 000 tril'.' + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + {0} {1} + + + + pesetă andorrană + pesetă andorrană + pesete andorrane + pesete andorrane + + + dirham din Emiratele Arabe Unite + dirham din Emiratele Arabe Unite + dirhami din Emiratele Arabe Unite + dirhami Emiratele Arabe Unite + + + afgani afgan + afgani afgan + afgani afgani + afgani afgani + + + leka albanez + leka albanez + leka albanezi + leka albanezi + + + dram armenesc + dram armenesc + drami armenești + drami armenești + + + gulden din Antilele Olandeze + gulden din Antilele Olandeze + guldeni din Antilele Olandeze + guldeni Antilele Olandeze + + + kwanza angoleză + kwanza angoleză + kwanze angoleze + kwanze angoleze + + + peso argentinian (1983–1985) + peso argentinian (1983–1985) + pesos argentinieni (1983–1985) + pesos argentinieni (1983–1985) + + + peso argentinian + peso argentinian + pesos argentinieni + pesos argentinieni + + + șiling austriac + șiling austriac + șilingi austrieci + șilingi austrieci + + + dolar australian + dolar australien + dolari australieni + dolari australieni + AUD + + + florin din Aruba + florin Aruba + florini Aruba + florini Aruba + + + manat azer (1993–2006) + + + manat azer + manat azer + manați azeri + manați Azerbaidjan + + + dinar Bosnia-Herțegovina (1992–1994) + dinar Bosnia-Herțegovina (1992–1994) + dinari Bosnia-Herțegovina + dinari Bosnia-Herțegovina (1992–1994) + + + marcă convertibilă bosniacă + marcă convertibilă bosniacă + mărci convertibile bosniace + mărci convertibile bosniace + + + dolar Barbados + dolar Barbados + dolari Barbados + dolari Barbados + + + taka din Bangladesh + taka din Bangladesh + taka din Bangladesh + taka din Bangladesh + + + franc belgian (convertibil) + franc belgian (convertibil) + franci belgieni (convertibili) + franci belgieni (convertibili) + + + franc belgian + franc belgian + franci belgieni + franci belgieni + + + franc belgian (financiar) + franc belgian (financiar) + franci belgieni (financiari) + franci belgieni (financiari) + + + leva bulgărească + leva bulgărească + leva bulgărești noi + leva bulgărești noi + + + dinar din Bahrain + dinar din Bahrain + dinari din Bahrain + dinari din Bahrain + + + franc burundez + franc burundez + franci burundezi + franci Burundi + + + dolar din Bermuda + dolar din Bermuda + dolari din Bermuda + dolari Bermude + + + dolar din Brunei + dolar din Brunei + dolari din Brunei + dolari Brunei + + + boliviano bolivian + boliviano bolivian + boliviano bolivieni + bolivieni bolivieni + + + peso bolivian + peso bolivian + pesos bolivieni + pesos bolivieni + + + mvdol bolivian + + + cruzeiro brazilian (1990–1993) + + + real brazilian + real brazilian + reali brazilieni + reali brazilieni + BRL + + + cruzeiro brazilian (1993–1994) + + + dolar din Bahamas + dolar din Bahamas + dolari din Bahamas + dolari Bahamas + + + ngultrum din Bhutan + ngultrum din Bhutan + ngultrum din Bhutan + ngultrum din Bhutan + + + kyat birman + + + pula Botswana + pulă Botswana + pule Botswana + pule Botswana + + + rublă belarusă + rublă belarusă + ruble belaruse + ruble bieloruse + + + dolar din Belize + dolar din Belize + dolari din Belize + dolari Belize + + + dolar canadian + dolar canadian + dolari canadieni + dolari canadieni + CAD + + + franc congolez + franc congolez + franci congolezi + franci congolezi + + + franc elvețian + franc elvețian + franci elvețieni + franci elvețieni + + + peso chilian + peso chilian + pesos chilieni + pesos chilieni + + + yuan renminbi chinezesc + yuan renminbi chinezesc + yuani renminbi chinezești + yuani renminbi chinezești + CNY + + + peso columbian + peso columbian + pesos columbieni + pesos columbieni + + + colón costarican + colón costarican + colóni costaricani + coloni costaricani + + + dinar Serbia și Muntenegru (2002–2006) + dinar Serbia și Muntenegru (2002–2006) + dinari Serbia și Muntenegru (2002–2006) + dinari Serbia și Muntenegru (2002–2006) + + + peso cubanez convertibil + peso cubanez convertibil + pesos cubanezi convertibili + pesos cubanezi convertibili + + + peso cubanez + peso cubanez + pesos cubanezi + pesos cubanezi + + + escudo din Capul Verde + escudo din Capul Verde + escudo din Capul Verde + escudo Capul Verde + + + liră cipriotă + liră cipriotă + lire cipriote + lire cipriote + + + coroană cehă + coroană cehă + coroane cehe + coroane cehe + + + marcă est-germană + marcă est-germană + mărci est-germane + mărci est-germane + + + marcă germană + marcă germană + mărci germane + mărci germane + + + franc djiboutian + franc djiboutian + franci djiboutieni + franci Djibouti + + + coroană daneză + coroană daneză + coroane daneze + coroane daneze + + + peso dominican + peso dominican + pesos dominicani + pesos dominicani + + + dinar algerian + dinar algerian + dinari algerieni + dinari algerieni + + + sucre Ecuador + + + coroană estoniană + coroană estoniană + coroane estoniene + coroane estoniene + + + liră egipteană + liră egipteană + lire egiptene + lire egiptene + + + nakfa eritreeană + nakfa eritreeană + nakfa eritreene + nakfa eritreene + + + peseta spaniolă (cont A) + + + peseta spaniolă (cont convertibil) + + + pesetă spaniolă + pesetă spaniolă + pesete spaniole + pesete spaniole + + + birr etiopian + birr etiopian + birri etiopieni + birr Etiopia + + + euro + euro + euro + euro + + + marcă finlandeză + mărci finlandeze + mărci finlandeze + mărci finlandeze + + + dolar fijian + dolar fijian + dolari fijieni + dolari Fiji + + + liră din Insulele Falkland + liră din Insulele Falkland + lire din Insulele Falkland + lire Insulele Falkland + + + franc francez + franc francez + franci francezi + franci francezi + + + liră sterlină + liră sterlină + lire sterline + lire sterline + GBP + + + lari georgian + lari georgian + lari georgieni + lari Georgia + + + cedi Ghana (1979–2007) + + + cedi ghanez + cedi ghanez + cedi ghanezi + cedi ghanezi + + + liră din Gibraltar + liră din Gibraltar + lire din Gibraltar + lire Gibraltar + + + dalasi din Gambia + dalasi din Gambia + dalasi din Gambia + dalasi din Gambia + + + franc guineean + franc guineean + franci guineeni + franci Guineea + + + drahmă grecească + drahmă grecească + drahme grecești + drahme grecești + + + quetzal guatemalez + quetzal guatemalez + quetzali guatemalezi + quetzali guatemalezi + + + peso Guineea-Bissau + peso Guineea-Bissau + pesos Guineea-Bissau + pesos Guineea-Bissau + + + dolar guyanez + dolar guyanez + dolari guyanezi + dolari Guyana + + + dolar din Hong Kong + dolar din Hong Kong + dolari din Hong Kong + dolari Hong Kong + HKD + + + lempira honduriană + lempiră honduriană + lempire honduriene + lempire honduriene + + + dinar croat + dinar croat + dinari croați + dinari croați + + + kuna croată + kuna croată + kune croate + kune croate + + + gourde din Haiti + gourde din Haiti + gourde din Haiti + gourde din Haiti + + + forint maghiar + forint maghiar + forinți maghiari + forinți maghiari + + + rupie indoneziană + rupie indoneziană + rupii indoneziene + rupii indoneziene + + + liră irlandeză + liră irlandeză + lire irlandeze + lire irlandeze + + + liră israeliană + liră israeliană + lire israeliene + lire israeliene + + + șechel israelian nou + șechel israelian nou + șecheli israelieni noi + șecheli israelieni noi + ILS + + + rupie indiană + rupie indiană + rupii indiene + rupii indiene + INR + + + dinar irakian + dinar irakian + dinari irakieni + dinari irakieni + + + rial iranian + rial iranian + riali iranieni + riali iranieni + + + coroană islandeză + coroană islandeză + coroane islandeze + coroane islandeze + + + liră italiană + liră italiană + lire italiene + lire italiene + + + dolar jamaican + dolar jamaican + dolari jamaicani + dolari jamaicani + + + dinar iordanian + dinar iordanian + dinari iordanieni + dinari iordanieni + + + yen japonez + yen japonez + yeni japonezi + yeni japonezi + JPY + + + șiling kenyan + șiling kenyan + șilingi kenyeni + șilingi kenyeni + + + som kârgâz + som kârgâz + somi kârgâzi + somi kârgâzi + + + riel cambodgian + riel cambodgian + rieli cambodgieni + rieli cambodgieni + + + franc comorian + franc comorian + franci comorieni + franci comorieni + + + won nord-coreean + won nord-coreean + woni nord-coreeni + woni nord-coreeni + + + won sud-coreean + won sud-coreean + woni sud-coreeni + woni sud-coreeni + KRW + + + dinar kuweitian + dinar kuweitian + dinari kuweitieni + dinari kuweitieni + + + dolar din Insulele Cayman + dolar din Insulele Cayman + dolari din Insulele Cayman + dolari Insulele Cayman + + + tenge kazahă + tenge kazahă + tenge kazahe + tenge kazahe + + + kip din Laos + kip din Laos + kip din Laos + kip din Laos + + + liră libaneză + liră libaneză + lire libaneze + lire libaneze + + + rupie din Sri Lanka + rupie din Sri Lanka + rupii din Sri Lanka + rupii Sri Lanka + + + dolar liberian + dolar liberian + dolari liberieni + dolari liberieni + + + loti lesothian + + + litu lituanian + litas lituaniană + lite lituaniene + lite lituaniene + + + franc convertibil luxemburghez + franc convertibil luxemburghez + franci convertibili luxemburghezi + franci convertibili luxemburghezi + + + franc luxemburghez + franc luxemburghez + franci luxemburghezi + franci luxemburghezi + + + franc financiar luxemburghez + franc financiar luxemburghez + franci financiari luxemburghezi + franci financiari luxemburghezi + + + lats Letonia + lats leton + lats letoni + lats letoni + + + rublă Letonia + rublă Letonia + ruble Letonia + ruble Letonia + + + dinar libian + dinar libian + dinari libieni + dinari libieni + + + dirham marocan + dirham marocan + dirhami marocani + dirhami marocani + + + franc marocan + franc marocan + franci marocani + franci marocani + + + leu moldovenesc + leu moldovenesc + lei moldovenești + lei moldovenești + + + ariary malgaș + ariary malgaș + ariary malgași + ariary malgași + + + franc Madagascar + franc Madagascar + franci Madagascar + franci Madagascar + + + dinar macedonean + dinar macedonean + dinari macedoneni + dinari macedoneni + + + franc Mali + franc Mali + franci Mali + franci Mali + + + kyat Myanmar + kyat Myanmar + kyați Myanmar + kyați Myanmar + + + tugrik mongol + tugrik mongol + tugrici mongoli + tugrici mongoli + + + pataca din Macao + pataca din Macao + pataca din Macao + pataca din Macao + + + ouguiya mauritană + ouguiya mauritană + ouguiya mauritane + ouguiya mauritane + + + liră malteză + liră malteză + lire malteze + lire malteze + + + rupie mauritiană + rupie mauritiană + rupii mauritiene + rupii mauritiene + + + rufiyaa maldiviană + rufiyaa maldiviană + rufiyaa maldiviene + rufiyaa maldiviene + + + kwacha malawiană + kwacha malawiană + kwache malawiene + kwache malawiene + + + peso mexican + peso mexican + pesos mexicani + pesos mexicani + MXN + + + peso mexican de argint (1861–1992) + peso mexican de argint (1861–1992) + pesos mexicani de argint (1861–1992 + pesos mexicani de argint (1861–1992) + + + ringgit malaiezian + ringgit malaiezian + ringgit malaiezieni + ringgit malaiezieni + + + escudo Mozambic + + + metical Mozambic vechi + + + metical mozambican + metical mozambican + metical mozambicani + metical mozambicani + + + dolar namibian + dolar namibian + dolari namibieni + dolari namibieni + + + naira nigeriană + naira nigeriană + naire nigeriene + naire nigeriene + + + cordoba nicaraguană (1988–1991) + + + cordoba nicaraguană + cordoba nicaraguană + cordobe nicaraguane + cordobe nicaraguane + + + gulden olandez + gulden olandez + guldeni olandezi + guldeni olandezi + + + coroană norvegiană + coroană norvegiană + coroane norvegiene + coroane norvegiene + + + rupie nepaleză + rupie nepaleză + rupii nepaleze + rupii nepaleze + + + dolar neozeelandez + dolar neozeelandez + dolari neozeelandezi + dolari neozeelandezi + NZD + + + rial omanez + rial omanez + riali omanezi + riyali Oman + + + balboa panameză + balboa panameză + balboa panameze + balboa panameze + + + inti peruvian + + + sol nou peruvian + sol nou peruvian + soli noi peruvieni + soli noi Peru + + + sol peruvian (1863–1965) + sol peruvian (1863–1965) + soli Peru (1863–1965) + soli Peru (1863–1965) + + + kina din Papua-Noua Guinee + kina din Papua-Noua Guinee + kina din Papua-Noua Guinee + kina din Papua-Noua Guinee + + + peso filipinez + peso filipinez + pesos filipinezi + pesos filipinezi + + + rupie pakistaneză + rupie pakistaneză + rupii pakistaneze + rupii pakistaneze + + + zlot polonez + zlot polonez + zloți polonezi + zloți noi polonezi + + + zlot polonez (1950–1995) + zlot polonez (1950–1995) + zloți polonezi (1950–1995) + zloți polonezi (1950–1995) + + + guarani paraguayan + guarani paraguayan + guarani paraguayeni + guarani Paraguay + + + rial qatarian + rial qatarian + riali qatarieni + riyali Qatar + + + dolar rhodesian + dolar rhodesian + dolari rhodesieni + dolari rhodesieni + + + leu românesc (1952–2006) + leu românesc (1952–2006) + lei românești (1952–2006) + lei românești (1952–2006) + + + leu românesc + leu românesc + lei românești + lei românești + + + dinar sârbesc + dinar sârbesc + dinari sârbești + dinari sârbești + + + rublă rusească + rublă rusească + ruble rusești + ruble rusești + + + franc rwandez + franc rwandez + franci rwandezi + franci Rwanda + + + rial saudit + rial saudit + riali saudiți + riyali Arabia Saudită + + + dolar Insulele Solomon + dolar Insulele Solomon + dolari Insulele Solomon + dolari Insulele Solomon + + + rupie din Seychelles + rupie din Seychelles + rupii din Seychelles + rupii Seychelles + + + dinar sudanez + dinar sudanez + dinari sudanezi + dinari sudanezi + + + liră sudaneză + liră sudaneză + lire sudaneze + lire Sudan + + + liră sudaneză (1957–1998) + liră sudaneză (1957–1998) + lire sudaneze (1957–1998) + lire sudaneze (1957–1998) + + + coroană suedeză + coroană suedeză + coroane suedeze + coroane suedeze + + + dolar Singapore + dolar Singapore + dolari Singapore + dolari Singapore + + + liră Insula Sf. Elena + liră Insula Sf. Elena + lire Insula Sf. Elena + lire Insula Sf. Elena + + + tolar sloven + tolar sloven + tolari sloveni + tolari sloveni + + + coroană slovacă + coroană slovacă + coroane slovace + coroane slovace + + + leone Sierra Leone + leone Sierra Leone + leoni Sierra Leone + lei Sierra Leone + + + șiling somalez + șiling somalez + șilingi somalezi + șilingi somalezi + + + dolar surinamez + dolar surinamez + dolari surinamezi + dolari Surinam + + + gulden Surinam + gulden Surinam + guldeni Surinam + guldeni Surinam + + + liră sud-sudaneză + liră sud-sudaneză + lire sud-sudaneze + lire sud-sudaneze + + + dobra Sao Tome și Principe + dobra Sao Tome și Principe + dobre Sao Tome și Principe + dobre Sao Tome și Principe + + + rublă sovietică + rublă sovietică + ruble sovietice + ruble sovietice + + + colon El Salvador + colon El Salvador + coloni El Salvador + coloni El Salvador + + + liră siriană + liră siriană + lire siriene + lire siriene + + + lilangeni din Swaziland + lilangeni din Swaziland + emalangeni din Swaziland + emalangeni din Swaziland + + + baht thailandez + baht thailandez + bahți thailandezi + bahți thailandezi + THB + + + rublă Tadjikistan + rublă Tadjikistan + ruble Tadjikistan + ruble Tadjikistan + + + somoni tadjic + somoni tajdic + somoni Tadjikistan + somoni Tadjikistan + + + manat turkmen (1993–2009) + manat turkmen (1993–2009) + manat turkmeni (1993–2009) + manat turkmeni (1993–2009) + + + manat turkmen + manat turkmen + manat turkmeni + manat turkmeni + + + dinar tunisian + dinar tunisian + dinari tunisieni + dinari tunisieni + + + pa’anga tongană + pa’anga tongană + pa’anga tongane + pa’anga tongane + + + liră turcească (1922–2005) + liră turcească (1922–2005) + liră turcească (1922–2005) + lire turcești (1922–2005) + + + liră turcească + liră turcească + lire turcești + lire turcești + + + dolar din Trinidad-Tobago + dolar din Trinidad-Tobago + dolari din Trinidad-Tobago + dolari Trinidad-Tobago + + + dolar nou din Taiwan + dolar nou din Taiwan + dolari noi din Taiwan + dolari noi Taiwan + TWD + + + șiling tanzanian + șiling tanzanian + șilingi tanzanieni + șilingi tanzanieni + + + hryvna ucraineană + hryvna ucrainiană + hryvna ucrainiene + hryvna ucrainiene + + + carboavă ucraineană + carboavă ucraineană + carboave ucrainiene + carboave ucrainiene + + + șiling ugandez (1966–1987) + șiling ugandez (1966–1987) + șilingi ugandezi (1966–1987) + șilingi ugandezi (1966–1987) + + + șiling ugandez + șiling ugandez + șilingi ugandezi + șilingi ugandezi + + + dolar american + dolar american + dolari americani + dolari americani + USD + + + dolar american (ziua următoare) + dolar american (ziua următoare) + dolari americani (ziua următoare) + dolari americani (ziua următoare) + + + dolar american (aceeași zi) + dolar american (aceeași zi) + dolari americani (aceeași zi) + dolari americani (aceeași zi) + + + peso Uruguay (1975–1993) + peso Uruguay (1975–1993) + pesos Uruguay (1975–1993) + pesos Uruguay (1975–1993) + + + peso uruguayan + peso uruguayan + pesos uruguayeni + pesos noi Uruguay + + + sum Uzbekistan + sum Uzbekistan + sum Uzbekistan + sum Uzbekistan + + + bolivar Venezuela (1871–2008) + bolivar Venezuela (1871–2008) + bolivari Venezuela (1871–2008) + bolivari Venezuela (1871–2008) + + + bolivar venezuelean + bolivar venezuelean + bolivari venezueleni + bolivari venezueleni + + + dong vietnamez + dong vietnamez + dongi vietnamezi + dongi vietnamezi + VND + + + vatu din Vanuatu + vatu din Vanuatu + vatu din Vanuatu + vatu din Vanuatu + + + tala samoană + tala samoană + tala samoane + tala samoană + + + franc Comunitatea Financiară + franc CFA BEAC + franci Comunitatea Financiară + franci Comunitatea Financiară + + + argint + + + aur + + + unitate compusă europeană + + + unitate monetară europeană + + + unitate de cont europeană (XBC) + + + unitate de cont europeană (XBD) + + + dolar Caraibele de Est + dolar est-caraib + dolari Caraibele de Est + dolari Caraibele de Est + XCD + + + drepturi speciale de tragere + + + unitate de monedă europeană + + + franc francez de aur + franc francez de aur + franci francezi de aur + franci francezi de aur + + + franc UIC francez + + + franc CFA BCEAO + franc CFA BCEAO + franci CFA BCEAO + franci CFA BCEAO + CFA + + + paladiu + + + franc CFP + franc CFP + franci CFP + franci CFP + + + platină + + + cod monetar de test + + + monedă necunoscută + (unitate monetară necunoscută) + monede necunoscute sau nevalide + monede necunoscute sau nevalide + + + dinar Yemen + dinar Yemen + dinari Yemen + dinari Yemen + + + rial yemenit + rial yemenit + riali yemeniți + riyali Yemen + + + dinar iugoslav greu + dinar iugoslav greu + dinari iugoslavi grei + dinari iugoslavi grei + + + dinar iugoslav nou + dinar iugoslav nou + dinari iugoslavi noi + dinari iugoslavi noi + + + dinar iugoslav convertibil + dinar iugoslav convertibil + dinari iugoslavi convertibili + dinari iugoslavi convertibili + + + rand sud-african (financiar) + + + rand sud-african + rand sud-african + ranzi sud-africani + ranzi sud-africani + + + kwacha zambian (1968–2012) + kwacha zambiană (1968–2012) + kwache zambiene (1968–2012) + kwache zambiene (1968–2012) + + + kwacha zambian + kwacha zambian + kwache zambiene + kwache zambiene + + + zair nou + zair nou + zairi noi + zairi noi + + + dolar Zimbabwe (1980–2008) + dolar Zimbabwe (1980–2008) + dolari Zimbabwe (1980–2008) + dolari Zimbabwe (1980–2008) + + + dolar Zimbabwe (2009) + + + dolar Zimbabwe (2008) + + + + >{0} + {0} - {1} + + + + + + {0} pe {1} + + + {0} forță g + {0} forță g + {0} forță g + + + {0} minut + {0} minute + {0} de minute + + + {0} secundă + {0} secunde + {0} de secunde + + + {0} grad + {0} grade + {0} de grade + + + {0} acru + {0} acri + {0} de acri + + + {0} hectar + {0} hectare + {0} de hectare + + + {0} picior pătrat + {0} picioare pătrate + {0} picioare pătrate + + + {0} kilometru pătrat + {0} kilometri pătrați + {0} de kilometri pătrați + + + {0} metru pătrat + {0} metri pătrați + {0} de metri pătrați + + + {0} milă pătrată + {0} mile pătrate + {0} de mile pătrate + + + {0} zi + {0} zile + {0} de zile + + + {0} oră + {0} ore + {0} de ore + + + {0} milisecundă + {0} milisecunde + {0} de milisecunde + + + {0} minut + {0} minute + {0} de minute + + + {0} lună + {0} luni + {0} de luni + + + {0} secundă + {0} secunde + {0} de secunde + + + {0} săptămână + {0} săptămâni + {0} de săptămâni + + + {0} an + {0} ani + {0} de ani + + + {0} centimetru + {0} centimetri + {0} de centimetri + + + {0} picior + {0} picioare + {0} de picioare + + + {0} inch + {0} inchi + {0} de inchi + + + {0} kilometru + {0} kilometri + {0} de kilometri + + + {0} an lumină + {0} ani lumină + {0} de ani lumină + + + {0} metru + {0} metri + {0} de metri + + + {0} milă + {0} mile + {0} de mile + + + {0} milimetru + {0} milimetri + {0} de milimetri + + + {0} picometru + {0} picometri + {0} de picometri + + + {0} iard + {0} iarzi + {0} de iarzi + + + {0} gram + {0} grame + {0} de grame + + + {0} kilogram + {0} kilograme + {0} de kilograme + + + {0} uncie + {0} uncii + {0} de uncii + + + {0} livră + {0} livre + {0} de livre + + + {0} cal putere + {0} cai putere + {0} de cai putere + + + {0} kilowatt + {0} kilowați + {0} de kilowați + + + {0} watt + {0} wați + {0} de wați + + + {0} hectopascal + {0} hectopascali + {0} de hectopascali + + + {0} inch coloană de mercur + {0} inchi coloană de mercur + {0} de inchi coloană de mercur + + + {0} milibar + {0} milibari + {0} de milibari + + + {0} kilometru pe oră + {0} kilometri pe oră + {0} de kilometri pe oră + + + {0} metru pe secundă + {0} metri pe secundă + {0} de metri pe secundă + + + {0} milă pe oră + {0} mile pe oră + {0} de mile pe oră + + + {0} grad Celsius + {0} grade Celsius + {0} de grade Celsius + + + {0} grad Fahrenheit + {0} grade Fahrenheit + {0} de grade Fahrenheit + + + {0} kilometru cub + {0} kilometri cubi + {0} de kilometri cubi + + + {0} milă cubică + {0} mile cubice + {0} de mile cubice + + + {0} litru + {0} litri + {0} de litri + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0} min. + {0} min. + {0} min. + + + {0} sec. + {0} sec. + {0} sec. + + + {0}° + {0}° + {0}° + + + {0} ac. + {0} ac. + {0} ac. + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} zi + {0} zile + {0} zile + + + {0} oră + {0} ore + {0} ore + + + {0} ms + {0} ms + {0} ms + + + {0} min. + {0} min. + {0} min. + + + {0} lună + {0} luni + {0} luni + + + {0} sec. + {0} sec. + {0} sec. + + + {0} săpt. + {0} săpt. + {0} săpt. + + + {0} an + {0} ani + {0} ani + + + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + + + {0} a.l. + {0} a.l. + {0} a.l. + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + + + {0} CP + {0} CP + {0} CP + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mb + {0} mb + {0} mb + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + {0} °C + + + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac. + {0} ac. + {0} ac. + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} z + {0} z + {0} z + + + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + + + {0} m + {0} m + {0} m + + + {0} l + {0} l + {0} l + + + {0} s + {0} s + {0} s + + + {0} săpt. + {0} săpt. + {0} săpt. + + + {0} a + {0} a + {0} a + + + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + + + {0} a.l. + {0} a.l. + {0} a.l. + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + + + {0} CP + {0} CP + {0} CP + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mb + {0} mb + {0} mb + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} și {1} + {0} și {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0} și {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + da:d + nu:n + + + + diff --git a/library/Zend/Locale/Data/ro_MD.xml b/library/Zend/Locale/Data/ro_MD.xml new file mode 100755 index 000000000..abeb5dd6f --- /dev/null +++ b/library/Zend/Locale/Data/ro_MD.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + L + + + + diff --git a/library/Zend/Locale/Data/ro_RO.xml b/library/Zend/Locale/Data/ro_RO.xml new file mode 100755 index 000000000..87aeea24c --- /dev/null +++ b/library/Zend/Locale/Data/ro_RO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/rof.xml b/library/Zend/Locale/Data/rof.xml new file mode 100755 index 000000000..f4aa3fc6c --- /dev/null +++ b/library/Zend/Locale/Data/rof.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakani + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kiingereza + Kihispania + Kiajemi + Kyifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kihorombo + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andoro + Falme za Kiarabu + Afuganistani + Antigua na Babuda + Anguila + Albania + Amenia + Antili za Uholanzi + Angolo + Ajentina + Samoa ya Marekani + Ostria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babado + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahamasi + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kaimai + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10 + M11 + M12 + + + Mweri wa kwanza + Mweri wa kaili + Mweri wa katatu + Mweri wa kaana + Mweri wa tanu + Mweri wa sita + Mweri wa saba + Mweri wa nane + Mweri wa tisa + Mweri wa ikumi + Mweri wa ikumi na moja + Mweri wa ikumi na mbili + + + + + K + K + K + K + T + S + S + N + T + I + I + I + + + + + + + Ijp + Ijt + Ijn + Ijtn + Alh + Iju + Ijm + + + Ijumapili + Ijumatatu + Ijumanne + Ijumatano + Alhamisi + Ijumaa + Ijumamosi + + + + + 2 + 3 + 4 + 5 + 6 + 7 + 1 + + + + + + + R1 + R2 + R3 + R4 + + + Robo ya kwanza + Robo ya kaili + Robo ya katatu + Robo ya kaana + + + + + + + kang'ama + kingoto + + + + + + Kabla ya Mayesu + Baada ya Mayesu + + + KM + BM + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Kacha + + + Muaka + + + Mweri + + + Iwiki + + + Mfiri + Hiyo + Linu + Ng'ama + + + Mfiri a iwiki + + + Nkwaya + + + Isaa + + + Dakika + + + Sekunde + + + Mfiri o saa + + + + + + + + ¤#,##0.00 + + + + + + heleri sa Falme za Kiarabu + + + heleri sa Angola + + + heleri sa Australia + + + heleri sa Bahareni + + + heleri sa Burundi + + + heleri sa Botswana + + + heleri sa Kanada + + + heleri sa Kongo + + + heleri sa Uswisi + + + heleri sa China + + + heleri sa Kepuvede + + + heleri sa Jibuti + + + heleri sa Aljeria + + + heleri sa Misri + + + heleri sa Eritrea + + + heleri sa Uhabeshi + + + yuro + + + heleri sa Uingereza + + + heleri sa Ghana + + + heleri sa Gambia + + + heleri sa Gine + + + heleri sa India + + + heleri sa Japani + + + heleri sa Kenya + + + heleri sa Komoro + + + heleri sa Liberia + + + heleri sa Lesoto + + + heleri sa Libya + + + heleri sa Moroko + + + heleri sa Bukini + + + heleri sa Moritania + + + heleri sa Morisi + + + heleri sa Malawi + + + heleri sa Msumbiji + + + heleri sa Namibia + + + heleri sa Nijeria + + + heleri sa Rwanda + + + heleri sa Saudia + + + heleri sa Shelisheli + + + heleri sa Sudani + + + heleri sa Santahelena + + + leoni + + + heleri sa Somalia + + + heleri sa Sao Tome na Principe + + + lilangeni + + + heleri sa Tunisia + + + heleri sa Tanzania + TSh + + + heleri sa Uganda + + + heleri sa Marekani + + + heleri sa CFA BEAC + + + heleri sa CFA BCEAO + + + heleri sa Afrika Kusini + + + heleri sa Zambia (1968–2012) + + + heleri sa Zambia + + + heleri sa Zimbabwe + + + + + + Yee:Y + Ehe:N + + + + diff --git a/library/Zend/Locale/Data/rof_TZ.xml b/library/Zend/Locale/Data/rof_TZ.xml new file mode 100755 index 000000000..e546109a4 --- /dev/null +++ b/library/Zend/Locale/Data/rof_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/root.xml b/library/Zend/Locale/Data/root.xml new file mode 100755 index 000000000..4eba7f9dd --- /dev/null +++ b/library/Zend/Locale/Data/root.xml @@ -0,0 +1,3771 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Metric + UK + US + + + {0} + {0} + {0} + + + + + left-to-right + top-to-bottom + + + + [] + [] + [\- , ; \: ! ? . ( ) \[ \] \{ \}] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + + + + + + + + + + + + + + + BE + + + + + + + + + + + + + + + + + + + + + + + + + + + M01 + M02 + M03 + M04 + M05 + M06 + M07 + M08 + M09 + M10 + M11 + M12 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + + + + + {0}bis + + + + + {0}bis + + + + + + + + {0}b + + + + + + + + + + + + + + + + + + + + + zi + chou + yin + mao + chen + si + wu + wei + shen + you + xu + hai + + + + + + + + + + + + + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + + + + + + + + + + + + + + + + + + + + + U MMMM d, EEEE + + + + + U MMMM d + + + + + U MMM d + + + + + + y-MM-dd + + + + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + U + U MMM + U MMM d + U MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + mm:ss + U + y-MM-dd + U + y-MM + y-MM-dd + y-MM-dd, E + U MMM + U MMM d + U MMM d, E + U QQQ + U QQQQ + + + {0} ({2}: {1}) + {0} {1} + {1} {0} + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} {1} + {0} ({2}: {1}) + {1} {0} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + U–U + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + + + U MMM–MMM + U MMM – U MMM + + + U MMM d–d + U MMM d – MMM d + U MMM d – U MMM d + + + U MMM d, E – MMM d, E + U MMM d, E – MMM d, E + U MMM d, E – U MMM d, E + + + U MMMM–MMMM + U MMMM – U MMMM + + + + + + + + + + + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + + + + + + + + + + + + + ERA0 + ERA1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + + + + + + + + + + + + + ERA0 + ERA1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERA0 + + + + + + + + + + + + + + + + + + + + + + + + + + M01 + M02 + M03 + M04 + M05 + M06 + M07 + M08 + M09 + M10 + M11 + M12 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + + + + + + + + + + ERA0 + ERA1 + + + + + + + + + G y MMMM d, EEEE + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y-MM-dd + + + + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + mm:ss + G y + G y + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} ({2}: {1}) + {0} {1} + {1} {0} + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} {1} + {0} ({2}: {1}) + {1} {0} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + G y–y + + + GGGGG y-MM – y-MM + GGGGG y-MM – y-MM + + + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + + + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + + + G y MMM–MMM + G y MMM – y MMM + + + G y MMM d–d + G y MMM d – MMM d + G y MMM d – y MMM d + + + G y MMM d, E – MMM d, E + G y MMM d, E – MMM d, E + G y MMM d, E – y MMM d, E + + + G y MMMM–MMMM + G y MMMM – y MMMM + + + + + + + + + + + + + + + M01 + M02 + M03 + M04 + M05 + M06 + M07 + M08 + M09 + M10 + M11 + M12 + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + + + + + + + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + + + + + + + + S + M + T + W + T + F + S + + + + + + + + + + + + + + + + + + + Q1 + Q2 + Q3 + Q4 + + + + + + + + 1 + 2 + 3 + 4 + + + + + + + + + + + + + a + n + p + + + AM + noon + PM + + + + + + + + + + + + BCE + CE + + + + + + + + + y MMMM d, EEEE + + + + + y MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + mm:ss + y + y-MM + y-MM-dd + y-MM-dd, E + y MMM + y MMM d + y MMM d, E + y QQQ + y QQQQ + + + {0} ({2}: {1}) + {0} {1} + {1} {0} + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} ({2}: {1}) + {0} {1} + {0} ({2}: {1}) + {1} {0} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + + + y MMM–MMM + y MMM – y MMM + + + y MMM d–d + y MMM d – MMM d + y MMM d – y MMM d + + + y MMM d, E – MMM d, E + y MMM d, E – MMM d, E + y MMM d, E – y MMM d, E + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + + + + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + + + + + + + + + + + + + + + + + AM + + + + + + + + + + + + + + + + + + + + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + + + + + + + + + + Saka + + + + + + + + + + + + + + + + + + + + Muh. + Saf. + Rab. I + Rab. II + Jum. I + Jum. II + Raj. + Sha. + Ram. + Shaw. + Dhuʻl-Q. + Dhuʻl-H. + + + + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rajab + Shaʻban + Ramadan + Shawwal + Dhuʻl-Qiʻdah + Dhuʻl-Hijjah + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + + + + + + + + + + AH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Taika (645-650) + Hakuchi (650-671) + Hakuhō (672-686) + Shuchō (686-701) + Taihō (701-704) + Keiun (704-708) + Wadō (708-715) + Reiki (715-717) + Yōrō (717-724) + Jinki (724-729) + Tempyō (729-749) + Tempyō-kampō (749-749) + Tempyō-shōhō (749-757) + Tempyō-hōji (757-765) + Temphō-jingo (765-767) + Jingo-keiun (767-770) + Hōki (770-780) + Ten-ō (781-782) + Enryaku (782-806) + Daidō (806-810) + Kōnin (810-824) + Tenchō (824-834) + Jōwa (834-848) + Kajō (848-851) + Ninju (851-854) + Saiko (854-857) + Tennan (857-859) + Jōgan (859-877) + Genkei (877-885) + Ninna (885-889) + Kampyō (889-898) + Shōtai (898-901) + Engi (901-923) + Enchō (923-931) + Shōhei (931-938) + Tengyō (938-947) + Tenryaku (947-957) + Tentoku (957-961) + Ōwa (961-964) + Kōhō (964-968) + Anna (968-970) + Tenroku (970-973) + Ten-en (973-976) + Jōgen (976-978) + Tengen (978-983) + Eikan (983-985) + Kanna (985-987) + Ei-en (987-989) + Eiso (989-990) + Shōryaku (990-995) + Chōtoku (995-999) + Chōhō (999-1004) + Kankō (1004-1012) + Chōwa (1012-1017) + Kannin (1017-1021) + Jian (1021-1024) + Manju (1024-1028) + Chōgen (1028-1037) + Chōryaku (1037-1040) + Chōkyū (1040-1044) + Kantoku (1044-1046) + Eishō (1046-1053) + Tengi (1053-1058) + Kōhei (1058-1065) + Jiryaku (1065-1069) + Enkyū (1069-1074) + Shōho (1074-1077) + Shōryaku (1077-1081) + Eiho (1081-1084) + Ōtoku (1084-1087) + Kanji (1087-1094) + Kaho (1094-1096) + Eichō (1096-1097) + Shōtoku (1097-1099) + Kōwa (1099-1104) + Chōji (1104-1106) + Kashō (1106-1108) + Tennin (1108-1110) + Ten-ei (1110-1113) + Eikyū (1113-1118) + Gen-ei (1118-1120) + Hoan (1120-1124) + Tenji (1124-1126) + Daiji (1126-1131) + Tenshō (1131-1132) + Chōshō (1132-1135) + Hoen (1135-1141) + Eiji (1141-1142) + Kōji (1142-1144) + Tenyō (1144-1145) + Kyūan (1145-1151) + Ninpei (1151-1154) + Kyūju (1154-1156) + Hogen (1156-1159) + Heiji (1159-1160) + Eiryaku (1160-1161) + Ōho (1161-1163) + Chōkan (1163-1165) + Eiman (1165-1166) + Nin-an (1166-1169) + Kaō (1169-1171) + Shōan (1171-1175) + Angen (1175-1177) + Jishō (1177-1181) + Yōwa (1181-1182) + Juei (1182-1184) + Genryuku (1184-1185) + Bunji (1185-1190) + Kenkyū (1190-1199) + Shōji (1199-1201) + Kennin (1201-1204) + Genkyū (1204-1206) + Ken-ei (1206-1207) + Shōgen (1207-1211) + Kenryaku (1211-1213) + Kenpō (1213-1219) + Shōkyū (1219-1222) + Jōō (1222-1224) + Gennin (1224-1225) + Karoku (1225-1227) + Antei (1227-1229) + Kanki (1229-1232) + Jōei (1232-1233) + Tempuku (1233-1234) + Bunryaku (1234-1235) + Katei (1235-1238) + Ryakunin (1238-1239) + En-ō (1239-1240) + Ninji (1240-1243) + Kangen (1243-1247) + Hōji (1247-1249) + Kenchō (1249-1256) + Kōgen (1256-1257) + Shōka (1257-1259) + Shōgen (1259-1260) + Bun-ō (1260-1261) + Kōchō (1261-1264) + Bun-ei (1264-1275) + Kenji (1275-1278) + Kōan (1278-1288) + Shōō (1288-1293) + Einin (1293-1299) + Shōan (1299-1302) + Kengen (1302-1303) + Kagen (1303-1306) + Tokuji (1306-1308) + Enkei (1308-1311) + Ōchō (1311-1312) + Shōwa (1312-1317) + Bunpō (1317-1319) + Genō (1319-1321) + Genkyō (1321-1324) + Shōchū (1324-1326) + Kareki (1326-1329) + Gentoku (1329-1331) + Genkō (1331-1334) + Kemmu (1334-1336) + Engen (1336-1340) + Kōkoku (1340-1346) + Shōhei (1346-1370) + Kentoku (1370-1372) + Bunchū (1372-1375) + Tenju (1375-1379) + Kōryaku (1379-1381) + Kōwa (1381-1384) + Genchū (1384-1392) + Meitoku (1384-1387) + Kakei (1387-1389) + Kōō (1389-1390) + Meitoku (1390-1394) + Ōei (1394-1428) + Shōchō (1428-1429) + Eikyō (1429-1441) + Kakitsu (1441-1444) + Bun-an (1444-1449) + Hōtoku (1449-1452) + Kyōtoku (1452-1455) + Kōshō (1455-1457) + Chōroku (1457-1460) + Kanshō (1460-1466) + Bunshō (1466-1467) + Ōnin (1467-1469) + Bunmei (1469-1487) + Chōkyō (1487-1489) + Entoku (1489-1492) + Meiō (1492-1501) + Bunki (1501-1504) + Eishō (1504-1521) + Taiei (1521-1528) + Kyōroku (1528-1532) + Tenmon (1532-1555) + Kōji (1555-1558) + Eiroku (1558-1570) + Genki (1570-1573) + Tenshō (1573-1592) + Bunroku (1592-1596) + Keichō (1596-1615) + Genwa (1615-1624) + Kan-ei (1624-1644) + Shōho (1644-1648) + Keian (1648-1652) + Shōō (1652-1655) + Meiryaku (1655-1658) + Manji (1658-1661) + Kanbun (1661-1673) + Enpō (1673-1681) + Tenwa (1681-1684) + Jōkyō (1684-1688) + Genroku (1688-1704) + Hōei (1704-1711) + Shōtoku (1711-1716) + Kyōhō (1716-1736) + Genbun (1736-1741) + Kanpō (1741-1744) + Enkyō (1744-1748) + Kan-en (1748-1751) + Hōryaku (1751-1764) + Meiwa (1764-1772) + An-ei (1772-1781) + Tenmei (1781-1789) + Kansei (1789-1801) + Kyōwa (1801-1804) + Bunka (1804-1818) + Bunsei (1818-1830) + Tenpō (1830-1844) + Kōka (1844-1848) + Kaei (1848-1854) + Ansei (1854-1860) + Man-en (1860-1861) + Bunkyū (1861-1864) + Genji (1864-1865) + Keiō (1865-1868) + Meiji + Taishō + Shōwa + Heisei + + + Taika (645-650) + Hakuchi (650-671) + Hakuhō (672-686) + Shuchō (686-701) + Taihō (701-704) + Keiun (704-708) + Wadō (708-715) + Reiki (715-717) + Yōrō (717-724) + Jinki (724-729) + Tempyō (729-749) + Tempyō-kampō (749-749) + Tempyō-shōhō (749-757) + Tempyō-hōji (757-765) + Temphō-jingo (765-767) + Jingo-keiun (767-770) + Hōki (770-780) + Ten-ō (781-782) + Enryaku (782-806) + Daidō (806-810) + Kōnin (810-824) + Tenchō (824-834) + Jōwa (834-848) + Kajō (848-851) + Ninju (851-854) + Saiko (854-857) + Tennan (857-859) + Jōgan (859-877) + Genkei (877-885) + Ninna (885-889) + Kampyō (889-898) + Shōtai (898-901) + Engi (901-923) + Enchō (923-931) + Shōhei (931-938) + Tengyō (938-947) + Tenryaku (947-957) + Tentoku (957-961) + Ōwa (961-964) + Kōhō (964-968) + Anna (968-970) + Tenroku (970-973) + Ten-en (973-976) + Jōgen (976-978) + Tengen (978-983) + Eikan (983-985) + Kanna (985-987) + Ei-en (987-989) + Eiso (989-990) + Shōryaku (990-995) + Chōtoku (995-999) + Chōhō (999-1004) + Kankō (1004-1012) + Chōwa (1012-1017) + Kannin (1017-1021) + Jian (1021-1024) + Manju (1024-1028) + Chōgen (1028-1037) + Chōryaku (1037-1040) + Chōkyū (1040-1044) + Kantoku (1044-1046) + Eishō (1046-1053) + Tengi (1053-1058) + Kōhei (1058-1065) + Jiryaku (1065-1069) + Enkyū (1069-1074) + Shōho (1074-1077) + Shōryaku (1077-1081) + Eiho (1081-1084) + Ōtoku (1084-1087) + Kanji (1087-1094) + Kaho (1094-1096) + Eichō (1096-1097) + Shōtoku (1097-1099) + Kōwa (1099-1104) + Chōji (1104-1106) + Kashō (1106-1108) + Tennin (1108-1110) + Ten-ei (1110-1113) + Eikyū (1113-1118) + Gen-ei (1118-1120) + Hoan (1120-1124) + Tenji (1124-1126) + Daiji (1126-1131) + Tenshō (1131-1132) + Chōshō (1132-1135) + Hoen (1135-1141) + Eiji (1141-1142) + Kōji (1142-1144) + Tenyō (1144-1145) + Kyūan (1145-1151) + Ninpei (1151-1154) + Kyūju (1154-1156) + Hogen (1156-1159) + Heiji (1159-1160) + Eiryaku (1160-1161) + Ōho (1161-1163) + Chōkan (1163-1165) + Eiman (1165-1166) + Nin-an (1166-1169) + Kaō (1169-1171) + Shōan (1171-1175) + Angen (1175-1177) + Jishō (1177-1181) + Yōwa (1181-1182) + Juei (1182-1184) + Genryuku (1184-1185) + Bunji (1185-1190) + Kenkyū (1190-1199) + Shōji (1199-1201) + Kennin (1201-1204) + Genkyū (1204-1206) + Ken-ei (1206-1207) + Shōgen (1207-1211) + Kenryaku (1211-1213) + Kenpō (1213-1219) + Shōkyū (1219-1222) + Jōō (1222-1224) + Gennin (1224-1225) + Karoku (1225-1227) + Antei (1227-1229) + Kanki (1229-1232) + Jōei (1232-1233) + Tempuku (1233-1234) + Bunryaku (1234-1235) + Katei (1235-1238) + Ryakunin (1238-1239) + En-ō (1239-1240) + Ninji (1240-1243) + Kangen (1243-1247) + Hōji (1247-1249) + Kenchō (1249-1256) + Kōgen (1256-1257) + Shōka (1257-1259) + Shōgen (1259-1260) + Bun-ō (1260-1261) + Kōchō (1261-1264) + Bun-ei (1264-1275) + Kenji (1275-1278) + Kōan (1278-1288) + Shōō (1288-1293) + Einin (1293-1299) + Shōan (1299-1302) + Kengen (1302-1303) + Kagen (1303-1306) + Tokuji (1306-1308) + Enkei (1308-1311) + Ōchō (1311-1312) + Shōwa (1312-1317) + Bunpō (1317-1319) + Genō (1319-1321) + Genkyō (1321-1324) + Shōchū (1324-1326) + Kareki (1326-1329) + Gentoku (1329-1331) + Genkō (1331-1334) + Kemmu (1334-1336) + Engen (1336-1340) + Kōkoku (1340-1346) + Shōhei (1346-1370) + Kentoku (1370-1372) + Bunchũ (1372-1375) + Tenju (1375-1379) + Kōryaku (1379-1381) + Kōwa (1381-1384) + Genchũ (1384-1392) + Meitoku (1384-1387) + Kakei (1387-1389) + Kōō (1389-1390) + Meitoku (1390-1394) + Ōei (1394-1428) + Shōchō (1428-1429) + Eikyō (1429-1441) + Kakitsu (1441-1444) + Bun-an (1444-1449) + Hōtoku (1449-1452) + Kyōtoku (1452-1455) + Kōshō (1455-1457) + Chōroku (1457-1460) + Kanshō (1460-1466) + Bunshō (1466-1467) + Ōnin (1467-1469) + Bunmei (1469-1487) + Chōkyō (1487-1489) + Entoku (1489-1492) + Meiō (1492-1501) + Bunki (1501-1504) + Eishō (1504-1521) + Taiei (1521-1528) + Kyōroku (1528-1532) + Tenmon (1532-1555) + Kōji (1555-1558) + Eiroku (1558-1570) + Genki (1570-1573) + Tenshō (1573-1592) + Bunroku (1592-1596) + Keichō (1596-1615) + Genwa (1615-1624) + Kan-ei (1624-1644) + Shōho (1644-1648) + Keian (1648-1652) + Shōō (1652-1655) + Meiryaku (1655-1658) + Manji (1658-1661) + Kanbun (1661-1673) + Enpō (1673-1681) + Tenwa (1681-1684) + Jōkyō (1684-1688) + Genroku (1688-1704) + Hōei (1704-1711) + Shōtoku (1711-1716) + Kyōhō (1716-1736) + Genbun (1736-1741) + Kanpō (1741-1744) + Enkyō (1744-1748) + Kan-en (1748-1751) + Hōryaku (1751-1764) + Meiwa (1764-1772) + An-ei (1772-1781) + Tenmei (1781-1789) + Kansei (1789-1801) + Kyōwa (1801-1804) + Bunka (1804-1818) + Bunsei (1818-1830) + Tenpō (1830-1844) + Kōka (1844-1848) + Kaei (1848-1854) + Ansei (1854-1860) + Man-en (1860-1861) + Bunkyū (1861-1864) + Genji (1864-1865) + Keiō (1865-1868) + M + T + S + H + + + + + + + + + + + + + + + + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + + + + + + + + + + + + + + AP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Before R.O.C. + R.O.C. + + + + + + + + + + + + + + + + + + + Era + + + Year + last year + this year + next year + + +{0} y + + + -{0} y + + + + Month + last month + this month + next month + + +{0} m + + + -{0} m + + + + Week + last week + this week + next week + + +{0} w + + + -{0} w + + + + Day + yesterday + today + tomorrow + + +{0} d + + + -{0} d + + + + Day of the Week + + + last Sunday + this Sunday + next Sunday + + + last Monday + this Monday + next Monday + + + last Tuesday + this Tuesday + next Tuesday + + + last Wednesday + this Wednesday + next Wednesday + + + last Thursday + this Thursday + next Thursday + + + last Friday + this Friday + next Friday + + + last Saturday + this Saturday + next Saturday + + + Dayperiod + + + Hour + + +{0} h + + + -{0} h + + + + Minute + + +{0} min + + + -{0} min + + + + Second + now + + +{0} s + + + -{0} s + + + + Zone + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Unknown + + + Dumont d’Urville + + + St. Barthelemy + + + Atikokan + + + St. John’s + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + Nuuk + + + Ittoqqortoormiit + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Kathmandu + + + St. Helena + + + Lower Prince's Quarter + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + + + latn + + latn + + + + + + ٫ + ٬ + ؛ + ٪ + ‏+ + ‏- + اس + × + ؉ + + NaN + + + ٫ + ٬ + ؛ + ٪ + ‎+‎ + ‎-‎ + ×۱۰^ + × + ؉ + + NaN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #,##0.### + + + + + + + + 0K + 00K + 000K + 0M + 00M + 000M + 0G + 00G + 000G + 0T + 00T + 000T + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #E0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #,##0% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [:^S:] + [:digit:] +   + + + [:^S:] + [:digit:] +   + + + + + ¤ #,##0.00 + + + + + + {0} {1} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $ + + + A$ + $ + + + $ + + + + + + $ + + + $ + + + R$ + R$ + + + $ + + + р. + + + $ + + + CA$ + $ + + + $ + + + CN¥ + ¥ + + + $ + + + + + + $ + + + $ + + + + + + + + + + $ + + + £ + £ + + + + + + £ + + + $ + + + HK$ + $ + + + + + + + + + + + $ + + + JP¥ + ¥ + + + + + + + + + + $ + + + + + + + + + $ + + + + + + MX$ + $ + + + $ + + + + + + NZ$ + $ + + + + + + + + + р. + + + $ + + + $ + + + $ + + + £ + + + ฿ + ฿ + + + + TL + + + $ + + + NT$ + NT$ + + + + + + US$ + $ + + + $ + + + + + + + FCFA + + + EC$ + + + CFA + + + CFPF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ⩾{0} + {0}–{1} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0} d + + + {0} h + + + {0} ms + + + {0} min + + + {0} m + + + {0} s + + + {0} w + + + {0} y + + + {0} cm + + + {0} ft + + + {0} in + + + {0} km + + + {0} ly + + + {0} m + + + {0} mi + + + {0} mm + + + {0} pm + + + {0} yd + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0} km/h + + + {0} m/s + + + {0} mi/h + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + + + + + + + + + + yes:y + no:n + + + + diff --git a/library/Zend/Locale/Data/ru.xml b/library/Zend/Locale/Data/ru.xml new file mode 100755 index 000000000..b4538d214 --- /dev/null +++ b/library/Zend/Locale/Data/ru.xml @@ -0,0 +1,7640 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + афар + абхазский + ачехский + ачоли + адангме + адыгейский + авестийский + африкаанс + африхили + агхем + айну + акан + аккадский + алеутский + южноалтайский + амхарский + арагонский + староанглийский + ангика + арабский + арабский литературный + арамейский + арауканский + арапахо + аравакский + ассамский + аса + астурийский + аварский + авадхи + аймара + азербайджанский + азербайджанский + башкирский + белуджский + балийский + баса + бамум + гхомала + белорусский + беджа + бемба + бена + бафут + болгарский + бходжпури + бислама + бикольский + бини + ком + сиксика + бамбарийский + бенгальский + тибетский + бретонский + брауи + бодо + боснийский + акоосе + бурятский + бугийский + булу + билин (блин) + медумба + каталанский + каддо + кариб + кайюга + атсам + чеченский + кебуано + чига + чаморро + чибча + чагатайский + чукотский + марийский (черемисский) + чинук жаргон + чоктав + чипевайян + чероки + чейенн + сорани курдский + корсиканский + коптский + криийский + крымско-татарский + чешский + кашубианский + церковнославянский + чувашский + валлийский + датский + дакота + даргва + таита + немецкий + австрийский немецкий + швейцарский верхненемецкий + делаварский + славянский + догриб + динка + зарма + догри + нижнелужицкий + дуала + средненидерландский + мальдивский + дьола-фоньи + диула (дьюла) + дзонг-кэ + дазагский + эмбу + эве + эфик + древнеегипетский + экаджук + греческий + эламский + английский + австралийский английский + канадский английский + британский английский + американский английский + английский (США) + среднеанглийский + эсперанто + испанский + латиноамериканский испанский + европейский испанский + эстонский + баскский + эвондо + персидский + фанг + фанти + фулах + финский + филиппинский + фиджи + фарерский + фон + французский + канадский французский + швейцарский французский + среднефранцузский + старофранцузский + фризский северный + восточный фризский + фриульский + западно-фризский + ирландский + га + гайо + гбая + гэльский + геэз + гильбертский + галисийский + средневерхненемецкий + гуарани + древневерхненемецкий + гонди + горонтало + готский + гребо + древнегреческий + швейцарский немецкий + гуджарати + гусии + мэнский + гвичин + хауса + хайда + гавайский + иврит + хинди + хилигайнон + хеттский + хмонг + хиримоту + хорватский + верхнелужицкий + гаитянский + венгерский + хупа + армянский + гереро + интерлингва + ибанский + ибибио + индонезийский + интерлингве + игбо + сычуань + инупиак + илоко + ингушский + идо + исландский + итальянский + инуктитут + японский + ложбан + нгомба + мачаме + еврейско-персидский + еврейско-арабский + яванский + грузинский + каракалпакский + кабильский + качинский + каджи + камба + кави + кабардинский + канембу + тьяп + маконде + кабувердьяну + коро + конго + кхаси + хотанский + койра чиини + кикуйю + кунама + казахский + како + гренландский + календжин + кхмерский + кимбундийский + каннада + корейский + конкани + косраенский + кпелле + канури + карачаево-балкарский + карельский + курух + кашмири + шамбала + бафия + кёльш + курдский + кумыкский + кутенаи + коми + корнийский + киргизский + латинский + ладино + ланги + лахнда + ламба + люксембургский + лезгинский + ганда + лимбургский + лингала + лаосский + монго + лози + литовский + луба-катанга + луба-лулуа + луисеньо + лунда + луо (Кения и Танзания) + лушай + лухья + латышский + мадурский + мафа + магахи + майтхили + макассарский + мандинго + масаи + мабанский + мокшанский + мандарский + менде + меру + маврикийский креольский + малагасийский + среднеирландский + макуа-меетто + мета + маршалльский + маори + микмак + минангкабау + македонский + малаялам + монгольский + маньчжурский + манипурский + мохаук + моси + маратхи + малайский + мальтийский + мунданг + несколько языков + крик + мирандийский + марвари + бирманский + миене + эрзя + науру + неаполитанский + нама + норвежский букмол + северный ндебели + нижнегерманский + непальский + неварский + ндонга + ниас + ниуэ + голландский + фламандский + квасио + норвежский нюнорск + нгиембунд + норвежский + ногайский + старонорвежский + нко + ндебели южный + сото северный + нуэр + навахо + невари (классический) + ньянджа + ньямвези + ньянколе + ньоро + нзима + окситанский + оджибва + оромо + ория + осетинский + оседжи + старотурецкий + панджаби + пангасинан + пехлевийский + пампанга + папьяменто + палау + староперсидский + финикийский + пали + польский + понапе + старопровансальский + пушту + португальский + бразильский португальский + европейский португальский + кечуа + раджастхани + рапануи + раротонганский + романшский + рунди + румынский + молдавский + ромбо + цыганский + корневой язык + русский + арумынский + киньяруанда + руанда + санскрит + сандаве + якутский + самаритянский арамейский + самбуру + сасаки + сантали + нгамбайский + сангу + сардинский + сицилийский + шотландский + синдхи + северносаамский + сенека + сена + селькупский + койраборо сенни + санго + староирландский + сербскохорватский + тахелхит + шанский + чадский арабс + сингальский + сидама + словацкий + словенский + самоанский + саамский (южный) + луле-саамский + инари-саамский + скольт-саамский + шона + сонинке + сомали + согдийский + албанский + сербский + сранан тонго + серер + свази + сахо + сото южный + сунданский + сукума + сусу + шумерский + шведский + суахили + коморский + конголезский суахили + классический сирийский + сирийский + тамильский + телугу + темне + тесо + терено + тетум + таджикский + тайский + тигринья + тигре + тиви + туркменский + токелайский + тагалог + клингонский + тлингит + тамашек + тсвана + тонганский + ньяса (тонга) + ток-писин + турецкий + тароко + тсонга + цимшиан + татарский + тумбука + тувалу + тви + тасавак + таитянский + тувинский + тамазит (Центральное Марокко) + удмуртский + уйгурский + угаритский + украинский + умбунду + неизвестный язык + урду + узбекский + ваи + венда + вьетнамский + волапюк + водский + вунджо + валлонский + валисский + воламо + варай + вашо + волоф + калмыцкий + ксоза + сога + яо + яп + янбан + йемба + идиш + йоруба + кантонский + чжуань + сапотекский + блиссимволика + зенагский + тамазигхтский + китайский + упрощенный китайский + традиционный китайский + зулу + зуньи + без языкового содержания + заза + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Мир + Африка + Северная Америка + Южная Америка + Океания + Западная Африка + Центральная Америка + Восточная Африка + Северная Африка + Центральная Африка + Южная Африка + Америка + Северная Америка – США и Канада + Карибы + Восточная Азия + Южная Азия + Юго-Восточная Азия + Южная Европа + Австралазия + Меланезия + Микронезия + Полинезия + Азия + Средняя Азия + Ближний и Средний Восток + Европа + Восточная Европа + Северная Европа + Западная Европа + Латинская Америка + О-в Вознесения + Андорра + ОАЭ + Афганистан + Антигуа и Барбуда + Ангилья + Албания + Армения + Нидерландские Антильские о-ва + Ангола + Антарктида + Аргентина + Американское Самоа + Австрия + Австралия + Аруба + Аландские о-ва + Азербайджан + Босния и Герцеговина + Барбадос + Бангладеш + Бельгия + Буркина-Фасо + Болгария + Бахрейн + Бурунди + Бенин + Сен-Бартельми + Бермудские о-ва + Бруней-Даруссалам + Боливия + Бонэйр, Синт-Эстатиус и Саба + Бразилия + Багамские о-ва + Бутан + О-в Буве + Ботсвана + Беларусь + Белиз + Канада + Кокосовые о-ва + Конго - Киншаса + Конго (ДРК) + ЦАР + Конго - Браззавиль + Конго + Швейцария + Кот-д'Ивуар + Берег Слоновой Кости + О-ва Кука + Чили + Камерун + Китай + Колумбия + О-в Клиппертон + Коста-Рика + Куба + Кабо-Верде + Кюрасао + О-в Рождества + Кипр + Чехия + Германия + Диего-Гарсия + Джибути + Дания + Доминика + Доминиканская Республика + Алжир + Сеута и Мелилья + Эквадор + Эстония + Египет + Западная Сахара + Эритрея + Испания + Эфиопия + Европейский союз + Финляндия + Фиджи + Фолклендские о-ва + Фолклендские (Мальвинские) о-ва + Федеративные Штаты Микронезии + Фарерские о-ва + Франция + Габон + Великобритания + Британия + Гренада + Грузия + Французская Гвиана + Гернси + Гана + Гибралтар + Гренландия + Гамбия + Гвинея + Гваделупа + Экваториальная Гвинея + Греция + Южная Георгия и Южные Сандвичевы о-ва + Гватемала + Гуам + Гвинея-Бисау + Гайана + Гонконг (особый район) + Гонконг + О-ва Херд и Макдональд + Гондурас + Хорватия + Гаити + Венгрия + Канарские о-ва + Индонезия + Ирландия + Израиль + О-в Мэн + Индия + Британская территория в Индийском океане + Ирак + Иран + Исландия + Италия + Джерси + Ямайка + Иордания + Япония + Кения + Киргизия + Камбоджа + Кирибати + Коморские о-ва + Сент-Китс и Невис + КНДР + Республика Корея + Кувейт + Каймановы о-ва + Казахстан + Лаос + Ливан + Сент-Люсия + Лихтенштейн + Шри-Ланка + Либерия + Лесото + Литва + Люксембург + Латвия + Ливия + Марокко + Монако + Молдова + Черногория + Сен-Мартен + Мадагаскар + Маршалловы о-ва + Македония + Македония (БЮРМ) + Мали + Мьянма (Бирма) + Монголия + Макао (особый район) + Макао + Северные Марианские о-ва + Мартиника + Мавритания + Монтсеррат + Мальта + Маврикий + Мальдивские о-ва + Малави + Мексика + Малайзия + Мозамбик + Намибия + Новая Каледония + Нигер + О-в Норфолк + Нигерия + Никарагуа + Нидерланды + Норвегия + Непал + Науру + Ниуэ + Новая Зеландия + Оман + Панама + Перу + Французская Полинезия + Папуа – Новая Гвинея + Филиппины + Пакистан + Польша + Сен-Пьер и Микелон + Питкэрн + Пуэрто-Рико + Палестинские территории + Палестина + Португалия + Палау + Парагвай + Катар + Внешняя Океания + Реюньон + Румыния + Сербия + Россия + Руанда + Саудовская Аравия + Соломоновы о-ва + Сейшельские о-ва + Судан + Швеция + Сингапур + О-в Св. Елены + Словения + Шпицберген и Ян-Майен + Словакия + Сьерра-Леоне + Сан-Марино + Сенегал + Сомали + Суринам + Южный Судан + Сан-Томе и Принсипи + Сальвадор + Синт-Мартен + Сирия + Свазиленд + Тристан-да-Кунья + О-ва Тёркс и Кайкос + Чад + Французские Южные Территории + Того + Таиланд + Таджикистан + Токелау + Восточный Тимор + Туркменистан + Тунис + Тонга + Турция + Тринидад и Тобаго + Тувалу + Тайвань + Танзания + Украина + Уганда + Внешние малые о-ва (США) + Соединенные Штаты + США + Уругвай + Узбекистан + Ватикан + Сент-Винсент и Гренадины + Венесуэла + Виргинские о-ва (Британские) + Виргинские о-ва (США) + Вьетнам + Вануату + Уоллис и Футуна + Самоа + Косово + Йемен + Майотта + ЮАР + Замбия + Зимбабве + Неизвестный регион + + + Традиционная немецкая орфография + Стандартизированная резьянская орфография + Правила немецкой орфографии установленные с 1996 года + Поздне-средневековый французский до 1606 г. + Французский раннего нового времени + Академическая + Восточно-армянский + Западно-армянский + Унифицированный тюрско-латинский алфавит + Диалект Сан-Гиоргио/Била + Бунтлинг + Международный фонетический алфавит + Фонетический алфавит уральских языков + Общая офография + Липовецкий диалект резьянского языка + Монотонный + Надижский диалект + Гнива-нживский диалект + Осеакко-осоянский диалект + Пиньинь + Многотональный + Компьютерный + Пересмотренная орфография + Резьянский + Сахо + Англо-шотландский + Ливерпульский + Столвицко-солбицкий диалект + Тарашкевица + Объединенная орфография + Объединенная пересмотренная орфография + Валенсийский + Система Уэйда – Джайлза + + + Календарь + Игнорировать символы при сортировке + Обратная сортировка по акценту + Сортировка по верхнему или нижнему регистру + Сортировка с учетом регистра + Сортировка каны + Сопоставление + Нормализованная сортировка + Сортировка чисел + Эффективность сортировки + Валюта + Цифры + Часовой пояс + Вариант региональных настроек + Сортировать как символьный массив + Частное + + + Арабско-индийские цифры + Расширенная система арабско-индийских цифр + Армянские цифры + Армянские цифры в нижнем регистре + балийские цифры + Бенгальские цифры + Сортировка традиционного китайского языка – Big5 + цифры брахми + Буддийский календарь + цифры чакма + чамские цифры + Китайский календарь + Коптский календарь + календарь данги + Цифры деванагари + словарный порядок сортировки + cтандартная сортировка Unicode + европейские правила сортировки + Эфиопские цифры + Эфиопский календарь + Эфиопский календарь "Амете Алем" + Символы обозначения финансовых показателей + Полный формат цифр + упрощенный китайский - GB2312 + Грузинские цифры + Григорианский календарь + Греческие цифры + Греческие цифры в нижнем регистре + Цифры гуджарати + Цифры гурмукхи + Китайские десятичные цифры + Упрощенные китайские цифры + Упрощенные китайские цифры (финансы) + Традиционные китайские цифры + Традиционные китайские цифры (финансы) + Цифры на иврите + Еврейский календарь + Полная сортировка + Национальный календарь Индии + Исламский календарь + Исламский гражданский календарь + исламский календарь (Саудовская Аравия) + исламский календарь (табличный, астрономическая эпоха) + исламский календарь (Умм аль-Кура) + календарь ISO-8601 + Японский календарь + яванские цифры + Японские цифры + Японские цифры (финансы) + цифры кайя ли + Кхмерские цифры + Цифры каннада + цифры тай там хора + цифры тай там там + Лаосские цифры + Современные цифры + цифры лепча + цифры лимбу + Приоритетная сортировка слов в нижнем регистре + Цифры малаялам + Монгольские цифры + цифры манипури + Бирманские цифры + бирманские шанские цифры + Обозначения цифр коренного населения + цифры нко + Сортировка по акцентам в обычном порядке + Сортировка по стандартным правилам + Сортировка вне зависимости от регистра + Отдельная сортировка каны + Сортировка без нормализации + Отдельная сортировка числовых значений + Сортировка символов + цифры ол-чики + Цифры ория + цифры османья + Персидский календарь + порядок телефонной книги + Фонетический порядок сортировки + пиньинь + Сортировка только по символам, обозначающим разрядность + Сортировка по акцентам/регистрам/длине строки/кане + реформированный порядок сортировки + Китайский календарь + Римские цифры + Римские цифры в нижнем регистре + цифры саураштра + поиск + Поиск по первой согласной хангыль + Сортировка по акцентам + Сортировка без учета символов + цифры шарада + цифры сора-сомпенг + стандартное сопоставление + по чертам + суданские цифры + цифры такри + цифры новой тай-лю + Тамильские цифры + Тамильские цифры + Цифры телугу + Сортировка по акцентам/регистру/длине строки + Тайские цифры + Тибетские цифры + традиционный порядок + Традиционная система нумерации + сортировка по ключам, затем по чертам + Приоритетная сортировка слов в верхнем регистре + Цифры языка вай + Сортировка по акцентам в обратном порядке + Сортировка с учетом регистра + Сортировка каны другим способом + Сортировка нормализованных символов Unicode + Сортировка численных значений + чжуинь + + + Палата географических названий США + Числовая + Тоновая + Группа экспертов ООН по географическим названиям + Диакритические знаки + Широкие символы + Краткий формат + Джамо + Пиньин + Типографская + + + Метрическая + Английская + Англо-американская + + + Язык: {0} + Написание: {0} + Регион: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я] + [{а\u0301} {е\u0301} {и\u0301} {о\u0301} {у\u0301} {ы\u0301} {э\u0301} {ю\u0301} {я\u0301}] + [А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ « » ( ) \[ \] \{ \} § @ * / \& #] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + « + » + + + + + + + + + BE + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + EEEE, d MMMM U + + + + + d MMMM U + + + + + dd.MM U + + + + + dd.MM.y + + + + + + d + ccc + E, d + U + LLL U + d MMM U + E, d MMM U + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + ccc, d MMM + mm:ss + U + U + MM.y + dd.MM.y + E, dd.MM.y + LLL U + d MMM U + E, d MMM U + LLLL U + QQQ U + QQQQ U + + + + + + + + Тот + Бабэ + Хатур + Кихак + Тубэ + Амшир + Барамхат + Бармуда + Башнас + Бауна + Абиб + Мисра + Наси + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Тот + Бабэ + Хатур + Кихак + Тубэ + Амшир + Барамхат + Бармуда + Башнас + Бауна + Абиб + Мисра + Наси + + + + + Тот + Бабэ + Хатур + Кихак + Тубэ + Амшир + Барамхат + Бармуда + Башнас + Бауна + Абиб + Мисра + Наси + + + Тот + Бабэ + Хатур + Кихак + Тубэ + Амшир + Барамхат + Бармуда + Башнас + Бауна + Абиб + Мисра + Наси + + + + + + + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Якатит + Магабит + Миазия + Генбот + Сэнэ + Хамлэ + Нахасэ + Эпагомен + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Якатит + Магабит + Миазия + Генбот + Сэнэ + Хамлэ + Нахасэ + Эпагомен + + + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Якатит + Магабит + Миазия + Генбот + Сэнэ + Хамлэ + Нахасэ + Эпагомен + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Якатит + Магабит + Миазия + Генбот + Сэнэ + Хамлэ + Нахасэ + Эпагомен + + + + + + + + + EEEE, d MMMM y 'г'. G + + + + + d MMMM y 'г'. G + + + + + dd.MM.y G + + + + + dd.MM.y G + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + ccc + E, d + y G + LLL y G + d MMM y G + E, d MMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + ccc, d MMM + mm:ss + y G + y G + MM.y G + dd.MM.y G + E, dd.MM.y G + LLL y G + d MMM y G + E, d MMM y G + LLLL y G + QQQ y G + QQQQ y 'г'. G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + H-H + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a - h a v + h-h a v + + + H-H v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + LLL-MMM + + + d-d MMM + d MMM - d MMM + + + ccc, d - E, d MMM + ccc, d MMM - ccc, d MMM + + + LLLL-LLLL + + + y-y G + + + MM.y - MM.y G + MM.y - MM.y G + + + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + dd.MM.y - dd.MM.y G + + + ccc, dd.MM.y - ccc, dd.MM.y G + ccc, dd.MM.y - ccc, dd.MM.y G + ccc, dd.MM.y - ccc, dd.MM.y G + + + LLL-LLL y 'г'. G + LLL y - LLL y 'г'. G + + + d-d MMM y 'г'. G + d MMM - d MMM y 'г'. G + d MMM y - d MMM y 'г'. G + + + ccc, d - ccc, d MMM y 'г'. G + ccc, d MMM - ccc, d MMM y 'г'. G + ccc, d MMM y - ccc, d MMM y 'г'. G + + + LLLL-LLLL y 'г'. G + LLLL y - LLLL y 'г'. G + + + + + + + + + янв. + февр. + марта + апр. + мая + июня + июля + авг. + сент. + окт. + нояб. + дек. + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + января + февраля + марта + апреля + мая + июня + июля + августа + сентября + октября + ноября + декабря + + + + + Янв. + Февр. + Март + Апр. + Май + Июнь + Июль + Авг. + Сент. + Окт. + Нояб. + Дек. + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + Январь + Февраль + Март + Апрель + Май + Июнь + Июль + Август + Сентябрь + Октябрь + Ноябрь + Декабрь + + + + + + + вс + пн + вт + ср + чт + пт + сб + + + вс + пн + вт + ср + чт + пт + сб + + + вс + пн + вт + ср + чт + пт + сб + + + воскресенье + понедельник + вторник + среда + четверг + пятница + суббота + + + + + Вс + Пн + Вт + Ср + Чт + Пт + Сб + + + В + П + В + С + Ч + П + С + + + вс + пн + вт + ср + чт + пт + сб + + + Воскресенье + Понедельник + Вторник + Среда + Четверг + Пятница + Суббота + + + + + + + 1-й кв. + 2-й кв. + 3-й кв. + 4-й кв. + + + 1 + 2 + 3 + 4 + + + 1-й квартал + 2-й квартал + 3-й квартал + 4-й квартал + + + + + 1-й кв. + 2-й кв. + 3-й кв. + 4-й кв. + + + 1 + 2 + 3 + 4 + + + 1-й квартал + 2-й квартал + 3-й квартал + 4-й квартал + + + + + + + AM + PM + + + AM + PM + + + AM + PM + + + + + + до н.э. + н.э. + + + до н. э. + н. э. + н.э. + + + до н.э. + н.э. + + + + + + EEEE, d MMMM y 'г'. + + + + + d MMMM y 'г'. + + + + + d MMM y 'г'. + + + + + dd.MM.yy + + + + + + + H:mm:ss zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + ccc + ccc, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + LLL y G + d MMM y 'г'. G + E, d MMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + dd.MM + E, dd.MM + dd.MM + LLL + d MMM + ccc, d MMM + mm:ss + y + LLLL y + MM.y + dd.MM.y + ccc, d.MM.y 'г'. + MM.y + LLL y + d MMM y 'г'. + E, d MMM y + LLLL y + QQQ y 'г'. + QQQQ y 'г'. + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + H-H + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a - h a v + h-h a v + + + H-H v + + + M-M + + + dd.MM - dd.MM + dd.MM - dd.MM + + + E, dd.MM - E, dd.MM + E, dd.MM - E, dd.MM + + + LLL-MMM + + + d-d MMM + d MMM - d MMM + + + ccc, d - E, d MMM + ccc, d MMM - ccc, d MMM + + + LLLL-LLLL + + + y-y + + + MM.y - MM.y + MM.y - MM.y + + + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + dd.MM.y - dd.MM.y + + + ccc, dd.MM.y - ccc, dd.MM.y + ccc, dd.MM.y - ccc, dd.MM.y + ccc, dd.MM.y - ccc, dd.MM.y + + + LLL-LLL y 'г'. + LLL y - LLL y 'г'. + + + d-d MMM y 'г'. + d MMM - d MMM y 'г'. + d MMM y - d MMM y 'г'. + + + ccc, d - ccc, d MMM y 'г'. + ccc, d MMM - ccc, d MMM y 'г'. + ccc, d MMM y - ccc, d MMM y 'г'. + + + LLLL-LLLL y 'г'. + LLLL y - LLLL y 'г'. + + + + + + + + + Тишрей + Хешван + Кислев + Тевет + Шеват + Адар I + Адар + Адар II + Нисан + Ияр + Сиван + Таммуз + Ав + Элул + + + Тишрей + Хешван + Кислев + Тевет + Шеват + Адар I + Адар + Адар II + Нисан + Ияр + Сиван + Таммуз + Ав + Элул + + + + + Тишрей + Хешван + Кислев + Тевет + Шеват + Адар I + Адар + Адар II + Нисан + Ияр + Сиван + Таммуз + Ав + Элул + + + Тишрей + Хешван + Кислев + Тевет + Шеват + Адар I + Адар + Адар II + Нисан + Ияр + Сиван + Таммуз + Ав + Элул + + + + + + + + + Чайтра + Ваисакха + Джанштха + Асадха + Сравана + Бхадра + Азвина + Картика + Аграхайана + Пауза + Магха + Пхалгуна + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Чайтра + Ваисакха + Джанштха + Асадха + Сравана + Бхадра + Азвина + Картика + Аграхайана + Пауза + Магха + Пхалгуна + + + + + Чайтра + Ваисакха + Джанштха + Асадха + Сравана + Бхадра + Азвина + Картика + Аграхайана + Пауза + Магха + Пхалгуна + + + Чайтра + Ваисакха + Джанштха + Асадха + Сравана + Бхадра + Азвина + Картика + Аграхайана + Пауза + Магха + Пхалгуна + + + + + + + + + Мухаррам + Сафар + Раби-уль-авваль + Раби-уль-ахир + Джумад-уль-авваль + Джумад-уль-ахир + Раджаб + Шаабан + Рамадан + Шавваль + Зуль-Каада + Зуль-Хиджжа + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Мухаррам + Сафар + Раби-уль-авваль + Раби-уль-ахир + Джумад-уль-авваль + Джумад-уль-ахир + Раджаб + Шаабан + Рамадан + Шавваль + Зуль-Каада + Зуль-Хиджжа + + + + + Мухаррам + Сафар + Раби-уль-авваль + Раби-уль-ахир + Джумад-уль-авваль + Джумад-уль-ахир + Раджаб + Шаабан + Рамадан + Шавваль + Зуль-Каада + Зуль-Хиджжа + + + Мухаррам + Сафар + Раби-уль-авваль + Раби-уль-ахир + Джумад-уль-авваль + Джумад-уль-ахир + Раджаб + Шаабан + Рамадан + Шавваль + Зуль-Каада + Зуль-Хиджжа + + + + + + + + + Эпоха Тайка (645-650) + Эпоха Хакути (650-671) + Эпоха Хакухо (672-686) + Эпоха Сючё (686-701) + Эпоха Тайхо (701-704) + Эпоха Кёюн (704-708) + Эпоха Вадо (708-715) + Эпоха Рэйки (715-717) + Эпоха Ёро (717-724) + Эпоха Дзинки (724-729) + Эпоха Темпьё (729-749) + Эпоха Темпьё (749-749) + Эпоха Темпьё-Сьохо (749-757) + Эпоха Темпьё-Ходзи (757-765) + Эпоха Темпьё-Ходзи (765-767) + Эпоха Джинго-Кёюн (767-770) + Эпоха Хоки (770-780) + Эпоха Теньё (781-782) + Эпоха Енряку (782-806) + Эпоха Дайдо (806-810) + Эпоха Конин (810-824) + Эпоха Тентьо (824-834) + Эпоха Шова (834-848) + Эпоха Кайо (848-851) + Эпоха Ниндзю (851-854) + Эпоха Сайко (854-857) + Эпоха Теннан (857-859) + Эпоха Йоган (859-877) + Эпоха Генкей (877-885) + Эпоха Нинна (885-889) + Эпоха Кампьё (889-898) + Эпоха Сьотай (898-901) + Эпоха Энги (901-923) + Эпоха Ентьо (923-931) + Эпоха Сьёхэй (931-938) + Эпоха Тенгьо (938-947) + Эпоха Тенрияку (947-957) + Эпоха Тентоку (957-961) + Эпоха Ова (961-964) + Эпоха Кохо (964-968) + Эпоха Анна (968-970) + Эпоха Тенроку (970-973) + Эпоха Теньен (973-976) + Эпоха Дзьоген (976-978) + Эпоха Тенген (978-983) + Эпоха Ейкан (983-985) + Эпоха Канна (985-987) + Эпоха Ейен (987-989) + Эпоха Ейсо (989-990) + Эпоха Сёряку (990-995) + Эпоха Тётоку (995-999) + Эпоха Тёхо (999-1004) + Эпоха Канко (1004-1012) + Эпоха Тёва (1012-1017) + Эпоха Каннин (1017-1021) + Эпоха Дзиан (1021-1024) + Эпоха Мандзю (1024-1028) + Эпоха Тёгэн (1028-1037) + Эпоха Тёряку (1037-1040) + Эпоха Тёкю (1040-1044) + Эпоха Катоку (1044-1046) + Эпоха Эйсо (1046-1053) + Эпоха Тэнги (1053-1058) + Эпоха Кохэй (1058-1065) + Эпоха Дзиряку (1065-1069) + Эпоха Энкю (1069-1074) + Эпоха Сёхо (1074-1077) + Эпоха Сёряку (1077-1081) + Эпоха Эйхо (1081-1084) + Эпоха Отоку (1084-1087) + Эпоха Кандзи (1087-1094) + Эпоха Кахо (1094-1096) + Эпоха Эйтё (1096-1097) + Эпоха Сётоку (1097-1099) + Эпоха Кова (1099-1104) + Эпоха Тёдзи (1104-1106) + Эпоха Касё (1106-1108) + Эпоха Тэннин (1108-1110) + Эпоха Тэнъэй (1110-1113) + Эпоха Эйкю (1113-1118) + Эпоха Гэнъэй (1118-1120) + Эпоха Хоан (1120-1124) + Эпоха Тэндзи (1124-1126) + Эпоха Дайдзи (1126-1131) + Эпоха Тэнсё (1131-1132) + Эпоха Тёсё (1132-1135) + Эпоха Хоэн (1135-1141) + Эпоха Эйдзи (1141-1142) + Эпоха Кодзи (1142-1144) + Эпоха Тэнё (1144-1145) + Эпоха Кюан (1145-1151) + Эпоха Нимпэй (1151-1154) + Эпоха Кюдзю (1154-1156) + Эпоха Хогэн (1156-1159) + Эпоха Хэйдзи (1159-1160) + Эпоха Эйряку (1160-1161) + Эпоха Охо (1161-1163) + Эпоха Тёкан (1163-1165) + Эпоха Эйман (1165-1166) + Эпоха Нинъан (1166-1169) + Эпоха Као (1169-1171) + Эпоха Сёан (1171-1175) + Эпоха Ангэн (1175-1177) + Эпоха Дзисё (1177-1181) + Эпоха Ёва (1181-1182) + Эпоха Дзюэй (1182-1184) + Эпоха Гэнрюку (1184-1185) + Эпоха Бундзи (1185-1190) + Эпоха Кэнкю (1190-1199) + Эпоха Сёдзи (1199-1201) + Эпоха Кэннин (1201-1204) + Эпоха Гэнкю (1204-1206) + Эпоха Кэнъэй (1206-1207) + Эпоха Сёгэн (1207-1211) + Эпоха Кэнряку (1211-1213) + Эпоха Кэмпо (1213-1219) + Эпоха Сёкю (1219-1222) + Эпоха Дзёо (1222-1224) + Эпоха Гэннин (1224-1225) + Эпоха Кароку (1225-1227) + Эпоха Антэй (1227-1229) + Эпоха Канки (1229-1232) + Эпоха Дзёэй (1232-1233) + Эпоха Тэмпуку (1233-1234) + Эпоха Бунряку (1234-1235) + Эпоха Катэй (1235-1238) + Эпоха Рякунин (1238-1239) + Эпоха Энъо (1239-1240) + Эпоха Ниндзи (1240-1243) + Эпоха Кангэн (1243-1247) + Эпоха Ходзи (1247-1249) + Эпоха Кэнтё (1249-1256) + Эпоха Когэн (1256-1257) + Эпоха Сёка (1257-1259) + Эпоха Сёгэн (1259-1260) + Эпоха Бунъо (1260-1261) + Эпоха Котё (1261-1264) + Эпоха Бунъэй (1264-1275) + Эпоха Кэндзи (1275-1278) + Эпоха Коан (1278-1288) + Эпоха Сёо (1288-1293) + Эпоха Эйнин (1293-1299) + Эпоха Сёан (1299-1302) + Эпоха Кэнгэн (1302-1303) + Эпоха Кагэн (1303-1306) + Эпоха Токудзи (1306-1308) + Эпоха Энкэй (1308-1311) + Эпоха Отё (1311-1312) + Эпоха Сёва (1312-1317) + Эпоха Бумпо (1317-1319) + Эпоха Гэно (1319-1321) + Эпоха Гэнкё (1321-1324) + Эпоха Сётю (1324-1326) + Эпоха Карэки (1326-1329) + Эпоха Гэнтоку (1329-1331) + Эпоха Гэнко (1331-1334) + Эпоха Кэмму (1334-1336) + Эпоха Энгэн (1336-1340) + Эпоха Кококу (1340-1346) + Эпоха Сёхэй (1346-1370) + Эпоха Кэнтоку (1370-1372) + Эпоха Бунтю (1372-1375) + Эпоха Иэндзю (1375-1379) + Эпоха Коряку (1379-1381) + Эпоха Кова (1381-1384) + Эпоха Гэнтю (1384-1392) + Эпоха Мэйтоку (1384-1387) + Эпоха Какэй (1387-1389) + Эпоха Коо (1389-1390) + Эпоха Мэйтоку (1390-1394) + Эпоха Оэй (1394-1428) + Эпоха Сётё (1428-1429) + Эпоха Эйкё (1429-1441) + Эпоха Какицу (1441-1444) + Эпоха Банъан (1444-1449) + Эпоха Хотоку (1449-1452) + Эпоха Кётоку (1452-1455) + Эпоха Косё (1455-1457) + Эпоха Тёроку (1457-1460) + Эпоха Кансё (1460-1466) + Эпоха Бунсё (1466-1467) + Эпоха Онин (1467-1469) + Эпоха Буммэй (1469-1487) + Эпоха Тёкё (1487-1489) + Эпоха Энтоку (1489-1492) + Эпоха Мэйо (1492-1501) + Эпоха Бунки (1501-1504) + Эпоха Эйсё (1504-1521) + Эпоха Тайэй (1521-1528) + Эпоха Кёроку (1528-1532) + Эпоха Тэммон (1532-1555) + Эпоха Кодзи (1555-1558) + Эпоха Эйроку (1558-1570) + Эпоха Гэнки (1570-1573) + Эпоха Тэнсё (1573-1592) + Эпоха Бунроку (1592-1596) + Эпоха Кэйтё (1596-1615) + Эпоха Гэнва (1615-1624) + Эпоха Канъэй (1624-1644) + Эпоха Сёхо (1644-1648) + Эпоха Кэйан (1648-1652) + Эпоха Сё (1652-1655) + Эпоха Мэйряку (1655-1658) + Эпоха Мандзи (1658-1661) + Эпоха Камбун (1661-1673) + Эпоха Эмпо (1673-1681) + Эпоха Тэнва (1681-1684) + Эпоха Дзёкё (1684-1688) + Эпоха Гэнроку (1688-1704) + Эпоха Хоэй (1704-1711) + Эпоха Сётоку (1711-1716) + Эпоха Кёхо (1716-1736) + Эпоха Гэмбун (1736-1741) + Эпоха Кампо (1741-1744) + Эпоха Энкё (1744-1748) + Эпоха Канъэн (1748-1751) + Эпоха Хоряку (1751-1764) + Эпоха Мэйва (1764-1772) + Эпоха Анъэй (1772-1781) + Эпоха Тэммэй (1781-1789) + Эпоха Кансэй (1789-1801) + Эпоха Кёва (1801-1804) + Эпоха Бунка (1804-1818) + Эпоха Бунсэй (1818-1830) + Эпоха Тэмпо (1830-1844) + Эпоха Кока (1844-1848) + Эпоха Каэй (1848-1854) + Эпоха Ансэй (1854-1860) + Эпоха Манъэн (1860-1861) + Эпоха Бункю (1861-1864) + Эпоха Гендзи (1864-1865) + Эпоха Кейо (1865-1868) + Эпоха Мэйдзи + Эпоха Тайсьо + Сьова + Эпоха Хэйсэй + + + + + + + + Фарвардин + Ордибехешт + Хордад + Тир + Мордад + Шахривер + Мехр + Абан + Азер + Дей + Бахман + Эсфанд + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Фарвардин + Ордибехешт + Хордад + Тир + Мордад + Шахривер + Мехр + Абан + Азер + Дей + Бахман + Эсфанд + + + + + Фарвардин + Ордибехешт + Хордад + Тир + Мордад + Шахривер + Мехр + Абан + Азер + Дей + Бахман + Эсфанд + + + Фарвардин + Ордибехешт + Хордад + Тир + Мордад + Шахривер + Мехр + Абан + Азер + Дей + Бахман + Эсфанд + + + + + + + + Before R.O.C. + Minguo + + + + + + + Эра + + + Год + в прошлом году + в этому году + в следующем году + + Через {0} год + Через {0} года + Через {0} лет + Через {0} года + + + {0} год назад + {0} года назад + {0} лет назад + {0} года назад + + + + Месяц + в прошлом месяце + в этом месяце + в следующем месяце + + Через {0} месяц + Через {0} месяца + Через {0} месяцев + Через {0} месяца + + + {0} месяц назад + {0} месяца назад + {0} месяцев назад + {0} месяца назад + + + + Неделя + на прошлой неделе + на этой неделе + на следующей неделе + + Через {0} неделю + Через {0} недели + Через {0} недель + Через {0} недели + + + {0} неделю назад + {0} недели назад + {0} недель назад + {0} недели назад + + + + День + позавчера + вчера + сегодня + завтра + послезавтра + + Через {0} день + Через {0} дня + Через {0} дней + Через {0} дня + + + {0} день назад + {0} дня назад + {0} дней назад + {0} дня назад + + + + День недели + + + в прошлое воскресенье + в это воскресенье + в следующее воскресенье + + + в прошлый понедельник + в этот понедельник + в следующий понедельник + + + в прошлый вторник + в этот вторник + в следующий вторник + + + в прошлую среду + в эту среду + в следующую среду + + + в прошлый четверг + в этот четверг + в следующий четверг + + + в прошлую пятницу + в эту пятницу + в следующую пятницу + + + в прошлую субботу + в эту субботу + в следующую субботу + + + ДП/ПП + + + Час + + Через {0} час + Через {0} часа + Через {0} часов + Через {0} часа + + + {0} час назад + {0} часа назад + {0} часов назад + {0} часа назад + + + + Минута + + Через {0} минуту + Через {0} минуты + Через {0} минут + Через {0} минуты + + + {0} минуту назад + {0} минуты назад + {0} минут назад + {0} минуты назад + + + + Секунда + сейчас + + Через {0} секунду + Через {0} секунды + Через {0} секунд + Через {0} секунды + + + {0} секунду назад + {0} секунды назад + {0} секунд назад + {0} секунды назад + + + + Часовой пояс + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} время + {0} (+1) + {0} (+0) + {1} ({0}) + + Неизвестный город + + + Андорра + + + Дубай + + + Кабул + + + Антигуа + + + Ангилья + + + Тирана + + + Ереван + + + Луанда + + + Ротера + + + Палмер + + + Сёва + + + Моусон + + + Дейвис + + + Восток + + + Кейси + + + Дюмон-д'Юрвиль + + + Мак-Мердо + + + Рио-Гальегос + + + Мендоса + + + Сан-Хуан + + + Ушуая + + + Ла-Риоха + + + Сан-Луис + + + Катамарка + + + Сальта + + + Жужуй + + + Тукуман + + + Кордова + + + Буэнос-Айрес + + + Паго-Паго + + + Вена + + + Перт + + + Юкла + + + Дарвин + + + Аделаида + + + Брокен-Хилл + + + Керри + + + Мельбурн + + + Хобарт + + + Линдеман + + + Сидней + + + Брисбен + + + Маккуори + + + Лорд-Хау, о-в + + + Аруба + + + Мариехамн + + + Баку + + + Сараево + + + Барбадос + + + Дакка + + + Брюссель + + + Уагадугу + + + София + + + Бахрейн + + + Бужумбура + + + Порто-Ново + + + Сен-Бартельми + + + Бермуды + + + Бруней + + + Ла-Пас + + + Кралендейк + + + Эйрунепе + + + Риу-Бранку + + + Порту-Велью + + + Боа-Виста + + + Манаус + + + Куяба + + + Сантарен + + + Кампу-Гранди + + + Белен + + + Арагуаина + + + Сан-Паулу + + + Баия + + + Форталеза + + + Масейо + + + Ресифи + + + Норонха + + + Нассау + + + Тимпу + + + Габороне + + + Минск + + + Белиз + + + Доусон + + + Уайтхорс + + + Инувик + + + Ванкувер + + + Досон-Крик + + + Крестон + + + Йеллоунайф + + + Эдмонтон + + + Свифт-Карент + + + Кеймбридж-Бей + + + Реджайна + + + Виннипег + + + Резолют + + + Рейни-Ривер + + + Ранкин-Инлет + + + Корал-Харбор + + + Тандер-Бей + + + Нипигон + + + Торонто + + + Икалуит + + + Пангниртанг + + + Монктон + + + Галифакс + + + Гус-Бей + + + Глейс-Бей + + + Бланк-Саблон + + + Сент-Джонс + + + Кокосовые о-ва + + + Киншаса + + + Лубумбаши + + + Банги + + + Браззавиль + + + Цюрих + + + Абиджан + + + Раротонга + + + Пасхи, о-в + + + Сантьяго + + + Дуала + + + Кашгар + + + Урумчи + + + Чунцин + + + Шанхай + + + Харбин + + + Богота + + + Коста-Рика + + + Гавана + + + Острова Зеленого Мыса + + + Кюрасао + + + О-в Рождества + + + Никосия + + + Прага + + + Бюзинген-на-Верхнем-Рейне + + + Берлин + + + Джибути + + + Копенгаген + + + Доминика + + + Санто-Доминго + + + Алжир + + + Галапагосcкие о-ва + + + Гуаякиль + + + Таллин + + + Каир + + + Эль-Аюн + + + Асмера + + + Канарские о-ва + + + Сеута + + + Мадрид + + + Аддис-Абеба + + + Хельсинки + + + Фиджи + + + Стэнли + + + Трук, о-ва + + + Понапе, о-в + + + Косрае + + + Фарерские о-ва + + + Париж + + + Либревиль + + + + Британское летнее время + + Лондон + + + Гренада + + + Тбилиси + + + Кайенна + + + Гернси + + + Аккра + + + Гибралтар + + + Туле + + + Готхоб + + + Скорсбисунн + + + Денмарксхавн + + + Банжул + + + Конакри + + + Гваделупа + + + Малабо + + + Афины + + + Ю.Джорджия и Ю.Сэндвинчевы о-ва + + + Гватемала + + + Гуам + + + Бисау + + + Гайана + + + Гонконг + + + Тегусигальпа + + + Загреб + + + Порт-о-Пренс + + + Будапешт + + + Джакарта + + + Понтианак + + + Макасар + + + Джайпур + + + + Ирландия, летнее время + + Дублин + + + Иерусалим + + + Остров Мэн + + + Калькутта + + + Чагос + + + Багдад + + + Тегеран + + + Рейкьявик + + + Рим + + + Джерси + + + Ямайка + + + Амман + + + Токио + + + Найроби + + + Бишкек + + + Пномпень + + + Эндербери, о-в + + + Киритимати + + + Тарава + + + Коморские о-ва + + + Сент-Китс + + + Пхеньян + + + Сеул + + + Кувейт + + + Каймановы о-ва + + + Актау + + + Орал (Уральск) + + + Актобе (Актюбинск) + + + Кызылорда + + + Алматы + + + Вьентьян + + + Бейрут + + + Сент-Люсия + + + Вадуц + + + Коломбо + + + Монровия + + + Масеру + + + Вильнюс + + + Люксембург + + + Рига + + + Триполи + + + Касабланка + + + Монако + + + Кишинев + + + Подгорица + + + Мариго + + + Антананариву + + + Кваджалейн + + + Маджуро + + + Скопье + + + Бамако + + + Рангун + + + Ховд + + + Улан-Батор + + + Чойбалсан + + + Макао + + + Сайпан + + + Мартиника + + + Нуакшот + + + Монсеррат + + + Мальта + + + Маврикий + + + Мальдивы + + + Блантайр + + + Тихуана + + + Санта-Изабел + + + Эрмосильо + + + Масатлан + + + Чиуауа + + + Баия-де-Бандерас + + + Охинага + + + Монтеррей + + + Мехико + + + Матаморос + + + Мерида + + + Канкун + + + Куала-Лумпур + + + Кучинг + + + Мапуту + + + Виндхук + + + Нумеа + + + Ниамей + + + Норфолк + + + Лагос + + + Манагуа + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуэ + + + Чатем, о-в + + + Окленд + + + Маскат + + + Панама + + + Лима + + + Таити, о-в + + + Маркизские о-ва + + + Гамбье, о-ва + + + Порт-Морсби + + + Манила + + + Карачи + + + Варшава + + + Микелон + + + Питкерн + + + Пуэрто-Рико + + + Газа + + + Хеврон + + + Азорские о-ва + + + Мадейра, о-в + + + Лиссабон + + + Палау + + + Асунсьон + + + Катар + + + Реюньон + + + Бухарест + + + Белград + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Екатеринбург + + + Омск + + + Новосибирск + + + Новокузнецк + + + Красноярск + + + Иркутск + + + Якутск + + + Владивосток + + + Хандыга + + + Сахалин, о-в + + + Усть-Нера + + + Магадан + + + Петропавловск-Камчатский + + + Анадырь + + + Кигали + + + Эр-Рияд + + + Гвадалканал + + + Маэ + + + Хартум + + + Стокгольм + + + Сингапур + + + Св. Елены, о-в + + + Любляна + + + Лонгйир + + + Братислава + + + Фритаун + + + Сан-Марино + + + Дакар + + + Могадишо + + + Парамарибо + + + Джуба + + + Сан-Томе + + + Сальвадор + + + Лоуэр-Принсес-Куортер + + + Дамаск + + + Мбабане + + + Гранд Турк + + + Нджамена + + + Кергелен + + + Ломе + + + Бангкок + + + Душанбе + + + Факаофо + + + Дили + + + Ашхабад + + + Тунис + + + Тонгатапу + + + Стамбул + + + Порт-оф-Спейн + + + Фунафути + + + Тайбэй + + + Дар-эс-Салам + + + Ужгород + + + Киев + + + Симферополь + + + Запорожье + + + Кампала + + + Мидуэй, о-ва + + + Джонстон, ат. + + + Уэйк, о-в + + + Адак, о-в + + + Ном + + + Гонолулу + + + Анкоридж + + + Якутат + + + Ситка + + + Джуно + + + Метлакатла + + + Лос-Анджелес + + + Бойсе + + + Финикс + + + Денвер + + + Бойла, Северная Дакота + + + Нью-Салем + + + Северная Дакота - Центр + + + Чикаго + + + Меномини + + + Винсенс + + + Петерсбург + + + Телл-Сити + + + Нокс + + + Винамак + + + Маренго + + + Индианаполис + + + Луисвилл + + + Вивэй + + + Монтиселло + + + Детройт + + + Нью-Йорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сент-Винсент + + + Каракас + + + Тортола + + + Сент-Томас + + + Хошимин + + + Эфате + + + Уоллис + + + Апия + + + Аден + + + Майорка + + + Йоханнесбург + + + Лусака + + + Хараре + + + + Акри время + Акри стандартное время + Акри летнее время + + + + + Афганистан + + + + + Центральная Африка + + + + + Восточная Африка + + + + + Южная Африка + + + + + Западная Африка + Западная Африка, стандартное время + Западная Африка, летнее время + + + + + Аляска + Аляска, стандартное время + Аляска, летнее время + + + + + Алма-Ата время + Алма-Ата стандартное время + Алма-Ата летнее время + + + + + Амазонка + Амазонка, стандартное время + Амазонка, летнее время + + + + + Центральная Америка + Центральная Америка, стандартное время + Центральная Америка, летнее время + + + + + Восточная Америка + Восточная Америка, стандартное время + Восточная Америка, летнее время + + + + + Горное время (США) + Горное стандартное время (США) + Горное летнее время (США) + + + + + Тихоокеанское время + Тихоокеанское стандартное время + Тихоокеанское летнее время + + + + + Время по Анадырю + Анадырь стандартное время + Анадырь летнее время + + + + + Актау время + Актау стандартное время + Актау летнее время + + + + + Актобе время + Актобе стандартное время + Актобе летнее время + + + + + Саудовская Аравия + Саудовская Аравия, стандартное время + Саудовская Аравия, летнее время + + + + + Аргентина + Аргентина, стандартное время + Аргентина, летнее время + + + + + Западная Аргентина + Западная Аргентина, стандартное время + Западная Аргентина, летнее время + + + + + Армения + Армения, стандартное время + Армения, летнее время + + + + + Атлантическое время + Атлантическое стандартное время + Атлантическое летнее время + + + + + Центральная Австралия + Центральная Австралия, стандартное время + Центральная Австралия, летнее время + + + + + Центральная Австралия, западное время + Центральная Австралия, западное стандартное время + Центральная Австралия, западное летнее время + + + + + Восточная Австралия + Восточная Австралия, стандартное время + Восточная Австралия, летнее время + + + + + Западная Австралия + Западная Австралия, стандартное время + Западная Австралия, летнее время + + + + + Азербайджан + Азербайджан, стандартное время + Азербайджан, летнее время + + + + + Азоры + Азоры, стандартное время + Азоры, летнее время + + + + + Бангладеш + Бангладеш, стандартное время + Бангладеш, летнее время + + + + + Бутан + + + + + Боливия + + + + + Бразилия + Бразилия, стандартное время + Бразилия, летнее время + + + + + Бруней-Даруссалам + + + + + Кабо-Верде + Кабо-Верде, стандартное время + Кабо-Верде, летнее время + + + + + Кейси + + + + + Чаморро + + + + + Чатем + Чатем, стандартное время + Чатем, летнее время + + + + + Чили + Чили, стандартное время + Чили, летнее время + + + + + Китай + Китай, стандартное время + Китай, летнее время + + + + + Чойбалсан + Чойбалсан, стандартное время + Чойбалсан, летнее время + + + + + О-в Рождества + + + + + Кокосовые о-ва + + + + + Колумбия + Колумбия, стандартное время + Колумбия, летнее время + + + + + О-ва Кука + О-ва Кука, стандартное время + О-ва Кука, полулетнее время + + + + + Куба + Куба, стандартное время + Куба, летнее время + + + + + Дейвис + + + + + Дюмон-д'Юрвиль + + + + + Восточный Тимор + + + + + О-в Пасхи + О-в Пасхи, стандартное время + О-в Пасхи, летнее время + + + + + Эквадор + + + + + Центральная Европа + Центральная Европа, стандартное время + Центральная Европа, летнее время + + + + + Восточная Европа + Восточная Европа, стандартное время + Восточная Европа, летнее время + + + + + Западная Европа + Западная Европа, стандартное время + Западная Европа, летнее время + + + + + Фолкленды + Фолкленды, стандартное время + Фолкленды, летнее время + + + + + Фиджи + Фиджи, стандартное время + Фиджи, летнее время + + + + + Французская Гвиана + + + + + Французское южное и антарктическое время + + + + + Галапагосские о-ва + + + + + Гамбье + + + + + Грузия + Грузия, стандартное время + Грузия, летнее время + + + + + О-ва Гилберта + + + + + Среднее время по Гринвичу + + + + + Восточная Гренландия + Восточная Гренландия, стандарное время + Восточная Гренландия, летнее время + + + + + Западная Гренландия + Западная Гренландия, стандартное время + Западная Гренландия, летнее время + + + + + Гуам + + + + + Персидский залив + + + + + Гайана + + + + + Гавайско-алеутское время + Гавайско-алеутское стандартное время + Гавайско-алеутское летнее время + + + + + Гонконг + Гонконг, стандартное время + Гонконг, летнее время + + + + + Ховд + Ховд, стандартное время + Ховд, летнее время + + + + + Индия + + + + + Индийский океан + + + + + Индокитай + + + + + Центральная Индонезия + + + + + Восточная Индонезия + + + + + Западная Индонезия + + + + + Иран + Иран, стандартное время + Иран, летнее время + + + + + Иркутск + Иркутск, стандартное время + Иркутск, летнее время + + + + + Израиль + Израиль, стандартное время + Израиль, летнее время + + + + + Япония + Япония, стандартное время + Япония, летнее время + + + + + Время в Петропавловску-Камчатскому + Стандартное время в Петропавловску-Камчатскому + Летнее время в Петропавловске-Камчатском + + + + + Восточный Казахстан + + + + + Западный Казахстан + + + + + Корея + Корея, стандартное время + Корея, летнее время + + + + + Косраэ + + + + + Красноярск + Красноярск, стандартное время + Красноярск, летнее время + + + + + Киргизия + + + + + Шри-Ланка + + + + + О-ва Лайн + + + + + Лорд-Хау + Лорд-Хау, стандартное время + Лорд-Хау, летнее время + + + + + Макао + Макао, стандартное время + Макао, летнее время + + + + + Маккуори + + + + + Магадан + Магадан, стандартное время + Магадан, летнее время + + + + + Малайзия + + + + + Мальдивы + + + + + Маркизские о-ва + + + + + Маршалловы о-ва + + + + + Маврикий + Маврикий, стандартное время + Маврикий, летнее время + + + + + Моусон + + + + + Улан-Батор + Улан-Батор, стандартное время + Улан-Батор, летнее время + + + + + Москва + Москва, стандартное время + Москва, летнее время + + + + + Мьянма + + + + + Науру + + + + + Непал + + + + + Новая Каледония + Новая Каледония, стандартное время + Новая Каледония, летнее время + + + + + Новая Зеландия + Новая Зеландия, стандартное время + Новая Зеландия, летнее время + + + + + Ньюфаундленд + Ньюфаундленд, стандартное время + Ньюфаундленд, летнее время + + + + + Ниуэ + + + + + Норфолк + + + + + Фернанду-ди-Норонья + Фернанду-ди-Норонья, стандартное время + Фернанду-ди-Норонья, летнее время + + + + + Северные Марианские о-ва + + + + + Новосибирск + Новосибирск, стандартное время + Новосибирск, летнее время + + + + + Омск + Омск, стандартное время + Омск, летнее время + + + + + Пакистан + Пакистан, стандартное время + Пакистан, летнее время + + + + + Палау + + + + + Папуа – Новая Гвинея + + + + + Парагвай + Парагвай, стандартное время + Парагвай, летнее время + + + + + Перу + Перу, стандартное время + Перу, летнее время + + + + + Филиппины + Филиппины, стандартное время + Филиппины, летнее время + + + + + О-ва Феникс + + + + + Сен-Пьер и Микелон + Сен-Пьер и Микелон, стандартное время + Сен-Пьер и Микелон, летнее время + + + + + Питкэрн + + + + + О-ва Понапе + + + + + Кызылорда* + Кызылорда, стандартное время* + Кызылорда, летнее время* + + + + + Реюньон + + + + + Ротера + + + + + Сахалин + Сахалин, стандартное время + Сахалин, летнее время + + + + + Время в Самаре + Самарское стандартное время + Самарское летнее время + + + + + Самоа + Самоа, стандартное время + Самоа, летнее время + + + + + Сейшелы + + + + + Сингапур + + + + + Соломоновы о-ва + + + + + Южная Георгия + + + + + Суринам + + + + + Сёва + + + + + О-в Таити + + + + + Тайвань + Тайвань, стандартное время + Тайвань, летнее время + + + + + Таджикистан + + + + + Токелау + + + + + Тонга + Тонга, стандартное время + Тонга, летнее время + + + + + Чуук + + + + + Туркмения + Туркмения, стандартное время + Туркмения, летнее время + + + + + Тувалу + + + + + Уругвай + Уругвай, стандартное время + Уругвай, летнее время + + + + + Узбекистан + Узбекистан, стандартное время + Узбекистан, летнее время + + + + + Вануату + Вануату, стандартное время + Вануату, летнее время + + + + + Венесуэла + + + + + Владивосток + Владивосток, стандартное время + Владивосток, летнее время + + + + + Волгоград + Волгоград, стандартное время + Волгоград, летнее время + + + + + Восток + + + + + О-в Уэйк + + + + + Уоллис и Футуна + + + + + Якутск + Якутск, стандартное время + Якутск, летнее время + + + + + Екатеринбург + Екатеринбург, стандартное время + Екатеринбург, летнее время + + + + + + + , +   + ; + % + + + - + E + × + + + не число + + + + + #,##0.### + + + + + 0 тысяча + 0 тысячи + 0 тысяч + 0 тысячи + 00 тысяча + 00 тысячи + 00 тысяч + 00 тысячи + 000 тысяча + 000 тысячи + 000 тысяч + 000 тысячи + 0 миллион + 0 миллиона + 0 миллионов + 0 миллиона + 00 миллион + 00 миллиона + 00 миллионов + 00 миллиона + 000 миллион + 000 миллиона + 000 миллионов + 000 миллиона + 0 миллиард + 0 миллиарда + 0 миллиардов + 0 миллиарда + 00 миллиард + 00 миллиарда + 00 миллиардов + 00 миллиарда + 000 миллиард + 000 миллиарда + 000 миллиардов + 000 миллиарда + 0 триллион + 0 триллиона + 0 триллионов + 0 триллиона + 00 триллион + 00 триллиона + 00 триллионов + 00 триллиона + 000 триллион + 000 триллиона + 000 триллионов + 000 триллиона + + + + + 0 тыс'.' + 0 тыс'.' + 0 тыс'.' + 0 тыс'.' + 00 тыс'.' + 00 тыс'.' + 00 тыс'.' + 00 тыс'.' + 000 тыс'.' + 000 тыс'.' + 000 тыс'.' + 000 тыс'.' + 0 млн + 0 млн + 0 млн + 0 млн + 00 млн + 00 млн + 00 млн + 00 млн + 000 млн + 000 млн + 000 млн + 000 млн + 0 млрд + 0 млрд + 0 млрд + 0 млрд + 00 млрд + 00 млрд + 00 млрд + 00 млрд + 000 млрд + 000 млрд + 000 млрд + 000 млрд + 0 трлн + 0 трлн + 0 трлн + 0 трлн + 00 трлн + 00 трлн + 00 трлн + 00 трлн + 000 трлн + 000 трлн + 000 трлн + 000 трлн + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + Андоррская песета + андоррская песета + андоррские песеты + андоррская песета + андоррских песет + + + Дирхам (ОАЭ) + дирхам (ОАЭ) + дирхама (ОАЭ) + дирхамов (ОАЭ) + дирхама (ОАЭ) + + + Афгани (1927–2002) + + + Афганский афгани + афганский афгани + афганских афгани + афганских афгани + афганского афгани + + + Албанский лек + албанский лек + албанских лека + албанских леков + албанских леков + + + Армянский драм + армянский драм + армянских драма + армянских драмов + армянских драмов + + + Нидерландский антильский гульден + нидерландский антильский гульден + нидерландских антильских гульдена + нидерландских антильских гульденов + идерландского антильского гульдена + + + Ангольская кванза + ангольская кванза + ангольские кванзы + ангольских кванз + ангольской кванзы + + + Ангольская кванза (1977–1990) + ангольских кванз (1977–1991) + ангольские кванзы (1977–1991) + ангольских кванз (1977–1991) + ангольских кванз (1977–1991) + + + Ангольская новая кванза (1990–2000) + + + Ангольская кванза реюстадо (1995–1999) + ангольских кванз реюстадо (1995–1999) + ангольские кванзы реюстадо (1995–1999) + ангольских кванз реюстадо (1995–1999) + ангольских кванз реюстадо (1995–1999) + + + Аргентинский аустрал + + + Аргентинское песо (1983–1985) + + + Аргентинское песо + аргентинское песо + аргентинских песо + аргентинских песо + аргентинского песо + + + Австрийский шиллинг + + + Австралийский доллар + австралийский доллар + австралийских доллара + австралийских долларов + австралийского доллара + A$ + + + Арубанский флорин + арубанский флорин + арубанских флорина + арубанских флоринов + арубанского флорина + + + Старый азербайджанский манат + + + Азербайджанский манат + азербайджанский манат + азербайджанских маната + азербайджанских манатов + азербайджанского маната + + + Динар Боснии и Герцеговины + + + Конвертируемая марка Боснии и Герцеговины + боснийская конвертируемая марка + боснийские конвертируемые марки + боснийских конвертируемых марок + боснийской конвертируемой марки + + + Барбадосский доллар + барбадосский доллар + барбадосских доллара + барбадосских долларов + барбадосского доллара + + + Бангладешская така + бангладешская така + бангладешских таки + бангладешских так + бангладешской таки + + + Бельгийский франк (конвертируемый) + + + Бельгийский франк + + + Бельгийский франк (финансовый) + + + Лев + + + Болгарский лев + болгарский лев + болгарских лева + болгарских левов + болгарского лева + + + Бахрейнский динар + бахрейнский динар + бахрейнских динара + бахрейнских динаров + бахрейнского динара + + + Бурундийский франк + бурундийский франк + бурундийских франка + бурундийских франков + бурундийского франка + + + Бермудский доллар + бермудский доллар + бермудских доллара + бермудских долларов + бермудского доллара + + + Брунейский доллар + брунейский доллар + брунейских доллара + брунейских долларов + брунейского доллара + + + Боливийский боливиано + боливиано + боливиано + боливиано + боливиано + + + Боливийское песо + + + Боливийский мвдол + + + Бразильский новый крузейро (1967–1986) + + + Бразильское крузадо + + + Бразильский крузейро (1990–1993) + + + Бразильский реал + бразильский реал + бразильских реала + бразильских реалов + бразильского реала + R$ + + + Бразильское новое крузадо + + + Бразильский крузейро + + + Багамский доллар + багамский доллар + багамских доллара + багамских долларов + багамского доллара + + + Бутанский нгултрум + нгултрум + нгултрума + нгултрумов + нгултрума + + + Джа + + + Ботсванская пула + ботсванская пула + ботсванских пулы + ботсванских пул + ботсванской пулы + + + Белорусский рубль (1994–1999) + + + Белорусский рубль + белорусский рубль + белорусских рубля + белорусских рублей + белорусского рубля + + + Белизский доллар + белизский доллар + белизских доллара + белизских долларов + белизского доллара + + + Канадский доллар + канадский доллар + канадских доллара + канадских долларов + канадского доллара + CA$ + + + Конголезский франк + конголезский франк + конголезских франка + конголезских франков + конголезского франка + + + WIR евро + + + Швейцарский франк + швейцарский франк + швейцарских франка + швейцарских франков + швейцарского франка + + + WIR франк + + + Условная расчетная единица Чили + + + Чилийское песо + чилийское песо + чилийских песо + чилийских песо + чилийского песо + + + Юань Ренминби + китайский юань + китайских юаня + китайских юаней + китайского юаня + CN¥ + + + Колумбийское песо + колумбийское песо + колумбийских песо + колумбийских песо + колумбийского песо + + + Единица реальной стоимости Колумбии + + + Костариканский колон + костариканский колон + костариканских колона + костариканских колонов + костариканского колона + + + Старый Сербский динар + + + Чехословацкая твердая крона + + + Кубинское конвертируемое песо + кубинское конвертируемое песо + кубинских конвертируемых песо + кубинских конвертируемых песо + кубинского конвертируемого песо + + + Кубинское песо + кубинское песо + кубинских песо + кубинских песо + кубинского песо + + + Эскудо Кабо-Верде + эскудо Кабо-Верде + эскудо Кабо-Верде + эскудо Кабо-Верде + эскудо Кабо-Верде + + + Кипрский фунт + + + Чешская крона + чешская крона + чешские кроны + чешских крон + чешской кроны + + + Восточногерманская марка + + + Немецкая марка + + + Франк Джибути + франк Джибути + франка Джибути + франков Джибути + франка Джибути + + + Датская крона + датская крона + датские кроны + датских крон + датской кроны + + + Доминиканское песо + доминиканское песо + доминиканских песо + доминиканских песо + доминиканского песо + + + Алжирский динар + алжирский динар + алжирских динара + алжирских динаров + алжирского динара + + + Эквадорский сукре + + + Постоянная единица стоимости Эквадора + + + Эстонская крона + + + Египетский фунт + египетский фунт + египетских фунта + египетских фунтов + египетского фунта + + + Накфа + эритрейская накфа + эритрейские накфы + эритрейских накф + эритрейской накфы + + + Испанская песета (А) + + + Испанская песета (конвертируемая) + + + Испанская песета + + + Эфиопский быр + эфиопский быр + эфиопских быра + эфиопских быров + эфиопского быра + + + Евро + евро + евро + евро + евро + + + + Финская марка + + + Доллар Фиджи + доллар Фиджи + доллара Фиджи + долларов Фиджи + доллара Фиджи + + + Фунт Фолклендских островов + фунт Фолклендских островов + фунта Фолклендских островов + фунтов Фолклендских островов + фунта Фолклендских островов + + + Французский франк + + + Английский фунт стерлингов + английский фунт стерлингов + английских фунта стерлингов + английских фунтов стерлингов + английского фунта стерлингов + £ + + + Грузинский купон + + + Грузинский лари + грузинский лари + грузинских лари + грузинских лари + грузинского лари + + + Ганский седи (1979–2007) + + + Ганский седи + ганский седи + ганских седи + ганских седи + ганского седи + + + Гибралтарский фунт + гибралтарский фунт + гибралтарских фунта + гибралтарских фунтов + гибралтарского фунта + + + Гамбийский даласи + гамбийский даласи + гамбийских даласи + гамбийских даласи + гамбийского даласи + + + Гвинейский франк + гвинейский франк + гвинейских франка + гвинейских франков + гвинейского франка + + + Гвинейская сили + + + Эквеле экваториальной Гвинеи + + + Греческая драхма + + + Гватемальский кетсаль + гватемальский кетсаль + гватемальских кетсаля + гватемальских кетсалей + гватемальского кетсаля + + + Эскудо Португальской Гвинеи + + + Песо Гвинеи-Бисау + + + Гайанский доллар + гайанский доллар + гайанских доллара + гайанских долларов + гайанского доллара + + + Гонконгский доллар + гонконгский доллар + гонконгских доллара + гонконгских долларов + гонконгского доллара + HK$ + + + Гондурасская лемпира + гондурасская лемпира + гондурасские лемпиры + гондурасских лемпир + гондурасской лемпиры + + + Хорватский динар + + + Хорватская куна + хорватская куна + хорватских куны + хорватских кун + хорватской куны + + + Гаитянский гурд + гаитянский гурд + гаитянских гурда + гаитянских гурдов + гаитянского гурда + + + Венгерский форинт + венгерский форинт + венгерских форинта + венгерских форинтов + венгерского форинта + + + Индонезийская рупия + индонезийская рупия + индонезийские рупии + индонезийских рупий + индонезийской рупии + + + Ирландский фунт + + + Израильский фунт + + + Новый израильский шекель + новый израильский шекель + новых израильских шекеля + новых израильских шекелей + нового израильского шекеля + + + + Индийская рупия + индийская рупия + индийские рупии + индийских рупий + индийской рупии + + + + Иракский динар + иракский динар + иракских динара + иракских динаров + иракского динара + + + Иранский риал + иранский риал + иранских риала + иранских риалов + иранского риала + + + Исландская крона + исландская крона + исландские кроны + исландских крон + исландской кроны + + + Итальянская лира + + + Ямайский доллар + ямайский доллар + ямайских доллара + ямайских долларов + ямайского доллара + + + Иорданский динар + иорданский динар + иорданских динара + иорданских динаров + иорданского динара + + + Японская иена + японская иена + японские иены + японских иен + японской иены + ¥ + + + Кенийский шиллинг + кенийский шиллинг + кенийских шиллинга + кенийских шиллингов + кенийского шиллинга + + + Киргизский сом + киргизский сом + киргизских сома + киргизских сома + киргизского сома + + + Камбоджийский риель + камбоджийский риель + камбоджийских риеля + камбоджийских риелей + камбоджийского риеля + + + Франк Коморских островов + франк Коморских островов + франка Коморских островов + франков Коморских островов + франка Коморских островов + + + Северо-корейская вона + северокорейская вона + северокорейские воны + северокорейских вон + северокорейской воны + + + Вона Республики Кореи + южнокорейская вона + южнокорейские воны + южнокорейских вон + южнокорейской воны + + + + Кувейтский динар + кувейтский динар + кувейтских динара + кувейтских динаров + кувейтского динара + + + Доллар Каймановых островов + доллар Каймановых островов + доллара Каймановых островов + долларов Каймановых островов + доллара Каймановых островов + + + Казахский тенге + казахский тенге + казахских тенге + казахских тенге + казахского тенге + + + Кип ЛНДР + лаосский кип + лаосских кипа + лаосских кипов + лаосского кипа + + + Ливанский фунт + ливанский фунт + ливанских фунта + ливанских фунтов + ливанского фунта + + + Шри-Ланкийская рупия + шри-ланкийская рупия + шри-ланкийские рупии + шри-ланкийских рупий + шри-ланкийской рупии + + + Либерийский доллар + либерийский доллар + либерийских доллара + либерийских долларов + либерийского доллара + + + Лоти + + + Литовский лит + литовский лит + литовских лита + литовских литов + литовского лита + + + Литовский талон + + + Конвертируемый франк Люксембурга + + + Люксембургский франк + + + Финансовый франк Люксембурга + + + Латвийский лат + латвийский лат + латвийских лата + латвийских латов + латвийского лата + + + Латвийский рубль + + + Ливийский динар + ливийский динар + ливийских динара + ливийских динаров + ливийского динара + + + Марокканский дирхам + марокканский дирхам + марокканских дирхама + марокканских дирхамов + марокканского дирхама + + + Марокканский франк + + + Молдавский лей + молдавский лей + молдавских лея + молдавских леев + молдавского лея + + + Малагасийский ариари + малагасийский ариари + малагасийских ариари + малагасийских ариари + малагасийского ариари + + + Малагасийский франк + + + Македонский динар + македонский динар + македонских динара + македонских динаров + македонского динара + + + Малийский франк + + + Кьят + мьянманский чат + мьянманских чата + мьянманских чатов + мьянманского чата + + + Монгольский тугрик + монгольский тугрик + монгольских тугрика + монгольских тугриков + монгольского тугрика + + + Патака Макао + патака Макао + патаки Макао + патак Макао + патаки Макао + + + Мавританская угия + мавританская угия + мавританские угии + мавританских угий + мавританской угии + + + Мальтийская лира + + + Мальтийский фунт + + + Маврикийская рупия + маврикийская рупия + маврикийские рупии + маврикийских рупий + маврикийской рупии + + + Мальдивская руфия + мальдивская руфия + мальдивские руфии + мальдивских руфий + мальдивской руфии + + + Малавийская квача + малавийская квача + малавийские квачи + малавийских квач + малавийской квачи + + + Мексиканское новое песо + мексиканское песо + мексиканских песо + мексиканских песо + мексиканского песо + MX$ + + + Мексиканское серебряное песо (1861–1992) + + + Мексиканская пересчетная единица (UDI) + + + Малайзийский ринггит + малайзийский ринггит + малайзийских ринггита + малайзийских ринггитов + малайзийского ринггита + + + Мозамбикское эскудо + + + Старый мозамбикский метикал + + + Мозамбикский метикал + мозамбикский метикал + мозамбикских метикала + мозамбикских метикалов + мозамбикского метикала + + + Доллар Намибии + доллар Намибии + доллара Намибии + долларов Намибии + доллара Намибии + + + Нигерийская найра + нигерийская найра + нигерийские найры + нигерийских найр + нигерийской найры + + + Никарагуанская кордоба (1988–1991) + + + Никарагуанская кордоба + никарагуанская кордоба + никарагуанские кордобы + никарагуанских кордоб + никарагуанской кордобы + + + Нидерландский гульден + + + Норвежская крона + норвежская крона + норвежские кроны + норвежских крон + норвежской кроны + + + Непальская рупия + непальская рупия + непальские рупии + непальских рупий + непальской рупии + + + Новозеландский доллар + новозеландский доллар + новозеландских доллара + новозеландских долларов + новозеландского доллара + NZ$ + + + Оманский риал + оманский риал + оманских риала + оманских риалов + оманского риала + + + Панамское бальбоа + панамский бальбоа + панамских бальбоа + панамских бальбоа + панамского бальбоа + + + Перуанское инти + + + Перуанский новый соль + перуанский новый соль + перуанских новых соля + перуанских новый солей + перуанского нового соля + + + Перуанский соль + + + Кина + кина + кины + кин + кины + + + Филиппинское песо + филиппинское песо + филиппинских песо + филиппинских песо + филиппинского песо + + + Пакистанская рупия + пакистанская рупия + пакистанские рупии + пакистанских рупий + пакистанской рупии + + + Польский злотый + польский злотый + польских злотых + польских злотых + польского злотого + + + Злотый + + + Португальское эскудо + + + Парагвайский гуарани + парагвайский гуарани + парагвайских гуарани + парагвайских гуарани + парагвайского гуарани + + + Катарский риал + катарский риал + катарских риала + катарских риалов + катарского риала + + + Родезийский доллар + + + Старый Румынский лей + + + Румынский лей + румынский лей + румынских лея + румынских леев + румынского лея + + + Сербский динар + сербский динар + сербских динара + сербских динаров + сербского динара + + + Российский рубль + российский рубль + российских рубля + российских рублей + российского рубля + руб. + + + Российский рубль (1991–1998) + р. + + + Франк Руанды + франк Руанды + франка Руанды + франков Руанды + франка Руанды + + + Саудовский риал + саудовский риал + саудовских риала + саудовских риалов + саудовского риала + + + Доллар Соломоновых островов + доллар Соломоновых островов + доллара Соломоновых островов + долларов Соломоновых островов + доллара Соломоновых островов + + + Сейшельская рупия + сейшельская рупия + сейшельские рупии + сейшельских рупий + сейшельской рупии + + + Суданский динар + + + Суданский фунт + суданский фунт + суданских фунта + суданских фунтов + суданского фунта + + + Старый суданский фунт + + + Шведская крона + шведская крона + шведские кроны + шведских крон + шведской кроны + + + Сингапурский доллар + сингапурский доллар + сингапурских доллара + сингапурских долларов + сингапурского доллара + + + Фунт острова Святой Елены + фунт острова Святой Елены + фунта острова Святой Елены + фунтов острова Святой Елены + фунта острова Святой Елены + + + Словенский толар + + + Словацкая крона + + + Леоне + леоне + леоне + леоне + леоне + + + Сомалийский шиллинг + сомалийский шиллинг + сомалийских шиллинга + сомалийских шиллингов + сомалийского шиллинга + + + Суринамский доллар + суринамский доллар + суринамских доллара + суринамских долларов + суринамского доллара + + + Суринамский гульден + + + Южносуданский фунт + Южносуданский фунт + южносуданских фунта + южносуданских фунтов + Южносуданский фунт + + + Добра Сант-Томе и Принсипи + добра Сан-Томе и Принсипи + добры Сан-Томе и Принсипи + добр Сан-Томе и Принсипи + добры Сан-Томе и Принсипи + + + Рубль СССР + + + Сальвадорский колон + + + Сирийский фунт + сирийский фунт + сирийских фунта + сирийских фунтов + сирийского фунта + + + Свазилендский лилангени + свазилендский лилангени + свазилендских эмалангени + свазилендских лилангени + свазилендского лилангени + + + Таиландский бат + таиландский бат + таиландских бата + таиландских батов + таиландского бата + ฿ + + + Таджикский рубль + + + Таджикский сомони + таджикский сомони + таджикских сомони + таджикских сомони + таджикского сомони + + + Туркменский манат + + + Туркменский новый манат + туркменский новый манат + туркменских новых маната + туркменских новых манатов + туркменского нового маната + ТМТ + + + Тунисский динар + тунисский динар + тунисских динара + тунисских динаров + тунисского динара + + + Паанга + паанга + паанги + паанг + паанга + + + Тиморское эскудо + + + Турецкая лира (1922–2005) + туркцкая лира + турецкие лиры + турецких лир + турецких лир + + + Турецкая лира + новая турецкая лира + новые турецкие лиры + новых турецких лир + новой турецкой лиры + + + Доллар Тринидада и Тобаго + доллар Тринидада и Тобаго + доллара Тринидада и Тобаго + долларов Тринидада и Тобаго + доллара Тринидада и Тобаго + + + Новый тайваньский доллар + новый тайваньский доллар + новых тайваньских доллара + новых тайваньских долларов + нового тайваньского доллара + NT$ + + + Танзанийский шиллинг + танзанийский шиллинг + танзанийских шиллинга + танзанийских шиллингов + танзанийского шиллинга + + + Украинская гривна + украинская гривна + украинские гривны + украинских гривен + украинской гривны + + + + Карбованец (украинский) + + + Старый угандийский шиллинг + + + Угандийский шиллинг + угандийский шиллинг + угандийских шиллинга + угандийских шиллингов + угандийского шиллинга + + + Доллар США + доллар США + доллара США + долларов США + доллара США + $ + + + Доллар США следующего дня + + + Доллар США текущего дня + + + Уругвайский песо (индекс инфляции) + + + Уругвайское старое песо (1975–1993) + + + Уругвайское песо + уругвайское песо + уругвайских песо + уругвайских песо + уругвайского песо + + + Узбекский сум + узбекский сум + узбекских сума + узбекских сумов + узбекского сума + + + Венесуэльский боливар (1871–2008) + + + Венесуэльский боливар + венесуэльский боливар + венесуэльских боливара + венесуэльских боливара + венесуэльского боливара + + + Вьетнамский донг + вьетнамский донг + вьетнамских донга + вьетнамских донгов + вьетнамского донга + + + + Вату + вату + вату + вату + вату + + + Тала Самоа + тала + талы + тал + талы + + + Франк КФА ВЕАС + франк КФА ВЕАС + франка КФА ВЕАС + франков КФА ВЕАС + франка КФА ВЕАС + FCFA + + + Серебро + + + Золото + + + Европейская составная единица + + + Европейская денежная единица + + + расчетная единица европейского валютного соглашения (XBC) + + + расчетная единица европейского валютного соглашения (XBD) + + + Восточно-карибский доллар + восточно-карибский доллар + восточно-карибских доллара + восточно-карибских доллара + восточно-карибского доллара + EC$ + + + СДР (специальные права заимствования) + + + ЭКЮ (единица европейской валюты) + + + Французский золотой франк + + + Французский UIC-франк + + + Франк КФА ВСЕАО + франк КФА ВСЕА + франка КФА ВСЕА + франков КФА ВСЕА + франка КФА ВСЕА + CFA + + + Палладий + + + Франк КФП + французский тихоокеанский франк + французских тихоокеанских франка + франков КФП + французского тихоокеанского франка + CFPF + + + Платина + + + единица RINET-фондов + + + тестовый валютный код + + + Неизвестная или недействительная валюта + Неизвестная или недействительная валюта + Неизвестная или недействительная валюта + Неизвестная или недействительная валюта + Неизвестная или недействительная валюта + XXXX + + + Йеменский динар + + + Йеменский риал + йеменский риал + йеменских риала + йеменских риалов + йеменского риала + + + Югославский твердый динар + + + Югославский новый динар + + + Югославский динар + + + Южноафриканский рэнд (финансовый) + + + Южноафриканский рэнд + южноафриканский рэнд + южноафриканских рэнда + южноафриканских рэндов + южноафриканского рэнда + + + Квача (замбийская) (1968–2012) + замбийская квача (1968–2012) + замбийские квачи (1968–2012) + замбийских квач (1968–2012) + замбийской квачи (1968–2012) + + + Квача (замбийская) + замбийская квача + замбийские квачи + замбийских квач + замбийской квачи + + + Новый заир + + + Заир + + + Доллар Зимбабве + + + Доллар Зимбабве (2009) + + + + {0}+ + {0}-{1} + + + + + + {0} на {1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}минута + {0} минуты + {0}минут + {0}минуты + + + {0}секунда + {0} секунды + {0}секунд + {0}секунды + + + {0}градус + {0} градуса + {0} градусов + {0} градуса + + + {0} акр + {0} акра + {0} акров + {0} акра + + + {0} гектар + {0} гектара + {0} гектар + {0} гектара + + + {0} квадратный фут + {0} квадратных фута + {0} квадратных футов + {0} квадратных фута + + + {0} квадратный километр + {0} квадратных километра + {0} квадратных километров + {0} квадратных километра + + + {0} квадратный метр + {0} квадратных метра + {0} квадратных метров + {0} квадратных метра + + + {0} квадратная миля + {0} квадратных мили + {0} квадратных миль + {0} квадратных мили + + + {0} день + {0} дня + {0} дней + {0} дня + + + {0} час + {0} часа + {0} часов + {0} часа + + + {0} миллисекунда + {0} миллисекунды + {0} миллисекунды + {0} миллисекунды + + + {0} минута + {0} минуты + {0} минут + {0} минуты + + + {0} месяц + {0} месяца + {0} месяцев + {0} месяца + + + {0} секунда + {0} секунды + {0} секунд + {0} секунды + + + {0} неделя + {0} недели + {0} недель + {0} недели + + + {0} год + {0} года + {0} лет + {0} года + + + {0} сантиметр + {0} сантиметра + {0} сантиметров + {0} сантиметра + + + {0} фут + {0} фута + {0} футов + {0} фута + + + {0} дюйм + {0} дюйма + {0} дюймов + {0} дюйма + + + {0} километр + {0} километра + {0} километров + {0} километра + + + {0} световой год + {0} световых года + {0} световых лет + {0} световых года + + + {0} метр + {0} метра + {0} метров + {0} метра + + + {0} миля + {0} мили + {0} миль + {0} мили + + + {0} миллиметр + {0} миллиметра + {0} миллиметров + {0} миллиметра + + + {0} пикометр + {0} пикометра + {0} пикометров + {0} пикометра + + + {0} ярд + {0} ярда + {0} ярдов + {0} ярда + + + {0} грамм + {0} грамма + {0} грамм + {0} грамма + + + {0} килограмм + {0} килограмма + {0} килограмм + {0} килограмма + + + {0} унция + {0} унции + {0} унций + {0} унции + + + {0} фунт + {0} фунта + {0} фунтов + {0} фунта + + + {0} лошадиная сила + {0} лошадиных силы + {0} лошадиных сил + {0} лошадиных сил + + + {0} киловатт + {0} киловатта + {0} киловатт + {0} киловатта + + + {0} ватт + {0} ватта + {0} ватт + {0} ватта + + + {0} гектопаскаль + {0} гектопаскаля + {0} гектопаскалей + {0} гектопаскаля + + + {0} дюйм ртутного столба + {0} дюйма ртутного столба + {0} дюймов ртутного столба + {0}дюйма ртутного столба + + + {0} миллибар + {0} миллибара + {0} миллибар + {0} миллибара + + + {0} километр в час + {0} километра в час + {0} километров в час + {0} километра в час + + + {0} метр в секунду + {0} метра в секундыу + {0} метров в секунду + {0} метра в секунду + + + {0} миля в час + {0} мили в час + {0} миль в час + {0} миль в час + + + {0}градус Цельсия + {0} градуса Цельсия + {0}градусов Цельсия + {0}градуса Цельсия + + + {0}градус по Фаренгейту + {0} градуса по Фаренгейту + {0}градусов по Фаренгейту + {0}градуса по Фаренгейту + + + {0} кубический километр + {0} кубических километра + {0} кубических километров + {0} кубических километра + + + {0} кубическая миля + {0} кубических мили + {0} кубических мили + {0} кубических мили + + + {0} литр + {0} литра + {0} литра + {0} литра + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} акр + {0} акра + {0} акров + {0} акра + + + {0} га + {0} га + {0} га + {0} га + + + {0} кв. фут + {0} кв. фута + {0} кв. футов + {0} кв. фута + + + {0} км² + {0} км² + {0} км² + {0} км² + + + {0} м² + {0} м² + {0} м² + {0} м² + + + {0} кв. миля + {0} кв. мили + {0} кв. миль + {0} кв. мили + + + {0} дн + {0} дн + {0} дн + {0} дн + + + {0} ч + {0} ч + {0} ч + {0} ч + + + {0} мс + {0} мс + {0} мс + {0} мс + + + {0} мин + {0} мин + {0} мин + {0} мин + + + {0} мес + {0} мес + {0} мес + {0} мес + + + {0} с + {0} с + {0} с + {0} с + + + {0} нед + {0} нед + {0} нед + {0} нед + + + {0} г. + {0} года + {0} лет + {0} г. + + + {0} см + {0} см + {0} см + {0} см + + + {0} фут + {0} фута + {0} футов + {0} фута + + + {0} дюйм + {0} дюйма + {0} дюймов + {0} дюйма + + + {0} км + {0} км + {0} км + {0} км + + + {0} св. г. + {0} св. л. + {0} св. л. + {0} св. г. + + + {0} м + {0} м + {0} м + {0} м + + + {0} миля + {0} мили + {0} миль + {0} мили + + + {0} мм + {0} мм + {0} мм + {0} мм + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} ярд + {0} ярда + {0} ярдов + {0} ярда + + + {0} гр + {0} гр + {0} гр + {0} гр + + + {0} кг + {0} кг + {0} кг + {0} кг + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} л.с. + {0} л.с. + {0} л.с. + {0} л.с. + + + {0} кВт + {0} кВт + {0} кВт + {0} кВт + + + {0} Вт + {0} Вт + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + {0} гПа + {0} гПа + + + {0} дюйм рт. ст + {0} дюйма рт. ст + {0} дюймов рт. ст + {0} дюйма рт. ст + + + {0} мбар + {0} мбар + {0} мбар + {0} мбар + + + {0} км/ч + {0} км/ч + {0} км/ч + {0} км/ч + + + {0} м/с + {0} м/с + {0} м/с + {0} м/с + + + {0} миль/час + {0} мили/час + {0} миль/час + {0} миль/час + + + {0} °C + {0} °C + {0} °C + {0} °C + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} км³ + {0} км³ + {0} км³ + {0} км³ + + + {0} куб. миля + {0} куб. мили + {0} куб. мили + {0} куб. мили + + + {0} л + {0} л + {0} л + {0} л + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} акр + {0} акра + {0} акров + {0} акра + + + {0} га + {0} га + {0} га + {0} га + + + {0} кв. фут + {0} кв. фута + {0} кв. футов + {0} кв. фута + + + {0} км² + {0} км² + {0} км² + {0} км² + + + {0} м² + {0} м² + {0} м² + {0} м² + + + {0} кв. миля + {0} кв. мили + {0} кв. миль + {0} кв. мили + + + {0} д. + {0} д. + {0} д. + {0} д. + + + {0} ч + {0} ч + {0} ч + {0} ч + + + {0} мс + {0} мс + {0} мс + {0} мс + + + {0} м. + {0} мин + {0} мин + {0} мин + + + {0} м. + {0} м. + {0} м. + {0} м. + + + {0} с + {0} с + {0} с + {0} с + + + {0} н. + {0} н. + {0} н. + {0} н. + + + {0} г. + {0} л. + {0} л. + {0} г. + + + {0} см + {0} см + {0} см + {0} см + + + {0} фут + {0} фута + {0} футов + {0} фута + + + {0} дюйм + {0} дюйма + {0} дюймов + {0} дюйма + + + {0} км + {0} км + {0} км + {0} км + + + {0} св. г. + {0} св. л. + {0} св. л. + {0} св. г. + + + {0} м + {0} м + {0} м + {0} м + + + {0} миля + {0} миль + {0} миль + {0} мили + + + {0} мм + {0} мм + {0} мм + {0} мм + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} ярд + {0} ярда + {0} ярдов + {0} ярда + + + {0} гр + {0} гр + {0} гр + {0} гр + + + {0} кг + {0} кг + {0} кг + {0} кг + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} л.с. + {0} л.с. + {0} л.с. + {0} л.с. + + + {0} кВт + {0} кВт + {0} кВт + {0} кВт + + + {0} Вт + {0} Вт + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + {0} гПа + {0} гПа + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} мбар + {0} мбар + {0} мбар + {0} мбар + + + {0} км/ч + {0} км/ч + {0} км/ч + {0} км/ч + + + {0} м/с + {0} м/с + {0} м/с + {0} м/с + + + {0} миль/ч + {0} миль/ч + {0} миль/ч + {0} миль/ч + + + {0} ° + {0} ° + {0} ° + {0} ° + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} км³ + {0} км³ + {0} км³ + {0} км³ + + + {0} куб. миля + {0} куб. мили + {0} куб. мили + {0} куб. мили + + + {0} л + {0} л + {0} л + {0} л + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + да:д + нет:н + + + + diff --git a/library/Zend/Locale/Data/ru_BY.xml b/library/Zend/Locale/Data/ru_BY.xml new file mode 100755 index 000000000..fdea5f4a6 --- /dev/null +++ b/library/Zend/Locale/Data/ru_BY.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + р. + + + RUR + + + + diff --git a/library/Zend/Locale/Data/ru_KG.xml b/library/Zend/Locale/Data/ru_KG.xml new file mode 100755 index 000000000..3e86b51d7 --- /dev/null +++ b/library/Zend/Locale/Data/ru_KG.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + сом + + + + diff --git a/library/Zend/Locale/Data/ru_KZ.xml b/library/Zend/Locale/Data/ru_KZ.xml new file mode 100755 index 000000000..71a4f4baa --- /dev/null +++ b/library/Zend/Locale/Data/ru_KZ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ru_MD.xml b/library/Zend/Locale/Data/ru_MD.xml new file mode 100755 index 000000000..187d0273c --- /dev/null +++ b/library/Zend/Locale/Data/ru_MD.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + L + + + + diff --git a/library/Zend/Locale/Data/ru_RU.xml b/library/Zend/Locale/Data/ru_RU.xml new file mode 100755 index 000000000..917f30e9c --- /dev/null +++ b/library/Zend/Locale/Data/ru_RU.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ru_UA.xml b/library/Zend/Locale/Data/ru_UA.xml new file mode 100755 index 000000000..a141fcdba --- /dev/null +++ b/library/Zend/Locale/Data/ru_UA.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + слэйви + маршальский + клингон + + + + + + + + + d MMMM y G + + + + + d MMM y G + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d MMM y G + + + + h-h 'ч'. a + + + HH-HH 'ч'. + + + h-h 'ч'. a, v + + + HH-HH 'ч'., v + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y 'г'. + E, d MMM - E, d MMM y 'г'. + E, d MMM y - E, d MMM y 'г'. + + + LLLL-LLLL y + LLLL y - LLLL y + + + + + + + + + d MMMM y + + + + + d MMM y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d MMM y + + + + h-h 'ч'. a + + + HH-HH 'ч'. + + + h-h 'ч'. a, v + + + HH-HH 'ч'., v + + + E, d - E, d MMM + E, d MMM - E, d MMM + + + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + E, dd.MM.y - E, dd.MM.y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E, d - E, d MMM y 'г'. + E, d MMM - E, d MMM y 'г'. + E, d MMM y - E, d MMM y 'г'. + + + LLLL-LLLL y + LLLL y - LLLL y + + + + + + + + diff --git a/library/Zend/Locale/Data/rw.xml b/library/Zend/Locale/Data/rw.xml new file mode 100755 index 000000000..f80956ddf --- /dev/null +++ b/library/Zend/Locale/Data/rw.xml @@ -0,0 +1,296 @@ + + + + + + + + + + + + Ikinyafurikaneri + Inyamuhariki + Icyarabu + Icyasamizi + Inyazeribayijani + Ikibelarusiya + Urunyabuligariya + Ikibengali + Inyebiritoni + Inyebosiniya + Igikatalani + Igiceke + Ikigaluwa + Ikidaninwa + Ikidage + Ikigereki + Icyongereza + Icyesiperanto + Icyesipanyolo + Icyesitoniya + Ikibasiki + Inyeperisi + Igifinilande + Ikinyafilipine + Inyefaroyizi + Igifaransa + Igifiriziyani + Ikirilandi + Ikigaluwa cy'Igisweduwa + Ikigalisiya + Inyaguwarani + Inyegujarati + Igiheburayo + Igihindi + Igikorowasiya + Igihongiriya + Ikinyarumeniya + Ururimi Gahuzamiryango + Ikinyendoziya + Uruhuzandimi + Igisilande + Igitaliyani + Ikiyapani + Inyejava + Inyejeworujiya + Igikambodiya + Igikanada + Igikoreya + Inyekuridishi + Inkerigizi + Ikilatini + Ilingala + Ikilawotiyani + Ikilituwaniya + Ikinyaletoviyani + Ikimasedoniyani + Ikimalayalami + Ikimongoli + Ikimarati + Ikimalayi + Ikimaliteze + Ikinepali + Ikinerilande + Inyenoruveji (Nyonorusiki) + Ikinoruveji + Inyogusitani + Inyoriya + Igipunjabi + Igipolone + Impashito + Igiporutugali + Inyeporutigali (Brezili) + Inyeporutigali (Igiporutigali) + Ikinyarumaniya + Ikirusiya + Kinyarwanda + Igisansikiri + Igisindi + Inyeseribiya na Korowasiya + Inyesimpaleze + Igisilovaki + Ikinyasiloveniya + Igisomali + Icyalubaniya + Igiseribe + Inyesesoto + Inyesudani + Igisuweduwa + Igiswahili + Igitamili + Igitelugu + Igitayi + Inyatigirinya + Inyeturukimeni + Inyekilingoni + Igiturukiya + Inyetuwi + Ikiwiguri + Ikinyayukereni + Inyeyurudu + Inyeyuzubeki + Ikinyaviyetinamu + Inyehawusa + Inyeyidishi + Inyezulu + + + Rwanda + Igitonga + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + « + » + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG yy/MM/dd + + + + + + + + + mut. + gas. + wer. + mat. + gic. + kam. + nya. + kan. + nze. + ukw. + ugu. + uku. + + + Mutarama + Gashyantare + Werurwe + Mata + Gicuransi + Kamena + Nyakanga + Kanama + Nzeli + Ukwakira + Ugushyingo + Ukuboza + + + + + + + cyu. + mbe. + kab. + gtu. + kan. + gnu. + gnd. + + + Ku cyumweru + Kuwa mbere + Kuwa kabiri + Kuwa gatatu + Kuwa kane + Kuwa gatanu + Kuwa gatandatu + + + + + + + I1 + I2 + I3 + I4 + + + igihembwe cya mbere + igihembwe cya kabiri + igihembwe cya gatatu + igihembwe cya kane + + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + +HH:mm;-HH:mm + GMT{0} + + + + + , + . + + + + RF + + + + + diff --git a/library/Zend/Locale/Data/rw_RW.xml b/library/Zend/Locale/Data/rw_RW.xml new file mode 100755 index 000000000..76201a9e1 --- /dev/null +++ b/library/Zend/Locale/Data/rw_RW.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/rwk.xml b/library/Zend/Locale/Data/rwk.xml new file mode 100755 index 000000000..defbc7e67 --- /dev/null +++ b/library/Zend/Locale/Data/rwk.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakanyi + Kiamharyi + Kyiarabu + Kyibelarusi + Kyibulgaryia + Kyibangla + Kyichecki + Kyijerumani + Kyigiriki + Kyingereza + Kyihispania + Kyiajemi + Kyifaransa + Kyihausa + Kyihindi + Kyihungari + Kyiindonesia + Kyiigbo + Kyiitaliano + Kyijapani + Kyijava + Kyikambodia + Kyikorea + Kyimalesia + Kyiburma + Kyinepali + Kyiholanzi + Kyipunjabi + Kyipolandi + Kyireno + Kyiromania + Kyirusi + Kyinyarwanda + Kiruwa + Kyisomalyi + Kyiswidi + Kyitamil + Kyitailandi + Kyiturukyi + Kyiukrania + Kyiurdu + Kyivietinamu + Kyiyoruba + Kyichina + Kyizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Des + + + Januari + Februari + Machi + Aprilyi + Mei + Junyi + Julyai + Agusti + Septemba + Oktoba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Jpi + Jtt + Jnn + Jtn + Alh + Iju + Jmo + + + Jumapilyi + Jumatatuu + Jumanne + Jumatanu + Alhamisi + Ijumaa + Jumamosi + + + + + J + J + J + J + A + I + J + + + + + + + R1 + R2 + R3 + R4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + + + utuko + kyiukonyi + + + + + + Kabla ya Kristu + Baada ya Kristu + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Kacha + + + Maka + + + Mori + + + Wiikyi + + + Mfiri + Ukou + Inu + Ngama + + + Mfiri o siku + + + Saa + + + Dakyika + + + Sekunde + + + Mfiri o saa + + + + + + + + #,##0.00¤ + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Faranga ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Dinari ya Sudani + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + TSh + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Haya:H + Ote:O + + + + diff --git a/library/Zend/Locale/Data/rwk_TZ.xml b/library/Zend/Locale/Data/rwk_TZ.xml new file mode 100755 index 000000000..090e9e9c0 --- /dev/null +++ b/library/Zend/Locale/Data/rwk_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sah.xml b/library/Zend/Locale/Data/sah.xml new file mode 100755 index 000000000..7988fc525 --- /dev/null +++ b/library/Zend/Locale/Data/sah.xml @@ -0,0 +1,417 @@ + + + + + + + + + + + + Абхаастыы + Аппырыкааныстыы + Араабтыы + Адьырбайдьаанныы + Бөлөрүүстүү + Булҕаардыы + Бенгаллыы + Тибиэттии + Босныйалыы + Каталаанныы + Чиэскэйдии + Даатскайдыы + Ниэмэстии + Гириэктии + Аҥылычаанныы + Ыспаанныы + Эстиэнийэлии + Пиэрсийэлии + Пииннии + Пилипииннии + Пырансуустуу + Бэҥгиэрдии + Эрмээннии + Ытаалыйалыы + Дьоппуоннуу + Гурусууннуу + Хаһаахтыы + Кэриэйдии + Кыргыстыы + Латыынныы + Моҕуоллуу + Ньыпааллыы + Пандьаабтыы + Португааллыы + Румыынныы + Нууччалыы + саха тыла + Словаактыы + Албаанскайдыы + Тамыллыы + Төлүгүлүү + Тадьыыктыы + Уйгуурдуу + Украйыыньыстыы + Үзбиэктии + Кытайдыы + Зуулулуу + + + + + + + + + + + + + + + Аан дойду + Аапырыка + Хотугу Эмиэрикэ + Соҕуруу Эмиэрикэ + Кытай + + + Мэтриичэскэй + + + + [а б г ҕ д {дь} и й к л м н {нь} ҥ о ө п р с т у ү х һ ч ы э] + [в е ё ж з ф ц ш щ ъ ь ю я] + [А Б Г Ҕ Д {Дь} И Й К Л М Н {Нь} Ҥ О Ө П Р С Т У Ү Х Һ Ч Ы Э] + [\:] + + + + + + + + G y 'сыл' MMMM d 'күнэ', EEEE + + + + + G y, MMMM d + + + + + G y, MMM d + + + + + GGGGG yy/M/d + + + + + + + + + Тохс + Олун + Клн_ттр + Мус_уст + Ыам_йн + Бэс_йн + От_йн + Атрдь_йн + Блҕн_йн + Алт + Сэт + Ахс + + + Тохсунньу + Олунньу + Кулун тутар + Муус устар + Ыам ыйын + Бэс ыйын + От ыйын + Атырдьых ыйын + Балаҕан ыйын + Алтынньы + Сэтинньи + Ахсынньы + + + + + Т + О + К + М + Ы + Б + О + А + Б + А + С + А + + + + + + + Бс + Бн + Оп + Сэ + Чп + Бэ + Сб + + + Б + Б + О + С + Ч + Б + С + + + Баскыһыанньа + Бэнидиэлинньик + Оптуорунньук + Сэрэдэ + Чэппиэр + Бээтиҥсэ + Субуота + + + + + Бс + Бн + Оп + Сэ + Чп + Бэ + Сб + + + Б + Б + О + С + Ч + Б + С + + + Баскыһыанньа + Бэнидиэлинньик + Оптуорунньук + Сэрэдэ + Чэппиэр + Бээтиҥсэ + Субуота + + + + + + + 1-кы кб + 2-с кб + 3-с кб + 4-с кб + + + 1 + 2 + 3 + 4 + + + 1-кы кыбаартал + 2-с кыбаартал + 3-с кыбаартал + 4-с кыбаартал + + + + + 1-кы кб + 2-с кб + 3-с кб + 4-с кб + + + 1-кы кыбаартал + 2-с кыбаартал + 3-с кыбаартал + 4-с кыбаартал + + + + + + + ЭИ + ЭК + + + + + + б. э. и. + б. э + + + + + + y 'сыл' MMMM d 'күнэ', EEEE + + + + + y, MMMM d + + + + + y, MMM d + + + + + yy/M/d + + + + + + + + Ээрэ + + + Сыл + + {0} сылынан + + + {0} сыл ынараа өттүгэр + + + + Ый + + {0} ыйынан + + + {0} ый ынараа өттүгэр + + + + Нэдиэлэ + + {0} нэдиэлэннэн + + + {0} нэдиэлэ ынараа өттүгэр + + + + Күн + Иллэрээ күн + Бэҕэһээ + Бүгүн + Сарсын + Өйүүн + + {0} күнүнэн + + + {0} күн ынараа өттүгэр + + + + Нэдиэлэ күнэ + + + ЭИ/ЭК + + + Чаас + + {0} чааһынан + + + {0} чаас ынараа өттүгэр + + + + Мүнүүтэ + + {0} мүнүүтэннэн + + + {0} мүнүүтэ ынараа өттүгэр + + + + Сөкүүндэ + + {0} сөкүүндэннэн + + + {0} сөкүүндэ ынараа өттүгэр + + + + Кэм балаһата + + + + + + + руб. + + + + + + + {0} күн + + + {0} чаас + + + {0} мүнүүтэ + + + {0} ый + + + {0} сөкүүндэ + + + {0} нэдиэлэ + + + {0} сыл + + + + + diff --git a/library/Zend/Locale/Data/sah_RU.xml b/library/Zend/Locale/Data/sah_RU.xml new file mode 100755 index 000000000..c3f43212a --- /dev/null +++ b/library/Zend/Locale/Data/sah_RU.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/saq.xml b/library/Zend/Locale/Data/saq.xml new file mode 100755 index 000000000..61f464cf5 --- /dev/null +++ b/library/Zend/Locale/Data/saq.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisampur + Kisomali + Kiswidi + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e g h i j k l m n o p r s t u v w y] + [f q x z] + [A B C D E G H I J K L M N O P R S T U V W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Obo + Waa + Oku + Ong + Ime + Ile + Sap + Isi + Saa + Tom + Tob + Tow + + + Lapa le obo + Lapa le waare + Lapa le okuni + Lapa le ong'wan + Lapa le imet + Lapa le ile + Lapa le sapa + Lapa le isiet + Lapa le saal + Lapa le tomon + Lapa le tomon obo + Lapa le tomon waare + + + + + O + W + O + O + I + I + S + I + S + T + T + T + + + + + + + Are + Kun + Ong + Ine + Ile + Sap + Kwe + + + Mderot ee are + Mderot ee kuni + Mderot ee ong'wan + Mderot ee inet + Mderot ee ile + Mderot ee sapa + Mderot ee kwe + + + + + A + K + O + I + I + S + K + + + + + + + R1 + R2 + R3 + R4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + + + Tesiran + Teipa + + + + + + Kabla ya Christo + Baada ya Christo + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Nyamata + + + Lari + + + Lapa + + + Saipa napo + + + Mpari + Ng'ole + Duo + Taisere + + + TS/TP + + + Saai + + + Idakika + + + Isekondi + + + Majira ya saa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Njilingi eel Falme za Kiarabu + + + Njilingi eel Angola + + + Njilingi eel Australia + + + Njilingi eel Bahareni + + + Njilingi eel Burundi + + + Njilingi eel Botswana + + + Njilingi eel Kanada + + + Njilingi eel Kongo + + + Njilingi eel Uswisi + + + Njilingi eel China + + + Njilingi eel Kepuvede + + + Njilingi eel Jibuti + + + Njilingi eel Aljeria + + + Njilingi eel Misri + + + Njilingi eel Eritrea + + + Njilingi eel Uhabeshi + + + Yuro + + + Njilingi eel Uingereza + + + Njilingi eel Ghana + + + Njilingi eel Gambia + + + Njilingi eel Gine + + + Njilingi eel India + + + Njilingi eel Kijapani + + + Njilingi eel Kenya + Ksh + + + Njilingi eel Komoro + + + Dola eel Liberia + + + Njilingi eel Lesoto + + + Njilingi eel Libya + + + Njilingi eel Moroko + + + Njilingi eel Bukini + + + Njilingi eel Moritania + + + Njilingi eel Morisi + + + Njilingi eel Malawi + + + Njilingi eel Msumbiji + + + Njilingi eel Namibia + + + Njilingi eel Nijeria + + + Njilingi eel Rwanda + + + Njilingi eel Saudia + + + Njilingi eel Shelisheli + + + Paunt eel Sudani + + + Paunt eel Santahelena + + + Leoni + + + Njilingi eel Somalia + + + Njilingi eel Sao Tome na Principe + + + Lilangeni + + + Njilingi eel Tunisia + + + Njilingi eel Tanzania + + + Njilingi eel Uganda + + + Dola eel Marekani + + + Njilingi eel CFA BEAC + + + Njilingi eel CFA BCEAO + + + Njilingi eel Afrika Kusini + + + Njilingi eel Zambia (1968–2012) + + + Njilingi eel Zambia + + + Dola eel Zimbabwe + + + + + + Neja + Nara + + + + diff --git a/library/Zend/Locale/Data/saq_KE.xml b/library/Zend/Locale/Data/saq_KE.xml new file mode 100755 index 000000000..d5a742f4e --- /dev/null +++ b/library/Zend/Locale/Data/saq_KE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sbp.xml b/library/Zend/Locale/Data/sbp.xml new file mode 100755 index 000000000..a3db9eab7 --- /dev/null +++ b/library/Zend/Locale/Data/sbp.xml @@ -0,0 +1,765 @@ + + + + + + + + + + + + Ishiyakani + Ishiyamuhali + Ishiyalabu + Ishibelalusi + Ishibulugalia + Ishibangila + Ishisheki + Ishijelumani + Ishigiliki + Ishingelesa + Ishihisipaniya + Ishiajemi + Ishifalansa + Ishihawusa + Ishihindi + Ishihungali + Ishihindonesia + Ishihigibo + Ishihitaliyano + Ishijapani + Ishijava + Ishikambodia + Ishikoleya + Ishimalesiya + Ishibuluma + Ishinepali + Ishiholansi + Ishipunjabi + Ishipolandi + Ishileno + Ishilomaniya + Ishilusi + Ishinyalwanda + Ishisangu + Ishisomali + Ishiswidi + Ishitamili + Ishitayilandi + Ishituluki + Ishiyukilaniya + Ishiwuludi + Ishivietinamu + Ishiyoluba + Ishishina + Ishisulu + + + Andola + Wutwa wa shiyalabu + Afuganisitani + Anitiguya ni Balubuda + Anguilla + Alubaniya + Alimeniya + Anitili sa Uholansi + Angola + Ajentina + Samoya ya Malekani + Awusitiliya + Awusitilaliya + Aluba + Asabajani + Bosiniya ni Hesegovina + Babadosi + Bangiladeshi + Ubeligiji + Bukinafaso + Buligaliya + Bahaleni + Bulundi + Benini + Belimuda + Buluneyi + Boliviya + Bulasili + Bahama + Butani + Botiswana + Belalusi + Belise + Kanada + Jamuhuli ya Kidemokilasiya ya Kongo + Jamuhuli ya Afilika ya Pakhati + Kongo + Uswisi + Kodivaya + Figunguli fya Kooki + Shile + Kameruni + Shina + Kolombiya + Kositalika + Kuba + Kepuvede + Kupilosi + Jamuhuli ya Sheki + Wujelumani + Jibuti + Denimaki + Dominika + Jamuhuli ya Dominika + Alijeliya + Ekwado + Esitoniya + Misili + Elitileya + Hisipaniya + Uhabeshi + Wufini + Fiji + Figunguli fya Fokolendi + Mikilonesiya + Wufalansa + Gaboni + Uwingelesa + Gilenada + Jojiya + Gwiyana ya Wufalansa + Khana + Jibulalita + Gilinilandi + Gambiya + Gine + Gwadelupe + Ginekweta + Wugiliki + Gwatemala + Gwamu + Ginebisawu + Guyana + Hondulasi + Kolasiya + Hayiti + Hungaliya + Indonesiya + Ayalandi + Isilaeli + Indiya + Uluvala lwa Uwingelesa ku Bahali ya Hindi + Ilaki + Uwajemi + Ayisilendi + Italiya + Jamaika + Yolodani + Japani + Kenya + Kiligisisitani + Kambodiya + Kilibati + Komolo + Santakitisi ni Nevisi + Koleya ya luvala lwa Kunyamande + Koleya ya Kusini + Kuwaiti + Figunguli ifya Kayimayi + Kasakisitani + Layosi + Lebanoni + Santalusiya + Lisheniteni + Sililanka + Libeliya + Lesoto + Litwaniya + Lasembagi + Lativiya + Libiya + Moloko + Monako + Molidova + Bukini + Figunguli ifya Malishali + Masedoniya + Mali + Muyama + Mongoliya + Figunguli fya Maliyana ifya luvala lwa Kunyamande + Malitiniki + Molitaniya + Monitiselati + Malita + Molisi + Modivu + Malawi + Mekisiko + Malesiya + Musumbiji + Namibiya + Nyukaledoniya + Nijeli + Shigunguli sha Nolifoki + Nijeliya + Nikalagwa + Wuholansi + Nolwe + Nepali + Nawulu + Niwue + Nyusilendi + Omani + Panama + Pelu + Polinesiya ya Wufalansa + Papuwa + Filipino + Pakisitani + Polandi + Santapieli ni Mikeloni + Pitikailini + Pwetoliko + Munjema gwa Kusikha nu Luvala lwa Gasa lwa Palesit + Wuleno + Palawu + Palagwayi + Katali + Liyunioni + Lomaniya + Wulusi + Lwanda + Sawudi + Figunguli fya Solomoni + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Siloveniya + Silovakiya + Siela Liyoni + Samalino + Senegali + Somaliya + Sulinamu + Sayo Tome ni Pilinikipe + Elisavado + Siliya + Uswasi + Figunguli fya Tuliki ni Kaiko + Shadi + Togo + Tailandi + Tajikisitani + Tokelawu + Timoli ya kunena + Tulukimenisitani + Tunisiya + Tonga + Utuluki + Tilinidadi ni Tobago + Tuvalu + Taiwani + Tansaniya + Yukileini + Uganda + Malekani + Ulugwayi + Usibekisitani + Vatikani + Santavisenti na Gilenadini + Venesuela + Figunguli ifya Viliginiya ifya Uwingelesa + Figunguli fya Viliginiya ifya Malekani + Vietinamu + Vanuatu + Walisi ni Futuna + Samoya + Yemeni + Mayote + Afilika Kusini + Sambiya + Simbabwe + + + + [a b c d e f g h i j k l m n o p s t u v w y] + [q r x z] + [A B C D E F G H I J K L M N O P S T U V W Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + m:ss + y + M/y + M/d/y + E, M/d/y + MMM y + MMM d y + E, MMM d, y + QQQ y + QQQQ y + + + + + + + + Mup + Mwi + Msh + Mun + Mag + Muj + Msp + Mpg + Mye + Mok + Mus + Muh + + + Mupalangulwa + Mwitope + Mushende + Munyi + Mushende Magali + Mujimbi + Mushipepo + Mupuguto + Munyense + Mokhu + Musongandembwe + Muhaano + + + + + + + Mul + Jtt + Jnn + Jtn + Alh + Iju + Jmo + + + Mulungu + Jumatatu + Jumanne + Jumatano + Alahamisi + Ijumaa + Jumamosi + + + + + M + J + J + J + A + I + J + + + + + + + L1 + L2 + L3 + L4 + + + Lobo 1 + Lobo 2 + Lobo 3 + Lobo 4 + + + + + + + Lwamilawu + Pashamihe + + + + + + Ashanali uKilisito + Pamwandi ya Kilisto + + + AK + PK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + m:ss + y + M/y + M/d/y + E, M/d/y + MMM y + MMM d y + E, MMM d, y + QQQ y + QQQQ y + + + + + + + Uluhaavi lwa + + + Mwakha + + + Mwesi + + + Ilijuma + + + Lusiku + Imehe + Ineng'uni + Pamulaawu + + + Ulusiku lwa Lijuma + + + Uluhaavi lwa lusiku + + + Ilisala + + + Idakika + + + Isekunde + + + Uluhaavi lwa lisaa + + + + + + . + , + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00¤ + + + + + + Ihela ya Shitwa sha Shiyalabu + + + Ihela ya Angola + + + Ihela ya Awusitilaliya + + + Ihela ya Bahaleni + + + Ihela ya Bulundi + + + Ihela ya Botiswana + + + Ihela ya Kanada + + + Ihela ya Kongo + + + Ihela ya Uswisi + + + Ihela ya Shina + + + Ihela ya Kepuvede + + + Ihela ya Jibuti + + + Ihela ya Alijeliya + + + Ihela ya Misili + + + Ihela ya Elitileya + + + Ihela ya Uhabeshi + + + Ihela ya Ulaya + + + Ihela ya Uwingelesa + + + Ihela ya Ghana + + + Ihela ya Gambiya + + + Ihela ya Gine + + + Ihela ya Indiya + + + Ihela ya Japani + + + Ihela ya Kenya + + + Ihela ya Komolo + + + Ihela ya Libeliya + + + Ihela ya Lesoto + + + Ihela ya Libiya + + + Ihela ya Moloko + + + Ihela ya Bukini + + + Ihela ya Molitaniya + + + Ihela ya Molisi + + + Ihela ya Malawi + + + Ihela ya Musumbiji + + + Ihela ya Namibiya + + + Ihela ya Nijeliya + + + Ihela ya Lwanda + + + Ihela ya Sawudiya + + + Ihela ya Shelisheli + + + Ihela ya Sudani + + + Ihela ya Santahelena + + + Ihela ya Siela Liyoni + + + Ihela ya Somaliya + + + Ihela ya Sao Tome ni Pilinsipe + + + Ihela ya Uswasi + + + Ihela ya Tunisiya + + + Ihela ya Tansaniya + TSh + + + Ihela ya Uganda + + + Ihela ya Malekani + + + Ihela ya CFA BEAC + + + Ihela ya CFA BCEAO + + + Ihela ya Afilika Kusini + + + Ihela ya Sambiya (1968–2012) + + + Ihela ya Sambiya + + + Ihela ya Simbabwe + + + + + + Ena:E + Ndaali:N + + + + diff --git a/library/Zend/Locale/Data/sbp_TZ.xml b/library/Zend/Locale/Data/sbp_TZ.xml new file mode 100755 index 000000000..794b82570 --- /dev/null +++ b/library/Zend/Locale/Data/sbp_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/se.xml b/library/Zend/Locale/Data/se.xml new file mode 100755 index 000000000..e709c52da --- /dev/null +++ b/library/Zend/Locale/Data/se.xml @@ -0,0 +1,1700 @@ + + + + + + + + + + + + acehgiella + afrikánsagiella + aragoniagiella + boares eaŋgalasgiella + arábagiella + asturiagiella + vilges-ruoššagiella + bulgáriagiella + bengalgiella + tibetagiella + bretonagiella + bosniagiella + katalánagiella + marigiella + corsicagiella + čeahkagiella + kymragiella + dánskkagiella + duiskkagiella + divehigiella + dzongkhagiella + greikkagiella + eaŋgalsgiella + spánskkagiella + esttegiella + persijagiella + suomagiella + filippiinnagiella + fidjigiella + fearagiella + fránskkagiella + oarjifriisagiella + iirragiella + gujaratagiella + manksgiella + haussagiella + hawaiigiella + hindigiella + kroátiagiella + haitigiella + ungárgiella + armeenagiella + indonesiagiella + islánddagiella + itáliagiella + japánagiella + javagiella + georgiagiella + kazakgiella + kambodiagiella + koreagiella + gárjilgiella + kurdigiella + komigiella + kornagiella + láhtengiella + luxemburggagiella + laogiella + liettuvagiella + látviagiella + mokšagiella + maorigiella + makedoniagiella + mongoliagiella + maltagiella + burmagiella + ersagiella + girjedárogiella + nepaligiella + hollánddagiella + ođđadárogiella + dárogiella + oksitánagiella + panjabigiella + polskkagiella + portugálagiella + romanšgiella + romániagiella + ruoššagiella + sardigiella + sisiliagiella + davvisámegiella + selkupagiella + serbokroatiagiella + slovákiagiella + slovenagiella + samoagiella + lullisámegiella + julevsámegiella + anárašgiella + nuortalašgiella + albánagiella + serbiagiella + ruoŧagiella + shimaorigiella + ŧaigiella + durkagiella + tahitigiella + udmurtagiella + ukrainagiella + dovdameahttun giella + urdugiella + vietnamgiella + vallonagiella + kantongiella + kiinnágiella + álki kiinágiella + árbevirolaš kiinnágiella + + + + + + + + + + + + + + + + + máilbmi + Afrihkká + dávvi-Amerihkká ja gaska-Amerihkká + mátta-Amerihkká + Oseania + oarji-Afrihkká + gaska-Amerihkká + nuorta-Afrihkká + davvi-Afrihkká + gaska-Afrihkká + mátta-Afrihkká + Amerihkká + dávvi-Amerihkká + Karibia + nuorta-Ásia + mátta-Ásia + mátta-nuorta-Ásia + mátta-Eurohpá + Austrália ja Ođđa-Selánda + Melanesia + Mikronesia guovllus + Polynesia + Ásia + gaska-Ásia + oarji-Ásia + Eurohpá + nuorta-Eurohpá + davvi-Eurohpá + oarji-Eurohpá + lulli-Amerihkká + Ascension + Andorra + Ovttastuvvan Arábaemiráhtat + Afghanistan + Antigua ja Barbuda + Anguilla + Albánia + Armenia + Angola + Antárktis + Argentina + Amerihká Samoa + Nuortariika + Austrália + Aruba + Ålánda + Aserbaižan + Bosnia-Hercegovina + Barbados + Bangladesh + Belgia + Burkina Faso + Bulgária + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Brasil + Bahamas + Bhutan + Bouvet-sullot + Botswana + Vilges-Ruošša + Belize + Kanáda + Cocos-sullot + Kongo-Kinshasa + Gaska-Afrihká dásseváldi + Kongo-Brazzaville + Šveica + Elfenbenariddu + Cook-sullot + Čiile + Kamerun + Kiinná + Kolombia + Clipperton-sullot + Costa Rica + Kuba + Kap Verde + Curaçao + Juovllat-sullot + Kypros + Čeahkka + Duiska + Diego Garcia + Djibouti + Dánmárku + Dominica + Dominikána dásseváldi + Algeria + Ceuta ja Melilla + Ecuador + Estlánda + Egypta + Oarje-Sahára + Eritrea + Spánia + Etiopia + Eurohpa Uniovdna + Suopma + Fijisullot + Falklandsullot + Mikronesia + Fearsullot + Frankriika + Gabon + Stuorra-Británnia + Stuorra-Británnia + Grenada + Georgia + Frankriikka Guayana + Guernsey + Ghana + Gibraltar + Kalaallit Nunaat + Gámbia + Guinea + Guadeloupe + Ekvatoriála Guinea + Greika + Lulli Georgia ja Lulli Sandwich-sullot + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong + Hongkong + Heard- ja McDonald-sullot + Honduras + Kroátia + Haiti + Ungár + Kanáriasullot + Indonesia + Irlánda + Israel + Mann-sullot + India + Irak + Iran + Islánda + Itália + Jersey + Jamaica + Jordánia + Japána + Kenia + Kirgisistan + Kambodža + Kiribati + Komoros + Saint Kitts ja Nevis + Davvi-Korea + Mátta-Korea + Kuwait + Cayman-sullot + Kasakstan + Laos + Libanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lietuva + Luxembourg + Látvia + Libya + Marokko + Monaco + Moldávia + Montenegro + Frankriikka Saint Martin + Madagaskar + Marshallsullot + Makedonia + Mali + Burma + Mongolia + Makáo + Makáo + Davvi-Mariánat + Martinique + Mauretánia + Montserrat + Málta + Mauritius + Malediivvat + Malawi + Meksiko + Malesia + Mosambik + Namibia + Ođđa-Kaledonia + Niger + Norfolksullot + Nigeria + Nicaragua + Vuolleeatnamat + Norga + Nepal + Nauru + Niue + Ođđa-Selánda + Oman + Panama + Peru + Frankriikka Polynesia + Papua-Ođđa-Guinea + Filippiinnat + Pakistan + Polen + Saint Pierre ja Miquelon + Pitcairn + Puerto Rico + Palestina + Palestina + Portugála + Palau + Paraguay + Qatar + Réunion + Románia + Serbia + Ruošša + Rwanda + Saudi-Arábia + Salomon-sullot + Seychellsullot + Davvisudan + Ruoŧŧa + Singapore + Saint Helena + Slovenia + Svalbárda ja Jan Mayen + Slovákia + Sierra Leone + San Marino + Senegal + Somália + Surinam + Máttasudan + São Tomé ja Príncipe + El Salvador + Vuolleeatnamat Saint Martin + Syria + Svazieana + Tristan da Cunha + Turks ja Caicos-sullot + Tčad + Togo + Thaieana + Tažikistan + Tokelau + Nuorta-Timor + Turkmenistan + Tunisia + Tonga + Durka + Trinidad ja Tobago + Tuvalu + Taiwan + Tanzánia + Ukraina + Uganda + Amerihká ovttastuvvan stáhtat + USA + Uruguay + Usbekistan + Vatikána + Saint Vincent ja Grenadine + Venezuela + Brittania Virgin-sullot + AOS Virgin-sullot + Vietnam + Vanuatu + Wallis ja Futuna + Samoa + Kosovo + Jemen + Mayotte + Mátta-Afrihká + Zambia + Zimbabwe + dovdameahttun guovlu + + + IPA + UPA + X-SAMPA + Hepburn + pinyin + Wade-Giles + + + kaleandar + ortnet + valuhtta + numerála + + + buddhista kaleander + kiinna + viddis oarjelohkosátni + gregoria kaleander + oarjelohkosátni + pinyin ortnet + árbevirolaš ortnet + + + SI állan + SB állan + AOS állan + + + giella: {0} + chállin: {0} + guovlu: {0} + + + + [a á b c č d đ e f g h i j k l m n ŋ o p r s š t ŧ u v z ž] + [à ç é è í ń ñ ó ò q ú w x y ü ø æ å ä ã ö] + [A Á B C Č D Đ E É F G H I J K L M N Ŋ O P Q R S Š T Ŧ U V W X Y Z Ž Ø Æ Å Ä Ö] + + + + + + + + + + + + + + ođđj + guov + njuk + cuo + mies + geas + suoi + borg + čakč + golg + skáb + juov + + + ođđajagemánnu + guovvamánnu + njukčamánnu + cuoŋománnu + miessemánnu + geassemánnu + suoidnemánnu + borgemánnu + čakčamánnu + golggotmánnu + skábmamánnu + juovlamánnu + + + + + O + G + N + C + M + G + S + B + Č + G + S + J + + + + + + + sotn + vuos + maŋ + gask + duor + bear + láv + + + sotnabeaivi + vuossárga + maŋŋebárga + gaskavahkku + duorasdat + bearjadat + lávvardat + + + + + S + V + M + G + D + B + L + + + + + + + i.b. + e.b. + + + iđitbeaivet + eahketbeaivet + + + + + iđitbeaivi + eahketbeaivi + + + + + + ovdal Kristtusa + maŋŋel Kristtusa + + + o.Kr. + m.Kr. + + + + + + + éra + + + jáhki + + {0} jahki maŋŋilit + {0} jahkki maŋŋilit + {0} jahkki maŋŋilit + + + {0} jahki árat + {0} jahkki árat + {0} jahkki árat + + + + mánnu + + {0} mánotbadji maŋŋilit + {0} mánotbadji maŋŋilit + {0} mánotbadji maŋŋilit + + + {0} mánotbadji árat + {0} mánotbadji árat + {0} mánotbadji árat + + + + váhkku + + {0} vahku maŋŋilit + {0} vahkku maŋŋilit + {0} vahkku maŋŋilit + + + {0} vahku árat + {0} vahkku árat + {0} vahkku árat + + + + beaivi + oovdebpeivvi + ikte + odne + ihttin + paijeelittáá + + {0} jándor maŋŋilit + {0} jándor amaŋŋilit + {0} jándora maŋŋilit + + + {0} jándor árat + {0} jándora árat + {0} jándora árat + + + + váhkkubeaivi + + + beaivi ráidodássi + + + diibmu + + {0} diibmu maŋŋilit + {0} diibmur maŋŋilit + {0} diibmur maŋŋilit + + + {0} diibmu árat + {0} diibmur árat + {0} diibmur árat + + + + minuhtta + + {0} minuhta maŋŋilit + {0} minuhtta maŋŋilit + {0} minuhtta maŋŋilit + + + {0} minuhta árat + {0} minuhtta árat + {0} minuhtta árat + + + + sekunda + + {0} sekunda maŋŋilit + {0} sekundda maŋŋilit + {0} sekundda maŋŋilit + + + {0} sekunda árat + {0} sekundda árat + {0} sekundda árat + + + + áigeavádat + + + + +HH:mm;−HH:mm + UTC{0} + UTC + {0} áigi + {0} ({1}) + + dovdameahttun áigeavádat + + + Dumont d’Urville + + + Saint Barthélemy + + + São Paulo + + + Curaçao + + + Mérida + + + + gaska-Eurohpá áigi + gaska-Eurohpá dábálašáigi + gaska-Eurohpá geassiáigi + + + CET + CET + CEST + + + + + nuorti-Eurohpá áigi + nuorti-Eurohpá dábálašáigi + nuorti-Eurohpá geassiáigi + + + EET + EET + EEST + + + + + oarje-Eurohpá áigi + oarje-Eurohpá dábálašáigi + oarje-Eurohpá geassiáigi + + + WET + WET + WEST + + + + + Greenwich gaskka áigi + + + GMT + + + + + Moskva-áigi + Moskva-dábálašáigi + Moskva-geassiáigi + + + + + + + , +   + ; + % + + + + ×10^ + · + + + ¤¤¤ + + + + + #,##0.### + + + + + 0 duhát + 0 duháhat + 0 duháhat + 00 duhát + 00 duháhat + 00 duháhat + 000 duhát + 000 duháhat + 000 duháhat + 0 miljona + 0 miljonat + 0 miljonat + 00 miljona + 00 miljonat + 00 miljonat + 000 miljona + 000 miljonat + 000 miljonat + 0 miljardi + 0 miljardit + 0 miljardit + 00 miljardi + 00 miljardit + 00 miljardit + 000 miljardi + 000 miljardit + 000 miljardit + 0 biljona + 0 biljonat + 0 biljonat + 00 biljona + 00 biljonat + 00 biljonat + 000 biljona + 000 biljonat + 000 biljonat + + + + + 0 dt + 0 dt + 0 dt + 00 dt + 00 dt + 00 dt + 000 dt + 000 dt + 000 dt + 0 mn + 0 mn + 0 mn + 00 mn + 00 mn + 00 mn + 000 mn + 000 mn + 000 mn + 0 md + 0 md + 0 md + 00 md + 00 md + 00 md + 000 md + 000 md + 000 md + 0 bn + 0 bn + 0 bn + 00 bn + 00 bn + 00 bn + 000 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + + + + Dkr + + + euro + euro + euro + euro + + + + suoma márkki + + + HK$ + + + + + + JP¥ + + + MX$ + + + norgga kruvdno + norgga kruvdno + norgga kruvdno + norgga kruvdno + kr + + + ruoŧŧa kruvdno + ruoŧŧa kruvdno + ruoŧŧa kruvdno + ruoŧŧa kruvdno + Skr + + + ฿ + + + uns silba + + + uns golli + + + + + + + {0} juohke {1} + + + {0} Maapallo gravitaatiovoima + {0} Maapallo gravitaatiovoimat + {0} Maapallo gravitaatiovoimat + + + {0} jorbbas minuhta + {0} jorbbas minuhtta + {0} jorbbas minuhtta + + + {0} jorbbas sekunda + {0} jorbbas sekundda + {0} jorbbas sekundda + + + {0} grádat + {0} grádat + {0} grádat + + + {0} Amerihká tynnyrinala + {0} Amerihká tynnyrinala + {0} Amerihká tynnyrinala + + + {0} hehtaari + {0} hehtaaria + {0} hehtaaria + + + {0} neliöjuolgi + {0} neliöjuolgi + {0} neliöjuolgi + + + {0} neliökilomehter + {0} neliökilomehtera + {0} neliökilomehtera + + + {0} neliömehter + {0} neliömehtera + {0} neliömehtera + + + {0} eangas neliömiil + {0} eangas neliömiila + {0} eangas neliömiila + + + {0} jándor + {0} jándora + {0} jándora + + + {0} diibmu + {0} diimmur + {0} diibmur + + + {0} millisekunda + {0} millisekundda + {0} millisekundda + + + {0} minuhta + {0} minuhtta + {0} minuhtta + + + {0} mánotbadji + {0} mánotbaji + {0} mánotbadji + + + {0} sekunda + {0} sekundda + {0} sekundda + + + {0} váhku + {0} váhkku + {0} váhkku + + + {0} jahki + {0} jahkki + {0} jahkki + + + {0} sentimehter + {0} sentimehtera + {0} sentimehtera + + + {0} juolgi + {0} juolgi + {0} juolgi + + + {0} bealgi + {0} bealgi + {0} bealgi + + + {0} kilomehter + {0} kilomehtera + {0} kilomehtera + + + {0} chuovgat jagi + {0} chuovgat jagi + {0} chuovgat jagi + + + {0} mehter + {0} mehtera + {0} mehtera + + + {0} eangas miil + {0} eangas miila + {0} eangas miila + + + {0} millimehter + {0} millimehtera + {0} millimehtera + + + {0} pikomehter + {0} pikomehtera + {0} pikomehtera + + + {0} eangas yard + {0} eangas yard + {0} eangas yard + + + {0} gram + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + {0} kilogram + + + {0} unssi + {0} unssi + {0} unssi + + + {0} pauna + {0} pauna + {0} pauna + + + {0} hevosvoima + {0} hevosvoima + {0} hevosvoima + + + {0} kilowatt + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + {0} watt + + + {0} hehtopascal + {0} hehtopascal + {0} hehtopascal + + + {0} bealgi kvikksølv + {0} bealgi kvikksølv + {0} bealgi kvikksølv + + + {0} millibar + {0} millibar + {0} millibar + + + {0} kilomehter kohti diibmu + {0} kilomehtera kohti diibmu + {0} kilomehtera kohti diibmu + + + {0} mehter kohti sekunti + {0} mehtera kohti sekunti + {0} mehtera kohti sekunti + + + {0} eangas miil kohti diibmu + {0} eangas miila kohti diibmu + {0} eangas miila kohti diibmu + + + {0} grádat Celsius + {0} grádat Celsius + {0} grádat Celsius + + + {0} grádat Fahrenheit + {0} grádat Fahrenheit + {0} grádat Fahrenheit + + + {0} kubikkilomehter + {0} kubikkilomehtera + {0} kubikkilomehtera + + + {0} eangas kubikkmiil + {0} eangas kubikkmiila + {0} eangas kubikkmiila + + + {0} lihtar + {0} lihtara + {0} lihtara + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + + + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + + + {0} mán + {0} mán + {0} mán + + + {0} s + {0} s + {0} s + + + {0} v + {0} v + {0} v + + + {0} jah + {0} jah + {0} jah + + + {0} cm + {0} cm + {0} cm + + + {0} juolgi + {0} juolgi + {0} juolgi + + + {0} bealgi + {0} bealgi + {0} bealgi + + + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} unssi + {0} unssi + {0} unssi + + + {0} pauna + {0} pauna + {0} pauna + + + {0} hv + {0} hv + {0} hv + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} bealgi Hg + {0} bealgi Hg + {0} bealgi Hg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + {0}G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0}ha + {0}ha + {0}ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0}km² + {0}km² + {0}km² + + + {0}m² + {0}m² + {0}m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0}d + {0}d + {0}d + + + {0}h + {0}h + {0}h + + + {0}ms + {0}ms + {0}ms + + + {0}m + {0}m + {0}m + + + {0}m + {0}m + {0}m + + + {0}s + {0}s + {0}s + + + {0}v + {0}v + {0}v + + + {0}j + {0}j + {0}j + + + {0}cm + {0}cm + {0}cm + + + {0} juolgi + {0} juolgi + {0} juolgi + + + {0} bealgi + {0} bealgi + {0} bealgi + + + {0}km + {0}km + {0}km + + + {0} ly + {0} ly + {0} ly + + + {0}m + {0}m + {0}m + + + {0} mi + {0} mi + {0} mi + + + {0}mm + {0}mm + {0}mm + + + {0}pm + {0}pm + {0}pm + + + {0} yd + {0} yd + {0} yd + + + {0}g + {0}g + {0}g + + + {0}kg + {0}kg + {0}kg + + + {0} unssi + {0} unssi + {0} unssi + + + {0} pauna + {0} pauna + {0} pauna + + + {0}hv + {0}hv + {0}hv + + + {0}kW + {0}kW + {0}kW + + + {0}W + {0}W + {0}W + + + {0}hPa + {0}hPa + {0}hPa + + + {0} bealgi Hg + {0} bealgi Hg + {0} bealgi Hg + + + {0}mbar + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0}km³ + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0}L + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} ja {1} + {0} ja {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + jo + ii + + + + diff --git a/library/Zend/Locale/Data/se_FI.xml b/library/Zend/Locale/Data/se_FI.xml new file mode 100755 index 000000000..eb5688970 --- /dev/null +++ b/library/Zend/Locale/Data/se_FI.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + Afrihká + Mátta-Amerihká + Oarji-Afrihká + Davvi-Afrihká + Gaska-Afrihká + Davvi-Amerihká + Nuorta-Ásia + Mátta-Ásia + Mátta-Eurohpa + Gaska-Ásia + Oarji-Ásia + Eurohpa + Nuorta-Eurohpá + Davvi-Eurohpa + Oarji-Eurohpa + + + + + + + + + ođđajage + guovva + njukča + cuoŋo + miesse + geasse + suoidne + borge + čakča + golggot + skábma + juovla + + + + + + + aejlege + måanta + däjsta + gaskevahkoe + dåarsta + bearjadahke + laavadahke + + + + + S + M + D + G + D + B + L + + + + + + + GMT + + + + diff --git a/library/Zend/Locale/Data/se_NO.xml b/library/Zend/Locale/Data/se_NO.xml new file mode 100755 index 000000000..182cca685 --- /dev/null +++ b/library/Zend/Locale/Data/se_NO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/seh.xml b/library/Zend/Locale/Data/seh.xml new file mode 100755 index 000000000..92f5b33de --- /dev/null +++ b/library/Zend/Locale/Data/seh.xml @@ -0,0 +1,738 @@ + + + + + + + + + + + + akan + amárico + árabe + bielo-russo + búlgaro + bengali + tcheco + alemão + grego + inglês + espanhol + persa + francês + hausa + hindi + húngaro + indonésio + ibo + italiano + japonês + javanês + cmer + coreano + malaio + birmanês + nepalês + holandês + panjabi + polonês + português + romeno + russo + kinyarwanda + sena + somali + sueco + tâmil + tailandês + turco + ucraniano + urdu + vietnamita + iorubá + chinês + zulu + + + Andorra + Emirados Árabes Unidos + Afeganistão + Antígua e Barbuda + Anguilla + Albânia + Armênia + Antilhas Holandesas + Angola + Argentina + Samoa Americana + Áustria + Austrália + Aruba + Azerbaijão + Bósnia-Herzegovina + Barbados + Bangladesh + Bélgica + Burquina Faso + Bulgária + Bahrain + Burundi + Benin + Bermudas + Brunei + Bolívia + Brasil + Bahamas + Butão + Botsuana + Belarus + Belize + Canadá + Congo-Kinshasa + República Centro-Africana + Congo + Suíça + Costa do Marfim + Ilhas Cook + Chile + República dos Camarões + China + Colômbia + Costa Rica + Cuba + Cabo Verde + Chipre + República Tcheca + Alemanha + Djibuti + Dinamarca + Dominica + República Dominicana + Argélia + Equador + Estônia + Egito + Eritréia + Espanha + Etiópia + Finlândia + Fiji + Ilhas Malvinas + Micronésia + França + Gabão + Reino Unido + Granada + Geórgia + Guiana Francesa + Gana + Gibraltar + Groênlandia + Gâmbia + Guiné + Guadalupe + Guiné Equatorial + Grécia + Guatemala + Guam + Guiné Bissau + Guiana + Honduras + Croácia + Haiti + Hungria + Indonésia + Irlanda + Israel + Índia + Território Britânico do Oceano Índico + Iraque + Irã + Islândia + Itália + Jamaica + Jordânia + Japão + Quênia + Quirguistão + Camboja + Quiribati + Comores + São Cristovão e Nevis + Coréia do Norte + Coréia do Sul + Kuwait + Ilhas Caiman + Casaquistão + Laos + Líbano + Santa Lúcia + Liechtenstein + Sri Lanka + Libéria + Lesoto + Lituânia + Luxemburgo + Letônia + Líbia + Marrocos + Mônaco + Moldávia + Madagascar + Ilhas Marshall + Macedônia + Mali + Mianmar + Mongólia + Ilhas Marianas do Norte + Martinica + Mauritânia + Montserrat + Malta + Maurício + Maldivas + Malawi + México + Malásia + Moçambique + Namíbia + Nova Caledônia + Níger + Ilhas Norfolk + Nigéria + Nicarágua + Holanda + Noruega + Nepal + Nauru + Niue + Nova Zelândia + Omã + Panamá + Peru + Polinésia Francesa + Papua-Nova Guiné + Filipinas + Paquistão + Polônia + Saint Pierre e Miquelon + Pitcairn + Porto Rico + Território da Palestina + Portugal + Palau + Paraguai + Catar + Reunião + Romênia + Rússia + Ruanda + Arábia Saudita + Ilhas Salomão + Seychelles + Sudão + Suécia + Cingapura + Santa Helena + Eslovênia + Eslováquia + Serra Leoa + San Marino + Senegal + Somália + Suriname + São Tomé e Príncipe + El Salvador + Síria + Suazilândia + Ilhas Turks e Caicos + Chade + Togo + Tailândia + Tadjiquistão + Tokelau + Timor Leste + Turcomenistão + Tunísia + Tonga + Turquia + Trinidad e Tobago + Tuvalu + Taiwan + Ucrânia + Uganda + Estados Unidos + Uruguai + Uzbequistão + Vaticano + São Vicente e Granadinas + Venezuela + Ilhas Virgens Britânicas + Ilhas Virgens dos EUA + Vietnã + Vanuatu + Wallis e Futuna + Samoa + Iêmen + Mayotte + África do Sul + Zâmbia + Zimbábue + + + + [a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d 'de' MMMM 'de' y G + + + + + d 'de' MMMM 'de' y G + + + + + d 'de' MMM 'de' y G + + + + + d/M/y GGGGG + + + + + + d + HH:mm + HH:mm:ss + H:mm + L + d/M + E, dd/MM + dd/MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + mm:ss + y + MM/y + E, dd/MM/y + MM/y + MMM 'de' y + d 'de' MMM 'de' y + E, d 'de' MMM 'de' y + MMMM 'de' y + y QQQ + y QQQQ + + + + + + + + Jan + Fev + Mar + Abr + Mai + Jun + Jul + Aug + Set + Otu + Nov + Dec + + + Janeiro + Fevreiro + Marco + Abril + Maio + Junho + Julho + Augusto + Setembro + Otubro + Novembro + Decembro + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Dim + Pos + Pir + Tat + Nai + Sha + Sab + + + Dimingu + Chiposi + Chipiri + Chitatu + Chinai + Chishanu + Sabudu + + + + + D + P + C + T + N + S + S + + + + + + Antes de Cristo + Anno Domini + + + AC + AD + + + + + + EEEE, d 'de' MMMM 'de' y + + + + + d 'de' MMMM 'de' y + + + + + d 'de' MMM 'de' y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + HH:mm + HH:mm:ss + H:mm + L + d/M + E, dd/MM + dd/MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + mm:ss + y + MM/y + E, dd/MM/y + MM/y + MMM 'de' y + d 'de' MMM 'de' y + E, d 'de' MMM 'de' y + MMMM 'de' y + y QQQ + y QQQQ + + + + + + + Chaka + + + Mwezi + + + Ntsiku + Zuro + Lero + Manguana + + + Hora + + + Minuto + + + Segundo + + + + + + , + . + + + + + #,##0.00¤ + + + + + + Dirém dos Emirados Árabes Unidos + + + Cuanza angolano + + + Dólar australiano + + + Dinar bareinita + + + Franco do Burundi + + + Pula botsuanesa + + + Dólar canadense + + + Franco congolês + + + Franco suíço + + + Yuan Renminbi chinês + + + Escudo cabo-verdiano + + + Franco do Djibuti + + + Dinar argelino + + + Libra egípcia + + + Nakfa da Eritréia + + + Birr etíope + + + Euro + + + Libra esterlina britânica + + + Cedi de Gana (1979–2007) + + + Dalasi de Gâmbia + + + Syli da Guiné + + + Rúpia indiana + + + Iene japonês + + + Xelim queniano + + + Franco de Comores + + + Dólar liberiano + + + Loti do Lesoto + + + Dinar líbio + + + Dirém marroquino + + + Franco de Madagascar + + + Ouguiya da Mauritânia + + + Rupia de Maurício + + + Cuacha do Maláui + + + Metical antigo de Moçambique + + + Metical de Moçambique + MTn + + + Dólar da Namíbia + + + Naira nigeriana + + + Franco ruandês + + + Rial saudita + + + Rupia das Seychelles + + + Dinar sudanês + + + Libra sudanesa antiga + + + Libra de Santa Helena + + + Leone de Serra Leoa + + + Xelim somali + + + Dobra de São Tomé e Príncipe + + + Lilangeni da Suazilândia + + + Dinar tunisiano + + + Xelim da Tanzânia + + + Xelim ugandense (1966–1987) + + + Dólar norte-americano + + + Franco CFA BEAC + + + Franco CFA BCEAO + + + Rand sul-africano + + + Cuacha zambiano (1968–2012) + + + Cuacha zambiano + + + Dólar do Zimbábue + + + + + + Ande:A + Nkhabe:N + + + + diff --git a/library/Zend/Locale/Data/seh_MZ.xml b/library/Zend/Locale/Data/seh_MZ.xml new file mode 100755 index 000000000..6e07d182e --- /dev/null +++ b/library/Zend/Locale/Data/seh_MZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ses.xml b/library/Zend/Locale/Data/ses.xml new file mode 100755 index 000000000..ff1f80642 --- /dev/null +++ b/library/Zend/Locale/Data/ses.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Akan senni + Amhaarik senni + Laaraw senni + Belaruus senni + Bulagaari senni + Bengali senni + Cek senni + Almaŋ senni + Grek senni + Inglisi senni + Espaaɲe senni + Farsi senni + Fransee senni + Hawsance senni + Induu senni + Hungaari senni + Indoneesi senni + Iboo senni + Itaali senni + Japonee senni + Javanee senni + Kmeer senni + Koree senni + Maleezi senni + Burme senni + Neepal senni + Holandee senni + Punjaabi sennii + Polonee senni + Portugee senni + Rumaani senni + Ruusi senni + Rwanda senni + Koyraboro senni + Somaali senni + Suweede senni + Tamil senni + Taailandu senni + Turku senni + Ukreen senni + Urdu senni + Vietnaam senni + Yorbance senni + Sinuwa senni, Mandareŋ + Zulu senni + + + Andoora + Laaraw Imaarawey Margantey + Afgaanistan + Antigua nda Barbuuda + Angiiya + Albaani + Armeeni + Hollandu Antiiyey Laboo + Angoola + Argentine + Ameriki Samoa + Otriši + Ostraali + Aruuba + Azerbaayijaŋ + Bosni nda Herzegovine + Barbaados + Bangladeši + Belgiiki + Burkina faso + Bulgaari + Bahareen + Burundi + Beniŋ + Bermuda + Bruunee + Boolivi + Breezil + Bahamas + Buutaŋ + Botswaana + Biloriši + Beliizi + Kanaada + Kongoo demookaratiki laboo + Centraafriki koyra + Kongoo + Swisu + Kudwar + Kuuk gungey + Šiili + Kameruun + Šiin + Kolombi + Kosta rika + Kuuba + Kapuver gungey + Šiipur + Cek labo + Almaaɲe + Jibuuti + Danemark + Doominiki + Doominiki laboo + Alžeeri + Ekwateer + Estooni + Misra + Eritree + Espaaɲe + Ecioopi + Finlandu + Fiji + Kalkan gungey + Mikronezi + Faransi + Gaabon + Albaasalaama Marganta + Grenaada + Gorgi + Faransi Guyaan + Gaana + Gibraltar + Grinland + Gambi + Gine + Gwadeluup + Ginee Ekwatorial + Greece + Gwatemaala + Guam + Gine-Bisso + Guyaane + Honduras + Krwaasi + Haiti + Hungaari + Indoneezi + Irlandu + Israyel + Indu laboo + Britiši Indu teekoo laama + Iraak + Iraan + Ayceland + Itaali + Jamaayik + Urdun + Jaapoŋ + Keeniya + Kyrgyzstan + Kamboogi + Kiribaati + Komoor + Seŋ Kitts nda Nevis + Kooree, Gurma + Kooree, Hawsa + Kuweet + Kayman gungey + Kaazakstan + Laawos + Lubnaan + Seŋ Lussia + Liechtenstein + Srilanka + Liberia + Leesoto + Lituaani + Luxembourg + Letooni + Liibi + Maarok + Monako + Moldovi + Madagascar + Maršal gungey + Maacedooni + Maali + Maynamar + Mongooli + Mariana Gurma Gungey + Martiniiki + Mooritaani + Montserrat + Malta + Mooris gungey + Maldiivu + Malaawi + Mexiki + Maleezi + Mozambik + Naamibi + Kaaledooni Taagaa + Nižer + Norfolk Gungoo + Naajiriia + Nikaragwa + Hollandu + Norveej + Neepal + Nauru + Niue + Zeelandu Taaga + Omaan + Panama + Peeru + Faransi Polineezi + Papua Ginee Taaga + Filipine + Paakistan + Poloɲe + Seŋ Piyer nda Mikelon + Pitikarin + Porto Riko + Palestine Dangay nda Gaaza + Portugaal + Palu + Paraguwey + Kataar + Reenioŋ + Rumaani + Iriši laboo + Rwanda + Saudiya + Solomon Gungey + Seešel + Suudaŋ + Sweede + Singapur + Seŋ Helena + Sloveeni + Slovaaki + Seera Leon + San Marino + Senegal + Somaali + Surinaam + Sao Tome nda Prinsipe + Salvador laboo + Suuria + Swaziland + Turk nda Kayikos Gungey + Caadu + Togo + Taayiland + Taažikistan + Tokelau + Timoor hawsa + Turkmenistaŋ + Tunizi + Tonga + Turki + Trinidad nda Tobaago + Tuvalu + Taayiwan + Tanzaani + Ukreen + Uganda + Ameriki Laabu Margantey + Uruguwey + Uzbeekistan + Vaatikan Laama + Seŋvinsaŋ nda Grenadine + Veneezuyeela + Britiši Virgin gungey + Ameerik Virgin Gungey + Vietnaam + Vanautu + Wallis nda Futuna + Samoa + Yaman + Mayooti + Hawsa Afriki Laboo + Zambi + Zimbabwe + + + + [a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž] + [v] + [A à B C D E Ẽ F G H I J K L M N Ɲ Ŋ O Õ P Q R S Š T U W X Y Z Ž] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + Žan + Fee + Mar + Awi + Me + Žuw + Žuy + Ut + Sek + Okt + Noo + Dee + + + Žanwiye + Feewiriye + Marsi + Awiril + Me + Žuweŋ + Žuyye + Ut + Sektanbur + Oktoobur + Noowanbur + Deesanbur + + + + + Ž + F + M + A + M + Ž + Ž + U + S + O + N + D + + + + + + + Alh + Ati + Ata + Ala + Alm + Alz + Asi + + + Alhadi + Atinni + Atalaata + Alarba + Alhamiisa + Alzuma + Asibti + + + + + H + T + T + L + L + L + S + + + + + + + A1 + A2 + A3 + A4 + + + Arrubu 1 + Arrubu 2 + Arrubu 3 + Arrubu 4 + + + + + + + Adduha + Aluula + + + + + + Isaa jine + Isaa zamanoo + + + IJ + IZ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MM/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Zaman + + + Jiiri + + + Handu + + + Hebu + + + Zaari + Bi + Hõo + Suba + + + Adduha wala Aluula + + + Guuru + + + Miniti + + + Miti + + + Leerazuu + + + + + +   + + + + + #,##0.00¤ + + + + + + Laaraw Immaara Margantey Dirham + + + Angoola Kwanza + + + Ostraali Dollar + + + Bahareen Dinar + + + Burundi Fraŋ + + + Botswaana Pund + + + Kanaada Dollar + + + Kongo Fraŋ + + + Swisu Fraŋ + + + Sinwa Yuan Renminbi + + + Kapuver Escudo + + + Jibuuti Fraŋ + + + Alžeeri Dinar + + + Misra Pund + + + Eritree Nafka + + + Ecioopi Birr + + + Eero + + + Britin Pund + + + Gaana Šiidi + + + Gambi Dalasi + + + Ginee Fraŋ + + + Indu Rupii + + + Jaapoŋ Yen + + + Keeniya Šiiliŋ + + + Komoor Fraŋ + + + Liberia Dollar + + + Leezoto Loti + + + Liibi Dinar + + + Maarok Dirham + + + Malgaaši Fraŋ + + + Mooritaani Ugiya + + + Mooris Rupii + + + Malaawi Kwaca + + + Mozambik Metikal + + + Naamibi Dollar + + + Naajiriya Neera + + + Rwanda Fraŋ + + + Saudiya Riyal + + + Seešel Rupii + + + Suudaŋ Dinar + + + Suudaŋ Pund + + + Seŋ Helena Fraŋ + + + Leeon + + + Somaali Šiiliŋ + + + Sao Tome nda Prinsipe Dobra + + + Lilangeni + + + Tunizi Dinar + + + Tanzaani Šiiliŋ + + + Uganda Šiiliŋ + + + Ameriki Dollar + + + CFA Fraŋ (BEAC) + + + CFA Fraŋ (BCEAO) + + + Hawasa Afriki Rand + + + Zambi Kwaca (1968–2012) + + + Zambi Kwaca + + + Zimbabwe Dollar + + + + + + Ayyo:A + Kala:K + + + + diff --git a/library/Zend/Locale/Data/ses_ML.xml b/library/Zend/Locale/Data/ses_ML.xml new file mode 100755 index 000000000..51576dc19 --- /dev/null +++ b/library/Zend/Locale/Data/ses_ML.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sg.xml b/library/Zend/Locale/Data/sg.xml new file mode 100755 index 000000000..b1097a936 --- /dev/null +++ b/library/Zend/Locale/Data/sg.xml @@ -0,0 +1,759 @@ + + + + + + + + + + + + Akâan + Amarîki + Arâbo + Bielörûsi + Bulugäri + Bengäli + Tyêki + Zâmani + Gerêki + Anglëe + Espanyöl + Farsî + Farânzi + Haüsä + Hîndi + Hongruäa + Enndonezïi + Ïgbö + Ênnde + Zaponëe + Zavanëe + Kmêre + Koreyëen + Malëe + Miamära, Birimäni + Nepalëe + Holandëe + Penzäbï + Polonëe + Portugëe, Pûra + Rumëen + Rûsi + Ruandäa + Sängö + Somalïi + Sueduäa + Tämûli + Thâi + Tûrûku + Ukrêni + Ûrdu + Vietnäm + Yoruba + Shinuäa + Zûlu + + + Andôro + Arâbo Emirâti Ôko + Faganïta, Afganïstäan + Antîgua na Barbûda + Angûîla + Albanïi + Armenïi + Antîyi tî Holânde + Angoläa + Arzantîna + Samöa tî Amerîka + Otrîsi + Ostralïi, Sotralïi + Arûba + Zerebaidyäan, Azerbaidyäan, + Bosnïi na Herzegovînni + Barabâda + Bengladêshi + Bêleze, Belezîki + Burkina Faso + Bulugarïi + Bahrâina + Burundïi + Benëen + Beremûda + Brunêi + Bolivïi + Brezîli + Bahâmasa + Butäan + Botswana + Belarüsi + Belîzi + Kanadäa + Ködörösêse tî Ngunuhalëzo tî kongö + Ködörösêse tî Bêafrîka + Kongö + Sûîsi + Kôdivüära + âzûâ Kûku + Shilïi + Kamerûne + Shîna + Kolombïi + Kôsta Rîka + Kubäa + Azûâ tî Kâpo-Vêre + Sîpri + Ködörösêse tî Tyêki + Zâmani + Dibutùii + Danemêrke + Dömïnîka + Ködörösêse tî Dominîka + Alzerïi + Ekuatëre + Estonïi + Kâmitâ + Eritrëe + Espânye + Etiopïi + Fëlânde + Fidyïi + Âzûâ tî Mälüîni + Mikronezïi + Farânzi + Gaböon + Ködörögbïä--Ôko + Grenâda + Zorzïi + Güyâni tî farânzi + Ganäa + Zibraltära, Zibaratära + Gorolânde + Gambïi + Ginëe + Guadelûpu + Ginëe tî Ekuatëre + Gerêsi + Guatêmälä + Guâm + Gninëe-Bisau + Gayâna + Honduräsi + Kroasïi + Haitïi + Hongirùii + Ênndonezïi + Irlânde + Israëli + Ênnde + Sêse tî Anglëe na Ngûyämä tî Ênnde + Irâki + Iräan + Islânde + Italùii + Zamaîka + Zordanïi + Zapöon + Kenyäa + Kirigizitùaan + Kämbôzi + Kiribati + Kömôro + Sên-Krïstôfo-na-Nevîsi + Korëe tî Banga + Korëe tî Mbongo + Köwêti + Âzûâ Ngundë, Kaimäni + Kazakisitäan + Lùaôsi + Libùaan + Sênt-Lisïi + Liechtenstein, + Sirî-Lanka + Liberïa + Lesôtho + Lituanïi + Lugzambûru + Letonùii + Libïi + Marôko + Monaköo + Moldavùii + Madagaskära + Âzûâ Märshâl + Maseduäni + Malïi + Myämâra + Mongolïi + Âzûâ Märïâni tî Banga + Märtïnîki + Moritanïi + Monserâte + Mâlta + Mörîsi + Maldîva + Malawïi + Mekisîki + Malezïi + Mözämbîka + Namibùii + Finî Kaledonïi + Nizëre + Zûâ Nôrfôlko + Nizerïa + Nikaragua + Holände + Nörvêzi + Nëpâli + Nauru + Niue + Finî Zelânde + Omâni + Panama + Perüu + Polinezïi tî farânzi + Papû Finî Ginëe, Papuazïi + Filipîni + Pakistäan + Pölôni + Sên-Pyêre na Mikelöon + Pitikêrni + Porto Rîko + Sêse tî Palestîni + Pörtugäle, Ködörö Pûra + Palau + Paraguëe + Katära + Reinïon + Rumanïi + Rusïi + Ruandäa + Saûdi Arabïi + Zûâ Salomöon + Sëyshêle + Sudäan + Suêde + Sïngäpûru + Sênt-Helêna + Solovenïi + Solovakïi + Sierä-Leône + Sên-Marëen + Senegäle + Somalïi + Surinäm + Sudäan-Mbongo + Sâô Tömê na Prinsîpe + Salvadöro + Sirïi + Swäzïlânde + Âzûâ Turku na Kaîki + Tyâde + Togö + Tailânde + Taazikiistäan + Tokelau + Timôro tî Tö + Turkumenistäan + Tunizïi + Tonga + Turukïi + Trinitùee na Tobagö + Tüvalü + Tâiwâni + Tanzanïi + Ukrêni + Ugandäa + ÂLeaa-Ôko tî Amerika + Uruguëe + Uzbekistäan + Letëe tî Vatikäan + Sên-Vensäan na âGrenadîni + Venezueläa + Âzôâ Viîrîggo tî Anglëe + Âzûâ Virîgo tî Amerîka + Vietnäm + Vanuatü + Walîsi na Futuna + Samoäa + Yëmêni + Mäyôte + Mbongo-Afrîka + Zambïi + Zimbäbwe + + + + [a â ä b d e ê ë f g h i î ï j k l m n o ô ö p r s t u ù û ü v w y z] + [c q x] + [A B D E F G H I J K L M N O P R S T U V W Y Z] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + Nye + Ful + Mbä + Ngu + Bêl + Fön + Len + Kük + Mvu + Ngb + Nab + Kak + + + Nyenye + Fulundïgi + Mbängü + Ngubùe + Bêläwü + Föndo + Lengua + Kükürü + Mvuka + Ngberere + Nabändüru + Kakauka + + + + + N + F + M + N + B + F + L + K + M + N + N + K + + + + + + + Bk1 + Bk2 + Bk3 + Bk4 + Bk5 + Lâp + Lây + + + Bikua-ôko + Bïkua-ûse + Bïkua-ptâ + Bïkua-usïö + Bïkua-okü + Lâpôsö + Lâyenga + + + + + K + S + T + S + K + P + Y + + + + + + + F4-1 + F4-2 + F4-3 + F4-4 + + + Fângbisïö ôko + Fângbisïö ûse + Fângbisïö otâ + Fângbisïö usïö + + + + + + + ND + LK + + + + + + Kôzo na Krîstu + Na pekô tî Krîstu + + + KnK + NpK + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + Kùotângo + + + Ngû + + + Nze + + + Dimâsi + + + + Bîrï + Lâsô + Kêkerêke + + + Bïkua + + + Na lâ + + + Ngbonga + + + Ndurü ngbonga + + + Nzîna ngbonga + + + Zukangbonga + + + + + + , + . + + + + + ¤#,##0.00;¤-#,##0.00 + + + + + + dirâm tî âEmirâti tî Arâbo Ôko + + + kwânza tî Angoläa + + + dolära tî Ostralïi + + + dolùara tî Bahrâina + + + farânga tî Burundïi + + + pûla tî Botswana + + + dolära tî kanadäa + + + farânga tî Kongöo + + + farânga tî Sûîsi + + + yuan renminbi tî Shîni + + + eskûêdo tî Kâpo-Vêre + + + farânga tî Dibutïi + + + dinäri tî Alzerïi + + + pôndo tî Kâmitâ + + + nakafa tî Eritrëe + + + bir tî Etiopïi + + + zoröo + + + pôndo tî Anglëe + + + sêdi tî Ganäa + + + dalasi tî gambïi + + + sili tî Ginëe + + + rupïi tî Ênnde + + + yêni tî Zapön + + + shilîngi tî Kenyäa + + + farânga tî Kömôro + + + dolära tî Liberïa + + + loti tî Lesôtho + + + dinäar tî Libïi + + + dirâm tî Marôko + + + ariâri tî Madagasikära + + + ugîya tî Moritanïi + + + rupïi tî Mörîsi + + + kwâtia tî Malawïi + + + metikala tî Mozambîka + + + dolära tî Namibïi + + + nâîra tî Nizerïa + + + farânga tî Ruandäa + + + riâli tî Saûdi Arabïi + + + rupïi tî Sëyshêle + + + pôndo tî Sudäan + + + pôndo tî Zûâ Sênt-Helêna + + + leône tî Sierâ-Leône + + + shilîngi tî Somalïi + + + dôbra tî Sâô Tomë na Prinsîpe + + + lilangùeni tî Swazïlânde + + + dinära tî Tunizïi + + + shilîngi tî Tanzanïi + + + shilîngi tî Ugandäa + + + dol$ara ttî äLetäa-Ôko tî Amerîka + + + farânga CFA (BEAC) + + + farânga CFA (BCEAO) + + + rânde tî Mbongo-Afrîka + + + kwâtia tî Zambïi (1968–2012) + + + kwâtia tî Zambïi + + + dolära tî Zimbäbwe + + + + + + Iin:I + Én-en:E + + + + diff --git a/library/Zend/Locale/Data/sg_CF.xml b/library/Zend/Locale/Data/sg_CF.xml new file mode 100755 index 000000000..0d46b38f6 --- /dev/null +++ b/library/Zend/Locale/Data/sg_CF.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/shi.xml b/library/Zend/Locale/Data/shi.xml new file mode 100755 index 000000000..314929b69 --- /dev/null +++ b/library/Zend/Locale/Data/shi.xml @@ -0,0 +1,749 @@ + + + + + + + + + + + + ⵜⴰⴽⴰⵏⵜ + ⵜⴰⵎⵀⴰⵔⵉⵜ + ⵜⴰⵄⵔⴰⴱⵜ + ⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜ + ⵜⴰⴱⵍⵖⴰⵔⵉⵜ + ⵜⴰⴱⵏⵖⴰⵍⵉⵜ + ⵜⴰⵜⵛⵉⴽⵉⵜ + ⵜⴰⵍⵉⵎⴰⵏⵜ + ⵜⴰⴳⵔⵉⴳⵉⵜ + ⵜⴰⵏⴳⵍⵉⵣⵜ + ⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜ + ⵜⴰⴼⵓⵔⵙⵉⵜ + ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ + ⵜⴰⵀⴰⵡⵙⴰⵜ + ⵜⴰⵀⵉⵏⴷⵉⵜ + ⵜⴰⵀⵏⵖⴰⵔⵉⵜ + ⵜⴰⵏⴷⵓⵏⵉⵙⵉⵜ + ⵜⵉⴳⴱⵓⵜ + ⵜⴰⵟⴰⵍⵢⴰⵏⵜ + ⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜ + ⵜⴰⵊⴰⴼⴰⵏⵉⵜ + ⵜⴰⵅⵎⵉⵔⵜ + ⵜⴰⴽⵓⵔⵉⵜ + ⵜⴰⵎⴰⵍⴰⵡⵉⵜ + ⵜⴰⴱⵉⵔⵎⴰⵏⵉⵜ + ⵜⴰⵏⵉⴱⴰⵍⵉⵜ + ⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜ + ⵜⴰⴱⵏⵊⴰⴱⵉⵜ + ⵜⴰⴱⵓⵍⵓⵏⵉⵜ + ⵜⴰⴱⵕⵟⵇⵉⵣⵜ + ⵜⴰⵔⵓⵎⴰⵏⵉⵜ + ⵜⴰⵔⵓⵙⵉⵜ + ⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜ + ⵜⴰⵎⴰⵣⵉⵖⵜ + ⵜⴰⵙⵓⵎⴰⵍⵉⵜ + ⵜⴰⵙⵡⵉⴷⵉⵜ + ⵜⴰⵜⴰⵎⵉⵍⵜ + ⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜ + ⵜⴰⵜⵓⵔⴽⵉⵜ + ⵜⵓⴽⵔⴰⵏⵉⵜ + ⵜⵓⵔⴷⵓⵜ + ⵜⴰⴼⵉⵜⵏⴰⵎⵉⵜ + ⵜⴰⵢⵔⵓⴱⴰⵜ + ⵜⴰⵛⵉⵏⵡⵉⵜ + ⵜⴰⵣⵓⵍⵓⵜ + + + ⴰⵏⴷⵓⵔⴰ + ⵍⵉⵎⴰⵔⴰⵜ + ⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏ + ⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰ + ⴰⵏⴳⵉⵍⴰ + ⴰⵍⴱⴰⵏⵢⴰ + ⴰⵔⵎⵉⵏⵢⴰ + ⴰⵏⵜⵉⵢ ⵏ ⵀⵓⵍⴰⵏⴷⴰ + ⴰⵏⴳⵓⵍⴰ + ⴰⵔⵊⴰⵏⵜⵉⵏ + ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜ + ⵏⵏⵎⵙⴰ + ⵓⵙⵜⵔⴰⵍⵢⴰ + ⴰⵔⵓⴱⴰ + ⴰⴷⵔⴰⴱⵉⵊⴰⵏ + ⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽ + ⴱⴰⵔⴱⴰⴷ + ⴱⴰⵏⴳⵍⴰⴷⵉⵛ + ⴱⵍⵊⵉⴽⴰ + ⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓ + ⴱⵍⵖⴰⵔⵢⴰ + ⴱⵃⵔⴰⵢⵏ + ⴱⵓⵔⵓⵏⴷⵉ + ⴱⵉⵏⵉⵏ + ⴱⵔⵎⵓⴷⴰ + ⴱⵔⵓⵏⵉ + ⴱⵓⵍⵉⴼⵢⴰ + ⴱⵔⴰⵣⵉⵍ + ⴱⴰⵀⴰⵎⴰⵙ + ⴱⵀⵓⵜⴰⵏ + ⴱⵓⵜⵙⵡⴰⵏⴰ + ⴱⵉⵍⴰⵔⵓⵙⵢⴰ + ⴱⵉⵍⵉⵣ + ⴽⴰⵏⴰⴷⴰ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰ + ⴽⵓⵏⴳⵓ + ⵙⵡⵉⵙⵔⴰ + ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽ + ⵛⵛⵉⵍⵉ + ⴽⴰⵎⵉⵔⵓⵏ + ⵛⵛⵉⵏⵡⴰ + ⴽⵓⵍⵓⵎⴱⵢⴰ + ⴽⵓⵙⵜⴰ ⵔⵉⴽⴰ + ⴽⵓⴱⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ + ⵇⵓⴱⵔⵓⵙ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜ + ⴰⵍⵎⴰⵏⵢⴰ + ⴷⵊⵉⴱⵓⵜⵉ + ⴷⴰⵏⵎⴰⵔⴽ + ⴷⵓⵎⵉⵏⵉⴽ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜ + ⴷⵣⴰⵢⵔ + ⵉⴽⵡⴰⴷⵓⵔ + ⵉⵙⵜⵓⵏⵢⴰ + ⵎⵉⵚⵕ + ⵉⵔⵉⵜⵉⵔⵢⴰ + ⵙⴱⴰⵏⵢⴰ + ⵉⵜⵢⵓⴱⵢⴰ + ⴼⵉⵍⵍⴰⵏⴷⴰ + ⴼⵉⴷⵊⵉ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉ + ⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰ + ⴼⵔⴰⵏⵙⴰ + ⴳⴰⴱⵓⵏ + ⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏ + ⵖⵔⵏⴰⵟⴰ + ⵊⵓⵔⵊⵢⴰ + ⴳⵡⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ + ⵖⴰⵏⴰ + ⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇ + ⴳⵔⵉⵍⴰⵏⴷ + ⴳⴰⵎⴱⵢⴰ + ⵖⵉⵏⵢⴰ + ⴳⵡⴰⴷⴰⵍⵓⴱ + ⵖⵉⵏⵢⴰ ⵏ ⵉⴽⵡⴰⴷⵓⵔ + ⵍⵢⵓⵏⴰⵏ + ⴳⵡⴰⵜⵉⵎⴰⵍⴰ + ⴳⵡⴰⵎ + ⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡ + ⴳⵡⵉⵢⴰⵏⴰ + ⵀⵓⵏⴷⵓⵔⴰⵙ + ⴽⵔⵡⴰⵜⵢⴰ + ⵀⴰⵢⵜⵉ + ⵀⵏⵖⴰⵔⵢⴰ + ⴰⵏⴷⵓⵏⵉⵙⵢⴰ + ⵉⵔⵍⴰⵏⴷⴰ + ⵉⵙⵔⴰⵢⵉⵍ + ⵍⵀⵉⵏⴷ + ⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉ + ⵍⵄⵉⵔⴰⵇ + ⵉⵔⴰⵏ + ⵉⵙⵍⴰⵏⴷ + ⵉⵟⴰⵍⵢⴰ + ⵊⴰⵎⴰⵢⴽⴰ + ⵍⵓⵔⴷⵓⵏ + ⵍⵢⴰⴱⴰⵏ + ⴽⵉⵏⵢⴰ + ⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏ + ⴽⴰⵎⴱⵓⴷⵢⴰ + ⴽⵉⵔⵉⴱⴰⵜⵉ + ⵇⵓⵎⵓⵔ + ⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙ + ⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹ + ⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙ + ⵍⴽⵡⵉⵜ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⵢⵎⴰⵏ + ⴽⴰⵣⴰⵅⵙⵜⴰⵏ + ⵍⴰⵡⵙ + ⵍⵓⴱⵏⴰⵏ + ⵙⴰⵏⵜⵍⵓⵙⵉ + ⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏ + ⵙⵔⵉⵍⴰⵏⴽⴰ + ⵍⵉⴱⵉⵔⵢⴰ + ⵍⵉⵚⵓⵟⵓ + ⵍⵉⵜⵡⴰⵏⵢⴰ + ⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳ + ⵍⴰⵜⴼⵢⴰ + ⵍⵉⴱⵢⴰ + ⵍⵎⵖⵔⵉⴱ + ⵎⵓⵏⴰⴽⵓ + ⵎⵓⵍⴷⵓⴼⵢⴰ + ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍ + ⵎⴰⵙⵉⴷⵓⵏⵢⴰ + ⵎⴰⵍⵉ + ⵎⵢⴰⵏⵎⴰⵔ + ⵎⵏⵖⵓⵍⵢⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹ + ⵎⴰⵔⵜⵉⵏⵉⴽ + ⵎⵓⵕⵉⵟⴰⵏⵢⴰ + ⵎⵓⵏⵙⵉⵔⴰⵜ + ⵎⴰⵍⵟⴰ + ⵎⵓⵔⵉⵙ + ⵎⴰⵍⴷⵉⴼ + ⵎⴰⵍⴰⵡⵉ + ⵎⵉⴽⵙⵉⴽ + ⵎⴰⵍⵉⵣⵢⴰ + ⵎⵓⵣⵏⴱⵉⵇ + ⵏⴰⵎⵉⴱⵢⴰ + ⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ + ⵏⵏⵉⵊⵉⵔ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽ + ⵏⵉⵊⵉⵔⵢⴰ + ⵏⵉⴽⴰⵔⴰⴳⵡⴰ + ⵀⵓⵍⴰⵏⴷⴰ + ⵏⵏⵔⵡⵉⵊ + ⵏⵉⴱⴰⵍ + ⵏⴰⵡⵔⵓ + ⵏⵉⵡⵉ + ⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰ + ⵄⵓⵎⴰⵏ + ⴱⴰⵏⴰⵎⴰ + ⴱⵉⵔⵓ + ⴱⵓⵍⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ + ⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ + ⴼⵉⵍⵉⴱⴱⵉⵏ + ⴱⴰⴽⵉⵙⵜⴰⵏ + ⴱⵓⵍⵓⵏⵢⴰ + ⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎⵉⴽⵍⵓⵏ + ⴱⵉⵜⴽⴰⵢⵔⵏ + ⴱⵓⵔⵜⵓ ⵔⵉⴽⵓ + ⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰ + ⴱⵕⵟⵇⵉⵣ + ⴱⴰⵍⴰⵡ + ⴱⴰⵔⴰⴳⵡⴰⵢ + ⵇⴰⵜⴰⵔ + ⵔⵉⵢⵓⵏⵢⵓⵏ + ⵔⵓⵎⴰⵏⵢⴰ + ⵔⵓⵙⵢⴰ + ⵔⵡⴰⵏⴷⴰ + ⵙⵙⴰⵄⵓⴷⵉⵢⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏ + ⵙⵙⵉⵛⵉⵍ + ⵙⵙⵓⴷⴰⵏ + ⵙⵙⵡⵉⴷ + ⵙⵏⵖⴰⴼⵓⵔⴰ + ⵙⴰⵏⵜⵉⵍⵉⵏ + ⵙⵍⵓⴼⵉⵏⵢⴰ + ⵙⵍⵓⴼⴰⴽⵢⴰ + ⵙⵙⵉⵔⴰⵍⵢⵓⵏ + ⵙⴰⵏⵎⴰⵔⵉⵏⵓ + ⵙⵙⵉⵏⵉⴳⴰⵍ + ⵚⵚⵓⵎⴰⵍ + ⵙⵓⵔⵉⵏⴰⵎ + ⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱ + ⵙⴰⵍⴼⴰⴷⵓⵔ + ⵙⵓⵔⵢⴰ + ⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽ + ⵜⵛⴰⴷ + ⵟⵓⴳⵓ + ⵟⴰⵢⵍⴰⵏⴷ + ⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏ + ⵟⵓⴽⵍⴰⵡ + ⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜ + ⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏ + ⵜⵓⵏⵙ + ⵟⵓⵏⴳⴰ + ⵜⵓⵔⴽⵢⴰ + ⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓ + ⵜⵓⴼⴰⵍⵓ + ⵟⴰⵢⵡⴰⵏ + ⵟⴰⵏⵥⴰⵏⵢⴰ + ⵓⴽⵔⴰⵏⵢⴰ + ⵓⵖⴰⵏⴷⴰ + ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏ + ⵓⵔⵓⴳⵡⴰⵢ + ⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏ + ⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏ + ⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏ + ⴼⵉⵏⵣⵡⵉⵍⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ + ⴼⵉⵜⵏⴰⵎ + ⴼⴰⵏⵡⴰⵟⵓ + ⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰ + ⵙⴰⵎⵡⴰ + ⵢⴰⵎⴰⵏ + ⵎⴰⵢⵓⵟ + ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ + ⵣⴰⵎⴱⵢⴰ + ⵣⵉⵎⴱⴰⴱⵡⵉ + + + + [ⴰ ⴱ ⴳ {ⴳⵯ} ⴷ ⴹ ⴻ ⴼ ⴽ {ⴽⵯ} ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ] + [ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + + ⵉⵏⵏ + ⴱⵕⴰ + ⵎⴰⵕ + ⵉⴱⵔ + ⵎⴰⵢ + ⵢⵓⵏ + ⵢⵓⵍ + ⵖⵓⵛ + ⵛⵓⵜ + ⴽⵜⵓ + ⵏⵓⵡ + ⴷⵓⵊ + + + ⵉⵏⵏⴰⵢⵔ + ⴱⵕⴰⵢⵕ + ⵎⴰⵕⵚ + ⵉⴱⵔⵉⵔ + ⵎⴰⵢⵢⵓ + ⵢⵓⵏⵢⵓ + ⵢⵓⵍⵢⵓⵣ + ⵖⵓⵛⵜ + ⵛⵓⵜⴰⵏⴱⵉⵔ + ⴽⵜⵓⴱⵔ + ⵏⵓⵡⴰⵏⴱⵉⵔ + ⴷⵓⵊⴰⵏⴱⵉⵔ + + + + + + + + + + + + + + + + + + + + + + + ⴰⵙⴰ + ⴰⵢⵏ + ⴰⵙⵉ + ⴰⴽⵕ + ⴰⴽⵡ + ⴰⵙⵉⵎ + ⴰⵙⵉⴹ + + + ⴰⵙⴰⵎⴰⵙ + ⴰⵢⵏⴰⵙ + ⴰⵙⵉⵏⴰⵙ + ⴰⴽⵕⴰⵙ + ⴰⴽⵡⴰⵙ + ⵙⵉⵎⵡⴰⵙ + ⴰⵙⵉⴹⵢⴰⵙ + + + + + + + ⴰⴽ 1 + ⴰⴽ 2 + ⴰⴽ 3 + ⴰⴽ 4 + + + ⴰⴽⵕⴰⴹⵢⵓⵔ 1 + ⴰⴽⵕⴰⴹⵢⵓⵔ 2 + ⴰⴽⵕⴰⴹⵢⵓⵔ 3 + ⴰⴽⵕⴰⴹⵢⵓⵔ 4 + + + + + + + ⵜⵉⴼⴰⵡⵜ + ⵜⴰⴷⴳⴳⵯⴰⵜ + + + + + + ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ + ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ + + + ⴷⴰⵄ + ⴷⴼⵄ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + d/MM + dd/MM + MMM + d MMM + E d MMM + d MMMM + E d MMMM + m:ss + y + M/y + E d/M/y + MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + + + + + ⵜⴰⵙⵓⵜ + + + ⴰⵙⴳⴳⵯⴰⵙ + + + ⴰⵢⵢⵓⵔ + + + ⵉⵎⴰⵍⴰⵙⵙ + + + ⴰⵙⵙ + ⵉⴹⵍⵍⵉ + ⴰⵙⵙⴰ + ⴰⵙⴽⴽⴰ + + + ⴰⵙⵙ ⴳ ⵉⵎⴰⵍⴰⵙⵙ + + + ⵜⵉⵣⵉ ⴳ ⵡⴰⵙⵙ: ⵜⵉⴼⴰⵡⵜ/ⵜⴰⴷⴳⴳⵯⴰⵜ + + + ⵜⴰⵙⵔⴰⴳⵜ + + + ⵜⵓⵙⴷⵉⴷⵜ + + + ⵜⴰⵙⵉⵏⵜ + + + ⴰⴽⵓⴷ ⵏ ⵓⴳⵎⵎⴰⴹ + + + + + + , +   + + + + + #,##0.00¤ + + + + + + ⴰⴷⵔⵉⵎ ⵏ ⵍⵉⵎⴰⵔⴰⵜ + + + ⴽⵡⴰⵏⵣⴰ ⵏ ⴰⵏⴳⵓⵍⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵓⵙⵜⵔⴰⵍⵢⴰ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⴱⵃⵔⴰⵢⵏ + + + ⴼⵔⴰⵏⴽ ⵏ ⴱⵓⵔⵓⵏⴷⵉ + + + ⴰⴱⵓⵍⴰ ⵏ ⴱⵓⵜⵙⵡⴰⵏⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⴽⴰⵏⴰⴷⴰ + + + ⴼⵔⴰⵏⴽ ⵏ ⴽⵓⵏⴳⵓ + + + ⴰⴼⵔⴰⵏⴽ ⵏ ⵙⵡⵉⵙⵔⴰ + + + ⴰⵢⴰⵏ ⵏ ⵛⵛⵉⵏⵡⴰ + + + ⵉⵙⴽⵓⴷⵓ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ + + + ⴼⵔⴰⵏⴽ ⵏ ⴷⵊⵉⴱⵓⵜⵉ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⴷⵣⴰⵢⵔ + + + ⴰⵊⵏⵉⵀ ⵏ ⵎⵉⵚⵕ + + + ⵏⴰⴼⴽⴰ ⵏ ⵉⵔⵉⵜⵉⵔⵢⴰ + + + ⴱⵉⵔ ⵏ ⵉⵜⵢⵓⴱⵢⴰ + + + ⵓⵔⵓ + + + ⴰⵊⵏⵉⵀ ⴰⵙⵜⵔⵍⵉⵏⵉ ⵏ ⵏⵏⴳⵍⵉⵣ + + + ⵙⵉⴷⵉ ⵏ ⵖⴰⵏⴰ + + + ⴷⴰⵍⴰⵙⵉ ⵏ ⴳⴰⵎⴱⵢⴰ + + + ⴼⵔⴰⵏⴽ ⵏ ⵖⵉⵏⵢⴰ + + + ⴰⵔⵓⴱⵉ ⵏ ⵍⵀⵉⵏⴷ + + + ⴰⵢⴰⵏ ⵏ ⵍⵢⴰⴱⴰⵏ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⴽⵉⵏⵢⴰ + + + ⴼⵔⴰⵏⴽ ⵏ ⵇⵓⵎⵓⵕ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵍⵉⴱⵉⵔⵢⴰ + + + ⵍⵓⵜⵉ ⵏ ⵍⵉⵚⵓⵟⵓ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⵍⵉⴱⵢⴰ + + + ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ + + + ⴼⵔⴰⵏⴽ ⵏ ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ + + + ⵓⵇⵉⵢⵢⴰ ⵏ ⵎⵓⵕⵉⵟⴰⵏⵢⴰ + + + ⴰⵔⵓⴱⵉ ⵏ ⵎⵓⵔⵉⵙ + + + ⴽⵡⴰⵛⴰ ⵏ ⵎⴰⵍⴰⵡⵉ + + + ⴰⵎⵉⵜⵉⴽⵍ ⵏ ⵎⵓⵣⵏⴱⵉⵇ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵏⴰⵎⵉⴱⵢⴰ + + + ⵏⴰⵢⵔⴰ ⵏ ⵏⵉⵊⵉⵔⵢⴰ + + + ⴰⴼⵔⴰⵏⴽ ⵏ ⵔⵡⴰⵏⴷⴰ + + + ⴰⵔⵢⴰⵍ ⵏ ⵙⵙⴰⵄⵓⴷⵉⵢⴰ + + + ⴰⵔⵓⴱⵉ ⵏ ⵙⵙⵉⵛⵉⵍ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⵙⵙⵓⴷⴰⵏ + + + ⴰⵊⵏⵉⵀ ⵏ ⵙⵙⵓⴷⴰⵏ + + + ⴰⵊⵏⵉⵀ ⵏ ⵙⴰⵏⵜⵉⵍⵉⵏ + + + ⵍⵉⵢⵓⵏ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⵚⵚⵓⵎⴰⵍ + + + ⴰⴷⵓⴱⵔⴰ ⵏ ⵙⴰⵏⵟⵓⵎⵉ + + + ⵍⵉⵍⴰⵏⵊⵉⵏⵉ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⵜⵓⵏⵙ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⵟⴰⵏⵥⴰⵏⵢⴰ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⵓⵖⴰⵏⴷⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵉⵡⵓⵏⴰⴽ ⵉⵎⵓⵏⵏ + + + ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ + + + ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ + + + ⴰⵔⴰⵏⴷ ⵏ ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ + + + ⴰⴽⵡⴰⵛⴰ ⵏ ⵣⴰⵎⴱⵢⴰ (1968–2012) + + + ⴰⴽⵡⴰⵛⴰ ⵏ ⵣⴰⵎⴱⵢⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ + + + + + + ⵢⵢⵉⵀ:ⵢ + ⵓⵀⵓ:ⵓ + + + + diff --git a/library/Zend/Locale/Data/shi_Latn.xml b/library/Zend/Locale/Data/shi_Latn.xml new file mode 100755 index 000000000..f9f556b48 --- /dev/null +++ b/library/Zend/Locale/Data/shi_Latn.xml @@ -0,0 +1,751 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ලෝකය + අප්‍රිකාව + උතුරු ඇමෙරිකාව + දකුණු ඇමෙරිකාව + ඕෂනියාව + බටහිරදිග අප්‍රිකාව + මධ්‍යම ඇමෙරිකාව + පෙරදිග අප්‍රිකාව + උතුරුදිග අප්‍රිකාව + මධ්‍යම අප්‍රිකාව + දකුණුදිග අප්‍රිකාව + ඇමරිකාව + උතුරුදිග ඇමෙරිකාව + කැරීබියන් + නැගෙනහිර ආසියාව + දකුණු ආසියාව + අග්නිදිග ආසියාව + දකුණුදිග යුරෝපය + ඕස්ට්‍රලේෂියාව + මෙලනීසියාව + මයික්‍රෝනීසියානු කළාපය + පොලිනීසියාව + ආසියාව + මධ්‍යම ආසියාව + බටහිර ආසියාව + යුරෝපය + නැගෙනහිර යුරෝපය + උතුරු යුරෝපය + බටහිර යුරෝපය + ලතින් ඇමෙරිකාව + ඇසෙන්ෂන් දිවයින + ඇන්ඩෝරාව + එක්සත් අරාබි එමිර් රාජ්‍යය + ඇෆ්ගනිස්ථානය + ඇන්ටිගුවා සහ බාබියුඩාව + ඇන්ගුයිලාව + ඇල්බේනියාව + ආර්මේනියාව + නෙදර්ලන්ත ඇන්ටිලීසිය + ඇන්ගෝලාව + ඇන්ටාක්ටිකාව + ආර්ජෙන්ටිනාව + ඇමරිකානු සැමෝවාව + ඔස්ට්‍රියාව + ඕස්ට්‍රේලියාව + අරුබාව + ඕලන්ඩ් දූපත් + අසර්බයිජානය + බොස්නියාව සහ හර්සගොවීනාව + බාර්බඩෝස් + බංග්ලාදේශය + බෙල්ජියම + බර්කිනා ෆාසෝ + බල්ගේරියාව + බහරේන් + බුරුන්දි + බෙනින් + ශාන්ත බර්තලෙමි + බර්මියුඩා + බෲනායි + බොලීවියාව + කැරිබියානු නෙදර්ලන්තය + බ්‍රසීලය + බහමාස් + භූතානය + බුවට් දුපත් + බොට්ස්වානා + බෙලරුස් + බෙලීස් + කැනඩාව + කොකෝස් දූපත් + කොංගො - කින්ශාසා + කොංගෝව + මධ්‍යම අප්‍රිකානු ජනරජය + කොංගො - බ්‍රසාවිල් + කොංගෝ (ජනරජය) + ස්විස්ටර්ලන්තය + කෝට් දි අයිවරි + අයිවරි කෝස්ට් + කුක් දූපත් + චිලී + කැමරූන් + චීනය + කොළොම්බියාව + ක්ලීපර්ටන් දූපත + කොස්ටරිකාව + කියුබාව + කේප් වර්ඩ් + කුරකාවෝ + ක්‍රිස්මස් දූපත + සයිප්‍රසය + චෙක් ජනරජය + ජර්මනිය + දියාගෝ ගාර්සියා + ජිබුටි + ඩෙන්මාර්කය + ඩොමිනිකාව + ඩොමිනිකා ජනරජය + ඇල්ජීරියාව + සෙයුටා සහ මෙලිල්ලා + ඉක්වදෝරය + එස්තෝනියාව + ඊජිප්තුව + බටහිර සහරාව + එරිත්‍රියාව + ස්පාඤ්ඤය + ඉතියෝපියාව + යුරෝපා සංගමය + ෆින්ලන්තය + ෆීජී + ෆෝක්ලන්ත දූපත් + ෆෝක්ලන්ත දූපත් (අයිලස් මල්වියනාස්) + මයික්‍රොනීසියාව + ෆැරෝ දූපත් + ප්‍රංශය + ගැබොන් + එක්සත් රාජධානිය + එ.රා + ග්‍රැනඩාව + ජෝර්ජියාව + ප්‍රංශ ගයනාව + ගර්න්සිය + ඝානාව + ජිබ්‍රෝල්ටාව + ග්‍රීන්ලන්තය + ගැම්බියාව + ගිණියාව + ග්වෝඩලෝප් + සමක ගිනියාව + ග්‍රීසිය + දකුණු ජෝර්ජියාව සහ දකුණු සැන්ඩ්විච් දූපත් + ගෝතමාලාව + ගුවාම් + ගිනි බිසව් + ගයනාව + හොංකොං චීන විශේෂ පරිපාලන කලාපය + හොංකොං + හර්ඩ් දූපත සහ මැක්ඩොනල්ඩ් දූපත් + හොන්ඩුරාස් + ක්‍රොඒෂියාව + හයිටි + හන්ගේරියාව + කැනරි සූපත් + ඉන්දුනීසියාව + අයර්ලන්තය + ඊශ්‍රායලය + අයිල් ඔෆ් මෑන් + ඉන්දියාව + බ්‍රිතාන්‍ය ඉන්දීය සාගර බල ප්‍රදේශය + ඉරාකය + ඉරානය + අයිස්ලන්තය + ඉතාලිය + ජර්සි + ජැමෙයිකාව + ජෝර්දානය + ජපානය + කෙන්යාව + කිර්ගිස්තානය + කාම්බෝජය + කිරිබති + කොමොරෝස් + ශාන්ත කිට්ස් සහ නේවිස් + උතුරු කොරියාව + දකුණු කොරියාව + කුවේටය + කේමන් දූපත් + කසකස්තානය + ලාඕසය + ලෙබනනය + ශාන්ත ලුසියා + ලික්ටන්ස්ටයින් + ශ්‍රී ලංකාව + ලයිබීරියාව + ලෙසතෝ + ලිතුවේනියාව + ලක්ශම්බර්ග් + ලැට්වියාව + ලිබියාව + මොරොක්කෝව + මොනැකෝව + මොල්ඩෝවාව + මොන්ටෙනීග්‍රෝ + ශාන්ත මාර්ටින් + මැඩගස්කරය + මාෂල් දූපත් + මැසිඩෝනියාව + මැසිඩෝනියාව (FYROM) + මාලි + මියන්මාරය (බුරුමය) + මොන්ගෝලියාව + මකාවු චීන විශේෂ පරිපාලන කලාපය + මකාවු + උතුරු මරියානා දූපත් + මර්ටිනික් + මොරිටේනියාව + මොන්සෙරාට් + මෝල්ටාව + මුරුසිය + මාල දිවයින + මලාවි + මෙක්සිකෝව + මැලේසියාව + මොසැම්බික් + නැමීබියාව + නව කැලිඩෝනියාව + නයිජර් + නෝෆෝක් දූපත + නයිජීරියාව + නිකරගුවාව + නෙදර්ලන්තය + නෝර්වේ + නේපාලය + නාවුරු + නියූ + නවසීලන්තය + ඕමානය + පැනමාව + පේරු + ප්‍රංශ පොලිනීසියාව + පැපුවා නිව් ගිනියාව + පිලිපීනය + පාකිස්තානය + පෝලන්තය + ශාන්ත පියරේ සහ මැකෝලන් + පිට්කෙය්න් දූපත් + පුවර්ටෝ රිකෝ + පලස්තීන රාජ්‍යය + පලස්තීනය + පෘතුගාලය + පලාවු + පැරගුවේ + කටාර් + ඈත ඕෂනියාව + රීයුනියන් + රුමේනියාව + සර්බියාව + රුසියාව + රුවන්ඩාව + සෞදි අරාබිය + සොලමන් දූපත් + සීශෙල්ස් + සූඩානය + ස්වීඩනය + සිංගප්පූරුව + ශාන්ත හෙලේනා + ස්ලෝවේනියාව + ස්වෙල්බර්ඩ් සහ ජේන් මයේන් + ස්ලෝවැකියාව + සියරාලියෝන් + සැන් මැරිනෝ + සෙනගාලය + සෝමාලියාව + සුරිනාමය + දකුණු සුඩානය + සාඕ තෝම් සහ ප්‍රින්සිප් + එල් සැල්වදෝරය + ශාන්ත මාර්ටෙන් + සිරියාව + ස්වාසිලන්තය + ට්‍රිස්ටන් ද කුන්හා + ටර්ක්ස් සහ කයිකොස් දූපත් + චැච් + දකුණු ප්‍රංශ දූපත් සමූහය + ටොගෝ + තායිලන්තය + ටජිකිස්තානය + ටොකලාවු + ටිමෝර් - ලෙස්ත් + නැගෙනහිර ටිමෝරය + ටර්ක්මෙනිස්ථානය + ටියුනීසියාව + ටොංගා + තුර්කිය + ට්‍රිනිඩෑඩ් සහ ටොබැගෝ + ටුවාලූ + තායිවානය + ටැන්සානියාව + යුක්රේනය + උගන්ඩාව + එක්සත් ජනපද ඈත දූපත් + එක්සත් ජනපදය + එ.ජ + උරුගුවේ + උස්බෙකිස්ථානය + වතිකානු නගරය + ශාන්ත වින්සන්ට් සහ ග්‍රෙනඩින්ස් + වෙනිසියුලාව + බ්‍රිතාන්‍ය වර්ජින් දූපත් + ඇමරිකානු වර්ජින් දූපත් + වියට්නාමය + වනුවාටු + වැලිස් සහ ෆුටුනා + සැමෝවා + කොසෝවෝ + යේමනය + මයෝට් + දකුණු අප්‍රිකාව + සැම්බියාව + සිම්බාබ්වේ + හඳුනා නොගත් කළාපය + + + දිනදසුන + පෙළගැස්ම + විනිමය + ඉලක්කම් + + + ඉන්දු අරාබි ඉලක්කම් + වැඩි කළ ඉන්දු අරාබි ඉලක්කම් + ඇමරිකානු සංඛ්‍යාංකන + ඇමරිකානු කුඩා සංඛ්‍යාංකන + බෙංගාලි ඉලක්කම් + බොදු දිනදසුන + චීන දිනදසුන + දේවනාගරී ඉලක්කම් + ශබ්දකෝෂ පෙළගැස්ම + යුනිකේත පෙරනිමි පෙළගැස්ම + ඉතියෝපියානු සංඛ්‍යාංකන + සම්පූර්ණ පළල ඉලක්කම් + ජෝජියානු සංඛ්‍යාංකන + ග්‍රෙගරියානු දිනදසුන + ග්‍රීක සංඛ්‍යාංකන + ග්‍රීක කුඩා සංඛ්‍යාංකන + ගුජරාටි ඉලක්කම් + ගුර්මුකී ඉලක්කම් + චීන දශමය සංඛ්‍යාංකන + සුළුකළ චීන සංඛ්‍යාංකන + සුළුකළ චීන මුල්‍යමය සංඛ්‍යාංකන + සාම්ප්‍රදායික චීන සංඛ්‍යාංකන + සාම්ප්‍රදායික චීන මුල්‍යමය සංඛ්‍යාංකන + හීබෲ සංඛ්‍යාංකන + හීබෲ දිනදසුන + ජපාන සංඛ්‍යාංකන + ජපාන මුල්‍යමය සංඛ්‍යාංකන + කමර් ඉලක්කම් + කන්නඩ ඉලක්කම් + ලාඕ ඉලක්කම් + බටහිර ඉලක්කම් + මලයාලම් ඉලක්කම් + බුරුම ඉලක්කම් + ඔරියා ඉලක්කම් + රෝමානු සංඛ්‍යාංකන + රෝමානු කුඩා සංඛ්‍යාංකන + සාමාන්‍ය සෙවීම + සම්මත පෙළගැස්ම + සාම්ප්‍රදායික දෙමළ සංඛ්‍යාංකන + දෙමළ ඉලක්කම් + තෙළිඟු ඉලක්කම් + තායි ඉලක්කම් + ටිබෙට ඉලක්කම් + + + මෙට්රික් + එංගලන්ත + ඇමරිකානු + + + {0} භාෂාව: සිංහල + {0} අක්ෂර මාලාව: සිංහල + කලාපය: {0} + + + + [අ ආ ඇ ඈ ඉ ඊ උ ඌ ඍ එ ඒ ඓ ඔ ඕ ඖ ං ඃ ක ඛ ග ඝ ඞ ඟ ච ඡ ජ ඣ ඥ ඤ ට ඨ ඩ ඪ ණ ඬ ත ථ ද ධ න ඳ ප ඵ බ භ ම ඹ ය ර ල ව ශ ෂ ස හ ළ ෆ ා ැ ෑ \u0DD2 \u0DD3 \u0DD4 \u0DD6 ෘ ෲ ෟ ෙ ේ ෛ ො ෝ ෞ \u0DCA] + [\u200B\u200C\u200D ඎ ඏ ඐ ඦ ෳ] + [අ ආ ඇ ඈ ඉ ඊ උ ඌ ඍ එ ඒ ඓ ඔ ඕ ඖ ක ඛ ග ඝ ඞ ඟ ච ඡ ජ ඣ ඥ ඤ ට ඨ ඩ ඪ ණ ඬ ත ථ ද ධ න ඳ ප ඵ බ භ ම ඹ ය ර ල ව ශ ෂ ස හ ළ ෆ] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + G y MMMM d, EEEE + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + G y + G y MMM + G y MMM d + G y MMM d, E + a h + HH + a h.mm + HH:mm + a h.mm.ss + HH:mm:ss + L + M-d + M-d, E + LLL + MMM d + MMM d E + mm.ss + G y + G y + G y-M + G y-M-d + G y-M-d, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + a h - a h + a h-h + + + HH–HH + + + a h:mm - a h:mm + a h.mm - h.mm + a h.mm - h.mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + a h.mm - a hhh.mm v + a h.mm - h.mm v + a h:mm - h.mm v + + + HH:mm–HH:mm v + HHmm-HHmm v + + + a h - a h v + a h - h vv + + + HH–HH v + + + M–M + + + M-d - M-d + M-d - M-d + + + M-d, E – M-d, E + M-d, E – M-d, E + + + LLL–LLL + + + MMM d-d + MMM d - MMM d + + + MMM-d, E – MMM-d, E + MMM-dd, E – MMM-dd, E + + + G y–y + + + G y-M – y-M + G y-M – y-M + + + G y-M-d – y-M-d + G y-M-d – y-M-d + G y-M-d – y-M-d + + + G y-M-d, E – y-M-d, E + G y-M-d, E – y-M-d, E + G y-M-d, E – y-M-d, E + + + G y MMM–MMM + G y MMM - y MMM + + + G y MMM d - d + G y MMM d - MMM d + G y MMM d - y MMM d + + + G y MMM d, E - y MMM d, E + G y MMM d, E - y MMM d, E + G y MMM d, E - y MMM d, E + + + G y MMMM - MMMM + G y MMMM - y MMMM + + + + + + + + + ජන + පෙබ + මාර්තු + අප්‍රේල් + මැයි + ජූනි + ජූලි + අගෝ + සැප් + ඔක් + නොවැ + දෙසැ + + + + පෙ + මා + + මැ + ජූ + ජූ + + සැ + + නෙ + දෙ + + + ජනවාරි + පෙබරවාරි + මාර්තු + අප්‍රේල් + මැයි + ජූනි + ජූලි + අගෝස්තු + සැප්තැම්බර් + ඔක්තෝබර් + නොවැම්බර් + දෙසැම්බර් + + + + + ජන + පෙබ + මාර් + අප්‍රේල් + මැයි + ජූනි + ජූලි + අගෝ + සැප් + ඔක් + නොවැ + දෙසැ + + + + පෙ + මා + + මැ + ජූ + ජූ + + සැ + + නෙ + දෙ + + + ජනවාරි + පෙබරවාරි + මාර්තු + අප්‍රේල් + මැයි + ජූනි + ජූලි + අගෝස්තු + සැප්තැම්බර් + ඔක්තෝබර් + නොවැම්බර් + දෙසැම්බර් + + + + + + + ඉරිදා + සඳුදා + අඟහ + බදාදා + බ්‍රහස් + සිකු + සෙන + + + + + + + බ්‍ර + සි + සෙ + + + ඉරි + සඳු + අඟ + බදා + බ්‍රහ + සිකු + සෙන + + + ඉරිදා + සඳුදා + අඟහරුවාදා + බදාදා + බ්‍රහස්පතින්දා + සිකුරාදා + සෙනසුරාදා + + + + + ඉරිදා + සඳුදා + අඟහ + බදාදා + බ්‍රහස් + සිකු + සෙන + + + + + + + බ්‍ර + සි + සෙ + + + ඉරි + සඳු + අඟ + බදා + බ්‍රහ + සිකු + සෙන + + + ඉරිදා + සඳුදා + අඟහරුවාදා + බදාදා + බ්‍රහස්පතින්දා + සිකුරාදා + සෙනසුරාදා + + + + + + + කාර්:1 + කාර්:2 + කාර්:3 + කාර්:4 + + + 1 + 2 + 3 + 4 + + + 1 වන කාර්තුව + 2 වන කාර්තුව + 3 වන කාර්තුව + 4 වන කාර්තුව + + + + + කාර්:1 + කාර්:2 + කාර්:3 + කාර්:4 + + + 1 + 2 + 3 + 4 + + + 1 වන කාර්තුව + 2 වන කාර්තුව + 3 වන කාර්තුව + 4 වන කාර්තුව + + + + + + + පෙ.ව. + ප.ව. + + + + + + ක්‍රිස්තු පූර්‍ව + ක්‍රිස්තු වර්‍ෂ + + + ක්‍රි.පූ. + පො.යු.පෙ + ක්‍රි.ව. + පො.යු + + + + + + y MMMM d, EEEE + + + + + y MMMM d + + + + + y MMM d + + + + + y-MM-dd + + + + + + + a h.mm.ss zzzz + + + + + a h.mm.ss z + + + + + a h.mm.ss + + + + + a h.mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E a h.mm + E HH:mm + E a h.mm.ss + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + a h + HH + a h.mm + HH:mm + a h.mm.ss + HH:mm:ss + L + M-d + M-d, E + LLL + MMM d + MMM d E + mm.ss + y + y-M + y-M-d + y-M-d, E + y MMM + y MMM d + y MMM d, E + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + a h - a h + a h-h + + + HH–HH + + + a h.mm - a h.mm + a h.mm - h.mm + a h.mm - h.mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + a h.mm - a h.mm v + a h.mm - h.mm v + a h.mm - h.mm v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + a h - a h v + a h - h v + + + HH–HH v + + + M–M + + + M-d - M-d + M-d - M-d + + + M-d, E – M-d, E + M-d, E – M-d, E + + + LLL–LLL + + + MMM d-d + MMM d - MMM d + + + MMM-d, E – MMM-d, E + MMM-dd, E – MMM-dd, E + + + y–y + + + y-MM – y-MM + y-MM – y-MM + + + y-M-d – y-M-d + y-M-d – y-M-d + y-M-d – y-M-d + + + y-M-d, E – y-M-d, E + y-M-d, E – y-M-d, E + y-M-d, E – y-M-d, E + + + y MMM–MMM + y MMM - y MMM + + + y MMM d - d + y MMM d - MMM d + y MMM d - y MMM d + + + y MMM d, E - y MMM d, E + y MMM d, E - y MMM d, E + y MMM d, E - y MMM d, E + + + y MMMM - MMMM + y MMMM - y MMMM + + + + + + + + යුගය + + + වර්ෂය + පසුගිය වසර + මෙම වසර + ඊළඟ වසර + + වසර {0} කින් + වසර {0} කින් + + + වසර {0}ට පෙර + වසර {0}ට පෙර + + + + මාසය + පසුගිය මාසය + මෙම මාසය + ඊළඟ මාසය + + මාස {0}කින් + මාස {0}කින් + + + මාස {0}කට පෙර + මාස {0}කට පෙර + + + + සතිය + පසුගිය සතිය + මෙම සතිය + ඊළඟ සතිය + + සති {0} කින් + සති {0} කින් + + + සති {0}කට පෙර + සති {0}කට පෙර + + + + දිනය + පෙරේදා + ඊයෙ + අද + හෙට + අනිද්දා + + දින {0}න් + දින {0}න් + + + දින {0} ට පෙර + දින {0} ට පෙර + + + + සතියේ දිනය + + + පසුගිය ඉරිදා + මේ ඉරිදා + ඊළඟ ඉරිදා + + + පසුගිය සඳුදා + මේ සඳුදා + ඊළඟ සඳුදා + + + පසුගිය අඟහරුවාදා + මේ අඟහරුවාදා + ඊළඟ අඟහරුවාදා + + + පසුගිය බදාදා + මේ බදාදා + ඊළඟ බදාදා + + + පසුගිය බ්‍රහස්පතින්දා + මේ බ්‍රහස්පතින්දා + ඊළඟ බ්‍රහස්පතින්දා + + + පසුගිය සිකුරාදා + මේ සිකුරාදා + ඊළඟ සිකුරාදා + + + පසුගිය සෙනසුරාදා + මේ සෙනසුරාදා + ඊළඟ සෙනසුරාදා + + + පෙ.ව/ප.ව + + + පැය + + පැය {0} කින් + පැය {0} කින් + + + පැය {0}ට පෙර + පැය {0}ට පෙර + + + + මිනිත්තුව + + මිනිත්තු {0} කින් + මිනිත්තු {0} කින් + + + මිනිත්තු {0}ට පෙර + මිනිත්තු {0}ට පෙර + + + + තත්පරය + දැන් + + තත්පර {0} කින් + තත්පර {0} කින් + + + තත්පර {0}කට පෙර + තත්පර {0}කට පෙර + + + + කාල කලාපය + + + + +HH:mm;-HH:mm + ග්‍රිමවේ{0} + ග්‍රිමවේ + {0} වේලාව + {0} දිවාආලෝක වේලාව + {0} සම්මත වේලාව + {1} ({0}) + + හඳුනා නොගත් නගරය + + + ඇන්ඩෝරාව + + + ඩුබායි + + + කාබුල් + + + ඇන්ටිගුවා + + + ඇන්ගුයිලාව + + + ටිරානේ + + + යෙරෙවන් + + + ලුවන්ඩා + + + රොතෙරා + + + පැල්මර් + + + සියෝවා + + + මව්සන් + + + ඩේවිස් + + + වොස්ටොක් + + + කැසේ + + + ඩුමොන්ට් ඩු'ර්විල් + + + මැක්මුර්ඩෝ + + + රියෝ ගලෙගොස් + + + මෙන්ඩෝසා + + + සැන් ජුවාන් + + + උෂුඅයියා + + + ලා රිජෝලා + + + සැන් ලුවිස් + + + කටමර්කා + + + සොල්ටා + + + ජුජුයි + + + ටුකුමන් + + + කොර්දොබා + + + බුවනෝස් අයර්ස් + + + පගෝ පගෝ + + + වියනා + + + පර්ත් + + + ඉයුක්ලා + + + ඩාවින් + + + ඇඩිලේඩ් + + + බ්‍රෝකන් හිල් + + + කුරී + + + මෙල්බෝර්න් + + + හෝබාර්ට් + + + ලින්ඩේමන් + + + සිඩ්නි + + + බ්‍රිස්බේන් + + + මක්කුවරි + + + ලෝර්ඩ් හෝව් + + + අරූබා + + + මරියෙහම්න් + + + බාකු + + + සරාජෙවෝ + + + බාබඩෝස් + + + ඩකා + + + බ්‍රසල්ස් + + + ඔආගඩොගො + + + සොෆියා + + + බහරේන් + + + බුජුම්බුරා + + + පොර්තෝ-නොවෝ + + + ශාන්ත බර්තලෙමි + + + බර්මියුඩාව + + + බෲනායි + + + ලා පස් + + + ක්‍රලෙන්දිජ්ක් + + + එයිරුනේප් + + + රියෝ බ්‍රන්කෝ + + + පොර්තෝ වෙල්හෝ + + + බොආ විස්ටා + + + මැනෝස් + + + කුයිඅබා + + + සන්ටරේම් + + + කම්පෝ ග්‍රෑන්ඩ් + + + බෙලෙම් + + + ඇරගුඅයිනා + + + සාවෝ පෝලො + + + බහියා + + + ෆොර්ටලේසා + + + මසේයියෝ + + + රෙසිෆ් + + + නොරොන්හා + + + නස්සෝ + + + තිම්පු + + + ගැබරෝන් + + + මින්ස්ක් + + + බේලිස් + + + ඩෝසන් + + + වයිට්හෝර්ස් + + + ඉනුවික් + + + වැන්කුවර් + + + ඩෝසන් ක්‍රීක් + + + ක්‍රෙස්ටන් + + + යෙලෝනයිෆ + + + එඩ්මන්ටන් + + + ස්විෆ්ට් කරන්ට් + + + කේම්බ්‍රිජ් බොක්ක + + + රෙජිනා + + + විනිපෙග් + + + රෙසොලුට් + + + රෙයිනි ගඟ + + + රැන්කින් පිවිසුම + + + ඇටිකොකන් + + + තන්ඩර් බොක්ක + + + නිපිගන් + + + ටොරන්ටෝ + + + ඉකාලුයිට් + + + පැන්නීටන් + + + මොන්ක්ටන් + + + හලිෆැක්ස් + + + ගූස් බොක්ක + + + ග්ලේස් බොක්ක + + + බ්ලැන්ක්-සැබ්ලන් + + + ශාන්ත ජෝන්ගේ + + + කොකොස් + + + කින්ශාසා + + + ලුබුම්බාශි + + + බන්ගුයි + + + බ්‍රසාවිල් + + + සූරිච් + + + අබිජාන් + + + රරෝටෝන්ගා + + + ඊස්ටර් + + + සන්තියාගෝ + + + දෞඅලා + + + කාශ්ගර් + + + උරුම්කි + + + චොන්ග්කුයින්ග් + + + ෂැන්හයි + + + හාබින් + + + බොගොටා + + + කොස්ටරිකා + + + හවානා + + + කේප් වර්ඩ් + + + කුරකාවෝ + + + ක්‍රිස්මස් + + + නිකෝසියා + + + ප්‍රෙග් + + + බුසින්ජෙන් + + + බර්ලින් + + + ජිබුටි + + + කෝපන්හේගන් + + + ඩොමිනිකා + + + සැන්ටෝ ඩොමින්ගෝ + + + ඇල්ජියර්ස් + + + ගලපගෝස් + + + ගුඅයාකුයිල් + + + ටලින් + + + කයිරෝ + + + එල් ආයුන් + + + අස්මාරා + + + කැනරි + + + සෙයුටා + + + මැඩ්රිඩ් + + + අඩිස් අබාබා + + + හෙල්සින්කි + + + ෆීජි + + + ස්ටැන්ලි + + + චූක් + + + පොන්පෙයි + + + කොස්රේ + + + ෆාරෝ + + + පැරිස් + + + ලිබ්රවිල් + + + + බ්‍රිතාන්‍ය ගිම්හාන කාලය + + ලන්ඩන් + + + ග්‍රැනඩා + + + ට්බිලිසි + + + කේයෙන් + + + ගුවන්සේ + + + අක්රා + + + ජිබ්රෝල්ටා + + + තුලේ + + + නූක් + + + ඉටොකොර්ටෝමිට් + + + ඩෙන්මාර්ක්ශව්න් + + + බන්ජුල් + + + කොනක්‍රි + + + ග්වාඩ්ලෝප් + + + මලබෝ + + + ඇතැන්ස් + + + දකුණු ජෝර්ජියාව + + + ගෝතමාලාව + + + ගුවාම් + + + බිසෝ + + + ගයනාව + + + හොංකොං + + + ටෙගුසිගල්පා + + + සග්රෙබ් + + + පොර්ට්-ඕ-ප්‍රින්ස් + + + බුඩාපෙස්ට් + + + ජකර්තා + + + පොන්ටියනක් + + + මක්ස්සාර් + + + ජයපුර + + + + අයර්ලන්ත ගිම්හාන කාලය + + ඩබ්ලින් + + + ජෙරුසලම + + + අයිල් ඔෆ් මෑන් + + + කල්කටා + + + චාගොස් + + + බැග්ඩෑඩ් + + + ටෙහෙරාන් + + + රෙයික්ජාවික් + + + රෝමය + + + ජර්සි + + + ජැමෙයිකා + + + අම්මාන් + + + ටෝකියෝ + + + නයිරෝබි + + + බිශ්කෙක් + + + නොම් පෙන් + + + එන්ඩර්බරි + + + කිරිමටි + + + ටරාවා + + + කොමොරෝ + + + ශාන්ත කිට්ස් + + + ප්යෝන්ග්යැන්ග් + + + සෝල් + + + කුවේට් + + + කේමන් + + + අක්ටෝ + + + ඔරාල් + + + අක්ටෝබ් + + + ක්යිසිලෝර්ඩා + + + අල්මටි + + + වියැන්ටියන් + + + බීරුට් + + + ශාන්ත ලුසියා + + + වඩුස් + + + කොළඹ + + + මොන්රොවියා + + + මසේරු + + + විල්නියුස් + + + ලක්සැම්බර්ග් + + + රිගා + + + ට්‍රිපොලි + + + කැසබ්ලන්කා + + + මොනැකෝ + + + චිසිනෝ + + + පොඩ්ගොරිකා + + + මැරිගොට් + + + ඇන්ටනානරිවෝ + + + ක්වාජලෙයින් + + + මජුරෝ + + + ස්කොප්ජේ + + + බමකො + + + රැංගුන් + + + හොව්ඩ් + + + උලාන්බාටර් + + + චොයිබල්සාන් + + + මැකාවු + + + සයිපාන් + + + මාටිනික් + + + නුආක්චොට් + + + මොන්ට්සේරාට් + + + මෝල්ටා + + + මුරුසිය + + + මාල දිවයින + + + බ්ලන්ටයර් + + + ටිජුආනා + + + සැන්ටා ඉසබෙල් + + + හෙමොසිලෝ + + + මසට්ලාන් + + + චිහුආහුආ + + + බහියා බන්දෙරාස් + + + ඔජිනගා + + + මොන්ටෙරේ + + + මෙක්සිකෝ නගරය + + + මටමොරොස් + + + මෙරිඩා + + + කැන්කුන් + + + ක්වාලාලම්පූර් + + + කුචිං + + + මපුටෝ + + + වින්ඩ්හොඑක් + + + නෝමියා + + + නියාමේ + + + නෝෆෝක් + + + ලාගෝස් + + + මනගුආ + + + ඇම්ස්ටර්ඩෑම් + + + ඔස්ලෝ + + + කත්මන්ඩු + + + නවුරු + + + නියු + + + චැතම් + + + ඕක්ලන්ඩ් + + + මස්කට් + + + පැනමා + + + ලීමා + + + ටහිති + + + මාකුවෙසාස් + + + ගම්බියෙර් + + + පොර්ට් මොරෙස්බි + + + මැනිලා + + + කරච්චිචි + + + වර්සෝ + + + මිකියුලන් + + + පිට්කෙයාන් + + + පුවටොරිකෝව + + + ගාසා + + + හෙබ්රෝන් + + + ඇසොරේ + + + මඩෙයිරා + + + ලිස්බන් + + + පලාවු + + + අසුන්සියොන් + + + කටාර් + + + රියුනියන් + + + බුකාරෙස්ට් + + + බෙල්ග්‍රේඩ්ඩ් + + + කලිනින්ග්‍රෑඩ් + + + මොස්කව් + + + වොල්ගොග්‍රෑඩ් + + + සමරා + + + යෙකටරින්බර්ග් + + + ඔම්ස්ක් + + + නොවොසිබර්ස්ක් + + + නොවොකුස්නේට්ස්ක් + + + ක්‍රස්නෝයාර්ස්ක් + + + ඉරකුට්ස්ක් + + + යකුට්ස්ක් + + + ව්ලඩිවොස්ටොක් + + + ඛන්ඩිගා + + + සක්හලින් + + + උස්ට්-නෙරා + + + මගඩන් + + + කම්චට්කා + + + ඇනාදිය්ර් + + + කිගාලි + + + රියාද් + + + ගුවාඩල්කැනල් + + + මාහේ + + + කාර්ටොම් + + + ස්ටොක්හෝම් + + + සිංගප්පූරුව + + + ශා. හෙලේනා + + + ල්ජුබුල්ජනා + + + ලෝන්ග්ඉයර්බියෙන් + + + බ්‍රටිස්ලවා + + + ෆ්‍රීටවුන් + + + සැන් මැරිනෝ + + + ඩකර් + + + මොගඩිෂු + + + පැරාමරිබෝ + + + ජුබා + + + සාඕ තෝම් + + + එල්සැල්වදෝර් + + + ලෝවර් ප්‍රින්සස් ක්වාටර් + + + ඩැමස්කස් + + + ම්බබානේ + + + ග්රෑන්ඩ් ටර්ක් + + + ද්ජමෙනා + + + කෙර්ගුඑලෙන් + + + ලෝම් + + + බැංකොක් + + + ඩුශන්බේ + + + ෆාකාඕෆෝ + + + ඩිලි + + + අශ්ගබැට් + + + ටියුනිස් + + + ටොන්ගටාපු + + + ඉස්තාන්බුල් + + + පොර්ට් ඔෆ් ස්පෙයින් + + + ෆුනෆුටි + + + තායිපෙ + + + දාර් එස් සලාම් + + + උස්ගොරෝඩ් + + + කිව් + + + සිම්ෆෙරෝපොල් + + + සපොරෝසියේ + + + කම්පාලා + + + මිඩ්වේ + + + ජොන්ස්ටන් + + + වේක් + + + ඇඩක් + + + නෝම් + + + හොනොලුලු + + + ඇනකොරාජ් + + + යකුටට් + + + සිට්කා + + + ජූනෝ + + + මෙට්ලකට්ලා + + + ලොස් ඇන්ජලීස් + + + බොයිසි + + + ෆීනික්ස් + + + ඩෙන්වර් + + + බියුලා, උතුරු ඩකෝටා + + + නව සලෙම්ම, උතුරු ඩකෝටා + + + මධ්‍යම, උතුරු ඩකෝටා + + + චිකාගෝ + + + මෙනොමිනී + + + වින්සනස්, ඉන්දියානා + + + පීටර්ස්බර්ග්, ඉන්දියානා + + + ටෙල් නගරය, ඉන්දියානා + + + නොක්ස්, ඉන්දියානා + + + විනමැක්, ඉන්දියානා + + + මරෙන්ගෝ, ඉන්දියානා + + + ඉන්ඩියානපොලිස් + + + ලුවිස්විල් + + + වෙවේ, ඉන්දියානා + + + මොන්ටිසෙලෝ, කෙන්ටකි + + + ඩෙත්රුවා + + + නිව්යෝක් + + + මොන්ටෙවිඩියෝ + + + සාමාර්කන්ඩ් + + + ටෂ්කෙන්ට් + + + වතිකානුව + + + ශාන්ත වින්ට්සන් + + + කරකස් + + + ටොර්ටෝලා + + + ශාන්ත තෝමස් + + + හෝචි මිං නගරය + + + එෆාත් + + + වැලිස් + + + ඇපියා + + + ඒඩ්න් + + + මයෝටි + + + ජොහන්නස්බර්ග් + + + ලුසාකා + + + හරාරේ + + + + ඇෆ්ගනිස්ථාන වේලාව + + + + + මධ්‍යම අප්‍රිකානු වේලාව + + + + + නැගෙනහිර අප්‍රිකානු වේලාව + + + + + දකුණු අප්‍රිකානු වේලාව + + + + + බටහිර අප්‍රිකානු වේලාව + බටහිර අප්‍රිකානු සම්මත වේලාව + බටහිර අප්‍රිකානු ග්‍රීෂ්ම කාලය + + + + + ඇලස්කා වේලාව + ඇලස්කා සම්මත වේලාව + ඇලස්කා දිවාආලෝක වේලාව + + + + + ඇමර්සන් වේලාව + ඇමර්සන් සම්මත වේලාව + ඇමර්සන් ග්‍රීෂ්ම කාලය + + + + + උතුරු ඇමරිකානු මධ්‍යම වේලාව + උතුරු ඇමරිකානු මධ්‍යම සම්මත වේලාව + උතුරු ඇමරිකානු මධ්‍යම දිවාආලෝක වේලාව + + + + + උතුරු ඇමරිකානු නැගෙනහිර වේලාව + උතුරු ඇමරිකානු නැගෙනහිර සම්මත වේලාව + උතුරු ඇමරිකානු නැගෙනහිර දිවාආලෝක වේලාව + + + + + උතුරු ඇමරිකානු කඳුකර වේලාව + උතුරු ඇමරිකානු කඳුකර සම්මත වේලාව + උතුරු ඇමරිකානු කඳුකර දිවාආලෝක වේලාව + + + + + උතුරු ඇමරිකානු පැසිෆික් වේලාව + උතුරු ඇමරිකානු පැසිෆික් සම්මත වේලාව + උතුරු ඇමරිකානු පැසිෆික් දිවාආලෝක වේලාව + + + + + අරාබි වේලාව + අරාබි සම්මත වේලාව + අරාබි දහවල් වේලාව + + + + + ආර්ජන්ටිනා වේලාව + ආර්ජන්ටිනා සම්මත වේලාව + ආර්ජන්ටිනා ග්‍රීෂ්ම කාලය + + + + + බටහිර ආර්ජන්ටිනා වේලාව + බටහිර ආර්ජන්ටිනා සම්මත වේලාව + බටහිර ආර්ජන්ටිනා ග්‍රීෂ්ම කාලය + + + + + ආමේනියානු වේලාව + ආමේනියානු සම්මත වේලාව + ආමේනියානු ග්‍රීෂ්ම වේලාව + + + + + අත්ලාන්තික් වේලාව + අත්ලාන්තික් සම්මත වේලාව + අත්ලාන්තික් දිවාආලෝක වේලාව + + + + + මධ්‍යම ඕස්ට්‍රේලියානු වේලාව + ඕස්ට්‍රේලියානු සම්මත වේලාව + මධ්‍යම ඔස්ට්‍රේලියානු දහවල් වේලාව + + + + + මධ්‍යම බටහිර ඔස්ට්‍රේලියානු වේලාව + මධ්‍යම බටහිර ඔස්ට්‍රේලියානු සම්මත වේලාව + මධ්‍යම බටහිර ඔස්ට්‍රේලියානු දහවල් වේලාව + + + + + නැගෙනහිර ඕස්ට්‍රේලියානු වේලාව + නැගෙනහිර ඕස්ට්‍රේලියානු සම්මත වේලාව + නැඟෙනහිර ඕස්ට්‍රේලියානු දහවල් වේලාව + + + + + බටහිර ඕස්ට්‍රේලියානු වේලාව + බටහිර ඕස්ට්‍රේලියානු සම්මත වේලාව + බටහිර ඔස්ට්‍රේලියානු දහවල් වේලාව + + + + + අසර්බයිජාන් වේලාව + අසර්බයිජාන් සම්මත වේලාව + අසර්බයිජාන් ග්‍රීෂ්ම වේලාව + + + + + ඇසොර්ස් වේලාව + ඇසොර්ස් සම්මත වේලාව + ඇසොර්ස් ග්‍රීෂ්ම වේලාව + + + + + බංගලාදේශ වේලාව + බංගලාදේශ සම්මත වේලාව + බංගලාදේශ ග්‍රීෂ්ම කාලය + + + + + භුතාන වේලාව + + + + + බොලිවියා වේලාව + + + + + බ්‍රසීල වේලාව + බ්‍රසීල සම්මත වේලාව + බ්‍රසීල ග්‍රීෂ්ම කාලය + + + + + බෘනායි දරුස්සලාම් වේලාව + + + + + කේප්වේඩ් වේලාව + කේප්වේඩ් සම්මත වේලාව + කේප්වේඩ් ග්‍රීෂ්ම කාලය + + + + + චමොරෝ වේලාව + + + + + චැතම් වේලාව + චැතම් සම්මත වේලාව + චැතම් දිවා වේලාව + + + + + චිලී වේලාව + චිලී සම්මත වේලාව + චිලී ග්‍රීෂ්ම කාලය + + + + + චීන වේලාව + චීන සම්මත වේලාව + චීන දහවල් වේලාව + + + + + චොයිබල්සාන් වේලාව + චොයිබල්සාන් සම්මත වේලාව + චොයිබල්සාන් ග්‍රීෂ්ම වේලාව + + + + + ක්‍රිස්මස් දුපත් වේලාව + + + + + කොකෝස් දුපත් වේලාව + + + + + කොලොම්බියා වේලාව + කොලොම්බියා සම්මත වේලාව + කොලොම්බියා ග්‍රීෂ්ම කාලය + + + + + කුක් දුපත් වේලාව + කුක් දුපත් සම්මත වේලාව + කුක් දුපත් භාග ග්‍රීෂ්ම වේලාව + + + + + කියුබානු වේලාව + කියුබානු සම්මත වේලාව + කියුබානු දිවාආලෝක වේලාව + + + + + ඩාවිස් වේලාව + + + + + දුමොන්ත්-ඩ්උර්විල් වේලාව + + + + + නැගෙනහිර ටිමෝර් වේලාව + + + + + ඊස්ටර් දූපත් වේලාව + ඊස්ටර් දූපත් සම්මත වේලාව + ඊස්ටර් දූපත් ග්‍රීෂ්ම කාලය + + + + + ඉක්වදෝර් වේලාව + + + + + මධ්‍යම යුරෝපීය වේලාව + මධ්‍යම යුරෝපීය සම්මත වේලාව + මධ්‍යම යුරෝපීය ග්‍රීෂ්ම වේලාව + + + + + නැගෙනහිර යුරෝපීය වේලාව + නැගෙනහිර යුරෝපීය සම්මත වේලාව + නැගෙනහිර යුරෝපීය ග්‍රීෂ්ම වේලාව + + + + + බටහිර යුරෝපීය වේලාව + බටහිර යුරෝපීය සම්මත වේලාව + බටහිර යුරෝපීය ග්‍රීෂ්ම වේලාව + + + + + ෆෝක්ලන්ඩ් දූපත් වේලාව + ෆෝක්ලන්ඩ් දූපත් සම්මත වේලාව + ෆෝක්ලන්ඩ් දූපත් ග්‍රීෂ්ම කාලය + + + + + ෆිජි වේලාව + ෆිජි සම්මත වේලාව + ෆිජි ග්‍රීෂ්ම වේලාව + + + + + ප්‍රංශ ගයනා වේලාව + + + + + ප්‍රංශ දකුණුදිග සහ ඇන්ටාර්ක්ටික් වේලාව + + + + + ගලපගොස් වේලාව + + + + + ගැම්බියර් වේලාව + + + + + ජෝර්ජියානු වේලාව + ජෝර්ජියානු සම්මත වේලාව + ජෝර්ජියානු ග්‍රීෂ්ම වේලාව + + + + + ගිල්බර්ට් දුපත් වේලාව + + + + + ග්‍රිනිච් මධ්‍යම වේලාව + + + + + නැගෙනහිර ග්‍රීන්ලන්ත වේලාව + නැගෙනහිර ග්‍රීන්ලන්ත සම්මත වේලාව + නැගෙනහිර ග්‍රීන්ලන්ත ග්‍රීෂ්ම කාලය + + + + + බටහිර ග්‍රීන්ලන්ත වේලාව + බටහිර ග්‍රීන්ලන්ත සම්මත වේලාව + බටහිර ග්‍රීන්ලන්ත ග්‍රීෂ්ම කාලය + + + + + ගල්ෆ් වේලාව + + + + + ගයනා වේලාව + + + + + හවායි-අලෙයුතියාන් වේලාව + හවායි-අලෙයුතියාන් සම්මත වේලාව + හවායි-අලෙයුතියාන් දිවාආලෝක වේලාව + + + + + හොංකොං වේලාව + හොංකොං සම්මත වේලාව + හොංකොං ග්‍රීෂ්ම වේලාව + + + + + හොව්ඩ් වේලාව + හොව්ඩ් සම්මත වේලාව + හොව්ඩ් ග්‍රීෂ්ම වේලාව + + + + + ඉන්දියානු වේලාව + + + + + ඉන්දියන් සාගර වේලාව + + + + + ඉන්දුචීන වේලාව + + + + + මධ්‍යම ඉන්දුනීසියානු වේලාව + + + + + නැගෙනහිර ඉන්දුනීසියානු වේලාව + + + + + බටහිර ඉන්දුනීසියානු වේලාව + + + + + ඉරාන වේලාව + ඉරාන සම්මත වේලාව + ඉරාන දිවා කාලය + + + + + ඉර්කුට්ස්ක් වේලාව + ඉර්කුට්ස්ක් සම්මත වේලාව + ඉර්කුට්ස්ක් ග්‍රීෂ්ම වේලාව + + + + + ඊශ්‍රායල වේලාව + ඊශ්‍රායල සම්මත වේලාව + ඊශ්‍රායල දහවල් වේලාව + + + + + ජපාන වේලාව + ජපාන සම්මත වේලාව + ජපාන දහවල් වේලාව + + + + + නැගෙනහිර කසකස්තාන වේලාව + + + + + බටහිර කසකස්තාන වේලාව + + + + + කොරියානු වේලාව + කොරියානු සම්මත වේලාව + කොරියානු දහවල් වේලාව + + + + + කොස්රේ වේලාව + + + + + ක්‍රස්නොයාර්ස්ක් වේලාව + ක්‍රස්නොයාර්ස්ක් සම්මත වේලාව + ක්‍රස්නොයාර්ස්ක් ග්‍රීෂ්ම වේලාව + + + + + කිර්ගිස්තාන වේලාව + + + + + ශ්‍රී ලංකා වේලාව + + + + + ලයින් දුපත් වේලාව + + + + + ලෝර්ඩ් හෝව් වේලාව + ලෝර්ඩ් හෝව් සම්මත වේලාව + ලෝර්ඩ් හෝව් දිවා වේලාව + + + + + මැක්කුඅරි දුපත් වේලාව + + + + + මෙගඩන් වේලාව + මෙගඩන් සම්මත වේලාව + මෙගඩන් ග්‍රීෂ්ම වේලාව + + + + + මැලේසියානු වේලාව + + + + + මාලදිවයින් වේලාව + + + + + මාර්කුඑසාස් වේලාව + + + + + මාර්ෂල් දුපත් වේලාව + + + + + මුරුසි වේලාව + මුරුසි සම්මත වේලාව + මුරුසි ග්‍රීෂ්ම කාලය + + + + + මොව්සන් වේලාව + + + + + උලාන් බාටර් වේලාව + උලාන් බාටර් සම්මත වේලාව + උලාන් බාටර් ග්‍රීෂ්ම වේලාව + + + + + මොස්කව් වේලාව + මොස්කව් සම්මත වේලාව + මොස්කව් ග්‍රීෂ්ම වේලාව + + + + + මියන්මාර් වේලාව + + + + + නාවුරු වේලාව + + + + + නේපාල වේලාව + + + + + නව සෙලඩොනියානු වේලාව + නව සෙලඩොනියානු සම්මත වේලාව + නව සෙලඩොනියානු ග්‍රීෂ්ම වේලාව + + + + + නවසීලන්ත වේලාව + නවසීලන්ත සම්මත වේලාව + නවසීලන්ත දිවා වේලාව + + + + + නිව්ෆවුන්ලන්ත වේලාව + නිව්ෆවුන්ලන්ත සම්මත වේලාව + නිව්ෆවුන්ලන්ත දිවාආලෝක වේලාව + + + + + නියු වේලාව + + + + + නොෆොල්ක් දුපත් වේලාව + + + + + ෆර්නැන්ඩෝ ඩි නොරොන්හා වේලාව + ෆර්නැන්ඩෝ ඩි නොරොන්හා සම්මත වේලාව + ෆර්නැන්ඩෝ ඩි නොරොන්හා ග්‍රීෂ්ම කාලය + + + + + නොවසිබිර්ස්ක් වේලාව + නොවසිබිර්ස්ක් සම්මත වේලාව + නොවසිබිර්ස්ක් ග්‍රීෂ්ම වේලාව + + + + + ඔම්ස්ක් වේලාව + ඔම්ස්ක් සම්මත වේලාව + ඔම්ස්ක් ග්‍රීෂ්ම වේලාව + + + + + පාකිස්ථාන වේලාව + පාකිස්ථාන සම්මත වේලාව + පාකිස්ථාන ග්‍රීෂ්ම කාලය + + + + + පලාවු වේලාව + + + + + පැපුවා නිව් ගිනීයා වේලාව + + + + + පැරගුවේ වේලාව + පැරගුවේ සම්මත වේලාව + පැරගුවේ ග්‍රීෂ්ම කාලය + + + + + පේරු වේලාව + පේරු සම්මත වේලාව + පේරු ග්‍රීෂ්ම කාලය + + + + + පිලිපීන වේලාව + පිලිපීන සම්මත වේලාව + පිලිපීන ග්‍රීෂ්ම වේලාව + + + + + ෆීනික්ස් දුපත් වේලාව + + + + + ශාන්ත පියරේ සහ මැකෝලන් වේලාව + ශාන්ත පියරේ සහ මැකෝලන් සම්මත වේලාව + ශාන්ත පියරේ සහ මැකෝලන් දිවාආලෝක වේලාව + + + + + පිට්කෙයාන් වේලාව + + + + + පොනපේ වේලාව + + + + + රියුනියන් වේලාව + + + + + රොතෙරා වේලාව + + + + + සඛලින් වේලාව + සඛලින් සම්මත වේලාව + සඛලින් ග්‍රීෂ්ම වේලාව + + + + + සැමෝවා වේලාව + සැමෝවා සම්මත වේලාව + සැමෝවා ග්‍රීෂ්ම වේලාව + + + + + සීෂෙල්ස් වේලාව + + + + + සිංගප්පුරු වේලාව + + + + + සොලොමන් දූපත් වේලාව + + + + + දකුණු ජෝජියා වේලාව + + + + + සුරිනාම වේලාව + + + + + ස්යෝවා වේලාව + + + + + ටාහිටි වේලාව + + + + + තායිපේ වේලාව + තායිපේ සම්මත වේලාව + තායිපේ දහවල් වේලාව + + + + + ටජිකිස්තාන වේලාව + + + + + ටොකෙලාවු වේලාව + + + + + ටොංගා වේලාව + ටොංගා සම්මත වේලාව + ටොංගා ග්‍රීෂ්ම වේලාව + + + + + චුක් වේලාව + + + + + ටර්ක්මෙනිස්තාන වේලාව + ටර්ක්මෙනිස්තාන සම්මත වේලාව + ටර්ක්මෙනිස්තාන ග්‍රීෂ්ම වේලාව + + + + + ටුවාලු වේලාව + + + + + උරුගුවේ වේලාව + උරුගුවේ සම්මත වේලාව + උරුගුවේ ග්‍රීෂ්ම කාලය + + + + + උස්බෙකිස්තාන වේලාව + උස්බෙකිස්තාන සම්මත වේලාව + උස්බෙකිස්තාන ග්‍රීෂ්ම වේලාව + + + + + වනුආටු වේලාව + වනුආටු සම්මත වේලාව + වනුආටු ගිම්හාන වේලාව + + + + + වෙනිසියුලා වේලාව + + + + + ව්ලදිවෝස්ටෝක් වේලාව + ව්ලදිවෝස්ටෝක් සම්මත වේලාව + ව්ලදිවෝස්ටෝක් ග්‍රීෂ්ම වේලාව + + + + + වොල්ගොග්‍රාඩ් වේලාව + වොල්ගොග්‍රාඩ් සම්මත වේලාව + වොල්ගොග්‍රාඩ් ග්‍රීෂ්ම වේලාව + + + + + වොස්ටොක් වේලාව + + + + + වේක් දූපත් වේලාව + + + + + වැලිස් සහ ෆුටුනා වේලාව + + + + + යකුට්ස්ක් වේලාව + යකුට්ස්ක් සම්මත වේලාව + යකුට්ස්ක් ග්‍රීෂ්ම වේලාව + + + + + යෙකටෙරින්බර්ග් වේලාව + යෙකටෙරින්බර්ග් සම්මත වේලාව + යෙකටෙරින්බර්ග් ග්‍රීෂ්ම වේලාව + + + + + + + . + , + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0K + 0K + 00K + 00K + 000K + 000K + මිලියන 0 + මිලියන 0 + මිලියන 00 + මිලියන 00 + මිලියන 000 + මිලියන 000 + බිලියන 0 + බිලියන 0 + බිලියන 00 + බිලියන 00 + බිලියන 000 + බිලියන 000 + ට්‍රිලියන 0 + ට්‍රිලියන 0 + ට්‍රිලියන 00 + ට්‍රිලියන 00 + ට්‍රිලියන 000 + ට්‍රිලියන 000 + + + + + 0K + 0K + 00K + 00K + 000K + 000K + මි0 + මි0 + මි00 + මි00 + මි000 + මි000 + බි0 + බි0 + බි00 + බි00 + බි000 + බි000 + ට්‍රි0 + ට්‍රි0 + ට්‍රි00 + ට්‍රි00 + ට්‍රි000 + ට්‍රි000 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {1}{0} + {1}{0} + + + + එක්සත් අරාබි එමිරේට්ස් ඩිරාම් + + + ඇෆ්ගනිථාන ඇෆ්ගනි + + + ඇල්බේනියානු ලෙක් + + + ආර්මේනියානු ඩ්‍රෑම් + + + නෙදර්ලන්ත ඇන්ටිලියන් ගිල්ඩර් + නෙදර්ලන්ත ඇන්ටිලියන් ගිල්ඩර් + නෙදර්ලන්ත ඇන්ටිලියන් ගිල්ඩර් + + + ඇන්ගෝලානු ක්වන්සා + + + ආර්ජන්ටිනා පෙසෝ + ආර්ජන්ටිනා පෙසෝ + ආර්ජන්ටිනා පෙසෝ + + + ඔස්ට්‍රේලියානු ඩොලර් + + + අරූබානු ෆ්ලෝරින් + අරූබානු ෆ්ලෝරින් + අරූබානු ෆ්ලෝරින් + + + අසර්බයිජානු මනාට් + + + බොස්නියා හර්සගොවීනා පරිවර්ත්‍ය මාර්ක් + + + බාබේඩියානු ඩොලර් + බාබේඩියානු ඩොලර් + බාබේඩියානු ඩොලර් + + + බංග්ලාදේශ් ටකා + + + බල්ගේරියානු ලිව් + + + බහරේන් ඩිනාර් + + + බුරුන්දි ෆ්‍රෑන්ක් + + + බර්මියුඩානු ඩොලර් + බර්මියුඩානු ඩොලර් + බර්මියුඩානු ඩොලර් + + + බෘනායි ඩොලර් + + + බොලිවියානු බොලිවියානෝ + බොලිවියානු බොලිවියානෝ + බොලිවියානු බොලිවියානෝ + + + බ්‍රසීල රියල් + + + බහමානු ඩොලර් + බහමානු ඩොලර් + බහමානු ඩොලර් + + + භූතාන නගුල්ට්‍රම් + + + බොට්ස්වානා පුලා + + + බෙලරූස් රූබල් + + + බෙලීස් ඩොලර් + බෙලිස් ඩොලර් + බෙලිස් ඩොලර් + + + කැනේඩියානු ඩොලර් + කැනේඩියානු ඩොලර් + කැනේඩියානු ඩොලර් + + + කොංගෝ ෆ්‍රෑන්ක් + + + ස්විස් ෆ්‍රෑන්ක් + + + චිලි පැසෝ + + + චීන යුආන් + + + කොලොම්බියානු පෙසෝ + + + කොස්ට රිකා කොලෝන් + කොස්ට රිකා කොලෝන් + කොස්ට රිකා කොලෝන් + + + මාරුකළ හැකි කියුබානු පැසෝ + මාරුකළ හැකි කියුබානු පැසෝ + මාරුකළ හැකි කියුබානු පැසෝ + + + කියුබානු පැසෝ + කියුබානු පැසෝ + කියුබානු පැසෝ + + + කේප් වර්ඩ් එස්කියුඩෝ + කේප් වර්ඩ් එස්කියුඩෝ + කේප් වර්ඩ් එස්කියුඩෝ + + + චෙක් රිපබ්ලික් කොරූනා + + + ජිබූති ෆ්‍රෑන්ක් + + + ඩැනිෂ් ක්‍රෝන් + + + ඩොමිනිකානු පෙසෝ + ඩොමිනිකානු පෙසෝ + ඩොමිනිකානු පෙසෝ + + + ඇල්ගේරියානු ඩිනාර් + + + ඊජිප්තු පවුම් + + + එරිත්‍රියානු නැක්ෆා + + + ඉතියෝපියානු බීර් + ඉතියෝපියානු බීර් + ඉතියෝපියානු බීර් + + + යුරෝ + + + ෆිජියන් ඩොලර් + + + ෆෝක්ලන්ඩ් දූපත් පවුම් + + + බ්‍රිතාන්‍ය ස්ටර්ලින් පවුම් + + + ජෝජියානු ලැරී + + + ඝානා සෙඩි + ඝානා සෙඩි + ඝානා සෙඩි + + + ජිබ්‍රෝල්ටා පවුම් + + + ගැම්බියානු දලාසි + + + ගිනියානු ෆ්රෑන්ක් + ගිනියානු ෆ්‍රෑන්ක් + ගිනියානු ෆ්‍රෑන්ක් + + + ගෝතමාලානු ක්වෙට්සල් + ගෝතමාලානු ක්වෙට්සල් + ගෝතමාලානු ක්වෙට්සල් + + + ගයනා ඩොලර් + + + හොංකොං ඩොලර් + + + හොන්ඩුරානු ලෙම්පිරා + හොන්ඩුරානු ලෙම්පිරා + හොන්ඩුරානු ලෙම්පිරා + + + ක්‍රොඒෂියානු කූනා + + + හයිටි ගෝර්ඩ් + හයිටි ගෝර්ඩ් + හයිටි ගෝර්ඩ් + + + හංගේරියානු ෆරින්ට් + + + ඉන්දුනීසියානු රුපියා + + + ඊශ්‍රායල නව ශෙකල් + + + ඉන්දියානු රුපියල් + + + ඉරාක ඩිනාර් + + + ඉරාන රියාල් + + + අයිස්ලන්තික ක්‍රෝනා + + + ජැමෙයිකානු ඩොලර් + ජැමෙයිකානු ඩොලර් + ජැමෙයිකානු ඩොලර් + + + ජෝර්දාන් ඩිනාර් + + + ජපන් යෙන් + + + කෙන්යානු ශිලිං + + + කිරිගිස්ථාන සම් + + + කාම්බෝජ රියේල් + + + කොමොරියානු ෆ්‍රෑන්ක් + කොමොරියානු ෆ්‍රෑන්ක් + කොමොරියානු ෆ්‍රෑන්ක් + + + උතුරු කොරියානු වොන් + + + දකුණු කොරියානු වොන් + + + කුවේට් ඩිනාර් + + + කේමන් දූපත් ඩොලර් + කේමන් දූපත් ඩොලර් + කේමන් දූපත් ඩොලර් + + + කසකස්ථාන ටෙන්ග + + + ලාඕස් කිප් + + + ලෙබනන පවුම් + + + ශ්‍රී ලංකා රුපියල + රු. + + + ලයිබේරියානු ඩොලර් + + + ලිතුවේනියානු + + + ලැට්වියානු ලැට්ස් + + + ලිබියානු ඩිනාර් + + + මොරොක්කෝ ඩිර්හැම් + මොරොක්කෝ ඩිර්හැම් + මොරොක්කෝ ඩිර්හැම් + + + මෝල්ඩෝවානු ලෙව් + + + මලගාසි අරියාරි + + + මැසඩෝනියානු ඩිනාර් + + + බුරුම ක්යාට් + + + මොන්ගෝලියානු ටග්‍රික් + + + මැකනීස් පටකා + + + මුරුසි ඔයිගුයියා + මුරුසි ඔයිගුයියා + මුරුසි ඔයිගුයියා + + + මුරිසියානු රුපියල් + + + මාලදිවයින් රුෆියා + + + මලාවි ක්වාචා + + + මෙක්සිකානු ඩොලර් + මෙක්සිකානු ඩොලර් + මෙක්සිකානු ඩොලර් + + + මැලේසියානු රින්ගිට් + + + මොසැම්බිකන් මෙටිකල් + + + නැමීබියානු ඩොලර් + + + නයිජීරියානු නයිරා + + + නිකරගුවානු කොඩෝබා + නිකරගුවානු කොඩෝබා + නිකරගුවානු කොඩෝබා + + + නොර්වීජියන් ක්‍රෝන් + + + නේපාල රුපියල් + + + නවසීලන්ත ඩොලර් + + + ඕමාන් රියාල් + + + පැනමා බැල්බෝ + පැනමා බැල්බෝ + පැනමා බැල්බෝ + + + පේරු නියුවෝ සොල් + + + පැපුවා නිව් ගිනියානු කිනා + + + පිලිපීන පෙසෝ + + + පාකිස්ථාන රුපියල් + + + පොලිෂ් ස්ලොටි + + + පැරගුවේ ගුවරානි + පැරගුවේ ගුවරානි + පැරගුවේ ගුවරානි + + + කටාර් රියාල් + + + රොමේනියානු ලෙව් + + + සර්බියානු ඩිනාර් + + + රුසියන් රූබල් + + + රුවන්ඩා ෆ්‍රෑන්ක් + + + සවුදි රියාල් + + + සොලමන් දූපත් ඩොලර් + + + සීෂෙලියානු රුපියල + + + සුඩාන පවුම් + + + ස්වෙඩිෂ් ක්‍රෝනා + + + සිංගප්පූරු ඩොලර් + + + ශාන්ත හෙලේනා පවුම් + + + සියරා ලියොන් ලියොන් + සියරා ලියොන් ලියොන් + සියරා ලියොන් ලියොන් + + + සෝමාලියානු ශිලිං + + + සුරිනාම් ඩොලර් + සුරිනාම් ඩොලර් + සුරිනාම් ඩොලර් + + + දකුණු සුඩාන පවුම් + + + සාඕ තෝම් සහ ප්‍රින්සිප් දොබ්‍රා + සාඕ තෝම් සහ ප්‍රින්සිප් දොබ්‍රා + සාඕ තෝම් සහ ප්‍රින්සිප් දොබ්‍රා + + + සිරියානු පවුම් + + + ස්වාසි ලිලන්ජනි + + + තායි බාත් + + + තජිකිස්ථාන සමොනි + + + තක්මෙනිස්ථාන මනාට් + + + ටියුනීසියානු ඩිනාර් + + + ටොංගානු පාන්ගා + + + තුර්කි ලිරා + + + ට්‍රිනිඩෑඩ් සහ ටොබෑගෝ ඩොලර් + ට්‍රිනිඩෑඩ් සහ ටොබෑගෝ ඩොලර් + ට්‍රිනිඩෑඩ් සහ ටොබෑගෝ ඩොලර් + + + නව තායිවාන ඩොලර් + + + ටැන්සානියානු ශිලිං + + + යුක්රේන හ්‍රිව්නියා + + + උගන්ඩා ශිලිං + + + ඇමරිකානු ඩොලර් + ඇමරිකානු ඩොලර් + ඇමරිකානු ඩොලර් + + + උරුගුවේ පෙසෝ + + + උස්බෙකිස්ථාන සම් + + + වෙනිසියුලානු බොලිවර් + + + වියට්නාම ඩොන් + + + වනුවාටු වාටු + + + සැමෝවා ටාලා + + + CFA ෆ්රෑන්ක් BEAC + CFA ෆ්රෑන්ක් BEAC + CFA ෆ්රෑන්ක් BEAC + + + නැගෙනහිර කැරිබියානු ඩොලර් + නැගෙනහිර කැරිබියානු ඩොලර් + නැගෙනහිර කැරිබියානු ඩොලර් + + + CFA ෆ්රෑන්ක් BCEAO + CFA ෆ්රෑන්ක් BCEAO + CFA ෆ්රෑන්ක් BCEAO + + + ප්‍රංශ පොලිනීසියානු ෆ්‍රෑන්ක් + + + නොදත් මුදල් + + + යේමන රියාල් + + + දකුණු අප්‍රිකානු රැන්ඩ් + + + සැම්බියානු ක්වාචා (1968–2012) + + + සැම්බියානු ක්වාචා + + + + {0}+ + {0}–{1} + + + + + + {1} ට {0} බැගින් + + + {0} G + {0} G + + + මිනිත්තු {0} + මිනිත්තු {0} + + + තත්පර {0} + තත්පර {0} + + + අංශක {0} + අංශක {0} + + + අක්කර {0} + අක්කර {0} + + + හෙක්ටයාර් {0} + හෙක්ටයාර් {0} + + + වර්ග අඩි {0} + වර්ග අඩි {0} + + + වර්ග කිලෝමීටර් {0} + වර්ග කිලෝමීටර් {0} + + + වර්ග මීටර් {0} + වර්ග මීටර් {0} + + + වර්ග සැතපුම් {0} + වර්ග සැතපුම් {0} + + + දින {0} + දින {0} + + + පැය {0} + පැය {0} + + + මිලිතත්පර {0} + මිලිතත්පර {0} + + + මිනිත්තු {0} + මිනිත්තු {0} + + + මාස {0} + මාස {0} + + + තත්පර {0} + තත්පර {0} + + + සති {0} + සති {0} + + + වසර {0} + වසර {0} + + + සෙන්ටිමීටර් {0} + සෙන්ටිමීටර් {0} + + + අඩි {0} + අඩි {0} + + + අඟල් {0} + අඟල් {0} + + + කිලෝමීටර් {0} + කිලෝමීටර් {0} + + + ආලෝක වර්ෂ {0} + ආලෝක වර්ෂ {0} + + + මීටර් {0} + මීටර් {0} + + + සැතපුම් {0} + සැතපුම් {0} + + + මිලිමීටර් {0} + මිලිමීටර් {0} + + + පිකොමිටර් {0} + පිකොමිටර් {0} + + + යාර {0} + යාර {0} + + + ග්‍රෑම් {0} + ග්‍රෑම් {0} + + + කි.ග්‍රෑ. {0} + කි.ග්‍රෑ. {0} + + + අවුන්ස {0} + අවුන්ස {0} + + + රාත්තල් {0} + රාත්තල් {0} + + + අශ්වබල {0} + අශ්වබල {0} + + + කිලෝ වොට් {0} + කිලෝ වොට් {0} + + + වොට් {0} + වොට් {0} + + + හෙක්ටොපැස්කල් {0} + හෙක්ටොපැස්කල් {0} + + + රසදිය අඟල් {0} + රසදිය අඟල් {0} + + + මිලිබාර් {0} + මිලිබාර් {0} + + + පැයට කිලෝමීටර් {0} + පැයට කිලෝමීටර් {0} + + + තත්පරයට මීටර් {0} + තත්පරයට මීටර් {0} + + + පැයට සැතපුම් {0} + පැයට සැතපුම් {0} + + + සෙල්සියස් අංශක {0} + සෙල්සියස් අංශක {0} + + + ෆැරන්හයිට් අංශක {0} + ෆැරන්හයිට් අංශක {0} + + + ඝන කිලෝමීටර් {0} + ඝන කිලෝමීටර් {0} + + + ඝන සැතපුම් {0} + ඝන සැතපුම් {0} + + + ලීටර් {0} + ලීටර් {0} + + + + + {0}/{1} + + + {0} G + {0} G + + + මිනිත්තු {0} + මිනිත්තු {0} + + + තත් {0} + තත් {0} + + + අංශක {0} + අංශක {0} + + + අක්කර {0} + අක්කර {0} + + + හෙක් {0} + හෙක් {0} + + + {0} ft² + {0} ft² + + + ව.කී {0} + ව.කී {0} + + + ව.මී {0} + ව.මී {0} + + + ව.සැ {0} + ව.සැ {0} + + + දින {0} + දින {0} + + + පැය {0} + පැය {0} + + + මි.ත {0} + මි.ත {0} + + + මිනිත්තු {0} + මිනිත්තු {0} + + + මාස {0} + මාස {0} + + + තත්පර {0} + තත්පර {0} + + + සති {0} + සති {0} + + + වසර {0} + වසර {0} + + + සෙ.මී {0} + සෙ.මී {0} + + + අඩි {0} + අඩි {0} + + + අඟල් {0} + අඟල් {0} + + + කි.මී {0} + කි.මී {0} + + + ආ.ව {0} + ආ.ව {0} + + + මී {0} + මී {0} + + + සැත {0} + සැත {0} + + + මිමී {0} + මිමී {0} + + + පිමී {0} + පිමී {0} + + + යාර {0} + යාර {0} + + + ග්‍රෑ. {0} + ග්‍රෑ. {0} + + + කි.ග්‍රෑ. {0} + කි.ග්‍රෑ. {0} + + + අවුන්ස {0} + අවුන්ස {0} + + + රා. {0} + රා. {0} + + + අශ්ව බල {0} + අශ්ව බල {0} + + + කි.වො {0} + කි.වො {0} + + + වොට් {0} + වොට් {0} + + + හෙ.පැ {0} + හෙ.පැ {0} + + + රසදිය අඟල් {0} + රසදිය අඟල් {0} + + + මි.බාර් {0} + මි.බාර් {0} + + + කිමී/පැ {0} + කිමී/පැ {0} + + + මී/තත් {0} + මී/තත් {0} + + + පැ/සැ {0} + පැ/සැ {0} + + + සෙල්. {0}° + සෙල්. {0}° + + + ෆැර. {0}° + ෆැර. {0}° + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + ලී {0} + ලී {0} + + + + + {0}/{1} + + + {0} G + {0} G + + + මිනිත්තු {0} + මිනිත්තු {0} + + + තත් {0} + තත් {0} + + + {0}° + {0}° + + + අක්කර {0} + අක්කර {0} + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + දින {0} + දින {0} + + + පැය {0} + පැය {0} + + + මි.ත {0} + මි.ත {0} + + + මිනිත්තු {0} + මිනිත්තු {0} + + + මාස {0} + මාස {0} + + + තත්පර {0} + තත්පර {0} + + + සති {0} + සති {0} + + + වසර {0} + වසර {0} + + + සෙ.මී {0} + සෙ.මී {0} + + + {0}' + {0}' + + + {0}″ + {0}″ + + + කි.මී {0} + කි.මී {0} + + + ආ.ව {0} + ආ.ව {0} + + + මී {0} + මී {0} + + + සැත {0} + සැත {0} + + + මිමී {0} + මිමී {0} + + + පිමී {0} + පිමී {0} + + + යාර {0} + යාර {0} + + + ග්‍රෑ. {0} + ග්‍රෑ. {0} + + + කි.ග්‍රෑ. {0} + කි.ග්‍රෑ. {0} + + + අවුන්ස {0} + අවුන්ස {0} + + + රා. {0} + රා. {0} + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + රසදිය {0}" + රසදිය {0}" + + + මි.බා. {0} + මි.බා. {0} + + + කිමී/පැ {0} + කිමී/පැ {0} + + + මී/තත් {0} + මී/තත් {0} + + + පැ/සැ {0} + පැ/සැ {0} + + + {0}° + {0}° + + + ෆැර. {0}° + ෆැර. {0}° + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0}, සහ {1} + {0} සහ {1} + + + {0}, {1} + + + + + ඔව්:ඔ + නැත:නැ + + + + diff --git a/library/Zend/Locale/Data/si_LK.xml b/library/Zend/Locale/Data/si_LK.xml new file mode 100755 index 000000000..c0892aab6 --- /dev/null +++ b/library/Zend/Locale/Data/si_LK.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sk.xml b/library/Zend/Locale/Data/sk.xml new file mode 100755 index 000000000..12710a5e3 --- /dev/null +++ b/library/Zend/Locale/Data/sk.xml @@ -0,0 +1,5364 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afarčina + abcházština + acehčina + ačoli + adangme + adygčina + avestčina + afrikánčina + afrihili + aghem + ainčina + akančina + akkadčina + aleutčina + južná altajčina + amharčina + aragónčina + stará angličtina + angika + arabčina + moderná štandardná arabčina + aramejčina + araukánčina + arapaho + arawačtina + ásámčina + asu + astúrčina + avarčina + avadhčina + aymarčina + azerbajdžančina + azerčina + baskirčina + balúčtina + balijčina + basa + bamun + ghomala + bieloruština + bedža + bemba + bena + bafut + bulharčina + bhódžpurčina + bislama + bikol + bini + kom + siksika + bambarčina + bengálčina + tibetčina + bretónčina + bradžčina + bodo + bosniačtina + akoose + buriatčina + bugiština + bulu + blin + medumba + katalánčina + kaddo + karibský + cayuga + atsam + čečenčina + cebuánčina + čiga + čamorčina + čibča + čagatajčina + truk + marijčina + činucký žargón + čoktavčina + čipevajčina + čerokí + čejenčina + kurdčina (sorání) + korzičtina + koptčina + krí + krymská turečtina + čeština + kašubčina + cirkevná slovančina + čuvaština + waleština + dánčina + dakotčina + darginčina + taita + nemčina + rakúska nemčina + švajčiarska spisovná nemčina + delawarčina + slovančina + dogribčina + dinka + zarma + dógrí + dolnolužická srbčina + duala + stredná holandčina + divehi + jola-fonyi + ďula + dzongkä + dazaga + embu + eweština + efik + staroegyptský + ekadžuk + gréčtina + elamčina + angličtina + austrálska angličtina + kanadská angličtina + britská angličtina + angličtina (UK) + americká angličtina + angličtina (USA) + stredná angličtina + esperanto + španielčina + latinskoamerická španielčina + iberská španielčina + mexická španielčina + estónčina + baskičtina + ewondo + perzština + fangčina + fanti + fulbčina + fínčina + filipínčina + fidžijčina + faerčina + fončina + francúzština + kanadská francúzština + švajčiarska francúzština + stredná francúzština + stará francúzština + severná frízština + východná frízština + friulčina + západná frízština + írčina + ga + gayo + gbaja + škótska gaelčina + etiópčina + kiribatčina + galícijčina + stredná horná nemčina + guaraní + stará horná nemčina + góndčina + gorontalo + gótčina + grebo + starogréčtina + švajčiarska nemčina + gudžarátčina + gusii + mančina + gwichʼin + hauština + haida + havajčina + hebrejčina + hindčina + hiligajnončina + chetitčina + hmong + hiri motu + chorvátčina + hornolužická srbčina + haitčina + maďarčina + hupčina + arménčina + herero + interlingua + ibančina + ibibio + indonézština + interlingue + igboština + s’čchuanská ioština + inupiaq + ilokánčina + inguština + ido + islandčina + taliančina + inuktitut + japončina + lojban + ngomba + machame + židovská perzština + židovská arabčina + jávčina + gruzínčina + karakalpačtina + kabylčina + kačjinčina + jju + kamba + kawi + kabardčina + kanembu + tyap + makonde + kapverdčina + koro + kongčina + khasijčina + chotančina + západná songhajčina + kikuju + kuaňama + kazaština + kako + grónska eskimáčtina + kalenjin + kambodžská khmérčina + kimbundu + kannadčina + kórejčina + kónkánčina + kusaie + kpelle + kanurijčina + karačajevsko-balkarský jazyk + karelčina + kurukhčina + kašmírčina + šambala + bafia + kolínčina + kurdčina + kumyčtina + kutenajčina + komijčina + kornčina + kirgizština + latinčina + židovská španielčina + langi + lahandčina + lamba + luxemburčina + lezginčina + gandčina + limburčina + lingalčina + laoština + mongo + lozi + litovčina + luba-katanga + luba-luluánčina + luiseňo + lunda + luo + mizorámčina + luyia + lotyština + madurčina + mafa + magadhčina + maithilčina + makasarčina + mandingo + masajčina + maba + mokšiančina + mandarčina + mendi + meru + maurícijská kreolčina + malgaština + stredná írčina + makhuwa-meetto + meta’ + kajin-majol + maorijčina + mikmakčina + minangkabaučina + macedónčina + malajálamčina + mongolčina + mandžuština + manípurčina + mohawk + mossi + maráthčina + malajčina + maltčina + mundang + viaceré jazyky + kríkčina + mirandčina + marawari + barmčina + myene + erzjančina + nauru + neapolčina + nama + nórsky bokmål + severné ndbele + dolná nemčina + nepálčina + nevárčina + ndonga + niasánčina + niueština + holandčina + flámčina + kwasio + nórsky nynorsk + ngiemboon + nórčina + nogajčina + stará nórčina + n’ko + južná ndebelčina + severná sothčina + nuer + navajo + klasická nevárčina + čewa + ňamwezi + ňankole + ňoro + nzima + okcitánčina + odžibva + oromčina + uríjčina + osetčina + osagčina + osmanská turečtina + pandžábčina + pangasinančina + pahlaví + pampanga + papiamento + palaučina + stará perzština + feničtina + pálí + poľština + pohnpeičina + stará okcitánčina + paštúnčina + paštčina + portugalčina + brazílska portugalčina + iberská portugalčina + kečuánčina + radžastančina + rapanujčina + rarotongan + rétorománčina + rundčina + rumunčina + moldavčina + rombo + rómčina + koreň + ruština + arumunčina + rwandčina + rwa + sanskrit + sandawe + jakutčina + samaritánska aramejčina + samburu + sasačtina + santalčina + ngambay + sangu + sardínčina + sicílčina + škótčina + sindhčina + severná saamčina + seneca + sena + selkupčina + koyraboro senni + sango + stará írčina + srbochorvátčina + tachelhit + šančina + čadská arabčina + sinhalčina + sidamo + slovenčina + slovinčina + samojčina + južná saamčina + luleská saamčina + inariská saamčina + skolt + šončina + soninke + somálčina + sogdijčina + albánčina + srbčina + sranan + serer + svazijčina + saho + južná sothčina + sundčina + sukuma + susu + sumerčina + švédčina + swahilčina + komorčina + konžská svahilčina + klasická sýrčina + sýrčina + tamilčina + telugčina + temne + teso + tereno + tetum + tadžičtina + thajčina + tigriňa + tigrejčina + tiv + turkménčina + tokelaučina + tagalčina + klingónčina + tlingitčina + tamašek + tswančina + tongčina + ňasa tonga + tok pisin + turečtina + taroko + tsonga + tsimshijské jazyky + tatárčina + tumbuka + tuvalčina + twi + tasawak + tahitčina + tuviančina + stredomarocká berberčina + udmurtčina + ujgurčina + ugaritčina + ukrajinčina + umbundu + neznámy jazyk + urdčina + uzbečtina + vai + vendčina + vietnamčina + volapük + vodčina + vunjo + valónčina + walserčina + walamo + waray + washo + wolof + kalmyčtina + xhosa + soga + jao + japčina + jangben + yemba + jidiš + jorubčina + kantončina + čuangčina + zapotéčtina + systém Bliss + zenaga + štandardný marocký tamazight + čínština + zjednodušená čínština + tradičná čínština + zuluština + zuniština + bez jazykového obsahu + zázá + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Svet + Afrika + Severná Amerika + Južná Amerika + Oceánia + Západná Afrika + Stredná Amerika + Východná Afrika + Severná Afrika + Stredná Afrika + južné územia Afriky + Americký kontinent + severné územia Ameriky + Karibik + Východná Ázia + Južná Ázia + Juhovýchodná Ázia + Južná Európa + Australázia + Melanézia + Mikronézia – oblasť + Polynézia + Ázia + Stredná Ázia + Západná Ázia + Európa + Východná Európa + Severná Európa + Západná Európa + Latinská Amerika + Ostrov Ascensión + Andorra + Spojené arabské emiráty + Afganistan + Antigua a Barbuda + Anguilla + Albánsko + Arménsko + Holandské Antily + Angola + Antarktída + Argentína + Americká Samoa + Rakúsko + Austrália + Aruba + Alandské ostrovy + Azerbajdžan + Bosna a Hercegovina + Barbados + Bangladéš + Belgicko + Burkina Faso + Bulharsko + Bahrajn + Burundi + Benin + Svätý Bartolomej + Bermudy + Brunej + Bolívia + Karibské Holandsko + Brazília + Bahamy + Bhután + Bouvetov ostrov + Botswana + Bielorusko + Belize + Kanada + Kokosové ostrovy + Kongo - Kinshasa + Kongo (DRK) + Stredoafrická republika + Kongo - Brazzaville + Kongo (republika) + Švajčiarsko + Pobrežie Slonoviny + Cookove ostrovy + Čile + Kamerun + Čína + Kolumbia + Ostrov Clipperton + Kostarika + Kuba + Kapverdy + Curaçao + Vianočný ostrov + Cyprus + Česká republika + Nemecko + Diego Garcia + Džibutsko + Dánsko + Dominika + Dominikánska republika + Alžírsko + Ceuta a Melilla + Ekvádor + Estónsko + Egypt + Západná Sahara + Eritrea + Španielsko + Etiópia + Európska únia + Fínsko + Fidži + Falklandské ostrovy + Falklandy (Islas Malvinas) + Mikronézia + Faerské ostrovy + Francúzsko + Gabon + Spojené kráľovstvo + UK + Grenada + Gruzínsko + Francúzska Guayana + Guernsey + Ghana + Gibraltár + Grónsko + Gambia + Guinea + Guadeloupe + Rovníková Guinea + Grécko + Južná Georgia a Južné Sandwichove ostrovy + Guatemala + Guam + Guinea-Bissau + Guayana + Hongkong OAO Číny + Hongkong + Heardov ostrov a McDonaldove ostrovy + Honduras + Chorvátsko + Haiti + Maďarsko + Kanárske ostrovy + Indonézia + Írsko + Izrael + Ostrov Man + India + Britské indickooceánske územie + Irak + Irán + Island + Taliansko + Jersey + Jamajka + Jordánsko + Japonsko + Keňa + Kirgizsko + Kambodža + Kiribati + Komory + Saint Kitts a Nevis + Severná Kórea + Južná Kórea + Kuvajt + Kajmanie ostrovy + Kazachstan + Laos + Libanon + Svätá Lucia + Lichtenštajnsko + Srí Lanka + Libéria + Lesotho + Litva + Luxembursko + Lotyšsko + Líbya + Maroko + Monako + Moldavsko + Čierna Hora + Saint Martin + Madagaskar + Marshallove ostrovy + Macedónsko + Macedónsko (BJRM) + Mali + Mjanmarsko + Mongolsko + Macao OAO Číny + Macao + Severné Mariány + Martinik + Mauritánia + Montserrat + Malta + Maurícius + Maldivy + Malawi + Mexiko + Malajzia + Mozambik + Namíbia + Nová Kaledónia + Niger + Norfolkov ostrov + Nigéria + Nikaragua + Holandsko + Nórsko + Nepál + Nauru + Niue + Nový Zéland + Omán + Panama + Peru + Francúzska Polynézia + Papua Nová Guinea + Filipíny + Pakistan + Poľsko + Saint Pierre a Miquelon + Pitcairnove ostrovy + Portoriko + Palestínske územie + Palestína + Portugalsko + Palau + Paraguaj + Katar + Tichomorie - ostatné + Réunion + Rumunsko + Srbsko + Rusko + Rwanda + Saudská Arábia + Šalamúnove ostrovy + Seychelské ostrovy + Sudán + Švédsko + Singapur + Svätá Helena + Slovinsko + Špicbergy a Jan Mayen + Slovensko + Sierra Leone + San Maríno + Senegal + Somálsko + Surinam + Južný Sudán + Svätý Tomáš a Princove ostrovy + Salvador + Sint Maarten + Sýria + Svazijsko + Tristan da Cunha + Turks a Caicos + Čad + Francúzske južné a antarktické územia + Togo + Thajsko + Tadžikistan + Tokelau + Východný Timor + Turkménsko + Tunisko + Tonga + Turecko + Trinidad a Tobago + Tuvalu + Taiwan + Tanzánia + Ukrajina + Uganda + Menšie odľahlé ostrovy USA + Spojené štáty + USA + Uruguaj + Uzbekistan + Vatikán + Svätý Vincent a Grenadíny + Venezuela + Britské panenské ostrovy + Panenské ostrovy - USA + Vietnam + Vanuatu + Wallis a Futuna + Samoa + Kosovo + Jemen + Mayotte + Južná Afrika + Zambia + Zimbabwe + Neznámy región + + + romanizovaná mandarínčina + škótska štandardná angličtina + romanizovaná mandarínčina Wade-Giles + + + Kalendár + Ignorovať radenie symbolov + Obrátené radenie akcentov + Radenie veľkých a malých písmen + Rozlišovanie veľkých a malých písmen pri radení + Radenie podľa slabičných písiem (kana) + Triedenie + Normalizované radenie + Číselné radenie + Sila radenia + Mena + Číslice + Časové pásmo + Variant miestneho nastavenia + Radiť ako symboly + Súkromné použitie + + + Arabsko-indické číslice + Rozšírené arabsko-indické číslice + Arménske číslice + Arménske číslice (malé písmená) + Bengálske číslice + Tradičný čínsky Big5 + Buddhistický kalendár + Čínsky kalendár + Koptický kalendár + Číslice písma Dévanágarí + Usporiadanie slovníka + Predvolené usporiadanie unicode + Etiópske číslice + Etiópsky kalendár + Etiópsky kalendár Amete Alem + Finančnícky zápis čísiel + Číslice s celou šírkou + Zjednodušený čínsky GB2312 + Gruzínske číslice + Gregoriánsky kalendár + Grécke číslice + Grécke číslice (malé písmená) + Gudžarátske číslice + Číslice Gurmukhi + Čínske desatinné číslice + Číslice zjednodušenej čínštiny + Finančné číslice zjednodušenej čínštiny + Číslice tradičnej čínštiny + Finančné číslice tradičnej čínštiny + Hebrejské číslice + Židovský kalendár + Radiť všetko + Indický národný kalendár + Islamský kalendár + Islamský občiansky kalendár + Japonský kalendár + Japonské číslice + Japonské finančné číslice + Khmérske číslice + Kannadské číslice + Číslice písma lao + Arabské číslice + Najprv radiť malé písmená + Malajámske číslice + Mongolské číslice + Mjanmarské číslice + Natívne číslice + Normálne radenie akcentov + Normálne radenie veľkých a malých písmen + Pri radení nerozlišovať veľké a malé písmená + Radiť slabičné písma (kana) samostatne + Radiť bez normalizácie + Radiť číslice jednotlivo + Radiť symboly + Oríjske číslice + Perzský kalendár + Lexikografické triedenie + Fonetické radenie + Triedenie pinyin + Radiť iba základné písmená + Radiť akcenty/veľké a malé písmená/šírku/kana + Reformované usporiadanie + Kalendár Čínskej republiky + Rímske číslice + Rímske číslice (malé písmená) + Všeobecné vyhľadávanie + Hľadať podľa počiatočnej spoluhlásky písma Hangul + Radiť akcenty + Pri radení ignorovať symboly + Štandardné poradie + Tiedenie podľa ťahov + Tamilské číslice + Tamilské číslice + Telugské číslice + Radiť akcenty/veľké a malé písmená/šírku + Thajské číslice + Tibetské číslice + Tradičné + Tradičné číslovky + Usporiadanie podľa znakov radikál + Najprv radiť veľké písmená + Vaiské číslice + Radiť akcenty opačne + Pri radení rozlišovať veľké a malé písmená + Radiť slabičné písma (kana) inak + Radenie podľa normalizovaného kódovania Unicode + Numerické radenie číslic + + + BGN + Číslice + Tón + UNGEGN + Diakritika + Celá šírka + Polovičná šírka + Jamo + Pinyin + Uverejnenie + + + metrický + imperiálny + americký + + + Jazyk: {0} + Písmo: {0} + Región: {0} + + + + + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + + + titlecase-firstword + + + + [a á ä b c č d ď e é f g h {ch} i í j k l ĺ ľ m n ň o ó ô p q r ŕ s š t ť u ú v w x y ý z ž] + [à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ö ø ō œ ř ù ŭ û ü ū ÿ] + [A Ä B C Č D Ď E F G H {CH} I J K L Ľ M N O Ô P Q R S Š T Ť U V W X Y Z Ž] + [\- ‐ – , ; \: ! ? . … ‘ ‚ “ „ ( ) \[ \] § @ * / \&] + {0}… + … {0} + {0}… {1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + d.M.y G + + + + + d.M.y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E d. + y G + LLL y G + d.M.y G + E, d. MMM y G + d. MMMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L. + d.M. + E, d.M. + LLL + d. MMM. + E, d. MMM. + d. MMMM + E, d. MMMM + mm:ss + mm:ss + y G + y G + M.y G + d.M.y G + E d. M. y G + LLL y G + d.M.y G + E, d. MMM y G + LLLL y G + d. MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d. – d. + + + h a – h a + h – h a + + + HH – HH + + + h:mm a - h:mm a + h:mm - h:mm a + h:mm - h:mm a + + + H:mm – H:mm + H:mm – H:mm + + + h:mm a - h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + H:mm – H:mm v + H:mm – H:mm v + + + h a - h a v + h – h a v + + + HH – HH v + + + M. – M. + + + d.M. - d.M. + d.M. - d.M. + + + E, d.M. - E, d.M. + E, d.M. - E, d.M. + + + LLL – LLL + + + d. - d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + LLLL-LLLL + + + y - y G + + + M.y - M.y G + M.y - M.y G + + + d.M.y - d.M.y G + d.M.y - d.M.y G + d.M.y - d.M.y G + + + E, d.M.y - E, d.M.y G + E, d.M.y - E, d.M.y G + E, d.M.y - E, d.M.y G + + + LLL - LLL y G + LLL y - LLL y G + + + d. - d. MMM y G + d. MMM - d. MMM y G + d. MMM y - d. MMM y G + + + E, d. - E, d. MMM y G + E, d. MMM - E, d. MMM y G + E, d. MMM y - E, d. MMM y G + + + LLLL - LLLL y G + LLLL y - LLLL y G + + + + + + + + + jan + feb + mar + apr + máj + jún + júl + aug + sep + okt + nov + dec + + + januára + februára + marca + apríla + mája + júna + júla + augusta + septembra + októbra + novembra + decembra + + + + + j + f + m + a + m + j + j + a + s + o + n + d + + + január + február + marec + apríl + máj + jún + júl + august + september + október + november + december + + + + + + + ne + po + ut + st + št + pi + so + + + N + P + U + S + Š + P + S + + + Ne + Po + Ut + St + Št + Pi + So + + + nedeľa + pondelok + utorok + streda + štvrtok + piatok + sobota + + + + + ne + po + ut + st + št + pi + so + + + N + P + U + S + Š + P + S + + + Ne + Po + Ut + St + Št + Pi + So + + + nedeľa + pondelok + utorok + streda + štvrtok + piatok + sobota + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. štvrťrok + 2. štvrťrok + 3. štvrťrok + 4. štvrťrok + + + + + 1Q + 2Q + 3Q + 4Q + + + 1 + 2 + 3 + 4 + + + 1. štvrťrok + 2. štvrťrok + 3. štvrťrok + 4. štvrťrok + + + + + + + AM + PM + + + + + + pred n.l. + n.l. + + + + + + EEEE, d. MMMM y + + + + + d. MMMM y + + + + + d.M.y + + + + + d.M.y + + + + + + + H:mm:ss zzzz + + + + + H:mm:ss z + + + + + H:mm:ss + + + + + H:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d. + E d. + E h:mm + E HH:mm + E h:mm:ss + E HH:mm:ss + y G + LLL y G + d.M.y G + E, d. MMM y G + d. MMMM y G + h a + H + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L. + d.M. + E, d.M. + LLL + d. MMM. + E, d. MMM. + d. MMMM + E, d. MMMM + mm:ss + mm:ss + y + M.y + d.M.y + E d. M. y + LLL y + d.M.y + E, d. MMM y + LLLL y + d. MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d. – d. + + + h a – h a + h – h a + + + HH – HH + + + h:mm a - h:mm a + h:mm - h:mm a + h:mm - h:mm a + + + H:mm – H:mm + H:mm – H:mm + + + h:mm a - h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + H:mm – H:mm v + H:mm – H:mm v + + + h a - h a v + h – h a v + + + HH – HH v + + + M. – M. + + + d.M. - d.M. + d.M. - d.M. + + + E, d.M. - E, d.M. + E, d.M. - E, d.M. + + + LLL – LLL + + + d. - d. MMM + d. MMM - d. MMM + + + E, d. - E, d. MMM + E, d. MMM - E, d. MMM + + + LLLL-LLLL + + + y - y + + + M.y - M.y + M.y - M.y + + + d.M.y - d.M.y + d.M.y - d.M.y + d.M.y - d.M.y + + + E, d.M.y - E, d.M.y + E, d.M.y - E, d.M.y + E, d.M.y - E, d.M.y + + + LLL - LLL y + LLL y - LLL y + + + d. - d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + LLLL - LLLL y + LLLL y - LLLL y + + + + + + + + Éra + + + Rok + Minulý rok + Tento rok + Budúci rok + + O {0} rok + O {0} roky + O {0} roka + O {0} rokov + + + Pred {0} rokom + Pred {0} rokmi + Pred {0} rokmi + Pred {0} rokmi + + + + Mesiac + Posledný mesiac + Tento mesiac + Budúci mesiac + + O {0} mesiac + O {0} mesiace + O {0} mesiaca + O {0} mesiacov + + + Pred {0} mesiacom + Pred {0} mesiacmi + Pred {0} mesiacmi + Pred {0} mesiacmi + + + + Týždeň + Minulý týždeň + Tento týždeň + Budúci týždeň + + O {0} týždeň + O {0} týždne + O {0} týždňa + O {0} týždňov + + + Pred {0} týždňom + Pred {0} týždňami + Pred {0} týždňami + Pred {0} týždňami + + + + Deň + Predvčerom + Včera + Dnes + Zajtra + Pozajtra + + O {0} deň + O {0} dni + O {0} dňa + O {0} dní + + + Pred {0} dňom + Pred {0} dňami + Pred {0} dňami + Pred {0} dňami + + + + Deň v týždni + + + Minulú nedeľu + Túto nedeľu + Budúcu nedeľu + + + Minulý pondelok + Tento pondelok + Budúci pondelok + + + Minulý utorok + Tento utorok + Budúci utorok + + + Minulú stredu + Túto stredu + Budúcu stredu + + + Minulý štvrtok + Tento štvrtok + Budúci štvrtok + + + Minulý piatok + Tento piatok + Budúci piatok + + + Minulú sobotu + Túto sobotu + Budúcu sobotu + + + Časť dňa + + + Hodina + + O {0} hodinu + O {0} hodiny + O {0} hodiny + O {0} hodín + + + Pred {0} hodinou + Pred {0} hodinami + Pred {0} hodinami + Pred {0} hodinami + + + + Minúta + + O {0} minútu + O {0} minúty + O {0} minúty + O {0} minút + + + Pred {0} minútou + Pred {0} minútami + Pred {0} minútami + Pred {0} minútami + + + + Sekunda + teraz + + O {0} sekundu + O {0} sekundy + O {0} sekundy + O {0} sekúnd + + + Pred {0} sekundou + Pred {0} sekundami + Pred {0} sekundami + Pred {0} sekundami + + + + Časové pásmo + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Časové pásmo {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Neznáme mesto + + + Dubaj + + + Kábul + + + Tirana + + + Jerevan + + + Dumont D'Urville + + + Viedeň + + + Dháka + + + Brusel + + + Bahrajn + + + Svätý Bartolomej + + + Bermudy + + + Brunej + + + Atikokan + + + Sv. Ján + + + Zürich + + + Veľkonočné ostrovy + + + Šanghaj + + + Kostarika + + + Kapverdy + + + Vianočný ostrov + + + Nikózia + + + Praha + + + Büsingen + + + Berlín + + + Džibutsko + + + Kodaň + + + Dominika + + + Alžír + + + Galapágy + + + Káhira + + + Asmara + + + Kanárske ostrovy + + + Fidži + + + Chuuk + + + Pohnpei + + + Faerské ostrovy + + + Paríž + + + + Britský letný čas + + Londýn + + + Gibraltár + + + Nuuk + + + Ittoqqortoormiit + + + Atény + + + Južná Georgia + + + Hongkong + + + Záhreb + + + Budapešť + + + + Írsky letný čas + + + + Jeruzalem + + + Ostrov Man + + + Kalkata + + + Bagdad + + + Teherán + + + Rím + + + Jamajka + + + Biškek + + + Phnom Pénh + + + St. Kitts + + + Pchjongjang + + + Soul + + + Kuvajt + + + Alma-Ata + + + Bejrút + + + Svätá Lucia + + + Kolombo + + + Luxembursko + + + Tripolis + + + Monako + + + Kišiňov + + + Rangún + + + Ulanbátar + + + Macao + + + Martinik + + + Maurícius + + + Maldivy + + + Káthmandu + + + Maskat + + + Karáči + + + Varšava + + + Portoriko + + + Azorské ostrovy + + + Lisabon + + + Asunción + + + Katar + + + Réunion + + + Bukurešť + + + Belehrad + + + Moskva + + + Jekaterinburg + + + Novokuzneck + + + Krasnojarsko + + + Irkutsko + + + Jakutsko + + + Sachalin + + + Usť-Nera + + + Kamčatka + + + Chartúm + + + Štokholm + + + Singapur + + + Sv. Helena + + + Ľubľana + + + San Maríno + + + Mogadišo + + + Svätý Tomáš + + + Salvádor + + + Lower Prince's Quarter + + + Damask + + + Dušanbe + + + Ašchabad + + + Tchaj-pej + + + Užhorod + + + Kyjev + + + Záporožie + + + Aljaška + + + Beulah, Severná Dakota + + + New Salem, Severná Dakota + + + Center, Severná Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taškent + + + Vatikán + + + Sv. Vincent + + + Sv. Tomáš + + + Hočiminovo Mesto + + + + Afganský čas + + + + + Stredoafrický čas + + + + + Východoafrický čas + + + + + Juhoafrický čas + + + + + Západoafrický čas + Západoafrický štandardný čas + Západoafrický letný čas + + + + + Aljašský čas + Aljašský štandardný čas + Aljašský letný čas + + + + + Amazonský čas + Amazonský štandardný čas + Amazonský letný čas + + + + + Centrálny čas + Centrálny štandardný čas + Centrálny letný čas + + + + + Východný čas + Východný štandardný čas + Východný letný čas + + + + + Horský čas + Horský štandardný čas + Horský letný čas + + + + + Tichomorský čas + Tichomorský štandardný čas + Tichomorský letný čas + + + + + Anadyrský čas + Anadyrský štandardný čas + Anadyrský letný čas + + + + + Arabský čas + Arabský štandardný čas + Arabský letný čas + + + + + Argentínsky čas + Argentínsky štandardný čas + Argentínsky letný čas + + + + + Západoargentínsky čas + Západoargentínsky štandardný čas + Západoargentínsky letný čas + + + + + Arménsky čas + Arménsky štandardný čas + Arménsky letný čas + + + + + Atlantický čas + Atlantický štandardný čas + Atlantický letný čas + + + + + Stredoaustrálsky čas + Stredoaustrálsky štandardný čas + Stredoaustrálsky letný čas + + + + + Stredozápadný austrálsky čas + Stredozápadný austrálsky štandardný čas + Stredozápadný austrálsky letný čas + + + + + Východoaustrálsky čas + Východoaustrálsky štandardný čas + Východoaustrálsky letný čas + + + + + Západoaustrálsky čas + Západoaustrálsky štandardný čas + Západoaustrálsky letný čas + + + + + Azerbajdžanský čas + Azerbajdžanský štandardný čas + Azerbajdžanský letný čas + + + + + Azorský čas + Azorský štandardný čas + Azorský letný čas + + + + + Bangladéšsky čas + Bangladéšsky štandardný čas + Bangladéšsky letný čas + + + + + Bhutánsky čas + + + + + Bolívijský čas + + + + + Brazílsky čas + Brazílsky štandardný čas + Brazílsky letný čas + + + + + Brunejský čas + + + + + Kapverdský čas + Kapverdský štandardný čas + Kapverdský letný čas + + + + + Chamorrský štandardný čas + + + + + Chathamský čas + Chathamský štandardný čas + Chathamský letný čas + + + + + Čilský čas + Čilský štandardný čas + Čilský letný čas + + + + + Čínsky čas + Čínsky štandardný čas + Čínsky letný čas + + + + + Choibalsanský čas + Čojbalsanský štandardný čas + Choibalsanský letný čas + + + + + Čas Vianočného ostrova + + + + + Čas Kokosových ostrovov + + + + + Kolumbijský čas + Kolumbijský štandardný čas + Kolumbijský letný čas + + + + + Čas Cookových ostrovov + Štandardný čas Cookových ostrovov + Letný čas Cookových ostrovov + + + + + Kubánsky čas + Kubánsky štandardný čas + Kubánsky letný čas + + + + + Čas Davisovej stanice + + + + + Čas stanice Dumonta d'Urvillea + + + + + Východotimorský čas + + + + + Čas Veľkonočného ostrova + Štandardný čas Veľkonočného ostrova + Letný čas Veľkonočného ostrova + + + + + Ekvádorský čas + + + + + Stredoeurópsky čas + Stredoeurópsky štandardný čas + Stredoeurópsky letný čas + + + SEČ + SEČ + SELČ + + + + + Východoeurópsky čas + Východoeurópsky štandardný čas + Východoeurópsky letný čas + + + + + Západoeurópsky čas + Západoeurópsky štandardný čas + Západoeurópsky letný čas + + + + + Čas Falklandských ostrovov + Štandardný čas Falklandských ostrovov + Letný čas Falklandských ostrovov + + + + + Fidžijský čas + Fidžijský štandardný čas + Fidžijský letný čas + + + + + Čas Francúzskej Guyany + + + + + Francúzsky južný a antarktický čas + + + + + Galapágsky čas + + + + + Gambierský čas + + + + + Gruzínsky čas + Gruzínsky štandardný čas + Gruzínsky letný čas + + + + + Čas Gilbertových ostrovov + + + + + Greenwichský čas + + + + + Východogrónsky čas + Východogrónsky štandardný čas + Východogrónsky letný čas + + + + + Západogrónsky čas + Západogrónsky štandardný čas + Západogrónsky letný čas + + + + + Štandardný čas Perzského zálivu + + + + + Guyanský čas + + + + + Havajsko-aleutský čas + Havajsko-aleutský štandardný čas + Havajsko-aleutský letný čas + + + + + Hongkongský čas + Hongkongský štandardný čas + Hongkongský letný čas + + + + + Chovdský čas + Chovdský štandardný čas + Chovdský letný čas + + + + + Indický čas + + + + + Čas Indického oceánu + + + + + Indočínsky čas + + + + + Stredoindonézsky čas + + + + + Východoindonézsky čas + + + + + Západoindonézsky čas + + + + + Iránsky čas + Iránsky štandardný čas + Iránsky letný čas + + + + + Irkutský čas + Irkutský štandardný čas + Irkutský letný čas + + + + + Izraelský čas + Izraelský štandardný čas + Izraelský letný čas + + + + + Japonský čas + Japonský štandardný čas + Japonský letný čas + + + + + Petropavlovsk-Kamčatský čas + Petropavlovsk-Kamčatský štandardný čas + Petropavlovsk-Kamčatskijský letný čas + + + + + Východokazašský čas + + + + + Západokazašský čas + + + + + Kórejský čas + Kórejský štandardný čas + Kórejský letný čas + + + + + Kosraeský čas + + + + + Krasnojarský čas + Krasnojarský štandardný čas + Krasnojarský letný čas + + + + + Kirgizský čas + + + + + Čas Rovníkových ostrovov + + + + + Čas ostrova lorda Howa + Štandardný čas ostrova lorda Howa + Letný čas ostrova lorda Howa + + + + + Čas ostrova Macquarie + + + + + Magadanský čas + Magadanský štandardný čas + Magadanský letný čas + + + + + Malajský čas + + + + + Maledivský čas + + + + + Markézsky čas + + + + + Čas Marshallových ostrovov + + + + + Maurícijský čas + Maurícijský štandardný čas + Maurícijský letný čas + + + + + Čas Mawsonovej stanice + + + + + Ulanbátarský čas + Ulanbátarský štandardný čas + Ulanbátarský letný čas + + + + + Moskovský čas + Moskovský štandardný čas + Moskovský letný čas + + + + + Mjanmarský čas + + + + + Čas ostrova Nauru + + + + + Nepálsky čas + + + + + Novokaledónsky čas + Novokaledónsky štandardný čas + Novokaledónsky letný čas + + + + + Novozélandský čas + Novozélandský štandardný čas + Novozélandský letný čas + + + + + Newfoundlandský čas + Newfoundlandský štandardný čas + Newfoundlandský letný čas + + + + + Čas ostrova Niue + + + + + Čas Norfolkských ostrovov + + + + + Čas ostrova Fernando de Noronha + Štandardný čas ostrova Fernando de Noronha + Letný čas ostrovov Fernanda de Noronha + + + + + Novosibírsky čas + Novosibirský štandardný čas + Novosibírsky letný čas + + + + + Omský čas + Omský štandardný čas + Omský letný čas + + + + + Pakistanský čas + Pakistanský štandardný čas + Pakistanský letný čas + + + + + Palauský čas + + + + + Čas Papuy-Novej Guiney + + + + + Paraguajský čas + Paraguajský štandardný čas + Paraguajský letný čas + + + + + Peruánsky čas + Peruánsky štandardný čas + Peruánsky letný čas + + + + + Filipínsky čas + Filipínsky štandardný čas + Filipínsky letný čas + + + + + Čas Fénixových ostrovov + + + + + Čas ostrovov Saint-Pierre a Miquelon + Štandardný čas ostrovov Saint-Pierre a Miquelon + Letný čas ostrovov Saint-Pierre a Miquelon + + + + + Čas Pitcairnovho ostrova + + + + + Ponapský čas + + + + + Réunionský čas + + + + + Čas Rotherovej stanice + + + + + Sachalinský čas + Sachalinský štandardný čas + Sachalinský letný čas + + + + + Samarský čas + Samarský štandardný čas + Samarský letný čas + + + + + Samojský čas + Samojský štandardný čas + Samojský letný čas + + + + + Seychelský čas + + + + + Singapurský štandardný čas + + + + + Čas Šalamúnových ostrovov + + + + + Čas Južnej Georgie + + + + + Surinamský čas + + + + + Čas stanice Šówa + + + + + Tahitský čas + + + + + Tchajpejský čas + Tchajpejský štandardný čas + Tchajpejský letný čas + + + + + Tadžický čas + + + + + Tokelauský čas + + + + + Tonžský čas + Tonžský štandardný čas + Tonžský letný čas + + + + + Chuukský čas + + + + + Turkménsky čas + Turkménsky štandardný čas + Turkménsky letný čas + + + + + Tuvalský čas + + + + + Uruguajský čas + Uruguajský štandardný čas + Uruguajský letný čas + + + + + Uzbecký čas + Uzbecký štandardný čas + Uzbecký letný čas + + + + + Vanuatský čas + Vanuatský štandardný čas + Vanuatský letný čas + + + + + Venezuelský čas + + + + + Vladivostocký čas + Vladivostocký štandardný čas + Vladivostocký letný čas + + + + + Volgogradský čas + Volgogradský štandardný čas + Volgogradský letný čas + + + + + Čas stanice Vostok + + + + + Čas ostrova Wake + + + + + Čas ostrovov Wallis a Futuna + + + + + Jakutský čas + Jakutský štandardný čas + Jakutský letný čas + + + + + Jekaterinburgský čas + Jekaterinburgský štandardný čas + Jekaterinburský letný čas + + + + + + + , +   + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 tisíc + 0 tisíc + 0 tisíc + 0 tisíc + 00 tisíc + 00 tisíc + 00 tisíc + 00 tisíc + 000 tisíc + 000 tisíc + 000 tisíc + 000 tisíc + 0 milión + 0 milióny + 0 miliónov + 0 miliónov + 00 milión + 00 milióny + 00 miliónov + 00 miliónov + 000 milión + 000 milióny + 000 miliónov + 000 miliónov + 0 miliarda + 0 miliardy + 0 miliard + 0 miliard + 00 miliarda + 00 miliárdy + 00 miliárd + 00 miliárd + 000 miliarda + 000 miliárdy + 000 miliárd + 000 miliárd + 0 bilión + 0 bilióny + 0 biliónov + 0 biliónov + 00 bilión + 00 bilióny + 00 biliónov + 00 biliónov + 000 bilión + 000 bilióny + 000 biliónov + 000 biliónov + + + + + 0 tis'.' + 0 tis'.' + 0 tis'.' + 0 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 0 mil'.' + 0 mil'.' + 0 mil'.' + 0 mil'.' + 00 mil'.' + 00 mil'.' + 00 mil'.' + 00 mil'.' + 000 mil'.' + 000 mil'.' + 000 mil'.' + 000 mil'.' + 0 mld'.' + 0 mld'.' + 0 mld'.' + 0 mld'.' + 00 mld'.' + 00 mld'.' + 00 mld'.' + 00 mld'.' + 000 mld'.' + 000 mld'.' + 000 mld'.' + 000 mld'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + Andorská peseta + + + SAE dirham + SAE dirham + SAE dirhamy + SAE dirhamov + SAE dirhamov + + + Afganský afgání + afganský afgání + afganské afgání + afganského afgání + afganských afgání + + + Albánsky lek + + + Armenský dram + + + Antilský gulden + antilský gulden + antilské guldeny + antilského guldena + antilských guldenov + + + Angolská kwanza + + + Angolská kwanza (1977–1990) + + + Angolská nová kwanza (1990–2000) + + + Angolská kwanza Reajustado (1995–1999) + + + Argentinský austral + + + Argentinské peso (1983–1985) + + + Argentinské peso + + + Rakúsky šiling + + + Austrálsky dolár + austrálsky dolár + austrálske doláre + austrálskeho dolára + austrálskych dolárov + AUD + + + Arubský guilder + + + Azerbajdžanský manat (1993–2006) + azerbajdžanský manat (1993–2006) + azerbajdžanské manaty (1993–2006) + azerbajdžanského manatu (1993–2006) + azerbajdžanských manatov (1993–2006) + + + Azerbajdžanský manat + azerbajdžanský manat + azerbajdžanské manaty + azerbajdžanského manatu + azerbajdžanských manatov + + + Bosnianský dinár + + + Bosnianska konvertibilná marka + bosnianska konvertibilná marka + bosnianske konvertibilné marky + bosnianskej konvertibilnej marky + bosnianskych konvertibilných mariek + + + Barbadoský dolár + barbadoský dolár + barbadoské doláre + barbadoského dolára + barbadoských dolárov + + + Bangladéšska taka + + + Belgický frank (konvertibilný) + + + Belgický frank + + + Belgický frank (finančný) + + + Bulharský leva + + + Bulharský lev + bulharský lev + bulharské leva + bulharského leva + bulharských leva + + + Bahrajnský dinár + bahrajnský dinár + bahrajnské dináre + bahrajnského dinára + bahrajnských dinárov + + + Burundský frank + + + Bermudský dolár + + + Brunejský dolár + brunejský dolár + brunejské doláre + brunejského dolára + brunejských dolárov + + + Bolívijské boliviano + bolívijské boliviano + bolívijské boliviany + bolívijského boliviana + bolívijských bolivianov + + + Bolivíjske peso + + + Bolivíjske mvdol + + + Bolivíjske Cruzeiro Novo (1967–1986) + + + Bolivíjske cruzado + + + Bolivíjske cruzeiro (1990–1993) + + + Brazílsky real + brazílsky real + brazílske realy + brazílskeho realu + brazílskych realov + BRL + + + Brazílske Cruzado Novo + + + Brazílske cruzeiro + + + Bahamský dolár + + + Bhutánsky ngultrum + bhutánsky ngultrum + bhutánske ngultrumy + bhutánskeho ngultrumu + bhutánskych ngultrumov + + + Burmese Kyat + + + Botswanská pula + botswanská pula + botswanské puly + botswanskej puly + botswanských púl + + + Bieloruský nový rubeľ (1994–1999) + bieloruský nový rubeľ (1994–1999) + bieloruské nové ruble (1994–1999) + bieloruského nového rubľa (1994–1999) + bieloruských nových rubľov (1994–1999) + + + Bieloruský rubeľ + bieloruský rubeľ + bieloruské ruble + bieloruského rubľa + bieloruských rubľov + + + Belizský dolár + belizský dolár + belizské doláre + belizských dolárov + belizských dolárov + + + Kanadský dolár + kanadský dolár + kanadské doláre + kanadského dolára + kanadských dolárov + CAD + + + Konžský frank + konžský frank + konžské franky + konžského franku + konžských frankov + + + Švajčiarsky frank + švajčiarsky frank + švajčiarske franky + švajčiarskeho franku + švajčiarskych frankov + + + Čílske Unidades de Fomento + + + Čílske peso + + + Čínsky jüan + čínsky jüan + čínske jüany + čínskeho jüana + čínskych jüanov + CNY + + + Kolumbijské peso + kolumbijské peso + kolumbijské pesos + kolumbijského pesa + kolumbijských pesos + + + Kostarický colón + kostarický colón + kostarické colóny + kostarického colónu + kostarických colónov + + + Československá koruna + + + Kubánske konvertibilné peso + kubánske konvertibilné peso + kubánske konvertibilné pesos + kubánskeho konvertibilného pesa + kubánskych konvertibilných pesos + + + Kubánske peso + kubánske peso + kubánske pesos + kubánskeho pesa + kubánskych pesos + + + Kapverdské escudo + kapverdské escudo + kapverdské escudá + kapverdského escuda + kapverdských escúd + + + Cypruská libra + + + Česká koruna + česká koruna + české koruny + českej koruny + českých korún + + + Východonemecká marka + + + Nemecká marka + + + Džibutský frank + + + Dánska koruna + dánska koruna + dánske koruny + dánskej koruny + dánskych korún + + + Dominikánske peso + + + Alžírsky dinár + + + Ekuadorský sucre + + + Ekuadorský Unidad de Valor Constante (UVC) + + + Estónska kroon + estónska kroon + estónske kroony + estónskej kroony + estónskych kroon + + + Egyptská libra + + + Eritrejská nakfa + + + Španielská peseta + + + Ethiopský birr + + + Euro + euro + eurá + eura + eur + + + + Finská marka + + + Fidžijský dolár + fidžijský dolár + fidžijské doláre + fidžijského dolára + fidžijských dolárov + + + Falklandská libra + + + Francúzsky frank + + + Britská libra + britská libra + britskej libry + britskej libry + britských libier + GBP + + + Gruzínsky Kupon Larit + + + Gruzínsky lari + + + Ghanský cedi (1979–2007) + ghanský cedi (1979–2007) + ghanské cedi (1979–2007) + ghanského cedi (1979–2007) + ghanských cedi (1979–2007) + + + Ghanský cedi + ghanský cedi + ghanské cedi + ghanského cedi + ghanských cedi + + + Gibraltarská libra + + + Gambijský dalasi + gambijský dalasi + gambijské dalasi + gambijského dalasi + gambijských dalasi + + + Guinejský frank + + + Guinejský syli + + + Rovníková Guinea Ekwele Guineana + + + Grécka drachma + + + Guatemalský quetzal + + + Portugalská Guinea eskudo + + + Guinea-Bissau peso + Guinea-Bissau peso + Guinea-Bissau pesos + Guinea-Bissau pesa + Guinea-Bissau pesos + + + Guyanský dolár + + + Hongkonský dolár + hongkonský dolár + hongkonské doláre + hongkonského dolára + hongkonských dolárov + HKD + + + Hoduraská lempira + honduraská lempira + honduraské lempiry + honduraskej lempiry + honduraských lempír + + + Chorvátsky dinár + + + Chorvátska kuna + + + Haitské gourde + + + Maďarský forint + maďarský forint + maďarské forinty + maďarského forinta + maďarských forintov + + + Indonézska rupia + indonézska rupia + indonézske rupie + indonézskej rupie + indonézskych rupií + + + Írska libra + + + Izraelská libra + + + Izraelský šekel + + + + Indická rupia + indická rupia + indické rupie + indickej rupie + indických rupií + INR + + + Iracký dinár + + + Iránsky rial + + + Islandská krona + + + Talianská lira + + + Jamajský dolár + + + Jordánsky dinár + + + Japonský jen + japonský jen + japonské jeny + japonského jenu + japonských jenov + JPY + + + Keňský šiling + + + Kirgizský som + kirgizský som + kirgizské somy + kirgizského somu + kirgizských somov + + + Kambodžský riel + + + Komorský frank + Comoro frank + komorské franky + komorského franku + komorských frankov + + + Severokórejský won + + + Juhokórejský won + juhokórejský won + juhokórejské wony + juhokórejského wonu + juhokórejských wonov + KRW + + + Kuvajtský dinár + kuvajtský dinár + kuvajtské dináre + kuvajtského dinára + kuvajtských dinárov + + + Kajmanský dolár + + + Kazašské tenge + kazašské tenge + kazašské tenge + kazašského tenge + kazašských tenge + + + Laoský kip + + + Libanonská libra + + + Srílanská rupia + srílanská rupia + srílanské rupie + srílanskej rupie + srílanských rupií + + + Libérský dolár + + + Lesothský loti + + + Litovský litas + litovský litas + litovské litasy + litovského litasa + litovských litasov + + + Litevský talonas + + + Luxemburský frank + + + Lotyšský lat + lotyšský lat + lotyšské laty + lotyšského latu + lotyšských latov + + + Lotyšský rubeľ + + + Libyjský dinár + + + Marocký dirham + + + Marocký frank + + + Moldavský leu + + + Madagaskarský ariary + + + Madagaskarský frank + + + Macedónsky denár + + + Malský frank + + + Myanmarský kyat + + + Mongolský tugrik + + + Macajská pataca + macajská pataca + macajské patacy + macajskej patacy + macajských patác + + + Mauritania Ouguiya + mauritánska ukija + mauritánske ukije + mauritánskej ukije + mauritánskych ukijí + + + Maltská lira + + + Maltská libra + + + Maurícijská rupia + maurícijská rupia + maurícijské rupie + maurícijskej rupie + maurícijských rupií + + + Maldivská rufiyaa + + + Malawijská kwacha + malawijská kwacha + malawijské kwachy + malawijskej kwachy + malawijských kwách + + + Mexické peso + mexické peso + mexické pesos + mexického pesa + mexických pesos + Mex$ + + + Mexické striborné peso (1861–1992) + + + Mexické Unidad de Inversion (UDI) + + + Malajský ringgit + malajský ringgit + malajské ringgity + malajského ringgitu + malajských ringgitov + + + Mozabické escudo + mozabické escudo + mozabické escudá + mozabického escuda + mozabických escúd + + + Mozambický metical (1980–2006) + mozambický metical (1980–2006) + mozambické meticaly (1980–2006) + mozambického meticalu (1980–2006) + mozambických meticalov (1980–2006) + + + Mozambický metical + mozambický metical + mozambické meticaly + mozambického meticalu + mozambických meticalov + + + Namibský dolár + namíbijský dolár + namíbijské doláre + namíbijského dolára + namíbijských dolárov + + + Nigerská naira + + + Nikaragujská Cordoba (1988–1991) + nikaragujská córdoba (1988–1991) + nikaragujské córdoby (1988–1991) + nikaragujskej córdoby (1988–1991) + nikaragujských córdob (1988–1991) + + + Nikaragujská Cordoba + nikaragujská córdoba + nikaragujské córdoby + nikaragujskej córdoby + nikaragujských córdob + + + Nizozemský guilder + + + Nórska koruna + nórska koruna + nórske koruny + nórskej koruny + nórskych korún + + + Nepálska rupia + + + Novozélandský dolár + NZ$ + + + Ománský rial + + + Panamská balboa + + + Peruvský inti + + + Peruvský sol Nuevo + peruánsky nový sol + peruánske nové soly + peruánskeho nového sola + peruánskych nových solov + + + Peruvský sol + + + Papuánska kina + papuánska kina + papuánske kiny + papuánskej kiny + papuánskych kín + + + Filipínske peso + + + Pakistanská rupia + + + Poľský zlotý + poľský zlotý + poľské zloté + poľského zlotého + poľských zlotých + zl + + + Polský zloty (1950–1995) + poľský zlotý (1950–1995) + poľské zloté (1950–1995) + poľského zlotého (1950–1995) + poľských zlotých (1950–1995) + + + Portugalské eskudo + + + Paraguayské guarani + paraguajské guaraní + paraguayské guarani + paraguayského guarani + paraguayských guarani + + + Katarský rial + katarský rial + katarské rialy + katarského rialu + katarských rialov + + + Rumunský leu (1952–2006) + rumunský leu (1952–2006) + rumunské leu (1952–2006) + rumunského leu (1952–2006) + rumunských leu (1952–2006) + + + Rumunský leu + rumunský leu + rumunské leu + rumunského leu + rumunských leu + + + Srbský dinár + srbský dinár + srbské dináre + srbského dinára + srbských dinárov + + + Ruský rubeľ + ruský rubeľ + ruské ruble + ruského rubľa + ruských rubľov + + + Ruský rubeľ (1991–1998) + + + Rwandský frank + + + Saudskoarabský rial + saudskoarabský rial + saudskoarabské rialy + saudskoarabského rialu + saudskoarabských rialov + + + Šalamúnsky dolár + šalamúnsky dolár + šalamúnske doláre + šalamúnskeho dolára + šalamúnskych dolárov + + + Seychelská rupia + seychelská rupia + seychelské rupie + seychelskej rupie + seychelských rupií + + + Sudánsky dinár + + + Sudánska libra + sudánska libra + sudánske libry + sudánskej libry + sudánskych libier + + + Sudánska libra (1957–1998) + sudánska libra (1957–1998) + sudánske libry (1957–1998) + sudánskej libry (1957–1998) + sudánskych libier (1957–1998) + + + Švédska koruna + švédska koruna + švédske koruny + švédskej koruny + švédskych korún + + + Singapúrsky dolár + + + Svätohelenská libra + svätohelenská libra + svätohelenské libry + svätohelenskej libry + svätohelenských libier + + + Slovinský Tolar + + + Slovenská koruna + + + Sierraleonský leone + sierraleonský leone + sierraleonské leone + sierraleonského leone + sierraleonských leone + + + Somálsky šiling + + + Surinamský dolár + surinamský dolár + surinamské doláre + surinamského dolára + surinamských dolárov + + + Surinamský guilder + + + Juhosudánska libra + juhosudánska libra + juhosudánske libry + juhosudánskej libry + juhosudánskych libier + + + Sao Tome a Principe dobra + svätotomášska dobra + svätotomášske dobry + svätotomášskej dobry + svätotomášskych dobrí + + + Sovietsky rubeľ + + + Salvádorský colón + salvádorský colón + salvádorské colóny + salvádorského colóna + salvádorských colónov + + + Syrská libra + + + Svazijské lilangeni + svazijské lilangeni + svazijské lilangeni + svazijského lilangeni + svazijských lilangeni + + + Thajský baht + thajský baht + thajské bahty + thajského bahtu + thajských bahtov + THB + + + Tadžický rubeľ + + + Tadžické somoni + tadžické somoni + tadžické somoni + tadžického somoni + tadžických somoni + + + Turkménsky manat (1993–2009) + turkménsky manat (1993–2009) + turkménske manaty (1993–2009) + turkménskeho manatu (1993–2009) + turkménskych manatov (1993–2009) + + + Turkménsky manat + turkménsky manat + turkménske manaty + turkménskeho manatu + turkménskych manatov + + + Tuniský dinár + + + Tonga Paʻanga + tongská pa'anga + tongské pa'anga + tongského pa'anga + tongských pa'anga + + + Timorské eskudo + + + Turecká lira (1922–2005) + turecká líra (1922–2005) + turecké líry (1922–2005) + tureckej líry (1922–2005) + tureckých lír (1922–2005) + + + Turecká líra + turecká líra + turecké líry + tureckej líry + tureckých lír + + + Trinidadsko-tobažský dolár + trinidadsko-tobažský dolár + trinidadsko-tobažské doláre + trinidadsko-tobažského dolára + trinidadsko-tobažských dolárov + + + Nový taiwanský dolár + nový taiwanský dolár + nové taiwanské doláre + nového taiwanského dolára + nových taiwanských dolárov + TWD + + + Tanzanský šiling + + + Ukrainská hrivna + ukrajinská hrivna + ukrajinské hrivny + ukrajinskej hrivny + ukrajinských hrivien + + + Ukrainský karbovanetz + + + Ugandan šiling (1966–1987) + + + Ugandský šiling + + + Americký dolár + americký dolár + americké doláre + amerického dolára + amerických dolárov + USD + + + US dolár (Next day) + + + US dolár (Same day) + + + Uruguajské peso (1975–1993) + + + Uruguajské peso Uruguayo + uruguajské peso + uruguajské pesos + uruguajských pesos + uruguajských pesos + + + Uzbecký sum + uzbecký sum + uzbecké sumy + uzbeckého sumu + uzbeckých sumov + + + Venezuelský bolívar (1871–2008) + + + Venezuelský bolívar + + + Vietnamský dong + + + + Vanuatské vatu + vanuatské vatu + vanuatské vatu + vanuatského vatu + vanuatských vatu + + + Samojská tala + samojská tala + samojské taly + samojskej taly + samojských tál + + + CFA frank BEAC + FCFA + + + Zlato + + + Východokaribský dolár + východokaribský dolár + východokaribské doláre + východokaribského dolára + východokaribských dolárov + EC$ + + + Špeciálne práva čerpania + + + Francúzsky zlatý frank + + + Francúzsky UIC-frank + + + CFA frank BCEAO + CFA + + + CFP frank + CFPF + + + Neznáma mena + Neznáma mena + Neznáma mena + Neznáma mena + Neznáma mena + + + Jemenský dinár + + + Jemenský rial + + + Juhoslávsky dinár [YUD] + + + Juhoslávsky Noviy dinár + + + Juhoslávsky dinár + + + Juhoafrický rand (financial) + + + Juhoafrický rand + juhoafrický rand + juhoafrické randy + juhoafrického randu + juhoafrických randov + + + Zambijská kwacha (1968–2012) + zambijská kwacha (1968–2012) + zambijské kwachy (1968–2012) + zambijskej kwachy (1968–2012) + zambijských kwách (1968–2012) + + + Zambijská kwacha + zambijská kwacha + zambijské kwachy + zambijskej kwachy + zambijských kwách + + + Zairský nový zaire + + + Zairský Zaire + + + Zimbabwiansky dolár (1980–2008) + zimbabwiansky dolár (1980–2008) + zimbabwianske doláre (1980–2008) + zimbabwianskeho dolára (1980–2008) + zimbabwianskych dolárov (1980–2008) + + + Zimbabwiansky dolár (2009) + zimbabwiansky dolár (2009) + zimbabwianske doláre (2009) + zimbabwianskeho dolára (2009) + zimbabwianskych dolárov (2009) + + + Zimbabwiansky dolár (2008) + zimbabwiansky dolár (2008) + zimbabwianske doláre (2008) + zimbabwianskeho dolára (2008) + zimbabwianskych dolárov (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} za {1} + + + {0} jednotka preťaženia + {0} jednotky preťaženia + {0} jednotky preťaženia + {0} jednotiek preťaženia + + + {0} minúta + {0} minúty + {0} minúty + {0} minút + + + {0} sekunda + {0} sekundy + {0} sekundy + {0} sekúnd + + + {0} stupeň + {0} stupne + {0} stupňa + {0} stupňov + + + {0} aker + {0} akre + {0} akra + {0} akrov + + + {0} hektár + {0} hektáre + {0} hektára + {0} hektárov + + + {0} štvorcová stopa + {0} štvorcové stopy + {0} štvorcovej stopy + {0} štvorcových stôp + + + {0} kilometer štvorcový + {0} kilometre štvorcové + {0} kilometra štvorcového + {0} kilometrov štvorcových + + + {0} meter štvorcový + {0} metre štvorcové + {0} metra štvorcového + {0} metrov štvorcových + + + {0} míľa štvorcová + {0} míle štvorcové + {0} míle štvorcovej + {0} míľ štvorcových + + + {0} deň + {0} dni + {0} dňa + {0} dní + + + {0} hodina + {0} hodiny + {0} hodiny + {0} hodín + + + {0} milisekunda + {0} milisekundy + {0} milisekundy + {0} milisekúnd + + + {0} minúta + {0} minúty + {0} minúty + {0} minút + + + {0} mesiac + {0} mesiace + {0} mesiaca + {0} mesiacov + + + {0} sekunda + {0} sekundy + {0} sekundy + {0} sekúnd + + + {0} týždeň + {0} týždne + {0} týždňa + {0} týždňov + + + {0} rok + {0} roky + {0} roka + {0} rokov + + + {0} centimeter + {0} centimetre + {0} centimetra + {0} centimetrov + + + {0} stopa + {0} stopy + {0} stôp + {0} stôp + + + {0} palec + {0} palce + {0} palca + {0} palcov + + + {0} kilometer + {0} kilometre + {0} kilometra + {0} kilometrov + + + {0} svetelný rok + {0} svetelné roky + {0} svetelného roku + {0} svetelných rokov + + + {0} meter + {0} metre + {0} metra + {0} metrov + + + {0} míľa + {0} míle + {0} míle + {0} míľ + + + {0} milimeter + {0} milimetre + {0} milimetra + {0} milimetrov + + + {0} pikometer + {0} pikometre + {0} pikometra + {0} pikometrov + + + {0} yard + {0} yardy + {0} yardu + {0} yardov + + + {0} gram + {0} gramy + {0} gramu + {0} gramov + + + {0} kilogram + {0} kilogramy + {0} kilogramu + {0} kilogramov + + + {0} unca + {0} unce + {0} unce + {0} uncí + + + {0} libra + {0} libry + {0} libry + {0} libier + + + {0} konská sila + {0} konské sily + {0} konskej sily + {0} konských síl + + + {0} kilowatt + {0} kilowatty + {0} kilowattu + {0} kilowattov + + + {0} watt + {0} watty + {0} wattu + {0} wattov + + + {0} hektopascal + {0} hektopascaly + {0} hektopascala + {0} hektopascalov + + + {0} palec ortuťového stĺpca + {0} palce ortuťového stĺpca + {0} palce ortuťového stĺpca + {0} palcov ortuťového stĺpca + + + {0} milibar + {0} milibary + {0} milibaru + {0} milibarov + + + {0} kilometer za hodinu + {0} kilometre za hodinu + {0} kilometra za hodinu + {0} kilometrov za hodinu + + + {0} meter za sekundu + {0} metre za sekundu + {0} metra za sekundu + {0} metrov za sekundu + + + {0} míľa za hodinu + {0} míle za hodinu + {0} míle za hodinu + {0} míľ za hodinu + + + {0} stupeň Celzia + {0} stupne Celzia + {0} stupňa Celzia + {0} stupňov Celzia + + + {0} stupeň Fahrenheita + {0} stupne Fahrenheita + {0} stupňa Fahrenheita + {0} stupňov Fahrenheita + + + {0} kubický kilometer + {0} kubické kilometre + {0} kubického kilometra + {0} kubických kilometrov + + + {0} kubická míľa + {0} kubické míle + {0} kubickej míle + {0} kubických míľ + + + {0} liter + {0} litre + {0} litra + {0} litrov + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0} min + {0} min + {0} min + {0} min + + + {0} sek. + {0} sek. + {0} sek. + {0} sek. + + + {0} stup. + {0} stup. + {0} stup. + {0} stup. + + + {0} ac + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} d. + {0} d. + {0} d. + {0} d. + + + {0} hod. + {0} hod. + {0} hod. + {0} hod. + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min. + {0} min. + {0} min. + {0} min. + + + {0} mes. + {0} mes. + {0} mes. + {0} mes. + + + {0} sek. + {0} sek. + {0} sek. + {0} sek. + + + {0} týžd. + {0} týžd. + {0} týžd. + {0} týžd. + + + {0} r. + {0} r. + {0} r. + {0} r. + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} ly + {0} ly + {0} ly + {0} ly + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} hp + {0} hp + {0} hp + {0} hp + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mb + {0} mb + {0} mb + {0} mb + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mph + {0} mph + {0} mph + {0} mph + + + {0}°C + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + {0}G + {0}G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0}ac + {0}ac + {0}ac + {0}ac + + + {0}ha + {0}ha + {0}ha + {0}ha + + + {0}ft² + {0}ft² + {0}ft² + {0}ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0}mi² + {0}mi² + {0}mi² + {0}mi² + + + {0}d. + {0}d. + {0}d. + {0}d. + + + {0}h + {0}h + {0}h + {0}h + + + {0}ms + {0}ms + {0}ms + {0}ms + + + {0}min + {0}min + {0}min + {0}min + + + {0}mes. + {0}mes. + {0}mes. + {0}mes. + + + {0}s + {0}s + {0}s + {0}s + + + {0}týžd. + {0}týžd. + {0}týžd. + {0}týžd. + + + {0}r. + {0}r. + {0}r. + {0}r. + + + {0}cm + {0}cm + {0}cm + {0}cm + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}in + {0}in + {0}in + {0}in + + + {0}km + {0}km + {0}km + {0}km + + + {0}ly + {0}ly + {0}ly + {0}ly + + + {0}m + {0}m + {0}m + {0}m + + + {0}mi + {0}mi + {0}mi + {0}mi + + + {0}mm + {0}mm + {0}mm + {0}mm + + + {0}pm + {0}pm + {0}pm + {0}pm + + + {0}yd + {0}yd + {0}yd + {0}yd + + + {0}g + {0}g + {0}g + {0}g + + + {0}kg + {0}kg + {0}kg + {0}kg + + + {0}oz + {0}oz + {0}oz + {0}oz + + + {0}lb + {0}lb + {0}lb + {0}lb + + + {0}hp + {0}hp + {0}hp + {0}hp + + + {0}kW + {0}kW + {0}kW + {0}kW + + + {0}W + {0}W + {0}W + {0}W + + + {0}hPa + {0}hPa + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + {0}" Hg + {0}" Hg + + + {0}mb + {0}mb + {0}mb + {0}mb + + + {0}km/h + {0}km/h + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + {0}m/s + {0}m/s + + + {0}mph + {0}mph + {0}mph + {0}mph + + + {0}° + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0}km³ + {0}km³ + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + {0}mi³ + {0}mi³ + + + {0}l + {0}l + {0}l + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} a {1} + {0} a {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + áno:a + nie:n + + + + diff --git a/library/Zend/Locale/Data/sk_SK.xml b/library/Zend/Locale/Data/sk_SK.xml new file mode 100755 index 000000000..542ac4da4 --- /dev/null +++ b/library/Zend/Locale/Data/sk_SK.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sl.xml b/library/Zend/Locale/Data/sl.xml new file mode 100755 index 000000000..68117c0c9 --- /dev/null +++ b/library/Zend/Locale/Data/sl.xml @@ -0,0 +1,5048 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afarščina + abhaščina + ačejščina + ačolijščina + adangmejščina + adigejščina + avestijščina + afrikanščina + afrihili + ainujščina + akanščina + akadščina + aleutščina + južna altajščina + amharščina + aragonščina + stara angleščina + angikaščina + arabščina + sodobna standardna arabščina + aramejščina + aravkanščina + arapaščina + aravaščina + asamščina + asturijščina + avarščina + avadščina + ajmarščina + azerbajdžanščina + azerščina + baškirščina + beludžijščina + balijščina + basa + beloruščina + bedža + bemba + bolgarščina + bodžpuri + bislamščina + bikolski jezik + edo + siksika + bambarščina + bengalščina + tibetanščina + bretonščina + bradžbakanščina + bosanščina + burjatščina + buginščina + blinščina + katalonščina + kadoščina + karibski jezik + čečenščina + sebuanščina + čamorščina + čibčevščina + čagatajščina + trukeščina + marijščina + činuški žargon + čoktavščina + čipevščina + čerokeščina + čejenščina + soranska kurdščina + korziščina + koptščina + krijščina + krimska tatarščina + češčina + kašubščina + stara cerkvena slovanščina + čuvaščina + valižanščina + danščina + dakotščina + darginščina + nemščina + avstrijska nemščina + visoka nemščina (Švica) + delavarščina + slavejščina + dogrib + dinka + dogri + dolnja lužiška srbščina + duala + srednja nizozemščina + diveščina + diula + dzonka + evenščina + efiščina + stara egipčanščina + ekajuk + grščina + elamščina + angleščina + avstralska angleščina + kanadska angleščina + angleščina (VB) + angleščina (ZDA) + angleščina (ZDA) + srednja angleščina + esperanto + španščina + latinskoameriška španščina + iberska španščina + estonščina + baskovščina + evondovščina + perzijščina + fangijščina + fantijščina + fulščina + finščina + filipinščina + fidžijščina + ferščina + fonščina + francoščina + kanadska francoščina + švicarska francoščina + srednja francoščina + stara francoščina + severna frizijščina + vzhodna frizijščina + furlanščina + frizijščina + irščina + ga + gajščina + gbajščina + škotska gelščina + etiopščina + kiribatščina + galicijščina + srednja visoka nemščina + gvaranijščina + stara visoka nemščina + gondi + gorontalščina + gotščina + grebščina + stara grščina + nemščina (Švica) + gudžaratščina + manščina + havščina + haidščina + havajščina + hebrejščina + hindujščina + hiligajnonščina + hetitščina + hmonščina + hiri motu + hrvaščina + gornja lužiška srbščina + haitijska kreolščina + madžarščina + hupa + armenščina + herero + interlingva + ibanščina + indonezijščina + interlingve + igboščina + inupiaščina + ilokanščina + inguščina + ido + islandščina + italijanščina + inuktitutščina + japonščina + lojban + judovska perzijščina + judovska arabščina + javanščina + gruzinščina + karakalpaščina + kabilščina + kačinščina + kamba + kavi + kabardinščina + tjapska nigerijščina + kongovščina + kasi + kotanščina + kikujščina + kvanjama + kazaščina + grenlandščina + kmerščina + kimbundu + kanada + korejščina + konkanščina + kosrajščina + kpelejščina + kanurščina + karačaj-balkarščina + karelščina + kuruk + kašmirščina + kurdščina + kumiščina + kutenajščina + komijščina + kornijščina + kirgiščina + latinščina + ladinščina + landa + lamba + luksemburščina + lezginščina + ganda + limburščina + lingala + laoščina + mongo + lozi + litovščina + luba-katanga + luba-lulua + luisenščina + lunda + luo + lushai + latvijščina + madurščina + magadščina + maitili + makasarščina + mandingo + masajščina + mokšavščina + mandarščina + mende + morisjenščina + malagaščina + srednja irščina + marshallovščina + maorščina + mikmaščina + minangkabau + makedonščina + malajalamščina + mongolščina + mandžurščina + manipurščina + mohoščina + mosijščina + maratščina + malajščina + malteščina + več jezikov + mirandeščina + marvarščina + burmanščina + erzjanščina + naurujščina + napolitanščina + knjižna norveščina + severna ndebelščina + nizka nemščina + nepalščina + nevarščina + niaščina + niuejščina + nizozemščina + flamščina + novonorveščina + norveščina + nogajščina + stara nordijščina + južna ndebelščina + severna sotščina + navajščina + klasična nevarščina + njanščina + njamveščina + njankole + njoro + nzima + okcitanščina + anašinabščina + oromo + orijščina + osetinščina + osage + otomanska turščina + pandžabščina + pangasinanščina + pampanščina + papiamentu + palavanščina + stara perzijščina + feničanščina + palijščina + poljščina + ponpejščina + stara provansalščina + paštu + paštunščina + portugalščina + brazilska portugalščina + iberska portugalščina + kečuanščina + radžastanščina + rapanujščina + rarotongščina + retoromanščina + rundščina + romunščina + moldavščina + romščina + ruščina + aromunščina + ruandščina + sanskrt + jakutščina + samaritanska aramejščina + sasaščina + santalščina + sardinščina + sicilijanščina + škotščina + sindščina + severna samijščina + selkupščina + sango + stara irščina + srbohrvaščina + šanščina + singalščina + sidamščina + slovaščina + slovenščina + samoanščina + južna samijščina + luleška samijščina + inarska samijščina + samijščina Skolt + šonščina + somalščina + albanščina + srbščina + surinamska kreolščina + sererščina + svazijščina + sesoto + sundanščina + sukuma + susujščina + sumerščina + švedščina + svahili + šikomor + klasična sirščina + sirščina + tamilščina + telugijščina + temnejščina + tetumščina + tadžiščina + tajščina + tigrajščina + tigrejščina + tivščina + turkmenščina + tokelavščina + tagalogščina + klingonščina + tlingitščina + tamajaščina + cvanščina + tongščina + malavijska tongščina + tok pisin + turščina + tsonga + tsimščina + tatarščina + tumbukščina + tuvalujščina + tvi + tahitščina + tuvinščina + udmurtščina + ujgurščina + ugaritski jezik + ukrajinščina + umbundščina + neznan ali neveljaven jezik + urdujščina + uzbeščina + vajščina + venda + vietnamščina + volapuk + votjaščina + valonščina + valamščina + varajščina + vašajščina + volofščina + kalmiščina + xhosa + jaojščina + japščina + jidiš + jorubščina + kantonščina + zapoteščina + znakovni jezik Bliss + zenaščina + standardni maroški tamazig + kitajščina + poenostavljena kitajščina + tradicionalna kitajščina + zulujščina + zunijščina + brez jezikoslovne vsebine + zazajščina + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Svet + Afrika + Severna Amerika + Južna Amerika + Oceanija + Zahodna Afrika + Srednja Amerika + Vzhodna Afrika + Severna Afrika + Srednja Afrika + Južna Afrika + Amerike + severnoameriška celina + Karibi + Vzhodna Azija + Južna Azija + Jugovzhodna Azija + Južna Evropa + Avstralija in Nova Zelandija + Melanezija + mikronezijska regija + Polinezija + Azija + Osrednja Azija + Zahodna Azija + Evropa + Vzhodna Evropa + Severna Evropa + Zahodna Evropa + Latinska Amerika + Otok Ascension + Andora + Združeni arabski emirati + Afganistan + Antigva in Barbuda + Angvila + Albanija + Armenija + Nizozemski Antili + Angola + Antarktika + Argentina + Ameriška Samoa + Avstrija + Avstralija + Aruba + Alandsko otočje + Azerbajdžan + Bosna in Hercegovina + Barbados + Bangladeš + Belgija + Burkina Faso + Bolgarija + Bahrajn + Burundi + Benin + Saint Barthelemy + Bermudi + Brunej + Bolivija + Nizozemski Karibi + Brazilija + Bahami + Butan + Bouvetov otok + Bocvana + Belorusija + Belize + Kanada + Kokosovi otoki + Demokratična republika Kongo + Kongo (Demokratična republika Kongo) + Centralnoafriška republika + Kongo - Brazzaville + Kongo (Republika) + Švica + Slonokoščena obala + Cookovo otočje + Čile + Kamerun + Kitajska + Kolumbija + Otok Clipperton + Kostarika + Kuba + Zelenortski otoki + Curaçao + Božični otok + Ciper + Češka + Nemčija + Diego Garcia + Džibuti + Danska + Dominika + Dominikanska republika + Alžirija + Ceuta in Melilla + Ekvador + Estonija + Egipt + Zahodna Sahara + Eritreja + Španija + Etiopija + Evropska unija + Finska + Fidži + Falklandski otoki + Falklandski otoki (Malvinski otoki) + Mikronezija + Ferski otoki + Francija + Gabon + Velika Britanija + ZK + Grenada + Gruzija + Francoska Gvajana + Guernsey + Gana + Gibraltar + Grenlandija + Gambija + Gvineja + Gvadalupe + Ekvatorialna Gvineja + Grčija + Južna Georgia in Južni Sandwichevi otoki + Gvatemala + Guam + Gvineja Bissau + Gvajana + Posebno administrativno območje LR Kitajske Hong Kong + Hongkong + Otok Heard in otočje McDonald + Honduras + Hrvaška + Haiti + Madžarska + Kanarski otoki + Indonezija + Irska + Izrael + Otok Man + Indija + Britansko ozemlje v Indijskem oceanu + Irak + Iran + Islandija + Italija + Jersey + Jamajka + Jordanija + Japonska + Kenija + Kirgizistan + Kambodža + Kiribati + Komori + Saint Kitts in Nevis + Severna Koreja + Južna Koreja + Kuvajt + Kajmanski otoki + Kazahstan + Laos + Libanon + Saint Lucia + Lihtenštajn + Šrilanka + Liberija + Lesoto + Litva + Luksemburg + Latvija + Libija + Maroko + Monako + Moldavija + Črna gora + Saint Martin + Madagaskar + Marshallovi otoki + Makedonija + Makedonija (FYROM) + Mali + Mjanmar (Burma) + Mongolija + Posebno administrativno območje LR Kitajske Macao + Macao + Severni Marianski otoki + Martinik + Mavretanija + Montserrat + Malta + Mauritius + Maldivi + Malavi + Mehika + Malezija + Mozambik + Namibija + Nova Kaledonija + Niger + Norfolški otok + Nigerija + Nikaragva + Nizozemska + Norveška + Nepal + Nauru + Niue + Nova Zelandija + Oman + Panama + Peru + Francoska Polinezija + Papua Nova Gvineja + Filipini + Pakistan + Poljska + Saint Pierre in Miquelon + Pitcairn + Portoriko + Palestinsko ozemlje + Palestina + Portugalska + Palau + Paragvaj + Katar + Ostala oceanija + Reunion + Romunija + Srbija + Rusija + Ruanda + Saudova Arabija + Salomonovi otoki + Sejšeli + Sudan + Švedska + Singapur + Sveta Helena + Slovenija + Svalbard in Jan Mayen + Slovaška + Sierra Leone + San Marino + Senegal + Somalija + Surinam + Južni Sudan + Sao Tome in Principe + Salvador + Sint Maarten + Sirija + Svazi + Tristan da Cunha + Otočji Turks in Caicos + Čad + Francosko južno ozemlje + Togo + Tajska + Tadžikistan + Tokelau + Vzhodni Timor + Turkmenistan + Tunizija + Tonga + Turčija + Trinidad in Tobago + Tuvalu + Tajvan + Tanzanija + Ukrajina + Uganda + Druga ameriška ozemlja v Tihem oceanu + Združene države Amerike + ZDA + Urugvaj + Uzbekistan + Vatikan + Saint Vincent in Grenadine + Venezuela + Britanski Deviški otoki + Ameriški Deviški otoki + Vietnam + Vanuatu + Wallis in Futuna + Samoa + Kosovo + Jemen + Mayotte + Južnoafriška republika + Zambija + Zimbabve + Neznano ali neveljavno območje + + + tradicionalni nemški pravopis + standardizirani rezijanski pravopis (1994) + novi nemški pravopis (1996) + pozna srednja francoščina (do 1606) + zgodnja sodobna francoščina + akademska beloruska slovnica + vzhodna armenščina + zahodna armenščina + modernizirana turška latinica + rezijansko narečje Bila (San Giorgio) + boonvilski jezik + mednarodna fonetična pisava IPA + uralska fonetska pisava UPA + standardni pravopis + rezijansko narečje iz Lipovca (Lipovaz) + monotonalni pravopis + nadiško narečje + rezijansko narečje Njiva (Gniva) + rezijansko narečje iz Osojan (Oseacco) + romanizacija pindžin + politonalni pravopis + standard prenosljivosti programske opreme + revidiran pravopis + rezijanščina + eritrejsko narečje soho + standardna škotska angleščina + liverpoolsko angleško narečje scouse + rezijansko narečje iz Solbice (Stolvizza) + Taraškievičeva beloruska slovnica + poenoten pravopis + revidiran poenoten pravopis + valencijski pravopis + romanizacija Wade-Giles + + + koledar + Razvrščanje s prezrtimi znaki + Razvrščanje z obratnimi naglasi + Razvrščanje velike črke/male črke + Razvrščanje, občutljivo na velike/male črke + Razvrščanje kana + razvrščanje + Normalizirano razvrščanje + Številsko razvrščanje + Moč razvrščanja + valuta + Številke + Časovni pas + Različica območnih nastavitev + Razvrščanje kot simboli + Private-Use + + + Arabskoindijske števke + Razširjene arabskoindijske števke + Armenske številke + Armenske majhne številke + Bengalske števke + razvrščanje po sistemu tradicionalne kitajščine - Big5 + budistični koledar + kitajski koledar + Koptski koledar + Devangarske števke + Vrstni red razvrščanja v slovarju + Privzeto razvrščanje Unicode + Etiopijske številke + Etiopski koledar + Etiopsko ametsko alemski koledar + Finančne številke + Števke polne širine + razvrščanje po sistemu poenostavljene kitajščine - GB2312 + Gruzijske številke + gregorijanski koledar + Grške številke + Grške male številke + Gudžaratske števke + Gurmuške števke + Kitajske decimalne številke + Poenostavljene kitajske številke + Poenostavljene kitajske finančne številke + Tradicionalne kitajske številke + Tradicionalne kitajske finančne številke + Hebrejske številke + hebrejski koledar + Razvrščanje vsega + indijanski koledar + islamski koledar + islamski civilni koledar + japonski koledar + Japonske številke + Japonske finančne številke + Kmerske števke + Kanaredske števke + Laoške števke + Zahodne števke + Razvrščanje malih črk najprej + Malajalamske števke + Mongolske števke + Mjanmarske števke + Domače števke + Navadno razvrščanje naglasov + Razvrščanje v običajnem zaporedju velikih/malih črk + Razvrščanje ne glede na velike/male črke + Razvrščanje kana ločeno + Razvrščanje brez normaliziranja + Ločeno razvrščanje številk + Razvrščanje simbolov + Orijske števke + Perzijski koledar + razvrščanje po abecedi + Fonetično razvrščanje + razvrščanje po sistemu pinjin + Razvrščanje samo osnovnih črk + Razvrščanje po naglasih/velikih črkah/malih črkah/širini/kana + Reformirano razvrščanje + kitajski državni koledar + Rimske številke + Rimske male številke + Splošno iskanje + Iskanje po začetnem soglasniku hangul + Razvrščanje naglasov + Razvrščanje s prezrtjem simbolov + Standardno razvrščanje + razvrščanje po zaporedju pisanja pismenk + Tamilske številke + Tamilske števke + Teluške števke + Razvrščanje po naglasih/velikih črkah/malih črkah/širini + Tajske števke + Tibetanske števke + razvrščanje po tradicionalnem sistemu + Tradicionalne številke + Razvrščanje koren-poteza + Razvrščanje velikih črk najprej + Številke vai + Obratno razvrščanje naglasov + Razvrščanje ob upoštevanju velikih/malih črk + Razvrščanje kana različno + Normalizirano razvrščanje Unicode + Številsko razvrščanje števk + + + BGN + Številsko + Ton + UNGEGN + Accents + Polna širina + Polovična širina + Jamo + Pinjin + Publishing + + + metrični + Angleški + imperialni + + + Jezik: {0} + {0} + Regija: {0} + + + + [a b c č d e f g h i j k l m n o p r s š t u v z ž] + [á à ă â å ä ā æ ç ć đ é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ q ú ù ŭ û ü ū w x y ÿ] + [A B C Č Ć D Đ E F G H I J K L M N O P Q R S Š T U V W X Y Z Ž] + ? + + + + + + + + + + + + + + EEEE, dd. MMMM y G + + + + + dd. MMMM y G + + + + + d. MMM y G + + + + + d. MM. yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d. + y G + M/y G + MMM y G + d. MMM y G + E, d. MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d. M. + E, d. MM. + LLL + d. MMM + E, d. MMM + mm.ss + y + y G + M/y G + d. M. y G + E, d. M. y G + MMM y G + d. MMM y G + E, d. MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + d. – d. M. + d. M. – d. M. + + + E, d. – E, d. M. + E, d. M. – E, d. M. + + + MMM–MMM + + + d.–d. MMM + d. MMM – d. MMM + + + E, d. – E, d. MMM + E, d. MMM – E, d. MMM + + + y–y + + + M.–M. y + M. y – M. y + + + d. M. y – d. M. y + d. M. – d. M. y + d. M. y – d. M. y + + + E, d. – E, d. M. y + E, d. M. – E, d. M. y + E, d. M. y – E, d. M. y + + + MMM – MMM y + MMM y – MMM y + + + d.–d. MMM y + d. MMM – d. MMM y + d. MMM y – d. MMM y + + + E, d. MMM – E, d. MMM y + E, d. MMM – E, d. MMM y + E, d. MMM y – E, d. MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + jan. + feb. + mar. + apr. + maj + jun. + jul. + avg. + sep. + okt. + nov. + dec. + + + j + f + m + a + m + j + j + a + s + o + n + d + + + januar + februar + marec + april + maj + junij + julij + avgust + september + oktober + november + december + + + + + jan + feb + mar + apr + maj + jun + jul + avg + sep + okt + nov + dec + + + j + f + m + a + m + j + j + a + s + o + n + d + + + januar + februar + marec + april + maj + junij + julij + avgust + september + oktober + november + december + + + + + + + ned. + pon. + tor. + sre. + čet. + pet. + sob. + + + n + p + t + s + č + p + s + + + ned. + pon. + tor. + sre. + čet. + pet. + sob. + + + nedelja + ponedeljek + torek + sreda + četrtek + petek + sobota + + + + + ned + pon + tor + sre + čet + pet + sob + + + n + p + t + s + č + p + s + + + ned. + pon. + tor. + sre. + čet. + pet. + sob. + + + nedelja + ponedeljek + torek + sreda + četrtek + petek + sobota + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. četrtletje + 2. četrtletje + 3. četrtletje + 4. četrtletje + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. četrtletje + 2. četrtletje + 3. četrtletje + 4. četrtletje + + + + + + + dop. + pop. + + + + + + pred našim štetjem + naše štetje + + + pr. n. št. + po Kr. + po n. št. + + + + + + EEEE, dd. MMMM y + + + + + dd. MMMM y + + + + + d. MMM y + + + + + d. MM. yy + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d. + E h.mm a + E HH.mm + E h.mm.ss a + E HH.mm.ss + y G + M/y G + MMM y G + d. MMM y G + E, d. MMM y G + h a + HH + h.mm a + HH.mm + h.mm.ss a + HH.mm.ss + L + d. M. + E, d. MM. + LLL + d. MMM + E, d. MMM + mm.ss + y + M/y + d. M. y + E, d. M. y + MMM y + d. MMM y + E, d. MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d.–d. + + + h a – h a + h–h a + + + HH–HH + + + h.mm a – h.mm a + h.mm–h.mm a + h.mm–h.mm a + + + HH.mm–HH.mm + HH.mm–HH.mm + + + h.mm a – h.mm a v + h.mm–h.mm a v + h.mm–h.mm a v + + + HH.mm–HH.mm v + HH.mm–HH.mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M.–M. + + + d. – d. M. + d. M. – d. M. + + + E, d. – E, d. M. + E, d. M. – E, d. M. + + + MMM–MMM + + + d.–d. MMM + d. MMM – d. MMM + + + E, d. – E, d. MMM + E, d. MMM – E, d. MMM + + + y–y + + + M.–M. y + M. y – M. y + + + d. M. y – d. M. y + d. M. – d. M. y + d. M. y – d. M. y + + + E, d. – E, d. M. y + E, d. M. – E, d. M. y + E, d. M. y – E, d. M. y + + + MMM – MMM y + MMM y – MMM y + + + d.–d. MMM y + d. MMM – d. MMM y + d. MMM y – d. MMM y + + + E, d. MMM – E, d. MMM y + E, d. MMM – E, d. MMM y + E, d. MMM y – E, d. MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Doba + + + Leto + Lani + Letos + Naslednje leto + + Čez {0} leto + Čez {0} leti + Čez {0} leta + Čez {0} let + + + Pred {0} letom + Pred {0} leti + Pred {0} leti + Pred {0} leti + + + + Mesec + Prejšnji mesec + Ta mesec + Naslednji mesec + + Čez {0} mesec + Čez {0} meseca + Čez {0} mesece + Čez {0} mesecev + + + Pred {0} mesecem + Pred {0} meseci + Pred {0} meseci + Pred {0} meseci + + + + Teden + Prejšnji teden + Ta teden + Naslednji teden + + Čez {0} teden + Čez {0} tedna + Čez {0} tedne + Čez {0} tednov + + + Pred {0} tednom + Pred {0} tednoma + Pred {0} tedni + Pred {0} tedni + + + + Dan + Predvčerajšnjim + Včeraj + Danes + Jutri + Pojutrišnjem + + Čez {0} dan + Čez {0} dni + Čez {0} dni + Čez {0} dni + + + Pred {0} dnevom + Pred {0} dnevoma + Pred {0} dnevi + Pred {0} dnevi + + + + Dan v tednu + + + Prejšnjo nedeljo + To nedeljo + Naslednjo nedeljo + + + Prejšnji ponedeljek + Ta ponedeljek + Naslednji ponedeljek + + + Prejšnji torek + Ta torek + Naslednji torek + + + Prejšnjo sredo + To sredo + Naslednjo sredo + + + Prejšnji četrtek + Ta četrtek + Naslednji četrtek + + + Prejšnji petek + Ta petek + Naslednji petek + + + Prejšnjo soboto + To soboto + Naslednjo soboto + + + Čas dneva + + + Ura + + Čez {0} h + Čez {0} h + Čez {0} h + Čez {0} h + + + Pred {0} h + Pred {0} h + Pred {0} h + Pred {0} h + + + + Minuta + + Čez {0} min. + Čez {0} min. + Čez {0} min. + Čez {0} min. + + + Pred {0} min. + Pred {0} min. + Pred {0} min. + Pred {0} min. + + + + Sekunda + zdaj + + Čez {0} sekundo + Čez {0} sekundi + Čez {0} sekunde + Čez {0} sekundi + + + Pred {0} sekundo + Pred {0} sekundama + Pred {0} sekundami + Pred {0} sekundami + + + + Območje + + + + +HH.mm;-HH.mm + GMT{0} + GMT + {0} čas + {0} (+1) + {0} (+0) + {1} ({0}) + + neznano + + + Andora + + + Dubaj + + + Tirana + + + Erevan + + + Dumont d’Urville + + + Kordova + + + Dunaj + + + Daka + + + Bruselj + + + Sofija + + + Bahrajn + + + Saint Barthélemy + + + Bermudi + + + Brunej + + + Atikokan + + + St. John’s + + + Kokosovi otoki + + + Kinšasa + + + Lubumbaši + + + Abidžan + + + Velikonočni otok + + + Kašgar + + + Urumči + + + Čongčing + + + Šangaj + + + Kostarika + + + Zelenortski otoki + + + Curaçao + + + Božični otok + + + Nikozija + + + Praga + + + Džibuti + + + Köbenhavn + + + Dominika + + + Alžir + + + Talin + + + Kairo + + + Asmara + + + Kanarski otoki + + + Adis Abeba + + + Fidži + + + Chuuk + + + Pohnpei + + + Faroe + + + Pariz + + + + britanski poletni čas + + + + Akra + + + Nuuk + + + Ittoqqortoormiit + + + Atene + + + Južna Georgia + + + Gvatemala + + + Gvajana + + + Hongkong + + + Budimpešta + + + Džakarta + + + Makasar + + + + irski poletni čas + + + + Jeruzalem + + + Otok Man + + + Kolkata + + + Bagdad + + + Teheran + + + Rim + + + Jamajka + + + Aman + + + Tokio + + + Biškek + + + Komori + + + St. Kitts + + + Pjongjang + + + Seul + + + Kuvajt + + + Kajman + + + Aktau + + + Uralsk + + + Aktobe + + + Kizlorda + + + Almati + + + Bejrut + + + St. Lucia + + + Vilna + + + Luksemburg + + + Monako + + + Rangun + + + Ulan Bator + + + Čojbalsan + + + Macao + + + Martinik + + + Maldivi + + + Ciudad Mexico + + + Katmandu + + + Muškat + + + Karači + + + Varšava + + + Portoriko + + + Azori + + + Lizbona + + + Asunción + + + Katar + + + Bukarešta + + + Moskva + + + Jekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Handiga + + + Sahalin + + + Kamčatka + + + Anadir + + + Rijad + + + Kartum + + + Singapur + + + St. Helena + + + Mogadišu + + + São Tomé + + + Salvador + + + Lower Prince's Quarter + + + Damask + + + Dušanbe + + + Ašgabat + + + Tajpej + + + Užgorod + + + Kijev + + + Zaporožje + + + Beulah, North Dakota + + + New Salem, Severna Dakota + + + Center, Severna Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Taškent + + + Vatikan + + + St. Vincent + + + St. Thomas + + + Hošiminh + + + + Afganistanski čas + + + + + Centralnoafriški čas + + + + + Vzhodnoafriški čas + + + + + Južnoafriški čas + + + + + Zahodnoafriški čas + Zahodnoafriški standardni čas + Zahodnoafriški poletni čas + + + + + Aljaški čas + Aljaški standardni čas + Aljaški poletni čas + + + + + Amazonski čas + Amazonski standardni čas + Amazonski poletni čas + + + + + Centralni čas + Centralni standardni čas + Centralni poletni čas + + + + + Vzhodni čas + Vzhodni standardni čas + Vzhodni poletni čas + + + + + Gorski čas + Gorski standardni čas + Gorski poletni čas + + + + + Pacifiški čas + Pacifiški standardni čas + Pacifiški poletni čas + + + + + Anadirski čas + Anadirski standardni čas + Anadirski poletni čas + + + + + Arabski čas + Arabski standardni čas + Arabski poletni čas + + + + + Argentinski čas + Argentinski standardni čas + Argentinski poletni čas + + + + + Argentinski zahodni čas + Argentinski zahodni standardni čas + Argentinski zahodni poletni čas + + + + + Armenski čas + Armenski standardni čas + Armenski poletni čas + + + + + Atlantski čas + Atlantski standardni čas + Atlantski poletni čas + + + + + Avstralski centralni čas + Avstralski centralni standardni čas + Avstralski centralni poletni čas + + + + + Avstralski centralni zahodni čas + Avstralski centralni zahodni standardni čas + Avstralski centralni zahodni poletni čas + + + + + Avstralski vzhodni čas + Avstralski vzhodni standardni čas + Avstralski vzhodni poletni čas + + + + + Avstralski zahodni čas + Avstralski zahodni standardni čas + Avstralski zahodni poletni čas + + + + + Azerbajdžanski čas + Azerbajdžanski standardni čas + Azerbajdžanski poletni čas + + + + + Azorski čas + Azorski standardni čas + Azorski poletni čas + + + + + Bangladeški čas + Bangladeški standardni čas + Bangladeški poletni čas + + + + + Butanski čas + + + + + Bolivijski čas + + + + + Brasilski čas + Brasilski standardni čas + Brasilski poletni čas + + + + + Brunejski čas + + + + + Kapverdski čas + Kapverdski standardni čas + Kapverdski poletni čas + + + + + Čamorski standardni čas + + + + + Čatamski čas + Čatamski standardni čas + Čatamski poletni čas + + + + + Čilski čas + Čilski standardni čas + Čilski poletni čas + + + + + Kitajski čas + Kitajski standardni čas + Kitajski poletni čas + + + + + Čojbalsanski čas + Čojbalsanski standardni čas + Čojbalsanski poletni čas + + + + + Božičnootoški čas + + + + + Čas: Kokosovi otoki + + + + + Kolumbijski čas + Kolumbijski standardni čas + Kolumbijski poletni čas + + + + + Cookovootoški čas + Cookovootoški standardni čas + Cookovootoški srednjepoletni čas + + + + + Kubanski čas + Kubanski standardni čas + Kubanski poletni čas + + + + + Čas: Davis + + + + + Čas: Dumont-d'Urville + + + + + Vzhodnotimorski čas + + + + + Čas: Velikonočni otok + Standardni čas: Velikonočni otok + Poletni čas: Velikonočni otok + + + + + Ekvadorski čas + + + + + Srednjeevropski čas + Srednjeevropski standardni čas + Srednjeevropski poletni čas + + + + + Vzhodnoevropski čas + Vzhodnoevropski standardni čas + Vzhodnoevropski poletni čas + + + + + Zahodnoevropski čas + Zahodnoevropski standardni čas + Zahodnoevropski poletni čas + + + + + Čas: Falklandsko otočje + Standardni čas: Falklandsko otočje + Poletni čas: Falklandsko otočje + + + + + Fidžijski čas + Fidžijski standardni čas + Fidžijski poletni čas + + + + + Čas: Francoska Gvajana + + + + + Francoski južni in antarktični čas + + + + + Galapaški čas + + + + + Gambierski čas + + + + + Gruzijski čas + Gruzijski standardni čas + Gruzijski poletni čas + + + + + Čas: Gilbertovi otoki + + + + + Greenwiški srednji čas + + + + + Vzhodnogrenlandski čas + Vzhodnogrenlandski standardni čas + Vzhodnogrenlandski poletni čas + + + + + Zahodnogrenlandski čas + Zahodnogrenlandski standardni čas + Zahodnogrenlandski poletni čas + + + + + Zalivski standardni čas + + + + + Gvajanski čas + + + + + Havajski aleutski čas + Havajski aleutski standardni čas + Havajski aleutski poletni čas + + + + + Hongkonški čas + Hongkonški standardni čas + Hongkonški poletni čas + + + + + Hovdski čas + Hovdski standardni čas + Hovdski poletni čas + + + + + Indijski standardni čas + + + + + Indijskooceanski čas + + + + + Indokitajski čas + + + + + Indonezijski osrednji čas + + + + + Indonezijski vzhodni čas + + + + + Indonezijski zahodni čas + + + + + Iranski čas + Iranski standardni čas + Iranski poletni čas + + + + + Irkutški čas + Irkutški standardni čas + Irkutški poletni čas + + + + + Izraelski čas + Izraelski standardni čas + Izraelski poletni čas + + + + + Japonski čas + Japonski standardni čas + Japonski poletni čas + + + + + Petropavlovsk-Kamčatski čas + Petropavlovsk-Kamčatski standardni čas + Petropavlovsk-Kamčatski poletni čas + + + + + Vzhodni kazahstanski čas + + + + + Zahodni kazahstanski čas + + + + + Korejski čas + Korejski standardni čas + Korejski poletni čas + + + + + Kosrajški čas + + + + + Krasnojarški čas + Krasnojarški standardni čas + Krasnojarški poletni čas + + + + + Kirgizistanski čas + + + + + Ekvatorski otoki: Čas + + + + + Čas otoka Lord Howe + Standardni čas otoka Lord Howe + Poletni čas otoka Lord Howe + + + + + Macquarieski čas + + + + + Magadanski čas + Magadanski standardni čas + Magadanski poletni čas + + + + + Malezijski čas + + + + + Maldivski čas + + + + + Čas: Markizni otoki + + + + + Čas: Marshallovi otoki + + + + + Mauricijski čas + Mauricijski standardni čas + Mauricijski poletni čas + + + + + Mawsonski čas + + + + + Ulanbatorski čas + Ulanbatorski standardni čas + Ulanbatorski poletni čas + + + + + Moskovski čas + Moskovski standardni čas + Moskovski poletni čas + + + + + Mjanmarski čas + + + + + Naurujski čas + + + + + Nepalski čas + + + + + Novokaledonijski čas + Novokaledonijski standardni čas + Novokaledonijski poletni čas + + + + + Novozelandski čas + Novozelandski standardni čas + Novozelandski poletni čas + + + + + Novofundlandski čas + Novofundlandski standardni čas + Novofundlandski poletni čas + + + + + Niuejski čas + + + + + Čas: Norfolški otoki + + + + + Fernando de Noronški čas + Fernando de Noronški standardni čas + Fernando de Noronški poletni čas + + + + + Novosibirški čas + Novosibirški standardni čas + Novosibirški poletni čas + + + + + Omški čas + Omški standardni čas + Omški poletni čas + + + + + Pakistanski čas + Pakistanski standardni čas + Pakistanski poletni čas + + + + + Palavski čas + + + + + Papuanski čas + + + + + Paragvajski čas + Paragvajski standardni čas + Paragvajski poletni čas + + + + + Perujski čas + Perujski standardni čas + Perujski poletni čas + + + + + Filipinski čas + Filipinski standardni čas + Filipinski poletni čas + + + + + Čas: Otočje Feniks + + + + + Čas: Saint Pierre in Miquelon + Standardni čas: Saint Pierre in Miquelon + Poletni čas: Saint Pierre in Miquelon + + + + + Pitcairnski čas + + + + + Ponapski čas + + + + + Reunionski čas + + + + + Rotherski čas + + + + + Sahalinski čas + Sahalinski standardni čas + Sahalinski poletni čas + + + + + Samarski čas + Samarski standardni čas + Samarski poletni čas + + + + + Samoanski čas + Samoanski standardni čas + Samoanski poletni čas + + + + + Sejšelski čas + + + + + Singapurski standardni čas + + + + + Salomonovootoški čas + + + + + Južnogeorgijski čas + + + + + Surinamski čas + + + + + Čas: Syowa + + + + + Tahitijski čas + + + + + Tajpejski čas + Tajpejski standardni čas + Tajpejski poletni čas + + + + + Tadžikistanski čas + + + + + Tokelavski čas + + + + + Tongovski čas + Tongovski standardni čas + Tongovski poletni čas + + + + + Čas: Otok Chuuk + + + + + Turkmenistanski čas + Turkmenistanski standardni čas + Turkmenistanski poletni čas + + + + + Tuvalujski čas + + + + + Urugvajski čas + Urugvajski standardni čas + Urugvajski poletni čas + + + + + Uzbekistanski čas + Uzbekistanski standardni čas + Uzbekistanski poletni čas + + + + + Vanuatujski čas + Vanuatujski standardni čas + Vanuatujski poletni čas + + + + + Venezuelski čas + + + + + Vladivostoški čas + Vladivostoški standardni čas + Vladivostoški poletni čas + + + + + Volgograjski čas + Volgograjski standardni čas + Volgograjski poletni čas + + + + + Čas: Vostok + + + + + Čas: Otok Wake + + + + + Čas: Wallis in Futuna + + + + + Jakutski čas + Jakutski standardni čas + Jakutski poletni čas + + + + + Jekaterinburški čas + Jekaterinburški standardni čas + Jekaterinburški poletni čas + + + + + + + , + . + ; + % + + + - + e + × + + + NaN + + + + + #,##0.### + + + + + 0 tisoč + 0 tisoč + 0 tisoč + 0 tisoč + 00 tisoč + 00 tisoč + 00 tisoč + 00 tisoč + 000 tisoč + 000 tisoč + 000 tisoč + 000 tisoč + 0 milijon + 0 milijona + 0 milijone + 0 milijonov + 00 milijon + 00 milijona + 00 milijoni + 00 milijonov + 000 milijon + 000 milijona + 000 milijoni + 000 milijonov + 0 milijarda + 0 milijardi + 0 milijarde + 0 milijard + 00 milijarda + 00 milijardi + 00 milijarde + 00 milijard + 000 milijarda + 000 milijardi + 000 milijarde + 000 milijard + 0 bilijon + 0 bilijona + 0 bilijoni + 0 bilijonov + 00 bilijon + 00 bilijona + 00 bilijoni + 00 bilijonov + 000 bilijon + 000 bilijona + 000 bilijoni( + 000 bilijonov + + + + + 0 tis'.' + 0 tis'.' + 0 tis'.' + 0 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 00 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 000 tis'.' + 0 mio'.' + 0 mio'.' + 0 mio'.' + 0 mio'.' + 00 mio'.' + 00 mio'.' + 00 mio'.' + 00 mio'.' + 000 mio'.' + 000 mio'.' + 000 mio'.' + 000 mio'.' + 0 mrd'.' + 0 mrd'.' + 0 mrd'.' + 0 mrd'.' + 00 mrd'.' + 00 mrd'.' + 00 mrd'.' + 00 mrd'.' + 000 mrd'.' + 000 mrd'.' + 000 mrd'.' + 000 mrd'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 0 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 00 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + 000 bil'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + andorska peseta + + + dirham Združenih arabskih emiratov + + + stari afganistanski afgani (1927–2002) + + + afgani + + + albanski lek + + + armenski dram + + + nizozemsko-antilski gulden + + + angolska kvanza + + + stara angolska kvanza (1977–1990) + + + angolska nova kvanza (1990–2000) + + + konvertibilna angolska kvanza (1995–1999) + + + argentinski avstral + + + argentinski peso (1983–1985) + + + argentinski peso + + + avstrijski šiling + + + avstralski dolar + avstralski dolar + avstralska dolarja + avstralski dolarji + avstralskih dolarjev + + + arubski florin + + + stari azerbajdžanski manat (1993–2006) + + + azerbajdžanski manat + + + bosansko-hercegovski dinar + + + bosansko-hercegovska konvertibilna marka + bosansko-hercegovska konvertibilna marka + bosansko-hercegovski konvertibilni marki + bosansko-hercegovske konvertibilne marke + bosansko-hercegovskih konvertibilnih mark + + + barbadoški dolar + + + bangladeška taka + + + belgijski konvertibilni frank + + + belgijski frank + belgijski frank + belgijska franka + belgijski franki + belgijskih frankov + + + belgijski finančni frank + + + stari bolgarski lev + + + bolgarski lev + + + bahranski dinar + + + burundski frank + + + bermudski dolar + bermudski dolar + bermudski dolar + bermudski dolar + bermudski dolar + + + brunejski dolar + + + bolivijski boliviano + + + bolivijski peso + + + bolivijski mvdol + + + brazilski novi kruzeiro (1967–1986) + + + brazilski kruzado + + + stari brazilski kruzeiro (1990–1993) + + + brazilski real + + + novi brazilski kruzado + + + brazilski kruzeiro + + + bahamski dolar + + + butanski ngultrum + + + burmanski kjat + + + bocvanska pula + + + beloruski novi rubelj (1994–1999) + + + beloruski rubelj + + + belizejski dolar + belizejski dolar + belizejski dolar + belizejski dolar + belizejski dolar + + + kanadski dolar + kanadski dolar + kanadski dolar + kanadski dolar + kanadski dolar + CAD + + + kongoški frank + + + evro WIR + + + švicarski frank + + + frank WIR + + + čilski unidades de fomento + + + čilski peso + + + kitajski juan renminbi + + + kolumbijski peso + + + kolumbijska enota realne vrednosti + + + kostariški kolon + kostariški kolon + kostariški kolon + kostariški kolon + kostariški kolon + + + stari srbski dinar + + + češkoslovaška krona + + + kubanski konvertibilni peso + + + kubanski peso + + + zelenortski eskudo + + + ciprski funt + + + češka krona + + + vzhodnonemška marka + + + nemška marka + nemška marka + nemški marki + nemške marke + nemških mark + + + džibutski frank + + + danska krona + danska krona + danski kroni + danske krone + danskih kron + + + dominikanski peso + + + alžirski dinar + + + ekvadorski sukre + + + ekvadorska enota realne vrednosti (UVC) + + + estonska krona + + + egiptovski funt + + + eritrejska nakfa + + + španska pezeta (račun A) + + + španska pezeta (račun B) + + + španska pezeta + + + etiopski bir + + + evro + evro + evra + evri + evrov + + + finska marka + + + fidžijski dolar + + + falklandski funt + + + francoski frank + + + britanski funt + britanski funt + britanskih funtov + britanski funti + britanskih funtov + + + gruzijski bon lari + + + gruzijski lari + + + stari ganski cedi (1979–2007) + + + ganski cedi + + + gibraltarski funt + + + gambijski dalasi + + + gvinejski frank + + + gvinejski sili + + + ekwele Ekvatorialne Gvineje + + + grška drahma + + + gvatemalski kecal + + + eskudo Portugalske Gvineje + + + peso Gvineje Bissau + + + gvajanski dolar + + + hongkonški dolar + + + honduraška lempira + + + hrvaški dinar + + + hrvaška kuna + + + haitski gurd + + + madžarski forint + + + indonezijska rupija + + + irski funt + + + izraelski funt + + + izraelski šekel + + + indijska rupija + + + iraški dinar + + + iranski rial + + + islandska krona + + + italijanska lira + + + jamajški dolar + + + jordanski dinar + + + japonski jen + ¥ + + + kenijski šiling + + + kirgiški som + + + kamboški riel + + + komorski frank + + + severnokorejski von + + + južnokorejski von + + + kuvajtski dinar + + + kajmanski dolar + + + kazahstanski tenge + + + laoški kip + + + libanonski funt + + + šrilanška rupija + + + liberijski dolar + + + lesoški loti + + + litovski litas + + + litvanski litas + + + luksemburški konvertibilni frank + + + luksemburški frank + + + luksemburški finančni frank + + + latvijski lats + + + latvijski rubelj + + + libijski dinar + + + maroški dirham + + + maroški frank + + + moldavijski leu + + + malgaški ariarij + + + malgaški frank + + + makedonski denar + + + malijski frank + + + mjanmarski kjat + + + mongolski tugrik + + + makavska pataka + + + mavretanska uguija + + + malteška lira + + + malteški funt + + + mavricijska rupija + + + maldivska rufija + + + malavijska kvača + + + mehiški peso + + + mehiški srebrni peso (1861–1992) + + + mehiška inverzna enota (UDI) + + + malezijski ringit + + + mozambiški eskudo + + + stari mozambiški metikal + + + mozambiški metikal + + + namibijski dolar + + + nigerijska naira + + + nikaraška kordova + + + nikaraška zlata kordova + + + nizozemski gulden + + + norveška krona + + + nepalska rupija + + + novozelandski dolar + + + omanski rial + + + panamska balboa + + + perujski inti + + + perujski novi sol + + + perujski sol + + + kina Papue Nove Gvineje + + + filipinski peso + + + pakistanska rupija + + + poljski novi zlot + + + stari poljski zlot (1950–1995) + + + portugalski eskudo + + + paragvajski gvarani + + + katarski rial + + + rodezijski dolar + + + stari romunski leu + + + romunski leu + + + srbski dinar + + + ruski rubelj + + + ruski rubelj (1991–1998) + + + ruandski frank + + + saudski rial + + + solomonski dolar + + + sejšelska rupija + + + stari sudanski dinar + + + sudanski funt + + + stari sudanski funt + + + švedska krona + + + singapurski dolar + + + funt Sv. Helene + + + slovenski tolar + slovenski tolar + slovenska tolarja + slovenski tolarji + slovenskih tolarjev + + + slovaška krona + slovaška krona + slovaški kroni + slovaške krone + slovaških kron + + + sieraleonski leone + + + somalski šiling + + + surinamski dolar + + + surinamski gulden + + + južnosudanski funt + južnosudanski funt + južnosudanska funta + južnosudanski funti + južnosudanskih funtov + + + saotomejska dobra + + + sovjetski rubelj + + + salvadorski kolon + + + sirijski funt + + + svazijski lilangeni + + + tajski baht + + + tadžikistanski rubelj + + + tadžikistanski somoni + + + turkmenski manat + + + turkmenistanski novi manat + + + tunizijski dinar + + + tongovska paanga + + + timorski eskudo + + + stara turška lira + + + nova turška lira + + + dolar Trinidada in Tobaga + + + novi tajvanski dolar + + + tanzanijski šiling + + + ukrajinska grivna + + + ukrajinski karbovanci + + + stari ugandski šiling (1966–1987) + + + ugandski šiling + + + ameriški dolar + ameriški dolar + ameriška dolarja + ameriški dolarji + ameriških dolarjev + $ + + + ameriški dolar, naslednji dan + + + ameriški dolar, isti dan + + + stari urugvajski peso (1975–1993) + + + urugvajski peso + + + uzbeški sum + + + venezuelski bolivar (1871–2008) + + + venezuelski bolivar + + + vientnamski dong + + + vanuatujski vatu + + + samoanska tala + + + CFA frank BEAC + + + srebro + + + zlato + + + evropska sestavljena enota + + + evropska monetarna enota + + + evropska obračunska enota (XBC) + + + evropska obračunska enota (XBD) + + + vzhodnokaribski dolar + + + posebne pravice črpanja + + + evropska denarna enota + + + zlati frank + + + frank UIC + + + CFA frank BCEAO + + + paladij + + + CFP frank + + + platina + + + koda za potrebe testiranja + + + neznana ali neveljavna valuta + + + jemenski dinar + + + jemenski rial + + + stari jugoslovanski dinar + + + novi jugoslovanski dinar + + + jugoslovanski konvertibilni dinar + + + južnoafriški finančni rand + + + južnoafriški rand + + + zambijska kvača (1968–2012) + + + zambijska kvača + + + zairski novi zaire + + + zairski zaire + + + zimbabvejski dolar + + + zimbabvejski dolar (2009) + + + + ⩾{0} + {0}–{1} + + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} ° + {0} ° + {0} ° + {0} ° + + + {0} jutro + {0} jutri + {0} jutra + {0} juter + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} dan + {0} dni + {0} dnevi + {0} dni + + + {0} ura + {0} uri + {0} ure + {0} ur + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} minuta + {0} minuti + {0} minute + {0} minut + + + {0} mesec + {0} meseca + {0} meseci + {0} mesecev + + + {0} sekunda + {0} sekundi + {0} sekunde + {0} sekund + + + {0} teden + {0} tedna + {0} tedni + {0} tednov + + + {0} leto + {0} leti + {0} leta + {0} let + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} svetlobno leto + {0} svetlobni leti + {0} svetlobna leta + {0} svetlobnih let + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} KM + {0} KM + {0} KM + {0} KM + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + {0} °C + {0} °C + + + {0} °F + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} ° + {0} ° + {0} ° + {0} ° + + + {0} jut. + {0} jut. + {0} jut. + {0} jut. + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + {0} d + + + {0} h + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + {0} min + + + {0} m + {0} m + {0} m + {0} m + + + {0} s + {0} s + {0} s + {0} s + + + {0} t + {0} t + {0} t + {0} t + + + {0} l + {0} l + {0} l + {0} l + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} sv. let + {0} sv. leti + {0} sv. leta + {0} sv. let + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} KM + {0} KM + {0} KM + {0} KM + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + {0} °C + {0} °C + + + {0} °F + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0} ° + {0} ° + {0} ° + {0} ° + + + {0} jut. + {0} jut. + {0} jut. + {0} jut. + + + {0} ha + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + {0} d + + + {0} h + {0} h + {0} h + {0} h + + + {0} ms + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + {0} min + + + {0} m + {0} m + {0} m + {0} m + + + {0} s + {0} s + {0} s + {0} s + + + {0} t + {0} t + {0} t + {0} t + + + {0} l + {0} l + {0} l + {0} l + + + {0} cm + {0} cm + {0} cm + {0} cm + + + {0} ft + {0} ft + {0} ft + {0} ft + + + {0} in + {0} in + {0} in + {0} in + + + {0} km + {0} km + {0} km + {0} km + + + {0} ly + {0} sv. l. + {0} sv. l. + {0} sv. l. + + + {0} m + {0} m + {0} m + {0} m + + + {0} mi + {0} mi + {0} mi + {0} mi + + + {0} mm + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + {0} pm + + + {0} yd + {0} yd + {0} yd + {0} yd + + + {0} g + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + {0} kg + + + {0} oz + {0} oz + {0} oz + {0} oz + + + {0} lb + {0} lb + {0} lb + {0} lb + + + {0} KM + {0} KM + {0} KM + {0} hp + + + {0} kW + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + {0} mi/h + + + {0} ° + {0} ° + {0} ° + {0} ° + + + {0} °F + {0} °F + {0} °F + {0} °F + + + {0} km³ + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + {0} l + + + + h.mm + + + h.mm.ss + + + m.ss + + + + + {0}, {1} + {0}, {1} + {0} in {1} + {0} in {1} + + + + + da:d + ne:n + + + + diff --git a/library/Zend/Locale/Data/sl_SI.xml b/library/Zend/Locale/Data/sl_SI.xml new file mode 100755 index 000000000..01a495426 --- /dev/null +++ b/library/Zend/Locale/Data/sl_SI.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sn.xml b/library/Zend/Locale/Data/sn.xml new file mode 100755 index 000000000..67670bd85 --- /dev/null +++ b/library/Zend/Locale/Data/sn.xml @@ -0,0 +1,754 @@ + + + + + + + + + + + + chiAkani + chiAmaric + chiArabu + chiBelarusi + chiBulgarian + chiBengali + chiCzech + chiJerimani + chiGreek + Chirungu + chiSpanish + chiPeshiya + chiFurenchi + chiHausa + chiHindi + chiHungari + chiIndonesia + chiIgbo + chiTariana + chiJapani + chiJava + chiKhema + chiKoria + chiMalay + chiBurma + chiNepali + chiDutch + chiPunjabi + chiPolish + chiPutukezi + chiRomanian + chiRashiya + chiRwanda + chiShona + chiSomali + chiSwedish + chiTamil + chiThai + chiTurkish + chiUkrenia + chiUrdu + chiVietnam + chiYoruba + chiChinese + chiZulu + + + Andora + United Arab Emirates + Afuganistani + Antigua ne Barbuda + Anguila + Albania + Armenia + Netherlands Antilles + Angola + Ajentina + Samoa ye Amerika + Austria + Australia + Arubha + Azabajani + Boznia ne Herzegovina + Barbados + Bangladeshi + Beljium + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Burunei + Bolivia + Brazil + Bahama + Bhutani + Botswana + Belarusi + Belize + Kanada + Democratic Republic of the Congo + Central African Republic + Kongo + Switzerland + Ivory Coast + Zvitsuwa zveCook + Chile + Kameruni + China + Kolombia + Kostarika + Cuba + Zvitsuwa zveCape Verde + Cyprus + Czech Republic + Germany + Djibouti + Denmark + Dominica + Dominican Republic + Aljeria + Ecuador + Estonia + Egypt + Eritrea + Spain + Etiopia + Finland + Fiji + Zvitsuwa zveFalklands + Micronesia + France + Gabon + United Kingdom + Grenada + Georgia + French Guiana + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Equatorial Guinea + Greece + Guatemala + Guam + Guinea-Bissau + Guyana + Honduras + Korasia + Haiti + Hungary + Indonesia + Ireland + Izuraeri + India + British Indian Ocean Territory + Iraq + Iran + Iceland + Italy + Jamaica + Jordan + Japan + Kenya + Kyrgyzstan + Kambodia + Kiribati + Komoro + Saint Kitts and Nevis + Korea, North + Korea, South + Kuwait + Zvitsuwa zveCayman + Kazakhstan + Laos + Lebanon + Saint Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Lithuania + Luxembourg + Latvia + Libya + Morocco + Monaco + Moldova + Madagascar + Zvitsuwa zveMarshall + Macedonia + Mali + Myanmar + Mongolia + Zvitsuwa zvekumaodzanyemba eMariana + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambique + Namibia + New Caledonia + Niger + Chitsuwa cheNorfolk + Nigeria + Nicaragua + Netherlands + Norway + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + French Polynesia + Papua New Guinea + Philippines + Pakistan + Poland + Saint Pierre and Miquelon + Pitcairn + Puerto Rico + Portugal + Palau + Paraguay + Qatar + Réunion + Romania + Russia + Rwanda + Saudi Arabia + Zvitsuwa zvaSolomon + Seychelles + Sudan + Sweden + Singapore + Saint Helena + Slovenia + Slovakia + Sierra Leone + San Marino + Senegal + Somalia + Suriname + São Tomé and Príncipe + El Salvador + Syria + Swaziland + Zvitsuwa zveTurk neCaico + Chadi + Togo + Thailand + Tajikistan + Tokelau + East Timor + Turkmenistan + Tunisia + Tonga + Turkey + Trinidad and Tobago + Tuvalu + Taiwan + Tanzania + Ukraine + Uganda + Amerika + Uruguay + Uzbekistan + Vatican State + Saint Vincent and the Grenadines + Venezuela + Zvitsuwa zveHingirandi + Zvitsuwa zveAmerika + Vietnam + Vanuatu + Wallis and Futuna + Samoa + Yemen + Mayotte + South Africa + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Ndi + Kuk + Kur + Kub + Chv + Chk + Chg + Nya + Gun + Gum + Mb + Zvi + + + Ndira + Kukadzi + Kurume + Kubvumbi + Chivabvu + Chikumi + Chikunguru + Nyamavhuvhu + Gunyana + Gumiguru + Mbudzi + Zvita + + + + + N + K + K + K + C + C + C + N + G + G + M + Z + + + + + + + Svo + Muv + Chip + Chit + Chin + Chis + Mug + + + Svondo + Muvhuro + Chipiri + Chitatu + China + Chishanu + Mugovera + + + + + S + M + C + C + C + C + M + + + + + + + K1 + K2 + K3 + K4 + + + Kota 1 + Kota 2 + Kota 3 + Kota 4 + + + + + + Kristo asati auya + Kristo ashaya + + + BC + AD + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Mukore + + + Gore + + + Mwedzi + + + Vhiki + + + Zuva + Nezuro + Nhasi + Mangwana + + + Zuva revhiki + + + Awa + + + Mineti + + + Sekondi + + + Nguva + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Diramu re United Arab Emirates + + + Kwanza ye Angola + + + Dora re Australia + + + Dhinari re Bhahareni + + + Furenki re Bhurundi + + + Pura re Botswana + + + Dora re Kanada + + + Furenki re Kongo + + + Furenki re Swisi + + + Yuan Renminbi ye China + + + Dhora re Escudo + + + Furenki re Jibhuti + + + Dhinari re Aljeria + + + Paundi re Ijipita + + + Nakfa re Eritrea + + + Dhora re Etiopia + + + Yuro + + + Paundi ye Bhiriteni + + + Sedi ye Ghana + + + Dalasi ye Gambia + + + Furenki re Gine + + + Rupe re India + + + Yeni ye Japani + + + Shiringi ye Kenya + + + Furenki re Komoro + + + Dora re Liberia + + + Loti ye Lesoto + + + Dinari re Libya + + + Dirham ye Moroko + + + Furenki re Malagasi + + + Ugwiya ye Moritania + + + Rupi ye Morishasi + + + Kwacha ye Malawi + + + Metika ye Mozambiki + + + Dora re Namibia + + + Naira ye Nijeria + + + Furenki re Ruwanda + + + Riyali re Saudi + + + Rupi re Seyisheri + + + Dinari re Sudani + + + Paundi re Sudani + + + Paundi re Senti Helena + + + Leoni + + + Shiringi re Somalia + + + Dobra re Sao Tome ne Principe + + + Lilangeni + + + Dinari re Tunisia + + + Shiringi re Tanzania + + + Shiringi re Uganda + + + Dora re Amerika + + + Furenki CFA BEAC + + + Furenki CFA BCEAO + + + Randi + + + Kwacha ye Zambia (1968–2012) + + + Kwacha ye Zambia + + + Dora re Zimbabwe + + + + + + Hongu:H + Kwete:K + + + + diff --git a/library/Zend/Locale/Data/sn_ZW.xml b/library/Zend/Locale/Data/sn_ZW.xml new file mode 100755 index 000000000..b2bfa450b --- /dev/null +++ b/library/Zend/Locale/Data/sn_ZW.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/so.xml b/library/Zend/Locale/Data/so.xml new file mode 100755 index 000000000..0df54ceb5 --- /dev/null +++ b/library/Zend/Locale/Data/so.xml @@ -0,0 +1,869 @@ + + + + + + + + + + + + Afrikaanays + Akan + Axmaari + Carabi + Asaamiis + Azerbaijan + Beleruusiyaan + Bulgeeriyaan + Bangaali + Bereton + Boosniya + Katalaan + Jeeg + Welsh + Danmarkays + Jarmal + Jarmal (Iswiiserlaand) + Giriik + Ingiriisi + Ingiriisi (Boqortooyada Midowday) + Ingiriisi (Maraykan) + Isberento + Isbaanish + Isbaanishka Laatiin Ameerika + Isbaanish (Isbayn) + Istooniyaan + Basquu + Faarisi + Fiinlaandees + Tagalog + Farowsi + Faransiis + Faransiis (Iswiiserlaand) + Firiisiyan Galbeed + Ayrish + Iskot Giilik + Galiisiyaan + Guraani + Gujaraati + Hawsa + Cibri + Hindi + Koro'eeshiyaan + Hangariyaan + Armeeniyaan + Interlinguwa + Indunuusiyaan + Interlingue + Igbo + Ayslandays + Talyaani + Jabbaaniis + Jafaaniis + Joorijiyaan + Kamboodhian + Kannadays + Kuuriyaan + Kurdishka + Kirgiis + Laatiin + Lingala + Laothian + Lituwaanays + Laatfiyaan + Masadooniyaan + Malayalam + Mangooli + Maarati + Malaay + Maltiis + Burmese + Nebaali + Holandays + Nowrwejiyan (naynoroski) + Af Noorwiijiyaan + Okitaan + Oriya + Bunjaabi + Boolish + Bashtuu + Boortaqiis + Boortaqiiska Baraasiil + Boortaqiis (Boortuqaal) + Romanka + Ruush + Rwanda + Sanskrit + SINDHI + Serbiyaan + Sinhaleys + Isloofaak + Islofeeniyaan + Soomaali + Albaaniyaan + Seerbiyaan + Sesooto + Suudaaniis + Swiidhis + Sawaaxili + Tamiil + Teluugu + Taaylandays + Tigrinya + Turkumaanish + Kiligoon + Turkish + Tiwiyan + UIGHUR + Yukreeniyaan + Af aan la aqoon ama aan sax ahayn + Urduu + Usbakis + Fiitnaamays + Hoosta + Yadhish + Yoruuba + Jayniis + Zuulu + + + + + + + + Afrikada Bari + Aasiyada Bari + Yurubta Bari + Andora + Imaaraadka Carabta ee Midoobay + Afgaanistaan + Antigua iyo Barbuda + Anguilla + Albaaniya + Armeeniya + Netherlands Antilles + Angoola + Arjantiin + Samowa Ameerika + Awsteriya + Awstaraaliya + Aruba + Azerbajaan + Bosniya Hersigoviina + Baarbadoos + Bangaaladheesh + Biljam + Burkiina Faaso + Bulgaariya + Baxreyn + Burundi + Biniin + Bermuuda + Buruneeya + Boliifiya + Braasiil + Bahaamas + Bhutan + Botuswaana + Belarus + Belize + Kanada + Jamhuuriyadda Dimuquraadiga Kongo + Jamhuuriyadda Afrikada Dhexe + Kongo + Swiiserlaand + Ivory coast + Jaziiradda Cook + Jili + Kaameruun + Shiinaha + Kolombiya + Kosta Riika + Kuuba + Cape Verde Islands + Qubrus + Jamhuuriyadda Jek + Jarmal + Jabuuti + Denmark + Domeenika + Jamhuuriyadda Domeenika + Aljeeriya + Ikuwadoor + Estooniya + Masar + Eretereeya + Isbeyn + Itoobiya + Finland + Fiji + Jaziiradaha Fooklaan + Micronesia + Faransiis + Gaaboon + United Kingdom + Giriinaada + Joorjiya + French Guiana + Gaana + Gibraltar + Greenland + Gambiya + Gini + Guadeloupe + Equatorial Guinea + Giriig + Guwaatamaala + Guam + Gini-Bisaaw + Guyana + Honduras + Korweeshiya + Hayti + Hangeri + Indoneesiya + Ayrlaand + Israaʼiil + Hindiya + British Indian Ocean Territory + Ciraaq + Iiraan + Iislaand + Talyaani + Jameyka + Urdun + Jabaan + Kiiniya + Kirgistaan + Kamboodiya + Kiribati + Komooros + Saint Kitts and Nevis + Kuuriyada Waqooyi + Kuuriyada Koonfureed + Kuwayt + Cayman Islands + Kasaakhistaan + Laos + Lubnaan + Saint Lucia + Liechtenstein + Sirilaanka + Laybeeriya + Losooto + Lituweeniya + Luksemboorg + Latfiya + Liibiya + Marooko + Moonako + Moldofa + Madagaskar + Marshall Islands + Makadooniya + Maali + Myanmar + Mongooliya + Northern Mariana Islands + Martinique + Muritaaniya + Montserrat + Maalda + Murishiyoos + Maaldiqeen + Malaawi + Meksiko + Malaysia + Musambiig + Namiibiya + New Caledonia + Nayjer + Norfolk Island + Nayjeeriya + Nikaraaguwa + Netherlands + Noorweey + Nebaal + Nauru + Niue + Neyuusilaand + Cumaan + Panama + Peru + French Polynesia + Papua New Guinea + Filibiin + Bakistaan + Booland + Saint Pierre and Miquelon + Pitcairn + Puerto Rico + Falastiin Daanka galbeed iyo Qasa + Bortuqaal + Palau + Paraguay + Qadar + Réunion + Rumaaniya + Ruush + Ruwanda + Sacuudi Carabiya + Solomon Islands + Sishelis + Suudaan + Iswidhan + Singaboor + Saint Helena + Slovenia + Slovakia + Siraaliyoon + San Marino + Sinigaal + Soomaaliya + Suriname + Koonfur Suudaan + São Tomé and Príncipe + El Salvador + Suuriya + Iswaasilaand + Turks and Caicos Islands + Jaad + Toogo + Taylaand + Tajikistan + Tokelau + Timorka bari + Turkmenistan + Tuniisiya + Tonga + Turki + Trinidad and Tobago + Tuvalu + Taywaan + Tansaaniya + Ukrayn + Ugaanda + Maraykanka + Uruguwaay + Uusbakistaan + Faatikaan + Saint Vincent and the Grenadines + Fenisuweela + British Virgin Islands + U.S. Virgin Islands + Fiyetnaam + Vanuatu + Wallis and Futuna + Samoa + Yaman + Mayotte + Koonfur Afrika + Saambiya + Simbaabwe + Far aan la aqoon amase aan saxnayn + + + Habeentiris + Lacag + + + Habeentiriska yuhuudda + Habeentiriska islaamka + Habeentiriska jabbaanka + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, MMMM dd, y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E, MMM dd - E, MMM dd, y + E, MMM dd - E, MMM dd, y + E, MMM dd, y - E, MMM dd, y + + + + + + + + + Kob + Lab + Sad + Afr + Sha + Lix + Tod + Sid + Sag + Tob + KIT + LIT + + + Bisha Koobaad + Bisha Labaad + Bisha Saddexaad + Bisha Afraad + Bisha Shanaad + Bisha Lixaad + Bisha Todobaad + Bisha Sideedaad + Bisha Sagaalaad + Bisha Tobnaad + Bisha Kow iyo Tobnaad + Bisha Laba iyo Tobnaad + + + + + K + L + S + A + S + L + T + S + S + T + K + L + + + + + + + Axd + Isn + Tal + Arb + Kha + Jim + Sab + + + Axad + Isniin + Talaado + Arbaco + Khamiis + Jimco + Sabti + + + + + A + I + T + A + K + J + S + + + + + + + R1 + R2 + R3 + R4 + + + Rubaca 1aad + Rubaca 2aad + Rubaca 3aad + Rubaca 4aad + + + + + + + sn. + gn. + + + + + + Ciise ka hor (CS) + Ciise ka dib (CS) + + + CK + CD + + + + + + EEEE, MMMM dd, y + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + h a - h a v + h-h a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E, MMM dd - E, MMM dd, y + E, MMM dd - E, MMM dd, y + E, MMM dd, y - E, MMM dd, y + + + + + + + + Qarni + + + Sanad + + + Bil + + + Toddobaad + + + Maalin + Shalay + Maanta + Berri + + + Maalinta toddobaadka + + + sn./gn. + + + Saacad + + + Daqiiqad + + + Il biriqsi + + + Xadka waqtiga + + + + + + . + , + + + + + ¤#,##0.00 + + + + + + Faran Jabbuuti + + + Birta Itoobbiya + + + Yuuroo + + + Riyaalka Sacuudiga + + + Shilin soomaali + S + + + Shilin Tansaani + + + Doollar maraykan + + + Lacag aan la qoon ama aan saxnayn + + + + + + haa:h + maya:m + + + + diff --git a/library/Zend/Locale/Data/so_DJ.xml b/library/Zend/Locale/Data/so_DJ.xml new file mode 100755 index 000000000..11acf5ddb --- /dev/null +++ b/library/Zend/Locale/Data/so_DJ.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Fdj + + + + diff --git a/library/Zend/Locale/Data/so_ET.xml b/library/Zend/Locale/Data/so_ET.xml new file mode 100755 index 000000000..a8f63c3ac --- /dev/null +++ b/library/Zend/Locale/Data/so_ET.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Br + + + + diff --git a/library/Zend/Locale/Data/so_KE.xml b/library/Zend/Locale/Data/so_KE.xml new file mode 100755 index 000000000..066cf9a1b --- /dev/null +++ b/library/Zend/Locale/Data/so_KE.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Ksh + + + + diff --git a/library/Zend/Locale/Data/so_SO.xml b/library/Zend/Locale/Data/so_SO.xml new file mode 100755 index 000000000..b0ce8cc42 --- /dev/null +++ b/library/Zend/Locale/Data/so_SO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sq.xml b/library/Zend/Locale/Data/sq.xml new file mode 100755 index 000000000..8f7bb50cd --- /dev/null +++ b/library/Zend/Locale/Data/sq.xml @@ -0,0 +1,4623 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Abkazisht + Afrikane + Amarike + Arabisht + Arabishte Standarde Moderne + Asamezisht + Azere + Bjellorusisht + Bullgarisht + Bengalisht + Tibetiane + Breton + Boshnjakisht + Katalonisht + Çekisht + Uellsisht + Danisht + Gjermanisht + Gjermanisht (Zvicër-Dialekti i Alpeve) + Greqisht + Anglisht + Anglisht (Britani) + Anglisht (Britani) + Anglisht (SHBA) + Esperanto + Spanjisht + Spanjisht (Europë) + Estonisht + Baske + Persisht + Finlandisht + Filipinase + Fixhiane + Faroisht + Frëngjisht + Frizianisht + Irlandisht + Galisht + Galike + Guarane + Gjermanisht (Zvicër) + Guxharatisht + Hausisht + Havajane + Hebraisht + Indisht + Kroatisht + Haitianshe + Hungarisht + Armenisht + Interlingua + Indonezisht + Gjuha nderkombtare + Igbe + Islandisht + Italisht + Japonisht + Javanisht + Gjeorgjisht + Kazake + Kmere (Kamboxhiane) + Kanada + Koreanisht + Kashmire + Kurde + Kirgize + Latinisht + Luksemburgase + Lingala + Laosisht + Lituanisht + Letonisht + Malageze + Maorisht + Maqedonisht + Malajalame + Mongolisht + Maratisht + Malajisht + Malteze + Birmanisht + Bokmalisht (Norvegji) + Nepalisht + Holandisht + Fleminge + Ninorske (Norvegji) + Norvegjisht + Oksitanisht + Orije + Panxhabe + Polonisht + Pashto + Portugalisht + Portugalisht (Europë) + Keçua + Rome + Rumanisht + Rusisht + Sanskritisht + Sindi + Serbo-Kroatisht + Sinhale + Sllovakisht + Sllovenisht + Somalisht + Shqip + Serbisht + Sesotho + Sundanisht + Suedisht + Suahili + Tamile + Teluge + Taxhikisht + Tajlandisht + Tigrinje + Turkmenisht + Klingon + Tonganisht + Turqisht + Tatarisht + Twi + Ujgure + Ukrainisht + E panjohur + Urdu + Uzbeke + Vietnamisht + Ulufisht + Xhose + Jiden + Jorubisht + Tamazishte Standarde Marokene + Kinezisht + Kinezçe e Thjeshtuar + Kinezçe Tradicionale + Zulu + Mungesë përmbajtjeje gjuhësore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Botë + Afrikë + Amerika e Veriut + Amerika e Jugut + Oqeani + Afrika Perëndimore + Amerika Qendrore + Afrika Lindore + Afrika Veriore + Afrika e Mesme + Afrika Jugore + Amerikë + Amerika Veriore + Karaibe + Azia Lindore + Azia Jugore + Azia Jug-Lindore + Europa Jugore + Australazia + Melanezia + Rajoni Mikronezian + Polinezia + Azi + Azia Qendrore + Azia Perëndimore + Europë + Europa Lindore + Europa Veriore + Europa Perëndimore + Amerika Latine + Ishulli Asenshion + Andorrë + Emiratet e Bashkuara Arabe + Afganistan + Antigua e Barbuda + Anguilë + Shqipëri + Armeni + Angolë + Antarktikë + Argjentinë + Samoa Amerikane + Austri + Australi + Arubë + Ishujt Aland + Azerbajxhan + Bosnjë e Hercegovinë + Barbados + Bangladesh + Belgjikë + Burkina Faso + Bullgari + Bahrein + Burund + Benin + Shën Bartolemeo + Bermudë + Brunej + Bolivi + Karaibet Holandeze + Brazil + Bahamas + Butan + Ishujt Bove + Botsvanë + Bjellorusi + Beliz + Kanada + Ishujt Kokos + Kongo-Kinshasa + Kongo (RDK) + Republika Afrikano-Qendrore + Kongo-Brazavilë + Kongo (Republika) + Zvicër + Bregu i Fildishtë + Ishujt Kuk + Kili + Kamerun + Kinë + Kolumbi + Ishulli Klipërton + Kosta Rika + Kubë + Kepi i Gjelbër + Kuraçao + Ishulli i Krishtlindjes + Qipro + Republika Çeke + Gjermani + Diego Garsia + Xhibut + Danimarkë + Dominikë + Republika Dominikane + Algjeri + Theuta e Melila + Ekuador + Estoni + Egjipt + Saharaja Perëndimore + Eritre + Spanjë + Etiopi + Bashkimi Europian + Finlandë + Fixhi + Ishujt Folkland + Ishujt Folkland (Ishujt Malvine) + Mikronezi + Ishujt Faroe + Francë + Gabon + Mbretëria e Bashkuar + Mbretëria e Bashkuar + Grenadë + Gjeorgji + Guajana Franceze + Guernsej + Ganë + Gjibraltar + Grenlandë + Gambi + Guine + Guadalupe + Guineja Ekuatoriale + Greqi + Xhorxha Jugore dhe Ishujt Senduiç të Jugut + Guatemalë + Guam + Guine-Bisau + Guajanë + RVAK i Hong Kongut + Hong Kong + Ishulli Hërd dhe Ishujt Mekdonald + Honduras + Kroaci + Haiti + Hungari + Ishujt Kanarie + Indonezi + Irlandë + Izrael + Ishulli i Manit + Indi + Territori Britanik i Oqeanit Indian + Irak + Iran + Islandë + Itali + Xhersej + Xhamajkë + Jordani + Japoni + Kenia + Kirgistan + Kamboxhia + Qiribati + Komore + Shën Kits e Nevis + Koreja e Veriut + Koreja e Jugut + Kuvajt + Ishujt Kajman + Kazakistan + Laos + Liban + Shën Luçia + Lihtënshtajn + Sri Lankë + Liberi + Lesoto + Lituani + Luksemburg + Letoni + Libi + Marok + Monako + Moldavi + Mali i Zi + Shën Martin + Madagaskar + Ishujt Marshall + Maqedoni + Maqedoni (IRJM) + Mali + Mianmar (Burma) + Mongoli + RVAK i Makaos + Makao + Ishujt e Marianës Veriore + Ishulli i Martinikut + Mauritani + Ishulli i Montseratit + Maltë + Mauritius + Maldive + Malavi + Meksikë + Malajzi + Mozambik + Namibi + Kaledonia e Re + Niger + Ishujt Norfolk + Nigeri + Nikaragua + Holandë + Norvegji + Nepal + Nauru + Niue + Zelanda e Re + Oman + Panama + Peru + Polinezia Franceze + Papua Guineja e Re + Filipine + Pakistan + Poloni + Shën Peir dhe Mikuelon + Ishujt Pitkern + Porto Riko + Territoret palestineze + Palestinë + Portugali + Palau + Paraguai + Katar + Oqeania e Largët (Lindja e Largët) + Reunion + Rumani + Serbi + Rusi + Ruandë + Arabi Saudite + Ishujt Solomon + Sishel + Sudan + Suedi + Singapor + Shën Helena + Slloveni + Svalbard e Zhan Majen + Sllovaki + Siera Leone + San Marino + Senegali + Somali + Surinami + Sudani i Jugut + Sao Tome e Prinsipe + El Salvador + Shën Martin (Sint Maarten-pjesa e Mbretërisë së Holandës) + Siri + Svazilandë + Tristan da Kuna + Ishujt Turke dhe Kaike + Çad + Territoret Australiane Franceze + Togo + Tajlandë + Taxhikistan + Tokelau + Timori Lindor + Turkmenistan + Tunizi + Tonga + Turqi + Trinidad e Tobago + Tuvalu + Tajvan + Tanzani + Ukrainë + Ugandë + Ishujt periferikë të SHBA-së + Shtetet e Bashkuara të Amerikës + SHBA + Uruguai + Uzbekistan + Vatikan + Shën Vinsent dhe Grenadinet + Venezuelë + Ishujt e Virgjër Britanikë + Ishujt e Virgjër Amerikanë + Vietnam + Vanuatu + Uollis e Futina + Samoa + Kosovë + Jemen + Majotë + Afrika e Jugut + Zambi + Zimbabve + Rajon i panjohur + + + Kalendar + Radhitje + Valuta + Numra + + + Shifra indo-arabe + Shifra indo-arabe të zgjatura + Numra armenë + Numra armenë të vegjël + Numra bengalë + Radhitje e kinezishtes tradicionale - Big5 + Kalendari Budist + Kalendari Kinez + Kalendari Koptik + Kalendari Dangi + Shifra devanagari + Radhitje fjalori + Radhitje Unikode e parazgjedhur + Numra etiopas + Kalendari Etiopas + Kalendari Etiopas Amete Alem + Shifra me largësi të brendshme + Radhitje e kinezishtes së thjeshtësuar - GB2312 + Numra gjeorgjianë + Kalendari Gregorian + Numra grekë + Numra grekë të vegjël + Shifra guxharati + Shifra gurmuki + Numra dhjetorë kinezë + Numra të kinezishtes së thjeshtësuar + Numra financiarë të kinezishtes së thjeshtësuar + Numra të kinezishtes tradicionale + Numra financiarë të kinezishtes tradicionale + Numra hebraikë + Kalendari Hebraik + Kalendari Kombëtar Indian + Kalendari Islamik + Kalendari Islamik (tabelor, periudha civile) + Kalendari Islamik (tabelor, epoka austromikale) + Kalendari Islamik (Um al-Qura) + Kalendari ISO-8601 + Kalendari Japonez + Numra japonezë + Numra financiarë japonezë + Shifra kmere + Shifra Kenëda + Shifra lao + Shifra perëndimore-latine + Shifra malajalame + Shifra mianmari + Shifra orije + Kalendari Persian + Radhitje libri telefonik + Radhitje pinini + Radhitje e reformuar + Kalendari Kinez (Minguo) + Numra romakë + Numra romakë të vegjël + Kërkim i përgjithshëm + Radhitje standarde + Numra tamile tradicionale + Shifra tamile + Shifra teluguje + Shifra tajlandeze + Shifra tibetiane + + + metrik + britanik + amerikan + + + Gjuha: {0} + Shkrimi: {0} + Rajoni: {0} + + + + [a b c ç d {dh} e ë f g {gj} h i j k l {ll} m n {nj} o p q r {rr} s {sh} t {th} u v x {xh} y z {zh}] + [w] + [A B C Ç D {DH} E Ë F G {GJ} H I J K L {LL} M N {NJ} O P Q R {RR} S {SH} T {TH} U V X {XH} Y Z {ZH}] + {0}… + {0} … + ? + + + « + » + + + + + + + + + + EEEE dd MMMM y G + + + + + dd MMMM y G + + + + + dd/MMM/y G + + + + + dd/MM/yy GGGGG + + + + + + + {1} 'në' {0} + + + + + {1} 'në' {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h.a + H + h.mm.a + H.mm + h.mm.ss.a + H.mm.ss + L + d/M + E d/M + MM-dd + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm.ss + y G + y G + M/y G + d/M/y GGGGG + E d/M/y G + MMM y G + d MMM y G + E d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + d-d + + + h.a - h.a + h.-h.a + + + h.mm.a - h.mm.a + h.mm.-h.mm.a + h.mm.-h.mm.a + + + h.mm.a - h.mm.a v + h.mm.-h.mm.a v + h.mm.-h.mm.a v + + + h.a - h.a v + h.-h.a v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E dd/MM - E dd/MM + E dd/MM - E dd/MM + + + MMM-MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E dd - E dd MMM + E dd MMM - E dd MMM + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + E dd/MM/y - E dd/MM/y G + + + MMM - MMM y G + MMM y - MMM y G + + + dd-dd MMM y G + dd MMM - dd MMM y G + dd MMM y - dd MMM y G + + + E d - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + MMMM-MMMM y G + MMMM-MMMM y G + + + + + + + + + Jan + Shk + Mar + Pri + Maj + Qer + Kor + Gsh + Sht + Tet + Nën + Dhj + + + J + S + M + P + M + Q + K + G + S + T + N + D + + + janar + shkurt + mars + prill + maj + qershor + korrik + gusht + shtator + tetor + nëntor + dhjetor + + + + + Jan + Shk + Mar + Pri + Maj + Qer + Kor + Gsh + Sht + Tet + Nën + Dhj + + + J + S + M + P + M + Q + K + G + S + T + N + D + + + janar + shkurt + mars + prill + maj + qershor + korrik + gusht + shtator + tetor + nëntor + dhjetor + + + + + + + Die + Hën + Mar + Mër + Enj + Pre + Sht + + + D + H + M + M + E + P + S + + + Die + Hën + Mar + Mër + Enj + Pre + Sht + + + e diel + e hënë + e martë + e mërkurë + e enjte + e premte + e shtunë + + + + + Die + Hën + Mar + Mër + Enj + Pre + Sht + + + D + H + M + M + E + P + S + + + Die + Hën + Mar + Mër + Enj + Pre + Sht + + + e diel + e hënë + e martë + e mërkurë + e enjte + e premte + e shtunë + + + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + tremujori i parë + tremujori i dytë + tremujori i tretë + tremujori i katërt + + + + + T1 + T2 + T3 + T4 + + + 1 + 2 + 3 + 4 + + + tremujori I + tremujori II + tremujori III + tremujori IV + + + + + + + AM + PM + + + paradite + pasdite + + + + + + para erës së re + para erës sonë + erës së re + erës sonë + + + p.e.r. + p.e.s + e.r. + e.s. + + + p.e.r. + p.e.s. + e.r. + e.s. + + + + + + EEEE, dd MMMM y + + + + + dd MMMM y + + + + + dd/MM/y + + + + + dd/MM/yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} 'në' {0} + + + + + {1} 'në' {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E, d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd/MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y + M/y + dd/MM/y + E, d/M/y + MMM y + d MMM y + E, d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + E, dd/MM - E, dd/MM + E, dd/MM - E, dd/MM + + + MMM - MMM + + + dd-dd MMM + dd MMM - dd MMM + + + E, dd - E, dd MMM + E, dd MMM - E, dd MMM + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + E, dd/MM/y - E, dd/MM/y + + + MMM-MMM y + MMM y - MMM y + + + dd-dd MMM y + dd MMM - dd MMM y + dd MMM y - dd MMM y + + + E, dd - E, dd MMM y + E, dd MMM - E, dd MMM y + E, dd MMM y - E, dd MMM y + + + MMMM - MMMM y + MMMM y - MMMM y + + + + + + + + erë + + + vit + vitin e kaluar + këtë vit + vitin e ardhshëm + + pas {0} viti + pas {0} vjetësh + + + para {0} viti + para {0} vjetësh + + + + muaj + muajin e kaluar + këtë muaj + muajin e ardhshëm + + pas {0} muaji + pas {0} muajsh + + + para {0} muaji + para {0} muajsh + + + + javë + javën e kaluar + këtë javë + javën e ardhshme + + pas {0} jave + pas {0} javësh + + + para {0} jave + para {0} javësh + + + + ditë + dje + sot + nesër + + pas {0} dite + pas {0} ditësh + + + para {0} dite + para {0} ditësh + + + + ditë e javës + + + të dielën e kaluar + këtë të diel + të dielën e ardhshme + + + të hënën e kaluar + këtë të hënë + të hënën e ardhshme + + + të martën e kaluar + këtë të martë + të martën e ardhshme + + + të mërkurën e kaluar + këtë të mërkurë + të mërkurën e ardhshme + + + të enjten e kaluar + këtë të enjte + të enjten e ardhshme + + + të premten e kaluar + këtë të premte + të premten e ardhshme + + + të shtunën e kaluar + këtë të shtunë + të shtunën e ardhshme + + + periudhë e ditës + + + orë + + pas {0} ore + pas {0} orësh + + + para {0} ore + para {0} orësh + + + + minutë + + pas {0} minute + pas {0} minutash + + + para {0} minute + para {0} minutash + + + + sekondë + tani + + pas {0} sekonde + pas {0} sekondash + + + para {0} sekonde + para {0} sekondash + + + + zonë + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Ora: {0} + Ora verore: {0} + Ora standarde: {0} + {1} ({0}) + + Qytet i panjohur + + + Andorrë + + + Anguilë + + + Tiranë + + + Jerevan + + + Sjoua + + + Mauson + + + Dejvis + + + Kejsi + + + Dumont d’Urvillë + + + Mekmurdo + + + Rio Galegos + + + San Huan + + + Ushuaja + + + La Rioha + + + Katamarka + + + Saltë + + + Huhui + + + Tukuman + + + Kordoba + + + Vjenë + + + Përth + + + Eukla + + + Darvin + + + Adelajde + + + Brokën Hill + + + Kuri + + + Melburn + + + Lindëmen + + + Sidnej + + + Brisbejn + + + Mekuari + + + Lord Houi + + + Sarajevë + + + Daka + + + Bruksel + + + Uagëdugu + + + Sofje + + + Bahrein + + + Buxhumburë + + + Shën Bartolemeo + + + Bermudë + + + Ejrunep + + + Rio Branko + + + Kujaba + + + Kampo Grande + + + Araguajana + + + Makejo + + + Noronja + + + Nasao + + + Thimpu + + + Douson + + + Uajt'hors + + + Vankuver + + + Gjiri i Dousonit + + + Kreston + + + Jellounajf + + + Rryma e Shpejtë + + + Gjiri i Kembrixhit + + + Rexhina + + + Uinipeg + + + Rezolutë + + + Lumi i Shirave + + + Gryka Inlet + + + Atikokan + + + Gjiri i Bubullimës + + + Ikaluit + + + Monkton + + + Halifaks + + + Gjiri i Patës + + + Gjiri i Ngrirë + + + Blank-Sablon + + + Shën Gjon + + + Kokos + + + Brazavillë + + + Cyrih + + + Abixhan + + + Pashkë + + + Çongqing + + + Shangai + + + Bogotë + + + Kosta Rikë + + + Havanë + + + Kepi Verde + + + Kuraçao + + + Krishtlindje + + + Nikozi + + + Pragë + + + Xhibuti + + + Kopenhagen + + + Dominikë + + + Algjer + + + Guajakuil + + + Talin + + + Kajro + + + El Ajun + + + Asmarë + + + Kanari + + + Theuta + + + Adis Ababë + + + Fixhi + + + Stenli + + + Çuk + + + Ponapei + + + Kosre + + + Faroe + + + Librevilë + + + + Ora verore britanike + + Londër + + + Grenadë + + + Tbilis + + + Kajenë + + + Guernsej + + + Akra + + + Gjibraltar + + + Dhule + + + Njuk + + + Itokorturmit + + + Denmarkshavën + + + Banxhul + + + Konakri + + + Guadelupe + + + Athinë + + + Gjeorgjia e Jugut + + + Guatemalë + + + Bisau + + + Gujanë + + + Tegusigalpa + + + Port-o-Prins + + + Xhakartë + + + Makasar + + + Xhajapurë + + + + Ora verore e Irlandës + + + + Jeruzalem + + + Ishulli i Manit + + + Kalkutë + + + Çagos + + + Bagdad + + + Teheran + + + Rejkjavik + + + Romë + + + Xhersej + + + Xhamajkë + + + Aman + + + Tokio + + + Pnom Pen + + + Enderbur + + + Kiritimat + + + Taravë + + + Komore + + + Shën Kits + + + Penian + + + Seul + + + Kuvajt + + + Kajman + + + Aktau + + + Aktobe + + + Kizilorda + + + Almati + + + Vjentjanë + + + Bejrut + + + Shën Luçia + + + Kolombo + + + Luksemburg + + + Kazablankë + + + Monako + + + Kishineu + + + Podgoricë + + + Kuaxhalein + + + Mahuro + + + Shkup + + + Rangun + + + Ulanbatar + + + Çoibalsan + + + Makao + + + Martinikë + + + Nouakot + + + Monteserat + + + Maltë + + + Maldiv + + + Blantirë + + + Tihuana + + + Santa Izabela + + + Hermosilo + + + Çihahua + + + Ohinaga + + + Monterrej + + + Qyteti i Meksikës + + + Kankun + + + Kuçing + + + Vint'huk + + + Niamej + + + Katmandu + + + Çatman + + + Okland + + + Muskat + + + Limë + + + Markez + + + Port Moresbi + + + Karaçi + + + Varshavë + + + Mikuelon + + + Pitkern + + + Porto Riko + + + Azor + + + Lisbonë + + + Asunsion + + + Katar + + + Bukuresht + + + Beograd + + + Moskë + + + Ekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Kandigë + + + Sakalin + + + Kamçatkë + + + Anadir + + + Riad + + + Guadalkanal + + + Kartum + + + Stokholm + + + Singapor + + + Shën Helenë + + + Lubjanë + + + Long'jëbjen + + + Bratisllavë + + + Fritaun + + + Xhuba + + + Louer Prinsis Kuortër + + + Damask + + + Nxhamenë + + + Tuniz + + + Stamboll + + + Porti i Spanjës + + + Tajpej + + + Dar es Salam + + + Zaporozhje + + + Miduej + + + Xhonson + + + Ueik + + + Ankorejxh + + + Jakutat + + + Xhunou + + + Los Anxhelos + + + Boizë + + + Feniks + + + Beula, Dakota e Veriut + + + Nju Salem, Dakota e Veriut + + + Qendër, Dakota e Veriut + + + Çikago + + + Menomini + + + Vincenes, Indiana + + + Petërsburg, Indiana + + + Tell Siti, Indiana + + + Noks, Indiana + + + Uinamak, Indiana + + + Marengo, Indiana + + + Luizvilë + + + Vevëj, Indiana + + + Montiçelo, Kentaki + + + Nju Jork + + + Vatikan + + + Shën Vinsent + + + Karakas + + + Tortolë + + + Shën Tomas + + + Ho Çi Min + + + Uollis + + + Majotë + + + Johanesburg + + + + Ora e Ejkrit [Ako] + Ora standarde e Ejkrit [Ako] + Ora verore e Ejkrit [Ako] + + + + + Ora e Afganistanit + + + + + Ora e Afrikës qendrore + + + + + Ora e Afrikës lindore + + + + + Ora e Afrikës jugore + + + + + Ora e Afrikës perëndimore + Ora standarde e Afrikës perëndimore + Ora verore e Afrikës perëndimore + + + + + Ora e Alaskës + Ora standarde e Alaskës + Ora verore e Alsaskës + + + + + Ora e Almatit + Ora standarde e Almatit + Ora verore e Almatit + + + + + Ora e Amazonës + Ora standarde e Amazonës + Ora verore e Amazonës + + + + + Ora e SHBA-së qendrore + Ora standarde e SHBA-së qendrore + Ora verore e SHBA-së qendrore + + + + + Ora e SHBA-së lindore + Ora standarde e SHBA-së lindore + Ora verore e SHBA-së lindore + + + + + Ora amerikane e maleve shkëmborë + Ora standarde amerikane e maleve shkëmborë + Ora verore amerikane e maleve shkëmborë + + + + + Ora amerikane e bregut të Paqësorit + Ora standarde amerikane e bregut të Paqësorit + Ora verore amerikane e bregut të Paqësorit + + + + + Ora e Anadirit + Ora standarde e Anadirit + Ora verore e Anadirit + + + + + Ora e Aktaut + Ora standarde e Aktaut + Ora verore e Aktaut + + + + + Ora e Aktobit + Ora standarde e Aktobit + Ora verore e Aktobit + + + + + Ora arabe + Ora standarde arabe + Ora verore arabe + + + + + Ora e Argjentinës + Ora standarde e Argjentinës + Ora verore e Argjentinës + + + + + Ora e Argjentinës perëndimore + Ora standarde e Argjentinës perëndimore + Ora verore e Argjentinës perëndimore + + + + + Ora e Armenisë + Ora standarde e Armenisë + Ora verore e Armenisë + + + + + Ora e Atlantikut + Ora standarde e Atlantikut + Ora verore e Atlantikut + + + + + Ora e Australisë qendrore + Ora standarde e Australisë qendrore + Ora verore e Australisë qendrore + + + + + Ora e Australisë qendrore-perëndimore + Ora standarde e Australisë qendrore-perëndimore + Ora verore e Australisë qendrore-perëndimore + + + + + Ora e Australisë lindore + Ora standarde e Australisë lindore + Ora verore e Australisë lindore + + + + + Ora e Australisë perëndimore + Ora standarde e Australisë perëndimore + Ora verore e Australisë perëndimore + + + + + Ora e Azerbajxhanit + Ora standarde e Azerbajxhanit + Ora verore e Azerbajxhanit + + + + + Ora e Azoreve + Ora standarde e Azorit + Ora verore e Azorit + + + + + Ora e Bangladeshit + Ora standarde e Bangladeshit + Ora verore e Bangladeshit + + + + + Ora e Butanit + + + + + Ora e Bolivisë + + + + + Ora e Brasilës + Ora standarde e Brasilës + Ora verore e Brasilës + + + + + Ora e Brunei Durasalamit + + + + + Ora e Kepit të Gjelbër + Ora standarde e Kepit të Gjelbër + Ora verore e Kepit të Gjelbër + + + + + Ora e Kejsit + + + + + Ora e Kamorros + + + + + Ora e Katamit + Ora standarde e Katamit + Ora verore e Katamit + + + + + Ora e Kilit + Ora standarde e Kilit + Ora verore e Kilit + + + + + Ora e Kinës + Ora standarde e Kinës + Ora verore e Kinës + + + + + Ora e Çoibalsanit + Ora standarde e Çoibalsanit + Ora verore e Çoibalsanit + + + + + Ora e Ishullit të Krishtlindjeve + + + + + Ora e Ishujve Kokos + + + + + Ora e Kolumbisë + Ora standarde e Kolumbisë + Ora verore e Kolumbisë + + + + + Ora e Ishujve Kuk + Ora standarde e Ishujve Kuk + Ora verore e Ishujve Kuk + + + + + Ora e Kubës + Ora standarde e Kubës + Ora verore e Kubës + + + + + Ora e Dejvisit + + + + + Ora e Dumont-d'Urvilës + + + + + Ora e Timorit Lindor + + + + + Ora e Ishullit të Pashkës + Ora standarde e Ishullit të Pashkës + Ora verore e Ishullit të Pashkës + + + + + Ora e Ekuadorit + + + + + Ora e Europës qendrore + Ora standarde e Europës qendrore + Ora verore e Europës qendrore + + + + + Ora e Europës lindore + Ora standarde e Europës lindore + Ora verore e Europës lindore + + + + + Ora e Europës perëndimore + Ora standarde e Europës perëndimore + Ora verore e Europës perëndimore + + + + + Ora e Ishujve Folkland + Ora standarde e Ishujve Folkland + Ora verore e Ishujve Folkland + + + + + Ora e Fixhit + Ora standarde e Fixhit + Ora verore e Fixhit + + + + + Ora e Guajanës Franceze + + + + + Ora e Rajoneve australiane dhe antraktike franceze + + + + + Ora e Galapagosit + + + + + Ora e Gambierit + + + + + Ora e Gjeorgjisë + Ora standarde e Gjeorgjisë + Ora verore e Gjeorgjisë + + + + + Ora e Ishujve Gilbert + + + + + Ora e meridianit të Grinuiçit + + + + + Ora e Grenlandës lindore + Ora standarde e Grenlandës lindore + Ora verore e Grenlandës lindore + + + + + Ora e Grenlandës perëndimore + Ora standarde e Grenlandës perëndimore + Ora verore e Grenlandës perëndimore + + + + + Ora e Guamit + + + + + Ora e Gjirit + + + + + Ora e Guajanës + + + + + Ora e ishujve Hauai-Aleutian + Ora standarde e ishujve Hauai-Aleutian + Ora verore e ishujve Hauai-Aleutian + + + + + Ora e Hong Kongut + Ora standarde e Hong Kongut + Ora verore e Hong Kongut + + + + + Ora e Hovdit + Ora standarde e Hovdit + Ora verore e Hovdit + + + + + Ora e Indisë + + + + + Ora e Oqeanit Indian + + + + + Ora e Indokinës + + + + + Ora e Indonezisë qendrore + + + + + Ora e Indonezisë lindore + + + + + Ora e Indonezisë perëndimore + + + + + Ora e Iranit + Ora standarde e Iranit + Ora verore e Iranit + + + + + Ora e Irkutskit + Ora standarde e Irkutskit + Ora verore e Irkutskit + + + + + Ora e Izraelit + Ora standarde e Izraelit + Ora verore e Izraelit + + + + + Ora e Japonisë + Ora standarde e Japonisë + Ora verore e Japonisë + + + + + Ora e Petropavllovsk-Kamçatkës + Ora standarde e Petropavllovsk-Kamçatkës + Ora verore e Petropavllovsk-Kamçatkës + + + + + Ora e Kazakistanit lindor + + + + + Ora e Kazakistanit perëndimor + + + + + Ora koreane + Ora standarde koreane + Ora verore koreane + + + + + Ora e Kosrës + + + + + Ora e Krasnojarskut + Ora standarde e Krasnojarskut + Ora verore e Krasnojarskut + + + + + Ora e Kirgistanit + + + + + Ora e Lankasë + + + + + Ora e Ishujve Sporadikë ekuatorialë + + + + + Ora e Lord Houit + Ora standarde e Lord Houit + Ora verore e Lord Houit + + + + + Ora e Makaos + Ora standarde e Makaos + Ora verore e Makaos + + + + + Ora e Ishullit Makuari + + + + + Ora e Magadanit + Ora standarde e Magadanit + Ora verore e Magadanit + + + + + Ora e Malajzisë + + + + + Ora e Maldivit + + + + + Ora e Ishujve Markezë + + + + + Ora e Ishujve Marshall + + + + + Ora e Mauritiusit + Ora standarde e Mauritiusit + Ora verore e Mauritiusit + + + + + Ora e Mausonit + + + + + Ora e Ulan Batorit + Ora standarde e Ulan Batorit + Ora verore e Ulan Batorit + + + + + Ora e Moskës + Ora standarde e Moskës + Ora verore e Moskës + + + + + Ora e Mianmarit + + + + + Ora e Naurusë + + + + + Ora e Nepalit + + + + + Ora e Kaledonisë së Re + Ora standarde e Kaledonisë së Re + Ora verore e Kaledonisë së Re + + + + + Ora e Zelandës së Re + Ora standarde e Zelandës së Re + Ora verore e Zelandës së Re + + + + + Ora e Njufaundlendit [Tokës së Re] + Ora standarde e Njufaundlendit [Tokës së Re] + Ora verore e Njufaundlendit [Tokës së Re] + + + + + Ora e Niuesë + + + + + Ora e Ishullit Norfolk + + + + + Ora e Fernando de Noronjës + Ora standarde e Fernando de Noronjës + Ora verore e Fernando de Noronjës + + + + + Ora e Ishujve të Marianës së Veriut + + + + + Ora e Novosibirskut + Ora standarde e Novosibirskut + Ora verore e Novosibirskut + + + + + Ora e Omskut + Ora standarde e Omskut + Ora verore e Omskut + + + + + Ora e Pakistanit + Ora standarde e Pakistanit + Ora verore e Pakistanit + + + + + Ora e Palaut + + + + + Ora e Papua-Guinesë së Re + + + + + Ora e Paraguait + Ora standarde e Paraguait + Ora Verore e Paraguait + + + + + Ora e Perusë + Ora Standarde e Perusë + Ora verore e Perusë + + + + + Ora e Filipineve + Ora standarde e Filipineve + Ora verore e Filipineve + + + + + Ora e Ishujve Feniks + + + + + Ora e Shën Pierr dhe Mikuelon + Ora standarde e Shën Pierr dhe Mikuelon + Ora verore e Shën Pierr dhe Mikuelon + + + + + Ora e Pitkernit + + + + + Ora e Ponapeit + + + + + Ora e Kizilordit + Ora standarde e Kizilordit + Ora verore e Kizilordit + + + + + Ora e Reunionit + + + + + Ora e Rodherës + + + + + Ora e Sakalinit + Ora standarde e Sakalinit + Ora verore e Sakalinit + + + + + Ora e Samarës + Ora standarde e Samarës + Ora verore e Samarës + + + + + Ora e Samoas + Ora standarde e Samoas + Ora verore e Samoas + + + + + Ora e Sejçelës + + + + + Ora e Singaporit + + + + + Ora e Ishujve Solomonë + + + + + Ora e Gjeorgjisë së Jugut + + + + + Ora e Surinamit + + + + + Ora e Sjouit + + + + + Ora e Tahitit + + + + + Ora e Tajpeit + Ora standarde e Tajpeit + Ora verore e Tajpeit + + + + + Ora e Taxhikistanit + + + + + Ora e Tokelaut + + + + + Ora e Tongës + Ora standarde e Tongës + Ora verore e Tongës + + + + + Ora e Çukut + + + + + Ora e Turkmenistanit + Ora standarde e Turkmenistanit + Ora verore e Turkmenistanit + + + + + Ora e Tuvalusë + + + + + Ora e Uruguait + Ora standarde e Uruguait + Ora verore e Uruguait + + + + + Ora e Uzbekistanit + Ora standarde e Uzbekistanit + Ora verore e Uzbekistanit + + + + + Ora e Vanuatusë + Ora standarde e Vanuatusë + Ora verore e Vanuatusë + + + + + Ora e Venezuelës + + + + + Ora e Vladivostokut + Ora standarde e Vladivostokut + Ora verore e Vladivostokut + + + + + Ora e Volgogradit + Ora standarde e Volgogradit + Ora verore e Volgogradit + + + + + Ora e Vostokut + + + + + Ora e Ishullit Ueik + + + + + Ora e Uollisit dhe Futunës + + + + + Ora e Jakutskut + Ora standarde e Jakutskut + Ora verore e Jakutskut + + + + + Ora e Ekaterinburgut + Ora standarde e Ekaterinburgut + Ora verore e Ekaterinburgut + + + + + + + , +   + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 mijë + 0 mijë + 00 mijë + 00 mijë + 000 mijë + 000 mijë + 0 milion + 0 milion + 00 milion + 00 milion + 000 milion + 000 milion + 0 miliard + 0 miliard + 00 miliard + 00 miliard + 000 miliard + 000 miliard + 0 bilion + 0 bilion + 00 bilion + 00 bilion + 000 bilion + 000 bilion + + + + + 0 mijë + 0 mijë + 00 mijë + 00 mijë + 000 + 000 mijë + 0 Mln + 0 Mln + 00 Mln + 00 Mln + 000 Mln + 000 Mln + 0 Mld + 0 Mld + 00 Mld + 00 Mld + 000 Mld + 000 Mld + 0 Bln + 0 Bln + 00 Bln + 00 Bln + 000 Bln + 000 Bln + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + Dirhami i Emirateve të Bashkuara Arabe + dirham i Emirateve të Bashkuara Arabe + dirhamë të Emirateve të Bashkuara Arabe + + + Afgani afgan + afgan afgan + afganë afgan + + + Leku shqiptar + lek shqiptar + lekë shqiptar + Lekë + + + Drami armen + drami armen + drami armen + + + Gilderi antilian holandez + gilder antilian holandez + gilderë antilian holandez + + + Kuanza angole + kuanzë angole + kuanza angole + + + Peso argjentinase + peso argjentinase + peso argjentinase + + + Dollar australian + dollar australian + dollarë australian + A$ + + + Florin aruban + florin aruban + florinë aruban + + + Manata azere + manatë azere + manata azere + + + Marka e Bosnjë-Hercegovinës [e shkëmbyeshme] + markë e Bosnjë-Hercegovinës [e shkëmbyeshme] + marka të Bosnjë-Hercegovinës [të shkëmbyeshme] + + + Dollar barbadian + dollar barbadian + dollarë barbadian + + + Takë e Bangladeshit + takë bangladeshi + taka bangladeshi + + + Levi bullgar + levë bullgare + leva bullgare + + + Dinar i Bahreinit + dinar bahreini + dinarë bahreini + + + Franga burundiane + frangë burundiane + franga burundiane + + + Dollar bermude + dollar bermude + dollarë bermude + + + Dollar i Bruneit + dollar brunei + dollarë brunei + + + Boliviani bolivian + bolivian bolivian + bolivianë bolivian + + + Real brazilian + real brazilian + realë brazilian + R$ + + + Dollar bahamasi + dollar bahamez + dollarë bahamez + + + Ngultrum butanez + ngultrum butanez + ngultrumë butanez + + + Pula botsvane + pulë botsvane + pula botsvane + + + Rubla bjelloruse + rubël bjelloruse + rubla bjelloruse + + + Dollar Belize + dollar belize + dollarë belize + + + Dollari kanadez + dollar kanadez + dollarë kanadez + CA$ + + + Franga kongole + frangë kongole + franga kongole + + + Franga zvicerane + frangë zvicerane + franga zvicerane + + + Peso kiliane + peso kiliane + peso kiliane + + + Juani kinez + juan kinez + juanë kinez + CN¥ + + + Peso kolumbiane + peso kolumbiane + peso kolumbiane + + + Koloni kostarikan + kolon kostarikan + kolonë kostarikan + + + Peso kubane e shkëmbyeshme + peso kubane e shkëmbyeshme + peso kubane të shkëmbyeshme + + + Peso kubane + peso kubane + peso kubane + + + Eskudo e Kepit të Gjelbër + eskudo e Kepit të Gjelbër + eskudo të Kepit të Gjelbër + + + Koruna e Republikës Çeke + korunë çeke + koruna çeke + + + Franga xhibutiane + frangë xhibutiane + franga xhibutiane + + + Koronë daneze + koronë daneze + korona daneze + + + Peso dominikane + peso dominikane + peso dominikane + + + Dinar algjerian + dinar algjerian + dinarë algjerian + + + Stërlina egjiptiane + stërlinë egjiptiane + stërlina egjiptiane + + + Nakfa e Eritresë + nakfë eritreje + nakfa eritreje + + + Bira etiopase + birë etiopase + bira etiopase + + + Euro + euro + euro + + + + Dollar i Fixhit + dollar fixhi + dollarë fixhi + + + Stërlina e Ishujve Folkland + stërlinë e Ishujve Folkland + stërlina të Ishujve Folkland + + + Sterlina britanike + sterlinë britanike + sterlina britanike + £ + + + Lari gjeorgjian + lari gjeorgjian + lari gjeorgjiane + + + Sejda ganeze + sejdë ganeze + sejda ganeze + + + Sterlina e Gjibraltarit + sterlinë gjibraltari + sterlina gjibraltari + + + Dalasi gambian + dalas gambian + dalasë gambian + + + Franga guinease + frangë guineje + franga guineje + + + Kuecali i Guatemalës + kuecal guatemalas + kuecalë guatemalas + + + Dollar guajanez + dollar guajanez + dollarë guajanez + + + Dollar i Hong Kongut + dollar i Hong Kongut + dollarë të Hong Kongut + HK$ + + + Lempira hondurase + lempirë hondurase + lempira hondurase + + + Kuna kroate + kunë kroate + kuna kroate + + + Gurd haitian + gurd haitian + gurdë haitian + + + Forinta hungareze + forintë hungareze + forinta hungareze + + + Rupi indoneziane + rupi indoneziane + rupi indoneziane + + + Shekeli izrealit + shekel izrealit + shekelë izrealite + + + + Rupi indiane + rupi indiane + rupi indiane + + + + Dinar irakian + dinar irakian + dinarë irakian + + + Rial iranian + rial iranian + rialë iranian + + + Krona islandeze + kronë islandeze + krona islandeze + + + Dollar xhamajkan + dollar xhamajkan + dollarë xhamajkan + + + Dinar jordanez + dinar jordanez + dinarë jordanez + + + Jen japonez + jen japonez + jenë japonez + JP¥ + + + Shilinga keniane + shilingë keniane + shilinga keniane + + + Soma kirgize + somë kirgize + soma kirgize + + + Rial kamboxhian + rial kamboxhian + rialë kamboxhian + + + Franga komore + frangë komore + franga komori + + + Uoni i Koresë së Veriut + uon i Koresë së Veriut + uonë të Koresë së Veriut + + + Uoni i Koresë së Jugut + uon i Koresë së Jugut + uonë të Koresë së Jugut + + + + Dinar kuvajtian + dinar kuvajtian + dinarë kuvajtian + + + Dollar i Ishujve Kajman + dollar i Ishujve Kajman + dollarë të Ishujve Kajman + + + Tenga kazake + tengë kazake + tenga kazake + + + Kipa e Laosit + kip laosi + kipa laosi + + + Sterlina libaneze + sterlinë libaneze + sterlina libaneze + + + Rupi e Sri Lankës + rupi sri-lanke + rupi sri-lanke + + + Dollar liberian + dollar liberian + dollarë liberian + + + Lita lituaneze + litë lituaneze + lita lituaneze + + + Lata letoneze + latë letoneze + lata letoneze + + + Dinar libian + dinar libian + dinarë libian + + + Dirham maroken + dirham maroken + dirhamë maroken + + + Leu moldav + leu moldav + leu moldave + + + Arieri malagas + arier malagas + arierë malagas + + + Denar maqedonas + denar maqedonas + denarë maqedonas + + + Kiatë e Mianmarit + kiatë mianmari + kiata mianmari + + + Tugrika mongole + tugrikë mongole + tugrika mongole + + + Patakë e Makaos + patakë e Makaos + pataka të Makaos + + + Ugija mauritane + ugijë mauritane + ugija mauritane + + + Rupia mauritiane + rupi mauritiane + rupi mauritiane + + + Rufiu i Maldivit + rufi maldivi + rufi maldivi + + + Kuaça malaviane + kuaçë malaviane + kuaça malaviane + + + Peso meksikane + peso meksikane + peso meksikane + MX$ + + + Ringit malajzian + ringit malajzian + ringitë malajzian + + + Metikali i Mozambikut + metikal mozambiku + metikalë mozambiku + + + Dollar i Namibisë + dollar namibie + dollarë namibie + + + Naira nigeriane + nairë nigeriane + naira nigeriane + + + Kordoba nikaraguane + kordobë nikaraguane + kordoba nikaraguane + + + Krona norvegjeze + kronë norvegjeze + krona norvegjeze + + + Rupi nepaleze + rupi nepaleze + rupi nepaleze + + + Dollar i Zelandës së Re + dollar i Zelandës së Re + dollarë të Zelandës së Re + NZ$ + + + Riali i Omanit + rial omani + rialë omani + + + Balboa panameze + balboa panameze + balboa panameze + + + Sola nuevo-peruane + solë nuevo-peruane + sola nuevo-peruane + + + Kina e Papua-Guineas së Re + kinë e Papua-Guineas së Re + kina të Papua-Guineas së Re + + + Peso filipinase + peso filipinase + peso filipinase + + + Rupi pakistaneze + rupi pakistaneze + rupi pakistaneze + + + Zllota polake + zllotë polake + zllota polake + + + Guaran paraguaian + guaran paraguaian + guaranë paraguaian + + + Rial i Katarit + rial katari + rialë katari + + + Leu rumun + leu rumun + leu rumune + + + Dinar serb + dinar serb + dinarë serb + + + Rubla ruse + rubël ruse + rubla ruse + + + Franga ruandeze + frangë ruandeze + franga ruandeze + + + Rial saudit + rial saudit + rialë saudit + + + Dollar i Ishujve Solomon + dollar i Ishujve Solomon + dollarë të Ishujve Solomon + + + Rupia e Sejshellzave + rupi e Sejshellzave + rupi të Sejshellzave + + + Stërlina sudaneze + stërlinë sudaneze + stërlina sudaneze + + + Korona suedeze + koronë suedeze + korona suedeze + + + Dollar i Singaporit + dollar singapori + dollarë singapori + + + Stërlina e Ishullit të Shën Helenës + stërlinë e Ishullit të Shën Helenës + stërlina të Ishullit të Shën Helenës + + + Leoni i Sierra Leones + leon i Sierra Leones + leonë të Sierra Leones + + + Shilinga somaleze + shilingë somaleze + shilinga somaleze + + + Dollar surinamez + dollar surinamez + dollarë surinamez + + + Stërlina e Sudanit të Jugut + stërlinë e Sudanit të Jugut + stërlina të Sudanit të Jugut + + + Dobra e Sao Tomes dhe Prinsipes + dobër e Sao Tomes dhe Prinsipes + dobra të Sao Tomes dhe Prinsipes + + + Sterlina siriane + sterlinë siriane + sterlina siriane + + + Lilangeni i Svazilandit + lilangen svazilandi + lilangenë svazilandi + + + Bata tajlandeze + batë tajlandeze + bata tajlandeze + ฿ + + + Somona taxhike + somonë taxhike + somona taxhike + + + Manata turkmene + manatë turkmene + manata turkmene + + + Dinar tunizian + dinar tunizian + dinarë tunizian + + + Panga tongane + pangë tongane + panga tongane + + + Lirë turke + lirë turke + lira turke + + + Dollar i Trinidadit dhe Tobagos + dollar i Trinidadit dhe Tobagos + dollarë të Trinidadit dhe Tobagos + + + Dollar tajvanez + dollar tajvanez + dollarë tajvanez + NT$ + + + Shilinga e Tanzanisë + shilingë tanzanie + shilinga tanzanie + + + Rivnia ukrainase + rivni ukrainase + rivni ukrainase + + + Shilinga ugandeze + shilingë ugandeze + shilinga ugandeze + + + Dollari amerikan + dollar amerikan + dollarë amerikan + US$ + + + Peso uruguaiane + peso uruguaiane + peso uruguaiane + + + Soma uzbeke + somë uzbeke + soma uzbeke + + + Bolivar venezuelian + bolivar venezuelian + bolivarë venezuelian + + + Dongë vietnameze + dongë vietnameze + donga vietnameze + + + + Vatuja e Vanuatusë + vatu vanuatuje + vatu vanuatuje + + + Tala samoane + talë samoane + tala samoane + + + Franga kamerunase + frangë kamerunase + franga kamerunase + FCFA + + + Dollar i Karaibeve Lindore + dollar i Karaibeve Lindore + dollarë të Karaibeve Lindore + EC$ + + + Franga e Bregut të Fildishtë + frangë e Bregut të Fildishtë + franga të Bregut të Fildishtë + CFA + + + Franga franceze e Polinezisë + frangë franceze e Polinezisë + franga franceze të Polinezisë + CFPF + + + Valutë e panjohur + njësi e panjohur valute + njësi të panjohura valute + + + Rial i Jemenit + rial jemeni + rialë jemeni + + + Randa e Afrikës së Jugut + randë e Afrikës së Jugut + randa të Afrikës së Jugut + + + Kuaça e Zambikut + kuaçë zambiku + kuaça zambiku + + + + ⩾{0} + {0}-{1} + + + + + + {0} në {1} + + + {0} g-forcë + {0} g-forcë + + + {0} minutë + {0} minuta + + + {0} sekondë + {0} sekonda + + + {0} gradë + {0} gradë + + + {0} akër + {0} akra + + + {0} hektar + {0} hektarë + + + {0} këmbë katror + {0} këmbë katrore + + + {0} kilometër katror + {0} kilometra katrore + + + {0} metër katror + {0} metra katrore + + + {0} milje katror + {0} milje katrore + + + {0} ditë + {0} ditë + + + {0} orë + {0} orë + + + {0} milisekondë + {0} milisekonda + + + {0} minutë + {0} minuta + + + {0} muaj + {0} muaj + + + {0} sekondë + {0} sekonda + + + {0} javë + {0} javë + + + {0} vit + {0} vjet + + + {0} centimetër + {0} centimetra + + + {0} këmbë + {0} këmbë + + + {0} inç + {0} inç + + + {0} kilometër + {0} kilometra + + + {0} vit drite + {0} vjet drite + + + {0} metër + {0} metra + + + {0} milje + {0} milje + + + {0} milimetër + {0} milimetra + + + {0} pikometër + {0} pikometra + + + {0} jard + {0} jardë + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} ons + {0} ons + + + {0} paund + {0} paund + + + {0} kalë fuqi + {0} kuaj fuqi + + + {0} kilovat + {0} kilovat + + + {0} vat + {0} vat + + + {0} hektopaskal + {0} hektopaskal + + + {0} inç merkuri + {0} inç merkuri + + + {0} milibar + {0} milibar + + + {0} kilomentër në orë + {0} kilometra në orë + + + {0} metër në sekondë + {0} metra në sekondë + + + {0} milje në orë + {0} milje në orë + + + {0} gradë Celsius + {0} gradë Celsius + + + {0} gradë Farenhait + {0} gradë Farenhait + + + {0} kilometër kub + {0} kilometra kub + + + {0} milje në kub + {0} milje në kub + + + {0} litër + {0} litra + + + + + {0}/{1} + + + {0} g-forcë + {0} g-forcë + + + {0} min. + {0} min. + + + {0} sek. + {0} sek. + + + {0} gradë + {0} gradë + + + {0} akër + {0} akra + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} ditë + {0} ditë + + + {0} orë + {0} orë + + + {0} ms + {0} ms + + + {0} min. + {0} min. + + + {0} muaj + {0} muaj + + + {0} sek. + {0} sek. + + + {0} javë + {0} javë + + + {0} vit + {0} vjet + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} inç + {0} inç + + + {0} km + {0} km + + + {0} v. dr. + {0} v. dr. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} jd + {0} jd + + + {0} gr + {0} gr + + + {0} kg + {0} kg + + + {0} ons + {0} ons + + + {0} paund + {0} paund + + + {0} k-fuqi + {0} k-fuqi + + + {0} k-vat + {0} k-vat + + + {0} vat + {0} vat + + + {0} hPaskal + {0} hPaskal + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/orë + {0} km/orë + + + {0} m/sek. + {0} m/sek. + + + {0} mi/orë + {0} mi/orë + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} litër + {0} litra + + + + + {0}/{1} + + + {0} g-forcë + {0} g-forcë + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} ditë + {0} ditë + + + {0} orë + {0} orë + + + {0} ms + {0} ms + + + {0} min. + {0} min. + + + {0} muaj + {0} muaj + + + {0} sek. + {0} sek. + + + {0} javë + {0} javë + + + {0} vit + {0} vjet + + + {0} cm + {0} cm + + + {0} ft + {0} ft + + + {0} inç + {0} inç + + + {0} km + {0} km + + + {0} v. dr. + {0} v. dr. + + + {0} m + {0} m + + + {0} mi + {0} mi + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} jd + {0} jd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} ons + {0} onsë + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mb + {0} mb + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} dhe {1} + {0} dhe {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + {0}, {1} + {0}, {1} + {0} e {1} + {0} e {1} + + + + + po:p + jo:j + + + + diff --git a/library/Zend/Locale/Data/sq_AL.xml b/library/Zend/Locale/Data/sq_AL.xml new file mode 100755 index 000000000..70e3d7cf4 --- /dev/null +++ b/library/Zend/Locale/Data/sq_AL.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sq_MK.xml b/library/Zend/Locale/Data/sq_MK.xml new file mode 100755 index 000000000..d67851850 --- /dev/null +++ b/library/Zend/Locale/Data/sq_MK.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + den + + + + diff --git a/library/Zend/Locale/Data/sq_XK.xml b/library/Zend/Locale/Data/sq_XK.xml new file mode 100755 index 000000000..3fe81b84d --- /dev/null +++ b/library/Zend/Locale/Data/sq_XK.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sr.xml b/library/Zend/Locale/Data/sr.xml new file mode 100755 index 000000000..28bcc1921 --- /dev/null +++ b/library/Zend/Locale/Data/sr.xml @@ -0,0 +1,7182 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Афарски + Абказијски + Ачинески + Аколи + Адангмејски + Адигејски + Авестански + Африканерски + Африхили + Аину + Акан + Акадијски + Аљут + Јужни алтаи + Амхарски + Арагонежански + Староенглески + Ангика + Арапски + модеран стандардни арапски + Армајски + Ароканијски + Арапахо + Аравак + Асемијски + Астуријски + Аварски + Авадхи + Ајмара + Азербејџански + Азерски + Башкир + Балучи + Балинезијски + Баса + Белоруски + Беја + Бемба + Бугарски + Бојпури + Бислама + Бикол + Бини + Сисика + Бамбара + Бенгласки + Тибетански + Бретонски + Брај + Босански + Буриат + Бугинежански + Блин + Каталонски + Кадо + Карипски + Атсамски + Чеченски + Цебуано + Чаморо + Чибча + Чагатаи + Чукески + Мари + Чинукски + Чоктавски + Чипвијански + Чероки + Чејенски + сорани курдски + Корзикански + Коптски + Кри + Кримеански турски + Чешки + Кашубијански + Старословенски + Чувашки + Велшки + Дански + Дакота + Даргва + Немачки + Аустријски немачки + Швајцарски високи немачки + Делавер + Славски + Догриб + Динка + Догри + Ниски сорбијански + Дуала + Средњи холандски + Дивехијски + Ђула + Џонга + Еве + Ефикски + Староегипатски + Екајук + Грчки + Еламитски + Енглески + Аустралијски енглески + Канадски енглески + Британски енглески + енглески (УК) + САД енглески + енглески (САД) + Средњи енглески + Есперанто + Шпански + Латино-амерички шпански + Иберијски шпански + мексички шпански + Естонски + Баскијски + Евондо + Персијски + Фанг + Фанти + Фулах + Фински + Филипински + Фиджијски + Фарски + Фон + Француски + Канадски француски + Швајцарски француски + Средњи француски + Старофранцуски + Северно-фризијски + Источни фризијски + Фриулијски + Фризијски + Ирски + Га + Гајо + Гбаја + Шкотски Галски + Џиз + Гилбертшки + Галски + Средњи високи немачки + Гварани + Старонемачки + Гонди + Горонтало + Готски + Гребо + Старогрчки + Швајцарски немачки + Гуџарати + Манкс + Гвич'ин + Хауса + Хаида + Хавајски + Хебрејски + Хинди + Хилигајнон + Хитите + Хмонг + Хири Моту + Хрватски + Горњи сорбијски + Хаитски + Мађарски + Хупа + Јерменски + Хереро + Интерлингва + Ибан + Индонежански + Међујезички + Игбо + Сичуан ји + Унупиак + Илоко + Ингвишки + Идо + Исландски + Италијански + Инуктитут + Јапански + Лојбан + Јудео-персијски + Јудео-арапски + Јавански + Грузијски + Кара-калпашки + Кабиле + Качин + Ђу + Камба + Кави + Кабардијски + Тјап + Коро + Конго + Каси + Котанешки + Кикују + Куањама + Козачки + Калалисут + Кмерски + Кимбунду + Канада + Корејски + Конкани + Косреански + Кпеле + Канури + Карачај-балкар + Карелијски + Курукх + Кашмирски + Курдски + Кумик + Кутенаи + Коми + Корнишки + Киргиски + Латински + Ладино + Ланда + Ламба + Луксембуршки + Лезгиан + Ганда + Лимбургиш + Лингала + Лаоски + Монго + Лози + Литвански + Луба-катанга + Луба-лулуа + Луисено + Лунда + Луо + Лушаи + Летонски + Мадурешки + Магахи + Маитили + Макасар + Мандинго + Масаи + Мокша + Мандар + Менде + Морисјен + Малагасијски + Средњи ирски + Маршалски + Маорски + Микмак + Минангкабау + Македонски + Малајалам + Монголски + Манчу + Манипури + Махавски + Моси + Марати + Малајски + Мелтешки + Више језика + Кришки + Мирандешки + Марвари + Бурмански + Ерзија + Науру + Неаполитански + Норвешки бокмал + Северни ндебеле + Ниски немачки + Непалски + Невари + Ндонга + Ниас + Ниуеан + Холандски + Фламански + Норвешки њорск + Норвешки + Ногаи + Стари норски + Н’ко + Јужни ндебеле + Северни сото + Навахо + Класични невари + Њања + Њамвези + Њанколе + Њоро + Нзима + Провансалски + Ојибва + Оромо + Оријски + Осетски + Осаге + Отомански турски + Панџабски + Пангасински + Пахлави + Пампанга + Папиаменто + Палауански + Староперсијски + Феничански + Пали + Пољски + Понпејски + Старопровансалски + Паштунски + пашто + Португалски + Бразилски португалски + Иберијски португалски + Квенча + Рађастани + Рапануи + Раротонган + Рето-Романски + Рунди + Румунски + Молдавски + Романи + Рут + Руски + Ароманијски + Кинјаруанда + Санскрит + Сандаве + Јакут + Самаритански арамејски + Сасак + Сантали + Сардињаски + Сицилијански + Шкотски + Синди + Северни сами + Селкап + Санго + Староирски + Српскохрватски + Шан + Сингалески + Сидамо + Словачки + Словеначки + Самоански + Јужни сами + Луле сами + Инари сами + Сколтски језик + Шона + Сонинке + Сомалски + Соџијенски + Албански + Српски + Сранански тонго + Серер + Свати + Сесото + Судански + Сукума + Сусу + Сумерски + Шведски + Свахили + Коморски + Класични сиријски + Сиријски + Тамилски + Телугу + Тимне + Терено + Тетум + Тађик + Тајландски + Тигриња + Тигре + Тив + Туркменски + Токелау + Тагалски + Клингонски + Тлингит + Тамашек + Тсвана + Тонга + Њаса тонга + Ток Писин + Турски + Тсонга + Тсимшиан + Татарски + Тумбука + Тувалу + Тви + Тахићански + Тувинијски + Удмурт + Ујгурски + ујгурски + Угаритски + Украјински + Умбунду + Непознат или неважећи језик + Урду + Узбечки + Ваи + Венда + Вијетнамски + Волапук + Вотски + Валун + Валамо + Варај + Вашо + Волоф + Калмик + Ксхоса + Јао + Јапешки + Јидиш + Јоруба + Кантонски + Жуанг + Запотечки + Блисимболи + Зенага + стандардни марокански тамазигт + Кинески + Кинески (поједностављен) + Кинески (традиционални) + Зулу + Зуни + Без лингвистичког садржаја + Заза + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Свет + Африка + Северноамерички континент + Јужна Америка + Океанија + Западна Африка + Централна Америка + Источна Африка + Северна Африка + Централна Африка + Јужна Африка + Америке + Северна Америка + Кариби + Источна Азија + Јужна Азија + Југоисточна Азија + Јужна Европа + Аустралија и Нови Зеланд + Меланезија + Микронезијски регион + Полинезија + Азија + Централна Азија + Западна Азија + Европа + Источна Европа + Северна Европа + Западна Европа + Латинска Америка + Острво Асенсион + Андора + Уједињени Арапски Емирати + Авганистан + Антигве и Барбуда + Ангвила + Албанија + Арменија + Холандски Антили + Ангола + Антарктик + Аргентина + Америчка Самоа + Аустрија + Аустралија + Аруба + Аландска острва + Азербејџан + Босна и Херцеговина + Барбадос + Бангладеш + Белгија + Буркина Фасо + Бугарска + Бахреин + Бурунди + Бенин + Свети Бартоломеј + Бермуда + Брунеј + Боливија + Карипска Холандија + Бразил + Бахами + Бутан + Буве Острва + Боцвана + Белорусија + Белизе + Канада + Кокос (Келинг) Острва + Конго - Киншаса + Конго (ДРК) + Централно Афричка Република + Конго - Бразавил + Конго (Република) + Швајцарска + Обала Слоноваче + Кукова Острва + Чиле + Камерун + Кина + Колумбија + Острво Клипертон + Костарика + Куба + Капе Верде + Курасао + Божићна острва + Кипар + Чешка + Немачка + Дијего Гарсија + Џибути + Данска + Доминика + Доминиканска Република + Алжир + Сеута и Мелиља + Еквадор + Естонија + Египат + Западна Сахара + Еритреја + Шпанија + Етиопија + Европска Унија + Финска + Фиџи + Фокландска острва + Фокландска (Малвинска) острва + Микронезија + Фарска Острва + Француска + Габон + Велика Британија + УК + Гренада + Грузија + Француска Гвајана + Гурнси + Гана + Гибралтар + Гренланд + Гамбија + Гвинеја + Гваделупе + Екваторијална Гвинеја + Грчка + Јужна Џорџија и Јужна Сендвич Острва + Гватемала + Гуам + Гвинеја-Бисао + Гвајана + Хонг Конг С. А. Р. Кина + Хонг Конг + Херд и Мекдоналд Острва + Хондурас + Хрватска + Хаити + Мађарска + Канарска острва + Индонезија + Ирска + Израел + Острво Ман + Индија + Британска територија у Индијском океану + Ирак + Иран + Исланд + Италија + Џерси + Јамајка + Јордан + Јапан + Кенија + Киргизстан + Камбоџа + Кирибати + Коморска Острва + Сент Китс и Невис + Северна Кореја + Јужна Кореја + Кувајт + Кајманска Острва + Казахстан + Лаос + Либан + Сент Луција + Лихтенштајн + Шри Ланка + Либерија + Лесото + Литванија + Луксембург + Летонија + Либија + Мароко + Монако + Молдавија + Црна Гора + Сент Мартин + Мадагаскар + Маршалска Острва + Македонија + Мали + Мијанмар (Бурма) + Монголија + Макао С. А. Р. Кина + Макао + Северна Маријанска Острва + Мартиник + Мауританија + Монсерат + Малта + Маурицијус + Малдиви + Малави + Мексико + Малезија + Мозамбик + Намибија + Нова Каледонија + Нигер + Норфолк Острво + Нигерија + Никарагва + Холандија + Норвешка + Непал + Науру + Ниуе + Нови Зеланд + Оман + Панама + Перу + Француска Полинезија + Папуа Нова Гвинеја + Филипини + Пакистан + Пољска + Сен Пјер и Микелон + Питкерн + Порто Рико + Палестинске територије + Палестина + Португал + Палау + Парагвај + Катар + Остала океанија + Реинион + Румунија + Србија + Русија + Руанда + Саудијска Арабија + Соломонска Острва + Сејшели + Судан + Шведска + Сингапур + Света Јелена + Словенија + Свалбард и Јанмајен Острва + Словачка + Сијера Леоне + Сан Марино + Сенегал + Сомалија + Суринам + Јужни Судан + Сао Томе и Принципе + Салвадор + Свети Мартин + Сирија + Свазиленд + Тристан да Куња + Туркс и Кајкос Острва + Чад + Француске Јужне Територије + Того + Тајланд + Таџикистан + Токелау + Источни Тимор + Туркменистан + Тунис + Тонга + Турска + Тринидад и Тобаго + Тувалу + Тајван + Танзанија + Украјина + Уганда + Мања удаљена острва САД + Сједињене Америчке Државе + САД + Уругвај + Узбекистан + Ватикан + Сент Винсент и Гренадини + Венецуела + Британска Девичанска Острва + С.А.Д. Девичанска Острва + Вијетнам + Вануату + Валис и Футуна Острва + Самоа + Косово + Јемен + Мајоте + Јужноафричка Република + Замбија + Зимбабве + Непозната или неважећа област + + + Традиционална немачка ортографија + Стандарднизована ресијанска ортографија + Немачка ортографија из 1996 + Француски из касног средњег века до 1606. + Рани модерни француски + Академски + Источни арменијски + Западно јерменска + Уједињен турски латинични алфабет + Сан Ђорђио/Била дијалект + Бунтлинг + ИПА фонетика + УПА фонетика + Уобичајена ортографија + Липовички дијалект ресијански + Монотоник + Натисоне дијалект + Гњива/Њива дијалкект + Осеако/Осојане дијалект + Политоник + Компјутер + Ревидирана ортографија + Ресијан + Сахо + Шкотски стандардни Енглески + Скауз + Столвица/Солбица дијалект + Тараскијевичка ортографија + Уједињена ортографија + Уједињена ревидирана ортографија + Валенцијска + + + Календар + Сортирање уз игнорисање симбола + Сортирање према обрнутим акцентима + Ређање према малом/великом слову + Сортирање према малом/великом слову + Сортирање према кана симболима + Сортирање + Нормализовано сортирање + Нумеричко сортирање + Сортирање према јачини + Валута + Бројеви + Временска зона + Варијанта локалитета + Сортирај као симболе + Приватна употреба + + + арапско-индијске цифре + продужене арапско-индијске цифре + јерменски бројеви + мали јерменски бројеви + бенгалске цифре + Традиционално кинеско сортирање + Будистички календар + Кинески календар + коптски календар + девангари цифре + Редослед сортирања у речнику + Подразумевани Unicode редослед сортирања + етиопски бројеви + етиопски календар + етиопски амет алем календар + Финансијски бројеви + цифре пуне ширине + Поједностављено кинеско сортирање + грузијски бројеви + Грегоријански календар + грчки бројеви + мали грчки бројеви + гуџаратске цифре + гурмуки цифре + кинески децимални бројеви + поједностављени кинески бројеви + поједностављени кинески финансијски бројеви + традиционални кинески бројеви + традиционални кинески финансијски бројеви + хебрејски бројеви + Хебрејски календар + Сортирај све + Индијски национални календар + Исламски календар + Исламски цивилни календар + Јапански календар + јапански бројеви + јапански финансијски бројеви + кмерске цифре + канада цифре + лаошке цифре + западне цифре + Сортирај прво мала слова + малајалам цифре + монголске цифре + мијанмарске цифре + Локалне цифре + Сортирај акценте нормално + Сортирај нормалан редослед великих и малих слова + Сортирај без обзира на велика и мала слова + Сортирај кана симболе одвојено + Сортирај без нормализације + Сортирај цифре појединачно + Сортирај симболе + орија цифре + персијски календар + Сортирање као телефонски именик + Фонетски редослед сортирања + Пињин сортирање + Сортирај само основна слова + Сортирај акценте/мала и велика слова/ширину/кана симболе + Реформисани редослед сортирања + Календар Републике Кине + римски бројеви + мали римски бројеви + Опште намењена претрага + Претрага према хангул почетном сугласнику + Сортирај акценте + Сортирање уз игнорисање симбола + стандардни редослед сортирања + Сортирање по броју црта + тамилски бројеви + тамилске цифре + телугу цифре + Сортирај акценте/мала и велика слова/ширину + тајске цифре + тибетанске цифре + Традиционално сортирање + Традиционални бројеви + Редослед сортирања радикалним цртицама + Сортирај прво велика слова + Ваи цифре + Сортирај акценте обрнуто + Сортирај мала и велика слова + Сортирај кана симболе другачије + Сортирај Unicode нормализовано + Сортирај цифре нумерички + + + БГН (BGN) + Нумеричка + Тон + УНГЕГН (BGN) + Акценти + пуна ширина + пола ширине + Џамо + Пинјин + Издавачки + + + Метрички + империјални + САД + + + Језик: {0} + Скрипт: {0} + Регион: {0} + + + + [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш] + [ё й щ ъ ы ь э ю я] + [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш] + [\- ‐ – , ; \: ! ? . … ‘ ‚ “ „ ( ) \[ \] \{ \} * #] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + БЕ + + + + + + + + Таут + Баба + Хатор + Киахк + Тоба + Амшир + Барамхат + Барамуда + Башанс + Паона + Епеп + Месра + Наси + + + + + + + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Јекатит + Мегабит + Миазиа + Генбот + Сене + Хамле + Нехасе + Пагумен + + + + + + + + + EEEE, dd. MMMM y. G + + + + + dd. MMMM y. G + + + + + dd.MM.y. G + + + + + d.M.y. GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d. + y. G + MMM y. G + d. MMM y. G + E, d. MMM y. G + hh a + HH + hh.mm a + HH.mm + hh.mm.ss a + HH.mm.ss + L + d/M + E, M-d + MM-dd + LLL + d. MMM + dd.MMM + E d. MMM + d. MMMM + E d. MMMM + mm.ss + y. G + y. G + M.y. G + d.M.y. G + E, d.M.y. G + MM.y. G + dd.MM.y. G + MMM y. G + d. MMM y. G + E, d. MMM y. G + MMMM y. G + QQQ, y. G + QQQQ y. G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h.mm a - h.mm a + h.mm-h.mm a + h.mm-h.mm a + + + HH.mm-HH.mm + HH.mm-HH.mm + + + h.mm a - h.mm a v + h.mm-h.mm a v + h.mm-h.mm a v + + + HH.mm-HH.mm v + HH.mm-HH.mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + MMM-MMM + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y-y + + + y M - M + M.y - M.y + + + d.M.y. - d.M.y. + d.M.y. - d.M.y. + d.M.y. - d.M.y. + + + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + + + MMM-MMM y. + MMM y. - MMM y. + + + dd.-dd. MMM y. + dd. MMM - dd. MMM y. + dd. MMM y. - dd. MMM y. + + + E, dd. - E, dd. MMM y. + E, dd. MMM - E, dd. MMM y. + E, dd. MMM y. - E, dd. MMM y. + + + y-MM – MM + y-MM – y-MM + + + + + + + + + јан + феб + мар + апр + мај + јун + јул + авг + сеп + окт + нов + дец + + + ј + ф + м + а + м + ј + ј + а + с + о + н + д + + + јануар + фебруар + март + април + мај + јун + јул + август + септембар + октобар + новембар + децембар + + + + + јан + феб + мар + апр + мај + јун + јул + авг + сеп + окт + нов + дец + + + ј + ф + м + а + м + ј + ј + а + с + о + н + д + + + јануар + фебруар + март + април + мај + јун + јул + август + септембар + октобар + новембар + децембар + + + + + + + нед + пон + уто + сре + чет + пет + суб + + + н + п + у + с + ч + п + с + + + нед + пон + уто + сре + чет + пет + суб + + + недеља + понедељак + уторак + среда + четвртак + петак + субота + + + + + нед + пон + уто + сре + чет + пет + суб + + + н + п + у + с + ч + п + с + + + не + по + ут + ср + че + пе + су + + + недеља + понедељак + уторак + среда + четвртак + петак + субота + + + + + + + К1 + К2 + К3 + К4 + + + 1. + 2. + 3. + 4. + + + Прво тромесечје + Друго тромесечје + Треће тромесечје + Четврто тромесечје + + + + + К1 + К2 + К3 + К4 + + + 1. + 2. + 3. + 4. + + + Прво тромесечје + Друго тромесечје + Треће тромесечје + Четврто тромесечје + + + + + + + пре подне + поподне + + + + + + Пре нове ере + Нове ере + + + п. н. е. + н. е. + + + п.н.е. + н.е. + + + + + + EEEE, dd. MMMM y. + + + + + dd. MMMM y. + + + + + dd.MM.y. + + + + + d.M.yy. + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d. + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y. G + MMM y. G + d. MMM y. G + E, d. MMM y. G + hh a + HH + hh.mm a + HH.mm + hh.mm.ss a + HH.mm.ss + L + d/M + E, M-d + MM-dd + LLL + d. MMM + dd.MMM + E d. MMM + d. MMMM + E d. MMMM + mm.ss + y. + M.y. + d.M.y. + E, d.M.y. + MM.y. + dd.MM.y. + MMM y. + d. MMM y. + E, d. MMM y. + MMMM y. + QQQ. y + QQQQ. y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h.mm a - h.mm a + h.mm-h.mm a + h.mm-h.mm a + + + HH.mm-HH.mm + HH.mm-HH.mm + + + h.mm a - h.mm a v + h.mm-h.mm a v + h.mm-h.mm a v + + + HH.mm-HH.mm v + HH.mm-HH.mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + MMM-MMM + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y-y + + + y M - M + y M - M + + + d.M.y. - d.M.y. + d.M.y. - d.M.y. + d.M.y. - d.M.y. + + + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + + + MMM-MMM y. + MMM y. - MMM y. + + + dd.-dd. MMM y. + dd. MMM - dd. MMM y. + dd. MMM y. - dd. MMM y. + + + E, dd. - E, dd. MMM y. + E, dd. MMM - E, dd. MMM y. + E, dd. MMM y. - E, dd. MMM y. + + + y-MM – MM + y-MM – y-MM + + + + + + + + + Тишри + Хешван + Кислев + Тевет + Шеват + Адар I + Адар + Адар II + Нисан + Ијар + Сиван + Тамуз + Ав + Елул + + + + + + + + + Чаитра + Ваисака + Јиаиста + Асада + Сравана + Бадра + Асвина + Картика + Аргајана + Пауза + Мага + Фалгуна + + + + + + САКА + + + + + + + + Мух. + Саф. + Реб. 1 + Реб 2 + Џум. 1 + Џум. 2 + Реџ. + Ша. + Рам. + Ше. + Зул-к. + Зул-х. + + + Мурахам + Сафар + Рабиʻ I + Рабиʻ II + Јумада I + Јумада II + Рађаб + Шаʻбан + Рамадан + Шавал + Дуʻл-Киʻда + Дуʻл-хиђа + + + + + Мухарем + Сафер + Реби 1 + Реби 2 + Џумаде 1 + Џумаде 2 + Реџеб + Шаʻбан + Рамазан + Шевал + Зул-каде + Зул-хиџе + + + + + + АХ + + + + + + + Таика (645-650) + Хакучи (650-671) + Хакухо (672-686) + Шучо (686-701) + Таихо (701-704) + Кеиун (704-708) + Вадо (708-715) + Реики (715-717) + Јоро (717-724) + Јинки (724-729) + Темпио (729-749) + Темпио-кампо (749-749) + Темпио-шохо (749-757) + Темпио-хођи (757-765) + Темпо-ђинго (765-767) + Ђинго-кеиун (767-770) + Хоки (770-780) + Тен-о (781-782) + Енрјаку (782-806) + Даидо (806-810) + Конин (810-824) + Тенчо (824-834) + Шова (834-848) + Кајо (848-851) + Нињу (851-854) + Саико (854-857) + Тенан (857-859) + Јоган (859-877) + Генкеи (877-885) + Ниња (885-889) + Кампјо (889-898) + Шотаи (898-901) + Енђи (901-923) + Енчо (923-931) + Шохеи (931-938) + Тенгјо (938-947) + Тенриаку (947-957) + Тентоку (957-961) + Ова (961-964) + Кохо (964-968) + Ана (968-970) + Тенроку (970-973) + Тен-ен (973-976) + Јоген (976-978) + Тенген (978-983) + Еикан (983-985) + Кана (985-987) + Еи-ен (987-989) + Еисо (989-990) + Шорјаку (990-995) + Чотоку (995-999) + Чохо (999-1004) + Канко (1004-1012) + Чова (1012-1017) + Канин (1017-1021) + Ђиан (1021-1024) + Мању (1024-1028) + Чоген (1028-1037) + Чорјаку (1037-1040) + Чокју (1040-1044) + Кантоку (1044-1046) + Еишо (1046-1053) + Тенђи (1053-1058) + Кохеи (1058-1065) + Ђирјаку (1065-1069) + Енкју (1069-1074) + Шохо (1074-1077) + Шорјаку (1077-1081) + Еишо (1081-1084) + Отоку (1084-1087) + Канђи (1087-1094) + Кахо (1094-1096) + Еичо (1096-1097) + Шотоку (1097-1099) + Кова (1099-1104) + Чођи (1104-1106) + Кашо (1106-1108) + Тенин (1108-1110) + Тен-еи (1110-1113) + Еикју (1113-1118) + Ђен-еи (1118-1120) + Хоан (1120-1124) + Тенђи (1124-1126) + Даиђи (1126-1131) + Теншо (1131-1132) + Чошао (1132-1135) + Хоен (1135-1141) + Еиђи (1141-1142) + Кођи (1142-1144) + Тењо (1144-1145) + Кјуан (1145-1151) + Нинпеи (1151-1154) + Кјују (1154-1156) + Хоген (1156-1159) + Хеиђи (1159-1160) + Еирјаку (1160-1161) + Охо (1161-1163) + Чокан (1163-1165) + Еиман (1165-1166) + Нин-ан (1166-1169) + Као (1169-1171) + Шоан (1171-1175) + Анген (1175-1177) + Ђишо (1177-1181) + Јова (1181-1182) + Ђуеи (1182-1184) + Генрјуку (1184-1185) + Бунђи (1185-1190) + Кенкју (1190-1199) + Шођи (1199-1201) + Кенин (1201-1204) + Генкју (1204-1206) + Кен-еи (1206-1207) + Шоген (1207-1211) + Кенрјаку (1211-1213) + Кенпо (1213-1219) + Шокју (1219-1222) + Ђу (1222-1224) + Ђенин (1224-1225) + Кароку (1225-1227) + Антеи (1227-1229) + Канки (1229-1232) + Ђоеи (1232-1233) + Темпуку (1233-1234) + Бунрјаку (1234-1235) + Катеи (1235-1238) + Рјакунин (1238-1239) + Ен-о (1239-1240) + Нињи (1240-1243) + Канген (1243-1247) + Хођи (1247-1249) + Кенчо (1249-1256) + Коген (1256-1257) + Шока (1257-1259) + Шоген (1259-1260) + Бун-о (1260-1261) + Кочо (1261-1264) + Бун-еи (1264-1275) + Кенђи (1275-1278) + Коан (1278-1288) + Шу (1288-1293) + Еинин (1293-1299) + Шоан (1299-1302) + Кенген (1302-1303) + Каген (1303-1306) + Токуђи (1306-1308) + Енкеи (1308-1311) + Очо (1311-1312) + Шова (1312-1317) + Бунпо (1317-1319) + Ђено (1319-1321) + Ђенкјо (1321-1324) + Шочу (1324-1326) + Кареки (1326-1329) + Гентоку (1329-1331) + Генко (1331-1334) + Кему (1334-1336) + Енген (1336-1340) + Кококу (1340-1346) + Шохеи (1346-1370) + Кентоку (1370-1372) + Бучу (1372-1375) + Тењу (1375-1379) + Корјаку (1379-1381) + Кова (1381-1384) + Генчу (1384-1392) + Меитоку (1384-1387) + Какеи (1387-1389) + Ку (1389-1390) + Меитоку (1390-1394) + Оеи (1394-1428) + Шочо (1428-1429) + Еикјо (1429-1441) + Какитсу (1441-1444) + Бун-ан (1444-1449) + Хотоку (1449-1452) + Кјотоку (1452-1455) + Кошо (1455-1457) + Чороку (1457-1460) + Каншо (1460-1466) + Буншо (1466-1467) + Онин (1467-1469) + Бунмеи (1469-1487) + Чокјо (1487-1489) + Ентоку (1489-1492) + Меио (1492-1501) + Бунки (1501-1504) + Еишо (1504-1521) + Таиеи (1521-1528) + Кјороку (1528-1532) + Тенмон (1532-1555) + Кођи (1555-1558) + Еироку (1558-1570) + Генки (1570-1573) + Теншо (1573-1592) + Бунроку (1592-1596) + Кеичо (1596-1615) + Генва (1615-1624) + Кан-еи (1624-1644) + Шохо (1644-1648) + Кеиан (1648-1652) + Шу (1652-1655) + Меирјаку (1655-1658) + Мањи (1658-1661) + Канбун (1661-1673) + Енпо (1673-1681) + Тенва (1681-1684) + Јокјо (1684-1688) + Генроку (1688-1704) + Хоеи (1704-1711) + Шотоку (1711-1716) + Кјохо (1716-1736) + Генбун (1736-1741) + Канпо (1741-1744) + Енкјо (1744-1748) + Кан-ен (1748-1751) + Хорјаку (1751-1764) + Меива (1764-1772) + Ан-еи (1772-1781) + Тенмеи (1781-1789) + Кансеи (1789-1801) + Кјова (1801-1804) + Бунка (1804-1818) + Бунсеи (1818-1830) + Тенпо (1830-1844) + Кока (1844-1848) + Каеи (1848-1854) + Ансеи (1854-1860) + Ман-ен (1860-1861) + Бункју (1861-1864) + Генђи (1864-1865) + Кеико (1865-1868) + Меиђи + Таишо + Шова + Хаисеи + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/yy G + + + + + + + + + Фаравадин + Ордибехешт + Кордад + Тир + Мордад + Шахривар + Мехр + Абан + Азар + Деј + Бахман + Есфанд + + + + + + АП + + + + + + + Пре РК + РК + + + + + + + ера + + + година + Прошле године + Ове године + Следеће године + + за {0} годину + за {0} године + за {0} година + + + пре {0} године + пре {0} године + пре {0} година + + + + месец + Прошлог месеца + Овог месеца + Следећег месеца + + за {0} месец + за {0} месеца + за {0} месеци + + + пре {0} месеца + пре {0} месеца + пре {0} месеци + + + + недеља + Прошле недеље + Ове недеље + Следеће недеље + + за {0} недељу + за {0} недеље + за {0} недеља + + + пре {0} недеље + пре {0} недеље + пре {0} недеља + + + + дан + прекјуче + јуче + данас + сутра + прекосутра + + за {0} дан + за {0} дана + за {0} дана + + + пре {0} дана + пре {0} дана + пре {0} дана + + + + дан у недељи + + + прошле недеље + ове недеље + следеће недеље + + + прошлог понедељка + овог понедељка + следећег понедељка + + + прошлог уторка + овог уторка + следећег уторка + + + прошле среде + ове среде + следеће среде + + + прошлог четвртка + овог четвртка + следећег четвртка + + + прошлог петка + овог петка + следећег петка + + + прошле суботе + ове суботе + следеће суботе + + + пре подне/поподне + + + час + + за {0} сат + за {0} сата + за {0} сати + + + пре {0} сата + пре {0} сата + пре {0} сати + + + + минут + + за {0} минут + за {0} минута + за {0} минута + + + пре {0} минута + пре {0} минута + пре {0} минута + + + + секунд + сада + + за {0} секунду + за {0} секунде + за {0} секунди + + + пре {0} секунде + пре {0} секунде + пре {0} секунди + + + + зона + + + + +HHmm;-HHmm + GMT{0} + GMT + Време у земљи: {0} + {0}, летње време + {0}, стандардно време + {1} ({0}) + + Непознат или неважећи град + + + Андора + + + Дубаи + + + Кабул + + + Антигва + + + Ангвила + + + Тирана + + + Јереван + + + Луанда + + + Ротера + + + Палмер + + + Шова + + + Мосон + + + Дејвис + + + Восток + + + Касеј + + + Димон д’Урвил + + + Макмурдо + + + Рио Гелегос + + + Мендоза + + + Сан Хуан + + + Ушуаија + + + Ла Риоја + + + Сан Луи + + + Катамарка + + + Салта + + + Жужуи + + + Тукуман + + + Кордоба + + + Буенос Аирес + + + Паго Паго + + + Беч + + + Перт + + + Иукла + + + Дарвин + + + Аделаида + + + Брокен Хил + + + Курие + + + Мелбурн + + + Хобарт + + + Линдеман + + + Сиднеј + + + Бризбејн + + + Меквори + + + Лорд Хов + + + Аруба + + + Марихамн + + + Баку + + + Сарајево + + + Барбадос + + + Дака + + + Брисел + + + Уагадугу + + + Софија + + + Бахреин + + + Буџумбура + + + Порто Ново + + + Св. Бартоломeј + + + Бермуда + + + Брунеји + + + Ла Паз + + + Кралендајк + + + Еирунепе + + + Рио Бранко + + + Порто Вељо + + + Боа Виста + + + Манаус + + + Куиаба + + + Сантарем + + + Кампо Гранде + + + Белем + + + Арагвајана + + + Сао Паоло + + + Бахиа + + + Форталеза + + + Масејо + + + Ресифе + + + Нороња + + + Насау + + + Тимпу + + + Габорон + + + Минск + + + Белизе + + + Досон + + + Вајтхорс + + + Инувик + + + Ванкувер + + + Досон Крик + + + Крестон + + + Јелоунајф + + + Едмонтон + + + Свифт Курент + + + Кембриџ Беј + + + Регина + + + Винипег + + + Ресолут + + + Рејни Ривер + + + Ранкин Инлет + + + Корал Харбур + + + Тандер Беј + + + Нипигон + + + Торонто + + + Иквалуит + + + Пангниртунг + + + Монктон + + + Халифакс + + + Гус Беј + + + Глејс Беј + + + Бланк-Сејблон + + + Св. Џон + + + Кокос + + + Киншаса + + + Лумумбаши + + + Бангуи + + + Бразавил + + + Цирих + + + Абиџан + + + Раротонга + + + Ускршње острво + + + Сантијаго + + + Дуала + + + Кашгар + + + Урумкви + + + Чонгкинг + + + Шангај + + + Харбин + + + Богота + + + Костарика + + + Хавана + + + Зеленортска Острва + + + Кирасо + + + Божић + + + Никозија + + + Праг + + + Бисинген + + + Берлин + + + Џибути + + + Копенхаген + + + Доминика + + + Санто Доминго + + + алжирско + + + Галапагос + + + Гвајакил + + + Талин + + + Каиро + + + Ел Ајун + + + Асмера + + + Канарска острва + + + Сеута + + + Мадрид + + + Адис Абеба + + + Хелсинки + + + Фиџи + + + Стенли + + + Трук + + + Понапе + + + Кошре + + + Фарска острва + + + Париз + + + Либревил + + + + британско летње време + + Лондон + + + Гренада + + + Тбилиси + + + Кајен + + + Гернзи + + + Акра + + + Гибралтар + + + Туле + + + Готхаб + + + Скорезбисунд + + + Данмарксхаген + + + Банжул + + + Конакри + + + Гвадалупе + + + Малабо + + + Атина + + + Јужна Џорџија + + + Гватемала + + + Гуам + + + Бисао + + + Гуана + + + Хонг Конг + + + Тегусигалпа + + + Загреб + + + Порт-о-Пренс + + + Будимпешта + + + Џакарта + + + Понтианак + + + Макасар + + + Џајапура + + + + ирско летње време + + Даблин + + + Јерусалим + + + Острво Ман + + + Калкута + + + Чагос + + + Багдад + + + Техеран + + + Рејкјавик + + + Рим + + + Џерси + + + Јамајка + + + Аман + + + Токио + + + Најроби + + + Бишкек + + + Пном Пен + + + Ендербери + + + Киритимати + + + Тарава + + + Коморо + + + Сент Китс + + + Пјонгјанг + + + Сеул + + + Кувајт + + + Кајманска острва + + + Актау + + + Орал + + + Акутобе + + + Кизилорда + + + Алмати + + + Вијентијан + + + Бејрут + + + Св. Луција + + + Вадуз + + + Коломбо + + + Монровија + + + Масеру + + + Виљнус + + + Луксембург + + + Рига + + + Триполи + + + Казабланка + + + Монако + + + Кишињев + + + Подгорица + + + Мариго + + + Антананариво + + + Кваџалејин + + + Мајуро + + + Скопље + + + Бамако + + + Рангун + + + Ховд + + + Улан Батор + + + Чојбалсан + + + Макау + + + Сајпан + + + Мартиник + + + Навакшут + + + Монтсерат + + + Малта + + + Маурицијус + + + Малдиви + + + Блантир + + + Тихуана + + + Санта Изабел + + + Хермосиљо + + + Мазатлан + + + Чихуахуа + + + Баија Бандерас + + + Охинага + + + Монтереј + + + Мексико Сити + + + Матаморос + + + Мерида + + + Канкун + + + Куала Лумпур + + + Кучинг + + + Мапуто + + + Виндхук + + + Нумеа + + + Нијамеј + + + Норфолк + + + Лагос + + + Манагва + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ниуе + + + Катхам + + + Окланд + + + Мускат + + + Панама + + + Лима + + + Тахити + + + Маркиз + + + Гамбије + + + Порт Морзби + + + Манила + + + Карачи + + + Варшава + + + Микелон + + + Питкаирн + + + Порто Рико + + + Газа + + + Хеброн + + + Азори + + + Мадера + + + Лисабон + + + Палау + + + Асунсион + + + Катар + + + Реунион + + + Букурешт + + + Београд + + + Калининград + + + Москва + + + Волгоград + + + Самара + + + Јекатеринбург + + + Омск + + + Новосибирск + + + Новокузњецк + + + Краснојарск + + + Иркуцк + + + Јакутск + + + Владивосток + + + Хандига + + + Сахалин + + + Уст-Нера + + + Магадан + + + Камчатка + + + Анадир + + + Кигали + + + Ријад + + + Гвадалканал + + + Махе + + + Картум + + + Стокхолм + + + Сингапур + + + Св. Јелена + + + Љубљана + + + Лонгјербјен + + + Братислава + + + Фритаун + + + Сан Марино + + + Дакар + + + Могадиш + + + Парамирбо + + + Џуба + + + Сао Томе + + + Салвадор + + + Лоуер Принсиз Квортер + + + Дамаск + + + Мбабане + + + Гранд Турк + + + Нџамена + + + Кергелен + + + Ломе + + + Банкок + + + Душанбе + + + Факаофо + + + Дили + + + Ашхабад + + + тунижанско + + + Тонгатапу + + + Истанбул + + + Порт оф Спејн + + + Фунафути + + + Тајпеј + + + Дар-ес-Салам + + + Ужгород + + + Кијев + + + Симферопол + + + Запорожје + + + Кампала + + + Мидвеј + + + Џонстон + + + Вејк + + + Адак + + + Ном + + + Хонолулу + + + Енкориџ + + + Јакутат + + + Ситка + + + Жуно + + + Метлакатла + + + Лос Анђелес + + + Бојзи + + + Феникс + + + Денвер + + + Бијула, Северна Дакота + + + Нови Салем, Северна Даткоа + + + Центар, Северна Дакота + + + Чикаго + + + Меномини + + + Винценес, Индијана + + + Петерсбург, Индијана + + + Тел Сити + + + Кнокс, Индијана + + + Винамак, Индијана + + + Маренго, Индијана + + + Индианаполис + + + Луивиле + + + Вевај, Индијана + + + Монтичело, Кентаки + + + Детроит + + + Њујорк + + + Монтевидео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сент Винсент + + + Каракас + + + Тортола + + + Св. Тома + + + Хо Ши Мин + + + Ефат + + + Валис + + + Апија + + + Аден + + + Мајот + + + Јоханесбург + + + Лусака + + + Хараре + + + + Акре време + Акре стандардно време + Акре летње рачунање времена + + + + + Авганистан време + + + + + Централно-афричко време + + + + + Источно-афричко време + + + + + Јужно-афричко време + + + + + Западно-афричко време + Западно-афричко стандардно време + Западно-афричко летње рачунање времена + + + + + Аљашко време + Аљашко стандардно време + Аљашко летње време + + + + + Алмати време + Алмати стандардно време + Алмати летње рачунање времена + + + + + Амазон време + Амазон стандардно време + Амазон летње рачунање времена + + + + + Северноамерички Централно време + Северноамерички Централно стандардно време + Северноамерички Централно летње рачунање времена + + + + + Северноамерички Источно време + Северноамерички Источно стандардно време + Северноамерички Источно летње рачунање времена + + + + + Северноамерички Планинско време + Северноамерички Планинско стандардно време + Северноамерички Планинско летње рачунање времена + + + + + Северноамерички Пацифичко време + Северноамерички Пацифичко стандардно време + Северноамерички Пацифичко летње рачунање времена + + + + + Анадир време + Анадир стандардно време + Анадир летње рачунање времена + + + + + Акватау време + Акватау стандардно време + Акватау летње рачунање времена + + + + + Акутобе време + Акутобе стандардно време + Акутобе летње рачунање времена + + + + + Арабијско време + Арабијско стандардно време + Арабијско летње рачунање времена + + + + + Аргентина време + Аргентина стандардно време + Аргентина летње рачунање времена + + + + + Западна Аргентина време + Западна Аргентина стандардно време + Западна Аргентина летње рачунање времена + + + + + Арменија време + Арменија стандардно време + Арменија летње рачунање времена + + + + + Атланско време + Атланско стандардно време + Атланско лтње рачунање времена + + + + + Аустралијско централно време + Аустралијско централно стандардно време + Аустралијско централно летње рачунање времена + + + + + Аустралијско централно западно време + Аустралијско централно западно стандардно време + Аустралијско централно западно летње рачунање времена + + + + + Аустралијско источно време + Аустралијско источно стандардно време + Аустралијско источно летње рачунање времена + + + + + Аустралијско западно време + Аустралијско западно стандардно време + Аустралијско западно летње рачунање времена + + + + + Азербејџан време + Азербејџан стандардно време + Азербејџан летње рачунање времена + + + + + Азори време + Азори стандардно време + Азори летње рачунање времена + + + + + Бангладеш време + Бангладеш стандардно време + Бангладеш летње рачунање времена + + + + + Бутан време + + + + + Боливија време + + + + + Бразилија време + Бразилија стандардно време + Бразилија летње рачунање времена + + + + + Брунеј Дарусалум време + + + + + Зелениртско време + Зелениртско стандардно време + Зеленортско летње рачунање времена + + + + + Чаморо време + + + + + Чатам време + Чатам стандардно време + Чатам летње рачунање времена + + + + + Чиле време + Чиле стандардно време + Чиле летње рачунање времена + + + + + Кина време + Кинеско стандардно време + Кина летње рачунање времена + + + + + Чојбалсан време + Чојбалсан стандардно време + Чојбалсан летње рачунање времена + + + + + Божићна острва време + + + + + Кокос (Келинг) Острва време + + + + + Колумбија време + Колумбија стандардно време + Колумбија летње рачунање времена + + + + + Кукова острва време + Кукова острва стандардно време + Кукова острва полу-летње рачунање времена + + + + + Куба време + Куба стандардно време + Куба летње рачунање времена + + + + + Дејвис време + + + + + Димон д’Урвил време + + + + + Источни тимор време + + + + + Ускршња острва време + Ускршња острва стандардно време + Ускршња острва летње рачунање времена + + + + + Еквадор време + + + + + Средњеевропско време + Средњеевропско стандардно време + Средњеевропско летње рачунање времена + + + CET + CET + CEST + + + + + Источноевропско време + Источноевропско стандардно време + Источноевропско летње рачунање времена + + + EET + EET + EEST + + + + + Западноевропско време + Западноевропско стандардно време + Западноевропско летње рачунање времена + + + WET + WET + WEST + + + + + Фолкландска Острва време + Фолкландска Острва стандардно време + Фолкландска Острва летње рачунање времена + + + + + Фиџи време + Фиџи стандардно време + Фиџи летње рачунање времена + + + + + Француска Гвајана време + + + + + Француско јужно и антарктичко време + + + + + Галапагос време + + + + + Гамбијер време + + + + + Грузија време + Грузија стандардно време + Грузија летње рачунање времена + + + + + Гилберт острва време + + + + + Гринвич средње време + + + GMT + + + + + Источни Гренланд време + Источни Гренланд стандардно време + Источни Гренланд летње рачунање времена + + + + + Западни Гренланд време + Западни Гренланд стандардно време + Западни Гренланд летње рачунање времена + + + + + Гуам стандардно време + + + + + Залив време + + + + + Гвајана време + + + + + Хавајско-алеутско време + Хавајско-алеутско стандардно време + Хавајско-алеутско летње рачунање времена + + + + + Хонг Конг време + Хонг Конг стандардно време + Хонг Конг летње рачунање времена + + + + + Ховд време + Ховд стандардно време + Ховд летње рачунање времена + + + + + Индијско стандардно време + + + + + Индијско океанско време + + + + + Индокина време + + + + + Централно-индонезијско време + + + + + Источно-индонезијско време + + + + + Западно-индонезијско време + + + + + Иран време + Иран стандардно време + Иран летње рачунање времена + + + + + Иркуцк време + Иркуцк стандардно време + Иркуцк летње рачунање времена + + + + + Израелско време + Израелско стандардно време + Израелско летње рачунање времена + + + + + Јапанско време + Јапанско стандардно време + Јапанско летње рачунање времена + + + + + Петропавловско-камчатско време + Петропавловско-камчатско стандардно време + Петропавловско-камчатско летње рачунање времена + + + + + Источно-казахстанско време + + + + + Западно-казахстанско време + + + + + Корејско време + Корејско стандардно време + Корејско летње рачунање времена + + + + + Кошре време + + + + + Краснојарск време + Краснојарск стандардно време + Краснојарск летње рачунање времена + + + + + Киргизстан време + + + + + Шри Ланка време + + + + + Лине Острва време + + + + + Лорд Хов време + Лорд Хов стандардно време + Лорд Хов летње рачунање времена + + + + + Макао време + Макао стандардно време + Макао летње рачунање времена + + + + + Макверијско време + + + + + Магадан време + Магадан стандардно време + Магадан летње рачунање времена + + + + + Малезија време + + + + + Малдиви време + + + + + Маркиз време + + + + + Маршалска Острва време + + + + + Маурицијус време + Маурицијус стандардно време + Маурицијус летње рачунање времена + + + + + Мосон време + + + + + Улан Батор време + Улан Батор стандардно време + Улан Батор летње рачунање времена + + + + + Москва време + Москва стандардно време + Москва летње рачунање времена + + + + + Мијанмар време + + + + + Науру време + + + + + Непал време + + + + + Нова Каледонија време + Нова Каледонија стандардно време + Нова Каледонија летње рачунање времена + + + + + Нови Зеланд време + Нови Зеланд стандардно време + Нови Зеланд летње рачунање времена + + + + + Њуфаундленд време + Њуфаундленд стандардно време + Њуфаундленд летње рачунање времена + + + + + Ниуе време + + + + + Норфолк Острво време + + + + + Фернандо де Нороња време + Фернандо де Нороња стандардно време + Фернандо де Нороња летње рачунање времена + + + + + Северна Маријанска Острва време + + + + + Новосибирск време + Новосибирск стандардно време + Новосибирск летње рачунање времена + + + + + Омск време + Омск стандардно време + Омск летње рачунање времена + + + + + Пакистан време + Пакистан стандардно време + Пакистан летње рачунање времена + + + + + Палау време + + + + + Папуа Нова Гвинеја време + + + + + Парагвај време + Парагвај стандардно време + Парагвај летње рачунање времена + + + + + Перу време + Перу стандардно време + Перу летње рачунање времена + + + + + Филипини време + Филипини стандардно време + Филипини летње рачунање времена + + + + + Феникс острва време + + + + + Сен Пјер и Микелон време + Сен Пјер и Микелон стандардно време + Сен Пјер и Микелон летње рачунање времена + + + + + Питкерн време + + + + + Понпеи време + + + + + Кизилорда време + Кизилорда стандардно време + Кизилорда летње рачунање времена + + + + + Реинион време + + + + + Ротера време + + + + + Сахалин време + Сахалин стандардно време + Сахалин летње рачунање времена + + + + + Самара време + Самара стандардно време + Самара летње рачунање времена + + + + + Самоа време + Самоа стандардно време + Самоа летње рачунање времена + + + + + Сејшели време + + + + + Сингапур стандардно време + + + + + Соломонска Острва време + + + + + Јужна Џорџија време + + + + + Суринам + + + + + Шова време + + + + + Тахити време + + + + + Таипеи време + Таипеи стандардно време + Таипеи летње рачунање времена + + + + + Таџикистан време + + + + + Токелау време + + + + + Тонга време + Тонга стандардно време + Тонга летње рачунање времена + + + + + Чуук време + + + + + Туркменистан време + Туркменистан стандардно време + Туркменистан летње рачунање времена + + + + + Тувалу време + + + + + Уругвај време + Уругвај стандардно време + Уругвај летње рачунање времена + + + + + Узбекистан време + Узбекистан стандардно време + Узбекистан летње рачунање времена + + + + + Вануату време + Вануату стандардно време + Вануату летње рачунање времена + + + + + Венецуела време + + + + + Владивосток време + Владивосток стандардно време + Владивосток летње рачунање времена + + + + + Волгоград време + Волгоград стандардно време + Волгоград летње рачунање времена + + + + + Восток време + + + + + Вејк острво време + + + + + Валис и Футуна Острва време + + + + + Јакутск време + Јакутск стандардно време + Јакутск летње рачунање времена + + + + + Јекатеринбург време + Јекатеринбург стандардно време + Јекатеринбург летње рачунање времена + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 хиљада + 0 хиљаде + 0 хиљада + 00 хиљада + 00 хиљаде + 00 хиљада + 000 хиљада + 000 хиљаде + 000 хиљада + 0 милион + 0 милиона + 0 милиона + 00 милион + 00 милиона + 00 милиона + 000 милион + 000 милиона + 000 милиона + 0 милијарда + 0 милијарде + 0 милијарди + 00 милијарда + 00 милијарде + 00 милијарди + 000 милијарда + 000 милијарде + 000 милијарди + 0 трилион + 0 трилиона + 0 трилиона + 00 трилион + 00 трилиона + 00 трилиона + 000 трилион + 000 трилиона + 000 трилиона + + + + + 0 + 0 + 0 + 00 хиљ + 00K + 00 хиљ + 000 хиљ + 000K + 000 хиљ + 0 мил + 0 мил + 0 мил + 00 мил + 00 мил + 00 мил + 000 мил + 000 мил + 000 мил + 0 млрд + 0 млрд + 0 млрд + 00 млрд + 00 млрд + 00 млрд + 000 млрд + 000 млрд + 000 млрд + 0 бил + 0 бил + 0 бил + 00 бил + 00 бил + 00 бил + 000 бил + 000 бил + 000 бил + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + {0} {1} + + + + Андорска пезета + андорска пезета + андорске пезете + андорске пезете + + + Уједињени арапски емирати дирхам + УАЕ дирам + УАЕ дирама + УАЕ дирама + + + Авганистански авгани (1927–2002) + aвганистански авгани (1927–2002) + авганистанска авгана (1927–2002) + авганистанских авгана (1927–2002) + + + Авганистански авгани + aвганистански авгани + авганистанска авгана + авганистанских авгана + + + стари албански лек + стара албанска лека + старих албанских лека + + + Албански лек + албански лек + албанске леке + албанских лека + + + Јерменски драм + јерменски драм + јерменска драма + јерменска драма + + + Холандски антили гилдер + холандско-антилски гилдер + холандска антила + холандско-антилских гилдера + + + Анголијска кванза + анголијска кванза + анголијске кванзе + анголијских кванзи + + + Анголијска кванза (1977–1990) + анголијска кванза (1977–1990) + анголијске кванзе (1977–1990) + анголијских кванзи (1977–1990) + + + Анголијска нова кванза (1990–2000) + анголијска нова кванза + анголијске нове кванзе + анголијских нових кванзи + + + Анголијска кванза реађустадо (1995–1999) + анголијска кванза реађустадо (1995–1999) + анголијске кванзе реађустадо (1995–1999) + анголијских кванзи реађустадо (1995–1999) + + + Аргентински аустрал + аргентински аустрал + аргентинска аустрала + аргентинских аустрала + + + Аргентински пезос леј + аргентински пезос леј + аргентинска пезос леја + аргентинских пезос леја + + + Аргентински пезос монедо национал + аргентински пезос монедо национал + аргентинска пезос монеда национал + аргентинских пезос монеда национала + + + Аргентински пезо (1983–1985) + аргентински пезо (1983–1985) + аргентинска пезоса (1983–1985) + аргентинских пезоса (1983–1985) + + + Аргентински пезо + аргентински пезос + аргентинска пезоса + аргентинских пезоса + + + Аустријски шилинг + аустријски шилинг + аустријска шилинга + аустријских шилинга + + + Аустралијски долар + аустралијски долар + Аустралијска долара + аустралијских долара + A$ + + + Арубански флорин + арубански флорин + арубанска флорина + арубанских флорина + + + Азербејџански манат (1993–2006) + азербејџански манат (1993–2006) + азербејџанска маната (1993–2006) + азербејџанских маната (1993–2006) + + + Азербејџански манат + азербејџански манат + азербејџанска маната + азербејџанских маната + + + Босанско-Херцеговачки динар + босанско-херцеговачки динар + босанско-херцеговачка динара + босанско-херцеговачких динара + + + Конвертибилна марка + босанско-херцеговачка конвертибилна марка + босанско-херцеговачке конвертибилне маркe + босанско-херцеговачких конвертибилних марака + КМ + + + Босанско-херцеговачки нови динар + босанско-херцеговачки нови динар + босанско-херцеговачка нова динара + босанско-херцеговачких нових динара + + + Барбадошки долар + барбадошки долар + барбадошка долара + барбадошких долара + + + Бангладешка така + бангладешка така + бангладешке таке + бангладешких така + + + Белгијски франак (конвертибилни) + белгијски франак (конвертибилни) + белгијска франка (конвертибилна) + белгијских франака (конвертибилних) + + + Белгијски франак + белгијски франак + белгијска франка + белгијских франака + + + Белгијски франак (финансијски) + белгијски франак (финансијски) + белгијска франка (финансијска) + белгијских франака (финансијских) + + + Бугарски тврди лев + бугарски тврди лев + бугарска тврда лева + бугарских тврдих лева + + + Бугарски социјалистички лев + бугарски социјалистички лев + бугарска социјалистичка лева + бугарских социјалистичких лева + + + Бугарски лев + бугарски лев + бугарска лева + бугарских лева + + + Стари бугарски лев + стари бугарски лев + стара бугарска лева + старих бугарских лева + + + Бахреински динар + бахреински динар + бахреинскa динара + бахреинских динара + + + Бурундски франак + бурундски франак + бурундска франка + бурундских франакa + + + Бермудски долар + бермудски долар + бермудска долара + бермудских долара + + + Брунејски долар + брунејски долар + брунејска долара + брунејских долара + + + Боливијски Боливиано + боливијски боливиано + боливијска боливиана + боливијских боливиана + + + Стари боливијски боливијано + стари боливијски боливијано + стара боливијска боливијана + старих боливијских боливијана + + + Боливијски пезо + боливијски пезо + боливијска пезоса + боливијских пезоса + + + Боливијски мвдол + боливијски мвдол + боливијска мвдола + боливијских мвдола + + + Бразилски нови крузеиро (1967–1986) + бразилски нови крузеиро (1967–1986) + бразилска нова крузеира (1967–1986) + бразилских нових крузеира (1967–1986) + + + Бразилијски крузадо + бразилски крузадос + бразилска крузадоса + бразилских крузадоса + + + Бразилски крузеиро (1990–1993) + бразилски крузеиро (1990–1993) + бразилска крузеира (1990–1993) + бразилских крузеира (1990–1993) + + + Бразилски Реал + бразилски реал + бразилска реала + бразилских реала + + + Бразилијски нови крузадо + бразилски нови крузадо + бразилска нова крузада + бразилских нових крузада + + + Бразилски крузеиро + бразилски крузеиро + бразилска крузеира + бразилских крузеира + + + Стари бразилски крузеиро + стари бразилски крузеиро + стара бразилска крузеира + старих бразилских крузеира + + + Бахамски долар + бахамски долар + бахамска долара + бахамских долара + + + Бутански нгултрум + бутански нгултрум + бутанска нгултрума + бутанских нгултрума + + + Бурмански кјат + бурмански кјат + бурманска кјата + бурманских кјата + + + Боцванска пула + боцванска пула + боцванске пуле + боцванских пула + + + Белоруска нова рубља (1994–1999) + белоруска нова рубља (1994–1999) + белоруске нове рубља (1994–1999) + белоруских нових рубљи (1994–1999) + + + Белоруска рубља + белоруска рубља + белоруске рубље + белоруских рубљи + + + Белизе долар + белизеански долар + белизеанска долара + белизеанских долара + + + Канадски долар + канадски долар + канадска долара + канадских долара + + + Конголски франак + конголски франак + конголска франка + конголских франака + + + WIR евро + WIR евро + WIR евра + WIR евра + + + Швајцарски франак + швајцарски франак + швајцарска франка + швајцарских франака + + + WIR франак + WIR франак + WIR франка + WIR франака + + + Чилеански ескудо + чилеански ескудо + чилеанска ескуда + чилеанских ескуда + + + Чилеовски унидадес се фоменто + чилеански унидадес де фоменто + чилеанска унидадес де фомента + чилеански унидадеси де фоменто + + + Чилеански пезо + чилеански пезо + чилеанска пезоса + чилеански пезоси + + + Долар кинеске народне банке + долар кинеске народне банке + долара кинеске народне банке + долара кинеске народне банке + + + Кинески јуан ренминби + кинески јуан + кинеска јуан + кинеских јуана + CN¥ + + + Колумбијски пезо + колумбијски пезо + колумбијска пезоса + колумбијских пезоса + + + Унидад де валоршки реал + унидад де валоршки реал + нидад де валор реала + унидад де валоршких реала + + + Костарикански колон + костарикански колон + костариканска колона + костарикански колони + + + Стари српски динар + стари српски динар + стара српска динара + старих српских динара + + + Чехословачка тврда круна + чехословачка тврда круна + чехословачке тврде круне + чехословачких тврдих круна + + + Кубански конвертибилни песо + кубански конвертибилни песо + кубанскa конвертибилнa пезосa + кубански конвертибилни пезос + + + Кубански пезо + кубански пезос + кубанска пезоса + кубанских пезоса + + + Зеленортски ескудо + зеленортски ескудо + зеленортска ескуда + зеленортских ескуда + + + Кипарска фунта + кипарска фунта + кипарске фунте + кипарских фунти + + + Чешка круна + чешка круна + чешке круне + чешких крунa + Кч + + + Источно-немачка марка + источно-немачка марка + источно-немачке марке + источно-немачких марака + + + Немачка марка + немачка марка + немачке марке + немачких марака + + + Џибутански франак + џибутански франак + џибутанскa франкa + џибутанских франакa + + + Данска круна + данска круна + данске круне + данских круна + + + Доминикански пезо + доминикански пезо + доминиканска пезоса + доминиканских пезоса + + + Алжирски динар + алжирски динар + алжирска динара + алжирских динара + + + Еквадорски сакр + еквадорски сакр + еквадорска сакра + еквадорских сакра + + + Еквадорски унидад де валор константе + еквадорски унидад де валор константе + еквадорска унидад де валор константа + еквадорских унидад де валор константа + + + Естонска кроон + естонска круна + естонске круне + естонских круна + + + Египатска фунта + египатска фунта + египатске фунте + египатских фунти + + + Eритрејска накфa + еритрејска накфа + еритрејске накфе + еритрејских накфи + + + Шпанска пезета (рачун) + шпанска пезета (А рачун) + шпанске пезете (А рачун) + шпанских пезета (А рачун) + + + Шпанска пезета (конвертибилнирачун) + шпанска пезета (конвертибилан рачун) + шпанске пезете (конвертибилан рачун) + шпанских пезета (конвертибилан рачун) + + + Шпанска пезета + шпанска пезета + шпанска пезета + шпанске пезете + + + Етиопијски бир + етиопијски бир + етиопијска бира + етиопијских бира + + + Евро + евро + евра + евра + + + + Финска марка + финска марка + финске марке + финских марака + + + Фиџи долар + фиџи долар + фиџи долара + фиџи долара + + + Фокландска острва фунта + фолкландска фунта + фолкландске фунте + фолкландских фунти + + + Француски франак + француски франак + француска франка + француских франака + + + Британска фунта стерлинга + британска фунта стерлинга + британске фунте стерлинга + британских фунти стерлинга + £ + + + Грузијски купон ларит + грузијски купон ларит + грузијска купон ларита + грузијских купон ларита + + + Грузијски лари + грузијски ларис + грузијска лариса + грузијских лариса + + + Гански цеди (1979–2007) + гански цед (1979–2007) + ганска цеда (1979–2007) + ганских цеда (1979–2007) + + + Гански цеди + гански цед + ганска цеда + ганских цеда + + + Гибралтарска фунта + гибралтарска фунта + гибралтарске фунте + гибралтарских фунти + + + Гамбијски даласи + гамбијски далас + гамбијска даласа + гамбијских даласа + + + Гвинејски франак + гвинејски франак + гвинејска франка + гвинејских франака + + + Гвинејски сили + гвинејски сили + гвинејска сила + гвинејских сила + + + Екваторијално-гвинејски еквеле + екваторијално-гвинејски еквеле + екваторијално-гвинејска еквела + екваторијално-гвинејских еквела + + + Грчка драхма + грчка драхма + грчке драхме + грчких драхми + + + Гватемалски квецал + гватемалски квецал + гватемалска квецала + гватемалских квецала + + + Португалска гвинеја ескудо + португалско-гвинејски ескудо + португалско-гвинејска ескуда + португалско-гвинејских ескуда + + + Гвинеја Бисао Пезо + гвинеја-бисаошки пезо + гвинеја-бисаошка пезоса + гвинеја-бисаошких пезоса + + + Гујански долар + гвајански долар + гвајанска долара + гвајанских долара + + + Хонгконшки долар + хонгконшки долар + хонгконшка долара + хонгконшких долара + HK$ + + + Хондурашка лемпира + хондурашки лемпир + хондурашка лемпира + хондурашких лемпира + + + Хрватски динар + хрватски динар + хрватска динара + хрватских динара + + + Хрватска куна + хрватска куна + хрватске куне + хрватских куна + + + Хаићански гурд + хаићански гурд + хаићанска гурда + хаићанских гурда + + + Мађарска форинта + мађарска форинта + мађарске форинте + мађарских форинти + + + Индонежанска рупија + индонежанска рупија + индонежанске рупије + индонежанских рупијa + + + Ирска фунта + ирска фунта + ирске фунте + ирских фунти + + + Израелска фунта + израелска фунта + израелске фунте + израелских фунти + + + Стари израелски шекели + стари израелски шекели + стари израелски шекели + стари израелски шекели + + + Израелски нови шекел + израелски нови шекел + израелска нова шекела + израелских нових шекела + + + + Индијска рупија + индијска рупија + индијске рупије + индијских рупија + + + + Ирачки динар + ирачки динар + ирачка динара + ирачких динара + + + Ирански риjал + ирански ријал + иранска ријала + иранских ријала + + + Стара исландска круна + стара исландска круна + стара исландска круна + стара исландска круна + + + Исландска круна + исландска круна + исландске круне + исландских круна + + + Италијанска лира + италијанска лира + италијанске лире + италијанске лире + + + Јамајкански долар + jамајкански долар + jамајканскa доларa + jамајканскиx доларa + + + Јордански динар + јордански динар + јорданскa динара + јорданских динара + + + Јапански јен + јапански јен + јапанска јена + јапанских јена + ¥ + + + Кенијски шилинг + кенијски шилинг + кенијска шилинга + кенијских шилинга + + + Киргистански сом + киргистански сом + киргистанска сома + киргистанских сома + + + Kамбоџански ријел + камбоџански ријел + камбоџанска ријела + камбоџанских ријела + + + Коморски франак + коморски франак + коморскa франкa + коморских франакa + + + Севернокорејски вон + севернокорејски вон + севернокорејска вона + севернокорејских вона + + + Јужнокорејски хван + јужнокорејски хван + јужнокорејска хвана + јужнокорејских хвана + + + Стари јужнокорејски вон + стари јужнокорејски вон + стара јужнокорејска вона + старих јужнокорејских вона + + + Јужнокорејски Вон + јужнокорејски вон + јужнокорејска вона + јужнокорејских вона + + + + Кувајтски динар + кувајтски динар + кувајтскa динара + кувајтских динара + + + Кајманска острва долар + кајмански долар + кајманска долара + кајманских долара + + + Казахстански тенџ + казахстанска тенџа + казахстанске тенџе + казахстанских тенџи + + + Лаошки кип + лаошки кип + лаошка кипа + лаошки кипи + + + Либанска фунта + либанскa фунтa + либанскe фунтe + либанских фунти + + + Шриланканскa рупиja + шриланканска рупија + шриланканскe рупијe + шриланканских рупија + + + Либеријски долар + либеријски долар + либеријска долара + либеријских долара + + + Лесото лоти + лесотски лотис + лесотска лотиса + лесотских лотиса + + + Литвански литас + литвански литас + литванска литаса + литванских литаса + + + Литвански талонас + литвански талонас + литванска талонаса + литванских талонаса + + + Луксембуршки конвертибилни франак + луксембуршки конвертибилни франак + луксембуршка конвертибилна франка + луксембуршких конвертибилних франака + + + Луксембуршки франак + луксембуршки франак + луксембуршка франка + луксембуршки франци + + + Луксембуршки финансијски франак + луксембуршки финансијски франак + луксембуршка финансијска франка + луксембуршких финансијских франака + + + Латвијски лати + латвијски лат + латвијска лата + латвијских лата + + + Латвијска рубља + латвијска рубља + латвијске рубље + латвијских рубљи + + + Либијски динар + либијски динар + либијскa динарa + либијских динарa + + + Марокански дирхам + мароканска дирхама + мароканске дирхаме + мароканских дирхама + + + Марокански франак + марокански франак + мароканска франка + мароканских франака + + + Монегаскански франак + монегаскански франак + монегасканска франка + монегасканских франака + + + Молдовански купон + молдовански купон + молдованска купона + молдованских купона + + + Молдавски леј + молдaвски леј + молдaвскa леја + молдaвских леја + + + Малагасијски ариари + малагасијски ариари + малагасијскa ариариja + малагасијских ариариja + + + Малагасијски франак + малагашајски франак + малагашајска франка + малагашајски франци + + + Македонски денар + македонски денар + македонска денара + македонских динара + + + Стари македонски денар + стари македонски денар + стара македонска денара + старих македонских денара + + + Малијански франак + малијски франак + малијска франка + малијских франака + + + Мјанмарски кјат + мјанмарски кјат + мјанмарскa кјатa + мјанмарских кјатa + + + Монголски тугрик + монголски тугрик + монголскa тугрика + монголских тугрика + + + Маканишка патака + маканешка патака + маканешке патаке + маканешких патака + + + Мауританијска oгија + мауританијска oгија + мауританијскe oгијe + мауританијских oгијa + + + Малтешка лира + малтешка лира + малтешке лире + малтешких лира + + + Малтешка фунта + малтешка фунта + малтешке фунте + малтешких фунти + + + Маурицијска рупија + маурицијска рупија + маурицијскe рупијe + маурицијских рупија + + + Малдивска руфија + малдивскa руфија + малдивскe руфијe + малдивских руфија + + + Малавијска квача + малавијска квача + малавијске кваче + малавијских квача + + + Мексички пезо + мексички пезо + мексичка пезоса + мексичких пезоса + + + Мексички сребрни пезо (1861–1992) + мексички сребрни пезо + мексичка сребрна пезоса + мексичких сребрних пезоса + + + Мексички унидад де инверсион (UDI) + мексички унидадс де инверзион + мексичка унидадс де инверзиона + мексичких унидадс де инверзиона + + + Малезијски ринггит + малезијски ринггит + малезијска ринггита + малезијских ринггита + + + Мозамбијски ескудо + мозамбијски ескудо + мозамбијска ескуда + мозамбијских ескуда + + + Стари мозамбијски метикал + стари мозамбијски метикал + стара мозамбијска метикала + старих мозамбијских метикала + + + Мозамбијски метикал + мозамбијски метикал + мозамбијска метикала + мозамбијских метикала + + + Намибијски долар + намибијски долар + намибијска долара + намибијских долара + + + Нигеријска наира + нигеријска наира + нигеријске наире + нигеријских наира + + + Никарагванска кордоба + никарагванска кордоба + никарагванске кордобе + никарагванских кордоба + + + Никарагванска златна кордоба + никарагванска златна кордоба + никарагванске златне кордобе + никарагванских златних кордоба + + + Холандски гулден + холандски гулден + холандска гулдена + холандских гулдена + + + Норвешка круна + норвешка круна + норвешке круне + норвешких круна + + + Непалскa рупиja + непалска рупија + непалске рупије + непалских рупија + + + Новозеландски долар + новозеландски долар + новозеландска долара + новозеландских долара + + + Омански ријал + омански ријал + оманскa ријала + оманских ријала + + + Панамска балбоа + панамска балбоа + панамске балбое + панамских балбоа + + + Перуански инти + перувијски инти + перувијска интија + перувијских интија + + + Перуански нуево сол + перуански нуево сол + перуанска нуево сола + перуанских нуево сола + + + Перуански сол + перуански сол + перуанска сола + перуанских сола + + + Папуанска кина + папуанска кина + папуанскe кинe + папуанских кинa + + + Филипински пезо + филипински пезо + филипинска пезоса + филипинских пезоса + + + Пакистанскa рупиja + пакистанска рупија + пакистанске рупије + пакистанских рупија + + + Пољски злот + пољски злот + пољска злота + пољских злота + зл + + + Пољски злоти (1950–1995) + пољски злот (1950–1995) + пољска злота (1950–1995) + пољских злота (1950–1995) + + + Португалски ескудо + португалски ескудо + португалска ескуда + португалских ескуда + + + Парагвајски гуарни + парагвајски гвараниј + парагвајска гваранија + парагвајских гваранија + + + Катаршки ријал + катарски ријал + катарска ријала + катарских ријала + + + Родејскидолар + родежански долар + родежанска долара + родежанских долара + + + Румунски леј + румунски леј + румунскa леја + румунских леја + + + Румунски леј (1952–2006) + румунски леј (1952–2006) + румунскa леја (1952–2006) + румунских леја (1952–2006) + + + Српски динар + српски динар + српска динара + српских динара + дин. + + + Руска рубља + руска рубља + руске рубље + руских рубљи + + + Руска рубља (1991–1998) + руска рубља (1991–1998) + руске рубље (1991–1998) + руских рубљи (1991–1998) + + + Руандски франак + руандски франак + руандскa франка + руандских франака + + + Саудијски ријал + саудијски ријал + саудијска ријала + саудијских ријала + + + Соломонско-острвски долар + соломонско-острвски долар + соломонско-острвска долара + соломонско-острвских долара + + + Сејшелска рупија + сејшелска рупија + сејшелске рупије + сејшелских рупија + + + Стари судански динар + стари судански динар + стара суданска динара + старих суданских динара + + + Суданска фунта + суданска фунта + суданске фунте + суданских фунти + + + Стара суданска фунта + стара суданска фунта + старе суданске фунте + старих суданских фунти + + + Шведска круна + шведска круна + шведске круне + шведских круна + + + Сингапурски долар + сингапурски долар + сингапурска долара + сингапурских долара + + + Св. јеленска фунта + св. јеленска фунта + св. јеленске фунте + св. јеленских фунти + + + Словеначки толар + словеначки толар + словеначка толара + словеначких толара + + + Словачка круна + словачка круна + словачке круне + словачких круна + + + Сијера-леоншки леоне + сијералеонски леоне + сијералеонска леона + сијералеонских леона + + + Сомалијски шилинг + сомалијски шилинг + сомалијска шилинга + сомалијских шилинга + + + Суринамски долар + суринамски долар + суринамска долара + суринамских долара + + + Суринамски гилдер + суринамски гилдер + суринамска гилдера + суринамских гилдера + + + Јужносуданска фунта + јужносуданска фунта + јужносуданскe фунтe + јужносуданских фунти + + + Сао Томе и Принципе добра + сао томе и принципе добар + сао томе и принципе добра + сао томе и принципе добра + + + Совјетска рубља + совјетска рубља + совјетске рубље + совјетских рубљи + + + Салвадорски колон + салвадорски колон + салвадорска колона + салвадорских колона + + + Сиријска фунта + сиријска фунта + сиријске фунте + сиријских фунти + + + Свази лилангени + свази емаланген + свази емалангена + свази емалангена + + + Таи бахт + таи бахт + таи бахта + таи бахта + ฿ + + + Таџихистанска рубља + таџихистанска рубља + таџихистанске рубље + таџихистанских рубљи + + + Tаџихистански сомон + таџихистански сомон + таџихистанска сомона + таџихистанских сомона + + + Туркменистански манат (1993–2009) + туркменистански манат (1993–2009) + туркменистанска маната (1993–2009) + туркменистански манат (1993–2009) + + + Туркменистански манат + туркменистански манат + туркменистанскa манатa + туркменистанских маната + + + Tунежански динар + тунежански динар + тунежанскa динара + тунежанских динара + + + Тонгоншка Панга + тонгашка панга + тонгашке панге + тонгашких панга + + + Тиморшки ескудо + тиморшки ескудо + тиморшка ескуда + тиморшких ескуда + + + Турска лира (1922–2005) + турска лира (1922–2005) + турске лире (1922–2005) + турских лира (1922–2005) + + + Турска лира + турска лира + турске лире + турских лира + Тл + + + Тринидад тобагошки долар + тринидад-тобагошки долар + тринидад-тобагошка долара + тринидад-тобагошких долара + + + Нови тајвански долар + нови тајвански долар + нова тајванска долара + нових тајванских долара + NT$ + + + Танзанијски шилинг + танзанијски шилинг + танзанијска шилинга + танзанијских шилинга + + + Украјинска хривња + украјинскa хривњa + украјинскe хривњe + украјинских хривњи + + + Украјински карбованети + украјински карбованец + украјинска карбованцива + украјинских карбованцива + + + Угандски шилинг (1966–1987) + угандијски шилинг (1966–1987) + угандијска шилинга (1966–1987) + угандијских шилинга (1966–1987) + + + Угандски шилинг + угандски шилинг + угандскa шилинга + угандских шилинга + + + Амерички долар + амерички долар + америчка долара + америчких долара + + + САД долар (следећи дан) + САД долар (следећи дан) + САД долара (следећи дан) + САД долара (следећи дан) + + + САД долар (исти дан) + САД долар (исти дан) + САД долара (исти дан) + САД долара (исти дан) + + + Уругвајски пезо ен унидадес индексадас + уругвајски пезо ен унидадес индексадес + уругвајска пезоса ен унидадес индексадеса + угвајских пезоса ен унидадес индексадеса + + + Уругвајски пезо (1975–1993) + уругвајски пезо (1975–1993) + уругвајска пезоса (1975–1993) + уругвајских пезоса (1975–1993) + + + Уругвајски пезо + уругвајски пезо + уругвајска пезоса + уругвајских пезоса + + + Узбекистански сом + узбекистански сом + узбекистанска сома + узбекистанских сома + + + Венецуелански боливар (1871–2008) + венецуелански боливар (1871–2008) + венецуеланска боливара (1871–2008) + венецуеланских боливара (1871–2008) + + + Венецуелански боливар + венецуелански боливар + венецуеланска боливара + венецуеланских боливара + + + Вијетнамски донг + вијетнамски донг + вијетнамска донга + вијетнамских донга + + + + Вијетнамски донг (1978–1985) + вијетнамски донг (1978–1985) + вијетнамска донга (1978–1985) + вијетнамских донга (1978–1985) + + + Вануатски вату + вануатски вату + вануатскa ватуa + вануатских ватуa + + + Самоанска тала + самоанска тала + самоанске тале + самоанских тала + + + CFA франак BEAC + CFA франак BEAC + CFA франка BEAC + CFA франака BEAC + FCFA + + + Сребро + сребро + сребра + сребра + + + Злато + злато + злата + злата + + + Европска композитна јединица + европска композитна јединица + европске композитне јединице + европских композитних јединица + + + Европска новчана јединица + европска новчана јединица (XBB) + европске новчане јединице (XBB) + европске новчане јединице (XBB) + + + Европска јединица рачуна (XBC) + европска јединица рачуна (XBC) + европске јединице рачуна (XBC) + европских јединица рачуна (XBC) + + + Европска јединица рачуна (XBD) + европска јединица рачуна (XBD) + европске јединице рачуна (XBD) + европских јединица рачуна (XBD) + + + Источно-карипски долар + источно-карипски долар + источно-карипскa доларa + источно-карипскиx доларa + + + Посебна цртаћа права + посебно цртаће право + посебна цртаћа права + посебних цртаћих права + + + Европска валутна јединица + европска новчана јединица (XEU) + европске новчане јединице (XEU) + европских новчаних јединица + + + Француски златни франак + француски златни франак + француска златна франка + француских златних франака + + + Француски UIC-франак + француски UIC-франак + француска UIC-франка + француских UIC-франака + + + CFA франак BCEAO + CFA франак BCEAO + CFA франка BCEAO + CFA франака BCEAO + CFA + + + Паладијум + паладијум + паладијума + паладијума + + + CFP франак + CFP франак + CFP франка + CFP франака + CFPF + + + Платина + платина + платине + платина + + + RINET фонд + RINET фонд + RINET фонда + RINET фондова + + + Код тестиране валуте + код тестиране валуте + кода тестиране валуте + кодова тестиране валуте + + + Непозната или неважећа валута + непозната или неважећа валута + непознате или неважеће валуте + непознатих или неважећих валута + + + Јеменски динар + јеменски долар + јеменска долара + јеменских долара + + + Јеменски риjал + јеменски ријал + јеменска ријала + jеменских ријала + + + Југословенски тврди динар + југословенски тврди динар + југословенска тврда динара + југословенских тврдих динара + + + Југословенски нови динар + југословенски нови динар + југословенска нова динара + југословенских нових динара + + + Југословенски конвертибилни динар + југословенски конвертибилни динар + југословенска конвертибилна динара + југословенских конвертибилних динара + + + Југословенски реформирани динар + југословенски реформирани динар + југословенска реформирана динара + југословенских реформираних динара + + + Јужно-афрички ранд (финансијски) + јужноафрички ранд (финансијски) + јужноафричка ранда (финансијска) + јужноафричких ранда (финансијских) + + + Јужно-афрички ранд + јужно-афрички ранд + јужно-афричка ранда + јужно-афричких ранда + + + Замбијска квача (1968–2012) + замбијска квача (1968–2012) + замбијске кваче (1968–2012) + замбијских квача (1968–2012) + + + Замбијска квача + замбијска квача + замбијске кваче + замбијских квача + + + Заирски нови заир + заирски нови заир + заирска нова заира + заирских нових заира + + + Заирски заир + заирски заир + заирска заира + заирских заира + + + Зимбабвеански долар (1980–2008) + зимбабвејски долар (1980–2008) + зимбабвејска долара (1980–2008) + зимбабвејских долара (1980–2008) + + + Зимбабвеански долар (2009) + зимбабвејски долар (2009) + зимбабвејска долара (2009) + зимбабвејских долара (2009) + + + Зимбабвеански долар (2008) + зимбабвејски долар (2008) + зимбабвејска долара (2008) + зимбабвејских долара (2008) + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} ге сила + {0} ге сила + {0} ге сила + + + {0} минут + {0} минута + {0} минута + + + {0} секунда + {0} секунде + {0} секунди + + + {0} степен + {0} степена + {0} степени + + + {0} акер + {0} акера + {0} акера + + + {0} хектар + {0} хектара + {0} хектара + + + {0} квадратна стопа + {0} квадратне стопе + {0} квадратних стопа + + + {0} квадратни километар + {0} квадратна километра + {0} квадратних километара + + + {0} квадратни метар + {0} квадратна метра + {0} квадратних метара + + + {0} квадратна миља + {0} квадратне миље + {0} квадратних миља + + + {0} дан + {0} дана + {0} дана + + + {0} сат + {0} сата + {0} сати + + + {0} милисекунда + {0} милисекунде + {0} милисекунди + + + {0} минут + {0} минута + {0} минута + + + {0} месец + {0} месеца + {0} месеци + + + {0} секунда + {0} секунде + {0} секунди + + + {0} недеља + {0} недеље + {0} недеља + + + {0} година + {0} године + {0} година + + + {0} центиметар + {0} центиментра + {0} центиметара + + + {0} стопа + {0} стопе + {0} стопа + + + {0} инч + {0} инча + {0} инча + + + {0} километар + {0} километра + {0} километара + + + {0} светлосна година + {0} светлосне године + {0} светлосних година + + + {0} метар + {0} метра + {0} метара + + + {0} миља + {0} миље + {0} миља + + + {0} милиметар + {0} милиметра + {0} милиметара + + + {0} пикометар + {0} пикометра + {0} пикометара + + + {0} јард + {0} јарда + {0} јарди + + + {0} грам + {0} грама + {0} грама + + + {0} килограм + {0} килограма + {0} килограма + + + {0} унца + {0} унце + {0} унци + + + {0} фунта + {0} фунте + {0} фунти + + + {0} коњска снага + {0} коњске снаге + {0} коњских снага + + + {0} киловат + {0} киловата + {0} киловати + + + {0} ват + {0} вата + {0} вати + + + {0} хектопаскал + {0} хектопаскала + {0} хектопаскала + + + {0} инч живиног стуба + {0} инча живиног стуба + {0} инча живиног стуба + + + {0} милибар + {0} милибара + {0} милибара + + + {0} километар на сат + {0} километра на сат + {0} километара на сат + + + {0} метар у секунди + {0} метра у секунди + {0} метара у секунди + + + {0} миља на сат + {0} миље на сат + {0} миља на сат + + + {0} степен Целзијуса + {0} степена Целзијуса + {0} степени Целзијуса + + + {0} степен Фаренхајта + {0} степена Фаренхајта + {0} степени Фаренхајта + + + {0} кубни километар + {0} кубна километра + {0} кубних километара + + + {0} кубни миља + {0} кубне миље + {0} кубних миља + + + {0} литар + {0} литра + {0} литара + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} дан + {0} дана + {0} дана + + + {0} сат + {0} сата + {0} сати + + + {0} ms + {0} ms + {0} ms + + + {0} мин + {0} мин + {0} мин + + + {0} мес + {0} мес + {0} мес + + + {0} сек + {0} сек + {0} сек + + + {0} нед + {0} нед + {0} нед + + + {0} год + {0} год + {0} год + + + {0} cm + {0} cm + {0} cm + + + {0} ст + {0} ст + {0} ст + + + {0} инч + {0} инча + {0} инча + + + {0} km + {0} km + {0} km + + + {0} сг + {0} сг + {0} сг + + + {0} m + {0} m + {0} m + + + {0} миља + {0} миље + {0} миља + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} јрд + {0} јрд + {0} јрд + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} унца + {0} унце + {0} унци + + + {0} lb + {0} lb + {0} lb + + + {0} кс + {0} кс + {0} кс + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} д + {0} д + {0} д + + + {0} сат + {0} сата + {0} сати + + + {0} ms + {0} ms + {0} ms + + + {0} м + {0} м + {0} м + + + {0} м + {0} м + {0} м + + + {0} сек + {0} сек + {0} сек + + + {0} н + {0} н + {0} н + + + {0} г + {0} г + {0} г + + + {0} cm + {0} cm + {0} cm + + + {0} ст + {0} ст + {0} ст + + + {0} инч + {0} инча + {0} инча + + + {0} km + {0} km + {0} km + + + {0} сг + {0} сг + {0} сг + + + {0} m + {0} m + {0} m + + + {0} миља + {0} миље + {0} миља + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} јрд + {0} јрд + {0} јрд + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} унца + {0} унце + {0} унци + + + {0} lb + {0} lb + {0} lb + + + {0} кс + {0} кс + {0} кс + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + {0}, {1} + {0}, {1} + {0} и {1} + {0} и {1} + + + + + да:д + не:н + + + + diff --git a/library/Zend/Locale/Data/sr_Cyrl.xml b/library/Zend/Locale/Data/sr_Cyrl.xml new file mode 100755 index 000000000..f55ec0ed0 --- /dev/null +++ b/library/Zend/Locale/Data/sr_Cyrl.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Svet + Afrika + Severnoamerički kontinent + Južna Amerika + Okeanija + Zapadna Afrika + Centralna Amerika + Istočna Afrika + Severna Afrika + Centralna Afrika + Južna Afrika + Amerike + Severna Amerika + Karibi + Istočna Azija + Južna Azija + Jugoistočna Azija + Južna Evropa + Australija i Novi Zeland + Melanezija + Mikronezijski region + Polinezija + Azija + Centralna Azija + Zapadna Azija + Evropa + Istočna Evropa + Severna Evropa + Zapadna Evropa + Latinska Amerika + Ostrvo Asension + Andora + Ujedinjeni Arapski Emirati + Avganistan + Antigve i Barbuda + Angvila + Albanija + Armenija + Holandski Antili + Angola + Antarktik + Argentina + Američka Samoa + Austrija + Australija + Aruba + Alandska ostrva + Azerbejdžan + Bosna i Hercegovina + Barbados + Bangladeš + Belgija + Burkina Faso + Bugarska + Bahrein + Burundi + Benin + Sveti Bartolomej + Bermuda + Brunej + Bolivija + Karipska Holandija + Brazil + Bahami + Butan + Buve Ostrva + Bocvana + Belorusija + Belize + Kanada + Kokos (Keling) Ostrva + Kongo - Kinšasa + Kongo (DRK) + Centralno Afrička Republika + Kongo - Brazavil + Kongo (Republika) + Švajcarska + Obala Slonovače + Kukova Ostrva + Čile + Kamerun + Kina + Kolumbija + Ostrvo Kliperton + Kostarika + Kuba + Kape Verde + Kurasao + Božićna ostrva + Kipar + Češka + Nemačka + Dijego Garsija + Džibuti + Danska + Dominika + Dominikanska Republika + Alžir + Seuta i Melilja + Ekvador + Estonija + Egipat + Zapadna Sahara + Eritreja + Španija + Etiopija + Evropska Unija + Finska + Fidži + Foklandska ostrva + Foklandska (Malvinska) ostrva + Mikronezija + Farska Ostrva + Francuska + Gabon + Velika Britanija + UK + Grenada + Gruzija + Francuska Gvajana + Gurnsi + Gana + Gibraltar + Grenland + Gambija + Gvineja + Gvadelupe + Ekvatorijalna Gvineja + Grčka + Južna Džordžija i Južna Sendvič Ostrva + Gvatemala + Guam + Gvineja-Bisao + Gvajana + Hong Kong S. A. R. Kina + Hong Kong + Herd i Mekdonald Ostrva + Honduras + Hrvatska + Haiti + Mađarska + Kanarska ostrva + Indonezija + Irska + Izrael + Ostrvo Man + Indija + Britanska teritorija u Indijskom okeanu + Irak + Iran + Island + Italija + Džersi + Jamajka + Jordan + Japan + Kenija + Kirgizstan + Kambodža + Kiribati + Komorska Ostrva + Sent Kits i Nevis + Severna Koreja + Južna Koreja + Kuvajt + Kajmanska Ostrva + Kazahstan + Laos + Liban + Sent Lucija + Lihtenštajn + Šri Lanka + Liberija + Lesoto + Litvanija + Luksemburg + Letonija + Libija + Maroko + Monako + Moldavija + Crna Gora + Sent Martin + Madagaskar + Maršalska Ostrva + Makedonija + Mali + Mijanmar (Burma) + Mongolija + Makao S. A. R. Kina + Makao + Severna Marijanska Ostrva + Martinik + Mauritanija + Monserat + Malta + Mauricijus + Maldivi + Malavi + Meksiko + Malezija + Mozambik + Namibija + Nova Kaledonija + Niger + Norfolk Ostrvo + Nigerija + Nikaragva + Holandija + Norveška + Nepal + Nauru + Niue + Novi Zeland + Oman + Panama + Peru + Francuska Polinezija + Papua Nova Gvineja + Filipini + Pakistan + Poljska + Sen Pjer i Mikelon + Pitkern + Porto Riko + Palestinske teritorije + Palestina + Portugal + Palau + Paragvaj + Katar + Ostala okeanija + Reinion + Rumunija + Srbija + Rusija + Ruanda + Saudijska Arabija + Solomonska Ostrva + Sejšeli + Sudan + Švedska + Singapur + Sveta Jelena + Slovenija + Svalbard i Janmajen Ostrva + Slovačka + Sijera Leone + San Marino + Senegal + Somalija + Surinam + Južni Sudan + Sao Tome i Principe + Salvador + Sveti Martin + Sirija + Svazilend + Tristan da Kunja + Turks i Kajkos Ostrva + Čad + Francuske Južne Teritorije + Togo + Tajland + Tadžikistan + Tokelau + Istočni Timor + Turkmenistan + Tunis + Tonga + Turska + Trinidad i Tobago + Tuvalu + Tajvan + Tanzanija + Ukrajina + Uganda + Manja udaljena ostrva SAD + Sjedinjene Američke Države + SAD + Urugvaj + Uzbekistan + Vatikan + Sent Vinsent i Grenadini + Venecuela + Britanska Devičanska Ostrva + S.A.D. Devičanska Ostrva + Vijetnam + Vanuatu + Valis i Futuna Ostrva + Samoa + Kosovo + Jemen + Majote + Južnoafrička Republika + Zambija + Zimbabve + Nepoznata ili nevažeća oblast + + + Tradicionalna nemačka ortografija + Standardnizovana resijanska ortografija + Nemačka ortografija iz 1996 + Francuski iz kasnog srednjeg veka do 1606. + Rani moderni francuski + Akademski + Istočni armenijski + Zapadno jermenska + Ujedinjen turski latinični alfabet + San Đorđio/Bila dijalekt + Buntling + IPA fonetika + UPA fonetika + Uobičajena ortografija + Lipovički dijalekt resijanski + Monotonik + Natisone dijalekt + Gnjiva/Njiva dijalkekt + Oseako/Osojane dijalekt + Politonik + Kompjuter + Revidirana ortografija + Resijan + Saho + Škotski standardni Engleski + Skauz + Stolvica/Solbica dijalekt + Taraskijevička ortografija + Ujedinjena ortografija + Ujedinjena revidirana ortografija + Valencijska + + + Kalendar + Sortiranje uz ignorisanje simbola + Sortiranje prema obrnutim akcentima + Ređanje prema malom/velikom slovu + Sortiranje prema malom/velikom slovu + Sortiranje prema kana simbolima + Sortiranje + Normalizovano sortiranje + Numeričko sortiranje + Sortiranje prema jačini + Valuta + Brojevi + Vremenska zona + Varijanta lokaliteta + Sortiraj kao simbole + Privatna upotreba + + + arapsko-indijske cifre + produžene arapsko-indijske cifre + jermenski brojevi + mali jermenski brojevi + bengalske cifre + Tradicionalno kinesko sortiranje + Budistički kalendar + Kineski kalendar + koptski kalendar + devangari cifre + Redosled sortiranja u rečniku + Podrazumevani Unicode redosled sortiranja + etiopski brojevi + etiopski kalendar + etiopski amet alem kalendar + Finansijski brojevi + cifre pune širine + Pojednostavljeno kinesko sortiranje + gruzijski brojevi + Gregorijanski kalendar + grčki brojevi + mali grčki brojevi + gudžaratske cifre + gurmuki cifre + kineski decimalni brojevi + pojednostavljeni kineski brojevi + pojednostavljeni kineski finansijski brojevi + tradicionalni kineski brojevi + tradicionalni kineski finansijski brojevi + hebrejski brojevi + Hebrejski kalendar + Sortiraj sve + Indijski nacionalni kalendar + Islamski kalendar + Islamski civilni kalendar + Japanski kalendar + japanski brojevi + japanski finansijski brojevi + kmerske cifre + kanada cifre + laoške cifre + zapadne cifre + Sortiraj prvo mala slova + malajalam cifre + mongolske cifre + mijanmarske cifre + Lokalne cifre + Sortiraj akcente normalno + Sortiraj normalan redosled velikih i malih slova + Sortiraj bez obzira na velika i mala slova + Sortiraj kana simbole odvojeno + Sortiraj bez normalizacije + Sortiraj cifre pojedinačno + Sortiraj simbole + orija cifre + persijski kalendar + Sortiranje kao telefonski imenik + Fonetski redosled sortiranja + Pinjin sortiranje + Sortiraj samo osnovna slova + Sortiraj akcente/mala i velika slova/širinu/kana simbole + Reformisani redosled sortiranja + Kalendar Republike Kine + rimski brojevi + mali rimski brojevi + Opšte namenjena pretraga + Pretraga prema hangul početnom suglasniku + Sortiraj akcente + Sortiranje uz ignorisanje simbola + standardni redosled sortiranja + Sortiranje po broju crta + tamilski brojevi + tamilske cifre + telugu cifre + Sortiraj akcente/mala i velika slova/širinu + tajske cifre + tibetanske cifre + Tradicionalno sortiranje + Tradicionalni brojevi + Redosled sortiranja radikalnim crticama + Sortiraj prvo velika slova + Vai cifre + Sortiraj akcente obrnuto + Sortiraj mala i velika slova + Sortiraj kana simbole drugačije + Sortiraj Unicode normalizovano + Sortiraj cifre numerički + + + BGN (BGN) + Numerička + Ton + UNGEGN (BGN) + Akcenti + puna širina + pola širine + Džamo + Pinjin + Izdavački + + + Metrički + imperijalni + SAD + + + Jezik: {0} + Skript: {0} + Region: {0} + + + + [a b c ć č d đ {dž} e f g h i j k l {lj} m n {nj} o p r s š t u v z ž] + [å q w x y] + [A B C Ć Č D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž] + [\- ‐ – , ; \: ! ? . … ‘ ‚ “ „ ( ) \[ \] \{ \} * #] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + Taut + Baba + Hator + Kiahk + Toba + Amšir + Baramhat + Baramuda + Bašans + Paona + Epep + Mesra + Nasi + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Jekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehase + Pagumen + + + + + + + + + EEEE, dd. MMMM y. G + + + + + dd. MMMM y. G + + + + + dd.MM.y. G + + + + + d.M.y. GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d. + y. G + MMM y. G + d. MMM y. G + E, d. MMM y. G + hh a + HH + hh.mm a + HH.mm + hh.mm.ss a + HH.mm.ss + L + d/M + E, M-d + MM-dd + LLL + d. MMM + dd.MMM + E d. MMM + d. MMMM + E d. MMMM + mm.ss + y. G + y. G + M.y. G + d.M.y. G + E, d.M.y. G + MM.y. G + dd.MM.y. G + MMM y. G + d. MMM y. G + E, d. MMM y. G + MMMM y. G + QQQ, y. G + QQQQ y. G + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h.mm a - h.mm a + h.mm-h.mm a + h.mm-h.mm a + + + HH.mm-HH.mm + HH.mm-HH.mm + + + h.mm a - h.mm a v + h.mm-h.mm a v + h.mm-h.mm a v + + + HH.mm-HH.mm v + HH.mm-HH.mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + MMM-MMM + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y-y + + + y M - M + M.y - M.y + + + d.M.y. - d.M.y. + d.M.y. - d.M.y. + d.M.y. - d.M.y. + + + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + + + MMM-MMM y. + MMM y. - MMM y. + + + dd.-dd. MMM y. + dd. MMM - dd. MMM y. + dd. MMM y. - dd. MMM y. + + + E, dd. - E, dd. MMM y. + E, dd. MMM - E, dd. MMM y. + E, dd. MMM y. - E, dd. MMM y. + + + y-MM – MM + y-MM – y-MM + + + + + + + + + jan + feb + mar + apr + maj + jun + jul + avg + sep + okt + nov + dec + + + j + f + m + a + m + j + j + a + s + o + n + d + + + januar + februar + mart + april + maj + jun + jul + avgust + septembar + oktobar + novembar + decembar + + + + + jan + feb + mar + apr + maj + jun + jul + avg + sep + okt + nov + dec + + + j + f + m + a + m + j + j + a + s + o + n + d + + + januar + februar + mart + april + maj + jun + jul + avgust + septembar + oktobar + novembar + decembar + + + + + + + ned + pon + uto + sre + čet + pet + sub + + + n + p + u + s + č + p + s + + + ned + pon + uto + sre + čet + pet + sub + + + nedelja + ponedeljak + utorak + sreda + četvrtak + petak + subota + + + + + ned + pon + uto + sre + čet + pet + sub + + + n + p + u + s + č + p + s + + + ne + po + ut + sr + če + pe + su + + + nedelja + ponedeljak + utorak + sreda + četvrtak + petak + subota + + + + + + + K1 + K2 + K3 + K4 + + + 1. + 2. + 3. + 4. + + + Prvo tromesečje + Drugo tromesečje + Treće tromesečje + Četvrto tromesečje + + + + + K1 + K2 + K3 + K4 + + + 1. + 2. + 3. + 4. + + + Prvo tromesečje + Drugo tromesečje + Treće tromesečje + Četvrto tromesečje + + + + + + + pre podne + popodne + + + + + + Pre nove ere + Nove ere + + + p. n. e. + n. e. + + + p.n.e. + n.e. + + + + + + EEEE, dd. MMMM y. + + + + + dd. MMMM y. + + + + + dd.MM.y. + + + + + d.M.yy. + + + + + + + HH.mm.ss zzzz + + + + + HH.mm.ss z + + + + + HH.mm.ss + + + + + HH.mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d. + E, h:mm a + E, HH:mm + E, h:mm:ss a + E, HH:mm:ss + y. G + MMM y. G + d. MMM y. G + E, d. MMM y. G + hh a + HH + hh.mm a + HH.mm + hh.mm.ss a + HH.mm.ss + L + d/M + E, M-d + MM-dd + LLL + d. MMM + dd.MMM + E d. MMM + d. MMMM + E d. MMMM + mm.ss + y. + M.y. + d.M.y. + E, d.M.y. + MM.y. + dd.MM.y. + MMM y. + d. MMM y. + E, d. MMM y. + MMMM y. + QQQ. y + QQQQ. y + + + {0} {1} + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + HH-HH + + + h.mm a - h.mm a + h.mm-h.mm a + h.mm-h.mm a + + + HH.mm-HH.mm + HH.mm-HH.mm + + + h.mm a - h.mm a v + h.mm-h.mm a v + h.mm-h.mm a v + + + HH.mm-HH.mm v + HH.mm-HH.mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + M-M + + + d.M - d.M + d.M - d.M + + + E, d.M - E, d.M + E, d.M - E, d.M + + + MMM-MMM + + + dd.-dd. MMM + dd. MMM - dd. MMM + + + E, dd. - E, dd. MMM + E, dd. MMM - E, dd. MMM + + + y-y + + + y M - M + y M - M + + + d.M.y. - d.M.y. + d.M.y. - d.M.y. + d.M.y. - d.M.y. + + + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + E, d.M.y. - E, d.M.y. + + + MMM-MMM y. + MMM y. - MMM y. + + + dd.-dd. MMM y. + dd. MMM - dd. MMM y. + dd. MMM y. - dd. MMM y. + + + E, dd. - E, dd. MMM y. + E, dd. MMM - E, dd. MMM y. + E, dd. MMM y. - E, dd. MMM y. + + + y-MM – MM + y-MM – y-MM + + + + + + + + + Tišri + Hešvan + Kislev + Tevet + Ševat + Adar I + Adar + Adar II + Nisan + Ijar + Sivan + Tamuz + Av + Elul + + + + + + + + + Čaitra + Vaisaka + Jiaista + Asada + Sravana + Badra + Asvina + Kartika + Argajana + Pauza + Maga + Falguna + + + + + + SAKA + + + + + + + + Muh. + Saf. + Reb. 1 + Reb 2 + Džum. 1 + Džum. 2 + Redž. + Ša. + Ram. + Še. + Zul-k. + Zul-h. + + + Muraham + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rađab + Šaʻban + Ramadan + Šaval + Duʻl-Kiʻda + Duʻl-hiđa + + + + + Muharem + Safer + Rebi 1 + Rebi 2 + Džumade 1 + Džumade 2 + Redžeb + Šaʻban + Ramazan + Ševal + Zul-kade + Zul-hidže + + + + + + AH + + + + + + + Taika (645-650) + Hakuči (650-671) + Hakuho (672-686) + Šučo (686-701) + Taiho (701-704) + Keiun (704-708) + Vado (708-715) + Reiki (715-717) + Joro (717-724) + Jinki (724-729) + Tempio (729-749) + Tempio-kampo (749-749) + Tempio-šoho (749-757) + Tempio-hođi (757-765) + Tempo-đingo (765-767) + Đingo-keiun (767-770) + Hoki (770-780) + Ten-o (781-782) + Enrjaku (782-806) + Daido (806-810) + Konin (810-824) + Tenčo (824-834) + Šova (834-848) + Kajo (848-851) + Ninju (851-854) + Saiko (854-857) + Tenan (857-859) + Jogan (859-877) + Genkei (877-885) + Ninja (885-889) + Kampjo (889-898) + Šotai (898-901) + Enđi (901-923) + Enčo (923-931) + Šohei (931-938) + Tengjo (938-947) + Tenriaku (947-957) + Tentoku (957-961) + Ova (961-964) + Koho (964-968) + Ana (968-970) + Tenroku (970-973) + Ten-en (973-976) + Jogen (976-978) + Tengen (978-983) + Eikan (983-985) + Kana (985-987) + Ei-en (987-989) + Eiso (989-990) + Šorjaku (990-995) + Čotoku (995-999) + Čoho (999-1004) + Kanko (1004-1012) + Čova (1012-1017) + Kanin (1017-1021) + Đian (1021-1024) + Manju (1024-1028) + Čogen (1028-1037) + Čorjaku (1037-1040) + Čokju (1040-1044) + Kantoku (1044-1046) + Eišo (1046-1053) + Tenđi (1053-1058) + Kohei (1058-1065) + Đirjaku (1065-1069) + Enkju (1069-1074) + Šoho (1074-1077) + Šorjaku (1077-1081) + Eišo (1081-1084) + Otoku (1084-1087) + Kanđi (1087-1094) + Kaho (1094-1096) + Eičo (1096-1097) + Šotoku (1097-1099) + Kova (1099-1104) + Čođi (1104-1106) + Kašo (1106-1108) + Tenin (1108-1110) + Ten-ei (1110-1113) + Eikju (1113-1118) + Đen-ei (1118-1120) + Hoan (1120-1124) + Tenđi (1124-1126) + Daiđi (1126-1131) + Tenšo (1131-1132) + Čošao (1132-1135) + Hoen (1135-1141) + Eiđi (1141-1142) + Kođi (1142-1144) + Tenjo (1144-1145) + Kjuan (1145-1151) + Ninpei (1151-1154) + Kjuju (1154-1156) + Hogen (1156-1159) + Heiđi (1159-1160) + Eirjaku (1160-1161) + Oho (1161-1163) + Čokan (1163-1165) + Eiman (1165-1166) + Nin-an (1166-1169) + Kao (1169-1171) + Šoan (1171-1175) + Angen (1175-1177) + Đišo (1177-1181) + Jova (1181-1182) + Đuei (1182-1184) + Genrjuku (1184-1185) + Bunđi (1185-1190) + Kenkju (1190-1199) + Šođi (1199-1201) + Kenin (1201-1204) + Genkju (1204-1206) + Ken-ei (1206-1207) + Šogen (1207-1211) + Kenrjaku (1211-1213) + Kenpo (1213-1219) + Šokju (1219-1222) + Đu (1222-1224) + Đenin (1224-1225) + Karoku (1225-1227) + Antei (1227-1229) + Kanki (1229-1232) + Đoei (1232-1233) + Tempuku (1233-1234) + Bunrjaku (1234-1235) + Katei (1235-1238) + Rjakunin (1238-1239) + En-o (1239-1240) + Ninji (1240-1243) + Kangen (1243-1247) + Hođi (1247-1249) + Kenčo (1249-1256) + Kogen (1256-1257) + Šoka (1257-1259) + Šogen (1259-1260) + Bun-o (1260-1261) + Kočo (1261-1264) + Bun-ei (1264-1275) + Kenđi (1275-1278) + Koan (1278-1288) + Šu (1288-1293) + Einin (1293-1299) + Šoan (1299-1302) + Kengen (1302-1303) + Kagen (1303-1306) + Tokuđi (1306-1308) + Enkei (1308-1311) + Očo (1311-1312) + Šova (1312-1317) + Bunpo (1317-1319) + Đeno (1319-1321) + Đenkjo (1321-1324) + Šoču (1324-1326) + Kareki (1326-1329) + Gentoku (1329-1331) + Genko (1331-1334) + Kemu (1334-1336) + Engen (1336-1340) + Kokoku (1340-1346) + Šohei (1346-1370) + Kentoku (1370-1372) + Buču (1372-1375) + Tenju (1375-1379) + Korjaku (1379-1381) + Kova (1381-1384) + Genču (1384-1392) + Meitoku (1384-1387) + Kakei (1387-1389) + Ku (1389-1390) + Meitoku (1390-1394) + Oei (1394-1428) + Šočo (1428-1429) + Eikjo (1429-1441) + Kakitsu (1441-1444) + Bun-an (1444-1449) + Hotoku (1449-1452) + Kjotoku (1452-1455) + Košo (1455-1457) + Čoroku (1457-1460) + Kanšo (1460-1466) + Bunšo (1466-1467) + Onin (1467-1469) + Bunmei (1469-1487) + Čokjo (1487-1489) + Entoku (1489-1492) + Meio (1492-1501) + Bunki (1501-1504) + Eišo (1504-1521) + Taiei (1521-1528) + Kjoroku (1528-1532) + Tenmon (1532-1555) + Kođi (1555-1558) + Eiroku (1558-1570) + Genki (1570-1573) + Tenšo (1573-1592) + Bunroku (1592-1596) + Keičo (1596-1615) + Genva (1615-1624) + Kan-ei (1624-1644) + Šoho (1644-1648) + Keian (1648-1652) + Šu (1652-1655) + Meirjaku (1655-1658) + Manji (1658-1661) + Kanbun (1661-1673) + Enpo (1673-1681) + Tenva (1681-1684) + Jokjo (1684-1688) + Genroku (1688-1704) + Hoei (1704-1711) + Šotoku (1711-1716) + Kjoho (1716-1736) + Genbun (1736-1741) + Kanpo (1741-1744) + Enkjo (1744-1748) + Kan-en (1748-1751) + Horjaku (1751-1764) + Meiva (1764-1772) + An-ei (1772-1781) + Tenmei (1781-1789) + Kansei (1789-1801) + Kjova (1801-1804) + Bunka (1804-1818) + Bunsei (1818-1830) + Tenpo (1830-1844) + Koka (1844-1848) + Kaei (1848-1854) + Ansei (1854-1860) + Man-en (1860-1861) + Bunkju (1861-1864) + Genđi (1864-1865) + Keiko (1865-1868) + Meiđi + Taišo + Šova + Haisei + + + + + + EEEE, MMMM d, y G + + + + + MMMM d, y G + + + + + MMM d, y G + + + + + M/d/yy G + + + + + + + + + Faravadin + Ordibehešt + Kordad + Tir + Mordad + Šahrivar + Mehr + Aban + Azar + Dej + Bahman + Esfand + + + + + + AP + + + + + + + Pre RK + RK + + + + + + + era + + + godina + Prošle godine + Ove godine + Sledeće godine + + za {0} godinu + za {0} godine + za {0} godina + + + pre {0} godine + pre {0} godine + pre {0} godina + + + + mesec + Prošlog meseca + Ovog meseca + Sledećeg meseca + + za {0} mesec + za {0} meseca + za {0} meseci + + + pre {0} meseca + pre {0} meseca + pre {0} meseci + + + + nedelja + Prošle nedelje + Ove nedelje + Sledeće nedelje + + za {0} nedelju + za {0} nedelje + za {0} nedelja + + + pre {0} nedelje + pre {0} nedelje + pre {0} nedelja + + + + dan + prekjuče + juče + danas + sutra + prekosutra + + za {0} dan + za {0} dana + za {0} dana + + + pre {0} dana + pre {0} dana + pre {0} dana + + + + dan u nedelji + + + prošle nedelje + ove nedelje + sledeće nedelje + + + prošlog ponedeljka + ovog ponedeljka + sledećeg ponedeljka + + + prošlog utorka + ovog utorka + sledećeg utorka + + + prošle srede + ove srede + sledeće srede + + + prošlog četvrtka + ovog četvrtka + sledećeg četvrtka + + + prošlog petka + ovog petka + sledećeg petka + + + prošle subote + ove subote + sledeće subote + + + pre podne/popodne + + + čas + + za {0} sat + za {0} sata + za {0} sati + + + pre {0} sata + pre {0} sata + pre {0} sati + + + + minut + + za {0} minut + za {0} minuta + za {0} minuta + + + pre {0} minuta + pre {0} minuta + pre {0} minuta + + + + sekund + sada + + za {0} sekundu + za {0} sekunde + za {0} sekundi + + + pre {0} sekunde + pre {0} sekunde + pre {0} sekundi + + + + zona + + + + +HHmm;-HHmm + GMT{0} + GMT + Vreme u zemlji: {0} + {0}, letnje vreme + {0}, standardno vreme + {1} ({0}) + + Nepoznat ili nevažeći grad + + + Andora + + + Dubai + + + Kabul + + + Antigva + + + Angvila + + + Tirana + + + Jerevan + + + Luanda + + + Rotera + + + Palmer + + + Šova + + + Moson + + + Dejvis + + + Vostok + + + Kasej + + + Dimon d’Urvil + + + Makmurdo + + + Rio Gelegos + + + Mendoza + + + San Huan + + + Ušuaija + + + La Rioja + + + San Lui + + + Katamarka + + + Salta + + + Žužui + + + Tukuman + + + Kordoba + + + Buenos Aires + + + Pago Pago + + + Beč + + + Pert + + + Iukla + + + Darvin + + + Adelaida + + + Broken Hil + + + Kurie + + + Melburn + + + Hobart + + + Lindeman + + + Sidnej + + + Brizbejn + + + Mekvori + + + Lord Hov + + + Aruba + + + Marihamn + + + Baku + + + Sarajevo + + + Barbados + + + Daka + + + Brisel + + + Uagadugu + + + Sofija + + + Bahrein + + + Budžumbura + + + Porto Novo + + + Sv. Bartolomej + + + Bermuda + + + Bruneji + + + La Paz + + + Kralendajk + + + Eirunepe + + + Rio Branko + + + Porto Veljo + + + Boa Vista + + + Manaus + + + Kuiaba + + + Santarem + + + Kampo Grande + + + Belem + + + Aragvajana + + + Sao Paolo + + + Bahia + + + Fortaleza + + + Masejo + + + Resife + + + Noronja + + + Nasau + + + Timpu + + + Gaboron + + + Minsk + + + Belize + + + Doson + + + Vajthors + + + Inuvik + + + Vankuver + + + Doson Krik + + + Kreston + + + Jelounajf + + + Edmonton + + + Svift Kurent + + + Kembridž Bej + + + Regina + + + Vinipeg + + + Resolut + + + Rejni River + + + Rankin Inlet + + + Koral Harbur + + + Tander Bej + + + Nipigon + + + Toronto + + + Ikvaluit + + + Pangnirtung + + + Monkton + + + Halifaks + + + Gus Bej + + + Glejs Bej + + + Blank-Sejblon + + + Sv. Džon + + + Kokos + + + Kinšasa + + + Lumumbaši + + + Bangui + + + Brazavil + + + Cirih + + + Abidžan + + + Rarotonga + + + Uskršnje ostrvo + + + Santijago + + + Duala + + + Kašgar + + + Urumkvi + + + Čongking + + + Šangaj + + + Harbin + + + Bogota + + + Kostarika + + + Havana + + + Zelenortska Ostrva + + + Kiraso + + + Božić + + + Nikozija + + + Prag + + + Bisingen + + + Berlin + + + Džibuti + + + Kopenhagen + + + Dominika + + + Santo Domingo + + + alžirsko + + + Galapagos + + + Gvajakil + + + Talin + + + Kairo + + + El Ajun + + + Asmera + + + Kanarska ostrva + + + Seuta + + + Madrid + + + Adis Abeba + + + Helsinki + + + Fidži + + + Stenli + + + Truk + + + Ponape + + + Košre + + + Farska ostrva + + + Pariz + + + Librevil + + + + britansko letnje vreme + + London + + + Grenada + + + Tbilisi + + + Kajen + + + Gernzi + + + Akra + + + Gibraltar + + + Tule + + + Gothab + + + Skorezbisund + + + Danmarkshagen + + + Banžul + + + Konakri + + + Gvadalupe + + + Malabo + + + Atina + + + Južna Džordžija + + + Gvatemala + + + Guam + + + Bisao + + + Guana + + + Hong Kong + + + Tegusigalpa + + + Zagreb + + + Port-o-Prens + + + Budimpešta + + + Džakarta + + + Pontianak + + + Makasar + + + Džajapura + + + + irsko letnje vreme + + Dablin + + + Jerusalim + + + Ostrvo Man + + + Kalkuta + + + Čagos + + + Bagdad + + + Teheran + + + Rejkjavik + + + Rim + + + Džersi + + + Jamajka + + + Aman + + + Tokio + + + Najrobi + + + Biškek + + + Pnom Pen + + + Enderberi + + + Kiritimati + + + Tarava + + + Komoro + + + Sent Kits + + + Pjongjang + + + Seul + + + Kuvajt + + + Kajmanska ostrva + + + Aktau + + + Oral + + + Akutobe + + + Kizilorda + + + Almati + + + Vijentijan + + + Bejrut + + + Sv. Lucija + + + Vaduz + + + Kolombo + + + Monrovija + + + Maseru + + + Viljnus + + + Luksemburg + + + Riga + + + Tripoli + + + Kazablanka + + + Monako + + + Kišinjev + + + Podgorica + + + Marigo + + + Antananarivo + + + Kvadžalejin + + + Majuro + + + Skoplje + + + Bamako + + + Rangun + + + Hovd + + + Ulan Bator + + + Čojbalsan + + + Makau + + + Sajpan + + + Martinik + + + Navakšut + + + Montserat + + + Malta + + + Mauricijus + + + Maldivi + + + Blantir + + + Tihuana + + + Santa Izabel + + + Hermosiljo + + + Mazatlan + + + Čihuahua + + + Baija Banderas + + + Ohinaga + + + Monterej + + + Meksiko Siti + + + Matamoros + + + Merida + + + Kankun + + + Kuala Lumpur + + + Kučing + + + Maputo + + + Vindhuk + + + Numea + + + Nijamej + + + Norfolk + + + Lagos + + + Managva + + + Amsterdam + + + Oslo + + + Katmandu + + + Nauru + + + Niue + + + Katham + + + Okland + + + Muskat + + + Panama + + + Lima + + + Tahiti + + + Markiz + + + Gambije + + + Port Morzbi + + + Manila + + + Karači + + + Varšava + + + Mikelon + + + Pitkairn + + + Porto Riko + + + Gaza + + + Hebron + + + Azori + + + Madera + + + Lisabon + + + Palau + + + Asunsion + + + Katar + + + Reunion + + + Bukurešt + + + Beograd + + + Kaliningrad + + + Moskva + + + Volgograd + + + Samara + + + Jekaterinburg + + + Omsk + + + Novosibirsk + + + Novokuznjeck + + + Krasnojarsk + + + Irkuck + + + Jakutsk + + + Vladivostok + + + Handiga + + + Sahalin + + + Ust-Nera + + + Magadan + + + Kamčatka + + + Anadir + + + Kigali + + + Rijad + + + Gvadalkanal + + + Mahe + + + Kartum + + + Stokholm + + + Singapur + + + Sv. Jelena + + + Ljubljana + + + Longjerbjen + + + Bratislava + + + Fritaun + + + San Marino + + + Dakar + + + Mogadiš + + + Paramirbo + + + Džuba + + + Sao Tome + + + Salvador + + + Louer Prinsiz Kvorter + + + Damask + + + Mbabane + + + Grand Turk + + + Ndžamena + + + Kergelen + + + Lome + + + Bankok + + + Dušanbe + + + Fakaofo + + + Dili + + + Ašhabad + + + tunižansko + + + Tongatapu + + + Istanbul + + + Port of Spejn + + + Funafuti + + + Tajpej + + + Dar-es-Salam + + + Užgorod + + + Kijev + + + Simferopol + + + Zaporožje + + + Kampala + + + Midvej + + + Džonston + + + Vejk + + + Adak + + + Nom + + + Honolulu + + + Enkoridž + + + Jakutat + + + Sitka + + + Žuno + + + Metlakatla + + + Los Anđeles + + + Bojzi + + + Feniks + + + Denver + + + Bijula, Severna Dakota + + + Novi Salem, Severna Datkoa + + + Centar, Severna Dakota + + + Čikago + + + Menomini + + + Vincenes, Indijana + + + Petersburg, Indijana + + + Tel Siti + + + Knoks, Indijana + + + Vinamak, Indijana + + + Marengo, Indijana + + + Indianapolis + + + Luivile + + + Vevaj, Indijana + + + Montičelo, Kentaki + + + Detroit + + + Njujork + + + Montevideo + + + Samarkand + + + Taškent + + + Vatikan + + + Sent Vinsent + + + Karakas + + + Tortola + + + Sv. Toma + + + Ho Ši Min + + + Efat + + + Valis + + + Apija + + + Aden + + + Majot + + + Johanesburg + + + Lusaka + + + Harare + + + + Akre vreme + Akre standardno vreme + Akre letnje računanje vremena + + + + + Avganistan vreme + + + + + Centralno-afričko vreme + + + + + Istočno-afričko vreme + + + + + Južno-afričko vreme + + + + + Zapadno-afričko vreme + Zapadno-afričko standardno vreme + Zapadno-afričko letnje računanje vremena + + + + + Aljaško vreme + Aljaško standardno vreme + Aljaško letnje vreme + + + + + Almati vreme + Almati standardno vreme + Almati letnje računanje vremena + + + + + Amazon vreme + Amazon standardno vreme + Amazon letnje računanje vremena + + + + + Severnoamerički Centralno vreme + Severnoamerički Centralno standardno vreme + Severnoamerički Centralno letnje računanje vremena + + + + + Severnoamerički Istočno vreme + Severnoamerički Istočno standardno vreme + Severnoamerički Istočno letnje računanje vremena + + + + + Severnoamerički Planinsko vreme + Severnoamerički Planinsko standardno vreme + Severnoamerički Planinsko letnje računanje vremena + + + + + Severnoamerički Pacifičko vreme + Severnoamerički Pacifičko standardno vreme + Severnoamerički Pacifičko letnje računanje vremena + + + + + Anadir vreme + Anadir standardno vreme + Anadir letnje računanje vremena + + + + + Akvatau vreme + Akvatau standardno vreme + Akvatau letnje računanje vremena + + + + + Akutobe vreme + Akutobe standardno vreme + Akutobe letnje računanje vremena + + + + + Arabijsko vreme + Arabijsko standardno vreme + Arabijsko letnje računanje vremena + + + + + Argentina vreme + Argentina standardno vreme + Argentina letnje računanje vremena + + + + + Zapadna Argentina vreme + Zapadna Argentina standardno vreme + Zapadna Argentina letnje računanje vremena + + + + + Armenija vreme + Armenija standardno vreme + Armenija letnje računanje vremena + + + + + Atlansko vreme + Atlansko standardno vreme + Atlansko ltnje računanje vremena + + + + + Australijsko centralno vreme + Australijsko centralno standardno vreme + Australijsko centralno letnje računanje vremena + + + + + Australijsko centralno zapadno vreme + Australijsko centralno zapadno standardno vreme + Australijsko centralno zapadno letnje računanje vremena + + + + + Australijsko istočno vreme + Australijsko istočno standardno vreme + Australijsko istočno letnje računanje vremena + + + + + Australijsko zapadno vreme + Australijsko zapadno standardno vreme + Australijsko zapadno letnje računanje vremena + + + + + Azerbejdžan vreme + Azerbejdžan standardno vreme + Azerbejdžan letnje računanje vremena + + + + + Azori vreme + Azori standardno vreme + Azori letnje računanje vremena + + + + + Bangladeš vreme + Bangladeš standardno vreme + Bangladeš letnje računanje vremena + + + + + Butan vreme + + + + + Bolivija vreme + + + + + Brazilija vreme + Brazilija standardno vreme + Brazilija letnje računanje vremena + + + + + Brunej Darusalum vreme + + + + + Zelenirtsko vreme + Zelenirtsko standardno vreme + Zelenortsko letnje računanje vremena + + + + + Čamoro vreme + + + + + Čatam vreme + Čatam standardno vreme + Čatam letnje računanje vremena + + + + + Čile vreme + Čile standardno vreme + Čile letnje računanje vremena + + + + + Kina vreme + Kinesko standardno vreme + Kina letnje računanje vremena + + + + + Čojbalsan vreme + Čojbalsan standardno vreme + Čojbalsan letnje računanje vremena + + + + + Božićna ostrva vreme + + + + + Kokos (Keling) Ostrva vreme + + + + + Kolumbija vreme + Kolumbija standardno vreme + Kolumbija letnje računanje vremena + + + + + Kukova ostrva vreme + Kukova ostrva standardno vreme + Kukova ostrva polu-letnje računanje vremena + + + + + Kuba vreme + Kuba standardno vreme + Kuba letnje računanje vremena + + + + + Dejvis vreme + + + + + Dimon d’Urvil vreme + + + + + Istočni timor vreme + + + + + Uskršnja ostrva vreme + Uskršnja ostrva standardno vreme + Uskršnja ostrva letnje računanje vremena + + + + + Ekvador vreme + + + + + Srednjeevropsko vreme + Srednjeevropsko standardno vreme + Srednjeevropsko letnje računanje vremena + + + CET + CET + CEST + + + + + Istočnoevropsko vreme + Istočnoevropsko standardno vreme + Istočnoevropsko letnje računanje vremena + + + EET + EET + EEST + + + + + Zapadnoevropsko vreme + Zapadnoevropsko standardno vreme + Zapadnoevropsko letnje računanje vremena + + + WET + WET + WEST + + + + + Folklandska Ostrva vreme + Folklandska Ostrva standardno vreme + Folklandska Ostrva letnje računanje vremena + + + + + Fidži vreme + Fidži standardno vreme + Fidži letnje računanje vremena + + + + + Francuska Gvajana vreme + + + + + Francusko južno i antarktičko vreme + + + + + Galapagos vreme + + + + + Gambijer vreme + + + + + Gruzija vreme + Gruzija standardno vreme + Gruzija letnje računanje vremena + + + + + Gilbert ostrva vreme + + + + + Grinvič srednje vreme + + + GMT + + + + + Istočni Grenland vreme + Istočni Grenland standardno vreme + Istočni Grenland letnje računanje vremena + + + + + Zapadni Grenland vreme + Zapadni Grenland standardno vreme + Zapadni Grenland letnje računanje vremena + + + + + Guam standardno vreme + + + + + Zaliv vreme + + + + + Gvajana vreme + + + + + Havajsko-aleutsko vreme + Havajsko-aleutsko standardno vreme + Havajsko-aleutsko letnje računanje vremena + + + + + Hong Kong vreme + Hong Kong standardno vreme + Hong Kong letnje računanje vremena + + + + + Hovd vreme + Hovd standardno vreme + Hovd letnje računanje vremena + + + + + Indijsko standardno vreme + + + + + Indijsko okeansko vreme + + + + + Indokina vreme + + + + + Centralno-indonezijsko vreme + + + + + Istočno-indonezijsko vreme + + + + + Zapadno-indonezijsko vreme + + + + + Iran vreme + Iran standardno vreme + Iran letnje računanje vremena + + + + + Irkuck vreme + Irkuck standardno vreme + Irkuck letnje računanje vremena + + + + + Izraelsko vreme + Izraelsko standardno vreme + Izraelsko letnje računanje vremena + + + + + Japansko vreme + Japansko standardno vreme + Japansko letnje računanje vremena + + + + + Petropavlovsko-kamčatsko vreme + Petropavlovsko-kamčatsko standardno vreme + Petropavlovsko-kamčatsko letnje računanje vremena + + + + + Istočno-kazahstansko vreme + + + + + Zapadno-kazahstansko vreme + + + + + Korejsko vreme + Korejsko standardno vreme + Korejsko letnje računanje vremena + + + + + Košre vreme + + + + + Krasnojarsk vreme + Krasnojarsk standardno vreme + Krasnojarsk letnje računanje vremena + + + + + Kirgizstan vreme + + + + + Šri Lanka vreme + + + + + Line Ostrva vreme + + + + + Lord Hov vreme + Lord Hov standardno vreme + Lord Hov letnje računanje vremena + + + + + Makao vreme + Makao standardno vreme + Makao letnje računanje vremena + + + + + Makverijsko vreme + + + + + Magadan vreme + Magadan standardno vreme + Magadan letnje računanje vremena + + + + + Malezija vreme + + + + + Maldivi vreme + + + + + Markiz vreme + + + + + Maršalska Ostrva vreme + + + + + Mauricijus vreme + Mauricijus standardno vreme + Mauricijus letnje računanje vremena + + + + + Moson vreme + + + + + Ulan Bator vreme + Ulan Bator standardno vreme + Ulan Bator letnje računanje vremena + + + + + Moskva vreme + Moskva standardno vreme + Moskva letnje računanje vremena + + + + + Mijanmar vreme + + + + + Nauru vreme + + + + + Nepal vreme + + + + + Nova Kaledonija vreme + Nova Kaledonija standardno vreme + Nova Kaledonija letnje računanje vremena + + + + + Novi Zeland vreme + Novi Zeland standardno vreme + Novi Zeland letnje računanje vremena + + + + + Njufaundlend vreme + Njufaundlend standardno vreme + Njufaundlend letnje računanje vremena + + + + + Niue vreme + + + + + Norfolk Ostrvo vreme + + + + + Fernando de Noronja vreme + Fernando de Noronja standardno vreme + Fernando de Noronja letnje računanje vremena + + + + + Severna Marijanska Ostrva vreme + + + + + Novosibirsk vreme + Novosibirsk standardno vreme + Novosibirsk letnje računanje vremena + + + + + Omsk vreme + Omsk standardno vreme + Omsk letnje računanje vremena + + + + + Pakistan vreme + Pakistan standardno vreme + Pakistan letnje računanje vremena + + + + + Palau vreme + + + + + Papua Nova Gvineja vreme + + + + + Paragvaj vreme + Paragvaj standardno vreme + Paragvaj letnje računanje vremena + + + + + Peru vreme + Peru standardno vreme + Peru letnje računanje vremena + + + + + Filipini vreme + Filipini standardno vreme + Filipini letnje računanje vremena + + + + + Feniks ostrva vreme + + + + + Sen Pjer i Mikelon vreme + Sen Pjer i Mikelon standardno vreme + Sen Pjer i Mikelon letnje računanje vremena + + + + + Pitkern vreme + + + + + Ponpei vreme + + + + + Kizilorda vreme + Kizilorda standardno vreme + Kizilorda letnje računanje vremena + + + + + Reinion vreme + + + + + Rotera vreme + + + + + Sahalin vreme + Sahalin standardno vreme + Sahalin letnje računanje vremena + + + + + Samara vreme + Samara standardno vreme + Samara letnje računanje vremena + + + + + Samoa vreme + Samoa standardno vreme + Samoa letnje računanje vremena + + + + + Sejšeli vreme + + + + + Singapur standardno vreme + + + + + Solomonska Ostrva vreme + + + + + Južna Džordžija vreme + + + + + Surinam + + + + + Šova vreme + + + + + Tahiti vreme + + + + + Taipei vreme + Taipei standardno vreme + Taipei letnje računanje vremena + + + + + Tadžikistan vreme + + + + + Tokelau vreme + + + + + Tonga vreme + Tonga standardno vreme + Tonga letnje računanje vremena + + + + + Čuuk vreme + + + + + Turkmenistan vreme + Turkmenistan standardno vreme + Turkmenistan letnje računanje vremena + + + + + Tuvalu vreme + + + + + Urugvaj vreme + Urugvaj standardno vreme + Urugvaj letnje računanje vremena + + + + + Uzbekistan vreme + Uzbekistan standardno vreme + Uzbekistan letnje računanje vremena + + + + + Vanuatu vreme + Vanuatu standardno vreme + Vanuatu letnje računanje vremena + + + + + Venecuela vreme + + + + + Vladivostok vreme + Vladivostok standardno vreme + Vladivostok letnje računanje vremena + + + + + Volgograd vreme + Volgograd standardno vreme + Volgograd letnje računanje vremena + + + + + Vostok vreme + + + + + Vejk ostrvo vreme + + + + + Valis i Futuna Ostrva vreme + + + + + Jakutsk vreme + Jakutsk standardno vreme + Jakutsk letnje računanje vremena + + + + + Jekaterinburg vreme + Jekaterinburg standardno vreme + Jekaterinburg letnje računanje vremena + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 hiljada + 0 hiljade + 0 hiljada + 00 hiljada + 00 hiljade + 00 hiljada + 000 hiljada + 000 hiljade + 000 hiljada + 0 milion + 0 miliona + 0 miliona + 00 milion + 00 miliona + 00 miliona + 000 milion + 000 miliona + 000 miliona + 0 milijarda + 0 milijarde + 0 milijardi + 00 milijarda + 00 milijarde + 00 milijardi + 000 milijarda + 000 milijarde + 000 milijardi + 0 trilion + 0 triliona + 0 triliona + 00 trilion + 00 triliona + 00 triliona + 000 trilion + 000 triliona + 000 triliona + + + + + 0 + 0 + 0 + 00 hilj + 00K + 00 hilj + 000 hilj + 000K + 000 hilj + 0 mil + 0 mil + 0 mil + 00 mil + 00 mil + 00 mil + 000 mil + 000 mil + 000 mil + 0 mlrd + 0 mlrd + 0 mlrd + 00 mlrd + 00 mlrd + 00 mlrd + 000 mlrd + 000 mlrd + 000 mlrd + 0 bil + 0 bil + 0 bil + 00 bil + 00 bil + 00 bil + 000 bil + 000 bil + 000 bil + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + {0} {1} + + + + Andorska pezeta + andorska pezeta + andorske pezete + andorske pezete + + + Ujedinjeni arapski emirati dirham + UAE diram + UAE dirama + UAE dirama + + + Avganistanski avgani (1927–2002) + avganistanski avgani (1927–2002) + avganistanska avgana (1927–2002) + avganistanskih avgana (1927–2002) + + + Avganistanski avgani + avganistanski avgani + avganistanska avgana + avganistanskih avgana + + + stari albanski lek + stara albanska leka + starih albanskih leka + + + Albanski lek + albanski lek + albanske leke + albanskih leka + + + Jermenski dram + jermenski dram + jermenska drama + jermenska drama + + + Holandski antili gilder + holandsko-antilski gilder + holandska antila + holandsko-antilskih gildera + + + Angolijska kvanza + angolijska kvanza + angolijske kvanze + angolijskih kvanzi + + + Angolijska kvanza (1977–1990) + angolijska kvanza (1977–1990) + angolijske kvanze (1977–1990) + angolijskih kvanzi (1977–1990) + + + Angolijska nova kvanza (1990–2000) + angolijska nova kvanza + angolijske nove kvanze + angolijskih novih kvanzi + + + Angolijska kvanza reađustado (1995–1999) + angolijska kvanza reađustado (1995–1999) + angolijske kvanze reađustado (1995–1999) + angolijskih kvanzi reađustado (1995–1999) + + + Argentinski austral + argentinski austral + argentinska australa + argentinskih australa + + + Argentinski pezos lej + argentinski pezos lej + argentinska pezos leja + argentinskih pezos leja + + + Argentinski pezos monedo nacional + argentinski pezos monedo nacional + argentinska pezos moneda nacional + argentinskih pezos moneda nacionala + + + Argentinski pezo (1983–1985) + argentinski pezo (1983–1985) + argentinska pezosa (1983–1985) + argentinskih pezosa (1983–1985) + + + Argentinski pezo + argentinski pezos + argentinska pezosa + argentinskih pezosa + + + Austrijski šiling + austrijski šiling + austrijska šilinga + austrijskih šilinga + + + Australijski dolar + australijski dolar + Australijska dolara + australijskih dolara + A$ + + + Arubanski florin + arubanski florin + arubanska florina + arubanskih florina + + + Azerbejdžanski manat (1993–2006) + azerbejdžanski manat (1993–2006) + azerbejdžanska manata (1993–2006) + azerbejdžanskih manata (1993–2006) + + + Azerbejdžanski manat + azerbejdžanski manat + azerbejdžanska manata + azerbejdžanskih manata + + + Bosansko-Hercegovački dinar + bosansko-hercegovački dinar + bosansko-hercegovačka dinara + bosansko-hercegovačkih dinara + + + Konvertibilna marka + bosansko-hercegovačka konvertibilna marka + bosansko-hercegovačke konvertibilne marke + bosansko-hercegovačkih konvertibilnih maraka + KM + + + Bosansko-hercegovački novi dinar + bosansko-hercegovački novi dinar + bosansko-hercegovačka nova dinara + bosansko-hercegovačkih novih dinara + + + Barbadoški dolar + barbadoški dolar + barbadoška dolara + barbadoških dolara + + + Bangladeška taka + bangladeška taka + bangladeške take + bangladeških taka + + + Belgijski franak (konvertibilni) + belgijski franak (konvertibilni) + belgijska franka (konvertibilna) + belgijskih franaka (konvertibilnih) + + + Belgijski franak + belgijski franak + belgijska franka + belgijskih franaka + + + Belgijski franak (finansijski) + belgijski franak (finansijski) + belgijska franka (finansijska) + belgijskih franaka (finansijskih) + + + Bugarski tvrdi lev + bugarski tvrdi lev + bugarska tvrda leva + bugarskih tvrdih leva + + + Bugarski socijalistički lev + bugarski socijalistički lev + bugarska socijalistička leva + bugarskih socijalističkih leva + + + Bugarski lev + bugarski lev + bugarska leva + bugarskih leva + + + Stari bugarski lev + stari bugarski lev + stara bugarska leva + starih bugarskih leva + + + Bahreinski dinar + bahreinski dinar + bahreinska dinara + bahreinskih dinara + + + Burundski franak + burundski franak + burundska franka + burundskih franaka + + + Bermudski dolar + bermudski dolar + bermudska dolara + bermudskih dolara + + + Brunejski dolar + brunejski dolar + brunejska dolara + brunejskih dolara + + + Bolivijski Boliviano + bolivijski boliviano + bolivijska boliviana + bolivijskih boliviana + + + Stari bolivijski bolivijano + stari bolivijski bolivijano + stara bolivijska bolivijana + starih bolivijskih bolivijana + + + Bolivijski pezo + bolivijski pezo + bolivijska pezosa + bolivijskih pezosa + + + Bolivijski mvdol + bolivijski mvdol + bolivijska mvdola + bolivijskih mvdola + + + Brazilski novi kruzeiro (1967–1986) + brazilski novi kruzeiro (1967–1986) + brazilska nova kruzeira (1967–1986) + brazilskih novih kruzeira (1967–1986) + + + Brazilijski kruzado + brazilski kruzados + brazilska kruzadosa + brazilskih kruzadosa + + + Brazilski kruzeiro (1990–1993) + brazilski kruzeiro (1990–1993) + brazilska kruzeira (1990–1993) + brazilskih kruzeira (1990–1993) + + + Brazilski Real + brazilski real + brazilska reala + brazilskih reala + + + Brazilijski novi kruzado + brazilski novi kruzado + brazilska nova kruzada + brazilskih novih kruzada + + + Brazilski kruzeiro + brazilski kruzeiro + brazilska kruzeira + brazilskih kruzeira + + + Stari brazilski kruzeiro + stari brazilski kruzeiro + stara brazilska kruzeira + starih brazilskih kruzeira + + + Bahamski dolar + bahamski dolar + bahamska dolara + bahamskih dolara + + + Butanski ngultrum + butanski ngultrum + butanska ngultruma + butanskih ngultruma + + + Burmanski kjat + burmanski kjat + burmanska kjata + burmanskih kjata + + + Bocvanska pula + bocvanska pula + bocvanske pule + bocvanskih pula + + + Beloruska nova rublja (1994–1999) + beloruska nova rublja (1994–1999) + beloruske nove rublja (1994–1999) + beloruskih novih rublji (1994–1999) + + + Beloruska rublja + beloruska rublja + beloruske rublje + beloruskih rublji + + + Belize dolar + belizeanski dolar + belizeanska dolara + belizeanskih dolara + + + Kanadski dolar + kanadski dolar + kanadska dolara + kanadskih dolara + + + Kongolski franak + kongolski franak + kongolska franka + kongolskih franaka + + + WIR evro + WIR evro + WIR evra + WIR evra + + + Švajcarski franak + švajcarski franak + švajcarska franka + švajcarskih franaka + + + WIR franak + WIR franak + WIR franka + WIR franaka + + + Čileanski eskudo + čileanski eskudo + čileanska eskuda + čileanskih eskuda + + + Čileovski unidades se fomento + čileanski unidades de fomento + čileanska unidades de fomenta + čileanski unidadesi de fomento + + + Čileanski pezo + čileanski pezo + čileanska pezosa + čileanski pezosi + + + Dolar kineske narodne banke + dolar kineske narodne banke + dolara kineske narodne banke + dolara kineske narodne banke + + + Kineski juan renminbi + kineski juan + kineska juan + kineskih juana + CN¥ + + + Kolumbijski pezo + kolumbijski pezo + kolumbijska pezosa + kolumbijskih pezosa + + + Unidad de valorški real + unidad de valorški real + nidad de valor reala + unidad de valorških reala + + + Kostarikanski kolon + kostarikanski kolon + kostarikanska kolona + kostarikanski koloni + + + Stari srpski dinar + stari srpski dinar + stara srpska dinara + starih srpskih dinara + + + Čehoslovačka tvrda kruna + čehoslovačka tvrda kruna + čehoslovačke tvrde krune + čehoslovačkih tvrdih kruna + + + Kubanski konvertibilni peso + kubanski konvertibilni peso + kubanska konvertibilna pezosa + kubanski konvertibilni pezos + + + Kubanski pezo + kubanski pezos + kubanska pezosa + kubanskih pezosa + + + Zelenortski eskudo + zelenortski eskudo + zelenortska eskuda + zelenortskih eskuda + + + Kiparska funta + kiparska funta + kiparske funte + kiparskih funti + + + Češka kruna + češka kruna + češke krune + čeških kruna + + + + Istočno-nemačka marka + istočno-nemačka marka + istočno-nemačke marke + istočno-nemačkih maraka + + + Nemačka marka + nemačka marka + nemačke marke + nemačkih maraka + + + Džibutanski franak + džibutanski franak + džibutanska franka + džibutanskih franaka + + + Danska kruna + danska kruna + danske krune + danskih kruna + + + Dominikanski pezo + dominikanski pezo + dominikanska pezosa + dominikanskih pezosa + + + Alžirski dinar + alžirski dinar + alžirska dinara + alžirskih dinara + + + Ekvadorski sakr + ekvadorski sakr + ekvadorska sakra + ekvadorskih sakra + + + Ekvadorski unidad de valor konstante + ekvadorski unidad de valor konstante + ekvadorska unidad de valor konstanta + ekvadorskih unidad de valor konstanta + + + Estonska kroon + estonska kruna + estonske krune + estonskih kruna + + + Egipatska funta + egipatska funta + egipatske funte + egipatskih funti + + + Eritrejska nakfa + eritrejska nakfa + eritrejske nakfe + eritrejskih nakfi + + + Španska pezeta (račun) + španska pezeta (A račun) + španske pezete (A račun) + španskih pezeta (A račun) + + + Španska pezeta (konvertibilniračun) + španska pezeta (konvertibilan račun) + španske pezete (konvertibilan račun) + španskih pezeta (konvertibilan račun) + + + Španska pezeta + španska pezeta + španska pezeta + španske pezete + + + Etiopijski bir + etiopijski bir + etiopijska bira + etiopijskih bira + + + Evro + evro + evra + evra + + + + Finska marka + finska marka + finske marke + finskih maraka + + + Fidži dolar + fidži dolar + fidži dolara + fidži dolara + + + Foklandska ostrva funta + folklandska funta + folklandske funte + folklandskih funti + + + Francuski franak + francuski franak + francuska franka + francuskih franaka + + + Britanska funta sterlinga + britanska funta sterlinga + britanske funte sterlinga + britanskih funti sterlinga + £ + + + Gruzijski kupon larit + gruzijski kupon larit + gruzijska kupon larita + gruzijskih kupon larita + + + Gruzijski lari + gruzijski laris + gruzijska larisa + gruzijskih larisa + + + Ganski cedi (1979–2007) + ganski ced (1979–2007) + ganska ceda (1979–2007) + ganskih ceda (1979–2007) + + + Ganski cedi + ganski ced + ganska ceda + ganskih ceda + + + Gibraltarska funta + gibraltarska funta + gibraltarske funte + gibraltarskih funti + + + Gambijski dalasi + gambijski dalas + gambijska dalasa + gambijskih dalasa + + + Gvinejski franak + gvinejski franak + gvinejska franka + gvinejskih franaka + + + Gvinejski sili + gvinejski sili + gvinejska sila + gvinejskih sila + + + Ekvatorijalno-gvinejski ekvele + ekvatorijalno-gvinejski ekvele + ekvatorijalno-gvinejska ekvela + ekvatorijalno-gvinejskih ekvela + + + Grčka drahma + grčka drahma + grčke drahme + grčkih drahmi + + + Gvatemalski kvecal + gvatemalski kvecal + gvatemalska kvecala + gvatemalskih kvecala + + + Portugalska gvineja eskudo + portugalsko-gvinejski eskudo + portugalsko-gvinejska eskuda + portugalsko-gvinejskih eskuda + + + Gvineja Bisao Pezo + gvineja-bisaoški pezo + gvineja-bisaoška pezosa + gvineja-bisaoških pezosa + + + Gujanski dolar + gvajanski dolar + gvajanska dolara + gvajanskih dolara + + + Hongkonški dolar + hongkonški dolar + hongkonška dolara + hongkonških dolara + HK$ + + + Honduraška lempira + honduraški lempir + honduraška lempira + honduraških lempira + + + Hrvatski dinar + hrvatski dinar + hrvatska dinara + hrvatskih dinara + + + Hrvatska kuna + hrvatska kuna + hrvatske kune + hrvatskih kuna + + + Haićanski gurd + haićanski gurd + haićanska gurda + haićanskih gurda + + + Mađarska forinta + mađarska forinta + mađarske forinte + mađarskih forinti + + + Indonežanska rupija + indonežanska rupija + indonežanske rupije + indonežanskih rupija + + + Irska funta + irska funta + irske funte + irskih funti + + + Izraelska funta + izraelska funta + izraelske funte + izraelskih funti + + + Stari izraelski šekeli + stari izraelski šekeli + stari izraelski šekeli + stari izraelski šekeli + + + Izraelski novi šekel + izraelski novi šekel + izraelska nova šekela + izraelskih novih šekela + + + + Indijska rupija + indijska rupija + indijske rupije + indijskih rupija + + + + Irački dinar + irački dinar + iračka dinara + iračkih dinara + + + Iranski rijal + iranski rijal + iranska rijala + iranskih rijala + + + Stara islandska kruna + stara islandska kruna + stara islandska kruna + stara islandska kruna + + + Islandska kruna + islandska kruna + islandske krune + islandskih kruna + + + Italijanska lira + italijanska lira + italijanske lire + italijanske lire + + + Jamajkanski dolar + jamajkanski dolar + jamajkanska dolara + jamajkanskix dolara + + + Jordanski dinar + jordanski dinar + jordanska dinara + jordanskih dinara + + + Japanski jen + japanski jen + japanska jena + japanskih jena + ¥ + + + Kenijski šiling + kenijski šiling + kenijska šilinga + kenijskih šilinga + + + Kirgistanski som + kirgistanski som + kirgistanska soma + kirgistanskih soma + + + Kambodžanski rijel + kambodžanski rijel + kambodžanska rijela + kambodžanskih rijela + + + Komorski franak + komorski franak + komorska franka + komorskih franaka + + + Severnokorejski von + severnokorejski von + severnokorejska vona + severnokorejskih vona + + + Južnokorejski hvan + južnokorejski hvan + južnokorejska hvana + južnokorejskih hvana + + + Stari južnokorejski von + stari južnokorejski von + stara južnokorejska vona + starih južnokorejskih vona + + + Južnokorejski Von + južnokorejski von + južnokorejska vona + južnokorejskih vona + + + + Kuvajtski dinar + kuvajtski dinar + kuvajtska dinara + kuvajtskih dinara + + + Kajmanska ostrva dolar + kajmanski dolar + kajmanska dolara + kajmanskih dolara + + + Kazahstanski tendž + kazahstanska tendža + kazahstanske tendže + kazahstanskih tendži + + + Laoški kip + laoški kip + laoška kipa + laoški kipi + + + Libanska funta + libanska funta + libanske funte + libanskih funti + + + Šrilankanska rupija + šrilankanska rupija + šrilankanske rupije + šrilankanskih rupija + + + Liberijski dolar + liberijski dolar + liberijska dolara + liberijskih dolara + + + Lesoto loti + lesotski lotis + lesotska lotisa + lesotskih lotisa + + + Litvanski litas + litvanski litas + litvanska litasa + litvanskih litasa + + + Litvanski talonas + litvanski talonas + litvanska talonasa + litvanskih talonasa + + + Luksemburški konvertibilni franak + luksemburški konvertibilni franak + luksemburška konvertibilna franka + luksemburških konvertibilnih franaka + + + Luksemburški franak + luksemburški franak + luksemburška franka + luksemburški franci + + + Luksemburški finansijski franak + luksemburški finansijski franak + luksemburška finansijska franka + luksemburških finansijskih franaka + + + Latvijski lati + latvijski lat + latvijska lata + latvijskih lata + + + Latvijska rublja + latvijska rublja + latvijske rublje + latvijskih rublji + + + Libijski dinar + libijski dinar + libijska dinara + libijskih dinara + + + Marokanski dirham + marokanska dirhama + marokanske dirhame + marokanskih dirhama + + + Marokanski franak + marokanski franak + marokanska franka + marokanskih franaka + + + Monegaskanski franak + monegaskanski franak + monegaskanska franka + monegaskanskih franaka + + + Moldovanski kupon + moldovanski kupon + moldovanska kupona + moldovanskih kupona + + + Moldavski lej + moldavski lej + moldavska leja + moldavskih leja + + + Malagasijski ariari + malagasijski ariari + malagasijska ariarija + malagasijskih ariarija + + + Malagasijski franak + malagašajski franak + malagašajska franka + malagašajski franci + + + Makedonski denar + makedonski denar + makedonska denara + makedonskih dinara + + + Stari makedonski denar + stari makedonski denar + stara makedonska denara + starih makedonskih denara + + + Malijanski franak + malijski franak + malijska franka + malijskih franaka + + + Mjanmarski kjat + mjanmarski kjat + mjanmarska kjata + mjanmarskih kjata + + + Mongolski tugrik + mongolski tugrik + mongolska tugrika + mongolskih tugrika + + + Makaniška pataka + makaneška pataka + makaneške patake + makaneških pataka + + + Mauritanijska ogija + mauritanijska ogija + mauritanijske ogije + mauritanijskih ogija + + + Malteška lira + malteška lira + malteške lire + malteških lira + + + Malteška funta + malteška funta + malteške funte + malteških funti + + + Mauricijska rupija + mauricijska rupija + mauricijske rupije + mauricijskih rupija + + + Maldivska rufija + maldivska rufija + maldivske rufije + maldivskih rufija + + + Malavijska kvača + malavijska kvača + malavijske kvače + malavijskih kvača + + + Meksički pezo + meksički pezo + meksička pezosa + meksičkih pezosa + + + Meksički srebrni pezo (1861–1992) + meksički srebrni pezo + meksička srebrna pezosa + meksičkih srebrnih pezosa + + + Meksički unidad de inversion (UDI) + meksički unidads de inverzion + meksička unidads de inverziona + meksičkih unidads de inverziona + + + Malezijski ringgit + malezijski ringgit + malezijska ringgita + malezijskih ringgita + + + Mozambijski eskudo + mozambijski eskudo + mozambijska eskuda + mozambijskih eskuda + + + Stari mozambijski metikal + stari mozambijski metikal + stara mozambijska metikala + starih mozambijskih metikala + + + Mozambijski metikal + mozambijski metikal + mozambijska metikala + mozambijskih metikala + + + Namibijski dolar + namibijski dolar + namibijska dolara + namibijskih dolara + + + Nigerijska naira + nigerijska naira + nigerijske naire + nigerijskih naira + + + Nikaragvanska kordoba + nikaragvanska kordoba + nikaragvanske kordobe + nikaragvanskih kordoba + + + Nikaragvanska zlatna kordoba + nikaragvanska zlatna kordoba + nikaragvanske zlatne kordobe + nikaragvanskih zlatnih kordoba + + + Holandski gulden + holandski gulden + holandska guldena + holandskih guldena + + + Norveška kruna + norveška kruna + norveške krune + norveških kruna + + + Nepalska rupija + nepalska rupija + nepalske rupije + nepalskih rupija + + + Novozelandski dolar + novozelandski dolar + novozelandska dolara + novozelandskih dolara + + + Omanski rijal + omanski rijal + omanska rijala + omanskih rijala + + + Panamska balboa + panamska balboa + panamske balboe + panamskih balboa + + + Peruanski inti + peruvijski inti + peruvijska intija + peruvijskih intija + + + Peruanski nuevo sol + peruanski nuevo sol + peruanska nuevo sola + peruanskih nuevo sola + + + Peruanski sol + peruanski sol + peruanska sola + peruanskih sola + + + Papuanska kina + papuanska kina + papuanske kine + papuanskih kina + + + Filipinski pezo + filipinski pezo + filipinska pezosa + filipinskih pezosa + + + Pakistanska rupija + pakistanska rupija + pakistanske rupije + pakistanskih rupija + + + Poljski zlot + poljski zlot + poljska zlota + poljskih zlota + zl + + + Poljski zloti (1950–1995) + poljski zlot (1950–1995) + poljska zlota (1950–1995) + poljskih zlota (1950–1995) + + + Portugalski eskudo + portugalski eskudo + portugalska eskuda + portugalskih eskuda + + + Paragvajski guarni + paragvajski gvaranij + paragvajska gvaranija + paragvajskih gvaranija + + + Katarški rijal + katarski rijal + katarska rijala + katarskih rijala + + + Rodejskidolar + rodežanski dolar + rodežanska dolara + rodežanskih dolara + + + Rumunski lej + rumunski lej + rumunska leja + rumunskih leja + + + Rumunski lej (1952–2006) + rumunski lej (1952–2006) + rumunska leja (1952–2006) + rumunskih leja (1952–2006) + + + Srpski dinar + srpski dinar + srpska dinara + srpskih dinara + din. + + + Ruska rublja + ruska rublja + ruske rublje + ruskih rublji + + + Ruska rublja (1991–1998) + ruska rublja (1991–1998) + ruske rublje (1991–1998) + ruskih rublji (1991–1998) + + + Ruandski franak + ruandski franak + ruandska franka + ruandskih franaka + + + Saudijski rijal + saudijski rijal + saudijska rijala + saudijskih rijala + + + Solomonsko-ostrvski dolar + solomonsko-ostrvski dolar + solomonsko-ostrvska dolara + solomonsko-ostrvskih dolara + + + Sejšelska rupija + sejšelska rupija + sejšelske rupije + sejšelskih rupija + + + Stari sudanski dinar + stari sudanski dinar + stara sudanska dinara + starih sudanskih dinara + + + Sudanska funta + sudanska funta + sudanske funte + sudanskih funti + + + Stara sudanska funta + stara sudanska funta + stare sudanske funte + starih sudanskih funti + + + Švedska kruna + švedska kruna + švedske krune + švedskih kruna + + + Singapurski dolar + singapurski dolar + singapurska dolara + singapurskih dolara + + + Sv. jelenska funta + sv. jelenska funta + sv. jelenske funte + sv. jelenskih funti + + + Slovenački tolar + slovenački tolar + slovenačka tolara + slovenačkih tolara + + + Slovačka kruna + slovačka kruna + slovačke krune + slovačkih kruna + + + Sijera-leonški leone + sijeraleonski leone + sijeraleonska leona + sijeraleonskih leona + + + Somalijski šiling + somalijski šiling + somalijska šilinga + somalijskih šilinga + + + Surinamski dolar + surinamski dolar + surinamska dolara + surinamskih dolara + + + Surinamski gilder + surinamski gilder + surinamska gildera + surinamskih gildera + + + Južnosudanska funta + južnosudanska funta + južnosudanske funte + južnosudanskih funti + + + Sao Tome i Principe dobra + sao tome i principe dobar + sao tome i principe dobra + sao tome i principe dobra + + + Sovjetska rublja + sovjetska rublja + sovjetske rublje + sovjetskih rublji + + + Salvadorski kolon + salvadorski kolon + salvadorska kolona + salvadorskih kolona + + + Sirijska funta + sirijska funta + sirijske funte + sirijskih funti + + + Svazi lilangeni + svazi emalangen + svazi emalangena + svazi emalangena + + + Tai baht + tai baht + tai bahta + tai bahta + ฿ + + + Tadžihistanska rublja + tadžihistanska rublja + tadžihistanske rublje + tadžihistanskih rublji + + + Tadžihistanski somon + tadžihistanski somon + tadžihistanska somona + tadžihistanskih somona + + + Turkmenistanski manat (1993–2009) + turkmenistanski manat (1993–2009) + turkmenistanska manata (1993–2009) + turkmenistanski manat (1993–2009) + + + Turkmenistanski manat + turkmenistanski manat + turkmenistanska manata + turkmenistanskih manata + + + Tunežanski dinar + tunežanski dinar + tunežanska dinara + tunežanskih dinara + + + Tongonška Panga + tongaška panga + tongaške pange + tongaških panga + + + Timorški eskudo + timorški eskudo + timorška eskuda + timorških eskuda + + + Turska lira (1922–2005) + turska lira (1922–2005) + turske lire (1922–2005) + turskih lira (1922–2005) + + + Turska lira + turska lira + turske lire + turskih lira + Tl + + + Trinidad tobagoški dolar + trinidad-tobagoški dolar + trinidad-tobagoška dolara + trinidad-tobagoških dolara + + + Novi tajvanski dolar + novi tajvanski dolar + nova tajvanska dolara + novih tajvanskih dolara + NT$ + + + Tanzanijski šiling + tanzanijski šiling + tanzanijska šilinga + tanzanijskih šilinga + + + Ukrajinska hrivnja + ukrajinska hrivnja + ukrajinske hrivnje + ukrajinskih hrivnji + + + Ukrajinski karbovaneti + ukrajinski karbovanec + ukrajinska karbovanciva + ukrajinskih karbovanciva + + + Ugandski šiling (1966–1987) + ugandijski šiling (1966–1987) + ugandijska šilinga (1966–1987) + ugandijskih šilinga (1966–1987) + + + Ugandski šiling + ugandski šiling + ugandska šilinga + ugandskih šilinga + + + Američki dolar + američki dolar + američka dolara + američkih dolara + + + SAD dolar (sledeći dan) + SAD dolar (sledeći dan) + SAD dolara (sledeći dan) + SAD dolara (sledeći dan) + + + SAD dolar (isti dan) + SAD dolar (isti dan) + SAD dolara (isti dan) + SAD dolara (isti dan) + + + Urugvajski pezo en unidades indeksadas + urugvajski pezo en unidades indeksades + urugvajska pezosa en unidades indeksadesa + ugvajskih pezosa en unidades indeksadesa + + + Urugvajski pezo (1975–1993) + urugvajski pezo (1975–1993) + urugvajska pezosa (1975–1993) + urugvajskih pezosa (1975–1993) + + + Urugvajski pezo + urugvajski pezo + urugvajska pezosa + urugvajskih pezosa + + + Uzbekistanski som + uzbekistanski som + uzbekistanska soma + uzbekistanskih soma + + + Venecuelanski bolivar (1871–2008) + venecuelanski bolivar (1871–2008) + venecuelanska bolivara (1871–2008) + venecuelanskih bolivara (1871–2008) + + + Venecuelanski bolivar + venecuelanski bolivar + venecuelanska bolivara + venecuelanskih bolivara + + + Vijetnamski dong + vijetnamski dong + vijetnamska donga + vijetnamskih donga + + + + Vijetnamski dong (1978–1985) + vijetnamski dong (1978–1985) + vijetnamska donga (1978–1985) + vijetnamskih donga (1978–1985) + + + Vanuatski vatu + vanuatski vatu + vanuatska vatua + vanuatskih vatua + + + Samoanska tala + samoanska tala + samoanske tale + samoanskih tala + + + CFA franak BEAC + CFA franak BEAC + CFA franka BEAC + CFA franaka BEAC + FCFA + + + Srebro + srebro + srebra + srebra + + + Zlato + zlato + zlata + zlata + + + Evropska kompozitna jedinica + evropska kompozitna jedinica + evropske kompozitne jedinice + evropskih kompozitnih jedinica + + + Evropska novčana jedinica + evropska novčana jedinica (XBB) + evropske novčane jedinice (XBB) + evropske novčane jedinice (XBB) + + + Evropska jedinica računa (XBC) + evropska jedinica računa (XBC) + evropske jedinice računa (XBC) + evropskih jedinica računa (XBC) + + + Evropska jedinica računa (XBD) + evropska jedinica računa (XBD) + evropske jedinice računa (XBD) + evropskih jedinica računa (XBD) + + + Istočno-karipski dolar + istočno-karipski dolar + istočno-karipska dolara + istočno-karipskix dolara + + + Posebna crtaća prava + posebno crtaće pravo + posebna crtaća prava + posebnih crtaćih prava + + + Evropska valutna jedinica + evropska novčana jedinica (XEU) + evropske novčane jedinice (XEU) + evropskih novčanih jedinica + + + Francuski zlatni franak + francuski zlatni franak + francuska zlatna franka + francuskih zlatnih franaka + + + Francuski UIC-franak + francuski UIC-franak + francuska UIC-franka + francuskih UIC-franaka + + + CFA franak BCEAO + CFA franak BCEAO + CFA franka BCEAO + CFA franaka BCEAO + CFA + + + Paladijum + paladijum + paladijuma + paladijuma + + + CFP franak + CFP franak + CFP franka + CFP franaka + CFPF + + + Platina + platina + platine + platina + + + RINET fond + RINET fond + RINET fonda + RINET fondova + + + Kod testirane valute + kod testirane valute + koda testirane valute + kodova testirane valute + + + Nepoznata ili nevažeća valuta + nepoznata ili nevažeća valuta + nepoznate ili nevažeće valute + nepoznatih ili nevažećih valuta + + + Jemenski dinar + jemenski dolar + jemenska dolara + jemenskih dolara + + + Jemenski rijal + jemenski rijal + jemenska rijala + jemenskih rijala + + + Jugoslovenski tvrdi dinar + jugoslovenski tvrdi dinar + jugoslovenska tvrda dinara + jugoslovenskih tvrdih dinara + + + Jugoslovenski novi dinar + jugoslovenski novi dinar + jugoslovenska nova dinara + jugoslovenskih novih dinara + + + Jugoslovenski konvertibilni dinar + jugoslovenski konvertibilni dinar + jugoslovenska konvertibilna dinara + jugoslovenskih konvertibilnih dinara + + + Jugoslovenski reformirani dinar + jugoslovenski reformirani dinar + jugoslovenska reformirana dinara + jugoslovenskih reformiranih dinara + + + Južno-afrički rand (finansijski) + južnoafrički rand (finansijski) + južnoafrička randa (finansijska) + južnoafričkih randa (finansijskih) + + + Južno-afrički rand + južno-afrički rand + južno-afrička randa + južno-afričkih randa + + + Zambijska kvača (1968–2012) + zambijska kvača (1968–2012) + zambijske kvače (1968–2012) + zambijskih kvača (1968–2012) + + + Zambijska kvača + zambijska kvača + zambijske kvače + zambijskih kvača + + + Zairski novi zair + zairski novi zair + zairska nova zaira + zairskih novih zaira + + + Zairski zair + zairski zair + zairska zaira + zairskih zaira + + + Zimbabveanski dolar (1980–2008) + zimbabvejski dolar (1980–2008) + zimbabvejska dolara (1980–2008) + zimbabvejskih dolara (1980–2008) + + + Zimbabveanski dolar (2009) + zimbabvejski dolar (2009) + zimbabvejska dolara (2009) + zimbabvejskih dolara (2009) + + + Zimbabveanski dolar (2008) + zimbabvejski dolar (2008) + zimbabvejska dolara (2008) + zimbabvejskih dolara (2008) + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} ge sila + {0} ge sila + {0} ge sila + + + {0} minut + {0} minuta + {0} minuta + + + {0} sekunda + {0} sekunde + {0} sekundi + + + {0} stepen + {0} stepena + {0} stepeni + + + {0} aker + {0} akera + {0} akera + + + {0} hektar + {0} hektara + {0} hektara + + + {0} kvadratna stopa + {0} kvadratne stope + {0} kvadratnih stopa + + + {0} kvadratni kilometar + {0} kvadratna kilometra + {0} kvadratnih kilometara + + + {0} kvadratni metar + {0} kvadratna metra + {0} kvadratnih metara + + + {0} kvadratna milja + {0} kvadratne milje + {0} kvadratnih milja + + + {0} dan + {0} dana + {0} dana + + + {0} sat + {0} sata + {0} sati + + + {0} milisekunda + {0} milisekunde + {0} milisekundi + + + {0} minut + {0} minuta + {0} minuta + + + {0} mesec + {0} meseca + {0} meseci + + + {0} sekunda + {0} sekunde + {0} sekundi + + + {0} nedelja + {0} nedelje + {0} nedelja + + + {0} godina + {0} godine + {0} godina + + + {0} centimetar + {0} centimentra + {0} centimetara + + + {0} stopa + {0} stope + {0} stopa + + + {0} inč + {0} inča + {0} inča + + + {0} kilometar + {0} kilometra + {0} kilometara + + + {0} svetlosna godina + {0} svetlosne godine + {0} svetlosnih godina + + + {0} metar + {0} metra + {0} metara + + + {0} milja + {0} milje + {0} milja + + + {0} milimetar + {0} milimetra + {0} milimetara + + + {0} pikometar + {0} pikometra + {0} pikometara + + + {0} jard + {0} jarda + {0} jardi + + + {0} gram + {0} grama + {0} grama + + + {0} kilogram + {0} kilograma + {0} kilograma + + + {0} unca + {0} unce + {0} unci + + + {0} funta + {0} funte + {0} funti + + + {0} konjska snaga + {0} konjske snage + {0} konjskih snaga + + + {0} kilovat + {0} kilovata + {0} kilovati + + + {0} vat + {0} vata + {0} vati + + + {0} hektopaskal + {0} hektopaskala + {0} hektopaskala + + + {0} inč živinog stuba + {0} inča živinog stuba + {0} inča živinog stuba + + + {0} milibar + {0} milibara + {0} milibara + + + {0} kilometar na sat + {0} kilometra na sat + {0} kilometara na sat + + + {0} metar u sekundi + {0} metra u sekundi + {0} metara u sekundi + + + {0} milja na sat + {0} milje na sat + {0} milja na sat + + + {0} stepen Celzijusa + {0} stepena Celzijusa + {0} stepeni Celzijusa + + + {0} stepen Farenhajta + {0} stepena Farenhajta + {0} stepeni Farenhajta + + + {0} kubni kilometar + {0} kubna kilometra + {0} kubnih kilometara + + + {0} kubni milja + {0} kubne milje + {0} kubnih milja + + + {0} litar + {0} litra + {0} litara + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} dan + {0} dana + {0} dana + + + {0} sat + {0} sata + {0} sati + + + {0} ms + {0} ms + {0} ms + + + {0} min + {0} min + {0} min + + + {0} mes + {0} mes + {0} mes + + + {0} sek + {0} sek + {0} sek + + + {0} ned + {0} ned + {0} ned + + + {0} god + {0} god + {0} god + + + {0} cm + {0} cm + {0} cm + + + {0} st + {0} st + {0} st + + + {0} inč + {0} inča + {0} inča + + + {0} km + {0} km + {0} km + + + {0} sg + {0} sg + {0} sg + + + {0} m + {0} m + {0} m + + + {0} milja + {0} milje + {0} milja + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} jrd + {0} jrd + {0} jrd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} unca + {0} unce + {0} unci + + + {0} lb + {0} lb + {0} lb + + + {0} ks + {0} ks + {0} ks + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + + + {0} ac + {0} ac + {0} ac + + + {0} ha + {0} ha + {0} ha + + + {0} ft² + {0} ft² + {0} ft² + + + {0} km² + {0} km² + {0} km² + + + {0} m² + {0} m² + {0} m² + + + {0} mi² + {0} mi² + {0} mi² + + + {0} d + {0} d + {0} d + + + {0} sat + {0} sata + {0} sati + + + {0} ms + {0} ms + {0} ms + + + {0} m + {0} m + {0} m + + + {0} m + {0} m + {0} m + + + {0} sek + {0} sek + {0} sek + + + {0} n + {0} n + {0} n + + + {0} g + {0} g + {0} g + + + {0} cm + {0} cm + {0} cm + + + {0} st + {0} st + {0} st + + + {0} inč + {0} inča + {0} inča + + + {0} km + {0} km + {0} km + + + {0} sg + {0} sg + {0} sg + + + {0} m + {0} m + {0} m + + + {0} milja + {0} milje + {0} milja + + + {0} mm + {0} mm + {0} mm + + + {0} pm + {0} pm + {0} pm + + + {0} jrd + {0} jrd + {0} jrd + + + {0} g + {0} g + {0} g + + + {0} kg + {0} kg + {0} kg + + + {0} unca + {0} unce + {0} unci + + + {0} lb + {0} lb + {0} lb + + + {0} ks + {0} ks + {0} ks + + + {0} kW + {0} kW + {0} kW + + + {0} W + {0} W + {0} W + + + {0} hPa + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + {0} mi/h + + + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + + + {0} km³ + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + {0} mi³ + + + {0} l + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + {0}, {1} + {0}, {1} + {0} i {1} + {0} i {1} + + + + + da:d + ne:n + + + + diff --git a/library/Zend/Locale/Data/sr_Latn_BA.xml b/library/Zend/Locale/Data/sr_Latn_BA.xml new file mode 100755 index 000000000..a79ee5a45 --- /dev/null +++ b/library/Zend/Locale/Data/sr_Latn_BA.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + Yabuuti + Eretria + Otobbia + + + + [a b t s e c k x i d q r f g o l m n u w h y] + [j p v z] + [A B T S E C K X I D Q R F G O L M N U W H Y] + + + + + + + + EEEE, MMMM dd, y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + + + + Qun + Nah + Cig + Agd + Cax + Qas + Qad + Leq + Way + Dit + Xim + Kax + + + Qunxa Garablu + Kudo + Ciggilta Kudo + Agda Baxis + Caxah Alsa + Qasa Dirri + Qado Dirri + Liiqen + Waysu + Diteli + Ximoli + Kaxxa Garablu + + + + + Q + N + C + A + C + Q + Q + L + W + D + X + K + + + + + + + Nab + San + Sal + Rab + Cam + Jum + Qun + + + Naba Sambat + Sani + Salus + Rabuq + Camus + Jumqata + Qunxa Sambat + + + + + N + S + S + R + C + J + Q + + + + + + + saaku + carra + + + + + + Yaasuusuk Duma + Yaasuusuk Wadir + + + + + + EEEE, MMMM dd, y + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + + + + ¤#,##0.00 + + + + + + Nfk + + + + + diff --git a/library/Zend/Locale/Data/ssy_ER.xml b/library/Zend/Locale/Data/ssy_ER.xml new file mode 100755 index 000000000..d03a991ec --- /dev/null +++ b/library/Zend/Locale/Data/ssy_ER.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/st.xml b/library/Zend/Locale/Data/st.xml new file mode 100755 index 000000000..56fb430b8 --- /dev/null +++ b/library/Zend/Locale/Data/st.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + Seburu + Se-amhari + Se-arab + Se-azerbaijani + Se-belarusia + Se-bulgaria + Se-bengali + Breton + Se-bosnia + Se-catalia + Se-czech + Se-welsh + Se-dutch + Se-jeremane + Se-greek + Senyesemane + Se-esperanto + Sespain + Se-estonia + Se-basque + Se-persia + Se-finnish + Se-tagalog + Se-foroese + Se-french + Se-frisia + Se-irish + Se-scots gaelic + Se-galicia + Guarani + Se-gujarati + Se-hebrew + Se-hindi + Se-croatia + Se-hungaria + Se-interlingua + Se-indonesia + Se-iceland + Se-tariana + Se-japane + Se-javane + Se-geogia + Se-kannada + Se-korea + Kurdish + Kyrgyz + Se-latino + Se-Lithuano + Se-masedonia + Se-malayalam + Se-marathi + Se-malay + Se-maltese + Se-nepali + Dutch + Se-norway (Nynorsk) + Se-norway + Se-occitan + Oriya + Se-punjabi + Se-polish + Pashto + Se-portugal + Seputukesi (sa Brazil) + Se-portugal (Portugal) + Se-romania + Se-rushia + Serbo-Croatian + Se-sinhali + Se-slovak + Se-slovania + Se-albanian + Se-serbian + Sesotho + Se-sundanese + Se-sweden + Se-swahili + Se-tamil + Se-telegu + Se-thai + Se-tigrinya + Turkmen + Se-klingon + Se-theki + Twi + Se-ukrania + Se-urdu + Se-uzbek + Se-vietnam + se Xhosa + Yiddish + se Zulu + + + + [a b d e f g h i j k l m n o p q r s t u w y] + [c v x z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + Phe + Kol + Ube + Mme + Mot + Jan + Upu + Pha + Leo + Mph + Pun + Tsh + + + Phesekgong + Hlakola + Hlakubele + Mmese + Motsheanong + Phupjane + Phupu + Phata + Leotshe + Mphalane + Pundungwane + Tshitwe + + + + + + + Son + Mma + Bed + Rar + Ne + Hla + Moq + + + Sontaha + Mmantaha + Labobedi + Laboraru + Labone + Labohlane + Moqebelo + + + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + R + + + + + diff --git a/library/Zend/Locale/Data/st_LS.xml b/library/Zend/Locale/Data/st_LS.xml new file mode 100755 index 000000000..e7af9b169 --- /dev/null +++ b/library/Zend/Locale/Data/st_LS.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + M + + + + diff --git a/library/Zend/Locale/Data/st_ZA.xml b/library/Zend/Locale/Data/st_ZA.xml new file mode 100755 index 000000000..1899565cf --- /dev/null +++ b/library/Zend/Locale/Data/st_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/supplementalData.xml b/library/Zend/Locale/Data/supplementalData.xml new file mode 100755 index 000000000..b2856533a --- /dev/null +++ b/library/Zend/Locale/Data/supplementalData.xml @@ -0,0 +1,4980 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dutch official + At most 6% are not fluent in English + French official, the figure is derived from literacy * population + While Cyrillic is customary, the vast majority of the population can read both.For languages not customarily written, the writing populiation is artificially set to 5% in the absence of better information. + The figure includes 'Vlaams' population from Ethnologue + It is estimated that Walloon is used actively by 10-20% of the total population of Wallonia or between 300,000 and 600,000 people. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information. + http://en.wikipedia.org/wiki/Demographics_of_Switzerland Literacy rate for gsw is 5% of reported speaker population; literacy is mostly in standard German. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information. + Arabic official, the figure is derived from literacy * lang pop + Spanish is the official language, only about 60-70% of the population speaks it at all ; + English official, 81% literacy; the figure is derived from literacy * lang pop + [missing] + Ethnologue: 350k in CAF + 1.6 million 2nd lang speakers + Corsican has been recognized as a language by the French government. Speakers also use French but many are not fluent in it. For languages not customarily written, the writing population is artificially set to 5% + English 1/5 of pop, used 1/5 of pop * literacy rate + Spanish official + Languedocien = Occitan 'Everyone speaks French as first or second language.' For languages not customarily written, the writing population is artificially set to 5% + 100k+ native, plus 1.5 mil 2nd lang speakers. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information. + For languages not customarily written, the writing population is artificially set to 5% in the absence of better information. + English official; the figure is derived from literacy * lang pop + French official; the figure is derived from literacy * lang pop + [missing] + [missing] + English official, the figure is derived from literacy * lang pop + French official; the figure is derived from literacy * lang pop + Some 99% of users are literate in French or German. For languages not customarily written, the writing population is artificially set to 5% in the absence of better information. + 2nd lang literacy 15-25% + Nearly all speakers are literate in a 2nd language. For languages not customarily written, the writing population is artificially set to 5% + Many minor langs; Portuguese official + In this and other sources, such as Ethnologue, there is no estimate for number of users. http://en.wikipedia.org/wiki/Filipino_language http://www.ethnologue.com/show_language.asp?code=fil + Most of the population uses Creole; see also http://www.country-studies.com/haiti/creole,-literacy,-and-education.html http://en.wikipedia.org/wiki/French_language#Haiti + 400k 2nd language speakers + Official language, 37-77% literacy + Official language, used in some schools. + http://www.censusindia.net/cendat/datatable26.html + 25% of pop + - Icelandic official + says: All Jordanians, regardless of ethnicity or religion, speak Arabic, the official language of Jordan + English official; Kiribati widespread + [missing] + German official + No figures found for use of French. Used literacy 29.5% times population to get the writing pop; French is the only official language. + French official; the figure is derived from literacy * lang pop + Used CIA literacy figure times population, added 'Vlaams' population + [missing] + 70,000 in 1991, 100,000 who understand it, but do not speak it ; ethnic pop 530,000 in 2002 + Melanesian pidgin in much of the country is lingua franca; English (official; but spoken by only 1%-2% of the population); 120 indigenous languages + English 20% + Lesotho English-using pop estimated at 5%, no figs available. Probably too low. + Russian 8% + Official language. Probably 2% of the population from East Timor worldwide can function in it + Ethnologue says 80k users of French. No other figures found yet, but this seems too low. + Russian 5.8%. + The figure is from Wikipedia article on English-speaking populations + Albanian 25.1% + English is an official language, not widely spoken + 42.6% of population + [missing] + 4mil 2nd lang speakers, 120k 1st lang, 20k monolinguals. English creole; 40-45% literacy. + A pidginizatino of Motu; 120k 2nd lang speakers, very few 1st lang. + English official on some islands, total 9.4% + http://astro.uchicago.edu/cara/vtour/mcmurdo/ http://www.usap.gov/videoclipsandmaps/mcmwebcam.cfm Winter population is listed. + 1.2mil 1st lang + 240k 2nd lang users, low literacy + [missing] + Canadian census shows 97,230 total population for all Cree languages + Uninhabited, barren, sub-Antarctic islands + [missing] + Figure for Hindi includes 2nd language users, India Census data. + [missing] + CIA Factbook entry on Kazakhstan + 50k Europeans, mostly French. The figure for writing population is derived from literacy * population, and may be too high. + The figure is from Wikipedia article on http://en.wikipedia.org/wiki/List_of_countries_by_English-speaking_population The figure is from Wikipedia article on English-speaking populations + [missing] + The figure is from Wikipedia article on English-speaking populations + Lang pop est, CIA factbook 15-20% country pop + CIA Factbook + [missing] + CIA Factbook. See also http://www.jsmp.minihub.org/Reports/jsmpreports/Language%20Report/LanguageReport(english).pdf + CIA Factbook. + The Tonga Chronicle is a government-owned newspaper... It publishes two editions, one in Tongan with a circulation of 5,000, and one in English with a circulation of 1,500; Writing pop figure shown for English is set to 30% of that for Tonga. + 96% bilingual in Turkish. + The Tuvaluan language is spoken by virtually everyone, while Gilbertese is spoken by some people on Nui. English is also an official language, but is not spoken in daily use. Writing pop set to 10% of Tuvalu. + English (official, primary language of commerce, administration, and higher education) + Ethnologue lists 1 million 2nd lang users of English; no other good figures found. + also: http://en.wikipedia.org/wiki/Bosnian_language + French is a minority official language. Crude estimate of usage based on import partner data. + Macao reported 5% native Portuguese speakers. + 5% writing pop estimated in absence of other data + [missing] + Crude estimate based on import partner data. + [missing] + Estimate 100% of Vatican residents can use Latin. + [missing] + [missing] + [missing] + (= Tai Lu, Xishuangbanna Dai; New Tai Lue script) + [missing] + [missing] + Estimates Indian ethnic 44% ; see also http://en.wikipedia.org/wiki/Non-resident_Indian_and_Person_of_Indian_Origin and http://www.vanuatu.usp.ac.fj/paclangunit/English_South_Pacific.htm + [missing] + [missing] + [missing] + [missing] + - Not widely used; set to 10%. + The lingua franca of 80% of the population + [missing] + Also called Mòoré + - More than 95% of Pakistanis can speak or understand Urdu as their second or third language + 15.42% of population + [missing] + [missing] + [missing] + [missing] + [missing] + [missing] + [missing] + CIA Factbook lists spoken language, the entry for Bokmål only on Svalbard and Jan Mayan is an assumption. + http://www.bfs.admin.ch/bfs/portal/de/index/infothek/lexikon/bienvenue___login/blank/zugang_lexikon.Document.62669.xls + No literacy figure available for English in Madagascar; newly adopted official language; 5% is an estimate. + - the script is an assumption, needs a reference + Latin script official, used 98.8% of pop * 10% for the usage figure + Latin script official, used 98.8% of pop * 90% for the usage figure + - five eastern provinces of the DRC are Swahili speaking. Nearly half the 66 million Congolese speak it. + [missing] + estimate 20% of Algerians can use French + [missing] + [missing] + - Most educated Kenyans are able to communicate fluently in Swahili, since it is a compulsory subject in school + [missing] + [missing] + - Education is in French; using literacy rate * pop for French-using population + English is the first language learned by half the children by the time they reach preschool age; using 92.6% of pop for the English figure + - using pop * literacy rate + - 90 percent of approximately 39 million Tanzanians speak Swahili + - Baganda generally don't speak Swahili, but it is in common use among the 25 million people elsewhere in the country, and is currently being implemented in schools nationwide (use 75% of Cpop for this figure) + Crude estimate based on import partner data. http://www.answers.com/topic/mauritania + also called Dogrib + [missing] + http://www.ofis-bzh.org/fr/langue_bretonne/chiffres_cles/index.php France blocks other languages in state schools; 1.4% attended Breton schools and 3% is estimated as family transmission rate + As with IE, we have to adjust the figures for real usage + The 2008 estimate is ~2000 speakers due to revival efforts + [missing] + The great majority of Equatorial Guineans speak Spanish, especially those living in the capital, Malabo. Spanish has been an official language since 1844. + Hans literacy is unknown; set to 5% artificially pending better or official figures. + http://www.statemaster.com/encyclopedia/Balinese-language widely used; taught in school as a main lang + widely used in its cultural areas, often in Latin script + http://www.indianetzone.com/7/haryanvi.htm little literature mostly folksongs; writers use std Hindi; claim of 55% literacy + 2nd lang literacy 25-50%, taught formally + 5% writing pop estimated in absence of other data; literacy rate reported at 12% + 5% writing pop estimated in absence of other data; literacy rate reported at ~8% + 5% mainly spoken; 5% writing pop estimated in absence of other data; most speakers also speak Italian + 5% writing pop estimated in absence of other data; Japanese is lingua franca here + [missing] + Data completely unknown for Hausa in Arabic in Nigeria + almost all speakers bilingual in English + Pop decline to ~1398 in 2009 + Low literacy, high linguistic diversity; English official (govt) but not widely spoken + [missing] + Spoken by 70% of population, assumed to use Arabic script in Pakistan + Reported to be (regional) official in Chuvashia, central Russia: taught at schools. However: http://cv.wikipedia.org/ Chuvash Wikipedia on-line. + http://www.mavicanet.com/directory/eng/2436.html + [missing] + 'A lingua franca and a first language for 10% of the population but understood by 95%' http://en.wikipedia.org/wiki/Krio_language + Dutch is spoken as a mother tongue by about 60% of the Surinamese, while most others speak it as a second or third language. + main language of trade and comm. in Isan region, except ... media where it gives way to Thai; now largely an unwritten language. 10% writing pop estimated in absence of other data + - primarily written using an Arabic-derived alphabet + US 2005 census + understood by 10 million, perhaps. Figure is questionable writing pop artificially set to 5% see also: http://en.wikipedia.org/wiki/Low_German (understood by 10 million people, and native to about 3 million people all around northern Germany) + [missing] + See the 2006 language survey data for 2nd langs = Shimaore + See the 2006 language survey data for 2nd langs + Common lingua franca, widely used. High literacy. + [missing] + 300 speakers out of 1100 pop; 1998 census shows 770 + [missing] + [missing] + 98.8% speak Spanish. Also, https://www.cia.gov/library/publications/the-world-factbook/geos/sp.html + [missing] + No indigenous inhabitants. http://en.wikipedia.org/wiki/Heard_Island_and_McDonald_Islands + No indigenous inhabitants. http://en.wikipedia.org/wiki/British_Indian_Ocean_Territory + Many also use Swahili + Latin is not shown as being used, rather Arabic + Used in schools up to University. + Also called Sakha. + No indigenous inhabitants. http://en.wikipedia.org/wiki/French_Southern_Territories + [missing] + Shows 50% literacy + Most also use Swahili with 50% literacy. Only 5% monolingual. + Most also use Swahili + [missing] + basically unihabited, officially ; http://www.census.gov/prod/cen2000/phc3-us-pt1.pdf + http://lanic.utexas.edu/project/tilan/reports/rtf359/bolivia1.html Spanish is the official language, only about 60-70% of the population speaks it at all ; + Spanish ""universal"", set to 98% + https://www.cia.gov/library/publications/the-world-factbook/geos/cs.html + [missing] + [missing] + Sirmauri (srx) Mahasui = Himachali, Pahari, Sirmouri, Sirmuri + - 14k reported as native. Taught as elective subject in grades 5-8; not widely spoken as primary communication. + [missing] + More than 80 % of the total Thai population speaks the native Thai language. + [missing] + native speaker pop is low, ~6200; but is most widely spoken 2nd language + [missing] + [missing] + (94% of studends in Russia receive primarily Russian-language ed) + Europeans and their languages survey, page 7 + http://ec.europa.eu/public_opinion/archives/ebs/ebs_243_en.pdf Europeans and their languages survey, page 7 + [missing] + 1st lang literacy 8% + http://www.bevoelkerungsschutz-portal.de/SharedDocs/Downloads/DE/Broschueren/2008/Regional_und_Minderheitensprachen.pdf + percentage calculated from http://www.spanishcourses.info/Mains/SpanishSpoken_EN.htm , see also http://www.spanishseo.org/resources/worldwide-spanish-speaking-population + [missing] + www.amar.org.ir + - regional lang community status, taught in some schools + - 52.9% of Tatarstan is ethnic Tatar, the pop figure is an upper bound + http://en.wikipedia.org/wiki/Interlingua#Community Has a regular conf in Sweden, also Brazil; an auxiliary language with tiny population worldwide + http://en.wikipedia.org/wiki/Akademio_Internacia_de_la_Sciencoj_San_Marino - estimate 100% of the academy can use Esperanto; the language is used as 1st language of instruction; academy has 300 ""members"". + [missing] + (could be higher if 2nd lang included; no data yet) + Modern use of Arabic (Jawi) seems to be minimal, but is co-official with ms_Latn; set to 5% for now. + This is base pop for ""fub"" lang code; ff shows as a macrolanguage + [missing] + pop 7k. Figure is questionable writing pop artificially set to 5% see also http://en.wikipedia.org/wiki/Lower_Sorbian + Tigrinya ethnic pop is about 60% + [missing] + English official in education, 36.1% 2000 census + no other info available for now + https://www.cia.gov/cia/publications/factbook/geos/gt.html Spanish official + language also called Kamta in India + (""syr"" is a macrolang containing ""cld"" and ""aii"") + [missing] + [missing] + [missing] + census data + - source for GDP + - source for GDP Level of English usage unclear, but official for govt and education + - estimate 90%of literate pop can use Arabic; Lpop = 99% + http://en.wikipedia.org/wiki/South_Sudan + [missing] + low literacy and >120 langs in country + (used lower figure) + 25-50% literacy + literacy 15-25% + 30% literacy + 2nd lang literacy 30% + 2nd lang literacy 25-50% + [missing] + protected minority, southern Jutland + etimate only based on literacy; no population data currently available + [missing] + Widely used 2nd language, around 9.1 million spkrs (13%), 67% literacy, potential writing pop ~9% + co-official in South Tyrol + Aosta Valley + in Trieste and Gorizia + [missing] + Information on the Latin/Cyrillic script percentages for Montenegro not currently found. + most of population use Afrikaans commonly, about 89% literacy + , Podlaskie Voivodeship + official in Vojvodina only + official in Vojvodina only; no pop data yet found + regional in Dagestan, population estimate + [missing] + https://www.cia.gov/library/publications/the-world-factbook/geos/uz.html Latin/Cyrillic balance is estimated, based on literacy; younger education now in Latin + Information on the Latin/Cyrillic script percentages for Kosovo not currently found. + Estimate based on 90% of literate pop > 15 years (71% of Cpop) can use English, for lack of official number of users + low litreracy ~5% + 2nd lang literacy 30% + ​http://www.interlingua.com/statutos leading Interlingua assoc ""Union Mundial pro Interlingua"" registered French non-profit - real user pop figure is unknown but low + recognized in West Java + Mainly unwritten + Vai script is the main script for this language. + Latin listed as being used (Scriptsource) but no pop figures available. + and https://en.wikipedia.org/wiki/Macau + but no literacy data + Including 1st and 2nd lang speakers + [missing] + regional-official in part of Opole Voivodeship; in Poland 325 schools with primary instr in German, estimate 37000 students. Real figure probably higher. + Census figures cited there seem to put Armenian using pop between 50-75%. Using 50%. + [missing] + unknown literacy + only 10% monolingual + near zero literacy; pop ~80000 (2009) see David Lawrence, Tanzania and its People, page 121, Google books + (baseline) + [missing] + + diff --git a/library/Zend/Locale/Data/supplementalMetadata.xml b/library/Zend/Locale/Data/supplementalMetadata.xml new file mode 100755 index 000000000..626282815 --- /dev/null +++ b/library/Zend/Locale/Data/supplementalMetadata.xml @@ -0,0 +1,1889 @@ + + + + + + + + + +_q type id choice key registry source target path day date version count lines characters before from to iso4217 mzone number time casing list uri digits rounding iso3166 hex request direction alternate backwards caseFirst caseLevel hiraganaQuarternary hiraganaQuaternary maxVariable variableTop normalization numeric strength elements element attributes attribute attributeValue contains multizone order other replacement scripts services territories territory aliases tzidVersion value values variant variants visibility alpha3 code end exclude fips10 gdp internet literacyPercent locales population writingPercent populationPercent officialStatus start used otherVersion typeVersion access after allowsParsing at bcp47 decexp desired indexSource numberSystem numbers oneway ordering percent priority radix rules supported tender territoryId yeartype cldrVersion grouping inLanguage inScript inTerritory match parent private reason reorder status cashDigits cashRounding allowed override preferred regions paths votes validSubLocales standard references alt draft + + +ldml alternate approvalRequirement approvalRequirements attributeOrder attributes blockingItems calendarPreference calendarSystem casingData casingItem character character-fallback characterOrder codesByTerritory comment context coverageVariable coverageLevel cp dayPeriodRule dayPeriodRules deprecatedItems distinguishingItems elementOrder exception first_variable fractions hours identity indexSeparator compressedIndexSeparator indexRangePattern indexLabelBefore indexLabelAfter indexLabel info keyMap languageAlias languageCodes languageCoverage languageMatch languageMatches languagePopulation last_variable first_tertiary_ignorable last_tertiary_ignorable first_secondary_ignorable last_secondary_ignorable first_primary_ignorable last_primary_ignorable first_non_ignorable last_non_ignorable first_trailing last_trailing likelySubtag lineOrder mapKeys mapTypes mapZone numberingSystem parentLocale personList pluralRule pluralRules postCodeRegex primaryZone reference region scriptAlias scriptCoverage serialElements stopwordList substitute suppress tRule telephoneCountryCode territoryAlias territoryCodes territoryCoverage currencyCoverage timezone timezoneCoverage transform typeMap usesMetazone validity alias appendItem base beforeCurrency afterCurrency codePattern compoundUnit compoundUnitPattern contextTransform contextTransformUsage currencyMatch cyclicName cyclicNameContext cyclicNameSet cyclicNameWidth dateFormatItem day dayPeriod dayPeriodContext dayPeriodWidth defaultCollation defaultNumberingSystem deprecated distinguishing blocking coverageAdditions durationUnitPattern era eraNames eraAbbr eraNarrow exemplarCharacters ellipsis fallback field generic greatestDifference height hourFormat hoursFormat gmtFormat gmtZeroFormat intervalFormatFallback intervalFormatItem key listPattern listPatternPart localeDisplayNames layout contextTransforms localeDisplayPattern languages localePattern localeSeparator localeKeyTypePattern localizedPatternChars dateRangePattern calendars long measurementSystem measurementSystemName messages minDays firstDay month monthPattern monthPatternContext monthPatternWidth months monthNames monthAbbr monthPatterns days dayNames dayAbbr moreInformation native orientation inList inText otherNumberingSystems paperSize quarter quarters quotationStart quotationEnd alternateQuotationStart alternateQuotationEnd rbnfrule regionFormat fallbackFormat fallbackRegionFormat abbreviationFallback preferenceOrdering relativeTimePattern reset import p pc rule ruleset rulesetGrouping s sc scripts segmentation settings short commonlyUsed exemplarCity singleCountries default calendar collation currency currencyFormat currencySpacing currencyFormatLength dateFormat dateFormatLength dateTimeFormat dateTimeFormatLength availableFormats appendItems dayContext dayWidth decimalFormat decimalFormatLength intervalFormats monthContext monthWidth pattern displayName percentFormat percentFormatLength quarterContext quarterWidth relative relativeTime scientificFormat scientificFormatLength skipDefaultLocale defaultContent standard daylight stopwords indexLabels mapping suppress_contractions optimize cr rules surroundingMatch insertBetween symbol decimal group list percentSign nativeZeroDigit patternDigit plusSign minusSign exponential superscriptingExponent perMille infinity nan currencyDecimal currencyGroup symbols decimalFormats scientificFormats percentFormats currencyFormats currencies miscPatterns t tc q qc i ic extend territories timeFormat timeFormatLength traditional finance transformName type unit unitLength durationUnit unitPattern variable attributeValues variables segmentRules exceptions variantAlias variants keys types transformNames measurementSystemNames codePatterns version generation cldrVersion currencyData language script territory territoryContainment languageData territoryInfo postalCodeData calendarData calendarPreferenceData variant week am pm dayPeriods eras cyclicNameSets dateFormats timeFormats dateTimeFormats fields timeZoneNames weekData timeData measurementData timezoneData characters delimiters measurement dates numbers transforms units listPatterns collations posix segmentations rbnf metadata codeMappings parentLocales likelySubtags metazoneInfo mapTimezones plurals telephoneCodeData numberingSystems bcp47KeywordMappings gender references languageMatching dayPeriodRuleSet metaZones primaryZones weekendStart weekendEnd width windowsZones coverageLevels x yesstr nostr yesexpr noexpr zone metazone special zoneAlias zoneFormatting zoneItem supplementalData + + + + attributeValues attributes base comment context exception extend i ic languageMatch last_non_ignorable last_secondary_ignorable last_tertiary_ignorable optimize p pc pluralRule rbnfrule reset rules ruleset s sc settings substitute suppress_contractions t tRule tc variable x + + + + + + + + + + + + + + + + + + + + + + + + aa ab ace ach ada ady ae af afh agq ain ak akk ale alt am an ang anp ar + arc arn arp arw as asa ast av awa ay az + ba bal ban bas bax bbj bfd be bej bem bez bg bho bi bik bin bkm bla bm bn + bo br bra brx bs bss bua bug bum byn byv + ca cad car cay cch ce ceb cgg ch chb chg chk chm chn cho chp chr chy ckb + co cop cr crh cs csb cu cv cy + da dak dar dav de del den dgr din dje doi dsb dua dum dv dyo dyu dz dzg + ebu ee efi egy eka el elx en enm eo es et eu ewo + fa fan fat ff fi fil fj fo fon fr frm fro frr frs fur fy + ga gaa gay gba gd gez gil gl gmh gn goh gon gor got grb grc gsw gu guz gv gwi + ha hai haw he hi hil hit hmn ho hr hsb ht hu hup hy hz + ia iba ibb id ie ig ii ik ilo inh io is it iu + ja jbo jgo jmc jpr jrb jv + ka kaa kab kac kaj kam kaw kbd kbl kcg kde kea kfo kg kha kho khq ki kj kk kkj + kl kln km kmb kn ko kok kos kpe kr krc krl kru ks ksb ksf ksh ku kum kut kv kw ky + la lad lag lah lam lb lez lg li lkt ln lo lol loz lt lu lua lui lun luo lus luy lv + mad maf mag mai mak man mas mde mdf mdr men mer mfe mg mga mgh mgo mh mi mic min mk + ml mn mnc mni moh mos mr ms mt mua mul mus mwl mwr my mye myv + na nap naq nb nd nds ne new ng nia niu nl nmg nn nnh no nog non nqo nr nso + nus nv nwc ny nym nyn nyo nzi + oc oj om or os osa ota + pa pag pal pam pap pau peo phn pi pl pon pro ps pt + qu + raj rap rar rm rn ro rof rom root ru rup rw rwk + sa sad sah sam saq sas sat sba sbp sc scn sco sd se see seh sel ses sg sga + sh shi shn shu si sid sk sl sm sma smj smn sms sn snk so sog sq + sr srn srr ss ssy st su suk sus sux sv sw swb swc syc syr + ta te tem teo ter tet tg th ti tig tiv tk tkl tl tlh tli tmh tn to tog tpi + tr trv ts tsi tt tum tvl tw twq ty tyv tzm + udm ug uga uk umb und ur uz + vai ve vi vo vot vun + wa wae wal war was wo + xal xh xog + yao yap yav ybb yi yo yue + za zap zbl zen zgh zh zu zun zxx zza + + + + art-lojban + cel-gaulish + en-GB-oed + i-ami i-bnn i-default i-enochian i-hak i-klingon i-lux i-mingo i-navajo i-pwn + i-tao i-tay i-tsu + no-bok no-nyn + sgn-BE-FR sgn-BE-NL sgn-CH-DE + zh-guoyu zh-hakka zh-min zh-min-nan zh-xiang + + + 001 002 003 005 009 011 013 014 015 017 018 019 021 029 030 034 035 039 053 054 + 057 061 + 142 143 145 150 151 154 155 + 419 + AC AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ + BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ + CA CC CD CF CG CH CI CK CL CM CN CO CP CR CU CV CW CX CY CZ + DE DG DJ DK DM DO DZ + EA EC EE EG EH ER ES ET EU + FI FJ FK FM FO FR + GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY + HK HM HN HR HT HU + IC ID IE IL IM IN IO IQ IR IS IT + JE JM JO JP + KE KG KH KI KM KN KP KR KW KY KZ + LA LB LC LI LK LR LS LT LU LV LY + MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ + NA NC NE NF NG NI NL NO NP NR NU NZ + OM + PA PE PF PG PH PK PL PM PN PR PS PT PW PY + QA QO + RE RO RS RU RW + SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ + TA TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ + UA UG UM US UY UZ + VA VC VE VG VI VN VU + WF WS + XK + YE YT + ZA ZM ZW ZZ + + + Afak Aghb Arab Armi Armn Avst + Bali Bamu Bass Batk Beng Blis Bopo Brah Brai Bugi Buhd + Cakm Cans Cari Cham Cher Cirt Copt Cprt Cyrl Cyrs + Deva Dsrt Dupl + Egyd Egyh Egyp Elba Ethi + Geok Geor Glag Goth Gran Grek Gujr Guru + Hang Hani Hano Hans Hant Hebr Hira Hluw Hmng Hrkt Hung + Inds Ital + Java Jpan Jurc + Kali Kana Khar Khmr Khoj Knda Kore Kpel Kthi + Lana Laoo Latf Latg Latn Lepc Limb Lina Linb Lisu Loma Lyci Lydi + Mahj Mand Mani Maya Mend Merc Mero Mlym Mong Moon Mroo Mtei Mymr + Narb Nbat Nkgb Nkoo Nshu + Ogam Olck Orkh Orya Osma + Palm Perm Phag Phli Phlp Phlv Phnx Plrd Prti + Qaaa Qaab Qaac Qaad Qaae Qaaf Qaag Qaah Qaaj Qaak Qaal Qaam Qaan Qaao Qaap Qaaq + Qaar Qaas Qaat Qaau Qaav Qaaw Qaax Qaay Qaaz Qaba Qabb Qabc Qabd Qabe Qabf Qabg + Qabh Qabi Qabj Qabk Qabl Qabm Qabn Qabo Qabp Qabq Qabr Qabs Qabt Qabu Qabv Qabw + Qabx + Rjng Roro Runr + Samr Sara Sarb Saur Sgnw Shaw Shrd Sind Sinh Sora Sund Sylo Syrc Syre Syrj Syrn + Tagb Takr Tale Talu Taml Tang Tavt Telu Teng Tfng Tglg Thaa Thai Tibt Tirh + Ugar + Vaii Visp + Wara Wole + Xpeo Xsux + Yiii + Zinh Zmth Zsym Zxxx Zyyy Zzzz + + + 1606NICT 1694ACAD 1901 1959ACAD 1994 1996 + ALALC97 ALUKU AREVELA AREVMDA + BAKU1926 BALANKA BARLA BAUDDHA BISCAYAN BISKE BOHORIC BOONT + DAJNKO + EKAVSK EMODENG + FONIPA FONUPA FONXSAMP + HEPBURN HOGNORSK + IJEKAVSK ITIHASA + JAUER JYUTPING + KKCOR KSCOR + LAUKIKA LIPAW LUNA1918 + METELKO MONOTON + NDYUKA NEDIS NJIVA NULIK + OSOJS + PAMAKA PETR1708 PINYIN POLYTON POSIX PUTER + REVISED RIGIK ROZAJ RUMGR + SAAHO SCOTLAND SCOUSE SOLBA SOTAV SURMIRAN SURSILV SUTSILV + TARASK + UCCOR UCRCOR ULSTER UNIFON + VAIDIKA VALENCIA VALLADER + WADEGILE + + + buddhist + chinese coptic + dangi + ethioaa ethiopic ethiopic-amete-alem + gregorian gregory + hebrew + indian islamic islamic-civil islamic-rgsa islamic-tbla islamic-umalqura + islamicc iso8601 + japanese + persian + roc + + + big5han + dict dictionary direct ducet + eor + gb2312 gb2312han + phonebk phonebook phonetic pinyin + reformed + search searchjl standard stroke + trad traditional + unihan + zhuyin + + + adp aed afa afn alk all amd ang aoa aok aon aor ara arl arm arp ars ats aud awg + azm azn + bad bam ban bbd bdt bec bef bel bgl bgm bgn bgo bhd bif bmd bnd bob bol bop bov + brb brc bre brl brn brr brz bsd btn buk bwp byb byr bzd + cad cdf che chf chw cle clf clp cnx cny cop cou crc csd csk cuc cup cve cyp czk + ddm dem djf dkk dop dzd + ecs ecv eek egp ern esa esb esp etb eur + fim fjd fkp frf + gbp gek gel ghc ghs gip gmd gnf gns gqe grd gtq gwe gwp gyd + hkd hnl hrd hrk htg huf + idr iep ilp ilr ils inr iqd irr isj isk itl + jmd jod jpy + kes kgs khr kmf kpw krh kro krw kwd kyd kzt + lak lbp lkr lrd lsl ltl ltt luc luf lul lvl lvr lyd + mad maf mcf mdc mdl mga mgf mkd mkn mlf mmk mnt mop mro mtl mtp mur mvp mvr mwk + mxn mxp mxv myr mze mzm mzn + nad ngn nic nio nlg nok npr nzd + omr + pab pei pen pes pgk php pkr pln plz pte pyg + qar + rhd rol ron rsd rub rur rwf + sar sbd scr sdd sdg sdp sek sgd shp sit skk sll sos srd srg ssp std sur svc syp + szl + thb tjr tjs tmm tmt tnd top tpe trl try ttd twd tzs + uah uak ugs ugx usd usn uss uyi uyp uyu uzs + veb vef vnd vnn vuv + wst + xaf xag xau xba xbb xbc xbd xcd xdr xeu xfo xfu xof xpd xpf xpt xre xsu xts xua + xxx + ydd yer yud yum yun yur + zal zar zmk zmw zrn zrz zwd zwl zwr + + + handwrit + pinyin + und + wubi + + + 101key 102key + 600dpi + 768dpi + android azerty + chromeos colemak + dvorak dvorakl dvorakr + el220 el319 extended + googlevk + isiri + legacy lt1205 lt1582 + nutaaq + osx + patta + qwerty qwertz + ta99 + und + var viqr + windows + + + noignore non-ignorable + shifted + + + false + no + true + yes + + + false + no + true + yes + + + false + lower + no + upper + + + false + no + true + yes + + + false + no + true + yes + + + false + no + true + yes + + + REORDER_CODE + + + identic identical + level1 level2 level3 level4 + primary + quarternary quaternary + secondary + tertiary + + + currency + punct + space symbol + + + alaloc + bgn buckwalt + din + gost + iso + mcst + satts + ungegn + + + arab arabext armn armnlow + bali beng brah + cakm cham + deva + ethi + finance fullwide + geor grek greklow gujr guru + hanidays hanidec hans hansfin hant hantfin hebr + java jpan jpanfin + kali khmr knda + lana lanatham laoo latn lepc limb + mlym mong mtei mymr mymrshan + native nkoo + olck orya osma + roman romanlow + saur shrd sora sund + takr talu taml tamldec telu thai tibt traditio traditional + vaii + + + und + + + adalv aedxb afkbl Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers + Africa/Asmara Africa/Asmera Africa/Bamako Africa/Bangui Africa/Banjul + Africa/Bissau Africa/Blantyre Africa/Brazzaville Africa/Bujumbura Africa/Cairo + Africa/Casablanca Africa/Ceuta Africa/Conakry Africa/Dakar Africa/Dar_es_Salaam + Africa/Djibouti Africa/Douala Africa/El_Aaiun Africa/Freetown Africa/Gaborone + Africa/Harare Africa/Johannesburg Africa/Juba Africa/Kampala Africa/Khartoum + Africa/Kigali Africa/Kinshasa Africa/Lagos Africa/Libreville Africa/Lome + Africa/Luanda Africa/Lubumbashi Africa/Lusaka Africa/Malabo Africa/Maputo + Africa/Maseru Africa/Mbabane Africa/Mogadishu Africa/Monrovia Africa/Nairobi + Africa/Ndjamena Africa/Niamey Africa/Nouakchott Africa/Ouagadougou + Africa/Porto-Novo Africa/Sao_Tome Africa/Timbuktu Africa/Tripoli Africa/Tunis + Africa/Windhoek aganu aiaxa altia America/Adak America/Anchorage + America/Anguilla America/Antigua America/Araguaina + America/Argentina/Buenos_Aires America/Argentina/Catamarca + America/Argentina/ComodRivadavia America/Argentina/Cordoba + America/Argentina/Jujuy America/Argentina/La_Rioja America/Argentina/Mendoza + America/Argentina/Rio_Gallegos America/Argentina/Salta + America/Argentina/San_Juan America/Argentina/San_Luis America/Argentina/Tucuman + America/Argentina/Ushuaia America/Aruba America/Asuncion America/Atikokan + America/Atka America/Bahia America/Bahia_Banderas America/Barbados + America/Belem America/Belize America/Blanc-Sablon America/Boa_Vista + America/Bogota America/Boise America/Buenos_Aires America/Cambridge_Bay + America/Campo_Grande America/Cancun America/Caracas America/Catamarca + America/Cayenne America/Cayman America/Chicago America/Chihuahua + America/Coral_Harbour America/Cordoba America/Costa_Rica America/Creston + America/Cuiaba America/Curacao America/Danmarkshavn America/Dawson + America/Dawson_Creek America/Denver America/Detroit America/Dominica + America/Edmonton America/Eirunepe America/El_Salvador America/Ensenada + America/Fort_Wayne America/Fortaleza America/Glace_Bay America/Godthab + America/Goose_Bay America/Grand_Turk America/Grenada America/Guadeloupe + America/Guatemala America/Guayaquil America/Guyana America/Halifax + America/Havana America/Hermosillo America/Indiana/Indianapolis + America/Indiana/Knox America/Indiana/Marengo America/Indiana/Petersburg + America/Indiana/Tell_City America/Indiana/Vevay America/Indiana/Vincennes + America/Indiana/Winamac America/Indianapolis America/Inuvik America/Iqaluit + America/Jamaica America/Jujuy America/Juneau America/Kentucky/Louisville + America/Kentucky/Monticello America/Knox_IN America/Kralendijk America/La_Paz + America/Lima America/Los_Angeles America/Louisville America/Lower_Princes + America/Maceio America/Managua America/Manaus America/Marigot + America/Martinique America/Matamoros America/Mazatlan America/Mendoza + America/Menominee America/Merida America/Metlakatla America/Mexico_City + America/Miquelon America/Moncton America/Monterrey America/Montevideo + America/Montserrat America/Nassau America/New_York + America/Nipigon America/Nome America/Noronha America/North_Dakota/Beulah + America/North_Dakota/Center America/North_Dakota/New_Salem America/Ojinaga + America/Panama America/Pangnirtung America/Paramaribo America/Phoenix + America/Port_of_Spain America/Port-au-Prince America/Porto_Acre + America/Porto_Velho America/Puerto_Rico America/Rainy_River + America/Rankin_Inlet America/Recife America/Regina America/Resolute + America/Rio_Branco America/Rosario America/Santa_Isabel America/Santarem + America/Santiago America/Santo_Domingo America/Sao_Paulo America/Scoresbysund + America/Sitka America/St_Barthelemy America/St_Johns + America/St_Kitts America/St_Lucia America/St_Thomas America/St_Vincent + America/Swift_Current America/Tegucigalpa America/Thule America/Thunder_Bay + America/Tijuana America/Toronto America/Tortola America/Vancouver + America/Virgin America/Whitehorse America/Winnipeg America/Yakutat + America/Yellowknife amevn ancur Antarctica/Casey Antarctica/Davis + Antarctica/DumontDUrville Antarctica/Macquarie Antarctica/Mawson + Antarctica/McMurdo Antarctica/Palmer Antarctica/Rothera + Antarctica/Syowa Antarctica/Vostok aolad aqams aqcas aqdav aqddu aqmaw aqmcm + aqplm aqrot aqsyw aqvos arbue arcor arctc Arctic/Longyearbyen arirj arjuj arluq + armdz arrgl arsla artuc aruaq arush Asia/Aden Asia/Almaty Asia/Amman + Asia/Anadyr Asia/Aqtau Asia/Aqtobe Asia/Ashgabat Asia/Ashkhabad Asia/Baghdad + Asia/Bahrain Asia/Baku Asia/Bangkok Asia/Beirut Asia/Bishkek Asia/Brunei + Asia/Calcutta Asia/Choibalsan Asia/Chongqing Asia/Chungking Asia/Colombo + Asia/Dacca Asia/Damascus Asia/Dhaka Asia/Dili Asia/Dubai Asia/Dushanbe + Asia/Gaza Asia/Harbin Asia/Hebron Asia/Ho_Chi_Minh Asia/Hong_Kong Asia/Hovd + Asia/Irkutsk Asia/Istanbul Asia/Jakarta Asia/Jayapura Asia/Jerusalem Asia/Kabul + Asia/Kamchatka Asia/Karachi Asia/Kashgar Asia/Kathmandu Asia/Katmandu + Asia/Khandyga Asia/Kolkata Asia/Krasnoyarsk Asia/Kuala_Lumpur Asia/Kuching + Asia/Kuwait Asia/Macao Asia/Macau Asia/Magadan Asia/Makassar Asia/Manila + Asia/Muscat Asia/Nicosia Asia/Novokuznetsk Asia/Novosibirsk Asia/Omsk Asia/Oral + Asia/Phnom_Penh Asia/Pontianak Asia/Pyongyang Asia/Qatar Asia/Qyzylorda + Asia/Rangoon Asia/Riyadh Asia/Saigon Asia/Sakhalin Asia/Samarkand Asia/Seoul + Asia/Shanghai Asia/Singapore Asia/Taipei Asia/Tashkent Asia/Tbilisi Asia/Tehran + Asia/Tel_Aviv Asia/Thimbu Asia/Thimphu Asia/Tokyo Asia/Ujung_Pandang + Asia/Ulaanbaatar Asia/Ulan_Bator Asia/Urumqi Asia/Ust-Nera Asia/Vientiane + Asia/Vladivostok Asia/Yakutsk Asia/Yekaterinburg Asia/Yerevan asppg + Atlantic/Azores Atlantic/Bermuda Atlantic/Canary Atlantic/Cape_Verde + Atlantic/Faeroe Atlantic/Faroe Atlantic/Jan_Mayen Atlantic/Madeira + Atlantic/Reykjavik Atlantic/South_Georgia Atlantic/St_Helena Atlantic/Stanley + atvie auadl aubhq aubne audrw aueuc auhba aukns auldc auldh aumel aumqi auper + Australia/ACT Australia/Adelaide Australia/Brisbane Australia/Broken_Hill + Australia/Canberra Australia/Currie Australia/Darwin Australia/Eucla + Australia/Hobart Australia/LHI Australia/Lindeman Australia/Lord_Howe + Australia/Melbourne Australia/North Australia/NSW Australia/Perth + Australia/Queensland Australia/South Australia/Sydney Australia/Tasmania + Australia/Victoria Australia/West Australia/Yancowinna ausyd awaua azbak + basjj bbbgi bddac bebru bfoua bgsof bhbah bibjm bjptn bmbda bnbwn bolpb bqkra + braux Brazil/Acre Brazil/DeNoronha Brazil/East Brazil/West brbel brbvb brcgb + brcgr brern brfen brfor brmao brmcz brpvh brrbr brrec brsao brssa brstm bsnas + btthi bwgbe bymsq bzbze + cacfq caedm caffs caglb cagoo cahal caiql camon camtr Canada/Atlantic + Canada/Central Canada/East-Saskatchewan Canada/Eastern Canada/Mountain + Canada/Newfoundland Canada/Pacific Canada/Saskatchewan Canada/Yukon canpg capnt + careb careg casjf cathu cator cavan cawnp caybx caycb cayda caydq cayek cayev + cayxy cayyn cayzf cayzs cccck cdfbm cdfih cfbgf cgbzv Chile/Continental + Chile/EasterIsland chzrh ciabj ckrar clipc clscl cmdla cnckg cnhrb cnkhg cnsha + cnurc cobog crsjo CST6CDT Cuba cuhav cvrai cxxch cynic czprg + deber debsngn djjib dkcph dmdom dosdq dzalg + ecgps ecgye eetll egcai Egypt eheai Eire erasm esceu eslpa esmad EST EST5EDT + etadd Etc/GMT Etc/GMT-0 Etc/GMT-1 Etc/GMT-10 Etc/GMT-11 Etc/GMT-12 Etc/GMT-13 + Etc/GMT-14 Etc/GMT-2 Etc/GMT-3 Etc/GMT-4 Etc/GMT-5 Etc/GMT-6 Etc/GMT-7 + Etc/GMT-8 Etc/GMT-9 Etc/GMT+0 Etc/GMT+1 Etc/GMT+10 Etc/GMT+11 Etc/GMT+12 + Etc/GMT+2 Etc/GMT+3 Etc/GMT+4 Etc/GMT+5 Etc/GMT+6 Etc/GMT+7 Etc/GMT+8 Etc/GMT+9 + Etc/GMT0 Etc/Greenwich Etc/UCT Etc/Universal Etc/Unknown Etc/UTC Etc/Zulu + Europe/Amsterdam Europe/Andorra Europe/Athens Europe/Belfast Europe/Belgrade + Europe/Berlin Europe/Bratislava Europe/Brussels Europe/Bucharest + Europe/Budapest Europe/Busingen Europe/Chisinau Europe/Copenhagen Europe/Dublin + Europe/Gibraltar Europe/Guernsey Europe/Helsinki Europe/Isle_of_Man + Europe/Istanbul Europe/Jersey Europe/Kaliningrad Europe/Kiev Europe/Lisbon + Europe/Ljubljana Europe/London Europe/Luxembourg Europe/Madrid Europe/Malta + Europe/Mariehamn Europe/Minsk Europe/Monaco Europe/Moscow Europe/Nicosia + Europe/Oslo Europe/Paris Europe/Podgorica Europe/Prague Europe/Riga Europe/Rome + Europe/Samara Europe/San_Marino Europe/Sarajevo Europe/Simferopol Europe/Skopje + Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Tirane Europe/Tiraspol + Europe/Uzhgorod Europe/Vaduz Europe/Vatican Europe/Vienna Europe/Vilnius + Europe/Volgograd Europe/Warsaw Europe/Zagreb Europe/Zaporozhye Europe/Zurich + fihel fimhq fjsuv fkpsy fmksa fmpni fmtkk fotho frpar + galbv gaza GB GB-Eire gblon gdgnd getbs gfcay gggci ghacc gigib gldkshvn glgoh + globy glthu gmbjl GMT GMT-0 GMT+0 GMT0 gncky gpbbr gpmsb gpsbh gqssg grath + Greenwich gsgrv gtgua gugum gwoxb gygeo + hebron hkhkg hntgu Hongkong hrzag HST htpap hubud + Iceland iddjj idjkt idmak idpnk iedub imdgs inccu Indian/Antananarivo + Indian/Chagos Indian/Christmas Indian/Cocos Indian/Comoro Indian/Kerguelen + Indian/Mahe Indian/Maldives Indian/Mauritius Indian/Mayotte Indian/Reunion + iodga iqbgw Iran irthr Israel isrey itrom + Jamaica Japan jeruslm jesth jmkin joamm jptyo + kenbo kgfru khpnh kicxi kipho kitrw kmyva knbas kpfnj krsel Kwajalein kwkwi + kygec kzaau kzakx kzala kzkzo kzura + lavte lbbey lccas Libya livdz lkcmb lrmlw lsmsu ltvno lulux lvrix lytip + macas mcmon mdkiv metgd Mexico/BajaNorte Mexico/BajaSur Mexico/General mgtnr + mhkwa mhmaj mkskp mlbko mmrgn mncoq mnhvd mnuln momfm mpspn mqfdf mrnkc msmni + MST MST7MDT mtmla muplu mvmle mwblz mxchi mxcun mxhmo mxmam mxmex mxmid mxmty + mxmzt mxoji mxpvr mxstis mxtij mykch mykul mzmpm + Navajo nawdh ncnou nenim nfnlk nglos nimga nlams noosl npktm nrinu nuiue NZ + NZ-CHAT nzakl nzcht + ommct + Pacific/Apia Pacific/Auckland Pacific/Chatham Pacific/Chuuk Pacific/Easter + Pacific/Efate Pacific/Enderbury Pacific/Fakaofo Pacific/Fiji Pacific/Funafuti + Pacific/Galapagos Pacific/Gambier Pacific/Guadalcanal Pacific/Guam + Pacific/Honolulu Pacific/Johnston Pacific/Kiritimati Pacific/Kosrae + Pacific/Kwajalein Pacific/Majuro Pacific/Marquesas Pacific/Midway Pacific/Nauru + Pacific/Niue Pacific/Norfolk Pacific/Noumea Pacific/Pago_Pago Pacific/Palau + Pacific/Pitcairn Pacific/Pohnpei Pacific/Ponape Pacific/Port_Moresby + Pacific/Rarotonga Pacific/Saipan Pacific/Samoa Pacific/Tahiti Pacific/Tarawa + Pacific/Tongatapu Pacific/Truk Pacific/Wake Pacific/Wallis Pacific/Yap papty + pelim pfgmr pfnhv pfppt pgpom phmnl pkkhi plwaw pmmqc pnpcn Poland Portugal PRC + prsju PST8PDT ptfnc ptlis ptpdl pwror pyasu + qadoh + rereu robuh ROC ROK rsbeg rudyr rugdx ruikt rukgd rukhndg rukra rukuf rumow + runoz ruoms ruovb rupkc ruunera ruuus ruvog ruvvo ruyek ruyks rwkgl + saruh sbhir scmaw sdkrt sesto sgsin shshn silju Singapore sjlyr skbts slfna + smsai sndkr somgq srpbm ssjub sttms svsal sxphi sydam szqmn + tcgdt tdndj tfpfr tglfw thbkk tjdyu tkfko tldil tmasb tntun totbu trist ttpos + Turkey tvfun twtpe tzdar + uaiev uaozh uasip uauzh UCT ugkla umawk umjon ummdy Universal unk US/Alaska + US/Aleutian US/Arizona US/Central US/East-Indiana US/Eastern US/Hawaii + US/Indiana-Starke US/Michigan US/Mountain US/Pacific US/Pacific-New US/Samoa + usadk usaeg usanc usboi uschi usden usdet ushnl usind usinvev usjnu usknx uslax + uslui usmnm usmoc usmtm usnavajo usndcnt usndnsl usnyc usoea usome usphx ussit + ustel uswlz uswsq usxul usyak UTC utce01 utce02 utce03 utce04 utce05 utce06 + utce07 utce08 utce09 utce10 utce11 utce12 utce13 utce14 utcw01 utcw02 utcw03 + utcw04 utcw05 utcw06 utcw07 utcw08 utcw09 utcw10 utcw11 utcw12 uymvd uzskd + uztas + vavat vcsvd veccs vgtov vistt vnsgn vuvli + W-SU wfmau wsapw + yeade ytmam + zajnb zmlun Zulu zwhre + + + posix + + + CODEPOINTS + + + + Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmera + Africa/Bamako Africa/Bangui Africa/Banjul Africa/Bissau Africa/Blantyre + Africa/Brazzaville Africa/Bujumbura + Africa/Cairo Africa/Casablanca Africa/Ceuta Africa/Conakry + Africa/Dakar Africa/Dar_es_Salaam Africa/Djibouti Africa/Douala + Africa/El_Aaiun + Africa/Freetown + Africa/Gaborone + Africa/Harare + Africa/Johannesburg Africa/Juba + Africa/Kampala Africa/Khartoum Africa/Kigali Africa/Kinshasa + Africa/Lagos Africa/Libreville Africa/Lome Africa/Luanda Africa/Lubumbashi + Africa/Lusaka + Africa/Malabo Africa/Maputo Africa/Maseru Africa/Mbabane Africa/Mogadishu + Africa/Monrovia + Africa/Nairobi Africa/Ndjamena Africa/Niamey Africa/Nouakchott + Africa/Ouagadougou + Africa/Porto-Novo + Africa/Sao_Tome + Africa/Tripoli Africa/Tunis + Africa/Windhoek + America/Adak America/Anchorage America/Anguilla America/Antigua + America/Araguaina + America/Argentina/La_Rioja + America/Argentina/Rio_Gallegos + America/Argentina/Salta America/Argentina/San_Juan America/Argentina/San_Luis + America/Argentina/Tucuman + America/Argentina/Ushuaia + America/Aruba America/Asuncion + America/Bahia America/Bahia_Banderas America/Barbados America/Belem + America/Belize America/Blanc-Sablon America/Boa_Vista America/Bogota + America/Boise America/Buenos_Aires + America/Cambridge_Bay America/Campo_Grande America/Cancun America/Caracas + America/Catamarca America/Cayenne America/Cayman America/Chicago + America/Chihuahua America/Coral_Harbour America/Cordoba America/Costa_Rica + America/Creston America/Cuiaba America/Curacao + America/Danmarkshavn America/Dawson America/Dawson_Creek America/Denver + America/Detroit America/Dominica + America/Edmonton America/Eirunepe America/El_Salvador + America/Fortaleza + America/Glace_Bay America/Godthab America/Goose_Bay America/Grand_Turk + America/Grenada America/Guadeloupe America/Guatemala America/Guayaquil + America/Guyana + America/Halifax America/Havana America/Hermosillo + America/Indiana/Knox + America/Indiana/Marengo + America/Indiana/Petersburg + America/Indiana/Tell_City + America/Indiana/Vevay America/Indiana/Vincennes + America/Indiana/Winamac + America/Indianapolis America/Inuvik America/Iqaluit + America/Jamaica America/Jujuy America/Juneau + America/Kentucky/Monticello + America/Kralendijk + America/La_Paz America/Lima America/Los_Angeles America/Louisville + America/Lower_Princes + America/Maceio America/Managua America/Manaus America/Marigot + America/Martinique America/Matamoros America/Mazatlan America/Mendoza + America/Menominee America/Merida America/Metlakatla America/Mexico_City + America/Miquelon America/Moncton America/Monterrey America/Montevideo + America/Montserrat + America/Nassau America/New_York America/Nipigon America/Nome America/Noronha + America/North_Dakota/Beulah + America/North_Dakota/Center + America/North_Dakota/New_Salem + America/Ojinaga + America/Panama America/Pangnirtung America/Paramaribo America/Phoenix + America/Port-au-Prince America/Port_of_Spain America/Porto_Velho + America/Puerto_Rico + America/Rainy_River America/Rankin_Inlet America/Recife America/Regina + America/Resolute America/Rio_Branco + America/Santa_Isabel America/Santarem America/Santiago America/Santo_Domingo + America/Sao_Paulo America/Scoresbysund America/Sitka America/St_Barthelemy + America/St_Johns America/St_Kitts America/St_Lucia America/St_Thomas + America/St_Vincent America/Swift_Current + America/Tegucigalpa America/Thule America/Thunder_Bay America/Tijuana + America/Toronto America/Tortola + America/Vancouver + America/Whitehorse America/Winnipeg + America/Yakutat America/Yellowknife + Antarctica/Casey + Antarctica/Davis Antarctica/DumontDUrville + Antarctica/Macquarie Antarctica/Mawson Antarctica/McMurdo + Antarctica/Palmer + Antarctica/Rothera + Antarctica/Syowa + Antarctica/Vostok + Arctic/Longyearbyen + Asia/Aden Asia/Almaty Asia/Amman Asia/Anadyr Asia/Aqtau Asia/Aqtobe + Asia/Ashgabat + Asia/Baghdad Asia/Bahrain Asia/Baku Asia/Bangkok Asia/Beirut Asia/Bishkek + Asia/Brunei + Asia/Calcutta Asia/Choibalsan Asia/Chongqing Asia/Colombo + Asia/Damascus Asia/Dhaka Asia/Dili Asia/Dubai Asia/Dushanbe + Asia/Gaza + Asia/Harbin Asia/Hebron Asia/Hong_Kong Asia/Hovd + Asia/Irkutsk + Asia/Jakarta Asia/Jayapura Asia/Jerusalem + Asia/Kabul Asia/Kamchatka Asia/Karachi Asia/Kashgar Asia/Katmandu Asia/Khandyga + Asia/Krasnoyarsk Asia/Kuala_Lumpur Asia/Kuching Asia/Kuwait + Asia/Macau Asia/Magadan Asia/Makassar Asia/Manila Asia/Muscat + Asia/Nicosia Asia/Novokuznetsk Asia/Novosibirsk + Asia/Omsk Asia/Oral + Asia/Phnom_Penh Asia/Pontianak Asia/Pyongyang + Asia/Qatar Asia/Qyzylorda + Asia/Rangoon Asia/Riyadh + Asia/Saigon Asia/Sakhalin Asia/Samarkand Asia/Seoul Asia/Shanghai + Asia/Singapore + Asia/Taipei Asia/Tashkent Asia/Tbilisi Asia/Tehran Asia/Thimphu Asia/Tokyo + Asia/Ulaanbaatar Asia/Urumqi Asia/Ust-Nera + Asia/Vientiane Asia/Vladivostok + Asia/Yakutsk Asia/Yekaterinburg Asia/Yerevan + Atlantic/Azores + Atlantic/Bermuda + Atlantic/Canary Atlantic/Cape_Verde + Atlantic/Faeroe + Atlantic/Madeira + Atlantic/Reykjavik + Atlantic/South_Georgia Atlantic/St_Helena Atlantic/Stanley + Australia/Adelaide + Australia/Brisbane Australia/Broken_Hill + Australia/Currie + Australia/Darwin + Australia/Eucla + Australia/Hobart + Australia/Lindeman Australia/Lord_Howe + Australia/Melbourne + Australia/Perth + Australia/Sydney + CST6CDT EST5EDT Etc/GMT Etc/GMT+1 Etc/GMT+10 Etc/GMT+11 Etc/GMT+12 Etc/GMT+2 + Etc/GMT+3 Etc/GMT+4 Etc/GMT+5 Etc/GMT+6 Etc/GMT+7 Etc/GMT+8 Etc/GMT+9 Etc/GMT-1 + Etc/GMT-10 Etc/GMT-11 Etc/GMT-12 Etc/GMT-13 Etc/GMT-14 Etc/GMT-2 Etc/GMT-3 + Etc/GMT-4 Etc/GMT-5 Etc/GMT-6 Etc/GMT-7 Etc/GMT-8 Etc/GMT-9 + Etc/Unknown + Europe/Amsterdam Europe/Andorra Europe/Athens + Europe/Belgrade Europe/Berlin Europe/Bratislava Europe/Brussels + Europe/Bucharest Europe/Budapest Europe/Busingen + Europe/Chisinau Europe/Copenhagen + Europe/Dublin + Europe/Gibraltar Europe/Guernsey + Europe/Helsinki + Europe/Isle_of_Man Europe/Istanbul + Europe/Jersey + Europe/Kaliningrad Europe/Kiev + Europe/Lisbon Europe/Ljubljana Europe/London Europe/Luxembourg + Europe/Madrid Europe/Malta Europe/Mariehamn Europe/Minsk Europe/Monaco + Europe/Moscow + Europe/Oslo + Europe/Paris Europe/Podgorica Europe/Prague + Europe/Riga Europe/Rome + Europe/Samara Europe/San_Marino Europe/Sarajevo Europe/Simferopol Europe/Skopje + Europe/Sofia Europe/Stockholm + Europe/Tallinn Europe/Tirane + Europe/Uzhgorod + Europe/Vaduz Europe/Vatican Europe/Vienna Europe/Vilnius Europe/Volgograd + Europe/Warsaw + Europe/Zagreb Europe/Zaporozhye Europe/Zurich + Indian/Antananarivo + Indian/Chagos Indian/Christmas Indian/Cocos Indian/Comoro + Indian/Kerguelen + Indian/Mahe Indian/Maldives Indian/Mauritius Indian/Mayotte + Indian/Reunion + MST7MDT PST8PDT Pacific/Apia Pacific/Auckland + Pacific/Chatham + Pacific/Easter Pacific/Efate Pacific/Enderbury + Pacific/Fakaofo Pacific/Fiji Pacific/Funafuti + Pacific/Galapagos Pacific/Gambier Pacific/Guadalcanal Pacific/Guam + Pacific/Honolulu + Pacific/Johnston + Pacific/Kiritimati Pacific/Kosrae Pacific/Kwajalein + Pacific/Majuro Pacific/Marquesas Pacific/Midway + Pacific/Nauru Pacific/Niue Pacific/Norfolk Pacific/Noumea + Pacific/Pago_Pago Pacific/Palau Pacific/Pitcairn Pacific/Ponape + Pacific/Port_Moresby + Pacific/Rarotonga + Pacific/Saipan + Pacific/Tahiti Pacific/Tarawa Pacific/Tongatapu Pacific/Truk + Pacific/Wake Pacific/Wallis + + + stand-alone variant list secondary email www short narrow accounting arab arabext armn armnlow bali beng cham deva ethi fullwide geor grek greklow gujr guru hans hansfin hant hantfin hebr java jpan jpanfin kali knda khmr lana lanatham laoo latn lepc limb mlym mong mtei mymr mymrshan new nkoo olck orya roman romanlow saur sund talu taml telu thai tibt vaii + + + $tzid + titlecase-words titlecase-firstword lowercase-words mixed + + + (verbatim) + ((stand-alone|variant|list|secondary|email|www|short|narrow|new|accounting)(-proposed.*)?|(proposed.*)) + Era Year Quarter Month Week Day-Of-Week Day Hour Minute Second Timezone + 200[0-9]-([0-9]|1[0-2])-([12][0-9]|3[01]) + [0-9]+(\.[0-9]+)? + standard + + \$.*\$ + + ([R|S]|RP)[0-9]+ + ([01][0-9]|2[0-4]):[0-6][0-9] + + [$][a-zA-Z0-9]+ + \$.*\$ + + $alt + $locale + notDoneYet + + locale + cu + $append + ca + . + co + $version + uiListOrMenu stand-alone + [a-zA-Z-]+ + [0-9A-Fa-f]{4,6} + $date + cu + cu + standard accounting + nu + [0-9]+ + format stand-alone + years months days dayParts zodiacs + $format + full long medium short + sun mon tue wed thu fri sat + abbreviated narrow short wide + format gregorian long medium pinyin standard stroke wide + [0-9]+ + era year month week day weekday dayperiod hour minute second zone sun mon tue wed thu fri sat + sun mon tue wed thu fri sat + $genDate + $territory + [HKhk]( [HKhk]{0,2}) + H K h k + $territory + [0-9]+ + cu + [0-9]+ + calendar collation colAlternate colBackwards colCaseFirst colCaseLevel colHiraganaQuaternary colNormalization colNumeric colReorder colStrength currency numbers timezone va variableTop x + $script + $territory + $locale + $variant + + $version + .+ + $tzid + iana + utf-8 + nu + algorithmic numeric + [0-7] + 1 2 3 4 5 6 7 8 9 10 11 12 13 + leap standardAfterLeap combined + format stand-alone numeric + abbreviated narrow wide all + abbreviated narrow wide + standard atLeast range 1000 10000 100000 1000000 10000000 10000000 100000000 1000000000 10000000000 100000000000 1000000000000 10000000000000 100000000000000 + $tzidList + 1 2 3 4 + $reference + notDoneYet + $territory + -?[0-9]+ + future past + primary secondary tertiary + $double + $script + $script + $script + GraphemeClusterBreak LineBreak SentenceBreak WordBreak + $version + nu + $territory + $territory + calendar collation colAlternate colBackwards colCaseFirst colCaseLevel colHiraganaQuaternary colNormalization colNumeric colStrength numbers va + arab arabext armn armnlow bali beng big5han brah buddhist cakm cham chinese coptic dangi deva dictionary ducet eor ethi ethiopic ethiopic-amete-alem finance fullwide gb2312han geor gregorian grek greklow gujr guru hanidays hanidec hans hansfin hant hantfin hebr hebrew identical indian islamic islamic-civil islamic-rgsa islamic-tbla islamic-umalqura iso8601 japanese java jpan jpanfin kali khmr knda lana lanatham laoo latn lepc limb lower mlym mong mtei mymr mymrshan native nkoo no non-ignorable olck orya osma persian phonebook phonetic pinyin posix primary quaternary reformed roc roman romanlow saur search searchjl secondary shifted shrd sora standard stroke sund takr talu taml tamldec telu tertiary thai tibt traditional unihan upper vaii yes zhuyin + (acceleration-g-force|angle-(degree|arc-minute|arc-second)|area-(acre|square-(foot|kilometer|meter|mile)|hectare)|duration-(millisecond|(day|hour|minute|month|second|week|year))|length-((pico|milli|centi|kilo)?meter|foot|inch|light-year|mile|yard)|mass-((kilo)?gram|ounce|pound)|power-(horsepower|(kilo)?watt)|pressure-(hectopascal|inch-hg|millibar)|speed-((mile|kilometer)-per-hour|meter-per-second)|temperature-(celsius|fahrenheit)|volume-(liter|cubic-(kilometer|mile))) + $variableID + $variant + $variant + $version + $time + $tzid + $territory + $tzidList + $territory + $tzid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sv.xml b/library/Zend/Locale/Data/sv.xml new file mode 100755 index 000000000..57c3fd78a --- /dev/null +++ b/library/Zend/Locale/Data/sv.xml @@ -0,0 +1,6361 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + afar + abchaziska + acehnesiska + acholi + adangme + adygeiska + avestiska + afrikaans + afrihili + aghem + ainu + akan + akkadiska + aleutiska + sydaltaiska + amhariska + aragonesiska + fornengelska + angika + arabiska + modern standardarabiska + arameiska + araukanska + arapaho + arawakiska + assamesiska + asu + asturiska + avariska + awadhi + aymara + azerbajdzjanska + azeriska + basjkiriska + baluchiska + balinesiska + basa + bamunska + ghomala + vitryska + beja + bemba + bena + bafut + bulgariska + bhojpuri + bislama + bikol + bini + bamekon + siksika + bambara + bengali + tibetanska + bretonska + braj + bodo + bosniska + bakossi + burjätiska + buginesiska + boulou + blin + bagangte + katalanska + caddo + karibiska + cayuga + atsam + tjetjenska + cebuano + chiga + chamorro + chibcha + chagatai + chuukesiska + mariska + chinook + choctaw + chipewyan + cherokesiska + cheyenne + soranisk kurdiska + korsikanska + koptiska + cree + krimtatariska + tjeckiska + kasjubiska + kyrkslaviska + tjuvasjiska + walesiska + danska + dakota + darginska + taita + tyska + österrikisk tyska + schweizisk högtyska + delaware + slavej + dogrib + dinka + zarma + dogri + lågsorbiska + duala + medelnederländska + divehi + jola-fonyi + dyula + bhutanesiska + dazaga + embu + ewe + efik + fornegyptiska + ekajuk + grekiska + elamitiska + engelska + australisk engelska + kanadensisk engelska + brittisk engelska + engelska (UK) + amerikansk engelska + medelengelska + esperanto + spanska + latinamerikansk spanska + europeisk spanska + mexikansk spanska + estniska + baskiska + ewondo + persiska + fang + fanti + fulani + finska + filippinska + fijianska + färöiska + fonspråket + franska + kanadensisk franska + schweizisk franska + medelfranska + fornfranska + nordfrisiska + östfrisiska + friulianska + västfrisiska + iriska + + gayo + gbaya + höglandsskotska + etiopiska + gilbertiska + galiciska + medelhögtyska + guaraní + fornhögtyska + gondi + gorontalo + gotiska + grebo + forngrekiska + schweizertyska + gujarati + gusli + manx + gwichin + haussa + haida + hawaiiska + hebreiska + hindi + hiligaynon + hettitiska + hmongspråk + hirimotu + kroatiska + högsorbiska + haitiska + ungerska + hupa + armeniska + herero + interlingua + ibanska + ibibio + indonesiska + interlingue + ibo + szezuan i + inupiak + iloko + ingusjiska + ido + isländska + italienska + inuktitut + japanska + lojban + ngomba + kimashami + judisk persiska + judisk arabiska + javanesiska + georgiska + karakalpakiska + kabyliska + kachin + jju + kamba + kawi + kabardinska + kanembu + tyap + makonde + kapverdiska + koro + kikongo + khasi + khotanesiska + Timbuktu-songhoy + kikuyu + kuanyama + kazakiska + mkako + grönländska + kalenjin + kambodjanska + kimbundu + kannada + koreanska + konkani + kosreanska + kpelle + kanuri + karachay-balkar + karelska + kurukh + kashmiriska + kisambaa + bafia + kölniska + kurdiska + kumykiska + kutenaj + kome + korniska + kirgisiska + latin + ladino + langi + lahnda + lamba + luxemburgiska + lezghien + luganda + limburgiska + lingala + laotiska + mongo + lozi + litauiska + luba-katanga + luba-lulua + luiseño + lunda + luo + lushai + luhya + lettiska + maduresiska + mafa + magahi + maithili + makasar + mande + massajiska + maba + moksja + mandar + mende + meru + mauritansk kreol + malagassiska + medeliriska + makhuwa-meetto + meta’ + marshalliska + maori + mi’kmaq + minangkabau + makedonska + malayalam + mongoliska + manchuriska + manipuri + mohawk + mossi + marathi + malajiska + maltesiska + mundang + flera språk + muskogee + mirandesiska + marwari + burmesiska + myene + erjya + nauru + napolitanska + nama + norskt bokmål + nordndebele + lågtyska + nepalesiska + newariska + ndonga + nias + niueanska + nederländska + flamländska + kwasio + nynorska + bamileké-ngiemboon + norska + nogai + fornnordiska + n-kå + sydndebele + nordsotho + nuer + navaho + klassisk newariska + nyanja + nyamwezi + nyankole + nyoro + nzima + occitanska + odjibwa + oromo + oriya + ossetiska + osage + ottomanska + punjabi + pangasinan + medelpersiska + pampanga + papiamento + palau + fornpersiska + feniciska + pali + polska + ponape + fornprovensalska + afghanska + pashto + portugisiska + brasiliansk portugisiska + europeisk portugisiska + quechua + rajasthani + rapanui + rarotonganska + rätoromanska + rundi + rumänska + moldaviska + rombo + romani + rot + ryska + arumänska + kinjarwanda + rwa + sanskrit + sandawe + jakutiska + samaritanska + samburu + sasak + santali + ngambay + sangu + sardiska + sicilianska + skotska + sindhi + nordsamiska + seneca + chisena + selkup + Gao-songhay + sango + forniriska + serbokroatiska + tachelhit + shan + Chad-arabiska + singalesiska + sidamo + slovakiska + slovenska + samoanska + sydsamiska + lulesamiska + enaresamiska + skoltsamiska + shona + soninke + somaliska + sogdiska + albanska + serbiska + sranan tongo + serer + swati + saho + sydsotho + sundanesiska + sukuma + susu + sumeriska + svenska + swahili + shimaoré + Kongo-swahili + klassisk syriska + syriska + tamil + telugiska + temne + teso + tereno + tetum + tadzjikiska + thailändska + tigrinja + tigré + tivi + turkmeniska + tokelauiska + tagalog + klingonska + tlingit + tamashek + tswana + tonganska + nyasatonganska + tok pisin + turkiska + taroko + tsonga + tsimshian + tatariska + tumbuka + tuvaluanska + twi + tasawaq + tahitiska + tuviniska + centralmarockansk tamazight + udmurtiska + uiguriska + östturkiska + ugaritiska + ukrainska + umbundu + obestämt språk + urdu + uzbekiska + vaj + venda + vietnamesiska + volapük + votiska + vunjo + vallonska + walsertyska + walamo + waray + washo + wolof + kalmuckiska + xhosa + lusoga + kiyao + japetiska + yangben + bamileké-jemba + jiddisch + yoruba + kantonesiska + zhuang + zapotek + blissymboler + zenaga + marockansk standard-tamazight + kinesiska + förenklad kinesiska + traditionell kinesiska + zulu + zuni + inget språkligt innehåll + zazaiska + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + världen + Afrika + Nordamerika + Sydamerika + Oceanien + Västafrika + Centralamerika + Östafrika + Nordafrika + Centralafrika + södra Afrika + Nord- och Sydamerika + norra Amerika + Karibien + Östasien + Sydasien + Sydostasien + Sydeuropa + Australasien + Melanesien + Mikronesiska öarna + Polynesien + Asien + Centralasien + Västasien + Europa + Östeuropa + Nordeuropa + Västeuropa + Latinamerika + Ascension + Andorra + Förenade Arabemiraten + Afghanistan + Antigua och Barbuda + Anguilla + Albanien + Armenien + Nederländska Antillerna + Angola + Antarktis + Argentina + Amerikanska Samoa + Österrike + Australien + Aruba + Åland + Azerbajdzjan + Bosnien och Hercegovina + Barbados + Bangladesh + Belgien + Burkina Faso + Bulgarien + Bahrain + Burundi + Benin + S:t Barthélemy + Bermuda + Brunei + Bolivia + Karibiska Nederländerna + Brasilien + Bahamas + Bhutan + Bouvetön + Botswana + Vitryssland + Belize + Kanada + Kokosöarna + Kongo-Kinshasa + Demokratiska republiken Kongo + Centralafrikanska republiken + Kongo-Brazzaville + Republiken Kongo + Schweiz + Elfenbenskusten + Cooköarna + Chile + Kamerun + Kina + Colombia + Clippertonön + Costa Rica + Kuba + Kap Verde + Curaçao + Julön + Cypern + Tjeckien + Tyskland + Diego Garcia + Djibouti + Danmark + Dominica + Dominikanska republiken + Algeriet + Ceuta och Melilla + Ecuador + Estland + Egypten + Västsahara + Eritrea + Spanien + Etiopien + Europeiska unionen + Finland + Fiji + Falklandsöarna + Falklandsöarna (Malvinerna) + Mikronesien + Färöarna + Frankrike + Gabon + Storbritannien + Storbritannien + Grenada + Georgien + Franska Guyana + Guernsey + Ghana + Gibraltar + Grönland + Gambia + Guinea + Guadeloupe + Ekvatorialguinea + Grekland + Sydgeorgien och Sydsandwichöarna + Guatemala + Guam + Guinea-Bissau + Guyana + Hongkong (S.A.R. Kina) + Hongkong + Heardön och McDonaldöarna + Honduras + Kroatien + Haiti + Ungern + Kanarieöarna + Indonesien + Irland + Israel + Isle of Man + Indien + Brittiska territoriet i Indiska oceanen + Irak + Iran + Island + Italien + Jersey + Jamaica + Jordanien + Japan + Kenya + Kirgizistan + Kambodja + Kiribati + Komorerna + S:t Kitts och Nevis + Nordkorea + Sydkorea + Kuwait + Caymanöarna + Kazakstan + Laos + Libanon + S:t Lucia + Liechtenstein + Sri Lanka + Liberia + Lesotho + Litauen + Luxemburg + Lettland + Libyen + Marocko + Monaco + Moldavien + Montenegro + S:t Martin + Madagaskar + Marshallöarna + Makedonien + Makedonien (FYROM) + Mali + Myanmar (Burma) + Mongoliet + Macao (S.A.R. Kina) + Macao + Nordmarianerna + Martinique + Mauretanien + Montserrat + Malta + Mauritius + Maldiverna + Malawi + Mexiko + Malaysia + Moçambique + Namibia + Nya Kaledonien + Niger + Norfolkön + Nigeria + Nicaragua + Nederländerna + Norge + Nepal + Nauru + Niue + Nya Zeeland + Oman + Panama + Peru + Franska Polynesien + Papua Nya Guinea + Filippinerna + Pakistan + Polen + S:t Pierre och Miquelon + Pitcairnöarna + Puerto Rico + Palestinska territorierna + Palestina + Portugal + Palau + Paraguay + Qatar + yttre öar i Oceanien + Réunion + Rumänien + Serbien + Ryssland + Rwanda + Saudiarabien + Salomonöarna + Seychellerna + Sudan + Sverige + Singapore + S:t Helena + Slovenien + Svalbard och Jan Mayen + Slovakien + Sierra Leone + San Marino + Senegal + Somalia + Surinam + Sydsudan + São Tomé och Príncipe + El Salvador + Sint Maarten + Syrien + Swaziland + Tristan da Cunha + Turks- och Caicosöarna + Tchad + Franska sydterritorierna + Togo + Thailand + Tadzjikistan + Tokelau + Östtimor + Turkmenistan + Tunisien + Tonga + Turkiet + Trinidad och Tobago + Tuvalu + Taiwan + Tanzania + Ukraina + Uganda + USA:s yttre öar + USA + USA + Uruguay + Uzbekistan + Vatikanstaten + S:t Vincent och Grenadinerna + Venezuela + Brittiska Jungfruöarna + Amerikanska Jungfruöarna + Vietnam + Vanuatu + Wallis- och Futunaöarna + Samoa + Kosovo + Jemen + Mayotte + Sydafrika + Zambia + Zimbabwe + okänd region + + + traditionell tysk stavning + 1994 års resisk stavning + 1996 års reformerad tysk stavning + 1606 års stavning + 1694 års stavning + 1959 års stavning + 1997 års ALA-LC + Aluku-dialekt + östarmeniska + västarmeniska + 1926 års stavning + bauddha-dialekt + Biscaya-dialekt + Bila-dialekt + Bohorič-alfabetet + boontling + Dajnko-alfabetet + tidig modern engelska + internationell fonetisk notation - IPA + uralisk fonetisk notation + X-SAMPA fonetisk notation + Hepburn + högnorsk dialekt + itihasa-dialekt + jauer-dialekt + jyutping + vanlig stavning + standardstavning + laukika-dialekt + Lipovaz-dialekt + 1918 års stavning + Metelko-alfabetet + monotonisk stavning + Ndyuka-dialekt + natisonsk dialekt + Njiva-dialekt + nulik-stavning + Osojane-dialekt + Pamaka-dialekt + 1708 års stavning + pinyin + polytonisk stavning + Posix + puter-dialekt + reformerad stavning + rigik-stavning + resisk dialekt + grischun-dialekt + saho-dialekt + skotska + scouse + Solbica-dialekt + surmiran-dialekt + sursilvan-dialekt + sutsilvan-dialekt + Taraskievika-stavning + unifierad stavning + reviderad unifierad stavning + Ulster-dialekt + vedisk dialekt + valensisk dialekt + vallader-dialekt + Wade-Giles + + + kalender + Ignorera symboler vid sortering + Sortera accenter omvänt + Ordna efter versaler/gemener + Skiftlägeskänslig sortering + Sortering efter kana + sorteringsordning + Normaliserad sortering + Numerisk sortering + Sorteringsstyrka + valuta + siffror + Tidszon + Språkvariant + Sortera som symboler + privat + + + indo-arabiska siffror + utökade indo-arabiska siffror + armeniska numeraler + små armeniska numeraler + balinesiska siffror + bengaliska siffror + big5-sorteringsordning + brahmiska siffror + buddistisk kalender + chakma-siffror + chamiska siffror + kinesisk kalender + koptisk kalender + koreansk kalender + devanagariska siffror + ordbokssorteringsordning + grundläggande Unicode-sorteringsordning + sorteringsordning för flerspråkliga europeiska dokument + etiopiska numeraler + etiopisk kalender + etiopisk amete-alem-kalender + Finansiella siffror + fullbreddssiffror + gb2312-sorteringsordning + georgiska numeraler + gregoriansk kalender + grekiska numeraler + små grekiska numeraler + gujaratiska siffror + gurmukhiska siffror + kinesiska decimaltal + förenklat kinesiskt stavade tal + förenklat kinesiskt finansiellt stavade tal + traditionellt kinesiskt stavade tal + traditionellt kinesiskt finansiellt stavade tal + hebreiska numeraler + hebreisk kalender + Sortera alla + indisk kalender + islamisk kalender + islamisk civil kalender + islamisk kalender, Saudi-Arabien + islamisk kalender, astronomisk + islamisk kalender, Umm al-Qura + ISO 8601-kalender + japansk kalender + javanesiska siffror + japanskt stavade tal + japanskt finansiellt stavade tal + kayah li-siffror + khmeriska siffror + kannadiska siffror + tai tham hora-siffror + tai tham tham-siffror + laotiska siffror + västerländska siffror + lepcha-siffror + limbu-siffror + Sortera gemener först + malayalamiska siffror + mongoliska siffror + meetei mayek-siffror + burmesiska siffror + burmesiska shan-siffror + Språkspecifika siffror + n-kå-siffor + sortera accenter normalt + Ordna normalt efter skiftläge + Sortera oavsett skiftläge + Sortera kana separat + sortera utan normalisering + Sortera siffror för sig + sortera symboler + ol chiki-siffror + oriyiska siffror + osmanya-siffror + persisk kalender + telefonkatalogssorteringsordning + fonetisk sorteringsordning + pinyin-sorteringsordning + Sortera endast efter grundbokstäver + Sortera efter accent/skiftläge/bredd/kana + reformerad sorteringsordning + kinesiska republikens kalender + romerska numeraler + små romerska numeraler + saurashtra-siffror + allmän sökning + söksorteringsordning för att söka på inledande Hangul-konsonant + Sortera accenter + Sortera oavsett symboler + sharada-siffror + sora sompeng-siffror + normal sorteringsordning + strecksorteringsordning + sundanesiska siffror + takri-siffror + ny tai lü-siffror + traditionella tamilska numeraler + tamilska siffror + telugiska siffror + Sortera accenter/skiftläge/bredd + thailändska siffror + tibetanska siffror + traditionell ordning + Traditionella siffror + radikal-streck-sorteringsordning + Sortera versaler först + vai-siffror + sortera accenter omvänt + Sortera efter skiftläge + Sortera efter kana + sortera med Unicode-normalisering + Sortera siffror numeriskt + zhuyin-sorteringsordning + + + BGN + Numerisk + Ton + UNGEGN + Accenter + Helbreda + Halvbreda + Jamo + Pinyin + För publicering + + + SI-enheter + engelska enheter + USA-enheter + + + språk: {0} + skrift: {0} + region: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [a à b c d e é f g h i j k l m n o p q r s t u v w x y z å ä ö] + [á â ã ā ç ë í î ï ī ñ ó ú ÿ ü æ ø] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + tout + bâbâ + hâtour + kiahk + toubah + amshîr + barmahât + barmoudah + bashans + ba’ounah + abîb + misra + al-nasi + + + tout + bâbâ + hâtour + kiahk + toubah + amshîr + barmahât + barmoudah + bashans + ba’ounah + abîb + misra + al-nasi + + + + + Tout + Bâbâ + Hâtour + Kiahk + Toubah + Amshîr + Barmahât + Barmoudah + Bashans + Ba’ounah + Abîb + Misra + Al-nasi + + + Tout + Bâbâ + Hâtour + Kiahk + Toubah + Amshîr + Barmahât + Barmoudah + Bashans + Ba’ounah + Abîb + Misra + Al-nasi + + + + + + + + + + jia-zi + yi-chou + bing-yin + ding-mao + wu-chen + ji-si + geng-wu + xin-wei + ren-shen + gui-you + jia-xu + yi-hai + bing-zi + ding-chou + wu-yin + ji-mao + geng-chen + xin-si + ren-wu + gui-wei + jia-shen + yi-you + bing-xu + ding-hai + wu-zi + ji-chou + geng-yin + xin-mao + ren-chen + gui-si + jia-wu + yi-wei + bing-shen + ding-you + wu-xu + ji-hai + geng-zi + xin-chou + ren-yin + gui-mao + jia-chen + yi-si + bing-wu + ding-wei + wu-shen + ji-you + geng-xu + xin-hai + ren-zi + gui-chou + jia-yin + yi-mao + bing-chen + ding-si + wu-wu + ji-wei + geng-shen + xin-you + ren-xu + gui-hai + + + + + + + + + + mäskäräm + teqemt + hedar + tahesas + ter + yäkatit + mägabit + miyazya + guenbot + säné + hamlé + nähasé + pagumén + + + mäskäräm + teqemt + hedar + tahesas + ter + yäkatit + mägabit + miyazya + guenbot + säné + hamlé + nähasé + pagumén + + + + + Mäskäräm + Teqemt + Hedar + Tahesas + Ter + Yäkatit + Mägabit + Miyazya + Guenbot + Säné + Hamlé + Nähasé + Pagumén + + + Mäskäräm + Teqemt + Hedar + Tahesas + Ter + Yäkatit + Mägabit + Miyazya + Guenbot + Säné + Hamlé + Nähasé + Pagumén + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + G y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + d/M + dd/MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y G + y G + G y-MM + G y-MM-dd + E, y-MM-dd G + G y-MM + MMM y G + d MMM y G + E d MMM y G + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + h a – h a + h-h a + + + HH-HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d–d/M + d/M – d/M + + + E d/M – E d/M + E d/M – E d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + y–y G + + + G y-MM – MM + G y-MM – y-MM + + + G y-MM-dd – dd + G y-MM-dd – MM-dd + G y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd G + E, y-MM-dd – E, y-MM-dd G + E, y-MM-dd – E, y-MM-dd G + + + MMM–MMM y G + MMM y – MMM y G + + + d–d MMM y G + d MMM–d MMM y G + d MMM y–d MMM y G + + + E dd MMM–E dd MMM y G + E dd MMM–E dd MMM y G + E dd MMM y–E dd MMM y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + jan + feb + mar + apr + maj + jun + jul + aug + sep + okt + nov + dec + + + J + F + M + A + M + J + J + A + S + O + N + D + + + januari + februari + mars + april + maj + juni + juli + augusti + september + oktober + november + december + + + + + Jan + Feb + Mar + Apr + Maj + Jun + Jul + Aug + Sep + Okt + Nov + Dec + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januari + Februari + Mars + April + Maj + Juni + Juli + Augusti + September + Oktober + November + December + + + + + + + sön + mån + tis + ons + tors + fre + lör + + + S + M + T + O + T + F + L + + + + + ti + on + to + fr + + + + söndag + måndag + tisdag + onsdag + torsdag + fredag + lördag + + + + + Sön + Mån + Tis + Ons + Tor + Fre + Lör + + + S + M + T + O + T + F + L + + + + + Ti + On + To + Fr + + + + Söndag + Måndag + Tisdag + Onsdag + Torsdag + Fredag + Lördag + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1:a kvartalet + 2:a kvartalet + 3:e kvartalet + 4:e kvartalet + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + 1:a kvartalet + 2:a kvartalet + 3:e kvartalet + 4:e kvartalet + + + + + + + FM + EM + + + f + e + + + fm + em + + + + + fm + em + + + f.m. + e.m. + + + förmiddag + eftermiddag + + + + + + före Kristus + före västerländsk tideräkning + efter Kristus + västerländsk tideräkning + + + f.Kr. + f.v.t. + e.Kr. + v.t. + + + f.Kr. + fvt + e.Kr. + vt + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + y-MM-dd + + + + + + + 'kl'. HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + d/M + dd/MM + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y + y-MM + y-MM-dd + E, y-MM-dd + y-MM + MMM y + d MMM y + E d MMM y + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d–d/M + d/M – d/M + + + E d/M – E d/M + E d/M – E d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E d – E d MMM + E d MMM – E d MMM + + + y–y + + + y-MM – MM + y-MM – y-MM + + + y-MM-dd – dd + y-MM-dd – MM-dd + y-MM-dd – y-MM-dd + + + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + E, y-MM-dd – E, y-MM-dd + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM–d MMM y + d MMM y–d MMM y + + + E dd MMM–E dd MMM y + E dd MMM–E dd MMM y + E dd MMM y–E dd MMM y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + tishrí + heshván + kislév + tevét + shevát + adár I + adár + nisán + ijjár + siván + tammúz + ab + elúl + + + tishrí + heshván + kislév + tevét + shevát + adár I + adár + adár II + nisán + ijjár + siván + tammúz + ab + elúl + + + + + Tishrí + Heshván + Kislév + Tevét + Shevát + Adár I + Adár + Adár II + Nisán + Ijjár + Siván + Tammúz + Ab + Elúl + + + Tishrí + Heshván + Kislév + Tevét + Shevát + Adár I + Adár + Adár II + Nisán + Ijjár + Siván + Tammúz + Ab + Elúl + + + + + + AM + + + + + + + + chaitra + vaishākh + jyaishtha + āshādha + shrāvana + bhādrapad + āshwin + kārtik + mārgashīrsha + paush + māgh + phālgun + + + chaitra + vaishākh + jyaishtha + āshādha + shrāvana + bhādrapad + āshwin + kārtik + mārgashīrsha + paush + māgh + phālgun + + + + + Chaitra + Vaishākh + Jyaishtha + Āshādha + Shrāvana + Bhādrapad + Āshwin + Kārtik + Mārgashīrsha + Paush + Māgh + Phālgun + + + Chaitra + Vaishākh + Jyaishtha + Āshādha + Shrāvana + Bhādrapad + Āshwin + Kārtik + Mārgashīrsha + Paush + Māgh + Phālgun + + + + + + Saka-eran + + + SAKA + + + + + + + + muharram + safar + rabi’ al-awwal + rabi’ al-akhir + jumada-l-ula + jumada-l-akhira + rajab + sha’ban + ramadan + shawwal + dhu-l-ga’da + dhu-l-hijja + + + + + Muharram + Safar + Rabi’ al-awwal + Rabi’ al-akhir + Jumada-l-ula + Jumada-l-akhira + Rajab + Sha’ban + Ramadan + Shawwal + Dhu-l-ga’da + Dhu-l-hijja + + + + + + AH + + + + + + + Taika (645–650) + Hakuchi (650–671) + Hakuhō (672–686) + Shuchō (686–701) + Taihō (701–704) + Keiun (704–708) + Wadō (708–715) + Reiki (715–717) + Yōrō (717–724) + Jinki (724–729) + Tempyō (729–749) + Tempyō-kampō (749–749) + Tempyō-shōhō (749–757) + Tempyō-hōji (757–765) + Temphō-jingo (765–767) + Jingo-keiun (767–770) + Hōki (770–780) + Ten-ō (781–782) + Enryaku (782–806) + Daidō (806–810) + Kōnin (810–824) + Tenchō (824–834) + Jōwa (834–848) + Kajō (848–851) + Ninju (851–854) + Saiko (854–857) + Tennan (857–859) + Jōgan (859–877) + Genkei (877–885) + Ninna (885–889) + Kampyō (889–898) + Shōtai (898–901) + Engi (901–923) + Enchō (923–931) + Shōhei (931–938) + Tengyō (938–947) + Tenryaku (947–957) + Tentoku (957–961) + Ōwa (961–964) + Kōhō (964–968) + Anna (968–970) + Tenroku (970–973) + Ten-en (973–976) + Jōgen (976–978) + Tengen (978–983) + Eikan (983–985) + Kanna (985–987) + Ei-en (987–989) + Eiso (989–990) + Shōryaku (990–995) + Chōtoku (995–999) + Chōhō (999–1004) + Kankō (1004–1012) + Chōwa (1012–1017) + Kannin (1017–1021) + Jian (1021–1024) + Manju (1024–1028) + Chōgen (1028–1037) + Chōryaku (1037–1040) + Chōkyū (1040–1044) + Kantoku (1044–1046) + Eishō (1046–1053) + Tengi (1053–1058) + Kōhei (1058–1065) + Jiryaku (1065–1069) + Enkyū (1069–1074) + Shōho (1074–1077) + Shōryaku (1077–1081) + Eiho (1081–1084) + Ōtoku (1084–1087) + Kanji (1087–1094) + Kaho (1094–1096) + Eichō (1096–1097) + Shōtoku (1097–1099) + Kōwa (1099–1104) + Chōji (1104–1106) + Kashō (1106–1108) + Tennin (1108–1110) + Ten-ei (1110–1113) + Eikyū (1113–1118) + Gen-ei (1118–1120) + Hoan (1120–1124) + Tenji (1124–1126) + Daiji (1126–1131) + Tenshō (1131–1132) + Chōshō (1132–1135) + Hoen (1135–1141) + Eiji (1141–1142) + Kōji (1142–1144) + Tenyō (1144–1145) + Kyūan (1145–1151) + Ninpei (1151–1154) + Kyūju (1154–1156) + Hogen (1156–1159) + Heiji (1159–1160) + Eiryaku (1160–1161) + Ōho (1161–1163) + Chōkan (1163–1165) + Eiman (1165–1166) + Nin-an (1166–1169) + Kaō (1169–1171) + Shōan (1171–1175) + Angen (1175–1177) + Jishō (1177–1181) + Yōwa (1181–1182) + Juei (1182–1184) + Genryuku (1184–1185) + Bunji (1185–1190) + Kenkyū (1190–1199) + Shōji (1199–1201) + Kennin (1201–1204) + Genkyū (1204–1206) + Ken-ei (1206–1207) + Shōgen (1207–1211) + Kenryaku (1211–1213) + Kenpō (1213–1219) + Shōkyū (1219–1222) + Jōō (1222–1224) + Gennin (1224–1225) + Karoku (1225–1227) + Antei (1227–1229) + Kanki (1229–1232) + Jōei (1232–1233) + Tempuku (1233–1234) + Bunryaku (1234–1235) + Katei (1235–1238) + Ryakunin (1238–1239) + En-ō (1239–1240) + Ninji (1240–1243) + Kangen (1243–1247) + Hōji (1247–1249) + Kenchō (1249–1256) + Kōgen (1256–1257) + Shōka (1257–1259) + Shōgen (1259–1260) + Bun-ō (1260–1261) + Kōchō (1261–1264) + Bun-ei (1264–1275) + Kenji (1275–1278) + Kōan (1278–1288) + Shōō (1288–1293) + Einin (1293–1299) + Shōan (1299–1302) + Kengen (1302–1303) + Kagen (1303–1306) + Tokuji (1306–1308) + Enkei (1308–1311) + Ōchō (1311–1312) + Shōwa (1312–1317) + Bunpō (1317–1319) + Genō (1319–1321) + Genkyō (1321–1324) + Shōchū (1324–1326) + Kareki (1326–1329) + Gentoku (1329–1331) + Genkō (1331–1334) + Kemmu (1334–1336) + Engen (1336–1340) + Kōkoku (1340–1346) + Shōhei (1346–1370) + Kentoku (1370–1372) + Bunchū (1372–1375) + Tenju (1375–1379) + Kōryaku (1379–1381) + Kōwa (1381–1384) + Genchū (1384–1392) + Meitoku (1384–1387) + Kakei (1387–1389) + Kōō (1389–1390) + Meitoku (1390–1394) + Ōei (1394–1428) + Shōchō (1428–1429) + Eikyō (1429–1441) + Kakitsu (1441–1444) + Bun-an (1444–1449) + Hōtoku (1449–1452) + Kyōtoku (1452–1455) + Kōshō (1455–1457) + Chōroku (1457–1460) + Kanshō (1460–1466) + Bunshō (1466–1467) + Ōnin (1467–1469) + Bunmei (1469–1487) + Chōkyō (1487–1489) + Entoku (1489–1492) + Meiō (1492–1501) + Bunki (1501–1504) + Eishō (1504–1521) + Taiei (1521–1528) + Kyōroku (1528–1532) + Tenmon (1532–1555) + Kōji (1555–1558) + Eiroku (1558–1570) + Genki (1570–1573) + Tenshō (1573–1592) + Bunroku (1592–1596) + Keichō (1596–1615) + Genwa (1615–1624) + Kan-ei (1624–1644) + Shōho (1644–1648) + Keian (1648–1652) + Shōō (1652–1655) + Meiryaku (1655–1658) + Manji (1658–1661) + Kanbun (1661–1673) + Enpō (1673–1681) + Tenwa (1681–1684) + Jōkyō (1684–1688) + Genroku (1688–1704) + Hōei (1704–1711) + Shōtoku (1711–1716) + Kyōhō (1716–1736) + Genbun (1736–1741) + Kanpō (1741–1744) + Enkyō (1744–1748) + Kan-en (1748–1751) + Hōryaku (1751–1764) + Meiwa (1764–1772) + An-ei (1772–1781) + Tenmei (1781–1789) + Kansei (1789–1801) + Kyōwa (1801–1804) + Bunka (1804–1818) + Bunsei (1818–1830) + Tenpō (1830–1844) + Kōka (1844–1848) + Kaei (1848–1854) + Ansei (1854–1860) + Man-en (1860–1861) + Bunkyū (1861–1864) + Genji (1864–1865) + Keiō (1865–1868) + Meiji + Taishō + Shōwa + Heisei + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + + + + + farvardin + ordibehesht + khordād + tir + mordād + shahrivar + mehr + ābān + āzar + dey + bahman + esfand + + + farvardin + ordibehesht + khordād + tir + mordād + shahrivar + mehr + ābān + āzar + dey + bahman + esfand + + + + + Farvardin + Ordibehesht + Khordād + Tir + Mordād + Shahrivar + Mehr + Ābān + Āzar + Dey + Bahman + Esfand + + + Farvardin + Ordibehesht + Khordād + Tir + Mordād + Shahrivar + Mehr + Ābān + Āzar + Dey + Bahman + Esfand + + + + + + AP + + + + + + + + före R.K. + R.K. + + + + + + + Era + + + År + i fjol + i år + nästa år + + om {0} år + om {0} år + + + för {0} år sedan + för {0} år sedan + + + + Månad + förra månaden + denna månad + nästa månad + + om {0} månad + om {0} månader + + + för {0} månad sedan + för {0} månader sedan + + + + Vecka + förra veckan + denna vecka + nästa vecka + + om {0} vecka + om {0} veckor + + + för {0} vecka sedan + för {0} veckor sedan + + + + Dag + i förrgår + i går + i dag + i morgon + i övermorgon + + om {0} dag + om {0} dagar + + + för {0} dag sedan + för {0} dagar sedan + + + + Veckodag + + + söndag förra veckan + söndag denna vecka + söndag nästa vecka + + + måndag förra veckan + måndag denna vecka + måndag nästa vecka + + + tisdag förra veckan + tisdag denna vecka + tisdag nästa vecka + + + onsdag förra veckan + onsdag denna vecka + onsdag nästa vecka + + + torsdag förra veckan + torsdag denna vecka + torsdag nästa vecka + + + fredag förra veckan + fredag denna vecka + fredag nästa vecka + + + lördag förra veckan + lördag denna vecka + lördag nästa vecka + + + fm/em + + + timme + + om {0} timme + om {0} timmar + + + för {0} timme sedan + för {0} timmar sedan + + + + Minut + + om {0} minut + om {0} minuter + + + för {0} minut sedan + för {0} minuter sedan + + + + Sekund + nu + + om {0} sekund + om {0} sekunder + + + för {0} sekund sedan + för {0} sekunder sedan + + + + Tidszon + + + + +HH:mm;−HH:mm + GMT{0} + GMT + {0}tid + {0} (sommartid) + {0} (normaltid) + {1} ({0}) + + okänd stad + + + Tirana + + + Jerevan + + + Dumont d’Urville + + + Río Gallegos + + + San Salvador de Jujuy + + + Tucumán + + + Córdoba + + + Wien + + + Bryssel + + + S:t Barthélemy + + + Eirunepé + + + Cuiabá + + + Santarém + + + Belém + + + Araguaína + + + São Paulo + + + Maceió + + + Fernando de Noronha + + + Atikokan + + + S:t Johns + + + Kokosöarna + + + Zürich + + + Påskön + + + Ürümqi + + + Bogotá + + + Havanna + + + Kap Verde + + + Curaçao + + + Julön + + + Prag + + + Büsingen am Hochrhein + + + Köpenhamn + + + Alger + + + Galápagos + + + Kairo + + + El-Aaiún + + + Asmera + + + Kanarieöarna + + + Addis Abeba + + + Helsingfors + + + Chuuk + + + Pohnpei + + + Torshamn + + + + brittisk sommartid + + + + Qaanaaq + + + Nuuk + + + Ittoqqortoormiit + + + Aten + + + Grytviken + + + Hongkong + + + + irländsk sommartid + + + + Kolkata + + + Chagosöarna + + + Bagdad + + + Teheran + + + Rom + + + Bisjkek + + + Komorerna + + + S:t Kitts + + + Söul + + + Caymanöarna + + + Aktau + + + Aqtöbe + + + Alma-Ata + + + S:t Lucia + + + Luxemburg + + + Chișinău + + + Chovd + + + Ulan Bator + + + Tjojbalsan + + + Macao + + + Maldiverna + + + Mazatlán + + + Bahía de Banderas + + + Mérida + + + Cancún + + + Nouméa + + + Katmandu + + + Muskat + + + Marquesasöarna + + + Gambieröarna + + + Manilla + + + Warszawa + + + Pitcairnöarna + + + Azorerna + + + Lissabon + + + Asunción + + + Réunion + + + Bukarest + + + Belgrad + + + Moskva + + + Jekaterinburg + + + Krasnojarsk + + + Jakutsk + + + Chandyga + + + Sachalin + + + Kamtjatka + + + Mahé + + + S:t Helena + + + São Tomé + + + Lower Prince’s Quarter + + + Damaskus + + + N'Djamena + + + Kerguelenöarna + + + Lomé + + + Dusjanbe + + + Asjchabad + + + Dar es-Salaam + + + Uzjhorod + + + Zaporizjzja + + + Midwayöarna + + + Johnstonatollen + + + Adak Island + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Tasjkent + + + Vatikanen + + + S:t Vincent + + + S:t Thomas + + + Ho Chi Minh-staden + + + Wallisön + + + + västbrasiliansk tid + västbrasiliansk normaltid + västbrasiliansk sommartid + + + + + afghansk tid + + + + + centralafrikansk tid + + + + + östafrikansk tid + + + + + sydafrikansk tid + + + + + västafrikansk tid + västafrikansk normaltid + västafrikansk sommartid + + + + + Alaskatid + Alaska, normaltid + Alaska, sommartid + + + + + Almatytid + Almatynormaltid + Almatysommartid + + + + + Amazonastid + Amazonasnormaltid + Amazonassommartid + + + + + centralnordamerikansk tid + centralnordamerikansk normaltid + centralnordamerikansk sommartid + + + + + östnordamerikansk tid + Eastern, normaltid + Eastern, sommartid + + + + + Klippiga Bergentid + Mountain, normaltid + Mountain, sommartid + + + + + västnordamerikansk tid + Pacific, normaltid + Pacific, sommartid + + + + + Anadyrtid + Anadyrnormaltid + Anadyrsommartid + + + + + Aqtautid + Aqtaunormaltid + Aqtausommartid + + + + + Aqtöbetid + Aqtöbenormaltid + Aqtöbesommartid + + + + + saudiarabisk tid + saudiarabisk normaltid + saudiarabisk sommartid + + + + + östargentinsk tid + östargentinsk normaltid + östargentinsk sommartid + + + + + västargentinsk tid + västargentinsk normaltid + västargentinsk sommartid + + + + + armenisk tid + armenisk normaltid + armenisk sommartid + + + + + nordamerikansk atlanttid + Atlantic, normaltid + Atlantic, sommartid + + + + + centralaustralisk tid + centralaustralisk normaltid + centralaustralisk sommartid + + + + + västcentralaustralisk tid + västcentralaustralisk normaltid + västcentralaustralisk sommartid + + + + + östaustralisk tid + östaustralisk normaltid + östaustralisk sommartid + + + + + västaustralisk tid + västaustralisk normaltid + västaustralisk sommartid + + + + + azerbajdzjansk tid + azerbajdzjansk normaltid + azerbajdzjansk sommartid + + + + + azorisk tid + azorisk normaltid + azorisk sommartid + + + + + bangladeshisk tid + bangladeshisk normaltid + bangladeshisk sommartid + + + + + bhutansk tid + + + + + boliviansk tid + + + + + Brasiliatid + Brasilianormaltid + Brasiliasommartid + + + + + Bruneitid + + + + + Kap Verdetid + Kap Verdenormaltid + Kap Verdesommartid + + + + + Caseytid + + + + + Chamorrotid + + + + + Chathamtid + Chathamnormaltid + Chathamsommartid + + + + + chilensk tid + chilensk normaltid + chilensk sommartid + + + + + kinesisk tid + kinesisk normaltid + kinesisk sommartid + + + + + Tjojbalsantid + Tjojbalsannormaltid + Tjojbalsansommartid + + + + + Julöns tid + + + + + Keelingöarnas tid + + + + + colombiansk tid + colombiansk normaltid + colombiansk sommartid + + + + + Cooköarnas tid + Cooköarnas normaltid + Cooköarnas sommartid + + + + + kubansk tid + kubansk normaltid + kubansk sommartid + + + + + Davistid + + + + + Dumont d’Urville-tid + + + + + östtimorisk tid + + + + + Påsköns tid + Påsköns normaltid + Påsköns sommartid + + + + + ecuadoriansk tid + + + + + centraleuropeisk tid + centraleuropeisk normaltid + centraleuropeisk sommartid + + + CET + CET + CEST + + + + + östeuropeisk tid + östeuropeisk normaltid + östeuropeisk sommartid + + + EET + EET + EEST + + + + + västeuropeisk tid + västeuropeisk normaltid + västeuropeisk sommartid + + + WET + WET + WEST + + + + + Falklandsöarnas tid + Falklandsöarnas normaltid + Falklandsöarnas sommartid + + + + + Fijitid + Fijinormaltid + Fijisommartid + + + + + Franska Guyanatid + + + + + Franska Sydterritoriernas tid + + + + + Galápagostid + + + + + Gambiertid + + + + + georgisk tid + georgisk normaltid + georgisk sommartid + + + + + Kiribatitid + + + + + Greenwichtid + + + GMT + + + + + östgrönländsk tid + östgrönländsk normaltid + östgrönländsk sommartid + + + + + västgrönländsk tid + västgrönländsk normaltid + västgrönländsk sommartid + + + + + Guamtid + + + + + Persiska vikentid + + + + + Guyanatid + + + + + Honolulutid + Honolulunormaltid + Honolulusommartid + + + + + Hongkongtid + Hongkongnormaltid + Hongkongsommartid + + + + + Chovdtid + Hovdnormaltid + Hovdsommartid + + + + + indisk tid + + + + + Brittiska Indiska oceanöarnas tid + + + + + indokinesisk tid + + + + + centralindonesisk tid + + + + + östindonesisk tid + + + + + västindonesisk tid + + + + + iransk tid + iransk normaltid + iransk sommartid + + + + + Irkutsktid + Irkutsknormaltid + Irkutsksommartid + + + + + israelisk tid + israelisk normaltid + israelisk sommartid + + + + + japansk tid + japansk normaltid + japansk sommartid + + + + + Kamtjatkatid + Kamtjatkanormaltid + Kamtjatkasommartid + + + + + östkazakstansk tid + + + + + västkazakstansk tid + + + + + koreansk tid + koreansk normaltid + koreansk sommartid + + + + + Kosraetid + + + + + Krasnojarsktid + Krasnojarsknormaltid + Krasnojarsksommartid + + + + + kirgizisk tid + + + + + Sri Lankatid + + + + + Lineöarnas tid + + + + + Lord Howetid + Lord Howenormaltid + Lord Howesommartid + + + + + Macautid + Macaunormaltid + Macausommartid + + + + + Macquarietid + + + + + Magadantid + Magadannormaltid + Magadansommartid + + + + + malaysisk tid + + + + + Maldivernatid + + + + + Marquesastid + + + + + Marshallöarnas tid + + + + + Mauritiustid + Mauritiusnormaltid + Mauritiussommartid + + + + + Mawsontid + + + + + Ulaanbaatar-tid + Ulaanbaatar-normaltid + Ulaanbaatar-sommartid + + + + + Moskvatid + Moskvanormaltid + Moskvasommartid + + + + + burmesisk tid + + + + + Naurutid + + + + + nepalesisk tid + + + + + Nya Kaledonientid + Nya Kaledoniennormaltid + Nya Kaledoniensommartid + + + + + nyzeeländsk tid + nyzeeländsk normaltid + nyzeeländsk sommartid + + + + + Newfoundlandtid + Newfoundland, normaltid + Newfoundland, sommartid + + + + + Niuetid + + + + + Norfolköns tid + + + + + Fernando de Noronhatid + Fernando de Noronhanormaltid + Fernando de Noronhasommartid + + + + + Nordmarianernas tid + + + + + Novosibirsktid + Novosibirsknormaltid + Novosibirsksommartid + + + + + Omsktid + Omsknormaltid + Omsksommartid + + + + + pakistansk tid + pakistansk normaltid + pakistansk sommartid + + + + + Palautid + + + + + Papua Nya Guineas tid + + + + + paraguayansk tid + paraguayansk normaltid + paraguayansk sommartid + + + + + peruansk tid + peruansk normaltid + peruansk sommartid + + + + + filippinsk tid + filippinsk normaltid + filippinsk sommartid + + + + + Enderburytid + + + + + S:t Pierre och Miquelontid + S:t Pierre och Miquelon, normaltid + S:t Pierre och Miquelon, sommartid + + + + + Pitcairntid + + + + + Ponapetid + + + + + Qyzylordatid + Qyzylordanormaltid + Qyzylordasommartid + + + + + Réuniontid + + + + + Rotheratid + + + + + Sachalintid + Sachalinnormaltid + Sachalinsommartid + + + + + Samaratid + Samaranormaltid + Samarasommartid + + + + + samoansk tid + samoansk normaltid + samoansk sommartid + + + + + Seychellernatid + + + + + Singaporetid + + + + + Salomonöarnas tid + + + + + sydgeorgisk tid + + + + + Surinamtid + + + + + Syowatid + + + + + Tahititid + + + + + Taipeitid + Taipeinormaltid + Taipeisommartid + + + + + Tadzjikistantid + + + + + Tokelautid + + + + + Tongatid + Tonganormaltid + Tongasommmartid + + + + + Chuuktid + + + + + turkmensk tid + turkmensk normaltid + turkmensk sommartid + + + + + Tuvalutid + + + + + uruguayansk tid + uruguayansk normaltid + uruguayansk sommartid + + + + + uzbekisk tid + uzbekisk normaltid + uzbekisk sommartid + + + + + Vanuatutid + Vanuatunormaltid + Vanuatusommartid + + + + + venezuelansk tid + + + + + Vladivostoktid + Vladivostoknormaltid + Vladivostoksommartid + + + + + Volgogradtid + Volgogradnormaltid + Volgogradsommartid + + + + + Vostoktid + + + + + Wakeöarnas tid + + + + + Wallis- och Futunaöarnas tid + + + + + Jakutsktid + Jakutsknormaltid + Jakutsksommartid + + + + + Jekaterinburgtid + Jekaterinburgnormaltid + Jekaterinburgsommartid + + + + + + + , +   + ; + % + + + + ×10^ + · + + + ¤¤¤ + + + + + #,##0.### + + + + + 0 tusen + 0 tusen + 00 tusen + 00 tusen + 000 tusen + 000 tusen + 0 miljon + 0 miljoner + 00 miljon + 00 miljoner + 000 miljon + 000 miljoner + 0 miljard + 0 miljarder + 00 miljard + 00 miljarder + 000 miljard + 000 miljarder + 0 biljon + 0 biljoner + 00 biljon + 00 biljoner + 000 biljon + 000 biljoner + + + + + 0 tn + 0 tn + 00 tn + 00 tn + 000 tn + 000 tn + 0 mn + 0 mn + 00 mn + 00 mn + 000 mn + 000 mn + 0 md + 0 md + 00 md + 00 md + 000 md + 000 md + 0 bn + 0 bn + 00 bn + 00 bn + 000 bn + 000 bn + + + + + + + #E0 + + + + + + + #,##0 % + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + + + + andorransk peseta + andorransk peseta + andorranska pesetas + + + Förenade Arabemiratens dirham + Förenade Arabemiratens dirham + Förenade Arabemiratens dirham + + + afghani (1927–2002) + afghani (1927–2002) + afghani (1927–2002) + + + afghansk afghani + afghansk afghani + afghanska afghani + + + albansk lek (1946–1965) + albansk lek (1946–1965) + albanska lek (1946–1965) + + + albansk lek + albansk lek + albanska lek + + + armenisk dram + armenisk dram + armeniska dram + + + Nederländska Antillernas gulden + Nederländska Antillernas gulden + Nederländska Antillernas gulden + + + angolansk kwanza + angolansk kwanza + angolanska kwanza + + + angolansk kwanza (1977–1990) + angolansk kwanza (1977–1990) + angolanska kwanza (1977–1990) + + + angolansk ny kwanza (1990–2000) + angolansk kwanza (1990–2000) + angolanska nya kwanza (1990–2000) + + + angolansk kwanza reajustado (1995–1999) + angolansk kwanza reajustado (1995–1999) + angolanska kwanza reajustado (1995–1999) + + + argentinsk austral + argentinsk austral + argentinska australer + + + argentisk peso (1970–1983) + argentisk peso (1970–1983) + argentiska pesos (1970–1983) + + + argentisk peso (1881–1969) + argentisk peso (1881–1969) + argentiska pesos (1881–1969) + + + argentinsk peso (1983–1985) + argentinsk peso (1983–1985) + argentinska pesos (1983–1985) + + + argentinsk peso + argentinsk peso + argentinska pesos + + + österrikisk schilling + österrikisk schilling + österrikiska schilling + + + australisk dollar + australisk dollar + australiska dollar + AU$ + + + arubansk florin + arubansk florin + arubanska floriner + + + azerbajdzjansk manat (1993–2006) + azerbajdzjansk manat (1993–2006) + azerbajdzjanska manat (1993–2006) + + + azerbajdzjansk manat + azerbajdzjansk manat + azerbajdzjansk manat + + + bosnisk-hercegovinsk dinar (1992–1994) + bosnisk-hercegovinsk dinar (1992–1994) + bosnisk-hercegovinska dinarer (1992–1994) + + + bosnisk-hercegovinsk mark (konvertibel) + bosnisk-hercegovinsk mark (konvertibel) + bosnisk-hercegovinska mark (konvertibla) + + + bosnisk-hercegovinsk dinar (1994–1998) + bosnisk-hercegovinsk dinar (1994–1998) + bosnisk-hercegovinska dinarer (1994–1998) + + + Barbados-dollar + Barbados-dollar + Barbados-dollar + Bds$ + + + bangladeshisk taka + bangladeshisk taka + bangladeshiska taka + Tk + + + belgisk franc (konvertibel) + belgisk franc (konvertibel) + belgiska franc (konvertibla) + + + belgisk franc + belgisk franc + belgiska franc + + + belgisk franc (finansiell) + belgisk franc (finansiell) + belgiska franc (finansiella) + + + bulgarisk hård lev (1962–1999) + bulgarisk hård lev (1962–1999) + bulgariska hård lev (1962–1999) + + + bulgarisk lev (1952–1962) + bulgarisk lev (1952–1962) + bulgariska lev (1952–1962) + + + bulgarisk lev + bulgarisk lev + bulgariska lev + + + bulgarisk lev (1881–1952) + bulgarisk lev (1881–1952) + bulgarisk lev (1881–1952) + + + Bahrain-dinar + Bahrain-dinar + Bahrain-dinar + + + burundisk franc + burundisk franc + burundiska franc + + + Bermuda-dollar + Bermuda-dollar + Bermuda-dollar + BM$ + + + Brunei-dollar + Brunei-dollar + Brunei-dollar + BN$ + + + boliviansk boliviano + boliviansk boliviano + bolivianska bolivianos + + + boliviansk boliviano (1864–1963) + boliviansk boliviano (1864–1963) + bolivianska bolivianos (1864–1963) + + + boliviansk peso + boliviansk peso + bolivianska pesos + + + boliviansk mvdol + boliviansk mvdol + bolivianska mvdol + + + brasiliansk cruzeiro novo (1967–1986) + brasiliansk cruzeiro (1967–1986) + brasilianska cruzeiro novo (1967–1986) + + + brasiliansk cruzado + brasiliansk cruzado + brasilianska cruzado + + + brasiliansk cruzeiro (1990–1993) + brasiliansk cruzeiro (1990–1993) + brasilianska cruzeiro (1990–1993) + + + brasiliansk real + brasiliansk real + brasilianska real + BR$ + + + brasiliansk cruzado novo + brasiliansk cruzado novo + brasilianska cruzado novo + + + brasiliansk cruzeiro + brasiliansk cruzeiro + brasilianska cruzeiros + + + brasiliansk cruzeiro (1942–1967) + brasiliansk cruzeiro (1942–1967) + brasilianska cruzeiros (1942–1967) + + + bahamansk dollar + bahamansk dollar + bahamanska dollar + BS$ + + + bhutanesisk ngultrum + bhutanesisk ngultrum + bhutanesiska ngultrum + + + burmesisk kyat + burmesisk kyat + burmesiska kyat + + + botswansk pula + botswansk pula + botswanska pula + + + vitrysk ny rubel (1994–1999) + vitrysk rubel (1994–1999) + vitryska nya rubel (1994–1999) + + + vitrysk rubel + vitrysk rubel + vitryska rubel + + + belizisk dollar + belizisk dollar + belizisk dollar + BZ$ + + + kanadensisk dollar + kanadensisk dollar + kanadensiska dollar + CAN$ + + + kongolesisk franc + kongolesisk franc + kongolesiska franc + + + euro (konvertibelt konto, WIR Bank, Schweiz) + euro (WIR Bank) + euro (konvertibelt konto, WIR Bank, Schweiz) + + + schweizisk franc + schweizisk franc + schweiziska franc + + + franc (konvertibelt konto, WIR Bank, Schweiz) + franc (WIR Bank) + franc (konvertibelt konto, WIR Bank, Schweiz) + + + chilensk escudo (1960–1975) + chilensk escudo (1960–1975) + chilenska escudos (1960–1975) + + + chilensk unidad de fomento + chilensk unidad de fomento + chilenska unidad de fomento + + + chilensk peso + chilensk peso + chilenska pesos + + + kinesisk dollar + kinesisk dollar + kinesiska dollar + + + kinesisk yuan renminbi + kinesisk yuan renminbi + kinesiska yuan renminbi + CN¥ + + + colombiansk peso + colombiansk peso + colombianska pesos + + + colombiansk unidad de valor real + colombiansk unidad de valor real + colombianska unidad de valor real + + + costarikansk colón + costarikansk colón + costarikanska colón + + + serbisk dinar (2002–2006) + serbisk dinar (2002–2006) + serbiska dinarer (2002–2006) + + + tjeckoslovakisk krona (–1993) + tjeckoslovakisk hård koruna + tjeckiska hårda koruna + + + kubansk peso (konvertibel) + kubansk peso (konvertibel) + kubanska pesos (konvertibla) + + + kubansk peso + kubansk peso + kubanska pesos + + + kapverdisk escudo + kapverdisk escudo + kapverdiska escudos + + + cypriotiskt pund + cypriotiskt pund + cypriotiska pund + + + tjeckisk koruna + tjeckisk koruna + tjeckiska koruna + + + östtysk mark + östtysk mark + östtyska mark + + + tysk mark + tysk mark + tyska mark + + + djiboutisk franc + djiboutisk franc + djiboutiska franc + + + dansk krona + dansk krona + danska kronor + Dkr + + + dominikansk peso + dominikansk peso + dominikanska pesos + RD$ + + + algerisk dinar + algerisk dinar + algeriska dinarer + + + ecuadoriansk sucre + ecuadoriansk sucre + ecuadorianska sucre + + + ecuadoriansk unidad de valor constante + ecuadoriansk unidad de valor constante + ecuadorianska unidad de valor constante + + + estnisk krona + estnisk krona + estniska kronor + + + egyptiskt pund + egyptiskt pund + egyptiska pund + EG£ + + + eritreansk nakfa + eritreansk nakfa + eritreanska nakfa + + + spansk peseta (konto) + spansk peseta (konto) + spanska pesetas (konto) + + + spansk peseta (konvertibelt konto) + spansk peseta (konvertibelt konto) + spanska pesetas (konvertibelt konto) + + + spansk peseta + spansk peseta + spanska pesetas + + + etiopisk birr + etiopisk birr + etiopiska birr + + + euro + euro + euro + + + + finsk mark + finsk mark + finska mark + + + Fiji-dollar + Fiji-dollar + Fiji-dollar + + + Falklandsöarnas pund + Falklandsöarnas pund + Falklandsöarnas pund + + + fransk franc + fransk franc + franska franc + + + brittiskt pund sterling + brittiskt pund sterling + brittiska pund sterling + GB£ + + + georgisk kupon larit + georgisk kupon larit + georgiska kupon larit + + + georgisk lari + georgisk lari + georgiska lari + + + ghanansk cedi (1979–2007) + ghanansk cedi (1979–2007) + ghananska cedi (1979–2007) + + + ghanansk cedi + ghanansk cedi + ghananska cedi + + + gibraltiskt pund + gibraltiskt pund + gibraltiska pund + + + gambisk dalasi + gambisk dalasi + gambiska dalasi + + + guineansk franc + guineansk franc + guineanska franc + + + guineansk syli + guineansk syli + guineanska syli + + + ekvatorialguineansk ekwele + ekvatorialguineansk ekwele + ekvatorialguineanska ekweler + + + grekisk drachma + grekisk drachma + grekiska drachmer + + + guatemalansk quetzal + guatemalansk quetzal + guatemalanska quetzal + + + Portugisiska Guinea-escudo + Portugisiska Guinea-escudo + Portugisiska Guinea-escudos + + + Guinea-Bissau-peso + Guinea-Bissau-peso + Guinea-Bissau-pesos + + + guyanansk dollar + Guyana-dollar + guyanska dollar + GY$ + + + Hongkong-dollar + Hongkong-dollar + Hongkong-dollar + HK$ + + + honduransk lempira + honduransk lempira + honduranska lempira + + + kroatisk dinar + kroatisk dinar + kroatiska dinarer + + + kroatisk kuna + kroatisk kuna + kroatiska kunor + + + haitisk gourde + haitisk gourde + haitiska gourder + + + ungersk forint + ungersk forint + ungerska forinter + + + indonesisk rupiah + indonesisk rupiah + indonesiska rupier + + + irländskt pund + irländskt pund + irländska pund + + + israeliskt pund + israeliskt pund + israeliska pund + + + israelisk shekel (1980–1985) + israelisk shekel (1980–1985) + israeliska shekel (1980–1985) + + + israelisk ny shekel + israelisk ny shekel + israeliska nya shekel + + + + indisk rupie + indisk rupie + indiska rupier + + + + irakisk dinar + irakisk dinar + irakiska dinarer + + + iransk rial + iransk rial + iranska rial + + + isländsk gammal krona + isländsk gammal krona + isländska kronor (1874–1981) + + + isländsk krona + isländsk krona + isländska kronor + Ikr + + + italiensk lire + italiensk lire + italienska lire + + + Jamaica-dollar + Jamaica-dollar + Jamaica-dollar + JM$ + + + jordansk dinar + jordansk dinar + jordanska dinarer + + + japansk yen + japansk yen + japanska yen + JP¥ + + + kenyansk shilling + kenyansk shilling + kenyanska shilling + + + kirgizisk som + kirgizisk som + kirgiziska somer + + + kambodjansk riel + kambodjansk riel + kambodjanska riel + + + komorisk franc + komorisk franc + komoriska franc + + + nordkoreansk won + nordkoreansk won + nordkoreanska won + + + sydkoreansk hwan (1953–1962) + sydkoreansk hwan (1953–1962) + sydkoreanska hwan (1953–1962) + + + sydkoreansk won (1945–1953) + sydkoreansk won (1945–1953) + sydkoreanska won (1945–1953) + + + sydkoreansk won + sydkoreansk won + sydkoreanska won + + + kuwaitisk dinar + kuwaitisk dinar + kuwaitiska dinarer + + + Cayman-dollar + Cayman-dollar + Cayman-dollar + + + kazakisk tenge + kazakisk tenge + kazakiska tenge + + + laotisk kip + laotisk kip + laotiska kiper + + + libanesiskt pund + libanesiskt pund + libanesiska pund + + + srilankesisk rupie + srilankesisk rupie + srilankesiska rupier + + + Liberia-dollar + Liberia-dollar + Liberia-dollar + + + lesothisk loti + lesothisk loti + lesothiska lotier + + + litauisk litas + litauisk litas + litauiska litas + + + litauisk talonas + litauisk talonas + litauiska talonas + + + luxemburgsk franc (konvertibel) + luxemburgsk franc (konvertibel) + luxemburgska franc (konvertibla) + + + luxemburgsk franc + luxemburgsk franc + luxemburgska franc + + + luxemburgsk franc (finansiell) + luxemburgsk franc (finansiell) + luxemburgska franc (finansiella) + + + lettisk lats + lettisk lats + lettiska lats + Ls + + + lettisk rubel + lettisk rubel + lettiska rubel + + + libysk dinar + libysk dinar + libyska dinarer + + + marockansk dirham + marockansk dirham + marockanska dirhamer + + + marockansk franc + marockansk franc + marockanska franc + + + monegaskisk franc (–2001) + monegaskisk franc (–2001) + monegaskiska franc (–2001) + + + moldavisk cupon (1992–1993) + moldavisk cupon (1992–1993) + moldaviska cupon (1992–1993) + + + moldavisk leu + moldavisk leu + moldaviska leu + + + madagaskisk ariary + madagaskisk ariary + madagaskiska ariary + + + madagaskisk franc + madagaskisk franc + madagaskiska franc + + + makedonisk denar + makedonisk denar + makedoniska denarer + + + makedonisk denar (1992–1993) + makedonisk denar (1992–1993) + makedoniska denarer (1992–1993) + + + malisk franc + malisk franc + maliska franc + + + myanmarisk kyat + myanmarisk kyat + myanmariska kyat + + + mongolisk tögrög + mongolisk tögrög + mongoliska tögrög + + + Macao-pataca + Macao-pataca + Macao-pataca + + + mauretansk ouguiya + mauretansk ouguiya + mauretanska ouguiya + + + maltesisk lire + maltesisk lire + maltesiska lire + + + maltesiskt pund + maltesiskt pund + maltesiska pund + + + mauritisk rupie + mauritisk rupie + mauritiska rupier + + + maldivisk rufiyaa + maldivisk rufiyaa + maldiviska rufiyer + + + malawisk kwacha + malawisk kwacha + malawiska kwacha + + + mexikansk peso + mexikansk peso + mexikanska pesos + MX$ + + + mexikansk silverpeso (1861–1992) + mexikansk silverpeso (1861–1992) + mexikanska silverpesos (1861–1992) + + + mexikansk unidad de inversion + mexikansk unidad de inversion + mexikanska unidad de inversion + + + malaysisk ringgit + malaysisk ringgit + malaysiska ringgiter + + + moçambikisk escudo + moçambikisk escudo (1914–1980) + moçambikiska escudos + + + gammal moçambikisk metical + moçambikisk metical (1980–2006) + gammla moçambikiska metical + + + moçambikisk metical + moçambikisk metical + moçambikiska metical + + + Namibia-dollar + Namibia-dollar + Namibia-dollar + + + nigeriansk naira + nigeriansk naira + nigerianska naira + + + nicaraguansk córdoba (1998–1991) + nicaraguansk córdoba (1998–1991) + nicaraguanska córdobas (1988–1991) + + + nicaraguansk córdoba + nicaraguansk córdoba + nicaraguanska córdobas + + + nederländsk gulden + nederländsk gulden + nederländska gulden + + + norsk krona + norsk krona + norska kronor + NKr + + + nepalesisk rupie + nepalesisk rupie + nepalesiska rupier + + + nyzeeländsk dollar + nyzeeländsk dollar + nyzeeländska dollar + NZ$ + + + omansk rial + omansk rial + omanska rial + + + panamansk balboa + panamansk balboa + panamanska balboa + + + peruansk inti + peruansk inti + peruanska intier + + + peruansk nuevo sol + peruansk sol nuevo + peruanska nuevo sol + + + peruansk sol (1863–1965) + peruansk sol (1863–1965) + peruanska sol (1863–1965) + + + papuansk kina + papuansk kina + papuanska kinor + + + filippinsk peso + filippinsk peso + filippinska pesos + + + pakistansk rupie + pakistansk rupie + pakistanska rupier + + + polsk zloty + polsk zloty + polska zloty + + + polsk zloty (1950–1995) + polsk zloty (1950–1995) + polska zloty (1950–1995) + + + portugisisk escudo + portugisisk escudo + portugisiska escudos + + + paraguayansk guarani + paraguayansk guarani + paraguayska guarani + + + qatarisk rial + qatarisk rial + qatariska rial + + + rhodesisk dollar + rhodesisk dollar + rhodesiska dollar + + + rumänsk leu (1952–2005) + rumänsk leu (1952–2005) + rumänska leu (1952–2005) + + + rumänsk leu + rumänsk leu + rumänska leu + + + serbisk dinar + serbisk dinar + serbiska dinarer + + + rysk rubel + rysk rubel + ryska rubel + + + rysk rubel (1991–1998) + rysk rubel (1991–1998) + ryska rubel (1991–1998) + + + rwandisk franc + rwandisk franc + rwandiska franc + + + saudisk riyal + saudisk riyal + saudiska riyal + + + Salomon-dollar + Salomon-dollar + Salomon-dollar + + + seychellisk rupie + seychellisk rupie + seychelliska rupier + + + sudansk dinar (1992–2007) + sudansk dinar (1992–2007) + sudanska dinarer (1992–2007) + + + sudanskt pund + sudanskt pund + sudanska pund + + + sudanskt pund (1916–1992) + sudanskt pund (1916–1992) + sudanska pund (1916–1992) + + + svensk krona + svensk krona + svenska kronor + kr + + + Singapore-dollar + Singapore-dollar + Singapore-dollar + + + S:t Helena-pund + S:t Helena-pund + S:t Helena-pund + + + slovensk tolar + slovensk tolar + slovenska tolar + + + slovakisk koruna + slovakisk krona + slovakiska korunor + + + sierraleonsk leone + sierraleonsk leone + sierraleonska leoner + + + somalisk shilling + somalisk shilling + somaliska shilling + + + Surinam-dollar + Surinam-dollar + Surinam-dollar + + + surinamesisk gulden + Surinam-gulden + Surinam-gulden + + + sydsudanskt pund + sydsudanskt pund + sydsudanska pund + + + São Tomé och Príncipe-dobra + São Tomé och Príncipe-dobra + São Tomé och Príncipe-dobror + + + sovjetisk rubel + sovjetisk rubel + sovjetiska rubler + + + salvadoransk colón + salvadoransk colón + salvadoranska colón + + + syriskt pund + syriskt pund + syriska pund + SY£ + + + swaziländsk lilangeni + swaziländsk lilangeni + swaziländska lilangeni + + + thailändsk baht + thailändsk baht + thailändska baht + TH฿ + + + tadzjikisk rubel + tadzjikisk rubel + tadzjikiska rubler + + + tadzjikisk somoni + tadzjikisk somoni + tadzjikiska somoni + + + turkmenistansk manat (1993–2009) + turkmenistansk manat (1993–2009) + turkmenistanska manat (1993–2009) + + + turkmenistansk manat + turkmenistansk manat + turkmenistanska manat + + + tunisisk dinar + tunisisk dinar + tunisiska dinarer + + + tongansk paʻanga + tongansk paʻanga + tonganska paʻanga + + + timoriansk escudo + östtimoresisk escudo + timorianska escudos + + + turkisk lire (1922–2005) + turkisk lire (1922–2005) + turkiska lire (1922–2005) + + + turkisk lire + turkisk lire + turkiska lire + + + Trinidad och Tobago-dollar + Trinidad och Tobago-dollar + Trinidad och Tobago-dollar + + + taiwanesisk ny dollar + Taiwan-dollar + taiwanesiska nya dollar + TW$ + + + tanzanisk shilling + tanzanisk shilling + tanzaniska shilling + + + ukrainsk hryvnia + ukrainsk hryvnia + ukrainska hryvnia + + + ukrainsk karbovanetz + ukrainsk karbovanetz (1992–1996) + ukrainska karbovanetz (1992–1996) + + + ugandisk shilling (1966–1987) + ugandisk shilling (1966–1987) + ugandiska shilling (1966–1987) + + + ugandisk shilling + ugandisk shilling + ugandiska shilling + + + US-dollar + US-dollar + US-dollar + US$ + + + US-dollar (nästa dag) + US-dollar (nästa dag) + US-dollar (nästa dag) + + + US-dollar (samma dag) + US-dollar (samma dag) + US-dollar (samma dag) + + + uruguayansk peso en unidades indexadas + uruguayansk peso en unidades indexadas + uruguayanska pesos en unidades indexadas + + + uruguayansk peso (1975–1993) + uruguayansk peso (1975–1993) + uruguayanska pesos (1975–1993) + + + uruguayansk peso + uruguayansk peso + uruguayanska pesos + + + uzbekisk sum + uzbekisk sum + uzbekiska sum + + + venezuelansk bolivar (1871–2008) + venezuelansk bolivar (1871–2008) + venezuelanska bolivar (1871–2008) + + + venezuelansk bolivar + venezuelansk bolivar + venezuelanska bolivar + + + vietnamesisk dong + vietnamesisk dong + vietnamesiska dong + VN₫ + + + vietnamesisk dong (1978–1985) + vietnamesisk dong (1978–1985) + vietnamesiska dong (1978–1985) + + + vanuatisk vatu + vanuatisk vatu + vanuatiska vatu + + + västsamoansk tala + västsamoansk tala + västsamoanska tala + + + centralafrikansk franc + centralafrikansk franc + centralafrikanska franc + + + silver + uns silver + silveruns + + + guld + uns guld + gulduns + + + europeisk kompositenhet + europeisk gammal kompositenhet + europeiska kompositenheter + + + europeisk monetär enhet + europeisk gammal monetär enhet + europeiska monetära enheter + + + europeisk kontoenhet (XBC) + europeisk gammal kontoenhet-9 + europeiska kontoenheter (XBC) + + + europeisk kontoenhet (XBD) + europeisk kontoenhet (XBD) + europeiska kontoenheter (XBD) + + + östkaribisk dollar + östkaribisk dollar + östkaribiska dollar + EC$ + + + IMF särskild dragningsrätt + IMF särskild dragningsrätt + IMF särskilda dragningsrätter + + + europeisk valutaenhet + europeisk valutaenhet + europeiska valutaenheter + + + fransk guldfranc + fransk guldfranc + franska guldfranc + + + French UIC-Franc + internationella järnvägsunionens franc + internationella järnvägsunionens franc + + + västafrikansk franc + västafrikansk franc + västafrikanska franc + + + palladium + uns palladium + palladium + + + CFP-franc + Stilla Havet-franc + Stilla Havet-franc + + + platina + uns platina + platina + + + RINET-fond + RINET-fond + RINET-fond + + + test-valutakod + (valutakod för teständamål) + test-valutakod + + + okänd eller ogiltig valuta + (okänd valutaenhet) + okänd eller ogiltig valuta + + + jemenitisk dinar + jemenitisk dinar + jemenitiska dinarer + + + jemenitisk rial + jemenitisk rial + jemenitiska rial + + + jugoslavisk dinar (1966–1990) + jugoslavisk dinar (1966–1990) + jugoslaviska dinarer (1966–1990) + + + jugoslavisk dinar (1994–2002) + jugoslavisk dinar (1994–2002) + jugoslaviska dinarer (1994–2002) + + + jugoslavisk dinar (1990–1992) + jugoslavisk dinar (1990–1992) + jugoslaviska dinarer (1990–1992) + + + jugoslavisk dinar (1992–1993) + jugoslavisk dinar (1992–1993) + jugoslaviska dinarer (1992–1993) + + + sydafrikansk rand (finansiell) + sydafrikansk rand (finansiell) + sydafrikanska rand (finansiella) + + + sydafrikansk rand + sydafrikansk rand + sydafrikanska rand + + + zambisk kwacha (1968–2012) + zambisk kwacha (1968–2012) + zambiska kwacha (1968–2012) + + + zambisk kwacha + zambisk kwacha + zambiska kwacha + + + zairisk ny zaire + zaïrisk ny zaïre + zaïriska nya zaïre + + + zairisk zaire + zaïrisk zaïre + zaïriska zaïre + + + Zimbabwe-dollar + Zimbabwe-dollar + Zimbabwe-dollar + + + Zimbabwe-dollar (2009) + Zimbabwe-dollar (2009) + Zimbabwe-dollar (2009) + + + Zimbabwe-dollar (2008) + Zimbabwe-dollar (2008) + Zimbabwe-dollar (2008) + + + + ⩾{0} + {0}‒{1} + + + + + + {0} per {1} + + + {0} gång Jordens gravitation + {0} gånger Jordens gravitation + + + {0} bågminut + {0} bågminuter + + + {0} bågsekund + {0} bågsekunder + + + {0} grad + {0} grader + + + {0} amerikanskt tunnland + {0} amerikanska tunnland + + + {0} hektar + {0} hektar + + + {0} kvadratfot + {0} kvadratfot + + + {0} kvadratkilometer + {0} kvadratkilometer + + + {0} kvadratmeter + {0} kvadratmeter + + + {0} engelsk kvadratmil + {0} engelska kvadratmil + + + {0} dygn + {0} dygn + + + {0} timme + {0} timmar + + + {0} millisekund + {0} millisekunder + + + {0} minut + {0} minuter + + + {0} månad + {0} månader + + + {0} sekund + {0} sekunder + + + {0} vecka + {0} veckor + + + {0} år + {0} år + + + {0} centimeter + {0} centimeter + + + {0} fot + {0} fot + + + {0} tum + {0} tum + + + {0} kilometer + {0} kilometer + + + {0} ljusår + {0} ljusår + + + {0} meter + {0} meter + + + {0} engelsk mil + {0} engelska mil + + + {0} millimeter + {0} millimeter + + + {0} pikometer + {0} pikometer + + + {0} engelsk yard + {0} engelska yard + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} uns + {0} uns + + + {0} skålpund + {0} skålpund + + + {0} hästkraft + {0} hästkrafter + + + {0} kilowatt + {0} kilowatt + + + {0} watt + {0} watt + + + {0} hektopascal + {0} hektopascal + + + {0} tum kvicksilver + {0} tum kvicksilver + + + {0} millibar + {0} millibar + + + {0} kilometer per timme + {0} kilometer per timme + + + {0} meter per sekund + {0} meter per sekund + + + {0} engelsk mil per timme + {0} engelska mil per timme + + + {0} grad Celsius + {0} grader Celsius + + + {0} grad Fahrenheit + {0} grader Fahrenheit + + + {0} kubikkilometer + {0} kubikkilometer + + + {0} engelsk kubikmil + {0} engelska kubikmil + + + {0} liter + {0} liter + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} kvadratfot + {0} kvadratfot + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} eng. kvadratmil + {0} eng. kvadratmil + + + {0} d + {0} d + + + {0} tim + {0} tim + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} mån + {0} mån + + + {0} s + {0} s + + + {0} v + {0} v + + + {0} år + {0} år + + + {0} cm + {0} cm + + + {0} fot + {0} fot + + + {0} tum + {0} tum + + + {0} km + {0} km + + + {0} ljusår + {0} ljusår + + + {0} m + {0} m + + + {0} engelsk mil + {0} engelska mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} engelsk yard + {0} engelska yard + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} uns + {0} uns + + + {0} skålpund + {0} skålpund + + + {0} hk + {0} hk + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} tum Hg + {0} tum Hg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0} °C + {0} °C + + + {0} °F + {0} °F + + + {0} km³ + {0} km³ + + + {0} eng. kubikmil + {0} eng. kubikmil + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0}ha + {0}ha + + + {0} fot² + {0} fot² + + + {0}km² + {0}km² + + + {0}m² + {0}m² + + + {0} mi² + {0} mi² + + + {0}d + {0}d + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0}m + {0}m + + + {0}s + {0}s + + + {0}v + {0}v + + + {0}å + {0}å + + + {0}cm + {0}cm + + + {0} fot + {0} fot + + + {0} tum + {0} tum + + + {0}km + {0}km + + + {0} ljusår + {0} ljusår + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0} uns + {0} uns + + + {0} skålpund + {0} skålpund + + + {0}hk + {0}hk + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0} tum Hg + {0} tum Hg + + + {0}mbar + {0}mbar + + + {0}km/h + {0}km/h + + + {0}m/s + {0}m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0} mi³ + {0} mi³ + + + {0}L + {0}L + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} och {1} + {0} och {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ja:j + nej:n + + + + diff --git a/library/Zend/Locale/Data/sv_AX.xml b/library/Zend/Locale/Data/sv_AX.xml new file mode 100755 index 000000000..666b3b563 --- /dev/null +++ b/library/Zend/Locale/Data/sv_AX.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sv_FI.xml b/library/Zend/Locale/Data/sv_FI.xml new file mode 100755 index 000000000..226d7929a --- /dev/null +++ b/library/Zend/Locale/Data/sv_FI.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + azerbajdzjanska + mari + fiji + hausa + igbo + khmer + kashmiri + kirgiziska + lao + bokmål + panjabi + pashto + telugu + thai + tigrinska + okänt språk + + + + + + + + Sydöstasien + Saint-Barthélemy + Bonaire, S:t Eustatius och Saba + Demokratiska republiken Kongo + Kongo + Förenade kungariket + Saint Kitts och Nevis + Saint Lucia + S:t Martin (franska delen) + Burma + Saint Pierre och Miquelon + Pitcairn + Palestinska området + Nordsudan + Saint Helena + Sint Martin + Tokelauöarna + Förenta staterna + Vatikanen + Saint Vincent och Grenadinerna + Wallis- och Futuna + + + 1996 års stavning + + + tidszon + + + kinesiska i big5-sorteringsordning + buddhistisk kalender + kinesiska i gb2312-sorteringsordning + kinesiska i pinyin-sorteringsordning + kinesiska i strecksorteringsordning + traditionell sorteringsordning + + + engelska enheter (UK) + engelska enheter (USA) + + + + [a à b c d e é f g h i j k l m n o p q r s t u v x y z å ä ö] + [ã ç ë í ñ ó š ÿ ü ž] + + + + + + + före Kristus + före vår tideräkning + efter Kristus + vår tideräkning + + + + + + EEEE'en' 'den' d:'e' MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd-MM-y + + + + + + + + era + + + år + + + månad + + + vecka + + + dag + + + veckodag + + + dagsperiod + + + minut + + + sekund + + + tidszon + + + + +H:mm;−H:mm + tidszon: {0} + + (okänd tidszon) + + + + + + + {0} grad Celsius + {0} grader Celsius + + + + + {0} km/h + {0} km/h + + + + + + {0}, {1} + {0}, {1} + {0} och {1} + {0} och {1} + + + {0}, {1} + {0}, {1} + {0} och {1} + {0} och {1} + + + + diff --git a/library/Zend/Locale/Data/sv_SE.xml b/library/Zend/Locale/Data/sv_SE.xml new file mode 100755 index 000000000..345e8291a --- /dev/null +++ b/library/Zend/Locale/Data/sv_SE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sw.xml b/library/Zend/Locale/Data/sw.xml new file mode 100755 index 000000000..92f8a5eb7 --- /dev/null +++ b/library/Zend/Locale/Data/sw.xml @@ -0,0 +1,3678 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Kiabkhazi + Kiakoli + Kiafrikana + Kiakani + Kiamhari + Kiingereza cha Kale + Kiarabu + Kiaramu + Kiassam + Kipare + Aimara + Kiazabajani + Kiazeri + Kibasaa + Kibamun + Kighomala + Kibelarusi + Kibeja + Kibemba + Kibena + Kibafut + Kibulgaria + Kikom + Kibambara + Kibangla + Kitibeti + Kibretoni + Kibosnia + Kibulu + Kimedumba + Kikatalani + Kicherokee + Kisorani Kikurdi + Kikosikani + Kikhufti + Kicheki + Kiwelisi + Kidenmaki + Kijerumani + Kijerumani cha Austria + Kijerumani cha Juu cha Uswisi + Kiduala + Kidivehi + Kijula + Kizongkha + Kiembu + Kiwe + Kiefiki + Kimisri + Kiekajuk + Kigiriki + Kiingereza + Kiingereza cha Australia + Kiingereza cha Kanada + Kiingereza cha Uingereza + Kiingereza cha Marekani + Kiesperanto + Kihispania + Kihispania cha Amerika ya Kilatinini + Kihispania cha Ulaya + Kihispania cha Meksiko + Kiestonia + Kibasque + Kiewondo + Kiajemi + Kifulfulde + Kifinlandi + Kifilipino + Kifiji + Kifaroe + Kifon + Kifaransa + Kifaransa cha Kanada + Kifaransa cha Uswisi + Kifaransa cha Kale + Kifrisia cha Kaskazini + Kifrisia cha Mashariki + Kifrisia cha Magharibi + Kiayalandi + Kiga + Kigbaya + Kigaeli cha Uskoti + Kige'ez + Kigalisia + Kiguarani + Kiyunani + Kijerumani cha Uswisi + Kigujarati + Kisii + Kihausa + Kihawai + Kiebrania + Kihindi + Kroeshia + Kihaiti + Kihungari + Kiarmenia + Kiherero + Kiintalingua + Kiibibio + Kiindonesia + lugha ya kisayansi + Kiigbo + Kiaisilandi + Kiitaliano + Kijapani + Kimachame + Kijava + Kijojia + Kikabylia + Kikamba + Kikanembu + Kimakonde + Kikongo + Kikikuyu + Kikwanyama + Kikazaki + Kikako + Kikambodia + Kimbundu + Kikannada + Kikorea + Kikanuri + Kikashmiri + Kisambaa + Kibafia + Kikurdi + Kirigizi + Kilatini + Kirangi + Kilasembagi + Kiganda + Kilingala + Kilaosi + Kimongo + Kilozi + Kilithuania + Kiluba-Katanga + Kiluba-Lulua + Kilunda + Kijaluo + Kilatvia + Kimafa + Kimaa + Kimaba + Kimende + Kimoriseni + Malagasi + Kimakhuwa-Meetto + Kimaori + Kimasedonia + Kimalayalam + Mongolia + Kimoore + Kimarathi + Kimalesia + Kimalta + Lugha Nyingi + Kiburma + Kibokmal cha Norwe + Kindebele cha Kaskazini + Kinepali + Kindonga + Kiholanzi + Kiflemi + Kikwasio + Kinorwe Kipya + Kinorwe + Kindebele + Kisotho cha Kaskazini + Kinyanja + Kinyamwezi + Kinyankole + Kinyoro + Kinzema + Kiokitani + Kioromo + Kioriya + Kiosetia + Kipunjabi + Kiajemi cha Kale + Kipolandi + Kipashto + Kipushto + Kireno + Kireno cha Brazil + Kireno cha Ulaya + Kiquechua + Kirapanui + Kiraratonga + Kiromanshi + Kirundi + Kiromania + Kirombo + Kirusi + Kinyarwanda + Kirwo + Kisanskriti + Kisandawe + Kiaramu cha Wasamaria + Kisamburu + Kisangu + Kisindhi + Kisami cha Kaskazini + Kisena + Kisango + Kiserbia-kroeshia + Kiarabu cha Chadi + Kisinhala + Kislovakia + Kislovenia + Kisamoa + Kisami cha Kusini + Kishona + Kisoninke + Kisomali + Kialbania + Kiserbia + Kiswati + Kisaho + Kisotho cha Kusini + Kisunda + Kisukuma + Kisusu + Kiswidi + Kiswahili + Shikomor + Kingwana + Kitamil + Kitelugu + Kitemne + Kiteso + Kitetum + Tajiki + Kitailandi + Kitigrinya + Kiturukimeni + Kiklingoni + Kitswana + Tonga + Kitokpisin + Kituruki + Kitsonga + Kitatari + Kitumbuka + Kitwi + Kitahiti + Kiuiguri + Kiukrania + Lugha Isiyojulikana + Kiurdu + Kiuzbeki + Kivai + Kivenda + Kivietinamu + Kiwolofu + Kixhosa + Kiyemba + Kiyidi + Kiyoruba + Tamaziti Msingi ya Kimoroko + Kichina + Kichina Rahisi + Kichina cha Jadi + Kizulu + Hakuna maudhui ya lugha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dunia + Afrika + Amerika Kaskazini + Amerika Kusini + Oceania + Afrika ya Magharibi + Amerika ya Kati + Afrika ya Mashariki + Afrika ya Kaskazini + Afrika ya Kati + Afrika ya Kusini + Amerika + Amerika ya Kaskazini + Karibi + Asia Mashariki + Asia ya Kusini + Asia ya Kusini Mashariki + Ulaya ya Kusini + Australasia + Melanesia + Eneo la Mikronesia + Polynesia + Asia + Asia ya Kati + Asia ya Magharibi + Ulaya + Ulaya ya Mashariki + Ulaya ya Kaskazini + Ulaya ya Magharibi + Amerika ya Kilatini + Kisiwa cha Ascension + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Antaktika + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Visiwa vya Alandi + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Santabathelemi + Bermuda + Brunei + Bolivia + Uholanzi ya Karibiani + Brazili + Bahama + Butani + Kisiwa cha Bouvet + Botswana + Belarusi + Belize + Kanada + Visiwa vya Cocos (Keeling) + Jamhuri ya Kidemokrasia ya Kongo + Kongo (Jamhuri ya Kidemokrasia) + Jamhuri ya Afrika ya Kati + Kongo - Brazzaville + Kongo (Jamhuri ya) + Uswisi + Côte d’Ivoire + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kisiwa cha Clipperton + Kostarika + Kuba + Kepuvede + Kurakao + Kisiwa cha Krismasi + Kuprosi + Jamhuri ya Cheki + Ujerumani + Diego Garcia + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ceuta na Melilla + Ekwado + Estonia + Misri + Sahara Magharibi + Eritrea + Hispania + Uhabeshi + Umoja wa Ulaya + Ufini + Fiji + Visiwa vya Falkland + Visiwa vya Falkland (Islas Malvinas) + Mikronesia + Visiwa vya Faroe + Ufaransa + Gaboni + Uingereza + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Guernsey + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Jojia Kusini na Visiwa vya Sandwich Kusini + Gwatemala + Gwam + Ginebisau + Guyana + Hong Kong SAR China + Hong Kong + Kisiwa cha Heard na Visiwa vya McDonald + Hondurasi + Korasia + Haiti + Hungaria + Visiwa vya Kanari + Indonesia + Ayalandi + Israeli + Isle of Man + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jersey + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Montenegro + Saint Martin + Bukini + Visiwa vya Marshal + Masedonia + Masedonia (FYROM) + Mali + Myanmar (Burma) + Mongolia + Macau SAR China + Macau + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nigeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Maeneo ya Palestina + Palestina + Ureno + Palau + Paragwai + Katari + Oceania ya Nje + Riyunioni + Romania + Serbia + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Svalbard na Jan Mayen + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sudani Kusini + São Tomé na Príncipe + Elsavado + Santamatini + Siria + Uswazi + Tristan da Cunha + Visiwa vya Turki na Kaiko + Chadi + Maeneo ya Kusini ya Ufaransa + Togo + Tailandi + Tajikistani + Tokelau + Timor ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Visiwa Vidogo vya Nje vya Marekani + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Kosovo + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + Eneo lisilojulikana + + + Kalenda + Puuza Upangaji Alama + Upangaji Uliogeuzwa wa Kiinitoni + Upangaji wa Herufi kubwa/Herufi ndogo + Upangaji Unaoathiriwa na Herufi + Upangaji wa Kana + Utaratibu wa Kupanga + Upangaji wa Kawaida + Upangaji wa Namba + Nguvu ya Upangaji + Fedha + Nambari + Ukanda Saa + Tofauti ya Mandhari + Panga Kama Alama + Matumizi ya Kibinafsi + + + Nambari za Kiarabu/Kihindi + Nambari za Kiarabu/Kihindi Zilizopanuliwa + Nambari za Kiarmenia + Nambari Ndogo za Kiamenia + Nambari za Kibengali + Mpangilio wa Kichina cha Jadi - Big5 + Kalenda ya Kibuddha + Nambari za Kichami + Kalenda ya Kichina + Kalenda ya Koptiki + Nambari za Kidevanagari + Mpangilio wa Kamusi + Mpangilio wa Chaguo-Msingi wa Unicode + Nambari za Kiethiopia + Kalenda ya Kiethiopia + Kalenda ya Kiethiopia ya Amete Alem + Tarakimu za Kifedha + Nambari za Upana Kamili + Mpangilio wa Kichina Rahisi - GB2312 + Nambari za Georgia + Kalenda ya Kigregori + Nambari za Kigiriki + Nambari Ndogo za Kigiriki + Nambari za Kigujarati + Nambari za Kigurumukhi + Nambari za Desimali za Kichina + Nambari za Kichina Rahisi + Nambari za Kifedha za Kichina Rahisi + Nambari za Kichina cha Jadi + Nambari za Kichina za Fedha + Nambari za Kihebrania + Kalenda ya Kihebrania + Panga Zote + Kalenda ya Taifa ya India + Kalenda ya Kiislamu + Kalenda ya Kiislamu/Rasmi + Kalenda ya ISO-8601 + Kalenda ya Kijapani + Nambari za Kijava + Nambari za Kijapani + Nambari za Kifedha za Kijapani + Nambari za Kikhmeri + Nambari za Kikannada + Nambari za Kilao + Nambari za Magharibi + Nambari za Kilimbu + Panga Herufi ndogo Kwanza + Nambari za Kimalayamu + Nambari za Kimongolia + Nambari za Myama + Digiti Asili + Panga Viinitoni kwa Kawaida + Panga Utaratibu wa Herufi ya Kawaida + Panga Isiyoathiriwa na Herufi + Panga Kana Kando + Panga Bila Ukawaida + Panga Tarakimu Kivyake + Panga Alama + Nambari za Kioriya + Kalenda ya Kiajemi + Mpangilio wa Orodha za Nambari za Simu + Utaratibu wa Kupanga Fonetiki + Mpangilio wa Kipinyin + Panga Herufi Msingi Tu + Panga Viinitoni/Herufi/Upana/Kana + Mpangilio Uliorekebishwa + Kalenda ya Minguo + Nambari za Kirumi + Nambari Ndogo za Kirumi + Utafutaji wa Kijumla + Tafuta kwa Konsonanti Halisi ya Hangul + Panga Viinitoni + Panga Alama za Kupuuza + Mpangilio wa Mikwaju + Nambari za Kitakri + Nambari za Kitamili + Nambari za Kitamili + Nambari za Kitelugu + Panga Viinitoni/Herufi/Upana + Nambari za Kitai + Nambari za Kitibeti + Mpangilio wa Kawaida + Tarakimu za Jadi + Mpangilio wa Mikwaju ya Shina + Panga Herufi kubwa Kwanza + Dijiti za Vai + Panga Viinitoni Kumegeuzwa + Panga kwa Inayoathiriwa na Herufi + Panga Kana Kitofauti + Upangaji Msimbosare Umekawaidishwa + Panga Dijiti kwa Namba + + + BGN + Ya Nambari + Sauti + UNGEGN + Rangi za Kuangaza + Upana kamili + Nusu upana + Kijamo + Kipinyin + Inachapishwa + + + Mfumo wa Mita + Uingereza + Marekani + + + {0} + {0} + {0} + + + + [a b {ch} d e f g h i j k l m n o p r s t u v w y z] + [c q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM y G + d MMM y G + E, d MMM y G + HH + h:mm a + HH:mm + HH:mm:ss + L + d-M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y G + y G + M/y G + d/M/y G + E, d/M/y G + MMM y G + d MMM y G + E, d MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d - d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm – h:mm a + + + HH:mm - HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + HH:mm – HH:mm v + HH:mm - HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M - M + + + d/M - d/M + d/M - d/M + + + E, d/M - E, d/M + E, d/M - E, d/M + + + MMM - MMM + + + d - d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y - y G + + + M/y - M/y G + M/y - M/y G + + + d/M/y - d/M/y G + d/M/y - d/M/y G + d/M/y - d/M/y G + + + E, d/M/y - E, d/M/y G + E, d/M/y - E, d/M/y G + E, d/M/y - E, d/M/y G + + + MMM - MMM y G + MMM y - MMM y G + + + d - d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E, d MMM - E, d MMM y G + E, d MMM - E, d MMM y + E, d MMM y - E, d MMM y + + + MMMM-MMMM y G + MMMM y – MMMM y G + + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Des + + + Januari + Februari + Machi + Aprili + Mei + Juni + Julai + Agosti + Septemba + Oktoba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Jumapili + Jumatatu + Jumanne + Jumatano + Alhamisi + Ijumaa + Jumamosi + + + Jumapili + Jumatatu + Jumanne + Jumatano + Alhamisi + Ijumaa + Jumamosi + + + Jumapili + Jumatatu + Jumanne + Jumatano + Alhamisi + Ijumaa + Jumamosi + + + + + 2 + 3 + 4 + 5 + A + I + 1 + + + Jumapili + Jumatatu + Jumanne + Jumatano + Alhamisi + Ijumaa + Jumamosi + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + + + + + AM + PM + + + + + + Kabla ya Kristo + Baada ya Kristo + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d-M + E, d/M + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MMM y + d MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d - d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm – h:mm a + + + HH:mm - HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + HH:mm – HH:mm v + HH:mm - HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M - M + + + d/M - d/M + d/M - d/M + + + E, d/M - E, d/M + E, d/M - E, d/M + + + MMM - MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d- E, MMM d + E, MMM d- E, MMM d + + + y - y + + + M/y - M/y + M/y - M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + + + MMM - MMM y + MMM y - MMM y + + + MMM d - d, y + MMM d - d, y + MMM d y - MMM d y + + + E, MMM d - E, MMM d y + E, MMM d- E, MMM d y + E, MMM d y - E, MMM d y + + + MMMM-MMMM y + MMMM y – MMMM y + + + + + + + + Enzi + + + Mwaka + mwaka uliopita + mwaka huu + mwaka ujao + + Baada ya mwaka {0} + Baada ya miaka {0} + + + Mwaka {0} uliopita + Miaka {0} iliyopita + + + + Mwezi + mwezi uliopita + mwezi huu + mwezi ujao + + Baada ya mwezi {0} + Baada ya miezi {0} + + + Miezi {0} iliyopita + Miezi {0} iliyopita + + + + Wiki + wiki iliyopita + wiki hii + wiki ijayo + + Baada ya wiki {0} + Baada ya wiki {0} + + + Wiki {0} iliyopita + Wiki {0} zilizopita + + + + Siku + juzi + jana + leo + kesho + kesho kutwa + + Baada ya siku {0} + Baada ya siku {0} + + + Siku {0} iliyopita + Siku {0} zilizopita + + + + Siku ya wiki + + + Jumapili iliyopita + Jumapili hii + Jumapili ijayo + + + Jumatatu iliyopita + Jumatatu hii + Jumatatu ijayo + + + Jumanne iliyopita + Jumanne hii + Jumanne ijayo + + + Jumatano iliyopita + Jumatano hii + Jumatano ijayo + + + Alhamisi iliyopita + Alhamisi hii + Alhamisi ijayo + + + Ijumaa iliyopita + Ijumaa hii + Ijumaa ijayo + + + Jumamosi iliyopita + Jumamosi hii + Jumamosi ijayo + + + Muda wa siku + + + Saa + + Baada ya saa {0} + Baada ya saa {0} + + + Saa {0} iliyopita + Saa {0} zilizopita + + + + Dakika + + Baada ya dakika {0} + Baada ya dakika {0} + + + Dakika {0} iliyopita + Dakika {0} zilizopita + + + + Sekunde + sasa + + Baada ya sekunde {0} + Baada ya sekunde {0} + + + Sekunde {0} iliyopita + Sekunde {0} zilizopita + + + + Majira ya saa + + + + +HH:mm;-HH:mm + GMT {0} + GMT + Saa za {0} + Saa za Mchana za {0} + Saa za Msingi za {0} + {1} ({0}) + + Jiji Lisilojulikana + + + Dumont d’Urville + + + Saint Barthélemy + + + Atikokan + + + St. John’s + + + Kosta Rika + + + Kepuvede + + + Kurakao + + + Krismasi + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + Muda wa Majira ya Joto wa Uingereza + + + + Nuuk + + + Ittoqqortoormiit + + + + Muda wa Majira ya Joto wa Ayalandi + + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Jiji la Meksiko + + + Kathmandu + + + St. Helena + + + Lower Prince's Quarter + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + + Saa ya Afghanistani + + + + + Saa ya Afrika ya Kati + + + + + Saa ya Afrika Mashariki + + + + + Saa Wastani ya Afrika Kusini + + + + + Saa ya Afrika Magharibi + Saa Wastani ya Afrika Magharibi + Saa ya Majira ya joto ya Afrika Magharibi + + + + + Saa za Alaska + Saa Wastani za Alaska + Saa za Mchana za Alaska + + + + + Saa za Amazon + Saa ya Wastani ya Amazon + Saa ya Majira ya joto ya Amazon + + + + + Saa za Kati + Saa za Wastani za Kati + Saa za Mchana za Kati + + + + + Saa za Mashariki + Saa za Wastani za Mashariki + Saa za Mchana za Mashariki + + + + + Saa za Mountain + Saa za Wastani za Mountain + Saa za Mchana za Mountain + + + + + Saa za Pasifiki + Saa za Wastani za Pasifiki + Saa za Mchana za Pasifiki + + + + + Saa za Anadyr + Saa za Wastani za Anadyr + Saa za Kiangazi za Anadyr + + + + + Saa ya Uarabu + Saa Wastani ya Uarabu + Saa ya Mchana ya Arabia + + + + + Saa za Ajentina + Muda Wastani wa Ajentina + Saa za Kiangazi za Ajentina + + + + + Muda wa Ajentina ya Magharibi + Muda Wastani wa Ajentina ya Magharibi + Muda wa Majira ya joto ya Magharibi ya Ajentina + + + + + Saa ya Armenia + Saa Wastani ya Armenia + Saa ya Majira ya joto ya Armenia + + + + + Saa za Atlantiki + Saa za Wastani za Atlantiki + Saa za Mchana za Atlantiki + + + + + Saa za Australia ya Kati + Saa za Wastani za Australia ya Kati + Saa za Mchana za Australia ya Kati + + + + + Saa za Magharibi ya Kati ya Australia + Saa za Wastani za Magharibi ya Kati ya Australia + Saa za Mchana za Magharibi ya Kati ya Australia + + + + + Saa za Australia Mashariki + Saa Wastani za Mashariki mwa Australia + Saa za Mchana za Mashariki mwa Australia + + + + + Saa za Australia Magharibi + Saa za Wastani za Australia Magharibi + Saa za Mchana za Australia Magharibi + + + + + Saa ya Azeribaijani + Saa Wastani ya Azeribaijani + Saa ya Majira ya joto ya Azeribaijani + + + + + Saa ya Azorena + Saa Wastani ya Azorena + Saa ya Majira ya joto ya Azorerna + + + + + Saa ya Bangladeshi + Saa Wastani ya Bangladeshi + Saa ya Majira ya joto ya Bangladeshi + + + + + Saa ya Bhutan + + + + + Saa ya Bolivia + + + + + Saa za Brasilia + Muda Wastani wa Brasilia + Saa za Kiangazi za Brasilia + + + + + Saa ya Brunei Darussalam + + + + + Saa ya Cape Verde + Saa Wastani ya Cape Verde + Saa ya Majira ya joto ya Cape Verde + + + + + Saa Wastani ya Chamorro + + + + + Saa ya Chatham + Saa Wastani ya Chatham + Saa ya Mchana ya Chatham + + + + + Saa ya Chile + Saa Wastani ya Chile + Saa ya Majira ya joto ya Chile + + + + + Saa ya Uchina + Saa Wastani ya Uchina + Saa ya Mchana ya China + + + + + Saa za Choibalsan + Muda Wastani wa Choibalsan + Saa za Kiangazi za Choibalsan + + + + + Saa ya Kisiwa cha Krisimasi + + + + + Saa ya Visiwa vya Cocos + + + + + Saa ya Kolombia + Saa Wastani ya Kolombia + Saa ya Majira ya joto ya Kolombia + + + + + Saa ya Visiwa vya Cook + Saa Wastani ya Visiwa vya Cook + Saa Majira nusu ya joto ya Visiwa Cook + + + + + Saa ya Kuba + Saa Wastani ya Kuba + Saa ya Mchana ya Kuba + + + + + Saa ya Davis + + + + + Saa ya Dumont-d'Urville + + + + + Saa ya Timor Mashariki + + + + + Saa ya Kisiwa cha Pasaka + Saa Wastani ya Kisiwa cha Pasaka + Saa ya Majira ya joto ya Kisiwa cha Pasaka + + + + + Saa ya Ekwado + + + + + Saa ya Ulaya ya Kati + Saa Wastani ya Ulaya ya kati + Saa ya Majira ya joto ya Ulaya ya Kati + + + + + Saa ya Mashariki mwa Ulaya + Saa Wastani ya Mashariki mwa Ulaya + Saa ya Majira ya joto ya Mashariki mwa Ulaya + + + + + Saa ya Magharibi mwa Ulaya + Saa ya Wastani ya Magharibi mwa Ulaya + Saa ya Majira ya joto ya Magharibi mwa Ulaya + + + + + Saa ya Visiwa vya Falkland + Saa Wastani ya Visiwa vya Falkland + Saa ya Majira ya joto ya Visiwa vya Falkland + + + + + Saa Fiji + Saa Wastani ya Fiji + Saa ya Majira ya joto ya Fiji + + + + + Saa ya Guiana ya Ufaransa + + + + + Saa ya Kusini mwa Ufaransa na Antaktiki + + + + + Saa ya Galapagos + + + + + Saa ya Gambia + + + + + Saa ya Jojia + Saa Wastani ya Jojia + Saa ya Majira ya joto ya Jojia + + + + + Saa ya Visiwa vya Gilbert + + + + + Saa ya Ulimwenguni + + + + + Saa ya Grinilandi Mashariki + Saa Wastani ya Grinilandi Mashariki + Saa ya Majira ya joto ya Grinilandi Mashariki + + + + + Saa ya Grinilandi Magharibi + Saa Wastani wa Grinilandi Magharibi + Saa ya Majira ya joto ya Grinilandi Magharibi + + + + + Saa Wastani ya Ghuba + + + + + Saa ya Guyana + + + + + Muda wa Hawaii-Aleutian + Saa Wastani ya Hawaii-Aleutian + Saa ya Mchana ya Hawaii-Aleutian + + + + + Saa ya Hong Kong + Saa Wastani ya Hong Kong + Saa ya Majira ya joto ya Hong Kong + + + + + Saa za Hovd + Muda Wastani wa Hovd + Saa za Kiangazi za Hovd + + + + + Saa wa Wastani ya India + + + + + Saa ya Bahari Hindi + + + + + Saa ya Indochina + + + + + Saa ya Indonesia ya Kati + + + + + Saa ya Mashariki mwa Indonesia + + + + + Saa ya Magharibi mwa Indonesia + + + + + Saa ya Iran + Saa Wastani ya Iran + Saa ya Mchana ya Iran + + + + + Saa za Irkutsk + Muda Wastani wa Irkutsk + Saa za Kiangazi za Irkutsk + + + + + Saa ya Israeli + Saa Wastani ya Israeli + Saa ya Mchana ya Israeli + + + + + Saa ya Japani + Saa Wastani ya Japani + Saa ya Mchana ya Japani + + + + + Saa za Petropavlovsk-Kamchatski + Saa za Wastani za Petropavlovsk-Kamchatski + Saa za Kiangazi za Petropavlovsk-Kamchatski + + + + + Muda wa Kazakistani ya Mashariki + + + + + Muda wa Kazakistani ya Magharibi + + + + + Saa ya Korea + Saa Wastani ya Korea + Saa ya Mchana ya Korea + + + + + Saa ya Kosrae + + + + + Saa za Krasnoyarsk + Muda Wastani wa Krasnoyaski + Saa za Kiangazi za Krasnoyarsk + + + + + Saa ya Kyrgystan + + + + + Saa ya Visiwa vya Laini + + + + + Saa za Lord Howe + Saa za Wastani za Lord Howe + Saa za Mchana za Lord Howe + + + + + Saa ya Makwuarie + + + + + Saa za Magadan + Muda Wastani wa Magadani + Saa za Kiangazi za Magadan + + + + + Saa ya Malaysia + + + + + Saa ya Maldives + + + + + Saa ya Makuesas + + + + + Saa ya Visiwa vya Marshall + + + + + Saa ya Mauritius + Saa Wastani ya Mauritius + Saa ya Majira ya joto ya Mauritius + + + + + Saa ya Mawson + + + + + Muda wa Ulan Bator + Muda Wastani wa Ulan Bator + Saa za Kiangazi za Ulan Bator + + + + + Saa za Moscow + Saa za Wastani za Moscow + Saa za Kiangazi za Moscow + + + + + Saa ya Myanmar + + + + + Saa ya Nauru + + + + + Saa ya Nepali + + + + + Saa ya Kaledonia Mpya + Saa Wastani ya Kaledonia Mpya + Saa ya Majira ya joto ya Kaledonia Mpya + + + + + Saa ya Nyuzilandi + Saa Wastani ya Nyuzilandi + Saa ya Mchana ya Nyuzilandi + + + + + Saa za Newfoundland + Saa za Wastani za Newfoundland + Saa za Mchana za Newfoundland + + + + + Saa ya Niue + + + + + Saa ya Visiwa vya Norfolk + + + + + Muda wa Fernando de Noronha + Muda Wastani wa Fernando de Noronha + Saa za Kiangazi za Fernando de Noronha + + + + + Saa za Novosibirsk + Muda Wastani wa Novosibirsk + Saa za Kiangazi za Novosibirsk + + + + + Saa za Omsk + Muda Wastani wa Omsk + Saa za Kiangazi za Omsk + + + + + Saa ya Pakistani + Saa Wastani ya Pakistani + Saa ya Majira ya joto ya Pakistani + + + + + Saa ya Palau + + + + + Saa ya Papua Gini Mpya + + + + + Saa ya Paraguayi + Saa Wastani ya Paraguayi + Saa ya Majira ya joto ya Paraguayi + + + + + Saa ya Peru + Saa Wastani ya Peru + Saa ya Majira ya joto ya Peru + + + + + Saa ya Ufilipino + Saa Wastani ya Ufilipino + Saa ya Majira ya joto ya Ufilipino + + + + + Saa ya Visiwa vya Foneksi + + + + + Saa ya Saint-Pierre na Mikuelon + Saa Wastani ya Saint-Pierre na Mikuelon + Saa ya Mchana ya Saint-Pierre na Mikuelon + + + + + Saa ya Pitcairn + + + + + Saa ya Ponape + + + + + Saa ya Muungano mpya + + + + + Saa ya Rothera + + + + + Saa za Sakhalin + Muda Wastani wa Sakhalin + Saa za Kiangazi za Sakhalin + + + + + Saa za Samara + Saa za Wastani za Samara + Saa za Kiangazi za Samara + + + + + Saa ya Samoa + Saa Wastani ya Samoa + Saa ya Majira ya joto ya Samoa + + + + + Saa ya Ushelisheli + + + + + Saa Wastani ya Singapuri + + + + + Saa ya Visiwa vya Suleimani + + + + + Saa ya Jojia Kusini + + + + + Saa ya Surinam + + + + + Saa ya Syowa + + + + + Saa ya Tahiti + + + + + Saa ya Taipei + Saa Wastani ya Taipei + Saa ya Mchana ya Taipei + + + + + Saa ya Tajikistani + + + + + Saa ya Tokelau + + + + + Saa ya Tonga + Saa Wastani ya Tonga + Saa ya Majira ya joto ya Tonga + + + + + Saa ya Chuuk + + + + + Saa ya Turukimenistani + Saa Wastani ya Turukimenistani + Saa ya Majira ya joto ya Turukimenistani + + + + + Saa ya Tuvalu + + + + + Saa ya Urugwai + Saa Wastani ya Urugwai + Saa ya Majira ya joto ya Urugwai + + + + + Saa ya Uzbekistani + Saa Wastani ya Uzbekistani + Saa ya Majira ya joto ya Uzbekistani + + + + + Saa ya Vanuatu + Saa Wastani ya Vanuatu + Saa ya Majira ya joto ya Vanuatu + + + + + Saa ya Venezuela + + + + + Saa za Vladivostok + Muda Wastani wa Vladivostok + Saa za Kiangazi za Vladivostok + + + + + Saa za Volgograd + Muda Wastani wa Volgograd + Saa za Kiangazi za Volgograd + + + + + Saa ya Vostok + + + + + Saa ya Kisiwa cha Wake + + + + + Saa ya Wallis na Futuna + + + + + Saa za Yakutsk + Muda Wastani wa Yakutsk + Saa za Kiangazi za Yakutsk + + + + + Saa za Yekaterinburg + Muda Wastani wa Yekaterinburg + Saa za Kiangazi za Yekaterinburg + + + + + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + Elfu 0 + Elfu 0 + Elfu 00 + Elfu 00 + Elfu 000 + Elfu 000 + Milioni 0 + Milioni 0 + Milioni 00 + Milioni 00 + Milioni 000 + Milioni 000 + Bilioni 0 + Bilioni 0 + Bilioni 00 + Bilioni 00 + Bilioni 000 + Bilioni 000 + Trilioni 0 + Trilioni 0 + Trilioni 00 + Trilioni 00 + Trilioni 000 + Trilioni 000 + + + + + elfu 0 + elfu 0 + elfu 00 + elfu 00 + laki0 + laki0 + M0 + M0 + M00 + M00 + M000 + M000 + B0 + B0 + B00 + B00 + B000 + B000 + T0 + T0 + T00 + T00 + T000 + T000 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + dirham ya Falme za Kiarabu + + + Afghani ya Afuganistani + + + Lek ya Albania + + + Dram ya Armenia + + + Guilder ya Antili za Kiholanzi + + + kwanza ya Angola + + + Peso ya Ajentina + + + dola ya Australia + A$ + + + Florin ya Aruba + + + Manat ya Azebaijan + + + Mark ya Bosnia na Hezegovina Inayoweza Kubadilishwa + + + Dola ya Barbados + + + Taka ya Bangladesh + + + Lev ya Bulgaria + + + dinari ya Bahareni + + + faranga ya Burundi + + + Dola ya Bermuda + Dola ya Bermuda + Dola ya Bermuda + + + Dola ya Brunei + + + Boliviano ya Bolivia + + + Real ya Brazil + R$ + + + Dola ya Bahamas + + + Ngultrum ya Bhutan + + + pula ya Botswana + + + Ruble ya Belarusi + + + Dola ya Belize + + + dola ya Kanada + CA$ + + + faranga ya Kongo + + + faranga ya Uswisi + + + Peso ya Chile + + + yuan Renminbi ya China + CN¥ + + + Peso ya Kolombia + + + Colon ya Kostarika + + + Peso ya Cuba Inayoweza Kubadilishwa + + + Peso ya Cuba + + + eskudo ya Kepuvede + + + Koruna ya Jamhuri ya Cheki + + + faranga ya Jibuti + + + Krone ya Denmaki + + + Peso ya Dominika + + + dinari ya Aljeria + + + pauni ya Misri + + + nakfa ya Eritrea + + + bir ya Uhabeshi + + + yuro + + + + Dola ya Fiji + + + Pauni ya Visiwa vya Falkland + + + pauni ya Uingereza + £ + + + Lari ya Georgia + + + sedi ya Ghana + + + Cedi ya Ghana + + + Pauni ya Gibraltar + + + dalasi ya Gambia + + + Franc ya Guinea + + + faranga ya Gine + + + Quetzal ya Guatemala + + + Dola ya Guyana + + + Dola ya Hong Kong + HK$ + + + Lempira ya Hondurasi + + + Kuna ya Kroeshia + + + Gourde ya Haiti + + + Forint ya Hangaria + + + Rupiah ya Indonesia + + + Sheqel Mpya ya Israeli + + + + rupia ya India + + + + Dinari ya Irak + + + Rial ya Iran + + + Krona ya Isilandi + + + Dola ya Jamaica + + + Dinar ya Yordani + + + sarafu ya Kijapani + JP¥ + + + shilingi ya Kenya + Ksh + + + Som ya Kirigistani + + + Riel ya Kambodia + + + faranga ya Komoro + + + Won ya Korea Kaskazini + + + Won ya Korea Kusini + + + + Dinar ya Kuwait + + + Dola ya Visiwa vya Cayman + + + Tenge ya Kazakistani + + + Kip ya Laosi + + + Pauni ya Lebanon + + + Rupee ya Sri Lanka + + + dola ya Liberia + + + loti ya Lesoto + + + Litas ya Lithuania + + + Lats ya Lativia + + + dinari ya Libya + + + dirham ya Moroko + + + Leu ya Moldova + + + faranga ya Bukini + + + Denar ya Masedonia + + + Kyat ya Myama + + + Tugrik ya Mongolia + + + Pataca ya Macau + + + ugwiya ya Moritania + + + rupia ya Morisi + + + Rufiyaa ya Maldivi + + + kwacha ya Malawi + + + Peso ya Meksiko + MX$ + + + Ringgit ya Malaysia + + + metikali ya Msumbiji (1980–2006) + metikali ya Msumbiji (1980–2006) + metikali ya Msumbiji (1980–2006) + + + Metikali ya Msumbiji + + + dola ya Namibia + + + naira ya Nijeria + + + Kodoba ya Nikaragua + + + Krone ya Norwe + + + Rupee ya Nepali + + + Dola ya Nyuzilandi + NZ$ + + + Rial ya Oman + + + Balboa ya Panama + + + Nuevo Sol ya Peru + + + Kina ya Papua New Guinea + + + Peso ya Ufilipino + + + Rupee ya Pakistan + + + Zloty ya Polandi + + + Guarani ya Paragwai + + + Rial ya Katari + + + Leu ya Romania + + + Dinar ya Serbia + + + Ruble ya Urusi + + + faranga ya Rwanda + + + riyal ya Saudia + + + Dola ya Visiwa vya Solomon + + + rupia ya Shelisheli + + + dinari ya Sudani + + + pauni ya Sudani + + + Krona ya Uswidi + + + Dola ya Singapuri + + + pauni ya Santahelena + + + leoni + + + shilingi ya Somalia + + + Dola ya Suriname + + + Pauni ya Sudani Kusini + + + dobra ya Sao Tome na Principe + + + Pauni ya Syria + + + lilangeni + + + Baht ya Tailandi + ฿ + + + Somoni ya Tajikistani + + + Manat ya Turukimenistani + + + dinari ya Tunisia + + + Paʻanga ya Tonga + + + Lira ya Uturuki + + + Dola ya Trinidad na Tobago + + + Dola ya Taiwan + NT$ + + + shilingi ya Tanzania + TSh + + + Hryvnia ya Ukrania + + + shilingi ya Uganda + + + dola ya Marekani + US$ + + + Peso ya Urugwai + + + Som ya Uzibekistani + + + Bolivar ya Venezuela + + + Dong ya Kivietinamu + + + + Vatu ya Vanuatu + + + Tala ya Samoa + + + faranga CFA BEAC + FCFA + + + Dola ya Karibea ya Mashariki + EC$ + + + faranga CFA BCEAO + CFA + + + Franc ya CFP + CFPF + + + Fedha Isiyojulikana + + + Rial ya Yemen + + + randi ya Afrika Kusini + + + kwacha ya Zambia (1968–2012) + + + kwacha ya Zambia + + + dola ya Zimbabwe + + + + ⩾{0} + {0}–{1} + + + + + + {0}kwa kila{1} + + + Mvuto wa graviti{0} + Mvuto wa graviti {0} + + + Dakika {0} + Dakika {0} + + + Sekunde {0} + Sekunde {0} + + + Digrii {0} + Digrii {0} + + + Ekari {0} + Ekari {0} + + + Hektari {0} + Hektari {0} + + + Futi {0} ya mraba + Futi {0} za mraba + + + Kilomita {0} ya mraba + Kilomita {0} za mraba + + + Mita {0} ya mraba + Mita {0} za mraba + + + Maili {0} ya mraba + Maili {0} za mraba + + + siku {0} + siku {0} + + + saa {0} + saa {0} + + + millisekunde {0} + millisekunde {0} + + + dakika {0} + dakika {0} + + + mwezi {0} + miezi {0} + + + sekunde {0} + sekunde {0} + + + wiki {0} + wiki {0} + + + mwaka {0} + miaka {0} + + + Sentimita {0} + Sentimita {0} + + + Futi {0} + Futi {0} + + + Inchi {0} + Inchi {0} + + + Kilomita {0} + Kilomita {0} + + + Mwaka wa mwanga {0} + Miaka ya mwanga {0} + + + Mita {0} + Mita {0} + + + Maili {0} + Maili {0} + + + Millimita {0} + Millimita {0} + + + Pikomita {0} + Pikomita {0} + + + Yadi {0} + Yadi {0} + + + Gramu {0} + Gramu {0} + + + Kilogramu {0} + Kilogramu {0} + + + Aunsi {0} + Aunsi {0} + + + Ratili {0} + Ratili {0} + + + Kipimo cha Hospawa {0} + Kipimo cha Hospawa {0} + + + Kilowati {0} + Kilowati {0} + + + Wati {0} + Wati {0} + + + Hektopaskali {0} + Hektopaskali {0} + + + Inchi za zebaki {0} + Inchi za zebaki {0} + + + Kipimo cha milibari {0} + Kipimo cha milibari {0} + + + Kilomita {0} kwa saa + Kilomita {0} kwa saa + + + Mita {0} kwa sekunde + Mita {0} kwa sekunde + + + Maili {0} kwa saa + Maili {0} kwa saa + + + Nyuzi za Selisiasi {0} + Nyuzi za Selisiasi {0} + + + Nyuzi za Farenheiti {0} + Nyuzi za Farenheiti {0} + + + Kilomita {0} ya ujazo + Kilomita {0} ya ujazo + + + Maili {0} ya ujazo + Maili {0} ya ujazo + + + Lita {0} + Lita {0} + + + + + {0}/{1} + + + G {0} + G {0} + + + Dakika{0}′ + Dakika {0}′ + + + Sekunde {0}″ + Sekunde {0}″ + + + Digrii {0}° + Digrii {0}° + + + Ekari {0} + Ekari {0} + + + Hektari {0} + Hektari {0} + + + ft² {0} + ft² {0} + + + km² {0} + km² {0} + + + m² {0} + m² {0} + + + mi² {0} + mi² {0} + + + siku {0} + siku {0} + + + saa {0} + saa {0} + + + ms {0} + ms {0} + + + dakika {0} + dakika {0} + + + mwezi {0} + miezi {0} + + + sekunde {0} + sekunde {0} + + + wiki {0} + wiki {0} + + + mwaka {0} + miaka {0} + + + Sentimita {0} + Sentimita {0} + + + Futi {0} + Futi {0} + + + Inchi {0} + Inchi {0} + + + Kilomita {0} + Kilomita {0} + + + ly {0} + ly {0} + + + Mita {0} + Mita {0} + + + Maili {0} + Maili {0} + + + Millimita {0} + Millimita {0} + + + Pikomita {0} + Pikomita {0} + + + Yadi {0} + Yadi {0} + + + Gramu {0} + Gramu {0} + + + kg {0} + kg {0} + + + Aunsi {0} + Aunsi {0} + + + Ratili {0} + Ratili {0} + + + hp {0} + hp {0} + + + Kilowati {0} + Kilowati {0} + + + Wati {0} + Wati {0} + + + hPa {0} + hPa {0} + + + {0} inHg + {0} inHg + + + mbar {0} + mbar {0} + + + km {0}/saa + km {0}/saa + + + m {0}/s + m {0}/s + + + mi {0}/saa + mi {0}/saa + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + km³ {0} + km³ {0} + + + mi³ {0} + mi³ {0} + + + Lita {0} + Lita {0} + + + + + {0}/{1} + + + G {0} + G {0} + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + Ekari {0} + Ekari {0} + + + ha {0} + ha {0} + + + ft² {0} + ft² {0} + + + km² {0} + km² {0} + + + m² {0} + m² {0} + + + mi² {0} + mi² {0} + + + siku {0} + siku {0} + + + saa {0} + saa {0} + + + ms {0} + ms {0} + + + dakika {0} + dakika {0} + + + mwezi {0} + miezi {0} + + + s {0} + s {0} + + + wiki {0} + wiki {0} + + + mwaka {0} + miaka {0} + + + cm {0} + cm {0} + + + Futi {0} + Futi {0} + + + Inchi {0} + Inchi {0} + + + km {0} + km {0} + + + ly {0} + ly {0} + + + Mita {0} + Mita {0} + + + Maili {0} + Maili {0} + + + mm {0} + mm {0} + + + pm {0} + pm {0} + + + Yadi {0} + Yadi {0} + + + g {0} + g {0} + + + kg {0} + kg {0} + + + Aunsi {0} + Aunsi {0} + + + Ratili {0} + Ratili {0} + + + hp {0} + hp {0} + + + kW {0} + kW {0} + + + Wati {0} + Wati {0} + + + hPa {0} + hPa {0} + + + {0} inHg + {0} inHg + + + mbar {0} + mbar {0} + + + km {0}/saa + km {0}/saa + + + m {0}/s + m {0}/s + + + mi {0}/saa + mi {0}/saa + + + {0}° + {0}° + + + {0}°F + {0}°F + + + km³ {0} + km³ {0} + + + mi³ {0} + mi³ {0} + + + Lita {0} + Lita {0} + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, na {1} + {0} na {1} + + + {0} na {1} + + + + + Ndiyo:N + Hapana:H + + + + diff --git a/library/Zend/Locale/Data/sw_KE.xml b/library/Zend/Locale/Data/sw_KE.xml new file mode 100755 index 000000000..713f43dc4 --- /dev/null +++ b/library/Zend/Locale/Data/sw_KE.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sw_TZ.xml b/library/Zend/Locale/Data/sw_TZ.xml new file mode 100755 index 000000000..f41e2e1b0 --- /dev/null +++ b/library/Zend/Locale/Data/sw_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/sw_UG.xml b/library/Zend/Locale/Data/sw_UG.xml new file mode 100755 index 000000000..f14153521 --- /dev/null +++ b/library/Zend/Locale/Data/sw_UG.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + USh + + + + diff --git a/library/Zend/Locale/Data/swc.xml b/library/Zend/Locale/Data/swc.xml new file mode 100755 index 000000000..16b5cc738 --- /dev/null +++ b/library/Zend/Locale/Data/swc.xml @@ -0,0 +1,775 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kiswahili + Kiswahili ya Kongo + Kitamil + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + mkw + mpi + mtu + min + mtn + mst + msb + mun + mts + mku + mkm + mkb + + + mwezi ya kwanja + mwezi ya pili + mwezi ya tatu + mwezi ya ine + mwezi ya tanu + mwezi ya sita + mwezi ya saba + mwezi ya munane + mwezi ya tisa + mwezi ya kumi + mwezi ya kumi na moya + mwezi ya kumi ya mbili + + + + + k + p + t + i + t + s + s + m + t + k + m + m + + + + + + + yen + kwa + pil + tat + ine + tan + sit + + + siku ya yenga + siku ya kwanza + siku ya pili + siku ya tatu + siku ya ine + siku ya tanu + siku ya sita + + + + + y + k + p + t + i + t + s + + + + + + + R1 + R2 + R3 + R4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + + + ya asubuyi + ya muchana + + + + + + mbele ya Yezu Kristo + kisha ya Yezu Kristo + + + mbele ya Y + kisha ya Y + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Wakati + + + Mwaka + + + Mwezi + + + Juma + + + Siku + Jana + Leo + Kesho + + + Siku ya juma + + + Muda wa siku + + + Saa + + + Dakika + + + Sekunde + + + Majira ya saa + + + + + + , + . + + + + + #,##0.### + + + + + + + ¤#,##0.00 + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + FC + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Ariary ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Ndiyo:N + Hapana:H + + + + diff --git a/library/Zend/Locale/Data/swc_CD.xml b/library/Zend/Locale/Data/swc_CD.xml new file mode 100755 index 000000000..079584d65 --- /dev/null +++ b/library/Zend/Locale/Data/swc_CD.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ta.xml b/library/Zend/Locale/Data/ta.xml new file mode 100755 index 000000000..fd27ada13 --- /dev/null +++ b/library/Zend/Locale/Data/ta.xml @@ -0,0 +1,5435 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + அஃபார் + அப்காஜியான் + ஆச்சினீஸ் + அகோலி + அதாங்மே + அதகே + அவெஸ்தான் + ஆஃப்ரிகான்ஸ் + அஃப்ரிஹிலி + ஐனு + ஆகான் + அக்கேதியன் + அலூட் + தெற்கு அல்தை + அம்ஹாரிக் + ஆர்கோனீஸ் + பழைய ஆங்கிலம் + அங்கிகா + அரபு + மாடர்ன் ஸ்டாண்டர்ட் அரபிக் + அராமைக் + அரௌகேனியன் + அரபஹோ + அராவாக் + அஸ்ஸாமி + அஸ்துரியன் + அவேரிக் + அவதி + அய்மரா + அசர்பாய்ஜானி + அஸேரி + பாஷ்கிர் + பெலுசி + பலினீஸ் + பாஸா + பைலோருஷ்ன் + பேஜா + பெம்பா + பல்கேரியன் + போஜ்பூரி + பிஸ்லாமா + பிகோல் + பினி + சிக்சிகா + பம்பாரா + வங்காளம் + திபெத்து + பிரெட்டன் + ப்ராஜ் + போஸ்னியன் + புரியாத் + புகினீஸ் + ப்லின் + காடலான் + கேடோ + கரீப் + ஆட்சம் + செசென் + செபுவானோ + சாமோரோ + சிப்சா + ஷகதை + சூகிசே + மாரி + சினூக் ஜார்கான் + சோக்தௌ + சிபெவ்யான் + செரொகி + செயேனி + சொரானி குர்திஷ் + கோர்சிகன் + காப்டிக் + க்ரீ + கிரிமியன் துர்க்கி + செக் + கஷுபியன் + சர்ச் ஸ்லாவிக் + சுவாஷ் + வெல்ஷ் + டேனிஷ் + தகோடா + தார்குவா + ஜெர்மன் + ஆஸ்ட்ரியன் ஜெர்மன் + ஸ்விஸ் ஹை ஜெர்மன் + தெலாவேர் + ஸ்லாவ் + டோக்ரிப் + டின்கா + டோக்ரி + லோவர் சோர்பியன் + துவாலா + மத்திய டச்சு + திவேஹி + ட்யூலா + பூடானி + ஈவ் + எஃபிக் + பண்டைய எகிப்தியன் + ஈகாஜுக் + கிரேக்கம் + எலமைட் + ஆங்கிலம் + ஆஸ்ட்ரேலியன் ஆங்கிலம் + கனடியன் ஆங்கிலம் + ஆங்கிலம் (யூகே) + ஆங்கிலம் (யூகே) + அமெரிக்க ஆங்கிலம் + ஆங்கிலம் (யூஎஸ்) + மத்திய ஆங்கிலம் + எஸ்பரேன்டோ + ஸ்பானிஷ் + லத்தின் அமெரிக்கன் ஸ்பானிஷ் + ஐரோப்பிய ஸ்பானிஷ் + மெக்சிகன் ஸ்பானிஷ் + எஸ்டோனியன் + பஸ்க் + எவோன்டோ + பர்ஸியன் + ஃபங்க் + ஃபான்டி + ஃபுலா + பின்னிஷ் + ஃபிலிபினோ + ஃபிஜி + ஃபரிஸ்த் + ஃபான் + பிரெஞ்சு + கெனடியன் பிரன்சு + ஸ்விஸ் பிரெஞ்ச் + மத்திய ஃப்ரென்ச் + பழைய ஃப்ரென்ச் + வடக்கு ஃப்ரிஸியான் + கிழக்கு ஃப்ரிஸியான் + ஃப்ரியூலியன் + மேற்கத்திய ஃப்ரிஷியன் + ஐரிஷ் + கா + கயோ + பயா + ஸ்காட்ஸ் கேலிக் + கீஜ் + கில்பெர்டீஸ் + காலிஸியன் + மத்திய ஹை ஜெர்மன் + குரானி + பழைய ஹை ஜெர்மன் + கோன்டி + கோரோன்டலோ + கோதிக் + க்ரேபோ + பண்டைய கிரேக்கம் + ஸ்விஸ் ஜெர்மன் + குஜராத்தி + மேங்க்ஸ் + குவிசின் + ஹௌஸா + ஹைடா + ஹவாய்யான் + ஹுப்ரு + இந்தி + ஹிலிகாய்னான் + ஹிட்டைட் + மாங்க் + ஹிரி மோட்டு + குரோஷியன் + அப்பர் சோர்பியான் + ஹைத்தியன் + ஹங்கேரியன் + ஹுபா + ஆர்மேனியன் + ஹெரேரோ + இண்டர்லிங்வா + இபான் + இந்தோனேஷியன் + இன்டர்லிங் + இக்போ + சிசுவான் ஈ + இனுபியாக் + இலோகோ + இங்குஷ் + இடோ + ஐஸ்லென்டிக் + இத்தாலியன் + இனுகிடூட் + ஜப்பானீஸ் + லோஜ்பன் + ஜூதேயோ-பெர்ஷியன் + ஜூதேயோ-அராபிக் + ஜாவானீஸ் + ஜியோர்ஜியன் + காரா-கல்பாக் + கபாய்ல் + காசின் + ஜ்ஜூ + கம்பா + காவி + கபார்டியன் + தையாப் + கோரோ + காங்கோ + காஸி + கோதானீஸ் + கிகுயூ + குவான்யாமா + கசாக் + கலாலிசூட் + கெமெர் + கிம்புன்து + கன்னடம் + கொரியன் + கொங்கனி + கோஸ்ரைன் + க்பெல்லே + கனுரி + கராசே-பல்கார் + கரேலியன் + குருக் + காஷ்மிரி + குர்திஷ் + கும்இக் + குடேனை + கோமி + கார்னிஷ் + கிர்கிஸ் + லத்தின் + லடினோ + லஹன்டா + லம்பா + லக்க்ஷெம்பர்கிஷ் + லெஜ்ஜியன் + ஹான்டா + லிம்பர்கிஷ் + லிங்காலா + லாவோ + மோங்கோ + லோசி + லிதுவேனியன் + லுபா-கடாங்கா + லுபா-லுலுலா + லுய்சேனோ + லூன்டா + லுயோ + லுஷய் + லேட்வியன் + மதுரீஸ் + மகாஹி + மைதிலி + மகாசார் + மான்டிங்கோ + மாசாய் + மோக்க்ஷா + மான்டார் + மென்டீ + மொரிசியன் + மலகாஸி + மத்திய ஐரிஷ் + மார்ஷெலிஷ் + மௌரி + மிக்மாக் + மின்னாங்கபௌ + மாஸிடோனியன் + மலையாளம் + மங்கோலியன் + மன்சு + மனிபூரி + மோஹாவ்க் + மோஸ்ஸி + மராத்தி + மலாய் + மால்டிஸ் + பல மொழிகள் + க்ரீக் + மிரான்டீஸ் + மார்வாரி + பர்மிஸ் + ஏர்ஜியா + நவ்ரூ + நியோபோலிடன் + நார்வே பொக்மால் + வடக்கு தெபெலே + லோ ஜெர்மன் + நேபாளி + நெவாரி + தோங்கா + நியாஸ் + நியூவான் + டச்சு + பிலெமிஷ் + நார்வேஜியன் நியூநார்ஸ்க் + நார்வே + நோகை + பழைய நோர்ஸ் + என்'கோ + தெற்கு தெபெலே + வடக்கு சோதோ + நவாஜோ + பாரம்பரிய நேவாரி + நயன்ஜா + நியாம்வேஜி + நியான்கோலே + நியோரோ + நிஜ்மா + ஒக்கிடன் + ஓஜிபவா + ஒரோமோ + ஒரியா + ஒசெட்டிக் + ஓசேஜ் + ஒட்டோமன் துர்க்கி + பஞ்சாபி + பன்காசினன் + பாஹ்லவி + பம்பாங்கா + பபியேமென்டோ + பலௌவ்ன் + பழைய பெர்ஷியன் + ஃபொனிஷியன் + பாலி + போலிஷ் + ஃபோன்பெயென் + பழைய ப்ரோவென்சால் + பாஷ்டோ + புஷ்டோ + போர்ச்சுக்கீஸ் + போர்ச்சுகீஸ் (பிரேசில்) + ஐரோப்பிய போர்த்துகீசியம் + கிவேசுவா + ராஜஸ்தானி + ரபனுய் + ரரோடோங்கன் + ரோமென்ஸ் + ருண்டி + ரோமேனியன் + மோல்டாவியன் + ரோமானி + ரூட் + ரஷியன் + அரோமானியன் + கின்யாருவான்டா + சமஸ்கிருதம் + சான்டாவே + யாகுட் + சமாரிடன் அராமைக் + சாசாக் + சான்டாலி + சாடினியன் + சிசிலியன் + ஸ்காட்ஸ் + சிந்தி + வடக்கு சாமி + செல்குப் + சாங்கோ + பழைய ஐரிஷ் + செர்போ-க்ரோஷியன் + ஷான் + சிங்களம் + சிடாமோ + ஸ்லோவாக் + ஸ்லோவேனியன் + ஸாமோவான் + தெற்கு சாமி + லுலே சாமி + இனாரி சாமி + ஸ்கோல்ட் சாமி + ஷோனா + சோனின்கே + சோமாலி + சோக்தியன் + அல்பெனியன் + செர்பியன் + ஸ்ரானன் டோங்கோ + செரெர் + ஸ்வாடீ + தெற்கு ஸோதோ + சுடானீஸ் + சுகுமா + சுசு + சுமேரியன் + ஸ்வீடிஷ் + சுவாஹிலி + கொமோரியன் + பாரம்பரிய சிரியாக் + சிரியாக் + தமிழ் + தெலுங்கு + டிம்னே + டெரெனோ + டெடும் + தாஜிக் + தாய் + டிக்ரின்யா + டைக்ரே + டிவ் + டர்க்மென் + டோகேலௌ + டாகாலோக் + க்ளிங்கோன் + டிலிங்கிட் + டாமாஷேக் + ஸ்வானா + டோங்கான் + நயாசா டோங்கா + டோக் பிஸின் + டர்கிஷ் + ஸோங்கா + ட்ஸிம்ஷியன் + டாடர் + தும்புகா + டுவாலு + ட்வி + டஹிதியான் + டுவினியன் + உட்முர்ட் + யுகுர் + யூகுர் + உகாரிட்க் + உக்ரைனியன் + அம்பொண்டு + அறியப்படாத மொழி + உருது + உஸ்பெக் + வை + வென்டா + வியட்நாமிஸ் + ஒலாபூக் + வோட்க் + ஒவாலூன் + வாலாமோ + வாரே + வாஷோ + ஒலூஃப் + கல்மிக் + ஹோஷா + யாவ் + யாபேசி + இத்திஷ் + யோருப்பா + காண்டோனீஸ் + ஜுவாங் + ஜாபோடெக் + ப்லிஸ்ஸிம்பால்ஸ் + ஜெனகா + ஸ்டாண்டர்ட் மொராக்கன் தமாசைட் + சீனம் + எளிதாக்கப்பட்ட சீனம் + பாரம்பரிய சீனம் + ஜூலூ + ஜூனி + மொழிக்கிணங்க உள்ளடக்கம் இல்லை + ஜாஜா + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + உலகம் + ஆப்ரிக்கா + வடக்கு அமெரிக்கா கண்டம் + தெற்கு அமெரிக்கா + ஓஷெனியா + மேற்கு ஆப்ரிக்கா + மத்திய அமெரிக்கா + கிழக்கு ஆப்ரிக்கா + வடக்கு ஆப்ரிக்கா + மத்திய ஆப்ரிக்கா + தென்னாப்ரிக்கா + அமெரிக்காஸ் + வடக்கு அமெரிக்கா + கரீபியன் + கிழக்கு ஆசியா + தெற்கு ஆசியா + தென்-கிழக்கு ஆசியா + தெற்கு ஐரோப்பா + ஆஸ்திரலேசியா + மெலனேஷியா + மைக்ரோ நேஷியா பிரதேசம் + பாலினேஷியா + ஆசியா + மத்திய ஆசியா + மேற்கு ஆசியா + ஐரோப்பா + கிழக்கு ஐரோப்பா + வடக்கு ஐரோப்பா + மேற்கு ஐரோப்பா + லத்தீன் அமெரிக்கா + அஷன்ஷியன் தீவு + அன்டோரா + ஐக்கிய அரபு கூட்டாட்சி + ஆப்கானிஸ்தான் + ஆண்டிகுவா மற்றும் பார்புடா + அங்குய்லா + அல்பேனியா + ஆர்மேனியா + நெதர்லாந்து ஆண்டில்லெஸ் + அங்கோலா + அண்டார்டிகா + அர்ஜென்டினா + அமெரிக்க சமோவா + ஆஸ்திரியா + ஆஸ்திரேலியா + அரூபா + ஆலந்து தீவுகள் + அசர்பைஜான் + போஸ்னியா மற்றும் ஹெர்ஸிகோவினா + பார்படோஸ் + பங்களாதேஷ் + பெல்ஜியம் + புர்கினா ஃபாஸோ + பல்கேரியா + பஹ்ரைன் + புருண்டி + பெனின் + செயின்ட் பார்தேலெமி + பெர்முடா + புரூனேய் + பொலிவியா + கரீபியன் நெதர்லாந்து + பிரேஸில் + பஹாமாஸ் + பூடான் + பொவேட் தீவுகள் + போட்ஸ்வானா + பெலாரூஸ் + பெலிஸ் + கனடா + காகோஸ் தீவுகள் + காங்கோ - கின்ஷாசா + காங்கோ (டிசிஆர்) + மத்திய ஆப்ரிக்கக் குடியரசு + காங்கோ - ப்ராஸாவில்லே + காங்கோ (குடியரசு) + ஸ்விட்சர்லாந்து + ஐவரி கோஸ்ட் + குக் தீவுகள் + சிலி + கேமரூன் + சீனா + கொலம்பியா + கிலிப்பர்டன் தீவு + கோஸ்டாரிகா + கியூபா + கேப் வெர்டே + குராகவ் + கிறிஸ்துமஸ் தீவு + சைப்ரஸ் + செக் குடியரசு + ஜெர்மன் + டியகோ கார்ஷியா + ஜிபௌட்டி + டென்மார்க் + டொமினிகா + டொமினிகன் குடியரசு + அல்ஜீரியா + சியூடா மற்றும் மெலில்லா + ஈக்வடார் + எஸ்டோனியா + எகிப்து + மேற்கு சஹாரா + எரிட்ரியா + ஸ்பெயின் + எதியோப்பியா + ஐரோப்பியன் யூனியன் + பின்லாந்து + ஃபிஜி + ஃபாக்லாந்து தீவுகள் + ஃபாக்லாந்து தீவுகள் (இஸ்லாஸ் மால்வினஸ்) + மைக்ரோனேஷியா + ஃபெரௌ தீவுகள் + பிரான்ஸ் + கேபான் + பிரிடிஷ் கூட்டரசு + GB + கிரனெடா + ஜார்ஜியா + ஃப்ரென்ச் கயானா + கெர்ன்சி + கானா + ஜிப்ரால்டர் + கிரீன்லாந்து + காம்பியா + கினியா + க்வாதேலோப் + ஈக்குவாடோரியல் கினி + கிரீஸ் + தென் ஜியார்ஜியா மற்றும் தென் சான்ட்விச் தீவுகள் + கவுதமாலா + குவாம் + கினி-பிஸ்ஸாவ் + கயானா + ஹாங்காங் சார் சீனா + ஹாங்காங் + ஹேர்ட் மற்றும் மெக்டொனால்டு + ஹாண்டுராஸ் + குரோசியா + ஹெய்தி + ஹங்கேரி + கேனரி தீவுகள் + இந்தோனேஷியா + அயர்லாந்து + இஸ்ரேல் + ஐல் ஆஃப் மேன் + இந்தியா + பிரிட்டிஷ் இந்தியப் பெருங்கடல் பகுதி + இராக் + ஈரான் + ஐஸ்லாந்து + இத்தாலி + ஜெர்சி + ஜமைகா + ஜொர்டான் + ஜப்பான் + கென்யா + கிர்கிஸ்தான் + கம்போடியா + கிரிபடி + கோமரோஸ் + செயின்ட் கிட்ஸ் மற்றும் நெவிஸ் + வட கொரியா + தென் கொரியா + குவைத்து + கேமென் தீவுகள் + கஸகஸ்தான் + லாவோஸ் + லெபனான் + செயின்ட் லூசியா + லிச்செண்ஸ்டெய்ன் + இலங்கை + லைபீரியா + லெசோதோ + லிதுவேனியா + லக்ஸ்சம்பர்க் + லாட்வியா + லிபியா + மொராக்கோ + மொனாக்கோ + மால்டோவா + மான்டேனெக்ரோ + செயின் மார்டீன் + மடகாஸ்கர் + மார்ஷல் தீவுகள் + மாசிடோனியா + மாசிடோனியா (ஃபைரோம்) + மாலீ + மியான்மார் (பர்மா) + மங்கோலியா + மகாவோ சார் சீனா + மகாவோ + வடக்கு மரியானா தீவுகள் + மார்டினிக் + மௌரிடானியா + மௌன்ட்செராட் + மால்டா + மொரிசியஸ் + மாலத்தீவு + மாலவி + மெக்சிகோ + மலேஷியா + மொசாம்பிக் + நமீபியா + நியூ கேலிடோனியா + நைஜர் + நார்ஃபாக் தீவுகள் + நைஜீரியா + நிகாரகுவா + நெதர்லாந்து + நார்வே + நேபாளம் + நௌரு + நியூ + நியூசிலாந்து + ஓமன் + பனாமா + பெரு + ஃப்ரென்ச் பாலினேஷியா + பாப்புவா நியூ கினி + பிலிப்பைன்ஸ் + பாகிஸ்தான் + போலந்து + செயின்ட் பியர் மற்றும் மிக்வேலான் + பிட்கெய்ர்ன் + பியூர்டோ ரிகோ + பாலஸ்தீனியன் மாஹாணங்கள் + பாலஸ்தீனம் + போர்ச்சுக்கல் + பாலோ + பாரகுவே + கதார் + ஔட்லையிங் ஓசானியா + ரீயூனியன் + ருமேனியா + செர்பியா + ரஷ்யா + ருவான்டா + சவூதி அரேபியா + சாலமன் தீவுகள் + ஸேசேல்ஸ் + சூடான் + ஸ்வீடன் + சிங்கப்பூர் + செயின்ட் ஹெலெனா + ஸ்லோவேனியா + ஸ்வல்பார்டு மற்றும் ஜான் மேயன் + ஸ்லோவாகியா + சியர்ரா லியோன் + சான் மெரினோ + செனெகல் + சொமாலியா + சூரினாம் + தெற்கு சூடான் + சாவ் தோம் மற்றும் ப்ரின்சிபி + எல் சால்வடார் + செயின்ட் மார்ட்டீன் + சிரியா + ஸ்வாஸிலாண்ட் + டிரிஸ்டன் டா குன்ஹா + டர்க்ஸ் மற்றும் கைகோஸ் தீவுகள் + சாட் + ஃப்ரென்ச் தெற்கு மாஹாணங்கள் + டோகோ + தாய்லாந்து + தாஜிகிஸ்தான் + டோகேலோ + கிழக்கு தைமூர் + கிழக்கு தைமோர் + துர்க்மெனிஸ்தான் + டுனிசியா + டோங்கா + துருக்கி + ட்ரினிடாட் மற்றும் டுபாகோ + துவாலூ + தைவான் + டான்சானியா + உக்ரைன் + உகாண்டா + ஐக்கிய அமெரிக்காவை சுற்றியுள்ள தீவுகள் + ஐக்கிய அமெரிக்க குடியரசு + யூஎஸ் + உருகுவே + உஸ்பெகிஸ்தான் + வாடிகன் நகரம் + செயின் வின்சன்ட் மற்றும் கிரெனடைன்ஸ் + வெனஜுவேலா + பிரிட்டீஷ் கன்னித் தீவுகள் + யூ.எஸ் கன்னித் தீவுகள் + வியட்நாம் + வனுவாட்டு + வாலிஸ் மற்றும் ஃபுடுனா தீவுகள் + சமோவா + கொசோவோ + ஏமன் + மயோத் + தென் ஆப்பிரிக்கா + சாம்பியா + ஜிம்பாப்வே + அறியப்படாத பிரதேசம் + + + பின்யின் ரோமானைசெஷன் + வேட்-கைல்ஸ் ரோமனைஷேசன் + + + நாள்காட்டி + சின்னங்கள் வரிசைப்படுத்தலைப் புறக்கணி + நேர்மறையான உச்சரிப்பு வரிசைபடுத்துதல் + பெரெழுத்து/சிற்றெழுத்து வரிசைமுறை + எழுத்து உணர்ந்து வரிசைபடுத்துதல் + கானா வரிசைபடுத்துதல் + வரிசைப்படுத்தல் முறை + இயல்பாக்கப்பட்ட வரிசைபடுத்துதல் + எண்முறை வரிசைபடுத்துதல் + வரிசைப்படுத்தல் வலிமை + நாணயம் + எண்கள் + நேர மண்டலம் + மொழி மாறிலி + சின்னங்களாக வரிசைப்படுத்து + தனிப்பட்ட பயன் + + + அரபிய-இந்திய இலக்கங்கள் + அதிகரிக்கப்பட்ட அரபிய-இந்திய இலக்கங்கள் + ஆர்மேனியன் எண்கள் + அமெரிக்கன் சிறிய எழுத்து எண்கள் + பெங்காலி இலக்கங்கள் + பாரம்பரிய சீன வரிசை வடிவம் - Big5 + புத்த நாள்காட்டி + சீன நாள்காட்டி + காப்டிக் நாள்காட்டி + தேவனாகரி இலக்கங்கள் + அகராதி வரிசை முறை + இயல்பான யுனிகோடு வரிசை முறை + எத்தியோப்பிக் எண்கள் + எத்தியோப்பிக் நாள்காட்டி + எத்தியோபிக் அமேதே ஆலெம் நாள்காட்டி + நிதி எண்கள் + முழு அகல இலக்கங்கள் + எளிமையாக்கப்பட்ட சீன வரிசை வடிவம் - GB2312 + ஜியாரிஜியன் எண்கள் + கிரிகோரியன் நாள்காட்டி + கிரீக் எண்கள் + கிரீக் சிறியஎழுத்து எண்கள் + குஜராத்தி இலக்கங்கள் + குர்முகி இலக்கங்கள் + சீன பின்ன எண்கள் + எளிதாக்கப்பட்ட சீன எண்கள் + எளிதாக்கப்பட்ட சீன நிதி எண்கள் + பாரம்பரிய சீன எண்கள் + பாரம்பரிய சீன நிதி எண்கள் + ஹிப்ரூ + ஹிப்ரூ நாள்காட்டி + அனைத்தையும் வரிசைப்படுத்து + இந்திய தேச நாள்காட்டி + இஸ்லாமிய நாள்காட்டி + இஸ்லாமிய சிவில் நாள்காட்டி + ஜாப்பனிய நாள்காட்டி + ஜாப்பனிய எண்கள் + ஜாப்பனிய நிதி எண்கள் + கெமெர் இலக்கங்கள் + கன்னட இலக்கங்கள் + லயோ இலக்கங்கள் + மேற்கத்திய இலக்கங்கள் + முதலில் சிற்றெழுத்துகளை வரிசைப்படுத்து + மலையாள இலக்கங்கள் + மங்கோலியன் இலக்கங்கள் + மியான்மர் இலக்கங்கள் + சொந்த இலக்கங்கள் + உச்சரிப்புகளை இயல்பாக வரிசைபடுத்து + இயல்பான எழுத்து வடிவில் வரிசைபடுத்து + எழுத்து உணர்வின்றி வரிசைபடுத்து + கானாவை தனியாக வரிசைப்படுத்து + இயல்பாக்கம் இல்லாமல் வரிசைபடுத்து + இலக்கங்களை, தனியாக வரிசைப்படுத்து + சின்னங்களை வரிசைப்படுத்து + ஒரியா இலக்கங்கள் + பெர்சியன் நாள்காட்டி + தொலைபேசி புத்தக வரிசை முறை + ஒலியியல் வரிசைப்படுத்தல் முறை + பின்யின் வரிசை முறை + அடிப்படை எழுத்துகளை மட்டும் வரிசைபடுத்து + உச்சரிப்புகள்/எழுத்து/அகலம்/கானாவை வரிசைப்படுத்து + சீர்திருத்தப்பட்ட வரிசை முறை + மின்கோ நாள்காட்டி + ரோமன் எண்கள் + சிறிய ரோமானிய எண்கள் + பொதுப்படையான தேடல் + ஹங்குல் முதன்மை மெய்யெழுத்தின்படி தேடு + உச்சரிப்புகளை வரிசைபடுத்து + சின்னங்களைப் புறக்கணித்து வரிசைப்படுத்து + நிலையான வரிசை முறை + ஸ்ட்ரோக் வரிசை முறை + பாரம்பரிய தமிழ் எண்கள் + தமிழ் இலக்கங்கள் + தெலுங்கு இலக்கங்கள் + உச்சரிப்புகள்/எழுத்து/அகலத்தை வரிசைப்படுத்து + தாய் இலக்கங்கள் + திபேத்தியன் எண்கள் + பாரம்பரிய வரிசை முறை + பாரம்பரிய எண்கள் + ரேடியன் ஸ்ட்ரோக் வரிசை முறை + முதலில் பேரெழுத்துகளை வரிசைப்படுத்து + வை எண்கள் + உச்சரிப்புகளை நேர்மறையாக வரிசைபடுத்து + எழுத்து உணர்வில் வரிசைபடுத்து + கானாவை வேறுபட்டதாக வரிசைப்படுத்து + இயல்பாக்கப்பட்ட யூனிகோடை வரிசைப்படுத்து + இலக்கங்களை எண்களாக வரிசைப்படுத்து + + + BGN + எண் + டோன் + UNGEGN + ஒலிப்புகள் + முழு அகலம் + அரை அகலம் + ஜமோ + பின்யின் + வெளியிடுகிறது + + + மெட்ரிக் + யூகே + யூஎஸ் + + + மொழி: {0} + எழுத்து: {0} + மண்டலம்: {0} + + + + [அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ ஃ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஷ ஸ ஹ ா ி \u0BC0 ு ூ ெ ே ை ொ ோ ௌ \u0BCD] + [\u200C\u200D] + [அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஶ ஷ ஸ ஹ {க\u0BCDஷ}] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + மா1 + மா2 + மா3 + மா4 + மா5 + மா6 + மா7 + மா8 + மா9 + மா10 + மா11 + மா12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + மாதம்1 + மாதம்2 + மாதம்3 + மாதம்4 + மாதம்5 + மாதம்6 + மாதம்7 + மாதம்8 + மாதம்9 + மாதம்10 + மாதம்11 + மாதம்12 + + + + + மா1 + மா2 + மா3 + மா4 + மா5 + மா6 + மா7 + மா8 + மா9 + மா10 + மா11 + மா12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + மாதம்1 + மாதம்2 + மாதம்3 + மாதம்4 + மாதம்5 + மாதம்6 + மாதம்7 + மாதம்8 + மாதம்9 + மாதம்10 + மாதம்11 + மாதம்12 + + + + + + + U MMMM d, EEEE + + + + + U MMMM d + + + + + U MMM d + + + + + dd-MM-y + + + + + + + + + EEEE, d MMMM, y G + + + + + d MMMM, y G + + + + + d MMM, y G + + + + + d-M-y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM y G + d MMM, y G + E, d MMM, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y G + y G + M/y G + d/M/y G + E, d/M/y G + MM-y G + MMM y G + d MMM, y G + E, d MMM, y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y G + + + M/y – M/y G + M/y – M/y G + + + d/M/y – d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + E, d/M/y – E, d/M/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d–d MMM, y G + d MMM – d MMM, y G + d MMM, y – d MMM, y G + + + E, d MMM – E, d MMM, y G + E, d MMM – E, d MMM, y G + E, d MMM, y – E, d MMM, y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + ஜன. + பிப். + மார். + ஏப். + மே + ஜூன் + ஜூலை + ஆக. + செப். + அக். + நவ. + டிச. + + + + பி + மா + + மே + ஜூ + ஜூ + + செ + + + டி + + + ஜனவரி + பிப்ரவரி + மார்ச் + ஏப்ரல் + மே + ஜூன் + ஜூலை + ஆகஸ்ட் + செப்டம்பர் + அக்டோபர் + நவம்பர் + டிசம்பர் + + + + + ஜன. + பிப். + மார். + ஏப். + மே + ஜூன் + ஜூலை + ஆக. + செப். + அக். + நவ. + டிச. + + + + பி + மா + + மே + ஜூ + ஜூ + + செ + + + டி + + + ஜனவரி + பிப்ரவரி + மார்ச் + ஏப்ரல் + மே + ஜூன் + ஜூலை + ஆகஸ்டு + செப்டம்பர் + அக்டோபர் + நவம்பர் + டிசம்பர் + + + + + + + ஞா + தி + செ + பு + வி + வெ + + + + ஞா + தி + செ + பு + வி + வெ + + + + ஞா + தி + செ + பு + வி + வெ + + + + ஞாயிறு + திங்கள் + செவ்வாய் + புதன் + வியாழன் + வெள்ளி + சனி + + + + + ஞா + தி + செ + பு + வி + வெ + + + + ஞா + தி + செ + பு + வி + வெ + + + + ஞா + தி + செ + பு + வி + வெ + + + + ஞாயிறு + திங்கள் + செவ்வாய் + புதன் + வியாழன் + வெள்ளி + சனி + + + + + + + காலாண்டு1 + காலாண்டு2 + காலாண்டு3 + காலாண்டு4 + + + 1 + 2 + 3 + 4 + + + முதல் காலாண்டு + இரண்டாம் காலாண்டு + மூன்றாம் காலாண்டு + நான்காம் காலாண்டு + + + + + காலாண்டு1 + காலாண்டு2 + காலாண்டு3 + காலாண்டு4 + + + 1 + 2 + 3 + 4 + + + முதல் காலாண்டு + இரண்டாம் காலாண்டு + மூன்றாம் காலாண்டு + நான்காம் காலாண்டு + + + + + + + முற்பகல் + பிற்பகல் + + + AM + PM + + + முற்பகல் + பிற்பகல் + + + + + + கிறிஸ்துவுக்கு முன் + அனோ டோமினி + + + கி.மு. + கி.பி. + + + + + + EEEE, d MMMM, y + + + + + d MMMM, y + + + + + d MMM, y + + + + + d-M-yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + MM-dd, E + dd-MM + LLL + MMM d + MMM d, E + d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + MMM y + d MMM, y + E, d MMM, y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E, d MMM – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y – d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + E, d/M/y – E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM, y + d MMM – d MMM, y + d MMM, y – d MMM, y + + + E, d MMM – E, d MMM, y + E, d MMM – E, d MMM, y + E, d MMM, y – E, d MMM, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + காலம் + + + ஆண்டு + கடந்த ஆண்டு + இந்த ஆண்டு + அடுத்த ஆண்டு + + {0} ஆண்டில் + {0} ஆண்டுகளில் + + + {0} ஆண்டிற்கு முன் + {0} ஆண்டுகளுக்கு முன் + + + + மாதம் + கடந்த மாதம் + இந்த மாதம் + அடுத்த மாதம் + + {0} மாதத்தில் + {0} மாதங்களில் + + + {0} மாதத்துக்கு முன் + {0} மாதங்களுக்கு முன் + + + + வாரம் + கடந்த வாரம் + இந்த வாரம் + அடுத்த வாரம் + + {0} வாரத்தில் + {0} வாரங்களில் + + + {0} வாரத்திற்கு முன்பு + {0} வாரத்திற்கு முன் + + + + நாள் + நேற்று முன் தினம் + நேற்று + இன்று + நாளை + நாளை மறுநாள் + + {0} நாளில் + {0} நாட்களில் + + + {0} நாளுக்கு முன் + {0} நாட்களுக்கு முன் + + + + வார நாள் + + + கடந்த ஞாயிறு + இந்த ஞாயிறு + அடுத்த ஞாயிறு + + + கடந்த திங்கள் + இந்த திங்கள் + அடுத்த திங்கள் + + + கடந்த செவ்வாய் + இந்த செவ்வாய் + அடுத்த செவ்வாய் + + + கடந்த புதன் + இந்த புதன் + அடுத்த புதன் + + + கடந்த வியாழன் + இந்த வியாழன் + அடுத்த வியாழன் + + + கடந்த வெள்ளி + இந்த வெள்ளி + அடுத்த வெள்ளி + + + கடந்த சனி + இந்த சனி + அடுத்த சனி + + + முற்பகல்/பிற்பகல் + + + மணி + + {0} மணிநேரத்தில் + {0} மணிநேரத்தில் + + + {0} மணிநேரம் முன் + {0} மணிநேரம் முன் + + + + நிமிடம் + + {0} நிமிடத்தில் + {0} நிமிடங்களில் + + + {0} நிமிடத்திற்கு முன் + {0} நிமிடங்களுக்கு முன் + + + + வினாடி + இப்போது + + {0} வினாடியில் + {0} விநாடிகளில் + + + {0} வினாடிக்கு முன் + {0} வினாடிக்கு முன் + + + + மண்டலம் + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} நேரம் + {0} பகல் நேரம் + {0} நிலையான நேரம் + {1} ({0}) + + தெரியாத நகரம் + + + அண்டோரா + + + துபாய் + + + காபூல் + + + ஆன்டிகுவா + + + அங்குயுலா + + + திரானே + + + ஏரேவன் + + + லுவான்டா + + + ரோதேரா + + + பால்மர் + + + ஸ்யோவா + + + மவுசன் + + + டேவிஸ் + + + வோஸ்டோக் + + + கேஸி + + + குமான்ட் டுவிரேல் + + + மெக்மர்டோ + + + ரியோ கேலிகாஸ் + + + மென்டோஷா + + + சான் ஜுவான் + + + உஷுவாயா + + + லாரியோஜா + + + சான் லூயி + + + கடமரகா + + + சால்டா + + + ஜூஜுய் + + + துகுமன் + + + கார்டோபா + + + பவுனஸ் ஏர்ஸ் + + + பேகோ பேகோ + + + வியன்னா + + + பெர்த் + + + யூக்லா + + + டார்வின் + + + அடேலைட் + + + புரோக்கன் ஹில் + + + கியூரி + + + மெல்போர்ன் + + + ஹொபார்ட் + + + லின்டெமன் + + + சிட்னி + + + பிரிஸ்பேன் + + + மேக்வாரி + + + லார்டு ஹோவே + + + அரூபா + + + மரிஹமன் + + + பாக்கூ + + + சராஜேவோ + + + பார்படாஸ் + + + டாக்கா + + + புருசேல்ஸ் + + + அவுகடவ்கு + + + சோஃபியா + + + பஹ்ரெய்ன் + + + புஜும்புரா + + + போர்ட்டோ-நோவோ + + + செயின்ட் பார்தேலெமி + + + பெர்முடா + + + புருனே + + + லா பாஸ் + + + கிரெலன்டிஜ் + + + ஈருனெபே + + + ரியோ பிரான்கோ + + + போர்ட்டோ வெல்ஹோ + + + போவா விஸ்டா + + + மனாவுஸ் + + + குயாபே + + + சான்டரெம் + + + கேம்போ கிராண்டே + + + பெலெம் + + + அரகுவாய்னா + + + சவோ பவுலோ + + + பஹாய் + + + ஃபார்டெல்சா + + + மேகியோ + + + ரெஸிஃபி + + + நோரன்ஹா + + + நசவ் + + + திம்பு + + + கபோரோன் + + + மின்ஸ்க் + + + பெலிஸ் + + + டாவ்சன் + + + வொயிட்ஹார்ஸ் + + + இனுவிக் + + + வாங்கூவர் + + + டாவ்சன் கிரீக் + + + க்ரெஸ்டான் + + + யெல்லோநைஃப் + + + எட்மான்டான் + + + ஸ்விஃப்ட் கரண்ட் + + + கேம்பிரிட்ஜ் வளைகுடா + + + ரெகினா + + + வின்னிபெக் + + + ரெசலூட் + + + ரெய்னி ரிவர் + + + ரான்கின் இன்லெட் + + + அடிகோகன் + + + தண்டர் பே + + + நிபிகான் + + + டொரொன்டோ + + + இகாலூயித் + + + பாங்னிர்துங் + + + மாங்டான் + + + ஹலிஃபேக்ஸ் + + + கூஸ் பே + + + கிலாஸ் போ + + + ப்லாங்க்-சப்லான் + + + செயின்ட் ஜான்ஸ் + + + கோகோஸ் + + + கின்ஷசா + + + லுபும்பாஷி + + + பேங்குயீ + + + பிராஸாவில்லி + + + ஜூரிக் + + + அபிட்ஜான் + + + ரரோடோங்கா + + + ஈஸ்டர் + + + சாண்டியாகோ + + + தவுலா + + + கஷ்கர் + + + உரும்கி + + + சாங்குயிங் + + + ஷாங்காய் + + + ஹர்பின் + + + போகோடா + + + கோஸ்டா ரிகா + + + ஹவானா + + + கேப் வெர்ட் + + + க்யூராகோ + + + கிறிஸ்மஸ் + + + நிகோசியா + + + ப்ராக் + + + பசிங்ஜென் + + + பெர்லின் + + + டிஜிபவ்டி + + + கோபென்ஹகன் + + + டொமினிகா + + + சாண்டோ டோமிங்கோ + + + அல்கியர்ஸ் + + + கலபகோஸ் + + + குவாயகில் + + + டலின் + + + கெய்ரோ + + + எல் ஆயுன் + + + அஸ்மாரா + + + கேனரி + + + சியூட்டா + + + மாட்ரிட் + + + ஆட்டிஸ் அபாபா + + + ஹெல்சிங்கி + + + ஃபிஜி + + + ஸ்டேன்லி + + + சூக் + + + ஃபோன்பெய் + + + கோஸ்ரே + + + பேரோ + + + பாரிஸ் + + + லிப்ரேவில்லே + + + + பிரிட்டிஷ் கோடை நேரம் + + லண்டன் + + + கிரேனடா + + + த்பிலிசி + + + கெய்ன் + + + கர்னஸே + + + அக்ரா + + + ஜிப்ரால்டர் + + + துலே + + + கோத்தப் + + + ஸ்கோர்ஸ்பீ சண்ட் + + + டென்மார்க்ஷாவ்ன் + + + பஞ்சுல் + + + கோனக்ரே + + + கவுடேலூப் + + + மாலபோ + + + ஏதேன்ஸ் + + + தெற்கு ஜார்ஜியா + + + கவுதமாலா + + + குவாம் + + + பிஸாவ் + + + கயானா + + + ஹாங்காங் + + + தெகுசிகல்பா + + + ஸக்ரெப் + + + போர்ட்-வ்-பிரின்ஸ் + + + புடாபெஸ்ட் + + + ஜகார்த்தா + + + போனடியானாக் + + + மக்கஸர் + + + ஜெயபூரா + + + + ஐரிஷ் கோடை நேரம் + + டப்ளின் + + + ஜெருசலேம் + + + ஐல் ஆஃப் மேன் + + + கொல்கத்தா + + + சாகோஸ் + + + பாக்தாத் + + + டெஹ்ரன் + + + ரேக்ஜாவிக் + + + ரோம் + + + ஜெர்சி + + + ஜமைக்கா + + + அம்மான் + + + டோக்கியோ + + + நைரோபி + + + பிஷ்கெக் + + + ஃப்னோம் பென் + + + எண்டர்பரி + + + க்ரிமடி + + + தராவா + + + கொமரோ + + + செயின்ட் கீட்ஸ் + + + பியோங்கியாங் + + + சீயோல் + + + குவைத் + + + கேமன் + + + அக்தவ் + + + ஓரல் + + + அக்டோப் + + + கிஸிலோர்டா + + + அல்மாதி + + + வியன்டியன் + + + பெய்ரூட் + + + செயிண்ட் லூசியா + + + வதுஸ் + + + கொழும்பு + + + மான்ரோவியா + + + மசேரு + + + வில்னியஸ் + + + லக்சம்பர்க் + + + ரிகா + + + த்ரிபோலி + + + காஸாபிளான்கா + + + மொனாக்கோ + + + சிசினவ் + + + போட்கோரிகா + + + மாரிகாட் + + + ஆண்டனநரிவோ + + + க்வாஜாலீயன் + + + மஜுரோ + + + ஸ்கோப்ஜே + + + பமாகோ + + + ரங்கூன் + + + ஹோவ்த் + + + உலான்பாட்டர் + + + சோய்பால்சான் + + + மகவ் + + + சைபன் + + + மார்ட்டினிக் + + + நவுக்சோத் + + + மான்ஸ்ரேட் + + + மால்டா + + + மொரிஷியஸ் + + + மாலத்தீவுகள் + + + பிளான்டையர் + + + டிஜுவானா + + + சான்டா இசபெல் + + + ஹெர்மோசிலோ + + + மஸட்லன் + + + சிஹூவாஹுவா + + + பஹியா பந்தேராஸ் + + + ஒஜினகா + + + மான்டெர்ரே + + + மெக்ஸிகோ நகரம் + + + மடமோராஸ் + + + மெரிடா + + + கன்குன் + + + கோலாலம்பூர் + + + குசிங் + + + மபுடோ + + + வைண்ட்ஹோக் + + + நவுமியா + + + நியாமே + + + நார்ஃபோக் + + + லாகோஸ் + + + மானாகுவா + + + ஆம்ஸ்டர்டம் + + + ஓஸ்லோ + + + காத்மாண்டு + + + நவ்ரூ + + + நியு + + + சாதம் + + + ஆக்லாந்து + + + மஸ்கட் + + + பனாமா + + + லிமா + + + தாஹிதி + + + மார்குசாஸ் + + + கேம்பியர் + + + போர்ட் மோர்ஸ்பை + + + மணிலா + + + கராச்சி + + + வார்ஸா + + + மிக்யூலன் + + + பிட்காரின் + + + புயர்டோ ரிகோ + + + காஸா + + + ஹெப்ரான் + + + அசோரஸ் + + + மடிரா + + + லிஸ்பன் + + + பாலவ் + + + அஸன்சியன் + + + கத்தார் + + + ரியூனியன் + + + புசாரெஸ்ட் + + + பெல்க்ரேடு + + + கலினின்கிராடு + + + மாஸ்கோ + + + வோல்கோகார்டு + + + சமாரா + + + யெகாடிரின்பர்க் + + + ஓம்ஸ்க் + + + நோவோசீபிர்ஸ்க் + + + நோவோகுஸ்நெட்ஸ்க் + + + கிராஸ்னோயார்க்ஸ் + + + இர்குட்ஸ்க் + + + யகுட்ஸ்க் + + + விலாத்திவொஸ்தோக் + + + கான்டிகா + + + சகலின் + + + உஸ்ட்-நேரா + + + மகதன் + + + காம்சட்கா + + + அனடீர் + + + கிகலி + + + ரியாத் + + + கவுடால்கேனல் + + + மாஹி + + + கார்டோம் + + + ஸ்டாக்ஹோம் + + + சிங்கப்பூர் + + + செயின்ட் ஹெலினா + + + லுஜுபுல்ஜானா + + + லாங்கர்பியன் + + + பிரடிஸ்லாவா + + + ஃப்ரீடவுன் + + + சான் மாரினோ + + + தாக்கர் + + + மோகாதிஷு + + + பரமரிபோ + + + ஜுபா + + + சாவோ டோமே + + + எல் சால்வேடார் + + + லோயர் பிரின்ச்ஸ் குவாட்டர் + + + டமாஸ்கஸ் + + + அம்பபான் + + + கிராண்ட் துர்க் + + + நிட்ஜமேனா + + + கெர்யூலென் + + + லோம் + + + பாங்காக் + + + துஷன்பே + + + ஃபகாஃபோ + + + டிலி + + + அஷ்காபாத் + + + டுனிஸ் + + + டோன்கடப்பு + + + இஸ்தான்புல் + + + போர்ட் ஆஃப் ஸ்பெயின் + + + ஃபுனாஃபுடி + + + தைபை + + + தார் ஸ் சலாம் + + + உஜ்கோரோட் + + + கீவ் + + + சிம்ஃபெரோபோல் + + + ஜபோரோஸியே + + + கம்பாலா + + + மிட்வே + + + ஜோன்ஸ்டன் + + + வேக் + + + அடக் + + + நோம் + + + ஹானலுலு + + + அங்கரேஜ் + + + யகுடட் + + + சிட்கா + + + ஜுனியூ + + + மெட்லகட்லா + + + லாஸ் ஏஞ்சல்ஸ் + + + போய்ஸ் + + + ஃபோனிக்ஸ் + + + டென்வர் + + + பெவுலா, வடக்கு டகோட்டா + + + நியூ சலேம், வடக்கு டகோடா + + + மையம், வடக்கு டகோடா + + + சிகாகோ + + + மெனோமி + + + விண்செனேஸ், இண்டியானா + + + பீட்டர்ஸ்பெர்க், இண்டியானா + + + டெல் சிட்டி, இண்டியானா + + + நாக்ஸ், இண்டியானா + + + வினாமேக், இண்டியானா + + + மரென்கோ, இண்டியானா + + + இண்டியானாபொலிஸ் + + + லோய்ஸ்வில்லே + + + வேவே, இண்டியானா + + + மான்டிசெல்லோ, கென்டக்கி + + + டெட்ராய்ட் + + + நியூயார்க் + + + மொண்டேவீடியோ + + + சமர்கந்து + + + தாஷ்கண்ட் + + + வாடிகன் + + + செயிண்ட் வின்சென்ட் + + + கேராகஸ் + + + டோர்டோலா + + + செயின்ட் தாமஸ் + + + ஹோ தி மின் சிட்டி + + + ஈஃபேட் + + + வாலிஸ் + + + அபியா + + + ஏதேன் + + + மயோட்டி + + + ஜோஹன்னஸ்பெர்க் + + + லுசாகா + + + ஹராரே + + + + அக்ரே நேரம் + அக்ரே தர நேரம் + அக்ரே கோடை நேரம் + + + + + ஆஃப்கானிஸ்தான் நேரம் + + + + + மத்திய ஆப்பிரிக்க நேரம் + + + + + கிழக்கு ஆப்பிரிக்க நேரம் + + + + + தென் ஆப்பிரிக்க நேரப்படி + + + + + மேற்கு ஆப்பிரிக்க நேரம் + மேற்கு ஆப்ரிக்க நிலையான நேரம் + மேற்கு ஆப்பிரிக்கா கோடை நேரம் + + + + + அலாஸ்கா நேரம் + அலாஸ்கா நிலையான நேரம் + அலாஸ்கா பகலொளி நேரம் + + + + + அல்மாடி நேரம் + அல்மாடி தர நேரம் + அல்மாடி கோடை நேரம் + + + + + அமேசான் நேரம் + அமேசான் நிலையான நேரம் + அமேசான் கோடை நேரம் + + + + + மத்திய நேரம் + மத்திய நிலையான நேரம் + மத்திய பகலொளி நேரம் + + + + + கிழக்கத்திய நேரம் + கிழக்கத்திய நிலையான நேரம் + கிழக்கத்திய பகலொளி நேரம் + + + + + மவுன்டைன் நேரம் + மவுன்டைன் நிலையான நேரம் + மவுன்டைன் பகலொளி நேரம் + + + + + பசிபிக் நேரம் + பசிபிக் நிலையான நேரம் + பசிபிக் பகலொளி நேரம் + + + + + அனடீர் நேரம் + அனாடையர் தர நேரம் + அனாடையர் கோடை நேரம் + + + + + அட்டௌ நேரம் + அட்டௌ தர நேரம் + அட்டௌ கோடை நேரம் + + + + + அட்டோபே நேரம் + அட்டோபே தர நேரம் + அட்டோபே கோடை நேரம் + + + + + அரேபியன் நேரம் + அரேபியன் நிலையான நேரம் + அரேபியன் பகலொளி நேரம் + + + + + அர்ஜென்டினா நேரம் + அர்ஜென்டினா நிலையான நேரம் + அர்ஜென்டினா கோடை நேரம் + + + + + மேற்கத்திய அர்ஜென்டினா நேரம் + மேற்கத்திய அர்ஜென்டினா நிலையான நேரம் + மேற்கத்திய அர்ஜென்டினா கோடை நேரம் + + + + + ஆர்மேனியா நேரம் + அர்மேனியா நிலையான நேரம் + ஆர்மேனியா கோடை நேரம் + + + + + அட்லாண்டிக் நேரம் + அட்லாண்டிக் நிலையான நேரம் + அட்லாண்டிக் பகலொளி நேரம் + + + + + மத்திய ஆஸ்திரேலியா நேரம் + ஆஸ்திரேலியன் மத்திய நிலையான நேரம் + ஆஸ்திரேலியன் மத்திய பகலொளி நேரம் + + + + + ஆஸ்திரேலியன் மத்திய மேற்கத்திய நேரம் + ஆஸ்திரேலியன் மத்திய மேற்கத்திய நிலையான நேரம் + ஆஸ்திரேலியன் மத்திய மேற்கத்திய பகலொளி நேரம் + + + + + மத்திய கிழக்கத்திய ஆஸ்திரேலிய நேரம் + ஆஸ்திரேலியன் கிழக்கத்திய நிலையான நேரம் + ஆஸ்திரேலியன் மத்திய கிழக்கத்திய பகலொளி நேரம் + + + + + மேற்கத்திய ஆஸ்திரேலிய நேரம் + ஆஸ்திரேலியன் மேற்கத்திய நிலையான நேரம் + ஆஸ்திரேலியன் மேற்கத்திய பகலொளி நேரம் + + + + + அசர்பைஜான் நேரம் + அசர்பைஜான் நிலையான நேரம் + அசர்பைஜான் கோடை நேரம் + + + + + அசோர்ஸ் நேரம் + அசோர்ஸ் நிலையான நேரம் + அசோர்ஸ் கோடை நேரம் + + + + + வங்கதேச நேரம் + வங்கதேச நேரப்படி + வங்கதேச கோடை நேரம் + + + + + பூட்டான் நேரம் + + + + + பொலிவியா நேரம் + + + + + ப்ரசிலியா நேரம் + ப்ரசிலியா நிலையான நேரம் + ப்ரசிலியா கோடை நேரம் + + + + + புருனே டருஸ்ஸலாம் நேரம் + + + + + கேப் வேர்டே நேரம் + கபே வெர்டே நிலையான நேரம் + கேப் வேர்டே கோடை நேரம் + + + + + சாமோரோ நேரப்படி + + + + + சத்தாம் நேரம் + சத்தாம் நேரப்படி + சத்தாம் பகலொளி நேரம் + + + + + சிலி நேரம் + சிலி நிலையான நேரம் + சிலி கோடை நேரம் + + + + + சீனா நேரம் + சீன நேரப்படி + சீனா பகலொளி நேரம் + + + + + சோய்பால்சன் நேரம் + சோய்பல்சன் நிலையான நேரம் + சோய்பல்சன் கோடை நேரம் + + + + + கிறிஸ்துமஸ் தீவு நேரம் + + + + + கோகோஸ் தீவுகள் நேரம் + + + + + கொலம்பியா நேரம் + கொலம்பியா நிலையான நேரம் + கொலம்பியா கோடை நேரம் + + + + + குக் தீவுகள் நேரம் + குக் தீவுகள் நேரப்படி + குக் தீவுகள் அரை கோடை நேரம் + + + + + கியூபா நேரம் + கியூபா நிலையான நேரம் + கியூபா பகலொளி நேரம் + + + + + டேவிஸ் நேரம் + + + + + ட்யூமோண்ட்-டி உர்வில்லே நேரம் + + + + + கிழக்கு திமோர் நேரம் + + + + + ஈஸ்டர் தீவு நேரம் + ஈஸ்டர் தீவு நிலையான நேரம் + ஈஸ்டர் தீவு கோடை நேரம் + + + + + ஈக்வெடார் நேரம் + + + + + மத்திய ஐரோப்பிய நேரம் + மத்திய ஐரோப்பிய நிலையான நேரம் + மத்திய ஐரோப்பிய கோடை நேரம் + + + + + கிழக்கித்திய ஐரோப்பிய நேரம் + கிழக்கத்திய ஐரோப்பியன் நிலையான நேரம் + கிழக்கித்திய ஐரோப்பிய கோடை நேரம் + + + + + மேற்கத்திய ஐரோப்பிய நேரம் + மேற்கத்திய ஐரோப்பியன் நிலையான நேரம் + மேற்கத்திய ஐரோப்பிய கோடை நேரம் + + + + + ஃபாக்லாந்து தீவுகள் நேரம் + ஃபாக்லாந்து தீவுகள் நிலையான நேரம் + ஃபாக்லாந்து தீவுகள் கோடை நேரம் + + + + + ஃபிஜி நேரம் + ஃபிஜி நேரப்படி + ஃபிஜி கோடை நேரம் + + + + + ஃபிரஞ்சு கயானா நேரம் + + + + + ஃபிரஞ்சு தெற்கத்திய மற்றும் அண்டார்டிக் நேரம் + + + + + கலபகோஸ் நேரம் + + + + + கேம்பியர் நேரம் + + + + + ஜார்ஜியா நேரம் + ஜார்ஜியா நிலையான நேரம் + ஜார்ஜியா கோடை நேரம் + + + + + கில்பர்ட் தீவுகள் நேரம் + + + + + கிரீன்விச் இடைநிலை நேரம் + + + + + கிழக்கு கிரீன்லாந்து நேரம் + கிழக்கு க்ரீன்லாந்து நிலையான நேரம் + கிழக்கு கிரீன்லாந்து கோடை நேரம் + + + + + மேற்கு கிரீன்லாந்து நேரம் + மேற்கு க்ரீன்லாந்து நிலையான நேரம் + மேற்கு கிரீன்லாந்து கோடை நேரம் + + + + + கம் தர நேரம் + + + + + வளைகுடா நேரம் + + + + + கயானா நேரம் + + + + + ஹவாய்-அலேஸியன் நேரம் + ஹவாய்-அலேடன் நிலையான நேரம் + ஹவாய்-அலேஸியன் பகலொளி நேரம் + + + + + ஹாங் காங் நேரம் + ஹாங் காங் நிலையான நேரம் + ஹாங் காங் கோடை நேரம் + + + + + ஹோவ்த் நேரம் + ஹோவ்த் நிலையான நேரம் + ஹோவ்த் கோடை நேரம் + + + + + இந்திய தர நேரம் + + + IST + + + + + இந்திய பெருங்கடல் நேரம் + + + + + இந்தோசீனா நேரம் + + + + + மத்திய இந்தோனேஷியா நேரம் + + + + + கிழக்கித்திய இந்தோனேஷியா நேரம் + + + + + மேற்கத்திய இந்தோனேஷியா நேரம் + + + + + ஈரான் நேரம் + ஈரான் நிலையான நேரம் + ஈரான் பகலொளி நேரம் + + + + + இர்குட்ஸ்க் நேரம் + இர்குட்ஸ்க் நிலையான நேரம் + இர்குட்ஸ்க் கோடை நேரம் + + + + + இஸ்ரேல் நேரம் + இஸ்ரேல் நிலையான நேரம் + இஸ்ரேல் பகலொளி நேரம் + + + + + ஜப்பான் நேரம் + ஜப்பான் நிலையான நேரம் + ஜப்பான் பகலொளி நேரம் + + + + + பெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி நேரம் + பெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி தர நேரம் + பெட்ரோபவ்லோவ்ஸ்க் கம்சட்ஸ்கி கோடை நேரம் + + + + + கிழக்கு கஜகஸ்தான் நேரம் + + + + + மேற்கு கஜகஸ்தான் நேரம் + + + + + கொரியன் நேரம் + கொரியன் தர நேரம் + கொரியன் பகலொளி நேரம் + + + + + கோஸ்ரே நேரம் + + + + + க்ரஸ்னோயார்ஸ்க் நேரம் + க்ரஸ்னோயார்ஸ்க் நிலையான நேரம் + க்ரஸ்னோயார்ஸ்க் கோடை நேரம் + + + + + கிர்கிஸ்தான் நேரம் + + + + + லங்கா நேரம் + + + + + லைன் தீவுகள் நேரம் + + + + + லார்ட் ஹோவ் நேரம் + லார்ட் ஹோவ் தர நேரம் + லார்ட் ஹோவ் பகலொளி நேரம் + + + + + மக்காவ் நேரம் + மக்காவ் தர நேரம் + மக்காவ் கோடை நேரம் + + + + + மாக்கியூரி தீவு நேரம் + + + + + மகதன் நேரம் + மகதன் நிலையான நேரம் + மகதன் கோடை நேரம் + + + + + மலேஷியா நேரம் + + + + + மாலத்தீவு நேரம் + + + + + மார்கியூசாஸ் நேரம் + + + + + மார்ஷல் தீவுகள் நேரம் + + + + + மொரிஷியஸ் நேரம் + மொரிஷியஸ் நிலையான நேரம் + மொரிஷியஸ் கோடை நேரம் + + + + + மவுசன் நேரம் + + + + + உலான் பாடர் நேரம் + உலன் பாடர் நிலையான நேரம் + உலன் பாடர் கோடை நேரம் + + + + + மாஸ்கோ நேரம் + மாஸ்கோ நிலையான நேரம் + மாஸ்கோ கோடை நேரம் + + + + + மியான்மர் நேரம் + + + + + நவ்ரூ நேரம் + + + + + நேபால் நேரம் + + + + + நியூ கலிடோனியா நேரம் + நியூ கலிடோனியா நேரப்படி + நியூ கலிடோனியா கோடை நேரம் + + + + + நியூசிலாந்து நேரம் + நியூசிலாந்து நேரப்படி + நியூசிலாந்து பகலொளி நேரம் + + + + + நியு பௌண்ட்லாந்து நேரம் + நியு பௌண்ட்லாந்து நிலையான நேரம் + நியு பௌண்ட்லாந்து பகலொளி நேரம் + + + + + நியு நேரம் + + + + + நோர்ஃபோக் தீவுகள் நேரம் + + + + + பெர்னாண்டோ டி நோரன்ஹா நேரம் + பெர்னான்டோ டி நோரோன்ஹா நிலையான நேரம் + பெர்னான்டோ டி நோரோன்ஹா கோடை நேரம் + + + + + வடக்கு மரினா தீவுகள் நேரம் + + + + + நோவோசிபிரிஸ்க் நேரம் + நோவோசிபிருஸ்க் தர நேரம் + நோவோசிபிருஸ்க் கோடை நேரம் + + + + + ஓம்ஸ்க் நேரம் + ஒம்ஸ்க் நிலையான நேரம் + ஒம்ஸ்க் கோடை நேரம் + + + + + பாகிஸ்தான் நேரம் + பாகிஸ்தான் நிலையான நேரம் + பாகிஸ்தான் கோடை நேரம் + + + + + பாலவ் நேரம் + + + + + பபுவா நியூ கினியா நேரம் + + + + + பராகுவே நேரம் + பராகுவே நிலையான நேரம் + பராகுவே கோடை நேரம் + + + + + பெரு நேரம் + பெரு நிலையான நேரம் + பெரு கோடை நேரம் + + + + + பிலிப்பைன் நேரம் + பிலிப்பைன் நேரப்படி + பிலிப்பைன் கோடை நேரம் + + + + + ஃபோனிக்ஸ் தீவுகள் நேரம் + + + + + செயின்ட் பியரி மற்றும் மிக்குயிலான் நேரம் + செயின்ட் பியரி மற்றும் மிக்குயிலான் நிலையான நேரம் + செயின்ட் பியரி மற்றும் மிக்குயிலான் பகலொளி நேரம் + + + + + பிட்கார்ன் நேரம் + + + + + போனாபே நேரம் + + + + + கைஜைலோர்டா நேரம் + கைஜைலோர்டா தர நேரம் + கைஜைலோர்டா கோடை நேரம் + + + + + ரீயூனியன் நேரம் + + + + + ரோதேரா நேரம் + + + + + சகலின் நேரம் + சகலின் நிலையான நேரம் + சகலின் கோடை நேரம் + + + + + சமரா நேரம் + சமரா தர நேரம் + சமரா கோடை நேரம் + + + + + சமோவா நேரம் + சமோவா நிலையான நேரம் + சமோவா கோடை நேரம் + + + + + சீசெல்லெஸ் நேரம் + + + + + சிங்கப்பூர் நேரப்படி + + + + + சாலமன் தீவுகள் நேரம் + + + + + தெற்கு ஜார்ஜியா நேரம் + + + + + சூரினாம் நேரம் + + + + + ஸ்யோவா நேரம் + + + + + தஹிதி நேரம் + + + + + தைபே நேரம் + தைபே நிலையான நேரம் + தைபே பகலொளி நேரம் + + + + + தஜிகிஸ்தான் நேரம் + + + + + டோக்கெலாவ் நேரம் + + + + + டோங்கா நேரம் + டோங்கா நேரப்படி + டோங்கா கோடை நேரம் + + + + + சுக் நேரம் + + + + + துர்க்மெனிஸ்தான் நேரம் + துர்க்மெனிஸ்தான் நேரப்படி + துர்க்மெனிஸ்தான் கோடை நேரம் + + + + + துவாலு நேரம் + + + + + உருகுவே நேரம் + உருகுவே நிலையான நேரம் + உருகுவே கோடை நேரம் + + + + + உஸ்பெகிஸ்தான் நேரம் + உஸ்பெகிஸ்தான் நேரப்படி + உஸ்பெகிஸ்தான் கோடை நேரம் + + + + + வனுவாட்டு நேரம் + வனுவாட்டு நேரப்படி + வனுவாட்டு கோடை நேரம் + + + + + வெனிசுலா நேரம் + + + + + வல்டிவோஸ்டோக் நேரம் + வ்லடிவோஸ்டோக் நிலையான நேரம் + வ்லடிவோஸ்டோக் கோடை நேரம் + + + + + வோல்கோக்ராட் நேரம் + வோல்கோக்ராட் நிலையான நேரம் + வோல்கோக்ராட் கோடை நேரம் + + + + + வோஸ்டோக் நேரம் + + + + + வேக் தீவு நேரம் + + + + + வாலிஸ் மற்றும் ஃப்யூடுனா நேரம் + + + + + யகுட்ஸ்க் நேரம் + யகுட்ஸ்க் நிலையான நேரம் + யகுட்ஸ்க் கோடை நேரம் + + + + + யேகாடெரின்பர்க் நேரம் + யேகாடெரின்பர்க் நிலையான நேரம் + யேகாடெரின்பர்க் கோடை நேரம் + + + + + + latn + + tamldec + taml + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##,##0.### + + + + + 0 ஆயிரம் + 0 ஆயிரம் + 00 ஆயிரம் + 00 ஆயிரம் + 000 ஆயிரம் + 000 ஆயிரம் + 0 மில்லியன் + 0 மில்லியன் + 00 மில்லியன் + 00 மில்லியன் + 000 மில்லியன் + 000 மில்லியன் + 0 பில்லியன் + 0 பில்லியன் + 00 பில்லியன் + 00 பில்லியன் + 000 பில்லியன் + 000 பில்லியன் + 0 டிரில்லியன் + 0 டிரில்லியன் + 00 டிரில்லியன் + 00 டிரில்லியன் + 000 டிரில்லியன் + 000 டிரில்லியன் + + + + + 0ஆ + 0ஆ + 00ஆ + 00ஆ + 000ஆ + 000ஆ + 0மி + 0மி + 00மி + 00மி + 000மி + 000மி + 0பி + 0பி + 00பி + 00பி + 000பி + 000பி + 0டி + 0டி + 00டி + 00டி + 000டி + 000டி + + + + + + + #E0 + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + ஐக்கிய அரபு எமிரேட்டு டிர்ஹம் + + + ஆஃப்கான் ஆப்கானி + + + அல்பேனியன் லெக் + + + அர்மேனியன் ட்ராம் + + + நெதர்லேண்ட்ஸ் அன்டிலியன் கில்டர் + நெதர்லேண்ட்ஸ் அன்டிலியன் கில்டர் + நெதர்லேண்ட்ஸ் அன்டிலியன் கில்டர் + + + அங்கோலன் க்வான்ஸா + அங்கோலன் க்வான்ஸா + அங்கோலன் க்வான்ஸா + + + அர்ஜென்டினா பேசோ + அர்ஜென்டினா பேசோ + அர்ஜென்டினா பேசோ + + + ஆஸ்திரேலிய டாலர் + + + அருபன் ஃப்ளோரின் + அருபன் ஃப்ளோரின் + அருபன் ஃப்ளோரின் + + + அஜர்பைசானி மனத் + + + போஸ்னியா-ஹெர்ஸேகோவினா கன்வெர்டிபில் மார்க் + + + பெர்பேடியன் டாலர் + பெர்பேடியன் டாலர் + பெர்பேடியன் டாலர் + + + பங்கலாதேஷி டாகா + + + புல்கேரியன் லெவ் + + + பஹ்ரைனி தினார் + + + புருண்டியன் ஃப்ராங்க் + புருண்டியன் ஃப்ராங்க் + புருண்டியன் ஃப்ராங்க் + + + பெர்முடன் டாலர் + பெர்முடன் டாலர் + பெர்முடன் டாலர் + + + புரூனை டாலர் + + + பொலிவியன் பொலிவியானோ + பொலிவியன் பொலிவியானோ + பொலிவியன் பொலிவியானோ + + + பிரேசிலியன் ரியால் + பிரேசிலியன் ரியால் + பிரேசிலியன் ரியால் + + + பஹாமியன் டாலர் + பஹாமியன் டாலர் + பஹாமியன் டாலர் + + + புடனேஷ் நிகுல்ட்ரம் + + + போட்ஸ்வானா புலா + + + பெலருஷியன் ரூபில் + + + பெலீஷ் டாலர் + பெலீஷ் டாலர் + பெலீஷ் டாலர் + + + கனடியன் டாலர் + கனடியன் டாலர் + கனடியன் டாலர் + CA$ + + + காங்கோல்ஸே ஃப்ராங்க் + காங்கோல்ஸே ஃப்ராங்க் + காங்கோல்ஸே ஃப்ராங்க் + + + சுவிஸ் ஃப்ராங்க் + + + சிலியன் பெசோ + சிலியன் பெசோ + சிலியன் பெசோ + + + சீன யுவான் + + + கொலம்பியன் பெசோ + கொலம்பியன் பெசோ + கொலம்பியன் பெசோ + + + கோஸ்டா ரிகன் கொலோன் + கோஸ்டா ரிகன் கொலோன் + கோஸ்டா ரிகன் கொலோன் + + + கியூபன் கான்வெர்டிபில் பேசோ + கியூபன் கான்வெர்டிபில் பேசோ + கியூபன் கான்வெர்டிபில் பேசோ + + + கியூபன் பெசோ + கியூபன் பெசோ + கியூபன் பெசோ + + + கேப் வெர்டியன் எஸ்குடோ + கேப் வெர்டியன் எஸ்குடோ + கேப் வெர்டியன் எஸ்குடோ + + + செக் குடியரசு கொருனா + + + ஜிபவ்டியென் ஃப்ராங்க் + + + டானிஷ் க்ரோன் + + + டொமினிக்கன் பேசோ + டொமினிக்கன் பேசோ + டொமினிக்கன் பேசோ + + + அல்ஜேரியன் தினார் + அல்ஜேரியன் தினார் + அல்ஜேரியன் தினார் + + + எகிப்திய பவுண்டு + எகிப்திய பவுண்டு + எகிப்திய பவுண்டு + + + இரிடிரியன் நக்ஃபா + + + எத்தியோப்பியன் பிர் + + + யூரோ + + + ஃபிஜியன் டாலர் + + + ஃபாக்லாந்து தீவுகள் பவுண்டு + ஃபாக்லாந்து தீவுகள் பவுண்டு + ஃபாக்லாந்து தீவுகள் பவுண்டு + + + பிரிட்டிஷ் பவுன்ட் ஸ்டெர்லிங் + + + ஜியார்ஜியன் லாரி + + + கானயன் சேடி + கானயன் சேடி + கானயன் சேடி + + + கிப்ரால்டர் பவுண்ட் + + + கேம்பியன் தலாசி + கேம்பியன் தலாசி + கேம்பியன் தலாசி + + + கினியன் ஃப்ராங்க் + கினியன் ஃப்ராங்க் + கினியன் ஃப்ராங்க் + + + குவாடெமெலன் குயூட்ஸல் + குவாடெமெலன் குயூட்ஸல் + குவாடெமெலன் குயூட்ஸல் + + + கயானேஸ் டாலர் + கயானேஸ் டாலர் + கயானேஸ் டாலர் + + + ஹாங்காங் டாலர் + + + ஹோன்டூரன் லெம்பீரா + ஹோன்டூரன் லெம்பீரா + ஹோன்டூரன் லெம்பீரா + + + குரோஷியன் குனா + + + ஹயேத்தியன் கோர்டே + ஹயேத்தியன் கோர்டே + ஹயேத்தியன் கோர்டே + + + ஹங்கேரியன் ஃபோரின்ட் + + + இந்தோனேஷியன் ருபியா + + + இஸ்ரேலி நியூ ஷிகேல் + + + ரூபாய் + + + ஈராக்கி தினார் + + + இரானியன் ரியால் + + + ஐஸ்லாண்டிக் க்ரோனா + + + ஜமைக்கான் டாலர் + ஜமைக்கான் டாலர் + ஜமைக்கான் டாலர் + + + ஜோர்டானியன் டைனர் + + + ஜாப்பனிய யென் + + + கெனியன் ஷில்லிங் + + + கிரிகிஸ்தானி சோம் + + + கம்போடியன் ரியெல் + + + கமோரியன் ஃப்ராங்க் + + + வட கொரிய வான் + + + தென் கொரிய வான் + + + குவைத்தி தினார் + + + கேமன் தீவுகள் டாலர் + கேமன் தீவுகள் டாலர் + கேமன் தீவுகள் டாலர் + + + கஸகஸ்தானி டென்கே + + + லவுட்டியன் கிப் + + + லபனீஸ் பவுண்டு + + + இலங்கை ரூபாய் + + + லிபரியன் டாலர் + லிபரியன் டாலர் + லிபரியன் டாலர் + + + லெசோதோ லோட்டி + + + லிதுவேனியன் லிடஸ் + + + லாத்வியன் லாட்ஸ் + + + லிபியன் தினார் + லிபியன் தினார் + லிபியன் தினார் + + + மொரோக்கோ திர்ஹாம் + மொரோக்கோ திர்ஹாம் + மொரோக்கோ திர்ஹாம் + + + மால்டோவன் லியூ + + + மலகாசி ஏரியரி + + + மெசிடோனியன் தினார் + + + மியான்மா கியாத் + + + மங்கோலியன் டுக்ரிக் + + + மெகனீஸ் படாகா + + + மொரிஷியனியன் ஒகுய்யா + + + மொரீஷியன் ருபீ + + + மால்தீவியன் ருஃபியா + + + மலாவின் குவாச்சா + + + மெக்ஸிகன் பெசோ + மெக்ஸிகன் பெசோ + மெக்ஸிகன் பெசோ + MX$ + + + மலேஷியன் ரிங்கித் + + + மொசாம்பிகேன் மெடிகல் + மொசாம்பிகேன் மெடிகல் + மொசாம்பிகேன் மெடிகல்கள் + + + நமீபியன் டாலர் + + + நைஜீரியன் நைரா + + + நிகாராகுவான் கோர்டோபா + நிகாராகுவான் கோர்டோபா + நிகாராகுவான் கோர்டோபா + + + நார்வேஜியன் க்ரோன் + + + நேபாளீஸ் ருபீ + + + நியூசிலாந்து டாலர் + + + ஓமானி ரியால் + + + பனாமானியன் பால்போபா + பனாமானியன் பால்போபா + பனாமானியன் பால்போபா + + + பெருவியன் நியூவோ சோல் + பெருவியன் நியூவோ சோல் + பெருவியன் நியூவோ சோல் + + + பபுவா நியூ கினியன் கினா + + + ஃபிலிபைன் பேசோ + + + பாக்கிஸ்தானி ருபீ + + + போலிஷ் ஸ்லாட்டி + + + பராகுயான் குவாரானி + பராகுயான் குவாரானி + பராகுயான் குவாரானி + + + கத்தாரி ரியால் + + + ரோமானியன் லியூ + ரோமானியன் லியூ + ரோமானியன் லெய் + + + செர்பியன் தினார் + + + ரஷ்யன் ரூபல் + + + ருவாண்டா ஃப்ராங்க் + + + சவுதி ரியால் + + + சாலமன் தீவுகள் டாலர் + + + சிஷிலோயிஸ் ருபீ + + + சூடானீஸ் பவுண்டு + சூடானீஸ் பவுண்டு + சூடானீஸ் பவுண்டு + + + ஸ்வீடிஷ் க்ரோனா + + + சிங்கப்பூர் டாலர் + + + செயன்ட் ஹெலேனா பவுண்டு + + + செய்ரா லியோனியன் லியோன் + செய்ரா லியோனியன் லியோன் + செய்ரா லியோனியன் லியோன் + + + சொமாலி ஷில்லிங் + + + சூரினாமீஸ் டாலர் + சூரினாமீஸ் டாலர் + சூரினாமீஸ் டாலர் + + + தெற்கு சூடானீஸ் பவுண்டு + தெற்கு சூடானீஸ் பவுண்டு + தெற்கு சூடானீஸ் பவுண்டுகள் + + + சாவ் டோமி மற்றும் பிரின்ஸ்பி டோப்ரா + + + சிரியன் பவுன்ட் + + + சுவாஸி லிலாங்கனி + + + தாய் பாட் + + + தஜிகிஸ்தானி சோமோனி + + + துர்க்மேனிஸ்தானி மனத் + + + துனிஷியன் தினார் + துனிஷியன் தினார் + துனிஷியன் தினார் + + + தொங்கான் பங்கா + தொங்கான் பங்கா + தொங்கான் பங்கா + + + துர்க்கிஸ் லீரா + + + டிரினாட் மற்றும் டோபாகோ டாலர் + டிரினாட் மற்றும் டோபாகோ டாலர் + டிரினாட் மற்றும் டோபாகோ டாலர் + + + புதிய தைவான் டாலர் + + + தன்ஸானியன் ஷில்லிங் + + + உக்ரைனியன் ஹிரைவ்னியா + + + உகாண்டன் ஷில்லிங் + + + யூ.எஸ். டாலர் + யூ.எஸ். டாலர் + யூ.எஸ். டாலர் + $ + + + உருகுவேயன் பேசோ + உருகுவேயன் பேசோ + உருகுவேயன் பேசோ + + + உஜ்பெகிஸ்தான் சோம் + + + வெனிசுலியன் போலிவர் + வெனிசுலியன் போலிவர் + வெனிசுலியன் போலிவர் + + + வியட்நாமீஸ் டாங் + + + வனுவாட்டு வாட்டு + + + சமோவான் தாலா + சமோவான் தாலா + சமோவான் தாலா + + + CFA ஃப்ராங்க் BEAC + CFA ஃப்ராங்க் BEAC + CFA ஃப்ராங்க் BEAC + + + கிழக்கு கரீபியன் டாலர் + கிழக்கு கரீபியன் டாலர் + கிழக்கு கரீபியன் டாலர் + EC$ + + + CFA ஃப்ராங்க் BCEAO + CFA ஃப்ராங்க் BCEAO + CFA ஃப்ராங்க் BCEAO + CFA + + + CFP ஃப்ராங்க் + CFP ஃப்ராங்க் + CFP ஃப்ராங்க்ஸ் + + + தெரியாத நாணயம் + தெரியாத நாணயம் + தெரியாத நாணயம் + + + யெமினி ரியால் + + + தென் ஆப்ரிக்க ராண்ட் + + + ஸாம்பியன் குவாசா (1968–2012) + + + ஸாம்பியன் குவாசா + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} ஜி-ஃபோர்ஸ் + {0} ஜி-ஃபோர்ஸ் + + + {0}நிமிடம் + {0}நிமிடங்கள் + + + {0}விநாடி + {0}விநாடிகள் + + + {0}டிகிரி + {0}டிகிரி + + + {0} ஏக்கர் + {0} ஏக்கர் + + + {0} ஹெக்டேர் + {0} ஹெக்டேர் + + + {0} சதுர அடி + {0} சதுர அடி + + + {0} சதுர கிலோமீட்டர் + {0} சதுர கிலோமீட்டர் + + + {0} சதுர மீட்டர் + {0} சதுர மீட்டர் + + + {0} சதுர மைல் + {0} சதுர மைல் + + + {0} நாள் + {0} நாட்கள் + + + {0} மணிநேரம் + {0} மணிநேரம் + + + {0} மில்லிவிநாடி + {0} மில்லிவிநாடி + + + {0} நிமிடம் + {0} நிமிடங்கள் + + + {0} மாதம் + {0} மாதங்கள் + + + {0} வினாடி + {0} விநாடிகள் + + + {0} வாரம் + {0} வாரங்கள் + + + {0} ஆண்டு + {0} ஆண்டுகள் + + + {0} சென்டிமீட்டர் + {0} சென்டிமீட்டர்கள் + + + {0} அடி + {0} அடி + + + {0} அங்குலம் + {0} அங்குலங்கள் + + + {0} கிலோமீட்டர் + {0} கிலோமீட்டர்கள் + + + {0} ஒளி ஆண்டு + {0} ஒளி ஆண்டுகள் + + + {0} மீட்டர் + {0} மீட்டர்கள் + + + {0} மைல் + {0} மைல்கள் + + + {0} மில்லிமீட்டர் + {0} மில்லிமீட்டர்கள் + + + {0} பைக்கோமீட்டர் + {0} பைக்கோமீட்டர்கள் + + + {0} நீட்டளவு + {0} நீட்டளவுகள் + + + {0} கிராம் + {0} கிராம்கள் + + + {0} கிலோகிராம் + {0} கிலோகிராம்கள் + + + {0} அவுன்ஸ் + {0} அவுன்ஸ்கள் + + + {0} பவுண்டு + {0} பவுண்டுகள் + + + {0} குதிரைவேகம் + {0} குதிரைவேகம் + + + {0} கிலோவாட் + {0} கிலோவாட் + + + {0} வாட் + {0} வாட் + + + {0} ஹெக்டோபாஸ்கல் + {0} ஹெக்டோபாஸ்கல் + + + {0} பாதரச அங்குலம் + {0} பாதரச அங்குலம் + + + {0} மில்லிபார் + {0} மில்லிபார் + + + {0} கிலோமீட்டர்/மணிநேரம் + {0} கிலோமீட்டர்/மணிநேரம் + + + {0} மீட்டர்/விநாடி + {0} மீட்டர்/விநாடி + + + {0} மைல்/மணிநேரம் + {0} மைல்/மணிநேரம் + + + {0}டிகிரி செல்சியஸ் + {0}டிகிரி செல்சியஸ் + + + {0}டிகிரி ஃபாரன்ஹீட் + {0}டிகிரி ஃபாரன்ஹீட் + + + {0} கன கிலோமீட்டர் + {0} கன கிலோமீட்டர் + + + {0} கன மைல் + {0} கன மைல் + + + {0} லிட்டர் + {0} லிட்டர் + + + + + {0}/{1} + + + {0} ஜி.ஃபோ. + {0} ஜி.ஃபோ. + + + {0}நிமி. + {0}நிமி. + + + {0}வி. + {0}வி. + + + {0}° + {0}° + + + {0} ஏக். + {0} ஏக். + + + {0} ஹெக். + {0} ஹெக். + + + {0} ச.அ. + {0} ச.அ. + + + {0} ச.கிமீ. + {0} ச.கிமீ. + + + {0} ச.மீ. + {0} ச.மீ. + + + {0} ச. மை. + {0} ச. மை. + + + {0} நாள் + {0} நாட்கள் + + + {0} மணிநேரம் + {0} மணிநேரம் + + + {0} மி.வி. + {0} மி.வி. + + + {0} நிமிடம் + {0} நிமிடங்கள் + + + {0} மாதம் + {0} மாதங்கள் + + + {0} வினாடி + {0} விநாடிகள் + + + {0} வாரம் + {0} வாரங்கள் + + + {0} ஆண்டு + {0} ஆண்டுகள் + + + {0} செ.மீ. + {0} செ.மீ. + + + {0} அடி + {0} அடி + + + {0} அங். + {0} அங். + + + {0} கி.மீ. + {0} கி.மீ. + + + {0} ஒ.ஆ. + {0} ஒ.ஆ. + + + {0} மீ. + {0} மீ. + + + {0} மை. + {0} மை. + + + {0} மி.மீ. + {0} மி.மீ. + + + {0} பை.மீ. + {0} பை.மீ. + + + {0} நீட். + {0} நீட். + + + {0} கி. + {0} கி. + + + {0} கி.கி. + {0} கி.கி. + + + {0} அவு. + {0} அவு. + + + {0} பவு. + {0} பவு. + + + {0} கு.வே. + {0} கு.வே. + + + {0} கி.வா. + {0} கி.வா. + + + {0} வா. + {0} வா. + + + {0} ஹெ.பாஸ். + {0} ஹெ.பாஸ். + + + {0} பா.அங். + {0} பா.அங். + + + {0} மி.பா. + {0} மி.பா. + + + {0} கி.மீ./ம.நே. + {0} கி.மீ./ம.நே. + + + {0} மீட்டர்/விநாடி + {0} மீ/வி + + + {0} மை/ம.நே. + {0} மை/ம.நே. + + + {0}°செ. + {0}°செ. + + + {0}°ஃபா. + {0}°ஃபா. + + + {0} கன.கி.மீ. + {0} கன.கி.மீ. + + + {0} க.மை. + {0} க.மை. + + + {0} லி. + {0} லி. + + + + + {0}/{1} + + + {0} ஜி.ஃபோ. + {0} ஜி.ஃபோ. + + + {0}நிமி. + {0}நிமி. + + + {0}வி. + {0}வி. + + + {0}° + {0}° + + + {0} ஏக். + {0} ஏக். + + + {0} ஹெக். + {0} ஹெக். + + + {0} ச.அ. + {0} ச.அ. + + + {0} ச.கிமீ. + {0} ச.கிமீ. + + + {0} ச.மீ. + {0} ச.மீ. + + + {0} ச. மை. + {0} ச. மை. + + + {0} நா + {0} நா + + + {0} ம.நே. + {0} ம.நே. + + + {0} மி.வி. + {0} மி.வி. + + + {0} நிமி. + {0} நிமி. + + + {0} மா + {0} மா + + + {0} வி. + {0} வி. + + + {0} வா + {0} வா + + + {0} ஆ + {0} ஆ + + + {0} செ.மீ. + {0} செ.மீ. + + + {0} அடி + {0} அடி + + + {0} அங். + {0} அங். + + + {0} கி.மீ. + {0} கி.மீ. + + + {0} ஒ.ஆ. + {0} ஒ.ஆ. + + + {0} மீ. + {0} மீ. + + + {0} மை. + {0} மை. + + + {0} மி.மீ. + {0} மி.மீ. + + + {0} பை.மீ. + {0} பை.மீ. + + + {0} நீட். + {0} நீட். + + + {0} கி. + {0} கி. + + + {0} கி.கி. + {0} கி.கி. + + + {0} அவு. + {0} அவு. + + + {0} பவு. + {0} பவு. + + + {0} கு.வே. + {0} கு.வே. + + + {0} கி.வா. + {0} கி.வா. + + + {0} வா. + {0} வா. + + + {0} ஹெ.பா. + {0} ஹெ.பா. + + + {0} பா.அங். + {0} பா.அங். + + + {0} மி.பா. + {0} மி.பா. + + + {0} கி.மீ./ம. + {0} கி.மீ./ம + + + {0} மீ/வி + {0} மீ/வி + + + {0} மை/ம.நே. + {0} மை/ம.நே. + + + {0}° + {0}° + + + {0}°ஃபா. + {0}°ஃபா. + + + {0} க.கி.மீ. + {0} க.கி.மீ. + + + {0} க.மை. + {0} க.மை. + + + {0} லி. + {0} லி. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} மற்றும் {1} + {0} மற்றும் {1} + + + + + ஆம்:ஆ + இல்லை:இ + + + + diff --git a/library/Zend/Locale/Data/ta_IN.xml b/library/Zend/Locale/Data/ta_IN.xml new file mode 100755 index 000000000..6ee4e0db3 --- /dev/null +++ b/library/Zend/Locale/Data/ta_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ta_LK.xml b/library/Zend/Locale/Data/ta_LK.xml new file mode 100755 index 000000000..8fe0c3cc8 --- /dev/null +++ b/library/Zend/Locale/Data/ta_LK.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Rs. + + + + diff --git a/library/Zend/Locale/Data/ta_MY.xml b/library/Zend/Locale/Data/ta_MY.xml new file mode 100755 index 000000000..a302cfb8a --- /dev/null +++ b/library/Zend/Locale/Data/ta_MY.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + புருணை டாரு சலாம் நேரம் + + + + + ∅∅∅ + + + + + மத்திய இந்தோனேசிய நேரம் + + + + + கிழக்கத்திய இந்தோனேசிய நேரம் + + + + + மேற்கத்திய இந்தோனேசிய நேரம் + + + + + மலேசிய நேரம் + + + MYT + + + + + சிங்கப்பூர் நேரம் + + + SGT + + + + + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + மலேசிய ரிங்கிட் + RM + + + S$ + + + + + diff --git a/library/Zend/Locale/Data/ta_SG.xml b/library/Zend/Locale/Data/ta_SG.xml new file mode 100755 index 000000000..2070c2ffe --- /dev/null +++ b/library/Zend/Locale/Data/ta_SG.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + புருணை டாரு சலாம் நேரம் + + + + + ∅∅∅ + + + + + மத்திய இந்தோனேசிய நேரம் + + + + + கிழக்கத்திய இந்தோனேசிய நேரம் + + + + + மேற்கத்திய இந்தோனேசிய நேரம் + + + + + மலேசிய நேரம் + + + MYT + + + + + சிங்கப்பூர் நேரம் + + + SGT + + + + + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + மலேசிய ரிங்கிட் + RM + + + $ + + + US$ + + + + + diff --git a/library/Zend/Locale/Data/te.xml b/library/Zend/Locale/Data/te.xml new file mode 100755 index 000000000..6696d1a7e --- /dev/null +++ b/library/Zend/Locale/Data/te.xml @@ -0,0 +1,5600 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + అఫార్ + అబ్ఖాజియన్ + ఆఖినీస్ + అకోలి + అడాంగ్మే + అడిగాబ్జే + అవేస్టాన్ + ఆఫ్రికాన్స్ + అఫ్రిహిలి + ఐను + అకాన్ + అక్కాడియాన్ + అలియుట్ + దక్షిణ ఆల్టై + అమ్హారిక్ + అరగోనిస్ + ప్రాచీన ఆగ్లం + ఆంగిక + అరబిక్ + ఆధునిక ప్రామాణిక అరబిక్ + అరామేక్ + అరౌకేనియన్ + అరాపాహో + అరావాక్ + అస్సామీ + అస్టురియాన్ + అవారిక్ + అవధి + ఐమారా + అజర్బైజాని + అజెరి + బష్కిర్ + బాలుచి + బాలినీస్ + బసా + బెలరుశియన్ + బేజా + బెంబా + బల్గేరియన్ + భోజ్ పూరి + బిస్లామా + బికోల్ + బిని + సిక్ సికా + బంబారా + బెంగాలీ + టిబెటన్ + బ్రెటన్ + బ్రాజ్ + బోడో + బోస్నియన్ + బురియట్ + బ్యుగినిస్ + బ్లిన్ + కెటలాన్ + కేడ్డో + కేరిబ్ + అట్సామ్ + చెచెన్ + సేబుఆనో + చమర్రో + చిబ్చా + చాగటై + చూకిస్ + మారి + చినూక్ జార్గన్ + చొచ్కతావ్ + చిపెవ్యాన్ + చెరోకీ + చేయేన్ + సొరాని కుర్దిష్ + కోర్సికన్ + కోప్టిక్ + క్రి + క్రిమియన్ టర్కిష్ + చెక్ + కషుబియన్ + చర్చ స్లావిక్ + చువాష్ + వెల్ష్ + డేనిష్ + డకోటా + డార్గ్వా + జర్మన్ + ఆస్ట్రేలియన్ జర్మన్ + స్విస్ హై జర్మన్ + డెలావేర్ + స్లేవ్ + డోగ్రిబ్ + డింకా + డోగ్రి + లోవర్ సోర్బియన్ + దుఆలా + మధ్యమ డచ్ + దివేహి + డ్యులా + జొన్ఖా + ఈవీ + ఎఫిక్ + ప్రాచీన ఇజిప్షియన్ + ఏకాజక్ + గ్రీక్ + ఎలామైట్ + ఆంగ్లం + ఆస్ట్రేలియన్ ఇంగ్లీష్ + కెనడియన్ ఇంగ్లీష్ + బ్రిటిష్ ఇంగ్లీష్ + యు.కె. ఇంగ్లీష్ + అమెరికన్ ఇంగ్లీష్ + యు.ఎస్. ఇంగ్లీష్ + మధ్యమ ఆంగ్లం + ఎస్పరెన్టొ + స్పానిష్ + లాటిన్ అమెరికెన్ స్పానిష్ + యూరోపియన్ స్పానిష్ + మెక్సికన్ స్పానిష్ + ఈస్టొనియన్ + బాస్క్ + ఎవోండొ + పర్షియన్ + ఫాంగ్ + ఫాంటి + ఫ్యుల + ఫిన్నిష్ + ఫిలిపినో + ఫిజియన్ + ఫారోయీజ్ + ఫాన్ + ఫ్రెంచ్ + కెనడియెన్ ఫ్రెంచ్ + స్విస్ ఫ్రెంచ్ + మధ్యమ ప్రెంచ్ + ప్రాచీన ప్రెంచ్ + ఉత్తర ఫ్రిసియన్ + తూర్పు ఫ్రిసియన్ + ఫ్రియులియన్ + పశ్చిమ ఫ్రిసియన్ + ఐరిష్ + గా + గాయో + గ్బాయా + స్కాటిష్ గేలిక్ + జీజ్ + గిల్బర్టీస్ + గెలిషియన్ + మధ్యమ హై జర్మన్ + గురాని + ప్రాచీన హై జర్మన్ + గోండి + గోరోంటలా + గోథిక్ + గ్రేబో + ప్రాచీన గ్రీక్ + స్విస్ జర్మన్ + గుజరాతి + మంకస్ + గ్విచిన్ + హౌసా + హైడా + హవాయియన్ + హీబ్రు + హిందీ + హిలి గేయినోన్ + హిట్టిటే + మోంగ్ + హిరి మోటు + క్రొయెషియన్ + అప్పర్ సోర్బియన్ + హైతియన్ + హన్గేరియన్ + హుపా + ఆర్మేనియన్ + హిరేరో + ఇంటర్లింగ్వా + ఐబాన్ + ఇబిబియో + ఇండోనేషియన్ + ఇంటర్ లింగ్ + ఇగ్బో + శిషువన్ ఈ + ఇనూపైఏక్ + ఐయోకో + ఇంగుష్ + ఈడౌ + ఐస్లాండిక్ + ఇటాలియన్ + ఇనుక్టిటుట్ + జాపనీస్ + లోజ్బాన్ + జ్యుడియో-పర్షియన్ + జ్యుడియో-అరబిక్ + జావనీస్ + జార్జియన్ + కారా-కల్పాక్ + కాబిల్ + కాచిన్ + జ్యూ + కంబా + కావి + కబార్డియన్ + ట్యాప్ + కోరో + కోంగో + ఖాసి + ఖటోనీస్ + కికుయు + క్వాన్యామ + కజఖ్ + కలాల్లిసూట్ + ఖ్మేర్ + కిమ్బుండు + కన్నడ + కొరియన్ + కొంకణి + కోస్రేయన్ + పెల్లే + కానురి + కరచే-బల్కార్ + కరేలియన్ + కూరుఖ్ + కాశ్మీరి + కర్డిష్ + కుమ్యిక్ + కుటేనై + కోమి + కోర్నిష్ + కిర్గిజ్ + లాటిన్ + లాడినో + లాహండా + లాంబా + లుక్సంబర్గిష్ + లేజ్ఘియన్ + గాండా + లిమ్బర్గిష్ + లింగాల + లావో + మొంగో + లోజి + లిథుయేనియన్ + లూబ-కటాంగ + లుబా-లులువ + లుఇసేనో + లుండా + లువో + లుషై + లాట్వియన్ + మాదురీస్ + మగాహి + మైథిలి + మకాసార్ + మండింగో + మాసాయి + మొక్షా + మండార్ + మెండే + మొరిస్యేన్ + మాలాగసి + మధ్యమ ఐరిష్ + మార్షలీస్ + మయోరి + మికమాక్ + మినాంగ్కాబో + మసడోనియన్ + మలయాళం + మంగోలియన్ + మంచు + మణిపూరి + మోహుక్ + మోస్సి + మరాఠీ + మలేయ్ + మాల్టీస్ + బహుళ భాషలు + క్రీక్ + మిరాండిస్ + మార్వాడి + బర్మీస్ + ఎర్జియా + నౌరు + నియాపోలిటన్ + నార్వీజియన్ బొక్మాల్ + ఉత్తర దెబెలె + లో జర్మన్ + నేపాలి + నెవారి + దోంగా + నియాస్ + నియూఇయాన్ + డచ్ + ఫ్లెమిష్ + నార్విజియాన్ న్యోర్స్క్ + నార్విజియాన్ + నోగై + ప్రాచిన నోర్స్ + న్కో + దక్షిణ దెబెలె + ఉత్తర సోతో + నవాహో + సాంప్రదాయ న్యుఆరి + న్యాన్జా + న్యంవేజి + న్యాన్కోలె + నిఓరో + జీమా + ఆక్సిటన్ + చేవా + ఒరోమో + ఒరియా + ఒసేటిక్ + ఒసాజ్ + ఒట్టోమన్ టర్కిష్ + పంజాబీ + పంగా సినాన్ + పహ్లావి + పంపగ్న + పపియమేంటో + పాలుఆన్ + ప్రాచీన పర్షియన్ + ఫోనికన్ + పాలీ + పోలిష్ + పోహ్న్పెయన్ + ప్రాచీన ప్రోవెంసాల్ + పాష్టో + పుష్టో + పోర్చుగీస్ + బ్రెజీలియన్ పోర్చుగీస్ + యూరోపియన్ పోర్చుగీస్ + కెషుయా + రాజస్తాని + రాపన్యుయి + రారోటొంగాన్ + రోమన్ష్ + రండి + రోమానియన్ + మొల్డావియన్ + రోమానీ + రూట్ + రష్యన్ + ఆరోమేనియన్ + కిన్యర్వాండా + సంస్కృతం + సండావి + యాకుట్ + సమారిటన్ అరమేక్ + ససక్ + సంటాలి + సార్డీనియన్ + సిసిలియన్ + స్కాట్స్ + సింధీ + ఉత్తర సామి + సేల్కప్ + సాంగో + ప్రాచీన ఐరిష్ + సేర్బో-క్రొయేషియన్ + షాన్ + సింహళం + సిడామో + స్లోవాక్ + స్లోవేనియాన్ + సమోవన్ + దక్షిణ సామి + లులే సామి + ఇనారి సామి + స్కోల్ట్ సామి + షోన + సోనింకి + సోమాలి + సోగ్డియన్ + అల్బేనియన్ + సెర్బియన్ + స్రానన్ టోనగో + సెరేర్ + స్వాతి + దక్షిణ సోతో + సుడానీస్ + సుకుమా + సుసు + సుమేరియాన్ + స్వీడిష్ + స్వాహిలి + కొమొరియన్ + సాంప్రదాయ సిరియాక్ + సిరియాక్ + తమిళము + తెలుగు + టింనే + టెరెనో + టేటం + తజిక్ + థాయ్ + తిగ్రిన్యా + టీగ్రె + టివ్ + తుర్కమెన్ + టోకెలావ్ + తగలోగ్ + క్లింగాన్ + లింగిట్ + టామషేక్ + సెటస్వానా + టాంగాన్ + న్యాసా టోన్గా + టోక్ పిసిన్ + టర్కిష్ + సోంగా + శింషీయన్ + టాటర్ + టుంబుకా + టువాలు + ట్వి + తహితియన్ + టువినియన్ + ఉడ్ముర్ట్ + ఉయ్‌ఘర్ + ఉగారిటిక్ + ఉక్రేనియన్ + ఉమ్బుండు + తెలియని భాష + ఉర్దూ + ఉజ్బెక్ + వాయి + వెండా + వియత్నామీస్ + వోలాపుక్ + వోటిక్ + వాలూన్ + వాలామో + వారే + వాషో + వొలాఫ్ + కల్మిక్ + షోసా + యాఒ + యాపిస్ + ఇడ్డిష్ + యోరుబా + కాంటనీస్ + జువాన్ + జపోటెక్ + బ్లిసింబల్స్ + జెనాగా + ప్రామాణిక మొరొకన్ తమజియట్ + చైనీస్ + సరళీకృత చైనీస్ + సాంప్రదాయ చైనీస్ + జూలూ + జుని + లిపి లేదు + జాజా + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ప్రపంచం + ఆఫ్రికా + ఉత్తర అమెరికా + దక్షిణ అమెరికా + ఒషీనియ + పశ్చిమ ఆఫ్రికా భూభాగం + మధ్యమ అమెరికా + తూర్పు ఆఫ్రికా + ఉత్తర ఆఫ్రికా + మధ్యమ ఆఫ్రికా + దక్షిణ ఆఫ్రికా భూభాగం + అమెరికాలు + ఉత్తర అమెరికా భూభాగం + కరిబ్బియన్ + తూర్పు ఆసియా + దక్షిణ ఆసియా + నైరుతి ఆసియా + దక్షిణ ఐరోపా + ఆస్ట్రేలేసియా + మెలనేశియ + మైక్రోనేశియ ప్రాంతం + పాలినేషియా + ఆసియా + మధ్య ఆసియా + పడమటి ఆశియా + ఐరోపా + తూర్పు ఐరోపా + ఉత్తర ఐరోపా + పశ్చిమ ఐరోపా + లాటిన్ అమెరికా + ఎసెషన్ దీవి + అండొర్రా + యునైటెడ్ అరబ్ ఎమిరేట్స్ + ఆఫ్ఘనిస్తాన్ + ఆంటిగ్వా మరియు బార్బుడా + ఆంగవిల్లా + అల్బేనియా + ఆర్మేనియా + నేదేర్లేండ్స్ అంటిల్లిస్ + అంగోలా + అంటార్కటికా + అర్జెంటీనా + అమెరికన్ సమోవా + ఆస్ట్రియా + ఆస్ట్రేలియా + అరుబా + ఆలేండ్ దీవులు + అజర్బైజాన్ + బోస్నియా మరియు హెర్జెగొవీనా + బార్బడోస్ + బంగ్లాదేశ్ + బెల్జియం + బుర్కినా ఫాసో + బల్గేరియా + బహ్రెయిన్ + బురుండి + బెనిన్ + సెంట్ బర్తేలెమీ + బెర్ముడా + బ్రూనై + బొలీవియా + కరీబియన్ నెదర్లాండ్స్ + బ్రెజిల్ + బహామాస్ + భూటాన్ + బొవెట్ దీవి + బోట్స్వానా + బెలారస్ + బెలిజ్ + కెనడా + కోకోస్ దీవులు + కాంగో- కిన్షాసా + కాంగో (DRC) + సెంట్రల్ ఆఫ్రికన్ రిపబ్లిక్ + కాంగో- బ్రాజావిల్లి + కాంగో (రిపబ్లిక్) + స్విట్జర్లాండ్ + ఐవరీ కోస్ట్ + కుక్ దీవులు + చిలీ + కామెరూన్ + చైనా + కొలంబియా + క్లిప్పర్టన్ దీవి + కోస్టారికా + క్యూబా + కేప్ వెర్డే + కురాకవో + క్రిస్మస్ దీవి + సైప్రస్ + చెక్ రిపబ్లిక్ + జర్మనీ + డియాగో గార్సియా + జిబౌటి + డెన్మార్క్ + డోమెనిక + డొమెనికన్ రిపబ్లిక్ + అల్జీరియా + స్యూటా మరియు మెలిల్లా + ఈక్వడార్ + ఎస్టోనియా + ఈజిప్ట్ + పడమటి సహారా + ఎరిట్రియా + స్పెయిన్ + ఇథియోపియా + యురోపియన్ యునియన్ + ఫిన్లాండ్ + ఫిజీ + ఫాక్‌ల్యాండ్ దీవులు + ఫాక్‌ల్యాండ్ దీవులు (Islas Malvinas) + మైక్రోనేశియ + ఫారో దీవులు + ఫ్రాన్స్‌ + గాబన్ + యునైటెడ్ కింగ్‌డమ్ + యు.కె. + గ్రెనెడా + జార్జియా + ఫ్రెంచ్ గియానా + గ్వేర్నసే + ఘనా + జిబ్రాల్టార్ + గ్రీన్‌లాండ్ + గాంబియా + గినియా + గ్వాడేలోప్ + ఎక్వేటోరియాల్ గినియా + గ్రీస్ + దక్షిణ జార్జియా మరియు దక్షిణ సాండ్విచ్ దీవులు + గ్వాటిమాల + గ్వామ్ + గినియా-బిస్సావ్ + గయానా + హాంకాంగ్ ఎస్ఏఆర్ చైనా + హాంకాంగ్ + హెర్డ్ & మాక్ డోనాల్డ్ దీవులు + హోండురాస్ + క్రోయేషియా + హైటి + హంగేరీ + కేనరీ దీవులు + ఇండోనేషియా + ఐర్లాండ్ + ఇజ్రాయిల్ + ఐల్ ఆఫ్ మాన్ + భారత దేశం + బ్రిటిష్ భారతీయ ఓషన్ ప్రాంతం + ఇరాక్ + ఇరాన్ + ఐస్లాండ్ + ఇటలీ + జెర్సీ + జమైకా + జోర్డాన్ + జపాన్ + కెన్యా + కిర్గిజిస్తాన్ + కంబోడియా + కిరిబాటి + కొమొరోస్ + సెంట్ కిట్ట్స్ మరియు నెవిస్ + ఉత్తర కొరియా + దక్షిణ కొరియా + కువైట్ + కేమాన్ దీవులు + కజకస్తాన్ + లావోస్ + లెబనాన్ + సెంట్ లూసియా + లిక్టెస్టేన్ + శ్రీలంక + లైబీరియా + లెసోతో + లిథువేనియా + లక్సంబర్గ్ + లాత్వియా + లిబియా + మొరాక్కో + మొనాకో + మోల్డోవా + మోంటేనేగ్రో + సెంట్ మార్టిన్ + మడగాస్కర్ + మార్షల్ దీవులు + మేసిడోనియా + మేసిడోనియా (FYROM) + మాలి + మయన్మార్ (బర్మా) + మంగోలియా + మాకావ్ ఎస్ఏఆర్ చైనా + మకావు + ఉత్తర మరియానా దీవులు + మార్టినిక్ + మౌరిటేనియా + మోంట్సేర్రాట్ + మాల్టా + మారిషస్ + మాల్దీవులు + మాలావి + మెక్సికో + మలేషియా + మొజాంబిక్ + నమీబియా + క్రొత్త కాలెడోనియా + నైజర్ + నార్ఫాక్ దీవి + నైజీరియా + నికరాగువా + నెదర్లాండ్స్ + నార్వే + నేపాల్ + నౌరు + నియు + న్యూజిలాండ్ + ఒమన్ + పనామా + పెరూ + ఫ్రెంచ్ పోలినిషియా + పాపువా న్యు గినియా + ఫిలిప్పీన్స్ + పాకిస్తాన్ + పోలాండ్ + సెంట్ పియెర్ మరియు మికెలాన్ + పిట్‌కెయిర్న్ దీవులు + ఫ్యూర్టో రికో + పాలిస్తినియాన్ ప్రాంతం + పాలస్తీనా + పోర్చుగల్ + పలావు + పెరగువే + కతర్ + ఒషీనియా బయటున్నవి + రియూనియన్ + రోమానియా + సెర్బియా + రష్యా + రువాండా + సౌదీ అరేబియా + సోలమన్ దీవులు + సీషెల్స్ + సూడాన్ + స్వీడన్ + సింగపూర్ + సెంట్ హెలినా + స్లోవేనియా + స్వాల్బార్డ్ మరియు యాన్ మాయేన్ + స్లోవేకియా + సియెర్రా లియాన్ + సాన్ మారినో + సెనెగల్ + సోమాలియా + సురినామ్ + దక్షిణ సూడాన్ + సావోటోమ్ మరియు ప్రిన్సిపే + ఎల్ సాల్వడోర్ + సింట్ మార్టెన్ + సిరియా + స్వాజీలేండ్ + ట్రిస్టన్ డ కన్హా + తుర్క్ మరియు కాలికోస్ దీవులు + చాద్ + ఫ్రెంచ్ దక్షిణ ప్రాంతాలు + టోగో + థాయిలాండ్ + తజికిస్తాన్ + టోకేలావ్ + టిమోర్-లెస్టె + తూర్పు తైమూర్ + తుర్కమేనిస్తాన్ + ట్యునీషియా + టోంగా + టర్కీ + ట్రినిడాడ్ మరియు టొబాగో + టువాలు + తైవాన్ + టాంజానియా + ఉక్రెయిన్ + ఉగాండా + సంయుక్త రాజ్య అమెరికా బయట ఉన్న దీవులు + అమెరికా సంయుక్త రాష్ట్రాలు + యు.ఎస్. + ఉరుగువే + ఉజ్బెకిస్తాన్ + వాటికన్ నగరం + సెంట్ విన్సెంట్ మరియు గ్రెనడీన్స్ + వెనుజువేలా + బ్రిటిష్ వర్జిన్ దీవులు + యు.ఎస్. వర్జిన్ దీవులు + వియత్నాం + వనాటు + వాలిస్ మరియు ఫ్యుత్యునా + సమోవా + కొసోవో + యెమెన్ + మాయొట్టి + దక్షిణ ఆఫ్రికా + జాంబియా + జింబాబ్వే + తెలియని ప్రాంతం + + + ప్రాచీన ఙర్మన వర్ణక్రమం + 1996 ఙర్మన వర్ణక్రమం + మోనోటోనిక్ + పిన్‌యిన్ రోమనైజేషన్ + పాలీటోనిక్ + కంప్యూటర్ + సవరించబడిన వర్ణక్రమం + వేడ్-గైల్స్ రోమనైజేషన్ + + + క్యాలెండర్ + చిహ్నాలను క్రమబద్ధీకరించడాన్ని విస్మరించు + వ్యతిరేక ఉచ్ఛారణ క్రమబద్ధీకరణ + అప్పర్‌కేస్‌/లోయర్ కేస్ క్రమం + కేస్ సెన్సిటివ్ క్రమబద్ధీకరణ + కానా క్రమబద్ధీకరణ + క్రమబద్ధీకరణ క్రమం + సాధారణీకరించిన క్రమబద్ధీకరణ + సంఖ్యాత్మక క్రమబద్ధీకరణ + క్రమబద్ధీకరణ సామర్థ్యం + కరెన్సీ + సంఖ్యలు + సమయ మండలి + లొకేల్ రూపాంతరం + చిహ్నాలుగా క్రమబద్ధీకరించు + ప్రైవేట్-ఉపయోగం + + + అరబిక్-ఇండిక్ అంకెలు + పొడిగించబడిన అరబిక్-ఇండిక్ అంకెలు + అమెరికా సంఖ్యలు + అమెరికన్ చిన్న సంఖ్యలు + బెంగాలీ అంకెలు + సాంప్రదాయ చైనీస్ క్రమబద్ధీకరణ క్రమం - Big5 + బుద్ధుల క్యాలెండర్‌ + చైనీస్ క్యాలెండర్ + కాప్టిక్ క్యాలెండర్ + దేవనాగరి అంకెలు + నిఘంటువు క్రమబద్ధీకరణ క్రమం + డిఫాల్ట్ యూనీకోడ్ క్రమబద్ధీకరణ క్రమం + ఎథియోపిక్ సంఖ్యలు + ఎపోథిక్ క్యాలెండర్ + ఎథోపిక్ అమేటే అలెమ్ క్యాలెండర్ + ఆర్థిక సంఖ్యలు + పూర్తి వెడల్పు అంకెలు + సరళీకృత చైనీస్ క్రమబద్ధీకరణ క్రమం - GB2312 + జార్జియన్ సంఖ్యలు + గ్రేగోరియన్ క్యాలెండర్ + గ్రీక్ సంఖ్యలు + గ్రీక్ చిన్న సంఖ్యలు + గుజరాతీ అంకెలు + గుర్ముఖీ అంకెలు + చైనీయుల దశాంశ సంఖ్యలు + సరళీకృతం చెయ్యబడిన చైనీయుల సంఖ్యలు + సరళీకృతం చెయ్యబడిన చైనీయుల ఆర్థిక సంఖ్యలు + సాంప్రదాయ చైనీయుల సంఖ్యలు + సాంప్రదాయ చైనీయుల ఆర్థిక సంఖ్యలు + హెర్బ్యూ సంఖ్యలు + హెబ్ర్యూ క్యాలెండర్ + అన్నింటినీ క్రమబద్ధీకరించు + భారతీయ జాతీయ క్యాలెండర్ + ఇస్లామిక్ క్యాలెండర్ + ఇస్లామిక్-సివిల్ క్యాలెండర్ + జపానీయుల క్యాలెండర్ + జపానీయుల సంఖ్యలు + జపానీయలు ఆర్థిక సంఖ్యలు + ఖ్మేర్ అంకెలు + కన్నడ అంకెలు + లావో అంకెలు + పశ్చిమ అంకెలు + ముందు లోయర్‌కేస్‌ని క్రమబద్ధీకరించు + మలయాళం అంకెలు + మంగోలియన్ అంకెలు + మియన్మార్ అంకెలు + స్థానిక అంకెలు + ఉచ్ఛారణలను సాధారణంగా క్రమబద్ధీకరించు + సాధారణ కేస్ క్రమాన్ని క్రమబద్ధీకరించు + కేస్ ఇన్‌సెన్సిటివ్‌ను క్రమబద్ధీకరించు + కానాను వేరుగా క్రమబద్ధీకరించు + సాధారణీకరణ చేయకుండా క్రమబద్ధీకరించు + అంకెలను ఒక్కొక్కటిగా క్రమబద్ధీకరించు + చిహ్నాలను క్రమబద్ధీకరించు + ఒరియా అంకెలు + పర్షియన్ క్యాలెండర్ + ఫోన్‌బుక్ క్రమబద్ధీకరణ క్రమం + ధ్వని ఉచ్ఛారిత క్రమబద్ధీకరణ క్రమం + పిన్‌యిన్ క్రమబద్ధీకరణ క్రమం + ప్రాథమిక అక్షరాలను మాత్రమే క్రమబద్ధీకరించు + ఉచ్ఛారణలు/కేస్‌/వెడల్పు/కానాను క్రమబద్ధీకరించు + మళ్ళీ ఆకృతీకరించబడిన క్రమబద్ధీకరణ క్రమం + మింగ్యూ క్యాలెండర్ + రోమన్ సంఖ్యలు + రోమన్ చిన్న సంఖ్యలు + సాధారణ-ప్రయోజన శోధన + హాంగుల్ ప్రారంభ హల్లు ద్వారా శోధించు + ఉచ్ఛారణలని క్రమబద్ధీకరించు + చిహ్నాలను విస్మరించడాన్ని క్రమబద్ధీకరించు + ప్రామాణిక క్రమబద్ధీకరణ క్రమం + స్ట్రోక్ క్రమబద్ధీకరణ క్రమం + తమళ సంఖ్యలు + తమిళ అంకెలు + తెలుగు అంకెలు + ఉచ్ఛారణలని/కేస్‌ని/వెడల్పుని క్రమబద్ధీకరించు + థాయి అంకెలు + టిబిటన్ అంకెలు + సాంప్రదాయ క్రమబద్ధీకరణ క్రమం + సాంప్రదాయ సంఖ్యలు + రాడికల్-స్ట్రోక్ క్రమబద్ధీకరణ క్రమం + ముందు అప్పర్‌కేస్‌ని క్రమబద్ధీకరించు + వాయ్ అంకెలు + ఉచ్ఛారణలను వ్యతిరేక క్రమంలో క్రమబద్ధీకరించు + కేస్ సెన్సిటివ్‌ని క్రమబద్ధీకరించు + కానాని భిన్నంగా క్రమబద్ధీకరించు + సాధారణీకరించిన యూనికోడ్‌ని క్రమబద్ధీకరించు + అంకెలను సంఖ్యాత్మకంగా క్రమబద్ధీకరించు + + + BGN + సంఖ్య + టోన్ + UNGEGN + గాఢతలు + పూర్తి వెడల్పు + సగం వెడల్పు + జమో + పిన్యిన్ + ప్రచురించబడుతోంది + + + దశాంశం + యుకె + యుఎస్ + + + భాష: {0} + లిపి: {0} + ప్రాంతం: {0} + + + + [అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ ఁ ం ః క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల వ శ ష స హ ళ \u0C3E \u0C3F \u0C40 ు ూ ృ ౄ \u0C46 \u0C47 \u0C48 \u0C4A \u0C4B \u0C4C \u0C4D \u0C55 \u0C56] + [\u200C\u200D ౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯] + [అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఎ ఏ ఐ ఒ ఓ ఔ క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల వ శ ష స హ ళ] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd-MM-y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + y G + MMM y G + d, MMM y G + E, d, MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y G + y G + M/y G + d/M/y G + E, d/M/y G + MM-y G + MMM y G + d, MMM y G + E, d, MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d-d MMM, y + d MMM - d MMM, y + d MMM, y - d MMM, y + + + E, d MMM - E, d MMM, y + E, d MMM - E, d MMM, y + E, d MMM, y - E, d MMM, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + జన + ఫిబ్ర + మార్చి + ఏప్రి + మే + జూన్ + జులై + ఆగ + సెప్టెం + అక్టో + నవం + డిసెం + + + + ఫి + మా + + మే + జూ + జు + + సె + + + డి + + + జనవరి + ఫిబ్రవరి + మార్చి + ఎప్రిల్ + మే + జూన్ + జులై + ఆగస్టు + సెప్టెంబర్ + అక్టోబర్ + నవంబర్ + డిసెంబర్ + + + + + జన + ఫిబ్ర + మార్చి + ఏప్రి + మే + జూన్ + జులై + ఆగస్టు + సెప్టెం + అక్టో + నవం + డిసెం + + + + ఫి + మా + + మే + జూ + జు + + సె + + + డి + + + జనవరి + ఫిబ్రవరి + మార్చి + ఎప్రిల్ + మే + జూన్ + జూలై + ఆగస్టు + సెప్టెంబర్ + అక్టోబర్ + నవంబర్ + డిసెంబర్ + + + + + + + ఆది + సోమ + మంగళ + బుధ + గురు + శుక్ర + శని + + + + సో + + బు + గు + శు + + + + ఆది + సోమ + మం + బుధ + గురు + శుక్ర + శని + + + ఆదివారం + సోమవారం + మంగళవారం + బుధవారం + గురువారం + శుక్రవారం + శనివారం + + + + + ఆది + సోమ + మంగళ + బుధ + గురు + శుక్ర + శని + + + + సో + + బు + గు + శు + + + + ఆది + సోమ + మం + బుధ + గురు + శుక్ర + శని + + + ఆదివారం + సోమవారం + మంగళవారం + బుధవారం + గురువారం + శుక్రవారం + శనివారం + + + + + + + త్రై1 + త్రై2 + త్రై3 + త్రై4 + + + 1 + 2 + 3 + 4 + + + 1వ త్రైమాసం + 2వ త్రైమాసం + 3వ త్రైమాసం + 4వ త్రైమాసం + + + + + త్రై1 + త్రై2 + త్రై3 + త్రై4 + + + 1 + 2 + 3 + 4 + + + మొదటి త్రైమాసికం + రెండవ త్రైమాసికం + మూడవ త్రైమాసికం + నాల్గవ త్రైమాసికం + + + + + + + AM + PM + + + రాత్రి + AM + ఉదయం + అర్ధరాత్రి + మధ్యాహ్నం + తెల్లవారుఝాము + సాయంకాలం + PM + + + + + + ఈసాపూర్వ. + సన్. + + + క్రీపూ + BCE + క్రీశ + CE + + + ఈసాపూర్వ. + సన్. + + + + + + d MMMM y EEEE + + + + + d MMMM y + + + + + d MMM y + + + + + dd-MM-yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G MMM y + G d, MMM y + G E, d, MMM y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + dd-MM + LLL + d MMM + E, d MMM + d MMMM + mm:ss + y + M/y + d/M/y + E, d/M/y + MM-y + MMM y + d, MMM y + E, d, MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E, d/M – E, d/M + E, d/M – E, d/M + + + MMM–MMM + + + d–d MMM + d MMM - d MMM + + + E, d MMM - E, d MMM + E, d MMM - E, d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + E, d/M/y - E, d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d-d MMM, y + d MMM - d MMM, y + d MMM, y - d MMM, y + + + E, d MMM - E, d MMM, y + E, d MMM - E, d MMM, y + E, d MMM, y - E, d MMM, y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + + చైత్రం + వైశాఖం + జ్యేష్ఠం + ఆషాఢం + శ్రావణం + భాద్రపదం + ఆశ్వయుజం + కార్తీకం + మార్గశిరం + పుష్యం + మాఘం + ఫల్గుణం + + + + + + శక + + + + + + + + Muharram + Safar + Rabiʻ I + Rabiʻ II + Jumada I + Jumada II + Rajab + Shaʻban + Ramadan + Shawwal + Dhuʻl-Qiʻdah + Dhuʻl-Hijjah + + + + + + + + యుగం, శకము + + + సంవత్సరం + గత సంవత్సరం + ఈ సంవత్సరం + తదుపరి సంవత్సరం + + {0} సంవత్సరంలో + {0} సంవత్సరాల్లో + + + {0} సంవత్సరం క్రితం + {0} సంవత్సరాల క్రితం + + + + నెల + గత నెల + ఈ నెల + తదుపరి నెల + + {0} నెలలో + {0} నెలల్లో + + + {0} నెల క్రితం + {0} నెలల క్రితం + + + + వారము + గత వారం + ఈ వారం + తదుపరి వారం + + {0} వారంలో + {0} వారాల్లో + + + {0} వారం క్రితం + {0} వారాల క్రితం + + + + దినం + మొన్న + నిన్న + ఈ రోజు + రేపు + ఎల్లుండి + + {0} రోజులో + {0} రోజుల్లో + + + {0} రోజు క్రితం + {0} రోజుల క్రితం + + + + వారంలో రోజు + + + గత ఆదివారం + ఈ ఆదివారం + తదుపరి ఆదివారం + + + గత సోమవారం + ఈ సోమవారం + తదుపరి సోమవారం + + + గత మంగళవారం + ఈ మంగళవారం + తదుపరి మంగళవారం + + + గత బుధవారం + ఈ బుధవారం + తదుపరి బుధవారం + + + గత గురువారం + ఈ గురువారం + తదుపరి గురువారం + + + గత శుక్రవారం + ఈ శుక్రవారం + తదుపరి శుక్రవారం + + + గత శనివారం + ఈ శనివారం + తదుపరి శనివారం + + + AM/PM + + + గంట + + {0} గంటలో + {0} గంటల్లో + + + {0} గంట క్రితం + {0} గంటల క్రితం + + + + నిమిషము + + {0} నిమిషంలో + {0} నిమిషాల్లో + + + {0} నిమిషం క్రితం + {0} నిమిషాల క్రితం + + + + క్షణం + ప్రస్తుతం + + {0} సెకన్‌లో + {0} సెకన్లలో + + + {0} సెకను క్రితం + {0} సెకన్ల క్రితం + + + + మండలం + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} సమయం + {0} పగటి సమయం + {0} ప్రామాణిక సమయం + {1} ({0}) + + తెలియని నగరం + + + అండోరా + + + దుబాయి + + + కాబుల్ + + + అంటిగ్వా + + + ఆంగ్విలా + + + టిరేన్ + + + యెరెవన్ + + + లువాండా + + + రొతేరా + + + పామెర్ + + + స్యోవా + + + మాసన్ + + + డేవిస్ + + + వోస్టోక్ + + + కేసీ + + + డ్యుమాంట్ డ్యుర్విల్లీ + + + మెక్ముర్డో + + + రియో గల్లేగోస్ + + + మెండోజా + + + సాన్ జ్యాన్ + + + ఉష్యూయ + + + లా రియోజ + + + శాన్ లూయిస్ + + + కటమార్కా + + + సల్టా + + + జుజుయ్ + + + టుకుమన్ + + + కోర్బోడా + + + బ్యూనోస్ ఎయిర్స్ + + + పాగో పాగో + + + వియన్నా + + + పెర్త్ + + + యుక్లా + + + డార్విన్ + + + అడెలైడ్ + + + విరిగిన హిల్ + + + కుర్రియే + + + మెల్బోర్నే + + + హోబర్ట్ + + + లిండేమాన్ + + + సిడ్నీ + + + బ్రిస్‌బెయిన్ + + + మకారీ + + + లార్డ్ హౌ + + + అరుబా + + + మారీయుహమ్ + + + బాకు + + + సరాజోవో + + + బార్బడోస్ + + + ఢాకా + + + బ్రస్సెల్స్ + + + ఔగాడౌగోవ్ + + + సోఫియా + + + బహరేన్ + + + బుజమ్బురా + + + పోర్టో-నోవో + + + సెయింట్ బర్తెలెమీ + + + బెర్ముడా + + + బ్రూనై + + + లా పాజ్ + + + క్రలెండ్జిక్ + + + ఇరునెప్ + + + రియో బ్రాంకో + + + పోర్టో వెల్హో + + + బోవా విస్టా + + + మనాస్ + + + కుయోబే + + + సాంటరెమ్ + + + కాంపో గ్రాండ్ + + + బెలెమ్ + + + అరాగ్వేయీనా + + + సావో పాలో + + + బహియ + + + ఫార్ట్లెజా + + + మాసియో + + + రెసిఫీ + + + నరోన్హా + + + నాస్సావ్ + + + థింఫు + + + గబోరోన్ + + + మిన్స్క్ + + + బెలీజ్ + + + డాసన్ + + + వైట్‌హార్స్ + + + ఇనువిక్ + + + వాన్కూవర్ + + + డాసన్ క్రీక్ + + + క్రెస్టన్ + + + ఎల్లోనైఫ్ + + + ఎడ్మోంటన్ + + + స్విఫ్ట్ కరెంట్ + + + కేంబ్రిడ్జ్ బే + + + రెజీనా + + + విన్నిపెగ్ + + + రిజల్యూట్ + + + వర్షపు నది + + + రన్‌కిన్ ఇన్‌లెట్ + + + అటికోకన్ + + + థండర్ బే + + + నిపిగోన్ + + + టొరంటో + + + ఇక్వాలిట్ + + + పాంగ్‌నీర్‌టుంగ్ + + + మోన్‌క్టోన్ + + + హలుఫాక్స్ + + + గూస్ బే + + + గ్లేస్ బే + + + బ్లాంక్-సబ్లోన్ + + + సె. జాన్స్ + + + కోకాస్ + + + కిన్షాసా + + + లుబంబాషి + + + బాంగుయ్ + + + బ్రాజావిల్లి + + + జ్యూరిచ్ + + + అబిడ్జాన్ + + + రరోటోంగా + + + ఈస్టర్ + + + శాంటియాగో + + + డౌఆలా + + + కాష్‌గర్ + + + ఉరుమ్‌కీ + + + చోంగో‌క్వింగ్ + + + షాంగాయ్ + + + హర్బిన్ + + + బగోటా + + + కోస్టా రికా + + + హవానా + + + కేప్ వెర్డె + + + కురాకవో + + + క్రిస్మస్ + + + నికోసియా + + + ప్రాగ్ + + + బసింజన్ + + + బెర్లిన్ + + + డిజ్బౌటి + + + కోపెన్హాగన్ + + + డొమినికా + + + శాంటో డోమింగో + + + అల్జియర్స్ + + + గాలాపాగోస్ + + + గువాయాక్విల్ + + + తాల్లిన్ + + + కైరో + + + ఎల్ ఎయున్ + + + అస్మారా + + + కెనరీ + + + స్యూటా + + + మాడ్రిడ్ + + + యాడిస్ అబాబా + + + హెల్సింకి + + + ఫీజీ + + + స్టాన్లీ + + + చుక్ + + + పోన్‌పై + + + కోస్రే + + + ఫరోయ్ + + + ప్యారిస్ + + + లైబర్విల్ + + + + బ్రిటీష్ వేసవి సమయం + + లండన్ + + + గ్రెనడా + + + టిబిలిసి + + + కయేన్ + + + గ్వెర్న్సే + + + అక్రా + + + జిబ్రాల్టర్ + + + ధులే + + + గాడ్తాబ్ + + + స్కోర్స్బైసుండ్ + + + డెన్మార్క్శ్వాన్ + + + బంజూల్ + + + కోనాక్రీ + + + గ్వాడెలోప్ + + + మలాబో + + + ఏథెన్స్ + + + దక్షిణ జార్జియా + + + గ్వాటిమాలా + + + గ్వామ్ + + + బిస్సావ్ + + + గయానా + + + హాంకాంగ్ + + + తెగుసిగల్పా + + + జాగ్రెబ్ + + + పోర్ట్-అవ్-ప్రిన్స్ + + + బుడాపెస్ట్ + + + జకార్తా + + + పొన్టియనాక్ + + + మకాస్సర్ + + + జయపుర + + + + ఐరిష్ వేసవి సమయం + + డబ్లిన్ + + + జరూసలేం + + + ఐల్ ఆఫ్ మేన్ + + + కోల్‌కతా + + + చాగోస్ + + + బాగ్దాద్ + + + టెహ్రాన్ + + + రెక్జావిక్ + + + రోమ్ + + + జెర్సీ + + + జమైకా + + + అమ్మన్ + + + టోక్యో + + + నైరోబీ + + + బిష్కెక్ + + + నమ్ పెన్ + + + ఎండర్బెరీ + + + కిరీటిమాటి + + + టరావా + + + కొమోరో + + + సెయింట్ కిట్స్ + + + ప్యోంగాంగ్ + + + సియోల్ + + + కువైట్ + + + కేమాన్ + + + అక్టావ్ + + + ఓరల్ + + + అక్టోబ్ + + + క్విజిలోర్డా + + + ఆల్మాటి + + + వియన్టైన్ + + + బీరట్ + + + సెయింట్ లూసియా + + + వాడుజ్ + + + కొలంబో + + + మోన్రోవియా + + + మసేరు + + + విల్నియస్ + + + లక్సెంబర్గ్ + + + రీగా + + + ట్రిపోలి + + + కాసాబ్లాంకా + + + మొనాకో + + + చిసినావ్ + + + పోడ్గోరికా + + + మారిగోట్ + + + అంటానానారివో + + + క్వాజాలైన్ + + + మజురో + + + స్కోప్‌యే + + + బామాకో + + + రంగూన్ + + + హోవడ్ + + + ఉలాన్బాటర్ + + + చోయిబాల్సన్ + + + మకావ్ + + + సాయ్పాన్ + + + మార్టినీక్ + + + న్వాక్షోట్ + + + మోంటిసిరాట్ + + + మాల్టా + + + మోరిషస్ + + + మాల్దీవులు + + + బ్లాన్టైర్ + + + తిజ్యునా + + + శాంటా ఇసబెల్ + + + హెర్మోసిల్లో + + + మాసట్‌లాన్ + + + చిహువా + + + బహియా బండరాస్ + + + ఒజినగ + + + మోన్‌టురెయ్ + + + మెక్సికో నగరం + + + మాటమొరోస్ + + + మెరిడా + + + కన్‌కూన్ + + + కౌలాలంపూర్ + + + కుచింగ్ + + + మాపుటో + + + విండ్హోక్ + + + నౌమియా + + + నియామే + + + నోర్ఫోక్ + + + లాగోస్ + + + మనాగువా + + + ఆమ్‌స్టర్‌డామ్ + + + ఓస్లో + + + ఖాట్మండు + + + నౌరు + + + నియూ + + + ఛతం + + + ఆక్లాండ్ + + + మస్కట్ + + + పనామా + + + లిమా + + + తహితి + + + మార్క్వేసాస్ + + + గాంబియేర్ + + + పోర్ట్ మోరెస్బే + + + మనీలా + + + కరాచీ + + + వార్షా + + + మిక్వెలాన్ + + + పిట్కేరన్ + + + ప్యూర్టో రికో + + + గాజా + + + హెబ్రాన్ + + + అజోర్స్ + + + మదైరా + + + లిస్బన్ + + + పాలావ్ + + + అసున్సియోన్ + + + ఖతార్ + + + రీయూనియన్ + + + బుకారెస్ట్ + + + బెల్‌గ్రేడ్ + + + కలినిన్‌గ్రద్ + + + మాస్కో + + + వోల్గోగ్రాడ్ + + + సమార + + + యెకటెరింగ్‌బర్గ్ + + + ఓమ్స్క్ + + + నవోసిబిర్స్క్ + + + నొవొకుజ్‌నెట్‌స్క్ + + + క్రసనోయార్స్క్ + + + ఇర్కుట్స్క్ + + + యకుట్స్క్ + + + వ్లాడివోస్టోక్ + + + కంద్యాగ + + + సఖాలిన్ + + + అస్ట్-నెరా + + + మగడాన్ + + + కమ్‌చత్కా + + + అనడైర్ + + + కీగలి + + + రియాధ్ + + + గ్వాడల్కెనాల్ + + + మాహె + + + ఖార్టోమ్ + + + స్టాక్హోమ్ + + + సింగపూర్ + + + సెయింట్ హెలెనా + + + ల్యూబ్ల్యానా + + + లాంగ్‌యియర్‌బైయన్ + + + బ్రటీష్‌వాలా + + + ఫ్రీటౌన్ + + + శాన్ మారినో + + + డకార్ + + + మోగాదిషు + + + పరామారిబో + + + జుబా + + + సావో టోమే + + + ఎల్ సాల్వడోర్ + + + లోయర్ ప్రిన్సెస్ క్వార్టర్ + + + డమాస్కస్ + + + బాబెన్ + + + గ్రాండ్ టర్క్ + + + డ్జామెనా + + + కెర్గ్యూలెన్ + + + లోమ్ + + + బ్యాంకాక్ + + + డుషన్బీ + + + ఫాకావ్ఫో + + + డిలి + + + యాష్గాబాట్ + + + ట్యునిస్ + + + టోంగాటాపు + + + ఇస్తాంబుల్ + + + పోర్ట్ ఆఫ్ స్పెయిన్ + + + ఫునాఫుటి + + + తైపీ + + + దార్ ఎ సలామ్ + + + ఉజుగోరోడ్ + + + కీవ్ + + + సిమ్‌ఫెరోపోల్ + + + జపరోజై + + + కంపాలా + + + మిడ్వే + + + జాన్సటన్ + + + వేక్ + + + అడాక్ + + + నోమ్ + + + హోనోలులు + + + ఎంకొరేజ్ + + + యకుటాట్ + + + సిట్కా + + + జోనొవ్ + + + మెట్లకట్ల + + + లాస్ ఏంజల్స్ + + + బొయిసీ + + + ఫోనిక్స్ + + + డెన్వెర్ + + + బ్యులా, ఉత్తర డకోట + + + న్యూ సలేమ్, దక్షిణ దకోట + + + సెంట్రల్, ఉత్తర డకోటా + + + చికాగో + + + మెనోమినీ + + + విన్‌సెన్నెస్, ఇండియాన + + + పెటెర్స్‌బుర్గ్, ఇండియాన + + + టెల్ నగరం, ఇండియాన + + + నోక్స్, ఇండియాన + + + వినిమాక్, ఇండియాన + + + మరెంగో, ఇండియాన + + + ఇండోనెపోలిస్ + + + లూయివిల్ + + + వెవయ్, ఇండియాన + + + మోంటిసెల్లో, కెన్‌టుక్కీ + + + డిట్రోయిట్ + + + న్యూయార్క్ + + + మోంటెవీడియో + + + సమర్కాండ్ + + + తాష్కెంట్ + + + వాటికన్ + + + సెయింట్ విన్సెంట్ + + + కారాకస్ + + + టోర్టోలా + + + సెయింట్ థామస్ + + + హో చి మిన్హ్ నగరం + + + ఇఫేట్ + + + వాల్లిస్ + + + ఏపియా + + + ఎడెన్ + + + మయోట్టి + + + జోహన్నెస్‌బర్గ్ + + + లుసాకా + + + హరారే + + + + ఏకర్ సమయం + ఏకర్ ప్రామాణిక సమయం + ఏకర్ వేసవి సమయం + + + + + ఆఫ్ఘనిస్థాన్ సమయం + + + + + సెంట్రల్ ఆఫ్రికా సమయం + + + + + తూర్పు ఆఫ్రికా సమయం + + + + + దక్షిణాఫ్రికా ప్రామాణిక సమయం + + + + + పశ్చిమ ఆఫ్రికా సమయం + పశ్చిమ ఆఫ్రికా ప్రామాణిక సమయం + పశ్చిమ ఆఫ్రికా వేసవి సమయం + + + + + అలాస్కా సమయం + అలాస్కా ప్రామాణిక సమయం + అలాస్కా పగటి సమయం + + + + + అల్మాటి సమయం + అల్మాటి ప్రామాణిక సమయం + అల్మాటి వేసవి సమయం + + + + + అమెజాన్ సమయం + అమెజాన్ ప్రామాణిక సమయం + అమెజాన్ వేసవి సమయం + + + + + మధ్యమ సమయం + మధ్యమ ప్రామాణిక సమయం + మధ్యమ పగటి సమయం + + + + + తూర్పు సమయం + తూర్పు ప్రామాణిక సమయం + తూర్పు పగటి సమయం + + + + + మౌంటేన్ సమయం + మౌంటేన్ ప్రామాణిక సమయం + మౌంటేన్ పగటి సమయం + + + + + పెసిఫిక్ సమయం + పెసిఫిక్ ప్రామాణిక సమయం + పెసిఫిక్ పగటి సమయం + + + + + అనడైర్ సమయం + అనాన్డ్రి ప్రామాణిక సమయం + అనాన్డ్రి వేసవి సమయం + + + + + అక్వాటు సమయం + అక్వాటు ప్రామాణిక సమయం + అక్వాటు వేసవి సమయం + + + + + అక్టోబె సమయం + అక్టోబె ప్రామాణిక సమయం + అక్టోబె వేసవి సమయం + + + + + అరేబియన్ సమయం + అరేబియన్ ప్రామాణిక సమయం + అరేబియన్ పగటి వెలుతురు సమయం + + + + + అర్జెంటీనా సమయం + అర్జెంటీనా ప్రామాణిక సమయం + ఆర్జెంటీనా వేసవి సమయం + + + + + పశ్చిమ అర్జెంటీనా సమయం + పశ్చిమ అర్జెంటీనా ప్రామాణిక సమయం + పశ్చిమ అర్జెంటీనా వేసవి సమయం + + + + + ఆర్మేనియా సమయం + ఆర్మేనియా ప్రామాణిక సమయం + ఆర్మేనియా వేసవి సమయం + + + + + అట్లాంటిక్ సమయం + అట్లాంటిక్ ప్రామాణిక సమయం + అట్లాంటిక్ పగటి సమయం + + + + + ఆస్ట్రేలియా మధ్యమ సమయం + ఆస్ట్రేలియా మధ్యమ ప్రామాణిక సమయం + ఆస్ట్రేలియా మధ్యమ పగటి సమయం + + + + + మధ్యమ ఆస్ట్రేలియా పశ్చిమ సమయం + మధ్యమ ఆస్ట్రేలియా పశ్చిమ ప్రామాణిక సమయం + మధ్యమ ఆస్ట్రేలియా పశ్చిమ పగటి సమయం + + + + + తూర్పు ఆస్ట్రేలియా సమయం + తూర్పు ఆస్ట్రేలియా ప్రామాణిక సమయం + తూర్పు ఆస్ట్రేలియా పగటి సమయం + + + + + పశ్చిమ ఆస్ట్రేలియా సమయం + పశ్చిమ ఆస్ట్రేలియా ప్రామాణిక సమయం + పశ్చిమ ఆస్ట్రేలియా పగటి సమయం + + + + + అజర్బైజాన్ సమయం + అజర్బైజాన్ ప్రామాణిక సమయం + అజర్బైజాన్ వేసవి సమయం + + + + + అజోర్స్ సమయం + అజోర్స్ ప్రామాణిక సమయం + అజోర్స్ వేసవి సమయం + + + + + బంగ్లాదేశ్ సమయం + బంగ్లాదేశ్ ప్రామాణిక సమయం + బంగ్లాదేశ్ వేసవి సమయం + + + + + భూటాన్ సమయం + + + + + బొలీవియా సమయం + + + + + బ్రెజిలియా సమయం + బ్రెజీలియా ప్రామాణిక సమయం + బ్రెసిలియా వేసవి సమయం + + + + + బ్రూనే దరుసలామ్ సమయం + + + + + కేప్ వెర్డె సమయం + కేప్ వెర్డె ప్రామాణిక సమయం + కేప్ వెర్డె వేసవి సమయం + + + + + చామర్రో ప్రామాణిక సమయం + + + + + చాథమ్ సమయం + చాథమ్ ప్రామాణిక సమయం + చాథమ్ పగటి వెలుతురు సమయం + + + + + చిలీ సమయం + చిలీ ప్రామాణిక సమయం + చిలీ వేసవి సమయం + + + + + చైనా సమయం + చైనా ప్రామాణిక సమయం + చైనా పగటి వెలుతురు సమయం + + + + + చోయిబల్సాన్ సమయం + చోయిబల్సాన్ ప్రామాణిక సమయం + చోయిబల్సాన్ వేసవి సమయం + + + + + క్రిస్మస్ దీవి సమయం + + + + + కాకోస్ దీవుల సమయం + + + + + కొలంబియా సమయం + కొలంబియా ప్రామాణిక సమయం + కొలంబియా వేసవి సమయం + + + + + కుక్ దీవుల సమయం + కుక్ దీవుల ప్రామాణిక సమయం + కుక్ దీవుల అర్థ వేసవి సమయం + + + + + క్యూబా సమయం + క్యూబా ప్రామాణిక సమయం + క్యూబా పగటి వెలుతురు సమయం + + + + + డేవిస్ సమయం + + + + + డ్యూమాంట్-డి’ఉర్విల్లే సమయం + + + + + తూర్పు తైమూర్ సమయం + + + + + ఈస్టర్ దీవి సమయం + ఈస్టర్ దీవి ప్రామాణిక సమయం + ఈస్టర్ దీవి వేసవి సమయం + + + + + ఈక్వడార్ సమయం + + + + + సెంట్రల్ యూరోపియన్ సమయం + సెంట్రల్ యూరోపియన్ ప్రామాణిక సమయం + సెంట్రల్ యూరోపియన్ వేసవి సమయం + + + + + తూర్పు ఐరోపా సమయం + తూర్పు ఐరోపా ప్రామాణిక సమయం + తూర్పు ఐరోపా వేసవి సమయం + + + + + పశ్చిమ యూరోపియన్ సమయం + పశ్చిమ యూరోపియన్ ప్రామాణిక సమయం + పశ్చిమ యూరోపియన్ వేసవి సమయం + + + + + ఫాక్‌ల్యాండ్ దీవుల సమయం + ఫాక్‌ల్యాండ్ దీవుల ప్రామాణిక సమయం + ఫాక్‌ల్యాండ్ దీవుల వేసవి సమయం + + + + + ఫిజీ సమయం + ఫిజీ ప్రామాణిక సమయం + ఫిజీ వేసవి సమయం + + + + + ఫ్రెంచ్ గయానా సమయం + + + + + ఫ్రెంచ్ దక్షిణ మరియు అంటార్కిటిక్ సమయం + + + + + గాలాపాగోస్ సమయం + + + + + గాంబియర్ సమయం + + + + + జార్జియా సమయం + జార్జియా ప్రామాణిక సమయం + జార్జియా వేసవి సమయం + + + + + గిల్బర్ట్ దీవుల సమయం + + + + + గ్రీన్‌విచ్ సగటు సమయం + + + + + తూర్పు గ్రీన్‌ల్యాండ్ సమయం + తూర్పు గ్రీన్‌ల్యాండ్ ప్రామాణిక సమయం + తూర్పు గ్రీన్‌ల్యాండ్ వేసవి సమయం + + + + + పశ్చిమ గ్రీన్‌ల్యాండ్ సమయం + పశ్చిమ గ్రీన్‌ల్యాండ్ ప్రామాణిక సమయం + పశ్చిమ గ్రీన్‌ల్యాండ్ వేసవి సమయం + + + + + గ్వామ్ ప్రామాణిక సమయం + + + + + గల్ఫ్ ప్రామాణిక సమయం + + + + + గయానా సమయం + + + + + హవాయ్-అలూషియన్ సమయం + హవాయ్-అల్యూషియన్ ప్రామాణిక సమయం + హవాయ్-అల్యూషియన్ పగటి వెలుతురు సమయం + + + + + హాంకాంగ్ సమయం + హాంకాంగ్ ప్రామాణిక సమయం + హాంకాంగ్ వేసవి సమయం + + + + + హోవ్డ్ సమయం + హోవ్డ్ ప్రామాణిక సమయం + హోవ్డ్ వేసవి సమయం + + + + + భారతదేశ సమయం + + + IST + + + + + హిందూ మహా సముద్ర సమయం + + + + + ఇండోచైనా సమయం + + + + + సెంట్రల్ ఇండోనేషియా సమయం + + + + + తూర్పు ఇండోనేషియా సమయం + + + + + పశ్చిమ ఇండోనేషియా సమయం + + + + + ఇరాన్ సమయం + ఇరాన్ ప్రామాణిక సమయం + ఇరాన్ పగటి వెలుతురు సమయం + + + + + ఇరక్వుట్స్క్ సమయం + ఇర్కుట్స్క్ ప్రామాణిక సమయం + ఇర్కుట్స్క్ వేసవి సమయం + + + + + ఇజ్రాయిల్ సమయం + ఇజ్రాయిల్ ప్రామాణిక సమయం + ఇజ్రాయిల్ పగటి వెలుతురు సమయం + + + + + జపాన్ సమయం + జపాన్ ప్రామాణిక సమయం + జపాన్ పగటి వెలుతురు సమయం + + + + + పెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి సమయం + పెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి ప్రామాణిక సమయం + పెట్రోపావ్లోవ్స్క్-కామ్ఛాట్స్కి వేసవి సమయం + + + + + తూర్పు కజకి‌స్థాన్ సమయం + + + + + పశ్చిమ కజకిస్థాన్ సమయం + + + + + కొరియన్ సమయం + కొరియన్ ప్రామాణిక సమయం + కొరియన్ పగటి వెలుతురు సమయం + + + + + కోస్రాయి సమయం + + + + + క్రస్నోయార్స్క్ సమయం + క్రాస్నోయార్స్క్ ప్రామాణిక సమయం + క్రాస్నోయార్స్క్ వేసవి సమయం + + + + + కిర్గిస్థాన్ సమయం + + + + + లంకా సమయం + + + + + లైన్ దీవుల సమయం + + + + + లార్డ్ హోవ్ సమయం + లార్డ్ హోవ్ ప్రామాణిక సమయం + లార్డ్ హోవ్ పగటి సమయం + + + + + మకావ్ సమయం + మకావ్ ప్రామాణిక సమయం + మకావ్ వేసవి సమయం + + + + + మాక్క్వారీ దీవి సమయం + + + + + మగడాన్ సమయం + మగడాన్ ప్రామాణిక సమయం + మగాడాన్ వేసవి సమయం + + + + + మలేషియా సమయం + + + + + మాల్దీవుల సమయం + + + + + మార్క్వేసాస్ సమయం + + + + + మార్షల్ దీవుల సమయం + + + + + మారిషస్ సమయం + మారిషస్ ప్రామాణిక సమయం + మారిషస్ వేసవి సమయం + + + + + మాసన్ సమయం + + + + + ఉలన్ బతోర్ సమయం + ఉలన్ బతోర్ ప్రామాణిక సమయం + యులాన్ బాటోర్ వేసవి సమయం + + + + + మాస్కో సమయం + మాస్కో ప్రామాణిక సమయం + మాస్కో వేసవి సమయం + + + + + మయన్మార్ సమయం + + + + + నౌరు సమయం + + + + + నేపాల్ సమయం + + + + + న్యూ కాలెడోనియా సమయం + న్యూ కాలెడోనియా ప్రామాణిక సమయం + న్యూ కాలెడోనియా వేసవి సమయం + + + + + న్యూజిల్యాండ్ సమయం + న్యూజిల్యాండ్ ప్రామాణిక సమయం + న్యూజిల్యాండ్ పగటి వెలుతురు సమయం + + + + + న్యూఫౌండ్ ల్యాండ్ సమయం + న్యూఫౌండ్ ల్యాండ్ ప్రామాణిక సమయం + న్యూఫౌండ్ ల్యాండ్ పగటి సమయం + + + + + నియూ సమయం + + + + + నార్ఫోక్ దీవుల సమయం + + + + + ఫెర్నాండో డి నొరోన్హా సమయం + ఫెర్నాండో డి నొరోన్హా ప్రామాణిక సమయం + ఫెర్డినాన్డో డి నోరోన్హా పగటి సమయం + + + + + ఉత్తర మారియానా దీవుల సమయం + + + + + నోవోసిబిర్స్క్ సమయం + నోవోసిబిర్క్స్ ప్రామాణిక సమయం + నోవోసిబిర్స్క్ వేసవి సమయం + + + + + ఓమ్స్క్ సమయం + ఓమ్స్క్ ప్రామాణిక సమయం + ఓమ్స్క్ వేసవి సమయం + + + + + పాకిస్థాన్ సమయం + పాకిస్తాన్ ప్రామాణిక సమయం + పాకిస్థాన్ వేసవి సమయం + + + + + పాలావ్ సమయం + + + + + పాపువా న్యూ గినియా సమయం + + + + + పరాగ్వే సమయం + పరాగ్వే ప్రామాణిక సమయం + పరాగ్వే వేసవి సమయం + + + + + పెరు సమయం + పెరు ప్రామాణిక సమయం + పెరు వేసవి సమయం + + + + + ఫిలిప్పైన్ సమయం + ఫిలిప్పైన్ ప్రామాణిక సమయం + ఫిలిప్పైన్ వేసవి సమయం + + + + + ఫినిక్స్ దీవుల సమయం + + + + + సెంట్ పియెర్ మరియు మికెలాన్ సమయం + సెంట్ పియెర్ మరియు మికెలాన్ ప్రామాణిక సమయం + సెంట్ పియెర్ మరియు మికెలాన్ పగటి వెలుతురు సమయం + + + + + పిట్కైరన్ సమయం + + + + + పొనేప్ సమయం + + + + + కిజిలోర్డా సమయం + కిజిలోర్డా ప్రామాణిక సమయం + కిజిలోర్డా వేసవి సమయం + + + + + రీయూనియన్ సమయం + + + + + రొతేరా సమయం + + + + + సఖాలిన్ సమయం + సఖాలిన్ ప్రామాణిక సమయం + సఖాలిన్ వేసవి సమయం + + + + + సమారా సమయం + సమారా ప్రామాణిక సమయం + సమారా వేసవి సమయం + + + + + సమోవా సమయం + సమోవా ప్రామాణిక సమయం + సమోవా వేసవి సమయం + + + + + సీషెల్స్ సమయం + + + + + సింగపూర్ ప్రామాణిక సమయం + + + + + సొలొమన్ దీవుల సమయం + + + + + దక్షణ జార్జియా సమయం + + + + + సూరినామ్ సమయం + + + + + స్యోవా సమయం + + + + + తహితి సమయం + + + + + తైపీ సమయం + తైపీ ప్రామాణిక సమయం + తైపీ పగటి వెలుతరు సమయం + + + + + తజికిస్థాన్ సమయం + + + + + టోకెలావ్ సమయం + + + + + టాంగా సమయం + టాంగా ప్రామాణిక సమయం + టాంగా వేసవి సమయం + + + + + చక్ సమయం + + + + + తుర్క్మెనిస్థాన్ సమయం + తుర్క్మెనిస్థాన్ ప్రామాణిక సమయం + తుర్క్మెనిస్థాన్ వేసవి సమయం + + + + + తువాలు సమయం + + + + + ఉరుగ్వే సమయం + ఉరుగ్వే ప్రామాణిక సమయం + ఉరుగ్వే వేసవి సమయం + + + + + ఉజ్బెకిస్థాన్ సమయం + ఉజ్బెకిస్థాన్ ప్రామాణిక సమయం + ఉజ్బెకిస్థాన్ వేసవి సమయం + + + + + వనౌటు సమయం + వనౌటు ప్రామాణిక సమయం + వనౌటు వేసవి సమయం + + + + + వెనిజులా సమయం + + + + + వ్లాడివోస్టోక్ సమయం + వ్లాడివోస్టోక్ ప్రామాణిక సమయం + వ్లాడివోస్టోక్ వేసవి సమయం + + + + + వోల్గోగ్రాడ్ సమయం + వోల్గోగ్రాడ్ ప్రామాణిక సమయం + వోల్గోగ్రాడ్ వేసవి సమయం + + + + + వోస్టోక్ సమయం + + + + + వేక్ దీవి సమయం + + + + + వాలీస్ మరియు ఫుటునా సమయం + + + + + యాకుట్స్క్ సమయం + యాకుట్స్క్ ప్రామాణిక సమయం + యాకుట్స్క్ వేసవి సమయం + + + + + ఏకాటెరిన్బర్గ్ సమయం + ఏకాటెరిన్బర్గ్ ప్రామాణిక సమయం + ఏకాటెరిన్బర్గ్ వేసవి సమయం + + + + + + latn + + telu + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 వేయి + 0 వేలు + 00 వేలు + 00 వేలు + 000 వేలు + 000 వేలు + 0 మిలియన్ + 0 మిలియన్ + 00 మిలియన్ + 00 మిలియన్ + 000 మిలియన్ + 000 మిలియన్ + 0 బిలియన్ + 0 బిలియన్ + 00 బిలియన్ + 00 బిలియన్ + 000 బిలియన్ + 000 బిలియన్ + 0 ట్రిలియన్ + 0 ట్రిలియన్ + 00 ట్రిలియన్ + 00 ట్రిలియన్ + 000 ట్రిలియన్ + 000 ట్రిలియన్ + + + + + 0వే + 0వే + 00వే + 00వే + 000వే + 000వే + 0మి + 0మి + 00మి + 00మి + 000మి + 000మి + 0బి + 0బి + 00బి + 00బి + 000బి + 000బి + 0ట్రి + 0ట్రి + 00ట్రి + 00ట్రి + 000ట్రి + 000ట్రి + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + యునైటెడ్ ఆరబ్ ఎమిరేట్స్ దిరామ్ + యునైటెడ్ ఆరబ్ ఎమిరేట్స్ దిరామ్ + యునైటెడ్ ఆరబ్ ఎమిరేట్స్ దిరామ్‌లు + + + ఆఫ్ఘాన్ ఆఫ్ఘాని + ఆఫ్ఘాన్ ఆఫ్ఘాని + ఆఫ్ఘాన్ ఆఫ్ఘాని + + + ఆల్బేనియన్ లేక్ + ఆల్బేనియన్ లేక్ + ఆల్బేనియన్ లేక్ + + + అమెరికన్ డ్రామ్ + అమెరికన్ డ్రామ్ + అమెరికన్ డ్రామ్‌లు + + + నెదర్లాండ్స్ యాంటిల్లియన్ గిల్‌డర్ + నెదర్లాండ్స్ యాంటిల్లియన్ గిల్‌డర్ + నెదర్లాండ్స్ యాంటిల్లియన్ గిల్‌డర్‌లు + + + అంగోలాన్ క్వాన్‌జా + అంగోలాన్ క్వాన్‌జా + అంగోలాన్ క్వాన్‌జా‌లు + + + అర్జెంటీనా పెసో + అర్జెంటీనా పెసో + అర్జెంటీనా పెసోలు + + + ఆస్ట్రేలియన్ డాలర్ + ఆస్ట్రేలియన్ డాలర్ + ఆస్ట్రేలియన్ డాలర్‌లు + A$ + + + అరుబన్ ఫ్లోరిన్ + + + అజర్బైజాన్ మానట్ + అజర్బైజాన్ మానట్ + అజర్బైజాన్ మానట్‌లు + + + బోస్నియా-హెర్జగోవినా మార్పిడి చెయ్యగలిగే మార్క్ + బోస్నియా-హెర్జగోవినా మార్పిడి చెయ్యగలిగే మార్క్ + బోస్నియా-హెర్జగోవినా మార్పిడి చెయ్యగలిగే మార్క్‌లు + + + బర్బాడియన్ డాలర్ + బర్బాడియన్ డాలర్ + బర్బాడియన్ డాలర్‌లు + + + బాంగ్లాదేశ్ టాకా + బాంగ్లాదేశ్ టాకా + బాంగ్లాదేశ్ టాకాలు + + + బల్గేరియన్ లేవ్ + బల్గేరియన్ లేవ్ + బల్గేరియన్ లేవ + + + బహ్రైని దీనార్ + బహ్రైని దీనార్ + బహ్రైని దీనార్‌లు + + + బురిండియన్ ఫ్రాంక్ + బురిండియన్ ఫ్రాంక్ + బురిండియన్ ఫ్రాంక్‌లు + + + బెర్ముడన్ డాలర్ + బెర్ముడన్ డాలర్ + బెర్ముడన్ డాలర్‌లు + + + బ్రూనై డాలర్ + బ్రూనై డాలర్ + బ్రూనై డాలర్‌లు + + + బొలీవియన్ బొలీవియానో + బొలీవియన్ బొలీవియానో + బొలీవియన్ బొలీవియానోలు + + + బ్రెజిలియన్ రియల్ + బ్రెజిలియన్ రియల్ + బ్రెజిలియన్ రియల్‌లు + R$ + + + బహామియన్ డాలర్ + బహామియన్ డాలర్ + బహామియన్ డాలర్‌లు + + + భూటానీయుల గుల్‌ట్రుమ్ + భూటానీయుల గుల్‌ట్రుమ్ + భూటానీయుల గుల్‌ట్రుమ్‌లు + + + బోట్స్‌వానా పులా + బోట్స్‌వానా పులా + బోట్స్‌వానా పులాలు + + + బెలరూసియన్ రూబుల్ + బెలరూసియన్ రూబుల్ + బెలరూసియన్ రూబుల్‌లు + + + బెలీజ్ డాలర్ + బెలీజ్ డాలర్ + బెలీజ్ డాలర్‌లు + + + కెనడియన్ డాలర్ + కెనడియన్ డాలర్ + కెనడియన్ డాలర్‌లు + CA$ + + + కొంగోలిస్ ఫ్రాంక్ + కొంగోలిస్ ఫ్రాంక్ + కొంగోలిస్ ఫ్రాంక్‌లు + + + స్విస్ ఫ్రాంక్ + స్విస్ ఫ్రాంక్ + స్విస్ ఫ్రాంక్‌లు + + + చిలియన్ పెసో + చిలియన్ పెసో + చిలియన్ పెసోలు + + + చైనా దేశ యువాన్ + చైనా దేశ యువాన్ + చైనా దేశ యువాన్ + CN¥ + + + కొలంబియన్ పెసో + కొలంబియన్ పెసో + కొలంబియన్ పెసోలు + + + కోస్టా రికన్ కోలోన్ + కోస్టా రికన్ కోలోన్ + కోస్టా రికన్ కోలోన్‌లు + + + కుబన్ మార్పిడి చెయ్యగలిగే పెసో + కుబన్ మార్పిడి చెయ్యగలిగే పెసో + కుబన్ మార్పిడి చెయ్యగలిగే పెసోలు + + + క్యూబన్ పెసో + క్యూబన్ పెసో + క్యూబన్ పెసోలు + + + కేప్ వెర్డియన్ ఎస్కుడో + కేప్ వెర్డియన్ ఎస్కుడో + కేప్ వెర్డియన్ ఎస్కుడోలు + + + చెక్ రిపబ్లిక్ కోరునా + చెక్ రిపబ్లిక్ కోరునా + చెక్ రిపబ్లిక్ కోరునాలు + + + జిబోటియన్ ఫ్రాంక్ + జిబోటియన్ ఫ్రాంక్ + జిబోటియన్ ఫ్రాంక్‌లు + + + డానిష్ క్రోన్ + డానిష్ క్రోన్ + డానిష్ క్రోనర్ + + + డోమినికన్ పెసో + డోమినికన్ పెసో + డోమినికన్ పెసోలు + + + అల్జీరియన్ దీనార్ + అల్జీరియన్ దీనార్ + అల్జీరియన్ దీనార్‌లు + + + ఈజిప్షియన్ పౌండ్ + ఈజిప్షియన్ పౌండ్ + ఈజిప్షియన్ పౌండ్‌లు + + + ఎరిట్రీన్ నక్ఫా + ఎరిట్రీన్ నక్ఫా + ఎరిట్రీన్ నక్ఫా‌లు + + + ఇథియోపియన్ బర్ + ఇథియోపియన్ బర్ + ఇథియోపియన్ బర్‌లు + + + యురొ + యురొ + యురోలు + + + + ఫీజియన్ డాలర్ + ఫీజియన్ డాలర్ + ఫీజియన్ డాలర్‌లు + + + ఫాక్‌ల్యాండ్ దీవులు పౌండ్ + ఫాక్‌ల్యాండ్ దీవులు పౌండ్ + ఫాక్‌ల్యాండ్ దీవులు పౌండ్‌లు + + + బ్రిటిష్ పౌండ్ స్టెర్లింగ్ + బ్రిటిష్ పౌండ్ స్టెర్లింగ్ + బ్రిటిష్ పౌండ్‌ల స్టెర్లింగ్ + £ + + + జార్జియన్ లారి + జార్జియన్ లారి + జార్జియన్ లారీలు + + + గానెయన్ సెడి + గానెయన్ సెడి + గానెయన్ సెడిలు + + + జిబ్రల్‌టూర్ పౌండ్ + జిబ్రల్‌టూర్ పౌండ్ + జిబ్రల్‌టూర్ పౌండ్‌లు + + + గాంబియన్ దలాసి + గాంబియన్ దలాసి + గాంబియన్ దలాసిలు + + + గ్వినియన్ ఫ్రాంక్ + గ్వినియన్ ఫ్రాంక్ + గ్వినియన్ ఫ్రాంక్‌లు + + + గ్యుటెమాలన్ క్వెట్‌జల్ + గ్యుటెమాలన్ క్వెట్‌జల్ + గ్యుటెమాలన్ క్వెట్‌జల్‌లు + + + గుయనియాస్ డాలర్ + గుయనియాస్ డాలర్ + గుయనియాస్ డాలర్‌లు + + + హాంకాంగ్ డాలర్ + హాంకాంగ్ డాలర్ + హాంకాంగ్ డాలర్‌లు + HK$ + + + హోండురన్ లెమిపిరా + హోండురన్ లెమిపిరా + హోండురన్ లెమిపిరాలు + + + క్రొయేషియన్ క్యూన + క్రొయేషియన్ క్యూన + క్రొయేషియన్ క్యూనాలు + + + హైటియన్ గ్వోర్డే + హైటియన్ గ్వోర్డే + హైటియన్ గ్వోర్డేలు + + + హంగేరియన్ ఫోరిన్ట్ + హంగేరియన్ ఫోరిన్ట్ + హంగేరియన్ ఫోరిన్ట్‌లు + + + ఇండోనేషియా రూపాయి + ఇండోనేషియా రూపాయి + ఇండోనేషియా రూపాయలు + + + ఐరాయిలి న్యూ షెక్యెల్ + ఐరాయిలి న్యూ షెక్యెల్ + ఐరాయిలి న్యూ షెక్యెల్‌లు + + + + రూపాయి + రూపాయి + రూపాయలు + + + + ఇరాకీ దీనార్ + ఇరాకీ దీనార్ + ఇరాకీ దీనార్‌లు + + + ఇరానియన్ రీయల్ + ఇరానియన్ రీయల్ + ఇరానియన్ రీయల్‌లు + + + ఐస్లాండిక్ క్రోనా + ఐస్లాండిక్ క్రోనా + ఐస్లాండిక్ క్రోనర్ + + + జమైకన్ డాలర్ + జమైకన్ డాలర్ + జమైకన్ డాలర్‌లు + + + జోర్‌డానియన్ దీనార్ + జోర్‌డానియన్ దీనార్ + జోర్‌డానియన్ దీనార్‌లు + + + జపాను దేశ యెస్ + జపాను దేశ యెస్ + జపాను దేశ యెస్ + JP¥ + + + కెన్యాన్ షిల్లింగ్ + కెన్యాన్ షిల్లింగ్ + కెన్యాన్ షిల్లింగ్‌లు + + + కిర్గిస్థాని సౌమ్ + కిర్గిస్థాని సౌమ్ + కిర్గిస్థాని సౌమ్‌లు + + + కాంబోడియన్ రీల్ + కాంబోడియన్ రీల్ + కాంబోడియన్ రీల్‌లు + + + కొమోరియన్ ఫ్రాంక్ + కొమోరియన్ ఫ్రాంక్ + కొమోరియన్ ఫ్రాంక్‌లు + + + ఉత్తర కొరియా వోన్ + ఉత్తర కొరియా వోన్ + ఉత్తర కొరియా వోన్ + + + దక్షిణ కొరియా వోన్ + దక్షిణ కొరియా వోన్ + దక్షిణ కొరియా వోన్ + + + + కువైట్ దీనార్ + కువైట్ దీనార్ + కువైట్ దీనార్‌లు + + + కేమాన్ దీవుల డాలర్ + కేమాన్ దీవుల డాలర్ + కేమాన్ దీవుల డాలర్‌లు + + + ఖజికిస్థాన్ టెంగే + ఖజికిస్థాన్ టెంగే + ఖజికిస్థాన్ టెంగేలు + + + లాటియన్ కిప్ + లాటియన్ కిప్ + లాటియన్ కిప్‌లు + + + లెబనీస్ పౌండ్ + లెబనీస్ పౌండ్ + లెబనీస్ పౌండ్‌లు + + + శ్రీలంక రూపాయి + శ్రీలంక రూపాయి + శ్రీలంక రూపాయలు + + + లిబేరియన్ డాలర్ + లిబేరియన్ డాలర్ + లిబేరియన్ డాలర్‌లు + + + లెసోధో లోటి + + + లిథోనియన్ లీటాస్ + లిథోనియన్ లీటాస్ + లిథోనియన్ లీటై + + + లాత్వియన్ లాట్స్ + లాత్వియన్ లాట్స్ + లాత్వియన్ లాటి + + + లిబియన్ దీనార్ + లిబియన్ దీనార్ + లిబియన్ దీనార్‌లు + + + మోరోకన్ దిర్హుమ్ + మోరోకన్ దిర్హుమ్ + మోరోకన్ దిర్హుమ్‌లు + + + మోల్‌డోవన్ ల్యూ + మోల్‌డోవన్ ల్యూ + మోల్‌డోవన్ లీ + + + మలగసీ అరియరీ + మలగసీ అరియరీ + మలగసీ అరియరీలు + + + మెసిడోనియన్ దినార్ + మెసిడోనియన్ దినార్ + మెసిడోనియన్ దినారి + + + మ్యాన్మా క్యాట్ + మ్యాన్మా క్యాట్ + మ్యాన్మా క్యాట్‌లు + + + మంగోలియన్ టుగ్రిక్ + మంగోలియన్ టుగ్రిక్ + మంగోలియన్ టుగ్రిక్‌లు + + + మకనీస్ పటాక + మకనీస్ పటాక + మకనీస్ పటాకాలు + + + మౌరిటానియన్ ఒగ్యియా + మౌరిటానియన్ ఒగ్యియా + మౌరిటానియన్ ఒగ్యియాలు + + + మారిషన్ రూపాయి + మారిషన్ రూపాయి + మారిషన్ రూపాయలు + + + మాల్దీవియన్ రుఫియా + మాల్దీవియన్ రుఫియా + మాల్దీవియన్ రుఫియాలు + + + మలావియన్ క్వాచా + మలావియన్ క్వాచా + మలావియన్ క్వాచాలు + + + మెక్సికన్ పెసో + మెక్సికన్ పెసో + మెక్సికన్ పెసోలు + MX$ + + + మలేషియా రింగ్గిట్ + మలేషియా రింగ్గిట్ + మలేషియా రింగ్గిట్‌లు + + + మొజాంబికన్ మెటికల్ + మొజాంబికన్ మెటికల్ + మొజాంబికన్ మెటికల్‌లు + + + నమిబియన్ డాలర్ + నమిబియన్ డాలర్ + నమిబియన్ డాలర్‌లు + + + నైజీరియన్ నైరా + నైజీరియన్ నైరా + నైజీరియన్ నైరాలు + + + నికరగ్యుయన్ కొర్‌డుబు + నికరగ్యుయన్ కొర్‌డుబు + నికరగ్యుయన్ కొర్‌డుబులు + + + నార్వేజీయన్ క్రోన్ + నార్వేజీయన్ క్రోన్ + నార్వేజీయన్ క్రోనర్ + + + నేపాలీయుల రూపాయి + నేపాలీయుల రూపాయి + నేపాలీయుల రూపాయలు + + + న్యూజిలాండ్ డాలర్ + న్యూజిలాండ్ డాలర్ + న్యూజిలాండ్ డాలర్‌లు + NZ$ + + + ఒమాని రీయల్ + ఒమాని రీయల్ + ఒమాని రీయల్‌లు + + + పనామనియన్ బల్బోవ + పనామనియన్ బల్బోవ + పనామనియన్ బల్బోవాలు + + + పెరువియన్ న్యూవో సోల్ + పెరువియన్ న్యూవో సోల్ + పెరువియన్ న్యూవో సోల్‌లు + + + పప్యూ న్యూ గ్యినియన్ కినా + పప్యూ న్యూ గ్యినియన్ కినా + పప్యూ న్యూ గ్యినియన్ కినా + + + ఫిలిప్పిన్ పెసో + ఫిలిప్పిన్ పెసో + ఫిలిప్పిన్ పెసోలు + + + పాకిస్థాన్ రూపాయి + పాకిస్థాన్ రూపాయి + పాకిస్థాన్ రూపాయలు + + + పోలిష్ జ్లోటీ + పోలిష్ జ్లోటీ + పోలిష్ జ్లోటీలు + + + పరగ్వాయన్ గ్వారని + పరగ్వాయన్ గ్వారని + పరగ్వాయన్ గ్వారనీలు + + + క్వాటరి రీయల్ + క్వాటరి రీయల్ + క్వాటరి రీయల్‌లు + + + రోమానియాన్ లెయు + రోమానియాన్ లెయు + రోమానియాన్ లీ + + + సెర్బియన్ దీనార్ + సెర్బియన్ దీనార్ + సెర్బియన్ దీనార్‌లు + + + రష్యా రూబల్ + రష్యా రూబల్ + రష్యా రూబల్‌లు + + + ర్వానడాన్ ఫ్రాంక్ + ర్వానడాన్ ఫ్రాంక్ + ర్వానడాన్ ఫ్రాంక్‌లు + + + సౌది రియల్ + సౌది రియల్ + సౌది రియల్‌లు + + + సోలోమన్ దీవుల డాలర్ + సోలోమన్ దీవుల డాలర్ + సోలోమన్ దీవుల డాలర్‌లు + + + సెయిచెల్లోయిస్ రూపాయి + సెయిచెల్లోయిస్ రూపాయి + సెయిచెల్లోయిస్ రూపాయలు + + + సుడానీస్ పౌండ్ + సుడానీస్ పౌండ్ + సుడానీస్ పౌండ్‌లు + + + స్వీడిష్ క్రోనా + స్వీడిష్ క్రోనా + స్వీడిష్ క్రోనర్ + + + సింగపూర్ డాలర్ + సింగపూర్ డాలర్ + సింగపూర్ డాలర్‌లు + + + సెయింట్ హెలెనా పౌండ్ + సెయింట్ హెలెనా పౌండ్ + సెయింట్ హెలెనా పౌండ్‌లు + + + సీయిరు లియోనియన్ లీయోన్ + సీయిరు లియోనియన్ లీయోన్ + సీయిరు లియోనియన్ లీయోన్‌లు + + + సొమాలి షిల్లింగ్ + సొమాలి షిల్లింగ్ + సొమాలి షిల్లింగ్‌లు + + + సురినామీయుల డాలర్ + సురినామీయుల డాలర్ + సురినామీయుల డాలర్‌లు + + + దక్షిణ సుడానీస్ పౌండ్ + దక్షిణ సుడానీస్ పౌండ్ + దక్షిణ సుడానీస్ పౌండ్‌లు + + + సావో టోమ్ మరియు ప్రిన్సిపి డోబ్రా + సావో టోమ్ మరియు ప్రిన్సిపి డోబ్రా + సావో టోమ్ మరియు ప్రిన్సిపి డోబ్రాలు + + + సిరీయన్ పౌండ్ + సిరీయన్ పౌండ్ + సిరీయన్ పౌండ్‌లు + + + స్వాజి లిలాన్గేని + స్వాజి లిలాన్గేని + స్వాజి ఎమలాన్గేని + + + థాయ్ బాట్ + థాయ్ బాట్ + థాయ్ బాట్ + ฿ + + + తజికిస్థాన్ సమోని + తజికిస్థాన్ సమోని + తజికిస్థాన్ సమోనీలు + + + తుర్క్‌మెనిస్థాని మనాట్ + తుర్క్‌మెనిస్థాని మనాట్ + తుర్క్‌మెనిస్థాని మనాట్ + + + తునీషియన్ దీనార్ + తునీషియన్ దీనార్ + తునీషియన్ దీనార్‌లు + + + టోంగాన్ పాంʻగా + టోంగాన్ పాంʻగా + టోంగాన్ పాంʻగా + + + తుర్కిష్ లిరా + తుర్కిష్ లిరా + తుర్కిష్ లిరా + + + ట్రినిడాడ్ మరియు టొబాగో డాలర్ + ట్రినిడాడ్ మరియు టొబాగో డాలర్ + ట్రినిడాడ్ మరియు టొబాగో డాలర్‌లు + + + క్రొత్త తైవాన్ డాలర్ + క్రొత్త తైవాన్ డాలర్ + క్రొత్త తైవాన్ డాలర్ + NT$ + + + టాంజానియన్ షిల్లింగ్ + టాంజానియన్ షిల్లింగ్ + టాంజానియన్ షిల్లింగ్‌లు + + + ఉక్రయినియన్ హ్రివ్‌నియా + ఉక్రయినియన్ హ్రివ్‌నియా + ఉక్రయినియన్ హ్రివ్‌నియాలు + + + యుగండన్ షిల్లింగ్ + యుగండన్ షిల్లింగ్ + యుగండన్ షిల్లింగ్‌లు + + + అమెరికా డాలర్ + అమెరికా డాలర్ + అమెరికా డాలర్‌లు + $ + + + ఉరుగ్వెయన్ పెసో + ఉరుగ్వెయన్ పెసో + ఉరుగ్వెయన్ పెసోలు + + + ఉజ్‌బెకిస్తాన్ సౌమ్ + ఉజ్‌బెకిస్తాన్ సౌమ్ + ఉజ్‌బెకిస్తాన్ సౌమ్ + + + వెనుజులా బోలివర్ + వెనుజులా బోలివర్ + వెనుజులా బోలివర్‌లు + + + వియత్నామీయుల డాంగ్ + వియత్నామీయుల డాంగ్ + వియత్నామీయుల డాంగ్ + + + + వనాటు వటు + వనాటు వటు + వవాటు వటూలు + + + సమోయన్ తాలా + సమోయన్ తాలా + సమోయన్ తాలా + + + సిఎఫ్‌ఎ ఫ్రాంక్ బిఇఏసి + సిఎఫ్‌ఎ ఫ్రాంక్ బిఇఏసి + సిఎఫ్‌ఎ ఫ్రాంక్ బిఇఏసి + FCFA + + + వెండి + + + బంగారం + + + తూర్పు కరీబియన్ డాలర్ + తూర్పు కరీబియన్ డాలర్ + తూర్పు కరీబియన్ డాలర్‌లు + EC$ + + + సిఎఫ్‌ఎ ఫ్రాంక్ బిసిఈఏఓ + సిఎఫ్‌ఎ ఫ్రాంక్ బిసిఈఏఓ + సిఎఫ్‌ఎ ఫ్రాంక్ బిసిఈఏఓ + CFA + + + సిఎఫ్‌పి ఫ్రాంక్ + సిఎఫ్‌పి ఫ్రాంక్ + సిఎఫ్‌పి ఫ్రాంక్‌లు + CFPF + + + ప్లాటినం + + + తెలియని కరెన్సీ + తెలియని కరెన్సీ ప్రమాణం + తెలియని కరెన్సీ + + + ఎమునీ రీయల్ + ఎమునీ రీయల్ + ఎమునీ రీయల్‌లు + + + దక్షిణ ఆఫ్రికా ర్యాండ్ + దక్షిణ ఆఫ్రికా ర్యాండ్ + దక్షిణ ఆఫ్రికా ర్యాండ్ + + + జాంబియన్ క్వాచా (1968–2012) + + + జాంబియన్ క్వాచా + జాంబియన్ క్వాచా + జాంబియన్ క్వాచాలు + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} గు-శక్తి + {0} గు-శక్తి + + + {0} నిమిషం + {0} నిమిషాలు + + + {0} సెకను + {0} సెకన్లు + + + {0} డిగ్రీ + {0} డిగ్రీలు + + + {0} ఎకరం + {0} ఎకరాలు + + + {0} హెక్టారు + {0} హెక్టార్లు + + + {0} చదరపు అడుగు + {0} చదరపు అడుగులు + + + {0} చదరపు కిలోమీటర్ + {0} చదరపు కిలోమీటర్లు + + + {0} చదరపు మీటర్ + {0} చదరపు మీటర్లు + + + {0} చదరపు మైలు + {0} చదరపు మైళ్లు + + + {0} రోజు + {0} రోజులు + + + {0} గంట + {0} గంటలు + + + {0} మిల్లీసెకను + {0} మిల్లీసెకన్లు + + + {0} నిమిషం + {0} నిమిషాలు + + + {0} నెల + {0} నెలలు + + + {0} సెకను + {0} సెకన్లు + + + {0} వారం + {0} వారాలు + + + {0} సంవత్సరం + {0} సంవత్సరాలు + + + {0} సెంటీమీటర్ + {0} సెంటీమీటర్లు + + + {0} అడుగు + {0} అడుగులు + + + {0} అంగుళం + {0} అంగుళాలు + + + {0} కిలోమీటర్ + {0} కిలోమీటర్లు + + + {0} కాంతి సంవత్సరం + {0} కాంతి సంవత్సరాలు + + + {0} మీటర్ + {0} మీటర్లు + + + {0} మైలు + {0} మైళ్లు + + + {0} మిల్లీమీటర్ + {0} మిల్లీమీటర్లు + + + {0} పికోమీటర్ + {0} పికోమీటర్లు + + + {0} గజం + {0} గజాలు + + + {0} గ్రాము + {0} గ్రాములు + + + {0} కిలోగ్రాము + {0} కిలోగ్రాములు + + + {0} ఔన్సు + {0} ఔన్సులు + + + {0} పౌండు + {0} పౌండ్లు + + + {0} హార్స్‌పవర్ + {0} హార్స్‌పవర్ + + + {0} కిలోవాట్ + {0} కిలోవాట్లు + + + {0} వాట్ + {0} వాట్లు + + + {0} హెక్టోపాస్కల్ + {0} హెక్టోపాస్కల్‌లు + + + {0} అంగుళం పాదరసం + {0} అంగుళాల పాదరసం + + + {0} మిల్లీబార్ + {0} మిల్లీబార్‌లు + + + {0} కిలోమీటర్/గంట + {0} కిలోమీటర్లు/గంట + + + {0} మీటర్/సెకను + {0} మీటర్లు/సెకను + + + {0} మైలు/గంట + {0} మైళ్లు/గంట + + + {0}డిగ్రీ సెల్సియస్ + {0}డిగ్రీల సెల్సియస్ + + + {0}డిగ్రీ ఫారన్హీట్ + {0}డిగ్రీల ఫారన్హీట్ + + + {0} క్యూబిక్ కిలోమీటర్ + {0} క్యూబిక్ కిలోమీటర్లు + + + {0} క్యూబిక్ మైలు + {0} క్యూబిక్ మైళ్లు + + + {0} లీటర్ + {0} లీటర్లు + + + + + {0}/{1} + + + {0} గు + {0} గు + + + {0} నిమి. + {0} నిమి. + + + {0} సెక. + {0} సెక. + + + {0} డి. + {0} డి. + + + {0} ఎక. + {0} ఎక. + + + {0} హె. + {0} హె. + + + {0} చద. అ. + {0} చద. అ. + + + {0} కి.మీ² + {0} కి.మీ² + + + {0} మీ² + {0} మీ² + + + {0} చద. మై. + {0} చద. మై. + + + {0} రోజు + {0} రోజులు + + + {0} గంట + {0} గంటలు + + + {0} మి.సె + {0} మి.సె + + + {0} నిమి. + {0} నిమి. + + + {0} నెల + {0} నెలలు + + + {0} సెకను + {0} సెకన్లు + + + {0} వా. + {0} వా. + + + {0} సంవత్సరం + {0} సంవత్సరాలు + + + {0} సెం.మీ + {0} సెం.మీ + + + {0} అ. + {0} అ. + + + {0} అం. + {0} అం. + + + {0} కి.మీ + {0} కి.మీ + + + {0} కాం. సం + {0} కాం. సం + + + {0} మీ + {0} మీ + + + {0} మై + {0} మై + + + {0} మి.మీ + {0} మి.మీ + + + {0} పి.మీ + {0} పి.మీ + + + {0} గ. + {0} గ. + + + {0} గ్రా. + {0} గ్రా. + + + {0} కి.గ్రా + {0} కి.గ్రా + + + {0} ఔ. + {0} ఔ. + + + {0} పౌ. + {0} పౌ. + + + {0} హా.ప + {0} హా.ప + + + {0} కి.వా + {0} కి.వా + + + {0} వా. + {0} వా. + + + {0} హె.పా + {0} హె.పా + + + {0} అం.పాద + {0} అం.పాద + + + {0} మి.బార్ + {0} మి.బార్ + + + {0} కి/గం. + {0} కిమీ/గం. + + + {0} మీ/సె + {0} మీ/సె + + + {0} మై/గం. + {0} మై/గం. + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} కిమీ³ + {0} కిమీ³ + + + {0} మై³ + {0} మై³ + + + {0} లీ. + {0} లీ. + + + + + {0}/{1} + + + {0} గు + {0} గు + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ఎక. + {0} ఎక. + + + {0} హె. + {0} హె. + + + {0} అ² + {0} అ² + + + {0} కి.మీ² + {0} కి.మీ² + + + {0} మీ² + {0} మీ² + + + {0} మై² + {0} మై² + + + {0} రో + {0} రో + + + {0}గం + {0}గం + + + {0} మి.సె + {0} మి.సె + + + {0}ని + {0} ని + + + {0} నె + {0} నె + + + {0} సె + {0} సె + + + {0} వా. + {0} వా. + + + {0}సం + {0}సం + + + {0} సెం.మీ + {0} సెం.మీ + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} కి.మీ + {0} కి.మీ + + + {0} కాం. సం + {0} కాం. సం + + + {0} మీ + {0} మీ + + + {0} మై + {0} మై + + + {0} మి.మీ + {0} మి.మీ + + + {0} పి.మీ + {0} పి.మీ + + + {0} గ. + {0} గ. + + + {0} గ్రా. + {0} గ్రా. + + + {0} కి.గ్రా + {0} కి.గ్రా + + + {0} ఔ. + {0} ఔ. + + + {0} పౌ. + {0} పౌ. + + + {0} హా.ప + {0} హా.ప + + + {0} కి.వా + {0} కి.వా + + + {0} వా. + {0} వా. + + + {0} హె.పా + {0} హె.పా + + + {0} అం.పాద + {0} అం.పాద + + + {0} మి.బార్ + {0} మి.బార్ + + + {0} కిమీ/గం. + {0} కిమీ/గం. + + + {0} మీ/సె + {0} మీ/సె + + + {0} మై/గం. + {0} మై/గం. + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} కిమీ³ + {0} కిమీ³ + + + {0} మై³ + {0} మై³ + + + {0} లీ. + {0} లీ. + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} మరియు {1} + {0} మరియు {1} + + + + + అవును:అ + వద్దు:వ + + + + diff --git a/library/Zend/Locale/Data/te_IN.xml b/library/Zend/Locale/Data/te_IN.xml new file mode 100755 index 000000000..a16da3e76 --- /dev/null +++ b/library/Zend/Locale/Data/te_IN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/telephoneCodeData.xml b/library/Zend/Locale/Data/telephoneCodeData.xml new file mode 100755 index 000000000..7f6eff935 --- /dev/null +++ b/library/Zend/Locale/Data/telephoneCodeData.xml @@ -0,0 +1,875 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/teo.xml b/library/Zend/Locale/Data/teo.xml new file mode 100755 index 000000000..c69c4b47b --- /dev/null +++ b/library/Zend/Locale/Data/teo.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakan + Kiamhari + Kiarabu + Kibelarusi + Kibulgaria + Kibangla + Kichecki + Kijerumani + Kigiriki + Kingereza + Kihispania + Kiajemi + Kifaransa + Kihausa + Kihindi + Kihungari + Kiindonesia + Kiigbo + Kiitaliano + Kijapani + Kijava + Kikambodia + Kikorea + Kimalesia + Kiburma + Kinepali + Kiholanzi + Kipunjabi + Kipolandi + Kireno + Kiromania + Kirusi + Kinyarwanda + Kisomali + Kiswidi + Kitamil + Kiteso + Kitailandi + Kituruki + Kiukrania + Kiurdu + Kivietinamu + Kiyoruba + Kichina + Kizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenia + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e g h i j k l m n o p r s t u v w x y] + [f q z] + [A B C D E G H I J K L M N O P R S T U V W X Y] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Rar + Muk + Kwa + Dun + Mar + Mod + Jol + Ped + Sok + Tib + Lab + Poo + + + Orara + Omuk + Okwamg' + Odung'el + Omaruk + Omodok'king'ol + Ojola + Opedel + Osokosokoma + Otibar + Olabor + Opoo + + + + + R + M + K + D + M + M + J + P + S + T + L + P + + + + + + + Jum + Bar + Aar + Uni + Ung + Kan + Sab + + + Nakaejuma + Nakaebarasa + Nakaare + Nakauni + Nakaung'on + Nakakany + Nakasabiti + + + + + J + B + A + U + U + K + S + + + + + + + K1 + K2 + K3 + K4 + + + Akwota abe + Akwota Aane + Akwota auni + Akwota Aung'on + + + + + + + Taparachu + Ebongi + + + + + + Kabla ya Christo + Baada ya Christo + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Enzi + + + Ekan + + + Elap + + + Ewiki + + + Aparan + Jaan + Lolo + Moi + + + TA/EB + + + Esaa + + + Idakika + + + Isekonde + + + Majira ya saa + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Ango'otol lok' Falme za Kiarabu + + + Ango'otol lok' Angola + + + Ango'otol lok' Australia + + + Ango'otol lok' Bahareni + + + Ango'otol lok' Burundi + + + Ango'otol lok' Botswana + + + Edola lok'Kanada + + + Ango'otol lok' Kongo + + + Ango'otol lok' Uswisi + + + Ango'otol lok' China + + + Ango'otol lok' Kepuvede + + + Ango'otol lok' Jibuti + + + Ango'otol lok' Aljeria + + + Epaunt lok' Misri + + + Ango'otol lok' Eritrea + + + Ango'otol lok' Uhabeshi + + + Yuro + + + Epaunt lok' Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Ango'otol lok' Gine + + + Ango'otol lok' India + + + Ango'otol lok' Kijapani + + + Ango'otol lok' Kenya + + + Ango'otol lok' Komoro + + + edola lok' Liberia + + + Ango'otol lok' Lesoto + + + Ango'otol lok' Libya + + + Ango'otol lok' Moroko + + + Ango'otol lok' Bukini + + + Ango'otol lok' Moritania + + + Ango'otol lok' Morisi + + + Ango'otol lok' Malawi + + + Ango'otol lok' Msumbiji + + + Ango'otol lok' Namibia + + + Ango'otol lok' Nijeria + + + Ango'otol lok' Rwanda + + + Ango'otol lok' Saudia + + + Ango'otol lok' Shelisheli + + + Epaunt Lok' Sudan + + + Ango'otol lok' Santahelena + + + Leoni + + + Ango'otol lok' Somalia + + + Ango'otol lok' Sao Tome na Principe + + + Lilangeni + + + Ango'otol lok' Tunisia + + + Ango'otol lok' Tanzania + + + Ango'otol lok' Uganda + USh + + + edola lok' Amareka + + + Ango'otol lok' CFA BEAC + + + Ango'otol lok' CFA BCEAO + + + Ango'otol lok' Afrika Kusini + + + Ango'otol lok' Zambia (1968–2012) + + + Ango'otol lok' Zambia + + + Edola lok'Zimbabwe + + + + + + Eeh:E + Kuju:K + + + + diff --git a/library/Zend/Locale/Data/teo_KE.xml b/library/Zend/Locale/Data/teo_KE.xml new file mode 100755 index 000000000..5b2936439 --- /dev/null +++ b/library/Zend/Locale/Data/teo_KE.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + Ksh + + + + diff --git a/library/Zend/Locale/Data/teo_UG.xml b/library/Zend/Locale/Data/teo_UG.xml new file mode 100755 index 000000000..3042cb51d --- /dev/null +++ b/library/Zend/Locale/Data/teo_UG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/tg.xml b/library/Zend/Locale/Data/tg.xml new file mode 100755 index 000000000..5ca3a4a34 --- /dev/null +++ b/library/Zend/Locale/Data/tg.xml @@ -0,0 +1,248 @@ + + + + + + + + + + + + Белорусӣ + Булғорӣ + Бенгалӣ + Бретонӣ + Босниягӣ + Каталанӣ + Чехӣ + Даниягӣ + Немисӣ + Юнонӣ + Англисӣ + Эсперанто + Испанӣ + Эстонӣ + Баскӣ + Форсӣ + Финнӣ + Филиппинӣ + Фарозӣ + Фаронсавӣ + Фрисианӣ + Ирландӣ + Шотландӣ-Галикӣ + Галисианӣ + Горанӣ + Гуҷаратӣ + Яҳудӣ + Ҳиндӣ + Маҷорӣ + Байни забонӣ + Индонезӣ + Исландӣ + Ҷопонӣ + Ҷаванизӣ + Гурҷӣ + Қирғизӣ + Лотинӣ + Лаосӣ + Литвонӣ + Латвиягӣ + Ҳолландӣ + Норвегӣ + Урисоӣ + Лаҳистонӣ + Португалӣ + Португалӣ (Бразилия) + Руминӣ + Русӣ + Шведӣ + Тоҷикӣ + Ӯйғурӣ + Украинӣ + Урду + Ӯзбекӣ + Яҳудии Аврупои шарқӣ + Чинӣ + Зулу + + + + + + Афғонистан + Тоҷикистон + Тонга + + + + [а б в г ғ д е ё ж з и ӣ й к қ л м н о п р с т у ӯ ф х ҳ ч ҷ ш ъ э ю я] + [ц щ ы ь] + [А Б В Г Ғ Д Е Ж З И Й К Қ Л М Н О П Р С Т У Ф Х Ҳ Ч Ҷ Ш Ъ Э Ю Я] + + + « + » + « + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG yy/MM/dd + + + + + + + + + Янв + Фев + Мар + Апр + Май + Июн + Июл + Авг + Сен + Окт + Ноя + Дек + + + Январ + Феврал + Март + Апрел + Май + Июн + Июл + Август + Сентябр + Октябр + Ноябр + Декабр + + + + + + + Яшб + Дшб + Сшб + Чшб + Пшб + Ҷмъ + Шнб + + + Якшанбе + Душанбе + Сешанбе + Чоршанбе + Панҷшанбе + Ҷумъа + Шанбе + + + + + + + пе. чо. + па. чо. + + + + + + Пеш аз милод + ПаМ + + + ПеМ + ПаМ + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + + + Сомонӣ + сом + + + + + diff --git a/library/Zend/Locale/Data/tg_Cyrl.xml b/library/Zend/Locale/Data/tg_Cyrl.xml new file mode 100755 index 000000000..df2e1e7bd --- /dev/null +++ b/library/Zend/Locale/Data/tg_Cyrl.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + โลก + แอฟริกา + อเมริกาเหนือ + อเมริกาใต้ + โอเชียเนีย + แอฟริกาตะวันตก + อเมริกากลาง + แอฟริกาตะวันออก + แอฟริกาเหนือ + แอฟริกากลาง + แอฟริกาตอนใต้ + อเมริกา + อเมริกาตอนเหนือ + แคริบเบียน + เอเชียตะวันออก + เอเชียใต้ + เอเชียตะวันออกเฉียงใต้ + ยุโรปใต้ + ออสตราเลเซีย + เมลานีเซีย + เขตไมโครนีเซีย + โปลินีเซีย + เอเชีย + เอเชียกลาง + เอเชียตะวันตก + ยุโรป + ยุโรปตะวันออก + ยุโรปเหนือ + ยุโรปตะวันตก + ละตินอเมริกา + เกาะแอสเซนชัน + อันดอร์รา + สหรัฐอาหรับเอมิเรตส์ + อัฟกานิสถาน + แอนติกาและบาร์บูดา + แองกวิลลา + แอลเบเนีย + อาร์เมเนีย + เนเธอร์แลนด์แอนทิลลิส + แองโกลา + แอนตาร์กติกา + อาร์เจนตินา + อเมริกันซามัว + ออสเตรีย + ออสเตรเลีย + อารูบา + หมู่เกาะโอลันด์ + อาเซอร์ไบจาน + บอสเนียและเฮอร์เซโกวีนา + บาร์เบโดส + บังกลาเทศ + เบลเยียม + บูร์กินาฟาโซ + บัลแกเรีย + บาห์เรน + บุรุนดี + เบนิน + เซนต์บาร์เธเลมี + เบอร์มิวดา + บรูไน + โบลิเวีย + เนเธอร์แลนด์แคริบเบียน + บราซิล + บาฮามาส + ภูฏาน + เกาะบูเวต + บอตสวานา + เบลารุส + เบลีซ + แคนาดา + หมู่เกาะโคโคส + คองโก-กินชาซา + คองโก (สาธารณรัฐประชาธิปไตย) + สาธารณรัฐแอฟริกากลาง + คองโก-บราซซาวิล + คองโก (สาธารณรัฐ) + สวิตเซอร์แลนด์ + ไอวอรี่โคสต์ + หมู่เกาะคุก + ชิลี + แคเมอรูน + จีน + โคลอมเบีย + เกาะคลิปเปอร์ตัน + คอสตาริกา + คิวบา + เคปเวิร์ด + คูราเซา + เกาะคริสต์มาส + ไซปรัส + สาธารณรัฐเช็ก + เยอรมนี + ดิเอโกการ์เซีย + จิบูตี + เดนมาร์ก + โดมินิกา + สาธารณรัฐโดมินิกัน + แอลจีเรีย + ซีโอตาและเมลิลลา + เอกวาดอร์ + เอสโตเนีย + อียิปต์ + ซาฮาราตะวันตก + เอริเทรีย + สเปน + เอธิโอเปีย + สหภาพยุโรป + ฟินแลนด์ + ฟิจิ + หมู่เกาะฟอล์กแลนด์ + หมู่เกาะฟอล์กแลนด์ (อิสลาส มาลวินาส) + ไมโครนีเซีย + หมู่เกาะแฟโร + ฝรั่งเศส + กาบอง + สหราชอาณาจักร + อังกฤษ + เกรเนดา + จอร์เจีย + เฟรนช์เกียนา + เกิร์นซีย์ + กานา + ยิบรอลตาร์ + กรีนแลนด์ + แกมเบีย + กินี + กวาเดอลูป + อิเควทอเรียลกินี + กรีซ + เกาะเซาท์จอร์เจียและหมู่เกาะเซาท์แซนด์วิช + กัวเตมาลา + กวม + กินี-บิสเซา + กายอานา + เขตปกครองพิเศษฮ่องกงแห่งสาธารณรัฐประชาชนจีน + ฮ่องกง + เกาะเฮิร์ดและหมู่เกาะแมกดอนัลด์ + ฮอนดูรัส + โครเอเชีย + เฮติ + ฮังการี + หมู่เกาะคานารี + อินโดนีเซีย + ไอร์แลนด์ + อิสราเอล + เกาะแมน + อินเดีย + บริติชอินเดียนโอเชียนเทร์ริทอรี + อิรัก + อิหร่าน + ไอซ์แลนด์ + อิตาลี + เจอร์ซีย์ + จาเมกา + จอร์แดน + ญี่ปุ่น + เคนยา + คีร์กีซสถาน + กัมพูชา + คิริบาส + คอโมโรส + เซนต์คิตส์และเนวิส + เกาหลีเหนือ + เกาหลีใต้ + คูเวต + หมู่เกาะเคย์แมน + คาซัคสถาน + ลาว + เลบานอน + เซนต์ลูเซีย + ลิกเตนสไตน์ + ศรีลังกา + ไลบีเรีย + เลโซโท + ลิทัวเนีย + ลักเซมเบิร์ก + ลัตเวีย + ลิเบีย + โมร็อกโก + โมนาโก + มอลโดวา + มอนเตเนโกร + เซนต์มาติน + มาดากัสการ์ + หมู่เกาะมาร์แชลล์ + มาซิโดเนีย + มาลี + เมียนม่าร์ (พม่า) + มองโกเลีย + เขตปกครองพิเศษมาเก๊าแห่งสาธารณรัฐประชาชนจีน + มาเก๊า + หมู่เกาะนอร์เทิร์นมาเรียนา + มาร์ตินีก + มอริเตเนีย + มอนต์เซอร์รัต + มอลตา + มอริเชียส + มัลดีฟส์ + มาลาวี + เม็กซิโก + มาเลเซีย + โมซัมบิก + นามิเบีย + นิวแคลิโดเนีย + ไนเจอร์ + เกาะนอร์ฟอล์ก + ไนจีเรีย + นิการากัว + เนเธอร์แลนด์ + นอร์เวย์ + เนปาล + นาอูรู + นีอูเอ + นิวซีแลนด์ + โอมาน + ปานามา + เปรู + เฟรนช์โปลินีเซีย + ปาปัวนิวกินี + ฟิลิปปินส์ + ปากีสถาน + โปแลนด์ + แซงปีแยร์และมีเกอลง + หมู่เกาะพิตแคร์น + เปอร์โตริโก + ดินแดนปาเลสไตน์ + ปาเลสไตน์ + โปรตุเกส + ปาเลา + ปารากวัย + กาตาร์ + เอาต์ไลอิงโอเชียเนีย + เรอูนียง + โรมาเนีย + เซอร์เบีย + รัสเซีย + รวันดา + ซาอุดีอาระเบีย + หมู่เกาะโซโลมอน + เซเชลส์ + ซูดาน + สวีเดน + สิงคโปร์ + เซนต์เฮเลนา + สโลวีเนีย + สฟาลบาร์และยานไมเอน + สโลวะเกีย + เซียร์ราลีโอน + ซานมารีโน + เซเนกัล + โซมาเลีย + ซูรินาเม + ซูดานใต้ + เซาตูเมและปรินซิปี + เอลซัลวาดอร์ + เซนต์มาร์ติน + ซีเรีย + สวาซิแลนด์ + ทริสตัน เดอ คูนา + หมู่เกาะเติกส์และหมู่เกาะเคคอส + ชาด + เฟรนช์เซาเทิร์นเทร์ริทอรีส์ + โตโก + ไทย + ทาจิกิสถาน + โตเกเลา + ติมอร์-เลสเต + ติมอร์ตะวันออก + เติร์กเมนิสถาน + ตูนิเซีย + ตองกา + ตุรกี + ตรินิแดดและโตเบโก + ตูวาลู + ไต้หวัน + แทนซาเนีย + ยูเครน + ยูกันดา + หมู่เกาะรอบนอกของสหรัฐอเมริกา + สหรัฐอเมริกา + สหรัฐฯ + อุรุกวัย + อุซเบกิสถาน + นครวาติกัน + เซนต์วินเซนต์และเกรนาดีนส์ + เวเนซุเอลา + หมู่เกาะบริติชเวอร์จิน + หมู่เกาะยูเอสเวอร์จิน + เวียดนาม + วานูอาตู + วาลลิสและฟุตูนา + ซามัว + โคโซโว + เยเมน + มายอต + แอฟริกาใต้ + แซมเบีย + ซิมบับเว + ภูมิภาคที่ไม่รู้จัก + + + เยอรมันออร์โธกราฟีดั้งเดิม + อักขระเรเซียนมาตราฐาน + เยอรมันออร์โธกราฟีปี 1996 + ปลายยุคกลางฝรั่งเศสถึงปี ค.ศ. 1606 + ตอนต้นยุคใหม่ฝรั่งเศส + วิชาการ + การถอดอักษรเป็นอักษรโรมันตามเกณฑ์ของสมาคมห้องสมุดอเมริกันและห้องสมุดรัฐสภา ฉบับพิมพ์ปี 1997 + ภาษาพื้นเมืองอลูคู + อาร์เมเนียตะวันออก + อาร์เมเนียตะวันตก + ตัวอักษรละตินเตอร์กิกแบบครบวงจร + พระพุทธเจ้า + บิสคายัน + ภาษาพื้นเมืองซานจอร์โจ/บิลา + ตัวอักษรโบโฮริช + บูนทลิ่ง + ตัวอักษรดายนชิซา + อังกฤษสมัยใหม่ตอนต้น + สัทอักษรสากล + สัทอักษร UPA + ฟอนซ์แซมพ์ + การถอดอักษรแบบเฮปเบิร์น + ภาษานอร์วิเจียนสูง + อิติหาสะ + เยาเออร์ + ระบบถอดอักษรแบบยวึดพิง + อักขรวิธีสามัญ + อักขรวิธีมาตรฐาน + ลัวกิกา + ภาษาพื้นเมืองลิโพวาซของเรเซียน + ลูน่า 1918 + ตัวอักษรเมเตวชิซา + โมโนโทนิก + ดิวคา + ภาษาพื้นเมืองนาทิโซเน + ภาษาพื้นเมืองจนีวา/นจีวา + โวลาพึคสมัยใหม่ + ภาษาพื้นเมืองโอเซียคโค/โอโซยาเน + ภาษาพื้นเมืองพามาคา + พีท 1708 + พินอิน + โพลีโทนิก + คอมพิวเตอร์ + พิวเตอร์ + ออร์โธกราฟิปรับปรุง + โวลาพึคดั้งเดิม + เรเซียน + รัมกร์ + ซาโฮ + ภาษาอังกฤษมาตราฐานสก๊อต + สเกาส์ + ภาษาพื้นเมืองสโตวีซซา/โซลบีกา + ซูร์มิราน + ซูร์ซีลฟ์ + ซุตซีลฟ์ + ทาราซเคียวิซาออร์โธกราฟี + อักขรวิธีแบบครบวงจร + อักขรวิธีแบบปรับปรุงครบวงจร + อัลสเตอร์ + เวดิคา + วาเลนเซีย + วัลลาเดอร์ + การถอดอักษรแบบเวด-ไจลส์ + + + ปฏิทิน + ละเว้นการจัดเรียงสัญลักษณ์ + การจัดเรียงเสียงหนักเบาในลำดับถอยหลัง + การเรียงลำดับตัวพิมพ์ใหญ่/ตัวพิมพ์เล็ก + การจัดเรียงตามความสำคัญของตัวพิมพ์อักษร + การจัดเรียงตัวอักษรคะนะ + ลำดับการจัดเรียง + การจัดเรียงแบบที่เป็นปกติ + การจัดเรียงตัวเลข + ความแม่นยำในการจัดเรียง + สกุลเงิน + ตัวเลข + เขตเวลา + ตัวแปรภาษาถิ่น + จัดเรียงเป็นสัญลักษณ์ + ใช้งานส่วนบุคคล + + + ตัวเลขอินเดีย-อารบิก + ตัวเลขอินเดีย-อารบิกตัวเต็ม + ตัวเลขอาร์เมเนีย + ตัวเลขอาร์เมเนียพิมพ์เล็ก + ตัวเลขบาหลี + ตัวเลขบังกลาเทศ + เรียงตามอักษรจีนดั้งเดิม + ตัวเลขพราหมี + ปฏิทินพุทธ + ตัวเลขชากมา + ตัวเลขชาม + ปฏิทินจีน + ปฏิทินคอปติก + ปฏิทินทันกิ + ตัวเลขเทวนาครี + เรียงตามพจนานุกรม + ลำดับการจัดเรียงตาม Unicode เริ่มต้น + กฎการเรียงลำดับตามแบบยุโรป + ตัวเลขเอธิโอเปีย + ปฏิทินเอธิโอเปีย + ปฏิทินปีโลกเอธิโอเปีย + ตัวเลขทางการเงิน + ตัวเลขแบบเต็มขนาด + เรียงตามอักษรจีนประยุกต์ + ตัวเลขจอร์เจีย + ปฏิทินเกรกอเรียน + ตัวเลขกรีก + ตัวเลขกรีกพิมพ์เล็ก + ตัวเลขคุชราต + ตัวเลขกูร์มูคี + ตัวเลขทศนิยมจีน + ตัวเลขจีนตัวย่อ + ตัวเลขทางการเงินแบบตัวย่อของจีน + ตัวเลขจีนตัวเต็ม + ตัวเลขทางการเงินแบบตัวเต็มของจีน + ตัวเลขฮิบรู + ปฏิทินฮิบรู + จัดเรียงทั้งหมด + ปฏิทินแห่งชาติอินเดีย + ปฏิทินอิสลาม + ปฏิทินอิสลามซีวิล + ปฏิทินอิสลาม (ซาอุดีอาระเบีย แบบพระจันทร์เสี้ยว) + ปฏิทินอิสลาม (แบบตาราง สมัยดาราศาสตร์) + ปฏิทินอิสลาม (อุมม์อัลกุรา) + ปฏิทิน ISO-8601 + ปฏิทินญี่ปุ่น + ตัวเลขชวา + ตัวเลขญี่ปุ่น + ตัวเลขทางการเงินของญี่ปุ่น + ตัวเลขคยาห์ + ตัวเลขเขมร + ตัวเลขกันนาดา + ตัวเลขไททัมโฮรา + ตัวเลขไททัมทัม + ตัวเลขลาว + ตัวเลขอารบิค + ตัวเลขเลปชา + ตัวเลขลิมบู + จัดเรียงลำดับตัวพิมพ์เล็กก่อน + ตัวเลขมาลายาลัม + ตัวเลขมองโกเลีย + ตัวเลขเมไตมาเยก + ตัวเลขพม่า + ตัวเลขชานพม่า + ตัวเลขพื้นเมือง + ตัวเลขเอ็นโก + จัดเรียงเสียงหนักเบาตามปกติ + จัดเรียงลำดับตามตัวพิมพ์ปกติ + จัดเรียงตามความสำคัญของตัวพิมพ์ + จัดเรียงตัวอักษรคะนะแยกต่างหาก + จัดเรียงโดยไม่ต้องทำให้เป็นแบบปกติ + จัดเรียงตัวเลขแยก + จัดเรียงสัญลักษณ์ + ตัวเลขโอลจิกิ + ตัวเลขโอริยา + ตัวเลขออสมันยา + ปฏิทินเปอร์เชีย + เรียงตามสมุดโทรศัพท์ + ลำดักการจัดเรียงตามคำอ่าน + เรียงตามการถอดเสียงภาษาจีน + จัดเรียงตัวอักษรฐานเท่านั้น + จัดเรียงตามเสียงหนักเบา/ตัวพิมพ์/ความกว้าง/ตัวอักษรคะนะ + เรียงตามลำดับล่าสุด + ปฏิทินไต้หวัน + ตัวเลขโรมัน + ตัวเลขโรมันพิมพ์เล็ก + ตัวเลขเศารัชธรา + การค้นหาทั่วไป + ค้นหาตามพยัญชนะขึ้นต้นที่เป็นฮันกึล + จัดเรียงเสียงหนักเบา + จัดเรียงสัญลักษณ์ที่ละไว้ + ตัวเลขชาราดา + ตัวเลขโสราสมเป็ง + ลำดับการจัดเรียงแบบมาตรฐาน + เรียงตามการลากเส้น + ตัวเลขซุนดา + ตัวเลขทาครี + ตัวเลขไทลื้อใหม่ + ตัวเลขทมิฬดั้งเดิม + ตัวเลขทมิฬ + ตัวเลขเตลูกู + จัดเรียงเสียงหนักเบา/ตัวพิมพ์/ความกว้าง + ตัวเลขไทย + ตัวเลขทิเบต + เรียงตามแบบดั้งเดิม + ตัวเลขแบบดั้งเดิม + เรียงลำดับตามจำนวนขีด + จัดเรียงตัวพิมพ์ใหญ่ก่อน + ตัวเลขไว + จัดเรียงเสียงหนักเบาในลำดับถอยหลัง + จัดเรียงความสำคัญของตัวพิมพ์ + จัดเรียงตัวอักษรคะนะในแบบอื่น + จัดเรียงยูนิโค้ดแบบที่เป็นปกติ + จัดเรัยงตัวเลขตามลำดับตัวเลข + จัดเรียงตามการสะกดแบบจู้อิน + + + ชื่อมาตรฐานอังกฤษ (BGN) + ตัวเลข + ระดับเสียง + ชื่อภูมิศาสตร์มาตรฐาน UN (UNGEGN) + สำเนียง + ตัวเต็ม + ตัวย่อ + จาโม + พินอิน + เพื่อเผยแพร่ + + + เมตริก + สหราชอาณาจักร + อเมริกัน + + + ภาษา: {0} + สคริปต์: {0} + ภูมิภาค: {0} + + + + [\u0E4E \u0E47 \u0E48 \u0E49 \u0E4A \u0E4B \u0E4C \u0E4D ๆ ก ข ฃ ค ฅ ฆ ง จ ฉ ช ซ ฌ ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท ธ น บ ป ผ ฝ พ ฟ ภ ม ย ร ฤ ล ฦ ว ศ ษ ส ห ฬ อ ฮ ฯ ะ \u0E31 า ำ \u0E34 \u0E35 \u0E36 \u0E37 \u0E38 \u0E39 \u0E3A เ แ โ ใ ไ ๅ] + [\u200B] + [ก ข ฃ ค ฅ ฆ ง จ ฉ ช ซ ฌ ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท ธ น บ ป ผ ฝ พ ฟ ภ ม ย ร ฤ ล ฦ ว ศ ษ ส ห ฬ อ ฮ] + [\- ‐ – — , \: ! . … ' ‘ ’ " “ ” ( ) \[ \] @ * / # ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + พุทธศักราช + + + พ.ศ. + + + + + + EEEEที่ d MMMM G y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/yy + + + + + + d + E d + G y + MMM G y + d MMM G y + E d MMM G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + mm:ss + G y + G y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + H-H + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + H:mm-H:mm + H:mm-H:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a - h a v + h-h a v + + + H-H v + + + M-M + + + d/M - d/M + d/M - d/M + + + E d - E d/M + E d - E d/M + + + LLL-LLL + + + d - d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + y-y + + + M/y - M/y + M/y - M/y + + + d-d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E d - E d/M/y + E d/M/y - E d/M/y + E d/M/y - E d/M/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + MMMM-MMMM y + MMMM y - MMMM y + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + จื่อ + โฉ่ว + อิ๋น + เหม่า + เฉิน + ซื่อ + อู้ + เว่ย + เซิน + โหย่ว + ซู + ฮ่าย + + + + + + + เจี่ยจื่อ + อี๋โฉ่ว + ปิ่งอิ๋น + ติงเหม่า + อู้เฉิน + จี่ซื่อ + เกิงอู้ + ซินเว่ย + เหรินเซิน + กุุ๋่ยโหย่ว + เจ่ียซู + อี๋ฮ่าย + ปิ๋ิ่งจื่อ + ติงโฉ่ว + อู้อิ๋น + จี๋เหม่า + เกิงเฉิน + ซินซื่อ + เหรินอู้ + กุ่ยเว่ย + เจี่ยเซิน + อี๋โหย่ว + ปิ่งซู + ติงฮ่าย + อู้จื่อ + จี๋โฉ่ว + เกิงอิ๋น + ซินเหม่า + เหรินเฉิน + กุ่ยซ่อ + เจ่ียอู้ + อี่เว่ย + ป่ิงเซิน + ติงโหย่ว + อู้ซู + จี่ฮ่าย + เกิงจื่อ + ซินโฉ่ว + เหรินอิ๋น + กุ๋ยเหม่า + เจี่ยเฉิน + อี่ซ่ือ + ป่ิงอู้ + ติงเว่ย + อู้เซิน + จี๋โหย่ว + เกิงซู + ซินฮ่าย + เหรินจ่ือ + กุุ๋่ยโฉ่ว + เจี่ยอิ๋น + อ๋ีเหม่า + ปิ่งเฉิน + ติงซื่อ + อู้อู้ + จ่ีเว่ย + เกิงเซิน + ซินโหย่ว + เหรินซู + กุ่ยฮ่าย + + + + + + + หนู + วัว + เสือ + กระต่าย + มังกร + งู + ม้า + แพะ + ลิง + ไก่ตัวผู้ + สุนัข + หมู + + + + + + + + EEEE, U MMMM d + + + + + U MMMM d + + + + + U MMM d + + + + + y-M-d + + + + + + + + + เทาท์ + บาบา + ฮาเทอร์ + เคียฟ + โทบา + อัมเชอร์ + บารัมฮัท + บาราเมาดา + บาชันส์ + พาโอนา + อีเปป + เมสรา + นาซี + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + เทาท์ + บาบา + ฮาเทอร์ + เคียฟ + โทบา + อัมเชอร์ + บารัมฮัท + บาราเมาดา + บาชันส์ + พาโอนา + อีเปป + เมสรา + นาซี + + + + + เทาท์ + บาบา + ฮาเทอร์ + เคียฟ + โทบา + อัมเชอร์ + บารัมฮัท + บาราเมาดา + บาชันส์ + พาโอนา + อีเปป + เมสรา + นาซี + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + เทาท์ + บาบา + ฮาเทอร์ + เคียฟ + โทบา + อัมเชอร์ + บารัมฮัท + บาราเมาดา + บาชันส์ + พาโอนา + อีเปป + เมสรา + นาซี + + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + + จื่อ + โฉ่ว + อิ๋น + เหม่า + เฉิน + ซื่อ + อู้ + เว่ย + เซิน + โหย่ว + ซู + ฮ่าย + + + + + + + เจี่ยจื่อ + อี๋โฉ่ว + ปิ่งอิ๋น + ติงเหม่า + อู้เฉิน + จี่ซื่อ + เกิงอู้ + ซินเว่ย + เหรินเซิน + กุุ๋่ยโหย่ว + เจ่ียซู + อี๋ฮ่าย + ปิ๋ิ่งจื่อ + ติงโฉ่ว + อู้อิ๋น + จี๋เหม่า + เกิงเฉิน + ซินซื่อ + เหรินอู้ + กุ่ยเว่ย + เจี่ยเซิน + อี๋โหย่ว + ปิ่งซู + ติงฮ่าย + อู้จื่อ + จี๋โฉ่ว + เกิงอิ๋น + ซินเหม่า + เหรินเฉิน + กุ่ยซ่อ + เจ่ียอู้ + อี่เว่ย + ป่ิงเซิน + ติงโหย่ว + อู้ซู + จี่ฮ่าย + เกิงจื่อ + ซินโฉ่ว + เหรินอิ๋น + กุ๋ยเหม่า + เจี่ยเฉิน + อี่ซ่ือ + ป่ิงอู้ + ติงเว่ย + อู้เซิน + จี๋โหย่ว + เกิงซู + ซินฮ่าย + เหรินจ่ือ + กุุ๋่ยโฉ่ว + เจี่ยอิ๋น + อ๋ีเหม่า + ปิ่งเฉิน + ติงซื่อ + อู้อู้ + จ่ีเว่ย + เกิงเซิน + ซินโหย่ว + เหรินซู + กุ่ยฮ่าย + + + + + + + หนู + วัว + เสือ + กระต่าย + มังกร + งู + ม้า + แพะ + ลิง + ไก่ตัวผู้ + สุนัข + หมู + + + + + + + + EEEE, U MMMM d + + + + + U MMMM d + + + + + U MMM d + + + + + y-M-d + + + + + + + + + เมสเคอเรม + เตเกมท + เฮดาร์ + ทาฮ์ซัส + เทอร์ + เยคาทิท + เมกาบิต + เมียเซีย + เจนบอต + เซเน + ฮัมเล + เนแฮซ + พากูเมน + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + เมสเคอเรม + เตเกมท + เฮดาร์ + ทาฮ์ซัส + เทอร์ + เยคาทิท + เมกาบิต + เมียเซีย + เจนบอต + เซเน + ฮัมเล + เนแฮซ + พากูเมน + + + + + เมสเคอเรม + เตเกมท + เฮดาร์ + ทาฮ์ซัส + เทอร์ + เยคาทิท + เมกาบิต + เมียเซีย + เจนบอต + เซเน + ฮัมเล + เนแฮซ + พากูเมน + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + เมสเคอเรม + เตเกมท + เฮดาร์ + ทาฮ์ซัส + เทอร์ + เยคาทิท + เมกาบิต + เมียเซีย + เจนบอต + เซเน + ฮัมเล + เนแฮซ + พากูเมน + + + + + + + + + EEEEที่ d MMMM G y + + + + + d MMMM G y + + + + + d MMM G y + + + + + d/M/y G + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + G y + MMM G y + d MMM G y + E d MMM G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + mm:ss + G y + G y + M/y G + d/M/y GGGGG + E d/M/y GGGGG + MMM G y + d MMM G y + E d MMM G y + QQQ G y + QQQQ G y + + + {0} - {1} + + d-d + + + h a - h a + h-h a + + + H-H + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a - h a v + h-h a v + + + H-H v + + + M-M + + + d/M - d/M + d/M - d/M + + + E d - E d/M + E d/M - E d/M + + + LLL-LLL + + + d - d MMM + d MMM - d MMM + + + E d MMM - E d MMM + E d MMM - E d MMM + + + G y-y + + + M/y - M/y G + M/y - M/y G + + + d-d/M/y G + d/M/y - d/M/y G + d/M/y - d/M/y G + + + E d - E d/M/y G + E d/M/y - E d/M/y G + E d/M/y - E d/M/y G + + + MMM-MMM G y + MMM y - MMM G y + + + d-d MMM G y + d MMM - d MMM G y + d MMM y - d MMM G y + + + E d - E d MMM G y + E d MMM - E d MMM G y + E d MMM y - E d MMM G y + + + MMMM – MMMM G y + MMMM y - MMMM G y + + + + + + + + + ม.ค. + ก.พ. + มี.ค. + เม.ย. + พ.ค. + มิ.ย. + ก.ค. + ส.ค. + ก.ย. + ต.ค. + พ.ย. + ธ.ค. + + + มกราคม + กุมภาพันธ์ + มีนาคม + เมษายน + พฤษภาคม + มิถุนายน + กรกฎาคม + สิงหาคม + กันยายน + ตุลาคม + พฤศจิกายน + ธันวาคม + + + + + ม.ค. + ก.พ. + มี.ค. + เม.ย. + พ.ค. + มิ.ย. + ก.ค. + ส.ค. + ก.ย. + ต.ค. + พ.ย. + ธ.ค. + + + ม.ค. + ก.พ. + มี.ค. + เม.ย. + พ.ค. + มิ.ย. + ก.ค. + ส.ค. + ก.ย. + ต.ค. + พ.ย. + ธ.ค. + + + มกราคม + กุมภาพันธ์ + มีนาคม + เมษายน + พฤษภาคม + มิถุนายน + กรกฎาคม + สิงหาคม + กันยายน + ตุลาคม + พฤศจิกายน + ธันวาคม + + + + + + + อา. + จ. + อ. + พ. + พฤ. + ศ. + ส. + + + อา + + + + พฤ + + + + + อา. + จ. + อ. + พ. + พฤ. + ศ. + ส. + + + วันอาทิตย์ + วันจันทร์ + วันอังคาร + วันพุธ + วันพฤหัสบดี + วันศุกร์ + วันเสาร์ + + + + + อา. + จ. + อ. + พ. + พฤ. + ศ. + ส. + + + อา + + + + พฤ + + + + + อา. + จ. + อ. + พ. + พฤ. + ศ. + ส. + + + วันอาทิตย์ + วันจันทร์ + วันอังคาร + วันพุธ + วันพฤหัสบดี + วันศุกร์ + วันเสาร์ + + + + + + + ไตรมาส 1 + ไตรมาส 2 + ไตรมาส 3 + ไตรมาส 4 + + + 1 + 2 + 3 + 4 + + + ไตรมาส 1 + ไตรมาส 2 + ไตรมาส 3 + ไตรมาส 4 + + + + + ไตรมาส 1 + ไตรมาส 2 + ไตรมาส 3 + ไตรมาส 4 + + + 1 + 2 + 3 + 4 + + + ไตรมาส 1 + ไตรมาส 2 + ไตรมาส 3 + ไตรมาส 4 + + + + + + + ก่อนเที่ยง + หลังเที่ยง + + + + + + ปีก่อนคริสต์ศักราช + ก่อนสามัญศักราช + คริสต์ศักราช + สามัญศักราช + + + ปีก่อน ค.ศ. + ก.ส.ศ. + ค.ศ. + ส.ศ. + + + ก่อน ค.ศ. + ก.ส.ศ. + ค.ศ. + ส.ศ. + + + + + + EEEEที่ d MMMM G y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/yy + + + + + + + H นาฬิกา mm นาที ss วินาที zzzz + + + + + H นาฬิกา mm นาที ss วินาที z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + MMM G y + d MMM G y + E d MMM G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + mm:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d-d + + + h a - h a + h-h a + + + HH–HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + H:mm-H:mm v + H:mm-H:mm v + + + h a - h a v + h-h a v + + + HH–HH v + + + M-M + + + d/M - d/M + d/M - d/M + + + E d - E d/M + E d - E d/M + + + LLL-LLL + + + d - d MMM + d MMM - d MMM + + + E d - E d MMM + E d MMM - E d MMM + + + y-y + + + M/y - M/y + M/y - M/y + + + d-d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E d - E d/M/y + E d/M/y - E d/M/y + E d/M/y - E d/M/y + + + MMM–MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + MMMM–MMMM y + MMMM y - MMMM y + + + + + + + + + ทิชรี + เฮวาน + กีสเลฟ + เตเวต + เชวัต + อาดาร์ I + อาดาร์ + อาดาร์ II + นิสซาน + อิยาร์ + สีวัน + ตามูซ + อัฟ + เอลอุล + + + ทิชรี + เฮวาน + กีสเลฟ + เตเวต + เชวัต + อาดาร์ I + อาดาร์ + อาดาร์ II + นิสซาน + อิยาร์ + สีวัน + ตามูซ + อัฟ + เอลอุล + + + + + ทิชรี + เฮวาน + กีสเลฟ + เตเวต + เชวัต + อาดาร์ I + อาดาร์ + อาดาร์ II + นิสซาน + อิยาร์ + สีวัน + ตามูซ + อัฟ + เอลอุล + + + ทิชรี + เฮวาน + กีสเลฟ + เตเวต + เชวัต + อาดาร์ I + อาดาร์ + อาดาร์ II + นิสซาน + อิยาร์ + สีวัน + ตามูซ + อัฟ + เอลอุล + + + + + + ย.ศ. + + + + + + EEEEที่ d MMMM G y + + + + + d MMMM G y + + + + + d MMM G y + + + + + d/M/y G + + + + + + + + + จิตรา + วิสาขา + เชษฐา + อัษฎา + ศรวณา + พัตรา + อัศวิชา + การติกา + มฤคศิรา + ปุษยา + มาฆะ + ผลคุณี + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + จิตรา + วิสาขา + เชษฐา + อัษฎา + ศรวณา + พัตรา + อัศวิชา + การติกา + มฤคศิรา + ปุษยา + มาฆะ + ผลคุณี + + + + + จิตรา + วิสาขา + เชษฐา + อัษฎา + ศรวณา + พัตรา + อัศวิชา + การติกา + มฤคศิรา + ปุษยา + มาฆะ + ผลคุณี + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + จิตรา + วิสาขา + เชษฐา + อัษฎา + ศรวณา + พัตรา + อัศวิชา + การติกา + มฤคศิรา + ปุษยา + มาฆะ + ผลคุณี + + + + + + ม.ศ. + + + + + + + + มุฮัร. + เศาะ. + รอบี 1 + รอบี 2 + ญุมา 1 + ญุมา 2 + เราะ. + ชะอ์. + เราะมะ. + เชาว. + ซุลกิอฺ. + ซุลหิจ. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + มุฮะร์รอม + ซอฟาร์ + รอบี I + รอบี II + จุมาดา I + จุมาดา II + รอจับ + ชะอะบาน + รอมะดอน + เชาวัล + ดฮุุอัลกิดะห์ + ดฮุอัลฮิจจะห์ + + + + + มุฮัร. + เศาะ. + รอบี 1 + รอบี 2 + ญุมา 1 + ญุมา 2 + เราะ. + ชะอ์. + เราะมะ. + เชาว. + ซุลกิอฺ. + ซุลหิจ. + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + มุฮะร์รอม + ซอฟาร์ + รอบี I + รอบี II + จุมาดา I + จุมาดา II + รอจับ + ชะอะบาน + รอมะดอน + เชาวัล + ดฮุุอัลกิดะห์ + ดฮุอัลฮิจจะห์ + + + + + + ฮิจเราะห์ศักราช + + + ฮ.ศ. + + + + + + EEEEที่ d MMMM G y + + + + + d MMMM G y + + + + + d MMM G y + + + + + d/M/y G + + + + + + d + L + d/M + E, d/M + LLL + d MMM + E d MMM + G y + + + + + + + ทะอิกะ (645-650) + ฮะกุชิ (650-671) + ฮากุโฮ (672-686) + ชุโช (686-701) + ทะอิโฮ (701-704) + เคอุง (704-708) + วะโด (708-715) + เรกิ (715-717) + โยโร (717-724) + จิงกิ (724-729) + เท็มเพียว (729-749) + เท็มเพียว-คัมโป (749-749) + เท็มเพียว-โชโฮ (749-757) + เท็มเพียว-โฮจิ (757-765) + เท็มเพียว-จิงโงะ (765-767) + จิงโงะ-เคอุง (767-770) + โฮกิ (770-780) + เท็นโอ (781-782) + เอ็นเรียะกุ (782-806) + ดะอิโด (806-810) + โคนิง (810-824) + เท็นโช (824-834) + โชวะ (834-848) + คะโจ (848-851) + นินจุ (851-854) + ซะอิโกะ (854-857) + เท็นนัง (857-859) + โจงัง (859-877) + เก็งเก (877-885) + นินนะ (885-889) + คัมเพียว (889-898) + โชตะอิ (898-901) + เอ็งงิ (901-923) + เอ็นโช (923-931) + โชเฮ (931-938) + เท็งเงียว (938-947) + เท็นเรียะกุ (947-957) + เท็นโตะกุ (957-961) + โอวะ (961-964) + โคโฮ (964-968) + อันนะ (968-970) + เท็นโระกุ (970-973) + เท็นเอ็ง (973-976) + โจเง็ง (976-978) + เท็งเง็ง (978-983) + เอกัง (983-985) + คันนะ (985-987) + เอเอ็ง (987-989) + เอโซ (989-990) + โชเรียะกุ (990-995) + โชโตะกุ (995-999) + โชโฮ (999-1004) + คันโก (1004-1012) + โชวะ (1012-1017) + คันนิง (1017-1021) + จิอัง (1021-1024) + มันจุ (1024-1028) + โชเง็ง (1028-1037) + โชเรียะกุ (1037-1040) + โชคีว (1040-1044) + คันโตะกุ (1044-1046) + เอโช (1046-1053) + เท็งงิ (1053-1058) + โคเฮ (1058-1065) + จิเรียะกุ (1065-1069) + เอ็งคีว (1069-1074) + โชโฮ (1074-1077) + โชเรียะกุ (1077-1081) + เอโฮะ (1081-1084) + โอโตะกุ (1084-1087) + คันจิ (1087-1094) + คะโฮะ (1094-1096) + เอโช (1096-1097) + โชโตะกุ (1097-1099) + โควะ (1099-1104) + โชจิ (1104-1106) + คะโช (1106-1108) + เท็นนิง (1108-1110) + เท็นเอ (1110-1113) + เอกีว (1113-1118) + เก็นเอ (1118-1120) + โฮะอัง (1120-1124) + เท็นจิ (1124-1126) + ดะอิจิ (1126-1131) + เท็นโช (1131-1132) + โชโช (1132-1135) + โฮะเอ็ง (1135-1141) + เอจิ (1141-1142) + โคจิ (1142-1144) + เท็นโย (1144-1145) + คีวอัง (1145-1151) + นิมเป (1151-1154) + คีวจุ (1154-1156) + โฮะเง็ง (1156-1159) + เฮจิ (1159-1160) + เอเรียะกุ (1160-1161) + โอโฮ (1161-1163) + โชกัง (1163-1165) + เอมัง (1165-1166) + นินอัง (1166-1169) + คะโอ (1169-1171) + โชอัง (1171-1175) + อังเง็ง (1175-1177) + จิโช (1177-1181) + โยวะ (1181-1182) + จุเอ (1182-1184) + เก็นเรียะกุ (1184-1185) + บุนจิ (1185-1190) + เค็งกีว (1190-1199) + โชจิ (1199-1201) + เค็นนิง (1201-1204) + เก็งกีว (1204-1206) + เค็นเอ (1206-1207) + โชเก็ง (1207-1211) + เค็นเรียะกุ (1211-1213) + เค็มโป (1213-1219) + โชกีว (1219-1222) + โจโอ (1222-1224) + เก็นนิง (1224-1225) + คะโระกุ (1225-1227) + อันเต (1227-1229) + คังกิ (1229-1232) + โจเอ (1232-1233) + เท็มปุกุ (1233-1234) + บุนเรียะกุ (1234-1235) + คะเต (1235-1238) + เรียะกุนิง (1238-1239) + เอ็นโอ (1239-1240) + นินจิ (1240-1243) + คังเง็ง (1243-1247) + โฮจิ (1247-1249) + เค็นโช (1249-1256) + โคเง็ง (1256-1257) + โชกะ (1257-1259) + โชเง็ง (1259-1260) + บุนโอ (1260-1261) + โคโช (1261-1264) + บุนเอ (1264-1275) + เค็นจิ (1275-1278) + โคอัง (1278-1288) + โชโอ (1288-1293) + เอนิง (1293-1299) + โชอัง (1299-1302) + เค็งเง็ง (1302-1303) + คะเง็ง (1303-1306) + โทะกุจิ (1306-1308) + เอ็งเก (1308-1311) + โอโช (1311-1312) + โชวะ (1312-1317) + บุมโป (1317-1319) + เก็นโอ (1319-1321) + เก็งเกียว (1321-1324) + โชชู (1324-1326) + คะเระกิ (1326-1329) + เก็นโตะกุ (1329-1331) + เก็งโก (1331-1334) + เค็มมุ (1334-1336) + เอ็งเง็ง (1336-1340) + โคโกะกุ (1340-1346) + โชเฮ (1346-1370) + เค็นโตะกุ (1370-1372) + บุนชู (1372-1375) + เท็นจุ (1375-1379) + โคเรียะกุ (1379-1381) + โควะ (1381-1384) + เก็นชู (1384-1392) + เมโตะกุ (1384-1387) + คะเค (1387-1389) + โคโอ (1389-1390) + เมโตะกุ (1390-1394) + โอเอ (1394-1428) + โชโช (1428-1429) + เอเกียว (1429-1441) + คะกิสึ (1441-1444) + บุนอัง (1444-1449) + โฮโตะกุ (1449-1452) + เคียวโตะกุ (1452-1455) + โคโช (1455-1457) + โชโระกุ (1457-1460) + คันโช (1460-1466) + บุนโช (1466-1467) + โอนิง (1467-1469) + บุมเม (1469-1487) + โชเกียว (1487-1489) + เอ็นโตะกุ (1489-1492) + เมโอ (1492-1501) + บุงกิ (1501-1504) + เอโช (1504-1521) + ทะอิเอ (1521-1528) + เคียวโระกุ (1528-1532) + เท็มมน (1532-1555) + โคจิ (1555-1558) + เอโระกุ (1558-1570) + เก็งกิ (1570-1573) + เท็นโช (1573-1592) + บุนโระกุ (1592-1596) + เคโช (1596-1615) + เก็งวะ (1615-1624) + คันเอ (1624-1644) + โชโฮ (1644-1648) + เคอัง (1648-1652) + โชโอ (1652-1655) + เมเรียะกุ (1655-1658) + มันจิ (1658-1661) + คัมบุง (1661-1673) + เอ็มโป (1673-1681) + เท็นวะ (1681-1684) + โจเกียว (1684-1688) + เก็นโระกุ (1688-1704) + โฮเอ (1704-1711) + โชโตะกุ (1711-1716) + เคียวโฮ (1716-1736) + เก็มบุง (1736-1741) + คัมโป (1741-1744) + เอ็งเกียว (1744-1748) + คันเอ็ง (1748-1751) + โฮเรียะกุ (1751-1764) + เมวะ (1764-1772) + อันเอ (1772-1781) + เท็มเม (1781-1789) + คันเซ (1789-1801) + เคียววะ (1801-1804) + บุงกะ (1804-1818) + บุนเซ (1818-1830) + เท็มโป (1830-1844) + โคกะ (1844-1848) + คะเอ (1848-1854) + อันเซ (1854-1860) + มันเอ็ง (1860-1861) + บุงกีว (1861-1864) + เก็นจิ (1864-1865) + เคโอ (1865-1868) + เมจิ + ทะอิโช + โชวะ + เฮเซ + + + + + + EEEEที่ d MMMM ปีGที่ y + + + + + d MMMM ปีG y + + + + + d MMM G y + + + + + d/M/yy G + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E d + G y + MMM G y + d MMM G y + E d MMM G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E d MMM + mm:ss + G y + G y + M/GGGGG y + d/M/GGGGG y + E d/M/GGGGG y + MMM G y + d MMM G y + E d MMM G y + QQQ G y + QQQQ G y + + + + + + + + ฟาร์วาร์ดิน + ออร์ดิเบเฮชต์ + คอร์แดด + เตอร์ + มอร์แดด + ชาหริวาร์ + เมฮร์ + อะบาน + อะซาร์ + เดย์ + บาฮ์มาน + เอสฟานด์ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ฟาร์วาร์ดิน + ออร์ดิเบเฮชต์ + คอร์แดด + เตอร์ + มอร์แดด + ชาหริวาร์ + เมฮร์ + อะบาน + อะซาร์ + เดย์ + บาฮ์มาน + เอสฟานด์ + + + + + ฟาร์วาร์ดิน + ออร์ดิเบเฮชต์ + คอร์แดด + เตอร์ + มอร์แดด + ชาหริวาร์ + เมฮร์ + อะบาน + อะซาร์ + เดย์ + บาฮ์มาน + เอสฟานด์ + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + ฟาร์วาร์ดิน + ออร์ดิเบเฮชต์ + คอร์แดด + เตอร์ + มอร์แดด + ชาหริวาร์ + เมฮร์ + อะบาน + อะซาร์ + เดย์ + บาฮ์มาน + เอสฟานด์ + + + + + + ปีเปอร์เซีย + + + + + + + ปีก่อนไต้หวัน + ไต้หวัน + + + + + + EEEEที่ d MMMM ปีGที่ y + + + + + d MMMM ปีG y + + + + + d MMM G y + + + + + d/M/yy + + + + + + d + E d + ปีGที่ y + MMM G y + d MMM G y + E d MMM G y + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E, d/M + LLL + d MMM + E d MMM + mm:ss + ปีGที่ y + ปีGที่ y + M/GGGGG y + d/M/GGGGG y + E d/M/GGGGG y + MMM G y + d MMM G y + E d MMM G y + QQQ G y + + + + + + + สมัย + + + ปี + ปีที่แล้ว + ปีนี้ + ปีหน้า + + ในอีก {0} ปี + + + {0} ปีที่แล้ว + + + + เดือน + เดือนที่แล้ว + เดือนนี้ + เดือนหน้า + + ในอีก {0} เดือน + + + {0} เดือนที่ผ่านมา + + + + สัปดาห์ + สัปดาห์ที่แล้ว + สัปดาห์นี้ + สัปดาห์หน้า + + ในอีก {0} สัปดาห์ + + + {0} สัปดาห์ที่ผ่านมา + + + + วัน + เมื่อวานซืน + เมื่อวาน + วันนี้ + พรุ่งนี้ + มะรืนนี้ + + ในอีก {0} วัน + + + {0} วันที่ผ่านมา + + + + วันในสัปดาห์ + + + อาทิตย์ที่แล้ว + อาทิตย์นี้ + อาทิตย์หน้า + + + จันทร์ที่แล้ว + จันทร์นี้ + จันทร์หน้า + + + อังคารที่แล้ว + อังคารนี้ + อังคารหน้า + + + พุธที่แล้ว + พุธนี้ + พุธหน้า + + + พฤหัสที่แล้ว + พฤหัสนี้ + พฤหัสหน้า + + + ศุกร์ที่แล้ว + ศุกร์นี้ + ศุกร์หน้า + + + เสาร์ที่แล้ว + เสาร์นี้ + เสาร์หน้า + + + ช่วงวัน + + + ชั่วโมง + + ในอีก {0} ชั่วโมง + + + {0} ชั่วโมงที่ผ่านมา + + + + นาที + + ในอีก {0} นาที + + + {0} นาทีที่ผ่านมา + + + + วินาที + ขณะนี้ + + ในอีก {0} วินาที + + + {0} วินาทีที่ผ่านมา + + + + เขตเวลา + + + + +HH:mm;-HH:mm + GMT{0} + GMT + เวลา{0} + เวลาออมแสง{0} + เวลามาตรฐาน{0} + {1} ({0}) + + เมืองที่ไม่รู้จัก + + + อันดอร์รา + + + ดูไบ + + + คาบูล + + + แอนติกา + + + แองกิลลา + + + ติรานา + + + เยเรวาน + + + ลูอันดา + + + โรเทรา + + + พาล์เมอร์ + + + เซียวา + + + มาว์ซัน + + + ดาวีส์ + + + วอสต็อค + + + เคซีย์ + + + ดูมองต์ดูร์วิลล์ + + + แมคมัวโด + + + ริโอกาลเลกอส + + + เมนดูซา + + + ซานฮวน + + + อูชูเอีย + + + ลาริโอจา + + + ซันลูอิส + + + กาตามาร์กา + + + ซัลตา + + + จูจิว + + + ทูคูแมน + + + คอร์โดบา + + + บัวโนสไอเรส + + + ปาโก ปาโก + + + เวียนนา + + + เพิิร์ท + + + ยูคลา + + + ดาร์วิน + + + แอดิเลด + + + โบรกเคนฮิลล์ + + + คูร์รี + + + เมลเบิร์น + + + โฮบาร์ต + + + ลินดีแมน + + + ซิดนีย์ + + + บริสเบน + + + แมคควอรี + + + ลอร์ดโฮวี + + + อารูบา + + + มารีฮามน์ + + + บากู + + + ซาราเยโว + + + บาร์เบโดส + + + ดากา + + + บรัสเซลส์ + + + วากาดูกู + + + โซเฟีย + + + บาห์เรน + + + บูจุมบูรา + + + ปอร์โต-โนโว + + + เซนต์บาร์เธเลมี + + + เบอร์มิวดา + + + บรูไน + + + ลาปาซ + + + คราเลนดิจค์ + + + เอรูเนเป + + + รีโอบรังโก + + + ปอร์ตูเวลโย + + + บัววีชตา + + + มาเนาส์ + + + กุยาบา + + + ซันตาเรม + + + กัมปูกรันดี + + + เบเลง + + + อารากัวนา + + + เซาเปาลู + + + บาเยีย + + + ฟอร์ตาเลซา + + + มาเซโอ + + + เรซีเฟ + + + โนรอนฮา + + + แนสซอ + + + ทิมพู + + + กาโบโรเน + + + มินสก์ + + + เบลีซ + + + ดอว์สัน + + + ไวต์ฮอร์ส + + + อินูวิก + + + แวนคูเวอร์ + + + ดอว์สัน ครีก + + + เครสตัน + + + เยลโลว์ไนฟ์ + + + เอดมันตัน + + + สวิฟต์เคอร์เรนต์ + + + อ่าวแคมบริดจ์ + + + ริไจนา + + + วินนิเพก + + + เรโซลูท + + + เรนนี่ริเวอร์ + + + แรงกินอินเล็ต + + + คอรัลฮาร์เบอร์ + + + ทันเดอร์เบย์ + + + นิปิกอน + + + โทรอนโต + + + อีกวาลิต + + + พางนีทัง + + + มองตัน + + + แฮลิแฟกซ์ + + + กูสเบย์ + + + แกลซเบย์ + + + บลังค์-ซาบลอน + + + เซนต์จอนส์ + + + โคโคส + + + กินชาซา + + + ลูบัมบาชิ + + + บังกี + + + บราซซาวิล + + + ซูริค + + + อาบีจาน + + + ราโรตองกา + + + อีสเตอร์ + + + ซันติอาโก + + + ดูอาลา + + + กัชการ์ + + + อุรุมชี + + + ฉงชิ่ง + + + เซี่ยงไฮ้ + + + ฮาร์บิน + + + โบโกตา + + + คอสตาริกา + + + ฮาวานา + + + เคปเวิร์ด + + + คูราเซา + + + คริสต์มาส + + + นิโคเซีย + + + ปราก + + + บุสซิงเง็น + + + เบอร์ลิน + + + จิบูตี + + + โคเปนเฮเกน + + + โดมินิกา + + + ซานโต โดมิงโก + + + แอลเจียร์ + + + กาลาปาโกส + + + กัวยากิล + + + ทาลลินน์ + + + ไคโร + + + เอลไอย์อุง + + + แอสมารา + + + คะเนรี + + + เซวตา + + + มาดริด + + + แอดดิสอาบาบา + + + เฮลซิงกิ + + + ฟิจิ + + + สแตนลีย์ + + + ทรัก + + + โปนาเป + + + คอสแร + + + แฟโร + + + ปารีส + + + ลีเบรอวิล + + + + เวลาฤดูร้อนอังกฤษ + + ลอนดอน + + + เกรนาดา + + + ทบิลิซิ + + + กาแยน + + + เกิร์นซีย์ + + + อักกรา + + + ยิบรอลตาร์ + + + ทูเล + + + กอดแธบ + + + สกอเรสไบซันด์ + + + ดานมาร์กสฮาวน์ + + + บันจูล + + + โกนากรี + + + กวาเดอลูป + + + มาลาโบ + + + เอเธนส์ + + + เซาท์ จอร์เจีย + + + กัวเตมาลา + + + กวม + + + บิสเซา + + + กายอานา + + + ฮ่องกง + + + เตกูซิกัลปา + + + ซาเกร็บ + + + ปอร์โตแปรงซ์ + + + บูดาเปส + + + จาการ์ตา + + + พอนเทียนัก + + + มากัสซาร์ + + + จายาปุระ + + + + เวลาฤดูร้อนไอร์แลนด์ + + ดับบลิน + + + เยรูซาเลม + + + เกาะแมน + + + โกลกาตา + + + ชากัส + + + แบกแดด + + + เตหะราน + + + เรคยาวิก + + + โรม + + + เจอร์ซีย์ + + + จาเมกา + + + อัมมาน + + + โตเกียว + + + ไนโรเบีย + + + บิชเคก + + + พนมเปญ + + + เอนเดอร์เบอร์รี + + + คิริทิมาตี + + + ตาระวา + + + โคโมโร + + + เซนต์คิตส์ + + + เปียงยาง + + + โซล + + + คูเวต + + + เคย์แมน + + + อัคตาอู + + + ออรัล + + + อัคโทบี + + + ไคซีลอร์ดา + + + อัลมาตี + + + เวียงจันทน์ + + + เบรุต + + + เซนต์ลูเซีย + + + วาดุซ + + + โคลัมโบ + + + มันโรเวีย + + + มาเซรู + + + วิลนีอุส + + + ลักเซมเบิร์ก + + + ริกา + + + ตรีโปลี + + + คาสซาบลางก้า + + + โมนาโก + + + คีชีเนา + + + พอดกอรีตซา + + + มาริโกต์ + + + อันตานานาริโว + + + ควาจาเลน + + + มาจูโร + + + สโกเปีย + + + บามาโก + + + ย่างกุ้ง + + + ฮอฟด์ + + + อูลานบาตอร์ + + + ชอยบาลซาน + + + มาเก๊า + + + ไซปัน + + + มาร์ตินีก + + + นูแอกชอต + + + มอนเซอร์รัต + + + มอลตา + + + มอริเชียส + + + มัลดีฟส์ + + + แบลนไทร์ + + + ทิฮัวนา + + + ซานตาอิซาเบล + + + เอร์โมซีโย + + + มาซาทลาน + + + ชีวาวา + + + บาเอียบันเดรัส + + + โอจินากา + + + มอนเตร์เรย์ + + + เม็กซิโกซิตี + + + มาตาโมรอส + + + เมรีดา + + + แคนคุน + + + กัวลาลัมเปอร์ + + + กูชิง + + + มาปูโต + + + วินด์ฮุก + + + นูเมอา + + + นีอาเมย์ + + + นอร์ฟอล์ก + + + ลากอส + + + มานากัว + + + อัมสเตอดัม + + + ออสโล + + + กาตมันดุ + + + นาอูรู + + + นีอูเอ + + + แชแทม + + + โอคแลนด์ + + + มัสกัต + + + ปานามา + + + ลิมา + + + ทาฮิติ + + + มาร์เควซัส + + + แกมเบียร์ + + + พอร์ตมอร์สบี + + + มะนิลา + + + การาจี + + + วอร์ซอ + + + มีเกอลง + + + พิตแคร์น + + + เปอโตริโก + + + กาซา + + + เฮบรอน + + + อาซอเรส + + + มาเดรา + + + ลิสบอน + + + ปาเลา + + + อะซุนซิออง + + + กาตาร์ + + + เรอูนียง + + + บูคาเรส + + + เบลเกรด + + + คาลินิงกราด + + + มอสโก + + + วอลโกกราด + + + ซามารา + + + ยีคาเตอรินเบิร์ก + + + โอมสก์ + + + โนโวซิบิร์สก์ + + + โนโวคุซเนตสค์ + + + ครัสโนยาร์สก์ + + + อีร์คุตสค์ + + + ยาคุตสค์ + + + วลาดิโวสต็อก + + + ฮันดืยกา + + + ซาคาลิน + + + อุสต์เนรา + + + มากาดาน + + + คามชัตกา + + + อานาดีร์ + + + คิกาลี + + + ริยาร์ด + + + กัวดัลคานัล + + + มาเอ + + + คาร์ทูม + + + สตอกโฮล์ม + + + สิงคโปร์ + + + เซนต์เฮเลนา + + + ลูบลิยานา + + + ลองเยียร์เบียน + + + บราติสลาวา + + + ฟรีทาวน์ + + + ซานมารีโน + + + ดาการ์ + + + โมกาดิชู + + + ปารามาริโบ + + + จูบา + + + เซาตูเม + + + เอลซัลวาดอร์ + + + โลเวอร์พรินซ์ ควอเตอร์ + + + ดามัสกัส + + + อัมบาบาเน + + + แกรนด์เติร์ก + + + เอ็นจาเมนา + + + แกร์เกอลอง + + + โลเม + + + กรุงเทพ + + + ดูชานเบ + + + ฟาเคาโฟ + + + ดิลี + + + อาชกาบัต + + + ตูนิส + + + ตองกาตาปู + + + อิสตันบูล + + + พอร์ทออฟสเปน + + + ฟูนะฟูตี + + + ไทเป + + + ดาร์เอสซาลาม + + + อัซโกร็อด + + + เคียฟ + + + ซิมเฟอโรโปล + + + ซาโปโรซี + + + คัมพาลา + + + มิดเวย์ + + + จอห์นสตัน + + + เวก + + + เอดัก + + + นอม + + + โฮโนลูลู + + + แองเคอเรจ + + + ยากูทัต + + + ซิตกา + + + จูโน + + + เมทลากาตละ + + + ลอสแองเจลิส + + + บอยซี + + + ฟินิกซ์ + + + เดนเวอร์ + + + โบลาห์, นอร์ทดาโคตา + + + นิวเซเลม, นอร์ทดาโคตา + + + เซนเตอร์, นอร์ทดาโคตา + + + ชิคาโก + + + เมโนมินี + + + วินเซนเนส, อินดีแอนา + + + ปีเตอร์สเบิร์ก, อินดีแอนา + + + เทลล์ซิตี, อินดีแอนา + + + นอกซ์, อินดีแอนา + + + วินาแมค, อินดีแอนา + + + มาเรงโก, อินดีแอนา + + + อินเดียแนโพลิส + + + ลูส์วิลล์ + + + วีเวย์, อินดีแอนา + + + มอนติเซลโล, เคนตักกี + + + ดีทรอยต์ + + + นิวยอร์ก + + + มอนเตวิเดโอ + + + ซามาร์กานด์ + + + ทาชเคนต์ + + + วาติกัน + + + เซนต์วินเซนต์ + + + คาราคัส + + + ตอร์โตลา + + + เซนต์โธมัส + + + นครโฮจิมินห์ + + + เอฟาเต + + + วาลลิส + + + อาปีอา + + + เอเดน + + + มาโยเต + + + โจฮันเนสเบอร์ก + + + ลูซากา + + + ฮาราเร + + + + เวลาอาเกร + เวลามาตรฐานอาเกร + เวลาฤดูร้อนอาเกร + + + + + เวลาอัฟกานิสถาน + + + + + เวลาแอฟริกากลาง + + + + + เวลาแอฟริกาตะวันออก + + + + + เวลาแอฟริกาใต้ + + + + + เวลาแอฟริกาตะวันตก + เวลามาตรฐานแอฟริกาตะวันตก + เวลาฤดูร้อนแอฟริกาตะวันตก + + + + + เวลาอะแลสกา + เวลามาตรฐานอะแลสกา + เวลาออมแสงของอะแลสกา + + + + + เวลาอัลมาตี + เวลามาตรฐานอัลมาตี + เวลาฤดูร้อนอัลมาตี + + + + + เวลาอะเมซอน + เวลามาตรฐานอะเมซอน + เวลาฤดูร้อนอะเมซอน + + + + + เวลาตอนกลาง + เวลามาตรฐานตอนกลาง + เวลาออมแสงทางตอนกลาง + + + + + เวลาตะวันออก + เวลามาตรฐานตะวันออก + เวลาออมแสงทางตะวันออก + + + + + เวลาแถบภูเขา + เวลามาตรฐานแถบภูเขา + เวลาออมแสงแถบภูเขา + + + + + เวลาแปซิฟิก + เวลามาตรฐานแปซิฟิก + เวลาออมแสงของแปซิฟิก + + + + + เวลาอะนาดีร์ + เวลามาตรฐานอะนาดีร์ + เวลาฤดูร้อนอะนาดีร์ + + + + + เวลาอัคตาอู + เวลามาตรฐานอัคตาอู + เวลาฤดูร้อนอัคตาอู + + + + + เวลาอัคโทเบ + เวลามาตรฐานอัคโทเบ + เวลาฤดูร้อนอัคโทเบ + + + + + เวลาอาหรับ + เวลามาตรฐานอาหรับ + เวลาออมแสงอาหรับ + + + + + เวลาอาร์เจนตินา + เวลามาตรฐานอาร์เจนตินา + เวลาฤดูร้อนอาร์เจนตินา + + + + + เวลาตะวันตกของอาร์เจนตินา + เวลามาตรฐานทางตะวันตกของอาร์เจนตินา + เวลาฤดูร้อนทางตะวันตกของอาร์เจนตินา + + + + + เวลาอาร์เมเนีย + เวลามาตรฐานอาร์เมเนีย + เวลาฤดูร้อนอาร์เมเนีย + + + + + เวลาแอตแลนติก + เวลามาตรฐานแอตแลนติก + เวลาออมแสงของแอตแลนติก + + + + + เวลาออสเตรเลียกลาง + เวลามาตรฐานทางตอนกลางของออสเตรเลีย + เวลาออมแสงทางตอนกลางของออสเตรเลีย + + + + + เวลาทางตะวันตกตอนกลางของออสเตรเลีย + เวลามาตรฐานทางตะวันตกตอนกลางของออสเตรเลีย + เวลาออมแสงทางตะวันตกตอนกลางของออสเตรเลีย + + + + + เวลาออสเตรเลียตะวันออก + เวลามาตรฐานทางตะวันออกของออสเตรเลีย + เวลาออมแสงทางตะวันออกของออสเตรเลีย + + + + + เวลาออสเตรเลียตะวันตก + เวลามาตรฐานทางตะวันตกของออสเตรเลีย + เวลาออมแสงทางตะวันตกของออสเตรเลีย + + + + + เวลาอาเซอร์ไบจาน + เวลามาตรฐานอาเซอร์ไบจาน + เวลาฤดูร้อนอาเซอร์ไบจาน + + + + + เวลาอะโซร์ส + เวลามาตรฐานอะโซร์ส + เวลาฤดูร้อนอะโซร์ส + + + + + เวลาบังกลาเทศ + เวลามาตรฐานบังกลาเทศ + เวลาฤดูร้อนบังกลาเทศ + + + + + เวลาภูฏาน + + + + + เวลาโบลิเวีย + + + + + เวลาบราซิเลีย + เวลามาตรฐานบราซิเลีย + เวลาฤดูร้อนบราซิเลีย + + + + + เวลาบรูไนดารุสซาลาม + + + + + เวลาเคปเวิร์ด + เวลามาตรฐานเคปเวิร์ด + เวลาฤดูร้อนเคปเวิร์ด + + + + + เวลาเคซีย์ + + + + + เวลาชามอร์โร + + + + + เวลาแชทัม + เวลามาตรฐานแชทัม + เวลาออมแสงแชทัม + + + + + เวลาชิลี + เวลามาตรฐานชิลี + เวลาฤดูร้อนชิลี + + + + + เวลาจีน + เวลามาตรฐานจีน + เวลาออมแสงจีน + + + + + เวลาชอยปาลชาน + เวลามาตรฐานชอยปาลชาน + เวลาฤดูร้อนชอยปาลชาน + + + + + เวลาเกาะคริสต์มาส + + + + + เวลาหมู่เกาะโคโคส + + + + + เวลาโคลอมเบีย + เวลามาตรฐานโคลอมเบีย + เวลาฤดูร้อนโคลอมเบีย + + + + + เวลาหมู่เกาะคุก + เวลามาตรฐานหมู่เกาะคุก + เวลาครึ่งฤดูร้อนหมู่เกาะคุก + + + + + เวลาคิวบา + เวลามาตรฐานคิวบา + เวลาออมแสงของคิวบา + + + + + เวลาเดวิส + + + + + เวลาดูมองต์ดูร์วิลล์ + + + + + เวลาติมอร์ตะวันออก + + + + + เวลาเกาะอีสเตอร์ + เวลามาตรฐานเกาะอีสเตอร์ + เวลาฤดูร้อนเกาะอีสเตอร์ + + + + + เวลาเอกวาดอร์ + + + + + เวลายุโรปกลาง + เวลามาตรฐานยุโรปกลาง + เวลาฤดูร้อนยุโรปกลาง + + + + + เวลายุโรปตะวันออก + เวลามาตรฐานยุโรปตะวันออก + เวลาฤดูร้อนยุโรปตะวันออก + + + + + เวลายุโรปตะวันตก + เวลามาตรฐานยุโรปตะวันตก + เวลาฤดูร้อนยุโรปตะวันตก + + + + + เวลาหมู่เกาะฟอล์กแลนด์ + เวลามาตรฐานหมู่เกาะฟอล์กแลนด์ + เวลาฤดูร้อนหมู่เกาะฟอล์กแลนด์ + + + + + เวลาฟิจิ + เวลามาตรฐานฟิจิ + เวลาฤดูร้อนฟิจิ + + + + + เวลาเฟรนช์เกียนา + + + + + เวลาเฟรนช์เซาเทิร์นและแอนตาร์กติก + + + + + เวลากาลาปาโกส + + + + + เวลาแกมเบียร์ + + + + + เวลาจอร์เจีย + เวลามาตรฐานจอร์เจีย + เวลาฤดูร้อนจอร์เจีย + + + + + เวลาหมู่เกาะกิลเบิร์ต + + + + + เวลามาตรฐานกรีนิช + + + + + เวลากรีนแลนด์ตะวันออก + เวลามาตรฐานกรีนแลนด์ตะวันออก + เวลาฤดูร้อนกรีนแลนด์ตะวันออก + + + + + เวลากรีนแลนด์ตะวันตก + เวลามาตรฐานกรีนแลนด์ตะวันตก + เวลาฤดูร้อนกรีนแลนด์ตะวันตก + + + + + เวลากวม + + + + + เวลากัลฟ์ + + + + + เวลากายอานา + + + + + เวลาฮาวาย-อะลูเชียน + เวลามาตรฐานฮาวาย-อะลูเชียน + เวลาออมแสงฮาวาย-อะลูเชียน + + + + + เวลาฮ่องกง + เวลามาตรฐานฮ่องกง + เวลาฤดูร้อนฮ่องกง + + + + + เวลาฮอฟด์ + เวลามาตรฐานฮอฟด์ + เวลาฤดูร้อนฮอฟด์ + + + + + เวลาอินเดีย + + + + + เวลามหาสมุทรอินเดีย + + + + + เวลาอินโดจีน + + + + + เวลาอินโดนีเซียตอนกลาง + + + + + เวลาอินโดนีเซียฝั่งตะวันออก + + + + + เวลาอินโดนีเซียฝั่งตะวันตก + + + + + เวลาอิหร่าน + เวลามาตรฐานอิหร่าน + เวลาออมแสงอิหร่าน + + + + + เวลาอีร์คุตสค์ + เวลามาตรฐานอีร์คุตสค์ + เวลาฤดูร้อนอีร์คุตสค์ + + + + + เวลาอิสราเอล + เวลามาตรฐานอิสราเอล + เวลาออมแสงอิสราเอล + + + + + เวลาญี่ปุ่น + เวลามาตรฐานญี่ปุ่น + เวลาออมแสงญี่ปุ่น + + + + + เวลาคัมชัตคา + เวลาเปโตรปัฟลอฟสค์-คัมชัตสกี + เวลาฤดูร้อนเปโตรปัฟลอฟสค์-คัมชัตสกี + + + + + เวลาคาซัคสถานตะวันออก + + + + + เวลาคาซัคสถานตะวันตก + + + + + เวลาเกาหลี + เวลามาตรฐานเกาหลี + เวลาออมแสงเกาหลี + + + + + เวลาคอสไร + + + + + เวลาครัสโนยาสค์ + เวลามาตรฐานครัสโนยาสค์ + เวลาฤดูร้อนครัสโนยาสค์ + + + + + เวลาคีร์กีซสถาน + + + + + เวลาลังกา + + + + + เวลาหมู่เกาะไลน์ + + + + + เวลาลอร์ดโฮว + เวลามาตรฐานลอร์ดโฮว์ + เวลาออมแสงของลอร์ดโฮว์ + + + + + เวลามาเก๊า + เวลามาตรฐานมาเก๊า + เวลาฤดูร้อนมาเก๊า + + + + + เวลาเกาะแมกควอรี + + + + + เวลามากาดาน + เวลามาตรฐานมากาดาน + เวลาฤดูร้อนมากาดาน + + + + + เวลามาเลเซีย + + + + + เวลามัลดีฟส์ + + + + + เวลามาร์เคซัส + + + + + เวลาหมู่เกาะมาร์แชลล์ + + + + + เวลามอริเชียส + เวลามาตรฐานมอริเชียส + เวลาฤดูร้อนของมอริเชียส + + + + + เวลามอว์สัน + + + + + เวลาอูลานบาตอร์ + เวลามาตรฐานอูลานบาตอร์ + เวลาฤดูร้อนอูลานบาตอร์ + + + + + เวลามอสโก + เวลามาตรฐานมอสโก + เวลาฤดูร้อนมอสโก + + + + + เวลาพม่า + + + + + เวลานาอูรู + + + + + เวลาเนปาล + + + + + เวลานิวแคลิโดเนีย + เวลามาตรฐานนิวแคลิโดเนีย + เวลาฤดูร้อนนิวแคลิโดเนีย + + + + + เวลานิวซีแลนด์ + เวลามาตรฐานนิวซีแลนด์ + เวลาออมแสงนิวซีแลนด์ + + + + + เวลานิวฟันด์แลนด์ + เวลามาตรฐานนิวฟันด์แลนด์ + เวลาออมแสงนิวฟันด์แลนด์ + + + + + เวลานีอูเอ + + + + + เวลาเกาะนอร์ฟอล์ก + + + + + เวลาหมู่เกาะเฟอร์นันโด + เวลามาตรฐานหมู่เกาะเฟอร์นันโด + เวลาฤดูร้อนของหมู่เกาะเฟอร์นันโด + + + + + เวลาหมู่เกาะมาเรียนาเหนือ + + + + + เวลาโนโวซีบีสค์ + เวลามาตรฐานโนโวซีบีสค์ + เวลาฤดูร้อนโนโวซีบีสค์ + + + + + เวลาออมสค์ + เวลามาตรฐานออมสค์ + เวลาฤดูร้อนออมสค์ + + + + + เวลาปากีสถาน + เวลามาตรฐานปากีสถาน + เวลาฤดูร้อนปากีสถาน + + + + + เวลาปาเลา + + + + + เวลาปาปัวนิวกินี + + + + + เวลาปารากวัย + เวลามาตรฐานปารากวัย + เวลาฤดูร้อนปารากวัย + + + + + เวลาเปรู + เวลามาตรฐานเปรู + เวลาฤดูร้อนเปรู + + + + + เวลาฟิลิปปินส์ + เวลามาตรฐานฟิลิปปินส์ + เวลาฤดูร้อนฟิลิปปินส์ + + + + + เวลาหมู่เกาะฟินิกซ์ + + + + + เวลาแซงปีแยร์และมีเกอลง + เวลามาตรฐานแซงปีแยร์และมีเกอลง + เวลาออมแสงของแซงปีแยร์และมีเกอลง + + + + + เวลาพิตแคร์น + + + + + เวลาโปเนป + + + + + เวลาคืยซิลออร์ดา + เวลามาตรฐานคืยซิลออร์ดา + เวลาฤดูร้อนคืยซิลออร์ดา + + + + + เวลาเรอูนียง + + + + + เวลาโรธีรา + + + + + เวลาซาคาลิน + เวลามาตรฐานซาคาลิน + เวลาฤดูร้อนซาคาลิน + + + + + เวลาซามารา + เวลามาตรฐานซามารา + เวลาฤดูร้อนซามารา + + + + + เวลาซามัว + เวลามาตรฐานซามัว + เวลาฤดูร้อนซามัว + + + + + เวลาเซเชลส์ + + + + + เวลาสิงคโปร์ + + + + + เวลาหมู่เกาะโซโลมอน + + + + + เวลาเซาท์จอร์เจีย + + + + + เวลาซูรินาเม + + + + + เวลาโซวา + + + + + เวลาตาฮีตี + + + + + เวลาไทเป + เวลามาตรฐานไทเป + เวลาออมแสงไทเป + + + + + เวลาทาจิกิสถาน + + + + + เวลาโตเกเลา + + + + + เวลาตองกา + เวลามาตรฐานตองกา + เวลาฤดูร้อนตองกา + + + + + เวลาชุก + + + + + เวลาเติร์กเมนิสถาน + เวลามาตรฐานเติร์กเมนิสถาน + เวลาฤดูร้อนเติร์กเมนิสถาน + + + + + เวลาตูวาลู + + + + + เวลาอุรุกวัย + เวลามาตรฐานอุรุกวัย + เวลาฤดูร้อนอุรุกวัย + + + + + เวลาอุซเบกิสถาน + เวลามาตรฐานอุซเบกิสถาน + เวลาฤดูร้อนอุซเบกิสถาน + + + + + เวลาวานูอาตู + เวลามาตรฐานวานูอาตู + เวลาฤดูร้อนวานูอาตู + + + + + เวลาเวเนซุเอลา + + + + + เวลาวลาดีวอสตอค + เวลามาตรฐานวลาดีวอสตอค + เวลาฤดูร้อนวลาดีวอสตอค + + + + + เวลาวอลโกกราด + เวลามาตรฐานวอลโกกราด + เวลาฤดูร้อนวอลโกกราด + + + + + เวลาวอสตอค + + + + + เวลาเกาะเวก + + + + + เวลาวาลลิสและฟุตูนา + + + + + เวลายาคุตสค์ + เวลามาตรฐานยาคุตสค์ + เวลาฤดูร้อนยาคุตสค์ + + + + + เวลาเยคาเตรินบูร์ก + เวลามาตรฐานเยคาเตรินบูร์ก + เวลาฤดูร้อนเยคาเตรินบูร์ก + + + + + + latn + + thai + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 พัน + 0 หมื่น + 0 แสน + 0 ล้าน + 00 ล้าน + 000 ล้าน + 0 พันล้าน + 0 หมื่นล้าน + 0 แสนล้าน + 0 ล้านล้าน + 00 ล้านล้าน + 000 ล้านล้าน + + + + + 0 พ'.' + 0 ม'.' + 0 ส'.' + 0 ล'.' + 00 ล'.' + 000 ล'.' + 0 พ'.'ล'.' + 0 ม'.'ล'.' + 0 ส'.'ล'.' + 0 ล'.'ล'.' + 00 ล'.'ล'.' + 000 ล'.'ล'.' + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + เปเซตาอันดอร์รา + + + เดอร์แฮมสหรัฐอาหรับเอมิเรตส์ + เดอร์แฮมสหรัฐอาหรับเอมิเรตส์ + + + อัฟกานีอัฟกานิสถาน (1927–2002) + + + อัฟกานิอัฟกานิสถาน + อัฟกานิอัฟกานิสถาน + + + เลกแอลเบเนีย + เลกแอลเบเนีย + + + แดรมอาร์เมเนีย + แดรมอาร์เมเนีย + + + กิลเดอร์เนเธอร์แลนด์แอนทิลลิส + กิลเดอร์เนเธอร์แลนด์แอนทิลลิส + + + กวานซาแองโกลา + กวานซาแองโกลา + + + กวานซาแองโกลา (1977–1990) + + + นิวกวานซาแองโกลา (1990–2000) + + + กวานซารีจัสทาโดแองโกลา (1995–1999) + + + ออสตรัลอาร์เจนตินา + + + เปโซเลย์อาร์เจนตินา (1970–1983) + + + เปโซอาร์เจนตินา (1881–1970) + + + เปโซอาร์เจนตินา (1983–1985) + + + เปโซอาร์เจนตินา + เปโซอาร์เจนตินา + + + ชิลลิงออสเตรีย + + + ดอลลาร์ออสเตรเลีย + ดอลลาร์ออสเตรเลีย + AU$ + + + ฟลอรินอารูบา + ฟลอรินอารูบา + + + มานัตอาเซอร์ไบจาน (1993–2006) + + + มานัตอาเซอร์ไบจาน + มานัตอาเซอร์ไบจาน + + + ดีนาร์บอสเนีย-เฮอร์เซโกวีนา + + + มาร์กบอสเนีย-เฮอร์เซโกวีนา + มาร์กบอสเนีย-เฮอร์เซโกวีนา + + + ดีนาร์ใหม่บอสเนีย-เฮอร์เซโกวีนา (1994–1997) + + + ดอลลาร์บาร์เบโดส + ดอลลาร์บาร์เบโดส + + + ตากาบังกลาเทศ + ตากาบังกลาเทศ + + + ฟรังก์เบลเยียม (เปลี่ยนแปลงได้) + + + ฟรังก์เบลเยียม + + + ฟรังก์เบลเยียม (การเงิน) + + + ฮาร์ดเลฟบัลแกเรีย + + + โซเชียลลิสต์เลฟบัลแกเรีย + + + เลฟบัลแกเรีย + เลฟบัลแกเรีย + + + เลฟบัลเกเรีย (1879–1952) + + + ดีนาร์บาห์เรน + ดีนาร์บาห์เรน + + + ฟรังก์บุรุนดี + ฟรังก์บุรุนดี + + + ดอลลาร์เบอร์มิวดา + ดอลลาร์เบอร์มิวดา + + + ดอลลาร์บรูไน + ดอลลาร์บรูไน + + + โบลิเวียโนโบลิเวีย + โบลิเวียโนโบลิเวีย + + + โบลิเวียโนโบลิเวีย (1863–1963) + + + เปโซโบลิเวีย + + + มฟดอลโบลิเวีย + + + ครูเซโรโนโวบราซิล (1967–1986) + + + ครูซาโดบราซิล + + + ครูเซโรบราซิล (1990–1993) + + + เรียลบราซิล + เรียลบราซิล + R$ + + + ครูซาโดโนโวบราซิล + + + ครูเซโรบราซิล + + + ครูเซโรบราซิล (1942–1967) + + + ดอลลาร์บาฮามาส + ดอลลาร์บาฮามาส + + + เอ็งกุลตรัมภูฏาน + เอ็งกุลตรัมภูฏาน + + + จ๊าดพม่า + + + ปูลาบอตสวานา + ปูลาบอตสวานา + + + นิวรูเบิลเบลารุส (1994–1999) + + + รูเบิลเบลารุส + รูเบิลเบลารุส + + + ดอลลาร์เบลีซ + ดอลลาร์เบลีซ + + + ดอลลาร์แคนาดา + ดอลลาร์แคนาดา + CA$ + + + ฟรังก์คองโก + ฟรังก์คองโก + + + ยูโรดับเบิลยูไออาร์ + + + ฟรังก์สวิส + ฟรังก์สวิส + + + ฟรังก์ดับเบิลยูไออาร์ + + + เอสคูโดชิลี + + + ฟูเมนโตชิลี + + + เปโซชิลี + เปโซชิลี + + + หยวนจีน + หยวนจีน + CN¥ + + + เปโซโคลอมเบีย + เปโซโคลอมเบีย + + + วาเลอร์เรียลโคลอมเบีย + + + โกลองคอสตาริกา + โกลองคอสตาริกา + + + ดีนาร์เซอร์เบียเก่า + + + ฮาร์ดโครูนาเช็กโกสโลวัก + + + เปโซคิวบา (แปลงสภาพ) + เปโซคิวบา (แปลงสภาพ) + + + เปโซคิวบา + เปโซคิวบา + + + เอสคูโดเคปเวิร์ด + เอสคูโดเคปเวิร์ด + + + ปอนด์ไซปรัส + + + โครูนาสาธารณรัฐเช็ก + โครูนาสาธารณรัฐเช็ก + + + มาร์กเยอรมันตะวันออก + + + มาร์กเยอรมัน + + + ฟรังก์จิบูตี + ฟรังก์จิบูตี + + + โครนเดนมาร์ก + โครนเดนมาร์ก + + + เปโซโดมินิกัน + เปโซโดมินิกัน + + + ดีนาร์แอลจีเรีย + ดีนาร์แอลจีเรีย + + + ซูเกรเอกวาดอร์ + + + วาเลอร์คอนสแตนต์เอกวาดอร์ + + + ครูนเอสโตเนีย + + + ปอนด์อียิปต์ + ปอนด์อียิปต์ + + + แนกฟาเอริเทรีย + แนกฟาเอริเทรีย + + + เปเซตาสเปน (บัญชีเอ) + + + เปเซตาสเปน (บัญชีที่เปลี่ยนแปลงได้) + + + เปเซตาสเปน + + + เบอรร์เอธิโอเปีย + เบอรร์เอธิโอเปีย + + + ยูโร + ยูโร + + + + มาร์กกาฟินแลนด์ + + + ดอลลาร์ฟิจิ + ดอลลาร์ฟิจิ + + + ปอนด์หมู่เกาะฟอล์กแลนด์ + ปอนด์หมู่เกาะฟอล์กแลนด์ + + + ฟรังก์ฝรั่งเศส + + + ปอนด์สเตอร์ลิง (สหราชอาณาจักร) + ปอนด์สเตอร์ลิง (สหราชอาณาจักร) + £ + + + คูปอนลาริตจอร์เจีย + + + ลารีจอร์เจีย + ลารีจอร์เจีย + + + เซดีกานา (1979–2007) + + + เซดีกานา + เซดีกานา + + + ปอนด์ยิบรอลตาร์ + ปอนด์ยิบรอลตาร์ + + + ดาลาซีแกมเบีย + ดาลาซีแกมเบีย + + + ฟรังก์กินี + ฟรังก์กินี + + + ไซลีกินี + + + เอ็กเวเลอิเควทอเรียลกินี + + + ดรัชมากรีก + + + เควตซัลกัวเตมาลา + เควตซัลกัวเตมาลา + + + เอสคูโดกินีโปรตุเกส + + + เปโซกินี-บิสเซา + + + ดอลลาร์กายอานา + ดอลลาร์กายอานา + + + ดอลลาร์ฮ่องกง + ดอลลาร์ฮ่องกง + HK$ + + + เลมปิราฮอนดูรัส + เลมปิราฮอนดูรัส + + + ดีนาร์โครเอเชีย + + + คูนาโครเอเชีย + คูนาโครเอเชีย + + + กูร์ดเฮติ + กูร์ดเฮติ + + + ฟอรินต์ฮังการี + ฟอรินต์ฮังการี + + + รูเปียห์อินโดนีเซีย + รูเปียห์อินโดนีเซีย + + + ปอนด์ไอริช + + + ปอนด์อิสราเอล + + + นิวเชเกลอิสราเอล + นิวเชเกลอิสราเอล + + + + รูปีอินเดีย + รูปีอินเดีย + + + + ดีนาร์อิรัก + ดีนาร์อิรัก + + + เรียลอิหร่าน + เรียลอิหร่าน + + + โครนาไอซ์แลนด์ + โครนาไอซ์แลนด์ + + + ลีราอิตาลี + + + ดอลลาร์จาเมกา + ดอลลาร์จาเมกา + + + ดีนาร์จอร์แดน + ดีนาร์จอร์แดน + + + เยนญี่ปุ่น + เยนญี่ปุ่น + ¥ + + + ชิลลิ่งเคนยา + ชิลลิ่งเคนยา + + + ซอมคีร์กีซสถาน + ซอมคีร์กีซสถาน + + + เรียลกัมพูชา + เรียลกัมพูชา + + + ฟรังก์คอโมโรส + ฟรังก์คอโมโรส + + + วอนเกาหลีเหนือ + วอนเกาหลีเหนือ + + + ฮวานเกาหลีใต้ (1953–1962) + + + วอนเกาหลีใต้ (1945–1953) + + + วอนเกาหลีใต้ + วอนเกาหลีใต้ + + + + ดีนาร์คูเวต + ดีนาร์คูเวต + + + ดอลลาร์หมู่เกาะเคย์แมน + ดอลลาร์หมู่เกาะเคย์แมน + + + เทงเจคาซัคสถาน + เทงเจคาซัคสถาน + + + กีบลาว + กีบลาว + + + ปอนด์เลบานอน + ปอนด์เลบานอน + + + รูปีศรีลังกา + รูปีศรีลังกา + + + ดอลลาร์ไลบีเรีย + ดอลลาร์ไลบีเรีย + + + โลตีเลโซโท + + + ลีตัสลิทัวเนีย + ลีตัสลิทัวเนีย + + + ทาโลนัสลิทัวเนีย + + + คอนเวอร์ทิเบิลฟรังก์ลักเซมเบิร์ก + + + ฟรังก์ลักเซมเบิร์ก + + + ไฟแนลเชียลฟรังก์ลักเซมเบิร์ก + + + ลัตส์ลัตเวีย + ลัตส์ลัตเวีย + + + รูเบิลลัตเวีย + + + ดีนาร์ลิเบีย + ดีนาร์ลิเบีย + + + ดีแรห์มโมร็อกโก + ดีแรห์มโมร็อกโก + + + ฟรังก์โมร็อกโก + + + ฟรังก์โมนาโก + + + บัตรปันส่วนมอลโดวา + + + ลิวมอลโดวา + ลิวมอลโดวา + + + อาเรียรีมาลากาซี + อาเรียรีมาลากาซี + + + ฟรังก์มาดากัสการ์ + + + ดีนาร์มาซิโดเนีย + ดีนาร์มาซิโดเนีย + + + ดีนาร์มาซิโดเนีย (1992–1993) + + + ฟรังก์มาลี + + + จ๊าตพม่า + จ๊าตพม่า + + + ทูกริกมองโกเลีย + ทูกริกมองโกเลีย + + + ปาตากามาเก๊า + ปาตากามาเก๊า + + + อูกียามอริเตเนีย + อูกียามอริเตเนีย + + + ลีรามอลตา + + + ปอนด์มอลตา + + + รูปีมอริเชียส + รูปีมอริเชียส + + + รูฟิยามัลดีฟส์ + รูฟิยามัลดีฟส์ + + + ควาชามาลาวี + ควาชามาลาวี + + + เปโซเม็กซิโก + เปโซเม็กซิโก + MX$ + + + เงินเปโซเม็กซิโก (1861–1992) + + + ยูนิแดด ดี อินเวอร์ชั่น เม็กซิโก + + + ริงกิตมาเลเซีย + ริงกิตมาเลเซีย + + + เอสคูโดโมซัมบิก + + + เมติคัลโมซัมบิกเก่า + + + เมติคัลโมซัมบิก + เมติคัลโมซัมบิก + + + ดอลลาร์นามิเบีย + ดอลลาร์นามิเบีย + + + ไนราไนจีเรีย + ไนราไนจีเรีย + + + คอร์โดบานิการากัว + + + กอร์โดบานิการากัว + กอร์โดบานิการากัว + + + กิลเดอร์เนเธอร์แลนด์ + + + โครนนอร์เวย์ + โครนนอร์เวย์ + + + รูปีเนปาล + รูปีเนปาล + + + ดอลลาร์นิวซีแลนด์ + ดอลลาร์นิวซีแลนด์ + NZ$ + + + เรียลโอมาน + เรียลโอมาน + + + บัลบัวปานามา + บัลบัวปานามา + + + อินตีเปรู + + + นูโวซอลเปรู + นูโวซอลเปรู + + + ซอลเปรู + + + กีนาปาปัวนิวกินี + กีนาปาปัวนิวกินี + + + เปโซฟิลิปปินส์ + เปโซฟิลิปปินส์ + + + รูปีปากีสถาน + รูปีปากีสถาน + + + ซลอตีโปแลนด์ + ซลอตีโปแลนด์ + + + ซลอตีโปแลนด์ (1950–1995) + + + เอสคูโดโปรตุเกส + + + กวารานีปารากวัย + กวารานีปารากวัย + + + เรียลกาตาร์ + เรียลกาตาร์ + + + ดอลลาร์โรดีเซีย + + + ลิวโรมาเนียเก่า + + + ลิวโรมาเนีย + ลิวโรมาเนีย + + + ดีนาร์เซอร์เบีย + ดีนาร์เซอร์เบีย + + + รูเบิลรัสเซีย + รูเบิลรัสเซีย + + + รูเบิลรัสเซีย (1991–1998) + + + ฟรังก์รวันดา + ฟรังก์รวันดา + + + ริยัลซาอุดีอาระเบีย + ริยัลซาอุดีอาระเบีย + + + ดอลลาร์หมู่เกาะโซโลมอน + ดอลลาร์หมู่เกาะโซโลมอน + + + รูปีเซเชลส์ + รูปีเซเชลส์ + + + ดีนาร์ซูดานเก่า + + + ปอนด์ซูดาน + ปอนด์ซูดาน + + + ปอนด์ซูดานเก่า + + + โครนาสวีเดน + โครนาสวีเดน + + + ดอลลาร์สิงคโปร์ + ดอลลาร์สิงคโปร์ + + + ปอนด์เซนต์เฮเลนา + ปอนด์เซนต์เฮเลนา + + + ทอลาร์สโลวีเนีย + + + โครูนาสโลวัก + + + ลีโอนเซียร์ราลีโอน + ลีโอนเซียร์ราลีโอน + + + ชิลลิงโซมาเลีย + ชิลลิงโซมาเลีย + + + ดอลลาร์ซูรินาเม + ดอลลาร์ซูรินาเม + + + กิลเดอร์ซูรินาเม + + + ปอนด์ซูดานใต้ + ปอนด์ซูดานใต้ + + + ดอบราเซาตูเมและปรินซิปี + ดอบราเซาตูเมและปรินซิปี + + + รูเบิลโซเวียต + + + โคลอนเอลซัลวาดอร์ + + + ปอนด์ซีเรีย + ปอนด์ซีเรีย + + + ลิลันเจนีสวาซิ + ลิลันเจนีสวาซิ + + + บาทไทย + บาทไทย + ฿ + + + รูเบิลทาจิกิสถาน + + + โซโมนิทาจิกิสถาน + โซโมนิทาจิกิสถาน + + + มานัตเติร์กเมนิสถาน (1993–2009) + + + มานัตเติร์กเมนิสถาน + มานัตเติร์กเมนิสถาน + + + ดีนาร์ตูนิเซีย + ดีนาร์ตูนิเซีย + + + พาแองกาตองกา + พาแองกาตองกา + + + เอสคูโดติมอร์ + + + ลีราตุรกีเก่า + + + ลีราตุรกี + ลีราตุรกี + + + ดอลลาร์ตรินิแดดและโตเบโก + ดอลลาร์ตรินิแดดและโตเบโก + + + ดอลลาร์ไต้หวันใหม่ + ดอลลาร์ไต้หวันใหม่ + NT$ + + + ชิลลิงแทนซาเนีย + ชิลลิงแทนซาเนีย + + + ฮรีฟเนียยูเครน + ฮรีฟเนียยูเครน + + + คาร์โบวาเนตซ์ยูเครน + + + ชิลลิงยูกันดา (1966–1987) + + + ชิลลิงยูกันดา + ชิลลิงยูกันดา + + + ดอลลาร์สหรัฐ + ดอลลาร์สหรัฐ + US$ + + + ดอลลาร์สหรัฐ (วันถัดไป) + ดอลลาร์สหรัฐ (วันถัดไป) + + + ดอลลาร์สหรัฐ (วันเดียวกัน) + ดอลลาร์สหรัฐ (วันเดียวกัน) + + + เปโซเอนยูนิแดดเซสอินเด็กซาแดสอุรุกวัย + + + เปโซอุรุกวัย (1975–1993) + + + เปโซอุรุกวัย + เปโซอุรุกวัย + + + ซอมอุซเบกิสถาน + ซอมอุซเบกิสถาน + + + โบลิวาร์เวเนซุเอลา (1871–2008) + + + โบลิวาร์เวเนซุเอลา + โบลิวาร์เวเนซุเอลา + + + ดองเวียดนาม + ดองเวียดนาม + + + + ดองเวียดนาม (1978–1985) + + + วาตูวานูอาตู + วาตูวานูอาตู + + + ทาลาซามัว + ทาลาซามัว + + + ฟรังก์เซฟาธนาคารรัฐแอฟริกากลาง + ฟรังก์เซฟาธนาคารรัฐแอฟริกากลาง + FCFA + + + เงิน + + + ทอง + + + หน่วยคอมโพสิตยุโรป + + + หน่วยโมเนทารียุโรป + + + หน่วยบัญชียุโรป [XBC] + + + หน่วยบัญชียุโรป [XBD] + + + ดอลลาร์แคริบเบียนตะวันออก + ดอลลาร์แคริบเบียนตะวันออก + EC$ + + + สิทธิถอนเงินพิเศษ + + + หน่วยสกุลเงินยุโรป + + + ฟรังก์ทองฝรั่งเศส + + + ฟรังก์ยูไอซีฝรั่งเศส + + + ฟรังก์เซฟาธนาคารกลางรัฐแอฟริกาตะวันตก + ฟรังก์เซฟาธนาคารกลางรัฐแอฟริกาตะวันตก + CFA + + + พัลเลเดียม + + + ฟรังก์ซีเอฟพี + ฟรังก์ซีเอฟพี + CFPF + + + แพลตินัม + + + กองทุนไรเน็ต + + + ซูเกร + + + รหัสทดสอบสกุลเงิน + + + หน่วยบัญชี เอดีบี + + + สกุลเงินที่ไม่รู้จัก + (สกุลเงินที่ไม่รู้จัก) + + + ดีนาร์เยเมน + + + เรียลเยเมน + เรียลเยเมน + + + ฮาร์ดดีนาร์ยูโกสลาเวีย + + + โนวิย์ดีนาร์ยูโกสลาเวีย + + + คอนเวอร์ทิเบิลดีนาร์ยูโกสลาเวีย + + + ดีนาร์ปฏิรูปยูโกสลาเวีย (1992–1993) + + + แรนด์แอฟริกาใต้ (การเงิน) + + + แรนด์แอฟริกาใต้ + แรนด์แอฟริกาใต้ + + + ควาชาแซมเบีย (1968–2012) + + + ควาชาแซมเบีย + ควาชาแซมเบีย + + + นิวแซร์คองโก + + + แซร์คองโก + + + ดอลลาร์ซิมบับเว + + + ดอลลาร์ซิมบับเว (2009) + + + ดอลลาร์ซิมบับเว (2008) + + + + {0}+ + {0}-{1} + + + + + + {0}ต่อ{1} + + + {0} แรง G + + + {0} นาที + + + {0} วินาที + + + {0} องศา + + + {0} เอเคอร์ + + + {0} เฮกตาร์ + + + {0} ตารางฟุต + + + {0} ตารางกิโลเมตร + + + {0} ตารางเมตร + + + {0} ตารางไมล์ + + + {0} วัน + + + {0} ชั่วโมง + + + {0} มิลลิวินาที + + + {0} นาที + + + {0} เดือน + + + {0} วินาที + + + {0} สัปดาห์ + + + {0} ปี + + + {0} เซนติเมตร + + + {0} ฟุต + + + {0} นิ้ว + + + {0} กิโลเมตร + + + {0} ปีแสง + + + {0} เมตร + + + {0} ไมล์ + + + {0} มิลลิเมตร + + + {0} พิโกเมตร + + + {0} หลา + + + {0} กรัม + + + {0} กิโลกรัม + + + {0} ออนซ์ + + + {0} ปอนด์ + + + {0} แรงม้า + + + {0} กิโลวัตต์ + + + {0} วัตต์ + + + {0} เฮกโตปาสกาล + + + {0} นิ้วปรอท + + + {0} มิลลิบาร์ + + + {0} กิโลเมตรต่อชั่วโมง + + + {0} เมตรต่อวินาที + + + {0} ไมล์ต่อชั่วโมง + + + {0} องศาเซลเซียส + + + {0} องศาฟาเรนไฮต์ + + + {0} ลูกบาศก์กิโลเมตร + + + {0} ลูกบาศก์ไมล์ + + + {0} ลิตร + + + + + {0}/{1} + + + {0} G + + + {0} นาที + + + {0} วิ + + + {0}° + + + {0} เอเคอร์ + + + {0} เฮกตาร์ + + + {0} ตร.ฟุต + + + {0} ตร.กม. + + + {0} ตร.ม. + + + {0} ตร.ไมล์ + + + {0} วัน + + + {0} ชม. + + + {0} มิลลิวินาที + + + {0} นาที + + + {0} เดือน + + + {0} วิ + + + {0} สัปดาห์ + + + {0} ปี + + + {0} ซม. + + + {0} ฟุต + + + {0} นิ้ว + + + {0} กม. + + + {0} ปีแสง + + + {0} ม. + + + {0} ไมล์ + + + {0} มม. + + + {0} พิโกเมตร + + + {0} หลา + + + {0} ก. + + + {0} กก. + + + {0} ออนซ์ + + + {0} ปอนด์ + + + {0} แรงม้า + + + {0} กิโลวัตต์ + + + {0} วัตต์ + + + {0} เฮกโตปาสกาล + + + {0} นิ้วปรอท + + + {0} มิลลิบาร์ + + + {0} กม./ชม. + + + {0} ม./วิ + + + {0} ไมล์/ชม. + + + {0}°C + + + {0}°F + + + {0} ลบ.กม. + + + {0} ลบ.ไมล์ + + + {0} ลิตร + + + + + {0}/{1} + + + {0}G + + + {0}นาที + + + {0}วิ + + + {0}° + + + {0}เอเคอร์ + + + {0}เฮกตาร์ + + + {0}ตร.ฟุต + + + {0}ตร.กม. + + + {0}ตร.ม. + + + {0}ตร.ไมล์ + + + {0}วัน + + + {0}ชม. + + + {0} มิลลิวิ + + + {0}นาที + + + {0}เดือน + + + {0}วิ + + + {0}สัปดาห์ + + + {0}ปี + + + {0}ซม. + + + {0}′ + + + {0}″ + + + {0}กม. + + + {0}ปีแสง + + + {0}ม. + + + {0}ไมล์ + + + {0}มม. + + + {0}พิโกเมตร + + + {0}หลา + + + {0}ก. + + + {0}กก. + + + {0}ออนซ์ + + + {0}# + + + {0}แรงม้า + + + {0}กิโลวัตต์ + + + {0}วัตต์ + + + {0}hPa + + + {0}" Hg + + + {0}มิลลิบาร์ + + + {0}กม./ชม. + + + {0}ม./วิ + + + {0}ไมล์/ชม. + + + {0}° + + + {0}°F + + + {0}ลบ.กม. + + + {0}ลบ.ไมล์ + + + {0}ลิตร + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0} {1} + {0} {1} + {0} และ{1} + {0}และ{1} + + + {0} {1} + {0} {1} + {0} และ {1} + {0} และ {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} และ {1} + {0} {1} + + + + + ใช่ + ไม่ใช่ + + + + diff --git a/library/Zend/Locale/Data/th_TH.xml b/library/Zend/Locale/Data/th_TH.xml new file mode 100755 index 000000000..ffd0a9612 --- /dev/null +++ b/library/Zend/Locale/Data/th_TH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ti.xml b/library/Zend/Locale/Data/ti.xml new file mode 100755 index 000000000..bf9e524da --- /dev/null +++ b/library/Zend/Locale/Data/ti.xml @@ -0,0 +1,609 @@ + + + + + + + + + + + + አፍሪቃንሰኛ + አምሐረኛ + ዓረበኛ + አዜርባይጃንኛ + ቤላራሻኛ + ቡልጋሪኛ + በንጋሊኛ + ብሬቶን + ቦስኒያን + ካታላን + ቼክኛ + ወልሽ + ዴኒሽ + ጀርመን + ግሪከኛ + እንግሊዝኛ + ኤስፐራንቶ + ስፓኒሽ + ኤስቶኒአን + ባስክኛ + ፐርሲያኛ + ፊኒሽ + ታጋሎገኛ + ፋሮኛ + ፈረንሳይኛ + ፍሪሰኛ + አይሪሽ + እስኮትስ ጌልክኛ + ጋለቪኛ + ጓራኒ + ጉጃራቲኛ + ዕብራስጥ + ሕንደኛ + ክሮሽያንኛ + ሀንጋሪኛ + ኢንቴር ቋንቋ + እንዶኑሲኛ + አይስላንደኛ + ጣሊያንኛ + ጃፓንኛ + ጃቫንኛ + ጊዮርጊያኛ + ካማደኛ + ኮሪያኛ + ኩርድሽ + ኪሩጋዚ + ላቲንኛ + ሊቱአኒየን + ላቲቪያን + ማክዶኒኛ + ማላያላምኛ + ማራቲኛ + ማላይኛ + ማልቲስኛ + ኔፖሊኛ + ደች + ኖርዌይኛ (ናይ ኝኖርስክ) + ኖርዌጂያን + ኦኪታንኛ + ኦሪያ + ፑንጃቢኛ + ፖሊሽ + ፓሽቶ + ፖርቱጋሊኛ + ፖርቱጋልኛ (ናይ ብራዚል) + ፖርቱጋልኛ (ናይ ፖርቱጋል) + ሮማኒያን + ራሽኛ + ሰርቦ- ክሮዊታን + ስንሃልኛ + ስሎቨክኛ + ስቁቪኛ + አልቤኒኛ + ሰርቢኛ + ሰሴቶ + ሱዳንኛ + ስዊድንኛ + ሰዋሂሊኛ + ታሚልኛ + ተሉጉኛ + ታይኛ + ትግርኛ + ናይ ቱርኪ ሰብዓይ (ቱርካዊ) + ክሊንግኦንኛ + ቱርከኛ + ትዊ + ዩክረኒኛ + ኡርዱኛ + ኡዝበክኛ + ቪትናምኛ + ዞሳኛ + ዪዲሽ + ዙሉኛ + + + + + + + ዓለም + አፍሪካ + ደቡባዊ አሜሪካ + ኦሽኒያ + ምዕራባዊ አፍሪካ + ምስራቃዊ አፍሪካ + ሰሜናዊ አፍሪካ + መካከለኛ አፍሪካ + ደቡባዊ አፍሪካ + አሜሪካዎች + ሰሜናዊ አሜሪካ + ካሪቢያን + ምሥራቃዊ እስያ + ደቡባዊ አውሮፓ + አውስትራሊያ እና ኒው ዚላንድ + ሜላኔሲያ + ፖሊኔዢያ + እስያ + ምዕራባዊ እስያ + አውሮፓ + ምስራቃዊ አውሮፓ + ሰሜናዊ አውሮፓ + ምዕራባዊ አውሮፓ + አንዶራ + የተባበሩት አረብ ኤምሬትስ + አፍጋኒስታን + አንቲጓ እና ባሩዳ + አንጉኢላ + አልባኒያ + አርሜኒያ + ኔዘርላንድስ አንቲልስ + አንጐላ + አንታርክቲካ + አርጀንቲና + የአሜሪካ ሳሞአ + ኦስትሪያ + አውስትሬሊያ + አሩባ + የአላንድ ደሴቶች + አዘርባጃን + ቦስኒያ እና ሄርዞጎቪኒያ + ባርቤዶስ + ባንግላዲሽ + ቤልጄም + ቡርኪና ፋሶ + ቡልጌሪያ + ባህሬን + ብሩንዲ + ቤኒን + ቤርሙዳ + ብሩኒ + ቦሊቪያ + ብራዚል + ባሃማስ + ቡህታን + የቦውቬት ደሴት + ቦትስዋና + ቤላሩስ + ቤሊዘ + ካናዳ + ኮኮስ ኬሊንግ ደሴቶች + ኮንጎ + የመካከለኛው አፍሪካ ሪፐብሊክ + ኮንጐ + ስዊዘርላንድ + ኮት ዲቯር + ኩክ ደሴቶች + ቺሊ + ካሜሩን + ቻይና + ኮሎምቢያ + ኮስታ ሪካ + ኩባ + ኬፕ ቬርዴ + የገና ደሴቶች + ሳይፕረስ + ቼክ ሪፑብሊክ + ጀርመን + ጂቡቲ + ዴንማርክ + ዶሚኒካ + ዶሚኒክ ሪፑብሊክ + አልጄሪያ + ኢኳዶር + ኤስቶኒያ + ግብጽ + ምዕራባዊ ሳህራ + ኤርትራ + ስፔን + ኢትዮጵያ + ፊንላንድ + ፊጂ + የፎልክላንድ ደሴቶች + ሚክሮኔዢያ + የፋሮይ ደሴቶች + ፈረንሳይ + ጋቦን + እንግሊዝ + ግሬናዳ + ጆርጂያ + የፈረንሳይ ጉዊአና + ጋና + ጊብራልታር + ግሪንላንድ + ጋምቢያ + ጊኒ + ጉዋደሉፕ + ኢኳቶሪያል ጊኒ + ግሪክ + ደቡብ ጆርጂያ እና የደቡድ ሳንድዊች ደሴቶች + ጉዋቲማላ + ጉዋም + ቢሳዎ + ጉያና + ሆንግ ኮንግ + የኧርድ እና የማክዶናልድ ደሴቶች + ሆንዱራስ + ክሮኤሽያ + ሀይቲ + ሀንጋሪ + ኢንዶኔዢያ + አየርላንድ + እስራኤል + ህንድ + የብሪታኒያ ህንድ ውቂያኖስ ግዛት + ኢራቅ + ኢራን + አይስላንድ + ጣሊያን + ጃማይካ + ጆርዳን + ጃፓን + ኬንያ + ካምቦዲያ + ኪሪባቲ + ኮሞሮስ + ቅዱስ ኪትስ እና ኔቪስ + ሰሜን ኮሪያ + ደቡብ ኮሪያ + ክዌት + ካይማን ደሴቶች + ላኦስ + ሊባኖስ + ሴንት ሉቺያ + ሊችተንስታይን + ሲሪላንካ + ላይቤሪያ + ሌሶቶ + ሊቱዌኒያ + ሉክሰምበርግ + ላትቪያ + ሊቢያ + ሞሮኮ + ሞናኮ + ሞልዶቫ + ማዳጋስካር + ማርሻል አይላንድ + ማከዶኒያ + ማሊ + ማያንማር + ሞንጎሊያ + ማካዎ + የሰሜናዊ ማሪያና ደሴቶች + ማርቲኒክ + ሞሪቴኒያ + ሞንትሴራት + ማልታ + ማሩሸስ + ማልዲቭስ + ማላዊ + ሜክሲኮ + ማሌዢያ + ሞዛምቢክ + ናሚቢያ + ኒው ካሌዶኒያ + ኒጀር + ኖርፎልክ ደሴት + ናይጄሪያ + ኒካራጓ + ኔዘርላንድ + ኖርዌ + ኔፓል + ናኡሩ + ኒኡይ + ኒው ዚላንድ + ኦማን + ፓናማ + ፔሩ + የፈረንሳይ ፖሊኔዢያ + ፓፑዋ ኒው ጊኒ + ፊሊፒንስ + ፓኪስታን + ፖላንድ + ቅዱስ ፒዬር እና ሚኩኤሎን + ፒትካኢርን + ፖርታ ሪኮ + የፍልስጤም ግዛት + ፖርቱጋል + ፓላው + ፓራጓይ + ኳታር + ወጣ ያለ ኦሽኒያ + ሪዩኒየን + ሮሜኒያ + ራሺያ + ሩዋንዳ + ሳውድአረቢያ + ሰሎሞን ደሴት + ሲሼልስ + ሱዳን + ስዊድን + ሲንጋፖር + ሴንት ሄለና + ስሎቬኒያ + የስቫልባርድ እና ዣን ማየን ደሴቶች + ስሎቫኪያ + ሴራሊዮን + ሳን ማሪኖ + ሴኔጋል + ሱማሌ + ሱሪናም + ሳኦ ቶሜ እና ፕሪንሲፔ + ኤል ሳልቫዶር + ሲሪያ + ሱዋዚላንድ + የቱርኮችና የካኢኮስ ደሴቶች + ቻድ + የፈረንሳይ ደቡባዊ ግዛቶች + ቶጐ + ታይላንድ + ታጃኪስታን + ቶክላው + ምስራቅ ቲሞር + ቱርክሜኒስታን + ቱኒዚያ + ቶንጋ + ቱርክ + ትሪኒዳድ እና ቶባጎ + ቱቫሉ + ታይዋን + ታንዛኒያ + ዩክሬን + ዩጋንዳ + የአሜሪካ ራቅ ያሉ አናሳ ደሴቶች + አሜሪካ + ኡራጓይ + ዩዝበኪስታን + ቫቲካን + ቅዱስ ቪንሴንት እና ግሬናዲንስ + ቬንዙዌላ + የእንግሊዝ ድንግል ደሴቶች + የአሜሪካ ቨርጂን ደሴቶች + ቬትናም + ቫኑአቱ + ዋሊስ እና ፉቱና ደሴቶች + ሳሞአ + የመን + ሜይኦቴ + ደቡብ አፍሪካ + ዛምቢያ + ዚምቧቤ + + + + [\u135F ሀ-ሆ ለ-ቆ ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ኆ ኈ ኊ-ኍ ነ-ኮ ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዎ ዐ-ዖ ዘ-ዮ ደ-ዷ ጀ-ጎ ጐ ጒ-ጕ ጠ-ፗ] + [᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ሇ ⶀ ᎀ ᎁ ᎂ ᎃ ⶁ ⶂ ⶃ ⶄ ቇ ᎄ ᎅ ᎆ ᎇ ⶅ ⶆ ⶇ ኇ ⶈ ⶉ ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ ዹ ዺ ዻ ዼ ዽ ዾ ዿ ⶍ ⶎ ጏ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶔ ⶕ ⶖ ⶏ ⶐ ⶑ ፇ ᎈ ᎉ ᎊ ᎋ ᎌ ᎍ ᎎ ᎏ ⶒ ፘ ፙ ፚ ⶠ ⶡ ⶢ ⶣ ⶤ ⶥ ⶦ ⶨ ⶩ ⶪ ⶫ ⶬ ⶭ ⶮ ⶰ ⶱ ⶲ ⶳ ⶴ ⶵ ⶶ ⶸ ⶹ ⶺ ⶻ ⶼ ⶽ ⶾ ⷀ ⷁ ⷂ ⷃ ⷄ ⷅ ⷆ ⷈ ⷉ ⷊ ⷋ ⷌ ⷍ ⷎ ⷐ ⷑ ⷒ ⷓ ⷔ ⷕ ⷖ ⷘ ⷙ ⷚ ⷛ ⷜ ⷝ ⷞ] + [ሀ ለ ሐ መ ሠ ረ ሰ ሸ ቀ ቈ ቐ ቘ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ዀ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጠ ጨ ጰ ጸ ፀ ፈ ፐ] + + + + + + + + EEEE፣ dd MMMM መዓልቲ y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + dd/MM + dd MMMM + MM/y + MMMM y + QQQ y + + + + + + + + ጃንዩ + ፌብሩ + ማርች + ኤፕረ + ሜይ + ጁን + ጁላይ + ኦገስ + ሴፕቴ + ኦክተ + ኖቬም + ዲሴም + + + ጃንዩወሪ + ፌብሩወሪ + ማርች + ኤፕረል + ሜይ + ጁን + ጁላይ + ኦገስት + ሴፕቴምበር + ኦክተውበር + ኖቬምበር + ዲሴምበር + + + + + + + + + + + + + + + + + + + + + + + ሰንበት + ሰኑይ + ሠሉስ + ረቡዕ + ኃሙስ + ዓርቢ + ቀዳም + + + + + + + + + + + + + + + + + + ንጉሆ ሰዓተ + ድሕር ሰዓት + + + + + + ዓ/ዓ + ዓ/ም + + + + + + EEEE፣ dd MMMM መዓልቲ y G + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + dd/MM + dd MMMM + MM/y + MMMM y + QQQ y + + + + + + +HH:mm;-HH:mm + GMT{0} + + + + latn + + latn + ethi + + + + + ¤#,##0.00 + + + + + + የብራዚል ሪል + + + የቻይና ዩአን ረንሚንቢ + + + የኢትዮጵያ ብር + Br + + + አውሮ + + + የእንግሊዝ ፓውንድ ስተርሊንግ + + + የሕንድ ሩፒ + + + የጃፓን የን + + + የራሻ ሩብል + + + የአሜሪካን ዶላር + + + + + diff --git a/library/Zend/Locale/Data/ti_ER.xml b/library/Zend/Locale/Data/ti_ER.xml new file mode 100755 index 000000000..8dafd1df1 --- /dev/null +++ b/library/Zend/Locale/Data/ti_ER.xml @@ -0,0 +1,204 @@ + + + + + + + + + + + + [\u135F ፡ ፣-፧ ። ፠ ፨ ፲-፼ ፩-፱ ሀ-ሆ ለ-ሟ ረ-ቆ ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ኆ ኈ ኊ-ኍ ነ-ኮ ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዎ ዐ-ዖ ዘ-ዮ ደ-ዷ ጀ-ጎ ጐ ጒ-ጕ ጠ-ጯ ጸ-ጿ ፈ-ፗ] + [᎐ ᎑ ᎒ ᎓ ᎔ ᎕ ᎖ ᎗ ᎘ ᎙ ሇ ⶀ ᎀ ᎁ ᎂ ᎃ ⶁ ሠ ሡ ሢ ሣ ሤ ሥ ሦ ሧ ⶂ ⶃ ⶄ ቇ ᎄ ᎅ ᎆ ᎇ ⶅ ⶆ ⶇ ኇ ⶈ ⶉ ⶊ ኯ ዏ ⶋ ዯ ⶌ ዸ ዹ ዺ ዻ ዼ ዽ ዾ ዿ ⶍ ⶎ ጏ ጘ ጙ ጚ ጛ ጜ ጝ ጞ ጟ ⶓ ⶔ ⶕ ⶖ ⶏ ⶐ ⶑ ፀ ፁ ፂ ፃ ፄ ፅ ፆ ፇ ᎈ ᎉ ᎊ ᎋ ᎌ ᎍ ᎎ ᎏ ⶒ ፘ ፙ ፚ ⶠ ⶡ ⶢ ⶣ ⶤ ⶥ ⶦ ⶨ ⶩ ⶪ ⶫ ⶬ ⶭ ⶮ ⶰ ⶱ ⶲ ⶳ ⶴ ⶵ ⶶ ⶸ ⶹ ⶺ ⶻ ⶼ ⶽ ⶾ ⷀ ⷁ ⷂ ⷃ ⷄ ⷅ ⷆ ⷈ ⷉ ⷊ ⷋ ⷌ ⷍ ⷎ ⷐ ⷑ ⷒ ⷓ ⷔ ⷕ ⷖ ⷘ ⷙ ⷚ ⷛ ⷜ ⷝ ⷞ] + [ሀ ለ ሐ መ ረ ሰ ሸ ቀ ቈ ቐ ቘ በ ቨ ተ ቸ ኀ ኈ ነ ኘ አ ከ ኰ ኸ ዀ ወ ዐ ዘ ዠ የ ደ ጀ ገ ጐ ጠ ጨ ጸ ፈ ፐ] + + + + + + + + + + + + + + EEEE፡ dd MMMM መዓልቲ y G + + + + + + {0} - {1} + + MM-dd - MM-dd + MM-dd - MM-dd + + + E፡ MM-dd - E፡ MM-dd + E፡ MM-dd - E፡ MM-dd + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + E፡ MMM d - E፡ MMM d + E፡ MMM d - E፡ MMM d + + + y-MM - y-MM + y-MM - y-MM + + + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + + + E፡ y-MM-dd - E፡ y-MM-dd + E፡ y-MM-dd - E፡ y-MM-dd + E፡ y-MM-dd - E፡ y-MM-dd + + + y MMM-MMM + y MMM - y MMM + + + y MMM d-d + y MMM d - MMM d + y MMM d - y MMM d + + + E፡ dd MMM መዓልቲ y G - E፡ dd MMM መዓልቲ y G + E፡ dd MMM መዓልቲ y G - E፡ dd MMM መዓልቲ y G + E፡ dd MMM መዓልቲ y G - E፡ dd MMM መዓልቲ y G + + + + + + + + + ጥሪ + ለካቲ + መጋቢ + ሚያዝ + ግንቦ + ሰነ + ሓምለ + ነሓሰ + መስከ + ጥቅም + ሕዳር + ታሕሳ + + + ጥሪ + ለካቲት + መጋቢት + ሚያዝያ + ግንቦት + ሰነ + ሓምለ + ነሓሰ + መስከረም + ጥቅምቲ + ሕዳር + ታሕሳስ + + + + + + + ሰንበት + ሰኑይ + ሰሉስ + ረቡዕ + ሓሙስ + ዓርቢ + ቀዳም + + + + + + + EEEE፡ dd MMMM መዓልቲ y G + + + + + + {0} - {1} + + MM-dd - MM-dd + MM-dd - MM-dd + + + E፡ MM-dd - E፡ MM-dd + E፡ MM-dd - E፡ MM-dd + + + MMM-MMM + + + MMM d-d + MMM d - MMM d + + + E፡ MMM d - E፡ MMM d + E፡ MMM d - E፡ MMM d + + + y-MM - y-MM + y-MM - y-MM + + + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + + + E፡ y-MM-dd - E፡ y-MM-dd + E፡ y-MM-dd - E፡ y-MM-dd + E፡ y-MM-dd - E፡ y-MM-dd + + + y MMM-MMM + y MMM - y MMM + + + y MMM d-d + y MMM d - MMM d + y MMM d - y MMM d + + + E፡ dd MMM መዓልቲ y G - E፡ dd MMM መዓልቲ y G + E፡ dd MMM መዓልቲ y G - E፡ dd MMM መዓልቲ y G + E፡ dd MMM መዓልቲ y G - E፡ dd MMM መዓልቲ y G + + + + + + + + + + Nfk + + + + + diff --git a/library/Zend/Locale/Data/ti_ET.xml b/library/Zend/Locale/Data/ti_ET.xml new file mode 100755 index 000000000..52eebc500 --- /dev/null +++ b/library/Zend/Locale/Data/ti_ET.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/tig.xml b/library/Zend/Locale/Data/tig.xml new file mode 100755 index 000000000..617e5e6e2 --- /dev/null +++ b/library/Zend/Locale/Data/tig.xml @@ -0,0 +1,512 @@ + + + + + + + + + + + + አፋርኛ + አብሐዚኛ + አፍሪቃንስኛ + አምሐረኛ + ዐርቢኛ + አሳሜዛዊ + አያማርኛ + አዜርባይጃንኛ + ባስኪርኛ + ቤላራሻኛ + ቡልጋሪኛ + ቢስላምኛ + በንጋሊኛ + ትበትንኛ + ብሬቶንኛ + ብሊን + ካታላንኛ + ኮርሲካኛ + ቼክኛ + ወልሽ + ዴኒሽ + ጀርመን + ድዞንግኻኛ + ግሪክኛ + እንግሊዝኛ + ኤስፐራንቶ + ስፓኒሽ + ኤስቶኒአን + ባስክኛ + ፐርሲያኛ + ፊኒሽ + ፊጂኛ + ፋሮኛ + ፈረንሳይኛ + ፍሪስኛ + አይሪሽ + እስኮትስ ጌልክኛ + ግዕዝኛ + ጋለጋኛ + ጓራኒኛ + ጉጃርቲኛ + ሃውሳኛ + ዕብራስጥ + ሐንድኛ + ክሮሽያንኛ + ሀንጋሪኛ + አርመናዊ + ኢንቴርሊንጓ + እንዶኒሲኛ + እንተርሊንግወ + እኑፒያቅኛ + አይስላንድኛ + ጣሊያንኛ + እኑክቲቱትኛ + ጃፓንኛ + ጃቫንኛ + ጊዮርጊያን + ካዛክኛ + ካላሊሱትኛ + ክመርኛ + ካናዳኛ + ኮሪያኛ + ካሽሚርኛ + ኩርድሽኛ + ኪርጊዝኛ + ላቲንኛ + ሊንጋላኛ + ላውስኛ + ሊቱአኒያን + ላትቪያን + ማላጋስኛ + ማዮሪኛ + ማከዶኒኛ + ማላያላምኛ + ሞንጎላዊኛ + ማራዚኛ + ማላይኛ + ማልቲስኛ + ቡርማኛ + ናኡሩ + ኔፓሊኛ + ደች + ኖርዌጂያን + ኦኪታንኛ + ኦሮምኛ + ኦሪያኛ + ፓንጃቢኛ + ፖሊሽ + ፑሽቶኛ + ፖርቱጋሊኛ + ኵቿኛ + ሮማንስ + ሩንዲኛ + ሮማኒያን + ሞልዳቫዊና + ራሽኛ + ኪንያርዋንድኛ + ሳንስክሪትኛ + ሲንድሂኛ + ሳንጎኛ + ስንሃልኛ + ሲዳምኛ + ስሎቫክኛ + ስሎቪኛ + ሳሞአኛ + ሾናኛ + ሱማልኛ + ልቤኒኛ + ሰርቢኛ + ስዋቲኛ + ሶዞኛ + ሱዳንኛ + ስዊድንኛ + ስዋሂሊኛ + ታሚልኛ + ተሉጉኛ + ታጂኪኛ + ታይኛ + ትግርኛ + ትግረ + ቱርክመንኛ + ታጋሎገኛ + ጽዋናዊኛ + ቶንጋ + ቱርክኛ + ጾንጋኛ + ታታርኛ + ትዊኛ + ኡዊግሁርኛ + ዩክረኒኛ + ኡርዱኛ + ኡዝበክኛ + ቪትናምኛ + ቮላፑክኛ + ዎሎፍኛ + ዞሳኛ + ይዲሻዊኛ + ዮሩባዊኛ + ዡዋንግኛ + ቻይንኛ + ዙሉኛ + + + + + + አንዶራ + የተባበሩት አረብ ኤምሬትስ + አልባኒያ + አርሜኒያ + ኔዘርላንድስ አንቲልስ + አርጀንቲና + ኦስትሪያ + አውስትሬሊያ + አዘርባጃን + ቦስኒያ እና ሄርዞጎቪኒያ + ባርቤዶስ + ቤልጄም + ቡልጌሪያ + ባህሬን + ቤርሙዳ + ቦሊቪያ + ብራዚል + ቡህታን + ቤላሩስ + ቤሊዘ + ኮንጎ + የመካከለኛው አፍሪካ ሪፐብሊክ + ስዊዘርላንድ + ቺሊ + ካሜሩን + ቻይና + ኮሎምቢያ + ኬፕ ቬርዴ + ሳይፕረስ + ቼክ ሪፑብሊክ + ጀርመን + ዴንማርክ + ዶሚኒካ + ዶሚኒክ ሪፑብሊክ + አልጄሪያ + ኢኳዶር + ኤስቶኒያ + ግብጽ + ምዕራባዊ ሳህራ + ኤርትራ + ስፔን + ኢትዮጵያ + ፊንላንድ + ፊጂ + ሚክሮኔዢያ + ፈረንሳይ + እንግሊዝ + ጆርጂያ + የፈረንሳይ ጉዊአና + ጋምቢያ + ጊኒ + ኢኳቶሪያል ጊኒ + ግሪክ + ቢሳዎ + ጉያና + ሆንግ ኮንግ + ክሮኤሽያ + ሀይቲ + ሀንጋሪ + ኢንዶኔዢያ + አየርላንድ + እስራኤል + ህንድ + ኢራቅ + አይስላንድ + ጣሊያን + ጃማይካ + ጆርዳን + ጃፓን + ካምቦዲያ + ኮሞሮስ + ደቡብ ኮሪያ + ሰሜን ኮሪያ + ክዌት + ሊባኖስ + ሊቱዌኒያ + ላትቪያ + ሊቢያ + ሞሮኮ + ሞልዶቫ + ማከዶኒያ + ሞንጎሊያ + ማካዎ + ሞሪቴኒያ + ማልታ + ማሩሸስ + ሜክሲኮ + ማሌዢያ + ናሚቢያ + ኒው ካሌዶኒያ + ናይጄሪያ + ኔዘርላንድ + ኖርዌ + ኔፓል + ኒው ዚላንድ + ፔሩ + የፈረንሳይ ፖሊኔዢያ + ፓፑዋ ኒው ጊኒ + ፖላንድ + ፖርታ ሪኮ + ሮሜኒያ + ራሺያ + ሳውድአረቢያ + ሱዳን + ስዊድን + ሲንጋፖር + ስሎቬኒያ + ስሎቫኪያ + ሴኔጋል + ሱማሌ + ሲሪያ + ቻድ + የፈረንሳይ ደቡባዊ ግዛቶች + ታይላንድ + ታጃኪስታን + ምስራቅ ቲሞር + ቱኒዚያ + ቱርክ + ትሪኒዳድ እና ቶባጎ + ታንዛኒያ + ዩጋንዳ + አሜሪካ + ዩዝበኪስታን + ቬንዙዌላ + የእንግሊዝ ድንግል ደሴቶች + የአሜሪካ ቨርጂን ደሴቶች + የመን + ደቡብ አፍሪካ + ዛምቢያ + + + + [\u135F ፡ ፣-፧ ። ፠ ፨ ᎐-᎙ ፲-፼ ፩-፱ ሀ-ሏ ⶀ ሐ-ሟ ᎀ-ᎃ ⶁ ሠ-ሯ ⶂ ሰ-ሷ ⶃ ሸ-ሿ ⶄ ቀ-ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ቧ ᎄ-ᎇ ⶅ ቨ-ቷ ⶆ ቸ-ቿ ⶇ ኀ-ኈ ኊ-ኍ ነ-ኗ ⶈ ኘ-ኟ ⶉ አ-ኧ ⶊ ከ-ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዖ ዘ-ዟ ⶋ ዠ-ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ገ-ጐ ጒ-ጕ ጘ-ጟ ⶓ-ⶖ ጠ-ጧ ⶏ ጨ-ጯ ⶐ ጰ-ጷ ⶑ ጸ-ፏ ᎈ-ᎋ ፐ-ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ] + [ሀ ለ ⶀ መ ᎀ ᎁ ᎃ ⶁ ረ ⶂ ሰ ሸ ⶄ ቈ ቐ ቘ ᎄ ᎅ ᎇ ⶅ ቨ ⶆ ቸ ኀ ኈ ነ ኘ ⶉ ⶊ ከ ኰ ዀ ወ ዐ ⶋ ዠ ደ ⶌ ዸ ጀ ⶎ ጐ ጘ ⶓ ⶕ ⶖ ⶏ ጨ ⶐ ⶑ ጸ ፈ ᎈ ᎉ ᎋ ፐ ᎍ ᎎ ᎏ ፘ ⶠ ⶢ ⶣ ⶤ ⶦ ⶨ ⶩ ⶫ ⶬ ⶮ ⶰ ⶱ ⶳ ⶴ ⶶ ⶸ ⶹ ⶻ ⶼ ⶾ ⷀ ⷁ ⷃ ⷄ ⷆ ⷈ ⷉ ⷋ ⷌ ⷎ ⷐ ⷑ ⷓ ⷔ ⷖ ⷘ ⷙ ⷛ ⷜ ⷝ] + + + + + + + + EEEE፡ dd MMMM ዮም y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + + + + ጃንዩ + ፌብሩ + ማርች + ኤፕረ + ሜይ + ጁን + ጁላይ + ኦገስ + ሴፕቴ + ኦክተ + ኖቬም + ዲሴም + + + ጃንዩወሪ + ፌብሩወሪ + ማርች + ኤፕረል + ሜይ + ጁን + ጁላይ + ኦገስት + ሴፕቴምበር + ኦክተውበር + ኖቬምበር + ዲሴምበር + + + + + + + + + + + + + + + + + + + + + + + ሰ/ዓ + ሰኖ + ታላሸ + ኣረር + ከሚሽ + ጅምዓ + ሰ/ን + + + ሰንበት ዓባይ + ሰኖ + ታላሸኖ + ኣረርባዓ + ከሚሽ + ጅምዓት + ሰንበት ንኢሽ + + + + + + + + + + + + + + + + + + ቀደም ሰርምዕል + ሓቆ ስርምዕል + + + + + + ዓ/ዓ + ዓ/ም + + + + + + EEEE፡ dd MMMM ዮም y G + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + latn + + latn + ethi + + + + + ¤#,##0.00 + + + + + + የብራዚል ሪል + + + የቻይና ዩአን ረንሚንቢ + + + Nfk + + + የኢትዮጵያ ብር + + + አውሮ + + + የእንግሊዝ ፓውንድ ስተርሊንግ + + + የሕንድ ሩፒ + + + የጃፓን የን + + + የራሻ ሩብል + + + የአሜሪካን ዶላር + + + + + diff --git a/library/Zend/Locale/Data/tig_ER.xml b/library/Zend/Locale/Data/tig_ER.xml new file mode 100755 index 000000000..3efbdde78 --- /dev/null +++ b/library/Zend/Locale/Data/tig_ER.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/tn.xml b/library/Zend/Locale/Data/tn.xml new file mode 100755 index 000000000..c534ab445 --- /dev/null +++ b/library/Zend/Locale/Data/tn.xml @@ -0,0 +1,207 @@ + + + + + + + + + + + + Seburu + Amhariki + Arabic + Azerbaijani + Belarusian + Bulgarian + Bengali + SeBosnia + Catalan + Se Czeck + Welsh + Danish + German + SeGerika + Sekgoa + Esperanto + Spanish + Estonian + Basque + Mo/SePerishia + Se-Finland + Tagalog + Faroese + Se Fora + Frisian + Irish + Scots Gaelic + Galician + Gujarati + Se heberu + Hindi + Croatian + Hungarian + Interlingua + Indonesian + Icelandic + Se Italiano + Se Japan + Javanese + Mo/SeJojia + Kannada + Se Korea + Latin + Lithuanian + Latvian + Macedonian + Malayalam + Marathi + Malay + Maltese + Nepali + Se Dutch + Puo ya kwa Norway + Occitan + Punjabi + Se Poland + Se Potoketsi + Se Roma + Russian + Slovak + Slovenian + Albanian + Serbian + Mo/SeSundane + Swedish + Swahili + Tamil + Telugu + Thai + Tigrinya + Klingon + Setswana + Turkish + Ukrainian + Urdu + Uzbek + Vietnamese + IsiXhosa + IsiZulu + + + + [a b d e ê f g h i j k l m n o ô p r s t u w y] + [c q v x z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + Fer + Tlh + Mop + Mor + Mot + See + Phu + Pha + Lwe + Dip + Ngw + Sed + + + Ferikgong + Tlhakole + Mopitlo + Moranang + Motsheganang + Seetebosigo + Phukwi + Phatwe + Lwetse + Diphalane + Ngwanatsele + Sedimonthole + + + + + + + Tsh + Mos + Bed + Rar + Ne + Tla + Mat + + + Tshipi + Mosopulogo + Labobedi + Laboraro + Labone + Labotlhano + Matlhatso + + + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + R + + + + + diff --git a/library/Zend/Locale/Data/tn_BW.xml b/library/Zend/Locale/Data/tn_BW.xml new file mode 100755 index 000000000..b5c1367b9 --- /dev/null +++ b/library/Zend/Locale/Data/tn_BW.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + P + + + + diff --git a/library/Zend/Locale/Data/tn_ZA.xml b/library/Zend/Locale/Data/tn_ZA.xml new file mode 100755 index 000000000..32f5149b2 --- /dev/null +++ b/library/Zend/Locale/Data/tn_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/to.xml b/library/Zend/Locale/Data/to.xml new file mode 100755 index 000000000..ffb9fe579 --- /dev/null +++ b/library/Zend/Locale/Data/to.xml @@ -0,0 +1,2943 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + lea fakaʻafāla + lea fakaʻapakasia + lea fakaʻatisē + lea fakaʻakoli + lea fakaʻatangimē + lea fakaʻatikē + lea fakaʻavesitani + lea fakaʻafilikana + lea fakaʻakihemi + lea fakaʻainu + lea fakaʻakani + lea fakaʻakatia + lea fakaʻaleuti + lea fakaʻalitai-tonga + lea fakaʻameliki + lea fakaʻalakoni + lea fakaʻangika + lea fakaʻalepea + lea fakaʻalepea (māmani) + lea fakaʻalāmiti + lea fakamapuse + lea fakaʻalapaho + lea fakaʻalauaki + lea fakaʻasamia + lea fakaʻasu + lea fakaʻasitūlia + lea fakaʻavaliki + lea fakaʻauati + lea ʻaimala + lea fakaʻasapaisani + lea fakapasikili + lea fakapalusi + lea fakapali + lea fakapasaʻa + lea fakapamuni + lea fakakomala + lea fakapelalusi + lea fakapesa + lea fakapēmipa + lea fakapena + lea fakapafuti + lea fakapulukalia + lea fakaposipuli + lea fakapisilama + lea fakapikoli + lea fakapini + lea fakakome + lea fakasikesikā + lea fakapamipala + lea fakapengikali + lea fakatipeti + lea fakapeletoni + lea fakapalai + lea fakapōto + lea fakaposinia + lea fakaʻakōse + lea puliati + lea fakapukisi + lea fakapulu + lea fakapilini + lea fakametūmipa + lea fakakatalani + lea fakakato + lea fakakalipa + lea fakakaiuka + lea fakaʻatisami + lea fakasese + lea fakasepuano + lea fakakika + lea fakakamolo + lea fakatūke + lea fakamalī + lea fakasinuki-takote + lea fakasokitau + lea fakasipeuiani + lea fakaselokī + lea fakaseiene + lea fakakūtisi-solani + lea fakakōsika + lea fakakopitika + lea fakakelī + lea fakatoake-kilimea + lea fakaseki + lea fakakasiupia + lea fakasilavia fakasiasi + lea fakasuvasa + lea fakauēlesi + lea fakatenimaʻake + lea fakatakota + lea fakatalakuā + lea fakataita + lea fakasiamane + lea fakasiamane-ʻaositulia + lea fakasiamane-suisisālani ma'olunga + lea fakatelauale + lea fakasilave + lea fakatōkelipi + lea fakatingikā + lea fakatisāma + lea fakatokili + lea fakasōpia-hifo + lea fakatuala + lea tivehi + lea fakaiola-fonī + lea fakatiula + lea fakaputeni + lea fakaʻemipū + lea fakaʻeue + lea ʻefiki + lea fakaʻisipitemuʻa + lea fakaʻekaiuki + lea fakakalisi + lea fakapālangi + lea fakapālangi-ʻaositelēlia + lea fakapālangi-kānata + lea fakapilitānia + lea fakapilitānia + lea fakapālangi-ʻamelika + lea fakaʻesipulanito + lea fakasīpenisi + lea fakasipēnisi lātini-ʻamelika + lea fakasipēnisi-'iulope + lea fakasipēnisi-mekisikou + lea fakaʻesitōnia + lea fakapāsiki + lea fakaʻeuōnito + lea fakapēsia + lea fakafangi + lea fakafulā + lea fakafinilani + lea fakafilipaini + lea fakafisi + lea fakafaloe + lea fakafōngi + lea fakafalanisē + lea fakafalanisē-kānata + lea fakafalanisē-suisisālani + lea fakafilisia tokelau + lea fakafilisia hahake + lea fakafulilāni + lea fakafilisia hihifo + lea fakaʻaelani + lea fakakā + lea fakakaio + lea fakakapaia + lea fakakaeliki + lea fakasiʻisi + lea fakakilipasi + lea fakakalisia + lea fakakualani + lea fakakonitī + lea fakakolonitalo + lea fakakotika + lea fakakēpo + lea fakakalisimuʻa + lea fakasiamane-suisisālani + lea fakakutalati + lea fakakusī + lea fakamangikī + lea fakaʻuīsini + lea fakahausa + lea fakahaita + lea fakahauaiʻi + lea fakahepelū + lea fakahinitī + lea fakahilikainoni + lea fakahitite + lea fakamōngi + lea fakahili-motu + lea fakakuloisia + lea fakasōpia-hake + lea fakahaiti + lea fakahungakalia + lea fakahupa + lea fakaʻāmenia + lea fakahelelo + lea fakavahaʻalea + lea fakaʻipani + lea fakaʻipipio + lea fakaʻinitōnesia + lea fakaʻikipō + lea fakasisiuani-ī + lea fakaʻinupiaki + lea fakaʻiloko + lea fakaʻingusi + lea fakaʻaisilani + lea fakaʻītali + lea fakaʻinuketituti + lea fakasiapani + lea fakanikōmipa + lea fakamasame + lea fakaʻiuteo-pēsia + lea fakaʻiuteo-ʻalepea + lea fakasava + lea fakaseōsia + lea fakakala-kalipaki + lea fakakapile + lea fakakasini + lea fakasisū + lea fakakamipa + lea fakakapālitia + lea fakatiapi + lea fakamakōnite + lea fakakapuvelitianu + lea fakakolo + lea fakakongikō + lea fakakāsi + lea fakakoila-sīni + lea fakakikuiu + lea fakakuaniama + lea fakakasaki + lea fakakako + lea fakakalaʻalisuti + lea fakakalenisini + lea fakakemipōtia + lea fakakimipūnitu + lea fakakanata + lea fakakōlea + lea fakakonikanī + lea fakakosilae + lea fakakepele + lea fakakanuli + lea fakakalate-palakili + lea fakakalelia + lea fakakuluki + lea fakakesimia + lea fakasiamipala + lea fakapafia + lea fakakolongia + lea fakakētisi + lea fakakumiki + lea fakakutenai + lea fakakomi + lea fakakoniuali + lea fakakiataisi + lea fakalatina + lea fakalatino + lea fakalangi + lea lanita + lea fakalamipā + lea fakalakisimipeki + lea fakalesikia + lea fakakanita + lea fakalimipūliki + lea lingikala + lea fakalau + lea fakamongikō + lea fakalosi + lea fakalituania + lea fakalupa-katanga + lea fakalupa-lulua + lea fakaluiseno + lea fakalunitā + lea fakaluo + lea fakamiso + lea fakaluīa + lea fakalativia + lea fakamatula + lea fakamafa + lea fakamakahi + lea fakamaitili + lea fakamakasali + lea fakamanitīngiko + lea fakamasai + lea fakamokisiā + lea fakamanetali + lea fakamenetī + lea fakamelu + lea fakamolisieni + lea fakamalakasi + lea fakamakūa-meʻeto + lea fakameta + lea fakamāsolo + lea fakamauli + lea fakamikemaki + lea fakaminangikapau + lea fakamasitōnia + lea fakaʻinitia-malāialami + lea fakamongokōlia + lea fakamanisū + lea fakamanipuli + lea fakamohauki + lea fakamosi + lea fakamalati + lea fakamalei + lea fakamolota + lea fakamunitangi + lea tuifio + lea fakakileki + lea fakamilanitēsi + lea fakamaliwali + lea fakapema + lea fakamiene + lea fakaʻelisia + lea fakanaulu + lea fakanapoletano + lea fakanama + lea fakanouaē-pokimali + lea netepele fakatokelau + lea fakasiamane-hifo + lea fakanepali + lea fakanewali + lea fakanetongikā + lea fakaniasi + lea fakaniuē + lea fakahōlani + lea fakahōlani-pelesiume + lea fakakuasio + lea fakanoauē-ninosiki + lea fakangiemipōni + lea fakanouē + lea fakanokai + lea fakanikō + lea fakanetepele-tonga + lea sofo fakatokelau + lea fakanueli + lea fakanavaho + lea sua + lea fakaniamiuesi + lea fakanianikole + lea fakaniolo + lea fakanesima + lea fakaʻokitane + lea fakaʻosipiuā + lea fakaʻolomo + lea fakaʻinitia-ʻolāea + lea ʻosetiki + lea fakaʻosēse + lea fakapūnusapi + lea fakapangasina + lea fakapālavi + lea fakapamipanga + lea fakapapiamēnito + lea fakapalau + lea fakapēsia motuʻa + lea fakafoinikia + lea fakapāli + lea fakapōlani + lea fakaponapē + lea fakapasitō + lea fakapotukali + lea fakapotukali-palāsili + lea fakapotukali-ʻeulope + lea fakakuetisa + lea fakalasasitani + lea fakalapanui + lea fakalalotonga + lea fakalaito-lomēnia + lea luaniti + lea fakalōmenia + lea fakamolitāvia + lea fakalomipō + lea fakalomani + lea fakalūsia + lea fakaʻalomania + lea fakaluanita + lea fakaluā + lea fakasanisukuliti + lea fakasanitaue + lea fakasaka + lea fakasamalitani-ʻalāmiti + lea fakasamipulu + lea fakasasaki + lea fakasanitali + lea fakasangu + lea fakasaletīnia + lea fakasisīlia + lea fakasikotilani + lea fakasīniti + lea sami fakatokelau + lea fakaseneka + lea fakasena + lea fakaselikupi + lea fakakoilapolo-seni + lea sango + lea fakaʻaelani-motuʻa + lea sēpia-kuloisia + lea fakataselihiti + lea fakasiani + lea fakasingihala + lea fakasitamo + lea fakasolāvaki + lea fakasolovenia + lea fakahaʻamoa + lea fakasami-tonga + lea fakasami-lule + lea fakasami-ʻinali + lea fakasami-sikolita + lea sona + lea fakasoninekē + lea fakasomali + lea fakaʻalapēnia + lea fakasēpia + lea fakasuranane-tongikō + lea fakasēlēle + lea fakasuasilani + lea fakasaho + lea sofo fakatonga + lea fakasunitā + lea fakasukuma + lea fakasusū + lea fakasuēteni + lea fakasuahili + lea fakakomolo + lea fakakongo suahilī + lea fakasailiakimuʻa + lea fakasuliāiā + lea fakatamili + lea fakaʻinitia-teluku + lea fakatimenē + lea fakateso + lea fakateleno + lea fakatētamu + lea fakatāsiki + lea fakataileni + lea fakatikilinia + lea fakatikilīnia + lea fakativi + lea fakatēkimeni + lea fakatokelau + lea fakatekaloka + lea fakatilingoni + lea fakalingikīte + lea fakatamasieki + lea suana + lea fakatonga + lea fakaniasa-tonga + lea toki pisini + lea fakatoake + lea fakataloko + lea songa + lea fakatisīmisiani + lea fakatatale + lea fakatumepuka + lea fakatūvalu + lea fakatasauaki + lea fakatahiti + lea fakatuvīnia + lea fakatamasaiti ʻatilasi-loloto + lea fakaʻutimuliti + lea fakaʻuikūli + lea fakaʻūkaliti + lea fakaʻiukālia + lea fakaʻumipūnitu + lea taʻeʻiloa + lea fakaʻetiu + lea fakaʻusipeki + lea fakavai + lea fakavenitā + lea fakavietinemi + lea fakavolapiki + lea fakavotiki + lea fakavūniso + lea fakaʻualonia + lea fakaʻualiseli + lea fakaʻuolaita + lea fakaʻualai + lea fakaʻuasiō + lea fakaʻuolofo + lea fakakalimiki + lea fakatōsa + lea fakasoka + lea fakaʻiao + lea fakaʻiapi + lea fakaʻiangipeni + lea fakaʻiēmipa + lea fakaītisi + lea fakaʻiōlupa + lea kenitēnisi + lea fakasuangi + lea fakasapoteki + lea fakasenaka + lea fakatamasaiti moloko + lea fakasiaina + lea fakasiaina-fakafaingofua + lea fakasiaina-tukufakaholo + lea fakasulu + lea fakasuni + ʻikai ha lea + lea fakasāsā + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Māmani + ʻAfilika + ʻAmelika tokelau + ʻAmelika tonga + ʻOsēnia + ʻAfilika fakahihifo + ʻAmelika lotoloto + ʻAfilika fakahahake + ʻAfilika fakatokelau + ʻAfilika lotoloto + ʻAfilika fakatonga + Ongo ʻAmelika + ʻAmelika fakatokelau + Kalipiane + ʻĒsia fakahahake + ʻĒsia fakatonga + ʻĒsia fakatongahahake + ʻIulope fakatonga + ʻAositelēlēsia + Melanisia + Potu fonua Mikolonisia + Polinīsia + ʻĒsia + ʻĒsia lotoloto + ʻĒsia fakahihifo + ʻIulope + ʻIulope fakahahake + ʻIulope fakatokelau + ʻIulope fakahihifo + ʻAmelika fakalatina + Motu ʻAsenisini + ʻEnitola + ʻAlepea Fakatahataha + ʻAfikānisitani + Anitikua mo Palaputa + Anikuila + ʻAlipania + ʻĀminia + Netaleni ʻEnitilisi + ʻEngikola + ʻAnitātika + ʻAsenitina + Haʻamoa ʻAmelika + ʻAositulia + ʻAositelēlia + ʻAlupa + ʻOtumotu ʻAlani + ʻAsapaisani + Posinia mo Hesikōvina + Pāpeitosi + Pengilātesi + Pelesiume + Pekano Faso + Pulukalia + Paleini + Puluniti + Penini + Sā Patēlemi + Pēmuta + Pulunei + Polīvia + Kalipiane fakahōlani + Palāsili + Pahama + Pūtani + Motu Puveti + Potisiuana + Pelalusi + Pelise + Kānata + ʻOtumotu Koko + Kongo - Kinisasa + Kongo (LTK) + Lipapilika ʻAfilika Lotoloto + Kongo - Palasavila + Lipapilika Kongo + Suisilani + Matāfonua ʻAivili + ʻOtumotu Kuki + Sili + Kemaluni + Siaina + Kolomipia + Motu Kilipatoni + Kosita Lika + Kiupa + Muiʻi Vete + Kulasao + Motu Kilisimasi + Saipalesi + Lipapilika Seki + Siamane + Tieko Kāsia + Siputi + Tenimaʻake + Tominika + Lipapilika Tominika + ʻAisilia + Siuta mo Melila + ʻEkuetoa + ʻEsitōnia + ʻIsipite + Sahala fakahihifo + ʻElitulia + Sipeini + ʻĪtiōpia + ʻIulope fakatahataha + Finilani + Fisi + ʻOtumotu Fokulani + Mikolonisia + ʻOtumotu Faloe + Falanisē + Kaponi + Pilitānia + Pilitānia + Kelenatā + Seōsia + Kuiana fakafalanisē + Kuenisī + Kana + Sipalālitā + Kulinilani + Kamipia + Kini + Kuatalupe + ʻEkueta Kini + Kalisi + ʻOtumotu Seōsia-tonga mo Saniuisi-tonga + Kuatamala + Kuamu + Kini-Pisau + Kuiana + Hongi Kongi SAR Siaina + Hongi Kongi + ʻOtumotu Heati mo Makitonali + Honitulasi + Kuloisia + Haiti + Hungakalia + ʻOtumotu Kaneli + ʻInitonēsia + ʻAealani + ʻIsileli + Motu Mani + ʻInitia + Potu fonua moana ʻInitia fakapilitānia + ʻIulaaki + ʻIulaani + ʻAisilani + ʻĪtali + Selusī + Samaika + Soatane + Siapani + Keniā + Kīkisitani + Kemipōtia + Kilipasi + Komolosi + Sā Kitisi mo Nevisi + Kōlea tokelau + Kōlea tonga + Kueiti + ʻOtumotu Keimeni + Kasakitani + Lau + Lepanoni + Sā Lūsia + Lekitenisaini + Sīlangikā + Laipelia + Lesoto + Lifiuania + Lakisimipeki + Lativia + Lipia + Moloko + Monako + Molotova + Monitenikalo + Sā Mātini (fakafalanisē) + Matakasika + ʻOtumotu Māsolo + Masetōnia + Masetōnia (FYROM) + Māli + Pema + Mongokōlia + Makau SAR Siaina + Makau + ʻOtumotu Maliana tokelau + Mateniki + Maulitenia + Moʻungaselati + Malita + Maulitiusi + Malativisi + Malaui + Mekisikou + Malēsia + Mosēmipiki + Namipia + Niu Kaletōnia + Nisia + Motu Nōfoliki + Naisilia + Nikalakua + Hōlani + Noauē + Nepali + Naulu + Niuē + Nuʻusila + ʻOmani + Panamā + Pelū + Polinisia fakafalanisē + Papuaniukini + Filipaini + Pākisitani + Polani + Sā Piea mo Mikeloni + ʻOtumotu Pitikeni + Pueto Liko + Potu Palesitaine + Palesitaine + Potukali + Palau + Palakuei + Katā + ʻOsēnia mamaʻo + Liʻiunioni + Lomēnia + Sēpia + Lūsia + Luanitā + Saute ʻAlepea + ʻOtumotu Solomone + ʻOtumotu Seiseli + Sūteni + Suēteni + Singapoa + Sā Helena + Silōvenia + Sivolopāti mo Sani Maieni + Silōvakia + Siela Leone + Sā Malino + Senekalo + Sōmalia + Sulinami + Sūtani fakatonga + Sao Tomē mo Pilinisipe + ʻEle Salavatoa + Sā Mātini (fakahōlani) + Sīlia + Suasilani + Tulisiteni ta Kunuha + ʻOtumotu Tuki mo Kaikosi + Sāti + Potu fonua tonga fakafalanisē + Toko + Taileni + Tasikitani + Tokelau + Timoa Hahake + Tekimenisitani + Tunīsia + Tonga + Toake + Tilinitati mo Topako + Tūvalu + Taiuani + Tenisānia + ʻIukuleini + ʻIukanitā + ʻOtumotu siʻi ʻo ʻAmelika + Puleʻanga fakatahataha ʻAmelika + ʻAmelika + ʻUlukuei + ʻUsipekitani + Kolo Vatikani + Sā Viniseni mo Kulenatini + Venesuela + ʻOtumotu Vilikini fakapilitānia + ʻOtumotu Vilikini fakaʻamelika + Vietinemi + Vanuatu + ʻUvea mo Futuna + Haʻamoa + Kōsovo + Iemeni + Meioti + ʻAfilika tonga + Semipia + Simipapuei + Potu fonua taʻeʻiloa pe hala + + + tohi māhina + tohi hokohoko + paʻanga + fika + + + fika fakaʻalepea + fika fakaʻalepea fakalahi + fika fakaʻāmenia + fika fakaʻāmenia fakalalo + fika fakapali + fika fakapengikali + haninimalahi + fika fakapalami + fakaputa + fika fakakakema + fika fakakami + fakasiaina + fakakopitika + fakataniki + fika fakatevanākalī + tikisinale + ʻunikōti + fakaʻeulope + fika fakaʻītiōpia + fakaʻītiōpia + fakaʻītiōpia-ʻamete-ʻalemi + fika laulahi + siaine fakafaingofua + fika fakaseōsia + fakakelekolia + fika fakakalisi + fika fakakalisi fakalalo + fika fakakutalati + fika fakakūmuki + fika fakasiaina + fika fakasiaina fakafaingofua + fika fakasiaina fakafaingofua fakapaʻanga + fika fakasiaina tukufakaholo + fika fakasiaina tukufakaholo fakapaʻanga + fika fakahepelū + fakahepelū + fakaʻinitia + fakamohameti + fakamohameti-sivile + fakamohameti-ʻasimāhina + fakamohameti -fakatēpile + fakamohameti-ʻumalakula + faka-iso8601 + fakasiapani + fika fakasava + fika fakasiapani + fika fakasiapani fakapaʻanga + fika fakakaialī + fika fakakamipōtia + fika fakakanata + fika fakatai-tami-hola + fika fakatai-tami-tami + fika fakalau + fika fakalatina + fika fakalepasā + fika fakalimipū + fika fakamalāialami + fika fakamongokōlia + fika fakametei-maieki + fika fakapema + fika fakapema-siani + fika fakanikō + fika fakaʻolisiki + fika fakaʻolia + fika fakaʻosimania + fakapēsia + fika telefoni + piniini + fakafoʻou + fakalēpupelika siaina + fika fakaloma + fika fakaloma fakalalo + fika fakasaulasitā + fakakumi ʻi hono anga lahi + konisinanite ʻuluaki + fika fakasalata + fika fakasola-somipenga + fakasīpinga + tongi + fika fakasunitā + fika fakatakili + fika fakatai-lue foʻou + fika fakatamila tukufakaholo + fika fakatamila + fika fakateluku + fika fakatailani + fika fakatipeti + tukufakaholo + tongi tefitoʻi + fika fakavai + sūini + + + fakamita + fakapilitānia + fakaʻamelika + + + Lea: {0} + Tohinima Fakaha: {0} + Feituʻu: {0} + + + + [a á ā e é ē f h i í ī k l m n {ng} o ó ō p s t u ú ū v ʻ] + [à ă â å ä æ b c ç d è ĕ ê ë g ì ĭ î ï j ñ ò ŏ ô ö ø œ q r ù ŭ û ü w x y ÿ z] + [A E F H I K L M N {NG} O P S T U V ʻ] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/yy GGGGG + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + d + d E + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + d/M + E, d/M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y G + M-y + d-M-y + E d/M/y + MM-y + MMM y + d MMM y + E d MMM y + MMMM y + y QQQ + y QQQQ + y G + y/MM GGGGG + dd/MM/y GGGGG + E dd-MM-y GGGGG + MMM y G + d MMM y G + E d MMM y G + y QQQ G + y QQQQ G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M - d/M + d/M - d/M + + + E d/M - E d/M + E d/M - E d/M + + + LLL–LLL + + + d-d MMM + d MMM - d MMM + + + E d MMM - E d MMM + E d MMM - E d MMM + + + y–y G + + + M/y - M/y GGGGG + M/y - M/y GGGGG + + + d/M/y - d/M/y GGGGG + d/M/y - d/M/y GGGGG + d/M/y - d/M/y GGGGG + + + E d/M/y - E d/M/y GGGGG + E d/M/y - E d/M/y GGGGG + E d/M/y - E d/M/y GGGGG + + + MMM-MMM y G + MMM y - MMM y G + + + d-d MMM y G + d MMM - d MMM y G + d MMM y - d MMM y G + + + E d MMM - E d MMM y G + E d MMM - E d MMM y G + E d MMM y - E d MMM y G + + + MMMM - MMMM y G + MMMM y - MMMM y G + + + + + + + + + Sān + Fēp + Maʻa + ʻEpe + + Sun + Siu + ʻAok + Sep + ʻOka + Nōv + Tīs + + + S + F + M + E + M + S + S + A + S + O + N + T + + + Sānuali + Fēpueli + Maʻasi + ʻEpeleli + + Sune + Siulai + ʻAokosi + Sepitema + ʻOkatopa + Nōvema + Tīsema + + + + + Sān + Fēp + Maʻa + ʻEpe + + Sun + Siu + ʻAok + Sep + ʻOka + Nōv + Tīs + + + S + F + M + E + M + S + S + A + S + O + N + T + + + Sānuali + Fēpueli + Maʻasi + ʻEpeleli + + Sune + Siulai + ʻAokosi + Sepitema + ʻOkatopa + Nōvema + Tīsema + + + + + + + Sāp + Mōn + Tūs + Pul + Tuʻa + Fal + Tok + + + S + M + T + P + T + F + T + + + Sāp + Mōn + Tus + Pul + Tuʻa + Fal + Tok + + + Sāpate + Mōnite + Tūsite + Pulelulu + Tuʻapulelulu + Falaite + Tokonaki + + + + + Sāp + Mōn + Tūs + Pul + Tuʻa + Fal + Tok + + + S + M + T + P + T + F + T + + + Sāp + Mōn + Tus + Pul + Tuʻa + Fal + Tok + + + Sāpate + Mōnite + Tūsite + Pulelulu + Tuʻapulelulu + Falaite + Tokonaki + + + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + kuata ʻuluaki + kuata ua + kuata tolu + kuata fā + + + + + K1 + K2 + K3 + K4 + + + 1 + 2 + 3 + 4 + + + kuata 1 + kuata 2 + kuata 3 + kuata 4 + + + + + + + AM + PM + + + AM + PM + + + + + + ki muʻa + KM + taʻu ʻo Sīsū + TS + + + KM + TS + + + KāMā + KM + TāSā + TS + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + HH:mm:ss z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1}, {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM y G + E d MMM y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + d MMMM + E d MMMM + mm:ss + y + M/y + d/M/y + E d/M/y + MM-y + MMM y + d MMM y + E d MMM y + MMMM y + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M - d/M + d/M - d/M + + + E d/M - E d/M + E d/M - E d/M + + + LLL–LLL + + + d-d MMM + d MMM - d MMM + + + E d MMM - E d MMM + E d MMM - E d MMM + + + y–y + + + M/y - M/y + M/y - M/y + + + d/M/y - d/M/y + d/M/y - d/M/y + d/M/y - d/M/y + + + E d/M/y - E d/M/y + E d/M/y - E d/M/y + E d/M/y - E d/M/y + + + MMM-MMM y + MMM y - MMM y + + + d-d MMM y + d MMM - d MMM y + d MMM y - d MMM y + + + E d MMM - E d MMM y + E d MMM - E d MMM y + E d MMM y - E d MMM y + + + MMMM - MMMM y + MMMM y - MMMM y + + + + + + + + kuonga + + + taʻu + taʻu kuoʻosi + taʻu⸍ni + taʻu kahaʻu + + ʻi he taʻu ʻe {0} + + + taʻu ʻe {0} kuo hili + + + + māhina + māhina kuoʻosi + māhina⸍ni + māhina kahaʻu + + ʻi he māhina ʻe {0} + + + māhina ʻe {0} kuoʻosi + + + + uike + uike kuoʻosi + uike⸍ni + uike kahaʻu + + ʻi he uike ʻe {0} + + + uike ʻe {0} kuoʻosi + + + + ʻaho + ʻaneheafi + ʻaneafi + ʻaho⸍ni + ʻapongipongi + ʻahepongipongi + + ʻi he ʻaho ʻe {0} + + + ʻaho ʻe {0} kuoʻosi + + + + ʻaho ʻo e uike + + + Sāpate kuoʻosi + Sāpate⸍ni + Sāpate kahaʻu + + + Mōnite kuoʻosi + Mōnite⸍ni + Mōnite kahaʻu + + + Tūsite kuoʻosi + Tūsite⸍ni + Tūsite kahaʻu + + + Pulelulu kuoʻosi + Pulelulu⸍ni + Pulelulu kahaʻu + + + Tuʻapulelulu kuoʻosi + Tuʻapulelulu⸍ni + Tuʻapulelulu kahaʻu + + + Falaite kuoʻosi + Falaite⸍ni + Falaite kahaʻu + + + Tokonaki kuoʻosi + Tokonaki⸍ni + Tokonaki kahaʻu + + + AM/PM + + + houa + + ʻi he houa ʻe {0} + + + houa ʻe {0} kuoʻosi + + + + miniti + + ʻi he miniti ʻe {0} + + + miniti ʻe {0} kuoʻosi + + + + sekoni + taimiʻni + + ʻi he sekoni ʻe {0} + + + sekoni ʻe {0} kuoʻosi + + + + taimi fakavahe + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Taimi {0} + {0} (+1) + {0} (+0) + {1} ({0}) + + Halaʻata + + + Dumont d’Urville + + + Pangopango + + + Atelaite + + + Melipoane + + + Senē + + + Pelisipane + + + St. Barthelemy + + + Houa Palāsili (Rio Branco) + + + Houa Palāsili (Campo Grande) + + + Houa Palāsili (Sao Paulo) + + + Atikokan + + + St. John’s + + + Lalotonga + + + Lapanui + + + Asmara + + + Fisi + + + Tūke + + + Ponapē + + + Kosilae + + + Faroe + + + Palesi + + + Lonitoni + + + ʻAtenisi + + + Kuami + + + Selūsalema + + + Kolkata + + + Loma + + + Talava + + + St. Kitts + + + St. Lucia + + + Kathmandu + + + Naulu + + + Niuē + + + ʻAokalani + + + Tahisi + + + St. Helena + + + Lower Prince's Quarter + + + Houa Puleʻanga fakataha ʻAmelika (Honolulu) + + + Houa Puleʻanga fakataha ʻAmelika (Anchorage) + + + Houa Puleʻanga fakataha ʻAmelika (Los Angeles) + + + Houa Puleʻanga fakataha ʻAmelika (Phoenix) + + + Houa Puleʻanga fakataha ʻAmelika (Denver) + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Houa Puleʻanga fakataha ʻAmelika (Chicago) + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Houa Puleʻanga fakataha ʻAmelika (Indianapolis) + + + Vevay, Indiana + + + Monticello, Kentucky + + + Houa Puleʻanga fakataha ʻAmelika (New York) + + + Vatikani + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + ʻUvea + + + + houa fakaʻafelika-loto + + + + + houa fakaʻafelika-hahake + + + + + houa fakaʻafelika-tonga + + + + + houa fakaʻafelika-hihifo + houa fakaʻafelika-hihifo fakasīpinga + houa fakaʻafelika-hihifo fakamaama + + + + + houa fakaʻamelika-tokelau loto + houa fakaʻamelika-tokelau loto fakasīpinga + houa fakaʻamelika-tokelau loto fakamaama + + + + + houa fakaʻamelika-tokelau hahake + houa fakaʻamelika-tokelau hahake fakasīpinga + houa fakaʻamelika-tokelau hahake fakamaama + + + + + houa fakaʻamelika-tokelau moʻunga + houa fakaʻamelika-tokelau moʻunga fakasīpinga + houa fakaʻamelika-tokelau moʻunga fakamaama + + + + + houa fakaʻamelika-tokelau pasifika + houa fakaʻamelika-tokelau pasifika fakasīpinga + houa fakaʻamelika-tokelau pasifika fakamaama + + + + + houa fakaʻalepea + houa fakaʻalepea fakasīpinga + houa fakaʻalepea fakamaama + + + + + houa fakaʻamelika-tokelau ʻatalanitiki + houa fakaʻamelika-tokelau ʻatalanitiki fakasīpinga + houa fakaʻamelika-tokelau ʻatalanitiki fakamaama + + + + + houa fakaʻaositelēlia-loto + houa fakaʻaositelēlia-loto fakasīpinga + houa fakaʻaositelēlia-loto fakamaama + + + + + houa fakaʻaositelēlia-loto-hihifo + houa fakaʻaositelēlia-loto-hihifo fakasīpinga + houa fakaʻaositelēlia-loto-hihifo fakamaama + + + + + houa fakaʻaositelēlia-hahake + houa fakaʻaositelēlia-hahake fakasīpinga + houa fakaʻaositelēlia-hahake fakamaama + + + + + houa fakaʻaositelēlia-hihifo + houa fakaʻaositelēlia-hihifo fakasīpinga + houa fakaʻaositelēlia-hihifo fakamaama + + + + + houa fakakamolo + + + + + houa fakasatihami + houa fakasatihami fakasīpinga + houa fakasatihami fakamaama + + + + + houa fakasiaina + houa fakasiaina fakasīpinga + houa fakasiaina fakamaama + + + + + houa fakamotukilisimasi + + + + + houa fakamotukokosi + + + + + houa fakaʻotumotukuki + houa fakaʻotumotukuki fakasīpinga + houa fakaʻotumotukuki fakamaama + + + + + houa fakalapanui + houa fakalapanui fakasīpinga + houa fakalapanui fakamaama + + + + + houa fakaʻeulope-loto + houa fakaʻeulope-loto fakasīpinga + houa fakaʻeulope-loto fakamaama + + + + + houa fakaʻeulope-hahake + houa fakaʻeulope-hahake fakasīpinga + houa fakaʻeulope-hahake fakamaama + + + + + houa fakaʻeulope-hihifo + houa fakaʻeulope-hihifo fakasīpinga + houa fakaʻeulope-hihifo fakamaama + + + + + houa fakafisi + houa fakafisi fakasīpinga + houa fakafisi fakamaama + + + + + houa fakaʻanetātikafalanisē + + + + + houa fakakalapakosi + + + + + houa fakakamipiē + + + + + houa fakakilipasi + + + + + houa fakakiliniuisi mālie + + + + + houa fakakuami + + + + + houa fakahauaʻi + houa fakahauaʻi fakasīpinga + houa fakahauaʻi fakamaama + + + + + houa fakaʻinitia + + + + + houa fakamoanaʻinitia + + + + + houa fakaʻinitosiaina + + + + + houa fakaʻinitonisia-loto + + + + + houa fakaʻinitonisia-hahake + + + + + houa fakaʻinitonisia-hihifo + + + + + houa fakaʻisileli + houa fakaʻisileli fakasīpinga + houa fakaʻisileli fakamaama + + + + + houa fakasiapani + houa fakasiapani fakasīpinga + houa fakasiapani fakamaama + + + + + houa fakakolea + houa fakakolea fakasīpinga + houa fakakolea fakamaama + + + + + houa fakakosilae + + + + + houa fakaʻotumotulaine + + + + + houa fakamotuʻeikihoue + houa fakamotuʻeikihoue fakasīpinga + houa fakamotuʻeikihoue fakamaama + + + + + houa fakamotumakuali + + + + + houa fakamākesasi + + + + + houa fakaʻotumotumasolo + + + + + houa fakamosikou + houa fakamosikou fakasīpinga + houa fakamosikou fakamaama + + + + + houa fakanaulu + + + + + houa fakakaletōniafoʻou + houa fakakaletōniafoʻou fakasīpinga + houa fakakaletōniafoʻou fakamaama + + + + + houa fakanuʻusila + houa fakanuʻusila fakasīpinga + houa fakanuʻusila fakamaama + + + + + houa fakaniuē + + + + + houa fakanōfōki + + + + + houa fakamalianatokelau + + + + + houa fakapalau + + + + + houa fakapapuaniukini + + + + + houa fakaʻotumotufoinikisi + + + + + houa fakapitikani + + + + + houa fakapōnapē + + + + + houa fakahaʻamoa + houa fakahaʻamoa fakasīpinga + houa fakahaʻamoa fakamaama + + + + + houa fakaʻotumotusolomone + + + + + houa fakasiosiatonga + + + + + houa fakatahisi + + + + + houa fakatokelau + + + + + houa fakatonga + houa fakatonga fakasīpinga + houa fakatonga lotohē + + + + + houa fakatūke + + + + + houa fakatūvalu + + + + + houa fakavanuatu + houa fakavanuatu fakasīpinga + houa fakavanuatu fakamaama + + + + + houa fakamotuueke + + + + + houa fakaʻuvea mo futuna + + + + + + + . + , + ; + % + + + - + E + × + + + TF + + + + + #,##0.### + + + + + 0 afe + 0 mano + 0 kilu + 0 miliona + 00 miliona + 000 miliona + 0 piliona + 00 piliona + 000 piliona + 0 tiliona + 00 tiliona + 000 tiliona + + + + + 0k + 00k + 000k + 0M + 00M + 000M + 0Ki + 00Ki + 000Ki + 0T + 00T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + ¤ #,##0.00 + + + {1} {0} + + + + Tongan Pa'anga + T$ + + + + {0}+ + {0}—{1} + + + + + + {0} ʻi he {1} + + + {0} g-force + + + miniti seakale ʻe {0} + + + sekoni siakale ʻe {0} + + + tikili seakale ʻe {0} + + + ʻeka ʻe {0} + + + hekitale ʻe {0} + + + fute sikuea ʻe {0} + + + kilomita sikuea ʻe {0} + + + mita sikuea ʻe {0} + + + maile sikuea ʻe {0} + + + ʻaho ʻe {0} + + + houa ʻe {0} + + + milisekoni ʻe {0} + + + miniti ʻe {0} + + + māhina ʻe {0} + + + sekoni ʻe {0} + + + uike ʻe {0} + + + taʻu ʻe {0} + + + senitimita ʻe {0} + + + fute ʻe {0} + + + ʻinisi ʻe {0} + + + kilomita ʻe {0} + + + taʻumaama ʻe {0} + + + mita ʻe {0} + + + maile ʻe {0} + + + milimita ʻe {0} + + + pikomita ʻe {0} + + + iate ʻe {0} + + + kalami ʻe {0} + + + kilokalami ʻe {0} + + + ʻaunisi ʻe {0} + + + pāuni ʻe {0} + + + hoosipaoa ʻe {0} + + + kilouate ʻe {0} + + + uate ʻe {0} + + + {0} hPa + + + ʻinisi ʻe {0} mēkuli + + + milipā ʻe {0} + + + kilomita he houa ʻe {0} + + + mita he sekoni ʻe {0} + + + maile he houa ʻe {0} + + + tikili selisiasi ʻe {0} + + + tikili felenihaiti ʻe {0} + + + kilomita kiupiki ʻe {0} + + + maile kiupiki ʻe {0} + + + lita ʻe {0} + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + ʻaho ʻe {0} + + + {0} h + + + {0} ms + + + {0} m + + + māhina ʻe {0} + + + {0} s + + + uike ʻe {0} + + + {0} t + + + {0} cm + + + {0} ft + + + {0} in + + + {0} km + + + {0} tm + + + {0} m + + + {0} mi + + + {0} mm + + + {0} pm + + + {0} yd + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0} km/h + + + {0} m/s + + + {0} mi/h + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + + {0}/{1} + + + {0} G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} ac + + + {0}ha + + + {0}ft² + + + {0}km² + + + {0}m² + + + {0} mi² + + + ʻaho ʻe {0} + + + {0}h + + + {0}ms + + + {0}m + + + {0}m + + + {0}s + + + uike ʻe {0} + + + {0}t + + + {0} cm + + + {0}ft + + + {0} in + + + {0}km + + + {0}tm + + + {0}m + + + {0} mi + + + {0}mm + + + {0}pm + + + {0} yd + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0}hp + + + {0}kW + + + {0}W + + + {0} hPa + + + {0} inHg + + + {0} mbar + + + {0}km/h + + + {0}m/s + + + {0} mi/h + + + {0}° + + + {0}°F + + + {0}km³ + + + {0}ma³ + + + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} mo {1} + {0} mo {1} + + + {0} {1} + {0} {1} + {0} mo e {1} + {0} mo e {1} + + + {0} {1} + {0} {1} + {0} mo e {1} + {0} mo e {1} + + + {0} {1} + {0} {1} + {0} mo e {1} + {0} mo e {1} + + + + + ʻio + ʻikai + + + + diff --git a/library/Zend/Locale/Data/to_TO.xml b/library/Zend/Locale/Data/to_TO.xml new file mode 100755 index 000000000..bb8e5ce7e --- /dev/null +++ b/library/Zend/Locale/Data/to_TO.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/tr.xml b/library/Zend/Locale/Data/tr.xml new file mode 100755 index 000000000..7ebacce14 --- /dev/null +++ b/library/Zend/Locale/Data/tr.xml @@ -0,0 +1,5416 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + Afar + Abhazca + Achinese + Acoli + Adangme + Adigece + Avestçe + Afrikaanca + Afrihili + Aghem + Ayni Dili + Akan + Akad Dili + Aleut + Güney Altayca + Amharca + Aragonca + Eski İngilizce + Angika + Arapça + Modern Standart Arapça + Aramice + Araukanya Dili + Arapaho Dili + Arawak Dili + Assamca + Asu + Asturyasca + Avar Dili + Awadhi + Aymara + Azerice + Azerice + Başkırtça + Baluchi + Bali Dili + Basa Dili + Bamun + Ghomala + Beyaz Rusça + Beja Dili + Bemba + Bena + Bafut + Bulgarca + Arayanice + Bislama + Bikol + Bini + Kom + Siksika + Bambara + Bengalce + Tibetçe + Breton + Braj + Bodo + Boşnakça + Akoose + Buryat + Bugis + Bulu + Blin + Medumba + Katalanca + Caddo + Carib + Cayuga + Atsam + Çeçence + Cebuano + Chiga + Chamorro + Chibcha + Çağatay Dili + Chuukese + Mari + Chinook Jargon + Choctaw + Chipewyan + Cherokee + Şayen Dili + Orta Kürtçe + Korsikaca + Kıptice + Cree + Kırım Türkçesi + Çekçe + Kashubian + Kilise Slavcası + Çuvaşça + Galce + Danca + Dakota + Dargince + Taita + Almanca + Avusturya Almancası + İsviçre Yüksek Almancası + Delaware + Slavey + Dogrib + Dinka + Zarma + Dogri + Aşağı Sorbça + Duala + Ortaçağ Felemenkçesi + Divehi + Jola-Fonyi + Dyula + Butan Dili + Dazaga + Embu + Ewe + Efik + Eski Mısır Dili + Ekajuk + Yunanca + Elam + İngilizce + Avustralya İngilizcesi + Kanada İngilizcesi + İngiliz İngilizcesi + İngilizce (BK) + Amerikan İngilizcesi + Ortaçağ İngilizcesi + Esperanto + İspanyolca + Latin Amerika İspanyolcası + Avrupa İspanyolcası + Meksika İspanyolcası + Estonca + Baskça + Ewondo + Farsça + Fang + Fanti + Fulah + Fince + Filipince + Fiji Dili + Faroe Dili + Fon + Fransızca + Kanada Fransızcası + İsviçre Fransızcası + Ortaçağ Fransızcası + Eski Fransızca + Kuzey Frizce + Doğu Frizcesi + Friulian + Batı Frizcesi + İrlandaca + Ga + Gayo + Gbaya + İskoç Gal Dili + Geez + Kiribati Dili + Galiçyaca + Ortaçağ Yüksek Almancası + Guarani Dili + Eski Yüksek Almanca + Gondi + Gorontalo + Gotça + Grebo + Antik Yunanca + İsviçre Almancası + Güceratça + Gusii + Manks + Gwichʼin + Hausa + Haida + Hawaii Dili + İbranice + Hintçe + Hiligaynon + Hititçe + Hmong + Hiri Motu + Hırvatça + Yukarı Sorbça + Haiti Dili + Macarca + Hupa + Ermenice + Herero + Interlingua + Iban + Ibibio + Endonezce + Interlingue + İbo Dili + Sichuan Yi + Inupiak + Iloko + İnguşça + Ido + İzlandaca + İtalyanca + Inuktitut + Japonca + Lojban + Ngomba + Machame + Yahudi Farsçası + Yahudi Arapçası + Cava Dili + Gürcüce + Karakalpakça + Kabile + Kaçin + Jju + Kamba + Kawi + Kabardeyce + Kanembu + Tyap + Makonde + Kabuverdianu + Koro + Kongo + Khasi + Hotanca + Koyra Chiini + Kikuyu + Kuanyama + Kazakça + Kako + Grönland Dili + Kalenjin + Kmerce + Kimbundu + Kannada + Korece + Konkani + Kosraean + Kpelle + Kanuri + Karaçay-Balkarca + Karelyaca + Kurukh + Keşmirce + Shambala + Bafia + Köln Diyalekti + Kürtçe + Kumukça + Kutenai + Komi + Kernevekçe + Kırgızca + Latince + Ladino + Langi + Lahnda + Lamba + Lüksemburgca + Lezgice + Ganda + Limburgca + Lingala + Laoca + Mongo + Lozi + Litvanyaca + Luba-Katanga + Luba-Lulua + Luiseno + Lunda + Luo + Lushai + Luyia + Letonca + Madura Dili + Mafa + Magahi + Maithili + Makasar + Mandingo + Masai + Maba + Mokşa Dili + Mandar + Mende + Meru + Morisyen + Malgaşça + Ortaçağ İrlandacası + Makhuwa-Meetto + Meta' + Marshall Adaları Dili + Maori Dili + Micmac + Minangkabau + Makedonca + Malayalam + Moğolca + Mançurya Dili + Manipuri + Mohavk Dili + Mossi + Marathi + Malayca + Maltaca + Mundang + Birden Fazla Dil + Creek + Miranda Dili + Marvari + Burmaca + Myene + Erzya + Nauru Dili + Napolice + Nama + Norveççe Bokmål + Kuzey Ndebele + Aşağı Almanca + Nepalce + Nevari + Ndonga + Nias + Niuean + Hollandaca + Flamanca + Kwasio + Norveççe Nynorsk + Ngiemboon + Norveççe + Nogayca + Eski Norse + N’Ko + Güney Ndebele + Kuzey Sotho + Nuer + Navaho Dili + Klasik Nevari + Nyanja + Nyamvezi + Nyankole + Nyoro + Nzima + Occitan + Ojibva Dili + Oromo + Oriya Dili + Osetçe + Osage + Osmanlı Türkçesi + Pencapça + Pangasinan + Pehlevi Dili + Pampanga + Papiamento + Palau Dili + Eski Farsça + Fenike Dili + Pali + Lehçe + Pohnpeian + Eski Provensal + Peştuca + Portekizce + Brezilya Portekizcesi + Avrupa Portekizcesi + Keçuvaca + Rajasthani + Rapanui + Rarotongan + Romanşça + Kirundi + Romence + Moldovaca + Rombo + Romanca + Köken + Rusça + Ulahça + Kinyarwanda + Rwa + Sanskritçe + Sandave + Yakutça + Samarit Aramcası + Samburu + Sasak + Santali + Ngambay + Sangu + Sardunya Dili + Sicilyaca + Scots + Sindhi + Kuzey Sami + Seneca + Sena + Selkup + Koyraboro Senni + Sangho + Eski İrlandaca + Sırp-Hırvat Dili + Taşelhit + Shan Dili + Çad Arapçası + Seylanca + Sidamo + Slovakça + Slovence + Samoa Dili + Güney Sami + Lule Sami + Inari Sami + Skolt Sami + Shona + Soninke + Somalice + Sogdiana Dili + Arnavutça + Sırpça + Sranan Tongo + Serer + Sisvati + Saho + Güney Sotho + Sunda Dili + Sukuma + Susu + Sümerce + İsveççe + Svahili + Komorca + Kongo Svahili + Klasik Süryanice + Süryanice + Tamilce + Telugu Dili + Timne + Teso + Tereno + Tetum + Tacikçe + Tayca + Tigrinya + Tigre + Tiv + Türkmence + Tokelau + Takalotça + Klingonca + Tlingit + Tamaşek + Setsvana + Tongaca + Nyasa Tonga + Tok Pisin + Türkçe + Taroko + Tsonga + Tsimshian + Tatarca + Tumbuka + Tuvalu + Tvi + Tasawaq + Tahiti Dili + Tuvaca + Orta Atlas Tamazigt + Udmurtça + Uygurca + Ugarit Dili + Ukraynaca + Umbundu + Bilinmeyen Dil + Urduca + Özbekçe + Vai + Venda + Vietnamca + Volapük + Votic + Vunjo + Valonca + Walser + Valamo + Varay + Vaşo + Volofça + Kalmıkça + Zosa + Soga + Yao + Yapça + Yangben + Yemba + Yidiş + Yoruba + Kantonca + Zhuang + Zapotek Dili + Blis Sembolleri + Zenaga + Standart Berberi Dili Tamazight + Çince + Basitleştirilmiş Çince + Geleneksel Çince + Zuluca + Zuni + Dilbilim içeriği yok + Zazaca + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dünya + Afrika + Kuzey Amerika + Güney Amerika + Okyanusya + Batı Afrika + Orta Amerika + Doğu Afrika + Kuzey Afrika + Orta Afrika + Afrika'nın Güneyi + Amerika + Amerika'nın Kuzeyi + Karayipler + Doğu Asya + Güney Asya + Güneydoğu Asya + Güney Avrupa + Avustralasya + Melanezya + Mikronezya + Polinezya + Asya + Orta Asya + Batı Asya + Avrupa + Doğu Avrupa + Kuzey Avrupa + Batı Avrupa + Latin Amerika + Ascension Adası + Andorra + Birleşik Arap Emirlikleri + Afganistan + Antigua ve Barbuda + Anguilla + Arnavutluk + Ermenistan + Hollanda Antilleri + Angola + Antarktika + Arjantin + Amerikan Samoası + Avusturya + Avustralya + Aruba + Åland Adaları + Azerbaycan + Bosna Hersek + Barbados + Bangladeş + Belçika + Burkina Faso + Bulgaristan + Bahreyn + Burundi + Benin + Saint Barthelemy + Bermuda + Brunei + Bolivya + Karayip Hollanda + Brezilya + Bahamalar + Butan + Bouvet Adası + Botsvana + Beyaz Rusya + Belize + Kanada + Cocos (Keeling) Adaları + Kongo - Kinşasa + Demokratik Kongo Cumhuriyeti + Orta Afrika Cumhuriyeti + Kongo - Brazavil + Kongo Cumhuriyeti + İsviçre + Fildişi Sahili + Cook Adaları + Şili + Kamerun + Çin + Kolombiya + Clipperton Adası + Kosta Rika + Küba + Cape Verde + Curaçao + Christmas Adası + Güney Kıbrıs Rum Kesimi + Çek Cumhuriyeti + Almanya + Diego Garcia + Cibuti + Danimarka + Dominika + Dominik Cumhuriyeti + Cezayir + Ceuta ve Melilla + Ekvador + Estonya + Mısır + Batı Sahara + Eritre + İspanya + Etiyopya + Avrupa Birliği + Finlandiya + Fiji + Falkland Adaları + Falkland Adaları (Malvinas Adaları) + Mikronezya Federal Eyaletleri + Faroe Adaları + Fransa + Gabon + Birleşik Krallık + BK + Grenada + Gürcistan + Fransız Guyanası + Guernsey + Gana + Cebelitarık + Grönland + Gambiya + Gine + Guadalupe + Ekvator Ginesi + Yunanistan + Güney Georgia ve Güney Sandwich Adaları + Guatemala + Guam + Gine-Bissau + Guyana + Çin Hong Kong ÖYB + Hong Kong + Heard Adası ve McDonald Adaları + Honduras + Hırvatistan + Haiti + Macaristan + Kanarya Adaları + Endonezya + İrlanda + İsrail + Man Adası + Hindistan + İngiliz Hint Okyanusu Bölgesi + Irak + İran + İzlanda + İtalya + Jersey + Jamaika + Ürdün + Japonya + Kenya + Kırgızistan + Kamboçya + Kiribati + Komorlar + Saint Kitts ve Nevis + Kuzey Kore + Güney Kore + Kuveyt + Cayman Adaları + Kazakistan + Laos + Lübnan + Saint Lucia + Liechtenstein + Sri Lanka + Liberya + Lesoto + Litvanya + Lüksemburg + Letonya + Libya + Fas + Monako + Moldova + Karadağ + Saint Martin + Madagaskar + Marshall Adaları + Makedonya + Makedonya (EYMC) + Mali + Myanmar (Burma) + Moğolistan + Çin Makao ÖYB + Makao + Kuzey Mariana Adaları + Martinik + Moritanya + Montserrat + Malta + Mauritius + Maldivler + Malavi + Meksika + Malezya + Mozambik + Namibya + Yeni Kaledonya + Nijer + Norfolk Adası + Nijerya + Nikaragua + Hollanda + Norveç + Nepal + Nauru + Niue + Yeni Zelanda + Umman + Panama + Peru + Fransız Polinezyası + Papua Yeni Gine + Filipinler + Pakistan + Polonya + Saint Pierre ve Miquelon + Pitcairn Adaları + Porto Riko + Filistin Bölgeleri + Filistin + Portekiz + Palau + Paraguay + Katar + Uzak Okyanusya + Réunion + Romanya + Sırbistan + Rusya + Ruanda + Suudi Arabistan + Solomon Adaları + Seyşeller + Sudan + İsveç + Singapur + Saint Helena + Slovenya + Svalbard ve Jan Mayen Adaları + Slovakya + Sierra Leone + San Marino + Senegal + Somali + Surinam + Güney Sudan + São Tomé ve Príncipe + El Salvador + Sint Maarten + Suriye + Svaziland + Tristan da Cunha + Turks ve Caicos Adaları + Çad + Fransız Güney Bölgeleri + Togo + Tayland + Tacikistan + Tokelau + Timor-Leste + Doğu Timor + Türkmenistan + Tunus + Tonga + Türkiye + Trinidad ve Tobago + Tuvalu + Tayvan + Tanzanya + Ukrayna + Uganda + ABD Dış Adaları + ABD + ABD + Uruguay + Özbekistan + Vatikan + Saint Vincent ve Grenadinler + Venezuela + Britanya Virjin Adaları + ABD Virjin Adaları + Vietnam + Vanuatu + Wallis ve Futuna Adaları + Samoa + Kosova + Yemen + Mayotte + Güney Afrika + Zambiya + Zimbabve + Bilinmeyen Bölge + + + Geleneksel Almanca Yazım Kuralları + Standart Resia Yazım Kuralları + 1996 Almanca Yazım Kuralları + 1606'ya Dek Geç Ortaçağ Fransızcası + Erken Modern Fransızca + Akademik + Doğu Ermenicesi + Batı Ermenicesi + Birleştirilmiş Yeni Türk Alfabesi + San Giorgio/Bila Lehçesi + Boontling + IPA Ses Bilimi + UPA Ses Bilimi + Ortak Yazım Kuralları + Resia Lipovaz Lehçesi + Monotonik + Natisone Lehçesi + Gniva/Njiva Lehçesi + Oseacco/Osojane Lehçesi + Pinyin (Latin Alfabesinde Yazımı) + Politonik + Bilgisayar + Gözden Geçirilmiş Yazım Kuralları + Resia Lehçesi + Saho + Standart İskoç İngilizcesi + Scouse + Stolvizza/Solbica Lehçesi + Taraskievica Yazım Kuralları + Birleştirilmiş Yazım Kuralları + Gözden Geçirilmiş Birleştirilmiş Yazım Kuralları + Valensiyaca + Wade-Giles (Latin Alfabesinde Yazımı) + + + Takvim + Sembolleri Sıralamayı Yoksayma + Ters Aksan Sıralama + Büyük/Küçük Harf Sıralama + Büyük/Küçük Harfe Duyarlı Sıralama + Kana Sıralaması + Sıralama Düzeni + Normalleştirilmiş Sıralama + Sayısal Sıralama + Sıralama Gücü + Para Birimi + Rakamlar + Saat Dilimi + Yerel Varyant + Sembollere Göre Sıralama + Özel Kullanım + + + Hint-Arap Rakamları + Genişletilmiş Hint-Arap Rakamları + Ermeni Rakamları + Küçük Harf Ermeni Rakamları + Bali Rakamları + Bengal Rakamları + Geleneksel Çince Sıralaması - Big5 + Brahmi Rakamları + Budist Takvimi + Chakma Rakamları + Cham Rakamları + Çin Takvimi + Kıpti Takvim + Dangi Takvimi + Devanagari Rakamları + Sözlük Sıralama Düzeni + Saptanmış Unicode Sıralaması + Avrupa Sıralama Kuralları + Ge'ez Rakamları + Etiyopik Takvim + Etiyopik Amete Alem Takvimi + Finansal Sayılar + Tam Genişlikte Rakamlar + Basitleştirilmiş Çince Sıralaması - GB2312 + Gürcü Rakamları + Miladi Takvim + Yunan Rakamları + Küçük Harf Yunan Rakamları + Gucerat Rakamları + Gurmukhi Rakamları + Çin Rakamları + Basitleştirilmiş Çin Rakamları + Finansal Basitleştirilmiş Çin Rakamları + Geleneksel Çin Rakamları + Finansal Geleneksel Çin Rakamları + İbrani Rakamları + Yahudi Takvimi + Tümünü Sıralama + Ulusal Hint Takvimi + Hicri Takvim + Arap Takvimi + Hicri Takvim (Suudi) + Hicri Takvim (Astronomik Evreler) + Hicri Takvim (Ümmü-l Kurra Takvimi) + ISO-8601 Takvimi + Japon Takvimi + Cava Rakamları + Japon Rakamları + Finansal Japon Rakamları + Kayah Li Rakamları + Kmer Rakamları + Kannada Rakamları + Tai Tham Hora Rakamları + Tai Tham Tham Rakamları + Lao Rakamları + Batı Rakamları + Lepça Rakamları + Limbu Rakamları + Önce Küçük Harfleri Sıralama + Malayalam Rakamları + Moğolca Rakamlar + Meetei Mayek Rakamları + Myanmar Rakamları + Myanmar Shan Rakamları + Yerel Rakamlar + N'Ko Rakamları + Aksanları Normal Olarak Sıralama + Normal Büyük/Küçük Harf Düzeninde Sıralama + Büyük/Küçük Harfe Duyarlı Olmadan Sıralama + Kana'yı Ayrı Sıralama + Normalleştirme Olmadan Sıralama + Rakamları Ayrı Sıralama + Sembolleri Sıralama + Ol Chiki Rakamları + Oriya Rakamları + Farsça Takvim + Telefon Defteri Sıralaması + Fonetik Sıralama Düzeni + Basitleştirilmiş Çince Pinyin Sıralaması + Yalnızca Taban Harflerini Sıralama + Aksanları/Büyük-Küçük Harfleri/Genişliği/Kana'yı Sıralama + Yeni Sıralama Düzeni + Çin Cumhuriyeti Takvimi + Roma Rakamları + Küçük Harf Roma Rakamları + Genel Amaçlı Arama + Hangul İlk Sessiz Harfe Göre Arama + Aksanları Sıralama + Sembolleri Yoksayarak Sıralama + Standart Sıralama + Geleneksel Çince Vuruş Sıralaması + Geleneksel Tamil Rakamları + Tamil Rakamları + Telugu Rakamları + Aksanları/Büyük-Küçük Harfleri/Genişliği Sıralama + Tay Rakamları + Tibet Rakamları + Geleneksel Sıralama + Geleneksel Rakamlar + Radical-Stroke Sıralama Düzeni + Önce Büyük Harfleri Sıralama + Vai Rakamları + Aksanları Ters Sıralama + Büyük/Küçük Harfe Duyarla Sıralama + Kana'yı Farklı Sıralama + Unicode Normalleştirilmiş Olarak Sıralama + Rakamları Sayısal Olarak Sıralama + Zhuyin Sıralaması + + + BGN + Rakam + Ton + UNGEGN + Aksanlar + Tam Genişlik + Yarım genişlik + Jamo + Pinyin + Yayıncılık + + + Metrik + İngiliz + Amerikan + + + Dil: {0} + Alfabe: {0} + Bölge: {0} + + + + + titlecase-firstword + titlecase-firstword + + + + [a b c ç d e f g ğ h ı i İ j k l m n o ö p r s ş t u ü v y z] + [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ø ō œ ö q ß ú ù ŭ û ū ü w x ÿ] + [A B C Ç D E F G H I İ J K L M N O Ö P Q R S Ş T U Ü V W X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” ( ) \[ \] § @ * / \& # † ‡ ′ ″] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + + + + Tût + Bâbe + Hatur + Keyhek + Tûbe + Imşir + Bermuhat + Bermude + Peyştes + Bune + Ebip + Mısrî + Nesî + + + + + + + + + Meskerem + Tikimt + Hidar + Tahsas + Tir + Yakatit + Magabit + Miyazya + Ginbot + Sene + Hamle + Nehasa + Pagumiene + + + + + + + + + G d MMMM y EEEE + + + + + G d MMMM y + + + + + G d MMM y + + + + + GGGGG d.MM.y + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + G y + G MMM y + G d MMM y + G d MMM y E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd/MM + dd/MM E + LLL + d MMM + d MMM E + dd MMMM + dd MMMM E + mm:ss + mm:ss + G y + G y + GGGGG M/y + GGGGG dd.MM.y + GGGGG dd.MM.y E + MM.y G + G MMM y + G dd MMM y + G d MMM y E + MMMM y G + G y/QQQ + G y/QQQQ + + + {0} – {1} + + d–d + + + h a - h a + h-h a + + + HH-HH + + + h:mm a - h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a - h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h a - h a v + h-h a v + + + HH-HH v + + + MM–MM + + + dd/MM – dd/MM + dd/MM – dd/MM + + + dd/MM E – dd/MM E + dd/MM E – dd/MM E + + + MMM–MMM + + + d – d MMM + d MMM – d MMM + + + d MMM E – d MMM E + d MMM E – d MMM E + + + G y–y + + + GGGGG M/y – M/y + GGGGG M/y – M/y + + + GGGGG dd.MM.y – dd.MM.y + GGGGG dd.MM.y – dd.MM.y + GGGGG dd.MM.y – dd.MM.y + + + GGGGG dd.MM.y E – dd.MM.y E + GGGGG dd.MM.y E – dd.MM.y E + GGGGG dd.MM.y E – dd.MM.y E + + + G MMM–MMM y + G MMM y – MMM y + + + G d–d MMM y + G d MMM – d MMM y + G d MMM y – d MMM y + + + G d MMM y E – d MMM y E + G d MMM y E – d MMM y E + G d MMM y E – d MMM y E + + + G MMMM – MMMM y + G MMMM y – MMMM y + + + + + + + + + Oca + Şub + Mar + Nis + May + Haz + Tem + Ağu + Eyl + Eki + Kas + Ara + + + O + Ş + M + N + M + H + T + A + E + E + K + A + + + Ocak + Şubat + Mart + Nisan + Mayıs + Haziran + Temmuz + Ağustos + Eylül + Ekim + Kasım + Aralık + + + + + Oca + Şub + Mar + Nis + May + Haz + Tem + Ağu + Eyl + Eki + Kas + Ara + + + O + Ş + M + N + M + H + T + A + E + E + K + A + + + Ocak + Şubat + Mart + Nisan + Mayıs + Haziran + Temmuz + Ağustos + Eylül + Ekim + Kasım + Aralık + + + + + + + Paz + Pzt + Sal + Çar + Per + Cum + Cmt + + + P + P + S + Ç + P + C + C + + + Pa + Pt + Sa + Ça + Pe + Cu + Ct + + + Pazar + Pazartesi + Salı + Çarşamba + Perşembe + Cuma + Cumartesi + + + + + Paz + Pzt + Sal + Çar + Per + Cum + Cmt + + + P + P + S + Ç + P + C + C + + + Pa + Pt + Sa + Ça + Pe + Cu + Ct + + + Pazar + Pazartesi + Salı + Çarşamba + Perşembe + Cuma + Cumartesi + + + + + + + Ç1 + Ç2 + Ç3 + Ç4 + + + 1. + 2. + 3. + 4. + + + 1. çeyrek + 2. çeyrek + 3. çeyrek + 4. çeyrek + + + + + Ç1 + Ç2 + Ç3 + Ç4 + + + 1. + 2. + 3. + 4. + + + 1. çeyrek + 2. çeyrek + 3. çeyrek + 4. çeyrek + + + + + + + ÖÖ + ÖS + + + + + + Milattan Önce + Milattan Sonra + + + + İÖ + MS + İS + + + + + + d MMMM y EEEE + + + + + d MMMM y + + + + + d MMM y + + + + + d.MM.y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E a h:mm + E HH:mm + E a h:mm:ss + E HH:mm:ss + G y + G MMM y + G dd MMM y + G d MMM y E + a h + HH + a h:mm + HH:mm + a h:mm:ss + HH:mm:ss + L + dd/MM + dd/MM E + LLL + d MMM + d MMMM E + dd MMMM + dd MMMM E + mm:ss + mm:ss + y + MM/y + dd.MM.y + dd.MM.y E + MM.y + MMM y + dd MMM y + d MMM y E + MMMM y + y/QQQ + y/QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + a h – a h + a h–h + + + HH–HH + + + a h:mm – a h:mm + a h:mm–h:mm + a h:mm–h:mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + a h:mm – a h:mm v + a h:mm–h:mm v + a h:mm–h:mm v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + a h – a h v + a h–h v + + + HH–HH v + + + MM–MM + + + dd/MM – dd/MM + dd/MM – dd/MM + + + dd/MM E – dd/MM E + dd/MM E – dd/MM E + + + MMM–MMM + + + d – d MMM + d MMM – d MMM + + + d MMM E – d MMM E + d MMM E – d MMM E + + + y–y + + + MM/y – MM/y + MM/y – MM/y + + + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + + + dd.MM.y E – dd.MM.y E + dd.MM.y E – dd.MM.y E + dd.MM.y E – dd.MM.y E + + + MMM–MMM y + MMM y – MMM y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + d MMM y E – d MMM y E + d MMM y E – d MMM y E + d MMM y E – d MMM y E + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + + Tişri + Heşvan + Kislev + Tevet + Şevat + Veadar + Adar + Adar II + Nisan + İyar + Sivan + Tamuz + Av + Elul + + + + + + + + + Muharrem + Safer + Rebiülevvel + Rebiülahir + Cemaziyelevvel + Cemaziyelahir + Recep + Şaban + Ramazan + Şevval + Zilkade + Zilhicce + + + Muharrem + Safer + Rebiülevvel + Rebiülahir + Cemaziyelevvel + Cemaziyelahir + Recep + Şaban + Ramazan + Şevval + Zilkade + Zilhicce + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Muharrem + Safer + Rebiülevvel + Rebiülahir + Cemaziyelevvel + Cemaziyelahir + Recep + Şaban + Ramazan + Şevval + Zilkade + Zilhicce + + + + + + Hicri + + + + + + + + + d MMMM y G EEEE + + + + + d MMMM y G + + + + + d MMM y G + + + + + d.MM.y G + + + + + + + + + Ferverdin + Ordibeheşt + Hordad + Tir + Mordad + Şehriver + Mehr + Aban + Azer + Dey + Behmen + Esfend + + + + + + + + Before R.O.C. + Minguo + + + + + + + Miladi Dönem + + + Yıl + geçen yıl + bu yıl + gelecek yıl + + {0} yıl sonra + {0} yıl sonra + + + {0} yıl önce + {0} yıl önce + + + + Ay + geçen ay + bu ay + gelecek ay + + {0} ay sonra + {0} ay sonra + + + {0} ay önce + {0} ay önce + + + + Hafta + geçen hafta + bu hafta + gelecek hafta + + {0} hafta sonra + {0} hafta sonra + + + {0} hafta önce + {0} hafta önce + + + + Gün + evvelsi gün + dün + bugün + yarın + öbür gün + + {0} gün sonra + {0} gün sonra + + + {0} gün önce + {0} gün önce + + + + Haftanın Günü + + + geçen pazar + bu pazar + gelecek pazar + + + geçen pazartesi + bu pazartesi + gelecek pazartesi + + + geçen salı + bu salı + gelecek salı + + + geçen çarşamba + bu çarşamba + gelecek çarşamba + + + geçen perşembe + bu perşembe + gelecek perşembe + + + geçen cuma + bu cuma + gelecek cuma + + + geçen cumartesi + bu cumartesi + gelecek cumartesi + + + ÖÖ/ÖS + + + Saat + + {0} saat sonra + {0} saat sonra + + + {0} saat önce + {0} saat önce + + + + Dakika + + {0} dakika sonra + {0} dakika sonra + + + {0} dakika önce + {0} dakika önce + + + + Saniye + şimdi + + {0} saniye sonra + {0} saniye sonra + + + {0} saniye önce + {0} saniye önce + + + + Saat Dilimi + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} Saati + {0} Yaz Saati + {0} Standart Saati + {1} ({0}) + + Bilinmeyen Şehir + + + Kabil + + + Tiran + + + Erivan + + + Dumont d’Urville + + + Viyana + + + Sidney + + + Bakü + + + Saraybosna + + + Dakka + + + Brüksel + + + Sofya + + + Bahreyn + + + Saint Barthélemy + + + Atikokan + + + St. John’s + + + Kinşasa + + + Brazzavil + + + Zürih + + + Abican + + + Kaşgar + + + Urumçi + + + Çongçing + + + Şanghay + + + Kosta Rika + + + Curaçao + + + Lefkoşa + + + Prag + + + Cibuti + + + Kopenhag + + + Dominika + + + Cezayir + + + Kahire + + + Layun + + + Asmara + + + Kanarya Adaları + + + Septe + + + Chuuk + + + Pohnpei + + + Faroe + + + Librevil + + + + İngiltere Yaz Saati + + Londra + + + Tiflis + + + Akra + + + Cebelitarık + + + Nuuk + + + Ittoqqortoormiit + + + Konakri + + + Atina + + + Güney Georgia + + + Budapeşte + + + Cakarta + + + + İrlanda Yaz Saati + + + + Kudüs + + + Man Adası + + + Kalküta + + + Bağdat + + + Tahran + + + Roma + + + Jamaika + + + Bişkek + + + Komor + + + St. Kitts + + + Seul + + + Kuveyt + + + Aktav + + + Aktöbe + + + Kızılorda + + + Almatı + + + Beyrut + + + St. Lucia + + + Kolombo + + + Lüksemburg + + + Trablus + + + Kazablanka + + + Monako + + + Kişinev + + + Üsküp + + + Yangon + + + Ulan Batur + + + Çoybalsan + + + Makao + + + Maldivler + + + Meksiko City + + + Kuçing + + + Katmandu + + + Maskat + + + Markiz Adaları + + + Karaçi + + + Varşova + + + Porto Riko + + + Gazze + + + El Halil + + + Azor Adaları + + + Madeira Adaları + + + Lizbon + + + Asunción + + + Katar + + + Réunion + + + Bükreş + + + Belgrad + + + Moskova + + + İrkutsk + + + Handiga + + + Sahalin + + + Kamçatka + + + Anadır + + + Riyad + + + Hartum + + + Stokholm + + + Singapur + + + St. Helena + + + Mogadişu + + + Cuba + + + São Tomé + + + Lower Prince's Quarter + + + Şam + + + Duşanbe + + + Aşkabat + + + Tunus + + + İstanbul + + + Darüsselam + + + Ujgorod + + + Akmescit + + + Zaporojye + + + Beulah, Kuzey Dakota + + + New Salem, Kuzey Dakota + + + Merkez, Kuzey Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Semerkand + + + Taşkent + + + Vatikan + + + St. Vincent + + + Karakas + + + St. Thomas + + + Ho Chi Minh Kenti + + + + Acre Saati + Acre Standart Saati + Acre Yaz Saati + + + + + Afganistan Saati + + + + + Orta Afrika Saati + + + + + Doğu Afrika Saati + + + + + Güney Afrika Saati + + + + + Batı Afrika Saati + Batı Afrika Standart Saati + Batı Afrika Yaz Saati + + + + + Alaska Saati + Alaska Standart Saati + Alaska Yaz Saati + + + + + Almatı Saati + Almatı Standart Saati + Almatı Yaz Saati + + + + + Amazon Saati + Amazon Standart Saati + Amazon Yaz Saati + + + + + Kuzey Amerika Merkezi Saati + Kuzey Amerika Merkezi Standart Saati + Kuzey Amerika Merkezi Yaz Saati + + + + + Kuzey Amerika Doğu Saati + Kuzey Amerika Doğu Standart Saati + Kuzey Amerika Doğu Yaz Saati + + + + + Kuzey Amerika Dağ Saati + Kuzey Amerika Dağ Standart Saati + Kuzey Amerika Dağ Yaz Saati + + + + + Kuzey Amerika Pasifik Saati + Kuzey Amerika Pasifik Standart Saati + Kuzey Amerika Pasifik Yaz Saati + + + + + Anadyr Saati + Anadır Standart Saati + Anadır Yaz Saati + + + + + Aktav Saati + Aktav Standart Saati + Aktav Yaz Saati + + + + + Aktöbe Saati + Aktöbe Standart Saati + Aktöbe Yaz Saati + + + + + Arabistan Saati + Arabistan Standart Saati + Arabistan Yaz Saati + + + + + Arjantin Saati + Arjantin Standart Saati + Arjantin Yaz Saati + + + + + Batı Arjantin Saati + Batı Arjantin Standart Saati + Batı Arjantin Yaz Saati + + + + + Ermenistan Saati + Ermenistan Standart Saati + Ermenistan Yaz Saati + + + + + Atlantik Saati + Atlantik Standart Saati + Atlantik Yaz Saati + + + + + Orta Avustralya Saati + Orta Avustralya Standart Saati + Orta Avustralya Yaz Saati + + + + + İçbatı Avustralya Saati + İçbatı Avustralya Standart Saati + İçbatı Avustralya Yaz Saati + + + + + Doğu Avustralya Saati + Doğu Avustralya Standart Saati + Doğu Avustralya Yaz Saati + + + + + Batı Avustralya Saati + Batı Avustralya Standart Saati + Batı Avustralya Yaz Saati + + + + + Azerbaycan Saati + Azerbaycan Standart Saati + Azerbaycan Yaz Saati + + + + + Azorlar Saati + Azorlar Standart Saati + Azorlar Yaz Saati + + + + + Bangladeş Saati + Bangladeş Standart Saati + Bangladeş Yaz Saati + + + + + Bhutan Saati + + + + + Bolivya Saati + + + + + Brasilia Saati + Brasilia Standart Saati + Brasilia Yaz Saati + + + + + Brunei Darü's-Selam Saati + + + + + Cape Verde Saati + Cape Verde Standart Saati + Cape Verde Yaz Saati + + + + + Casey Saati + + + + + Chamorro Saati + + + + + Chatham Saati + Chatham Standart Saati + Chatham Yaz Saati + + + + + Şili Saati + Şili Standart Saati + Şili Yaz Saati + + + + + Çin Saati + Çin Standart Saati + Çin Yaz Saati + + + + + Çoybalsan Saati + Çoybalsan Standart Saati + Çoybalsan Yaz Saati + + + + + Christmas Adası Saati + + + + + Cocos Adaları Saati + + + + + Kolombiya Saati + Kolombiya Standart Saati + Kolombiya Yaz Saati + + + + + Cook Adaları Saati + Cook Adaları Standart Saati + Cook Adaları Yarı Yaz Saati + + + + + Küba Saati + Küba Standart Saati + Küba Yaz Saati + + + + + Davis Saati + + + + + Dumont-d’Urville Saati + + + + + Doğu Timor Saati + + + + + Paskalya Adası Saati + Paskalya Adası Standart Saati + Paskalya Adası Yaz Saati + + + + + Ekvador Saati + + + + + Orta Avrupa Saati + Orta Avrupa Standart Saati + Orta Avrupa Yaz Saati + + + + + Doğu Avrupa Saati + Doğu Avrupa Standart Saati + Doğu Avrupa Yaz Saati + + + + + Batı Avrupa Saati + Batı Avrupa Standart Saati + Batı Avrupa Yaz Saati + + + + + Falkland Adaları Saati + Falkland Adaları Standart Saati + Falkland Adaları Yaz Saati + + + + + Fiji Saati + Fiji Standart Saati + Fiji Yaz Saati + + + + + Fransız Guyanası Saati + + + + + Fransız Güney ve Antarktika Saati + + + + + Galapagos Saati + + + + + Gambier Saati + + + + + Gürcistan Saati + Gürcistan Standart Saati + Gürcistan Yaz Saati + + + + + Gilbert Adaları Saati + + + + + Greenwich Ortalama Saati + + + + + Doğu Grönland Saati + Doğu Grönland Standart Saati + Doğu Grönland Yaz Saati + + + + + Batı Grönland Saati + Batı Grönland Standart Saati + Batı Grönland Yaz Saati + + + + + Guam Standart Saati + + + + + Körfez Saati + + + + + Guyana Saati + + + + + Hawaii-Aleut Saati + Hawaii-Aleut Standart Saati + Hawaii-Aleut Yaz Saati + + + + + Hong Kong Saati + Hong Kong Standart Saati + Hong Kong Yaz Saati + + + + + Hovd Saati + Hovd Standart Saati + Hovd Yaz Saati + + + + + Hindistan Saati + + + + + Hint Okyanusu Saati + + + + + Hindiçin Saati + + + + + Orta Endonezya Saati + + + + + Doğu Endonezya Saati + + + + + Batı Endonezya Saati + + + + + İran Saati + İran Standart Saati + İran Yaz Saati + + + + + İrkutsk Saati + İrkutsk Standart Saati + İrkutsk Yaz Saati + + + + + İsrail Saati + İsrail Standart Saati + İsrail Yaz Saati + + + + + Japonya Saati + Japonya Standart Saati + Japonya Yaz Saati + + + + + Petropavlovsk-Kamçatski Saati + Petropavlovsk-Kamçatski Standart Saati + Petropavlovsk-Kamçatski Yaz Saati + + + + + Doğu Kazakistan Saati + + + + + Batı Kazakistan Saati + + + + + Kore Saati + Kore Standart Saati + Kore Yaz Saati + + + + + Kosrae Saati + + + + + Krasnoyarsk Saati + Krasnoyarsk Standart Saati + Krasnoyarsk Yaz Saati + + + + + Kırgızistan Saati + + + + + Lanka Saati + + + + + Line Adaları Saati + + + + + Lord Howe Saati + Lord Howe Standart Saati + Lord Howe Yaz Saati + + + + + Makao Saati + Makao Standart Saati + Makao Yaz Saati + + + + + Macquarie Adası Saati + + + + + Magadan Saati + Magadan Standart Saati + Magadan Yaz Saati + + + + + Malezya Saati + + + + + Maldivler Saati + + + + + Markiz Adaları Saati + + + + + Marshall Adaları Saati + + + + + Mauritius Saati + Mauritius Standart Saati + Mauritius Yaz Saati + + + + + Mawson Saati + + + + + Ulan Batur Saati + Ulan Batur Standart Saati + Ulan Batur Yaz Saati + + + + + Moskova Saati + Moskova Standart Saati + Moskova Yaz Saati + + + + + Myanmar Saati + + + + + Nauru Saati + + + + + Nepal Saati + + + + + Yeni Kaledonya Saati + Yeni Kaledonya Standart Saati + Yeni Kaledonya Yaz Saati + + + + + Yeni Zelanda Saati + Yeni Zelanda Standart Saati + Yeni Zelanda Yaz Saati + + + + + Newfoundland Saati + Newfoundland Standart Saati + Newfoundland Yaz Saati + + + + + Niue Saati + + + + + Norfolk Adaları Saati + + + + + Fernando de Noronha Saati + Fernando de Noronha Standart Saati + Fernando de Noronha Yaz Saati + + + + + Kuzey Mariana Adaları Saati + + + + + Novosibirsk Saati + Novosibirsk Standart Saati + Novosibirsk Yaz Saati + + + + + Omsk Saati + Omsk Standart Saati + Omsk Yaz Saati + + + + + Pakistan Saati + Pakistan Standart Saati + Pakistan Yaz Saati + + + + + Palau Saati + + + + + Papua Yeni Gine Saati + + + + + Paraguay Saati + Paraguay Standart Saati + Paraguay Yaz Saati + + + + + Peru Saati + Peru Standart Saati + Peru Yaz Saati + + + + + Filipinler Saati + Filipinler Standart Saati + Filipinler Yaz Saati + + + + + Phoenix Adaları Saati + + + + + Saint Pierre ve Miquelon Saati + Saint Pierre ve Miquelon Standart Saati + Saint Pierre ve Miquelon Yaz Saati + + + + + Pitcairn Saati + + + + + Ponape Saati + + + + + Kızılorda Saati + Kızılorda Standart Saati + Kızılorda Yaz Saati + + + + + Reunion Saati + + + + + Rothera Saati + + + + + Sahalin Saati + Sahalin Standart Saati + Sahalin Yaz Saati + + + + + Samara Saati + Samara Standart Saati + Samara Yaz Saati + + + + + Samoa Saati + Samoa Standart Saati + Samoa Yaz Saati + + + + + Seyşeller Saati + + + + + Singapur Saati + + + + + Solomon Adaları Saati + + + + + Güney Georgia Saati + + + + + Surinam Saati + + + + + Showa Saati + + + + + Tahiti Saati + + + + + Taipei Saati + Taipei Standart Saati + Taipei Yaz Saati + + + + + Tacikistan Saati + + + + + Tokelau Saati + + + + + Tonga Saati + Tonga Standart Saati + Tonga Yaz Saati + + + + + Chuuk Saati + + + + + Türkmenistan Saati + Türkmenistan Standart Saati + Türkmenistan Yaz Saati + + + + + Tuvalu Saati + + + + + Uruguay Saati + Uruguay Standart Saati + Uruguay Yaz Saati + + + + + Özbekistan Saati + Özbekistan Standart Saati + Özbekistan Yaz Saati + + + + + Vanuatu Saati + Vanuatu Standart Saati + Vanuatu Yaz Saati + + + + + Venezuela Saati + + + + + Vladivostok Saati + Vladivostok Standart Saati + Vladivostok Yaz Saati + + + + + Volgograd Saati + Volgograd Standart Saati + Volgograd Yaz Saati + + + + + Vostok Saati + + + + + Wake Adası Saati + + + + + Wallis ve Futuna Saati + + + + + Yakutsk Saati + Yakutsk Standart Saati + Yakutsk Yaz Saati + + + + + Yekaterinburg Saati + Yekaterinburg Standart Saati + Yekaterinburg Yaz Saati + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 bin + 0 bin + 00 bin + 00 bin + 000 bin + 000 bin + 0 milyon + 0 milyon + 00 milyon + 00 milyon + 000 milyon + 000 milyon + 0 milyar + 0 milyar + 00 milyar + 00 milyar + 000 milyar + 000 milyar + 0 trilyon + 0 trilyon + 00 trilyon + 00 trilyon + 000 trilyon + 000 trilyon + + + + + 0 + 0 + 00 B + 00 B + 000 B + 000 B + 0 Mn + 0 Mn + 00 Mn + 00 Mn + 000 Mn + 000 Mn + 0 Mr + 0 Mr + 00 Mr + 00 Mr + 000 Mr + 000 Mr + 0 Tn + 0 Tn + 00 Tn + 00 Tn + 000 Tn + 000 Tn + + + + + + + #E0 + + + + + + + %#,##0 + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + {0} {1} + {0} {1} + + + + Andorra Pezetası + + + Birleşik Arap Emirlikleri Dirhemi + BAE dirhemi + BAE dirhemi + + + Afganistan Afganisi (1927–2002) + + + Afganistan Afganisi + Afganistan afganisi + Afganistan afganisi + + + Arnavutluk Leki + Arnavutluk leki + Arnavutluk leki + + + Ermenistan Dramı + Ermenistan dramı + Ermenistan dramı + + + Hollanda Antilleri Guldeni + Hollanda Antilleri guldeni + Hollanda Antilleri guldeni + + + Angola Kvanzası + Angola kvanzası + Angola kvanzası + + + Angola Kvanzası (1977–1990) + + + Yeni Angola Kvanzası (1990–2000) + + + Angola Kvanzası Reajustado (1995–1999) + + + Arjantin Australi + + + Arjantin Pezosu (1983–1985) + + + Arjantin Pesosu + Arjantin pesosu + Arjantin pesosu + + + Avusturya Şilini + + + Avustralya Doları + Avustralya doları + Avustralya doları + AU$ + + + Aruba Florini + Aruba florini + Aruba florini + + + Azerbaycan Manatı (1993–2006) + + + Azerbaycan Manatı + Azerbaycan manatı + Azerbaycan manatı + + + Bosna Hersek Dinarı + + + Konvertibl Bosna Hersek Markı + Konvertibl Bosna Hersek markı + Konvertibl Bosna Hersek markı + + + Barbados Doları + Barbados doları + Barbados doları + + + Bangladeş Takası + Bangladeş takası + Bangladeş takası + + + Belçika Frangı (konvertibl) + + + Belçika Frangı + + + Belçika Frangı (finansal) + + + Bulgar Levası (Hard) + + + Bulgar Levası + Bulgar levası + Bulgar levası + + + Bahreyn Dinarı + Bahreyn dinarı + Bahreyn dinarı + + + Burundi Frangı + Burundi frangı + Burundi frangı + + + Bermuda Doları + Bermuda doları + Bermuda doları + + + Brunei Doları + Brunei doları + Brunei doları + + + Bolivya Bolivyanosu + Bolivya bolivyanosu + Bolivya bolivyanosu + + + Bolivya Pezosu + + + Bolivya Mvdolu + + + Yeni Brezilya Kruzeirosu (1967–1986) + + + Brezilya Kruzadosu + + + Brezilya Kruzeirosu (1990–1993) + + + Brezilya Reali + Brezilya reali + Brezilya reali + R$ + + + Yeni Brezilya Kruzadosu + + + Brezilya Kruzeirosu + + + Bahama Doları + Bahama doları + Bahama doları + + + Bhutan Ngultrumu + Bhutan ngultrumu + Bhutan ngultrumu + + + Burma Kyatı + + + Botsvana Pulası + Botsvana pulası + Botsvana pulası + + + Yeni Beyaz Rusya Rublesi (1994–1999) + + + Beyaz Rusya Rublesi + Beyaz Rusya rublesi + Beyaz Rusya rublesi + + + Belize Doları + Belize doları + Belize doları + + + Kanada Doları + Kanada doları + Kanada doları + CA$ + + + Kongo Frangı + Kongo frangı + Kongo frangı + + + WIR Avrosu + + + İsviçre Frangı + İsviçre frangı + İsviçre frangı + + + WIR Frangı + + + Şili Unidades de Fomento + + + Şili Pesosu + Şili pesosu + Şili pesosu + + + Çin Yuanı + Çin yuanı + Çin yuanı + CN¥ + + + Kolombiya Pesosu + Kolombiya pesosu + Kolombiya pesosu + + + Unidad de Valor Real + + + Kosta Rika Kolonu + Kosta Rika kolonu + Kosta Rika kolonu + + + Eski Sırbistan Dinarı + + + Çekoslavak Korunası (Hard) + + + Konvertibl Küba Pesosu + Konvertibl Küba pesosu + Konvertibl Küba pesosu + + + Küba Pesosu + Küba pesosu + Küba pesosu + + + Cape Verde Esküdosu + Cape Verde esküdosu + Cape Verde esküdosu + + + Güney Kıbrıs Lirası + + + Çek Cumhuriyeti Korunası + Çek Cumhuriyeti korunası + Çek Cumhuriyeti korunası + + + Doğu Alman Markı + + + Alman Markı + + + Cibuti Frangı + Cibuti frangı + Cibuti frangı + + + Danimarka Kronu + Danimarka kronu + Danimarka kronu + + + Dominik Pesosu + Dominik pesosu + Dominik pesosu + + + Cezayir Dinarı + Cezayir dinarı + Cezayir dinarı + + + Ekvador Sukresi + + + Ekvador Unidad de Valor Constante (UVC) + + + Estonya Krunu + + + Mısır Lirası + Mısır lirası + Mısır lirası + + + Eritre Nakfası + Eritre nakfası + Eritre nakfası + + + İspanyol Pezetası (A hesabı) + + + İspanyol Pezetası (konvertibl hesap) + + + İspanyol Pezetası + + + Etiyopya Birri + Etiyopya birri + Etiyopya birri + + + Euro + Euro + Euro + + + + Fin Markkası + + + Fiji Doları + Fiji doları + Fiji doları + + + Falkland Adaları Lirası + Falkland Adaları lirası + Falkland Adaları lirası + + + Fransız Frangı + + + İngiliz Sterlini + İngiliz sterlini + İngiliz sterlini + £ + + + Gürcistan Kupon Larisi + + + Gürcistan Larisi + Gürcistan larisi + Gürcistan larisi + + + Gana Sedisi (1979–2007) + + + Gana Sedisi + Gana sedisi + Gana sedisi + + + Cebelitarık Lirası + Cebelitarık lirası + Cebelitarık lirası + + + Gambiya Dalasisi + Gambiya dalasisi + Gambiya dalasisi + + + Gine Frangı + Gine frangı + Gine frangı + + + Gine Sylisi + + + Ekvator Ginesi Ekuelesi + + + Yunan Drahmisi + + + Guatemala Quetzalı + Guatemala quetzalı + Guatemala quetzalı + + + Portekiz Ginesi Esküdosu + + + Gine-Bissau Pezosu + + + Guyana Doları + Guyana doları + Guyana doları + + + Hong Kong Doları + Hong Kong doları + Hong Kong doları + HK$ + + + Honduras Lempirası + Honduras lempirası + Honduras lempirası + + + Hırvatistan Dinarı + + + Hırvatistan Kunası + Hırvatistan kunası + Hırvatistan kunası + + + Haiti Gurdu + Haiti gurdu + Haiti gurdu + + + Macar Forinti + Macar forinti + Macar forinti + + + Endonezya Rupiahı + Endonezya rupiahı + Endonezya rupiahı + + + İrlanda Lirası + + + İsrail Lirası + + + Yeni İsrail Şekeli + Yeni İsrail şekeli + Yeni İsrail şekeli + + + + Hindistan Rupisi + Hindistan rupisi + Hindistan rupisi + + + + Irak Dinarı + Irak dinarı + Irak dinarı + + + İran Riyali + İran riyali + İran riyali + + + İzlanda Kronu + İzlanda kronu + İzlanda kronu + + + İtalyan Lireti + + + Jamaika Doları + Jamaika doları + Jamaika doları + + + Ürdün Dinarı + Ürdün dinarı + Ürdün dinarı + + + Japon Yeni + Japon yeni + Japon yeni + ¥ + + + Kenya Şilini + Kenya şilini + Kenya şilini + + + Kırgızistan Somu + Kırgızistan somu + Kırgızistan somu + + + Kamboçya Rieli + Kamboçya rieli + Kamboçya rieli + + + Komorlar Frangı + Komorlar frangı + Komorlar frangı + + + Kuzey Kore Wonu + Kuzey Kore wonu + Kuzey Kore wonu + + + Güney Kore Wonu + Güney Kore wonu + Güney Kore wonu + + + + Kuveyt Dinarı + Kuveyt dinarı + Kuveyt dinarı + + + Cayman Adaları Doları + Cayman Adaları doları + Cayman Adaları doları + + + Kazakistan Tengesi + Kazakistan tengesi + Kazakistan tengesi + + + Laos Kipi + Laos kipi + Laos kipi + + + Lübnan Lirası + Lübnan lirası + Lübnan lirası + + + Sri Lanka Rupisi + Sri Lanka rupisi + Sri Lanka rupisi + + + Liberya Doları + Liberya doları + Liberya doları + + + Lesotho Lotisi + + + Litvanya Litası + Litvanya litası + Litvanya litası + + + Litvanya Talonu + + + Konvertibl Lüksemburg Frangı + + + Lüksemburg Frangı + + + Finansal Lüksemburg Frangı + + + Letonya Latı + Letonya latı + Letonya latı + + + Letonya Rublesi + + + Libya Dinarı + Libya dinarı + Libya dinarı + + + Fas Dirhemi + Fas dirhemi + Fas dirhemi + + + Fas Frangı + + + Moldova Leyi + Moldova leyi + Moldova leyi + + + Madagaskar Ariarisi + Madagaskar ariarisi + Madagaskar ariarisi + + + Madagaskar Frangı + + + Makedonya Dinarı + Makedonya dinarı + Makedonya dinarı + + + Mali Frangı + + + Myanmar Kyatı + Myanmar kyatı + Myanmar kyatı + + + Moğolistan Tugriki + Moğolistan tugriki + Moğolistan tugriki + + + Makao Patakası + Makao patakası + Makao patakası + + + Moritanya Ouguiyası + Moritanya ouguiyası + Moritanya ouguiyası + + + Malta Lirası + + + Malta Sterlini + + + Mauritius Rupisi + Mauritius rupisi + Mauritius rupisi + + + Maldiv Rufiyaası + Maldiv rufiyaası + Maldiv rufiyaası + + + Malavi Kvaçası + Malavi kvaçası + Malavi kvaçası + + + Meksika Pesosu + Meksika pesosu + Meksika pesosu + MX$ + + + Gümüş Meksika Pezosu (1861–1992) + + + Meksika Unidad de Inversion (UDI) + + + Malezya Ringgiti + Malezya ringgiti + Malezya ringgiti + + + Mozambik Esküdosu + + + Eski Mozambik Metikali + + + Mozambik Metikali + Mozambik metikali + Mozambik metikali + + + Namibya Doları + Namibya doları + Namibya doları + + + Nijerya Nairası + Nijerya nairası + Nijerya nairası + + + Nikaragua Kordobası (1988–1991) + + + Nikaragua Kordobası + Nikaragua kordobası + Nikaragua kordobası + + + Hollanda Florini + + + Norveç Kronu + Norveç kronu + Norveç kronu + + + Nepal Rupisi + Nepal rupisi + Nepal rupisi + + + Yeni Zelanda Doları + Yeni Zelanda doları + Yeni Zelanda doları + NZ$ + + + Umman Riyali + Umman riyali + Umman riyali + + + Panama Balboası + Panama balboası + Panama balboası + + + Peru İnti + + + Peru Nuevo Solü + Peru nuevo solü + Peru nuevo solü + + + Peru Solu + + + Papua Yeni Gine Kinası + Papua Yeni Gine kinası + Papua Yeni Gine kinası + + + Filipinler Pesosu + Filipinler pesosu + Filipinler pesosu + + + Pakistan Rupisi + Pakistan rupisi + Pakistan rupisi + + + Polonya Zlotisi + Polonya zlotisi + Polonya zlotisi + + + Polonya Zlotisi (1950–1995) + + + Portekiz Esküdosu + + + Paraguay Guaranisi + Paraguay guaranisi + Paraguay guaranisi + + + Katar Riyali + Katar riyali + Katar riyali + + + Rodezya Doları + + + Eski Romen Leyi + + + Romen Leyi + Romen leyi + Romen leyi + + + Sırp Dinarı + Sırp dinarı + Sırp dinarı + + + Rus Rublesi + Rus rublesi + Rus rublesi + + + Rus Rublesi (1991–1998) + + + Ruanda Frangı + Ruanda frangı + Ruanda frangı + + + Suudi Arabistan Riyali + Suudi Arabistan riyali + Suudi Arabistan riyali + + + Solomon Adaları Doları + Solomon Adaları doları + Solomon Adaları doları + + + Seyşeller Rupisi + Seyşeller rupisi + Seyşeller rupisi + + + Eski Sudan Dinarı + + + Sudan Lirası + Sudan lirası + Sudan lirası + + + Eski Sudan Lirası + + + İsveç Kronu + İsveç kronu + İsveç kronu + + + Singapur Doları + Singapur doları + Singapur doları + + + Saint Helena Lirası + Saint Helena lirası + Saint Helena lirası + + + Slovenya Toları + + + Slovak Korunası + + + Sierra Leone Leonesi + Sierra Leone leonesi + Sierra Leone leonesi + + + Somali Şilini + Somali şilini + Somali şilini + + + Surinam Doları + Surinam doları + Surinam doları + + + Surinam Guldeni + + + Güney Sudan Lirası + Güney Sudan lirası + Güney Sudan lirası + + + São Tomé ve Príncipe Dobrası + São Tomé ve Príncipe dobrası + São Tomé ve Príncipe dobrası + + + Sovyet Rublesi + + + El Salvador Kolonu + + + Suriye Lirası + Suriye lirası + Suriye lirası + + + Svaziland Lilangenisi + Svaziland lilangenisi + Svaziland lilangenisi + + + Tayland Bahtı + Tayland bahtı + Tayland bahtı + ฿ + + + Tacikistan Rublesi + + + Tacikistan Somonisi + Tacikistan somonisi + Tacikistan somonisi + + + Türkmenistan Manatı (1993–2009) + + + Türkmenistan Manatı + Türkmenistan manatı + Türkmenistan manatı + + + Tunus Dinarı + Tunus dinarı + Tunus dinarı + + + Tonga Paʻangası + Tonga paʻangası + Tonga paʻangası + + + Timor Esküdosu + + + Eski Türk Lirası + + + ¤#,##0.00 + Türk Lirası + Türk lirası + Türk lirası + + + + Trinidad ve Tobago Doları + Trinidad ve Tobago doları + Trinidad ve Tobago doları + + + Yeni Tayvan Doları + Yeni Tayvan doları + Yeni Tayvan doları + NT$ + + + Tanzanya Şilini + Tanzanya şilini + Tanzanya şilini + + + Ukrayna Grivnası + Ukrayna grivnası + Ukrayna grivnası + + + Ukrayna Karbovanetz + + + Uganda Şilini (1966–1987) + + + Uganda Şilini + Uganda şilini + Uganda şilini + + + ABD Doları + ABD doları + ABD doları + $ + + + ABD Doları (Ertesi gün) + + + ABD Doları (Aynı gün) + + + Uruguay Peso en Unidades Indexadas + + + Uruguay Pezosu (1975–1993) + + + Uruguay Pesosu + Uruguay pesosu + Uruguay pesosu + + + Özbekistan Somu + Özbekistan somu + Özbekistan somu + + + Venezuela Bolivarı (1871–2008) + + + Venezuela Bolivarı + Venezuela bolivarı + Venezuela bolivarı + + + Vietnam Dongu + Vietnam dongu + Vietnam dongu + + + + Vanuatu Vatusu + Vanuatu vatusu + Vanuatu vatusu + + + Samoa Talası + Samoa talası + Samoa talası + + + CFA Frangı BEAC + CFA frangı BEAC + CFA frangı BEAC + FCFA + + + Gümüş + + + Altın + + + Birleşik Avrupa Birimi + + + Avrupa Para Birimi (EMU) + + + Avrupa Hesap Birimi (XBC) + + + Avrupa Hesap Birimi (XBD) + + + Doğu Karayip Doları + Doğu Karayip doları + Doğu Karayip doları + EC$ + + + Özel Çekme Hakkı (SDR) + + + Avrupa Para Birimi + + + Fransız Altın Frangı + + + Fransız UIC-Frangı + + + CFA Frangı BCEAO + CFA frangı BCEAO + CFA frangı BCEAO + CFA + + + Paladyum + + + CFP Frangı + CFP frangı + CFP frangı + CFPF + + + Platin + + + RINET Fonları + + + Test Para Birimi Kodu + + + Bilinmeyen Para Birimi + (bilinmeyen para birimi) + (bilinmeyen para birimi) + + + Yemen Dinarı + + + Yemen Riyali + Yemen riyali + Yemen riyali + + + Yugoslav Dinarı (Hard) + + + Yeni Yugoslav Dinarı + + + Konvertibl Yugoslav Dinarı + + + Güney Afrika Randı (finansal) + + + Güney Afrika Randı + Güney Afrika randı + Güney Afrika randı + + + Zambiya Kvaçası (1968–2012) + + + Zambiya Kvaçası + Zambiya kvaçası + Zambiya kvaçası + + + Yeni Zaire Zairesi + + + Zaire Zairesi + + + Zimbabve Doları + + + Zimbabve Doları (2009) + + + + {0}+ + {0}–{1} + + + + + + {0}/{1} + + + {0} g kuvveti + {0} g kuvveti + + + {0} dakika + {0} dakika + + + {0} saniye + {0} saniye + + + {0} derece + {0} derece + + + {0} akre + {0} akre + + + {0} hektar + {0} hektar + + + {0} fit kare + {0} fit kare + + + {0} kilometrekare + {0} kilometrekare + + + {0} metrekare + {0} metrekare + + + {0} mil kare + {0} mil kare + + + {0} gün + {0} gün + + + {0} saat + {0} saat + + + {0} milisaniye + {0} milisaniye + + + {0} dakika + {0} dakika + + + {0} ay + {0} ay + + + {0} saniye + {0} saniye + + + {0} hafta + {0} hafta + + + {0} yıl + {0} yıl + + + {0} santimetre + {0} santimetre + + + {0} fit + {0} fit + + + {0} inç + {0} inç + + + {0} kilometre + {0} kilometre + + + {0} ışık yılı + {0} ışık yılı + + + {0} metre + {0} metre + + + {0} mil + {0} mil + + + {0} milimetre + {0} milimetre + + + {0} pikometre + {0} pikometre + + + {0} yarda + {0} yarda + + + {0} gram + {0} gram + + + {0} kilogram + {0} kilogram + + + {0} ons + {0} ons + + + {0} pound + {0} pound + + + {0} beygir gücü + {0} beygir gücü + + + {0} kilovat + {0} kilovat + + + {0} vat + {0} vat + + + {0} hektopaskal + {0} hektopaskal + + + {0} inç cıva + {0} inç cıva + + + {0} milibar + {0} milibar + + + {0} kilometre/saat + {0} kilometre/saat + + + {0} metre/saniye + {0} metre/saniye + + + {0} mil/saat + {0} mil/saat + + + {0} santigrat derece + {0} santigrat derece + + + {0} fahrenhayt derece + {0} fahrenhayt derece + + + {0} kilometre küp + {0} kilometre küp + + + {0} mil küp + {0} mil küp + + + {0} litre + {0} litre + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} dk. + {0} dk. + + + {0} sn. + {0} sn. + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} gün + {0} gün + + + {0} sa. + {0} sa. + + + {0} ms + {0} ms + + + {0} dk. + {0} dk. + + + {0} ay + {0} ay + + + {0} sn. + {0} sn. + + + {0} hf. + {0} hf. + + + {0} yıl + {0} yıl + + + {0} cm + {0} cm + + + {0} fit + {0} fit + + + {0} inç + {0} inç + + + {0} km + {0} km + + + {0} IY + {0} IY + + + {0} m + {0} m + + + {0} mil + {0} mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/sa + {0} km/sa + + + {0} m/sn + {0} m/sn + + + {0} mil/sa + {0} mil/sa + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0}G + {0}G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0}g + {0}g + + + {0}s + {0}s + + + {0}ms + {0}ms + + + {0}d + {0}d + + + {0}a + {0}a + + + {0}sn + {0}sn + + + {0}h + {0}h + + + {0}y + {0}y + + + {0} cm + {0} cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0} km + {0} km + + + {0} IY + {0} IY + + + {0} m + {0} m + + + {0} mil + {0} mil + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yd + {0} yd + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} oz + {0} oz + + + {0} lb + {0} lb + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0}" Hg + {0}" Hg + + + {0} mb + {0} mb + + + {0} km/sa + {0} km/sa + + + {0} m/sn + {0} m/sn + + + {0} mil/sa + {0} mil/sa + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} ve {1} + {0} ve {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + + evet:e + hayır:hayir:h + + + + diff --git a/library/Zend/Locale/Data/tr_CY.xml b/library/Zend/Locale/Data/tr_CY.xml new file mode 100755 index 000000000..72853f928 --- /dev/null +++ b/library/Zend/Locale/Data/tr_CY.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/tr_TR.xml b/library/Zend/Locale/Data/tr_TR.xml new file mode 100755 index 000000000..7ab9a262e --- /dev/null +++ b/library/Zend/Locale/Data/tr_TR.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ts.xml b/library/Zend/Locale/Data/ts.xml new file mode 100755 index 000000000..05fbb4621 --- /dev/null +++ b/library/Zend/Locale/Data/ts.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + Xi Czech + Xi Danish + Xi Jarimani + Xi Giriki + Xi Nghezi + Xi spain + hi xi Estonia + Xi Finnish + Xi Furwa + XiHeberu + hi xi Hungary + hi xi Iceland + Xi Ithali + Xi Japani + Xikorea + hi xi Lithuania + hi xi Latvia + Xi bunu + Xi Norway + Xi Polixi + Putukezi + hi xi Romania + Xi Rhaxiya + Xi Swiden + Xitsonga + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + Sun + Yan + Kul + Dzi + Mud + Kho + Maw + Mha + Ndz + Nhl + Huk + N'w + + + Sunguti + Nyenyenyani + Nyenyankulu + Dzivamisoko + Mudyaxihi + Khotavuxika + Mawuwani + Mhawuri + Ndzhati + Nhlangula + Hukuri + N'wendzamhala + + + + + + + Son + Mus + Bir + Har + Ne + Tlh + Mug + + + Sonto + Musumbhunuku + Ravumbirhi + Ravunharhu + Ravumune + Ravuntlhanu + Mugqivela + + + + + + + K1 + K2 + K3 + K4 + + + Kotara yo sungula + Kotara ya vumbirhi + Kotara ya vunharhu + Kotara ya vumune + + + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + R + + + + + diff --git a/library/Zend/Locale/Data/ts_ZA.xml b/library/Zend/Locale/Data/ts_ZA.xml new file mode 100755 index 000000000..bb845df83 --- /dev/null +++ b/library/Zend/Locale/Data/ts_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/twq.xml b/library/Zend/Locale/Data/twq.xml new file mode 100755 index 000000000..33a59187c --- /dev/null +++ b/library/Zend/Locale/Data/twq.xml @@ -0,0 +1,780 @@ + + + + + + + + + + + + Akan senni + Amhaarik senni + Laaraw senni + Belaruus senni + Bulagaari senni + Bengali senni + Cek senni + Almaŋ senni + Grek senni + Inglisi senni + Espaaɲe senni + Farsi senni + Fransee senni + Hawsance senni + Induu senni + Hungaari senni + Indoneesi senni + Iboo senni + Itaali senni + Japonee senni + Javanee senni + Kmeer senni, Game here + Koree senni + Maleezi senni + Burme senni + Neepal senni + Holandee senni + Punjaabi sennii + Polonee senni + Portugee senni + Rumaani senni + Ruusi senni + Rwanda senni + Somaali senni + Suweede senni + Tamil senni + Taailandu senni + Turku senni + Tasawaq senni + Ukreen senni + Urdu senni + Vietnaam senni + Yorbance senni + Sinuwa senni, Mandareŋ + Zulu senni + + + Andoora + Laaraw Imaarawey Margantey + Afgaanistan + Antigua nda Barbuuda + Angiiya + Albaani + Armeeni + Hollandu Antiiyey Laboo + Angoola + Argentine + Ameriki Samoa + Otriši + Ostraali + Aruuba + Azerbaayijaŋ + Bosni nda Herzegovine + Barbaados + Bangladeši + Belgiiki + Burkina faso + Bulgaari + Bahareen + Burundi + Beniŋ + Bermuda + Bruunee + Boolivi + Breezil + Bahamas + Buutaŋ + Botswaana + Biloriši + Beliizi + Kanaada + Kongoo demookaratiki laboo + Centraafriki koyra + Kongoo + Swisu + Kudwar + Kuuk gungey + Šiili + Kameruun + Šiin + Kolombi + Kosta rika + Kuuba + Kapuver gungey + Šiipur + Cek labo + Almaaɲe + Jibuuti + Danemark + Doominiki + Doominiki laboo + Alžeeri + Ekwateer + Estooni + Misra + Eritree + Espaaɲe + Ecioopi + Finlandu + Fiji + Kalkan gungey + Mikronezi + Faransi + Gaabon + Albaasalaama Marganta + Grenaada + Gorgi + Faransi Guyaan + Gaana + Gibraltar + Grinland + Gambi + Gine + Gwadeluup + Ginee Ekwatorial + Greece + Gwatemaala + Guam + Gine-Bisso + Guyaane + Honduras + Krwaasi + Haiti + Hungaari + Indoneezi + Irlandu + Israyel + Indu laboo + Britiši Indu teekoo laama + Iraak + Iraan + Ayseland + Itaali + Jamaayik + Urdun + Jaapoŋ + Keeniya + Kyrgyzstan + kamboogi + Kiribaati + Komoor + Seŋ Kitts nda Nevis + Kooree, Gurma + Kooree, Hawsa + Kuweet + Kayman gungey + Kaazakstan + Laawos + Lubnaan + Seŋ Lussia + Liechtenstein + Srilanka + Liberia + Leesoto + Lituaani + Luxembourg + Letooni + Liibi + Maarok + Monako + Moldovi + Madagascar + Maršal gungey + Maacedooni + Maali + Maynamar + Mongooli + Mariana Gurma Gungey + Martiniiki + Mooritaani + Montserrat + Malta + Mooris gungey + Maldiivu + Malaawi + Mexiki + Maleezi + Mozambik + Naamibi + Kaaledooni Taagaa + Nižer + Norfolk Gungoo + Naajiriia + Nikaragwa + Hollandu + Norveej + Neepal + Nauru + Niue + Zeelandu Taaga + Omaan + Panama + Peeru + Faransi Polineezi + Papua Ginee Taaga + Filipine + Paakistan + Poloɲe + Seŋ Piyer nda Mikelon + Pitikarin + Porto Riko + Palestine Dangay nda Gaaza + Portugaal + Palu + Paraguwey + Kataar + Reenioŋ + Rumaani + Iriši laboo + Rwanda + Saudiya + Solomon Gungey + Seešel + Suudaŋ + Sweede + Singapur + Seŋ Helena + Sloveeni + Slovaaki + Seera Leon + San Marino + Senegal + Somaali + Surinaam + Sao Tome nda Prinsipe + Salvador laboo + Suuria + Swaziland + Turk nda Kayikos Gungey + Caadu + Togo + Taayiland + Taažikistan + Tokelau + Timoor hawsa + Turkmenistaŋ + Tunizi + Tonga + Turki + Trinidad nda Tobaago + Tuvalu + Taayiwan + Tanzaani + Ukreen + Uganda + Ameriki Laabu Margantey + Uruguwey + Uzbeekistan + Vaatikan Laama + Seŋvinsaŋ nda Grenadine + Veneezuyeela + Britiši Virgin gungey + Ameerik Virgin Gungey + Vietnaam + Vanautu + Wallis nda Futuna + Samoa + Yaman + Mayooti + Hawsa Afriki Laboo + Zambi + Zimbabwe + + + + [a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž] + [v] + [A B C D E F G H I J K L M N O P Q R S T U W X Y Z] + + + + + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + Žan + Fee + Mar + Awi + Me + Žuw + Žuy + Ut + Sek + Okt + Noo + Dee + + + Žanwiye + Feewiriye + Marsi + Awiril + Me + Žuweŋ + Žuyye + Ut + Sektanbur + Oktoobur + Noowanbur + Deesanbur + + + + + Ž + F + M + A + M + Ž + Ž + U + S + O + N + D + + + + + + + Alh + Ati + Ata + Ala + Alm + Alz + Asi + + + Alhadi + Atinni + Atalaata + Alarba + Alhamiisa + Alzuma + Asibti + + + + + H + T + T + L + L + L + S + + + + + + + A1 + A2 + A3 + A4 + + + Arrubu 1 + Arrubu 2 + Arrubu 3 + Arrubu 4 + + + + + + + Subbaahi + Zaarikay b + + + + + + Isaa jine + Isaa zamanoo + + + IJ + IZ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + Zaman + + + Jiiri + + + Handu + + + Hebu + + + Zaari + Bi + Hõo + Suba + + + Subbaahi/Zaarikay banda + + + Guuru + + + Miniti + + + Miti + + + Leerazuu + + + + + + . +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00¤ + + + + + + Laaraw Immaara Margantey Dirham + + + Angoola Kwanza + + + Ostraali Dollar + + + Bahareen Dinar + + + Burundi Fraŋ + + + Botswaana Pund + + + Kanaada Dollar + + + Kongo Fraŋ + + + Swisu Fraŋ + + + Sinwa Yuan Renminbi + + + Kapuver Escudo + + + Jibuuti Fraŋ + + + Alžeeri Dinar + + + Misra Pund + + + Eritree Nafka + + + Ecioopi Birr + + + Eero + + + Britin Pund + + + Gaana Šiidi + + + Gambi Dalasi + + + Ginee Fraŋ + + + Indu Rupii + + + Jaapoŋ Yen + + + Keeniya Šiiliŋ + + + Komoor Fraŋ + + + Liberia Dollar + + + Leezoto Loti + + + Liibi Dinar + + + Maarok Dirham + + + Malgaaši Fraŋ + + + Mooritaani Ugiya + + + Mooris Rupii + + + Malaawi Kwaca + + + Mozambik Metikal + + + Naamibi Dollar + + + Naajiriya Neera + + + Rwanda Fraŋ + + + Saudiya Riyal + + + Seešel Rupii + + + Suudaŋ Dinar + + + Suudaŋ Pund + + + Seŋ Helena Fraŋ + + + Leeon + + + Somaali Šiiliŋ + + + Sao Tome nda Prinsipe Dobra + + + Lilangeni + + + Tunizi Dinar + + + Tanzaani Šiiliŋ + + + Uganda Šiiliŋ + + + Ameriki Dollar + + + CFA Fraŋ (BEAC) + + + CFA Fraŋ (BCEAO) + + + Hawasa Afriki Rand + + + Zambi Kwaca (1968–2012) + + + Zambi Kwaca + + + Zimbabwe Dollar + + + + + + Ayyo:A + Kala:K + + + + diff --git a/library/Zend/Locale/Data/twq_NE.xml b/library/Zend/Locale/Data/twq_NE.xml new file mode 100755 index 000000000..362057bb5 --- /dev/null +++ b/library/Zend/Locale/Data/twq_NE.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/tzm.xml b/library/Zend/Locale/Data/tzm.xml new file mode 100755 index 000000000..ce74a9dcc --- /dev/null +++ b/library/Zend/Locale/Data/tzm.xml @@ -0,0 +1,767 @@ + + + + + + + + + + + + Takanit + Tamharit + Taεrabt + Tabilarusit + Tabelɣarit + Tabinɣalit + Tačikt + Talmanit + Tayunanit + Tanglizt + tasbelyunit + Tafarisit + Tafṛansist + Tahawsat + Tahindit + Tahenɣarit + Tindunisit + Tigbut + Taṭalyant + Tajappunit + Tajavanit + Taxmert ,Talammast + Takurit + Tamalizit + Taburmanit + Tanippalit + Tahulanḍit + Tabenjabit + Tappulunit + Taburtuɣalit + Taṛumanit + Tarusit + Tarwandit + Taṣumalit + Taswidit + Tatamilt + Taṭayt + Taturkit + Tamaziɣt + Tukranit + Turdut + Taviṭnamit + Tayurubat + Tacinwit,Mandarin + tazulut + + + Anḍurra + Imarat Tiεrabin Tidduklin + Afɣanistan + Antigwa d Barbuda + Angwilla + Albanya + Arminya + Antil Tihulanḍiyyin + Angula + Arjuntin + Samwa Imirikaniyyin + Ustriyya + Usṭralya + Aruba + Azerbiǧan + Busna-d-Hirsik + Barbadus + Bangladic + Beljika + Burkina Fasu + Belɣarya + Baḥrayn + Burundi + Binin + Birmuda + Brunay + Bulivya + Bṛazil + Bahamas + Buṭan + Butswana + Bilarusya + Biliz + Kanada + Tagduda Tadimuqraṭit n Kungu + Tagduda n Afrika Wammas + Kungu + Swisra + Taɣazut n Uszer + Tigzirin n Kuk + Ccili + Kamerun + Ṣṣin + Kulumbya + Kusṭa Rika + kuba + Tigzirin n Iɣf Uzegzaw + Qubrus + Tagduda n Čik + Almanya + Ǧibuti + Danmark + Ḍuminika + Tagduda n Ḍuminikan + Dzayer + Ikwaḍur + Isṭunya + Miṣr + Iritrya + Sbanya + Ityupya + Finlanḍa + Fiji + Tigzirin n Falkland + Mikrunizya + Fṛansa + Gabun + Tagelda Taddukelt + Grinada + Jyurjya + Guyana Tafransist + Ɣana + Jibralṭar + Grinlanḍa + Gambya + Ɣinya + Gwadalup + Ɣinya Tikwaṭur it + Yunan + Gwatimala + Gwam + Ɣinya-Bissaw + Guyana + Hinduras + Krwatya + Hayti + Henɣarya + Indunizya + Irlanḍa + Israeil + Hind + Amur n Agaraw Uhindi Ubṛiṭani + Ɛiraq + Iran + Islanḍa + Iṭalya + Jamayka + Urḍun + Jjappun + Kinya + Kirɣistan + Kambudj + Kiribati + Qumur + Santekits d Nivis + Kurya Tugafat + Kurya Tunẓult + Kuwwayt + Tigzirin n Kayman + Kazaxistan + Laws + Lubnan + Santelusya + Lictencṭayn + Srilanka + Libirya + Lisuṭu + Litwanya + Liksumburg + Liṭṭunya + Libya + Meṛṛuk + Munaku + Mulḍavya + Madaɣacqar + Tigzirin n Marcal + Maqdunya + Mali + Myanmar + Manɣulya + Tigzirin n Maryana Tugafat + Martinik + Muritanya + Muntsirra + Malṭa + Muris + Maldiv + Malawi + Miksik + Malizya + Muzambiq + Namibya + kalidunya Tamaynut + Nnijer + Tigzirt Nurfulk + Nijiria + Nikaragwa + Hulanḍa + Nnurwij + Nippal + Nawru + Niwi + Zilanḍa Tamaynut + Ɛumman + Panama + Piru + Pulinizya Tafransist + Papwa Ɣinya Tamaynut + Filippin + Pakistan + Pulunya + Santepyir d Mikelun + Pitkirn + Purturiku + Agemmaḍ Ugut d Ɣazza Ifilisṭiniyen + Purtuɣal + Palu + Paragway + Qaṭar + Riyyunyun + Ṛumanya + Rusya + Ruwwanḍa + Ssaεudiyya Taεrabt + Tigzirin n Salumun + Ssicil + Ssudan + Ssewwid + Sanɣafura + Santehilin + Sluvinya + Sluvakya + Siralyun + Sanmarinu + Ssiniɣal + Ṣṣumal + Surinam + Sawṭumi d Prinsip + Salvaḍur + Surya + Swazilanḍa + Tigzirin Turkiyyin d Tikaykusin + Tcad + Ṭṭugu + Ṭaylanḍa + Ṭaǧikistan + Tuklu + Timur Tagmuṭ + Turkmanistan + Tunes + Ṭunga + Turkya + Trinidad d Ṭubagu + Ṭuvalu + Ṭaywan + Ṭanzanya + Ukranya + Uɣanda + Iwunak Idduklen n Amirika + Urugway + Uzbakistan + Awank iɣrem n Vatikan + Santevinsent d Grinadin + Vinzwilla + Tigzirin (Virgin) Tibṛiṭaniyin + Tigzirin n Virjin n Iwunak Yedduklen + Viṭnam + Vanwatu + Walis d Futuna + Samwa + Yaman + Mayuṭ + Tafrikt Tunẓul + Zambya + Zimbabwi + + + + [a b c d ḍ e ɛ f g {gʷ} ɣ h ḥ i j k {kʷ} l m n q r ṛ s ṣ t ṭ u w x y z] + [o p v] + [A B C D Ḍ E Ɛ F G Ɣ H Ḥ I J K L M N Q R Ṛ S Ṣ T Ṭ U W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Yen + Yeb + Mar + Ibr + May + Yun + Yul + Ɣuc + Cut + Kṭu + Nwa + Duj + + + Yennayer + Yebrayer + Mars + Ibrir + Mayyu + Yunyu + Yulyuz + Ɣuct + Cutanbir + Kṭuber + Nwanbir + Dujanbir + + + + + Y + Y + M + I + M + Y + Y + Ɣ + C + K + N + D + + + + + + + Asa + Ayn + Asn + Akr + Akw + Asm + Asḍ + + + Asamas + Aynas + Asinas + Akras + Akwas + Asimwas + Asiḍyas + + + + + A + A + A + A + A + A + A + + + + + + + IA1 + IA2 + IA3 + IA4 + + + Imir adamsan 1 + Imir adamsan 2 + Imir adamsan 3 + Imir adamsan 4 + + + + + + + Zdat azal + Ḍeffir aza + + + + + + Zdat Ɛisa (TAƔ) + Ḍeffir Ɛisa (TAƔ) + + + + ḌƐ + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Tallit + + + Asseggas + + + Ayur + + + Imalass + + + Ass + Assenaṭ + Assa + Asekka + + + Ass n Imalass + + + Zdat azal/Deffir azal + + + Tasragt + + + Tusdat + + + Tusnat + + + Aseglem asergan + + + + + + , +   + + + + + #,##0.00 ¤ + + + + + + Derhem Uymarati + + + Kwanza Unguli + + + Ḍular Usṭrali + + + Ḍinar Ubaḥrayni + + + Frank Uburundi + + + Pula Ubutswani + + + Ḍular Ukanadi + + + Frank Ukunguli + + + Frank Uswisri + + + Ywan Renminbi Ucinwi + + + Iskudu Ukabuvirdyani + + + Frank Uğibuti + + + Ḍinar Udzayri + + + Junih Umiṣṛi + + + Nakfa Uyritri + + + Birr Uyityuppi + + + Uṛu + + + Junih Usterlini Ubriṭani + + + Sidi Uɣani + + + Dalasi Agambi + + + Frank Uɣini + + + Rupi Uḥindi + + + Yann Ujappuni + + + Cillin Ukini + + + Frank Uqumuri + + + Ḍular Ulibiri + + + Luti Ulusuṭi + + + Ḍinar Ulibi + + + Derhem Umeṛṛuki + + + Aryari Umalɣaci + + + Uqiyya Umuritani + + + Rupi Umurisi + + + Kwača Umalawi + + + Mitikal Umuzambiqi + + + Ḍular Unamibi + + + Nayra Unijiri + + + Frank Urwandi + + + Ryal Usaεudi + + + Rupi Usicili + + + Junih Usudani + + + Junih Usudani (1956–2007) + + + Junih Usantehilini + + + Lyun Usirralyuni + + + Cilin Uṣumali + + + Dubra Usawṭumi + + + Lilanjini Uswazi + + + Ḍinar Utunsi + + + Cilin Uṭanzani + + + Cilin Uɣandi (1966–1987) + + + Ḍular Umirikani + + + Frank CFA (BEAC) + + + Frank CFA (BCEAO) + + + Rand Ufriki Unzul + + + Kwača Uzambi (1968–2012) + + + Kwača Uzambi + + + Ḍular Uzimbabwi + + + + + + Yeh:Y + Uhu:U + + + + diff --git a/library/Zend/Locale/Data/tzm_Latn.xml b/library/Zend/Locale/Data/tzm_Latn.xml new file mode 100755 index 000000000..c3c5199df --- /dev/null +++ b/library/Zend/Locale/Data/tzm_Latn.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + دۇنيا + ئافرىقا + شىمالىي ئامېرىكا + جەنۇبىي ئامېرىكا + ئوكيانىيە + غەربىي ئافرىقا + ئوتتۇرا ئامېرىكا + شەرقىي ئافرىقا + شىمالىي ئافرىقا + ئوتتۇرا ئافرىقا + جەنۇبىي ئافرىقا رايونى + ئامېرىكا + شىمالىي ئامېرىكا رايونى + كارىب دېڭىزى + شەرقىي ئاسىيا + جەنۇبىي ئاسىيا + شەرقىي جەنۇبىي ئاسىيا + جەنۇبىي ياۋروپا + ئاۋسترالئاسىيا + مېلانېسىيە + مىكرونېزىيە رايونى + پولىنىزىيە + ئاسىيا + ئوتتۇرا ئاسىيا + غەربىي ئاسىيا + ياۋروپا + شەرقىي ياۋروپا + شىمالىي ياۋروپا + غەربىي ياۋروپا + لاتىن ئامېرىكا + ئاسسېنسىيون ئارىلى + ئاندوررا + ئەرەب بىرلەشمە خەلىپىلىكى + ئافغانىستان + ئانتىگۋا ۋە باربۇدا + ئانگۋىللا + ئالبانىيە + ئەرمېنىيە + ئانگولا + ئانتاركتىكا + ئارگېنتىنا + ئامېرىكا تەۋەلىكىدىكى ساموئا + ئاۋسترىيە + ئاۋسترالىيە + ئارۇبا + ئالاند ئاراللىرى + ئەزەربەيجان + بوسنىيە-گېرتسېگوۋىنا + باربادوس + باڭلادىش + بېلگىيە + بۇركىنا-فاسو + بۇلغارىيە + بەھرەين + بۇرۇندى + بېنىن + ساينىت-بارتھېلەمي ئاراللىرى + بېرمۇدا + بىرۇنېي + بولىۋىيە + كارىب دېڭىزى گوللاندىيە + بىرازىلىيە + باھاما + بۇتان + بۇۋېت ئاراللىرى + بوتسۋانا + بېلارۇسىيە + بېلىز + كانادا + كەئەلىڭ كوكۇس ئاراللىرى + كونگو - كىنشاسا + كونگو (دېموكراتىك كونگو جۇمھۇرىيىتى) + ئوتتۇرا ئافرىقا جۇمھۇرىيىتى + كونگو - بىراززاۋىل + كونگو (جۇمھۇرىيىتى) + شىۋىتسارىيە + كوتې دې ئىۋوئىر + پىل چىشى قىرغىقى + كۇك ئاراللىرى + چىلى + كامېرون + جۇڭگو + كولومبىيە + كىلىپپېرتون ئاراللىرى + كوستارىكا + كۇبا + يېشىل تۇمشۇق + كۇراسو + روژدېستۋو ئارىلى + سىپرۇس + چېخ جۇمھۇرىيىتى + گېرمانىيە + دېگو-گارشىيا + جىبۇتى + دانىيە + دومىنىكا + دومىنىكا جۇمھۇرىيىتى + ئالجىرىيە + سېيتا ۋە مېلىلا + ئېكۋادور + ئېستونىيە + مىسىر + غەربىي ساخارا + ئېرىترېيە + ئىسپانىيە + ئېفىيوپىيە + ياۋروپا ئىتتىپاقى + فىنلاندىيە + فىجى + فالكلاند ئاراللىرى + فالكلاند ئاراللىرى (ئىسلاس مالۋىناس) + مىكرونېزىيە + فائېرو ئاراللىرى + فىرانسىيە + گابون + ئەنگلىيە پادىشاھلىقى + ئەنگلىيە + گىرېنادا + گىروزىيە + فىرانسىيەگە قاراشلىق گىۋىيانا + گېرىنسى + گانا + جەبىلتارىق + گىرېنلاند + گامبىيە + گىۋىنېيە + گىۋادېلۇپ + ئېكۋاتور گىۋىنېيەسى + گىرېتسىيە + جەنۇبىي جورجىيە ۋە جەنۇبىي ساندىۋىچ ئاراللىرى + گىۋاتېمالا + گۇئام + گىۋىنېيە-بىسسائۇ + گىۋىيانا + شياڭگاڭ ئالاھىدە مەمۇرىي رايونى (جۇڭگو) + شياڭگاڭ + خېرد ۋە ماك-دونالد ئارىلى + ھوندۇراس + كىرودىيە + ھايتى + ۋېنگىرىيە + كانارى ئاراللىرى + ھىندونېزىيە + ئىرېلاندىيە + ئىسرائىلىيە + مېن ئارىلى + ھىندىستان + ئەنگلىيەنىڭ ھىندى ئوكياندىكى تەۋەلىكى + ئىراق + ئىران + ئىسلاندىيە + ئىتالىيە + جېرسېي + يامايكا + ئىيوردانىيە + ياپونىيە + كېنىيە + قىرغىزىستان + كامبودژا + كىرىباتى + كومورو + ساينىت-كىرىستوفېر ۋە نېۋىس + شىمالىي كورىيە + جەنۇبىي كورىيە + كۇۋەيت + كايمان ئاراللىرى + قازاقىستان + لائوس + لىۋان + ساينىت-لۇسىيە + لىچتېنشتېين بەگلىكى + سىرىلانكا + لىبېرىيە + لېسوتو + لىتۋانىيە + لىيۇكسېمبۇرگ + لاتۋىيە + لىۋىيە + ماراكەش + موناكو + مولدوۋا + مونتېنېگرو + ساينىت-مارتېن + ماداغاسقار + مارشال ئاراللىرى + ماكېدونىيە + ماكېدونىيە (سابىق يۇگۇسلاۋىيە ماكېدونىيە جۇمھۇرىيىتى) + مالى + بىرما + موڭغۇلىيە + ئاۋمېن ئالاھىدە مەمۇرىي رايونى (جۇڭگو) + ئاۋمېن + شىمالىي مارىيانا ئاراللىرى + مارتىنىكا + ماۋرىتانىيە + مونتسېررات + مالتا + ماۋرىتىئۇس + مالدىۋې + مالاۋى + مېكسىكا + مالايشىيا + موزامبىك + نامىبىيە + يېڭى كالېدونىيە + نېگىر + نورفولك ئارىلى + نىگېرىيە + نىكاراگۇئا + گوللاندىيە + نورۋېگىيە + نېپال + ناۋرۇ + نىيۇئې + يېڭى زېلاندىيە + ئومان + پاناما + پېرۇ + فىرانسىيەگە قاراشلىق پولىنېزىيە + پاپۇئا يېڭى گىۋىنېيەسى + فىلىپپىن + پاكىستان + پولشا + ساينىت-پىئېر ۋە مىكېلون ئاراللىرى + پىتكاير ئاراللىرى + پۇئېرتو-رىكو + پەلەستىن زېمىنى + پەلەستىن + پورتۇگالىيە + پالاۋ + پاراگۋاي + قاتار + ئوكيانىيە ئەتراپىدىكى ئاراللار + رېئونىيون + رۇمىنىيە + سېربىيە + رۇسىيە + رىۋاندا + سەئۇدى ئەرەبىستان + سولومون ئاراللىرى + سېيشېل + سۇدان + شىۋېتسىيە + سىنگاپور + ساينىت ھېلېنا + سىلوۋېنىيە + سىۋالبارد ۋە يان-مايېن ئارىلى + سىلوۋاكىيە + سېررالېئون + سان-مارىنو + سېنېگال + سومالى + سۇرىنام + جەنۇبىي سۇدان + سان تومې ۋە پرىنسىپې + ئەل سالۋادور + سىنت مارتېن + سۈرىيە + سىۋېزىلاند + ترىستان داكۇنھا + تۇركس ۋە كايكوس ئاراللىرى + چاد + فىرانسىيەگە قاراشلىق جەنۇبتىكى زېمىنلىرى + توگو + تايلاند + تاجىكىستان + توكېلاۋ + شەرقىي تىمور + تۈركمەنىستان + تۇنىس + تونگا + تۈركىيە + تىرىنىداد ۋە توباگو + تۇۋالۇ + تەيۋەن + تانزانىيە + ئۇكرائىنا + ئۇگاندا + ئامېرىكا تەۋەلىكىدىكى سىرتقى كىچىك ئاراللار + ئامېرىكا قوشما شتاتلىرى + ئا ق ش + ئۇرۇگۋاي + ئۆزبېكىستان + ۋاتىكان شەھىرى + ساينىت-ۋىنسېنت ۋە گىرېنادىنېس + ۋېنېزۇئېلا + ئەنگلىيەگە قاراشلىق ۋىرجىن ئارىلى + ئامېرىكا تەۋەلىكىدىكى ۋىرجىن تاقىم ئاراللىرى + ۋىيېتنام + ۋانۇئاتۇ + ۋالىس ۋە فۇتۇنا + ساموئا + كوسوۋو + يەمەن + مايوتتې + جەنۇبىي ئافرىقا + زامبىيە + زىمبابۋې + يوچۇن جاي + + + ئەنئەنىۋى گېرمانچە ئىملا قائىدىسى + ئۆلچەملەشتۈرۈلگەن رېسىيان ئىملا قائىدىسى + گېرمانچە ئىملا قائىدىسى 1996 + ئوتتۇرا ئاخىرقى دەۋردىكى فىرانسۇزچە 1606 + دەسلەپكى مەزگىلدىكى زامانىۋى فىرانسۇزچە + ئاكادېمىك + ALA-LC لاتىنلاشتۇرۇش، 1997 نەشرى + ئالۇكۇ شىۋەسى + شەرقىي ئەرمەنچە + غەربىي ئەرمەنچە + بىرلىككە كەلگەن تۈرك لاتىن ئېلىپبەسى + سان گىيورگىيو/بىلا شىۋەسى + بوخورىچ ئېلىپبەسى + بۇنتلىڭچە + داژىنكو ئېلىپبەسى + دەسلەپكى مەزگىلدىكى زامانىۋى ئىنگلىزچە + IPA تاۋۇشلىرى + UPA تاۋۇشلىرى + خېپبۇرن لاتىنلاشتۇرۇش + ئورتاق ئىملا قائىدىسى + ئۆلچەملىك ئىملا قائىدىسى + رېسىياننىڭ لىپوۋاز شىۋەسى + مېتېلكو ئېلىپبەسى + ئاددىي + نىديۇكا شىۋەسى + ناتىسون شىۋەسى + گىنىۋا/نىجىۋا شىۋەسى + زامانىۋى ۋولاپۇكچە + ئوسېئاككو/ئوسوجەن شىۋەسى + پاماكا شىۋەسى + پىنيىن لاتىنلاشتۇرۇش + پولىتونىك + كومپيۇتېر + تۈزىتىلگەن ئىملا قائىدىسى + ئەنئەنىۋى ۋولاپۇكچە + رېسىيان + ساخوچە + شوتلاندىيە ئۆلچەملىك ئىنگلىزچە + سىكاۋۇز + سىتولۋىززا/سولبىكا شىۋەسى + تاراسكىۋىتسا ئىملا قائىدىسى + بىرلىككە كەلگەن ئىملا قائىدىسى + بىرلىككە كەلگەن تۈزىتىلگەن ئىملا قائىدىسى + ۋالېنسىيە + ۋېي ئائىلىسى پىنيىن لاتىنلاشتۇرۇش + + + يىلنامە + تەرتىپلەش تەرتىپى + پۇل + سان + + + ئەرەبچە-ھىندىچە رەقەملەر + كېڭەيتىلگەن ئەرەبچە-ھىندىچە رەقەملەر + ئەرمەنچە رەقەملەر + ئەرەبچە رەقەملەر (كىچىك ھەرپ) + بالىچە رەقەملەر + بېنگالچە رەقەملەر + مۇرەككەپ خەنچە تىزىش تەرتىپى - Big5 + بىراخمىچە رەقەملەر + بۇددا يىلنامەسى + چاكماچە رەقەملەر + چامچە رەقەملەر + دېھقانلار يىلنامەسى + كوپتىك يىلنامەسى + دانگى يىلنامەسى + دېۋاناگارىچە رەقەملەر + لۇغەت تىزىش تەرتىپى + كۆڭۈلدىكى يۇنىكود تىزىش تەرتىپى + ياۋروپا تەرتىپلەش قائىدىسى + ئېفىيوپىيەچە رەقەملەر + ئېفىيوپىيە يىلنامەسى + ئېفىيوپىيە ئامېتې ئالېم يىلنامەسى + تولۇق كەڭلىكتىكى رەقەملەر + ئاددىي خەنچە تىزىش تەرتىپى - GB2312 + گىرۇزىنچە رەقەملەر + مىلادىيە يىلنامەسى + گىرېكچە رەقەملەر + گىرېكچە رەقەملەر (كىچىك ھەرپ) + گۇجاراتچە رەقەملەر + گۇرمۇكىچە رەقەملەر + خەنچە ئونلۇق رەقەملەر + ئاددىي خەنچە رەقەملەر + ئاددىي خەنچە پۇل-مۇئامىلە رەقەملەر + مۇرەككەپ خەنچە رەقەملەر + مۇرەككەپ خەنچە پۇل-مۇئامىلە رەقەملەر + ئىبرانىچە رەقەملەر + يەھۇدى يىلنامەسى + ھىندىستان دۆلەت يىلنامەسى + ئىسلام ھىجرىيە يىلنامەسى + ئىسلام ھىجرىيە يىلنامەسى (مەدىنە) + ئىسلام ھىجرىيە يىلنامەسى (سەئۇدى ئەرەبىستان ئاي) + ئىسلام ھىجرىيە يىلنامەسى (ئاسترونومىيە دەۋرى) + ئىسلام ھىجرىيە يىلنامەسى (ئۇم ئەلقۇرا) + ISO-8601 يىلنامەسى + ياپونىيە يىلنامەسى + ياۋاچە رەقەملەر + ياپونچە رەقەملەر + ياپونچە پۇل-مۇئامىلە رەقەملەر + كاياھچە رەقەملەر + كېخمېرچە رەقەملەر + كانناداچە رەقەملەر + تاي تامچە خورا رەقەملەر + تاي تامچە تام رەقەملەر + لائوسچە رەقەملەر + غەربچە رەقەملەر + لەپچاچە رەقەملەر + لىمبۇچە رەقەملەر + مالايالامچە رەقەملەر + موڭغۇلچە رەقەملەر + مانىپۇرىچە رەقەملەر + بېرماچە رەقەملەر + بېرما شانچە رەقەملەر + نىكوچە رەقەملەر + ئول-چىكىچە رەقەملەر + ئورىياچە رەقەملەر + ئوسمانىيە رەقەملەر + پارىس يىلنامەسى + تېلېفون نومۇر تىزىش تەرتىپى + پىنيىن تىزىش تەرتىپى + ياخشىلانغان تەرتىپلەش تەرتىپى + مىنگو يىلنامەسى + رىم رەقەملەر + رىم رەقەملەر (كىچىك ھەرپ) + سائۇراشتىراچە رەقەملەر + ئادەتتىكى ئىزدەش + كورىيەچە ئۈزۈك تاۋۇش بويىچە ئىزدەش + شاراداچە رەقەملەر + سورا سومپېڭ رەقەملەر + ئۆلچەملىك تەرتىپلەش تەرتىپى + سىزىق بويىچە تەرتىپلەش + سۇنداچە رەقەملەر + تاكرىچە رەقەملەر + يېڭى تاي-لەچە رەقەملەر + ئەنئەنىۋى تامىلچە رەقەملەر + تامىلچە رەقەملەر + تېلۇگۇچە رەقەملەر + تايلاندچە رەقەملەر + تىبەتچە رەقەملەر + ئەنئەنىۋى تەرتىپلەش تەرتىپى + يان بۆلەك سىزىق بويچە تەرتىپلەش تەرتىپى + ۋايچە رەقەملەر + ترانسكرىپسىيە تەرتىپلەش تەرتىپى + + + مېتىر + ئەنگلىيە ئۆلچىمى + ئامېرىكا ئۆلچىمى + + + تىل: {0} + يېزىق: {0} + رايون: {0} + + + + + right-to-left + + + + [ئ ا ە ب پ ت ج چ خ د ر ز ژ س ش غ ف ق ك گ ڭ ل م ن ھ و ۇ ۆ ۈ ۋ ې ى ي] + [ئ ا ە ب پ ت ج چ خ د ر ز ژ س ش غ ف ق ك گ ڭ ل م ن ھ و ۇ ۆ ۈ ۋ ې ى ي] + + + » + « + + + + + + + + + بۇددا يىلنامەسى + + + + + + + + Mo1 + Mo2 + Mo3 + Mo4 + Mo5 + Mo6 + Mo7 + Mo8 + Mo9 + Mo10 + Mo11 + Mo12 + + + Month1 + Month2 + Month3 + Month4 + Month5 + Month6 + Month7 + Month8 + Month9 + Month10 + Month11 + Month12 + + + + + + + + چاشقان + كالا + يولۋاس + توشقان + ئەجدىھا + يىلان + ئات + قوي + مايمۇن + توخۇ + ئىت + چوشقا + + + + + + + + EEEE، MMMM d، U + + + + + MMMM d، U + + + + + MMM d، U + + + + + M/d/yy + + + + + + + + + EEEE، MMMM d، y G + + + + + MMMM d، y G + + + + + MMM d، y G + + + + + M/d/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}، {0} + + + + + {1}، {0} + + + + d + d E + y G + MMM y G + MMM d، y G + E، MMM d، y G + L + M/d + E، M/d + LLL + MMM d + E، MMM d + y G + y G + M/y GGGGG + M/d/y GGGGG + E، M/d/y GGGGG + MMM y G + MMM d، y G + E، MMM d، y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d – d + + + M – M + + + M/d – M/d + M/d – M/d + + + E، M/d – E، M/d + E، M/d – E، M/d + + + MMM – MMM + + + MMM d – d + MMM d – MMM d + + + E، MMM d – E، MMM d + E، MMM d – E، MMM d + + + y – y G + + + M/y – M/y GGGGG + M/y – M/y GGGGG + + + M/d/y – M/d/y GGGGG + M/d/y – M/d/y GGGGG + M/d/y – M/d/y GGGGG + + + E، M/d/y – E، M/d/y GGGGG + E، M/d/y – E، M/d/y GGGGG + E، M/d/y – E، M/d/y GGGGG + + + MMM – MMM y G + MMM y – MMM y G + + + MMM d – d، y G + MMM d – MMM d، y G + MMM d، y – MMM d، y G + + + E، MMM d – E، MMM d، y G + E، MMM d – E، MMM d، y G + E، MMM d، y – E، MMM d، y G + + + MMMM – MMMM y G + MMMM y – MMMM y G + + + + + + + + + يانۋار + فېۋرال + مارت + ئاپرېل + ماي + ئىيۇن + ئىيۇل + ئاۋغۇست + سېنتەبىر + ئۆكتەبىر + نويابىر + دېكابىر + + + يانۋار + فېۋرال + مارت + ئاپرېل + ماي + ئىيۇن + ئىيۇل + ئاۋغۇست + سېنتەبىر + ئۆكتەبىر + بويابىر + دېكابىر + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + يە + دۈ + سە + چا + پە + چۈ + شە + + + ي + د + س + چ + پ + ج + ش + + + يەكشەنبە + دۈشەنبە + سەيشەنبە + چارشەنبە + پەيشەنبە + جۈمە + شەنبە + + + + + ي + د + س + چ + پ + ج + ش + + + + + + + بىرىنچى پەسىل + ئىككىنچى پەسىل + ئۈچىنچى پەسىل + تۆتىنچى پەسىل + + + بىرىنچى پەسىل + ئىككىنچى پەسىل + ئۈچىنچى پەسىل + تۆتىنچى پەسىل + + + + + 1 + 2 + 3 + 4 + + + + + + + چۈشتىن بۇرۇن + چۈش + چۈشتىن كېيىن + + + چۈشتىن بۇرۇن + چۈش + چۈشتىن كېيىن + + + + + + مىلادىيەدىن بۇرۇن + مىلادىيە + + + مىلادىيەدىن بۇرۇن + مىلادىيە + + + مىلادىيەدىن بۇرۇن + مىلادىيە + + + + + + EEEE، MMMM d، y + + + + + MMMM d، y + + + + + MMM d، y + + + + + M/d/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}، {0} + + + + + {1}، {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + MMM d، y G + E، MMM d، y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E، M/d + LLL + MMM d + E، MMM d + mm:ss + y + M/y + M/d/y + E، M/d/y + MMM y + MMM d، y + E، MMM d، y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d – d + + + h a – h a + h – h a + + + HH – HH + + + h:mm a – h:mm a + h:mm – h:mm a + h:mm – h:mm a + + + HH:mm – HH:mm + HH:mm – HH:mm + + + h:mm a – h:mm a v + h:mm – h:mm a v + h:mm – h:mm a v + + + HH:mm – HH:mm v + HH:mm – HH:mm v + + + h a – h a v + h – h a v + + + HH – HH v + + + M – M + + + M/d – M/d + M/d – M/d + + + E، M/d – E، M/d + E، M/d – E، M/d + + + MMM – MMM + + + MMM d – d + MMM d – MMM d + + + E، MMM d – E، MMM d + E، MMM d – E، MMM d + + + y – y + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E، M/d/y – E، M/d/y + E، M/d/y – E، M/d/y + E، M/d/y – E، M/d/y + + + MMM – MMM y + MMM y – MMM y + + + MMM d – d، y + MMM d – MMM d، y + MMM d، y – MMM d، y + + + E، MMM d – E، MMM d، y + E، MMM d – E، MMM d، y + E، MMM d، y – E، MMM d، y + + + MMMM – MMMM y + MMMM y – MMMM y + + + + + + + + AM + + + + + + + + مۇھەررەم + سەپەر + رەبىئۇلئەۋۋەل + رەبىئۇلئاخىر + جەمادىيەلئەۋۋەل + جەمادىيەلئاخىر + رەجەب + شەئبان + رامىزان + شەۋۋال + زۇلقەئدە + زۇلھەججە + + + مۇھەررەم + سەپەر + رەبىئۇلئەۋۋەل + رەبىئۇلئاخىر + جەمادىيەلئەۋۋەل + جەمادىيەلئاخىر + رەجەب + شەئبان + رامىزان + شەۋۋال + زۇلقەئدە + زۇلھەججە + + + + + + ھىجرىيە + + + + + + EEEE، d MMMM، y G + + + + + d MMMM، y G + + + + + d MMM، y G + + + + + d‏/M‏/y GGGGG + + + + + + d + L + d/‏M + M‏/y G + d‏/M‏/y G + E، d/‏M/‏y G + MMM y G + + + + + + + + EEEE, MMMM d، y G + + + + + MMMM d، y G + + + + + MMM d، y G + + + + + M/d/y GGGGG + + + + + + + + جۇڭخۇا مىنگودىن بۇرۇن + مىنگو + + + + + + + مىلادىيە + + + يىل + ئۆتكەن يىل + بۇ يىل + كېلەر يىل + + {0} يىلدىن كېيىن + {0} يىلدىن كېيىن + + + {0} يىل ئىلگىرى + {0} يىل ئىلگىرى + + + + ئاي + ئۆتكەن ئاي + بۇ ئاي + كېلەر ئاي + + {0} ئايدىن كېيىن + {0} ئايدىن كېيىن + + + {0} ئاي ئىلگىرى + {0} ئاي ئىلگىرى + + + + ھەپتە + ئۆتكەن ھەپتە + بۇ ھەپتە + كېلەر ھەپتە + + {0} ھەپتىدىن كېيىن + {0} ھەپتىدىن كېيىن + + + {0} ھەپتە ئىلگىرى + {0} ھەپتە ئىلگىرى + + + + كۈن + تۈنۈگۈن + بۈگۈن + ئەتە + + {0} كۈندىن كېيىن + {0} كۈندىن كېيىن + + + {0} كۈن ئىلگىرى + {0} كۈن ئىلگىرى + + + + ھەپتە كۈنلىرى + + + ئۆتكەن يەكشەنبە + بۇ يەكشەنبە + كېلەر يەكشەنبە + + + ئۆتكەن دۈشەنبە + بۇ دۈشەنبە + كېلەر دۈشەنبە + + + ئۆتكەن سەيشەنبە + بۇ سەيشەنبە + كېلەر سەيشەنبە + + + ئۆتكەن چارشەنبە + بۇ چارشەنبە + كېلەر چارشەنبە + + + ئۆتكەن پەيشەنبە + بۇ پەيشەنبە + كېلەر پەيشەنبە + + + ئۆتكەن جۈمە + بۇ جۈمە + كېلەر جۈمە + + + ئۆتكەن شەنبە + بۇ شەنبە + كېلەر شەنبە + + + چۈشتىن بۇرۇن/چۈشتىن كېيىن + + + سائەت + + {0} سائەتتىن كېيىن + {0} سائەتتىن كېيىن + + + {0} سائەت ئىلگىرى + {0} سائەت ئىلگىرى + + + + مىنۇت + + {0} مىنۇتتىن كېيىن + {0} مىنۇتتىن كېيىن + + + {0} مىنۇت ئىلگىرى + {0} مىنۇت ئىلگىرى + + + + سېكۇنت + + {0} سېكۇنتتىن كېيىن + {0} سېكۇنتتىن كېيىن + + + {0} سېكۇنت ئىلگىرى + {0} سېكۇنت ئىلگىرى + + + + ۋاقىت رايونى + + + + +HH:mm;-HH:mm + GMT{0} + {0} ۋاقتى + {0} يازلىق ۋاقتى + {0} ئۆلچەملىك ۋاقتى + {1} ({0}) + + يوچۇن شەھەر + + + دۇمونت دۇرۋىللې + + + ساينىت-بارتھېلەمىي + + + كۇراسو + + + + ئەنگلىيە يازلىق ۋاقتى + + + + + ئىرېلاند يازلىق ۋاقتى + + + + ئاسۇنسىيون + + + رېئونىيون + + + سان-تومې + + + خوچىمىن شەھىرى + + + + ئاكرې ۋاقتى + ئاكرې ئۆلچەملىك ۋاقتى + ئاكرى يازلىق ۋاقتى + + + + + ئافغانىستان ۋاقتى + + + + + ئوتتۇرا ئافرىقا ۋاقتى + + + + + شەرقىي ئافرىقا ۋاقتى + + + + + جەنۇبىي ئافرىقا ئۆلچەملىك ۋاقتى + + + + + غەربىي ئافرىقا ۋاقتى + غەربىي ئافرىقا ئۆلچەملىك ۋاقتى + غەربىي ئافرىقا يازلىق ۋاقتى + + + + + ئالياسكا ۋاقتى + ئالياسكا ئۆلچەملىك ۋاقتى + ئالياسكا يازلىق ۋاقتى + + + + + ئالمۇتا ۋاقتى + ئالمۇتا ئۆلچەملىك ۋاقتى + ئالمۇتا يازلىق ۋاقتى + + + + + ئامازون ۋاقتى + ئامازون ئۆلچەملىك ۋاقتى + ئامازون يازلىق ۋاقتى + + + + + ئوتتۇرا قىسىم ۋاقتى + ئوتتۇرا قىسىم ئۆلچەملىك ۋاقتى + ئوتتۇرا قىسىم يازلىق ۋاقتى + + + + + شەرقىي قىسىم ۋاقتى + شەرقىي قىسىم ئۆلچەملىك ۋاقتى + شەرقىي قىسىم يازلىق ۋاقتى + + + + + تاغ ۋاقتى + تاغ ئۆلچەملىك ۋاقتى + تاغ يازلىق ۋاقتى + + + + + تىنچ ئوكيان ۋاقتى + تىنچ ئوكيان ئۆلچەملىك ۋاقتى + تىنچ ئوكيان يازلىق ۋاقتى + + + + + ئانادىر ۋاقتى + ئانادىر ئۆلچەملىك ۋاقتى + ئانادىر يازلىق ۋاقتى + + + + + ئاقتاي ۋاقتى + ئاقتاي ئۆلچەملىك ۋاقتى + ئاقتاي يازلىق ۋاقتى + + + + + ئاقتۆبە ۋاقتى + ئاقتۆبە ئۆلچەملىك ۋاقتى + ئاقتۆبە يازلىق ۋاقتى + + + + + ئەرەب ۋاقتى + ئەرەب ئۆلچەملىك ۋاقتى + ئەرەب يازلىق ۋاقتى + + + + + ئارگېنتىنا ۋاقتى + ئارگېنتىنا ئۆلچەملىك ۋاقتى + ئارگېنتىنا يازلىق ۋاقتى + + + + + غەربىي ئارگېنتىنا ۋاقتى + غەربىي ئارگېنتىنا ئۆلچەملىك ۋاقتى + غەربىي ئارگېنتىنا يازلىق ۋاقتى + + + + + ئەرمېنىيە ۋاقتى + ئەرمېنىيە ئۆلچەملىك ۋاقتى + ئەرمېنىيە يازلىق ۋاقتى + + + + + ئاتلانتىك ئوكيان ۋاقتى + ئاتلانتىك ئوكيان ئۆلچەملىك ۋاقتى + ئاتلانتىك ئوكيان يازلىق ۋاقتى + + + + + ئاۋسترالىيە ئوتتۇرا قىسىم ۋاقتى + ئاۋسترالىيە ئوتتۇرا قىسىم ئۆلچەملىك ۋاقتى + ئاۋسترالىيە ئوتتۇرا قىسىم يازلىق ۋاقتى + + + + + ئاۋسترالىيە ئوتتۇرا غەربىي قىسىم ۋاقتى + ئاۋستىرالىيە ئوتتۇرا غەربىي قىسىم ئۆلچەملىك ۋاقتى + ئاۋسترالىيە ئوتتۇرا غەربىي قىسىم يازلىق ۋاقتى + + + + + ئاۋسترالىيە شەرقىي قىسىم ۋاقتى + ئاۋسترالىيە شەرقىي قىسىم ئۆلچەملىك ۋاقتى + ئاۋسترالىيە شەرقىي قىسىم يازلىق ۋاقتى + + + + + ئاۋسترالىيە غەربىي قىسىم ۋاقتى + ئاۋسترالىيە غەربىي قىسىم ئۆلچەملىك ۋاقتى + ئاۋسترالىيە غەربىي قىسىم يازلىق ۋاقتى + + + + + ئەزەربەيجان ۋاقتى + ئەزەربەيجان ئۆلچەملىك ۋاقتى + ئەزەربەيجان يازلىق ۋاقتى + + + + + ئازور ۋاقتى + ئازور ئۆلچەملىك ۋاقتى + ئازور يازلىق ۋاقتى + + + + + باڭلادىش ۋاقتى + باڭلادىش ئۆلچەملىك ۋاقتى + باڭلادىش يازلىق ۋاقتى + + + + + بۇتان ۋاقتى + + + + + بولىۋىيە ۋاقتى + + + + + بىرازىلىيە ۋاقتى + بىرازىلىيە ئۆلچەملىك ۋاقتى + بىرازىلىيە يازلىق ۋاقتى + + + + + بىرۇنىي دارۇسسالام ۋاقتى + + + + + يېشىل تۇمشۇق ۋاقتى + يېشىل تۇمشۇق ئۆلچەملىك ۋاقتى + يېشىل تۇمشۇق يازلىق ۋاقتى + + + + + كاسېي ۋاقتى + + + + + چاموررو ئۆلچەملىك ۋاقتى + + + + + چاتام ۋاقتى + چاتام ئۆلچەملىك ۋاقتى + چاتام يازلىق ۋاقتى + + + + + چىلى ۋاقتى + چىلى ئۆلچەملىك ۋاقتى + چىلى يازلىق ۋاقتى + + + + + جۇڭگو ۋاقتى + جۇڭگو ئۆلچەملىك ۋاقتى + جۇڭگو يازلىق ۋاقتى + + + + + چويبالسان ۋاقتى + چويبالسان ئۆلچەملىك ۋاقتى + چويبالسان يازلىق ۋاقتى + + + + + روژدېستۋو ئارىلى ۋاقتى + + + + + كوكۇس ئارىلى ۋاقتى + + + + + كولومبىيە ۋاقتى + كولومبىيە ئۆلچەملىك ۋاقتى + كولومبىيە يازلىق ۋاقتى + + + + + كۇك ئاراللىرى ۋاقتى + كۇك ئاراللىرى ئۆلچەملىك ۋاقتى + كۇك ئاراللىرى يېرىم يازلىق ۋاقتى + + + + + كۇبا ۋاقتى + كۇبا ئۆلچەملىك ۋاقتى + كۇبا يازلىق ۋاقتى + + + + + داۋىس ۋاقتى + + + + + دۇمونت-دۇرۋىل ۋاقتى + + + + + شەرقىي تىمور ۋاقتى + + + + + ئېستېر ئارىلى ۋاقتى + پاسكاليا ئارىلى ئۆلچەملىك ۋاقتى + ئېستېر ئارىلى يازلىق ۋاقتى + + + + + ئېكۋادور ۋاقتى + + + + + ئوتتۇرا ياۋروپا ۋاقتى + ئوتتۇرا ياۋروپا ئۆلچەملىك ۋاقتى + ئوتتۇرا ياۋروپا يازلىق ۋاقتى + + + + + شەرقىي ياۋروپا ۋاقتى + شەرقىي ياۋروپا ئۆلچەملىك ۋاقتى + شەرقىي ياۋروپا يازلىق ۋاقتى + + + + + غەربىي ياۋروپا ۋاقتى + غەربىي ياۋروپا ئۆلچەملىك ۋاقتى + غەربىي ياۋروپا يازلىق ۋاقتى + + + + + فالكلاند ئاراللىرى ۋاقتى + فالكلاند ئاراللىرى ئۆلچەملىك ۋاقتى + فالكلاند ئاراللىرى يازلىق ۋاقتى + + + + + فىجى ۋاقتى + فىجى ئۆلچەملىك ۋاقتى + فىجى يازلىق ۋاقتى + + + + + فىرانسىيەگە قاراشلىق گىۋىيانا ۋاقتى + + + + + فىرانسىيەگە قاراشلىق جەنۇبىي ۋە ئانتاركتىكا ۋاقتى + + + + + گالاپاگوس ۋاقتى + + + + + گامبىيېر ۋاقتى + + + + + گىرۇزىيە ۋاقتى + گىرۇزىيە ئۆلچەملىك ۋاقتى + گىرۇزىيە يازلىق ۋاقتى + + + + + گىلبېرت ئاراللىرى ۋاقتى + + + + + گىرىنۋىچ ۋاقتى + + + + + شەرقىي گىرېنلاند ۋاقتى + شەرقىي گىرېنلاند ئۆلچەملىك ۋاقتى + شەرقىي گىرېنلاند يازلىق ۋاقتى + + + + + غەربىي گىرېنلاند ۋاقتى + غەربىي گىرېنلاند ئۆلچەملىك ۋاقتى + غەربىي گىرېنلاند يازلىق ۋاقتى + + + + + گۇئام ئۆلچەملىك ۋاقتى + + + + + گۇلف ئۆلچەملىك ۋاقتى + + + + + گىۋىيانا ۋاقتى + + + + + ھاۋاي-ئالېيۇت ۋاقتى + ھاۋاي-ئالېيۇت ئۆلچەملىك ۋاقتى + ھاۋاي-ئالېيۇت يازلىق ۋاقتى + + + + + شياڭگاڭ ۋاقتى + شياڭگاڭ ئۆلچەملىك ۋاقتى + شياڭگاڭ يازلىق ۋاقتى + + + + + خوۋد ۋاقتى + خوۋد ئۆلچەملىك ۋاقتى + خوۋد يازلىق ۋاقتى + + + + + ھىندىستان ئۆلچەملىك ۋاقتى + + + + + ھىندى ئوكيان ۋاقتى + + + + + ھىندى چىنى ۋاقتى + + + + + ئوتتۇرا ھىندونېزىيە ۋاقتى + + + + + شەرقىي ھىندونېزىيە ۋاقتى + + + + + غەربىي ھىندونېزىيە ۋاقتى + + + + + ئىران ۋاقتى + ئىران ئۆلچەملىك ۋاقتى + ئىران يازلىق ۋاقتى + + + + + ئىركۇتسك ۋاقتى + ئىركۇتسك ئۆلچەملىك ۋاقتى + ئىركۇتسك يازلىق ۋاقتى + + + + + ئىسرائىلىيە ۋاقتى + ئىسرائىلىيە ئۆلچەملىك ۋاقتى + ئىسرائىلىيە يازلىق ۋاقتى + + + + + ياپونىيە ۋاقتى + ياپونىيە ئۆلچەملىك ۋاقتى + ياپونىيە يازلىق ۋاقتى + + + + + پېتروپاۋلوۋسك-كامچاتكسكى ۋاقتى + پېتروپاۋلوۋسك-كامچاتكسكى ئۆلچەملىك ۋاقتى + پېتروپاۋلوۋسك-كامچاتكسكى يازلىق ۋاقتى + + + + + شەرقىي قازاقىستان ۋاقتى + + + + + غەربىي قازاقىستان ۋاقتى + + + + + كورىيە ۋاقتى + كورىيە ئۆلچەملىك ۋاقتى + كورىيە يازلىق ۋاقتى + + + + + كوسرائې ۋاقتى + + + + + كىراسنويارسك ۋاقتى + كىراسنويارسك ئۆلچەملىك ۋاقتى + كىراسنويارسك يازلىق ۋاقتى + + + + + قىرغىزىستان ۋاقتى + + + + + سىرى لانكا ۋاقتى + + + + + لاين ئاراللىرى ۋاقتى + + + + + لورد-خاي ۋاقتى + لورد-خاي ئۆلچەملىك ۋاقتى + لورد-خاي يازلىق ۋاقتى + + + + + ئاۋمېن ۋاقتى + ئاۋمېن ئۆلچەملىك ۋاقتى + ئاۋمېن يازلىق ۋاقتى + + + + + ماككۇۋارى ئاراللىرى ۋاقتى + + + + + ماگادان ۋاقتى + ماگادان ئۆلچەملىك ۋاقتى + ماگادان يازلىق ۋاقتى + + + + + مالايشىيا ۋاقتى + + + + + مالدىۋې ۋاقتى + + + + + ماركىز ۋاقتى + + + + + مارشال ئاراللىرى ۋاقتى + + + + + ماۋرىتىئۇس ۋاقتى + ماۋرىتىئۇس ئۆلچەملىك ۋاقتى + ماۋرىتىئۇس يازلىق ۋاقتى + + + + + ماۋسون ۋاقتى + + + + + مېكسىكا غەربىي شىمالىي قىسىم ۋاقتى + مېكسىكا غەربىي شىمالىي قىسىم ئۆلچەملىك ۋاقتى + مېكسىكا غەربىي شىمالىي قىسىم يازلىق ۋاقتى + + + + + مېكسىكا تىنچ ئوكيان ۋاقتى + مېكسىكا تىنچ ئوكيان ئۆلچەملىك ۋاقتى + مېكسىكا تىنچ ئوكيان يازلىق ۋاقتى + + + + + ئۇلانباتور ۋاقتى + ئۇلانباتور ئۆلچەملىك ۋاقتى + ئۇلانباتور يازلىق ۋاقتى + + + + + موسكۋا ۋاقتى + موسكۋا ئۆلچەملىك ۋاقتى + موسكۋا يازلىق ۋاقتى + + + + + بىرما ۋاقتى + + + + + ناۋرۇ ۋاقتى + + + + + نېپال ۋاقتى + + + + + يېڭى كالېدونىيە ۋاقتى + يېڭى كالېدونىيە ئۆلچەملىك ۋاقتى + يېڭى كالېدونىيە يازلىق ۋاقتى + + + + + يېڭى زېلاندىيە ۋاقتى + يېڭى زېلاندىيە ئۆلچەملىك ۋاقتى + يېڭى زېلاندىيە يازلىق ۋاقتى + + + + + نىۋفوئۇنلاند ۋاقتى + نىۋفوئۇنلاند ئۆلچەملىك ۋاقتى + نىۋفوئۇنلاند يازلىق ۋاقتى + + + + + نىيۇئې ۋاقتى + + + + + نورفولك ئاراللىرى ۋاقتى + + + + + فېرناندو-نورونخا ۋاقتى + فېرناندو-نورونخا ئۆلچەملىك ۋاقتى + فېرناندو-نورونخا يازلىق ۋاقتى + + + + + شىمالىي مارىيانا ئاراللىرى ۋاقتى + + + + + نوۋوسىبىرسك ۋاقتى + نوۋوسىبىرسك ئۆلچەملىك ۋاقتى + نوۋوسىبىرسك يازلىق ۋاقتى + + + + + ئومسك ۋاقتى + ئومسك ئۆلچەملىك ۋاقتى + ئومسك يازلىق ۋاقتى + + + + + پاكىستان ۋاقتى + پاكىستان ئۆلچەملىك ۋاقتى + پاكىستان يازلىق ۋاقتى + + + + + پالاۋ ۋاقتى + + + + + پاپۇئا يېڭى گىۋىنېيەسى ۋاقتى + + + + + پاراگۋاي ۋاقتى + پاراگۋاي ئۆلچەملىك ۋاقتى + پاراگۋاي يازلىق ۋاقتى + + + + + پېرۇ ۋاقتى + پېرۇ ئۆلچەملىك ۋاقتى + پېرۇ يازلىق ۋاقتى + + + + + فىلىپپىن ۋاقتى + فىلىپپىن ئۆلچەملىك ۋاقتى + فىلىپپىن يازلىق ۋاقتى + + + + + فېنىكس ئاراللىرى ۋاقتى + + + + + ساينىت پىئېر ۋە مىكېلون ۋاقتى + ساينىت پىئېر ۋە مىكېلون ئۆلچەملىك ۋاقتى + ساينىت پىئېر ۋە مىكېلون يازلىق ۋاقتى + + + + + پىتكاير ۋاقتى + + + + + پونپېي ۋاقتى + + + + + قىزىلئوردا ۋاقتى + قىزىلئوردا ئۆلچەملىك ۋاقتى + قىزىلئوردا يازلىق ۋاقتى + + + + + رېئونىيون ۋاقتى + + + + + روتېرا ۋاقتى + + + + + ساخارىن ۋاقتى + ساخارىن ئۆلچەملىك ۋاقتى + ساخارىن يازلىق ۋاقتى + + + + + سامارا ۋاقتى + سامارا ئۆلچەملىك ۋاقتى + سامارا يازلىق ۋاقتى + + + + + ساموئا ۋاقتى + ساموئا ئۆلچەملىك ۋاقتى + سەمەرقەنت يازلىق ۋاقتى + + + + + سېيشېل ۋاقتى + + + + + سىنگاپور ۋاقتى + + + + + سولومون ئاراللىرى ۋاقتى + + + + + جەنۇبىي جورجىيە ۋاقتى + + + + + سۇرىنام ۋاقتى + + + + + شوۋا ۋاقتى + + + + + تايتى ۋاقتى + + + + + تەيبېي ۋاقتى + تەيبېي ئۆلچەملىك ۋاقتى + تەيبېي يازلىق ۋاقتى + + + + + تاجىكىستان ۋاقتى + + + + + توكېلاۋ ۋاقتى + + + + + تونگا ۋاقتى + تونگا ئۆلچەملىك ۋاقتى + تونگا يازلىق ۋاقتى + + + + + چۇك ۋاقتى + + + + + تۈركمەنىستان ۋاقتى + تۈركمەنىستان ئۆلچەملىك ۋاقتى + تۈركمەنىستان يازلىق ۋاقتى + + + + + تۇۋالۇ ۋاقتى + + + + + ئۇرۇگۋاي ۋاقتى + ئۇرۇگۋاي ئۆلچەملىك ۋاقتى + ئۇرۇگۋاي يازلىق ۋاقتى + + + + + ئۆزبېكىستان ۋاقتى + ئۆزبېكىستان ئۆلچەملىك ۋاقتى + ئۆزبېكىستان يازلىق ۋاقتى + + + + + ۋانۇئاتۇ ۋاقتى + ۋانۇئاتۇ ئۆلچەملىك ۋاقتى + ۋانۇئاتۇ يازلىق ۋاقتى + + + + + ۋېنېزۇئېلا ۋاقتى + + + + + ۋىلادىۋوستوك ۋاقتى + ۋىلادىۋوستوك ئۆلچەملىك ۋاقتى + ۋىلادىۋوستوك يازلىق ۋاقتى + + + + + ۋولگاگراد ۋاقتى + ۋولگاگراد ئۆلچەملىك ۋاقتى + ۋولگاگراد يازلىق ۋاقتى + + + + + ۋوستوك ۋاقتى + + + + + ۋېيك ئارىلى ۋاقتى + + + + + ۋاللىس ۋە فۇتۇنا ۋاقتى + + + + + ياكۇتسك ۋاقتى + ياكۇتسك ئۆلچەملىك ۋاقتى + ياكۇتسك يازلىق ۋاقتى + + + + + يېكاتېرىنبۇرگ ۋاقتى + يېكاتېرىنبۇرگ ئۆلچەملىك ۋاقتى + يېكاتېرىنبۇرگ يازلىق ۋاقتى + + + + + + + arabext + + + . + , + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 مىڭ + 0 مىڭ + 00 مىڭ + 00 مىڭ + 000 مىڭ + 000 مىڭ + 0 مىليون + 0 مىليون + 00 مىليون + 00 مىليون + 000 مىليون + 000 مىليون + 0 مىليارد + 0 مىليارد + 00 مىليارد + 00 مىليارد + 000 مىليارد + 000 مىليارد + 0 تىرىليون + 0 تىرىليون + 00 تىرىليون + 00 تىرىليون + 000 تىرىليون + 000 تىرىليون + + + + + 0مىڭ + 0مىڭ + 00مىڭ + 00مىڭ + 000مىڭ + 000مىڭ + 0مىليون + 0مىليون + 00مىليون + 00مىليون + 000مىليون + 000مىليون + 0 مىليارد + 0 مىليارد + 00 مىليارد + 00 مىليارد + 0 تىرىليون + 0 تىرىليون + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + ئاندورران پېسېتاسى + ئاندورران پېسېتاسى + ئاندورران پېسېتاسى + + + ئەرەب بىرلەشمە خەلىپىلىكى دەرھەمى + ئەرەب بىرلەشمە خەلىپىلىكى دەرھەمى + ئەرەب بىرلەشمە خەلىپىلىكى دەرھەمى + + + ئافغان ئافغانى (1927–2002) + ئافغان ئافغانى (1927–2002) + Aئافغان ئافغانى (1927–2002) + + + ئافغان ئافغانى + ئافغان ئافغانى + ئافغان ئافغانى + + + ئالبانىيە لېكى (1946–1965) + ئالبانىيە لېكى (1946–1965) + ئالبانىيە لېكى (1946–1965) + + + ئالبانىيە لېكى + ئالبانىيە لېكى + ئالبانىيە لېكى + + + ئەرمېنىيە دىرامى + ئەرمېنىيە دىرامى + ئەرمېنىيە دىرامى + + + گوللاندىيەگە قاراشلىق ئانتىللېن گۇلدېنى + گوللاندىيەگە قاراشلىق ئانتىللېن گۇلدېنى + گوللاندىيەگە قاراشلىق ئانتىللېن گۇلدېنى + + + ئانگولا كۇۋانزاسى + ئانگولا كۇۋانزاسى + ئانگولا كۇۋانزاسى + + + ئانگولا كۇۋانزاسى (1977–1991) + ئانگولا كۇۋانزاسى (1977–1991) + ئانگولا كۇۋانزاسى (1977–1991)) + + + ئانگولا يېڭى كۇۋانزاسى (1990–2000) + ئانگولا يېڭى كۇۋانزاسى (1990–2000) + ئانگولا يېڭى كۇۋانزاسى (1990–2000) + + + ئانگولا قايتا تەڭشەلگەن كۇۋانزاسى (1995–1999) + ئانگولا قايتا تەڭشەلگەن كۇۋانزاسى (1995–1999) + ئانگولا قايتا تەڭشەلگەن كۇۋانزاسى (1995–1999) + + + ئارگېنتىنا ئاۋسترالى + ئارگېنتىنا ئاۋسترالى + ئارگېنتىنا ئاۋسترالى + + + ئارگېنتىنا پېسو لېيى (1970–1983) + ئارگېنتىنا پېسو لېيى (1970–1983) + ئارگېنتىنا پېسو لېيى (1970–1983) + + + ئارگېنتىنا پېسوسى (1881–1970) + ئارگېنتىنا پېسوسى (1881–1970) + ئارگېنتىنا پېسوسى (1881–1970) + + + ئارگېنتىنا پېسوسى (1983–1985) + ئارگېنتىنا پېسوسى (1983–1985) + ئارگېنتىنا پېسوسى (1983–1985) + + + ئارگېنتىنا پېسوسى + ئارگېنتىنا پېسوسى + ئارگېنتىنا پېسوسى + + + ئاۋسترىيە شىللىڭى + ئاۋسترىيە شىللىڭى + ئاۋسترىيە شىللىڭى + + + ئاۋسترالىيە دوللىرى + ئاۋسترالىيە دوللىرى + ئاۋسترالىيە دوللىرى + + + ئارۇبان فىلورۇنى + ئارۇبان فىلورۇنى + ئارۇبان فىلورۇنى + + + ئەزەربەيجان ماناتى (1993–2006) + ئەزەربەيجان ماناتى (1993–2006) + ئەزەربەيجان ماناتى (1993–2006) + + + ئەزەربەيجان ماناتى + ئەزەربەيجان ماناتى + ئەزەربەيجان ماناتى + + + بوسنىيە-خېرتسېگوۋىنا دىنارى (1992–1994) + بوسنىيە-خېرتسېگوۋىنا دىنارى (1992–1994) + بوسنىيە-خېرتسېگوۋىنا دىنارى (1992–1994) + + + بوسنىيە-خېرتسېگوۋىنا ئالماشتۇرۇشچان ماركى + بوسنىيە-خېرتسېگوۋىنا ئالماشتۇرۇشچان ماركى + بوسنىيە-خېرتسېگوۋىنا ئالماشتۇرۇشچان ماركى + + + بوسنىيە-خېرتسېگوۋىنا يېڭى دىنارى (1994–1997) + بوسنىيە-خېرتسېگوۋىنا يېڭى دىنارى (1994–1997) + بوسنىيە-خېرتسېگوۋىنا يېڭى دىنارى (1994–1997) + + + باربادوس دوللىرى + باربادوس دوللىرى + باربادوس دوللىرى + + + باڭلادىش تاكاسى + باڭلادىش تاكاسى + باڭلادىش تاكاسى + + + بېلگىيە فرانكى (ئالماشتۇرۇشچان) + بېلگىيە فرانكى (ئالماشتۇرۇشچان) + بېلگىيە فرانكى (ئالماشتۇرۇشچان) + + + بېلگىيە فرانكى + بېلگىيە فرانكى + بېلگىيە فرانكى + + + بېلگىيە فرانكى (پۇل–مۇئامىلە) + بېلگىيە فرانكى (پۇل–مۇئامىلە) + بېلگىيە فرانكى (پۇل–مۇئامىلە) + + + بۇلغارىيە قاتتىق لېۋاسى + بۇلغارىيە قاتتىق لېۋاسى + بۇلغارىيە قاتتىق لېۋاسى + + + بۇلغارىيە ئىجتىمائىي لېۋاسى + بۇلغارىيە ئىجتىمائىي لېۋاسى + بۇلغارىيە ئىجتىمائىي لېۋاسى + + + بۇلغارىيە لېۋاسى + بۇلغارىيە لېۋاسى + بۇلغارىيە لېۋاسى + + + بۇلغارىيە لېۋاسى (1879–1952) + بۇلغارىيە لېۋاسى (1879–1952) + بۇلغارىيە لېۋاسى (1879–1952) + + + بەھرەين دىنارى + بەھرەين دىنارى + بەھرەين دىنارى + + + بۇرۇندى فرانكى + بۇرۇندى فرانكى + بۇرۇندى فرانكى + + + بېرمۇدا دوللىرى + بېرمۇدا دوللىرى + بېرمۇدا دوللىرى + + + بىرۇنېي دوللىرى + بىرۇنېي دوللىرى + بىرۇنېي دوللىرى + + + بولىۋىيە بولىۋىيانوسى + بولىۋىيە بولىۋىيانوسى + بولىۋىيە بولىۋىيانوسى + + + بولىۋىيە بولىۋىيانوسى (1863–1963) + بولىۋىيە بولىۋىيانوسى (1863–1963) + بولىۋىيە بولىۋىيانوسى (1863–1963) + + + بولىۋىيە پىسوسى + بولىۋىيە پىسوسى + بولىۋىيە پىسوسى + + + بولىۋىيە مۇدولى + بولىۋىيە مۇدولى + بولىۋىيە مۇدولى + + + بىرازىلىيە يېڭى كرۇزېروسى (1967–1986) + بىرازىلىيە يېڭى كرۇزېروسى (1967–1986) + بىرازىلىيە يېڭى كرۇزېروسى (1967–1986) + + + بىرازىلىيە كرۇزادوسى (1986–1989) + بىرازىلىيە كرۇزادوسى (1986–1989) + بىرازىلىيە كرۇزادوسى (1986–1989) + + + بىرازىلىيە يېڭى كرۇزېروسى (1990–1993) + بىرازىلىيە يېڭى كرۇزېروسى (1990–1993) + بىرازىلىيە يېڭى كرۇزېروسى (1990–1993) + + + بىرازىلىيە رىيالى + بىرازىلىيە رىيالى + بىرازىلىيە رىيالى + + + بىرازىلىيە يېڭى كرۇزادوسى (1989–1990) + بىرازىلىيە يېڭى كرۇزادوسى (1989–1990) + بىرازىلىيە يېڭى كرۇزادوسى (1989–1990) + + + بىرازىلىيە كرۇزېروسى (1993–1994) + بىرازىلىيە كرۇزېروسى (1993–1994) + بىرازىلىيە كرۇزېروسى (1993–1994) + + + بىرازىلىيە كرۇزېروسى (1942–1967) + بىرازىلىيە كرۇزېروسى (1942–1967) + بىرازىلىيە كرۇزېروسى (1942–1967) + + + باھاما دوللىرى + باھاما دوللىرى + باھاما دوللىرى + + + بۇتان نگۇلترۇمى + بۇتان نگۇلترۇمى + بۇتان نگۇلترۇمى + + + بىرما كىياتى + بىرما كىياتى + بىرما كىياتى + + + بوتسۋانا پۇلاسى + بوتسۋانا پۇلاسى + بوتسۋانا پۇلاسى + + + بېلارۇسىيە يېڭى رۇبلىسى (1994–1999) + بېلارۇسىيە يېڭى رۇبلىسى (1994–1999) + بېلارۇسىيە يېڭى رۇبلىسى (1994–1999) + + + بېلارۇسىيە رۇبلىسى + بېلارۇسىيە رۇبلىسى + بېلارۇسىيە رۇبلىسى + + + بېلىز دوللىرى + بېلىز دوللىرى + بېلىز دوللىرى + + + كانادا دوللىرى + كانادا دوللىرى + كانادا دوللىرى + + + كونگو فرانكى + كونگو فرانكى + كونگو فرانكى + + + WIR ياۋرو + WIR ياۋرو + WIR ياۋرو + + + شىۋېتسىيە فرانكى + شىۋېتسىيە فرانكى + شىۋېتسىيە فرانكى + + + WIR فرانكى + WIR فرانكى + WIR فرانكى + + + چىلى ئېسكۇدوسى + چىلى ئېسكۇدوسى + چىلى ئېسكۇدوسى + + + چىلى ھېسابات بىرلىكى (UF) + چىلى ھېسابات بىرلىكى (UF) + چىلى ھېسابات بىرلىكى (UF) + + + چىلى پېسوسى + چىلى پېسوسى + چىلى پېسوسى + + + جۇڭگو خەلق بانكىسى دوللىرى + جۇڭگو خەلق بانكىسى دوللىرى + جۇڭگو خەلق بانكىسى دوللىرى + + + جۇڭگو يۈەنى + جۇڭگو يۈەنى + جۇڭگو يۈەنى + + + + كولومبىيە پېسوسى + كولومبىيە پېسوسى + كولومبىيە پېسوسى + + + كولومبىيە ھەقىقىي قىممەت بىرلىكى + كولومبىيە ھەقىقىي قىممەت بىرلىكى + كولومبىيە ھەقىقىي قىممەت بىرلىكى + + + كوستارىكا كولونى + كوستارىكا كولونى + كوستارىكا كولونى + + + سېربىيە دىنارى (2002–2006) + سېربىيە دىنارى (2002–2006) + سېربىيە دىنارى (2002–2006) + + + چېخسىلوۋاكىيە قاتتىق كورۇناسى + چېخسىلوۋاكىيە قاتتىق كورۇناسى + چېخسىلوۋاكىيە قاتتىق كورۇناسى + + + كۇبا ئالماشتۇرۇشچان پېسوسى + كۇبا ئالماشتۇرۇشچان پېسوسى + كۇبا ئالماشتۇرۇشچان پېسوسى + + + كۇبا پېسوسى + كۇبا پېسوسى + كۇبا پېسوسى + + + يېشىل تۇمشۇق ئېسكۇدوسى + يېشىل تۇمشۇق ئېسكۇدوسى + يېشىل تۇمشۇق ئېسكۇدوسى + + + سىپرۇس فوند ستېرلىڭى + سىپرۇس فوند ستېرلىڭى + سىپرۇس فوند ستېرلىڭى + + + چېخ جۇمھۇرىيىتى كورۇناسى + چېخ جۇمھۇرىيىتى كورۇناسى + چېخ جۇمھۇرىيىتى كورۇناسى + + + شەرقىي گېرمانىيە ماركى + شەرقىي گېرمانىيە ماركى + شەرقىي گېرمانىيە ماركى + + + گېرمانىيە ماركى + گېرمانىيە ماركى + گېرمانىيە ماركى + + + جىبۇتى فرانكى + جىبۇتى فرانكى + جىبۇتى فرانكى + + + دانىيە كرونى + دانىيە كرونى + دانىيە كرونى + + + دومىنىكا پېسوسى + دومىنىكا پېسوسى + دومىنىكا پېسوسى + + + ئالجىرىيە دىنارى + ئالجىرىيە دىنارى + ئالجىرىيە دىنارى + + + ئېكۋادور سۇكرېسى + ئېكۋادور سۇكرېسى + ئېكۋادور سۇكرېسى + + + ئېكۋادور تۇراقلىق قىممەت بىرلىكى + ئېكۋادور تۇراقلىق قىممەت بىرلىكى + ئېكۋادور تۇراقلىق قىممەت بىرلىكى + + + ئېستونىيە كرۇنى + ئېستونىيە كرۇنى + ئېستونىيە كرۇنى + + + مىسىر فوند سىتېرلىڭى + مىسىر فوند سىتېرلىڭى + مىسىر فوند سىتېرلىڭى + + + ئېرىترېيە ناكفاسى + ئېرىترېيە ناكفاسى + ئېرىترېيە ناكفاسى + + + ئىسپانىيە پېسېتاسى (A ھېسابات) + ئىسپانىيە پېسېتاسى (A ھېسابات) + ئىسپانىيە پېسېتاسى (A ھېسابات) + + + ئىسپانىيە پېسېتاسى (ئالماشتۇرۇش ھېساباتى) + ئىسپانىيە پېسېتاسى (ئالماشتۇرۇش ھېساباتى) + ئىسپانىيە پېسېتاسى (ئالماشتۇرۇش ھېساباتى) + + + ئىسپانىيە پېسېتاسى + ئىسپانىيە پېسېتاسى + ئىسپانىيە پېسېتاسى + + + ئېفىيوپىيە بىررى + ئېفىيوپىيە بىررى + ئېفىيوپىيە بىررى + + + ياۋرو + ياۋرو + ياۋرو + + + فىنلاندىيە مارككاسى + فىنلاندىيە مارككاسى + فىنلاندىيە مارككاسى + + + فىجى دوللىرى + فىجى دوللىرى + فىجى دوللىرى + + + فالكلاند ئاراللىرى فوند سىتېرلىڭى + فالكلاند ئاراللىرى فوند سىتېرلىڭى + فالكلاند ئاراللىرى فوند سىتېرلىڭى + + + فىرانسىيە فرانكى + فىرانسىيە فرانكى + فىرانسىيە فرانكى + + + ئەنگلىيە فوند سىتېرلىڭى + ئەنگلىيە فوند سىتېرلىڭى + ئەنگلىيە فوند سىتېرلىڭى + + + گىرۇزىيە كۇپون لارىتى + گىرۇزىيە كۇپون لارىتى + گىرۇزىيە كۇپون لارىتى + + + گىرۇزىيە لارىسى + گىرۇزىيە لارىسى + گىرۇزىيە لارىسى + + + گانا سېدىسى (1979–2007) + گانا سېدىسى (1979–2007) + گانا سېدىسى (1979–2007) + + + گانا سېدىسى + گانا سېدىسى + گانا سېدىسى + + + جەبىلتارىق فوند سىتېرلىڭى + جەبىلتارىق فوند سىتېرلىڭى + جەبىلتارىق فوند سىتېرلىڭى + + + گامبىيە دالاسى + گامبىيە دالاسى + گامبىيە دالاسى + + + گىۋىنېيە فرانكى + گىۋىنېيە فرانكى + گىۋىنېيە فرانكى + + + گىۋىنېيە سىلىسى + گىۋىنېيە سىلىسى + گىۋىنېيە سىلىسى + + + ئېكۋاتور گىۋىنېيە ئېكۋېلېسى + ئېكۋاتور گىۋىنېيە ئېكۋېلېسى + ئېكۋاتور گىۋىنېيە ئېكۋېلېسى + + + گىرېتسىيە دراخماسى + گىرېتسىيە دراخماسى + گىرېتسىيە دراخماسى + + + گىۋاتېمالا كۇۋېتزالى + گىۋاتېمالا كۇۋېتزالى + گىۋاتېمالا كۇۋېتزالى + + + پورتۇگالىيە گىۋىنېيە ئېسكۇدوسى + پورتۇگالىيە گىۋىنېيە ئېسكۇدوسى + پورتۇگالىيە گىۋىنېيە ئېسكۇدوسى + + + گىۋىنېيە-بىسسائۇ پېسوسى + گىۋىنېيە-بىسسائۇ پېسوسى + گىۋىنېيە-بىسسائۇ پېسوسى + + + گىۋىئانا دوللىرى + گىۋىئانا دوللىرى + گىۋىئانا دوللىرى + + + شياڭگاڭ دوللىرى + شياڭگاڭ دوللىرى + شياڭگاڭ دوللىرى + + + ھوندۇراس لېمپىراسى + ھوندۇراس لېمپىراسى + ھوندۇراس لېمپىراسى + + + كىرودىيە دىنارى + كىرودىيە دىنارى + كىرودىيە دىنارى + + + كىرودىيە كۇناسى + كىرودىيە كۇناسى + كىرودىيە كۇناسى + + + ھايتى گۇردېسى + ھايتى گۇردېسى + ھايتى گۇردېسى + + + ۋېنگىرىيە فورېنتى + ۋېنگىرىيە فورېنتى + ۋېنگىرىيە فورېنتى + + + ھىندونېزىيە رۇپىيەسى + ھىندونېزىيە رۇپىيەسى + ھىندونېزىيە رۇپىيەسى + + + ئىرېلاندىيە فوندستېرلىڭى + ئىرېلاندىيە فوندستېرلىڭى + ئىرېلاندىيە فوندستېرلىڭى + + + ئىسرائىلىيە فوندستېرلىڭى + ئىسرائىلىيە فوندستېرلىڭى + ئىسرائىلىيە فوندستېرلىڭى + + + ئىسرائىل شېكېلى (1980–1985) + ئىسرائىل شېكېلى (1980–1985) + ئىسرائىل شېكېلى (1980–1985) + + + ئىسرائىل يېڭى شېكېلى + ئىسرائىل يېڭى شېكېلى + ئىسرائىل يېڭى شېكېلى + + + ھىندىستان رۇپىسى + ھىندىستان رۇپىسى + ھىندىستان رۇپىسى + + + ئىراق دىنارى + ئىراق دىنارى + ئىراق دىنارى + + + ئىران رىيالى + ئىران رىيالى + ئىران رىيالى + + + ئىسلاندىيە كروناسى (1918–1981) + ئىسلاندىيە كروناسى (1918–1981) + ئىسلاندىيە كروناسى (1918–1981) + + + ئىسلاندىيە كروناسى + ئىسلاندىيە كروناسى + ئىسلاندىيە كروناسى + + + ئىتالىيە لىراسى + ئىتالىيە لىراسى + ئىتالىيە لىراسى + + + يامايكا دوللىرى + يامايكا دوللىرى + يامايكا دوللىرى + + + ئىيوردانىيە دىنارى + ئىيوردانىيە دىنارى + ئىيوردانىيە دىنارى + + + ياپونىيە يېنى + ياپونىيە يېنى + ياپونىيە يېنى + + + كېنىيە شىللىڭى + كېنىيە شىللىڭى + كېنىيە شىللىڭى + + + قىرغىزىستان سومى + قىرغىزىستان سومى + قىرغىزىستان سومى + + + كامبودژا رىئېلى + كامبودژا رىئېلى + كامبودژا رىئېلى + + + كومورو فرانكى + كومورو فرانكى + كومورو فرانكى + + + شىمالىي كورېيە ۋونى + شىمالىي كورېيە ۋونى + شىمالىي كورېيە ۋونى + + + جەنۇبىي كورېيە خۋانى (1953–1962) + جەنۇبىي كورېيە خۋانى (1953–1962) + جەنۇبىي كورېيە خۋانى (1953–1962) + + + جەنۇبىي كورېيە ۋونى (1945–1953) + جەنۇبىي كورېيە ۋونى (1945–1953) + جەنۇبىي كورېيە ۋونى (1945–1953) + + + جەنۇبىي كورېيە ۋونى + جەنۇبىي كورېيە ۋونى + جەنۇبىي كورېيە ۋونى + + + كۇۋەيت دىنارى + كۇۋەيت دىنارى + كۇۋەيت دىنارى + + + كايمان ئاراللىرى دوللىرى + كايمان ئاراللىرى دوللىرى + كايمان ئاراللىرى دوللىرى + + + قازاقىستان تەڭگىسى + قازاقىستان تەڭگىسى + قازاقىستان تەڭگىسى + + + لائوس كىپى + لائوس كىپى + لائوس كىپى + + + لىۋان فوند سىتېرلىڭى + لىۋان فوند سىتېرلىڭى + لىۋان فوند سىتېرلىڭى + + + سىرىلانكا رۇپىسى + سىرىلانكا رۇپىسى + سىرىلانكا رۇپىسى + + + لىبېرىيە دوللىرى + لىبېرىيە دوللىرى + لىبېرىيە دوللىرى + + + لېسوتو لوتىسى + لېسوتو لوتىسى + لېسوتو لوتىسى + + + لىتۋا لىتاسى + لىتۋا لىتاسى + لىتۋا لىتاسى + + + لىتۋا تالوناسى + لىتۋا تالوناسى + لىتۋا تالوناسى + + + ليۇكسېمبۇرگ ئالماشتۇرۇشچان پېسوسى + ليۇكسېمبۇرگ ئالماشتۇرۇشچان پېسوسى + ليۇكسېمبۇرگ ئالماشتۇرۇشچان پېسوسى + + + ليۇكسېمبۇرگ فرانكى + ليۇكسېمبۇرگ فرانكى + ليۇكسېمبۇرگ فرانكى + + + لىيۇكسېمبۇرگ پۇل-مۇئامىلە فرانكى + لىيۇكسېمبۇرگ پۇل-مۇئامىلە فرانكى + لىيۇكسېمبۇرگ پۇل-مۇئامىلە فرانكى + + + لاتۋىيە لاتى + لاتۋىيە لاتى + لاتۋىيە لاتى + + + لاتۋىيە رۇبلىسى + لاتۋىيە رۇبلىسى + لاتۋىيە رۇبلىسى + + + لىۋىيە دىنارى + لىۋىيە دىنارى + لىۋىيە دىنارى + + + ماراكەش دىرھەمى + ماراكەش دىرھەمى + ماراكەش دىرھەمى + + + ماراكەش فرانكى + ماراكەش فرانكى + ماراكەش فرانكى + + + موناكو فرانكى + موناكو فرانكى + موناكو فرانكى + + + مولدوۋا كۇپونى + مولدوۋا كۇپونى + مولدوۋا كۇپونى + + + مولدوۋا لېۋى + مولدوۋا لېۋى + مولدوۋا لېۋى + + + ماداغاسقار ئارىئارىسى + ماداغاسقار ئارىئارىسى + ماداغاسقار ئارىئارىسى + + + ماداغاسقار فرانكى + ماداغاسقار فرانكى + ماداغاسقار فرانكى + + + ماكېدونىيە دىنارى + ماكېدونىيە دىنارى + ماكېدونىيە دىنارى + + + ماكېدونىيە دىنارى (1992–1993) + ماكېدونىيە دىنارى (1992–1993) + ماكېدونىيە دىنارى (1992–1993) + + + مالى فرانكى + مالى فرانكى + مالى فرانكى + + + مىيانمار كىياتى + مىيانمار كىياتى + مىيانمار كىياتى + + + موڭغۇلىيە تۈگرىكى + موڭغۇلىيە تۈگرىكى + موڭغۇلىيە تۈگرىكى + + + ئاۋمېن پاتاكاسى + ئاۋمېن پاتاكاسى + ئاۋمېن پاتاكاسى + + + ماۋرىتانىيە ئۇگىيەسى + ماۋرىتانىيە ئۇگىيەسى + ماۋرىتانىيە ئۇگىيەسى + + + مالتا لىراسى + مالتا لىراسى + مالتا لىراسى + + + مالتا فوندستېرلىڭى + مالتا فوندستېرلىڭى + مالتا فوندستېرلىڭى + + + ماۋرىتىئۇس رۇپىسى + ماۋرىتىئۇس رۇپىسى + ماۋرىتىئۇس رۇپىسى + + + مالدىۋى رۇپىسى + مالدىۋى رۇپىسى + مالدىۋى رۇپىسى + + + مالدىۋى رۇفىياسى + مالدىۋى رۇفىياسى + مالدىۋى رۇفىياسى + + + مالاۋى كۋاچاسى + مالاۋى كۋاچاسى + مالاۋى كۋاچاسى + + + مېكسىكا پېسوسى + مېكسىكا پېسوسى + مېكسىكا پېسوسى + + + مېكسىكا كۈمۈش پېسوسى (1861–1992) + مېكسىكا كۈمۈش پېسوسى (1861–1992) + مېكسىكا كۈمۈش پېسوسى (1861–1992) + + + مېكسىكا مەبلەغ بىرلىكى + مېكسىكا مەبلەغ بىرلىكى + مېكسىكا مەبلەغ بىرلىكى + + + مالايشىيا رىڭگىتى + مالايشىيا رىڭگىتى + مالايشىيا رىڭگىتى + + + موزامبىك ئېسكۇدوسى + موزامبىك ئېسكۇدوسى + موزامبىك ئېسكۇدوسى + + + موزامبىك مېتىكالى (1980–2006) + موزامبىك مېتىكالى (1980–2006) + موزامبىك مېتىكالى (1980–2006) + + + موزامبىك مېتىكالى + موزامبىك مېتىكالى + موزامبىك مېتىكالى + + + نامىبىيە دوللىرى + نامىبىيە دوللىرى + نامىبىيە دوللىرى + + + نىگېرىيە نايراسى + نىگېرىيە نايراسى + نىگېرىيە نايراسى + + + نىگېرىيە كوردوباسى (1988–1991) + نىگېرىيە كوردوباسى (1988–1991) + نىگېرىيە كوردوباسى (1988–1991) + + + نىگېرىيە كوردوباسى + نىگېرىيە كوردوباسى + نىگېرىيە كوردوباسى + + + گوللاندىيە گۈلدىنى + گوللاندىيە گۈلدىنى + گوللاندىيە گۈلدىنى + + + نورۋېگىيە كرونى + نورۋېگىيە كرونى + نورۋېگىيە كرونى + + + نېپال رۇپىسى + نېپال رۇپىسى + نېپال رۇپىسى + + + يېڭى زېلاندىيە دوللىرى + يېڭى زېلاندىيە دوللىرى + يېڭى زېلاندىيە دوللىرى + + + ئومان رىيالى + ئومان رىيالى + ئومان رىيالى + + + پاناما بالبوئاسى + پاناما بالبوئاسى + پاناما بالبوئاسى + + + پېرۇ ئىنتىسى + پېرۇ ئىنتىسى + پېرۇ ئىنتىسى + + + پېرۇ يېڭى سولى + پېرۇ يېڭى سولى + پېرۇ يېڭى سولى + + + پېرۇ سولى (1863–1965) + پېرۇ سولى (1863–1965) + پېرۇ سولى (1863–1965) + + + پاپۇئا يېڭى گىۋىنېيە كىناسى + پاپۇئا يېڭى گىۋىنېيە كىناسى + پاپۇئا يېڭى گىۋىنېيە كىناسى + + + فىلىپپىن پېسوسى + فىلىپپىن پېسوسى + فىلىپپىن پېسوسى + + + پاكىستان رۇپىسى + پاكىستان رۇپىسى + پاكىستان رۇپىسى + + + پولشا زىلوتى + پولشا زىلوتى + پولشا زىلوتى + + + پولشا زىلوتى (1950–1995) + پولشا زىلوتى (1950–1995) + پولشا زىلوتى (1950–1995) + + + پورتۇگالىيە ئېسكۇدوسى + پورتۇگالىيە ئېسكۇدوسى + پورتۇگالىيە ئېسكۇدوسى + + + پاراگۋاي گۇئارانىسى + پاراگۋاي گۇئارانىسى + پاراگۋاي گۇئارانىسى + + + قاتار رىيالى + قاتار رىيالى + قاتار رىيالى + + + رودېزىيە دوللىرى + رودېزىيە دوللىرى + رودېزىيە دوللىرى + + + رۇمىنىيە لېيى (1952–2006) + رۇمىنىيە لېيى (1952–2006) + رۇمىنىيە لېيى (1952–2006) + + + رۇمىنىيە لېيى + رۇمىنىيە لېيى + رۇمىنىيە لېيى + + + سېربىيە دىنارى + سېربىيە دىنارى + سېربىيە دىنارى + + + رۇسىيە رۇبلىسى + رۇسىيە رۇبلىسى + رۇسىيە رۇبلىسى + + + رۇسىيە رۇبلىسى (1991–1998) + رۇسىيە رۇبلىسى (1991–1998) + رۇسىيە رۇبلىسى (1991–1998) + + + رۋاندا فرانكى + رۋاندا فرانكى + رۋاندا فرانكى + + + سەئۇدى رىيالى + سەئۇدى رىيالى + سەئۇدى رىيالى + + + سولومون ئاراللىرى دوللىرى + سولومون ئاراللىرى دوللىرى + سولومون ئاراللىرى دوللىرى + + + سېيشېل رۇپىسى + سېيشېل رۇپىسى + سېيشېل رۇپىسى + + + سۇدان دىنارى (1992–2007) + سۇدان دىنارى (1992–2007) + سۇدان دىنارى (1992–2007) + + + سۇدان فوندستېرلىڭى + سۇدان فوندستېرلىڭى + سۇدان فوندستېرلىڭى + + + سۇدان فوندستېرلىڭى (1957–1998) + سۇدان فوندستېرلىڭى (1957–1998) + سۇدان فوندستېرلىڭى (1957–1998) + + + شىۋېتسىيە كروناسى + شىۋېتسىيە كروناسى + شىۋېتسىيە كروناسى + + + سىنگاپور دوللىرى + سىنگاپور دوللىرى + سىنگاپور دوللىرى + + + ساينىت-ھېلېنا فوندستېرلىڭى + ساينىت-ھېلېنا فوندستېرلىڭى + ساينىت-ھېلېنا فوندستېرلىڭى + + + سىلوۋېنىيە تولارى + سىلوۋېنىيە تولارى + سىلوۋېنىيە تولارى + + + سىلوۋاكىيە كورۇناسى + سىلوۋاكىيە كورۇناسى + سىلوۋاكىيە كورۇناسى + + + سېررالېئون لېئونېسى + سېررالېئون لېئونېسى + سېررالېئون لېئونېسى + + + سومالى شىللىڭى + سومالى شىللىڭى + سومالى شىللىڭى + + + سۇرىنام دوللىرى + سۇرىنام دوللىرى + سۇرىنام دوللىرى + + + سۇرىنام گۈلدىنى + سۇرىنام گۈلدىنى + سۇرىنام گۈلدىنى + + + جەنۇبىي سۇدان فوندستېرلىڭى + جەنۇبىي سۇدان فوندستېرلىڭى + جەنۇبىي سۇدان فوندستېرلىڭى + + + سان-تومې ۋە پىرىنسىپى دوبراسى + سان-تومې ۋە پىرىنسىپى دوبراسى + سان-تومې ۋە پىرىنسىپى دوبراسى + + + سوۋىت رۇبلىسى + سوۋىت رۇبلىسى + سوۋىت رۇبلىسى + + + سالۋادور كولونى + سالۋادور كولونى + سالۋادور كولونى + + + سۈرىيە فوندستېرلىڭى + سۈرىيە فوندستېرلىڭى + سۈرىيە فوندستېرلىڭى + + + سىۋېزىلاند لىلانگېنى + سىۋېزىلاند لىلانگېنى + سىۋېزىلاند لىلانگېنى + + + تايلاند باختى + تايلاند باختى + تايلاند باختى + + + تاجىكىستان رۇبلىسى + تاجىكىستان رۇبلىسى + تاجىكىستان رۇبلىسى + + + تاجىكىستان سومونىسى + تاجىكىستان سومونىسى + تاجىكىستان سومونىسى + + + تۈركمەنىستان ماناتى (1993–2009) + تۈركمەنىستان ماناتى (1993–2009) + تۈركمەنىستان ماناتى (1993–2009) + + + تۈركمەنىستان ماناتى + تۈركمەنىستان ماناتى + تۈركمەنىستان ماناتى + + + تۇنىس دىنارى + تۇنىس دىنارى + تۇنىس دىنارى + + + تونگا پائانگاسى + تونگا پائانگاسى + تونگا پائانگاسى + + + تىمور ئېسكۇدوسى + تىمور ئېسكۇدوسى + تىمور ئېسكۇدوسى + + + تۈركىيە لىراسى (1922–2005) + تۈركىيە لىراسى (1922–2005) + تۈركىيە لىراسى (1922–2005) + + + تۈركىيە لىراسى + تۈركىيە لىراسى + تۈركىيە لىراسى + + + تىرىنىداد ۋە توباگو دوللىرى + تىرىنىداد ۋە توباگو دوللىرى + تىرىنىداد ۋە توباگو دوللىرى + + + يېڭى تەيۋەن دوللىرى + يېڭى تەيۋەن دوللىرى + يېڭى تەيۋەن دوللىرى + + + تانزانىيە شىللىڭى + تانزانىيە شىللىڭى + تانزانىيە شىللىڭى + + + ئۇكرائىنا خرىۋناسى + ئۇكرائىنا خرىۋناسى + ئۇكرائىنا خرىۋناسى + + + ئۇكرائىنا كاربوۋانېتسى + ئۇكرائىنا كاربوۋانېتسى + ئۇكرائىنا كاربوۋانېتسى + + + ئۇگاندا شىللىڭى (1966–1987) + ئۇگاندا شىللىڭى (1966–1987) + ئۇگاندا شىللىڭى (1966–1987) + + + ئۇگاندا شىللىڭى + ئۇگاندا شىللىڭى + ئۇگاندا شىللىڭى + + + ئامېرىكا دوللىرى + ئامېرىكا دوللىرى + ئامېرىكا دوللىرى + $ + + + ئامېرىكا دوللىرى (كېيىنكى كۈن) + ئامېرىكا دوللىرى (كېيىنكى كۈن) + ئامېرىكا دوللىرى (كېيىنكى كۈن) + + + ئامېرىكا دوللىرى (ئوخشاش كۈن) + ئامېرىكا دوللىرى (ئوخشاش كۈن) + ئامېرىكا دوللىرى (ئوخشاش كۈن) + + + ئۇرۇگۋاي پېسوسى (ئىندېكىسلاش بىرلىكى) + ئۇرۇگۋاي پېسوسى (ئىندېكىسلاش بىرلىكى) + ئۇرۇگۋاي پېسوسى (ئىندېكىسلاش بىرلىكى) + + + ئۇرۇگۋاي پېسوسى (1975–1993) + ئۇرۇگۋاي پېسوسى (1975–1993) + ئۇرۇگۋاي پېسوسى (1975–1993) + + + ئۇرۇگۋاي پېسوسى + ئۇرۇگۋاي پېسوسى + ئۇرۇگۋاي پېسوسى + + + ئۆزبېكىستان سومى + ئۆزبېكىستان سومى + ئۆزبېكىستان سومى + + + ۋېنېزۇئېلا بولىۋارى (1871–2008) + ۋېنېزۇئېلا بولىۋارى (1871–2008) + ۋېنېزۇئېلا بولىۋارى (1871–2008) + + + ۋېنېزۇئېلا بولىۋارى + ۋېنېزۇئېلا بولىۋارى + ۋېنېزۇئېلا بولىۋارى + + + ۋىيېتنام دوڭى + ۋىيېتنام دوڭى + ۋىيېتنام دوڭى + + + ۋىيېتنام دوڭى (1978–1985) + ۋىيېتنام دوڭى (1978–1985) + ۋىيېتنام دوڭى (1978–1985) + + + ۋانۇئاتۇ ۋاتۇسى + ۋانۇئاتۇ ۋاتۇسى + ۋانۇئاتۇ ۋاتۇسى + + + ساموئا تالاسى + ساموئا تالاسى + ساموئا تالاسى + + + ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى + ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى + ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى + + + كۈمۈش + ئالتۇن ئۈنسىيە بىرلىكىدىكى كۈمۈش + ئالتۇن ئۈنسىيە بىرلىكىدىكى كۈمۈش + + + ئالتۇن + ئالتۇن ئۈنسىيە بىرلىكىدىكى ئالتۇن + ئالتۇن ئۈنسىيە بىرلىكىدىكى ئالتۇن + + + ياۋروپا مۇرەككەپ بىرلىكى + ياۋروپا مۇرەككەپ بىرلىكى + ياۋروپا مۇرەككەپ بىرلىكى + + + ياۋروپا پۇل بىرلىكى (XBB) + ياۋروپا پۇل بىرلىكى (XBB) + ياۋروپا پۇل بىرلىكى (XBB) + + + ياۋروپا ھېسابات بىرلىكى (XBC) + ياۋروپا ھېسابات بىرلىكى (XBC) + ياۋروپا ھېسابات بىرلىكى (XBC) + + + ياۋروپا ھېسابات بىرلىكى (XBD) + ياۋروپا ھېسابات بىرلىكى (XBD) + ياۋروپا ھېسابات بىرلىكى (XBD) + + + شەرقىي كارىب دوللىرى + شەرقىي كارىب دوللىرى + شەرقىي كارىب دوللىرى + + + ئالاھىدە پۇل ئېلىش ھوقۇقى + ئالاھىدە پۇل ئېلىش ھوقۇقى + ئالاھىدە پۇل ئېلىش ھوقۇقى + + + ياۋروپا پۇل بىرلىكى + ياۋروپا پۇل بىرلىكى + ياۋروپا پۇل بىرلىكى + + + فىرانسىيە ئالتۇن فرانكى + فىرانسىيە ئالتۇن فرانكى + فىرانسىيە ئالتۇن فرانكى + + + فىرانسىيە UIC فرانكى + فىرانسىيە UIC فرانكى + فىرانسىيە UIC فرانكى + + + ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى (BCEAO) + ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى (BCEAO) + ئافرىقا قىتئەسى پۇل-مۇئامىلە ئىتتىپاقى فرانكى (BCEAO) + + + پاللادىي + ئالتۇن ئۈنسىيە بىرلىكىدىكى پاللادىي + ئالتۇن ئۈنسىيە بىرلىكىدىكى پاللادىي + + + تىنچ ئوكيان پۇل-مۇئامىلە ئورتاق گەۋدىسى فرانكى + تىنچ ئوكيان پۇل-مۇئامىلە ئورتاق گەۋدىسى فرانكى + تىنچ ئوكيان پۇل-مۇئامىلە ئورتاق گەۋدىسى فرانكى + + + پىلاتىنا + ئالتۇن ئۈنسىيە بىرلىكىدىكى پىلاتىنا + ئالتۇن ئۈنسىيە بىرلىكىدىكى پىلاتىنا + + + RINET فوندى + RINET فوندى بىرلىكى + RINET فوندى بىرلىكى + + + سۇكرې + سۇكرې + سۇكرې + + + پۇل سىناش بىرلىكى + پۇل سىناش بىرلىكى + پۇل سىناش بىرلىكى + + + ئاسىيا تەرەققىيات بانكىسى ھېسابات بىرلىكى + ئاسىيا تەرەققىيات بانكىسى ھېسابات بىرلىكى + ئاسىيا تەرەققىيات بانكىسى ھېسابات بىرلىكى + + + يوچۇن پۇل + (يوچۇن پۇل بىرلىكى) + (يوچۇن پۇل) + + + يەمەن دىنارى + يەمەن دىنارى + يەمەن دىنارى + + + يەمەن رىيالى + يەمەن رىيالى + يەمەن رىيالى + + + يۇگوسلاۋىيە قاتتىق دىنارى (1966–1990) + يۇگوسلاۋىيە قاتتىق دىنارى (1966–1990) + يۇگوسلاۋىيە قاتتىق دىنارى (1966–1990) + + + يۇگوسلاۋىيە يېڭى دىنارى (1994–2002) + يۇگوسلاۋىيە يېڭى دىنارى (1994–2002) + يۇگوسلاۋىيە يېڭى دىنارى (1994–2002) + + + يۇگوسلاۋىيە ئالماشتۇرۇشچان دىنارى (1990–1992) + يۇگوسلاۋىيە ئالماشتۇرۇشچان دىنارى (1990–1992) + يۇگوسلاۋىيە ئالماشتۇرۇشچان دىنارى (1990–1992) + + + يۇگوسلاۋىيە ئىسلاھات دىنارى (1992–1993) + يۇگوسلاۋىيە ئىسلاھات دىنارى (1992–1993) + يۇگوسلاۋىيە ئىسلاھات دىنارى (1992–1993) + + + جەنۇبىي ئافرىقا راندى (پۇل–مۇئامىلە) + جەنۇبىي ئافرىقا راندى (پۇل–مۇئامىلە) + جەنۇبىي ئافرىقا راندى (پۇل–مۇئامىلە) + + + جەنۇبىي ئافرىقا راندى + جەنۇبىي ئافرىقا راندى + جەنۇبىي ئافرىقا راندى + + + زامبىيە كۋاچاسى (1968–2012) + زامبىيە كۋاچاسى (1968–2012) + زامبىيە كۋاچاسى (1968–2012) + + + زامبىيە كۋاچاسى + زامبىيە كۋاچاسى + زامبىيە كۋاچاسى + + + زايىر يېڭى زايىرى (1993–1998) + زايىر يېڭى زايىرى (1993–1998) + زايىر يېڭى زايىرى (1993–1998) + + + زايىر زايىرى (1971–1993) + زايىر زايىرى (1971–1993) + زايىر زايىرى (1971–1993) + + + زىمبابۋې دوللىرى (1980–2008) + زىمبابۋې دوللىرى (1980–2008) + زىمبابۋې دوللىرى (1980–2008) + + + زىمبابۋې دوللىرى (2009) + زىمبابۋې دوللىرى (2009) + زىمبابۋې دوللىرى (2009) + + + زىمبابۋې دوللىرى (2008) + زىمبابۋې دوللىرى (2008) + زىمبابۋې دوللىرى (2008) + + + + {0}+ + + + + + + {0}/{1} + + + {0} ئېغىرلىق كۈچى + {0} ئېغىرلىق كۈچى + + + {0} گىرادۇس + {0} گىرادۇس + + + {0} ئىنگلىز موسى + {0} ئىنگلىز موسى + + + {0} گېكتار + {0} hectares + + + {0} كۋادرات فۇت + {0} كۋادرات فۇت + + + {0} كۋادرات كىلومېتىر + {0} كۋادرات كىلومېتىر + + + {0} كۋادرات مېتىر + {0} كۋادرات مېتىر + + + {0} كۋادرات مىل + {0} كۋادرات مىل + + + {0} كۈن + {0} كۈن + + + {0} سائەت + {0} سائەت + + + {0} مىللى سېكۇنت + {0} مىللى سېكۇنت + + + {0} مىنۇت + {0} مىنۇت + + + {0} ئاي + {0} ئاي + + + {0} سېكۇنت + {0} سېكۇنت + + + {0} ھەپتە + {0} ھەپتە + + + {0} يىل + {0} يىل + + + {0} سانتىمېتىر + {0} سانتىمېتىر + + + {0} فۇت + {0} فۇت + + + {0} ديۇيم + {0} ديۇيم + + + {0} كىلومېتىر + {0} كىلومېتىر + + + {0} يورۇقلۇق يىلى + {0} يورۇقلۇق يىلى + + + {0} مېتىر + {0} مېتىر + + + {0} مىل + {0} مىل + + + {0} مىللىمېتىر + {0} مىللىمېتىر + + + {0} پىكومېتىر + {0} پىكومېتىر + + + {0} يارد + {0} يارد + + + {0} گرام + {0} گرام + + + {0} كىلوگرام + {0} كىلوگرام + + + {0} ئۇنسىيە + {0} ئۇنسىيە + + + {0} قاداق + {0} قاداق + + + {0} ئات كۈچى + {0} ئات كۈچى + + + {0} كىلوۋات + {0} كىلوۋات + + + {0} ۋات + {0} ۋات + + + {0} يۈز پاسكال + {0} يۈز پاسكال + + + {0} ديۇيم سىماب تۈۋرۇكى + {0} ديۇيم سىماب تۈۋرۇكى + + + {0} مىللىبار + {0} مىللىبار + + + {0} كىلومېتىر ھەر سائەت + {0} كىلومېتىر ھەر سائەت + + + {0} مېتىر ھەر سېكۇنت + {0} مېتىر ھەر سېكۇنت + + + {0} مىل ھەر سائەت + {0} مىل ھەر سائەت + + + {0} سېلسىيە گرادۇس + {0} سېلسىيە گرادۇس + + + {0} فارېنگېيت گرادۇس + {0} فارېنگېيت گرادۇس + + + {0} كۇب كىلومېتىر + {0} كۇب كىلومېتىر + + + {0} كۇب مىل + {0} كۇب مىل + + + {0} لىتېر + {0} لىتېر + + + + + {0}/{1} + + + {0} G + {0} G + + + {0} گىرادۇس + {0} گىرادۇس + + + {0} ئىنگلىز موسى + {0} ئىنگلىز موسى + + + {0} گېكتار + {0} گېكتار + + + {0} كۋادرات فۇت + {0} كۋادرات فۇت + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} كۋادرات مىل + {0} كۋادرات مىل + + + {0} كۈن + {0} كۈن + + + {0} سائەت + {0} سائەت + + + {0} مىللىسېكۇنت + {0} مىللىسېكۇنت + + + {0} مىنۇت + {0} مىنۇت + + + {0} ئاي + {0} ئاي + + + {0} سېكۇنت + {0} سېكۇنت + + + {0} ھەپتە + {0} ھەپتە + + + {0} يىل + {0} يىل + + + {0} سانتىمېتىر + {0} سانتىمېتىر + + + {0} پۇت + {0} پۇت + + + {0} ئىنگلىز چىسى + {0} ئىنگلىز چىسى + + + {0} كىلومېتىر + {0} كىلومېتىر + + + {0} يورۇقلۇق يىلى + {0} يورۇقلۇق يىلى + + + {0} مېتىر + {0} مېتىر + + + {0} مىل + {0} مىل + + + {0} مىللىمېتىر + {0} مىللىمېتىر + + + {0} پىكومېتىر + {0} پىكومېتىر + + + {0} يارد + {0} يارد + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} ئۇنسىيە + {0} ئۇنسىيە + + + {0} قاداق + {0} قاداق + + + {0} ئات كۈچى + {0} ئات كۈچى + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} ھېكتوپاسكال + {0} ھېكتوپاسكال + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} سائەت/كىلومېتىر + {0} سائەت/كىلومېتىر + + + {0} سېكۇنت/مېتىر + {0} سېكۇنت/مېتىر + + + {0} سائەت/مىل + {0} سائەت/مىل + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}G + {0}Gs + + + {0}° + {0}° + + + {0}ac + {0}ac + + + {0}گېكتار + {0}گېكتار + + + {0}ft² + {0}ft² + + + {0}mi² + {0}mi² + + + {0} كۈن + {0} كۈن + + + {0}h + {0}h + + + {0}ms + {0}ms + + + {0}m + {0}m + + + {0} ئاي + {0} ئاي + + + {0}s + {0}s + + + {0} ھەپتە + {0} ھەپتە + + + {0} يىل + {0} يىل + + + {0}cm + {0}cm + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}km + {0}km + + + {0}ly + {0}ly + + + {0}m + {0}m + + + {0}mi + {0}mi + + + {0}mm + {0}mm + + + {0}pm + {0}pm + + + {0}yd + {0}yd + + + {0}g + {0}g + + + {0}kg + {0}kg + + + {0}oz + {0}oz + + + {0}# + {0}# + + + {0}hp + {0}hp + + + {0}kW + {0}kW + + + {0}W + {0}W + + + {0}hPa + {0}hPa + + + {0}" Hg + {0}" Hg + + + {0}mb + {0}mb + + + {0}kph + {0}kph + + + {0}m/s + {0}m/s + + + {0}mph + {0}mph + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0}l + {0}l + + + + + + {0}, {1} + {0}, {1} + {0}, and {1} + {0} and {1} + + + + + ھەئە:ھەئە + ياق:ياق + + + + diff --git a/library/Zend/Locale/Data/ug_Arab.xml b/library/Zend/Locale/Data/ug_Arab.xml new file mode 100755 index 000000000..271dffe32 --- /dev/null +++ b/library/Zend/Locale/Data/ug_Arab.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Світ + Африка + Північноамериканський континент + Південна Америка + Океанія + Західна Африка + Центральна Америка + Східна Африка + Північна Африка + Центральна Африка + Південна Африка + Америка + Північна Америка + Карибський басейн + Східна Азія + Південна Азія + Південно-Східна Азія + Південна Європа + Австралія та Нова Зеландія + Меланезія + Мікронезійський регіон + Полінезія + Азія + Центральна Азія + Західна Азія + Європа + Східна Європа + Північна Європа + Західна Європа + Латинська Америка + Острів Вознесіння + Андорра + Обʼєднані Арабські Емірати + Афганістан + Антигуа і Барбуда + Ангілья + Албанія + Вірменія + Нідерландські Антильські Острови + Ангола + Антарктида + Аргентина + Американське Самоа + Австрія + Австралія + Аруба + Аландські острови + Азербайджан + Боснія і Герцоговина + Барбадос + Бангладеш + Бельгія + Буркіна-Фасо + Болгарія + Бахрейн + Бурунді + Бенін + Сен-Бартельмі + Бермуди + Бруней + Болівія + Нідерландські Карибські острови + Бразилія + Багами + Бутан + Острів Буве + Ботсвана + Білорусь + Беліз + Канада + Кокосові острови + Конго – Кіншаса + Конго (ДРК) + Центральноафриканська Республіка + Конго – Браззавіль + Конго (Республіка) + Швейцарія + Кот-д’Івуар + Берег Слонової Кістки + Острови Кука + Чилі + Камерун + Китай + Колумбія + Острів Кліппертон + Коста-Рика + Куба + Кабо-Верде + Кюрасао + Острів Різдва + Кіпр + Чехія + Німеччина + Дієґо-Ґарсія + Джібуті + Данія + Домініка + Домініканська Республіка + Алжир + Сеута і Мелілья + Еквадор + Естонія + Єгипет + Західна Сахара + Еритрея + Іспанія + Ефіопія + Європейський Союз + Фінляндія + Фіджі + Фолклендські острови + Фолклендські (Мальвінські) острови + Мікронезія + Мікронезія Федеративні Штати + Фарерські острови + Франція + Габон + Велика Британія + Велика Британія + Гренада + Грузія + Французька Гвіана + Гернсі + Гана + Гібралтар + Гренландія + Гамбія + Гвінея + Гваделупа + Екваторіальна Гвінея + Греція + Південна Джорджія та Південні Сандвічеві Острови + Гватемала + Гуам + Гвінея-Бісау + Гайана + Гонконг, О.А.Р. Китаю + Гонконґ + Острови Херд і Мак-Дональд + Гондурас + Хорватія + Гаїті + Угорщина + Канарські острови + Індонезія + Ірландія + Ізраїль + Острів Мен + Індія + Британські території Індійського океану + Ірак + Іран + Ісландія + Італія + Джерсі + Ямайка + Йорданія + Японія + Кенія + Киргизстан + Камбоджа + Кірибаті + Коморські острови + Сент-Кітс і Невіс + Північна Корея + Південна Корея + Кувейт + Кайманові острови + Казахстан + Лаос + Ліван + Сент-Люсія + Ліхтенштейн + Шрі-Ланка + Ліберія + Лесото + Литва + Люксембург + Латвія + Лівія + Марокко + Монако + Молдова + Чорногорія + Сен-Мартен + Мадагаскар + Маршаллові Острови + Македонія + Македонія (КЮРМ) + Малі + Мʼянма (Бірма) + Монголія + Макао О.А.Р. Китаю + Макао + Північні Маріанські Острови + Мартиніка + Мавританія + Монтсеррат + Мальта + Маврикій + Мальдіви + Малаві + Мексика + Малайзія + Мозамбік + Намібія + Нова Каледонія + Нігер + Острів Норфолк + Нігерія + Нікарагуа + Нідерланди + Норвегія + Непал + Науру + Нія + Нова Зеландія + Оман + Панама + Перу + Французька Полінезія + Папуа Нова Гвінея + Філіппіни + Пакистан + Польща + Сен-Пʼєр і Мікелон + Острови Піткерн + Пуерто-Рико + Палестина + Палестина + Португалія + Палау + Парагвай + Катар + Інша Океанія + Реюньйон + Румунія + Сербія + Росія + Руанда + Саудівська Аравія + Соломонові Острови + Сейшельські острови + Судан + Швеція + Сінгапур + Острів Святої Єлени + Словенія + Острови Свальбард і Ян-Маєн + Словаччина + Сьєрра-Леоне + Сан-Марино + Сенегал + Сомалі + Суринам + Південний Судан + Сан-Томе і Прінсіпі + Сальвадор + Сінт-Мартен + Сирія + Свазіленд + Трістан-да-Кунья + Теркс і Кайкос + Чад + Французькі Південні Території + Того + Таїланд + Таджикистан + Токелау + Тімор-Лешті + Східний Тімор + Туркменистан + Туніс + Тонга + Туреччина + Тринідад і Тобаго + Тувалу + Тайвань + Танзанія + Україна + Уганда + Віддалені Острови США + США + США + Уругвай + Узбекистан + Ватикан + Сент-Вінсент і Гренадини + Венесуела + Британські Віргінські острови + Віргінські острови, США + Вʼєтнам + Вануату + Уолліс і Футуна + Самоа + Косово + Ємен + Майотта + ПАР + Замбія + Зімбабве + Невідомий регіон + + + Традиційна німецька орфографія + Стандартизована резьянська орфографія + Нова німецька орфографія з 1996 р. + Пізньосередньофранцузська до 1606 + Класична французька + Академічний + Східновірменський + Західновірменський + Уніфікований турецький латинський алфавіт + Діалект Сан-Джорджіо/Біла + Бунтлінг + Міжнародний фонетичний алфавіт + Уральський фонетичний алфавіт + Загальна орфографія + Ліповазський діалект резьянської мови + Монотонічний + Натісонський діалект + Діалект Нджіва + Осоянський діалект + Романізація піньїн + Політонічний + Комп'ютерний + Нова орфографія + Резьянський + Сахо + Шотландська англійська + Ліверпульський діалект + Діалект Столвіца/Солбіка + Орфографія Тараскевича + Уніфікована орфографія + Уніфікована переглянута орфографія + Валенсійська + Романізація Вейда-Джайлза + + + Календар + Ігнорувати сортування за символами + Зворотне сортування за діактричними знаками + Упорядкування за великими/малими символами + Сортування з урахуванням регістру + Сортування кана + Порядок сортування + Уніфіковане сортування + Цифрове сортування + Інтенсивність сортування + Валюта + Цифри + Часовий пояс + Варіант мовного коду + Сортувати як символи + Особисте використання + + + Арабсько-індійські цифри + Арабсько-індійські розширені цифри + Вірменські цифри + Вірменські малі цифри + Бенгальські цифри + Китайський традиційний + Буддійський календар + Китайський календар + Коптський календар + Цифри деванагарі + Порядок сортування: за словником + Порядок сортування: Unicode за умовчанням + Ефіопські цифри + Ефіопський календар + Ефіопський Амете Алем календар + Фінансові символи чисел + Цифри повної ширини + Китайський спрощений + Грузинські цифри + Григоріанський календар + Грецькі цифри + Грецькі малі цифри + Цифри гуджараті + Цифри гурмукхі + Китайські десяткові цифри + Китайські символи чисел (спрощене письмо) + Китайські фінансові символи чисел (спрощене письмо) + Китайські символи чисел (традиційне письмо) + Китайські фінансові символи чисел (традиційне письмо) + Цифри івриту + Єврейський календар + Сортувати всі + Індійський світський календар + Мусульманський календар + Мусульманський світський календар + Японський календар + Японські цифри + Японські фінансові цифри + Кхмерські цифри + Цифри каннада + Лаоські цифри + Західні цифри + Сортувати спершу за малими символами + Малаяламські цифри + Монгольські цифри + М’янмські цифри + Місцеві цифри + Сортувати за діактричними знаками уніфіковано + Сортувати в порядку звичайного регістру + Сортувати без урахування регістру + Сортувати за кана окремо + Сортувати без уніфікації + Сортувати за цифрами окремо + Сортувати за символами + Цифри орія + Перський календар + Телефонна книга + Фонетичний порядок сортування + Порядок піньїн + Сортувати лише за основними літерами + Сортувати за діактричними знаками/регістром/шириною/кана + Порядок сортування: за виправленнями + Китайський григоріанський + Римські цифри + Римські малі цифри + Універсальний пошук + Пошук за початковою приголосною хангул + Сортувати за діактричними знаками + Сортувати, ігноруючи символи + Стандартний порядок сортування + Порядок натискання клавіш + Тамільські традиційні цифри + Тамільські цифри + Цифри телугу + Сортувати за діактричними знаками/регістром/шириною + Тайські цифри + Тибетські цифри + Традиційний + Традиційні символи чисел + Порядок сортування: за штрихами в корені + Сортувати спершу за великими символами + Цифри ваї + Сортувати за діактричними знаками у зворотньому порядку + Сортувати з урахуванням регістру + Сортувати за кана інакше + Сортувати за Unicode уніфіковано + Сортувати за цифрами чисельно + + + BGN + Цифри + Тон + UNGEGN + Діактричні знаки + Повна ширина + Половинна ширина + Jamo + Піньїнь + Публікація + + + Метрична + Британська + США + + + Мова: {0} + Система письма: {0} + Територія: {0} + + + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + titlecase-firstword + titlecase-firstword + + + + [ʼ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я] + [{а\u0301} {е\u0301} ё {є\u0301} {и\u0301} {і\u0301} {ї\u0301} {о\u0301} {у\u0301} ъ ы э {ю\u0301} {я\u0301}] + [А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я] + [\- – , ; \: ! ? . ' " “ „ « » ( ) \[ \] \{ \} § @ * / \\ №] + {0}… + …{0} + {0}…{1} + ? + + + « + » + + + + + + + + + + тот. + баб. + хат. + кіх. + тоб. + амш. + барам. + барм. + баш. + баун. + аб. + мис. + нас. + + + Тот + Бабе + Хатур + Кіхак + Тобе + Амшир + Барамхат + Бармуда + Башнас + Бауна + Абіб + Мисра + Насі + + + + + Тот + Баб + Хат + Кіх + Тоб + Амш + Барам + Барм + Баш + Баун + Аб + Мис + Нас + + + + + + + + + мес. + тек. + хед. + тах. + тер. + єкат. + мег. + міяз. + ген. + сен. + хам. + нех. + паг. + + + мескерема + текемта + хедара + тахсаса + тера + єкатіта + мегабіта + міязія + генбота + сене + хамле + нехасе + пагумена + + + + + Мес + Тек + Хед + Тах + Тер + Єкат + Мег + Міяз + Ген + Сен + Хам + Нех + Паг + + + Мескерем + Текемт + Хедар + Тахсас + Тер + Єкатіт + Мегабіт + Міязія + Генбот + Сене + Хамле + Нехасе + Пагумен + + + + + + + + + EEEE, d MMMM y 'р'. G + + + + + d MMMM y 'р'. G + + + + + d MMM y G + + + + + dd.MM.yy GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + y G + LLL y G + d MMM y G + E, d MMM y G + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + y G + MM.y G + dd.MM.y G + E, dd.MM.y G + LLL y G + d MMM y G + E, d MMM y G + LLLL y G + QQQ y G + QQQQ y 'р'. G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM – dd.MM + dd.MM – dd.MM + + + E, dd.MM – E, dd.MM + E, dd.MM – E, dd.MM + + + LLL–LLL + + + d–d MMM + d MMM – d MMM + + + E, d – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + MM.y – MM.y + MM.y – MM.y + + + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + + + E, dd.MM.y – E, dd.MM.y + E, dd.MM.y – E, dd.MM.y + E, dd.MM.y – E, dd.MM.y + + + LLL–LLL y + LLL y – LLL y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + LLLL – LLLL y + LLLL y – LLLL y + + + + + + + + + січ. + лют. + бер. + квіт. + трав. + черв. + лип. + серп. + вер. + жовт. + лист. + груд. + + + С + Л + Б + К + Т + Ч + Л + С + В + Ж + Л + Г + + + січня + лютого + березня + квітня + травня + червня + липня + серпня + вересня + жовтня + листопада + грудня + + + + + Січ + Лют + Бер + Кві + Тра + Чер + Лип + Сер + Вер + Жов + Лис + Гру + + + С + Л + Б + К + Т + Ч + Л + С + В + Ж + Л + Г + + + Січень + Лютий + Березень + Квітень + Травень + Червень + Липень + Серпень + Вересень + Жовтень + Листопад + Грудень + + + + + + + Нд + Пн + Вт + Ср + Чт + Пт + Сб + + + Н + П + В + С + Ч + П + С + + + Нд + Пн + Вт + Ср + Чт + Пт + Сб + + + неділя + понеділок + вівторок + середа + четвер + пʼятниця + субота + + + + + Нд + Пн + Вт + Ср + Чт + Пт + Сб + + + Н + П + В + С + Ч + П + С + + + Нд + Пн + Вт + Ср + Чт + Пт + Сб + + + Неділя + Понеділок + Вівторок + Середа + Четвер + Пʼятниця + Субота + + + + + + + I кв. + II кв. + III кв. + IV кв. + + + 1 + 2 + 3 + 4 + + + I квартал + II квартал + III квартал + IV квартал + + + + + 1-й кв. + 2-й кв. + 3-й кв. + 4-й кв. + + + 1 + 2 + 3 + 4 + + + 1-й квартал + 2-й квартал + 3-й квартал + 4-й квартал + + + + + + + дня + дп + вечора + ранку + пп + + + дня + дп + вечора + ранку + ночі + пп + + + + + + до нашої ери + нашої ери + + + до н.е. + н.е. + + + + + + EEEE, d MMMM y 'р'. + + + + + d MMMM y 'р'. + + + + + d MMM y + + + + + dd.MM.yy + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + E, d + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + LLL y G + d MMM y G + E, d MMM y G + h a + HH + HH:mm + HH:mm:ss + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd.MM + E, dd.MM + LLL + d MMM + E, d MMM + d MMMM + E, d MMMM + mm:ss + y + MM.y + dd.MM.y + E, dd.MM.y + LLL y + d MMM y + E, d MMM y + LLLL y + QQQ y + QQQQ y 'р'. + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + dd.MM – dd.MM + dd.MM – dd.MM + + + E, dd.MM – E, dd.MM + E, dd.MM – E, dd.MM + + + LLL–LLL + + + d–d MMM + d MMM – d MMM + + + E, d – E, d MMM + E, d MMM – E, d MMM + + + y–y + + + MM.y – MM.y + MM.y – MM.y + + + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + dd.MM.y – dd.MM.y + + + E, dd.MM.y – E, dd.MM.y + E, dd.MM.y – E, dd.MM.y + E, dd.MM.y – E, dd.MM.y + + + LLL–LLL y + LLL y – LLL y + + + d–d MMM y + d MMM – d MMM y + d MMM y – d MMM y + + + E, d – E, d MMM y + E, d MMM – E, d MMM y + E, d MMM y – E, d MMM y + + + LLLL – LLLL y + LLLL y – LLLL y + + + + + + + + + Тішри + Марчешван + Числьов + Тебет + Шеват + Адар I + Адар + Адар II + Нісан + Іар + Сиван + Таммуз + Аб + Елул + + + + + Тішри + Хешван + Кіслев + Тевет + Шват + Адар I + Адар + Адар II + Нісан + Іяр + Сиван + Таммуз + Ав + Елул + + + + + + + + + чайт. + вайс. + джай. + асад. + шрав. + бхад. + асв. + кар. + агр. + паус. + маг. + фаль. + + + чайтра + вайсакха + джайстха + асадха + шравана + бхадра + асвіна + картіка + аграхаяна + пауса + магха + фальгуна + + + + + Чайт + Вайс + Джай + Асад + Шрав + Бхад + Асв + Кар + Агр + Паус + Маг + Фаль + + + Чайтра + Вайсакха + Джайстха + Асадха + Шравана + Бхадра + Асвіна + Картіка + Аграхаяна + Пауса + Магха + Фальгуна + + + + + + + + + мух. + саф. + раб. I + раб. II + джум. I + джум. II + радж. + шааб. + рам. + дав. + зу-ль-к. + зу-ль-х. + + + Мухаррам + Сафар + Рабі I + Рабі II + Джумада I + Джумада II + Раджаб + Шаабан + Рамадан + Даввал + Зу-ль-каада + Зу-ль-хіджа + + + + + Мух + Саф + Раб I + Раб.II + Джум I + Джум II + Радж + Шааб + Рам + Дав + Зу-ль-к + Зу-ль-х + + + + + + + + Тайка (645–650) + Хакуті (650–671) + Хакухо (672–686) + Сютьо (686–701) + Тайхо (701–704) + Кейун (704–708) + Вадо (708–715) + Рейкі (715–717) + Йоро (717–724) + Дзінгі (724–729) + Темпьо (729–749) + Темпьо-кампо (749–749) + Темпьо-сьохо (749–757) + Темпьо-ходзі (757–765) + Темпьо-дзінго (765–767) + Дзінго кейун (767–770) + Хокі (770–780) + Тен’о (781–782) + Енряку (782–806) + Дайдо (806–810) + Конін (810–824) + Тентьо (824–834) + Сьова (834–848) + Кадзьо (848–851) + Ніндзю (851–854) + Сайко (854–857) + Теннан (857–859) + Дзьоган (859–877) + Генкей (877–885) + Нінна (885–889) + Кампьо (889–898) + Сьотай (898–901) + Енгі (901–923) + Ентьо (923–931) + Сьохей (931–938) + Тенгьо (938–947) + Тенряку (947–957) + Тентоку (957–961) + Ова (961–964) + Кохо (964–968) + Анна (968–970) + Тенроку (970–973) + Тен’ен (973–976) + Дзьоген (976–978) + Тенген (978–983) + Ейкан (983–985) + Канна (985–987) + Ейен (987–989) + Ейсо (989–990) + Сьоряку (990–995) + Тьотоку (995–999) + Тьохо (999–1004) + Канко (1004–1012) + Тьова (1012–1017) + Каннін (1017–1021) + Дзіан (1021–1024) + Мандзю (1024–1028) + Тьоген (1028–1037) + Тьоряку (1037–1040) + Тьокю (1040–1044) + Кантоку (1044–1046) + Ейсьо (1046–1053) + Тенгі (1053–1058) + Кохей (1058–1065) + Дзіряку (1065–1069) + Енкю (1069–1074) + Сьохо (1074–1077) + Сьоряку (1077–1081) + Ейхо (1081–1084) + Отоку (1084–1087) + Кандзі (1087–1094) + Кахо (1094–1096) + Ейсьо (1096–1097) + Сьотоку (1097–1099) + Кова (1099–1104) + Тьодзі (1104–1106) + Кадзьо (1106–1108) + Теннін (1108–1110) + Тен’ей (1110–1113) + Ейкю (1113–1118) + Ген’ей (1118–1120) + Хоан (1120–1124) + Тендзі (1124–1126) + Дайдзі (1126–1131) + Тенсьо (1131–1132) + Тьосьо (1132–1135) + Хоен (1135–1141) + Ейдзі (1141–1142) + Кодзі (1142–1144) + Теньо (1144–1145) + Кюан (1145–1151) + Німпей (1151–1154) + Кюдзю (1154–1156) + Хоген (1156–1159) + Хейдзі (1159–1160) + Ейряку (1160–1161) + Охо (1161–1163) + Тьокан (1163–1165) + Ейман (1165–1166) + Нін’ан (1166–1169) + Као (1169–1171) + Сьоан (1171–1175) + Анген (1175–1177) + Дзісьо (1177–1181) + Йова (1181–1182) + Дзюей (1182–1184) + Генряку (1184–1185) + Бундзі (1185–1190) + Кенкю (1190–1199) + Сьодзі (1199–1201) + Кеннін (1201–1204) + Генкю (1204–1206) + Кен’ей (1206–1207) + Сьоген (1207–1211) + Кенряку (1211–1213) + Кенпо (1213–1219) + Дзьокю (1219–1222) + Дзьоо (1222–1224) + Геннін (1224–1225) + Кароку (1225–1227) + Антей (1227–1229) + Канкі (1229–1232) + Дзюей (1232–1233) + Темпуку (1233–1234) + Бунряку (1234–1235) + Катей (1235–1238) + Рякунін (1238–1239) + Ен’о (1239–1240) + Ніндзі (1240–1243) + Канген (1243–1247) + Хейдзі (1247–1249) + Кентьо (1249–1256) + Коген (1256–1257) + Сьока (1257–1259) + Сьоген (1259–1260) + Бун’о (1260–1261) + Котьо (1261–1264) + Бун’ей (1264–1275) + Кендзі (1275–1278) + Коан (1278–1288) + Сьоо (1288–1293) + Ейнін (1293–1299) + Сьоан (1299–1302) + Кенген (1302–1303) + Каген (1303–1306) + Токудзі (1306–1308) + Енкей (1308–1311) + Отьо (1311–1312) + Сьова (1312–1317) + Бумпо (1317–1319) + Ген’о (1319–1321) + Генкьо (1321–1324) + Сьотю (1324–1326) + Карекі (1326–1329) + Гентоку (1329–1331) + Генко (1331–1334) + Кемму (1334–1336) + Ейген (1336–1340) + Кококу (1340–1346) + Сьохей (1346–1370) + Кентоку (1370–1372) + Бунтю (1372–1375) + Тендзю (1375–1379) + Коряку (1379–1381) + Кова (1381–1384) + Гентю (1384–1392) + Мейтоку (1384–1387) + Какей (1387–1389) + Коо (1389–1390) + Мейтоку (1390–1394) + Оей (1394–1428) + Сьотьо (1428–1429) + Ейкьо (1429–1441) + Какіцу (1441–1444) + Буннан (1444–1449) + Хотоку (1449–1452) + Кьотоку (1452–1455) + Косьо (1455–1457) + Тьороку (1457–1460) + Кансьо (1460–1466) + Бунсьо (1466–1467) + Онін (1467–1469) + Буммей (1469–1487) + Тьокьо (1487–1489) + Ентоку (1489–1492) + Мейо (1492–1501) + Бункі (1501–1504) + Ейсьо (1504–1521) + Тайей (1521–1528) + Кьороку (1528–1532) + Теммон (1532–1555) + Кодзі (1555–1558) + Ейроку (1558–1570) + Генкі (1570–1573) + Тенсьо (1573–1592) + Бунроку (1592–1596) + Кейтьо (1596–1615) + Генна (1615–1624) + Кан’ей (1624–1644) + Сьохо (1644–1648) + Кейан (1648–1652) + Сьоо (1652–1655) + Мейряку (1655–1658) + Мандзі (1658–1661) + Камбун (1661–1673) + Емпо (1673–1681) + Тенва (1681–1684) + Дзьокьо (1684–1688) + Генроку (1688–1704) + Хоей (1704–1711) + Сьотоку (1711–1716) + Кьохо (1716–1736) + Гембун (1736–1741) + Канпо (1741–1744) + Енкьо (1744–1748) + Кан’ен (1748–1751) + Хоряку (1751–1764) + Мейва (1764–1772) + Ан’ей (1772–1781) + Теммей (1781–1789) + Кансей (1789–1801) + Кьова (1801–1804) + Бунка (1804–1818) + Бунсей (1818–1830) + Тенпо (1830–1844) + Кока (1844–1848) + Каей (1848–1854) + Ансей (1854–1860) + Ман’ен (1860–1861) + Бункю (1861–1864) + Гендзі (1864–1865) + Кейо (1865–1868) + Мейдзі + Тайсьо + Сьова + Хейсей + + + + + + + + фар. + орд. + хор. + тір. + мор. + шах. + мех. + абан. + азер. + дея + бах. + есф. + + + Фарвардін + Ордібехешт + Хордад + Тір + Мордад + Шахрівер + Мехр + Абан + Азер + Дей + Бахман + Есфанд + + + + + Фар + Орд + Хор + Тір + Мор + Шах + Мех + Абан + Азер + Дея + Бах + Есф + + + + + + + + Ера + + + Рік + минулого року + цього року + наступного року + + Через {0} рік + Через {0} роки + Через {0} років + Через {0} року + + + {0} рік тому + {0} роки тому + {0} років тому + {0} року тому + + + + Місяць + минулого місяця + цього місяця + наступного місяця + + Через {0} місяць + Через {0} місяці + Через {0} місяців + Через {0} місяця + + + {0} місяць тому + {0} місяці тому + {0} місяців тому + {0} місяця тому + + + + Тиждень + минулого тижня + цього тижня + наступного тижня + + Через {0} тиждень + Через {0} тижні + Через {0} тижнів + Через {0} тижня + + + {0} тиждень тому + {0} тижні тому + {0} тижнів тому + {0} тижня тому + + + + День + позавчора + учора + сьогодні + завтра + післязавтра + + Через {0} день + Через {0} дні + Через {0} днів + Через {0} дня + + + {0} день тому + {0} дні тому + {0} днів тому + {0} дня тому + + + + День тижня + + + минулої неділі + цієї неділі + наступної неділі + + + минулого понеділка + цього понеділка + наступного понеділка + + + минулого вівторка + цього вівторка + наступного вівторка + + + минулої середи + цієї середи + наступної середи + + + минулого четверга + цього четверга + наступного четверга + + + минулої п’ятниці + цієї п’ятниці + наступної п’ятниці + + + минулої суботи + цієї суботи + наступної суботи + + + Частина доби + + + Година + + Через {0} годину + Через {0} години + Через {0} годин + Через {0} години + + + {0} годину тому + {0} години тому + {0} годин тому + {0} години тому + + + + Хвилина + + Через {0} хвилину + Через {0} хвилини + Через {0} хвилин + Через {0} хвилини + + + {0} хвилину тому + {0} хвилини тому + {0} хвилин тому + {0} хвилини тому + + + + Секунда + зараз + + Через {0} секунду + Через {0} секунди + Через {0} секунд + Через {0} секунди + + + {0} секунду тому + {0} секунди тому + {0} секунд тому + {0} секунди тому + + + + Часовий пояс + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Час: {0} + Час: {0}, літній + Час: {0}, стандартний + {1} ({0}) + + Невідоме місто + + + Андора + + + Дубаї + + + Кабул + + + Антигуа + + + Ангілья + + + Тірана + + + Єреван + + + Луанда + + + Ротера + + + Палмер + + + Сьова + + + Моусон + + + Девіс + + + Восток + + + Кейсі + + + Дюмон-д'Юрвіль + + + Мак-Мердо + + + Ріо-Ґалеґос + + + Мендоса + + + Сан-Хуан + + + Ушуая + + + Ла-Ріоха + + + Сан-Луїс + + + Катамарка + + + Сальта + + + Жужуй + + + Тукуман + + + Кордоба + + + Буенос-Айрес + + + Паго Паго + + + Відень + + + Перт + + + Евкла + + + Дарвін + + + Аделаїда + + + Брокен-Гіл + + + Каррі + + + Мельбурн + + + Хобарт + + + Ліндеман + + + Сідней + + + Брисбен + + + Маккуорі + + + Лорд-Хау + + + Аруба + + + Маріегамн + + + Баку + + + Сараєво + + + Барбадос + + + Дака + + + Брюссель + + + Уагадугу + + + Софія + + + Бахрейн + + + Бужумбура + + + Порто-Ново + + + Сен-Бартельмі + + + Бермуди + + + Бруней + + + Ла-Пас + + + Кралендейк + + + Ейрунепе + + + Ріо-Бранко + + + Порто-Велью + + + Боа-Віста + + + Манаус + + + Куяба + + + Сантарен + + + Кампу-Гранді + + + Белен + + + Арагуайна + + + Сан-Паулу + + + Байя + + + Форталеза + + + Масейо + + + Ресіфі + + + Норонья + + + Насау + + + Тхімпху + + + Габороне + + + Мінськ + + + Беліз + + + Доусон + + + Вайтгорс + + + Інувік + + + Ванкувер + + + Доусон-Крік + + + Крестон + + + Єллоунайф + + + Едмонтон + + + Свіфт-Каррент + + + Кембридж-Бей + + + Реджайна + + + Вінніпеґ + + + Резолют + + + Рейні-Рівер + + + Ренкін-Інлет + + + Корал-Харбор + + + Тандер-Бей + + + Ніпігон + + + Торонто + + + Ікалуіт + + + Панґніртунґ + + + Монктон + + + Галіфакс + + + Гуз-Бей + + + Глейс-Бей + + + Бланк-Саблон + + + Сент-Джонс + + + Кокосові острови + + + Кіншаса + + + Лубумбаші + + + Бангі + + + Браззавіль + + + Цюріх + + + Абіджан + + + Раротонга + + + Острів Пасхи + + + Сантьяго + + + Дуала + + + Кашгар + + + Урумчі + + + Чунцин + + + Шанхай + + + Харбін + + + Богота + + + Коста Ріка + + + Гавана + + + Кабо-Верде + + + Кюрасао + + + Острів Різдва + + + Нікосія + + + Прага + + + Бюзінген + + + Берлін + + + Джибуті + + + Копенгаген + + + Домініка + + + Санто-Домінго + + + м. Алжир + + + Галапагоські острови (Еквадор) + + + Гуаякіль + + + Таллін + + + Каїр + + + Ель-Аюн + + + Асмера + + + Канари + + + Сеута + + + Мадрид + + + Аддис-Абеба + + + Гельсінкі + + + Фіджи + + + Стенлі + + + Трук + + + Понапе + + + Косрае + + + Фарерські острови + + + Париж + + + Лібревіль + + + + за літнім часом у Великобританії + + Лондон + + + Гренада + + + Тбілісі + + + Кайенна + + + Острів Гернсі + + + Аккра + + + Гібралтар + + + Туле + + + Готхоб + + + Скорсбисун + + + Денмарксхавн + + + Банжул + + + Конакрі + + + Гваделупа + + + Малабо + + + Афіни + + + Південна Джорджія + + + Гватемала + + + Гуам + + + Бісау + + + Гайана + + + Гонконг + + + Тегусігальпа + + + Загреб + + + Порт-о-Пренс + + + Будапешт + + + Джакарта + + + Понтіанак + + + Макасар + + + Джайпур + + + + за літнім часом в Ірландії + + Дублін + + + Єрусалим + + + Острів Мен + + + Колката + + + Чагос + + + Багдад + + + Тегеран + + + Рейк'явік + + + Рим + + + Джерсі + + + Ямайка + + + Амман + + + Токіо + + + Найробі + + + Бішкек + + + Пномпень + + + Ендербері + + + Кірітіматі + + + Тарава + + + Коморо + + + Сент-Кітс і Невіс + + + Пхеньян + + + Сеул + + + Кувейт + + + Кайманові острови + + + Актау + + + Орал + + + Актобе + + + Кзил-Орда + + + Алмати + + + В’єнтьян + + + Бейрут + + + Сент-Лусія + + + Вадуц + + + Коломбо + + + Монровія + + + Масеру + + + Вільнюс + + + Люксембург + + + Рига + + + Тріполі + + + Касабланка + + + Монако + + + Кишинів + + + Подгориця + + + Марігот + + + Антананаріву + + + Кваджалейн + + + Маджуро + + + Скоп’є + + + Бамако + + + Рангун + + + Говд + + + Улан-Батор + + + Чойбалсан + + + Макао + + + Сайпан + + + Мартініка + + + Нуакшот + + + Монсерат + + + Мальта + + + Маврикій + + + Мальдіви + + + Блантир + + + Тіхуана + + + Санта-Ісабель + + + Ермосільйо + + + Масатлан + + + Чіуауа + + + Баїя Бандерас + + + Охінага + + + Монтерей + + + Мехіко + + + Матаморос + + + Меріда + + + Канкун + + + Куала-Лумпур + + + Кучінґ + + + Мапуту + + + Віндхук + + + Нумеа + + + Ніамей + + + Норфолк + + + Лагос + + + Манагуа + + + Амстердам + + + Осло + + + Катманду + + + Науру + + + Ніуе + + + Чатем + + + Окленд + + + Маскат + + + Панама + + + Ліма + + + Таїті + + + Маркизькі о-ви + + + Гамбер + + + Порт-Морсбі + + + Маніла + + + Карачі + + + Варшава + + + Мікелон + + + Піткерн + + + Пуерто Ріко + + + Газа + + + Хеврон + + + Азорські острови + + + Мадейра + + + Лісабон + + + Палау + + + Асунсьйон + + + Катар + + + Реюньйон + + + Бухарест + + + Белград + + + Калінінград + + + Москва + + + Волгоград + + + Самара + + + Єкатеринбург + + + Омськ + + + Новосибірськ + + + Новокузнецьк + + + Красноярськ + + + Іркутськ + + + Якутськ + + + Владивосток + + + Хандига + + + Сахалін + + + Усть-Нера + + + Магадан + + + Камчатка + + + Анадир + + + Кігалі + + + Ер-Ріяд + + + Гвадалканал + + + Махе + + + Хартум + + + Стокгольм + + + Сингапур + + + Острів Святої Єлени + + + Любляна + + + Лонгербюйн + + + Братислава + + + Фрітаун + + + Сан-Марино + + + Дакар + + + Могадішо + + + Парамарібо + + + Джуба + + + Сан-Томе і Принсіпі + + + Сальвадор + + + Лоуер-Принсес-Квотер + + + Дамаск + + + Мбабане + + + Гранд-Терк + + + Нджамена + + + Острів Кергелен + + + Ломе + + + Бангкок + + + Душанбе + + + Факаофо + + + Ділі + + + Ашгабат + + + м. Туніс + + + Тонгатапу + + + Стамбул + + + Порт-оф-Спейн + + + Фунафуті + + + Тайпей + + + Дар-ес-Салаам + + + Ужгород + + + Київ + + + Сімферополь + + + Запоріжжя + + + Кампала + + + Мідуей + + + Джонстон + + + Вейк + + + Адак + + + Ном + + + Гонолулу + + + Анкоридж + + + Якутат + + + Сітка + + + Джуно + + + Метлакатла + + + Лос-Анджелес + + + Бойсе + + + Фінікс + + + Денвер + + + Б’юла, Північна Дакота + + + Нью-Салем + + + Центр + + + Чикаго + + + Меноміні + + + Вінсенс + + + Петербург + + + Телл-сіті + + + Нокс + + + Вінамак + + + Маренго + + + Індіанаполіс + + + Луїсвілль + + + Вівей + + + Монтичелло + + + Детройт + + + Нью-Йорк + + + Монтевідео + + + Самарканд + + + Ташкент + + + Ватикан + + + Сент-Вінсент + + + Каракас + + + Тортола + + + Сент-Томас + + + Хошимін + + + Ефате + + + Уолліс + + + Апіа + + + Аден + + + Майорка + + + Йоганнесбург + + + Лусака + + + Хараре + + + + Час: Акрі + Час: Акрі, стандартний + Час: Акрі, літній + + + + + за часом в Афганістані + + + + + за центральноафриканським часом + + + + + за східноафриканським часом + + + + + за південноафриканським часом + + + + + за західноафриканським часом + за західноафриканським стандартним часом + за західноафриканським літнім часом + + + + + Час: Аляска + Час: Аляска, стандартний + Час: Аляска, літній + + + + + Час: Амазонка + Час: Амазонка, стандартний + Час: Амазонка, літній + + + + + за північноамериканським центральним часом + за північноамериканським центральним стандартним часом + за північноамериканським центральним літнім часом + + + + + за північноамериканським східним часом + за північноамериканським східним стандартним часом + за північноамериканським східним літнім часом + + + + + за північноамериканським гірним часом + за північноамериканським гірним стандартним часом + за північноамериканським гірним літнім часом + + + + + за північноамериканським тихоокеанським часом + за північноамериканським тихоокеанським стандартним часом + за північноамериканським тихоокеанським літнім часом + + + + + Час: Анадир + Час: Анадир, стандартний + Час: Анадир, літній + + + + + за арабським часом + за арабським стандартним часом + за арабським літнім часом + + + + + Час: Аргентина + Час: Аргентина, стандартний + Час: Аргентина, літній + + + + + Час: Аргентина, західний + Час: Аргентина, західний стандартний + Час: Аргентина, західний літній + + + + + за вірменським часом + за вірменським стандартним часом + за вірменським літнім часом + + + + + за атлантичним часом + за атлантичним стандартним часом + за атлантичним літнім часом + + + + + Час: Австралія, центральний + Час: Австралія, центральний стандартний + Час: Австралія, центральний літній + + + + + Час: Австралія, центрально-західний + Час: Австралія, центрально-західний стандартний + Час: Австралія, центрально-західний літній + + + + + Час: Австралія, східний + Час: Австралія, східний стандартний + Час: Австралія, східний літній + + + + + Час: Австралія, західний + Час: Австралія, західний стандартний + Час: Австралія, західний літній + + + + + за часом в Азербайджані + за стандартним часом в Азербайджані + за літнім часом в Азербайджані + + + + + за часом на Азорських островах + за стандартним часом на Азорських островах + за літнім часом на Азорських островах + + + + + за часом у Бангладеш + за стандартним часом у Бангладеш + за літнім часом у Бангладеш + + + + + за часом у Бутані + + + + + Час: Болівія + + + + + Час: Бразилія + Час: Бразилія, стандартний + Час: Бразилія, літній + + + + + за часом у Брунеї + + + + + за часом на островах Кабо-Верде + за стандартним часом на островах Кабо-Верде + за літнім часом на островах Кабо-Верде + + + + + за часом на Північних Маріанських островах + + + + + за часом на архіпелазі Чатем + за стандартним часом на архіпелазі Чатем + за літнім часом на архіпелазі Чатем + + + + + Час: Чилі + Час: Чилі, стандартний + Час: Чилі, літній + + + + + за китайським часом + за китайським стандартним часом + за китайським літнім часом + + + + + Час: Чойбалсан + Час: Чойбалсан, стандартний + Час: Чойбалсан, літній + + + + + за часом на острові Різдва + + + + + за часом на Кокосових островах + + + + + Час: Колумбія + Час: Колумбія, стандартний + Час: Колумбія, літній + + + + + за часом на островах Кука + за стандартним часом на островах Кука + за літнім часом на островах Кука + + + + + за часом на Кубі + за стандартним часом на Кубі + за літнім часом на Кубі + + + + + Час: Девіс + + + + + Час: Дюмон д’Юрвіль + + + + + за часом у Східному Тиморі + + + + + за часом на острові Пасхи + за стандартним часом на острові Пасхи + за літнім часом на острові Пасхи + + + + + Час: Еквадор + + + + + за центральноєвропейським часом + за центральноєвропейським стандартним часом + за центральноєвропейським літнім часом + + + + + за східноєвропейським часом + за східноєвропейським стандартним часом + за східноєвропейським літнім часом + + + + + за західноєвропейським часом + за західноєвропейським стандартним часом + за західноєвропейським літнім часом + + + + + за часом на Фолклендських островах + за стандартним часом на Фолклендських островах + за літнім часом на Фолклендських островах + + + + + за часом на островах Фіджі + за стандартним часом на островах Фіджі + за літнім часом на островах Фіджі + + + + + Час: Французька Гвіана + + + + + за часом на Французьких Південних і Антарктичних територіях + + + + + за часом на Галапагоських островах + + + + + за часом на острові Гамб’є + + + + + за часом у Грузії + за стандартним часом у Грузії + за літнім часом у Грузії + + + + + за часом на островах Гілберта + + + + + за Грінвічем + + + + + за східним часом у Гренландії + за стандартним східним часом у Гренландії + за літнім східним часом у Гренландії + + + + + за західним часом у Гренландії + за стандартним західним часом у Гренландії + за літнім західним часом у Гренландії + + + + + за часом на острові Гуам + + + + + за часом Перської затоки + + + + + за часом у Гаяні + + + + + за гавайсько-алеутським часом + за стандартним гавайсько-алеутським часом + за літнім гавайсько-алеутським часом + + + + + за часом у Гонконзі + за стандартним часом у Гонконзі + за літнім часом у Гонконзі + + + + + Час: Говд + Час: Говд, стандартний + Час: Говд, літній + + + + + за індійським стандартним часом + + + + + за часом в Індійському Океані + + + + + Час: Індокитай + + + + + Час: Індонезія, центральний + + + + + Час: Індонезія, східний + + + + + Час: Індонезія, західний + + + + + за іранським часом + за іранським стандартним часом + за іранським літнім часом + + + + + за іркутським часом + за іркутським стандартним часом + за іркутським літнім часом + + + + + за ізраїльським часом + за ізраїльським стандартним часом + за ізраїльським літнім часом + + + + + за японським часом + за японським стандартним часом + за японським літнім часом + + + + + за камчатським часом + за камчатським стандартним часом + за камчатським літнім часом + + + + + Час: Казахстан, східний + + + + + Час: Казахстан, західний + + + + + за корейським часом + за корейським стандартним часом + за корейським літнім часом + + + + + за часом на острові Косрае + + + + + за красноярським часом + за красноярським стандартним часом + за красноярським літнім часом + + + + + Час: Киргизстан + + + + + Час: Ланка + + + + + за часом на острові Лайн + + + + + Час: Логд-Гоув + Час: Лорд-Гоув, стандартний + Час: Лорд-Гоув, літній + + + + + Час: Макквері + + + + + за магаданським часом + за магаданським стандартним часом + за магаданським літнім часом + + + + + Час: Малайзія + + + + + за часом на Мальдівах + + + + + за часом на Маркізьких островах + + + + + за часом на Маршалових островах + + + + + за часом на острові Маврикій + за стандартним часом на острові Маврикій + за літнім часом на острові Маврикій + + + + + за часом на станції Моусон + + + + + Час: Улан-Батор + Час: Улан-Батор, стандартний + Час: Улан-Батор, літній + + + + + за московським часом + за московським стандартним часом + за московським літнім часом + + + + + за часом у М’янмі + + + + + за часом на острові Науру + + + + + за часом у Непалі + + + + + за часом на островах Нової Каледонії + за стандартним часом на островах Нової Каледонії + за літнім часом на островах Нової Каледонії + + + + + Час: Нова Зеландія + Час: Нова Зеландія, стандартний + Час: Нова Зеландія, літній + + + + + Час: Ньюфаундленд + Час: Ньюфаундленд, стандартний + Час: Ньюфаундленд, літній + + + + + за часом на острові Ніуе + + + + + за часом на острові Норфолк + + + + + Час: Фернандо-де-Норонья + Час: Фернандо-де-Норонья, стандартний + Час: Фернандо-де-Норонья, літній + + + + + за новосибірським часом + за новосибірським стандартним часом + за новосибірським літнім часом + + + + + за омським часом + за омським стандартним часом + за омським літнім часом + + + + + за часом у Пакистані + за стандартним часом у Пакистані + за літнім часом у Пакистані + + + + + за часом на острові Палау + + + + + за часом на островах Папуа Нова Гвінея + + + + + Час: Парагвай + Час: Парагвай, стандартний + Час: Парагвай, літній + + + + + Час: Перу + Час: Перу, стандартний + Час: Перу, літній + + + + + Час: Філіппіни + Час: Філіппіни, стандартний + Час: Філіппіни, літній + + + + + за часом на островах Фенікс + + + + + за часом на островах Сен-П’єр і Мікелон + за стандартним часом на островах Сен-П’єр і Мікелон + за літнім часом на островах Сен-П’єр і Мікелон + + + + + за часом на островах Піткерн + + + + + за часом на острові Понапе + + + + + Час: Кизилорда + Час: Кизилорда, стандартний + Час: Кизилорда, літній + + + + + за часом на острові Реюньйон + + + + + за часом на станції Ротера + + + + + за сахалін часом + за сахалін стандартним часом + за сахалін літнім часом + + + + + за самарським часом + за самарським стандартним часом + за самарським літнім часом + + + + + за часом на острові Самоа + за стандартним часом на острові Самоа + за літнім часом на острові Самоа + + + + + за часом на Сейшельських островах + + + + + за часом у Сінгапурі + + + + + за часом на Соломонових островах + + + + + за часом на острові Південна Джорджія + + + + + за часом у Суринамі + + + + + за часом на станції Сева + + + + + за часом на острові Таїті + + + + + Час: Тайбей + Час: Тайбей, стандартний + Час: Тайбей, літній + + + + + за часом у Таджикистані + + + + + за часом на островах Токелау + + + + + за часом на островах Тонга + за стандартним часом на островах Тонга + за літнім часом на островах Тонга + + + + + за часом на островах Чуук + + + + + Час: Туркменістан + Час: Туркменістан, стандартний + Час: Туркменістан, літній + + + + + за часом на островах Тувалу + + + + + Час: Уругвай + Час: Уругвай, стандартний + Час: Уругвай, літній + + + + + Час: Узбекистан + Час: Узбекистан, стандартний + Час: Узбекистан, літній + + + + + за часом на островах Вануату + за стандартним часом на островах Вануату + за літнім часом на островах Вануату + + + + + Час: Венесуела + + + + + за владивостоцьким часом + за владивостоцьким стандартним часом + за владивостоцьким літнім часом + + + + + за волгоградським часом + за волгоградським стандартним часом + за волгоградським літнім часом + + + + + Час: Восток + + + + + за часом на острові Вейк + + + + + за часом на островах Волліс і Футуна + + + + + за якутським часом + за якутським стандартним часом + за якутським літнім часом + + + + + за єкатеринбурзьким часом + за єкатеринбурзьким стандартним часом + за єкатеринбурзьким літнім часом + + + + + + + , +   + ; + % + + + - + Е + × + + + Не число + + + + + #,##0.### + + + + + 0 тисяча + 0 тисячі + 0 тисяч + 0 тисячі + 00 тисяча + 00 тисячі + 00 тисяч + 00 тисячі + 000 тисяча + 000 тисячі + 000 тисяч + 000 тисячі + 0 мільйон + 0 мільйони + 0 мільйонів + 0 мільйона + 00 мільйон + 00 мільйони + 00 мільйонів + 00 мільйона + 000 мільйон + 000 мільйони + 000 мільйонів + 000 мільйона + 0 мільярд + 0 мільярди + 0 мільярдів + 0 мільярда + 00 мільярд + 00 мільярди + 00 мільярдів + 00 мільярда + 000 мільярд + 000 мільярди + 000 мільярдів + 000 мільярда + 0 трильйон + 0 трильйони + 0 трильйонів + 0 трильйона + 00 трильйон + 00 трильйони + 00 трильйонів + 00 трильйона + 000 трильйон + 000 трильйони + 000 трильйонів + 000 трильйона + + + + + 0 тис + 0 тис + 0 тис + 0 тис + 00 тис + 00 тис + 00 тис + 00 тис + 000 тис + 000 тис + 000 тис + 000 тис + 0 млн + 0 млн + 0 млн + 0 млн + 00 млн + 00 млн + 00 млн + 00 млн + 000 млн + 000 млн + 000 млн + 000 млн + 0 млрд + 0 млрд + 0 млрд + 0 млрд + 00 млрд + 00 млрд + 00 млрд + 00 млрд + 000 млрд + 000 млрд + 000 млрд + 000 млрд + 0 трлн + 0 трлн + 0 трлн + 0 трлн + 00 трлн + 00 трлн + 00 трлн + 00 трлн + 000 трлн + 000 трлн + 000 трлн + 000 трлн + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + {0} {1} + {0} {1} + {0} {1} + + + + андоррська песета + андоррська песета + андоррські песети + андоррських песет + андоррських песет + + + дирхам ОАЕ + дирхам ОАЕ + дирхами ОАЕ + дирхамів ОАЕ + дирхама ОАЕ + + + афгані (1927–2002) + + + афганський афгані + афганський афгані + афганські афгані + афганських афгані + афганського афгані + + + албанський лек + албанський лек + албанські леки + албанських леків + албанського лека + + + вірменський драм + вірменський драм + вірменські драми + вірменських драмів + вірменського драма + + + нідерландський антильський гульден + нідерландський антильський гульден + нідерландські антильські гульдени + нідерландських антильських гульденів + нідерландського антильського гульдена + + + ангольська кванза + ангольська кванза + ангольські кванзи + ангольських кванз + ангольської кванзи + + + ангольська кванза (1977–1990) + ангольська кванза (1977–1990) + ангольські кванзи (1977–1990) + ангольських кванз (1977–1990) + ангольської кванзи (1977–1990) + + + ангольська нова кванза (1990–2000) + ангольська нова кванза (1990–2000) + ангольські нові кванзи (1990–2000) + ангольських нових кванз (1990–2000) + ангольської нової кванзи (1990–2000) + + + ангольська кванза реаджастадо (1995–1999) + ангольська кванза реаджастадо (1995–1999) + ангольські кванзи реаджастадо (1995–1999) + ангольських кванз реаджастадо (1995–1999) + ангольської кванзи реаджастадо (1995–1999) + + + аргентинський австрал + аргентинський австрал + аргентинські австрали + аргентинських австралів + аргентинського австрала + + + аргентинський песо (1983–1985) + + + аргентинський песо + аргентинський песо + аргентинські песо + аргентинських песо + аргентинського песо + + + австрійський шилінг + + + австралійський долар + австралійський долар + австралійські долари + австралійських доларів + австралійського долара + AU$ + + + арубський флорин + арубський флорин + арубські флорини + арубських флоринів + арубського флорина + + + азербайджанський манат (1993–2006) + азербайджанський манат (1993–2006) + азербайджанські манати (1993–2006) + азербайджанських манатів (1993–2006) + азербайджанського маната (1993–2006) + + + азербайджанський манат + азербайджанський манат + азербайджанські манати + азербайджанських манатів + азербайджанського маната + ман. + + + динар (Боснія і Герцеговина) + + + конвертована марка Боснії і Герцеговини + конвертована марка Боснії і Герцеговини + конвертовані марки Боснії і Герцеговини + конвертованих марок Боснії і Герцеговини + конвертованої марки Боснії і Герцеговини + + + барбадоський долар + барбадоський долар + барбадоські долари + барбадоських доларів + барбадоського долара + + + бангладеська така + бангладеська така + бангладеська така + бангладеських так + бангладеської таки + + + бельгійський франк (конвертований) + + + бельгійський франк + + + бельгійський франк (фінансовий) + + + болгарський твердий лев + + + болгарський лев + болгарський лев + болгарські леви + болгарських левів + болгарського лева + + + бахрейнський динар + бахрейнський динар + бахрейнські динари + бахрейнських динарів + бахрейнського динара + + + бурундійський франк + бурундійський франк + бурундійські франки + бурундійських франків + бурундійського франка + + + бермудський долар + бермудський долар + бермудські долари + бермудських доларів + бермудського долара + + + брунейський долар + брунейський долар + брунейські долари + брунейських доларів + брунейського долара + + + болівійський болівіано + болівійський болівіано + болівійські болівіано + болівійських болівіано + болівійського болівіано + + + болівійське песо + + + болівійський мвдол + + + бразильське нове крузейро (1967–1986) + + + бразильське крузадо + + + бразильське крузейро (1990–1993) + + + бразильський реал + бразильський реал + бразильські реали + бразильських реалів + бразильського реала + BRL + + + бразильське нове крузадо + + + бразильське крузейро + + + багамський долар + багамський долар + багамські долари + багамських доларів + багамського долара + + + бутанський нгултрум + бутанський нгултрум + бутанські нгултруми + бутанських нгултрумів + бутанського нгултрума + + + бірманський кіат + + + ботсванська пула + ботсванська пула + ботсванські пули + ботсванських пул + ботсванської пули + + + білоруський новий рубль (1994–1999) + білоруський новий рубль (1994–1999) + білоруські нові рублі (1994–1999) + білоруських нових рублів (1994–1999) + білоруського нового рубля (1994–1999) + + + білоруський рубль + білоруський рубль + білоруські рублі + білоруських рублів + білоруського рубля + + + белізький долар + белізький долар + белізькі долари + белізьких доларів + белізького долара + + + канадський долар + канадський долар + канадські долари + канадських доларів + канадського долара + CAD + + + конголезький франк + конголезький франк + конголезькі франки + конголезьких франків + конголезького франка + + + євро WIR + + + швейцарський франк + швейцарський франк + швейцарські франки + швейцарських франків + швейцарського франка + + + франк WIR + + + чилійський юнідадес де фоменто + + + чилійський песо + чилійський песо + чилійські песо + чилійських песо + чилійського песо + + + китайський юань + китайський юань + китайські юані + китайських юанів + китайського юаня + CNY + + + колумбійський песо + колумбійський песо + колумбійські песо + колумбійських песо + колумбійського песо + + + одиниця реальної вартості + + + костариканський колон + костариканський колон + костариканські колони + костариканських колонів + костариканського колона + + + старий сербський динар + + + чехословацька тверда крона + + + кубинський конвертований песо + кубинський конвертований песо + кубинські конвертовані песо + кубинських конвертованих песо + кубинського конвертованого песо + + + кубинський песо + кубинський песо + кубинські песо + кубинськх песо + кубинського песо + + + ескудо Кабо-Верде + ескудо Кабо-Верде + ескудо Кабо-Верде + ескудо Кабо-Верде + ескудо Кабо-Верде + + + кіпрський фунт + + + чеська крона + чеська крона + чеські крони + чеських крон + чеської крони + + + марка НДР + + + німецька марка + + + джибутійський франк + джибутійський франк + джибутійські франки + джибутійських франків + джибутійського франка + + + данська крона + данська крона + данські крони + данських крон + данської крони + + + домініканський песо + домініканський песо + домініканські песо + домініканських песо + домініканського песо + + + алжирський динар + алжирський динар + алжирські динари + алжирських динарів + алжирського динара + + + еквадорський сукре + + + еквадорський юнідад де валор константе + + + естонська крона + естонська крона + естонські крони + естонських крон + естонської крони + + + єгипетський фунт + єгипетський фунт + єгипетські фунти + єгипетських фунтів + єгипетського фунта + + + еритрейська накфа + еритрейська накфа + еритрейські накфи + еритрейських накф + еритрейської накфи + + + іспанська песета ("А" рахунок) + + + іспанська песета (конвертовані рахунки) + + + іспанська песета + + + ефіопський бир + ефіопський бир + ефіопські бири + ефіопських бирів + ефіопського бира + + + євро + євро + євро + євро + євро + + + + фінляндська марка + + + фіджійський долар + фіджійський долар + фіджійські долари + фіджійських доларів + фіджійського долара + + + фунт Фолклендських островів + фунт Фолклендських островів + фунти Фолклендських островів + фунтів Фолклендських островів + фунта Фолклендських островів + + + французький франк + + + англійський фунт стерлінгів + англійський фунт стерлінгів + англійські фунти стерлінгів + англійських фунтів стерлінгів + англійського фунта стерлінгів + £ + + + грузинський купон + грузинський купон + грузинські купони + грузинських купонів + грузинського купона + + + грузинський ларі + грузинський ларі + грузинські ларі + грузинських ларі + грузинського ларі + + + ганський седі (1979–2007) + + + ганський седі + ганський седі + ганські седі + ганських седі + ганського седі + + + гібралтарський фунт + гібралтарський фунт + гібралтарські фунти + гібралтарських фунтів + гібралтарського фунта + + + гамбійський даласі + гамбійський даласі + гамбійські даласі + гамбійських даласі + гамбійського даласі + + + гвінейський франк + гвінейський франк + гвінейські франки + гвінейських франків + гвінейського франка + + + гвінейське сілі + + + еквеле (Екваторіальна Ґвінея) + + + грецька драхма + + + гватемальський кетсаль + гватемальський кетсаль + гватемальські кетсалі + гватемальських кетсалів + гватемальського кетсаля + + + ескудо португальської гвінеї + + + песо Гвінеї-Бісау + + + гаянський долар + гаянський долар + гаянські долари + гаянських доларів + гаянського долара + + + гонконгський долар + гонконгський долар + гонконгські долари + гонконгських доларів + гонконгського долара + HKD + + + гондураська лемпіра + гондураська лемпіра + гондураські лемпіри + гондураських лемпір + гондураської лемпіри + + + хорватський динар + + + хорватська куна + хорватська куна + хорватські куни + хорватських кун + хорватської куни + + + гаїтянський гурд + гаїтянський гурд + гаїтянські гурди + гаїтянських гурдів + гаїтянського гурда + + + угорський форинт + угорський форинт + угорські форинти + угорських форинтів + угорського форинта + + + індонезійська рупія + індонезійська рупія + індонезійські рупії + індонезійських рупій + індонезійські рупії + + + ірландський фунт + + + ізраїльський фунт + + + ізраїльський новий шекель + ізраїльський новий шекель + ізраїльські нові шекелі + ізраїльських нових шекелів + ізраїльського нового шекеля + ILS + + + індійська рупія + індійська рупія + індійські рупії + індійських рупій + індійської рупії + INR + + + іракський динар + іракський динар + іракські динари + іракських динарів + іракського динара + + + іранський ріал + іранський ріал + іранські ріали + іранських ріалів + іранського ріала + + + ісландська крона + ісландська крона + ісландські кроні + ісландських крон + ісландської крони + + + італійська ліра + + + ямайський долар + ямайський долар + ямайські долари + ямайських доларів + ямайського долара + + + йорданський динар + йорданський динар + йорданські динари + йорданських динарів + йорданського динара + + + японська єна + японська єна + японські єни + японських єн + японської єни + ¥ + + + кенійський шилінг + кенійський шилінг + кенійські шилінги + кенійських шилінгів + кенійського шилінга + + + киргизький сом + киргизький сом + киргизькі соми + киргизьких сомів + киргизького сома + + + камбоджійський рієль + камбоджійський рієль + камбоджійські рієлі + камбоджійських рієлів + камбоджійського рієля + + + коморський франк + коморський франк + коморські франки + коморських франків + коморського франка + + + північнокорейський вон + північнокорейський вон + північнокорейські вони + північнокорейських вонів + північнокорейського вона + + + південнокорейський вон + південнокорейський вон + південнокорейські вони + південнокорейських вонів + південнокорейського вона + KRW + + + кувейтський динар + кувейтський динар + кувейтські динари + кувейтських динарів + кувейтського динара + + + долар Кайманових островів + долар Кайманових островів + долари Кайманових островів + доларів Кайманових островів + долара Кайманових островів + + + казахстанський тенге + казахстанський тенге + казахстанські тенге + казахстанських тенге + казахстанського тенге + + + лаоський кіп + лаоський кіп + лаоські кіпи + лаоських кіпів + лаоського кіпа + + + ліванський фунт + ліванський фунт + ліванські фунти + ліванських фунтів + ліванського фунта + + + шрі-ланкійська рупія + шрі-ланкійська рупія + шрі-ланкійські рупії + шрі-ланкійських рупій + шрі-ланкійської рупії + + + ліберійський долар + ліберійський долар + ліберійські долари + ліберійських доларів + ліберійського долара + + + лесотський лоті + + + литовський літ + литовський літ + литовські літи + литовських літів + литовського літа + + + литовський талон + + + люксембурґський франк (конвертований) + + + люксембурзький франк + + + люксембурґський франк (фінансовий) + + + латвійський лат + латвійський лат + латвійські лати + латвійських латів + латвійського лата + + + латвійський рубль + + + лівійський динар + лівійський динар + лівійські динари + лівійських динарів + лівійського динара + + + марокканський дирхам + марокканський дирхам + марокканські дирхами + марокканських дирхамів + марокканського дирхама + + + марокканський франк + + + молдовський лей + молдовський лей + молдовські леї + молдовських леїв + молдовського лея + + + малагасійський аріарі + малагасійський аріарі + малагасійські аріарі + малагасійських аріарі + малагасійського аріарі + + + мадагаскарський франк + + + македонський денар + македонський денар + македонські денари + македонських денарів + македонського денара + + + малійський франк + + + кʼят Мʼянми + кʼят Мʼянми + кʼяти Мʼянми + кʼятів Мʼянми + кʼята Мʼянми + + + монгольський тугрик + монгольський тугрик + монгольські тугрики + монгольських тугриків + монгольського тугрика + + + патака Макао + патака Макао + патаки Макао + патак Макао + патаки Макао + + + мавританська угія + мавританська угія + мавританські угії + мавританських угій + мавританської угії + + + мальтійська ліра + + + мальтійський фунт + + + маврикійська рупія + маврикійська рупія + маврикійські рупії + маврикійських рупій + маврикійської рупії + + + мальдівська руфія + мальдівська руфія + мальдівські руфії + мальдівських руфій + мальдівської руфії + + + малавійська квача + малавійська квача + малавійські квачі + малавійських квач + малавійської квачі + + + мексиканський песо + мексиканський песо + мексиканські песо + мексиканських песо + мексиканського песо + MXN + + + мексиканське срібне песо (1861–1992) + + + мексиканський юнідад де інверсіон + + + малайзійський рингіт + малайзійський рингіт + малайзійські рингіти + малайзійських рингітів + малайзійського рингіта + + + мозамбіцький ескудо + + + старий мозамбіцький метикал + + + мозамбіцький метикал + мозамбіцький метикал + мозамбіцькі метикали + мозамбіцьких метикалів + мозамбіцького метикала + + + намібійський долар + намібійський долар + намібійські долари + намібійських доларів + намібійського долара + + + нігерійська найра + нігерійська найра + нігерійські найри + нігерійських найр + нігерійської найри + + + нікарагуанська кордоба + + + нікарагуанська кордоба оро + нікарагуанська кордоба оро + нікарагуанські кордоби оро + нікарагуанських кордоб оро + нікарагуанської кордоби оро + + + нідерландський гульден + + + норвезька крона + норвезька крона + норвезькі крони + норвезьких крон + норвезької крони + + + непальська рупія + непальська рупія + непальські рупії + непальських рупій + непальської рупії + + + новозеландський долар + новозеландський долар + новозеландські долари + новозеландських доларів + новозеландського долара + NZD + + + оманський ріал + оманський ріал + оманські ріали + оманських ріалів + оманського ріала + + + панамська бальбоа + панамська бальбоа + панамські бальбоа + панамських бальбоа + панамського бальбоа + + + перуанський інті + + + перуанський новий сол + перуанський новий сол + перуанські нові соли + перуанських нових солів + перуанського нового сола + + + перуанський сол + + + кіна Папуа Нової Гвінеї + кіна Папуа Нової Гвінеї + кіни Папуа Нової Гвінеї + кін Папуа Нової Гвінеї + кіни Папуа Нової Гвінеї + + + філіппінський песо + філіппінський песо + філіппінські песо + філіппінських песо + філіппінського песо + + + пакистанська рупія + пакистанська рупія + пакистанські рупії + пакистанських рупій + пакистанської рупії + + + польський злотий + польський злотий + польські злоті + польських злотих + польського злотого + + + польський злотий (1950–1995) + + + португальський ескудо + + + парагвайський гуарані + парагвайський гуарані + парагвайські гуарані + парагвайських гуарані + парагвайського гуарані + + + катарський ріал + катарський ріал + катарські ріали + катарських ріалів + катарського ріала + + + родезійський долар + + + старий румунський лей + + + румунський лей + румунський лей + румунські леї + румунських леїв + румунського лея + + + сербський динар + сербський динар + сербські динари + сербських динарів + сербського динара + дин. + + + російський рубль + російський рубль + російські рублі + російських рублів + російського рубля + руб. + + + російський рубль (1991–1998) + російський рубль (RUR) + російські рублі (RUR) + російських рублів (RUR) + російського рубля (RUR) + + + руандійський франк + руандійський франк + руандійські франки + руандійських франків + руандійського франка + + + саудівський ріал + саудівський ріал + саудівські ріали + саудівських ріалів + саудівського ріала + + + долар Соломонових Островів + долар Соломонових Островів + долари Соломонових Островів + доларів Соломонових Островів + долара Соломонових Островів + + + сейшельська рупія + сейшельська рупія + сейшельські рупії + сейшельських рупій + сейшельської рупії + + + суданський динар + + + суданський фунт + суданський фунт + суданські фунти + суданських фунтів + суданського фунта + + + старий суданський фунт + + + шведська крона + шведська крона + шведські крони + шведських крон + шведської крони + + + сінгапурський долар + сінгапурський долар + сінгапурські долари + сінгапурських доларів + сінгапурського долара + + + фунт острова Святої Єлени + фунт острова Святої Єлени + фунти острова Святої Єлени + фунтів острова Святої Єлени + фунта острова Святої Єлени + + + словенський толар + + + словацька крона + словацька крона + словацькі крони + словацьких крон + словацької крони + + + леоне Сьєрра-Леоне + леоне Сьєрра-Леоне + леоне Сьєрра-Леоне + леоне Сьєрра-Леоне + леоне Сьєрра-Леоне + + + сомалійський шилінг + сомалійський шилінг + сомалійські шилінги + сомалійських шилінгів + сомалійського шилінга + + + суринамський долар + суринамський долар + суринамські долари + суринамських доларів + суринамського долара + + + суринамський гульден + + + південносуданський фунт + південносуданський фунт + південносуданські фунти + південносуданських фунтів + південносуданського фунта + + + добра Сан-Томе і Принсіпі + добра Сан-Томе і Принсіпі + добри Сан-Томе і Принсіпі + добр Сан-Томе і Принсіпі + добри Сан-Томе і Принсіпі + + + радянський рубль + радянський рубль + радянські рублі + радянських рублів + радянського рубля + + + сальвадорський колон + + + сирійський фунт + сирійський фунт + сирійські фунти + сирійських фунтів + сирійського фунта + + + свазілендський лілангені + свазілендський лілангені + свазілендські лілангені + свазілендських лілангені + свазілендського лілангені + + + таїландський бат + таїландський бат + таїландські бати + таїландських батів + таїландського бата + THB + + + таджицький рубль + + + таджицький сомоні + таджицький сомоні + таджицькі сомоні + таджицьких сомоні + таджицького сомоні + + + туркменський манат (1993–2009) + туркменський манат (1993–2009) + туркменські манати (1993–2009) + туркменських манатів (1993–2009) + туркменського маната (1993–2009) + + + туркменський манат + туркменський манат + туркменські манати + туркменських манатів + туркменського маната + + + туніський динар + туніський динар + туніські динари + туніських динарів + туніського динара + + + тонганська паанга + тонганська паанга + тонганські паанги + тонганських паанг + тонганської паанги + + + тіморський ескудо + + + турецька ліра (1922–2005) + турецька ліра (1922–2005) + турецькі ліри (1922–2005) + турецьких лір (1922–2005) + турецької ліри (1922–2005) + + + турецька ліра + турецька ліра + турецькі ліри + турецьких лір + турецької ліри + + + долар Тринідаду і Тобаго + долар Тринідаду і Тобаго + долари Тринідаду і Тобаго + доларів Тринідаду і Тобаго + долара Тринідаду і Тобаго + + + новий тайванський долар + новий тайванський долар + нові тайванські долари + нових тайванських доларів + нового тайванського долара + TWD + + + танзанійський шилінганзанійський шилінг + танзанійський шилінг + танзанійські шилінги + танзанійських шилінгів + танзанійського шилінга + + + українська гривня + гривня + гривні + гривень + гривні + + + + український карбованець + український карбованець + українські карбованці + українських карбованців + українського карбованця + крб. + + + угандійський шилінг (1966–1987) + + + угандійський шилінг + угандійський шилінг + угандійські шилінги + угандійських шилінгів + угандійського шилінга + + + долар США + долар США + долари США + доларів США + долара США + USD + + + долар США (наступного дня) + + + долар США (цього дня) + + + уругвайський песо в індексованих одиницях + + + уругвайське песо (1975–1993) + + + уругвайський песо + уругвайський песо + уругвайські песо + уругвайських песо + уругвайського песо + + + узбецький сум + узбецький сум + узбецькі суми + узбецьких сумів + узбецького сума + + + венесуельський болівар (1871–2008) + + + венесуельський болівар + венесуельський болівар + венесуельські болівари + венесуельських боліварів + венесуельського болівара + + + вʼєтнамський донг + вʼєтнамський донг + вʼєтнамські донги + вʼєтнамських донгів + вʼєтнамського донга + VND + + + вануатський вату + вануатський вату + вануатські вату + вануатських вату + вануатського вату + + + самоанська тала + самоанська тала + самоанські тали + самоанських тал + самоанської тали + + + центральноафриканський франк + центральноафриканський франк + центральноафриканські франки + центральноафриканських франків + центральноафриканського франка + FCFA + + + срібло + + + золото + + + європейська складена валютна одиниця + + + одиниця європейського валютного фонду + + + європейська розрахункова одиниця XBC + + + європейська розрахункова одиниця XBD + + + східнокарибський долар + східнокарибський долар + східнокарибські долари + східнокарибських доларів + східнокарибського долара + XCD + + + спеціальні права запозичення + СПЗ + СПЗ + СПЗ + СПЗ + + + європейська валютна одиниця + + + французький золотий франк + + + французький франк UIC + + + західноафриканський франк + західноафриканський франк BCEAO + західноафриканські франки + західноафриканських франків + західноафриканського франка + CFA + + + паладій + + + французький тихоокеанський франк + французький тихоокеанський франк + французькі тихоокеанські франки + французьких тихоокеанських франків + французького тихоокеанського франка + CFPF + + + платина + + + фонди RINET + + + код тестування валюти + + + невідома грошова одиниця + невідома грошова одиниця + невідомі грошові одиниці + невідомих грошових одиниць + невідомої грошової одиниці + + + єменський динар + + + єменський ріал + єменський ріал + єменські ріали + єменських ріалів + єменського ріала + + + югославський твердий динар + + + югославський новий динар + + + югославський конвертований динар + + + південноафриканський фінансовий ранд + + + південноафриканський ранд + південноафриканський ранд + південноафриканські ранди + південноафриканських рандів + південноафриканського ранда + + + замбійська квача (1968–2012) + замбійська квача (1968–2012) + замбійські квачі (1968–2012) + замбійських квач (1968–2012) + замбійські квачі (1968–2012) + + + замбійська квача + замбійська квача + замбійські квачі + замбійських квач + замбійської квачі + + + заїрський новий заїр + + + заїрський заїр + + + зімбабвійський долар + зімбабвійського долара + зімбабвійскі долари + зімбабвійських доларів + зімбабвійські долари + + + зімбабвійський долар (2009) + зімбабвійський долар (2009) + зімбабвійські долари (2009) + зімбабвійських доларів (2009) + зімбабвійського долара (2009) + + + зімбабвійський долар (2008) + зімбабвійські долари (2008) + зімбабвійських доларів (2008) + зімбабвійського долара (2008) + + + + {0}+ + {0}–{1} + + + + + + {0} на {1} + + + {0} сила тяжіння + {0} сили тяжіння + {0} сил тяжіння + {0} сили тяжіння + + + {0} мінута + {0} мінути + {0} мінут + {0} мінути + + + {0} секунда + {0} секунди + {0} секунд + {0} секунди + + + {0} градус + {0} градуси + {0} градусів + {0} градуса + + + {0} акр + {0} акри + {0} акрів + {0} акра + + + {0} гектар + {0} гектари + {0} гектарів + {0} гектара + + + {0} квадратний фут + {0} квадратні фути + {0} квадратних футів + {0} квадратного фута + + + {0} квадратний кілометр + {0} квадратні кілометри + {0} квадратних кілометрів + {0} квадратного кілометра + + + {0} квадратний метр + {0} квадратні метри + {0} квадратних метрів + {0} квадратного метра + + + {0} квадратна миля + {0} квадратні милі + {0} квадратних миль + {0} квадратної милі + + + {0} день + {0} дні + {0} днів + {0} дня + + + {0} година + {0} години + {0} годин + {0} години + + + {0} мілісекунда + {0} мілісекунди + {0} мілісекунд + {0} мілісекунди + + + {0} хвилина + {0} хвилини + {0} хвилин + {0} хвилини + + + {0} місяць + {0} місяці + {0} місяців + {0} місяця + + + {0} секунда + {0} секунди + {0} секунд + {0} секунди + + + {0} тиждень + {0} тижні + {0} тижнів + {0} тижня + + + {0} рік + {0} роки + {0} років + {0} року + + + {0} сантиметр + {0} сантиметри + {0} сантиметрів + {0} сантиметра + + + {0} фут + {0} фути + {0} футів + {0} фута + + + {0} дюйм + {0} дюйми + {0} дюймів + {0} дюйма + + + {0} кілометр + {0} кілометри + {0} кілометрів + {0} кілометра + + + {0} світловий рік + {0} світлові роки + {0} світлових років + {0} світлового року + + + {0} метр + {0} метри + {0} метрів + {0} метра + + + {0} миля + {0} милі + {0} миль + {0} милі + + + {0} міліметр + {0} міліметри + {0} міліметрів + {0} міліметра + + + {0} пікометр + {0} пікометри + {0} пікометрів + {0} пікометра + + + {0} ярд + {0} ярди + {0} ярдів + {0} ярда + + + {0} грам + {0} грами + {0} грамів + {0} грама + + + {0} кілограм + {0} кілограми + {0} кілограмів + {0} кілограма + + + {0} унція + {0} унції + {0} унцій + {0} унції + + + {0} фунт + {0} фунти + {0} фунтів + {0} фунта + + + {0} кінська сила + {0} кінські сили + {0} кінських сил + {0} кінської сили + + + {0} кіловат + {0} кіловати + {0} кіловатів + {0} кіловата + + + {0} ват + {0} вати + {0} ватів + {0} вата + + + {0} гектопаскаль + {0} гектопаскалі + {0} гектопаскалів + {0} гектопаскаля + + + {0} дюйм ртутного стовпа + {0} дюйми ртутного стовпа + {0} дюймів ртутного стовпа + {0} дюйма ртутного стовпа + + + {0} мілібар + {0} мілібари + {0} мілібарів + {0} мілібара + + + {0} кілометр на годину + {0} кілометри на годину + {0} кілометрів на годину + {0} кілометра на годину + + + {0} метр на секунду + {0} метри на секунду + {0} метрів на секунду + {0} метра на секунду + + + {0} миля на годину + {0} милі на годину + {0} миль на годину + {0} милі на годину + + + {0} градус Цельсія + {0} градуси Цельсія + {0} градусів Цельсія + {0} градуса Цельсія + + + {0} градус Фаренгейта + {0} градуси Фаренгейта + {0} градусів Фаренгейта + {0} градуса Фаренгейта + + + {0} кубічний кілометр + {0} кубічні кілометри + {0} кубічних кілометрів + {0} кубічного кілометра + + + {0} кубічна миля + {0} кубічні милі + {0} кубічних миль + {0} кубічної милі + + + {0} літр + {0} літри + {0} літрів + {0} літра + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0} мін. + {0} мін. + {0} мін. + {0} мін. + + + {0} сек. + {0} сек. + {0} сек. + {0} сек. + + + {0}° + {0}° + {0}° + {0}° + + + {0} акр + {0} акри + {0} акрів + {0} акра + + + {0} га + {0} га + {0} га + {0} га + + + {0} фут² + {0} фути² + {0} футів² + {0} фута² + + + {0} км² + {0} км² + {0} км² + {0} км² + + + {0} м² + {0} м² + {0} м² + {0} м² + + + {0} миля² + {0} милі² + {0} миль² + {0} милі² + + + {0} дн. + {0} дн. + {0} дн. + {0} дн. + + + {0} год + {0} год + {0} год + {0} год + + + {0} мс + {0} мс + {0} мс + {0} мс + + + {0} хв + {0} хв + {0} хв + {0} хв + + + {0} міс. + {0} міс. + {0} міс. + {0} міс. + + + {0} с + {0} с + {0} с + {0} с + + + {0} тиж. + {0} тиж. + {0} тиж. + {0} тиж. + + + {0} р. + {0} р. + {0} р. + {0} р. + + + {0} см + {0} см + {0} см + {0} см + + + {0} фут + {0} фути + {0} футів + {0} фута + + + {0} дюйм + {0} дюйми + {0} дюймів + {0} дюйма + + + {0} км + {0} км + {0} км + {0} км + + + {0} св. р. + {0} св. р. + {0} св. р. + {0} св. р. + + + {0} м + {0} м + {0} м + {0} м + + + {0} миля + {0} милі + {0} миль + {0} милі + + + {0} мм + {0} мм + {0} мм + {0} мм + + + {0} пм + {0} пм + {0} пм + {0} пм + + + {0} ярд + {0} ярди + {0} ярдів + {0} ярда + + + {0} г + {0} г + {0} г + {0} г + + + {0} кг + {0} кг + {0} кг + {0} кг + + + {0} унція + {0} унції + {0} унцій + {0} унції + + + {0} фунт + {0} фунти + {0} фунтів + {0} фунта + + + {0} к.с. + {0} к.с. + {0} к.с. + {0} к.с. + + + {0} кВт + {0} кВт + {0} кВт + {0} кВт + + + {0} Вт + {0} Вт + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + {0} гПа + {0} гПа + + + {0} дюйм рт. ст. + {0} дюйми рт. ст. + {0} дюймів рт. ст. + {0} дюйма рт. ст. + + + {0} мбар + {0} мбари + {0} мбарів + {0} мбара + + + {0} км/год + {0} км/год + {0} км/год + {0} км/год + + + {0} м/с + {0} м/с + {0} м/с + {0} м/с + + + {0} миля/год + {0} милі/год + {0} миль/год + {0} милі/год + + + {0}°C + {0}°C + {0}°C + {0}°C + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} км³ + {0} км³ + {0} км³ + {0} км³ + + + {0} миля³ + {0} милі³ + {0} миль³ + {0} милі³ + + + {0} л + {0} л + {0} л + {0} л + + + + + {0}/{1} + + + {0} G + {0} G + {0} G + {0} G + + + {0}′ + {0}′ + {0}′ + {0}′ + + + {0}″ + {0}″ + {0}″ + {0}″ + + + {0}° + {0}° + {0}° + {0}° + + + {0} акр + {0} акри + {0} акрів + {0} акра + + + {0} га + {0} га + {0} га + {0} га + + + {0} фут² + {0} фути² + {0} футів² + {0} фута² + + + {0} км² + {0} км² + {0} км² + {0} км² + + + {0} м² + {0} м² + {0} м² + {0} м² + + + {0} миля² + {0} милі² + {0} миль² + {0} милі² + + + {0} дн. + {0} дн. + {0} дн. + {0} дн. + + + {0} год + {0} год + {0} год + {0} год + + + {0} мс + {0} мс + {0} мс + {0} мс + + + {0} хв + {0} хв + {0} хв + {0} хв + + + {0} міс. + {0} міс. + {0} міс. + {0} міс. + + + {0} с + {0} с + {0} с + {0} с + + + {0} тиж. + {0} тиж. + {0} тиж. + {0} тиж. + + + {0} р. + {0} р. + {0} р. + {0} р. + + + {0} см + {0} см + {0} см + {0} см + + + {0} фут + {0} фути + {0} футів + {0} фута + + + {0} дюйм + {0} дюйми + {0} дюймів + {0} дюйма + + + {0} км + {0} км + {0} км + {0} км + + + {0} св. р. + {0} св. р. + {0} св. р. + {0} св. р. + + + {0} м + {0} м + {0} м + {0} м + + + {0} миля + {0} милі + {0} миль + {0} милі + + + {0} мм + {0} мм + {0} мм + {0} мм + + + {0} пм + {0} пм + {0} пм + {0} пм + + + {0} ярд + {0} ярди + {0} ярдів + {0} ярда + + + {0} г + {0} г + {0} г + {0} г + + + {0} кг + {0} кг + {0} кг + {0} кг + + + {0} унція + {0} унції + {0} унцій + {0} унції + + + {0} фунт + {0} фунти + {0} фунтів + {0} фунта + + + {0} к.с. + {0} к.с. + {0} к.с. + {0} к.с. + + + {0} кВт + {0} кВт + {0} кВт + {0} кВт + + + {0} Вт + {0} Вт + {0} Вт + {0} Вт + + + {0} гПа + {0} гПа + {0} гПа + {0} гПа + + + {0} inHg + {0} inHg + {0} inHg + {0} inHg + + + {0} мбар + {0} мбари + {0} мбарів + {0} мбара + + + {0} км/год + {0} км/год + {0} км/год + {0} км/год + + + {0} м/с + {0} м/с + {0} м/с + {0} м/с + + + {0} миля/год + {0} милі/год + {0} миль/год + {0} милі/год + + + {0}° + {0}° + {0}° + {0}° + + + {0}°F + {0}°F + {0}°F + {0}°F + + + {0} км³ + {0} км³ + {0} км³ + {0} км³ + + + {0} миля³ + {0} милі³ + {0} миль³ + {0} милі³ + + + {0} л + {0} л + {0} л + {0} л + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} та {1} + {0} та {1} + + + {0}, {1} + {0}, {1} + {0} і {1} + {0} і {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + так:т + ні:н + + + + diff --git a/library/Zend/Locale/Data/uk_UA.xml b/library/Zend/Locale/Data/uk_UA.xml new file mode 100755 index 000000000..b13923490 --- /dev/null +++ b/library/Zend/Locale/Data/uk_UA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/ur.xml b/library/Zend/Locale/Data/ur.xml new file mode 100755 index 000000000..fc7a53d5f --- /dev/null +++ b/library/Zend/Locale/Data/ur.xml @@ -0,0 +1,4857 @@ + + + + + + + + + + + + {0} ({1}) + {0}،{1} + {0}: {1} + + + ابقازیان + اکولی + ایفریکانز + اکان + امہاری + عربی + ماڈرن اسٹینڈرڈ عربی + آسامی + ایمارا + آزربائیجانی + ازیری + بیلاروسی + بیمبا + بلغاری + بنگالی + تبتی + بریٹن + بوسنی + کاٹالانین + چیروکی + سورانی کردش + کوراسیکن + چیک + ویلش + ڈینش + جرمن + آسٹریائی جرمن + سوئس ہائی جرمن + ڈیویہی + ژونگکھا + ایو + ایفِک + یونانی + انگریزی + آسٹریلیائی انگریزی + کینیڈین انگریزی + برطانوی انگریزی + برطانوی انگلش + امریکی انگریزی + امریکی انگلش + ایسپرانٹو + ہسپانوی + لاطینی امریکی ہسپانوی + یورپی ہسپانوی + میکسیکن ہسپانوی + اسٹونین + باسکی + فارسی + فینیش + فلیپینو + فجی کا باشندہ + فیروئیز + فرانسیسی + کینیڈین فرانسیسی + سوئس فرینچ + مغربی فریسیئن + آئیرِش + گا + سکاٹ گیلِک + گالیشیائی + گُارانی + سوئس جرمن + گجراتی + ہؤسا + ہوائی کا باشندہ + عبرانی + ہندی + کراتی + ہیتی + ہنگیرین + ارمینی + بین لسانیات + انڈونیثیائی + اِگبو + آئس لینڈ کا باشندہ + اطالوی + جاپانی + جاوی + جارجی + کانگو + قزاخ + خمیر + کنّاڈا + کورین + کشمیری + کردش + کرغیزی + لاطینی + لگژمبرگ کا باشندہ + گینڈا + لِنگَلا + لاؤ + لوزی + لتھُواینین + لیوبا لولوآ + لیٹوین + موریسیین + ملاگاسی + ماؤری + مقدونیائی + مالایالم + منگؤلی + مراٹهی + مالائی + مالٹی + برمی + نارویجین بوکمل + شمالی دبیل + نیپالی + ڈچ + فلیمِش + نورویجینی نینورسک + نارویجین + شمالی سوتھو + نیانجا + نینکول + آکسیٹان + اورومو + اورِیا + اوسیٹک + پنجابی + پولستانی + پشتو + پُرتگالی + برازیلی پرتگالی + یورپی پرتگالی + کویچوآ + رومانش + رونڈی + رومنی + روسی + کینیاروانڈا + سَنسکرِت + سندھی + شمالی سامی + سانگو + سربو-کروئیشین + سنہالا + سلوواک + سلووینیائی + ساموآن + شونا + صومالی + البانی + صربی + سواتی + جنوبی سوتھو + سنڈانیز + سویڈش + سواحلی + تمل + تیلگو + ٹیٹم + تاجک + تھائی + ٹگرینیا + ترکمان + ٹیگا لوگ + کلنگن + سوانا + ٹونگن + ٹوک پِسِن + ترکی + زونگا + تاتار + ٹمبوکا + توی + تاہیتی + یوئگہر + یوکرینیائی + نامعلوم زبان + اردو + ازبیک + وینڈا + ویتنامی + وولوف + ژوسا + یدش + یوروبا + اسٹینڈرڈ مغربی امازیقی + چینی + چینی (آسان کردہ) + روایتی چینی + زولو + کوئی لسانی مواد نہیں + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + دنیا + افریقہ + شمالی امریکہ + جنوبی امریکہ + اوشیانیا + مغربی افریقہ + وسطی امریکہ + مشرقی افریقہ + شمالی افریقہ + وسطی افریقہ + جنوبی افریقہ کے علاقہ + امیریکاز + شمالی امریکہ کا علاقہ + کریبیائی + مشرقی ایشیا + جنوبی ایشیا + جنوب مشرقی ایشیا + جنوبی یورپ + آسٹریلیشیا + مالینیشیا + مائکرونیشیائی علاقہ + پولینیشیا + ایشیا + وسطی ایشیا + مغربی ایشیا + یوروپ + مشرقی یورپ + شمالی یورپ + مغربی یورپ + لاطینی امریکہ + اسکینسیئن آئلینڈ + انڈورا + متحدہ عرب امارات + افغانستان + انٹیگوا اور باربودا + انگوئیلا + البانیہ + آرمینیا + نیدرلینڈز انٹیلیز + انگولا + انٹارکٹیکا + ارجنٹینا + امریکی ساموآ + آسٹریا + آسٹریلیا + اروبا + آلینڈ آئلینڈز + آذربائجان + بوسنیا اور ہرزیگووینا + باربادوس + بنگلہ دیش + بیلجیم + برکینا فاسو + بلغاریہ + بحرین + برونڈی + بینن + سینٹ برتھلیمی + برمودا + برونئی + بولیویا + کریبیائی نیدرلینڈز + برازیلی + بہاماس + بھوٹان + بؤویٹ آئلینڈ + بوتسوانا + بیلاروس + بیلائز + کینیڈا + کوکوس (کیلنگ) جزائر + کانگو - کنشاسا + کانگو (DRC) + وسط افریقی جمہوریہ + کانگو - برازاویلے + کانگو (جمہوریہ) + سوئٹزر لینڈ + کوٹ ڈی آئیوری + آئیوری کوسٹ + کک آئلینڈز + چلی + کیمرون + چین + کولمبیا + کلپّرٹن آئلینڈ + کوسٹا ریکا + کیوبا + کیپ ورڈی + کیوراکاؤ + کرسمس آئلینڈ + قبرص + چیک جمہوریہ + جرمنی + ڈائجو گارسیا + جبوتی + ڈنمارک + ڈومنیکا + ڈومنیکن جمہوریہ + الجیریا + سیئوٹا اور میلیلا + ایکواڈور + اسٹونیا + مصر + مغربی صحارا + اریٹیریا + ہسپانیہ + ایتھوپیا + یوروپی یونین + فن لینڈ + فجی + فاکلینڈ جزائر + فاکلینڈ جزائر (مالویناس) + مائکرونیشیا + فروئی آئلینڈز + فرانس + گیبون + سلطنت متحدہ + یو کے + غرناطہ + جارجیا + فرینچ گیانا + گوئرنسی + گھانا + جبل الطارق + گرین لینڈ + گامبیا + گنی + گواڈیلوپ + استوائی گیانا + یونان + جنوبی جارجیا اور جنوبی سینڈوچ جزائر + گواٹے مالا + گوآم + گنی بساؤ + گیانا + ہانگ کانگ SAR چین + ہانگ کانگ + ہیئرڈ آئلینڈ اور میکڈونالڈ آئلینڈز + ہونڈاروس + کروشیا + ہیتی + ہنگری + کینری آئلینڈز + انڈونیشیا + آئرلینڈ + اسرائیل + آئل آف مین + بھارت + برطانوی ہندوستانی سمندری خطہ + عراق + ایران + آئس لینڈ + اٹلی + جرسی + جمائیکا + اردن + جاپان + کینیا + کرغزستان + کمبوڈیا + کریباتی + کوموروس + سینٹ کٹس اور نیویس + شمالی کوریا + جنوبی کوریا + کویت + کیمین آئلینڈز + قزاخستان + لاؤس + لبنان + سینٹ لوسیا + لیشٹنسٹائن + سری لنکا + لائبیریا + لیسوتھو + لتھوانیا + لگژمبرگ + لٹویا + لیبیا + مراقش + موناکو + مالدووا + مونٹے نیگرو + سینٹ مارٹن + مڈغاسکر + مارشل آئلینڈز + مقدونیہ + مقدونیہ (FYROM) + مالی + میانمار (برما) + منگولیا + مکاؤ SAR چین + مکاؤ + شمالی ماریانا آئلینڈز + مارٹینک + موریطانیہ + مونٹسیراٹ + مالٹا + ماریشس + مالدیو + ملاوی + میکسیکو + ملیشیا + موزمبیق + نامیبیا + نیو کلیڈونیا + نائجر + نار فاک آئلینڈ + نائجیریا + نکاراگووا + نیدر لینڈز + ناروے + نیپال + نؤرو + نیئو + نیوزی ینڈ + عمان + پنامہ + پیرو + فرانسیسی پولینیشیا + پاپوآ نیو گنی + فلپائنی + پاکستان + پولینڈ + سینٹ پیئر اور میکلیئون + پٹکائرن جزائر + پیورٹو ریکو + فلسطینی خطے + فلسطین + پرتگال + پلاؤ + پیراگوئے + قطر + بیرونی اوشیانیا + ری یونین + رومانیا + سربیا + روسی + روانڈا + سعودی عرب + سولومن آئلینڈز + سشلیز + سوڈان + سویڈن + سنگاپور + سینٹ ہیلینا + سلووینیا + سوالبرڈ اور جان ماین + سلوواکیہ + سیئر لیون + سان مارینو + سینیگل + صومالیہ + سورینام + جنوبی سوڈان + ساؤ ٹوم اور پرنسپے + ال سلواڈور + سنٹ مارٹن + شام + سوازی لینڈ + ٹرسٹن ڈا کیونہا + ترکس اور کیکاؤس جزائر + چاڈ + فرانسیسی جنوبی خطے + ٹوگو + تھائی لینڈ + تاجکستان + ٹوکیلاؤ + تیمور لیسٹ + مشرقی تیمور + ترکمانستان + تیونیسیا + ٹونگا + ترکی + ترینیداد اور ٹوباگو + ٹووالو + تائیوان + تنزانیہ + یوکرین + یوگانڈا + امریکہ سے باہر کے چھوٹے جزائز + ریاستہائے متحدہ + امریکا + یوروگوئے + ازبکستان + واٹیکن سٹی + سینٹ ونسنٹ اور گرینیڈائنز + وینزوئیلا + برٹش ورجن آئلینڈز + امریکی ورجن آئلینڈز + ویتنام + وینوآٹو + ویلیز اور فیوٹیونا + ساموآ + کوسووو + یمن + مایوٹ + جنوبی افریقہ + زامبیا + زمبابوے + نامعلوم علاقہ + + + کیلنڈر + علامات کی چھٹائی نظرانداز کریں + معکوس تلفظ کی چھٹائی + بڑے حروف/ چھوٹے حروف کی ترتیب بندی + حروف کے تئیں حساس چھٹائی + Kena چھٹائی + چھٹائی کی ترتیب + معمول کی چھٹائی + عددی چھٹائی + چھٹائی کی قوت + کرنسی + اعداد + منطقۂ وقت + مقام کا متغیرہ + بطور علامات چھٹائی کریں + نجی-استعمال + + + عربی ہندی ہندسے + توسیع شدہ عربی ہندی ہندسے + آرمینیائی اعداد + آرمینیائی زیریں اعداد + ہنگالی ہندسے + روایتی چینی کی چھٹائی کی ترتیب - Big5 + بودھ کلینڈر + چینی کیلنڈر + کاپٹک کیلنڈر + دیوناگری ہندسے + لغت کی چھٹنی کی ترتیب + ڈیفالٹ یونیکوڈ کی چھٹنی کی ترتیب + ایتھوپیائی اعداد + ایتھوپیائی کیلنڈر + ایتھوپک امیٹ الیم کیلنڈر + مالیاتی ہندسے + پورے عرض والے ہندسے + آسان چینی کی چھٹائی کی ترتیب - GB2312 + جارجیائی اعداد + جارجیائی کیلنڈر + یونانی اعداد + یونانی زیریں اعداد + گجراتی ہندسے + گرمکھی ہندسے + چینی اعشاری اعداد + آسان چینی اعداد + آسان چینی مالی اعداد + روایتی چینی اعداد + روایتی چینی مالی اعداد + عبرانی اعداد + عبرانی کیلنڈر + سبھی کی چھٹائی کریں + ہندوستانی قومی کیلنڈر + اسلامی کیلنڈر + اسلامی شہری کیلنڈر + جاپانی کیلنڈر + جاپانی اعداد + جاپانی مالی اعداد + خمیر ہندسے + کنڑ ہندسے + لاؤ ہندسے + مغربی ہندسے + پہلے چھوٹے حروف کی چھٹائی کریں + ملیالم ہندسے + منگولیائی ہندسے + میانمار کے ہندسے + اصل ہندسے + لہجوں کی چھٹائی معمول کے انداز میں کریں + معمول کے حروف کی ترتیب کی چھٹائی کریں + حروف کی عدم حساسیت کی چھٹائی کریں + Kana کی چھٹائی الگ الگ کریں + حسب معمول بنائے بغیر چھٹائی کریں + انفرادی طور پر ہندسوں کی چھٹائی کریں + علامات کی چھٹائی کریں + اڑیہ ہندسے + فارسی کیلنڈر + فون بک کی چھٹنی کی ترتیب + صوتی چھٹائی کی ترتیب + پن ین کی چھٹنی کی ترتیب + صرف اساسی حروف کی چھٹائی کریں + لہجہ/ بڑے چھوٹے حروف/چوڑائی/Kana کی چھٹائی کریں + دوبارہ تشکیل شدہ چھٹنی کی ترتیب + منگوو کیلنڈر + رومن اعداد + رومن زیریں اعداد + عام-مقصد کی تلاش + Hangul Initial Consonant کے لحاظ سے تلاش کریں + لہجوں کی چھٹائی کریں + علامات کو نظرانداز کرکے چھٹائی کریں + معیاری چھنٹائی کی ترتیب + سٹروک کی چھٹنی کی ترتیب + تمل اعداد + تمل اعداد + تیلگو ہندسے + لہجوں/حروف/چوڑائی کی چھٹائی کریں + تھائی ہندسے + تبتی اعداد + روایتی چھٹنی کی ترتیب + روایتی اعداد + اساسی-سٹروک کی چھٹنی کی ترتیب + پہلے بالائی حروف کی چھٹائی کریں + وائی ہندسے + لہجوں کی معکوس چھٹائی کریں + حروف کے تئیں حساس کی چھٹائی کریں + Kana کی مختلف طریقے سے چھٹائی کریں + معمول کے یونیکوڈ کی چھٹائی کریں + اعداد کے لحاظ سے ہندسوں کی چھٹائی کریں + + + BGN + عددی + ٹون + UNGEGN + لہجے + پورا عرض + نصف عرض + جامو + پن یِن + اشاعت + + + پیمانہ + سلطنت متحدہ + ریاستہائے متحدہ + + + زبان:{0} + رسم الخط:{0} + خطہ:{0} + + + + + right-to-left + + + + [ا أ آ ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ں و ؤ ہ ۂ ھ ء ی ئ ے ة ه] + [؀؁؂؃\u200C\u200D\u200E\u200F \u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0654 \u0656 \u0657 \u0658 \u0670 ۃ ٻ ٺ ټ ٽ ي] + [ا ب پ ت ٹ ث ج چ ح خ د ڈ ذ ر ڑ ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ہ ھ ء ی ے] + [، ؍ ٫ ٬ ؛ \: ؟ . ۔ ( ) \[ \]] + {0}… + …{0} + {0}…{1} + ؟ + + + + + + + + + + + + + + EEEE، d MMMM، y G + + + + + d MMMM، y G + + + + + d MMM، y G + + + + + d/M/y GGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM y G + d MMM، y G + E، d MMM، y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E، d/M + LLL + d MMM + E، d MMM + mm:ss + y G + y G + M/y G + d/M/y G + E، d/M/y G + MMM y G + d MMM، y G + E، d MMM، y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E، d/M – E، d/M + E، d/M – E، d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E، d MMM – E، d MMM + E، d MMM – E، d MMM + + + y–y G + + + M/y – M/y G + M/y – M/y G + + + d/M/y - d/M/y G + d/M/y – d/M/y G + d/M/y – d/M/y G + + + E، d/M/y – E، d/M/y G + E، d/M/y – E، d/M/y G + E، d/M/y – E، d/M/y G + + + MMM–MMM y G + MMM y – MMM y G + + + d-d MMM، y G + d MMM – d MMM، y G + d MMM، y – d MMM، y G + + + E، d MMM – E، d MMM، y G + E، d MMM – E، d MMM، y G + E، d MMM، y – E، d MMM، y G + + + MMMM–MMMM y G + MMMM y – MMMM y G + + + + + + + + + جنوری + فروری + مارچ + اپریل + مئی + جون + جولائی + اگست + ستمبر + اکتوبر + نومبر + دسمبر + + + J + F + M + A + M + J + J + A + S + O + N + D + + + جنوری + فروری + مارچ + اپریل + مئی + جون + جولائی + اگست + ستمبر + اکتوبر + نومبر + دسمبر + + + + + جنوری + فروری + مارچ + اپریل + مئی + جون + جولائی + اگست + ستمبر + اکتوبر + نومبر + دسمبر + + + J + F + M + A + M + J + J + A + S + O + N + D + + + جنوری + فروری + مارچ + اپریل + مئی + جون + جولائی + اگست + ستمبر + اکتوبر + نومبر + دسمبر + + + + + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + S + M + T + W + T + F + S + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + S + M + T + W + T + F + S + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + + + + + 1 + 2 + 3 + 4 + + + پہلی سہ ماہی + دوسری سہ ماہی + تیسری سہ ماہی + چوتهی سہ ماہی + + + + + 1 + 2 + 3 + 4 + + + + + + + قبل دوپہر + بعد دوپہر + + + قبل دوپہر + بعد دوپہر + + + + + + قبل مسیح + عیسوی سن + + + ق م + BCE + عیسوی سن + CE + + + + + + EEEE، d MMMM، y + + + + + d MMMM، y + + + + + d MMM، y + + + + + d/M/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + d MMM، y G + E، d MMM، y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E، d/M + LLL + d MMM + E، d MMM + mm:ss + y + M/y + d/M/y + E، d/M/y + MMM y + d MMM، y + E، d MMM، y + QQQ y + QQQQ y + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + d/M – d/M + d/M – d/M + + + E، d/M – E، d/M + E، d/M – E، d/M + + + MMM–MMM + + + d–d MMM + d MMM – d MMM + + + E، d MMM – E، d MMM + E، d MMM – E، d MMM + + + y–y + + + M/y – M/y + M/y – M/y + + + d/M/y - d/M/y + d/M/y – d/M/y + d/M/y – d/M/y + + + E، d/M/y – E، d/M/y + E، d/M/y – E، d/M/y + E، d/M/y – E، d/M/y + + + MMM–MMM y + MMM y – MMM y + + + d-d MMM، y + d MMM – d MMM، y + d MMM، y – d MMM، y + + + E، d MMM – E، d MMM، y + E، d MMM – E، d MMM، y + E، d MMM، y – E، d MMM، y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + محرم + صفر + ر بیع الاول + ر بیع الثانی + جمادی الاول + جمادی الثانی + رجب + شعبان + رمضان + شوال + ذوالقعدۃ + ذوالحجۃ + + + + + + ق م + عیسوی سن + + + + + + + عہد + + + سال + پچھلے سال + اس سال + اگلے سال + + {0} سال میں + {0} سال میں + + + {0} سال پہلے + {0} سال پہلے + + + + مہینہ + پچھلے مہینہ + اس مہینہ + اگلے مہینہ + + {0} مہینہ میں + {0} مہینے میں + + + {0} مہینہ پہلے + {0} مہینے پہلے + + + + ہفتہ + پچھلے ہفتہ + اس ہفتہ + اگلے ہفتہ + + {0} ہفتہ میں + {0} ہفتے میں + + + {0} ہفتہ پہلے + {0} ہفتے پہلے + + + + دن + گزشتہ پرسوں + گزشتہ کل + آج + آئندہ کل + آنے والا پرسوں + + {0} دن میں + {0} دن میں + + + {0} دن پہلے + {0} دن پہلے + + + + ہفتے کا دن + + + گزشتہ اتوار + یہ اتوار + اگلے اتوار + + + گزشتہ پیر + یہ پیر + اگلے پیر + + + گزشتہ منگل + یہ منگل + اگلے منگل + + + گزشتہ بدھ + یہ بدھ + اگلے بدھ + + + گزشتہ جمعرات + یہ جمعرات + اگلے جمعرات + + + گزشتہ جمعہ + یہ جمعہ + اگلے جمعہ + + + گزشتہ ہفتہ + یہ ہفتہ + اگلے ہفتہ + + + AM/PM + + + گھنٹہ + + {0} گھنٹہ میں + {0} گھنٹے میں + + + {0} گھنٹہ پہلے + {0} گھنٹے پہلے + + + + منٹ + + {0} منٹ میں + {0} منٹ میں + + + {0} منٹ پہلے + {0} منٹ پہلے + + + + سیکنڈ + اب + + {0} سیکنڈ میں + {0} سیکنڈ میں + + + {0} سیکنڈ پہلے + {0} سیکنڈ پہلے + + + + منطقہ وقت + + + + +HH:mm;-HH:mm + GMT {0} + GMT + {0} وقت + {0} (+1) + {0} (+0) + {1} ({0}) + + نامعلوم شہر + + + انڈورا + + + دوبئی + + + کابل + + + انٹیگوا + + + انگویلا + + + ٹیرانی + + + یریوان + + + لوانڈا + + + روتھیرا + + + پلمیر + + + سیووا + + + ماؤسن + + + ڈیوس + + + ووستوک + + + کیسی + + + ڈومونٹ ڈی ارویلے + + + میک مرڈو + + + ریو گالیگوس + + + مینڈوزا + + + سان جوآن + + + اوشوآئیا + + + لا ریئوجا + + + سان لوئس + + + کیٹامارکا + + + سالٹا + + + جوجوئی + + + ٹوکومین + + + کورڈوبا + + + بیونس آئرس + + + پاگو پاگو + + + ویانا + + + پرتھ + + + ایوکلا + + + ڈارون + + + اڈیلائڈ + + + بروکن ہِل + + + کیوری + + + ملبورن + + + ہوبارٹ + + + لِنڈمین + + + سڈنی + + + برسبین + + + میکواری + + + لارڈ ہووے + + + اروبا + + + میریہام + + + باکو + + + سراجیوو + + + باربادوس + + + ڈھاکہ + + + برسلز + + + اؤگاڈؤگوو + + + صوفیہ + + + بحرین + + + بجمبرا + + + پورٹو نووا + + + سینٹ برتھیلمی + + + برمودا + + + برونئی + + + لا پاز + + + کرالینڈیجک + + + ایرونیپ + + + ریئو برینکو + + + پورٹو ویلہو + + + بوآ وسٹا + + + مناؤس + + + کوئیابا + + + سنٹارین + + + کیمپو گرینڈ + + + بیلیم + + + اراگویانا + + + ساؤ پالو + + + باہیا + + + فورٹالیزا + + + میسیئو + + + ریسائف + + + نورونہا + + + نساؤ + + + تھمپو + + + جیبورون + + + مِنسک + + + بیلائز + + + ڈاؤسن + + + وہائٹ ہارس + + + انووِک + + + وینکوور + + + ڈاؤسن کریک + + + کریسٹون + + + ایلو نائف + + + ایڈمونٹن + + + سوِفٹ کرنٹ + + + کیمبرج کی کھاڑی + + + ریجینا + + + ونّیپیگ + + + ریزولیوٹ + + + برساتی ندی + + + رینکن انلیٹ + + + اٹیکوکن + + + تھنڈر بے + + + نپیگون + + + ٹورنٹو + + + ایکالوئٹ + + + پینگنِرٹنگ + + + مونکٹن + + + ہیلیفیکس + + + گوس کی کھاڑی + + + گلیس کی کھاڑی + + + بلانک سبلون + + + سینٹ جانز + + + کوکوس + + + کنشاسا + + + لوبمباشی + + + بنگوئی + + + برازاویلے + + + زیورخ + + + عابدجان + + + راروٹونگا + + + ایسٹر + + + سنٹیاگو + + + ڈوآلا + + + کاشغر + + + یورومکی + + + چانگ کنگ + + + شنگھائی + + + ہربِن + + + بگوٹا + + + کوسٹا ریکا + + + ہوانا + + + کیپ ورڈی + + + کیوراکاؤ + + + کرسمس + + + نکوسیا + + + پراگ + + + بزنجن + + + برلن + + + جبوتی + + + کوپن ہیگن + + + ڈومنیکا + + + سانتو ڈومنگو + + + الجیئرس + + + گیلاپیگوس + + + گوآیاکوئل + + + تالِّن + + + قاہرہ + + + العیون + + + اسمارا + + + کینری + + + سیوٹا + + + میڈرڈ + + + عدیس ابابا + + + ہیلسنکی + + + فجی + + + اسٹینلے + + + چیوک + + + پونپیئی + + + کوسرائی + + + فروئی + + + پیرس + + + لبرے ویلے + + + + برطانوی کا گرما کے وقت + + لندن + + + غرناطہ + + + طبلیسی + + + کیینّی + + + گوئرنسی + + + اکّرا + + + جبل الطارق + + + تھولو + + + گاڈتھیب + + + اسکورز بائی سنڈ + + + ڈنمارک شاون + + + بنجول + + + کونکری + + + گواڈیلوپ + + + ملابو + + + ایتھنز + + + جنوبی جارجیا + + + گواٹے مالا + + + گوآم + + + بِساؤ + + + گیانا + + + ہانگ کانگ + + + ٹیگوسیگالپے + + + زیگریب + + + پورٹ او پرنس + + + بدھاپیسٹ + + + جکارتہ + + + پونٹیانک + + + مکاسر + + + جے پورہ + + + + آئرش کا گرما کے وقت + + ڈبلن + + + یروشلم + + + آئل آف مین + + + کولکاتا + + + چاگوس + + + بغداد + + + تہران + + + ریکجاوک + + + روم + + + جرسی + + + جمائیکا + + + امّان + + + ٹوکیو + + + نیروبی + + + بشکیک + + + نام پنہ + + + اینڈربری + + + کریتیماٹی + + + ٹراوا + + + کومورو + + + سینٹ کٹس + + + پیونگ یانگ + + + سیئول + + + کویت + + + کیمین + + + اکتاؤ + + + زبانی + + + اکٹوب + + + کیزیلورڈا + + + الماٹی + + + وینٹیانا + + + بیروت + + + سینٹ لوسیا + + + ویڈوز + + + کولمبو + + + مونروویا + + + مسیرو + + + وِلنیئس + + + لگژمبرگ + + + ریگا + + + ٹریپولی + + + کیسا بلانکا + + + موناکو + + + چیسیناؤ + + + پوڈگورسیا + + + میریگوٹ + + + انٹاناناریوو + + + کواجیلین + + + مجورو + + + اسکوپجے + + + بماکو + + + رنگون + + + ہووارڈ + + + اولان باتار + + + کوائبلسان + + + مکاؤ + + + سائپین + + + مارٹینک + + + نؤآک چاٹ + + + مونٹسیراٹ + + + مالٹا + + + ماریشس + + + مالدیپ + + + بلینٹائر + + + تیجوآنا + + + سانتا ایزابیل + + + ہرموسیلو + + + میزٹلان + + + چیہوآہوآ + + + بہیا بندراز + + + اوجیناگا + + + مونٹیری + + + میکسیکو سٹی + + + میٹاموروس + + + میریڈا + + + کنکیون + + + کوالا لمپور + + + کیوچنگ + + + مپوٹو + + + ونڈہوک + + + نؤمیا + + + نیامی + + + نورفوک + + + لاگوس + + + مناگوآ + + + ایمسٹرڈم + + + اوسلو + + + کاٹھمنڈو + + + ناؤرو + + + نیئو + + + چیتھم + + + آکلینڈ + + + مسقط + + + پنامہ + + + لیما + + + تاہیتی + + + مارکیساس + + + گامبیئر + + + پورٹ موریسبی + + + منیلا + + + کراچی + + + وارسا + + + میکلیئون + + + پٹکائرن + + + پیورٹو ریکو + + + غزہ + + + ہیبرون + + + ازوریس + + + مڈیئرا + + + لسبن + + + پلاؤ + + + اسنسیئن + + + قطر + + + ری یونین + + + بخارسٹ + + + بلغراد + + + لینن گراد + + + ماسکو + + + وولگوگراد + + + سمارا + + + یکاٹیرِنبرگ + + + اومسک + + + نوووسِبِرسک + + + نوووکوزنیتسک + + + کریسنویارسک + + + ارکتسک + + + یکوتسک + + + ولادی ووستک + + + خندیگا + + + سخالین + + + اوسٹ-نیرا + + + میگیدن + + + کیمچٹکا + + + انیدر + + + کگالی + + + ریاض + + + گواڈل کینال + + + ماہی + + + خرطوم + + + اسٹاک ہوم + + + سنگاپور + + + سینٹ ہیلینا + + + جبجانا + + + لانگ ایئر بین + + + بریٹِسلاوا + + + فری ٹاؤن + + + سان ماریانو + + + ڈکار + + + موگادیشو + + + پراماریبو + + + جوبا + + + ساؤ ٹوم + + + ال سلواڈور + + + لوور پرنسس کوارٹر + + + دمشق + + + مبابین + + + عظیم ترک + + + ڈجامینا + + + کرگیولین + + + لوم + + + بنکاک + + + دوشانبے + + + فکاؤفو + + + ڈلی + + + اشغبت + + + تیونس + + + ٹونگاٹاپو + + + استنبول + + + پورٹ آف اسپین + + + فیونافیوٹی + + + تائپے + + + دار السلام + + + ازگوروڈ + + + کیوو + + + سمفروپول + + + زیپوروزائی + + + کیمپالا + + + وسط دن + + + جانسٹن + + + بیدار + + + اداک + + + نوم + + + ہونولولو + + + اینکریج + + + یکوٹیٹ + + + سیٹکا + + + جونیئو + + + میٹلا کاٹلا + + + لاس اینجلس + + + بوائس + + + فینکس + + + ڈینور + + + بیولاہ، شمالی ڈکوٹا + + + نیو سلیم، شمالی ڈکوٹا + + + وسط، شمالی ڈکوٹا + + + شکاگو + + + مینومینی + + + ونسینیز، انڈیانا + + + پیٹرزبرگ، انڈیانا + + + ٹیل سٹی، انڈیانا + + + کنوکس، انڈیانا + + + وینامیک، انڈیانا + + + مرینگو، انڈیانا + + + انڈیاناپولس + + + لوئس ویلے + + + ویوے، انڈیانا + + + مونٹیسیلو، کینٹوکی + + + ڈیٹرائٹ + + + نیو یارک + + + مونٹی ویڈیو + + + سمرقند + + + تاشقند + + + واٹیکن + + + سینٹ ونسنٹ + + + کراکاس + + + ٹورٹولا + + + سینٹ تھامس + + + ہو چی منہ سٹی + + + ایفیٹ + + + ولّیس + + + اپیا + + + عدن + + + مایوٹ + + + جوہانسبرگ + + + لیوساکا + + + ہرارے + + + + افغانستان کا وقت + + + + + وسطی افریقہ کا وقت + + + + + مشرقی افریقہ کا وقت + + + + + جنوبی افریقہ کا معیاری وقت + + + + + مغربی افریقہ کا وقت + مغربی افریقہ کا معیاری وقت + مغربی افریقہ کا موسم گرما کا وقت + + + + + الاسکا ٹائم + الاسکا اسٹینڈرڈ ٹائم + الاسکا ڈے لائٹ ٹائم + + + + + امیزون ٹائم + امیزن اسٹینڈرڈ ٹائم + امیزون کا موسم گرما کا وقت + + + + + سنٹرل ٹائم + سنٹرل اسٹینڈرڈ ٹائم + سنٹرل ڈے لائٹ ٹائم + + + + + ایسٹرن ٹائم + ایسٹرن اسٹینڈرڈ ٹائم + ایسٹرن ڈے لائٹ ٹائم + + + + + ماؤنٹین ٹائم + ماؤنٹین اسٹینڈرڈ ٹائم + ماؤنٹین ڈے لائٹ ٹائم + + + + + پیسفک ٹائم + پیسفک اسٹینڈرڈ ٹائم + پیسفک ڈے لائٹ ٹائم + + + + + انیدر ٹائم + انیدر اسٹینڈرڈ ٹائم + انیدر سمر ٹائم + + + + + عرب کا وقت + عرب کا معیاری وقت + عرب کا دن کا وقت + + + + + ارجنٹینا ٹائم + ارجنٹینا کا معیاری وقت + ارجنٹینا سمر ٹائم + + + + + مغربی ارجنٹینا کا وقت + مغربی ارجنٹینا کا معیاری وقت + مغربی ارجنٹینا کا موسم گرما کا وقت + + + + + آرمینیا کا وقت + آرمینیا کا معیاری وقت + آرمینیا کا موسم گرما کا وقت + + + + + اٹلانٹک ٹائم + اٹلانٹک اسٹینڈرڈ ٹائم + اٹلانٹک ڈے لائٹ ٹائم + + + + + سنٹرل آسٹریلیا ٹائم + آسٹریلین سنٹرل اسٹینڈرڈ ٹائم + آسٹریلین سنٹرل ڈے لائٹ ٹائم + + + + + آسٹریلین سنٹرل ویسٹرن ٹائم + آسٹریلین سنٹرل ویسٹرن اسٹینڈرڈ ٹائم + آسٹریلین سنٹرل ویسٹرن ڈے لائٹ ٹائم + + + + + ایسٹرن آسٹریلیا ٹائم + آسٹریلین ایسٹرن اسٹنڈرڈ ٹائم + آسٹریلین ایسٹرن ڈے لائٹ ٹائم + + + + + ویسٹرن آسٹریلیا ٹائم + آسٹریلیا ویسٹرن اسٹینڈرڈ ٹائم + آسٹریلین ویسٹرن ڈے لائٹ ٹائم + + + + + آذربائیجان کا وقت + آذربائیجان کا معیاری وقت + آذربائیجان کا موسم گرما کا وقت + + + + + ازوریس کا وقت + ازوریس کا معیاری وقت + ازوریس کا موسم گرما کا وقت + + + + + بنگلہ دیش کا وقت + بنگلہ دیش کا معیاری وقت + بنگلہ دیش کا موسم گرما کا وقت + + + + + بھوٹان کا وقت + + + + + بولیویا کا وقت + + + + + برازیلیا ٹائم + برازیلیا اسٹینڈرڈ ٹائم + برازیلیا سمر ٹائم + + + + + برونئی دارالسلام کا وقت + + + + + کیپ ورڈی کا وقت + کیپ ورڈی کا معیاری وقت + کیپ ورڈی کا موسم گرما کا وقت + + + + + شمورو کا معیاری وقت + + + + + چیتھم کا وقت + چیتھم کا موسم گرما کا وقت + چیتھم کا دن کا وقت + + + + + چلی کا وقت + چلی کا معیاری وقت + چلی کا موسم گرما کا وقت + + + + + چین کا وقت + چین کا معیاری وقت + چین کا دن کا وقت + + + + + کوئبلسان ٹائم + کوئبلسان کا معیاری وقت + کوائبلسان سمر ٹائم + + + + + کرسمس آئلینڈ کا وقت + + + + + کوکوس آئلینڈز کا وقت + + + + + کولمبیا کا وقت + کولمبیا کا معیاری وقت + کولمبیا کا موسم گرما کا وقت + + + + + کک آئلینڈز کا وقت + کک آئلینڈز کا معیاری وقت + کک آئلینڈز کا نصف موسم گرما کا وقت + + + + + کیوبا کا وقت + کیوبا کا معیاری وقت + کیوبا کا دن کا وقت + + + + + ڈیوس کا وقت + + + + + ڈومونٹ-ڈی'ارویلے کا وقت + + + + + مشرقی تیمور کا وقت + + + + + ایسٹر آئلینڈ کا وقت + ایسٹر آئلینڈ کا معیاری وقت + ایسٹر آئلینڈ کا موسم گرما کا وقت + + + + + ایکواڈور کا وقت + + + + + وسط یورپ کا وقت + وسطی یورپ کا معیاری وقت + وسطی یورپ کا موسم گرما کا وقت + + + + + مشرقی یورپ کا وقت + مشرقی یورپ کا معیاری وقت + مشرقی یورپ کا موسم گرما کا وقت + + + + + مغربی یورپ کا وقت + مغربی یورپ کا معیاری وقت + مغربی یورپ کا موسم گرما کا وقت + + + + + فاک لینڈ آئلینڈز کا وقت + فاک لینڈ آئلینڈز کا معیاری وقت + فاک لینڈ آئلینڈز کا موسم گرما کا وقت + + + + + فجی کا وقت + فجی کا معیاری وقت + فجی کا موسم گرما کا وقت + + + + + فرینچ گیانا کا وقت + + + + + فرینچ سدرن اور انٹارکٹک کا وقت + + + + + گالاپاگوز کا وقت + + + + + گیمبیئر کا وقت + + + + + جارجیا کا وقت + جارجیا کا معیاری وقت + جارجیا کا موسم گرما کا وقت + + + + + جلبرٹ آئلینڈز کا وقت + + + + + گرین وچ کا اصل وقت + + + + + مشرقی گرین لینڈ کا وقت + مشرقی گرین لینڈ کا معیاری وقت + مشرقی گرین لینڈ کا موسم گرما کا وقت + + + + + مغربی گرین لینڈ کا وقت + مغربی گرین لینڈ کا معیاری وقت + مغربی گرین لینڈ کا موسم گرما کا وقت + + + + + خلیج کا معیاری وقت + + + + + گیانا کا وقت + + + + + ہوائی الیوٹیئن ٹائم + ہوائی الیوٹیئن اسٹینڈرڈ ٹائم + ہوائی الیوٹیئن ڈے لائٹ ٹائم + + + + + ہانگ کانگ کا وقت + ہانگ کانگ کا معیاری وقت + ہانگ کانگ کا موسم گرما کا وقت + + + + + ہووارڈ ٹائم + ہاورڈ کا معیاری وقت + ہووارڈ سمر ٹائم + + + + + ہندوستان کا معیاری وقت + + + + + بحر ہند کا وقت + + + + + ہند چین کا وقت + + + + + وسطی انڈونیشیا کا وقت + + + + + مشرقی انڈونیشیا کا وقت + + + + + مغربی انڈونیشیا کا وقت + + + + + ایران کا وقت + ایران کا معیاری وقت + ایران کا دن کا وقت + + + + + ارکتسک ٹائم + ارکتسک کا معیاری وقت + ارکتسک سمر ٹائم + + + + + اسرائیل کا وقت + اسرائیل کا معیاری وقت + اسرائیل کا دن کا وقت + + + + + جاپان کا وقت + جاپان کا معیاری وقت + جاپان کا دن کا وقت + + + + + پیٹروپاؤلووسک-کیمچسکی ٹائم + پیٹروپاؤلووسک-کیمچسکی اسٹینڈرڈ ٹائم + پیٹروپاؤلووسک-کیمچسکی سمر ٹائم + + + + + مشرقی قزاخستان کا وقت + + + + + مغربی قزاخستان کا وقت + + + + + کوریا کا وقت + کوریا کا معیاری وقت + کوریا کا دن کا وقت + + + + + کوسرے کا وقت + + + + + کریسنویارسک ٹائم + کرسنویارسک کا معیاری وقت + کریسنویارسک سمر ٹائم + + + + + کرغستان کا وقت + + + + + لائن آئلینڈز کا وقت + + + + + لارڈ ہووے ٹائم + لارڈ ہووے اسٹینڈرڈ ٹائم + لارڈ ہووے ڈے لائٹ ٹائم + + + + + مکوآری آئلینڈ کا وقت + + + + + میگیدن ٹائم + میگدان کا معیاری وقت + میگیدن سمر ٹائم + + + + + ملیشیا کا وقت + + + + + مالدیپ کا وقت + + + + + مارکیسس کا وقت + + + + + مارشل آئلینڈز کا وقت + + + + + ماریشس کا وقت + ماریشس کا معیاری وقت + ماریشس کا موسم گرما کا وقت + + + + + ماؤسن کا وقت + + + + + یولان بیتور کا وقت + یولان بیتور کا معیاری وقت + یولان بیٹور سمر ٹائم + + + + + ماسکو ٹائم + ماسکو اسٹینڈرڈ ٹائم + ماسکو سمر ٹائم + + + + + میانمار کا وقت + + + + + ناؤرو کا وقت + + + + + نیپال کا وقت + + + + + نیو کیلیڈونیا کا وقت + نیو کیلیڈونیا کا معیاری وقت + نیو کیلیڈونیا کا موسم گرما کا وقت + + + + + نیوزی لینڈ کا وقت + نیوزی لینڈ کا معیاری وقت + نیوزی لینڈ کا دن کا وقت + + + + + نیو فاؤنڈ لینڈ ٹائم + نیو فاؤنڈ لینڈ اسٹینڈرڈ ٹائم + نیو فاؤنڈ لینڈ ڈے لائٹ ٹائم + + + + + نیئو کا وقت + + + + + نارفوک آئلینڈز کا وقت + + + + + فرنانڈو ڈی نورنہا کا وقت + فرنانڈو ڈی نورنہا کا معیاری وقت + فرنانڈو ڈی نورونہا سمر ٹائم + + + + + نوووسیبرسک ٹائم + نوووسیبرسک کا معیاری وقت + نوووسِبِرسک سمر ٹائم + + + + + اومسک ٹائم + اومسک کا معیاری وقت + اومسک سمر ٹائم + + + + + پاکستان کا وقت + پاکستان کا معیاری وقت + پاکستان کا موسم گرما کا وقت + + + + + پلاؤ کا وقت + + + + + پاپوآ نیو گنی کا وقت + + + + + پیراگوئے کا وقت + پیراگوئے کا معیاری وقت + پیراگوئے کا موسم گرما کا وقت + + + + + پیرو کا وقت + پیرو کا معیاری وقت + پیرو کا موسم گرما کا وقت + + + + + فلپائن کا وقت + فلپائن کا معیاری وقت + فلپائن کا موسم گرما کا وقت + + + + + فینکس آئلینڈز کا وقت + + + + + سینٹ پیئر اور مکلیئون کا وقت + سینٹ پیئر اور مکلیئون کا معیاری وقت + سینٹ پیئر اور مکلیئون کا دن کا وقت + + + + + پٹکائرن کا وقت + + + + + پوناپے کا وقت + + + + + ری یونین کا وقت + + + + + روتھیرا کا وقت + + + + + سخالین ٹائم + سخالین کا معیاری وقت + سخالین سمر ٹائم + + + + + سمارا ٹائم + سمارا اسٹینڈرڈ ٹائم + سمارا سمر ٹائم + + + + + ساموآ وقت + ساموآ کا معیاری وقت + ساموآ سمر وقت + + + + + سیشلیز کا وقت + + + + + سنگاپور کا معیاری وقت + + + + + سولمن آئلینڈز کا وقت + + + + + جنوبی جارجیا کا وقت + + + + + سورینام کا وقت + + + + + سیووا کا وقت + + + + + تاہیتی کا وقت + + + + + تائیپے کا وقت + تائیپے کا معیاری وقت + تائیپے کا دن کا وقت + + + + + تاجکستان کا وقت + + + + + ٹوکیلاؤ کا وقت + + + + + ٹونگا کا وقت + ٹونگا کا معیاری وقت + ٹونگا کا موسم گرما کا وقت + + + + + چوک کا وقت + + + + + ترکمانستان کا وقت + ترکمانستان کا معیاری وقت + ترکمانستان کا موسم گرما کا وقت + + + + + ٹوالو کا وقت + + + + + یوروگوئے کا وقت + یوروگوئے کا معیاری وقت + یوروگوئے کا موسم گرما کا وقت + + + + + ازبکستان کا وقت + ازبکستان کا معیاری وقت + ازبکستان کا موسم گرما کا وقت + + + + + وانوآٹو کا وقت + وانوآٹو کا معیاری وقت + وانوآٹو کا موسم گرما کا وقت + + + + + وینزوئیلا کا وقت + + + + + ولادی ووستک ٹائم + ولادی ووستک کا معیاری وقت + ولادی ووستک سمر ٹائم + + + + + وولگوگراد ٹائم + بلغراد کا معیاری وقت + وولگوگراد سمر ٹائم + + + + + ووسٹاک کا وقت + + + + + ویک آئلینڈ کا وقت + + + + + والیز اور فٹونا کا وقت + + + + + یکوتسک ٹائم + یاکتسک کا معیاری وقت + یکوتسک سمر ٹائم + + + + + یکاٹیرِنبرگ ٹائم + یکیترنگبرگ کا معیاری وقت + یکاٹیرِنبرگ سمر ٹائم + + + + + + latn + + arabext + + + . + , + ; + % + ‎+‎ + ‎-‎ + ق + + + یہ عدد نہیں + + + . + , + ; + % + ‎+ + ‎- + E + × + + + NaN + + + + + #,##0.### + + + + + 0 ہزار + 0 ہزار + 00 ہزار + 00 ہزار + 0 لاکھ + 0 لاکھ + 00 لاکھ + 00 لاکھ + 0 کروڑ + 0 کروڑ + 00 کروڑ + 00 کروڑ + 0 ارب + 0 ارب + 00 ارب + 00 ارب + 0 کھرب + 0 کھرب + 00 کھرب + 00 کھرب + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00‎ + + + {0} {1} + {0} {1} + + + + متحدہ عرب اماراتی درہم + متحدہ عرب اماراتی درہم + متحدہ عرب اماراتی درہم + + + افغان افغانی + + + البانیا کا لیک + + + آرمینیائی ڈرم + + + نیدر لینڈز انٹیلیئن گلڈر + + + انگولا کا کوانزا + + + ارجنٹائن پیسہ + ارجنٹائن پیسہ + ارجنٹائن پیسہ + + + آسٹریلین ڈالر + آسٹریلین ڈالر + آسٹریلین ڈالر + A$ + + + اروبن فلورِن + + + آذربائجانی منات + + + بوسنیا ہرزیگووینا کا قابل منتقلی نشان + + + باربیڈین ڈالر + + + بنگلہ دیشی ٹکا + + + بلغارین لیو + + + بحرینی دینار + + + برونڈیئن فرینک + + + برمودا کا ڈالر + + + برونئی ڈالر + + + بولیوین بولیویانو + + + برازیلی ریئل + برازیلی ریئل + برازیلی ریئل + + + بہامانی ڈالر + + + بھوٹانی گُلٹرم + + + بوتسوانا کا پولا + + + بیلاروسی روبل + + + بیلائز ڈالر + + + کنیڈین ڈالر + کنیڈین ڈالر + کنیڈین ڈالر + + + کانگولیز فرینک + + + سوئس فرانکس + سوئس فرانکس + سوئس فرانکس + + + چلّین پیسہ + چلّین پیسہ + چلّین پیسہ + + + چینی یوآن + + + کولمبین پیسہ + کولمبین پیسہ + کولمبین پیسہ + + + کوسٹا ریکا کا کولن + + + کیوبا کا قابل منتقلی پیسو + + + کیوبا کا پیسو + + + کیپ ورڈی کا اسکیوڈو + + + جمہوریہ چیک کرونا + جمہوریہ چیک کرونا + جمہوریہ چیک کروناز + + + ڈچ مارکس + + + جبوتی کا فرینک + + + ڈنمارک کرونر + ڈنمارک کرونر + ڈنمارک کرونر + + + ڈومنیکن پیسو + + + الجیریائی دینار + + + ایسٹونین کرون + + + مصری پائونڈ + مصری پائونڈ + مصری پائونڈ + + + اریٹیریا کا نافکا + + + ایتھوپیائی بِرّ + + + یورو + یورو + یورو + + + فجی کا ڈالر + + + فاکلینڈ آئلینڈز پونڈ + + + فرانسیسی فرانک + + + انگلستانی پاونڈ سٹرلنگ + + + جارجیائی لاری + + + گھانا کا سیڈی + + + جبل الطارق پونڈ + + + گامبیا کا ڈلاسی + + + گنی کا فرینک + + + گواٹے مالا کا کوئٹزل + + + گویانیز ڈالر + + + ھانگ کانگ ڈالر + ھانگ کانگ ڈالر + ھانگ کانگ ڈالر + + + ہونڈوران لیمپیرا + + + کروشین کونا + کروشین کونا + کروشین کونا + + + ہیتی کا گؤرڈی + + + ہنگرین فورنٹ + ہنگرین فورنٹ + ہنگرین فورنٹ + + + انڈونیشین روپیہ + انڈونیشین روپیہ + انڈونیشین روپیہ + + + اسرائیلی نیا شیکل + اسرائیلی نیا شیکل + اسرائیلی نیا شیکلز + + + انڈین روپیہ + + + عراقی دینار + + + ایرانی ریال + + + آئس لینڈ کا کرونا + + + جمائیکن ڈالر + + + اردنی دینار + + + جاپانی ین + جاپانی ین + جاپانی ین + + + کینیائی شلنگ + + + کرغستانی سوم + + + کمبوڈیائی ریئل + + + کوموریئن فرینک + + + شمالی کوریائی وون + + + جنوبی کوریائی وون + + + کویتی دینار + + + کیمین آئلینڈز ڈالر + + + قزاخستانی ٹینگ + + + لاؤشیائی کِپ + + + لبانی پونڈ + + + سری لنکائی روپیہ + + + لائبریائی ڈالر + + + لیسوتھو لوٹی + + + لیتھوینیائی لیٹاس + + + لاتویائی لیٹس + + + لیبیائی دینار + + + مراکشی درہم + مراکشی درہم + مراکشی درہم + + + مالدیپ کا لیو + + + ملاگاسی اریاری + + + مقدونیائی دینار + + + میانما کیاٹ + + + منگولیائی ٹگرِ + + + میکانیز پٹاکا + + + موریطانیائی اوگوئیا + + + ماریشس کا روپیہ + + + مالدیپ کا روفیہ + + + ملاوی کواچا + + + میکسیکی پیسہ + میکسیکی پیسہ + میکسیکی پیسہ + + + ملیشیائی رنگِٹ + + + موزامبیقی میٹیکل + موزامبیقی میٹیکل + موزامبیقی میٹیکلز + + + نامیبیائی ڈالر + + + نائیجیریائی نائرا + + + نکارا گوا کا کورڈوبا + + + ناروے کرونر + + + نیپالی روپیہ + + + نیوزی لینڈ ڈالر + نیوزی لینڈ ڈالر + نیوزی لینڈ ڈالر + + + عمانی ریال + + + پنامہ کا بالبوآ + + + پیروین نیووسول + + + پاپوآ نیو گنی کا کینا + + + فلپائینی پیسہ + فلپائینی پیسہ + فلپائینی پیسہ + + + پاکستانی روپیہ + Rs + + + پولش نیو زلوٹی + پولش نیو زلوٹی + پولش نیو زلوٹی + + + پیراگوئے کا گوآرنی + + + قطری ریال + + + رومانیائی لیو + رومانیائی لیو + رومانیائی لی + + + سربین دینار + سربین دینار + سربین دینار + + + روسی روبل + روسی روبل + روسی روبل + + + روانڈا کا فرینک + + + سعودی ریال + سعودی ریال + سعودی ریال + + + سولومن آئلینڈز ڈالر + + + سشلی کا روپیہ + + + سوڈانی پونڈ + + + سویڈن کرونا + سویڈن کرونا + سویڈن کرونر + + + سنگا پور ڈالر + سنگا پور ڈالر + سنگا پور ڈالر + + + سینٹ ہیلینا پونڈ + + + سلوانین ٹولر + + + سلووک کرونا + + + سیئرا لیون لیون + + + صومالی شلنگ + + + سورینامی ڈالر + + + جنوبی سوڈانی پاؤنڈ + جنوبی سوڈانی پاؤنڈ + جنوبی سوڈانی پاؤنڈز + + + ساؤ ٹوم اور پرنسپے ڈوبرا + + + شامی پونڈ + + + سوازی لیلانجینی + + + تھائی باہت + تھائی باہت + تھائی باہت + + + تاجکستانی سومونی + + + ترکمانستانی منات + + + تیونیسیائی دینار + + + ٹونگن پانگا + + + ترکی لیرا + + + ترینیداد اور ٹوباگو کا ڈالر + + + نیو تائیوان ڈالر + + + تنزانیائی شلنگ + + + یوکرینیائی ہریونیا + + + یوگانڈا شلنگ + + + امریکی ڈالر + امریکی ڈالر + امریکی ڈالر + $ + + + یوروگویان پیسو + + + ازبکستان سوم + + + وینزویلا بولیور (1871–2008) + + + وینزویلا بولیور + + + ویتنامی ڈانگ + + + وینوواتو واتو + + + ساموآ کا ٹالا + + + CFA فرانک BEAC + CFA فرانک BEAC + CFA فرانکس BEAC + + + مشرقی کریبیا کا ڈالر + + + CFA فرانک BCEAO + CFA فرانک BCEAO + CFA فرانکس BCEAO + CFA + + + CFP فرانک + CFP فرانک + CFP فرانکس + + + نامعلوم کرنسی + + + یمنی ریال + + + جنوبی افریقی رانڈ + جنوبی افریقی رانڈ + جنوبی افریقی رانڈ + + + زامبیائی کواچا (1968–2012) + + + زامبیائی کواچا + + + + ⩾{0} + {0}–{1} + + + + + + {0} فی {1} + + + {0} جی-فورس + {0} جی-فورس + + + {0} منٹ + {0} منٹ + + + {0} سیکنڈ + {0} سیکنڈ + + + {0} ڈگری + {0} ڈگری + + + {0} ایکڑ + {0} ایکڑ + + + {0} ہیکٹر + {0} ہیکٹر + + + {0} سکویر فٹ + {0} سکویر فٹ + + + {0} سکویر کلو میٹر + {0} سکویر کلو میٹر + + + {0} سکویر میٹر + {0} سکویر میٹر + + + {0} سکویر میل + {0} سکویر میل + + + {0} دن + {0} دن + + + {0} گھنٹہ + {0} گھنٹے + + + {0} ملی سیکنڈ + {0} میل سیکنڈ + + + {0} منٹ + {0} منٹ + + + {0} مہینہ + {0} مہینے + + + {0} سیکنڈ + {0} سیکنڈ + + + {0} ہفتہ + {0} ہفتے + + + {0} سال + {0} سال + + + {0} سینٹی میٹر + {0} سینٹی میٹر + + + {0} فیٹ + {0} فیٹ + + + {0} انچ + {0} انچ + + + {0} کلو میٹر + {0} کلو میٹر + + + {0} روشنی سال + {0} روشنی سال + + + {0} میٹر + {0} میٹر + + + {0} میل + {0} میل + + + {0} ملیمیٹر + {0} ملیمیٹر + + + {0} پیکو میٹر + {0} پیکو میٹر + + + {0} یارڈ + {0} یارڈ + + + {0} گرام + {0} گرام + + + {0} کلو گرام + {0} کلو گرام + + + {0} ونس + {0} ونس + + + {0} پونڈ + {0} پونڈ + + + {0} ہارس پاور + {0} ہارس پاور + + + {0} کلو واٹ + {0} کلو واٹ + + + {0} واٹ + {0} واٹ + + + {0} ہیکٹو پاسکل + {0} ہیکٹو پاسکل + + + {0} انچ مرکری + {0} انچ مرکری + + + {0} ملی بار + {0} ملی بار + + + {0} کلومیٹر فی گھنٹہ + {0} کلومیٹر فی گھنٹہ + + + {0} میٹر فی سیکنڈ + {0} میٹر فی سیکنڈ + + + {0}میل فی گھنٹہ + {0} میل فی گھنٹہ + + + {0} ڈگری سیلسیس + {0} ڈگری سیلسیس + + + {0}ڈگری فارن ہائیٹ + {0} ڈگری فارن ہائیٹ + + + {0} کیوبک کلو میٹر + {0} کیوبک کلو میٹر + + + {0} کیوبک میل + {0} کیوبک میل + + + {0} لیٹر + {0} لیٹر + + + + + {0}/{1} + + + {0} جی-فورس + {0} جی-فورس + + + {0} منٹ + {0} منٹ + + + {0}سیکنڈ + {0} سیکنڈ + + + {0} ڈگری + {0} ڈگری + + + {0} ایکڑ + {0} ایکڑ + + + {0} ہیکٹر + {0} ہیکٹر + + + {0} سکویر فٹ + {0} سکویر فٹ + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} سکویر میل + {0} سکویر میل + + + {0} دن + {0} دن + + + {0} گھنٹہ + {0} گھنٹے + + + {0} میل سیکنڈ + {0} میل سیکنڈ + + + {0} منٹ + {0} منٹ + + + {0} مہینہ + {0} مہینے + + + {0} سیکنڈ + {0} سیکنڈ + + + {0} ہفتہ + {0} ہفتے + + + {0} سال + {0} سال + + + {0} سینٹی میٹر + {0} سینٹی میٹر + + + {0} فیٹ + {0} فیٹ + + + {0} انچ + {0} انچ + + + {0} کلو میٹر + {0} کلو میٹر + + + {0} ly + {0} ly + + + {0} میٹر + {0} میٹر + + + {0} میل + {0} میل + + + {0} ملیمیٹر + {0} ملیمیٹر + + + {0} پیکو میٹر + {0} پیکو میٹر + + + {0} یارڈ + {0} یارڈ + + + {0} گرام + {0} گرام + + + {0} کلو گرام + {0} کلو گرام + + + {0} ونس + {0} ونس + + + {0} پونڈ + {0} پونڈ + + + {0} ہارس پاور + {0} ہارس پاور + + + {0} کلو واٹ + {0} کلو واٹ + + + {0} واٹ + {0} واٹ + + + {0} hPa + {0} hPa + + + {0} انچ مرکری + {0} انچ مرکری + + + {0} ملی بار + {0} ملی بار + + + {0} kph + {0} kph + + + {0} m/s + {0} m/s + + + {0} mph + {0} mph + + + {0}‎°C + {0}‎°C + + + {0}‎°F + {0}‎°F + + + {0} km³ + {0} km³ + + + {0} کیوبک میل + {0} کیوبک میل + + + {0} لیٹر + {0} لیٹر + + + + + {0}/{1} + + + {0}G + {0}G + + + {0} منٹ + {0} منٹ + + + {0}″ + {0}″ + + + {0} ڈگری + {0} ڈگری + + + {0} ایکڑ + {0} ایکڑ + + + {0} ہیکٹر + {0} ہیکٹر + + + {0}ft² + {0}ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0}mi² + {0}mi² + + + {0} دن + {0} دن + + + {0} گھنٹے + {0} گھنٹے + + + {0} ms + {0} ms + + + {0}s + {0}s + + + {0} ہفتے + {0} ہفتے + + + {0} سال + {0} سال + + + {0}cm + {0}cm + + + '{0} + {0}′ + + + {0} انچ + {0} انچ + + + {0}km + {0}km + + + {0}ly + {0}ly + + + {0} میٹر + {0} میٹر + + + {0} میل + {0} میل + + + {0} ملیمیٹر + {0} ملیمیٹر + + + {0}pm + {0}pm + + + {0} یارڈ + {0} یارڈ + + + {0} گرام + {0} گرام + + + {0}kg + {0}kg + + + {0} ونس + {0} ونس + + + {0} پونڈ + {0} پونڈ + + + {0}hp + {0}hp + + + {0}kW + {0}kW + + + {0} واٹ + {0} واٹ + + + {0}hPa + {0}hPa + + + {0} انچ مرکری + {0} انچ مرکری + + + {0}mb + {0}mb + + + {0}kph + {0}kph + + + {0}m/s + {0}m/s + + + {0}mph + {0}mph + + + {0}‎° + {0}‎° + + + {0}‎°F + {0}°F + + + {0}km³ + {0}km³ + + + {0}mi³ + {0}mi³ + + + {0} لیٹر + {0} لیٹر + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}، {1} + {0}، {1} + {0}، اور {1} + {0} اور {1} + + + {0}, {1} + {0}, {1} + {0}، اور {1} + {0} اور {1} + + + {0} اور {1} + + + + + ہاں:ہاں + نہیں:نہیں + + + + diff --git a/library/Zend/Locale/Data/ur_IN.xml b/library/Zend/Locale/Data/ur_IN.xml new file mode 100755 index 000000000..02a8ce914 --- /dev/null +++ b/library/Zend/Locale/Data/ur_IN.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + EEEE، d MMMM، y G + + + + + d MMMM، y G + + + + + d MMM، y G + + + + + d/M/yy GGGGG + + + + + + + + + اتوار + پیر + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + اتوار + سوموار + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + اتوار + پیر + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + + + اتوار + پیر + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + اتوار + پیر + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + اتوار + پیر + منگل + بدھ + جمعرات + جمعہ + ہفتہ + + + + + + + + پچھلے اتوار + اس اتوار + اگلے اتوار + + + پچھلے پیر + اس پیر + اگلے پیر + + + پچھلے منگل + اس منگل + اگلے منگل + + + پچھلے بدھ + اس بدھ + اگلے بدھ + + + پچھلے جمعرات + اس جمعرات + اگلے جمعرات + + + پچھلے جمعہ + اس جمعہ + اگلے جمعہ + + + پچھلے ہفتہ + اس ہفتہ + اگلے ہفتہ + + + قبل دوپہر/بعد دوپہر + + + منطقۂ وقت + + + + + کرالینڈیک + + + میٹا موروس + + + نوووکیوزنیسک + + + Ust-Nera + + + Sitka + + + میٹلاکاٹلا + + + + + arabext + + + + #,##,##0.### + + + + + + + #,##,##0% + + + + + + + ¤ #,##,##0.00 + + + + + + diff --git a/library/Zend/Locale/Data/ur_PK.xml b/library/Zend/Locale/Data/ur_PK.xml new file mode 100755 index 000000000..b3e50cdcd --- /dev/null +++ b/library/Zend/Locale/Data/ur_PK.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/uz.xml b/library/Zend/Locale/Data/uz.xml new file mode 100755 index 000000000..8de354a79 --- /dev/null +++ b/library/Zend/Locale/Data/uz.xml @@ -0,0 +1,3345 @@ + + + + + + + + + + + + {0} ({1}) + {0}, {1} + {0}: {1} + + + abxazcha + afrikancha + amxarcha + arabcha + zamonavij standart arabcha + assamcha + ozarbayjoncha + belaruscha + bolgarcha + bengalcha + tibetcha + bosniyacha + katalancha + chexcha + uelscha + daniyacha + olmoncha + Avstriya olmonchasi + Shvesariya olmonchasi + grekcha + inglizcha + Avstraliya inglizchasi + Kanada inglizchasi + Britaniya inglizchasi + Britaniya inglizchasi + AQSh inglizchasi + AQSh inglizchasi + esperanto + ispancha + Lotin Amerika ispanchasi + Yevropa ispanchasi + Meksika ispanchasi + estoncha + baskcha + forscha + fincha + filipino + fijicha + farercha + fransuzcha + Kanada fransuzchasi + Shvesariya fransuzchasi + gʻarbiy friziancha + irlandcha + galitsiycha + guarani + shveysariya nemischasi + gujarati + xausa + gavaycha + ibroniy + hindcha + xorvatcha + gaitiancha + vengrcha + armancha + indoneziyacha + igbo + islandcha + italyancha + yaponcha + yavancha + gruzincha + qozoqcha + xmercha + kannada + koreyscha + kashmircha + kurdcha + qirgʻizcha + lotincha + lyuksemburgcha + lao + litvacha + latishcha + malagasi + maori + makedoncha + malayalam + marati + malaycha + maltacha + birmancha + norvegcha bokmal + nepalcha + gollandcha + flamandcha + norvegcha ninorsk + oriya + panjobcha + polyakcha + pushtu + portugalcha + Braziliya portugalchasi + Yevropa portugalchasi + kvechua + romancha + rumincha + ruscha + sanskritcha + sindxi + sinxala + slovakcha + slovencha + somalicha + albancha + serbcha + sundancha + shvedcha + suaxili + tamilcha + telugu + tojikcha + taycha + tigrinya + turkmancha + tongocha + turkcha + tatarcha + uygʻurcha + ukraincha + nomaʼlum til + urdu + oʻzbekcha + vyetnamcha + volofcha + xosa + yoruba + standart marokash tamazit + xitoycha + soddalashtirilgan xitoycha + anʼanaviy xitoycha + zulu + til tarkibi yoʻq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dunyo + Afrika + Shimoliy Amerika + Janubiy Amerika + Okeaniya + Gʻarbiy Afrika + Markaziy Amerika + Sharqiy Afrika + Shimoliy Afrika + Markaziy Afrika + Janubi-Afrika + Amerika + Shimoli-Amerika + Karib havzasi + Sharqiy Osiyo + Janubiy Osiyo + Janubiy-Sharqiy Osiyo + Janubiy Yevropa + Avstralaziya + Melaneziya + Mikroneziya mintaqasi + Polineziya + Osiyo + Markaziy Osiyo + Gʻarbiy Osiyo + Yevropa + Sharqiy Yevropa + Shimoliy Yevropa + Gʻarbiy Yevropa + Lotin Amerikasi + Vozneseniye oroli + Andorra + Birlashgan Arab Amirliklari + Afgʻoniston + Antigua va Barbados + Angila + Albaniya + Armaniston + Angola + Antarktika + Argentina + Amerika Samoasi + Avstriya + Avstraliya + Aruba + Aland orollari + Ozarbayjon + Bosniya va Gertsegovina + Barbados + Bangladesh + Belgiya + Burkina-Faso + Bolgariya + Bahrayn + Burundi + Benin + Muqaddas Varfalomey + Bermuda + Bruney + Boliviya + Karib Niderlandiyasi + Braziliya + Bagama orollari + Butan + Buvet oroli + Botsvanna + Belorusiya + Beliz + Kanada + Kokos (Kiling) orollari + Kongo-Kinshasa + Kongo (KDR) + Markaziy Afrika Respublikasi + Kongo Brazzavil + Kongo (Respublika) + Shveysariya + Kot-d-Ivuar + Fil Suyagi Qirgʻogʻi + Kuk orollari + Chili + Kamerun + Xitoy + Kolumbiya + Klipperton oroli + Kosta-Rika + Kuba + Kabo-Verde + Kurasao + Rojdestvo oroli + Kipr + Chexiya Respublikasi + Olmoniya + Diyego Garsiya + Djibuti + Daniya + Dominika + Dominikan Respublikasi + Jazoir + Seyta va Melilla + Ekvador + Estoniya + Misr + Gʻarbiy Sahroi Kabir + Eritreya + Ispaniya + Efiopiya + Yevropa Ittifoqi + Finlyandiya + Fiji orollari + Folklend orollari + Folklend orollari (Malvin orollari) + Mikroneziya + Farer orollari + Fransiya + Gabon + Birlashgan Qirollik + Birlashgan Qirollik + Grenada + Gruziya + Frantsuz Gvianasi + Gernsi + Gana + Gibraltar + Grenlandiya + Gambiya + Gvineya + Gvadelupe + Ekvatorial Gvineya + Gretsiya + Janubiy Djordjiya va Janubiy Sendvich orollari + Gvatemala + Guam + Gvineya-Bisau + Gayana + Gonkong Xitoy MMH + Gonkong + Gerd oroli va MakDonald orollari + Gonduras + Xorvatiya + Gaiti + Vengriya + Kanar orollari + Indoneziya + Irlandiya + Isroil + Men oroli + Hindiston + Britaniya Hind okeani hududi + Iroq + Eron + Islandiya + Italiya + Djersi + Yamayka + Iordaniya + Yaponiya + Keniya + Qirgʻiziston + Kambodja + Kiribati + Komor orollari + Sent-Kits va Nevis + Shimoliy Koreya + Janubiy Koreya + Kuvayt + Kayman orollari + Qozogʻiston + Laos + Livan + Sent-Lyusiya + Lixtenshteyn + Shri-Lanka + Liberiya + Lesoto + Litva + Lyuksemburg + Latviya + Liviya + Marokash + Monako + Moldova + Chernogoriya + Sent-Martin + Madagaskar + Marshal orollari + Makedoniya + Makedoniya (SYUR) + Mali + Myanma (Birma) + Mugʻuliston + Makao Xitoy MMH + Makao + Shimoliy Marianna orollari + Martinika + Mavritaniya + Montserrat + Malta + Mavrikiy + Maldiv orollari + Malavi + Meksika + Malayziya + Mozambik + Namibiya + Yangi Kaledoniya + Niger + Norfolk orollari + Nigeriya + Nikaragua + Niderlandiya + Norvegiya + Nepal + Nauru + Niuye + Yangi Zelandiya + Ummon + Panama + Peru + Frantsuz Polineziyasi + Papua Yangi Gvineya + Filippin + Pokiston + Polsha + Sent-Pyer va Mikelon + Pitkarin orollari + Puerto-Riko + Falastin hududi + Falastina + Portugaliya + Palau + Paragvay + Qatar + Yondosh Okeaniya + Reyunon + Ruminiya + Serbiya + Rossiya + Ruanda + Saudiya Arabistoni + Solomon orollari + Seyshel orollari + Sudan + Shvetsiya + Singapur + Muqaddas Yelena orollari + Sloveniya + Savlbard va Jan Mayen + Slovakiya + Syerra-Leone + San-Marino + Senegal + Somali + Surinam + Janubiy Sudan + San-Tome va Prinsipi + El-Salvador + Sint-Maarten + Suriya + Svazilend + Tristan de Kuna + Turks va Kaykos orollari + Chad + Frantsiya janubiy xududlari + Togo + Tayland + Tojikiston + Tokelau + Sharqiy-Timor + Sharqiy Timor + Turkmaniston + Tunis + Tonga + Turkiya + Trinidad va Tobago + Tuvalu + Tayvan + Tanzaniya + Ukraina + Uganda + AQSH yondosh orollari + Qoʻshma Shtatlar + AKSH + Urugvay + Oʻzbekiston + Vatikan + Sent-Vinsent va Grenadin + Venesuela + Britaniya Virdjiniya orollari + AQSH Virdjiniya orollari + Vyetnam + Vanuatu + Uellis va Futuna + Samoa + Kosovo + Yaman + Mayotta + Janubiy Afrika + Zambiya + Zimbabve + Nomaʼlum hudud + + + Kalendar + Saralash tartibi + Valyuta + Raqamlar + + + Arab-hind raqamlari + Kengaytirilgan arab-hind raqamlari + Arman sonlari + Arman kichik sonlari + Bengali raqamlari + Devanagari raqamlari + Sukut boʻyicha saralash tartibi + Habash sonlari + Toʻliq kenglikdagi raqamlar + Gruzin sonlari + Grigorian kalendari + Grek sonlari + Grek kichik sonlari + Gujarati raqamlari + Gurmuxi raqamlari + Xitoy oʻnlik sonlari + Soddalashtirilgan Xitoy sonlari + Soddalashtirilgan Xitoy moliya sonlari + Anʼanaviy Xitoy sonlari + Anʼanaviy Xitoy moliya sonlari + Ibroniy sonlari + Yaponiya sonlari + Yaponiya moliya sonlari + Xmer raqamlari + Kannada raqamlari + Lao raqamlari + Gʻarb raqamlari + Malayalam raqamlari + Myanma raqamlari + Oriya raqamlari + Rim sonlari + Rim kichik sonlari + Umumiy qidirish + Standart tariblash + Anʼanaviy Tamil sonlari + Tamil raqamlari + Telugu raqamlari + Tay raqamlari + Tibet raqamlari + + + Metrik + BQ + AQSh + + + Til: {0} + Shrift: {0} + Mintaqa: {0} + + + + [a {aʼ} b {ch} d e {eʼ} f g {gʻ} h i {iʼ} j k l m n o {oʻ} p q r s {sh} t u {uʼ} v x y z] + [c w] + [A B {CH} D E F G {Gʻ} H I J K L M N O {Oʻ} P Q R S {SH} T U V X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ‚ " “ „ « » ( ) \[ \] \{ \} § @ * / \& #] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + " + " + ' + ' + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y/MM/dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + G y + G y MMM + G y MMM d + G y MMM d, E + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + G y + G y + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + G y–y + + + GGGGG y-MM – y-MM + GGGGG y-MM – y-MM + + + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + + + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + + + G y MMM–MMM + G y MMM – y MMM + + + G y MMM d–d + G y MMM d – MMM d + G y MMM d – y MMM d + + + G y MMM d, E – MMM d, E + G y MMM d, E – MMM d, E + G y MMM d, E – y MMM d, E + + + G y MMMM–MMMM + G y MMMM – y MMMM + + + + + + + + + Yanv + Fev + Mar + Apr + May + Iyun + Iyul + Avg + Sen + Okt + Noya + Dek + + + Y + F + M + A + M + I + I + A + S + O + N + D + + + Yanvar + Fevral + Mart + Aprel + May + Iyun + Iyul + Avgust + Sentyabr + Oktyabr + Noyabr + Dekabr + + + + + Yanv + Fev + Mar + Apr + May + Iyun + Iyul + Avg + Sen + Okt + Noya + Dek + + + Y + F + M + A + M + I + I + A + S + O + N + D + + + Yanvar + Fevral + Mart + Aprel + May + Iyun + Iyul + Avgust + Sentyabr + Oktyabr + Noyabr + Dekabr + + + + + + + Yaksh + Dush + Sesh + Chor + Pay + Jum + Shan + + + Y + D + S + C + P + J + S + + + Yaksh + Dush + Sesh + Chor + Pay + Jum + Shan + + + yakshanba + dushanba + seshanba + chorshanba + payshanba + juma + shanba + + + + + Yaksh + Dush + Sesh + Chor + Pay + Jum + Shan + + + Y + D + S + C + P + J + S + + + Yaksh + Dush + Sesh + Chor + Pay + Jum + Shan + + + yakshanba + dushanba + seshanba + chorshanba + payshanba + juma + shanba + + + + + + + 1-ch + 2-ch + 3-ch + 4-ch + + + 1 + 2 + 3 + 4 + + + 1-chorak + 2-chorak + 3-chorak + 4-chorak + + + + + 1-ch + 2-ch + 3-ch + 4-ch + + + 1 + 2 + 3 + 4 + + + 1-chorak + 2-chorak + 3-chorak + 4-chorak + + + + + + + AM + PM + + + + + + M.A. + E + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + mm:ss + y + y-MM + y-MM-dd + y-MM-dd, E + y MMM + y MMM d + y MMM d, E + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + + + y MMM–MMM + y MMM – y MMM + + + y MMM d–d + y MMM d – MMM d + y MMM d – y MMM d + + + y MMM d, E – MMM d, E + y MMM d, E – MMM d, E + y MMM d, E – y MMM d, E + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + + Muharram + Safar + Robiʼ ul-avval + Robiʼ ul-oxir + Jumad ul-avval + Jumad ul-oxir + Rajab + Shaʼbon + Ramazon + Shavvol + Zul-qaʼda + Zul-hijja + + + + + + + + Era + + + Yil + oʻtgan yil + bu yil + keyingi yil + + {0} yildan soʻng + {0} yildan soʻng + + + {0} yil avval + {0} yil avval + + + + Oy + oʻtgan oy + bu oy + keyingi oy + + {0} oydan soʻng + {0} oydan soʻng + + + {0} oy avval + {0} oy avval + + + + Hafta + oʻtgan hafta + bu hafta + keyingi hafta + + {0} haftadan soʻng + {0} haftadan soʻng + + + {0} hafta oldin + {0} hafta oldin + + + + Kun + kecha + bugun + ertaga + + {0} kundan soʻng + {0} kundan soʻng + + + {0} kun oldin + {0} kun oldin + + + + Hafta kuni + + + oʻtgan yakshanba + bu yakshanba + keyingi yakshanba + + + oʻtgan dushanba + bu dushanba + keyingi dushanba + + + oʻtgan seshanba + bu seshanba + keyingi seshanba + + + oʻtgan chorshanba + this Wednesday + keyingi chorshanba + + + oʻtgan payshanba + bu payshanba + keyingi payshanba + + + oʻtgan juma + bu juma + keyingi juma + + + oʻtgan shanba + bu shanba + keyingi shanba + + + Kun vaqti + + + Soat + + {0} soatdan soʻng + {0} soatdan soʻng + + + {0} soat oldin + {0} soat oldin + + + + Daqiqa + + {0} daqiqadan soʻng + {0} daqiqadan soʻng + + + {0} daqiqa oldin + {0} daqiqa oldin + + + + Soniya + hozir + + {0} soniyadan soʻng + {0} soniyadan soʻng + + + {0} soniya oldin + {0} soniya oldin + + + + Mintaqa + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} vaqti + {0} kunduzgi vaqti + {0} standart vaqti + {1} ({0}) + + Nomaʼlum + + + Dumont d’Urville + + + St. Barthelemy + + + Atikokan + + + St. John’s + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + Britaniya yozgi vaqti + + + + Nuuk + + + Ittoqqortoormiit + + + + Irlandiya yozgi vaqti + + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Kathmandu + + + St. Helena + + + Lower Prince's Quarter + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + Toshkent + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + + Afgʻoniston vaqti + + + + + Markaziy Afrika vaqti + + + + + Sharqiy Afrika vaqti + + + + + Janubiy Afrika vaqti + + + + + Gʻarbiy Afrika vaqti + Gʻarbiy Afrika standart vaqti + Gʻarbiy Afrika yozgi vaqti + + + + + Alyaska vaqti + Alyaska standart vaqti + Alyaska kunduzgi vaqti + + + + + Amazonka vaqti + Amazonka standart vaqti + Amazonka yozgi vaqti + + + + + Shimoliy Amerika markaziy vaqti + Shimoliy Amerika markaziy standart vaqti + Shimoliy Amerika markaziy kunduzgi vaqti + + + + + Shimoliy Amerika sharqiy vaqti + Shimoliy Amerika sharqiy standart vaqti + Shimoliy Amerika sharqiy kunduzgi vaqti + + + + + Shimoliy Amerika togʻ vaqti + Shimoliy Amerika togʻ standart vaqti + Shimoliy Amerika togʻ kunduzgi vaqti + + + + + Shimoliy Amerika tinch okeani vaqti + Shimoliy Amerika tinch okeani standart vaqti + Shimoliy Amerika tinch okeani kunduzgi vaqti + + + + + Arabiston vaqti + Arabiston standart vaqti + Arabiston kunduzgi vaqti + + + + + Argentina vaqti + Argentina standart vaqti + Argentina yozgi vaqti + + + + + Gʻarbiy Argentina vaqti + Gʻarbiy Argentina standart vaqti + Gʻarbiy Argentina yozgi vaqti + + + + + Aramniston vaqti + Armaniston standart vaqti + Armaniston yozgi vaqti + + + + + Atlantika vaqti + Atlantika standart vaqti + Atlantika kunduzgi vaqti + + + + + Markaziy Avstraliya vaqti + Markaziy Avstraliya standart vaqti + Markaziy Avstraliya kunduzgi vaqti + + + + + Markaziy Avstraliya Gʻarbiy vaqti + Markaziy Avstraliya Gʻarbiy standart vaqti + Markaziy Avstraliya Gʻarbiy kunduzgi vaqti + + + + + Sharqiy Avstraliya vaqti + Sharqiy Avstraliya standart vaqti + Sharqiy Avstraliya kunduzgi vaqti + + + + + Gʻarbiy Avstraliya vaqti + Gʻarbiy Avstraliya standart vaqti + Gʻarbiy Avstraliya kunduzgi vaqti + + + + + Ozarbayjon vaqti + Ozarbayjon standart vaqti + Ozarbayjon yozgi vaqti + + + + + Azor vaqti + Azor standart vaqti + Azor yozgi vaqti + + + + + Bangladesh vaqti + Bangladesh standart vaqti + Bangladesh yozgi vaqti + + + + + Butan vaqti + + + + + Boliviya vaqti + + + + + Braziliya vaqti + Braziliya standart vaqti + Braziliya yozgi vaqti + + + + + Bruney Darussalom vaqti + + + + + Kabo-Verde vaqti + Kabo-Verde standart vaqti + Kabo-Verde yozgi vaqti + + + + + Kamorro vaqti + + + + + Chatxam vaqti + Chatxam standart vaqti + Chatxam kunduzgi vaqti + + + + + Chili vaqti + Chili standart vaqti + Chili yozgi vaqti + + + + + Xitoy vaqti + Xitoy standart vaqti + Xitoy kunduzgi vaqti + + + + + Choybalsan vaqti + Choybalsan standart vaqti + Choybalsan yozgi vaqti + + + + + Rojdestvo oroli vaqti + + + + + Kokos orollari vaqti + + + + + Kolumbiya vaqti + Kolumbiya standart vaqti + Kolumbiya yozgi vaqti + + + + + Kuk orollari vaqti + Kuk orollari standart vaqti + Kuk orollari yarim yozgi vaqti + + + + + Kuba vaqti + Kuba standart vaqti + Kuba kunduzgi vaqti + + + + + Devis vaqti + + + + + Dumont-d-Urvil vaqti + + + + + Sharqiy Timor vaqti + + + + + Pasxi Oroli vaqti + Pasxi oroli standart vaqti + Pasxi oroli yozgi vaqti + + + + + Ekvador vaqti + + + + + Markaziy Yevropa vaqti + Markaziy Yevropa standart vaqti + Markaziy Yevropa yozgi vaqti + + + + + Sharqiy Yevropa vaqti + Sharqiy Yevropa standart vaqti + Sharqiy Yevropa yozgi vaqti + + + + + Gʻarbiy Yevropa vaqti + Gʻarbiy Yevropa standart vaqti + Gʻarbiy Yevropa yozgi vaqti + + + + + Folklend orollari vaqti + Folklend orollari standart vaqti + Folklend orollari yozgi vaqti + + + + + Fiji vaqti + Fiji standart vaqti + Fiji yozgi vaqti + + + + + Frantsuz Gvianasi vaqti + + + + + Frantsuz janubiy va Antarktika vaqti + + + + + Galapagos vaqti + + + + + Gambiyer vaqti + + + + + Gruziya vaqti + Gruziya standart vaqti + Gruziya yozgi vaqti + + + + + Gilbert orollari vaqti + + + + + Grinvich vaqti + + + + + Sharqiy Grenlandiya vaqti + Sharqiy Grenlandiya standart vaqti + Sharqiy Grenlandiya yozgi vaqti + + + + + Gʻarbiy Grenlandiya vaqti + Gʻarbiy Grenlandiya standart vaqti + Gʻarbiy Grenlandiya yozgi vaqti + + + + + Koʻrfaz vaqti + + + + + Gayana vaqti + + + + + Gavayi-aleut vaqti + Gavayi-aleut standart vaqti + Gavayi-aleut kunduzgi vaqti + + + + + Gonkong vaqti + Gonkong standart vaqti + Gonkong yozgi vaqti + + + + + Xovd vaqti + Xovd standart vaqti + Xovd yozgi vaqti + + + + + Hindiston vaqti + + + + + Hind okeani vaqti + + + + + Hind-Xitoy vaqti + + + + + Markaziy Indoneziya vaqti + + + + + Sharqiy Indoneziya vaqti + + + + + Gʻarbiy Indoneziya vaqti + + + + + Eron vaqti + Eron standart vaqti + Eron kunduzgi vaqti + + + + + Irkutsk vaqti + Irkutsk standart vaqti + Irkutsk yozgi vaqti + + + + + Isroil vaqti + Isroil standart vaqti + Isroil kunduzgi vaqti + + + + + Yaponiya vaqti + Yaponiya standart vaqti + Yaponiya kunduzgi vaqti + + + + + Sharqiy Qozogʻiston vaqti + + + + + Gʻarbiy Qozogʻiston vaqti + + + + + Koreya vaqti + Koreya standart vaqti + Koreya kunduzgi vaqti + + + + + Kosraye vaqti + + + + + Krasnoyarsk vaqti + Krasnoyarsk standart vaqti + Krasnoyarsk yozgi vaqti + + + + + Qirgʻiziston vaqti + + + + + Layn orollari vaqti + + + + + Lord Xove vaqti + Lord Xove standart vaqti + Lord Xove kunduzgi vaqti + + + + + Makvari oroli vaqti + + + + + Magadan vaqti + Magadan standart vaqti + Magadan yozgi vaqti + + + + + Malayziya vaqti + + + + + Maldiv orollar + + + + + Markezas vaqti + + + + + Marshall orollari vaqti + + + + + Mavrikiy vaqti + Mavrikiy standart vaqti + Mavrikiy yozgi vaqti + + + + + Mouvson vaqti + + + + + Ulan-Bator vaqti + Ulan-Bator standart vaqti + Ulan-Bator yozgi vaqti + + + + + Moskva vaqti + Moskva standart vaqti + Moskva yozgi vaqti + + + + + Myanma vaqti + + + + + Nauru vaqti + + + + + Nepal vaqti + + + + + Yangi Kaledoniya vaqti + Yangi Kaledoniya standart vaqti + Yangi Kaledoniya yozgi vaqti + + + + + Yangi Zelandiya vaqti + Yangi Zelandiya standart vaqti + Yangi Zelandiya kunduzgi vaqti + + + + + Nyufaundlend vaqti + Nyufaundlend standart vaqti + Nyufaundlend kunduzgi vaqti + + + + + Niuye vaqti + + + + + Norfolk oroli vaqti + + + + + Fernando de Noronya vaqti + Fernando de Noronya standart vaqti + Fernando de Noronya yozgi vaqti + + + + + Novosibirsk vaqti + Novosibirsk standart vaqti + Novosibirsk yozgi vaqti + + + + + Omsk vaqti + Omsk standart vaqti + Omsk yozgi vaqti + + + + + Pokiston vaqti + Pokiston standart vaqti + Pokiston yozgi vaqti + + + + + Palau vaqti + + + + + Papua-Yangi Gvineya vaqti + + + + + Paragvay vaqti + Paragvay standart vaqti + Paragvay yozgi vaqti + + + + + Peru vaqti + Peru standart vaqti + Peru yozgi vaqti + + + + + Filippin vaqti + Filippin standart vaqti + Filippin yozgi vaqti + + + + + Feniks orollari vaqti + + + + + Sent-Pyer va Mikelon vaqti + Sent-Pyer va Mikelon standart vaqti + Sent-Pyer va Mikelon kunduzgi vaqti + + + + + Pitkern vaqti + + + + + Ponape vaqti + + + + + Reyunon vaqti + + + + + Rotera vaqti + + + + + Saxalin vaqti + Saxalin standart vaqti + Saxalin yozgi vaqti + + + + + Samoa vaqti + Samoa standart vaqti + Samoa kunduzgi vaqti + + + + + Seyshel orollari vaqti + + + + + Singapur vaqti + + + + + Solomon orollari vaqti + + + + + Janubiy Djordjiya vaqti + + + + + Surinam vaqti + + + + + Sova vaqti + + + + + Taiti vaqti + + + + + Taypey vaqti + Taypey standart vaqti + Taypey kunduzgi vaqti + + + + + Tojikiston vaqti + + + + + Tokelau vaqti + + + + + Tonga vaqti + Tonga standart vaqti + Tonga yozgi vaqti + + + + + Chuuk vaqti + + + + + Turkmaniston vaqti + Turkmaniston standart vaqti + Turkmaniston yozgi vaqti + + + + + Tuvalu vaqti + + + + + Urugvay vaqti + Urugvay standart vaqti + Urugvay yozgi vaqti + + + + + Oʻzbekiston vaqti + Oʻzbekiston standart vaqti + Oʻzbekiston yozgi vaqti + + + + + Vanuatu vaqti + Vanuatu standart vaqti + Vanuatu yozgi vaqti + + + + + Venesuela vaqti + + + + + Vladivostok vaqti + Vladivostok standart vaqti + Vladivostok yozgi vaqti + + + + + Volgograd vaqti + Volgograd standart vaqti + Volgograd yozgi vaqti + + + + + Vostok vaqti + + + + + Ueyk oroli vaqti + + + + + Uellis va Futuna vaqti + + + + + Yakutsk vaqti + Yakutsk standart vaqti + Yakutsk yozgi vaqti + + + + + Yekaterinburg vaqti + Yekaterinburg standart vaqti + Yekaterinburg yozgi vaqti + + + + + + + ٫ + ٬ + ٪ + + + - + ×۱۰^ + × + ؉ + + NaN + + + , +   + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + + + #,##0.### + + + + + 0 ming + 0 ming + 00 ming + 00 ming + 000 ming + 000 ming + 0 million + 0 million + 00 million + 00 million + 000 million + 000 million + 0 milliard + 0 milliard + 00 milliard + 00 milliard + 000 milliard + 000 milliard + 0 trilion + 0 trilion + 00 trilion + 00 trilion + 000 trilion + 000 trilion + + + + + 0ming + 0ming + 00ming + 00ming + 000ming + 000ming + 0mln + 0mln + 00mln + 00mln + 000mln + 000mln + 0mlrd + 0mlrd + 00mlrd + 00mlrd + 000mlrd + 000mlrd + 0trln + 0trln + 00trln + 00trln + 000trln + 000trln + + + + + + + #E0 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Golland Antil guldeni + Golland Antil guldeni + Golland Antil guldeni + + + Argentina pesosi + Argentina pesosi + Argentina pesosi + + + Avstraliya dollari + Avstraliya dollari + Avstraliya dollari + A$ + + + Aruba florini + Aruba florini + Aruba florini + + + Barbados dollari + Barbados dollari + Barbados dollari + + + Bermuda dollari + Bermuda dollari + Bermuda dollari + + + Boliviya bolviani + Boliviya bolviani + Boliviya bolviani + + + Brazil reali + Brazil reali + Brazil reali + R$ + + + Bagama dollari + Bagama dollari + Bagama dollari + + + Beliz dollari + Beliz dollari + Beliz dollari + + + Kanada dollari + Kanada dollari + Kanada dollari + CA$ + + + Shvetsariya franki + Shvetsariya franki + Shvetsariya franki + + + Chili pesosi + Chili pesosi + Chili pesosi + + + Xitoy yuani + Xitoy yuani + Xitoy yuani + CN¥ + + + Kolumbiya pesosi + Kolumbiya pesosi + Kolumbiya pesosi + + + Kosta-Rika koloni + Kosta-Rika koloni + Kosta-Rika koloni + + + Kuba Ayirboshlash pesosi + Kuba ayirboshlash pesosi + Kuba ayirboshlash pesosi + + + Kuba pesosi + Kuba pesosi + Kuba pesosi + + + Daniya kronasi + Daniya kronasi + Daniya kronasi + + + Dominikan pesosi + Dominikan pesosi + Dominikan pesosi + + + Jazoir dinori + Jazoir dinori + Jazoir dinori + + + Misr funti + Misr funti + Misr funti + + + Yevro + Yevro + Yevro + + + + Folklend oroli funti + Folklend oroli funti + Folklend oroli funti + + + Ingliz funt sterlingi + Ingliz funt sterlingi + Ingliz funt sterlingi + £ + + + Gvatemala kvetzali + Gvatemala kvetzali + Gvatemala kvetzali + + + Gayana dollari + Gayana dollari + Gayana dollari + + + Gonkong dollari + Gonkong dollari + Gonkong dollari + HK$ + + + Gonduras lempirasi + Gonduras lempirasi + Gonduras lempirasi + + + Gaiti gurdasi + Gaiti gurdasi + Gaiti gurdasi + + + Indoneziya rupiyasi + Indoneziya rupiyasi + Indoneziya rupiyasi + + + + + + Hind rupiyasi + Hind rupiyasi + Hind rupiyasi + + + + Yamayka dollari + Yamayka dollari + Yamayka dollari + + + Yapon yenasi + Yapon yenasi + Yapon yenasi + JP¥ + + + Janubiy Koreya voni + Janubiy Koreya voni + Janubiy Koreya voni + + + + Kayman oroli Dollari + Kayman oroli dollari + Kayman oroli dollari + + + Liviya dinori + Liviya dinori + Liviya dinori + + + Marokash dirhami + Marokash dirhami + Marokash dirhami + + + Meksika pesosi + Meksika pesosi + Meksika pesosi + MX$ + + + Nikaragua kordobasi + Nikaragua kordobasi + Nikaragua kordobasi + + + Norvegiya kronasi + Norvegiya kronasi + Norvegiya kronasi + + + NZ$ + + + Panama balboasi + Panama balboasi + Panama balboasi + + + Peru nuyevo sol + Peru nuyevo sol + Peru nuyevo sol + + + Polsha zlotiyi + Polsha zlotiyi + Polsha zlotiyi + + + Paragvay guarani + Paragvay guarani + Paragvay guarani + + + Rus rubli + Rus rubli + Rus rubli + + + Saudiya Arabistoni riyoli + Saudiya Arabistoni riyoli + Saudiya Arabistoni riyoli + + + Shvetsiya kronasi + Shvetsiya kronasi + Shvetsiya kronasi + + + Surinam dollari + Surinam dollari + Surinam dollari + + + Tayland bahti + Tayland bahti + Tayland bahti + ฿ + + + Turk lirasi + Turk lirasi + Turk lirasi + + + Trinidad va Tobago dollari + Trinidad va Tobago dollari + Trinidad va Tobago dollari + + + Yangi Tayvan dollari + Yangi Tayvan dollari + Yangi Tayvan dollari + NT$ + + + AQSH dollari + AQSH dollari + AQSH dollari + US$ + + + Urugvay pesosi + Urugvay pesosi + Urugvay pesosi + + + Oʻzbekiston soʻm + Oʻzbekiston soʻm + Oʻzbekiston soʻm + soʻm + + + Venesuela bolivari + Venesuela bolivari + Venesuela bolivari + + + + + + FCFA + + + Sharqiy Karib dollari + Sharq Karib dollari + Sharq Karib dollari + EC$ + + + CFA + + + CFPF + + + Noma'lum valyuta + Noma'lum valyuta + Noma'lum valyuta + + + Janubiy Afrika randi + Janubiy Afrika randi + Janubiy Afrika randi + + + + ⩾{0} + {0}–{1} + + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} kun + {0} kun + + + {0} soat + {0} soat + + + {0} millisoniya + {0} millisoniya + + + {0} daqiqa + {0} daqiqa + + + {0} oy + {0} oy + + + {0} soniya + {0} soniya + + + {0} hafta + {0} hafta + + + {0} yil + {0} yil + + + {0} sm + {0} sm + + + {0} fut + {0} fut + + + {0} dyuym + {0} dyuym + + + {0} km + {0} km + + + {0} yo.y. + {0} yo.y. + + + {0} m + {0} m + + + {0} milya + {0} milya + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yard + {0} yard + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} untsiya + {0} untsiya + + + {0} funt + {0} funt + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} kilometr/soatiga + {0} kilometr/soatiga + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} litr + {0} litr + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} kun + {0} kun + + + {0} soat + {0} soat + + + {0} ms + {0} ms + + + {0} daq + {0} daq + + + {0} oy + {0} oy + + + {0} soniya + {0} soniya + + + {0} haft + {0} haft + + + {0} yil + {0} yil + + + {0} cm + {0} cm + + + {0} fut + {0} fut + + + {0} dyuym + {0} dyuym + + + {0} km + {0} km + + + {0} yo.y. + {0} yo.y. + + + {0} m + {0} m + + + {0} milya + {0} milya + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yard + {0} yard + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} untsiya + {0} untsiya + + + {0} funt + {0} funt + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} k + {0} k + + + {0} s + {0} s + + + {0} ms + {0} ms + + + {0} daq + {0} daq + + + {0} oy + {0} oy + + + {0} son + {0} son + + + {0} haft + {0} haft + + + {0} y + {0} y + + + {0} cm + {0} cm + + + {0} fut + {0} fut + + + {0} dyuym + {0} dyuym + + + {0} km + {0} km + + + {0} yo.y. + {0} yo.y. + + + {0} m + {0} m + + + {0} milya + {0} milya + + + {0} mm + {0} mm + + + {0} pm + {0} pm + + + {0} yard + {0} yard + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} untsiya + {0} untsiya + + + {0} funt + {0} funt + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} va {1} + {0} va {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ha:h + yoʻq:y + + + + diff --git a/library/Zend/Locale/Data/uz_Arab.xml b/library/Zend/Locale/Data/uz_Arab.xml new file mode 100755 index 000000000..6d98f634a --- /dev/null +++ b/library/Zend/Locale/Data/uz_Arab.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + افغانستان + + + + + right-to-left + + + + [\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0654 \u0670 ء آ أ ؤ ئ ا ب پ ة ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ه و ۇ ۉ ی] + [\u200C\u200D\u200E\u200F ټ ځ څ ډ ړ ږ ښ ګ ڼ ي ۍ ې] + [ء آ أ ؤ ئ ا ب پ ة ت ث ټ ج چ ح خ ځ څ د ذ ډ ر ز ړ ږ ژ س ش ښ ص ض ط ظ ع غ ف ق ک ګ گ ل م ن ڼ ه و ۇ ۉ ي ی ۍ ې] + + + + + + + + G y نچی ییل d نچی MMMM EEEE کونی + + + + + d نچی MMMM y G + + + + + d MMM y G + + + + + GGGGG y/M/d + + + + + + M/d + d نچی MMMM + + + + + + + + جنو + فبر + مار + اپر + مـی + جون + جول + اگس + سپت + اکت + نوم + دسم + + + جنوری + فبروری + مارچ + اپریل + می + جون + جولای + اگست + سپتمبر + اکتوبر + نومبر + دسمبر + + + + + + + ی. + د. + س. + چ. + پ. + ج. + ش. + + + یکشنبه + دوشنبه + سه‌شنبه + چهارشنبه + پنجشنبه + جمعه + شنبه + + + + + + ق.م. + م. + + + + + + y نچی ییل d نچی MMMM EEEE کونی + + + + + d نچی MMMM y + + + + + d MMM y + + + + + y/M/d + + + + + + + H:mm:ss (zzzz) + + + + + H:mm:ss (z) + + + + + H:mm:ss + + + + + H:mm + + + + + + M/d + d نچی MMMM + + + + + + + کابل + + + + افغانستان وقتی + + + + + + arabext + + arabext + + + ٫ + ٬ + ٪ + ×۱۰^ + + + , + . + ‎+ + ‎− + + + + + #,##0.00 ¤ + + + + + + افغانی + ؋ + + + + + diff --git a/library/Zend/Locale/Data/uz_Arab_AF.xml b/library/Zend/Locale/Data/uz_Arab_AF.xml new file mode 100755 index 000000000..f48a98b15 --- /dev/null +++ b/library/Zend/Locale/Data/uz_Arab_AF.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Дунё + Африка + Шимолий Америка + Жанубий Америка + Океания + Ғарбий Африка + Марказий Америка + Шарқий Африка + Шимолий Африка + Марказий Африка + Жануби-Африка + Америка + Шимоли-Америка + Кариб ҳавзаси + Шарқий Осиё + Жанубий Осиё + Жанубий-Шарқий Осиё + Жанубий Европа + Австралазия + Меланезия + Микронезия минтақаси + Полинезия + Осиё + Марказий Осиё + Ғарбий Осиё + Европа + Шарқий Европа + Шимолий Европа + Ғарбий Европа + Лотин Америкаси + Вознесение ороли + Андорра + Бирлашган Араб Амирликлари + Афғонистон + Антигуа ва Барбадос + Ангила + Албания + Арманистон + Ангола + Антарктика + Аргентина + Америка Самоаси + Австрия + Австралия + Аруба + Аланд ороллари + Озарбайжон + Босния ва Герцеговина + Барбадос + Бангладеш + Бельгия + Буркина-Фасо + Болгария + Баҳрайн + Бурунди + Бенин + Муқаддас Варфаломей + Бермуда + Бруней + Боливия + Кариб Нидерландияси + Бразилия + Багама ороллари + Бутан + Бувет ороли + Ботсванна + Белорусия + Белиз + Канада + Кокос (Килинг) ороллари + Конго-Киншаса + Конго (КДР) + Марказий Африка Республикаси + Конго Браззавиль + Конго (Республика) + Швейцария + Кот-д-Ивуар + Фил Суяги Қирғоғи + Кук ороллари + Чили + Камерун + Хитой + Колумбия + Клиппертон ороли + Коста-Рика + Куба + Кабо-Верде + Курасао + Рождество ороли + Кипр + Чехия Республикаси + Олмония + Диего Гарсия + Джибути + Дания + Доминика + Доминикан Республикаси + Жазоир + Сейта ва Мелилла + Эквадор + Эстония + Миср + Ғарбий Саҳрои Кабир + Эритрея + Испания + Эфиопия + Европа Иттифоқи + Финляндия + Фижи ороллари + Фолькленд ороллари + Фолькленд ороллари (Мальвин ороллари) + Микронезия + Фарер ороллари + Франция + Габон + Бирлашган Қироллик + Бирлашган Қироллик + Гренада + Грузия + Француз Гвианаси + Гернси + Гана + Гибралтар + Гренландия + Гамбия + Гвинея + Гваделупе + Экваториал Гвинея + Греция + Жанубий Джорджия ва Жанубий Сендвич ороллари + Гватемала + Гуам + Гвинея-Бисау + Гаяна + Гонконг Хитой ММҲ + Гонконг + Герд ороли ва МакДоналд ороллари + Гондурас + Хорватия + Гаити + Венгрия + Канар ороллари + Индонезия + Ирландия + Исроил + Мэн ороли + Ҳиндистон + Британия Ҳинд океани ҳудуди + Ироқ + Эрон + Исландия + Италия + Джерси + Ямайка + Иордания + Япония + Кения + Қирғизистон + Камбоджа + Кирибати + Комор ороллари + Сент-Китс ва Невис + Шимолий Корея + Жанубий Корея + Кувайт + Кайман ороллари + Қозоғистон + Лаос + Ливан + Сент-Люсия + Лихтенштейн + Шри-Ланка + Либерия + Лесото + Литва + Люксембург + Латвия + Ливия + Марокаш + Монако + Молдова + Черногория + Сент-Мартин + Мадагаскар + Маршал ороллари + Македония + Македония (СЮР) + Мали + Мьянма (Бирма) + Муғулистон + Макао Хитой ММҲ + Макао + Шимолий Марианна ороллари + Мартиника + Мавритания + Монтсеррат + Мальта + Маврикий + Мальдив ороллари + Малави + Мексика + Малайзия + Мозамбик + Намибия + Янги Каледония + Нигер + Норфолк ороллари + Нигерия + Никарагуа + Нидерландия + Норвегия + Непал + Науру + Ниуе + Янги Зеландия + Уммон + Панама + Перу + Француз Полинезияси + Папуа Янги Гвинея + Филиппин + Покистон + Польша + Сент-Пьер ва Микелон + Питкарин ороллари + Пуэрто-Рико + Фаластин ҳудуди + Фаластина + Португалия + Палау + Парагвай + Қатар + Ёндош Океания + Реюньон + Руминия + Сербия + Россия + Руанда + Саудия Арабистони + Соломон ороллари + Сейшел ороллари + Судан + Швеция + Сингапур + Муқаддас Елена ороллари + Словения + Савльбард ва Жан Маен + Словакия + Сьерра-Леоне + Сан-Марино + Сенегал + Сомали + Суринам + Жанубий Судан + Сан-Томе ва Принсипи + Эль-Сальвадор + Синт-Маартен + Сурия + Свазиленд + Тристан де Куна + Туркс ва Кайкос ороллари + Чад + Франция жанубий худудлари + Того + Тайланд + Тожикистон + Токелау + Шарқий-Тимор + Шарқий Тимор + Туркманистон + Тунис + Тонга + Туркия + Тринидад ва Тобаго + Тувалу + Тайван + Танзания + Украина + Уганда + АҚШ ёндош ороллари + Қўшма Штатлар + АКШ + Уругвай + Ўзбекистон + Ватикан + Сент-Винсент ва Гренадин + Венесуэла + Британия Вирджиния ороллари + АҚШ Вирджиния ороллари + Вьетнам + Вануату + Уэллис ва Футуна + Самоа + Косово + Яман + Майотта + Жанубий Африка + Замбия + Зимбабве + Номаълум минтақа + + + Календарь + Саралаш тартиби + Валюта + Рақамлар + + + Араб-ҳинд рақамлари + Кенгайтирилган араб-ҳинд рақамлари + Арман сонлари + Арман кичик сонлари + Бенгали рақамлари + Деванагари рақамлари + Сукут бўйича саралаш тартиби + Ҳабаш сонлари + Тўлиқ кенгликдаги рақамлар + Грузин сонлари + Григориан календари + Грек сонлари + Грек кичик сонлари + Гужарати рақамлари + Гурмухи рақамлари + Хитой ўнлик сонлари + Соддалаштирилган Хитой сонлари + Соддалаштирилган Хитой молия сонлари + Анъанавий Хитой сонлари + Анъанавий Хитой молия сонлари + Иброний сонлари + Япония сонлари + Япония молия сонлари + Хмер рақамлари + Каннада рақамлари + Лао рақамлари + Ғарб рақамлари + Малайалам рақамлари + Мьянма рақамлари + Ория рақамлари + Рим сонлари + Рим кичик сонлари + Умумий қидириш + Стандарт саралаш тартиби + Анъанавий Тамил сонлари + Тамил рақамлари + Телугу рақамлари + Тай рақамлари + Тибет рақамлари + + + Metric + UK + US + + + Тил: {0} + {0} + {0} + + + + [а б в г ғ д е ё ж з и й к қ л м н о п р с т у ў ф х ҳ ч ш ъ э ю я] + [ц щ ы ь] + [А Б В Г Ғ Д Е Ж З И Й К Қ Л М Н О П Р С Т У Ў Ф Х Ҳ Ч Ш Ъ Э Ю Я] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + + EEEE, G y MMMM dd + + + + + G y MMMM d + + + + + G y MMM d + + + + + GGGGG y/MM/dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + G y + G y MMM + G y MMM d + G y MMM d, E + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + G y + G y + GGGGG y-MM + GGGGG y-MM-dd + GGGGG y-MM-dd, E + G y MMM + G y MMM d + G y MMM d, E + G y QQQ + G y QQQQ + + + {0} – {1} + + d–d + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + G y–y + + + GGGGG y-MM – y-MM + GGGGG y-MM – y-MM + + + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + GGGGG y-MM-dd – y-MM-dd + + + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + GGGGG y-MM-dd, E – y-MM-dd, E + + + G y MMM–MMM + G y MMM – y MMM + + + G y MMM d–d + G y MMM d – MMM d + G y MMM d – y MMM d + + + G y MMM d, E – MMM d, E + G y MMM d, E – MMM d, E + G y MMM d, E – y MMM d, E + + + G y MMMM–MMMM + G y MMMM – y MMMM + + + + + + + + + Янв + Фев + Мар + Апр + Май + Июн + Июл + Авг + Сен + Окт + Ноя + Дек + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + Январ + Феврал + Март + Апрел + Май + Июн + Июл + Август + Сентябр + Октябр + Ноябр + Декабр + + + + + Янв + Фев + Мар + Апр + Май + Июн + Июл + Авг + Сен + Окт + Ноя + Дек + + + Я + Ф + М + А + М + И + И + А + С + О + Н + Д + + + Январ + Феврал + Март + Апрел + Май + Июн + Июл + Август + Сентябр + Октябр + Ноябр + Декабр + + + + + + + Якш + Душ + Сеш + Чор + Пай + Жум + Шан + + + Я + Д + С + Ч + П + Ж + Ш + + + Якш + Душ + Сеш + Чор + Пай + Жум + Шан + + + якшанба + душанба + сешанба + чоршанба + пайшанба + жума + шанба + + + + + Якш + Душ + Сеш + Чор + Пай + Жум + Шан + + + Я + Д + С + Ч + П + Ж + Ш + + + Якш + Душ + Сеш + Чор + Пай + Жум + Шан + + + якшанба + душанба + сешанба + чоршанба + пайшанба + жума + шанба + + + + + + + 1-ч + 2-ч + 3-ч + 4-ч + + + 1 + 2 + 3 + 4 + + + 1-чорак + 2-чорак + 3-чорак + 4-чорак + + + + + 1-ч + 2-ч + 3-ч + 4-ч + + + 1 + 2 + 3 + 4 + + + 1-чорак + 2-чорак + 3-чорак + 4-чорак + + + + + + + AM + PM + + + + + + М.А. + Э + + + + + + EEEE, y MMMM dd + + + + + y MMMM d + + + + + y MMM d + + + + + yy/MM/dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d, E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + G y + G y MMM + G y MMM d + G y MMM d, E + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + MM-dd + MM-dd, E + LLL + MMM d + MMM d, E + mm:ss + y + y-MM + y-MM-dd + y-MM-dd, E + y MMM + y MMM d + y MMM d, E + y QQQ + y QQQQ + + + {0} {1} + + + {0} – {1} + + d–d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + MM–MM + + + MM-dd – MM-dd + MM-dd – MM-dd + + + MM-dd, E – MM-dd, E + MM-dd, E – MM-dd, E + + + LLL–LLL + + + MMM d–d + MMM d – MMM d + + + MMM d, E – MMM d, E + MMM d, E – MMM d, E + + + y–y + + + y-MM – y-MM + y-MM – y-MM + + + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + y-MM-dd – y-MM-dd + + + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + y-MM-dd, E – y-MM-dd, E + + + y MMM–MMM + y MMM – y MMM + + + y MMM d–d + y MMM d – MMM d + y MMM d – y MMM d + + + y MMM d, E – MMM d, E + y MMM d, E – MMM d, E + y MMM d, E – y MMM d, E + + + y MMMM–MMMM + y MMMM – y MMMM + + + + + + + + + Муҳаррам + Сафар + Рабиул-аввал + Рабиул-охир + Жумодиул-уло + Жумодиул-ухро + Ражаб + Шаъбон + Рамазон + Шаввол + Зил-қаъда + Зил-ҳижжа + + + + + + + + Эра + + + Йил + ўтган йил + бу йил + кейинги йил + + {0} йилдан сўнг + {0} йилдан сўнг + + + {0} йил аввал + {0} йил аввал + + + + Ой + ўтган ой + бу ой + кейинги ой + + {0} ойдан сўнг + {0} ойдан сўнг + + + {0} ой аввал + {0} ой аввал + + + + Ҳафта + ўтган ҳафта + бу ҳафта + кейинги ҳафта + + {0} ҳафтадан сўнг + {0} ҳафтадан сўнг + + + {0} ҳафта олдин + {0} ҳафта олдин + + + + Кун + кеча + бугун + эртага + + {0} кундан сўнг + {0} кундан сўнг + + + {0} кун олдин + {0} кун олдин + + + + Ҳафта куни + + + ўтган якшанба + бу якшанба + кейинги якшанба + + + ўтган душанба + бу душанба + кейинги душанба + + + ўтган сешанба + бу сешанба + кейинги сешанба + + + ўтган чоршанба + this Wednesday + кейинги чоршанба + + + ўтган пайшанба + бу пайшанба + кейинги пайшанба + + + ўтган жума + бу жума + кейинги жума + + + ўтган шанба + бу шанба + кейинги шанба + + + Кун вақти + + + Соат + + {0} соатдан сўнг + {0} соатдан сўнг + + + {0} соат олдин + {0} соат олдин + + + + Дақиқа + + {0} дақиқадан сўнг + {0} дақиқадан сўнг + + + {0} дақиқа олдин + {0} дақиқа олдин + + + + Сония + ҳозир + + {0} сониядан сўнг + {0} сониядан сўнг + + + {0} сония олдин + {0} сония олдин + + + + Минтақа + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0} вақти + {0} кундузги вақти + {0} стандарт вақти + {1} ({0}) + + Номаълум + + + Dumont d’Urville + + + St. Barthelemy + + + Atikokan + + + St. John’s + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + Британия ёзги вақти + + + + Nuuk + + + Ittoqqortoormiit + + + + Ирландия ёзги вақти + + + + Kolkata + + + St. Kitts + + + St. Lucia + + + Kathmandu + + + St. Helena + + + Lower Prince's Quarter + + + Beulah, North Dakota + + + New Salem, North Dakota + + + Center, North Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + Ho Chi Minh + + + + Афғонистон вақти + + + + + Марказий Африка вақти + + + + + Шарқий Африка вақти + + + + + Жанубий Африка вақти + + + + + Ғарбий Африка вақти + Ғарбий Африка стандарт вақти + Ғарбий Африка ёзги вақти + + + + + Аляска вақти + Аляска стандарт вақти + Аляска кундузги вақти + + + + + Амазонка вақти + Амазонка стандарт вақти + Амазонка ёзги вақти + + + + + Шимолий Америка + Шимолий Америка марказий стандарт вақти + Шимолий Америка марказий кундузги вақти + + + + + Шимолий Америка шарқий вақти + Шимолий Америка шарқий стандарт вақти + Шимолий Америка шарқий кундузги вақти + + + + + Шимолий Америка тоғ вақти + Шимолий Америка тоғ стандарт вақти + Шимолий Америка тоғ кундузги вақти + + + + + Шимолий Америка тинч океани вақти + Шимолий Америка тинч океани стандарт вақти + Шимолий Америка тинч океани кундузги вақти + + + + + Арабистон вақти + Арабистон стандарт вақти + Арабистон кундузги вақти + + + + + Аргентина вақти + Аргентина стандарт вақти + Аргентина ёзги вақти + + + + + Ғарбий Аргентина вақти + Ғарбий Аргентина стандарт вақти + Ғарбий Аргентина ёзги вақти + + + + + Арамнистон вақти + Арманистон стандарт вақти + Арманистон ёзги вақти + + + + + Атлантика вақти + Атлантика стандарт вақти + Атлантика кундузги вақти + + + + + Марказий Австралия вақти + Марказий Австралия стандарт вақти + Марказий Австралия кундузги вақти + + + + + Марказий Австралия Ғарбий вақти + Марказий Австралия Ғарбий стандарт вақти + Марказий Австралия Ғарбий кундузги вақти + + + + + Шарқий Австралия вақти + Шарқий Австралия стандарт вақти + Шарқий Австралия кундузги вақти + + + + + Ғарбий Австралия вақти + Ғарбий Австралия стандарт вақти + Ғарбий Австралия кундузги вақти + + + + + Озарбайжон вақти + Озарбайжон стандарт вақти + Озарбайжон ёзги вақти + + + + + Азор вақти + Азор стандарт вақти + Азор ёзги вақти + + + + + Бангладеш вақти + Бангладеш стандарт вақти + Бангладеш ёзги вақти + + + + + Бутан вақти + + + + + Боливия вақти + + + + + Бразилия вақти + Бразилия стандарт вақти + Бразилия ёзги вақти + + + + + Бруней Даруссалом вақти + + + + + Кабо-Верде вақти + Кабо-Верде стандарт вақти + Кабо-Верде ёзги вақти + + + + + Каморро вақти + + + + + Чатхам вақти + Чатхам стандарт вақти + Чатхам кундузги вақти + + + + + Чили вақти + Чили стандарт вақти + Чили ёзги вақти + + + + + Хитой вақти + Хитой стандарт вақти + Хитой кундузги вақти + + + + + Чойбалсан вақти + Чойбалсан стандарт вақти + Чойбалсан ёзги вақти + + + + + Рождество ороли вақти + + + + + Кокос ороллари вақти + + + + + Колумбия вақти + Колумбия стандарт вақти + Колумбия ёзги вақти + + + + + Кук ороллари вақти + Кук ороллари стандарт вақти + Кук ороллари ярим ёзги вақти + + + + + Куба вақти + Куба стандарт вақти + Куба кундузги вақти + + + + + Дэвис вақти + + + + + Думонт-д-Урвил вақти + + + + + Шарқий Тимор вақти + + + + + Пасхи Ороли вақти + Пасхи ороли стандарт вақти + Пасхи ороли ёзги вақти + + + + + Эквадор вақти + + + + + Марказий Европа вақти + Марказий Европа стандарт вақти + Марказий Европа ёзги вақти + + + + + Шарқий Европа вақти + Шарқий Европа стандарт вақти + Шарқий Европа ёзги вақти + + + + + Ғарбий Европа вақти + Ғарбий Европа стандарт вақти + Ғарбий Европа ёзги вақти + + + + + Фолькленд ороллари вақти + Фолькленд ороллари стандарт вақти + Фолькленд ороллари ёзги вақти + + + + + Фижи вақти + Фижи стандарт вақти + Фижи ёзги вақти + + + + + Француз Гвианаси вақти + + + + + Француз жанубий ва Антарктика вақти + + + + + Галапагос вақти + + + + + Гамбиер вақти + + + + + Грузия вақти + Грузия стандарт вақти + Грузия ёзги вақти + + + + + Гилберт ороллари вақти + + + + + Гринвич вақти + + + + + Шарқий Гренландия вақти + Шарқий Гренландия стандарт вақти + Шарқий Гренландия ёзги вақти + + + + + Ғарбий Гренландия вақти + Ғарбий Гренландия стандарт вақти + Ғарбий Гренландия ёзги вақти + + + + + Кўрфаз вақти + + + + + Гайана вақти + + + + + Гавайи-алеут вақти + Гавайи-алеут стандарт вақти + Гавайи-алеут кундузги вақти + + + + + Гонконг вақти + Гонконг стандарт вақти + Гонконг ёзги вақти + + + + + Ховд вақти + Ховд стандарт вақти + Ховд ёзги вақти + + + + + Ҳиндистон вақти + + + + + Ҳинд океани вақти + + + + + Ҳинд-Хитой вақти + + + + + Марказий Индонезия вақти + + + + + Шарқий Индонезия вақти + + + + + Ғарбий Индонезия вақти + + + + + Эрон вақти + Эрон стандарт вақти + Эрон кундузги вақти + + + + + Иркутск вақти + Иркутск стандарт вақти + Иркутск ёзги вақти + + + + + Исроил вақти + Исроил стандарт вақти + Исроил кундузги вақти + + + + + Япония вақти + Япония стандарт вақти + Япония кундузги вақти + + + + + Шарқий Қозоғистон вақти + + + + + Ғарбий Қозоғистон вақти + + + + + Корея вақти + Корея стандарт вақти + Корея кундузги вақти + + + + + Косрае вақти + + + + + Красноярск вақти + Красноярск стандарт вақти + Красноярск ёзги вақти + + + + + Қирғизистон вақти + + + + + Лайн ороллари вақти + + + + + Лорд Хове вақти + Лорд Хове стандарт вақти + Лорд Хове кундузги вақти + + + + + Маквари ороли вақти + + + + + Магадан вақти + Магадан стандарт вақти + Магадан ёзги вақти + + + + + Малайзия вақти + + + + + Мальдив ороллар + + + + + Маркезас вақти + + + + + Маршалл ороллари вақти + + + + + Маврикий вақти + Маврикий стандарт вақти + Маврикий ёзги вақти + + + + + Моувсон вақти + + + + + Улан-Батор вақти + Улан-Батор стандарт вақти + Улан-Батор ёзги вақти + + + + + Москва вақти + Москва стандарт вақти + Москва ёзги вақти + + + + + Мьянма вақти + + + + + Науру вақти + + + + + Непал вақти + + + + + Янги Каледония вақти + Янги Каледония стандарт вақти + Янги Каледония ёзги вақти + + + + + Янги Зеландия вақти + Янги Зеландия стандарт вақти + Янги Зеландия кундузги вақти + + + + + Ньюфаундленд вақти + Ньюфаундленд стандарт вақти + Ньюфаундленд кундузги вақти + + + + + Ниуе вақти + + + + + Норфолк ороли вақти + + + + + Фернандо де Норонья вақти + Фернандо де Норонья стандарт вақти + Фернандо де Норонья ёзги вақти + + + + + Новосибирск вақти + Новосибирск стандарт вақти + Новосибирск ёзги вақти + + + + + Омск вақти + Омск стандарт вақти + Омск ёзги вақти + + + + + Покистон вақти + Покистон стандарт вақти + Покистон ёзги вақти + + + + + Палау вақти + + + + + Папуа-Янги Гвинея вақти + + + + + Парагвай вақти + Парагвай стандарт вақти + Парагвай ёзги вақти + + + + + Перу вақти + Перу стандарт вақти + Перу ёзги вақти + + + + + Филиппин вақти + Филиппин стандарт вақти + Филиппин ёзги вақти + + + + + Феникс ороллари вақти + + + + + Сент-Пьер ва Микелон вақти + Сент-Пьер ва Микелон стандарт вақти + Сент-Пьер ва Микелон кундузги вақти + + + + + Питкерн вақти + + + + + Понапе вақти + + + + + Реюньон вақти + + + + + Ротера вақти + + + + + Сахалин вақти + Сахалин стандарт вақти + Сахалин ёзги вақти + + + + + Самоа вақти + Самоа стандарт вақти + Самоа кундузги вақти + + + + + Сейшел ороллари вақти + + + + + Сингапур вақти + + + + + Соломон ороллари вақти + + + + + Жанубий Джорджия вақти + + + + + Суринам вақти + + + + + Сьова вақти + + + + + Таити вақти + + + + + Тайпей вақти + Тайпей стандарт вақти + Тайпей кундузги вақти + + + + + Тожикистон вақти + + + + + Токелау вақти + + + + + Тонга вақти + Тонга стандарт вақти + Тонга ёзги вақти + + + + + Чуук вақти + + + + + Туркманистон вақти + Туркманистон стандарт вақти + Туркманистон ёзги вақти + + + + + Тувалу вақти + + + + + Уругвай вақти + Уругвай стандарт вақти + Уругвай ёзги вақти + + + + + Ўзбекистон вақти + Ўзбекистон стандарт вақти + Ўзбекистон ёзги вақти + + + + + Вануату вақти + Вануату стандарт вақти + Вануату ёзги вақти + + + + + Венесуэла вақти + + + + + Владивосток вақти + Владивосток стандарт вақти + Владивосток ёзги вақти + + + + + Волгоград вақти + Волгоград стандарт вақти + Волгоград ёзги вақти + + + + + Восток вақти + + + + + Уэйк ороли вақти + + + + + Уэллис ва Футуна вақти + + + + + Якутск вақти + Якутск стандарт вақти + Якутск ёзги вақти + + + + + Екатеринбург вақти + Екатеринбург стандарт вақти + Екатеринбург ёзги вақти + + + + + + + ٫ + ٬ + ٪ + + + - + ×۱۰^ + × + ؉ + + NaN + + + , +   + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + + + #,##0.### + + + + + 0 минг + 0 минг + 00 минг + 00 минг + 000 минг + 000 минг + 0 миллион + 0 миллион + 00 миллион + 00 миллион + 000 миллион + 000 миллион + 0 миллиард + 0 миллиард + 00 миллиард + 00 миллиард + 000 миллиард + 000 миллиард + 0 трилион + 0 трилион + 00 трилион + 00 трилион + 000 трилион + 000 трилион + + + + + 0минг + 0минг + 00минг + 00минг + 000минг + 000минг + 0млн + 0млн + 00млн + 00млн + 000млн + 000млн + 0млрд + 0млрд + 00млрд + 00млрд + 000млрд + 000млрд + 0трлн + 0трлн + 00трлн + 00трлн + 000трлн + 000трлн + + + + + + + #E0 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + + + + + ¤ #,##0.00 + + + {0} {1} + {0} {1} + + + + Голланд Антил гульдени + Голланд Антил гульдени + Голланд Антил гульдени + + + Аргентина песоси + Аргентина песоси + Аргентина песоси + + + A$ + + + Аруба флорини + Аруба флорини + Аруба флорини + + + Барбадос доллари + Барбадос доллари + Барбадос доллари + + + Бермуда доллари + Бермуда доллари + Бермуда доллари + + + Боливия болвиани + Боливия болвиани + Боливия болвиани + + + Бразил реали + Бразил реали + Бразил реали + R$ + + + Багама доллари + Багама доллари + Багама доллари + + + Белиз доллари + Белиз доллари + Белиз доллари + + + Канада доллари + Канада доллари + Канада доллари + CA$ + + + Чили песоси + Чили песоси + Чили песоси + + + Хитой юани + Хитой юани + Хитой юани + CN¥ + + + Колумбия песоси + Колумбия песоси + Колумбия песоси + + + Коста-Рика колони + Коста-Рика колони + Коста-Рика колони + + + Куба Айирбошлаш песоси + Куба айирбошлаш песоси + Куба айирбошлаш песоси + + + Куба песоси + Куба песоси + Куба песоси + + + Доминикан песоси + Доминикан песоси + Доминикан песоси + + + Жазоир динори + Жазоир динори + Жазоир динори + + + Миср фунти + Миср фунти + Миср фунти + + + Евро + Евро + Евро + + + + Фолькленд ороли фунти + Фолькленд ороли фунти + Фолькленд ороли фунти + + + Инглиз фунт стерлинги + Инглиз фунт стерлинги + Инглиз фунт стерлинги + £ + + + Гватемала кветзали + Гватемала кветзали + Гватемала кветзали + + + Гаяна доллари + Гаяна доллари + Гаяна доллари + + + HK$ + + + Гондурас лемпираси + Гондурас лемпираси + Гондурас лемпираси + + + Гаити гурдаси + Гаити гурдаси + Гаити гурдаси + + + + + + Ҳинд рупияси + + + + Ямайка доллари + Ямайка доллари + Ямайка доллари + + + Япон йенаси + Япон йенаси + Япон йенаси + JP¥ + + + + + + Кайман ороли Доллари + Кайман ороли доллари + Кайман ороли доллари + + + Ливия динори + Ливия динори + Ливия динори + + + Марокаш дирҳами + Марокаш дирҳами + Марокаш дирҳами + + + Мексика песоси + Мексика песоси + Мексика песоси + MX$ + + + Никарагуа кордобаси + Никарагуа кордобаси + Никарагуа кордобаси + + + NZ$ + + + Панама бальбоаси + Панама бальбоаси + Панама бальбоаси + + + Перу нуево сол + Перу нуево сол + Перу нуево сол + + + Парагвай гуарани + Парагвай гуарани + Парагвай гуарани + + + Рус рубли + Рус рубли + Рус рубли + + + Суринам доллари + Суринам доллари + Суринам доллари + + + ฿ + + + Тринидад ва Тобаго доллари + Тринидад ва Тобаго доллари + Тринидад ва Тобаго доллари + + + NT$ + + + АҚШ доллари + АҚШ доллари + АҚШ доллари + US$ + + + Уругвай песоси + Уругвай песоси + Уругвай песоси + + + Ўзбекистон сўм + Ўзбекистон сўм + Ўзбекистон сўм + сўм + + + Венесуэла боливари + Венесуэла боливари + Венесуэла боливари + + + + + + FCFA + + + Шарқий Кариб доллари + Шарқ Кариб доллари + Шарқ Кариб доллари + EC$ + + + CFA + + + CFPF + + + + ⩾{0} + {0}–{1} + + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} кун + {0} кун + + + {0} соат + {0} соат + + + {0} миллисония + {0} миллисония + + + {0} дақиқа + {0} дақиқа + + + {0} ой + {0} ой + + + {0} сония + {0} сония + + + {0} ҳафта + {0} ҳафта + + + {0} йил + {0} йил + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} дюйм + {0} дюйм + + + {0} км + {0} км + + + {0} ё.й. + {0} ё.й. + + + {0} м + {0} м + + + {0} миля + {0} миля + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} кун + {0} кун + + + {0} соат + {0} соат + + + {0} мс + {0} мс + + + {0} дақ + {0} дақ + + + {0} ой + {0} ой + + + {0} сония + {0} сония + + + {0} ҳафт + {0} ҳафт + + + {0} й + {0} й + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} дюйм + {0} дюйм + + + {0} км + {0} км + + + {0} ё.й. + {0} ё.й. + + + {0} м + {0} м + + + {0} миля + {0} миля + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}°C + {0}°C + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} ac + {0} ac + + + {0} ha + {0} ha + + + {0} ft² + {0} ft² + + + {0} km² + {0} km² + + + {0} m² + {0} m² + + + {0} mi² + {0} mi² + + + {0} к + {0} к + + + {0} с + {0} с + + + {0} мс + {0} мс + + + {0} дақ + {0} дақ + + + {0} ой + {0} ой + + + {0} сон + {0} сон + + + {0} ҳафт + {0} ҳафт + + + {0} й + {0} й + + + {0} см + {0} см + + + {0} фут + {0} фут + + + {0} дюйм + {0} дюйм + + + {0} км + {0} км + + + {0} ё.й. + {0} ё.й. + + + {0} м + {0} м + + + {0} миля + {0} миля + + + {0} мм + {0} мм + + + {0} пм + {0} пм + + + {0} ярд + {0} ярд + + + {0} г + {0} г + + + {0} кг + {0} кг + + + {0} унция + {0} унция + + + {0} фунт + {0} фунт + + + {0} hp + {0} hp + + + {0} kW + {0} kW + + + {0} W + {0} W + + + {0} hPa + {0} hPa + + + {0} inHg + {0} inHg + + + {0} mbar + {0} mbar + + + {0} km/h + {0} km/h + + + {0} m/s + {0} m/s + + + {0} mi/h + {0} mi/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} km³ + {0} km³ + + + {0} mi³ + {0} mi³ + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + ҳа:ҳ + йўқ:й + + + + diff --git a/library/Zend/Locale/Data/uz_Cyrl_UZ.xml b/library/Zend/Locale/Data/uz_Cyrl_UZ.xml new file mode 100755 index 000000000..b37fa00ce --- /dev/null +++ b/library/Zend/Locale/Data/uz_Cyrl_UZ.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Thế giới + Châu Phi + Bắc Mỹ + Nam Mỹ + Châu Đại Dương + Tây Phi + Trung Mỹ + Đông Phi + Bắc Phi + Trung Phi + Miền Nam Châu Phi + Châu Mỹ + Miền Bắc Châu Mỹ + Ca-ri-bê + Đông Á + Nam Á + Đông Nam Á + Nam Âu + Úc và New Zealand + Melanesia + Vùng Micronesian + Polynesia + Châu Á + Trung Á + Tây Á + Âu Châu + Đông Âu + Miền Bắc Châu Âu + Tây Âu + Châu Mỹ La-tinh + Đảo Ascension + Andorra + Các Tiểu Vương quốc Ả Rập Thống nhất + Afghanistan + Antigua và Barbuda + Anguilla + Albani + Armenia + Tây Ấn Hà Lan + Angola + Nam Cực + Argentina + Đảo Somoa thuộc Mỹ + Áo + Úc + Aruba + Quần đảo Åland + Azerbaijan + Bosnia và Herzegovina + Barbados + Bangladesh + Bỉ + Burkina Faso + Bungari + Bahrain + Burundi + Benin + Saint Barthélemy + Bermuda + Brunei + Bolivia + Caribe Hà Lan + Brazil + Bahamas + Bhutan + Đảo Bouvet + Botswana + Belarus + Belize + Canada + Quần đảo Cocos + Congo - Kinshasa + Cộng hòa Dân chủ Congo + Cộng hòa Trung Phi + Congo - Brazzaville + Cộng hòa Congo + Thụy Sĩ + Côte d’Ivoire + Bờ Biển Ngà + Quần đảo Cook + Chile + Cameroon + Trung Quốc + Colombia + Đảo Clipperton + Costa Rica + Cuba + Cape Verde + Curaçao + Đảo Giáng Sinh + Síp + Cộng hòa Séc + Đức + Diego Garcia + Djibouti + Đan Mạch + Dominica + Cộng hòa Dominica + Algeria + Ceuta và Melilla + Ecuador + Estonia + Ai Cập + Tây Sahara + Eritrea + Tây Ban Nha + Ethiopia + Liên Minh Châu Âu + Phần Lan + Fiji + Quần đảo Falkland + Quần đảo Falkland (Islas Malvinas) + Micronesia + Quần đảo Faroe + Pháp + Gabon + Vương quốc Anh + Vương quốc Anh + Grenada + Georgia + Quiana thuộc Pháp + Guernsey + Ghana + Gibraltar + Greenland + Gambia + Guinea + Guadeloupe + Guinea Xích Đạo + Hy Lạp + Quần đảo Nam Georgia và Nam Sandwich + Guatemala + Guam + Guinea-Bissau + Guyana + Đặc khu hành chính Hồng Kông - Trung Quốc + Hồng Kông + Đảo Heard và Quần đảo McDonald + Honduras + Croatia + Haiti + Hungari + Quần đảo Canary + Indonesia + Ai-len + Israel + Đảo Man + Ấn Độ + Thuộc địa Anh tại Ấn Độ Dương + I-rắc + Iran + Iceland + Ý + Jersey + Jamaica + Jordan + Nhật Bản + Kenya + Kyrgyzstan + Campuchia + Kiribati + Comoros + Saint Kitts và Nevis + Triều Tiên + Hàn Quốc + Cô-oét + Quần đảo Cayman + Kazakhstan + Lào + Li-băng + Saint Lucia + Liechtenstein + Sri Lanka + LIberia + Lesotho + Lít-va + Luxembourg + Latvia + Li-bi + Ma-rốc + Monaco + Moldova + Montenegro + Saint Martin + Madagascar + Quần đảo Marshall + Macedonia + Macedonia (FYROM) + Mali + Myanmar (Miến Điện) + Mông Cổ + Đặc khu hành chính Macao - Trung Quốc + Macao + Quần đảo Bắc Mariana + Martinique + Mauritania + Montserrat + Malta + Mauritius + Maldives + Malawi + Mexico + Malaysia + Mozambique + Namibia + New Caledonia + Niger + Đảo Norfolk + Nigeria + Nicaragua + Hà Lan + Na Uy + Nepal + Nauru + Niue + New Zealand + Oman + Panama + Peru + Polynesia thuộc Pháp + Papua New Guinea + Philippin + Pakistan + Ba Lan + Saint Pierre và Miquelon + Quần đảo Pitcairn + Puerto Rico + Lãnh thổ Palestine + Palestine + Bồ Đào Nha + Palau + Paraguay + Qatar + Vùng xa xôi thuộc Châu Đại Dương + Réunion + Romania + Serbia + Nga + Rwanda + Ả Rập Xê-út + Quần đảo Solomon + Seychelles + Sudan + Thụy Điển + Singapore + Saint Helena + Slovenia + Svalbard và Jan Mayen + Slovakia + Sierra Leone + San Marino + Senegal + Somali + Suriname + Nam Sudan + São Tomé và Príncipe + El Salvador + Sint Maarten + Syria + Swaziland + Tristan da Cunha + Quần đảo Turk và Caicos + Chad + Thuộc địa Miền Nam của Pháp + Togo + Thái Lan + Tajikistan + Tokelau + Timor-Leste + Đông Timor + Turkmenistan + Tunisia + Tonga + Thổ Nhĩ Kỳ + Trinidad và Tobago + Tuvalu + Đài Loan + Tanzania + Ukraina + Uganda + Các đảo nhỏ xa trung tâm thuộc Mỹ + Hoa Kỳ + Hoa Kỳ + Uruguay + Uzbekistan + Thành Vatican + Saint Vincent và Grenadines + Venezuela + Quần đảo Virgin thuộc Anh + Quần đảo Virgin thuộc Mỹ + Việt Nam + Vanuatu + Wallis và Futuna + Samoa + Kosovo + Yemen + Mayotte + Nam Phi + Zambia + Zimbabwe + Vùng Chưa biết hoặc không Hợp lệ + + + Phép chính tả Tiếng Đức Truyền thống + Phép chính tả Resian Chuẩn hóa + Phép chính tả Tiếng Đức năm 1996 + Tiếng Pháp từ Cuối thời Trung cổ đến 1606 + Tiếng Pháp Hiện đại Thời kỳ đầu + Hàn lâm + La Mã hóa ALA-LC, ấn bản năm 1997 + Phương ngữ Aluku + Tiếng Armenia Miền Đông + Tiếng Armenia Miền Tây + Bảng chữ cái La-tinh Tiếng Turk Hợp nhất + Phương ngữ San Giorgio/Bila + Bảng chữ cái Bohorič + Tiếng Boontling + Bảng chữ cái Dajnko + Tiếng Anh Hiện đại Thời kỳ đầu + Ngữ âm học IPA + Ngữ âm học UPA + La mã hóa Hepburn + Phép chính tả Chung + Phép chính tả Chuẩn + Phương ngữ Lipovaz của người Resian + Bảng chữ cái Metelko + Đơn âm + Phương ngữ Ndyuka + Phương ngữ Natisone + Phương ngữ Gniva/Njiva + Tiếng Volapük Hiện đại + Phương ngữ Oseacco/Osojane + Phương ngữ Pamaka + La Mã hóa Bính âm + Đa âm + Máy tính + Phép chính tả Sửa đổi + Tiếng Volapük Cổ điển + Tiếng Resian + Tiếng Saho + Tiếng Anh chuẩn tại Scotland + Phương ngữ Liverpool + Phương ngữ Stolvizza/Solbica + Phép chính tả Taraskievica + Phép chính tả Hợp nhất + Phép chính tả Sửa đổi Hợp nhất + Tiếng Valencia + La Mã hóa Wade-Giles + + + Lịch + Bỏ qua sắp xếp biểu tượng + Sắp xếp dấu trọng âm đảo ngược + Sắp xếp chữ hoa/chữ thường + Sắp xếp phân biệt chữ hoa/chữ thường + Sắp xếp chữ Kana + Thứ tự sắp xếp + Sắp xếp theo chuẩn hóa + Sắp xếp theo số + Cường độ sắp xếp + Tiền tệ + Số + Múi giờ + Biến thể ngôn ngữ + Sắp xếp dưới dạng biểu tượng + Sử dụng cá nhân + + + Chữ số Ả Rập - Ấn Độ + Chữ số Ả Rập - Ấn Độ mở rộng + Chữ số Armeni + Chữ số Armenia viết thường + Chữ số Bali + Chữ số Bangladesh + Thứ tự sắp xếp theo tiếng Trung phồn thể - Big5 + Chữ số Brahmi + Lịch Phật Giáo + Chữ số Chakma + Chữ số Chăm + Lịch Trung Quốc + Lịch Copts + Lịch Dangi + Chữ số Devanagari + Thứ tự sắp xếp theo từ điển + Thứ tự sắp xếp unicode mặc định + Chữ số Ethiopia + Lịch Ethiopia + Lịch Ethiopic Amete Alem + Chữ số dùng trong tài chính + Chữ số có độ rộng đầy đủ + Thứ tự sắp xếp theo tiếng Trung giản thể - GB2312 + Chữ số Gruzia + Lịch Gregory + Chữ số Hy Lạp + Chữ số Hy Lạp viết thường + Chữ số Gujarati + Chữ số Gurmukhi + Chữ số thập phân Trung Quốc + Chữ số của tiếng Trung giản thể + Chữ số dùng trong tài chính của tiếng Trung giản thể + Chữ số tiếng Trung phồn thể + Chữ số dùng trong tài chính của tiếng Trung phồn thể + Chữ số Do Thái + Lịch Do Thái + Sắp xếp tất cả + Lịch Quốc gia Ấn Độ + Lịch Islamic + Lịch Islamic-Civil + Lịch Hồi Giáo - Ả Rập Xê-út + Lịch Hồi Giáo - Thiên văn + Lịch Hồi Giáo - Umm al-Qura + Lịch ISO-8601 + Lịch Nhật Bản + Chữ số Java + Chữ số Nhật Bản + Chữ số dùng trong tài chính của tiếng Nhật + Chữ số Kayah Li + Chữ số Khơ-me + Chữ số Kannada + Chữ số Hora Thái Đam + Chữ số Tham Thái Đam + Chữ số Lào + Chữ số phương Tây + Chữ số Lepcha + Chữ số Limbu + Sắp xếp chữ thường đầu tiên + Chữ số Malayalam + Chữ số Mông Cổ + Chữ số Meetei Mayek + Chữ số Myanma + Chữ số Myanmar Shan + Chữ số tự nhiên + Chữ số N'Ko + Sắp xếp dấu trọng âm bình thường + Sắp xếp thứ tự chữ cái bình thường + Sắp xếp không phân biệt chữ hoa/chữ thường + Sắp xếp chữ Kana riêng biệt + Sắp xếp không theo chuẩn hóa + Sắp xếp từng chữ số + Sắp xếp biểu tượng + Chữ số Ol Chiki + Chữ số Oriya + Chữ số Osmanya + Lịch Ba Tư + Thứ tự sắp xếp theo danh bạ điện thoại + Thứ tự sắp xếp theo ngữ âm + Thứ tự sắp xếp theo bính âm + Chỉ sắp xếp chữ cái cơ sở + Sắp xếp dấu trọng âm/chữ cái/độ rộng/chữ Kana + Thứ tự sắp xếp đã sửa đổi + Lịch Trung Hoa Dân Quốc + Chữ số La mã + Chữ số La Mã viết thường + Chữ số Saurashtra + Tìm kiếm mục đích chung + Tìm kiếm theo phụ âm đầu chữ Hangul + Sắp xếp dấu trọng âm + Sắp xếp biểu tượng bỏ qua + Chữ số Sharada + Chữ số Sora Sompeng + Thứ tự sắp xếp chuẩn + Thứ tự sắp xếp theo nét chữ + Chữ số Sudan + Chữ số Takri + Chữ số Thái Lặc mới + Chữ số Tamil + Chữ số Tamil + Chữ số Telugu + Sắp xếp dấu trọng âm/chữ cái/độ rộng + Chữ số Thái + Chữ số Tây Tạng + Thứ tự sắp xếp truyền thống + Số truyền thống + Trình tự sắp xếp theo bộ-nét + Sắp xếp chữ hoa đầu tiên + Chữ số Vai + Sắp xếp dấu trọng âm đảo ngược + Sắp xếp phân biệt chữ hoa/chữ thường + Sắp xếp chữ Kana khác nhau + Sắp xếp unicode được chuẩn hóa + Sắp xếp chữ số theo số + Thứ tự sắp xếp Zhuyin + + + BGN + Số + Âm + UNGEGN + Dấu + Độ rộng tối đa + Nửa độ rộng + Jamo + Bính âm + Xuất bản + + + Hệ mét + Hệ Anh + Hệ Mỹ + + + Ngôn ngữ: {0} + Chữ viết: {0} + Vùng: {0} + + + + [a à ả ã á ạ ă ằ ẳ ẵ ắ ặ â ầ ẩ ẫ ấ ậ b c d đ e è ẻ ẽ é ẹ ê ề ể ễ ế ệ f g h i ì ỉ ĩ í ị j k l m n o ò ỏ õ ó ọ ô ồ ổ ỗ ố ộ ơ ờ ở ỡ ớ ợ p q r s t u ù ủ ũ ú ụ ư ừ ử ữ ứ ự v w x y ỳ ỷ ỹ ý ỵ z] + [] + [A Ă Â B C D Đ E Ê F G H I J K L M N O Ô Ơ P Q R S T U Ư V W X Y Z] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + ? + + + + + + + + + + + + + BE + + + + + 'tháng' L + LLL + + + + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + + + EEEE, 'ngày' dd MMMM 'năm' U + + + + + 'Ngày' dd 'tháng' M 'năm' U + + + + + dd-MM U + + + + + dd/MM/y + + + + + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + Tout + Baba + Hator + Kiahk + Toba + Amshir + Baramhat + Baramouda + Bashans + Paona + Epep + Mesra + Nasie + + + + + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + Meskerem + Tekemt + Hedar + Tahsas + Ter + Yekatit + Megabit + Miazia + Genbot + Sene + Hamle + Nehasse + Pagumen + + + + + + + + + EEEE, 'ngày' dd MMMM 'năm' y G + + + + + 'Ngày' dd 'tháng' M 'năm' y G + + + + + dd-MM-y G + + + + + dd/MM/y GGGGG + + + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + 'Ngày' dd + E, dd + 'Năm' y G + MMM y G + dd MMM, y G + E, dd MMM y G + h'h' a + HH'h' + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + dd-M + E, dd-M + dd-MM + LLL + dd MMM + E, dd MMM + dd MMMM + E, dd MMMM + mm:ss + 'Năm' y G + 'Năm' y G + M/y G + d/M/y G + E, dd-M-y G + MM-y G + MMM y G + dd MMM, y G + E, dd MMM y G + MMMM y G + QQQ y G + QQQQ y G + + + {0} - {1} + + 'Ngày' dd-dd + + + h'h' a - h'h' a + h'h' - h'h' a + + + HH'h' - HH'h' + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h'h' a - h'h' a v + h'h'-h'h' a v + + + HH'h'-HH'h' v + + + 'Tháng' M - 'Tháng' M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + EEEE, dd/MM - EEEE, dd/MM + EEEE, dd/MM - EEEE, dd/MM + + + MMM-MMM + + + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M + + + EEEE, 'ngày' dd - EEEE, 'ngày' dd 'tháng' M + EEEE, 'ngày' dd 'tháng' M - EEEE, 'ngày' dd 'tháng' M + + + y-y G + + + MM/y - MM/y G + MM/y - MM/y G + + + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + dd/MM/y - dd/MM/y G + + + EEEE, dd/MM/y - EEEE, dd/MM/y G + EEEE, dd/MM/y - EEEE, dd/MM/y G + EEEE, dd/MM/y - EEEE, dd/MM/y G + + + 'Tháng' M - 'Tháng' M 'năm' y G + 'Tháng' M 'năm' y - 'Tháng' M 'năm' y G + + + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' y G + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' y G + 'Ngày' dd 'tháng' M 'năm' y - 'Ngày' dd 'tháng' M 'năm' y G + + + EEEE, 'ngày' dd MMM - EEEE, 'ngày' dd MMM 'năm' y G + E, dd 'tháng' M - E, dd 'tháng' M, y G + E, dd 'tháng' M, y - E, dd 'tháng' M, y G + + + MMMM-MMMM y G + MMMM y – MMMM y G + + + + + + + + + thg 1 + thg 2 + thg 3 + thg 4 + thg 5 + thg 6 + thg 7 + thg 8 + thg 9 + thg 10 + thg 11 + thg 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + tháng 1 + tháng 2 + tháng 3 + tháng 4 + tháng 5 + tháng 6 + tháng 7 + tháng 8 + tháng 9 + tháng 10 + tháng 11 + tháng 12 + + + + + Thg 1 + Thg 2 + Thg 3 + Thg 4 + Thg 5 + Thg 6 + Thg 7 + Thg 8 + Thg 9 + Thg 10 + Thg 11 + Thg 12 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + Tháng 1 + Tháng 2 + Tháng 3 + Tháng 4 + Tháng 5 + Tháng 6 + Tháng 7 + Tháng 8 + Tháng 9 + Tháng 10 + Tháng 11 + Tháng 12 + + + + + + + CN + Th 2 + Th 3 + Th 4 + Th 5 + Th 6 + Th 7 + + + CN + T2 + T3 + T4 + T5 + T6 + T7 + + + CN + T2 + T3 + T4 + T5 + T6 + T7 + + + Chủ Nhật + Thứ Hai + Thứ Ba + Thứ Tư + Thứ Năm + Thứ Sáu + Thứ Bảy + + + + + CN + Th 2 + Th 3 + Th 4 + Th 5 + Th 6 + Th 7 + + + CN + T2 + T3 + T4 + T5 + T6 + T7 + + + CN + T2 + T3 + T4 + T5 + T6 + T7 + + + Chủ Nhật + Thứ Hai + Thứ Ba + Thứ Tư + Thứ Năm + Thứ Sáu + Thứ Bảy + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + Quý 1 + Quý 2 + Quý 3 + Quý 4 + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + Quý 1 + Quý 2 + Quý 3 + Quý 4 + + + + + + + SA + CH + + + + + + tr. CN + sau CN + + + tr. CN + sau CN + + + tr. CN + sau CN + + + + + + EEEE, 'ngày' dd MMMM 'năm' y + + + + + 'Ngày' dd 'tháng' MM 'năm' y + + + + + dd-MM-y + + + + + dd/MM/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + + {0} {1} + + + + d + E, dd + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + 'Năm' y G + MMM y G + dd MMM, y G + E, dd MMM y G + h a + HH + h:mm a + H:mm + h:mm:ss a + H:mm:ss + L + dd-M + E, dd-M + dd-MM + LLL + dd MMM + E, dd MMM + dd MMMM + E, dd MMMM + mm:ss + mm:ss + 'Năm' y + M/y + d/M/y + E, dd-M-y + MM-y + MMM y + dd MMM, y + E, dd MMM y + MMMM y + QQQ y + QQQQ y + + + {0} {1} + + + {0} - {1} + + 'Ngày' dd-dd + + + h'h' a - h'h' a + h'h' - h'h' a + + + HH'h' - HH'h' + + + h:mm a – h:mm a + h:mm-h:mm a + h:mm-h:mm a + + + HH:mm-HH:mm + HH:mm-HH:mm + + + h:mm a – h:mm a v + h:mm-h:mm a v + h:mm-h:mm a v + + + HH:mm-HH:mm v + HH:mm-HH:mm v + + + h'h' a - h'h' a v + h'h'-h'h' a v + + + HH'h'-HH'h' v + + + 'Tháng' M - 'Tháng' M + + + dd/MM - dd/MM + dd/MM - dd/MM + + + EEEE, dd/MM - EEEE, dd/MM + EEEE, dd/MM - EEEE, dd/MM + + + MMM-MMM + + + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M + + + EEEE, 'ngày' dd - EEEE, 'ngày' dd 'tháng' M + EEEE, 'ngày' dd 'tháng' M - EEEE, 'ngày' dd 'tháng' M + + + y-y + + + MM/y - MM/y + MM/y - MM/y + + + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + dd/MM/y - dd/MM/y + + + EEEE, dd/MM/y - EEEE, dd/MM/y + EEEE, dd/MM/y - EEEE, dd/MM/y + EEEE, dd/MM/y - EEEE, dd/MM/y + + + 'Tháng' M - 'Tháng' M 'năm' y + 'Tháng' M 'năm' y - 'Tháng' M 'năm' y + + + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' y + 'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' y + 'Ngày' dd 'tháng' M 'năm' y - 'Ngày' dd 'tháng' M 'năm' y + + + EEEE, 'ngày' dd MMM - EEEE, 'ngày' dd MMM 'năm' y + E, dd 'tháng' M - E, dd 'tháng' M, y + E, dd 'tháng' M, y - E, dd 'tháng' M, y + + + MMMM-MMMM y + MMMM y – MMMM y + + + + + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + Tishri + Heshvan + Kislev + Tevet + Shevat + Adar I + Adar + Adar II + Nisan + Iyar + Sivan + Tamuz + Av + Elul + + + + + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + Chaitra + Vaisakha + Jyaistha + Asadha + Sravana + Bhadra + Asvina + Kartika + Agrahayana + Pausa + Magha + Phalguna + + + + + + + + AH + + + + + + + + EEEE, 'ngày' dd MMMM 'năm' y G + + + + + 'Ngày' dd 'tháng' M 'năm' y G + + + + + dd-MM-y G + + + + + dd/MM/y G + + + + + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + Farvardin + Ordibehesht + Khordad + Tir + Mordad + Shahrivar + Mehr + Aban + Azar + Dey + Bahman + Esfand + + + + + + + + Trước R.O.C + R.O.C. + + + + + 'tháng' L + LLL + + + + + + + Thời đại + + + Năm + năm ngoái + năm nay + năm sau + + Trong {0} năm nữa + + + {0} năm trước + + + + Tháng + tháng trước + tháng này + tháng sau + + Trong {0} tháng nữa + + + {0} tháng trước + + + + Tuần + tuần trước + tuần này + tuần sau + + Trong {0} tuần nữa + + + {0} tuần trước + + + + Ngày + Hôm kia + Hôm qua + Hôm nay + Ngày mai + Ngày kia + + Trong {0} ngày nữa + + + {0} ngày trước + + + + Ngày trong tuần + + + Chủ Nhật tuần trước + Chủ Nhật tuần này + Chủ Nhật tuần sau + + + Thứ Hai tuần trước + Thứ Hai tuần này + Thứ Hai tuần sau + + + Thứ Ba tuần trước + Thứ Ba tuần này + Thứ Ba tuần sau + + + Thứ Tư tuần trước + Thứ Tư tuần này + Thứ Tư tuần sau + + + Thứ Năm tuần trước + Thứ Năm tuần này + Thứ Năm tuần sau + + + Thứ Sáu tuần trước + Thứ Sáu tuần này + Thứ Sáu tuần sau + + + Thứ Bảy tuần trước + Thứ Bảy tuần này + Thứ Bảy tuần sau + + + SA/CH + + + Giờ + + Trong {0} giờ nữa + + + {0} giờ trước + + + + Phút + + Trong {0} phút nữa + + + {0} phút trước + + + + Giây + bây giờ + + Trong {0} giây nữa + + + {0} giây trước + + + + Múi giờ + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Giờ {0} + Giờ ban ngày {0} + Giờ chuẩn {0} + {1} ({0}) + + Thành phố Không xác định + + + Dumont d’Urville + + + Saint Barthélemy + + + Atikokan + + + St. John’s + + + Khách Thập + + + Ô Lỗ Mộc Tề + + + Trùng Khánh + + + Thượng Hải + + + Cáp Nhĩ Tân + + + Curaçao + + + Praha + + + Asmara + + + Chuuk + + + Pohnpei + + + Faroe + + + + Giờ Mùa Hè Anh + + + + Nuuk + + + Ittoqqortoormiit + + + Nam Georgia + + + Hồng Kông + + + + Giờ Mùa Hè Ai-len + + + + Đảo Man + + + Kolkata + + + St. Kitts + + + Bình Nhưỡng + + + Viêng Chăn + + + St. Lucia + + + Ma Cao + + + Kathmandu + + + Mát-xcơ-va + + + St. Helena + + + São Tomé + + + Lower Prince's Quarter + + + Đài Bắc + + + Beulah, Bắc Dakota + + + New Salem, Bắc Dakota + + + Center, Bắc Dakota + + + Vincennes, Indiana + + + Petersburg, Indiana + + + Tell City, Indiana + + + Knox, Indiana + + + Winamac, Indiana + + + Marengo, Indiana + + + Vevay, Indiana + + + Monticello, Kentucky + + + St. Vincent + + + St. Thomas + + + TP Hồ Chí Minh + + + + Giờ Acre + Giờ Chuẩn Acre + Giờ Mùa Hè Acre + + + + + Giờ Afghanistan + + + + + Giờ Trung Phi + + + + + Giờ Đông Phi + + + + + Giờ Chuẩn Nam Phi + + + + + Giờ Tây Phi + Giờ Chuẩn Tây Phi + Giờ Mùa Hè Tây Phi + + + + + Giờ Alaska + Giờ Chuẩn Alaska + Giờ Mùa Hè Alaska + + + + + Giờ Almaty + Giờ Chuẩn Almaty + Giờ Mùa Hè Almaty + + + + + Giờ Amazon + Giờ Chuẩn Amazon + Giờ Mùa Hè Amazon + + + + + Giờ miền trung + Giờ chuẩn miền trung + Giờ ban ngày miền trung + + + + + Giờ miền đông + Giờ chuẩn miền đông + Giờ ban ngày miền đông + + + + + Giờ miền núi + Giờ chuẩn miền núi + Giờ ban ngày miền núi + + + + + Giờ Thái Bình Dương + Giờ chuẩn Thái Bình Dương + Giờ ban ngày Thái Bình Dương + + + + + Giờ Anadyr + Giờ Chuẩn Anadyr + Giờ mùa hè Anadyr + + + + + Giờ Aqtau + Giờ Chuẩn Aqtau + Giờ Mùa Hè Aqtau + + + + + Giờ Aqtobe + Giờ Chuẩn Aqtobe + Giờ Mùa Hè Aqtobe + + + + + Giờ Ả Rập + Giờ chuẩn Ả Rập + Giờ Mùa Hè Ả Rập + + + + + Giờ Argentina + Giờ Chuẩn Argentina + Giờ Mùa Hè Argentina + + + + + Giờ miền tây Argentina + Giờ chuẩn miền mây Argentina + Giờ mùa hè miền tây Argentina + + + + + Giờ Armenia + Giờ Chuẩn Armenia + Giờ Mùa Hè Armenia + + + + + Giờ Đại Tây Dương + Giờ Chuẩn Đại Tây Dương + Giờ Mùa hè Đại Tây Dương + + + + + Giờ Miền Trung Nước Úc + Giờ Chuẩn Miền Trung Nước Úc + Giờ Mùa Hè Miền Trung Nước Úc + + + + + Giờ Miền Trung Tây Nước Úc + Giờ Chuẩn Miền Trung Tây Nước Úc + Giờ Mùa Hè Miền Trung Tây Nước Úc + + + + + Giờ Miền Đông Nước Úc + Giờ Chuẩn Miền Đông Nước Úc + Giờ Mùa Hè Miền Đông Nước Úc + + + + + Giờ Miền Tây Nước Úc + Giờ Chuẩn Miền Tây Nước Úc + Giờ Mùa Hè Miền Tây Nước Úc + + + + + Giờ Azerbaijan + Giờ Chuẩn Azerbaijan + Giờ Mùa Hè Azerbaijan + + + + + Giờ Azores + Giờ Chuẩn Azores + Giờ Mùa Hè Azores + + + + + Giờ Bangladesh + Giờ Chuẩn Bangladesh + Giờ Mùa Hè Bangladesh + + + + + Giờ Bhutan + + + + + Giờ Bolivia + + + + + Giờ Brasilia + Giờ Chuẩn Brasilia + Giờ Mùa Hè Brasilia + + + + + Giờ Brunei Darussalam + + + + + Giờ Cape Verde + Giờ Chuẩn Cape Verde + Giờ Mùa Hè Cape Verde + + + + + Giờ Chamorro + + + + + Giờ Chatham + Giờ Chuẩn Chatham + Giờ Mùa Hè Chatham + + + + + Giờ Chile + Giờ Chuẩn Chile + Giờ Mùa Hè Chile + + + + + Giờ Trung Quốc + Giờ Chuẩn Trung Quốc + Giờ Mùa Hè Trung Quốc + + + + + Giờ Choibalsan + Giờ Chuẩn Choibalsan + Giờ Mùa Hè Choibalsan + + + + + Giờ Đảo Christmas + + + + + Giờ Quần Đảo Cocos + + + + + Giờ Colombia + Giờ Chuẩn Colombia + Giờ Mùa Hè Colombia + + + + + Giờ Quần Đảo Cook + Giờ Chuẩn Quần Đảo Cook + Giờ Nửa Mùa Hè Quần Đảo Cook + + + + + Giờ Cuba + Giờ Chuẩn Cuba + Giờ Mùa Hè Cuba + + + + + Giờ Davis + + + + + Giờ Dumont-d’Urville + + + + + Giờ Đông Timor + + + + + Giờ Đảo Phục Sinh + Giờ Chuẩn Đảo Phục Sinh + Giờ Mùa Hè Đảo Phục Sinh + + + + + Giờ Ecuador + + + + + Giờ Trung Âu + Giờ Chuẩn Trung Âu + Giờ Mùa Hè Trung Âu + + + + + Giờ Đông Âu + Giờ Chuẩn Đông Âu + Giờ Mùa Hè Đông Âu + + + + + Giờ Tây Âu + Giờ Chuẩn Tây Âu + Giờ Mùa hè Tây Âu + + + + + Giờ Quần Đảo Falkland + Giờ Chuẩn Quần Đảo Falkland + Giờ Mùa Hè Quần Đảo Falkland + + + + + Giờ Fiji + Giờ Chuẩn Fiji + Giờ Mùa Hè Fiji + + + + + Giờ Guiana thuộc Pháp + + + + + Giờ Nam Cực và Nam Nước Pháp + + + + + Giờ Galapagos + + + + + Giờ Gambier + + + + + Giờ Georgia + Giờ Chuẩn Georgia + Giờ Mùa Hè Georgia + + + + + Giờ Quần Đảo Gilbert + + + + + Giờ Trung bình Greenwich + + + + + Giờ Miền Đông Greenland + Giờ Chuẩn Miền Đông Greenland + Giờ Mùa Hè Miền Đông Greenland + + + + + Giờ Miền Tây Greenland + Giờ Chuẩn Miền Tây Greenland + Giờ Mùa Hè Miền Tây Greenland + + + + + Giờ Chuẩn Guam + + + + + Giờ Chuẩn Vùng Vịnh + + + + + Giờ Guyana + + + + + Giờ Hawaii-Aleutian + Giờ Chuẩn Hawaii-Aleutian + Giờ Mùa Hè Hawaii-Aleutian + + + + + Giờ Hồng Kông + Giờ Chuẩn Hồng Kông + Giờ Mùa Hè Hồng Kông + + + + + Giờ Hovd + Giờ Chuẩn Hovd + Giờ Mùa Hè Hovd + + + + + Giờ Chuẩn Ấn Độ + + + + + Giờ Ấn Độ Dương + + + + + Giờ Đông Dương + + + + + Giờ Miền Trung Indonesia + + + + + Giờ Miền Đông Indonesia + + + + + Giờ Miền Tây Indonesia + + + + + Giờ Iran + Giờ Chuẩn Iran + Giờ Mùa Hè Iran + + + + + Giờ Irkutsk + Giờ Chuẩn Irkutsk + Giờ Mùa Hè Irkutsk + + + + + Giờ Israel + Giờ Chuẩn Israel + Giờ Mùa Hè Israel + + + + + Giờ Nhật Bản + Giờ Chuẩn Nhật Bản + Giờ Mùa Hè Nhật Bản + + + + + Giờ Petropavlovsk-Kamchatski + Giờ chuẩn Petropavlovsk-Kamchatski + Giờ mùa hè Petropavlovsk-Kamchatski + + + + + Giờ Miền Đông Kazakhstan + + + + + Giờ Miền Tây Kazakhstan + + + + + Giờ Hàn Quốc + Giờ Chuẩn Hàn Quốc + Giờ Mùa Hè Hàn Quốc + + + + + Giờ Kosrae + + + + + Giờ Krasnoyarsk + Giờ Chuẩn Krasnoyarsk + Giờ Mùa Hè Krasnoyarsk + + + + + Giờ Kyrgystan + + + + + Giờ Lanka + + + + + Giờ Quần Đảo Line + + + + + Giờ Lord Howe + Giờ Chuẩn Lord Howe + Giờ Mùa Hè Lord Howe + + + + + Giờ Ma Cao + Giờ Chuẩn Ma Cao + Giờ Mùa Hè Ma Cao + + + + + Giờ đảo Macquarie + + + + + Giờ Magadan + Giờ Chuẩn Magadan + Giờ mùa hè Magadan + + + + + Giờ Malaysia + + + + + Giờ Maldives + + + + + Giờ Marquesas + + + + + Giờ Quần Đảo Marshall + + + + + Giờ Mauritius + Giờ Chuẩn Mauritius + Giờ Mùa Hè Mauritius + + + + + Giờ Mawson + + + + + Giờ Ulan Bator + Giờ chuẩn Ulan Bator + Giờ mùa hè Ulan Bator + + + + + Giờ Matxcơva + Giờ Chuẩn Matxcơva + Giờ Mùa Hè Matxcơva + + + + + Giờ Myanmar + + + + + Giờ Nauru + + + + + Giờ Nepal + + + + + Giờ New Caledonia + Giờ Chuẩn New Caledonia + Giờ Mùa Hè New Caledonia + + + + + Giờ New Zealand + Giờ Chuẩn New Zealand + Giờ Mùa Hè New Zealand + + + + + Giờ Newfoundland + Giờ Chuẩn Newfoundland + Giờ Mùa Hè Newfoundland + + + + + Giờ Niue + + + + + Giờ đảo Norfolk + + + + + Giờ Fernando de Noronha + Giờ Chuẩn Fernando de Noronha + Giờ Mùa Hè Fernando de Noronha + + + + + Giờ Quần Đảo Bắc Mariana + + + + + Giờ Novosibirsk + Giờ chuẩn Novosibirsk + Giờ mùa hè Novosibirsk + + + + + Giờ Omsk + Giờ chuẩn Omsk + Giờ mùa hè Omsk + + + + + Giờ Pakistan + Giờ Chuẩn Pakistan + Giờ Mùa Hè Pakistan + + + + + Giờ Palau + + + + + Giờ Papua New Guinea + + + + + Giờ Paraguay + Giờ Chuẩn Paraguay + Giờ Mùa Hè Paraguay + + + + + Giờ Peru + Giờ Chuẩn Peru + Giờ Mùa Hè Peru + + + + + Giờ Philippin + Giờ Chuẩn Philippin + Giờ Mùa Hè Philippin + + + + + Giờ Quần Đảo Phoenix + + + + + Giờ Saint Pierre và Miquelon + Giờ Chuẩn Saint Pierre và Miquelon + Giờ Mùa Hè Saint Pierre và Miquelon + + + + + Giờ Pitcairn + + + + + Giờ Ponape + + + + + Giờ Qyzylorda + Giờ Chuẩn Qyzylorda + Giờ Mùa Hè Qyzylorda + + + + + Giờ Reunion + + + + + Giờ Rothera + + + + + Giờ Sakhalin + Giờ Chuẩn Sakhalin + Giờ mùa hè Sakhalin + + + + + Giờ Samara + Giờ Chuẩn Samara + Giờ mùa hè Samara + + + + + Giờ Samoa + Giờ Chuẩn Samoa + Giờ ban ngày Samoa + + + + + Giờ Seychelles + + + + + Giờ Singapore + + + + + Giờ Quần Đảo Solomon + + + + + Giờ Nam Georgia + + + + + Giờ Suriname + + + + + Giờ Syowa + + + + + Giờ Tahiti + + + + + Giờ Đài Bắc + Giờ Chuẩn Đài Bắc + Giờ Mùa Hè Đài Bắc + + + + + Giờ Tajikistan + + + + + Giờ Tokelau + + + + + Giờ Tonga + Giờ Chuẩn Tonga + Giờ Mùa Hè Tonga + + + + + Giờ Chuuk + + + + + Giờ Turkmenistan + Giờ Chuẩn Turkmenistan + Giờ Mùa Hè Turkmenistan + + + + + Giờ Tuvalu + + + + + Giờ Uruguay + Giờ Chuẩn Uruguay + Giờ Mùa Hè Uruguay + + + + + Giờ Uzbekistan + Giờ Chuẩn Uzbekistan + Giờ Mùa Hè Uzbekistan + + + + + Giờ Vanuatu + Giờ Chuẩn Vanuatu + Giờ Mùa Hè Vanuatu + + + + + Giờ Venezuela + + + + + Giờ Vladivostok + Giờ Chuẩn Vladivostok + Giờ mùa hè Vladivostok + + + + + Giờ Volgograd + Giờ Chuẩn Volgograd + Giờ Mùa Hè Volgograd + + + + + Giờ Vostok + + + + + Giờ Đảo Wake + + + + + Giờ Wallis và Futuna + + + + + Giờ Yakutsk + Giờ Chuẩn Yakutsk + Giờ mùa hè Yakutsk + + + + + Giờ Yekaterinburg + Giờ Chuẩn Yekaterinburg + Giờ mùa hè Yekaterinburg + + + + + + + , + . + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0 nghìn + 00 nghìn + 000 nghìn + 0 triệu + 00 triệu + 000 triệu + 0 tỷ + 00 tỷ + 000 tỷ + 0 nghìn tỷ + 00 nghìn tỷ + 000 nghìn tỷ + + + + + 0 N + 00 N + 000 N + 0 Tr + 00 Tr + 000 Tr + 0 T + 00 T + 000 T + 0 NT + 00 NT + 000 NT + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + {0} {1} + + + + Đồng Peseta của Andora + + + Dirham UAE + dirham UAE + + + Đồng Afghani của Afghanistan (1927–2002) + + + Afghani Afghanistan + afghani Afghanistan + + + Lek Albania + lek Albania + + + Dram Armenia + dram Armenia + + + Guilder Tây Ấn Hà Lan + guilder Tây Ấn Hà Lan + + + Kwanza Angola + kwanza Angola + + + Đồng Kwanza của Angola (1977–1991) + + + Đồng Kwanza Mới của Angola (1990–2000) + + + Đồng Kwanza Điều chỉnh lại của Angola (1995–1999) + + + Đồng Austral của Argentina + + + Đồng Peso Ley của Argentina (1970–1983) + + + Đồng Peso Argentina (1881–1970) + + + Đồng Peso Argentina (1983–1985) + + + Peso Argentina + peso Argentina + + + Đồng Schiling Áo + + + Đô la Australia + đô la Australia + AU$ + + + Florin Aruba + florin Aruba + + + Đồng Manat của Azerbaijan (1993–2006) + + + Manat Azerbaijan + manat Azerbaijan + + + Đồng Dinar của Bosnia-Herzegovina (1992–1994) + + + Mark Bosnia-Herzegovina có thể chuyển đổi + mark Bosnia-Herzegovina có thể chuyển đổi + + + Đồng Dinar Mới của Bosnia-Herzegovina (1994–1997) + + + Đô la Barbados + đô la Barbados + + + Taka Bangladesh + taka Bangladesh + + + Đồng Franc Bỉ (có thể chuyển đổi) + + + Đồng Franc Bỉ + + + Đồng Franc Bỉ (tài chính) + + + Đồng Lev Xu của Bun-ga-ri + + + Đồng Lev Xã hội chủ nghĩa của Bun-ga-ri + + + Lev Bulgaria + lev Bulgaria + + + Đồng Lev của Bun-ga-ri (1879–1952) + + + Dinar Bahrain + dinar Bahrain + + + Franc Burundi + franc Burundi + + + Đô la Bermuda + đô la Bermuda + + + Đô la Brunei + đô la Brunei + + + Boliviano Bolivia + boliviano Bolivia + + + Đồng Boliviano của Bolivia (1863–1963) + + + Đồng Peso Bolivia + + + Đồng Mvdol Bolivia + + + Đồng Cruzerio Mới của Braxin (1967–1986) + + + Đồng Cruzado của Braxin (1986–1989) + + + Đồng Cruzerio của Braxin (1990–1993) + + + Real Braxin + real Braxin + R$ + + + Đồng Cruzado Mới của Braxin (1989–1990) + + + Đồng Cruzeiro của Braxin (1993–1994) + + + Đồng Cruzeiro của Braxin (1942–1967) + + + Đô la Bahamas + đô la Bahamas + + + Ngultrum Bhutan + ngultrum Bhutan + + + Đồng Kyat Miến Điện + + + Pula Botswana + pula Botswana + + + Đồng Rúp Mới của Belarus (1994–1999) + + + Rúp Belarus + rúp Belarus + + + Đô la Belize + đô la Belize + + + Đô la Canada + đô la Canada + CA$ + + + Franc Congo + franc Congo + + + Đồng Euro WIR + + + Franc Thụy sĩ + franc Thụy sĩ + + + Đồng France WIR + + + Đồng Escudo của Chile + + + Đơn vị Kế toán của Chile (UF) + + + Peso Chile + peso Chile + + + Nhân dân tệ + nhân dân tệ + CN¥ + + + Peso Colombia + peso Colombia + + + Đơn vị Giá trị Thực của Colombia + + + Colón Costa Rica + colón Costa Rica + + + Đồng Dinar của Serbia (2002–2006) + + + Đồng Koruna Xu của Czechoslovakia + + + Peso Cuba có thể chuyển đổi + peso Cuba có thể chuyển đổi + + + Peso Cuba + peso Cuba + + + Escudo Cape Verde + escudo Cape Verde + + + Đồng Bảng Síp + + + Koruna Cộng hòa Séc + koruna Cộng hòa Séc + + + Đồng Mark Đông Đức + + + Đồng Mark Đức + + + Franc Djibouti + franc Djibouti + + + Krone Đan Mạch + krone Đan Mạch + + + Peso Dominica + peso Dominica + + + Dinar Algeria + dinar Algeria + + + Đồng Scure Ecuador + + + Đơn vị Giá trị Không đổi của Ecuador + + + Crun Extônia + + + Bảng Ai Cập + bảng Ai Cập + + + Nakfa Eritrea + nakfa Eritrea + + + Đồng Peseta Tây Ban Nha (Tài khoản) + + + Đồng Peseta Tây Ban Nha (tài khoản có thể chuyển đổi) + + + Đồng Peseta Tây Ban Nha + + + Birr Ethiopia + birr Ethiopia + + + Euro + euro + + + + Đồng Markka Phần Lan + + + Đô la Fiji + đô la Fiji + + + Bảng Quần đảo Falkland + bảng Quần đảo Falkland + + + Franc Pháp + + + Bảng Anh + bảng Anh + £ + + + Đồng Kupon Larit của Georgia + + + Lari Gruzia + lari Gruzia + + + Cedi Ghana (1979–2007) + + + Cedi Ghana + cedi Ghana + + + Bảng Gibraltar + bảng Gibraltar + + + Dalasi Gambia + dalasi Gambia + + + Franc Guinea + franc Guinea + + + Syli Guinea + + + Đồng Ekwele của Guinea Xích Đạo + + + Drachma Hy Lạp + + + Quetzal Guatemala + quetzal Guatemala + + + Đồng Guinea Escudo Bồ Đào Nha + + + Peso Guinea-Bissau + + + Đô la Guyana + đô la Guyana + + + Đô la Hồng Kông + đô la Hồng Kông + HK$ + + + Lempira Honduras + lempira Honduras + + + Đồng Dinar Croatia + + + Kuna Croatia + kuna Croatia + + + Gourde Haiti + gourde Haiti + + + Forint Hungaria + forint Hungaria + + + Rupiah Indonesia + rupiah Indonesia + + + Pao Ai-len + + + Pao Ixraen + + + Sheqel Israel mới + sheqel Israel mới + + + + Rupee Ấn Độ + rupee Ấn Độ + + + + Dinar I-rắc + dinar I-rắc + + + Rial Iran + rial Iran + + + Króna Iceland + króna Iceland + + + Lia Ý + + + Đô la Jamaica + đô la Jamaica + + + Dinar Jordan + dinar Jordan + + + Yên Nhật + yên Nhật + JP¥ + + + Shilling Kenya + shilling Kenya + + + Som Kyrgyzstan + som Kyrgyzstan + + + Riel Campuchia + riel Campuchia + + + Franc Comoros + franc Comoros + + + Won Triều Tiên + won Triều Tiên + + + Đồng Hwan Hàn Quốc (1953–1962) + + + Đồng Won Hàn Quốc (1945–1953) + + + Won Hàn Quốc + won Hàn Quốc + + + + Dinar Kuwait + dinar Kuwait + + + Đô la Quần đảo Cayman + đô la Quần đảo Cayman + + + Tenge Kazakhstan + tenge Kazakhstan + + + Kip Lào + kip Lào + + + Bảng Li-băng + bảng Li-băng + + + Rupee Sri Lanka + rupee Sri Lanka + + + Đô la Liberia + đô la Liberia + + + Đồng loti của Lesotho + + + Litas Lít-va + litas Lít-va + + + Đồng Talonas Litva + + + Đồng Franc Luxembourg có thể chuyển đổi + + + Đồng Franc Luxembourg + + + Đồng Franc Luxembourg tài chính + + + Lats Lít-va + lats Lít-va + + + Đồng Rúp Latvia + + + Dinar Libi + dinar Libi + + + Dirham Ma-rốc + dirham Ma-rốc + + + Đồng Franc Ma-rốc + + + Đồng Franc Monegasque + + + Đồng Cupon Moldova + + + Leu Moldova + leu Moldova + + + Ariary Malagasy + ariary Malagasy + + + Đồng Franc Magalasy + + + Denar Macedonia + denar Macedonia + + + Đồng Denar Macedonia (1992–1993) + + + Đồng Franc Mali + + + Kyat Myanma + kyat Myanma + + + Tugrik Mông Cổ + tugrik Mông Cổ + + + Pataca Ma Cao + pataca Ma Cao + + + Ouguiya Mauritania + ouguiya Mauritania + + + Lia xứ Man-tơ + + + Đồng Bảng Malta + + + Rupee Mauritius + rupee Mauritius + + + Rufiyaa Maldives + rufiyaa Maldives + + + Kwacha Malawi + kwacha Malawi + + + Peso Mexico + peso Mexico + MX$ + + + Đồng Peso Bạc Mê-hi-cô (1861–1992) + + + Đơn vị Đầu tư Mê-hi-cô + + + Ringgit Malaysia + ringgit Malaysia + + + Đồng Escudo Mozambique + + + Đồng Metical Mozambique (1980–2006) + + + Metical Mozambique + metical Mozambique + + + Đô la Namibia + đô la Namibia + + + Naira Nigeria + naira Nigeria + + + Đồng Córdoba Nicaragua (1988–1991) + + + Córdoba Nicaragua + córdoba Nicaragua + + + Đồng Guilder Hà Lan + + + Krone Na Uy + krone Na Uy + + + Rupee Nepal + rupee Nepal + + + Đô la New Zealand + đô la New Zealand + NZ$ + + + Rial Oman + rial Oman + + + Balboa Panama + balboa Panama + + + Đồng Inti Peru + + + Nuevo Sol Peru + nuevo sol Peru + + + Đồng Sol Peru (1863–1965) + + + Kina Papua New Guinean + kina Papua New Guinean + + + Peso Philipin + peso Philipin + + + Rupee Pakistan + rupee Pakistan + + + Zloty Ba Lan + Zloty Ba Lan + + + Đồng Zloty Ba Lan (1950–1995) + + + Đồng Escudo Bồ Đào Nha + + + Guarani Paraguay + guarani Paraguay + + + Rial Qatar + rial Qatar + + + Đồng Đô la Rhode + + + Đồng Leu Rumani (1952–2006) + + + Leu Romania + leu Romania + + + Dinar Serbia + dinar Serbia + + + Rúp Nga + Rúp Nga + + + Đồng Rúp Nga (1991–1998) + + + Franc Rwanda + franc Rwanda + + + Riyal Ả Rập Xê-út + riyal Ả Rập Xê-út + + + Đô la quần đảo Solomon + đô la quần đảo Solomon + + + Rupee Seychelles + rupee Seychelles + + + Đồng Dinar Sudan (1992–2007) + + + Bảng Sudan + bảng Sudan + + + Đồng Bảng Sudan (1957–1998) + + + Krona Thụy Điển + krona Thụy Điển + + + Đô la Singapore + đô la Singapore + + + Bảng Saint Helena + bảng Saint Helena + + + Tôla Xlôvênia + + + Cuaron Xlôvác + + + Leone Sierra Leone + leone Sierra Leone + + + Schilling Somali + schilling Somali + + + Đô la Suriname + đô la Suriname + + + Đồng Guilder Surinam + + + Bảng Nam Sudan + bảng Nam Sudan + + + Dobra São Tomé và Príncipe + dobra São Tomé và Príncipe + + + Đồng Rúp Sô viết + + + Đồng Colón Salvador + + + Bảng Syria + bảng Syria + + + Lilangeni Swaziland + emalangeni Swaziland + + + Bạt Thái Lan + bạt Thái Lan + ฿ + + + Đồng Rúp Tajikistan + + + Somoni Tajikistan + somoni Tajikistan + + + Đồng Manat Turkmenistan (1993–2009) + + + Manat Turkmenistan + manat Turkmenistan + + + Dinar Tunisia + dinar Tunisia + + + Paʻanga Tonga + paʻanga Tonga + + + Đồng Escudo Timor + + + Lia Thổ Nhĩ Kỳ (1922–2005) + lia Thổ Nhĩ Kỳ (1922–2005) + + + Lia Thổ Nhĩ Kỳ + lia Thổ Nhĩ Kỳ + + + Đô la Trinidad và Tobago + đô la Trinidad và Tobago + + + Đô la Đài Loan mới + đô la Đài Loan mới + NT$ + + + Shilling Tanzania + shilling Tanzania + + + Hryvnia Ucraina + hryvnia Ucraina + + + Đồng Karbovanets Ucraina + + + Đồng Shilling Uganda (1966–1987) + + + Shilling Uganda + shilling Uganda + + + Đô la Mỹ + đô la Mỹ + US$ + + + Đô la Mỹ (Ngày tiếp theo) + + + Đô la Mỹ (Cùng ngày) + + + Đồng Peso Uruguay (Đơn vị Theo chỉ số) + + + Đồng Peso Uruguay (1975–1993) + + + Peso Uruguay + peso Uruguay + + + Som Uzbekistan + som Uzbekistan + + + Đồng bolívar của Venezuela (1871–2008) + + + Bolívar Venezuela + bolívar Venezuela + + + Đồng Việt Nam + đồng Việt Nam + + + + Đồng Việt Nam (1978–1985) + + + Vatu Vanuatu + vatu Vanuatu + + + Tala Samoa + tala Samoa + + + CFA Franc BEAC + CFA Franc BEAC + FCFA + + + Bạc + + + Vàng + + + Đơn vị Tổng hợp Châu Âu + + + Đơn vị Tiền tệ Châu Âu + + + Đơn vị Kế toán Châu Âu (XBC) + + + Đơn vị Kế toán Châu Âu (XBD) + + + Đô la Đông Caribê + đô la Đông Caribê + EC$ + + + Quyền Rút vốn Đặc biệt + + + Đơn vị Tiền Châu Âu + + + Đồng France Pháp Vàng + + + Đồng UIC-Franc Pháp + + + Franc CFA BCEAO + franc CFA BCEAO + CFA + + + Paladi + + + Franc CFP + franc CFP + CFPF + + + Bạch kim + + + Quỹ RINET + + + Mã Tiền tệ Kiểm tra + + + Tiền tệ chưa biết + (tiền tệ chưa biết) + + + Đồng Dinar Yemen + + + Rial Yemen + rial Yemen + + + Đồng Dinar Nam Tư Xu (1966–1990) + + + Đồng Dinar Nam Tư Mới (1994–2002) + + + Đồng Dinar Nam Tư Có thể chuyển đổi (1990–1992) + + + Đồng Dinar Nam Tư Tái cơ cấu (1992–1993) + + + Đồng Rand Nam Phi (tài chính) + + + Rand Nam Phi + rand Nam Phi + + + Đồng kwacha của Zambia (1968–2012) + + + Kwacha Zambia + kwacha Zambia + + + Đồng Zaire Mới (1993–1998) + + + Đồng Zaire (1971–1993) + + + Đồng Đô la Zimbabwe (1980–2008) + + + Đồng Đô la Zimbabwe (2009) + + + Đồng Đô la Zimbabwe (2008) + + + + {0}+ + {0}-{1} + + + + + + {0}/{1} + + + {0} lực g + + + {0} phút + + + {0} giây + + + {0} độ + + + {0} mẫu + + + {0} héc-ta + + + {0} feet vuông + + + {0} kilômét vuông + + + {0} mét vuông + + + {0} dặm vuông + + + {0} ngày + + + {0} giờ + + + {0} mili giây + + + {0} phút + + + {0} tháng + + + {0} giây + + + {0} tuần + + + {0} năm + + + {0} xentimét + + + {0} feet + + + {0} inch + + + {0} kilômét + + + {0} năm ánh sáng + + + {0} mét + + + {0} dặm + + + {0} milimét + + + {0} picômét + + + {0} yard + + + {0} gam + + + {0} kilôgam + + + {0} ao-xơ + + + {0} pao + + + {0} mã lực + + + {0} kilôoát + + + {0} oát + + + {0} héctô pascal + + + {0} inch thủy ngân + + + {0} millibar + + + {0} kilômét/giờ + + + {0} mét/giây + + + {0} dặm/giờ + + + {0} độ C + + + {0} độ F + + + {0} kilômét khối + + + {0} dặm khối + + + {0} lít + + + + + {0}/{1} + + + {0} G + + + {0} ph + + + {0} gi + + + {0} độ + + + {0} mẫu + + + {0} ha + + + {0} feet vuông + + + {0} km² + + + {0} m² + + + {0} dặm vuông + + + {0} ngày + + + {0} g + + + {0} ms + + + {0} ph + + + {0} tháng + + + {0} giây + + + {0} tuần + + + {0} năm + + + {0} cm + + + {0} ft + + + {0} in + + + {0} km + + + {0} ly + + + {0} m + + + {0} mi + + + {0} mm + + + {0} pm + + + {0} yd + + + {0} g + + + {0} kg + + + {0} oz + + + {0} lb + + + {0} hp + + + {0} kW + + + {0} W + + + {0} hPa + + + {0} inHg + + + {0} mb + + + {0} km/h + + + {0} m/s + + + {0} mph + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0} l + + + + + {0}/{1} + + + {0}G + + + {0}′ + + + {0}″ + + + {0}° + + + {0} mẫu + + + {0}ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0}ng + + + {0}g + + + {0}ms + + + {0}ph + + + {0}th + + + {0}gi + + + {0}t + + + {0} n + + + {0}cm + + + {0}' + + + {0}" + + + {0}km + + + {0}ly + + + {0}m + + + {0}mi + + + {0}mm + + + {0}pm + + + {0}yd + + + {0}g + + + {0}kg + + + {0}oz + + + {0}lb + + + {0}hp + + + {0}kW + + + {0}W + + + {0}hPa + + + {0}" Hg + + + {0}mb + + + {0}km/h + + + {0}m/s + + + {0}mph + + + {0}° + + + {0}°F + + + {0}km³ + + + {0}mi³ + + + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0} và {1} + {0} và {1} + + + {0}, {1} + {0}, {1} + {0} và {1} + {0} và {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + {0}, {1} + {0}, {1} + {0}, {1} + {0}, {1} + + + + + yes:c + no:k + + + + diff --git a/library/Zend/Locale/Data/vi_VN.xml b/library/Zend/Locale/Data/vi_VN.xml new file mode 100755 index 000000000..338126cd5 --- /dev/null +++ b/library/Zend/Locale/Data/vi_VN.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/vo.xml b/library/Zend/Locale/Data/vo.xml new file mode 100755 index 000000000..72e5f7e75 --- /dev/null +++ b/library/Zend/Locale/Data/vo.xml @@ -0,0 +1,312 @@ + + + + + + + + + + + + Volapük + + + + [a ä b c d e f g h i j k l m n o ö p q r s š t u ü v x y z] + [q w] + [A Ä B C D E F G H I J K L M N O Ö P R S T U Ü V X Y Z] + [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” « » ( ) \[ \] \{ \} § @ * / \& #] + {0}… + … {0} + {0} … {1} + + + + + + + + + + + + + + G y MMMMa 'd'. d'id' + + + + + G y MMMM d + + + + + G y MMM. d + + + + + GGGGG y-MM-dd + + + + + + + + + jan + feb + mäz + prl + may + yun + yul + gst + set + ton + nov + dek + + + janul + febul + mäzil + prilul + mayul + yunul + yulul + gustul + setul + tobul + novul + dekul + + + + + jan + feb + mäz + prl + may + yun + yul + gst + set + tob + nov + Dek + + + J + F + M + P + M + Y + Y + G + S + T + N + D + + + + + + + su. + mu. + tu. + ve. + dö. + fr. + zä. + + + sudel + mudel + tudel + vedel + dödel + fridel + zädel + + + + + Su + Mu + Tu + Ve + + Fr + + + + S + M + T + V + D + F + Z + + + + + + + Yf1 + Yf2 + Yf3 + Yf4 + + + 1 + 2 + 3 + 4 + + + 1id yelafoldil + 2id yelafoldil + 3id yelafoldil + 4id yelafoldil + + + + + + + poszedelo + posz. + gödo + soaro + büzedelo + neito + zedelo + büz. + + + + + + b. t. kr. + p. t. kr. + + + b. t. kr. + p. t. kr. + + + + + + y MMMMa 'd'. d'id' + + + + + y MMMM d + + + + + y MMM. d + + + + + y-MM-dd + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + + + Epoche + + + yel + äyelo + ayelo + oyelo + + + mul + ämulo + amulo + omulo + + + vig + ävigo + avigo + ovigo + + + Tag + edelo + ädelo + adelo + odelo + udelo + + + vodabel + + + delalaf + + + düp + + + minut + + + sekun + + + zon + + + + + + si:s + no:n + + + diff --git a/library/Zend/Locale/Data/vo_001.xml b/library/Zend/Locale/Data/vo_001.xml new file mode 100755 index 000000000..fa07476f2 --- /dev/null +++ b/library/Zend/Locale/Data/vo_001.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/vun.xml b/library/Zend/Locale/Data/vun.xml new file mode 100755 index 000000000..6ca431991 --- /dev/null +++ b/library/Zend/Locale/Data/vun.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + Kiakanyi + Kiamharyi + Kyiarabu + Kyibelarusi + Kyibulgaryia + Kyibangla + Kyichecki + Kyijerumani + Kyigiriki + Kyingereza + Kyihispania + Kyiajemi + Kyifaransa + Kyihausa + Kyihindi + Kyihungari + Kyiindonesia + Kyiigbo + Kyiitaliano + Kyijapani + Kyijava + Kyikambodia + Kyikorea + Kyimalesia + Kyiburma + Kyinepali + Kyiholanzi + Kyipunjabi + Kyipolandi + Kyireno + Kyiromania + Kyirusi + Kyinyarwanda + Kyisomalyi + Kyiswidi + Kyitamil + Kyitailandi + Kyiturukyi + Kyiukrania + Kyiurdu + Kyivietinamu + Kyivunjo + Kyiyoruba + Kyichina + Kyizulu + + + Andora + Falme za Kiarabu + Afuganistani + Antigua na Barbuda + Anguilla + Albania + Armenia + Antili za Uholanzi + Angola + Ajentina + Samoa ya Marekani + Austria + Australia + Aruba + Azabajani + Bosnia na Hezegovina + Babadosi + Bangladeshi + Ubelgiji + Bukinafaso + Bulgaria + Bahareni + Burundi + Benini + Bermuda + Brunei + Bolivia + Brazili + Bahama + Butani + Botswana + Belarusi + Belize + Kanada + Jamhuri ya Kidemokrasia ya Kongo + Jamhuri ya Afrika ya Kati + Kongo + Uswisi + Kodivaa + Visiwa vya Cook + Chile + Kameruni + China + Kolombia + Kostarika + Kuba + Kepuvede + Kuprosi + Jamhuri ya Cheki + Ujerumani + Jibuti + Denmaki + Dominika + Jamhuri ya Dominika + Aljeria + Ekwado + Estonia + Misri + Eritrea + Hispania + Uhabeshi + Ufini + Fiji + Visiwa vya Falkland + Mikronesia + Ufaransa + Gaboni + Uingereza + Grenada + Jojia + Gwiyana ya Ufaransa + Ghana + Jibralta + Grinlandi + Gambia + Gine + Gwadelupe + Ginekweta + Ugiriki + Gwatemala + Gwam + Ginebisau + Guyana + Hondurasi + Korasia + Haiti + Hungaria + Indonesia + Ayalandi + Israeli + India + Eneo la Uingereza katika Bahari Hindi + Iraki + Uajemi + Aislandi + Italia + Jamaika + Yordani + Japani + Kenya + Kirigizistani + Kambodia + Kiribati + Komoro + Santakitzi na Nevis + Korea Kaskazini + Korea Kusini + Kuwaiti + Visiwa vya Kayman + Kazakistani + Laosi + Lebanoni + Santalusia + Lishenteni + Sirilanka + Liberia + Lesoto + Litwania + Lasembagi + Lativia + Libya + Moroko + Monako + Moldova + Bukini + Visiwa vya Marshal + Masedonia + Mali + Myama + Mongolia + Visiwa vya Mariana vya Kaskazini + Martiniki + Moritania + Montserrati + Malta + Morisi + Modivu + Malawi + Meksiko + Malesia + Msumbiji + Namibia + Nyukaledonia + Nijeri + Kisiwa cha Norfok + Nijeria + Nikaragwa + Uholanzi + Norwe + Nepali + Nauru + Niue + Nyuzilandi + Omani + Panama + Peru + Polinesia ya Ufaransa + Papua + Filipino + Pakistani + Polandi + Santapieri na Mikeloni + Pitkairni + Pwetoriko + Ukingo wa Magharibi na Ukanda wa Gaza wa Palestina + Ureno + Palau + Paragwai + Katari + Riyunioni + Romania + Urusi + Rwanda + Saudi + Visiwa vya Solomon + Shelisheli + Sudani + Uswidi + Singapoo + Santahelena + Slovenia + Slovakia + Siera Leoni + Samarino + Senegali + Somalia + Surinamu + Sao Tome na Principe + Elsavado + Siria + Uswazi + Visiwa vya Turki na Kaiko + Chadi + Togo + Tailandi + Tajikistani + Tokelau + Timori ya Mashariki + Turukimenistani + Tunisia + Tonga + Uturuki + Trinidad na Tobago + Tuvalu + Taiwani + Tanzania + Ukraini + Uganda + Marekani + Urugwai + Uzibekistani + Vatikani + Santavisenti na Grenadini + Venezuela + Visiwa vya Virgin vya Uingereza + Visiwa vya Virgin vya Marekani + Vietinamu + Vanuatu + Walis na Futuna + Samoa + Yemeni + Mayotte + Afrika Kusini + Zambia + Zimbabwe + + + + [a b c d e f g h i j k l m n o p r s t u v w y z] + [q x] + [A B C D E F G H I J K L M N O P R S T U V W Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mac + Apr + Mei + Jun + Jul + Ago + Sep + Okt + Nov + Des + + + Januari + Februari + Machi + Aprilyi + Mei + Junyi + Julyai + Agusti + Septemba + Oktoba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Jpi + Jtt + Jnn + Jtn + Alh + Iju + Jmo + + + Jumapilyi + Jumatatuu + Jumanne + Jumatanu + Alhamisi + Ijumaa + Jumamosi + + + + + J + J + J + J + A + I + J + + + + + + + R1 + R2 + R3 + R4 + + + Robo 1 + Robo 2 + Robo 3 + Robo 4 + + + + + + + utuko + kyiukonyi + + + + + + Kabla ya Kristu + Baada ya Kristu + + + KK + BK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Kacha + + + Maka + + + Mori + + + Wiikyi + + + Mfiri + Ukou + Inu + Ngama + + + Mfiri o siku + + + Saa + + + Dakyika + + + Sekunde + + + Mfiri o saa + + + + + + + + ¤#,##0.00 + + + + + + Dirham ya Falme za Kiarabu + + + Kwanza ya Angola + + + Dola ya Australia + + + Dinari ya Bahareni + + + Faranga ya Burundi + + + Pula ya Botswana + + + Dola ya Kanada + + + Faranga ya Kongo + + + Faranga ya Uswisi + + + Yuan Renminbi ya China + + + Eskudo ya Kepuvede + + + Faranga ya Jibuti + + + Dinari ya Aljeria + + + Pauni ya Misri + + + Nakfa ya Eritrea + + + Bir ya Uhabeshi + + + Yuro + + + Pauni ya Uingereza + + + Sedi ya Ghana + + + Dalasi ya Gambia + + + Faranga ya Gine + + + Rupia ya India + + + Sarafu ya Kijapani + + + Shilingi ya Kenya + + + Faranga ya Komoro + + + Dola ya Liberia + + + Loti ya Lesoto + + + Dinari ya Libya + + + Dirham ya Moroko + + + Faranga ya Bukini + + + Ugwiya ya Moritania + + + Rupia ya Morisi + + + Kwacha ya Malawi + + + Metikali ya Msumbiji + + + Dola ya Namibia + + + Naira ya Nijeria + + + Faranga ya Rwanda + + + Riyal ya Saudia + + + Rupia ya Shelisheli + + + Dinari ya Sudani + + + Pauni ya Sudani + + + Pauni ya Santahelena + + + Leoni + + + Shilingi ya Somalia + + + Dobra ya Sao Tome na Principe + + + Lilangeni + + + Dinari ya Tunisia + + + Shilingi ya Tanzania + TSh + + + Shilingi ya Uganda + + + Dola ya Marekani + + + Faranga CFA BEAC + + + Faranga CFA BCEAO + + + Randi ya Afrika Kusini + + + Kwacha ya Zambia (1968–2012) + + + Kwacha ya Zambia + + + Dola ya Zimbabwe + + + + + + Haya:H + Ote:O + + + + diff --git a/library/Zend/Locale/Data/vun_TZ.xml b/library/Zend/Locale/Data/vun_TZ.xml new file mode 100755 index 000000000..efd7bbf60 --- /dev/null +++ b/library/Zend/Locale/Data/vun_TZ.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/wae.xml b/library/Zend/Locale/Data/wae.xml new file mode 100755 index 000000000..5cccff981 --- /dev/null +++ b/library/Zend/Locale/Data/wae.xml @@ -0,0 +1,1340 @@ + + + + + + + + + + + + Abčasiš + Afrikáns + Amhariš + Arabiš + Assamesiš + Aymara + Serbaidšaniš + Wísrussiš + Bulgariš + Bengališ + Tibetiš + Bosniš + Katalaniš + Tšečiš + Walisiš + Däniš + Titš + Öštričišes Titš + Schwizer Hočtitš + Malediwiš + Butaniš + Efik + Gričiš + Engliš + Auštrališes Engliš + Kanadišes Engliš + Britišes Engliš + Amerikanišes Engliš + Schpaniš + Latiamerikanišes Schpaniš + Iberišes Schpaniš + Estniš + Baskiš + Persiš + Finiš + Filipiniš + Fidšianiš + Wälš + Kanadišes Wälš + Schwizer Wälš + Iriš + Galiziš + Guarani + Gujarati + Hausa + Hawaíaniš + Hebräiš + Hindi + Kroatiš + Haitianiš + Ungariš + Armeniš + Indonesiš + Igbo + Iisländiš + Italieniš + Japaniš + Georgiš + Kazačiš + Kambodšaniš + Kannada + Koreaniš + Kašmiriš + Kurdiš + Kirgisiš + Latiniš + Luxemburgiš + Lingala + Laotiš + Litauiš + Lettiš + Malagási + Maori + Mazedoniš + Malayalam + Mongoliš + Marathi + Malaíš + Maltesiš + Burmesiš + Norwegiš Bokmål + Nordndebele + Nepalesiš + Holändiš + Flämiš + Norwegiš Nynorsk + Nordsotho + Nyanja + Oriya + Osétiš + Pandšabiš + Polniš + Paštu + Portugisiš + Brasilianišes Portugisiš + Iberišes Portugisiš + Quečua + Rätromaniš + Rundi + Rumäniš + Rusiš + Ruandiš + Sanskrit + Jakutiš + Sindhi + Nordsamiš + Sango + Singalesiš + Slowakiš + Sloweniš + Samoaniš + Shona + Somališ + Albaniš + Serbiš + Swazi + Südsotho + Sundanesiš + Schwediš + Suaheliš + Tamiliš + Telugu + Tetum + Tadšikiš + Thailändiš + Tigrinja + Turkmeniš + Tswana + Tonga + Niwmelanesiš + Türkiš + Tsonga + Taitiš + Uiguriš + Ukrainiš + Unbekannti Schprač + Urdu + Usbekiš + Venda + Vietnamesiš + Walser + Wolof + Xhosa + Yoruba + Chinesiš + Vereifačts Chinesiš + Traditionells Chinesiš + Zulu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wäld + Afrika + Nordamerika + Südamerika + Ozeanie + Weštafrika + Zentralamerika + Oštafrika + Nordafrika + Mittelafrika + Südličs Afrika + Amerikaniš Kontinänt + Nördličs Amerika + Karibik + Oštasie + Südasie + Südoštasie + Südeuropa + Auštralie und Niwséland + Melanesie + Mikronesišes Inselgebiet + Polinesie + Asie + Zentralasie + Weštasie + Europa + Ošteuropa + Nordeuropa + Wešteuropa + Latíamerika + Himmelfártsinsla + Andorra + Vereinigti Arabiše Emirat + Afganištan + Antigua und Barbuda + Anguilla + Albanie + Armenie + Holändiši Antillä + Angola + Antarktis + Argentinie + Amerikaniš Samoa + Öštrič + Australie + Aruba + Alandinslä + Aserbaidšan + Bosnie und Herzegovina + Barbados + Bangladeš + Belgie + Burkina Faso + Bulgarie + Bačrain + Burundi + Benin + St. Bartholomäus-Insla + Bermuda + Brunei + Boliwie + Brasilie + Bahamas + Bhutan + Bouvetinsla + Botswana + Wísrussland + Belize + Kanada + Kokosinslä + Kongo-Kinshasa + Kongo (Demokratiši Rebublik) + Zentralafrikaniši Rebublik + Kongo Brazzaville + Kongo (Rebublik) + Schwiz + Elfebeiküšta + Côte d'Ivoire + Cookinslä + Tšile + Kamerun + China + Kolumbie + Clipperton Insla + Costa Rica + Kuba + Kap Verde + Wienäčtsinslä + Zypre + Tšečie + Titšland + Diego Garcia + Dšibuti + Dänemark + Doninica + Dominikaniši Rebublik + Algerie + Ceuta und Melilla + Ecuador + Eštland + Egypte + Weštsahara + Eritrea + Schpanie + Ethiopie + Europäiši Unio + Finnland + Fidši + Falklandinslä + Falklandinslä (Malwine) + Mikronesie + Färöe + Frankrič + Gabon + England + Grenada + Georgie + Französiš Guiana + Guernsey + Gana + Gibraltar + Grönland + Gambia + Ginea + Guadeloupe + Equatorialginea + Gričeland + Südgeorgie und d'südliče Senwičinslä + Guatemala + Guam + Ginea Bissau + Guyana + Sonderverwaltigszona Hongkong + Hongkong + Heard- und McDonald-Inslä + Honduras + Kroatie + Haiti + Ungare + Kanariše Inslä + Indonesie + Irland + Israel + Isle of Man + Indie + Britišes Territorium em indiše Ozean + Irak + Iran + Island + Italie + Jersey + Jamaika + Jordanie + Japan + Kenya + Kirgištan + Kambodša + Kiribati + Komore + St. Kitts und Nevis + Nordkorea + Südkorea + Kuweit + Kaimaninslä + Kasačstan + Laos + Libanon + St. Lucia + Liečteštei + Sri Lanka + Liberia + Lesotho + Litaue + Luxeburg + Lettland + Lübie + Maroko + Monago + Moldau + Montenegro + St. Martin + Madagaskar + Maršalinslä + Mazedonie + Mazedonie (EJR) + Mali + Burma + Mongolei + Sonderverwaltigszona Makau + Makau + Nördliči Mariane + Martinique + Mauretanie + Monserrat + Malta + Mauritius + Malediwe + Malawi + Mexiko + Malaysia + Mosambik + Namibia + Niwkaledonie + Niger + Norfolkinsla + Nigeria + Nicaragua + Holand + Norwäge + Nepal + Nauru + Niue + Niwséland + Oman + Panama + Peru + Französiš Polinesie + Papua Niwginea + Philippine + Pakištan + Pole + St. Pierre und Miquelon + Pitcairn + Puerto Rico + Paleština + Portugal + Palau + Paraguai + Katar + Üssers Ozeanie + Réunion + Rumänie + Serbie + Russland + Ruanda + Saudi Arabie + Salomone + Sečelle + Sudan + Schwede + Singapur + St. Helena + Slowenie + Svalbard und Jan Mayen + Slowakei + Sierra Leone + San Marino + Senegal + Somalia + Suriname + São Tomé and Príncipe + El Salvador + Sürie + Swasiland + Tristan da Cunha + Turks- und Caicosinslä + Tšad + Französiši Süd- und Antarktisgebiet + Togo + Thailand + Tadšikistan + Tokelau + Ošttimor + Wešttimor + Turkmeništan + Tunesie + Tonga + Türkei + Trinidad und Tobago + Tuvalu + Taiwan + Tansania + Ukraine + Uganda + Amerikaniš Ozeanie + Amerika + Urugauy + Usbekištan + Vatikan + St. Vincent und d'Grenadine + Venezuela + Britiši Jungfröiwinslä + Amerikaniši Jungfröiwinslä + Vietnam + Vanuatu + Wallis und Futuna + Samoa + Jéme + Moyette + Südafrika + Sambia + Simbabwe + Unbekannti Regio + + + Standard Unicode Sortierreiefolg + Gregorianišä Kaländer + Arabiši Zálä + Allgmeini Süeč + + + Metriš + Angelsä + Angloamerikaniš + + + Sprač: {0} + Alfabét: {0} + Regio: {0} + + + + [a á ä ã b c č d e é f g h i í j k l m n o ó ö õ p q r s š t u ú ü ũ v w x y z] + [à ă â å ā æ ç è ĕ ê ë ē ì ĭ î ï ī ñ ò ŏ ô ø ō œ ß ù ŭ û ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + « + » + + + + + + + + + + EEEE, d. MMMM y G + + + + + d. MMMM y G + + + + + d. MMM y G + + + + + + E d. + h a + h:mm a + h:mm:ss a + LLL + d. MMM + E, d. MMM + d. MMM + E, d. MMM + MMM y + d. MMM y + E, d. MMM y + + + {0} - {1} + + d - d + + + h a - h a + h - h a + + + HH - HH + + + h:mm a - h:mm a + h:mm - h:mm a + h:mm - h:mm a + + + HH:mm - HH:mm + HH:mm - HH:mm + + + h:mm a - h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + HH:mm - HH:mm v + HH:mm - HH:mm v + + + h a - h a v + h - h a v + + + HH - HH v + + + MMM - MMM + + + d. MMM - d. MMM + d. MMM - d. MMM + + + E, d. MMM - E, d. MMM + E, d. MMM - E, d. MMM + + + MMM - MMM + + + d. - d. MMM + d. - d. MMM + + + E, d. MMM - E, d. MMM + E, d. MMM - E, d. MMM + + + y - y + + + y-MM - y-MM + y-MM - y-MM + + + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + + + E, d. MMM y - E, d. MMM y + E, d. MMM y - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MMM - MMM y + MMM y - MMM y + + + d. - d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MMMM - MMMM y + MMMM y - MMMM y + + + + + + + + + Jen + Hor + Mär + Abr + Mei + Brá + Hei + Öig + Her + Wím + Win + Chr + + + J + H + M + A + M + B + H + Ö + H + W + W + C + + + Jenner + Hornig + Märze + Abrille + Meije + Bráčet + Heiwet + Öigšte + Herbštmánet + Wímánet + Wintermánet + Chrištmánet + + + + + Jen + Hor + Mär + Abr + Mei + Brá + Hei + Öig + Her + Wím + Win + Chr + + + J + H + M + A + M + B + H + Ö + H + W + W + C + + + Jenner + Hornig + Märze + Abrille + Meije + Bráčet + Heiwet + Öigšte + Herbštmánet + Wímánet + Wintermánet + Chrištmánet + + + + + + + Sun + Män + Ziš + Mit + Fró + Fri + Sam + + + S + M + Z + M + F + F + S + + + Sunntag + Mäntag + Zištag + Mittwuč + Fróntag + Fritag + Samštag + + + + + Sun + Män + Ziš + Mit + Fró + Fri + Sam + + + S + M + Z + M + F + F + S + + + Sunntag + Mäntag + Zištag + Mittwuč + Fróntag + Fritag + Samštag + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + 1. quartal + 2. quartal + 3. quartal + 4. quartal + + + + + Q1 + Q2 + Q3 + Q4 + + + 1. quartal + 2. quartal + 3. quartal + 4. quartal + + + + + + v. Chr. + n. Chr + + + + + + EEEE, d. MMMM y + + + + + d. MMMM y + + + + + d. MMM y + + + + + + E d. + h a + h:mm a + h:mm:ss a + LLL + d. MMM + E, d. MMM + d. MMM + E, d. MMM + MMM y + d. MMM y + E, d. MMM y + + + {0} - {1} + + d - d + + + h a - h a + h - h a + + + HH - HH + + + h:mm a - h:mm a + h:mm - h:mm a + h:mm - h:mm a + + + HH:mm - HH:mm + HH:mm - HH:mm + + + h:mm a - h:mm a v + h:mm - h:mm a v + h:mm - h:mm a v + + + HH:mm - HH:mm v + HH:mm - HH:mm v + + + h a - h a v + h - h a v + + + HH - HH v + + + MMM - MMM + + + d. MMM - d. MMM + d. MMM - d. MMM + + + E, d. MMM - E, d. MMM + E, d. MMM - E, d. MMM + + + MMM - MMM + + + d. - d. MMM + d. - d. MMM + + + E, d. MMM - E, d. MMM + E, d. MMM - E, d. MMM + + + y - y + + + y-MM - y-MM + y-MM - y-MM + + + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + y-MM-dd - y-MM-dd + + + E, d. MMM y - E, d. MMM y + E, d. MMM y - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MMM - MMM y + MMM y - MMM y + + + d. - d. MMM y + d. MMM - d. MMM y + d. MMM y - d. MMM y + + + E, d. - E, d. MMM y + E, d. MMM - E, d. MMM y + E, d. MMM y - E, d. MMM y + + + MMMM - MMMM y + MMMM y - MMMM y + + + + + + + + Epoča + + + Jár + + I {0} jár + I {0} jár + + + vor {0} jár + cor {0} jár + + + + Mánet + + I {0} mánet + I {0} mánet + + + vor {0} mánet + vor {0} mánet + + + + Wuča + + i {0} wuča + i {0} wučä + + + vor {0} wuča + cor {0} wučä + + + + Tag + Vorgešter + Gešter + Hitte + Móre + Ubermóre + + i {0} tag + i {0} täg + + + vor {0} tag + vor {0} täg + + + + Wučetag + + + AM/PM + + + Schtund + + i {0} stund + i {0} stunde + + + vor {0} stund + vor {0} stunde + + + + Mínütta + + i {0} minüta + i {0} minüte + + + vor {0} minüta + vor {0} minüte + + + + Sekunda + + i {0} sekund + i {0} sekunde + + + vor {0} sekund + vor {0} sekunde + + + + Zitzóna + + + + {0} zit + + Unbekannti Stadt + + + Tiran + + + Kordoba + + + Wien + + + Sidnei + + + Brüssel + + + Wagadugu + + + Zürič + + + Hawanna + + + Prag + + + Dšibuti + + + Kopehage + + + Algier + + + Reval + + + Kairo + + + Akra + + + Hongkong + + + Budapešt + + + Bagdad + + + Rikjawik + + + Rom + + + Jamaika + + + Tokio + + + Kaimaninsla + + + Wilna + + + Tripolis + + + Monserat + + + Amšterdam + + + Waršau + + + Bukarešt + + + Belgrad + + + Königsbärg + + + Wolgograd + + + Kartum + + + Singapur + + + Laibač + + + Mogadišu + + + Damaskus + + + Konštantinopel + + + Vatikan + + + + Atlantiši Zit + Atlantiši Standardzit + Atlantiši Summerzit + + + + + Mitteleuropäiši Zit + Mitteleuropäiši Standardzit + Mitteleuropäiši Summerzit + + + MEZ + MEZ + MESZ + + + + + Ošteuropäiši Zit + Ošteuropäiši Standardzit + Ošteuropäiši Summerzit + + + OEZ + OEZ + OESZ + + + + + Wešteuropäiši Zit + Wešteuropäiši Standardzit + Wešteuropäiši Summerzit + + + WEZ + WEZ + WESZ + + + + + + + , + + + + {0} {1} + {0} {1} + + + + Brasilianiši Real + Brasilianišä Real + Brasilianiši Real + + + Chinesiši Yuan + Chinesišä Yuan + Chinesiši Yuan + + + Euro + Euro + Euro + + + Pfund + Pfund + Pfund + + + Indiši Rupie + Indišä Rupie + Indiši Rupie + + + Yen + Yen + Yen + ¥ + + + Rubel + Rubel + Rubel + руб + + + Dollar + Dollar + Dollar + $ + + + Unbekannti Wãrig + Unbekannti Wãrig + Unbekannti Wãrig + + + + + + + {0} täg + {0} täg + + + {0} stund + {0} stunde + + + {0} minüta + {0} minüte + + + {0} mánet + {0} mánet + + + {0} sekund + {0} sekunde + + + {0} wuča + {0} wučä + + + {0} jár + {0} jár + + + + + + {0} und {1} + {0} und {1} + + + + + ja:j:y + nei:n + + + + diff --git a/library/Zend/Locale/Data/wae_CH.xml b/library/Zend/Locale/Data/wae_CH.xml new file mode 100755 index 000000000..90c4075bc --- /dev/null +++ b/library/Zend/Locale/Data/wae_CH.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/wal.xml b/library/Zend/Locale/Data/wal.xml new file mode 100755 index 000000000..af3d523e7 --- /dev/null +++ b/library/Zend/Locale/Data/wal.xml @@ -0,0 +1,375 @@ + + + + + + + + + + + + ዐርቢኛ + ጀርመን + እንግሊዝኛ + ስፓኒሽ + ፈረንሳይኛ + ሐንድኛ + ጣሊያንኛ + ጃፓንኛ + ፖርቱጋሊኛ + ራሽኛ + ወላይታቱ + ቻይንኛ + + + + + + አንዶራ + የተባበሩት አረብ ኤምሬትስ + አልባኒያ + አርሜኒያ + ኔዘርላንድስ አንቲልስ + አርጀንቲና + ኦስትሪያ + አውስትሬሊያ + አዘርባጃን + ቦስኒያ እና ሄርዞጎቪኒያ + ባርቤዶስ + ቤልጄም + ቡልጌሪያ + ባህሬን + ቤርሙዳ + ቦሊቪያ + ብራዚል + ቡህታን + ቤላሩስ + ቤሊዘ + ኮንጎ + የመካከለኛው አፍሪካ ሪፐብሊክ + ስዊዘርላንድ + ቺሊ + ካሜሩን + ቻይና + ኮሎምቢያ + ኬፕ ቬርዴ + ሳይፕረስ + ቼክ ሪፑብሊክ + ጀርመን + ዴንማርክ + ዶሚኒካ + ዶሚኒክ ሪፑብሊክ + አልጄሪያ + ኢኳዶር + ኤስቶኒያ + ግብጽ + ምዕራባዊ ሳህራ + ኤርትራ + ስፔን + ኢትዮጵያ + ፊንላንድ + ፊጂ + ሚክሮኔዢያ + ፈረንሳይ + እንግሊዝ + ጆርጂያ + የፈረንሳይ ጉዊአና + ጋምቢያ + ጊኒ + ኢኳቶሪያል ጊኒ + ግሪክ + ቢሳዎ + ጉያና + ሆንግ ኮንግ + ክሮኤሽያ + ሀይቲ + ሀንጋሪ + ኢንዶኔዢያ + አየርላንድ + እስራኤል + ህንድ + ኢራቅ + አይስላንድ + ጣሊያን + ጃማይካ + ጆርዳን + ጃፓን + ካምቦዲያ + ኮሞሮስ + ደቡብ ኮሪያ + ሰሜን ኮሪያ + ክዌት + ሊባኖስ + ሊቱዌኒያ + ላትቪያ + ሊቢያ + ሞሮኮ + ሞልዶቫ + ማከዶኒያ + ሞንጎሊያ + ማካዎ + ሞሪቴኒያ + ማልታ + ማሩሸስ + ሜክሲኮ + ማሌዢያ + ናሚቢያ + ኒው ካሌዶኒያ + ናይጄሪያ + ኔዘርላንድ + ኖርዌ + ኔፓል + ኒው ዚላንድ + ፔሩ + የፈረንሳይ ፖሊኔዢያ + ፓፑዋ ኒው ጊኒ + ፖላንድ + ፖርታ ሪኮ + ሮሜኒያ + ራሺያ + ሳውድአረቢያ + ሱዳን + ስዊድን + ሲንጋፖር + ስሎቬኒያ + ስሎቫኪያ + ሴኔጋል + ሱማሌ + ሲሪያ + ቻድ + የፈረንሳይ ደቡባዊ ግዛቶች + ታይላንድ + ታጃኪስታን + ምስራቅ ቲሞር + ቱኒዚያ + ቱርክ + ትሪኒዳድ እና ቶባጎ + ታንዛኒያ + ዩጋንዳ + አሜሪካ + ዩዝበኪስታን + ቬንዙዌላ + የእንግሊዝ ድንግል ደሴቶች + የአሜሪካ ቨርጂን ደሴቶች + የመን + ደቡብ አፍሪካ + ዛምቢያ + + + + [\u135F ᎐-᎙ ሀ-ሏ ⶀ ሐ-ሟ ᎀ-ᎃ ⶁ ሠ-ሯ ⶂ ሰ-ሷ ⶃ ሸ-ሿ ⶄ ቀ-ቈ ቊ-ቍ ቐ-ቖ ቘ ቚ-ቝ በ-ቧ ᎄ-ᎇ ⶅ ቨ-ቷ ⶆ ቸ-ቿ ⶇ ኀ-ኈ ኊ-ኍ ነ-ኗ ⶈ ኘ-ኟ ⶉ አ-ኧ ⶊ ከ-ኰ ኲ-ኵ ኸ-ኾ ዀ ዂ-ዅ ወ-ዖ ዘ-ዟ ⶋ ዠ-ዷ ⶌ ዸ-ዿ ⶍ ጀ-ጇ ⶎ ገ-ጐ ጒ-ጕ ጘ-ጟ ⶓ-ⶖ ጠ-ጧ ⶏ ጨ-ጯ ⶐ ጰ-ጷ ⶑ ጸ-ፏ ᎈ-ᎋ ፐ-ፗ ᎌ-ᎏ ⶒ ፘ-ፚ ⶠ-ⶦ ⶨ-ⶮ ⶰ-ⶶ ⶸ-ⶾ ⷀ-ⷆ ⷈ-ⷎ ⷐ-ⷖ ⷘ-ⷞ] + [ሀ ለ ⶀ መ ᎀ ᎁ ᎃ ⶁ ረ ⶂ ሰ ሸ ⶄ ቈ ቐ ቘ ᎄ ᎅ ᎇ ⶅ ቨ ⶆ ቸ ኀ ኈ ነ ኘ ⶉ ⶊ ከ ኰ ዀ ወ ዐ ⶋ ዠ ደ ⶌ ዸ ጀ ⶎ ጐ ጘ ⶓ ⶕ ⶖ ⶏ ጨ ⶐ ⶑ ጸ ፈ ᎈ ᎉ ᎋ ፐ ᎍ ᎎ ᎏ ፘ ⶠ ⶢ ⶣ ⶤ ⶦ ⶨ ⶩ ⶫ ⶬ ⶮ ⶰ ⶱ ⶳ ⶴ ⶶ ⶸ ⶹ ⶻ ⶼ ⶾ ⷀ ⷁ ⷃ ⷄ ⷆ ⷈ ⷉ ⷋ ⷌ ⷎ ⷐ ⷑ ⷓ ⷔ ⷖ ⷘ ⷙ ⷛ ⷜ ⷝ] + + + + + + + + EEEE፥ dd MMMM ጋላሳ y G + + + + + dd MMMM y G + + + + + dd-MMM-y G + + + + + dd/MM/yy GGGGG + + + + + + + + + ጃንዩ + ፌብሩ + ማርች + ኤፕረ + ሜይ + ጁን + ጁላይ + ኦገስ + ሴፕቴ + ኦክተ + ኖቬም + ዲሴም + + + ጃንዩወሪ + ፌብሩወሪ + ማርች + ኤፕረል + ሜይ + ጁን + ጁላይ + ኦገስት + ሴፕቴምበር + ኦክተውበር + ኖቬምበር + ዲሴምበር + + + + + + + + + + + + + + + + + + + + + + + ወጋ + ሳይኖ + ማቆሳኛ + አሩዋ + ሃሙሳ + አርባ + ቄራ + + + + + + + + + + + + + + + + + + ማለዶ + ቃማ + + + + + + አዳ ዎዴ + ግሮተታ ላይታ + + + + + + EEEE፥ dd MMMM ጋላሳ y G + + + + + dd MMMM y + + + + + dd-MMM-y + + + + + dd/MM/yy + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + + latn + + latn + ethi + + + + + + + + ¤#,##0.00 + + + + + + የብራዚል ሪል + + + የቻይና ዩአን ረንሚንቢ + + + የኢትዮጵያ ብር + Br + + + አውሮ + + + የእንግሊዝ ፓውንድ ስተርሊንግ + + + የሕንድ ሩፒ + + + የጃፓን የን + + + የራሻ ሩብል + + + የአሜሪካን ዶላር + + + + + diff --git a/library/Zend/Locale/Data/wal_ET.xml b/library/Zend/Locale/Data/wal_ET.xml new file mode 100755 index 000000000..40d7281b1 --- /dev/null +++ b/library/Zend/Locale/Data/wal_ET.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/windowsZones.xml b/library/Zend/Locale/Data/windowsZones.xml new file mode 100755 index 000000000..9d4aa8689 --- /dev/null +++ b/library/Zend/Locale/Data/windowsZones.xml @@ -0,0 +1,653 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/xh.xml b/library/Zend/Locale/Data/xh.xml new file mode 100755 index 000000000..738372c6a --- /dev/null +++ b/library/Zend/Locale/Data/xh.xml @@ -0,0 +1,264 @@ + + + + + + + + + + + + isiBhulu + Isi-Amharic + Isi-Arabic + isiAssamese + Isi-Azerbaijani + Isi-Belarusian + Isi-Bulgaria + Isi-Bengali + Breton + Isi-Bosnia + Isi-Calatan + Isi-Czech + Isi-Welsh + Isi-Danish + Isi-German + Isi-Greek + isiNgesi + Isi-Esperanto + Isi-Spanish + Isi-Estonian + Isi-Basque + Isi-Persia + Isi-Finnish + Isi-Taglog + Isi-Faroese + Isi-French + Isi-Frisian + Isi-Irish + Scots Gaelic + Isi-Galician + Guarani + Isi-Gujarati + Isi-Hebrew + Isi-Hindi + Isi-Croatia + Isi-Hungarian + isiArmenian + Interlingua + Isi-Indonesian + isiInterlingue + Isi-Icelandic + Isi-Italian + Isi-Japanese + Isi-Javanese + Isi-Georgia + isiCambodia + Isi-Kannada + Isi-Korean + Kurdish + Kyrgyz + Isi-Latin + Iilwimi + IsiLoathian + Isi-Lithuanian + Isi-Latvian + Isi-Macedonian + Isi-Malayalam + IsiMongolian + Isi-Marathi + Isi-Malay + Isi-Maltese + Isi-Nepali + Isi-Dutch + Isi-Norwegia (Nynorsk) + Isi-Norwegian + Iso-Occitan + Oriya + Isi-Punjabi + Isi-Polish + Pashto + Isi-Portuguese + portokugusseee + Isi-Portuguese (Portugal) + Isi-Romanian + Isi-Russian + iSanskrit + isiSindhi + Serbo-Croatian + Isi-Sinhalese + Isi-Slovak + Isi-Slovenian + IsiSomaliya + Isi-Albania + Isi-Serbia + Sesotho + Isi-Sudanese + Isi-Swedish + Isi-Swahili + Isi-Tamil + Isi-Telegu + Isi-Thai + Isi-Tigrinya + Turkmen + Klingon + Isi-Turkish + Twi + Isi Uighur + Isi-Ukranian + Urdu + Isi-Uzbek + Isi-Vietnamese + isiXhosa + Yiddish + isiZulu + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + Jan + Feb + Mat + Epr + Mey + Jun + Jul + Aga + Sep + Okt + Nov + Dis + + + Janyuwari + Februwari + Matshi + Epreli + Meyi + Juni + Julayi + Agasti + Septemba + Okthoba + Novemba + Disemba + + + + + + + Caw + Mvu + Bin + Tha + Sin + Hla + Mgq + + + Cawe + Mvulo + Lwesibini + Lwesithathu + Lwesine + Lwesihlanu + Mgqibelo + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 unyangantathu + 2 unyangantathu + 3 unyangantathu + 4 unyangantathu + + + + + + BC + umnyaka wokuzalwa kukaYesu + + + BC + AD + + + + + + + + , +   + + + + + #,##0.### + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + + + + R + + + + + + ewe:e + hayi:h + + + + diff --git a/library/Zend/Locale/Data/xh_ZA.xml b/library/Zend/Locale/Data/xh_ZA.xml new file mode 100755 index 000000000..624c72203 --- /dev/null +++ b/library/Zend/Locale/Data/xh_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/xog.xml b/library/Zend/Locale/Data/xog.xml new file mode 100755 index 000000000..37aa113f4 --- /dev/null +++ b/library/Zend/Locale/Data/xog.xml @@ -0,0 +1,759 @@ + + + + + + + + + + + + Oluakaani + Oluamhariki + Oluwarabu + Olubelarusi + Olubulugariya + Olubengali + Oluceeke + Oludaaki + Oluyonaani + Olungereza + Olusipanya + Oluperusi + Olufalansa + Oluhawuza + Oluhindu + Oluhangare + Oluyindonezya + Oluyibo + Oluyitale + Olujapani + Olunnajjava + Olukme + Olukoreya + Olumalayi + Olubbama + Olunepali + Oluholandi + Olupunjabi + Olupolandi + Olupotugiizi + Olulomaniya + Olulasa + Olunarwanda + Olusomaliya + Oluswideni + Olutamiiru + Oluttaayi + Olutake + Oluyukurayine + Olu-urudu + Oluvyetinaamu + Olusoga + Oluyoruba + Olucayina + Oluzzulu + + + Andora + Emireeti + Afaganisitani + Antigwa ni Barabuda + Angwila + Alibaniya + Arameniya + Ebizinga bya Antile by'abaHolandi + Angola + Arigentina + Samowa omumerika + Awusituriya + Awusitureliya + Aruba + Azerebayijaani + Boziniya Hezegovina + Barabadosi + Bangaladesi + Bubirigi + Burukina Faso + Bulugariya + Baareeni + Burundi + Benini + Beremuda + Burunayi + Boliviya + Buraziiri + Bahamasi + Butaani + Botiswana + Belarusi + Belize + Kanada + Kongo - Zayire + Lipabulika ya Senturafiriki + Kongo + Switizirandi + Kote Divwa + Ebizinga bya Kkuki + Cile + Kameruuni + Cayina + Kolombya + Kosita Rika + Cuba + Ebizinga bya Kepu Veredi + Sipuriya + Lipabulika ya Ceeka + Budaaki + Jjibuti + Denimaaka + Dominika + Lipabulika ya Dominika + Aligerya + Ekwado + Esitoniya + Misiri + Eritureya + Sipeyini + Esyopya + Finilandi + Fiji + Ebiizinga bya Falikalandi + Mikuronezya + Bufalansa + Gaboni + Bungereza + Gurenada + Gyogya + Guyana enfalansa + Gana + Giburalita + Gurenelandi + Gambya + Gini + Gwadalupe + Gayana yaku ekweta + Buyonaani + Gwatemala + Gwamu + Gini-Bisawu + Gayana + Hundurasi + Kurowesya + Hayiti + Hangare + Yindonezya + Ayalandi + Yisirayeri + Buyindi + Ebizinga bya Cago + Yiraaka + Yiraani + Ayisirandi + Yitale + Jamayika + Yorodani + Japani + Kenya + Kirigizisitaani + Kambodya + Kiribati + Ebizinga bya Komoro + Senti Kitisi ne Nevisi + Koreya eya mumambuka + Koreya eya mumaserengeta + Kuweti + Ebizinga bya Kayimaani + Kazakisitaani + Lawosi + Lebanoni + Senti Luciya + Licitensitayini + Sirilanka + Liberya + Lesoso + Lisuwenya + Lukisembaaga + Lativya + Libya + Moroko + Monako + Molodova + Madagasika + Bizinga bya Mariso + Masedoniya + Mali + Myanima + Mongoliya + Bizinga bya Mariyana ebyamumambuka + Maritiniiki + Mawulitenya + Monteseraati + Malita + Mawulisyasi + Ebizinga bya Malidive + Malawi + Mekisiko + Malezya + Mozambiiki + Namibiya + Kaledonya mupya + Nije + Kizinga ky'eNorofoko + Nayijerya + Nikaraguwa + Holandi + Nowe + Nepalo + Nawuru + Niyuwe + Niyuziirandi + Omaani + Panama + Peru + Polinesiya enfalansa + Papwa Nyugini + Ebizinga bya Firipino + Pakisitaani + Polandi + Senti Piyere ni Mikeloni + Pitikeeni + Potoriko + Palesitayini ni Gaza + Potugaali + Palawu + Paragwayi + Kataa + Leyunyoni + Lomaniya + Lasa + Rwanda + Sawudarebya + Ebizanga bya Solomooni + Sesere + Sudaani + Swideni + Singapowa + Senti Herena + Sirovenya + Sirovakya + Siyeralewone + Sanimarino + Senegaalo + Somaliya + Surinaamu + Sanitome ni Purincipe + El salivado + Siriya + Swazirandi + Ebizinga bya Taaka ni Kayikosi + Caadi + Togo + Tayirandi + Tajikisitaani + Tokelawu + Timowa + Takimenesitaani + Tunisya + Tonga + Ttake + Turindaadi ni Tobago + Tuvalu + Tayiwani + Yukurayine + Yuganda + Amerika + Wurugwayi + Wuzibekisitaani + Vatikaani + Senti Vinsenti ni Gurendadiini + Venzwera + Ebizinga bya Virigini ebitwalibwa Bungereza + Ebizinga bya Virigini eby'Amerika + Vyetinaamu + Vanawuwatu + Walisi ni Futuna + Samowa + Yemeni + Mayotte + Sawusafirika + Zambya + Zimbabwe + + + + [a b c d e f g h i j k l m n o p q r s t u v w x y z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Jan + Feb + Mar + Apu + Maa + Juu + Jul + Agu + Seb + Oki + Nov + Des + + + Janwaliyo + Febwaliyo + Marisi + Apuli + Maayi + Juuni + Julaayi + Agusito + Sebuttemba + Okitobba + Novemba + Desemba + + + + + J + F + M + A + M + J + J + A + S + O + N + D + + + + + + + Sabi + Bala + Kubi + Kusa + Kuna + Kuta + Muka + + + Sabiiti + Balaza + Owokubili + Owokusatu + Olokuna + Olokutaanu + Olomukaaga + + + + + S + B + B + S + K + K + M + + + + + + + Q1 + Q2 + Q3 + Q4 + + + Ebisera ebyomwaka ebisoka + Ebisera ebyomwaka ebyokubiri + Ebisera ebyomwaka ebyokusatu + Ebisera ebyomwaka ebyokuna + + + + + + + Munkyo + Eigulo + + + + + + Kulisto nga azilawo + Kulisto nga affile + + + AZ + AF + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Emulembe + + + Omwaka + + + Omwezi + + + Esabiiti + + + Olunaku + Edho + Olwaleelo (leelo) + Enkyo + + + Olunaka lwa sabiiti + + + munkyo/Eigulo + + + Essawa + + + Edakiika + + + Obutikitiki + + + Essawa edha + + + + + + + + #,##0.00 ¤ + + + + + + Diraamu eya Emireeti + + + Kwanza y'Angola + + + Doola y'Awusiturelya + + + Dinaali ya Baareeni + + + Faranga ya burundi + + + Pula ya Botiswana + + + Doola ya Kanada + + + Faranga ya Kongo + + + Faranga ey'eSwitizirandi + + + Yuwani Reniminibi ya Cayina + + + Esikudo ya Keepu Veredi + + + Faranga ya Jjibuti + + + Dinaali y'Aligerya + + + Pawunda ya Misiri + + + Nakifa ya Eritureya + + + Biiru ya Esyopya + + + Yuro + + + Pawunda ya Bungereza + + + Sedi ya Gana + + + Dalasi ya Gambya + + + Faranga ya Gini + + + Rupiya ya Buyindi + + + Yeni ya Japani + + + Silingi ya Kenya + + + Faranga ya Komoro + + + Doola ya Liberya + + + Loti ya Lesoso + + + Dinaali ya Libya + + + Diraamu ey'eMoroko + + + Faranga ey'eMalagase + + + Wugwiya ey'eMawritenya + + + Rupiya ey'eMawurisyasi + + + Kwaca ey'eMalawi + + + Metikaali ey'eMozambiiki + + + Nayira ey'eNayijerya + + + Faranga ey'eRwanda + + + Riyaali ey'eBuwarabu + + + Rupiya ey'eSesere + + + Dinaali ey'eSudaani + + + Pawunda ey'eSudaani + + + Pawunda ey'eSenti Herena + + + Lewone + + + Silingi ey'eSomaliya + + + Dobura ey'eSantome ne Purincipe + + + Lilangeni + + + Dinaali ey'eTunizya + + + Silingi ey'eTanzaniya + + + Silingi eya Yuganda + USh + + + Doola ey'Amerika + + + Faranga yamu Afirika ya wakati + + + Faranga yamu Afirika ya bugwanjuba + + + Randi ey'eSawusafirika + + + Kwaca ey'eZambya (1968–2012) + + + Kwaca ey'eZambya + + + Doola ey'eZimbabwe + + + + + + Ye:Y + Be:B + + + + diff --git a/library/Zend/Locale/Data/xog_UG.xml b/library/Zend/Locale/Data/xog_UG.xml new file mode 100755 index 000000000..0c2cd494d --- /dev/null +++ b/library/Zend/Locale/Data/xog_UG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/yav.xml b/library/Zend/Locale/Data/yav.xml new file mode 100755 index 000000000..2f2da413d --- /dev/null +++ b/library/Zend/Locale/Data/yav.xml @@ -0,0 +1,670 @@ + + + + + + + + + + + + akánɛ + amalíke + ́pakas + pielúse + bulgálɛ + pengálɛ́ɛ + cɛ́kɛ́ɛ + ŋndiáman + yavánɛ + íŋgilísé + nuɛspanyɔ́lɛ + nupɛ́lisɛ + feleŋsí + pakas + índí + ɔ́ŋgɛ + índonísiɛ + íbo + itáliɛ + ndiáman + yávanɛ + kímɛɛ + kolíe + máliɛ + bímanɛ + nunipálɛ + nilándɛ + nupunsapíɛ́ + nupolonɛ́ɛ + nupɔlitukɛ́ɛ + nulumɛ́ŋɛ + nulúse + nuluándɛ́ɛ + nusomalíɛ + nusuetua + nutámule + nutáyɛ + nutúluke + nukeleniɛ́ŋɛ + nulutú + nufiɛtnamíɛŋ + nuasue + nuyolúpa + sinúɛ + nusulú + + + Aŋtúla + imiláat i paaláap + Afkanistáŋ + Aŋtíka na Palpúta + Aŋkíla + Alpaní + Almanía + andíiy u nitililáand + Aŋkúla + Alsaŋtín + Sámua u Amelíka + Otilís + Otalalí + Alúpa + Asɛlpaisáŋ + Pusiní-ɛlkofína + Palpatós + Paŋkalatɛs + Pɛlsíik + Pulikínafásó + Pulukalíi + Palɛŋ + Púlúndí + Penɛŋ + Pɛlmúta + Pulunéy + Polífia + Pilesíl + Pahámas + Putaŋ + Posuána + Pelalús + Pelíse + Kánáta + kitɔŋ kí kongó + Santalafilíik + Kongó + suwíis + Kótifualɛ + Kúuke + Silí + Kemelún + Síine + Kɔlɔ́mbía + Kóstálíka + kúpa + Kápfɛl + síplɛ + kitɔŋ kí cɛ́k + nsáman + síputí + tanemálk + túmúnéke + kitɔŋ kí tumunikɛ́ŋ + Alselí + ekuatɛ́l + ɛstoni + isípit + elitée + panyá + etiopí + fɛnlánd + físi + maluwín + mikolonesí + felensí + kapɔ́ŋ + ingilíís + kelenáat + sɔlsíi + kuyáan u felensí + kaná + sílpalatáal + kuluɛnlánd + kambíi + kiiné + kuatelúup + kinéekuatolial + kilɛ́ɛk + kuatemalá + kuamiɛ + kiinépisaó + kuyáan + ɔndúlas + Kolowasíi + ayíti + ɔngilí + ɛndonesí + ililánd + ísilayɛ́l + ɛ́ɛnd + Kɔɔ́m kí ndián yi ngilís + ilák + iláŋ + isláand + italí + samayíik + sɔltaní + sapɔ́ɔŋ + kénia + kilikisistáŋ + Kámbóse + kilipatí + Kɔmɔ́ɔl + sɛ́ŋkilistɔ́f eniɛ́f + kɔlé u muɛnɛ́ + kɔlé wu mbát + kowéet + Káyímanɛ + kasaksitáŋ + lawós + lipáŋ + sɛ́ŋtɛ́lusí + lístɛ́nsitáyin + silíláŋka + lipélia + lesotó + litiyaní + liksambúul + letoní + lipíi + malóok + monakó + moltafí + matakaskáal + ílmalasáal + masetuán + malí + miaŋmáal + mongolí + il maliyanɛ u muɛnɛ́ + maltiníik + molitaní + mɔŋsilá + málɛ́t + molís + maletíif + malawí + mɛksíik + malesí + mosambík + namipí + nufɛ́l kaletoní + nisɛ́ɛl + il nɔ́lfɔ́lɔk + nisélia + nikalaká + nitililáand + nɔlfɛ́ɛs + nepáal + nawulú + niyuwé + nufɛ́l seláand + omáŋ + panamá + pelú + polinesí u felensí + papuasí nufɛ́l kiiné + filipíin + pakistáŋ + pɔlɔ́ɔny + sɛ́ŋpiɛ́l e mikelɔ́ŋ + pitikɛ́ɛlínɛ́ + pólótolíko + kitɔŋ ki palɛstíin + pɔltukáal + palawú + palakúé + katáal + elewuniɔ́ŋ + ulumaní + ulusí + uluándá + alapísawutíit + il salomɔ́ŋ + sesɛ́ɛl + sutáaŋ + suɛ́t + singapúul + sɛ́ŋtɛ́ elɛ́ɛnɛ + silofení + silofakí + sieláleyɔ́ɔn + san malíno + senekáal + somalí + sulináam + sáwó tomé e pelensípe + salfatɔ́ɔl + suasiláand + túluk na káyiik + Sáat + tokó + tayiláand + tasikistáaŋ + tokeló + timɔ́ɔl u nipálɛ́n + tulukmenisitáaŋ + tunusí + tɔ́ŋka + tulukíi + tilinitáat na tupákɔ + tufalú + tayiwáan + taŋsaní + ukilɛ́ɛn + ukánda + amálíka + ulukuéy + usupekistáaŋ + fatikáaŋ + sɛ́ŋ fɛŋsáŋ elekelenatíin + fenesuwelá + Filisíin ungilís + pindisúlɛ́ pi amálíka + fiɛtnáam + fanuatú + walíis na futúna + samowá + yémɛn + mayɔ́ɔt + afilí mbátɛ́ + saambíi + simbapuwé + + + + [a á à â ǎ ā b c d e é è ɛ {ɛ\u0301} {ɛ\u0300} f h i í ì î ī k l m {mb} n {ny} ŋ {ŋg} o ó ò ô ǒ ō ɔ {ɔ\u0301} {ɔ\u0300} p s t u ú ù û ǔ ū v w y] + [g j q r x z] + [A B C D E Ɛ F H I K L M N Ŋ O Ɔ P S T U V W Y] + + + « + » + « + » + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + d/M/y GGGGG + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + + o.1 + o.2 + o.3 + o.4 + o.5 + o.6 + o.7 + o.8 + o.9 + o.10 + o.11 + o.12 + + + pikítíkítie, oólí ú kutúan + siɛyɛ́, oóli ú kándíɛ + ɔnsúmbɔl, oóli ú kátátúɛ + mesiŋ, oóli ú kénie + ensil, oóli ú kátánuɛ + ɔsɔn + efute + pisuyú + imɛŋ i puɔs + imɛŋ i putúk,oóli ú kátíɛ + makandikɛ + pilɔndɔ́ + + + + + + + sd + md + mw + et + kl + fl + ss + + + sɔ́ndiɛ + móndie + muányáŋmóndie + metúkpíápɛ + kúpélimetúkpiapɛ + feléte + séselé + + + + + s + m + m + e + k + f + s + + + + + + + Q1 + Q2 + Q3 + Q4 + + + ndátúɛ 1 + ndátúɛ 2 + ndátúɛ 3 + ndátúɛ 4 + + + + + + + kiɛmɛ́ɛm + kisɛ́ndɛ + + + + + + katikupíen Yésuse + ékélémkúnupíén n + + + k.Y. + +J.C. + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + d + E d + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + d/M + E d/M + LLL + d MMM + E d MMM + m:ss + y + M/y + d/M/y + E d/M/y + MMM y + d MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + kipéŋén + + + yɔɔŋ + + + oóli + + + sɔ́ndiɛ + + + puɔ́sɛ́ + púyoó + ínaan + nakinyám + + + metúk mɔ́sɔ́ndiɛ + + + kiɛmɛ́ɛm,kisɛ́ndɛ + + + kisikɛl, + + + minít + + + síkɛn + + + kinúki kisikɛl ɔ́ pitɔŋ + + + + + + , +   + + + + + #,##0.### + + + + + + + #,##0% + + + + + + + #,##0.00 ¤ + + + #,##0.00 ¤;(#,##0.00 ¤) + + + + + + kuansa wu angolá + + + toláal wu ostalalí + + + tináal wu paaléen + + + faláŋɛ u pulundí + + + pula pu posuána + + + toláal u kanáta + + + ́faláŋɛ u kongó + + + yuan ɛlɛnmimbí + + + ɛskúdo u kápfɛ́ɛl + + + ́faláŋɛ u síputí + + + tináal wu alselí + + + lífilɛ wu isípit + + + náfka wu elitilée + + + píil wu etiopí + + + olóo + + + lífilɛ sitelelíiŋ + + + setí + + + talasí u kaambí + + + silí u kiiné + + + ulupí + + + yɛ́ɛn u sapɔ́ɔŋ + + + síliŋ u kénia + + + ́faláŋɛ u kɔmɔ́ɔl + + + + + + ɛ́ɛ́ɛ:ɛ + aákó:a + + + + diff --git a/library/Zend/Locale/Data/yav_CM.xml b/library/Zend/Locale/Data/yav_CM.xml new file mode 100755 index 000000000..30a09d62e --- /dev/null +++ b/library/Zend/Locale/Data/yav_CM.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/yo.xml b/library/Zend/Locale/Data/yo.xml new file mode 100755 index 000000000..6a3899010 --- /dev/null +++ b/library/Zend/Locale/Data/yo.xml @@ -0,0 +1,796 @@ + + + + + + + + + + + + Èdè Afrikani + Èdè Akani + Èdè Amariki + Èdè Arabiki + Ti Assam + Èdè Azerbaijani + Èdè Belarusi + Èdè Bugaria + Èdè Bengali + Èdè Bretoni + Èdè Bosnia + Èdè Catala + Èdè seeki + Èdè Welshi + Èdè Ilẹ̀ Denmark + Èdè Ilẹ̀ Gemani + Èdè Giriki + Èdè Gẹ̀ẹ́sì + Èdè Esperanto + Èdè Sipanisi + Èdè Estonia + Èdè Baski + Èdè Pasia + Èdè Finisi + Èdè Tagalogi + Èdè Faroesi + Èdè Faransé + Èdè Frisia + Èdè Ireland + Èdè Gaelik ti Ilu Scotland + Èdè Galicia + Èdè Guarani + Èdè Gujarati + Èdè Hausa + Èdè Heberu + Èdè Hindi + Èdè Kroatia + Èdè Hungaria + Èdè Ile Armenia + Èdè pipo + Èdè Indonasia + Iru Èdè + Èdè Ibo + Èdè Icelandic + Èdè Italiani + Èdè Japanisi + Èdè Javanasi + Èdè Georgia + Èdè kameri + Èdè Kannada + Èdè Koria + Èdè Latini + Èdè Lithuania + Èdè Latvianu + Èdè Macedonia + Èdè marathi + Èdè Malaya + Èdè Malta + Èdè Bumiisi + Èdè Nepali + Èdè Duki + Èdè Norway + Èdè Occitani + Èdè Punjabi + Èdè Ilẹ̀ Polandi + Èdè Pọtugi + Èdè Romania + Èdè ̣Rọọsia + Èdè Ruwanda + Èdè awon ara Indo + Èdè Sindhi + Èdè Serbo-Croatiani + Èdè Sinhalese + Èdè Slovaki + Èdè Slovenia + Èdè ara Somalia + Èdè Albania + Èdè Serbia + Èdè Sesoto + Èdè Sudani + Èdè Suwidiisi + Èdè Swahili + Èdè Tamili + Èdè Telugu + Èdè Tai + Èdè Tigrinya + Èdè Turkmen + Èdè Klingoni + Èdè Tọọkisi + Èdè Ukania + Èdè Udu + Èdè Uzbek + Èdè Jetinamu + Èdè Xhosa + Èdè Yiddishi + Èdè Yorùbá + Èdè Mandari + Èdè Ṣulu + + + Orílẹ́ède Ààndórà + Orílẹ́ède Ẹmirate ti Awọn Arabu + Orílẹ́ède Àfùgànístánì + Orílẹ́ède Ààntígúà àti Báríbúdà + Orílẹ́ède Ààngúlílà + Orílẹ́ède Àlùbàníánì + Orílẹ́ède Améníà + Orílẹ́ède Nedalandi ti Antelisi + Orílẹ́ède Ààngólà + Orílẹ́ède Agentínà + Sámóánì ti Orílẹ́ède Àméríkà + Orílẹ́ède Asítíríà + Orílẹ́ède Ástràlìá + Orílẹ́ède Árúbà + Orílẹ́ède Asẹ́bájánì + Orílẹ́ède Bọ̀síníà àti Ẹtisẹgófínà + Orílẹ́ède Bábádósì + Orílẹ́ède Bángáládésì + Orílẹ́ède Bégíọ́mù + Orílẹ́ède Bùùkíná Fasò + Orílẹ́ède Bùùgáríà + Orílẹ́ède Báránì + Orílẹ́ède Bùùrúndì + Orílẹ́ède Bẹ̀nẹ̀ + Orílẹ́ède Bémúdà + Orílẹ́ède Búrúnẹ́lì + Orílẹ́ède Bọ̀lífíyà + Orílẹ́ède Bàràsílì + Orílẹ́ède Bàhámásì + Orílẹ́ède Bútánì + Orílẹ́ède Bọ̀tìsúwánà + Orílẹ́ède Bélárúsì + Orílẹ́ède Bèlísẹ̀ + Orílẹ́ède Kánádà + Orilẹ́ède Kóngò + Orílẹ́ède Àrin gùngun Áfíríkà + Orílẹ́ède Kóngò + Orílẹ́ède switiṣilandi + Orílẹ́ède Kóútè forà + Orílẹ́ède Etíokun Kùúkù + Orílẹ́ède ṣílè + Orílẹ́ède Kamerúúnì + Orílẹ́ède ṣáínà + Orílẹ́ède Kòlómíbìa + Orílẹ́ède Kuusita Ríkà + Orílẹ́ède Kúbà + Orílẹ́ède Etíokun Kápé féndè + Orílẹ́ède Kúrúsì + Orílẹ́ède ṣẹ́ẹ́kì + Orílẹ́ède Gemani + Orílẹ́ède Díbọ́ótì + Orílẹ́ède Dẹ́mákì + Orílẹ́ède Dòmíníkà + Orilẹ́ède Dòmíníkánì + Orílẹ́ède Àlùgèríánì + Orílẹ́ède Ekuádò + Orílẹ́ède Esitonia + Orílẹ́ède Égípítì + Orílẹ́ède Eritira + Orílẹ́ède Sipani + Orílẹ́ède Etopia + Orílẹ́ède Filandi + Orílẹ́ède Fiji + Orílẹ́ède Etikun Fakalandi + Orílẹ́ède Makoronesia + Orílẹ́ède Faranse + Orílẹ́ède Gabon + Orílẹ́ède Omobabirin + Orílẹ́ède Genada + Orílẹ́ède Gọgia + Orílẹ́ède Firenṣi Guana + Orílẹ́ède Gana + Orílẹ́ède Gibaratara + Orílẹ́ède Gerelandi + Orílẹ́ède Gambia + Orílẹ́ède Gene + Orílẹ́ède Gadelope + Orílẹ́ède Ekutoria Gini + Orílẹ́ède Geriisi + Orílẹ́ède Guatemala + Orílẹ́ède Guamu + Orílẹ́ède Gene-Busau + Orílẹ́ède Guyana + Orílẹ́ède Hondurasi + Orílẹ́ède Kòróátíà + Orílẹ́ède Haati + Orílẹ́ède Hungari + Orílẹ́ède Indonesia + Orílẹ́ède Ailandi + Orílẹ́ède Iserẹli + Orílẹ́ède India + Orílẹ́ède Etíkun Índíánì ti Ìlú Bírítísì + Orílẹ́ède Iraki + Orílẹ́ède Irani + Orílẹ́ède Aṣilandi + Orílẹ́ède Italiyi + Orílẹ́ède Jamaika + Orílẹ́ède Jọdani + Orílẹ́ède Japani + Orílẹ́ède Kenya + Orílẹ́ède Kuriṣisitani + Orílẹ́ède Kàmùbódíà + Orílẹ́ède Kiribati + Orílẹ́ède Kòmòrósì + Orílẹ́ède Kiiti ati Neefi + Orílẹ́ède Guusu Kọria + Orílẹ́ède Ariwa Kọria + Orílẹ́ède Kuweti + Orílẹ́ède Etíokun Kámánì + Orílẹ́ède Kaṣaṣatani + Orílẹ́ède Laosi + Orílẹ́ède Lebanoni + Orílẹ́ède Luṣia + Orílẹ́ède Lẹṣitẹnisiteni + Orílẹ́ède Siri Lanka + Orílẹ́ède Laberia + Orílẹ́ède Lesoto + Orílẹ́ède Lituania + Orílẹ́ède Lusemogi + Orílẹ́ède Latifia + Orílẹ́ède Libiya + Orílẹ́ède Moroko + Orílẹ́ède Monako + Orílẹ́ède Modofia + Orílẹ́ède Madasika + Orílẹ́ède Etikun Máṣali + Orílẹ́ède Masidonia + Orílẹ́ède Mali + Orílẹ́ède Manamari + Orílẹ́ède Mogolia + Orílẹ́ède Etikun Guusu Mariana + Orílẹ́ède Matinikuwi + Orílẹ́ède Maritania + Orílẹ́ède Motserati + Orílẹ́ède Malata + Orílẹ́ède Maritiusi + Orílẹ́ède Maladifi + Orílẹ́ède Malawi + Orílẹ́ède Mesiko + Orílẹ́ède Malasia + Orílẹ́ède Moṣamibiku + Orílẹ́ède Namibia + Orílẹ́ède Kaledonia Titun + Orílẹ́ède Nàìjá + Orílẹ́ède Etikun Nọ́úfókì + Orílẹ́ède Nàìjíríà + Orílẹ́ède NIkaragua + Orílẹ́ède Nedalandi + Orílẹ́ède Nọọwii + Orílẹ́ède Nepa + Orílẹ́ède Nauru + Orílẹ́ède Niue + Orílẹ́ède ṣilandi Titun + Orílẹ́ède Ọọma + Orílẹ́ède Panama + Orílẹ́ède Peru + Orílẹ́ède Firenṣi Polinesia + Orílẹ́ède Paapu ti Giini + Orílẹ́ède filipini + Orílẹ́ède Pakisitan + Orílẹ́ède Polandi + Orílẹ́ède Pẹẹri ati mikuloni + Orílẹ́ède Pikarini + Orílẹ́ède Pọto Riko + Orílẹ́ède Iwọorun Pakisitian ati Gaṣa + Orílẹ́ède Pọtugi + Orílẹ́ède Paalu + Orílẹ́ède Paraguye + Orílẹ́ède Kota + Orílẹ́ède Riuniyan + Orílẹ́ède Romaniya + Orílẹ́ède Rọṣia + Orílẹ́ède Ruwanda + Orílẹ́ède Saudi Arabia + Orílẹ́ède Etikun Solomoni + Orílẹ́ède seṣẹlẹsi + Orílẹ́ède Sudani + Orílẹ́ède Swidini + Orílẹ́ède Singapo + Orílẹ́ède Hẹlena + Orílẹ́ède Silofania + Orílẹ́ède Silofakia + Orílẹ́ède Siria looni + Orílẹ́ède Sani Marino + Orílẹ́ède Sẹnẹga + Orílẹ́ède Somalia + Orílẹ́ède Surinami + Gúúsù Sudan + Orílẹ́ède Sao tomi ati piriiṣipi + Orílẹ́ède Ẹẹsáfádò + Orílẹ́ède Siria + Orílẹ́ède Saṣiland + Orílẹ́ède Tọọki ati Etikun Kakọsi + Orílẹ́ède ṣààdì + Orílẹ́ède Togo + Orílẹ́ède Tailandi + Orílẹ́ède Takisitani + Orílẹ́ède Tokelau + Orílẹ́ède ÌlàOòrùn Tímọ̀ + Orílẹ́ède Tọọkimenisita + Orílẹ́ède Tuniṣia + Orílẹ́ède Tonga + Orílẹ́ède Tọọki + Orílẹ́ède Tirinida ati Tobaga + Orílẹ́ède Tufalu + Orílẹ́ède Taiwani + Orílẹ́ède Tanṣania + Orílẹ́ède Ukarini + Orílẹ́ède Uganda + Orílẹ́ède Orilẹede Amerika + Orílẹ́ède Nruguayi + Orílẹ́ède Nṣibẹkisitani + Orílẹ́ède Fatikani + Orílẹ́ède Fisẹnnti ati Genadina + Orílẹ́ède Fẹnẹṣuẹla + Orílẹ́ède Etíkun Fágínì ti ìlú Bírítísì + Orílẹ́ède Etikun Fagini ti Amẹrika + Orílẹ́ède Fẹtinami + Orílẹ́ède Faniatu + Orílẹ́ède Wali ati futuna + Orílẹ́ède Samọ + Orílẹ́ède yemeni + Orílẹ́ède Mayote + Orílẹ́ède Ariwa Afirika + Orílẹ́ède ṣamibia + Orílẹ́ède ṣimibabe + + + + [a á à b d e é è ẹ {ẹ\u0301} {ẹ\u0300} f g {gb} h i í ì j k l m n o ó ò ọ {ọ\u0301} {ọ\u0300} p r s ṣ t u ú ù w y] + [c q v x z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Ṣẹ́rẹ́ + Èrèlè + Ẹrẹ̀nà + Ìgbé + Ẹ̀bibi + Òkúdu + Agẹmọ + Ògún + Owewe + Ọ̀wàrà + Bélú + Ọ̀pẹ̀ + + + Oṣù Ṣẹ́rẹ́ + Oṣù Èrèlè + Oṣù Ẹrẹ̀nà + Oṣù Ìgbé + Oṣù Ẹ̀bibi + Oṣù Òkúdu + Oṣù Agẹmọ + Oṣù Ògún + Oṣù Owewe + Oṣù Ọ̀wàrà + Oṣù Bélú + Oṣù Ọ̀pẹ̀ + + + + + + + Àìkú + Ajé + Ìsẹ́gun + Ọjọ́rú + Ọjọ́bọ + Ẹtì + Àbámẹ́ta + + + Ọjọ́ Àìkú + Ọjọ́ Ajé + Ọjọ́ Ìsẹ́gun + Ọjọ́rú + Ọjọ́bọ + Ọjọ́ Ẹtì + Ọjọ́ Àbámẹ́ta + + + + + + + K1 + K2 + K3 + K4 + + + Kọ́tà Kínní + Kọ́tà Kejì + Kọ́à Keta + Kọ́tà Kẹrin + + + + + + + Àárọ̀ + Ọ̀sán + + + + + + Saju Kristi + Lehin Kristi + + + SK + LK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ìgbà + + + Ọdún + + + Osù + + + Ọ̀sè + + + Ọjọ́ + íjẹta + Àná + Òní + Ọ̀la + òtúùnla + + + Ọjọ́ Ọ̀sẹ̀ + + + Àárọ̀/ọ̀sán + + + wákàtí + + + Ìsẹ́jú + + + Ìsẹ́jú Ààyá + + + Ibi Àkókò Àgbáyé + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Diami ti Awon Orílẹ́ède Arabu + + + Wansa ti Orílẹ́ède Àngólà + + + Dọla ti Orílẹ́ède Ástràlìá + + + Dina ti Orílẹ́ède Báránì + + + Faransi ti Orílẹ́ède Bùùrúndì + + + Pula ti Orílẹ́ède Bọ̀tìsúwánà + + + Dọla ti Orílẹ́ède Kánádà + + + Faransi ti Orílẹ́ède Kóngò + + + Faransi ti Orílẹ́ède Siwisi + + + Reminibi ti Orílẹ́ède ṣáínà + + + Kabofediano ti Orílẹ́ède Esuodo + + + Faransi ti Orílẹ́ède Dibouti + + + Dina ti Orílẹ́ède Àlùgèríánì + + + pọọn ti Orílẹ́ède Egipiti + + + Nakifa ti Orílẹ́ède Eriteriani + + + Biri ti Orílẹ́ède Eutopia + + + Uro + + + Pọọn ti Orílẹ́ède Bírítísì + + + ṣidi ti Orílẹ́ède Gana + + + Dalasi ti Orílẹ́ède Gamibia + + + Faransi ti Orílẹ́ède Gini + + + Rupi ti Orílẹ́ède Indina + + + Yeni ti Orílẹ́ède Japani + + + ṣiili ti Orílẹ́ède Kenya + + + Faransi ti Orílẹ́ède ṣomoriani + + + Dọla ti Orílẹ́ède Liberia + + + Loti ti Orílẹ́ède Lesoto + + + Dina ti Orílẹ́ède Libiya + + + Dirami ti Orílẹ́ède Moroko + + + Faransi ti Orílẹ́ède Malagasi + + + Ouguiya ti Orílẹ́ède Maritania + + + Rupi ti Orílẹ́ède Maritiusi + + + Kaṣa ti Orílẹ́ède Malawi + + + Metika ti Orílẹ́ède Mosamibiki + + + Dọla ti Orílẹ́ède Namibia + + + Naira ti Orílẹ́ède Nàìjíríà + + + + Faransi ti Orílẹ́ède Ruwanda + + + Riya ti Orílẹ́ède Saudi + + + Rupi ti Orílẹ́ède Sayiselesi + + + Dina ti Orílẹ́ède Sudani + + + Pọọun ti Orílẹ́ède Sudani + + + Pọọun ti Orílẹ́ède ̣Elena + + + Lioni + + + Sile ti Orílẹ́ède Somali + + + Dobira ti Orílẹ́ède Sao tome Ati Pirisipe + + + Lilangeni + + + Dina ti Orílẹ́ède Tunisia + + + Sile ti Orílẹ́ède Tansania + + + Siile ti Orílẹ́ède Uganda + + + Dọla ti Orílẹ́ède Amerika + + + Faransi ti Orílẹ́ède BEKA + + + Faransi ti Orílẹ́ède BIKEAO + + + Randi ti Orílẹ́ède Ariwa Afirika + + + Kawaṣa ti Orílẹ́ède Saabia (1968–2012) + + + Kawaṣa ti Orílẹ́ède Saabia + + + Dọla ti Orílẹ́ède Siibabuwe + + + + + + Bẹ́ẹ̀ni :N + Bẹ́ẹ̀kọ́:K + + + + diff --git a/library/Zend/Locale/Data/yo_BJ.xml b/library/Zend/Locale/Data/yo_BJ.xml new file mode 100755 index 000000000..d0b2c2984 --- /dev/null +++ b/library/Zend/Locale/Data/yo_BJ.xml @@ -0,0 +1,797 @@ + + + + + + + + + + + + + Èdè Afrikani + Èdè Akani + Èdè Amariki + Èdè Arabiki + Ti Assam + Èdè Azerbaijani + Èdè Belarusi + Èdè Bugaria + Èdè Bengali + Èdè Bretoni + Èdè Bosnia + Èdè Catala + Èdè seeki + Èdè Welshi + Èdè Ilɛ̀ Denmark + Èdè Ilɛ̀ Gemani + Èdè Giriki + Èdè Gɛ̀ɛ́sì + Èdè Esperanto + Èdè Sipanisi + Èdè Estonia + Èdè Baski + Èdè Pasia + Èdè Finisi + Èdè Tagalogi + Èdè Faroesi + Èdè Faransé + Èdè Frisia + Èdè Ireland + Èdè Gaelik ti Ilu Scotland + Èdè Galicia + Èdè Guarani + Èdè Gujarati + Èdè Hausa + Èdè Heberu + Èdè Hindi + Èdè Kroatia + Èdè Hungaria + Èdè Ile Armenia + Èdè pipo + Èdè Indonasia + Iru Èdè + Èdè Ibo + Èdè Icelandic + Èdè Italiani + Èdè Japanisi + Èdè Javanasi + Èdè Georgia + Èdè kameri + Èdè Kannada + Èdè Koria + Èdè Latini + Èdè Lithuania + Èdè Latvianu + Èdè Macedonia + Èdè marathi + Èdè Malaya + Èdè Malta + Èdè Bumiisi + Èdè Nepali + Èdè Duki + Èdè Norway + Èdè Occitani + Èdè Punjabi + Èdè Ilɛ̀ Polandi + Èdè Pɔtugi + Èdè Romania + Èdè ̣Rɔɔsia + Èdè Ruwanda + Èdè awon ara Indo + Èdè Sindhi + Èdè Serbo-Croatiani + Èdè Sinhalese + Èdè Slovaki + Èdè Slovenia + Èdè ara Somalia + Èdè Albania + Èdè Serbia + Èdè Sesoto + Èdè Sudani + Èdè Suwidiisi + Èdè Swahili + Èdè Tamili + Èdè Telugu + Èdè Tai + Èdè Tigrinya + Èdè Turkmen + Èdè Klingoni + Èdè Tɔɔkisi + Èdè Ukania + Èdè Udu + Èdè Uzbek + Èdè Jetinamu + Èdè Xhosa + Èdè Yiddishi + Èdè Yorùbá + Èdè Mandari + Èdè Shulu + + + Orílɛ́ède Ààndórà + Orílɛ́ède Ɛmirate ti Awɔn Arabu + Orílɛ́ède Àfùgànístánì + Orílɛ́ède Ààntígúà àti Báríbúdà + Orílɛ́ède Ààngúlílà + Orílɛ́ède Àlùbàníánì + Orílɛ́ède Améníà + Orílɛ́ède Nedalandi ti Antelisi + Orílɛ́ède Ààngólà + Orílɛ́ède Agentínà + Sámóánì ti Orílɛ́ède Àméríkà + Orílɛ́ède Asítíríà + Orílɛ́ède Ástràlìá + Orílɛ́ède Árúbà + Orílɛ́ède Asɛ́bájánì + Orílɛ́ède Bɔ̀síníà àti Ɛtisɛgófínà + Orílɛ́ède Bábádósì + Orílɛ́ède Bángáládésì + Orílɛ́ède Bégíɔ́mù + Orílɛ́ède Bùùkíná Fasò + Orílɛ́ède Bùùgáríà + Orílɛ́ède Báránì + Orílɛ́ède Bùùrúndì + Orílɛ́ède Bɛ̀nɛ̀ + Orílɛ́ède Bémúdà + Orílɛ́ède Búrúnɛ́lì + Orílɛ́ède Bɔ̀lífíyà + Orílɛ́ède Bàràsílì + Orílɛ́ède Bàhámásì + Orílɛ́ède Bútánì + Orílɛ́ède Bɔ̀tìsúwánà + Orílɛ́ède Bélárúsì + Orílɛ́ède Bèlísɛ̀ + Orílɛ́ède Kánádà + Orilɛ́ède Kóngò + Orílɛ́ède Àrin gùngun Áfíríkà + Orílɛ́ède Kóngò + Orílɛ́ède switishilandi + Orílɛ́ède Kóútè forà + Orílɛ́ède Etíokun Kùúkù + Orílɛ́ède shílè + Orílɛ́ède Kamerúúnì + Orílɛ́ède sháínà + Orílɛ́ède Kòlómíbìa + Orílɛ́ède Kuusita Ríkà + Orílɛ́ède Kúbà + Orílɛ́ède Etíokun Kápé féndè + Orílɛ́ède Kúrúsì + Orílɛ́ède shɛ́ɛ́kì + Orílɛ́ède Gemani + Orílɛ́ède Díbɔ́ótì + Orílɛ́ède Dɛ́mákì + Orílɛ́ède Dòmíníkà + Orilɛ́ède Dòmíníkánì + Orílɛ́ède Àlùgèríánì + Orílɛ́ède Ekuádò + Orílɛ́ède Esitonia + Orílɛ́ède Égípítì + Orílɛ́ède Eritira + Orílɛ́ède Sipani + Orílɛ́ède Etopia + Orílɛ́ède Filandi + Orílɛ́ède Fiji + Orílɛ́ède Etikun Fakalandi + Orílɛ́ède Makoronesia + Orílɛ́ède Faranse + Orílɛ́ède Gabon + Orílɛ́ède Omobabirin + Orílɛ́ède Genada + Orílɛ́ède Gɔgia + Orílɛ́ède Firenshi Guana + Orílɛ́ède Gana + Orílɛ́ède Gibaratara + Orílɛ́ède Gerelandi + Orílɛ́ède Gambia + Orílɛ́ède Gene + Orílɛ́ède Gadelope + Orílɛ́ède Ekutoria Gini + Orílɛ́ède Geriisi + Orílɛ́ède Guatemala + Orílɛ́ède Guamu + Orílɛ́ède Gene-Busau + Orílɛ́ède Guyana + Orílɛ́ède Hondurasi + Orílɛ́ède Kòróátíà + Orílɛ́ède Haati + Orílɛ́ède Hungari + Orílɛ́ède Indonesia + Orílɛ́ède Ailandi + Orílɛ́ède Iserɛli + Orílɛ́ède India + Orílɛ́ède Etíkun Índíánì ti Ìlú Bírítísì + Orílɛ́ède Iraki + Orílɛ́ède Irani + Orílɛ́ède Ashilandi + Orílɛ́ède Italiyi + Orílɛ́ède Jamaika + Orílɛ́ède Jɔdani + Orílɛ́ède Japani + Orílɛ́ède Kenya + Orílɛ́ède Kurishisitani + Orílɛ́ède Kàmùbódíà + Orílɛ́ède Kiribati + Orílɛ́ède Kòmòrósì + Orílɛ́ède Kiiti ati Neefi + Orílɛ́ède Guusu Kɔria + Orílɛ́ède Ariwa Kɔria + Orílɛ́ède Kuweti + Orílɛ́ède Etíokun Kámánì + Orílɛ́ède Kashashatani + Orílɛ́ède Laosi + Orílɛ́ède Lebanoni + Orílɛ́ède Lushia + Orílɛ́ède Lɛshitɛnisiteni + Orílɛ́ède Siri Lanka + Orílɛ́ède Laberia + Orílɛ́ède Lesoto + Orílɛ́ède Lituania + Orílɛ́ède Lusemogi + Orílɛ́ède Latifia + Orílɛ́ède Libiya + Orílɛ́ède Moroko + Orílɛ́ède Monako + Orílɛ́ède Modofia + Orílɛ́ède Madasika + Orílɛ́ède Etikun Máshali + Orílɛ́ède Masidonia + Orílɛ́ède Mali + Orílɛ́ède Manamari + Orílɛ́ède Mogolia + Orílɛ́ède Etikun Guusu Mariana + Orílɛ́ède Matinikuwi + Orílɛ́ède Maritania + Orílɛ́ède Motserati + Orílɛ́ède Malata + Orílɛ́ède Maritiusi + Orílɛ́ède Maladifi + Orílɛ́ède Malawi + Orílɛ́ède Mesiko + Orílɛ́ède Malasia + Orílɛ́ède Moshamibiku + Orílɛ́ède Namibia + Orílɛ́ède Kaledonia Titun + Orílɛ́ède Nàìjá + Orílɛ́ède Etikun Nɔ́úfókì + Orílɛ́ède Nàìjíríà + Orílɛ́ède NIkaragua + Orílɛ́ède Nedalandi + Orílɛ́ède Nɔɔwii + Orílɛ́ède Nepa + Orílɛ́ède Nauru + Orílɛ́ède Niue + Orílɛ́ède shilandi Titun + Orílɛ́ède Ɔɔma + Orílɛ́ède Panama + Orílɛ́ède Peru + Orílɛ́ède Firenshi Polinesia + Orílɛ́ède Paapu ti Giini + Orílɛ́ède filipini + Orílɛ́ède Pakisitan + Orílɛ́ède Polandi + Orílɛ́ède Pɛɛri ati mikuloni + Orílɛ́ède Pikarini + Orílɛ́ède Pɔto Riko + Orílɛ́ède Iwɔorun Pakisitian ati Gasha + Orílɛ́ède Pɔtugi + Orílɛ́ède Paalu + Orílɛ́ède Paraguye + Orílɛ́ède Kota + Orílɛ́ède Riuniyan + Orílɛ́ède Romaniya + Orílɛ́ède Rɔshia + Orílɛ́ède Ruwanda + Orílɛ́ède Saudi Arabia + Orílɛ́ède Etikun Solomoni + Orílɛ́ède seshɛlɛsi + Orílɛ́ède Sudani + Orílɛ́ède Swidini + Orílɛ́ède Singapo + Orílɛ́ède Hɛlena + Orílɛ́ède Silofania + Orílɛ́ède Silofakia + Orílɛ́ède Siria looni + Orílɛ́ède Sani Marino + Orílɛ́ède Sɛnɛga + Orílɛ́ède Somalia + Orílɛ́ède Surinami + Gúúsù Sudan + Orílɛ́ède Sao tomi ati piriishipi + Orílɛ́ède Ɛɛsáfádò + Orílɛ́ède Siria + Orílɛ́ède Sashiland + Orílɛ́ède Tɔɔki ati Etikun Kakɔsi + Orílɛ́ède shààdì + Orílɛ́ède Togo + Orílɛ́ède Tailandi + Orílɛ́ède Takisitani + Orílɛ́ède Tokelau + Orílɛ́ède ÌlàOòrùn Tímɔ̀ + Orílɛ́ède Tɔɔkimenisita + Orílɛ́ède Tunishia + Orílɛ́ède Tonga + Orílɛ́ède Tɔɔki + Orílɛ́ède Tirinida ati Tobaga + Orílɛ́ède Tufalu + Orílɛ́ède Taiwani + Orílɛ́ède Tanshania + Orílɛ́ède Ukarini + Orílɛ́ède Uganda + Orílɛ́ède Orilɛede Amerika + Orílɛ́ède Nruguayi + Orílɛ́ède Nshibɛkisitani + Orílɛ́ède Fatikani + Orílɛ́ède Fisɛnnti ati Genadina + Orílɛ́ède Fɛnɛshuɛla + Orílɛ́ède Etíkun Fágínì ti ìlú Bírítísì + Orílɛ́ède Etikun Fagini ti Amɛrika + Orílɛ́ède Fɛtinami + Orílɛ́ède Faniatu + Orílɛ́ède Wali ati futuna + Orílɛ́ède Samɔ + Orílɛ́ède yemeni + Orílɛ́ède Mayote + Orílɛ́ède Ariwa Afirika + Orílɛ́ède shamibia + Orílɛ́ède shimibabe + + + + [a á à b d e é è ɛ {ɛ\u0301} {ɛ\u0300} f g {gb} h i í ì j k l m n o ó ò ɔ {ɔ\u0301} {ɔ\u0300} p r s {sh} t u ú ù w y] + [c q v x z] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + + + + + + + + + + + + + + EEEE, d MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + dd/MM/y GGGGG + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + + Shɛ́rɛ́ + Èrèlè + Ɛrɛ̀nà + Ìgbé + Ɛ̀bibi + Òkúdu + Agɛmɔ + Ògún + Owewe + Ɔ̀wàrà + Bélú + Ɔ̀pɛ̀ + + + Oshù Shɛ́rɛ́ + Oshù Èrèlè + Oshù Ɛrɛ̀nà + Oshù Ìgbé + Oshù Ɛ̀bibi + Oshù Òkúdu + Oshù Agɛmɔ + Oshù Ògún + Oshù Owewe + Oshù Ɔ̀wàrà + Oshù Bélú + Oshù Ɔ̀pɛ̀ + + + + + + + Àìkú + Ajé + Ìsɛ́gun + Ɔjɔ́rú + Ɔjɔ́bɔ + Ɛtì + Àbámɛ́ta + + + Ɔjɔ́ Àìkú + Ɔjɔ́ Ajé + Ɔjɔ́ Ìsɛ́gun + Ɔjɔ́rú + Ɔjɔ́bɔ + Ɔjɔ́ Ɛtì + Ɔjɔ́ Àbámɛ́ta + + + + + + + K1 + K2 + K3 + K4 + + + Kɔ́tà Kínní + Kɔ́tà Kejì + Kɔ́à Keta + Kɔ́tà Kɛrin + + + + + + + Àárɔ̀ + Ɔ̀sán + + + + + + Saju Kristi + Lehin Kristi + + + SK + LK + + + + + + EEEE, d MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + dd/MM/y + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + d + h:mm a + HH:mm + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + MMMM d + E, MMMM d + mm:ss + y + M/y + E, M/d/y + MMM y + E, MMM d, y + MMMM y + QQQ y + QQQQ y + + + + + + + Ìgbà + + + Ɔdún + + + Osù + + + Ɔ̀sè + + + Ɔjɔ́ + íjɛta + Àná + Òní + Ɔ̀la + òtúùnla + + + Ɔjɔ́ Ɔ̀sɛ̀ + + + Àárɔ̀/ɔ̀sán + + + wákàtí + + + Ìsɛ́jú + + + Ìsɛ́jú Ààyá + + + Ibi Àkókò Àgbáyé + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + Diami ti Awon Orílɛ́ède Arabu + + + Wansa ti Orílɛ́ède Àngólà + + + Dɔla ti Orílɛ́ède Ástràlìá + + + Dina ti Orílɛ́ède Báránì + + + Faransi ti Orílɛ́ède Bùùrúndì + + + Pula ti Orílɛ́ède Bɔ̀tìsúwánà + + + Dɔla ti Orílɛ́ède Kánádà + + + Faransi ti Orílɛ́ède Kóngò + + + Faransi ti Orílɛ́ède Siwisi + + + Reminibi ti Orílɛ́ède sháínà + + + Kabofediano ti Orílɛ́ède Esuodo + + + Faransi ti Orílɛ́ède Dibouti + + + Dina ti Orílɛ́ède Àlùgèríánì + + + pɔɔn ti Orílɛ́ède Egipiti + + + Nakifa ti Orílɛ́ède Eriteriani + + + Biri ti Orílɛ́ède Eutopia + + + Uro + + + Pɔɔn ti Orílɛ́ède Bírítísì + + + shidi ti Orílɛ́ède Gana + + + Dalasi ti Orílɛ́ède Gamibia + + + Faransi ti Orílɛ́ède Gini + + + Rupi ti Orílɛ́ède Indina + + + Yeni ti Orílɛ́ède Japani + + + shiili ti Orílɛ́ède Kenya + + + Faransi ti Orílɛ́ède shomoriani + + + Dɔla ti Orílɛ́ède Liberia + + + Loti ti Orílɛ́ède Lesoto + + + Dina ti Orílɛ́ède Libiya + + + Dirami ti Orílɛ́ède Moroko + + + Faransi ti Orílɛ́ède Malagasi + + + Ouguiya ti Orílɛ́ède Maritania + + + Rupi ti Orílɛ́ède Maritiusi + + + Kasha ti Orílɛ́ède Malawi + + + Metika ti Orílɛ́ède Mosamibiki + + + Dɔla ti Orílɛ́ède Namibia + + + Naira ti Orílɛ́ède Nàìjíríà + + + + Faransi ti Orílɛ́ède Ruwanda + + + Riya ti Orílɛ́ède Saudi + + + Rupi ti Orílɛ́ède Sayiselesi + + + Dina ti Orílɛ́ède Sudani + + + Pɔɔun ti Orílɛ́ède Sudani + + + Pɔɔun ti Orílɛ́ède ̣Elena + + + Lioni + + + Sile ti Orílɛ́ède Somali + + + Dobira ti Orílɛ́ède Sao tome Ati Pirisipe + + + Lilangeni + + + Dina ti Orílɛ́ède Tunisia + + + Sile ti Orílɛ́ède Tansania + + + Siile ti Orílɛ́ède Uganda + + + Dɔla ti Orílɛ́ède Amerika + + + Faransi ti Orílɛ́ède BEKA + + + Faransi ti Orílɛ́ède BIKEAO + + + Randi ti Orílɛ́ède Ariwa Afirika + + + Kawasha ti Orílɛ́ède Saabia (1968–2012) + + + Kawasha ti Orílɛ́ède Saabia + + + Dɔla ti Orílɛ́ède Siibabuwe + + + + + + Bɛ́ɛ̀ni :N + Bɛ́ɛ̀kɔ́:K + + + + diff --git a/library/Zend/Locale/Data/yo_NG.xml b/library/Zend/Locale/Data/yo_NG.xml new file mode 100755 index 000000000..6649002a5 --- /dev/null +++ b/library/Zend/Locale/Data/yo_NG.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/zgh.xml b/library/Zend/Locale/Data/zgh.xml new file mode 100755 index 000000000..89bb65ab9 --- /dev/null +++ b/library/Zend/Locale/Data/zgh.xml @@ -0,0 +1,755 @@ + + + + + + + + + + + + ⵜⴰⴽⴰⵏⵜ + ⵜⴰⵎⵀⴰⵔⵉⵜ + ⵜⴰⵄⵔⴰⴱⵜ + ⵜⴰⴱⵉⵍⴰⵔⵓⵙⵜ + ⵜⴰⴱⵍⵖⴰⵔⵉⵜ + ⵜⴰⴱⵏⵖⴰⵍⵉⵜ + ⵜⴰⵜⵛⵉⴽⵉⵜ + ⵜⴰⵍⵉⵎⴰⵏⵜ + ⵜⴰⴳⵔⵉⴳⵉⵜ + ⵜⴰⵏⴳⵍⵉⵣⵜ + ⵜⴰⵙⴱⵏⵢⵓⵍⵉⵜ + ⵜⴰⴼⵓⵔⵙⵉⵜ + ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ + ⵜⴰⵀⴰⵡⵙⴰⵜ + ⵜⴰⵀⵉⵏⴷⵉⵜ + ⵜⴰⵀⵏⵖⴰⵔⵉⵜ + ⵜⴰⵏⴷⵓⵏⵉⵙⵉⵜ + ⵜⵉⴳⴱⵓⵜ + ⵜⴰⵟⴰⵍⵢⴰⵏⵜ + ⵜⴰⵊⴰⴱⴱⵓⵏⵉⵜ + ⵜⴰⵊⴰⴱⴰⵏⵉⵜ + ⵜⴰⵅⵎⵉⵔⵜ + ⵜⴰⴽⵓⵔⵉⵜ + ⵜⴰⵎⴰⵍⴰⵡⵉⵜ + ⵜⴰⴱⵉⵔⵎⴰⵏⵉⵜ + ⵜⴰⵏⵉⴱⴰⵍⵉⵜ + ⵜⴰⵀⵓⵍⴰⵏⴷⵉⵜ + ⵜⴰⴱⵏⵊⴰⴱⵉⵜ + ⵜⴰⴱⵓⵍⵓⵏⵉⵜ + ⵜⴰⴱⵕⵟⵇⵉⵣⵜ + ⵜⴰⵔⵓⵎⴰⵏⵉⵜ + ⵜⴰⵔⵓⵙⵉⵜ + ⵜⴰⵔⵓⵡⴰⵏⴷⵉⵜ + ⵜⴰⵙⵓⵎⴰⵍⵉⵜ + ⵜⴰⵙⵡⵉⴷⵉⵜ + ⵜⴰⵜⴰⵎⵉⵍⵜ + ⵜⴰⵜⴰⵢⵍⴰⵏⴷⵉⵜ + ⵜⴰⵜⵓⵔⴽⵉⵜ + ⵜⵓⴽⵔⴰⵏⵉⵜ + ⵜⵓⵔⴷⵓⵜ + ⵜⴰⴱⵉⵜⵏⴰⵎⵉⵜ + ⵜⴰⵢⵔⵓⴱⴰⵜ + ⵜⴰⵎⴰⵣⵉⵖⵜ + ⵜⴰⵛⵉⵏⵡⵉⵜ + ⵜⴰⵣⵓⵍⵓⵜ + + + ⴰⵏⴷⵓⵔⴰ + ⵍⵉⵎⴰⵔⴰⵜ + ⴰⴼⵖⴰⵏⵉⵙⵜⴰⵏ + ⴰⵏⵜⵉⴳⴰ ⴷ ⴱⵔⴱⵓⴷⴰ + ⴰⵏⴳⵉⵍⴰ + ⴰⵍⴱⴰⵏⵢⴰ + ⴰⵔⵎⵉⵏⵢⴰ + ⴰⵏⴳⵓⵍⴰ + ⴰⵔⵊⴰⵏⵜⵉⵏ + ⵙⴰⵎⵡⴰ ⵜⴰⵎⵉⵔⵉⴽⴰⵏⵉⵜ + ⵏⵏⵎⵙⴰ + ⵓⵙⵜⵔⴰⵍⵢⴰ + ⴰⵔⵓⴱⴰ + ⴰⴷⵔⴰⴱⵉⵊⴰⵏ + ⴱⵓⵙⵏⴰ ⴷ ⵀⵉⵔⵙⵉⴽ + ⴱⴰⵔⴱⴰⴷ + ⴱⴰⵏⴳⵍⴰⴷⵉⵛ + ⴱⵍⵊⵉⴽⴰ + ⴱⵓⵔⴽⵉⵏⴰ ⴼⴰⵙⵓ + ⴱⵍⵖⴰⵔⵢⴰ + ⴱⵃⵔⴰⵢⵏ + ⴱⵓⵔⵓⵏⴷⵉ + ⴱⵉⵏⵉⵏ + ⴱⵔⵎⵓⴷⴰ + ⴱⵔⵓⵏⵉ + ⴱⵓⵍⵉⴱⵢⴰ + ⴱⵔⴰⵣⵉⵍ + ⴱⴰⵀⴰⵎⴰⵙ + ⴱⵀⵓⵜⴰⵏ + ⴱⵓⵜⵙⵡⴰⵏⴰ + ⴱⵉⵍⴰⵔⵓⵙⵢⴰ + ⴱⵉⵍⵉⵣ + ⴽⴰⵏⴰⴷⴰ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵉⵎⵓⵇⵔⴰⵜⵉⵜ ⵏ ⴽⵓⵏⴳⵓ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵏⴰⵎⵎⴰⵙⵜ ⵏ ⵉⴼⵔⵉⵇⵢⴰ + ⴽⵓⵏⴳⵓ + ⵙⵡⵉⵙⵔⴰ + ⴽⵓⵜ ⴷⵉⴼⵡⴰⵔ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⵓⴽ + ⵛⵛⵉⵍⵉ + ⴽⴰⵎⵉⵔⵓⵏ + ⵛⵛⵉⵏⵡⴰ + ⴽⵓⵍⵓⵎⴱⵢⴰ + ⴽⵓⵙⵜⴰ ⵔⵉⴽⴰ + ⴽⵓⴱⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ + ⵇⵓⴱⵔⵓⵙ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⵜⵛⵉⴽⵉⵜ + ⴰⵍⵎⴰⵏⵢⴰ + ⴷⵊⵉⴱⵓⵜⵉ + ⴷⴰⵏⵎⴰⵔⴽ + ⴷⵓⵎⵉⵏⵉⴽ + ⵜⴰⴳⴷⵓⴷⴰⵏⵜ ⵜⴰⴷⵓⵎⵉⵏⵉⴽⵜ + ⴷⵣⴰⵢⵔ + ⵉⴽⵡⴰⴷⵓⵔ + ⵉⵙⵜⵓⵏⵢⴰ + ⵎⵉⵚⵕ + ⵉⵔⵉⵜⵉⵔⵢⴰ + ⵙⴱⴰⵏⵢⴰ + ⵉⵜⵢⵓⴱⵢⴰ + ⴼⵉⵍⵍⴰⵏⴷⴰ + ⴼⵉⴷⵊⵉ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵍⴰⵡⵉ + ⵎⵉⴽⵔⵓⵏⵉⵣⵢⴰ + ⴼⵔⴰⵏⵙⴰ + ⴳⴰⴱⵓⵏ + ⵜⴰⴳⵍⴷⵉⵜ ⵉⵎⵓⵏⵏ + ⵖⵔⵏⴰⵟⴰ + ⵊⵓⵔⵊⵢⴰ + ⴳⵡⵉⵢⴰⵏ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ + ⵖⴰⵏⴰ + ⴰⴷⵔⴰⵔ ⵏ ⵟⴰⵕⵉⵇ + ⴳⵔⵉⵍⴰⵏⴷ + ⴳⴰⵎⴱⵢⴰ + ⵖⵉⵏⵢⴰ + ⴳⵡⴰⴷⴰⵍⵓⴱ + ⵖⵉⵏⵢⴰ ⵏ ⵉⴽⵡⴰⴷⵓⵔ + ⵍⵢⵓⵏⴰⵏ + ⴳⵡⴰⵜⵉⵎⴰⵍⴰ + ⴳⵡⴰⵎ + ⵖⵉⵏⵢⴰ ⴱⵉⵙⴰⵡ + ⴳⵡⵉⵢⴰⵏⴰ + ⵀⵓⵏⴷⵓⵔⴰⵙ + ⴽⵔⵡⴰⵜⵢⴰ + ⵀⴰⵢⵜⵉ + ⵀⵏⵖⴰⵔⵢⴰ + ⴰⵏⴷⵓⵏⵉⵙⵢⴰ + ⵉⵔⵍⴰⵏⴷⴰ + ⵉⵙⵔⴰⵢⵉⵍ + ⵍⵀⵉⵏⴷ + ⵜⴰⵎⵏⴰⴹⵜ ⵜⴰⵏⴳⵍⵉⵣⵉⵜ ⵏ ⵓⴳⴰⵔⵓ ⴰⵀⵉⵏⴷⵉ + ⵍⵄⵉⵔⴰⵇ + ⵉⵔⴰⵏ + ⵉⵙⵍⴰⵏⴷ + ⵉⵟⴰⵍⵢⴰ + ⵊⴰⵎⴰⵢⴽⴰ + ⵍⵓⵔⴷⵓⵏ + ⵍⵢⴰⴱⴰⵏ + ⴽⵉⵏⵢⴰ + ⴽⵉⵔⵖⵉⵣⵉⵙⵜⴰⵏ + ⴽⴰⵎⴱⵓⴷⵢⴰ + ⴽⵉⵔⵉⴱⴰⵜⵉ + ⵇⵓⵎⵓⵔ + ⵙⴰⵏⴽⵔⵉⵙ ⴷ ⵏⵉⴼⵉⵙ + ⴽⵓⵔⵢⴰ ⵏ ⵉⵥⵥⵍⵎⴹ + ⴽⵓⵔⵢⴰ ⵏ ⵉⴼⴼⵓⵙ + ⵍⴽⵡⵉⵜ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⴽⴰⵢⵎⴰⵏ + ⴽⴰⵣⴰⵅⵙⵜⴰⵏ + ⵍⴰⵡⵙ + ⵍⵓⴱⵏⴰⵏ + ⵙⴰⵏⵜⵍⵓⵙⵉ + ⵍⵉⴽⵉⵏⵛⵜⴰⵢⵏ + ⵙⵔⵉⵍⴰⵏⴽⴰ + ⵍⵉⴱⵉⵔⵢⴰ + ⵍⵉⵚⵓⵟⵓ + ⵍⵉⵜⵡⴰⵏⵢⴰ + ⵍⵓⴽⵙⴰⵏⴱⵓⵔⴳ + ⵍⴰⵜⴼⵢⴰ + ⵍⵉⴱⵢⴰ + ⵍⵎⵖⵔⵉⴱ + ⵎⵓⵏⴰⴽⵓ + ⵎⵓⵍⴷⵓⴼⵢⴰ + ⵎⵓⵏⵜⵉⵏⵉⴳⵔⵓ + ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵛⴰⵍ + ⵎⴰⵙⵉⴷⵓⵏⵢⴰ + ⵎⴰⵍⵉ + ⵎⵢⴰⵏⵎⴰⵔ + ⵎⵏⵖⵓⵍⵢⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵎⴰⵔⵢⴰⵏ ⵏ ⵉⵥⵥⵍⵎⴹ + ⵎⴰⵔⵜⵉⵏⵉⴽ + ⵎⵓⵕⵉⵟⴰⵏⵢⴰ + ⵎⵓⵏⵙⵉⵔⴰⵜ + ⵎⴰⵍⵟⴰ + ⵎⵓⵔⵉⵙ + ⵎⴰⵍⴷⵉⴼ + ⵎⴰⵍⴰⵡⵉ + ⵎⵉⴽⵙⵉⴽ + ⵎⴰⵍⵉⵣⵢⴰ + ⵎⵓⵣⵏⴱⵉⵇ + ⵏⴰⵎⵉⴱⵢⴰ + ⴽⴰⵍⵉⴷⵓⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ + ⵏⵏⵉⵊⵉⵔ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵏⵓⵔⴼⵓⵍⴽ + ⵏⵉⵊⵉⵔⵢⴰ + ⵏⵉⴽⴰⵔⴰⴳⵡⴰ + ⵀⵓⵍⴰⵏⴷⴰ + ⵏⵏⵔⵡⵉⵊ + ⵏⵉⴱⴰⵍ + ⵏⴰⵡⵔⵓ + ⵏⵉⵡⵉ + ⵏⵢⵓⵣⵉⵍⴰⵏⴷⴰ + ⵄⵓⵎⴰⵏ + ⴱⴰⵏⴰⵎⴰ + ⴱⵉⵔⵓ + ⴱⵓⵍⵉⵏⵉⵣⵢⴰ ⵜⴰⴼⵔⴰⵏⵙⵉⵙⵜ + ⴱⴰⴱⵡⴰ ⵖⵉⵏⵢⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ + ⴼⵉⵍⵉⴱⴱⵉⵏ + ⴱⴰⴽⵉⵙⵜⴰⵏ + ⴱⵓⵍⵓⵏⵢⴰ + ⵙⴰⵏⴱⵢⵉⵔ ⴷ ⵎⵉⴽⵍⵓⵏ + ⴱⵉⵜⴽⴰⵢⵔⵏ + ⴱⵓⵔⵜⵓ ⵔⵉⴽⵓ + ⴰⴳⵎⵎⴰⴹ ⵏ ⵜⴰⴳⵓⵜ ⴷ ⵖⵣⵣⴰ + ⴱⵕⵟⵇⵉⵣ + ⴱⴰⵍⴰⵡ + ⴱⴰⵔⴰⴳⵡⴰⵢ + ⵇⴰⵜⴰⵔ + ⵔⵉⵢⵓⵏⵢⵓⵏ + ⵔⵓⵎⴰⵏⵢⴰ + ⵙⵉⵔⴱⵢⴰ + ⵔⵓⵙⵢⴰ + ⵔⵡⴰⵏⴷⴰ + ⵙⵙⴰⵄⵓⴷⵉⵢⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵙⴰⵍⵓⵎⴰⵏ + ⵙⵙⵉⵛⵉⵍ + ⵙⵙⵓⴷⴰⵏ + ⵙⵙⵡⵉⴷ + ⵙⵏⵖⴰⴼⵓⵔⴰ + ⵙⴰⵏⵜⵉⵍⵉⵏ + ⵙⵍⵓⴼⵉⵏⵢⴰ + ⵙⵍⵓⴼⴰⴽⵢⴰ + ⵙⵙⵉⵔⴰⵍⵢⵓⵏ + ⵙⴰⵏⵎⴰⵔⵉⵏⵓ + ⵙⵙⵉⵏⵉⴳⴰⵍ + ⵚⵚⵓⵎⴰⵍ + ⵙⵓⵔⵉⵏⴰⵎ + ⵙⵙⵓⴷⴰⵏ ⵏ ⵉⴼⴼⵓⵙ + ⵙⴰⵡⵟⵓⵎⵉ ⴷ ⴱⵔⴰⵏⵙⵉⴱ + ⵙⴰⵍⴼⴰⴷⵓⵔ + ⵙⵓⵔⵢⴰ + ⵙⵡⴰⵣⵉⵍⴰⵏⴷⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵏ ⵜⵓⵔⴽⵢⴰ ⴷ ⴽⴰⵢⴽ + ⵜⵛⴰⴷ + ⵟⵓⴳⵓ + ⵟⴰⵢⵍⴰⵏⴷ + ⵜⴰⴷⵊⴰⴽⵉⵙⵜⴰⵏ + ⵟⵓⴽⵍⴰⵡ + ⵜⵉⵎⵓⵔ ⵏ ⵍⵇⴱⵍⵜ + ⵜⵓⵔⴽⵎⴰⵏⵙⵜⴰⵏ + ⵜⵓⵏⵙ + ⵟⵓⵏⴳⴰ + ⵜⵓⵔⴽⵢⴰ + ⵜⵔⵉⵏⵉⴷⴰⴷ ⴷ ⵟⵓⴱⴰⴳⵓ + ⵜⵓⴼⴰⵍⵓ + ⵟⴰⵢⵡⴰⵏ + ⵟⴰⵏⵥⴰⵏⵢⴰ + ⵓⴽⵔⴰⵏⵢⴰ + ⵓⵖⴰⵏⴷⴰ + ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ ⵏ ⵎⵉⵔⵉⴽⴰⵏ + ⵓⵔⵓⴳⵡⴰⵢ + ⵓⵣⴱⴰⴽⵉⵙⵜⴰⵏ + ⴰⵡⴰⵏⴽ ⵏ ⴼⴰⵜⵉⴽⴰⵏ + ⵙⴰⵏⴼⴰⵏⵙⴰⵏ ⴷ ⴳⵔⵉⵏⴰⴷⵉⵏ + ⴼⵉⵏⵣⵡⵉⵍⴰ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵏⵏⴳⵍⵉⵣ + ⵜⵉⴳⵣⵉⵔⵉⵏ ⵜⵉⵎⴳⴰⴷ ⵏ ⵉⵡⵓⵏⴰⴽ ⵎⵓⵏⵏⵉⵏ + ⴼⵉⵜⵏⴰⵎ + ⴼⴰⵏⵡⴰⵟⵓ + ⵡⴰⵍⵉⵙ ⴷ ⴼⵓⵜⵓⵏⴰ + ⵙⴰⵎⵡⴰ + ⵢⴰⵎⴰⵏ + ⵎⴰⵢⵓⵟ + ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ + ⵣⴰⵎⴱⵢⴰ + ⵣⵉⵎⴱⴰⴱⵡⵉ + + + ⴰⵙⵎⵍⵓⵙⵙⴰⵏ + ⴰⵏⵎⴰⵍⴰ ⵏ ⵓⵙⵜⴰⵢ + ⴰⴷⵔⵉⵎ + + + ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⴰⵇⴱⵟⵉ + ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⵏ ⵉⵜⵢⵓⴱⵢⴰ + ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⴰⴳⵔⵉⴳⵓⵔ + ⴰⵙⵎⵍⵓⵙⵙⴰⵏ ⵏ ⵍⵉⵙⵍⴰⵎ + + + + [ⴰ ⴱ ⴳ {ⴳⵯ} ⴷ ⴹ ⴻ ⴼ ⴽ {ⴽⵯ} ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ] + [ⴰ ⴱ ⴳ ⴷ ⴹ ⴻ ⴼ ⴽ ⵀ ⵃ ⵄ ⵅ ⵇ ⵉ ⵊ ⵍ ⵎ ⵏ ⵓ ⵔ ⵕ ⵖ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵥ] + + + « + » + + + + + + + + + + EEEE d MMMM y G + + + + + d MMMM y G + + + + + d MMM, y G + + + + + d/M/y GGGGG + + + + + + M + d/M + MMM + d MMM + E d MMM + y + + + + + + + + ⵉⵏⵏ + ⴱⵕⴰ + ⵎⴰⵕ + ⵉⴱⵔ + ⵎⴰⵢ + ⵢⵓⵏ + ⵢⵓⵍ + ⵖⵓⵛ + ⵛⵓⵜ + ⴽⵜⵓ + ⵏⵓⵡ + ⴷⵓⵊ + + + ⵉⵏⵏⴰⵢⵔ + ⴱⵕⴰⵢⵕ + ⵎⴰⵕⵚ + ⵉⴱⵔⵉⵔ + ⵎⴰⵢⵢⵓ + ⵢⵓⵏⵢⵓ + ⵢⵓⵍⵢⵓⵣ + ⵖⵓⵛⵜ + ⵛⵓⵜⴰⵏⴱⵉⵔ + ⴽⵜⵓⴱⵔ + ⵏⵓⵡⴰⵏⴱⵉⵔ + ⴷⵓⵊⴰⵏⴱⵉⵔ + + + + + + + + + + + + + + + + + + + + + + + ⴰⵙⴰ + ⴰⵢⵏ + ⴰⵙⵉ + ⴰⴽⵕ + ⴰⴽⵡ + ⴰⵙⵉⵎ + ⴰⵙⵉⴹ + + + ⴰⵙⴰⵎⴰⵙ + ⴰⵢⵏⴰⵙ + ⴰⵙⵉⵏⴰⵙ + ⴰⴽⵕⴰⵙ + ⴰⴽⵡⴰⵙ + ⴰⵙⵉⵎⵡⴰⵙ + ⴰⵙⵉⴹⵢⴰⵙ + + + + + + + ⴰⴽ 1 + ⴰⴽ 2 + ⴰⴽ 3 + ⴰⴽ 4 + + + ⴰⴽⵕⴰⴹⵢⵓⵔ 1 + ⴰⴽⵕⴰⴹⵢⵓⵔ 2 + ⴰⴽⵕⴰⴹⵢⵓⵔ 3 + ⴰⴽⵕⴰⴹⵢⵓⵔ 4 + + + + + + + ⵜⵉⴼⴰⵡⵜ + ⵜⴰⴷⴳⴳⵯⴰⵜ + + + + + + ⴷⴰⵜ ⵏ ⵄⵉⵙⴰ + ⴷⴼⴼⵉⵔ ⵏ ⵄⵉⵙⴰ + + + ⴷⴰⵄ + ⴷⴼⵄ + + + + + + EEEE d MMMM y + + + + + d MMMM y + + + + + d MMM, y + + + + + d/M/y + + + + + + + HH:mm:ss zzzz + + + + + HH:mm:ss z + + + + + HH:mm:ss + + + + + HH:mm + + + + + + M + d/M + MMM + d MMM + E d MMM + m:ss + y + M/y + E d/M/y + MMM y + E d MMM y + QQQ y + QQQQ y + + + + + + + ⵜⴰⵙⵓⵜ + + + ⴰⵙⴳⴳⵯⴰⵙ + + + ⴰⵢⵢⵓⵔ + + + ⵉⵎⴰⵍⴰⵙⵙ + + + ⴰⵙⵙ + ⵉⴹⵍⵍⵉ + ⴰⵙⵙⴰ + ⴰⵙⴽⴽⴰ + + + ⴰⵙⵙ ⴳ ⵉⵎⴰⵍⴰⵙⵙ + + + ⵜⵉⵣⵉ ⴳ ⵡⴰⵙⵙ: ⵜⵉⴼⴰⵡⵜ/ⵜⴰⴷⴳⴳⵯⴰⵜ + + + ⵜⴰⵙⵔⴰⴳⵜ + + + ⵜⵓⵙⴷⵉⴷⵜ + + + ⵜⴰⵙⵉⵏⵜ + + + ⴰⴽⵓⴷ ⵏ ⵓⴳⵎⵎⴰⴹ + + + + + + , +   + + + + + #,##0 % + + + + + + + #,##0.00¤ + + + + + + ⴰⴷⵔⵉⵎ ⵏ ⵍⵉⵎⴰⵔⴰⵜ + + + ⴽⵡⴰⵏⵣⴰ ⵏ ⴰⵏⴳⵓⵍⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵓⵙⵜⵔⴰⵍⵢⴰ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⴱⵃⵔⴰⵢⵏ + + + ⴼⵔⴰⵏⴽ ⵏ ⴱⵓⵔⵓⵏⴷⵉ + + + ⴰⴱⵓⵍⴰ ⵏ ⴱⵓⵜⵙⵡⴰⵏⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⴽⴰⵏⴰⴷⴰ + + + ⴼⵔⴰⵏⴽ ⵏ ⴽⵓⵏⴳⵓ + + + ⴰⴼⵔⴰⵏⴽ ⵏ ⵙⵡⵉⵙⵔⴰ + + + ⴰⵢⴰⵏ ⵏ ⵛⵛⵉⵏⵡⴰ + + + ⵉⵙⴽⵓⴷⵓ ⵏ ⴽⴰⴱⴱⵉⵔⴷⵉ + + + ⴼⵔⴰⵏⴽ ⵏ ⴷⵊⵉⴱⵓⵜⵉ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⴷⵣⴰⵢⵔ + + + ⴰⵊⵏⵉⵀ ⵏ ⵎⵉⵚⵕ + + + ⵏⴰⴼⴽⴰ ⵏ ⵉⵔⵉⵜⵉⵔⵢⴰ + + + ⴱⵉⵔ ⵏ ⵉⵜⵢⵓⴱⵢⴰ + + + ⵓⵔⵓ + + + ⴰⵊⵏⵉⵀ ⴰⵙⵜⵔⵍⵉⵏⵉ ⵏ ⵏⵏⴳⵍⵉⵣ + + + ⵙⵉⴷⵉ ⵏ ⵖⴰⵏⴰ + + + ⴷⴰⵍⴰⵙⵉ ⵏ ⴳⴰⵎⴱⵢⴰ + + + ⴰⵔⵓⴱⵉ ⵏ ⵍⵀⵉⵏⴷ + + + ⴰⵢⴰⵏ ⵏ ⵍⵢⴰⴱⴰⵏ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⴽⵉⵏⵢⴰ + + + ⴼⵔⴰⵏⴽ ⵏ ⵇⵓⵎⵓⵕ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵍⵉⴱⵉⵔⵢⴰ + + + ⵍⵓⵜⵉ ⵏ ⵍⵉⵚⵓⵟⵓ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⵍⵉⴱⵢⴰ + + + ⴰⴷⵔⵉⵎ ⵏ ⵍⵎⵖⵔⵉⴱ + + + ⴼⵔⴰⵏⴽ ⵏ ⵎⴰⴷⴰⵖⴰⵛⵇⴰⵔ + + + ⵓⵇⵉⵢⵢⴰ ⵏ ⵎⵓⵕⵉⵟⴰⵏⵢⴰ + + + ⴰⵔⵓⴱⵉ ⵏ ⵎⵓⵔⵉⵙ + + + ⴽⵡⴰⵛⴰ ⵏ ⵎⴰⵍⴰⵡⵉ + + + ⴰⵎⵉⵜⵉⴽⵍ ⵏ ⵎⵓⵣⵏⴱⵉⵇ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵏⴰⵎⵉⴱⵢⴰ + + + ⵏⴰⵢⵔⴰ ⵏ ⵏⵉⵊⵉⵔⵢⴰ + + + ⴰⴼⵔⴰⵏⴽ ⵏ ⵔⵡⴰⵏⴷⴰ + + + ⴰⵔⵢⴰⵍ ⵏ ⵙⵙⴰⵄⵓⴷⵉⵢⴰ + + + ⴰⵔⵓⴱⵉ ⵏ ⵙⵙⵉⵛⵉⵍ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⵙⵙⵓⴷⴰⵏ + + + ⴰⵊⵏⵉⵀ ⵏ ⵙⵙⵓⴷⴰⵏ + + + ⴰⵊⵏⵉⵀ ⵏ ⵙⴰⵏⵜⵉⵍⵉⵏ + + + ⵍⵉⵢⵓⵏ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⵚⵚⵓⵎⴰⵍ + + + ⴰⴷⵓⴱⵔⴰ ⵏ ⵙⴰⵏⵟⵓⵎⵉ + + + ⵍⵉⵍⴰⵏⵊⵉⵏⵉ + + + ⴰⴷⵉⵏⴰⵔ ⵏ ⵜⵓⵏⵙ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⵟⴰⵏⵥⴰⵏⵢⴰ + + + ⴰⵛⵉⵍⵉⵏ ⵏ ⵓⵖⴰⵏⴷⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵉⵡⵓⵏⴰⴽ ⵉⵎⵓⵏⵏ + + + ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ + + + ⴼⵔⴰⵏⴽ ⵚⵉⴼⴰ ⴱⵉⵙⴰⵡ + + + ⴰⵔⴰⵏⴷ ⵏ ⴰⴼⵔⵉⵇⵢⴰ ⵏ ⵉⴼⴼⵓⵙ + + + ⴰⴽⵡⴰⵛⴰ ⵏ ⵣⴰⵎⴱⵢⴰ (1968–2012) + + + ⴰⴽⵡⴰⵛⴰ ⵏ ⵣⴰⵎⴱⵢⴰ + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ (1980–2008) + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ (2009) + + + ⴰⴷⵓⵍⴰⵔ ⵏ ⵣⵉⵎⴱⴰⴱⵡⵉ (2008) + + + + + + ⵢⵢⵉⵀ:ⵢ + ⵓⵀⵓ:ⵓ + + + + diff --git a/library/Zend/Locale/Data/zgh_MA.xml b/library/Zend/Locale/Data/zgh_MA.xml new file mode 100755 index 000000000..b06b38586 --- /dev/null +++ b/library/Zend/Locale/Data/zgh_MA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/zh.xml b/library/Zend/Locale/Data/zh.xml new file mode 100755 index 000000000..7621b3a4b --- /dev/null +++ b/library/Zend/Locale/Data/zh.xml @@ -0,0 +1,7184 @@ + + + + + + + + + + + + {0}({1}) + {0}、{1} + {0}:{1} + + + 阿法文 + 阿布哈西亚文 + 亚齐文 + 阿乔利文 + 阿当梅文 + 阿迪何文 + 阿维斯塔文 + 南非荷兰文 + 阿弗里希利文 + 亚罕文 + 阿伊努文 + 阿肯文 + 阿卡德文 + 阿留申文 + 南阿尔泰文 + 阿姆哈拉文 + 阿拉贡文 + 古英文 + 昂加文 + 阿拉伯文 + 现代标准阿拉伯文 + 阿拉米文 + 阿劳坎文 + 阿拉帕霍文 + 阿拉瓦克文 + 阿萨姆文 + 阿苏文 + 阿斯图里亚思特文 + 阿瓦尔文 + 阿瓦乔文 + 艾马拉文 + 阿塞拜疆文 + 阿塞拜疆文 + 巴什客尔文 + 俾路支文 + 巴里文 + 巴萨文 + 巴姆穆文 + 戈马拉文 + 白俄罗斯文 + 别札文 + 别姆巴文 + 贝纳文 + 巴非特文 + 保加利亚文 + 博杰普尔文 + 比斯拉马文 + 毕库尔文 + 比尼文 + 科姆文 + 司克司卡文 + 班巴拉文 + 孟加拉文 + 藏文 + 布里多尼文 + 布拉杰文 + 博多文 + 波斯尼亚文 + 阿库色文 + 布里亚特文 + 布吉文 + 布鲁文 + 布林文 + 梅敦巴文 + 加泰罗尼亚文 + 卡多文 + 巴勒比文 + 卡尤加文 + 阿灿文 + 车臣文 + 宿务文 + 奇加文 + 查莫罗文 + 契布卡文 + 查加文 + 楚吾克文 + 马里文 + 契努克文 + 乔克托文 + 佩瓦扬文 + 彻罗基文 + 夏延文 + 索拉尼库尔德文 + 科西嘉文 + 科普特文 + 克里族文 + 克里米亚土耳其文 + 捷克文 + 卡舒文 + 宗教斯拉夫文 + 楚瓦什文 + 威尔士文 + 丹麦文 + 达科他文 + 达尔格瓦文 + 台塔文 + 德文 + 奥地利德文 + 瑞士高地德文 + 特拉华文 + 司雷夫文 + 多格里布文 + 丁卡文 + 哲尔马文 + 多格拉文 + 下索布文 + 都阿拉文 + 中古荷兰文 + 迪维希文 + 朱拉文 + 迪尤拉文 + 不丹文 + 达扎葛文 + 恩布文 + 埃维文 + 埃菲克文 + 古埃及文 + 埃克丘克文 + 希腊文 + 艾拉米特文 + 英文 + 澳大利亚英文 + 加拿大英文 + 英式英文 + 英式英文 + 美式英文 + 美式英文 + 中古英文 + 世界文 + 西班牙文 + 拉丁美洲西班牙文 + 欧洲西班牙文 + 墨西哥西班牙文 + 爱沙尼亚文 + 巴斯克文 + 旺杜文 + 波斯文 + 芳格文 + 芳蒂文 + 夫拉文 + 芬兰文 + 菲律宾文 + 斐济文 + 法罗文 + 丰文 + 法文 + 加拿大法文 + 瑞士法文 + 中古法文 + 古法文 + 北弗里西亚文 + 东弗里西亚文 + 弗留利文 + 西弗里西亚文 + 爱尔兰文 + 加文 + 迦约文 + 葛巴亚文 + 苏格兰盖尔文 + 吉兹文 + 吉尔伯特斯文 + 加利西亚文 + 中古高地德文 + 瓜拉尼文 + 古高地德文 + 岗德文 + 科洛涅达罗文 + 哥特文 + 格列博文 + 古希腊文 + 瑞士德文 + 古吉拉特文 + 古西文 + 马恩岛文 + 吉维克琴文 + 豪萨文 + 海达文 + 夏威夷文 + 希伯来文 + 印地文 + 希利盖农文 + 赫梯文 + 赫蒙文 + 希里莫图文 + 克罗地亚文 + 上索布文 + 海地文 + 匈牙利文 + 胡帕文 + 亚美尼亚文 + 赫雷罗文 + 国际文字 + 伊班文 + 伊比比奥文 + 印度尼西亚文 + 国际文字(E) + 伊布文 + 四川彝文 + 依奴皮维克文 + 伊洛干诺文 + 印古什文 + 伊多文 + 冰岛文 + 意大利文 + 因纽特文 + 日文 + 逻辑文 + 恩艮巴 + 马切姆文 + 犹太波斯文 + 犹太阿拉伯文 + 爪哇文 + 格鲁吉亚文 + 卡拉卡尔帕克文 + 卡比尔文 + 卡琴文 + 卡捷文 + 卡姆巴文 + 卡威文 + 卡巴尔达文 + 加涅姆布文 + 卡塔布文 + 马孔德文 + 卡布佛得鲁文 + 科罗文 + 刚果文 + 卡西文 + 和田文 + 西桑海文 + 吉库尤文 + 宽亚玛文 + 哈萨克文 + 卡库文 + 格陵兰文 + 卡伦金文 + 高棉文 + 金邦杜文 + 卡纳达文 + 韩文 + 刚卡尼文 + 科斯拉伊文 + 克佩列文 + 卡努里文 + 卡拉恰伊巴尔卡尔文 + 卡累利阿文 + 库鲁克文 + 克什米尔文 + 香巴拉文 + 巴菲亚文 + 科隆文 + 库尔德文 + 库梅克文 + 库特内文 + 科米文 + 凯尔特文 + 吉尔吉斯文 + 拉丁文 + 拉迪诺文 + 朗吉文 + 拉亨达文 + 兰巴文 + 卢森堡文 + 莱兹依昂文 + 卢干达文 + 淋布尔吉文 + 林加拉文 + 老挝文 + 芒戈文 + 洛兹文 + 立陶宛文 + 鲁巴加丹加文 + 鲁巴鲁瓦文 + 路易塞诺文 + 隆达文 + 卢奥文 + 卢晒文 + 卢雅文 + 拉脱维亚文 + 马都拉文 + 马法文 + 马加伊文 + 迈蒂利文 + 望加锡文 + 曼丁哥文 + 萨伊文 + 马坝文 + 莫克沙文 + 曼达尔文 + 门迪文 + 梅鲁文 + 毛里求斯克里奥尔文 + 马尔加什文 + 中古爱尔兰文 + 马夸文 + 梅塔 + 马绍尔文 + 毛利文 + 米克马克文 + 米南卡保文 + 马其顿文 + 马拉雅拉姆文 + 蒙古文 + 满文 + 曼尼普里文 + 摩霍克文 + 莫西文 + 马拉地文 + 马来文 + 马耳他文 + 蒙当文 + 多种语系 + 克里克文 + 米兰德斯文 + 马尔瓦利文 + 缅甸文 + 姆耶内文 + 俄日亚文 + 瑙鲁文 + 拿波里文 + 纳马文 + 挪威博克马尔文 + 北恩德贝勒文 + 低地德文 + 尼泊尔文 + 尼瓦尔文 + 恩东加文 + 尼亚斯文 + 纽埃文 + 荷兰文 + 佛兰芒文 + 夸西奥文 + 挪威尼诺斯克文 + 恩甘澎文 + 挪威文 + 诺盖文 + 古诺尔斯文 + 西非书面文字 + 南恩德贝勒文 + 北索托文 + 努埃尔文 + 纳瓦霍文 + 经典尼瓦尔文 + 尼扬扎文 + 尼亚姆韦齐文 + 尼昂科勒文 + 尼约罗文 + 恩济马文 + 奥克西唐文 + 奥吉布瓦文 + 奥洛莫文 + 奥里亚文 + 奥塞梯文 + 奥萨格文 + 奥托曼土耳其文 + 旁遮普文 + 邦阿西楠文 + 帕拉维文 + 邦板牙文 + 帕皮亚门托文 + 帕劳文 + 古老波斯文 + 腓尼基文 + 巴利文 + 波兰文 + 波纳佩文 + 普罗文斯文 + 普什图文 + 葡萄牙文 + 巴西葡萄牙文 + 欧洲葡萄牙文 + 盖丘亚文 + 拉贾斯坦文 + 拉帕努伊文 + 拉罗汤加文 + 罗曼什文 + 基隆迪文 + 罗马尼亚文 + 摩尔多瓦文 + 兰博文 + 吉普赛文 + 根语言 + 俄文 + 阿罗马尼亚文 + 卢旺达文 + 罗瓦文 + 梵文 + 散达维文 + 雅库特文 + 萨玛利亚文 + 桑布鲁文 + 萨萨克文 + 桑塔利文 + 甘拜文 + 桑古文 + 萨丁文 + 西西里文 + 苏格兰文 + 信德文 + 北萨米文 + 塞内卡文 + 塞纳文 + 塞尔库普文 + 东桑海文 + 桑戈文 + 古爱尔兰文 + 塞尔维亚-克罗地亚文 + 希尔哈文 + 掸文 + 乍得阿拉伯文 + 僧伽罗文 + 悉达摩文 + 斯洛伐克文 + 斯洛文尼亚文 + 萨摩亚文 + 南萨米文 + 律勒欧萨莫斯文 + 伊纳里萨米文 + 斯科特萨米文 + 绍纳文 + 索尼基文 + 索马里文 + 古粟特文 + 阿尔巴尼亚文 + 塞尔维亚文 + 苏里南汤加文 + 谢列尔文 + 斯瓦特文 + 萨霍文 + 南索托文 + 巽他文 + 苏库马文 + 苏苏文 + 苏马文 + 瑞典文 + 斯瓦希里文 + 科摩罗文 + 刚果斯瓦希里文 + 经典叙利亚文 + 叙利亚文 + 泰米尔文 + 泰卢固文 + 滕内文 + 特索文 + 特列纳文 + 特塔姆文 + 塔吉克文 + 泰文 + 提格里尼亚文 + 提格雷文 + 蒂夫文 + 土库曼文 + 托克劳文 + 塔加洛文 + 克林贡文 + 特林吉特文 + 塔马奇克文 + 塞茨瓦纳文 + 汤加文 + 汤加文(尼亚萨地区) + 托克皮辛文 + 土耳其文 + 太鲁阁文 + 宗加文 + 蒂姆西亚文 + 塔塔尔文 + 通布卡文 + 图瓦卢文 + 特威文 + 北桑海文 + 塔西提文 + 图瓦文 + 塔马齐格特文 + 乌德穆尔特文 + 维吾尔文 + 乌加里特文 + 乌克兰文 + 翁本杜文 + 未知语言 + 乌尔都文 + 乌兹别克文 + 瓦伊文 + 文达文 + 越南文 + 沃拉普克文 + 沃提克文 + 温旧文 + 瓦隆文 + 瓦尔瑟文 + 瓦拉莫文 + 瓦赖文 + 瓦绍文 + 沃洛夫文 + 卡尔梅克文 + 科萨文 + 索加文 + 瑶族文 + 雅浦文 + 洋卞文 + 耶姆巴文 + 依地文 + 约鲁巴文 + 粤语 + 壮文 + 萨波蒂克文 + 布利斯符号 + 泽纳加文 + 标准摩洛哥塔马塞特文 + 中文 + 简体中文 + 繁体中文 + 祖鲁文 + 祖尼文 + 无语言内容 + 扎扎文 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 世界 + 非洲 + 北美洲 + 南美洲 + 大洋洲 + 西非 + 中美洲 + 东非 + 北非 + 中非 + 南部非洲 + 美洲 + 美洲北部 + 加勒比地区 + 东亚 + 南亚 + 东南亚 + 南欧 + 澳大拉西亚 + 美拉尼西亚 + 密克罗尼西亚地区 + 玻利尼西亚 + 亚洲 + 中亚 + 西亚 + 欧洲 + 东欧 + 北欧 + 西欧 + 拉丁美洲 + 阿森松岛 + 安道尔 + 阿拉伯联合酋长国 + 阿富汗 + 安提瓜和巴布达 + 安圭拉 + 阿尔巴尼亚 + 亚美尼亚 + 荷属安的列斯群岛 + 安哥拉 + 南极洲 + 阿根廷 + 美属萨摩亚 + 奥地利 + 澳大利亚 + 阿鲁巴 + 奥兰群岛 + 阿塞拜疆 + 波斯尼亚和黑塞哥维那 + 巴巴多斯 + 孟加拉国 + 比利时 + 布基纳法索 + 保加利亚 + 巴林 + 布隆迪 + 贝宁 + 圣巴泰勒米 + 百慕大 + 文莱 + 玻利维亚 + 荷兰加勒比区 + 巴西 + 巴哈马 + 不丹 + 布维特岛 + 博茨瓦纳 + 白俄罗斯 + 伯利兹 + 加拿大 + 科科斯(基林)群岛 + 刚果(金) + 刚果民主共和国 + 中非共和国 + 刚果(布) + 刚果共和国 + 瑞士 + 科特迪瓦 + 象牙海岸 + 库克群岛 + 智利 + 喀麦隆 + 中国 + 哥伦比亚 + 克利珀顿岛 + 哥斯达黎加 + 古巴 + 佛得角 + 库拉索 + 圣诞岛 + 塞浦路斯 + 捷克共和国 + 德国 + 迪戈加西亚岛 + 吉布提 + 丹麦 + 多米尼克 + 多米尼加共和国 + 阿尔及利亚 + 休达及梅利利亚 + 厄瓜多尔 + 爱沙尼亚 + 埃及 + 西撒哈拉 + 厄立特里亚 + 西班牙 + 埃塞俄比亚 + 欧盟 + 芬兰 + 斐济 + 福克兰群岛 + 福克兰群岛(马尔维纳斯群岛) + 密克罗尼西亚 + 法罗群岛 + 法国 + 加蓬 + 英国 + 英国 + 格林纳达 + 格鲁吉亚 + 法属圭亚那 + 根西岛 + 加纳 + 直布罗陀 + 格陵兰 + 冈比亚 + 几内亚 + 瓜德罗普 + 赤道几内亚 + 希腊 + 南乔治亚岛和南桑威齐群岛 + 危地马拉 + 关岛 + 几内亚比绍 + 圭亚那 + 中国香港特别行政区 + 香港 + 赫德岛和麦克唐纳群岛 + 洪都拉斯 + 克罗地亚 + 海地 + 匈牙利 + 加纳利群岛 + 印度尼西亚 + 爱尔兰 + 以色列 + 曼岛 + 印度 + 英属印度洋领地 + 伊拉克 + 伊朗 + 冰岛 + 意大利 + 泽西岛 + 牙买加 + 约旦 + 日本 + 肯尼亚 + 吉尔吉斯斯坦 + 柬埔寨 + 基里巴斯 + 科摩罗 + 圣基茨和尼维斯 + 朝鲜 + 韩国 + 科威特 + 开曼群岛 + 哈萨克斯坦 + 老挝 + 黎巴嫩 + 圣卢西亚 + 列支敦士登 + 斯里兰卡 + 利比里亚 + 莱索托 + 立陶宛 + 卢森堡 + 拉脱维亚 + 利比亚 + 摩洛哥 + 摩纳哥 + 摩尔多瓦 + 黑山共和国 + 法属圣马丁 + 马达加斯加 + 马绍尔群岛 + 马其顿 + 马其顿(前南斯拉夫的马其顿共和国) + 马里 + 缅甸 + 蒙古 + 中国澳门特别行政区 + 澳门 + 北马里亚纳群岛 + 马提尼克 + 毛里塔尼亚 + 蒙特塞拉特 + 马耳他 + 毛里求斯 + 马尔代夫 + 马拉维 + 墨西哥 + 马来西亚 + 莫桑比克 + 纳米比亚 + 新喀里多尼亚 + 尼日尔 + 诺福克岛 + 尼日利亚 + 尼加拉瓜 + 荷兰 + 挪威 + 尼泊尔 + 瑙鲁 + 纽埃 + 新西兰 + 阿曼 + 巴拿马 + 秘鲁 + 法属波利尼西亚 + 巴布亚新几内亚 + 菲律宾 + 巴基斯坦 + 波兰 + 圣皮埃尔和密克隆群岛 + 皮特凯恩群岛 + 波多黎各 + 巴勒斯坦领土 + 巴勒斯坦 + 葡萄牙 + 帕劳 + 巴拉圭 + 卡塔尔 + 大洋洲边远群岛 + 留尼汪 + 罗马尼亚 + 塞尔维亚 + 俄罗斯 + 卢旺达 + 沙特阿拉伯 + 所罗门群岛 + 塞舌尔 + 苏丹 + 瑞典 + 新加坡 + 圣赫勒拿 + 斯洛文尼亚 + 斯瓦尔巴特和扬马延 + 斯洛伐克 + 塞拉利昂 + 圣马力诺 + 塞内加尔 + 索马里 + 苏里南 + 南苏丹 + 圣多美和普林西比 + 萨尔瓦多 + 荷属圣马丁 + 叙利亚 + 斯威士兰 + 特里斯坦-达库尼亚群岛 + 特克斯和凯科斯群岛 + 乍得 + 法属南部领地 + 多哥 + 泰国 + 塔吉克斯坦 + 托克劳 + 东帝汶 + 土库曼斯坦 + 突尼斯 + 汤加 + 土耳其 + 特立尼达和多巴哥 + 图瓦卢 + 台湾 + 坦桑尼亚 + 乌克兰 + 乌干达 + 美国本土外小岛屿 + 美国 + 美国 + 乌拉圭 + 乌兹别克斯坦 + 梵蒂冈 + 圣文森特和格林纳丁斯 + 委内瑞拉 + 英属维京群岛 + 美属维京群岛 + 越南 + 瓦努阿图 + 瓦利斯和富图纳 + 萨摩亚 + 科索沃 + 也门 + 马约特 + 南非 + 赞比亚 + 津巴布韦 + 未知地区 + + + 传统德文拼字 + 标准雷西亚拼字 + 1996 年德文拼字 + 1606 年前中后期法文 + 早期现代法文 + 学术 + 1997 版 ALA-LC 罗马字 + 阿鲁库方言 + 东亚美尼亚文 + 西亚美尼亚文 + 统一土耳其拉丁字母 + 佛陀梵文 + 比斯开方言 + 圣乔治/比拉方言 + 布恩特林方言 + 国际音标 + UPA 音标 + X-SAMPA 音标 + 赫伯恩罗马字 + 高地挪威文 + 史诗梵文 + 米施泰尔方言 + 粤语拼音 + 常用拼字 + 传统梵文 + 雷西亚 Lipovaz 方言 + 俄文拼字(1918年起) + 单音字母 + Ndyuka 方言 + Natisone 方言 + Gniva/Njiva 方言 + Oseacco/Osojane 方言 + Pamaka 方言 + 俄文拼字(1708年) + 拼音罗马字 + 多音字母 + 电脑 + 瑞士普特尔方言 + 修订的拼字 + 雷西亚文 + 罗曼什文 + 萨霍文 + 苏格兰标准英文 + 利物浦方言 + Stolvizza/Solbica 方言 + 瑞士苏迈拉方言 + 瑞士苏瑟瓦方言 + 瑞士苏希瓦方言 + Taraskievica 拼字 + 统一的拼字 + 统一和修订的拼字 + 阿尔斯特方言 + 吠陀梵文 + 瓦伦西亚文 + 瑞士瓦勒德方言 + WG 威氏拼音法 + + + 日历 + 忽略符号排序 + 对重音进行逆向排序 + 大写/小写字母排序 + 区分大小写的排序 + 假名排序 + 排序 + 规范化排序 + 数字排序 + 排序强度 + 货币 + 数字 + 时区 + 语言区域别名 + 按照符号排序 + 专用 + + + 阿拉伯印度文数字 + 扩展阿拉伯印度文数字 + 亚美尼亚文数字 + 亚美尼亚文小写数字 + 巴厘文数字 + 孟加拉文数字 + 繁体中文排序 - Big5 + 佛教日历 + 占文数字 + 农历 + 科普特日历 + 檀纪日历 + 梵文数字 + 字典排序顺序 + 默认 Unicode 排序 + 埃塞俄比亚文数字 + 埃塞俄比亚日历 + 埃塞俄比亚阿米特阿莱姆日历 + 金融数字 + 全角数字 + 简体中文排序 - GB2312 + 格鲁吉亚文数字 + 公历 + 希腊文数字 + 希腊文小写数字 + 古吉拉特文数字 + 果鲁穆奇文数字 + 中文十进制数字 + 简体中文数字 + 简体中文大写数字 + 繁体中文数字 + 繁体中文大写数字 + 希伯来文数字 + 希伯来日历 + 对所有内容进行排序 + 印度国家日历 + 伊斯兰日历 + 伊斯兰希吉来日历 + 日本日历 + 爪哇文数字 + 日文数字 + 日文大写数字 + 克耶字母数字 + 高棉文数字 + 卡纳达文数字 + 老傣文数字 + 兰纳文数字 + 老挝文数字 + 西方数字 + 雷布查文数字 + 林布文数字 + 先对小写字母进行排序 + 马拉雅拉姆文数字 + 蒙古文数字 + 曼尼普尔数字 + 缅甸文数字 + 缅甸掸文数字 + 当地数字 + 曼德数字 + 对重音进行正常排序 + 对正常大小写顺序进行排序 + 不区分大小写进行排序 + 对假名进行单独排序 + 非规范化排序 + 对数字进行单独排序 + 对符号进行排序 + 桑塔利文数字 + 奥里亚文数字 + 波斯日历 + 电话簿排序顺序 + 语音排序顺序 + 拼音排序 + 只对基本字母进行排序 + 对重音/大小写/长度/假名进行排序 + 改良排序顺序 + 民国日历 + 罗马数字 + 罗马小写数字 + 索拉什特拉文数字 + 常规搜索 + 按韩文字开首辅音来搜索 + 对重音进行排序 + 忽略符号进行排序 + 标准排序 + 笔画排序 + 苏丹文数字 + 新傣仂文数字 + 传统泰米尔文数字 + 泰米尔文数字 + 泰卢固文数字 + 对重音/大小写/长度进行排序 + 泰文数字 + 藏文数字 + 传统排序顺序 + 传统数字 + 部首笔画排序 + 先对大写字母进行排序 + 瓦伊文数字 + 对重音进行逆向排序 + 区分大小写进行排序 + 对假名进行区别排序 + 对 Unicode 进行规范化排序 + 按数字顺序对数字进行排序 + 注音排序 + + + 美国地名委员会 (BGN) + 数字 + 音调 + 联合国地名专家组 (UNGEGN) + 重音符号 + 全角 + 半角 + 韩文字母 + 拼音 + 印刷体 + + + 公制 + 英制 + 美制 + + + 语言:{0} + 文字:{0} + 地区:{0} + + + + [一 丁 七 万-与 丑 专 且 世 丘-业 东 丝 丢 两 严 丧 个 中 丰 串 临 丸-主 丽 举 乃 久 么 义 之-乐 乔 乖 乘 乙 九 也-乡 书 买 乱 乾 了 予 争 事 二 于 亏 云 互 五 井 亚 些 亡 交-亨 享 京 亮 亲 人 亿-仁 仅 仇 今 介 仍 从 仔 他 付 仙 代-以 仪 们 仰 仲 件 价 任 份 仿 企 伊 伍 伏-休 众-会 伟 传 伤 伦 伯 估 伴 伸 似 伽 但 位-佑 体 何 余 佛 作 你 佤 佩 佳 使 例 供 依 侠 侦-侨 侬 侯 侵 便 促 俄 俊 俗 保 信 俩 修 俱 俾 倍 倒 候 倚 借 倦 值 倾 假 偌 偏 做 停 健 偶 偷 储 催 傲 傻 像 僧 儒 儿 允 元-兆 先 光 克 免 兑 兔 党 入 全 八-兮 兰 共 关-兹 养-兽 内 冈 册 再 冒 写 军 农 冠 冬 冰 冲 决 况 冷 准 凌 减 凝 几 凡 凤 凭 凯 凰 出 击 函 刀 分 切 刊 刑 划 列-创 初 判 利 别 到 制-券 刺 刻 剂 前 剑 剧 剩 剪 副 割 力 劝-务 劣 动-劫 励-劳 势 勇 勉 勋 勒 勤 勾 勿 包 匆 匈 化 北 匙 匹-医 十 千 升 午 半 华 协 卒 卓 单-南 博 占-卢 卫 卯-危 即 却 卷 厂 厄-历 厉 压-厍 厚 原 去 县 参 又-反 发 叔 取-叙 口-另 只-叭 可 台 史 右 叶-叹 吃 各 合-吊 同-后 吐 向 吓 吗 君 吝 吟 否 吧 含 听 启 吵 吸 吹 吻 吾 呀 呆 呈 告 呐 员 呜 呢 呦 周 味 呵 呼 命 和 咖 咦-咨 咪 咬 咯 咱 哀 品 哇-哉 响 哎 哟 哥 哦 哩 哪 哭 哲 唉 唐 唤 唬 售 唯 唱 唷 商 啊 啡 啥 啦 啪 喀 喂 善 喇 喊 喏 喔 喜 喝 喵 喷 喻 嗒 嗨 嗯 嘉 嘛 嘴 嘻 嘿 器 四 回 因 团 园 困 围 固 国 图 圆 圈 土 圣 在 圭 地 圳 场 圾 址 均 坎 坐 坑 块 坚-坜 坡 坤 坦 坪 垂 垃 型 垒 埃 埋 城 埔 域 培 基 堂 堆 堕 堡 堪 塑 塔 塞 填 境 增 墨 壁 壤 士 壬 壮 声 处 备 复 夏 夕 外 多 夜 够 夥 大 天-夫 央 失 头 夷-夺 奇-奉 奋 奏 契 奔 奖 套 奥 女 奴 奶 她 好 如 妇 妈 妖 妙 妥 妨 妮 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娄 娘 娜 娟 娱 婆 婚 媒 嫁 嫌 嫩 子 孔 孕 字-孙 孜 孝 孟 季 孤 学 孩 宁 它 宇-安 宋 完 宏 宗-实 审-室 宪 害 宴 家 容 宽-宿 寂 寄-寇 富 寒 寝-察 寡 寨 寸 对 寻 导 寿 封 射 将 尊 小 少 尔 尖 尘 尚 尝 尤 就 尺 尼-尾 局-层 居 屋 屏 展 属 屠 山 岁 岂 岗 岘 岚 岛 岳 岸 峡 峰 崇 崩 崴 川 州 巡 工-巨 巫 差 己-巴 巷 币-布 帅 师 希 帐 帕 帖 帝 带 席 帮 常 帽 幅 幕 干-年 并 幸 幻-幽 广 庆 床 序 库-底 店 庙 庚 府 庞 废 度 座 庭 康 庸 廉 廖 延 廷 建 开 异-弄 弊 式 引 弗 弘 弟 张 弥 弦 弯 弱 弹 强 归 当 录 彝 形 彩 彬 彭 彰 影 彷 役 彻 彼 往 征 径 待 很 律 後 徐 徒 得 循 微 徵 德 心 必 忆 忌 忍 志-忙 忠 忧 快 念 忽 怀 态 怎 怒 怕 怖 思 怡 急 性 怨 怪 总 恋 恐 恢 恨 恩 恭 息 恰 恶 恼 悄 悉 悔 悟 悠 患 您 悲 情 惑 惜 惠 惧 惨 惯 想 惹 愁 愈 愉 意 愚 感 愧 慈 慎 慕 慢 慧 慰 憾 懂 懒 戈 戊 戌 戏-戒 或 战 截 戴 户 房-扁 扇 手 才 扎 扑 打 托 扣 执 扩 扫-扯 批 找-技 抄 把 抑 抓 投 抗 折 抢 护 报 披 抬 抱 抵 抹 抽 担 拆 拉 拍 拒 拔 拖 拘 招 拜 拟 拥 拦 拨 择 括 拳 拷 拼 拾 拿 持 指 按 挑 挖 挝 挡 挤 挥 挪 振 挺 捉 捐 捕 损 捡 换 据 捷 授 掉 掌 排 探 接 控-措 掸 描 提 插 握 援 搜 搞 搬 搭 摄 摆 摊 摔 摘 摩 摸 撒 撞 播 操 擎 擦 支 收 改 攻 放 政 故 效 敌 敏 救 教 敝 敢 散 敦 敬 数 敲 整 文 斋 斐 斗 料 斜 斥 断 斯 新 方 於 施 旁 旅 旋 族 旗 无 既 日-早 旭 时 旺 昂 昆 昌 明 昏 易 星 映 春 昨 昭 是 显 晃 晋 晒 晓 晚 晨 普 景 晴 晶 智 暂 暑 暖 暗 暮 暴 曰 曲 更 曹 曼 曾-最 月 有 朋 服 朗 望 朝 期 木 未-札 术 朱 朵 机 杀 杂 权 杉 李 材 村 杜 束 条 来 杨 杯 杰 松 板 极 构 析 林 果 枝 枢 枪 枫 架 柏 某 染 柔 查 柬 柯 柳 柴 标 栋 栏 树 校 样-根 格 桃 框 案 桌 桑 档 桥 梁 梅 梦 梯 械 梵 检 棉 棋 棒 棚 森 椅 植 椰 楚 楼 概 榜 模 樱 檀 欠-欣 欧 欲 欺 款 歉 歌 止-武 歪 死 殊 残 段 毅 母 每 毒 比 毕 毛 毫 氏 民 气 氛 水 永 求 汇 汉 汗 汝 江-污 汤 汪 汶 汽 沃 沈 沉 沙 沟 没 沧 河 油 治 沿 泉 泊 法 泛 泡-泣 泥 注 泰 泳 泽 洋 洗 洛 洞 津 洪 洲 活 洽 派 流 浅 测 济 浏 浑 浓 浙 浦 浩 浪 浮 浴 海 涅 消 涉 涛 涨 涯 液 涵 淋 淑 淘 淡 深 混 添 清 渐 渡 渣 温 港 渴 游 湖 湾 源 溜 溪 滋 滑 满 滥 滨 滴 漂 漏 演 漠 漫 潘 潜 潮 澎 澳 激 灌 火 灭 灯 灰 灵 灿 炉 炎 炮 炸 点 烂 烈 烤 烦 烧 热 焦 然 煌 煞 照 煮 熊 熟 燃 燕 爆 爪 爬 爱 爵-爸 爽 片 版 牌 牙 牛 牡 牢 牧 物 牲 牵 特 牺 犯 状 犹 狂 狐 狗 狠 独 狮 狱 狼 猛 猜 猪 献 猴 玄 率 玉 王 玛 玩 玫 环 现 玲 玻 珀 珊 珍 珠 班 球 理 琊 琪 琳 琴 琼 瑙 瑜 瑞 瑟 瑰 瑶 璃 瓜 瓦 瓶 甘 甚 甜 生 用 田-申 电 男 甸 画 畅 界 留 略 番 疆 疏 疑 疗 疯 疲 疼 疾 病 痕 痛 痴 癸 登 白 百 的 皆 皇 皮 盈 益 监 盒 盖 盘 盛 盟 目 直 相 盼 盾 省 眉 看 真 眠 眼 着 睛 睡 督 瞧 矛 矣 知 短 石 矶 码 砂 砍 研 破 础 硕 硬 确 碍 碎 碗 碟 碧 碰 磁 磅 磨 示 礼 社 祖 祚 祝 神 祥 票 祯 祸 禁 禅 福 离 秀 私 秋 种 科 秒 秘 租 秤 秦 秩 积 称 移 稀 程 稍 税 稣 稳 稿 穆 究 穷 穹 空 穿 突 窗 窝 立 站 竞-章 童 端 竹 笑 笔 笛 符 笨 第 等 筋 筑 答 策 筹 签 简 算 管 箭 箱 篇 篮 簿 籍 米 类 粉 粒 粗 粤 粹 精 糊 糕 糖 糟 系 素 索 紧 紫 累 繁 红 约 级 纪 纯 纲 纳 纵 纷 纸 纽 线 练 组 细-终 绍 经 结 绕 绘 给 络 绝 统 继 绩 绪 续 维 绵 综 绿 缅 缓 编 缘 缠 缩 缴 缶 缸 缺 罐 网 罕 罗 罚 罢 罪 置 署 羊 美 羞 群 羯 羽 翁 翅 翔 翘 翠 翰 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 职 联 聘 聚 聪 肉 肖 肚 股 肤 肥 肩 肯 育 胁 胆 背 胎 胖 胜 胞 胡 胶 胸 能 脆 脑 脱 脸 腊 腐 腓 腰 腹 腾 腿 臂 臣 自 臭 至 致 舌 舍 舒 舞 舟 航 般 舰 船 良 色 艺 艾 节 芒 芝 芦 芬 芭 花 芳 苍 苏 苗 若 苦 英 茂 范 茨 茫 茶 草 荐 荒 荣 药 荷 莉 莎 莪 莫 莱 莲 获 菜 菩 菲 萄 萍 萤 营 萧 萨 落 著 葛 葡 蒂 蒋 蒙 蓉 蓝 蓬 蔑 蔡 薄 薪 藉 藏 藤 虎 虑 虫 虹 虽 虾 蚁 蛇 蛋 蛙 蛮 蜂 蜜 蝶 融 蟹 蠢 血 行 街 衡 衣 补 表 袋 被 袭 裁 裂 装 裕 裤 西 要 覆 见 观 规 视 览 觉 角 解 言 誉 誓 警 计 订 认 讨 让 训-记 讲 讷 许 论 设 访 证 评 识 诉 词 译 试 诗 诚 话 诞 询 该 详 语 误 说 请 诸 诺 读 课 谁 调 谅 谈 谊 谋 谓 谜 谢 谨 谱 谷 豆 象 豪 貌 贝-负 贡-败 货-贪 购 贯 贱 贴 贵 贸-贺 贼 贾 资 赋 赌 赏 赐 赔 赖 赚 赛 赞 赠 赢 赤 赫 走 赵 起 趁 超 越 趋 趣 足 跃 跌 跑 距 跟 路 跳 踏 踢 踩 身 躲 车 轨 轩 转 轮-轰 轻 载 较 辅 辆 辈 辉 辑 输 辛 辞 辨 辩 辰 辱 边 达 迁 迅 过 迈 迎 运 近 返 还 这 进-迟 迦 迪 迫 述 迷 追 退-逃 逆 选 逊 透 逐 递 途 通 逛 逝 速 造 逢 逸 逻 逼 遇 遍 道 遗 遭 遮 遵 避 邀 邓 那 邦 邪 邮 邱 邻 郎 郑 部 郭 都 鄂 酉 酋 配 酒 酷 酸 醉 醒 采 释 里-量 金 针 钓 钟 钢 钦 钱 钻 铁 铃 铜 铢 铭 银 铺 链 销 锁 锅 锋 错 锡 锦 键 锺 镇 镜 镭 长 门 闪 闭 问 闰 闲 间 闷 闹 闻 阁 阅 阐 阔 队 阮 防-阶 阻 阿 陀 附-陆 陈 降 限 院 除 险 陪 陵-陷 隆 随 隐 隔 障 难 雄-集 雉 雨 雪 雯 雳 零 雷 雾 需 震 霍 霖 露 霸 霹 青 靖 静 非 靠 面 革 靼 鞋 鞑 韦 韩 音 页 顶 项-须 顽-顿 预 领 颇 频 颗 题 额 风 飘 飙 飞 食 餐 饭 饮 饰 饱 饼 馆 首 香 馨 马 驱 驶 驻 驾 验 骑 骗 骚 骤 骨 高 鬼 魂 魅 魔 鱼 鲁 鲜 鸟 鸡 鸣 鸭 鸿 鹅 鹤 鹰 鹿 麦 麻 黄 黎 黑 默 鼓 鼠 鼻 齐 齿 龄 龙 龟] + [仂 侣 傈 傣 僳 卑 卞 厘 吕 坝 堤 奎 屿 巽 撤 楔 楠 滕 瑚 甫 盲 碑 禄 粟 脚 艮 谬 钯 铂 锑 镑 魁] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + [﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \- - ﹣ ‐ – — ︱ ― , , ﹐ 、 ﹑ ; ; ﹔ \: : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒ ‥ ︰ … 。 · ' ‘ ’ " " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \[ [ \] ] \{ { ﹛ ︷ \} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ 〖 〗 ‖ § @ @ ﹫ * * ﹡ / / \\ \ ﹨ \& & ﹠ # # ﹟ % % ﹪ ‰ ′ ″ ‵ 〃 ※] + {0}… + …{0} + {0}…{1} + {0}… + …{0} + {0}…{1} + + + + + + + + + + + + + + + 佛历 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy-M-d + + + + + + d日 + M月 + M-d + M-dE + LLL + M月d日 + M月d日E + Gy年 + Gy年 + Gy-M + Gy-M-d + Gy-M-d(E) + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年M月 + Gy年第Q季度 + Gy年QQQQ + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 腊月 + + + + + + + + + + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 腊月 + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 腊月 + + + + + + + + + + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 腊月 + + + + + + + 闰{0} + + + + + 闰{0} + + + + + 闰{0} + + + + + + + + + + + + + + + + + + + + + + + + + + 甲子 + 乙丑 + 丙寅 + 丁卯 + 戊辰 + 己巳 + 庚午 + 辛未 + 壬申 + 癸酉 + 甲戌 + 乙亥 + 丙子 + 丁丑 + 戊寅 + 己卯 + 庚辰 + 辛巳 + 壬午 + 癸未 + 甲申 + 乙酉 + 丙戌 + 丁亥 + 戊子 + 己丑 + 庚寅 + 辛卯 + 壬辰 + 癸巳 + 甲午 + 乙未 + 丙申 + 丁酉 + 戊戌 + 己亥 + 庚子 + 辛丑 + 壬寅 + 癸卯 + 甲辰 + 乙巳 + 丙午 + 丁未 + 戊申 + 己酉 + 庚戌 + 辛亥 + 壬子 + 癸丑 + 甲寅 + 乙卯 + 丙辰 + 丁巳 + 戊午 + 己未 + 庚申 + 辛酉 + 壬戌 + 癸亥 + + + + + + + + + + + + + + + + + + + + + + + + + + U年MMMdEEEE + + + + + U年MMMd + + + + + U年MMMd + + + + + U-M-d + + + + + + d日 + d日E + U年 + U年MMM + U年MMMd日 + U年MMMd日E + MMM + M-d + M-dE + MMMd日 + MMMd日E + U年 + U年MMMd日 + U年 + U年MMM + U年MMMd日 + U年MMMd日,E + U年MMM + U年MMMd日 + U年MMMd日E + U年QQQQ + U年QQQQ + + + {0}–{1} + + d日至d日 + + + ah至ah时 + ah至h时 + + + ah:mm至ah:mm + ah:mm至h:mm + ah:mm至h:mm + + + vah:mm至ah:mm + vah:mm至h:mm + vah:mm至h:mm + + + vah至ah时 + vah至h时 + + + HH–HH v + + + L至L + + + M-d至M-d + M-d至M-d + + + M-dE至M-dE + M-dE至M-dE + + + LLL至LLL + + + MMMd日至d日 + MMMd日至MMMd日 + + + MMMd日E至d日E + MMMd日E至MMMd日E + + + U至U + + + U-M至U-M + U-M至U-M + + + U-M-d至U-M-d + U-M-d至U-M-d + U-M-d至U-M-d + + + U-M-dE至U-M-dE + U-M-dE至U-M-dE + U-M-dE至U-M-dE + + + U年MMM至MMM + U年MMM至U年MMM + + + U年MMMd日至d日 + U年MMMd日至MMMd日 + U年MMMd日至U年MMMd日 + + + U年MMMd日E至d日E + U年MMMd日E至MMMd日E + U年MMMd日E至U年MMMd日E + + + U年MMMM至MMMM + U年MMMM至U年MMMM + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + 十三月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + 十三月 + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + 十三月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + 十三月 + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy/M/d + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日E + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + ah时 + H时 + ah:mm + HH:mm + ah:mm:ss + HH:mm:ss + M月 + M/d + M/dE + LLL + M月d日 + M月d日E + mm:ss + Gy年 + Gy年 + Gy年M月 + Gy/M/d + Gy/M/dE + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年M月 + Gy年第Q季度 + Gy年第Q季度 + + + {0} – {1} + + d日至d日 + + + ah时至ah时 + ah时至h时 + + + HH–HH + + + ah:mm至ah:mm + ah:mm至h:mm + ah:mm至h:mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + vah:mm至ah:mm + vah:mm至h:mm + vah:mm至h:mm + + + v HH:mm–HH:mm + v HH:mm–HH:mm + + + vah时至ah时 + vah时至h时 + + + HH–HH v + + + M–M月 + + + M/d – M/d + M/d – M/d + + + M/dE至M/dE + M/dE至M/dE + + + LLL至LLL + + + M月d日至d日 + M月d日至M月d日 + + + M月d日E至d日E + M月d日E至M月d日E + + + Gy–y年 + + + Gy年M月至M月 + Gy年M月至y年M月 + + + Gy/M/d – y/M/d + Gy/M/d – y/M/d + Gy/M/d – y/M/d + + + Gy/M/dE至y/M/dE + Gy/M/dE至y/M/dE + Gy/M/dE至y/M/dE + + + Gy年M月至M月 + Gy年M月至y年M月 + + + Gy年M月d日至d日 + Gy年M月d日至M月d日 + Gy年M月d日至y年M月d日 + + + Gy年M月d日E至d日E + Gy年M月d日E至M月d日E + Gy年M月d日E至y年M月d日E + + + Gy年M月至M月 + Gy年M月至y年M月 + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + + + + + + + + + + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + + 星期日 + 星期一 + 星期二 + 星期三 + 星期四 + 星期五 + 星期六 + + + + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + + + + + + + + + + + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + + + 星期日 + 星期一 + 星期二 + 星期三 + 星期四 + 星期五 + 星期六 + + + + + + + 1季度 + 2季度 + 3季度 + 4季度 + + + 1 + 2 + 3 + 4 + + + 第一季度 + 第二季度 + 第三季度 + 第四季度 + + + + + 1季度 + 2季度 + 3季度 + 4季度 + + + 1 + 2 + 3 + 4 + + + 第一季度 + 第二季度 + 第三季度 + 第四季度 + + + + + + + 下午 + 上午 + 清晨 + 中午 + 上午 + 晚上 + 中午 + 下午 + 凌晨 + + + 下午 + 上午 + 清晨 + 中午 + 上午 + 晚上 + 中午 + 下午 + 凌晨 + + + + + + 公元前 + 公元 + + + 公元前 + 公元 + + + 公元前 + 公元 + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y年M月d日 + + + + + yy/M/d + + + + + + + zzzzah:mm:ss + + + + + zah:mm:ss + + + + + ah:mm:ss + + + + + ah:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日E + Eah:mm + EHH:mm + Eah:mm:ss + EHH:mm:ss + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + ah时 + H时 + ah:mm + HH:mm + ah:mm:ss + HH:mm:ss + M月 + M/d + M/dE + MM/dd + LLL + M月d日 + M月d日E + M月dd日 + mm:ss + y年 + y/M + y/M/d + y/M/dE + y年M月 + y年M月 + y年M月d日 + y年M月d日E + y年M月 + y年第Q季度 + y年第Q季度 + + + {1}{0} + + + {0} – {1} + + d–d日 + + + ah时至ah时 + ah时至h时 + + + HH–HH + + + ah:mm至ah:mm + ah:mm至h:mm + ah:mm至h:mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + vah:mm至ah:mm + vah:mm至h:mm + vah:mm至h:mm + + + v HH:mm–HH:mm + v HH:mm–HH:mm + + + vah时至ah时 + vah时至h时 + + + v HH–HH + + + M–M月 + + + M/d – M/d + M/d – M/d + + + M/dE至M/dE + M/dE至M/dE + + + LLL至LLL + + + M月d日至d日 + M月d日至M月d日 + + + M月d日E至d日E + M月d日E至M月d日E + + + y–y年 + + + y年M月至M月 + y年M月至y年M月 + + + y/M/d – y/M/d + y/M/d – y/M/d + y/M/d – y/M/d + + + y/M/dE至y/M/dE + y/M/dE至y/M/dE + y/M/dE至y/M/dE + + + y年M月至M月 + y年M月至y年M月 + + + y年M月d日至d日 + y年M月d日至M月d日 + y年M月d日至y年M月d日 + + + y年M月d日E至d日E + y年M月d日E至M月d日E + y年M月d日E至y年M月d日E + + + y年M月至M月 + y年M月至y年M月 + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 闰7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 闰七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + 十三月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 闰7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 闰七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + 十三月 + + + + + + 希伯来历 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy-M-d + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + 印度历 + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + 回历 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + + d日 + M月 + M-d + M-dE + LLL + M月d日 + M月d日E + + + + + + + + 大化 (645–650) + 白雉 (650–671) + 白凤 (672–686) + 朱鸟 (686–701) + 大宝 (701–704) + 庆云 (704–708) + 和铜 (708–715) + 灵龟 (715–717) + 养老 (717–724) + 神龟 (724–729) + 天平 (729–749) + 天平感宝 (749–749) + 天平胜宝 (749–757) + 天平宝字 (757–765) + 天平神护 (765–767) + 神护景云 (767–770) + 宝龟 (770–780) + 天应 (781–782) + 延历 (782–806) + 大同 (806–810) + 弘仁 (810–824) + 天长 (824–834) + 承和 (834–848) + 嘉祥 (848–851) + 仁寿 (851–854) + 齐衡 (854–857) + 天安 (857–859) + 贞观 (859–877) + 元庆 (877–885) + 仁和 (885–889) + 宽平 (889–898) + 昌泰 (898–901) + 延喜 (901–923) + 延长 (923–931) + 承平 (931–938) + 天庆 (938–947) + 天历 (947–957) + 天德 (957–961) + 应和 (961–964) + 康保 (964–968) + 安和 (968–970) + 天禄 (970–973) + 天延 (973–976) + 贞元 (976–978) + 天元 (978–983) + 永观 (983–985) + 宽和 (985–987) + 永延 (987–989) + 永祚 (989–990) + 正历 (990–995) + 长德 (995–999) + 长保 (999–1004) + 宽弘 (1004–1012) + 长和 (1012–1017) + 宽仁 (1017–1021) + 治安 (1021–1024) + 万寿 (1024–1028) + 长元 (1028–1037) + 长历 (1037–1040) + 长久 (1040–1044) + 宽德 (1044–1046) + 永承 (1046–1053) + 天喜 (1053–1058) + 康平 (1058–1065) + 治历 (1065–1069) + 延久 (1069–1074) + 承保 (1074–1077) + 正历 (1077–1081) + 永保 (1081–1084) + 应德 (1084–1087) + 宽治 (1087–1094) + 嘉保 (1094–1096) + 永长 (1096–1097) + 承德 (1097–1099) + 康和 (1099–1104) + 长治 (1104–1106) + 嘉承 (1106–1108) + 天仁 (1108–1110) + 天永 (1110–1113) + 永久 (1113–1118) + 元永 (1118–1120) + 保安 (1120–1124) + 天治 (1124–1126) + 大治 (1126–1131) + 天承 (1131–1132) + 长承 (1132–1135) + 保延 (1135–1141) + 永治 (1141–1142) + 康治 (1142–1144) + 天养 (1144–1145) + 久安 (1145–1151) + 仁平 (1151–1154) + 久寿 (1154–1156) + 保元 (1156–1159) + 平治 (1159–1160) + 永历 (1160–1161) + 应保 (1161–1163) + 长宽 (1163–1165) + 永万 (1165–1166) + 仁安 (1166–1169) + 嘉应 (1169–1171) + 承安 (1171–1175) + 安元 (1175–1177) + 治承 (1177–1181) + 养和 (1181–1182) + 寿永 (1182–1184) + 元历 (1184–1185) + 文治 (1185–1190) + 建久 (1190–1199) + 正治 (1199–1201) + 建仁 (1201–1204) + 元久 (1204–1206) + 建永 (1206–1207) + 承元 (1207–1211) + 建历 (1211–1213) + 建保 (1213–1219) + 承久 (1219–1222) + 贞应 (1222–1224) + 元仁 (1224–1225) + 嘉禄 (1225–1227) + 安贞 (1227–1229) + 宽喜 (1229–1232) + 贞永 (1232–1233) + 天福 (1233–1234) + 文历 (1234–1235) + 嘉祯 (1235–1238) + 历仁 (1238–1239) + 延应 (1239–1240) + 仁治 (1240–1243) + 宽元 (1243–1247) + 宝治 (1247–1249) + 建长 (1249–1256) + 康元 (1256–1257) + 正嘉 (1257–1259) + 正元 (1259–1260) + 文应 (1260–1261) + 弘长 (1261–1264) + 文永 (1264–1275) + 建治 (1275–1278) + 弘安 (1278–1288) + 正应 (1288–1293) + 永仁 (1293–1299) + 正安 (1299–1302) + 干元 (1302–1303) + 嘉元 (1303–1306) + 德治 (1306–1308) + 延庆 (1308–1311) + 应长 (1311–1312) + 正和 (1312–1317) + 文保 (1317–1319) + 元应 (1319–1321) + 元亨 (1321–1324) + 正中 (1324–1326) + 嘉历 (1326–1329) + 元德 (1329–1331) + 元弘 (1331–1334) + 建武 (1334–1336) + 延元 (1336–1340) + 兴国 (1340–1346) + 正平 (1346–1370) + 建德 (1370–1372) + 文中 (1372–1375) + 天授 (1375–1379) + 康历 (1379–1381) + 弘和 (1381–1384) + 元中 (1384–1392) + 至德 (1384–1387) + 嘉庆 (1387–1389) + 康应 (1389–1390) + 明德 (1390–1394) + 应永 (1394–1428) + 正长 (1428–1429) + 永享 (1429–1441) + 嘉吉 (1441–1444) + 文安 (1444–1449) + 宝德 (1449–1452) + 享德 (1452–1455) + 康正 (1455–1457) + 长禄 (1457–1460) + 宽正 (1460–1466) + 文正 (1466–1467) + 应仁 (1467–1469) + 文明 (1469–1487) + 长享 (1487–1489) + 延德 (1489–1492) + 明应 (1492–1501) + 文龟 (1501–1504) + 永正 (1504–1521) + 大永 (1521–1528) + 享禄 (1528–1532) + 天文 (1532–1555) + 弘治 (1555–1558) + 永禄 (1558–1570) + 元龟 (1570–1573) + 天正 (1573–1592) + 文禄 (1592–1596) + 庆长 (1596–1615) + 元和 (1615–1624) + 宽永 (1624–1644) + 正保 (1644–1648) + 庆安 (1648–1652) + 承应 (1652–1655) + 明历 (1655–1658) + 万治 (1658–1661) + 宽文 (1661–1673) + 延宝 (1673–1681) + 天和 (1681–1684) + 贞享 (1684–1688) + 元禄 (1688–1704) + 宝永 (1704–1711) + 正德 (1711–1716) + 享保 (1716–1736) + 元文 (1736–1741) + 宽保 (1741–1744) + 延享 (1744–1748) + 宽延 (1748–1751) + 宝历 (1751–1764) + 明和 (1764–1772) + 安永 (1772–1781) + 天明 (1781–1789) + 宽政 (1789–1801) + 享和 (1801–1804) + 文化 (1804–1818) + 文政 (1818–1830) + 天保 (1830–1844) + 弘化 (1844–1848) + 嘉永 (1848–1854) + 安政 (1854–1860) + 万延 (1860–1861) + 文久 (1861–1864) + 元治 (1864–1865) + 庆应 (1865–1868) + 明治 + 大正 + 昭和 + 平成 + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gyy-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + d日 + d日E + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + ah时 + H时 + ah:mm + HH:mm + ah:mm:ss + HH:mm:ss + M月 + M-d + M-dE + LLL + M月d日 + M月d日E + mm:ss + Gy年 + Gy年 + Gy-MM + Gy-MM-dd + Gy-M-d(E) + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年第Q季度 + Gy年QQQQ + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + 波斯历 + + + + + + + 民国前 + 民国 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gyy/M/d + + + + + + d日 + d日E + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + M月 + M/d + M/dE + LLL + M月d日 + M月d日E + Gy年 + Gy年 + Gy年M月 + Gy/M/d + Gy/M/dE + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年M月 + Gy年第Q季度 + Gy年第Q季度 + + + + + + + 纪元 + + + + 去年 + 今年 + 明年 + + {0}年后 + + + {0}年前 + + + + + 上个月 + 本月 + 下个月 + + {0}个月后 + + + {0}个月前 + + + + + 上周 + 本周 + 下周 + + {0}周后 + + + {0}周前 + + + + + 前天 + 昨天 + 今天 + 明天 + 后天 + + {0}天后 + + + {0}天前 + + + + 星期 + + + 上周日 + 本周日 + 下周日 + + + 上周一 + 本周一 + 下周一 + + + 上周二 + 本周二 + 下周二 + + + 上周三 + 本周三 + 下周三 + + + 上周四 + 本周四 + 下周四 + + + 上周五 + 本周五 + 下周五 + + + 上周六 + 本周六 + 下周六 + + + 上午/下午 + + + 小时 + + {0}小时后 + + + {0}小时前 + + + + 分钟 + + {0}分钟后 + + + {0}分钟前 + + + + 秒钟 + 现在 + + {0}秒钟后 + + + {0}秒钟前 + + + + 时区 + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0}时间 + {0}夏令时间 + {0}标准时间 + {1}({0}) + + 未知城市 + + + 安道尔 + + + 迪拜 + + + 喀布尔 + + + 安提瓜 + + + 安圭拉 + + + 地拉那 + + + 埃里温 + + + 罗安达 + + + 罗瑟拉 + + + 帕默尔 + + + 昭和 + + + 莫森 + + + 戴维斯 + + + 沃斯托克 + + + 卡塞 + + + 迪蒙迪尔维尔 + + + 麦克默多 + + + 里奥加耶戈斯 + + + 门多萨 + + + 圣胡安 + + + 乌斯怀亚 + + + 拉里奥哈 + + + 圣路易斯 + + + 卡塔马卡 + + + 萨尔塔 + + + 胡胡伊 + + + 图库曼 + + + 科尔多瓦 + + + 布宜诺斯艾利斯 + + + 帕果帕果 + + + 维也纳 + + + 珀斯 + + + 尤克拉 + + + 达尔文 + + + 阿德莱德 + + + 布罗肯希尔 + + + 库利 + + + 墨尔本 + + + 霍巴特 + + + 林德曼 + + + 悉尼 + + + 布里斯班 + + + 麦格理 + + + 豪勋爵 + + + 阿鲁巴 + + + 玛丽港 + + + 巴库 + + + 萨拉热窝 + + + 巴巴多斯 + + + 达卡 + + + 布鲁塞尔 + + + 瓦加杜古 + + + 索非亚 + + + 巴林 + + + 布琼布拉 + + + 波多诺伏 + + + 圣巴泰勒米岛 + + + 百慕大 + + + 文莱 + + + 拉巴斯 + + + 克拉伦代克 + + + 依伦尼贝 + + + 里奥布郎库 + + + 波多韦柳 + + + 博阿维斯塔 + + + 马瑙斯 + + + 库亚巴 + + + 圣塔伦 + + + 大坎普 + + + 贝伦 + + + 阿拉瓜伊纳 + + + 圣保罗 + + + 巴伊亚 + + + 福塔雷萨 + + + 马塞约 + + + 累西腓 + + + 洛罗尼亚 + + + 拿骚 + + + 廷布 + + + 哈博罗内 + + + 明斯克 + + + 伯利兹 + + + 道森 + + + 怀特霍斯 + + + 伊努维克 + + + 温哥华 + + + 道森克里克 + + + 克雷斯顿 + + + 耶洛奈夫 + + + 埃德蒙顿 + + + 斯威夫特卡伦特 + + + 剑桥湾 + + + 里贾纳 + + + 温尼伯 + + + 雷索卢特 + + + 雷尼河 + + + 兰今湾 + + + 阿蒂科肯 + + + 桑德贝 + + + 尼皮贡 + + + 多伦多 + + + 伊魁特 + + + 旁涅唐 + + + 蒙克顿 + + + 哈利法克斯 + + + 古斯湾 + + + 格莱斯贝 + + + 布兰克萨布隆 + + + 圣约翰斯 + + + 可可斯 + + + 金沙萨 + + + 卢本巴希 + + + 班吉 + + + 布拉柴维尔 + + + 苏黎世 + + + 阿比让 + + + 拉罗汤加 + + + 复活节岛 + + + 圣地亚哥 + + + 杜阿拉 + + + 喀什葛尔 + + + 乌鲁木齐 + + + 重庆 + + + 上海 + + + 哈尔滨 + + + 波哥大 + + + 哥斯达黎加 + + + 哈瓦那 + + + 佛得角 + + + 库拉索 + + + 圣诞岛 + + + 尼科西亚 + + + 布拉格 + + + 布辛根 + + + 柏林 + + + 吉布提 + + + 哥本哈根 + + + 多米尼加 + + + 圣多明各 + + + 阿尔及尔 + + + 加拉帕戈斯 + + + 瓜亚基尔 + + + 塔林 + + + 开罗 + + + 阿尤恩 + + + 阿斯马拉 + + + 加那利 + + + 休达 + + + 马德里 + + + 亚的斯亚贝巴 + + + 赫尔辛基 + + + 斐济 + + + 斯坦利 + + + 特鲁克群岛 + + + 波纳佩岛 + + + 库赛埃 + + + 法罗 + + + 巴黎 + + + 利伯维尔 + + + + 英国夏令时间 + + 伦敦 + + + 格林纳达 + + + 第比利斯 + + + 卡宴 + + + 根西岛 + + + 阿克拉 + + + 直布罗陀 + + + 图勒 + + + 戈特霍布 + + + 斯科列斯比桑德 + + + 丹马沙文 + + + 班珠尔 + + + 科纳克里 + + + 瓜德罗普 + + + 马拉博 + + + 雅典 + + + 南乔治亚 + + + 危地马拉 + + + 关岛 + + + 比绍 + + + 圭亚那 + + + 香港 + + + 特古西加尔巴 + + + 萨格勒布 + + + 太子港 + + + 布达佩斯 + + + 雅加达 + + + 坤甸 + + + 望加锡 + + + 查亚普拉 + + + + 爱尔兰夏令时间 + + 都柏林 + + + 耶路撒冷 + + + 曼岛 + + + 加尔各答 + + + 查戈斯 + + + 巴格达 + + + 德黑兰 + + + 雷克雅未克 + + + 罗马 + + + 泽西岛 + + + 牙买加 + + + 安曼 + + + 东京 + + + 内罗毕 + + + 比什凯克 + + + 金边 + + + 恩德伯里 + + + 基里地马地岛 + + + 塔拉瓦 + + + 科摩罗 + + + 圣基茨 + + + 平壤 + + + 首尔 + + + 科威特 + + + 开曼 + + + 阿克套 + + + 乌拉尔 + + + 阿克托别 + + + 克孜洛尔达 + + + 阿拉木图 + + + 万象 + + + 贝鲁特 + + + 圣卢西亚 + + + 瓦杜兹 + + + 科伦坡 + + + 蒙罗维亚 + + + 马塞卢 + + + 维尔纽斯 + + + 卢森堡 + + + 里加 + + + 的黎波里 + + + 卡萨布兰卡 + + + 摩纳哥 + + + 基希讷乌 + + + 波德戈里察 + + + 马里戈特 + + + 安塔那那利佛 + + + 夸贾林 + + + 马朱罗 + + + 斯科普里 + + + 巴马科 + + + 仰光 + + + 科布多 + + + 乌兰巴托 + + + 乔巴山 + + + 澳门 + + + 塞班 + + + 马提尼克 + + + 努瓦克肖特 + + + 蒙特塞拉特 + + + 马耳他 + + + 毛里求斯 + + + 马尔代夫 + + + 布兰太尔 + + + 蒂华纳 + + + 圣伊萨贝尔 + + + 埃莫西约 + + + 马萨特兰 + + + 奇瓦瓦 + + + 巴伊亚班德拉斯 + + + 奥希纳加 + + + 蒙特雷 + + + 墨西哥城 + + + 马塔莫罗斯 + + + 梅里达 + + + 坎昆 + + + 吉隆坡 + + + 古晋 + + + 马普托 + + + 温得和克 + + + 努美阿 + + + 尼亚美 + + + 诺福克 + + + 拉各斯 + + + 马那瓜 + + + 阿姆斯特丹 + + + 奥斯陆 + + + 加德满都 + + + 瑙鲁 + + + 纽埃 + + + 查塔姆 + + + 奥克兰 + + + 马斯喀特 + + + 巴拿马 + + + 利马 + + + 塔希提 + + + 马克萨斯 + + + 甘比尔 + + + 莫尔兹比港 + + + 马尼拉 + + + 卡拉奇 + + + 华沙 + + + 密克隆 + + + 皮特凯恩 + + + 波多黎各 + + + 加沙 + + + 希伯伦 + + + 亚速尔群岛 + + + 马德拉 + + + 里斯本 + + + 帕劳 + + + 亚松森 + + + 卡塔尔 + + + 留尼汪 + + + 布加勒斯特 + + + 贝尔格莱德 + + + 加里宁格勒 + + + 莫斯科 + + + 伏尔加格勒 + + + 萨马拉 + + + 叶卡捷琳堡 + + + 鄂木斯克 + + + 诺沃西比尔斯克 + + + 新库兹涅茨克 + + + 克拉斯诺亚尔斯克 + + + 伊尔库茨克 + + + 雅库茨克 + + + 符拉迪沃斯托克 + + + 汉德加 + + + 萨哈林 + + + 乌斯内拉 + + + 马加丹 + + + 堪察加 + + + 阿纳德尔 + + + 基加利 + + + 利雅得 + + + 瓜达尔卡纳尔 + + + 马埃岛 + + + 喀土穆 + + + 斯德哥尔摩 + + + 新加坡 + + + 圣赫勒拿 + + + 卢布尔雅那 + + + 朗伊尔城 + + + 布拉迪斯拉发 + + + 弗里敦 + + + 圣马力诺 + + + 达喀尔 + + + 摩加迪沙 + + + 帕拉马里博 + + + 朱巴 + + + 圣多美 + + + 萨尔瓦多 + + + 下太子区 + + + 大马士革 + + + 姆巴巴纳 + + + 大特克 + + + 恩贾梅纳 + + + 凯尔盖朗 + + + 洛美 + + + 曼谷 + + + 杜尚别 + + + 法考福 + + + 帝力 + + + 阿什哈巴德 + + + 突尼斯 + + + 东加塔布 + + + 伊斯坦布尔 + + + 西班牙港 + + + 富纳富提 + + + 台北 + + + 达累斯萨拉姆 + + + 乌日哥罗德 + + + 基辅 + + + 辛菲罗波尔 + + + 扎波罗热 + + + 坎帕拉 + + + 中途岛 + + + 约翰斯顿 + + + 威克 + + + 埃达克 + + + 诺姆 + + + 檀香山 + + + 安克雷奇 + + + 亚库塔特 + + + 锡特卡 + + + 朱诺 + + + 梅特拉卡特拉 + + + 洛杉矶 + + + 博伊西 + + + 凤凰城 + + + 丹佛 + + + 北达科他州比尤拉 + + + 北达科他州新塞勒姆 + + + 北达科他州申特 + + + 芝加哥 + + + 密诺米尼 + + + 印第安纳州温森斯 + + + 印第安纳州彼得斯堡 + + + 印第安纳州特尔城 + + + 印第安纳州诺克斯 + + + 印第安纳州威纳马克 + + + 印第安纳州马伦戈 + + + 印第安纳波利斯 + + + 路易斯维尔 + + + 印第安纳州维维市 + + + 肯塔基州蒙蒂塞洛 + + + 底特律 + + + 纽约 + + + 蒙得维的亚 + + + 撒马尔罕 + + + 塔什干 + + + 梵蒂冈 + + + 圣文森特 + + + 加拉加斯 + + + 托尔托拉 + + + 圣托马斯 + + + 胡志明市 + + + 埃法特 + + + 瓦利斯 + + + 阿皮亚 + + + 亚丁 + + + 马约特 + + + 约翰内斯堡 + + + 卢萨卡 + + + 哈拉雷 + + + + 阿克里时间 + 阿克里标准时间 + 阿克里夏令时间 + + + + + 阿富汗时间 + + + + + 中部非洲时间 + + + + + 东部非洲时间 + + + + + 南部非洲时间 + + + + + 西部非洲时间 + 西部非洲标准时间 + 西部非洲夏令时间 + + + + + 阿拉斯加时间 + 阿拉斯加标准时间 + 阿拉斯加夏令时间 + + + + + 阿拉木图时间 + 阿拉木图标准时间 + 阿拉木图夏令时间 + + + + + 亚马逊时间 + 亚马逊标准时间 + 亚马逊夏令时间 + + + + + 北美中部时间 + 北美中部标准时间 + 北美中部夏令时间 + + + + + 北美东部时间 + 北美东部标准时间 + 北美东部夏令时间 + + + + + 北美山区时间 + 北美山区标准时间 + 北美山区夏令时间 + + + + + 北美太平洋时间 + 北美太平洋标准时间 + 北美太平洋夏令时间 + + + + + 阿纳德尔时间 + 阿纳德尔标准时间 + 阿纳德尔夏令时间 + + + + + 阿克套时间 + 阿克套标准时间 + 阿克套夏令时间 + + + + + 阿克托别时间 + 阿克托别标准时间 + 阿克托别夏令时间 + + + + + 阿拉伯时间 + 阿拉伯标准时间 + 阿拉伯夏令时间 + + + + + 阿根廷时间 + 阿根廷标准时间 + 阿根廷夏令时间 + + + + + 阿根廷西部时间 + 阿根廷西部标准时间 + 阿根廷西部夏令时间 + + + + + 亚美尼亚时间 + 亚美尼亚标准时间 + 亚美尼亚夏令时间 + + + + + 大西洋时间 + 大西洋标准时间 + 大西洋夏令时间 + + + + + 澳大利亚中部时间 + 澳大利亚中部标准时间 + 澳大利亚中部夏令时间 + + + + + 澳大利亚中西部时间 + 澳大利亚中西部标准时间 + 澳大利亚中西部夏令时间 + + + + + 澳大利亚东部时间 + 澳大利亚东部标准时间 + 澳大利亚东部夏令时间 + + + + + 澳大利亚西部时间 + 澳大利亚西部标准时间 + 澳大利亚西部夏令时间 + + + + + 阿塞拜疆时间 + 阿塞拜疆标准时间 + 阿塞拜疆夏令时间 + + + + + 亚速尔群岛时间 + 亚速尔群岛标准时间 + 亚速尔群岛夏令时间 + + + + + 孟加拉时间 + 孟加拉标准时间 + 孟加拉夏令时间 + + + + + 不丹时间 + + + + + 玻利维亚时间 + + + + + 巴西利亚时间 + 巴西利亚标准时间 + 巴西利亚夏令时间 + + + + + 文莱达鲁萨兰时间 + + + + + 佛得角时间 + 佛得角标准时间 + 佛得角夏令时间 + + + + + 凯西时间 + + + + + 查莫罗时间 + + + + + 查坦时间 + 查坦标准时间 + 查坦夏令时间 + + + + + 智利时间 + 智利标准时间 + 智利夏令时间 + + + + + 中国时间 + 中国标准时间 + 中国夏令时间 + + + + + 乔巴山时间 + 乔巴山标准时间 + 乔巴山夏令时间 + + + + + 圣诞岛时间 + + + + + 科科斯群岛时间 + + + + + 哥伦比亚时间 + 哥伦比亚标准时间 + 哥伦比亚夏令时间 + + + + + 库克群岛时间 + 库克群岛标准时间 + 库克群岛仲夏时间 + + + + + 古巴时间 + 古巴标准时间 + 古巴夏令时间 + + + + + 戴维斯时间 + + + + + 迪蒙迪尔维尔时间 + + + + + 东帝汶时间 + + + + + 复活节岛时间 + 复活节岛标准时间 + 复活节岛夏令时间 + + + + + 厄瓜多尔时间 + + + + + 中欧时间 + 中欧标准时间 + 中欧夏令时间 + + + + + 东欧时间 + 东欧标准时间 + 东欧夏令时间 + + + + + 西欧时间 + 西欧标准时间 + 西欧夏令时间 + + + + + 福克兰群岛时间 + 福克兰群岛标准时间 + 福克兰群岛夏令时间 + + + + + 斐济时间 + 斐济标准时间 + 斐济夏令时间 + + + + + 法属圭亚那时间 + + + + + 法属南方和南极领地时间 + + + + + 加拉帕戈斯时间 + + + + + 甘比尔时间 + + + + + 格鲁吉亚时间 + 格鲁吉亚标准时间 + 格鲁吉亚夏令时间 + + + + + 吉尔伯特群岛时间 + + + + + 格林尼治标准时间 + + + + + 格陵兰岛东部时间 + 格陵兰岛东部标准时间 + 格陵兰岛东部夏令时间 + + + + + 格陵兰岛西部时间 + 格陵兰岛西部标准时间 + 格陵兰岛西部夏令时间 + + + + + 关岛时间 + + + + + 海湾时间 + + + + + 圭亚那时间 + + + + + 夏威夷-阿留申时间 + 夏威夷-阿留申标准时间 + 夏威夷-阿留申夏令时间 + + + + + 香港时间 + 香港标准时间 + 香港夏令时间 + + + + + 科布多时间 + 科布多标准时间 + 科布多夏令时间 + + + + + 印度时间 + + + + + 印度洋时间 + + + + + 印度支那时间 + + + + + 印度尼西亚中部时间 + + + + + 印度尼西亚东部时间 + + + + + 印度尼西亚西部时间 + + + + + 伊朗时间 + 伊朗标准时间 + 伊朗夏令时间 + + + + + 伊尔库茨克时间 + 伊尔库茨克标准时间 + 伊尔库茨克夏令时间 + + + + + 以色列时间 + 以色列标准时间 + 以色列夏令时间 + + + + + 日本时间 + 日本标准时间 + 日本夏令时间 + + + + + 彼得罗巴甫洛夫斯克-堪察加时间 + 彼得罗巴甫洛夫斯克-堪察加标准时间 + 彼得罗巴甫洛夫斯克-堪察加夏令时间 + + + + + 哈萨克斯坦东部时间 + + + + + 哈萨克斯坦西部时间 + + + + + 韩国时间 + 韩国标准时间 + 韩国夏令时间 + + + + + 科斯雷时间 + + + + + 克拉斯诺亚尔斯克时间 + 克拉斯诺亚尔斯克标准时间 + 克拉斯诺亚尔斯克夏令时间 + + + + + 吉尔吉斯斯坦时间 + + + + + 兰卡时间 + + + + + 莱恩群岛时间 + + + + + 豪勋爵岛时间 + 豪勋爵岛标准时间 + 豪勋爵岛夏令时间 + + + + + 澳门时间 + 澳门标准时间 + 澳门夏令时间 + + + + + 麦夸里岛时间 + + + + + 马加丹时间 + 马加丹标准时间 + 马加丹夏令时间 + + + + + 马来西亚时间 + + + + + 马尔代夫时间 + + + + + 马克萨斯群岛时间 + + + + + 马绍尔群岛时间 + + + + + 毛里求斯时间 + 毛里求斯标准时间 + 毛里求斯夏令时间 + + + + + 莫森时间 + + + + + 墨西哥西北部时间 + 墨西哥西北部标准时间 + 墨西哥西北部夏令时间 + + + + + 墨西哥太平洋时间 + 墨西哥太平洋标准时间 + 墨西哥太平洋夏令时间 + + + + + 乌兰巴托时间 + 乌兰巴托标准时间 + 乌兰巴托夏令时间 + + + + + 莫斯科时间 + 莫斯科标准时间 + 莫斯科夏令时间 + + + + + 缅甸时间 + + + + + 瑙鲁时间 + + + + + 尼泊尔时间 + + + + + 新喀里多尼亚时间 + 新喀里多尼亚标准时间 + 新喀里多尼亚夏令时间 + + + + + 新西兰时间 + 新西兰标准时间 + 新西兰夏令时间 + + + + + 纽芬兰时间 + 纽芬兰标准时间 + 纽芬兰夏令时间 + + + + + 纽埃时间 + + + + + 诺福克岛时间 + + + + + 费尔南多-迪诺罗尼亚岛时间 + 费尔南多-迪诺罗尼亚岛标准时间 + 费尔南多-迪诺罗尼亚岛夏令时间 + + + + + 北马里亚纳群岛时间 + + + + + 新西伯利亚时间 + 新西伯利亚标准时间 + 新西伯利亚夏令时间 + + + + + 鄂木斯克时间 + 鄂木斯克标准时间 + 鄂木斯克夏令时间 + + + + + 巴基斯坦时间 + 巴基斯坦标准时间 + 巴基斯坦夏令时间 + + + + + 帕劳时间 + + + + + 巴布亚新几内亚时间 + + + + + 巴拉圭时间 + 巴拉圭标准时间 + 巴拉圭夏令时间 + + + + + 秘鲁时间 + 秘鲁标准时间 + 秘鲁夏令时间 + + + + + 菲律宾时间 + 菲律宾标准时间 + 菲律宾夏令时间 + + + + + 菲尼克斯群岛时间 + + + + + 圣皮埃尔和密克隆群岛时间 + 圣皮埃尔和密克隆群岛标准时间 + 圣皮埃尔和密克隆群岛夏令时间 + + + + + 皮特凯恩时间 + + + + + 波纳佩时间 + + + + + 克孜洛尔达时间 + 克孜洛尔达标准时间 + 克孜洛尔达夏令时间 + + + + + 留尼汪时间 + + + + + 罗瑟拉时间 + + + + + 库页岛时间 + 库页岛标准时间 + 库页岛夏令时间 + + + + + 萨马拉时间 + 萨马拉标准时间 + 萨马拉夏令时间 + + + + + 萨摩亚时间 + 萨摩亚标准时间 + 萨摩亚夏令时间 + + + + + 塞舌尔时间 + + + + + 新加坡时间 + + + + + 所罗门群岛时间 + + + + + 南乔治亚岛时间 + + + + + 苏里南时间 + + + + + 昭和时间 + + + + + 塔希提岛时间 + + + + + 台北时间 + 台北标准时间 + 台北夏令时间 + + + + + 塔吉克斯坦时间 + + + + + 托克劳时间 + + + + + 汤加时间 + 汤加标准时间 + 汤加夏令时间 + + + + + 楚克时间 + + + + + 土库曼斯坦时间 + 土库曼斯坦标准时间 + 土库曼斯坦夏令时间 + + + + + 图瓦卢时间 + + + + + 乌拉圭时间 + 乌拉圭标准时间 + 乌拉圭夏令时间 + + + + + 乌兹别克斯坦时间 + 乌兹别克斯坦标准时间 + 乌兹别克斯坦夏令时间 + + + + + 瓦努阿图时间 + 瓦努阿图标准时间 + 瓦努阿图夏令时间 + + + + + 委内瑞拉时间 + + + + + 海参崴时间 + 海参崴标准时间 + 海参崴夏令时间 + + + + + 伏尔加格勒时间 + 伏尔加格勒标准时间 + 伏尔加格勒夏令时间 + + + + + 沃斯托克时间 + + + + + 威克岛时间 + + + + + 瓦利斯和富图纳时间 + + + + + 雅库茨克时间 + 雅库茨克标准时间 + 雅库茨克夏令时间 + + + + + 叶卡捷琳堡时间 + 叶卡捷琳堡标准时间 + 叶卡捷琳堡夏令时间 + + + + + + latn + + hanidec + hans + hansfin + + + . + , + ; + % + + + - + E + × + + + NaN + + + + + #,##0.### + + + + + 0千 + 0万 + 00万 + 000万 + 0000万 + 0亿 + 00亿 + 000亿 + 0000亿 + 0兆 + 00兆 + 000兆 + + + + + 0千 + 0万 + 00万 + 000万 + 0000万 + 0亿 + 00亿 + 000亿 + 0000亿 + 0兆 + 00兆 + 000兆 + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤ #,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0}{1} + + + + 安道尔比塞塔 + + + 阿联酋迪拉姆 + 阿联酋迪拉姆 + + + 阿富汗尼 (1927–2002) + + + 阿富汗尼 + 阿富汗尼 + + + 阿尔巴尼亚列克 + 阿尔巴尼亚列克 + + + 亚美尼亚德拉姆 + 亚美尼亚德拉姆 + + + 荷属安的列斯盾 + 荷属安的列斯盾 + + + 安哥拉宽扎 + 安哥拉宽扎 + + + 安哥拉宽扎 (1977–1990) + + + 安哥拉新宽扎 (1990–2000) + + + 安哥拉重新调整宽扎 (1995–1999) + + + 阿根廷奥斯特拉尔 + + + 阿根廷法定比索 (1970–1983) + + + 阿根廷比索 (1881–1970) + + + 阿根廷比索 (1983–1985) + + + 阿根廷比索 + 阿根廷比索 + + + 奥地利先令 + + + 澳大利亚元 + 澳大利亚元 + AU$ + + + 阿鲁巴基尔德元 + 阿鲁巴基尔德元 + + + 阿塞拜疆马纳特 (1993–2006) + + + 阿塞拜疆马纳特 + 阿塞拜疆马纳特 + + + 波士尼亚-赫塞哥维纳第纳尔 (1992–1994) + + + 波斯尼亚-黑塞哥维那可兑换马克 + 波斯尼亚-黑塞哥维那可兑换马克 + + + 波士尼亚-赫塞哥维纳新第纳尔 (1994–1997) + + + 巴巴多斯元 + 巴巴多斯元 + + + 孟加拉塔卡 + 孟加拉塔卡 + + + 比利时法郎(可兑换) + + + 比利时法郎 + + + 比利时法郎(金融) + + + 保加利亚硬列弗 + + + 保加利亚社会党列弗 + + + 保加利亚新列弗 + 保加利亚新列弗 + + + 保加利亚列弗 (1879–1952) + + + 巴林第纳尔 + 巴林第纳尔 + + + 布隆迪法郎 + 布隆迪法郎 + + + 百慕大元 + 百慕大元 + + + 文莱元 + 文莱元 + + + 玻利维亚诺 + 玻利维亚诺 + + + 玻利维亚诺 (1863–1963) + + + 玻利维亚比索 + + + 玻利维亚 Mvdol(资金) + + + 巴西新克鲁赛罗 (1967–1986) + + + 巴西克鲁扎多 (1986–1989) + + + 巴西克鲁塞罗 (1990–1993) + + + 巴西雷亚尔 + 巴西雷亚尔 + R$ + + + 巴西新克鲁扎多 (1989–1990) + + + 巴西克鲁塞罗 (1993–1994) + + + 巴西克鲁塞罗 (1942–1967) + + + 巴哈马元 + 巴哈马元 + + + 不丹努尔特鲁姆 + 不丹努尔特鲁姆 + + + 缅元 + + + 博茨瓦纳普拉 + 博茨瓦纳普拉 + + + 白俄罗斯新卢布 (1994–1999) + + + 白俄罗斯卢布 + 白俄罗斯卢布 + + + 伯利兹元 + 伯利兹元 + + + 加拿大元 + 加拿大元 + CA$ + + + 刚果法郎 + 刚果法郎 + + + 欧元 (WIR) + + + 瑞士法郎 + 瑞士法郎 + + + 法郎 (WIR) + + + 智利埃斯库多 + + + 智利(资金) + + + 智利比索 + 智利比索 + + + 人民币 + 人民币 + + + + 哥伦比亚比索 + 哥伦比亚比索 + + + 哥伦比亚币 + + + 哥斯达黎加科朗 + 哥斯达黎加科朗 + + + 旧塞尔维亚第纳尔 + + + 捷克硬克郎 + + + 古巴可兑换比索 + 古巴可兑换比索 + + + 古巴比索 + 古巴比索 + + + 佛得角埃斯库多 + 佛得角埃斯库多 + + + 塞浦路斯镑 + + + 捷克克郎 + 捷克克郎 + + + 东德奥斯特马克 + + + 德国马克 + + + 吉布提法郎 + 吉布提法郎 + + + 丹麦克朗 + 丹麦克朗 + + + 多米尼加比索 + 多米尼加比索 + + + 阿尔及利亚第纳尔 + 阿尔及利亚第纳尔 + + + 厄瓜多尔苏克雷 + + + 厄瓜多尔 (UVC) + + + 爱沙尼亚克朗 + + + 埃及镑 + 埃及镑 + + + 厄立特里亚纳克法 + 厄立特里亚纳克法 + + + 西班牙比塞塔(帐户 A) + + + 西班牙比塞塔(兑换帐户) + + + 西班牙比塞塔 + + + 埃塞俄比亚比尔 + 埃塞俄比亚比尔 + + + 欧元 + 欧元 + + + + 芬兰马克 + + + 斐济元 + 斐济元 + + + 福克兰群岛镑 + 福克兰群岛镑 + + + 法国法郎 + + + 英镑 + 英镑 + £ + + + 乔治亚库蓬拉瑞特 + + + 格鲁吉亚拉里 + 格鲁吉亚拉里 + + + 加纳塞第 + + + 加纳塞地 + 加纳塞地 + + + 直布罗陀镑 + 直布罗陀镑 + + + 冈比亚达拉西 + 冈比亚达拉西 + + + 几内亚法郎 + 几内亚法郎 + + + 几内亚西里 + + + 赤道几内亚埃奎勒 + + + 希腊德拉克马 + + + 危地马拉格查尔 + 危地马拉格查尔 + + + 葡萄牙几内亚埃斯库多 + + + 几内亚比绍比索 + + + 圭亚那元 + 圭亚那元 + + + 港元 + 港元 + HK$ + + + 洪都拉斯伦皮拉 + 洪都拉斯伦皮拉 + + + 克罗地亚第纳尔 + + + 克罗地亚库纳 + 克罗地亚库纳 + + + 海地古德 + 海地古德 + + + 匈牙利福林 + 匈牙利福林 + + + 印度尼西亚盾 + 印度尼西亚盾 + + + 爱尔兰镑 + + + 以色列镑 + + + 以色列新谢克尔 + 以色列新谢克尔 + + + + 印度卢比 + 印度卢比 + + + + 伊拉克第纳尔 + 伊拉克第纳尔 + + + 伊朗里亚尔 + 伊朗里亚尔 + + + 冰岛克朗 + 冰岛克朗 + + + 意大利里拉 + + + 牙买加元 + 牙买加元 + + + 约旦第纳尔 + 约旦第纳尔 + + + 日元 + 日元 + JP¥ + + + 肯尼亚先令 + 肯尼亚先令 + + + 吉尔吉斯斯坦索姆 + 吉尔吉斯斯坦索姆 + + + 柬埔寨瑞尔 + 柬埔寨瑞尔 + + + 科摩罗法郎 + 科摩罗法郎 + + + 朝鲜元 + 朝鲜元 + + + 韩元 (1953–1962) + + + 韩元 (1945–1953) + + + 韩元 + 韩元 + + + + 科威特第纳尔 + 科威特第纳尔 + + + 开曼元 + 开曼元 + + + 哈萨克斯坦坚戈 + 哈萨克斯坦坚戈 + + + 老挝基普 + 老挝基普 + + + 黎巴嫩镑 + 黎巴嫩镑 + + + 斯里兰卡卢比 + 斯里兰卡卢比 + + + 利比里亚元 + 利比里亚元 + + + 莱索托洛蒂 + + + 立陶宛立特 + 立陶宛立特 + + + 立陶宛塔咯呐司 + + + 卢森堡可兑换法郎 + + + 卢森堡法郎 + + + 卢森堡金融法郎 + + + 拉脱维亚拉特 + 拉脱维亚拉特 + + + 拉脱维亚卢布 + + + 利比亚第纳尔 + 利比亚第纳尔 + + + 摩洛哥迪拉姆 + 摩洛哥迪拉姆 + + + 摩洛哥法郎 + + + 摩纳哥法郎 + + + 摩尔多瓦库邦 + + + 摩尔多瓦列伊 + 摩尔多瓦列伊 + + + 马达加斯加阿里亚里 + 马达加斯加阿里亚里 + + + 马达加斯加法郎 + + + 马其顿第纳尔 + 马其顿第纳尔 + + + 马其顿第纳尔 (1992–1993) + + + 马里法郎 + + + 缅甸元 + 缅甸元 + + + 蒙古图格里克 + 蒙古图格里克 + + + 澳门元 + 澳门元 + + + 毛里塔尼亚乌吉亚 + 毛里塔尼亚乌吉亚 + + + 马耳他里拉 + + + 马耳他镑 + + + 毛里求斯卢比 + 毛里求斯卢比 + + + 马尔代夫卢菲亚 + 马尔代夫卢菲亚 + + + 马拉维克瓦查 + 马拉维克瓦查 + + + 墨西哥比索 + 墨西哥比索 + MX$ + + + 墨西哥银比索 (1861–1992) + + + 墨西哥(资金) + + + 马来西亚林吉特 + 马来西亚林吉特 + + + 莫桑比克埃斯库多 + + + 旧莫桑比克美提卡 + + + 莫桑比克美提卡 + 莫桑比克美提卡 + + + 纳米比亚元 + 纳米比亚元 + + + 尼日利亚奈拉 + 尼日利亚奈拉 + + + 尼加拉瓜科多巴 (1988–1991) + + + 尼加拉瓜金科多巴 + 尼加拉瓜金科多巴 + + + 荷兰盾 + + + 挪威克朗 + 挪威克朗 + + + 尼泊尔卢比 + 尼泊尔卢比 + + + 新西兰元 + 新西兰元 + NZ$ + + + 阿曼里亚尔 + 阿曼里亚尔 + + + 巴拿马巴波亚 + 巴拿马巴波亚 + + + 秘鲁印第 + + + 秘鲁新索尔 + 秘鲁新索尔 + + + 秘鲁索尔 (1863–1965) + + + 巴布亚新几内亚基那 + 巴布亚新几内亚基那 + + + 菲律宾比索 + 菲律宾比索 + + + 巴基斯坦卢比 + 巴基斯坦卢比 + + + 波兰兹罗提 + 波兰兹罗提 + + + 波兰兹罗提 (1950–1995) + + + 葡萄牙埃斯库多 + + + 巴拉圭瓜拉尼 + 巴拉圭瓜拉尼 + + + 卡塔尔里亚尔 + 卡塔尔里亚尔 + + + 罗得西亚元 + + + 旧罗马尼亚列伊 + + + 罗马尼亚列伊 + 罗马尼亚列伊 + + + 塞尔维亚第纳尔 + 塞尔维亚第纳尔 + + + 俄罗斯卢布 + 俄罗斯卢布 + + + 俄国卢布 (1991–1998) + + + 卢旺达法郎 + 卢旺达法郎 + + + 沙特里亚尔 + 沙特里亚尔 + + + 所罗门群岛元 + 所罗门群岛元 + + + 塞舌尔卢比 + 塞舌尔卢比 + + + 苏丹第纳尔 (1992–2007) + + + 苏丹镑 + 苏丹镑 + + + 旧苏丹镑 + + + 瑞典克朗 + 瑞典克朗 + + + 新加坡元 + 新加坡元 + + + 圣赫勒拿群岛磅 + 圣赫勒拿群岛磅 + + + 斯洛文尼亚托拉尔 + + + 斯洛伐克克朗 + + + 塞拉利昂利昂 + 塞拉利昂利昂 + + + 索马里先令 + 索马里先令 + + + 苏里南元 + 苏里南元 + + + 苏里南盾 + + + 南苏丹镑 + 南苏丹镑 + + + 圣多美和普林西比多布拉 + 圣多美和普林西比多布拉 + + + 苏联卢布 + + + 萨尔瓦多科朗 + + + 叙利亚镑 + 叙利亚镑 + + + 斯威士兰里兰吉尼 + 斯威士兰里兰吉尼 + + + 泰铢 + 泰铢 + ฿ + + + 塔吉克斯坦卢布 + + + 塔吉克斯坦索莫尼 + 塔吉克斯坦索莫尼 + + + 土库曼斯坦马纳特 (1993–2009) + + + 土库曼斯坦马纳特 + 土库曼斯坦马纳特 + + + 突尼斯第纳尔 + 突尼斯第纳尔 + + + 汤加潘加 + 汤加潘加 + + + 帝汶埃斯库多 + + + 土耳其里拉 (1922–2005) + + + 土耳其里拉 + 土耳其里拉 + + + 特立尼达和多巴哥元 + 特立尼达和多巴哥元 + + + 新台币 + 新台币 + NT$ + + + 坦桑尼亚先令 + 坦桑尼亚先令 + + + 乌克兰格里夫纳 + 乌克兰格里夫纳 + + + 乌克兰币 + + + 乌干达先令 (1966–1987) + + + 乌干达先令 + 乌干达先令 + + + 美元 + 美元 + US$ + + + 美元(次日) + + + 美元(当日) + + + 乌拉圭比索(索引单位) + + + 乌拉圭比索 (1975–1993) + + + 乌拉圭比索 + 乌拉圭比索 + + + 乌兹别克斯坦苏姆 + 乌兹别克斯坦苏姆 + + + 委内瑞拉玻利瓦尔 (1871–2008) + + + 委内瑞拉玻利瓦尔 + 委内瑞拉玻利瓦尔 + + + 越南盾 + 越南盾 + + + + 越南盾 (1978–1985) + + + 瓦努阿图瓦图 + 瓦努阿图瓦图 + + + 萨摩亚塔拉 + 萨摩亚塔拉 + + + 中非金融合作法郎 + 中非金融合作法郎 + FCFA + + + + + + 黄金 + + + 欧洲复合单位 + + + 欧洲货币联盟 + + + 欧洲计算单位 (XBC) + + + 欧洲计算单位 (XBD) + + + 东加勒比元 + 东加勒比元 + EC$ + + + 特别提款权 + + + 欧洲货币单位 + + + 法国金法郎 + + + 法国法郎 (UIC) + + + 非洲金融共同体法郎 + 非洲金融共同体法郎 + CFA + + + + + + 太平洋法郎 + 太平洋法郎 + CFPF + + + + + + RINET 基金 + + + 测试货币代码 + + + 未知货币 + (未知货币) + + + 也门第纳尔 + + + 也门里亚尔 + 也门里亚尔 + + + 南斯拉夫硬第纳尔 (1966–1990) + + + 南斯拉夫新第纳尔 (1994–2002) + + + 南斯拉夫可兑换第纳尔 (1990–1992) + + + 南斯拉夫改良第纳尔 (1992–1993) + + + 南非兰特 (金融) + + + 南非兰特 + 南非兰特 + + + 赞比亚克瓦查 (1968–2012) + + + 赞比亚克瓦查 + 赞比亚克瓦查 + + + 新扎伊尔 (1993–1998) + + + 扎伊尔 (1971–1993) + + + 津巴布韦元 (1980–2008) + + + 津巴布韦元 (2009) + + + 津巴布韦元 (2008) + + + + {0}+ + {0}-{1} + + + + + + {0}每{1} + + + {0}G力 + + + {0}分钟 + + + {0}秒钟 + + + {0}度 + + + {0}英亩 + + + {0}公顷 + + + {0}平方英尺 + + + {0}平方公里 + + + {0}平方米 + + + {0}平方英里 + + + {0}天 + + + {0}小时 + + + {0}毫秒 + + + {0}分钟 + + + {0}个月 + + + {0}秒钟 + + + {0}周 + + + {0}年 + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + {0}克 + + + {0}千克 + + + {0}盎司 + + + {0}磅 + + + {0}马力 + + + {0}千瓦 + + + {0}瓦特 + + + {0}百帕斯卡 + + + {0}英寸汞柱 + + + {0}毫巴 + + + {0}千米每小时 + + + {0}米每秒 + + + {0}英里每小时 + + + {0}摄氏度 + + + {0}华氏度 + + + {0}立方公里 + + + {0}立方英里 + + + {0}公升 + + + + + {0}/{1} + + + {0} G + + + {0}分 + + + {0}秒 + + + {0}° + + + {0} ac + + + {0} ha + + + {0} ft² + + + {0} km² + + + {0} m² + + + {0} mi² + + + {0}天 + + + {0}小时 + + + {0}毫秒 + + + {0}分钟 + + + {0}个月 + + + {0}秒 + + + {0}周 + + + {0}年 + + + {0} cm + + + {0} ft + + + {0} in + + + {0} km + + + {0} ly + + + {0} m + + + {0} mi + + + {0} mm + + + {0} pm + + + {0} yd + + + {0}克 + + + {0}千克 + + + {0}盎司 + + + {0}磅 + + + {0} hp + + + {0} kW + + + {0}瓦 + + + {0} hPa + + + {0} inHg + + + {0} mb + + + {0}千米/小时 + + + {0}米/秒 + + + {0}英里/小时 + + + {0}°C + + + {0}°F + + + {0} km³ + + + {0} mi³ + + + {0}升 + + + + + {0}/{1} + + + {0}G + + + {0}′ + + + {0}″ + + + {0}° + + + {0}ac + + + {0}ha + + + {0}ft² + + + {0}km² + + + {0}m² + + + {0}mi² + + + {0}天 + + + {0}小时 + + + {0}毫秒 + + + {0}分钟 + + + {0}个月 + + + {0}秒 + + + {0}周 + + + {0}年 + + + {0}cm + + + {0}′ + + + {0}″ + + + {0}km + + + {0}ly + + + {0}m + + + {0}mi + + + {0}mm + + + {0}pm + + + {0}yd + + + {0}克 + + + {0}千克 + + + {0}盎司 + + + {0}磅 + + + {0}hp + + + {0}kW + + + {0}W + + + {0}hPa + + + {0}" Hg + + + {0}mb + + + {0}km/h + + + {0}m/s + + + {0}mi/h + + + {0}° + + + {0}°F + + + {0}km³ + + + {0}mi³ + + + {0}l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}、{1} + {0}、{1} + {0}和{1} + {0}和{1} + + + {0}{1} + {0}{1} + {0}{1} + {0}{1} + + + {0}{1} + {0}{1} + {0}{1} + {0}{1} + + + + + 确定:是 + 否定:否 + + + + diff --git a/library/Zend/Locale/Data/zh_Hans.xml b/library/Zend/Locale/Data/zh_Hans.xml new file mode 100755 index 000000000..515692e77 --- /dev/null +++ b/library/Zend/Locale/Data/zh_Hans.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + + + 瓜德罗普岛 + 黑山 + 圣皮埃尔和密克隆 + + + 韦氏拼音罗马字 + + + 繁体中文排序顺序 (Big5) + 字典排序 + 简体中文排序顺序 (GB2312) + 电话簿排序 + 拼音排序顺序 + 改良排序 + 传统排序 + + + 语系:{0} + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + L + M/dE + + + + + + + + U年MMMd日EEEE + + + + + U年MMMd日 + + + + + U年MMMd日 + + + + + U-M-d + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + d/M/yyGGGGG + + + + + + + {1}{0} + + + + + {1}{0} + + + + + {1}{0} + + + + + {1}{0} + + + + HH:mm + L + d/M + E, d/M + M月 + M月d日 + M/yGGGGG + d/M/yGGGGG + E, d/M/yGGGGG + + + {0}–{1} + + ah至h时 + + + vHH:mm–HH:mm + vHH:mm–HH:mm + + + vHH–HH + + + M月至M月 + + + y年M月至y年M月 + + + d/M/y至d/M/y + d/M/y至d/M/y + d/M/y至d/M/y + + + d/M/yE至d/M/yE + d/M/yE至d/M/yE + d/M/yE至d/M/yE + + + y年M月d日E至M月d日E + + + + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y年M月d日 + + + + + d/M/yy + + + + + + + {1}{0} + + + + + {1}{0} + + + + + {1} {0} + + + + + {1} {0} + + + + HH:mm + L + d/M + E, d/M + dd/MM + M月d日 + M/y + d/M/y + d/M/y(E) + MM/y + + + {0}–{1} + + ah至h时 + + + vHH:mm–HH:mm + vHH:mm–HH:mm + + + vHH–HH + + + y年M月至y年M月 + + + d/M/y至d/M/y + d/M/y至d/M/y + d/M/y至d/M/y + + + d/M/yE至d/M/yE + d/M/yE至d/M/yE + d/M/yE至d/M/yE + + + y年M月d日E至M月d日E + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + M/d + M/dE + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + L + M-d + M月 + + + + + + + + {0}秒后 + + + {0}秒前 + + + + + + 杜蒙杜威勒 + + + 圣巴太累米 + + + 圣约翰 + + + 圣多明戈 + + + 丹马克沙伏 + + + 扎波罗什 + + + + 科科斯岛时间 + + + + + 杜蒙特杜维尔时间 + + + + + 法属南部和南极洲时间 + + + + + 吉尔柏特群岛时间 + + + + + 凤凰岛时间 + + + + + 圣皮埃尔和密克隆时间 + 圣皮埃尔和密克隆标准时间 + 圣皮埃尔和密克隆夏令时间 + + + + + 南乔治亚时间 + + + + + 大溪地时间 + + + + + 特鲁克时间 + + + + + 吐瓦鲁时间 + + + + + + + + + 0千 + 0万 + 00万 + 000万 + 0000万 + 0亿 + 00亿 + 000亿 + 0000亿 + 0万亿 + 00万亿 + 000万亿 + + + + + 0千 + 0万 + 00万 + 000万 + 0000万 + 0亿 + 00亿 + 000亿 + 0000亿 + 0万亿 + 00万亿 + 000万亿 + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + 阿鲁巴弗罗林 + 阿鲁巴弗罗林 + + + $ + + + 洪都拉斯拉伦皮拉 + 洪都拉斯拉伦皮拉 + + + 开曼群岛元 + 开曼群岛元 + + + 哈萨克斯坦腾格 + 哈萨克斯坦腾格 + + + 尼加拉瓜科多巴 + 尼加拉瓜科多巴 + + + 乌克兰赫夫纳 + 乌克兰赫夫纳 + + + 白银 + + + + + + + {0}/{1} + + + {0}秒 + + + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + + + diff --git a/library/Zend/Locale/Data/zh_Hans_MO.xml b/library/Zend/Locale/Data/zh_Hans_MO.xml new file mode 100755 index 000000000..b1d9b7bb4 --- /dev/null +++ b/library/Zend/Locale/Data/zh_Hans_MO.xml @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + 克利柏顿岛 + 黑山 + 圣皮埃尔和密克隆 + + + 韦氏拼音罗马字 + + + 繁体中文排序顺序 (Big5) + 字典排序 + 简体中文排序顺序 (GB2312) + 电话簿排序 + 拼音排序顺序 + 改良排序 + 传统排序 + + + 语系:{0} + + + + [_ ﹏ \- — , 、 ; : ! ? … 。 · ‘ ’ “ ” ( ) [ ] 〈 〉 《 》 ﹁ ﹂ ﹃ ﹄ 【 】 〔 〕 / ~] + + + + + + + + U年MMMd日EEEE + + + + + U年MMMd日 + + + + + U年MMMd日 + + + + + U-M-d + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + d/M/yyGGGGG + + + + + + M-d + M-dE + MM-dd + M月d日 + Gy年M月d日 + Gy年M月d日,E + + + {0}–{1} + + vHH:mm–HH:mm + vHH:mm–HH:mm + + + vHH–HH + + + M-d至M-d + M-d至M-d + + + M-dE至M-dE + M-dE至M-dE + + + M月d日E至M月d日E + + + y年M月至y年M月 + + + d/M/y至d/M/y + d/M/y至d/M/y + d/M/y至d/M/y + + + d/M/yE至d/M/yE + d/M/yE至d/M/yE + d/M/yE至d/M/yE + + + y年M月d日E至M月d日E + + + + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y年M月d日 + + + + + d/M/yy + + + + + + + {1}{0} + + + + + {1}{0} + + + + + {1} {0} + + + + + {1} {0} + + + + M-d + M-dE + MM-dd + M月d日 + y年M月 + y年M月d日 + y年M月d日,E + + + {0}–{1} + + d日至d日 + + + vHH:mm–HH:mm + vHH:mm–HH:mm + + + vHH–HH + + + M-d至M-d + M-d至M-d + + + M-dE至M-dE + M-dE至M-dE + + + M月d日E至M月d日E + + + y年M月至y年M月 + + + d/M/y至d/M/y + d/M/y至d/M/y + d/M/y至d/M/y + + + d/M/yE至d/M/yE + d/M/yE至d/M/yE + d/M/yE至d/M/yE + + + y年M月d日E至M月d日E + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + M-d + M-dE + M月 + + + + + + + + + + + {0}秒后 + + + {0}秒前 + + + + + + 杜蒙杜威勒 + + + 圣巴太累米 + + + 圣约翰 + + + 圣多明戈 + + + 扎波罗什 + + + 梅诺米尼 + + + + 科科斯岛时间 + + + + + 杜蒙特杜维尔时间 + + + + + 法属南部和南极洲时间 + + + + + 吉尔柏特群岛时间 + + + + + 凤凰岛时间 + + + + + 圣皮埃尔和密克隆时间 + 圣皮埃尔和密克隆标准时间 + 圣皮埃尔和密克隆夏令时间 + + + + + 南乔治亚时间 + + + + + 大溪地时间 + + + + + 特鲁克时间 + + + + + 吐瓦鲁时间 + + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + 荷属安的列斯盾 + 荷兰安的列斯盾 + + + 阿鲁巴弗罗林 + 阿鲁巴弗罗林 + + + 波士尼亚-赫塞哥维纳第纳尔 (1994–1997) + + + CN¥ + + + 哈萨克斯坦腾格 + 哈萨克斯坦腾格 + + + MOP$ + + + 尼加拉瓜科多巴 + 尼加拉瓜科多巴 + + + 白银 + + + + + + + {0}/{1} + + + {0}秒 + + + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + + + diff --git a/library/Zend/Locale/Data/zh_Hans_SG.xml b/library/Zend/Locale/Data/zh_Hans_SG.xml new file mode 100755 index 000000000..b917893ce --- /dev/null +++ b/library/Zend/Locale/Data/zh_Hans_SG.xml @@ -0,0 +1,587 @@ + + + + + + + + + + + + + + + + 克利柏顿岛 + 黑山 + 圣皮埃尔和密克隆 + + + 韦氏拼音罗马字 + + + 繁体中文排序顺序 (Big5) + 字典排序 + 默认 Unicode 排序顺序 + 简体中文排序顺序 (GB2312) + 电话簿排序 + 拼音排序顺序 + 传统排序 + + + 语系:{0} + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + + + + U年MMMd日EEEE + + + + + U年MMMd日 + + + + + U年MMMd日 + + + + + U-M-d + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + dd/MM/yyGGGGG + + + + + + M-d + M-dE + MM-dd + M月d日 + Gy年M月d日 + Gy年M月d日,E + + + {0}至{1} + + vHH:mm–HH:mm + vHH:mm–HH:mm + + + vHH–HH + + + M-d至M-d + M-d至M-d + + + M-dE至M-dE + M-dE至M-dE + + + M月d日E至M月d日E + + + y年M月至y年M月 + + + d/M/y至d/M/y + d/M/y至d/M/y + d/M/y至d/M/y + + + d/M/yE至d/M/yE + d/M/yE至d/M/yE + d/M/yE至d/M/yE + + + + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y年M月d日 + + + + + dd/MM/yy + + + + + + + zzzzah:mm:ss + + + + + ahh:mm:ssz + + + + + ah:mm:ss + + + + + ahh:mm + + + + + + + {1}{0} + + + + + {1}{0} + + + + + {1} {0} + + + + + {1} {0} + + + + M-d + M-dE + MM-dd + M月 + M月d日 + y年M月 + y年M月d日 + y年M月d日,E + + + {0}至{1} + + d日至d日 + + + vHH:mm–HH:mm + vHH:mm–HH:mm + + + vHH–HH + + + M-d至M-d + M-d至M-d + + + M-dE至M-dE + M-dE至M-dE + + + M月d日E至M月d日E + + + y年M月至y年M月 + + + d/M/y至d/M/y + d/M/y至d/M/y + d/M/y至d/M/y + + + d/M/yE至d/M/yE + d/M/yE至d/M/yE + d/M/yE至d/M/yE + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + M/d + M/dE + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gd/M/yy + + + + + + M-d + M-dE + M月 + + + + + + + + {0}秒后 + + + {0}秒前 + + + + + + 杜蒙杜威勒 + + + 圣巴太累米 + + + 旁尼唐 + + + 圣约翰 + + + 圣多明戈 + + + 斯考斯伯松德 + + + 扎波罗什 + + + 梅诺米尼 + + + + 科科斯岛时间 + + + + + 杜蒙特杜维尔时间 + + + + + 法属南部和南极洲时间 + + + + + 吉尔柏特群岛时间 + + + + + MYT + + + + + 凤凰岛时间 + + + + + 圣皮埃尔和密克隆时间 + 圣皮埃尔和密克隆标准时间 + 圣皮埃尔和密克隆夏令时间 + + + + + SGT + + + + + 南乔治亚时间 + + + + + 大溪地时间 + + + + + 特鲁克时间 + + + + + 吐瓦鲁时间 + + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + 荷属安的列斯盾 + 荷兰安的列斯盾 + + + 阿鲁巴弗罗林 + 阿鲁巴弗罗林 + + + CN¥ + + + 哈萨克斯坦腾格 + 哈萨克斯坦腾格 + + + 尼加拉瓜科多巴 + 尼加拉瓜科多巴 + + + $ + + + 白银 + + + + + + + {0}/{1} + + + {0}秒 + + + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + + + {0}厘米 + + + {0}英尺 + + + {0}英寸 + + + {0}公里 + + + {0}光年 + + + {0}米 + + + {0}英里 + + + {0}毫米 + + + {0}皮米 + + + {0}码 + + + + + diff --git a/library/Zend/Locale/Data/zh_Hant.xml b/library/Zend/Locale/Data/zh_Hant.xml new file mode 100755 index 000000000..ec27580e9 --- /dev/null +++ b/library/Zend/Locale/Data/zh_Hant.xml @@ -0,0 +1,7580 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 世界 + 非洲 + 北美洲 + 南美洲 + 大洋洲 + 西非 + 中美 + 東非 + 北非 + 中非 + 非洲南部 + 美洲 + 北美 + 加勒比海 + 東亞 + 南亞 + 東南亞 + 南歐 + 澳洲與紐西蘭 + 美拉尼西亞 + 密克羅尼西亞 + 玻里尼西亞 + 亞洲 + 中亞 + 西亞 + 歐洲 + 東歐 + 北歐 + 西歐 + 拉丁美洲 + 阿森松島 + 安道爾 + 阿拉伯聯合大公國 + 阿富汗 + 安地卡及巴布達 + 安圭拉島 + 阿爾巴尼亞 + 亞美尼亞 + 荷屬安地列斯 + 安哥拉 + 南極洲 + 阿根廷 + 美屬薩摩亞群島 + 奧地利 + 澳洲 + 阿路巴 + 奧蘭群島 + 亞塞拜然 + 波士尼亞與赫塞格維納 + 巴貝多 + 孟加拉 + 比利時 + 布吉納法索 + 保加利亞 + 巴林 + 蒲隆地 + 貝寧 + 聖巴瑟米 + 百慕達 + 汶萊 + 玻利維亞 + 荷蘭加勒比區 + 巴西 + 巴哈馬 + 不丹 + 布威島 + 波札那 + 白俄羅斯 + 貝里斯 + 加拿大 + 可可斯群島 + 剛果(金夏沙) + 剛果民主共和國 + 中非共和國 + 剛果(布拉薩) + 剛果共和國 + 瑞士 + 科特迪瓦 + 象牙海岸 + 庫克群島 + 智利 + 喀麥隆 + 中華人民共和國 + 哥倫比亞 + 克里派頓島 + 哥斯大黎加 + 古巴 + 維德角 + 庫拉索 + 聖誕島 + 賽普勒斯 + 捷克共和國 + 德國 + 迪亞哥加西亞島 + 吉布地 + 丹麥 + 多米尼克 + 多明尼加共和國 + 阿爾及利亞 + 休達與梅利利亞 + 厄瓜多 + 愛沙尼亞 + 埃及 + 西撒哈拉 + 厄利垂亞 + 西班牙 + 衣索比亞 + 歐盟 + 芬蘭 + 斐濟 + 福克蘭群島 + 福克蘭群島 (馬爾維納斯群島) + 密克羅尼西亞群島 + 法羅群島 + 法國 + 加彭 + 英國 + 英國 + 格瑞那達 + 喬治亞共和國 + 法屬圭亞那 + 根西島 + 迦納 + 直布羅陀 + 格陵蘭 + 甘比亞 + 幾內亞 + 瓜地洛普 + 赤道幾內亞 + 希臘 + 南喬治亞與南三明治群島 + 瓜地馬拉 + 關島 + 幾內亞比紹 + 蓋亞納 + 中華人民共和國香港特別行政區 + 香港 + 赫德與麥克當諾群島 + 宏都拉斯 + 克羅埃西亞 + 海地 + 匈牙利 + 加那利群島 + 印尼 + 愛爾蘭 + 以色列 + 曼島 + 印度 + 英屬印度洋領土 + 伊拉克 + 伊朗 + 冰島 + 義大利 + 澤西島 + 牙買加 + 約旦 + 日本 + 肯亞 + 吉爾吉斯 + 柬埔寨 + 吉里巴斯 + 科摩羅群島 + 聖克里斯多福及尼維斯 + 北韓 + 南韓 + 科威特 + 開曼群島 + 哈薩克 + 寮國 + 黎巴嫩 + 聖露西亞 + 列支敦士登 + 斯里蘭卡 + 賴比瑞亞 + 賴索扥 + 立陶宛 + 盧森堡 + 拉脫維亞 + 利比亞 + 摩洛哥 + 摩納哥 + 摩爾多瓦 + 蒙特內哥羅 + 法屬聖馬丁 + 馬達加斯加 + 馬紹爾群島 + 馬其頓 + 前南斯拉夫馬其頓共和國 + 馬利 + 緬甸 + 蒙古 + 中華人民共和國澳門特別行政區 + 澳門 + 北馬里亞納群島 + 馬丁尼克島 + 茅利塔尼亞 + 蒙塞拉特島 + 馬爾他 + 模里西斯 + 馬爾地夫 + 馬拉威 + 墨西哥 + 馬來西亞 + 莫三比克 + 納米比亞 + 新喀里多尼亞群島 + 尼日 + 諾福克島 + 奈及利亞 + 尼加拉瓜 + 荷蘭 + 挪威 + 尼泊爾 + 諾魯 + 紐威島 + 紐西蘭 + 阿曼王國 + 巴拿馬 + 秘魯 + 法屬玻里尼西亞 + 巴布亞紐幾內亞 + 菲律賓 + 巴基斯坦 + 波蘭 + 聖皮埃爾和密克隆群島 + 皮特肯群島 + 波多黎各 + 巴勒斯坦自治區 + 巴勒斯坦 + 葡萄牙 + 帛琉 + 巴拉圭 + 卡達 + 大洋洲邊疆群島 + 留尼旺 + 羅馬尼亞 + 塞爾維亞 + 俄羅斯 + 盧安達 + 沙烏地阿拉伯 + 索羅門群島 + 塞席爾 + 蘇丹 + 瑞典 + 新加坡 + 聖赫勒拿島 + 斯洛維尼亞 + 冷岸及央麥恩群島 + 斯洛伐克 + 獅子山 + 聖馬利諾 + 塞內加爾 + 索馬利亞 + 蘇利南 + 南蘇丹 + 聖多美及普林西比 + 薩爾瓦多 + 荷屬聖馬丁 + 敘利亞 + 史瓦濟蘭 + 特里斯坦達庫尼亞群島 + 土克斯及開科斯群島 + 查德 + 法屬南方屬地 + 多哥共和國 + 泰國 + 塔吉克 + 托克勞群島 + 東帝汶 + 土庫曼 + 突尼西亞 + 東加 + 土耳其 + 千里達及托巴哥 + 吐瓦魯 + 台灣 + 坦尚尼亞 + 烏克蘭 + 烏干達 + 美國本土外小島嶼 + 美國 + 美國 + 烏拉圭 + 烏茲別克 + 梵蒂岡 + 聖文森及格瑞那丁 + 委內瑞拉 + 英屬維京群島 + 美屬維京群島 + 越南 + 萬那杜 + 瓦利斯和富圖納群島 + 薩摩亞群島 + 科索沃 + 葉門 + 馬約特 + 南非 + 尚比亞 + 辛巴威 + 未知區域 + + + 傳統德語拼字學 + 標準雷西亞拼字 + 1996 年的德語拼字學 + 中世紀晚期法文(至1606年) + 早期現代法文 + 白俄羅斯文(學術) + 美國國會圖書館標準方案羅馬化(1997年版) + 阿魯庫方言 + 亞美尼亞東部 + 亞美尼亞西部 + 統一土耳其拉丁字母 + 佛教混合梵文 + 比斯開方言 + 聖喬治/比拉方言 + 布恩特林方言 + 早期現代英語 + IPA 拼音 + UPA 拼音 + X-SAMPA 音標 + 平文式羅馬字 + 高地挪威文 + 史詩梵文 + 米茲泰爾方言 + 香港語言學學會粵語拼音 + 通用康沃爾文拼字 + 傳統梵文 + 雷西亞利波瓦方言 + 俄羅斯文拼字(1917年後) + 希臘文單調正字法 + 蘇利南恩都卡方言 + 那提松尼方言 + 雷西亞尼瓦方言 + 雷西亞歐西亞柯方言 + 蘇利南帕馬卡方言 + 俄羅斯文拼字(1708 年) + 漢語拼音 + 希臘文多調正字法 + 電腦 + 瑞士普特爾方言 + 已修訂的拼字學 + 雷西亞方言 + 羅曼什文 + 薩霍文 + 英文(蘇格蘭) + 利物浦方言 + 雷西亞史托維薩方言 + 瑞士蘇邁拉方言 + 瑞士蘇瑟瓦方言 + 瑞士蘇希瓦方言 + 白俄羅斯文傳統拼字 + 統一康沃爾文拼字 + 統一康沃爾文修訂拼字 + 愛爾蘭阿爾斯特方言 + 吠陀梵文 + 瓦倫西亞文 + 瑞士瓦勒德方言 + 威妥瑪式拼音 + + + 日曆 + 略過符號排序 + 反向重音排序 + 大寫/小寫排列 + 區分大小寫排序 + 假名排序 + 排序 + 正規化排序 + 數字排序 + 排序強度 + 貨幣 + 數字 + 時區 + 區域變異 + 以符號排序 + 私人使用 + + + 阿拉伯-印度數字 + 阿拉伯-印度擴充數字 + 亞美尼亞數字 + 小寫亞美尼亞數字 + 峇里文數字 + 孟加拉數字 + 繁體中文排序 (Big5) + 婆羅米數字 + 佛教曆法 + 查克馬數字 + 占文數字 + 農曆 + 科普特曆 + 檀紀曆 + 梵文數字 + 字典排序 + 預設 Unicode 排序 + 衣索比亞數字 + 衣索比亞曆 + 衣索比亞曆 (Amete Alem) + 金融數字 + 全形數字 + 簡體中文排序 (GB2312) + 喬治亞數字 + 公曆 + 希臘數字 + 小寫希臘數字 + 古吉拉特數字 + 古爾穆奇數字 + 中文十進位數字 + 小寫簡體中文數字 + 大寫簡體中文數字 + 小寫繁體中文數字 + 大寫繁體中文數字 + 希伯來數字 + 希伯來曆法 + 全部排序 + 印度國家曆法 + 伊斯蘭曆法 + 伊斯蘭城市曆法 + 伊斯蘭新月曆 + 伊斯蘭天文曆 + 烏姆庫拉曆 + 國際標準 ISO 8601 + 日本曆法 + 爪哇文數字 + 小寫日文數字 + 大寫日文數字 + 克耶數字 + 高棉數字 + 坎那達數字 + 老傣文數字 + 蘭納文數字 + 寮國數字 + 阿拉伯數字 + 西納文數字 + 林布文數字 + 優先排序小寫 + 馬來亞拉姆數字 + 蒙古數字 + 曼尼普爾數字 + 緬甸數字 + 緬甸撣文數字 + 原始數字 + 曼德數字 + 正常排序重音 + 正常大小寫順序排序 + 不分大小寫排序 + 個別排序假名 + 非正規化排序 + 個別排序數字 + 排序符號 + 桑塔利文數字 + 歐利亞數字 + 奧斯曼亞數字 + 波斯曆 + 電話簿排序 + 注音排序順序 + 拼音排序 + 僅排序基礎字母 + 排序重音/大小寫/全半形/假名 + 改良排序 + 民國曆 + 羅馬數字 + 小寫羅馬數字 + 索拉什特拉文數字 + 一般用途搜尋 + 韓文子音排序 + 排序重音 + 略過符號排序 + 夏拉達數字 + 索朗桑朋數字 + 標準排序 + 筆畫排序 + 桑桑 + 塔卡里數字 + 新傣仂文數字 + 坦米爾數字 + 坦米爾數字 + 泰盧固數字 + 排序重音/大小寫/全半形 + 泰文數字 + 西藏數字 + 傳統排序 + 傳統數字 + 部首筆畫排序 + 優先排序大寫 + 瓦伊文數字 + 依反向重音排序 + 依大小寫排序 + 分別排序假名 + 依正規化排序 Unicode + 依數字順序排序數字 + 注音排序 + + + 美國地名委員會 + 數字 + 聲調 + 聯合國地名專家組 + 變音符號 + 全形 + 半形 + 韓文字母 + 拼音 + 出版 + + + 公制 + 英制 + 美制 + + + 語言:{0} + 文字:{0} + 地區:{0} + + + + [一 丁 七 丈-不 丑 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五 井 些 亞 亡 交-亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 仔 他 付 仙 代-以 仰 仲 件 任 份 企 伊 伍 伐 休 伙 伯 估 伴 伸 似 伽 但 佈 佉 位-住 佔 何 余 佛 作 你 佩 佳 使 來 例 供 依 侯 侵 便 係-俄 俊 俗 保 俠 信 修 俱 俾 個 倍 們 倒 候 倚 借 倫 值 假 偉 偏 做 停 健 側-偷 傑 備 傢 傣 傲 傳 傷 傻 傾 僅 像 僑 僧 價 儀 億 儒 儘 優 允 元-充 兇-光 克 免 兒 兔 入 內-兩 八-兮 共 兵-典 兼 冊 再 冒 冠 冬 冰 冷 准 凌 凝 凡 凰 凱 出 函 刀 分 切 刊 列 初 判 別 利 刪 到 制 刷 刺 刻 則 剌 前 剛 剩 剪 副 割 創 劃 劇 劉 劍 力 功 加 助-劫 勁 勇 勉 勒 動 務 勝 勞 勢 勤 勵 勸 勿 包 匈 化 北 匹 區 十 千 升 午 半 卒-協 南 博 卜 卡 卯-危 即 卷 卻 厄 厘 厚 原 厭 厲 去 參 又 及 友 反 叔 取 受 口-另 只-叭 可 台 史 右 司 吃 各 合-吊 同-后 吐-吒 君 吝-吠 否 吧 含 吳 吵 吸 吹 吾 呀 呂 呆 告 呢 周 味 呵 呼 命 和 咖 咦 咧 咪 咬 咱 哀 品 哇-哉 哎 員 哥 哦 哩 哪 哭 哲 唉 唐 唔 唬 售 唯 唱 唷 唸 商 啊 問 啟 啡 啥 啦 啪 喀 喂 善 喇 喊 喔 喜 喝 喬 單 喵 嗎 嗚 嗨 嗯 嘆 嘉 嘗 嘛 嘴 嘻 嘿 器 噴 嚇 嚴 囉 四 回 因 困 固 圈 國 圍 園 圓 圖 團 圜 土 在 圭 地 圾 址 均 坎 坐 坡 坤 坦 坪 垂 垃 型 埃 城 埔 域 執 培 基 堂 堅 堆 堡 堪 報 場 塊 塔 塗 塞 填 塵 境 增 墨 墮 壁 壇 壓 壘 壞 壢 士 壬 壯 壽 夏 夕 外 多 夜 夠 夢 夥 大 天-夫 央 失 夷 夸 夾 奇-奉 奎 奏 契 奔 套 奧 奪 奮 女 奴 奶 她 好 如 妙 妝 妥 妨 妮 妳 妹 妻 姆 姊 始 姐 姑 姓 委 姿 威 娃 娘 娛 婁 婆 婚 婦 媒 媽 嫌 嫩 子 孔 字 存 孝 孟 季 孤 孩 孫 學 它 宅 宇-安 宋 完 宏 宗-宜 客-室 宮 害 家 容 宿 寂 寄-密 富 寒 寞 察 寢 實-審 寫 寬 寮 寵 寶 封 射 將 專 尊 尋 對-小 少 尖 尚 尤 就 尺 尼 尾 局 屁 居 屆 屋 屏 展 屠 層 屬 山 岡 岩 岸 峰 島 峽 崇 崙 崴 嵐 嶺 川 州 巡 工-巨 巫 差 己-巴 巷 市 布 希 帕 帖 帛 帝 帥 師 席 帳 帶 常 帽 幅 幕 幣 幫 干-年 幸 幹 幻-幾 庇 床 序 底 店 庚 府 度 座 庫 庭 康 庸 廉 廖 廠 廢 廣 廳 延 廷 建 弄 式 引 弗 弘 弟 弦 弱 張 強 彈 彊 彌 彎 彝 彞 形 彥 彩 彬 彭 彰 影 役 彼 往 征 待 很 律 後 徐-徒 得 從 復 微 徵 德 徹 心 必 忌 忍 志-忙 忠 快 念 忽 怎 怒 怕 怖 思 怡 急 性 怨 怪 恆 恐 恢 恥 恨 恩 恭 息 恰 悅 悉 悔 悟 悠 您 悲 悶 情 惑 惜 惠 惡 惱 想 惹 愁 愈 愉 意 愚 愛 感 慈 態 慕 慘 慢 慣 慧 慮 慰 慶 慾 憂 憐 憑 憲 憶 憾 懂 應 懶 懷 懼 戀 戈 戊 戌 成-戒 或 截 戰 戲 戴 戶 房-扁 扇 手 才 扎 打 托 扣 扥 扭 扯 批 找-技 抄 把 抓 投 抗 折 披 抬 抱 抵 抹 抽 拆 拉 拋 拍 拏 拒 拔 拖 招 拜 括 拳 拼 拾 拿 持 指 按 挑 挖 挪 振 挺 捐 捕 捨 捲 捷 掃 授 掉 掌 排 掛 採 探 接 控 推 措 描 提 插 揚 換 握 揮 援 損 搖 搜 搞 搬 搭 搶 摘 摩 摸 撐 撒 撞 撣 撥 播 撾 撿 擁 擇 擊 擋 操 擎 擔 據 擠 擦 擬 擴 擺 擾 攝 支 收 改 攻 放 政 故 效 敍 敏 救 敗-教 敝 敢 散 敦 敬 整 敵 數 文 斐 斗 料 斯 新 斷 方 於 施 旁 旅 旋 族 旗 既 日 旦 早 旭 旺 昂 昆 昇 昌 明 昏 易 星 映 春 昨 昭 是 時 晉 晒 晚 晨 普 景 晴 晶 智 暑 暖 暗 暫 暴 曆 曉 曰 曲 更 書 曼 曾-最 會 月 有 朋 服 朗 望 朝 期 木 未-札 朱 朵 杉 李 材 村 杜 束 杯-東 松 板 析 林 果 枝 架 柏 某 染 柔 查 柬 柯 柳 柴 校 核 根 格 桃 案 桌 桑 梁 梅 條 梨 梯 械 梵 棄 棉 棋 棒 棚 森 椅 植 椰 楊 楓 楚 業 極 概 榜 榮 構 槍 樂 樓 標 樞 模 樣 樹 橋 機 橫 檀 檔 檢 欄 權 次 欣 欲 欺 欽 款 歉 歌 歐 歡-武 歲 歷 歸 死 殊 殘 段 殺 殼 毀 毅 母 每 毒 比 毛 毫 氏 民 氣 水 永 求 汗 汝 江-污 汪 汶 決 汽 沃 沈 沉 沒 沖 沙 河 油 治 沿 況 泉 泊 法 泡 波 泥 注 泰 泳 洋 洗 洛 洞 洩 洪 洲 活 洽 派 流 浦 浩 浪 浮 海 涇-涉 涯 液 涵 涼 淑 淚 淡 淨 深 混 淺 清 減 渡 測 港 游 湖 湯 源 準 溝 溪 溫 滄 滅 滋 滑 滴 滾 滿 漂 漏 演 漠 漢 漫 漲 漸 潔 潘 潛 潮 澤 澳 激 濃 濟 濤 濫 濱 瀏 灌 灣 火 灰 災 炎 炮 炸 為 烈 烏 烤 無 焦 然 煙 煞 照 煩 熊 熟 熱 燃 燈 燒 營 爆 爐 爛 爪 爬 爭 爵 父 爸 爺 爽 爾 牆-版 牌 牙 牛 牠 牧 物 牲 特 牽 犧 犯 狀 狂 狐 狗 狠 狼 猛 猜 猴 猶 獄 獅 獎 獨 獲 獸 獻 玄 率 玉 王 玩 玫 玲 玻 珊 珍 珠 珥 班 現 球 理 琉 琪 琴 瑙 瑜 瑞 瑟 瑤 瑪 瑰 環 瓜 瓦 瓶 甘 甚 甜 生 產 用 田-申 男 甸 界 留 畢 略 番 畫 異 當 疆 疏 疑 疼 病 痕 痛 痴 瘋 療 癡 癸 登-百 的 皆 皇 皮 盃 益 盛 盜 盟 盡 監 盤 盧 目 盲 直 相 盼 盾 省 眉 看 真 眠 眼 眾 睛 睡 督 瞧 瞭 矛 矣 知 短 石 砂 砍 研 砲 破 硬 碎 碗 碟 碧 碩 碰 確 碼 磁 磨 磯 礎 礙 示 社 祕 祖 祚 祛 祝 神 祥 票 祿 禁 禍-福 禪 禮 秀 私 秋 科 秒 秘 租 秤 秦 移 稅 程 稍 種 稱 稿 穆 穌 積 穩 究 穹 空 穿 突 窗 窩 窮 窶 立 站 竟 章 童 端 競 竹 笑 笛 符 笨 第 筆 等 筋 答 策 简 算 管 箭 箱 節 範 篇 築 簡 簫 簽 簿 籃 籌 籍 籤 米 粉 粗 粵 精 糊 糕 糟 系 糾 紀 約 紅 納 紐 純 紙-紛 素 索 紫 累 細 紹 終 組 結 絕 絡 給 統 絲 經 綜 綠 維 綱 網 緊 緒 線 緣 編 緩 緬 緯 練 縛 縣 縮 縱 總 績 繁 繆 織 繞 繪 繳 繼 續 缸 缺 罕 罪 置 罰 署 罵 罷 羅 羊 美 羞 群 義 羽 翁 習 翔 翰 翹 翻 翼 耀 老 考 者 而 耍 耐 耗 耳 耶 聊 聖 聚 聞 聯 聰 聲 職 聽 肉 肚 股 肥 肩 肯 育 背 胎 胖 胞 胡 胸 能 脆 脫 腓 腔 腦 腰 腳 腿 膽 臉 臘 臣 臥 臨 自 臭 至 致 臺 與-舊 舌 舍 舒 舞 舟 航 般 船 艦 良 色 艾 芝 芬 花 芳 若 苦 英 茅 茫 茲 茶 草 荒 荷 荼 莉 莊 莎 莫 菜 菩 華 菲 萄 萊 萬 落 葉 著 葛 葡 蒂 蒙 蒲 蒼 蓋 蓮 蔕 蔡 蔣 蕭 薄 薦 薩 薪 藉 藍 藏 藝 藤 藥 蘆 蘇 蘭 虎 處 虛 號 虧 蛇 蛋 蛙 蜂 蜜 蝶 融 螢 蟲 蟹 蠍 蠻 血 行 術 街 衛 衝 衡 衣 表 袋 被 裁 裂 裕 補 裝 裡 製 複 褲 西 要 覆 見 規 視 親 覺 覽 觀 角 解 觸 言 訂 計 訊 討 訓 託 記 訥 訪 設 許 訴 註 証 評 詞 詢 試 詩 話-詳 誇 誌 認 誓 誕 語 誠 誤 說 誰 課 誼 調 談 請 諒 論 諸 諺 諾 謀 謂 講 謝 證 識 譜 警 譯 議 護 譽 讀 變 讓 讚 谷 豆 豈 豐 象 豪 豬 貌 貓 貝 貞 負-貢 貨 貪-責 貴 買 費 貼 賀 資 賈 賓 賜 賞 賢-賤 賦 質 賭 賴 賺 購 賽 贈 贊 贏 赤 赫 走 起 超 越 趕 趙 趣 趨 足 跌 跎 跑 距 跟 跡 路 跳 踏 踢 蹟 蹤 躍 身 躲 車 軌 軍 軒 軟 較 載 輔 輕 輛 輝 輩 輪 輯 輸 轉 轟 辛 辦 辨 辭 辯-農 迅 迎 近 返 迦 迪 迫 述 迴 迷 追 退 送 逃 逆 透 逐 途 這-逛 逝 速 造 逢 連 週 進 逸 逼 遇 遊 運 遍 過 道-違 遙 遜 遠 適 遭 遮 遲 遷 選 遺 避-邁 還 邊 邏 那 邦 邪 邱 郎 部 郭 郵 都 鄂 鄉 鄭 鄰 酉 配 酒 酷 酸 醉 醒 醜 醫 采 釋-量 金 針 釣 鈴 鉢 銀 銅 銖 銘 銳 銷 鋒 鋼 錄 錢 錦 錫 錯 鍋 鍵 鍾 鎊 鎖 鎮 鏡 鐘 鐵 鑑 長 門 閃 閉 開 閏 閒 間 閣 閱 闆 闊 闍 闐 關 闡 防 阻 阿 陀 附 降 限 院-除 陪 陰 陳 陵-陸 陽 隆 隊 階 隔 際 障 隨 險 隱 隻 雄-集 雉 雖 雙 雜 雞 離 難 雨 雪 雲 零 雷 電 需 震 霍 霧 露 霸 霹 靂 靈 青 靖 靜 非 靠 面 革 靼 鞋 韃 韋 韓 音 韻 響 頁 頂 項 順 須 預 頑 頓 頗 領 頞 頭 頻 顆 題 額 顏 願 類 顧 顯 風 飄 飛 食 飯 飲 飽 飾 餅 養 餐 餘 館 首 香 馬 駐 駕 駛 騎 騙 騷 驅 驗 驚 骨 體 高 髮 鬆 鬥 鬧 鬱 鬼 魁 魂 魅 魔 魚 魯 鮮 鳥 鳳 鳴 鴻 鵝 鷹 鹿 麗 麥 麵 麻 麼 黃 黎 黑 默 點 黨 鼓 鼠 鼻 齊 齋 齒 齡 龍 龜] + [乍 仂 伏 佐 侶 僳 兆 兌 兹 别 券 勳 卑 卞 占 叶 堤 墎 壤 奥 孜 峇 嶼 巽 彝 栗 楔 涅 渾 澎 燦 狄 琳 瑚 甫 碑 礁 芒 苗 茨 蓬 蚩 蜀 裘 謬 酋 隴] + [一 丁 丈 不 且 丞 並 串 乘 乾 亂 亭 傀 僎 僵 儐 償 儳 儷 儻 叢 嚴 囌 囑 廳] + [‾ ﹉﹊﹋﹌ _ _ ﹍﹎﹏ ︳︴ \- - ﹣ ‐ – ︲ — ﹘ ︱ , , ﹐ 、 ﹑ ; ; ﹔ \: : ﹕ ! ! ﹗ ? ? ﹖ . . ﹒ ‥ ︰ … 。 · ' ‘ ’ " " “ ” 〝 〞 ( ( ﹙ ︵ ) ) ﹚ ︶ \[ [ \] ] \{ { ﹛ ︷ \} } ﹜ ︸ 〈 ︿ 〉 ﹀ 《 ︽ 》 ︾ 「 ﹁ 」 ﹂ 『 ﹃ 』 ﹄ 【 ︻ 】 ︼ 〔 ﹝ ︹ 〕 ﹞ ︺ § @ @ ﹫ * * ﹡ / / \\ \ ﹨ \& & ﹠ # # ﹟ % % ﹪ ‰ † ‡ ‧ ′ ″ ‵ 〃 ※] + {0}… + …{0} + {0}…{1} + {0} … + … {0} + {0} … {1} + + + + + + + + + + + + + + 佛曆 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy/M/d + + + + + + d日 + d日(E) + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + M月 + M/d + M/d(E) + LLL + M月d日 + M月d日E + Gy年 + Gy年 + Gy/M + Gy/M/d + Gy/M/d(E) + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年QQQ + Gy年QQQQ + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 臘月 + + + + + + + + + + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 臘月 + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 臘月 + + + + + + + + + + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 冬月 + 臘月 + + + + + + + 閏{0} + + + + + 閏{0} + + + + + 閏{0} + + + + + + + + + + + + + + + + + + + + + + + + + + 甲子 + 乙丑 + 丙寅 + 丁卯 + 戊辰 + 己巳 + 庚午 + 辛未 + 壬申 + 癸酉 + 甲戌 + 乙亥 + 丙子 + 丁丑 + 戊寅 + 己卯 + 庚辰 + 辛巳 + 壬午 + 癸未 + 甲申 + 乙酉 + 丙戌 + 丁亥 + 戊子 + 己丑 + 庚寅 + 辛卯 + 壬辰 + 癸巳 + 甲午 + 乙未 + 丙申 + 丁酉 + 戊戌 + 己亥 + 庚子 + 辛丑 + 壬寅 + 癸卯 + 甲辰 + 乙巳 + 丙午 + 丁未 + 戊申 + 己酉 + 庚戌 + 辛亥 + 壬子 + 癸丑 + 甲寅 + 乙卯 + 丙辰 + 丁巳 + 戊午 + 己未 + 庚申 + 辛酉 + 壬戌 + 癸亥 + + + + + + + + + + + + + + + + + + + + + + + + + + U年MMMdEEEE + + + + + U年MMMd + + + + + U年MMMd + + + + + U/M/d + + + + + + d日 + d日E + U年 + U年MMM + U年MMMd日 + U年MMMd日E + MMM + M/d + M/dE + MMMd日 + MMMd日E + U年 + U年MMMd日 + U年 + U年MMM + U年MMMd日 + U年MMMd日,E + U年MMM + U年MMMd日 + U年MMMd日E + U年QQQQ + U年QQQQ + + + {0}至{1} + + d日至d日 + + + ah時至ah時 + ah時至h時 + + + ah:mm至ah:mm + ah:mm至h:mm + ah:mm至h:mm + + + ah:mm至ah:mm [v] + ah:mm至h:mm [v] + ah:mm至h:mm [v] + + + HH:mm–HH:mm [v] + HH:mm–HH:mm [v] + + + ah時至ah時 [v] + ah時至h時 [v] + + + HH–HH [v] + + + MMM至MMM + + + M/d至M/d + M/d至M/d + + + M/dE至M/dE + M/dE至M/dE + + + LLL至LLL + + + MMMd日至d日 + MMMd日至MMMd日 + + + MMMd日E至d日E + MMMd日E至MMMd日E + + + LLLL至LLLL + + + U至U + + + U/M至U/M + U/M至U/M + + + U/M/d至U/M/d + U/M/d至U/M/d + U/M/d至U/M/d + + + U/M/dE至U/M/dE + U/M/dE至U/M/dE + U/M/dE至U/M/dE + + + U年MMM至MMM + U年MMM至U年MMM + + + U年MMMd日至d日 + U年MMMd日至MMMd日 + U年MMMd日至U年MMMd日 + + + U年MMMd日E至d日E + U年MMMd日E至MMMd日E + U年MMMd日E至U年MMMd日E + + + U年MMMM至MMMM + U年MMMM至U年MMMM + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + + + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 正月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + + + + + + + + + + + + + + 甲子 + 乙丑 + 丙寅 + 丁卯 + 戊辰 + 己巳 + 庚午 + 辛未 + 壬申 + 癸酉 + 甲戌 + 乙亥 + 丙子 + 丁丑 + 戊寅 + 己卯 + 庚辰 + 辛巳 + 壬午 + 癸未 + 甲申 + 乙酉 + 丙戌 + 丁亥 + 戊子 + 己丑 + 庚寅 + 辛卯 + 壬辰 + 癸巳 + 甲午 + 乙未 + 丙申 + 丁酉 + 戊戌 + 己亥 + 庚子 + 辛丑 + 壬寅 + 癸卯 + 甲辰 + 乙巳 + 丙午 + 丁未 + 戊申 + 己酉 + 庚戌 + 辛亥 + 壬子 + 癸丑 + 甲寅 + 乙卯 + 丙辰 + 丁巳 + 戊午 + 己未 + 庚申 + 辛酉 + 壬戌 + 癸亥 + + + + + + + + + + + + + + + + + + + + + + + + + + U年MMMd日EEEE + + + + + U年MMMd日 + + + + + U年MMMd日 + + + + + U/M/d + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + 13月 + + + + + + + + + G y 年 M 月 d 日 EEEE + + + + + G y年M月d日 + + + + + G y年M月d日 + + + + + G y/M/d + + + + + + + {1}{0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日(E) + G y 年 + Gy年M月 + G y 年 M 月 d 日 + G y 年 M 月 d 日 E + ah時 + H時 + ah:mm + H:mm + ah:mm:ss + H:mm:ss + M月 + M/d + M/d (E) + LLL + M月d日 + M 月 d 日E + mm:ss + G y 年 + G y 年 + G y/M + G y/M/d + G y/M/d (E) + G y 年 M 月 + G y 年 M 月 d 日 + G y 年 M 月 d 日E + G y 年 QQQ + G y 年 QQQQ + + + {0}至{1} + + d日至d日 + + + ah時至ah時 + ah時至h時 + + + HH–HH + + + ah:mm至ah:mm + ah:mm至h:mm + ah:mm至h:mm + + + HH:mm–HH:mm + HH:mm–HH:mm + + + ah:mm至ah:mm [v] + ah:mm至h:mm [v] + ah:mm至h:mm [v] + + + HH:mm–HH:mm [v] + HH:mm–HH:mm [v] + + + ah時至ah時 [v] + ah時至h時 [v] + + + HH–HH [v] + + + M月至M月 + + + M/d至M/d + M/d至M/d + + + M/d E至 M/d E + M/d E至 M/d E + + + LLL至LLL + + + M月d日至d日 + M月d日至M月d日 + + + M 月 d 日E至 d 日E + M 月 d 日E至 M 月 d 日E + + + LLLL至LLLL + + + G y 至 y + + + G y/M 至 y/M + G y/M 至 y/M + + + G y/M/d 至 y/M/d + G y/M/d 至 y/M/d + G y/M/d 至 y/M/d + + + G y/M/d E至 y/M/d E + G y/M/d E至 y/M/d E + G y/M/d E至 y/M/d E + + + G y 年 M 月至 M 月 + G y年M月至y年M月 + + + G y 年 M 月 d 日至 d 日 + G y 年 M 月 d 日至 M 月 d 日 + G y 年 M 月 d 日至 y 年 M 月 d 日 + + + G y 年 M 月 d 日E 至 d 日E + G y 年 M 月 d 日E至 M 月 d 日E + G y 年 M 月 d 日E至 y 年 M 月 d 日E + + + G y 年 M 月至 M 月 + G y 年 M 月至 y 年 M 月 + + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + + + + + 週日 + 週一 + 週二 + 週三 + 週四 + 週五 + 週六 + + + + + + + + + + + + + + + + + + + + + 星期日 + 星期一 + 星期二 + 星期三 + 星期四 + 星期五 + 星期六 + + + + + 週日 + 週一 + 週二 + 週三 + 週四 + 週五 + 週六 + + + + + + + + + + + + + + + + + + + + + 星期日 + 星期一 + 星期二 + 星期三 + 星期四 + 星期五 + 星期六 + + + + + + + 1季 + 2季 + 3季 + 4季 + + + 1 + 2 + 3 + 4 + + + 第1季 + 第2季 + 第3季 + 第4季 + + + + + 1季 + 2季 + 3季 + 4季 + + + 1 + 2 + 3 + 4 + + + 第1季 + 第2季 + 第3季 + 第4季 + + + + + + + 下午 + 上午 + 清晨 + 中午 + 上午 + 晚上 + 中午 + 下午 + 凌晨 + + + 下午 + 上午 + 清晨 + 中午 + 上午 + 晚上 + 中午 + 下午 + 凌晨 + + + + + + 西元前 + 公元前 + 西元 + 公元 + + + 西元前 + 公元前 + 西元 + 公元 + + + 西元前 + 公元前 + 西元 + 公元 + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y年M月d日 + + + + + y/M/d + + + + + + + zzzzah時mm分ss秒 + + + + + zah時mm分ss秒 + + + + + ah:mm:ss + + + + + ah:mm + + + + + + + {1}{0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d日 + d日(E) + E a h:mm + E HH:mm + E a h:mm:ss + E HH:mm:ss + G y 年 + G y 年 M 月 + G y 年 M 月 d 日 + G y 年 M 月 d 日E + ah時 + H時 + ah:mm + HH:mm + ah:mm:ss + HH:mm:ss + M月 + M/d + M/d(E) + MM/dd + LLL + M月d日 + M月d日E + M月dd日 + mm:ss + y年 + y/M + y/M/d + y/M/d(E) + y-MM + y年M月 + y年M月d日 + y年M月d日E + y年M月 + y年QQQ + y年QQQQ + + + {0} {1} + + + {0}至{1} + + d日至d日 + + + ah時至ah時 + ah時至h時 + + + HH–HH + + + ah:mm至ah:mm + ah:mm至h:mm + ah:mm至h:mm + + + HH:mm–HH:mm + HH:mm至HH:mm + + + a h:mm 至a h:mm [v] + a h:mm 至 h:mm [v] + a h:mm 至 h:mm [v] + + + HH:mm–HH:mm [v] + HH:mm–HH:mm [v] + + + a h 時至a h 時 [v] + a h 時至 h 時 [v] + + + HH–HH [v] + + + M月至M月 + + + M/d至M/d + M/d至M/d + + + M/dE至M/dE + M/dE至M/dE + + + LLL至LLL + + + M月d日至d日 + M月d日至M月d日 + + + M月d日E至d日E + M月d日E至M月d日E + + + LLLL至 LLLL + + + y至y + + + y/M至y/M + y/M至y/M + + + y/M/d至y/M/d + y/M/d至y/M/d + y/M/d至y/M/d + + + y/M/dE至y/M/dE + y/M/dE至y/M/dE + y/M/dE至y/M/dE + + + y年M月至M月 + y年M月至y年M月 + + + y年M月d日至d日 + y年M月d日至M月d日 + y年M月d日至y年M月d日 + + + y年M月d日E至d日E + y年M月d日E至M月d日E + y年M月d日E至y年M月d日E + + + y年M月至M月 + y年M月至y年M月 + + + + + + + + + 提斯利月 + 瑪西班月 + 基斯流月 + 提別月 + 細罷特月 + 亞達月 I + 亞達月 + 亞達月 II + 尼散月 + 以珥月 + 西彎月 + 搭模斯月 + 埃波月 + 以祿月 + + + 提斯利月 + 瑪西班月 + 基斯流月 + 提別月 + 細罷特月 + 亞達月 I + 亞達月 + 亞達月 II + 尼散月 + 以珥月 + 西彎月 + 搭模斯月 + 埃波月 + 以祿月 + + + + + 提斯利月 + 瑪西班月 + 基斯流月 + 提別月 + 細罷特月 + 亞達月 I + 亞達月 + 亞達月 II + 尼散月 + 以珥月 + 西彎月 + 搭模斯月 + 埃波月 + 以祿月 + + + 提斯利月 + 瑪西班月 + 基斯流月 + 提別月 + 細罷特月 + 亞達月 I + 亞達月 + 亞達月 II + 尼散月 + 以珥月 + 西彎月 + 搭模斯月 + 埃波月 + 以祿月 + + + + + + 創世紀元 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy/M/d + + + + + + + + + 制檀邏月 + 吠舍佉月 + 逝瑟吒月 + 頞沙荼月 + 室羅伐拏月 + 婆羅鉢陀月 + 頞涇縛庚闍月 + 迦剌底迦月 + 末伽始羅月 + 報沙月 + 磨祛月 + 頗勒窶拏月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 制檀邏月 + 吠舍佉月 + 逝瑟吒月 + 頞沙荼月 + 室羅伐拏月 + 婆羅鉢陀月 + 頞涇縛庚闍月 + 迦剌底迦月 + 末伽始羅月 + 報沙月 + 磨祛月 + 頗勒窶拏月 + + + + + 制檀邏月 + 吠舍佉月 + 逝瑟吒月 + 頞沙荼月 + 室羅伐拏月 + 婆羅鉢陀月 + 頞涇縛庚闍月 + 迦剌底迦月 + 末伽始羅月 + 報沙月 + 磨祛月 + 頗勒窶拏月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 制檀邏月 + 吠舍佉月 + 逝瑟吒月 + 頞沙荼月 + 室羅伐拏月 + 婆羅鉢陀月 + 頞涇縛庚闍月 + 迦剌底迦月 + 末伽始羅月 + 報沙月 + 磨祛月 + 頗勒窶拏月 + + + + + + 印度曆 + + + + + + + + 穆哈蘭姆月 + 色法爾月 + 賴比月 I + 賴比月 II + 主馬達月 I + 主馬達月 II + 賴哲卜月 + 舍爾邦月 + 賴買丹月 + 閃瓦魯月 + 都爾喀爾德月 + 都爾黑哲月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 穆哈蘭姆月 + 色法爾月 + 賴比月 I + 賴比月 II + 主馬達月 I + 主馬達月 II + 賴哲卜月 + 舍爾邦月 + 賴買丹月 + 閃瓦魯月 + 都爾喀爾德月 + 都爾黑哲月 + + + + + 穆哈蘭姆月 + 色法爾月 + 賴比月 I + 賴比月 II + 主馬達月 I + 主馬達月 II + 賴哲卜月 + 舍爾邦月 + 賴買丹月 + 閃瓦魯月 + 都爾喀爾德月 + 都爾黑哲月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 穆哈蘭姆月 + 色法爾月 + 賴比月 I + 賴比月 II + 主馬達月 I + 主馬達月 II + 賴哲卜月 + 舍爾邦月 + 賴買丹月 + 閃瓦魯月 + 都爾喀爾德月 + 都爾黑哲月 + + + + + + 伊斯蘭曆 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy/M/d + + + + + + d日 + d日(E) + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + M月 + M/d + M/d(E) + LLL + M月d日 + M月d日E + Gy年 + Gy年 + Gy/M + Gy/M/d + Gy/M/d(E) + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年QQQ + Gy年QQQQ + + + + + + + + 大化 + 白雉 + 白鳳 + 朱鳥 + 大寶 + 慶雲 + 和銅 + 靈龜 + 養老 + 神龜 + 天平 + 天平感寶 + 天平勝寶 + 天平寶字 + 天平神護 + 神護景雲 + 寶龜 + 天應 + 延曆 + 大同 + 弘仁 + 天長 + 承和 + 嘉祥 + 仁壽 + 齊衡 + 天安 + 貞觀 + 元慶 + 仁和 + 寬平 + 昌泰 + 延喜 + 延長 + 承平 + 天慶 + 天曆 + 天德 + 應和 + 康保 + 安和 + 天祿 + 天延 + 貞元 + 天元 + 永觀 + 寬和 + 永延 + 永祚 + 正曆 + 長德 + 長保 + 寬弘 + 長和 + 寬仁 + 治安 + 萬壽 + 長元 + 長曆 + 長久 + 寬德 + 永承 + 天喜 + 康平 + 治曆 + 延久 + 承保 + 承曆 + 永保 + 應德 + 寬治 + 嘉保 + 永長 + 承德 + 康和 + 長治 + 嘉承 + 天仁 + 天永 + 永久 + 元永 + 保安 + 天治 + 大治 + 天承 + 長承 + 保延 + 永治 + 康治 + 天養 + 久安 + 仁平 + 久壽 + 保元 + 平治 + 永曆 + 應保 + 長寬 + 永萬 + 仁安 + 嘉應 + 承安 + 安元 + 治承 + 養和 + 壽永 + 元曆 + 文治 + 建久 + 正治 + 建仁 + 元久 + 建永 + 承元 + 建曆 + 建保 + 承久 + 貞應 + 元仁 + 嘉祿 + 安貞 + 寬喜 + 貞永 + 天福 + 文曆 + 嘉禎 + 曆仁 + 延應 + 仁治 + 寬元 + 寶治 + 建長 + 康元 + 正嘉 + 正元 + 文應 + 弘長 + 文永 + 建治 + 弘安 + 正應 + 永仁 + 正安 + 乾元 + 嘉元 + 德治 + 延慶 + 應長 + 正和 + 文保 + 元應 + 元亨 + 正中 + 嘉曆 + 元德 + 元弘 + 建武 + 延元 + 興國 + 正平 + 建德 + 文中 + 天授 + 康曆 + 弘和 + 元中 + 至德 + 嘉慶 + 康應 + 明德 + 應永 + 正長 + 永享 + 嘉吉 + 文安 + 寶德 + 享德 + 康正 + 長祿 + 寬正 + 文正 + 應仁 + 文明 + 長享 + 延德 + 明應 + 文龜 + 永正 + 大永 + 享祿 + 天文 + 弘治 + 永祿 + 元龜 + 天正 + 文祿 + 慶長 + 元和 + 寬永 + 正保 + 慶安 + 承應 + 明曆 + 萬治 + 寬文 + 延寶 + 天和 + 貞享 + 元祿 + 寶永 + 正德 + 享保 + 元文 + 寬保 + 延享 + 寬延 + 寶曆 + 明和 + 安永 + 天明 + 寬政 + 享和 + 文化 + 文政 + 天保 + 弘化 + 嘉永 + 安政 + 萬延 + 文久 + 元治 + 慶應 + 明治 + 大正 + 昭和 + 平成 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy/M/d + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + d日 + d日(E) + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + ah時 + H時 + ah:mm + HH:mm + ah:mm:ss + HH:mm:ss + M月 + M/d + M/d(E) + LLL + MMM d + M月d日E + mm:ss + Gy年 + Gy年 + Gy/M + Gy/M/d + Gy/M/d(E) + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年QQQ + Gy年QQQQ + + + + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + 1月 + 2月 + 3月 + 4月 + 5月 + 6月 + 7月 + 8月 + 9月 + 10月 + 11月 + 12月 + + + + + + 伊朗曆 + + + + + + + 民國前 + 民國 + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + Gy/M/d + + + + + + d日 + d日(E) + Gy年 + Gy年M月 + Gy年M月d日 + Gy年M月d日E + M月 + M/d + M/d(E) + LLL + M月d日 + M月d日E + Gy年 + Gy年 + Gy/M + Gy/M/d + Gy/M/d(E) + Gy年M月 + Gy年M月d日 + Gy年M月d日E + Gy年QQQ + Gy年QQQQ + + + + + + + 年代 + + + + 去年 + 今年 + 明年 + + {0} 年後 + + + {0} 年前 + + + + + 上個月 + 本月 + 下個月 + + {0} 個月後 + + + {0} 個月前 + + + + + 上週 + 本週 + 下週 + + {0} 週後 + + + {0} 週前 + + + + + 前天 + 昨天 + 今天 + 明天 + 後天 + + {0} 天後 + + + {0} 天前 + + + + 週天 + + + 上週日 + 本週日 + 下週日 + + + 上週一 + 本週一 + 下週一 + + + 上週二 + 本週二 + 下週二 + + + 上週三 + 本週三 + 下週三 + + + 上週四 + 本週四 + 下週四 + + + 上週五 + 本週五 + 下週五 + + + 上週六 + 本週六 + 下週六 + + + 上午/下午 + + + 小時 + + {0} 小時後 + + + {0} 小時前 + + + + 分鐘 + + {0} 分鐘後 + + + {0} 分鐘前 + + + + + 現在 + + {0} 秒後 + + + {0} 秒前 + + + + 時區 + + + + +HH:mm;-HH:mm + GMT{0} + GMT + {0}時間 + {0} (+1) + {0} (+0) + {1}({0}) + + 未知城市 + + + 安道爾 + + + 杜拜 + + + 喀布爾 + + + 安地卡 + + + 安吉拉 + + + 地拉那 + + + 葉里溫 + + + 羅安達 + + + 羅瑟拉 + + + 帕麥 + + + 昭和 + + + 莫森 + + + 戴維斯 + + + 莫斯托克 + + + 凱西 + + + 杜蒙杜爾維爾 + + + 麥克默多 + + + 里奧加耶戈斯 + + + 門多薩 + + + 聖胡安 + + + 烏斯懷亞 + + + 拉略哈 + + + 聖路易 + + + 卡塔馬卡 + + + 薩爾塔 + + + 胡胡伊 + + + 吐庫曼 + + + 哥多華 + + + 布宜諾斯艾利斯 + + + 巴哥巴哥 + + + 維也納 + + + 伯斯 + + + 尤克拉 + + + 達爾文 + + + 阿得雷德 + + + 布羅肯希爾 + + + 克黎 + + + 墨爾本 + + + 荷巴特 + + + 林德曼 + + + 雪梨 + + + 布利斯班 + + + 麥覺理 + + + 豪勳爵島 + + + 阿魯巴 + + + 瑪麗港 + + + 巴庫 + + + 塞拉耶佛 + + + 巴貝多 + + + 達卡 + + + 布魯塞爾 + + + 瓦加杜古 + + + 索菲亞 + + + 巴林 + + + 布松布拉 + + + 波多諾佛 + + + 聖巴托洛繆島 + + + 百慕達 + + + 汶萊 + + + 拉巴斯 + + + 克拉倫代克 + + + 艾魯內佩 + + + 里約布蘭 + + + 維留港 + + + 保維斯塔 + + + 瑪瑙斯 + + + 古雅巴 + + + 聖塔倫 + + + 格蘭場 + + + 貝倫 + + + 阿拉圭那 + + + 聖保羅 + + + 巴伊阿 + + + 福塔力莎 + + + 馬瑟歐 + + + 雷西非 + + + 諾倫哈 + + + 拿索 + + + 廷布 + + + 嘉柏隆里 + + + 明斯克 + + + 貝里斯 + + + 道生河 + + + 懷特霍斯 + + + 伊奴維克 + + + 溫哥華 + + + 道生灣 + + + 克雷斯頓 + + + 耶洛奈夫 + + + 艾德蒙吞 + + + 斯威夫特卡倫特 + + + 劍橋灣 + + + 里賈納 + + + 溫尼伯 + + + 羅斯魯特 + + + 雨河鎮 + + + 蘭今灣 + + + 阿蒂科肯 + + + 珊德灣 + + + 尼皮岡 + + + 多倫多 + + + 伊魁特 + + + 潘尼爾東 + + + 蒙克頓 + + + 哈里法克斯 + + + 鵝灣 + + + 格雷斯貝 + + + 白朗薩布隆 + + + 聖約翰 + + + 科科斯群島 + + + 金夏沙 + + + 盧本巴希 + + + 班吉 + + + 布拉柴維爾 + + + 蘇黎世 + + + 阿比讓 + + + 拉羅湯加 + + + 復活島 + + + 聖地牙哥 + + + 杜阿拉 + + + 喀什米爾 + + + 烏魯木齊 + + + 重慶 + + + 上海 + + + 哈爾濱 + + + 波哥大 + + + 哥斯大黎加 + + + 哈瓦那 + + + 維德角 + + + 庫拉索 + + + 聖誕島 + + + 尼古西亞 + + + 布拉格 + + + 布辛根 + + + 柏林 + + + 吉布地 + + + 哥本哈根 + + + 多明尼加 + + + 聖多明哥 + + + 阿爾及爾 + + + 加拉巴哥群島 + + + 瓜亞基爾 + + + 塔林 + + + 開羅 + + + 阿尤恩 + + + 阿斯瑪拉 + + + 加納利 + + + 休達 + + + 馬德里 + + + 阿迪斯阿貝巴 + + + 赫爾辛基 + + + 斐濟 + + + 史坦利 + + + 楚克 + + + 波納佩 + + + 科斯瑞 + + + 法羅群島 + + + 巴黎 + + + 自由市 + + + + 英國夏令時間 + + 倫敦 + + + 格瑞納達 + + + 第比利斯 + + + 開雲 + + + 根息島 + + + 阿克拉 + + + 直布羅陀 + + + 杜里 + + + 努克 + + + 伊托科爾托米特 + + + 丹馬沙文 + + + 班竹 + + + 柯那克里 + + + 瓜德羅普 + + + 馬拉博 + + + 雅典 + + + 南喬治亞 + + + 瓜地馬拉 + + + 關島 + + + 比紹 + + + 圭亞那 + + + 中華人民共和國香港特別行政區 + + + 德古斯加巴 + + + 札格雷布 + + + 太子港 + + + 布達佩斯 + + + 雅加達 + + + 坤甸 + + + 馬卡沙爾 + + + 加亞布拉 + + + + 愛爾蘭夏令時間 + + 都柏林 + + + 耶路撒冷 + + + 曼島 + + + 加爾各答 + + + 查戈斯 + + + 巴格達 + + + 德黑蘭 + + + 雷克雅維克 + + + 羅馬 + + + 澤西島 + + + 牙買加 + + + 安曼 + + + 東京 + + + 奈洛比 + + + 比什凱克 + + + 金邊 + + + 恩得伯理島 + + + 基里地馬地島 + + + 塔拉瓦 + + + 科摩羅群島 + + + 聖基茨 + + + 平壤 + + + 首爾 + + + 科威特 + + + 開曼群島 + + + 阿克套 + + + 烏拉爾 + + + 阿克托比 + + + 克孜勒奧爾達 + + + 阿拉木圖 + + + 永珍 + + + 貝魯特 + + + 聖露西亞 + + + 瓦都茲 + + + 可倫坡 + + + 蒙羅維亞 + + + 馬賽魯 + + + 維爾紐斯 + + + 盧森堡 + + + 里加 + + + 的黎波里 + + + 卡薩布蘭卡 + + + 摩納哥 + + + 奇西瑙 + + + 波多里察 + + + 馬里戈特 + + + 安塔那那利佛 + + + 瓜加林島 + + + 馬朱諾 + + + 史高比耶 + + + 巴馬科 + + + 仰光 + + + 科布多 + + + 烏蘭巴托 + + + 喬巴山 + + + 中華人民共和國澳門特別行政區 + + + 塞班 + + + 馬丁尼克 + + + 諾克少 + + + 蒙賽拉特 + + + 馬爾他 + + + 模里西斯 + + + 馬爾地夫 + + + 布蘭太爾 + + + 提華納 + + + 聖伊薩貝爾 + + + 埃莫西約 + + + 馬薩特蘭 + + + 奇華華 + + + 巴伊亞班德拉斯 + + + 奧希納加 + + + 蒙特瑞 + + + 墨西哥市 + + + 馬塔莫羅斯 + + + 梅里達 + + + 康庫 + + + 吉隆坡 + + + 古晉 + + + 馬普托 + + + 溫得和克 + + + 諾美亞 + + + 尼亞美 + + + 諾福克 + + + 拉哥斯 + + + 馬那瓜 + + + 阿姆斯特丹 + + + 奧斯陸 + + + 加德滿都 + + + 諾魯 + + + 紐埃 + + + 查坦 + + + 奧克蘭 + + + 阿曼 + + + 巴拿馬 + + + 利馬 + + + 大溪地 + + + 馬可薩斯島 + + + 甘比爾群島 + + + 莫士比港 + + + 馬尼拉 + + + 喀拉蚩 + + + 華沙 + + + 密啟崙 + + + 匹特開恩群島 + + + 波多黎各 + + + 加薩 + + + 赫布隆 + + + 亞速爾群島 + + + 馬得拉群島 + + + 里斯本 + + + 帛琉 + + + 亞松森 + + + 卡達 + + + 留尼旺島 + + + 布加勒斯特 + + + 貝爾格勒 + + + 加里寧格勒 + + + 莫斯科 + + + 伏爾加格勒 + + + 沙馬拉 + + + 葉卡捷林堡 + + + 鄂木斯克 + + + 新西伯利亞 + + + 新庫茲涅茨克 + + + 克拉斯諾雅斯克 + + + 伊爾庫次克 + + + 雅庫次克 + + + 海參崴 + + + 堪地加 + + + 庫頁島 + + + 烏斯內拉 + + + 馬加丹 + + + 堪察加 + + + 阿那底 + + + 基加利 + + + 利雅德 + + + 瓜達康納爾島 + + + 馬埃島 + + + 喀土穆 + + + 斯德哥爾摩 + + + 新加坡 + + + 聖赫勒拿島 + + + 盧比安納 + + + 隆意耳拜恩 + + + 布拉提斯拉瓦 + + + 自由城 + + + 聖馬利諾 + + + 達喀爾 + + + 摩加迪休 + + + 巴拉馬利波 + + + 朱巴 + + + 聖多美 + + + 薩爾瓦多 + + + 下太子區 + + + 大馬士革 + + + 墨巴本 + + + 大特克島 + + + 恩賈梅納 + + + 凱爾蓋朗島 + + + 洛美 + + + 曼谷 + + + 杜桑貝 + + + 法考福 + + + 帝力 + + + 阿什哈巴特 + + + 突尼斯 + + + 東加塔布島 + + + 伊斯坦堡 + + + 西班牙港 + + + 富那富提 + + + 台北 + + + 沙蘭港 + + + 烏茲哥洛 + + + 基輔 + + + 辛非洛浦 + + + 札波羅結 + + + 坎帕拉 + + + 中途島 + + + 強斯頓 + + + 威克 + + + 艾達克 + + + 諾姆 + + + 檀香山 + + + 安克拉治 + + + 雅庫塔 + + + 錫特卡 + + + 朱諾 + + + 梅特拉卡特拉 + + + 洛杉磯 + + + 波夕 + + + 鳳凰城 + + + 丹佛 + + + 北達科他州布由拉 + + + 北達科他州紐沙倫 + + + 申特城 + + + + 芝加哥 + + + 美諾米尼 + + + 印第安那州溫森斯 + + + 彼得堡,印第安那州 + + + 印第安那州泰爾城 + + + 印第安那州諾克斯 + + + 威納麥克,印第安那州 + + + 印第安那州馬倫哥 + + + 印第安那波里斯 + + + 路易斯維爾 + + + 印第安那州維威 + + + 肯塔基州蒙地卻羅 + + + 底特律 + + + 紐約 + + + 蒙特維多 + + + 撒馬爾罕 + + + 塔什干 + + + 梵蒂岡 + + + 聖文森 + + + 卡拉卡斯 + + + 托爾托拉 + + + 聖托馬斯 + + + 胡志明市 + + + 埃法特 + + + 瓦利斯 + + + 阿皮亞 + + + 亞丁 + + + 馬約特島 + + + 約翰尼斯堡 + + + 路沙卡 + + + 哈拉雷 + + + + + 艾克時間 + 艾克標準時間 + 艾克夏令時間 + + + + + 阿富汗時間 + + + + + 中非時間 + + + + + 東非時間 + + + + + 南非標準時間 + + + + + 西非時間 + 西非標準時間 + 西非夏令時間 + + + + + 阿拉斯加時間 + 阿拉斯加標準時間 + 阿拉斯加夏令時間 + + + + + 阿拉木圖時間 + 阿拉木圖標準時間 + 阿拉木圖夏令時間 + + + + + 亞馬遜時間 + 亞馬遜標準時間 + 亞馬遜夏令時間 + + + + + 中部時間 + 中部標準時間 + 中部夏令時間 + + + + + 東部時間 + 東部標準時間 + 東部夏令時間 + + + + + 山區時間 + 山區標準時間 + 山區夏令時間 + + + + + 太平洋時間 + 太平洋標準時間 + 太平洋夏令時間 + + + + + 阿納德爾時間 + 阿那底河標準時間 + 阿那底河夏令時間 + + + + + 阿克陶時間 + 阿克陶標準時間 + 阿克陶夏令時間 + + + + + 阿克托比時間 + 阿克托比標準時間 + 阿克托比夏令時間 + + + + + 阿拉伯時間 + 阿拉伯標準時間 + 阿拉伯夏令時間 + + + + + 阿根廷時間 + 阿根廷標準時間 + 阿根廷夏令時間 + + + + + 阿根廷西部時間 + 阿根廷西部標準時間 + 阿根廷西部夏令時間 + + + + + 亞美尼亞時間 + 亞美尼亞標準時間 + 亞美尼亞夏令時間 + + + + + 大西洋時間 + 大西洋標準時間 + 大西洋夏令時間 + + + + + 澳洲中部時間 + 澳洲中部標準時間 + 澳洲中部夏令時間 + + + + + 澳洲中西部時間 + 澳洲中西部標準時間 + 澳洲中西部夏令時間 + + + + + 澳洲東部時間 + 澳洲東部標準時間 + 澳洲東部夏令時間 + + + + + 澳洲西部時間 + 澳洲西部標準時間 + 澳洲西部夏令時間 + + + + + 亞塞拜然時間 + 亞塞拜然標準時間 + 亞塞拜然夏令時間 + + + + + 亞速爾群島時間 + 亞速爾群島標準時間 + 亞速爾群島夏令時間 + + + + + 孟加拉時間 + 孟加拉標準時間 + 孟加拉夏令時間 + + + + + 不丹時間 + + + + + 玻利維亞時間 + + + + + 巴西利亞時間 + 巴西利亞標準時間 + 巴西利亞夏令時間 + + + + + 汶萊時間 + + + + + 維德角時間 + 維德角標準時間 + 維德角夏令時間 + + + + + 凱西站時間 + + + + + 查莫洛時間 + + + + + 查坦群島時間 + 查坦群島標準時間 + 查坦群島夏令時間 + + + + + 智利時間 + 智利標準時間 + 智利夏令時間 + + + + + 中國時間 + 中國標準時間 + 中國夏令時間 + + + + + 喬巴山時間 + 喬巴山標準時間 + 喬巴山夏令時間 + + + + + 聖誕島時間 + + + + + 可可斯群島時間 + + + + + 哥倫比亞時間 + 哥倫比亞標準時間 + 哥倫比亞夏令時間 + + + + + 庫克群島時間 + 庫克群島標準時間 + 庫克群島半夏令時間 + + + + + 古巴時間 + 古巴標準時間 + 古巴夏令時間 + + + + + 戴維斯時間 + + + + + 杜蒙杜比爾時間 + + + + + 東帝汶時間 + + + + + 復活節島時間 + 復活節島標準時間 + 復活節島夏令時間 + + + + + 厄瓜多時間 + + + + + 中歐時間 + 中歐標準時間 + 中歐夏令時間 + + + + + 東歐時間 + 東歐標準時間 + 東歐夏令時間 + + + + + 西歐時間 + 西歐標準時間 + 西歐夏令時間 + + + + + 福克蘭群島時間 + 福克蘭群島標準時間 + 福克蘭群島夏令時間 + + + + + 斐濟時間 + 斐濟標準時間 + 斐濟夏令時間 + + + + + 法屬圭亞那時間 + + + + + 法國南方及南極時間 + + + + + 加拉帕戈群島時間 + + + + + 甘比爾群島時間 + + + + + 喬治亞時間 + 喬治亞標準時間 + 喬治亞夏令時間 + + + + + 吉爾伯特群島時間 + + + + + 格林威治標準時間 + + + + + 格陵蘭東部時間 + 格陵蘭東部標準時間 + 格陵蘭東部夏令時間 + + + + + 格陵蘭西部時間 + 格陵蘭西部標準時間 + 格陵蘭西部夏令時間 + + + + + 關島標準時間 + + + + + 波斯灣海域標準時間 + + + + + 蓋亞納時間 + + + + + 夏威夷-阿留申時間 + 夏威夷-阿留申標準時間 + 夏威夷-阿留申夏令時間 + + + + + 香港時間 + 香港標準時間 + 香港夏令時間 + + + + + 科布多時間 + 科布多標準時間 + 科布多夏令時間 + + + + + 印度標準時間 + + + + + 印度洋時間 + + + + + 印度支那時間 + + + + + 印尼中部時間 + + + + + 印尼東部時間 + + + + + 印尼西部時間 + + + + + 伊朗時間 + 伊朗標準時間 + 伊朗夏令時間 + + + + + 伊爾庫次克時間 + 伊爾庫次克標準時間 + 伊爾庫次克夏令時間 + + + + + 以色列時間 + 以色列標準時間 + 以色列夏令時間 + + + + + 日本時間 + 日本標準時間 + 日本夏令時間 + + + + + 彼得羅巴甫洛夫斯克時間 + 彼得羅巴甫洛夫斯克標準時間 + 彼得羅巴甫洛夫斯克日光節約時間 + + + + + 東哈薩克時間 + + + + + 西哈薩克時間 + + + + + 韓國時間 + 韓國標準時間 + 韓國夏令時間 + + + + + 科斯瑞時間 + + + + + 克拉斯諾亞爾斯克時間 + 克拉斯諾亞爾斯克標準時間 + 克拉斯諾亞爾斯克夏令時間 + + + + + 吉爾吉斯時間 + + + + + 蘭卡時間 + + + + + 萊恩群島時間 + + + + + 豪勳爵島時間 + 豪勳爵島標準時間 + 豪勳爵島夏令時間 + + + + + 澳門時間 + 澳門標準時間 + 澳門夏令時間 + + + + + 麥覺理時間 + + + + + 馬加丹時間 + 馬加丹標準時間 + 馬加丹夏令時間 + + + + + 馬來西亞時間 + + + + + 馬爾地夫時間 + + + + + 馬克沙斯時間 + + + + + 馬紹爾群島時間 + + + + + 模里西斯時間 + 模里西斯標準時間 + 模里西斯夏令時間 + + + + + 莫森時間 + + + + + 墨西哥西北部時間 + 墨西哥西北部標準時間 + 墨西哥西北部夏令時間 + + + + + 墨西哥太平洋時間 + 墨西哥太平洋標準時間 + 墨西哥太平洋夏令時間 + + + + + 烏蘭巴托時間 + 烏蘭巴托標準時間 + 烏蘭巴托夏令時間 + + + + + 莫斯科時間 + 莫斯科標準時間 + 莫斯科夏令時間 + + + + + 緬甸時間 + + + + + 諾魯時間 + + + + + 尼泊爾時間 + + + + + 新喀里多尼亞時間 + 新喀里多尼亞標準時間 + 新喀里多尼亞群島夏令時間 + + + + + 紐西蘭時間 + 紐西蘭標準時間 + 紐西蘭夏令時間 + + + + + 紐芬蘭時間 + 紐芬蘭標準時間 + 紐芬蘭夏令時間 + + + + + 紐威島時間 + + + + + 諾福克島時間 + + + + + 費爾南多 - 迪諾羅尼亞時間 + 費爾南多 - 迪諾羅尼亞標準時間 + 費爾南多 - 迪諾羅尼亞夏令時間 + + + + + 北馬里亞納群島時間 + + + + + 新西伯利亞時間 + 新西伯利亞標準時間 + 新西伯利亞夏令時間 + + + + + 鄂木斯科時間 + 鄂木斯克標準時間 + 鄂木斯克夏令時間 + + + + + 巴基斯坦時間 + 巴基斯坦標準時間 + 巴基斯坦夏令時間 + + + + + 帛琉時間 + + + + + 巴布亞紐幾內亞時間 + + + + + 巴拉圭時間 + 巴拉圭標準時間 + 巴拉圭夏令時間 + + + + + 秘魯時間 + 秘魯標準時間 + 秘魯夏令時間 + + + + + 菲律賓時間 + 菲律賓標準時間 + 菲律賓夏令時間 + + + + + 鳳凰群島時間 + + + + + 聖皮埃爾和密克隆群島時間 + 聖皮埃爾和密克隆群島標準時間 + 聖皮埃爾和密克隆群島夏令時間 + + + + + 皮特康時間 + + + + + 波納佩時間 + + + + + 克孜勒奧爾達時間 + 克孜勒奧爾達標準時間 + 克孜勒奧爾達夏令時間 + + + + + 留尼旺時間 + + + + + 羅西拉時間 + + + + + 庫頁島時間 + 庫頁島標準時間 + 庫頁島夏令時間 + + + + + 薩馬拉時間 + 薩馬拉標準時間 + 薩馬拉夏令時間 + + + + + 薩摩亞時間 + 薩摩亞標準時間 + 薩摩亞夏令時間 + + + + + 塞席爾時間 + + + + + 新加坡標準時間 + + + + + 索羅門群島時間 + + + + + 南喬治亞時間 + + + + + 蘇利南時間 + + + + + 昭和基地時間 + + + + + 大溪地時間 + + + + + 台北時間 + 台北標準時間 + 台北夏令時間 + + + + + 塔吉克時間 + + + + + 托克勞群島時間 + + + + + 東加時間 + 東加標準時間 + 東加夏令時間 + + + + + 楚克島時間 + + + + + 土庫曼時間 + 土庫曼標準時間 + 土庫曼夏令時間 + + + + + 吐瓦魯時間 + + + + + 烏拉圭時間 + 烏拉圭標準時間 + 烏拉圭夏令時間 + + + + + 烏茲別克時間 + 烏茲別克標準時間 + 烏茲別克夏令時間 + + + + + 萬那杜時間 + 萬那杜標準時間 + 萬那杜夏令時間 + + + + + 委內瑞拉時間 + + + + + 海參崴時間 + 海參崴標準時間 + 海參崴夏令時間 + + + + + 伏爾加格勒時間 + 伏爾加格勒標準時間 + 伏爾加格勒夏令時間 + + + + + 沃斯托克時間 + + + + + 威克島時間 + + + + + 瓦利斯和福杜納群島時間 + + + + + 雅庫次克時間 + 雅庫次克標準時間 + 雅庫次克夏令時間 + + + + + 葉卡捷琳堡時間 + 葉卡捷琳堡標準時間 + 葉卡捷琳堡夏令時間 + + + + + + latn + + hanidec + hant + hantfin + + + . + , + ; + % + + + - + E + × + + + 非數值 + + + + + #,##0.### + + + + + 0 千 + 0萬 + 00萬 + 000萬 + 0000萬 + 0億 + 00億 + 000億 + 0000億 + 0兆 + 00兆 + 000兆 + + + + + 0K + 00K + 000K + 0M + 00M + 000M + 0B + 00B + 000B + 0T + 00T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + + + + 安道爾陪士特 + 安道爾陪士特 + + + 阿拉伯聯合大公國迪爾汗 + 阿拉伯聯合大公國迪爾汗 + + + 阿富汗尼 (1927–2002) + + + 阿富汗尼 + 阿富汗尼 + + + 阿爾巴尼亞列克 (1946–1965) + 阿爾巴尼亞列克 (1946–1965) + ALK + + + 阿爾巴尼亞列克 + 阿爾巴尼亞列克 + + + 亞美尼亞德拉姆 + 亞美尼亞德拉姆 + + + 荷屬安地列斯盾 + 荷屬安地列斯盾 + + + 安哥拉寬扎 + 安哥拉寬扎 + + + 安哥拉寬扎 (1977–1990) + 安哥拉寬扎 (1977–1990) + + + 安哥拉新寬扎 (1990–2000) + 安哥拉新寬扎 (1990–2000) + + + 安哥拉新調寬扎 (1995–1999) + 安哥拉新調寬扎 (1995–1999) + + + 阿根廷奧斯特納爾 + + + 阿根廷披索(1970-1983) + 阿根廷披索(1970-1983) + + + 阿根廷披索(1881-1970) + 阿根廷披索(1881-1970) + + + 阿根廷披索 (1983–1985) + 阿根廷披索 (1983–1985) + + + 阿根廷披索 + 阿根廷披索 + + + 奧地利先令 + 奧地利先令 + + + 澳幣 + 澳幣 + AU$ + + + 阿魯巴盾 + 阿魯巴盾 + + + 亞塞拜然馬納特 (1993–2006) + 亞塞拜然馬納特 (1993–2006) + + + 亞塞拜然馬納特 + 亞塞拜然馬納特 + + + 波士尼亞-黑塞哥維那第納爾 + 波士尼亞-黑塞哥維那第納爾 + + + 波士尼亞赫塞哥維納可轉換馬克 + 波士尼亞-黑塞哥維那可轉換馬克 + + + 波士尼亞-黑塞哥維那新第納爾 + 波士尼亞-黑塞哥維那新第納爾 + + + 巴貝多元 + 巴貝多元 + + + 孟加拉塔卡 + 孟加拉塔卡 + + + 比利時法郎(可轉換) + 比利時法郎(可轉換) + + + 比利時法郎 + 比利時法郎 + + + 比利時法郎(金融) + 比利時法郎(金融) + + + 保加利亞硬列弗 + 保加利亞硬列弗 + + + 保加利亞社會黨列弗 + 保加利亞社會黨列弗 + + + 保加利亞新列弗 + 保加利亞新列弗 + + + 保加利亞列弗(1879-1952) + 保加利亞列弗(1879-1952) + + + 巴林第納爾 + 巴林第納爾 + + + 蒲隆地法郎 + 蒲隆地法郎 + + + 百慕達幣 + 百慕達幣 + + + 汶萊元 + 汶萊元 + + + 玻利維亞貨幣單位 + 玻利維亞貨幣單位 + + + 玻利維亞玻利維亞諾(1863-1963) + 玻利維亞玻利維亞諾(1863-1963) + + + 玻利維亞披索 + 玻利維亞披索 + + + 玻利維亞幕多 + 玻利維亞幕多 + + + 巴西克魯薩多農瓦 (1967–1986) + 巴西克魯薩多農瓦 (1967–1986) + + + 巴西克魯賽羅 (1986–1989) + 巴西克魯賽羅 (1986–1989) + + + 巴西克魯賽羅 (1990–1993) + 巴西克魯賽羅 (1990–1993) + + + 巴西里拉 + 巴西里拉 + R$ + + + 巴西克如爾達農瓦 + 巴西克如爾達農瓦 + + + 巴西克魯賽羅 + 巴西克魯賽羅 + + + 巴西克魯賽羅(1942 -1967) + 巴西克魯賽羅(1942 -1967) + + + 巴哈馬元 + 巴哈馬元 + + + 不丹那特倫 + 不丹那特倫 + + + 緬甸基雅特 + + + 波札那普拉 + 波札那普拉 + + + 白俄羅斯新盧布 (1994–1999) + 白俄羅斯新盧布 (1994–1999) + + + 白俄羅斯盧布 + 白俄羅斯盧布 + + + 貝里斯元 + 貝里斯元 + + + 加幣 + 加幣 + CA$ + + + 剛果法郎 + 剛果法郎 + + + 歐元 (WIR) + 歐元 (WIR) + + + 瑞士法郎 + 瑞士法郎 + + + 法郎 (WIR) + 法郎 (WIR) + + + 智利埃斯庫多 + 智利埃斯庫多 + + + 卡林油達佛曼跎 + 卡林油達佛曼跎 + + + 智利披索 + 智利披索 + + + 人民幣 + 人民幣 + CN¥ + + + 哥倫比亞披索 + 哥倫比亞披索 + + + 哥倫比亞幣(COU) + 哥倫比亞幣(COU) + + + 哥斯大黎加科朗 + 哥斯大黎加科郎 + + + 舊塞爾維亞第納爾 + 舊塞爾維亞第納爾 + + + 捷克斯洛伐克硬克朗 + 捷克斯洛伐克硬克朗 + + + 古巴可轉換披索 + 古巴可轉換披索 + + + 古巴披索 + 古巴披索 + + + 維德角埃斯庫多 + 維德角埃斯庫多 + + + 賽普勒斯鎊 + 賽普勒斯鎊 + + + 捷克克朗 + 捷克克朗 + + + 東德奧斯特馬克 + 東德奧斯特馬克 + + + 德國馬克 + 德國馬克 + + + 吉布地法郎 + 吉布地法郎 + + + 丹麥克朗 + 丹麥克羅納 + + + 多明尼加披索 + 多明尼加披索 + + + 阿爾及利亞第納爾 + 阿爾及利亞第納爾 + + + 厄瓜多蘇克雷 + 厄瓜多蘇克雷 + + + 厄瓜多爾由里達瓦康斯坦 (UVC) + 厄瓜多爾由里達瓦康斯坦 (UVC) + + + 愛沙尼亞克朗 + 愛沙尼亞克朗 + + + 埃及鎊 + 埃及鎊 + + + 厄立特里亞納克法 + 厄立特里亞納克法 + + + 西班牙比塞塔(會計單位) + 西班牙比塞塔(會計單位) + + + 西班牙比塞塔(可轉換會計單位) + 西班牙比塞塔(可轉換會計單位) + + + 西班牙陪士特 + 西班牙陪士特 + + + 衣索比亞比爾 + 衣索比亞比爾 + + + 歐元 + 歐元 + + + + 芬蘭馬克 + 芬蘭馬克 + + + 斐濟元 + 斐濟元 + + + 福克蘭群島鎊 + 福克蘭群島鎊 + + + 法國法郎 + 法國法郎 + + + 英鎊 + 英鎊 + £ + + + 喬治亞庫旁拉里 + 喬治亞庫旁拉里 + + + 喬治亞拉里 + 喬治拉里 + + + 迦納仙蔕 (1979–2007) + 迦納仙蔕 (1979–2007) + + + 迦納塞地 + 迦納仙蔕 + + + 直布羅陀鎊 + 直布羅陀鎊 + + + 甘比亞達拉西 + 甘比亞達拉西 + + + 幾內亞法郎 + 幾內亞法郎 + + + 幾內亞西里 + 幾內亞西里 + + + 赤道幾內亞埃奎勒 + 赤道幾內亞埃奎勒 + + + 希臘德拉克馬 + 希臘德拉克馬 + + + 瓜地馬拉格查爾 + 瓜地馬拉格查爾 + + + 葡屬幾內亞埃斯庫多 + 葡屬幾內亞埃斯庫多 + + + 幾內亞比索披索 + 幾內亞比索披索 + + + 圭亞那元 + 圭亞那元 + + + 港幣 + 港幣 + HK$ + + + 洪都拉斯倫皮拉 + 洪都拉斯倫皮拉 + + + 克羅地亞第納爾 + 克羅地亞第納爾 + + + 克羅埃西亞庫納 + 克羅地亞庫納 + + + 海地古德 + 海地古德 + + + 匈牙利福林 + 匈牙利福林 + + + 印尼盾 + 印尼盾 + + + 愛爾蘭鎊 + 愛爾蘭鎊 + + + 以色列鎊 + 以色列鎊 + + + 以色列謝克爾 (1980–1985) + 以色列謝克爾 (1980–1985) + ILR + + + 以色列新謝克爾 + 以色列新謝克爾 + + + + 印度盧比 + 印度盧比 + + + + 伊拉克第納爾 + 伊拉克第納爾 + + + 伊朗里亞爾 + 伊朗里亞爾 + + + 冰島克朗 (1918–1981) + 冰島克朗 (1918–1981) + + + 冰島克朗 + 冰島克朗 + + + 義大利里拉 + 義大利里拉 + + + 牙買加元 + 牙買加元 + + + 約旦第納爾 + 約旦第納爾 + + + 日圓 + 日圓 + ¥ + + + 肯亞先令 + 肯尼亞先令 + + + 吉爾吉斯索姆 + 吉爾吉斯索馬 + + + 柬埔寨瑞爾 + 柬埔寨瑞爾 + + + 科摩羅法郎 + 科摩羅法郎 + + + 北韓圓 + 北韓圓 + + + 南韓圜 + + + 南韓圓 + + + 韓圓 + 韓圓 + + + + 科威特第納爾 + 科威特第納爾 + + + 開曼群島元 + 開曼群島美元 + + + 卡扎克斯坦坦吉 + 卡扎克斯坦坦吉 + + + 寮國基普 + 寮國基普 + + + 黎巴嫩鎊 + 黎巴嫩鎊 + + + 斯里蘭卡盧比 + 斯里蘭卡盧布 + + + 賴比瑞亞元 + 賴比瑞亞元 + + + 賴索托羅蒂 + 賴索托羅蒂 + + + 立陶宛立特 + 立陶宛里塔 + + + 立陶宛特羅 + 立陶宛特羅 + + + 盧森堡可兌換法郎 + 盧森堡可兌換法郎 + + + 盧森堡法郎 + 盧森堡法郎 + + + 盧森堡金融法郎 + 盧森堡金融法郎 + + + 拉脫維亞拉特銀幣 + 拉脫維亞拉特銀幣 + + + 拉脫維亞盧布 + 拉脫維亞盧布 + + + 利比亞第納爾 + 利比亞第納爾 + + + 摩洛哥迪拉姆 + 摩洛哥迪拉姆 + + + 摩洛哥法郎 + 摩洛哥法郎 + + + 摩納哥法郎 + 摩納哥法郎 + + + 摩爾多瓦券 + 摩爾多瓦券 + + + 摩杜雲列伊 + 摩杜雲列伊 + + + 馬達加斯加艾瑞爾 + 馬達加斯加艾瑞爾 + + + 馬達加斯加法郎 + 馬達加斯加法郎 + + + 馬其頓第納爾 + 馬其頓第納爾 + + + 馬其頓第納爾(1992-1993) + 馬其頓第納爾(1992-1993) + + + 馬里法郎 + 馬里法郎 + + + 緬甸元 + 緬甸元 + + + 蒙古圖格里克 + 蒙古圖格里克 + + + 澳門元 + 澳門元 + + + 茅利塔尼亞烏吉亞 + 茅利塔尼亞烏吉亞 + + + 馬爾他里拉 + 馬爾他里拉 + + + 馬爾他鎊 + 馬爾他鎊 + + + 模里西斯盧布 + 模里西斯盧布 + + + 馬爾地夫盧非亞 + 馬爾地夫海島盧非亞 + + + 馬拉維克瓦查 + 馬拉維克瓦查 + + + 墨西哥披索 + 墨西哥披索 + MX$ + + + 墨西哥銀披索 (1861–1992) + 墨西哥銀披索 (1861–1992) + + + 墨西哥轉換單位 (UDI) + 墨西哥轉換單位 (UDI) + + + 馬來西亞令吉 + 馬來西亞令吉 + + + 莫三比克埃斯庫多 + 莫三比克埃斯庫多 + + + 莫三比克梅蒂卡爾 + 莫三比克梅蒂卡爾 + + + 莫三比克美提卡 + 莫三比克美提卡 + + + 納米比亞元 + 納米比亞元 + + + 奈及利亞奈拉 + 奈及利亞奈拉 + + + 尼加拉瓜科多巴 + 尼加拉瓜科多巴 + + + 尼加拉瓜金科多巴 + 尼加拉瓜金科多巴 + + + 荷蘭盾 + 荷蘭盾 + + + 挪威克朗 + 挪威克羅納 + + + 尼泊爾盧比 + 尼泊爾盧布 + + + 紐西蘭幣 + 紐西蘭幣 + NZ$ + + + 阿曼里奧 + 阿曼里奧 + + + 巴拿馬巴波亞 + 巴拿馬巴波亞 + + + 祕魯因蒂 + 祕魯因蒂 + + + 秘魯新太陽幣 + 秘魯新太陽幣 + + + 秘魯太陽幣 + 秘魯太陽幣 + + + 巴布亞紐幾內亞基那 + 巴布亞紐幾內亞基那 + + + 菲律賓披索 + 菲律賓披索 + + + 巴基斯坦盧布 + 巴基斯坦盧布 + + + 波蘭茲羅提 + 波蘭茲羅提 + + + 波蘭茲羅提 (1950–1995) + 波蘭茲羅提 (1950–1995) + + + 葡萄牙埃斯庫多 + 葡萄牙埃斯庫多 + + + 巴拉圭瓜拉尼 + 巴拉圭瓜拉尼 + + + 卡達爾里亞爾 + 卡達爾里亞爾 + + + 羅德西亞元 + 羅德西亞元 + + + 舊羅馬尼亞列伊 + 舊羅馬尼亞列伊 + + + 羅馬尼亞列伊 + 羅馬尼亞列伊 + + + 塞爾維亞戴納 + 塞爾維亞戴納 + + + 俄羅斯盧布 + 俄羅斯盧布 + + + 俄羅斯盧布 (1991–1998) + 俄羅斯盧布 (1991–1998) + + + 盧安達法郎 + 盧安達法郎 + + + 沙烏地里雅 + 沙烏地里雅 + + + 索羅門群島元 + 索羅門群島元 + + + 塞席爾盧比 + 塞席爾盧比 + + + 蘇丹第納爾 + 蘇丹第納爾 + + + 蘇丹鎊 + 蘇丹鎊 + + + 舊蘇丹鎊 + 舊蘇丹鎊 + + + 瑞典克朗 + 瑞典克羅納 + + + 新加坡幣 + 新加坡幣 + + + 聖赫勒拿鎊 + 聖赫勒拿鎊 + + + 斯洛維尼亞托勒 + 斯洛維尼亞托勒 + + + 斯洛伐克克朗 + 斯洛伐克克朗 + + + 獅子山利昂 + 獅子山利昂 + + + 索馬利亞先令 + 索馬利亞先令 + + + 蘇利南元 + 蘇利南元 + + + 蘇利南基爾 + 蘇利南基爾 + + + 南蘇丹鎊 + 南蘇丹鎊 + + + 聖多美島和普林西比島多布拉 + 聖多美島和普林西比島多布拉 + + + 蘇聯盧布 + 蘇聯盧布 + + + 薩爾瓦多科郎 + 薩爾瓦多科郎 + + + 敘利亞鎊 + 敘利亞鎊 + + + 史瓦濟蘭里朗吉尼 + 史瓦濟蘭里朗吉尼 + + + 泰銖 + 泰銖 + ฿ + + + 塔吉克盧布 + 塔吉克盧布 + + + 塔吉克索莫尼 + 塔吉克索莫尼 + + + 土庫曼馬納特 (1993–2009) + 土庫曼馬納特 (1993–2009) + + + 土庫曼馬納特 + 土庫曼新馬納特 + + + 突尼西亞第納爾 + 突尼西亞第納爾 + + + 東加潘加 + 東加潘加 + + + 帝汶埃斯庫多 + + + 土耳其里拉 + 土耳其里拉 + + + 新土耳其里拉 + 新土耳其里拉 + + + 千里達及托巴哥元 + 千里達及托巴哥元 + + + 新臺幣 + 新臺幣 + NT$ + + + 坦尚尼亞先令 + 坦尚尼亞先令 + + + 烏克蘭格里夫納 + 烏克蘭格里夫那 + + + 烏克蘭卡本瓦那茲 + 烏克蘭卡本瓦那茲 + + + 烏干達先令 (1966–1987) + 烏干達先令 (1966–1987) + + + 烏干達先令 + 烏干達先令 + + + 美元 + 美元 + $ + + + 美元(次日) + 美元(次日) + + + 美元(當日) + 美元(當日) + + + 烏拉圭披索(指數單位) + 烏拉圭披索(指數單位) + + + 烏拉圭披索 (1975–1993) + 烏拉圭披索 (1975–1993) + + + 烏拉圭披索 + 烏拉圭披索 + + + 烏茲別克索姆 + 烏茲別克索姆 + + + 委內瑞拉玻利瓦 (1871–2008) + 委內瑞拉玻利瓦 (1871–2008) + + + 委內瑞拉玻利瓦 + 委內瑞拉玻利瓦 + + + 越南盾 + 越南盾 + + + + 越南盾(1978-1985) + + + 萬那杜萬杜 + 萬那杜萬杜 + + + 西薩摩亞塔拉 + 西薩摩亞塔拉 + + + 法郎 (CFA–BEAC) + 法郎 (CFA–BEAC) + FCFA + + + 白銀 + + + 黃金 + + + 歐洲綜合單位 + + + 歐洲貨幣單位 (XBB) + + + 歐洲會計單位 (XBC) + + + 歐洲會計單位 (XBD) + + + 格瑞那達元 + 格瑞那達元 + EC$ + + + 特殊提款權 + + + 歐洲貨幣單位 (XEU) + 歐洲貨幣單位 (XEU) + + + 法國金法郎 + + + 法國法郎 (UIC) + + + 法郎 (CFA–BCEAO) + 法郎 (CFA–BCEAO) + CFA + + + 帕拉狄昂 + + + 法郎 (CFP) + 法郎 (CFP) + CFPF + + + 白金 + + + RINET 基金 + + + 測試用貨幣代碼 + + + 未知貨幣 + 未知貨幣 + + + 葉門第納爾 + 葉門第納爾 + + + 葉門里雅 + 葉門里雅 + + + 南斯拉夫第納爾硬幣 + 南斯拉夫第納爾硬幣 + + + 南斯拉夫挪威亞第納爾 + 南斯拉夫挪威亞第納爾 + + + 南斯拉夫 可轉換第納爾 + 南斯拉夫 可轉換第納爾 + + + 南斯拉夫改革第納爾(1992-1993) + 南斯拉夫改革第納爾(1992-1993) + + + 南非蘭特(金融) + 南非蘭特(金融) + + + 南非蘭特 + 南非蘭特 + + + 尚比亞克瓦查 (1968–2012) + 尚比亞克瓦查 (1968–2012) + + + 尚比亞克瓦查 + 尚比亞克瓦查 + + + 薩伊新扎伊爾 + 薩伊新扎伊爾 + + + 薩伊扎伊爾 + 薩伊扎伊爾 + + + 辛巴威元 + 辛巴威元 + + + 辛巴威元 (2009) + 辛巴威元 (2009) + + + 辛巴威元(2008) + 辛巴威元(2008) + + + + {0}+ + {0}-{1} + + + + + + {0}/{1} + + + {0} G + + + {0} 分鐘 + + + {0} 秒 + + + {0} 度 + + + {0} 英畝 + + + {0} 公頃 + + + {0} 平方英尺 + + + {0} 平方公里 + + + {0} 平方公尺 + + + {0} 平方英里 + + + {0} 天 + + + {0} 小時 + + + {0} 毫秒 + + + {0} 分鐘 + + + {0} 個月 + + + {0} 秒 + + + {0} 週 + + + {0} 年 + + + {0} 公分 + + + {0} 呎 + + + {0} 吋 + + + {0} 公里 + + + {0} 光年 + + + {0} 公尺 + + + {0} 英里 + + + {0} 公釐 + + + {0} 皮米 + + + {0} 碼 + + + {0} 克 + + + {0} 公斤 + + + {0} 盎司 + + + {0} 磅 + + + {0} 匹 + + + {0} 千瓦 + + + {0} 瓦特 + + + {0} 百帕 + + + {0} 英吋水銀柱 + + + {0} 毫巴 + + + {0} 公里/小時 + + + {0} 公尺/秒 + + + {0} 英里/小時 + + + {0}°C + + + {0}°F + + + {0} 立方公里 + + + {0} 立方英里 + + + {0} 公升 + + + + + {0}/{1} + + + {0} G + + + {0} 分鐘 + + + {0} 秒 + + + {0} 度 + + + {0} 英畝 + + + {0} 公頃 + + + {0} 平方英尺 + + + {0} 平方公里 + + + {0} 平方公尺 + + + {0} 平方英里 + + + {0} 天 + + + {0} 小時 + + + {0} 毫秒 + + + {0} 分鐘 + + + {0} 個月 + + + {0} 秒 + + + {0} 週 + + + {0} 年 + + + {0} 公分 + + + {0} 呎 + + + {0} 吋 + + + {0} 公里 + + + {0} 光年 + + + {0} 公尺 + + + {0} 英里 + + + {0} 公釐 + + + {0} 皮米 + + + {0} 碼 + + + {0} 克 + + + {0} 公斤 + + + {0} 盎司 + + + {0} 磅 + + + {0} 匹 + + + {0} 千瓦 + + + {0} 瓦特 + + + {0} 百帕 + + + {0} 英吋水銀柱 + + + {0} 毫巴 + + + {0} 公里/小時 + + + {0} 公尺 / 秒 + + + {0} 英里/小時 + + + {0}°C + + + {0}°F + + + {0} 立方公里 + + + {0} 立方英里 + + + {0} 升 + + + + + {0}/{1} + + + {0}G + + + {0} 分鐘 + + + {0} 秒 + + + {0} 度 + + + {0} 英畝 + + + {0} 公頃 + + + {0} 平方英尺 + + + {0} km² + + + {0} m² + + + {0} 平方英里 + + + {0} 天 + + + {0} 小時 + + + {0} 毫秒 + + + {0} 分鐘 + + + {0} 個月 + + + {0} 秒 + + + {0} 週 + + + {0} 年 + + + {0} 公分 + + + {0} 呎 + + + {0} 吋 + + + {0} 公里 + + + {0} 光年 + + + {0} 公尺 + + + {0} 英里 + + + {0} 公釐 + + + {0} 皮米 + + + {0} 碼 + + + {0} 克 + + + {0} 公斤 + + + {0} 盎司 + + + {0} 磅 + + + {0} 匹 + + + {0} 千瓦 + + + {0} 瓦特 + + + {0} 百帕 + + + {0} 英吋汞柱 + + + {0} 毫巴 + + + {0} 公里/小時 + + + {0} 公尺/秒 + + + {0} 英里/小時 + + + {0}° + + + {0}°F + + + {0} km³ + + + {0} 立方英里 + + + {0} 升 + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}、{1} + {0}、{1} + {0}和{1} + {0}和{1} + + + {0}{1} + {0}{1} + {0}{1} + {0}{1} + + + {0}{1} + {0}{1} + {0}{1} + {0}{1} + + + + + 是:確定 + 否:不 + + + + diff --git a/library/Zend/Locale/Data/zh_Hant_HK.xml b/library/Zend/Locale/Data/zh_Hant_HK.xml new file mode 100755 index 000000000..3b62ad859 --- /dev/null +++ b/library/Zend/Locale/Data/zh_Hant_HK.xml @@ -0,0 +1,938 @@ + + + + + + + + + + + + + + + + 中美洲 + 美洲地區 + 加勒比 + 阿拉伯聯合酋長國 + 安提瓜及巴布達 + 阿魯巴 + 阿塞拜疆 + 波斯尼亞和黑塞哥維那 + 巴巴多斯 + 聖巴泰勒米 + 博茨瓦納 + 剛果 - 金夏沙 + 剛果 - 布拉薩 + 中國 + 哥斯達黎加 + 佛得角 + 塞浦路斯 + 瑟塔與梅利拉 + 厄立特里亞 + 埃塞俄比亞 + 加蓬 + 格林納達 + 格魯吉亞 + 格恩西島 + 岡比亞 + 瓜德羅普島 + 南佐治亞島與南桑威奇群島 + 危地馬拉 + 蓋亞那 + 赫德與麥當勞群島 + 洪都拉斯 + 英屬地曼島 + 意大利 + 肯雅 + 科摩羅 + 聖基茨和尼維斯 + 聖盧西亞 + 利比里亞 + 萊索托 + 黑山 + 馬里 + 毛里塔尼亞 + 蒙塞拉特 + 毛里裘斯 + 馬爾代夫 + 莫桑比克 + 新喀里多尼亞 + 尼日爾 + 尼日利亞 + 阿曼 + 巴布亞新幾內亞 + 聖皮埃爾島及密克隆島 + 皮特凱恩島 + 卡塔爾 + 盧旺達 + 沙特阿拉伯 + 所羅門群島 + 塞舌爾 + 斯洛文尼亞 + 斯瓦爾巴群島及揚馬延島 + 塞拉利昂 + 索馬里 + 蘇里南 + 聖多美普林西比 + 斯威士蘭 + 特克斯和凱科斯群島 + 乍得 + 法屬南部地區 + 托克勞 + 湯加 + 千里達和多巴哥 + 圖瓦盧 + 坦桑尼亞 + 梵蒂岡宮城 + 聖文森特和格林納丁斯 + 瓦努阿圖 + 贊比亞 + + + 傳統德國拼字法 + 1996 德國拼字法 + San Giorgio/Bila 方言 + 已修訂拼字法 + 蘇格蘭標準英語 + + + 專用區 + + + 阿拉伯印度語位數 + 擴展阿拉伯語印度語位數 + 亞美尼亞小寫數字 + 孟加拉語位數 + 繁體中文順序 (Big5) + 梵文位數 + 詞典排序 + 預設統一碼排序 + 埃塞俄比亞數詞 + 埃及曆 + 埃塞俄比亞阿美德阿萊姆曆 + 全寬位數 + 簡體中文順序 (GB2312) + 格魯吉亞數字 + 希臘語數字 + 希臘小寫數字 + 古加拉特語位數 + 果魯穆奇語位數 + 中文小數位 + 簡體中文數字 + 簡體中文金融數字 + 繁體中文數字 + 繁體中文金融數字 + 希伯萊語數字 + 日本數字 + 日本金融數字 + 高棉位數 + 卡納達語位數 + 老撾文位數 + 西方位數 + 馬來亞位數 + 蒙古文位數 + 緬甸語位數 + 奧里亞語位數 + 改革版排序 + 羅馬小寫數字 + 一般用途搜索 + 泰米爾語數字 + 泰盧固語位數 + 泰文位數 + 藏文位數 + 筆劃排序 + + + 數值 + 重音 + 韓文 + + + 十進制 + 英國 + 美國 + + + + + + + + M-d + M-d(E) + + + + + + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + + + + + 十一 + 十二 + + + 一月 + 二月 + 三月 + 四月 + 五月 + 六月 + 七月 + 八月 + 九月 + 十月 + 十一月 + 十二月 + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + d/M/yGGGGG + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}{0} + + + + + {1}{0} + + + + d E + G y 年 M 月 + G y 年 M 月 d 日 (E) + d/M + E, d/M + M 月 d 日 + M 月 d 日 (E) + M/yGGGGG + d/M/yGGGGG + E, d/M/yGGGGG + G y 年 M 月 d 日 (E) + G y 年第QQQ + G y 年QQQQ + + + + d/M 至 d/M + d/M 至 d/M + + + d/M (E) 至 d/M (E) + d/M (E) 至 d/M (E) + + + M 月 d 日至 d 日 + M 月 d 日至 M 月 d 日 + + + M 月 d 日 (E) 至 d 日 (E) + M 月 d 日 (E) 至 M 月 d 日 (E) + + + G y 年至 y 年 + + + G M/y 至 M/y + + + G d/M/y 至 d/M/y + G d/M/y 至 d/M/y + G d/M/y 至 d/M/y + + + G d/M/y (E) 至 d/M/y (E) + G d/M/y (E) 至 d/M/y (E) + G d/M/y (E) 至 d/M/y (E) + + + G y 年 M 月至 y 年 M 月 + + + G y 年 M 月 d 日 (E) 至 d 日 (E) + G y 年 M 月 d 日 (E) 至 M 月 d 日 (E) + G y 年 M 月 d 日 (E) 至 y 年 M 月 d 日 (E) + + + + + + + + + y年M月d日EEEE + + + + + y年M月d日 + + + + + y年M月d日 + + + + + d/M/yy + + + + + + + ah:mm:ss [zzzz] + + + + + ah:mm:ss [z] + + + + + ah:mm:ss + + + + + ah:mm + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1}{0} + + + + + {1}{0} + + + + d E + G y 年 M 月 d 日 (E) + d/M + E, d/M + dd/MM + M月d日 (E) + M/y + d/M/y + d/M/y(E) + MM/y + y 年 M 月 + y 年 M 月 d 日 + y 年 M 月 d 日 (E) + y 年 M 月 + + + + d/M 至 d/M + d/M 至 d/M + + + d/M (E) 至 d/M (E) + d/M (E) 至 d/M (E) + + + M 月 d 日至 d 日 + M 月 d 日至 M 月 d 日 + + + M 月 d 日 (E) 至 d 日 (E) + M 月 d 日 (E) 至 M 月 d 日 (E) + + + M/y 至 M/y + M/y 至 M/y + + + d/M/y 至 d/M/y + d/M/y 至 d/M/y + d/M/y 至 d/M/y + + + d/M/y (E) 至 d/M/y (E) + d/M/y (E) 至 d/M/y (E) + d/M/y (E) 至 d/M/y (E) + + + y 年 M 月至 M 月 + y 年 M 月至 y 年 M 月 + + + y 年 M 月 d 日至 d 日 + y 年 M 月 d 日至 M 月 d 日 + y 年 M 月 d 日至 y 年 M 月 d 日 + + + y 年 M 月 d 日 (E) 至 M 月 d 日 (E) + y 年 M 月 d 日 (E) 至 M 月 d 日 (E) + y 年 M 月 d 日 (E) 至 y 年 M 月 d日 (E) + + + y 年 M 月 至 M 月 + y 年 M 月至 y 年 M 月 + + + + + + + + + Gy年M月d日EEEE + + + + + Gy年M月d日 + + + + + Gy年M月d日 + + + + + d/M/yGGGGG + + + + + + G y 年 + G y 年 M 月 + G y 年 M 月 d 日 + G y 年 M 月 d 日 (E) + d-M + d-M(E) + M 月 d 日 + M 月 d 日 (E) + G y 年 + G y 年 + M/yGGGGG + d/M/yGGGGG + E, d/M/yGGGGG + G y 年 M 月 + G y 年 M 月 d 日 + G y 年 M 月 d 日 (E) + G y 年第QQQ + G y 年QQQQ + + + + + + + 上年 + 本年 + 下年 + + + 上月 + 下月 + + {0} 月前 + + + + + {0} 日後 + + + {0} 日前 + + + + + + 耶烈萬 + + + 盧安達 + + + 馬里漢姆 + + + 薩拉熱窩 + + + 索非亞 + + + 聖巴夫林米 + + + 阿比贊 + + + 哥斯達黎加 + + + 尼科西亞 + + + 阿斯馬拉 + + + 亞的斯亞貝巴 + + + 史坦雷 + + + 利布維 + + + 法屬蓋亞那 + + + 馬拉波 + + + 澤西 + + + 比斯凱克 + + + 科摩羅 + + + 馬塞魯 + + + 基希訥烏 + + + 波德戈里察 + + + 斯科普里 + + + 溫特和克 + + + 拉各斯 + + + 馬斯喀特 + + + 莫爾斯比港 + + + 卡拉奇 + + + 貝爾格萊德 + + + 瓜達爾卡納爾 + + + 馬希 + + + 喀土木 + + + 盧布爾雅那 + + + 伯拉第斯拉瓦 + + + 摩加迪沙 + + + 凱爾蓋朗 + + + 杜尚別 + + + 湯加塔布 + + + 達累斯薩拉姆 + + + 比尤拉,北達科他州 + + + 北達科他州申特城 + + + 印第安那州彼得堡 + + + 印第安那州威納馬克 + + + 聖文森特 + + + 盧薩卡 + + + + 亞塞拜疆時間 + 亞塞拜疆標準時間 + 亞塞拜疆夏令時間 + + + + + 格魯吉亞時間 + 格魯吉亞標準時間 + 格魯吉亞夏令時間 + + + + + 馬爾代夫時間 + + + + + 毛里求斯時間 + 毛里求斯標準時間 + 毛里求斯夏令時間 + + + + + 所羅門群島時間 + + + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + + + + 阿拉伯聯合酋長國迪爾汗 + 阿拉伯聯合酋長國迪爾汗 + + + 澳元 + + + 亞塞拜疆馬納特 + 亞塞拜疆馬納特 + + + 波斯尼亞-黑塞哥維那第納爾 + + + 波斯尼亞-黑塞哥維那可轉換馬克 + + + 加元 + + + 哥斯達黎加科郎 + 哥斯達黎加科郎 + + + 埃塞俄比亞比爾 + 埃塞俄比亞比爾 + + + 格魯吉亞拉里 + 格魯吉亞拉里 + + + 港元 + $ + + + 意大利里拉 + + + 利比利亞元 + 利比利亞元 + + + 毛里求斯盧布 + 毛里求斯盧布 + + + 莫桑比克美提卡 + 莫桑比克美提卡 + + + 尼日利亞奈拉 + 尼日利亞奈拉 + + + 紐西蘭元 + + + 塞爾維亞第納爾 + + + 盧旺達法郎 + 盧旺達法郎 + + + 新加坡元 + + + 新台幣 + + + US$ + + + 中非法郎 + + + 多哥非洲共同體法郎 + + + 太平洋法郎 + + + + + + + {0} 平方米 + + + {0}星期 + + + {0} 厘米 + + + {0} 毫米 + + + {0} 安士 + + + {0} 米/小時 + + + 攝氏{0}度 + + + 華氏{0}度 + + + + + {0} 平方米 + + + {0} 厘米 + + + {0} 毫米 + + + {0} 安士 + + + {0} 米 / 小時 + + + + + {0} ft² + + + {0}mi² + + + {0} 厘米 + + + {0} 毫米 + + + {0} 安士 + + + {0}" Hg + + + {0}kph + + + {0}m/s + + + {0}mph + + + {0}km³ + + + {0}mi³ + + + + + + + + + + + diff --git a/library/Zend/Locale/Data/zh_Hant_MO.xml b/library/Zend/Locale/Data/zh_Hant_MO.xml new file mode 100755 index 000000000..0646059d9 --- /dev/null +++ b/library/Zend/Locale/Data/zh_Hant_MO.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Umhlaba + i-Africa + i-North America + i-South America + i-Oceania + i-Western Africa + i-Central America + i-Eastern Africa + i-Northern Africa + i-Middle Africa + i-Southern Africa + Americas + i-Northern America + i-Caribbean + i-Eastern Asia + i-Southern Asia + i-South-Eastern Asia + i-Southern Europe + i-Australasia + i-Melanesia + i-Micronesian Region + i-Polynesia + i-Asia + i-Central Asia + i-Western Asia + i-Europe + i-Eastern Europe + i-Northern Europe + i-Western Europe + i-Latin America + i-Ascension Island + i-Andorra + i-United Arab Emirates + i-Afghanistan + i-Antigua and Barbuda + i-Anguilla + i-Albania + i-Armenia + i-Netherlands Antilles + i-Angola + i-Antarctica + i-Argentina + i-American Samoa + i-Austria + i-Australia + i-Aruba + i-Åland Islands + i-Azerbaijan + i-Bosnia ne-Herzegovina + i-Barbados + i-Bangladesh + i-Belgium + i-Burkina Faso + i-Bulgaria + i-Bahrain + i-Burundi + i-Benin + i-Saint Barthélemy + i-Bermuda + i-Brunei + i-Bolivia + i-Caribbean Netherlands + i-Brazil + i-Bahamas + i-Bhutan + i-Bouvet Island + i-Botswana + i-Belarus + i-Belize + i-Canada + i-Cocos (Keeling) Islands + i-Congo - Kinshasa + i-Congo (DRC) + i-Central African Republic + i-Congo - Brazzaville + i-Congo (Republic) + i-Switzerland + i-Côte d’Ivoire + i-Ivory Coast + i-Cook Islands + i-Chile + i-Cameroon + i-China + i-Colombia + i-Clipperton Island + i-Costa Rica + i-Cuba + i-Cape Verde + i-Curaçao + i-Christmas Island + i-Cyprus + i-Czech Republic + i-Germany + i-Diego Garcia + i-Djibouti + i-Denmark + i-Dominica + i-Dominican Republic + i-Algeria + i-Cueta ne-Melilla + i-Ecuador + i-Estonia + i-Egypt + i-Western Sahara + i-Eritrea + i-Spain + i-Ethiopia + i-European Union + i-Finland + i-Fiji + i-Falkland Islands + i-Falkland Islands (Islas Malvinas) + i-Micronesia + i-Faroe Islands + i-France + i-Gabon + i-United Kingdom + i-Grenada + i-Georgia + isi-French Guiana + i-Guernsey + i-Ghana + i-Gibraltar + i-Greenland + i-Gambia + i-Guinea + i-Guadeloupe + i-Equatorial Guinea + i-Greece + i-South Georgia ne-South Sandwich Islands + i-Guatemala + i-Guam + i-Guinea-Bissau + i-Guyana + i-Hong Kong SAR China + i-Hong Kong + i-Heard Island ne-McDonald Islands + i-Honduras + i-Croatia + i-Haiti + i-Hungary + i-Canary Islands + i-Indonesia + i-Ireland + i-Israel + i-Isle of Man + i-India + i-British Indian Ocean Territory + i-Iraq + i-Iran + i-Iceland + i-Italy + i-Jersey + i-Jamaica + i-Jordan + i-Japan + i-Kenya + i-Kyrgyzstan + i-Cambodia + i-Kiribati + i-Comoros + i-Saint Kitts ne-Nevis + i-North Korea + i-South Korea + i-Kuwait + i-Cayman Islands + i-Kazakhstan + i-Laos + i-Lebanon + i-Saint Lucia + i-Liechtenstein + i-Sri Lanka + i-Liberia + i-Lesotho + i-Lithuania + i-Luxembourg + i-Latvia + i-Libya + i-Morocco + i-Monaco + i-Moldova + i-Montenegro + i-Saint Martin + i-Madagascar + i-Marshall Islands + i-Macedonia + i-Macedonia (FYROM) + i-Mali + i-Myanmar (Burma) + i-Mongolia + i-Macau SAR China + i-Macau + i-Northern Mariana Islands + i-Martinique + i-Mauritania + i-Montserrat + i-Malta + i-Mauritius + i-Maldives + i-Malawi + i-Mexico + i-Malaysia + i-Mozambique + i-Namibia + i-New Caledonia + i-Niger + i-Norfolk Island + i-Nigeria + i-Nicaragua + i-Netherlands + i-Norway + i-Nepal + i-Nauru + i-Niue + i-New Zealand + i-Oman + i-Panama + i-Peru + i-French Polynesia + i-Papua New Guinea + i-Philippines + i-Pakistan + i-Poland + i-Saint Pierre kanye ne-Miquelon + i-Pitcairn Islands + i-Puerto Rico + i-Palestinian Territories + i-Phalestine + i-Portugal + i-Palau + i-Paraguay + i-Qatar + i-Outlying Oceania + i-Réunion + i-Romania + i-Serbia + i-Russia + i-Rwanda + i-Saudi Arabia + i-Solomon Islands + i-Seychelles + i-Sudan + i-Sweden + i-Singapore + i-Saint Helena + i-Slovenia + i-Svalbard ne-Jan Mayen + i-Slovakia + i-Sierra Leone + i-San Marino + i-Senegal + i-Somalia + i-Suriname + iNingizimu Sudan + i-São Tomé kanye ne-Príncipe + i-El Salvador + I-Sint Maarten + i-Syria + i-Swaziland + i-Tristan da Cunha + i-Turks and Caicos Islands + i-Chad + i-French Southern Territories + i-Togo + i-Thailand + i-Tajikistan + i-Tokelau + i-Timor-Leste + i-East Timor + i-Turkmenistan + i-Tunisia + i-Tonga + i-Turkey + i-Trinidad ne-Tobago + i-Tuvalu + i-Taiwan + i-Tanzania + i-Ukraine + i-Uganda + i-U.S. Minor Outlying Islands + i-United States + i-Uruguay + i-Uzbekistan + i-Vatican City + i-Saint Vincent ne-Grenadines + i-Venezuela + i-British Virgin Islands + i-U.S. Virgin Islands + i-Vietnam + i-Vanuatu + i-Wallis ne-Futuna + i-Samoa + i-Kosovo + i-Yemen + i-Mayotte + i-South Africa + i-Zambia + i-Zimbabwe + iSifunda esingaziwa + + + Ikhalenda + Ziba Ukuhlelwa Kwezimpawu + Ukuhlelwa Kwendlela Yokubiza Okuhlehlisiwe + Ukuhlelwa Ngokwezinhlamvu Ezinkulu/Ezincane + Ukuhlelwa Okuncike Ezinkinobhweni + Ukuhlela ngokwe-Kana + Uhlelo lokuhlunga + Ukuhlelwa Okulinganisiwe + Ukuhlelwa Ngezinombolo + Amandla Okuhlelwa + Ikharensi + Izinombolo + Izoni yesikhathi: + Okokwehlukanisa Kwasendaweni + Hlela Njengezimpawu + i-Private-Use + + + i-Arabic-Indic Digits + i-Extended Arabic-Indic Digits + i-Armenian Numerals + i-Armenian Lowercase Numerals + i-Bengali Digits + Ukuhlunga kwe-Traditional Chinese - Big5 + i-Buddhist Calender + i-Chinese Calender + i-Coptic Calender + i-Devanagari Digits + Ukuhlunga kwesichazimazwi + Ukuhlunga okuzenzakalelayo kwe-Unicode + i-Ethiopic Numerals + i-Ethipic Calender + i-Ethiopic Amete Alem Calender + Izinombolo Zezomnotho + i-Full Width Digits + Ukuhlunga kwe-Simplified Chinese - GB2312 + i-Georgian Numerals + i-Gregorian Calender + i-Greek Numerals + i-Greek Lowercase Numerals + i-Gujarati Digits + i-Gurmukhi Digits + i-Chinese Decimal Numerals + i-Simplified Chinese Numerals + i-Simplified Chinese Financial Numerals + i-Traditional Chinese Numerals + i-Traditional Chinese Financial Numerals + i-Hebrew Numerals + i-Hebrew Calender + Hlela konke + i-Indian National Calender + i-Islamic Calender + i-Islamic-Civil Calendar + i-Japanese Calendar + i-Japanese Numerals + i-Japanese Financial Numerals + i-Khmer Digits + i-Kannada Digits + i-Lao Digits + i-Western Digits + Hlela Okwezinhlamvu Eziphansi Kuqala + i-Malayalam Digits + i-Mongolian Digits + i-Myanmar Digits + Izinkinobho Zasendaweni + Hlela Izindlela Zokuphimisela Ngokujwayelekile + Hlela Ngokwenhlamvu Ezejwayelekile + Hlela Okungancikile Ezinkinobhweni + Hlela i-Kana Eceleni + Hlela Ngaphandle Kokulinganisa + Hlela Izinhlamvu Zenombolo Ngazinye + Hlela Izimpawu + i-Oriya Digits + i-Persian Calendar + Ukuhlunga kwebhuku lefoni + Hlela Ngokwefonetiki + Ukuhlunga nge-Pinyin + Hlela Izinhlamvu Zaphansi Kuphela + Hlola Ukuphimisela/Ukuma kwezinhlamvu/Ububanzi/i-Kana + Ukuhlunga okwenziwe kabusha + i-Minguo Calender + i-Roman Numerals + i-Roman Lowercase Numerals + Usesho olujwayelekile + Sesha nge-Hangul Ongwaqa Basekuqaleni + Hlela Ukuphimisela + Hlela Ukuziba Izimpawu + I-oda yokuhlunga ejwayelekile + Ukuhlunga kwe-Stroke + i-Tamil Numerals + i-Telegu Digits + Hlela Ukuphimisela/Ukuma kwezinhlamvu/Ububanzi + i-Thai Digits + i-Tibetan Digits + Ukuhlunga ngokisiko + Izinombolo Ezijwayelekile + Ukuhlunga kwe-Radical-Stroke + Hlela Izinhlamvu Ezinkulu Kuqala + Izinhlazu Zezinombolo ze-Vai + Ukuhlelwa Kokuphimisela Kuhlehlisiwe + Hlela Okuncike Ekumeni Kwezinkinobho + Hlela i-Kana Ngendlela Ehlukile + Ukuhlelwa Khekhodi Enye Kulinganisiwe + Hlela Izinhlamvu Ngokwezinombolo + + + I-BGN + Okwezinombolo + Ithoni + I-UNGEGN + Ama-Accent + i-Fullwidth + Ubude obuhhafu + i-Jamo + i-Pinyin + Ukushicilela + + + i-Metric + i-UK + i-US + + + {0} + {0} + {0} + + + + [a b {bh} c {ch} d {dl} {dy} e f g {gc} {gq} {gx} h {hh} {hl} i j k {kh} {kl} {kp} l m n {nc} {ngc} {ngq} {ngx} {nhl} {nk} {nkc} {nkq} {nkx} {nq} {ntsh} {nx} {ny} o p {ph} q {qh} r {rh} s {sh} t {th} {tl} {ts} {tsh} u v w x {xh} y z] + [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ] + [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z] + {0}… + …{0} + {0}…{1} + ? + + + + + + + + + + + + + + EEEE dd MMMM y G + + + + + d MMMM y G + + + + + d MMM y G + + + + + GGGGG y-MM-dd + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + y G + MMM y G + MMM d, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + mm:ss + y G + yM + M/d/y + E, M/d/y + MMM y + MMM d, y + E, MMM d, y + QQQ y + QQQQ y + y G + M/y GGGGG + M/d/y GGGGG + E, M/d/y GGGGG + MMM y G + MMM d, y G + E, MMM d, y G + QQQ y G + QQQQ y G + + + {0} – {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y-y + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM–MMM y + MMM y – MMM y + + + MMM d–d, y + MMM d – MMM d, y + MMM d, y – MMM d, y + + + E, MMM d – E, MMM d, y + E, MMM d – E, MMM d, y + E, MMM d, y – E, MMM d, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + + Jan + Feb + Mas + Apr + Mey + Jun + Jul + Aga + Sep + Okt + Nov + Dis + + + J + F + M + A + M + J + J + A + S + O + N + D + + + Januwari + Februwari + Mashi + Apreli + Meyi + Juni + Julayi + Agasti + Septhemba + Okthoba + Novemba + Disemba + + + + + Jan + Feb + Mas + Apr + Mey + Jun + Jul + Aga + Sep + Okt + Nov + Dis + + + J + F + M + A + M + J + J + A + S + O + N + D + + + uJanuwari + uFebruwari + uMashi + u-Apreli + uMeyi + uJuni + uJulayi + uAgasti + uSepthemba + u-Okthoba + uNovemba + uDisemba + + + + + + + Son + Mso + Bil + Tha + Sin + Hla + Mgq + + + S + M + T + T + S + H + M + + + Isonto + Umsombuluko + Ulwesibili + Ulwesithathu + Ulwesine + Ulwesihlanu + Umgqibelo + + + Sonto + Msombuluko + Lwesibili + Lwesithathu + Lwesine + Lwesihlanu + Mgqibelo + + + + + Son + Mso + Bil + Tha + Sin + Hla + Mgq + + + S + M + B + T + S + H + M + + + Isonto + Umsombuluko + Ulwesibili + Ulwesithathu + Ulwesine + Ulwesihlanu + Umgqibelo + + + Sonto + Msombuluko + Lwesibili + Lwesithathu + Lwesine + Lwesihlanu + Mgqibelo + + + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + ikota engu-1 + ikota engu-2 + ikota engu-3 + ikota engu-4 + + + + + Q1 + Q2 + Q3 + Q4 + + + 1 + 2 + 3 + 4 + + + ikota engu-1 + ikota engu-2 + ikota engu-3 + ikota engu-4 + + + + + + + AM + PM + + + a + p + + + Ekuseni + Ntambama + + + + + + BC + BCE + AD + CE + + + + + + EEEE dd MMMM y + + + + + d MMMM y + + + + + d MMM y + + + + + y-MM-dd + + + + + + + h:mm:ss a zzzz + + + + + h:mm:ss a z + + + + + h:mm:ss a + + + + + h:mm a + + + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + + {1} {0} + + + + d + d E + E h:mm a + E HH:mm + E h:mm:ss a + E HH:mm:ss + y G + MMM y G + MMM d, y G + E, MMM d, y G + h a + HH + h:mm a + HH:mm + h:mm:ss a + HH:mm:ss + L + M/d + E, M/d + LLL + MMM d + E, MMM d + mm:ss + y + M/y + M/d/y + E, M/d/y + MMM y + MMM d, y + E, MMM d, y + QQQ y + QQQQ y + + + {0} – {1} + + d-d + + + h a – h a + h–h a + + + HH–HH + + + h:mm a – h:mm a + h:mm–h:mm a + h:mm–h:mm a + + + HH:mm–HH:mm + HH:mm–HH:mm + + + h:mm a – h:mm a v + h:mm–h:mm a v + h:mm–h:mm a v + + + HH:mm–HH:mm v + HH:mm–HH:mm v + + + h a – h a v + h–h a v + + + HH–HH v + + + M–M + + + M/d – M/d + M/d – M/d + + + E, M/d – E, M/d + E, M/d – E, M/d + + + MMM–MMM + + + MMM d–d + MMM d – MMM d + + + E, MMM d – E, MMM d + E, MMM d – E, MMM d + + + y-y + + + M/y – M/y + M/y – M/y + + + M/d/y – M/d/y + M/d/y – M/d/y + M/d/y – M/d/y + + + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + E, M/d/y – E, M/d/y + + + MMM–MMM y + MMM y – MMM y + + + MMM d–d, y + MMM d – MMM d, y + MMM d, y – MMM d, y + + + E, MMM d – E, MMM d, y + E, MMM d – E, MMM d, y + E, MMM d, y – E, MMM d, y + + + MMMM–MMMM y + MMMM y – MMMM y + + + + + + + + Isikhathi + + + Unyaka + onyakeni odlule + kulo nyaka + unyaka ozayo + + Onyakeni ongu-{0} + Eminyakeni engu-{0} + + + enyakeni ongu-{0} owedlule + iminyaka engu-{0} eyedlule + + + + Inyanga + inyanga edlule + le nyanga + inyanga ezayo + + Enyangeni engu-{0} + Ezinyangeni ezingu-{0} + + + enyangeni engu-{0} eyedlule + ezinyangeni ezingu-{0} ezedlule + + + + Iviki + iviki eledlule + leli viki + iviki elizayo + + Evikini elingu-{0} + Emavikini angu-{0} + + + evikini elingu-{0} eledlule + amaviki angu-{0} adlule + + + + Usuku + Usuku olwandulela olwayizolo + izolo + namhlanje + kusasa + Usuku olulandela olakusasa + + Osukwini olungu-{0} + Ezinsukwini ezingu-{0} + + + osukwini olungu-{0} olwedlule + ezinsukwini ezingu-{0} ezedlule. + + + + Usuku evikini + + + iSonto eledlule + leli Sonto + iSonto elizayo + + + ngoMsombuluko odlule + kulo Msombuluko + uMsombuluko olandelayo + + + uLwesibili odlule + kulo Lwesibili + uLwesibili olandelayo + + + uLwesithathu odlule + lo Lwesithathu + lo Lwesithathu + + + uLwesine odlule + lo Lwesine + uLwesine olandelayo + + + uLwesihlanu odlule + lo Lwesihlanu + uLwesihlanu olandelayo + + + uMgqibelo odlule + lo Mgqibelo + Next Saturday + + + AM/PM + + + Ihora + + Ehoreni elingu-{0} + Emahoreni angu-{0} + + + ehoreni eligu-{0} eledluli + emahoreni angu-{0} edlule + + + + Iminithi + + Kumunithi engu-{0} + Emaminithini angu-{0} + + + eminithini elingu-{0} eledlule + amaminithi angu-{0} adlule + + + + Isekhondi + manje + + Kusekhondi elingu-{0} + Kumasekhondi angu-{0} + + + isekhondi elingu-{0} eledlule + amasekhondi angu-{0} adlule + + + + Isikhathi sendawo + + + + +HH:mm;-HH:mm + GMT{0} + GMT + Isikhathi sase-{0} + {0} Isikhathi sasemini + {0} Isikhathi esijwayelekile + {1} ({0}) + + I-Saint Barthélemy + + + I-St. John’s + + + I-Curaçao + + + I-Asunción + + + I-Réunion + + + I-São Tomé + + + I-Lower Prince's Quarter + + + + Isikhathi sase-Afghanistan + + + + + Isikhathi sase-Central Africa + + + + + Isikhathi saseMpumalanga Afrika + + + + + Isikhathi esivamile saseNingizimu Afrika + + + + + Isikhathi saseNtshonalanga Afrika + Isikhathi esivamile saseNtshonalanga Afrika + Isikhathi sehlobo saseNtshonalanga Afrika + + + + + esase-Alaska Time + esase-Alaska Standard Time + esase-Alaska Daylight Time + + + + + esase-Amazon Time + Isikhathi esivamile sase-Amazon + Isikhathi sehlobo sase-Amazon + + + + + esase-Central Time + esase-Central Standard Time + esase-Central Daylight Time + + + + + esase-Eastern Time + esase-Eastern Standard Time + esase-Eastern Daylight Time + + + + + esase-Mountain Time + esase-Mountain Standard Time + esase-Mountain Daylight Time + + + + + esase-Pacific Time + esase-Pacific Standard Time + esase-Pacific Daylight Time + + + + + esase-Anadyr Time + esase-Anadyr Standard Time + esase-Anadyr Summer Time + + + + + Isikhathi sase-Arabian + Isikhathi esivamile sase-Arabian + Isikhathi semini sase-Arabian + + + + + esase-Argentina Time + Isikhathi esimisiwe sase-Argentina + esase-Argentina Summer Time + + + + + Isikhathi saseNyakatho ne-Argentina + Isikhathi esimisiwe sase-Ntshonalanga ne-Argentina + Isikhathi sasehlobo sase-Ntshonalanga ne-Argentina + + + + + Isikhathi saseArmenia + Isikhathi esezingeni sase-Armenia + Isikhathi sehlobo sase-Armenia + + + + + esase-Atlantic Time + esase-Atlantic Standard Time + esase-Atlantic Daylight Time + + + + + esase-Central Australia Time + esase-Austrilian Central Standard Time + esase-Austrilian Central Daylight Time + + + + + esase-Austrilian Central Western Time + esase-Austrilian Central Western Standard Time + esase-Austrilian Central Western Daylight Time + + + + + esase-Austrilian Eastern Time + esase-Australian Eastern Standard Time + esase-Australian Eastern Daylight Time + + + + + esase-Western Australia Time + esase-Austrilian Western Standard Time + esase-Austrilian Western Daylight Time + + + + + Isikhathi sase-Azerbaijan + Isikhathi esivamile sase-Azerbaijan + Isikhathi sehlobo sase-Azerbaijan + + + + + Isikhathi sase-Azores + Isikhathi esivamile sase-Azores + Isikhathi sehlobo sase-Azores + + + + + Isikhathi sase-Bangladesh + Isikhathi esivamile sase-Bangladesh + Isikhathi sehlobo sase-Bangladesh + + + + + Isikhathi sase-Bhutan + + + + + Isikhathi sase-Bolivia + + + + + esase-Brasilia Time + Isikhathi esimisiwe sase-Brasilia + esase-Brasilia Summer Time + + + + + Isikhathi sase-Brunei Darussalam + + + + + Isikhathi sase-Cape Verde + Isikhathi esezingeni sase-Cape Verde + Isikhathi sehlobo sase-Cape Verde + + + + + Isikhathi esezingeni sase-Chamorro + + + + + Isikhathi sase-Chatham + Isikhathi esivamile sase-Chatham + Isikhathi semini sase-Chatham + + + + + Isikhathi sase-Chile + Isikhathi esivamile sase-Chile + Isikhathi sehlobo sase-Chile + + + + + Isikhathi sase-China + Isikhathi esivamile sase-China + Isikhathi semini sase-China + + + + + esase-Choibalsan Time + Isikhathi Esimisiwe sase-Choibalsan + esase-Choibalsan Summer Time + + + + + Isikhathi sase-Christmas Island + + + + + Isikhathi sase-Cocos Islands + + + + + Isikhathi sase-Colombia + Isikhathi esivamile sase-Colombia + Isikhathi sehlobo sase-Colombia + + + + + Isikhathi sase-Cook Islands + Isikhathi esivamile sase-Cook Islands + Isikhathi esiyingxenye yasehlobo sase-Cook Islands + + + + + Isikhathi sase-Cuba + Isikhathi esivamile sase-Cuba + Isikhathi semini sase-Cuba + + + + + Isikhathi sase-Davis + + + + + Isikhathi sase-Dumont-d’Urville + + + + + Isikhathi sase-East Timor + + + + + Isikhathi sase-Easter Island + Isikhathi esivamile sase-Easter Island + Isikhathi sehlobo sase-Easter Island + + + + + Isikhathi sase-Ecuador + + + + + Isikhathi sase-Central Europe + Isikhathi esivamile sase-Central Europe + Isikhathi sehlobo sase-Central Europe + + + + + Isikhathi sase-Eastern Europe + Isikhathi esivamile sase-Eastern Europe + Isikhathi sehlobo sase-Eastern Europe + + + + + Isikhathi sase-Western Europe + Isikhathi esivamile sase-Western Europe + Isikhathi sehlobo sase-Western Europe + + + + + Isikhathi sase-Falkland Islands + Isikhathi esivamile sase-Falkland Islands + Isikhathi sehlobo sase-Falkland Islands + + + + + Isikhathi sase-Fiji + Isikhathi esivamile sase-Fiji + Isikhathi sehlobo sase-Fiji + + + + + Isikhathi sase-French Guiana + + + + + Isikhathi sase-French Southern and Antarctic + + + + + Isikhathi sase-Galapagos + + + + + Isikhathi sase-Gambier + + + + + Isikhathi sase-Georgia + Isikhathi esivamile sase-Georgia + Isikhathi sehlobo sase-Georgia + + + + + Isikhathi sase-Gilbert Islands + + + + + Isikhathi sase-Greenwich Mean + + + + + Isikhathi sase-East Greenland + Isikhathi esivamile sase-East Greenland + Isikhathi sehlobo sase-East Greenland + + + + + Isikhathi sase-West Greenland + Isikhathi esivamile sase-West Greenland + Isikhathi sehlobo sase-West Greenland + + + + + Isikhathi esivamile sase-Gulf + + + + + Isikhathi sase-Guyana + + + + + Isikathi sase-Hawaii-Aleutian + Isikhathi esivamile sase-Hawaii-Aleutian + Isikhathi semini sase-Hawaii-Aleutian + + + + + Isikhathi sase-Hong Kong + Isikhathi esivamile sase-Hong Kong + Isikhathi sehlobo sase-Hong Kong + + + + + esase-Hovd Time + Isikhathi Esimisiwe sase-Hovd + esase-Hovd Summer Time + + + + + Isikhathi esivamile sase-India + + + + + Isikhathi sase-Indian Ocean + + + + + Isikhathi sase-Indochina + + + + + Isikhathi sase-Central Indonesia + + + + + Isikhathi sase-Eastern Indonesia + + + + + Isikhathi sase-Western Indonesia + + + + + Isikhathi sase-Iran + Isikhathi esivamile sase-Iran + Isikhathi sasemini sase-Iran + + + + + esase-Irkutsk Time + Isikhathi Esimisiwe sase-Irkutsk + esase-Irkutsk Summer Time + + + + + Isikhathi sase-Israel + Isikhathi esivamile sase-Israel + Isikhathi sasemini sase-Israel + + + + + Isikhathi sase-Japan + Isikhathi esivamile sase-Japan + Isikhathi semini sase-Japan + + + + + esase-Petropavlovsk-Kamchatski Time + esase-Petropavlovsk-Kamchatski Standard Time + esase-Petropavlovsk-Kamchatski Summer Time + + + + + Isikhathi sase-Mpumalanga ne-Kazakhstan + + + + + Isikhathi saseNtshonalanga ne-Kazakhstan + + + + + Isikhathi sase-Korea + Isikhathi esisezengeni sase-Korea + Isikhathi semini sase-Korea + + + + + Isikhathi sase-Kosrae + + + + + esase-Krasnoyarsk Time + Isikhathi Esimisiwe sase-Krasnoyarsk + esase-Krasnoyarsk Summer Time + + + + + Isikhathi sase-Kyrgystan + + + + + Isikhathi sase-Line Islands + + + + + esase-Lord Howe Time + esase-Lord Howe Standard Time + esase-Lord Howe Daylight Time + + + + + Isikhathi sase-Macquarie Island + + + + + esase-Magadan Time + Isikhathi Esimisiwe sase-Magadan + esase-Magadan Summer Time + + + + + Isikhathi sase-Malaysia + + + + + Isikhathi sase-Maldives + + + + + Isikhathi sase-Marquesas + + + + + Isikhathi sase-Marshall Islands + + + + + Isikhathi sase-Mauritius + Isikhathi esivamile sase-Mauritius + Isikhathi sehlobo sase-Mauritius + + + + + Isikhathi sase-Mawson + + + + + Isikhathi sase-Ulan Bator + Isikhathi Esimisiwe sase-Ulan Bator + esase-Ulan Bator Summer Time + + + + + esase-Moscow Time + esase-Moscow Standard Time + esase-Moscow Summer Time + + + + + Isikhathi sase-Myanmar + + + + + Isikhathi sase-Nauru + + + + + Isikhathi sase-Nepal + + + + + Isikhathi sase-New Caledonia + Isikhathi esivamile sase-New Caledonia + Isikhathi sehlobo sase-New Caledonia + + + + + Isikhathi sase-New Zealand + Isikhathi esivamile sase-New Zealand + Isikhathi sasemini sase-New Zealand + + + + + esase-Newfoundland Time + esase-Newfoundland Standard Time + esase-Newfoundland Daylight Time + + + + + Isikhathi sase-Niue + + + + + Isikhathi sase-Norfolk Islands + + + + + Isikhathi sase-Fernando de Noronha + Isikhathi esimisiwe sase-Fernando de Noronha + esase-Fernando de Noronha Summer Time + + + + + esase-Novosibirsk Time + Isikhathi Esimisiwe sase-Novosibirsk + esase-Novosibirsk Summer Time + + + + + esase-Omsk Time + Isikhathi Esimisiwe sase-Omsk + esase-Omsk Summer Time + + + + + Isikhathi sase-Pakistan + Isikhathi esivamile sase-Pakistan + Isikhathi sehlobo sase-Pakistan + + + + + Isikhathi sase-Palau + + + + + Isikhathi sase-Papua New Guinea + + + + + Isikhathi sase-Paraguay + Isikhathi esivamile sase-Paraguay + Isikhathi sehlobo sase-Paraguay + + + + + Isikhathi sase-Peru + Isikhathi esivamile sase-Peru + Isikhathi sehlobo sase-Peru + + + + + Isikhathi sase-Philippine + Isikhathi esivamile sase-Philippine + Isikhathi sehlobo sase-Philippine + + + + + Isikhathi sase-Phoenix Islands + + + + + Isikhathi sase-Saint Pierre kanye ne-Miquelon + Isikhathi esivamile sase-Saint Pierre kanye ne-Miquelon + Isikhathi semini sase-Saint Pierre kanye ne-Miquelon + + + + + Isikhathi sase-Pitcairn + + + + + Isikhathi sase-Ponape + + + + + Isikhathi sase-Reunion + + + + + Isikhathi sase-Rothera + + + + + esase-Sakhalin Time + Isikhathi Esimisiwe sase-Sakhalin + esase-Sakhalin Summer Time + + + + + esase-Samara Time + esase-Samara Standard Time + esase-Samara Summer Time + + + + + Isikhathi sase-Samoa + Isikhathi esivamile sase-Samoa + Isikhathi sehlobo sase-Samoa + + + + + Isikhathi sase-Seychelles + + + + + Isikhathi esivamile sase-Singapore + + + + + Isikhathi sase-Solomon Islands + + + + + Isikhathi sase-South Georgia + + + + + Isikhathi sase-Suriname + + + + + Isikhathi sase-Syowa + + + + + Isikhathi sase-Tahiti + + + + + Isikhathi sase-Taipei + Isikhathi esivamile sase-Taipei + Isikhathi semini sase-Taipei + + + + + Isikhathi sase-Tajikistan + + + + + Isikhathi sase-Tokelau + + + + + Isikhathi sase-Tonga + Isikhathi esivamile sase-Tonga + Isikhathi sehlobo sase-Tonga + + + + + Isikhathi sase-Chuuk + + + + + Isikhathi sase-Turkmenistan + Isikhathi esivamile sase-Turkmenistan + Isikhathi sehlobo sase-Turkmenistan + + + + + Isikhathi sase-Tuvalu + + + + + Isikhathi sase-Uruguay + Isikhathi esivamile sase-Uruguay + Isikhathi sehlobo sase-Uruguay + + + + + Isikhathi sase-Uzbekistan + Isikhathi esivamile sase-Uzbekistan + Isikhathi sehlobo sase-Uzbekistan + + + + + Isikhathi sase-Vanuatu + Isikhathi esivamile sase-Vanuatu + Isikhathi sehlobo sase-Vanuatu + + + + + Isikhathi sase-Venezuela + + + + + esase-Vladivostok Time + Isikhathi Esimisiwe sase-Vladivostok + esase-Vladivostok Summer Time + + + + + esase-Volgograd Time + Isikhathi Esimisiwe sase-Volgograd + esase-Volgograd Summer Time + + + + + Isikhathi sase-Vostok + + + + + Isikhathi sase-Wake Island + + + + + Isikhathi sase-Wallis and Futuna + + + + + esase-Yakutsk Time + Isikhathi Esimisiwe sase-Yakutsk + esase-Yakutsk Summer Time + + + + + esase-Yekaterinburg Time + Isikhathi Esimisiwe sase-Yekaterinburg + esase-Yekaterinburg Summer Time + + + + + + + . + , + ; + % + + + - + E + × + + + I-NaN + + + + + #,##0.### + + + + + 0 inkulungwane + 0 inkulungwane + 00 inkulungwane + 00 inkulungwane + 000 inkulungwane + 000 inkulungwane + 0 isigidi + 0 isigidi + 00 isigidi + 00 isigidi + 000 isigidi + 000 isigidi + 0 isigidi sezigidi + 0 isigidi sezigidi + 00 isigidi sezigidi + 00 isigidi sezigidi + 000 isigidi sezigidi + 000 isigidi sezigidi + 0 isigidintathu + 0 isigidintathu + 00 isigidintathu + 00 isigidintathu + 000 isigidintathu + 000 isigidintathu + + + + + 0K + 0K + 00K + 00K + 000K + 000K + 0M + 0M + 00M + 00M + 000M + 000M + 0B + 0B + 00B + 00B + 000B + 000B + 0T + 0T + 00T + 00T + 000T + 000T + + + + + + + #E0 + + + + + + + #,##0% + + + + + + + ¤#,##0.00 + + + ¤#,##0.00;(¤#,##0.00) + + + {0} {1} + {0} {1} + + + + i-Dirham yase-United Arab Emirates + + + i-Afghan Afghani + + + i-Albanian Lek + + + i-Armenian Dram + + + i-Netherlands Antillean Guilder + + + i-Angolan Kwanza + + + i-Argentina Peso + + + i-Austrilian Dollar + + + i-Aruban Florin + + + i-Azerbaijani Manat + + + i-Bosnia-Herzegovina Convertible Mark + + + i-Barbadian Dollar + + + i-Bangladeshi Taka + + + i-Bulgarian Lev + + + i-Bahraini Dinar + + + i-Burundian Franc + + + i-Bermudan Dollar + + + i-Brunei Dollar + + + i-Bolivian Boliviano + + + i-Brazilian Real + + + i-Bahamian Dollar + + + i-Bhutanese Ngultrum + + + i-Botswana Pula + + + i-Belarusian Ruble + + + i-Belize Dollar + + + i-Candian Dollar + + + i-Congolese Franc + + + i-Swiss Franc + + + i-Chilean Peso + + + i-Chinese Yuan + + + i-Colombian Peso + + + i-Costa Rican Colón + + + i-Cuban Convertable Peso + + + I-Cuban Peso + + + i-Cape Verdean Escudo + + + i-Czech Republic Koruna + + + i-Djiboutian Franc + + + i-Danish Krone + + + i-Dominican Peso + + + i-Algerian Dinar + + + i-Egyptian Pound + + + i-Eritrean Nakfa + + + i-Ethopian Birr + + + i-Euro + + + i-Fijian Dollar + + + i-Falkland Islands Pound + + + i-British Pound Sterling + + + i-Georgian Lari + + + i-Ghanaian Cedi + + + i-Gibraltar Pound + + + i-Gambian Dalasi + + + i-Gunean Franc + + + i-Guatemalan Quetzal + + + i-Guyanaese Dollar + + + i-Hong Kong Dollar + + + i-Honduran Lempira + + + i-Croatian Kuna + + + i-Haitian Gourde + + + i-Hungarian Forint + + + i-Indonesian Rupiah + + + i-Israeli New Sheqel + + + i-Indian Rupee + + + i-Iraqi Dinar + + + i-Iranian Rial + + + i-Icelandic Króna + + + i-Jamaican Dollar + + + i-Jordanian Dinar + + + i-Japanese Yen + + + i-Kenyan Shilling + + + i-Kyrgystani Som + + + i-Cambodian Riel + + + i-Comorian Franc + + + i-North Korean Won + + + i-South Korean Won + + + i-Kuwaiti Dinar + + + i-Cayman Islands Dollar + + + i-Kazakhstani Tenge + + + i-Laotian Kip + + + i-Lebanese Pound + + + i-Sri Lankan Rupee + + + i-Liberian Dollar + + + i-Lesotho Loti + + + i-Lithuanian Litas + + + i-Latvian Lats + + + i-Libyan Dinar + + + i-Moroccan Dirham + + + i-Moldovan Leu + + + i-Malagasy Ariary + + + i-Macedonian Denar + + + i-Myanma Kyat + + + i-Mongolian Tugrik + + + i-Macanese Pataca + + + i-Mauritanian Ouguiya + + + i-Mauritian Rupee + + + i-Maldivian Rufiyana + + + i-Malawian Kwacha + + + i-Mexican Peso + + + i-Malaysian Ringgit + + + I-Metical yase-Mozambicque + + + i-Namibian Dollar + + + i-Nigerian Naira + + + i-Nicaraguan Córdoba + + + i-Norwegian Krone + + + i-Nepalese Rupee + + + i-New Zealand Dollar + + + i-Omani Rial + + + i-Panamanian Balboa + + + i-Peruvian Nuevo Sol + + + i-Papua New Guinean Kina + + + i-Philippine Peso + + + i-Pakistani Rupee + + + i-Polish Zloty + + + i-Paraguayan Guarani + + + i-Qatari Rial + + + I-Romanian Leu + + + i-Serbian Dinar + + + i-Russian Ruble + + + i-Rwandan Franc + + + i-Saudi Riyal + + + i-Solomon Islands Dollar + + + i-Seychellois Rupee + + + i-Sudanese Pound + + + i-Swedish Krona + + + i-Singapore Dollar + + + i-Saint Helena Pound + + + i-Sierra Leonean Leone + + + i-Somali Shilling + + + i-Surinamese Dollar + + + Upondo waseNingizimu Sudan + + + i-São Tomé kanye ne-Príncipe Dobra + + + i-Syrian Pound + + + i-Swazi Lilangeni + + + i-Thai Baht + + + i-Tajikistani Somoni + + + i-Turkmenistani Manat + + + i-Tunisian Dinar + + + i-Tongan Paʻanga + + + i-Turkish Lira + + + Idola lase-Trinidad nase-Tobago + + + i-New Taiwan Dollar + + + i-Tanzanian Shilling + + + i-Ukrainian Hryvnia + + + i-Ugandan Shilling + + + i-US Dollar + + + i-Uruguayan Peso + + + i-Uzbekistan Som + + + i-Venezuelan Bolívar + + + i-Vietnamese Dong + + + i-Vanuatu Vatu + + + i-Samoan Tala + + + i-CFA Franc BCEA + + + i-East Caribbean Dollar + + + i-CFA Franc BCEAO + + + i-CFP Franc + + + Imali engaziwa + + + i-Yemeni Rial + + + i-South African Rand + R + + + i-Zambian Kwacha (1968–2012) + + + i-Zambian Kwacha + + + + + + + {0} nge-{1} + + + {0} g-force + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + usuku olungu-{0} + {0} izinsuku + + + ihora elingu-{0} + {0} amahora + + + {0} ms + {0} ms + + + iminithi elingu-{0} + {0} amaminithi + + + inyana engu-{0} + {0} izinyanga + + + isekhondi elingu-{0} + {0} amasekhondi + + + iviki elingu-{0} + {0} amaviki + + + {0} y + {0} y + + + {0} cm + {0} cm + + + {0} km + {0} km + + + {0} m + {0} m + + + {0} mm + {0} mm + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} km/h + {0} km/h + + + {0}°C + {0}°C + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} usuku + {0} izinsuku + + + {0} hora + {0} amahora + + + {0} ms + {0} ms + + + {0} iminithi + {0} amaminithi + + + {0} nyanga + {0} izinyanga + + + {0} sekhondi + {0} s + + + {0} viki + {0} amaviki + + + {0} y + {0} yrs + + + {0} cm + {0} cm + + + {0} km + {0} km + + + {0} m + {0} m + + + {0} mm + {0} mm + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} km/h + {0} km/h + + + {0}°C + {0}°C + + + {0} l + {0} l + + + + + {0}/{1} + + + {0} G + {0} G + + + {0}′ + {0}′ + + + {0}″ + {0}″ + + + {0}° + {0}° + + + {0} + {0} suku + + + {0} hora + {0} hora + + + {0} ms + {0} ms + + + {0} min + {0} min + + + {0} m + {0} m + + + {0} s + {0} s + + + {0} w + {0} w + + + {0} y + {0} y + + + {0} cm + {0} cm + + + {0} km + {0} km + + + {0} m + {0} m + + + {0} mm + {0} mm + + + {0} g + {0} g + + + {0} kg + {0} kg + + + {0} km/h + {0} km/h + + + {0}° + {0}° + + + {0}°F + {0}°F + + + {0} l + {0} l + + + + h:mm + + + h:mm:ss + + + m:ss + + + + + {0}, {1} + {0}, {1} + {0}, no-{1} + I-{0} ne-{1} + + + + + yebo:y + cha:c + + + + diff --git a/library/Zend/Locale/Data/zu_ZA.xml b/library/Zend/Locale/Data/zu_ZA.xml new file mode 100755 index 000000000..7f9981e44 --- /dev/null +++ b/library/Zend/Locale/Data/zu_ZA.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/library/Zend/Locale/Exception.php b/library/Zend/Locale/Exception.php new file mode 100755 index 000000000..a6e869aea --- /dev/null +++ b/library/Zend/Locale/Exception.php @@ -0,0 +1,37 @@ + null, + 'number_format' => null, + 'format_type' => 'iso', + 'fix_date' => false, + 'locale' => null, + 'cache' => null, + 'disableCache' => null, + 'precision' => null); + + /** + * Sets class wide options, if no option was given, the actual set options will be returned + * The 'precision' option of a value is used to truncate or stretch extra digits. -1 means not to touch the extra digits. + * The 'locale' option helps when parsing numbers and dates using separators and month names. + * The date format 'format_type' option selects between CLDR/ISO date format specifier tokens and PHP's date() tokens. + * The 'fix_date' option enables or disables heuristics that attempt to correct invalid dates. + * The 'number_format' option can be used to specify a default number format string + * The 'date_format' option can be used to specify a default date format string, but beware of using getDate(), + * checkDateFormat() and getTime() after using setOptions() with a 'format'. To use these four methods + * with the default date format for a locale, use array('date_format' => null, 'locale' => $locale) for their options. + * + * @param array $options Array of options, keyed by option name: format_type = 'iso' | 'php', fix_date = true | false, + * locale = Zend_Locale | locale string, precision = whole number between -1 and 30 + * @throws Zend_Locale_Exception + * @return array if no option was given + */ + public static function setOptions(array $options = array()) + { + self::$_options = self::_checkOptions($options) + self::$_options; + return self::$_options; + } + + /** + * Internal function for checking the options array of proper input values + * See {@link setOptions()} for details. + * + * @param array $options Array of options, keyed by option name: format_type = 'iso' | 'php', fix_date = true | false, + * locale = Zend_Locale | locale string, precision = whole number between -1 and 30 + * @throws Zend_Locale_Exception + * @return array if no option was given + */ + private static function _checkOptions(array $options = array()) + { + if (count($options) == 0) { + return self::$_options; + } + foreach ($options as $name => $value) { + $name = strtolower($name); + if ($name !== 'locale') { + if (gettype($value) === 'string') { + $value = strtolower($value); + } + } + + switch($name) { + case 'number_format' : + if ($value == Zend_Locale_Format::STANDARD) { + $locale = self::$_options['locale']; + if (isset($options['locale'])) { + $locale = $options['locale']; + } + $options['number_format'] = Zend_Locale_Data::getContent($locale, 'decimalnumber'); + } else if ((gettype($value) !== 'string') and ($value !== NULL)) { + require_once 'Zend/Locale/Exception.php'; + $stringValue = (string)(is_array($value) ? implode(' ', $value) : $value); + throw new Zend_Locale_Exception("Unknown number format type '" . gettype($value) . "'. " + . "Format '$stringValue' must be a valid number format string."); + } + break; + + case 'date_format' : + if ($value == Zend_Locale_Format::STANDARD) { + $locale = self::$_options['locale']; + if (isset($options['locale'])) { + $locale = $options['locale']; + } + $options['date_format'] = Zend_Locale_Format::getDateFormat($locale); + } else if ((gettype($value) !== 'string') and ($value !== NULL)) { + require_once 'Zend/Locale/Exception.php'; + $stringValue = (string)(is_array($value) ? implode(' ', $value) : $value); + throw new Zend_Locale_Exception("Unknown dateformat type '" . gettype($value) . "'. " + . "Format '$stringValue' must be a valid ISO or PHP date format string."); + } else { + if (((isset($options['format_type']) === true) and ($options['format_type'] == 'php')) or + ((isset($options['format_type']) === false) and (self::$_options['format_type'] == 'php'))) { + $options['date_format'] = Zend_Locale_Format::convertPhpToIsoFormat($value); + } + } + break; + + case 'format_type' : + if (($value != 'php') && ($value != 'iso')) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unknown date format type '$value'. Only 'iso' and 'php'" + . " are supported."); + } + break; + + case 'fix_date' : + if (($value !== true) && ($value !== false)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Enabling correction of dates must be either true or false" + . "(fix_date='$value')."); + } + break; + + case 'locale' : + $options['locale'] = Zend_Locale::findLocale($value); + break; + + case 'cache' : + if ($value instanceof Zend_Cache_Core) { + Zend_Locale_Data::setCache($value); + } + break; + + case 'disablecache' : + if (null !== $value) { + Zend_Locale_Data::disableCache($value); + } + break; + + case 'precision' : + if ($value === NULL) { + $value = -1; + } + + if (($value < -1) || ($value > 30)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("'$value' precision is not a whole number less than 30."); + } + break; + + default: + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unknown option: '$name' = '$value'"); + break; + + } + } + + return $options; + } + + /** + * Changes the numbers/digits within a given string from one script to another + * 'Decimal' representated the stardard numbers 0-9, if a script does not exist + * an exception will be thrown. + * + * Examples for conversion from Arabic to Latin numerals: + * convertNumerals('١١٠ Tests', 'Arab'); -> returns '100 Tests' + * Example for conversion from Latin to Arabic numerals: + * convertNumerals('100 Tests', 'Latn', 'Arab'); -> returns '١١٠ Tests' + * + * @param string $input String to convert + * @param string $from Script to parse, see {@link Zend_Locale::getScriptList()} for details. + * @param string $to OPTIONAL Script to convert to + * @return string Returns the converted input + * @throws Zend_Locale_Exception + */ + public static function convertNumerals($input, $from, $to = null) + { + if (!self::_getUniCodeSupport()) { + trigger_error("Sorry, your PCRE extension does not support UTF8 which is needed for the I18N core", E_USER_NOTICE); + } + + $from = strtolower($from); + $source = Zend_Locale_Data::getContent('en', 'numberingsystem', $from); + if (empty($source)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unknown script '$from'. Use 'Latn' for digits 0,1,2,3,4,5,6,7,8,9."); + } + + if ($to !== null) { + $to = strtolower($to); + $target = Zend_Locale_Data::getContent('en', 'numberingsystem', $to); + if (empty($target)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unknown script '$to'. Use 'Latn' for digits 0,1,2,3,4,5,6,7,8,9."); + } + } else { + $target = '0123456789'; + } + + for ($x = 0; $x < 10; ++$x) { + $asource[$x] = "/" . iconv_substr($source, $x, 1, 'UTF-8') . "/u"; + $atarget[$x] = iconv_substr($target, $x, 1, 'UTF-8'); + } + + return preg_replace($asource, $atarget, $input); + } + + /** + * Returns the normalized number from a localized one + * Parsing depends on given locale (grouping and decimal) + * + * Examples for input: + * '2345.4356,1234' = 23455456.1234 + * '+23,3452.123' = 233452.123 + * '12343 ' = 12343 + * '-9456' = -9456 + * '0' = 0 + * + * @param string $input Input string to parse for numbers + * @param array $options Options: locale, precision. See {@link setOptions()} for details. + * @return string Returns the extracted number + * @throws Zend_Locale_Exception + */ + public static function getNumber($input, array $options = array()) + { + $options = self::_checkOptions($options) + self::$_options; + if (!is_string($input)) { + return $input; + } + + if (!self::isNumber($input, $options)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception('No localized value in ' . $input . ' found, or the given number does not match the localized format'); + } + + // Get correct signs for this locale + $symbols = Zend_Locale_Data::getList($options['locale'],'symbols'); + // Change locale input to be default number + if (($input[0] == $symbols['minus']) && ('-' != $input[0])) { + $input = '-' . substr($input, 1); + } + + $input = str_replace($symbols['group'],'', $input); + if (strpos($input, $symbols['decimal']) !== false) { + if ($symbols['decimal'] != '.') { + $input = str_replace($symbols['decimal'], ".", $input); + } + + $pre = substr($input, strpos($input, '.') + 1); + if ($options['precision'] === null) { + $options['precision'] = strlen($pre); + } + + if (strlen($pre) >= $options['precision']) { + $input = substr($input, 0, strlen($input) - strlen($pre) + $options['precision']); + } + + if (($options['precision'] == 0) && ($input[strlen($input) - 1] == '.')) { + $input = substr($input, 0, -1); + } + } + + return $input; + } + + /** + * Returns a locale formatted number depending on the given options. + * The seperation and fraction sign is used from the set locale. + * ##0.# -> 12345.12345 -> 12345.12345 + * ##0.00 -> 12345.12345 -> 12345.12 + * ##,##0.00 -> 12345.12345 -> 12,345.12 + * + * @param string $value Localized number string + * @param array $options Options: number_format, locale, precision. See {@link setOptions()} for details. + * @return string locale formatted number + * @throws Zend_Locale_Exception + */ + public static function toNumber($value, array $options = array()) + { + // load class within method for speed + require_once 'Zend/Locale/Math.php'; + + $value = Zend_Locale_Math::floatalize($value); + $value = Zend_Locale_Math::normalize($value); + $options = self::_checkOptions($options) + self::$_options; + $options['locale'] = (string) $options['locale']; + + // Get correct signs for this locale + $symbols = Zend_Locale_Data::getList($options['locale'], 'symbols'); + $oenc = self::_getEncoding(); + self::_setEncoding('UTF-8'); + + // Get format + $format = $options['number_format']; + if ($format === null) { + $format = Zend_Locale_Data::getContent($options['locale'], 'decimalnumber'); + $format = self::_seperateFormat($format, $value, $options['precision']); + + if ($options['precision'] !== null) { + $value = Zend_Locale_Math::normalize(Zend_Locale_Math::round($value, $options['precision'])); + } + } else { + // seperate negative format pattern when available + $format = self::_seperateFormat($format, $value, $options['precision']); + if (strpos($format, '.')) { + if (is_numeric($options['precision'])) { + $value = Zend_Locale_Math::round($value, $options['precision']); + } else { + if (substr($format, iconv_strpos($format, '.') + 1, 3) == '###') { + $options['precision'] = null; + } else { + $options['precision'] = iconv_strlen(iconv_substr($format, iconv_strpos($format, '.') + 1, + iconv_strrpos($format, '0') - iconv_strpos($format, '.'))); + $format = iconv_substr($format, 0, iconv_strpos($format, '.') + 1) . '###' + . iconv_substr($format, iconv_strrpos($format, '0') + 1); + } + } + } else { + $value = Zend_Locale_Math::round($value, 0); + $options['precision'] = 0; + } + $value = Zend_Locale_Math::normalize($value); + } + + if (iconv_strpos($format, '0') === false) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception('Wrong format... missing 0'); + } + + // get number parts + $pos = iconv_strpos($value, '.'); + if ($pos !== false) { + if ($options['precision'] === null) { + $precstr = iconv_substr($value, $pos + 1); + } else { + $precstr = iconv_substr($value, $pos + 1, $options['precision']); + if (iconv_strlen($precstr) < $options['precision']) { + $precstr = $precstr . str_pad("0", ($options['precision'] - iconv_strlen($precstr)), "0"); + } + } + } else { + if ($options['precision'] > 0) { + $precstr = str_pad("0", ($options['precision']), "0"); + } + } + + if ($options['precision'] === null) { + if (isset($precstr)) { + $options['precision'] = iconv_strlen($precstr); + } else { + $options['precision'] = 0; + } + } + + // get fraction and format lengths + if (strpos($value, '.') !== false) { + $number = substr((string) $value, 0, strpos($value, '.')); + } else { + $number = $value; + } + + $prec = call_user_func(Zend_Locale_Math::$sub, $value, $number, $options['precision']); + $prec = Zend_Locale_Math::floatalize($prec); + $prec = Zend_Locale_Math::normalize($prec); + if (iconv_strpos($prec, '-') !== false) { + $prec = iconv_substr($prec, 1); + } + + if (($prec == 0) and ($options['precision'] > 0)) { + $prec = "0.0"; + } + + if (($options['precision'] + 2) > iconv_strlen($prec)) { + $prec = str_pad((string) $prec, $options['precision'] + 2, "0", STR_PAD_RIGHT); + } + + if (iconv_strpos($number, '-') !== false) { + $number = iconv_substr($number, 1); + } + $group = iconv_strrpos($format, ','); + $group2 = iconv_strpos ($format, ','); + $point = iconv_strpos ($format, '0'); + // Add fraction + $rest = ""; + if (iconv_strpos($format, '.')) { + $rest = iconv_substr($format, iconv_strpos($format, '.') + 1); + $length = iconv_strlen($rest); + for($x = 0; $x < $length; ++$x) { + if (($rest[0] == '0') || ($rest[0] == '#')) { + $rest = iconv_substr($rest, 1); + } + } + $format = iconv_substr($format, 0, iconv_strlen($format) - iconv_strlen($rest)); + } + + if ($options['precision'] == '0') { + if (iconv_strrpos($format, '-') != 0) { + $format = iconv_substr($format, 0, $point) + . iconv_substr($format, iconv_strrpos($format, '#') + 2); + } else { + $format = iconv_substr($format, 0, $point); + } + } else { + $format = iconv_substr($format, 0, $point) . $symbols['decimal'] + . iconv_substr($prec, 2); + } + + $format .= $rest; + // Add seperation + if ($group == 0) { + // no seperation + $format = $number . iconv_substr($format, $point); + } else if ($group == $group2) { + // only 1 seperation + $seperation = ($point - $group); + for ($x = iconv_strlen($number); $x > $seperation; $x -= $seperation) { + if (iconv_substr($number, 0, $x - $seperation) !== "") { + $number = iconv_substr($number, 0, $x - $seperation) . $symbols['group'] + . iconv_substr($number, $x - $seperation); + } + } + $format = iconv_substr($format, 0, iconv_strpos($format, '#')) . $number . iconv_substr($format, $point); + } else { + + // 2 seperations + if (iconv_strlen($number) > ($point - $group)) { + $seperation = ($point - $group); + $number = iconv_substr($number, 0, iconv_strlen($number) - $seperation) . $symbols['group'] + . iconv_substr($number, iconv_strlen($number) - $seperation); + + if ((iconv_strlen($number) - 1) > ($point - $group + 1)) { + $seperation2 = ($group - $group2 - 1); + for ($x = iconv_strlen($number) - $seperation2 - 2; $x > $seperation2; $x -= $seperation2) { + $number = iconv_substr($number, 0, $x - $seperation2) . $symbols['group'] + . iconv_substr($number, $x - $seperation2); + } + } + + } + $format = iconv_substr($format, 0, iconv_strpos($format, '#')) . $number . iconv_substr($format, $point); + } + // set negative sign + if (call_user_func(Zend_Locale_Math::$comp, $value, 0, $options['precision']) < 0) { + if (iconv_strpos($format, '-') === false) { + $format = $symbols['minus'] . $format; + } else { + $format = str_replace('-', $symbols['minus'], $format); + } + } + + self::_setEncoding($oenc); + return (string) $format; + } + + /** + * @param string $format + * @param string $value + * @param int $precision + * @return string + */ + private static function _seperateFormat($format, $value, $precision) + { + if (iconv_strpos($format, ';') !== false) { + if (call_user_func(Zend_Locale_Math::$comp, $value, 0, $precision) < 0) { + $tmpformat = iconv_substr($format, iconv_strpos($format, ';') + 1); + if ($tmpformat[0] == '(') { + $format = iconv_substr($format, 0, iconv_strpos($format, ';')); + } else { + $format = $tmpformat; + } + } else { + $format = iconv_substr($format, 0, iconv_strpos($format, ';')); + } + } + + return $format; + } + + + /** + * Checks if the input contains a normalized or localized number + * + * @param string $input Localized number string + * @param array $options Options: locale. See {@link setOptions()} for details. + * @return boolean Returns true if a number was found + */ + public static function isNumber($input, array $options = array()) + { + if (!self::_getUniCodeSupport()) { + trigger_error("Sorry, your PCRE extension does not support UTF8 which is needed for the I18N core", E_USER_NOTICE); + } + + $options = self::_checkOptions($options) + self::$_options; + + // Get correct signs for this locale + $symbols = Zend_Locale_Data::getList($options['locale'],'symbols'); + + $regexs = Zend_Locale_Format::_getRegexForType('decimalnumber', $options); + $regexs = array_merge($regexs, Zend_Locale_Format::_getRegexForType('scientificnumber', $options)); + if (!empty($input) && ($input[0] == $symbols['decimal'])) { + $input = 0 . $input; + } + foreach ($regexs as $regex) { + preg_match($regex, $input, $found); + if (isset($found[0])) { + return true; + } + } + + return false; + } + + /** + * Internal method to convert cldr number syntax into regex + * + * @param string $type + * @param array $options Options: locale. See {@link setOptions()} for details. + * @return string + * @throws Zend_Locale_Exception + */ + private static function _getRegexForType($type, $options) + { + $decimal = Zend_Locale_Data::getContent($options['locale'], $type); + $decimal = preg_replace('/[^#0,;\.\-Ee]/u', '',$decimal); + $patterns = explode(';', $decimal); + + if (count($patterns) == 1) { + $patterns[1] = '-' . $patterns[0]; + } + + $symbols = Zend_Locale_Data::getList($options['locale'],'symbols'); + + foreach($patterns as $pkey => $pattern) { + $regex[$pkey] = '/^'; + $rest = 0; + $end = null; + if (strpos($pattern, '.') !== false) { + $end = substr($pattern, strpos($pattern, '.') + 1); + $pattern = substr($pattern, 0, -strlen($end) - 1); + } + + if (strpos($pattern, ',') !== false) { + $parts = explode(',', $pattern); + $count = count($parts); + foreach($parts as $key => $part) { + switch ($part) { + case '#': + case '-#': + if ($part[0] == '-') { + $regex[$pkey] .= '[' . $symbols['minus'] . '-]{0,1}'; + } else { + $regex[$pkey] .= '[' . $symbols['plus'] . '+]{0,1}'; + } + + if (($parts[$key + 1]) == '##0') { + $regex[$pkey] .= '[0-9]{1,3}'; + } else if (($parts[$key + 1]) == '##') { + $regex[$pkey] .= '[0-9]{1,2}'; + } else { + throw new Zend_Locale_Exception('Unsupported token for numberformat (Pos 1):"' . $pattern . '"'); + } + break; + case '##': + if ($parts[$key + 1] == '##0') { + $regex[$pkey] .= '(\\' . $symbols['group'] . '{0,1}[0-9]{2})*'; + } else { + throw new Zend_Locale_Exception('Unsupported token for numberformat (Pos 2):"' . $pattern . '"'); + } + break; + case '##0': + if ($parts[$key - 1] == '##') { + $regex[$pkey] .= '[0-9]'; + } else if (($parts[$key - 1] == '#') || ($parts[$key - 1] == '-#')) { + $regex[$pkey] .= '(\\' . $symbols['group'] . '{0,1}[0-9]{3})*'; + } else { + throw new Zend_Locale_Exception('Unsupported token for numberformat (Pos 3):"' . $pattern . '"'); + } + break; + case '#0': + if ($key == 0) { + $regex[$pkey] .= '[0-9]*'; + } else { + throw new Zend_Locale_Exception('Unsupported token for numberformat (Pos 4):"' . $pattern . '"'); + } + break; + } + } + } + + if (strpos($pattern, 'E') !== false) { + if (($pattern == '#E0') || ($pattern == '#E00')) { + $regex[$pkey] .= '[' . $symbols['plus']. '+]{0,1}[0-9]{1,}(\\' . $symbols['decimal'] . '[0-9]{1,})*[eE][' . $symbols['plus']. '+]{0,1}[0-9]{1,}'; + } else if (($pattern == '-#E0') || ($pattern == '-#E00')) { + $regex[$pkey] .= '[' . $symbols['minus']. '-]{0,1}[0-9]{1,}(\\' . $symbols['decimal'] . '[0-9]{1,})*[eE][' . $symbols['minus']. '-]{0,1}[0-9]{1,}'; + } else { + throw new Zend_Locale_Exception('Unsupported token for numberformat (Pos 5):"' . $pattern . '"'); + } + } + + if (!empty($end)) { + if ($end == '###') { + $regex[$pkey] .= '(\\' . $symbols['decimal'] . '{1}[0-9]{1,}){0,1}'; + } else if ($end == '###-') { + $regex[$pkey] .= '(\\' . $symbols['decimal'] . '{1}[0-9]{1,}){0,1}[' . $symbols['minus']. '-]'; + } else { + throw new Zend_Locale_Exception('Unsupported token for numberformat (Pos 6):"' . $pattern . '"'); + } + } + + $regex[$pkey] .= '$/u'; + } + + return $regex; + } + + /** + * Alias for getNumber + * + * @param string $input Number to localize + * @param array $options Options: locale, precision. See {@link setOptions()} for details. + * @return float + */ + public static function getFloat($input, array $options = array()) + { + return floatval(self::getNumber($input, $options)); + } + + /** + * Returns a locale formatted integer number + * Alias for toNumber() + * + * @param string $value Number to normalize + * @param array $options Options: locale, precision. See {@link setOptions()} for details. + * @return string Locale formatted number + */ + public static function toFloat($value, array $options = array()) + { + $options['number_format'] = Zend_Locale_Format::STANDARD; + return self::toNumber($value, $options); + } + + /** + * Returns if a float was found + * Alias for isNumber() + * + * @param string $value Localized number string + * @param array $options Options: locale. See {@link setOptions()} for details. + * @return boolean Returns true if a number was found + */ + public static function isFloat($value, array $options = array()) + { + return self::isNumber($value, $options); + } + + /** + * Returns the first found integer from an string + * Parsing depends on given locale (grouping and decimal) + * + * Examples for input: + * ' 2345.4356,1234' = 23455456 + * '+23,3452.123' = 233452 + * ' 12343 ' = 12343 + * '-9456km' = -9456 + * '0' = 0 + * '(-){0,1}(\d+(\.){0,1})*(\,){0,1})\d+' + * + * @param string $input Input string to parse for numbers + * @param array $options Options: locale. See {@link setOptions()} for details. + * @return integer Returns the extracted number + */ + public static function getInteger($input, array $options = array()) + { + $options['precision'] = 0; + return intval(self::getFloat($input, $options)); + } + + /** + * Returns a localized number + * + * @param string $value Number to normalize + * @param array $options Options: locale. See {@link setOptions()} for details. + * @return string Locale formatted number + */ + public static function toInteger($value, array $options = array()) + { + $options['precision'] = 0; + $options['number_format'] = Zend_Locale_Format::STANDARD; + return self::toNumber($value, $options); + } + + /** + * Returns if a integer was found + * + * @param string $value Localized number string + * @param array $options Options: locale. See {@link setOptions()} for details. + * @return boolean Returns true if a integer was found + */ + public static function isInteger($value, array $options = array()) + { + if (!self::isNumber($value, $options)) { + return false; + } + + if (self::getInteger($value, $options) == self::getFloat($value, $options)) { + return true; + } + + return false; + } + + /** + * Converts a format string from PHP's date format to ISO format + * Remember that Zend Date always returns localized string, so a month name which returns the english + * month in php's date() will return the translated month name with this function... use 'en' as locale + * if you are in need of the original english names + * + * The conversion has the following restrictions: + * 'a', 'A' - Meridiem is not explicit upper/lowercase, you have to upper/lowercase the translated value yourself + * + * @param string $format Format string in PHP's date format + * @return string Format string in ISO format + */ + public static function convertPhpToIsoFormat($format) + { + if ($format === null) { + return null; + } + + $convert = array( + 'd' => 'dd' , 'D' => 'EE' , 'j' => 'd' , 'l' => 'EEEE', + 'N' => 'eee' , 'S' => 'SS' , 'w' => 'e' , 'z' => 'D' , + 'W' => 'ww' , 'F' => 'MMMM', 'm' => 'MM' , 'M' => 'MMM' , + 'n' => 'M' , 't' => 'ddd' , 'L' => 'l' , 'o' => 'YYYY', + 'Y' => 'yyyy', 'y' => 'yy' , 'a' => 'a' , 'A' => 'a' , + 'B' => 'B' , 'g' => 'h' , 'G' => 'H' , 'h' => 'hh' , + 'H' => 'HH' , 'i' => 'mm' , 's' => 'ss' , 'e' => 'zzzz', + 'I' => 'I' , 'O' => 'Z' , 'P' => 'ZZZZ', 'T' => 'z' , + 'Z' => 'X' , 'c' => 'yyyy-MM-ddTHH:mm:ssZZZZ', 'r' => 'r', + 'U' => 'U', + ); + $escaped = false; + $inEscapedString = false; + $converted = array(); + foreach (str_split($format) as $char) { + if (!$escaped && $char == '\\') { + // Next char will be escaped: let's remember it + $escaped = true; + } elseif ($escaped) { + if (!$inEscapedString) { + // First escaped string: start the quoted chunk + $converted[] = "'"; + $inEscapedString = true; + } + // Since the previous char was a \ and we are in the quoted + // chunk, let's simply add $char as it is + $converted[] = $char; + $escaped = false; + } elseif ($char == "'") { + // Single quotes need to be escaped like this + $converted[] = "''"; + } else { + if ($inEscapedString) { + // Close the single-quoted chunk + $converted[] = "'"; + $inEscapedString = false; + } + // Convert the unescaped char if needed + if (isset($convert[$char])) { + $converted[] = $convert[$char]; + } else { + $converted[] = $char; + } + } + } + + return implode($converted); + } + + /** + * Parse date and split in named array fields + * + * @param string $date Date string to parse + * @param array $options Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details. + * @return array Possible array members: day, month, year, hour, minute, second, fixed, format + * @throws Zend_Locale_Exception + */ + private static function _parseDate($date, $options) + { + if (!self::_getUniCodeSupport()) { + trigger_error("Sorry, your PCRE extension does not support UTF8 which is needed for the I18N core", E_USER_NOTICE); + } + + $options = self::_checkOptions($options) + self::$_options; + $test = array('h', 'H', 'm', 's', 'y', 'Y', 'M', 'd', 'D', 'E', 'S', 'l', 'B', 'I', + 'X', 'r', 'U', 'G', 'w', 'e', 'a', 'A', 'Z', 'z', 'v'); + + $format = $options['date_format']; + $number = $date; // working copy + $result['date_format'] = $format; // save the format used to normalize $number (convenience) + $result['locale'] = $options['locale']; // save the locale used to normalize $number (convenience) + + $oenc = self::_getEncoding(); + self::_setEncoding('UTF-8'); + $day = iconv_strpos($format, 'd'); + $month = iconv_strpos($format, 'M'); + $year = iconv_strpos($format, 'y'); + $hour = iconv_strpos($format, 'H'); + $min = iconv_strpos($format, 'm'); + $sec = iconv_strpos($format, 's'); + $am = null; + if ($hour === false) { + $hour = iconv_strpos($format, 'h'); + } + if ($year === false) { + $year = iconv_strpos($format, 'Y'); + } + if ($day === false) { + $day = iconv_strpos($format, 'E'); + if ($day === false) { + $day = iconv_strpos($format, 'D'); + } + } + + if ($day !== false) { + $parse[$day] = 'd'; + if (!empty($options['locale']) && ($options['locale'] !== 'root') && + (!is_object($options['locale']) || ((string) $options['locale'] !== 'root'))) { + // erase day string + $daylist = Zend_Locale_Data::getList($options['locale'], 'day'); + foreach($daylist as $key => $name) { + if (iconv_strpos($number, $name) !== false) { + $number = str_replace($name, "EEEE", $number); + break; + } + } + } + } + $position = false; + + if ($month !== false) { + $parse[$month] = 'M'; + if (!empty($options['locale']) && ($options['locale'] !== 'root') && + (!is_object($options['locale']) || ((string) $options['locale'] !== 'root'))) { + // prepare to convert month name to their numeric equivalents, if requested, + // and we have a $options['locale'] + $position = self::_replaceMonth($number, Zend_Locale_Data::getList($options['locale'], + 'month')); + if ($position === false) { + $position = self::_replaceMonth($number, Zend_Locale_Data::getList($options['locale'], + 'month', array('gregorian', 'format', 'abbreviated'))); + } + } + } + if ($year !== false) { + $parse[$year] = 'y'; + } + if ($hour !== false) { + $parse[$hour] = 'H'; + } + if ($min !== false) { + $parse[$min] = 'm'; + } + if ($sec !== false) { + $parse[$sec] = 's'; + } + + if (empty($parse)) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unknown date format, neither date nor time in '" . $format . "' found"); + } + ksort($parse); + + // get daytime + if (iconv_strpos($format, 'a') !== false) { + if (iconv_strpos(strtoupper($number), strtoupper(Zend_Locale_Data::getContent($options['locale'], 'am'))) !== false) { + $am = true; + } else if (iconv_strpos(strtoupper($number), strtoupper(Zend_Locale_Data::getContent($options['locale'], 'pm'))) !== false) { + $am = false; + } + } + + // split number parts + $split = false; + preg_match_all('/\d+/u', $number, $splitted); + + if (count($splitted[0]) == 0) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("No date part in '$date' found."); + } + if (count($splitted[0]) == 1) { + $split = 0; + } + $cnt = 0; + foreach($parse as $key => $value) { + + switch($value) { + case 'd': + if ($split === false) { + if (count($splitted[0]) > $cnt) { + $result['day'] = $splitted[0][$cnt]; + } + } else { + $result['day'] = iconv_substr($splitted[0][0], $split, 2); + $split += 2; + } + ++$cnt; + break; + case 'M': + if ($split === false) { + if (count($splitted[0]) > $cnt) { + $result['month'] = $splitted[0][$cnt]; + } + } else { + $result['month'] = iconv_substr($splitted[0][0], $split, 2); + $split += 2; + } + ++$cnt; + break; + case 'y': + $length = 2; + if ((iconv_substr($format, $year, 4) == 'yyyy') + || (iconv_substr($format, $year, 4) == 'YYYY')) { + $length = 4; + } + + if ($split === false) { + if (count($splitted[0]) > $cnt) { + $result['year'] = $splitted[0][$cnt]; + } + } else { + $result['year'] = iconv_substr($splitted[0][0], $split, $length); + $split += $length; + } + + ++$cnt; + break; + case 'H': + if ($split === false) { + if (count($splitted[0]) > $cnt) { + $result['hour'] = $splitted[0][$cnt]; + } + } else { + $result['hour'] = iconv_substr($splitted[0][0], $split, 2); + $split += 2; + } + ++$cnt; + break; + case 'm': + if ($split === false) { + if (count($splitted[0]) > $cnt) { + $result['minute'] = $splitted[0][$cnt]; + } + } else { + $result['minute'] = iconv_substr($splitted[0][0], $split, 2); + $split += 2; + } + ++$cnt; + break; + case 's': + if ($split === false) { + if (count($splitted[0]) > $cnt) { + $result['second'] = $splitted[0][$cnt]; + } + } else { + $result['second'] = iconv_substr($splitted[0][0], $split, 2); + $split += 2; + } + ++$cnt; + break; + } + } + + // AM/PM correction + if ($hour !== false) { + if (($am === true) and ($result['hour'] == 12)){ + $result['hour'] = 0; + } else if (($am === false) and ($result['hour'] != 12)) { + $result['hour'] += 12; + } + } + + if ($options['fix_date'] === true) { + $result['fixed'] = 0; // nothing has been "fixed" by swapping date parts around (yet) + } + + if ($day !== false) { + // fix false month + if (isset($result['day']) and isset($result['month'])) { + if (($position !== false) and ((iconv_strpos($date, $result['day']) === false) or + (isset($result['year']) and (iconv_strpos($date, $result['year']) === false)))) { + if ($options['fix_date'] !== true) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unable to parse date '$date' using '" . $format + . "' (false month, $position, $month)"); + } + $temp = $result['day']; + $result['day'] = $result['month']; + $result['month'] = $temp; + $result['fixed'] = 1; + } + } + + // fix switched values d <> y + if (isset($result['day']) and isset($result['year'])) { + if ($result['day'] > 31) { + if ($options['fix_date'] !== true) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unable to parse date '$date' using '" + . $format . "' (d <> y)"); + } + $temp = $result['year']; + $result['year'] = $result['day']; + $result['day'] = $temp; + $result['fixed'] = 2; + } + } + + // fix switched values M <> y + if (isset($result['month']) and isset($result['year'])) { + if ($result['month'] > 31) { + if ($options['fix_date'] !== true) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unable to parse date '$date' using '" + . $format . "' (M <> y)"); + } + $temp = $result['year']; + $result['year'] = $result['month']; + $result['month'] = $temp; + $result['fixed'] = 3; + } + } + + // fix switched values M <> d + if (isset($result['month']) and isset($result['day'])) { + if ($result['month'] > 12) { + if ($options['fix_date'] !== true || $result['month'] > 31) { + self::_setEncoding($oenc); + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("Unable to parse date '$date' using '" + . $format . "' (M <> d)"); + } + $temp = $result['day']; + $result['day'] = $result['month']; + $result['month'] = $temp; + $result['fixed'] = 4; + } + } + } + + if (isset($result['year'])) { + if (((iconv_strlen($result['year']) == 2) && ($result['year'] < 10)) || + (((iconv_strpos($format, 'yy') !== false) && (iconv_strpos($format, 'yyyy') === false)) || + ((iconv_strpos($format, 'YY') !== false) && (iconv_strpos($format, 'YYYY') === false)))) { + if (($result['year'] >= 0) && ($result['year'] < 100)) { + if ($result['year'] < 70) { + $result['year'] = (int) $result['year'] + 100; + } + + $result['year'] = (int) $result['year'] + 1900; + } + } + } + + self::_setEncoding($oenc); + return $result; + } + + /** + * Search $number for a month name found in $monthlist, and replace if found. + * + * @param string $number Date string (modified) + * @param array $monthlist List of month names + * + * @return int|false Position of replaced string (false if nothing replaced) + */ + protected static function _replaceMonth(&$number, $monthlist) + { + // If $locale was invalid, $monthlist will default to a "root" identity + // mapping for each month number from 1 to 12. + // If no $locale was given, or $locale was invalid, do not use this identity mapping to normalize. + // Otherwise, translate locale aware month names in $number to their numeric equivalents. + $position = false; + if ($monthlist && $monthlist[1] != 1) { + foreach($monthlist as $key => $name) { + if (($position = iconv_strpos($number, $name, 0, 'UTF-8')) !== false) { + $number = str_ireplace($name, $key, $number); + return $position; + } + } + } + + return false; + } + + /** + * Returns the default date format for $locale. + * + * @param string|Zend_Locale $locale OPTIONAL Locale of $number, possibly in string form (e.g. 'de_AT') + * @return string format + * @throws Zend_Locale_Exception throws an exception when locale data is broken + */ + public static function getDateFormat($locale = null) + { + $format = Zend_Locale_Data::getContent($locale, 'date'); + if (empty($format)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("failed to receive data from locale $locale"); + } + + return $format; + } + + /** + * Returns an array with the normalized date from an locale date + * a input of 10.01.2006 without a $locale would return: + * array ('day' => 10, 'month' => 1, 'year' => 2006) + * The 'locale' option is only used to convert human readable day + * and month names to their numeric equivalents. + * The 'format' option allows specification of self-defined date formats, + * when not using the default format for the 'locale'. + * + * @param string $date Date string + * @param array $options Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details. + * @return array Possible array members: day, month, year, hour, minute, second, fixed, format + */ + public static function getDate($date, array $options = array()) + { + $options = self::_checkOptions($options) + self::$_options; + if (empty($options['date_format'])) { + $options['format_type'] = 'iso'; + $options['date_format'] = self::getDateFormat($options['locale']); + } + + return self::_parseDate($date, $options); + } + + /** + * Returns if the given datestring contains all date parts from the given format. + * If no format is given, the default date format from the locale is used + * If you want to check if the date is a proper date you should use Zend_Date::isDate() + * + * @param string $date Date string + * @param array $options Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details. + * @return boolean + */ + public static function checkDateFormat($date, array $options = array()) + { + try { + $date = self::getDate($date, $options); + } catch (Exception $e) { + return false; + } + + if (empty($options['date_format'])) { + $options['format_type'] = 'iso'; + $options['date_format'] = self::getDateFormat(isset($options['locale']) ? $options['locale'] : null); + } + $options = self::_checkOptions($options) + self::$_options; + + // day expected but not parsed + if ((iconv_strpos($options['date_format'], 'd', 0, 'UTF-8') !== false) and (!isset($date['day']) or ($date['day'] === ""))) { + return false; + } + + // month expected but not parsed + if ((iconv_strpos($options['date_format'], 'M', 0, 'UTF-8') !== false) and (!isset($date['month']) or ($date['month'] === ""))) { + return false; + } + + // year expected but not parsed + if (((iconv_strpos($options['date_format'], 'Y', 0, 'UTF-8') !== false) or + (iconv_strpos($options['date_format'], 'y', 0, 'UTF-8') !== false)) and (!isset($date['year']) or ($date['year'] === ""))) { + return false; + } + + // second expected but not parsed + if ((iconv_strpos($options['date_format'], 's', 0, 'UTF-8') !== false) and (!isset($date['second']) or ($date['second'] === ""))) { + return false; + } + + // minute expected but not parsed + if ((iconv_strpos($options['date_format'], 'm', 0, 'UTF-8') !== false) and (!isset($date['minute']) or ($date['minute'] === ""))) { + return false; + } + + // hour expected but not parsed + if (((iconv_strpos($options['date_format'], 'H', 0, 'UTF-8') !== false) or + (iconv_strpos($options['date_format'], 'h', 0, 'UTF-8') !== false)) and (!isset($date['hour']) or ($date['hour'] === ""))) { + return false; + } + + return true; + } + + /** + * Returns the default time format for $locale. + * + * @param string|Zend_Locale $locale OPTIONAL Locale of $number, possibly in string form (e.g. 'de_AT') + * @return string format + * @throws Zend_Locale_Exception + */ + public static function getTimeFormat($locale = null) + { + $format = Zend_Locale_Data::getContent($locale, 'time'); + if (empty($format)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("failed to receive data from locale $locale"); + } + return $format; + } + + /** + * Returns an array with 'hour', 'minute', and 'second' elements extracted from $time + * according to the order described in $format. For a format of 'H:i:s', and + * an input of 11:20:55, getTime() would return: + * array ('hour' => 11, 'minute' => 20, 'second' => 55) + * The optional $locale parameter may be used to help extract times from strings + * containing both a time and a day or month name. + * + * @param string $time Time string + * @param array $options Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details. + * @return array Possible array members: day, month, year, hour, minute, second, fixed, format + */ + public static function getTime($time, array $options = array()) + { + $options = self::_checkOptions($options) + self::$_options; + if (empty($options['date_format'])) { + $options['format_type'] = 'iso'; + $options['date_format'] = self::getTimeFormat($options['locale']); + } + return self::_parseDate($time, $options); + } + + /** + * Returns the default datetime format for $locale. + * + * @param string|Zend_Locale $locale OPTIONAL Locale of $number, possibly in string form (e.g. 'de_AT') + * @return string format + * @throws Zend_Locale_Exception + */ + public static function getDateTimeFormat($locale = null) + { + $format = Zend_Locale_Data::getContent($locale, 'datetime'); + if (empty($format)) { + require_once 'Zend/Locale/Exception.php'; + throw new Zend_Locale_Exception("failed to receive data from locale $locale"); + } + return $format; + } + + /** + * Returns an array with 'year', 'month', 'day', 'hour', 'minute', and 'second' elements + * extracted from $datetime according to the order described in $format. For a format of 'd.M.y H:i:s', + * and an input of 10.05.1985 11:20:55, getDateTime() would return: + * array ('year' => 1985, 'month' => 5, 'day' => 10, 'hour' => 11, 'minute' => 20, 'second' => 55) + * The optional $locale parameter may be used to help extract times from strings + * containing both a time and a day or month name. + * + * @param string $datetime DateTime string + * @param array $options Options: format_type, fix_date, locale, date_format. See {@link setOptions()} for details. + * @return array Possible array members: day, month, year, hour, minute, second, fixed, format + */ + public static function getDateTime($datetime, array $options = array()) + { + $options = self::_checkOptions($options) + self::$_options; + if (empty($options['date_format'])) { + $options['format_type'] = 'iso'; + $options['date_format'] = self::getDateTimeFormat($options['locale']); + } + return self::_parseDate($datetime, $options); + } + + /** + * Internal method to detect of Unicode supports UTF8 + * which should be enabled within vanilla php installations + * + * @return boolean + */ + protected static function _getUniCodeSupport() + { + return (@preg_match('/\pL/u', 'a')) ? true : false; + } + + /** + * Internal method to retrieve the current encoding via the ini setting + * default_charset for PHP >= 5.6 or iconv_get_encoding otherwise. + * + * @return string + */ + protected static function _getEncoding() + { + $oenc = PHP_VERSION_ID < 50600 + ? iconv_get_encoding('internal_encoding') + : ini_get('default_charset'); + + return $oenc; + } + + /** + * Internal method to set the encoding via the ini setting + * default_charset for PHP >= 5.6 or iconv_set_encoding otherwise. + * + * @param string $encoding + * @return void + */ + protected static function _setEncoding($encoding) + { + if (PHP_VERSION_ID < 50600) { + iconv_set_encoding('internal_encoding', $encoding); + } else { + ini_set('default_charset', $encoding); + } + } +} diff --git a/library/Zend/Locale/Math.php b/library/Zend/Locale/Math.php new file mode 100755 index 000000000..91e1905d8 --- /dev/null +++ b/library/Zend/Locale/Math.php @@ -0,0 +1,355 @@ + $decPos) { + return '0'; + } + + $digitsBeforeDot = $length - ($decPos + 1); + if ($precision >= ($length - ($decPos + 1))) { + return $op1; + } + + if ($precision === 0) { + $triggerPos = 1; + $roundPos = -1; + } elseif ($precision > 0) { + $triggerPos = $precision + 1; + $roundPos = $precision; + } else { + $triggerPos = $precision; + $roundPos = $precision -1; + } + + $triggerDigit = $op1[$triggerPos + $decPos]; + if ($precision < 0) { + // zero fill digits to the left of the decimal place + $op1 = substr($op1, 0, $decPos + $precision) . str_pad('', abs($precision), '0'); + } + + if ($triggerDigit >= '5') { + if ($roundPos + $decPos == -1) { + return str_pad('1', $decPos + 1, '0'); + } + + $roundUp = str_pad('', $length, '0'); + $roundUp[$decPos] = '.'; + $roundUp[$roundPos + $decPos] = '1'; + + if ($op1 > 0) { + if (self::$_bcmathDisabled) { + return Zend_Locale_Math_PhpMath::Add($op1, $roundUp, $precision); + } + return self::Add($op1, $roundUp, $precision); + } else { + if (self::$_bcmathDisabled) { + return Zend_Locale_Math_PhpMath::Sub($op1, $roundUp, $precision); + } + return self::Sub($op1, $roundUp, $precision); + } + } elseif ($precision >= 0) { + return substr($op1, 0, $decPos + ($precision ? $precision + 1: 0)); + } + + return (string) $op1; + } + + /** + * Convert a scientific notation to float + * Additionally fixed a problem with PHP <= 5.2.x with big integers + * + * @param string $value + */ + public static function floatalize($value) + { + $value = strtoupper($value); + if (strpos($value, 'E') === false) { + return $value; + } + + $number = substr($value, 0, strpos($value, 'E')); + if (strpos($number, '.') !== false) { + $post = strlen(substr($number, strpos($number, '.') + 1)); + $mantis = substr($value, strpos($value, 'E') + 1); + if ($mantis < 0) { + $post += abs((int) $mantis); + } + + $value = number_format($value, $post, '.', ''); + } else { + $value = number_format($value, 0, '.', ''); + } + + return $value; + } + + /** + * Normalizes an input to standard english notation + * Fixes a problem of BCMath with setLocale which is PHP related + * + * @param integer $value Value to normalize + * @return string Normalized string without BCMath problems + */ + public static function normalize($value) + { + $convert = localeconv(); + $value = str_replace($convert['thousands_sep'], "",(string) $value); + $value = str_replace($convert['positive_sign'], "", $value); + $value = str_replace($convert['decimal_point'], ".",$value); + if (!empty($convert['negative_sign']) and (strpos($value, $convert['negative_sign']))) { + $value = str_replace($convert['negative_sign'], "", $value); + $value = "-" . $value; + } + + return $value; + } + + /** + * Localizes an input from standard english notation + * Fixes a problem of BCMath with setLocale which is PHP related + * + * @param integer $value Value to normalize + * @return string Normalized string without BCMath problems + */ + public static function localize($value) + { + $convert = localeconv(); + $value = str_replace(".", $convert['decimal_point'], (string) $value); + if (!empty($convert['negative_sign']) and (strpos($value, "-"))) { + $value = str_replace("-", $convert['negative_sign'], $value); + } + return $value; + } + + /** + * Changes exponential numbers to plain string numbers + * Fixes a problem of BCMath with numbers containing exponents + * + * @param integer $value Value to erase the exponent + * @param integer $scale (Optional) Scale to use + * @return string + */ + public static function exponent($value, $scale = null) + { + if (!extension_loaded('bcmath')) { + return $value; + } + + $split = explode('e', $value); + if (count($split) == 1) { + $split = explode('E', $value); + } + + if (count($split) > 1) { + $value = bcmul($split[0], bcpow(10, $split[1], $scale), $scale); + } + + return $value; + } + + /** + * BCAdd - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @param integer $scale + * @return string + */ + public static function Add($op1, $op2, $scale = null) + { + $op1 = self::exponent($op1, $scale); + $op2 = self::exponent($op2, $scale); + + return bcadd($op1, $op2, $scale); + } + + /** + * BCSub - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @param integer $scale + * @return string + */ + public static function Sub($op1, $op2, $scale = null) + { + $op1 = self::exponent($op1, $scale); + $op2 = self::exponent($op2, $scale); + return bcsub($op1, $op2, $scale); + } + + /** + * BCPow - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @param integer $scale + * @return string + */ + public static function Pow($op1, $op2, $scale = null) + { + $op1 = self::exponent($op1, $scale); + $op2 = self::exponent($op2, $scale); + return bcpow($op1, $op2, $scale); + } + + /** + * BCMul - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @param integer $scale + * @return string + */ + public static function Mul($op1, $op2, $scale = null) + { + $op1 = self::exponent($op1, $scale); + $op2 = self::exponent($op2, $scale); + return bcmul($op1, $op2, $scale); + } + + /** + * BCDiv - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @param integer $scale + * @return string + */ + public static function Div($op1, $op2, $scale = null) + { + $op1 = self::exponent($op1, $scale); + $op2 = self::exponent($op2, $scale); + return bcdiv($op1, $op2, $scale); + } + + /** + * BCSqrt - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param integer $scale + * @return string + */ + public static function Sqrt($op1, $scale = null) + { + $op1 = self::exponent($op1, $scale); + return bcsqrt($op1, $scale); + } + + /** + * BCMod - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @return string + */ + public static function Mod($op1, $op2) + { + $op1 = self::exponent($op1); + $op2 = self::exponent($op2); + return bcmod($op1, $op2); + } + + /** + * BCComp - fixes a problem of BCMath and exponential numbers + * + * @param string $op1 + * @param string $op2 + * @param integer $scale + * @return string + */ + public static function Comp($op1, $op2, $scale = null) + { + $op1 = self::exponent($op1, $scale); + $op2 = self::exponent($op2, $scale); + return bccomp($op1, $op2, $scale); + } +} + +if (!extension_loaded('bcmath') + || (defined('TESTS_ZEND_LOCALE_BCMATH_ENABLED') && !TESTS_ZEND_LOCALE_BCMATH_ENABLED) +) { + require_once 'Zend/Locale/Math/PhpMath.php'; + Zend_Locale_Math_PhpMath::disable(); +} diff --git a/library/Zend/Locale/Math/Exception.php b/library/Zend/Locale/Math/Exception.php new file mode 100755 index 000000000..e065b1896 --- /dev/null +++ b/library/Zend/Locale/Math/Exception.php @@ -0,0 +1,53 @@ +op1 = $op1; + $this->op2 = $op2; + $this->result = $result; + parent::__construct($message); + } + + public function getResults() + { + return array($this->op1, $this->op2, $this->result); + } +} diff --git a/library/Zend/Locale/Math/PhpMath.php b/library/Zend/Locale/Math/PhpMath.php new file mode 100755 index 000000000..c06f20d1f --- /dev/null +++ b/library/Zend/Locale/Math/PhpMath.php @@ -0,0 +1,247 @@ + $precision)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("addition overflow: $op1 + $op2 != $result", $op1, $op2, $result); + } + + return self::round(self::normalize($result), $scale); + } + + public static function Sub($op1, $op2, $scale = null) + { + if ($scale === null) { + $scale = Zend_Locale_Math_PhpMath::$defaultScale; + $precision = Zend_Locale_Math_PhpMath::$defaultPrecision; + } else { + $precision = pow(10, -$scale); + } + + if (empty($op1)) { + $op1 = 0; + } + $op1 = self::normalize($op1); + $op2 = self::normalize($op2); + $result = $op1 - $op2; + if (is_infinite($result) or (abs($result + $op2 - $op1) > $precision)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("subtraction overflow: $op1 - $op2 != $result", $op1, $op2, $result); + } + + return self::round(self::normalize($result), $scale); + } + + public static function Pow($op1, $op2, $scale = null) + { + if ($scale === null) { + $scale = Zend_Locale_Math_PhpMath::$defaultScale; + } + + $op1 = self::normalize($op1); + $op2 = self::normalize($op2); + + // BCMath extension doesn't use decimal part of the power + // Provide the same behavior + $op2 = ($op2 > 0) ? floor($op2) : ceil($op2); + + $result = pow($op1, $op2); + if (is_infinite($result) or is_nan($result)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("power overflow: $op1 ^ $op2", $op1, $op2, $result); + } + + return self::round(self::normalize($result), $scale); + } + + public static function Mul($op1, $op2, $scale = null) + { + if ($scale === null) { + $scale = Zend_Locale_Math_PhpMath::$defaultScale; + } + + if (empty($op1)) { + $op1 = 0; + } + $op1 = self::normalize($op1); + $op2 = self::normalize($op2); + $result = $op1 * $op2; + if (is_infinite($result) or is_nan($result)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("multiplication overflow: $op1 * $op2 != $result", $op1, $op2, $result); + } + + return self::round(self::normalize($result), $scale); + } + + public static function Div($op1, $op2, $scale = null) + { + if ($scale === null) { + $scale = Zend_Locale_Math_PhpMath::$defaultScale; + } + + if (empty($op2)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("can not divide by zero", $op1, $op2, null); + } + if (empty($op1)) { + $op1 = 0; + } + $op1 = self::normalize($op1); + $op2 = self::normalize($op2); + $result = $op1 / $op2; + if (is_infinite($result) or is_nan($result)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("division overflow: $op1 / $op2 != $result", $op1, $op2, $result); + } + + return self::round(self::normalize($result), $scale); + } + + public static function Sqrt($op1, $scale = null) + { + if ($scale === null) { + $scale = Zend_Locale_Math_PhpMath::$defaultScale; + } + + if (empty($op1)) { + $op1 = 0; + } + $op1 = self::normalize($op1); + $result = sqrt($op1); + if (is_nan($result)) { + return NULL; + } + + return self::round(self::normalize($result), $scale); + } + + public static function Mod($op1, $op2) + { + if (empty($op1)) { + $op1 = 0; + } + if (empty($op2)) { + return NULL; + } + $op1 = self::normalize($op1); + $op2 = self::normalize($op2); + if ((int)$op2 == 0) { + return NULL; + } + $result = $op1 % $op2; + if (is_nan($result) or (($op1 - $result) % $op2 != 0)) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("modulus calculation error: $op1 % $op2 != $result", $op1, $op2, $result); + } + + return self::normalize($result); + } + + public static function Comp($op1, $op2, $scale = null) + { + if ($scale === null) { + $scale = Zend_Locale_Math_PhpMath::$defaultScale; + } + + if (empty($op1)) { + $op1 = 0; + } + $op1 = self::normalize($op1); + $op2 = self::normalize($op2); + if ($scale <> 0) { + $op1 = self::round($op1, $scale); + $op2 = self::round($op2, $scale); + } else { + $op1 = ($op1 > 0) ? floor($op1) : ceil($op1); + $op2 = ($op2 > 0) ? floor($op2) : ceil($op2); + } + if ($op1 > $op2) { + return 1; + } else if ($op1 < $op2) { + return -1; + } + return 0; + } + + public static function Scale($scale) + { + if ($scale > 9) { + require_once 'Zend/Locale/Math/Exception.php'; + throw new Zend_Locale_Math_Exception("can not scale to precision $scale", $scale, null, null); + } + self::$defaultScale = $scale; + self::$defaultPrecision = pow(10, -$scale); + return true; + } +} + +Zend_Locale_Math_PhpMath::disable(); // disable use of bcmath functions diff --git a/library/Zend/Log.php b/library/Zend/Log.php new file mode 100755 index 000000000..133feca98 --- /dev/null +++ b/library/Zend/Log.php @@ -0,0 +1,662 @@ +_priorities = array_flip($r->getConstants()); + + if ($writer !== null) { + $this->addWriter($writer); + } + } + + /** + * Factory to construct the logger and one or more writers + * based on the configuration array + * + * @param array|Zend_Config Array or instance of Zend_Config + * @return Zend_Log + * @throws Zend_Log_Exception + */ + static public function factory($config = array()) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } + + if (!is_array($config) || empty($config)) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Configuration must be an array or instance of Zend_Config'); + } + + if (array_key_exists('className', $config)) { + $class = $config['className']; + unset($config['className']); + } else { + $class = __CLASS__; + } + + $log = new $class; + + if (!$log instanceof Zend_Log) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Passed className does not belong to a descendant of Zend_Log'); + } + + if (array_key_exists('timestampFormat', $config)) { + if (null != $config['timestampFormat'] && '' != $config['timestampFormat']) { + $log->setTimestampFormat($config['timestampFormat']); + } + unset($config['timestampFormat']); + } + + if (!is_array(current($config))) { + $log->addWriter(current($config)); + } else { + foreach($config as $writer) { + $log->addWriter($writer); + } + } + + return $log; + } + + + /** + * Construct a writer object based on a configuration array + * + * @param array $config config array with writer spec + * @return Zend_Log_Writer_Abstract + * @throws Zend_Log_Exception + */ + protected function _constructWriterFromConfig($config) + { + $writer = $this->_constructFromConfig('writer', $config, $this->_defaultWriterNamespace); + + if (!$writer instanceof Zend_Log_Writer_Abstract) { + $writerName = is_object($writer) + ? get_class($writer) + : 'The specified writer'; + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception("{$writerName} does not extend Zend_Log_Writer_Abstract!"); + } + + if (isset($config['filterName'])) { + $filter = $this->_constructFilterFromConfig($config); + $writer->addFilter($filter); + } + + if (isset($config['formatterName'])) { + $formatter = $this->_constructFormatterFromConfig($config); + $writer->setFormatter($formatter); + } + + return $writer; + } + + /** + * Construct filter object from configuration array or Zend_Config object + * + * @param array|Zend_Config $config Zend_Config or Array + * @return Zend_Log_Filter_Interface + * @throws Zend_Log_Exception + */ + protected function _constructFilterFromConfig($config) + { + $filter = $this->_constructFromConfig('filter', $config, $this->_defaultFilterNamespace); + + if (!$filter instanceof Zend_Log_Filter_Interface) { + $filterName = is_object($filter) + ? get_class($filter) + : 'The specified filter'; + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception("{$filterName} does not implement Zend_Log_Filter_Interface"); + } + + return $filter; + } + + /** + * Construct formatter object from configuration array or Zend_Config object + * + * @param array|Zend_Config $config Zend_Config or Array + * @return Zend_Log_Formatter_Interface + * @throws Zend_Log_Exception + */ + protected function _constructFormatterFromConfig($config) + { + $formatter = $this->_constructFromConfig('formatter', $config, $this->_defaultFormatterNamespace); + + if (!$formatter instanceof Zend_Log_Formatter_Interface) { + $formatterName = is_object($formatter) + ? get_class($formatter) + : 'The specified formatter'; + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception($formatterName . ' does not implement Zend_Log_Formatter_Interface'); + } + + return $formatter; + } + + /** + * Construct a filter or writer from config + * + * @param string $type 'writer' of 'filter' + * @param mixed $config Zend_Config or Array + * @param string $namespace + * @return object + * @throws Zend_Log_Exception + */ + protected function _constructFromConfig($type, $config, $namespace) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } + + if (!is_array($config) || empty($config)) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception( + 'Configuration must be an array or instance of Zend_Config' + ); + } + + $params = isset($config[ $type .'Params' ]) ? $config[ $type .'Params' ] : array(); + $className = $this->getClassName($config, $type, $namespace); + if (!class_exists($className)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($className); + } + + $reflection = new ReflectionClass($className); + if (!$reflection->implementsInterface('Zend_Log_FactoryInterface')) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception( + $className . ' does not implement Zend_Log_FactoryInterface and can not be constructed from config.' + ); + } + + return call_user_func(array($className, 'factory'), $params); + } + + /** + * Get the writer or filter full classname + * + * @param array $config + * @param string $type filter|writer + * @param string $defaultNamespace + * @return string full classname + * @throws Zend_Log_Exception + */ + protected function getClassName($config, $type, $defaultNamespace) + { + if (!isset($config[$type . 'Name'])) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception("Specify {$type}Name in the configuration array"); + } + + $className = $config[$type . 'Name']; + $namespace = $defaultNamespace; + + if (isset($config[$type . 'Namespace'])) { + $namespace = $config[$type . 'Namespace']; + } + + // PHP >= 5.3.0 namespace given? + if (substr($namespace, -1) == '\\') { + return $namespace . $className; + } + + // empty namespace given? + if (strlen($namespace) === 0) { + return $className; + } + + return $namespace . '_' . $className; + } + + /** + * Packs message and priority into Event array + * + * @param string $message Message to log + * @param integer $priority Priority of message + * @return array Event array + */ + protected function _packEvent($message, $priority) + { + return array_merge(array( + 'timestamp' => date($this->_timestampFormat), + 'message' => $message, + 'priority' => $priority, + 'priorityName' => $this->_priorities[$priority] + ), + $this->_extras + ); + } + + /** + * Class destructor. Shutdown log writers + * + * @return void + */ + public function __destruct() + { + /** @var Zend_Log_Writer_Abstract $writer */ + foreach($this->_writers as $writer) { + $writer->shutdown(); + } + } + + /** + * Undefined method handler allows a shortcut: + * $log->priorityName('message') + * instead of + * $log->log('message', Zend_Log::PRIORITY_NAME) + * + * @param string $method priority name + * @param string $params message to log + * @return void + * @throws Zend_Log_Exception + */ + public function __call($method, $params) + { + $priority = strtoupper($method); + if (($priority = array_search($priority, $this->_priorities)) !== false) { + switch (count($params)) { + case 0: + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Missing log message'); + case 1: + $message = array_shift($params); + $extras = null; + break; + default: + $message = array_shift($params); + $extras = array_shift($params); + break; + } + $this->log($message, $priority, $extras); + } else { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Bad log priority'); + } + } + + /** + * Log a message at a priority + * + * @param string $message Message to log + * @param integer $priority Priority of message + * @param mixed $extras Extra information to log in event + * @return void + * @throws Zend_Log_Exception + */ + public function log($message, $priority, $extras = null) + { + // sanity checks + if (empty($this->_writers)) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('No writers were added'); + } + + if (! isset($this->_priorities[$priority])) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Bad log priority'); + } + + // pack into event required by filters and writers + $event = $this->_packEvent($message, $priority); + + // Check to see if any extra information was passed + if (!empty($extras)) { + $info = array(); + if (is_array($extras)) { + foreach ($extras as $key => $value) { + if (is_string($key)) { + $event[$key] = $value; + } else { + $info[] = $value; + } + } + } else { + $info = $extras; + } + if (!empty($info)) { + $event['info'] = $info; + } + } + + // abort if rejected by the global filters + /** @var Zend_Log_Filter_Interface $filter */ + foreach ($this->_filters as $filter) { + if (! $filter->accept($event)) { + return; + } + } + + // send to each writer + /** @var Zend_Log_Writer_Abstract $writer */ + foreach ($this->_writers as $writer) { + $writer->write($event); + } + } + + /** + * Add a custom priority + * + * @param string $name Name of priority + * @param integer $priority Numeric priority + * @return $this + * @throws Zend_Log_Exception + */ + public function addPriority($name, $priority) + { + // Priority names must be uppercase for predictability. + $name = strtoupper($name); + + if (isset($this->_priorities[$priority]) + || false !== array_search($name, $this->_priorities)) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Existing priorities cannot be overwritten'); + } + + $this->_priorities[$priority] = $name; + return $this; + } + + /** + * Add a filter that will be applied before all log writers. + * Before a message will be received by any of the writers, it + * must be accepted by all filters added with this method. + * + * @param int|Zend_Config|array|Zend_Log_Filter_Interface $filter + * @return $this + * @throws Zend_Log_Exception + */ + public function addFilter($filter) + { + if (is_int($filter)) { + /** @see Zend_Log_Filter_Priority */ + require_once 'Zend/Log/Filter/Priority.php'; + $filter = new Zend_Log_Filter_Priority($filter); + + } elseif ($filter instanceof Zend_Config || is_array($filter)) { + $filter = $this->_constructFilterFromConfig($filter); + + } elseif(! $filter instanceof Zend_Log_Filter_Interface) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Invalid filter provided'); + } + + $this->_filters[] = $filter; + return $this; + } + + /** + * Add a writer. A writer is responsible for taking a log + * message and writing it out to storage. + * + * @param mixed $writer Zend_Log_Writer_Abstract or Config array + * @return Zend_Log + * @throws Zend_Log_Exception + */ + public function addWriter($writer) + { + if (is_array($writer) || $writer instanceof Zend_Config) { + $writer = $this->_constructWriterFromConfig($writer); + } + + if (!$writer instanceof Zend_Log_Writer_Abstract) { + /** @see Zend_Log_Exception */ + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception( + 'Writer must be an instance of Zend_Log_Writer_Abstract' + . ' or you should pass a configuration array' + ); + } + + $this->_writers[] = $writer; + return $this; + } + + /** + * Set an extra item to pass to the log writers. + * + * @param string $name Name of the field + * @param string $value Value of the field + * @return Zend_Log + */ + public function setEventItem($name, $value) + { + $this->_extras = array_merge($this->_extras, array($name => $value)); + return $this; + } + + /** + * Register Logging system as an error handler to log php errors + * Note: it still calls the original error handler if set_error_handler is able to return it. + * + * Errors will be mapped as: + * E_NOTICE, E_USER_NOTICE => NOTICE + * E_WARNING, E_CORE_WARNING, E_USER_WARNING => WARN + * E_ERROR, E_USER_ERROR, E_CORE_ERROR, E_RECOVERABLE_ERROR => ERR + * E_DEPRECATED, E_STRICT, E_USER_DEPRECATED => DEBUG + * (unknown/other) => INFO + * + * @link http://www.php.net/manual/en/function.set-error-handler.php Custom error handler + * + * @return Zend_Log + */ + public function registerErrorHandler() + { + // Only register once. Avoids loop issues if it gets registered twice. + if ($this->_registeredErrorHandler) { + return $this; + } + + $this->_origErrorHandler = set_error_handler(array($this, 'errorHandler')); + + // Contruct a default map of phpErrors to Zend_Log priorities. + // Some of the errors are uncatchable, but are included for completeness + $this->_errorHandlerMap = array( + E_NOTICE => Zend_Log::NOTICE, + E_USER_NOTICE => Zend_Log::NOTICE, + E_WARNING => Zend_Log::WARN, + E_CORE_WARNING => Zend_Log::WARN, + E_USER_WARNING => Zend_Log::WARN, + E_ERROR => Zend_Log::ERR, + E_USER_ERROR => Zend_Log::ERR, + E_CORE_ERROR => Zend_Log::ERR, + E_RECOVERABLE_ERROR => Zend_Log::ERR, + E_STRICT => Zend_Log::DEBUG, + ); + // PHP 5.3.0+ + if (defined('E_DEPRECATED')) { + $this->_errorHandlerMap['E_DEPRECATED'] = Zend_Log::DEBUG; + } + if (defined('E_USER_DEPRECATED')) { + $this->_errorHandlerMap['E_USER_DEPRECATED'] = Zend_Log::DEBUG; + } + + $this->_registeredErrorHandler = true; + return $this; + } + + /** + * Error Handler will convert error into log message, and then call the original error handler + * + * @link http://www.php.net/manual/en/function.set-error-handler.php Custom error handler + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param int $errline + * @param array $errcontext + * @return boolean + */ + public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) + { + $errorLevel = error_reporting(); + + if ($errorLevel & $errno) { + if (isset($this->_errorHandlerMap[$errno])) { + $priority = $this->_errorHandlerMap[$errno]; + } else { + $priority = Zend_Log::INFO; + } + $this->log($errstr, $priority, array('errno'=>$errno, 'file'=>$errfile, 'line'=>$errline, 'context'=>$errcontext)); + } + + if ($this->_origErrorHandler !== null) { + return call_user_func($this->_origErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext); + } + return false; + } + + /** + * Set timestamp format for log entries. + * + * @param string $format + * @return Zend_Log + */ + public function setTimestampFormat($format) + { + $this->_timestampFormat = $format; + return $this; + } + + /** + * Get timestamp format used for log entries. + * + * @return string + */ + public function getTimestampFormat() + { + return $this->_timestampFormat; + } +} diff --git a/library/Zend/Log/Exception.php b/library/Zend/Log/Exception.php new file mode 100755 index 000000000..d52a501c1 --- /dev/null +++ b/library/Zend/Log/Exception.php @@ -0,0 +1,33 @@ +toArray(); + } + + if (!is_array($config)) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Configuration must be an array or instance of Zend_Config'); + } + + return $config; + } +} diff --git a/library/Zend/Log/Filter/Interface.php b/library/Zend/Log/Filter/Interface.php new file mode 100755 index 000000000..dc0cbad9a --- /dev/null +++ b/library/Zend/Log/Filter/Interface.php @@ -0,0 +1,40 @@ +_regexp = $regexp; + } + + /** + * Create a new instance of Zend_Log_Filter_Message + * + * @param array|Zend_Config $config + * @return Zend_Log_Filter_Message + */ + static public function factory($config) + { + $config = self::_parseConfig($config); + $config = array_merge(array( + 'regexp' => null + ), $config); + + return new self( + $config['regexp'] + ); + } + + /** + * Returns TRUE to accept the message, FALSE to block it. + * + * @param array $event event data + * @return boolean accepted? + */ + public function accept($event) + { + return preg_match($this->_regexp, $event['message']) > 0; + } +} diff --git a/library/Zend/Log/Filter/Priority.php b/library/Zend/Log/Filter/Priority.php new file mode 100755 index 000000000..d86f5d60f --- /dev/null +++ b/library/Zend/Log/Filter/Priority.php @@ -0,0 +1,101 @@ +_priority = $priority; + $this->_operator = $operator === null ? '<=' : $operator; + } + + /** + * Create a new instance of Zend_Log_Filter_Priority + * + * @param array|Zend_Config $config + * @return Zend_Log_Filter_Priority + */ + static public function factory($config) + { + $config = self::_parseConfig($config); + $config = array_merge(array( + 'priority' => null, + 'operator' => null, + ), $config); + + // Add support for constants + if (!is_numeric($config['priority']) && isset($config['priority']) && defined($config['priority'])) { + $config['priority'] = constant($config['priority']); + } + + return new self( + (int) $config['priority'], + $config['operator'] + ); + } + + /** + * Returns TRUE to accept the message, FALSE to block it. + * + * @param array $event event data + * @return boolean accepted? + */ + public function accept($event) + { + return version_compare($event['priority'], $this->_priority, $this->_operator); + } +} diff --git a/library/Zend/Log/Filter/Suppress.php b/library/Zend/Log/Filter/Suppress.php new file mode 100755 index 000000000..a4f135686 --- /dev/null +++ b/library/Zend/Log/Filter/Suppress.php @@ -0,0 +1,77 @@ +_accept = (! $suppress); + } + + /** + * Returns TRUE to accept the message, FALSE to block it. + * + * @param array $event event data + * @return boolean accepted? + */ + public function accept($event) + { + return $this->_accept; + } + + /** + * Create a new instance of Zend_Log_Filter_Suppress + * + * @param array|Zend_Config $config + * @return Zend_Log_Filter_Suppress + * @throws Zend_Log_Exception + */ + static public function factory($config) + { + return new self(); + } +} diff --git a/library/Zend/Log/Formatter/Abstract.php b/library/Zend/Log/Formatter/Abstract.php new file mode 100755 index 000000000..f0403f162 --- /dev/null +++ b/library/Zend/Log/Formatter/Abstract.php @@ -0,0 +1,40 @@ +_format = $format; + } + + /** + * Factory for Zend_Log_Formatter_Simple classe + * + * @param array|Zend_Config $options + * @return Zend_Log_Formatter_Simple + */ + public static function factory($options) + { + $format = null; + if (null !== $options) { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (array_key_exists('format', $options)) { + $format = $options['format']; + } + } + + return new self($format); + } + + /** + * Formats data into a single line to be written by the writer. + * + * @param array $event event data + * @return string formatted line to write to the log + */ + public function format($event) + { + $output = $this->_format; + + foreach ($event as $name => $value) { + if ((is_object($value) && !method_exists($value,'__toString')) + || is_array($value) + ) { + $value = gettype($value); + } + + $output = str_replace("%$name%", $value, $output); + } + + return $output; + } +} diff --git a/library/Zend/Log/Formatter/Xml.php b/library/Zend/Log/Formatter/Xml.php new file mode 100755 index 000000000..71c47d336 --- /dev/null +++ b/library/Zend/Log/Formatter/Xml.php @@ -0,0 +1,165 @@ +toArray(); + } elseif (!is_array($options)) { + $args = func_get_args(); + + $options = array( + 'rootElement' => array_shift($args) + ); + + if (count($args)) { + $options['elementMap'] = array_shift($args); + } + + if (count($args)) { + $options['encoding'] = array_shift($args); + } + } + + if (!array_key_exists('rootElement', $options)) { + $options['rootElement'] = 'logEntry'; + } + + if (!array_key_exists('encoding', $options)) { + $options['encoding'] = 'UTF-8'; + } + + $this->_rootElement = $options['rootElement']; + $this->setEncoding($options['encoding']); + + if (array_key_exists('elementMap', $options)) { + $this->_elementMap = $options['elementMap']; + } + } + + /** + * Factory for Zend_Log_Formatter_Xml classe + * + * @param array|Zend_Config $options + * @return Zend_Log_Formatter_Xml + */ + public static function factory($options) + { + return new self($options); + } + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set encoding + * + * @param string $value + * @return Zend_Log_Formatter_Xml + */ + public function setEncoding($value) + { + $this->_encoding = (string) $value; + return $this; + } + + /** + * Formats data into a single line to be written by the writer. + * + * @param array $event event data + * @return string formatted line to write to the log + */ + public function format($event) + { + if ($this->_elementMap === null) { + $dataToInsert = $event; + } else { + $dataToInsert = array(); + foreach ($this->_elementMap as $elementName => $fieldKey) { + $dataToInsert[$elementName] = $event[$fieldKey]; + } + } + + $enc = $this->getEncoding(); + $dom = new DOMDocument('1.0', $enc); + $elt = $dom->appendChild(new DOMElement($this->_rootElement)); + + foreach ($dataToInsert as $key => $value) { + if (empty($value) + || is_scalar($value) + || (is_object($value) && method_exists($value,'__toString')) + ) { + if($key == "message") { + $value = htmlspecialchars($value, ENT_COMPAT, $enc); + } + $elt->appendChild(new DOMElement($key, (string)$value)); + } + } + + $xml = $dom->saveXML(); + $xml = preg_replace('/<\?xml version="1.0"( encoding="[^\"]*")?\?>\n/u', '', $xml); + + return $xml . PHP_EOL; + } +} diff --git a/library/Zend/Log/Writer/Abstract.php b/library/Zend/Log/Writer/Abstract.php new file mode 100755 index 000000000..47c45ba8b --- /dev/null +++ b/library/Zend/Log/Writer/Abstract.php @@ -0,0 +1,141 @@ +_filters[] = $filter; + return $this; + } + + /** + * Log a message to this writer. + * + * @param array $event log data event + * @return void + */ + public function write($event) + { + /** @var Zend_Log_Filter_Interface $filter */ + foreach ($this->_filters as $filter) { + if (!$filter->accept($event)) { + return; + } + } + + // exception occurs on error + $this->_write($event); + } + + /** + * Set a new formatter for this writer + * + * @param Zend_Log_Formatter_Interface $formatter + * @return Zend_Log_Writer_Abstract + */ + public function setFormatter(Zend_Log_Formatter_Interface $formatter) + { + $this->_formatter = $formatter; + return $this; + } + + /** + * Perform shutdown activites such as closing open resources + * + * @return void + */ + public function shutdown() + {} + + /** + * Write a message to the log. + * + * @param array $event log data event + * @return void + */ + abstract protected function _write($event); + + /** + * Validate and optionally convert the config to array + * + * @param array|Zend_Config $config Zend_Config or Array + * @return array + * @throws Zend_Log_Exception + */ + static protected function _parseConfig($config) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } + + if (!is_array($config)) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception( + 'Configuration must be an array or instance of Zend_Config' + ); + } + + return $config; + } +} diff --git a/library/Zend/Log/Writer/Db.php b/library/Zend/Log/Writer/Db.php new file mode 100755 index 000000000..8dcaf9c61 --- /dev/null +++ b/library/Zend/Log/Writer/Db.php @@ -0,0 +1,147 @@ +_db = $db; + $this->_table = $table; + $this->_columnMap = $columnMap; + } + + /** + * Create a new instance of Zend_Log_Writer_Db + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_Db + */ + static public function factory($config) + { + $config = self::_parseConfig($config); + $config = array_merge(array( + 'db' => null, + 'table' => null, + 'columnMap' => null, + ), $config); + + if (isset($config['columnmap'])) { + $config['columnMap'] = $config['columnmap']; + } + + return new self( + $config['db'], + $config['table'], + $config['columnMap'] + ); + } + + /** + * Formatting is not possible on this writer + * + * @return void + * @throws Zend_Log_Exception + */ + public function setFormatter(Zend_Log_Formatter_Interface $formatter) + { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception(get_class($this) . ' does not support formatting'); + } + + /** + * Remove reference to database adapter + * + * @return void + */ + public function shutdown() + { + $this->_db = null; + } + + /** + * Write a message to the log. + * + * @param array $event event data + * @return void + * @throws Zend_Log_Exception + */ + protected function _write($event) + { + if ($this->_db === null) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Database adapter is null'); + } + + if ($this->_columnMap === null) { + $dataToInsert = $event; + } else { + $dataToInsert = array(); + foreach ($this->_columnMap as $columnName => $fieldKey) { + if (isset($event[$fieldKey])) { + $dataToInsert[$columnName] = $event[$fieldKey]; + } + } + } + + $this->_db->insert($this->_table, $dataToInsert); + } +} diff --git a/library/Zend/Log/Writer/Firebug.php b/library/Zend/Log/Writer/Firebug.php new file mode 100755 index 000000000..b25310dd0 --- /dev/null +++ b/library/Zend/Log/Writer/Firebug.php @@ -0,0 +1,204 @@ + Zend_Wildfire_Plugin_FirePhp::ERROR, + Zend_Log::ALERT => Zend_Wildfire_Plugin_FirePhp::ERROR, + Zend_Log::CRIT => Zend_Wildfire_Plugin_FirePhp::ERROR, + Zend_Log::ERR => Zend_Wildfire_Plugin_FirePhp::ERROR, + Zend_Log::WARN => Zend_Wildfire_Plugin_FirePhp::WARN, + Zend_Log::NOTICE => Zend_Wildfire_Plugin_FirePhp::INFO, + Zend_Log::INFO => Zend_Wildfire_Plugin_FirePhp::INFO, + Zend_Log::DEBUG => Zend_Wildfire_Plugin_FirePhp::LOG); + + /** + * The default logging style for un-mapped priorities + * + * @var string + */ + protected $_defaultPriorityStyle = Zend_Wildfire_Plugin_FirePhp::LOG; + + /** + * Flag indicating whether the log writer is enabled + * + * @var boolean + */ + protected $_enabled = true; + + /** + * Class constructor + * + * @return void + */ + public function __construct() + { + if (php_sapi_name() == 'cli') { + $this->setEnabled(false); + } + + $this->_formatter = new Zend_Log_Formatter_Firebug(); + } + + /** + * Create a new instance of Zend_Log_Writer_Firebug + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_Firebug + */ + static public function factory($config) + { + return new self(); + } + + /** + * Enable or disable the log writer. + * + * @param boolean $enabled Set to TRUE to enable the log writer + * @return boolean The previous value. + */ + public function setEnabled($enabled) + { + $previous = $this->_enabled; + $this->_enabled = $enabled; + return $previous; + } + + /** + * Determine if the log writer is enabled. + * + * @return boolean Returns TRUE if the log writer is enabled. + */ + public function getEnabled() + { + return $this->_enabled; + } + + /** + * Set the default display style for user-defined priorities + * + * @param string $style The default log display style + * @return string Returns previous default log display style + */ + public function setDefaultPriorityStyle($style) + { + $previous = $this->_defaultPriorityStyle; + $this->_defaultPriorityStyle = $style; + return $previous; + } + + /** + * Get the default display style for user-defined priorities + * + * @return string Returns the default log display style + */ + public function getDefaultPriorityStyle() + { + return $this->_defaultPriorityStyle; + } + + /** + * Set a display style for a logging priority + * + * @param int $priority The logging priority + * @param string $style The logging display style + * @return string|boolean The previous logging display style if defined or TRUE otherwise + */ + public function setPriorityStyle($priority, $style) + { + $previous = true; + if (array_key_exists($priority,$this->_priorityStyles)) { + $previous = $this->_priorityStyles[$priority]; + } + $this->_priorityStyles[$priority] = $style; + return $previous; + } + + /** + * Get a display style for a logging priority + * + * @param int $priority The logging priority + * @return string|boolean The logging display style if defined or FALSE otherwise + */ + public function getPriorityStyle($priority) + { + if (array_key_exists($priority,$this->_priorityStyles)) { + return $this->_priorityStyles[$priority]; + } + return false; + } + + /** + * Log a message to the Firebug Console. + * + * @param array $event The event data + * @return void + */ + protected function _write($event) + { + if (!$this->getEnabled()) { + return; + } + + if (array_key_exists($event['priority'],$this->_priorityStyles)) { + $type = $this->_priorityStyles[$event['priority']]; + } else { + $type = $this->_defaultPriorityStyle; + } + + $message = $this->_formatter->format($event); + + $label = isset($event['firebugLabel'])?$event['firebugLabel']:null; + + Zend_Wildfire_Plugin_FirePhp::getInstance()->send($message, + $label, + $type, + array('traceOffset'=>4, + 'fixZendLogOffsetIfApplicable'=>true)); + } +} diff --git a/library/Zend/Log/Writer/Mail.php b/library/Zend/Log/Writer/Mail.php new file mode 100755 index 000000000..931dfe97b --- /dev/null +++ b/library/Zend/Log/Writer/Mail.php @@ -0,0 +1,430 @@ + 'setFrom', + 'to' => 'addTo', + 'cc' => 'addCc', + 'bcc' => 'addBcc', + ); + + /** + * Class constructor. + * + * Constructs the mail writer; requires a Zend_Mail instance, and takes an + * optional Zend_Layout instance. If Zend_Layout is being used, + * $this->_layout->events will be set for use in the layout template. + * + * @param Zend_Mail $mail Mail instance + * @param Zend_Layout $layout Layout instance; optional + * @return void + */ + public function __construct(Zend_Mail $mail, Zend_Layout $layout = null) + { + $this->_mail = $mail; + if (null !== $layout) { + $this->setLayout($layout); + } + $this->_formatter = new Zend_Log_Formatter_Simple(); + } + + /** + * Create a new instance of Zend_Log_Writer_Mail + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_Mail + */ + static public function factory($config) + { + $config = self::_parseConfig($config); + $mail = self::_constructMailFromConfig($config); + $writer = new self($mail); + + if (isset($config['layout']) || isset($config['layoutOptions'])) { + $writer->setLayout($config); + } + if (isset($config['layoutFormatter'])) { + $layoutFormatter = new $config['layoutFormatter']; + $writer->setLayoutFormatter($layoutFormatter); + } + if (isset($config['subjectPrependText'])) { + $writer->setSubjectPrependText($config['subjectPrependText']); + } + + return $writer; + } + + /** + * Set the layout + * + * @param Zend_Layout|array $layout + * @return Zend_Log_Writer_Mail + * @throws Zend_Log_Exception + */ + public function setLayout($layout) + { + if (is_array($layout)) { + $layout = $this->_constructLayoutFromConfig($layout); + } + + if (!$layout instanceof Zend_Layout) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Mail must be an instance of Zend_Layout or an array'); + } + $this->_layout = $layout; + + return $this; + } + + /** + * Construct a Zend_Mail instance based on a configuration array + * + * @param array $config + * @return Zend_Mail + * @throws Zend_Log_Exception + */ + protected static function _constructMailFromConfig(array $config) + { + $mailClass = 'Zend_Mail'; + if (isset($config['mail'])) { + $mailClass = $config['mail']; + } + + if (!array_key_exists('charset', $config)) { + $config['charset'] = null; + } + $mail = new $mailClass($config['charset']); + if (!$mail instanceof Zend_Mail) { + throw new Zend_Log_Exception($mail . 'must extend Zend_Mail'); + } + + if (isset($config['subject'])) { + $mail->setSubject($config['subject']); + } + + $headerAddresses = array_intersect_key($config, self::$_methodMapHeaders); + if (count($headerAddresses)) { + foreach ($headerAddresses as $header => $address) { + $method = self::$_methodMapHeaders[$header]; + if (is_array($address) && isset($address['name']) + && !is_numeric($address['name']) + ) { + $params = array( + $address['email'], + $address['name'] + ); + } else if (is_array($address) && isset($address['email'])) { + $params = array($address['email']); + } else { + $params = array($address); + } + call_user_func_array(array($mail, $method), $params); + } + } + + return $mail; + } + + /** + * Construct a Zend_Layout instance based on a configuration array + * + * @param array $config + * @return Zend_Layout + * @throws Zend_Log_Exception + */ + protected function _constructLayoutFromConfig(array $config) + { + $config = array_merge(array( + 'layout' => 'Zend_Layout', + 'layoutOptions' => null + ), $config); + + $layoutClass = $config['layout']; + $layout = new $layoutClass($config['layoutOptions']); + if (!$layout instanceof Zend_Layout) { + throw new Zend_Log_Exception($layout . 'must extend Zend_Layout'); + } + + return $layout; + } + + /** + * Places event line into array of lines to be used as message body. + * + * Handles the formatting of both plaintext entries, as well as those + * rendered with Zend_Layout. + * + * @param array $event Event data + * @return void + */ + protected function _write($event) + { + // Track the number of entries per priority level. + if (!isset($this->_numEntriesPerPriority[$event['priorityName']])) { + $this->_numEntriesPerPriority[$event['priorityName']] = 1; + } else { + $this->_numEntriesPerPriority[$event['priorityName']]++; + } + + $formattedEvent = $this->_formatter->format($event); + + // All plaintext events are to use the standard formatter. + $this->_eventsToMail[] = $formattedEvent; + + // If we have a Zend_Layout instance, use a specific formatter for the + // layout if one exists. Otherwise, just use the event with its + // default format. + if ($this->_layout) { + if ($this->_layoutFormatter) { + $this->_layoutEventsToMail[] = + $this->_layoutFormatter->format($event); + } else { + $this->_layoutEventsToMail[] = $formattedEvent; + } + } + } + + /** + * Gets instance of Zend_Log_Formatter_Instance used for formatting a + * message using Zend_Layout, if applicable. + * + * @return Zend_Log_Formatter_Interface|null The formatter, or null. + */ + public function getLayoutFormatter() + { + return $this->_layoutFormatter; + } + + /** + * Sets a specific formatter for use with Zend_Layout events. + * + * Allows use of a second formatter on lines that will be rendered with + * Zend_Layout. In the event that Zend_Layout is not being used, this + * formatter cannot be set, so an exception will be thrown. + * + * @param Zend_Log_Formatter_Interface $formatter + * @return Zend_Log_Writer_Mail + * @throws Zend_Log_Exception + */ + public function setLayoutFormatter(Zend_Log_Formatter_Interface $formatter) + { + if (!$this->_layout) { + throw new Zend_Log_Exception( + 'cannot set formatter for layout; ' . + 'a Zend_Layout instance is not in use'); + } + + $this->_layoutFormatter = $formatter; + return $this; + } + + /** + * Allows caller to have the mail subject dynamically set to contain the + * entry counts per-priority level. + * + * Sets the text for use in the subject, with entry counts per-priority + * level appended to the end. Since a Zend_Mail subject can only be set + * once, this method cannot be used if the Zend_Mail object already has a + * subject set. + * + * @param string $subject Subject prepend text. + * @return Zend_Log_Writer_Mail + * @throws Zend_Log_Exception + */ + public function setSubjectPrependText($subject) + { + if ($this->_mail->getSubject()) { + throw new Zend_Log_Exception( + 'subject already set on mail; ' . + 'cannot set subject prepend text'); + } + + $this->_subjectPrependText = (string) $subject; + return $this; + } + + /** + * Sends mail to recipient(s) if log entries are present. Note that both + * plaintext and HTML portions of email are handled here. + * + * @return void + */ + public function shutdown() + { + // If there are events to mail, use them as message body. Otherwise, + // there is no mail to be sent. + if (empty($this->_eventsToMail)) { + return; + } + + if ($this->_subjectPrependText !== null) { + // Tack on the summary of entries per-priority to the subject + // line and set it on the Zend_Mail object. + $numEntries = $this->_getFormattedNumEntriesPerPriority(); + $this->_mail->setSubject( + "{$this->_subjectPrependText} ({$numEntries})"); + } + + + // Always provide events to mail as plaintext. + $this->_mail->setBodyText(implode('', $this->_eventsToMail)); + + // If a Zend_Layout instance is being used, set its "events" + // value to the lines formatted for use with the layout. + if ($this->_layout) { + // Set the required "messages" value for the layout. Here we + // are assuming that the layout is for use with HTML. + $this->_layout->events = + implode('', $this->_layoutEventsToMail); + + // If an exception occurs during rendering, convert it to a notice + // so we can avoid an exception thrown without a stack frame. + try { + $this->_mail->setBodyHtml($this->_layout->render()); + } catch (Exception $e) { + trigger_error( + "exception occurred when rendering layout; " . + "unable to set html body for message; " . + "message = {$e->getMessage()}; " . + "code = {$e->getCode()}; " . + "exception class = " . get_class($e), + E_USER_NOTICE); + } + } + + // Finally, send the mail. If an exception occurs, convert it into a + // warning-level message so we can avoid an exception thrown without a + // stack frame. + try { + $this->_mail->send(); + } catch (Exception $e) { + trigger_error( + "unable to send log entries via email; " . + "message = {$e->getMessage()}; " . + "code = {$e->getCode()}; " . + "exception class = " . get_class($e), + E_USER_WARNING); + } + } + + /** + * Gets a string of number of entries per-priority level that occurred, or + * an emptry string if none occurred. + * + * @return string + */ + protected function _getFormattedNumEntriesPerPriority() + { + $strings = array(); + + foreach ($this->_numEntriesPerPriority as $priority => $numEntries) { + $strings[] = "{$priority}={$numEntries}"; + } + + return implode(', ', $strings); + } +} diff --git a/library/Zend/Log/Writer/Mock.php b/library/Zend/Log/Writer/Mock.php new file mode 100755 index 000000000..d8674bd85 --- /dev/null +++ b/library/Zend/Log/Writer/Mock.php @@ -0,0 +1,81 @@ +events[] = $event; + } + + /** + * Record shutdown + * + * @return void + */ + public function shutdown() + { + $this->shutdown = true; + } + + /** + * Create a new instance of Zend_Log_Writer_Mock + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_Mock + */ + static public function factory($config) + { + return new self(); + } +} diff --git a/library/Zend/Log/Writer/Null.php b/library/Zend/Log/Writer/Null.php new file mode 100755 index 000000000..f07bb7b6c --- /dev/null +++ b/library/Zend/Log/Writer/Null.php @@ -0,0 +1,56 @@ +_stream = $streamOrUrl; + } else { + if (is_array($streamOrUrl) && isset($streamOrUrl['stream'])) { + $streamOrUrl = $streamOrUrl['stream']; + } + + if (! $this->_stream = @fopen($streamOrUrl, $mode, false)) { + require_once 'Zend/Log/Exception.php'; + $msg = "\"$streamOrUrl\" cannot be opened with mode \"$mode\""; + throw new Zend_Log_Exception($msg); + } + } + + $this->_formatter = new Zend_Log_Formatter_Simple(); + } + + /** + * Create a new instance of Zend_Log_Writer_Stream + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_Stream + */ + static public function factory($config) + { + $config = self::_parseConfig($config); + $config = array_merge(array( + 'stream' => null, + 'mode' => null, + ), $config); + + $streamOrUrl = isset($config['url']) ? $config['url'] : $config['stream']; + + return new self( + $streamOrUrl, + $config['mode'] + ); + } + + /** + * Close the stream resource. + * + * @return void + */ + public function shutdown() + { + if (is_resource($this->_stream)) { + fclose($this->_stream); + } + } + + /** + * Write a message to the log. + * + * @param array $event event data + * @return void + * @throws Zend_Log_Exception + */ + protected function _write($event) + { + $line = $this->_formatter->format($event); + + if (false === @fwrite($this->_stream, $line)) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception("Unable to write to stream"); + } + } +} diff --git a/library/Zend/Log/Writer/Syslog.php b/library/Zend/Log/Writer/Syslog.php new file mode 100755 index 000000000..66dfeaabf --- /dev/null +++ b/library/Zend/Log/Writer/Syslog.php @@ -0,0 +1,267 @@ + LOG_EMERG, + Zend_Log::ALERT => LOG_ALERT, + Zend_Log::CRIT => LOG_CRIT, + Zend_Log::ERR => LOG_ERR, + Zend_Log::WARN => LOG_WARNING, + Zend_Log::NOTICE => LOG_NOTICE, + Zend_Log::INFO => LOG_INFO, + Zend_Log::DEBUG => LOG_DEBUG, + ); + + /** + * The default log priority - for unmapped custom priorities + * + * @var string + */ + protected $_defaultPriority = LOG_NOTICE; + + /** + * Last application name set by a syslog-writer instance + * + * @var string + */ + protected static $_lastApplication; + + /** + * Last facility name set by a syslog-writer instance + * + * @var string + */ + protected static $_lastFacility; + + /** + * Application name used by this syslog-writer instance + * + * @var string + */ + protected $_application = 'Zend_Log'; + + /** + * Facility used by this syslog-writer instance + * + * @var int + */ + protected $_facility = LOG_USER; + + /** + * Types of program available to logging of message + * + * @var array + */ + protected $_validFacilities = array(); + + /** + * Class constructor + * + * @param array $params Array of options; may include "application" and "facility" keys + * @return void + */ + public function __construct(array $params = array()) + { + if (isset($params['application'])) { + $this->_application = $params['application']; + } + + $runInitializeSyslog = true; + if (isset($params['facility'])) { + $this->setFacility($params['facility']); + $runInitializeSyslog = false; + } + + if ($runInitializeSyslog) { + $this->_initializeSyslog(); + } + } + + /** + * Create a new instance of Zend_Log_Writer_Syslog + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_Syslog + */ + static public function factory($config) + { + return new self(self::_parseConfig($config)); + } + + /** + * Initialize values facilities + * + * @return void + */ + protected function _initializeValidFacilities() + { + $constants = array( + 'LOG_AUTH', + 'LOG_AUTHPRIV', + 'LOG_CRON', + 'LOG_DAEMON', + 'LOG_KERN', + 'LOG_LOCAL0', + 'LOG_LOCAL1', + 'LOG_LOCAL2', + 'LOG_LOCAL3', + 'LOG_LOCAL4', + 'LOG_LOCAL5', + 'LOG_LOCAL6', + 'LOG_LOCAL7', + 'LOG_LPR', + 'LOG_MAIL', + 'LOG_NEWS', + 'LOG_SYSLOG', + 'LOG_USER', + 'LOG_UUCP' + ); + + foreach ($constants as $constant) { + if (defined($constant)) { + $this->_validFacilities[] = constant($constant); + } + } + } + + /** + * Initialize syslog / set application name and facility + * + * @return void + */ + protected function _initializeSyslog() + { + self::$_lastApplication = $this->_application; + self::$_lastFacility = $this->_facility; + openlog($this->_application, LOG_PID, $this->_facility); + } + + /** + * Set syslog facility + * + * @param int $facility Syslog facility + * @return Zend_Log_Writer_Syslog + * @throws Zend_Log_Exception for invalid log facility + */ + public function setFacility($facility) + { + if ($this->_facility === $facility) { + return $this; + } + + if (!count($this->_validFacilities)) { + $this->_initializeValidFacilities(); + } + + if (!in_array($facility, $this->_validFacilities)) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Invalid log facility provided; please see http://php.net/openlog for a list of valid facility values'); + } + + if ('WIN' == strtoupper(substr(PHP_OS, 0, 3)) + && ($facility !== LOG_USER) + ) { + require_once 'Zend/Log/Exception.php'; + throw new Zend_Log_Exception('Only LOG_USER is a valid log facility on Windows'); + } + + $this->_facility = $facility; + $this->_initializeSyslog(); + return $this; + } + + /** + * Set application name + * + * @param string $application Application name + * @return Zend_Log_Writer_Syslog + */ + public function setApplicationName($application) + { + if ($this->_application === $application) { + return $this; + } + $this->_application = $application; + $this->_initializeSyslog(); + return $this; + } + + /** + * Close syslog. + * + * @return void + */ + public function shutdown() + { + closelog(); + } + + /** + * Write a message to syslog. + * + * @param array $event event data + * @return void + */ + protected function _write($event) + { + if (array_key_exists($event['priority'], $this->_priorities)) { + $priority = $this->_priorities[$event['priority']]; + } else { + $priority = $this->_defaultPriority; + } + + if ($this->_application !== self::$_lastApplication + || $this->_facility !== self::$_lastFacility) + { + $this->_initializeSyslog(); + } + + $message = $event['message']; + if ($this->_formatter instanceof Zend_Log_Formatter_Interface) { + $message = $this->_formatter->format($event); + } + + syslog($priority, $message); + } +} diff --git a/library/Zend/Log/Writer/ZendMonitor.php b/library/Zend/Log/Writer/ZendMonitor.php new file mode 100755 index 000000000..0713a8922 --- /dev/null +++ b/library/Zend/Log/Writer/ZendMonitor.php @@ -0,0 +1,131 @@ +_isEnabled = false; + } + if (function_exists('zend_monitor_custom_event')) { + $this->_isZendServer = true; + } + } + + /** + * Create a new instance of Zend_Log_Writer_ZendMonitor + * + * @param array|Zend_Config $config + * @return Zend_Log_Writer_ZendMonitor + */ + static public function factory($config) + { + return new self(); + } + + /** + * Is logging to this writer enabled? + * + * If the Zend Monitor extension is not enabled, this log writer will + * fail silently. You can query this method to determine if the log + * writer is enabled. + * + * @return boolean + */ + public function isEnabled() + { + return $this->_isEnabled; + } + + /** + * Log a message to this writer. + * + * @param array $event log data event + * @return void + */ + public function write($event) + { + if (!$this->isEnabled()) { + return; + } + + parent::write($event); + } + + /** + * Write a message to the log. + * + * @param array $event log data event + * @return void + */ + protected function _write($event) + { + $priority = $event['priority']; + $message = $event['message']; + unset($event['priority'], $event['message']); + + if (!empty($event)) { + if ($this->_isZendServer) { + // On Zend Server; third argument should be the event + zend_monitor_custom_event($priority, $message, $event); + } else { + // On Zend Platform; third argument is severity -- either + // 0 or 1 -- and fourth is optional (event) + // Severity is either 0 (normal) or 1 (severe); classifying + // notice, info, and debug as "normal", and all others as + // "severe" + monitor_custom_event($priority, $message, ($priority > 4) ? 0 : 1, $event); + } + } else { + monitor_custom_event($priority, $message); + } + } +} diff --git a/library/Zend/Mail.php b/library/Zend/Mail.php new file mode 100755 index 000000000..264d9790b --- /dev/null +++ b/library/Zend/Mail.php @@ -0,0 +1,1283 @@ +_charset = $charset; + } + } + + /** + * Return charset string + * + * @return string + */ + public function getCharset() + { + return $this->_charset; + } + + /** + * Set content type + * + * Should only be used for manually setting multipart content types. + * + * @param string $type Content type + * @return Zend_Mail Implements fluent interface + * @throws Zend_Mail_Exception for types not supported by Zend_Mime + */ + public function setType($type) + { + $allowed = array( + Zend_Mime::MULTIPART_ALTERNATIVE, + Zend_Mime::MULTIPART_MIXED, + Zend_Mime::MULTIPART_RELATED, + ); + if (!in_array($type, $allowed)) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Invalid content type "' . $type . '"'); + } + + $this->_type = $type; + return $this; + } + + /** + * Get content type of the message + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Set an arbitrary mime boundary for the message + * + * If not set, Zend_Mime will generate one. + * + * @param string $boundary + * @return Zend_Mail Provides fluent interface + */ + public function setMimeBoundary($boundary) + { + $this->_mimeBoundary = $boundary; + + return $this; + } + + /** + * Return the boundary string used for the message + * + * @return string + */ + public function getMimeBoundary() + { + return $this->_mimeBoundary; + } + + /** + * Return encoding of mail headers + * + * @deprecated use {@link getHeaderEncoding()} instead + * @return string + */ + public function getEncodingOfHeaders() + { + return $this->getHeaderEncoding(); + } + + /** + * Return the encoding of mail headers + * + * Either Zend_Mime::ENCODING_QUOTEDPRINTABLE or Zend_Mime::ENCODING_BASE64 + * + * @return string + */ + public function getHeaderEncoding() + { + return $this->_headerEncoding; + } + + /** + * Set the encoding of mail headers + * + * @deprecated Use {@link setHeaderEncoding()} instead. + * @param string $encoding + * @return Zend_Mail + */ + public function setEncodingOfHeaders($encoding) + { + return $this->setHeaderEncoding($encoding); + } + + /** + * Set the encoding of mail headers + * + * @param string $encoding Zend_Mime::ENCODING_QUOTEDPRINTABLE or + * Zend_Mime::ENCODING_BASE64 + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception + */ + public function setHeaderEncoding($encoding) + { + $allowed = array( + Zend_Mime::ENCODING_BASE64, + Zend_Mime::ENCODING_QUOTEDPRINTABLE + ); + if (!in_array($encoding, $allowed)) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Invalid encoding "' . $encoding . '"'); + } + $this->_headerEncoding = $encoding; + + return $this; + } + + /** + * Sets the text body for the message. + * + * @param string $txt + * @param string $charset + * @param string $encoding + * @return Zend_Mail Provides fluent interface + */ + public function setBodyText($txt, $charset = null, $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE) + { + if ($charset === null) { + $charset = $this->_charset; + } + + $mp = new Zend_Mime_Part($txt); + $mp->encoding = $encoding; + $mp->type = Zend_Mime::TYPE_TEXT; + $mp->disposition = Zend_Mime::DISPOSITION_INLINE; + $mp->charset = $charset; + + $this->_bodyText = $mp; + + return $this; + } + + /** + * Return text body Zend_Mime_Part or string + * + * @param bool $textOnly Whether to return just the body text content or + * the MIME part; defaults to false, the MIME part + * @return false|Zend_Mime_Part|string + */ + public function getBodyText($textOnly = false) + { + if ($textOnly && $this->_bodyText) { + $body = $this->_bodyText; + return $body->getContent(); + } + + return $this->_bodyText; + } + + /** + * Sets the HTML body for the message + * + * @param string $html + * @param string $charset + * @param string $encoding + * @return Zend_Mail Provides fluent interface + */ + public function setBodyHtml($html, $charset = null, $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE) + { + if ($charset === null) { + $charset = $this->_charset; + } + + $mp = new Zend_Mime_Part($html); + $mp->encoding = $encoding; + $mp->type = Zend_Mime::TYPE_HTML; + $mp->disposition = Zend_Mime::DISPOSITION_INLINE; + $mp->charset = $charset; + + $this->_bodyHtml = $mp; + + return $this; + } + + /** + * Return Zend_Mime_Part representing body HTML + * + * @param bool $htmlOnly Whether to return the body HTML only, or the MIME part; defaults to false, the MIME part + * @return false|Zend_Mime_Part|string + */ + public function getBodyHtml($htmlOnly = false) + { + if ($htmlOnly && $this->_bodyHtml) { + $body = $this->_bodyHtml; + return $body->getContent(); + } + + return $this->_bodyHtml; + } + + /** + * Adds an existing attachment to the mail message + * + * @param Zend_Mime_Part $attachment + * @return Zend_Mail Provides fluent interface + */ + public function addAttachment(Zend_Mime_Part $attachment) + { + $this->addPart($attachment); + $this->hasAttachments = true; + + return $this; + } + + /** + * Creates a Zend_Mime_Part attachment + * + * Attachment is automatically added to the mail object after creation. The + * attachment object is returned to allow for further manipulation. + * + * @param string $body + * @param string $mimeType + * @param string $disposition + * @param string $encoding + * @param string $filename OPTIONAL A filename for the attachment + * @return Zend_Mime_Part Newly created Zend_Mime_Part object (to allow + * advanced settings) + */ + public function createAttachment($body, + $mimeType = Zend_Mime::TYPE_OCTETSTREAM, + $disposition = Zend_Mime::DISPOSITION_ATTACHMENT, + $encoding = Zend_Mime::ENCODING_BASE64, + $filename = null) + { + + $mp = new Zend_Mime_Part($body); + $mp->encoding = $encoding; + $mp->type = $mimeType; + $mp->disposition = $disposition; + $mp->filename = $filename; + + $this->addAttachment($mp); + + return $mp; + } + + /** + * Return a count of message parts + * + * @return integer + */ + public function getPartCount() + { + return count($this->_parts); + } + + /** + * Encode header fields + * + * Encodes header content according to RFC1522 if it contains non-printable + * characters. + * + * @param string $value + * @return string + */ + protected function _encodeHeader($value) + { + if (Zend_Mime::isPrintable($value) === false) { + if ($this->getHeaderEncoding() === Zend_Mime::ENCODING_QUOTEDPRINTABLE) { + $value = Zend_Mime::encodeQuotedPrintableHeader($value, $this->getCharset(), Zend_Mime::LINELENGTH, Zend_Mime::LINEEND); + } else { + $value = Zend_Mime::encodeBase64Header($value, $this->getCharset(), Zend_Mime::LINELENGTH, Zend_Mime::LINEEND); + } + } + + return $value; + } + + /** + * Add a header to the message + * + * Adds a header to this message. If append is true and the header already + * exists, raises a flag indicating that the header should be appended. + * + * @param string $headerName + * @param string $value + * @param bool $append + */ + protected function _storeHeader($headerName, $value, $append = false) + { + if (isset($this->_headers[$headerName])) { + $this->_headers[$headerName][] = $value; + } else { + $this->_headers[$headerName] = array($value); + } + + if ($append) { + $this->_headers[$headerName]['append'] = true; + } + + } + + /** + * Clear header from the message + * + * @param string $headerName + * @deprecated use public method directly + */ + protected function _clearHeader($headerName) + { + $this->clearHeader($headerName); + } + + /** + * Helper function for adding a recipient and the corresponding header + * + * @param string $headerName + * @param string $email + * @param string $name + */ + protected function _addRecipientAndHeader($headerName, $email, $name) + { + $email = $this->_filterEmail($email); + $name = $this->_filterName($name); + // prevent duplicates + $this->_recipients[$email] = 1; + $this->_storeHeader($headerName, $this->_formatAddress($email, $name), true); + } + + /** + * Adds To-header and recipient, $email can be an array, or a single string + * address + * + * @param string|array $email + * @param string $name + * @return Zend_Mail Provides fluent interface + */ + public function addTo($email, $name='') + { + if (!is_array($email)) { + $email = array($name => $email); + } + + foreach ($email as $n => $recipient) { + $this->_addRecipientAndHeader('To', $recipient, is_int($n) ? '' : $n); + $this->_to[] = $recipient; + } + + return $this; + } + + /** + * Adds Cc-header and recipient, $email can be an array, or a single string + * address + * + * @param string|array $email + * @param string $name + * @return Zend_Mail Provides fluent interface + */ + public function addCc($email, $name='') + { + if (!is_array($email)) { + $email = array($name => $email); + } + + foreach ($email as $n => $recipient) { + $this->_addRecipientAndHeader('Cc', $recipient, is_int($n) ? '' : $n); + } + + return $this; + } + + /** + * Adds Bcc recipient, $email can be an array, or a single string address + * + * @param string|array $email + * @return Zend_Mail Provides fluent interface + */ + public function addBcc($email) + { + if (!is_array($email)) { + $email = array($email); + } + + foreach ($email as $recipient) { + $this->_addRecipientAndHeader('Bcc', $recipient, ''); + } + + return $this; + } + + /** + * Return list of recipient email addresses + * + * @return array (of strings) + */ + public function getRecipients() + { + return array_keys($this->_recipients); + } + + /** + * Clear header from the message + * + * @param string $headerName + * @return Zend_Mail Provides fluent inter + */ + public function clearHeader($headerName) + { + if (isset($this->_headers[$headerName])){ + unset($this->_headers[$headerName]); + } + return $this; + } + + /** + * Clears list of recipient email addresses + * + * @return Zend_Mail Provides fluent interface + */ + public function clearRecipients() + { + $this->_recipients = array(); + $this->_to = array(); + + $this->clearHeader('To'); + $this->clearHeader('Cc'); + $this->clearHeader('Bcc'); + + return $this; + } + + /** + * Sets From-header and sender of the message + * + * @param string $email + * @param string $name + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception if called subsequent times + */ + public function setFrom($email, $name = null) + { + if (null !== $this->_from) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('From Header set twice'); + } + + $email = $this->_filterEmail($email); + $name = $this->_filterName($name); + $this->_from = $email; + $this->_storeHeader('From', $this->_formatAddress($email, $name), true); + + return $this; + } + + /** + * Set Reply-To Header + * + * @param string $email + * @param string $name + * @return Zend_Mail + * @throws Zend_Mail_Exception if called more than one time + */ + public function setReplyTo($email, $name = null) + { + if (null !== $this->_replyTo) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Reply-To Header set twice'); + } + + $email = $this->_filterEmail($email); + $name = $this->_filterName($name); + $this->_replyTo = $email; + $this->_storeHeader('Reply-To', $this->_formatAddress($email, $name), true); + + return $this; + } + + /** + * Returns the sender of the mail + * + * @return string + */ + public function getFrom() + { + return $this->_from; + } + + /** + * Returns the current Reply-To address of the message + * + * @return string|null Reply-To address, null when not set + */ + public function getReplyTo() + { + return $this->_replyTo; + } + + /** + * Clears the sender from the mail + * + * @return Zend_Mail Provides fluent interface + */ + public function clearFrom() + { + $this->_from = null; + $this->clearHeader('From'); + + return $this; + } + + /** + * Clears the current Reply-To address from the message + * + * @return Zend_Mail Provides fluent interface + */ + public function clearReplyTo() + { + $this->_replyTo = null; + $this->clearHeader('Reply-To'); + + return $this; + } + + /** + * Sets Default From-email and name of the message + * + * @param string $email + * @param string $name optional + * @return void + */ + public static function setDefaultFrom($email, $name = null) + { + self::$_defaultFrom = array('email' => $email, 'name' => $name); + } + + /** + * Returns the default sender of the mail + * + * @return null|array Null if none was set. + */ + public static function getDefaultFrom() + { + return self::$_defaultFrom; + } + + /** + * Clears the default sender from the mail + * + * @return void + */ + public static function clearDefaultFrom() + { + self::$_defaultFrom = null; + } + + /** + * Sets From-name and -email based on the defaults + * + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception + */ + public function setFromToDefaultFrom() { + $from = self::getDefaultFrom(); + if($from === null) { + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception( + 'No default From Address set to use'); + } + + $this->setFrom($from['email'], $from['name']); + + return $this; + } + + /** + * Sets Default ReplyTo-address and -name of the message + * + * @param string $email + * @param string $name optional + * @return void + */ + public static function setDefaultReplyTo($email, $name = null) + { + self::$_defaultReplyTo = array('email' => $email, 'name' => $name); + } + + /** + * Returns the default Reply-To Address and Name of the mail + * + * @return null|array Null if none was set. + */ + public static function getDefaultReplyTo() + { + return self::$_defaultReplyTo; + } + + /** + * Clears the default ReplyTo-address and -name from the mail + * + * @return void + */ + public static function clearDefaultReplyTo() + { + self::$_defaultReplyTo = null; + } + + /** + * Sets ReplyTo-name and -email based on the defaults + * + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception + */ + public function setReplyToFromDefault() { + $replyTo = self::getDefaultReplyTo(); + if($replyTo === null) { + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception( + 'No default Reply-To Address set to use'); + } + + $this->setReplyTo($replyTo['email'], $replyTo['name']); + + return $this; + } + + /** + * Sets the Return-Path header of the message + * + * @param string $email + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception if set multiple times + */ + public function setReturnPath($email) + { + if ($this->_returnPath === null) { + $email = $this->_filterEmail($email); + $this->_returnPath = $email; + $this->_storeHeader('Return-Path', $email, false); + } else { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Return-Path Header set twice'); + } + return $this; + } + + /** + * Returns the current Return-Path address of the message + * + * If no Return-Path header is set, returns the value of {@link $_from}. + * + * @return string + */ + public function getReturnPath() + { + if (null !== $this->_returnPath) { + return $this->_returnPath; + } + + return $this->_from; + } + + /** + * Clears the current Return-Path address from the message + * + * @return Zend_Mail Provides fluent interface + */ + public function clearReturnPath() + { + $this->_returnPath = null; + $this->clearHeader('Return-Path'); + + return $this; + } + + /** + * Sets the subject of the message + * + * @param string $subject + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception + */ + public function setSubject($subject) + { + if ($this->_subject === null) { + $subject = $this->_filterOther($subject); + $this->_subject = $this->_encodeHeader($subject); + $this->_storeHeader('Subject', $this->_subject); + } else { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Subject set twice'); + } + return $this; + } + + /** + * Returns the encoded subject of the message + * + * @return string + */ + public function getSubject() + { + return $this->_subject; + } + + /** + * Clears the encoded subject from the message + * + * @return Zend_Mail Provides fluent interface + */ + public function clearSubject() + { + $this->_subject = null; + $this->clearHeader('Subject'); + + return $this; + } + + /** + * Sets Date-header + * + * @param int|string|Zend_Date $date + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception if called subsequent times or wrong date + * format. + */ + public function setDate($date = null) + { + if ($this->_date === null) { + if ($date === null) { + $date = date('r'); + } else if (is_int($date)) { + $date = date('r', $date); + } else if (is_string($date)) { + $date = strtotime($date); + if ($date === false || $date < 0) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('String representations of Date Header must be ' . + 'strtotime()-compatible'); + } + $date = date('r', $date); + } else if ($date instanceof Zend_Date) { + $date = $date->get(Zend_Date::RFC_2822); + } else { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception(__METHOD__ . ' only accepts UNIX timestamps, Zend_Date objects, ' . + ' and strtotime()-compatible strings'); + } + $this->_date = $date; + $this->_storeHeader('Date', $date); + } else { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Date Header set twice'); + } + return $this; + } + + /** + * Returns the formatted date of the message + * + * @return string + */ + public function getDate() + { + return $this->_date; + } + + /** + * Clears the formatted date from the message + * + * @return Zend_Mail Provides fluent interface + */ + public function clearDate() + { + $this->_date = null; + $this->clearHeader('Date'); + + return $this; + } + + /** + * Sets the Message-ID of the message + * + * @param boolean|string $id + * true :Auto + * false :No set + * null :No set + * string:Sets given string (Angle brackets is not necessary) + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception + */ + public function setMessageId($id = true) + { + if ($id === null || $id === false) { + return $this; + } elseif ($id === true) { + $id = $this->createMessageId(); + } + + if ($this->_messageId === null) { + $id = $this->_filterOther($id); + $this->_messageId = $id; + $this->_storeHeader('Message-Id', '<' . $this->_messageId . '>'); + } else { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Message-ID set twice'); + } + + return $this; + } + + /** + * Returns the Message-ID of the message + * + * @return string + */ + public function getMessageId() + { + return $this->_messageId; + } + + + /** + * Clears the Message-ID from the message + * + * @return Zend_Mail Provides fluent interface + */ + public function clearMessageId() + { + $this->_messageId = null; + $this->clearHeader('Message-Id'); + + return $this; + } + + /** + * Creates the Message-ID + * + * @return string + */ + public function createMessageId() { + + $time = time(); + + if ($this->_from !== null) { + $user = $this->_from; + } elseif (isset($_SERVER['REMOTE_ADDR'])) { + $user = $_SERVER['REMOTE_ADDR']; + } else { + $user = getmypid(); + } + + $rand = mt_rand(); + + if ($this->_recipients !== array()) { + $recipient = array_rand($this->_recipients); + } else { + $recipient = 'unknown'; + } + + if (isset($_SERVER["SERVER_NAME"])) { + $hostName = $_SERVER["SERVER_NAME"]; + } else { + $hostName = php_uname('n'); + } + + return sha1($time . $user . $rand . $recipient) . '@' . $hostName; + } + + /** + * Add a custom header to the message + * + * @param string $name + * @param string $value + * @param boolean $append + * @return Zend_Mail Provides fluent interface + * @throws Zend_Mail_Exception on attempts to create standard headers + */ + public function addHeader($name, $value, $append = false) + { + $prohibit = array('to', 'cc', 'bcc', 'from', 'subject', + 'reply-to', 'return-path', + 'date', 'message-id', + ); + if (in_array(strtolower($name), $prohibit)) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Cannot set standard header from addHeader()'); + } + + $value = $this->_filterOther($value); + $value = $this->_encodeHeader($value); + $this->_storeHeader($name, $value, $append); + + return $this; + } + + /** + * Return mail headers + * + * @return array + */ + public function getHeaders() + { + return $this->_headers; + } + + /** + * Sends this email using the given transport or a previously + * set DefaultTransport or the internal mail function if no + * default transport had been set. + * + * @param Zend_Mail_Transport_Abstract $transport + * @return Zend_Mail Provides fluent interface + */ + public function send($transport = null) + { + if ($transport === null) { + if (! self::$_defaultTransport instanceof Zend_Mail_Transport_Abstract) { + require_once 'Zend/Mail/Transport/Sendmail.php'; + $transport = new Zend_Mail_Transport_Sendmail(); + } else { + $transport = self::$_defaultTransport; + } + } + + if ($this->_date === null) { + $this->setDate(); + } + + if(null === $this->_from && null !== self::getDefaultFrom()) { + $this->setFromToDefaultFrom(); + } + + if(null === $this->_replyTo && null !== self::getDefaultReplyTo()) { + $this->setReplyToFromDefault(); + } + + $transport->send($this); + + return $this; + } + + /** + * Filter of email data + * + * @param string $email + * @return string + */ + protected function _filterEmail($email) + { + $rule = array("\r" => '', + "\n" => '', + "\t" => '', + '"' => '', + ',' => '', + '<' => '', + '>' => '', + ); + + return strtr($email, $rule); + } + + /** + * Filter of name data + * + * @param string $name + * @return string + */ + protected function _filterName($name) + { + $rule = array("\r" => '', + "\n" => '', + "\t" => '', + '"' => "'", + '<' => '[', + '>' => ']', + ); + + return trim(strtr($name, $rule)); + } + + /** + * Filter of other data + * + * @param string $data + * @return string + */ + protected function _filterOther($data) + { + $rule = array("\r" => '', + "\n" => '', + "\t" => '', + ); + + return strtr($data, $rule); + } + + /** + * Formats e-mail address + * + * @param string $email + * @param string $name + * @return string + */ + protected function _formatAddress($email, $name) + { + if ($name === '' || $name === null || $name === $email) { + return $email; + } else { + $encodedName = $this->_encodeHeader($name); + if ($encodedName === $name && strcspn($name, '()<>[]:;@\\,.') != strlen($name)) { + $format = '"%s" <%s>'; + } else { + $format = '%s <%s>'; + } + return sprintf($format, $encodedName, $email); + } + } + +} diff --git a/library/Zend/Mail/Exception.php b/library/Zend/Mail/Exception.php new file mode 100755 index 000000000..4632a5820 --- /dev/null +++ b/library/Zend/Mail/Exception.php @@ -0,0 +1,37 @@ + 32 && $ord < 127 && $ord !== 58) { + $result .= $name[$i]; + } + } + return $result; + } + + /** + * Determine if the header name contains any invalid characters. + * + * @param string $name + * @return bool + */ + public static function isValid($name) + { + $tot = strlen($name); + for ($i = 0; $i < $tot; $i += 1) { + $ord = ord($name[$i]); + if ($ord < 33 || $ord > 126 || $ord === 58) { + return false; + } + } + return true; + } + + /** + * Assert that the header name is valid. + * + * Raises an exception if invalid. + * + * @param string $name + * @throws Exception\RuntimeException + * @return void + */ + public static function assertValid($name) + { + if (! self::isValid($name)) { + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Invalid header name detected'); + } + } +} diff --git a/library/Zend/Mail/Header/HeaderValue.php b/library/Zend/Mail/Header/HeaderValue.php new file mode 100755 index 000000000..d75d59fa1 --- /dev/null +++ b/library/Zend/Mail/Header/HeaderValue.php @@ -0,0 +1,136 @@ + 126) + && $ord !== 13 + ) { + continue; + } + + if ($ord === 13) { + if ($i + 2 >= $tot) { + continue; + } + + $lf = ord($value[$i + 1]); + $sp = ord($value[$i + 2]); + + if ($lf !== 10 || $sp !== 32) { + continue; + } + + $result .= "\r\n "; + $i += 2; + continue; + } + + $result .= $value[$i]; + } + + return $result; + } + + /** + * Determine if the header value contains any invalid characters. + * + * @see http://www.rfc-base.org/txt/rfc-2822.txt (section 2.2) + * @param string $value + * @return bool + */ + public static function isValid($value) + { + $tot = strlen($value); + for ($i = 0; $i < $tot; $i += 1) { + $ord = ord($value[$i]); + if (($ord < 32 || $ord > 126) + && $ord !== 13 + ) { + return false; + } + + if ($ord === 13) { + if ($i + 2 >= $tot) { + return false; + } + + $lf = ord($value[$i + 1]); + $sp = ord($value[$i + 2]); + + if ($lf !== 10 || $sp !== 32) { + return false; + } + + $i += 2; + } + } + + return true; + } + + /** + * Assert that the header value is valid. + * + * Raises an exception if invalid. + * + * @param string $value + * @throws Exception\RuntimeException + * @return void + */ + public static function assertValid($value) + { + if (! self::isValid($value)) { + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('Invalid header value detected'); + } + } +} diff --git a/library/Zend/Mail/Message.php b/library/Zend/Mail/Message.php new file mode 100755 index 000000000..9d3c8bc52 --- /dev/null +++ b/library/Zend/Mail/Message.php @@ -0,0 +1,113 @@ +_flags = array_merge($this->_flags, array_combine($params['flags'],$params['flags'])); + } + + parent::__construct($params); + } + + /** + * return toplines as found after headers + * + * @return string toplines + */ + public function getTopLines() + { + return $this->_topLines; + } + + /** + * check if flag is set + * + * @param mixed $flag a flag name, use constants defined in Zend_Mail_Storage + * @return bool true if set, otherwise false + */ + public function hasFlag($flag) + { + return isset($this->_flags[$flag]); + } + + /** + * get all set flags + * + * @return array array with flags, key and value are the same for easy lookup + */ + public function getFlags() + { + return $this->_flags; + } +} diff --git a/library/Zend/Mail/Message/File.php b/library/Zend/Mail/Message/File.php new file mode 100755 index 000000000..6f57be6ba --- /dev/null +++ b/library/Zend/Mail/Message/File.php @@ -0,0 +1,96 @@ +_flags = array_combine($params['flags'], $params['flags']); + } + + parent::__construct($params); + } + + /** + * return toplines as found after headers + * + * @return string toplines + */ + public function getTopLines() + { + return $this->_topLines; + } + + /** + * check if flag is set + * + * @param mixed $flag a flag name, use constants defined in Zend_Mail_Storage + * @return bool true if set, otherwise false + */ + public function hasFlag($flag) + { + return isset($this->_flags[$flag]); + } + + /** + * get all set flags + * + * @return array array with flags, key and value are the same for easy lookup + */ + public function getFlags() + { + return $this->_flags; + } +} diff --git a/library/Zend/Mail/Message/Interface.php b/library/Zend/Mail/Message/Interface.php new file mode 100755 index 000000000..dad796414 --- /dev/null +++ b/library/Zend/Mail/Message/Interface.php @@ -0,0 +1,55 @@ + value) or string, if a content part is found it's used as toplines + * - noToplines ignore content found after headers in param 'headers' + * - content content as string + * + * @param array $params full message with or without headers + * @throws Zend_Mail_Exception + */ + public function __construct(array $params) + { + if (isset($params['handler'])) { + if (!$params['handler'] instanceof Zend_Mail_Storage_Abstract) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('handler is not a valid mail handler'); + } + if (!isset($params['id'])) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('need a message id with a handler'); + } + + $this->_mail = $params['handler']; + $this->_messageNum = $params['id']; + } + + if (isset($params['partclass'])) { + $this->setPartClass($params['partclass']); + } + + if (isset($params['raw'])) { + Zend_Mime_Decode::splitMessage($params['raw'], $this->_headers, $this->_content, "\r\n"); + } else if (isset($params['headers'])) { + if (is_array($params['headers'])) { + $this->_headers = $params['headers']; + $this->_validateHeaders($this->_headers); + } else { + if (!empty($params['noToplines'])) { + Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $null, "\r\n"); + } else { + Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $this->_topLines, "\r\n"); + } + } + + if (isset($params['content'])) { + $this->_content = $params['content']; + } + } + } + + /** + * Set name pf class used to encapsulate message parts + * @param string $class + * @return Zend_Mail_Part + */ + public function setPartClass($class) + { + if ( !class_exists($class) ) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception("Class '{$class}' does not exist"); + } + if ( !is_subclass_of($class, 'Zend_Mail_Part_Interface') ) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception("Class '{$class}' must implement Zend_Mail_Part_Interface"); + } + + $this->_partClass = $class; + return $this; + } + + /** + * Retrieve the class name used to encapsulate message parts + * @return string + */ + public function getPartClass() + { + if ( !$this->_partClass ) { + $this->_partClass = __CLASS__; + } + return $this->_partClass; + } + + public function count() + { + return $this->countParts(); + } + + + /** + * Check if part is a multipart message + * + * @return bool if part is multipart + */ + public function isMultipart() + { + try { + return stripos($this->contentType, 'multipart/') === 0; + } catch(Zend_Mail_Exception $e) { + return false; + } + } + + + /** + * Body of part + * + * If part is multipart the raw content of this part with all sub parts is returned + * + * @return string body + * @throws Zend_Mail_Exception + */ + public function getContent() + { + if ($this->_content !== null) { + return $this->_content; + } + + if ($this->_mail) { + return $this->_mail->getRawContent($this->_messageNum); + } else { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('no content'); + } + } + + /** + * Return size of part + * + * Quite simple implemented currently (not decoding). Handle with care. + * + * @return int size + */ + public function getSize() { + return strlen($this->getContent()); + } + + + /** + * Cache content and split in parts if multipart + * + * @return null + * @throws Zend_Mail_Exception + */ + protected function _cacheContent() + { + // caching content if we can't fetch parts + if ($this->_content === null && $this->_mail) { + $this->_content = $this->_mail->getRawContent($this->_messageNum); + } + + if (!$this->isMultipart()) { + return; + } + + // split content in parts + $boundary = $this->getHeaderField('content-type', 'boundary'); + if (!$boundary) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('no boundary found in content type to split message'); + } + $parts = Zend_Mime_Decode::splitMessageStruct($this->_content, $boundary); + if ($parts === null) { + return; + } + $partClass = $this->getPartClass(); + $counter = 1; + foreach ($parts as $part) { + $this->_parts[$counter++] = new $partClass(array('headers' => $part['header'], 'content' => $part['body'])); + } + } + + /** + * Get part of multipart message + * + * @param int $num number of part starting with 1 for first part + * @return Zend_Mail_Part wanted part + * @throws Zend_Mail_Exception + */ + public function getPart($num) + { + if (isset($this->_parts[$num])) { + return $this->_parts[$num]; + } + + if (!$this->_mail && $this->_content === null) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('part not found'); + } + + if ($this->_mail && $this->_mail->hasFetchPart) { + // TODO: fetch part + // return + } + + $this->_cacheContent(); + + if (!isset($this->_parts[$num])) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('part not found'); + } + + return $this->_parts[$num]; + } + + /** + * Count parts of a multipart part + * + * @return int number of sub-parts + */ + public function countParts() + { + if ($this->_countParts) { + return $this->_countParts; + } + + $this->_countParts = count($this->_parts); + if ($this->_countParts) { + return $this->_countParts; + } + + if ($this->_mail && $this->_mail->hasFetchPart) { + // TODO: fetch part + // return + } + + $this->_cacheContent(); + + $this->_countParts = count($this->_parts); + return $this->_countParts; + } + + + /** + * Get all headers + * + * The returned headers are as saved internally. All names are lowercased. The value is a string or an array + * if a header with the same name occurs more than once. + * + * @return array headers as array(name => value) + */ + public function getHeaders() + { + if ($this->_headers === null) { + if (!$this->_mail) { + $this->_headers = array(); + } else { + $part = $this->_mail->getRawHeader($this->_messageNum); + Zend_Mime_Decode::splitMessage($part, $this->_headers, $null); + } + } + + return $this->_headers; + } + + /** + * Get a header in specificed format + * + * Internally headers that occur more than once are saved as array, all other as string. If $format + * is set to string implode is used to concat the values (with Zend_Mime::LINEEND as delim). + * + * @param string $name name of header, matches case-insensitive, but camel-case is replaced with dashes + * @param string $format change type of return value to 'string' or 'array' + * @return string|array value of header in wanted or internal format + * @throws Zend_Mail_Exception + */ + public function getHeader($name, $format = null) + { + if ($this->_headers === null) { + $this->getHeaders(); + } + + $lowerName = strtolower($name); + + if ($this->headerExists($name) == false) { + $lowerName = strtolower(preg_replace('%([a-z])([A-Z])%', '\1-\2', $name)); + if($this->headerExists($lowerName) == false) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception("no Header with Name $name or $lowerName found"); + } + } + $name = $lowerName; + + $header = $this->_headers[$name]; + + switch ($format) { + case 'string': + if (is_array($header)) { + $header = implode(Zend_Mime::LINEEND, $header); + } + break; + case 'array': + $header = (array)$header; + default: + // do nothing + } + + return $header; + } + + /** + * Check wheater the Mail part has a specific header. + * + * @param string $name + * @return boolean + */ + public function headerExists($name) + { + $name = strtolower($name); + if(isset($this->_headers[$name])) { + return true; + } else { + return false; + } + } + + /** + * Get a specific field from a header like content type or all fields as array + * + * If the header occurs more than once, only the value from the first header + * is returned. + * + * Throws a Zend_Mail_Exception if the requested header does not exist. If + * the specific header field does not exist, returns null. + * + * @param string $name name of header, like in getHeader() + * @param string $wantedPart the wanted part, default is first, if null an array with all parts is returned + * @param string $firstName key name for the first part + * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value) + * @throws Zend_Exception, Zend_Mail_Exception + */ + public function getHeaderField($name, $wantedPart = 0, $firstName = 0) { + return Zend_Mime_Decode::splitHeaderField(current($this->getHeader($name, 'array')), $wantedPart, $firstName); + } + + + /** + * Getter for mail headers - name is matched in lowercase + * + * This getter is short for Zend_Mail_Part::getHeader($name, 'string') + * + * @see Zend_Mail_Part::getHeader() + * + * @param string $name header name + * @return string value of header + * @throws Zend_Mail_Exception + */ + public function __get($name) + { + return $this->getHeader($name, 'string'); + } + + /** + * Isset magic method proxy to hasHeader + * + * This method is short syntax for Zend_Mail_Part::hasHeader($name); + * + * @see Zend_Mail_Part::hasHeader + * + * @param string + * @return boolean + */ + public function __isset($name) + { + return $this->headerExists($name); + } + + /** + * magic method to get content of part + * + * @return string content + */ + public function __toString() + { + return $this->getContent(); + } + + /** + * implements RecursiveIterator::hasChildren() + * + * @return bool current element has children/is multipart + */ + public function hasChildren() + { + $current = $this->current(); + return $current && $current instanceof Zend_Mail_Part && $current->isMultipart(); + } + + /** + * implements RecursiveIterator::getChildren() + * + * @return Zend_Mail_Part same as self::current() + */ + public function getChildren() + { + return $this->current(); + } + + /** + * implements Iterator::valid() + * + * @return bool check if there's a current element + */ + public function valid() + { + if ($this->_countParts === null) { + $this->countParts(); + } + return $this->_iterationPos && $this->_iterationPos <= $this->_countParts; + } + + /** + * implements Iterator::next() + * + * @return null + */ + public function next() + { + ++$this->_iterationPos; + } + + /** + * implements Iterator::key() + * + * @return string key/number of current part + */ + public function key() + { + return $this->_iterationPos; + } + + /** + * implements Iterator::current() + * + * @return Zend_Mail_Part current part + */ + public function current() + { + return $this->getPart($this->_iterationPos); + } + + /** + * implements Iterator::rewind() + * + * @return null + */ + public function rewind() + { + $this->countParts(); + $this->_iterationPos = 1; + } + + /** + * Ensure headers do not contain invalid characters + * + * @param array $headers + * @param bool $assertNames + */ + protected function _validateHeaders(array $headers, $assertNames = true) + { + foreach ($headers as $name => $value) { + if ($assertNames) { + Zend_Mail_Header_HeaderName::assertValid($name); + } + + if (is_array($value)) { + $this->_validateHeaders($value, false); + continue; + } + + Zend_Mail_Header_HeaderValue::assertValid($value); + } + } +} diff --git a/library/Zend/Mail/Part/File.php b/library/Zend/Mail/Part/File.php new file mode 100755 index 000000000..8c1c99b41 --- /dev/null +++ b/library/Zend/Mail/Part/File.php @@ -0,0 +1,198 @@ +_fh = fopen($params['file'], 'r'); + } else { + $this->_fh = $params['file']; + } + if (!$this->_fh) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('could not open file'); + } + if (isset($params['startPos'])) { + fseek($this->_fh, $params['startPos']); + } + $header = ''; + $endPos = isset($params['endPos']) ? $params['endPos'] : null; + while (($endPos === null || ftell($this->_fh) < $endPos) && trim($line = fgets($this->_fh))) { + $header .= $line; + } + + Zend_Mime_Decode::splitMessage($header, $this->_headers, $null); + + $this->_contentPos[0] = ftell($this->_fh); + if ($endPos !== null) { + $this->_contentPos[1] = $endPos; + } else { + fseek($this->_fh, 0, SEEK_END); + $this->_contentPos[1] = ftell($this->_fh); + } + if (!$this->isMultipart()) { + return; + } + + $boundary = $this->getHeaderField('content-type', 'boundary'); + if (!$boundary) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('no boundary found in content type to split message'); + } + + $part = array(); + $pos = $this->_contentPos[0]; + fseek($this->_fh, $pos); + while (!feof($this->_fh) && ($endPos === null || $pos < $endPos)) { + $line = fgets($this->_fh); + if ($line === false) { + if (feof($this->_fh)) { + break; + } + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('error reading file'); + } + + $lastPos = $pos; + $pos = ftell($this->_fh); + $line = trim($line); + + if ($line == '--' . $boundary) { + if ($part) { + // not first part + $part[1] = $lastPos; + $this->_partPos[] = $part; + } + $part = array($pos); + } else if ($line == '--' . $boundary . '--') { + $part[1] = $lastPos; + $this->_partPos[] = $part; + break; + } + } + $this->_countParts = count($this->_partPos); + + } + + + /** + * Body of part + * + * If part is multipart the raw content of this part with all sub parts is returned + * + * @return string body + * @throws Zend_Mail_Exception + */ + public function getContent($stream = null) + { + fseek($this->_fh, $this->_contentPos[0]); + if ($stream !== null) { + return stream_copy_to_stream($this->_fh, $stream, $this->_contentPos[1] - $this->_contentPos[0]); + } + $length = $this->_contentPos[1] - $this->_contentPos[0]; + return $length < 1 ? '' : fread($this->_fh, $length); + } + + /** + * Return size of part + * + * Quite simple implemented currently (not decoding). Handle with care. + * + * @return int size + */ + public function getSize() { + return $this->_contentPos[1] - $this->_contentPos[0]; + } + + /** + * Get part of multipart message + * + * @param int $num number of part starting with 1 for first part + * @return Zend_Mail_Part wanted part + * @throws Zend_Mail_Exception + */ + public function getPart($num) + { + --$num; + if (!isset($this->_partPos[$num])) { + /** + * @see Zend_Mail_Exception + */ + require_once 'Zend/Mail/Exception.php'; + throw new Zend_Mail_Exception('part not found'); + } + + return new self(array('file' => $this->_fh, 'startPos' => $this->_partPos[$num][0], + 'endPos' => $this->_partPos[$num][1])); + } +} diff --git a/library/Zend/Mail/Part/Interface.php b/library/Zend/Mail/Part/Interface.php new file mode 100755 index 000000000..0d9275db6 --- /dev/null +++ b/library/Zend/Mail/Part/Interface.php @@ -0,0 +1,136 @@ + value) + */ + public function getHeaders(); + + /** + * Get a header in specificed format + * + * Internally headers that occur more than once are saved as array, all other as string. If $format + * is set to string implode is used to concat the values (with Zend_Mime::LINEEND as delim). + * + * @param string $name name of header, matches case-insensitive, but camel-case is replaced with dashes + * @param string $format change type of return value to 'string' or 'array' + * @return string|array value of header in wanted or internal format + * @throws Zend_Mail_Exception + */ + public function getHeader($name, $format = null); + + /** + * Get a specific field from a header like content type or all fields as array + * + * If the header occurs more than once, only the value from the first header + * is returned. + * + * Throws a Zend_Mail_Exception if the requested header does not exist. If + * the specific header field does not exist, returns null. + * + * @param string $name name of header, like in getHeader() + * @param string $wantedPart the wanted part, default is first, if null an array with all parts is returned + * @param string $firstName key name for the first part + * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value) + * @throws Zend_Exception, Zend_Mail_Exception + */ + public function getHeaderField($name, $wantedPart = 0, $firstName = 0); + + + /** + * Getter for mail headers - name is matched in lowercase + * + * This getter is short for Zend_Mail_Part::getHeader($name, 'string') + * + * @see Zend_Mail_Part::getHeader() + * + * @param string $name header name + * @return string value of header + * @throws Zend_Mail_Exception + */ + public function __get($name); + + /** + * magic method to get content of part + * + * @return string content + */ + public function __toString(); +} diff --git a/library/Zend/Mail/Protocol/Abstract.php b/library/Zend/Mail/Protocol/Abstract.php new file mode 100755 index 000000000..ef90b0968 --- /dev/null +++ b/library/Zend/Mail/Protocol/Abstract.php @@ -0,0 +1,447 @@ +_validHost = new Zend_Validate(); + $this->_validHost->addValidator(new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL)); + + if (!$this->_validHost->isValid($host)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception(join(', ', $this->_validHost->getMessages())); + } + + $this->_host = $host; + $this->_port = $port; + } + + + /** + * Class destructor to cleanup open resources + * + * @return void + */ + public function __destruct() + { + $this->_disconnect(); + } + + /** + * Set the maximum log size + * + * @param integer $maximumLog Maximum log size + * @return void + */ + public function setMaximumLog($maximumLog) + { + $this->_maximumLog = (int) $maximumLog; + } + + + /** + * Get the maximum log size + * + * @return int the maximum log size + */ + public function getMaximumLog() + { + return $this->_maximumLog; + } + + + /** + * Create a connection to the remote host + * + * Concrete adapters for this class will implement their own unique connect scripts, using the _connect() method to create the socket resource. + */ + abstract public function connect(); + + + /** + * Retrieve the last client request + * + * @return string + */ + public function getRequest() + { + return $this->_request; + } + + + /** + * Retrieve the last server response + * + * @return array + */ + public function getResponse() + { + return $this->_response; + } + + + /** + * Retrieve the transaction log + * + * @return string + */ + public function getLog() + { + return implode('', $this->_log); + } + + + /** + * Reset the transaction log + * + * @return void + */ + public function resetLog() + { + $this->_log = array(); + } + + /** + * Add the transaction log + * + * @param string new transaction + * @return void + */ + protected function _addLog($value) + { + if ($this->_maximumLog >= 0 && count($this->_log) >= $this->_maximumLog) { + array_shift($this->_log); + } + + $this->_log[] = $value; + } + + /** + * Connect to the server using the supplied transport and target + * + * An example $remote string may be 'tcp://mail.example.com:25' or 'ssh://hostname.com:2222' + * + * @param string $remote Remote + * @throws Zend_Mail_Protocol_Exception + * @return boolean + */ + protected function _connect($remote) + { + $errorNum = 0; + $errorStr = ''; + + // open connection + $this->_socket = @stream_socket_client($remote, $errorNum, $errorStr, self::TIMEOUT_CONNECTION); + + if ($this->_socket === false) { + if ($errorNum == 0) { + $errorStr = 'Could not open socket'; + } + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception($errorStr); + } + + if (($result = $this->_setStreamTimeout(self::TIMEOUT_CONNECTION)) === false) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('Could not set stream timeout'); + } + + return $result; + } + + + /** + * Disconnect from remote host and free resource + * + * @return void + */ + protected function _disconnect() + { + if (is_resource($this->_socket)) { + fclose($this->_socket); + } + } + + + /** + * Send the given request followed by a LINEEND to the server. + * + * @param string $request + * @throws Zend_Mail_Protocol_Exception + * @return integer|boolean Number of bytes written to remote host + */ + protected function _send($request) + { + if (!is_resource($this->_socket)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('No connection has been established to ' . $this->_host); + } + + $this->_request = $request; + + $result = fwrite($this->_socket, $request . self::EOL); + + // Save request to internal log + $this->_addLog($request . self::EOL); + + if ($result === false) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('Could not send request to ' . $this->_host); + } + + return $result; + } + + + /** + * Get a line from the stream. + * + * @var integer $timeout Per-request timeout value if applicable + * @throws Zend_Mail_Protocol_Exception + * @return string + */ + protected function _receive($timeout = null) + { + if (!is_resource($this->_socket)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('No connection has been established to ' . $this->_host); + } + + // Adapters may wish to supply per-commend timeouts according to appropriate RFC + if ($timeout !== null) { + $this->_setStreamTimeout($timeout); + } + + // Retrieve response + $reponse = fgets($this->_socket, 1024); + + // Save request to internal log + $this->_addLog($reponse); + + // Check meta data to ensure connection is still valid + $info = stream_get_meta_data($this->_socket); + + if (!empty($info['timed_out'])) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception($this->_host . ' has timed out'); + } + + if ($reponse === false) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('Could not read from ' . $this->_host); + } + + return $reponse; + } + + + /** + * Parse server response for successful codes + * + * Read the response from the stream and check for expected return code. + * Throws a Zend_Mail_Protocol_Exception if an unexpected code is returned. + * + * @param string|array $code One or more codes that indicate a successful response + * @throws Zend_Mail_Protocol_Exception + * @return string Last line of response string + */ + protected function _expect($code, $timeout = null) + { + $this->_response = array(); + $cmd = ''; + $more = ''; + $msg = ''; + $errMsg = ''; + + if (!is_array($code)) { + $code = array($code); + } + + do { + $this->_response[] = $result = $this->_receive($timeout); + list($cmd, $more, $msg) = preg_split('/([\s-]+)/', $result, 2, PREG_SPLIT_DELIM_CAPTURE); + + if ($errMsg !== '') { + $errMsg .= ' ' . $msg; + } elseif ($cmd === null || !in_array($cmd, $code)) { + $errMsg = $msg; + } + + } while (strpos($more, '-') === 0); // The '-' message prefix indicates an information string instead of a response string. + + if ($errMsg !== '') { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception($errMsg, $cmd); + } + + return $msg; + } + + /** + * Set stream timeout + * + * @param integer $timeout + * @return boolean + */ + protected function _setStreamTimeout($timeout) + { + return stream_set_timeout($this->_socket, $timeout); + } +} diff --git a/library/Zend/Mail/Protocol/Exception.php b/library/Zend/Mail/Protocol/Exception.php new file mode 100755 index 000000000..d78fca4d6 --- /dev/null +++ b/library/Zend/Mail/Protocol/Exception.php @@ -0,0 +1,39 @@ +connect($host, $port, $ssl); + } + } + + /** + * Public destructor + */ + public function __destruct() + { + $this->logout(); + } + + /** + * Open connection to IMAP server + * + * @param string $host hostname or IP address of IMAP server + * @param int|null $port of IMAP server, default is 143 (993 for ssl) + * @param string|bool $ssl use 'SSL', 'TLS' or false + * @return string welcome message + * @throws Zend_Mail_Protocol_Exception + */ + public function connect($host, $port = null, $ssl = false) + { + if ($ssl == 'SSL') { + $host = 'ssl://' . $host; + } + + if ($port === null) { + $port = $ssl === 'SSL' ? 993 : 143; + } + + $errno = 0; + $errstr = ''; + $this->_socket = @fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION); + if (!$this->_socket) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot connect to host; error = ' . $errstr . + ' (errno = ' . $errno . ' )'); + } + + if (!$this->_assumedNextLine('* OK')) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('host doesn\'t allow connection'); + } + + if ($ssl === 'TLS') { + $result = $this->requestAndResponse('STARTTLS'); + $result = $result && stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + if (!$result) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot enable TLS'); + } + } + } + + /** + * get the next line from socket with error checking, but nothing else + * + * @return string next line + * @throws Zend_Mail_Protocol_Exception + */ + protected function _nextLine() + { + $line = @fgets($this->_socket); + if ($line === false) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot read - connection closed?'); + } + + return $line; + } + + /** + * get next line and assume it starts with $start. some requests give a simple + * feedback so we can quickly check if we can go on. + * + * @param string $start the first bytes we assume to be in the next line + * @return bool line starts with $start + * @throws Zend_Mail_Protocol_Exception + */ + protected function _assumedNextLine($start) + { + $line = $this->_nextLine(); + return strpos($line, $start) === 0; + } + + /** + * get next line and split the tag. that's the normal case for a response line + * + * @param string $tag tag of line is returned by reference + * @return string next line + * @throws Zend_Mail_Protocol_Exception + */ + protected function _nextTaggedLine(&$tag) + { + $line = $this->_nextLine(); + + // seperate tag from line + list($tag, $line) = explode(' ', $line, 2); + + return $line; + } + + /** + * split a given line in tokens. a token is literal of any form or a list + * + * @param string $line line to decode + * @return array tokens, literals are returned as string, lists as array + * @throws Zend_Mail_Protocol_Exception + */ + protected function _decodeLine($line) + { + $tokens = array(); + $stack = array(); + + /* + We start to decode the response here. The unterstood tokens are: + literal + "literal" or also "lit\\er\"al" + {bytes}literal + (literals*) + All tokens are returned in an array. Literals in braces (the last unterstood + token in the list) are returned as an array of tokens. I.e. the following response: + "foo" baz {3}bar ("f\\\"oo" bar) + would be returned as: + array('foo', 'baz', 'bar', array('f\\\"oo', 'bar')); + + // TODO: add handling of '[' and ']' to parser for easier handling of response text + */ + // replace any trailling including spaces with a single space + $line = rtrim($line) . ' '; + while (($pos = strpos($line, ' ')) !== false) { + $token = substr($line, 0, $pos); + while ($token[0] == '(') { + array_push($stack, $tokens); + $tokens = array(); + $token = substr($token, 1); + } + if ($token[0] == '"') { + if (preg_match('%^\(*"((.|\\\\|\\")*?)" *%', $line, $matches)) { + $tokens[] = $matches[1]; + $line = substr($line, strlen($matches[0])); + continue; + } + } + if ($token[0] == '{') { + $endPos = strpos($token, '}'); + $chars = substr($token, 1, $endPos - 1); + if (is_numeric($chars)) { + $token = ''; + while (strlen($token) < $chars) { + $token .= $this->_nextLine(); + } + $line = ''; + if (strlen($token) > $chars) { + $line = substr($token, $chars); + $token = substr($token, 0, $chars); + } else { + $line .= $this->_nextLine(); + } + $tokens[] = $token; + $line = trim($line) . ' '; + continue; + } + } + if ($stack && $token[strlen($token) - 1] == ')') { + // closing braces are not seperated by spaces, so we need to count them + $braces = strlen($token); + $token = rtrim($token, ')'); + // only count braces if more than one + $braces -= strlen($token) + 1; + // only add if token had more than just closing braces + if (rtrim($token) != '') { + $tokens[] = rtrim($token); + } + $token = $tokens; + $tokens = array_pop($stack); + // special handline if more than one closing brace + while ($braces-- > 0) { + $tokens[] = $token; + $token = $tokens; + $tokens = array_pop($stack); + } + } + $tokens[] = $token; + $line = substr($line, $pos + 1); + } + + // maybe the server forgot to send some closing braces + while ($stack) { + $child = $tokens; + $tokens = array_pop($stack); + $tokens[] = $child; + } + + return $tokens; + } + + /** + * read a response "line" (could also be more than one real line if response has {..}) + * and do a simple decode + * + * @param array|string $tokens decoded tokens are returned by reference, if $dontParse + * is true the unparsed line is returned here + * @param string $wantedTag check for this tag for response code. Default '*' is + * continuation tag. + * @param bool $dontParse if true only the unparsed line is returned $tokens + * @return bool if returned tag matches wanted tag + * @throws Zend_Mail_Protocol_Exception + */ + public function readLine(&$tokens = array(), $wantedTag = '*', $dontParse = false) + { + $line = $this->_nextTaggedLine($tag); + if (!$dontParse) { + $tokens = $this->_decodeLine($line); + } else { + $tokens = $line; + } + + // if tag is wanted tag we might be at the end of a multiline response + return $tag == $wantedTag; + } + + /** + * read all lines of response until given tag is found (last line of response) + * + * @param string $tag the tag of your request + * @param string|array $filter you can filter the response so you get only the + * given response lines + * @param bool $dontParse if true every line is returned unparsed instead of + * the decoded tokens + * @return null|bool|array tokens if success, false if error, null if bad request + * @throws Zend_Mail_Protocol_Exception + */ + public function readResponse($tag, $dontParse = false) + { + $lines = array(); + while (!$this->readLine($tokens, $tag, $dontParse)) { + $lines[] = $tokens; + } + + if ($dontParse) { + // last to chars are still needed for response code + $tokens = array(substr($tokens, 0, 2)); + } + // last line has response code + if ($tokens[0] == 'OK') { + return $lines ? $lines : true; + } else if ($tokens[0] == 'NO'){ + return false; + } + return null; + } + + /** + * send a request + * + * @param string $command your request command + * @param array $tokens additional parameters to command, use escapeString() to prepare + * @param string $tag provide a tag otherwise an autogenerated is returned + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function sendRequest($command, $tokens = array(), &$tag = null) + { + if (!$tag) { + ++$this->_tagCount; + $tag = 'TAG' . $this->_tagCount; + } + + $line = $tag . ' ' . $command; + + foreach ($tokens as $token) { + if (is_array($token)) { + if (@fputs($this->_socket, $line . ' ' . $token[0] . "\r\n") === false) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot write - connection closed?'); + } + if (!$this->_assumedNextLine('+ ')) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot send literal string'); + } + $line = $token[1]; + } else { + $line .= ' ' . $token; + } + } + + if (@fputs($this->_socket, $line . "\r\n") === false) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot write - connection closed?'); + } + } + + /** + * send a request and get response at once + * + * @param string $command command as in sendRequest() + * @param array $tokens parameters as in sendRequest() + * @param bool $dontParse if true unparsed lines are returned instead of tokens + * @return mixed response as in readResponse() + * @throws Zend_Mail_Protocol_Exception + */ + public function requestAndResponse($command, $tokens = array(), $dontParse = false) + { + $this->sendRequest($command, $tokens, $tag); + $response = $this->readResponse($tag, $dontParse); + + return $response; + } + + /** + * escape one or more literals i.e. for sendRequest + * + * @param string|array $string the literal/-s + * @return string|array escape literals, literals with newline ar returned + * as array('{size}', 'string'); + */ + public function escapeString($string) + { + if (func_num_args() < 2) { + if (strpos($string, "\n") !== false) { + return array('{' . strlen($string) . '}', $string); + } else { + return '"' . str_replace(array('\\', '"'), array('\\\\', '\\"'), $string) . '"'; + } + } + $result = array(); + foreach (func_get_args() as $string) { + $result[] = $this->escapeString($string); + } + return $result; + } + + /** + * escape a list with literals or lists + * + * @param array $list list with literals or lists as PHP array + * @return string escaped list for imap + */ + public function escapeList($list) + { + $result = array(); + foreach ($list as $k => $v) { + if (!is_array($v)) { +// $result[] = $this->escapeString($v); + $result[] = $v; + continue; + } + $result[] = $this->escapeList($v); + } + return '(' . implode(' ', $result) . ')'; + } + + /** + * Login to IMAP server. + * + * @param string $user username + * @param string $password password + * @return bool success + * @throws Zend_Mail_Protocol_Exception + */ + public function login($user, $password) + { + return $this->requestAndResponse('LOGIN', $this->escapeString($user, $password), true); + } + + /** + * logout of imap server + * + * @return bool success + */ + public function logout() + { + $result = false; + if ($this->_socket) { + try { + $result = $this->requestAndResponse('LOGOUT', array(), true); + } catch (Zend_Mail_Protocol_Exception $e) { + // ignoring exception + } + fclose($this->_socket); + $this->_socket = null; + } + return $result; + } + + + /** + * Get capabilities from IMAP server + * + * @return array list of capabilities + * @throws Zend_Mail_Protocol_Exception + */ + public function capability() + { + $response = $this->requestAndResponse('CAPABILITY'); + + if (!$response) { + return $response; + } + + $capabilities = array(); + foreach ($response as $line) { + $capabilities = array_merge($capabilities, $line); + } + return $capabilities; + } + + /** + * Examine and select have the same response. The common code for both + * is in this method + * + * @param string $command can be 'EXAMINE' or 'SELECT' and this is used as command + * @param string $box which folder to change to or examine + * @return bool|array false if error, array with returned information + * otherwise (flags, exists, recent, uidvalidity) + * @throws Zend_Mail_Protocol_Exception + */ + public function examineOrSelect($command = 'EXAMINE', $box = 'INBOX') + { + $this->sendRequest($command, array($this->escapeString($box)), $tag); + + $result = array(); + while (!$this->readLine($tokens, $tag)) { + if ($tokens[0] == 'FLAGS') { + array_shift($tokens); + $result['flags'] = $tokens; + continue; + } + switch ($tokens[1]) { + case 'EXISTS': + case 'RECENT': + $result[strtolower($tokens[1])] = $tokens[0]; + break; + case '[UIDVALIDITY': + $result['uidvalidity'] = (int)$tokens[2]; + break; + default: + // ignore + } + } + + if ($tokens[0] != 'OK') { + return false; + } + return $result; + } + + /** + * change folder + * + * @param string $box change to this folder + * @return bool|array see examineOrselect() + * @throws Zend_Mail_Protocol_Exception + */ + public function select($box = 'INBOX') + { + return $this->examineOrSelect('SELECT', $box); + } + + /** + * examine folder + * + * @param string $box examine this folder + * @return bool|array see examineOrselect() + * @throws Zend_Mail_Protocol_Exception + */ + public function examine($box = 'INBOX') + { + return $this->examineOrSelect('EXAMINE', $box); + } + + /** + * fetch one or more items of one or more messages + * + * @param string|array $items items to fetch from message(s) as string (if only one item) + * or array of strings + * @param int $from message for items or start message if $to !== null + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message avaible + * @return string|array if only one item of one message is fetched it's returned as string + * if items of one message are fetched it's returned as (name => value) + * if one items of messages are fetched it's returned as (msgno => value) + * if items of messages are fetchted it's returned as (msgno => (name => value)) + * @throws Zend_Mail_Protocol_Exception + */ + public function fetch($items, $from, $to = null) + { + if (is_array($from)) { + $set = implode(',', $from); + } else if ($to === null) { + $set = (int)$from; + } else if ($to === INF) { + $set = (int)$from . ':*'; + } else { + $set = (int)$from . ':' . (int)$to; + } + + $items = (array)$items; + $itemList = $this->escapeList($items); + + $this->sendRequest('FETCH', array($set, $itemList), $tag); + + $result = array(); + while (!$this->readLine($tokens, $tag)) { + // ignore other responses + if ($tokens[1] != 'FETCH') { + continue; + } + // ignore other messages + if ($to === null && !is_array($from) && $tokens[0] != $from) { + continue; + } + // if we only want one item we return that one directly + if (count($items) == 1) { + if ($tokens[2][0] == $items[0]) { + $data = $tokens[2][1]; + } else { + // maybe the server send an other field we didn't wanted + $count = count($tokens[2]); + // we start with 2, because 0 was already checked + for ($i = 2; $i < $count; $i += 2) { + if ($tokens[2][$i] != $items[0]) { + continue; + } + $data = $tokens[2][$i + 1]; + break; + } + } + } else { + $data = array(); + while (key($tokens[2]) !== null) { + $data[current($tokens[2])] = next($tokens[2]); + next($tokens[2]); + } + } + // if we want only one message we can ignore everything else and just return + if ($to === null && !is_array($from) && $tokens[0] == $from) { + // we still need to read all lines + while (!$this->readLine($tokens, $tag)); + return $data; + } + $result[$tokens[0]] = $data; + } + + if ($to === null && !is_array($from)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('the single id was not found in response'); + } + + return $result; + } + + /** + * get mailbox list + * + * this method can't be named after the IMAP command 'LIST', as list is a reserved keyword + * + * @param string $reference mailbox reference for list + * @param string $mailbox mailbox name match with wildcards + * @return array mailboxes that matched $mailbox as array(globalName => array('delim' => .., 'flags' => ..)) + * @throws Zend_Mail_Protocol_Exception + */ + public function listMailbox($reference = '', $mailbox = '*') + { + $result = array(); + $list = $this->requestAndResponse('LIST', $this->escapeString($reference, $mailbox)); + if (!$list || $list === true) { + return $result; + } + + foreach ($list as $item) { + if (count($item) != 4 || $item[0] != 'LIST') { + continue; + } + $result[$item[3]] = array('delim' => $item[2], 'flags' => $item[1]); + } + + return $result; + } + + /** + * set flags + * + * @param array $flags flags to set, add or remove - see $mode + * @param int $from message for items or start message if $to !== null + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message avaible + * @param string|null $mode '+' to add flags, '-' to remove flags, everything else sets the flags as given + * @param bool $silent if false the return values are the new flags for the wanted messages + * @return bool|array new flags if $silent is false, else true or false depending on success + * @throws Zend_Mail_Protocol_Exception + */ + public function store(array $flags, $from, $to = null, $mode = null, $silent = true) + { + $item = 'FLAGS'; + if ($mode == '+' || $mode == '-') { + $item = $mode . $item; + } + if ($silent) { + $item .= '.SILENT'; + } + + $flags = $this->escapeList($flags); + $set = (int)$from; + if ($to != null) { + $set .= ':' . ($to == INF ? '*' : (int)$to); + } + + $result = $this->requestAndResponse('STORE', array($set, $item, $flags), $silent); + + if ($silent) { + return $result ? true : false; + } + + $tokens = $result; + $result = array(); + foreach ($tokens as $token) { + if ($token[1] != 'FETCH' || $token[2][0] != 'FLAGS') { + continue; + } + $result[$token[0]] = $token[2][1]; + } + + return $result; + } + + /** + * append a new message to given folder + * + * @param string $folder name of target folder + * @param string $message full message content + * @param array $flags flags for new message + * @param string $date date for new message + * @return bool success + * @throws Zend_Mail_Protocol_Exception + */ + public function append($folder, $message, $flags = null, $date = null) + { + $tokens = array(); + $tokens[] = $this->escapeString($folder); + if ($flags !== null) { + $tokens[] = $this->escapeList($flags); + } + if ($date !== null) { + $tokens[] = $this->escapeString($date); + } + $tokens[] = $this->escapeString($message); + + return $this->requestAndResponse('APPEND', $tokens, true); + } + + /** + * copy message set from current folder to other folder + * + * @param string $folder destination folder + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message avaible + * @return bool success + * @throws Zend_Mail_Protocol_Exception + */ + public function copy($folder, $from, $to = null) + { + $set = (int)$from; + if ($to != null) { + $set .= ':' . ($to == INF ? '*' : (int)$to); + } + + return $this->requestAndResponse('COPY', array($set, $this->escapeString($folder)), true); + } + + /** + * create a new folder (and parent folders if needed) + * + * @param string $folder folder name + * @return bool success + */ + public function create($folder) + { + return $this->requestAndResponse('CREATE', array($this->escapeString($folder)), true); + } + + /** + * rename an existing folder + * + * @param string $old old name + * @param string $new new name + * @return bool success + */ + public function rename($old, $new) + { + return $this->requestAndResponse('RENAME', $this->escapeString($old, $new), true); + } + + /** + * remove a folder + * + * @param string $folder folder name + * @return bool success + */ + public function delete($folder) + { + return $this->requestAndResponse('DELETE', array($this->escapeString($folder)), true); + } + + /** + * permanently remove messages + * + * @return bool success + */ + public function expunge() + { + // TODO: parse response? + return $this->requestAndResponse('EXPUNGE'); + } + + /** + * send noop + * + * @return bool success + */ + public function noop() + { + // TODO: parse response + return $this->requestAndResponse('NOOP'); + } + + /** + * do a search request + * + * This method is currently marked as internal as the API might change and is not + * safe if you don't take precautions. + * + * @internal + * @return array message ids + */ + public function search(array $params) + { + $response = $this->requestAndResponse('SEARCH', $params); + if (!$response) { + return $response; + } + + foreach ($response as $ids) { + if ($ids[0] == 'SEARCH') { + array_shift($ids); + return $ids; + } + } + return array(); + } + +} diff --git a/library/Zend/Mail/Protocol/Pop3.php b/library/Zend/Mail/Protocol/Pop3.php new file mode 100755 index 000000000..9a7622879 --- /dev/null +++ b/library/Zend/Mail/Protocol/Pop3.php @@ -0,0 +1,472 @@ +connect($host, $port, $ssl); + } + } + + + /** + * Public destructor + */ + public function __destruct() + { + $this->logout(); + } + + + /** + * Open connection to POP3 server + * + * @param string $host hostname or IP address of POP3 server + * @param int|null $port of POP3 server, default is 110 (995 for ssl) + * @param string|bool $ssl use 'SSL', 'TLS' or false + * @return string welcome message + * @throws Zend_Mail_Protocol_Exception + */ + public function connect($host, $port = null, $ssl = false) + { + if ($ssl == 'SSL') { + $host = 'ssl://' . $host; + } + + if ($port === null) { + $port = $ssl == 'SSL' ? 995 : 110; + } + + $errno = 0; + $errstr = ''; + $this->_socket = @fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION); + if (!$this->_socket) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot connect to host; error = ' . $errstr . + ' (errno = ' . $errno . ' )'); + } + + $welcome = $this->readResponse(); + + strtok($welcome, '<'); + $this->_timestamp = strtok('>'); + if (!strpos($this->_timestamp, '@')) { + $this->_timestamp = null; + } else { + $this->_timestamp = '<' . $this->_timestamp . '>'; + } + + if ($ssl === 'TLS') { + $this->request('STLS'); + $result = stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); + if (!$result) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('cannot enable TLS'); + } + } + + return $welcome; + } + + + /** + * Send a request + * + * @param string $request your request without newline + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function sendRequest($request) + { + $result = @fputs($this->_socket, $request . "\r\n"); + if (!$result) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('send failed - connection closed?'); + } + } + + + /** + * read a response + * + * @param boolean $multiline response has multiple lines and should be read until "." + * @return string response + * @throws Zend_Mail_Protocol_Exception + */ + public function readResponse($multiline = false) + { + $result = @fgets($this->_socket); + if (!is_string($result)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('read failed - connection closed?'); + } + + $result = trim($result); + if (strpos($result, ' ')) { + list($status, $message) = explode(' ', $result, 2); + } else { + $status = $result; + $message = ''; + } + + if ($status != '+OK') { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('last request failed'); + } + + if ($multiline) { + $message = ''; + $line = fgets($this->_socket); + while ($line && rtrim($line, "\r\n") != '.') { + if ($line[0] == '.') { + $line = substr($line, 1); + } + $message .= $line; + $line = fgets($this->_socket); + }; + } + + return $message; + } + + + /** + * Send request and get resposne + * + * @see sendRequest(), readResponse() + * + * @param string $request request + * @param bool $multiline multiline response? + * @return string result from readResponse() + * @throws Zend_Mail_Protocol_Exception + */ + public function request($request, $multiline = false) + { + $this->sendRequest($request); + return $this->readResponse($multiline); + } + + + /** + * End communication with POP3 server (also closes socket) + * + * @return null + */ + public function logout() + { + if (!$this->_socket) { + return; + } + + try { + $this->request('QUIT'); + } catch (Zend_Mail_Protocol_Exception $e) { + // ignore error - we're closing the socket anyway + } + + fclose($this->_socket); + $this->_socket = null; + } + + + /** + * Get capabilities from POP3 server + * + * @return array list of capabilities + * @throws Zend_Mail_Protocol_Exception + */ + public function capa() + { + $result = $this->request('CAPA', true); + return explode("\n", $result); + } + + + /** + * Login to POP3 server. Can use APOP + * + * @param string $user username + * @param string $password password + * @param bool $try_apop should APOP be tried? + * @return void + * @throws Zend_Mail_Protocol_Exception + */ + public function login($user, $password, $tryApop = true) + { + if ($tryApop && $this->_timestamp) { + try { + $this->request("APOP $user " . md5($this->_timestamp . $password)); + return; + } catch (Zend_Mail_Protocol_Exception $e) { + // ignore + } + } + + $result = $this->request("USER $user"); + $result = $this->request("PASS $password"); + } + + + /** + * Make STAT call for message count and size sum + * + * @param int $messages out parameter with count of messages + * @param int $octets out parameter with size in octects of messages + * @return void + * @throws Zend_Mail_Protocol_Exception + */ + public function status(&$messages, &$octets) + { + $messages = 0; + $octets = 0; + $result = $this->request('STAT'); + + list($messages, $octets) = explode(' ', $result); + } + + + /** + * Make LIST call for size of message(s) + * + * @param int|null $msgno number of message, null for all + * @return int|array size of given message or list with array(num => size) + * @throws Zend_Mail_Protocol_Exception + */ + public function getList($msgno = null) + { + if ($msgno !== null) { + $result = $this->request("LIST $msgno"); + + list(, $result) = explode(' ', $result); + return (int)$result; + } + + $result = $this->request('LIST', true); + $messages = array(); + $line = strtok($result, "\n"); + while ($line) { + list($no, $size) = explode(' ', trim($line)); + $messages[(int)$no] = (int)$size; + $line = strtok("\n"); + } + + return $messages; + } + + + /** + * Make UIDL call for getting a uniqueid + * + * @param int|null $msgno number of message, null for all + * @return string|array uniqueid of message or list with array(num => uniqueid) + * @throws Zend_Mail_Protocol_Exception + */ + public function uniqueid($msgno = null) + { + if ($msgno !== null) { + $result = $this->request("UIDL $msgno"); + + list(, $result) = explode(' ', $result); + return $result; + } + + $result = $this->request('UIDL', true); + + $result = explode("\n", $result); + $messages = array(); + foreach ($result as $line) { + if (!$line) { + continue; + } + list($no, $id) = explode(' ', trim($line), 2); + $messages[(int)$no] = $id; + } + + return $messages; + + } + + + /** + * Make TOP call for getting headers and maybe some body lines + * This method also sets hasTop - before it it's not known if top is supported + * + * The fallback makes normale RETR call, which retrieves the whole message. Additional + * lines are not removed. + * + * @param int $msgno number of message + * @param int $lines number of wanted body lines (empty line is inserted after header lines) + * @param bool $fallback fallback with full retrieve if top is not supported + * @return string message headers with wanted body lines + * @throws Zend_Mail_Protocol_Exception + */ + public function top($msgno, $lines = 0, $fallback = false) + { + if ($this->hasTop === false) { + if ($fallback) { + return $this->retrieve($msgno); + } else { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('top not supported and no fallback wanted'); + } + } + $this->hasTop = true; + + $lines = (!$lines || $lines < 1) ? 0 : (int)$lines; + + try { + $result = $this->request("TOP $msgno $lines", true); + } catch (Zend_Mail_Protocol_Exception $e) { + $this->hasTop = false; + if ($fallback) { + $result = $this->retrieve($msgno); + } else { + throw $e; + } + } + + return $result; + } + + + /** + * Make a RETR call for retrieving a full message with headers and body + * + * @deprecated since 1.1.0; this method has a typo - please use retrieve() + * @param int $msgno message number + * @return string message + * @throws Zend_Mail_Protocol_Exception + */ + public function retrive($msgno) + { + return $this->retrieve($msgno); + } + + + /** + * Make a RETR call for retrieving a full message with headers and body + * + * @param int $msgno message number + * @return string message + * @throws Zend_Mail_Protocol_Exception + */ + public function retrieve($msgno) + { + $result = $this->request("RETR $msgno", true); + return $result; + } + + /** + * Make a NOOP call, maybe needed for keeping the server happy + * + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function noop() + { + $this->request('NOOP'); + } + + + /** + * Make a DELE count to remove a message + * + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function delete($msgno) + { + $this->request("DELE $msgno"); + } + + + /** + * Make RSET call, which rollbacks delete requests + * + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function undelete() + { + $this->request('RSET'); + } +} diff --git a/library/Zend/Mail/Protocol/Smtp.php b/library/Zend/Mail/Protocol/Smtp.php new file mode 100755 index 000000000..9dd3568b2 --- /dev/null +++ b/library/Zend/Mail/Protocol/Smtp.php @@ -0,0 +1,443 @@ +_secure = 'tls'; + break; + + case 'ssl': + $this->_transport = 'ssl'; + $this->_secure = 'ssl'; + if ($port == null) { + $port = 465; + } + break; + + default: + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception($config['ssl'] . ' is unsupported SSL type'); + break; + } + } + + // If no port has been specified then check the master PHP ini file. Defaults to 25 if the ini setting is null. + if ($port == null) { + if (($port = ini_get('smtp_port')) == '') { + $port = 25; + } + } + + parent::__construct($host, $port); + } + + + /** + * Connect to the server with the parameters given in the constructor. + * + * @return boolean + */ + public function connect() + { + return $this->_connect($this->_transport . '://' . $this->_host . ':'. $this->_port); + } + + + /** + * Initiate HELO/EHLO sequence and set flag to indicate valid smtp session + * + * @param string $host The client hostname or IP address (default: 127.0.0.1) + * @throws Zend_Mail_Protocol_Exception + * @return void + */ + public function helo($host = '127.0.0.1') + { + // Respect RFC 2821 and disallow HELO attempts if session is already initiated. + if ($this->_sess === true) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('Cannot issue HELO to existing session'); + } + + // Validate client hostname + if (!$this->_validHost->isValid($host)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception(join(', ', $this->_validHost->getMessages())); + } + + // Initiate helo sequence + $this->_expect(220, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + $this->_ehlo($host); + + // If a TLS session is required, commence negotiation + if ($this->_secure == 'tls') { + $this->_send('STARTTLS'); + $this->_expect(220, 180); + if (!stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('Unable to connect via TLS'); + } + $this->_ehlo($host); + } + + $this->_startSession(); + $this->auth(); + } + + + /** + * Send EHLO or HELO depending on capabilities of smtp host + * + * @param string $host The client hostname or IP address (default: 127.0.0.1) + * @throws Zend_Mail_Protocol_Exception + * @return void + */ + protected function _ehlo($host) + { + // Support for older, less-compliant remote servers. Tries multiple attempts of EHLO or HELO. + try { + $this->_send('EHLO ' . $host); + $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + } catch (Zend_Mail_Protocol_Exception $e) { + $this->_send('HELO ' . $host); + $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + } catch (Zend_Mail_Protocol_Exception $e) { + throw $e; + } + } + + + /** + * Issues MAIL command + * + * @param string $from Sender mailbox + * @throws Zend_Mail_Protocol_Exception + * @return void + */ + public function mail($from) + { + if ($this->_sess !== true) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('A valid session has not been started'); + } + + $this->_send('MAIL FROM:<' . $from . '>'); + $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + + // Set mail to true, clear recipients and any existing data flags as per 4.1.1.2 of RFC 2821 + $this->_mail = true; + $this->_rcpt = false; + $this->_data = false; + } + + + /** + * Issues RCPT command + * + * @param string $to Receiver(s) mailbox + * @throws Zend_Mail_Protocol_Exception + * @return void + */ + public function rcpt($to) + { + if ($this->_mail !== true) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('No sender reverse path has been supplied'); + } + + // Set rcpt to true, as per 4.1.1.3 of RFC 2821 + $this->_send('RCPT TO:<' . $to . '>'); + $this->_expect(array(250, 251), 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + $this->_rcpt = true; + } + + + /** + * Issues DATA command + * + * @param string $data + * @throws Zend_Mail_Protocol_Exception + * @return void + */ + public function data($data) + { + // Ensure recipients have been set + if ($this->_rcpt !== true) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('No recipient forward path has been supplied'); + } + + $this->_send('DATA'); + $this->_expect(354, 120); // Timeout set for 2 minutes as per RFC 2821 4.5.3.2 + + foreach (explode(Zend_Mime::LINEEND, $data) as $line) { + if (strpos($line, '.') === 0) { + // Escape lines prefixed with a '.' + $line = '.' . $line; + } + $this->_send($line); + } + + $this->_send('.'); + $this->_expect(250, 600); // Timeout set for 10 minutes as per RFC 2821 4.5.3.2 + $this->_data = true; + } + + + /** + * Issues the RSET command and validates answer + * + * Can be used to restore a clean smtp communication state when a transaction has been cancelled or commencing a new transaction. + * + * @return void + */ + public function rset() + { + $this->_send('RSET'); + // MS ESMTP doesn't follow RFC, see [ZF-1377] + $this->_expect(array(250, 220)); + + $this->_mail = false; + $this->_rcpt = false; + $this->_data = false; + } + + + /** + * Issues the NOOP command and validates answer + * + * Not used by Zend_Mail, could be used to keep a connection alive or check if it is still open. + * + * @return void + */ + public function noop() + { + $this->_send('NOOP'); + $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + } + + + /** + * Issues the VRFY command and validates answer + * + * Not used by Zend_Mail. + * + * @param string $user User Name or eMail to verify + * @return void + */ + public function vrfy($user) + { + $this->_send('VRFY ' . $user); + $this->_expect(array(250, 251, 252), 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + } + + + /** + * Issues the QUIT command and clears the current session + * + * @return void + */ + public function quit() + { + if ($this->_sess) { + $this->_send('QUIT'); + $this->_expect(221, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 + $this->_stopSession(); + } + } + + + /** + * Default authentication method + * + * This default method is implemented by AUTH adapters to properly authenticate to a remote host. + * + * @throws Zend_Mail_Protocol_Exception + * @return void + */ + public function auth() + { + if ($this->_auth === true) { + /** + * @see Zend_Mail_Protocol_Exception + */ + require_once 'Zend/Mail/Protocol/Exception.php'; + throw new Zend_Mail_Protocol_Exception('Already authenticated for this session'); + } + } + + + /** + * Closes connection + * + * @return void + */ + public function disconnect() + { + $this->_disconnect(); + } + + + /** + * Start mail session + * + * @return void + */ + protected function _startSession() + { + $this->_sess = true; + } + + + /** + * Stop mail session + * + * @return void + */ + protected function _stopSession() + { + $this->_sess = false; + } +} diff --git a/library/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php b/library/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php new file mode 100755 index 000000000..ea9ad7f30 --- /dev/null +++ b/library/Zend/Mail/Protocol/Smtp/Auth/Crammd5.php @@ -0,0 +1,108 @@ +_username = $config['username']; + } + if (isset($config['password'])) { + $this->_password = $config['password']; + } + } + + parent::__construct($host, $port, $config); + } + + + /** + * @todo Perform CRAM-MD5 authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH CRAM-MD5'); + $challenge = $this->_expect(334); + $challenge = base64_decode($challenge); + $digest = $this->_hmacMd5($this->_password, $challenge); + $this->_send(base64_encode($this->_username . ' ' . $digest)); + $this->_expect(235); + $this->_auth = true; + } + + + /** + * Prepare CRAM-MD5 response to server's ticket + * + * @param string $key Challenge key (usually password) + * @param string $data Challenge data + * @param string $block Length of blocks + * @return string + */ + protected function _hmacMd5($key, $data, $block = 64) + { + if (strlen($key) > 64) { + $key = pack('H32', md5($key)); + } elseif (strlen($key) < 64) { + $key = str_pad($key, $block, "\0"); + } + + $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64); + $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64); + + $inner = pack('H32', md5($k_ipad . $data)); + $digest = md5($k_opad . $inner); + + return $digest; + } +} diff --git a/library/Zend/Mail/Protocol/Smtp/Auth/Login.php b/library/Zend/Mail/Protocol/Smtp/Auth/Login.php new file mode 100755 index 000000000..68d32ef6e --- /dev/null +++ b/library/Zend/Mail/Protocol/Smtp/Auth/Login.php @@ -0,0 +1,98 @@ +_username = $config['username']; + } + if (isset($config['password'])) { + $this->_password = $config['password']; + } + } + + parent::__construct($host, $port, $config); + } + + + /** + * Perform LOGIN authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH LOGIN'); + $this->_expect(334); + $this->_send(base64_encode($this->_username)); + $this->_expect(334); + $this->_send(base64_encode($this->_password)); + $this->_expect(235); + $this->_auth = true; + } +} diff --git a/library/Zend/Mail/Protocol/Smtp/Auth/Plain.php b/library/Zend/Mail/Protocol/Smtp/Auth/Plain.php new file mode 100755 index 000000000..45059df7d --- /dev/null +++ b/library/Zend/Mail/Protocol/Smtp/Auth/Plain.php @@ -0,0 +1,96 @@ +_username = $config['username']; + } + if (isset($config['password'])) { + $this->_password = $config['password']; + } + } + + parent::__construct($host, $port, $config); + } + + + /** + * Perform PLAIN authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH PLAIN'); + $this->_expect(334); + $this->_send(base64_encode("\0" . $this->_username . "\0" . $this->_password)); + $this->_expect(235); + $this->_auth = true; + } +} diff --git a/library/Zend/Mail/Storage.php b/library/Zend/Mail/Storage.php new file mode 100755 index 000000000..b0eed1213 --- /dev/null +++ b/library/Zend/Mail/Storage.php @@ -0,0 +1,40 @@ + true, + 'delete' => false, + 'create' => false, + 'top' => false, + 'fetchPart' => true, + 'flags' => false); + + /** + * current iteration position + * @var int + */ + protected $_iterationPos = 0; + + /** + * maximum iteration position (= message count) + * @var null|int + */ + protected $_iterationMax = null; + + /** + * used message class, change it in an extened class to extend the returned message class + * @var string + */ + protected $_messageClass = 'Zend_Mail_Message'; + + /** + * Getter for has-properties. The standard has properties + * are: hasFolder, hasUniqueid, hasDelete, hasCreate, hasTop + * + * The valid values for the has-properties are: + * - true if a feature is supported + * - false if a feature is not supported + * - null is it's not yet known or it can't be know if a feature is supported + * + * @param string $var property name + * @return bool supported or not + * @throws Zend_Mail_Storage_Exception + */ + public function __get($var) + { + if (strpos($var, 'has') === 0) { + $var = strtolower(substr($var, 3)); + return isset($this->_has[$var]) ? $this->_has[$var] : null; + } + + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception($var . ' not found'); + } + + + /** + * Get a full list of features supported by the specific mail lib and the server + * + * @return array list of features as array(featurename => true|false[|null]) + */ + public function getCapabilities() + { + return $this->_has; + } + + + /** + * Count messages messages in current box/folder + * + * @return int number of messages + * @throws Zend_Mail_Storage_Exception + */ + abstract public function countMessages(); + + + /** + * Get a list of messages with number and size + * + * @param int $id number of message + * @return int|array size of given message of list with all messages as array(num => size) + */ + abstract public function getSize($id = 0); + + + /** + * Get a message with headers and body + * + * @param int $id number of message + * @return Zend_Mail_Message + */ + abstract public function getMessage($id); + + + /** + * Get raw header of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage header + * @param int $topLines include this many lines with header (after an empty line) + * @return string raw header + */ + abstract public function getRawHeader($id, $part = null, $topLines = 0); + + /** + * Get raw content of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage content + * @return string raw content + */ + abstract public function getRawContent($id, $part = null); + + /** + * Create instance with parameters + * + * @param array $params mail reader specific parameters + * @throws Zend_Mail_Storage_Exception + */ + abstract public function __construct($params); + + + /** + * Destructor calls close() and therefore closes the resource. + */ + public function __destruct() + { + $this->close(); + } + + + /** + * Close resource for mail lib. If you need to control, when the resource + * is closed. Otherwise the destructor would call this. + * + * @return null + */ + abstract public function close(); + + + /** + * Keep the resource alive. + * + * @return null + */ + abstract public function noop(); + + /** + * delete a message from current box/folder + * + * @return null + */ + abstract public function removeMessage($id); + + /** + * get unique id for one or all messages + * + * if storage does not support unique ids it's the same as the message number + * + * @param int|null $id message number + * @return array|string message number for given message or all messages as array + * @throws Zend_Mail_Storage_Exception + */ + abstract public function getUniqueId($id = null); + + /** + * get a message number from a unique id + * + * I.e. if you have a webmailer that supports deleting messages you should use unique ids + * as parameter and use this method to translate it to message number right before calling removeMessage() + * + * @param string $id unique id + * @return int message number + * @throws Zend_Mail_Storage_Exception + */ + abstract public function getNumberByUniqueId($id); + + // interface implementations follows + + /** + * Countable::count() + * + * @return int + */ + public function count() + { + return $this->countMessages(); + } + + + /** + * ArrayAccess::offsetExists() + * + * @param int $id + * @return boolean + */ + public function offsetExists($id) + { + try { + if ($this->getMessage($id)) { + return true; + } + } catch(Zend_Mail_Storage_Exception $e) {} + + return false; + } + + + /** + * ArrayAccess::offsetGet() + * + * @param int $id + * @return Zend_Mail_Message message object + */ + public function offsetGet($id) + { + return $this->getMessage($id); + } + + + /** + * ArrayAccess::offsetSet() + * + * @param id $id + * @param mixed $value + * @throws Zend_Mail_Storage_Exception + * @return void + */ + public function offsetSet($id, $value) + { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot write mail messages via array access'); + } + + + /** + * ArrayAccess::offsetUnset() + * + * @param int $id + * @return boolean success + */ + public function offsetUnset($id) + { + return $this->removeMessage($id); + } + + + /** + * Iterator::rewind() + * + * Rewind always gets the new count from the storage. Thus if you use + * the interfaces and your scripts take long you should use reset() + * from time to time. + * + * @return void + */ + public function rewind() + { + $this->_iterationMax = $this->countMessages(); + $this->_iterationPos = 1; + } + + + /** + * Iterator::current() + * + * @return Zend_Mail_Message current message + */ + public function current() + { + return $this->getMessage($this->_iterationPos); + } + + + /** + * Iterator::key() + * + * @return int id of current position + */ + public function key() + { + return $this->_iterationPos; + } + + + /** + * Iterator::next() + * + * @return void + */ + public function next() + { + ++$this->_iterationPos; + } + + + /** + * Iterator::valid() + * + * @return boolean + */ + public function valid() + { + if ($this->_iterationMax === null) { + $this->_iterationMax = $this->countMessages(); + } + return $this->_iterationPos && $this->_iterationPos <= $this->_iterationMax; + } + + + /** + * SeekableIterator::seek() + * + * @param int $pos + * @return void + * @throws OutOfBoundsException + */ + public function seek($pos) + { + if ($this->_iterationMax === null) { + $this->_iterationMax = $this->countMessages(); + } + + if ($pos > $this->_iterationMax) { + throw new OutOfBoundsException('this position does not exist'); + } + $this->_iterationPos = $pos; + } + +} diff --git a/library/Zend/Mail/Storage/Exception.php b/library/Zend/Mail/Storage/Exception.php new file mode 100755 index 000000000..38a0ed97e --- /dev/null +++ b/library/Zend/Mail/Storage/Exception.php @@ -0,0 +1,39 @@ + Zend_Mail_Storage_Folder folder) + * @var array + */ + protected $_folders; + + /** + * local name (name of folder in parent folder) + * @var string + */ + protected $_localName; + + /** + * global name (absolute name of folder) + * @var string + */ + protected $_globalName; + + /** + * folder is selectable if folder is able to hold messages, else it's just a parent folder + * @var bool + */ + protected $_selectable = true; + + /** + * create a new mail folder instance + * + * @param string $localName name of folder in current subdirectory + * @param string $globalName absolute name of folder + * @param bool $selectable if true folder holds messages, if false it's just a parent for subfolders + * @param array $folders init with given instances of Zend_Mail_Storage_Folder as subfolders + */ + public function __construct($localName, $globalName = '', $selectable = true, array $folders = array()) + { + $this->_localName = $localName; + $this->_globalName = $globalName ? $globalName : $localName; + $this->_selectable = $selectable; + $this->_folders = $folders; + } + + /** + * implements RecursiveIterator::hasChildren() + * + * @return bool current element has children + */ + public function hasChildren() + { + $current = $this->current(); + return $current && $current instanceof Zend_Mail_Storage_Folder && !$current->isLeaf(); + } + + /** + * implements RecursiveIterator::getChildren() + * + * @return Zend_Mail_Storage_Folder same as self::current() + */ + public function getChildren() + { + return $this->current(); + } + + /** + * implements Iterator::valid() + * + * @return bool check if there's a current element + */ + public function valid() + { + return key($this->_folders) !== null; + } + + /** + * implements Iterator::next() + * + * @return null + */ + public function next() + { + next($this->_folders); + } + + /** + * implements Iterator::key() + * + * @return string key/local name of current element + */ + public function key() + { + return key($this->_folders); + } + + /** + * implements Iterator::current() + * + * @return Zend_Mail_Storage_Folder current folder + */ + public function current() + { + return current($this->_folders); + } + + /** + * implements Iterator::rewind() + * + * @return null + */ + public function rewind() + { + reset($this->_folders); + } + + /** + * get subfolder named $name + * + * @param string $name wanted subfolder + * @return Zend_Mail_Storage_Folder folder named $folder + * @throws Zend_Mail_Storage_Exception + */ + public function __get($name) + { + if (!isset($this->_folders[$name])) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("no subfolder named $name"); + } + + return $this->_folders[$name]; + } + + /** + * add or replace subfolder named $name + * + * @param string $name local name of subfolder + * @param Zend_Mail_Storage_Folder $folder instance for new subfolder + * @return null + */ + public function __set($name, Zend_Mail_Storage_Folder $folder) + { + $this->_folders[$name] = $folder; + } + + /** + * remove subfolder named $name + * + * @param string $name local name of subfolder + * @return null + */ + public function __unset($name) + { + unset($this->_folders[$name]); + } + + /** + * magic method for easy output of global name + * + * @return string global name of folder + */ + public function __toString() + { + return (string)$this->getGlobalName(); + } + + /** + * get local name + * + * @return string local name + */ + public function getLocalName() + { + return $this->_localName; + } + + /** + * get global name + * + * @return string global name + */ + public function getGlobalName() + { + return $this->_globalName; + } + + /** + * is this folder selectable? + * + * @return bool selectable + */ + public function isSelectable() + { + return $this->_selectable; + } + + /** + * check if folder has no subfolder + * + * @return bool true if no subfolders + */ + public function isLeaf() + { + return empty($this->_folders); + } +} diff --git a/library/Zend/Mail/Storage/Folder/Interface.php b/library/Zend/Mail/Storage/Folder/Interface.php new file mode 100755 index 000000000..dc092051c --- /dev/null +++ b/library/Zend/Mail/Storage/Folder/Interface.php @@ -0,0 +1,60 @@ +dirname) || !is_dir($params->dirname)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('no valid dirname given in params'); + } + + $this->_rootdir = rtrim($params->dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + + $this->_delim = isset($params->delim) ? $params->delim : '.'; + + $this->_buildFolderTree(); + $this->selectFolder(!empty($params->folder) ? $params->folder : 'INBOX'); + $this->_has['top'] = true; + $this->_has['flags'] = true; + } + + /** + * find all subfolders and mbox files for folder structure + * + * Result is save in Zend_Mail_Storage_Folder instances with the root in $this->_rootFolder. + * $parentFolder and $parentGlobalName are only used internally for recursion. + * + * @return null + * @throws Zend_Mail_Storage_Exception + */ + protected function _buildFolderTree() + { + $this->_rootFolder = new Zend_Mail_Storage_Folder('/', '/', false); + $this->_rootFolder->INBOX = new Zend_Mail_Storage_Folder('INBOX', 'INBOX', true); + + $dh = @opendir($this->_rootdir); + if (!$dh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("can't read folders in maildir"); + } + $dirs = array(); + while (($entry = readdir($dh)) !== false) { + // maildir++ defines folders must start with . + if ($entry[0] != '.' || $entry == '.' || $entry == '..') { + continue; + } + if ($this->_isMaildir($this->_rootdir . $entry)) { + $dirs[] = $entry; + } + } + closedir($dh); + + sort($dirs); + $stack = array(null); + $folderStack = array(null); + $parentFolder = $this->_rootFolder; + $parent = '.'; + + foreach ($dirs as $dir) { + do { + if (strpos($dir, $parent) === 0) { + $local = substr($dir, strlen($parent)); + if (strpos($local, $this->_delim) !== false) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('error while reading maildir'); + } + array_push($stack, $parent); + $parent = $dir . $this->_delim; + $folder = new Zend_Mail_Storage_Folder($local, substr($dir, 1), true); + $parentFolder->$local = $folder; + array_push($folderStack, $parentFolder); + $parentFolder = $folder; + break; + } else if ($stack) { + $parent = array_pop($stack); + $parentFolder = array_pop($folderStack); + } + } while ($stack); + if (!$stack) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('error while reading maildir'); + } + } + } + + /** + * get root folder or given folder + * + * @param string $rootFolder get folder structure for given folder, else root + * @return Zend_Mail_Storage_Folder root or wanted folder + * @throws Zend_Mail_Storage_Exception + */ + public function getFolders($rootFolder = null) + { + if (!$rootFolder || $rootFolder == 'INBOX') { + return $this->_rootFolder; + } + + // rootdir is same as INBOX in maildir + if (strpos($rootFolder, 'INBOX' . $this->_delim) === 0) { + $rootFolder = substr($rootFolder, 6); + } + $currentFolder = $this->_rootFolder; + $subname = trim($rootFolder, $this->_delim); + while ($currentFolder) { + @list($entry, $subname) = @explode($this->_delim, $subname, 2); + $currentFolder = $currentFolder->$entry; + if (!$subname) { + break; + } + } + + if ($currentFolder->getGlobalName() != rtrim($rootFolder, $this->_delim)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("folder $rootFolder not found"); + } + return $currentFolder; + } + + /** + * select given folder + * + * folder must be selectable! + * + * @param Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function selectFolder($globalName) + { + $this->_currentFolder = (string)$globalName; + + // getting folder from folder tree for validation + $folder = $this->getFolders($this->_currentFolder); + + try { + $this->_openMaildir($this->_rootdir . '.' . $folder->getGlobalName()); + } catch(Zend_Mail_Storage_Exception $e) { + // check what went wrong + if (!$folder->isSelectable()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("{$this->_currentFolder} is not selectable", 0, $e); + } + // seems like file has vanished; rebuilding folder tree - but it's still an exception + $this->_buildFolderTree($this->_rootdir); + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('seems like the maildir has vanished, I\'ve rebuild the ' . + 'folder tree, search for an other folder and try again', 0, $e); + } + } + + /** + * get Zend_Mail_Storage_Folder instance for current folder + * + * @return Zend_Mail_Storage_Folder instance of current folder + * @throws Zend_Mail_Storage_Exception + */ + public function getCurrentFolder() + { + return $this->_currentFolder; + } +} diff --git a/library/Zend/Mail/Storage/Folder/Mbox.php b/library/Zend/Mail/Storage/Folder/Mbox.php new file mode 100755 index 000000000..ad9429dc3 --- /dev/null +++ b/library/Zend/Mail/Storage/Folder/Mbox.php @@ -0,0 +1,264 @@ +filename)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('use Zend_Mail_Storage_Mbox for a single file'); + } + + if (!isset($params->dirname) || !is_dir($params->dirname)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('no valid dirname given in params'); + } + + $this->_rootdir = rtrim($params->dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; + + $this->_buildFolderTree($this->_rootdir); + $this->selectFolder(!empty($params->folder) ? $params->folder : 'INBOX'); + $this->_has['top'] = true; + $this->_has['uniqueid'] = false; + } + + /** + * find all subfolders and mbox files for folder structure + * + * Result is save in Zend_Mail_Storage_Folder instances with the root in $this->_rootFolder. + * $parentFolder and $parentGlobalName are only used internally for recursion. + * + * @param string $currentDir call with root dir, also used for recursion. + * @param Zend_Mail_Storage_Folder|null $parentFolder used for recursion + * @param string $parentGlobalName used for rescursion + * @return null + * @throws Zend_Mail_Storage_Exception + */ + protected function _buildFolderTree($currentDir, $parentFolder = null, $parentGlobalName = '') + { + if (!$parentFolder) { + $this->_rootFolder = new Zend_Mail_Storage_Folder('/', '/', false); + $parentFolder = $this->_rootFolder; + } + + $dh = @opendir($currentDir); + if (!$dh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("can't read dir $currentDir"); + } + while (($entry = readdir($dh)) !== false) { + // ignore hidden files for mbox + if ($entry[0] == '.') { + continue; + } + $absoluteEntry = $currentDir . $entry; + $globalName = $parentGlobalName . DIRECTORY_SEPARATOR . $entry; + if (is_file($absoluteEntry) && $this->_isMboxFile($absoluteEntry)) { + $parentFolder->$entry = new Zend_Mail_Storage_Folder($entry, $globalName); + continue; + } + if (!is_dir($absoluteEntry) /* || $entry == '.' || $entry == '..' */) { + continue; + } + $folder = new Zend_Mail_Storage_Folder($entry, $globalName, false); + $parentFolder->$entry = $folder; + $this->_buildFolderTree($absoluteEntry . DIRECTORY_SEPARATOR, $folder, $globalName); + } + + closedir($dh); + } + + /** + * get root folder or given folder + * + * @param string $rootFolder get folder structure for given folder, else root + * @return Zend_Mail_Storage_Folder root or wanted folder + * @throws Zend_Mail_Storage_Exception + */ + public function getFolders($rootFolder = null) + { + if (!$rootFolder) { + return $this->_rootFolder; + } + + $currentFolder = $this->_rootFolder; + $subname = trim($rootFolder, DIRECTORY_SEPARATOR); + while ($currentFolder) { + @list($entry, $subname) = @explode(DIRECTORY_SEPARATOR, $subname, 2); + $currentFolder = $currentFolder->$entry; + if (!$subname) { + break; + } + } + + if ($currentFolder->getGlobalName() != DIRECTORY_SEPARATOR . trim($rootFolder, DIRECTORY_SEPARATOR)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("folder $rootFolder not found"); + } + return $currentFolder; + } + + /** + * select given folder + * + * folder must be selectable! + * + * @param Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function selectFolder($globalName) + { + $this->_currentFolder = (string)$globalName; + + // getting folder from folder tree for validation + $folder = $this->getFolders($this->_currentFolder); + + try { + $this->_openMboxFile($this->_rootdir . $folder->getGlobalName()); + } catch(Zend_Mail_Storage_Exception $e) { + // check what went wrong + if (!$folder->isSelectable()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("{$this->_currentFolder} is not selectable", 0, $e); + } + // seems like file has vanished; rebuilding folder tree - but it's still an exception + $this->_buildFolderTree($this->_rootdir); + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('seems like the mbox file has vanished, I\'ve rebuild the ' . + 'folder tree, search for an other folder and try again', 0, $e); + } + } + + /** + * get Zend_Mail_Storage_Folder instance for current folder + * + * @return Zend_Mail_Storage_Folder instance of current folder + * @throws Zend_Mail_Storage_Exception + */ + public function getCurrentFolder() + { + return $this->_currentFolder; + } + + /** + * magic method for serialize() + * + * with this method you can cache the mbox class + * + * @return array name of variables + */ + public function __sleep() + { + return array_merge(parent::__sleep(), array('_currentFolder', '_rootFolder', '_rootdir')); + } + + /** + * magic method for unserialize() + * + * with this method you can cache the mbox class + * + * @return null + */ + public function __wakeup() + { + // if cache is stall selectFolder() rebuilds the tree on error + parent::__wakeup(); + } +} diff --git a/library/Zend/Mail/Storage/Imap.php b/library/Zend/Mail/Storage/Imap.php new file mode 100755 index 000000000..422ce53e7 --- /dev/null +++ b/library/Zend/Mail/Storage/Imap.php @@ -0,0 +1,646 @@ + Zend_Mail_Storage::FLAG_PASSED, + '\Answered' => Zend_Mail_Storage::FLAG_ANSWERED, + '\Seen' => Zend_Mail_Storage::FLAG_SEEN, + '\Unseen' => Zend_Mail_Storage::FLAG_UNSEEN, + '\Deleted' => Zend_Mail_Storage::FLAG_DELETED, + '\Draft' => Zend_Mail_Storage::FLAG_DRAFT, + '\Flagged' => Zend_Mail_Storage::FLAG_FLAGGED); + + /** + * map flags to search criterias + * @var array + */ + protected static $_searchFlags = array('\Recent' => 'RECENT', + '\Answered' => 'ANSWERED', + '\Seen' => 'SEEN', + '\Unseen' => 'UNSEEN', + '\Deleted' => 'DELETED', + '\Draft' => 'DRAFT', + '\Flagged' => 'FLAGGED'); + + /** + * Count messages all messages in current box + * + * @return int number of messages + * @throws Zend_Mail_Storage_Exception + * @throws Zend_Mail_Protocol_Exception + */ + public function countMessages($flags = null) + { + if (!$this->_currentFolder) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('No selected folder to count'); + } + + if ($flags === null) { + return count($this->_protocol->search(array('ALL'))); + } + + $params = array(); + foreach ((array)$flags as $flag) { + if (isset(self::$_searchFlags[$flag])) { + $params[] = self::$_searchFlags[$flag]; + } else { + $params[] = 'KEYWORD'; + $params[] = $this->_protocol->escapeString($flag); + } + } + return count($this->_protocol->search($params)); + } + + /** + * get a list of messages with number and size + * + * @param int $id number of message + * @return int|array size of given message of list with all messages as array(num => size) + * @throws Zend_Mail_Protocol_Exception + */ + public function getSize($id = 0) + { + if ($id) { + return $this->_protocol->fetch('RFC822.SIZE', $id); + } + return $this->_protocol->fetch('RFC822.SIZE', 1, INF); + } + + /** + * Fetch a message + * + * @param int $id number of message + * @return Zend_Mail_Message + * @throws Zend_Mail_Protocol_Exception + */ + public function getMessage($id) + { + $data = $this->_protocol->fetch(array('FLAGS', 'RFC822.HEADER'), $id); + $header = $data['RFC822.HEADER']; + + $flags = array(); + foreach ($data['FLAGS'] as $flag) { + $flags[] = isset(self::$_knownFlags[$flag]) ? self::$_knownFlags[$flag] : $flag; + } + + return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $header, 'flags' => $flags)); + } + + /* + * Get raw header of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage header + * @param int $topLines include this many lines with header (after an empty line) + * @param int $topLines include this many lines with header (after an empty line) + * @return string raw header + * @throws Zend_Mail_Protocol_Exception + * @throws Zend_Mail_Storage_Exception + */ + public function getRawHeader($id, $part = null, $topLines = 0) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + + // TODO: toplines + return $this->_protocol->fetch('RFC822.HEADER', $id); + } + + /* + * Get raw content of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage content + * @return string raw content + * @throws Zend_Mail_Protocol_Exception + * @throws Zend_Mail_Storage_Exception + */ + public function getRawContent($id, $part = null) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + + return $this->_protocol->fetch('RFC822.TEXT', $id); + } + + /** + * create instance with parameters + * Supported paramters are + * - user username + * - host hostname or ip address of IMAP server [optional, default = 'localhost'] + * - password password for user 'username' [optional, default = ''] + * - port port for IMAP server [optional, default = 110] + * - ssl 'SSL' or 'TLS' for secure sockets + * - folder select this folder [optional, default = 'INBOX'] + * + * @param array $params mail reader specific parameters + * @throws Zend_Mail_Storage_Exception + * @throws Zend_Mail_Protocol_Exception + */ + public function __construct($params) + { + if (is_array($params)) { + $params = (object)$params; + } + + $this->_has['flags'] = true; + + if ($params instanceof Zend_Mail_Protocol_Imap) { + $this->_protocol = $params; + try { + $this->selectFolder('INBOX'); + } catch(Zend_Mail_Storage_Exception $e) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot select INBOX, is this a valid transport?', 0, $e); + } + return; + } + + if (!isset($params->user)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('need at least user in params'); + } + + $host = isset($params->host) ? $params->host : 'localhost'; + $password = isset($params->password) ? $params->password : ''; + $port = isset($params->port) ? $params->port : null; + $ssl = isset($params->ssl) ? $params->ssl : false; + + $this->_protocol = new Zend_Mail_Protocol_Imap(); + $this->_protocol->connect($host, $port, $ssl); + if (!$this->_protocol->login($params->user, $password)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot login, user or password wrong'); + } + $this->selectFolder(isset($params->folder) ? $params->folder : 'INBOX'); + } + + /** + * Close resource for mail lib. If you need to control, when the resource + * is closed. Otherwise the destructor would call this. + * + * @return null + */ + public function close() + { + $this->_currentFolder = ''; + $this->_protocol->logout(); + } + + /** + * Keep the server busy. + * + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function noop() + { + if (!$this->_protocol->noop()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('could not do nothing'); + } + } + + /** + * Remove a message from server. If you're doing that from a web enviroment + * you should be careful and use a uniqueid as parameter if possible to + * identify the message. + * + * @param int $id number of message + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function removeMessage($id) + { + if (!$this->_protocol->store(array(Zend_Mail_Storage::FLAG_DELETED), $id, null, '+')) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot set deleted flag'); + } + // TODO: expunge here or at close? we can handle an error here better and are more fail safe + if (!$this->_protocol->expunge()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('message marked as deleted, but could not expunge'); + } + } + + /** + * get unique id for one or all messages + * + * if storage does not support unique ids it's the same as the message number + * + * @param int|null $id message number + * @return array|string message number for given message or all messages as array + * @throws Zend_Mail_Storage_Exception + */ + public function getUniqueId($id = null) + { + if ($id) { + return $this->_protocol->fetch('UID', $id); + } + + return $this->_protocol->fetch('UID', 1, INF); + } + + /** + * get a message number from a unique id + * + * I.e. if you have a webmailer that supports deleting messages you should use unique ids + * as parameter and use this method to translate it to message number right before calling removeMessage() + * + * @param string $id unique id + * @return int message number + * @throws Zend_Mail_Storage_Exception + */ + public function getNumberByUniqueId($id) + { + // TODO: use search to find number directly + $ids = $this->getUniqueId(); + foreach ($ids as $k => $v) { + if ($v == $id) { + return $k; + } + } + + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('unique id not found'); + } + + + /** + * get root folder or given folder + * + * @param string $rootFolder get folder structure for given folder, else root + * @return Zend_Mail_Storage_Folder root or wanted folder + * @throws Zend_Mail_Storage_Exception + * @throws Zend_Mail_Protocol_Exception + */ + public function getFolders($rootFolder = null) + { + $folders = $this->_protocol->listMailbox((string)$rootFolder); + if (!$folders) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('folder not found'); + } + + ksort($folders, SORT_STRING); + $root = new Zend_Mail_Storage_Folder('/', '/', false); + $stack = array(null); + $folderStack = array(null); + $parentFolder = $root; + $parent = ''; + + foreach ($folders as $globalName => $data) { + do { + if (!$parent || strpos($globalName, $parent) === 0) { + $pos = strrpos($globalName, $data['delim']); + if ($pos === false) { + $localName = $globalName; + } else { + $localName = substr($globalName, $pos + 1); + } + $selectable = !$data['flags'] || !in_array('\\Noselect', $data['flags']); + + array_push($stack, $parent); + $parent = $globalName . $data['delim']; + $folder = new Zend_Mail_Storage_Folder($localName, $globalName, $selectable); + $parentFolder->$localName = $folder; + array_push($folderStack, $parentFolder); + $parentFolder = $folder; + break; + } else if ($stack) { + $parent = array_pop($stack); + $parentFolder = array_pop($folderStack); + } + } while ($stack); + if (!$stack) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('error while constructing folder tree'); + } + } + + return $root; + } + + /** + * select given folder + * + * folder must be selectable! + * + * @param Zend_Mail_Storage_Folder|string $globalName global name of folder or instance for subfolder + * @return null + * @throws Zend_Mail_Storage_Exception + * @throws Zend_Mail_Protocol_Exception + */ + public function selectFolder($globalName) + { + $this->_currentFolder = $globalName; + if (!$this->_protocol->select($this->_currentFolder)) { + $this->_currentFolder = ''; + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot change folder, maybe it does not exist'); + } + } + + + /** + * get Zend_Mail_Storage_Folder instance for current folder + * + * @return Zend_Mail_Storage_Folder instance of current folder + * @throws Zend_Mail_Storage_Exception + */ + public function getCurrentFolder() + { + return $this->_currentFolder; + } + + /** + * create a new folder + * + * This method also creates parent folders if necessary. Some mail storages may restrict, which folder + * may be used as parent or which chars may be used in the folder name + * + * @param string $name global name of folder, local name if $parentFolder is set + * @param string|Zend_Mail_Storage_Folder $parentFolder parent folder for new folder, else root folder is parent + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function createFolder($name, $parentFolder = null) + { + // TODO: we assume / as the hierarchy delim - need to get that from the folder class! + if ($parentFolder instanceof Zend_Mail_Storage_Folder) { + $folder = $parentFolder->getGlobalName() . '/' . $name; + } else if ($parentFolder != null) { + $folder = $parentFolder . '/' . $name; + } else { + $folder = $name; + } + + if (!$this->_protocol->create($folder)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot create folder'); + } + } + + /** + * remove a folder + * + * @param string|Zend_Mail_Storage_Folder $name name or instance of folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function removeFolder($name) + { + if ($name instanceof Zend_Mail_Storage_Folder) { + $name = $name->getGlobalName(); + } + + if (!$this->_protocol->delete($name)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot delete folder'); + } + } + + /** + * rename and/or move folder + * + * The new name has the same restrictions as in createFolder() + * + * @param string|Zend_Mail_Storage_Folder $oldName name or instance of folder + * @param string $newName new global name of folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function renameFolder($oldName, $newName) + { + if ($oldName instanceof Zend_Mail_Storage_Folder) { + $oldName = $oldName->getGlobalName(); + } + + if (!$this->_protocol->rename($oldName, $newName)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot rename folder'); + } + } + + /** + * append a new message to mail storage + * + * @param string $message message as string or instance of message class + * @param null|string|Zend_Mail_Storage_Folder $folder folder for new message, else current folder is taken + * @param null|array $flags set flags for new message, else a default set is used + * @throws Zend_Mail_Storage_Exception + */ + // not yet * @param string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class + public function appendMessage($message, $folder = null, $flags = null) + { + if ($folder === null) { + $folder = $this->_currentFolder; + } + + if ($flags === null) { + $flags = array(Zend_Mail_Storage::FLAG_SEEN); + } + + // TODO: handle class instances for $message + if (!$this->_protocol->append($folder, $message, $flags)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot create message, please check if the folder exists and your flags'); + } + } + + /** + * copy an existing message + * + * @param int $id number of message + * @param string|Zend_Mail_Storage_Folder $folder name or instance of targer folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function copyMessage($id, $folder) + { + if (!$this->_protocol->copy($folder, $id)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot copy message, does the folder exist?'); + } + } + + /** + * move an existing message + * + * NOTE: imap has no native move command, thus it's emulated with copy and delete + * + * @param int $id number of message + * @param string|Zend_Mail_Storage_Folder $folder name or instance of targer folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function moveMessage($id, $folder) { + $this->copyMessage($id, $folder); + $this->removeMessage($id); + } + + /** + * set flags for message + * + * NOTE: this method can't set the recent flag. + * + * @param int $id number of message + * @param array $flags new flags for message + * @throws Zend_Mail_Storage_Exception + */ + public function setFlags($id, $flags) + { + if (!$this->_protocol->store($flags, $id)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot set flags, have you tried to set the recent flag or special chars?'); + } + } +} + diff --git a/library/Zend/Mail/Storage/Maildir.php b/library/Zend/Mail/Storage/Maildir.php new file mode 100755 index 000000000..76708e856 --- /dev/null +++ b/library/Zend/Mail/Storage/Maildir.php @@ -0,0 +1,475 @@ + Zend_Mail_Storage::FLAG_DRAFT, + 'F' => Zend_Mail_Storage::FLAG_FLAGGED, + 'P' => Zend_Mail_Storage::FLAG_PASSED, + 'R' => Zend_Mail_Storage::FLAG_ANSWERED, + 'S' => Zend_Mail_Storage::FLAG_SEEN, + 'T' => Zend_Mail_Storage::FLAG_DELETED); + + // TODO: getFlags($id) for fast access if headers are not needed (i.e. just setting flags)? + + /** + * Count messages all messages in current box + * + * @return int number of messages + * @throws Zend_Mail_Storage_Exception + */ + public function countMessages($flags = null) + { + if ($flags === null) { + return count($this->_files); + } + + $count = 0; + if (!is_array($flags)) { + foreach ($this->_files as $file) { + if (isset($file['flaglookup'][$flags])) { + ++$count; + } + } + return $count; + } + + $flags = array_flip($flags); + foreach ($this->_files as $file) { + foreach ($flags as $flag => $v) { + if (!isset($file['flaglookup'][$flag])) { + continue 2; + } + } + ++$count; + } + return $count; + } + + /** + * Get one or all fields from file structure. Also checks if message is valid + * + * @param int $id message number + * @param string|null $field wanted field + * @return string|array wanted field or all fields as array + * @throws Zend_Mail_Storage_Exception + */ + protected function _getFileData($id, $field = null) + { + if (!isset($this->_files[$id - 1])) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('id does not exist'); + } + + if (!$field) { + return $this->_files[$id - 1]; + } + + if (!isset($this->_files[$id - 1][$field])) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('field does not exist'); + } + + return $this->_files[$id - 1][$field]; + } + + /** + * Get a list of messages with number and size + * + * @param int|null $id number of message or null for all messages + * @return int|array size of given message of list with all messages as array(num => size) + * @throws Zend_Mail_Storage_Exception + */ + public function getSize($id = null) + { + if ($id !== null) { + $filedata = $this->_getFileData($id); + return isset($filedata['size']) ? $filedata['size'] : filesize($filedata['filename']); + } + + $result = array(); + foreach ($this->_files as $num => $data) { + $result[$num + 1] = isset($data['size']) ? $data['size'] : filesize($data['filename']); + } + + return $result; + } + + + + /** + * Fetch a message + * + * @param int $id number of message + * @return Zend_Mail_Message_File + * @throws Zend_Mail_Storage_Exception + */ + public function getMessage($id) + { + // TODO that's ugly, would be better to let the message class decide + if (strtolower($this->_messageClass) == 'zend_mail_message_file' || is_subclass_of($this->_messageClass, 'zend_mail_message_file')) { + return new $this->_messageClass(array('file' => $this->_getFileData($id, 'filename'), + 'flags' => $this->_getFileData($id, 'flags'))); + } + + return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $this->getRawHeader($id), + 'flags' => $this->_getFileData($id, 'flags'))); + } + + /* + * Get raw header of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage header + * @param int $topLines include this many lines with header (after an empty line) + * @return string raw header + * @throws Zend_Mail_Storage_Exception + */ + public function getRawHeader($id, $part = null, $topLines = 0) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + + $fh = fopen($this->_getFileData($id, 'filename'), 'r'); + + $content = ''; + while (!feof($fh)) { + $line = fgets($fh); + if (!trim($line)) { + break; + } + $content .= $line; + } + + fclose($fh); + return $content; + } + + /* + * Get raw content of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage content + * @return string raw content + * @throws Zend_Mail_Storage_Exception + */ + public function getRawContent($id, $part = null) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + + $fh = fopen($this->_getFileData($id, 'filename'), 'r'); + + while (!feof($fh)) { + $line = fgets($fh); + if (!trim($line)) { + break; + } + } + + $content = stream_get_contents($fh); + fclose($fh); + return $content; + } + + /** + * Create instance with parameters + * Supported parameters are: + * - dirname dirname of mbox file + * + * @param array $params mail reader specific parameters + * @throws Zend_Mail_Storage_Exception + */ + public function __construct($params) + { + if (is_array($params)) { + $params = (object)$params; + } + + if (!isset($params->dirname) || !is_dir($params->dirname)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('no valid dirname given in params'); + } + + if (!$this->_isMaildir($params->dirname)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('invalid maildir given'); + } + + $this->_has['top'] = true; + $this->_has['flags'] = true; + $this->_openMaildir($params->dirname); + } + + /** + * check if a given dir is a valid maildir + * + * @param string $dirname name of dir + * @return bool dir is valid maildir + */ + protected function _isMaildir($dirname) + { + if (file_exists($dirname . '/new') && !is_dir($dirname . '/new')) { + return false; + } + if (file_exists($dirname . '/tmp') && !is_dir($dirname . '/tmp')) { + return false; + } + return is_dir($dirname . '/cur'); + } + + /** + * open given dir as current maildir + * + * @param string $dirname name of maildir + * @return null + * @throws Zend_Mail_Storage_Exception + */ + protected function _openMaildir($dirname) + { + if ($this->_files) { + $this->close(); + } + + $dh = @opendir($dirname . '/cur/'); + if (!$dh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot open maildir'); + } + $this->_getMaildirFiles($dh, $dirname . '/cur/'); + closedir($dh); + + $dh = @opendir($dirname . '/new/'); + if ($dh) { + $this->_getMaildirFiles($dh, $dirname . '/new/', array(Zend_Mail_Storage::FLAG_RECENT)); + closedir($dh); + } else if (file_exists($dirname . '/new/')) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot read recent mails in maildir'); + } + } + + /** + * find all files in opened dir handle and add to maildir files + * + * @param resource $dh dir handle used for search + * @param string $dirname dirname of dir in $dh + * @param array $default_flags default flags for given dir + * @return null + */ + protected function _getMaildirFiles($dh, $dirname, $default_flags = array()) + { + while (($entry = readdir($dh)) !== false) { + if ($entry[0] == '.' || !is_file($dirname . $entry)) { + continue; + } + + @list($uniq, $info) = explode(':', $entry, 2); + @list(,$size) = explode(',', $uniq, 2); + if ($size && $size[0] == 'S' && $size[1] == '=') { + $size = substr($size, 2); + } + if (!ctype_digit($size)) { + $size = null; + } + @list($version, $flags) = explode(',', $info, 2); + if ($version != 2) { + $flags = ''; + } + + $named_flags = $default_flags; + $length = strlen($flags); + for ($i = 0; $i < $length; ++$i) { + $flag = $flags[$i]; + $named_flags[$flag] = isset(self::$_knownFlags[$flag]) ? self::$_knownFlags[$flag] : $flag; + } + + $data = array('uniq' => $uniq, + 'flags' => $named_flags, + 'flaglookup' => array_flip($named_flags), + 'filename' => $dirname . $entry); + if ($size !== null) { + $data['size'] = (int)$size; + } + $this->_files[] = $data; + } + } + + + /** + * Close resource for mail lib. If you need to control, when the resource + * is closed. Otherwise the destructor would call this. + * + * @return void + */ + public function close() + { + $this->_files = array(); + } + + + /** + * Waste some CPU cycles doing nothing. + * + * @return void + */ + public function noop() + { + return true; + } + + + /** + * stub for not supported message deletion + * + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function removeMessage($id) + { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('maildir is (currently) read-only'); + } + + /** + * get unique id for one or all messages + * + * if storage does not support unique ids it's the same as the message number + * + * @param int|null $id message number + * @return array|string message number for given message or all messages as array + * @throws Zend_Mail_Storage_Exception + */ + public function getUniqueId($id = null) + { + if ($id) { + return $this->_getFileData($id, 'uniq'); + } + + $ids = array(); + foreach ($this->_files as $num => $file) { + $ids[$num + 1] = $file['uniq']; + } + return $ids; + } + + /** + * get a message number from a unique id + * + * I.e. if you have a webmailer that supports deleting messages you should use unique ids + * as parameter and use this method to translate it to message number right before calling removeMessage() + * + * @param string $id unique id + * @return int message number + * @throws Zend_Mail_Storage_Exception + */ + public function getNumberByUniqueId($id) + { + foreach ($this->_files as $num => $file) { + if ($file['uniq'] == $id) { + return $num + 1; + } + } + + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('unique id not found'); + } +} diff --git a/library/Zend/Mail/Storage/Mbox.php b/library/Zend/Mail/Storage/Mbox.php new file mode 100755 index 000000000..ddcc0fca6 --- /dev/null +++ b/library/Zend/Mail/Storage/Mbox.php @@ -0,0 +1,447 @@ + start, 'seperator' => headersep, 'end' => end) + * @var array + */ + protected $_positions; + + /** + * used message class, change it in an extened class to extend the returned message class + * @var string + */ + protected $_messageClass = 'Zend_Mail_Message_File'; + + /** + * Count messages all messages in current box + * + * @return int number of messages + * @throws Zend_Mail_Storage_Exception + */ + public function countMessages() + { + return count($this->_positions); + } + + + /** + * Get a list of messages with number and size + * + * @param int|null $id number of message or null for all messages + * @return int|array size of given message of list with all messages as array(num => size) + */ + public function getSize($id = 0) + { + if ($id) { + $pos = $this->_positions[$id - 1]; + return $pos['end'] - $pos['start']; + } + + $result = array(); + foreach ($this->_positions as $num => $pos) { + $result[$num + 1] = $pos['end'] - $pos['start']; + } + + return $result; + } + + + /** + * Get positions for mail message or throw exeption if id is invalid + * + * @param int $id number of message + * @return array positions as in _positions + * @throws Zend_Mail_Storage_Exception + */ + protected function _getPos($id) + { + if (!isset($this->_positions[$id - 1])) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('id does not exist'); + } + + return $this->_positions[$id - 1]; + } + + + /** + * Fetch a message + * + * @param int $id number of message + * @return Zend_Mail_Message_File + * @throws Zend_Mail_Storage_Exception + */ + public function getMessage($id) + { + // TODO that's ugly, would be better to let the message class decide + if (strtolower($this->_messageClass) == 'zend_mail_message_file' || is_subclass_of($this->_messageClass, 'zend_mail_message_file')) { + // TODO top/body lines + $messagePos = $this->_getPos($id); + return new $this->_messageClass(array('file' => $this->_fh, 'startPos' => $messagePos['start'], + 'endPos' => $messagePos['end'])); + } + + $bodyLines = 0; // TODO: need a way to change that + + $message = $this->getRawHeader($id); + // file pointer is after headers now + if ($bodyLines) { + $message .= "\n"; + while ($bodyLines-- && ftell($this->_fh) < $this->_positions[$id - 1]['end']) { + $message .= fgets($this->_fh); + } + } + + return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $message)); + } + + /* + * Get raw header of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage header + * @param int $topLines include this many lines with header (after an empty line) + * @return string raw header + * @throws Zend_Mail_Protocol_Exception + * @throws Zend_Mail_Storage_Exception + */ + public function getRawHeader($id, $part = null, $topLines = 0) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + $messagePos = $this->_getPos($id); + // TODO: toplines + return stream_get_contents($this->_fh, $messagePos['separator'] - $messagePos['start'], $messagePos['start']); + } + + /* + * Get raw content of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage content + * @return string raw content + * @throws Zend_Mail_Protocol_Exception + * @throws Zend_Mail_Storage_Exception + */ + public function getRawContent($id, $part = null) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + $messagePos = $this->_getPos($id); + return stream_get_contents($this->_fh, $messagePos['end'] - $messagePos['separator'], $messagePos['separator']); + } + + /** + * Create instance with parameters + * Supported parameters are: + * - filename filename of mbox file + * + * @param array $params mail reader specific parameters + * @throws Zend_Mail_Storage_Exception + */ + public function __construct($params) + { + if (is_array($params)) { + $params = (object)$params; + } + + if (!isset($params->filename) /* || Zend_Loader::isReadable($params['filename']) */) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('no valid filename given in params'); + } + + $this->_openMboxFile($params->filename); + $this->_has['top'] = true; + $this->_has['uniqueid'] = false; + } + + /** + * check if given file is a mbox file + * + * if $file is a resource its file pointer is moved after the first line + * + * @param resource|string $file stream resource of name of file + * @param bool $fileIsString file is string or resource + * @return bool file is mbox file + */ + protected function _isMboxFile($file, $fileIsString = true) + { + if ($fileIsString) { + $file = @fopen($file, 'r'); + if (!$file) { + return false; + } + } else { + fseek($file, 0); + } + + $result = false; + + $line = fgets($file); + if (strpos($line, 'From ') === 0) { + $result = true; + } + + if ($fileIsString) { + @fclose($file); + } + + return $result; + } + + /** + * open given file as current mbox file + * + * @param string $filename filename of mbox file + * @return null + * @throws Zend_Mail_Storage_Exception + */ + protected function _openMboxFile($filename) + { + if ($this->_fh) { + $this->close(); + } + + $this->_fh = @fopen($filename, 'r'); + if (!$this->_fh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot open mbox file'); + } + $this->_filename = $filename; + $this->_filemtime = filemtime($this->_filename); + + if (!$this->_isMboxFile($this->_fh, false)) { + @fclose($this->_fh); + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('file is not a valid mbox format'); + } + + $messagePos = array('start' => ftell($this->_fh), 'separator' => 0, 'end' => 0); + while (($line = fgets($this->_fh)) !== false) { + if (strpos($line, 'From ') === 0) { + $messagePos['end'] = ftell($this->_fh) - strlen($line) - 2; // + newline + if (!$messagePos['separator']) { + $messagePos['separator'] = $messagePos['end']; + } + $this->_positions[] = $messagePos; + $messagePos = array('start' => ftell($this->_fh), 'separator' => 0, 'end' => 0); + } + if (!$messagePos['separator'] && !trim($line)) { + $messagePos['separator'] = ftell($this->_fh); + } + } + + $messagePos['end'] = ftell($this->_fh); + if (!$messagePos['separator']) { + $messagePos['separator'] = $messagePos['end']; + } + $this->_positions[] = $messagePos; + } + + /** + * Close resource for mail lib. If you need to control, when the resource + * is closed. Otherwise the destructor would call this. + * + * @return void + */ + public function close() + { + @fclose($this->_fh); + $this->_positions = array(); + } + + + /** + * Waste some CPU cycles doing nothing. + * + * @return void + */ + public function noop() + { + return true; + } + + + /** + * stub for not supported message deletion + * + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function removeMessage($id) + { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('mbox is read-only'); + } + + /** + * get unique id for one or all messages + * + * Mbox does not support unique ids (yet) - it's always the same as the message number. + * That shouldn't be a problem, because we can't change mbox files. Therefor the message + * number is save enough. + * + * @param int|null $id message number + * @return array|string message number for given message or all messages as array + * @throws Zend_Mail_Storage_Exception + */ + public function getUniqueId($id = null) + { + if ($id) { + // check if id exists + $this->_getPos($id); + return $id; + } + + $range = range(1, $this->countMessages()); + return array_combine($range, $range); + } + + /** + * get a message number from a unique id + * + * I.e. if you have a webmailer that supports deleting messages you should use unique ids + * as parameter and use this method to translate it to message number right before calling removeMessage() + * + * @param string $id unique id + * @return int message number + * @throws Zend_Mail_Storage_Exception + */ + public function getNumberByUniqueId($id) + { + // check if id exists + $this->_getPos($id); + return $id; + } + + /** + * magic method for serialize() + * + * with this method you can cache the mbox class + * + * @return array name of variables + */ + public function __sleep() + { + return array('_filename', '_positions', '_filemtime'); + } + + /** + * magic method for unserialize() + * + * with this method you can cache the mbox class + * for cache validation the mtime of the mbox file is used + * + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function __wakeup() + { + if ($this->_filemtime != @filemtime($this->_filename)) { + $this->close(); + $this->_openMboxFile($this->_filename); + } else { + $this->_fh = @fopen($this->_filename, 'r'); + if (!$this->_fh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot open mbox file'); + } + } + } + +} diff --git a/library/Zend/Mail/Storage/Pop3.php b/library/Zend/Mail/Storage/Pop3.php new file mode 100755 index 000000000..234b546c4 --- /dev/null +++ b/library/Zend/Mail/Storage/Pop3.php @@ -0,0 +1,328 @@ +_protocol->status($count, $null); + return (int)$count; + } + + /** + * get a list of messages with number and size + * + * @param int $id number of message + * @return int|array size of given message of list with all messages as array(num => size) + * @throws Zend_Mail_Protocol_Exception + */ + public function getSize($id = 0) + { + $id = $id ? $id : null; + return $this->_protocol->getList($id); + } + + /** + * Fetch a message + * + * @param int $id number of message + * @return Zend_Mail_Message + * @throws Zend_Mail_Protocol_Exception + */ + public function getMessage($id) + { + $bodyLines = 0; + $message = $this->_protocol->top($id, $bodyLines, true); + + return new $this->_messageClass(array('handler' => $this, 'id' => $id, 'headers' => $message, + 'noToplines' => $bodyLines < 1)); + } + + /* + * Get raw header of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage header + * @param int $topLines include this many lines with header (after an empty line) + * @return string raw header + * @throws Zend_Mail_Protocol_Exception + * @throws Zend_Mail_Storage_Exception + */ + public function getRawHeader($id, $part = null, $topLines = 0) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + + return $this->_protocol->top($id, 0, true); + } + + /* + * Get raw content of message or part + * + * @param int $id number of message + * @param null|array|string $part path to part or null for messsage content + * @return string raw content + * @throws Zend_Mail_Protocol_Exception + * @throws Zend_Mail_Storage_Exception + */ + public function getRawContent($id, $part = null) + { + if ($part !== null) { + // TODO: implement + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('not implemented'); + } + + $content = $this->_protocol->retrieve($id); + // TODO: find a way to avoid decoding the headers + Zend_Mime_Decode::splitMessage($content, $null, $body); + return $body; + } + + /** + * create instance with parameters + * Supported paramters are + * - host hostname or ip address of POP3 server + * - user username + * - password password for user 'username' [optional, default = ''] + * - port port for POP3 server [optional, default = 110] + * - ssl 'SSL' or 'TLS' for secure sockets + * + * @param array $params mail reader specific parameters + * @throws Zend_Mail_Storage_Exception + * @throws Zend_Mail_Protocol_Exception + */ + public function __construct($params) + { + if (is_array($params)) { + $params = (object)$params; + } + + $this->_has['fetchPart'] = false; + $this->_has['top'] = null; + $this->_has['uniqueid'] = null; + + if ($params instanceof Zend_Mail_Protocol_Pop3) { + $this->_protocol = $params; + return; + } + + if (!isset($params->user)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('need at least user in params'); + } + + $host = isset($params->host) ? $params->host : 'localhost'; + $password = isset($params->password) ? $params->password : ''; + $port = isset($params->port) ? $params->port : null; + $ssl = isset($params->ssl) ? $params->ssl : false; + + $this->_protocol = new Zend_Mail_Protocol_Pop3(); + $this->_protocol->connect($host, $port, $ssl); + $this->_protocol->login($params->user, $password); + } + + /** + * Close resource for mail lib. If you need to control, when the resource + * is closed. Otherwise the destructor would call this. + * + * @return null + */ + public function close() + { + $this->_protocol->logout(); + } + + /** + * Keep the server busy. + * + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function noop() + { + return $this->_protocol->noop(); + } + + /** + * Remove a message from server. If you're doing that from a web enviroment + * you should be careful and use a uniqueid as parameter if possible to + * identify the message. + * + * @param int $id number of message + * @return null + * @throws Zend_Mail_Protocol_Exception + */ + public function removeMessage($id) + { + $this->_protocol->delete($id); + } + + /** + * get unique id for one or all messages + * + * if storage does not support unique ids it's the same as the message number + * + * @param int|null $id message number + * @return array|string message number for given message or all messages as array + * @throws Zend_Mail_Storage_Exception + */ + public function getUniqueId($id = null) + { + if (!$this->hasUniqueid) { + if ($id) { + return $id; + } + $count = $this->countMessages(); + if ($count < 1) { + return array(); + } + $range = range(1, $count); + return array_combine($range, $range); + } + + return $this->_protocol->uniqueid($id); + } + + /** + * get a message number from a unique id + * + * I.e. if you have a webmailer that supports deleting messages you should use unique ids + * as parameter and use this method to translate it to message number right before calling removeMessage() + * + * @param string $id unique id + * @return int message number + * @throws Zend_Mail_Storage_Exception + */ + public function getNumberByUniqueId($id) + { + if (!$this->hasUniqueid) { + return $id; + } + + $ids = $this->getUniqueId(); + foreach ($ids as $k => $v) { + if ($v == $id) { + return $k; + } + } + + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('unique id not found'); + } + + /** + * Special handling for hasTop and hasUniqueid. The headers of the first message is + * retrieved if Top wasn't needed/tried yet. + * + * @see Zend_Mail_Storage_Abstract:__get() + * @param string $var + * @return string + * @throws Zend_Mail_Storage_Exception + */ + public function __get($var) + { + $result = parent::__get($var); + if ($result !== null) { + return $result; + } + + if (strtolower($var) == 'hastop') { + if ($this->_protocol->hasTop === null) { + // need to make a real call, because not all server are honest in their capas + try { + $this->_protocol->top(1, 0, false); + } catch(Zend_Mail_Exception $e) { + // ignoring error + } + } + $this->_has['top'] = $this->_protocol->hasTop; + return $this->_protocol->hasTop; + } + + if (strtolower($var) == 'hasuniqueid') { + $id = null; + try { + $id = $this->_protocol->uniqueid(1); + } catch(Zend_Mail_Exception $e) { + // ignoring error + } + $this->_has['uniqueid'] = $id ? true : false; + return $this->_has['uniqueid']; + } + + return $result; + } +} diff --git a/library/Zend/Mail/Storage/Writable/Interface.php b/library/Zend/Mail/Storage/Writable/Interface.php new file mode 100755 index 000000000..aad8e5e03 --- /dev/null +++ b/library/Zend/Mail/Storage/Writable/Interface.php @@ -0,0 +1,108 @@ +create) && isset($params->dirname) && !file_exists($params->dirname . DIRECTORY_SEPARATOR . 'cur')) { + self::initMaildir($params->dirname); + } + + parent::__construct($params); + } + + /** + * create a new folder + * + * This method also creates parent folders if necessary. Some mail storages may restrict, which folder + * may be used as parent or which chars may be used in the folder name + * + * @param string $name global name of folder, local name if $parentFolder is set + * @param string|Zend_Mail_Storage_Folder $parentFolder parent folder for new folder, else root folder is parent + * @return string only used internally (new created maildir) + * @throws Zend_Mail_Storage_Exception + */ + public function createFolder($name, $parentFolder = null) + { + if ($parentFolder instanceof Zend_Mail_Storage_Folder) { + $folder = $parentFolder->getGlobalName() . $this->_delim . $name; + } else if ($parentFolder != null) { + $folder = rtrim($parentFolder, $this->_delim) . $this->_delim . $name; + } else { + $folder = $name; + } + + $folder = trim($folder, $this->_delim); + + // first we check if we try to create a folder that does exist + $exists = null; + try { + $exists = $this->getFolders($folder); + } catch (Zend_Mail_Exception $e) { + // ok + } + if ($exists) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('folder already exists'); + } + + if (strpos($folder, $this->_delim . $this->_delim) !== false) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('invalid name - folder parts may not be empty'); + } + + if (strpos($folder, 'INBOX' . $this->_delim) === 0) { + $folder = substr($folder, 6); + } + + $fulldir = $this->_rootdir . '.' . $folder; + + // check if we got tricked and would create a dir outside of the rootdir or not as direct child + if (strpos($folder, DIRECTORY_SEPARATOR) !== false || strpos($folder, '/') !== false + || dirname($fulldir) . DIRECTORY_SEPARATOR != $this->_rootdir) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('invalid name - no directory seprator allowed in folder name'); + } + + // has a parent folder? + $parent = null; + if (strpos($folder, $this->_delim)) { + // let's see if the parent folder exists + $parent = substr($folder, 0, strrpos($folder, $this->_delim)); + try { + $this->getFolders($parent); + } catch (Zend_Mail_Exception $e) { + // does not - create parent folder + $this->createFolder($parent); + } + } + + if (!@mkdir($fulldir) || !@mkdir($fulldir . DIRECTORY_SEPARATOR . 'cur')) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('error while creating new folder, may be created incompletly'); + } + + mkdir($fulldir . DIRECTORY_SEPARATOR . 'new'); + mkdir($fulldir . DIRECTORY_SEPARATOR . 'tmp'); + + $localName = $parent ? substr($folder, strlen($parent) + 1) : $folder; + $this->getFolders($parent)->$localName = new Zend_Mail_Storage_Folder($localName, $folder, true); + + return $fulldir; + } + + /** + * remove a folder + * + * @param string|Zend_Mail_Storage_Folder $name name or instance of folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function removeFolder($name) + { + // TODO: This could fail in the middle of the task, which is not optimal. + // But there is no defined standard way to mark a folder as removed and there is no atomar fs-op + // to remove a directory. Also moving the folder to a/the trash folder is not possible, as + // all parent folders must be created. What we could do is add a dash to the front of the + // directory name and it should be ignored as long as other processes obey the standard. + + if ($name instanceof Zend_Mail_Storage_Folder) { + $name = $name->getGlobalName(); + } + + $name = trim($name, $this->_delim); + if (strpos($name, 'INBOX' . $this->_delim) === 0) { + $name = substr($name, 6); + } + + // check if folder exists and has no children + if (!$this->getFolders($name)->isLeaf()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('delete children first'); + } + + if ($name == 'INBOX' || $name == DIRECTORY_SEPARATOR || $name == '/') { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('wont delete INBOX'); + } + + if ($name == $this->getCurrentFolder()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('wont delete selected folder'); + } + + foreach (array('tmp', 'new', 'cur', '.') as $subdir) { + $dir = $this->_rootdir . '.' . $name . DIRECTORY_SEPARATOR . $subdir; + if (!file_exists($dir)) { + continue; + } + $dh = opendir($dir); + if (!$dh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("error opening $subdir"); + } + while (($entry = readdir($dh)) !== false) { + if ($entry == '.' || $entry == '..') { + continue; + } + if (!unlink($dir . DIRECTORY_SEPARATOR . $entry)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("error cleaning $subdir"); + } + } + closedir($dh); + if ($subdir !== '.') { + if (!rmdir($dir)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("error removing $subdir"); + } + } + } + + if (!rmdir($this->_rootdir . '.' . $name)) { + // at least we should try to make it a valid maildir again + mkdir($this->_rootdir . '.' . $name . DIRECTORY_SEPARATOR . 'cur'); + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("error removing maindir"); + } + + $parent = strpos($name, $this->_delim) ? substr($name, 0, strrpos($name, $this->_delim)) : null; + $localName = $parent ? substr($name, strlen($parent) + 1) : $name; + unset($this->getFolders($parent)->$localName); + } + + /** + * rename and/or move folder + * + * The new name has the same restrictions as in createFolder() + * + * @param string|Zend_Mail_Storage_Folder $oldName name or instance of folder + * @param string $newName new global name of folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function renameFolder($oldName, $newName) + { + // TODO: This is also not atomar and has similar problems as removeFolder() + + if ($oldName instanceof Zend_Mail_Storage_Folder) { + $oldName = $oldName->getGlobalName(); + } + + $oldName = trim($oldName, $this->_delim); + if (strpos($oldName, 'INBOX' . $this->_delim) === 0) { + $oldName = substr($oldName, 6); + } + + $newName = trim($newName, $this->_delim); + if (strpos($newName, 'INBOX' . $this->_delim) === 0) { + $newName = substr($newName, 6); + } + + if (strpos($newName, $oldName . $this->_delim) === 0) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('new folder cannot be a child of old folder'); + } + + // check if folder exists and has no children + $folder = $this->getFolders($oldName); + + if ($oldName == 'INBOX' || $oldName == DIRECTORY_SEPARATOR || $oldName == '/') { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('wont rename INBOX'); + } + + if ($oldName == $this->getCurrentFolder()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('wont rename selected folder'); + } + + $newdir = $this->createFolder($newName); + + if (!$folder->isLeaf()) { + foreach ($folder as $k => $v) { + $this->renameFolder($v->getGlobalName(), $newName . $this->_delim . $k); + } + } + + $olddir = $this->_rootdir . '.' . $folder; + foreach (array('tmp', 'new', 'cur') as $subdir) { + $subdir = DIRECTORY_SEPARATOR . $subdir; + if (!file_exists($olddir . $subdir)) { + continue; + } + // using copy or moving files would be even better - but also much slower + if (!rename($olddir . $subdir, $newdir . $subdir)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('error while moving ' . $subdir); + } + } + // create a dummy if removing fails - otherwise we can't read it next time + mkdir($olddir . DIRECTORY_SEPARATOR . 'cur'); + $this->removeFolder($oldName); + } + + /** + * create a uniqueid for maildir filename + * + * This is nearly the format defined in the maildir standard. The microtime() call should already + * create a uniqueid, the pid is for multicore/-cpu machine that manage to call this function at the + * exact same time, and uname() gives us the hostname for multiple machines accessing the same storage. + * + * If someone disables posix we create a random number of the same size, so this method should also + * work on Windows - if you manage to get maildir working on Windows. + * Microtime could also be disabled, altough I've never seen it. + * + * @return string new uniqueid + */ + protected function _createUniqueId() + { + $id = ''; + $id .= function_exists('microtime') ? microtime(true) : (time() . ' ' . rand(0, 100000)); + $id .= '.' . (function_exists('posix_getpid') ? posix_getpid() : rand(50, 65535)); + $id .= '.' . php_uname('n'); + + return $id; + } + + /** + * open a temporary maildir file + * + * makes sure tmp/ exists and create a file with a unique name + * you should close the returned filehandle! + * + * @param string $folder name of current folder without leading . + * @return array array('dirname' => dir of maildir folder, 'uniq' => unique id, 'filename' => name of create file + * 'handle' => file opened for writing) + * @throws Zend_Mail_Storage_Exception + */ + protected function _createTmpFile($folder = 'INBOX') + { + if ($folder == 'INBOX') { + $tmpdir = $this->_rootdir . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR; + } else { + $tmpdir = $this->_rootdir . '.' . $folder . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR; + } + if (!file_exists($tmpdir)) { + if (!mkdir($tmpdir)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('problems creating tmp dir'); + } + } + + // we should retry to create a unique id if a file with the same name exists + // to avoid a script timeout we only wait 1 second (instead of 2) and stop + // after a defined retry count + // if you change this variable take into account that it can take up to $max_tries seconds + // normally we should have a valid unique name after the first try, we're just following the "standard" here + $max_tries = 5; + for ($i = 0; $i < $max_tries; ++$i) { + $uniq = $this->_createUniqueId(); + if (!file_exists($tmpdir . $uniq)) { + // here is the race condition! - as defined in the standard + // to avoid having a long time between stat()ing the file and creating it we're opening it here + // to mark the filename as taken + $fh = fopen($tmpdir . $uniq, 'w'); + if (!$fh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('could not open temp file'); + } + break; + } + sleep(1); + } + + if (!$fh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception("tried $max_tries unique ids for a temp file, but all were taken" + . ' - giving up'); + } + + return array('dirname' => $this->_rootdir . '.' . $folder, 'uniq' => $uniq, 'filename' => $tmpdir . $uniq, + 'handle' => $fh); + } + + /** + * create an info string for filenames with given flags + * + * @param array $flags wanted flags, with the reference you'll get the set flags with correct key (= char for flag) + * @return string info string for version 2 filenames including the leading colon + * @throws Zend_Mail_Storage_Exception + */ + protected function _getInfoString(&$flags) + { + // accessing keys is easier, faster and it removes duplicated flags + $wanted_flags = array_flip($flags); + if (isset($wanted_flags[Zend_Mail_Storage::FLAG_RECENT])) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('recent flag may not be set'); + } + + $info = ':2,'; + $flags = array(); + foreach (Zend_Mail_Storage_Maildir::$_knownFlags as $char => $flag) { + if (!isset($wanted_flags[$flag])) { + continue; + } + $info .= $char; + $flags[$char] = $flag; + unset($wanted_flags[$flag]); + } + + if (!empty($wanted_flags)) { + $wanted_flags = implode(', ', array_keys($wanted_flags)); + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('unknown flag(s): ' . $wanted_flags); + } + + return $info; + } + + /** + * append a new message to mail storage + * + * @param string|stream $message message as string or stream resource + * @param null|string|Zend_Mail_Storage_Folder $folder folder for new message, else current folder is taken + * @param null|array $flags set flags for new message, else a default set is used + * @param bool $recent handle this mail as if recent flag has been set, + * should only be used in delivery + * @throws Zend_Mail_Storage_Exception + */ + // not yet * @param string|Zend_Mail_Message|Zend_Mime_Message $message message as string or instance of message class + + public function appendMessage($message, $folder = null, $flags = null, $recent = false) + { + if ($this->_quota && $this->checkQuota()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('storage is over quota!'); + } + + if ($folder === null) { + $folder = $this->_currentFolder; + } + + if (!($folder instanceof Zend_Mail_Storage_Folder)) { + $folder = $this->getFolders($folder); + } + + if ($flags === null) { + $flags = array(Zend_Mail_Storage::FLAG_SEEN); + } + $info = $this->_getInfoString($flags); + $temp_file = $this->_createTmpFile($folder->getGlobalName()); + + // TODO: handle class instances for $message + if (is_resource($message) && get_resource_type($message) == 'stream') { + stream_copy_to_stream($message, $temp_file['handle']); + } else { + fputs($temp_file['handle'], $message); + } + fclose($temp_file['handle']); + + // we're adding the size to the filename for maildir++ + $size = filesize($temp_file['filename']); + if ($size !== false) { + $info = ',S=' . $size . $info; + } + $new_filename = $temp_file['dirname'] . DIRECTORY_SEPARATOR; + $new_filename .= $recent ? 'new' : 'cur'; + $new_filename .= DIRECTORY_SEPARATOR . $temp_file['uniq'] . $info; + + // we're throwing any exception after removing our temp file and saving it to this variable instead + $exception = null; + + if (!link($temp_file['filename'], $new_filename)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + $exception = new Zend_Mail_Storage_Exception('cannot link message file to final dir'); + } + @unlink($temp_file['filename']); + + if ($exception) { + throw $exception; + } + + $this->_files[] = array('uniq' => $temp_file['uniq'], + 'flags' => $flags, + 'filename' => $new_filename); + if ($this->_quota) { + $this->_addQuotaEntry((int)$size, 1); + } + } + + /** + * copy an existing message + * + * @param int $id number of message + * @param string|Zend_Mail_Storage_Folder $folder name or instance of targer folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function copyMessage($id, $folder) + { + if ($this->_quota && $this->checkQuota()) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('storage is over quota!'); + } + + if (!($folder instanceof Zend_Mail_Storage_Folder)) { + $folder = $this->getFolders($folder); + } + + $filedata = $this->_getFileData($id); + $old_file = $filedata['filename']; + $flags = $filedata['flags']; + + // copied message can't be recent + while (($key = array_search(Zend_Mail_Storage::FLAG_RECENT, $flags)) !== false) { + unset($flags[$key]); + } + $info = $this->_getInfoString($flags); + + // we're creating the copy as temp file before moving to cur/ + $temp_file = $this->_createTmpFile($folder->getGlobalName()); + // we don't write directly to the file + fclose($temp_file['handle']); + + // we're adding the size to the filename for maildir++ + $size = filesize($old_file); + if ($size !== false) { + $info = ',S=' . $size . $info; + } + + $new_file = $temp_file['dirname'] . DIRECTORY_SEPARATOR . 'cur' . DIRECTORY_SEPARATOR . $temp_file['uniq'] . $info; + + // we're throwing any exception after removing our temp file and saving it to this variable instead + $exception = null; + + if (!copy($old_file, $temp_file['filename'])) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + $exception = new Zend_Mail_Storage_Exception('cannot copy message file'); + } else if (!link($temp_file['filename'], $new_file)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + $exception = new Zend_Mail_Storage_Exception('cannot link message file to final dir'); + } + @unlink($temp_file['filename']); + + if ($exception) { + throw $exception; + } + + if ($folder->getGlobalName() == $this->_currentFolder + || ($this->_currentFolder == 'INBOX' && $folder->getGlobalName() == '/')) { + $this->_files[] = array('uniq' => $temp_file['uniq'], + 'flags' => $flags, + 'filename' => $new_file); + } + + if ($this->_quota) { + $this->_addQuotaEntry((int)$size, 1); + } + } + + /** + * move an existing message + * + * @param int $id number of message + * @param string|Zend_Mail_Storage_Folder $folder name or instance of targer folder + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function moveMessage($id, $folder) { + if (!($folder instanceof Zend_Mail_Storage_Folder)) { + $folder = $this->getFolders($folder); + } + + if ($folder->getGlobalName() == $this->_currentFolder + || ($this->_currentFolder == 'INBOX' && $folder->getGlobalName() == '/')) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('target is current folder'); + } + + $filedata = $this->_getFileData($id); + $old_file = $filedata['filename']; + $flags = $filedata['flags']; + + // moved message can't be recent + while (($key = array_search(Zend_Mail_Storage::FLAG_RECENT, $flags)) !== false) { + unset($flags[$key]); + } + $info = $this->_getInfoString($flags); + + // reserving a new name + $temp_file = $this->_createTmpFile($folder->getGlobalName()); + fclose($temp_file['handle']); + + // we're adding the size to the filename for maildir++ + $size = filesize($old_file); + if ($size !== false) { + $info = ',S=' . $size . $info; + } + + $new_file = $temp_file['dirname'] . DIRECTORY_SEPARATOR . 'cur' . DIRECTORY_SEPARATOR . $temp_file['uniq'] . $info; + + // we're throwing any exception after removing our temp file and saving it to this variable instead + $exception = null; + + if (!rename($old_file, $new_file)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + $exception = new Zend_Mail_Storage_Exception('cannot move message file'); + } + @unlink($temp_file['filename']); + + if ($exception) { + throw $exception; + } + + unset($this->_files[$id - 1]); + // remove the gap + $this->_files = array_values($this->_files); + } + + + /** + * set flags for message + * + * NOTE: this method can't set the recent flag. + * + * @param int $id number of message + * @param array $flags new flags for message + * @throws Zend_Mail_Storage_Exception + */ + public function setFlags($id, $flags) + { + $info = $this->_getInfoString($flags); + $filedata = $this->_getFileData($id); + + // NOTE: double dirname to make sure we always move to cur. if recent flag has been set (message is in new) it will be moved to cur. + $new_filename = dirname(dirname($filedata['filename'])) . DIRECTORY_SEPARATOR . 'cur' . DIRECTORY_SEPARATOR . "$filedata[uniq]$info"; + + if (!@rename($filedata['filename'], $new_filename)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot rename file'); + } + + $filedata['flags'] = $flags; + $filedata['filename'] = $new_filename; + + $this->_files[$id - 1] = $filedata; + } + + + /** + * stub for not supported message deletion + * + * @return null + * @throws Zend_Mail_Storage_Exception + */ + public function removeMessage($id) + { + $filename = $this->_getFileData($id, 'filename'); + + if ($this->_quota) { + $size = filesize($filename); + } + + if (!@unlink($filename)) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot remove message'); + } + unset($this->_files[$id - 1]); + // remove the gap + $this->_files = array_values($this->_files); + if ($this->_quota) { + $this->_addQuotaEntry(0 - (int)$size, -1); + } + } + + /** + * enable/disable quota and set a quota value if wanted or needed + * + * You can enable/disable quota with true/false. If you don't have + * a MDA or want to enforce a quota value you can also set this value + * here. Use array('size' => SIZE_QUOTA, 'count' => MAX_MESSAGE) do + * define your quota. Order of these fields does matter! + * + * @param bool|array $value new quota value + * @return null + */ + public function setQuota($value) { + $this->_quota = $value; + } + + /** + * get currently set quota + * + * @see Zend_Mail_Storage_Writable_Maildir::setQuota() + * + * @return bool|array + */ + public function getQuota($fromStorage = false) { + if ($fromStorage) { + $fh = @fopen($this->_rootdir . 'maildirsize', 'r'); + if (!$fh) { + /** + * @see Zend_Mail_Storage_Exception + */ + require_once 'Zend/Mail/Storage/Exception.php'; + throw new Zend_Mail_Storage_Exception('cannot open maildirsize'); + } + $definition = fgets($fh); + fclose($fh); + $definition = explode(',', trim($definition)); + $quota = array(); + foreach ($definition as $member) { + $key = $member[strlen($member) - 1]; + if ($key == 'S' || $key == 'C') { + $key = $key == 'C' ? 'count' : 'size'; + } + $quota[$key] = substr($member, 0, -1); + } + return $quota; + } + + return $this->_quota; + } + + /** + * @see http://www.inter7.com/courierimap/README.maildirquota.html "Calculating maildirsize" + */ + protected function _calculateMaildirsize() { + $timestamps = array(); + $messages = 0; + $total_size = 0; + + if (is_array($this->_quota)) { + $quota = $this->_quota; + } else { + try { + $quota = $this->getQuota(true); + } catch (Zend_Mail_Storage_Exception $e) { + throw new Zend_Mail_Storage_Exception('no quota definition found', 0, $e); + } + } + + $folders = new RecursiveIteratorIterator($this->getFolders(), RecursiveIteratorIterator::SELF_FIRST); + foreach ($folders as $folder) { + $subdir = $folder->getGlobalName(); + if ($subdir == 'INBOX') { + $subdir = ''; + } else { + $subdir = '.' . $subdir; + } + if ($subdir == 'Trash') { + continue; + } + + foreach (array('cur', 'new') as $subsubdir) { + $dirname = $this->_rootdir . $subdir . DIRECTORY_SEPARATOR . $subsubdir . DIRECTORY_SEPARATOR; + if (!file_exists($dirname)) { + continue; + } + // NOTE: we are using mtime instead of "the latest timestamp". The latest would be atime + // and as we are accessing the directory it would make the whole calculation useless. + $timestamps[$dirname] = filemtime($dirname); + + $dh = opendir($dirname); + // NOTE: Should have been checked in constructor. Not throwing an exception here, quotas will + // therefore not be fully enforeced, but next request will fail anyway, if problem persists. + if (!$dh) { + continue; + } + + + while (($entry = readdir()) !== false) { + if ($entry[0] == '.' || !is_file($dirname . $entry)) { + continue; + } + + if (strpos($entry, ',S=')) { + strtok($entry, '='); + $filesize = strtok(':'); + if (is_numeric($filesize)) { + $total_size += $filesize; + ++$messages; + continue; + } + } + $size = filesize($dirname . $entry); + if ($size === false) { + // ignore, as we assume file got removed + continue; + } + $total_size += $size; + ++$messages; + } + } + } + + $tmp = $this->_createTmpFile(); + $fh = $tmp['handle']; + $definition = array(); + foreach ($quota as $type => $value) { + if ($type == 'size' || $type == 'count') { + $type = $type == 'count' ? 'C' : 'S'; + } + $definition[] = $value . $type; + } + $definition = implode(',', $definition); + fputs($fh, "$definition\n"); + fputs($fh, "$total_size $messages\n"); + fclose($fh); + rename($tmp['filename'], $this->_rootdir . 'maildirsize'); + foreach ($timestamps as $dir => $timestamp) { + if ($timestamp < filemtime($dir)) { + unlink($this->_rootdir . 'maildirsize'); + break; + } + } + + return array('size' => $total_size, 'count' => $messages, 'quota' => $quota); + } + + /** + * @see http://www.inter7.com/courierimap/README.maildirquota.html "Calculating the quota for a Maildir++" + */ + protected function _calculateQuota($forceRecalc = false) { + $fh = null; + $total_size = 0; + $messages = 0; + $maildirsize = ''; + if (!$forceRecalc && file_exists($this->_rootdir . 'maildirsize') && filesize($this->_rootdir . 'maildirsize') < 5120) { + $fh = fopen($this->_rootdir . 'maildirsize', 'r'); + } + if ($fh) { + $maildirsize = fread($fh, 5120); + if (strlen($maildirsize) >= 5120) { + fclose($fh); + $fh = null; + $maildirsize = ''; + } + } + if (!$fh) { + $result = $this->_calculateMaildirsize(); + $total_size = $result['size']; + $messages = $result['count']; + $quota = $result['quota']; + } else { + $maildirsize = explode("\n", $maildirsize); + if (is_array($this->_quota)) { + $quota = $this->_quota; + } else { + $definition = explode(',', $maildirsize[0]); + $quota = array(); + foreach ($definition as $member) { + $key = $member[strlen($member) - 1]; + if ($key == 'S' || $key == 'C') { + $key = $key == 'C' ? 'count' : 'size'; + } + $quota[$key] = substr($member, 0, -1); + } + } + unset($maildirsize[0]); + foreach ($maildirsize as $line) { + list($size, $count) = explode(' ', trim($line)); + $total_size += $size; + $messages += $count; + } + } + + $over_quota = false; + $over_quota = $over_quota || (isset($quota['size']) && $total_size > $quota['size']); + $over_quota = $over_quota || (isset($quota['count']) && $messages > $quota['count']); + // NOTE: $maildirsize equals false if it wasn't set (AKA we recalculated) or it's only + // one line, because $maildirsize[0] gets unsetted. + // Also we're using local time to calculate the 15 minute offset. Touching a file just for known the + // local time of the file storage isn't worth the hassle. + if ($over_quota && ($maildirsize || filemtime($this->_rootdir . 'maildirsize') > time() - 900)) { + $result = $this->_calculateMaildirsize(); + $total_size = $result['size']; + $messages = $result['count']; + $quota = $result['quota']; + $over_quota = false; + $over_quota = $over_quota || (isset($quota['size']) && $total_size > $quota['size']); + $over_quota = $over_quota || (isset($quota['count']) && $messages > $quota['count']); + } + + if ($fh) { + // TODO is there a safe way to keep the handle open for writing? + fclose($fh); + } + + return array('size' => $total_size, 'count' => $messages, 'quota' => $quota, 'over_quota' => $over_quota); + } + + protected function _addQuotaEntry($size, $count = 1) { + if (!file_exists($this->_rootdir . 'maildirsize')) { + // TODO: should get file handler from _calculateQuota + } + $size = (int)$size; + $count = (int)$count; + file_put_contents($this->_rootdir . 'maildirsize', "$size $count\n", FILE_APPEND); + } + + /** + * check if storage is currently over quota + * + * @param bool $detailedResponse return known data of quota and current size and message count @see _calculateQuota() + * @return bool|array over quota state or detailed response + */ + public function checkQuota($detailedResponse = false, $forceRecalc = false) { + $result = $this->_calculateQuota($forceRecalc); + return $detailedResponse ? $result : $result['over_quota']; + } +} diff --git a/library/Zend/Mail/Transport/Abstract.php b/library/Zend/Mail/Transport/Abstract.php new file mode 100755 index 000000000..f5eb181ff --- /dev/null +++ b/library/Zend/Mail/Transport/Abstract.php @@ -0,0 +1,350 @@ +_mail->getType(); + if (!$type) { + if ($this->_mail->hasAttachments) { + $type = Zend_Mime::MULTIPART_MIXED; + } elseif ($this->_mail->getBodyText() && $this->_mail->getBodyHtml()) { + $type = Zend_Mime::MULTIPART_ALTERNATIVE; + } else { + $type = Zend_Mime::MULTIPART_MIXED; + } + } + + $this->_headers['Content-Type'] = array( + $type . ';' + . $this->EOL + . " " . 'boundary="' . $boundary . '"' + ); + $this->boundary = $boundary; + } + + $this->_headers['MIME-Version'] = array('1.0'); + + return $this->_headers; + } + + /** + * Prepend header name to header value + * + * @param string $item + * @param string $key + * @param string $prefix + * @static + * @access protected + * @return void + */ + protected static function _formatHeader(&$item, $key, $prefix) + { + $item = $prefix . ': ' . $item; + } + + /** + * Prepare header string for use in transport + * + * Prepares and generates {@link $header} based on the headers provided. + * + * @param mixed $headers + * @access protected + * @return void + * @throws Zend_Mail_Transport_Exception if any header lines exceed 998 + * characters + */ + protected function _prepareHeaders($headers) + { + if (!$this->_mail) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Missing Zend_Mail object in _mail property'); + } + + $this->header = ''; + + foreach ($headers as $header => $content) { + if (isset($content['append'])) { + unset($content['append']); + $value = implode(',' . $this->EOL . ' ', $content); + $this->header .= $header . ': ' . $value . $this->EOL; + } else { + array_walk($content, array(get_class($this), '_formatHeader'), $header); + $this->header .= implode($this->EOL, $content) . $this->EOL; + } + } + + // Sanity check on headers -- should not be > 998 characters + $sane = true; + foreach (explode($this->EOL, $this->header) as $line) { + if (strlen(trim($line)) > 998) { + $sane = false; + break; + } + } + if (!$sane) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Exception('At least one mail header line is too long'); + } + } + + /** + * Generate MIME compliant message from the current configuration + * + * If both a text and HTML body are present, generates a + * multipart/alternative Zend_Mime_Part containing the headers and contents + * of each. Otherwise, uses whichever of the text or HTML parts present. + * + * The content part is then prepended to the list of Zend_Mime_Parts for + * this message. + * + * @return void + */ + protected function _buildBody() + { + if (($text = $this->_mail->getBodyText()) + && ($html = $this->_mail->getBodyHtml())) + { + // Generate unique boundary for multipart/alternative + $mime = new Zend_Mime(null); + $boundaryLine = $mime->boundaryLine($this->EOL); + $boundaryEnd = $mime->mimeEnd($this->EOL); + + $text->disposition = false; + $html->disposition = false; + + $body = $boundaryLine + . $text->getHeaders($this->EOL) + . $this->EOL + . $text->getContent($this->EOL) + . $this->EOL + . $boundaryLine + . $html->getHeaders($this->EOL) + . $this->EOL + . $html->getContent($this->EOL) + . $this->EOL + . $boundaryEnd; + + $mp = new Zend_Mime_Part($body); + $mp->type = Zend_Mime::MULTIPART_ALTERNATIVE; + $mp->boundary = $mime->boundary(); + + $this->_isMultipart = true; + + // Ensure first part contains text alternatives + array_unshift($this->_parts, $mp); + + // Get headers + $this->_headers = $this->_mail->getHeaders(); + return; + } + + // If not multipart, then get the body + if (false !== ($body = $this->_mail->getBodyHtml())) { + array_unshift($this->_parts, $body); + } elseif (false !== ($body = $this->_mail->getBodyText())) { + array_unshift($this->_parts, $body); + } + + if (!$body) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('No body specified'); + } + + // Get headers + $this->_headers = $this->_mail->getHeaders(); + $headers = $body->getHeadersArray($this->EOL); + foreach ($headers as $header) { + // Headers in Zend_Mime_Part are kept as arrays with two elements, a + // key and a value + $this->_headers[$header[0]] = array($header[1]); + } + } + + /** + * Send a mail using this transport + * + * @param Zend_Mail $mail + * @access public + * @return void + * @throws Zend_Mail_Transport_Exception if mail is empty + */ + public function send(Zend_Mail $mail) + { + $this->_isMultipart = false; + $this->_mail = $mail; + $this->_parts = $mail->getParts(); + $mime = $mail->getMime(); + + // Build body content + $this->_buildBody(); + + // Determine number of parts and boundary + $count = count($this->_parts); + $boundary = null; + if ($count < 1) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Empty mail cannot be sent'); + } + + if ($count > 1) { + // Multipart message; create new MIME object and boundary + $mime = new Zend_Mime($this->_mail->getMimeBoundary()); + $boundary = $mime->boundary(); + } elseif ($this->_isMultipart) { + // multipart/alternative -- grab boundary + $boundary = $this->_parts[0]->boundary; + } + + // Determine recipients, and prepare headers + $this->recipients = implode(',', $mail->getRecipients()); + $this->_prepareHeaders($this->_getHeaders($boundary)); + + // Create message body + // This is done so that the same Zend_Mail object can be used in + // multiple transports + $message = new Zend_Mime_Message(); + $message->setParts($this->_parts); + $message->setMime($mime); + $this->body = $message->generateMessage($this->EOL); + + // Send to transport! + $this->_sendMail(); + } +} diff --git a/library/Zend/Mail/Transport/Exception.php b/library/Zend/Mail/Transport/Exception.php new file mode 100755 index 000000000..42733da88 --- /dev/null +++ b/library/Zend/Mail/Transport/Exception.php @@ -0,0 +1,39 @@ +toArray(); + } elseif (!is_array($options)) { + $options = array(); + } + + // Making sure we have some defaults to work with + if (!isset($options['path'])) { + $options['path'] = sys_get_temp_dir(); + } + if (!isset($options['callback'])) { + $options['callback'] = array($this, 'defaultCallback'); + } + + $this->setOptions($options); + } + + /** + * Sets options + * + * @param array $options + * @return void + */ + public function setOptions(array $options) + { + if (isset($options['path']) && is_dir($options['path'])) { + $this->_path = $options['path']; + } + if (isset($options['callback']) && is_callable($options['callback'])) { + $this->_callback = $options['callback']; + } + } + + /** + * Saves e-mail message to a file + * + * @return void + * @throws Zend_Mail_Transport_Exception on not writable target directory + * @throws Zend_Mail_Transport_Exception on file_put_contents() failure + */ + protected function _sendMail() + { + $file = $this->_path . DIRECTORY_SEPARATOR . call_user_func($this->_callback, $this); + + if (!is_writable(dirname($file))) { + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception(sprintf( + 'Target directory "%s" does not exist or is not writable', + dirname($file) + )); + } + + $email = $this->header . $this->EOL . $this->body; + + if (!file_put_contents($file, $email)) { + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Unable to send mail'); + } + } + + /** + * Default callback for generating filenames + * + * @param Zend_Mail_Transport_File File transport instance + * @return string + */ + public function defaultCallback($transport) + { + return 'ZendMail_' . $_SERVER['REQUEST_TIME'] . '_' . mt_rand() . '.tmp'; + } +} diff --git a/library/Zend/Mail/Transport/Sendmail.php b/library/Zend/Mail/Transport/Sendmail.php new file mode 100755 index 000000000..28bf3b981 --- /dev/null +++ b/library/Zend/Mail/Transport/Sendmail.php @@ -0,0 +1,220 @@ +toArray(); + } + + if (is_array($parameters)) { + $parameters = implode(' ', $parameters); + } + + $this->parameters = $parameters; + } + + + /** + * Send mail using PHP native mail() + * + * @access public + * @return void + * @throws Zend_Mail_Transport_Exception if parameters is set + * but not a string + * @throws Zend_Mail_Transport_Exception on mail() failure + */ + public function _sendMail() + { + if ($this->parameters === null) { + set_error_handler(array($this, '_handleMailErrors')); + $result = mail( + $this->recipients, + $this->_mail->getSubject(), + $this->body, + $this->header); + restore_error_handler(); + } else { + if(!is_string($this->parameters)) { + /** + * @see Zend_Mail_Transport_Exception + * + * Exception is thrown here because + * $parameters is a public property + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception( + 'Parameters were set but are not a string' + ); + } + + set_error_handler(array($this, '_handleMailErrors')); + $result = mail( + $this->recipients, + $this->_mail->getSubject(), + $this->body, + $this->header, + $this->parameters); + restore_error_handler(); + } + + if ($this->_errstr !== null || !$result) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Unable to send mail. ' . $this->_errstr); + } + } + + + /** + * Format and fix headers + * + * mail() uses its $to and $subject arguments to set the To: and Subject: + * headers, respectively. This method strips those out as a sanity check to + * prevent duplicate header entries. + * + * @access protected + * @param array $headers + * @return void + * @throws Zend_Mail_Transport_Exception + */ + protected function _prepareHeaders($headers) + { + if (!$this->_mail) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object'); + } + + // mail() uses its $to parameter to set the To: header, and the $subject + // parameter to set the Subject: header. We need to strip them out. + if (0 === strpos(PHP_OS, 'WIN')) { + // If the current recipients list is empty, throw an error + if (empty($this->recipients)) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Missing To addresses'); + } + } else { + // All others, simply grab the recipients and unset the To: header + if (!isset($headers['To'])) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('Missing To header'); + } + + unset($headers['To']['append']); + $this->recipients = implode(',', $headers['To']); + } + + // Remove recipient header + unset($headers['To']); + + // Remove subject header, if present + if (isset($headers['Subject'])) { + unset($headers['Subject']); + } + + // Prepare headers + parent::_prepareHeaders($headers); + + // Fix issue with empty blank line ontop when using Sendmail Trnasport + $this->header = rtrim($this->header); + } + + /** + * Temporary error handler for PHP native mail(). + * + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param string $errline + * @param array $errcontext + * @return true + */ + public function _handleMailErrors($errno, $errstr, $errfile = null, $errline = null, array $errcontext = null) + { + $this->_errstr = $errstr; + return true; + } + +} diff --git a/library/Zend/Mail/Transport/Smtp.php b/library/Zend/Mail/Transport/Smtp.php new file mode 100755 index 000000000..2afe681eb --- /dev/null +++ b/library/Zend/Mail/Transport/Smtp.php @@ -0,0 +1,243 @@ +_name = $config['name']; + } + if (isset($config['port'])) { + $this->_port = $config['port']; + } + if (isset($config['auth'])) { + $this->_auth = $config['auth']; + } + + $this->_host = $host; + $this->_config = $config; + } + + + /** + * Class destructor to ensure all open connections are closed + * + * @return void + */ + public function __destruct() + { + if ($this->_connection instanceof Zend_Mail_Protocol_Smtp) { + try { + $this->_connection->quit(); + } catch (Zend_Mail_Protocol_Exception $e) { + // ignore + } + $this->_connection->disconnect(); + } + } + + + /** + * Sets the connection protocol instance + * + * @param Zend_Mail_Protocol_Abstract $client + * + * @return void + */ + public function setConnection(Zend_Mail_Protocol_Abstract $connection) + { + $this->_connection = $connection; + } + + + /** + * Gets the connection protocol instance + * + * @return Zend_Mail_Protocol|null + */ + public function getConnection() + { + return $this->_connection; + } + + /** + * Send an email via the SMTP connection protocol + * + * The connection via the protocol adapter is made just-in-time to allow a + * developer to add a custom adapter if required before mail is sent. + * + * @return void + * @todo Rename this to sendMail, it's a public method... + */ + public function _sendMail() + { + // If sending multiple messages per session use existing adapter + if (!($this->_connection instanceof Zend_Mail_Protocol_Smtp)) { + // Check if authentication is required and determine required class + $connectionClass = 'Zend_Mail_Protocol_Smtp'; + if ($this->_auth) { + $connectionClass .= '_Auth_' . ucwords($this->_auth); + } + if (!class_exists($connectionClass)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($connectionClass); + } + $this->setConnection(new $connectionClass($this->_host, $this->_port, $this->_config)); + $this->_connection->connect(); + $this->_connection->helo($this->_name); + } else { + // Reset connection to ensure reliable transaction + $this->_connection->rset(); + } + + // Set sender email address + $this->_connection->mail($this->_mail->getReturnPath()); + + // Set recipient forward paths + foreach ($this->_mail->getRecipients() as $recipient) { + $this->_connection->rcpt($recipient); + } + + // Issue DATA command to client + $this->_connection->data($this->header . Zend_Mime::LINEEND . $this->body); + } + + /** + * Format and fix headers + * + * Some SMTP servers do not strip BCC headers. Most clients do it themselves as do we. + * + * @access protected + * @param array $headers + * @return void + * @throws Zend_Transport_Exception + */ + protected function _prepareHeaders($headers) + { + if (!$this->_mail) { + /** + * @see Zend_Mail_Transport_Exception + */ + require_once 'Zend/Mail/Transport/Exception.php'; + throw new Zend_Mail_Transport_Exception('_prepareHeaders requires a registered Zend_Mail object'); + } + + unset($headers['Bcc']); + + // Prepare headers + parent::_prepareHeaders($headers); + } +} diff --git a/library/Zend/Markup.php b/library/Zend/Markup.php new file mode 100755 index 000000000..3662f52a0 --- /dev/null +++ b/library/Zend/Markup.php @@ -0,0 +1,134 @@ + 'Zend/Markup/Parser/', + )); + } + + return self::$_parserLoader; + } + + /** + * Get the renderer loader + * + * @return Zend_Loader_PluginLoader + */ + public static function getRendererLoader() + { + if (!(self::$_rendererLoader instanceof Zend_Loader_PluginLoader)) { + self::$_rendererLoader = new Zend_Loader_PluginLoader(array( + 'Zend_Markup_Renderer' => 'Zend/Markup/Renderer/', + )); + } + + return self::$_rendererLoader; + } + + /** + * Add a parser path + * + * @param string $prefix + * @param string $path + * @return Zend_Loader_PluginLoader + */ + public static function addParserPath($prefix, $path) + { + return self::getParserLoader()->addPrefixPath($prefix, $path); + } + + /** + * Add a renderer path + * + * @param string $prefix + * @param string $path + * @return Zend_Loader_PluginLoader + */ + public static function addRendererPath($prefix, $path) + { + return self::getRendererLoader()->addPrefixPath($prefix, $path); + } + + /** + * Factory pattern + * + * @param string $parser + * @param string $renderer + * @param array $options + * @return Zend_Markup_Renderer_RendererAbstract + */ + public static function factory($parser, $renderer = 'Html', array $options = array()) + { + $parserClass = self::getParserLoader()->load($parser); + $rendererClass = self::getRendererLoader()->load($renderer); + + $parser = new $parserClass(); + $options['parser'] = $parser; + $renderer = new $rendererClass($options); + + return $renderer; + } +} diff --git a/library/Zend/Markup/Exception.php b/library/Zend/Markup/Exception.php new file mode 100755 index 000000000..23b32e604 --- /dev/null +++ b/library/Zend/Markup/Exception.php @@ -0,0 +1,38 @@ + array( + 'type' => self::TYPE_DEFAULT, + 'stoppers' => array(), + ), + '*' => array( + 'type' => self::TYPE_DEFAULT, + 'stoppers' => array(self::NEWLINE, '[/*]', '[/]'), + ), + 'hr' => array( + 'type' => self::TYPE_SINGLE, + 'stoppers' => array(), + ), + 'code' => array( + 'type' => self::TYPE_DEFAULT, + 'stoppers' => array('[/code]', '[/]'), + 'parse_inside' => false + ) + ); + + /** + * Token array + * + * @var array + */ + protected $_tokens = array(); + + /** + * State + * + * @var int + */ + protected $_state = self::STATE_SCAN; + + + /** + * Prepare the parsing of a bbcode string, the real parsing is done in {@link _parse()} + * + * @param string $value + * @return Zend_Markup_TokenList + */ + public function parse($value) + { + if (!is_string($value)) { + /** + * @see Zend_Markup_Parser_Exception + */ + require_once 'Zend/Markup/Parser/Exception.php'; + throw new Zend_Markup_Parser_Exception('Value to parse should be a string.'); + } + + if (empty($value)) { + /** + * @see Zend_Markup_Parser_Exception + */ + require_once 'Zend/Markup/Parser/Exception.php'; + throw new Zend_Markup_Parser_Exception('Value to parse cannot be left empty.'); + } + + $this->_value = str_replace(array("\r\n", "\r", "\n"), self::NEWLINE, $value); + + // variable initialization for tokenizer + $this->_valueLen = strlen($this->_value); + $this->_pointer = 0; + $this->_buffer = ''; + $this->_temp = array(); + $this->_state = self::STATE_SCAN; + $this->_tokens = array(); + + $this->_tokenize(); + + // variable initialization for treebuilder + $this->_searchedStoppers = array(); + $this->_tree = new Zend_Markup_TokenList(); + $this->_current = new Zend_Markup_Token( + '', + Zend_Markup_Token::TYPE_NONE, + 'Zend_Markup_Root' + ); + + $this->_tree->addChild($this->_current); + + $this->_createTree(); + + return $this->_tree; + } + + /** + * Tokenize + * + * @param string $input + * + * @return void + */ + protected function _tokenize() + { + $attribute = ''; + + while ($this->_pointer < $this->_valueLen) { + switch ($this->_state) { + case self::STATE_SCAN: + $matches = array(); + $regex = '#\G(?[^\[]*)(?\[(?[' . self::NAME_CHARSET . ']+)?)?#'; + preg_match($regex, $this->_value, $matches, null, $this->_pointer); + + $this->_pointer += strlen($matches[0]); + + if (!empty($matches['text'])) { + $this->_buffer .= $matches['text']; + } + + if (!isset($matches['open'])) { + // great, no tag, we are ending the string + break; + } + if (!isset($matches['name'])) { + $this->_buffer .= $matches['open']; + break; + } + + $this->_temp = array( + 'tag' => '[' . $matches['name'], + 'name' => $matches['name'], + 'attributes' => array() + ); + + if ($this->_pointer >= $this->_valueLen) { + // damn, no tag + $this->_buffer .= $this->_temp['tag']; + break 2; + } + + if ($this->_value[$this->_pointer] == '=') { + $this->_pointer++; + + $this->_temp['tag'] .= '='; + $this->_state = self::STATE_PARSEVALUE; + $attribute = $this->_temp['name']; + } else { + $this->_state = self::STATE_SCANATTRS; + } + break; + case self::STATE_SCANATTRS: + $matches = array(); + $regex = '#\G((?\s*\])|\s+(?[' . self::NAME_CHARSET . ']+)(?=?))#'; + if (!preg_match($regex, $this->_value, $matches, null, $this->_pointer)) { + break 2; + } + + $this->_pointer += strlen($matches[0]); + + if (!empty($matches['end'])) { + if (!empty($this->_buffer)) { + $this->_tokens[] = array( + 'tag' => $this->_buffer, + 'type' => Zend_Markup_Token::TYPE_NONE + ); + $this->_buffer = ''; + } + $this->_temp['tag'] .= $matches['end']; + $this->_temp['type'] = Zend_Markup_Token::TYPE_TAG; + + $this->_tokens[] = $this->_temp; + $this->_temp = array(); + + $this->_state = self::STATE_SCAN; + } else { + // attribute name + $attribute = $matches['attribute']; + + $this->_temp['tag'] .= $matches[0]; + + $this->_temp['attributes'][$attribute] = ''; + + if (empty($matches['eq'])) { + $this->_state = self::STATE_SCANATTRS; + } else { + $this->_state = self::STATE_PARSEVALUE; + } + } + break; + case self::STATE_PARSEVALUE: + $matches = array(); + $regex = '#\G((?"|\')(?.*?)\\2|(?[^\]\s]+))#'; + if (!preg_match($regex, $this->_value, $matches, null, $this->_pointer)) { + $this->_state = self::STATE_SCANATTRS; + break; + } + + $this->_pointer += strlen($matches[0]); + + if (!empty($matches['quote'])) { + $this->_temp['attributes'][$attribute] = $matches['valuequote']; + } else { + $this->_temp['attributes'][$attribute] = $matches['value']; + } + $this->_temp['tag'] .= $matches[0]; + + $this->_state = self::STATE_SCANATTRS; + break; + } + } + + if (!empty($this->_buffer)) { + $this->_tokens[] = array( + 'tag' => $this->_buffer, + 'type' => Zend_Markup_Token::TYPE_NONE + ); + } + } + + /** + * Parse the token array into a tree + * + * @param array $tokens + * + * @return void + */ + public function _createTree() + { + foreach ($this->_tokens as $token) { + // first we want to know if this tag is a stopper, or at least a searched one + if ($this->_isStopper($token['tag'])) { + // find the stopper + $oldItems = array(); + + while (!in_array($token['tag'], $this->_tags[$this->_current->getName()]['stoppers'])) { + $oldItems[] = clone $this->_current; + $this->_current = $this->_current->getParent(); + } + + // we found the stopper, so stop the tag + $this->_current->setStopper($token['tag']); + $this->_removeFromSearchedStoppers($this->_current); + $this->_current = $this->_current->getParent(); + + // add the old items again if there are any + if (!empty($oldItems)) { + foreach (array_reverse($oldItems) as $item) { + /* @var $token Zend_Markup_Token */ + $this->_current->addChild($item); + $item->setParent($this->_current); + $this->_current = $item; + } + } + } else { + if ($token['type'] == Zend_Markup_Token::TYPE_TAG) { + if ($token['tag'] == self::NEWLINE) { + // this is a newline tag, add it as a token + $this->_current->addChild(new Zend_Markup_Token( + "\n", + Zend_Markup_Token::TYPE_NONE, + '', + array(), + $this->_current + )); + } elseif (isset($token['name']) && ($token['name'][0] == '/')) { + // this is a stopper, add it as a empty token + $this->_current->addChild(new Zend_Markup_Token( + $token['tag'], + Zend_Markup_Token::TYPE_NONE, + '', + array(), + $this->_current + )); + } elseif (isset($this->_tags[$this->_current->getName()]['parse_inside']) + && !$this->_tags[$this->_current->getName()]['parse_inside'] + ) { + $this->_current->addChild(new Zend_Markup_Token( + $token['tag'], + Zend_Markup_Token::TYPE_NONE, + '', + array(), + $this->_current + )); + } else { + // add the tag + $child = new Zend_Markup_Token( + $token['tag'], + $token['type'], + $token['name'], + $token['attributes'], + $this->_current + ); + $this->_current->addChild($child); + + // add stoppers for this tag, if its has stoppers + if ($this->_getType($token['name']) == self::TYPE_DEFAULT) { + $this->_current = $child; + + $this->_addToSearchedStoppers($this->_current); + } + } + } else { + // no tag, just add it as a simple token + $this->_current->addChild(new Zend_Markup_Token( + $token['tag'], + Zend_Markup_Token::TYPE_NONE, + '', + array(), + $this->_current + )); + } + } + } + } + + /** + * Check if there is a tag declaration, and if it isnt there, add it + * + * @param string $name + * + * @return void + */ + protected function _checkTagDeclaration($name) + { + if (!isset($this->_tags[$name])) { + $this->_tags[$name] = array( + 'type' => self::TYPE_DEFAULT, + 'stoppers' => array( + '[/' . $name . ']', + '[/]' + ) + ); + } + } + /** + * Check the tag's type + * + * @param string $name + * @return string + */ + protected function _getType($name) + { + $this->_checkTagDeclaration($name); + + return $this->_tags[$name]['type']; + } + + /** + * Check if the tag is a stopper + * + * @param string $tag + * @return bool + */ + protected function _isStopper($tag) + { + $this->_checkTagDeclaration($this->_current->getName()); + + if (!empty($this->_searchedStoppers[$tag])) { + return true; + } + + return false; + } + + /** + * Add to searched stoppers + * + * @param Zend_Markup_Token $token + * @return void + */ + protected function _addToSearchedStoppers(Zend_Markup_Token $token) + { + $this->_checkTagDeclaration($token->getName()); + + foreach ($this->_tags[$token->getName()]['stoppers'] as $stopper) { + if (!isset($this->_searchedStoppers[$stopper])) { + $this->_searchedStoppers[$stopper] = 0; + } + ++$this->_searchedStoppers[$stopper]; + } + } + + /** + * Remove from searched stoppers + * + * @param Zend_Markup_Token $token + * @return void + */ + protected function _removeFromSearchedStoppers(Zend_Markup_Token $token) + { + $this->_checkTagDeclaration($token->getName()); + + foreach ($this->_tags[$token->getName()]['stoppers'] as $stopper) { + --$this->_searchedStoppers[$stopper]; + } + } + +} diff --git a/library/Zend/Markup/Parser/Exception.php b/library/Zend/Markup/Parser/Exception.php new file mode 100755 index 000000000..cacb9612a --- /dev/null +++ b/library/Zend/Markup/Parser/Exception.php @@ -0,0 +1,40 @@ + + * array( + * array( + * 'tag' => '[tag="a" attr=val]', + * 'type' => Zend_Markup::TYPE_TAG, + * 'name' => 'tag', + * 'stoppers' => array('[/]', '[/tag]'), + * 'attributes' => array( + * 'tag' => 'a', + * 'attr' => 'val' + * ) + * ), + * array( + * 'tag' => 'value', + * 'type' => Zend_Markup::TYPE_NONE + * ), + * array( + * 'tag' => '[/tag]', + * 'type' => Zend_Markup::TYPE_STOPPER, + * 'name' => 'tag', + * 'stoppers' => array(), + * 'attributes' => array() + * ) + * ) + * + * + * @param string $value + * @return array + */ + public function parse($value); +} diff --git a/library/Zend/Markup/Renderer/Exception.php b/library/Zend/Markup/Renderer/Exception.php new file mode 100755 index 000000000..a8af2393b --- /dev/null +++ b/library/Zend/Markup/Renderer/Exception.php @@ -0,0 +1,40 @@ + array('block', 'inline', 'block-empty', 'inline-empty', 'list'), + 'inline' => array('inline', 'inline-empty'), + 'list' => array('list-item'), + 'list-item' => array('inline', 'inline-empty', 'list'), + 'block-empty' => array(), + 'inline-empty' => array(), + ); + + /** + * The current group + * + * @var string + */ + protected $_group = 'block'; + + /** + * Default attributes + * + * @var array + */ + protected static $_defaultAttributes = array( + 'id' => '', + 'class' => '', + 'style' => '', + 'lang' => '', + 'title' => '' + ); + + + /** + * Constructor + * + * @param array|Zend_Config $options + * + * @return void + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + $this->_pluginLoader = new Zend_Loader_PluginLoader(array( + 'Zend_Markup_Renderer_Html' => 'Zend/Markup/Renderer/Html/' + )); + + if (!isset($options['useDefaultMarkups']) && isset($options['useDefaultTags'])) { + $options['useDefaultMarkups'] = $options['useDefaultTags']; + } + if (isset($options['useDefaultMarkups']) && ($options['useDefaultMarkups'] !== false)) { + $this->_defineDefaultMarkups(); + } elseif (!isset($options['useDefaultMarkups'])) { + $this->_defineDefaultMarkups(); + } + + parent::__construct($options); + } + + /** + * Define the default markups + * + * @return void + */ + protected function _defineDefaultMarkups() + { + $this->_markups = array( + 'b' => array( + 'type' => 10, // self::TYPE_REPLACE | self::TAG_NORMAL + 'tag' => 'strong', + 'group' => 'inline', + 'filter' => true, + ), + 'u' => array( + 'type' => 10, + 'tag' => 'span', + 'attributes' => array( + 'style' => 'text-decoration: underline;', + ), + 'group' => 'inline', + 'filter' => true, + ), + 'i' => array( + 'type' => 10, + 'tag' => 'em', + 'group' => 'inline', + 'filter' => true, + ), + 'cite' => array( + 'type' => 10, + 'tag' => 'cite', + 'group' => 'inline', + 'filter' => true, + ), + 'del' => array( + 'type' => 10, + 'tag' => 'del', + 'group' => 'inline', + 'filter' => true, + ), + 'ins' => array( + 'type' => 10, + 'tag' => 'ins', + 'group' => 'inline', + 'filter' => true, + ), + 'sub' => array( + 'type' => 10, + 'tag' => 'sub', + 'group' => 'inline', + 'filter' => true, + ), + 'sup' => array( + 'type' => 10, + 'tag' => 'sup', + 'group' => 'inline', + 'filter' => true, + ), + 'span' => array( + 'type' => 10, + 'tag' => 'span', + 'group' => 'inline', + 'filter' => true, + ), + 'acronym' => array( + 'type' => 10, + 'tag' => 'acronym', + 'group' => 'inline', + 'filter' => true, + ), + // headings + 'h1' => array( + 'type' => 10, + 'tag' => 'h1', + 'group' => 'inline', + 'filter' => true, + ), + 'h2' => array( + 'type' => 10, + 'tag' => 'h2', + 'group' => 'inline', + 'filter' => true, + ), + 'h3' => array( + 'type' => 10, + 'tag' => 'h3', + 'group' => 'inline', + 'filter' => true, + ), + 'h4' => array( + 'type' => 10, + 'tag' => 'h4', + 'group' => 'inline', + 'filter' => true, + ), + 'h5' => array( + 'type' => 10, + 'tag' => 'h5', + 'group' => 'inline', + 'filter' => true, + ), + 'h6' => array( + 'type' => 10, + 'tag' => 'h6', + 'group' => 'inline', + 'filter' => true, + ), + // callback tags + 'url' => array( + 'type' => 6, // self::TYPE_CALLBACK | self::TAG_NORMAL + 'callback' => null, + 'group' => 'inline', + 'filter' => true, + ), + 'img' => array( + 'type' => 6, + 'callback' => null, + 'group' => 'inline-empty', + 'filter' => true, + ), + 'code' => array( + 'type' => 6, + 'callback' => null, + 'group' => 'block-empty', + 'filter' => false, + ), + 'p' => array( + 'type' => 10, + 'tag' => 'p', + 'group' => 'block', + 'filter' => true, + ), + 'ignore' => array( + 'type' => 10, + 'start' => '', + 'end' => '', + 'group' => 'block-empty', + 'filter' => true, + ), + 'quote' => array( + 'type' => 10, + 'tag' => 'blockquote', + 'group' => 'block', + 'filter' => true, + ), + 'list' => array( + 'type' => 6, + 'callback' => null, + 'group' => 'list', + 'filter' => new Zend_Filter_PregReplace('/.*/is', ''), + ), + '*' => array( + 'type' => 10, + 'tag' => 'li', + 'group' => 'list-item', + 'filter' => true, + ), + 'hr' => array( + 'type' => 9, // self::TYPE_REPLACE | self::TAG_SINGLE + 'tag' => 'hr', + 'group' => 'block', + 'empty' => true, + ), + // aliases + 'bold' => array( + 'type' => 16, + 'name' => 'b', + ), + 'strong' => array( + 'type' => 16, + 'name' => 'b', + ), + 'italic' => array( + 'type' => 16, + 'name' => 'i', + ), + 'em' => array( + 'type' => 16, + 'name' => 'i', + ), + 'emphasized' => array( + 'type' => 16, + 'name' => 'i', + ), + 'underline' => array( + 'type' => 16, + 'name' => 'u', + ), + 'citation' => array( + 'type' => 16, + 'name' => 'cite', + ), + 'deleted' => array( + 'type' => 16, + 'name' => 'del', + ), + 'insert' => array( + 'type' => 16, + 'name' => 'ins', + ), + 'strike' => array( + 'type' => 16, + 'name' => 's', + ), + 's' => array( + 'type' => 16, + 'name' => 'del', + ), + 'subscript' => array( + 'type' => 16, + 'name' => 'sub', + ), + 'superscript' => array( + 'type' => 16, + 'name' => 'sup', + ), + 'a' => array( + 'type' => 16, + 'name' => 'url', + ), + 'image' => array( + 'type' => 16, + 'name' => 'img', + ), + 'li' => array( + 'type' => 16, + 'name' => '*', + ), + 'color' => array( + 'type' => 16, + 'name' => 'span', + ), + ); + } + + /** + * Add the default filters + * + * @return void + */ + public function addDefaultFilters() + { + $this->_defaultFilter = new Zend_Filter(); + + $this->_defaultFilter->addFilter(new Zend_Filter_HtmlEntities(array('encoding' => self::getEncoding()))); + $this->_defaultFilter->addFilter(new Zend_Filter_Callback('nl2br')); + } + + /** + * Execute a replace token + * + * @param Zend_Markup_Token $token + * @param array $markup + * @return string + */ + protected function _executeReplace(Zend_Markup_Token $token, $markup) + { + if (isset($markup['tag'])) { + if (!isset($markup['attributes'])) { + $markup['attributes'] = array(); + } + $attrs = self::renderAttributes($token, $markup['attributes']); + return "<{$markup['tag']}{$attrs}>{$this->_render($token)}"; + } + + return parent::_executeReplace($token, $markup); + } + + /** + * Execute a single replace token + * + * @param Zend_Markup_Token $token + * @param array $markup + * @return string + */ + protected function _executeSingleReplace(Zend_Markup_Token $token, $markup) + { + if (isset($markup['tag'])) { + if (!isset($markup['attributes'])) { + $markup['attributes'] = array(); + } + $attrs = self::renderAttributes($token, $markup['attributes']); + return "<{$markup['tag']}{$attrs} />"; + } + return parent::_executeSingleReplace($token, $markup); + } + + /** + * Render some attributes + * + * @param Zend_Markup_Token $token + * @param array $attributes + * @return string + */ + public static function renderAttributes(Zend_Markup_Token $token, array $attributes = array()) + { + $attributes = array_merge(self::$_defaultAttributes, $attributes); + + $return = ''; + + $tokenAttributes = $token->getAttributes(); + + // correct style attribute + if (isset($tokenAttributes['style'])) { + $tokenAttributes['style'] = trim($tokenAttributes['style']); + + if ($tokenAttributes['style'][strlen($tokenAttributes['style']) - 1] != ';') { + $tokenAttributes['style'] .= ';'; + } + } else { + $tokenAttributes['style'] = ''; + } + + // special treathment for 'align' and 'color' attribute + if (isset($tokenAttributes['align'])) { + $tokenAttributes['style'] .= 'text-align: ' . $tokenAttributes['align'] . ';'; + unset($tokenAttributes['align']); + } + if (isset($tokenAttributes['color']) && self::checkColor($tokenAttributes['color'])) { + $tokenAttributes['style'] .= 'color: ' . $tokenAttributes['color'] . ';'; + unset($tokenAttributes['color']); + } + + /* + * loop through all the available attributes, and check if there is + * a value defined by the token + * if there is no value defined by the token, use the default value or + * don't set the attribute + */ + foreach ($attributes as $attribute => $value) { + if (isset($tokenAttributes[$attribute]) && !empty($tokenAttributes[$attribute])) { + $return .= ' ' . $attribute . '="' . htmlentities($tokenAttributes[$attribute], + ENT_QUOTES, + self::getEncoding()) . '"'; + } elseif (!empty($value)) { + $return .= ' ' . $attribute . '="' . htmlentities($value, ENT_QUOTES, self::getEncoding()) . '"'; + } + } + + return $return; + } + + /** + * Check if a color is a valid HTML color + * + * @param string $color + * + * @return bool + */ + public static function checkColor($color) + { + /* + * aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, + * purple, red, silver, teal, white, and yellow. + */ + $colors = array( + 'aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', + 'maroon', 'navy', 'olive', 'purple', 'red', 'silver', 'teal', + 'white', 'yellow' + ); + + if (in_array($color, $colors)) { + return true; + } + + if (preg_match('/\#[0-9a-f]{6}/i', $color)) { + return true; + } + + return false; + } + + /** + * Check if the URI is valid + * + * @param string $uri + * + * @return bool + */ + public static function isValidUri($uri) + { + if (!preg_match('/^([a-z][a-z+\-.]*):/i', $uri, $matches)) { + return false; + } + + $scheme = strtolower($matches[1]); + + switch ($scheme) { + case 'javascript': + // JavaScript scheme is not allowed for security reason + return false; + + case 'http': + case 'https': + case 'ftp': + $components = @parse_url($uri); + + if ($components === false) { + return false; + } + + if (!isset($components['host'])) { + return false; + } + + return true; + + default: + return true; + } + } +} diff --git a/library/Zend/Markup/Renderer/Html/Code.php b/library/Zend/Markup/Renderer/Html/Code.php new file mode 100755 index 000000000..a841aaf20 --- /dev/null +++ b/library/Zend/Markup/Renderer/Html/Code.php @@ -0,0 +1,53 @@ +_renderer = $renderer; + } + + /** + * Get the HTML renderer instance + * + * @return Zend_Markup_Renderer_Html + */ + public function getRenderer() + { + return $this->_renderer; + } +} diff --git a/library/Zend/Markup/Renderer/Html/Img.php b/library/Zend/Markup/Renderer/Html/Img.php new file mode 100755 index 000000000..95ef92506 --- /dev/null +++ b/library/Zend/Markup/Renderer/Html/Img.php @@ -0,0 +1,84 @@ +hasAttribute('alt')) { + $alt = $token->getAttribute('alt'); + } else { + // try to get the alternative from the URL + $alt = rtrim($text, '/'); + $alt = strrchr($alt, '/'); + if (false !== strpos($alt, '.')) { + $alt = substr($alt, 1, strpos($alt, '.') - 1); + } + } + + // run the URI and alt through htmlentities + $uri = htmlentities($uri, ENT_QUOTES, Zend_Markup_Renderer_Html::getEncoding()); + $alt = htmlentities($alt, ENT_QUOTES, Zend_Markup_Renderer_Html::getEncoding()); + + + return "\"{$alt}\"""; + } + +} diff --git a/library/Zend/Markup/Renderer/Html/List.php b/library/Zend/Markup/Renderer/Html/List.php new file mode 100755 index 000000000..3c3a245ac --- /dev/null +++ b/library/Zend/Markup/Renderer/Html/List.php @@ -0,0 +1,103 @@ +hasAttribute('list')) { + // because '01' == '1' + if ($token->getAttribute('list') === '01') { + $type = 'decimal-leading-zero'; + } else { + switch ($token->getAttribute('list')) { + case '1': + $type = 'decimal'; + break; + case 'i': + $type = 'lower-roman'; + break; + case 'I': + $type = 'upper-roman'; + break; + case 'a': + $type = 'lower-alpha'; + break; + case 'A': + $type = 'upper-alpha'; + break; + + // the following type is unsupported by IE (including IE8) + case 'alpha': + $type = 'lower-greek'; + break; + + // the CSS names itself + case 'armenian': // unsupported by IE (including IE8) + case 'decimal': + case 'decimal-leading-zero': // unsupported by IE (including IE8) + case 'georgian': // unsupported by IE (including IE8) + case 'lower-alpha': + case 'lower-greek': // unsupported by IE (including IE8) + case 'lower-latin': // unsupported by IE (including IE8) + case 'lower-roman': + case 'upper-alpha': + case 'upper-latin': // unsupported by IE (including IE8) + case 'upper-roman': + $type = $token->getAttribute('list'); + break; + } + } + } + + if (null !== $type) { + return "
      {$text}
    "; + } else { + return "
      {$text}
    "; + } + } + +} diff --git a/library/Zend/Markup/Renderer/Html/Url.php b/library/Zend/Markup/Renderer/Html/Url.php new file mode 100755 index 000000000..82389cbfe --- /dev/null +++ b/library/Zend/Markup/Renderer/Html/Url.php @@ -0,0 +1,77 @@ +hasAttribute('url')) { + $uri = $token->getAttribute('url'); + } else { + $uri = $text; + } + + if (!preg_match('/^([a-z][a-z+\-.]*):/i', $uri)) { + $uri = 'http://' . $uri; + } + + // check if the URL is valid + if (!Zend_Markup_Renderer_Html::isValidUri($uri)) { + return $text; + } + + $attributes = Zend_Markup_Renderer_Html::renderAttributes($token); + + // run the URI through htmlentities + $uri = htmlentities($uri, ENT_QUOTES, Zend_Markup_Renderer_Html::getEncoding()); + + return "{$text}"; + } + +} diff --git a/library/Zend/Markup/Renderer/RendererAbstract.php b/library/Zend/Markup/Renderer/RendererAbstract.php new file mode 100755 index 000000000..5226f797f --- /dev/null +++ b/library/Zend/Markup/Renderer/RendererAbstract.php @@ -0,0 +1,702 @@ +toArray(); + } + + if (isset($options['encoding'])) { + $this->setEncoding($options['encoding']); + } + if (isset($options['parser'])) { + $this->setParser($options['parser']); + } + if (!isset($options['useDefaultFilters']) || ($options['useDefaultFilters'] === true)) { + $this->addDefaultFilters(); + } + if (isset($options['defaultFilter'])) { + $this->addDefaultFilter($options['defaultFilter']); + } + } + + /** + * Set the parser + * + * @param Zend_Markup_Parser_ParserInterface $parser + * @return Zend_Markup_Renderer_RendererAbstract + */ + public function setParser(Zend_Markup_Parser_ParserInterface $parser) + { + $this->_parser = $parser; + return $this; + } + + /** + * Get the parser + * + * @return Zend_Markup_Parser_ParserInterface + */ + public function getParser() + { + return $this->_parser; + } + + /** + * Get the plugin loader + * + * @return Zend_Loader_PluginLoader + */ + public function getPluginLoader() + { + return $this->_pluginLoader; + } + + /** + * Set the renderer's encoding + * + * @param string $encoding + * + * @return void + */ + public static function setEncoding($encoding) + { + self::$_encoding = $encoding; + } + + /** + * Get the renderer's encoding + * + * @return string + */ + public static function getEncoding() + { + return self::$_encoding; + } + + /** + * Add a new markup + * + * @param string $name + * @param string $type + * @param array $options + * + * @return Zend_Markup_Renderer_RendererAbstract + */ + public function addMarkup($name, $type, array $options) + { + if (!isset($options['group']) && ($type ^ self::TYPE_ALIAS)) { + require_once 'Zend/Markup/Renderer/Exception.php'; + throw new Zend_Markup_Renderer_Exception("There is no render group defined."); + } + + // add the filter + if (isset($options['filter'])) { + if ($options['filter'] instanceof Zend_Filter_Interface) { + $filter = $options['filter']; + } elseif ($options['filter'] === true) { + $filter = $this->getDefaultFilter(); + } else { + $filter = false; + } + } else { + $filter = $this->getDefaultFilter(); + } + + // check the type + if ($type & self::TYPE_CALLBACK) { + // add a callback tag + if (isset($options['callback'])) { + if (!($options['callback'] instanceof Zend_Markup_Renderer_TokenConverterInterface)) { + require_once 'Zend/Markup/Renderer/Exception.php'; + throw new Zend_Markup_Renderer_Exception("Not a valid tag callback."); + } + if (method_exists($options['callback'], 'setRenderer')) { + $options['callback']->setRenderer($this); + } + } else { + $options['callback'] = null; + } + + $options['type'] = $type; + $options['filter'] = $filter; + + $this->_markups[$name] = $options; + } elseif ($type & self::TYPE_ALIAS) { + // add an alias + if (empty($options['name'])) { + require_once 'Zend/Markup/Renderer/Exception.php'; + throw new Zend_Markup_Renderer_Exception( + 'No alias was provided but tag was defined as such'); + } + + $this->_markups[$name] = array( + 'type' => self::TYPE_ALIAS, + 'name' => $options['name'] + ); + } else { + if ($type && array_key_exists('empty', $options) && $options['empty']) { + // add a single replace markup + $options['type'] = $type; + $options['filter'] = $filter; + + $this->_markups[$name] = $options; + } else { + // add a replace markup + $options['type'] = $type; + $options['filter'] = $filter; + + $this->_markups[$name] = $options; + } + } + return $this; + } + + /** + * Remove a markup + * + * @param string $name + * + * @return void + */ + public function removeMarkup($name) + { + unset($this->_markups[$name]); + } + + /** + * Remove the default tags + * + * @return void + */ + public function clearMarkups() + { + $this->_markups = array(); + } + + /** + * Render function + * + * @param Zend_Markup_TokenList|string $tokenList + * @return string + */ + public function render($value) + { + if ($value instanceof Zend_Markup_TokenList) { + $tokenList = $value; + } else { + $tokenList = $this->getParser()->parse($value); + } + + $root = $tokenList->current(); + + $this->_filter = $this->getDefaultFilter(); + + return $this->_render($root); + } + + /** + * Render a single token + * + * @param Zend_Markup_Token $token + * @return string + */ + protected function _render(Zend_Markup_Token $token) + { + $return = ''; + + $this->_token = $token; + + // if this tag has children, execute them + if ($token->hasChildren()) { + foreach ($token->getChildren() as $child) { + $return .= $this->_execute($child); + } + } + + return $return; + } + + /** + * Get the group of a token + * + * @param Zend_Markup_Token $token + * @return string|bool + */ + protected function _getGroup(Zend_Markup_Token $token) + { + if (!isset($this->_markups[$token->getName()])) { + return false; + } + + $tag = $this->_markups[$token->getName()]; + + // alias processing + while ($tag['type'] & self::TYPE_ALIAS) { + $tag = $this->_markups[$tag['name']]; + } + + return isset($tag['group']) ? $tag['group'] : false; + } + + /** + * Execute the token + * + * @param Zend_Markup_Token $token + * @return string + */ + protected function _execute(Zend_Markup_Token $token) + { + // first return the normal text tags + if ($token->getType() == Zend_Markup_Token::TYPE_NONE) { + return $this->_filter($token->getTag()); + } + + // if the token doesn't have a notation, return the plain text + if (!isset($this->_markups[$token->getName()])) { + $oldToken = $this->_token; + $return = $this->_filter($token->getTag()) . $this->_render($token) . $token->getStopper(); + $this->_token = $oldToken; + return $return; + } + + $name = $this->_getMarkupName($token); + $markup = (!$name) ? false : $this->_markups[$name]; + $empty = (is_array($markup) && array_key_exists('empty', $markup) && $markup['empty']); + + // check if the tag has content + if (!$empty && !$token->hasChildren()) { + return ''; + } + + // check for the context + if (is_array($markup) && !in_array($markup['group'], $this->_groups[$this->_group])) { + $oldToken = $this->_token; + $return = $this->_filter($token->getTag()) . $this->_render($token) . $token->getStopper(); + $this->_token = $oldToken; + return $return; + } + + // check for the filter + if (!isset($markup['filter']) + || (!($markup['filter'] instanceof Zend_Filter_Interface) && ($markup['filter'] !== false))) { + $this->_markups[$name]['filter'] = $this->getDefaultFilter(); + } + + // save old values to reset them after the work is done + $oldFilter = $this->_filter; + $oldGroup = $this->_group; + + $return = ''; + + // set the filter and the group + $this->_filter = $this->getFilter($name); + + if ($group = $this->_getGroup($token)) { + $this->_group = $group; + } + + // callback + if (is_array($markup) && ($markup['type'] & self::TYPE_CALLBACK)) { + // load the callback if the tag doesn't exist + if (!($markup['callback'] instanceof Zend_Markup_Renderer_TokenConverterInterface)) { + $class = $this->getPluginLoader()->load($name); + + $markup['callback'] = new $class; + + if (!($markup['callback'] instanceof Zend_Markup_Renderer_TokenConverterInterface)) { + require_once 'Zend/Markup/Renderer/Exception.php'; + throw new Zend_Markup_Renderer_Exception("Callback for tag '$name' found, but it isn't valid."); + } + + if (method_exists($markup['callback'], 'setRenderer')) { + $markup['callback']->setRenderer($this); + } + } + if ($markup['type'] && !$empty) { + $return = $markup['callback']->convert($token, $this->_render($token)); + } else { + $return = $markup['callback']->convert($token, null); + } + } else { + // replace + if ($markup['type'] && !$empty) { + $return = $this->_executeReplace($token, $markup); + } else { + $return = $this->_executeSingleReplace($token, $markup); + } + } + + // reset to the old values + $this->_filter = $oldFilter; + $this->_group = $oldGroup; + + return $return; + } + + /** + * Filter method + * + * @param string $value + * + * @return string + */ + protected function _filter($value) + { + if ($this->_filter instanceof Zend_Filter_Interface) { + return $this->_filter->filter($value); + } + return $value; + } + + /** + * Get the markup name + * + * @param Zend_Markup_Token + * + * @return string + */ + protected function _getMarkupName(Zend_Markup_Token $token) + { + $name = $token->getName(); + if (empty($name)) { + return false; + } + + return $this->_resolveMarkupName($name); + } + + /** + * Resolve aliases for a markup name + * + * @param string $name + * + * @return string + */ + protected function _resolveMarkupName($name) + { + while (($type = $this->_getMarkupType($name)) + && ($type & self::TYPE_ALIAS) + ) { + $name = $this->_markups[$name]['name']; + } + + return $name; + } + + /** + * Retrieve markup type + * + * @param string $name + * @return false|int + */ + protected function _getMarkupType($name) + { + if (!isset($this->_markups[$name])) { + return false; + } + if (!isset($this->_markups[$name]['type'])) { + return false; + } + return $this->_markups[$name]['type']; + } + + /** + * Execute a replace token + * + * @param Zend_Markup_Token $token + * @param array $tag + * @return string + */ + protected function _executeReplace(Zend_Markup_Token $token, $tag) + { + return $tag['start'] . $this->_render($token) . $tag['end']; + } + + /** + * Execute a single replace token + * + * @param Zend_Markup_Token $token + * @param array $tag + * @return string + */ + protected function _executeSingleReplace(Zend_Markup_Token $token, $tag) + { + return $tag['replace']; + } + + /** + * Get the default filter + * + * @return void + */ + public function getDefaultFilter() + { + if (null === $this->_defaultFilter) { + $this->addDefaultFilters(); + } + + return $this->_defaultFilter; + } + + /** + * Add a default filter + * + * @param string $filter + * + * @return void + */ + public function addDefaultFilter(Zend_Filter_Interface $filter, $placement = Zend_Filter::CHAIN_APPEND) + { + if (!($this->_defaultFilter instanceof Zend_Filter)) { + $defaultFilter = new Zend_Filter(); + $defaultFilter->addFilter($filter); + $this->_defaultFilter = $defaultFilter; + } + + $this->_defaultFilter->addFilter($filter, $placement); + } + + /** + * Set the default filter + * + * @param Zend_Filter_Interface $filter + * + * @return void + */ + public function setDefaultFilter(Zend_Filter_Interface $filter) + { + $this->_defaultFilter = $filter; + } + + /** + * Get the filter for an existing markup + * + * @param string $markup + * + * @return Zend_Filter_Interface + */ + public function getFilter($markup) + { + $markup = $this->_resolveMarkupName($markup); + + if (!isset($this->_markups[$markup]['filter']) + || !($this->_markups[$markup]['filter'] instanceof Zend_Filter_Interface) + ) { + if (isset($this->_markups[$markup]['filter']) && $this->_markups[$markup]['filter']) { + $this->_markups[$markup]['filter'] = $this->getDefaultFilter(); + } else { + return false; + } + } + + return $this->_markups[$markup]['filter']; + } + + /** + * Add a filter for an existing markup + * + * @param Zend_Filter_Interface $filter + * @param string $markup + * @param string $placement + * + * @return Zend_Markup_Renderer_RendererAbstract + */ + public function addFilter(Zend_Filter_Interface $filter, $markup, $placement = Zend_Filter::CHAIN_APPEND) + { + $markup = $this->_resolveMarkupName($markup); + + $oldFilter = $this->getFilter($markup); + + // if this filter is the default filter, clone it first + if ($oldFilter === $this->getDefaultFilter()) { + $oldFilter = clone $oldFilter; + } + + if (!($oldFilter instanceof Zend_Filter)) { + $this->_markups[$markup]['filter'] = new Zend_Filter(); + + if ($oldFilter instanceof Zend_Filter_Interface) { + $this->_markups[$markup]['filter']->addFilter($oldFilter); + } + } else { + $this->_markups[$markup]['filter'] = $oldFilter; + } + + $this->_markups[$markup]['filter']->addFilter($filter, $placement); + + return $this; + } + + /** + * Set the filter for an existing + * + * @param Zend_Filter_Interface $filter + * @param string $markup + * + * @return Zend_Markup_Renderer_RendererAbstract + */ + public function setFilter(Zend_Filter_Interface $filter, $markup) + { + $markup = $this->_resolveMarkupName($markup); + + $this->_markups[$markup]['filter'] = $filter; + + return $this; + } + + /** + * Add a render group + * + * @param string $name + * @param array $allowedInside + * @param array $allowsInside + * + * @return void + */ + public function addGroup($name, array $allowedInside = array(), array $allowsInside = array()) + { + $this->_groups[$name] = $allowsInside; + + foreach ($allowedInside as $group) { + $this->_groups[$group][] = $name; + } + } + + /** + * Get group definitions + * + * @return array + */ + public function getGroups() + { + return $this->_groups; + } + + /** + * Set the default filters + * + * @return void + */ + abstract public function addDefaultFilters(); + +} diff --git a/library/Zend/Markup/Renderer/TokenConverterInterface.php b/library/Zend/Markup/Renderer/TokenConverterInterface.php new file mode 100755 index 000000000..253c0c8a3 --- /dev/null +++ b/library/Zend/Markup/Renderer/TokenConverterInterface.php @@ -0,0 +1,44 @@ +_tag = $tag; + $this->_type = $type; + $this->_name = $name; + $this->_attributes = $attributes; + $this->_parent = $parent; + } + + // accessors + + /** + * Set the stopper + * + * @param string $stopper + * @return Zend_Markup_Token + */ + public function setStopper($stopper) + { + $this->_stopper = $stopper; + + return $this; + } + + /** + * Get the stopper + * + * @return string + */ + public function getStopper() + { + return $this->_stopper; + } + + /** + * Get the token's name + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * Get the token's type + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * Get the complete tag + * + * @return string + */ + public function getTag() + { + return $this->_tag; + } + + /** + * Get an attribute + * + * @param string $name + * + * @return string + */ + public function getAttribute($name) + { + return isset($this->_attributes[$name]) ? $this->_attributes[$name] : null; + } + + /** + * Check if the token has an attribute + * + * @param string $name + * + * @return bool + */ + public function hasAttribute($name) + { + return isset($this->_attributes[$name]); + } + + /** + * Get all the attributes + * + * @return array + */ + public function getAttributes() + { + return $this->_attributes; + } + + /** + * Add an attribute + * + * @return Zend_Markup_Token + */ + public function addAttribute($name, $value) + { + $this->_attributes[$name] = $value; + + return $this; + } + + /** + * Check if an attribute is empty + * + * @param string $name + * + * @return bool + */ + public function attributeIsEmpty($name) + { + return empty($this->_attributes[$name]); + } + + // functions for child/parent tokens + + /** + * Add a child token + * + * @return void + */ + public function addChild(Zend_Markup_Token $child) + { + $this->getChildren()->addChild($child); + } + + /** + * Set the children token list + * + * @param Zend_Markup_TokenList $children + * @return Zend_Markup_Token + */ + public function setChildren(Zend_Markup_TokenList $children) + { + $this->_children = $children; + return $this; + } + + /** + * Get the children for this token + * + * @return Zend_Markup_TokenList + */ + public function getChildren() + { + if (null === $this->_children) { + $this->setChildren(new Zend_Markup_TokenList()); + } + return $this->_children; + } + + /** + * Does this token have any children + * + * @return bool + */ + public function hasChildren() + { + return !empty($this->_children); + } + + /** + * Get the parent token (if any) + * + * @return Zend_Markup_Token + */ + public function getParent() + { + return $this->_parent; + } + + /** + * Set a parent token + * + * @param Zend_Markup_Token $parent + * @return Zend_Markup_Token + */ + public function setParent(Zend_Markup_Token $parent) + { + $this->_parent = $parent; + return $this; + } + + /** + * Magic clone function + * + * @return void + */ + public function __clone() + { + $this->_parent = null; + $this->_children = null; + $this->_tag = ''; + } +} diff --git a/library/Zend/Markup/TokenList.php b/library/Zend/Markup/TokenList.php new file mode 100755 index 000000000..cbfc78a76 --- /dev/null +++ b/library/Zend/Markup/TokenList.php @@ -0,0 +1,124 @@ +_tokens); + } + + /** + * Get the children of the current token + * + * @return Zend_Markup_TokenList + */ + public function getChildren() + { + return current($this->_tokens)->getChildren(); + } + + /** + * Add a new child token + * + * @param Zend_Markup_Token $child + * + * @return void + */ + public function addChild(Zend_Markup_Token $child) + { + $this->_tokens[] = $child; + } + + /** + * Check if the current token has children + * + * @return bool + */ + public function hasChildren() + { + return current($this->_tokens)->hasChildren(); + } + + /** + * Get the key of the current token + * + * @return int + */ + public function key() + { + return key($this->_tokens); + } + + /** + * Go to the next token + * + * @return Zend_Markup_Token + */ + public function next() + { + return next($this->_tokens); + } + + /** + * Rewind the iterator + * + * @return void + */ + public function rewind() + { + reset($this->_tokens); + } + + /** + * Check if the element is valid + * + * @return void + */ + public function valid() + { + return $this->current() !== false; + } +} diff --git a/library/Zend/Measure/Abstract.php b/library/Zend/Measure/Abstract.php new file mode 100755 index 000000000..ecc51a1fc --- /dev/null +++ b/library/Zend/Measure/Abstract.php @@ -0,0 +1,418 @@ +setLocale($locale); + if ($type === null) { + $type = $this->_units['STANDARD']; + } + + if (isset($this->_units[$type]) === false) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Type ($type) is unknown"); + } + + $this->setValue($value, $type, $this->_locale); + } + + /** + * Returns the actual set locale + * + * @return string + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Sets a new locale for the value representation + * + * @param string|Zend_Locale $locale (Optional) New locale to set + * @param boolean $check False, check but don't set; True, set the new locale + * @return Zend_Measure_Abstract + */ + public function setLocale($locale = null, $check = false) + { + if (empty($locale)) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Locale') === true) { + $locale = Zend_Registry::get('Zend_Locale'); + } + } + + if ($locale === null) { + $locale = new Zend_Locale(); + } + + if (!Zend_Locale::isLocale($locale, true, false)) { + if (!Zend_Locale::isLocale($locale, false, false)) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Language (" . (string) $locale . ") is unknown"); + } + + $locale = new Zend_Locale($locale); + } + + if (!$check) { + $this->_locale = (string) $locale; + } + return $this; + } + + /** + * Returns the internal value + * + * @param integer $round (Optional) Rounds the value to an given precision, + * Default is -1 which returns without rounding + * @param string|Zend_Locale $locale (Optional) Locale for number representation + * @return integer|string + */ + public function getValue($round = -1, $locale = null) + { + if ($round < 0) { + $return = $this->_value; + } else { + $return = Zend_Locale_Math::round($this->_value, $round); + } + + if ($locale !== null) { + $this->setLocale($locale, true); + return Zend_Locale_Format::toNumber($return, array('locale' => $locale)); + } + + return $return; + } + + /** + * Set a new value + * + * @param integer|string $value Value as string, integer, real or float + * @param string $type OPTIONAL A measure type f.e. Zend_Measure_Length::METER + * @param string|Zend_Locale $locale OPTIONAL Locale for parsing numbers + * @throws Zend_Measure_Exception + * @return Zend_Measure_Abstract + */ + public function setValue($value, $type = null, $locale = null) + { + if (($type !== null) and (Zend_Locale::isLocale($type, null, false))) { + $locale = $type; + $type = null; + } + + if ($locale === null) { + $locale = $this->_locale; + } + + $this->setLocale($locale, true); + if ($type === null) { + $type = $this->_units['STANDARD']; + } + + if (empty($this->_units[$type])) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Type ($type) is unknown"); + } + + try { + $value = Zend_Locale_Format::getNumber($value, array('locale' => $locale)); + } catch(Exception $e) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception($e->getMessage(), $e->getCode(), $e); + } + + $this->_value = $value; + $this->setType($type); + return $this; + } + + /** + * Returns the original type + * + * @return type + */ + public function getType() + { + return $this->_type; + } + + /** + * Set a new type, and convert the value + * + * @param string $type New type to set + * @throws Zend_Measure_Exception + * @return Zend_Measure_Abstract + */ + public function setType($type) + { + if (empty($this->_units[$type])) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Type ($type) is unknown"); + } + + if (empty($this->_type)) { + $this->_type = $type; + } else { + // Convert to standard value + $value = $this->_value; + if (is_array($this->_units[$this->getType()][0])) { + foreach ($this->_units[$this->getType()][0] as $key => $found) { + switch ($key) { + case "/": + if ($found != 0) { + $value = call_user_func(Zend_Locale_Math::$div, $value, $found, 25); + } + break; + case "+": + $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25); + break; + case "-": + $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25); + break; + default: + $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25); + break; + } + } + } else { + $value = call_user_func(Zend_Locale_Math::$mul, $value, $this->_units[$this->getType()][0], 25); + } + + // Convert to expected value + if (is_array($this->_units[$type][0])) { + foreach (array_reverse($this->_units[$type][0]) as $key => $found) { + switch ($key) { + case "/": + $value = call_user_func(Zend_Locale_Math::$mul, $value, $found, 25); + break; + case "+": + $value = call_user_func(Zend_Locale_Math::$sub, $value, $found, 25); + break; + case "-": + $value = call_user_func(Zend_Locale_Math::$add, $value, $found, 25); + break; + default: + if ($found != 0) { + $value = call_user_func(Zend_Locale_Math::$div, $value, $found, 25); + } + break; + } + } + } else { + $value = call_user_func(Zend_Locale_Math::$div, $value, $this->_units[$type][0], 25); + } + + $slength = strlen($value); + $length = 0; + for($i = 1; $i <= $slength; ++$i) { + if ($value[$slength - $i] != '0') { + $length = 26 - $i; + break; + } + } + + $this->_value = Zend_Locale_Math::round($value, $length); + $this->_type = $type; + } + return $this; + } + + /** + * Compare if the value and type is equal + * + * @param Zend_Measure_Abstract $object object to compare + * @return boolean + */ + public function equals($object) + { + if ((string) $object == $this->toString()) { + return true; + } + + return false; + } + + /** + * Returns a string representation + * + * @param integer $round (Optional) Runds the value to an given exception + * @param string|Zend_Locale $locale (Optional) Locale to set for the number + * @return string + */ + public function toString($round = -1, $locale = null) + { + if ($locale === null) { + $locale = $this->_locale; + } + + return $this->getValue($round, $locale) . ' ' . $this->_units[$this->getType()][1]; + } + + /** + * Returns a string representation + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Returns the conversion list + * + * @return array + */ + public function getConversionList() + { + return $this->_units; + } + + /** + * Alias function for setType returning the converted unit + * + * @param string $type Constant Type + * @param integer $round (Optional) Rounds the value to a given precision + * @param string|Zend_Locale $locale (Optional) Locale to set for the number + * @return string + */ + public function convertTo($type, $round = 2, $locale = null) + { + $this->setType($type); + return $this->toString($round, $locale); + } + + /** + * Adds an unit to another one + * + * @param Zend_Measure_Abstract $object object of same unit type + * @return Zend_Measure_Abstract + */ + public function add($object) + { + $object->setType($this->getType()); + $value = $this->getValue(-1) + $object->getValue(-1); + + $this->setValue($value, $this->getType(), $this->_locale); + return $this; + } + + /** + * Substracts an unit from another one + * + * @param Zend_Measure_Abstract $object object of same unit type + * @return Zend_Measure_Abstract + */ + public function sub($object) + { + $object->setType($this->getType()); + $value = $this->getValue(-1) - $object->getValue(-1); + + $this->setValue($value, $this->getType(), $this->_locale); + return $this; + } + + /** + * Compares two units + * + * @param Zend_Measure_Abstract $object object of same unit type + * @return boolean + */ + public function compare($object) + { + $object->setType($this->getType()); + $value = $this->getValue(-1) - $object->getValue(-1); + + if ($value < 0) { + return -1; + } else if ($value > 0) { + return 1; + } + + return 0; + } +} diff --git a/library/Zend/Measure/Acceleration.php b/library/Zend/Measure/Acceleration.php new file mode 100755 index 000000000..09cdf15c2 --- /dev/null +++ b/library/Zend/Measure/Acceleration.php @@ -0,0 +1,91 @@ + array('0.0001', 'cgal'), + 'CENTIMETER_PER_SQUARE_SECOND' => array('0.01', 'cm/s²'), + 'DECIGAL' => array('0.001', 'dgal'), + 'DECIMETER_PER_SQUARE_SECOND' => array('0.1', 'dm/s²'), + 'DEKAMETER_PER_SQUARE_SECOND' => array('10', 'dam/s²'), + 'FOOT_PER_SQUARE_SECOND' => array('0.3048', 'ft/s²'), + 'G' => array('9.80665', 'g'), + 'GAL' => array('0.01', 'gal'), + 'GALILEO' => array('0.01', 'gal'), + 'GRAV' => array('9.80665', 'g'), + 'HECTOMETER_PER_SQUARE_SECOND' => array('100', 'h/s²'), + 'INCH_PER_SQUARE_SECOND' => array('0.0254', 'in/s²'), + 'KILOMETER_PER_HOUR_SECOND' => array(array('' => '5','/' => '18'), 'km/h²'), + 'KILOMETER_PER_SQUARE_SECOND' => array('1000', 'km/s²'), + 'METER_PER_SQUARE_SECOND' => array('1', 'm/s²'), + 'MILE_PER_HOUR_MINUTE' => array(array('' => '22', '/' => '15', '*' => '0.3048', '/' => '60'), 'mph/m'), + 'MILE_PER_HOUR_SECOND' => array(array('' => '22', '/' => '15', '*' => '0.3048'), 'mph/s'), + 'MILE_PER_SQUARE_SECOND' => array('1609.344', 'mi/s²'), + 'MILLIGAL' => array('0.00001', 'mgal'), + 'MILLIMETER_PER_SQUARE_SECOND' => array('0.001', 'mm/s²'), + 'STANDARD' => 'METER_PER_SQUARE_SECOND' + ); +} diff --git a/library/Zend/Measure/Angle.php b/library/Zend/Measure/Angle.php new file mode 100755 index 000000000..9d514a861 --- /dev/null +++ b/library/Zend/Measure/Angle.php @@ -0,0 +1,78 @@ + array('1','rad'), + 'MIL' => array(array('' => M_PI,'/' => '3200'), 'mil'), + 'GRAD' => array(array('' => M_PI,'/' => '200'), 'gr'), + 'DEGREE' => array(array('' => M_PI,'/' => '180'), '°'), + 'MINUTE' => array(array('' => M_PI,'/' => '10800'), "'"), + 'SECOND' => array(array('' => M_PI,'/' => '648000'), '"'), + 'POINT' => array(array('' => M_PI,'/' => '16'), 'pt'), + 'CIRCLE_16' => array(array('' => M_PI,'/' => '8'), 'per 16 circle'), + 'CIRCLE_10' => array(array('' => M_PI,'/' => '5'), 'per 10 circle'), + 'CIRCLE_8' => array(array('' => M_PI,'/' => '4'), 'per 8 circle'), + 'CIRCLE_6' => array(array('' => M_PI,'/' => '3'), 'per 6 circle'), + 'CIRCLE_4' => array(array('' => M_PI,'/' => '2'), 'per 4 circle'), + 'CIRCLE_2' => array(M_PI, 'per 2 circle'), + 'FULL_CIRCLE' => array(array('' => M_PI,'*' => '2'), 'cir'), + 'STANDARD' => 'RADIAN' + ); +} diff --git a/library/Zend/Measure/Area.php b/library/Zend/Measure/Area.php new file mode 100755 index 000000000..c0057b67f --- /dev/null +++ b/library/Zend/Measure/Area.php @@ -0,0 +1,310 @@ + array('4046.856422', 'A'), + 'ACRE_COMMERCIAL' => array('3344.50944', 'A'), + 'ACRE_SURVEY' => array('4046.872627', 'A'), + 'ACRE_IRELAND' => array('6555', 'A'), + 'ARE' => array('100', 'a'), + 'ARPENT' => array('3418.89', 'arpent'), + 'BARN' => array('1e-28', 'b'), + 'BOVATE' => array('60000', 'bovate'), + 'BUNDER' => array('10000', 'bunder'), + 'CABALLERIA' => array('400000', 'caballeria'), + 'CABALLERIA_AMERICA' => array('450000', 'caballeria'), + 'CABALLERIA_CUBA' => array('134200', 'caballeria'), + 'CARREAU' => array('12900', 'carreau'), + 'CARUCATE' => array('486000', 'carucate'), + 'CAWNEY' => array('5400', 'cawney'), + 'CENTIARE' => array('1', 'ca'), + 'CONG' => array('1000', 'cong'), + 'COVER' => array('2698', 'cover'), + 'CUERDA' => array('3930', 'cda'), + 'DEKARE' => array('1000', 'dekare'), + 'DESSIATINA' => array('10925', 'dessiantina'), + 'DHUR' => array('16.929', 'dhur'), + 'DUNUM' => array('1000', 'dunum'), + 'DUNHAM' => array('1000', 'dunham'), + 'FALL_SCOTS' => array('32.15', 'fall'), + 'FALL' => array('47.03', 'fall'), + 'FANEGA' => array('6430', 'fanega'), + 'FARTHINGDALE' => array('1012', 'farthingdale'), + 'HACIENDA' => array('89600000', 'hacienda'), + 'HECTARE' => array('10000', 'ha'), + 'HIDE' => array('486000', 'hide'), + 'HOMESTEAD' => array('647500', 'homestead'), + 'HUNDRED' => array('50000000', 'hundred'), + 'JERIB' => array('2000', 'jerib'), + 'JITRO' => array('5755', 'jitro'), + 'JOCH' => array('5755', 'joch'), + 'JUTRO' => array('5755', 'jutro'), + 'JO' => array('1.62', 'jo'), + 'KAPPLAND' => array('154.26', 'kappland'), + 'KATTHA' => array('338', 'kattha'), + 'LABOR' => array('716850', 'labor'), + 'LEGUA' => array('17920000', 'legua'), + 'MANZANA_COSTA_RICA' => array('6988.96', 'manzana'), + 'MANZANA' => array('10000', 'manzana'), + 'MORGEN' => array('2500', 'morgen'), + 'MORGEN_AFRICA' => array('8567', 'morgen'), + 'MU' => array(array('' => '10000', '/' => '15'), 'mu'), + 'NGARN' => array('400', 'ngarn'), + 'NOOK' => array('80937.128', 'nook'), + 'OXGANG' => array('60000', 'oxgang'), + 'PERCH' => array('25.29285264', 'perch'), + 'PERCHE' => array('34.19', 'perche'), + 'PING' => array('3.305', 'ping'), + 'PYONG' => array('3.306', 'pyong'), + 'RAI' => array('1600', 'rai'), + 'ROOD' => array('1011.7141', 'rood'), + 'SECTION' => array('2589998.5', 'sec'), + 'SHED' => array('10e-52', 'shed'), + 'SITIO' => array('18000000', 'sitio'), + 'SQUARE' => array('9.290304', 'sq'), + 'SQUARE_ANGSTROM' => array('1.0e-20', 'A²'), + 'SQUARE_ASTRONOMICAL_UNIT' => array('2.2379523e+22', 'AU²'), + 'SQUARE_ATTOMETER' => array('1.0e-36', 'am²'), + 'SQUARE_BICRON' => array('1.0e-24', 'µµ²'), + 'SQUARE_CENTIMETER' => array('0.0001', 'cm²'), + 'SQUARE_CHAIN' => array('404.68726', 'ch²'), + 'SQUARE_CHAIN_ENGINEER' => array('929.03412', 'ch²'), + 'SQUARE_CITY_BLOCK_US_EAST' => array('4.97027584', 'sq block'), + 'SQUARE_CITY_BLOCK_US_WEST' => array('17.141056', 'sq block'), + 'SQUARE_CITY_BLOCK_US_SOUTH' => array('99.88110336', 'sq block'), + 'SQUARE_CUBIT' => array('0.20903184', 'sq cubit'), + 'SQUARE_DECIMETER' => array('0.01', 'dm²'), + 'SQUARE_DEKAMETER' => array('100', 'dam²'), + 'SQUARE_EXAMETER' => array('1.0e+36', 'Em²'), + 'SQUARE_FATHOM' => array('3.3445228', 'fth²'), + 'SQUARE_FEMTOMETER' => array('1.0e-30', 'fm²'), + 'SQUARE_FERMI' => array('1.0e-30', 'f²'), + 'SQUARE_FOOT' => array('0.09290304', 'ft²'), + 'SQUARE_FOOT_SURVEY' => array('0.092903412', 'ft²'), + 'SQUARE_FURLONG' => array('40468.726', 'fur²'), + 'SQUARE_GIGAMETER' => array('1.0e+18', 'Gm²'), + 'SQUARE_HECTOMETER' => array('10000', 'hm²'), + 'SQUARE_INCH' => array(array('' => '0.09290304','/' => '144'), 'in²'), + 'SQUARE_INCH_SURVEY' => array(array('' => '0.092903412','/' => '144'), 'in²'), + 'SQUARE_KILOMETER' => array('1000000', 'km²'), + 'SQUARE_LEAGUE_NAUTIC' => array('3.0869136e+07', 'sq league'), + 'SQUARE_LEAGUE' => array('2.3309986e+07', 'sq league'), + 'SQUARE_LIGHT_YEAR' => array('8.9505412e+31', 'ly²'), + 'SQUARE_LINK' => array('0.040468726', 'sq link'), + 'SQUARE_LINK_ENGINEER' => array('0.092903412', 'sq link'), + 'SQUARE_MEGAMETER' => array('1.0e+12', 'Mm²'), + 'SQUARE_METER' => array('1', 'm²'), + 'SQUARE_MICROINCH' => array(array('' => '1.0e-6','*' => '6.4516e-10'), 'µin²'), + 'SQUARE_MICROMETER' => array('1.0e-12', 'µm²'), + 'SQUARE_MICROMICRON' => array('1.0e-24', 'µµ²'), + 'SQUARE_MICRON' => array('1.0e-12', 'µ²'), + 'SQUARE_MIL' => array('6.4516e-10', 'sq mil'), + 'SQUARE_MILE' => array(array('' => '0.09290304','*' => '27878400'), 'mi²'), + 'SQUARE_MILE_NAUTIC' => array('3429904', 'mi²'), + 'SQUARE_MILE_SURVEY' => array('2589998.5', 'mi²'), + 'SQUARE_MILLIMETER' => array('0.000001', 'mm²'), + 'SQUARE_MILLIMICRON' => array('1.0e-18', 'mµ²'), + 'SQUARE_MYRIAMETER' => array('1.0e+8', 'mym²'), + 'SQUARE_NANOMETER' => array('1.0e-18', 'nm²'), + 'SQUARE_PARIS_FOOT' => array('0.1055', 'sq paris foot'), + 'SQUARE_PARSEC' => array('9.5214087e+32', 'pc²'), + 'SQUARE_PERCH' => array('25.292954', 'sq perch'), + 'SQUARE_PERCHE' => array('51.072', 'sq perche'), + 'SQUARE_PETAMETER' => array('1.0e+30', 'Pm²'), + 'SQUARE_PICOMETER' => array('1.0e-24', 'pm²'), + 'SQUARE_ROD' => array(array('' => '0.092903412','*' => '272.25'), 'rd²'), + 'SQUARE_TENTHMETER' => array('1.0e-20', 'sq tenth-meter'), + 'SQUARE_TERAMETER' => array('1.0e+24', 'Tm²'), + 'SQUARE_THOU' => array('6.4516e-10', 'sq thou'), + 'SQUARE_VARA' => array('0.70258205', 'sq vara'), + 'SQUARE_VARA_TEXAS' => array('0.71684731', 'sq vara'), + 'SQUARE_YARD' => array('0.83612736', 'yd²'), + 'SQUARE_YARD_SURVEY' => array('0.836130708', 'yd²'), + 'SQUARE_YOCTOMETER' => array('1.0e-48', 'ym²'), + 'SQUARE_YOTTAMETER' => array('1.0e+48', 'Ym²'), + 'STANG' => array('2709', 'stang'), + 'STREMMA' => array('1000', 'stremma'), + 'TAREA' => array('628.8', 'tarea'), + 'TATAMI' => array('1.62', 'tatami'), + 'TONDE_LAND' => array('5516', 'tonde land'), + 'TOWNSHIP' => array('93239945.3196288', 'twp'), + 'TSUBO' => array('3.3058', 'tsubo'), + 'TUNNLAND' => array('4936.4', 'tunnland'), + 'YARD' => array('0.83612736', 'yd'), + 'VIRGATE' => array('120000', 'virgate'), + 'STANDARD' => 'SQUARE_METER' + ); +} diff --git a/library/Zend/Measure/Binary.php b/library/Zend/Measure/Binary.php new file mode 100755 index 000000000..e16527c4a --- /dev/null +++ b/library/Zend/Measure/Binary.php @@ -0,0 +1,122 @@ + array('0.125', 'b'), + 'CRUMB' => array('0.25', 'crumb'), + 'NIBBLE' => array('0.5', 'nibble'), + 'BYTE' => array('1', 'B'), + 'KILOBYTE' => array('1024', 'kB'), + 'KIBIBYTE' => array('1024', 'KiB'), + 'KILO_BINARY_BYTE' => array('1024', 'KiB'), + 'KILOBYTE_SI' => array('1000', 'kB.'), + 'MEGABYTE' => array('1048576', 'MB'), + 'MEBIBYTE' => array('1048576', 'MiB'), + 'MEGA_BINARY_BYTE' => array('1048576', 'MiB'), + 'MEGABYTE_SI' => array('1000000', 'MB.'), + 'GIGABYTE' => array('1073741824', 'GB'), + 'GIBIBYTE' => array('1073741824', 'GiB'), + 'GIGA_BINARY_BYTE' => array('1073741824', 'GiB'), + 'GIGABYTE_SI' => array('1000000000', 'GB.'), + 'TERABYTE' => array('1099511627776', 'TB'), + 'TEBIBYTE' => array('1099511627776', 'TiB'), + 'TERA_BINARY_BYTE' => array('1099511627776', 'TiB'), + 'TERABYTE_SI' => array('1000000000000', 'TB.'), + 'PETABYTE' => array('1125899906842624', 'PB'), + 'PEBIBYTE' => array('1125899906842624', 'PiB'), + 'PETA_BINARY_BYTE' => array('1125899906842624', 'PiB'), + 'PETABYTE_SI' => array('1000000000000000', 'PB.'), + 'EXABYTE' => array('1152921504606846976', 'EB'), + 'EXBIBYTE' => array('1152921504606846976', 'EiB'), + 'EXA_BINARY_BYTE' => array('1152921504606846976', 'EiB'), + 'EXABYTE_SI' => array('1000000000000000000', 'EB.'), + 'ZETTABYTE' => array('1180591620717411303424', 'ZB'), + 'ZEBIBYTE' => array('1180591620717411303424', 'ZiB'), + 'ZETTA_BINARY_BYTE'=> array('1180591620717411303424', 'ZiB'), + 'ZETTABYTE_SI' => array('1000000000000000000000', 'ZB.'), + 'YOTTABYTE' => array('1208925819614629174706176', 'YB'), + 'YOBIBYTE' => array('1208925819614629174706176', 'YiB'), + 'YOTTA_BINARY_BYTE'=> array('1208925819614629174706176', 'YiB'), + 'YOTTABYTE_SI' => array('1000000000000000000000000', 'YB.'), + 'STANDARD' => 'BYTE' + ); +} diff --git a/library/Zend/Measure/Capacitance.php b/library/Zend/Measure/Capacitance.php new file mode 100755 index 000000000..9399c1db8 --- /dev/null +++ b/library/Zend/Measure/Capacitance.php @@ -0,0 +1,98 @@ + array('1.0e+9', 'abfarad'), + 'AMPERE_PER_SECOND_VOLT' => array('1', 'A/sV'), + 'CENTIFARAD' => array('0.01', 'cF'), + 'COULOMB_PER_VOLT' => array('1', 'C/V'), + 'DECIFARAD' => array('0.1', 'dF'), + 'DEKAFARAD' => array('10', 'daF'), + 'ELECTROMAGNETIC_UNIT' => array('1.0e+9', 'capacity emu'), + 'ELECTROSTATIC_UNIT' => array('1.11265e-12', 'capacity esu'), + 'FARAD' => array('1', 'F'), + 'FARAD_INTERNATIONAL' => array('0.99951', 'F'), + 'GAUSSIAN' => array('1.11265e-12', 'G'), + 'GIGAFARAD' => array('1.0e+9', 'GF'), + 'HECTOFARAD' => array('100', 'hF'), + 'JAR' => array('1.11265e-9', 'jar'), + 'KILOFARAD' => array('1000', 'kF'), + 'MEGAFARAD' => array('1000000', 'MF'), + 'MICROFARAD' => array('0.000001', 'µF'), + 'MILLIFARAD' => array('0.001', 'mF'), + 'NANOFARAD' => array('1.0e-9', 'nF'), + 'PICOFARAD' => array('1.0e-12', 'pF'), + 'PUFF' => array('1.0e-12', 'pF'), + 'SECOND_PER_OHM' => array('1', 's/Ohm'), + 'STATFARAD' => array('1.11265e-12', 'statfarad'), + 'TERAFARAD' => array('1.0e+12', 'TF'), + 'STANDARD' => 'FARAD' + ); +} diff --git a/library/Zend/Measure/Cooking/Volume.php b/library/Zend/Measure/Cooking/Volume.php new file mode 100755 index 000000000..2eab0909a --- /dev/null +++ b/library/Zend/Measure/Cooking/Volume.php @@ -0,0 +1,190 @@ + array(array('' => '0.0037854118', '/' => '16', '' => '3.5'), '2.5th can'), + 'CAN_10' => array(array('' => '0.0037854118', '*' => '0.75'), '10th can'), + 'BARREL_WINE' => array('0.143201835', 'bbl'), + 'BARREL' => array('0.16365924', 'bbl'), + 'BARREL_US_DRY' => array(array('' => '26.7098656608', '/' => '231'), 'bbl'), + 'BARREL_US_FEDERAL' => array('0.1173477658', 'bbl'), + 'BARREL_US' => array('0.1192404717', 'bbl'), + 'BUCKET' => array('0.01818436', 'bucket'), + 'BUCKET_US' => array('0.018927059', 'bucket'), + 'BUSHEL' => array('0.03636872', 'bu'), + 'BUSHEL_US' => array('0.03523907', 'bu'), + 'CENTILITER' => array('0.00001', 'cl'), + 'COFFEE_SPOON' => array(array('' => '0.0037854118', '/' => '1536'), 'coffee spoon'), + 'CUBIC_CENTIMETER' => array('0.000001', 'cm³'), + 'CUBIC_DECIMETER' => array('0.001', 'dm³'), + 'CUBIC_FOOT' => array(array('' => '6.54119159', '/' => '231'), 'ft³'), + 'CUBIC_INCH' => array(array('' => '0.0037854118', '/' => '231'), 'in³'), + 'CUBIC_METER' => array('1', 'm³'), + 'CUBIC_MICROMETER' => array('1.0e-18', 'µm³'), + 'CUBIC_MILLIMETER' => array('1.0e-9', 'mm³'), + 'CUP_CANADA' => array('0.0002273045', 'c'), + 'CUP' => array('0.00025', 'c'), + 'CUP_US' => array(array('' => '0.0037854118', '/' => '16'), 'c'), + 'DASH' => array(array('' => '0.0037854118', '/' => '6144'), 'ds'), + 'DECILITER' => array('0.0001', 'dl'), + 'DEKALITER' => array('0.001', 'dal'), + 'DEMI' => array('0.00025', 'demi'), + 'DRAM' => array(array('' => '0.0037854118', '/' => '1024'), 'dr'), + 'DROP' => array(array('' => '0.0037854118', '/' => '73728'), 'ggt'), + 'FIFTH' => array('0.00075708236', 'fifth'), + 'GALLON' => array('0.00454609', 'gal'), + 'GALLON_US_DRY' => array('0.0044048838', 'gal'), + 'GALLON_US' => array('0.0037854118', 'gal'), + 'GILL' => array(array('' => '0.00454609', '/' => '32'), 'gi'), + 'GILL_US' => array(array('' => '0.0037854118', '/' => '32'), 'gi'), + 'HECTOLITER' => array('0.1', 'hl'), + 'HOGSHEAD' => array('0.28640367', 'hhd'), + 'HOGSHEAD_US' => array('0.2384809434', 'hhd'), + 'JIGGER' => array(array('' => '0.0037854118', '/' => '128', '*' => '1.5'), 'jigger'), + 'KILOLITER' => array('1', 'kl'), + 'LITER' => array('0.001', 'l'), + 'MEASURE' => array('0.0077', 'measure'), + 'MEGALITER' => array('1000', 'Ml'), + 'MICROLITER' => array('1.0e-9', 'µl'), + 'MILLILITER' => array('0.000001', 'ml'), + 'MINIM' => array(array('' => '0.00454609', '/' => '76800'), 'min'), + 'MINIM_US' => array(array('' => '0.0037854118','/' => '61440'), 'min'), + 'OUNCE' => array(array('' => '0.00454609', '/' => '160'), 'oz'), + 'OUNCE_US' => array(array('' => '0.0037854118', '/' => '128'), 'oz'), + 'PECK' => array('0.00909218', 'pk'), + 'PECK_US' => array('0.0088097676', 'pk'), + 'PINCH' => array(array('' => '0.0037854118', '/' => '12288'), 'pinch'), + 'PINT' => array(array('' => '0.00454609', '/' => '8'), 'pt'), + 'PINT_US_DRY' => array(array('' => '0.0044048838', '/' => '8'), 'pt'), + 'PINT_US' => array(array('' => '0.0037854118', '/' => '8'), 'pt'), + 'PIPE' => array('0.49097772', 'pipe'), + 'PIPE_US' => array('0.4769618868', 'pipe'), + 'PONY' => array(array('' => '0.0037854118', '/' => '128'), 'pony'), + 'QUART_GERMANY' => array('0.00114504', 'qt'), + 'QUART_ANCIENT' => array('0.00108', 'qt'), + 'QUART' => array(array('' => '0.00454609', '/' => '4'), 'qt'), + 'QUART_US_DRY' => array(array('' => '0.0044048838', '/' => '4'), 'qt'), + 'QUART_US' => array(array('' => '0.0037854118', '/' => '4'), 'qt'), + 'SHOT' => array(array('' => '0.0037854118', '/' => '128'), 'shot'), + 'TABLESPOON' => array('0.000015', 'tbsp'), + 'TABLESPOON_UK' => array(array('' => '0.00454609', '/' => '320'), 'tbsp'), + 'TABLESPOON_US' => array(array('' => '0.0037854118', '/' => '256'), 'tbsp'), + 'TEASPOON' => array('0.000005', 'tsp'), + 'TEASPOON_UK' => array(array('' => '0.00454609', '/' => '1280'), 'tsp'), + 'TEASPOON_US' => array(array('' => '0.0037854118', '/' => '768'), 'tsp'), + 'STANDARD' => 'CUBIC_METER' + ); +} diff --git a/library/Zend/Measure/Cooking/Weight.php b/library/Zend/Measure/Cooking/Weight.php new file mode 100755 index 000000000..e1ee11577 --- /dev/null +++ b/library/Zend/Measure/Cooking/Weight.php @@ -0,0 +1,70 @@ + array(array('' => '453.59237', '/' => '8'), 'half stk'), + 'STICK' => array(array('' => '453.59237', '/' => '4'), 'stk'), + 'CUP' => array(array('' => '453.59237', '/' => '2'), 'c'), + 'GRAM' => array('1', 'g'), + 'OUNCE' => array(array('' => '453.59237', '/' => '16'), 'oz'), + 'POUND' => array('453.59237', 'lb'), + 'TEASPOON' => array(array('' => '1.2503332', '' => '453.59237', '/' => '128'), 'tsp'), + 'TEASPOON_US' => array(array('' => '453.59237', '/' => '96'), 'tsp'), + 'TABLESPOON' => array(array('' => '1.2503332', '' => '453.59237', '/' => '32'), 'tbsp'), + 'TABLESPOON_US' => array(array('' => '453.59237', '/' => '32'), 'tbsp'), + 'STANDARD' => 'GRAM' + ); +} diff --git a/library/Zend/Measure/Current.php b/library/Zend/Measure/Current.php new file mode 100755 index 000000000..177fe6e0a --- /dev/null +++ b/library/Zend/Measure/Current.php @@ -0,0 +1,102 @@ + array('10', 'abampere'), + 'AMPERE' => array('1', 'A'), + 'BIOT' => array('10', 'Bi'), + 'CENTIAMPERE' => array('0.01', 'cA'), + 'COULOMB_PER_SECOND' => array('1', 'C/s'), + 'DECIAMPERE' => array('0.1', 'dA'), + 'DEKAAMPERE' => array('10', 'daA'), + 'ELECTROMAGNATIC_UNIT' => array('10', 'current emu'), + 'ELECTROSTATIC_UNIT' => array('3.335641e-10', 'current esu'), + 'FRANCLIN_PER_SECOND' => array('3.335641e-10', 'Fr/s'), + 'GAUSSIAN' => array('3.335641e-10', 'G current'), + 'GIGAAMPERE' => array('1.0e+9', 'GA'), + 'GILBERT' => array('0.79577472', 'Gi'), + 'HECTOAMPERE' => array('100', 'hA'), + 'KILOAMPERE' => array('1000', 'kA'), + 'MEGAAMPERE' => array('1000000', 'MA') , + 'MICROAMPERE' => array('0.000001', 'µA'), + 'MILLIAMPERE' => array('0.001', 'mA'), + 'NANOAMPERE' => array('1.0e-9', 'nA'), + 'PICOAMPERE' => array('1.0e-12', 'pA'), + 'SIEMENS_VOLT' => array('1', 'SV'), + 'STATAMPERE' => array('3.335641e-10', 'statampere'), + 'TERAAMPERE' => array('1.0e+12', 'TA'), + 'VOLT_PER_OHM' => array('1', 'V/Ohm'), + 'WATT_PER_VOLT' => array('1', 'W/V'), + 'WEBER_PER_HENRY' => array('1', 'Wb/H'), + 'STANDARD' => 'AMPERE' + ); +} diff --git a/library/Zend/Measure/Density.php b/library/Zend/Measure/Density.php new file mode 100755 index 000000000..f7023bb0d --- /dev/null +++ b/library/Zend/Measure/Density.php @@ -0,0 +1,206 @@ + array('2643', 'aluminium'), + 'COPPER' => array('8906', 'copper'), + 'GOLD' => array('19300', 'gold'), + 'GRAIN_PER_CUBIC_FOOT' => array('0.0022883519', 'gr/ft³'), + 'GRAIN_PER_CUBIC_INCH' => array('3.9542721', 'gr/in³'), + 'GRAIN_PER_CUBIC_YARD' => array('0.000084753774', 'gr/yd³'), + 'GRAIN_PER_GALLON' => array('0.014253768', 'gr/gal'), + 'GRAIN_PER_GALLON_US' => array('0.017118061', 'gr/gal'), + 'GRAM_PER_CUBIC_CENTIMETER' => array('1000', 'g/cm³'), + 'GRAM_PER_CUBIC_DECIMETER' => array('1', 'g/dm³'), + 'GRAM_PER_CUBIC_METER' => array('0.001', 'g/m³'), + 'GRAM_PER_LITER' => array('1', 'g/l'), + 'GRAM_PER_MILLILITER' => array('1000', 'g/ml'), + 'IRON' => array('7658', 'iron'), + 'KILOGRAM_PER_CUBIC_CENTIMETER' => array('1000000', 'kg/cm³'), + 'KILOGRAM_PER_CUBIC_DECIMETER' => array('1000', 'kg/dm³'), + 'KILOGRAM_PER_CUBIC_METER' => array('1', 'kg/m³'), + 'KILOGRAM_PER_CUBIC_MILLIMETER' => array('1000000000', 'kg/l'), + 'KILOGRAM_PER_LITER' => array('1000', 'kg/ml'), + 'KILOGRAM_PER_MILLILITER' => array('1000000', 'kg/ml'), + 'LEAD' => array('11370', 'lead'), + 'MEGAGRAM_PER_CUBIC_CENTIMETER' => array('1.0e+9', 'Mg/cm³'), + 'MEGAGRAM_PER_CUBIC_DECIMETER' => array('1000000', 'Mg/dm³'), + 'MEGAGRAM_PER_CUBIC_METER' => array('1000', 'Mg/m³'), + 'MEGAGRAM_PER_LITER' => array('1000000', 'Mg/l'), + 'MEGAGRAM_PER_MILLILITER' => array('1.0e+9', 'Mg/ml'), + 'MICROGRAM_PER_CUBIC_CENTIMETER' => array('0.001', 'µg/cm³'), + 'MICROGRAM_PER_CUBIC_DECIMETER' => array('1.0e-6', 'µg/dm³'), + 'MICROGRAM_PER_CUBIC_METER' => array('1.0e-9', 'µg/m³'), + 'MICROGRAM_PER_LITER' => array('1.0e-6', 'µg/l'), + 'MICROGRAM_PER_MILLILITER' => array('0.001', 'µg/ml'), + 'MILLIGRAM_PER_CUBIC_CENTIMETER' => array('1', 'mg/cm³'), + 'MILLIGRAM_PER_CUBIC_DECIMETER' => array('0.001', 'mg/dm³'), + 'MILLIGRAM_PER_CUBIC_METER' => array('0.000001', 'mg/m³'), + 'MILLIGRAM_PER_LITER' => array('0.001', 'mg/l'), + 'MILLIGRAM_PER_MILLILITER' => array('1', 'mg/ml'), + 'OUNCE_PER_CUBIC_FOOT' => array('1.001154', 'oz/ft³'), + 'OUNCE_PER_CUBIC_FOOT_TROY' => array('1.0984089', 'oz/ft³'), + 'OUNCE_PER_CUBIC_INCH' => array('1729.994', 'oz/in³'), + 'OUNCE_PER_CUBIC_INCH_TROY' => array('1898.0506', 'oz/in³'), + 'OUNCE_PER_CUBIC_YARD' => array('0.037079776', 'oz/yd³'), + 'OUNCE_PER_CUBIC_YARD_TROY' => array('0.040681812', 'oz/yd³'), + 'OUNCE_PER_GALLON' => array('6.2360233', 'oz/gal'), + 'OUNCE_PER_GALLON_US' => array('7.4891517', 'oz/gal'), + 'OUNCE_PER_GALLON_TROY' => array('6.8418084', 'oz/gal'), + 'OUNCE_PER_GALLON_US_TROY' => array('8.2166693', 'oz/gal'), + 'POUND_PER_CIRCULAR_MIL_FOOT' => array('2.9369291', 'lb/cmil ft'), + 'POUND_PER_CUBIC_FOOT' => array('16.018463', 'lb/in³'), + 'POUND_PER_CUBIC_INCH' => array('27679.905', 'lb/in³'), + 'POUND_PER_CUBIC_YARD' => array('0.59327642', 'lb/yd³'), + 'POUND_PER_GALLON' => array('99.776373', 'lb/gal'), + 'POUND_PER_KILOGALLON' => array('0.099776373', 'lb/kgal'), + 'POUND_PER_MEGAGALLON' => array('0.000099776373', 'lb/Mgal'), + 'POUND_PER_GALLON_US' => array('119.82643', 'lb/gal'), + 'POUND_PER_KILOGALLON_US' => array('0.11982643', 'lb/kgal'), + 'POUND_PER_MEGAGALLON_US' => array('0.00011982643', 'lb/Mgal'), + 'SILVER' => array('10510', 'silver'), + 'SLUG_PER_CUBIC_FOOT' => array('515.37882', 'slug/ft³'), + 'SLUG_PER_CUBIC_INCH' => array('890574.6', 'slug/in³'), + 'SLUG_PER_CUBIC_YARD' => array('19.088104', 'slug/yd³'), + 'SLUG_PER_GALLON' => array('3210.2099', 'slug/gal'), + 'SLUG_PER_GALLON_US' => array('3855.3013', 'slug/gal'), + 'TON_PER_CUBIC_FOOT_LONG' => array('35881.358', 't/ft³'), + 'TON_PER_CUBIC_FOOT' => array('32036.927', 't/ft³'), + 'TON_PER_CUBIC_INCH_LONG' => array('6.2202987e+7', 't/in³'), + 'TON_PER_CUBIC_INCH' => array('5.5359809e+7', 't/in³'), + 'TON_PER_CUBIC_YARD_LONG' => array('1328.9392', 't/yd³'), + 'TON_PER_CUBIC_YARD' => array('1186.5528', 't/yd³'), + 'TON_PER_GALLON_LONG' => array('223499.07', 't/gal'), + 'TON_PER_GALLON_US_LONG' => array('268411.2', 't/gal'), + 'TON_PER_GALLON' => array('199522.75', 't/gal'), + 'TON_PER_GALLON_US' => array('239652.85', 't/gal'), + 'TONNE_PER_CUBIC_CENTIMETER' => array('1.0e+9', 't/cm³'), + 'TONNE_PER_CUBIC_DECIMETER' => array('1000000', 't/dm³'), + 'TONNE_PER_CUBIC_METER' => array('1000', 't/m³'), + 'TONNE_PER_LITER' => array('1000000', 't/l'), + 'TONNE_PER_MILLILITER' => array('1.0e+9', 't/ml'), + 'WATER' => array('1000', 'water'), + 'STANDARD' => 'KILOGRAM_PER_CUBIC_METER' + ); +} diff --git a/library/Zend/Measure/Energy.php b/library/Zend/Measure/Energy.php new file mode 100755 index 000000000..9a3049668 --- /dev/null +++ b/library/Zend/Measure/Energy.php @@ -0,0 +1,252 @@ + array('1.0e-18', 'aJ'), + 'BOARD_OF_TRADE_UNIT' => array('3600000', 'BOTU'), + 'BTU' => array('1055.0559', 'Btu'), + 'BTU_TERMOCHEMICAL' => array('1054.3503', 'Btu'), + 'CALORIE' => array('4.1868', 'cal'), + 'CALORIE_15C' => array('6.1858', 'cal'), + 'CALORIE_NUTRITIONAL' => array('4186.8', 'cal'), + 'CALORIE_THERMOCHEMICAL' => array('4.184', 'cal'), + 'CELSIUS_HEAT_UNIT' => array('1899.1005', 'Chu'), + 'CENTIJOULE' => array('0.01', 'cJ'), + 'CHEVAL_VAPEUR_HEURE' => array('2647795.5', 'cv heure'), + 'DECIJOULE' => array('0.1', 'dJ'), + 'DEKAJOULE' => array('10', 'daJ'), + 'DEKAWATT_HOUR' => array('36000', 'daWh'), + 'DEKATHERM' => array('1.055057e+9', 'dathm'), + 'ELECTRONVOLT' => array('1.6021773e-19', 'eV'), + 'ERG' => array('0.0000001', 'erg'), + 'EXAJOULE' => array('1.0e+18', 'EJ'), + 'EXAWATT_HOUR' => array('3.6e+21', 'EWh'), + 'FEMTOJOULE' => array('1.0e-15', 'fJ'), + 'FOOT_POUND' => array('1.3558179', 'ft lb'), + 'FOOT_POUNDAL' => array('0.04214011', 'ft poundal'), + 'GALLON_UK_AUTOMOTIVE' => array('158237172', 'gal car gasoline'), + 'GALLON_US_AUTOMOTIVE' => array('131760000', 'gal car gasoline'), + 'GALLON_UK_AVIATION' => array('158237172', 'gal jet gasoline'), + 'GALLON_US_AVIATION' => array('131760000', 'gal jet gasoline'), + 'GALLON_UK_DIESEL' => array('175963194', 'gal diesel'), + 'GALLON_US_DIESEL' => array('146520000', 'gal diesel'), + 'GALLON_UK_DISTILATE' => array('175963194', 'gal destilate fuel'), + 'GALLON_US_DISTILATE' => array('146520000', 'gal destilate fuel'), + 'GALLON_UK_KEROSINE_JET' => array('170775090', 'gal jet kerosine'), + 'GALLON_US_KEROSINE_JET' => array('142200000', 'gal jet kerosine'), + 'GALLON_UK_LPG' => array('121005126.0865275', 'gal lpg'), + 'GALLON_US_LPG' => array('100757838.45', 'gal lpg'), + 'GALLON_UK_NAPHTA' => array('160831224', 'gal jet fuel'), + 'GALLON_US_NAPHTA' => array('133920000', 'gal jet fuel'), + 'GALLON_UK_KEROSINE' => array('170775090', 'gal kerosine'), + 'GALLON_US_KEROSINE' => array('142200000', 'gal kerosine'), + 'GALLON_UK_RESIDUAL' => array('189798138', 'gal residual fuel'), + 'GALLON_US_RESIDUAL' => array('158040000', 'gal residual fuel'), + 'GIGAELECTRONVOLT' => array('1.6021773e-10', 'GeV'), + 'GIGACALORIE' => array('4186800000', 'Gcal'), + 'GIGACALORIE_15C' => array('4185800000', 'Gcal'), + 'GIGAJOULE' => array('1.0e+9', 'GJ'), + 'GIGAWATT_HOUR' => array('3.6e+12', 'GWh'), + 'GRAM_CALORIE' => array('4.1858', 'g cal'), + 'HARTREE' => array('4.3597482e-18', 'Eh'), + 'HECTOJOULE' => array('100', 'hJ'), + 'HECTOWATT_HOUR' => array('360000', 'hWh'), + 'HORSEPOWER_HOUR' => array('2684519.5', 'hph'), + 'HUNDRED_CUBIC_FOOT_GAS' => array('108720000', 'hundred ft� gas'), + 'INCH_OUNCE' => array('0.0070615518', 'in oc'), + 'INCH_POUND' => array('0.112984825', 'in lb'), + 'JOULE' => array('1', 'J'), + 'KILOCALORIE_15C' => array('4185.8', 'kcal'), + 'KILOCALORIE' => array('4186','8', 'kcal'), + 'KILOCALORIE_THERMOCHEMICAL' => array('4184', 'kcal'), + 'KILOELECTRONVOLT' => array('1.6021773e-16', 'keV'), + 'KILOGRAM_CALORIE' => array('4185.8', 'kg cal'), + 'KILOGRAM_FORCE_METER' => array('9.80665', 'kgf m'), + 'KILOJOULE' => array('1000', 'kJ'), + 'KILOPOND_METER' => array('9.80665', 'kp m'), + 'KILOTON' => array('4.184e+12', 'kt'), + 'KILOWATT_HOUR' => array('3600000', 'kWh'), + 'LITER_ATMOSPHERE' => array('101.325', 'l atm'), + 'MEGAELECTRONVOLT' => array('1.6021773e-13', 'MeV'), + 'MEGACALORIE' => array('4186800', 'Mcal'), + 'MEGACALORIE_15C' => array('4185800', 'Mcal'), + 'MEGAJOULE' => array('1000000', 'MJ'), + 'MEGALERG' => array('0.1', 'megalerg'), + 'MEGATON' => array('4.184e+15', 'Mt'), + 'MEGAWATTHOUR' => array('3.6e+9', 'MWh'), + 'METER_KILOGRAM_FORCE' => array('9.80665', 'm kgf'), + 'MICROJOULE' => array('0.000001', '�J'), + 'MILLIJOULE' => array('0.001', 'mJ'), + 'MYRIAWATT_HOUR' => array('3.6e+7', 'myWh'), + 'NANOJOULE' => array('1.0e-9', 'nJ'), + 'NEWTON_METER' => array('1', 'Nm'), + 'PETAJOULE' => array('1.0e+15', 'PJ'), + 'PETAWATTHOUR' => array('3.6e+18', 'PWh'), + 'PFERDESTAERKENSTUNDE' => array('2647795.5', 'ps h'), + 'PICOJOULE' => array('1.0e-12', 'pJ'), + 'Q_UNIT' => array('1.0550559e+21', 'Q unit'), + 'QUAD' => array('1.0550559e+18', 'quad'), + 'TERAELECTRONVOLT' => array('1.6021773e-7', 'TeV'), + 'TERAJOULE' => array('1.0e+12', 'TJ'), + 'TERAWATTHOUR' => array('3.6e+15', 'TWh'), + 'THERM' => array('1.0550559e+8', 'thm'), + 'THERM_US' => array('1.054804e+8', 'thm'), + 'THERMIE' => array('4185800', 'th'), + 'TON' => array('4.184e+9', 'T explosive'), + 'TONNE_COAL' => array('2.93076e+10', 'T coal'), + 'TONNE_OIL' => array('4.1868e+10', 'T oil'), + 'WATTHOUR' => array('3600', 'Wh'), + 'WATTSECOND' => array('1', 'Ws'), + 'YOCTOJOULE' => array('1.0e-24', 'yJ'), + 'YOTTAJOULE' => array('1.0e+24', 'YJ'), + 'YOTTAWATTHOUR' => array('3.6e+27', 'YWh'), + 'ZEPTOJOULE' => array('1.0e-21', 'zJ'), + 'ZETTAJOULE' => array('1.0e+21', 'ZJ'), + 'ZETTAWATTHOUR' => array('3.6e+24', 'ZWh'), + 'STANDARD' => 'JOULE' + ); +} diff --git a/library/Zend/Measure/Exception.php b/library/Zend/Measure/Exception.php new file mode 100755 index 000000000..f54e356a2 --- /dev/null +++ b/library/Zend/Measure/Exception.php @@ -0,0 +1,37 @@ + array(array('' => '0.00001', '/' => '86400'), 'cg/day'), + 'CENTIGRAM_PER_HOUR' => array(array('' => '0.00001', '/' => '3600'), 'cg/h'), + 'CENTIGRAM_PER_MINUTE' => array(array('' => '0.00001', '/' => '60'), 'cg/m'), + 'CENTIGRAM_PER_SECOND' => array('0.00001', 'cg/s'), + 'GRAM_PER_DAY' => array(array('' => '0.001', '/' => '86400'), 'g/day'), + 'GRAM_PER_HOUR' => array(array('' => '0.001', '/' => '3600'), 'g/h'), + 'GRAM_PER_MINUTE' => array(array('' => '0.001', '/' => '60'), 'g/m'), + 'GRAM_PER_SECOND' => array('0.001', 'g/s'), + 'KILOGRAM_PER_DAY' => array(array('' => '1', '/' => '86400'), 'kg/day'), + 'KILOGRAM_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'kg/h'), + 'KILOGRAM_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'kg/m'), + 'KILOGRAM_PER_SECOND' => array('1', 'kg/s'), + 'MILLIGRAM_PER_DAY' => array(array('' => '0.000001', '/' => '86400'), 'mg/day'), + 'MILLIGRAM_PER_HOUR' => array(array('' => '0.000001', '/' => '3600'), 'mg/h'), + 'MILLIGRAM_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'), 'mg/m'), + 'MILLIGRAM_PER_SECOND' => array('0.000001', 'mg/s'), + 'OUNCE_PER_DAY' => array(array('' => '0.0283495', '/' => '86400'), 'oz/day'), + 'OUNCE_PER_HOUR' => array(array('' => '0.0283495', '/' => '3600'), 'oz/h'), + 'OUNCE_PER_MINUTE' => array(array('' => '0.0283495', '/' => '60'), 'oz/m'), + 'OUNCE_PER_SECOND' => array('0.0283495', 'oz/s'), + 'POUND_PER_DAY' => array(array('' => '0.453592', '/' => '86400'), 'lb/day'), + 'POUND_PER_HOUR' => array(array('' => '0.453592', '/' => '3600'), 'lb/h'), + 'POUND_PER_MINUTE' => array(array('' => '0.453592', '/' => '60'), 'lb/m'), + 'POUND_PER_SECOND' => array('0.453592', 'lb/s'), + 'TON_LONG_PER_DAY' => array(array('' => '1016.04608', '/' => '86400'), 't/day'), + 'TON_LONG_PER_HOUR' => array(array('' => '1016.04608', '/' => '3600'), 't/h'), + 'TON_LONG_PER_MINUTE' => array(array('' => '1016.04608', '/' => '60'), 't/m'), + 'TON_LONG_PER_SECOND' => array('1016.04608', 't/s'), + 'TON_PER_DAY' => array(array('' => '1000', '/' => '86400'), 't/day'), + 'TON_PER_HOUR' => array(array('' => '1000', '/' => '3600'), 't/h'), + 'TON_PER_MINUTE' => array(array('' => '1000', '/' => '60'), 't/m'), + 'TON_PER_SECOND' => array('1000', 't/s'), + 'TON_SHORT_PER_DAY' => array(array('' => '907.184', '/' => '86400'), 't/day'), + 'TON_SHORT_PER_HOUR' => array(array('' => '907.184', '/' => '3600'), 't/h'), + 'TON_SHORT_PER_MINUTE' => array(array('' => '907.184', '/' => '60'), 't/m'), + 'TON_SHORT_PER_SECOND' => array('907.184', 't/s'), + 'STANDARD' => 'KILOGRAM_PER_SECOND' + ); +} diff --git a/library/Zend/Measure/Flow/Mole.php b/library/Zend/Measure/Flow/Mole.php new file mode 100755 index 000000000..86ac90397 --- /dev/null +++ b/library/Zend/Measure/Flow/Mole.php @@ -0,0 +1,90 @@ + array(array('' => '0.01', '/' => '86400'), 'cmol/day'), + 'CENTIMOLE_PER_HOUR' => array(array('' => '0.01', '/' => '3600'), 'cmol/h'), + 'CENTIMOLE_PER_MINUTE' => array(array('' => '0.01', '/' => '60'), 'cmol/m'), + 'CENTIMOLE_PER_SECOND' => array('0.01', 'cmol/s'), + 'MEGAMOLE_PER_DAY' => array(array('' => '1000000', '/' => '86400'), 'Mmol/day'), + 'MEGAMOLE_PER_HOUR' => array(array('' => '1000000', '/' => '3600'), 'Mmol/h'), + 'MEGAMOLE_PER_MINUTE' => array(array('' => '1000000', '/' => '60'), 'Mmol/m'), + 'MEGAMOLE_PER_SECOND' => array('1000000', 'Mmol/s'), + 'MICROMOLE_PER_DAY' => array(array('' => '0.000001', '/' => '86400'), 'µmol/day'), + 'MICROMOLE_PER_HOUR' => array(array('' => '0.000001', '/' => '3600'), 'µmol/h'), + 'MICROMOLE_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'), 'µmol/m'), + 'MICROMOLE_PER_SECOND' => array('0.000001', 'µmol/s'), + 'MILLIMOLE_PER_DAY' => array(array('' => '0.001', '/' => '86400'), 'mmol/day'), + 'MILLIMOLE_PER_HOUR' => array(array('' => '0.001', '/' => '3600'), 'mmol/h'), + 'MILLIMOLE_PER_MINUTE' => array(array('' => '0.001', '/' => '60'), 'mmol/m'), + 'MILLIMOLE_PER_SECOND' => array('0.001', 'mmol/s'), + 'MOLE_PER_DAY' => array(array('' => '1', '/' => '86400'), 'mol/day'), + 'MOLE_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'mol/h'), + 'MOLE_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'mol/m'), + 'MOLE_PER_SECOND' => array('1', 'mol/s'), + 'STANDARD' => 'MOLE_PER_SECOND' + ); +} diff --git a/library/Zend/Measure/Flow/Volume.php b/library/Zend/Measure/Flow/Volume.php new file mode 100755 index 000000000..d8d2572f2 --- /dev/null +++ b/library/Zend/Measure/Flow/Volume.php @@ -0,0 +1,402 @@ + array(array('' => '1233.48184', '/' => '86400'), 'ac ft/day'), + 'ACRE_FOOT_PER_HOUR' => array(array('' => '1233.48184', '/' => '3600'), 'ac ft/h'), + 'ACRE_FOOT_PER_MINUTE' => array(array('' => '1233.48184', '/' => '60'), 'ac ft/m'), + 'ACRE_FOOT_PER_SECOND' => array('1233.48184', 'ac ft/s'), + 'ACRE_FOOT_SURVEY_PER_DAY' => array(array('' => '1233.48924', '/' => '86400'), 'ac ft/day'), + 'ACRE_FOOT_SURVEY_PER_HOUR' => array(array('' => '1233.48924', '/' => '3600'), 'ac ft/h'), + 'ACRE_FOOT_SURVEY_PER_MINUTE' => array(array('' => '1233.48924', '/' => '60'), 'ac ft/m'), + 'ACRE_FOOT_SURVEY_PER_SECOND' => array('1233.48924', 'ac ft/s'), + 'ACRE_INCH_PER_DAY' => array(array('' => '1233.48184', '/' => '1036800'), 'ac in/day'), + 'ACRE_INCH_PER_HOUR' => array(array('' => '1233.48184', '/' => '43200'), 'ac in/h'), + 'ACRE_INCH_PER_MINUTE' => array(array('' => '1233.48184', '/' => '720'), 'ac in/m'), + 'ACRE_INCH_PER_SECOND' => array(array('' => '1233.48184', '/' => '12'), 'ac in/s'), + 'ACRE_INCH_SURVEY_PER_DAY' => array(array('' => '1233.48924', '/' => '1036800'), 'ac in/day'), + 'ACRE_INCH_SURVEY_PER_HOUR' => array(array('' => '1233.48924', '/' => '43200'), 'ac in/h'), + 'ACRE_INCH_SURVEY_PER_MINUTE' => array(array('' => '1233.48924', '/' => '720'), 'ac in /m'), + 'ACRE_INCH_SURVEY_PER_SECOND' => array(array('' => '1233.48924', '/' => '12'), 'ac in/s'), + 'BARREL_PETROLEUM_PER_DAY' => array(array('' => '0.1589872956', '/' => '86400'), 'bbl/day'), + 'BARREL_PETROLEUM_PER_HOUR' => array(array('' => '0.1589872956', '/' => '3600'), 'bbl/h'), + 'BARREL_PETROLEUM_PER_MINUTE' => array(array('' => '0.1589872956', '/' => '60'), 'bbl/m'), + 'BARREL_PETROLEUM_PER_SECOND' => array('0.1589872956', 'bbl/s'), + 'BARREL_PER_DAY' => array(array('' => '0.16365924', '/' => '86400'), 'bbl/day'), + 'BARREL_PER_HOUR' => array(array('' => '0.16365924', '/' => '3600'), 'bbl/h'), + 'BARREL_PER_MINUTE' => array(array('' => '0.16365924', '/' => '60'), 'bbl/m'), + 'BARREL_PER_SECOND' => array('0.16365924', 'bbl/s'), + 'BARREL_US_PER_DAY' => array(array('' => '0.1192404717', '/' => '86400'), 'bbl/day'), + 'BARREL_US_PER_HOUR' => array(array('' => '0.1192404717', '/' => '3600'), 'bbl/h'), + 'BARREL_US_PER_MINUTE' => array(array('' => '0.1192404717', '/' => '60'), 'bbl/m'), + 'BARREL_US_PER_SECOND' => array('0.1192404717', 'bbl/s'), + 'BARREL_WINE_PER_DAY' => array(array('' => '0.1173477658', '/' => '86400'), 'bbl/day'), + 'BARREL_WINE_PER_HOUR' => array(array('' => '0.1173477658', '/' => '3600'), 'bbl/h'), + 'BARREL_WINE_PER_MINUTE' => array(array('' => '0.1173477658', '/' => '60'), 'bbl/m'), + 'BARREL_WINE_PER_SECOND' => array('0.1173477658', 'bbl/s'), + 'BARREL_BEER_PER_DAY' => array(array('' => '0.1173477658', '/' => '86400'), 'bbl/day'), + 'BARREL_BEER_PER_HOUR' => array(array('' => '0.1173477658', '/' => '3600'), 'bbl/h'), + 'BARREL_BEER_PER_MINUTE' => array(array('' => '0.1173477658', '/' => '60'), 'bbl/m'), + 'BARREL_BEER_PER_SECOND' => array('0.1173477658', 'bbl/s'), + 'BILLION_CUBIC_FOOT_PER_DAY' => array(array('' => '28316847', '/' => '86400'), 'bn ft³/day'), + 'BILLION_CUBIC_FOOT_PER_HOUR' => array(array('' => '28316847', '/' => '3600'), 'bn ft³/h'), + 'BILLION_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28316847', '/' => '60'), 'bn ft³/m'), + 'BILLION_CUBIC_FOOT_PER_SECOND' => array('28316847', 'bn ft³/s'), + 'CENTILITER_PER_DAY' => array(array('' => '0.00001', '/' => '86400'), 'cl/day'), + 'CENTILITER_PER_HOUR' => array(array('' => '0.00001', '/' => '3600'), 'cl/h'), + 'CENTILITER_PER_MINUTE' => array(array('' => '0.00001', '/' => '60'), 'cl/m'), + 'CENTILITER_PER_SECOND' => array('0.00001', 'cl/s'), + 'CUBEM_PER_DAY' => array(array('' => '4168181830', '/' => '86400'), 'cubem/day'), + 'CUBEM_PER_HOUR' => array(array('' => '4168181830', '/' => '3600'), 'cubem/h'), + 'CUBEM_PER_MINUTE' => array(array('' => '4168181830', '/' => '60'), 'cubem/m'), + 'CUBEM_PER_SECOND' => array('4168181830', 'cubem/s'), + 'CUBIC_CENTIMETER_PER_DAY' => array(array('' => '0.000001', '/' => '86400'), 'cm³/day'), + 'CUBIC_CENTIMETER_PER_HOUR' => array(array('' => '0.000001', '/' => '3600'), 'cm³/h'), + 'CUBIC_CENTIMETER_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'), 'cm³/m'), + 'CUBIC_CENTIMETER_PER_SECOND' => array('0.000001', 'cm³/s'), + 'CUBIC_DECIMETER_PER_DAY' => array(array('' => '0.001', '/' => '86400'), 'dm³/day'), + 'CUBIC_DECIMETER_PER_HOUR' => array(array('' => '0.001', '/' => '3600'), 'dm³/h'), + 'CUBIC_DECIMETER_PER_MINUTE' => array(array('' => '0.001', '/' => '60'), 'dm³/m'), + 'CUBIC_DECIMETER_PER_SECOND' => array('0.001', 'dm³/s'), + 'CUBIC_DEKAMETER_PER_DAY' => array(array('' => '1000', '/' => '86400'), 'dam³/day'), + 'CUBIC_DEKAMETER_PER_HOUR' => array(array('' => '1000', '/' => '3600'), 'dam³/h'), + 'CUBIC_DEKAMETER_PER_MINUTE' => array(array('' => '1000', '/' => '60'), 'dam³/m'), + 'CUBIC_DEKAMETER_PER_SECOND' => array('1000', 'dam³/s'), + 'CUBIC_FOOT_PER_DAY' => array(array('' => '0.028316847', '/' => '86400'), 'ft³/day'), + 'CUBIC_FOOT_PER_HOUR' => array(array('' => '0.028316847', '/' => '3600'), 'ft³/h'), + 'CUBIC_FOOT_PER_MINUTE' => array(array('' => '0.028316847', '/' => '60'), 'ft³/m'), + 'CUBIC_FOOT_PER_SECOND' => array('0.028316847', 'ft³/s'), + 'CUBIC_INCH_PER_DAY' => array(array('' => '0.028316847', '/' => '149299200'), 'in³/day'), + 'CUBIC_INCH_PER_HOUR' => array(array('' => '0.028316847', '/' => '6220800'), 'in³/h'), + 'CUBIC_INCH_PER_MINUTE' => array(array('' => '0.028316847', '/' => '103680'), 'in³/m'), + 'CUBIC_INCH_PER_SECOND' => array('0.028316847', 'in³/s'), + 'CUBIC_KILOMETER_PER_DAY' => array(array('' => '1000000000', '/' => '86400'), 'km³/day'), + 'CUBIC_KILOMETER_PER_HOUR' => array(array('' => '1000000000', '/' => '3600'), 'km³/h'), + 'CUBIC_KILOMETER_PER_MINUTE' => array(array('' => '1000000000', '/' => '60'), 'km³/m'), + 'CUBIC_KILOMETER_PER_SECOND' => array('1000000000', 'km³/s'), + 'CUBIC_METER_PER_DAY' => array(array('' => '1', '/' => '86400'), 'm³/day'), + 'CUBIC_METER_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'm³/h'), + 'CUBIC_METER_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'm³/m'), + 'CUBIC_METER_PER_SECOND' => array('1', 'm³/s'), + 'CUBIC_MILE_PER_DAY' => array(array('' => '4168181830', '/' => '86400'), 'mi³/day'), + 'CUBIC_MILE_PER_HOUR' => array(array('' => '4168181830', '/' => '3600'), 'mi³/h'), + 'CUBIC_MILE_PER_MINUTE' => array(array('' => '4168181830', '/' => '60'), 'mi³/m'), + 'CUBIC_MILE_PER_SECOND' => array('4168181830', 'mi³/s'), + 'CUBIC_MILLIMETER_PER_DAY' => array(array('' => '0.000000001', '/' => '86400'), 'mm³/day'), + 'CUBIC_MILLIMETER_PER_HOUR' => array(array('' => '0.000000001', '/' => '3600'), 'mm³/h'), + 'CUBIC_MILLIMETER_PER_MINUTE' => array(array('' => '0.000000001', '/' => '60'), 'mm³/m'), + 'CUBIC_MILLIMETER_PER_SECOND' => array('0.000000001', 'mm³/s'), + 'CUBIC_YARD_PER_DAY' => array(array('' => '0.764554869', '/' => '86400'), 'yd³/day'), + 'CUBIC_YARD_PER_HOUR' => array(array('' => '0.764554869', '/' => '3600'), 'yd³/h'), + 'CUBIC_YARD_PER_MINUTE' => array(array('' => '0.764554869', '/' => '60'), 'yd³/m'), + 'CUBIC_YARD_PER_SECOND' => array('0.764554869', 'yd³/s'), + 'CUSEC' => array('0.028316847', 'cusec'), + 'DECILITER_PER_DAY' => array(array('' => '0.0001', '/' => '86400'), 'dl/day'), + 'DECILITER_PER_HOUR' => array(array('' => '0.0001', '/' => '3600'), 'dl/h'), + 'DECILITER_PER_MINUTE' => array(array('' => '0.0001', '/' => '60'), 'dl/m'), + 'DECILITER_PER_SECOND' => array('0.0001', 'dl/s'), + 'DEKALITER_PER_DAY' => array(array('' => '0.01', '/' => '86400'), 'dal/day'), + 'DEKALITER_PER_HOUR' => array(array('' => '0.01', '/' => '3600'), 'dal/h'), + 'DEKALITER_PER_MINUTE' => array(array('' => '0.01', '/' => '60'), 'dal/m'), + 'DEKALITER_PER_SECOND' => array('0.01', 'dal/s'), + 'GALLON_PER_DAY' => array(array('' => '0.00454609', '/' => '86400'), 'gal/day'), + 'GALLON_PER_HOUR' => array(array('' => '0.00454609', '/' => '3600'), 'gal/h'), + 'GALLON_PER_MINUTE' => array(array('' => '0.00454609', '/' => '60'), 'gal/m'), + 'GALLON_PER_SECOND' => array('0.00454609', 'gal/s'), + 'GALLON_US_PER_DAY' => array(array('' => '0.0037854118', '/' => '86400'), 'gal/day'), + 'GALLON_US_PER_HOUR' => array(array('' => '0.0037854118', '/' => '3600'), 'gal/h'), + 'GALLON_US_PER_MINUTE' => array(array('' => '0.0037854118', '/' => '60'), 'gal/m'), + 'GALLON_US_PER_SECOND' => array('0.0037854118', 'gal/s'), + 'HECTARE_METER_PER_DAY' => array(array('' => '10000', '/' => '86400'), 'ha m/day'), + 'HECTARE_METER_PER_HOUR' => array(array('' => '10000', '/' => '3600'), 'ha m/h'), + 'HECTARE_METER_PER_MINUTE' => array(array('' => '10000', '/' => '60'), 'ha m/m'), + 'HECTARE_METER_PER_SECOND' => array('10000', 'ha m/s'), + 'HECTOLITER_PER_DAY' => array(array('' => '0.1', '/' => '86400'), 'hl/day'), + 'HECTOLITER_PER_HOUR' => array(array('' => '0.1', '/' => '3600'), 'hl/h'), + 'HECTOLITER_PER_MINUTE' => array(array('' => '0.1', '/' => '60'), 'hl/m'), + 'HECTOLITER_PER_SECOND' => array('0.1', 'hl/s'), + 'KILOLITER_PER_DAY' => array(array('' => '1', '/' => '86400'), 'kl/day'), + 'KILOLITER_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'kl/h'), + 'KILOLITER_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'kl/m'), + 'KILOLITER_PER_SECOND' => array('1', 'kl/s'), + 'LAMBDA_PER_DAY' => array(array('' => '0.000000001', '/' => '86400'), 'λ/day'), + 'LAMBDA_PER_HOUR' => array(array('' => '0.000000001', '/' => '3600'), 'λ/h'), + 'LAMBDA_PER_MINUTE' => array(array('' => '0.000000001', '/' => '60'), 'λ/m'), + 'LAMBDA_PER_SECOND' => array('0.000000001', 'λ/s'), + 'LITER_PER_DAY' => array(array('' => '0.001', '/' => '86400'), 'l/day'), + 'LITER_PER_HOUR' => array(array('' => '0.001', '/' => '3600'), 'l/h'), + 'LITER_PER_MINUTE' => array(array('' => '0.001', '/' => '60'), 'l/m'), + 'LITER_PER_SECOND' => array('0.001', 'l/s'), + 'MILLILITER_PER_DAY' => array(array('' => '0.000001', '/' => '86400'), 'ml/day'), + 'MILLILITER_PER_HOUR' => array(array('' => '0.000001', '/' => '3600'), 'ml/h'), + 'MILLILITER_PER_MINUTE' => array(array('' => '0.000001', '/' => '60'), 'ml/m'), + 'MILLILITER_PER_SECOND' => array('0.000001', 'ml/s'), + 'MILLION_ACRE_FOOT_PER_DAY' => array(array('' => '1233481840', '/' => '86400'), 'million ac ft/day'), + 'MILLION_ACRE_FOOT_PER_HOUR' => array(array('' => '1233481840', '/' => '3600'), 'million ac ft/h'), + 'MILLION_ACRE_FOOT_PER_MINUTE' => array(array('' => '1233481840', '/' => '60'), 'million ac ft/m'), + 'MILLION_ACRE_FOOT_PER_SECOND' => array('1233481840', 'million ac ft/s'), + 'MILLION_CUBIC_FOOT_PER_DAY' => array(array('' => '28316.847', '/' => '86400'), 'million ft³/day'), + 'MILLION_CUBIC_FOOT_PER_HOUR' => array(array('' => '28316.847', '/' => '3600'), 'million ft³/h'), + 'MILLION_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28316.847', '/' => '60'), 'million ft³/m'), + 'MILLION_CUBIC_FOOT_PER_SECOND' => array('28316.847', 'million ft³/s'), + 'MILLION_GALLON_PER_DAY' => array(array('' => '4546.09', '/' => '86400'), 'million gal/day'), + 'MILLION_GALLON_PER_HOUR' => array(array('' => '4546.09', '/' => '3600'), 'million gal/h'), + 'MILLION_GALLON_PER_MINUTE' => array(array('' => '4546.09', '/' => '60'), 'million gal/m'), + 'MILLION_GALLON_PER_SECOND' => array('4546.09', 'million gal/s'), + 'MILLION_GALLON_US_PER_DAY' => array(array('' => '3785.4118', '/' => '86400'), 'million gal/day'), + 'MILLION_GALLON_US_PER_HOUR' => array(array('' => '3785.4118', '/' => '3600'), 'million gal/h'), + 'MILLION_GALLON_US_PER_MINUTE'=> array(array('' => '3785.4118', '/' => '60'), 'million gal/m'), + 'MILLION_GALLON_US_PER_SECOND'=> array('3785.4118', 'million gal/s'), + 'MINERS_INCH_AZ' => array(array('' => '0.0424752705', '/' => '60'), "miner's inch"), + 'MINERS_INCH_CA' => array(array('' => '0.0424752705', '/' => '60'), "miner's inch"), + 'MINERS_INCH_OR' => array(array('' => '0.0424752705', '/' => '60'), "miner's inch"), + 'MINERS_INCH_CO' => array(array('' => '0.0442450734375', '/' => '60'), "miner's inch"), + 'MINERS_INCH_ID' => array(array('' => '0.0340687062', '/' => '60'), "miner's inch"), + 'MINERS_INCH_WA' => array(array('' => '0.0340687062', '/' => '60'), "miner's inch"), + 'MINERS_INCH_NM' => array(array('' => '0.0340687062', '/' => '60'), "miner's inch"), + 'OUNCE_PER_DAY' => array(array('' => '0.00454609', '/' => '13824000'), 'oz/day'), + 'OUNCE_PER_HOUR' => array(array('' => '0.00454609', '/' => '576000'), 'oz/h'), + 'OUNCE_PER_MINUTE' => array(array('' => '0.00454609', '/' => '9600'), 'oz/m'), + 'OUNCE_PER_SECOND' => array(array('' => '0.00454609', '/' => '160'), 'oz/s'), + 'OUNCE_US_PER_DAY' => array(array('' => '0.0037854118', '/' => '11059200'), 'oz/day'), + 'OUNCE_US_PER_HOUR' => array(array('' => '0.0037854118', '/' => '460800'), 'oz/h'), + 'OUNCE_US_PER_MINUTE' => array(array('' => '0.0037854118', '/' => '7680'), 'oz/m'), + 'OUNCE_US_PER_SECOND' => array(array('' => '0.0037854118', '/' => '128'), 'oz/s'), + 'PETROGRAD_STANDARD_PER_DAY' => array(array('' => '4.672279755', '/' => '86400'), 'petrograd standard/day'), + 'PETROGRAD_STANDARD_PER_HOUR' => array(array('' => '4.672279755', '/' => '3600'), 'petrograd standard/h'), + 'PETROGRAD_STANDARD_PER_MINUTE' => array(array('' => '4.672279755', '/' => '60'), 'petrograd standard/m'), + 'PETROGRAD_STANDARD_PER_SECOND' => array('4.672279755', 'petrograd standard/s'), + 'STERE_PER_DAY' => array(array('' => '1', '/' => '86400'), 'st/day'), + 'STERE_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'st/h'), + 'STERE_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'st/m'), + 'STERE_PER_SECOND' => array('1', 'st/s'), + 'THOUSAND_CUBIC_FOOT_PER_DAY' => array(array('' => '28.316847', '/' => '86400'), 'thousand ft³/day'), + 'THOUSAND_CUBIC_FOOT_PER_HOUR' => array(array('' => '28.316847', '/' => '3600'), 'thousand ft³/h'), + 'THOUSAND_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28.316847', '/' => '60'), 'thousand ft³/m'), + 'THOUSAND_CUBIC_FOOT_PER_SECOND' => array('28.316847', 'thousand ft³/s'), + 'TRILLION_CUBIC_FOOT_PER_DAY' => array(array('' => '28316847000', '/' => '86400'), 'trillion ft³/day'), + 'TRILLION_CUBIC_FOOT_PER_HOUR' => array(array('' => '28316847000', '/' => '3600'), 'trillion ft³/h'), + 'TRILLION_CUBIC_FOOT_PER_MINUTE' => array(array('' => '28316847000', '/' => '60'), 'trillion ft³/m'), + 'TRILLION_CUBIC_FOOT_PER_' => array('28316847000', 'trillion ft³/s'), + 'STANDARD' => 'CUBIC_METER_PER_SECOND' + ); +} diff --git a/library/Zend/Measure/Force.php b/library/Zend/Measure/Force.php new file mode 100755 index 000000000..054749933 --- /dev/null +++ b/library/Zend/Measure/Force.php @@ -0,0 +1,126 @@ + array('1.0e-18', 'aN'), + 'CENTINEWTON' => array('0.01', 'cN'), + 'DECIGRAM_FORCE' => array('0.000980665', 'dgf'), + 'DECINEWTON' => array('0.1', 'dN'), + 'DEKAGRAM_FORCE' => array('0.0980665', 'dagf'), + 'DEKANEWTON' => array('10', 'daN'), + 'DYNE' => array('0.00001', 'dyn'), + 'EXANEWTON' => array('1.0e+18', 'EN'), + 'FEMTONEWTON' => array('1.0e-15', 'fN'), + 'GIGANEWTON' => array('1.0e+9', 'GN'), + 'GRAM_FORCE' => array('0.00980665', 'gf'), + 'HECTONEWTON' => array('100', 'hN'), + 'JOULE_PER_METER' => array('1', 'J/m'), + 'KILOGRAM_FORCE' => array('9.80665', 'kgf'), + 'KILONEWTON' => array('1000', 'kN'), + 'KILOPOND' => array('9.80665', 'kp'), + 'KIP' => array('4448.2216', 'kip'), + 'MEGANEWTON' => array('1000000', 'Mp'), + 'MEGAPOND' => array('9806.65', 'MN'), + 'MICRONEWTON' => array('0.000001', 'µN'), + 'MILLINEWTON' => array('0.001', 'mN'), + 'NANONEWTON' => array('0.000000001', 'nN'), + 'NEWTON' => array('1', 'N'), + 'OUNCE_FORCE' => array('0.27801385', 'ozf'), + 'PETANEWTON' => array('1.0e+15', 'PN'), + 'PICONEWTON' => array('1.0e-12', 'pN'), + 'POND' => array('0.00980665', 'pond'), + 'POUND_FORCE' => array('4.4482216', 'lbf'), + 'POUNDAL' => array('0.13825495', 'pdl'), + 'STHENE' => array('1000', 'sn'), + 'TERANEWTON' => array('1.0e+12', 'TN'), + 'TON_FORCE_LONG' => array('9964.016384', 'tnf'), + 'TON_FORCE' => array('9806.65', 'tnf'), + 'TON_FORCE_SHORT' => array('8896.4432', 'tnf'), + 'YOCTONEWTON' => array('1.0e-24', 'yN'), + 'YOTTANEWTON' => array('1.0e+24', 'YN'), + 'ZEPTONEWTON' => array('1.0e-21', 'zN'), + 'ZETTANEWTON' => array('1.0e+21', 'ZN'), + 'STANDARD' => 'NEWTON' + ); +} diff --git a/library/Zend/Measure/Frequency.php b/library/Zend/Measure/Frequency.php new file mode 100755 index 000000000..908af54dd --- /dev/null +++ b/library/Zend/Measure/Frequency.php @@ -0,0 +1,86 @@ + array('1', '1/s'), + 'CYCLE_PER_SECOND' => array('1', 'cps'), + 'DEGREE_PER_HOUR' => array(array('' => '1', '/' => '1296000'), '°/h'), + 'DEGREE_PER_MINUTE' => array(array('' => '1', '/' => '21600'), '°/m'), + 'DEGREE_PER_SECOND' => array(array('' => '1', '/' => '360'), '°/s'), + 'GIGAHERTZ' => array('1000000000', 'GHz'), + 'HERTZ' => array('1', 'Hz'), + 'KILOHERTZ' => array('1000', 'kHz'), + 'MEGAHERTZ' => array('1000000', 'MHz'), + 'MILLIHERTZ' => array('0.001', 'mHz'), + 'RADIAN_PER_HOUR' => array(array('' => '1', '/' => '22619.467'), 'rad/h'), + 'RADIAN_PER_MINUTE' => array(array('' => '1', '/' => '376.99112'), 'rad/m'), + 'RADIAN_PER_SECOND' => array(array('' => '1', '/' => '6.2831853'), 'rad/s'), + 'REVOLUTION_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'rph'), + 'REVOLUTION_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'rpm'), + 'REVOLUTION_PER_SECOND' => array('1', 'rps'), + 'RPM' => array(array('' => '1', '/' => '60'), 'rpm'), + 'TERRAHERTZ' => array('1000000000000', 'THz'), + 'STANDARD' =>'HERTZ' + ); +} diff --git a/library/Zend/Measure/Illumination.php b/library/Zend/Measure/Illumination.php new file mode 100755 index 000000000..93dda6eaa --- /dev/null +++ b/library/Zend/Measure/Illumination.php @@ -0,0 +1,72 @@ + array('10.7639104', 'fc'), + 'KILOLUX' => array('1000', 'klx'), + 'LUMEN_PER_SQUARE_CENTIMETER' => array('10000', 'lm/cm²'), + 'LUMEN_PER_SQUARE_FOOT' => array('10.7639104', 'lm/ft²'), + 'LUMEN_PER_SQUARE_INCH' => array('1550.0030976', 'lm/in²'), + 'LUMEN_PER_SQUARE_METER' => array('1', 'lm/m²'), + 'LUX' => array('1', 'lx'), + 'METERCANDLE' => array('1', 'metercandle'), + 'MILLIPHOT' => array('10', 'mph'), + 'NOX' => array('0.001', 'nox'), + 'PHOT' => array('10000', 'ph'), + 'STANDARD' => 'LUX' + ); +} diff --git a/library/Zend/Measure/Length.php b/library/Zend/Measure/Length.php new file mode 100755 index 000000000..beb37ab70 --- /dev/null +++ b/library/Zend/Measure/Length.php @@ -0,0 +1,674 @@ + array(array('' => '0.0254', '/' => '72'), 'agate'), + 'ALEN_DANISH' => array('0.6277', 'alen'), + 'ALEN' => array('0.6', 'alen'), + 'ALEN_SWEDISH' => array('0.5938', 'alen'), + 'ANGSTROM' => array('1.0e-10', 'Å'), + 'ARMS' => array('0.7', 'arms'), + 'ARPENT_CANADIAN' => array('58.47', 'arpent'), + 'ARPENT' => array('58.471308', 'arpent'), + 'ARSHEEN' => array('0.7112', 'arsheen'), + 'ARSHIN' => array('1.04', 'arshin'), + 'ARSHIN_IRAQ' => array('74.5', 'arshin'), + 'ASTRONOMICAL_UNIT' => array('149597870691', 'AU'), + 'ATTOMETER' => array('1.0e-18', 'am'), + 'BAMBOO' => array('3.2', 'bamboo'), + 'BARLEYCORN' => array('0.0085', 'barleycorn'), + 'BEE_SPACE' => array('0.0065', 'bee space'), + 'BICRON' => array('1.0e-12', 'µµ'), + 'BLOCK_US_EAST' => array('80.4672', 'block'), + 'BLOCK_US_WEST' => array('100.584', 'block'), + 'BLOCK_US_SOUTH' => array('160.9344', 'block'), + 'BOHR' => array('52.918e-12', 'a₀'), + 'BRACCIO' => array('0.7', 'braccio'), + 'BRAZA_ARGENTINA' => array('1.733', 'braza'), + 'BRAZA' => array('1.67', 'braza'), + 'BRAZA_US' => array('1.693', 'braza'), + 'BUTTON' => array('0.000635', 'button'), + 'CABLE_US' => array('219.456', 'cable'), + 'CABLE_UK' => array('185.3184', 'cable'), + 'CALIBER' => array('0.0254', 'cal'), + 'CANA' => array('2', 'cana'), + 'CAPE_FOOT' => array('0.314858', 'cf'), + 'CAPE_INCH' => array(array('' => '0.314858','/' => '12'), 'ci'), + 'CAPE_ROOD' => array('3.778296', 'cr'), + 'CENTIMETER' => array('0.01', 'cm'), + 'CHAIN' => array(array('' => '79200','/' => '3937'), 'ch'), + 'CHAIN_ENGINEER' => array('30.48', 'ch'), + 'CHIH' => array('0.35814', "ch'ih"), + 'CHINESE_FOOT' => array('0.371475', 'ft'), + 'CHINESE_INCH' => array('0.0371475', 'in'), + 'CHINESE_MILE' => array('557.21', 'mi'), + 'CHINESE_YARD' => array('0.89154', 'yd'), + 'CITY_BLOCK_US_EAST' => array('80.4672', 'block'), + 'CITY_BLOCK_US_WEST' => array('100.584', 'block'), + 'CITY_BLOCK_US_SOUTH' => array('160.9344', 'block'), + 'CLICK' => array('1000', 'click'), + 'CUADRA' => array('84', 'cuadra'), + 'CUADRA_ARGENTINA'=> array('130', 'cuadra'), + 'Length:CUBIT_EGYPT' => array('0.45', 'cubit'), + 'CUBIT_ROYAL' => array('0.5235', 'cubit'), + 'CUBIT_UK' => array('0.4572', 'cubit'), + 'CUBIT' => array('0.444', 'cubit'), + 'CUERDA' => array('21', 'cda'), + 'DECIMETER' => array('0.1', 'dm'), + 'DEKAMETER' => array('10', 'dam'), + 'DIDOT_POINT' => array('0.000377', 'didot point'), + 'DIGIT' => array('0.019', 'digit'), + 'DIRAA' => array('0.58', ''), + 'DONG' => array(array('' => '7','/' => '300'), 'dong'), + 'DOUZIEME_WATCH' => array('0.000188', 'douzième'), + 'DOUZIEME' => array('0.00017638888889', 'douzième'), + 'DRA_IRAQ' => array('0.745', 'dra'), + 'DRA' => array('0.7112', 'dra'), + 'EL' => array('0.69', 'el'), + 'ELL' => array('1.143', 'ell'), + 'ELL_SCOTTISH' => array('0.945', 'ell'), + 'ELLE' => array('0.6', 'ellen'), + 'ELLE_VIENNA' => array('0.7793', 'ellen'), + 'EM' => array('0.0042175176', 'em'), + 'ESTADIO_PORTUGAL'=> array('261', 'estadio'), + 'ESTADIO' => array('174', 'estadio'), + 'EXAMETER' => array('1.0e+18', 'Em'), + 'FADEN_AUSTRIA' => array('1.8965', 'faden'), + 'FADEN' => array('1.8', 'faden'), + 'FALL' => array('6.858', 'fall'), + 'FALL_SCOTTISH' => array('5.67', 'fall'), + 'FATHOM' => array('1.8288', 'fth'), + 'FATHOM_ANCIENT' => array('1.829', 'fth'), + 'FAUST' => array('0.10536', 'faust'), + 'FEET_OLD_CANADIAN' => array('0.325', 'ft'), + 'FEET_EGYPT' => array('0.36', 'ft'), + 'FEET_FRANCE' => array('0.3248406', 'ft'), + 'FEET' => array('0.3048', 'ft'), + 'FEET_IRAQ' => array('0.316', 'ft'), + 'FEET_NETHERLAND' => array('0.28313', 'ft'), + 'FEET_ITALIC' => array('0.296', 'ft'), + 'FEET_SURVEY' => array(array('' => '1200', '/' => '3937'), 'ft'), + 'FEMTOMETER' => array('1.0e-15', 'fm'), + 'FERMI' => array('1.0e-15', 'f'), + 'FINGER' => array('0.1143', 'finger'), + 'FINGERBREADTH' => array('0.01905', 'fingerbreadth'), + 'FIST' => array('0.1', 'fist'), + 'FOD' => array('0.3141', 'fod'), + 'FOOT_EGYPT' => array('0.36', 'ft'), + 'FOOT_FRANCE' => array('0.3248406', 'ft'), + 'FOOT' => array('0.3048', 'ft'), + 'FOOT_IRAQ' => array('0.316', 'ft'), + 'FOOT_NETHERLAND' => array('0.28313', 'ft'), + 'FOOT_ITALIC' => array('0.296', 'ft'), + 'FOOT_SURVEY' => array(array('' => '1200', '/' => '3937'), 'ft'), + 'FOOTBALL_FIELD_CANADA' => array('100.584', 'football field'), + 'FOOTBALL_FIELD_US' => array('91.44', 'football field'), + 'FOOTBALL_FIELD' => array('109.728', 'football field'), + 'FURLONG' => array('201.168', 'fur'), + 'FURLONG_SURVEY' => array(array('' => '792000', '/' => '3937'), 'fur'), + 'FUSS' => array('0.31608', 'fuss'), + 'GIGAMETER' => array('1.0e+9', 'Gm'), + 'GIGAPARSEC' => array('30.85678e+24', 'Gpc'), + 'GNATS_EYE' => array('0.000125', "gnat's eye"), + 'GOAD' => array('1.3716', 'goad'), + 'GRY' => array('0.000211667', 'gry'), + 'HAIRS_BREADTH' => array('0.0001', "hair's breadth"), + 'HAND' => array('0.1016', 'hand'), + 'HANDBREADTH' => array('0.08', "hand's breadth"), + 'HAT' => array('0.5', 'hat'), + 'HECTOMETER' => array('100', 'hm'), + 'HEER' => array('73.152', 'heer'), + 'HIRO' => array('1.818', 'hiro'), + 'HUBBLE' => array('9.4605e+24', 'hubble'), + 'HVAT' => array('1.8965', 'hvat'), + 'INCH' => array('0.0254', 'in'), + 'IRON' => array(array('' => '0.0254', '/' => '48'), 'iron'), + 'KEN' => array('1.818', 'ken'), + 'KERAT' => array('0.0286', 'kerat'), + 'KILOFOOT' => array('304.8', 'kft'), + 'KILOMETER' => array('1000', 'km'), + 'KILOPARSEC' => array('3.0856776e+19', 'kpc'), + 'KILOYARD' => array('914.4', 'kyd'), + 'KIND' => array('0.5', 'kind'), + 'KLAFTER' => array('1.8965', 'klafter'), + 'KLAFTER_SWISS' => array('1.8', 'klafter'), + 'KLICK' => array('1000', 'klick'), + 'KYU' => array('0.00025', 'kyu'), + 'LAP_ANCIENT' => array('402.336', ''), + 'LAP' => array('400', 'lap'), + 'LAP_POOL' => array('100', 'lap'), + 'LEAGUE_ANCIENT' => array('2275', 'league'), + 'LEAGUE_NAUTIC' => array('5556', 'league'), + 'LEAGUE_UK_NAUTIC'=> array('5559.552', 'league'), + 'LEAGUE' => array('4828', 'league'), + 'LEAGUE_US' => array('4828.0417', 'league'), + 'LEAP' => array('2.0574', 'leap'), + 'LEGOA' => array('6174.1', 'legoa'), + 'LEGUA' => array('4200', 'legua'), + 'LEGUA_US' => array('4233.4', 'legua'), + 'LEGUA_SPAIN_OLD' => array('4179.4', 'legua'), + 'LEGUA_SPAIN' => array('6680', 'legua'), + 'LI_ANCIENT' => array('500', 'li'), + 'LI_IMPERIAL' => array('644.65', 'li'), + 'LI' => array('500', 'li'), + 'LIEUE' => array('3898', 'lieue'), + 'LIEUE_METRIC' => array('4000', 'lieue'), + 'LIEUE_NAUTIC' => array('5556', 'lieue'), + 'LIGHT_SECOND' => array('299792458', 'light second'), + 'LIGHT_MINUTE' => array('17987547480', 'light minute'), + 'LIGHT_HOUR' => array('1079252848800', 'light hour'), + 'LIGHT_DAY' => array('25902068371200', 'light day'), + 'LIGHT_YEAR' => array('9460528404879000', 'ly'), + 'LIGNE' => array('0.0021167', 'ligne'), + 'LIGNE_SWISS' => array('0.002256', 'ligne'), + 'LINE' => array('0.0021167', 'li'), + 'LINE_SMALL' => array('0.000635', 'li'), + 'LINK' => array(array('' => '792','/' => '3937'), 'link'), + 'LINK_ENGINEER' => array('0.3048', 'link'), + 'LUG' => array('5.0292', 'lug'), + 'LUG_GREAT' => array('6.4008', 'lug'), + 'MARATHON' => array('42194.988', 'marathon'), + 'MARK_TWAIN' => array('3.6576074', 'mark twain'), + 'MEGAMETER' => array('1000000', 'Mm'), + 'MEGAPARSEC' => array('3.085677e+22', 'Mpc'), + 'MEILE_AUSTRIAN' => array('7586', 'meile'), + 'MEILE' => array('7412.7', 'meile'), + 'MEILE_GERMAN' => array('7532.5', 'meile'), + 'METER' => array('1', 'm'), + 'METRE' => array('1', 'm'), + 'METRIC_MILE' => array('1500', 'metric mile'), + 'METRIC_MILE_US' => array('1600', 'metric mile'), + 'MICROINCH' => array('2.54e-08', 'µin'), + 'MICROMETER' => array('0.000001', 'µm'), + 'MICROMICRON' => array('1.0e-12', 'µµ'), + 'MICRON' => array('0.000001', 'µm'), + 'MIGLIO' => array('1488.6', 'miglio'), + 'MIIL' => array('7500', 'miil'), + 'MIIL_DENMARK' => array('7532.5', 'miil'), + 'MIIL_SWEDISH' => array('10687', 'miil'), + 'MIL' => array('0.0000254', 'mil'), + 'MIL_SWEDISH' => array('10000', 'mil'), + 'MILE_UK' => array('1609', 'mi'), + 'MILE_IRISH' => array('2048', 'mi'), + 'MILE' => array('1609.344', 'mi'), + 'MILE_NAUTIC' => array('1852', 'mi'), + 'MILE_NAUTIC_UK' => array('1853.184', 'mi'), + 'MILE_NAUTIC_US' => array('1852', 'mi'), + 'MILE_ANCIENT' => array('1520', 'mi'), + 'MILE_SCOTTISH' => array('1814', 'mi'), + 'MILE_STATUTE' => array('1609.344', 'mi'), + 'MILE_US' => array(array('' => '6336000','/' => '3937'), 'mi'), + 'MILHA' => array('2087.3', 'milha'), + 'MILITARY_PACE' => array('0.762', 'mil. pace'), + 'MILITARY_PACE_DOUBLE' => array('0.9144', 'mil. pace'), + 'MILLA' => array('1392', 'milla'), + 'MILLE' => array('1949', 'mille'), + 'MILLIARE' => array('0.001478', 'milliare'), + 'MILLIMETER' => array('0.001', 'mm'), + 'MILLIMICRON' => array('1.0e-9', 'mµ'), + 'MKONO' => array('0.4572', 'mkono'), + 'MOOT' => array('0.0762', 'moot'), + 'MYRIAMETER' => array('10000', 'mym'), + 'NAIL' => array('0.05715', 'nail'), + 'NANOMETER' => array('1.0e-9', 'nm'), + 'NANON' => array('1.0e-9', 'nanon'), + 'PACE' => array('1.524', 'pace'), + 'PACE_ROMAN' => array('1.48', 'pace'), + 'PALM_DUTCH' => array('0.10', 'palm'), + 'PALM_UK' => array('0.075', 'palm'), + 'PALM' => array('0.2286', 'palm'), + 'PALMO_PORTUGUESE'=> array('0.22', 'palmo'), + 'PALMO' => array('0.20', 'palmo'), + 'PALMO_US' => array('0.2117', 'palmo'), + 'PARASANG' => array('6000', 'parasang'), + 'PARIS_FOOT' => array('0.3248406', 'paris foot'), + 'PARSEC' => array('3.0856776e+16', 'pc'), + 'PE' => array('0.33324', 'pé'), + 'PEARL' => array('0.001757299', 'pearl'), + 'PERCH' => array('5.0292', 'perch'), + 'PERCH_IRELAND' => array('6.4008', 'perch'), + 'PERTICA' => array('2.96', 'pertica'), + 'PES' => array('0.2967', 'pes'), + 'PETAMETER' => array('1.0e+15', 'Pm'), + 'PICA' => array('0.0042175176', 'pi'), + 'PICOMETER' => array('1.0e-12', 'pm'), + 'PIE_ARGENTINA' => array('0.2889', 'pie'), + 'PIE_ITALIC' => array('0.298', 'pie'), + 'PIE' => array('0.2786', 'pie'), + 'PIE_US' => array('0.2822', 'pie'), + 'PIED_DE_ROI' => array('0.3248406', 'pied de roi'), + 'PIK' => array('0.71', 'pik'), + 'PIKE' => array('0.71', 'pike'), + 'POINT_ADOBE' => array(array('' => '0.3048', '/' => '864'), 'pt'), + 'POINT' => array('0.00035', 'pt'), + 'POINT_DIDOT' => array('0.000377', 'pt'), + 'POINT_TEX' => array('0.0003514598035', 'pt'), + 'POLE' => array('5.0292', 'pole'), + 'POLEGADA' => array('0.02777', 'polegada'), + 'POUCE' => array('0.02707', 'pouce'), + 'PU' => array('1.7907', 'pu'), + 'PULGADA' => array('0.02365', 'pulgada'), + 'PYGME' => array('0.346', 'pygme'), + 'Q' => array('0.00025', 'q'), + 'QUADRANT' => array('10001300', 'quad'), + 'QUARTER' => array('402.336', 'Q'), + 'QUARTER_CLOTH' => array('0.2286', 'Q'), + 'QUARTER_PRINT' => array('0.00025', 'Q'), + 'RANGE' => array(array('' => '38016000','/' => '3937'), 'range'), + 'REED' => array('2.679', 'reed'), + 'RI' => array('3927', 'ri'), + 'RIDGE' => array('6.1722', 'ridge'), + 'RIVER' => array('2000', 'river'), + 'ROD' => array('5.0292', 'rd'), + 'ROD_SURVEY' => array(array('' => '19800', '/' => '3937'), 'rd'), + 'ROEDE' => array('10', 'roede'), + 'ROOD' => array('3.7783', 'rood'), + 'ROPE' => array('3.7783', 'rope'), + 'ROYAL_FOOT' => array('0.3248406', 'royal foot'), + 'RUTE' => array('3.75', 'rute'), + 'SADZHEN' => array('2.1336', 'sadzhen'), + 'SAGENE' => array('2.1336', 'sagene'), + 'SCOTS_FOOT' => array('0.30645', 'scots foot'), + 'SCOTS_MILE' => array('1814.2', 'scots mile'), + 'SEEMEILE' => array('1852', 'seemeile'), + 'SHACKLE' => array('27.432', 'shackle'), + 'SHAFTMENT' => array('0.15124', 'shaftment'), + 'SHAFTMENT_ANCIENT' => array('0.165', 'shaftment'), + 'SHAKU' => array('0.303', 'shaku'), + 'SIRIOMETER' => array('1.4959787e+17', 'siriometer'), + 'SMOOT' => array('1.7018', 'smoot'), + 'SPAN' => array('0.2286', 'span'), + 'SPAT' => array('1.0e+12', 'spat'), + 'STADIUM' => array('185', 'stadium'), + 'STEP' => array('0.762', 'step'), + 'STICK' => array('3.048', 'stk'), + 'STORY' => array('3.3', 'story'), + 'STRIDE' => array('1.524', 'stride'), + 'STRIDE_ROMAN' => array('1.48', 'stride'), + 'TENTHMETER' => array('1.0e-10', 'tenth-meter'), + 'TERAMETER' => array('1.0e+12', 'Tm'), + 'THOU' => array('0.0000254', 'thou'), + 'TOISE' => array('1.949', 'toise'), + 'TOWNSHIP' => array(array('' => '38016000','/' => '3937'), 'twp'), + 'T_SUN' => array('0.0358', "t'sun"), + 'TU' => array('161130', 'tu'), + 'TWAIN' => array('3.6576074', 'twain'), + 'TWIP' => array('0.000017639', 'twip'), + 'U' => array('0.04445', 'U'), + 'VARA_CALIFORNIA' => array('0.83820168', 'vara'), + 'VARA_MEXICAN' => array('0.83802', 'vara'), + 'VARA_PORTUGUESE' => array('1.10', 'vara'), + 'VARA_AMERICA' => array('0.864', 'vara'), + 'VARA' => array('0.83587', 'vara'), + 'VARA_TEXAS' => array('0.84666836', 'vara'), + 'VERGE' => array('0.9144', 'verge'), + 'VERSHOK' => array('0.04445', 'vershok'), + 'VERST' => array('1066.8', 'verst'), + 'WAH' => array('2', 'wah'), + 'WERST' => array('1066.8', 'werst'), + 'X_UNIT' => array('1.0020722e-13', 'Xu'), + 'YARD' => array('0.9144', 'yd'), + 'YOCTOMETER' => array('1.0e-24', 'ym'), + 'YOTTAMETER' => array('1.0e+24', 'Ym'), + 'ZEPTOMETER' => array('1.0e-21', 'zm'), + 'ZETTAMETER' => array('1.0e+21', 'Zm'), + 'ZOLL' => array('0.02634', 'zoll'), + 'ZOLL_SWISS' => array('0.03', 'zoll'), + 'STANDARD' => 'METER' + ); +} diff --git a/library/Zend/Measure/Lightness.php b/library/Zend/Measure/Lightness.php new file mode 100755 index 000000000..542d428e1 --- /dev/null +++ b/library/Zend/Measure/Lightness.php @@ -0,0 +1,80 @@ + array('0.31830989', 'asb'), + 'BLONDEL' => array('0.31830989', 'blondel'), + 'CANDELA_PER_SQUARE_CENTIMETER' => array('10000', 'cd/cm²'), + 'CANDELA_PER_SQUARE_FOOT' => array('10.76391', 'cd/ft²'), + 'CANDELA_PER_SQUARE_INCH' => array('1550.00304', 'cd/in²'), + 'CANDELA_PER_SQUARE_METER' => array('1', 'cd/m²'), + 'FOOTLAMBERT' => array('3.4262591', 'ftL'), + 'KILOCANDELA_PER_SQUARE_CENTIMETER' => array('10000000', 'kcd/cm²'), + 'KILOCANDELA_PER_SQUARE_FOOT' => array('10763.91', 'kcd/ft²'), + 'KILOCANDELA_PER_SQUARE_INCH' => array('1550003.04', 'kcd/in²'), + 'KILOCANDELA_PER_SQUARE_METER' => array('1000', 'kcd/m²'), + 'LAMBERT' => array('3183.0989', 'L'), + 'MILLILAMBERT' => array('3.1830989', 'mL'), + 'NIT' => array('1', 'nt'), + 'STILB' => array('10000', 'sb'), + 'STANDARD' => 'CANDELA_PER_SQUARE_METER' + ); +} diff --git a/library/Zend/Measure/Number.php b/library/Zend/Measure/Number.php new file mode 100755 index 000000000..eba5199c8 --- /dev/null +++ b/library/Zend/Measure/Number.php @@ -0,0 +1,426 @@ + array(2, '⑵'), + 'TERNARY' => array(3, '⑶'), + 'QUATERNARY' => array(4, '⑷'), + 'QUINARY' => array(5, '⑸'), + 'SENARY' => array(6, '⑹'), + 'SEPTENARY' => array(7, '⑺'), + 'OCTAL' => array(8, '⑻'), + 'NONARY' => array(9, '⑼'), + 'DECIMAL' => array(10, '⑽'), + 'DUODECIMAL' => array(12, '⑿'), + 'HEXADECIMAL' => array(16, '⒃'), + 'ROMAN' => array(99, ''), + 'STANDARD' => 'DECIMAL' + ); + + /** + * Definition of all roman signs + * + * @var array $_roman + */ + private static $_roman = array( + 'I' => 1, + 'A' => 4, + 'V' => 5, + 'B' => 9, + 'X' => 10, + 'E' => 40, + 'L' => 50, + 'F' => 90, + 'C' => 100, + 'G' => 400, + 'D' => 500, + 'H' => 900, + 'M' => 1000, + 'J' => 4000, + 'P' => 5000, + 'K' => 9000, + 'Q' => 10000, + 'N' => 40000, + 'R' => 50000, + 'W' => 90000, + 'S' => 100000, + 'Y' => 400000, + 'T' => 500000, + 'Z' => 900000, + 'U' => 1000000 + ); + + /** + * Convertion table for roman signs + * + * @var array $_romanconvert + */ + private static $_romanconvert = array( + '/_V/' => '/P/', + '/_X/' => '/Q/', + '/_L/' => '/R/', + '/_C/' => '/S/', + '/_D/' => '/T/', + '/_M/' => '/U/', + '/IV/' => '/A/', + '/IX/' => '/B/', + '/XL/' => '/E/', + '/XC/' => '/F/', + '/CD/' => '/G/', + '/CM/' => '/H/', + '/M_V/'=> '/J/', + '/MQ/' => '/K/', + '/QR/' => '/N/', + '/QS/' => '/W/', + '/ST/' => '/Y/', + '/SU/' => '/Z/' + ); + + /** + * Zend_Measure_Abstract is an abstract class for the different measurement types + * + * @param integer $value Value + * @param string $type (Optional) A Zend_Measure_Number Type + * @param string|Zend_Locale $locale (Optional) A Zend_Locale + * @throws Zend_Measure_Exception When language is unknown + * @throws Zend_Measure_Exception When type is unknown + */ + public function __construct($value, $type, $locale = null) + { + if (($type !== null) and (Zend_Locale::isLocale($type, null, false))) { + $locale = $type; + $type = null; + } + + if ($locale === null) { + $locale = new Zend_Locale(); + } + + if (!Zend_Locale::isLocale($locale, true, false)) { + if (!Zend_Locale::isLocale($locale, true, false)) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Language (" . (string) $locale . ") is unknown"); + } + + $locale = new Zend_Locale($locale); + } + + $this->_locale = (string) $locale; + + if ($type === null) { + $type = $this->_units['STANDARD']; + } + + if (isset($this->_units[$type]) === false) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Type ($type) is unknown"); + } + + $this->setValue($value, $type, $this->_locale); + } + + /** + * Set a new value + * + * @param integer $value Value + * @param string $type (Optional) A Zend_Measure_Number Type + * @param string|Zend_Locale $locale (Optional) A Zend_Locale Type + * @throws Zend_Measure_Exception + */ + public function setValue($value, $type = null, $locale = null) + { + if (empty($locale)) { + $locale = $this->_locale; + } + + if (empty($this->_units[$type])) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception('unknown type of number:' . $type); + } + + switch($type) { + case 'BINARY': + preg_match('/[01]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'TERNARY': + preg_match('/[012]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'QUATERNARY': + preg_match('/[0123]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'QUINARY': + preg_match('/[01234]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'SENARY': + preg_match('/[012345]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'SEPTENARY': + preg_match('/[0123456]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'OCTAL': + preg_match('/[01234567]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'NONARY': + preg_match('/[012345678]+/', $value, $ergebnis); + $value = $ergebnis[0]; + break; + + case 'DUODECIMAL': + preg_match('/[0123456789AB]+/', strtoupper($value), $ergebnis); + $value = $ergebnis[0]; + break; + + case 'HEXADECIMAL': + preg_match('/[0123456789ABCDEF]+/', strtoupper($value), $ergebnis); + $value = $ergebnis[0]; + break; + + case 'ROMAN': + preg_match('/[IVXLCDM_]+/', strtoupper($value), $ergebnis); + $value = $ergebnis[0]; + break; + + default: + try { + $value = Zend_Locale_Format::getInteger($value, array('locale' => $locale)); + } catch (Exception $e) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception($e->getMessage(), $e->getCode(), $e); + } + if (call_user_func(Zend_Locale_Math::$comp, $value, 0) < 0) { + $value = call_user_func(Zend_Locale_Math::$sqrt, call_user_func(Zend_Locale_Math::$pow, $value, 2)); + } + break; + } + + $this->_value = $value; + $this->_type = $type; + } + + /** + * Convert input to decimal value string + * + * @param integer $input Input string + * @param string $type Type from which to convert to decimal + * @return string + */ + private function _toDecimal($input, $type) + { + $value = ''; + // Convert base xx values + if ($this->_units[$type][0] <= 16) { + $split = str_split($input); + $length = strlen($input); + for ($x = 0; $x < $length; ++$x) { + $split[$x] = hexdec($split[$x]); + $value = call_user_func(Zend_Locale_Math::$add, $value, + call_user_func(Zend_Locale_Math::$mul, $split[$x], + call_user_func(Zend_Locale_Math::$pow, $this->_units[$type][0], ($length - $x - 1)))); + } + } + + // Convert roman numbers + if ($type === 'ROMAN') { + $input = strtoupper($input); + $input = preg_replace(array_keys(self::$_romanconvert), array_values(self::$_romanconvert), $input); + + $split = preg_split('//', strrev($input), -1, PREG_SPLIT_NO_EMPTY); + + for ($x =0; $x < sizeof($split); $x++) { + if ($split[$x] == '/') { + continue; + } + + $num = self::$_roman[$split[$x]]; + if (($x > 0 and ($split[$x-1] != '/') and ($num < self::$_roman[$split[$x-1]]))) { + $num -= $num; + } + + $value += $num; + } + + str_replace('/', '', $value); + } + + return $value; + } + + /** + * Convert input to type value string + * + * @param integer $value Input string + * @param string $type Type to convert to + * @return string + * @throws Zend_Measure_Exception When more than 200 digits are calculated + */ + private function _fromDecimal($value, $type) + { + $tempvalue = $value; + if ($this->_units[$type][0] <= 16) { + $newvalue = ''; + $count = 200; + $base = $this->_units[$type][0]; + + while (call_user_func(Zend_Locale_Math::$comp, $value, 0, 25) <> 0) { + $target = call_user_func(Zend_Locale_Math::$mod, $value, $base); + + $newvalue = strtoupper(dechex($target)) . $newvalue; + + $value = call_user_func(Zend_Locale_Math::$sub, $value, $target, 0); + $value = call_user_func(Zend_Locale_Math::$div, $value, $base, 0); + + --$count; + if ($count === 0) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Your value '$tempvalue' cannot be processed because it extends 200 digits"); + } + } + + if ($newvalue === '') { + $newvalue = '0'; + } + } + + if ($type === 'ROMAN') { + $i = 0; + $newvalue = ''; + $romanval = array_values(array_reverse(self::$_roman)); + $romankey = array_keys(array_reverse(self::$_roman)); + $count = 200; + while (call_user_func(Zend_Locale_Math::$comp, $value, 0, 25) <> 0) { + while ($value >= $romanval[$i]) { + $value -= $romanval[$i]; + $newvalue .= $romankey[$i]; + + if ($value < 1) { + break; + } + + --$count; + if ($count === 0) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception("Your value '$tempvalue' cannot be processed because it extends 200 digits"); + } + } + + $i++; + } + + $newvalue = str_replace('/', '', preg_replace(array_values(self::$_romanconvert), array_keys(self::$_romanconvert), $newvalue)); + } + + return $newvalue; + } + + /** + * Set a new type, and convert the value + * + * @param string $type New type to set + * @throws Zend_Measure_Exception When a unknown type is given + * @return void + */ + public function setType($type) + { + if (empty($this->_units[$type]) === true) { + require_once 'Zend/Measure/Exception.php'; + throw new Zend_Measure_Exception('Unknown type of number:' . $type); + } + + $value = $this->_toDecimal($this->getValue(-1), $this->getType(-1)); + $value = $this->_fromDecimal($value, $type); + + $this->_value = $value; + $this->_type = $type; + } + + /** + * Alias function for setType returning the converted unit + * Default is 0 as this class only handles numbers without precision + * + * @param string $type Type to convert to + * @param integer $round (Optional) Precision to add, will always be 0 + * @return string + */ + public function convertTo($type, $round = 0, $locale = null) + { + $this->setType($type); + + // Roman numerals do not need a formatting + if ($this->getType() === self::ROMAN) { + return $this->_value; + } + + return $this->toString($round, $locale); + } +} diff --git a/library/Zend/Measure/Power.php b/library/Zend/Measure/Power.php new file mode 100755 index 000000000..1bff001d6 --- /dev/null +++ b/library/Zend/Measure/Power.php @@ -0,0 +1,188 @@ + array('1.0e-18', 'aW'), + 'BTU_PER_HOUR' => array('0.29307197', 'BTU/h'), + 'BTU_PER_MINUTE' => array('17.5843182', 'BTU/m'), + 'BTU_PER_SECOND' => array('1055.059092', 'BTU/s'), + 'CALORIE_PER_HOUR' => array(array('' => '11630', '*' => '1.0e-7'), 'cal/h'), + 'CALORIE_PER_MINUTE' => array(array('' => '697800', '*' => '1.0e-7'), 'cal/m'), + 'CALORIE_PER_SECOND' => array(array('' => '41868000', '*' => '1.0e-7'), 'cal/s'), + 'CENTIWATT' => array('0.01', 'cW'), + 'CHEVAL_VAPEUR' => array('735.49875', 'cv'), + 'CLUSEC' => array('0.0000013332237', 'clusec'), + 'DECIWATT' => array('0.1', 'dW'), + 'DEKAWATT' => array('10', 'daW'), + 'DYNE_CENTIMETER_PER_HOUR' => array(array('' => '1.0e-7','/' => '3600'), 'dyn cm/h'), + 'DYNE_CENTIMETER_PER_MINUTE' => array(array('' => '1.0e-7','/' => '60'), 'dyn cm/m'), + 'DYNE_CENTIMETER_PER_SECOND' => array('1.0e-7', 'dyn cm/s'), + 'ERG_PER_HOUR' => array(array('' => '1.0e-7','/' => '3600'), 'erg/h'), + 'ERG_PER_MINUTE' => array(array('' => '1.0e-7','/' => '60'), 'erg/m'), + 'ERG_PER_SECOND' => array('1.0e-7', 'erg/s'), + 'EXAWATT' => array('1.0e+18', 'EW'), + 'FEMTOWATT' => array('1.0e-15', 'fW'), + 'FOOT_POUND_FORCE_PER_HOUR' => array(array('' => '1.3558179', '/' => '3600'), 'ft lb/h'), + 'FOOT_POUND_FORCE_PER_MINUTE' => array(array('' => '1.3558179', '/' => '60'), 'ft lb/m'), + 'FOOT_POUND_FORCE_PER_SECOND' => array('1.3558179', 'ft lb/s'), + 'FOOT_POUNDAL_PER_HOUR' => array(array('' => '0.04214011','/' => '3600'), 'ft pdl/h'), + 'FOOT_POUNDAL_PER_MINUTE' => array(array('' => '0.04214011', '/' => '60'), 'ft pdl/m'), + 'FOOT_POUNDAL_PER_SECOND' => array('0.04214011', 'ft pdl/s'), + 'GIGAWATT' => array('1.0e+9', 'GW'), + 'GRAM_FORCE_CENTIMETER_PER_HOUR' => array(array('' => '0.0000980665','/' => '3600'), 'gf cm/h'), + 'GRAM_FORCE_CENTIMETER_PER_MINUTE' => array(array('' => '0.0000980665','/' => '60'), 'gf cm/m'), + 'GRAM_FORCE_CENTIMETER_PER_SECOND' => array('0.0000980665', 'gf cm/s'), + 'HECTOWATT' => array('100', 'hW'), + 'HORSEPOWER_INTERNATIONAL' => array('745.69987', 'hp'), + 'HORSEPOWER_ELECTRIC' => array('746', 'hp'), + 'HORSEPOWER' => array('735.49875', 'hp'), + 'HORSEPOWER_WATER' => array('746.043', 'hp'), + 'INCH_OUNCH_FORCE_REVOLUTION_PER_MINUTE' => array('0.00073948398', 'in ocf/m'), + 'JOULE_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'J/h'), + 'JOULE_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'J/m'), + 'JOULE_PER_SECOND' => array('1', 'J/s'), + 'KILOCALORIE_PER_HOUR' => array('1.163', 'kcal/h'), + 'KILOCALORIE_PER_MINUTE' => array('69.78', 'kcal/m'), + 'KILOCALORIE_PER_SECOND' => array('4186.8', 'kcal/s'), + 'KILOGRAM_FORCE_METER_PER_HOUR' => array(array('' => '9.80665', '/' => '3600'), 'kgf m/h'), + 'KILOGRAM_FORCE_METER_PER_MINUTE' => array(array('' => '9.80665', '/' => '60'), 'kfg m/m'), + 'KILOGRAM_FORCE_METER_PER_SECOND' => array('9.80665', 'kfg m/s'), + 'KILOPOND_METER_PER_HOUR' => array(array('' => '9.80665', '/' => '3600'), 'kp/h'), + 'KILOPOND_METER_PER_MINUTE' => array(array('' => '9.80665', '/' => '60'), 'kp/m'), + 'KILOPOND_METER_PER_SECOND' => array('9.80665', 'kp/s'), + 'KILOWATT' => array('1000', 'kW'), + 'MEGAWATT' => array('1000000', 'MW'), + 'MICROWATT' => array('0.000001', 'µW'), + 'MILLION_BTU_PER_HOUR' => array('293071.07', 'mio BTU/h'), + 'MILLIWATT' => array('0.001', 'mM'), + 'NANOWATT' => array('1.0e-9', 'nN'), + 'NEWTON_METER_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'Nm/h'), + 'NEWTON_METER_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'Nm/m'), + 'NEWTON_METER_PER_SECOND' => array('1', 'Nm/s'), + 'PETAWATT' => array('1.0e+15', 'PW'), + 'PFERDESTAERKE' => array('735.49875', 'PS'), + 'PICOWATT' => array('1.0e-12', 'pW'), + 'PONCELET' => array('980.665', 'p'), + 'POUND_SQUARE_FOOT_PER_CUBIC_SECOND' => array('0.04214011', 'lb ft²/s³'), + 'TERAWATT' => array('1.0e+12', 'TW'), + 'TON_OF_REFRIGERATION' => array('3516.85284', 'RT'), + 'WATT' => array('1', 'W'), + 'YOCTOWATT' => array('1.0e-24', 'yW'), + 'YOTTAWATT' => array('1.0e+24', 'YW'), + 'ZEPTOWATT' => array('1.0e-21', 'zW'), + 'ZETTAWATT' => array('1.0e+21', 'ZW'), + 'STANDARD' => 'WATT' + ); +} diff --git a/library/Zend/Measure/Pressure.php b/library/Zend/Measure/Pressure.php new file mode 100755 index 000000000..0bbf3c7f6 --- /dev/null +++ b/library/Zend/Measure/Pressure.php @@ -0,0 +1,250 @@ + array('101325.01', 'atm'), + 'ATMOSPHERE_TECHNICAL' => array('98066.5', 'atm'), + 'ATTOBAR' => array('1.0e-13', 'ab'), + 'ATTOPASCAL' => array('1.0e-18', 'aPa'), + 'BAR' => array('100000', 'b'), + 'BARAD' => array('0.1', 'barad'), + 'BARYE' => array('0.1', 'ba'), + 'CENTIBAR' => array('1000', 'cb'), + 'CENTIHG' => array('1333.2239', 'cHg'), + 'CENTIMETER_MERCURY_0C' => array('1333.2239', 'cm mercury (0°C)'), + 'CENTIMETER_WATER_4C' => array('98.0665', 'cm water (4°C)'), + 'CENTIPASCAL' => array('0.01', 'cPa'), + 'CENTITORR' => array('1.3332237', 'cTorr'), + 'DECIBAR' => array('10000', 'db'), + 'DECIPASCAL' => array('0.1', 'dPa'), + 'DECITORR' => array('13.332237', 'dTorr'), + 'DEKABAR' => array('1000000', 'dab'), + 'DEKAPASCAL' => array('10', 'daPa'), + 'DYNE_PER_SQUARE_CENTIMETER' => array('0.1', 'dyn/cm²'), + 'EXABAR' => array('1.0e+23', 'Eb'), + 'EXAPASCAL' => array('1.0e+18', 'EPa'), + 'FEMTOBAR' => array('1.0e-10', 'fb'), + 'FEMTOPASCAL' => array('1.0e-15', 'fPa'), + 'FOOT_AIR_0C' => array('3.8640888', 'ft air (0°C)'), + 'FOOT_AIR_15C' => array('3.6622931', 'ft air (15°C)'), + 'FOOT_HEAD' => array('2989.0669', 'ft head'), + 'FOOT_MERCURY_0C' => array('40636.664', 'ft mercury (0°C)'), + 'FOOT_WATER_4C' => array('2989.0669', 'ft water (4°C)'), + 'GIGABAR' => array('1.0e+14', 'Gb'), + 'GIGAPASCAL' => array('1.0e+9', 'GPa'), + 'GRAM_FORCE_SQUARE_CENTIMETER' => array('98.0665', 'gf'), + 'HECTOBAR' => array('1.0e+7', 'hb'), + 'HECTOPASCAL' => array('100', 'hPa'), + 'INCH_AIR_0C' => array(array('' => '3.8640888', '/' => '12'), 'in air (0°C)'), + 'INCH_AIR_15C' => array(array('' => '3.6622931', '/' => '12'), 'in air (15°C)'), + 'INCH_MERCURY_0C' => array(array('' => '40636.664', '/' => '12'), 'in mercury (0°C)'), + 'INCH_WATER_4C' => array(array('' => '2989.0669', '/' => '12'), 'in water (4°C)'), + 'KILOBAR' => array('1.0e+8', 'kb'), + 'KILOGRAM_FORCE_PER_SQUARE_CENTIMETER' => array('98066.5', 'kgf/cm²'), + 'KILOGRAM_FORCE_PER_SQUARE_METER' => array('9.80665', 'kgf/m²'), + 'KILOGRAM_FORCE_PER_SQUARE_MILLIMETER' => array('9806650', 'kgf/mm²'), + 'KILONEWTON_PER_SQUARE_METER' => array('1000', 'kN/m²'), + 'KILOPASCAL' => array('1000', 'kPa'), + 'KILOPOND_PER_SQUARE_CENTIMETER' => array('98066.5', 'kp/cm²'), + 'KILOPOND_PER_SQUARE_METER' => array('9.80665', 'kp/m²'), + 'KILOPOND_PER_SQUARE_MILLIMETER' => array('9806650', 'kp/mm²'), + 'KIP_PER_SQUARE_FOOT' => array(array('' => '430.92233', '/' => '0.009'), 'kip/ft²'), + 'KIP_PER_SQUARE_INCH' => array(array('' => '62052.81552', '/' => '0.009'), 'kip/in²'), + 'MEGABAR' => array('1.0e+11', 'Mb'), + 'MEGANEWTON_PER_SQUARE_METER' => array('1000000', 'MN/m²'), + 'MEGAPASCAL' => array('1000000', 'MPa'), + 'METER_AIR_0C' => array('12.677457', 'm air (0°C)'), + 'METER_AIR_15C' => array('12.015397', 'm air (15°C)'), + 'METER_HEAD' => array('9804.139432', 'm head'), + 'MICROBAR' => array('0.1', 'µb'), + 'MICROMETER_MERCURY_0C' => array('0.13332239', 'µm mercury (0°C)'), + 'MICROMETER_WATER_4C' => array('0.00980665', 'µm water (4°C)'), + 'MICRON_MERCURY_0C' => array('0.13332239', 'µ mercury (0°C)'), + 'MICROPASCAL' => array('0.000001', 'µPa'), + 'MILLIBAR' => array('100', 'mb'), + 'MILLIHG' => array('133.32239', 'mHg'), + 'MILLIMETER_MERCURY_0C' => array('133.32239', 'mm mercury (0°C)'), + 'MILLIMETER_WATER_4C' => array('9.80665', 'mm water (0°C)'), + 'MILLIPASCAL' => array('0.001', 'mPa'), + 'MILLITORR' => array('0.13332237', 'mTorr'), + 'NANOBAR' => array('0.0001', 'nb'), + 'NANOPASCAL' => array('1.0e-9', 'nPa'), + 'NEWTON_PER_SQUARE_METER' => array('1', 'N/m²'), + 'NEWTON_PER_SQUARE_MILLIMETER' => array('1000000', 'N/mm²'), + 'OUNCE_PER_SQUARE_INCH' => array('430.92233', 'oz/in²'), + 'PASCAL' => array('1', 'Pa'), + 'PETABAR' => array('1.0e+20', 'Pb'), + 'PETAPASCAL' => array('1.0e+15', 'PPa'), + 'PICOBAR' => array('0.0000001', 'pb'), + 'PICOPASCAL' => array('1.0e-12', 'pPa'), + 'PIEZE' => array('1000', 'pz'), + 'POUND_PER_SQUARE_FOOT' => array(array('' => '430.92233', '/' => '9'), 'lb/ft²'), + 'POUND_PER_SQUARE_INCH' => array('6894.75728', 'lb/in²'), + 'POUNDAL_PER_SQUARE_FOOT' => array('1.4881639', 'pdl/ft²'), + 'STHENE_PER_SQUARE_METER' => array('1000', 'sn/m²'), + 'TECHNICAL_ATMOSPHERE' => array('98066.5', 'at'), + 'TERABAR' => array('1.0e+17', 'Tb'), + 'TERAPASCAL' => array('1.0e+12', 'TPa'), + 'TON_PER_SQUARE_FOOT' => array(array('' => '120658.2524', '/' => '1.125'), 't/ft²'), + 'TON_PER_SQUARE_FOOT_SHORT' => array(array('' => '430.92233', '/' => '0.0045'), 't/ft²'), + 'TON_PER_SQUARE_INCH' => array(array('' => '17374788.3456', '/' => '1.125'), 't/in²'), + 'TON_PER_SQUARE_INCH_SHORT' => array(array('' => '62052.81552', '/' => '0.0045'), 't/in²'), + 'TON_PER_SQUARE_METER' => array('9806.65', 't/m²'), + 'TORR' => array('133.32237', 'Torr'), + 'WATER_COLUMN_CENTIMETER' => array('98.0665', 'WC (cm)'), + 'WATER_COLUMN_INCH' => array(array('' => '2989.0669', '/' => '12'), 'WC (in)'), + 'WATER_COLUMN_MILLIMETER' => array('9.80665', 'WC (mm)'), + 'YOCTOBAR' => array('1.0e-19', 'yb'), + 'YOCTOPASCAL' => array('1.0e-24', 'yPa'), + 'YOTTABAR' => array('1.0e+29', 'Yb'), + 'YOTTAPASCAL' => array('1.0e+24', 'YPa'), + 'ZEPTOBAR' => array('1.0e-16', 'zb'), + 'ZEPTOPASCAL' => array('1.0e-21', 'zPa'), + 'ZETTABAR' => array('1.0e+26', 'Zb'), + 'ZETTAPASCAL' => array('1.0e+21', 'ZPa'), + 'STANDARD' => 'NEWTON_PER_SQUARE_METER' + ); +} diff --git a/library/Zend/Measure/Speed.php b/library/Zend/Measure/Speed.php new file mode 100755 index 000000000..74376a088 --- /dev/null +++ b/library/Zend/Measure/Speed.php @@ -0,0 +1,190 @@ + array('1', 'Bz'), + 'CENTIMETER_PER_DAY' => array(array('' => '0.01', '/' => '86400'), 'cm/day'), + 'CENTIMETER_PER_HOUR' => array(array('' => '0.01', '/' => '3600'), 'cm/h'), + 'CENTIMETER_PER_MINUTE' => array(array('' => '0.01', '/' => '60'), 'cm/m'), + 'CENTIMETER_PER_SECOND' => array('0.01', 'cd/s'), + 'DEKAMETER_PER_DAY' => array(array('' => '10', '/' => '86400'), 'dam/day'), + 'DEKAMETER_PER_HOUR' => array(array('' => '10', '/' => '3600'), 'dam/h'), + 'DEKAMETER_PER_MINUTE' => array(array('' => '10', '/' => '60'), 'dam/m'), + 'DEKAMETER_PER_SECOND' => array('10', 'dam/s'), + 'FOOT_PER_DAY' => array(array('' => '0.3048', '/' => '86400'), 'ft/day'), + 'FOOT_PER_HOUR' => array(array('' => '0.3048', '/' => '3600'), 'ft/h'), + 'FOOT_PER_MINUTE' => array(array('' => '0.3048', '/' => '60'), 'ft/m'), + 'FOOT_PER_SECOND' => array('0.3048', 'ft/s'), + 'FURLONG_PER_DAY' => array(array('' => '201.1684', '/' => '86400'), 'fur/day'), + 'FURLONG_PER_FORTNIGHT' => array(array('' => '201.1684', '/' => '1209600'), 'fur/fortnight'), + 'FURLONG_PER_HOUR' => array(array('' => '201.1684', '/' => '3600'), 'fur/h'), + 'FURLONG_PER_MINUTE' => array(array('' => '201.1684', '/' => '60'), 'fur/m'), + 'FURLONG_PER_SECOND' => array('201.1684', 'fur/s'), + 'HECTOMETER_PER_DAY' => array(array('' => '100', '/' => '86400'), 'hm/day'), + 'HECTOMETER_PER_HOUR' => array(array('' => '100', '/' => '3600'), 'hm/h'), + 'HECTOMETER_PER_MINUTE' => array(array('' => '100', '/' => '60'), 'hm/m'), + 'HECTOMETER_PER_SECOND' => array('100', 'hm/s'), + 'INCH_PER_DAY' => array(array('' => '0.0254', '/' => '86400'), 'in/day'), + 'INCH_PER_HOUR' => array(array('' => '0.0254', '/' => '3600'), 'in/h'), + 'INCH_PER_MINUTE' => array(array('' => '0.0254', '/' => '60'), 'in/m'), + 'INCH_PER_SECOND' => array('0.0254', 'in/s'), + 'KILOMETER_PER_DAY' => array(array('' => '1000', '/' => '86400'), 'km/day'), + 'KILOMETER_PER_HOUR' => array(array('' => '1000', '/' => '3600'), 'km/h'), + 'KILOMETER_PER_MINUTE' => array(array('' => '1000', '/' => '60'), 'km/m'), + 'KILOMETER_PER_SECOND' => array('1000', 'km/s'), + 'KNOT' => array(array('' => '1852', '/' => '3600'), 'kn'), + 'LEAGUE_PER_DAY' => array(array('' => '4828.0417', '/' => '86400'), 'league/day'), + 'LEAGUE_PER_HOUR' => array(array('' => '4828.0417', '/' => '3600'), 'league/h'), + 'LEAGUE_PER_MINUTE' => array(array('' => '4828.0417', '/' => '60'), 'league/m'), + 'LEAGUE_PER_SECOND' => array('4828.0417', 'league/s'), + 'MACH' => array('340.29', 'M'), + 'MEGAMETER_PER_DAY' => array(array('' => '1000000', '/' => '86400'), 'Mm/day'), + 'MEGAMETER_PER_HOUR' => array(array('' => '1000000', '/' => '3600'), 'Mm/h'), + 'MEGAMETER_PER_MINUTE' => array(array('' => '1000000', '/' => '60'), 'Mm/m'), + 'MEGAMETER_PER_SECOND' => array('1000000', 'Mm/s'), + 'METER_PER_DAY' => array(array('' => '1', '/' => '86400'), 'm/day'), + 'METER_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'm/h'), + 'METER_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'm/m'), + 'METER_PER_SECOND' => array('1', 'm/s'), + 'MILE_PER_DAY' => array(array('' => '1609.344', '/' => '86400'), 'mi/day'), + 'MILE_PER_HOUR' => array(array('' => '1609.344', '/' => '3600'), 'mi/h'), + 'MILE_PER_MINUTE' => array(array('' => '1609.344', '/' => '60'), 'mi/m'), + 'MILE_PER_SECOND' => array('1609.344', 'mi/s'), + 'MILLIMETER_PER_DAY' => array(array('' => '0.001', '/' => '86400'), 'mm/day'), + 'MILLIMETER_PER_HOUR' => array(array('' => '0.001', '/' => '3600'), 'mm/h'), + 'MILLIMETER_PER_MINUTE' => array(array('' => '0.001', '/' => '60'), 'mm/m'), + 'MILLIMETER_PER_SECOND' => array('0.001', 'mm/s'), + 'MILLIMETER_PER_MICROSECOND' => array('1000', 'mm/µs'), + 'MILLIMETER_PER_100_MICROSECOND' => array('10', 'mm/100µs'), + 'NAUTIC_MILE_PER_DAY' => array(array('' => '1852', '/' => '86400'), 'nmi/day'), + 'NAUTIC_MILE_PER_HOUR' => array(array('' => '1852', '/' => '3600'), 'nmi/h'), + 'NAUTIC_MILE_PER_MINUTE' => array(array('' => '1852', '/' => '60'), 'nmi/m'), + 'NAUTIC_MILE_PER_SECOND' => array('1852', 'nmi/s'), + 'LIGHTSPEED_AIR' => array('299702547', 'speed of light (air)'), + 'LIGHTSPEED_GLASS' => array('199861638', 'speed of light (glass)'), + 'LIGHTSPEED_ICE' => array('228849204', 'speed of light (ice)'), + 'LIGHTSPEED_VACUUM' => array('299792458', 'speed of light (vacuum)'), + 'LIGHTSPEED_WATER' => array('225407863', 'speed of light (water)'), + 'SOUNDSPEED_AIT' => array('340.29', 'speed of sound (air)'), + 'SOUNDSPEED_METAL' => array('5000', 'speed of sound (metal)'), + 'SOUNDSPEED_WATER' => array('1500', 'speed of sound (water)'), + 'YARD_PER_DAY' => array(array('' => '0.9144', '/' => '86400'), 'yd/day'), + 'YARD_PER_HOUR' => array(array('' => '0.9144', '/' => '3600'), 'yd/h'), + 'YARD_PER_MINUTE' => array(array('' => '0.9144', '/' => '60'), 'yd/m'), + 'YARD_PER_SECOND' => array('0.9144', 'yd/s'), + 'STANDARD' => 'METER_PER_SECOND' + ); +} diff --git a/library/Zend/Measure/Temperature.php b/library/Zend/Measure/Temperature.php new file mode 100755 index 000000000..e40c86ca2 --- /dev/null +++ b/library/Zend/Measure/Temperature.php @@ -0,0 +1,60 @@ + array(array('' => '1', '+' => '273.15'),'°C'), + 'FAHRENHEIT' => array(array('' => '1', '-' => '32', '/' => '1.8', '+' => '273.15'),'°F'), + 'RANKINE' => array(array('' => '1', '/' => '1.8'),'°R'), + 'REAUMUR' => array(array('' => '1', '*' => '1.25', '+' => '273.15'),'°r'), + 'KELVIN' => array(1,'°K'), + 'STANDARD' => 'KELVIN' + ); +} diff --git a/library/Zend/Measure/Time.php b/library/Zend/Measure/Time.php new file mode 100755 index 000000000..3ecdcf827 --- /dev/null +++ b/library/Zend/Measure/Time.php @@ -0,0 +1,117 @@ + array('31558432', 'anomalistic year'), + 'ATTOSECOND' => array('1.0e-18', 'as'), + 'CENTURY' => array('3153600000', 'century'), + 'DAY' => array('86400', 'day'), + 'DECADE' => array('315360000', 'decade'), + 'DRACONIC_YEAR' => array('29947974', 'draconic year'), + 'EXASECOND' => array('1.0e+18', 'Es'), + 'FEMTOSECOND' => array('1.0e-15', 'fs'), + 'FORTNIGHT' => array('1209600', 'fortnight'), + 'GAUSSIAN_YEAR' => array('31558196', 'gaussian year'), + 'GIGASECOND' => array('1.0e+9', 'Gs'), + 'GREAT_YEAR' => array(array('*' => '31536000', '*' => '25700'), 'great year'), + 'GREGORIAN_YEAR' => array('31536000', 'year'), + 'HOUR' => array('3600', 'h'), + 'JULIAN_YEAR' => array('31557600', 'a'), + 'KILOSECOND' => array('1000', 'ks'), + 'LEAPYEAR' => array('31622400', 'year'), + 'MEGASECOND' => array('1000000', 'Ms'), + 'MICROSECOND' => array('0.000001', 'µs'), + 'MILLENIUM' => array('31536000000', 'millenium'), + 'MILLISECOND' => array('0.001', 'ms'), + 'MINUTE' => array('60', 'min'), + 'MONTH' => array('2628600', 'month'), + 'NANOSECOND' => array('1.0e-9', 'ns'), + 'PETASECOND' => array('1.0e+15', 'Ps'), + 'PICOSECOND' => array('1.0e-12', 'ps'), + 'QUARTER' => array('7884000', 'quarter'), + 'SECOND' => array('1', 's'), + 'SHAKE' => array('1.0e-9', 'shake'), + 'SIDEREAL_YEAR' => array('31558149.7676', 'sidereal year'), + 'TERASECOND' => array('1.0e+12', 'Ts'), + 'TROPICAL_YEAR' => array('31556925', 'tropical year'), + 'WEEK' => array('604800', 'week'), + 'YEAR' => array('31536000', 'year'), + 'STANDARD' => 'SECOND' + ); +} diff --git a/library/Zend/Measure/Torque.php b/library/Zend/Measure/Torque.php new file mode 100755 index 000000000..ce2684c2c --- /dev/null +++ b/library/Zend/Measure/Torque.php @@ -0,0 +1,82 @@ + array('0.0000001', 'dyncm'), + 'GRAM_CENTIMETER' => array('0.0000980665', 'gcm'), + 'KILOGRAM_CENTIMETER' => array('0.0980665', 'kgcm'), + 'KILOGRAM_METER' => array('9.80665', 'kgm'), + 'KILONEWTON_METER' => array('1000', 'kNm'), + 'KILOPOND_METER' => array('9.80665', 'kpm'), + 'MEGANEWTON_METER' => array('1000000', 'MNm'), + 'MICRONEWTON_METER' => array('0.000001', 'µNm'), + 'MILLINEWTON_METER' => array('0.001', 'mNm'), + 'NEWTON_CENTIMETER' => array('0.01', 'Ncm'), + 'NEWTON_METER' => array('1', 'Nm'), + 'OUNCE_FOOT' => array('0.084738622', 'ozft'), + 'OUNCE_INCH' => array(array('' => '0.084738622', '/' => '12'), 'ozin'), + 'POUND_FOOT' => array(array('' => '0.084738622', '*' => '16'), 'lbft'), + 'POUNDAL_FOOT' => array('0.0421401099752144', 'plft'), + 'POUND_INCH' => array(array('' => '0.084738622', '/' => '12', '*' => '16'), 'lbin'), + 'STANDARD' => 'NEWTON_METER' + ); +} diff --git a/library/Zend/Measure/Viscosity/Dynamic.php b/library/Zend/Measure/Viscosity/Dynamic.php new file mode 100755 index 000000000..8e9e29471 --- /dev/null +++ b/library/Zend/Measure/Viscosity/Dynamic.php @@ -0,0 +1,120 @@ + array('0.001', 'cP'), + 'DECIPOISE' => array('0.01', 'dP'), + 'DYNE_SECOND_PER_SQUARE_CENTIMETER' => array('0.1', 'dyn s/cm²'), + 'GRAM_FORCE_SECOND_PER_SQUARE_CENTIMETER' => array('98.0665', 'gf s/cm²'), + 'GRAM_PER_CENTIMETER_SECOND' => array('0.1', 'g/cm s'), + 'KILOGRAM_FORCE_SECOND_PER_SQUARE_METER' => array('9.80665', 'kgf s/m²'), + 'KILOGRAM_PER_METER_HOUR' => array(array('' => '1', '/' => '3600'), 'kg/m h'), + 'KILOGRAM_PER_METER_SECOND' => array('1', 'kg/ms'), + 'MILLIPASCAL_SECOND' => array('0.001', 'mPa s'), + 'MILLIPOISE' => array('0.0001', 'mP'), + 'NEWTON_SECOND_PER_SQUARE_METER' => array('1', 'N s/m²'), + 'PASCAL_SECOND' => array('1', 'Pa s'), + 'POISE' => array('0.1', 'P'), + 'POISEUILLE' => array('1', 'Pl'), + 'POUND_FORCE_SECOND_PER_SQUARE_FEET' => array('47.880259', 'lbf s/ft²'), + 'POUND_FORCE_SECOND_PER_SQUARE_INCH' => array('6894.75729', 'lbf s/in²'), + 'POUND_PER_FOOT_HOUR' => array('0.00041337887', 'lb/ft h'), + 'POUND_PER_FOOT_SECOND' => array('1.4881639', 'lb/ft s'), + 'POUNDAL_HOUR_PER_SQUARE_FOOT' => array('0.00041337887', 'pdl h/ft²'), + 'POUNDAL_SECOND_PER_SQUARE_FOOT' => array('1.4881639', 'pdl s/ft²'), + 'REYN' => array('6894.75729', 'reyn'), + 'SLUG_PER_FOOT_SECOND'=> array('47.880259', 'slug/ft s'), + 'WATER_20C' => array('0.001', 'water (20°)'), + 'WATER_40C' => array('0.00065', 'water (40°)'), + 'HEAVY_OIL_20C' => array('0.45', 'oil (20°)'), + 'HEAVY_OIL_40C' => array('0.11', 'oil (40°)'), + 'GLYCERIN_20C' => array('1.41', 'glycerin (20°)'), + 'GLYCERIN_40C' => array('0.284', 'glycerin (40°)'), + 'SAE_5W_MINUS18C' => array('1.2', 'SAE 5W (-18°)'), + 'SAE_10W_MINUS18C' => array('2.4', 'SAE 10W (-18°)'), + 'SAE_20W_MINUS18C' => array('9.6', 'SAE 20W (-18°)'), + 'SAE_5W_99C' => array('0.0039', 'SAE 5W (99°)'), + 'SAE_10W_99C' => array('0.0042', 'SAE 10W (99°)'), + 'SAE_20W_99C' => array('0.0057', 'SAE 20W (99°)'), + 'STANDARD' => 'KILOGRAM_PER_METER_SECOND' + ); +} diff --git a/library/Zend/Measure/Viscosity/Kinematic.php b/library/Zend/Measure/Viscosity/Kinematic.php new file mode 100755 index 000000000..9da9d8e85 --- /dev/null +++ b/library/Zend/Measure/Viscosity/Kinematic.php @@ -0,0 +1,106 @@ + array('0.000001', 'cSt'), + 'LENTOR' => array('0.0001', 'lentor'), + 'LITER_PER_CENTIMETER_DAY' => array(array('' => '1', '/' => '864000'), 'l/cm day'), + 'LITER_PER_CENTIMETER_HOUR' => array(array('' => '1', '/' => '36000'), 'l/cm h'), + 'LITER_PER_CENTIMETER_MINUTE' => array(array('' => '1', '/' => '600'), 'l/cm m'), + 'LITER_PER_CENTIMETER_SECOND' => array('0.1', 'l/cm s'), + 'POISE_CUBIC_CENTIMETER_PER_GRAM' => array('0.0001', 'P cm³/g'), + 'SQUARE_CENTIMETER_PER_DAY' => array(array('' => '1', '/' => '864000000'),'cm²/day'), + 'SQUARE_CENTIMETER_PER_HOUR' => array(array('' => '1', '/' => '36000000'),'cm²/h'), + 'SQUARE_CENTIMETER_PER_MINUTE' => array(array('' => '1', '/' => '600000'),'cm²/m'), + 'SQUARE_CENTIMETER_PER_SECOND' => array('0.0001', 'cm²/s'), + 'SQUARE_FOOT_PER_DAY' => array('0.0000010752667', 'ft²/day'), + 'SQUARE_FOOT_PER_HOUR' => array('0.0000258064', 'ft²/h'), + 'SQUARE_FOOT_PER_MINUTE' => array('0.001548384048', 'ft²/m'), + 'SQUARE_FOOT_PER_SECOND' => array('0.09290304', 'ft²/s'), + 'SQUARE_INCH_PER_DAY' => array('7.4671296e-9', 'in²/day'), + 'SQUARE_INCH_PER_HOUR' => array('0.00000017921111', 'in²/h'), + 'SQUARE_INCH_PER_MINUTE' => array('0.000010752667', 'in²/m'), + 'SQUARE_INCH_PER_SECOND' => array('0.00064516', 'in²/s'), + 'SQUARE_METER_PER_DAY' => array(array('' => '1', '/' => '86400'), 'm²/day'), + 'SQUARE_METER_PER_HOUR' => array(array('' => '1', '/' => '3600'), 'm²/h'), + 'SQUARE_METER_PER_MINUTE' => array(array('' => '1', '/' => '60'), 'm²/m'), + 'SQUARE_METER_PER_SECOND' => array('1', 'm²/s'), + 'SQUARE_MILLIMETER_PER_DAY' => array(array('' => '1', '/' => '86400000000'), 'mm²/day'), + 'SQUARE_MILLIMETER_PER_HOUR' => array(array('' => '1', '/' => '3600000000'), 'mm²/h'), + 'SQUARE_MILLIMETER_PER_MINUTE' => array(array('' => '1', '/' => '60000000'), 'mm²/m'), + 'SQUARE_MILLIMETER_PER_SECOND' => array('0.000001', 'mm²/s'), + 'STOKES' => array('0.0001', 'St'), + 'STANDARD' => 'SQUARE_METER_PER_SECOND' + ); +} diff --git a/library/Zend/Measure/Volume.php b/library/Zend/Measure/Volume.php new file mode 100755 index 000000000..6fe63b633 --- /dev/null +++ b/library/Zend/Measure/Volume.php @@ -0,0 +1,213 @@ + array('1233.48185532', 'ac ft'), + 'ACRE_FOOT_SURVEY' => array('1233.489', 'ac ft'), + 'ACRE_INCH' => array('102.79015461', 'ac in'), + 'BARREL_WINE' => array('0.143201835', 'bbl'), + 'BARREL' => array('0.16365924', 'bbl'), + 'BARREL_US_DRY' => array(array('' => '26.7098656608', '/' => '231'), 'bbl'), + 'BARREL_US_FEDERAL' => array('0.1173477658', 'bbl'), + 'BARREL_US' => array('0.1192404717', 'bbl'), + 'BARREL_US_PETROLEUM' => array('0.1589872956', 'bbl'), + 'BOARD_FOOT' => array(array('' => '6.5411915904', '/' => '2772'), 'board foot'), + 'BUCKET' => array('0.01818436', 'bucket'), + 'BUCKET_US' => array('0.018927059', 'bucket'), + 'BUSHEL' => array('0.03636872', 'bu'), + 'BUSHEL_US' => array('0.03523907', 'bu'), + 'CENTILITER' => array('0.00001', 'cl'), + 'CORD' => array('3.624556416', 'cd'), + 'CORD_FOOT' => array('0.453069552', 'cd ft'), + 'CUBIC_CENTIMETER' => array('0.000001', 'cm³'), + 'CUBIC_CUBIT' => array('0.144', 'cubit³'), + 'CUBIC_DECIMETER' => array('0.001', 'dm³'), + 'CUBIC_DEKAMETER' => array('1000', 'dam³'), + 'CUBIC_FOOT' => array(array('' => '6.54119159', '/' => '231'), 'ft³'), + 'CUBIC_INCH' => array(array('' => '0.0037854118', '/' => '231'), 'in³'), + 'CUBIC_KILOMETER' => array('1.0e+9', 'km³'), + 'CUBIC_METER' => array('1', 'm³'), + 'CUBIC_MILE' => array(array('' => '0.0037854118', '/' => '231', '*' => '75271680', '*' => '3379200'), + 'mi³'), + 'CUBIC_MICROMETER' => array('1.0e-18', 'µm³'), + 'CUBIC_MILLIMETER' => array('1.0e-9', 'mm³'), + 'CUBIC_YARD' => array(array('' => '0.0037854118', '/' => '231', '*' => '46656'), 'yd³'), + 'CUP_CANADA' => array('0.0002273045', 'c'), + 'CUP' => array('0.00025', 'c'), + 'CUP_US' => array(array('' => '0.0037854118', '/' => '16'), 'c'), + 'DECILITER' => array('0.0001', 'dl'), + 'DEKALITER' => array('0.001', 'dal'), + 'DRAM' => array(array('' => '0.0037854118', '/' => '1024'), 'dr'), + 'DRUM_US' => array('0.208197649', 'drum'), + 'DRUM' => array('0.2', 'drum'), + 'FIFTH' => array('0.00075708236', 'fifth'), + 'GALLON' => array('0.00454609', 'gal'), + 'GALLON_US_DRY' => array('0.0044048838', 'gal'), + 'GALLON_US' => array('0.0037854118', 'gal'), + 'GILL' => array(array('' => '0.00454609', '/' => '32'), 'gi'), + 'GILL_US' => array(array('' => '0.0037854118', '/' => '32'), 'gi'), + 'HECTARE_METER' => array('10000', 'ha m'), + 'HECTOLITER' => array('0.1', 'hl'), + 'HOGSHEAD' => array('0.28640367', 'hhd'), + 'HOGSHEAD_US' => array('0.2384809434', 'hhd'), + 'JIGGER' => array(array('' => '0.0037854118', '/' => '128', '*' => '1.5'), 'jigger'), + 'KILOLITER' => array('1', 'kl'), + 'LITER' => array('0.001', 'l'), + 'MEASURE' => array('0.0077', 'measure'), + 'MEGALITER' => array('1000', 'Ml'), + 'MICROLITER' => array('1.0e-9', 'µl'), + 'MILLILITER' => array('0.000001', 'ml'), + 'MINIM' => array(array('' => '0.00454609', '/' => '76800'), 'min'), + 'MINIM_US' => array(array('' => '0.0037854118','/' => '61440'), 'min'), + 'OUNCE' => array(array('' => '0.00454609', '/' => '160'), 'oz'), + 'OUNCE_US' => array(array('' => '0.0037854118', '/' => '128'), 'oz'), + 'PECK' => array('0.00909218', 'pk'), + 'PECK_US' => array('0.0088097676', 'pk'), + 'PINT' => array(array('' => '0.00454609', '/' => '8'), 'pt'), + 'PINT_US_DRY' => array(array('' => '0.0044048838', '/' => '8'), 'pt'), + 'PINT_US' => array(array('' => '0.0037854118', '/' => '8'), 'pt'), + 'PIPE' => array('0.49097772', 'pipe'), + 'PIPE_US' => array('0.4769618868', 'pipe'), + 'PONY' => array(array('' => '0.0037854118', '/' => '128'), 'pony'), + 'QUART_GERMANY' => array('0.00114504', 'qt'), + 'QUART_ANCIENT' => array('0.00108', 'qt'), + 'QUART' => array(array('' => '0.00454609', '/' => '4'), 'qt'), + 'QUART_US_DRY' => array(array('' => '0.0044048838', '/' => '4'), 'qt'), + 'QUART_US' => array(array('' => '0.0037854118', '/' => '4'), 'qt'), + 'QUART_UK' => array('0.29094976', 'qt'), + 'SHOT' => array(array('' => '0.0037854118', '/' => '128'), 'shot'), + 'STERE' => array('1', 'st'), + 'TABLESPOON' => array('0.000015', 'tbsp'), + 'TABLESPOON_UK' => array(array('' => '0.00454609', '/' => '320'), 'tbsp'), + 'TABLESPOON_US' => array(array('' => '0.0037854118', '/' => '256'), 'tbsp'), + 'TEASPOON' => array('0.000005', 'tsp'), + 'TEASPOON_UK' => array(array('' => '0.00454609', '/' => '1280'), 'tsp'), + 'TEASPOON_US' => array(array('' => '0.0037854118', '/' => '768'), 'tsp'), + 'YARD' => array(array('' => '176.6121729408', '/' => '231'), 'yd'), + 'STANDARD' => 'CUBIC_METER' + ); +} diff --git a/library/Zend/Measure/Weight.php b/library/Zend/Measure/Weight.php new file mode 100755 index 000000000..685e40477 --- /dev/null +++ b/library/Zend/Measure/Weight.php @@ -0,0 +1,480 @@ + array('0.5', 'arratel'), + 'ARTEL' => array('0.5', 'artel'), + 'ARROBA_PORTUGUESE' => array('14.69', 'arroba'), + 'ARROBA' => array('11.502', '@'), + 'AS_' => array('0.000052', 'as'), + 'ASS' => array('0.000052', 'ass'), + 'ATOMIC_MASS_UNIT_1960' => array('1.6603145e-27', 'amu'), + 'ATOMIC_MASS_UNIT_1973' => array('1.6605655e-27', 'amu'), + 'ATOMIC_MASS_UNIT_1986' => array('1.6605402e-27', 'amu'), + 'ATOMIC_MASS_UNIT' => array('1.66053873e-27', 'amu'), + 'AVOGRAM' => array('1.6605402e-27', 'avogram'), + 'BAG' => array('42.63768278', 'bag'), + 'BAHT' => array('0.015', 'baht'), + 'BALE' => array('326.5865064', 'bl'), + 'BALE_US' => array('217.7243376', 'bl'), + 'BISMAR_POUND' => array('5.993', 'bismar pound'), + 'CANDY' => array('254', 'candy'), + 'CARAT_INTERNATIONAL' => array('0.0002', 'ct'), + 'CARAT' => array('0.0002', 'ct'), + 'CARAT_UK' => array('0.00025919564', 'ct'), + 'CARAT_US_1913' => array('0.0002053', 'ct'), + 'CARGA' => array('140', 'carga'), + 'CATTI' => array('0.604875', 'catti'), + 'CATTI_JAPANESE' => array('0.594', 'catti'), + 'CATTY' => array('0.5', 'catty'), + 'CATTY_JAPANESE' => array('0.6', 'catty'), + 'CATTY_THAI' => array('0.6', 'catty'), + 'CENTAL' => array('45.359237', 'cH'), + 'CENTIGRAM' => array('0.00001', 'cg'), + 'CENTNER' => array('50', 'centner'), + 'CENTNER_RUSSIAN' => array('100', 'centner'), + 'CHALDER' => array('2692.52', 'chd'), + 'CHALDRON' => array('2692.52', 'chd'), + 'CHIN' => array('0.5', 'chin'), + 'CHIN_JAPANESE' => array('0.6', 'chin'), + 'CLOVE' => array('3.175', 'clove'), + 'CRITH' => array('0.000089885', 'crith'), + 'DALTON' => array('1.6605402e-27', 'D'), + 'DAN' => array('50', 'dan'), + 'DAN_JAPANESE' => array('60', 'dan'), + 'DECIGRAM' => array('0.0001', 'dg'), + 'DECITONNE' => array('100', 'dt'), + 'DEKAGRAM' => array('0.01', 'dag'), + 'DEKATONNE' => array('10000', 'dat'), + 'DENARO' => array('0.0011', 'denaro'), + 'DENIER' => array('0.001275', 'denier'), + 'DRACHME' => array('0.0038', 'drachme'), + 'DRAM' => array(array('' => '0.45359237', '/' => '256'), 'dr'), + 'DRAM_APOTHECARIES' => array('0.0038879346', 'dr'), + 'DYNE' => array('1.0197162e-6', 'dyn'), + 'ELECTRON' => array('9.109382e-31', 'e−'), + 'ELECTRONVOLT' => array('1.782662e-36', 'eV'), + 'ETTO' => array('0.1', 'hg'), + 'EXAGRAM' => array('1.0e+15', 'Eg'), + 'FEMTOGRAM' => array('1.0e-18', 'fg'), + 'FIRKIN' => array('25.40117272', 'fir'), + 'FLASK' => array('34.7', 'flask'), + 'FOTHER' => array('979.7595192', 'fother'), + 'FOTMAL' => array('32.65865064', 'fotmal'), + 'FUNT' => array('0.4095', 'funt'), + 'FUNTE' => array('0.4095', 'funte'), + 'GAMMA' => array('0.000000001', 'gamma'), + 'GIGAELECTRONVOLT' => array('1.782662e-27', 'GeV'), + 'GIGAGRAM' => array('1000000', 'Gg'), + 'GIGATONNE' => array('1.0e+12', 'Gt'), + 'GIN' => array('0.6', 'gin'), + 'GIN_JAPANESE' => array('0.594', 'gin'), + 'GRAIN' => array('0.00006479891', 'gr'), + 'GRAM' => array('0.001', 'g'), + 'GRAN' => array('0.00082', 'gran'), + 'GRANO' => array('0.00004905', 'grano'), + 'GRANI' => array('0.00004905', 'grani'), + 'GROS' => array('0.003824', 'gros'), + 'HECTOGRAM' => array('0.1', 'hg'), + 'HUNDRETWEIGHT' => array('50.80234544', 'cwt'), + 'HUNDRETWEIGHT_US' => array('45.359237', 'cwt'), + 'HYL' => array('9.80665', 'hyl'), + 'JIN' => array('0.5', 'jin'), + 'JUPITER' => array('1.899e+27', 'jupiter'), + 'KATI' => array('0.5', 'kati'), + 'KATI_JAPANESE' => array('0.6', 'kati'), + 'KEEL' => array('21540.19446656', 'keel'), + 'KEG' => array('45.359237', 'keg'), + 'KILODALTON' => array('1.6605402e-24', 'kD'), + 'KILOGRAM' => array('1', 'kg'), + 'KILOGRAM_FORCE' => array('1', 'kgf'), + 'KILOTON' => array('1016046.9088', 'kt'), + 'KILOTON_US' => array('907184.74', 'kt'), + 'KILOTONNE' => array('1000000', 'kt'), + 'KIN' => array('0.6', 'kin'), + 'KIP' => array('453.59237', 'kip'), + 'KOYAN' => array('2419', 'koyan'), + 'KWAN' => array('3.75', 'kwan'), + 'LAST_GERMANY' => array('2000', 'last'), + 'LAST' => array('1814.36948', 'last'), + 'LAST_WOOL' => array('1981.29147216', 'last'), + 'LB' => array('0.45359237', 'lb'), + 'LBS' => array('0.45359237', 'lbs'), + 'LIANG' => array('0.05', 'liang'), + 'LIBRE_ITALIAN' => array('0.339', 'lb'), + 'LIBRA_SPANISH' => array('0.459', 'lb'), + 'LIBRA_PORTUGUESE' => array('0.459', 'lb'), + 'LIBRA_ANCIENT' => array('0.323', 'lb'), + 'LIBRA' => array('1', 'lb'), + 'LIVRE' => array('0.4895', 'livre'), + 'LONG_TON' => array('1016.0469088', 't'), + 'LOT' => array('0.015', 'lot'), + 'MACE' => array('0.003778', 'mace'), + 'MAHND' => array('0.9253284348', 'mahnd'), + 'MARC' => array('0.24475', 'marc'), + 'MARCO' => array('0.23', 'marco'), + 'MARK' => array('0.2268', 'mark'), + 'MARK_GERMANY' => array('0.2805', 'mark'), + 'MAUND' => array('37.3242', 'maund'), + 'MAUND_PAKISTAN' => array('40', 'maund'), + 'MEGADALTON' => array('1.6605402e-21', 'MD'), + 'MEGAGRAM' => array('1000', 'Mg'), + 'MEGATONNE' => array('1.0e+9', 'Mt'), + 'MERCANTILE_POUND' => array('0.46655', 'lb merc'), + 'METRIC_TON' => array('1000', 't'), + 'MIC' => array('1.0e-9', 'mic'), + 'MICROGRAM' => array('1.0e-9', '�g'), + 'MILLIDALTON' => array('1.6605402e-30', 'mD'), + 'MILLIER' => array('1000', 'millier'), + 'MILLIGRAM' => array('0.000001', 'mg'), + 'MILLIMASS_UNIT' => array('1.6605402e-30', 'mmu'), + 'MINA' => array('0.499', 'mina'), + 'MOMME' => array('0.00375', 'momme'), + 'MYRIAGRAM' => array('10', 'myg'), + 'NANOGRAM' => array('1.0e-12', 'ng'), + 'NEWTON' => array('0.101971621', 'N'), + 'OBOL' => array('0.0001', 'obol'), + 'OBOLOS' => array('0.0001', 'obolos'), + 'OBOLUS' => array('0.0001', 'obolus'), + 'OBOLOS_ANCIENT' => array('0.0005', 'obolos'), + 'OBOLUS_ANCIENT' => array('0.00057', 'obolos'), + 'OKA' => array('1.28', 'oka'), + 'ONCA' => array('0.02869', 'onca'), + 'ONCE' => array('0.03059', 'once'), + 'ONCIA' => array('0.0273', 'oncia'), + 'ONZA' => array('0.02869', 'onza'), + 'ONS' => array('0.1', 'ons'), + 'OUNCE' => array(array('' => '0.45359237', '/' => '16'), 'oz'), + 'OUNCE_FORCE' => array(array('' => '0.45359237', '/' => '16'), 'ozf'), + 'OUNCE_TROY' => array(array('' => '65.31730128', '/' => '2100'), 'oz'), + 'PACKEN' => array('490.79', 'packen'), + 'PENNYWEIGHT' => array(array('' => '65.31730128', '/' => '42000'), 'dwt'), + 'PETAGRAM' => array('1.0e+12', 'Pg'), + 'PFUND' => array('0.5', 'pfd'), + 'PICOGRAM' => array('1.0e-15', 'pg'), + 'POINT' => array('0.000002', 'pt'), + 'POND' => array('0.5', 'pond'), + 'POUND' => array('0.45359237', 'lb'), + 'POUND_FORCE' => array('0.4535237', 'lbf'), + 'POUND_METRIC' => array('0.5', 'lb'), + 'POUND_TROY' => array(array('' => '65.31730128', '/' => '175'), 'lb'), + 'PUD' => array('16.3', 'pud'), + 'POOD' => array('16.3', 'pood'), + 'PUND' => array('0.5', 'pund'), + 'QIAN' => array('0.005', 'qian'), + 'QINTAR' => array('50', 'qintar'), + 'QUARTER' => array('12.70058636', 'qtr'), + 'QUARTER_US' => array('11.33980925', 'qtr'), + 'QUARTER_TON' => array('226.796185', 'qtr'), + 'QUARTERN' => array('1.587573295', 'quartern'), + 'QUARTERN_LOAF' => array('1.81436948', 'quartern-loaf'), + 'QUINTAL_FRENCH' => array('48.95', 'q'), + 'QUINTAL' => array('100', 'q'), + 'QUINTAL_PORTUGUESE' => array('58.752', 'q'), + 'QUINTAL_SPAIN' => array('45.9', 'q'), + 'REBAH' => array('0.2855', 'rebah'), + 'ROTL' => array('0.5', 'rotl'), + 'ROTEL' => array('0.5', 'rotel'), + 'ROTTLE' => array('0.5', 'rottle'), + 'RATEL' => array('0.5', 'ratel'), + 'SACK' => array('165.10762268', 'sack'), + 'SCRUPLE' => array(array('' => '65.31730128', '/' => '50400'), 's'), + 'SEER' => array('0.933105', 'seer'), + 'SEER_PAKISTAN' => array('1', 'seer'), + 'SHEKEL' => array('0.01142', 'shekel'), + 'SHORT_TON' => array('907.18474', 'st'), + 'SLINCH' => array('175.126908', 'slinch'), + 'SLUG' => array('14.593903', 'slug'), + 'STONE' => array('6.35029318', 'st'), + 'TAEL' => array('0.03751', 'tael'), + 'TAHIL_JAPANESE' => array('0.03751', 'tahil'), + 'TAHIL' => array('0.05', 'tahil'), + 'TALENT' => array('30', 'talent'), + 'TAN' => array('50', 'tan'), + 'TECHNISCHE_MASS_EINHEIT' => array('9.80665', 'TME'), + 'TERAGRAM' => array('1.0e+9', 'Tg'), + 'TETRADRACHM' => array('0.014', 'tetradrachm'), + 'TICAL' => array('0.0164', 'tical'), + 'TOD' => array('12.70058636', 'tod'), + 'TOLA' => array('0.0116638125', 'tola'), + 'TOLA_PAKISTAN' => array('0.0125', 'tola'), + 'TON_UK' => array('1016.0469088', 't'), + 'TON' => array('1000', 't'), + 'TON_US' => array('907.18474', 't'), + 'TONELADA_PORTUGUESE' => array('793.15', 'tonelada'), + 'TONELADA' => array('919.9', 'tonelada'), + 'TONNE' => array('1000', 't'), + 'TONNEAU' => array('979', 'tonneau'), + 'TOVAR' => array('128.8', 'tovar'), + 'TROY_OUNCE' => array(array('' => '65.31730128', '/' => '2100'), 'troy oz'), + 'TROY_POUND' => array(array('' => '65.31730128', '/' => '175'), 'troy lb'), + 'TRUSS' => array('25.40117272', 'truss'), + 'UNCIA' => array('0.0272875', 'uncia'), + 'UNZE' => array('0.03125', 'unze'), + 'VAGON' => array('10000', 'vagon'), + 'YOCTOGRAM' => array('1.0e-27', 'yg'), + 'YOTTAGRAM' => array('1.0e+21', 'Yg'), + 'ZENTNER' => array('50', 'Ztr'), + 'ZEPTOGRAM' => array('1.0e-24', 'zg'), + 'ZETTAGRAM' => array('1.0e+18', 'Zg'), + 'STANDARD' => 'KILOGRAM' + ); +} diff --git a/library/Zend/Memory.php b/library/Zend/Memory.php new file mode 100755 index 000000000..39c1e10ac --- /dev/null +++ b/library/Zend/Memory.php @@ -0,0 +1,82 @@ +_memContainer = $memContainer; + } + + /** + * Object destructor + */ + public function __destruct() + { + $this->_memContainer->destroy(); + } + + + /** + * Get string value reference + * + * _Must_ be used for value access before PHP v 5.2 + * or _may_ be used for performance considerations + * + * @return &string + */ + public function &getRef() + { + return $this->_memContainer->getRef(); + } + + /** + * Signal, that value is updated by external code. + * + * Should be used together with getRef() + */ + public function touch() + { + $this->_memContainer->touch(); + } + + /** + * Lock object in memory. + */ + public function lock() + { + $this->_memContainer->lock(); + } + + + /** + * Unlock object + */ + public function unlock() + { + $this->_memContainer->unlock(); + } + + /** + * Return true if object is locked + * + * @return boolean + */ + public function isLocked() + { + return $this->_memContainer->isLocked(); + } + + /** + * Get handler + * + * Loads object if necessary and moves it to the top of loaded objects list. + * Swaps objects from the bottom of loaded objects list, if necessary. + * + * @param string $property + * @return string + * @throws Zend_Memory_Exception + */ + public function __get($property) + { + return $this->_memContainer->$property; + } + + /** + * Set handler + * + * @param string $property + * @param string $value + * @throws Zend_Exception + */ + public function __set($property, $value) + { + $this->_memContainer->$property = $value; + } +} diff --git a/library/Zend/Memory/Container.php b/library/Zend/Memory/Container.php new file mode 100755 index 000000000..e4773f5db --- /dev/null +++ b/library/Zend/Memory/Container.php @@ -0,0 +1,35 @@ +value = $value; + } + + /** + * Lock object in memory. + */ + public function lock() + { + /* Do nothing */ + } + + /** + * Unlock object + */ + public function unlock() + { + /* Do nothing */ + } + + /** + * Return true if object is locked + * + * @return boolean + */ + public function isLocked() + { + return true; + } + + /** + * Get string value reference + * + * _Must_ be used for value access before PHP v 5.2 + * or _may_ be used for performance considerations + * + * @return &string + */ + public function &getRef() + { + return $this->value; + } + + /** + * Signal, that value is updated by external code. + * + * Should be used together with getRef() + */ + public function touch() + { + /* Do nothing */ + } + + /** + * Destroy memory container and remove it from memory manager list + */ + public function destroy() + { + /* Do nothing */ + } +} diff --git a/library/Zend/Memory/Container/Movable.php b/library/Zend/Memory/Container/Movable.php new file mode 100755 index 000000000..48bf30dac --- /dev/null +++ b/library/Zend/Memory/Container/Movable.php @@ -0,0 +1,297 @@ +_memManager = $memoryManager; + $this->_id = $id; + $this->_state = self::LOADED; + $this->_value = new Zend_Memory_Value($value, $this); + } + + /** + * Lock object in memory. + */ + public function lock() + { + if ( !($this->_state & self::LOADED) ) { + $this->_memManager->load($this, $this->_id); + $this->_state |= self::LOADED; + } + + $this->_state |= self::LOCKED; + + /** + * @todo + * It's possible to set "value" container attribute to avoid modification tracing, while it's locked + * Check, if it's more effective + */ + } + + /** + * Unlock object + */ + public function unlock() + { + // Clear LOCKED state bit + $this->_state &= ~self::LOCKED; + } + + /** + * Return true if object is locked + * + * @return boolean + */ + public function isLocked() + { + return $this->_state & self::LOCKED; + } + + /** + * Get handler + * + * Loads object if necessary and moves it to the top of loaded objects list. + * Swaps objects from the bottom of loaded objects list, if necessary. + * + * @param string $property + * @return string + * @throws Zend_Memory_Exception + */ + public function __get($property) + { + if ($property != 'value') { + require_once 'Zend/Memory/Exception.php'; + throw new Zend_Memory_Exception('Unknown property: Zend_Memory_container::$' . $property); + } + + if ( !($this->_state & self::LOADED) ) { + $this->_memManager->load($this, $this->_id); + $this->_state |= self::LOADED; + } + + return $this->_value; + } + + /** + * Set handler + * + * @param string $property + * @param string $value + * @throws Zend_Exception + */ + public function __set($property, $value) + { + if ($property != 'value') { + require_once 'Zend/Memory/Exception.php'; + throw new Zend_Memory_Exception('Unknown property: Zend_Memory_container::$' . $property); + } + + $this->_state = self::LOADED; + $this->_value = new Zend_Memory_Value($value, $this); + + $this->_memManager->processUpdate($this, $this->_id); + } + + + /** + * Get string value reference + * + * _Must_ be used for value access before PHP v 5.2 + * or _may_ be used for performance considerations + * + * @return &string + */ + public function &getRef() + { + if ( !($this->_state & self::LOADED) ) { + $this->_memManager->load($this, $this->_id); + $this->_state |= self::LOADED; + } + + return $this->_value->getRef(); + } + + /** + * Signal, that value is updated by external code. + * + * Should be used together with getRef() + */ + public function touch() + { + $this->_memManager->processUpdate($this, $this->_id); + } + + /** + * Process container value update. + * Must be called only by value object + * + * @internal + */ + public function processUpdate() + { + // Clear SWAPPED state bit + $this->_state &= ~self::SWAPPED; + + $this->_memManager->processUpdate($this, $this->_id); + } + + /** + * Start modifications trace + * + * @internal + */ + public function startTrace() + { + if ( !($this->_state & self::LOADED) ) { + $this->_memManager->load($this, $this->_id); + $this->_state |= self::LOADED; + } + + $this->_value->startTrace(); + } + + /** + * Set value (used by memory manager when value is loaded) + * + * @internal + */ + public function setValue($value) + { + $this->_value = new Zend_Memory_Value($value, $this); + } + + /** + * Clear value (used by memory manager when value is swapped) + * + * @internal + */ + public function unloadValue() + { + // Clear LOADED state bit + $this->_state &= ~self::LOADED; + + $this->_value = null; + } + + /** + * Mark, that object is swapped + * + * @internal + */ + public function markAsSwapped() + { + // Clear LOADED state bit + $this->_state |= self::LOADED; + } + + /** + * Check if object is marked as swapped + * + * @internal + * @return boolean + */ + public function isSwapped() + { + return $this->_state & self::SWAPPED; + } + + /** + * Get object id + * + * @internal + * @return integer + */ + public function getId() + { + return $this->_id; + } + /** + * Destroy memory container and remove it from memory manager list + * + * @internal + */ + public function destroy() + { + /** + * We don't clean up swap because of performance considerations + * Cleaning is performed by Memory Manager destructor + */ + + $this->_memManager->unlink($this, $this->_id); + } +} diff --git a/library/Zend/Memory/Exception.php b/library/Zend/Memory/Exception.php new file mode 100755 index 000000000..4306a8ad8 --- /dev/null +++ b/library/Zend/Memory/Exception.php @@ -0,0 +1,35 @@ + => , + * ... + * ) + * + * @var array + */ + private $_unloadCandidates = array(); + + /** + * List of object sizes. + * + * This list is used to calculate modification of object sizes + * + * array( => , ...) + * + * @var array + */ + private $_sizes = array(); + + /** + * Last modified object + * + * It's used to reduce number of calls necessary to trace objects' modifications + * Modification is not processed by memory manager until we do not switch to another + * object. + * So we have to trace only _first_ object modification and do nothing for others + * + * @var Zend_Memory_Container_Movable + */ + private $_lastModified = null; + + /** + * Unique memory manager id + * + * @var integer + */ + private $_managerId; + + /** + * Tags array, used by backend to categorize stored values + * + * @var array + */ + private $_tags; + + /** + * This function is intended to generate unique id, used by memory manager + */ + private function _generateMemManagerId() + { + /** + * @todo !!! + * uniqid() php function doesn't really garantee the id to be unique + * it should be changed by something else + * (Ex. backend interface should be extended to provide this functionality) + */ + $this->_managerId = uniqid('ZendMemManager', true); + $this->_tags = array($this->_managerId); + $this->_managerId .= '_'; + } + + + /** + * Memory manager constructor + * + * If backend is not specified, then memory objects are never swapped + * + * @param Zend_Cache_Backend $backend + * @param array $backendOptions associative array of options for the corresponding backend constructor + */ + public function __construct($backend = null) + { + if ($backend === null) { + return; + } + + $this->_backend = $backend; + $this->_generateMemManagerId(); + + $memoryLimitStr = trim(ini_get('memory_limit')); + if ($memoryLimitStr != '' && $memoryLimitStr != -1) { + $this->_memoryLimit = (integer)$memoryLimitStr; + switch (strtolower($memoryLimitStr[strlen($memoryLimitStr)-1])) { + case 'g': + $this->_memoryLimit *= 1024; + // Break intentionally omitted + case 'm': + $this->_memoryLimit *= 1024; + // Break intentionally omitted + case 'k': + $this->_memoryLimit *= 1024; + break; + + default: + break; + } + + $this->_memoryLimit = (int)($this->_memoryLimit*2/3); + } // No limit otherwise + } + + /** + * Object destructor + * + * Clean up backend storage + */ + public function __destruct() + { + if ($this->_backend !== null) { + $this->_backend->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, $this->_tags); + } + } + + /** + * Set memory grow limit + * + * @param integer $newLimit + * @throws Zend_Exception + */ + public function setMemoryLimit($newLimit) + { + $this->_memoryLimit = $newLimit; + + $this->_swapCheck(); + } + + /** + * Get memory grow limit + * + * @return integer + */ + public function getMemoryLimit() + { + return $this->_memoryLimit; + } + + /** + * Set minimum size of values, which may be swapped + * + * @param integer $newSize + */ + public function setMinSize($newSize) + { + $this->_minSize = $newSize; + } + + /** + * Get minimum size of values, which may be swapped + * + * @return integer + */ + public function getMinSize() + { + return $this->_minSize; + } + + /** + * Create new Zend_Memory value container + * + * @param string $value + * @return Zend_Memory_Container_Interface + * @throws Zend_Memory_Exception + */ + public function create($value = '') + { + return $this->_create($value, false); + } + + /** + * Create new Zend_Memory value container, which has value always + * locked in memory + * + * @param string $value + * @return Zend_Memory_Container_Interface + * @throws Zend_Memory_Exception + */ + public function createLocked($value = '') + { + return $this->_create($value, true); + } + + /** + * Create new Zend_Memory object + * + * @param string $value + * @param boolean $locked + * @return Zend_Memory_Container_Interface + * @throws Zend_Memory_Exception + */ + private function _create($value, $locked) + { + $id = $this->_nextId++; + + if ($locked || ($this->_backend === null) /* Use only memory locked objects if backend is not specified */) { + return new Zend_Memory_Container_Locked($value); + } + + // Commit other objects modifications + $this->_commit(); + + $valueObject = new Zend_Memory_Container_Movable($this, $id, $value); + + // Store last object size as 0 + $this->_sizes[$id] = 0; + // prepare object for next modifications + $this->_lastModified = $valueObject; + + return new Zend_Memory_AccessController($valueObject); + } + + /** + * Unlink value container from memory manager + * + * Used by Memory container destroy() method + * + * @internal + * @param integer $id + * @return Zend_Memory_Container + */ + public function unlink(Zend_Memory_Container_Movable $container, $id) + { + if ($this->_lastModified === $container) { + // Drop all object modifications + $this->_lastModified = null; + unset($this->_sizes[$id]); + return; + } + + if (isset($this->_unloadCandidates[$id])) { + unset($this->_unloadCandidates[$id]); + } + + $this->_memorySize -= $this->_sizes[$id]; + unset($this->_sizes[$id]); + } + + /** + * Process value update + * + * @internal + * @param Zend_Memory_Container_Movable $container + * @param integer $id + */ + public function processUpdate(Zend_Memory_Container_Movable $container, $id) + { + /** + * This method is automatically invoked by memory container only once per + * "modification session", but user may call memory container touch() method + * several times depending on used algorithm. So we have to use this check + * to optimize this case. + */ + if ($container === $this->_lastModified) { + return; + } + + // Remove just updated object from list of candidates to unload + if( isset($this->_unloadCandidates[$id])) { + unset($this->_unloadCandidates[$id]); + } + + // Reduce used memory mark + $this->_memorySize -= $this->_sizes[$id]; + + // Commit changes of previously modified object if necessary + $this->_commit(); + + $this->_lastModified = $container; + } + + /** + * Commit modified object and put it back to the loaded objects list + */ + private function _commit() + { + if (($container = $this->_lastModified) === null) { + return; + } + + $this->_lastModified = null; + + $id = $container->getId(); + + // Calculate new object size and increase used memory size by this value + $this->_memorySize += ($this->_sizes[$id] = strlen($container->getRef())); + + if ($this->_sizes[$id] > $this->_minSize) { + // Move object to "unload candidates list" + $this->_unloadCandidates[$id] = $container; + } + + $container->startTrace(); + + $this->_swapCheck(); + } + + /** + * Check and swap objects if necessary + * + * @throws Zend_MemoryException + */ + private function _swapCheck() + { + if ($this->_memoryLimit < 0 || $this->_memorySize < $this->_memoryLimit) { + // Memory limit is not reached + // Do nothing + return; + } + + // walk through loaded objects in access history order + foreach ($this->_unloadCandidates as $id => $container) { + $this->_swap($container, $id); + unset($this->_unloadCandidates[$id]); + + if ($this->_memorySize < $this->_memoryLimit) { + // We've swapped enough objects + return; + } + } + + require_once 'Zend/Memory/Exception.php'; + throw new Zend_Memory_Exception('Memory manager can\'t get enough space.'); + } + + + /** + * Swap object data to disk + * Actualy swaps data or only unloads it from memory, + * if object is not changed since last swap + * + * @param Zend_Memory_Container_Movable $container + * @param integer $id + */ + private function _swap(Zend_Memory_Container_Movable $container, $id) + { + if ($container->isLocked()) { + return; + } + + if (!$container->isSwapped()) { + $this->_backend->save($container->getRef(), $this->_managerId . $id, $this->_tags); + } + + $this->_memorySize -= $this->_sizes[$id]; + + $container->markAsSwapped(); + $container->unloadValue(); + } + + /** + * Load value from swap file. + * + * @internal + * @param Zend_Memory_Container_Movable $container + * @param integer $id + */ + public function load(Zend_Memory_Container_Movable $container, $id) + { + $value = $this->_backend->load($this->_managerId . $id, true); + + // Try to swap other objects if necessary + // (do not include specified object into check) + $this->_memorySize += strlen($value); + $this->_swapCheck(); + + // Add loaded obect to the end of loaded objects list + $container->setValue($value); + + if ($this->_sizes[$id] > $this->_minSize) { + // Add object to the end of "unload candidates list" + $this->_unloadCandidates[$id] = $container; + } + } +} diff --git a/library/Zend/Memory/Value.php b/library/Zend/Memory/Value.php new file mode 100755 index 000000000..99950fb5b --- /dev/null +++ b/library/Zend/Memory/Value.php @@ -0,0 +1,177 @@ +_container = $container; + + $this->_value = (string)$value; + + /** + * Object is marked as just modified by memory manager + * So we don't need to trace followed object modifications and + * object is processed (and marked as traced) when another + * memory object is modified. + * + * It reduces overall numberr of calls necessary to modification trace + */ + $this->_trace = false; + } + + + /** + * ArrayAccess interface method + * returns true if string offset exists + * + * @param integer $offset + * @return boolean + */ + public function offsetExists($offset) + { + return $offset >= 0 && $offset < strlen($this->_value); + } + + /** + * ArrayAccess interface method + * Get character at $offset position + * + * @param integer $offset + * @return string + */ + public function offsetGet($offset) + { + return $this->_value[$offset]; + } + + /** + * ArrayAccess interface method + * Set character at $offset position + * + * @param integer $offset + * @param string $char + */ + public function offsetSet($offset, $char) + { + $this->_value[$offset] = $char; + + if ($this->_trace) { + $this->_trace = false; + $this->_container->processUpdate(); + } + } + + /** + * ArrayAccess interface method + * Unset character at $offset position + * + * @param integer $offset + */ + public function offsetUnset($offset) + { + unset($this->_value[$offset]); + + if ($this->_trace) { + $this->_trace = false; + $this->_container->processUpdate(); + } + } + + + /** + * To string conversion + * + * @return string + */ + public function __toString() + { + return $this->_value; + } + + + /** + * Get string value reference + * + * _Must_ be used for value access before PHP v 5.2 + * or _may_ be used for performance considerations + * + * @internal + * @return string + */ + public function &getRef() + { + return $this->_value; + } + + /** + * Start modifications trace + * + * _Must_ be used for value access before PHP v 5.2 + * or _may_ be used for performance considerations + * + * @internal + */ + public function startTrace() + { + $this->_trace = true; + } +} diff --git a/library/Zend/Mime.php b/library/Zend/Mime.php new file mode 100755 index 000000000..5530b6cb5 --- /dev/null +++ b/library/Zend/Mime.php @@ -0,0 +1,670 @@ + 0) { + $ptr = strlen($str); + if ($ptr > $lineLength) { + $ptr = $lineLength; + } + + // Ensure we are not splitting across an encoded character + $pos = strrpos(substr($str, 0, $ptr), '='); + if ($pos !== false && $pos >= $ptr - 2) { + $ptr = $pos; + } + + // Check if there is a space at the end of the line and rewind + if ($ptr > 0 && $str[$ptr - 1] == ' ') { + --$ptr; + } + + // Add string and continue + $out .= substr($str, 0, $ptr) . '=' . $lineEnd; + $str = substr($str, $ptr); + } + + $out = rtrim($out, $lineEnd); + $out = rtrim($out, '='); + + return $out; + } + + /** + * Converts a string into quoted printable format. + * + * @param string $str + * @return string + */ + private static function _encodeQuotedPrintable($str) + { + $str = str_replace('=', '=3D', $str); + $str = str_replace(self::$qpKeys, self::$qpReplaceValues, $str); + $str = rtrim($str); + + return $str; + } + + /** + * Encode a given string with the QUOTED_PRINTABLE mechanism for Mail Headers. + * + * Mail headers depend on an extended quoted printable algorithm otherwise + * a range of bugs can occur. + * + * @param string $str + * @param string $charset + * @param int $lineLength Line length; defaults to {@link LINELENGTH} + * @param string $lineEnd Line end; defaults to {@link LINEEND} + * @return string + */ + public static function encodeQuotedPrintableHeader( + $str, $charset, $lineLength = self::LINELENGTH, $lineEnd = self::LINEEND + ) + { + // Reduce line-length by the length of the required delimiter, charsets and encoding + $prefix = sprintf('=?%s?Q?', $charset); + $lineLength = $lineLength - strlen($prefix) - 3; + + $str = self::_encodeQuotedPrintable($str); + + // Mail-Header required chars have to be encoded also: + $str = str_replace( + array('?', ' ', '_', ','), array('=3F', '=20', '=5F', '=2C'), $str + ); + + // initialize first line, we need it anyways + $lines = array(0 => ""); + + // Split encoded text into separate lines + $tmp = ""; + while (strlen($str) > 0) { + $currentLine = max(count($lines) - 1, 0); + $token = self::getNextQuotedPrintableToken($str); + $str = substr($str, strlen($token)); + + $tmp .= $token; + if ($token == '=20') { + // only if we have a single char token or space, we can append the + // tempstring it to the current line or start a new line if necessary. + if (strlen($lines[$currentLine] . $tmp) > $lineLength) { + $lines[$currentLine + 1] = $tmp; + } else { + $lines[$currentLine] .= $tmp; + } + $tmp = ""; + } + // don't forget to append the rest to the last line + if (strlen($str) == 0) { + $lines[$currentLine] .= $tmp; + } + } + + // assemble the lines together by pre- and appending delimiters, charset, encoding. + for ($i = 0; $i < count($lines); $i++) { + $lines[$i] = " " . $prefix . $lines[$i] . "?="; + } + $str = trim(implode($lineEnd, $lines)); + + return $str; + } + + /** + * Retrieves the first token from a quoted printable string. + * + * @param string $str + * @return string + */ + private static function getNextQuotedPrintableToken($str) + { + if (substr($str, 0, 1) == "=") { + $token = substr($str, 0, 3); + } else { + $token = substr($str, 0, 1); + } + + return $token; + } + + /** + * Encode a given string in mail header compatible base64 encoding. + * + * @param string $str + * @param string $charset + * @param int $lineLength Line length; defaults to {@link LINELENGTH} + * @param string $lineEnd Line end; defaults to {@link LINEEND} + * @return string + */ + public static function encodeBase64Header( + $str, $charset, $lineLength = self::LINELENGTH, $lineEnd = self::LINEEND + ) + { + $prefix = '=?' . $charset . '?B?'; + $suffix = '?='; + $remainingLength = $lineLength - strlen($prefix) - strlen($suffix); + + $encodedValue = self::encodeBase64($str, $remainingLength, $lineEnd); + $encodedValue = str_replace( + $lineEnd, $suffix . $lineEnd . ' ' . $prefix, $encodedValue + ); + $encodedValue = $prefix . $encodedValue . $suffix; + + return $encodedValue; + } + + /** + * Encode a given string in base64 encoding and break lines + * according to the maximum linelength. + * + * @param string $str + * @param int $lineLength Line length; defaults to {@link LINELENGTH} + * @param string $lineEnd Line end; defaults to {@link LINEEND} + * @return string + */ + public static function encodeBase64( + $str, $lineLength = self::LINELENGTH, $lineEnd = self::LINEEND + ) + { + return rtrim(chunk_split(base64_encode($str), $lineLength, $lineEnd)); + } + + /** + * Constructor + * + * @param null|string $boundary + */ + public function __construct($boundary = null) + { + // This string needs to be somewhat unique + if ($boundary === null) { + $this->_boundary = '=_' . md5(microtime(1) . self::$makeUnique++); + } else { + $this->_boundary = $boundary; + } + } + + /** + * Encode the given string with the given encoding. + * + * @param string $str + * @param string $encoding + * @param string $EOL Line end; defaults to {@link Zend_Mime::LINEEND} + * @return string + */ + public static function encode($str, $encoding, $EOL = self::LINEEND) + { + switch ($encoding) { + case self::ENCODING_BASE64: + return self::encodeBase64($str, self::LINELENGTH, $EOL); + + case self::ENCODING_QUOTEDPRINTABLE: + return self::encodeQuotedPrintable($str, self::LINELENGTH, $EOL); + + default: + /** + * @todo 7Bit and 8Bit is currently handled the same way. + */ + return $str; + } + } + + /** + * Return a MIME boundary + * + * @access public + * @return string + */ + public function boundary() + { + return $this->_boundary; + } + + /** + * Return a MIME boundary line + * + * @param string $EOL Line end; defaults to {@link LINEEND} + * @return string + */ + public function boundaryLine($EOL = self::LINEEND) + { + return $EOL . '--' . $this->_boundary . $EOL; + } + + /** + * Return MIME ending + * + * @param string $EOL Line end; defaults to {@link LINEEND} + * @return string + */ + public function mimeEnd($EOL = self::LINEEND) + { + return $EOL . '--' . $this->_boundary . '--' . $EOL; + } +} diff --git a/library/Zend/Mime/Decode.php b/library/Zend/Mime/Decode.php new file mode 100755 index 000000000..caf03e1e1 --- /dev/null +++ b/library/Zend/Mime/Decode.php @@ -0,0 +1,276 @@ + array(name => value), 'body' => content), null if no parts found + * @throws Zend_Exception + */ + public static function splitMessageStruct( + $message, $boundary, $EOL = Zend_Mime::LINEEND + ) + { + $parts = self::splitMime($message, $boundary); + if (count($parts) <= 0) { + return null; + } + $result = array(); + foreach ($parts as $part) { + self::splitMessage($part, $headers, $body, $EOL); + $result[] = array( + 'header' => $headers, + 'body' => $body + ); + } + + return $result; + } + + /** + * split a message in header and body part, if no header or an + * invalid header is found $headers is empty + * + * The charset of the returned headers depend on your iconv settings. + * + * @param string $message raw message with header and optional content + * @param array $headers output param, array with headers as array(name => value) + * @param string $body output param, content of message + * @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND} + * @return null + */ + public static function splitMessage( + $message, &$headers, &$body, $EOL = Zend_Mime::LINEEND + ) + { + // check for valid header at first line + $firstline = strtok($message, "\n"); + if (!preg_match('%^[^\s]+[^:]*:%', $firstline)) { + $headers = array(); + // TODO: we're ignoring \r for now - is this function fast enough and is it safe to asume noone needs \r? + $body = str_replace( + array( + "\r", + "\n" + ), array( + '', + $EOL + ), $message + ); + + return; + } + + // find an empty line between headers and body + // default is set new line + if (strpos($message, $EOL . $EOL)) { + list($headers, $body) = explode($EOL . $EOL, $message, 2); + // next is the standard new line + } else { + if ($EOL != "\r\n" && strpos($message, "\r\n\r\n")) { + list($headers, $body) = explode("\r\n\r\n", $message, 2); + // next is the other "standard" new line + } else { + if ($EOL != "\n" && strpos($message, "\n\n")) { + list($headers, $body) = explode("\n\n", $message, 2); + // at last resort find anything that looks like a new line + } else { + @list($headers, $body) = + @preg_split("%([\r\n]+)\\1%U", $message, 2); + } + } + } + + $headers = iconv_mime_decode_headers( + $headers, ICONV_MIME_DECODE_CONTINUE_ON_ERROR + ); + + if ($headers === false) { + // an error occurs during the decoding + return; + } + + // normalize header names + foreach ($headers as $name => $header) { + $lower = strtolower($name); + if ($lower == $name) { + continue; + } + unset($headers[$name]); + if (!isset($headers[$lower])) { + $headers[$lower] = $header; + continue; + } + if (is_array($headers[$lower])) { + $headers[$lower][] = $header; + continue; + } + $headers[$lower] = array( + $headers[$lower], + $header + ); + } + } + + /** + * split a content type in its different parts + * + * @param string $type content-type + * @param string $wantedPart the wanted part, else an array with all parts is returned + * @return string|array wanted part or all parts as array('type' => content-type, partname => value) + */ + public static function splitContentType($type, $wantedPart = null) + { + return self::splitHeaderField($type, $wantedPart, 'type'); + } + + /** + * split a header field like content type in its different parts + * + * @param string $field + * @param string $wantedPart the wanted part, else an array with all parts is returned + * @param int|string $firstName key name for the first part + * @throws Zend_Exception + * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value) + */ + public static function splitHeaderField( + $field, $wantedPart = null, $firstName = 0 + ) + { + $wantedPart = strtolower($wantedPart); + $firstName = strtolower($firstName); + + // special case - a bit optimized + if ($firstName === $wantedPart) { + $field = strtok($field, ';'); + + return $field[0] == '"' ? substr($field, 1, -1) : $field; + } + + $field = $firstName . '=' . $field; + if (!preg_match_all('%([^=\s]+)\s*=\s*("[^"]+"|[^;]+)(;\s*|$)%', $field, $matches)) { + throw new Zend_Exception('not a valid header field'); + } + + if ($wantedPart) { + foreach ($matches[1] as $key => $name) { + if (strcasecmp($name, $wantedPart)) { + continue; + } + if ($matches[2][$key][0] != '"') { + return $matches[2][$key]; + } + + return substr($matches[2][$key], 1, -1); + } + + return null; + } + + $split = array(); + foreach ($matches[1] as $key => $name) { + $name = strtolower($name); + if ($matches[2][$key][0] == '"') { + $split[$name] = substr($matches[2][$key], 1, -1); + } else { + $split[$name] = $matches[2][$key]; + } + } + + return $split; + } + + /** + * decode a quoted printable encoded string + * + * The charset of the returned string depends on your iconv settings. + * + * @param string $string Encoded string + * @return string Decoded string + */ + public static function decodeQuotedPrintable($string) + { + return quoted_printable_decode($string); + } +} diff --git a/library/Zend/Mime/Exception.php b/library/Zend/Mime/Exception.php new file mode 100755 index 000000000..69ca97553 --- /dev/null +++ b/library/Zend/Mime/Exception.php @@ -0,0 +1,36 @@ +_parts; + } + + /** + * Sets the given array of Zend_Mime_Parts as the array for the message + * + * @param array $parts + */ + public function setParts($parts) + { + $this->_parts = $parts; + } + + /** + * Append a new Zend_Mime_Part to the current message + * + * @param Zend_Mime_Part $part + */ + public function addPart(Zend_Mime_Part $part) + { + /** + * @todo check for duplicate object handle + */ + $this->_parts[] = $part; + } + + /** + * Check if message needs to be sent as multipart + * MIME message or if it has only one part. + * + * @return boolean + */ + public function isMultiPart() + { + return (count($this->_parts) > 1); + } + + /** + * Set Zend_Mime object for the message + * + * This can be used to set the boundary specifically or to use a subclass of + * Zend_Mime for generating the boundary. + * + * @param Zend_Mime $mime + */ + public function setMime(Zend_Mime $mime) + { + $this->_mime = $mime; + } + + /** + * Returns the Zend_Mime object in use by the message + * + * If the object was not present, it is created and returned. Can be used to + * determine the boundary used in this message. + * + * @return Zend_Mime + */ + public function getMime() + { + if ($this->_mime === null) { + $this->_mime = new Zend_Mime(); + } + + return $this->_mime; + } + + /** + * Generate MIME-compliant message from the current configuration + * + * This can be a multipart message if more than one MIME part was added. If + * only one part is present, the content of this part is returned. If no + * part had been added, an empty string is returned. + * + * Parts are seperated by the mime boundary as defined in Zend_Mime. If + * {@link setMime()} has been called before this method, the Zend_Mime + * object set by this call will be used. Otherwise, a new Zend_Mime object + * is generated and used. + * + * @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND} + * @return string + */ + public function generateMessage($EOL = Zend_Mime::LINEEND) + { + if (!$this->isMultiPart()) { + $body = array_shift($this->_parts); + $body = $body->getContent($EOL); + } else { + $mime = $this->getMime(); + + $boundaryLine = $mime->boundaryLine($EOL); + $body = 'This is a message in Mime Format. If you see this, ' + . "your mail reader does not support this format." . $EOL; + + foreach (array_keys($this->_parts) as $p) { + $body .= $boundaryLine + . $this->getPartHeaders($p, $EOL) + . $EOL + . $this->getPartContent($p, $EOL); + } + + $body .= $mime->mimeEnd($EOL); + } + + return trim($body); + } + + /** + * Get the headers of a given part as an array + * + * @param int $partnum + * @return array + */ + public function getPartHeadersArray($partnum) + { + return $this->_parts[$partnum]->getHeadersArray(); + } + + /** + * Get the headers of a given part as a string + * + * @param int $partnum + * @param string $EOL + * @return string + */ + public function getPartHeaders($partnum, $EOL = Zend_Mime::LINEEND) + { + return $this->_parts[$partnum]->getHeaders($EOL); + } + + /** + * Get the (encoded) content of a given part as a string + * + * @param int $partnum + * @param string $EOL + * @return string + */ + public function getPartContent($partnum, $EOL = Zend_Mime::LINEEND) + { + return $this->_parts[$partnum]->getContent($EOL); + } + + /** + * Explode MIME multipart string into seperate parts + * + * Parts consist of the header and the body of each MIME part. + * + * @param string $body + * @param string $boundary + * @throws Zend_Exception + * @return array + */ + protected static function _disassembleMime($body, $boundary) + { + $start = 0; + $res = array(); + // find every mime part limiter and cut out the + // string before it. + // the part before the first boundary string is discarded: + $p = strpos($body, '--' . $boundary . "\n", $start); + if ($p === false) { + // no parts found! + return array(); + } + + // position after first boundary line + $start = $p + 3 + strlen($boundary); + + while (($p = strpos($body, '--' . $boundary . "\n", $start)) + !== false) { + $res[] = substr($body, $start, $p - $start); + $start = $p + 3 + strlen($boundary); + } + + // no more parts, find end boundary + $p = strpos($body, '--' . $boundary . '--', $start); + if ($p === false) { + throw new Zend_Exception('Not a valid Mime Message: End Missing'); + } + + // the remaining part also needs to be parsed: + $res[] = substr($body, $start, $p - $start); + + return $res; + } + + /** + * Decodes a MIME encoded string and returns a Zend_Mime_Message object with + * all the MIME parts set according to the given string + * + * @param string $message + * @param string $boundary + * @param string $EOL EOL string; defaults to {@link Zend_Mime::LINEEND} + * @throws Zend_Exception + * @return Zend_Mime_Message + */ + public static function createFromMessage( + $message, $boundary, $EOL = Zend_Mime::LINEEND + ) + { + require_once 'Zend/Mime/Decode.php'; + $parts = Zend_Mime_Decode::splitMessageStruct($message, $boundary, $EOL); + + $res = new self(); + foreach ($parts as $part) { + // now we build a new MimePart for the current Message Part: + $newPart = new Zend_Mime_Part($part['body']); + foreach ($part['header'] as $key => $value) { + /** + * @todo check for characterset and filename + */ + switch (strtolower($key)) { + case 'content-type': + $newPart->type = $value; + break; + case 'content-transfer-encoding': + $newPart->encoding = $value; + break; + case 'content-id': + $newPart->id = trim($value, '<>'); + break; + case 'content-disposition': + $newPart->disposition = $value; + break; + case 'content-description': + $newPart->description = $value; + break; + case 'content-location': + $newPart->location = $value; + break; + case 'content-language': + $newPart->language = $value; + break; + default: + throw new Zend_Exception( + 'Unknown header ignored for MimePart:' . $key + ); + } + } + $res->addPart($newPart); + } + + return $res; + } +} diff --git a/library/Zend/Mime/Part.php b/library/Zend/Mime/Part.php new file mode 100755 index 000000000..c28e95cf4 --- /dev/null +++ b/library/Zend/Mime/Part.php @@ -0,0 +1,333 @@ +_content = $content; + if (is_resource($content)) { + $this->_isStream = true; + } + } + + /** + * @todo setters/getters + * @todo error checking for setting $type + * @todo error checking for setting $encoding + */ + + /** + * check if this part can be read as a stream. + * if true, getEncodedStream can be called, otherwise + * only getContent can be used to fetch the encoded + * content of the part + * + * @return bool + */ + public function isStream() + { + return $this->_isStream; + } + + /** + * if this was created with a stream, return a filtered stream for + * reading the content. very useful for large file attachments. + * + * @return mixed Stream + * @throws Zend_Mime_Exception if not a stream or unable to append filter + */ + public function getEncodedStream() + { + if (!$this->_isStream) { + require_once 'Zend/Mime/Exception.php'; + throw new Zend_Mime_Exception( + 'Attempt to get a stream from a string part' + ); + } + + //stream_filter_remove(); // ??? is that right? + switch ($this->encoding) { + case Zend_Mime::ENCODING_QUOTEDPRINTABLE: + $filter = stream_filter_append( + $this->_content, + 'convert.quoted-printable-encode', + STREAM_FILTER_READ, + array( + 'line-length' => 76, + 'line-break-chars' => Zend_Mime::LINEEND + ) + ); + if (!is_resource($filter)) { + require_once 'Zend/Mime/Exception.php'; + throw new Zend_Mime_Exception( + 'Failed to append quoted-printable filter' + ); + } + break; + + case Zend_Mime::ENCODING_BASE64: + $filter = stream_filter_append( + $this->_content, + 'convert.base64-encode', + STREAM_FILTER_READ, + array( + 'line-length' => 76, + 'line-break-chars' => Zend_Mime::LINEEND + ) + ); + if (!is_resource($filter)) { + require_once 'Zend/Mime/Exception.php'; + throw new Zend_Mime_Exception( + 'Failed to append base64 filter' + ); + } + break; + + default: + } + + return $this->_content; + } + + /** + * Get the Content of the current Mime Part in the given encoding. + * + * @param string $EOL Line end; defaults to {@link Zend_Mime::LINEEND} + * @throws Zend_Mime_Exception + * @return string + */ + public function getContent($EOL = Zend_Mime::LINEEND) + { + if ($this->_isStream) { + return stream_get_contents($this->getEncodedStream()); + } else { + return Zend_Mime::encode($this->_content, $this->encoding, $EOL); + } + } + + /** + * Get the RAW unencoded content from this part + * + * @return string + */ + public function getRawContent() + { + if ($this->_isStream) { + return stream_get_contents($this->_content); + } else { + return $this->_content; + } + } + + /** + * Create and return the array of headers for this MIME part + * + * @param string $EOL Line end; defaults to {@link Zend_Mime::LINEEND} + * @return array + */ + public function getHeadersArray($EOL = Zend_Mime::LINEEND) + { + $headers = array(); + + $contentType = $this->type; + if ($this->charset) { + $contentType .= '; charset=' . $this->charset; + } + + if ($this->boundary) { + $contentType .= ';' . $EOL + . " boundary=\"" . $this->boundary . '"'; + } + + $headers[] = array( + 'Content-Type', + $contentType + ); + + if ($this->encoding) { + $headers[] = array( + 'Content-Transfer-Encoding', + $this->encoding + ); + } + + if ($this->id) { + $headers[] = array( + 'Content-ID', + '<' . $this->id . '>' + ); + } + + if ($this->disposition) { + $disposition = $this->disposition; + if ($this->filename) { + $disposition .= '; filename="' . $this->filename . '"'; + } + $headers[] = array( + 'Content-Disposition', + $disposition + ); + } + + if ($this->description) { + $headers[] = array( + 'Content-Description', + $this->description + ); + } + + if ($this->location) { + $headers[] = array( + 'Content-Location', + $this->location + ); + } + + if ($this->language) { + $headers[] = array( + 'Content-Language', + $this->language + ); + } + + return $headers; + } + + /** + * Return the headers for this part as a string + * + * @param string $EOL Line end; defaults to {@link Zend_Mime::LINEEND} + * @return string + */ + public function getHeaders($EOL = Zend_Mime::LINEEND) + { + $res = ''; + foreach ($this->getHeadersArray($EOL) as $header) { + $res .= $header[0] . ': ' . $header[1] . $EOL; + } + + return $res; + } +} diff --git a/library/Zend/Mobile/Exception.php b/library/Zend/Mobile/Exception.php new file mode 100755 index 000000000..804c73e78 --- /dev/null +++ b/library/Zend/Mobile/Exception.php @@ -0,0 +1,33 @@ +_isConnected = true; + return $this; + } + + /** + * Send a Push Message + * + * @param Zend_Mobile_Push_Message_Abstract $message + * @return boolean + * @throws DomainException + */ + public function send(Zend_Mobile_Push_Message_Abstract $message) + { + if (!$this->_isConnected) { + $this->connect(); + } + return true; + } + + /** + * Close the Connection to the Push Server + * + * @return void + */ + public function close() + { + $this->_isConnected = false; + } + + /** + * Is Connected + * + * @return boolean + */ + public function isConnected() + { + return $this->_isConnected; + } + + /** + * Set Options + * + * @param array $options + * @return Zend_Mobile_Push_Abstract + * @throws Zend_Mobile_Push_Exception + */ + public function setOptions(array $options) + { + foreach ($options as $k => $v) { + $method = 'set' . ucwords($k); + if (!method_exists($this, $method)) { + throw new Zend_Mobile_Push_Exception('The method "' . $method . "' does not exist."); + } + $this->$method($v); + } + return $this; + } +} diff --git a/library/Zend/Mobile/Push/Apns.php b/library/Zend/Mobile/Push/Apns.php new file mode 100755 index 000000000..28a5c6997 --- /dev/null +++ b/library/Zend/Mobile/Push/Apns.php @@ -0,0 +1,399 @@ +_certificate; + } + + /** + * Set Certificate + * + * @param string $cert + * @return Zend_Mobile_Push_Apns + * @throws Zend_Mobile_Push_Exception + */ + public function setCertificate($cert) + { + if (!is_string($cert)) { + throw new Zend_Mobile_Push_Exception('$cert must be a string'); + } + if (!file_exists($cert)) { + throw new Zend_Mobile_Push_Exception('$cert must be a valid path to the certificate'); + } + $this->_certificate = $cert; + return $this; + } + + /** + * Get Certificate Passphrase + * + * @return string + */ + public function getCertificatePassphrase() + { + return $this->_certificatePassphrase; + } + + /** + * Set Certificate Passphrase + * + * @param string $passphrase + * @return Zend_Mobile_Push_Apns + * @throws Zend_Mobile_Push_Exception + */ + public function setCertificatePassphrase($passphrase) + { + if (!is_string($passphrase)) { + throw new Zend_Mobile_Push_Exception('$passphrase must be a string'); + } + $this->_certificatePassphrase = $passphrase; + return $this; + } + + /** + * Connect to Socket + * + * @param string $uri + * @return bool + * @throws Zend_Mobile_Push_Exception_ServerUnavailable + */ + protected function _connect($uri) + { + $ssl = array( + 'local_cert' => $this->_certificate, + ); + if ($this->_certificatePassphrase) { + $ssl['passphrase'] = $this->_certificatePassphrase; + } + + $this->_socket = stream_socket_client($uri, + $errno, + $errstr, + ini_get('default_socket_timeout'), + STREAM_CLIENT_CONNECT, + stream_context_create(array( + 'ssl' => $ssl, + )) + ); + + if (!is_resource($this->_socket)) { + require_once 'Zend/Mobile/Push/Exception/ServerUnavailable.php'; + throw new Zend_Mobile_Push_Exception_ServerUnavailable(sprintf('Unable to connect: %s: %d (%s)', + $uri, + $errno, + $errstr + )); + } + + stream_set_blocking($this->_socket, 0); + stream_set_write_buffer($this->_socket, 0); + return true; + } + + /** + * Read from the Socket Server + * + * @param int $length + * @return string + */ + protected function _read($length) { + $data = false; + if (!feof($this->_socket)) { + $data = fread($this->_socket, $length); + } + return $data; + } + + /** + * Write to the Socket Server + * + * @param string $payload + * @return int + */ + protected function _write($payload) { + return @fwrite($this->_socket, $payload); + } + + /** + * Connect to the Push Server + * + * @param int|string $env + * @throws Zend_Mobile_Push_Exception + * @throws Zend_Mobile_Push_Exception_ServerUnavailable + * @return Zend_Mobile_Push_Abstract + */ + public function connect($env = self::SERVER_PRODUCTION_URI) + { + if ($this->_isConnected) { + if ($this->_currentEnv == self::SERVER_PRODUCTION_URI) { + return $this; + } + $this->close(); + } + + if (!isset($this->_serverUriList[$env])) { + throw new Zend_Mobile_Push_Exception('$env is not a valid environment'); + } + + if (!$this->_certificate) { + throw new Zend_Mobile_Push_Exception('A certificate must be set prior to calling ::connect'); + } + + $this->_connect($this->_serverUriList[$env]); + + $this->_currentEnv = $env; + $this->_isConnected = true; + return $this; + } + + + + /** + * Feedback + * + * @return array array w/ key = token and value = time + * @throws Zend_Mobile_Push_Exception + * @throws Zend_Mobile_Push_Exception_ServerUnavailable + */ + public function feedback() + { + if (!$this->_isConnected || + !in_array($this->_currentEnv, + array(self::SERVER_FEEDBACK_SANDBOX_URI, self::SERVER_FEEDBACK_PRODUCTION_URI))) { + $this->connect(self::SERVER_FEEDBACK_PRODUCTION_URI); + } + + $tokens = array(); + while ($token = $this->_read(38)) { + if (strlen($token) < 38) { + continue; + } + $token = unpack('Ntime/ntokenLength/H*token', $token); + if (!isset($tokens[$token['token']]) || $tokens[$token['token']] < $token['time']) { + $tokens[$token['token']] = $token['time']; + } + } + return $tokens; + } + + /** + * Send Message + * + * @param Zend_Mobile_Push_Message_Abstract $message + * @throws Zend_Mobile_Push_Exception + * @throws Zend_Mobile_Push_Exception_InvalidPayload + * @throws Zend_Mobile_Push_Exception_InvalidToken + * @throws Zend_Mobile_Push_Exception_InvalidTopic + * @throws Zend_Mobile_Push_Exception_ServerUnavailable + * @return bool + */ + public function send(Zend_Mobile_Push_Message_Abstract $message) + { + if (!$message->validate()) { + throw new Zend_Mobile_Push_Exception('The message is not valid.'); + } + + if (!$this->_isConnected || !in_array($this->_currentEnv, array( + self::SERVER_SANDBOX_URI, + self::SERVER_PRODUCTION_URI))) { + $this->connect(self::SERVER_PRODUCTION_URI); + } + + $payload = array('aps' => array()); + + $alert = $message->getAlert(); + foreach ($alert as $k => $v) { + if ($v == null) { + unset($alert[$k]); + } + } + if (!empty($alert)) { + $payload['aps']['alert'] = $alert; + } + if (!is_null($message->getBadge())) { + $payload['aps']['badge'] = $message->getBadge(); + } + $sound = $message->getSound(); + if (!empty($sound)) { + $payload['aps']['sound'] = $sound; + } + + foreach($message->getCustomData() as $k => $v) { + $payload[$k] = $v; + } + + if (version_compare(PHP_VERSION, '5.4.0') >= 0) { + $payload = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + } else { + $payload = json_encode($payload); + } + + $expire = $message->getExpire(); + if ($expire > 0) { + $expire += time(); + } + $id = $message->getId(); + if (empty($id)) { + $id = time(); + } + + $payload = pack('CNNnH*', 1, $id, $expire, 32, $message->getToken()) + . pack('n', strlen($payload)) + . $payload; + $ret = $this->_write($payload); + if ($ret === false) { + require_once 'Zend/Mobile/Push/Exception/ServerUnavailable.php'; + throw new Zend_Mobile_Push_Exception_ServerUnavailable('Unable to send message'); + } + // check for errors from apple + $err = $this->_read(1024); + if (strlen($err) > 0) { + $err = unpack('Ccmd/Cerrno/Nid', $err); + switch ($err['errno']) { + case 0: + return true; + break; + case 1: + throw new Zend_Mobile_Push_Exception('A processing error has occurred on the apple push notification server.'); + break; + case 2: + require_once 'Zend/Mobile/Push/Exception/InvalidToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidToken('Missing token; you must set a token for the message.'); + break; + case 3: + require_once 'Zend/Mobile/Push/Exception/InvalidTopic.php'; + throw new Zend_Mobile_Push_Exception_InvalidTopic('Missing id; you must set an id for the message.'); + break; + case 4: + require_once 'Zend/Mobile/Push/Exception/InvalidPayload.php'; + throw new Zend_Mobile_Push_Exception_InvalidPayload('Missing message; the message must always have some content.'); + break; + case 5: + require_once 'Zend/Mobile/Push/Exception/InvalidToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidToken('Bad token. This token is too big and is not a regular apns token.'); + break; + case 6: + require_once 'Zend/Mobile/Push/Exception/InvalidTopic.php'; + throw new Zend_Mobile_Push_Exception_InvalidTopic('The message id is too big; reduce the size of the id.'); + break; + case 7: + require_once 'Zend/Mobile/Push/Exception/InvalidPayload.php'; + throw new Zend_Mobile_Push_Exception_InvalidPayload('The message is too big; reduce the size of the message.'); + break; + case 8: + require_once 'Zend/Mobile/Push/Exception/InvalidToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidToken('Bad token. Remove this token from being sent to again.'); + break; + default: + throw new Zend_Mobile_Push_Exception(sprintf('An unknown error occurred: %d', $err['errno'])); + break; + } + } + return true; + } + + /** + * Close Connection + * + * @return void + */ + public function close() + { + if ($this->_isConnected && is_resource($this->_socket)) { + fclose($this->_socket); + } + $this->_isConnected = false; + } +} diff --git a/library/Zend/Mobile/Push/Exception.php b/library/Zend/Mobile/Push/Exception.php new file mode 100755 index 000000000..0c66c403b --- /dev/null +++ b/library/Zend/Mobile/Push/Exception.php @@ -0,0 +1,35 @@ +_apiKey; + } + + /** + * Set API Key + * + * @param string $key + * @return Zend_Mobile_Push_Gcm + * @throws Zend_Mobile_Push_Exception + */ + public function setApiKey($key) + { + if (!is_string($key) || empty($key)) { + throw new Zend_Mobile_Push_Exception('The api key must be a string and not empty'); + } + $this->_apiKey = $key; + return $this; + } + + /** + * Get Http Client + * + * @return Zend_Http_Client + */ + public function getHttpClient() + { + if (!$this->_httpClient) { + $this->_httpClient = new Zend_Http_Client(); + $this->_httpClient->setConfig(array( + 'strictredirects' => true, + )); + } + return $this->_httpClient; + } + + /** + * Set Http Client + * + * @return Zend_Mobile_Push_Gcm + */ + public function setHttpClient(Zend_Http_Client $client) + { + $this->_httpClient = $client; + return $this; + } + + /** + * Send Message + * + * @param Zend_Mobile_Push_Message_Abstract $message + * @throws Zend_Http_Client_Exception + * @throws Zend_Mobile_Push_Exception + * @throws Zend_Mobile_Push_Exception_InvalidAuthToken + * @throws Zend_Mobile_Push_Exception_InvalidPayload + * @throws Zend_Mobile_Push_Exception_ServerUnavailable + * @return Zend_Mobile_Push_Response_Gcm + */ + public function send(Zend_Mobile_Push_Message_Abstract $message) + { + if (!$message->validate()) { + throw new Zend_Mobile_Push_Exception('The message is not valid.'); + } + + $this->connect(); + + $client = $this->getHttpClient(); + $client->setUri(self::SERVER_URI); + $client->setHeaders('Authorization', 'key=' . $this->getApiKey()); + + $response = $client->setRawData($message->toJson(), 'application/json') + ->request('POST'); + $this->close(); + + switch ($response->getStatus()) + { + case 500: + require_once 'Zend/Mobile/Push/Exception/ServerUnavailable.php'; + throw new Zend_Mobile_Push_Exception_ServerUnavailable('The server encountered an internal error, try again'); + break; + case 503: + require_once 'Zend/Mobile/Push/Exception/ServerUnavailable.php'; + throw new Zend_Mobile_Push_Exception_ServerUnavailable('The server was unavailable, check Retry-After header'); + break; + case 401: + require_once 'Zend/Mobile/Push/Exception/InvalidAuthToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidAuthToken('There was an error authenticating the sender account'); + break; + case 400: + require_once 'Zend/Mobile/Push/Exception/InvalidPayload.php'; + throw new Zend_Mobile_Push_Exception_InvalidPayload('The request could not be parsed as JSON or contains invalid fields'); + break; + } + return new Zend_Mobile_Push_Response_Gcm($response->getBody(), $message); + } +} diff --git a/library/Zend/Mobile/Push/Interface.php b/library/Zend/Mobile/Push/Interface.php new file mode 100755 index 000000000..d8315e85d --- /dev/null +++ b/library/Zend/Mobile/Push/Interface.php @@ -0,0 +1,64 @@ +_token; + } + + /** + * Set Token + * + * @param string $token + * @throws Zend_Mobile_Push_Message_Exception + * @return Zend_Mobile_Push_Message_Abstract + */ + public function setToken($token) + { + if (!is_string($token)) { + throw new Zend_Mobile_Push_Message_Exception('$token must be a string'); + } + $this->_token = $token; + return $this; + } + + /** + * Get Message ID + * + * @return int|string|float|bool Scalar + */ + public function getId() + { + return $this->_id; + } + + /** + * Set Message ID + * + * @param int|string|float|bool $id Scalar + * @return Zend_Mobile_Push_Message_Abstract + * @throws Exception + */ + public function setId($id) + { + if (!is_scalar($id)) { + throw new Zend_Mobile_Push_Message_Exception('$id must be a scalar'); + } + $this->_id = $id; + return $this; + } + + /** + * Set Options + * + * @param array $options + * @return Zend_Mobile_Push_Message_Abstract + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setOptions(array $options) + { + foreach ($options as $k => $v) { + $method = 'set' . ucwords($k); + if (!method_exists($this, $method)) { + throw new Zend_Mobile_Push_Message_Exception('The method "' . $method . "' does not exist."); + } + $this->$method($v); + } + return $this; + } + + + /** + * Validate Message format + * + * @return boolean + */ + public function validate() + { + return true; + } +} diff --git a/library/Zend/Mobile/Push/Message/Apns.php b/library/Zend/Mobile/Push/Message/Apns.php new file mode 100755 index 000000000..1dd637e10 --- /dev/null +++ b/library/Zend/Mobile/Push/Message/Apns.php @@ -0,0 +1,285 @@ +_alert; + } + + /** + * Set Alert + * + * @param string $text + * @param string|null $actionLocKey + * @param string|null $locKey + * @param array|null $locArgs + * @param string|null $launchImage + * @throws Zend_Mobile_Push_Message_Exception + * @return Zend_Mobile_Push_Message_Apns + */ + public function setAlert($text, $actionLocKey=null, $locKey=null, $locArgs=null, $launchImage=null) + { + if ($text !== null && !is_string($text)) { + throw new Zend_Mobile_Push_Message_Exception('$text must be a string'); + } + + if ($actionLocKey !== null && !is_string($actionLocKey)) { + throw new Zend_Mobile_Push_Message_Exception('$actionLocKey must be a string'); + } + + if ($locKey !== null && !is_string($locKey)) { + throw new Zend_Mobile_Push_Message_Exception('$locKey must be a string'); + } + + if ($locArgs !== null) { + if (!is_array($locArgs)) { + throw new Zend_Mobile_Push_Message_Exception('$locArgs must be an array of strings'); + } else { + foreach ($locArgs as $str) { + if (!is_string($str)) { + throw new Zend_Mobile_Push_Message_Exception('$locArgs contains an item that is not a string'); + } + } + } + } + + if (null !== $launchImage && !is_string($launchImage)) { + throw new Zend_Mobile_Push_Message_Exception('$launchImage must be a string'); + } + + $this->_alert = array( + 'body' => $text, + 'action-loc-key' => $actionLocKey, + 'loc-key' => $locKey, + 'loc-args' => $locArgs, + 'launch-image' => $launchImage, + ); + return $this; + } + + /** + * Get Badge + * + * @return int + */ + public function getBadge() + { + return $this->_badge; + } + + /** + * Set Badge + * + * @param int $badge + * @return Zend_Mobile_Push_Message_Apns + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setBadge($badge) + { + if (!is_null($badge) && !is_numeric($badge)) { + throw new Zend_Mobile_Push_Message_Exception('$badge must be an integer'); + } + if (!is_null($badge) && $badge < 0) { + throw new Zend_Mobile_Push_Message_Exception('$badge must be greater or equal to 0'); + } + $this->_badge = $badge; + } + + /** + * Get Expire + * + * @return int + */ + public function getExpire() + { + return $this->_expire; + } + + /** + * Set Expire + * + * @param int $expire + * @return Zend_Mobile_Push_Message_Apns + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setExpire($expire) + { + if (!is_numeric($expire)) { + throw new Zend_Mobile_Push_Message_Exception('$expire must be an integer'); + } + $this->_expire = (int) $expire; + return $this; + } + + /** + * Get Sound + * + * @return string + */ + public function getSound() + { + return $this->_sound; + } + + /** + * Set Sound + * + * @param string $sound + * @return Zend_Mobile_Push_Message_Apns + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setSound($sound) + { + if (!is_string($sound)) { + throw new Zend_Mobile_Push_Message_Exception('$sound must be a string'); + } + $this->_sound = $sound; + return $this; + } + + /** + * Add Custom Data + * + * @param string $key + * @param mixed $value + * @return Zend_Mobile_Push_Message_Apns + * @throws Zend_Mobile_Push_Message_Exception + */ + public function addCustomData($key, $value) + { + if (!is_string($key)) { + throw new Zend_Mobile_Push_Message_Exception('$key is not a string'); + } + if ($key == 'aps') { + throw new Zend_Mobile_Push_Message_Exception('$key must not be aps as it is reserved by apple'); + } + $this->_custom[$key] = $value; + } + + /** + * Clear Custom Data + * + * @return throw new Zend_Mobile_Push_Message_Apns + */ + public function clearCustomData() + { + $this->_custom = array(); + return $this; + } + + /** + * Set Custom Data + * + * @param array $array + * @throws Zend_Mobile_Push_Message_Exception + * @return Zend_Mobile_Push_Message_Apns + */ + public function setCustomData($array) + { + $this->_custom = array(); + foreach ($array as $k => $v) { + $this->addCustomData($k, $v); + } + return $this; + } + + /** + * Get Custom Data + * + * @return array + */ + public function getCustomData() + { + return $this->_custom; + } + + /** + * Validate this is a proper Apns message + * + * @return boolean + */ + public function validate() + { + if (!is_string($this->_token) || strlen($this->_token) === 0) { + return false; + } + if (null != $this->_id && !is_numeric($this->_id)) { + return false; + } + return true; + } +} diff --git a/library/Zend/Mobile/Push/Message/Exception.php b/library/Zend/Mobile/Push/Message/Exception.php new file mode 100755 index 000000000..1832b7c08 --- /dev/null +++ b/library/Zend/Mobile/Push/Message/Exception.php @@ -0,0 +1,35 @@ +_token)) { + $this->_token[] = $token; + } + return $this; + } + + /** + * Set Token + * + * @param string|array $token + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setToken($token) + { + $this->clearToken(); + if (is_string($token)) { + $this->addToken($token); + } else if (is_array($token)) { + foreach ($token as $t) { + $this->addToken($t); + } + } + return $this; + } + + /** + * Clear Tokens + * + * @return Zend_Mobile_Push_Message_Gcm + */ + public function clearToken() + { + $this->_token = array(); + return $this; + } + + + /** + * Add Data + * + * @param string $key + * @param string $value + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function addData($key, $value) + { + if (!is_string($key)) { + throw new Zend_Mobile_Push_Message_Exception('$key is not a string'); + } + if (!is_scalar($value)) { + throw new Zend_Mobile_Push_Message_Exception('$value is not a string'); + } + $this->_data[$key] = $value; + return $this; + } + + /** + * Set Data + * + * @param array $data + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setData(array $data) + { + $this->clearData(); + foreach ($data as $k => $v) { + $this->addData($k, $v); + } + return $this; + } + + /** + * Clear Data + * + * @return Zend_Mobile_Push_Message_Gcm + */ + public function clearData() + { + $this->_data = array(); + return $this; + } + + /** + * Get Data + * + * @return array + */ + public function getData() + { + return $this->_data; + } + + /** + * Set Delay While Idle + * + * @param boolean $delay + * @return Zend_Mobile_Push_Message_Gcm + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setDelayWhileIdle($delay) + { + if (!is_bool($delay)) { + throw new Zend_Mobile_Push_Message_Exception('$delay must be boolean'); + } + $this->_delay = $delay; + return $this; + } + + /** + * Get Delay While Idle + * + * @return boolean + */ + public function getDelayWhileIdle() + { + return $this->_delay; + } + + /** + * Set time to live. + * + * @param int $secs + * @throws Zend_Mobile_Push_Message_Exception + * @return Zend_Mobile_Push_Message_Gcm + */ + public function setTtl($secs) + { + if (!is_numeric($secs)) { + throw new Zend_Mobile_Push_Message_Exception('$secs must be numeric'); + } + $this->_ttl = (int) $secs; + return $this; + } + + /** + * Get time to live + * + * @return int + */ + public function getTtl() + { + return $this->_ttl; + } + + /** + * Validate this is a proper Gcm message + * Does not validate size. + * + * @return boolean + */ + public function validate() + { + if (!is_array($this->_token) || empty($this->_token)) { + return false; + } + if ($this->_ttl !== 2419200 && + (!is_scalar($this->_id) || + strlen($this->_id) === 0)) { + return false; + } + return true; + } + + /** + * To Json utility method + * Takes the data and properly assigns it to + * a json encoded array to match the Gcm format. + * + * @return string + */ + public function toJson() + { + $json = array(); + if ($this->_token) { + $json['registration_ids'] = $this->_token; + } + if ($this->_id) { + $json['collapse_key'] = (string) $this->_id; + } + if ($this->_data) { + $json['data'] = $this->_data; + } + if ($this->_delay) { + $json['delay_while_idle'] = $this->_delay; + } + if ($this->_ttl !== 2419200) { + $json['time_to_live'] = $this->_ttl; + } + if (version_compare(PHP_VERSION, '5.4.0') >= 0) { + return json_encode($json, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + } else { + return json_encode($json); + } + } +} diff --git a/library/Zend/Mobile/Push/Message/Interface.php b/library/Zend/Mobile/Push/Message/Interface.php new file mode 100755 index 000000000..27be3256a --- /dev/null +++ b/library/Zend/Mobile/Push/Message/Interface.php @@ -0,0 +1,79 @@ +_token) || strlen($this->_token) === 0) { + return false; + } + return parent::validate(); + } +} diff --git a/library/Zend/Mobile/Push/Message/Mpns/Raw.php b/library/Zend/Mobile/Push/Message/Mpns/Raw.php new file mode 100755 index 000000000..99d87802b --- /dev/null +++ b/library/Zend/Mobile/Push/Message/Mpns/Raw.php @@ -0,0 +1,152 @@ +_delay) { + return self::DELAY_IMMEDIATE; + } + return $this->_delay; + } + + /** + * Set Delay + * + * @param int $delay + * @return Zend_Mobile_Push_Message_Mpns_Raw + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setDelay($delay) + { + if (!in_array($delay, array( + self::DELAY_IMMEDIATE, + self::DELAY_450S, + self::DELAY_900S + ))) { + throw new Zend_Mobile_Push_Message_Exception('$delay must be one of the DELAY_* constants'); + } + $this->_delay = $delay; + return $this; + } + + /** + * Set Message + * + * @param string $msg XML string + * @return Zend_Mobile_Push_Message_Mpns_Raw + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setMessage($msg) + { + if (!is_string($msg)) { + throw new Zend_Mobile_Push_Message_Exception('$msg is not a string'); + } + if (!Zend_Xml_Security::scan($msg)) { + throw new Zend_Mobile_Push_Message_Exception('$msg is not valid xml'); + } + $this->_msg = $msg; + return $this; + } + + /** + * Get Message + * + * @return string + */ + public function getMessage() + { + return $this->_msg; + } + + /** + * Get Notification Type + * + * @return string + */ + public static function getNotificationType() + { + return 'raw'; + } + + /** + * Get XML Payload + * + * @return string + */ + public function getXmlPayload() + { + return $this->_msg; + } + + /** + * Validate proper mpns message + * + * @return boolean + */ + public function validate() + { + if (!isset($this->_token) || strlen($this->_token) === 0) { + return false; + } + if (empty($this->_msg)) { + return false; + } + return parent::validate(); + } +} diff --git a/library/Zend/Mobile/Push/Message/Mpns/Tile.php b/library/Zend/Mobile/Push/Message/Mpns/Tile.php new file mode 100755 index 000000000..965412452 --- /dev/null +++ b/library/Zend/Mobile/Push/Message/Mpns/Tile.php @@ -0,0 +1,365 @@ +_backgroundImage; + } + + /** + * Set Background Image + * + * @param string $bgImg + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setBackgroundImage($bgImg) + { + if (!is_string($bgImg)) { + throw new Zend_Mobile_Push_Message_Exception('$bgImg must be a string'); + } + $this->_backgroundImage = $bgImg; + return $this; + } + + /** + * Get Count + * + * @return int + */ + public function getCount() + { + return $this->_count; + } + + /** + * Set Count + * + * @param int $count + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setCount($count) + { + if (!is_numeric($count)) { + throw new Zend_Mobile_Push_Message_Exception('$count is not numeric'); + } + $this->_count = (int) $count; + return $this; + } + + /** + * Get Title + * + * @return string + */ + public function getTitle() + { + return $this->_title; + } + + /** + * Set Title + * + * @param string $title + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setTitle($title) + { + if (!is_string($title)) { + throw new Zend_Mobile_Push_Message_Exception('$title must be a string'); + } + $this->_title = $title; + return $this; + } + + /** + * Get Back Background Image + * + * @return string + */ + public function getBackBackgroundImage() + { + return $this->_backBackgroundImage; + } + + /** + * Set Back Background Image + * + * @param string $bgImg + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setBackBackgroundImage($bgImg) + { + if (!is_string($bgImg)) { + throw new Zend_Mobile_Push_Message_Exception('$bgImg must be a string'); + } + $this->_backBackgroundImage = $bgImg; + return $this; + } + + /** + * Get Back Title + * + * @return string + */ + public function getBackTitle() + { + return $this->_backTitle; + } + + /** + * Set Back Title + * + * @param string $title + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setBackTitle($title) + { + if (!is_string($title)) { + throw new Zend_Mobile_Push_Message_Exception('$title must be a string'); + } + $this->_backTitle = $title; + return $this; + } + + /** + * Get Back Content + * + * @return string + */ + public function getBackContent() + { + return $this->_backContent; + } + + /** + * Set Back Content + * + * @param string $content + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setBackContent($content) + { + if (!is_string($content)) { + throw new Zend_Mobile_Push_Message_Exception('$content must be a string'); + } + $this->_backContent = $content; + } + + /** + * Get Tile Id + * + * @return string + */ + public function getTileId() + { + return $this->_tileId; + } + + /** + * Set Tile Id + * + * @param string $tileId + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setTileId($tileId) + { + if (!is_string($tileId)) { + throw new Zend_Mobile_Push_Message_Exception('$tileId is not a string'); + } + $this->_tileId = $tileId; + return $this; + } + + /** + * Get Delay + * + * @return int + */ + public function getDelay() + { + if (!$this->_delay) { + return self::DELAY_IMMEDIATE; + } + return $this->_delay; + } + + /** + * Set Delay + * + * @param int $delay + * @return Zend_Mobile_Push_Message_Mpns_Tile + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setDelay($delay) + { + if (!in_array($delay, array( + self::DELAY_IMMEDIATE, + self::DELAY_450S, + self::DELAY_900S + ))) { + throw new Zend_Mobile_Push_Message_Exception('$delay must be one of the DELAY_* constants'); + } + $this->_delay = $delay; + return $this; + } + + /** + * Get Notification Type + * + * @return string + */ + public static function getNotificationType() + { + return 'token'; + } + + /** + * Get XML Payload + * + * @return string + */ + public function getXmlPayload() + { + $ret = '' + . '' + . '_tileId) ? ' Id="' . htmlspecialchars($this->_tileId) . '"' : '') . '>' + . '' . htmlspecialchars($this->_backgroundImage) . '' + . '' . (int) $this->_count . '' + . '' . htmlspecialchars($this->_title) . ''; + + if ($this->_backBackgroundImage) { + $ret .= '' . htmlspecialchars($this->_backBackgroundImage) . ''; + } + if ($this->_backTitle) { + $ret .= '' . htmlspecialchars($this->_backTitle) . ''; + } + if ($this->_backContent) { + $ret .= '' . htmlspecialchars($this->_backContent) . ''; + } + + $ret .= '' + . ''; + return $ret; + } + + /** + * Validate proper mpns message + * + * @return boolean + */ + public function validate() + { + if (!isset($this->_token) || strlen($this->_token) === 0) { + return false; + } + if (empty($this->_backgroundImage)) { + return false; + } + if (empty($this->_title)) { + return false; + } + return parent::validate(); + } +} diff --git a/library/Zend/Mobile/Push/Message/Mpns/Toast.php b/library/Zend/Mobile/Push/Message/Mpns/Toast.php new file mode 100755 index 000000000..14381c1a7 --- /dev/null +++ b/library/Zend/Mobile/Push/Message/Mpns/Toast.php @@ -0,0 +1,225 @@ +_title; + } + + /** + * Set Title + * + * @param string $title + * @return Zend_Mobile_Push_Message_Mpns_Toast + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setTitle($title) + { + if (!is_string($title)) { + throw new Zend_Mobile_Push_Message_Exception('$title must be a string'); + } + $this->_title = $title; + return $this; + } + + /** + * Get Message + * + * @return string + */ + public function getMessage() + { + return $this->_msg; + } + + /** + * Set Message + * + * @param string $msg + * @return Zend_Mobile_Push_Message_Mpns_Toast + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setMessage($msg) + { + if (!is_string($msg)) { + throw new Zend_Mobile_Push_Message_Exception('$msg must be a string'); + } + $this->_msg = $msg; + return $this; + } + + /** + * Get Params + * + * @return string + */ + public function getParams() + { + return $this->_params; + } + + /** + * Set Params + * + * @param string $params + * @return Zend_Mobile_Push_Message_Mpns_Toast + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setParams($params) + { + if (!is_string($params)) { + throw new Zend_Mobile_Push_Message_Exception('$params must be a string'); + } + $this->_params = $params; + return $this; + } + + /** + * Get Delay + * + * @return int + */ + public function getDelay() + { + if (!$this->_delay) { + return self::DELAY_IMMEDIATE; + } + return $this->_delay; + } + + /** + * Set Delay + * + * @param int $delay + * @return Zend_Mobile_Push_Message_Mpns_Toast + * @throws Zend_Mobile_Push_Message_Exception + */ + public function setDelay($delay) + { + if (!in_array($delay, array( + self::DELAY_IMMEDIATE, + self::DELAY_450S, + self::DELAY_900S + ))) { + throw new Zend_Mobile_Push_Message_Exception('$delay must be one of the DELAY_* constants'); + } + $this->_delay = $delay; + return $this; + } + + /** + * Get Notification Type + * + * @return string + */ + public static function getNotificationType() + { + return 'toast'; + } + + /** + * Get XML Payload + * + * @return string + */ + public function getXmlPayload() + { + $ret = '' + . '' + . '' + . '' . htmlspecialchars($this->_title) . '' + . '' . htmlspecialchars($this->_msg) . ''; + if (!empty($this->_params)) { + $ret .= '' . htmlspecialchars($this->_params) . ''; + } + $ret .= '' + . ''; + return $ret; + } + + /** + * Validate proper mpns message + * + * @return boolean + */ + public function validate() + { + if (!isset($this->_token) || strlen($this->_token) === 0) { + return false; + } + if (empty($this->_title)) { + return false; + } + if (empty($this->_msg)) { + return false; + } + return parent::validate(); + } +} diff --git a/library/Zend/Mobile/Push/Mpns.php b/library/Zend/Mobile/Push/Mpns.php new file mode 100755 index 000000000..01e84c2f8 --- /dev/null +++ b/library/Zend/Mobile/Push/Mpns.php @@ -0,0 +1,158 @@ +_httpClient) { + $this->_httpClient = new Zend_Http_Client(); + $this->_httpClient->setConfig(array( + 'strictredirects' => true, + )); + } + return $this->_httpClient; + } + + /** + * Set Http Client + * + * @return Zend_Mobile_Push_Mpns + */ + public function setHttpClient(Zend_Http_Client $client) + { + $this->_httpClient = $client; + return $this; + } + + /** + * Send Message + * + * @param Zend_Mobile_Push_Message_Abstract $message + * @throws Zend_Http_Client_Exception + * @throws Zend_Mobile_Push_Exception + * @throws Zend_Mobile_Push_Exception_DeviceQuotaExceeded + * @throws Zend_Mobile_Push_Exception_InvalidPayload + * @throws Zend_Mobile_Push_Exception_InvalidToken + * @throws Zend_Mobile_Push_Exception_QuotaExceeded + * @throws Zend_Mobile_Push_Exception_ServerUnavailable + * @return boolean + */ + public function send(Zend_Mobile_Push_Message_Abstract $message) + { + if (!$message->validate()) { + throw new Zend_Mobile_Push_Exception('The message is not valid.'); + } + + $this->connect(); + + $client = $this->getHttpClient(); + $client->setUri($message->getToken()); + $client->setHeaders(array( + 'Context-Type' => 'text/xml', + 'Accept' => 'application/*', + 'X-NotificationClass' => $message->getDelay() + )); + if ($message->getId()) { + $client->setHeaders('X-MessageID', $message->getId()); + } + if ($message->getNotificationType() != Zend_Mobile_Push_Message_Mpns::TYPE_RAW) { + $client->setHeaders('X-WindowsPhone-Target', $message->getNotificationType()); + } + $client->setRawData($message->getXmlPayload(), 'text/xml'); + $response = $client->request('POST'); + $this->close(); + + + switch ($response->getStatus()) + { + case 200: + // check headers for response? need to test how this actually works to correctly handle different states. + if ($response->getHeader('NotificationStatus') == 'QueueFull') { + require_once 'Zend/Mobile/Push/Exception/DeviceQuotaExceeded.php'; + throw new Zend_Mobile_Push_Exception_DeviceQuotaExceeded('The devices push notification queue is full, use exponential backoff'); + } + break; + case 400: + require_once 'Zend/Mobile/Push/Exception/InvalidPayload.php'; + throw new Zend_Mobile_Push_Exception_InvalidPayload('The message xml was invalid'); + break; + case 401: + require_once 'Zend/Mobile/Push/Exception/InvalidToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidToken('The device token is not valid or there is a mismatch between certificates'); + break; + case 404: + require_once 'Zend/Mobile/Push/Exception/InvalidToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidToken('The device subscription is invalid, stop sending notifications to this device'); + break; + case 405: + throw new Zend_Mobile_Push_Exception('Invalid method, only POST is allowed'); // will never be hit unless overwritten + break; + case 406: + require_once 'Zend/Mobile/Push/Exception/QuotaExceeded.php'; + throw new Zend_Mobile_Push_Exception_QuotaExceeded('The unauthenticated web service has reached the per-day throttling limit'); + break; + case 412: + require_once 'Zend/Mobile/Push/Exception/InvalidToken.php'; + throw new Zend_Mobile_Push_Exception_InvalidToken('The device is in an inactive state. You may retry once per hour'); + break; + case 503: + require_once 'Zend/Mobile/Push/Exception/ServerUnavailable.php'; + throw new Zend_Mobile_Push_Exception_ServerUnavailable('The server was unavailable.'); + break; + default: + break; + } + return true; + } +} diff --git a/library/Zend/Mobile/Push/Response/Gcm.php b/library/Zend/Mobile/Push/Response/Gcm.php new file mode 100755 index 000000000..6222e6dce --- /dev/null +++ b/library/Zend/Mobile/Push/Response/Gcm.php @@ -0,0 +1,243 @@ +setResponse($response); + } + + if ($message) { + $this->setMessage($message); + } + + } + + /** + * Get Message + * + * @return Zend_Mobile_Push_Message_Gcm + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set Message + * + * @param Zend_Mobile_Push_Message_Gcm $message + * @return Zend_Mobile_Push_Response_Gcm + */ + public function setMessage(Zend_Mobile_Push_Message_Gcm $message) + { + $this->_message = $message; + return $this; + } + + /** + * Get Response + * + * @return array + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Set Response + * + * @param array $response + * @throws Zend_Mobile_Push_Exception + * @return Zend_Mobile_Push_Response_Gcm + */ + public function setResponse(array $response) + { + if (!isset($response['results']) || + !isset($response['success']) || + !isset($response['failure']) || + !isset($response['canonical_ids']) || + !isset($response['multicast_id'])) { + throw new Zend_Mobile_Push_Exception('Response did not contain the proper fields'); + } + $this->_response = $response; + $this->_results = $response['results']; + $this->_successCnt = (int) $response['success']; + $this->_failureCnt = (int) $response['failure']; + $this->_canonicalCnt = (int) $response['canonical_ids']; + $this->_id = (int) $response['multicast_id']; + return $this; + } + + /** + * Get Success Count + * + * @return int + */ + public function getSuccessCount() + { + return $this->_successCnt; + } + + /** + * Get Failure Count + * + * @return int + */ + public function getFailureCount() + { + return $this->_failureCnt; + } + + /** + * Get Canonical Count + * + * @return int + */ + public function getCanonicalCount() + { + return $this->_canonicalCnt; + } + + /** + * Get Results + * + * @return array multi dimensional array of: + * NOTE: key is registration_id if the message is passed. + * 'registration_id' => array( + * 'message_id' => 'id', + * 'error' => 'error', + * 'registration_id' => 'id' + * ) + */ + public function getResults() + { + return $this->_correlate(); + } + + /** + * Get Singular Result + * + * @param int $flag one of the RESULT_* flags + * @return array singular array with keys being registration id + * value is the type of result + */ + public function getResult($flag) + { + $ret = array(); + foreach ($this->_correlate() as $k => $v) { + if (isset($v[$flag])) { + $ret[$k] = $v[$flag]; + } + } + return $ret; + } + + /** + * Correlate Message and Result + * + * @return array + */ + protected function _correlate() + { + $results = $this->_results; + if ($this->_message && $results) { + $tokens = $this->_message->getToken(); + while($token = array_shift($tokens)) { + $results[$token] = array_shift($results); + } + } + return $results; + } +} diff --git a/library/Zend/Mobile/Push/Test/ApnsProxy.php b/library/Zend/Mobile/Push/Test/ApnsProxy.php new file mode 100755 index 000000000..ffb3c3e25 --- /dev/null +++ b/library/Zend/Mobile/Push/Test/ApnsProxy.php @@ -0,0 +1,102 @@ +_readResponse = $str; + } + + /** + * Set the write response + * + * @param mixed $resp + * @return void + */ + public function setWriteResponse($resp) + { + $this->_writeResponse = $resp; + } + + /** + * Connect + * + * @return true + */ + protected function _connect($uri) { + return true; + } + + /** + * Return Response + * + * @param string $length + * @return string + */ + protected function _read($length) { + $ret = substr($this->_readResponse, 0, $length); + $this->_readResponse = null; + return $ret; + } + + /** + * Write and Return Length + * + * @param string $payload + * @return int + */ + protected function _write($payload) { + $ret = $this->_writeResponse; + $this->_writeResponse = null; + return (null === $ret) ? strlen($payload) : $ret; + } +} diff --git a/library/Zend/Navigation.php b/library/Zend/Navigation.php new file mode 100755 index 000000000..0c7f7c578 --- /dev/null +++ b/library/Zend/Navigation.php @@ -0,0 +1,54 @@ +addPages($pages); + } elseif (null !== $pages) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $pages must be an array, an ' . + 'instance of Zend_Config, or null'); + } + } +} diff --git a/library/Zend/Navigation/Container.php b/library/Zend/Navigation/Container.php new file mode 100755 index 000000000..8a05075f0 --- /dev/null +++ b/library/Zend/Navigation/Container.php @@ -0,0 +1,623 @@ +_dirtyIndex) { + $newIndex = array(); + $index = 0; + + foreach ($this->_pages as $hash => $page) { + $order = $page->getOrder(); + if ($order === null) { + $newIndex[$hash] = $index; + $index++; + } else { + $newIndex[$hash] = $order; + } + } + + asort($newIndex); + $this->_index = $newIndex; + $this->_dirtyIndex = false; + } + } + + // Public methods: + + /** + * Notifies container that the order of pages are updated + * + * @return void + */ + public function notifyOrderUpdated() + { + $this->_dirtyIndex = true; + } + + /** + * Adds a page to the container + * + * This method will inject the container as the given page's parent by + * calling {@link Zend_Navigation_Page::setParent()}. + * + * @param Zend_Navigation_Page|array|Zend_Config $page page to add + * @return Zend_Navigation_Container fluent interface, + * returns self + * @throws Zend_Navigation_Exception if page is invalid + */ + public function addPage($page) + { + if ($page === $this) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'A page cannot have itself as a parent'); + } + + if (is_array($page) || $page instanceof Zend_Config) { + require_once 'Zend/Navigation/Page.php'; + $page = Zend_Navigation_Page::factory($page); + } elseif (!$page instanceof Zend_Navigation_Page) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $page must be an instance of ' . + 'Zend_Navigation_Page or Zend_Config, or an array'); + } + + $hash = $page->hashCode(); + + if (array_key_exists($hash, $this->_index)) { + // page is already in container + return $this; + } + + // adds page to container and sets dirty flag + $this->_pages[$hash] = $page; + $this->_index[$hash] = $page->getOrder(); + $this->_dirtyIndex = true; + + // inject self as page parent + $page->setParent($this); + + return $this; + } + + /** + * Adds several pages at once + * + * @param Zend_Navigation_Page[]|Zend_Config|Zend_Navigation_Container $pages pages to add + * @return Zend_Navigation_Container fluent interface, + * returns self + * @throws Zend_Navigation_Exception if $pages is not + * array, Zend_Config or + * Zend_Navigation_Container + */ + public function addPages($pages) + { + if ($pages instanceof Zend_Config) { + $pages = $pages->toArray(); + } + + if ($pages instanceof Zend_Navigation_Container) { + $pages = iterator_to_array($pages); + } + + if (!is_array($pages)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $pages must be an array, an ' . + 'instance of Zend_Config or an instance of ' . + 'Zend_Navigation_Container'); + } + + foreach ($pages as $page) { + $this->addPage($page); + } + + return $this; + } + + /** + * Sets pages this container should have, removing existing pages + * + * @param Zend_Navigation_Page[] $pages pages to set + * @return Zend_Navigation_Container fluent interface, returns self + */ + public function setPages(array $pages) + { + $this->removePages(); + return $this->addPages($pages); + } + + /** + * Returns pages in the container + * + * @return Zend_Navigation_Page[] array of Zend_Navigation_Page instances + */ + public function getPages() + { + return $this->_pages; + } + + /** + * Removes the given page from the container + * + * @param Zend_Navigation_Page|int $page page to remove, either a page + * instance or a specific page order + * @param bool $recursive [optional] whether to remove recursively + * @return bool whether the removal was successful + */ + public function removePage($page, $recursive = false) + { + if ($page instanceof Zend_Navigation_Page) { + $hash = $page->hashCode(); + } elseif (is_int($page)) { + $this->_sort(); + if (!$hash = array_search($page, $this->_index)) { + return false; + } + } else { + return false; + } + + if (isset($this->_pages[$hash])) { + unset($this->_pages[$hash]); + unset($this->_index[$hash]); + $this->_dirtyIndex = true; + return true; + } + + if ($recursive) { + /** @var Zend_Navigation_Page $childPage */ + foreach ($this->_pages as $childPage) { + if ($childPage->hasPage($page, true)) { + $childPage->removePage($page, true); + return true; + } + } + } + + return false; + } + + /** + * Removes all pages in container + * + * @return Zend_Navigation_Container fluent interface, returns self + */ + public function removePages() + { + $this->_pages = array(); + $this->_index = array(); + return $this; + } + + /** + * Checks if the container has the given page + * + * @param Zend_Navigation_Page $page page to look for + * @param bool $recursive [optional] whether to search + * recursively. Default is false. + * @return bool whether page is in container + */ + public function hasPage(Zend_Navigation_Page $page, $recursive = false) + { + if (array_key_exists($page->hashCode(), $this->_index)) { + return true; + } elseif ($recursive) { + foreach ($this->_pages as $childPage) { + if ($childPage->hasPage($page, true)) { + return true; + } + } + } + + return false; + } + + /** + * Returns true if container contains any pages + * + * @return bool whether container has any pages + */ + public function hasPages() + { + return count($this->_index) > 0; + } + + /** + * Returns a child page matching $property == $value or + * preg_match($value, $property), or null if not found + * + * @param string $property name of property to match against + * @param mixed $value value to match property against + * @param bool $useRegex [optional] if true PHP's preg_match + * is used. Default is false. + * @return Zend_Navigation_Page|null matching page or null + */ + public function findOneBy($property, $value, $useRegex = false) + { + $iterator = new RecursiveIteratorIterator( + $this, + RecursiveIteratorIterator::SELF_FIRST + ); + + foreach ($iterator as $page) { + $pageProperty = $page->get($property); + + // Rel and rev + if (is_array($pageProperty)) { + foreach ($pageProperty as $item) { + if (is_array($item)) { + // Use regex? + if (true === $useRegex) { + foreach ($item as $item2) { + if (0 !== preg_match($value, $item2)) { + return $page; + } + } + } else { + if (in_array($value, $item)) { + return $page; + } + } + } else { + // Use regex? + if (true === $useRegex) { + if (0 !== preg_match($value, $item)) { + return $page; + } + } else { + if ($item == $value) { + return $page; + } + } + } + } + + continue; + } + + // Use regex? + if (true === $useRegex) { + if (preg_match($value, $pageProperty)) { + return $page; + } + } else { + if ($pageProperty == $value) { + return $page; + } + } + } + + return null; + } + + /** + * Returns all child pages matching $property == $value or + * preg_match($value, $property), or an empty array if no pages are found + * + * @param string $property name of property to match against + * @param mixed $value value to match property against + * @param bool $useRegex [optional] if true PHP's preg_match is used. + * Default is false. + * @return Zend_Navigation_Page[] array containing only Zend_Navigation_Page + * instances + */ + public function findAllBy($property, $value, $useRegex = false) + { + $found = array(); + + $iterator = new RecursiveIteratorIterator( + $this, + RecursiveIteratorIterator::SELF_FIRST + ); + + foreach ($iterator as $page) { + $pageProperty = $page->get($property); + + // Rel and rev + if (is_array($pageProperty)) { + foreach ($pageProperty as $item) { + if (is_array($item)) { + // Use regex? + if (true === $useRegex) { + foreach ($item as $item2) { + if (0 !== preg_match($value, $item2)) { + $found[] = $page; + } + } + } else { + if (in_array($value, $item)) { + $found[] = $page; + } + } + } else { + // Use regex? + if (true === $useRegex) { + if (0 !== preg_match($value, $item)) { + $found[] = $page; + } + } else { + if ($item == $value) { + $found[] = $page; + } + } + } + } + + continue; + } + + // Use regex? + if (true === $useRegex) { + if (0 !== preg_match($value, $pageProperty)) { + $found[] = $page; + } + } else { + if ($pageProperty == $value) { + $found[] = $page; + } + } + } + + return $found; + } + + /** + * Returns page(s) matching $property == $value or + * preg_match($value, $property) + * + * @param string $property name of property to match against + * @param mixed $value value to match property against + * @param bool $all [optional] whether an array of all matching + * pages should be returned, or only the first. + * If true, an array will be returned, even if not + * matching pages are found. If false, null will + * be returned if no matching page is found. + * Default is false. + * @param bool $useRegex [optional] if true PHP's preg_match is used. + * Default is false. + * @return Zend_Navigation_Page|null matching page or null + */ + public function findBy($property, $value, $all = false, $useRegex = false) + { + if ($all) { + return $this->findAllBy($property, $value, $useRegex); + } else { + return $this->findOneBy($property, $value, $useRegex); + } + } + + /** + * Magic overload: Proxy calls to finder methods + * + * Examples of finder calls: + * + * // METHOD // SAME AS + * $nav->findByLabel('foo'); // $nav->findOneBy('label', 'foo'); + * $nav->findByLabel('/foo/', true); // $nav->findBy('label', '/foo/', true); + * $nav->findOneByLabel('foo'); // $nav->findOneBy('label', 'foo'); + * $nav->findAllByClass('foo'); // $nav->findAllBy('class', 'foo'); + * + * + * @param string $method method name + * @param array $arguments method arguments + * @return mixed Zend_Navigation|array|null matching page, array of pages + * or null + * @throws Zend_Navigation_Exception if method does not exist + */ + public function __call($method, $arguments) + { + if (@preg_match('/(find(?:One|All)?By)(.+)/', $method, $match)) { + return $this->{$match[1]}($match[2], $arguments[0], !empty($arguments[1])); + } + + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + sprintf( + 'Bad method call: Unknown method %s::%s', + get_class($this), + $method + ) + ); + } + + /** + * Returns an array representation of all pages in container + * + * @return Zend_Navigation_Page[] + */ + public function toArray() + { + $pages = array(); + + $this->_dirtyIndex = true; + $this->_sort(); + $indexes = array_keys($this->_index); + foreach ($indexes as $hash) { + $pages[] = $this->_pages[$hash]->toArray(); + } + return $pages; + } + + // RecursiveIterator interface: + + /** + * Returns current page + * + * Implements RecursiveIterator interface. + * + * @return Zend_Navigation_Page current page or null + * @throws Zend_Navigation_Exception if the index is invalid + */ + public function current() + { + $this->_sort(); + current($this->_index); + $hash = key($this->_index); + + if (isset($this->_pages[$hash])) { + return $this->_pages[$hash]; + } else { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Corruption detected in container; ' . + 'invalid key found in internal iterator'); + } + } + + /** + * Returns hash code of current page + * + * Implements RecursiveIterator interface. + * + * @return string hash code of current page + */ + public function key() + { + $this->_sort(); + return key($this->_index); + } + + /** + * Moves index pointer to next page in the container + * + * Implements RecursiveIterator interface. + * + * @return void + */ + public function next() + { + $this->_sort(); + next($this->_index); + } + + /** + * Sets index pointer to first page in the container + * + * Implements RecursiveIterator interface. + * + * @return void + */ + public function rewind() + { + $this->_sort(); + reset($this->_index); + } + + /** + * Checks if container index is valid + * + * Implements RecursiveIterator interface. + * + * @return bool + */ + public function valid() + { + $this->_sort(); + return current($this->_index) !== false; + } + + /** + * Proxy to hasPages() + * + * Implements RecursiveIterator interface. + * + * @return bool whether container has any pages + */ + public function hasChildren() + { + return $this->hasPages(); + } + + /** + * Returns the child container. + * + * Implements RecursiveIterator interface. + * + * @return Zend_Navigation_Page|null + */ + public function getChildren() + { + $hash = key($this->_index); + + if (isset($this->_pages[$hash])) { + return $this->_pages[$hash]; + } + + return null; + } + + // Countable interface: + + /** + * Returns number of pages in container + * + * Implements Countable interface. + * + * @return int number of pages in the container + */ + public function count() + { + return count($this->_index); + } +} diff --git a/library/Zend/Navigation/Exception.php b/library/Zend/Navigation/Exception.php new file mode 100755 index 000000000..81be80311 --- /dev/null +++ b/library/Zend/Navigation/Exception.php @@ -0,0 +1,38 @@ +toArray(); + } + + if (!is_array($options)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $options must be an array or Zend_Config'); + } + + if (isset($options['type'])) { + $type = $options['type']; + } elseif(self::getDefaultPageType()!= null) { + $type = self::getDefaultPageType(); + } + + if(isset($type)) { + if (is_string($type) && !empty($type)) { + switch (strtolower($type)) { + case 'mvc': + $type = 'Zend_Navigation_Page_Mvc'; + break; + case 'uri': + $type = 'Zend_Navigation_Page_Uri'; + break; + } + + if (!class_exists($type)) { + require_once 'Zend/Loader.php'; + @Zend_Loader::loadClass($type); + } + + $page = new $type($options); + if (!$page instanceof Zend_Navigation_Page) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception(sprintf( + 'Invalid argument: Detected type "%s", which ' . + 'is not an instance of Zend_Navigation_Page', + $type)); + } + return $page; + } + } + + $hasUri = isset($options['uri']); + $hasMvc = isset($options['action']) || isset($options['controller']) || + isset($options['module']) || isset($options['route']) || + isset($options['params']); + + if ($hasMvc) { + require_once 'Zend/Navigation/Page/Mvc.php'; + return new Zend_Navigation_Page_Mvc($options); + } elseif ($hasUri) { + require_once 'Zend/Navigation/Page/Uri.php'; + return new Zend_Navigation_Page_Uri($options); + } else { + require_once 'Zend/Navigation/Exception.php'; + + $message = 'Invalid argument: Unable to determine class to instantiate'; + if (isset($options['label'])) { + $message .= ' (Page label: ' . $options['label'] . ')'; + } + + throw new Zend_Navigation_Exception($message); + } + } + + /** + * Page constructor + * + * @param array|Zend_Config $options [optional] page options. Default is + * null, which should set defaults. + * @throws Zend_Navigation_Exception if invalid options are given + */ + public function __construct($options = null) + { + if (is_array($options)) { + $this->setOptions($options); + } elseif ($options instanceof Zend_Config) { + $this->setConfig($options); + } + + // do custom initialization + $this->_init(); + } + + /** + * Initializes page (used by subclasses) + * + * @return void + */ + protected function _init() + { + } + + /** + * Sets page properties using a Zend_Config object + * + * @param Zend_Config $config config object to get properties from + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if invalid options are given + */ + public function setConfig(Zend_Config $config) + { + return $this->setOptions($config->toArray()); + } + + /** + * Sets page properties using options from an associative array + * + * Each key in the array corresponds to the according set*() method, and + * each word is separated by underscores, e.g. the option 'target' + * corresponds to setTarget(), and the option 'reset_params' corresponds to + * the method setResetParams(). + * + * @param array $options associative array of options to set + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if invalid options are given + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $this->set($key, $value); + } + + return $this; + } + + // Accessors: + + /** + * Sets page label + * + * @param string $label new page label + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if empty/no string is given + */ + public function setLabel($label) + { + if (null !== $label && !is_string($label)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $label must be a string or null'); + } + + $this->_label = $label; + return $this; + } + + /** + * Returns page label + * + * @return string page label or null + */ + public function getLabel() + { + return $this->_label; + } + + /** + * Sets a fragment identifier + * + * @param string $fragment new fragment identifier + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if empty/no string is given + */ + public function setFragment($fragment) + { + if (null !== $fragment && !is_string($fragment)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $fragment must be a string or null'); + } + + $this->_fragment = $fragment; + return $this; + } + + /** + * Returns fragment identifier + * + * @return string|null fragment identifier + */ + public function getFragment() + { + return $this->_fragment; + } + + /** + * Sets page id + * + * @param string|null $id [optional] id to set. Default is null, + * which sets no id. + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if not given string or null + */ + public function setId($id = null) + { + if (null !== $id && !is_string($id) && !is_numeric($id)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $id must be a string, number or null'); + } + + $this->_id = null === $id ? $id : (string) $id; + + return $this; + } + + /** + * Returns page id + * + * @return string|null page id or null + */ + public function getId() + { + return $this->_id; + } + + /** + * Sets page CSS class + * + * @param string|null $class [optional] CSS class to set. Default + * is null, which sets no CSS class. + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if not given string or null + */ + public function setClass($class = null) + { + if (null !== $class && !is_string($class)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $class must be a string or null'); + } + + $this->_class = $class; + return $this; + } + + /** + * Returns page class (CSS) + * + * @return string|null page's CSS class or null + */ + public function getClass() + { + return $this->_class; + } + + /** + * Sets page title + * + * @param string $title [optional] page title. Default is + * null, which sets no title. + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if not given string or null + */ + public function setTitle($title = null) + { + if (null !== $title && !is_string($title)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $title must be a non-empty string'); + } + + $this->_title = $title; + return $this; + } + + /** + * Returns page title + * + * @return string|null page title or null + */ + public function getTitle() + { + return $this->_title; + } + + /** + * Sets page target + * + * @param string|null $target [optional] target to set. Default is + * null, which sets no target. + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if target is not string or null + */ + public function setTarget($target = null) + { + if (null !== $target && !is_string($target)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $target must be a string or null'); + } + + $this->_target = $target; + return $this; + } + + /** + * Returns page target + * + * @return string|null page target or null + */ + public function getTarget() + { + return $this->_target; + } + + /** + * Sets access key for this page + * + * @param string|null $character [optional] access key to set. Default + * is null, which sets no access key. + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if access key is not string or null or + * if the string length not equal to one + */ + public function setAccesskey($character = null) + { + if (null !== $character + && (!is_string($character) || 1 != strlen($character))) + { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $character must be a single character or null' + ); + } + + $this->_accesskey = $character; + return $this; + } + + /** + * Returns page access key + * + * @return string|null page access key or null + */ + public function getAccesskey() + { + return $this->_accesskey; + } + + /** + * Sets the page's forward links to other pages + * + * This method expects an associative array of forward links to other pages, + * where each element's key is the name of the relation (e.g. alternate, + * prev, next, help, etc), and the value is a mixed value that could somehow + * be considered a page. + * + * @param array|Zend_Config $relations [optional] an associative array of + * forward links to other pages + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setRel($relations = null) + { + $this->_rel = array(); + + if (null !== $relations) { + if ($relations instanceof Zend_Config) { + $relations = $relations->toArray(); + } + + if (!is_array($relations)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $relations must be an ' . + 'array or an instance of Zend_Config'); + } + + foreach ($relations as $name => $relation) { + if (is_string($name)) { + $this->_rel[$name] = $relation; + } + } + } + + return $this; + } + + /** + * Returns the page's forward links to other pages + * + * This method returns an associative array of forward links to other pages, + * where each element's key is the name of the relation (e.g. alternate, + * prev, next, help, etc), and the value is a mixed value that could somehow + * be considered a page. + * + * @param string $relation [optional] name of relation to return. If not + * given, all relations will be returned. + * @return array an array of relations. If $relation is not + * specified, all relations will be returned in + * an associative array. + */ + public function getRel($relation = null) + { + if (null !== $relation) { + return isset($this->_rel[$relation]) ? + $this->_rel[$relation] : + null; + } + + return $this->_rel; + } + + /** + * Sets the page's reverse links to other pages + * + * This method expects an associative array of reverse links to other pages, + * where each element's key is the name of the relation (e.g. alternate, + * prev, next, help, etc), and the value is a mixed value that could somehow + * be considered a page. + * + * @param array|Zend_Config $relations [optional] an associative array of + * reverse links to other pages + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setRev($relations = null) + { + $this->_rev = array(); + + if (null !== $relations) { + if ($relations instanceof Zend_Config) { + $relations = $relations->toArray(); + } + + if (!is_array($relations)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $relations must be an ' . + 'array or an instance of Zend_Config'); + } + + foreach ($relations as $name => $relation) { + if (is_string($name)) { + $this->_rev[$name] = $relation; + } + } + } + + return $this; + } + + /** + * Returns the page's reverse links to other pages + * + * This method returns an associative array of forward links to other pages, + * where each element's key is the name of the relation (e.g. alternate, + * prev, next, help, etc), and the value is a mixed value that could somehow + * be considered a page. + * + * @param string $relation [optional] name of relation to return. If not + * given, all relations will be returned. + * @return array an array of relations. If $relation is not + * specified, all relations will be returned in + * an associative array. + */ + public function getRev($relation = null) + { + if (null !== $relation) { + return isset($this->_rev[$relation]) ? + $this->_rev[$relation] : + null; + } + + return $this->_rev; + } + + /** + * Sets a single custom HTML attribute + * + * @param string $name name of the HTML attribute + * @param string|null $value value for the HTML attribute + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if name is not string or value is + * not null or a string + */ + public function setCustomHtmlAttrib($name, $value) + { + if (!is_string($name)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $name must be a string' + ); + } + + if (null !== $value && !is_string($value)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $value must be a string or null' + ); + } + + if (null === $value && isset($this->_customHtmlAttribs[$name])) { + unset($this->_customHtmlAttribs[$name]); + } else { + $this->_customHtmlAttribs[$name] = $value; + } + + return $this; + } + + /** + * Returns a single custom HTML attributes by name + * + * @param string $name name of the HTML attribute + * @return string|null value for the HTML attribute or null + * @throws Zend_Navigation_Exception if name is not string + */ + public function getCustomHtmlAttrib($name) + { + if (!is_string($name)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $name must be a string' + ); + } + + if (isset($this->_customHtmlAttribs[$name])) { + return $this->_customHtmlAttribs[$name]; + } + + return null; + } + + /** + * Sets multiple custom HTML attributes at once + * + * @param array $attribs an associative array of html attributes + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setCustomHtmlAttribs(array $attribs) + { + foreach ($attribs as $key => $value) { + $this->setCustomHtmlAttrib($key, $value); + } + return $this; + } + + /** + * Returns all custom HTML attributes as an array + * + * @return array an array containing custom HTML attributes + */ + public function getCustomHtmlAttribs() + { + return $this->_customHtmlAttribs; + } + + /** + * Removes a custom HTML attribute from the page + * + * @param string $name name of the custom HTML attribute + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function removeCustomHtmlAttrib($name) + { + if (!is_string($name)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $name must be a string' + ); + } + + if (isset($this->_customHtmlAttribs[$name])) { + unset($this->_customHtmlAttribs[$name]); + } + } + + /** + * Clear all custom HTML attributes + * + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function clearCustomHtmlAttribs() + { + $this->_customHtmlAttribs = array(); + + return $this; + } + + /** + * Sets page order to use in parent container + * + * @param int $order [optional] page order in container. + * Default is null, which sets no + * specific order. + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if order is not integer or null + */ + public function setOrder($order = null) + { + if (is_string($order)) { + $temp = (int) $order; + if ($temp < 0 || $temp > 0 || $order == '0') { + $order = $temp; + } + } + + if (null !== $order && !is_int($order)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $order must be an integer or null, ' . + 'or a string that casts to an integer'); + } + + $this->_order = $order; + + // notify parent, if any + if (isset($this->_parent)) { + $this->_parent->notifyOrderUpdated(); + } + + return $this; + } + + /** + * Returns page order used in parent container + * + * @return int|null page order or null + */ + public function getOrder() + { + return $this->_order; + } + + /** + * Sets ACL resource assoicated with this page + * + * @param string|Zend_Acl_Resource_Interface $resource [optional] resource + * to associate with + * page. Default is + * null, which sets no + * resource. + * @throws Zend_Navigation_Exception if $resource if + * invalid + * @return Zend_Navigation_Page fluent interface, + * returns self + */ + public function setResource($resource = null) + { + if (null === $resource || is_string($resource) || + $resource instanceof Zend_Acl_Resource_Interface) { + $this->_resource = $resource; + } else { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $resource must be null, a string, ' . + ' or an instance of Zend_Acl_Resource_Interface'); + } + + return $this; + } + + /** + * Returns ACL resource assoicated with this page + * + * @return string|Zend_Acl_Resource_Interface|null ACL resource or null + */ + public function getResource() + { + return $this->_resource; + } + + /** + * Sets ACL privilege associated with this page + * + * @param string|null $privilege [optional] ACL privilege to associate + * with this page. Default is null, which + * sets no privilege. + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setPrivilege($privilege = null) + { + $this->_privilege = is_string($privilege) ? $privilege : null; + return $this; + } + + /** + * Returns ACL privilege associated with this page + * + * @return string|null ACL privilege or null + */ + public function getPrivilege() + { + return $this->_privilege; + } + + /** + * Sets whether page should be considered active or not + * + * @param bool $active [optional] whether page should be + * considered active or not. Default is true. + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setActive($active = true) + { + $this->_active = (bool) $active; + return $this; + } + + /** + * Returns whether page should be considered active or not + * + * @param bool $recursive [optional] whether page should be considered + * active if any child pages are active. Default is + * false. + * @return bool whether page should be considered active + */ + public function isActive($recursive = false) + { + if (!$this->_active && $recursive) { + foreach ($this->_pages as $page) { + if ($page->isActive(true)) { + return true; + } + } + return false; + } + + return $this->_active; + } + + /** + * Proxy to isActive() + * + * @param bool $recursive [optional] whether page should be considered + * active if any child pages are active. Default + * is false. + * @return bool whether page should be considered active + */ + public function getActive($recursive = false) + { + return $this->isActive($recursive); + } + + /** + * Sets whether the page should be visible or not + * + * @param bool $visible [optional] whether page should be + * considered visible or not. Default is true. + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setVisible($visible = true) + { + if (is_string($visible) && 'false' == strtolower($visible)) { + $visible = false; + } + $this->_visible = (bool) $visible; + return $this; + } + + /** + * Returns a boolean value indicating whether the page is visible + * + * @param bool $recursive [optional] whether page should be considered + * invisible if parent is invisible. Default is + * false. + * @return bool whether page should be considered visible + */ + public function isVisible($recursive = false) + { + if ($recursive && isset($this->_parent) && + $this->_parent instanceof Zend_Navigation_Page) { + if (!$this->_parent->isVisible(true)) { + return false; + } + } + + return $this->_visible; + } + + /** + * Proxy to isVisible() + * + * Returns a boolean value indicating whether the page is visible + * + * @param bool $recursive [optional] whether page should be considered + * invisible if parent is invisible. Default is + * false. + * @return bool whether page should be considered visible + */ + public function getVisible($recursive = false) + { + return $this->isVisible($recursive); + } + + /** + * Sets parent container + * + * @param Zend_Navigation_Container $parent [optional] new parent to set. + * Default is null which will set + * no parent. + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function setParent(Zend_Navigation_Container $parent = null) + { + if ($parent === $this) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'A page cannot have itself as a parent'); + } + + // return if the given parent already is parent + if ($parent === $this->_parent) { + return $this; + } + + // remove from old parent + if (null !== $this->_parent) { + $this->_parent->removePage($this); + } + + // set new parent + $this->_parent = $parent; + + // add to parent if page and not already a child + if (null !== $this->_parent && !$this->_parent->hasPage($this, false)) { + $this->_parent->addPage($this); + } + + return $this; + } + + /** + * Returns parent container + * + * @return Zend_Navigation_Container|null parent container or null + */ + public function getParent() + { + return $this->_parent; + } + + /** + * Sets the given property + * + * If the given property is native (id, class, title, etc), the matching + * set method will be used. Otherwise, it will be set as a custom property. + * + * @param string $property property name + * @param mixed $value value to set + * @return Zend_Navigation_Page fluent interface, returns self + * @throws Zend_Navigation_Exception if property name is invalid + */ + public function set($property, $value) + { + if (!is_string($property) || empty($property)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $property must be a non-empty string'); + } + + $method = 'set' . self::_normalizePropertyName($property); + + if ($method != 'setOptions' && $method != 'setConfig' && + method_exists($this, $method)) { + $this->$method($value); + } else { + $this->_properties[$property] = $value; + } + + return $this; + } + + /** + * Returns the value of the given property + * + * If the given property is native (id, class, title, etc), the matching + * get method will be used. Otherwise, it will return the matching custom + * property, or null if not found. + * + * @param string $property property name + * @return mixed the property's value or null + * @throws Zend_Navigation_Exception if property name is invalid + */ + public function get($property) + { + if (!is_string($property) || empty($property)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $property must be a non-empty string'); + } + + $method = 'get' . self::_normalizePropertyName($property); + + if (method_exists($this, $method)) { + return $this->$method(); + } elseif (isset($this->_properties[$property])) { + return $this->_properties[$property]; + } + + return null; + } + + // Magic overloads: + + /** + * Sets a custom property + * + * Magic overload for enabling $page->propname = $value. + * + * @param string $name property name + * @param mixed $value value to set + * @return void + * @throws Zend_Navigation_Exception if property name is invalid + */ + public function __set($name, $value) + { + $this->set($name, $value); + } + + /** + * Returns a property, or null if it doesn't exist + * + * Magic overload for enabling $page->propname. + * + * @param string $name property name + * @return mixed property value or null + * @throws Zend_Navigation_Exception if property name is invalid + */ + public function __get($name) + { + return $this->get($name); + } + + /** + * Checks if a property is set + * + * Magic overload for enabling isset($page->propname). + * + * Returns true if the property is native (id, class, title, etc), and + * true or false if it's a custom property (depending on whether the + * property actually is set). + * + * @param string $name property name + * @return bool whether the given property exists + */ + public function __isset($name) + { + $method = 'get' . self::_normalizePropertyName($name); + if (method_exists($this, $method)) { + return true; + } + + return isset($this->_properties[$name]); + } + + /** + * Unsets the given custom property + * + * Magic overload for enabling unset($page->propname). + * + * @param string $name property name + * @return void + * @throws Zend_Navigation_Exception if the property is native + */ + public function __unset($name) + { + $method = 'set' . self::_normalizePropertyName($name); + if (method_exists($this, $method)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception(sprintf( + 'Unsetting native property "%s" is not allowed', + $name)); + } + + if (isset($this->_properties[$name])) { + unset($this->_properties[$name]); + } + } + + /** + * Returns page label + * + * Magic overload for enabling echo $page. + * + * @return string page label + */ + public function __toString() + { + return $this->_label; + } + + // Public methods: + + /** + * Adds a forward relation to the page + * + * @param string $relation relation name (e.g. alternate, glossary, + * canonical, etc) + * @param mixed $value value to set for relation + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function addRel($relation, $value) + { + if (is_string($relation)) { + $this->_rel[$relation] = $value; + } + return $this; + } + + /** + * Adds a reverse relation to the page + * + * @param string $relation relation name (e.g. alternate, glossary, + * canonical, etc) + * @param mixed $value value to set for relation + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function addRev($relation, $value) + { + if (is_string($relation)) { + $this->_rev[$relation] = $value; + } + return $this; + } + + /** + * Removes a forward relation from the page + * + * @param string $relation name of relation to remove + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function removeRel($relation) + { + if (isset($this->_rel[$relation])) { + unset($this->_rel[$relation]); + } + + return $this; + } + + /** + * Removes a reverse relation from the page + * + * @param string $relation name of relation to remove + * @return Zend_Navigation_Page fluent interface, returns self + */ + public function removeRev($relation) + { + if (isset($this->_rev[$relation])) { + unset($this->_rev[$relation]); + } + + return $this; + } + + /** + * Returns an array containing the defined forward relations + * + * @return array defined forward relations + */ + public function getDefinedRel() + { + return array_keys($this->_rel); + } + + /** + * Returns an array containing the defined reverse relations + * + * @return array defined reverse relations + */ + public function getDefinedRev() + { + return array_keys($this->_rev); + } + + /** + * Returns custom properties as an array + * + * @return array an array containing custom properties + */ + public function getCustomProperties() + { + return $this->_properties; + } + + /** + * Returns a hash code value for the page + * + * @return string a hash code value for this page + */ + public final function hashCode() + { + return spl_object_hash($this); + } + + /** + * Returns an array representation of the page + * + * @return array associative array containing all page properties + */ + public function toArray() + { + return array_merge( + $this->getCustomProperties(), + array( + 'label' => $this->getlabel(), + 'fragment' => $this->getFragment(), + 'id' => $this->getId(), + 'class' => $this->getClass(), + 'title' => $this->getTitle(), + 'target' => $this->getTarget(), + 'accesskey' => $this->getAccesskey(), + 'rel' => $this->getRel(), + 'rev' => $this->getRev(), + 'customHtmlAttribs' => $this->getCustomHtmlAttribs(), + 'order' => $this->getOrder(), + 'resource' => $this->getResource(), + 'privilege' => $this->getPrivilege(), + 'active' => $this->isActive(), + 'visible' => $this->isVisible(), + 'type' => get_class($this), + 'pages' => parent::toArray() + ) + ); + } + + // Internal methods: + + /** + * Normalizes a property name + * + * @param string $property property name to normalize + * @return string normalized property name + */ + protected static function _normalizePropertyName($property) + { + return str_replace(' ', '', ucwords(str_replace('_', ' ', $property))); + } + + public static function setDefaultPageType($type = null) { + if($type !== null && !is_string($type)) { + throw new Zend_Navigation_Exception( + 'Cannot set default page type: type is no string but should be' + ); + } + + self::$_defaultPageType = $type; + } + + public static function getDefaultPageType() { + return self::$_defaultPageType; + } + + // Abstract methods: + + /** + * Returns href for this page + * + * @return string the page's href + */ + abstract public function getHref(); +} diff --git a/library/Zend/Navigation/Page/Mvc.php b/library/Zend/Navigation/Page/Mvc.php new file mode 100755 index 000000000..4c55f378c --- /dev/null +++ b/library/Zend/Navigation/Page/Mvc.php @@ -0,0 +1,696 @@ +_active) { + $front = Zend_Controller_Front::getInstance(); + $request = $front->getRequest(); + $reqParams = array(); + if ($request) { + $reqParams = $request->getParams(); + if (!array_key_exists('module', $reqParams)) { + $reqParams['module'] = $front->getDefaultModule(); + } + } + + $myParams = $this->_params; + + if ($this->_route + && method_exists($front->getRouter(), 'getRoute') + ) { + $route = $front->getRouter()->getRoute($this->_route); + if (method_exists($route, 'getDefaults')) { + $myParams = array_merge($route->getDefaults(), $myParams); + } + } + + if (null !== $this->_module) { + $myParams['module'] = $this->_module; + } elseif (!array_key_exists('module', $myParams)) { + $myParams['module'] = $front->getDefaultModule(); + } + + if (null !== $this->_controller) { + $myParams['controller'] = $this->_controller; + } elseif (!array_key_exists('controller', $myParams)) { + $myParams['controller'] = $front->getDefaultControllerName(); + } + + if (null !== $this->_action) { + $myParams['action'] = $this->_action; + } elseif (!array_key_exists('action', $myParams)) { + $myParams['action'] = $front->getDefaultAction(); + } + + foreach ($myParams as $key => $value) { + if (null === $value) { + unset($myParams[$key]); + } + } + + if (count(array_intersect_assoc($reqParams, $myParams)) == + count($myParams) + ) { + $this->_active = true; + + return true; + } + + $this->_active = false; + } + + return parent::isActive($recursive); + } + + /** + * Returns href for this page + * + * This method uses {@link Zend_Controller_Action_Helper_Url} to assemble + * the href based on the page's properties. + * + * @return string page href + */ + public function getHref() + { + if ($this->_hrefCache) { + return $this->_hrefCache; + } + + if (null === self::$_urlHelper) { + self::$_urlHelper = + Zend_Controller_Action_HelperBroker::getStaticHelper('Url'); + } + + $params = $this->getParams(); + + if ($param = $this->getModule()) { + $params['module'] = $param; + } + + if ($param = $this->getController()) { + $params['controller'] = $param; + } + + if ($param = $this->getAction()) { + $params['action'] = $param; + } + + $url = self::$_urlHelper->url( + $params, + $this->getRoute(), + $this->getResetParams(), + $this->getEncodeUrl() + ); + + // Use scheme? + $scheme = $this->getScheme(); + if (null !== $scheme) { + if (null === self::$_schemeHelper) { + require_once 'Zend/View/Helper/ServerUrl.php'; + self::$_schemeHelper = new Zend_View_Helper_ServerUrl(); + } + + $url = self::$_schemeHelper->setScheme($scheme)->serverUrl($url); + } + + // Add the fragment identifier if it is set + $fragment = $this->getFragment(); + if (null !== $fragment) { + $url .= '#' . $fragment; + } + + return $this->_hrefCache = $url; + } + + /** + * Sets action name to use when assembling URL + * + * @see getHref() + * + * @param string $action action name + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + * @throws Zend_Navigation_Exception if invalid $action is given + */ + public function setAction($action) + { + if (null !== $action && !is_string($action)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $action must be a string or null' + ); + } + + $this->_action = $action; + $this->_hrefCache = null; + + return $this; + } + + /** + * Returns action name to use when assembling URL + * + * @see getHref() + * + * @return string|null action name + */ + public function getAction() + { + return $this->_action; + } + + /** + * Sets controller name to use when assembling URL + * + * @see getHref() + * + * @param string|null $controller controller name + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + * @throws Zend_Navigation_Exception if invalid controller name is given + */ + public function setController($controller) + { + if (null !== $controller && !is_string($controller)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $controller must be a string or null' + ); + } + + $this->_controller = $controller; + $this->_hrefCache = null; + + return $this; + } + + /** + * Returns controller name to use when assembling URL + * + * @see getHref() + * + * @return string|null controller name or null + */ + public function getController() + { + return $this->_controller; + } + + /** + * Sets module name to use when assembling URL + * + * @see getHref() + * + * @param string|null $module module name + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + * @throws Zend_Navigation_Exception if invalid module name is given + */ + public function setModule($module) + { + if (null !== $module && !is_string($module)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $module must be a string or null' + ); + } + + $this->_module = $module; + $this->_hrefCache = null; + + return $this; + } + + /** + * Returns module name to use when assembling URL + * + * @see getHref() + * + * @return string|null module name or null + */ + public function getModule() + { + return $this->_module; + } + + /** + * Set multiple parameters (to use when assembling URL) at once + * + * URL options passed to the url action helper for assembling URLs. + * Overwrites any previously set parameters! + * + * @see getHref() + * + * @param array|null $params [optional] paramters as array + * ('name' => 'value'). Default is null + * which clears all params. + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function setParams(array $params = null) + { + $this->clearParams(); + + if (is_array($params)) { + $this->addParams($params); + } + + return $this; + } + + /** + * Set parameter (to use when assembling URL) + * + * URL option passed to the url action helper for assembling URLs. + * + * @see getHref() + * + * @param string $name parameter name + * @param mixed $value parameter value + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function setParam($name, $value) + { + $name = (string)$name; + $this->_params[$name] = $value; + + $this->_hrefCache = null; + + return $this; + } + + /** + * Add multiple parameters (to use when assembling URL) at once + * + * URL options passed to the url action helper for assembling URLs. + * + * @see getHref() + * + * @param array $params paramters as array ('name' => 'value') + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function addParams(array $params) + { + foreach ($params as $name => $value) { + $this->setParam($name, $value); + } + + return $this; + } + + /** + * Remove parameter (to use when assembling URL) + * + * @see getHref() + * + * @param string $name + * @return bool + */ + public function removeParam($name) + { + if (array_key_exists($name, $this->_params)) { + unset($this->_params[$name]); + + $this->_hrefCache = null; + return true; + } + + return false; + } + + /** + * Clear all parameters (to use when assembling URL) + * + * @see getHref() + * + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function clearParams() + { + $this->_params = array(); + + $this->_hrefCache = null; + return $this; + } + + /** + * Retrieve all parameters (to use when assembling URL) + * + * @see getHref() + * + * @return array parameters as array ('name' => 'value') + */ + public function getParams() + { + return $this->_params; + } + + /** + * Retrieve a single parameter (to use when assembling URL) + * + * @see getHref() + * + * @param string $name parameter name + * @return mixed + */ + public function getParam($name) + { + $name = (string) $name; + + if (!array_key_exists($name, $this->_params)) { + return null; + } + + return $this->_params[$name]; + } + + /** + * Sets route name to use when assembling URL + * + * @see getHref() + * + * @param string $route route name to use when assembling URL + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + * @throws Zend_Navigation_Exception if invalid $route is given + */ + public function setRoute($route) + { + if (null !== $route && (!is_string($route) || strlen($route) < 1)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $route must be a non-empty string or null' + ); + } + + $this->_route = $route; + $this->_hrefCache = null; + + return $this; + } + + /** + * Returns route name to use when assembling URL + * + * @see getHref() + * + * @return string route name + */ + public function getRoute() + { + return $this->_route; + } + + /** + * Sets whether params should be reset when assembling URL + * + * @see getHref() + * + * @param bool $resetParams whether params should be reset when + * assembling URL + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function setResetParams($resetParams) + { + $this->_resetParams = (bool) $resetParams; + $this->_hrefCache = null; + + return $this; + } + + /** + * Returns whether params should be reset when assembling URL + * + * @see getHref() + * + * @return bool whether params should be reset when assembling URL + */ + public function getResetParams() + { + return $this->_resetParams; + } + + /** + * Sets whether href should be encoded when assembling URL + * + * @see getHref() + * + * @param $encodeUrl + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function setEncodeUrl($encodeUrl) + { + $this->_encodeUrl = (bool) $encodeUrl; + $this->_hrefCache = null; + + return $this; + } + + /** + * Returns whether herf should be encoded when assembling URL + * + * @see getHref() + * + * @return bool whether herf should be encoded when assembling URL + */ + public function getEncodeUrl() + { + return $this->_encodeUrl; + } + + /** + * Sets scheme to use when assembling URL + * + * @see getHref() + * + * @param string|null $scheme scheme + * @throws Zend_Navigation_Exception + * @return Zend_Navigation_Page_Mvc fluent interface, returns self + */ + public function setScheme($scheme) + { + if (null !== $scheme && !is_string($scheme)) { + require_once 'Zend/Navigation/Exception.php'; + throw new Zend_Navigation_Exception( + 'Invalid argument: $scheme must be a string or null' + ); + } + + $this->_scheme = $scheme; + return $this; + } + + /** + * Returns scheme to use when assembling URL + * + * @see getHref() + * + * @return string|null scheme or null + */ + public function getScheme() + { + return $this->_scheme; + } + + /** + * Sets action helper for assembling URLs + * + * @see getHref() + * + * @param Zend_Controller_Action_Helper_Url $uh URL helper + * @return void + */ + public static function setUrlHelper(Zend_Controller_Action_Helper_Url $uh) + { + self::$_urlHelper = $uh; + } + + /** + * Sets view helper for assembling URLs with schemes + * + * @see getHref() + * + * @param Zend_View_Helper_ServerUrl $sh scheme helper + * @return void + */ + public static function setSchemeHelper(Zend_View_Helper_ServerUrl $sh) + { + self::$_schemeHelper = $sh; + } + + // Public methods: + + /** + * Returns an array representation of the page + * + * @return array associative array containing all page properties + */ + public function toArray() + { + return array_merge( + parent::toArray(), + array( + 'action' => $this->getAction(), + 'controller' => $this->getController(), + 'module' => $this->getModule(), + 'params' => $this->getParams(), + 'route' => $this->getRoute(), + 'reset_params' => $this->getResetParams(), + 'encodeUrl' => $this->getEncodeUrl(), + 'scheme' => $this->getScheme(), + ) + ); + } +} diff --git a/library/Zend/Navigation/Page/Uri.php b/library/Zend/Navigation/Page/Uri.php new file mode 100755 index 000000000..130b0d4d1 --- /dev/null +++ b/library/Zend/Navigation/Page/Uri.php @@ -0,0 +1,111 @@ +_uri = $uri; + return $this; + } + + /** + * Returns URI + * + * @return string + */ + public function getUri() + { + return $this->_uri; + } + + /** + * Returns href for this page + * + * @return string + */ + public function getHref() + { + $uri = $this->getUri(); + + $fragment = $this->getFragment(); + if (null !== $fragment) { + if ('#' == substr($uri, -1)) { + return $uri . $fragment; + } else { + return $uri . '#' . $fragment; + } + } + + return $uri; + } + + // Public methods: + + /** + * Returns an array representation of the page + * + * @return array + */ + public function toArray() + { + return array_merge( + parent::toArray(), + array( + 'uri' => $this->getUri() + )); + } +} diff --git a/library/Zend/Oauth.php b/library/Zend/Oauth.php new file mode 100755 index 000000000..77fa13d1f --- /dev/null +++ b/library/Zend/Oauth.php @@ -0,0 +1,90 @@ +setHeaders('Authorization', null); + self::$httpClient->resetParameters(); + } + return self::$httpClient; + } + + /** + * Simple mechanism to delete the entire singleton HTTP Client instance + * which forces an new instantiation for subsequent requests. + * + * @return void + */ + public static function clearHttpClient() + { + self::$httpClient = null; + } +} diff --git a/library/Zend/Oauth/Client.php b/library/Zend/Oauth/Client.php new file mode 100755 index 000000000..03b794dc8 --- /dev/null +++ b/library/Zend/Oauth/Client.php @@ -0,0 +1,329 @@ +rfc3986_strict)) { + $config = $config->toArray(); + $config['rfc3986_strict'] = true; + } else if (null === $config || + (is_array($config) && !isset($config['rfc3986_strict']))) { + $config['rfc3986_strict'] = true; + } + parent::__construct($uri, $config); + $this->_config = new Zend_Oauth_Config; + if ($oauthOptions !== null) { + if ($oauthOptions instanceof Zend_Config) { + $oauthOptions = $oauthOptions->toArray(); + } + $this->_config->setOptions($oauthOptions); + } + } + + /** + * Load the connection adapter + * + * @param Zend_Http_Client_Adapter_Interface $adapter + * @return void + */ + public function setAdapter($adapter) + { + if ($adapter == null) { + $this->adapter = $adapter; + } else { + parent::setAdapter($adapter); + } + } + + /** + * Set the streamingRequest variable which controls whether we are + * sending the raw (already encoded) POST data from a stream source. + * + * @param boolean $value The value to set. + * @return void + */ + public function setStreamingRequest($value) + { + $this->_streamingRequest = $value; + } + + /** + * Check whether the client is set to perform streaming requests. + * + * @return boolean True if yes, false otherwise. + */ + public function getStreamingRequest() + { + if ($this->_streamingRequest) { + return true; + } else { + return false; + } + } + + /** + * Prepare the request body (for POST and PUT requests) + * + * @return string + * @throws Zend_Http_Client_Exception + */ + protected function _prepareBody() + { + if($this->_streamingRequest) { + $this->setHeaders(self::CONTENT_LENGTH, + $this->raw_post_data->getTotalSize()); + return $this->raw_post_data; + } + else { + return parent::_prepareBody(); + } + } + + /** + * Clear all custom parameters we set. + * + * @return Zend_Http_Client + */ + public function resetParameters($clearAll = false) + { + $this->_streamingRequest = false; + return parent::resetParameters($clearAll); + } + + /** + * Set the raw (already encoded) POST data from a stream source. + * + * This is used to support POSTing from open file handles without + * caching the entire body into memory. It is a wrapper around + * Zend_Http_Client::setRawData(). + * + * @param string $data The request data + * @param string $enctype The encoding type + * @return Zend_Http_Client + */ + public function setRawDataStream($data, $enctype = null) + { + $this->_streamingRequest = true; + return $this->setRawData($data, $enctype); + } + + /** + * Same as Zend_Http_Client::setMethod() except it also creates an + * Oauth specific reference to the method type. + * Might be defunct and removed in a later iteration. + * + * @param string $method + * @return Zend_Http_Client + */ + public function setMethod($method = self::GET) + { + if ($method == self::GET) { + $this->setRequestMethod(self::GET); + } elseif($method == self::POST) { + $this->setRequestMethod(self::POST); + } elseif($method == self::PUT) { + $this->setRequestMethod(self::PUT); + } elseif($method == self::DELETE) { + $this->setRequestMethod(self::DELETE); + } elseif($method == self::HEAD) { + $this->setRequestMethod(self::HEAD); + } elseif($method == self::OPTIONS) { + $this->setRequestMethod(self::OPTIONS); + } + return parent::setMethod($method); + } + + /** + * Same as Zend_Http_Client::request() except just before the request is + * executed, we automatically append any necessary OAuth parameters and + * sign the request using the relevant signature method. + * + * @param string $method + * @return Zend_Http_Response + */ + public function request($method = null) + { + if ($method !== null) { + $this->setMethod($method); + } + $this->prepareOauth(); + return parent::request(); + } + + /** + * Performs OAuth preparation on the request before sending. + * + * This primarily means taking a request, correctly encoding and signing + * all parameters, and applying the correct OAuth scheme to the method + * being used. + * + * @return void + * @throws Zend_Oauth_Exception If POSTBODY scheme requested, but GET request method used; or if invalid request scheme provided + */ + public function prepareOauth() + { + $requestScheme = $this->getRequestScheme(); + $requestMethod = $this->getRequestMethod(); + $query = null; + if ($requestScheme == Zend_Oauth::REQUEST_SCHEME_HEADER) { + $oauthHeaderValue = $this->getToken()->toHeader( + $this->getUri(true), + $this->_config, + $this->_getSignableParametersAsQueryString(), + $this->getRealm() + ); + $this->setHeaders('Authorization', $oauthHeaderValue); + } elseif ($requestScheme == Zend_Oauth::REQUEST_SCHEME_POSTBODY) { + if ($requestMethod == self::GET) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + 'The client is configured to' + . ' pass OAuth parameters through a POST body but request method' + . ' is set to GET' + ); + } + $raw = $this->getToken()->toQueryString( + $this->getUri(true), + $this->_config, + $this->_getSignableParametersAsQueryString() + ); + $this->setRawData($raw, 'application/x-www-form-urlencoded'); + $this->paramsPost = array(); + } elseif ($requestScheme == Zend_Oauth::REQUEST_SCHEME_QUERYSTRING) { + $params = $this->paramsGet; + $query = $this->getUri()->getQuery(); + if ($query) { + $queryParts = explode('&', $this->getUri()->getQuery()); + foreach ($queryParts as $queryPart) { + $kvTuple = explode('=', $queryPart); + $params[urldecode($kvTuple[0])] = + (array_key_exists(1, $kvTuple) ? urldecode($kvTuple[1]) : null); + } + } + if (!empty($this->paramsPost)) { + $params = array_merge($params, $this->paramsPost); + $query = $this->getToken()->toQueryString( + $this->getUri(true), $this->_config, $params + ); + } + $query = $this->getToken()->toQueryString( + $this->getUri(true), $this->_config, $params + ); + $this->getUri()->setQuery($query); + $this->paramsGet = array(); + } else { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Invalid request scheme: ' . $requestScheme); + } + } + + /** + * Collect all signable parameters into a single array across query string + * and POST body. Don't include POST parameters if content type is multipart POST. + * + * @return array + */ + protected function _getSignableParametersAsQueryString() + { + $params = array(); + if (!empty($this->paramsGet)) { + $params = array_merge($params, $this->paramsGet); + } + if ($this->enctype != self::ENC_FORMDATA && !empty($this->paramsPost)) { + $params = array_merge($params, $this->paramsPost); + } + return $params; + } + + /** + * Simple Proxy to the current Zend_Oauth_Config method. It's that instance + * which holds all configuration methods and values this object also presents + * as it's API. + * + * @param string $method + * @param array $args + * @return mixed + * @throws Zend_Oauth_Exception if method does not exist in config object + */ + public function __call($method, array $args) + { + if (!method_exists($this->_config, $method)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Method does not exist: ' . $method); + } + return call_user_func_array(array($this->_config,$method), $args); + } +} diff --git a/library/Zend/Oauth/Config.php b/library/Zend/Oauth/Config.php new file mode 100755 index 000000000..61ab53cf5 --- /dev/null +++ b/library/Zend/Oauth/Config.php @@ -0,0 +1,691 @@ +toArray(); + } + $this->setOptions($options); + } + } + + /** + * Parse option array or Zend_Config instance and setup options using their + * relevant mutators. + * + * @param array|Zend_Config $options + * @return Zend_Oauth_Config + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + switch ($key) { + case 'consumerKey': + $this->setConsumerKey($value); + break; + case 'consumerSecret': + $this->setConsumerSecret($value); + break; + case 'signatureMethod': + $this->setSignatureMethod($value); + break; + case 'version': + $this->setVersion($value); + break; + case 'callbackUrl': + $this->setCallbackUrl($value); + break; + case 'siteUrl': + $this->setSiteUrl($value); + break; + case 'requestTokenUrl': + $this->setRequestTokenUrl($value); + break; + case 'accessTokenUrl': + $this->setAccessTokenUrl($value); + break; + case 'userAuthorizationUrl': + $this->setUserAuthorizationUrl($value); + break; + case 'authorizeUrl': + $this->setAuthorizeUrl($value); + break; + case 'requestMethod': + $this->setRequestMethod($value); + break; + case 'rsaPrivateKey': + $this->setRsaPrivateKey($value); + break; + case 'rsaPublicKey': + $this->setRsaPublicKey($value); + break; + case 'realm': + $this->setRealm($value); + break; + } + } + if (isset($options['requestScheme'])) { + $this->setRequestScheme($options['requestScheme']); + } + + return $this; + } + + /** + * Set consumer key + * + * @param string $key + * @return Zend_Oauth_Config + */ + public function setConsumerKey($key) + { + $this->_consumerKey = $key; + return $this; + } + + /** + * Get consumer key + * + * @return string + */ + public function getConsumerKey() + { + return $this->_consumerKey; + } + + /** + * Set consumer secret + * + * @param string $secret + * @return Zend_Oauth_Config + */ + public function setConsumerSecret($secret) + { + $this->_consumerSecret = $secret; + return $this; + } + + /** + * Get consumer secret + * + * Returns RSA private key if set; otherwise, returns any previously set + * consumer secret. + * + * @return string + */ + public function getConsumerSecret() + { + if ($this->_rsaPrivateKey !== null) { + return $this->_rsaPrivateKey; + } + return $this->_consumerSecret; + } + + /** + * Set signature method + * + * @param string $method + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception if unsupported signature method specified + */ + public function setSignatureMethod($method) + { + $method = strtoupper($method); + if (!in_array($method, array( + 'HMAC-SHA1', 'HMAC-SHA256', 'RSA-SHA1', 'PLAINTEXT' + )) + ) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Unsupported signature method: ' + . $method + . '. Supported are HMAC-SHA1, RSA-SHA1, PLAINTEXT and HMAC-SHA256'); + } + $this->_signatureMethod = $method;; + return $this; + } + + /** + * Get signature method + * + * @return string + */ + public function getSignatureMethod() + { + return $this->_signatureMethod; + } + + /** + * Set request scheme + * + * @param string $scheme + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception if invalid scheme specified, or if POSTBODY set when request method of GET is specified + */ + public function setRequestScheme($scheme) + { + $scheme = strtolower($scheme); + if (!in_array($scheme, array( + Zend_Oauth::REQUEST_SCHEME_HEADER, + Zend_Oauth::REQUEST_SCHEME_POSTBODY, + Zend_Oauth::REQUEST_SCHEME_QUERYSTRING, + )) + ) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $scheme . '\' is an unsupported request scheme' + ); + } + if ($scheme == Zend_Oauth::REQUEST_SCHEME_POSTBODY + && $this->getRequestMethod() == Zend_Oauth::GET + ) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + 'Cannot set POSTBODY request method if HTTP method set to GET' + ); + } + $this->_requestScheme = $scheme; + return $this; + } + + /** + * Get request scheme + * + * @return string + */ + public function getRequestScheme() + { + return $this->_requestScheme; + } + + /** + * Set version + * + * @param string $version + * @return Zend_Oauth_Config + */ + public function setVersion($version) + { + $this->_version = $version; + return $this; + } + + /** + * Get version + * + * @return string + */ + public function getVersion() + { + return $this->_version; + } + + /** + * Set callback URL + * + * @param string $url + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid URLs + */ + public function setCallbackUrl($url) + { + if (!Zend_Uri::check($url) && $url !== 'oob') { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $url . '\' is not a valid URI' + ); + } + $this->_callbackUrl = $url; + return $this; + } + + /** + * Get callback URL + * + * @return string + */ + public function getCallbackUrl() + { + return $this->_callbackUrl; + } + + /** + * Set site URL + * + * @param string $url + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid URLs + */ + public function setSiteUrl($url) + { + if (!Zend_Uri::check($url)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $url . '\' is not a valid URI' + ); + } + $this->_siteUrl = $url; + return $this; + } + + /** + * Get site URL + * + * @return string + */ + public function getSiteUrl() + { + return $this->_siteUrl; + } + + /** + * Set request token URL + * + * @param string $url + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid URLs + */ + public function setRequestTokenUrl($url) + { + if (!Zend_Uri::check($url)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $url . '\' is not a valid URI' + ); + } + $this->_requestTokenUrl = rtrim($url, '/'); + return $this; + } + + /** + * Get request token URL + * + * If no request token URL has been set, but a site URL has, returns the + * site URL with the string "/request_token" appended. + * + * @return string + */ + public function getRequestTokenUrl() + { + if (!$this->_requestTokenUrl && $this->_siteUrl) { + return $this->_siteUrl . '/request_token'; + } + return $this->_requestTokenUrl; + } + + /** + * Set access token URL + * + * @param string $url + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid URLs + */ + public function setAccessTokenUrl($url) + { + if (!Zend_Uri::check($url)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $url . '\' is not a valid URI' + ); + } + $this->_accessTokenUrl = rtrim($url, '/'); + return $this; + } + + /** + * Get access token URL + * + * If no access token URL has been set, but a site URL has, returns the + * site URL with the string "/access_token" appended. + * + * @return string + */ + public function getAccessTokenUrl() + { + if (!$this->_accessTokenUrl && $this->_siteUrl) { + return $this->_siteUrl . '/access_token'; + } + return $this->_accessTokenUrl; + } + + /** + * Set user authorization URL + * + * @param string $url + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid URLs + */ + public function setUserAuthorizationUrl($url) + { + return $this->setAuthorizeUrl($url); + } + + /** + * Set authorization URL + * + * @param string $url + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid URLs + */ + public function setAuthorizeUrl($url) + { + if (!Zend_Uri::check($url)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $url . '\' is not a valid URI' + ); + } + $this->_authorizeUrl = rtrim($url, '/'); + return $this; + } + + /** + * Get user authorization URL + * + * @return string + */ + public function getUserAuthorizationUrl() + { + return $this->getAuthorizeUrl(); + } + + /** + * Get authorization URL + * + * If no authorization URL has been set, but a site URL has, returns the + * site URL with the string "/authorize" appended. + * + * @return string + */ + public function getAuthorizeUrl() + { + if (!$this->_authorizeUrl && $this->_siteUrl) { + return $this->_siteUrl . '/authorize'; + } + return $this->_authorizeUrl; + } + + /** + * Set request method + * + * @param string $method + * @return Zend_Oauth_Config + * @throws Zend_Oauth_Exception for invalid request methods + */ + public function setRequestMethod($method) + { + $method = strtoupper($method); + if (!in_array($method, array( + Zend_Oauth::GET, + Zend_Oauth::POST, + Zend_Oauth::PUT, + Zend_Oauth::DELETE, + Zend_Oauth::OPTIONS, + )) + ) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Invalid method: ' . $method); + } + $this->_requestMethod = $method; + return $this; + } + + /** + * Get request method + * + * @return string + */ + public function getRequestMethod() + { + return $this->_requestMethod; + } + + /** + * Set RSA public key + * + * @param Zend_Crypt_Rsa_Key_Public $key + * @return Zend_Oauth_Config + */ + public function setRsaPublicKey(Zend_Crypt_Rsa_Key_Public $key) + { + $this->_rsaPublicKey = $key; + return $this; + } + + /** + * Get RSA public key + * + * @return Zend_Crypt_Rsa_Key_Public + */ + public function getRsaPublicKey() + { + return $this->_rsaPublicKey; + } + + /** + * Set RSA private key + * + * @param Zend_Crypt_Rsa_Key_Private $key + * @return Zend_Oauth_Config + */ + public function setRsaPrivateKey(Zend_Crypt_Rsa_Key_Private $key) + { + $this->_rsaPrivateKey = $key; + return $this; + } + + /** + * Get RSA private key + * + * @return Zend_Crypt_Rsa_Key_Private + */ + public function getRsaPrivateKey() + { + return $this->_rsaPrivateKey; + } + + /** + * Set OAuth token + * + * @param Zend_Oauth_Token $token + * @return Zend_Oauth_Config + */ + public function setToken(Zend_Oauth_Token $token) + { + $this->_token = $token; + return $this; + } + + /** + * Get OAuth token + * + * @return Zend_Oauth_Token + */ + public function getToken() + { + return $this->_token; + } + + /** + * Set OAuth realm + * + * @param string $realm + * @return Zend_Oauth_Config + */ + public function setRealm($realm) + { + $this->_realm = $realm; + return $this; + } + + /** + * Get OAuth realm + * + * @return string + */ + public function getRealm() + { + return $this->_realm; + } +} diff --git a/library/Zend/Oauth/Config/ConfigInterface.php b/library/Zend/Oauth/Config/ConfigInterface.php new file mode 100755 index 000000000..03ed051e4 --- /dev/null +++ b/library/Zend/Oauth/Config/ConfigInterface.php @@ -0,0 +1,79 @@ +_config = new Zend_Oauth_Config; + if ($options !== null) { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + $this->_config->setOptions($options); + } + } + + /** + * Attempts to retrieve a Request Token from an OAuth Provider which is + * later exchanged for an authorized Access Token used to access the + * protected resources exposed by a web service API. + * + * @param null|array $customServiceParameters Non-OAuth Provider-specified parameters + * @param null|string $httpMethod + * @param null|Zend_Oauth_Http_RequestToken $request + * @return Zend_Oauth_Token_Request + */ + public function getRequestToken( + array $customServiceParameters = null, + $httpMethod = null, + Zend_Oauth_Http_RequestToken $request = null + ) { + if ($request === null) { + $request = new Zend_Oauth_Http_RequestToken($this, $customServiceParameters); + } elseif($customServiceParameters !== null) { + $request->setParameters($customServiceParameters); + } + if ($httpMethod !== null) { + $request->setMethod($httpMethod); + } else { + $request->setMethod($this->getRequestMethod()); + } + $this->_requestToken = $request->execute(); + return $this->_requestToken; + } + + /** + * After a Request Token is retrieved, the user may be redirected to the + * OAuth Provider to authorize the application's access to their + * protected resources - the redirect URL being provided by this method. + * Once the user has authorized the application for access, they are + * redirected back to the application which can now exchange the previous + * Request Token for a fully authorized Access Token. + * + * @param null|array $customServiceParameters + * @param null|Zend_Oauth_Token_Request $token + * @param null|Zend_OAuth_Http_UserAuthorization $redirect + * @return string + */ + public function getRedirectUrl( + array $customServiceParameters = null, + Zend_Oauth_Token_Request $token = null, + Zend_Oauth_Http_UserAuthorization $redirect = null + ) { + if ($redirect === null) { + $redirect = new Zend_Oauth_Http_UserAuthorization($this, $customServiceParameters); + } elseif($customServiceParameters !== null) { + $redirect->setParameters($customServiceParameters); + } + if ($token !== null) { + $this->_requestToken = $token; + } + return $redirect->getUrl(); + } + + /** + * Rather than retrieve a redirect URL for use, e.g. from a controller, + * one may perform an immediate redirect. + * + * Sends headers and exit()s on completion. + * + * @param null|array $customServiceParameters + * @param null|Zend_Oauth_Token_Request $token + * @param null|Zend_Oauth_Http_UserAuthorization $request + * @return void + */ + public function redirect( + array $customServiceParameters = null, + Zend_Oauth_Token_Request $token = null, + Zend_Oauth_Http_UserAuthorization $request = null + ) { + if ($token instanceof Zend_Oauth_Http_UserAuthorization) { + $request = $token; + $token = null; + } + $redirectUrl = $this->getRedirectUrl($customServiceParameters, $token, $request); + header('Location: ' . $redirectUrl); + exit(1); + } + + /** + * Retrieve an Access Token in exchange for a previously received/authorized + * Request Token. + * + * @param array $queryData GET data returned in user's redirect from Provider + * @param Zend_Oauth_Token_Request Request Token information + * @param string $httpMethod + * @param Zend_Oauth_Http_AccessToken $request + * @return Zend_Oauth_Token_Access + * @throws Zend_Oauth_Exception on invalid authorization token, non-matching response authorization token, or unprovided authorization token + */ + public function getAccessToken( + $queryData, + Zend_Oauth_Token_Request $token, + $httpMethod = null, + Zend_Oauth_Http_AccessToken $request = null + ) { + $authorizedToken = new Zend_Oauth_Token_AuthorizedRequest($queryData); + if (!$authorizedToken->isValid()) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + 'Response from Service Provider is not a valid authorized request token'); + } + if ($request === null) { + $request = new Zend_Oauth_Http_AccessToken($this); + } + + // OAuth 1.0a Verifier + if ($authorizedToken->getParam('oauth_verifier') !== null) { + $params = array_merge($request->getParameters(), array( + 'oauth_verifier' => $authorizedToken->getParam('oauth_verifier') + )); + $request->setParameters($params); + } + if ($httpMethod !== null) { + $request->setMethod($httpMethod); + } else { + $request->setMethod($this->getRequestMethod()); + } + if (isset($token)) { + if ($authorizedToken->getToken() !== $token->getToken()) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + 'Authorized token from Service Provider does not match' + . ' supplied Request Token details' + ); + } + } else { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Request token must be passed to method'); + } + $this->_requestToken = $token; + $this->_accessToken = $request->execute(); + return $this->_accessToken; + } + + /** + * Return whatever the last Request Token retrieved was while using the + * current Consumer instance. + * + * @return Zend_Oauth_Token_Request + */ + public function getLastRequestToken() + { + return $this->_requestToken; + } + + /** + * Return whatever the last Access Token retrieved was while using the + * current Consumer instance. + * + * @return Zend_Oauth_Token_Access + */ + public function getLastAccessToken() + { + return $this->_accessToken; + } + + /** + * Alias to self::getLastAccessToken() + * + * @return Zend_Oauth_Token_Access + */ + public function getToken() + { + return $this->_accessToken; + } + + /** + * Simple Proxy to the current Zend_Oauth_Config method. It's that instance + * which holds all configuration methods and values this object also presents + * as it's API. + * + * @param string $method + * @param array $args + * @return mixed + * @throws Zend_Oauth_Exception if method does not exist in config object + */ + public function __call($method, array $args) + { + if (!method_exists($this->_config, $method)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Method does not exist: '.$method); + } + return call_user_func_array(array($this->_config,$method), $args); + } +} diff --git a/library/Zend/Oauth/Exception.php b/library/Zend/Oauth/Exception.php new file mode 100755 index 000000000..ae76b488b --- /dev/null +++ b/library/Zend/Oauth/Exception.php @@ -0,0 +1,33 @@ +_consumer = $consumer; + $this->_preferredRequestScheme = $this->_consumer->getRequestScheme(); + if ($parameters !== null) { + $this->setParameters($parameters); + } + if ($utility !== null) { + $this->_httpUtility = $utility; + } else { + $this->_httpUtility = new Zend_Oauth_Http_Utility; + } + } + + /** + * Set a preferred HTTP request method. + * + * @param string $method + * @return Zend_Oauth_Http + */ + public function setMethod($method) + { + if (!in_array($method, array(Zend_Oauth::POST, Zend_Oauth::GET))) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('invalid HTTP method: ' . $method); + } + $this->_preferredRequestMethod = $method; + return $this; + } + + /** + * Preferred HTTP request method accessor. + * + * @return string + */ + public function getMethod() + { + return $this->_preferredRequestMethod; + } + + /** + * Mutator to set an array of custom parameters for the HTTP request. + * + * @param array $customServiceParameters + * @return Zend_Oauth_Http + */ + public function setParameters(array $customServiceParameters) + { + $this->_parameters = $customServiceParameters; + return $this; + } + + /** + * Accessor for an array of custom parameters. + * + * @return array + */ + public function getParameters() + { + return $this->_parameters; + } + + /** + * Return the Consumer instance in use. + * + * @return Zend_Oauth_Consumer + */ + public function getConsumer() + { + return $this->_consumer; + } + + /** + * Commence a request cycle where the current HTTP method and OAuth + * request scheme set an upper preferred HTTP request style and where + * failures generate a new HTTP request style further down the OAuth + * preference list for OAuth Request Schemes. + * On success, return the Request object that results for processing. + * + * @param array $params + * @return Zend_Http_Response + * @throws Zend_Oauth_Exception on HTTP request errors + * @todo Remove cycling?; Replace with upfront do-or-die configuration + */ + public function startRequestCycle(array $params) + { + $response = null; + $body = null; + $status = null; + try { + $response = $this->_attemptRequest($params); + } catch (Zend_Http_Client_Exception $e) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception('Error in HTTP request', null, $e); + } + if ($response !== null) { + $body = $response->getBody(); + $status = $response->getStatus(); + } + if ($response === null // Request failure/exception + || $status == 500 // Internal Server Error + || $status == 400 // Bad Request + || $status == 401 // Unauthorized + || empty($body) // Missing token + ) { + $this->_assessRequestAttempt($response); + $response = $this->startRequestCycle($params); + } + return $response; + } + + /** + * Return an instance of Zend_Http_Client configured to use the Query + * String scheme for an OAuth driven HTTP request. + * + * @param array $params + * @param string $url + * @return Zend_Http_Client + */ + public function getRequestSchemeQueryStringClient(array $params, $url) + { + $client = Zend_Oauth::getHttpClient(); + $client->setUri($url); + $client->getUri()->setQuery( + $this->_httpUtility->toEncodedQueryString($params) + ); + $client->setMethod($this->_preferredRequestMethod); + return $client; + } + + /** + * Manages the switch from OAuth request scheme to another lower preference + * scheme during a request cycle. + * + * @param Zend_Http_Response + * @return void + * @throws Zend_Oauth_Exception if unable to retrieve valid token response + */ + protected function _assessRequestAttempt(Zend_Http_Response $response = null) + { + switch ($this->_preferredRequestScheme) { + case Zend_Oauth::REQUEST_SCHEME_HEADER: + $this->_preferredRequestScheme = Zend_Oauth::REQUEST_SCHEME_POSTBODY; + break; + case Zend_Oauth::REQUEST_SCHEME_POSTBODY: + $this->_preferredRequestScheme = Zend_Oauth::REQUEST_SCHEME_QUERYSTRING; + break; + default: + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + 'Could not retrieve a valid Token response from Token URL:' + . ($response !== null + ? PHP_EOL . $response->getBody() + : ' No body - check for headers') + ); + } + } + + /** + * Generates a valid OAuth Authorization header based on the provided + * parameters and realm. + * + * @param array $params + * @param string $realm + * @return string + */ + protected function _toAuthorizationHeader(array $params, $realm = null) + { + $headerValue = array(); + $headerValue[] = 'OAuth realm="' . $realm . '"'; + foreach ($params as $key => $value) { + if (!preg_match("/^oauth_/", $key)) { + continue; + } + $headerValue[] = Zend_Oauth_Http_Utility::urlEncode($key) + . '="' + . Zend_Oauth_Http_Utility::urlEncode($value) + . '"'; + } + return implode(",", $headerValue); + } +} diff --git a/library/Zend/Oauth/Http/AccessToken.php b/library/Zend/Oauth/Http/AccessToken.php new file mode 100755 index 000000000..8efd0f16b --- /dev/null +++ b/library/Zend/Oauth/Http/AccessToken.php @@ -0,0 +1,189 @@ +assembleParams(); + $response = $this->startRequestCycle($params); + $return = new Zend_Oauth_Token_Access($response); + return $return; + } + + /** + * Assemble all parameters for an OAuth Access Token request. + * + * @return array + */ + public function assembleParams() + { + $params = array( + 'oauth_consumer_key' => $this->_consumer->getConsumerKey(), + 'oauth_nonce' => $this->_httpUtility->generateNonce(), + 'oauth_signature_method' => $this->_consumer->getSignatureMethod(), + 'oauth_timestamp' => $this->_httpUtility->generateTimestamp(), + 'oauth_token' => $this->_consumer->getLastRequestToken()->getToken(), + 'oauth_version' => $this->_consumer->getVersion(), + ); + + if (!empty($this->_parameters)) { + $params = array_merge($params, $this->_parameters); + } + + $params['oauth_signature'] = $this->_httpUtility->sign( + $params, + $this->_consumer->getSignatureMethod(), + $this->_consumer->getConsumerSecret(), + $this->_consumer->getLastRequestToken()->getTokenSecret(), + $this->_preferredRequestMethod, + $this->_consumer->getAccessTokenUrl() + ); + + return $params; + } + + /** + * Generate and return a HTTP Client configured for the Header Request Scheme + * specified by OAuth, for use in requesting an Access Token. + * + * @param array $params + * @return Zend_Http_Client + */ + public function getRequestSchemeHeaderClient(array $params) + { + $params = $this->_cleanParamsOfIllegalCustomParameters($params); + $headerValue = $this->_toAuthorizationHeader($params); + $client = Zend_Oauth::getHttpClient(); + + $client->setUri($this->_consumer->getAccessTokenUrl()); + $client->setHeaders('Authorization', $headerValue); + $client->setMethod($this->_preferredRequestMethod); + + return $client; + } + + /** + * Generate and return a HTTP Client configured for the POST Body Request + * Scheme specified by OAuth, for use in requesting an Access Token. + * + * @param array $params + * @return Zend_Http_Client + */ + public function getRequestSchemePostBodyClient(array $params) + { + $params = $this->_cleanParamsOfIllegalCustomParameters($params); + $client = Zend_Oauth::getHttpClient(); + $client->setUri($this->_consumer->getAccessTokenUrl()); + $client->setMethod($this->_preferredRequestMethod); + $client->setRawData( + $this->_httpUtility->toEncodedQueryString($params) + ); + $client->setHeaders( + Zend_Http_Client::CONTENT_TYPE, + Zend_Http_Client::ENC_URLENCODED + ); + return $client; + } + + /** + * Generate and return a HTTP Client configured for the Query String Request + * Scheme specified by OAuth, for use in requesting an Access Token. + * + * @param array $params + * @param string $url + * @return Zend_Http_Client + */ + public function getRequestSchemeQueryStringClient(array $params, $url) + { + $params = $this->_cleanParamsOfIllegalCustomParameters($params); + return parent::getRequestSchemeQueryStringClient($params, $url); + } + + /** + * Attempt a request based on the current configured OAuth Request Scheme and + * return the resulting HTTP Response. + * + * @param array $params + * @return Zend_Http_Response + */ + protected function _attemptRequest(array $params) + { + switch ($this->_preferredRequestScheme) { + case Zend_Oauth::REQUEST_SCHEME_HEADER: + $httpClient = $this->getRequestSchemeHeaderClient($params); + break; + case Zend_Oauth::REQUEST_SCHEME_POSTBODY: + $httpClient = $this->getRequestSchemePostBodyClient($params); + break; + case Zend_Oauth::REQUEST_SCHEME_QUERYSTRING: + $httpClient = $this->getRequestSchemeQueryStringClient($params, + $this->_consumer->getAccessTokenUrl()); + break; + } + return $httpClient->request(); + } + + /** + * Access Token requests specifically may not contain non-OAuth parameters. + * So these should be striped out and excluded. Detection is easy since + * specified OAuth parameters start with "oauth_", Extension params start + * with "xouth_", and no other parameters should use these prefixes. + * + * xouth params are not currently allowable. + * + * @param array $params + * @return array + */ + protected function _cleanParamsOfIllegalCustomParameters(array $params) + { + foreach ($params as $key=>$value) { + if (!preg_match("/^oauth_/", $key)) { + unset($params[$key]); + } + } + return $params; + } +} diff --git a/library/Zend/Oauth/Http/RequestToken.php b/library/Zend/Oauth/Http/RequestToken.php new file mode 100755 index 000000000..44ae2da7a --- /dev/null +++ b/library/Zend/Oauth/Http/RequestToken.php @@ -0,0 +1,162 @@ +assembleParams(); + $response = $this->startRequestCycle($params); + $return = new Zend_Oauth_Token_Request($response); + return $return; + } + + /** + * Assemble all parameters for an OAuth Request Token request. + * + * @return array + */ + public function assembleParams() + { + $params = array( + 'oauth_consumer_key' => $this->_consumer->getConsumerKey(), + 'oauth_nonce' => $this->_httpUtility->generateNonce(), + 'oauth_timestamp' => $this->_httpUtility->generateTimestamp(), + 'oauth_signature_method' => $this->_consumer->getSignatureMethod(), + 'oauth_version' => $this->_consumer->getVersion(), + ); + + // indicates we support 1.0a + if ($this->_consumer->getCallbackUrl()) { + $params['oauth_callback'] = $this->_consumer->getCallbackUrl(); + } else { + $params['oauth_callback'] = 'oob'; + } + + if (!empty($this->_parameters)) { + $params = array_merge($params, $this->_parameters); + } + + $params['oauth_signature'] = $this->_httpUtility->sign( + $params, + $this->_consumer->getSignatureMethod(), + $this->_consumer->getConsumerSecret(), + null, + $this->_preferredRequestMethod, + $this->_consumer->getRequestTokenUrl() + ); + + return $params; + } + + /** + * Generate and return a HTTP Client configured for the Header Request Scheme + * specified by OAuth, for use in requesting a Request Token. + * + * @param array $params + * @return Zend_Http_Client + */ + public function getRequestSchemeHeaderClient(array $params) + { + $headerValue = $this->_httpUtility->toAuthorizationHeader( + $params + ); + $client = Zend_Oauth::getHttpClient(); + $client->setUri($this->_consumer->getRequestTokenUrl()); + $client->setHeaders('Authorization', $headerValue); + $rawdata = $this->_httpUtility->toEncodedQueryString($params, true); + if (!empty($rawdata)) { + $client->setRawData($rawdata, 'application/x-www-form-urlencoded'); + } + $client->setMethod($this->_preferredRequestMethod); + return $client; + } + + /** + * Generate and return a HTTP Client configured for the POST Body Request + * Scheme specified by OAuth, for use in requesting a Request Token. + * + * @param array $params + * @return Zend_Http_Client + */ + public function getRequestSchemePostBodyClient(array $params) + { + $client = Zend_Oauth::getHttpClient(); + $client->setUri($this->_consumer->getRequestTokenUrl()); + $client->setMethod($this->_preferredRequestMethod); + $client->setRawData( + $this->_httpUtility->toEncodedQueryString($params) + ); + $client->setHeaders( + Zend_Http_Client::CONTENT_TYPE, + Zend_Http_Client::ENC_URLENCODED + ); + return $client; + } + + /** + * Attempt a request based on the current configured OAuth Request Scheme and + * return the resulting HTTP Response. + * + * @param array $params + * @return Zend_Http_Response + */ + protected function _attemptRequest(array $params) + { + switch ($this->_preferredRequestScheme) { + case Zend_Oauth::REQUEST_SCHEME_HEADER: + $httpClient = $this->getRequestSchemeHeaderClient($params); + break; + case Zend_Oauth::REQUEST_SCHEME_POSTBODY: + $httpClient = $this->getRequestSchemePostBodyClient($params); + break; + case Zend_Oauth::REQUEST_SCHEME_QUERYSTRING: + $httpClient = $this->getRequestSchemeQueryStringClient($params, + $this->_consumer->getRequestTokenUrl()); + break; + } + return $httpClient->request(); + } +} diff --git a/library/Zend/Oauth/Http/UserAuthorization.php b/library/Zend/Oauth/Http/UserAuthorization.php new file mode 100755 index 000000000..8582bac05 --- /dev/null +++ b/library/Zend/Oauth/Http/UserAuthorization.php @@ -0,0 +1,78 @@ +assembleParams(); + $uri = Zend_Uri_Http::fromString($this->_consumer->getUserAuthorizationUrl()); + + $uri->setQuery( + $this->_httpUtility->toEncodedQueryString($params) + ); + + return $uri->getUri(); + } + + /** + * Assemble all parameters for inclusion in a redirect URL. + * + * @return array + */ + public function assembleParams() + { + $params = array( + 'oauth_token' => $this->_consumer->getLastRequestToken()->getToken(), + ); + + if (!Zend_Oauth_Client::$supportsRevisionA) { + $callback = $this->_consumer->getCallbackUrl(); + if (!empty($callback)) { + $params['oauth_callback'] = $callback; + } + } + + if (!empty($this->_parameters)) { + $params = array_merge($params, $this->_parameters); + } + + return $params; + } +} diff --git a/library/Zend/Oauth/Http/Utility.php b/library/Zend/Oauth/Http/Utility.php new file mode 100755 index 000000000..3c063744b --- /dev/null +++ b/library/Zend/Oauth/Http/Utility.php @@ -0,0 +1,217 @@ + $config->getConsumerKey(), + 'oauth_nonce' => $this->generateNonce(), + 'oauth_signature_method' => $config->getSignatureMethod(), + 'oauth_timestamp' => $this->generateTimestamp(), + 'oauth_version' => $config->getVersion(), + ); + + if ($config->getToken()->getToken() != null) { + $params['oauth_token'] = $config->getToken()->getToken(); + } + + + if ($serviceProviderParams !== null) { + $params = array_merge($params, $serviceProviderParams); + } + + $params['oauth_signature'] = $this->sign( + $params, + $config->getSignatureMethod(), + $config->getConsumerSecret(), + $config->getToken()->getTokenSecret(), + $config->getRequestMethod(), + $url + ); + + return $params; + } + + /** + * Given both OAuth parameters and any custom parametere, generate an + * encoded query string. This method expects parameters to have been + * assembled and signed beforehand. + * + * @param array $params + * @param bool $customParamsOnly Ignores OAuth params e.g. for requests using OAuth Header + * @return string + */ + public function toEncodedQueryString(array $params, $customParamsOnly = false) + { + if ($customParamsOnly) { + foreach ($params as $key=>$value) { + if (preg_match("/^oauth_/", $key)) { + unset($params[$key]); + } + } + } + $encodedParams = array(); + foreach ($params as $key => $value) { + $encodedParams[] = self::urlEncode($key) + . '=' + . self::urlEncode($value); + } + return implode('&', $encodedParams); + } + + /** + * Cast to authorization header + * + * @param array $params + * @param null|string $realm + * @param bool $excludeCustomParams + * @return void + */ + public function toAuthorizationHeader(array $params, $realm = null, $excludeCustomParams = true) + { + $headerValue = array( + 'OAuth realm="' . $realm . '"', + ); + + foreach ($params as $key => $value) { + if ($excludeCustomParams) { + if (!preg_match("/^oauth_/", $key)) { + continue; + } + } + $headerValue[] = self::urlEncode($key) + . '="' + . self::urlEncode($value) . '"'; + } + return implode(",", $headerValue); + } + + /** + * Sign request + * + * @param array $params + * @param string $signatureMethod + * @param string $consumerSecret + * @param null|string $tokenSecret + * @param null|string $method + * @param null|string $url + * @return string + */ + public function sign( + array $params, $signatureMethod, $consumerSecret, $tokenSecret = null, $method = null, $url = null + ) { + $className = ''; + $hashAlgo = null; + $parts = explode('-', $signatureMethod); + if (count($parts) > 1) { + $className = 'Zend_Oauth_Signature_' . ucfirst(strtolower($parts[0])); + $hashAlgo = $parts[1]; + } else { + $className = 'Zend_Oauth_Signature_' . ucfirst(strtolower($signatureMethod)); + } + + require_once str_replace('_', '/', $className) . '.php'; + $signatureObject = new $className($consumerSecret, $tokenSecret, $hashAlgo); + return $signatureObject->sign($params, $method, $url); + } + + /** + * Parse query string + * + * @param mixed $query + * @return array + */ + public function parseQueryString($query) + { + $params = array(); + if (empty($query)) { + return array(); + } + + // Not remotely perfect but beats parse_str() which converts + // periods and uses urldecode, not rawurldecode. + $parts = explode('&', $query); + foreach ($parts as $pair) { + $kv = explode('=', $pair); + $params[rawurldecode($kv[0])] = rawurldecode($kv[1]); + } + return $params; + } + + /** + * Generate nonce + * + * @return string + */ + public function generateNonce() + { + return md5(uniqid(rand(), true)); + } + + /** + * Generate timestamp + * + * @return int + */ + public function generateTimestamp() + { + return time(); + } + + /** + * urlencode a value + * + * @param string $value + * @return string + */ + public static function urlEncode($value) + { + $encoded = rawurlencode($value); + $encoded = str_replace('%7E', '~', $encoded); + return $encoded; + } +} diff --git a/library/Zend/Oauth/Signature/Hmac.php b/library/Zend/Oauth/Signature/Hmac.php new file mode 100755 index 000000000..b93cc5891 --- /dev/null +++ b/library/Zend/Oauth/Signature/Hmac.php @@ -0,0 +1,54 @@ +_key, + $this->_hashAlgorithm, + $this->_getBaseSignatureString($params, $method, $url), + Zend_Crypt_Hmac::BINARY + ); + return base64_encode($binaryHash); + } +} diff --git a/library/Zend/Oauth/Signature/Plaintext.php b/library/Zend/Oauth/Signature/Plaintext.php new file mode 100755 index 000000000..e39b67677 --- /dev/null +++ b/library/Zend/Oauth/Signature/Plaintext.php @@ -0,0 +1,49 @@ +_tokenSecret === null) { + return $this->_consumerSecret . '&'; + } + $return = implode('&', array($this->_consumerSecret, $this->_tokenSecret)); + return $return; + } +} diff --git a/library/Zend/Oauth/Signature/Rsa.php b/library/Zend/Oauth/Signature/Rsa.php new file mode 100755 index 000000000..c79d4a3e7 --- /dev/null +++ b/library/Zend/Oauth/Signature/Rsa.php @@ -0,0 +1,65 @@ +setHashAlgorithm($this->_hashAlgorithm); + $sign = $rsa->sign( + $this->_getBaseSignatureString($params, $method, $url), + $this->_key, + Zend_Crypt_Rsa::BASE64 + ); + return $sign; + } + + /** + * Assemble encryption key + * + * @return string + */ + protected function _assembleKey() + { + return $this->_consumerSecret; + } +} diff --git a/library/Zend/Oauth/Signature/SignatureAbstract.php b/library/Zend/Oauth/Signature/SignatureAbstract.php new file mode 100755 index 000000000..688f4606c --- /dev/null +++ b/library/Zend/Oauth/Signature/SignatureAbstract.php @@ -0,0 +1,183 @@ +_consumerSecret = $consumerSecret; + if (isset($tokenSecret)) { + $this->_tokenSecret = $tokenSecret; + } + $this->_key = $this->_assembleKey(); + if (isset($hashAlgo)) { + $this->_hashAlgorithm = $hashAlgo; + } + } + + /** + * Sign a request + * + * @param array $params + * @param null|string $method + * @param null|string $url + * @return string + */ + public abstract function sign(array $params, $method = null, $url = null); + + /** + * Normalize the base signature URL + * + * @param string $url + * @return string + */ + public function normaliseBaseSignatureUrl($url) + { + $uri = Zend_Uri_Http::fromString($url); + if ($uri->getScheme() == 'http' && $uri->getPort() == '80') { + $uri->setPort(''); + } elseif ($uri->getScheme() == 'https' && $uri->getPort() == '443') { + $uri->setPort(''); + } + $uri->setQuery(''); + $uri->setFragment(''); + $uri->setHost(strtolower($uri->getHost())); + return $uri->getUri(true); + } + + /** + * Assemble key from consumer and token secrets + * + * @return string + */ + protected function _assembleKey() + { + $parts = array($this->_consumerSecret); + if ($this->_tokenSecret !== null) { + $parts[] = $this->_tokenSecret; + } + foreach ($parts as $key => $secret) { + $parts[$key] = Zend_Oauth_Http_Utility::urlEncode($secret); + } + return implode('&', $parts); + } + + /** + * Get base signature string + * + * @param array $params + * @param null|string $method + * @param null|string $url + * @return string + */ + protected function _getBaseSignatureString(array $params, $method = null, $url = null) + { + $encodedParams = array(); + foreach ($params as $key => $value) { + $encodedParams[Zend_Oauth_Http_Utility::urlEncode($key)] = + Zend_Oauth_Http_Utility::urlEncode($value); + } + $baseStrings = array(); + if (isset($method)) { + $baseStrings[] = strtoupper($method); + } + if (isset($url)) { + // should normalise later + $baseStrings[] = Zend_Oauth_Http_Utility::urlEncode( + $this->normaliseBaseSignatureUrl($url) + ); + } + if (isset($encodedParams['oauth_signature'])) { + unset($encodedParams['oauth_signature']); + } + $baseStrings[] = Zend_Oauth_Http_Utility::urlEncode( + $this->_toByteValueOrderedQueryString($encodedParams) + ); + return implode('&', $baseStrings); + } + + /** + * Transform an array to a byte value ordered query string + * + * @param array $params + * @return string + */ + protected function _toByteValueOrderedQueryString(array $params) + { + $return = array(); + uksort($params, 'strnatcmp'); + foreach ($params as $key => $value) { + if (is_array($value)) { + natsort($value); + foreach ($value as $keyduplicate) { + $return[] = $key . '=' . $keyduplicate; + } + } else { + $return[] = $key . '=' . $value; + } + } + return implode('&', $return); + } +} diff --git a/library/Zend/Oauth/Token.php b/library/Zend/Oauth/Token.php new file mode 100755 index 000000000..52a1f8697 --- /dev/null +++ b/library/Zend/Oauth/Token.php @@ -0,0 +1,285 @@ +_response = $response; + $params = $this->_parseParameters($response); + if ($params !== null && count($params) > 0) { + $this->setParams($params); + } + } + if ($utility !== null) { + $this->_httpUtility = $utility; + } else { + $this->_httpUtility = new Zend_Oauth_Http_Utility; + } + } + + /** + * Attempts to validate the Token parsed from the HTTP response - really + * it's just very basic existence checks which are minimal. + * + * @return bool + */ + public function isValid() + { + if (isset($this->_params[self::TOKEN_PARAM_KEY]) + && !empty($this->_params[self::TOKEN_PARAM_KEY]) + && isset($this->_params[self::TOKEN_SECRET_PARAM_KEY]) + ) { + return true; + } + return false; + } + + /** + * Return the HTTP response object used to initialise this instance. + * + * @return Zend_Http_Response + */ + public function getResponse() + { + return $this->_response; + } + + /** + * Sets the value for the this Token's secret which may be used when signing + * requests with this Token. + * + * @param string $secret + * @return Zend_Oauth_Token + */ + public function setTokenSecret($secret) + { + $this->setParam(self::TOKEN_SECRET_PARAM_KEY, $secret); + return $this; + } + + /** + * Retrieve this Token's secret which may be used when signing + * requests with this Token. + * + * @return string + */ + public function getTokenSecret() + { + return $this->getParam(self::TOKEN_SECRET_PARAM_KEY); + } + + /** + * Sets the value for a parameter (e.g. token secret or other) and run + * a simple filter to remove any trailing newlines. + * + * @param string $key + * @param string $value + * @return Zend_Oauth_Token + */ + public function setParam($key, $value) + { + $this->_params[$key] = trim($value, "\n"); + return $this; + } + + /** + * Sets the value for some parameters (e.g. token secret or other) and run + * a simple filter to remove any trailing newlines. + * + * @param array $params + * @return Zend_Oauth_Token + */ + public function setParams(array $params) + { + foreach ($params as $key=>$value) { + $this->setParam($key, $value); + } + return $this; + } + + /** + * Get the value for a parameter (e.g. token secret or other). + * + * @param string $key + * @return mixed + */ + public function getParam($key) + { + if (isset($this->_params[$key])) { + return $this->_params[$key]; + } + return null; + } + + /** + * Sets the value for a Token. + * + * @param string $token + * @return Zend_Oauth_Token + */ + public function setToken($token) + { + $this->setParam(self::TOKEN_PARAM_KEY, $token); + return $this; + } + + /** + * Gets the value for a Token. + * + * @return string + */ + public function getToken() + { + return $this->getParam(self::TOKEN_PARAM_KEY); + } + + /** + * Generic accessor to enable access as public properties. + * + * @return string + */ + public function __get($key) + { + return $this->getParam($key); + } + + /** + * Generic mutator to enable access as public properties. + * + * @param string $key + * @param string $value + * @return void + */ + public function __set($key, $value) + { + $this->setParam($key, $value); + } + + /** + * Convert Token to a string, specifically a raw encoded query string. + * + * @return string + */ + public function toString() + { + return $this->_httpUtility->toEncodedQueryString($this->_params); + } + + /** + * Convert Token to a string, specifically a raw encoded query string. + * Aliases to self::toString() + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Parse a HTTP response body and collect returned parameters + * as raw url decoded key-value pairs in an associative array. + * + * @param Zend_Http_Response $response + * @return array + */ + protected function _parseParameters(Zend_Http_Response $response) + { + $params = array(); + $body = $response->getBody(); + if (empty($body)) { + return; + } + + // validate body based on acceptable characters...todo + $parts = explode('&', $body); + foreach ($parts as $kvpair) { + $pair = explode('=', $kvpair); + $params[rawurldecode($pair[0])] = rawurldecode($pair[1]); + } + return $params; + } + + /** + * Limit serialisation stored data to the parameters + */ + public function __sleep() + { + return array('_params'); + } + + /** + * After serialisation, re-instantiate a HTTP utility class for use + */ + public function __wakeup() + { + if ($this->_httpUtility === null) { + $this->_httpUtility = new Zend_Oauth_Http_Utility; + } + } +} diff --git a/library/Zend/Oauth/Token/Access.php b/library/Zend/Oauth/Token/Access.php new file mode 100755 index 000000000..b31100651 --- /dev/null +++ b/library/Zend/Oauth/Token/Access.php @@ -0,0 +1,99 @@ +_httpUtility->assembleParams($url, $config, $customParams); + return $this->_httpUtility->toAuthorizationHeader($params, $realm); + } + + /** + * Cast to HTTP query string + * + * @param mixed $url + * @param Zend_Oauth_Config_ConfigInterface $config + * @param null|array $params + * @return string + */ + public function toQueryString($url, Zend_Oauth_Config_ConfigInterface $config, array $params = null) + { + if (!Zend_Uri::check($url)) { + require_once 'Zend/Oauth/Exception.php'; + throw new Zend_Oauth_Exception( + '\'' . $url . '\' is not a valid URI' + ); + } + $params = $this->_httpUtility->assembleParams($url, $config, $params); + return $this->_httpUtility->toEncodedQueryString($params); + } + + /** + * Get OAuth client + * + * @param array $oauthOptions + * @param null|string $uri + * @param null|array|Zend_Config $config + * @param bool $excludeCustomParamsFromHeader + * @return Zend_Oauth_Client + */ + public function getHttpClient(array $oauthOptions, $uri = null, $config = null, $excludeCustomParamsFromHeader = true) + { + $client = new Zend_Oauth_Client($oauthOptions, $uri, $config, $excludeCustomParamsFromHeader); + $client->setToken($this); + return $client; + } +} diff --git a/library/Zend/Oauth/Token/AuthorizedRequest.php b/library/Zend/Oauth/Token/AuthorizedRequest.php new file mode 100755 index 000000000..9ae2bbb03 --- /dev/null +++ b/library/Zend/Oauth/Token/AuthorizedRequest.php @@ -0,0 +1,102 @@ +_data = $data; + $params = $this->_parseData(); + if (count($params) > 0) { + $this->setParams($params); + } + } + if ($utility !== null) { + $this->_httpUtility = $utility; + } else { + $this->_httpUtility = new Zend_Oauth_Http_Utility; + } + } + + /** + * Retrieve token data + * + * @return array + */ + public function getData() + { + return $this->_data; + } + + /** + * Indicate if token is valid + * + * @return bool + */ + public function isValid() + { + if (isset($this->_params[self::TOKEN_PARAM_KEY]) + && !empty($this->_params[self::TOKEN_PARAM_KEY]) + ) { + return true; + } + return false; + } + + /** + * Parse string data into array + * + * @return array + */ + protected function _parseData() + { + $params = array(); + if (empty($this->_data)) { + return; + } + foreach ($this->_data as $key => $value) { + $params[rawurldecode($key)] = rawurldecode($value); + } + return $params; + } +} diff --git a/library/Zend/Oauth/Token/Request.php b/library/Zend/Oauth/Token/Request.php new file mode 100755 index 000000000..6697bff6c --- /dev/null +++ b/library/Zend/Oauth/Token/Request.php @@ -0,0 +1,50 @@ +_params[Zend_Oauth_Token::TOKEN_PARAM_CALLBACK_CONFIRMED])) { + Zend_Oauth_Client::$supportsRevisionA = true; + } + } +} diff --git a/library/Zend/OpenId.php b/library/Zend/OpenId.php new file mode 100755 index 000000000..2e6e57c78 --- /dev/null +++ b/library/Zend/OpenId.php @@ -0,0 +1,757 @@ + 1 ? $dir : '') + . '/' + . $url; + } + } + } + return $url; + } + + /** + * Converts variable/value pairs into URL encoded query string + * + * @param array $params variable/value pairs + * @return string URL encoded query string + */ + static public function paramsToQuery($params) + { + foreach($params as $key => $value) { + if (isset($query)) { + $query .= '&' . $key . '=' . urlencode($value); + } else { + $query = $key . '=' . urlencode($value); + } + } + return isset($query) ? $query : ''; + } + + /** + * Normalizes URL according to RFC 3986 to use it in comparison operations. + * The function gets URL argument by reference and modifies it. + * It returns true on success and false of failure. + * + * @param string &$id url to be normalized + * @return bool + */ + static public function normalizeUrl(&$id) + { + // RFC 3986, 6.2.2. Syntax-Based Normalization + + // RFC 3986, 6.2.2.2 Percent-Encoding Normalization + $i = 0; + $n = strlen($id); + $res = ''; + while ($i < $n) { + if ($id[$i] == '%') { + if ($i + 2 >= $n) { + return false; + } + ++$i; + if ($id[$i] >= '0' && $id[$i] <= '9') { + $c = ord($id[$i]) - ord('0'); + } else if ($id[$i] >= 'A' && $id[$i] <= 'F') { + $c = ord($id[$i]) - ord('A') + 10; + } else if ($id[$i] >= 'a' && $id[$i] <= 'f') { + $c = ord($id[$i]) - ord('a') + 10; + } else { + return false; + } + ++$i; + if ($id[$i] >= '0' && $id[$i] <= '9') { + $c = ($c << 4) | (ord($id[$i]) - ord('0')); + } else if ($id[$i] >= 'A' && $id[$i] <= 'F') { + $c = ($c << 4) | (ord($id[$i]) - ord('A') + 10); + } else if ($id[$i] >= 'a' && $id[$i] <= 'f') { + $c = ($c << 4) | (ord($id[$i]) - ord('a') + 10); + } else { + return false; + } + ++$i; + $ch = chr($c); + if (($ch >= 'A' && $ch <= 'Z') || + ($ch >= 'a' && $ch <= 'z') || + $ch == '-' || + $ch == '.' || + $ch == '_' || + $ch == '~') { + $res .= $ch; + } else { + $res .= '%'; + if (($c >> 4) < 10) { + $res .= chr(($c >> 4) + ord('0')); + } else { + $res .= chr(($c >> 4) - 10 + ord('A')); + } + $c = $c & 0xf; + if ($c < 10) { + $res .= chr($c + ord('0')); + } else { + $res .= chr($c - 10 + ord('A')); + } + } + } else { + $res .= $id[$i++]; + } + } + + if (!preg_match('|^([^:]+)://([^:@]*(?:[:][^@]*)?@)?([^/:@?#]*)(?:[:]([^/?#]*))?(/[^?#]*)?((?:[?](?:[^#]*))?)((?:#.*)?)$|', $res, $reg)) { + return false; + } + $scheme = $reg[1]; + $auth = $reg[2]; + $host = $reg[3]; + $port = $reg[4]; + $path = $reg[5]; + $query = $reg[6]; + $fragment = $reg[7]; /* strip it */ /* ZF-4358 Fragment retained under OpenID 2.0 */ + + if (empty($scheme) || empty($host)) { + return false; + } + + // RFC 3986, 6.2.2.1. Case Normalization + $scheme = strtolower($scheme); + $host = strtolower($host); + + // RFC 3986, 6.2.2.3. Path Segment Normalization + if (!empty($path)) { + $i = 0; + $n = strlen($path); + $res = ""; + while ($i < $n) { + if ($path[$i] == '/') { + ++$i; + while ($i < $n && $path[$i] == '/') { + ++$i; + } + if ($i < $n && $path[$i] == '.') { + ++$i; + if ($i < $n && $path[$i] == '.') { + ++$i; + if ($i == $n || $path[$i] == '/') { + if (($pos = strrpos($res, '/')) !== false) { + $res = substr($res, 0, $pos); + } + } else { + $res .= '/..'; + } + } else if ($i != $n && $path[$i] != '/') { + $res .= '/.'; + } + } else { + $res .= '/'; + } + } else { + $res .= $path[$i++]; + } + } + $path = $res; + } + + // RFC 3986,6.2.3. Scheme-Based Normalization + if ($scheme == 'http') { + if ($port == 80) { + $port = ''; + } + } else if ($scheme == 'https') { + if ($port == 443) { + $port = ''; + } + } + if (empty($path)) { + $path = '/'; + } + + $id = $scheme + . '://' + . $auth + . $host + . (empty($port) ? '' : (':' . $port)) + . $path + . $query + . $fragment; + return true; + } + + /** + * Normalizes OpenID identifier that can be URL or XRI name. + * Returns true on success and false of failure. + * + * Normalization is performed according to the following rules: + * 1. If the user's input starts with one of the "xri://", "xri://$ip*", + * or "xri://$dns*" prefixes, they MUST be stripped off, so that XRIs + * are used in the canonical form, and URI-authority XRIs are further + * considered URL identifiers. + * 2. If the first character of the resulting string is an XRI Global + * Context Symbol ("=", "@", "+", "$", "!"), then the input SHOULD be + * treated as an XRI. + * 3. Otherwise, the input SHOULD be treated as an http URL; if it does + * not include a "http" or "https" scheme, the Identifier MUST be + * prefixed with the string "http://". + * 4. URL identifiers MUST then be further normalized by both following + * redirects when retrieving their content and finally applying the + * rules in Section 6 of [RFC3986] to the final destination URL. + * @param string &$id identifier to be normalized + * @return bool + */ + static public function normalize(&$id) + { + $id = trim($id); + if (strlen($id) === 0) { + return true; + } + + // 7.2.1 + if (strpos($id, 'xri://$ip*') === 0) { + $id = substr($id, strlen('xri://$ip*')); + } else if (strpos($id, 'xri://$dns*') === 0) { + $id = substr($id, strlen('xri://$dns*')); + } else if (strpos($id, 'xri://') === 0) { + $id = substr($id, strlen('xri://')); + } + + // 7.2.2 + if ($id[0] == '=' || + $id[0] == '@' || + $id[0] == '+' || + $id[0] == '$' || + $id[0] == '!') { + return true; + } + + // 7.2.3 + if (strpos($id, "://") === false) { + $id = 'http://' . $id; + } + + // 7.2.4 + return self::normalizeURL($id); + } + + /** + * Performs a HTTP redirection to specified URL with additional data. + * It may generate redirected request using GET or POST HTTP method. + * The function never returns. + * + * @param string $url URL to redirect to + * @param array $params additional variable/value pairs to send + * @param Zend_Controller_Response_Abstract $response + * @param string $method redirection method ('GET' or 'POST') + */ + static public function redirect($url, $params = null, + Zend_Controller_Response_Abstract $response = null, $method = 'GET') + { + $url = Zend_OpenId::absoluteUrl($url); + $body = ""; + if (null === $response) { + require_once "Zend/Controller/Response/Http.php"; + $response = new Zend_Controller_Response_Http(); + } + + if ($method == 'POST') { + $body = "\n"; + $body .= "
    \n"; + if (is_array($params) && count($params) > 0) { + foreach($params as $key => $value) { + $body .= '\n"; + } + } + $body .= "\n"; + $body .= "
    \n"; + } else if (is_array($params) && count($params) > 0) { + if (strpos($url, '?') === false) { + $url .= '?' . self::paramsToQuery($params); + } else { + $url .= '&' . self::paramsToQuery($params); + } + } + if (!empty($body)) { + $response->setBody($body); + } else if (!$response->canSendHeaders()) { + $response->setBody(""); + } else { + $response->setRedirect($url); + } + $response->sendResponse(); + if (self::$exitOnRedirect) { + exit(); + } + } + + /** + * Produces string of random byte of given length. + * + * @param integer $len length of requested string + * @return string RAW random binary string + */ + static public function randomBytes($len) + { + return (string) Zend_Crypt_Math::randBytes($len); + } + + /** + * Generates a hash value (message digest) according to given algorithm. + * It returns RAW binary string. + * + * This is a wrapper function that uses one of available internal function + * dependent on given PHP configuration. It may use various functions from + * ext/openssl, ext/hash, ext/mhash or ext/standard. + * + * @param string $func digest algorithm + * @param string $data data to sign + * @return string RAW digital signature + * @throws Zend_OpenId_Exception + */ + static public function digest($func, $data) + { + if (function_exists('openssl_digest')) { + return openssl_digest($data, $func, true); + } else if (function_exists('hash')) { + return hash($func, $data, true); + } else if ($func === 'sha1') { + return sha1($data, true); + } else if ($func === 'sha256') { + if (function_exists('mhash')) { + return mhash(MHASH_SHA256 , $data); + } + } + require_once "Zend/OpenId/Exception.php"; + throw new Zend_OpenId_Exception( + 'Unsupported digest algorithm "' . $func . '".', + Zend_OpenId_Exception::UNSUPPORTED_DIGEST); + } + + /** + * Generates a keyed hash value using the HMAC method. It uses ext/hash + * if available or user-level PHP implementation, that is not significantly + * slower. + * + * @param string $macFunc name of selected hashing algorithm (sha1, sha256) + * @param string $data data to sign + * @param string $secret shared secret key used for generating the HMAC + * variant of the message digest + * @return string RAW HMAC value + */ + static public function hashHmac($macFunc, $data, $secret) + { +// require_once "Zend/Crypt/Hmac.php"; +// return Zend_Crypt_Hmac::compute($secret, $macFunc, $data, Zend_Crypt_Hmac::BINARY); + if (function_exists('hash_hmac')) { + return hash_hmac($macFunc, $data, $secret, true); + } else { + if (Zend_OpenId::strlen($secret) > 64) { + $secret = self::digest($macFunc, $secret); + } + $secret = str_pad($secret, 64, chr(0x00)); + $ipad = str_repeat(chr(0x36), 64); + $opad = str_repeat(chr(0x5c), 64); + $hash1 = self::digest($macFunc, ($secret ^ $ipad) . $data); + return self::digest($macFunc, ($secret ^ $opad) . $hash1); + } + } + + /** + * Converts binary representation into ext/gmp or ext/bcmath big integer + * representation. + * + * @param string $bin binary representation of big number + * @return mixed + * @throws Zend_OpenId_Exception + */ + static protected function binToBigNum($bin) + { + if (extension_loaded('gmp')) { + return gmp_init(bin2hex($bin), 16); + } else if (extension_loaded('bcmath')) { + $bn = 0; + $len = Zend_OpenId::strlen($bin); + for ($i = 0; $i < $len; $i++) { + $bn = bcmul($bn, 256); + $bn = bcadd($bn, ord($bin[$i])); + } + return $bn; + } + require_once "Zend/OpenId/Exception.php"; + throw new Zend_OpenId_Exception( + 'The system doesn\'t have proper big integer extension', + Zend_OpenId_Exception::UNSUPPORTED_LONG_MATH); + } + + /** + * Converts internal ext/gmp or ext/bcmath big integer representation into + * binary string. + * + * @param mixed $bn big number + * @return string + * @throws Zend_OpenId_Exception + */ + static protected function bigNumToBin($bn) + { + if (extension_loaded('gmp')) { + $s = gmp_strval($bn, 16); + if (strlen($s) % 2 != 0) { + $s = '0' . $s; + } else if ($s[0] > '7') { + $s = '00' . $s; + } + return pack("H*", $s); + } else if (extension_loaded('bcmath')) { + $cmp = bccomp($bn, 0); + if ($cmp == 0) { + return "\0"; + } else if ($cmp < 0) { + require_once "Zend/OpenId/Exception.php"; + throw new Zend_OpenId_Exception( + 'Big integer arithmetic error', + Zend_OpenId_Exception::ERROR_LONG_MATH); + } + $bin = ""; + while (bccomp($bn, 0) > 0) { + $bin = chr(bcmod($bn, 256)) . $bin; + $bn = bcdiv($bn, 256); + } + if (ord($bin[0]) > 127) { + $bin = "\0" . $bin; + } + return $bin; + } + require_once "Zend/OpenId/Exception.php"; + throw new Zend_OpenId_Exception( + 'The system doesn\'t have proper big integer extension', + Zend_OpenId_Exception::UNSUPPORTED_LONG_MATH); + } + + /** + * Performs the first step of a Diffie-Hellman key exchange by generating + * private and public DH values based on given prime number $p and + * generator $g. Both sides of key exchange MUST have the same prime number + * and generator. In this case they will able to create a random shared + * secret that is never send from one to the other. + * + * @param string $p prime number in binary representation + * @param string $g generator in binary representation + * @param string $priv_key private key in binary representation + * @return mixed + */ + static public function createDhKey($p, $g, $priv_key = null) + { + if (function_exists('openssl_dh_compute_key')) { + $dh_details = array( + 'p' => $p, + 'g' => $g + ); + if ($priv_key !== null) { + $dh_details['priv_key'] = $priv_key; + } + return openssl_pkey_new(array('dh'=>$dh_details)); + } else { + $bn_p = self::binToBigNum($p); + $bn_g = self::binToBigNum($g); + if ($priv_key === null) { + $priv_key = self::randomBytes(Zend_OpenId::strlen($p)); + } + $bn_priv_key = self::binToBigNum($priv_key); + if (extension_loaded('gmp')) { + $bn_pub_key = gmp_powm($bn_g, $bn_priv_key, $bn_p); + } else if (extension_loaded('bcmath')) { + $bn_pub_key = bcpowmod($bn_g, $bn_priv_key, $bn_p); + } + $pub_key = self::bigNumToBin($bn_pub_key); + + return array( + 'p' => $bn_p, + 'g' => $bn_g, + 'priv_key' => $bn_priv_key, + 'pub_key' => $bn_pub_key, + 'details' => array( + 'p' => $p, + 'g' => $g, + 'priv_key' => $priv_key, + 'pub_key' => $pub_key)); + } + } + + /** + * Returns an associative array with Diffie-Hellman key components in + * binary representation. The array includes original prime number 'p' and + * generator 'g', random private key 'priv_key' and corresponding public + * key 'pub_key'. + * + * @param mixed $dh Diffie-Hellman key + * @return array + */ + static public function getDhKeyDetails($dh) + { + if (function_exists('openssl_dh_compute_key')) { + $details = openssl_pkey_get_details($dh); + if (isset($details['dh'])) { + return $details['dh']; + } + } else { + return $dh['details']; + } + } + + /** + * Computes the shared secret from the private DH value $dh and the other + * party's public value in $pub_key + * + * @param string $pub_key other party's public value + * @param mixed $dh Diffie-Hellman key + * @return string + * @throws Zend_OpenId_Exception + */ + static public function computeDhSecret($pub_key, $dh) + { + if (function_exists('openssl_dh_compute_key')) { + $ret = openssl_dh_compute_key($pub_key, $dh); + if (ord($ret[0]) > 127) { + $ret = "\0" . $ret; + } + return $ret; + } else if (extension_loaded('gmp')) { + $bn_pub_key = self::binToBigNum($pub_key); + $bn_secret = gmp_powm($bn_pub_key, $dh['priv_key'], $dh['p']); + return self::bigNumToBin($bn_secret); + } else if (extension_loaded('bcmath')) { + $bn_pub_key = self::binToBigNum($pub_key); + $bn_secret = bcpowmod($bn_pub_key, $dh['priv_key'], $dh['p']); + return self::bigNumToBin($bn_secret); + } + require_once "Zend/OpenId/Exception.php"; + throw new Zend_OpenId_Exception( + 'The system doesn\'t have proper big integer extension', + Zend_OpenId_Exception::UNSUPPORTED_LONG_MATH); + } + + /** + * Takes an arbitrary precision integer and returns its shortest big-endian + * two's complement representation. + * + * Arbitrary precision integers MUST be encoded as big-endian signed two's + * complement binary strings. Henceforth, "btwoc" is a function that takes + * an arbitrary precision integer and returns its shortest big-endian two's + * complement representation. All integers that are used with + * Diffie-Hellman Key Exchange are positive. This means that the left-most + * bit of the two's complement representation MUST be zero. If it is not, + * implementations MUST add a zero byte at the front of the string. + * + * @param string $str binary representation of arbitrary precision integer + * @return string big-endian signed representation + */ + static public function btwoc($str) + { + if (ord($str[0]) > 127) { + return "\0" . $str; + } + return $str; + } + + /** + * Returns lenght of binary string in bytes + * + * @param string $str + * @return int the string lenght + */ + static public function strlen($str) + { + if (extension_loaded('mbstring') && + (((int)ini_get('mbstring.func_overload')) & 2)) { + return mb_strlen($str, 'latin1'); + } else { + return strlen($str); + } + } + +} diff --git a/library/Zend/OpenId/Consumer.php b/library/Zend/OpenId/Consumer.php new file mode 100755 index 000000000..f9d11f56c --- /dev/null +++ b/library/Zend/OpenId/Consumer.php @@ -0,0 +1,999 @@ +_storage = new Zend_OpenId_Consumer_Storage_File(); + } else { + $this->_storage = $storage; + } + $this->_dumbMode = $dumbMode; + } + + /** + * Performs check (with possible user interaction) of OpenID identity. + * + * This is the first step of OpenID authentication process. + * On success the function does not return (it does HTTP redirection to + * server and exits). On failure it returns false. + * + * @param string $id OpenID identity + * @param string $returnTo URL to redirect response from server to + * @param string $root HTTP URL to identify consumer on server + * @param mixed $extensions extension object or array of extensions objects + * @param Zend_Controller_Response_Abstract $response an optional response + * object to perform HTTP or HTML form redirection + * @return bool + */ + public function login($id, $returnTo = null, $root = null, $extensions = null, + Zend_Controller_Response_Abstract $response = null) + { + return $this->_checkId( + false, + $id, + $returnTo, + $root, + $extensions, + $response); + } + + /** + * Performs immediate check (without user interaction) of OpenID identity. + * + * This is the first step of OpenID authentication process. + * On success the function does not return (it does HTTP redirection to + * server and exits). On failure it returns false. + * + * @param string $id OpenID identity + * @param string $returnTo HTTP URL to redirect response from server to + * @param string $root HTTP URL to identify consumer on server + * @param mixed $extensions extension object or array of extensions objects + * @param Zend_Controller_Response_Abstract $response an optional response + * object to perform HTTP or HTML form redirection + * @return bool + */ + public function check($id, $returnTo=null, $root=null, $extensions = null, + Zend_Controller_Response_Abstract $response = null) + + { + return $this->_checkId( + true, + $id, + $returnTo, + $root, + $extensions, + $response); + } + + /** + * Verifies authentication response from OpenID server. + * + * This is the second step of OpenID authentication process. + * The function returns true on successful authentication and false on + * failure. + * + * @param array $params HTTP query data from OpenID server + * @param string &$identity this argument is set to end-user's claimed + * identifier or OpenID provider local identifier. + * @param mixed $extensions extension object or array of extensions objects + * @return bool + */ + public function verify($params, &$identity = "", $extensions = null) + { + $this->_setError(''); + + $version = 1.1; + if (isset($params['openid_ns']) && + $params['openid_ns'] == Zend_OpenId::NS_2_0) { + $version = 2.0; + } + + if (isset($params["openid_claimed_id"])) { + $identity = $params["openid_claimed_id"]; + } else if (isset($params["openid_identity"])){ + $identity = $params["openid_identity"]; + } else { + $identity = ""; + } + + if ($version < 2.0 && !isset($params["openid_claimed_id"])) { + if ($this->_session !== null) { + if ($this->_session->identity === $identity) { + $identity = $this->_session->claimed_id; + } + } else if (defined('SID')) { + if (isset($_SESSION["zend_openid"]["identity"]) && + isset($_SESSION["zend_openid"]["claimed_id"]) && + $_SESSION["zend_openid"]["identity"] === $identity) { + $identity = $_SESSION["zend_openid"]["claimed_id"]; + } + } else { + require_once "Zend/Session/Namespace.php"; + $this->_session = new Zend_Session_Namespace("zend_openid"); + if ($this->_session->identity === $identity) { + $identity = $this->_session->claimed_id; + } + } + } + + if (empty($params['openid_mode'])) { + $this->_setError("Missing openid.mode"); + return false; + } + if (empty($params['openid_return_to'])) { + $this->_setError("Missing openid.return_to"); + return false; + } + if (empty($params['openid_signed'])) { + $this->_setError("Missing openid.signed"); + return false; + } + if (empty($params['openid_sig'])) { + $this->_setError("Missing openid.sig"); + return false; + } + if ($params['openid_mode'] != 'id_res') { + $this->_setError("Wrong openid.mode '".$params['openid_mode']."' != 'id_res'"); + return false; + } + if (empty($params['openid_assoc_handle'])) { + $this->_setError("Missing openid.assoc_handle"); + return false; + } + if ($params['openid_return_to'] != Zend_OpenId::selfUrl()) { + /* Ignore query part in openid.return_to */ + $pos = strpos($params['openid_return_to'], '?'); + if ($pos === false || + SUBSTR($params['openid_return_to'], 0 , $pos) != Zend_OpenId::selfUrl()) { + + $this->_setError("Wrong openid.return_to '". + $params['openid_return_to']."' != '" . Zend_OpenId::selfUrl() ."'"); + return false; + } + } + if ($version >= 2.0) { + if (empty($params['openid_response_nonce'])) { + $this->_setError("Missing openid.response_nonce"); + return false; + } + if (empty($params['openid_op_endpoint'])) { + $this->_setError("Missing openid.op_endpoint"); + return false; + /* OpenID 2.0 (11.3) Checking the Nonce */ + } else if (!$this->_storage->isUniqueNonce($params['openid_op_endpoint'], $params['openid_response_nonce'])) { + $this->_setError("Duplicate openid.response_nonce"); + return false; + } + } + + if (!empty($params['openid_invalidate_handle'])) { + if ($this->_storage->getAssociationByHandle( + $params['openid_invalidate_handle'], + $url, + $macFunc, + $secret, + $expires)) { + $this->_storage->delAssociation($url); + } + } + + if ($this->_storage->getAssociationByHandle( + $params['openid_assoc_handle'], + $url, + $macFunc, + $secret, + $expires)) { + // Security fix - check the association bewteen op_endpoint and assoc_handle + if (isset($params['openid_op_endpoint']) && $url !== $params['openid_op_endpoint']) { + $this->_setError("The op_endpoint URI is not the same of URI associated with the assoc_handle"); + return false; + } + $signed = explode(',', $params['openid_signed']); + // Check the parameters for the signature + // @see https://openid.net/specs/openid-authentication-2_0.html#positive_assertions + $toCheck = $this->_signParams; + if (isset($params['openid_claimed_id']) && isset($params['openid_identity'])) { + $toCheck = array_merge($toCheck, array('claimed_id', 'identity')); + } + foreach ($toCheck as $param) { + if (!in_array($param, $signed, true)) { + $this->_setError("The required parameter $param is missing in the signed"); + return false; + } + } + + $data = ''; + foreach ($signed as $key) { + $data .= $key . ':' . $params['openid_' . strtr($key,'.','_')] . "\n"; + } + if (base64_decode($params['openid_sig']) == + Zend_OpenId::hashHmac($macFunc, $data, $secret)) { + if (!Zend_OpenId_Extension::forAll($extensions, 'parseResponse', $params)) { + $this->_setError("Extension::parseResponse failure"); + return false; + } + /* OpenID 2.0 (11.2) Verifying Discovered Information */ + if (isset($params['openid_claimed_id'])) { + $id = $params['openid_claimed_id']; + if (!Zend_OpenId::normalize($id)) { + $this->_setError("Normalization failed"); + return false; + } else if (!$this->_discovery($id, $discovered_server, $discovered_version)) { + $this->_setError("Discovery failed: " . $this->getError()); + return false; + } else if ((!empty($params['openid_identity']) && + $params["openid_identity"] != $id) || + (!empty($params['openid_op_endpoint']) && + $params['openid_op_endpoint'] != $discovered_server) || + $discovered_version != $version) { + $this->_setError("Discovery information verification failed"); + return false; + } + } + return true; + } + $this->_storage->delAssociation($url); + $this->_setError("Signature check failed"); + return false; + } + else + { + /* Use dumb mode */ + if (isset($params['openid_claimed_id'])) { + $id = $params['openid_claimed_id']; + } else if (isset($params['openid_identity'])) { + $id = $params['openid_identity']; + } else { + $this->_setError("Missing openid.claimed_id and openid.identity"); + return false; + } + + if (!Zend_OpenId::normalize($id)) { + $this->_setError("Normalization failed"); + return false; + } else if (!$this->_discovery($id, $server, $discovered_version)) { + $this->_setError("Discovery failed: " . $this->getError()); + return false; + } + + /* OpenID 2.0 (11.2) Verifying Discovered Information */ + if ((isset($params['openid_identity']) && + $params["openid_identity"] != $id) || + (isset($params['openid_op_endpoint']) && + $params['openid_op_endpoint'] != $server) || + $discovered_version != $version) { + $this->_setError("Discovery information verification failed"); + return false; + } + + $params2 = array(); + foreach ($params as $key => $val) { + if (strpos($key, 'openid_ns_') === 0) { + $key = 'openid.ns.' . substr($key, strlen('openid_ns_')); + } else if (strpos($key, 'openid_sreg_') === 0) { + $key = 'openid.sreg.' . substr($key, strlen('openid_sreg_')); + } else if (strpos($key, 'openid_') === 0) { + $key = 'openid.' . substr($key, strlen('openid_')); + } + $params2[$key] = $val; + } + $params2['openid.mode'] = 'check_authentication'; + $ret = $this->_httpRequest($server, 'POST', $params2, $status); + if ($status != 200) { + $this->_setError("'Dumb' signature verification HTTP request failed"); + return false; + } + $r = array(); + if (is_string($ret)) { + foreach(explode("\n", $ret) as $line) { + $line = trim($line); + if (!empty($line)) { + $x = explode(':', $line, 2); + if (is_array($x) && count($x) == 2) { + list($key, $value) = $x; + $r[trim($key)] = trim($value); + } + } + } + } + $ret = $r; + if (!empty($ret['invalidate_handle'])) { + if ($this->_storage->getAssociationByHandle( + $ret['invalidate_handle'], + $url, + $macFunc, + $secret, + $expires)) { + $this->_storage->delAssociation($url); + } + } + if (isset($ret['is_valid']) && $ret['is_valid'] == 'true') { + if (!Zend_OpenId_Extension::forAll($extensions, 'parseResponse', $params)) { + $this->_setError("Extension::parseResponse failure"); + return false; + } + return true; + } + $this->_setError("'Dumb' signature verification failed"); + return false; + } + } + + /** + * Store assiciation in internal chace and external storage + * + * @param string $url OpenID server url + * @param string $handle association handle + * @param string $macFunc HMAC function (sha1 or sha256) + * @param string $secret shared secret + * @param integer $expires expiration UNIX time + * @return void + */ + protected function _addAssociation($url, $handle, $macFunc, $secret, $expires) + { + $this->_cache[$url] = array($handle, $macFunc, $secret, $expires); + return $this->_storage->addAssociation( + $url, + $handle, + $macFunc, + $secret, + $expires); + } + + /** + * Retrive assiciation information for given $url from internal cahce or + * external storage + * + * @param string $url OpenID server url + * @param string &$handle association handle + * @param string &$macFunc HMAC function (sha1 or sha256) + * @param string &$secret shared secret + * @param integer &$expires expiration UNIX time + * @return void + */ + protected function _getAssociation($url, &$handle, &$macFunc, &$secret, &$expires) + { + if (isset($this->_cache[$url])) { + $handle = $this->_cache[$url][0]; + $macFunc = $this->_cache[$url][1]; + $secret = $this->_cache[$url][2]; + $expires = $this->_cache[$url][3]; + return true; + } + if ($this->_storage->getAssociation( + $url, + $handle, + $macFunc, + $secret, + $expires)) { + $this->_cache[$url] = array($handle, $macFunc, $secret, $expires); + return true; + } + return false; + } + + /** + * Performs HTTP request to given $url using given HTTP $method. + * Send additinal query specified by variable/value array, + * On success returns HTTP response without headers, false on failure. + * + * @param string $url OpenID server url + * @param string $method HTTP request method 'GET' or 'POST' + * @param array $params additional qwery parameters to be passed with + * @param int &$staus HTTP status code + * request + * @return mixed + */ + protected function _httpRequest($url, $method = 'GET', array $params = array(), &$status = null) + { + $client = $this->_httpClient; + if ($client === null) { + $client = new Zend_Http_Client( + $url, + array( + 'maxredirects' => 4, + 'timeout' => 15, + 'useragent' => 'Zend_OpenId' + ) + ); + } else { + $client->setUri($url); + } + + $client->resetParameters(); + if ($method == 'POST') { + $client->setMethod(Zend_Http_Client::POST); + $client->setParameterPost($params); + } else { + $client->setMethod(Zend_Http_Client::GET); + $client->setParameterGet($params); + } + + try { + $response = $client->request(); + } catch (Exception $e) { + $this->_setError('HTTP Request failed: ' . $e->getMessage()); + return false; + } + $status = $response->getStatus(); + $body = $response->getBody(); + if ($status == 200 || ($status == 400 && !empty($body))) { + return $body; + }else{ + $this->_setError('Bad HTTP response'); + return false; + } + } + + /** + * Create (or reuse existing) association between OpenID consumer and + * OpenID server based on Diffie-Hellman key agreement. Returns true + * on success and false on failure. + * + * @param string $url OpenID server url + * @param float $version OpenID protocol version + * @param string $priv_key for testing only + * @return bool + */ + protected function _associate($url, $version, $priv_key=null) + { + + /* Check if we already have association in chace or storage */ + if ($this->_getAssociation( + $url, + $handle, + $macFunc, + $secret, + $expires)) { + return true; + } + + if ($this->_dumbMode) { + /* Use dumb mode */ + return true; + } + + $params = array(); + + if ($version >= 2.0) { + $params = array( + 'openid.ns' => Zend_OpenId::NS_2_0, + 'openid.mode' => 'associate', + 'openid.assoc_type' => 'HMAC-SHA256', + 'openid.session_type' => 'DH-SHA256', + ); + } else { + $params = array( + 'openid.mode' => 'associate', + 'openid.assoc_type' => 'HMAC-SHA1', + 'openid.session_type' => 'DH-SHA1', + ); + } + + $dh = Zend_OpenId::createDhKey(pack('H*', Zend_OpenId::DH_P), + pack('H*', Zend_OpenId::DH_G), + $priv_key); + $dh_details = Zend_OpenId::getDhKeyDetails($dh); + + $params['openid.dh_modulus'] = base64_encode( + Zend_OpenId::btwoc($dh_details['p'])); + $params['openid.dh_gen'] = base64_encode( + Zend_OpenId::btwoc($dh_details['g'])); + $params['openid.dh_consumer_public'] = base64_encode( + Zend_OpenId::btwoc($dh_details['pub_key'])); + + while(1) { + $ret = $this->_httpRequest($url, 'POST', $params, $status); + if ($ret === false) { + $this->_setError("HTTP request failed"); + return false; + } + + $r = array(); + $bad_response = false; + foreach(explode("\n", $ret) as $line) { + $line = trim($line); + if (!empty($line)) { + $x = explode(':', $line, 2); + if (is_array($x) && count($x) == 2) { + list($key, $value) = $x; + $r[trim($key)] = trim($value); + } else { + $bad_response = true; + } + } + } + if ($bad_response && strpos($ret, 'Unknown session type') !== false) { + $r['error_code'] = 'unsupported-type'; + } + $ret = $r; + + if (isset($ret['error_code']) && + $ret['error_code'] == 'unsupported-type') { + if ($params['openid.session_type'] == 'DH-SHA256') { + $params['openid.session_type'] = 'DH-SHA1'; + $params['openid.assoc_type'] = 'HMAC-SHA1'; + } else if ($params['openid.session_type'] == 'DH-SHA1') { + $params['openid.session_type'] = 'no-encryption'; + } else { + $this->_setError("The OpenID service responded with: " . $ret['error_code']); + return false; + } + } else { + break; + } + } + + if ($status != 200) { + $this->_setError("The server responded with status code: " . $status); + return false; + } + + if ($version >= 2.0 && + isset($ret['ns']) && + $ret['ns'] != Zend_OpenId::NS_2_0) { + $this->_setError("Wrong namespace definition in the server response"); + return false; + } + + if (!isset($ret['assoc_handle']) || + !isset($ret['expires_in']) || + !isset($ret['assoc_type']) || + $params['openid.assoc_type'] != $ret['assoc_type']) { + if ($params['openid.assoc_type'] != $ret['assoc_type']) { + $this->_setError("The returned assoc_type differed from the supplied openid.assoc_type"); + } else { + $this->_setError("Missing required data from provider (assoc_handle, expires_in, assoc_type are required)"); + } + return false; + } + + $handle = $ret['assoc_handle']; + $expiresIn = $ret['expires_in']; + + if ($ret['assoc_type'] == 'HMAC-SHA1') { + $macFunc = 'sha1'; + } else if ($ret['assoc_type'] == 'HMAC-SHA256' && + $version >= 2.0) { + $macFunc = 'sha256'; + } else { + $this->_setError("Unsupported assoc_type"); + return false; + } + + if ((empty($ret['session_type']) || + ($version >= 2.0 && $ret['session_type'] == 'no-encryption')) && + isset($ret['mac_key'])) { + $secret = base64_decode($ret['mac_key']); + } else if (isset($ret['session_type']) && + $ret['session_type'] == 'DH-SHA1' && + !empty($ret['dh_server_public']) && + !empty($ret['enc_mac_key'])) { + $dhFunc = 'sha1'; + } else if (isset($ret['session_type']) && + $ret['session_type'] == 'DH-SHA256' && + $version >= 2.0 && + !empty($ret['dh_server_public']) && + !empty($ret['enc_mac_key'])) { + $dhFunc = 'sha256'; + } else { + $this->_setError("Unsupported session_type"); + return false; + } + if (isset($dhFunc)) { + $serverPub = base64_decode($ret['dh_server_public']); + $dhSec = Zend_OpenId::computeDhSecret($serverPub, $dh); + if ($dhSec === false) { + $this->_setError("DH secret comutation failed"); + return false; + } + $sec = Zend_OpenId::digest($dhFunc, $dhSec); + if ($sec === false) { + $this->_setError("Could not create digest"); + return false; + } + $secret = $sec ^ base64_decode($ret['enc_mac_key']); + } + if ($macFunc == 'sha1') { + if (Zend_OpenId::strlen($secret) != 20) { + $this->_setError("The length of the sha1 secret must be 20"); + return false; + } + } else if ($macFunc == 'sha256') { + if (Zend_OpenId::strlen($secret) != 32) { + $this->_setError("The length of the sha256 secret must be 32"); + return false; + } + } + $this->_addAssociation( + $url, + $handle, + $macFunc, + $secret, + time() + $expiresIn); + return true; + } + + /** + * Performs discovery of identity and finds OpenID URL, OpenID server URL + * and OpenID protocol version. Returns true on succees and false on + * failure. + * + * @param string &$id OpenID identity URL + * @param string &$server OpenID server URL + * @param float &$version OpenID protocol version + * @return bool + * @todo OpenID 2.0 (7.3) XRI and Yadis discovery + */ + protected function _discovery(&$id, &$server, &$version) + { + $realId = $id; + if ($this->_storage->getDiscoveryInfo( + $id, + $realId, + $server, + $version, + $expire)) { + $id = $realId; + return true; + } + + $response = $this->_httpRequest($id, 'GET', array(), $status); + if ($status != 200 || !is_string($response)) { + return false; + } + + /* OpenID 2.0 (7.3) XRI and Yadis discovery */ + if (preg_match( + '/]*http-equiv=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?X-XRDS-Location[ \t]*[^"\']*\\1[^>]*content=(["\'])([^"\']+)\\2[^>]*\/?>/i', + $response, + $r)) { + $XRDS = $r[3]; + $version = 2.0; + $response = $this->_httpRequest($XRDS); + if (preg_match( + '/([^\t]*)<\/URI>/i', + $response, + $x)) { + $server = $x[1]; + // $realId + $realId = 'http://specs.openid.net/auth/2.0/identifier_select'; + } + else { + $this->_setError("Unable to get URI for XRDS discovery"); + } + } + + /* HTML-based discovery */ + else if (preg_match( + '/]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.provider[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i', + $response, + $r)) { + $version = 2.0; + $server = $r[3]; + } else if (preg_match( + '/]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.provider[ \t]*[^"\']*\\3[^>]*\/?>/i', + $response, + $r)) { + $version = 2.0; + $server = $r[2]; + } else if (preg_match( + '/]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.server[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i', + $response, + $r)) { + $version = 1.1; + $server = $r[3]; + } else if (preg_match( + '/]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.server[ \t]*[^"\']*\\3[^>]*\/?>/i', + $response, + $r)) { + $version = 1.1; + $server = $r[2]; + } else { + return false; + } + if ($version >= 2.0) { + if (preg_match( + '/]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.local_id[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i', + $response, + $r)) { + $realId = $r[3]; + } else if (preg_match( + '/]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid2.local_id[ \t]*[^"\']*\\3[^>]*\/?>/i', + $response, + $r)) { + $realId = $r[2]; + } + } else { + if (preg_match( + '/]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.delegate[ \t]*[^"\']*\\1[^>]*href=(["\'])([^"\']+)\\2[^>]*\/?>/i', + $response, + $r)) { + $realId = $r[3]; + } else if (preg_match( + '/]*href=(["\'])([^"\']+)\\1[^>]*rel=(["\'])[ \t]*(?:[^ \t"\']+[ \t]+)*?openid.delegate[ \t]*[^"\']*\\3[^>]*\/?>/i', + $response, + $r)) { + $realId = $r[2]; + } + } + + $expire = time() + 60 * 60; + $this->_storage->addDiscoveryInfo($id, $realId, $server, $version, $expire); + $id = $realId; + return true; + } + + /** + * Performs check of OpenID identity. + * + * This is the first step of OpenID authentication process. + * On success the function does not return (it does HTTP redirection to + * server and exits). On failure it returns false. + * + * @param bool $immediate enables or disables interaction with user + * @param string $id OpenID identity + * @param string $returnTo HTTP URL to redirect response from server to + * @param string $root HTTP URL to identify consumer on server + * @param mixed $extensions extension object or array of extensions objects + * @param Zend_Controller_Response_Abstract $response an optional response + * object to perform HTTP or HTML form redirection + * @return bool + */ + protected function _checkId($immediate, $id, $returnTo=null, $root=null, + $extensions=null, Zend_Controller_Response_Abstract $response = null) + { + $this->_setError(''); + + if (!Zend_OpenId::normalize($id)) { + $this->_setError("Normalisation failed"); + return false; + } + $claimedId = $id; + + if (!$this->_discovery($id, $server, $version)) { + $this->_setError("Discovery failed: " . $this->getError()); + return false; + } + if (!$this->_associate($server, $version)) { + $this->_setError("Association failed: " . $this->getError()); + return false; + } + if (!$this->_getAssociation( + $server, + $handle, + $macFunc, + $secret, + $expires)) { + /* Use dumb mode */ + unset($handle); + unset($macFunc); + unset($secret); + unset($expires); + } + + $params = array(); + if ($version >= 2.0) { + $params['openid.ns'] = Zend_OpenId::NS_2_0; + } + + $params['openid.mode'] = $immediate ? + 'checkid_immediate' : 'checkid_setup'; + + $params['openid.identity'] = $id; + + $params['openid.claimed_id'] = $claimedId; + + if ($version <= 2.0) { + if ($this->_session !== null) { + $this->_session->identity = $id; + $this->_session->claimed_id = $claimedId; + } else if (defined('SID')) { + $_SESSION["zend_openid"] = array( + "identity" => $id, + "claimed_id" => $claimedId); + } else { + require_once "Zend/Session/Namespace.php"; + $this->_session = new Zend_Session_Namespace("zend_openid"); + $this->_session->identity = $id; + $this->_session->claimed_id = $claimedId; + } + } + + if (isset($handle)) { + $params['openid.assoc_handle'] = $handle; + } + + $params['openid.return_to'] = Zend_OpenId::absoluteUrl($returnTo); + + if (empty($root)) { + $root = Zend_OpenId::selfUrl(); + if ($root[strlen($root)-1] != '/') { + $root = dirname($root); + } + } + if ($version >= 2.0) { + $params['openid.realm'] = $root; + } else { + $params['openid.trust_root'] = $root; + } + + if (!Zend_OpenId_Extension::forAll($extensions, 'prepareRequest', $params)) { + $this->_setError("Extension::prepareRequest failure"); + return false; + } + + Zend_OpenId::redirect($server, $params, $response); + return true; + } + + /** + * Sets HTTP client object to make HTTP requests + * + * @param Zend_Http_Client $client HTTP client object to be used + */ + public function setHttpClient($client) { + $this->_httpClient = $client; + } + + /** + * Returns HTTP client object that will be used to make HTTP requests + * + * @return Zend_Http_Client + */ + public function getHttpClient() { + return $this->_httpClient; + } + + /** + * Sets session object to store climed_id + * + * @param Zend_Session_Namespace $session HTTP client object to be used + */ + public function setSession(Zend_Session_Namespace $session) { + $this->_session = $session; + } + + /** + * Returns session object that is used to store climed_id + * + * @return Zend_Session_Namespace + */ + public function getSession() { + return $this->_session; + } + + /** + * Saves error message + * + * @param string $message error message + */ + protected function _setError($message) + { + $this->_error = $message; + } + + /** + * Returns error message that explains failure of login, check or verify + * + * @return string + */ + public function getError() + { + return $this->_error; + } + +} diff --git a/library/Zend/OpenId/Consumer/Storage.php b/library/Zend/OpenId/Consumer/Storage.php new file mode 100755 index 000000000..89b0cd287 --- /dev/null +++ b/library/Zend/OpenId/Consumer/Storage.php @@ -0,0 +1,132 @@ +_dir = $dir; + if (!is_dir($this->_dir)) { + if (!@mkdir($this->_dir, 0700, 1)) { + /** + * @see Zend_OpenId_Exception + */ + require_once 'Zend/OpenId/Exception.php'; + throw new Zend_OpenId_Exception( + 'Cannot access storage directory ' . $dir, + Zend_OpenId_Exception::ERROR_STORAGE); + } + } + if (($f = fopen($this->_dir.'/assoc.lock', 'w+')) === null) { + /** + * @see Zend_OpenId_Exception + */ + require_once 'Zend/OpenId/Exception.php'; + throw new Zend_OpenId_Exception( + 'Cannot create a lock file in the directory ' . $dir, + Zend_OpenId_Exception::ERROR_STORAGE); + } + fclose($f); + if (($f = fopen($this->_dir.'/discovery.lock', 'w+')) === null) { + /** + * @see Zend_OpenId_Exception + */ + require_once 'Zend/OpenId/Exception.php'; + throw new Zend_OpenId_Exception( + 'Cannot create a lock file in the directory ' . $dir, + Zend_OpenId_Exception::ERROR_STORAGE); + } + fclose($f); + if (($f = fopen($this->_dir.'/nonce.lock', 'w+')) === null) { + /** + * @see Zend_OpenId_Exception + */ + require_once 'Zend/OpenId/Exception.php'; + throw new Zend_OpenId_Exception( + 'Cannot create a lock file in the directory ' . $dir, + Zend_OpenId_Exception::ERROR_STORAGE); + } + fclose($f); + } + + /** + * Stores information about association identified by $url/$handle + * + * @param string $url OpenID server URL + * @param string $handle assiciation handle + * @param string $macFunc HMAC function (sha1 or sha256) + * @param string $secret shared secret + * @param long $expires expiration UNIX time + * @return bool + */ + public function addAssociation($url, $handle, $macFunc, $secret, $expires) + { + $name1 = $this->_dir . '/assoc_url_' . md5($url); + $name2 = $this->_dir . '/assoc_handle_' . md5($handle); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name1, 'w+'); + if ($f === false) { + fclose($lock); + return false; + } + $data = serialize(array($url, $handle, $macFunc, $secret, $expires)); + fwrite($f, $data); + if (function_exists('symlink')) { + @unlink($name2); + if (symlink($name1, $name2)) { + fclose($f); + fclose($lock); + return true; + } + } + $f2 = @fopen($name2, 'w+'); + if ($f2) { + fwrite($f2, $data); + fclose($f2); + @unlink($name1); + $ret = true; + } else { + $ret = false; + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Gets information about association identified by $url + * Returns true if given association found and not expired and false + * otherwise + * + * @param string $url OpenID server URL + * @param string &$handle assiciation handle + * @param string &$macFunc HMAC function (sha1 or sha256) + * @param string &$secret shared secret + * @param long &$expires expiration UNIX time + * @return bool + */ + public function getAssociation($url, &$handle, &$macFunc, &$secret, &$expires) + { + $name1 = $this->_dir . '/assoc_url_' . md5($url); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name1, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedUrl, $handle, $macFunc, $secret, $expires) = unserialize($data); + if ($url === $storedUrl && $expires > time()) { + $ret = true; + } else { + $name2 = $this->_dir . '/assoc_handle_' . md5($handle); + fclose($f); + @unlink($name2); + @unlink($name1); + fclose($lock); + return false; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Gets information about association identified by $handle + * Returns true if given association found and not expired and false + * otherwise + * + * @param string $handle assiciation handle + * @param string &$url OpenID server URL + * @param string &$macFunc HMAC function (sha1 or sha256) + * @param string &$secret shared secret + * @param long &$expires expiration UNIX time + * @return bool + */ + public function getAssociationByHandle($handle, &$url, &$macFunc, &$secret, &$expires) + { + $name2 = $this->_dir . '/assoc_handle_' . md5($handle); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name2, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($url, $storedHandle, $macFunc, $secret, $expires) = unserialize($data); + if ($handle === $storedHandle && $expires > time()) { + $ret = true; + } else { + fclose($f); + @unlink($name2); + $name1 = $this->_dir . '/assoc_url_' . md5($url); + @unlink($name1); + fclose($lock); + return false; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Deletes association identified by $url + * + * @param string $url OpenID server URL + * @return bool + */ + public function delAssociation($url) + { + $name1 = $this->_dir . '/assoc_url_' . md5($url); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name1, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedUrl, $handle, $macFunc, $secret, $expires) = unserialize($data); + if ($url === $storedUrl) { + $name2 = $this->_dir . '/assoc_handle_' . md5($handle); + fclose($f); + @unlink($name2); + @unlink($name1); + fclose($lock); + return true; + } + } + fclose($f); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Stores information discovered from identity $id + * + * @param string $id identity + * @param string $realId discovered real identity URL + * @param string $server discovered OpenID server URL + * @param float $version discovered OpenID protocol version + * @param long $expires expiration UNIX time + * @return bool + */ + public function addDiscoveryInfo($id, $realId, $server, $version, $expires) + { + $name = $this->_dir . '/discovery_' . md5($id); + $lock = @fopen($this->_dir . '/discovery.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'w+'); + if ($f === false) { + fclose($lock); + return false; + } + $data = serialize(array($id, $realId, $server, $version, $expires)); + fwrite($f, $data); + fclose($f); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Gets information discovered from identity $id + * Returns true if such information exists and false otherwise + * + * @param string $id identity + * @param string &$realId discovered real identity URL + * @param string &$server discovered OpenID server URL + * @param float &$version discovered OpenID protocol version + * @param long &$expires expiration UNIX time + * @return bool + */ + public function getDiscoveryInfo($id, &$realId, &$server, &$version, &$expires) + { + $name = $this->_dir . '/discovery_' . md5($id); + $lock = @fopen($this->_dir . '/discovery.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedId, $realId, $server, $version, $expires) = unserialize($data); + if ($id === $storedId && $expires > time()) { + $ret = true; + } else { + fclose($f); + @unlink($name); + fclose($lock); + return false; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Removes cached information discovered from identity $id + * + * @param string $id identity + * @return bool + */ + public function delDiscoveryInfo($id) + { + $name = $this->_dir . '/discovery_' . md5($id); + $lock = @fopen($this->_dir . '/discovery.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + @unlink($name); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * The function checks the uniqueness of openid.response_nonce + * + * @param string $provider openid.openid_op_endpoint field from authentication response + * @param string $nonce openid.response_nonce field from authentication response + * @return bool + */ + public function isUniqueNonce($provider, $nonce) + { + $name = $this->_dir . '/nonce_' . md5($provider.';'.$nonce); + $lock = @fopen($this->_dir . '/nonce.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'x'); + if ($f === false) { + fclose($lock); + return false; + } + fwrite($f, $provider.';'.$nonce); + fclose($f); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Removes data from the uniqueness database that is older then given date + * + * @param mixed $date date of expired data + */ + public function purgeNonces($date=null) + { + $lock = @fopen($this->_dir . '/nonce.lock', 'w+'); + if ($lock !== false) { + flock($lock, LOCK_EX); + } + try { + if (!is_int($date) && !is_string($date)) { + $nonceFiles = glob($this->_dir . '/nonce_*'); + foreach ((array) $nonceFiles as $name) { + @unlink($name); + } + unset($nonceFiles); + } else { + if (is_string($date)) { + $time = time($date); + } else { + $time = $date; + } + $nonceFiles = glob($this->_dir . '/nonce_*'); + foreach ((array) $nonceFiles as $name) { + if (filemtime($name) < $time) { + @unlink($name); + } + } + unset($nonceFiles); + } + if ($lock !== false) { + fclose($lock); + } + } catch (Exception $e) { + if ($lock !== false) { + fclose($lock); + } + throw $e; + } + } +} diff --git a/library/Zend/OpenId/Exception.php b/library/Zend/OpenId/Exception.php new file mode 100755 index 000000000..8159b650d --- /dev/null +++ b/library/Zend/OpenId/Exception.php @@ -0,0 +1,58 @@ +$func($params)) { + return false; + } + } else { + return false; + } + } + } else if (!is_object($extensions) || + !($extensions instanceof Zend_OpenId_Extension) || + !$extensions->$func($params)) { + return false; + } + } + return true; + } + + /** + * Method to add additional data to OpenId 'checkid_immediate' or + * 'checkid_setup' request. This method addes nothing but inherited class + * may add additional data into request. + * + * @param array &$params request's var/val pairs + * @return bool + */ + public function prepareRequest(&$params) + { + return true; + } + + /** + * Method to parse OpenId 'checkid_immediate' or 'checkid_setup' request + * and initialize object with passed data. This method parses nothing but + * inherited class may override this method to do somthing. + * + * @param array $params request's var/val pairs + * @return bool + */ + public function parseRequest($params) + { + return true; + } + + /** + * Method to add additional data to OpenId 'id_res' response. This method + * addes nothing but inherited class may add additional data into response. + * + * @param array &$params response's var/val pairs + * @return bool + */ + public function prepareResponse(&$params) + { + return true; + } + + /** + * Method to parse OpenId 'id_res' response and initialize object with + * passed data. This method parses nothing but inherited class may override + * this method to do somthing. + * + * @param array $params response's var/val pairs + * @return bool + */ + public function parseResponse($params) + { + return true; + } + + /** + * Method to prepare data to store it in trusted servers database. + * + * @param array &$data data to be stored in tusted servers database + * @return bool + */ + public function getTrustData(&$data) + { + return true; + } + + /** + * Method to check if data from trusted servers database is enough to + * sutisfy request. + * + * @param array $data data from tusted servers database + * @return bool + */ + public function checkTrustData($data) + { + return true; + } +} diff --git a/library/Zend/OpenId/Extension/Sreg.php b/library/Zend/OpenId/Extension/Sreg.php new file mode 100755 index 000000000..2abfbca5e --- /dev/null +++ b/library/Zend/OpenId/Extension/Sreg.php @@ -0,0 +1,300 @@ +_props = $props; + $this->_policy_url = $policy_url; + $this->_version = $version; + } + + /** + * Returns associative array of SREG variables + * + * @return array + */ + public function getProperties() { + if (is_array($this->_props)) { + return $this->_props; + } else { + return array(); + } + } + + /** + * Returns SREG policy URL + * + * @return string + */ + public function getPolicyUrl() { + return $this->_policy_url; + } + + /** + * Returns SREG protocol version + * + * @return float + */ + public function getVersion() { + return $this->_version; + } + + /** + * Returns array of allowed SREG variable names. + * + * @return array + */ + public static function getSregProperties() + { + return array( + "nickname", + "email", + "fullname", + "dob", + "gender", + "postcode", + "country", + "language", + "timezone" + ); + } + + /** + * Adds additional SREG data to OpenId 'checkid_immediate' or + * 'checkid_setup' request. + * + * @param array &$params request's var/val pairs + * @return bool + */ + public function prepareRequest(&$params) + { + if (is_array($this->_props) && count($this->_props) > 0) { + foreach ($this->_props as $prop => $req) { + if ($req) { + if (isset($required)) { + $required .= ','.$prop; + } else { + $required = $prop; + } + } else { + if (isset($optional)) { + $optional .= ','.$prop; + } else { + $optional = $prop; + } + } + } + if ($this->_version >= 1.1) { + $params['openid.ns.sreg'] = Zend_OpenId_Extension_Sreg::NAMESPACE_1_1; + } + if (!empty($required)) { + $params['openid.sreg.required'] = $required; + } + if (!empty($optional)) { + $params['openid.sreg.optional'] = $optional; + } + if (!empty($this->_policy_url)) { + $params['openid.sreg.policy_url'] = $this->_policy_url; + } + } + return true; + } + + /** + * Parses OpenId 'checkid_immediate' or 'checkid_setup' request, + * extracts SREG variables and sets ovject properties to corresponding + * values. + * + * @param array $params request's var/val pairs + * @return bool + */ + public function parseRequest($params) + { + if (isset($params['openid_ns_sreg']) && + $params['openid_ns_sreg'] === Zend_OpenId_Extension_Sreg::NAMESPACE_1_1) { + $this->_version= 1.1; + } else { + $this->_version= 1.0; + } + if (!empty($params['openid_sreg_policy_url'])) { + $this->_policy_url = $params['openid_sreg_policy_url']; + } else { + $this->_policy_url = null; + } + $props = array(); + if (!empty($params['openid_sreg_optional'])) { + foreach (explode(',', $params['openid_sreg_optional']) as $prop) { + $prop = trim($prop); + $props[$prop] = false; + } + } + if (!empty($params['openid_sreg_required'])) { + foreach (explode(',', $params['openid_sreg_required']) as $prop) { + $prop = trim($prop); + $props[$prop] = true; + } + } + $props2 = array(); + foreach (self::getSregProperties() as $prop) { + if (isset($props[$prop])) { + $props2[$prop] = $props[$prop]; + } + } + + $this->_props = (count($props2) > 0) ? $props2 : null; + return true; + } + + /** + * Adds additional SREG data to OpenId 'id_res' response. + * + * @param array &$params response's var/val pairs + * @return bool + */ + public function prepareResponse(&$params) + { + if (is_array($this->_props) && count($this->_props) > 0) { + if ($this->_version >= 1.1) { + $params['openid.ns.sreg'] = Zend_OpenId_Extension_Sreg::NAMESPACE_1_1; + } + foreach (self::getSregProperties() as $prop) { + if (!empty($this->_props[$prop])) { + $params['openid.sreg.' . $prop] = $this->_props[$prop]; + } + } + } + return true; + } + + /** + * Parses OpenId 'id_res' response and sets object's properties according + * to 'openid.sreg.*' variables in response + * + * @param array $params response's var/val pairs + * @return bool + */ + public function parseResponse($params) + { + if (isset($params['openid_ns_sreg']) && + $params['openid_ns_sreg'] === Zend_OpenId_Extension_Sreg::NAMESPACE_1_1) { + $this->_version= 1.1; + } else { + $this->_version= 1.0; + } + $props = array(); + foreach (self::getSregProperties() as $prop) { + if (!empty($params['openid_sreg_' . $prop])) { + $props[$prop] = $params['openid_sreg_' . $prop]; + } + } + if (isset($this->_props) && is_array($this->_props)) { + foreach (self::getSregProperties() as $prop) { + if (isset($this->_props[$prop]) && + $this->_props[$prop] && + !isset($props[$prop])) { + return false; + } + } + } + $this->_props = (count($props) > 0) ? $props : null; + return true; + } + + /** + * Addes SREG properties that are allowed to be send to consumer to + * the given $data argument. + * + * @param array &$data data to be stored in tusted servers database + * @return bool + */ + public function getTrustData(&$data) + { + $data[get_class()] = $this->getProperties(); + return true; + } + + /** + * Check if given $data contains necessury SREG properties to sutisfy + * OpenId request. On success sets SREG response properties from given + * $data and returns true, on failure returns false. + * + * @param array $data data from tusted servers database + * @return bool + */ + public function checkTrustData($data) + { + if (is_array($this->_props) && count($this->_props) > 0) { + $props = array(); + $name = get_class(); + if (isset($data[$name])) { + $props = $data[$name]; + } else { + $props = array(); + } + $props2 = array(); + foreach ($this->_props as $prop => $req) { + if (empty($props[$prop])) { + if ($req) { + return false; + } + } else { + $props2[$prop] = $props[$prop]; + } + } + $this->_props = (count($props2) > 0) ? $props2 : null; + } + return true; + } +} diff --git a/library/Zend/OpenId/Provider.php b/library/Zend/OpenId/Provider.php new file mode 100755 index 000000000..3971944d0 --- /dev/null +++ b/library/Zend/OpenId/Provider.php @@ -0,0 +1,803 @@ +_loginUrl = $loginUrl; + if ($trustUrl === null) { + $trustUrl = Zend_OpenId::selfUrl() . '?openid.action=trust'; + } else { + $trustUrl = Zend_OpenId::absoluteUrl($trustUrl); + } + $this->_trustUrl = $trustUrl; + if ($user === null) { + require_once "Zend/OpenId/Provider/User/Session.php"; + $this->_user = new Zend_OpenId_Provider_User_Session(); + } else { + $this->_user = $user; + } + if ($storage === null) { + require_once "Zend/OpenId/Provider/Storage/File.php"; + $this->_storage = new Zend_OpenId_Provider_Storage_File(); + } else { + $this->_storage = $storage; + } + $this->_sessionTtl = $sessionTtl; + } + + /** + * Sets the OP Endpoint URL + * + * @param string $url the OP Endpoint URL + * @return null + */ + public function setOpEndpoint($url) + { + $this->_opEndpoint = $url; + } + + /** + * Registers a new user with given $id and $password + * Returns true in case of success and false if user with given $id already + * exists + * + * @param string $id user identity URL + * @param string $password encoded user password + * @return bool + */ + public function register($id, $password) + { + if (!Zend_OpenId::normalize($id) || empty($id)) { + return false; + } + return $this->_storage->addUser($id, md5($id.$password)); + } + + /** + * Returns true if user with given $id exists and false otherwise + * + * @param string $id user identity URL + * @return bool + */ + public function hasUser($id) { + if (!Zend_OpenId::normalize($id)) { + return false; + } + return $this->_storage->hasUser($id); + } + + /** + * Performs login of user with given $id and $password + * Returns true in case of success and false otherwise + * + * @param string $id user identity URL + * @param string $password user password + * @return bool + */ + public function login($id, $password) + { + if (!Zend_OpenId::normalize($id)) { + return false; + } + if (!$this->_storage->checkUser($id, md5($id.$password))) { + return false; + } + $this->_user->setLoggedInUser($id); + return true; + } + + /** + * Performs logout. Clears information about logged in user. + * + * @return void + */ + public function logout() + { + $this->_user->delLoggedInUser(); + return true; + } + + /** + * Returns identity URL of current logged in user or false + * + * @return mixed + */ + public function getLoggedInUser() { + return $this->_user->getLoggedInUser(); + } + + /** + * Retrieve consumer's root URL from request query. + * Returns URL or false in case of failure + * + * @param array $params query arguments + * @return mixed + */ + public function getSiteRoot($params) + { + $version = 1.1; + if (isset($params['openid_ns']) && + $params['openid_ns'] == Zend_OpenId::NS_2_0) { + $version = 2.0; + } + if ($version >= 2.0 && isset($params['openid_realm'])) { + $root = $params['openid_realm']; + } else if ($version < 2.0 && isset($params['openid_trust_root'])) { + $root = $params['openid_trust_root']; + } else if (isset($params['openid_return_to'])) { + $root = $params['openid_return_to']; + } else { + return false; + } + if (Zend_OpenId::normalizeUrl($root) && !empty($root)) { + return $root; + } + return false; + } + + /** + * Allows consumer with given root URL to authenticate current logged + * in user. Returns true on success and false on error. + * + * @param string $root root URL + * @param mixed $extensions extension object or array of extensions objects + * @return bool + */ + public function allowSite($root, $extensions=null) + { + $id = $this->getLoggedInUser(); + if ($id === false) { + return false; + } + if ($extensions !== null) { + $data = array(); + Zend_OpenId_Extension::forAll($extensions, 'getTrustData', $data); + } else { + $data = true; + } + $this->_storage->addSite($id, $root, $data); + return true; + } + + /** + * Prohibit consumer with given root URL to authenticate current logged + * in user. Returns true on success and false on error. + * + * @param string $root root URL + * @return bool + */ + public function denySite($root) + { + $id = $this->getLoggedInUser(); + if ($id === false) { + return false; + } + $this->_storage->addSite($id, $root, false); + return true; + } + + /** + * Delete consumer with given root URL from known sites of current logged + * in user. Next time this consumer will try to authenticate the user, + * Provider will ask user's confirmation. + * Returns true on success and false on error. + * + * @param string $root root URL + * @return bool + */ + public function delSite($root) + { + $id = $this->getLoggedInUser(); + if ($id === false) { + return false; + } + $this->_storage->addSite($id, $root, null); + return true; + } + + /** + * Returns list of known consumers for current logged in user or false + * if he is not logged in. + * + * @return mixed + */ + public function getTrustedSites() + { + $id = $this->getLoggedInUser(); + if ($id === false) { + return false; + } + return $this->_storage->getTrustedSites($id); + } + + /** + * Handles HTTP request from consumer + * + * @param array $params GET or POST variables. If this parameter is omited + * or set to null, then $_GET or $_POST superglobal variable is used + * according to REQUEST_METHOD. + * @param mixed $extensions extension object or array of extensions objects + * @param Zend_Controller_Response_Abstract $response an optional response + * object to perform HTTP or HTML form redirection + * @return mixed + */ + public function handle($params=null, $extensions=null, + Zend_Controller_Response_Abstract $response = null) + { + if ($params === null) { + if ($_SERVER["REQUEST_METHOD"] == "GET") { + $params = $_GET; + } else if ($_SERVER["REQUEST_METHOD"] == "POST") { + $params = $_POST; + } else { + return false; + } + } + $version = 1.1; + if (isset($params['openid_ns']) && + $params['openid_ns'] == Zend_OpenId::NS_2_0) { + $version = 2.0; + } + if (isset($params['openid_mode'])) { + if ($params['openid_mode'] == 'associate') { + $response = $this->_associate($version, $params); + $ret = ''; + foreach ($response as $key => $val) { + $ret .= $key . ':' . $val . "\n"; + } + return $ret; + } else if ($params['openid_mode'] == 'checkid_immediate') { + $ret = $this->_checkId($version, $params, 1, $extensions, $response); + if (is_bool($ret)) return $ret; + if (!empty($params['openid_return_to'])) { + Zend_OpenId::redirect($params['openid_return_to'], $ret, $response); + } + return true; + } else if ($params['openid_mode'] == 'checkid_setup') { + $ret = $this->_checkId($version, $params, 0, $extensions, $response); + if (is_bool($ret)) return $ret; + if (!empty($params['openid_return_to'])) { + Zend_OpenId::redirect($params['openid_return_to'], $ret, $response); + } + return true; + } else if ($params['openid_mode'] == 'check_authentication') { + $response = $this->_checkAuthentication($version, $params); + $ret = ''; + foreach ($response as $key => $val) { + $ret .= $key . ':' . $val . "\n"; + } + return $ret; + } + } + return false; + } + + /** + * Generates a secret key for given hash function, returns RAW key or false + * if function is not supported + * + * @param string $func hash function (sha1 or sha256) + * @return mixed + */ + protected function _genSecret($func) + { + if ($func == 'sha1') { + $macLen = 20; /* 160 bit */ + } else if ($func == 'sha256') { + $macLen = 32; /* 256 bit */ + } else { + return false; + } + return Zend_OpenId::randomBytes($macLen); + } + + /** + * Processes association request from OpenID consumerm generates secret + * shared key and send it back using Diffie-Hellman encruption. + * Returns array of variables to push back to consumer. + * + * @param float $version OpenID version + * @param array $params GET or POST request variables + * @return array + */ + protected function _associate($version, $params) + { + $ret = array(); + + if ($version >= 2.0) { + $ret['ns'] = Zend_OpenId::NS_2_0; + } + + if (isset($params['openid_assoc_type']) && + $params['openid_assoc_type'] == 'HMAC-SHA1') { + $macFunc = 'sha1'; + } else if (isset($params['openid_assoc_type']) && + $params['openid_assoc_type'] == 'HMAC-SHA256' && + $version >= 2.0) { + $macFunc = 'sha256'; + } else { + $ret['error'] = 'Wrong "openid.assoc_type"'; + $ret['error-code'] = 'unsupported-type'; + return $ret; + } + + $ret['assoc_type'] = $params['openid_assoc_type']; + + $secret = $this->_genSecret($macFunc); + + if (empty($params['openid_session_type']) || + $params['openid_session_type'] == 'no-encryption') { + $ret['mac_key'] = base64_encode($secret); + } else if (isset($params['openid_session_type']) && + $params['openid_session_type'] == 'DH-SHA1') { + $dhFunc = 'sha1'; + } else if (isset($params['openid_session_type']) && + $params['openid_session_type'] == 'DH-SHA256' && + $version >= 2.0) { + $dhFunc = 'sha256'; + } else { + $ret['error'] = 'Wrong "openid.session_type"'; + $ret['error-code'] = 'unsupported-type'; + return $ret; + } + + if (isset($params['openid_session_type'])) { + $ret['session_type'] = $params['openid_session_type']; + } + + if (isset($dhFunc)) { + if (empty($params['openid_dh_consumer_public'])) { + $ret['error'] = 'Wrong "openid.dh_consumer_public"'; + return $ret; + } + if (empty($params['openid_dh_gen'])) { + $g = pack('H*', Zend_OpenId::DH_G); + } else { + $g = base64_decode($params['openid_dh_gen']); + } + if (empty($params['openid_dh_modulus'])) { + $p = pack('H*', Zend_OpenId::DH_P); + } else { + $p = base64_decode($params['openid_dh_modulus']); + } + + $dh = Zend_OpenId::createDhKey($p, $g); + $dh_details = Zend_OpenId::getDhKeyDetails($dh); + + $sec = Zend_OpenId::computeDhSecret( + base64_decode($params['openid_dh_consumer_public']), $dh); + if ($sec === false) { + $ret['error'] = 'Wrong "openid.session_type"'; + $ret['error-code'] = 'unsupported-type'; + return $ret; + } + $sec = Zend_OpenId::digest($dhFunc, $sec); + $ret['dh_server_public'] = base64_encode( + Zend_OpenId::btwoc($dh_details['pub_key'])); + $ret['enc_mac_key'] = base64_encode($secret ^ $sec); + } + + $handle = uniqid(); + $expiresIn = $this->_sessionTtl; + + $ret['assoc_handle'] = $handle; + $ret['expires_in'] = $expiresIn; + + $this->_storage->addAssociation($handle, + $macFunc, $secret, time() + $expiresIn); + + return $ret; + } + + /** + * Performs authentication (or authentication check). + * + * @param float $version OpenID version + * @param array $params GET or POST request variables + * @param bool $immediate enables or disables interaction with user + * @param mixed $extensions extension object or array of extensions objects + * @param Zend_Controller_Response_Abstract $response + * @return array + */ + protected function _checkId($version, $params, $immediate, $extensions=null, + Zend_Controller_Response_Abstract $response = null) + { + $ret = array(); + + if ($version >= 2.0) { + $ret['openid.ns'] = Zend_OpenId::NS_2_0; + } + $root = $this->getSiteRoot($params); + if ($root === false) { + return false; + } + + if (isset($params['openid_identity']) && + !$this->_storage->hasUser($params['openid_identity'])) { + $ret['openid.mode'] = ($immediate && $version >= 2.0) ? 'setup_needed': 'cancel'; + return $ret; + } + + /* Check if user already logged in into the server */ + if (!isset($params['openid_identity']) || + $this->_user->getLoggedInUser() !== $params['openid_identity']) { + $params2 = array(); + foreach ($params as $key => $val) { + if (strpos($key, 'openid_ns_') === 0) { + $key = 'openid.ns.' . substr($key, strlen('openid_ns_')); + } else if (strpos($key, 'openid_sreg_') === 0) { + $key = 'openid.sreg.' . substr($key, strlen('openid_sreg_')); + } else if (strpos($key, 'openid_') === 0) { + $key = 'openid.' . substr($key, strlen('openid_')); + } + $params2[$key] = $val; + } + if ($immediate) { + $params2['openid.mode'] = 'checkid_setup'; + $ret['openid.mode'] = ($version >= 2.0) ? 'setup_needed': 'id_res'; + $ret['openid.user_setup_url'] = $this->_loginUrl + . (strpos($this->_loginUrl, '?') === false ? '?' : '&') + . Zend_OpenId::paramsToQuery($params2); + return $ret; + } else { + /* Redirect to Server Login Screen */ + Zend_OpenId::redirect($this->_loginUrl, $params2, $response); + return true; + } + } + + if (!Zend_OpenId_Extension::forAll($extensions, 'parseRequest', $params)) { + $ret['openid.mode'] = ($immediate && $version >= 2.0) ? 'setup_needed': 'cancel'; + return $ret; + } + + /* Check if user trusts to the consumer */ + $trusted = null; + $sites = $this->_storage->getTrustedSites($params['openid_identity']); + if (isset($params['openid_return_to'])) { + $root = $params['openid_return_to']; + } + if (isset($sites[$root])) { + $trusted = $sites[$root]; + } else { + foreach ($sites as $site => $t) { + if (strpos($root, $site) === 0) { + $trusted = $t; + break; + } else { + /* OpenID 2.0 (9.2) check for realm wild-card matching */ + $n = strpos($site, '://*.'); + if ($n != false) { + $regex = '/^' + . preg_quote(substr($site, 0, $n+3), '/') + . '[A-Za-z1-9_\.]+?' + . preg_quote(substr($site, $n+4), '/') + . '/'; + if (preg_match($regex, $root)) { + $trusted = $t; + break; + } + } + } + } + } + + if (is_array($trusted)) { + if (!Zend_OpenId_Extension::forAll($extensions, 'checkTrustData', $trusted)) { + $trusted = null; + } + } + + if ($trusted === false) { + $ret['openid.mode'] = 'cancel'; + return $ret; + } else if ($trusted === null) { + /* Redirect to Server Trust Screen */ + $params2 = array(); + foreach ($params as $key => $val) { + if (strpos($key, 'openid_ns_') === 0) { + $key = 'openid.ns.' . substr($key, strlen('openid_ns_')); + } else if (strpos($key, 'openid_sreg_') === 0) { + $key = 'openid.sreg.' . substr($key, strlen('openid_sreg_')); + } else if (strpos($key, 'openid_') === 0) { + $key = 'openid.' . substr($key, strlen('openid_')); + } + $params2[$key] = $val; + } + if ($immediate) { + $params2['openid.mode'] = 'checkid_setup'; + $ret['openid.mode'] = ($version >= 2.0) ? 'setup_needed': 'id_res'; + $ret['openid.user_setup_url'] = $this->_trustUrl + . (strpos($this->_trustUrl, '?') === false ? '?' : '&') + . Zend_OpenId::paramsToQuery($params2); + return $ret; + } else { + Zend_OpenId::redirect($this->_trustUrl, $params2, $response); + return true; + } + } + + return $this->_respond($version, $ret, $params, $extensions); + } + + /** + * Perepares information to send back to consumer's authentication request, + * signs it using shared secret and send back through HTTP redirection + * + * @param array $params GET or POST request variables + * @param mixed $extensions extension object or array of extensions objects + * @param Zend_Controller_Response_Abstract $response an optional response + * object to perform HTTP or HTML form redirection + * @return bool + */ + public function respondToConsumer($params, $extensions=null, + Zend_Controller_Response_Abstract $response = null) + { + $version = 1.1; + if (isset($params['openid_ns']) && + $params['openid_ns'] == Zend_OpenId::NS_2_0) { + $version = 2.0; + } + $ret = array(); + if ($version >= 2.0) { + $ret['openid.ns'] = Zend_OpenId::NS_2_0; + } + $ret = $this->_respond($version, $ret, $params, $extensions); + if (!empty($params['openid_return_to'])) { + Zend_OpenId::redirect($params['openid_return_to'], $ret, $response); + } + return true; + } + + /** + * Perepares information to send back to consumer's authentication request + * and signs it using shared secret. + * + * @param float $version OpenID protcol version + * @param array $ret arguments to be send back to consumer + * @param array $params GET or POST request variables + * @param mixed $extensions extension object or array of extensions objects + * @return array + */ + protected function _respond($version, $ret, $params, $extensions=null) + { + if (empty($params['openid_assoc_handle']) || + !$this->_storage->getAssociation($params['openid_assoc_handle'], + $macFunc, $secret, $expires)) { + /* Use dumb mode */ + if (!empty($params['openid_assoc_handle'])) { + $ret['openid.invalidate_handle'] = $params['openid_assoc_handle']; + } + $macFunc = $version >= 2.0 ? 'sha256' : 'sha1'; + $secret = $this->_genSecret($macFunc); + $handle = uniqid(); + $expiresIn = $this->_sessionTtl; + $this->_storage->addAssociation($handle, + $macFunc, $secret, time() + $expiresIn); + $ret['openid.assoc_handle'] = $handle; + } else { + $ret['openid.assoc_handle'] = $params['openid_assoc_handle']; + } + if (isset($params['openid_return_to'])) { + $ret['openid.return_to'] = $params['openid_return_to']; + } + if (isset($params['openid_claimed_id'])) { + $ret['openid.claimed_id'] = $params['openid_claimed_id']; + } + if (isset($params['openid_identity'])) { + $ret['openid.identity'] = $params['openid_identity']; + } + + if ($version >= 2.0) { + if (!empty($this->_opEndpoint)) { + $ret['openid.op_endpoint'] = $this->_opEndpoint; + } else { + $ret['openid.op_endpoint'] = Zend_OpenId::selfUrl(); + } + } + $ret['openid.response_nonce'] = gmdate('Y-m-d\TH:i:s\Z') . uniqid(); + $ret['openid.mode'] = 'id_res'; + + Zend_OpenId_Extension::forAll($extensions, 'prepareResponse', $ret); + + $signed = ''; + $data = ''; + foreach ($ret as $key => $val) { + if (strpos($key, 'openid.') === 0) { + $key = substr($key, strlen('openid.')); + if (!empty($signed)) { + $signed .= ','; + } + $signed .= $key; + $data .= $key . ':' . $val . "\n"; + } + } + $signed .= ',signed'; + $data .= 'signed:' . $signed . "\n"; + $ret['openid.signed'] = $signed; + + $ret['openid.sig'] = base64_encode( + Zend_OpenId::hashHmac($macFunc, $data, $secret)); + + return $ret; + } + + /** + * Performs authentication validation for dumb consumers + * Returns array of variables to push back to consumer. + * It MUST contain 'is_valid' variable with value 'true' or 'false'. + * + * @param float $version OpenID version + * @param array $params GET or POST request variables + * @return array + */ + protected function _checkAuthentication($version, $params) + { + $ret = array(); + if ($version >= 2.0) { + $ret['ns'] = Zend_OpenId::NS_2_0; + } + $ret['openid.mode'] = 'id_res'; + + if (empty($params['openid_assoc_handle']) || + empty($params['openid_signed']) || + empty($params['openid_sig']) || + !$this->_storage->getAssociation($params['openid_assoc_handle'], + $macFunc, $secret, $expires)) { + $ret['is_valid'] = 'false'; + return $ret; + } + + $signed = explode(',', $params['openid_signed']); + $data = ''; + foreach ($signed as $key) { + $data .= $key . ':'; + if ($key == 'mode') { + $data .= "id_res\n"; + } else { + $data .= $params['openid_' . strtr($key,'.','_')]."\n"; + } + } + if ($this->_secureStringCompare(base64_decode($params['openid_sig']), + Zend_OpenId::hashHmac($macFunc, $data, $secret))) { + $ret['is_valid'] = 'true'; + } else { + $ret['is_valid'] = 'false'; + } + return $ret; + } + + /** + * Securely compare two strings for equality while avoided C level memcmp() + * optimisations capable of leaking timing information useful to an attacker + * attempting to iteratively guess the unknown string (e.g. password) being + * compared against. + * + * @param string $a + * @param string $b + * @return bool + */ + protected function _secureStringCompare($a, $b) + { + if (strlen($a) !== strlen($b)) { + return false; + } + $result = 0; + for ($i = 0; $i < strlen($a); $i++) { + $result |= ord($a[$i]) ^ ord($b[$i]); + } + return $result == 0; + } +} diff --git a/library/Zend/OpenId/Provider/Storage.php b/library/Zend/OpenId/Provider/Storage.php new file mode 100755 index 000000000..f9bbb1703 --- /dev/null +++ b/library/Zend/OpenId/Provider/Storage.php @@ -0,0 +1,106 @@ +_dir = $dir; + if (!is_dir($this->_dir)) { + if (!@mkdir($this->_dir, 0700, 1)) { + throw new Zend_OpenId_Exception( + "Cannot access storage directory $dir", + Zend_OpenId_Exception::ERROR_STORAGE); + } + } + if (($f = fopen($this->_dir.'/assoc.lock', 'w+')) === null) { + throw new Zend_OpenId_Exception( + 'Cannot create a lock file in the directory ' . $dir, + Zend_OpenId_Exception::ERROR_STORAGE); + } + fclose($f); + if (($f = fopen($this->_dir.'/user.lock', 'w+')) === null) { + throw new Zend_OpenId_Exception( + 'Cannot create a lock file in the directory ' . $dir, + Zend_OpenId_Exception::ERROR_STORAGE); + } + fclose($f); + } + + /** + * Stores information about session identified by $handle + * + * @param string $handle assiciation handle + * @param string $macFunc HMAC function (sha1 or sha256) + * @param string $secret shared secret + * @param string $expires expiration UNIX time + * @return bool + */ + public function addAssociation($handle, $macFunc, $secret, $expires) + { + $name = $this->_dir . '/assoc_' . md5($handle); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'w+'); + if ($f === false) { + fclose($lock); + return false; + } + $data = serialize(array($handle, $macFunc, $secret, $expires)); + fwrite($f, $data); + fclose($f); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Gets information about association identified by $handle + * Returns true if given association found and not expired and false + * otherwise + * + * @param string $handle assiciation handle + * @param string &$macFunc HMAC function (sha1 or sha256) + * @param string &$secret shared secret + * @param string &$expires expiration UNIX time + * @return bool + */ + public function getAssociation($handle, &$macFunc, &$secret, &$expires) + { + $name = $this->_dir . '/assoc_' . md5($handle); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedHandle, $macFunc, $secret, $expires) = unserialize($data); + if ($handle === $storedHandle && $expires > time()) { + $ret = true; + } else { + fclose($f); + @unlink($name); + fclose($lock); + return false; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Removes information about association identified by $handle + * + * @param string $handle assiciation handle + * @return bool + */ + public function delAssociation($handle) + { + $name = $this->_dir . '/assoc_' . md5($handle); + $lock = @fopen($this->_dir . '/assoc.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + @unlink($name); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Register new user with given $id and $password + * Returns true in case of success and false if user with given $id already + * exists + * + * @param string $id user identity URL + * @param string $password encoded user password + * @return bool + */ + public function addUser($id, $password) + { + $name = $this->_dir . '/user_' . md5($id); + $lock = @fopen($this->_dir . '/user.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'x'); + if ($f === false) { + fclose($lock); + return false; + } + $data = serialize(array($id, $password, array())); + fwrite($f, $data); + fclose($f); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Returns true if user with given $id exists and false otherwise + * + * @param string $id user identity URL + * @return bool + */ + public function hasUser($id) + { + $name = $this->_dir . '/user_' . md5($id); + $lock = @fopen($this->_dir . '/user.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_SH)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedId, $storedPassword, $trusted) = unserialize($data); + if ($id === $storedId) { + $ret = true; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Verify if user with given $id exists and has specified $password + * + * @param string $id user identity URL + * @param string $password user password + * @return bool + */ + public function checkUser($id, $password) + { + $name = $this->_dir . '/user_' . md5($id); + $lock = @fopen($this->_dir . '/user.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_SH)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedId, $storedPassword, $trusted) = unserialize($data); + if ($id === $storedId && $password === $storedPassword) { + $ret = true; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Removes information abou specified user + * + * @param string $id user identity URL + * @return bool + */ + public function delUser($id) + { + $name = $this->_dir . '/user_' . md5($id); + $lock = @fopen($this->_dir . '/user.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + @unlink($name); + fclose($lock); + return true; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Returns array of all trusted/untrusted sites for given user identified + * by $id + * + * @param string $id user identity URL + * @return array + */ + public function getTrustedSites($id) + { + $name = $this->_dir . '/user_' . md5($id); + $lock = @fopen($this->_dir . '/user.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_SH)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'r'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedId, $storedPassword, $trusted) = unserialize($data); + if ($id === $storedId) { + $ret = $trusted; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } + + /** + * Stores information about trusted/untrusted site for given user + * + * @param string $id user identity URL + * @param string $site site URL + * @param mixed $trusted trust data from extension or just a boolean value + * @return bool + */ + public function addSite($id, $site, $trusted) + { + $name = $this->_dir . '/user_' . md5($id); + $lock = @fopen($this->_dir . '/user.lock', 'w+'); + if ($lock === false) { + return false; + } + if (!flock($lock, LOCK_EX)) { + fclose($lock); + return false; + } + try { + $f = @fopen($name, 'r+'); + if ($f === false) { + fclose($lock); + return false; + } + $ret = false; + $data = stream_get_contents($f); + if (!empty($data)) { + list($storedId, $storedPassword, $sites) = unserialize($data); + if ($id === $storedId) { + if ($trusted === null) { + unset($sites[$site]); + } else { + $sites[$site] = $trusted; + } + rewind($f); + ftruncate($f, 0); + $data = serialize(array($id, $storedPassword, $sites)); + fwrite($f, $data); + $ret = true; + } + } + fclose($f); + fclose($lock); + return $ret; + } catch (Exception $e) { + fclose($lock); + throw $e; + } + } +} diff --git a/library/Zend/OpenId/Provider/User.php b/library/Zend/OpenId/Provider/User.php new file mode 100755 index 000000000..458c3d4a2 --- /dev/null +++ b/library/Zend/OpenId/Provider/User.php @@ -0,0 +1,57 @@ +_session = new Zend_Session_Namespace("openid"); + } else { + $this->_session = $session; + } + } + + /** + * Stores information about logged in user in session data + * + * @param string $id user identity URL + * @return bool + */ + public function setLoggedInUser($id) + { + $this->_session->logged_in = $id; + return true; + } + + /** + * Returns identity URL of logged in user or false + * + * @return mixed + */ + public function getLoggedInUser() + { + if (isset($this->_session->logged_in)) { + return $this->_session->logged_in; + } + return false; + } + + /** + * Performs logout. Clears information about logged in user. + * + * @return bool + */ + public function delLoggedInUser() + { + unset($this->_session->logged_in); + return true; + } + +} diff --git a/library/Zend/Paginator.php b/library/Zend/Paginator.php new file mode 100755 index 000000000..2ffff9737 --- /dev/null +++ b/library/Zend/Paginator.php @@ -0,0 +1,1173 @@ +addPrefixPath($prefix, $path); + } + + /** + * Adds an array of adapter prefix paths to the plugin + * loader. + * + * + * $prefixPaths = array( + * 'My_Paginator_Adapter' => 'My/Paginator/Adapter/', + * 'Your_Paginator_Adapter' => 'Your/Paginator/Adapter/' + * ); + * + * + * @param array $prefixPaths + */ + public static function addAdapterPrefixPaths(array $prefixPaths) + { + if (isset($prefixPaths['prefix']) && isset($prefixPaths['path'])) { + self::addAdapterPrefixPath($prefixPaths['prefix'], $prefixPaths['path']); + } else { + foreach ($prefixPaths as $prefix => $path) { + if (is_array($path) && isset($path['prefix']) && isset($path['path'])) { + $prefix = $path['prefix']; + $path = $path['path']; + } + + self::addAdapterPrefixPath($prefix, $path); + } + } + } + + /** + * Adds a scrolling style prefix path to the plugin loader. + * + * @param string $prefix + * @param string $path + */ + public static function addScrollingStylePrefixPath($prefix, $path) + { + self::getScrollingStyleLoader()->addPrefixPath($prefix, $path); + } + + /** + * Adds an array of scrolling style prefix paths to the plugin + * loader. + * + * + * $prefixPaths = array( + * 'My_Paginator_ScrollingStyle' => 'My/Paginator/ScrollingStyle/', + * 'Your_Paginator_ScrollingStyle' => 'Your/Paginator/ScrollingStyle/' + * ); + * + * + * @param array $prefixPaths + */ + public static function addScrollingStylePrefixPaths(array $prefixPaths) + { + if (isset($prefixPaths['prefix']) && isset($prefixPaths['path'])) { + self::addScrollingStylePrefixPath($prefixPaths['prefix'], $prefixPaths['path']); + } else { + foreach ($prefixPaths as $prefix => $path) { + if (is_array($path) && isset($path['prefix']) && isset($path['path'])) { + $prefix = $path['prefix']; + $path = $path['path']; + } + + self::addScrollingStylePrefixPath($prefix, $path); + } + } + } + + /** + * Factory. + * + * @param mixed $data + * @param string $adapter + * @param array $prefixPaths + * @return Zend_Paginator + */ + public static function factory($data, $adapter = self::INTERNAL_ADAPTER, + array $prefixPaths = null) + { + if ($data instanceof Zend_Paginator_AdapterAggregate) { + return new self($data->getPaginatorAdapter()); + } else { + if ($adapter == self::INTERNAL_ADAPTER) { + if (is_array($data)) { + $adapter = 'Array'; + } else if ($data instanceof Zend_Db_Table_Select) { + $adapter = 'DbTableSelect'; + } else if ($data instanceof Zend_Db_Select) { + $adapter = 'DbSelect'; + } else if ($data instanceof Iterator) { + $adapter = 'Iterator'; + } else if (is_integer($data)) { + $adapter = 'Null'; + } else { + $type = (is_object($data)) ? get_class($data) : gettype($data); + + /** + * @see Zend_Paginator_Exception + */ + require_once 'Zend/Paginator/Exception.php'; + + throw new Zend_Paginator_Exception('No adapter for type ' . $type); + } + } + + $pluginLoader = self::getAdapterLoader(); + + if (null !== $prefixPaths) { + foreach ($prefixPaths as $prefix => $path) { + $pluginLoader->addPrefixPath($prefix, $path); + } + } + + $adapterClassName = $pluginLoader->load($adapter); + + return new self(new $adapterClassName($data)); + } + } + + /** + * Returns the adapter loader. If it doesn't exist it's created. + * + * @return Zend_Loader_PluginLoader + */ + public static function getAdapterLoader() + { + if (self::$_adapterLoader === null) { + self::$_adapterLoader = new Zend_Loader_PluginLoader( + array('Zend_Paginator_Adapter' => 'Zend/Paginator/Adapter') + ); + } + + return self::$_adapterLoader; + } + + /** + * Set a global config + * + * @param Zend_Config $config + */ + public static function setConfig(Zend_Config $config) + { + self::$_config = $config; + + $adapterPaths = $config->get('adapterpaths'); + + if ($adapterPaths != null) { + self::addAdapterPrefixPaths($adapterPaths->adapterpath->toArray()); + } + + $prefixPaths = $config->get('prefixpaths'); + + if ($prefixPaths != null) { + self::addScrollingStylePrefixPaths($prefixPaths->prefixpath->toArray()); + } + + $scrollingStyle = $config->get('scrollingstyle'); + + if ($scrollingStyle != null) { + self::setDefaultScrollingStyle($scrollingStyle); + } + } + + /** + * Returns the default scrolling style. + * + * @return string + */ + public static function getDefaultScrollingStyle() + { + return self::$_defaultScrollingStyle; + } + + /** + * Get the default item count per page + * + * @return int + */ + public static function getDefaultItemCountPerPage() + { + return self::$_defaultItemCountPerPage; + } + + /** + * Set the default item count per page + * + * @param int $count + */ + public static function setDefaultItemCountPerPage($count) + { + self::$_defaultItemCountPerPage = (int) $count; + } + + /** + * Get the default page range + * + * @return int + */ + public static function getDefaultPageRange() + { + return self::$_defaultPageRange; + } + + /** + * Set the default page range + * + * @param int $count + */ + public static function setDefaultPageRange($count) + { + self::$_defaultPageRange = (int) $count; + } + + /** + * Sets a cache object + * + * @param Zend_Cache_Core $cache + */ + public static function setCache(Zend_Cache_Core $cache) + { + self::$_cache = $cache; + } + + /** + * Sets the default scrolling style. + * + * @param string $scrollingStyle + */ + public static function setDefaultScrollingStyle($scrollingStyle = 'Sliding') + { + self::$_defaultScrollingStyle = $scrollingStyle; + } + + /** + * Returns the scrolling style loader. If it doesn't exist it's + * created. + * + * @return Zend_Loader_PluginLoader + */ + public static function getScrollingStyleLoader() + { + if (self::$_scrollingStyleLoader === null) { + self::$_scrollingStyleLoader = new Zend_Loader_PluginLoader( + array('Zend_Paginator_ScrollingStyle' => 'Zend/Paginator/ScrollingStyle') + ); + } + + return self::$_scrollingStyleLoader; + } + + /** + * Constructor. + * + * @param Zend_Paginator_Adapter_Interface|Zend_Paginator_AdapterAggregate $adapter + */ + public function __construct($adapter) + { + if ($adapter instanceof Zend_Paginator_Adapter_Interface) { + $this->_adapter = $adapter; + } else if ($adapter instanceof Zend_Paginator_AdapterAggregate) { + $this->_adapter = $adapter->getPaginatorAdapter(); + } else { + /** + * @see Zend_Paginator_Exception + */ + require_once 'Zend/Paginator/Exception.php'; + + throw new Zend_Paginator_Exception( + 'Zend_Paginator only accepts instances of the type ' . + 'Zend_Paginator_Adapter_Interface or Zend_Paginator_AdapterAggregate.' + ); + } + + $config = self::$_config; + + if ($config != null) { + $setupMethods = array('ItemCountPerPage', 'PageRange'); + + foreach ($setupMethods as $setupMethod) { + $value = $config->get(strtolower($setupMethod)); + + if ($value != null) { + $setupMethod = 'set' . $setupMethod; + $this->$setupMethod($value); + } + } + } + } + + /** + * Serializes the object as a string. Proxies to {@link render()}. + * + * @return string + */ + public function __toString() + { + try { + $return = $this->render(); + return $return; + } catch (Exception $e) { + trigger_error($e->getMessage(), E_USER_WARNING); + } + + return ''; + } + + /** + * Enables/Disables the cache for this instance + * + * @param bool $enable + * @return Zend_Paginator + */ + public function setCacheEnabled($enable) + { + $this->_cacheEnabled = (bool)$enable; + return $this; + } + + /** + * Returns the number of pages. + * + * @return integer + */ + public function count() + { + if (!$this->_pageCount) { + $this->_pageCount = $this->_calculatePageCount(); + } + + return $this->_pageCount; + } + + /** + * Returns the total number of items available. Uses cache if caching is enabled. + * + * @return integer + */ + public function getTotalItemCount() + { + if (!$this->_cacheEnabled()) { + return count($this->getAdapter()); + } else { + $cacheId = md5($this->_getCacheInternalId(). '_itemCount'); + $itemCount = self::$_cache->load($cacheId); + + if ($itemCount === false) { + $itemCount = count($this->getAdapter()); + + self::$_cache->save($itemCount, $cacheId, array($this->_getCacheInternalId())); + } + + return $itemCount; + } + } + + /** + * Clear the page item cache. + * + * @param int $pageNumber + * @return Zend_Paginator + */ + public function clearPageItemCache($pageNumber = null) + { + if (!$this->_cacheEnabled()) { + return $this; + } + + if (null === $pageNumber) { + foreach (self::$_cache->getIdsMatchingTags(array($this->_getCacheInternalId())) as $id) { + if (preg_match('|'.self::CACHE_TAG_PREFIX."(\d+)_.*|", $id, $page)) { + self::$_cache->remove($this->_getCacheId($page[1])); + } + } + } else { + $cleanId = $this->_getCacheId($pageNumber); + self::$_cache->remove($cleanId); + } + return $this; + } + + /** + * Returns the absolute item number for the specified item. + * + * @param integer $relativeItemNumber Relative item number + * @param integer $pageNumber Page number + * @return integer + */ + public function getAbsoluteItemNumber($relativeItemNumber, $pageNumber = null) + { + $relativeItemNumber = $this->normalizeItemNumber($relativeItemNumber); + + if ($pageNumber == null) { + $pageNumber = $this->getCurrentPageNumber(); + } + + $pageNumber = $this->normalizePageNumber($pageNumber); + + return (($pageNumber - 1) * $this->getItemCountPerPage()) + $relativeItemNumber; + } + + /** + * Returns the adapter. + * + * @return Zend_Paginator_Adapter_Interface + */ + public function getAdapter() + { + return $this->_adapter; + } + + /** + * Returns the number of items for the current page. + * + * @return integer + */ + public function getCurrentItemCount() + { + if ($this->_currentItemCount === null) { + $this->_currentItemCount = $this->getItemCount($this->getCurrentItems()); + } + + return $this->_currentItemCount; + } + + /** + * Returns the items for the current page. + * + * @return Traversable + */ + public function getCurrentItems() + { + if ($this->_currentItems === null) { + $this->_currentItems = $this->getItemsByPage($this->getCurrentPageNumber()); + } + + return $this->_currentItems; + } + + /** + * Returns the current page number. + * + * @return integer + */ + public function getCurrentPageNumber() + { + return $this->normalizePageNumber($this->_currentPageNumber); + } + + /** + * Sets the current page number. + * + * @param integer $pageNumber Page number + * @return Zend_Paginator $this + */ + public function setCurrentPageNumber($pageNumber) + { + $this->_currentPageNumber = (integer) $pageNumber; + $this->_currentItems = null; + $this->_currentItemCount = null; + + return $this; + } + + /** + * Get the filter + * + * @return Zend_Filter_Interface + */ + public function getFilter() + { + return $this->_filter; + } + + /** + * Set a filter chain + * + * @param Zend_Filter_Interface $filter + * @return Zend_Paginator + */ + public function setFilter(Zend_Filter_Interface $filter) + { + $this->_filter = $filter; + + return $this; + } + + /** + * Returns an item from a page. The current page is used if there's no + * page sepcified. + * + * @param integer $itemNumber Item number (1 to itemCountPerPage) + * @param integer $pageNumber + * @return mixed + */ + public function getItem($itemNumber, $pageNumber = null) + { + if ($pageNumber == null) { + $pageNumber = $this->getCurrentPageNumber(); + } else if ($pageNumber < 0) { + $pageNumber = ($this->count() + 1) + $pageNumber; + } + + $page = $this->getItemsByPage($pageNumber); + $itemCount = $this->getItemCount($page); + + if ($itemCount == 0) { + /** + * @see Zend_Paginator_Exception + */ + require_once 'Zend/Paginator/Exception.php'; + + throw new Zend_Paginator_Exception('Page ' . $pageNumber . ' does not exist'); + } + + if ($itemNumber < 0) { + $itemNumber = ($itemCount + 1) + $itemNumber; + } + + $itemNumber = $this->normalizeItemNumber($itemNumber); + + if ($itemNumber > $itemCount) { + /** + * @see Zend_Paginator_Exception + */ + require_once 'Zend/Paginator/Exception.php'; + + throw new Zend_Paginator_Exception('Page ' . $pageNumber . ' does not' + . ' contain item number ' . $itemNumber); + } + + return $page[$itemNumber - 1]; + } + + /** + * Returns the number of items per page. + * + * @return integer + */ + public function getItemCountPerPage() + { + if (empty($this->_itemCountPerPage)) { + $this->_itemCountPerPage = self::getDefaultItemCountPerPage(); + } + + return $this->_itemCountPerPage; + } + + /** + * Sets the number of items per page. + * + * @param integer $itemCountPerPage + * @return Zend_Paginator $this + */ + public function setItemCountPerPage($itemCountPerPage = -1) + { + $this->_itemCountPerPage = (integer) $itemCountPerPage; + if ($this->_itemCountPerPage < 1) { + $this->_itemCountPerPage = $this->getTotalItemCount(); + } + $this->_pageCount = $this->_calculatePageCount(); + $this->_currentItems = null; + $this->_currentItemCount = null; + + return $this; + } + + /** + * Returns the number of items in a collection. + * + * @param mixed $items Items + * @return integer + */ + public function getItemCount($items) + { + $itemCount = 0; + + if (is_array($items) || $items instanceof Countable) { + $itemCount = count($items); + } else { // $items is something like LimitIterator + $itemCount = iterator_count($items); + } + + return $itemCount; + } + + /** + * Returns the items for a given page. + * + * @return Traversable + */ + public function getItemsByPage($pageNumber) + { + $pageNumber = $this->normalizePageNumber($pageNumber); + + if ($this->_cacheEnabled()) { + $data = self::$_cache->load($this->_getCacheId($pageNumber)); + if ($data !== false) { + return $data; + } + } + + $offset = ($pageNumber - 1) * $this->getItemCountPerPage(); + + $items = $this->_adapter->getItems($offset, $this->getItemCountPerPage()); + + $filter = $this->getFilter(); + + if ($filter !== null) { + $items = $filter->filter($items); + } + + if (!$items instanceof Traversable) { + $items = new ArrayIterator($items); + } + + if ($this->_cacheEnabled()) { + self::$_cache->save($items, $this->_getCacheId($pageNumber), array($this->_getCacheInternalId())); + } + + return $items; + } + + /** + * Returns a foreach-compatible iterator. + * + * @return Traversable + */ + public function getIterator() + { + return $this->getCurrentItems(); + } + + /** + * Returns the page range (see property declaration above). + * + * @return integer + */ + public function getPageRange() + { + if (null === $this->_pageRange) { + $this->_pageRange = self::getDefaultPageRange(); + } + + return $this->_pageRange; + } + + /** + * Sets the page range (see property declaration above). + * + * @param integer $pageRange + * @return Zend_Paginator $this + */ + public function setPageRange($pageRange) + { + $this->_pageRange = (integer) $pageRange; + + return $this; + } + + /** + * Returns the page collection. + * + * @param string $scrollingStyle Scrolling style + * @return array + */ + public function getPages($scrollingStyle = null) + { + if ($this->_pages === null) { + $this->_pages = $this->_createPages($scrollingStyle); + } + + return $this->_pages; + } + + /** + * Returns a subset of pages within a given range. + * + * @param integer $lowerBound Lower bound of the range + * @param integer $upperBound Upper bound of the range + * @return array + */ + public function getPagesInRange($lowerBound, $upperBound) + { + $lowerBound = $this->normalizePageNumber($lowerBound); + $upperBound = $this->normalizePageNumber($upperBound); + + $pages = array(); + + for ($pageNumber = $lowerBound; $pageNumber <= $upperBound; $pageNumber++) { + $pages[$pageNumber] = $pageNumber; + } + + return $pages; + } + + /** + * Returns the page item cache. + * + * @return array + */ + public function getPageItemCache() + { + $data = array(); + if ($this->_cacheEnabled()) { + foreach (self::$_cache->getIdsMatchingTags(array($this->_getCacheInternalId())) as $id) { + if (preg_match('|'.self::CACHE_TAG_PREFIX."(\d+)_.*|", $id, $page)) { + $data[$page[1]] = self::$_cache->load($this->_getCacheId($page[1])); + } + } + } + return $data; + } + + /** + * Retrieves the view instance. If none registered, attempts to pull f + * rom ViewRenderer. + * + * @return Zend_View_Interface|null + */ + public function getView() + { + if ($this->_view === null) { + /** + * @see Zend_Controller_Action_HelperBroker + */ + require_once 'Zend/Controller/Action/HelperBroker.php'; + + $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); + if ($viewRenderer->view === null) { + $viewRenderer->initView(); + } + $this->_view = $viewRenderer->view; + } + + return $this->_view; + } + + /** + * Sets the view object. + * + * @param Zend_View_Interface $view + * @return Zend_Paginator + */ + public function setView(Zend_View_Interface $view = null) + { + $this->_view = $view; + + return $this; + } + + /** + * Brings the item number in range of the page. + * + * @param integer $itemNumber + * @return integer + */ + public function normalizeItemNumber($itemNumber) + { + $itemNumber = (integer) $itemNumber; + + if ($itemNumber < 1) { + $itemNumber = 1; + } + + if ($itemNumber > $this->getItemCountPerPage()) { + $itemNumber = $this->getItemCountPerPage(); + } + + return $itemNumber; + } + + /** + * Brings the page number in range of the paginator. + * + * @param integer $pageNumber + * @return integer + */ + public function normalizePageNumber($pageNumber) + { + $pageNumber = (integer) $pageNumber; + + if ($pageNumber < 1) { + $pageNumber = 1; + } + + $pageCount = $this->count(); + + if ($pageCount > 0 && $pageNumber > $pageCount) { + $pageNumber = $pageCount; + } + + return $pageNumber; + } + + /** + * Renders the paginator. + * + * @param Zend_View_Interface $view + * @return string + */ + public function render(Zend_View_Interface $view = null) + { + if (null !== $view) { + $this->setView($view); + } + + $view = $this->getView(); + + return $view->paginationControl($this); + } + + /** + * Returns the items of the current page as JSON. + * + * @return string + */ + public function toJson() + { + $currentItems = $this->getCurrentItems(); + + if ($currentItems instanceof Zend_Db_Table_Rowset_Abstract) { + return Zend_Json::encode($currentItems->toArray()); + } else { + return Zend_Json::encode($currentItems); + } + } + + /** + * Tells if there is an active cache object + * and if the cache has not been desabled + * + * @return bool + */ + protected function _cacheEnabled() + { + return ((self::$_cache !== null) && $this->_cacheEnabled); + } + + /** + * Makes an Id for the cache + * Depends on the adapter object and the page number + * + * Used to store item in cache from that Paginator instance + * and that current page + * + * @param int $page + * @return string + */ + protected function _getCacheId($page = null) + { + if ($page === null) { + $page = $this->getCurrentPageNumber(); + } + return self::CACHE_TAG_PREFIX . $page . '_' . $this->_getCacheInternalId(); + } + + /** + * Get the internal cache id + * Depends on the adapter and the item count per page + * + * Used to tag that unique Paginator instance in cache + * + * @return string + */ + protected function _getCacheInternalId() + { + $adapter = $this->getAdapter(); + + if (method_exists($adapter, 'getCacheIdentifier')) { + return md5(serialize(array( + $adapter->getCacheIdentifier(), $this->getItemCountPerPage() + ))); + } else { + return md5(serialize(array( + $adapter, + $this->getItemCountPerPage() + ))); + } + } + + /** + * Calculates the page count. + * + * @return integer + */ + protected function _calculatePageCount() + { + return (integer) ceil($this->getTotalItemCount() / $this->getItemCountPerPage()); + } + + /** + * Creates the page collection. + * + * @param string $scrollingStyle Scrolling style + * @return stdClass + */ + protected function _createPages($scrollingStyle = null) + { + $pageCount = $this->count(); + $currentPageNumber = $this->getCurrentPageNumber(); + + $pages = new stdClass(); + $pages->pageCount = $pageCount; + $pages->itemCountPerPage = $this->getItemCountPerPage(); + $pages->first = 1; + $pages->current = $currentPageNumber; + $pages->last = $pageCount; + + // Previous and next + if ($currentPageNumber - 1 > 0) { + $pages->previous = $currentPageNumber - 1; + } + + if ($currentPageNumber + 1 <= $pageCount) { + $pages->next = $currentPageNumber + 1; + } + + // Pages in range + $scrollingStyle = $this->_loadScrollingStyle($scrollingStyle); + $pages->pagesInRange = $scrollingStyle->getPages($this); + $pages->firstPageInRange = min($pages->pagesInRange); + $pages->lastPageInRange = max($pages->pagesInRange); + + // Item numbers + if ($this->getCurrentItems() !== null) { + $pages->currentItemCount = $this->getCurrentItemCount(); + $pages->itemCountPerPage = $this->getItemCountPerPage(); + $pages->totalItemCount = $this->getTotalItemCount(); + $pages->firstItemNumber = (($currentPageNumber - 1) * $this->getItemCountPerPage()) + 1; + $pages->lastItemNumber = $pages->firstItemNumber + $pages->currentItemCount - 1; + } + + return $pages; + } + + /** + * Loads a scrolling style. + * + * @param string $scrollingStyle + * @return Zend_Paginator_ScrollingStyle_Interface + */ + protected function _loadScrollingStyle($scrollingStyle = null) + { + if ($scrollingStyle === null) { + $scrollingStyle = self::$_defaultScrollingStyle; + } + + switch (strtolower(gettype($scrollingStyle))) { + case 'object': + if (!$scrollingStyle instanceof Zend_Paginator_ScrollingStyle_Interface) { + /** + * @see Zend_View_Exception + */ + require_once 'Zend/View/Exception.php'; + + throw new Zend_View_Exception('Scrolling style must implement ' . + 'Zend_Paginator_ScrollingStyle_Interface'); + } + + return $scrollingStyle; + + case 'string': + $className = self::getScrollingStyleLoader()->load($scrollingStyle); + + return new $className(); + + case 'null': + // Fall through to default case + + default: + /** + * @see Zend_View_Exception + */ + require_once 'Zend/View/Exception.php'; + + throw new Zend_View_Exception('Scrolling style must be a class ' . + 'name or object implementing Zend_Paginator_ScrollingStyle_Interface'); + } + } +} diff --git a/library/Zend/Paginator/Adapter/Array.php b/library/Zend/Paginator/Adapter/Array.php new file mode 100755 index 000000000..14fd2364e --- /dev/null +++ b/library/Zend/Paginator/Adapter/Array.php @@ -0,0 +1,81 @@ +_array = $array; + $this->_count = count($array); + } + + /** + * Returns an array of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage) + { + return array_slice($this->_array, $offset, $itemCountPerPage); + } + + /** + * Returns the total number of rows in the array. + * + * @return integer + */ + public function count() + { + return $this->_count; + } +} diff --git a/library/Zend/Paginator/Adapter/DbSelect.php b/library/Zend/Paginator/Adapter/DbSelect.php new file mode 100755 index 000000000..3a9a41cb7 --- /dev/null +++ b/library/Zend/Paginator/Adapter/DbSelect.php @@ -0,0 +1,290 @@ +_select = $select; + $this->_cacheIdentifier = md5($select->assemble()); + } + + /** + * Returns the cache identifier. + * + * @return string + */ + public function getCacheIdentifier() + { + return $this->_cacheIdentifier; + } + + /** + * Sets the total row count, either directly or through a supplied + * query. Without setting this, {@link getPages()} selects the count + * as a subquery (SELECT COUNT ... FROM (SELECT ...)). While this + * yields an accurate count even with queries containing clauses like + * LIMIT, it can be slow in some circumstances. For example, in MySQL, + * subqueries are generally slow when using the InnoDB storage engine. + * Users are therefore encouraged to profile their queries to find + * the solution that best meets their needs. + * + * @param Zend_Db_Select|integer $totalRowCount Total row count integer + * or query + * @return Zend_Paginator_Adapter_DbSelect $this + * @throws Zend_Paginator_Exception + */ + public function setRowCount($rowCount) + { + if ($rowCount instanceof Zend_Db_Select) { + $columns = $rowCount->getPart(Zend_Db_Select::COLUMNS); + + $countColumnPart = empty($columns[0][2]) + ? $columns[0][1] + : $columns[0][2]; + + if ($countColumnPart instanceof Zend_Db_Expr) { + $countColumnPart = $countColumnPart->__toString(); + } + + $rowCountColumn = $this->_select->getAdapter()->foldCase(self::ROW_COUNT_COLUMN); + + // The select query can contain only one column, which should be the row count column + if (false === strpos($countColumnPart, $rowCountColumn)) { + /** + * @see Zend_Paginator_Exception + */ + require_once 'Zend/Paginator/Exception.php'; + + throw new Zend_Paginator_Exception('Row count column not found'); + } + + $result = $rowCount->query(Zend_Db::FETCH_ASSOC)->fetch(); + + $this->_rowCount = count($result) > 0 ? $result[$rowCountColumn] : 0; + } else if (is_integer($rowCount)) { + $this->_rowCount = $rowCount; + } else { + /** + * @see Zend_Paginator_Exception + */ + require_once 'Zend/Paginator/Exception.php'; + + throw new Zend_Paginator_Exception('Invalid row count'); + } + + return $this; + } + + /** + * Returns an array of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage) + { + $this->_select->limit($itemCountPerPage, $offset); + + return $this->_select->query()->fetchAll(); + } + + /** + * Returns the total number of rows in the result set. + * + * @return integer + */ + public function count() + { + if ($this->_rowCount === null) { + $this->setRowCount( + $this->getCountSelect() + ); + } + + return $this->_rowCount; + } + + /** + * Get the COUNT select object for the provided query + * + * TODO: Have a look at queries that have both GROUP BY and DISTINCT specified. + * In that use-case I'm expecting problems when either GROUP BY or DISTINCT + * has one column. + * + * @return Zend_Db_Select + */ + public function getCountSelect() + { + /** + * We only need to generate a COUNT query once. It will not change for + * this instance. + */ + if ($this->_countSelect !== null) { + return $this->_countSelect; + } + + $rowCount = clone $this->_select; + $rowCount->__toString(); // Workaround for ZF-3719 and related + + $db = $rowCount->getAdapter(); + + $countColumn = $db->quoteIdentifier($db->foldCase(self::ROW_COUNT_COLUMN)); + $countPart = 'COUNT(1) AS '; + $groupPart = null; + $unionParts = $rowCount->getPart(Zend_Db_Select::UNION); + + /** + * If we're dealing with a UNION query, execute the UNION as a subquery + * to the COUNT query. + */ + if (!empty($unionParts)) { + $expression = new Zend_Db_Expr($countPart . $countColumn); + + $rowCount = $db + ->select() + ->bind($rowCount->getBind()) + ->from($rowCount, $expression); + } else { + $columnParts = $rowCount->getPart(Zend_Db_Select::COLUMNS); + $groupParts = $rowCount->getPart(Zend_Db_Select::GROUP); + $havingParts = $rowCount->getPart(Zend_Db_Select::HAVING); + $isDistinct = $rowCount->getPart(Zend_Db_Select::DISTINCT); + + /** + * If there is more than one column AND it's a DISTINCT query, more + * than one group, or if the query has a HAVING clause, then take + * the original query and use it as a subquery os the COUNT query. + */ + if (($isDistinct && ((count($columnParts) == 1 && $columnParts[0][1] == Zend_Db_Select::SQL_WILDCARD) + || count($columnParts) > 1)) || count($groupParts) > 1 || !empty($havingParts)) { + $rowCount->reset(Zend_Db_Select::ORDER); + $rowCount = $db + ->select() + ->bind($rowCount->getBind()) + ->from($rowCount); + } else if ($isDistinct) { + $part = $columnParts[0]; + + if ($part[1] !== Zend_Db_Select::SQL_WILDCARD && !($part[1] instanceof Zend_Db_Expr)) { + $column = $db->quoteIdentifier($part[1], true); + + if (!empty($part[0])) { + $column = $db->quoteIdentifier($part[0], true) . '.' . $column; + } + + $groupPart = $column; + } + } else if (!empty($groupParts)) { + $groupPart = $db->quoteIdentifier($groupParts[0], true); + } + + /** + * If the original query had a GROUP BY or a DISTINCT part and only + * one column was specified, create a COUNT(DISTINCT ) query instead + * of a regular COUNT query. + */ + if (!empty($groupPart)) { + $countPart = 'COUNT(DISTINCT ' . $groupPart . ') AS '; + } + + /** + * Create the COUNT part of the query + */ + $expression = new Zend_Db_Expr($countPart . $countColumn); + + $rowCount->reset(Zend_Db_Select::COLUMNS) + ->reset(Zend_Db_Select::ORDER) + ->reset(Zend_Db_Select::LIMIT_OFFSET) + ->reset(Zend_Db_Select::GROUP) + ->reset(Zend_Db_Select::DISTINCT) + ->reset(Zend_Db_Select::HAVING) + ->columns($expression); + } + + $this->_countSelect = $rowCount; + + return $rowCount; + } +} diff --git a/library/Zend/Paginator/Adapter/DbTableSelect.php b/library/Zend/Paginator/Adapter/DbTableSelect.php new file mode 100755 index 000000000..956f780bc --- /dev/null +++ b/library/Zend/Paginator/Adapter/DbTableSelect.php @@ -0,0 +1,48 @@ +_select->limit($itemCountPerPage, $offset); + + return $this->_select->getTable()->fetchAll($this->_select); + } +} diff --git a/library/Zend/Paginator/Adapter/Interface.php b/library/Zend/Paginator/Adapter/Interface.php new file mode 100755 index 000000000..7ec1ee29a --- /dev/null +++ b/library/Zend/Paginator/Adapter/Interface.php @@ -0,0 +1,40 @@ +_iterator = $iterator; + $this->_count = count($iterator); + } + + /** + * Returns an iterator of items for a page, or an empty array. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return LimitIterator|array + */ + public function getItems($offset, $itemCountPerPage) + { + if ($this->_count == 0) { + return array(); + } + + // @link http://bugs.php.net/bug.php?id=49906 | ZF-8084 + // return new LimitIterator($this->_iterator, $offset, $itemCountPerPage); + return new Zend_Paginator_SerializableLimitIterator($this->_iterator, $offset, $itemCountPerPage); + } + + /** + * Returns the total number of rows in the collection. + * + * @return integer + */ + public function count() + { + return $this->_count; + } +} diff --git a/library/Zend/Paginator/Adapter/Null.php b/library/Zend/Paginator/Adapter/Null.php new file mode 100755 index 000000000..12ed9f2a9 --- /dev/null +++ b/library/Zend/Paginator/Adapter/Null.php @@ -0,0 +1,80 @@ +_count = $count; + } + + /** + * Returns an array of items for a page. + * + * @param integer $offset Page offset + * @param integer $itemCountPerPage Number of items per page + * @return array + */ + public function getItems($offset, $itemCountPerPage) + { + if ($offset >= $this->count()) { + return array(); + } + + $remainItemCount = $this->count() - $offset; + $currentItemCount = $remainItemCount > $itemCountPerPage ? $itemCountPerPage : $remainItemCount; + + return array_fill(0, $currentItemCount, null); + } + + /** + * Returns the total number of rows in the array. + * + * @return integer + */ + public function count() + { + return $this->_count; + } +} diff --git a/library/Zend/Paginator/AdapterAggregate.php b/library/Zend/Paginator/AdapterAggregate.php new file mode 100755 index 000000000..fe209d4ca --- /dev/null +++ b/library/Zend/Paginator/AdapterAggregate.php @@ -0,0 +1,40 @@ +getPagesInRange(1, $paginator->count()); + } +} diff --git a/library/Zend/Paginator/ScrollingStyle/Elastic.php b/library/Zend/Paginator/ScrollingStyle/Elastic.php new file mode 100755 index 000000000..35cf9964e --- /dev/null +++ b/library/Zend/Paginator/ScrollingStyle/Elastic.php @@ -0,0 +1,63 @@ +getPageRange(); + $pageNumber = $paginator->getCurrentPageNumber(); + + $originalPageRange = $pageRange; + $pageRange = $pageRange * 2 - 1; + + if ($originalPageRange + $pageNumber - 1 < $pageRange) { + $pageRange = $originalPageRange + $pageNumber - 1; + } else if ($originalPageRange + $pageNumber - 1 > count($paginator)) { + $pageRange = $originalPageRange + count($paginator) - $pageNumber; + } + + return parent::getPages($paginator, $pageRange); + } +} diff --git a/library/Zend/Paginator/ScrollingStyle/Interface.php b/library/Zend/Paginator/ScrollingStyle/Interface.php new file mode 100755 index 000000000..7871d8925 --- /dev/null +++ b/library/Zend/Paginator/ScrollingStyle/Interface.php @@ -0,0 +1,38 @@ +getPageRange(); + $pageNumber = $paginator->getCurrentPageNumber(); + + $delta = $pageNumber % $pageRange; + + if ($delta == 0) { + $delta = $pageRange; + } + + $offset = $pageNumber - $delta; + $lowerBound = $offset + 1; + $upperBound = $offset + $pageRange; + + return $paginator->getPagesInRange($lowerBound, $upperBound); + } +} diff --git a/library/Zend/Paginator/ScrollingStyle/Sliding.php b/library/Zend/Paginator/ScrollingStyle/Sliding.php new file mode 100755 index 000000000..73c26cb1e --- /dev/null +++ b/library/Zend/Paginator/ScrollingStyle/Sliding.php @@ -0,0 +1,78 @@ +getPageRange(); + } + + $pageNumber = $paginator->getCurrentPageNumber(); + $pageCount = count($paginator); + + if ($pageRange > $pageCount) { + $pageRange = $pageCount; + } + + $delta = ceil($pageRange / 2); + + if ($pageNumber - $delta > $pageCount - $pageRange) { + $lowerBound = $pageCount - $pageRange + 1; + $upperBound = $pageCount; + } else { + if ($pageNumber - $delta < 0) { + $delta = $pageNumber; + } + + $offset = $pageNumber - $delta; + $lowerBound = $offset + 1; + $upperBound = $offset + $pageRange; + } + + return $paginator->getPagesInRange($lowerBound, $upperBound); + } +} diff --git a/library/Zend/Paginator/SerializableLimitIterator.php b/library/Zend/Paginator/SerializableLimitIterator.php new file mode 100755 index 000000000..72c1399c9 --- /dev/null +++ b/library/Zend/Paginator/SerializableLimitIterator.php @@ -0,0 +1,142 @@ +_offset = $offset; + $this->_count = $count; + } + + /** + * @return string representation of the instance + */ + public function serialize() + { + return serialize(array( + 'it' => $this->getInnerIterator(), + 'offset' => $this->_offset, + 'count' => $this->_count, + 'pos' => $this->getPosition(), + )); + } + + /** + * @param string $data representation of the instance + */ + public function unserialize($data) + { + $dataArr = unserialize($data); + $this->__construct($dataArr['it'], $dataArr['offset'], $dataArr['count']); + $this->seek($dataArr['pos']+$dataArr['offset']); + } + + /** + * Returns value of the Iterator + * + * @param int $offset + * @return mixed + */ + public function offsetGet($offset) + { + $currentOffset = $this->key(); + $this->seek($offset); + $current = $this->current(); + $this->seek($currentOffset); + return $current; + } + + /** + * Does nothing + * Required by the ArrayAccess implementation + * + * @param int $offset + * @param mixed $value + */ + public function offsetSet($offset, $value) + { + } + + /** + * Determine if a value of Iterator is set and is not NULL + * + * @param int $offset + */ + public function offsetExists($offset) + { + if ($offset > 0 && $offset < $this->_count) { + try { + $currentOffset = $this->key(); + $this->seek($offset); + $current = $this->current(); + $this->seek($currentOffset); + return null !== $current; + } catch (OutOfBoundsException $e) { + // reset position in case of exception is assigned null + $this->rewind(); + $this->seek($currentOffset); + return false; + } + } + return false; + } + + /** + * Does nothing + * Required by the ArrayAccess implementation + * + * @param int $offset + */ + public function offsetUnset($offset) + { + } +} diff --git a/library/Zend/Pdf.php b/library/Zend/Pdf.php new file mode 100755 index 000000000..c700c8db8 --- /dev/null +++ b/library/Zend/Pdf.php @@ -0,0 +1,1635 @@ +render($updateOnly, $file); + + fclose($file); + } + + /** + * Creates or loads PDF document. + * + * If $source is null, then it creates a new document. + * + * If $source is a string and $load is false, then it loads document + * from a binary string. + * + * If $source is a string and $load is true, then it loads document + * from a file. + * $revision used to roll back document to specified version + * (0 - current version, 1 - previous version, 2 - ...) + * + * @param string $source - PDF file to load + * @param integer $revision + * @param bool $load + * @throws Zend_Pdf_Exception + * @return Zend_Pdf + */ + public function __construct($source = null, $revision = null, $load = false) + { + require_once 'Zend/Pdf/ElementFactory.php'; + $this->_objFactory = Zend_Pdf_ElementFactory::createFactory(1); + + if ($source !== null) { + require_once 'Zend/Pdf/Parser.php'; + $this->_parser = new Zend_Pdf_Parser($source, $this->_objFactory, $load); + $this->_pdfHeaderVersion = $this->_parser->getPDFVersion(); + $this->_trailer = $this->_parser->getTrailer(); + if ($this->_trailer->Encrypt !== null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Encrypted document modification is not supported'); + } + if ($revision !== null) { + $this->rollback($revision); + } else { + $this->_loadPages($this->_trailer->Root->Pages); + } + + $this->_loadNamedDestinations($this->_trailer->Root, $this->_parser->getPDFVersion()); + $this->_loadOutlines($this->_trailer->Root); + $this->_loadJavaScript($this->_trailer->Root); + $this->_loadFormFields($this->_trailer->Root); + + if ($this->_trailer->Info !== null) { + $this->properties = $this->_trailer->Info->toPhp(); + + if (isset($this->properties['Trapped'])) { + switch ($this->properties['Trapped']) { + case 'True': + $this->properties['Trapped'] = true; + break; + + case 'False': + $this->properties['Trapped'] = false; + break; + + case 'Unknown': + $this->properties['Trapped'] = null; + break; + + default: + // Wrong property value + // Do nothing + break; + } + } + + $this->_originalProperties = $this->properties; + } + + $this->_isNewDocument = false; + } else { + $this->_pdfHeaderVersion = Zend_Pdf::PDF_VERSION; + + $trailerDictionary = new Zend_Pdf_Element_Dictionary(); + + /** + * Document id + */ + $docId = md5(uniqid(rand(), true)); // 32 byte (128 bit) identifier + $docIdLow = substr($docId, 0, 16); // first 16 bytes + $docIdHigh = substr($docId, 16, 16); // second 16 bytes + + $trailerDictionary->ID = new Zend_Pdf_Element_Array(); + $trailerDictionary->ID->items[] = new Zend_Pdf_Element_String_Binary($docIdLow); + $trailerDictionary->ID->items[] = new Zend_Pdf_Element_String_Binary($docIdHigh); + + $trailerDictionary->Size = new Zend_Pdf_Element_Numeric(0); + + require_once 'Zend/Pdf/Trailer/Generator.php'; + $this->_trailer = new Zend_Pdf_Trailer_Generator($trailerDictionary); + + /** + * Document catalog indirect object. + */ + $docCatalog = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + $docCatalog->Type = new Zend_Pdf_Element_Name('Catalog'); + $docCatalog->Version = new Zend_Pdf_Element_Name(Zend_Pdf::PDF_VERSION); + $this->_trailer->Root = $docCatalog; + + /** + * Pages container + */ + $docPages = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + $docPages->Type = new Zend_Pdf_Element_Name('Pages'); + $docPages->Kids = new Zend_Pdf_Element_Array(); + $docPages->Count = new Zend_Pdf_Element_Numeric(0); + $docCatalog->Pages = $docPages; + } + } + + /** + * Retrive number of revisions. + * + * @return integer + */ + public function revisions() + { + $revisions = 1; + $currentTrailer = $this->_trailer; + + while ($currentTrailer->getPrev() !== null && $currentTrailer->getPrev()->Root !== null ) { + $revisions++; + $currentTrailer = $currentTrailer->getPrev(); + } + + return $revisions++; + } + + /** + * Rollback document $steps number of revisions. + * This method must be invoked before any changes, applied to the document. + * Otherwise behavior is undefined. + * + * @param integer $steps + */ + public function rollback($steps) + { + for ($count = 0; $count < $steps; $count++) { + if ($this->_trailer->getPrev() !== null && $this->_trailer->getPrev()->Root !== null) { + $this->_trailer = $this->_trailer->getPrev(); + } else { + break; + } + } + $this->_objFactory->setObjectCount($this->_trailer->Size->value); + + // Mark content as modified to force new trailer generation at render time + $this->_trailer->Root->touch(); + + $this->pages = array(); + $this->_loadPages($this->_trailer->Root->Pages); + } + + /** + * Load pages recursively + * + * @param Zend_Pdf_Element_Reference $pages + * @param array|null $attributes + * @throws Zend_Pdf_Exception + */ + protected function _loadPages(Zend_Pdf_Element_Reference $pages, $attributes = array()) + { + if ($pages->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong argument'); + } + + foreach ($pages->getKeys() as $property) { + if (in_array($property, self::$_inheritableAttributes)) { + $attributes[$property] = $pages->$property; + $pages->$property = null; + } + } + + + foreach ($pages->Kids->items as $child) { + if ($child->Type->value == 'Pages') { + $this->_loadPages($child, $attributes); + } else if ($child->Type->value == 'Page') { + foreach (self::$_inheritableAttributes as $property) { + if ($child->$property === null && array_key_exists($property, $attributes)) { + /** + * Important note. + * If any attribute or dependant object is an indirect object, then it's still + * shared between pages. + */ + if ($attributes[$property] instanceof Zend_Pdf_Element_Object || + $attributes[$property] instanceof Zend_Pdf_Element_Reference) { + $child->$property = $attributes[$property]; + } else { + $child->$property = $this->_objFactory->newObject($attributes[$property]); + } + } + } + + require_once 'Zend/Pdf/Page.php'; + $this->pages[] = new Zend_Pdf_Page($child, $this->_objFactory); + } + } + } + + /** + * Load named destinations recursively + * + * @param Zend_Pdf_Element_Reference $root Document catalog entry + * @param string $pdfHeaderVersion + * @throws Zend_Pdf_Exception + */ + protected function _loadNamedDestinations(Zend_Pdf_Element_Reference $root, $pdfHeaderVersion) + { + if ($root->Version !== null && version_compare($root->Version->value, $pdfHeaderVersion, '>')) { + $versionIs_1_2_plus = version_compare($root->Version->value, '1.1', '>'); + } else { + $versionIs_1_2_plus = version_compare($pdfHeaderVersion, '1.1', '>'); + } + + if ($versionIs_1_2_plus) { + // PDF version is 1.2+ + // Look for Destinations structure at Name dictionary + if ($root->Names !== null && $root->Names->Dests !== null) { + require_once 'Zend/Pdf/NameTree.php'; + require_once 'Zend/Pdf/Target.php'; + foreach (new Zend_Pdf_NameTree($root->Names->Dests) as $name => $destination) { + $this->_namedTargets[$name] = Zend_Pdf_Target::load($destination); + } + } + } else { + // PDF version is 1.1 (or earlier) + // Look for Destinations sructure at Dest entry of document catalog + if ($root->Dests !== null) { + if ($root->Dests->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Document catalog Dests entry must be a dictionary.'); + } + + require_once 'Zend/Pdf/Target.php'; + foreach ($root->Dests->getKeys() as $destKey) { + $this->_namedTargets[$destKey] = Zend_Pdf_Target::load($root->Dests->$destKey); + } + } + } + } + + /** + * Load outlines recursively + * + * @param Zend_Pdf_Element_Reference $root Document catalog entry + * @throws Zend_Pdf_Exception + */ + protected function _loadOutlines(Zend_Pdf_Element_Reference $root) + { + if ($root->Outlines === null) { + return; + } + + if ($root->Outlines->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Document catalog Outlines entry must be a dictionary.'); + } + + if ($root->Outlines->Type !== null && $root->Outlines->Type->value != 'Outlines') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outlines Type entry must be an \'Outlines\' string.'); + } + + if ($root->Outlines->First === null) { + return; + } + + $outlineDictionary = $root->Outlines->First; + $processedDictionaries = new SplObjectStorage(); + while ($outlineDictionary !== null && !$processedDictionaries->contains($outlineDictionary)) { + $processedDictionaries->attach($outlineDictionary); + + require_once 'Zend/Pdf/Outline/Loaded.php'; + $this->outlines[] = new Zend_Pdf_Outline_Loaded($outlineDictionary); + + $outlineDictionary = $outlineDictionary->Next; + } + + $this->_originalOutlines = $this->outlines; + + if ($root->Outlines->Count !== null) { + $this->_originalOpenOutlinesCount = $root->Outlines->Count->value; + } + } + + /** + * Load JavaScript + * + * Populates the _javaScript string, for later use of getJavaScript method. + * + * @param Zend_Pdf_Element_Reference $root Document catalog entry + */ + protected function _loadJavaScript(Zend_Pdf_Element_Reference $root) + { + if (null === $root->Names || null === $root->Names->JavaScript + || null === $root->Names->JavaScript->Names + ) { + return; + } + + foreach ($root->Names->JavaScript->Names->items as $item) { + if ($item instanceof Zend_Pdf_Element_Reference + && $item->S->value === 'JavaScript' + ) { + $this->_javaScript[] = $item->JS->value; + } + } + } + + /** + * Load form fields + * + * Populates the _formFields array, for later lookup of fields by name + * + * @param Zend_Pdf_Element_Reference $root Document catalog entry + */ + protected function _loadFormFields(Zend_Pdf_Element_Reference $root) + { + if ($root->AcroForm === null || $root->AcroForm->Fields === null) { + return; + } + + foreach ($root->AcroForm->Fields->items as $field) { + /* We only support fields that are textfields and have a name */ + if ($field->FT && $field->FT->value == 'Tx' && $field->T + && $field->T !== null + ) { + $this->_formFields[$field->T->value] = $field; + } + } + + if (!$root->AcroForm->NeedAppearances + || !$root->AcroForm->NeedAppearances->value + ) { + /* Ask the .pdf viewer to generate its own appearance data, so we do not have to */ + $root->AcroForm->add( + new Zend_Pdf_Element_Name('NeedAppearances'), + new Zend_Pdf_Element_Boolean(true) + ); + $root->AcroForm->touch(); + } + } + + /** + * Retrieves a list with the names of the AcroForm textfields in the PDF + * + * @return array of strings + */ + public function getTextFieldNames() + { + return array_keys($this->_formFields); + } + + /** + * Sets the value of an AcroForm text field + * + * @param string $name Name of textfield + * @param string $value Value + * @throws Zend_Pdf_Exception if the textfield does not exist in the pdf + */ + public function setTextField($name, $value) + { + if (!isset($this->_formFields[$name])) { + throw new Zend_Pdf_Exception( + "Field '$name' does not exist or is not a textfield" + ); + } + + /** @var Zend_Pdf_Element $field */ + $field = $this->_formFields[$name]; + $field->add( + new Zend_Pdf_Element_Name('V'), new Zend_Pdf_Element_String($value) + ); + $field->touch(); + } + + /** + * Sets the properties for an AcroForm text field + * + * @param string $name + * @param mixed $bitmask + * @throws Zend_Pdf_Exception + */ + public function setTextFieldProperties($name, $bitmask) + { + if (!isset($this->_formFields[$name])) { + throw new Zend_Pdf_Exception( + "Field '$name' does not exist or is not a textfield" + ); + } + + $field = $this->_formFields[$name]; + $field->add( + new Zend_Pdf_Element_Name('Ff'), + new Zend_Pdf_Element_Numeric($bitmask) + ); + $field->touch(); + } + + /** + * Marks an AcroForm text field as read only + * + * @param string $name + */ + public function markTextFieldAsReadOnly($name) + { + $this->setTextFieldProperties($name, self::PDF_FORM_FIELD_READONLY); + } + + /** + * Orginize pages to tha pages tree structure. + * + * @todo atomatically attach page to the document, if it's not done yet. + * @todo check, that page is attached to the current document + * + * @todo Dump pages as a balanced tree instead of a plain set. + */ + protected function _dumpPages() + { + $root = $this->_trailer->Root; + $pagesContainer = $root->Pages; + + $pagesContainer->touch(); + $pagesContainer->Kids->items = array(); + + foreach ($this->pages as $page ) { + $page->render($this->_objFactory); + + $pageDictionary = $page->getPageDictionary(); + $pageDictionary->touch(); + $pageDictionary->Parent = $pagesContainer; + + $pagesContainer->Kids->items[] = $pageDictionary; + } + + $this->_refreshPagesHash(); + + $pagesContainer->Count->touch(); + $pagesContainer->Count->value = count($this->pages); + + + // Refresh named destinations list + foreach ($this->_namedTargets as $name => $namedTarget) { + if ($namedTarget instanceof Zend_Pdf_Destination_Explicit) { + // Named target is an explicit destination + if ($this->resolveDestination($namedTarget, false) === null) { + unset($this->_namedTargets[$name]); + } + } else if ($namedTarget instanceof Zend_Pdf_Action) { + // Named target is an action + if ($this->_cleanUpAction($namedTarget, false) === null) { + // Action is a GoTo action with an unresolved destination + unset($this->_namedTargets[$name]); + } + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong type of named targed (\'' . get_class($namedTarget) . '\').'); + } + } + + // Refresh outlines + require_once 'Zend/Pdf/RecursivelyIteratableObjectsContainer.php'; + $iterator = new RecursiveIteratorIterator(new Zend_Pdf_RecursivelyIteratableObjectsContainer($this->outlines), RecursiveIteratorIterator::SELF_FIRST); + foreach ($iterator as $outline) { + $target = $outline->getTarget(); + + if ($target !== null) { + if ($target instanceof Zend_Pdf_Destination) { + // Outline target is a destination + if ($this->resolveDestination($target, false) === null) { + $outline->setTarget(null); + } + } else if ($target instanceof Zend_Pdf_Action) { + // Outline target is an action + if ($this->_cleanUpAction($target, false) === null) { + // Action is a GoTo action with an unresolved destination + $outline->setTarget(null); + } + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong outline target.'); + } + } + } + + $openAction = $this->getOpenAction(); + if ($openAction !== null) { + if ($openAction instanceof Zend_Pdf_Action) { + // OpenAction is an action + if ($this->_cleanUpAction($openAction, false) === null) { + // Action is a GoTo action with an unresolved destination + $this->setOpenAction(null); + } + } else if ($openAction instanceof Zend_Pdf_Destination) { + // OpenAction target is a destination + if ($this->resolveDestination($openAction, false) === null) { + $this->setOpenAction(null); + } + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('OpenAction has to be either PDF Action or Destination.'); + } + } + } + + /** + * Dump named destinations + * + * @todo Create a balanced tree instead of plain structure. + */ + protected function _dumpNamedDestinations() + { + ksort($this->_namedTargets, SORT_STRING); + + $destArrayItems = array(); + foreach ($this->_namedTargets as $name => $destination) { + $destArrayItems[] = new Zend_Pdf_Element_String($name); + + if ($destination instanceof Zend_Pdf_Target) { + $destArrayItems[] = $destination->getResource(); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('PDF named destinations must be a Zend_Pdf_Target object.'); + } + } + $destArray = $this->_objFactory->newObject(new Zend_Pdf_Element_Array($destArrayItems)); + + $DestTree = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + $DestTree->Names = $destArray; + + $root = $this->_trailer->Root; + + if ($root->Names === null) { + $root->touch(); + $root->Names = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + } else { + $root->Names->touch(); + } + $root->Names->Dests = $DestTree; + } + + /** + * Dump outlines recursively + */ + protected function _dumpOutlines() + { + $root = $this->_trailer->Root; + + if ($root->Outlines === null) { + if (count($this->outlines) == 0) { + return; + } else { + $root->Outlines = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + $root->Outlines->Type = new Zend_Pdf_Element_Name('Outlines'); + $updateOutlinesNavigation = true; + } + } else { + $updateOutlinesNavigation = false; + if (count($this->_originalOutlines) != count($this->outlines)) { + // If original and current outlines arrays have different size then outlines list was updated + $updateOutlinesNavigation = true; + } else if ( !(array_keys($this->_originalOutlines) === array_keys($this->outlines)) ) { + // If original and current outlines arrays have different keys (with a glance to an order) then outlines list was updated + $updateOutlinesNavigation = true; + } else { + foreach ($this->outlines as $key => $outline) { + if ($this->_originalOutlines[$key] !== $outline) { + $updateOutlinesNavigation = true; + } + } + } + } + + $lastOutline = null; + $openOutlinesCount = 0; + if ($updateOutlinesNavigation) { + $root->Outlines->touch(); + $root->Outlines->First = null; + + foreach ($this->outlines as $outline) { + if ($lastOutline === null) { + // First pass. Update Outlines dictionary First entry using corresponding value + $lastOutline = $outline->dumpOutline($this->_objFactory, $updateOutlinesNavigation, $root->Outlines); + $root->Outlines->First = $lastOutline; + } else { + // Update previous outline dictionary Next entry (Prev is updated within dumpOutline() method) + $currentOutlineDictionary = $outline->dumpOutline($this->_objFactory, $updateOutlinesNavigation, $root->Outlines, $lastOutline); + $lastOutline->Next = $currentOutlineDictionary; + $lastOutline = $currentOutlineDictionary; + } + $openOutlinesCount += $outline->openOutlinesCount(); + } + + $root->Outlines->Last = $lastOutline; + } else { + foreach ($this->outlines as $outline) { + $lastOutline = $outline->dumpOutline($this->_objFactory, $updateOutlinesNavigation, $root->Outlines, $lastOutline); + $openOutlinesCount += $outline->openOutlinesCount(); + } + } + + if ($openOutlinesCount != $this->_originalOpenOutlinesCount) { + $root->Outlines->touch; + $root->Outlines->Count = new Zend_Pdf_Element_Numeric($openOutlinesCount); + } + } + + /** + * Create page object, attached to the PDF document. + * Method signatures: + * + * 1. Create new page with a specified pagesize. + * If $factory is null then it will be created and page must be attached to the document to be + * included into output. + * --------------------------------------------------------- + * new Zend_Pdf_Page(string $pagesize); + * --------------------------------------------------------- + * + * 2. Create new page with a specified pagesize (in default user space units). + * If $factory is null then it will be created and page must be attached to the document to be + * included into output. + * --------------------------------------------------------- + * new Zend_Pdf_Page(numeric $width, numeric $height); + * --------------------------------------------------------- + * + * @param mixed $param1 + * @param mixed $param2 + * @return Zend_Pdf_Page + */ + public function newPage($param1, $param2 = null) + { + require_once 'Zend/Pdf/Page.php'; + if ($param2 === null) { + return new Zend_Pdf_Page($param1, $this->_objFactory); + } else { + return new Zend_Pdf_Page($param1, $param2, $this->_objFactory); + } + } + + /** + * Return the document-level Metadata + * or null Metadata stream is not presented + * + * @return string + */ + public function getMetadata() + { + if ($this->_trailer->Root->Metadata !== null) { + return $this->_trailer->Root->Metadata->value; + } else { + return null; + } + } + + /** + * Sets the document-level Metadata (mast be valid XMP document) + * + * @param string $metadata + */ + public function setMetadata($metadata) + { + $metadataObject = $this->_objFactory->newStreamObject($metadata); + $metadataObject->dictionary->Type = new Zend_Pdf_Element_Name('Metadata'); + $metadataObject->dictionary->Subtype = new Zend_Pdf_Element_Name('XML'); + + $this->_trailer->Root->Metadata = $metadataObject; + $this->_trailer->Root->touch(); + } + + /** + * Return the document-level JavaScript + * or null if there is no JavaScript for this document + * + * @return string + */ + public function getJavaScript() + { + return $this->_javaScript; + } + + /** + * Get open Action + * Returns Zend_Pdf_Target (Zend_Pdf_Destination or Zend_Pdf_Action object) + * + * @return Zend_Pdf_Target + */ + public function getOpenAction() + { + if ($this->_trailer->Root->OpenAction !== null) { + require_once 'Zend/Pdf/Target.php'; + return Zend_Pdf_Target::load($this->_trailer->Root->OpenAction); + } else { + return null; + } + } + + /** + * Set open Action which is actually Zend_Pdf_Destination or Zend_Pdf_Action object + * + * @param Zend_Pdf_Target $openAction + * @returns Zend_Pdf + */ + public function setOpenAction(Zend_Pdf_Target $openAction = null) + { + $root = $this->_trailer->Root; + $root->touch(); + + if ($openAction === null) { + $root->OpenAction = null; + } else { + $root->OpenAction = $openAction->getResource(); + + if ($openAction instanceof Zend_Pdf_Action) { + $openAction->dumpAction($this->_objFactory); + } + } + + return $this; + } + + /** + * Return an associative array containing all the named destinations (or GoTo actions) in the PDF. + * Named targets can be used to reference from outside + * the PDF, ex: 'http://www.something.com/mydocument.pdf#MyAction' + * + * @return array + */ + public function getNamedDestinations() + { + return $this->_namedTargets; + } + + /** + * Return specified named destination + * + * @param string $name + * @return Zend_Pdf_Destination_Explicit|Zend_Pdf_Action_GoTo + */ + public function getNamedDestination($name) + { + if (isset($this->_namedTargets[$name])) { + return $this->_namedTargets[$name]; + } else { + return null; + } + } + + /** + * Set specified named destination + * + * @param string $name + * @param Zend_Pdf_Destination_Explicit|Zend_Pdf_Action_GoTo $destination + * @throws Zend_Pdf_Exception + */ + public function setNamedDestination($name, $destination = null) + { + if ($destination !== null && + !$destination instanceof Zend_Pdf_Action_GoTo && + !$destination instanceof Zend_Pdf_Destination_Explicit) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('PDF named destination must refer an explicit destination or a GoTo PDF action.'); + } + + if ($destination !== null) { + $this->_namedTargets[$name] = $destination; + } else { + unset($this->_namedTargets[$name]); + } + } + + /** + * Pages collection hash: + * => Zend_Pdf_Page + * + * @var SplObjectStorage + */ + protected $_pageReferences = null; + + /** + * Pages collection hash: + * => Zend_Pdf_Page + * + * @var array + */ + protected $_pageNumbers = null; + + /** + * Refresh page collection hashes + * + * @return Zend_Pdf + */ + protected function _refreshPagesHash() + { + $this->_pageReferences = array(); + $this->_pageNumbers = array(); + $count = 1; + foreach ($this->pages as $page) { + $pageDictionaryHashId = spl_object_hash($page->getPageDictionary()->getObject()); + $this->_pageReferences[$pageDictionaryHashId] = $page; + $this->_pageNumbers[$count++] = $page; + } + + return $this; + } + + /** + * Resolve destination. + * + * Returns Zend_Pdf_Page page object or null if destination is not found within PDF document. + * + * @param Zend_Pdf_Destination $destination Destination to resolve + * @param bool $refreshPageCollectionHashes Refresh page collection hashes before processing + * @return Zend_Pdf_Page|null + * @throws Zend_Pdf_Exception + */ + public function resolveDestination(Zend_Pdf_Destination $destination, $refreshPageCollectionHashes = true) + { + if ($this->_pageReferences === null || $refreshPageCollectionHashes) { + $this->_refreshPagesHash(); + } + + if ($destination instanceof Zend_Pdf_Destination_Named) { + if (!isset($this->_namedTargets[$destination->getName()])) { + return null; + } + $destination = $this->getNamedDestination($destination->getName()); + + if ($destination instanceof Zend_Pdf_Action) { + if (!$destination instanceof Zend_Pdf_Action_GoTo) { + return null; + } + $destination = $destination->getDestination(); + } + + if (!$destination instanceof Zend_Pdf_Destination_Explicit) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Named destination target has to be an explicit destination.'); + } + } + + // Named target is an explicit destination + $pageElement = $destination->getResource()->items[0]; + + if ($pageElement->getType() == Zend_Pdf_Element::TYPE_NUMERIC) { + // Page reference is a PDF number + if (!isset($this->_pageNumbers[$pageElement->value])) { + return null; + } + + return $this->_pageNumbers[$pageElement->value]; + } + + // Page reference is a PDF page dictionary reference + $pageDictionaryHashId = spl_object_hash($pageElement->getObject()); + if (!isset($this->_pageReferences[$pageDictionaryHashId])) { + return null; + } + return $this->_pageReferences[$pageDictionaryHashId]; + } + + /** + * Walk through action and its chained actions tree and remove nodes + * if they are GoTo actions with an unresolved target. + * + * Returns null if root node is deleted or updated action overwise. + * + * @todo Give appropriate name and make method public + * + * @param Zend_Pdf_Action $action + * @param bool $refreshPageCollectionHashes Refresh page collection hashes before processing + * @return Zend_Pdf_Action|null + */ + protected function _cleanUpAction(Zend_Pdf_Action $action, $refreshPageCollectionHashes = true) + { + if ($this->_pageReferences === null || $refreshPageCollectionHashes) { + $this->_refreshPagesHash(); + } + + // Named target is an action + if ($action instanceof Zend_Pdf_Action_GoTo && + $this->resolveDestination($action->getDestination(), false) === null) { + // Action itself is a GoTo action with an unresolved destination + return null; + } + + // Walk through child actions + $iterator = new RecursiveIteratorIterator($action, RecursiveIteratorIterator::SELF_FIRST); + + $actionsToClean = array(); + $deletionCandidateKeys = array(); + foreach ($iterator as $chainedAction) { + if ($chainedAction instanceof Zend_Pdf_Action_GoTo && + $this->resolveDestination($chainedAction->getDestination(), false) === null) { + // Some child action is a GoTo action with an unresolved destination + // Mark it as a candidate for deletion + $actionsToClean[] = $iterator->getSubIterator(); + $deletionCandidateKeys[] = $iterator->getSubIterator()->key(); + } + } + foreach ($actionsToClean as $id => $action) { + unset($action->next[$deletionCandidateKeys[$id]]); + } + + return $action; + } + + /** + * Extract fonts attached to the document + * + * returns array of Zend_Pdf_Resource_Font_Extracted objects + * + * @return array + * @throws Zend_Pdf_Exception + */ + public function extractFonts() + { + $fontResourcesUnique = array(); + foreach ($this->pages as $page) { + $pageResources = $page->extractResources(); + + if ($pageResources->Font === null) { + // Page doesn't contain have any font reference + continue; + } + + $fontResources = $pageResources->Font; + + foreach ($fontResources->getKeys() as $fontResourceName) { + $fontDictionary = $fontResources->$fontResourceName; + + if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference || + $fontDictionary instanceof Zend_Pdf_Element_Object) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Font dictionary has to be an indirect object or object reference.'); + } + + $fontResourcesUnique[spl_object_hash($fontDictionary->getObject())] = $fontDictionary; + } + } + + $fonts = array(); + require_once 'Zend/Pdf/Exception.php'; + foreach ($fontResourcesUnique as $resourceId => $fontDictionary) { + try { + // Try to extract font + require_once 'Zend/Pdf/Resource/Font/Extracted.php'; + $extractedFont = new Zend_Pdf_Resource_Font_Extracted($fontDictionary); + + $fonts[$resourceId] = $extractedFont; + } catch (Zend_Pdf_Exception $e) { + if ($e->getMessage() != 'Unsupported font type.') { + throw $e; + } + } + } + + return $fonts; + } + + /** + * Extract font attached to the page by specific font name + * + * $fontName should be specified in UTF-8 encoding + * + * @param string $fontName + * @return Zend_Pdf_Resource_Font_Extracted|null + * @throws Zend_Pdf_Exception + */ + public function extractFont($fontName) + { + $fontResourcesUnique = array(); + require_once 'Zend/Pdf/Exception.php'; + foreach ($this->pages as $page) { + $pageResources = $page->extractResources(); + + if ($pageResources->Font === null) { + // Page doesn't contain have any font reference + continue; + } + + $fontResources = $pageResources->Font; + + foreach ($fontResources->getKeys() as $fontResourceName) { + $fontDictionary = $fontResources->$fontResourceName; + + if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference || + $fontDictionary instanceof Zend_Pdf_Element_Object) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Font dictionary has to be an indirect object or object reference.'); + } + + $resourceId = spl_object_hash($fontDictionary->getObject()); + if (isset($fontResourcesUnique[$resourceId])) { + continue; + } else { + // Mark resource as processed + $fontResourcesUnique[$resourceId] = 1; + } + + if ($fontDictionary->BaseFont->value != $fontName) { + continue; + } + + try { + // Try to extract font + require_once 'Zend/Pdf/Resource/Font/Extracted.php'; + return new Zend_Pdf_Resource_Font_Extracted($fontDictionary); + } catch (Zend_Pdf_Exception $e) { + if ($e->getMessage() != 'Unsupported font type.') { + throw $e; + } + // Continue searhing + } + } + } + + return null; + } + + /** + * Render the completed PDF to a string. + * If $newSegmentOnly is true and it's not a new document, + * then only appended part of PDF is returned. + * + * @param boolean $newSegmentOnly + * @param resource $outputStream + * @return string + * @throws Zend_Pdf_Exception + */ + public function render($newSegmentOnly = false, $outputStream = null) + { + if ($this->_isNewDocument) { + // Drop full document first time even $newSegmentOnly is set to true + $newSegmentOnly = false; + $this->_isNewDocument = false; + } + + // Save document properties if necessary + if ($this->properties != $this->_originalProperties) { + $docInfo = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + + foreach ($this->properties as $key => $value) { + switch ($key) { + case 'Trapped': + switch ($value) { + case true: + $docInfo->$key = new Zend_Pdf_Element_Name('True'); + break; + + case false: + $docInfo->$key = new Zend_Pdf_Element_Name('False'); + break; + + case null: + $docInfo->$key = new Zend_Pdf_Element_Name('Unknown'); + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong Trapped document property vale: \'' . $value . '\'. Only true, false and null values are allowed.'); + break; + } + + case 'CreationDate': + // break intentionally omitted + case 'ModDate': + $docInfo->$key = new Zend_Pdf_Element_String((string)$value); + break; + + case 'Title': + // break intentionally omitted + case 'Author': + // break intentionally omitted + case 'Subject': + // break intentionally omitted + case 'Keywords': + // break intentionally omitted + case 'Creator': + // break intentionally omitted + case 'Producer': + if (extension_loaded('mbstring') === true) { + $detected = mb_detect_encoding($value); + if ($detected !== 'ASCII') { + $value = "\xfe\xff" . mb_convert_encoding($value, 'UTF-16', $detected); + } + } + $docInfo->$key = new Zend_Pdf_Element_String((string)$value); + break; + + default: + // Set property using PDF type based on PHP type + $docInfo->$key = Zend_Pdf_Element::phpToPdf($value); + break; + } + } + + $this->_trailer->Info = $docInfo; + } + + $this->_dumpPages(); + $this->_dumpNamedDestinations(); + $this->_dumpOutlines(); + + // Check, that PDF file was modified + // File is always modified by _dumpPages() now, but future implementations may eliminate this. + if (!$this->_objFactory->isModified()) { + if ($newSegmentOnly) { + // Do nothing, return + return ''; + } + + if ($outputStream === null) { + return $this->_trailer->getPDFString(); + } else { + $pdfData = $this->_trailer->getPDFString(); + while ( strlen($pdfData) > 0 && ($byteCount = fwrite($outputStream, $pdfData)) != false ) { + $pdfData = substr($pdfData, $byteCount); + } + + return ''; + } + } + + // offset (from a start of PDF file) of new PDF file segment + $offset = $this->_trailer->getPDFLength(); + // Last Object number in a list of free objects + $lastFreeObject = $this->_trailer->getLastFreeObject(); + + // Array of cross-reference table subsections + $xrefTable = array(); + // Object numbers of first objects in each subsection + $xrefSectionStartNums = array(); + + // Last cross-reference table subsection + $xrefSection = array(); + // Dummy initialization of the first element (specail case - header of linked list of free objects). + $xrefSection[] = 0; + $xrefSectionStartNums[] = 0; + // Object number of last processed PDF object. + // Used to manage cross-reference subsections. + // Initialized by zero (specail case - header of linked list of free objects). + $lastObjNum = 0; + + if ($outputStream !== null) { + if (!$newSegmentOnly) { + $pdfData = $this->_trailer->getPDFString(); + while ( strlen($pdfData) > 0 && ($byteCount = fwrite($outputStream, $pdfData)) != false ) { + $pdfData = substr($pdfData, $byteCount); + } + } + } else { + $pdfSegmentBlocks = ($newSegmentOnly) ? array() : array($this->_trailer->getPDFString()); + } + + // Iterate objects to create new reference table + foreach ($this->_objFactory->listModifiedObjects() as $updateInfo) { + $objNum = $updateInfo->getObjNum(); + + if ($objNum - $lastObjNum != 1) { + // Save cross-reference table subsection and start new one + $xrefTable[] = $xrefSection; + $xrefSection = array(); + $xrefSectionStartNums[] = $objNum; + } + + if ($updateInfo->isFree()) { + // Free object cross-reference table entry + $xrefSection[] = sprintf("%010d %05d f \n", $lastFreeObject, $updateInfo->getGenNum()); + $lastFreeObject = $objNum; + } else { + // In-use object cross-reference table entry + $xrefSection[] = sprintf("%010d %05d n \n", $offset, $updateInfo->getGenNum()); + + $pdfBlock = $updateInfo->getObjectDump(); + $offset += strlen($pdfBlock); + + if ($outputStream === null) { + $pdfSegmentBlocks[] = $pdfBlock; + } else { + while ( strlen($pdfBlock) > 0 && ($byteCount = fwrite($outputStream, $pdfBlock)) != false ) { + $pdfBlock = substr($pdfBlock, $byteCount); + } + } + } + $lastObjNum = $objNum; + } + // Save last cross-reference table subsection + $xrefTable[] = $xrefSection; + + // Modify first entry (specail case - header of linked list of free objects). + $xrefTable[0][0] = sprintf("%010d 65535 f \n", $lastFreeObject); + + $xrefTableStr = "xref\n"; + foreach ($xrefTable as $sectId => $xrefSection) { + $xrefTableStr .= sprintf("%d %d \n", $xrefSectionStartNums[$sectId], count($xrefSection)); + foreach ($xrefSection as $xrefTableEntry) { + $xrefTableStr .= $xrefTableEntry; + } + } + + $this->_trailer->Size->value = $this->_objFactory->getObjectCount(); + + $pdfBlock = $xrefTableStr + . $this->_trailer->toString() + . "startxref\n" . $offset . "\n" + . "%%EOF\n"; + + $this->_objFactory->cleanEnumerationShiftCache(); + + if ($outputStream === null) { + $pdfSegmentBlocks[] = $pdfBlock; + + return implode('', $pdfSegmentBlocks); + } else { + while ( strlen($pdfBlock) > 0 && ($byteCount = fwrite($outputStream, $pdfBlock)) != false ) { + $pdfBlock = substr($pdfBlock, $byteCount); + } + + return ''; + } + } + + /** + * Sets the document-level JavaScript + * + * Resets and appends + * + * @param string|array $javaScript + */ + public function setJavaScript($javaScript) + { + $this->resetJavaScript(); + + $this->addJavaScript($javaScript); + } + + /** + * Resets the document-level JavaScript + */ + public function resetJavaScript() + { + $this->_javaScript = null; + + $root = $this->_trailer->Root; + if (null === $root->Names || null === $root->Names->JavaScript) { + return; + } + $root->Names->JavaScript = null; + } + + /** + * Appends JavaScript to the document-level JavaScript + * + * @param string|array $javaScript + * @throws Zend_Pdf_Exception + */ + public function addJavaScript($javaScript) + { + if (empty($javaScript)) { + throw new Zend_Pdf_Exception( + 'JavaScript must be a non empty string or array of strings' + ); + } + + if (!is_array($javaScript)) { + $javaScript = array($javaScript); + } + + if (null === $this->_javaScript) { + $this->_javaScript = $javaScript; + } else { + $this->_javaScript = array_merge($this->_javaScript, $javaScript); + } + + if (!empty($this->_javaScript)) { + $items = array(); + + foreach ($this->_javaScript as $javaScript) { + $jsCode = array( + 'S' => new Zend_Pdf_Element_Name('JavaScript'), + 'JS' => new Zend_Pdf_Element_String($javaScript) + ); + $items[] = new Zend_Pdf_Element_String('EmbeddedJS'); + $items[] = $this->_objFactory->newObject( + new Zend_Pdf_Element_Dictionary($jsCode) + ); + } + + $jsRef = $this->_objFactory->newObject( + new Zend_Pdf_Element_Dictionary( + array('Names' => new Zend_Pdf_Element_Array($items)) + ) + ); + + if (null === $this->_trailer->Root->Names) { + $this->_trailer->Root->Names = new Zend_Pdf_Element_Dictionary(); + } + $this->_trailer->Root->Names->JavaScript = $jsRef; + } + } + + /** + * Convert date to PDF format (it's close to ASN.1 (Abstract Syntax Notation + * One) defined in ISO/IEC 8824). + * + * @todo This really isn't the best location for this method. It should + * probably actually exist as Zend_Pdf_Element_Date or something like that. + * + * @todo Address the following E_STRICT issue: + * PHP Strict Standards: date(): It is not safe to rely on the system's + * timezone settings. Please use the date.timezone setting, the TZ + * environment variable or the date_default_timezone_set() function. In + * case you used any of those methods and you are still getting this + * warning, you most likely misspelled the timezone identifier. + * + * @param integer $timestamp (optional) If omitted, uses the current time. + * @return string + */ + public static function pdfDate($timestamp = null) + { + if ($timestamp === null) { + $date = date('\D\:YmdHisO'); + } else { + $date = date('\D\:YmdHisO', $timestamp); + } + return substr_replace($date, '\'', -2, 0) . '\''; + } + +} diff --git a/library/Zend/Pdf/Action.php b/library/Zend/Pdf/Action.php new file mode 100755 index 000000000..2b1864c46 --- /dev/null +++ b/library/Zend/Pdf/Action.php @@ -0,0 +1,404 @@ +getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$dictionary mast be a direct or an indirect dictionary object.'); + } + + $this->_actionDictionary = $dictionary; + + if ($dictionary->Next !== null) { + if ($dictionary->Next instanceof Zend_Pdf_Element_Dictionary) { + // Check if dictionary object is not already processed + if (!$processedActions->contains($dictionary->Next)) { + $processedActions->attach($dictionary->Next); + $this->next[] = Zend_Pdf_Action::load($dictionary->Next, $processedActions); + } + } else if ($dictionary->Next instanceof Zend_Pdf_Element_Array) { + foreach ($dictionary->Next->items as $chainedActionDictionary) { + // Check if dictionary object is not already processed + if (!$processedActions->contains($chainedActionDictionary)) { + $processedActions->attach($chainedActionDictionary); + $this->next[] = Zend_Pdf_Action::load($chainedActionDictionary, $processedActions); + } + } + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('PDF Action dictionary Next entry must be a dictionary or an array.'); + } + } + + $this->_originalNextList = $this->next; + } + + /** + * Load PDF action object using specified dictionary + * + * @internal + * @param Zend_Pdf_Element $dictionary (It's actually Dictionary or Dictionary Object or Reference to a Dictionary Object) + * @param SplObjectStorage $processedActions list of already processed action dictionaries, used to avoid cyclic references + * @return Zend_Pdf_Action + * @throws Zend_Pdf_Exception + */ + public static function load(Zend_Pdf_Element $dictionary, SplObjectStorage $processedActions = null) + { + if ($processedActions === null) { + $processedActions = new SplObjectStorage(); + } + + require_once 'Zend/Pdf/Element.php'; + if ($dictionary->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$dictionary mast be a direct or an indirect dictionary object.'); + } + if (isset($dictionary->Type) && $dictionary->Type->value != 'Action') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Action dictionary Type entry must be set to \'Action\'.'); + } + + if ($dictionary->S === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Action dictionary must contain S entry'); + } + + switch ($dictionary->S->value) { + case 'GoTo': + require_once 'Zend/Pdf/Action/GoTo.php'; + return new Zend_Pdf_Action_GoTo($dictionary, $processedActions); + break; + + case 'GoToR': + require_once 'Zend/Pdf/Action/GoToR.php'; + return new Zend_Pdf_Action_GoToR($dictionary, $processedActions); + break; + + case 'GoToE': + require_once 'Zend/Pdf/Action/GoToE.php'; + return new Zend_Pdf_Action_GoToE($dictionary, $processedActions); + break; + + case 'Launch': + require_once 'Zend/Pdf/Action/Launch.php'; + return new Zend_Pdf_Action_Launch($dictionary, $processedActions); + break; + + case 'Thread': + require_once 'Zend/Pdf/Action/Thread.php'; + return new Zend_Pdf_Action_Thread($dictionary, $processedActions); + break; + + case 'URI': + require_once 'Zend/Pdf/Action/URI.php'; + return new Zend_Pdf_Action_URI($dictionary, $processedActions); + break; + + case 'Sound': + require_once 'Zend/Pdf/Action/Sound.php'; + return new Zend_Pdf_Action_Sound($dictionary, $processedActions); + break; + + case 'Movie': + require_once 'Zend/Pdf/Action/Movie.php'; + return new Zend_Pdf_Action_Movie($dictionary, $processedActions); + break; + + case 'Hide': + require_once 'Zend/Pdf/Action/Hide.php'; + return new Zend_Pdf_Action_Hide($dictionary, $processedActions); + break; + + case 'Named': + require_once 'Zend/Pdf/Action/Named.php'; + return new Zend_Pdf_Action_Named($dictionary, $processedActions); + break; + + case 'SubmitForm': + require_once 'Zend/Pdf/Action/SubmitForm.php'; + return new Zend_Pdf_Action_SubmitForm($dictionary, $processedActions); + break; + + case 'ResetForm': + require_once 'Zend/Pdf/Action/ResetForm.php'; + return new Zend_Pdf_Action_ResetForm($dictionary, $processedActions); + break; + + case 'ImportData': + require_once 'Zend/Pdf/Action/ImportData.php'; + return new Zend_Pdf_Action_ImportData($dictionary, $processedActions); + break; + + case 'JavaScript': + require_once 'Zend/Pdf/Action/JavaScript.php'; + return new Zend_Pdf_Action_JavaScript($dictionary, $processedActions); + break; + + case 'SetOCGState': + require_once 'Zend/Pdf/Action/SetOCGState.php'; + return new Zend_Pdf_Action_SetOCGState($dictionary, $processedActions); + break; + + case 'Rendition': + require_once 'Zend/Pdf/Action/Rendition.php'; + return new Zend_Pdf_Action_Rendition($dictionary, $processedActions); + break; + + case 'Trans': + require_once 'Zend/Pdf/Action/Trans.php'; + return new Zend_Pdf_Action_Trans($dictionary, $processedActions); + break; + + case 'GoTo3DView': + require_once 'Zend/Pdf/Action/GoTo3DView.php'; + return new Zend_Pdf_Action_GoTo3DView($dictionary, $processedActions); + break; + + default: + require_once 'Zend/Pdf/Action/Unknown.php'; + return new Zend_Pdf_Action_Unknown($dictionary, $processedActions); + break; + } + } + + /** + * Get resource + * + * @internal + * @return Zend_Pdf_Element + */ + public function getResource() + { + return $this->_actionDictionary; + } + + /** + * Dump Action and its child actions into PDF structures + * + * Returns dictionary indirect object or reference + * + * @internal + * @param Zend_Pdf_ElementFactory $factory Object factory for newly created indirect objects + * @param SplObjectStorage $processedActions list of already processed actions (used to prevent infinity loop caused by cyclic references) + * @return Zend_Pdf_Element_Object|Zend_Pdf_Element_Reference Dictionary indirect object + */ + public function dumpAction(Zend_Pdf_ElementFactory_Interface $factory, SplObjectStorage $processedActions = null) + { + if ($processedActions === null) { + $processedActions = new SplObjectStorage(); + } + if ($processedActions->contains($this)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Action chain cyclyc reference is detected.'); + } + $processedActions->attach($this); + + $childListUpdated = false; + if (count($this->_originalNextList) != count($this->next)) { + // If original and current children arrays have different size then children list was updated + $childListUpdated = true; + } else if ( !(array_keys($this->_originalNextList) === array_keys($this->next)) ) { + // If original and current children arrays have different keys (with a glance to an order) then children list was updated + $childListUpdated = true; + } else { + foreach ($this->next as $key => $childAction) { + if ($this->_originalNextList[$key] !== $childAction) { + $childListUpdated = true; + break; + } + } + } + + if ($childListUpdated) { + $this->_actionDictionary->touch(); + switch (count($this->next)) { + case 0: + $this->_actionDictionary->Next = null; + break; + + case 1: + $child = reset($this->next); + $this->_actionDictionary->Next = $child->dumpAction($factory, $processedActions); + break; + + default: + require_once 'Zend/Pdf/Element/Array.php'; + $pdfChildArray = new Zend_Pdf_Element_Array(); + foreach ($this->next as $child) { + + $pdfChildArray->items[] = $child->dumpAction($factory, $processedActions); + } + $this->_actionDictionary->Next = $pdfChildArray; + break; + } + } else { + foreach ($this->next as $child) { + $child->dumpAction($factory, $processedActions); + } + } + + if ($this->_actionDictionary instanceof Zend_Pdf_Element_Dictionary) { + // It's a newly created action. Register it within object factory and return indirect object + return $factory->newObject($this->_actionDictionary); + } else { + // It's a loaded object + return $this->_actionDictionary; + } + } + + + //////////////////////////////////////////////////////////////////////// + // RecursiveIterator interface methods + ////////////// + + /** + * Returns current child action. + * + * @return Zend_Pdf_Action + */ + public function current() + { + return current($this->next); + } + + /** + * Returns current iterator key + * + * @return integer + */ + public function key() + { + return key($this->next); + } + + /** + * Go to next child + */ + public function next() + { + return next($this->next); + } + + /** + * Rewind children + */ + public function rewind() + { + return reset($this->next); + } + + /** + * Check if current position is valid + * + * @return boolean + */ + public function valid() + { + return current($this->next) !== false; + } + + /** + * Returns the child action. + * + * @return Zend_Pdf_Action|null + */ + public function getChildren() + { + return current($this->next); + } + + /** + * Implements RecursiveIterator interface. + * + * @return bool whether container has any pages + */ + public function hasChildren() + { + return count($this->next) > 0; + } + + + //////////////////////////////////////////////////////////////////////// + // Countable interface methods + ////////////// + + /** + * count() + * + * @return int + */ + public function count() + { + return count($this->childOutlines); + } +} diff --git a/library/Zend/Pdf/Action/GoTo.php b/library/Zend/Pdf/Action/GoTo.php new file mode 100755 index 000000000..49a0ec94a --- /dev/null +++ b/library/Zend/Pdf/Action/GoTo.php @@ -0,0 +1,116 @@ +_destination = Zend_Pdf_Destination::load($dictionary->D); + } + + /** + * Create new Zend_Pdf_Action_GoTo object using specified destination + * + * @param Zend_Pdf_Destination|string $destination + * @return Zend_Pdf_Action_GoTo + */ + public static function create($destination) + { + if (is_string($destination)) { + require_once 'Zend/Pdf/Destination/Named.php'; + $destination = Zend_Pdf_Destination_Named::create($destination); + } + + if (!$destination instanceof Zend_Pdf_Destination) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$destination parameter must be a Zend_Pdf_Destination object or string.'); + } + + $dictionary = new Zend_Pdf_Element_Dictionary(); + $dictionary->Type = new Zend_Pdf_Element_Name('Action'); + $dictionary->S = new Zend_Pdf_Element_Name('GoTo'); + $dictionary->Next = null; + $dictionary->D = $destination->getResource(); + + return new Zend_Pdf_Action_GoTo($dictionary, new SplObjectStorage()); + } + + /** + * Set goto action destination + * + * @param Zend_Pdf_Destination|string $destination + * @return Zend_Pdf_Action_GoTo + */ + public function setDestination(Zend_Pdf_Destination $destination) + { + $this->_destination = $destination; + + $this->_actionDictionary->touch(); + $this->_actionDictionary->D = $destination->getResource(); + + return $this; + } + + /** + * Get goto action destination + * + * @return Zend_Pdf_Destination + */ + public function getDestination() + { + return $this->_destination; + } +} diff --git a/library/Zend/Pdf/Action/GoTo3DView.php b/library/Zend/Pdf/Action/GoTo3DView.php new file mode 100755 index 000000000..45a520588 --- /dev/null +++ b/library/Zend/Pdf/Action/GoTo3DView.php @@ -0,0 +1,39 @@ +URI === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('URI action dictionary entry is required'); + } + } + + /** + * Validate URI + * + * @param string $uri + * @return true + * @throws Zend_Pdf_Exception + */ + protected static function _validateUri($uri) + { + $scheme = parse_url((string)$uri, PHP_URL_SCHEME); + if ($scheme === false || $scheme === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Invalid URI'); + } + } + + /** + * Create new Zend_Pdf_Action_URI object using specified uri + * + * @param string $uri The URI to resolve, encoded in 7-bit ASCII + * @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved + * @return Zend_Pdf_Action_URI + */ + public static function create($uri, $isMap = false) + { + self::_validateUri($uri); + + $dictionary = new Zend_Pdf_Element_Dictionary(); + $dictionary->Type = new Zend_Pdf_Element_Name('Action'); + $dictionary->S = new Zend_Pdf_Element_Name('URI'); + $dictionary->Next = null; + $dictionary->URI = new Zend_Pdf_Element_String($uri); + if ($isMap) { + $dictionary->IsMap = new Zend_Pdf_Element_Boolean(true); + } + + return new Zend_Pdf_Action_URI($dictionary, new SplObjectStorage()); + } + + /** + * Set URI to resolve + * + * @param string $uri The uri to resolve, encoded in 7-bit ASCII. + * @return Zend_Pdf_Action_URI + */ + public function setUri($uri) + { + $this->_validateUri($uri); + + $this->_actionDictionary->touch(); + $this->_actionDictionary->URI = new Zend_Pdf_Element_String($uri); + + return $this; + } + + /** + * Get URI to resolve + * + * @return string + */ + public function getUri() + { + return $this->_actionDictionary->URI->value; + } + + /** + * Set IsMap property + * + * If the IsMap flag is true and the user has triggered the URI action by clicking + * an annotation, the coordinates of the mouse position at the time the action is + * performed should be transformed from device space to user space and then offset + * relative to the upper-left corner of the annotation rectangle. + * + * @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved + * @return Zend_Pdf_Action_URI + */ + public function setIsMap($isMap) + { + $this->_actionDictionary->touch(); + + if ($isMap) { + $this->_actionDictionary->IsMap = new Zend_Pdf_Element_Boolean(true); + } else { + $this->_actionDictionary->IsMap = null; + } + + return $this; + } + + /** + * Get IsMap property + * + * If the IsMap flag is true and the user has triggered the URI action by clicking + * an annotation, the coordinates of the mouse position at the time the action is + * performed should be transformed from device space to user space and then offset + * relative to the upper-left corner of the annotation rectangle. + * + * @return boolean + */ + public function getIsMap() + { + return $this->_actionDictionary->IsMap !== null && + $this->_actionDictionary->IsMap->value; + } +} diff --git a/library/Zend/Pdf/Action/Unknown.php b/library/Zend/Pdf/Action/Unknown.php new file mode 100755 index 000000000..7ec475a93 --- /dev/null +++ b/library/Zend/Pdf/Action/Unknown.php @@ -0,0 +1,38 @@ +_annotationDictionary; + } + + + /** + * Set bottom edge of the annotation rectangle. + * + * @param float $bottom + * @return Zend_Pdf_Annotation + */ + public function setBottom($bottom) { + $this->_annotationDictionary->Rect->items[1]->touch(); + $this->_annotationDictionary->Rect->items[1]->value = $bottom; + + return $this; + } + + /** + * Get bottom edge of the annotation rectangle. + * + * @return float + */ + public function getBottom() { + return $this->_annotationDictionary->Rect->items[1]->value; + } + + /** + * Set top edge of the annotation rectangle. + * + * @param float $top + * @return Zend_Pdf_Annotation + */ + public function setTop($top) { + $this->_annotationDictionary->Rect->items[3]->touch(); + $this->_annotationDictionary->Rect->items[3]->value = $top; + + return $this; + } + + /** + * Get top edge of the annotation rectangle. + * + * @return float + */ + public function getTop() { + return $this->_annotationDictionary->Rect->items[3]->value; + } + + /** + * Set right edge of the annotation rectangle. + * + * @param float $right + * @return Zend_Pdf_Annotation + */ + public function setRight($right) { + $this->_annotationDictionary->Rect->items[2]->touch(); + $this->_annotationDictionary->Rect->items[2]->value = $right; + + return $this; + } + + /** + * Get right edge of the annotation rectangle. + * + * @return float + */ + public function getRight() { + return $this->_annotationDictionary->Rect->items[2]->value; + } + + /** + * Set left edge of the annotation rectangle. + * + * @param float $left + * @return Zend_Pdf_Annotation + */ + public function setLeft($left) { + $this->_annotationDictionary->Rect->items[0]->touch(); + $this->_annotationDictionary->Rect->items[0]->value = $left; + + return $this; + } + + /** + * Get left edge of the annotation rectangle. + * + * @return float + */ + public function getLeft() { + return $this->_annotationDictionary->Rect->items[0]->value; + } + + /** + * Return text to be displayed for the annotation or, if this type of annotation + * does not display text, an alternate description of the annotation’s contents + * in human-readable form. + * + * @return string + */ + public function getText() { + if ($this->_annotationDictionary->Contents === null) { + return ''; + } + + return $this->_annotationDictionary->Contents->value; + } + + /** + * Set text to be displayed for the annotation or, if this type of annotation + * does not display text, an alternate description of the annotation’s contents + * in human-readable form. + * + * @param string $text + * @return Zend_Pdf_Annotation + */ + public function setText($text) { + require_once 'Zend/Pdf/Element/String.php'; + + if ($this->_annotationDictionary->Contents === null) { + $this->_annotationDictionary->touch(); + $this->_annotationDictionary->Contents = new Zend_Pdf_Element_String($text); + } else { + $this->_annotationDictionary->Contents->touch(); + $this->_annotationDictionary->Contents->value = new Zend_Pdf_Element_String($text); + } + + return $this; + } + + /** + * Annotation object constructor + * + * @throws Zend_Pdf_Exception + */ + public function __construct(Zend_Pdf_Element $annotationDictionary) + { + if ($annotationDictionary->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Annotation dictionary resource has to be a dictionary.'); + } + + $this->_annotationDictionary = $annotationDictionary; + + if ($this->_annotationDictionary->Type !== null && + $this->_annotationDictionary->Type->value != 'Annot') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong resource type. \'Annot\' expected.'); + } + + if ($this->_annotationDictionary->Rect === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('\'Rect\' dictionary entry is required.'); + } + + if (count($this->_annotationDictionary->Rect->items) != 4 || + $this->_annotationDictionary->Rect->items[0]->getType() != Zend_Pdf_Element::TYPE_NUMERIC || + $this->_annotationDictionary->Rect->items[1]->getType() != Zend_Pdf_Element::TYPE_NUMERIC || + $this->_annotationDictionary->Rect->items[2]->getType() != Zend_Pdf_Element::TYPE_NUMERIC || + $this->_annotationDictionary->Rect->items[3]->getType() != Zend_Pdf_Element::TYPE_NUMERIC ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('\'Rect\' dictionary entry must be an array of four numeric elements.'); + } + } + + /** + * Load Annotation object from a specified resource + * + * @internal + * @param Zend_Pdf_Element $resource + * @return Zend_Pdf_Annotation + */ + public static function load(Zend_Pdf_Element $resource) + { + /** @todo implementation */ + } +} diff --git a/library/Zend/Pdf/Annotation/FileAttachment.php b/library/Zend/Pdf/Annotation/FileAttachment.php new file mode 100755 index 000000000..9eba94f36 --- /dev/null +++ b/library/Zend/Pdf/Annotation/FileAttachment.php @@ -0,0 +1,101 @@ +getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Annotation dictionary resource has to be a dictionary.'); + } + + if ($annotationDictionary->Subtype === null || + $annotationDictionary->Subtype->getType() != Zend_Pdf_Element::TYPE_NAME || + $annotationDictionary->Subtype->value != 'FileAttachment') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Subtype => FileAttachment entry is requires'); + } + + parent::__construct($annotationDictionary); + } + + /** + * Create link annotation object + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param string $fileSpecification + * @return Zend_Pdf_Annotation_FileAttachment + */ + public static function create($x1, $y1, $x2, $y2, $fileSpecification) + { + $annotationDictionary = new Zend_Pdf_Element_Dictionary(); + + $annotationDictionary->Type = new Zend_Pdf_Element_Name('Annot'); + $annotationDictionary->Subtype = new Zend_Pdf_Element_Name('FileAttachment'); + + $rectangle = new Zend_Pdf_Element_Array(); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x2); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y2); + $annotationDictionary->Rect = $rectangle; + + $fsDictionary = new Zend_Pdf_Element_Dictionary(); + $fsDictionary->Type = new Zend_Pdf_Element_Name('Filespec'); + $fsDictionary->F = new Zend_Pdf_Element_String($fileSpecification); + + $annotationDictionary->FS = $fsDictionary; + + + return new Zend_Pdf_Annotation_FileAttachment($annotationDictionary); + } +} diff --git a/library/Zend/Pdf/Annotation/Link.php b/library/Zend/Pdf/Annotation/Link.php new file mode 100755 index 000000000..6b0b1cf00 --- /dev/null +++ b/library/Zend/Pdf/Annotation/Link.php @@ -0,0 +1,163 @@ +getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Annotation dictionary resource has to be a dictionary.'); + } + + if ($annotationDictionary->Subtype === null || + $annotationDictionary->Subtype->getType() != Zend_Pdf_Element::TYPE_NAME || + $annotationDictionary->Subtype->value != 'Link') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Subtype => Link entry is requires'); + } + + parent::__construct($annotationDictionary); + } + + /** + * Create link annotation object + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param Zend_Pdf_Target|string $target + * @return Zend_Pdf_Annotation_Link + * @throws Zend_Pdf_Exception + */ + public static function create($x1, $y1, $x2, $y2, $target) + { + if (is_string($target)) { + require_once 'Zend/Pdf/Destination/Named.php'; + $target = Zend_Pdf_Destination_Named::create($target); + } + if (!$target instanceof Zend_Pdf_Target) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$target parameter must be a Zend_Pdf_Target object or a string.'); + } + + $annotationDictionary = new Zend_Pdf_Element_Dictionary(); + + $annotationDictionary->Type = new Zend_Pdf_Element_Name('Annot'); + $annotationDictionary->Subtype = new Zend_Pdf_Element_Name('Link'); + + $rectangle = new Zend_Pdf_Element_Array(); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x2); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y2); + $annotationDictionary->Rect = $rectangle; + + if ($target instanceof Zend_Pdf_Destination) { + $annotationDictionary->Dest = $target->getResource(); + } else { + $annotationDictionary->A = $target->getResource(); + } + + return new Zend_Pdf_Annotation_Link($annotationDictionary); + } + + /** + * Set link annotation destination + * + * @param Zend_Pdf_Target|string $target + * @return Zend_Pdf_Annotation_Link + */ + public function setDestination($target) + { + if (is_string($target)) { + require_once 'Zend/Pdf/Destination/Named.php'; + $destination = Zend_Pdf_Destination_Named::create($target); + } + if (!$target instanceof Zend_Pdf_Target) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$target parameter must be a Zend_Pdf_Target object or a string.'); + } + + $this->_annotationDictionary->touch(); + $this->_annotationDictionary->Dest = $destination->getResource(); + if ($target instanceof Zend_Pdf_Destination) { + $this->_annotationDictionary->Dest = $target->getResource(); + $this->_annotationDictionary->A = null; + } else { + $this->_annotationDictionary->Dest = null; + $this->_annotationDictionary->A = $target->getResource(); + } + + return $this; + } + + /** + * Get link annotation destination + * + * @return Zend_Pdf_Target|null + */ + public function getDestination() + { + if ($this->_annotationDictionary->Dest === null && + $this->_annotationDictionary->A === null) { + return null; + } + + if ($this->_annotationDictionary->Dest !== null) { + require_once 'Zend/Pdf/Destination.php'; + return Zend_Pdf_Destination::load($this->_annotationDictionary->Dest); + } else { + require_once 'Zend/Pdf/Action.php'; + return Zend_Pdf_Action::load($this->_annotationDictionary->A); + } + } +} diff --git a/library/Zend/Pdf/Annotation/Markup.php b/library/Zend/Pdf/Annotation/Markup.php new file mode 100755 index 000000000..9e84f22ac --- /dev/null +++ b/library/Zend/Pdf/Annotation/Markup.php @@ -0,0 +1,142 @@ +getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Annotation dictionary resource has to be a dictionary.'); + } + + if ($annotationDictionary->Subtype === null || + $annotationDictionary->Subtype->getType() != Zend_Pdf_Element::TYPE_NAME || + !in_array( $annotationDictionary->Subtype->value, + array(self::SUBTYPE_HIGHLIGHT, + self::SUBTYPE_UNDERLINE, + self::SUBTYPE_SQUIGGLY, + self::SUBTYPE_STRIKEOUT) )) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Subtype => Markup entry is omitted or has wrong value.'); + } + + parent::__construct($annotationDictionary); + } + + /** + * Create markup annotation object + * + * Text markup annotations appear as highlights, underlines, strikeouts or + * jagged ("squiggly") underlines in the text of a document. When opened, + * they display a pop-up window containing the text of the associated note. + * + * $subType parameter may contain + * Zend_Pdf_Annotation_Markup::SUBTYPE_HIGHLIGHT + * Zend_Pdf_Annotation_Markup::SUBTYPE_UNDERLINE + * Zend_Pdf_Annotation_Markup::SUBTYPE_SQUIGGLY + * Zend_Pdf_Annotation_Markup::SUBTYPE_STRIKEOUT + * for for a highlight, underline, squiggly-underline, or strikeout annotation, + * respectively. + * + * $quadPoints is an array of 8xN numbers specifying the coordinates of + * N quadrilaterals default user space. Each quadrilateral encompasses a word or + * group of contiguous words in the text underlying the annotation. + * The coordinates for each quadrilateral are given in the order + * x1 y1 x2 y2 x3 y3 x4 y4 + * specifying the quadrilateral’s four vertices in counterclockwise order + * starting from left bottom corner. + * The text is oriented with respect to the edge connecting points + * (x1, y1) and (x2, y2). + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param string $text + * @param string $subType + * @param array $quadPoints [x1 y1 x2 y2 x3 y3 x4 y4] + * @return Zend_Pdf_Annotation_Markup + * @throws Zend_Pdf_Exception + */ + public static function create($x1, $y1, $x2, $y2, $text, $subType, $quadPoints) + { + $annotationDictionary = new Zend_Pdf_Element_Dictionary(); + + $annotationDictionary->Type = new Zend_Pdf_Element_Name('Annot'); + $annotationDictionary->Subtype = new Zend_Pdf_Element_Name($subType); + + $rectangle = new Zend_Pdf_Element_Array(); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x2); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y2); + $annotationDictionary->Rect = $rectangle; + + $annotationDictionary->Contents = new Zend_Pdf_Element_String($text); + + if (!is_array($quadPoints) || count($quadPoints) == 0 || count($quadPoints) % 8 != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$quadPoints parameter must be an array of 8xN numbers'); + } + $points = new Zend_Pdf_Element_Array(); + foreach ($quadPoints as $quadPoint) { + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoint); + } + $annotationDictionary->QuadPoints = $points; + + return new Zend_Pdf_Annotation_Markup($annotationDictionary); + } +} diff --git a/library/Zend/Pdf/Annotation/Text.php b/library/Zend/Pdf/Annotation/Text.php new file mode 100755 index 000000000..c2e7aed15 --- /dev/null +++ b/library/Zend/Pdf/Annotation/Text.php @@ -0,0 +1,95 @@ +getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Annotation dictionary resource has to be a dictionary.'); + } + + if ($annotationDictionary->Subtype === null || + $annotationDictionary->Subtype->getType() != Zend_Pdf_Element::TYPE_NAME || + $annotationDictionary->Subtype->value != 'Text') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Subtype => Text entry is requires'); + } + + parent::__construct($annotationDictionary); + } + + /** + * Create link annotation object + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param string $text + * @return Zend_Pdf_Annotation_Text + */ + public static function create($x1, $y1, $x2, $y2, $text) + { + $annotationDictionary = new Zend_Pdf_Element_Dictionary(); + + $annotationDictionary->Type = new Zend_Pdf_Element_Name('Annot'); + $annotationDictionary->Subtype = new Zend_Pdf_Element_Name('Text'); + + $rectangle = new Zend_Pdf_Element_Array(); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x2); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y2); + $annotationDictionary->Rect = $rectangle; + + $annotationDictionary->Contents = new Zend_Pdf_Element_String($text); + + return new Zend_Pdf_Annotation_Text($annotationDictionary); + } +} diff --git a/library/Zend/Pdf/Canvas.php b/library/Zend/Pdf/Canvas.php new file mode 100755 index 000000000..f320aa725 --- /dev/null +++ b/library/Zend/Pdf/Canvas.php @@ -0,0 +1,182 @@ + array(), + 'XObject' => array(), + 'ExtGState' => array()); + + /** + * Object constructor + * + * @param float $width + * @param float $height + */ + public function __construct($width, $height) + { + $this->_width = $width; + $this->_height = $height; + } + + /** + * Add procedure set to the canvas description + * + * @param string $procSetName + */ + protected function _addProcSet($procSetName) + { + $this->_procset[$procSetName] = 1; + } + + /** + * Attach resource to the canvas + * + * Method returns a name of the resource which can be used + * as a resource reference within drawing instructions stream + * Allowed types: 'ExtGState', 'ColorSpace', 'Pattern', 'Shading', + * 'XObject', 'Font', 'Properties' + * + * @param string $type + * @param Zend_Pdf_Resource $resource + * @return string + */ + protected function _attachResource($type, Zend_Pdf_Resource $resource) + { + // Check, that resource is already attached to resource set. + $resObject = $resource->getResource(); + foreach ($this->_resources[$type] as $resName => $collectedResObject) { + if ($collectedResObject === $resObject) { + return $resName; + } + } + + $idCounter = 1; + do { + $newResName = $type[0] . $idCounter++; + } while (isset($this->_resources[$type][$newResName])); + + $this->_resources[$type][$newResName] = $resObject; + + return $newResName; + } + + /** + * Returns dictionaries of used resources. + * + * Used for canvas implementations interoperability + * + * Structure of the returned array: + * array( + * => array( + * => , + * => , + * => , + * ... + * ), + * => array( + * => , + * => , + * => , + * ... + * ), + * ... + * 'ProcSet' => array() + * ) + * + * where ProcSet array is a list of used procedure sets names (strings). + * Allowed procedure set names: 'PDF', 'Text', 'ImageB', 'ImageC', 'ImageI' + * + * @internal + * @return array + */ + public function getResources() + { + $this->_resources['ProcSet'] = array_keys($this->_procSet); + return $this->_resources; + } + + /** + * Get drawing instructions stream + * + * It has to be returned as a PDF stream object to make it reusable. + * + * @internal + * @returns Zend_Pdf_Resource_ContentStream + */ + public function getContents() + { + /** @todo implementation */ + } + + /** + * Return the height of this page in points. + * + * @return float + */ + public function getHeight() + { + return $this->_height; + } + + /** + * Return the width of this page in points. + * + * @return float + */ + public function getWidth() + { + return $this->_width; + } +} diff --git a/library/Zend/Pdf/Canvas/Abstract.php b/library/Zend/Pdf/Canvas/Abstract.php new file mode 100755 index 000000000..556dd9a45 --- /dev/null +++ b/library/Zend/Pdf/Canvas/Abstract.php @@ -0,0 +1,1217 @@ +saveGS(); + + $this->translate($x1, $y1); + + if ($x2 === null) { + $with = $canvas->getWidth(); + } else { + $with = $x2 - $x1; + } + if ($y2 === null) { + $height = $canvas->getHeight(); + } else { + $height = $y2 - $y1; + } + + $this->clipRectangle(0, 0, $with, $height); + + if ($x2 !== null || $y2 !== null) { + // Drawn canvas has to be scaled. + if ($x2 !== null) { + $xScale = $with/$canvas->getWidth(); + } else { + $xScale = 1; + } + + if ($y2 !== null) { + $yScale = $height/$canvas->getHeight(); + } else { + $yScale = 1; + } + + $this->scale($xScale, $yScale); + } + + $contentsToDraw = $canvas->getContents(); + /** @todo implementation */ + + $this->restoreGS(); + + return $this; + } + + /** + * Set fill color. + * + * @param Zend_Pdf_Color $color + * @return Zend_Pdf_Canvas_Interface + */ + public function setFillColor(Zend_Pdf_Color $color) + { + $this->_addProcSet('PDF'); + $this->_contents .= $color->instructions(false); + + return $this; + } + + /** + * Set line color. + * + * @param Zend_Pdf_Color $color + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineColor(Zend_Pdf_Color $color) + { + $this->_addProcSet('PDF'); + $this->_contents .= $color->instructions(true); + + return $this; + } + + /** + * Set line width. + * + * @param float $width + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineWidth($width) + { + $this->_addProcSet('PDF'); + $widthObj = new Zend_Pdf_Element_Numeric($width); + $this->_contents .= $widthObj->toString() . " w\n"; + + return $this; + } + + /** + * Set line dashing pattern + * + * Pattern is an array of floats: array(on_length, off_length, on_length, off_length, ...) + * or Zend_Pdf_Page::LINE_DASHING_SOLID constant + * Phase is shift from the beginning of line. + * + * @param mixed $pattern + * @param array $phase + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineDashingPattern($pattern, $phase = 0) + { + $this->_addProcSet('PDF'); + + require_once 'Zend/Pdf/Page.php'; + if ($pattern === Zend_Pdf_Page::LINE_DASHING_SOLID) { + $pattern = array(); + $phase = 0; + } + + $dashPattern = new Zend_Pdf_Element_Array(); + $phaseEleemnt = new Zend_Pdf_Element_Numeric($phase); + + foreach ($pattern as $dashItem) { + $dashElement = new Zend_Pdf_Element_Numeric($dashItem); + $dashPattern->items[] = $dashElement; + } + + $this->_contents .= $dashPattern->toString() . ' ' + . $phaseEleemnt->toString() . " d\n"; + + return $this; + } + + /** + * Set current font. + * + * @param Zend_Pdf_Resource_Font $font + * @param float $fontSize + * @return Zend_Pdf_Canvas_Interface + */ + public function setFont(Zend_Pdf_Resource_Font $font, $fontSize) + { + $this->_addProcSet('Text'); + $fontName = $this->_attachResource('Font', $font); + + $this->_font = $font; + $this->_fontSize = $fontSize; + + $fontNameObj = new Zend_Pdf_Element_Name($fontName); + $fontSizeObj = new Zend_Pdf_Element_Numeric($fontSize); + $this->_contents .= $fontNameObj->toString() . ' ' . $fontSizeObj->toString() . " Tf\n"; + + return $this; + } + + /** + * Set the style to use for future drawing operations on this page + * + * @param Zend_Pdf_Style $style + * @return Zend_Pdf_Canvas_Interface + */ + public function setStyle(Zend_Pdf_Style $style) + { + $this->_addProcSet('Text'); + $this->_addProcSet('PDF'); + if ($style->getFont() !== null) { + $this->setFont($style->getFont(), $style->getFontSize()); + } + $this->_contents .= $style->instructions($this->_dictionary->Resources); + + $this->_style = $style; + + return $this; + } + + /** + * Get current font. + * + * @return Zend_Pdf_Resource_Font $font + */ + public function getFont() + { + return $this->_font; + } + + /** + * Get current font size + * + * @return float $fontSize + */ + public function getFontSize() + { + return $this->_fontSize; + } + + /** + * Return the style, applied to the page. + * + * @return Zend_Pdf_Style + */ + public function getStyle() + { + return $this->_style; + } + + /** + * Save the graphics state of this page. + * This takes a snapshot of the currently applied style, position, clipping area and + * any rotation/translation/scaling that has been applied. + * + * @todo check for the open paths + * @throws Zend_Pdf_Exception - if a save is performed with an open path + * @return Zend_Pdf_Canvas_Interface + */ + public function saveGS() + { + $this->_saveCount++; + + $this->_addProcSet('PDF'); + $this->_contents .= " q\n"; + + return $this; + } + + /** + * Restore the graphics state that was saved with the last call to saveGS(). + * + * @throws Zend_Pdf_Exception - if there is no previously saved state + * @return Zend_Pdf_Canvas_Interface + */ + public function restoreGS() + { + if ($this->_saveCount-- <= 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Restoring graphics state which is not saved'); + } + $this->_contents .= " Q\n"; + + return $this; + } + + /** + * Set the transparancy + * + * $alpha == 0 - transparent + * $alpha == 1 - opaque + * + * Transparency modes, supported by PDF: + * Normal (default), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, + * SoftLight, Difference, Exclusion + * + * @param float $alpha + * @param string $mode + * @return Zend_Pdf_Canvas_Interface + */ + public function setAlpha($alpha, $mode = 'Normal') + { + $this->_addProcSet('Text'); + $this->_addProcSet('PDF'); + + $graphicsState = new Zend_Pdf_Resource_GraphicsState(); + + $graphicsState->setAlpha($alpha, $mode); + $gStateName = $this->_attachResource('ExtGState', $graphicsState); + + $gStateNameObject = new Zend_Pdf_Element_Name($gStateName); + $this->_contents .= $gStateNameObject->toString() . " gs\n"; + + return $this; + } + + /** + * Intersect current clipping area with a circle. + * + * @param float $x + * @param float $y + * @param float $radius + * @param float $startAngle + * @param float $endAngle + * @return Zend_Pdf_Canvas_Interface + */ + public function clipCircle($x, $y, $radius, $startAngle = null, $endAngle = null) + { + $this->clipEllipse($x - $radius, $y - $radius, + $x + $radius, $y + $radius, + $startAngle, $endAngle); + + return $this; + } + + /** + * Intersect current clipping area with a polygon. + * + * Method signatures: + * drawEllipse($x1, $y1, $x2, $y2); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + * + * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0 + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param float $startAngle + * @param float $endAngle + * @return Zend_Pdf_Canvas_Interface + */ + public function clipEllipse($x1, $y1, $x2, $y2, $startAngle = null, $endAngle = null) + { + $this->_addProcSet('PDF'); + + if ($x2 < $x1) { + $temp = $x1; + $x1 = $x2; + $x2 = $temp; + } + if ($y2 < $y1) { + $temp = $y1; + $y1 = $y2; + $y2 = $temp; + } + + $x = ($x1 + $x2)/2.; + $y = ($y1 + $y2)/2.; + + $xC = new Zend_Pdf_Element_Numeric($x); + $yC = new Zend_Pdf_Element_Numeric($y); + + if ($startAngle !== null) { + if ($startAngle != 0) { $startAngle = fmod($startAngle, M_PI*2); } + if ($endAngle != 0) { $endAngle = fmod($endAngle, M_PI*2); } + + if ($startAngle > $endAngle) { + $endAngle += M_PI*2; + } + + $clipPath = $xC->toString() . ' ' . $yC->toString() . " m\n"; + $clipSectors = (int)ceil(($endAngle - $startAngle)/M_PI_4); + $clipRadius = max($x2 - $x1, $y2 - $y1); + + for($count = 0; $count <= $clipSectors; $count++) { + $pAngle = $startAngle + ($endAngle - $startAngle)*$count/(float)$clipSectors; + + $pX = new Zend_Pdf_Element_Numeric($x + cos($pAngle)*$clipRadius); + $pY = new Zend_Pdf_Element_Numeric($y + sin($pAngle)*$clipRadius); + $clipPath .= $pX->toString() . ' ' . $pY->toString() . " l\n"; + } + + $this->_contents .= $clipPath . "h\nW\nn\n"; + } + + $xLeft = new Zend_Pdf_Element_Numeric($x1); + $xRight = new Zend_Pdf_Element_Numeric($x2); + $yUp = new Zend_Pdf_Element_Numeric($y2); + $yDown = new Zend_Pdf_Element_Numeric($y1); + + $xDelta = 2*(M_SQRT2 - 1)*($x2 - $x1)/3.; + $yDelta = 2*(M_SQRT2 - 1)*($y2 - $y1)/3.; + $xr = new Zend_Pdf_Element_Numeric($x + $xDelta); + $xl = new Zend_Pdf_Element_Numeric($x - $xDelta); + $yu = new Zend_Pdf_Element_Numeric($y + $yDelta); + $yd = new Zend_Pdf_Element_Numeric($y - $yDelta); + + $this->_contents .= $xC->toString() . ' ' . $yUp->toString() . " m\n" + . $xr->toString() . ' ' . $yUp->toString() . ' ' + . $xRight->toString() . ' ' . $yu->toString() . ' ' + . $xRight->toString() . ' ' . $yC->toString() . " c\n" + . $xRight->toString() . ' ' . $yd->toString() . ' ' + . $xr->toString() . ' ' . $yDown->toString() . ' ' + . $xC->toString() . ' ' . $yDown->toString() . " c\n" + . $xl->toString() . ' ' . $yDown->toString() . ' ' + . $xLeft->toString() . ' ' . $yd->toString() . ' ' + . $xLeft->toString() . ' ' . $yC->toString() . " c\n" + . $xLeft->toString() . ' ' . $yu->toString() . ' ' + . $xl->toString() . ' ' . $yUp->toString() . ' ' + . $xC->toString() . ' ' . $yUp->toString() . " c\n" + . "h\nW\nn\n"; + + return $this; + } + + /** + * Intersect current clipping area with a polygon. + * + * @param array $x - array of float (the X co-ordinates of the vertices) + * @param array $y - array of float (the Y co-ordinates of the vertices) + * @param integer $fillMethod + * @return Zend_Pdf_Canvas_Interface + */ + public function clipPolygon($x, $y, $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) + { + $this->_addProcSet('PDF'); + + $firstPoint = true; + foreach ($x as $id => $xVal) { + $xObj = new Zend_Pdf_Element_Numeric($xVal); + $yObj = new Zend_Pdf_Element_Numeric($y[$id]); + + if ($firstPoint) { + $path = $xObj->toString() . ' ' . $yObj->toString() . " m\n"; + $firstPoint = false; + } else { + $path .= $xObj->toString() . ' ' . $yObj->toString() . " l\n"; + } + } + + $this->_contents .= $path; + + if ($fillMethod == Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) { + $this->_contents .= " h\n W\nn\n"; + } else { + // Even-Odd fill method. + $this->_contents .= " h\n W*\nn\n"; + } + + return $this; + } + + /** + * Intersect current clipping area with a rectangle. + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function clipRectangle($x1, $y1, $x2, $y2) + { + $this->_addProcSet('PDF'); + + $x1Obj = new Zend_Pdf_Element_Numeric($x1); + $y1Obj = new Zend_Pdf_Element_Numeric($y1); + $widthObj = new Zend_Pdf_Element_Numeric($x2 - $x1); + $height2Obj = new Zend_Pdf_Element_Numeric($y2 - $y1); + + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' ' + . $widthObj->toString() . ' ' . $height2Obj->toString() . " re\n" + . " W\nn\n"; + + return $this; + } + +// ------------------------------------------------------------------------------------------ + /** + * Draw a circle centered on x, y with a radius of radius. + * + * Method signatures: + * drawCircle($x, $y, $radius); + * drawCircle($x, $y, $radius, $fillType); + * drawCircle($x, $y, $radius, $startAngle, $endAngle); + * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType); + * + * + * It's not a really circle, because PDF supports only cubic Bezier curves. + * But _very_ good approximation. + * It differs from a real circle on a maximum 0.00026 radiuses + * (at PI/8, 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 and 15*PI/8 angles). + * At 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 and 7*PI/4 it's exactly a tangent to a circle. + * + * @param float $x + * @param float $y + * @param float $radius + * @param mixed $param4 + * @param mixed $param5 + * @param mixed $param6 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawCircle($x, $y, $radius, $param4 = null, $param5 = null, $param6 = null) + { + $this->drawEllipse($x - $radius, $y - $radius, + $x + $radius, $y + $radius, + $param4, $param5, $param6); + + return $this; + } + + /** + * Draw an ellipse inside the specified rectangle. + * + * Method signatures: + * drawEllipse($x1, $y1, $x2, $y2); + * drawEllipse($x1, $y1, $x2, $y2, $fillType); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType); + * + * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0 + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param mixed $param5 + * @param mixed $param6 + * @param mixed $param7 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawEllipse($x1, $y1, $x2, $y2, $param5 = null, $param6 = null, $param7 = null) + { + if ($param5 === null) { + // drawEllipse($x1, $y1, $x2, $y2); + $startAngle = null; + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE; + } else if ($param6 === null) { + // drawEllipse($x1, $y1, $x2, $y2, $fillType); + $startAngle = null; + $fillType = $param5; + } else { + // drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + // drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType); + $startAngle = $param5; + $endAngle = $param6; + + if ($param7 === null) { + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE; + } else { + $fillType = $param7; + } + } + + $this->_addProcSet('PDF'); + + if ($x2 < $x1) { + $temp = $x1; + $x1 = $x2; + $x2 = $temp; + } + if ($y2 < $y1) { + $temp = $y1; + $y1 = $y2; + $y2 = $temp; + } + + $x = ($x1 + $x2)/2.; + $y = ($y1 + $y2)/2.; + + $xC = new Zend_Pdf_Element_Numeric($x); + $yC = new Zend_Pdf_Element_Numeric($y); + + if ($startAngle !== null) { + if ($startAngle != 0) { $startAngle = fmod($startAngle, M_PI*2); } + if ($endAngle != 0) { $endAngle = fmod($endAngle, M_PI*2); } + + if ($startAngle > $endAngle) { + $endAngle += M_PI*2; + } + + $clipPath = $xC->toString() . ' ' . $yC->toString() . " m\n"; + $clipSectors = (int)ceil(($endAngle - $startAngle)/M_PI_4); + $clipRadius = max($x2 - $x1, $y2 - $y1); + + for($count = 0; $count <= $clipSectors; $count++) { + $pAngle = $startAngle + ($endAngle - $startAngle)*$count/(float)$clipSectors; + + $pX = new Zend_Pdf_Element_Numeric($x + cos($pAngle)*$clipRadius); + $pY = new Zend_Pdf_Element_Numeric($y + sin($pAngle)*$clipRadius); + $clipPath .= $pX->toString() . ' ' . $pY->toString() . " l\n"; + } + + $this->_contents .= "q\n" . $clipPath . "h\nW\nn\n"; + } + + $xLeft = new Zend_Pdf_Element_Numeric($x1); + $xRight = new Zend_Pdf_Element_Numeric($x2); + $yUp = new Zend_Pdf_Element_Numeric($y2); + $yDown = new Zend_Pdf_Element_Numeric($y1); + + $xDelta = 2*(M_SQRT2 - 1)*($x2 - $x1)/3.; + $yDelta = 2*(M_SQRT2 - 1)*($y2 - $y1)/3.; + $xr = new Zend_Pdf_Element_Numeric($x + $xDelta); + $xl = new Zend_Pdf_Element_Numeric($x - $xDelta); + $yu = new Zend_Pdf_Element_Numeric($y + $yDelta); + $yd = new Zend_Pdf_Element_Numeric($y - $yDelta); + + $this->_contents .= $xC->toString() . ' ' . $yUp->toString() . " m\n" + . $xr->toString() . ' ' . $yUp->toString() . ' ' + . $xRight->toString() . ' ' . $yu->toString() . ' ' + . $xRight->toString() . ' ' . $yC->toString() . " c\n" + . $xRight->toString() . ' ' . $yd->toString() . ' ' + . $xr->toString() . ' ' . $yDown->toString() . ' ' + . $xC->toString() . ' ' . $yDown->toString() . " c\n" + . $xl->toString() . ' ' . $yDown->toString() . ' ' + . $xLeft->toString() . ' ' . $yd->toString() . ' ' + . $xLeft->toString() . ' ' . $yC->toString() . " c\n" + . $xLeft->toString() . ' ' . $yu->toString() . ' ' + . $xl->toString() . ' ' . $yUp->toString() . ' ' + . $xC->toString() . ' ' . $yUp->toString() . " c\n"; + + switch ($fillType) { + case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE: + $this->_contents .= " B*\n"; + break; + case Zend_Pdf_Page::SHAPE_DRAW_FILL: + $this->_contents .= " f*\n"; + break; + case Zend_Pdf_Page::SHAPE_DRAW_STROKE: + $this->_contents .= " S\n"; + break; + } + + if ($startAngle !== null) { + $this->_contents .= "Q\n"; + } + + return $this; + } + + /** + * Draw an image at the specified position on the page. + * + * @param Zend_Pdf_Image $image + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2) + { + $this->_addProcSet('PDF'); + + $imageName = $this->_attachResource('XObject', $image); + $imageNameObj = new Zend_Pdf_Element_Name($imageName); + + $x1Obj = new Zend_Pdf_Element_Numeric($x1); + $y1Obj = new Zend_Pdf_Element_Numeric($y1); + $widthObj = new Zend_Pdf_Element_Numeric($x2 - $x1); + $heightObj = new Zend_Pdf_Element_Numeric($y2 - $y1); + + $this->_contents .= "q\n" + . '1 0 0 1 ' . $x1Obj->toString() . ' ' . $y1Obj->toString() . " cm\n" + . $widthObj->toString() . ' 0 0 ' . $heightObj->toString() . " 0 0 cm\n" + . $imageNameObj->toString() . " Do\n" + . "Q\n"; + + return $this; + } + + /** + * Draw a LayoutBox at the specified position on the page. + * + * @internal (not implemented now) + * + * @param Zend_Pdf_Element_LayoutBox $box + * @param float $x + * @param float $y + * @return Zend_Pdf_Canvas_Interface + */ + public function drawLayoutBox($box, $x, $y) + { + /** @todo implementation */ + return $this; + } + + /** + * Draw a line from x1,y1 to x2,y2. + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawLine($x1, $y1, $x2, $y2) + { + $this->_addProcSet('PDF'); + + $x1Obj = new Zend_Pdf_Element_Numeric($x1); + $y1Obj = new Zend_Pdf_Element_Numeric($y1); + $x2Obj = new Zend_Pdf_Element_Numeric($x2); + $y2Obj = new Zend_Pdf_Element_Numeric($y2); + + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " m\n" + . $x2Obj->toString() . ' ' . $y2Obj->toString() . " l\n S\n"; + + return $this; + } + + /** + * Draw a polygon. + * + * If $fillType is Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE or + * Zend_Pdf_Page::SHAPE_DRAW_FILL, then polygon is automatically closed. + * See detailed description of these methods in a PDF documentation + * (section 4.4.2 Path painting Operators, Filling) + * + * @param array $x - array of float (the X co-ordinates of the vertices) + * @param array $y - array of float (the Y co-ordinates of the vertices) + * @param integer $fillType + * @param integer $fillMethod + * @return Zend_Pdf_Canvas_Interface + */ + public function drawPolygon($x, $y, + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE, + $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) + { + $this->_addProcSet('PDF'); + + $firstPoint = true; + foreach ($x as $id => $xVal) { + $xObj = new Zend_Pdf_Element_Numeric($xVal); + $yObj = new Zend_Pdf_Element_Numeric($y[$id]); + + if ($firstPoint) { + $path = $xObj->toString() . ' ' . $yObj->toString() . " m\n"; + $firstPoint = false; + } else { + $path .= $xObj->toString() . ' ' . $yObj->toString() . " l\n"; + } + } + + $this->_contents .= $path; + + switch ($fillType) { + case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE: + if ($fillMethod == Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) { + $this->_contents .= " b\n"; + } else { + // Even-Odd fill method. + $this->_contents .= " b*\n"; + } + break; + case Zend_Pdf_Page::SHAPE_DRAW_FILL: + if ($fillMethod == Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING) { + $this->_contents .= " h\n f\n"; + } else { + // Even-Odd fill method. + $this->_contents .= " h\n f*\n"; + } + break; + case Zend_Pdf_Page::SHAPE_DRAW_STROKE: + $this->_contents .= " S\n"; + break; + } + + return $this; + } + + /** + * Draw a rectangle. + * + * Fill types: + * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) + * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle + * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param integer $fillType + * @return Zend_Pdf_Canvas_Interface + */ + public function drawRectangle($x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE) + { + $this->_addProcSet('PDF'); + + $x1Obj = new Zend_Pdf_Element_Numeric($x1); + $y1Obj = new Zend_Pdf_Element_Numeric($y1); + $widthObj = new Zend_Pdf_Element_Numeric($x2 - $x1); + $height2Obj = new Zend_Pdf_Element_Numeric($y2 - $y1); + + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' ' + . $widthObj->toString() . ' ' . $height2Obj->toString() . " re\n"; + + switch ($fillType) { + case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE: + $this->_contents .= " B*\n"; + break; + case Zend_Pdf_Page::SHAPE_DRAW_FILL: + $this->_contents .= " f*\n"; + break; + case Zend_Pdf_Page::SHAPE_DRAW_STROKE: + $this->_contents .= " S\n"; + break; + } + + return $this; + } + + /** + * Draw a rounded rectangle. + * + * Fill types: + * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) + * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle + * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle + * + * radius is an integer representing radius of the four corners, or an array + * of four integers representing the radius starting at top left, going + * clockwise + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param integer|array $radius + * @param integer $fillType + * @return Zend_Pdf_Canvas_Interface + */ + public function drawRoundedRectangle($x1, $y1, $x2, $y2, $radius, + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE) + { + + $this->_addProcSet('PDF'); + + if(!is_array($radius)) { + $radius = array($radius, $radius, $radius, $radius); + } else { + for ($i = 0; $i < 4; $i++) { + if(!isset($radius[$i])) { + $radius[$i] = 0; + } + } + } + + $topLeftX = $x1; + $topLeftY = $y2; + $topRightX = $x2; + $topRightY = $y2; + $bottomRightX = $x2; + $bottomRightY = $y1; + $bottomLeftX = $x1; + $bottomLeftY = $y1; + + //draw top side + $x1Obj = new Zend_Pdf_Element_Numeric($topLeftX + $radius[0]); + $y1Obj = new Zend_Pdf_Element_Numeric($topLeftY); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " m\n"; + $x1Obj = new Zend_Pdf_Element_Numeric($topRightX - $radius[1]); + $y1Obj = new Zend_Pdf_Element_Numeric($topRightY); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " l\n"; + + //draw top right corner if needed + if ($radius[1] != 0) { + $x1Obj = new Zend_Pdf_Element_Numeric($topRightX); + $y1Obj = new Zend_Pdf_Element_Numeric($topRightY); + $x2Obj = new Zend_Pdf_Element_Numeric($topRightX); + $y2Obj = new Zend_Pdf_Element_Numeric($topRightY); + $x3Obj = new Zend_Pdf_Element_Numeric($topRightX); + $y3Obj = new Zend_Pdf_Element_Numeric($topRightY - $radius[1]); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' ' + . $x2Obj->toString() . ' ' . $y2Obj->toString() . ' ' + . $x3Obj->toString() . ' ' . $y3Obj->toString() . ' ' + . " c\n"; + } + + //draw right side + $x1Obj = new Zend_Pdf_Element_Numeric($bottomRightX); + $y1Obj = new Zend_Pdf_Element_Numeric($bottomRightY + $radius[2]); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " l\n"; + + //draw bottom right corner if needed + if ($radius[2] != 0) { + $x1Obj = new Zend_Pdf_Element_Numeric($bottomRightX); + $y1Obj = new Zend_Pdf_Element_Numeric($bottomRightY); + $x2Obj = new Zend_Pdf_Element_Numeric($bottomRightX); + $y2Obj = new Zend_Pdf_Element_Numeric($bottomRightY); + $x3Obj = new Zend_Pdf_Element_Numeric($bottomRightX - $radius[2]); + $y3Obj = new Zend_Pdf_Element_Numeric($bottomRightY); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' ' + . $x2Obj->toString() . ' ' . $y2Obj->toString() . ' ' + . $x3Obj->toString() . ' ' . $y3Obj->toString() . ' ' + . " c\n"; + } + + //draw bottom side + $x1Obj = new Zend_Pdf_Element_Numeric($bottomLeftX + $radius[3]); + $y1Obj = new Zend_Pdf_Element_Numeric($bottomLeftY); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " l\n"; + + //draw bottom left corner if needed + if ($radius[3] != 0) { + $x1Obj = new Zend_Pdf_Element_Numeric($bottomLeftX); + $y1Obj = new Zend_Pdf_Element_Numeric($bottomLeftY); + $x2Obj = new Zend_Pdf_Element_Numeric($bottomLeftX); + $y2Obj = new Zend_Pdf_Element_Numeric($bottomLeftY); + $x3Obj = new Zend_Pdf_Element_Numeric($bottomLeftX); + $y3Obj = new Zend_Pdf_Element_Numeric($bottomLeftY + $radius[3]); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' ' + . $x2Obj->toString() . ' ' . $y2Obj->toString() . ' ' + . $x3Obj->toString() . ' ' . $y3Obj->toString() . ' ' + . " c\n"; + } + + //draw left side + $x1Obj = new Zend_Pdf_Element_Numeric($topLeftX); + $y1Obj = new Zend_Pdf_Element_Numeric($topLeftY - $radius[0]); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . " l\n"; + + //draw top left corner if needed + if ($radius[0] != 0) { + $x1Obj = new Zend_Pdf_Element_Numeric($topLeftX); + $y1Obj = new Zend_Pdf_Element_Numeric($topLeftY); + $x2Obj = new Zend_Pdf_Element_Numeric($topLeftX); + $y2Obj = new Zend_Pdf_Element_Numeric($topLeftY); + $x3Obj = new Zend_Pdf_Element_Numeric($topLeftX + $radius[0]); + $y3Obj = new Zend_Pdf_Element_Numeric($topLeftY); + $this->_contents .= $x1Obj->toString() . ' ' . $y1Obj->toString() . ' ' + . $x2Obj->toString() . ' ' . $y2Obj->toString() . ' ' + . $x3Obj->toString() . ' ' . $y3Obj->toString() . ' ' + . " c\n"; + } + + switch ($fillType) { + case Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE: + $this->_contents .= " B*\n"; + break; + case Zend_Pdf_Page::SHAPE_DRAW_FILL: + $this->_contents .= " f*\n"; + break; + case Zend_Pdf_Page::SHAPE_DRAW_STROKE: + $this->_contents .= " S\n"; + break; + } + + return $this; + } + + /** + * Draw a line of text at the specified position. + * + * @param string $text + * @param float $x + * @param float $y + * @param string $charEncoding (optional) Character encoding of source text. + * Defaults to current locale. + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Canvas_Interface + */ + public function drawText($text, $x, $y, $charEncoding = '') + { + if ($this->_font === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Font has not been set'); + } + + $this->_addProcSet('Text'); + + $textObj = new Zend_Pdf_Element_String($this->_font->encodeString($text, $charEncoding)); + $xObj = new Zend_Pdf_Element_Numeric($x); + $yObj = new Zend_Pdf_Element_Numeric($y); + + $this->_contents .= "BT\n" + . $xObj->toString() . ' ' . $yObj->toString() . " Td\n" + . $textObj->toString() . " Tj\n" + . "ET\n"; + + return $this; + } + + /** + * Close the path by drawing a straight line back to it's beginning. + * + * @internal (needs implementation) + * + * @throws Zend_Pdf_Exception - if a path hasn't been started with pathMove() + * @return Zend_Pdf_Canvas_Interface + */ + public function pathClose() + { + /** @todo implementation */ + return $this; + } + + /** + * Continue the open path in a straight line to the specified position. + * + * @internal (needs implementation) + * + * @param float $x - the X co-ordinate to move to + * @param float $y - the Y co-ordinate to move to + * @return Zend_Pdf_Canvas_Interface + */ + public function pathLine($x, $y) + { + /** @todo implementation */ + return $this; + } + + /** + * Start a new path at the specified position. If a path has already been started, + * move the cursor without drawing a line. + * + * @internal (needs implementation) + * + * @param float $x - the X co-ordinate to move to + * @param float $y - the Y co-ordinate to move to + * @return Zend_Pdf_Canvas_Interface + */ + public function pathMove($x, $y) + { + /** @todo implementation */ + return $this; + } + + /** + * Rotate the page. + * + * @param float $x - the X co-ordinate of rotation point + * @param float $y - the Y co-ordinate of rotation point + * @param float $angle - rotation angle + * @return Zend_Pdf_Canvas_Interface + */ + public function rotate($x, $y, $angle) + { + $cos = new Zend_Pdf_Element_Numeric(cos($angle)); + $sin = new Zend_Pdf_Element_Numeric(sin($angle)); + $mSin = new Zend_Pdf_Element_Numeric(-$sin->value); + + $xObj = new Zend_Pdf_Element_Numeric($x); + $yObj = new Zend_Pdf_Element_Numeric($y); + + $mXObj = new Zend_Pdf_Element_Numeric(-$x); + $mYObj = new Zend_Pdf_Element_Numeric(-$y); + + + $this->_addProcSet('PDF'); + $this->_contents .= '1 0 0 1 ' . $xObj->toString() . ' ' . $yObj->toString() . " cm\n" + . $cos->toString() . ' ' . $sin->toString() . ' ' . $mSin->toString() . ' ' . $cos->toString() . " 0 0 cm\n" + . '1 0 0 1 ' . $mXObj->toString() . ' ' . $mYObj->toString() . " cm\n"; + + return $this; + } + + /** + * Scale coordination system. + * + * @param float $xScale - X dimention scale factor + * @param float $yScale - Y dimention scale factor + * @return Zend_Pdf_Canvas_Interface + */ + public function scale($xScale, $yScale) + { + $xScaleObj = new Zend_Pdf_Element_Numeric($xScale); + $yScaleObj = new Zend_Pdf_Element_Numeric($yScale); + + $this->_addProcSet('PDF'); + $this->_contents .= $xScaleObj->toString() . ' 0 0 ' . $yScaleObj->toString() . " 0 0 cm\n"; + + return $this; + } + + /** + * Translate coordination system. + * + * @param float $xShift - X coordinate shift + * @param float $yShift - Y coordinate shift + * @return Zend_Pdf_Canvas_Interface + */ + public function translate($xShift, $yShift) + { + $xShiftObj = new Zend_Pdf_Element_Numeric($xShift); + $yShiftObj = new Zend_Pdf_Element_Numeric($yShift); + + $this->_addProcSet('PDF'); + $this->_contents .= '1 0 0 1 ' . $xShiftObj->toString() . ' ' . $yShiftObj->toString() . " cm\n"; + + return $this; + } + + /** + * Translate coordination system. + * + * @param float $x - the X co-ordinate of axis skew point + * @param float $y - the Y co-ordinate of axis skew point + * @param float $xAngle - X axis skew angle + * @param float $yAngle - Y axis skew angle + * @return Zend_Pdf_Canvas_Interface + */ + public function skew($x, $y, $xAngle, $yAngle) + { + $tanXObj = new Zend_Pdf_Element_Numeric(tan($xAngle)); + $tanYObj = new Zend_Pdf_Element_Numeric(-tan($yAngle)); + + $xObj = new Zend_Pdf_Element_Numeric($x); + $yObj = new Zend_Pdf_Element_Numeric($y); + + $mXObj = new Zend_Pdf_Element_Numeric(-$x); + $mYObj = new Zend_Pdf_Element_Numeric(-$y); + + $this->_addProcSet('PDF'); + $this->_contents .= '1 0 0 1 ' . $xObj->toString() . ' ' . $yObj->toString() . " cm\n" + . '1 ' . $tanXObj->toString() . ' ' . $tanYObj->toString() . " 1 0 0 cm\n" + . '1 0 0 1 ' . $mXObj->toString() . ' ' . $mYObj->toString() . " cm\n"; + + return $this; + } + + /** + * Writes the raw data to the page's content stream. + * + * Be sure to consult the PDF reference to ensure your syntax is correct. No + * attempt is made to ensure the validity of the stream data. + * + * @param string $data + * @param string $procSet (optional) Name of ProcSet to add. + * @return Zend_Pdf_Canvas_Interface + */ + public function rawWrite($data, $procSet = null) + { + if (! empty($procSet)) { + $this->_addProcSet($procSet); + } + $this->_contents .= $data; + + return $this; + } +} diff --git a/library/Zend/Pdf/Canvas/Interface.php b/library/Zend/Pdf/Canvas/Interface.php new file mode 100755 index 000000000..d81b35d80 --- /dev/null +++ b/library/Zend/Pdf/Canvas/Interface.php @@ -0,0 +1,493 @@ + => array( + * => , + * => , + * => , + * ... + * ), + * => array( + * => , + * => , + * => , + * ... + * ), + * ... + * 'ProcSet' => array() + * ) + * + * where ProcSet array is a list of used procedure sets names (strings). + * Allowed procedure set names: 'PDF', 'Text', 'ImageB', 'ImageC', 'ImageI' + * + * @internal + * @return array + */ + public function getResources(); + + /** + * Get drawing instructions stream + * + * It has to be returned as a PDF stream object to make it reusable. + * + * @internal + * @returns Zend_Pdf_Resource_ContentStream + */ + public function getContents(); + + /** + * Return canvas height. + * + * @return float + */ + public function getHeight(); + + /** + * Return canvas width. + * + * @return float + */ + public function getWidth(); + + /** + * Draw a canvas at the specified location + * + * If upper right corner is not specified then canvas heght and width + * are used. + * + * @param Zend_Pdf_Canvas_Interface $canvas + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawCanvas(Zend_Pdf_Canvas_Interface $canvas, $x1, $y1, $x2 = null, $y2 = null); + + /** + * Set fill color. + * + * @param Zend_Pdf_Color $color + * @return Zend_Pdf_Canvas_Interface + */ + public function setFillColor(Zend_Pdf_Color $color); + + /** + * Set line color. + * + * @param Zend_Pdf_Color $color + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineColor(Zend_Pdf_Color $color); + + /** + * Set line width. + * + * @param float $width + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineWidth($width); + + /** + * Set line dashing pattern + * + * Pattern is an array of floats: array(on_length, off_length, on_length, off_length, ...) + * or Zend_Pdf_Page::LINE_DASHING_SOLID constant + * Phase is shift from the beginning of line. + * + * @param mixed $pattern + * @param array $phase + * @return Zend_Pdf_Canvas_Interface + */ + public function setLineDashingPattern($pattern, $phase = 0); + + /** + * Set current font. + * + * @param Zend_Pdf_Resource_Font $font + * @param float $fontSize + * @return Zend_Pdf_Canvas_Interface + */ + public function setFont(Zend_Pdf_Resource_Font $font, $fontSize); + + /** + * Set the style to use for future drawing operations on this page + * + * @param Zend_Pdf_Style $style + * @return Zend_Pdf_Canvas_Interface + */ + public function setStyle(Zend_Pdf_Style $style); + + /** + * Get current font. + * + * @return Zend_Pdf_Resource_Font $font + */ + public function getFont(); + + /** + * Get current font size + * + * @return float $fontSize + */ + public function getFontSize(); + + /** + * Return the style, applied to the page. + * + * @return Zend_Pdf_Style|null + */ + public function getStyle(); + + /** + * Save the graphics state of this page. + * This takes a snapshot of the currently applied style, position, clipping area and + * any rotation/translation/scaling that has been applied. + * + * @throws Zend_Pdf_Exception - if a save is performed with an open path + * @return Zend_Pdf_Page + */ + public function saveGS(); + + /** + * Set the transparancy + * + * $alpha == 0 - transparent + * $alpha == 1 - opaque + * + * Transparency modes, supported by PDF: + * Normal (default), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, + * SoftLight, Difference, Exclusion + * + * @param float $alpha + * @param string $mode + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Canvas_Interface + */ + public function setAlpha($alpha, $mode = 'Normal'); + + /** + * Intersect current clipping area with a circle. + * + * @param float $x + * @param float $y + * @param float $radius + * @param float $startAngle + * @param float $endAngle + * @return Zend_Pdf_Canvas_Interface + */ + public function clipCircle($x, $y, $radius, $startAngle = null, $endAngle = null); + + /** + * Intersect current clipping area with a polygon. + * + * Method signatures: + * drawEllipse($x1, $y1, $x2, $y2); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + * + * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0 + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param float $startAngle + * @param float $endAngle + * @return Zend_Pdf_Canvas_Interface + */ + public function clipEllipse($x1, $y1, $x2, $y2, $startAngle = null, $endAngle = null); + + /** + * Intersect current clipping area with a polygon. + * + * @param array $x - array of float (the X co-ordinates of the vertices) + * @param array $y - array of float (the Y co-ordinates of the vertices) + * @param integer $fillMethod + * @return Zend_Pdf_Canvas_Interface + */ + public function clipPolygon($x, $y, $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING); + + /** + * Intersect current clipping area with a rectangle. + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function clipRectangle($x1, $y1, $x2, $y2); + + /** + * Draw a circle centered on x, y with a radius of radius. + * + * Method signatures: + * drawCircle($x, $y, $radius); + * drawCircle($x, $y, $radius, $fillType); + * drawCircle($x, $y, $radius, $startAngle, $endAngle); + * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType); + * + * + * It's not a really circle, because PDF supports only cubic Bezier curves. + * But _very_ good approximation. + * It differs from a real circle on a maximum 0.00026 radiuses + * (at PI/8, 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 and 15*PI/8 angles). + * At 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 and 7*PI/4 it's exactly a tangent to a circle. + * + * @param float $x + * @param float $y + * @param float $radius + * @param mixed $param4 + * @param mixed $param5 + * @param mixed $param6 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawCircle($x, $y, $radius, $param4 = null, $param5 = null, $param6 = null); + + /** + * Draw an ellipse inside the specified rectangle. + * + * Method signatures: + * drawEllipse($x1, $y1, $x2, $y2); + * drawEllipse($x1, $y1, $x2, $y2, $fillType); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle); + * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType); + * + * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0 + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param mixed $param5 + * @param mixed $param6 + * @param mixed $param7 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawEllipse($x1, $y1, $x2, $y2, $param5 = null, $param6 = null, $param7 = null); + + /** + * Draw an image at the specified position on the page. + * + * @param Zend_Pdf_Image $image + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2); + + /** + * Draw a LayoutBox at the specified position on the page. + * + * @internal (not implemented now) + * + * @param Zend_Pdf_Element_LayoutBox $box + * @param float $x + * @param float $y + * @return Zend_Pdf_Canvas_Interface + */ + public function drawLayoutBox($box, $x, $y); + + /** + * Draw a line from x1,y1 to x2,y2. + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @return Zend_Pdf_Canvas_Interface + */ + public function drawLine($x1, $y1, $x2, $y2); + + /** + * Draw a polygon. + * + * If $fillType is Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE or + * Zend_Pdf_Page::SHAPE_DRAW_FILL, then polygon is automatically closed. + * See detailed description of these methods in a PDF documentation + * (section 4.4.2 Path painting Operators, Filling) + * + * @param array $x - array of float (the X co-ordinates of the vertices) + * @param array $y - array of float (the Y co-ordinates of the vertices) + * @param integer $fillType + * @param integer $fillMethod + * @return Zend_Pdf_Canvas_Interface + */ + public function drawPolygon($x, $y, + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE, + $fillMethod = Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING); + /** + * Draw a rectangle. + * + * Fill types: + * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) + * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle + * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param integer $fillType + * @return Zend_Pdf_Canvas_Interface + */ + public function drawRectangle($x1, $y1, $x2, $y2, $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE); + + /** + * Draw a rounded rectangle. + * + * Fill types: + * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - fill rectangle and stroke (default) + * Zend_Pdf_Page::SHAPE_DRAW_STROKE - stroke rectangle + * Zend_Pdf_Page::SHAPE_DRAW_FILL - fill rectangle + * + * radius is an integer representing radius of the four corners, or an array + * of four integers representing the radius starting at top left, going + * clockwise + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param integer|array $radius + * @param integer $fillType + * @return Zend_Pdf_Canvas_Interface + */ + public function drawRoundedRectangle($x1, $y1, $x2, $y2, $radius, + $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE); + + /** + * Draw a line of text at the specified position. + * + * @param string $text + * @param float $x + * @param float $y + * @param string $charEncoding (optional) Character encoding of source text. + * Defaults to current locale. + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Canvas_Interface + */ + public function drawText($text, $x, $y, $charEncoding = ''); + + /** + * Close the path by drawing a straight line back to it's beginning. + * + * @internal (needs implementation) + * + * @throws Zend_Pdf_Exception - if a path hasn't been started with pathMove() + * @return Zend_Pdf_Canvas_Interface + */ + public function pathClose(); + + /** + * Continue the open path in a straight line to the specified position. + * + * @internal (needs implementation) + * + * @param float $x - the X co-ordinate to move to + * @param float $y - the Y co-ordinate to move to + * @return Zend_Pdf_Canvas_Interface + */ + public function pathLine($x, $y); + + /** + * Start a new path at the specified position. If a path has already been started, + * move the cursor without drawing a line. + * + * @internal (needs implementation) + * + * @param float $x - the X co-ordinate to move to + * @param float $y - the Y co-ordinate to move to + * @return Zend_Pdf_Canvas_Interface + */ + public function pathMove($x, $y); + + /** + * Rotate the page. + * + * @param float $x - the X co-ordinate of rotation point + * @param float $y - the Y co-ordinate of rotation point + * @param float $angle - rotation angle + * @return Zend_Pdf_Canvas_Interface + */ + public function rotate($x, $y, $angle); + + /** + * Scale coordination system. + * + * @param float $xScale - X dimention scale factor + * @param float $yScale - Y dimention scale factor + * @return Zend_Pdf_Canvas_Interface + */ + public function scale($xScale, $yScale); + + /** + * Translate coordination system. + * + * @param float $xShift - X coordinate shift + * @param float $yShift - Y coordinate shift + * @return Zend_Pdf_Canvas_Interface + */ + public function translate($xShift, $yShift); + + /** + * Translate coordination system. + * + * @param float $x - the X co-ordinate of axis skew point + * @param float $y - the Y co-ordinate of axis skew point + * @param float $xAngle - X axis skew angle + * @param float $yAngle - Y axis skew angle + * @return Zend_Pdf_Canvas_Interface + */ + public function skew($x, $y, $xAngle, $yAngle); + + /** + * Writes the raw data to the page's content stream. + * + * Be sure to consult the PDF reference to ensure your syntax is correct. No + * attempt is made to ensure the validity of the stream data. + * + * @param string $data + * @param string $procSet (optional) Name of ProcSet to add. + * @return Zend_Pdf_Canvas_Interface + */ + public function rawWrite($data, $procSet = null); +} diff --git a/library/Zend/Pdf/Cmap.php b/library/Zend/Pdf/Cmap.php new file mode 100755 index 000000000..29ca4adab --- /dev/null +++ b/library/Zend/Pdf/Cmap.php @@ -0,0 +1,336 @@ + + *
  • {@link http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6cmap.html} + *
  • {@link http://www.microsoft.com/OpenType/OTSpec/cmap.htm} + *
  • {@link http://partners.adobe.com/public/developer/opentype/index_cmap.html} + *
+ * + * @todo Write code for Zend_Pdf_FontCmap_HighByteMapping class. + * @todo Write code for Zend_Pdf_FontCmap_MixedCoverage class. + * @todo Write code for Zend_Pdf_FontCmap_TrimmedArray class. + * @todo Write code for Zend_Pdf_FontCmap_SegmentedCoverage class. + * + * @package Zend_Pdf + * @subpackage Fonts + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Pdf_Cmap +{ + /**** Class Constants ****/ + + + /* Cmap Table Types */ + + /** + * Byte Encoding character map table type. + */ + const TYPE_BYTE_ENCODING = 0x00; + + /** + * High Byte Mapping character map table type. + */ + const TYPE_HIGH_BYTE_MAPPING = 0x02; + + /** + * Segment Value to Delta Mapping character map table type. + */ + const TYPE_SEGMENT_TO_DELTA = 0x04; + + /** + * Trimmed Table character map table type. + */ + const TYPE_TRIMMED_TABLE = 0x06; + + /** + * Mixed Coverage character map table type. + */ + const TYPE_MIXED_COVERAGE = 0x08; + + /** + * Trimmed Array character map table type. + */ + const TYPE_TRIMMED_ARRAY = 0x0a; + + /** + * Segmented Coverage character map table type. + */ + const TYPE_SEGMENTED_COVERAGE = 0x0c; + + /** + * Static Byte Encoding character map table type. Variant of + * {@link TYPE_BYTEENCODING}. + */ + const TYPE_BYTE_ENCODING_STATIC = 0xf1; + + /** + * Unknown character map table type. + */ + const TYPE_UNKNOWN = 0xff; + + + /* Special Glyph Names */ + + /** + * Glyph representing missing characters. + */ + const MISSING_CHARACTER_GLYPH = 0x00; + + + + /**** Public Interface ****/ + + + /* Factory Methods */ + + /** + * Instantiates the appropriate concrete subclass based on the type of cmap + * table and returns the instance. + * + * The cmap type must be one of the following values: + *
    + *
  • {@link Zend_Pdf_Cmap::TYPE_BYTE_ENCODING} + *
  • {@link Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC} + *
  • {@link Zend_Pdf_Cmap::TYPE_HIGH_BYTE_MAPPING} + *
  • {@link Zend_Pdf_Cmap::TYPE_SEGMENT_TO_DELTA} + *
  • {@link Zend_Pdf_Cmap::TYPE_TRIMMED_TABLE} + *
  • {@link Zend_Pdf_Cmap::TYPE_MIXED_COVERAGE} + *
  • {@link Zend_Pdf_Cmap::TYPE_TRIMMED_ARRAY} + *
  • {@link Zend_Pdf_Cmap::TYPE_SEGMENTED_COVERAGE} + *
+ * + * Throws an exception if the table type is invalid or the cmap table data + * cannot be validated. + * + * @param integer $cmapType Type of cmap. + * @param mixed $cmapData Cmap table data. Usually a string or array. + * @return Zend_Pdf_Cmap + * @throws Zend_Pdf_Exception + */ + public static function cmapWithTypeData($cmapType, $cmapData) + { + switch ($cmapType) { + case Zend_Pdf_Cmap::TYPE_BYTE_ENCODING: + require_once 'Zend/Pdf/Cmap/ByteEncoding.php'; + return new Zend_Pdf_Cmap_ByteEncoding($cmapData); + + case Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC: + require_once 'Zend/Pdf/Cmap/ByteEncoding/Static.php'; + return new Zend_Pdf_Cmap_ByteEncoding_Static($cmapData); + + case Zend_Pdf_Cmap::TYPE_HIGH_BYTE_MAPPING: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('High byte mapping cmap currently unsupported', + Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED); + + case Zend_Pdf_Cmap::TYPE_SEGMENT_TO_DELTA: + require_once 'Zend/Pdf/Cmap/SegmentToDelta.php'; + return new Zend_Pdf_Cmap_SegmentToDelta($cmapData); + + case Zend_Pdf_Cmap::TYPE_TRIMMED_TABLE: + require_once 'Zend/Pdf/Cmap/TrimmedTable.php'; + return new Zend_Pdf_Cmap_TrimmedTable($cmapData); + + case Zend_Pdf_Cmap::TYPE_MIXED_COVERAGE: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Mixed coverage cmap currently unsupported', + Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED); + + case Zend_Pdf_Cmap::TYPE_TRIMMED_ARRAY: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Trimmed array cmap currently unsupported', + Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED); + + case Zend_Pdf_Cmap::TYPE_SEGMENTED_COVERAGE: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Segmented coverage cmap currently unsupported', + Zend_Pdf_Exception::CMAP_TYPE_UNSUPPORTED); + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unknown cmap type: $cmapType", + Zend_Pdf_Exception::CMAP_UNKNOWN_TYPE); + } + } + + + /* Abstract Methods */ + + /** + * Object constructor + * + * Parses the raw binary table data. Throws an exception if the table is + * malformed. + * + * @param string $cmapData Raw binary cmap table data. + * @throws Zend_Pdf_Exception + */ + abstract public function __construct($cmapData); + + /** + * Returns an array of glyph numbers corresponding to the Unicode characters. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumberForCharacter()}. + * + * @param array $characterCodes Array of Unicode character codes (code points). + * @return array Array of glyph numbers. + */ + abstract public function glyphNumbersForCharacters($characterCodes); + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + abstract public function glyphNumberForCharacter($characterCode); + + /** + * Returns an array containing the Unicode characters that have entries in + * this character map. + * + * @return array Unicode character codes. + */ + abstract public function getCoveredCharacters(); + + /** + * Returns an array containing the glyphs numbers that have entries in this character map. + * Keys are Unicode character codes (integers) + * + * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters()) + * call, but this method do it in more effective way (prepare complete list instead of searching + * glyph for each character code). + * + * @internal + * @return array Array representing => pairs. + */ + abstract public function getCoveredCharactersGlyphs(); + + + /**** Internal Methods ****/ + + + /* Internal Utility Methods */ + + /** + * Extracts a signed 2-byte integer from a string. + * + * Integers are always big-endian. Throws an exception if the index is out + * of range. + * + * @param string &$data + * @param integer $index Position in string of integer. + * @return integer + * @throws Zend_Pdf_Exception + */ + protected function _extractInt2(&$data, $index) + { + if (($index < 0) | (($index + 1) > strlen($data))) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Index out of range: $index", + Zend_Pdf_Exception::INDEX_OUT_OF_RANGE); + } + $number = ord($data[$index]); + if (($number & 0x80) == 0x80) { // negative + $number = ~((((~ $number) & 0xff) << 8) | ((~ ord($data[++$index])) & 0xff)); + } else { + $number = ($number << 8) | ord($data[++$index]); + } + return $number; + } + + /** + * Extracts an unsigned 2-byte integer from a string. + * + * Integers are always big-endian. Throws an exception if the index is out + * of range. + * + * @param string &$data + * @param integer $index Position in string of integer. + * @return integer + * @throws Zend_Pdf_Exception + */ + protected function _extractUInt2(&$data, $index) + { + if (($index < 0) | (($index + 1) > strlen($data))) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Index out of range: $index", + Zend_Pdf_Exception::INDEX_OUT_OF_RANGE); + } + $number = (ord($data[$index]) << 8) | ord($data[++$index]); + return $number; + } + + /** + * Extracts an unsigned 4-byte integer from a string. + * + * Integers are always big-endian. Throws an exception if the index is out + * of range. + * + * NOTE: If you ask for a 4-byte unsigned integer on a 32-bit machine, the + * resulting value WILL BE SIGNED because PHP uses signed integers internally + * for everything. To guarantee portability, be sure to use bitwise or + * similar operators on large integers! + * + * @param string &$data + * @param integer $index Position in string of integer. + * @return integer + * @throws Zend_Pdf_Exception + */ + protected function _extractUInt4(&$data, $index) + { + if (($index < 0) | (($index + 3) > strlen($data))) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Index out of range: $index", + Zend_Pdf_Exception::INDEX_OUT_OF_RANGE); + } + $number = (ord($data[$index]) << 24) | (ord($data[++$index]) << 16) | + (ord($data[++$index]) << 8) | ord($data[++$index]); + return $number; + } + +} diff --git a/library/Zend/Pdf/Cmap/ByteEncoding.php b/library/Zend/Pdf/Cmap/ByteEncoding.php new file mode 100755 index 000000000..6cb2c552f --- /dev/null +++ b/library/Zend/Pdf/Cmap/ByteEncoding.php @@ -0,0 +1,447 @@ + $characterCode) { + + if (! isset($this->_glyphIndexArray[$characterCode])) { + $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + continue; + } + + $glyphNumbers[$key] = $this->_glyphIndexArray[$characterCode]; + + } + return $glyphNumbers; + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + if (! isset($this->_glyphIndexArray[$characterCode])) { + return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + } + return $this->_glyphIndexArray[$characterCode]; + } + + /** + * Returns an array containing the Unicode characters that have entries in + * this character map. + * + * @return array Unicode character codes. + */ + public function getCoveredCharacters() + { + return array_keys($this->_glyphIndexArray); + } + + /** + * Returns an array containing the glyphs numbers that have entries in this character map. + * Keys are Unicode character codes (integers) + * + * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters()) + * call, but this method do it in more effective way (prepare complete list instead of searching + * glyph for each character code). + * + * @internal + * @return array Array representing => pairs. + */ + public function getCoveredCharactersGlyphs() + { + return $this->_glyphIndexArray; + } + + + /* Object Lifecycle */ + + /** + * Object constructor + * + * Parses the raw binary table data. Throws an exception if the table is + * malformed. + * + * @param string $cmapData Raw binary cmap table data. + * @throws Zend_Pdf_Exception + */ + public function __construct($cmapData) + { + /* Sanity check: This table must be exactly 262 bytes long. + */ + $actualLength = strlen($cmapData); + if ($actualLength != 262) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Insufficient table data', + Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL); + } + + /* Sanity check: Make sure this is right data for this table type. + */ + $type = $this->_extractUInt2($cmapData, 0); + if ($type != Zend_Pdf_Cmap::TYPE_BYTE_ENCODING) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong cmap table type', + Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE); + } + + $length = $this->_extractUInt2($cmapData, 2); + if ($length != $actualLength) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)", + Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH); + } + + /* Mapping tables should be language-independent. The font may not work + * as expected if they are not. Unfortunately, many font files in the + * wild incorrectly record a language ID in this field, so we can't + * call this a failure. + */ + $language = $this->_extractUInt2($cmapData, 4); + if ($language != 0) { + // Record a warning here somehow? + } + + /* The mapping between the Mac Roman and Unicode characters is static. + * For simplicity, just put all 256 glyph indices into one array keyed + * off the corresponding Unicode character. + */ + $i = 6; + $this->_glyphIndexArray[0x00] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x01] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x03] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x04] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x05] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x06] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x07] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x08] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x09] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x10] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x11] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x12] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x13] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x14] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x15] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x16] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x17] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x18] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x19] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x1a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x1b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x1c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x1d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x1e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x1f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x20] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x21] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x22] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x23] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x24] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x25] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x26] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x27] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x28] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x29] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x30] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x31] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x32] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x33] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x34] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x35] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x36] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x37] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x38] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x39] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x3a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x3b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x3c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x3d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x3e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x3f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x40] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x41] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x42] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x43] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x44] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x45] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x46] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x47] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x48] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x49] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x4a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x4b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x4c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x4d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x4e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x4f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x50] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x51] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x52] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x53] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x54] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x55] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x56] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x57] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x58] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x59] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x5a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x5b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x5c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x5d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x5e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x5f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x60] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x61] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x62] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x63] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x64] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x65] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x66] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x67] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x68] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x69] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x6a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x6b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x6c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x6d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x6e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x6f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x70] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x71] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x72] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x73] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x74] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x75] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x76] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x77] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x78] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x79] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x7a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x7b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x7c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x7d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x7e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x7f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc4] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc5] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc7] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd1] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd6] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xdc] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe1] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe0] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe2] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe4] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe3] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe5] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe7] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xea] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xeb] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xed] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xec] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xee] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xef] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf1] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf3] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf2] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf4] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf6] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf5] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xfa] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xfb] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xfc] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2020] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb0] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa2] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa3] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa7] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2022] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb6] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xdf] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xae] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2122] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb4] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2260] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc6] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x221e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb1] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2264] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2265] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa5] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb5] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2202] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2211] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x220f] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x03c0] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x222b] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xaa] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xba] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x03a9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xe6] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xbf] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa1] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xac] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x221a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0192] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2248] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2206] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xab] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xbb] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2026] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xa0] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc0] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc3] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd5] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0152] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0153] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2013] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2014] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x201c] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x201d] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2018] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2019] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf7] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x25ca] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xff] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0178] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2044] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x20ac] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2039] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x203a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xfb01] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xfb02] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2021] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb7] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x201a] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x201e] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x2030] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc2] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xca] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc1] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xcb] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xc8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xcd] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xce] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xcf] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xcc] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd3] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd4] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xf8ff] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd2] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xda] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xdb] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xd9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x0131] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02c6] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02dc] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xaf] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02d8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02d9] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02da] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0xb8] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02dd] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02db] = ord($cmapData[$i++]); + $this->_glyphIndexArray[0x02c7] = ord($cmapData[$i]); + } + +} diff --git a/library/Zend/Pdf/Cmap/ByteEncoding/Static.php b/library/Zend/Pdf/Cmap/ByteEncoding/Static.php new file mode 100755 index 000000000..f2a087dc8 --- /dev/null +++ b/library/Zend/Pdf/Cmap/ByteEncoding/Static.php @@ -0,0 +1,62 @@ +_glyphIndexArray = $cmapData; + } + +} diff --git a/library/Zend/Pdf/Cmap/SegmentToDelta.php b/library/Zend/Pdf/Cmap/SegmentToDelta.php new file mode 100755 index 000000000..d72d3eb84 --- /dev/null +++ b/library/Zend/Pdf/Cmap/SegmentToDelta.php @@ -0,0 +1,407 @@ + $characterCode) { + + /* These tables only cover the 16-bit character range. + */ + if ($characterCode > 0xffff) { + $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + continue; + } + + /* Determine where to start the binary search. The segments are + * ordered from lowest-to-highest. We are looking for the first + * segment whose end code is greater than or equal to our character + * code. + * + * If the end code at the top of the search range is larger, then + * our target is probably below it. + * + * If it is smaller, our target is probably above it, so move the + * search range to the end of the segment list. + */ + if ($this->_searchRangeEndCode >= $characterCode) { + $searchIndex = $this->_searchRange; + } else { + $searchIndex = $this->_segmentCount; + } + + /* Now do a binary search to find the first segment whose end code + * is greater or equal to our character code. No matter the number + * of segments (there may be hundreds in a large font), we will only + * need to perform $this->_searchIterations. + */ + for ($i = 1; $i <= $this->_searchIterations; $i++) { + if ($this->_segmentTableEndCodes[$searchIndex] >= $characterCode) { + $subtableIndex = $searchIndex; + $searchIndex -= $this->_searchRange >> $i; + } else { + $searchIndex += $this->_searchRange >> $i; + } + } + + /* If the segment's start code is greater than our character code, + * that character is not represented in this font. Move on. + */ + if ($this->_segmentTableStartCodes[$subtableIndex] > $characterCode) { + $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + continue; + } + + if ($this->_segmentTableIdRangeOffsets[$subtableIndex] == 0) { + /* This segment uses a simple mapping from character code to + * glyph number. + */ + $glyphNumbers[$key] = ($characterCode + $this->_segmentTableIdDeltas[$subtableIndex]) % 65536; + + } else { + /* This segment relies on the glyph index array to determine the + * glyph number. The calculation below determines the correct + * index into that array. It's a little odd because the range + * offset in the font file is designed to quickly provide an + * address of the index in the raw binary data instead of the + * index itself. Since we've parsed the data into arrays, we + * must process it a bit differently. + */ + $glyphIndex = ($characterCode - $this->_segmentTableStartCodes[$subtableIndex] + + $this->_segmentTableIdRangeOffsets[$subtableIndex] - $this->_segmentCount + + $subtableIndex - 1); + $glyphNumbers[$key] = $this->_glyphIndexArray[$glyphIndex]; + + } + + } + return $glyphNumbers; + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + /* This code is pretty much a copy of glyphNumbersForCharacters(). + * See that method for inline documentation. + */ + + if ($characterCode > 0xffff) { + return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + } + + if ($this->_searchRangeEndCode >= $characterCode) { + $searchIndex = $this->_searchRange; + } else { + $searchIndex = $this->_segmentCount; + } + + for ($i = 1; $i <= $this->_searchIterations; $i++) { + if ($this->_segmentTableEndCodes[$searchIndex] >= $characterCode) { + $subtableIndex = $searchIndex; + $searchIndex -= $this->_searchRange >> $i; + } else { + $searchIndex += $this->_searchRange >> $i; + } + } + + if ($this->_segmentTableStartCodes[$subtableIndex] > $characterCode) { + return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + } + + if ($this->_segmentTableIdRangeOffsets[$subtableIndex] == 0) { + $glyphNumber = ($characterCode + $this->_segmentTableIdDeltas[$subtableIndex]) % 65536; + } else { + $glyphIndex = ($characterCode - $this->_segmentTableStartCodes[$subtableIndex] + + $this->_segmentTableIdRangeOffsets[$subtableIndex] - $this->_segmentCount + + $subtableIndex - 1); + $glyphNumber = $this->_glyphIndexArray[$glyphIndex]; + } + return $glyphNumber; + } + + /** + * Returns an array containing the Unicode characters that have entries in + * this character map. + * + * @return array Unicode character codes. + */ + public function getCoveredCharacters() + { + $characterCodes = array(); + for ($i = 1; $i <= $this->_segmentCount; $i++) { + for ($code = $this->_segmentTableStartCodes[$i]; $code <= $this->_segmentTableEndCodes[$i]; $code++) { + $characterCodes[] = $code; + } + } + return $characterCodes; + } + + + /** + * Returns an array containing the glyphs numbers that have entries in this character map. + * Keys are Unicode character codes (integers) + * + * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters()) + * call, but this method do it in more effective way (prepare complete list instead of searching + * glyph for each character code). + * + * @internal + * @return array Array representing => pairs. + */ + public function getCoveredCharactersGlyphs() + { + $glyphNumbers = array(); + + for ($segmentNum = 1; $segmentNum <= $this->_segmentCount; $segmentNum++) { + if ($this->_segmentTableIdRangeOffsets[$segmentNum] == 0) { + $delta = $this->_segmentTableIdDeltas[$segmentNum]; + + for ($code = $this->_segmentTableStartCodes[$segmentNum]; + $code <= $this->_segmentTableEndCodes[$segmentNum]; + $code++) { + $glyphNumbers[$code] = ($code + $delta) % 65536; + } + } else { + $code = $this->_segmentTableStartCodes[$segmentNum]; + $glyphIndex = $this->_segmentTableIdRangeOffsets[$segmentNum] - ($this->_segmentCount - $segmentNum) - 1; + + while ($code <= $this->_segmentTableEndCodes[$segmentNum]) { + $glyphNumbers[$code] = $this->_glyphIndexArray[$glyphIndex]; + + $code++; + $glyphIndex++; + } + } + } + + return $glyphNumbers; + } + + + + /* Object Lifecycle */ + + /** + * Object constructor + * + * Parses the raw binary table data. Throws an exception if the table is + * malformed. + * + * @param string $cmapData Raw binary cmap table data. + * @throws Zend_Pdf_Exception + */ + public function __construct($cmapData) + { + /* Sanity check: The table should be at least 23 bytes in size. + */ + $actualLength = strlen($cmapData); + if ($actualLength < 23) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Insufficient table data', + Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL); + } + + /* Sanity check: Make sure this is right data for this table type. + */ + $type = $this->_extractUInt2($cmapData, 0); + if ($type != Zend_Pdf_Cmap::TYPE_SEGMENT_TO_DELTA) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong cmap table type', + Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE); + } + + $length = $this->_extractUInt2($cmapData, 2); + if ($length != $actualLength) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)", + Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH); + } + + /* Mapping tables should be language-independent. The font may not work + * as expected if they are not. Unfortunately, many font files in the + * wild incorrectly record a language ID in this field, so we can't + * call this a failure. + */ + $language = $this->_extractUInt2($cmapData, 4); + if ($language != 0) { + // Record a warning here somehow? + } + + /* These two values are stored premultiplied by two which is convienent + * when using the binary data directly, but we're parsing it out to + * native PHP data types, so divide by two. + */ + $this->_segmentCount = $this->_extractUInt2($cmapData, 6) >> 1; + $this->_searchRange = $this->_extractUInt2($cmapData, 8) >> 1; + + $this->_searchIterations = $this->_extractUInt2($cmapData, 10) + 1; + + $offset = 14; + for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) { + $this->_segmentTableEndCodes[$i] = $this->_extractUInt2($cmapData, $offset); + } + + $this->_searchRangeEndCode = $this->_segmentTableEndCodes[$this->_searchRange]; + + $offset += 2; // reserved bytes + + for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) { + $this->_segmentTableStartCodes[$i] = $this->_extractUInt2($cmapData, $offset); + } + + for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) { + $this->_segmentTableIdDeltas[$i] = $this->_extractInt2($cmapData, $offset); // signed + } + + /* The range offset helps determine the index into the glyph index array. + * Like the segment count and search range above, it's stored as a byte + * multiple in the font, so divide by two as we extract the values. + */ + for ($i = 1; $i <= $this->_segmentCount; $i++, $offset += 2) { + $this->_segmentTableIdRangeOffsets[$i] = $this->_extractUInt2($cmapData, $offset) >> 1; + } + + /* The size of the glyph index array varies by font and depends on the + * extent of the usage of range offsets versus deltas. Some fonts may + * not have any entries in this array. + */ + for (; $offset < $length; $offset += 2) { + $this->_glyphIndexArray[] = $this->_extractUInt2($cmapData, $offset); + } + + /* Sanity check: After reading all of the data, we should be at the end + * of the table. + */ + if ($offset != $length) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Ending offset ($offset) does not match length ($length)", + Zend_Pdf_Exception::CMAP_FINAL_OFFSET_NOT_LENGTH); + } + } + +} diff --git a/library/Zend/Pdf/Cmap/TrimmedTable.php b/library/Zend/Pdf/Cmap/TrimmedTable.php new file mode 100755 index 000000000..a2f859e3d --- /dev/null +++ b/library/Zend/Pdf/Cmap/TrimmedTable.php @@ -0,0 +1,231 @@ + $characterCode) { + + if (($characterCode < $this->_startCode) || ($characterCode > $this->_endCode)) { + $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + continue; + } + + $glyphIndex = $characterCode - $this->_startCode; + $glyphNumbers[$key] = $this->_glyphIndexArray[$glyphIndex]; + + } + return $glyphNumbers; + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + if (($characterCode < $this->_startCode) || ($characterCode > $this->_endCode)) { + return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH; + } + $glyphIndex = $characterCode - $this->_startCode; + return $this->_glyphIndexArray[$glyphIndex]; + } + + /** + * Returns an array containing the Unicode characters that have entries in + * this character map. + * + * @return array Unicode character codes. + */ + public function getCoveredCharacters() + { + $characterCodes = array(); + for ($code = $this->_startCode; $code <= $this->_endCode; $code++) { + $characterCodes[] = $code; + } + return $characterCodes; + } + + + /** + * Returns an array containing the glyphs numbers that have entries in this character map. + * Keys are Unicode character codes (integers) + * + * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters()) + * call, but this method do it in more effective way (prepare complete list instead of searching + * glyph for each character code). + * + * @internal + * @return array Array representing => pairs. + */ + public function getCoveredCharactersGlyphs() + { + $glyphNumbers = array(); + for ($code = $this->_startCode; $code <= $this->_endCode; $code++) { + $glyphNumbers[$code] = $this->_glyphIndexArray[$code - $this->_startCode]; + } + + return $glyphNumbers; + } + + + /* Object Lifecycle */ + + /** + * Object constructor + * + * Parses the raw binary table data. Throws an exception if the table is + * malformed. + * + * @param string $cmapData Raw binary cmap table data. + * @throws Zend_Pdf_Exception + */ + public function __construct($cmapData) + { + /* Sanity check: The table should be at least 9 bytes in size. + */ + $actualLength = strlen($cmapData); + if ($actualLength < 9) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Insufficient table data', + Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL); + } + + /* Sanity check: Make sure this is right data for this table type. + */ + $type = $this->_extractUInt2($cmapData, 0); + if ($type != Zend_Pdf_Cmap::TYPE_TRIMMED_TABLE) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong cmap table type', + Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE); + } + + $length = $this->_extractUInt2($cmapData, 2); + if ($length != $actualLength) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)", + Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH); + } + + /* Mapping tables should be language-independent. The font may not work + * as expected if they are not. Unfortunately, many font files in the + * wild incorrectly record a language ID in this field, so we can't + * call this a failure. + */ + $language = $this->_extractUInt2($cmapData, 4); + if ($language != 0) { + // Record a warning here somehow? + } + + $this->_startCode = $this->_extractUInt2($cmapData, 6); + + $entryCount = $this->_extractUInt2($cmapData, 8); + $expectedCount = ($length - 10) >> 1; + if ($entryCount != $expectedCount) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Entry count is wrong; expected: $expectedCount; actual: $entryCount", + Zend_Pdf_Exception::CMAP_WRONG_ENTRY_COUNT); + } + + $this->_endCode = $this->_startCode + $entryCount - 1; + + $offset = 10; + for ($i = 0; $i < $entryCount; $i++, $offset += 2) { + $this->_glyphIndexArray[] = $this->_extractUInt2($cmapData, $offset); + } + + /* Sanity check: After reading all of the data, we should be at the end + * of the table. + */ + if ($offset != $length) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Ending offset ($offset) does not match length ($length)", + Zend_Pdf_Exception::CMAP_FINAL_OFFSET_NOT_LENGTH); + } + } + +} diff --git a/library/Zend/Pdf/Color.php b/library/Zend/Pdf/Color.php new file mode 100755 index 000000000..d85a7da59 --- /dev/null +++ b/library/Zend/Pdf/Color.php @@ -0,0 +1,53 @@ + 1) { $c = 1; } + + if ($m < 0) { $m = 0; } + if ($m > 1) { $m = 1; } + + if ($y < 0) { $y = 0; } + if ($y > 1) { $y = 1; } + + if ($k < 0) { $k = 0; } + if ($k > 1) { $k = 1; } + + $this->_c = new Zend_Pdf_Element_Numeric($c); + $this->_m = new Zend_Pdf_Element_Numeric($m); + $this->_y = new Zend_Pdf_Element_Numeric($y); + $this->_k = new Zend_Pdf_Element_Numeric($k); + } + + /** + * Instructions, which can be directly inserted into content stream + * to switch color. + * Color set instructions differ for stroking and nonstroking operations. + * + * @param boolean $stroking + * @return string + */ + public function instructions($stroking) + { + return $this->_c->toString() . ' ' + . $this->_m->toString() . ' ' + . $this->_y->toString() . ' ' + . $this->_k->toString() . ($stroking? " K\n" : " k\n"); + } + + /** + * Get color components (color space dependent) + * + * @return array + */ + public function getComponents() + { + return array($this->_c->value, $this->_m->value, $this->_y->value, $this->_k->value); + } +} + diff --git a/library/Zend/Pdf/Color/GrayScale.php b/library/Zend/Pdf/Color/GrayScale.php new file mode 100755 index 000000000..864b3023a --- /dev/null +++ b/library/Zend/Pdf/Color/GrayScale.php @@ -0,0 +1,84 @@ + 1) { $grayLevel = 1; } + + $this->_grayLevel = new Zend_Pdf_Element_Numeric($grayLevel); + } + + /** + * Instructions, which can be directly inserted into content stream + * to switch color. + * Color set instructions differ for stroking and nonstroking operations. + * + * @param boolean $stroking + * @return string + */ + public function instructions($stroking) + { + return $this->_grayLevel->toString() . ($stroking? " G\n" : " g\n"); + } + + /** + * Get color components (color space dependent) + * + * @return array + */ + public function getComponents() + { + return array($this->_grayLevel->value); + } +} + diff --git a/library/Zend/Pdf/Color/Html.php b/library/Zend/Pdf/Color/Html.php new file mode 100755 index 000000000..d1ba0f758 --- /dev/null +++ b/library/Zend/Pdf/Color/Html.php @@ -0,0 +1,412 @@ +_color = self::color($color); + } + + + /** + * Instructions, which can be directly inserted into content stream + * to switch color. + * Color set instructions differ for stroking and nonstroking operations. + * + * @param boolean $stroking + * @return string + */ + public function instructions($stroking) + { + return $this->_color->instructions($stroking); + } + + /** + * Get color components (color space dependent) + * + * @return array + */ + public function getComponents() + { + return $this->_color->getComponents(); + } + + /** + * Creates a Zend_Pdf_Color object from the HTML representation. + * + * @param string $color May either be a hexidecimal number of the form + * #rrggbb or one of the 140 well-known names (black, white, blue, etc.) + * @return Zend_Pdf_Color + */ + public static function color($color) + { + $pattern = '/^#([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})([A-Fa-f0-9]{2})$/'; + if (preg_match($pattern, $color, $matches)) { + $r = round((hexdec($matches[1]) / 255), 3); + $g = round((hexdec($matches[2]) / 255), 3); + $b = round((hexdec($matches[3]) / 255), 3); + if (($r == $g) && ($g == $b)) { + require_once 'Zend/Pdf/Color/GrayScale.php'; + return new Zend_Pdf_Color_GrayScale($r); + } else { + require_once 'Zend/Pdf/Color/Rgb.php'; + return new Zend_Pdf_Color_Rgb($r, $g, $b); + } + } else { + return Zend_Pdf_Color_Html::namedColor($color); + } + } + + /** + * Creates a Zend_Pdf_Color object from the named color. + * + * @param string $color One of the 140 well-known color names (black, white, + * blue, etc.) + * @return Zend_Pdf_Color + */ + public static function namedColor($color) + { + switch (strtolower($color)) { + case 'aqua': + $r = 0.0; $g = 1.0; $b = 1.0; break; + case 'black': + $r = 0.0; $g = 0.0; $b = 0.0; break; + case 'blue': + $r = 0.0; $g = 0.0; $b = 1.0; break; + case 'fuchsia': + $r = 1.0; $g = 0.0; $b = 1.0; break; + case 'gray': + $r = 0.502; $g = 0.502; $b = 0.502; break; + case 'green': + $r = 0.0; $g = 0.502; $b = 0.0; break; + case 'lime': + $r = 0.0; $g = 1.0; $b = 0.0; break; + case 'maroon': + $r = 0.502; $g = 0.0; $b = 0.0; break; + case 'navy': + $r = 0.0; $g = 0.0; $b = 0.502; break; + case 'olive': + $r = 0.502; $g = 0.502; $b = 0.0; break; + case 'purple': + $r = 0.502; $g = 0.0; $b = 0.502; break; + case 'red': + $r = 1.0; $g = 0.0; $b = 0.0; break; + case 'silver': + $r = 0.753; $g = 0.753; $b = 0.753; break; + case 'teal': + $r = 0.0; $g = 0.502; $b = 0.502; break; + case 'white': + $r = 1.0; $g = 1.0; $b = 1.0; break; + case 'yellow': + $r = 1.0; $g = 1.0; $b = 0.0; break; + + case 'aliceblue': + $r = 0.941; $g = 0.973; $b = 1.0; break; + case 'antiquewhite': + $r = 0.980; $g = 0.922; $b = 0.843; break; + case 'aquamarine': + $r = 0.498; $g = 1.0; $b = 0.831; break; + case 'azure': + $r = 0.941; $g = 1.0; $b = 1.0; break; + case 'beige': + $r = 0.961; $g = 0.961; $b = 0.863; break; + case 'bisque': + $r = 1.0; $g = 0.894; $b = 0.769; break; + case 'blanchedalmond': + $r = 1.0; $g = 1.0; $b = 0.804; break; + case 'blueviolet': + $r = 0.541; $g = 0.169; $b = 0.886; break; + case 'brown': + $r = 0.647; $g = 0.165; $b = 0.165; break; + case 'burlywood': + $r = 0.871; $g = 0.722; $b = 0.529; break; + case 'cadetblue': + $r = 0.373; $g = 0.620; $b = 0.627; break; + case 'chartreuse': + $r = 0.498; $g = 1.0; $b = 0.0; break; + case 'chocolate': + $r = 0.824; $g = 0.412; $b = 0.118; break; + case 'coral': + $r = 1.0; $g = 0.498; $b = 0.314; break; + case 'cornflowerblue': + $r = 0.392; $g = 0.584; $b = 0.929; break; + case 'cornsilk': + $r = 1.0; $g = 0.973; $b = 0.863; break; + case 'crimson': + $r = 0.863; $g = 0.078; $b = 0.235; break; + case 'cyan': + $r = 0.0; $g = 1.0; $b = 1.0; break; + case 'darkblue': + $r = 0.0; $g = 0.0; $b = 0.545; break; + case 'darkcyan': + $r = 0.0; $g = 0.545; $b = 0.545; break; + case 'darkgoldenrod': + $r = 0.722; $g = 0.525; $b = 0.043; break; + case 'darkgray': + $r = 0.663; $g = 0.663; $b = 0.663; break; + case 'darkgreen': + $r = 0.0; $g = 0.392; $b = 0.0; break; + case 'darkkhaki': + $r = 0.741; $g = 0.718; $b = 0.420; break; + case 'darkmagenta': + $r = 0.545; $g = 0.0; $b = 0.545; break; + case 'darkolivegreen': + $r = 0.333; $g = 0.420; $b = 0.184; break; + case 'darkorange': + $r = 1.0; $g = 0.549; $b = 0.0; break; + case 'darkorchid': + $r = 0.6; $g = 0.196; $b = 0.8; break; + case 'darkred': + $r = 0.545; $g = 0.0; $b = 0.0; break; + case 'darksalmon': + $r = 0.914; $g = 0.588; $b = 0.478; break; + case 'darkseagreen': + $r = 0.561; $g = 0.737; $b = 0.561; break; + case 'darkslateblue': + $r = 0.282; $g = 0.239; $b = 0.545; break; + case 'darkslategray': + $r = 0.184; $g = 0.310; $b = 0.310; break; + case 'darkturquoise': + $r = 0.0; $g = 0.808; $b = 0.820; break; + case 'darkviolet': + $r = 0.580; $g = 0.0; $b = 0.827; break; + case 'deeppink': + $r = 1.0; $g = 0.078; $b = 0.576; break; + case 'deepskyblue': + $r = 0.0; $g = 0.749; $b = 1.0; break; + case 'dimgray': + $r = 0.412; $g = 0.412; $b = 0.412; break; + case 'dodgerblue': + $r = 0.118; $g = 0.565; $b = 1.0; break; + case 'firebrick': + $r = 0.698; $g = 0.133; $b = 0.133; break; + case 'floralwhite': + $r = 1.0; $g = 0.980; $b = 0.941; break; + case 'forestgreen': + $r = 0.133; $g = 0.545; $b = 0.133; break; + case 'gainsboro': + $r = 0.863; $g = 0.863; $b = 0.863; break; + case 'ghostwhite': + $r = 0.973; $g = 0.973; $b = 1.0; break; + case 'gold': + $r = 1.0; $g = 0.843; $b = 0.0; break; + case 'goldenrod': + $r = 0.855; $g = 0.647; $b = 0.125; break; + case 'greenyellow': + $r = 0.678; $g = 1.0; $b = 0.184; break; + case 'honeydew': + $r = 0.941; $g = 1.0; $b = 0.941; break; + case 'hotpink': + $r = 1.0; $g = 0.412; $b = 0.706; break; + case 'indianred': + $r = 0.804; $g = 0.361; $b = 0.361; break; + case 'indigo': + $r = 0.294; $g = 0.0; $b = 0.510; break; + case 'ivory': + $r = 1.0; $g = 0.941; $b = 0.941; break; + case 'khaki': + $r = 0.941; $g = 0.902; $b = 0.549; break; + case 'lavender': + $r = 0.902; $g = 0.902; $b = 0.980; break; + case 'lavenderblush': + $r = 1.0; $g = 0.941; $b = 0.961; break; + case 'lawngreen': + $r = 0.486; $g = 0.988; $b = 0.0; break; + case 'lemonchiffon': + $r = 1.0; $g = 0.980; $b = 0.804; break; + case 'lightblue': + $r = 0.678; $g = 0.847; $b = 0.902; break; + case 'lightcoral': + $r = 0.941; $g = 0.502; $b = 0.502; break; + case 'lightcyan': + $r = 0.878; $g = 1.0; $b = 1.0; break; + case 'lightgoldenrodyellow': + $r = 0.980; $g = 0.980; $b = 0.824; break; + case 'lightgreen': + $r = 0.565; $g = 0.933; $b = 0.565; break; + case 'lightgrey': + $r = 0.827; $g = 0.827; $b = 0.827; break; + case 'lightpink': + $r = 1.0; $g = 0.714; $b = 0.757; break; + case 'lightsalmon': + $r = 1.0; $g = 0.627; $b = 0.478; break; + case 'lightseagreen': + $r = 0.125; $g = 0.698; $b = 0.667; break; + case 'lightskyblue': + $r = 0.529; $g = 0.808; $b = 0.980; break; + case 'lightslategray': + $r = 0.467; $g = 0.533; $b = 0.6; break; + case 'lightsteelblue': + $r = 0.690; $g = 0.769; $b = 0.871; break; + case 'lightyellow': + $r = 1.0; $g = 1.0; $b = 0.878; break; + case 'limegreen': + $r = 0.196; $g = 0.804; $b = 0.196; break; + case 'linen': + $r = 0.980; $g = 0.941; $b = 0.902; break; + case 'magenta': + $r = 1.0; $g = 0.0; $b = 1.0; break; + case 'mediumaquamarine': + $r = 0.4; $g = 0.804; $b = 0.667; break; + case 'mediumblue': + $r = 0.0; $g = 0.0; $b = 0.804; break; + case 'mediumorchid': + $r = 0.729; $g = 0.333; $b = 0.827; break; + case 'mediumpurple': + $r = 0.576; $g = 0.439; $b = 0.859; break; + case 'mediumseagreen': + $r = 0.235; $g = 0.702; $b = 0.443; break; + case 'mediumslateblue': + $r = 0.482; $g = 0.408; $b = 0.933; break; + case 'mediumspringgreen': + $r = 0.0; $g = 0.980; $b = 0.604; break; + case 'mediumturquoise': + $r = 0.282; $g = 0.820; $b = 0.8; break; + case 'mediumvioletred': + $r = 0.780; $g = 0.082; $b = 0.522; break; + case 'midnightblue': + $r = 0.098; $g = 0.098; $b = 0.439; break; + case 'mintcream': + $r = 0.961; $g = 1.0; $b = 0.980; break; + case 'mistyrose': + $r = 1.0; $g = 0.894; $b = 0.882; break; + case 'moccasin': + $r = 1.0; $g = 0.894; $b = 0.710; break; + case 'navajowhite': + $r = 1.0; $g = 0.871; $b = 0.678; break; + case 'oldlace': + $r = 0.992; $g = 0.961; $b = 0.902; break; + case 'olivedrab': + $r = 0.420; $g = 0.557; $b = 0.137; break; + case 'orange': + $r = 1.0; $g = 0.647; $b = 0.0; break; + case 'orangered': + $r = 1.0; $g = 0.271; $b = 0.0; break; + case 'orchid': + $r = 0.855; $g = 0.439; $b = 0.839; break; + case 'palegoldenrod': + $r = 0.933; $g = 0.910; $b = 0.667; break; + case 'palegreen': + $r = 0.596; $g = 0.984; $b = 0.596; break; + case 'paleturquoise': + $r = 0.686; $g = 0.933; $b = 0.933; break; + case 'palevioletred': + $r = 0.859; $g = 0.439; $b = 0.576; break; + case 'papayawhip': + $r = 1.0; $g = 0.937; $b = 0.835; break; + case 'peachpuff': + $r = 1.0; $g = 0.937; $b = 0.835; break; + case 'peru': + $r = 0.804; $g = 0.522; $b = 0.247; break; + case 'pink': + $r = 1.0; $g = 0.753; $b = 0.796; break; + case 'plum': + $r = 0.867; $g = 0.627; $b = 0.867; break; + case 'powderblue': + $r = 0.690; $g = 0.878; $b = 0.902; break; + case 'rosybrown': + $r = 0.737; $g = 0.561; $b = 0.561; break; + case 'royalblue': + $r = 0.255; $g = 0.412; $b = 0.882; break; + case 'saddlebrown': + $r = 0.545; $g = 0.271; $b = 0.075; break; + case 'salmon': + $r = 0.980; $g = 0.502; $b = 0.447; break; + case 'sandybrown': + $r = 0.957; $g = 0.643; $b = 0.376; break; + case 'seagreen': + $r = 0.180; $g = 0.545; $b = 0.341; break; + case 'seashell': + $r = 1.0; $g = 0.961; $b = 0.933; break; + case 'sienna': + $r = 0.627; $g = 0.322; $b = 0.176; break; + case 'skyblue': + $r = 0.529; $g = 0.808; $b = 0.922; break; + case 'slateblue': + $r = 0.416; $g = 0.353; $b = 0.804; break; + case 'slategray': + $r = 0.439; $g = 0.502; $b = 0.565; break; + case 'snow': + $r = 1.0; $g = 0.980; $b = 0.980; break; + case 'springgreen': + $r = 0.0; $g = 1.0; $b = 0.498; break; + case 'steelblue': + $r = 0.275; $g = 0.510; $b = 0.706; break; + case 'tan': + $r = 0.824; $g = 0.706; $b = 0.549; break; + case 'thistle': + $r = 0.847; $g = 0.749; $b = 0.847; break; + case 'tomato': + $r = 0.992; $g = 0.388; $b = 0.278; break; + case 'turquoise': + $r = 0.251; $g = 0.878; $b = 0.816; break; + case 'violet': + $r = 0.933; $g = 0.510; $b = 0.933; break; + case 'wheat': + $r = 0.961; $g = 0.871; $b = 0.702; break; + case 'whitesmoke': + $r = 0.961; $g = 0.961; $b = 0.961; break; + case 'yellowgreen': + $r = 0.604; $g = 0.804; $b = 0.196; break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unknown color name: ' . $color); + } + if (($r == $g) && ($g == $b)) { + require_once 'Zend/Pdf/Color/GrayScale.php'; + return new Zend_Pdf_Color_GrayScale($r); + } else { + require_once 'Zend/Pdf/Color/Rgb.php'; + return new Zend_Pdf_Color_Rgb($r, $g, $b); + } + } +} diff --git a/library/Zend/Pdf/Color/Rgb.php b/library/Zend/Pdf/Color/Rgb.php new file mode 100755 index 000000000..cef0bdf17 --- /dev/null +++ b/library/Zend/Pdf/Color/Rgb.php @@ -0,0 +1,114 @@ + 1) { $r = 1; } + + if ($g < 0) { $g = 0; } + if ($g > 1) { $g = 1; } + + if ($b < 0) { $b = 0; } + if ($b > 1) { $b = 1; } + + $this->_r = new Zend_Pdf_Element_Numeric($r); + $this->_g = new Zend_Pdf_Element_Numeric($g); + $this->_b = new Zend_Pdf_Element_Numeric($b); + } + + /** + * Instructions, which can be directly inserted into content stream + * to switch color. + * Color set instructions differ for stroking and nonstroking operations. + * + * @param boolean $stroking + * @return string + */ + public function instructions($stroking) + { + return $this->_r->toString() . ' ' + . $this->_g->toString() . ' ' + . $this->_b->toString() . ($stroking? " RG\n" : " rg\n"); + } + + /** + * Get color components (color space dependent) + * + * @return array + */ + public function getComponents() + { + return array($this->_r->value, $this->_g->value, $this->_b->value); + } +} + diff --git a/library/Zend/Pdf/Destination.php b/library/Zend/Pdf/Destination.php new file mode 100755 index 000000000..39726e70c --- /dev/null +++ b/library/Zend/Pdf/Destination.php @@ -0,0 +1,113 @@ +getType() == Zend_Pdf_Element::TYPE_NAME || $resource->getType() == Zend_Pdf_Element::TYPE_STRING) { + require_once 'Zend/Pdf/Destination/Named.php'; + return new Zend_Pdf_Destination_Named($resource); + } + + if ($resource->getType() != Zend_Pdf_Element::TYPE_ARRAY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('An explicit destination must be a direct or an indirect array object.'); + } + if (count($resource->items) < 2) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('An explicit destination array must contain at least two elements.'); + } + + switch ($resource->items[1]->value) { + case 'XYZ': + require_once 'Zend/Pdf/Destination/Zoom.php'; + return new Zend_Pdf_Destination_Zoom($resource); + break; + + case 'Fit': + require_once 'Zend/Pdf/Destination/Fit.php'; + return new Zend_Pdf_Destination_Fit($resource); + break; + + case 'FitH': + require_once 'Zend/Pdf/Destination/FitHorizontally.php'; + return new Zend_Pdf_Destination_FitHorizontally($resource); + break; + + case 'FitV': + require_once 'Zend/Pdf/Destination/FitVertically.php'; + return new Zend_Pdf_Destination_FitVertically($resource); + break; + + case 'FitR': + require_once 'Zend/Pdf/Destination/FitRectangle.php'; + return new Zend_Pdf_Destination_FitRectangle($resource); + break; + + case 'FitB': + require_once 'Zend/Pdf/Destination/FitBoundingBox.php'; + return new Zend_Pdf_Destination_FitBoundingBox($resource); + break; + + case 'FitBH': + require_once 'Zend/Pdf/Destination/FitBoundingBoxHorizontally.php'; + return new Zend_Pdf_Destination_FitBoundingBoxHorizontally($resource); + break; + + case 'FitBV': + require_once 'Zend/Pdf/Destination/FitBoundingBoxVertically.php'; + return new Zend_Pdf_Destination_FitBoundingBoxVertically($resource); + break; + + default: + require_once 'Zend/Pdf/Destination/Unknown.php'; + return new Zend_Pdf_Destination_Unknown($resource); + break; + } + } +} diff --git a/library/Zend/Pdf/Destination/Explicit.php b/library/Zend/Pdf/Destination/Explicit.php new file mode 100755 index 000000000..0ff96f749 --- /dev/null +++ b/library/Zend/Pdf/Destination/Explicit.php @@ -0,0 +1,122 @@ +getType() != Zend_Pdf_Element::TYPE_ARRAY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Explicit destination resource Array must be a direct or an indirect array object.'); + } + + $this->_destinationArray = $destinationArray; + + switch (count($this->_destinationArray->items)) { + case 0: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Destination array must contain a page reference.'); + break; + + case 1: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Destination array must contain a destination type name.'); + break; + + default: + // Do nothing + break; + } + + switch ($this->_destinationArray->items[0]->getType()) { + case Zend_Pdf_Element::TYPE_NUMERIC: + $this->_isRemote = true; + break; + + case Zend_Pdf_Element::TYPE_DICTIONARY: + $this->_isRemote = false; + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Destination target must be a page number or page dictionary object.'); + break; + } + } + + /** + * Returns true if it's a remote destination + * + * @return boolean + */ + public function isRemote() + { + return $this->_isRemote; + } + + /** + * Get resource + * + * @internal + * @return Zend_Pdf_Element + */ + public function getResource() + { + return $this->_destinationArray; + } +} diff --git a/library/Zend/Pdf/Destination/Fit.php b/library/Zend/Pdf/Destination/Fit.php new file mode 100755 index 000000000..1fb91d327 --- /dev/null +++ b/library/Zend/Pdf/Destination/Fit.php @@ -0,0 +1,75 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('Fit'); + + return new Zend_Pdf_Destination_Fit($destinationArray); + } +} diff --git a/library/Zend/Pdf/Destination/FitBoundingBox.php b/library/Zend/Pdf/Destination/FitBoundingBox.php new file mode 100755 index 000000000..11d7d0fcc --- /dev/null +++ b/library/Zend/Pdf/Destination/FitBoundingBox.php @@ -0,0 +1,75 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('FitB'); + + return new Zend_Pdf_Destination_FitBoundingBox($destinationArray); + } +} diff --git a/library/Zend/Pdf/Destination/FitBoundingBoxHorizontally.php b/library/Zend/Pdf/Destination/FitBoundingBoxHorizontally.php new file mode 100755 index 000000000..3c65c6916 --- /dev/null +++ b/library/Zend/Pdf/Destination/FitBoundingBoxHorizontally.php @@ -0,0 +1,98 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('FitBH'); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($top); + + return new Zend_Pdf_Destination_FitBoundingBoxHorizontally($destinationArray); + } + + /** + * Get top edge of the displayed page + * + * @return float + */ + public function getTopEdge() + { + return $this->_destinationArray->items[2]->value; + } + + /** + * Set top edge of the displayed page + * + * @param float $top + * @return Zend_Pdf_Action_FitBoundingBoxHorizontally + */ + public function setTopEdge($top) + { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($top); + return $this; + } +} diff --git a/library/Zend/Pdf/Destination/FitBoundingBoxVertically.php b/library/Zend/Pdf/Destination/FitBoundingBoxVertically.php new file mode 100755 index 000000000..63b0edaef --- /dev/null +++ b/library/Zend/Pdf/Destination/FitBoundingBoxVertically.php @@ -0,0 +1,98 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('FitBV'); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($left); + + return new Zend_Pdf_Destination_FitBoundingBoxVertically($destinationArray); + } + + /** + * Get left edge of the displayed page + * + * @return float + */ + public function getLeftEdge() + { + return $this->_destinationArray->items[2]->value; + } + + /** + * Set left edge of the displayed page + * + * @param float $left + * @return Zend_Pdf_Action_FitBoundingBoxVertically + */ + public function setLeftEdge($left) + { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($left); + return $this; + } + +} diff --git a/library/Zend/Pdf/Destination/FitHorizontally.php b/library/Zend/Pdf/Destination/FitHorizontally.php new file mode 100755 index 000000000..758eacc67 --- /dev/null +++ b/library/Zend/Pdf/Destination/FitHorizontally.php @@ -0,0 +1,98 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('FitH'); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($top); + + return new Zend_Pdf_Destination_FitHorizontally($destinationArray); + } + + /** + * Get top edge of the displayed page + * + * @return float + */ + public function getTopEdge() + { + return $this->_destinationArray->items[2]->value; + } + + /** + * Set top edge of the displayed page + * + * @param float $top + * @return Zend_Pdf_Action_FitHorizontally + */ + public function setTopEdge($top) + { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($top); + + return $this; + } +} diff --git a/library/Zend/Pdf/Destination/FitRectangle.php b/library/Zend/Pdf/Destination/FitRectangle.php new file mode 100755 index 000000000..28309837e --- /dev/null +++ b/library/Zend/Pdf/Destination/FitRectangle.php @@ -0,0 +1,171 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('FitR'); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($left); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($bottom); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($right); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($top); + + return new Zend_Pdf_Destination_FitRectangle($destinationArray); + } + + /** + * Get left edge of the displayed page + * + * @return float + */ + public function getLeftEdge() + { + return $this->_destinationArray->items[2]->value; + } + + /** + * Set left edge of the displayed page + * + * @param float $left + * @return Zend_Pdf_Action_FitRectangle + */ + public function setLeftEdge($left) + { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($left); + return $this; + } + + /** + * Get bottom edge of the displayed page + * + * @return float + */ + public function getBottomEdge() + { + return $this->_destinationArray->items[3]->value; + } + + /** + * Set bottom edge of the displayed page + * + * @param float $bottom + * @return Zend_Pdf_Action_FitRectangle + */ + public function setBottomEdge($bottom) + { + $this->_destinationArray->items[3] = new Zend_Pdf_Element_Numeric($bottom); + return $this; + } + + /** + * Get right edge of the displayed page + * + * @return float + */ + public function getRightEdge() + { + return $this->_destinationArray->items[4]->value; + } + + /** + * Set right edge of the displayed page + * + * @param float $right + * @return Zend_Pdf_Action_FitRectangle + */ + public function setRightEdge($right) + { + $this->_destinationArray->items[4] = new Zend_Pdf_Element_Numeric($right); + return $this; + } + + /** + * Get top edge of the displayed page + * + * @return float + */ + public function getTopEdge() + { + return $this->_destinationArray->items[5]->value; + } + + /** + * Set top edge of the displayed page + * + * @param float $top + * @return Zend_Pdf_Action_FitRectangle + */ + public function setTopEdge($top) + { + $this->_destinationArray->items[5] = new Zend_Pdf_Element_Numeric($top); + return $this; + } +} diff --git a/library/Zend/Pdf/Destination/FitVertically.php b/library/Zend/Pdf/Destination/FitVertically.php new file mode 100755 index 000000000..a7a95c878 --- /dev/null +++ b/library/Zend/Pdf/Destination/FitVertically.php @@ -0,0 +1,98 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('FitV'); + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($left); + + return new Zend_Pdf_Destination_FitVertically($destinationArray); + } + + /** + * Get left edge of the displayed page + * + * @return float + */ + public function getLeftEdge() + { + return $this->_destinationArray->items[2]->value; + } + + /** + * Set left edge of the displayed page + * + * @param float $left + * @return Zend_Pdf_Action_FitVertically + */ + public function setLeftEdge($left) + { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($left); + + return $this; + } +} diff --git a/library/Zend/Pdf/Destination/Named.php b/library/Zend/Pdf/Destination/Named.php new file mode 100755 index 000000000..73b9670cf --- /dev/null +++ b/library/Zend/Pdf/Destination/Named.php @@ -0,0 +1,101 @@ +getType() != Zend_Pdf_Element::TYPE_NAME && $resource->getType() != Zend_Pdf_Element::TYPE_STRING) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Named destination resource must be a PDF name or a PDF string.'); + } + + $this->_nameElement = $resource; + } + + /** + * Create named destination object + * + * @param string $name + * @return Zend_Pdf_Destination_Named + */ + public static function create($name) + { + return new Zend_Pdf_Destination_Named(new Zend_Pdf_Element_String($name)); + } + + /** + * Get name + * + * @return Zend_Pdf_Element + */ + public function getName() + { + return $this->_nameElement->value; + } + + /** + * Get resource + * + * @internal + * @return Zend_Pdf_Element + */ + public function getResource() + { + return $this->_nameElement; + } +} diff --git a/library/Zend/Pdf/Destination/Unknown.php b/library/Zend/Pdf/Destination/Unknown.php new file mode 100755 index 000000000..335e0da6d --- /dev/null +++ b/library/Zend/Pdf/Destination/Unknown.php @@ -0,0 +1,37 @@ +items[] = $page->getPageDictionary(); + } else if (is_integer($page)) { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.'); + } + + $destinationArray->items[] = new Zend_Pdf_Element_Name('XYZ'); + + if ($left === null) { + $destinationArray->items[] = new Zend_Pdf_Element_Null(); + } else { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($left); + } + + if ($top === null) { + $destinationArray->items[] = new Zend_Pdf_Element_Null(); + } else { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($top); + } + + if ($zoom === null) { + $destinationArray->items[] = new Zend_Pdf_Element_Null(); + } else { + $destinationArray->items[] = new Zend_Pdf_Element_Numeric($zoom); + } + + return new Zend_Pdf_Destination_Zoom($destinationArray); + } + + /** + * Get left edge of the displayed page (null means viewer application 'current value') + * + * @return float + */ + public function getLeftEdge() + { + return $this->_destinationArray->items[2]->value; + } + + /** + * Set left edge of the displayed page (null means viewer application 'current value') + * + * @param float $left + * @return Zend_Pdf_Action_Zoom + */ + public function setLeftEdge($left) + { + if ($left === null) { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Null(); + } else { + $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($left); + } + + return $this; + } + + /** + * Get top edge of the displayed page (null means viewer application 'current value') + * + * @return float + */ + public function getTopEdge() + { + return $this->_destinationArray->items[3]->value; + } + + /** + * Set top edge of the displayed page (null means viewer application 'current viewer') + * + * @param float $top + * @return Zend_Pdf_Action_Zoom + */ + public function setTopEdge($top) + { + if ($top === null) { + $this->_destinationArray->items[3] = new Zend_Pdf_Element_Null(); + } else { + $this->_destinationArray->items[3] = new Zend_Pdf_Element_Numeric($top); + } + + return $this; + } + + /** + * Get ZoomFactor of the displayed page (null or 0 means viewer application 'current value') + * + * @return float + */ + public function getZoomFactor() + { + return $this->_destinationArray->items[4]->value; + } + + /** + * Set ZoomFactor of the displayed page (null or 0 means viewer application 'current viewer') + * + * @param float $zoom + * @return Zend_Pdf_Action_Zoom + */ + public function setZoomFactor($zoom) + { + if ($zoom === null) { + $this->_destinationArray->items[4] = new Zend_Pdf_Element_Null(); + } else { + $this->_destinationArray->items[4] = new Zend_Pdf_Element_Numeric($zoom); + } + + return $this; + } +} diff --git a/library/Zend/Pdf/Element.php b/library/Zend/Pdf/Element.php new file mode 100755 index 000000000..0486ac60d --- /dev/null +++ b/library/Zend/Pdf/Element.php @@ -0,0 +1,176 @@ +_parentObject = $parent; + } + + + /** + * Get top level parent indirect object. + * + * @return Zend_Pdf_Element_Object + */ + public function getParentObject() + { + return $this->_parentObject; + } + + + /** + * Mark object as modified, to include it into new PDF file segment. + * + * We don't automate this action to keep control on PDF update process. + * All new objects are treated as "modified" automatically. + */ + public function touch() + { + if ($this->_parentObject !== null) { + $this->_parentObject->touch(); + } + } + + /** + * Clean up resources, used by object + */ + public function cleanUp() + { + // Do nothing + } + + /** + * Convert PDF element to PHP type. + * + * @return mixed + */ + public function toPhp() + { + return $this->value; + } + + /** + * Convert PHP value into PDF element. + * + * @param mixed $input + * @return Zend_Pdf_Element + */ + public static function phpToPdf($input) + { + if (is_numeric($input)) { + require_once 'Zend/Pdf/Element/Numeric.php'; + return new Zend_Pdf_Element_Numeric($input); + } else if (is_bool($input)) { + require_once 'Zend/Pdf/Element/Boolean.php'; + return new Zend_Pdf_Element_Boolean($input); + } else if (is_array($input)) { + $pdfElementsArray = array(); + $isDictionary = false; + + foreach ($input as $key => $value) { + if (is_string($key)) { + $isDictionary = true; + } + $pdfElementsArray[$key] = Zend_Pdf_Element::phpToPdf($value); + } + + if ($isDictionary) { + require_once 'Zend/Pdf/Element/Dictionary.php'; + return new Zend_Pdf_Element_Dictionary($pdfElementsArray); + } else { + require_once 'Zend/Pdf/Element/Array.php'; + return new Zend_Pdf_Element_Array($pdfElementsArray); + } + } else { + require_once 'Zend/Pdf/Element/String.php'; + return new Zend_Pdf_Element_String((string)$input); + } + } +} diff --git a/library/Zend/Pdf/Element/Array.php b/library/Zend/Pdf/Element/Array.php new file mode 100755 index 000000000..d301fc3b6 --- /dev/null +++ b/library/Zend/Pdf/Element/Array.php @@ -0,0 +1,181 @@ +items = new ArrayObject(); + + if ($val !== null && is_array($val)) { + foreach ($val as $element) { + if (!$element instanceof Zend_Pdf_Element) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects'); + } + $this->items[] = $element; + } + } else if ($val !== null){ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Argument must be an array'); + } + } + + + /** + * Getter + * + * @param string $property + * @throws Zend_Pdf_Exception + */ + public function __get($property) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Undefined property: Zend_Pdf_Element_Array::$' . $property); + } + + + /** + * Setter + * + * @param mixed $offset + * @param mixed $value + * @throws Zend_Pdf_Exception + */ + public function __set($property, $value) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Undefined property: Zend_Pdf_Element_Array::$' . $property); + } + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_ARRAY; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + $outStr = '['; + $lastNL = 0; + + foreach ($this->items as $element) { + if (strlen($outStr) - $lastNL > 128) { + $outStr .= "\n"; + $lastNL = strlen($outStr); + } + + $outStr .= $element->toString($factory) . ' '; + } + $outStr .= ']'; + + return $outStr; + } + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + $newArray = new self(); + + foreach ($this->items as $key => $value) { + $newArray->items[$key] = $value->makeClone($factory, $processed, $mode); + } + + return $newArray; + } + + /** + * Set top level parent indirect object. + * + * @param Zend_Pdf_Element_Object $parent + */ + public function setParentObject(Zend_Pdf_Element_Object $parent) + { + parent::setParentObject($parent); + + foreach ($this->items as $item) { + $item->setParentObject($parent); + } + } + + /** + * Convert PDF element to PHP type. + * + * Dictionary is returned as an associative array + * + * @return mixed + */ + public function toPhp() + { + $phpArray = array(); + + foreach ($this->items as $item) { + $phpArray[] = $item->toPhp(); + } + + return $phpArray; + } +} diff --git a/library/Zend/Pdf/Element/Boolean.php b/library/Zend/Pdf/Element/Boolean.php new file mode 100755 index 000000000..97959c797 --- /dev/null +++ b/library/Zend/Pdf/Element/Boolean.php @@ -0,0 +1,83 @@ +value = $val; + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_BOOL; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + return $this->value ? 'true' : 'false'; + } +} diff --git a/library/Zend/Pdf/Element/Dictionary.php b/library/Zend/Pdf/Element/Dictionary.php new file mode 100755 index 000000000..3d9cf96e8 --- /dev/null +++ b/library/Zend/Pdf/Element/Dictionary.php @@ -0,0 +1,236 @@ + Zend_Pdf_Element) + * + * @var array + */ + private $_items = array(); + + + /** + * Object constructor + * + * @param array $val - array of Zend_Pdf_Element objects + * @throws Zend_Pdf_Exception + */ + public function __construct($val = null) + { + if ($val === null) { + return; + } else if (!is_array($val)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Argument must be an array'); + } + + foreach ($val as $name => $element) { + if (!$element instanceof Zend_Pdf_Element) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects'); + } + if (!is_string($name)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Array keys must be strings'); + } + $this->_items[$name] = $element; + } + } + + + /** + * Add element to an array + * + * @name Zend_Pdf_Element_Name $name + * @param Zend_Pdf_Element $val - Zend_Pdf_Element object + * @throws Zend_Pdf_Exception + */ + public function add(Zend_Pdf_Element_Name $name, Zend_Pdf_Element $val) + { + $this->_items[$name->value] = $val; + } + + /** + * Return dictionary keys + * + * @return array + */ + public function getKeys() + { + return array_keys($this->_items); + } + + + /** + * Get handler + * + * @param string $property + * @return Zend_Pdf_Element | null + */ + public function __get($item) + { + $element = isset($this->_items[$item]) ? $this->_items[$item] + : null; + + return $element; + } + + /** + * Set handler + * + * @param string $property + * @param mixed $value + */ + public function __set($item, $value) + { + if ($value === null) { + unset($this->_items[$item]); + } else { + $this->_items[$item] = $value; + } + } + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_DICTIONARY; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + $outStr = '<<'; + $lastNL = 0; + + foreach ($this->_items as $name => $element) { + if (!is_object($element)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong data'); + } + + if (strlen($outStr) - $lastNL > 128) { + $outStr .= "\n"; + $lastNL = strlen($outStr); + } + + $nameObj = new Zend_Pdf_Element_Name($name); + $outStr .= $nameObj->toString($factory) . ' ' . $element->toString($factory) . ' '; + } + $outStr .= '>>'; + + return $outStr; + } + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + * @throws Zend_Pdf_Exception + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + if (isset($this->_items['Type'])) { + if ($this->_items['Type']->value == 'Pages') { + // It's a page tree node + // skip it and its children + return new Zend_Pdf_Element_Null(); + } + + if ($this->_items['Type']->value == 'Page' && + $mode == Zend_Pdf_Element::CLONE_MODE_SKIP_PAGES + ) { + // It's a page node, skip it + return new Zend_Pdf_Element_Null(); + } + } + + $newDictionary = new self(); + foreach ($this->_items as $key => $value) { + $newDictionary->_items[$key] = $value->makeClone($factory, $processed, $mode); + } + + return $newDictionary; + } + + /** + * Set top level parent indirect object. + * + * @param Zend_Pdf_Element_Object $parent + */ + public function setParentObject(Zend_Pdf_Element_Object $parent) + { + parent::setParentObject($parent); + + foreach ($this->_items as $item) { + $item->setParentObject($parent); + } + } + + /** + * Convert PDF element to PHP type. + * + * Dictionary is returned as an associative array + * + * @return mixed + */ + public function toPhp() + { + $phpArray = array(); + + foreach ($this->_items as $itemName => $item) { + $phpArray[$itemName] = $item->toPhp(); + } + + return $phpArray; + } +} diff --git a/library/Zend/Pdf/Element/Name.php b/library/Zend/Pdf/Element/Name.php new file mode 100755 index 000000000..fb589d4ab --- /dev/null +++ b/library/Zend/Pdf/Element/Name.php @@ -0,0 +1,161 @@ +value = (string)$val; + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_NAME; + } + + + /** + * Escape string according to the PDF rules + * + * @param string $inStr + * @return string + */ + public static function escape($inStr) + { + $outStr = ''; + + for ($count = 0; $count < strlen($inStr); $count++) { + $nextCode = ord($inStr[$count]); + + switch ($inStr[$count]) { + case '(': + // fall through to next case + case ')': + // fall through to next case + case '<': + // fall through to next case + case '>': + // fall through to next case + case '[': + // fall through to next case + case ']': + // fall through to next case + case '{': + // fall through to next case + case '}': + // fall through to next case + case '/': + // fall through to next case + case '%': + // fall through to next case + case '\\': + // fall through to next case + case '#': + $outStr .= sprintf('#%02X', $nextCode); + break; + + default: + if ($nextCode >= 33 && $nextCode <= 126 ) { + // Visible ASCII symbol + $outStr .= $inStr[$count]; + } else { + $outStr .= sprintf('#%02X', $nextCode); + } + } + + } + + return $outStr; + } + + + /** + * Unescape string according to the PDF rules + * + * @param string $inStr + * @return string + */ + public static function unescape($inStr) + { + $outStr = ''; + + for ($count = 0; $count < strlen($inStr); $count++) { + if ($inStr[$count] != '#' ) { + $outStr .= $inStr[$count]; + } else { + // Escape sequence + $outStr .= chr(base_convert(substr($inStr, $count+1, 2), 16, 10 )); + $count +=2; + } + } + return $outStr; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + return '/' . self::escape((string)$this->value); + } +} diff --git a/library/Zend/Pdf/Element/Null.php b/library/Zend/Pdf/Element/Null.php new file mode 100755 index 000000000..ed073e7fa --- /dev/null +++ b/library/Zend/Pdf/Element/Null.php @@ -0,0 +1,75 @@ +value = null; + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_NULL; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + return 'null'; + } +} diff --git a/library/Zend/Pdf/Element/Numeric.php b/library/Zend/Pdf/Element/Numeric.php new file mode 100755 index 000000000..557f99cc1 --- /dev/null +++ b/library/Zend/Pdf/Element/Numeric.php @@ -0,0 +1,95 @@ +value = $val; + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_NUMERIC; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + if (is_integer($this->value)) { + return (string)$this->value; + } + + /** + * PDF doesn't support exponental format. + * Fixed point format must be used instead + */ + $prec = 0; $v = $this->value; + while (abs( floor($v) - $v ) > 1e-10) { + $prec++; $v *= 10; + } + return sprintf("%.{$prec}F", $this->value); + } +} diff --git a/library/Zend/Pdf/Element/Object.php b/library/Zend/Pdf/Element/Object.php new file mode 100755 index 000000000..44fbf37be --- /dev/null +++ b/library/Zend/Pdf/Element/Object.php @@ -0,0 +1,284 @@ + 0) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object number must be positive integer.'); + } + + if ( !(is_integer($genNum) && $genNum >= 0) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Generation number must be non-negative integer.'); + } + + $this->_value = $val; + $this->_objNum = $objNum; + $this->_genNum = $genNum; + $this->_factory = $factory; + + $this->setParentObject($this); + + $factory->registerObject($this, $objNum . ' ' . $genNum); + } + + + /** + * Check, that object is generated by specified factory + * + * @return Zend_Pdf_ElementFactory + */ + public function getFactory() + { + return $this->_factory; + } + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return $this->_value->getType(); + } + + + /** + * Get object number + * + * @return integer + */ + public function getObjNum() + { + return $this->_objNum; + } + + + /** + * Get generation number + * + * @return integer + */ + public function getGenNum() + { + return $this->_genNum; + } + + + /** + * Return reference to the object + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + if ($factory === null) { + $shift = 0; + } else { + $shift = $factory->getEnumerationShift($this->_factory); + } + + return $this->_objNum + $shift . ' ' . $this->_genNum . ' R'; + } + + + /** + * Dump object to a string to save within PDF file. + * + * $factory parameter defines operation context. + * + * @param Zend_Pdf_ElementFactory $factory + * @return string + */ + public function dump(Zend_Pdf_ElementFactory $factory) + { + $shift = $factory->getEnumerationShift($this->_factory); + + return $this->_objNum + $shift . " " . $this->_genNum . " obj \n" + . $this->_value->toString($factory) . "\n" + . "endobj\n"; + } + + /** + * Get handler + * + * @param string $property + * @return mixed + */ + public function __get($property) + { + return $this->_value->$property; + } + + /** + * Set handler + * + * @param string $property + * @param mixed $value + */ + public function __set($property, $value) + { + $this->_value->$property = $value; + } + + /** + * Call handler + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + return call_user_func_array(array($this->_value, $method), $args); + } + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + $id = spl_object_hash($this); + if (isset($processed[$id])) { + // Do nothing if object is already processed + // return it + return $processed[$id]; + } + + // Create obect with null value and register it in $processed container + $processed[$id] = $clonedObject = $factory->newObject(new Zend_Pdf_Element_Null()); + + // Pecursively process actual data + $clonedObject->_value = $this->_value->makeClone($factory, $processed, $mode); + + if ($clonedObject->_value instanceof Zend_Pdf_Element_Null) { + // Do not store null objects within $processed container since it may be filtered + // by $mode parameter but used in some future pass + unset($processed[$id]); + + // Return direct null object + return $clonedObject->_value; + } + + return $clonedObject; + } + + /** + * Mark object as modified, to include it into new PDF file segment + */ + public function touch() + { + $this->_factory->markAsModified($this); + } + + /** + * Return object, which can be used to identify object and its references identity + * + * @return Zend_Pdf_Element_Object + */ + public function getObject() + { + return $this; + } + + /** + * Clean up resources, used by object + */ + public function cleanUp() + { + $this->_value = null; + } + + /** + * Convert PDF element to PHP type. + * + * @return mixed + */ + public function toPhp() + { + return $this->_value->toPhp(); + } +} diff --git a/library/Zend/Pdf/Element/Object/Stream.php b/library/Zend/Pdf/Element/Object/Stream.php new file mode 100755 index 000000000..2cd6c1991 --- /dev/null +++ b/library/Zend/Pdf/Element/Object/Stream.php @@ -0,0 +1,453 @@ +_dictionary = new Zend_Pdf_Element_Dictionary(); + $this->_dictionary->Length = new Zend_Pdf_Element_Numeric(strlen( $val )); + $this->_streamDecoded = true; + } else { + $this->_dictionary = $dictionary; + $this->_streamDecoded = false; + } + } + + + /** + * Extract dictionary data which are used to store information and to normalize filters + * information before defiltering. + * + * @return array + */ + private function _extractDictionaryData() + { + $dictionaryArray = array(); + + $dictionaryArray['Filter'] = array(); + $dictionaryArray['DecodeParms'] = array(); + if ($this->_dictionary->Filter === null) { + // Do nothing. + } else if ($this->_dictionary->Filter->getType() == Zend_Pdf_Element::TYPE_ARRAY) { + foreach ($this->_dictionary->Filter->items as $id => $filter) { + $dictionaryArray['Filter'][$id] = $filter->value; + $dictionaryArray['DecodeParms'][$id] = array(); + + if ($this->_dictionary->DecodeParms !== null ) { + if ($this->_dictionary->DecodeParms->items[$id] !== null && + $this->_dictionary->DecodeParms->items[$id]->value !== null ) { + foreach ($this->_dictionary->DecodeParms->items[$id]->getKeys() as $paramKey) { + $dictionaryArray['DecodeParms'][$id][$paramKey] = + $this->_dictionary->DecodeParms->items[$id]->$paramKey->value; + } + } + } + } + } else if ($this->_dictionary->Filter->getType() != Zend_Pdf_Element::TYPE_NULL) { + $dictionaryArray['Filter'][0] = $this->_dictionary->Filter->value; + $dictionaryArray['DecodeParms'][0] = array(); + if ($this->_dictionary->DecodeParms !== null ) { + foreach ($this->_dictionary->DecodeParms->getKeys() as $paramKey) { + $dictionaryArray['DecodeParms'][0][$paramKey] = + $this->_dictionary->DecodeParms->$paramKey->value; + } + } + } + + if ($this->_dictionary->F !== null) { + $dictionaryArray['F'] = $this->_dictionary->F->value; + } + + $dictionaryArray['FFilter'] = array(); + $dictionaryArray['FDecodeParms'] = array(); + if ($this->_dictionary->FFilter === null) { + // Do nothing. + } else if ($this->_dictionary->FFilter->getType() == Zend_Pdf_Element::TYPE_ARRAY) { + foreach ($this->_dictionary->FFilter->items as $id => $filter) { + $dictionaryArray['FFilter'][$id] = $filter->value; + $dictionaryArray['FDecodeParms'][$id] = array(); + + if ($this->_dictionary->FDecodeParms !== null ) { + if ($this->_dictionary->FDecodeParms->items[$id] !== null && + $this->_dictionary->FDecodeParms->items[$id]->value !== null) { + foreach ($this->_dictionary->FDecodeParms->items[$id]->getKeys() as $paramKey) { + $dictionaryArray['FDecodeParms'][$id][$paramKey] = + $this->_dictionary->FDecodeParms->items[$id]->items[$paramKey]->value; + } + } + } + } + } else { + $dictionaryArray['FFilter'][0] = $this->_dictionary->FFilter->value; + $dictionaryArray['FDecodeParms'][0] = array(); + if ($this->_dictionary->FDecodeParms !== null ) { + foreach ($this->_dictionary->FDecodeParms->getKeys() as $paramKey) { + $dictionaryArray['FDecodeParms'][0][$paramKey] = + $this->_dictionary->FDecodeParms->items[$paramKey]->value; + } + } + } + + return $dictionaryArray; + } + + /** + * Decode stream + * + * @throws Zend_Pdf_Exception + */ + private function _decodeStream() + { + if ($this->_initialDictionaryData === null) { + $this->_initialDictionaryData = $this->_extractDictionaryData(); + } + + /** + * All applied stream filters must be processed to decode stream. + * If we don't recognize any of applied filetrs an exception should be thrown here + */ + if (isset($this->_initialDictionaryData['F'])) { + /** @todo Check, how external files can be processed. */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('External filters are not supported now.'); + } + + foreach ($this->_initialDictionaryData['Filter'] as $id => $filterName ) { + $valueRef = &$this->_value->value->getRef(); + $this->_value->value->touch(); + switch ($filterName) { + case 'ASCIIHexDecode': + require_once 'Zend/Pdf/Filter/AsciiHex.php'; + $valueRef = Zend_Pdf_Filter_AsciiHex::decode($valueRef); + break; + + case 'ASCII85Decode': + require_once 'Zend/Pdf/Filter/Ascii85.php'; + $valueRef = Zend_Pdf_Filter_Ascii85::decode($valueRef); + break; + + case 'FlateDecode': + require_once 'Zend/Pdf/Filter/Compression/Flate.php'; + $valueRef = Zend_Pdf_Filter_Compression_Flate::decode($valueRef, + $this->_initialDictionaryData['DecodeParms'][$id]); + break; + + case 'LZWDecode': + require_once 'Zend/Pdf/Filter/Compression/Lzw.php'; + $valueRef = Zend_Pdf_Filter_Compression_Lzw::decode($valueRef, + $this->_initialDictionaryData['DecodeParms'][$id]); + break; + + case 'RunLengthDecode': + require_once 'Zend/Pdf/Filter/RunLength.php'; + $valueRef = Zend_Pdf_Filter_RunLength::decode($valueRef); + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unknown stream filter: \'' . $filterName . '\'.'); + } + } + + $this->_streamDecoded = true; + } + + /** + * Encode stream + * + * @throws Zend_Pdf_Exception + */ + private function _encodeStream() + { + /** + * All applied stream filters must be processed to encode stream. + * If we don't recognize any of applied filetrs an exception should be thrown here + */ + if (isset($this->_initialDictionaryData['F'])) { + /** @todo Check, how external files can be processed. */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('External filters are not supported now.'); + } + + $filters = array_reverse($this->_initialDictionaryData['Filter'], true); + + foreach ($filters as $id => $filterName ) { + $valueRef = &$this->_value->value->getRef(); + $this->_value->value->touch(); + switch ($filterName) { + case 'ASCIIHexDecode': + require_once 'Zend/Pdf/Filter/AsciiHex.php'; + $valueRef = Zend_Pdf_Filter_AsciiHex::encode($valueRef); + break; + + case 'ASCII85Decode': + require_once 'Zend/Pdf/Filter/Ascii85.php'; + $valueRef = Zend_Pdf_Filter_Ascii85::encode($valueRef); + break; + + case 'FlateDecode': + require_once 'Zend/Pdf/Filter/Compression/Flate.php'; + $valueRef = Zend_Pdf_Filter_Compression_Flate::encode($valueRef, + $this->_initialDictionaryData['DecodeParms'][$id]); + break; + + case 'LZWDecode': + require_once 'Zend/Pdf/Filter/Compression/Lzw.php'; + $valueRef = Zend_Pdf_Filter_Compression_Lzw::encode($valueRef, + $this->_initialDictionaryData['DecodeParms'][$id]); + break; + + case 'RunLengthDecode': + require_once 'Zend/Pdf/Filter/RunLength.php'; + $valueRef = Zend_Pdf_Filter_RunLength::encode($valueRef); + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unknown stream filter: \'' . $filterName . '\'.'); + } + } + + $this->_streamDecoded = false; + } + + /** + * Get handler + * + * @param string $property + * @return mixed + * @throws Zend_Pdf_Exception + */ + public function __get($property) + { + if ($property == 'dictionary') { + /** + * If stream is not decoded yet, then store original decoding options (do it only once). + */ + if (( !$this->_streamDecoded ) && ($this->_initialDictionaryData === null)) { + $this->_initialDictionaryData = $this->_extractDictionaryData(); + } + + return $this->_dictionary; + } + + if ($property == 'value') { + if (!$this->_streamDecoded) { + $this->_decodeStream(); + } + + return $this->_value->value->getRef(); + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unknown stream object property requested.'); + } + + + /** + * Set handler + * + * @param string $property + * @param mixed $value + */ + public function __set($property, $value) + { + if ($property == 'value') { + $valueRef = &$this->_value->value->getRef(); + $valueRef = $value; + $this->_value->value->touch(); + + $this->_streamDecoded = true; + + return; + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unknown stream object property: \'' . $property . '\'.'); + } + + + /** + * Treat stream data as already encoded + */ + public function skipFilters() + { + $this->_streamDecoded = false; + } + + + /** + * Call handler + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + if (!$this->_streamDecoded) { + $this->_decodeStream(); + } + + switch (count($args)) { + case 0: + return $this->_value->$method(); + case 1: + return $this->_value->$method($args[0]); + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unsupported number of arguments'); + } + } + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + $id = spl_object_hash($this); + if (isset($processed[$id])) { + // Do nothing if object is already processed + // return it + return $processed[$id]; + } + + $streamValue = $this->_value; + $streamDictionary = $this->_dictionary->makeClone($factory, $processed, $mode); + + // Make new empty instance of stream object and register it in $processed container + $processed[$id] = $clonedObject = $factory->newStreamObject(''); + + // Copy current object data and state + $clonedObject->_dictionary = $this->_dictionary->makeClone($factory, $processed, $mode); + $clonedObject->_value = $this->_value->makeClone($factory, $processed, $mode); + $clonedObject->_initialDictionaryData = $this->_initialDictionaryData; + $clonedObject->_streamDecoded = $this->_streamDecoded; + + return $clonedObject; + } + + /** + * Dump object to a string to save within PDF file + * + * $factory parameter defines operation context. + * + * @param Zend_Pdf_ElementFactory $factory + * @return string + */ + public function dump(Zend_Pdf_ElementFactory $factory) + { + $shift = $factory->getEnumerationShift($this->_factory); + + if ($this->_streamDecoded) { + $this->_initialDictionaryData = $this->_extractDictionaryData(); + $this->_encodeStream(); + } else if ($this->_initialDictionaryData != null) { + $newDictionary = $this->_extractDictionaryData(); + + if ($this->_initialDictionaryData !== $newDictionary) { + $this->_decodeStream(); + $this->_initialDictionaryData = $newDictionary; + $this->_encodeStream(); + } + } + + // Update stream length + $this->dictionary->Length->value = $this->_value->length(); + + return $this->_objNum + $shift . " " . $this->_genNum . " obj \n" + . $this->dictionary->toString($factory) . "\n" + . $this->_value->toString($factory) . "\n" + . "endobj\n"; + } + + /** + * Clean up resources, used by object + */ + public function cleanUp() + { + $this->_dictionary = null; + $this->_value = null; + } +} diff --git a/library/Zend/Pdf/Element/Reference.php b/library/Zend/Pdf/Element/Reference.php new file mode 100755 index 000000000..27ca760b7 --- /dev/null +++ b/library/Zend/Pdf/Element/Reference.php @@ -0,0 +1,303 @@ + 0) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object number must be positive integer'); + } + if ( !(is_integer($genNum) && $genNum >= 0) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Generation number must be non-negative integer'); + } + + $this->_objNum = $objNum; + $this->_genNum = $genNum; + $this->_ref = null; + $this->_context = $context; + $this->_factory = $factory; + } + + /** + * Check, that object is generated by specified factory + * + * @return Zend_Pdf_ElementFactory + */ + public function getFactory() + { + return $this->_factory; + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + if ($this->_ref === null) { + $this->_dereference(); + } + + return $this->_ref->getType(); + } + + + /** + * Return reference to the object + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + if ($factory === null) { + $shift = 0; + } else { + $shift = $factory->getEnumerationShift($this->_factory); + } + + return $this->_objNum + $shift . ' ' . $this->_genNum . ' R'; + } + + + /** + * Dereference. + * Take inderect object, take $value member of this object (must be Zend_Pdf_Element), + * take reference to the $value member of this object and assign it to + * $value member of current PDF Reference object + * $obj can be null + * + * @throws Zend_Pdf_Exception + */ + private function _dereference() + { + if (($obj = $this->_factory->fetchObject($this->_objNum . ' ' . $this->_genNum)) === null) { + $obj = $this->_context->getParser()->getObject( + $this->_context->getRefTable()->getOffset($this->_objNum . ' ' . $this->_genNum . ' R'), + $this->_context + ); + } + + if ($obj === null ) { + $this->_ref = new Zend_Pdf_Element_Null(); + return; + } + + if ($obj->toString() != $this->_objNum . ' ' . $this->_genNum . ' R') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Incorrect reference to the object'); + } + + $this->_ref = $obj; + } + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + if ($this->_ref === null) { + $this->_dereference(); + } + + // This code duplicates code in Zend_Pdf_Element_Object class, + // but allows to avoid unnecessary method call in most cases + $id = spl_object_hash($this->_ref); + if (isset($processed[$id])) { + // Do nothing if object is already processed + // return it + return $processed[$id]; + } + + return $this->_ref->makeClone($factory, $processed, $mode); + } + + /** + * Mark object as modified, to include it into new PDF file segment. + */ + public function touch() + { + if ($this->_ref === null) { + $this->_dereference(); + } + + $this->_ref->touch(); + } + + /** + * Return object, which can be used to identify object and its references identity + * + * @return Zend_Pdf_Element_Object + */ + public function getObject() + { + if ($this->_ref === null) { + $this->_dereference(); + } + + return $this->_ref; + } + + /** + * Get handler + * + * @param string $property + * @return mixed + */ + public function __get($property) + { + if ($this->_ref === null) { + $this->_dereference(); + } + + return $this->_ref->$property; + } + + /** + * Set handler + * + * @param string $property + * @param mixed $value + */ + public function __set($property, $value) + { + if ($this->_ref === null) { + $this->_dereference(); + } + + $this->_ref->$property = $value; + } + + /** + * Call handler + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + if ($this->_ref === null) { + $this->_dereference(); + } + + return call_user_func_array(array($this->_ref, $method), $args); + } + + /** + * Clean up resources + */ + public function cleanUp() + { + $this->_ref = null; + } + + /** + * Convert PDF element to PHP type. + * + * @return mixed + */ + public function toPhp() + { + if ($this->_ref === null) { + $this->_dereference(); + } + + return $this->_ref->toPhp(); + } +} diff --git a/library/Zend/Pdf/Element/Reference/Context.php b/library/Zend/Pdf/Element/Reference/Context.php new file mode 100755 index 000000000..e87261b2a --- /dev/null +++ b/library/Zend/Pdf/Element/Reference/Context.php @@ -0,0 +1,83 @@ +_stringParser = $parser; + $this->_refTable = $refTable; + } + + + /** + * Context parser + * + * @return Zend_Pdf_StringParser + */ + public function getParser() + { + return $this->_stringParser; + } + + + /** + * Context reference table + * + * @return Zend_Pdf_Element_Reference_Table + */ + public function getRefTable() + { + return $this->_refTable; + } +} + diff --git a/library/Zend/Pdf/Element/Reference/Table.php b/library/Zend/Pdf/Element/Reference/Table.php new file mode 100755 index 000000000..fa36262db --- /dev/null +++ b/library/Zend/Pdf/Element/Reference/Table.php @@ -0,0 +1,198 @@ + next free object number + * + * @var array + */ + private $_free; + + /** + * Generation numbers for free objects. + * Array: objNum => nextGeneration + * + * @var array + */ + private $_generations; + + /** + * In use entries + * 'reference' => offset + * + * @var array + */ + private $_inuse; + + /** + * Generation numbers for free objects. + * Array: objNum => objGeneration + * + * @var array + */ + private $_usedObjects; + + + + /** + * Object constructor + */ + public function __construct() + { + $this->_parent = null; + $this->_free = array(); $this->_generations = array(); + $this->_inuse = array(); $this->_usedObjects = array(); + } + + + /** + * Add reference to the reference table + * + * @param string $ref + * @param integer $offset + * @param boolean $inuse + */ + public function addReference($ref, $offset, $inuse = true) + { + $refElements = explode(' ', $ref); + if (!is_numeric($refElements[0]) || !is_numeric($refElements[1]) || $refElements[2] != 'R') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Incorrect reference: '$ref'"); + } + $objNum = (int)$refElements[0]; + $genNum = (int)$refElements[1]; + + if ($inuse) { + $this->_inuse[$ref] = $offset; + $this->_usedObjects[$objNum] = $objNum; + } else { + $this->_free[$ref] = $offset; + $this->_generations[$objNum] = $genNum; + } + } + + + /** + * Set parent reference table + * + * @param Zend_Pdf_Element_Reference_Table $parent + */ + public function setParent(self $parent) + { + $this->_parent = $parent; + } + + + /** + * Get object offset + * + * @param string $ref + * @return integer + */ + public function getOffset($ref) + { + if (isset($this->_inuse[$ref])) { + return $this->_inuse[$ref]; + } + + if (isset($this->_free[$ref])) { + return null; + } + + if (isset($this->_parent)) { + return $this->_parent->getOffset($ref); + } + + return null; + } + + + /** + * Get next object from a list of free objects. + * + * @param string $ref + * @return integer + * @throws Zend_Pdf_Exception + */ + public function getNextFree($ref) + { + if (isset($this->_inuse[$ref])) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object is not free'); + } + + if (isset($this->_free[$ref])) { + return $this->_free[$ref]; + } + + if (isset($this->_parent)) { + return $this->_parent->getNextFree($ref); + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object not found.'); + } + + + /** + * Get next generation number for free object + * + * @param integer $objNum + * @return unknown + */ + public function getNewGeneration($objNum) + { + if (isset($this->_usedObjects[$objNum])) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object is not free'); + } + + if (isset($this->_generations[$objNum])) { + return $this->_generations[$objNum]; + } + + if (isset($this->_parent)) { + return $this->_parent->getNewGeneration($objNum); + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object not found.'); + } +} diff --git a/library/Zend/Pdf/Element/Stream.php b/library/Zend/Pdf/Element/Stream.php new file mode 100755 index 000000000..5c8db20bc --- /dev/null +++ b/library/Zend/Pdf/Element/Stream.php @@ -0,0 +1,130 @@ +value = Zend_Pdf::getMemoryManager()->create($val); + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_STREAM; + } + + + /** + * Stream length. + * (Method is used to avoid string copying, which may occurs in some cases) + * + * @return integer + */ + public function length() + { + return strlen($this->value->getRef()); + } + + + /** + * Clear stream + * + */ + public function clear() + { + $ref = &$this->value->getRef(); + $ref = ''; + $this->value->touch(); + } + + + /** + * Append value to a stream + * + * @param mixed $val + */ + public function append($val) + { + $ref = &$this->value->getRef(); + $ref .= (string)$val; + $this->value->touch(); + } + + + /** + * Detach PDF object from the factory (if applicable), clone it and attach to new factory. + * + * @param Zend_Pdf_ElementFactory $factory The factory to attach + * @param array &$processed List of already processed indirect objects, used to avoid objects duplication + * @param integer $mode Cloning mode (defines filter for objects cloning) + * @returns Zend_Pdf_Element + */ + public function makeClone(Zend_Pdf_ElementFactory $factory, array &$processed, $mode) + { + return new self($this->value->getRef()); + } + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + return "stream\n" . $this->value->getRef() . "\nendstream"; + } +} diff --git a/library/Zend/Pdf/Element/String.php b/library/Zend/Pdf/Element/String.php new file mode 100755 index 000000000..c840166ec --- /dev/null +++ b/library/Zend/Pdf/Element/String.php @@ -0,0 +1,263 @@ +value = (string)$val; + } + + + /** + * Return type of the element. + * + * @return integer + */ + public function getType() + { + return Zend_Pdf_Element::TYPE_STRING; + } + + + /** + * Return object as string + * + * @param Zend_Pdf_Factory $factory + * @return string + */ + public function toString($factory = null) + { + return '(' . self::escape((string)$this->value) . ')'; + } + + + /** + * Escape string according to the PDF rules + * + * @param string $str + * @return string + */ + public static function escape($str) + { + $outEntries = array(); + + foreach (str_split($str, 128) as $chunk) { + // Collect sequence of unescaped characters + $offset = strcspn($chunk, "\n\r\t\x08\x0C()\\"); + $chunkOut = substr($chunk, 0, $offset); + + while ($offset < strlen($chunk)) { + $nextCode = ord($chunk[$offset++]); + switch ($nextCode) { + // "\n" - line feed (LF) + case 10: + $chunkOut .= '\\n'; + break; + + // "\r" - carriage return (CR) + case 13: + $chunkOut .= '\\r'; + break; + + // "\t" - horizontal tab (HT) + case 9: + $chunkOut .= '\\t'; + break; + + // "\b" - backspace (BS) + case 8: + $chunkOut .= '\\b'; + break; + + // "\f" - form feed (FF) + case 12: + $chunkOut .= '\\f'; + break; + + // '(' - left paranthesis + case 40: + $chunkOut .= '\\('; + break; + + // ')' - right paranthesis + case 41: + $chunkOut .= '\\)'; + break; + + // '\' - backslash + case 92: + $chunkOut .= '\\\\'; + break; + + default: + // This code is never executed extually + // + // Don't use non-ASCII characters escaping + // if ($nextCode >= 32 && $nextCode <= 126 ) { + // // Visible ASCII symbol + // $chunkEntries[] = chr($nextCode); + // } else { + // $chunkEntries[] = sprintf('\\%03o', $nextCode); + // } + + break; + } + + // Collect sequence of unescaped characters + $start = $offset; + $offset += strcspn($chunk, "\n\r\t\x08\x0C()\\", $offset); + $chunkOut .= substr($chunk, $start, $offset - $start); + } + + $outEntries[] = $chunkOut; + } + + return implode("\\\n", $outEntries); + } + + + /** + * Unescape string according to the PDF rules + * + * @param string $str + * @return string + */ + public static function unescape($str) + { + $outEntries = array(); + + $offset = 0; + while ($offset < strlen($str)) { + // Searche for the next escaped character/sequence + $escapeCharOffset = strpos($str, '\\', $offset); + if ($escapeCharOffset === false || $escapeCharOffset == strlen($str) - 1) { + // There are no escaped characters or '\' char has came at the end of string + $outEntries[] = substr($str, $offset); + break; + } else { + // Collect unescaped characters sequence + $outEntries[] = substr($str, $offset, $escapeCharOffset - $offset); + // Go to the escaped character + $offset = $escapeCharOffset + 1; + + switch ($str[$offset]) { + // '\\n' - line feed (LF) + case 'n': + $outEntries[] = "\n"; + break; + + // '\\r' - carriage return (CR) + case 'r': + $outEntries[] = "\r"; + break; + + // '\\t' - horizontal tab (HT) + case 't': + $outEntries[] = "\t"; + break; + + // '\\b' - backspace (BS) + case 'b': + $outEntries[] = "\x08"; + break; + + // '\\f' - form feed (FF) + case 'f': + $outEntries[] = "\x0C"; + break; + + // '\\(' - left paranthesis + case '(': + $outEntries[] = '('; + break; + + // '\\)' - right paranthesis + case ')': + $outEntries[] = ')'; + break; + + // '\\\\' - backslash + case '\\': + $outEntries[] = '\\'; + break; + + // "\\\n" or "\\\n\r" + case "\n": + // skip new line symbol + if ($str[$offset + 1] == "\r") { + $offset++; + } + break; + + default: + if (strpos('0123456789', $str[$offset]) !== false) { + // Character in octal representation + // '\\xxx' + $nextCode = '0' . $str[$offset]; + + if (strpos('0123456789', $str[$offset + 1]) !== false) { + $nextCode .= $str[++$offset]; + + if (strpos('0123456789', $str[$offset + 1]) !== false) { + $nextCode .= $str[++$offset]; + } + } + + $outEntries[] = chr(octdec($nextCode)); + } else { + $outEntries[] = $str[$offset]; + } + break; + } + + $offset++; + } + } + + return implode($outEntries); + } + +} diff --git a/library/Zend/Pdf/Element/String/Binary.php b/library/Zend/Pdf/Element/String/Binary.php new file mode 100755 index 000000000..1eb704b02 --- /dev/null +++ b/library/Zend/Pdf/Element/String/Binary.php @@ -0,0 +1,98 @@ +value) . '>'; + } +} diff --git a/library/Zend/Pdf/ElementFactory.php b/library/Zend/Pdf/ElementFactory.php new file mode 100755 index 000000000..17bd82a90 --- /dev/null +++ b/library/Zend/Pdf/ElementFactory.php @@ -0,0 +1,446 @@ + Zend_Pdf_Element_Object + * + * @var array + */ + private $_modifiedObjects = array(); + + /** + * List of the removed objects + * + * Array: ojbectNumber => Zend_Pdf_Element_Object + * + * @var SplObjectStorage + */ + private $_removedObjects; + + /** + * List of registered objects. + * Used for resources clean up when factory is destroyed. + * + * Array of Zend_Pdf_Element objects + * + * @var array + */ + private $_registeredObjects = array(); + + /** + * PDF object counter. + * Actually it's an object number for new PDF object + * + * @var integer + */ + private $_objectCount; + + + /** + * List of the attached object factories. + * Array of Zend_Pdf_ElementFactory_Interface objects + * + * @var array + */ + private $_attachedFactories = array(); + + + /** + * Factory internal id + * + * @var integer + */ + private $_factoryId; + + /** + * Identity, used for factory id generation + * + * @var integer + */ + private static $_identity = 0; + + + /** + * Internal cache to save calculated shifts + * + * @var array + */ + private $_shiftCalculationCache = array(); + + + /** + * Object constructor + * + * @param integer $objCount + */ + public function __construct($objCount) + { + $this->_objectCount = (int)$objCount; + $this->_factoryId = self::$_identity++; + $this->_removedObjects = new SplObjectStorage(); + } + + + /** + * Get factory + * + * @return Zend_Pdf_ElementFactory_Interface + */ + public function getFactory() + { + return $this; + } + + /** + * Factory generator + * + * @param integer $objCount + * @return Zend_Pdf_ElementFactory_Interface + */ + static public function createFactory($objCount) + { + require_once 'Zend/Pdf/ElementFactory/Proxy.php'; + return new Zend_Pdf_ElementFactory_Proxy(new Zend_Pdf_ElementFactory($objCount)); + } + + /** + * Close factory and clean-up resources + * + * @internal + */ + public function close() + { + $this->_modifiedObjects = null; + $this->_removedObjects = null; + $this->_attachedFactories = null; + + foreach ($this->_registeredObjects as $obj) { + $obj->cleanUp(); + } + $this->_registeredObjects = null; + } + + /** + * Get source factory object + * + * @return Zend_Pdf_ElementFactory + */ + public function resolve() + { + return $this; + } + + /** + * Get factory ID + * + * @return integer + */ + public function getId() + { + return $this->_factoryId; + } + + /** + * Set object counter + * + * @param integer $objCount + */ + public function setObjectCount($objCount) + { + $this->_objectCount = (int)$objCount; + } + + /** + * Get object counter + * + * @return integer + */ + public function getObjectCount() + { + $count = $this->_objectCount; + + foreach ($this->_attachedFactories as $attached) { + $count += $attached->getObjectCount() - 1; // -1 as "0" object is a special case and shared between factories + } + + return $count; + } + + + /** + * Attach factory to the current; + * + * @param Zend_Pdf_ElementFactory_Interface $factory + */ + public function attach(Zend_Pdf_ElementFactory_Interface $factory) + { + if ( $factory === $this || isset($this->_attachedFactories[$factory->getId()])) { + /** + * Don't attach factory twice. + * We do not check recusively because of nature of attach operation + * (Pages are always attached to the Documents, Fonts are always attached + * to the pages even if pages already use Document level object factory and so on) + */ + return; + } + + $this->_attachedFactories[$factory->getId()] = $factory; + } + + + /** + * Calculate object enumeration shift. + * + * @param Zend_Pdf_ElementFactory_Interface $factory + * @return integer + */ + public function calculateShift(Zend_Pdf_ElementFactory_Interface $factory) + { + if ($factory === $this) { + return 0; + } + + if (isset($this->_shiftCalculationCache[$factory->_factoryId])) { + return $this->_shiftCalculationCache[$factory->_factoryId]; + } + + $shift = $this->_objectCount - 1; + + foreach ($this->_attachedFactories as $subFactory) { + $subFactoryShift = $subFactory->calculateShift($factory); + + if ($subFactoryShift != -1) { + // context found + $this->_shiftCalculationCache[$factory->_factoryId] = $shift + $subFactoryShift; + return $shift + $subFactoryShift; + } else { + $shift += $subFactory->getObjectCount()-1; + } + } + + $this->_shiftCalculationCache[$factory->_factoryId] = -1; + return -1; + } + + /** + * Clean enumeration shift cache. + * Has to be used after PDF render operation to let followed updates be correct. + */ + public function cleanEnumerationShiftCache() + { + $this->_shiftCalculationCache = array(); + + foreach ($this->_attachedFactories as $attached) { + $attached->cleanEnumerationShiftCache(); + } + } + + /** + * Retrive object enumeration shift. + * + * @param Zend_Pdf_ElementFactory_Interface $factory + * @return integer + * @throws Zend_Pdf_Exception + */ + public function getEnumerationShift(Zend_Pdf_ElementFactory_Interface $factory) + { + if (($shift = $this->calculateShift($factory)) == -1) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong object context'); + } + + return $shift; + } + + /** + * Mark object as modified in context of current factory. + * + * @param Zend_Pdf_Element_Object $obj + * @throws Zend_Pdf_Exception + */ + public function markAsModified(Zend_Pdf_Element_Object $obj) + { + if ($obj->getFactory() !== $this) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object is not generated by this factory'); + } + + $this->_modifiedObjects[$obj->getObjNum()] = $obj; + } + + + /** + * Remove object in context of current factory. + * + * @param Zend_Pdf_Element_Object $obj + * @throws Zend_Pdf_Exception + */ + public function remove(Zend_Pdf_Element_Object $obj) + { + if (!$obj->compareFactory($this)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Object is not generated by this factory'); + } + + $this->_modifiedObjects[$obj->getObjNum()] = $obj; + $this->_removedObjects->attach($obj); + } + + + /** + * Generate new Zend_Pdf_Element_Object + * + * @todo Reusage of the freed object. It's not a support of new feature, but only improvement. + * + * @param Zend_Pdf_Element $objectValue + * @return Zend_Pdf_Element_Object + */ + public function newObject(Zend_Pdf_Element $objectValue) + { + require_once 'Zend/Pdf/Element/Object.php'; + $obj = new Zend_Pdf_Element_Object($objectValue, $this->_objectCount++, 0, $this); + $this->_modifiedObjects[$obj->getObjNum()] = $obj; + return $obj; + } + + /** + * Generate new Zend_Pdf_Element_Object_Stream + * + * @todo Reusage of the freed object. It's not a support of new feature, but only improvement. + * + * @param mixed $objectValue + * @return Zend_Pdf_Element_Object_Stream + */ + public function newStreamObject($streamValue) + { + require_once 'Zend/Pdf/Element/Object/Stream.php'; + $obj = new Zend_Pdf_Element_Object_Stream($streamValue, $this->_objectCount++, 0, $this); + $this->_modifiedObjects[$obj->getObjNum()] = $obj; + return $obj; + } + + + /** + * Enumerate modified objects. + * Returns array of Zend_Pdf_UpdateInfoContainer + * + * @param Zend_Pdf_ElementFactory_Interface $rootFactory + * @return array + */ + public function listModifiedObjects($rootFactory = null) + { + if ($rootFactory == null) { + $rootFactory = $this; + $shift = 0; + } else { + $shift = $rootFactory->getEnumerationShift($this); + } + + ksort($this->_modifiedObjects); + + $result = array(); + require_once 'Zend/Pdf/UpdateInfoContainer.php'; + foreach ($this->_modifiedObjects as $objNum => $obj) { + if ($this->_removedObjects->contains($obj)) { + $result[$objNum+$shift] = new Zend_Pdf_UpdateInfoContainer($objNum + $shift, + $obj->getGenNum()+1, + true); + } else { + $result[$objNum+$shift] = new Zend_Pdf_UpdateInfoContainer($objNum + $shift, + $obj->getGenNum(), + false, + $obj->dump($rootFactory)); + } + } + + foreach ($this->_attachedFactories as $factory) { + $result += $factory->listModifiedObjects($rootFactory); + } + + return $result; + } + + /** + * Register object in the factory + * + * It's used to clear "parent object" referencies when factory is closed and clean up resources + * + * @param string $refString + * @param Zend_Pdf_Element_Object $obj + */ + public function registerObject(Zend_Pdf_Element_Object $obj, $refString) + { + $this->_registeredObjects[$refString] = $obj; + } + + /** + * Fetch object specified by reference + * + * @param string $refString + * @return Zend_Pdf_Element_Object|null + */ + public function fetchObject($refString) + { + if (!isset($this->_registeredObjects[$refString])) { + return null; + } + return $this->_registeredObjects[$refString]; + } + + + /** + * Check if PDF file was modified + * + * @return boolean + */ + public function isModified() + { + if (count($this->_modifiedObjects) != 0) { + return true; + } + + foreach ($this->_attachedFactories as $subFactory) { + if ($subFactory->isModified()) { + return true; + } + } + + return false; + } +} + diff --git a/library/Zend/Pdf/ElementFactory/Interface.php b/library/Zend/Pdf/ElementFactory/Interface.php new file mode 100755 index 000000000..2cd51a058 --- /dev/null +++ b/library/Zend/Pdf/ElementFactory/Interface.php @@ -0,0 +1,158 @@ +_factory = $factory; + } + + public function __destruct() + { + $this->_factory->close(); + $this->_factory = null; + } + + /** + * Get factory + * + * @return Zend_Pdf_ElementFactory_Interface + */ + public function getFactory() + { + return $this->_factory->getFactory(); + } + + /** + * Close factory and clean-up resources + * + * @internal + */ + public function close() + { + // Do nothing + } + + /** + * Get source factory object + * + * @return Zend_Pdf_ElementFactory + */ + public function resolve() + { + return $this->_factory->resolve(); + } + + /** + * Get factory ID + * + * @return integer + */ + public function getId() + { + return $this->_factory->getId(); + } + + /** + * Set object counter + * + * @param integer $objCount + */ + public function setObjectCount($objCount) + { + $this->_factory->setObjectCount($objCount); + } + + /** + * Get object counter + * + * @return integer + */ + public function getObjectCount() + { + return $this->_factory->getObjectCount(); + } + + /** + * Attach factory to the current; + * + * @param Zend_Pdf_ElementFactory_Interface $factory + */ + public function attach(Zend_Pdf_ElementFactory_Interface $factory) + { + $this->_factory->attach($factory); + } + + /** + * Calculate object enumeration shift. + * + * @internal + * @param Zend_Pdf_ElementFactory_Interface $factory + * @return integer + */ + public function calculateShift(Zend_Pdf_ElementFactory_Interface $factory) + { + return $this->_factory->calculateShift($factory); + } + + /** + * Clean enumeration shift cache. + * Has to be used after PDF render operation to let followed updates be correct. + * + * @param Zend_Pdf_ElementFactory_Interface $factory + * @return integer + */ + public function cleanEnumerationShiftCache() + { + return $this->_factory->cleanEnumerationShiftCache(); + } + + /** + * Retrive object enumeration shift. + * + * @param Zend_Pdf_ElementFactory_Interface $factory + * @return integer + * @throws Zend_Pdf_Exception + */ + public function getEnumerationShift(Zend_Pdf_ElementFactory_Interface $factory) + { + return $this->_factory->getEnumerationShift($factory); + } + + /** + * Mark object as modified in context of current factory. + * + * @param Zend_Pdf_Element_Object $obj + * @throws Zend_Pdf_Exception + */ + public function markAsModified(Zend_Pdf_Element_Object $obj) + { + $this->_factory->markAsModified($obj); + } + + /** + * Remove object in context of current factory. + * + * @param Zend_Pdf_Element_Object $obj + * @throws Zend_Pdf_Exception + */ + public function remove(Zend_Pdf_Element_Object $obj) + { + $this->_factory->remove($obj); + } + + /** + * Generate new Zend_Pdf_Element_Object + * + * @todo Reusage of the freed object. It's not a support of new feature, but only improvement. + * + * @param Zend_Pdf_Element $objectValue + * @return Zend_Pdf_Element_Object + */ + public function newObject(Zend_Pdf_Element $objectValue) + { + return $this->_factory->newObject($objectValue); + } + + /** + * Generate new Zend_Pdf_Element_Object_Stream + * + * @todo Reusage of the freed object. It's not a support of new feature, but only improvement. + * + * @param mixed $objectValue + * @return Zend_Pdf_Element_Object_Stream + */ + public function newStreamObject($streamValue) + { + return $this->_factory->newStreamObject($streamValue); + } + + /** + * Enumerate modified objects. + * Returns array of Zend_Pdf_UpdateInfoContainer + * + * @param Zend_Pdf_ElementFactory $rootFactory + * @return array + */ + public function listModifiedObjects($rootFactory = null) + { + return $this->_factory->listModifiedObjects($rootFactory); + } + + /** + * Check if PDF file was modified + * + * @return boolean + */ + public function isModified() + { + return $this->_factory->isModified(); + } +} diff --git a/library/Zend/Pdf/Exception.php b/library/Zend/Pdf/Exception.php new file mode 100755 index 000000000..fc1f44e1a --- /dev/null +++ b/library/Zend/Pdf/Exception.php @@ -0,0 +1,343 @@ +_isScreened to true if successful. + * + * @throws Zend_Pdf_Exception + */ + abstract public function screen(); + + /** + * Reads and parses the complete binary file. + * + * Must set $this->_isParsed to true if successful. + * + * @throws Zend_Pdf_Exception + */ + abstract public function parse(); + + + /* Object Lifecycle */ + + /** + * Object constructor. + * + * Verifies that the data source has been properly initialized. + * + * @param Zend_Pdf_FileParserDataSource $dataSource + * @throws Zend_Pdf_Exception + */ + public function __construct(Zend_Pdf_FileParserDataSource $dataSource) + { + if ($dataSource->getSize() == 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('The data source has not been properly initialized', + Zend_Pdf_Exception::BAD_DATA_SOURCE); + } + $this->_dataSource = $dataSource; + } + + /** + * Object destructor. + * + * Discards the data source object. + */ + public function __destruct() + { + $this->_dataSource = null; + } + + + /* Accessors */ + + /** + * Returns true if the file has passed a cursory validation check. + * + * @return boolean + */ + public function isScreened() + { + return $this->_isScreened; + } + + /** + * Returns true if the file has been successfully parsed. + * + * @return boolean + */ + public function isParsed() + { + return $this->_isParsed; + } + + /** + * Returns the data source object representing the file being parsed. + * + * @return Zend_Pdf_FileParserDataSource + */ + public function getDataSource() + { + return $this->_dataSource; + } + + + /* Primitive Methods */ + + /** + * Convenience wrapper for the data source object's moveToOffset() method. + * + * @param integer $offset Destination byte offset. + * @throws Zend_Pdf_Exception + */ + public function moveToOffset($offset) + { + $this->_dataSource->moveToOffset($offset); + } + + public function getOffset() { + return $this->_dataSource->getOffset(); + } + + public function getSize() { + return $this->_dataSource->getSize(); + } + + /** + * Convenience wrapper for the data source object's readBytes() method. + * + * @param integer $byteCount Number of bytes to read. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readBytes($byteCount) + { + return $this->_dataSource->readBytes($byteCount); + } + + /** + * Convenience wrapper for the data source object's skipBytes() method. + * + * @param integer $byteCount Number of bytes to skip. + * @throws Zend_Pdf_Exception + */ + public function skipBytes($byteCount) + { + $this->_dataSource->skipBytes($byteCount); + } + + + /* Parser Methods */ + + /** + * Reads the signed integer value from the binary file at the current byte + * offset. + * + * Advances the offset by the number of bytes read. Throws an exception if + * an error occurs. + * + * @param integer $size Size of integer in bytes: 1-4 + * @param integer $byteOrder (optional) Big- or little-endian byte order. + * Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}. + * If omitted, uses big-endian. + * @return integer + * @throws Zend_Pdf_Exception + */ + public function readInt($size, $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) + { + if (($size < 1) || ($size > 4)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Invalid signed integer size: $size", + Zend_Pdf_Exception::INVALID_INTEGER_SIZE); + } + $bytes = $this->_dataSource->readBytes($size); + /* unpack() will not work for this method because it always works in + * the host byte order for signed integers. It also does not allow for + * variable integer sizes. + */ + if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) { + $number = ord($bytes[0]); + if (($number & 0x80) == 0x80) { + /* This number is negative. Extract the positive equivalent. + */ + $number = (~ $number) & 0xff; + for ($i = 1; $i < $size; $i++) { + $number = ($number << 8) | ((~ ord($bytes[$i])) & 0xff); + } + /* Now turn this back into a negative number by taking the + * two's complement (we didn't add one above so won't + * subtract it below). This works reliably on both 32- and + * 64-bit systems. + */ + $number = ~$number; + } else { + for ($i = 1; $i < $size; $i++) { + $number = ($number << 8) | ord($bytes[$i]); + } + } + } else if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_LITTLE_ENDIAN) { + $number = ord($bytes[$size - 1]); + if (($number & 0x80) == 0x80) { + /* Negative number. See discussion above. + */ + $number = 0; + for ($i = --$size; $i >= 0; $i--) { + $number |= ((~ ord($bytes[$i])) & 0xff) << ($i * 8); + } + $number = ~$number; + } else { + $number = 0; + for ($i = --$size; $i >= 0; $i--) { + $number |= ord($bytes[$i]) << ($i * 8); + } + } + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Invalid byte order: $byteOrder", + Zend_Pdf_Exception::INVALID_BYTE_ORDER); + } + return $number; + } + + /** + * Reads the unsigned integer value from the binary file at the current byte + * offset. + * + * Advances the offset by the number of bytes read. Throws an exception if + * an error occurs. + * + * NOTE: If you ask for a 4-byte unsigned integer on a 32-bit machine, the + * resulting value WILL BE SIGNED because PHP uses signed integers internally + * for everything. To guarantee portability, be sure to use bitwise operators + * operators on large unsigned integers! + * + * @param integer $size Size of integer in bytes: 1-4 + * @param integer $byteOrder (optional) Big- or little-endian byte order. + * Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}. + * If omitted, uses big-endian. + * @return integer + * @throws Zend_Pdf_Exception + */ + public function readUInt($size, $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) + { + if (($size < 1) || ($size > 4)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Invalid unsigned integer size: $size", + Zend_Pdf_Exception::INVALID_INTEGER_SIZE); + } + $bytes = $this->_dataSource->readBytes($size); + /* unpack() is a bit heavyweight for this simple conversion. Just + * work the bytes directly. + */ + if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) { + $number = ord($bytes[0]); + for ($i = 1; $i < $size; $i++) { + $number = ($number << 8) | ord($bytes[$i]); + } + } else if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_LITTLE_ENDIAN) { + $number = 0; + for ($i = --$size; $i >= 0; $i--) { + $number |= ord($bytes[$i]) << ($i * 8); + } + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Invalid byte order: $byteOrder", + Zend_Pdf_Exception::INVALID_BYTE_ORDER); + } + return $number; + } + + /** + * Returns true if the specified bit is set in the integer bitfield. + * + * @param integer $bit Bit number to test (i.e. - 0-31) + * @param integer $bitField + * @return boolean + */ + public function isBitSet($bit, $bitField) + { + $bitMask = 1 << $bit; + $isSet = (($bitField & $bitMask) == $bitMask); + return $isSet; + } + + /** + * Reads the signed fixed-point number from the binary file at the current + * byte offset. + * + * Common fixed-point sizes are 2.14 and 16.16. + * + * Advances the offset by the number of bytes read. Throws an exception if + * an error occurs. + * + * @param integer $mantissaBits Number of bits in the mantissa + * @param integer $fractionBits Number of bits in the fraction + * @param integer $byteOrder (optional) Big- or little-endian byte order. + * Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}. + * If omitted, uses big-endian. + * @return float + * @throws Zend_Pdf_Exception + */ + public function readFixed($mantissaBits, $fractionBits, + $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) + { + $bitsToRead = $mantissaBits + $fractionBits; + if (($bitsToRead % 8) !== 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Fixed-point numbers are whole bytes', + Zend_Pdf_Exception::BAD_FIXED_POINT_SIZE); + } + $number = $this->readInt(($bitsToRead >> 3), $byteOrder) / (1 << $fractionBits); + return $number; + } + + /** + * Reads the Unicode UTF-16-encoded string from the binary file at the + * current byte offset. + * + * The byte order of the UTF-16 string must be specified. You must also + * supply the desired resulting character set. + * + * Advances the offset by the number of bytes read. Throws an exception if + * an error occurs. + * + * @todo Consider changing $byteCount to a character count. They are not + * always equivalent (in the case of surrogates). + * @todo Make $byteOrder optional if there is a byte-order mark (BOM) in the + * string being extracted. + * + * @param integer $byteCount Number of bytes (characters * 2) to return. + * @param integer $byteOrder (optional) Big- or little-endian byte order. + * Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}. + * If omitted, uses big-endian. + * @param string $characterSet (optional) Desired resulting character set. + * You may use any character set supported by {@link iconv()}. If omitted, + * uses 'current locale'. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readStringUTF16($byteCount, + $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN, + $characterSet = '') + { + if ($byteCount == 0) { + return ''; + } + $bytes = $this->_dataSource->readBytes($byteCount); + if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN) { + if ($characterSet == 'UTF-16BE') { + return $bytes; + } + return iconv('UTF-16BE', $characterSet, $bytes); + } else if ($byteOrder == Zend_Pdf_FileParser::BYTE_ORDER_LITTLE_ENDIAN) { + if ($characterSet == 'UTF-16LE') { + return $bytes; + } + return iconv('UTF-16LE', $characterSet, $bytes); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Invalid byte order: $byteOrder", + Zend_Pdf_Exception::INVALID_BYTE_ORDER); + } + } + + /** + * Reads the Mac Roman-encoded string from the binary file at the current + * byte offset. + * + * You must supply the desired resulting character set. + * + * Advances the offset by the number of bytes read. Throws an exception if + * an error occurs. + * + * @param integer $byteCount Number of bytes (characters) to return. + * @param string $characterSet (optional) Desired resulting character set. + * You may use any character set supported by {@link iconv()}. If omitted, + * uses 'current locale'. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readStringMacRoman($byteCount, $characterSet = '') + { + if ($byteCount == 0) { + return ''; + } + $bytes = $this->_dataSource->readBytes($byteCount); + if ($characterSet == 'MacRoman') { + return $bytes; + } + return iconv('MacRoman', $characterSet, $bytes); + } + + /** + * Reads the Pascal string from the binary file at the current byte offset. + * + * The length of the Pascal string is determined by reading the length bytes + * which preceed the character data. You must supply the desired resulting + * character set. + * + * Advances the offset by the number of bytes read. Throws an exception if + * an error occurs. + * + * @param string $characterSet (optional) Desired resulting character set. + * You may use any character set supported by {@link iconv()}. If omitted, + * uses 'current locale'. + * @param integer $lengthBytes (optional) Number of bytes that make up the + * length. Default is 1. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readStringPascal($characterSet = '', $lengthBytes = 1) + { + $byteCount = $this->readUInt($lengthBytes); + if ($byteCount == 0) { + return ''; + } + $bytes = $this->_dataSource->readBytes($byteCount); + if ($characterSet == 'ASCII') { + return $bytes; + } + return iconv('ASCII', $characterSet, $bytes); + } + +} diff --git a/library/Zend/Pdf/FileParser/Font.php b/library/Zend/Pdf/FileParser/Font.php new file mode 100755 index 000000000..a9cd3567d --- /dev/null +++ b/library/Zend/Pdf/FileParser/Font.php @@ -0,0 +1,217 @@ +fontType = Zend_Pdf_Font::TYPE_UNKNOWN; + } + + + /* Accessors */ + + /** + * Get handler + * + * @param string $property + * @return mixed + */ + public function __get($property) + { + if (isset($this->_fontProperties[$property])) { + return $this->_fontProperties[$property]; + } else { + return null; + } + } + + /* NOTE: The set handler is defined below in the internal methods group. */ + + + /* Parser Methods */ + + /** + * Reads the Unicode UTF-16-encoded string from the binary file at the + * current offset location. Overridden to fix return character set at UTF-16BE. + * + * @todo Deal with to-dos in the parent method. + * + * @param integer $byteCount Number of bytes (characters * 2) to return. + * @param integer $byteOrder (optional) Big- or little-endian byte order. + * Use the BYTE_ORDER_ constants defined in {@link Zend_Pdf_FileParser}. If + * omitted, uses big-endian. + * @param string $characterSet (optional) --Ignored-- + * @return string + * @throws Zend_Pdf_Exception + */ + public function readStringUTF16($byteCount, + $byteOrder = Zend_Pdf_FileParser::BYTE_ORDER_BIG_ENDIAN, + $characterSet = '') + { + return parent::readStringUTF16($byteCount, $byteOrder, 'UTF-16BE'); + } + + /** + * Reads the Mac Roman-encoded string from the binary file at the current + * offset location. Overridden to fix return character set at UTF-16BE. + * + * @param integer $byteCount Number of bytes (characters) to return. + * @param string $characterSet (optional) --Ignored-- + * @return string + * @throws Zend_Pdf_Exception + */ + public function readStringMacRoman($byteCount, $characterSet = '') + { + return parent::readStringMacRoman($byteCount, 'UTF-16BE'); + } + + /** + * Reads the Pascal string from the binary file at the current offset + * location. Overridden to fix return character set at UTF-16BE. + * + * @param string $characterSet (optional) --Ignored-- + * @param integer $lengthBytes (optional) Number of bytes that make up the + * length. Default is 1. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readStringPascal($characterSet = '', $lengthBytes = 1) + { + return parent::readStringPascal('UTF-16BE'); + } + + + /* Utility Methods */ + + /** + * Writes the entire font properties array to STDOUT. Used only for debugging. + */ + public function writeDebug() + { + print_r($this->_fontProperties); + } + + + + /**** Internal Methods ****/ + + + /* Internal Accessors */ + + /** + * Set handler + * + * NOTE: This method is protected. Other classes may freely interrogate + * the font properties, but only this and its subclasses may set them. + * + * @param string $property + * @param mixed $value + */ + public function __set($property, $value) + { + if ($value === null) { + unset($this->_fontProperties[$property]); + } else { + $this->_fontProperties[$property] = $value; + } + } + + + /* Internal Utility Methods */ + + /** + * If debug logging is enabled, writes the log message. + * + * The log message is a sprintf() style string and any number of arguments + * may accompany it as additional parameters. + * + * @param string $message + * @param mixed (optional, multiple) Additional arguments + */ + protected function _debugLog($message) + { + if (! $this->_debug) { + return; + } + if (func_num_args() > 1) { + $args = func_get_args(); + $message = array_shift($args); + $message = vsprintf($message, $args); + } + + require_once 'Zend/Log.php'; + $logger = new Zend_Log(); + $logger->log($message, Zend_Log::DEBUG); + } +} diff --git a/library/Zend/Pdf/FileParser/Font/OpenType.php b/library/Zend/Pdf/FileParser/Font/OpenType.php new file mode 100755 index 000000000..05a1d96ba --- /dev/null +++ b/library/Zend/Pdf/FileParser/Font/OpenType.php @@ -0,0 +1,1138 @@ + + *
  • {@link http://developer.apple.com/textfonts/TTRefMan/} + *
  • {@link http://www.microsoft.com/typography/OTSPEC/} + *
  • {@link http://partners.adobe.com/public/developer/opentype/index_spec.html} + * + * + * @package Zend_Pdf + * @subpackage FileParser + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Pdf_FileParser_Font_OpenType extends Zend_Pdf_FileParser_Font +{ + /**** Instance Variables ****/ + + + /** + * Stores the scaler type (font type) for the font file. See + * {@link _readScalerType()}. + * @var integer + */ + protected $_scalerType = 0; + + /** + * Stores the byte offsets to the various information tables. + * @var array + */ + protected $_tableDirectory = array(); + + + + /**** Public Interface ****/ + + + /* Semi-Concrete Class Implementation */ + + /** + * Verifies that the font file is in the expected format. + * + * NOTE: This method should be overridden in subclasses to check the + * specific format and set $this->_isScreened! + * + * @throws Zend_Pdf_Exception + */ + public function screen() + { + if ($this->_isScreened) { + return; + } + $this->_readScalerType(); + } + + /** + * Reads and parses the font data from the file on disk. + * + * NOTE: This method should be overridden in subclasses to add type- + * specific parsing and set $this->isParsed. + * + * @throws Zend_Pdf_Exception + */ + public function parse() + { + if ($this->_isParsed) { + return; + } + + /* Screen the font file first, if it hasn't been done yet. + */ + $this->screen(); + + /* Start by reading the table directory. + */ + $this->_parseTableDirectory(); + + /* Then parse all of the required tables. + */ + $this->_parseHeadTable(); + $this->_parseNameTable(); + $this->_parsePostTable(); + $this->_parseHheaTable(); + $this->_parseMaxpTable(); + $this->_parseOs2Table(); + $this->_parseHmtxTable(); + $this->_parseCmapTable(); + + /* If present, parse the optional tables. + */ + /** + * @todo Add parser for kerning pairs. + * @todo Add parser for ligatures. + * @todo Add parser for other useful hinting tables. + */ + } + + + + /**** Internal Methods ****/ + + + /* Parser Methods */ + + /** + * Parses the OpenType table directory. + * + * The table directory contains the identifier, checksum, byte offset, and + * length of each of the information tables housed in the font file. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseTableDirectory() + { + $this->moveToOffset(4); + + $tableCount = $this->readUInt(2); + $this->_debugLog('%d tables', $tableCount); + + /* Sanity check, in case we're not actually reading a OpenType file and + * the first four bytes coincidentally matched an OpenType signature in + * screen() above. + * + * There are at minimum 7 required tables: cmap, head, hhea, hmtx, maxp, + * name, and post. In the current OpenType standard, only 32 table types + * are defined, so use 50 as a practical limit. + */ + if (($tableCount < 7) || ($tableCount > 50)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Table count not within expected range', + Zend_Pdf_Exception::BAD_TABLE_COUNT); + } + + /* Skip the next 6 bytes, which contain values to aid a binary search. + */ + $this->skipBytes(6); + + /* The directory contains four values: the name of the table, checksum, + * offset to the table from the beginning of the font, and actual data + * length of the table. + */ + for ($tableIndex = 0; $tableIndex < $tableCount; $tableIndex++) { + $tableName = $this->readBytes(4); + + /* We ignore the checksum here for two reasons: First, the PDF viewer + * will do this later anyway; Second, calculating the checksum would + * require unsigned integers, which PHP does not currently provide. + * We may revisit this in the future. + */ + $this->skipBytes(4); + + $tableOffset = $this->readUInt(4); + $tableLength = $this->readUInt(4); + $this->_debugLog('%s offset: 0x%x; length: %d', $tableName, $tableOffset, $tableLength); + + /* Sanity checks for offset and length values. + */ + $fileSize = $this->_dataSource->getSize(); + if (($tableOffset < 0) || ($tableOffset > $fileSize)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Table offset ($tableOffset) not within expected range", + Zend_Pdf_Exception::INDEX_OUT_OF_RANGE); + } + if (($tableLength < 0) || (($tableOffset + $tableLength) > $fileSize)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Table length ($tableLength) not within expected range", + Zend_Pdf_Exception::INDEX_OUT_OF_RANGE); + } + + $this->_tableDirectory[$tableName]['offset'] = $tableOffset; + $this->_tableDirectory[$tableName]['length'] = $tableLength; + } + } + + + /** + * Parses the OpenType head (Font Header) table. + * + * The head table contains global information about the font such as the + * revision number and global metrics. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseHeadTable() + { + $this->_jumpToTable('head'); + + /* We can read any version 1 table. + */ + $tableVersion = $this->_readTableVersion(1, 1); + + /* Skip the font revision number and checksum adjustment. + */ + $this->skipBytes(8); + + $magicNumber = $this->readUInt(4); + if ($magicNumber != 0x5f0f3cf5) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong magic number. Expected: 0x5f0f3cf5; actual: ' + . sprintf('%x', $magicNumber), + Zend_Pdf_Exception::BAD_MAGIC_NUMBER); + } + + /* Most of the flags we ignore, but there are a few values that are + * useful for our layout routines. + */ + $flags = $this->readUInt(2); + $this->baselineAtZero = $this->isBitSet(0, $flags); + $this->useIntegerScaling = $this->isBitSet(3, $flags); + + $this->unitsPerEm = $this->readUInt(2); + $this->_debugLog('Units per em: %d', $this->unitsPerEm); + + /* Skip creation and modification date/time. + */ + $this->skipBytes(16); + + $this->xMin = $this->readInt(2); + $this->yMin = $this->readInt(2); + $this->xMax = $this->readInt(2); + $this->yMax = $this->readInt(2); + $this->_debugLog('Font bounding box: %d %d %d %d', + $this->xMin, $this->yMin, $this->xMax, $this->yMax); + + /* The style bits here must match the fsSelection bits in the OS/2 + * table, if present. + */ + $macStyleBits = $this->readUInt(2); + $this->isBold = $this->isBitSet(0, $macStyleBits); + $this->isItalic = $this->isBitSet(1, $macStyleBits); + + /* We don't need the remainder of data in this table: smallest readable + * size, font direction hint, indexToLocFormat, and glyphDataFormat. + */ + } + + + /** + * Parses the OpenType name (Naming) table. + * + * The name table contains all of the identifying strings associated with + * the font such as its name, copyright, trademark, license, etc. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseNameTable() + { + $this->_jumpToTable('name'); + $baseOffset = $this->_tableDirectory['name']['offset']; + + /* The name table begins with a short header, followed by each of the + * fixed-length name records, followed by the variable-length strings. + */ + + /* We only understand version 0 tables. + */ + $tableFormat = $this->readUInt(2); + if ($tableFormat != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unable to read format $tableFormat table", + Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION); + } + $this->_debugLog('Format %d table', $tableFormat); + + $nameCount = $this->readUInt(2); + $this->_debugLog('%d name strings', $nameCount); + + $storageOffset = $this->readUInt(2) + $baseOffset; + $this->_debugLog('Storage offset: 0x%x', $storageOffset); + + /* Scan the name records for those we're interested in. We'll skip over + * encodings and languages we don't understand or support. Prefer the + * Microsoft Unicode encoding for a given name/language combination, but + * use Mac Roman if nothing else is available. We will extract the + * actual strings later. + */ + $nameRecords = array(); + for ($nameIndex = 0; $nameIndex < $nameCount; $nameIndex++) { + + $platformID = $this->readUInt(2); + $encodingID = $this->readUInt(2); + + if (! ( (($platformID == 3) && ($encodingID == 1)) || // Microsoft Unicode + (($platformID == 1) && ($encodingID == 0)) // Mac Roman + ) ) { + $this->skipBytes(8); // Not a supported encoding. Move on. + continue; + } + + $languageID = $this->readUInt(2); + $nameID = $this->readUInt(2); + $nameLength = $this->readUInt(2); + $nameOffset = $this->readUInt(2); + + $languageCode = $this->_languageCodeForPlatform($platformID, $languageID); + if ($languageCode === null) { + $this->_debugLog('Skipping languageID: 0x%x; platformID %d', $languageID, $platformID); + continue; // Not a supported language. Move on. + } + + $this->_debugLog('Adding nameID: %d; languageID: 0x%x; platformID: %d; offset: 0x%x (0x%x); length: %d', + $nameID, $languageID, $platformID, $baseOffset + $nameOffset, $nameOffset, $nameLength); + + /* Entries in the name table are sorted by platform ID. If an entry + * exists for both Mac Roman and Microsoft Unicode, the Unicode entry + * will prevail since it is processed last. + */ + $nameRecords[$nameID][$languageCode] = array('platform' => $platformID, + 'offset' => $nameOffset, + 'length' => $nameLength ); + } + + /* Now go back and extract the interesting strings. + */ + $fontNames = array(); + foreach ($nameRecords as $name => $languages) { + foreach ($languages as $language => $attributes) { + $stringOffset = $storageOffset + $attributes['offset']; + $this->moveToOffset($stringOffset); + if ($attributes['platform'] == 3) { + $string = $this->readStringUTF16($attributes['length']); + } else { + $string = $this->readStringMacRoman($attributes['length']); + } + $fontNames[$name][$language] = $string; + } + } + + $this->names = $fontNames; + } + + + /** + * Parses the OpenType post (PostScript Information) table. + * + * The post table contains additional information required for using the font + * on PostScript printers. It also contains the preferred location and + * thickness for an underline, which is used by our layout code. + * + * @throws Zend_Pdf_Exception + */ + protected function _parsePostTable() + { + $this->_jumpToTable('post'); + + /* We can read versions 1-4 tables. + */ + $tableVersion = $this->_readTableVersion(1, 4); + + $this->italicAngle = $this->readFixed(16, 16); + + $this->underlinePosition = $this->readInt(2); + $this->underlineThickness = $this->readInt(2); + + $fixedPitch = $this->readUInt(4); + $this->isMonospaced = ($fixedPitch !== 0); + + /* Skip over PostScript virtual memory usage. + */ + $this->skipBytes(16); + + /* The format of the remainder of this table is dependent on the table + * version. However, since it contains glyph ordering information and + * PostScript names which we don't use, move on. (This may change at + * some point in the future though...) + */ + } + + + /** + * Parses the OpenType hhea (Horizontal Header) table. + * + * The hhea table contains information used for horizontal layout. It also + * contains some vertical layout information for Apple systems. The vertical + * layout information for the PDF file is usually taken from the OS/2 table. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseHheaTable() + { + $this->_jumpToTable('hhea'); + + /* We can read any version 1 table. + */ + $tableVersion = $this->_readTableVersion(1, 1); + + /* The typographic ascent, descent, and line gap values are Apple- + * specific. Similar values exist in the OS/2 table. We'll use these + * values unless better values are found in OS/2. + */ + $this->ascent = $this->readInt(2); + $this->descent = $this->readInt(2); + $this->lineGap = $this->readInt(2); + + /* The descent value is supposed to be negative--it's the distance + * relative to the baseline. However, some fonts improperly store a + * positive value in this field. If a positive value is found, flip the + * sign and record a warning in the debug log that we did this. + */ + if ($this->descent > 0) { + $this->_debugLog('Warning: Font should specify negative descent. Actual: %d; Using %d', + $this->descent, -$this->descent); + $this->descent = -$this->descent; + } + + /* Skip over advance width, left and right sidebearing, max x extent, + * caret slope rise, run, and offset, and the four reserved fields. + */ + $this->skipBytes(22); + + /* These values are needed to read the hmtx table. + */ + $this->metricDataFormat = $this->readInt(2); + $this->numberHMetrics = $this->readUInt(2); + $this->_debugLog('hmtx data format: %d; number of metrics: %d', + $this->metricDataFormat, $this->numberHMetrics); + } + + + /** + * Parses the OpenType hhea (Horizontal Header) table. + * + * The hhea table contains information used for horizontal layout. It also + * contains some vertical layout information for Apple systems. The vertical + * layout information for the PDF file is usually taken from the OS/2 table. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseMaxpTable() + { + $this->_jumpToTable('maxp'); + + /* We don't care about table version. + */ + $this->_readTableVersion(0, 1); + + /* The number of glyphs in the font. + */ + $this->numGlyphs = $this->readUInt(2); + $this->_debugLog('number of glyphs: %d', $this->numGlyphs); + + // Skip other maxp table entries (if presented with table version 1.0)... + } + + + /** + * Parses the OpenType OS/2 (OS/2 and Windows Metrics) table. + * + * The OS/2 table contains additional metrics data that is required to use + * the font on the OS/2 or Microsoft Windows platforms. It is not required + * for Macintosh fonts, so may not always be present. When available, we use + * this table to determine most of the vertical layout and stylistic + * information and for the font. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseOs2Table() + { + if (! $this->numberHMetrics) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("hhea table must be parsed prior to calling this method", + Zend_Pdf_Exception::PARSED_OUT_OF_ORDER); + } + + try { + $this->_jumpToTable('OS/2'); + } catch (Zend_Pdf_Exception $e) { + /* This table is not always present. If missing, use default values. + */ + require_once 'Zend/Pdf/Exception.php'; + if ($e->getCode() == Zend_Pdf_Exception::REQUIRED_TABLE_NOT_FOUND) { + $this->_debugLog('No OS/2 table found. Using default values'); + $this->fontWeight = Zend_Pdf_Font::WEIGHT_NORMAL; + $this->fontWidth = Zend_Pdf_Font::WIDTH_NORMAL; + $this->isEmbeddable = true; + $this->isSubsettable = true; + $this->strikeThickness = $this->unitsPerEm * 0.05; + $this->strikePosition = $this->unitsPerEm * 0.225; + $this->isSerifFont = false; // the style of the font is unknown + $this->isSansSerifFont = false; + $this->isOrnamentalFont = false; + $this->isScriptFont = false; + $this->isSymbolicFont = false; + $this->isAdobeLatinSubset = false; + $this->vendorID = ''; + $this->xHeight = 0; + $this->capitalHeight = 0; + return; + } else { + /* Something else went wrong. Throw this exception higher up the chain. + */ + throw $e; + throw new Zend_Pdf_Exception($e->getMessage(), $e->getCode(), $e); + } + } + + /* Version 0 tables are becoming rarer these days. They are only found + * in older fonts. + * + * Version 1 formally defines the Unicode character range bits and adds + * two new fields to the end of the table. + * + * Version 2 defines several additional flags to the embedding bits + * (fsType field) and five new fields to the end of the table. + * + * Versions 2 and 3 are structurally identical. There are only two + * significant differences between the two: First, in version 3, the + * average character width (xAvgCharWidth field) is calculated using all + * non-zero width glyphs in the font instead of just the Latin lower- + * case alphabetic characters; this doesn't affect us. Second, in + * version 3, the embedding bits (fsType field) have been made mutually + * exclusive; see additional discusson on this below. + * + * We can understand all four of these table versions. + */ + $tableVersion = $this->readUInt(2); + if (($tableVersion < 0) || ($tableVersion > 3)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unable to read version $tableVersion table", + Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION); + } + $this->_debugLog('Version %d table', $tableVersion); + + $this->averageCharWidth = $this->readInt(2); + + /* Indicates the visual weight and aspect ratio of the characters. Used + * primarily to logically sort fonts in lists. Also used to help choose + * a more appropriate substitute font when necessary. See the WEIGHT_ + * and WIDTH_ constants defined in Zend_Pdf_Font. + */ + $this->fontWeight = $this->readUInt(2); + $this->fontWidth = $this->readUInt(2); + + /* Describes the font embedding licensing rights. We can only embed and + * subset a font when given explicit permission. + * + * NOTE: We always interpret these bits according to the rules defined + * in version 3 of this table, regardless of the actual version. This + * means we will perform our checks in order from the most-restrictive + * to the least. + */ + $embeddingFlags = $this->readUInt(2); + $this->_debugLog('Embedding flags: %d', $embeddingFlags); + if ($this->isBitSet(9, $embeddingFlags)) { + /* Only bitmaps may be embedded. We don't have the ability to strip + * outlines from fonts yet, so this means no embed. + */ + $this->isEmbeddable = false; + } elseif ($this->isBitSet(2, $embeddingFlags) + || $this->isBitSet(3, $embeddingFlags) + || $this->isBitSet(4, $embeddingFlags) + ) { + /* One of: + * Restricted License embedding (0x0002) + * Preview & Print embedding (0x0004) + * Editable embedding (0x0008) + * is set. + */ + $this->isEmbeddable = true; + } elseif ($this->isBitSet(1, $embeddingFlags)) { + /* Restricted license embedding & no other embedding is set. + * We currently don't have any way to + * enforce this, so interpret this as no embed. This may be revised + * in the future... + */ + $this->isEmbeddable = false; + } else { + /* The remainder of the bit settings grant us permission to embed + * the font. There may be additional usage rights granted or denied + * but those only affect the PDF viewer application, not our code. + */ + $this->isEmbeddable = true; + } + $this->_debugLog('Font ' . ($this->isEmbeddable ? 'may' : 'may not') . ' be embedded'); + $isSubsettable = $this->isBitSet($embeddingFlags, 8); + + /* Recommended size and offset for synthesized subscript characters. + */ + $this->subscriptXSize = $this->readInt(2); + $this->subscriptYSize = $this->readInt(2); + $this->subscriptXOffset = $this->readInt(2); + $this->subscriptYOffset = $this->readInt(2); + + /* Recommended size and offset for synthesized superscript characters. + */ + $this->superscriptXSize = $this->readInt(2); + $this->superscriptYSize = $this->readInt(2); + $this->superscriptXOffset = $this->readInt(2); + $this->superscriptYOffset = $this->readInt(2); + + /* Size and vertical offset for the strikethrough. + */ + $this->strikeThickness = $this->readInt(2); + $this->strikePosition = $this->readInt(2); + + /* Describes the class of font: serif, sans serif, script. etc. These + * values are defined here: + * http://www.microsoft.com/OpenType/OTSpec/ibmfc.htm + */ + $familyClass = ($this->readUInt(2) >> 8); // don't care about subclass + $this->_debugLog('Font family class: %d', $familyClass); + $this->isSerifFont = ((($familyClass >= 1) && ($familyClass <= 5)) || + ($familyClass == 7)); + $this->isSansSerifFont = ($familyClass == 8); + $this->isOrnamentalFont = ($familyClass == 9); + $this->isScriptFont = ($familyClass == 10); + $this->isSymbolicFont = ($familyClass == 12); + + /* Skip over the PANOSE number. The interesting values for us overlap + * with the font family class defined above. + */ + $this->skipBytes(10); + + /* The Unicode range is made up of four 4-byte unsigned long integers + * which are used as bitfields covering a 128-bit range. Each bit + * represents a Unicode code block. If the bit is set, this font at + * least partially covers the characters in that block. + */ + $unicodeRange1 = $this->readUInt(4); + $unicodeRange2 = $this->readUInt(4); + $unicodeRange3 = $this->readUInt(4); + $unicodeRange4 = $this->readUInt(4); + $this->_debugLog('Unicode ranges: 0x%x 0x%x 0x%x 0x%x', + $unicodeRange1, $unicodeRange2, $unicodeRange3, $unicodeRange4); + + /* The Unicode range is currently only used to decide if the character + * set covered by the font is a subset of the Adobe Latin set, meaning + * it only has the basic latin set. If it covers any other characters, + * even any of the extended latin characters, it is considered symbolic + * to PDF and must be described differently in the Font Descriptor. + */ + /** + * @todo Font is recognized as Adobe Latin subset font if it only contains + * Basic Latin characters (only bit 0 of Unicode range bits is set). + * Actually, other Unicode subranges like General Punctuation (bit 31) also + * fall into Adobe Latin characters. So this code has to be modified. + */ + $this->isAdobeLatinSubset = (($unicodeRange1 == 1) && ($unicodeRange2 == 0) && + ($unicodeRange3 == 0) && ($unicodeRange4 == 0)); + $this->_debugLog(($this->isAdobeLatinSubset ? 'Is' : 'Is not') . ' a subset of Adobe Latin'); + + $this->vendorID = $this->readBytes(4); + + /* Skip the font style bits. We use the values found in the 'head' table. + * Also skip the first Unicode and last Unicode character indicies. Our + * cmap implementation does not need these values. + */ + $this->skipBytes(6); + + /* Typographic ascender, descender, and line gap. These values are + * preferred to those in the 'hhea' table. + */ + $this->ascent = $this->readInt(2); + $this->descent = $this->readInt(2); + $this->lineGap = $this->readInt(2); + + /* The descent value is supposed to be negative--it's the distance + * relative to the baseline. However, some fonts improperly store a + * positive value in this field. If a positive value is found, flip the + * sign and record a warning in the debug log that we did this. + */ + if ($this->descent > 0) { + $this->_debugLog('Warning: Font should specify negative descent. Actual: %d; Using %d', + $this->descent, -$this->descent); + $this->descent = -$this->descent; + } + + /* Skip over Windows-specific ascent and descent. + */ + $this->skipBytes(4); + + /* Versions 0 and 1 tables do not contain the x or capital height + * fields. Record zero for unknown. + */ + if ($tableVersion < 2) { + $this->xHeight = 0; + $this->capitalHeight = 0; + } else { + + /* Skip over the Windows code page coverages. We are only concerned + * with Unicode coverage. + */ + $this->skipBytes(8); + + $this->xHeight = $this->readInt(2); + $this->capitalHeight = $this->readInt(2); + + /* Ignore the remaining fields in this table. They are Windows-specific. + */ + } + /** + * @todo Obtain the x and capital heights from the 'glyf' table if they + * haven't been supplied here instead of storing zero. + */ + } + + + /** + * Parses the OpenType hmtx (Horizontal Metrics) table. + * + * The hmtx table contains the horizontal metrics for every glyph contained + * within the font. These are the critical values for horizontal layout of + * text. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseHmtxTable() + { + $this->_jumpToTable('hmtx'); + + if (! $this->numberHMetrics) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("hhea table must be parsed prior to calling this method", + Zend_Pdf_Exception::PARSED_OUT_OF_ORDER); + } + + /* We only understand version 0 tables. + */ + if ($this->metricDataFormat != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unable to read format $this->metricDataFormat table.", + Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION); + } + + /* The hmtx table has no header. For each glpyh in the font, it contains + * the glyph's advance width and its left side bearing. We don't use the + * left side bearing. + */ + $glyphWidths = array(); + for ($i = 0; $i < $this->numberHMetrics; $i++) { + $glyphWidths[$i] = $this->readUInt(2); + $this->skipBytes(2); + } + /* Populate last value for the rest of array + */ + while (count($glyphWidths) < $this->numGlyphs) { + $glyphWidths[] = end($glyphWidths); + } + $this->glyphWidths = $glyphWidths; + + /* There is an optional table of left side bearings which is sometimes + * used for monospaced fonts. We don't use the left side bearing, so + * we can safely ignore it. + */ + } + + + /** + * Parses the OpenType cmap (Character to Glyph Mapping) table. + * + * The cmap table provides the maps from character codes to font glyphs. + * There are usually at least two character maps in a font: Microsoft Unicode + * and Macintosh Roman. For very complex fonts, there may also be mappings + * for the characters in the Unicode Surrogates Area, which are UCS-4 + * characters. + * + * @todo Need to rework the selection logic for picking a subtable. We should + * have an explicit list of preferences, followed by a list of those that + * are tolerable. Most specifically, since everything above this layer deals + * in Unicode, we need to be sure to only accept format 0 MacRoman tables. + * + * @throws Zend_Pdf_Exception + */ + protected function _parseCmapTable() + { + $this->_jumpToTable('cmap'); + $baseOffset = $this->_tableDirectory['cmap']['offset']; + + /* We only understand version 0 tables. + */ + $tableVersion = $this->readUInt(2); + if ($tableVersion != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unable to read version $tableVersion table", + Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION); + } + $this->_debugLog('Version %d table', $tableVersion); + + $subtableCount = $this->readUInt(2); + $this->_debugLog('%d subtables', $subtableCount); + + /* Like the name table, there may be many different encoding subtables + * present. Ideally, we are looking for an acceptable Unicode table. + */ + $subtables = array(); + for ($subtableIndex = 0; $subtableIndex < $subtableCount; $subtableIndex++) { + + $platformID = $this->readUInt(2); + $encodingID = $this->readUInt(2); + + if (! ( (($platformID == 0) && ($encodingID == 3)) || // Unicode 2.0 or later + (($platformID == 0) && ($encodingID == 0)) || // Unicode + (($platformID == 3) && ($encodingID == 1)) || // Microsoft Unicode + (($platformID == 1) && ($encodingID == 0)) // Mac Roman + ) ) { + $this->_debugLog('Unsupported encoding: platformID: %d; encodingID: %d; skipping', + $platformID, $encodingID); + $this->skipBytes(4); + continue; + } + + $subtableOffset = $this->readUInt(4); + if ($subtableOffset < 0) { // Sanity check for 4-byte unsigned on 32-bit platform + $this->_debugLog('Offset 0x%x out of range for platformID: %d; skipping', + $subtableOffset, $platformID); + continue; + } + + $this->_debugLog('Found subtable; platformID: %d; encodingID: %d; offset: 0x%x (0x%x)', + $platformID, $encodingID, $baseOffset + $subtableOffset, $subtableOffset); + + $subtables[$platformID][$encodingID][] = $subtableOffset; + } + + /* In preferred order, find a subtable to use. + */ + $offsets = array(); + + /* Unicode 2.0 or later semantics + */ + if (isset($subtables[0][3])) { + foreach ($subtables[0][3] as $offset) { + $offsets[] = $offset; + } + } + + /* Unicode default semantics + */ + if (isset($subtables[0][0])) { + foreach ($subtables[0][0] as $offset) { + $offsets[] = $offset; + } + } + + /* Microsoft Unicode + */ + if (isset($subtables[3][1])) { + foreach ($subtables[3][1] as $offset) { + $offsets[] = $offset; + } + } + + /* Mac Roman. + */ + if (isset($subtables[1][0])) { + foreach ($subtables[1][0] as $offset) { + $offsets[] = $offset; + } + } + + $cmapType = -1; + + foreach ($offsets as $offset) { + $cmapOffset = $baseOffset + $offset; + $this->moveToOffset($cmapOffset); + $format = $this->readUInt(2); + $language = -1; + switch ($format) { + case 0x0: + $cmapLength = $this->readUInt(2); + $language = $this->readUInt(2); + if ($language != 0) { + $this->_debugLog('Type 0 cmap tables must be language-independent;' + . ' language: %d; skipping', $language); + continue; + } + break; + + case 0x4: // break intentionally omitted + case 0x6: + $cmapLength = $this->readUInt(2); + $language = $this->readUInt(2); + if ($language != 0) { + $this->_debugLog('Warning: cmap tables must be language-independent - this font' + . ' may not work properly; language: %d', $language); + } + break; + + case 0x2: // break intentionally omitted + case 0x8: // break intentionally omitted + case 0xa: // break intentionally omitted + case 0xc: + $this->_debugLog('Format: 0x%x currently unsupported; skipping', $format); + continue; + //$this->skipBytes(2); + //$cmapLength = $this->readUInt(4); + //$language = $this->readUInt(4); + //if ($language != 0) { + // $this->_debugLog('Warning: cmap tables must be language-independent - this font' + // . ' may not work properly; language: %d', $language); + //} + //break; + + default: + $this->_debugLog('Unknown subtable format: 0x%x; skipping', $format); + continue; + } + $cmapType = $format; + break; + } + if ($cmapType == -1) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unable to find usable cmap table', + Zend_Pdf_Exception::CANT_FIND_GOOD_CMAP); + } + + /* Now extract the subtable data and create a Zend_Pdf_FontCmap object. + */ + $this->_debugLog('Using cmap type %d; offset: 0x%x; length: %d', + $cmapType, $cmapOffset, $cmapLength); + $this->moveToOffset($cmapOffset); + $cmapData = $this->readBytes($cmapLength); + + require_once 'Zend/Pdf/Cmap.php'; + $this->cmap = Zend_Pdf_Cmap::cmapWithTypeData($cmapType, $cmapData); + } + + + /** + * Reads the scaler type from the header of the OpenType font file and + * returns it as an unsigned long integer. + * + * The scaler type defines the type of font: OpenType font files may contain + * TrueType or PostScript outlines. Throws an exception if the scaler type + * is not recognized. + * + * @return integer + * @throws Zend_Pdf_Exception + */ + protected function _readScalerType() + { + if ($this->_scalerType != 0) { + return $this->_scalerType; + } + + $this->moveToOffset(0); + + $this->_scalerType = $this->readUInt(4); + + switch ($this->_scalerType) { + case 0x00010000: // version 1.0 - Windows TrueType signature + $this->_debugLog('Windows TrueType signature'); + break; + + case 0x74727565: // 'true' - Macintosh TrueType signature + $this->_debugLog('Macintosh TrueType signature'); + break; + + case 0x4f54544f: // 'OTTO' - the CFF signature + $this->_debugLog('PostScript CFF signature'); + break; + + case 0x74797031: // 'typ1' + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unsupported font type: PostScript in sfnt wrapper', + Zend_Pdf_Exception::WRONG_FONT_TYPE); + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Not an OpenType font file', + Zend_Pdf_Exception::WRONG_FONT_TYPE); + } + return $this->_scalerType; + } + + /** + * Validates a given table's existence, then sets the file pointer to the + * start of that table. + * + * @param string $tableName + * @throws Zend_Pdf_Exception + */ + protected function _jumpToTable($tableName) + { + if (empty($this->_tableDirectory[$tableName])) { // do not allow NULL or zero + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Required table '$tableName' not found!", + Zend_Pdf_Exception::REQUIRED_TABLE_NOT_FOUND); + } + $this->_debugLog("Parsing $tableName table..."); + $this->moveToOffset($this->_tableDirectory[$tableName]['offset']); + } + + /** + * Reads the fixed 16.16 table version number and checks for compatibility. + * If the version is incompatible, throws an exception. If it is compatible, + * returns the version number. + * + * @param float $minVersion Minimum compatible version number. + * @param float $maxVertion Maximum compatible version number. + * @return float Table version number. + * @throws Zend_Pdf_Exception + */ + protected function _readTableVersion($minVersion, $maxVersion) + { + $tableVersion = $this->readFixed(16, 16); + if (($tableVersion < $minVersion) || ($tableVersion > $maxVersion)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unable to read version $tableVersion table", + Zend_Pdf_Exception::DONT_UNDERSTAND_TABLE_VERSION); + } + $this->_debugLog('Version %.2f table', $tableVersion); + return $tableVersion; + } + + /** + * Utility method that returns ISO 639 two-letter language codes from the + * TrueType platform and language ID. Returns NULL for languages that are + * not supported. + * + * @param integer $platformID + * @param integer $encodingID + * @return string | null + */ + protected function _languageCodeForPlatform($platformID, $languageID) + { + if ($platformID == 3) { // Microsoft encoding. + /* The low-order bytes specify the language, the high-order bytes + * specify the dialect. We just care about the language. For the + * complete list, see: + * http://www.microsoft.com/globaldev/reference/lcid-all.mspx + */ + $languageID &= 0xff; + switch ($languageID) { + case 0x09: + return 'en'; + case 0x0c: + return 'fr'; + case 0x07: + return 'de'; + case 0x10: + return 'it'; + case 0x13: + return 'nl'; + case 0x1d: + return 'sv'; + case 0x0a: + return 'es'; + case 0x06: + return 'da'; + case 0x16: + return 'pt'; + case 0x14: + return 'no'; + case 0x0d: + return 'he'; + case 0x11: + return 'ja'; + case 0x01: + return 'ar'; + case 0x0b: + return 'fi'; + case 0x08: + return 'el'; + + default: + return null; + } + + } else if ($platformID == 1) { // Macintosh encoding. + switch ($languageID) { + case 0: + return 'en'; + case 1: + return 'fr'; + case 2: + return 'de'; + case 3: + return 'it'; + case 4: + return 'nl'; + case 5: + return 'sv'; + case 6: + return 'es'; + case 7: + return 'da'; + case 8: + return 'pt'; + case 9: + return 'no'; + case 10: + return 'he'; + case 11: + return 'ja'; + case 12: + return 'ar'; + case 13: + return 'fi'; + case 14: + return 'el'; + + default: + return null; + } + + } else { // Unknown encoding. + return null; + } + } + +} diff --git a/library/Zend/Pdf/FileParser/Font/OpenType/TrueType.php b/library/Zend/Pdf/FileParser/Font/OpenType/TrueType.php new file mode 100755 index 000000000..c45c507e0 --- /dev/null +++ b/library/Zend/Pdf/FileParser/Font/OpenType/TrueType.php @@ -0,0 +1,90 @@ +_isScreened) { + return; + } + + parent::screen(); + + switch ($this->_readScalerType()) { + case 0x00010000: // version 1.0 - Windows TrueType signature + break; + + case 0x74727565: // 'true' - Macintosh TrueType signature + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Not a TrueType font file', + Zend_Pdf_Exception::WRONG_FONT_TYPE); + } + + $this->fontType = Zend_Pdf_Font::TYPE_TRUETYPE; + $this->_isScreened = true; + } + + /** + * Reads and parses the TrueType font data from the file on disk. + * + * @throws Zend_Pdf_Exception + */ + public function parse() + { + if ($this->_isParsed) { + return; + } + + parent::parse(); + + /* There is nothing additional to parse for TrueType fonts at this time. + */ + + $this->_isParsed = true; + } +} diff --git a/library/Zend/Pdf/FileParser/Image.php b/library/Zend/Pdf/FileParser/Image.php new file mode 100755 index 000000000..821fc625d --- /dev/null +++ b/library/Zend/Pdf/FileParser/Image.php @@ -0,0 +1,63 @@ +imageType = Zend_Pdf_Image::TYPE_UNKNOWN; + } +} diff --git a/library/Zend/Pdf/FileParser/Image/Png.php b/library/Zend/Pdf/FileParser/Image/Png.php new file mode 100755 index 000000000..f2665ebcc --- /dev/null +++ b/library/Zend/Pdf/FileParser/Image/Png.php @@ -0,0 +1,329 @@ +_isParsed) { + $this->parse(); + } + return $this->_width; + } + + public function getHeight() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_width; + } + + public function getBitDepth() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_bits; + } + + public function getColorSpace() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_color; + } + + public function getCompressionStrategy() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_compression; + } + + public function getPaethFilter() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_preFilter; + } + + public function getInterlacingMode() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_interlacing; + } + + public function getRawImageData() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_imageData; + } + + public function getRawPaletteData() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_paletteData; + } + + public function getRawTransparencyData() { + if(!$this->_isParsed) { + $this->parse(); + } + return $this->_transparencyData; + } + + /* Semi-Concrete Class Implementation */ + + /** + * Verifies that the image file is in the expected format. + * + * @throws Zend_Pdf_Exception + */ + public function screen() + { + if ($this->_isScreened) { + return; + } + return $this->_checkSignature(); + } + + /** + * Reads and parses the image data from the file on disk. + * + * @throws Zend_Pdf_Exception + */ + public function parse() + { + if ($this->_isParsed) { + return; + } + + /* Screen the font file first, if it hasn't been done yet. + */ + $this->screen(); + + $this->_parseIHDRChunk(); + $this->_parseChunks(); + } + + + protected function _parseSignature() { + $this->moveToOffset(1); //Skip the first byte (%) + if('PNG' != $this->readBytes(3)) { + $this->_isPNG = false; + } else { + $this->_isPNG = true; + } + } + + protected function _checkSignature() { + if(!isset($this->_isPNG)) { + $this->_parseSignature(); + } + return $this->_isPNG; + } + + protected function _parseChunks() { + $this->moveToOffset(33); //Variable chunks start at the end of IHDR + + //Start processing chunks. If there are no more bytes to read parsing is complete. + $size = $this->getSize(); + while($size - $this->getOffset() >= 8) { + $chunkLength = $this->readUInt(4); + if($chunkLength < 0 || ($chunkLength + $this->getOffset() + 4) > $size) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("PNG Corrupt: Invalid Chunk Size In File."); + } + + $chunkType = $this->readBytes(4); + $offset = $this->getOffset(); + + //If we know how to process the chunk, do it here, else ignore the chunk and move on to the next + switch($chunkType) { + case 'IDAT': // This chunk may appear more than once. It contains the actual image data. + $this->_parseIDATChunk($offset, $chunkLength); + break; + + case 'PLTE': // This chunk contains the image palette. + $this->_parsePLTEChunk($offset, $chunkLength); + break; + + case 'tRNS': // This chunk contains non-alpha channel transparency data + $this->_parseTRNSChunk($offset, $chunkLength); + break; + + case 'IEND': + break 2; //End the loop too + + //@TODO Implement the rest of the PNG chunks. (There are many not implemented here) + } + if($offset + $chunkLength + 4 < $size) { + $this->moveToOffset($offset + $chunkLength + 4); //Skip past the data finalizer. (Don't rely on the parse to leave the offsets correct) + } + } + if(empty($this->_imageData)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception ( "This PNG is corrupt. All png must contain IDAT chunks." ); + } + } + + protected function _parseIHDRChunk() { + $this->moveToOffset(12); //IHDR must always start at offset 12 and run for 17 bytes + if(!$this->readBytes(4) == 'IHDR') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "This PNG is corrupt. The first chunk in a PNG file must be IHDR." ); + } + $this->_width = $this->readUInt(4); + $this->_height = $this->readUInt(4); + $this->_bits = $this->readInt(1); + $this->_color = $this->readInt(1); + $this->_compression = $this->readInt(1); + $this->_preFilter = $this->readInt(1); + $this->_interlacing = $this->readInt(1); + if($this->_interlacing != Zend_Pdf_Image::PNG_INTERLACING_DISABLED) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Only non-interlaced images are currently supported." ); + } + } + + protected function _parseIDATChunk($chunkOffset, $chunkLength) { + $this->moveToOffset($chunkOffset); + if(!isset($this->_imageData)) { + $this->_imageData = $this->readBytes($chunkLength); + } else { + $this->_imageData .= $this->readBytes($chunkLength); + } + } + + protected function _parsePLTEChunk($chunkOffset, $chunkLength) { + $this->moveToOffset($chunkOffset); + $this->_paletteData = $this->readBytes($chunkLength); + } + + protected function _parseTRNSChunk($chunkOffset, $chunkLength) { + $this->moveToOffset($chunkOffset); + + //Processing of tRNS data varies dependending on the color depth + + switch($this->_color) { + case Zend_Pdf_Image::PNG_CHANNEL_GRAY: + $baseColor = $this->readInt(1); + $this->_transparencyData = array($baseColor, $baseColor); + break; + + case Zend_Pdf_Image::PNG_CHANNEL_RGB: + + //@TODO Fix this hack. + //This parser cheats and only uses the lsb's (and only works with < 16 bit depth images) + + /* + From the standard: + + For color type 2 (truecolor), the tRNS chunk contains a single RGB color value, stored in the format: + + Red: 2 bytes, range 0 .. (2^bitdepth)-1 + Green: 2 bytes, range 0 .. (2^bitdepth)-1 + Blue: 2 bytes, range 0 .. (2^bitdepth)-1 + + (If the image bit depth is less than 16, the least significant bits are used and the others are 0.) + Pixels of the specified color value are to be treated as transparent (equivalent to alpha value 0); + all other pixels are to be treated as fully opaque (alpha value 2bitdepth-1). + + */ + + $red = $this->readInt(1); + $this->skipBytes(1); + $green = $this->readInt(1); + $this->skipBytes(1); + $blue = $this->readInt(1); + + $this->_transparencyData = array($red, $red, $green, $green, $blue, $blue); + + break; + + case Zend_Pdf_Image::PNG_CHANNEL_INDEXED: + + //@TODO Fix this hack. + //This parser cheats too. It only masks the first color in the palette. + + /* + From the standard: + + For color type 3 (indexed color), the tRNS chunk contains a series of one-byte alpha values, corresponding to entries in the PLTE chunk: + + Alpha for palette index 0: 1 byte + Alpha for palette index 1: 1 byte + ...etc... + + Each entry indicates that pixels of the corresponding palette index must be treated as having the specified alpha value. + Alpha values have the same interpretation as in an 8-bit full alpha channel: 0 is fully transparent, 255 is fully opaque, + regardless of image bit depth. The tRNS chunk must not contain more alpha values than there are palette entries, + but tRNS can contain fewer values than there are palette entries. In this case, the alpha value for all remaining palette + entries is assumed to be 255. In the common case in which only palette index 0 need be made transparent, only a one-byte + tRNS chunk is needed. + + */ + + $tmpData = $this->readBytes($chunkLength); + if(($trnsIdx = strpos($tmpData, "\0")) !== false) { + $this->_transparencyData = array($trnsIdx, $trnsIdx); + } + + break; + + case Zend_Pdf_Image::PNG_CHANNEL_GRAY_ALPHA: + //Fall through to the next case + case Zend_Pdf_Image::PNG_CHANNEL_RGB_ALPHA: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "tRNS chunk illegal for Alpha Channel Images" ); + break; + } + } +} diff --git a/library/Zend/Pdf/FileParserDataSource.php b/library/Zend/Pdf/FileParserDataSource.php new file mode 100755 index 000000000..9a8fda5df --- /dev/null +++ b/library/Zend/Pdf/FileParserDataSource.php @@ -0,0 +1,189 @@ +_offset. + * + * Throws an exception if there is insufficient data to completely fulfill + * the request or if an error occurs. + * + * @param integer $byteCount Number of bytes to read. + * @return string + * @throws Zend_Pdf_Exception + */ + abstract public function readBytes($byteCount); + + /** + * Returns the entire contents of the data source as a string. + * + * This method may be called at any time and so must preserve the byte + * offset of the read position, both through $this->_offset and whatever + * other additional pointers (such as the seek position of a file pointer) + * that might be used. + * + * @return string + */ + abstract public function readAllBytes(); + + + /* Object Magic Methods */ + + /** + * Returns a description of the object for debugging purposes. + * + * Subclasses should override this method to provide a more specific + * description of the actual object being represented. + * + * @return string + */ + public function __toString() + { + return get_class($this); + } + + + /* Accessors */ + + /** + * Returns the byte offset of the current read position within the data + * source. + * + * @return integer + */ + public function getOffset() + { + return $this->_offset; + } + + /** + * Returns the total size in bytes of the data source. + * + * @return integer + */ + public function getSize() + { + return $this->_size; + } + + + /* Primitive Methods */ + + /** + * Moves the current read position to the specified byte offset. + * + * Throws an exception you attempt to move before the beginning or beyond + * the end of the data source. + * + * If a subclass needs to perform additional tasks (such as performing a + * fseek() on a filesystem source), it should do so after calling this + * parent method. + * + * @param integer $offset Destination byte offset. + * @throws Zend_Pdf_Exception + */ + public function moveToOffset($offset) + { + if ($this->_offset == $offset) { + return; // Not moving; do nothing. + } + if ($offset < 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Attempt to move before start of data source', + Zend_Pdf_Exception::MOVE_BEFORE_START_OF_FILE); + } + if ($offset >= $this->_size) { // Offsets are zero-based. + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Attempt to move beyond end of data source', + Zend_Pdf_Exception::MOVE_BEYOND_END_OF_FILE); + } + $this->_offset = $offset; + } + + /** + * Shifts the current read position within the data source by the specified + * number of bytes. + * + * You may move forward (positive numbers) or backward (negative numbers). + * Throws an exception you attempt to move before the beginning or beyond + * the end of the data source. + * + * @param integer $byteCount Number of bytes to skip. + * @throws Zend_Pdf_Exception + */ + public function skipBytes($byteCount) + { + $this->moveToOffset($this->_offset + $byteCount); + } +} diff --git a/library/Zend/Pdf/FileParserDataSource/File.php b/library/Zend/Pdf/FileParserDataSource/File.php new file mode 100755 index 000000000..2e8c8eabc --- /dev/null +++ b/library/Zend/Pdf/FileParserDataSource/File.php @@ -0,0 +1,198 @@ +_size = @filesize($filePath)) === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Error while obtaining file size: $filePath", + Zend_Pdf_Exception::CANT_GET_FILE_SIZE); + } + if (($this->_fileResource = @fopen($filePath, 'rb')) === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Cannot open file for reading: $filePath", + Zend_Pdf_Exception::CANT_OPEN_FILE); + } + $this->_filePath = $filePath; + } + + /** + * Object destructor. + * + * Closes the file if it had been successfully opened. + */ + public function __destruct() + { + if (is_resource($this->_fileResource)) { + @fclose($this->_fileResource); + } + } + + /** + * Returns the specified number of raw bytes from the file at the byte + * offset of the current read position. + * + * Advances the read position by the number of bytes read. + * + * Throws an exception if an error was encountered while reading the file or + * if there is insufficient data to completely fulfill the request. + * + * @param integer $byteCount Number of bytes to read. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readBytes($byteCount) + { + $bytes = @fread($this->_fileResource, $byteCount); + if ($bytes === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unexpected error while reading file', + Zend_Pdf_Exception::ERROR_DURING_READ); + } + if (strlen($bytes) != $byteCount) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Insufficient data to read $byteCount bytes", + Zend_Pdf_Exception::INSUFFICIENT_DATA); + } + $this->_offset += $byteCount; + return $bytes; + } + + /** + * Returns the entire contents of the file as a string. + * + * Preserves the current file seek position. + * + * @return string + */ + public function readAllBytes() + { + return file_get_contents($this->_filePath); + } + + + /* Object Magic Methods */ + + /** + * Returns the full filesystem path of the file. + * + * @return string + */ + public function __toString() + { + return $this->_filePath; + } + + + /* Primitive Methods */ + + /** + * Seeks the file read position to the specified byte offset. + * + * Throws an exception if the file pointer cannot be moved or if it is + * moved beyond EOF (end of file). + * + * @param integer $offset Destination byte offset. + * @throws Zend_Pdf_Exception + */ + public function moveToOffset($offset) + { + if ($this->_offset == $offset) { + return; // Not moving; do nothing. + } + parent::moveToOffset($offset); + $result = @fseek($this->_fileResource, $offset, SEEK_SET); + if ($result !== 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Error while setting new file position', + Zend_Pdf_Exception::CANT_SET_FILE_POSITION); + } + if (feof($this->_fileResource)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Moved beyond the end of the file', + Zend_Pdf_Exception::MOVE_BEYOND_END_OF_FILE); + } + } + +} diff --git a/library/Zend/Pdf/FileParserDataSource/String.php b/library/Zend/Pdf/FileParserDataSource/String.php new file mode 100755 index 000000000..313c8541a --- /dev/null +++ b/library/Zend/Pdf/FileParserDataSource/String.php @@ -0,0 +1,128 @@ +_size = strlen($string); + $this->_string = $string; + } + + /** + * Object destructor. + */ + public function __destruct() + { + $this->_string = ''; + } + + /** + * Returns the specified number of raw bytes from the string at the byte + * offset of the current read position. + * + * Advances the read position by the number of bytes read. + * + * Throws an exception if there is insufficient data to completely fulfill + * the request. + * + * @param integer $byteCount Number of bytes to read. + * @return string + * @throws Zend_Pdf_Exception + */ + public function readBytes($byteCount) + { + if (($this->_offset + $byteCount) > $this->_size) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Insufficient data to read $byteCount bytes", + Zend_Pdf_Exception::INSUFFICIENT_DATA); + } + $bytes = substr($this->_string, $this->_offset, $byteCount); + $this->_offset += $byteCount; + return $bytes; + } + + /** + * Returns the entire string. + * + * Preserves the current read position. + * + * @return string + */ + public function readAllBytes() + { + return $this->_string; + } + + + /* Object Magic Methods */ + + /** + * Returns a string containing the parsed string's length. + * + * @return string + */ + public function __toString() + { + return "String ($this->_size bytes)"; + } +} diff --git a/library/Zend/Pdf/Filter/Ascii85.php b/library/Zend/Pdf/Filter/Ascii85.php new file mode 100755 index 000000000..b1c1600d2 --- /dev/null +++ b/library/Zend/Pdf/Filter/Ascii85.php @@ -0,0 +1,181 @@ += 0; $j--) { + $foo = (int) (($b / pow(85,$j)) + 33); + $b %= pow(85,$j); + $output .= chr($foo); + } + } + + //encode partial chunk + if ($i < $dataLength) { + $n = $dataLength - $i; + $chunk = substr($data, -$n); + + //0 pad the rest + for ($j = $n;$j < 4;$j++) { + $chunk .= "\0"; + } + + $b = unpack("N", $chunk); + $b = $b[1]; + + //encode just $n + 1 + for ($j = 4; $j >= (4 - $n); $j--) { + $foo = (int) (($b / pow(85,$j)) + 33); + $b %= pow(85,$j); + $output .= chr($foo); + } + } + + //EOD + $output .= '~>'; + + //make sure lines are split + $output = chunk_split($output, 76, "\n"); + + //get rid of new line at the end + $output = substr($output, 0, -1); + return $output; + } + + /** + * Decode data + * + * @param string $data + * @param array $params + * @return string + * @throws Zend_Pdf_Exception + */ + public static function decode($data, $params = null) + { + $output = ''; + + //get rid of the whitespaces + $whiteSpace = array("\x00", "\x09", "\x0A", "\x0C", "\x0D", "\x20"); + $data = str_replace($whiteSpace, '', $data); + + if (substr($data, -2) != '~>') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Invalid EOF marker'); + return ''; + } + + $data = substr($data, 0, (strlen($data) - 2)); + $dataLength = strlen($data); + + for ($i = 0; $i < $dataLength; $i += 5) { + $b = 0; + + if (substr($data, $i, 1) == "z") { + $i -= 4; + $output .= pack("N", 0); + continue; + } + + $c = substr($data, $i, 5); + + if(strlen($c) < 5) { + //partial chunk + break; + } + + $c = unpack('C5', $c); + $value = 0; + + for ($j = 1; $j <= 5; $j++) { + $value += (($c[$j] - 33) * pow(85, (5 - $j))); + } + + $output .= pack("N", $value); + } + + //decode partial + if ($i < $dataLength) { + $value = 0; + $chunk = substr($data, $i); + $partialLength = strlen($chunk); + + //pad the rest of the chunk with u's + //until the lenght of the chunk is 5 + for ($j = 0; $j < (5 - $partialLength); $j++) { + $chunk .= 'u'; + } + + $c = unpack('C5', $chunk); + + for ($j = 1; $j <= 5; $j++) { + $value += (($c[$j] - 33) * pow(85, (5 - $j))); + } + + $foo = pack("N", $value); + $output .= substr($foo, 0, ($partialLength - 1)); + } + + return $output; + } +} diff --git a/library/Zend/Pdf/Filter/AsciiHex.php b/library/Zend/Pdf/Filter/AsciiHex.php new file mode 100755 index 000000000..b48d9b5e2 --- /dev/null +++ b/library/Zend/Pdf/Filter/AsciiHex.php @@ -0,0 +1,135 @@ +'; + } + + /** + * Decode data + * + * @param string $data + * @param array $params + * @return string + * @throws Zend_Pdf_Exception + */ + public static function decode($data, $params = null) + { + $output = ''; + $oddCode = true; + $commentMode = false; + + for ($count = 0; $count < strlen($data) && $data[$count] != '>'; $count++) { + $charCode = ord($data[$count]); + + if ($commentMode) { + if ($charCode == 0x0A || $charCode == 0x0D ) { + $commentMode = false; + } + + continue; + } + + switch ($charCode) { + //Skip white space + case 0x00: // null character + // fall through to next case + case 0x09: // Tab + // fall through to next case + case 0x0A: // Line feed + // fall through to next case + case 0x0C: // Form Feed + // fall through to next case + case 0x0D: // Carriage return + // fall through to next case + case 0x20: // Space + // Do nothing + break; + + case 0x25: // '%' + // Switch to comment mode + $commentMode = true; + break; + + default: + if ($charCode >= 0x30 /*'0'*/ && $charCode <= 0x39 /*'9'*/) { + $code = $charCode - 0x30; + } else if ($charCode >= 0x41 /*'A'*/ && $charCode <= 0x46 /*'F'*/) { + $code = $charCode - 0x37/*0x41 - 0x0A*/; + } else if ($charCode >= 0x61 /*'a'*/ && $charCode <= 0x66 /*'f'*/) { + $code = $charCode - 0x57/*0x61 - 0x0A*/; + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong character in a encoded stream'); + } + + if ($oddCode) { + // Odd pass. Store hex digit for next pass + // Scope of $hexCodeHigh variable is whole function + $hexCodeHigh = $code; + } else { + // Even pass. + // Add decoded character to the output + // ($hexCodeHigh is stored in previous pass) + $output .= chr($hexCodeHigh*16 + $code); + } + $oddCode = !$oddCode; + + break; + } + } + + /* Check that stream is terminated by End Of Data marker */ + if ($data[$count] != '>') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong encoded stream End Of Data marker.'); + } + + /* Last '0' character is omitted */ + if (!$oddCode) { + $output .= chr($hexCodeHigh*16); + } + + return $output; + } +} diff --git a/library/Zend/Pdf/Filter/Compression.php b/library/Zend/Pdf/Filter/Compression.php new file mode 100755 index 000000000..422cf6fa5 --- /dev/null +++ b/library/Zend/Pdf/Filter/Compression.php @@ -0,0 +1,391 @@ + 2) { + if ($chainStartOffset != $offset) { + // Drop down previouse (non-repeatable chars) run + $output .= chr($offset - $chainStartOffset - 1) + . substr($data, $chainStartOffset, $offset - $chainStartOffset); + } + + $output .= chr(257 - $repeatedCharChainLength) . $data[$offset]; + + $offset += $repeatedCharChainLength; + $chainStartOffset = $offset; + } else { + $offset++; + + if ($offset - $chainStartOffset == 128) { + // Maximum run length is reached + // Drop down non-repeatable chars run + $output .= "\x7F" . substr($data, $chainStartOffset, 128); + + $chainStartOffset = $offset; + } + } + } + + if ($chainStartOffset != $offset) { + // Drop down non-repeatable chars run + $output .= chr($offset - $chainStartOffset - 1) . substr($data, $chainStartOffset, $offset - $chainStartOffset); + } + + $output .= "\x80"; + + return $output; + } + + /** + * Decode data + * + * @param string $data + * @param array $params + * @return string + * @throws Zend_Pdf_Exception + */ + public static function decode($data, $params = null) + { + $dataLength = strlen($data); + $output = ''; + $offset = 0; + + while($offset < $dataLength) { + $length = ord($data[$offset]); + + $offset++; + + if ($length == 128) { + // EOD byte + break; + } else if ($length < 128) { + $length++; + + $output .= substr($data, $offset, $length); + + $offset += $length; + } else if ($length > 128) { + $output .= str_repeat($data[$offset], 257 - $length); + + $offset++; + } + } + + return $output; + } +} + diff --git a/library/Zend/Pdf/Font.php b/library/Zend/Pdf/Font.php new file mode 100755 index 000000000..af8776782 --- /dev/null +++ b/library/Zend/Pdf/Font.php @@ -0,0 +1,732 @@ +getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, '', ''); + Zend_Pdf_Font::$_fontNames[$fontName] = $font; + $filePathKey = md5($filePath); + Zend_Pdf_Font::$_fontFilePaths[$filePathKey] = $font; + return $font; + + } else { + /* The type of font could not be determined. Give up. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Cannot determine font type: $filePath", + Zend_Pdf_Exception::CANT_DETERMINE_FONT_TYPE); + } + + } + + + + /**** Internal Methods ****/ + + + /* Font Extraction Methods */ + + /** + * Attempts to extract a TrueType font from the data source. + * + * If the font parser throws an exception that suggests the data source + * simply doesn't contain a TrueType font, catches it and returns null. If + * an exception is thrown that suggests the TrueType font is corrupt or + * otherwise unusable, throws that exception. If successful, returns the + * font object. + * + * @param Zend_Pdf_FileParserDataSource $dataSource + * @param integer $embeddingOptions Options for font embedding. + * @return Zend_Pdf_Resource_Font_OpenType_TrueType May also return null if + * the data source does not appear to contain a TrueType font. + * @throws Zend_Pdf_Exception + */ + protected static function _extractTrueTypeFont($dataSource, $embeddingOptions) + { + try { + require_once 'Zend/Pdf/FileParser/Font/OpenType/TrueType.php'; + $fontParser = new Zend_Pdf_FileParser_Font_OpenType_TrueType($dataSource); + + $fontParser->parse(); + if ($fontParser->isAdobeLatinSubset) { + require_once 'Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php'; + $font = new Zend_Pdf_Resource_Font_Simple_Parsed_TrueType($fontParser, $embeddingOptions); + } else { + require_once 'Zend/Pdf/Resource/Font/CidFont/TrueType.php'; + require_once 'Zend/Pdf/Resource/Font/Type0.php'; + /* Use Composite Type 0 font which supports Unicode character mapping */ + $cidFont = new Zend_Pdf_Resource_Font_CidFont_TrueType($fontParser, $embeddingOptions); + $font = new Zend_Pdf_Resource_Font_Type0($cidFont); + } + } catch (Zend_Pdf_Exception $e) { + /* The following exception codes suggest that this isn't really a + * TrueType font. If we caught such an exception, simply return + * null. For all other cases, it probably is a TrueType font but has + * a problem; throw the exception again. + */ + $fontParser = null; + require_once 'Zend/Pdf/Exception.php'; + switch ($e->getCode()) { + case Zend_Pdf_Exception::WRONG_FONT_TYPE: // break intentionally omitted + case Zend_Pdf_Exception::BAD_TABLE_COUNT: // break intentionally omitted + case Zend_Pdf_Exception::BAD_MAGIC_NUMBER: + return null; + + default: + throw new Zend_Pdf_Exception($e->getMessage(), $e->getCode(), $e); + } + } + return $font; + } +} diff --git a/library/Zend/Pdf/Image.php b/library/Zend/Pdf/Image.php new file mode 100755 index 000000000..c1145466e --- /dev/null +++ b/library/Zend/Pdf/Image.php @@ -0,0 +1,247 @@ + object tree entries + * + * @var array + */ + protected $_items = array(); + + /** + * Object constructor + * + * @param Zend_Pdf_Element $rootDictionary root of name dictionary + */ + public function __construct(Zend_Pdf_Element $rootDictionary) + { + if ($rootDictionary->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Name tree root must be a dictionary.'); + } + + $intermediateNodes = array(); + $leafNodes = array(); + if ($rootDictionary->Kids !== null) { + $intermediateNodes[] = $rootDictionary; + } else { + $leafNodes[] = $rootDictionary; + } + + while (count($intermediateNodes) != 0) { + $newIntermediateNodes = array(); + foreach ($intermediateNodes as $node) { + foreach ($node->Kids->items as $childNode) { + if ($childNode->Kids !== null) { + $newIntermediateNodes[] = $childNode; + } else { + $leafNodes[] = $childNode; + } + } + } + $intermediateNodes = $newIntermediateNodes; + } + + foreach ($leafNodes as $leafNode) { + $destinationsCount = count($leafNode->Names->items)/2; + for ($count = 0; $count < $destinationsCount; $count++) { + $this->_items[$leafNode->Names->items[$count*2]->value] = $leafNode->Names->items[$count*2 + 1]; + } + } + } + + public function current() + { + return current($this->_items); + } + + + public function next() + { + return next($this->_items); + } + + + public function key() + { + return key($this->_items); + } + + + public function valid() { + return current($this->_items)!==false; + } + + + public function rewind() + { + reset($this->_items); + } + + + public function offsetExists($offset) + { + return array_key_exists($offset, $this->_items); + } + + + public function offsetGet($offset) + { + return $this->_items[$offset]; + } + + + public function offsetSet($offset, $value) + { + if ($offset === null) { + $this->_items[] = $value; + } else { + $this->_items[$offset] = $value; + } + } + + + public function offsetUnset($offset) + { + unset($this->_items[$offset]); + } + + + public function clear() + { + $this->_items = array(); + } + + public function count() + { + return count($this->_items); + } +} diff --git a/library/Zend/Pdf/Outline.php b/library/Zend/Pdf/Outline.php new file mode 100755 index 000000000..688a287a5 --- /dev/null +++ b/library/Zend/Pdf/Outline.php @@ -0,0 +1,373 @@ +_open; + } + + /** + * Sets 'isOpen' outline flag + * + * @param boolean $isOpen + * @return Zend_Pdf_Outline + */ + public function setIsOpen($isOpen) + { + $this->_open = $isOpen; + return $this; + } + + /** + * Returns true if outline item is displayed in italic + * + * @return boolean + */ + abstract public function isItalic(); + + /** + * Sets 'isItalic' outline flag + * + * @param boolean $isItalic + * @return Zend_Pdf_Outline + */ + abstract public function setIsItalic($isItalic); + + /** + * Returns true if outline item is displayed in bold + * + * @return boolean + */ + abstract public function isBold(); + + /** + * Sets 'isBold' outline flag + * + * @param boolean $isBold + * @return Zend_Pdf_Outline + */ + abstract public function setIsBold($isBold); + + + /** + * Get outline text color. + * + * @return Zend_Pdf_Color_Rgb + */ + abstract public function getColor(); + + /** + * Set outline text color. + * (null means default color which is black) + * + * @param Zend_Pdf_Color_Rgb $color + * @return Zend_Pdf_Outline + */ + abstract public function setColor(Zend_Pdf_Color_Rgb $color); + + /** + * Get outline target. + * + * @return Zend_Pdf_Target + */ + abstract public function getTarget(); + + /** + * Set outline target. + * Null means no target + * + * @param Zend_Pdf_Target|string $target + * @return Zend_Pdf_Outline + */ + abstract public function setTarget($target = null); + + /** + * Get outline options + * + * @return array + */ + public function getOptions() + { + return array('title' => $this->_title, + 'open' => $this->_open, + 'color' => $this->_color, + 'italic' => $this->_italic, + 'bold' => $this->_bold, + 'target' => $this->_target); + } + + /** + * Set outline options + * + * @param array $options + * @return Zend_Pdf_Action + * @throws Zend_Pdf_Exception + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + switch ($key) { + case 'title': + $this->setTitle($value); + break; + + case 'open': + $this->setIsOpen($value); + break; + + case 'color': + $this->setColor($value); + break; + case 'italic': + $this->setIsItalic($value); + break; + + case 'bold': + $this->setIsBold($value); + break; + + case 'target': + $this->setTarget($value); + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Unknown option name - '$key'."); + break; + } + } + + return $this; + } + + /** + * Create new Outline object + * + * It provides two forms of input parameters: + * + * 1. Zend_Pdf_Outline::create(string $title[, Zend_Pdf_Target $target]) + * 2. Zend_Pdf_Outline::create(array $options) + * + * Second form allows to provide outline options as an array. + * The followed options are supported: + * 'title' - string, outline title, required + * 'open' - boolean, true if outline entry is open (default value is false) + * 'color' - Zend_Pdf_Color_Rgb object, true if outline entry is open (default value is null - black) + * 'italic' - boolean, true if outline entry is displayed in italic (default value is false) + * 'bold' - boolean, true if outline entry is displayed in bold (default value is false) + * 'target' - Zend_Pdf_Target object or string, outline item destination + * + * @return Zend_Pdf_Outline + * @throws Zend_Pdf_Exception + */ + public static function create($param1, $param2 = null) + { + require_once 'Zend/Pdf/Outline/Created.php'; + if (is_string($param1)) { + if ($param2 !== null && !($param2 instanceof Zend_Pdf_Target || is_string($param2))) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline create method takes $title (string) and $target (Zend_Pdf_Target or string) or an array as an input'); + } + + return new Zend_Pdf_Outline_Created(array('title' => $param1, + 'target' => $param2)); + } else { + if (!is_array($param1) || $param2 !== null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline create method takes $title (string) and $destination (Zend_Pdf_Destination) or an array as an input'); + } + + return new Zend_Pdf_Outline_Created($param1); + } + } + + /** + * Returns number of the total number of open items at all levels of the outline. + * + * @internal + * @return integer + */ + public function openOutlinesCount() + { + $count = 1; // Include this outline + + if ($this->isOpen()) { + foreach ($this->childOutlines as $child) { + $count += $child->openOutlinesCount(); + } + } + + return $count; + } + + /** + * Dump Outline and its child outlines into PDF structures + * + * Returns dictionary indirect object or reference + * + * @param Zend_Pdf_ElementFactory $factory object factory for newly created indirect objects + * @param boolean $updateNavigation Update navigation flag + * @param Zend_Pdf_Element $parent Parent outline dictionary reference + * @param Zend_Pdf_Element $prev Previous outline dictionary reference + * @param SplObjectStorage $processedOutlines List of already processed outlines + * @return Zend_Pdf_Element + */ + abstract public function dumpOutline(Zend_Pdf_ElementFactory_Interface $factory, + $updateNavigation, + Zend_Pdf_Element $parent, + Zend_Pdf_Element $prev = null, + SplObjectStorage $processedOutlines = null); + + + //////////////////////////////////////////////////////////////////////// + // RecursiveIterator interface methods + ////////////// + + /** + * Returns the child outline. + * + * @return Zend_Pdf_Outline + */ + public function current() + { + return current($this->childOutlines); + } + + /** + * Returns current iterator key + * + * @return integer + */ + public function key() + { + return key($this->childOutlines); + } + + /** + * Go to next child + */ + public function next() + { + return next($this->childOutlines); + } + + /** + * Rewind children + */ + public function rewind() + { + return reset($this->childOutlines); + } + + /** + * Check if current position is valid + * + * @return boolean + */ + public function valid() + { + return current($this->childOutlines) !== false; + } + + /** + * Returns the child outline. + * + * @return Zend_Pdf_Outline|null + */ + public function getChildren() + { + return current($this->childOutlines); + } + + /** + * Implements RecursiveIterator interface. + * + * @return bool whether container has any pages + */ + public function hasChildren() + { + return count($this->childOutlines) > 0; + } + + + //////////////////////////////////////////////////////////////////////// + // Countable interface methods + ////////////// + + /** + * count() + * + * @return int + */ + public function count() + { + return count($this->childOutlines); + } +} diff --git a/library/Zend/Pdf/Outline/Created.php b/library/Zend/Pdf/Outline/Created.php new file mode 100755 index 000000000..c319492c3 --- /dev/null +++ b/library/Zend/Pdf/Outline/Created.php @@ -0,0 +1,315 @@ +_title; + } + + /** + * Set outline title + * + * @param string $title + * @return Zend_Pdf_Outline + */ + public function setTitle($title) + { + $this->_title = $title; + return $this; + } + + /** + * Returns true if outline item is displayed in italic + * + * @return boolean + */ + public function isItalic() + { + return $this->_italic; + } + + /** + * Sets 'isItalic' outline flag + * + * @param boolean $isItalic + * @return Zend_Pdf_Outline + */ + public function setIsItalic($isItalic) + { + $this->_italic = $isItalic; + return $this; + } + + /** + * Returns true if outline item is displayed in bold + * + * @return boolean + */ + public function isBold() + { + return $this->_bold; + } + + /** + * Sets 'isBold' outline flag + * + * @param boolean $isBold + * @return Zend_Pdf_Outline + */ + public function setIsBold($isBold) + { + $this->_bold = $isBold; + return $this; + } + + + /** + * Get outline text color. + * + * @return Zend_Pdf_Color_Rgb + */ + public function getColor() + { + return $this->_color; + } + + /** + * Set outline text color. + * (null means default color which is black) + * + * @param Zend_Pdf_Color_Rgb $color + * @return Zend_Pdf_Outline + */ + public function setColor(Zend_Pdf_Color_Rgb $color) + { + $this->_color = $color; + return $this; + } + + /** + * Get outline target. + * + * @return Zend_Pdf_Target + */ + public function getTarget() + { + return $this->_target; + } + + /** + * Set outline target. + * Null means no target + * + * @param Zend_Pdf_Target|string $target + * @return Zend_Pdf_Outline + * @throws Zend_Pdf_Exception + */ + public function setTarget($target = null) + { + if (is_string($target)) { + require_once 'Zend/Pdf/Destination/Named.php'; + $target = new Zend_Pdf_Destination_Named($target); + } + + if ($target === null || $target instanceof Zend_Pdf_Target) { + $this->_target = $target; + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline target has to be Zend_Pdf_Destination or Zend_Pdf_Action object or string'); + } + + return $this; + } + + + /** + * Object constructor + * + * @param array $options + * @throws Zend_Pdf_Exception + */ + public function __construct($options = array()) + { + if (!isset($options['title'])) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Title parameter is required.'); + } + + $this->setOptions($options); + } + + /** + * Dump Outline and its child outlines into PDF structures + * + * Returns dictionary indirect object or reference + * + * @internal + * @param Zend_Pdf_ElementFactory $factory object factory for newly created indirect objects + * @param boolean $updateNavigation Update navigation flag + * @param Zend_Pdf_Element $parent Parent outline dictionary reference + * @param Zend_Pdf_Element $prev Previous outline dictionary reference + * @param SplObjectStorage $processedOutlines List of already processed outlines + * @return Zend_Pdf_Element + * @throws Zend_Pdf_Exception + */ + public function dumpOutline(Zend_Pdf_ElementFactory_Interface $factory, + $updateNavigation, + Zend_Pdf_Element $parent, + Zend_Pdf_Element $prev = null, + SplObjectStorage $processedOutlines = null) + { + if ($processedOutlines === null) { + $processedOutlines = new SplObjectStorage(); + } + $processedOutlines->attach($this); + + $outlineDictionary = $factory->newObject(new Zend_Pdf_Element_Dictionary()); + + $outlineDictionary->Title = new Zend_Pdf_Element_String($this->getTitle()); + + $target = $this->getTarget(); + if ($target === null) { + // Do nothing + } else if ($target instanceof Zend_Pdf_Destination) { + $outlineDictionary->Dest = $target->getResource(); + } else if ($target instanceof Zend_Pdf_Action) { + $outlineDictionary->A = $target->getResource(); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline target has to be Zend_Pdf_Destination, Zend_Pdf_Action object or null'); + } + + $color = $this->getColor(); + if ($color !== null) { + $components = $color->getComponents(); + $colorComponentElements = array(new Zend_Pdf_Element_Numeric($components[0]), + new Zend_Pdf_Element_Numeric($components[1]), + new Zend_Pdf_Element_Numeric($components[2])); + $outlineDictionary->C = new Zend_Pdf_Element_Array($colorComponentElements); + } + + if ($this->isItalic() || $this->isBold()) { + $outlineDictionary->F = new Zend_Pdf_Element_Numeric(($this->isItalic()? 1 : 0) | // Bit 1 - Italic + ($this->isBold()? 2 : 0)); // Bit 2 - Bold + } + + + $outlineDictionary->Parent = $parent; + $outlineDictionary->Prev = $prev; + + $lastChild = null; + foreach ($this->childOutlines as $childOutline) { + if ($processedOutlines->contains($childOutline)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outlines cyclyc reference is detected.'); + } + + if ($lastChild === null) { + $lastChild = $childOutline->dumpOutline($factory, true, $outlineDictionary, null, $processedOutlines); + $outlineDictionary->First = $lastChild; + } else { + $childOutlineDictionary = $childOutline->dumpOutline($factory, true, $outlineDictionary, $lastChild, $processedOutlines); + $lastChild->Next = $childOutlineDictionary; + $lastChild = $childOutlineDictionary; + } + } + $outlineDictionary->Last = $lastChild; + + if (count($this->childOutlines) != 0) { + $outlineDictionary->Count = new Zend_Pdf_Element_Numeric(($this->isOpen()? 1 : -1)*count($this->childOutlines)); + } + + return $outlineDictionary; + } +} diff --git a/library/Zend/Pdf/Outline/Loaded.php b/library/Zend/Pdf/Outline/Loaded.php new file mode 100755 index 000000000..1c3228c12 --- /dev/null +++ b/library/Zend/Pdf/Outline/Loaded.php @@ -0,0 +1,460 @@ +_outlineDictionary->Title === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline dictionary Title entry is required.'); + } + return $this->_outlineDictionary->Title->value; + } + + /** + * Set outline title + * + * @param string $title + * @return Zend_Pdf_Outline + */ + public function setTitle($title) + { + $this->_outlineDictionary->Title->touch(); + $this->_outlineDictionary->Title = new Zend_Pdf_Element_String($title); + return $this; + } + + /** + * Sets 'isOpen' outline flag + * + * @param boolean $isOpen + * @return Zend_Pdf_Outline + */ + public function setIsOpen($isOpen) + { + parent::setIsOpen($isOpen); + + if ($this->_outlineDictionary->Count === null) { + // Do Nothing. + return this; + } + + $childrenCount = $this->_outlineDictionary->Count->value; + $isOpenCurrentState = ($childrenCount > 0); + if ($isOpen != $isOpenCurrentState) { + $this->_outlineDictionary->Count->touch(); + $this->_outlineDictionary->Count->value = ($isOpen? 1 : -1)*abs($childrenCount); + } + + return $this; + } + + /** + * Returns true if outline item is displayed in italic + * + * @return boolean + */ + public function isItalic() + { + if ($this->_outlineDictionary->F === null) { + return false; + } + return $this->_outlineDictionary->F->value & 1; + } + + /** + * Sets 'isItalic' outline flag + * + * @param boolean $isItalic + * @return Zend_Pdf_Outline + */ + public function setIsItalic($isItalic) + { + if ($this->_outlineDictionary->F === null) { + $this->_outlineDictionary->touch(); + $this->_outlineDictionary->F = new Zend_Pdf_Element_Numeric($isItalic? 1 : 0); + } else { + $this->_outlineDictionary->F->touch(); + if ($isItalic) { + $this->_outlineDictionary->F->value = $this->_outlineDictionary->F->value | 1; + } else { + $this->_outlineDictionary->F->value = $this->_outlineDictionary->F->value | ~1; + } + } + return $this; + } + + /** + * Returns true if outline item is displayed in bold + * + * @return boolean + */ + public function isBold() + { + if ($this->_outlineDictionary->F === null) { + return false; + } + return $this->_outlineDictionary->F->value & 2; + } + + /** + * Sets 'isBold' outline flag + * + * @param boolean $isBold + * @return Zend_Pdf_Outline + */ + public function setIsBold($isBold) + { + if ($this->_outlineDictionary->F === null) { + $this->_outlineDictionary->touch(); + $this->_outlineDictionary->F = new Zend_Pdf_Element_Numeric($isBold? 2 : 0); + } else { + $this->_outlineDictionary->F->touch(); + if ($isBold) { + $this->_outlineDictionary->F->value = $this->_outlineDictionary->F->value | 2; + } else { + $this->_outlineDictionary->F->value = $this->_outlineDictionary->F->value | ~2; + } + } + return $this; + } + + + /** + * Get outline text color. + * + * @return Zend_Pdf_Color_Rgb + */ + public function getColor() + { + if ($this->_outlineDictionary->C === null) { + return null; + } + + $components = $this->_outlineDictionary->C->items; + + require_once 'Zend/Pdf/Color/Rgb.php'; + return new Zend_Pdf_Color_Rgb($components[0], $components[1], $components[2]); + } + + /** + * Set outline text color. + * (null means default color which is black) + * + * @param Zend_Pdf_Color_Rgb $color + * @return Zend_Pdf_Outline + */ + public function setColor(Zend_Pdf_Color_Rgb $color) + { + $this->_outlineDictionary->touch(); + + if ($color === null) { + $this->_outlineDictionary->C = null; + } else { + $components = $color->getComponents(); + $colorComponentElements = array(new Zend_Pdf_Element_Numeric($components[0]), + new Zend_Pdf_Element_Numeric($components[1]), + new Zend_Pdf_Element_Numeric($components[2])); + $this->_outlineDictionary->C = new Zend_Pdf_Element_Array($colorComponentElements); + } + + return $this; + } + + /** + * Get outline target. + * + * @return Zend_Pdf_Target + * @throws Zend_Pdf_Exception + */ + public function getTarget() + { + if ($this->_outlineDictionary->Dest !== null) { + if ($this->_outlineDictionary->A !== null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline dictionary may contain Dest or A entry, but not both.'); + } + + require_once 'Zend/Pdf/Destination.php'; + return Zend_Pdf_Destination::load($this->_outlineDictionary->Dest); + } else if ($this->_outlineDictionary->A !== null) { + require_once 'Zend/Pdf/Action.php'; + return Zend_Pdf_Action::load($this->_outlineDictionary->A); + } + + return null; + } + + /** + * Set outline target. + * Null means no target + * + * @param Zend_Pdf_Target|string $target + * @return Zend_Pdf_Outline + * @throws Zend_Pdf_Exception + */ + public function setTarget($target = null) + { + $this->_outlineDictionary->touch(); + + if (is_string($target)) { + require_once 'Zend/Pdf/Destination/Named.php'; + $target = Zend_Pdf_Destination_Named::create($target); + } + + if ($target === null) { + $this->_outlineDictionary->Dest = null; + $this->_outlineDictionary->A = null; + } else if ($target instanceof Zend_Pdf_Destination) { + $this->_outlineDictionary->Dest = $target->getResource(); + $this->_outlineDictionary->A = null; + } else if ($target instanceof Zend_Pdf_Action) { + $this->_outlineDictionary->Dest = null; + $this->_outlineDictionary->A = $target->getResource(); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline target has to be Zend_Pdf_Destination or Zend_Pdf_Action object or string'); + } + + return $this; + } + + /** + * Set outline options + * + * @param array $options + * @return Zend_Pdf_Actions_Traceable + * @throws Zend_Pdf_Exception + */ + public function setOptions(array $options) + { + parent::setOptions($options); + + return $this; + } + + + + /** + * Create PDF outline object using specified dictionary + * + * @internal + * @param Zend_Pdf_Element $dictionary (It's actually Dictionary or Dictionary Object or Reference to a Dictionary Object) + * @param Zend_Pdf_Action $parentAction + * @param SplObjectStorage $processedOutlines List of already processed Outline dictionaries, + * used to avoid cyclic references + * @return Zend_Pdf_Action + * @throws Zend_Pdf_Exception + */ + public function __construct(Zend_Pdf_Element $dictionary, SplObjectStorage $processedDictionaries = null) + { + if ($dictionary->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$dictionary mast be an indirect dictionary object.'); + } + + if ($processedDictionaries === null) { + $processedDictionaries = new SplObjectStorage(); + } + $processedDictionaries->attach($dictionary); + + $this->_outlineDictionary = $dictionary; + + if ($dictionary->Count !== null) { + if ($dictionary->Count->getType() != Zend_Pdf_Element::TYPE_NUMERIC) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline dictionary Count entry must be a numeric element.'); + } + + $childOutlinesCount = $dictionary->Count->value; + if ($childOutlinesCount > 0) { + $this->_open = true; + } + $childOutlinesCount = abs($childOutlinesCount); + + $childDictionary = $dictionary->First; + + $children = new SplObjectStorage(); + while ($childDictionary !== null) { + // Check children structure for cyclic references + if ($children->contains($childDictionary)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outline childs load error.'); + } + + if (!$processedDictionaries->contains($childDictionary)) { + $this->childOutlines[] = new Zend_Pdf_Outline_Loaded($childDictionary, $processedDictionaries); + } + + $childDictionary = $childDictionary->Next; + } + + $this->_originalChildOutlines = $this->childOutlines; + } + } + + /** + * Dump Outline and its child outlines into PDF structures + * + * Returns dictionary indirect object or reference + * + * @internal + * @param Zend_Pdf_ElementFactory $factory object factory for newly created indirect objects + * @param boolean $updateNavigation Update navigation flag + * @param Zend_Pdf_Element $parent Parent outline dictionary reference + * @param Zend_Pdf_Element $prev Previous outline dictionary reference + * @param SplObjectStorage $processedOutlines List of already processed outlines + * @return Zend_Pdf_Element + * @throws Zend_Pdf_Exception + */ + public function dumpOutline(Zend_Pdf_ElementFactory_Interface $factory, + $updateNavigation, + Zend_Pdf_Element $parent, + Zend_Pdf_Element $prev = null, + SplObjectStorage $processedOutlines = null) + { + if ($processedOutlines === null) { + $processedOutlines = new SplObjectStorage(); + } + $processedOutlines->attach($this); + + if ($updateNavigation) { + $this->_outlineDictionary->touch(); + + $this->_outlineDictionary->Parent = $parent; + $this->_outlineDictionary->Prev = $prev; + $this->_outlineDictionary->Next = null; + } + + $updateChildNavigation = false; + if (count($this->_originalChildOutlines) != count($this->childOutlines)) { + // If original and current children arrays have different size then children list was updated + $updateChildNavigation = true; + } else if ( !(array_keys($this->_originalChildOutlines) === array_keys($this->childOutlines)) ) { + // If original and current children arrays have different keys (with a glance to an order) then children list was updated + $updateChildNavigation = true; + } else { + foreach ($this->childOutlines as $key => $childOutline) { + if ($this->_originalChildOutlines[$key] !== $childOutline) { + $updateChildNavigation = true; + break; + } + } + } + + $lastChild = null; + if ($updateChildNavigation) { + $this->_outlineDictionary->touch(); + $this->_outlineDictionary->First = null; + + foreach ($this->childOutlines as $childOutline) { + if ($processedOutlines->contains($childOutline)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outlines cyclyc reference is detected.'); + } + + if ($lastChild === null) { + // First pass. Update Outlines dictionary First entry using corresponding value + $lastChild = $childOutline->dumpOutline($factory, $updateChildNavigation, $this->_outlineDictionary, null, $processedOutlines); + $this->_outlineDictionary->First = $lastChild; + } else { + // Update previous outline dictionary Next entry (Prev is updated within dumpOutline() method) + $childOutlineDictionary = $childOutline->dumpOutline($factory, $updateChildNavigation, $this->_outlineDictionary, $lastChild, $processedOutlines); + $lastChild->Next = $childOutlineDictionary; + $lastChild = $childOutlineDictionary; + } + } + + $this->_outlineDictionary->Last = $lastChild; + + if (count($this->childOutlines) != 0) { + $this->_outlineDictionary->Count = new Zend_Pdf_Element_Numeric(($this->isOpen()? 1 : -1)*count($this->childOutlines)); + } else { + $this->_outlineDictionary->Count = null; + } + } else { + foreach ($this->childOutlines as $childOutline) { + if ($processedOutlines->contains($childOutline)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Outlines cyclyc reference is detected.'); + } + $lastChild = $childOutline->dumpOutline($factory, $updateChildNavigation, $this->_outlineDictionary, $lastChild, $processedOutlines); + } + } + + return $this->_outlineDictionary; + } + + public function dump($level = 0) + { + printf(":%3d:%s:%s:%s%s :\n", count($this->childOutlines),$this->isItalic()? 'i':' ', $this->isBold()? 'b':' ', str_pad('', 4*$level), $this->getTitle()); + + if ($this->isOpen() || true) { + foreach ($this->childOutlines as $child) { + $child->dump($level + 1); + } + } + } +} diff --git a/library/Zend/Pdf/Page.php b/library/Zend/Pdf/Page.php new file mode 100755 index 000000000..78b0c3de5 --- /dev/null +++ b/library/Zend/Pdf/Page.php @@ -0,0 +1,773 @@ +getType()) { + case Zend_Pdf_Element::TYPE_DICTIONARY: + $this->_dictionary = $param1; + $this->_objFactory = $param2; + $this->_attached = true; + $this->_safeGS = false; + return; + break; + + case Zend_Pdf_Element::TYPE_NULL: + $this->_objFactory = $param2; + $pageWidth = $pageHeight = 0; + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unrecognized object type.'); + break; + + } + } else if ($param1 instanceof Zend_Pdf_Page && $param2 === null && $param3 === null) { + // Duplicate existing page. + // Let already existing content and resources to be shared between pages + // We don't give existing content modification functionality, so we don't need "deep copy" + $this->_objFactory = $param1->_objFactory; + $this->_attached = &$param1->_attached; + $this->_safeGS = false; + + $this->_dictionary = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + + foreach ($param1->_dictionary->getKeys() as $key) { + if ($key == 'Contents') { + // Clone Contents property + + $this->_dictionary->Contents = new Zend_Pdf_Element_Array(); + + if ($param1->_dictionary->Contents->getType() != Zend_Pdf_Element::TYPE_ARRAY) { + // Prepare array of content streams and add existing stream + $this->_dictionary->Contents->items[] = $param1->_dictionary->Contents; + } else { + // Clone array of the content streams + foreach ($param1->_dictionary->Contents->items as $srcContentStream) { + $this->_dictionary->Contents->items[] = $srcContentStream; + } + } + } else { + $this->_dictionary->$key = $param1->_dictionary->$key; + } + } + + return; + } else if (is_string($param1) && + ($param2 === null || $param2 instanceof Zend_Pdf_ElementFactory_Interface) && + $param3 === null) { + if ($param2 !== null) { + $this->_objFactory = $param2; + } else { + require_once 'Zend/Pdf/ElementFactory.php'; + $this->_objFactory = Zend_Pdf_ElementFactory::createFactory(1); + } + $this->_attached = false; + $this->_safeGS = true; /** New page created. That's users App responsibility to track GS changes */ + + switch (strtolower($param1)) { + case 'a4': + $param1 = Zend_Pdf_Page::SIZE_A4; + break; + case 'a4-landscape': + $param1 = Zend_Pdf_Page::SIZE_A4_LANDSCAPE; + break; + case 'letter': + $param1 = Zend_Pdf_Page::SIZE_LETTER; + break; + case 'letter-landscape': + $param1 = Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE; + break; + default: + // should be in "x:y" or "x:y:" form + } + + $pageDim = explode(':', $param1); + if(count($pageDim) == 2 || count($pageDim) == 3) { + $pageWidth = $pageDim[0]; + $pageHeight = $pageDim[1]; + } else { + /** + * @todo support of user defined pagesize notations, like: + * "210x297mm", "595x842", "8.5x11in", "612x792" + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong pagesize notation.'); + } + /** + * @todo support of pagesize recalculation to "default user space units" + */ + + } else if (is_numeric($param1) && is_numeric($param2) && + ($param3 === null || $param3 instanceof Zend_Pdf_ElementFactory_Interface)) { + if ($param3 !== null) { + $this->_objFactory = $param3; + } else { + require_once 'Zend/Pdf/ElementFactory.php'; + $this->_objFactory = Zend_Pdf_ElementFactory::createFactory(1); + } + + $this->_attached = false; + $this->_safeGS = true; /** New page created. That's users App responsibility to track GS changes */ + $pageWidth = $param1; + $pageHeight = $param2; + + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unrecognized method signature, wrong number of arguments or wrong argument types.'); + } + + $this->_dictionary = $this->_objFactory->newObject(new Zend_Pdf_Element_Dictionary()); + $this->_dictionary->Type = new Zend_Pdf_Element_Name('Page'); + require_once 'Zend/Pdf.php'; + $this->_dictionary->LastModified = new Zend_Pdf_Element_String(Zend_Pdf::pdfDate()); + $this->_dictionary->Resources = new Zend_Pdf_Element_Dictionary(); + $this->_dictionary->MediaBox = new Zend_Pdf_Element_Array(); + $this->_dictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric(0); + $this->_dictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric(0); + $this->_dictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric($pageWidth); + $this->_dictionary->MediaBox->items[] = new Zend_Pdf_Element_Numeric($pageHeight); + $this->_dictionary->Contents = new Zend_Pdf_Element_Array(); + } + + + /** + * Attach resource to the canvas + * + * Method returns a name of the resource which can be used + * as a resource reference within drawing instructions stream + * Allowed types: 'ExtGState', 'ColorSpace', 'Pattern', 'Shading', + * 'XObject', 'Font', 'Properties' + * + * @param string $type + * @param Zend_Pdf_Resource $resource + * @return string + */ + protected function _attachResource($type, Zend_Pdf_Resource $resource) + { + // Check that Resources dictionary contains appropriate resource set + if ($this->_dictionary->Resources->$type === null) { + $this->_dictionary->Resources->touch(); + $this->_dictionary->Resources->$type = new Zend_Pdf_Element_Dictionary(); + } else { + $this->_dictionary->Resources->$type->touch(); + } + + // Check, that resource is already attached to resource set. + $resObject = $resource->getResource(); + foreach ($this->_dictionary->Resources->$type->getKeys() as $ResID) { + if ($this->_dictionary->Resources->$type->$ResID === $resObject) { + return $ResID; + } + } + + $idCounter = 1; + do { + $newResName = $type[0] . $idCounter++; + } while ($this->_dictionary->Resources->$type->$newResName !== null); + + $this->_dictionary->Resources->$type->$newResName = $resObject; + $this->_objFactory->attach($resource->getFactory()); + + return $newResName; + } + + /** + * Add procedureSet to the Page description + * + * @param string $procSetName + */ + protected function _addProcSet($procSetName) + { + // Check that Resources dictionary contains ProcSet entry + if ($this->_dictionary->Resources->ProcSet === null) { + $this->_dictionary->Resources->touch(); + $this->_dictionary->Resources->ProcSet = new Zend_Pdf_Element_Array(); + } else { + $this->_dictionary->Resources->ProcSet->touch(); + } + + foreach ($this->_dictionary->Resources->ProcSet->items as $procSetEntry) { + if ($procSetEntry->value == $procSetName) { + // Procset is already included into a ProcSet array + return; + } + } + + $this->_dictionary->Resources->ProcSet->items[] = new Zend_Pdf_Element_Name($procSetName); + } + + /** + * Returns dictionaries of used resources. + * + * Used for canvas implementations interoperability + * + * Structure of the returned array: + * array( + * => array( + * => , + * => , + * => , + * ... + * ), + * => array( + * => , + * => , + * => , + * ... + * ), + * ... + * 'ProcSet' => array() + * ) + * + * where ProcSet array is a list of used procedure sets names (strings). + * Allowed procedure set names: 'PDF', 'Text', 'ImageB', 'ImageC', 'ImageI' + * + * @internal + * @return array + */ + public function getResources() + { + $resources = array(); + $resDictionary = $this->_dictionary->Resources; + + foreach ($resDictionary->getKeys() as $resType) { + $resources[$resType] = array(); + + if ($resType == 'ProcSet') { + foreach ($resDictionary->ProcSet->items as $procSetEntry) { + $resources[$resType][] = $procSetEntry->value; + } + } else { + $resMap = $resDictionary->$resType; + + foreach ($resMap->getKeys() as $resId) { + $resources[$resType][$resId] =new Zend_Pdf_Resource_Unified($resMap->$resId); + } + } + } + + return $resources; + } + + /** + * Get drawing instructions stream + * + * It has to be returned as a PDF stream object to make it reusable. + * + * @internal + * @returns Zend_Pdf_Resource_ContentStream + */ + public function getContents() + { + /** @todo implementation */ + } + + /** + * Return the height of this page in points. + * + * @return float + */ + public function getHeight() + { + return $this->_dictionary->MediaBox->items[3]->value - + $this->_dictionary->MediaBox->items[1]->value; + } + + /** + * Return the width of this page in points. + * + * @return float + */ + public function getWidth() + { + return $this->_dictionary->MediaBox->items[2]->value - + $this->_dictionary->MediaBox->items[0]->value; + } + + /** + * Clone page, extract it and dependent objects from the current document, + * so it can be used within other docs. + */ + public function __clone() + { + $factory = Zend_Pdf_ElementFactory::createFactory(1); + $processed = array(); + + // Clone dictionary object. + // Do it explicitly to prevent sharing page attributes between different + // results of clonePage() operation (other resources are still shared) + $dictionary = new Zend_Pdf_Element_Dictionary(); + foreach ($this->_dictionary->getKeys() as $key) { + $dictionary->$key = $this->_dictionary->$key->makeClone($factory->getFactory(), + $processed, + Zend_Pdf_Element::CLONE_MODE_SKIP_PAGES); + } + + $this->_dictionary = $factory->newObject($dictionary); + $this->_objFactory = $factory; + $this->_attached = false; + $this->_style = null; + $this->_font = null; + } + + /** + * Clone page, extract it and dependent objects from the current document, + * so it can be used within other docs. + * + * @internal + * @param Zend_Pdf_ElementFactory_Interface $factory + * @param array $processed + * @return Zend_Pdf_Page + */ + public function clonePage($factory, &$processed) + { + // Clone dictionary object. + // Do it explicitly to prevent sharing page attributes between different + // results of clonePage() operation (other resources are still shared) + $dictionary = new Zend_Pdf_Element_Dictionary(); + foreach ($this->_dictionary->getKeys() as $key) { + $dictionary->$key = $this->_dictionary->$key->makeClone($factory->getFactory(), + $processed, + Zend_Pdf_Element::CLONE_MODE_SKIP_PAGES); + } + + $clonedPage = new Zend_Pdf_Page($factory->newObject($dictionary), $factory); + $clonedPage->_attached = false; + + return $clonedPage; + } + + /** + * Retrive PDF file reference to the page + * + * @internal + * @return Zend_Pdf_Element_Dictionary + */ + public function getPageDictionary() + { + return $this->_dictionary; + } + + /** + * Dump current drawing instructions into the content stream. + * + * @todo Don't forget to close all current graphics operations (like path drawing) + * + * @throws Zend_Pdf_Exception + */ + public function flush() + { + if ($this->_saveCount != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Saved graphics state is not restored'); + } + + if ($this->_contents == '') { + return; + } + + if ($this->_dictionary->Contents->getType() != Zend_Pdf_Element::TYPE_ARRAY) { + /** + * It's a stream object. + * Prepare Contents page attribute for update. + */ + $this->_dictionary->touch(); + + $currentPageContents = $this->_dictionary->Contents; + $this->_dictionary->Contents = new Zend_Pdf_Element_Array(); + $this->_dictionary->Contents->items[] = $currentPageContents; + } else { + $this->_dictionary->Contents->touch(); + } + + if ((!$this->_safeGS) && (count($this->_dictionary->Contents->items) != 0)) { + /** + * Page already has some content which is not treated as safe. + * + * Add save/restore GS operators + */ + $this->_addProcSet('PDF'); + + $newContentsArray = new Zend_Pdf_Element_Array(); + $newContentsArray->items[] = $this->_objFactory->newStreamObject(" q\n"); + foreach ($this->_dictionary->Contents->items as $contentStream) { + $newContentsArray->items[] = $contentStream; + } + $newContentsArray->items[] = $this->_objFactory->newStreamObject(" Q\n"); + + $this->_dictionary->touch(); + $this->_dictionary->Contents = $newContentsArray; + + $this->_safeGS = true; + } + + $this->_dictionary->Contents->items[] = + $this->_objFactory->newStreamObject($this->_contents); + + $this->_contents = ''; + } + + /** + * Prepare page to be rendered into PDF. + * + * @todo Don't forget to close all current graphics operations (like path drawing) + * + * @param Zend_Pdf_ElementFactory_Interface $objFactory + * @throws Zend_Pdf_Exception + */ + public function render(Zend_Pdf_ElementFactory_Interface $objFactory) + { + $this->flush(); + + if ($objFactory === $this->_objFactory) { + // Page is already attached to the document. + return; + } + + if ($this->_attached) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Page is attached to other documen. Use clone $page to get it context free.'); + } else { + $objFactory->attach($this->_objFactory); + } + } + + /** + * Extract resources attached to the page + * + * This method is not intended to be used in userland, but helps to optimize some document wide operations + * + * returns array of Zend_Pdf_Element_Dictionary objects + * + * @internal + * @return array + */ + public function extractResources() + { + return $this->_dictionary->Resources; + } + + /** + * Extract fonts attached to the page + * + * returns array of Zend_Pdf_Resource_Font_Extracted objects + * + * @return array + * @throws Zend_Pdf_Exception + */ + public function extractFonts() + { + if ($this->_dictionary->Resources->Font === null) { + // Page doesn't have any font attached + // Return empty array + return array(); + } + + $fontResources = $this->_dictionary->Resources->Font; + + $fontResourcesUnique = array(); + foreach ($fontResources->getKeys() as $fontResourceName) { + $fontDictionary = $fontResources->$fontResourceName; + + if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference || + $fontDictionary instanceof Zend_Pdf_Element_Object) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Font dictionary has to be an indirect object or object reference.'); + } + + $fontResourcesUnique[spl_object_hash($fontDictionary->getObject())] = $fontDictionary; + } + + $fonts = array(); + require_once 'Zend/Pdf/Exception.php'; + foreach ($fontResourcesUnique as $resourceId => $fontDictionary) { + try { + require_once 'Zend/Pdf/Resource/Font/Extracted.php'; + // Try to extract font + $extractedFont = new Zend_Pdf_Resource_Font_Extracted($fontDictionary); + + $fonts[$resourceId] = $extractedFont; + } catch (Zend_Pdf_Exception $e) { + if ($e->getMessage() != 'Unsupported font type.') { + throw new Zend_Pdf_Exception($e->getMessage(), $e->getCode(), $e); + } + } + } + + return $fonts; + } + + /** + * Extract font attached to the page by specific font name + * + * $fontName should be specified in UTF-8 encoding + * + * @return Zend_Pdf_Resource_Font_Extracted|null + * @throws Zend_Pdf_Exception + */ + public function extractFont($fontName) + { + if ($this->_dictionary->Resources->Font === null) { + // Page doesn't have any font attached + return null; + } + + $fontResources = $this->_dictionary->Resources->Font; + + $fontResourcesUnique = array(); + + require_once 'Zend/Pdf/Exception.php'; + foreach ($fontResources->getKeys() as $fontResourceName) { + $fontDictionary = $fontResources->$fontResourceName; + + if (! ($fontDictionary instanceof Zend_Pdf_Element_Reference || + $fontDictionary instanceof Zend_Pdf_Element_Object) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Font dictionary has to be an indirect object or object reference.'); + } + + $resourceId = spl_object_hash($fontDictionary->getObject()); + if (isset($fontResourcesUnique[$resourceId])) { + continue; + } else { + // Mark resource as processed + $fontResourcesUnique[$resourceId] = 1; + } + + if ($fontDictionary->BaseFont->value != $fontName) { + continue; + } + + try { + // Try to extract font + require_once 'Zend/Pdf/Resource/Font/Extracted.php'; + return new Zend_Pdf_Resource_Font_Extracted($fontDictionary); + } catch (Zend_Pdf_Exception $e) { + if ($e->getMessage() != 'Unsupported font type.') { + throw new Zend_Pdf_Exception($e->getMessage(), $e->getCode(), $e); + } + + // Continue searhing font with specified name + } + } + + return null; + } + + /** + * + * @param Zend_Pdf_Annotation $annotation + * @return Zend_Pdf_Page + */ + public function attachAnnotation(Zend_Pdf_Annotation $annotation) + { + $annotationDictionary = $annotation->getResource(); + if (!$annotationDictionary instanceof Zend_Pdf_Element_Object && + !$annotationDictionary instanceof Zend_Pdf_Element_Reference) { + $annotationDictionary = $this->_objFactory->newObject($annotationDictionary); + } + + if ($this->_dictionary->Annots === null) { + $this->_dictionary->touch(); + $this->_dictionary->Annots = new Zend_Pdf_Element_Array(); + } else { + $this->_dictionary->Annots->touch(); + } + + $this->_dictionary->Annots->items[] = $annotationDictionary; + + $annotationDictionary->touch(); + $annotationDictionary->P = $this->_dictionary; + + return $this; + } +} + diff --git a/library/Zend/Pdf/Parser.php b/library/Zend/Pdf/Parser.php new file mode 100755 index 000000000..7fccf9d13 --- /dev/null +++ b/library/Zend/Pdf/Parser.php @@ -0,0 +1,472 @@ +_stringParser->data); + } + + /** + * Get PDF String + * + * @return string + */ + public function getPDFString() + { + return $this->_stringParser->data; + } + + /** + * PDF version specified in the file header + * + * @return string + */ + public function getPDFVersion() + { + return $this->_pdfVersion; + } + + /** + * Load XReference table and referenced objects + * + * @param integer $offset + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Trailer_Keeper + */ + private function _loadXRefTable($offset) + { + $this->_stringParser->offset = $offset; + + require_once 'Zend/Pdf/Element/Reference/Table.php'; + $refTable = new Zend_Pdf_Element_Reference_Table(); + require_once 'Zend/Pdf/Element/Reference/Context.php'; + $context = new Zend_Pdf_Element_Reference_Context($this->_stringParser, $refTable); + $this->_stringParser->setContext($context); + + $nextLexeme = $this->_stringParser->readLexeme(); + if ($nextLexeme == 'xref') { + /** + * Common cross-reference table + */ + $this->_stringParser->skipWhiteSpace(); + while ( ($nextLexeme = $this->_stringParser->readLexeme()) != 'trailer' ) { + if (!ctype_digit($nextLexeme)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross-reference table subheader values must contain only digits.', $this->_stringParser->offset-strlen($nextLexeme))); + } + $objNum = (int)$nextLexeme; + + $refCount = $this->_stringParser->readLexeme(); + if (!ctype_digit($refCount)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross-reference table subheader values must contain only digits.', $this->_stringParser->offset-strlen($refCount))); + } + + $this->_stringParser->skipWhiteSpace(); + while ($refCount > 0) { + $objectOffset = substr($this->_stringParser->data, $this->_stringParser->offset, 10); + if (!ctype_digit($objectOffset)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Offset must contain only digits.', $this->_stringParser->offset)); + } + // Force $objectOffset to be treated as decimal instead of octal number + for ($numStart = 0; $numStart < strlen($objectOffset)-1; $numStart++) { + if ($objectOffset[$numStart] != '0') { + break; + } + } + $objectOffset = substr($objectOffset, $numStart); + $this->_stringParser->offset += 10; + + if (strpos("\x00\t\n\f\r ", $this->_stringParser->data[$this->_stringParser->offset]) === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset)); + } + $this->_stringParser->offset++; + + $genNumber = substr($this->_stringParser->data, $this->_stringParser->offset, 5); + if (!ctype_digit($objectOffset)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Offset must contain only digits.', $this->_stringParser->offset)); + } + // Force $objectOffset to be treated as decimal instead of octal number + for ($numStart = 0; $numStart < strlen($genNumber)-1; $numStart++) { + if ($genNumber[$numStart] != '0') { + break; + } + } + $genNumber = substr($genNumber, $numStart); + $this->_stringParser->offset += 5; + + if (strpos("\x00\t\n\f\r ", $this->_stringParser->data[$this->_stringParser->offset]) === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset)); + } + $this->_stringParser->offset++; + + $inUseKey = $this->_stringParser->data[$this->_stringParser->offset]; + $this->_stringParser->offset++; + + switch ($inUseKey) { + case 'f': + // free entry + unset( $this->_refTable[$objNum . ' ' . $genNumber . ' R'] ); + $refTable->addReference($objNum . ' ' . $genNumber . ' R', + $objectOffset, + false); + break; + + case 'n': + // in-use entry + + $refTable->addReference($objNum . ' ' . $genNumber . ' R', + $objectOffset, + true); + } + + if ( !Zend_Pdf_StringParser::isWhiteSpace(ord( $this->_stringParser->data[$this->_stringParser->offset] )) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset)); + } + $this->_stringParser->offset++; + if ( !Zend_Pdf_StringParser::isWhiteSpace(ord( $this->_stringParser->data[$this->_stringParser->offset] )) ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file cross-reference table syntax error. Offset - 0x%X. Value separator must be white space.', $this->_stringParser->offset)); + } + $this->_stringParser->offset++; + + $refCount--; + $objNum++; + } + } + + $trailerDictOffset = $this->_stringParser->offset; + $trailerDict = $this->_stringParser->readElement(); + if (!$trailerDict instanceof Zend_Pdf_Element_Dictionary) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Dictionary expected after \'trailer\' keyword.', $trailerDictOffset)); + } + } else { + $xrefStream = $this->_stringParser->getObject($offset, $context); + + if (!$xrefStream instanceof Zend_Pdf_Element_Object_Stream) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross-reference stream expected.', $offset)); + } + + $trailerDict = $xrefStream->dictionary; + if ($trailerDict->Type->value != 'XRef') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross-reference stream object must have /Type property assigned to /XRef.', $offset)); + } + if ($trailerDict->W === null || $trailerDict->W->getType() != Zend_Pdf_Element::TYPE_ARRAY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross reference stream dictionary doesn\'t have W entry or it\'s not an array.', $offset)); + } + + $entryField1Size = $trailerDict->W->items[0]->value; + $entryField2Size = $trailerDict->W->items[1]->value; + $entryField3Size = $trailerDict->W->items[2]->value; + + if ($entryField2Size == 0 || $entryField3Size == 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Wrong W dictionary entry. Only type field of stream entries has default value and could be zero length.', $offset)); + } + + $xrefStreamData = $xrefStream->value; + + if ($trailerDict->Index !== null) { + if ($trailerDict->Index->getType() != Zend_Pdf_Element::TYPE_ARRAY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Cross reference stream dictionary Index entry must be an array.', $offset)); + } + $sections = count($trailerDict->Index->items)/2; + } else { + $sections = 1; + } + + $streamOffset = 0; + + $size = $entryField1Size + $entryField2Size + $entryField3Size; + $entries = strlen($xrefStreamData)/$size; + + for ($count = 0; $count < $sections; $count++) { + if ($trailerDict->Index !== null) { + $objNum = $trailerDict->Index->items[$count*2 ]->value; + $entries = $trailerDict->Index->items[$count*2 + 1]->value; + } else { + $objNum = 0; + $entries = $trailerDict->Size->value; + } + + for ($count2 = 0; $count2 < $entries; $count2++) { + if ($entryField1Size == 0) { + $type = 1; + } else if ($entryField1Size == 1) { // Optimyze one-byte field case + $type = ord($xrefStreamData[$streamOffset++]); + } else { + $type = Zend_Pdf_StringParser::parseIntFromStream($xrefStreamData, $streamOffset, $entryField1Size); + $streamOffset += $entryField1Size; + } + + if ($entryField2Size == 1) { // Optimyze one-byte field case + $field2 = ord($xrefStreamData[$streamOffset++]); + } else { + $field2 = Zend_Pdf_StringParser::parseIntFromStream($xrefStreamData, $streamOffset, $entryField2Size); + $streamOffset += $entryField2Size; + } + + if ($entryField3Size == 1) { // Optimyze one-byte field case + $field3 = ord($xrefStreamData[$streamOffset++]); + } else { + $field3 = Zend_Pdf_StringParser::parseIntFromStream($xrefStreamData, $streamOffset, $entryField3Size); + $streamOffset += $entryField3Size; + } + + switch ($type) { + case 0: + // Free object + $refTable->addReference($objNum . ' ' . $field3 . ' R', $field2, false); + // Debug output: + // echo "Free object - $objNum $field3 R, next free - $field2\n"; + break; + + case 1: + // In use object + $refTable->addReference($objNum . ' ' . $field3 . ' R', $field2, true); + // Debug output: + // echo "In-use object - $objNum $field3 R, offset - $field2\n"; + break; + + case 2: + // Object in an object stream + // Debug output: + // echo "Compressed object - $objNum 0 R, object stream - $field2 0 R, offset - $field3\n"; + break; + } + + $objNum++; + } + } + + // $streamOffset . ' ' . strlen($xrefStreamData) . "\n"; + // "$entries\n"; + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Cross-reference streams are not supported yet.'); + } + + + require_once 'Zend/Pdf/Trailer/Keeper.php'; + $trailerObj = new Zend_Pdf_Trailer_Keeper($trailerDict, $context); + if ($trailerDict->Prev instanceof Zend_Pdf_Element_Numeric || + $trailerDict->Prev instanceof Zend_Pdf_Element_Reference ) { + $trailerObj->setPrev($this->_loadXRefTable($trailerDict->Prev->value)); + $context->getRefTable()->setParent($trailerObj->getPrev()->getRefTable()); + } + + /** + * We set '/Prev' dictionary property to the current cross-reference section offset. + * It doesn't correspond to the actual data, but is true when trailer will be used + * as a trailer for next generated PDF section. + */ + $trailerObj->Prev = new Zend_Pdf_Element_Numeric($offset); + + return $trailerObj; + } + + + /** + * Get Trailer object + * + * @return Zend_Pdf_Trailer_Keeper + */ + public function getTrailer() + { + return $this->_trailer; + } + + /** + * Object constructor + * + * Note: PHP duplicates string, which is sent by value, only of it's updated. + * Thus we don't need to care about overhead + * + * @param mixed $source + * @param Zend_Pdf_ElementFactory_Interface $factory + * @param boolean $load + * @throws Zend_Exception + */ + public function __construct($source, Zend_Pdf_ElementFactory_Interface $factory, $load) + { + if ($load) { + if (($pdfFile = @fopen($source, 'rb')) === false ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Can not open '$source' file for reading." ); + } + + $data = ''; + $byteCount = filesize($source); + while ($byteCount > 0 && !feof($pdfFile)) { + $nextBlock = fread($pdfFile, $byteCount); + if ($nextBlock === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Error occured while '$source' file reading." ); + } + + $data .= $nextBlock; + $byteCount -= strlen($nextBlock); + } + if ($byteCount != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Error occured while '$source' file reading." ); + } + fclose($pdfFile); + + $this->_stringParser = new Zend_Pdf_StringParser($data, $factory); + } else { + $this->_stringParser = new Zend_Pdf_StringParser($source, $factory); + } + + $pdfVersionComment = $this->_stringParser->readComment(); + if (substr($pdfVersionComment, 0, 5) != '%PDF-') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('File is not a PDF.'); + } + + $pdfVersion = substr($pdfVersionComment, 5); + if (version_compare($pdfVersion, '0.9', '<') || + version_compare($pdfVersion, '1.61', '>=') + ) { + /** + * @todo + * To support PDF versions 1.5 (Acrobat 6) and PDF version 1.7 (Acrobat 7) + * Stream compression filter must be implemented (for compressed object streams). + * Cross reference streams must be implemented + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('Unsupported PDF version. Zend_Pdf supports PDF 1.0-1.4. Current version - \'%f\'', $pdfVersion)); + } + $this->_pdfVersion = $pdfVersion; + + $this->_stringParser->offset = strrpos($this->_stringParser->data, '%%EOF'); + if ($this->_stringParser->offset === false || + strlen($this->_stringParser->data) - $this->_stringParser->offset > 7) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Pdf file syntax error. End-of-fle marker expected at the end of file.'); + } + + $this->_stringParser->offset--; + /** + * Go to end of cross-reference table offset + */ + while (Zend_Pdf_StringParser::isWhiteSpace( ord($this->_stringParser->data[$this->_stringParser->offset]) )&& + ($this->_stringParser->offset > 0)) { + $this->_stringParser->offset--; + } + /** + * Go to the start of cross-reference table offset + */ + while ( (!Zend_Pdf_StringParser::isWhiteSpace( ord($this->_stringParser->data[$this->_stringParser->offset]) ))&& + ($this->_stringParser->offset > 0)) { + $this->_stringParser->offset--; + } + /** + * Go to the end of 'startxref' keyword + */ + while (Zend_Pdf_StringParser::isWhiteSpace( ord($this->_stringParser->data[$this->_stringParser->offset]) )&& + ($this->_stringParser->offset > 0)) { + $this->_stringParser->offset--; + } + /** + * Go to the white space (eol marker) before 'startxref' keyword + */ + $this->_stringParser->offset -= 9; + + $nextLexeme = $this->_stringParser->readLexeme(); + if ($nextLexeme != 'startxref') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('Pdf file syntax error. \'startxref\' keyword expected. Offset - 0x%X.', $this->_stringParser->offset-strlen($nextLexeme))); + } + + $startXref = $this->_stringParser->readLexeme(); + if (!ctype_digit($startXref)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('Pdf file syntax error. Cross-reference table offset must contain only digits. Offset - 0x%X.', $this->_stringParser->offset-strlen($nextLexeme))); + } + + $this->_trailer = $this->_loadXRefTable($startXref); + $factory->setObjectCount($this->_trailer->Size->value); + } + + + /** + * Object destructor + */ + public function __destruct() + { + $this->_stringParser->cleanUp(); + } +} diff --git a/library/Zend/Pdf/RecursivelyIteratableObjectsContainer.php b/library/Zend/Pdf/RecursivelyIteratableObjectsContainer.php new file mode 100755 index 000000000..c3d9cd2b4 --- /dev/null +++ b/library/Zend/Pdf/RecursivelyIteratableObjectsContainer.php @@ -0,0 +1,45 @@ +_objects = $objects; } + + public function current() { return current($this->_objects); } + public function key() { return key($this->_objects); } + public function next() { return next($this->_objects); } + public function rewind() { return reset($this->_objects); } + public function valid() { return current($this->_objects) !== false; } + public function getChildren() { return current($this->_objects); } + public function hasChildren() { return count($this->_objects) > 0; } + + public function count() { return count($this->_objects); } +} diff --git a/library/Zend/Pdf/Resource.php b/library/Zend/Pdf/Resource.php new file mode 100755 index 000000000..f8184c2fd --- /dev/null +++ b/library/Zend/Pdf/Resource.php @@ -0,0 +1,165 @@ +_objectFactory = $resource->getFactory(); + $this->_resource = $resource; + + return; + } + + require_once 'Zend/Pdf/ElementFactory.php'; + + $this->_objectFactory = Zend_Pdf_ElementFactory::createFactory(1); + if ($resource instanceof Zend_Pdf_Element) { + $this->_resource = $this->_objectFactory->newObject($resource); + } else { + $this->_resource = $this->_objectFactory->newStreamObject($resource); + } + } + + /** + * Clone page, extract it and dependent objects from the current document, + * so it can be used within other docs. + */ + public function __clone() + { + /** @todo implementation*/ + +// $factory = Zend_Pdf_ElementFactory::createFactory(1); +// $processed = array(); +// +// // Clone dictionary object. +// // Do it explicitly to prevent sharing resource attributes between different +// // results of clone operation (other resources are still shared) +// $dictionary = new Zend_Pdf_Element_Dictionary(); +// foreach ($this->_pageDictionary->getKeys() as $key) { +// $dictionary->$key = $this->_pageDictionary->$key->makeClone($factory->getFactory(), +// $processed, +// Zend_Pdf_Element::CLONE_MODE_SKIP_PAGES); +// } +// +// $this->_pageDictionary = $factory->newObject($dictionary); +// $this->_objectFactory = $factory; +// $this->_attached = false; +// $this->_style = null; +// $this->_font = null; + } + + /** + * Clone resource, extract it and dependent objects from the current document, + * so it can be used within other docs. + * + * @internal + * @param Zend_Pdf_ElementFactory_Interface $factory + * @param array $processed + * @return Zend_Pdf_Page + */ + public function cloneResource($factory, &$processed) + { + /** @todo implementation*/ + +// // Clone dictionary object. +// // Do it explicitly to prevent sharing page attributes between different +// // results of clonePage() operation (other resources are still shared) +// $dictionary = new Zend_Pdf_Element_Dictionary(); +// foreach ($this->_pageDictionary->getKeys() as $key) { +// $dictionary->$key = $this->_pageDictionary->$key->makeClone($factory->getFactory(), +// $processed, +// Zend_Pdf_Element::CLONE_MODE_SKIP_PAGES); +// } +// +// $clonedPage = new Zend_Pdf_Page($factory->newObject($dictionary), $factory); +// $clonedPage->_attached = false; +// +// return $clonedPage; + } + + /** + * Get resource. + * Used to reference resource in an internal PDF data structures (resource dictionaries) + * + * @internal + * @return Zend_Pdf_Element_Object + */ + public function getResource() + { + return $this->_resource; + } + + /** + * Get factory. + * + * @internal + * @return Zend_Pdf_ElementFactory_Interface + */ + public function getFactory() + { + return $this->_objectFactory; + } +} diff --git a/library/Zend/Pdf/Resource/ContentStream.php b/library/Zend/Pdf/Resource/ContentStream.php new file mode 100755 index 000000000..61020fd5e --- /dev/null +++ b/library/Zend/Pdf/Resource/ContentStream.php @@ -0,0 +1,114 @@ +_bufferedContent .= $instructions; + return $this; + } + + /** + * Get current stream content + * + * @return string + */ + public function getInstructions() + { + $this->flush(); + return $this->_resource->value; + } + + /** + * Clear stream content. + * + * @return Zend_Pdf_Resource_ContentStream + */ + public function clear() + { + $this->_resource->value = ''; + $this->_bufferedContent = ''; + return $this; + } + + /** + * Flush buffered content + */ + public function flush() + { + $this->_resource->value .= $this->_bufferedContent; + $this->_bufferedContent = ''; + + return $this; + } +} diff --git a/library/Zend/Pdf/Resource/Extractor.php b/library/Zend/Pdf/Resource/Extractor.php new file mode 100755 index 000000000..15fbed7ae --- /dev/null +++ b/library/Zend/Pdf/Resource/Extractor.php @@ -0,0 +1,86 @@ +_factory = Zend_Pdf_ElementFactory::createFactory(1); + $this->_processed = array(); + } + + /** + * Clone page, extract it and dependent objects from the current document, + * so it can be used within other docs + * + * return Zend_Pdf_Page + */ + public function clonePage(Zend_Pdf_Page $page) + { + return $page->clonePage($this->_factory, $this->_processed); + } +} + diff --git a/library/Zend/Pdf/Resource/Font.php b/library/Zend/Pdf/Resource/Font.php new file mode 100755 index 000000000..a0827d7aa --- /dev/null +++ b/library/Zend/Pdf/Resource/Font.php @@ -0,0 +1,530 @@ +_resource->Type = new Zend_Pdf_Element_Name('Font'); + } + + + /* Object Magic Methods */ + + /** + * Returns the full name of the font in the encoding method of the current + * locale. Transliterates any characters that cannot be naturally + * represented in that character set. + * + * @return string + */ + public function __toString() + { + return $this->getFontName(Zend_Pdf_Font::NAME_FULL, '', '//TRANSLIT'); + } + + + /* Accessors */ + + /** + * Returns the type of font. + * + * @return integer One of the TYPE_ constants defined in + * {@link Zend_Pdf_Font}. + */ + public function getFontType() + { + return $this->_fontType; + } + + /** + * Returns the specified descriptive name for the font. + * + * The font name type is usually one of the following: + *
      + *
    • {@link Zend_Pdf_Font::NAME_FULL} + *
    • {@link Zend_Pdf_Font::NAME_FAMILY} + *
    • {@link Zend_Pdf_Font::NAME_PREFERRED_FAMILY} + *
    • {@link Zend_Pdf_Font::NAME_STYLE} + *
    • {@link Zend_Pdf_Font::NAME_PREFERRED_STYLE} + *
    • {@link Zend_Pdf_Font::NAME_DESCRIPTION} + *
    • {@link Zend_Pdf_Font::NAME_SAMPLE_TEXT} + *
    • {@link Zend_Pdf_Font::NAME_ID} + *
    • {@link Zend_Pdf_Font::NAME_VERSION} + *
    • {@link Zend_Pdf_Font::NAME_POSTSCRIPT} + *
    • {@link Zend_Pdf_Font::NAME_CID_NAME} + *
    • {@link Zend_Pdf_Font::NAME_DESIGNER} + *
    • {@link Zend_Pdf_Font::NAME_DESIGNER_URL} + *
    • {@link Zend_Pdf_Font::NAME_MANUFACTURER} + *
    • {@link Zend_Pdf_Font::NAME_VENDOR_URL} + *
    • {@link Zend_Pdf_Font::NAME_COPYRIGHT} + *
    • {@link Zend_Pdf_Font::NAME_TRADEMARK} + *
    • {@link Zend_Pdf_Font::NAME_LICENSE} + *
    • {@link Zend_Pdf_Font::NAME_LICENSE_URL} + *
    + * + * Note that not all names are available for all fonts. In addition, some + * fonts may contain additional names, whose indicies are in the range + * 256 to 32767 inclusive, which are used for certain font layout features. + * + * If the preferred language translation is not available, uses the first + * available translation for the name, which is usually English. + * + * If the requested name does not exist, returns null. + * + * All names are stored internally as Unicode strings, using UTF-16BE + * encoding. You may optionally supply a different resulting character set. + * + * @param integer $nameType Type of name requested. + * @param mixed $language Preferred language (string) or array of languages + * in preferred order. Use the ISO 639 standard 2-letter language codes. + * @param string $characterSet (optional) Desired resulting character set. + * You may use any character set supported by {@link iconv()}; + * @return string + */ + public function getFontName($nameType, $language, $characterSet = null) + { + if (! isset($this->_fontNames[$nameType])) { + return null; + } + $name = null; + if (is_array($language)) { + foreach ($language as $code) { + if (isset($this->_fontNames[$nameType][$code])) { + $name = $this->_fontNames[$nameType][$code]; + break; + } + } + } else { + if (isset($this->_fontNames[$nameType][$language])) { + $name = $this->_fontNames[$nameType][$language]; + } + } + /* If the preferred language could not be found, use whatever is first. + */ + if ($name === null) { + $names = $this->_fontNames[$nameType]; + $name = reset($names); + } + /* Convert the character set if requested. + */ + if (($characterSet !== null) && ($characterSet != 'UTF-16BE') && PHP_OS != 'AIX') { // AIX knows not this charset + $name = iconv('UTF-16BE', $characterSet, $name); + } + return $name; + } + + /** + * Returns whole set of font names. + * + * @return array + */ + public function getFontNames() + { + return $this->_fontNames; + } + + /** + * Returns true if font is bold. + * + * @return boolean + */ + public function isBold() + { + return $this->_isBold; + } + + /** + * Returns true if font is italic. + * + * @return boolean + */ + public function isItalic() + { + return $this->_isItalic; + } + + /** + * Returns true if font is monospace. + * + * @return boolean + */ + public function isMonospace() + { + return $this->_isMonospace; + } + + /** + * Returns the suggested position below the text baseline of the underline + * in glyph units. + * + * This value is usually negative. + * + * @return integer + */ + public function getUnderlinePosition() + { + return $this->_underlinePosition; + } + + /** + * Returns the suggested line thickness of the underline in glyph units. + * + * @return integer + */ + public function getUnderlineThickness() + { + return $this->_underlineThickness; + } + + /** + * Returns the suggested position above the text baseline of the + * strikethrough in glyph units. + * + * @return integer + */ + public function getStrikePosition() + { + return $this->_strikePosition; + } + + /** + * Returns the suggested line thickness of the strikethrough in glyph units. + * + * @return integer + */ + public function getStrikeThickness() + { + return $this->_strikeThickness; + } + + /** + * Returns the number of glyph units per em. + * + * Used to convert glyph space to user space. Frequently used in conjunction + * with {@link widthsForGlyphs()} to calculate the with of a run of text. + * + * @return integer + */ + public function getUnitsPerEm() + { + return $this->_unitsPerEm; + } + + /** + * Returns the typographic ascent in font glyph units. + * + * The typographic ascent is the distance from the font's baseline to the + * top of the text frame. It is frequently used to locate the initial + * baseline for a paragraph of text inside a given rectangle. + * + * @return integer + */ + public function getAscent() + { + return $this->_ascent; + } + + /** + * Returns the typographic descent in font glyph units. + * + * The typographic descent is the distance below the font's baseline to the + * bottom of the text frame. It is always negative. + * + * @return integer + */ + public function getDescent() + { + return $this->_descent; + } + + /** + * Returns the typographic line gap in font glyph units. + * + * The typographic line gap is the distance between the bottom of the text + * frame of one line to the top of the text frame of the next. It is + * typically combined with the typographical ascent and descent to determine + * the font's total line height (or leading). + * + * @return integer + */ + public function getLineGap() + { + return $this->_lineGap; + } + + /** + * Returns the suggested line height (or leading) in font glyph units. + * + * This value is determined by adding together the values of the typographic + * ascent, descent, and line gap. This value yields the suggested line + * spacing as determined by the font developer. + * + * It should be noted that this is only a guideline; layout engines will + * frequently modify this value to achieve special effects such as double- + * spacing. + * + * @return integer + */ + public function getLineHeight() + { + return $this->_ascent - $this->_descent + $this->_lineGap; + } + + + /* Information and Conversion Methods */ + + /** + * Returns an array of glyph numbers corresponding to the Unicode characters. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumberForCharacter()}. + * + * @param array $characterCodes Array of Unicode character codes (code points). + * @return array Array of glyph numbers. + */ + abstract public function glyphNumbersForCharacters($characterCodes); + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + abstract public function glyphNumberForCharacter($characterCode); + + /** + * Returns a number between 0 and 1 inclusive that indicates the percentage + * of characters in the string which are covered by glyphs in this font. + * + * Since no one font will contain glyphs for the entire Unicode character + * range, this method can be used to help locate a suitable font when the + * actual contents of the string are not known. + * + * Note that some fonts lie about the characters they support. Additionally, + * fonts don't usually contain glyphs for control characters such as tabs + * and line breaks, so it is rare that you will get back a full 1.0 score. + * The resulting value should be considered informational only. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source text. + * If omitted, uses 'current locale'. + * @return float + */ + abstract public function getCoveredPercentage($string, $charEncoding = ''); + + /** + * Returns the widths of the glyphs. + * + * The widths are expressed in the font's glyph space. You are responsible + * for converting to user space as necessary. See {@link unitsPerEm()}. + * + * See also {@link widthForGlyph()}. + * + * @param array $glyphNumbers Array of glyph numbers. + * @return array Array of glyph widths (integers). + * @throws Zend_Pdf_Exception + */ + abstract public function widthsForGlyphs($glyphNumbers); + + /** + * Returns the width of the glyph. + * + * Like {@link widthsForGlyphs()} but used for one glyph at a time. + * + * @param integer $glyphNumber + * @return integer + * @throws Zend_Pdf_Exception + */ + abstract public function widthForGlyph($glyphNumber); + + /** + * Convert string to the font encoding. + * + * The method is used to prepare string for text drawing operators + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + */ + abstract public function encodeString($string, $charEncoding); + + /** + * Convert string from the font encoding. + * + * The method is used to convert strings retrieved from existing content streams + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + */ + abstract public function decodeString($string, $charEncoding); + + + + /**** Internal Methods ****/ + + + /** + * If the font's glyph space is not 1000 units per em, converts the value. + * + * @internal + * @param integer $value + * @return integer + */ + public function toEmSpace($value) + { + if ($this->_unitsPerEm == 1000) { + return $value; + } + return ceil(($value / $this->_unitsPerEm) * 1000); // always round up + } +} + diff --git a/library/Zend/Pdf/Resource/Font/CidFont.php b/library/Zend/Pdf/Resource/Font/CidFont.php new file mode 100755 index 000000000..a4771f897 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/CidFont.php @@ -0,0 +1,492 @@ +parse(); + + + /* Object properties */ + + $this->_fontNames = $fontParser->names; + + $this->_isBold = $fontParser->isBold; + $this->_isItalic = $fontParser->isItalic; + $this->_isMonospaced = $fontParser->isMonospaced; + + $this->_underlinePosition = $fontParser->underlinePosition; + $this->_underlineThickness = $fontParser->underlineThickness; + $this->_strikePosition = $fontParser->strikePosition; + $this->_strikeThickness = $fontParser->strikeThickness; + + $this->_unitsPerEm = $fontParser->unitsPerEm; + + $this->_ascent = $fontParser->ascent; + $this->_descent = $fontParser->descent; + $this->_lineGap = $fontParser->lineGap; + + + $this->_cmap = $fontParser->cmap; + + + /* Resource dictionary */ + + $baseFont = $this->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8'); + $this->_resource->BaseFont = new Zend_Pdf_Element_Name($baseFont); + + + /** + * Prepare widths array. + */ + /* Constract characters widths array using font CMap and glyphs widths array */ + $glyphWidths = $fontParser->glyphWidths; + $charGlyphs = $this->_cmap->getCoveredCharactersGlyphs(); + $charWidths = array(); + foreach ($charGlyphs as $charCode => $glyph) { + if(isset($glyphWidths[$glyph]) && !is_null($glyphWidths[$glyph])) { + $charWidths[$charCode] = $glyphWidths[$glyph]; + } + } + $this->_charWidths = $charWidths; + $this->_missingCharWidth = $glyphWidths[0]; + + /* Width array optimization. Step1: extract default value */ + $widthFrequencies = array_count_values($charWidths); + $defaultWidth = null; + $defaultWidthFrequency = -1; + foreach ($widthFrequencies as $width => $frequency) { + if ($frequency > $defaultWidthFrequency) { + $defaultWidth = $width; + $defaultWidthFrequency = $frequency; + } + } + + // Store default value in the font dictionary + $this->_resource->DW = new Zend_Pdf_Element_Numeric($this->toEmSpace($defaultWidth)); + + // Remove characters which corresponds to default width from the widths array + $defWidthChars = array_keys($charWidths, $defaultWidth); + foreach ($defWidthChars as $charCode) { + unset($charWidths[$charCode]); + } + + // Order cheracter widths aray by character codes + ksort($charWidths, SORT_NUMERIC); + + /* Width array optimization. Step2: Compact character codes sequences */ + $lastCharCode = -1; + $widthsSequences = array(); + foreach ($charWidths as $charCode => $width) { + if ($lastCharCode == -1) { + $charCodesSequense = array(); + $sequenceStartCode = $charCode; + } else if ($charCode != $lastCharCode + 1) { + // New chracters sequence detected + $widthsSequences[$sequenceStartCode] = $charCodesSequense; + $charCodesSequense = array(); + $sequenceStartCode = $charCode; + } + $charCodesSequense[] = $width; + $lastCharCode = $charCode; + } + // Save last sequence, if widths array is not empty (it may happens for monospaced fonts) + if (count($charWidths) != 0) { + $widthsSequences[$sequenceStartCode] = $charCodesSequense; + } + + $pdfCharsWidths = array(); + foreach ($widthsSequences as $startCode => $widthsSequence) { + /* Width array optimization. Step3: Compact widths sequences */ + $pdfWidths = array(); + $lastWidth = -1; + $widthsInSequence = 0; + foreach ($widthsSequence as $width) { + if ($lastWidth != $width) { + // New width is detected + if ($widthsInSequence != 0) { + // Previous width value was a part of the widths sequence. Save it as 'c_1st c_last w'. + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode + $widthsInSequence - 1); // Last character code + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($lastWidth)); // Width + + // Reset widths sequence + $startCode = $startCode + $widthsInSequence; + $widthsInSequence = 0; + } + + // Collect new width + $pdfWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($width)); + + $lastWidth = $width; + } else { + // Width is equal to previous + if (count($pdfWidths) != 0) { + // We already have some widths collected + // So, we've just detected new widths sequence + + // Remove last element from widths list, since it's a part of widths sequence + array_pop($pdfWidths); + + // and write the rest if it's not empty + if (count($pdfWidths) != 0) { + // Save it as 'c_1st [w1 w2 ... wn]'. + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code + $pdfCharsWidths[] = new Zend_Pdf_Element_Array($pdfWidths); // Widths array + + // Reset widths collection + $startCode += count($pdfWidths); + $pdfWidths = array(); + } + + $widthsInSequence = 2; + } else { + // Continue widths sequence + $widthsInSequence++; + } + } + } + + // Check if we have widths collection or widths sequence to wite it down + if (count($pdfWidths) != 0) { + // We have some widths collected + // Save it as 'c_1st [w1 w2 ... wn]'. + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code + $pdfCharsWidths[] = new Zend_Pdf_Element_Array($pdfWidths); // Widths array + } else if ($widthsInSequence != 0){ + // We have widths sequence + // Save it as 'c_1st c_last w'. + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode + $widthsInSequence - 1); // Last character code + $pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($lastWidth)); // Width + } + } + + /* Create the Zend_Pdf_Element_Array object and add it to the font's + * object factory and resource dictionary. + */ + $widthsArrayElement = new Zend_Pdf_Element_Array($pdfCharsWidths); + $widthsObject = $this->_objectFactory->newObject($widthsArrayElement); + $this->_resource->W = $widthsObject; + + + /* CIDSystemInfo dictionary */ + $cidSystemInfo = new Zend_Pdf_Element_Dictionary(); + $cidSystemInfo->Registry = new Zend_Pdf_Element_String('Adobe'); + $cidSystemInfo->Ordering = new Zend_Pdf_Element_String('UCS'); + $cidSystemInfo->Supplement = new Zend_Pdf_Element_Numeric(0); + $cidSystemInfoObject = $this->_objectFactory->newObject($cidSystemInfo); + $this->_resource->CIDSystemInfo = $cidSystemInfoObject; + } + + + + /** + * Returns an array of glyph numbers corresponding to the Unicode characters. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumberForCharacter()}. + * + * @param array $characterCodes Array of Unicode character codes (code points). + * @return array Array of glyph numbers. + */ + public function glyphNumbersForCharacters($characterCodes) + { + /** + * CIDFont object is not actually a font. It does not have an Encoding entry, + * it cannot be listed in the Font subdictionary of a resource dictionary, and + * it cannot be used as the operand of the Tf operator. + * + * Throw an exception. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators'); + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + /** + * CIDFont object is not actually a font. It does not have an Encoding entry, + * it cannot be listed in the Font subdictionary of a resource dictionary, and + * it cannot be used as the operand of the Tf operator. + * + * Throw an exception. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators'); + } + + + /** + * Returns a number between 0 and 1 inclusive that indicates the percentage + * of characters in the string which are covered by glyphs in this font. + * + * Since no one font will contain glyphs for the entire Unicode character + * range, this method can be used to help locate a suitable font when the + * actual contents of the string are not known. + * + * Note that some fonts lie about the characters they support. Additionally, + * fonts don't usually contain glyphs for control characters such as tabs + * and line breaks, so it is rare that you will get back a full 1.0 score. + * The resulting value should be considered informational only. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source text. + * If omitted, uses 'current locale'. + * @return float + */ + public function getCoveredPercentage($string, $charEncoding = '') + { + /* Convert the string to UTF-16BE encoding so we can match the string's + * character codes to those found in the cmap. + */ + if ($charEncoding != 'UTF-16BE') { + $string = iconv($charEncoding, 'UTF-16BE', $string); + } + + $charCount = iconv_strlen($string, 'UTF-16BE'); + if ($charCount == 0) { + return 0; + } + + /* Calculate the score by doing a lookup for each character. + */ + $score = 0; + $maxIndex = strlen($string); + for ($i = 0; $i < $maxIndex; $i++) { + /** + * @todo Properly handle characters encoded as surrogate pairs. + */ + $charCode = (ord($string[$i]) << 8) | ord($string[++$i]); + /* This could probably be optimized a bit with a binary search... + */ + if (isset($this->_charWidths[$charCode])) { + $score++; + } + } + return $score / $charCount; + } + + /** + * Returns the widths of the Chars. + * + * The widths are expressed in the font's glyph space. You are responsible + * for converting to user space as necessary. See {@link unitsPerEm()}. + * + * See also {@link widthForChar()}. + * + * @param array &$glyphNumbers Array of glyph numbers. + * @return array Array of glyph widths (integers). + */ + public function widthsForChars($charCodes) + { + $widths = array(); + foreach ($charCodes as $key => $charCode) { + if (!isset($this->_charWidths[$charCode])) { + $widths[$key] = $this->_missingCharWidth; + } else { + $widths[$key] = $this->_charWidths[$charCode]; + } + } + return $widths; + } + + /** + * Returns the width of the character. + * + * Like {@link widthsForChars()} but used for one char at a time. + * + * @param integer $charCode + * @return integer + */ + public function widthForChar($charCode) + { + if (!isset($this->_charWidths[$charCode])) { + return $this->_missingCharWidth; + } + return $this->_charWidths[$charCode]; + } + + /** + * Returns the widths of the glyphs. + * + * @param array &$glyphNumbers Array of glyph numbers. + * @return array Array of glyph widths (integers). + * @throws Zend_Pdf_Exception + */ + public function widthsForGlyphs($glyphNumbers) + { + /** + * CIDFont object is not actually a font. It does not have an Encoding entry, + * it cannot be listed in the Font subdictionary of a resource dictionary, and + * it cannot be used as the operand of the Tf operator. + * + * Throw an exception. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators'); + } + + /** + * Returns the width of the glyph. + * + * Like {@link widthsForGlyphs()} but used for one glyph at a time. + * + * @param integer $glyphNumber + * @return integer + * @throws Zend_Pdf_Exception + */ + public function widthForGlyph($glyphNumber) + { + /** + * CIDFont object is not actually a font. It does not have an Encoding entry, + * it cannot be listed in the Font subdictionary of a resource dictionary, and + * it cannot be used as the operand of the Tf operator. + * + * Throw an exception. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators'); + } + + /** + * Convert string to the font encoding. + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + * @throws Zend_Pdf_Exception + * */ + public function encodeString($string, $charEncoding) + { + /** + * CIDFont object is not actually a font. It does not have an Encoding entry, + * it cannot be listed in the Font subdictionary of a resource dictionary, and + * it cannot be used as the operand of the Tf operator. + * + * Throw an exception. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators'); + } + + /** + * Convert string from the font encoding. + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + * @throws Zend_Pdf_Exception + */ + public function decodeString($string, $charEncoding) + { + /** + * CIDFont object is not actually a font. It does not have an Encoding entry, + * it cannot be listed in the Font subdictionary of a resource dictionary, and + * it cannot be used as the operand of the Tf operator. + * + * Throw an exception. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/CidFont/TrueType.php b/library/Zend/Pdf/Resource/Font/CidFont/TrueType.php new file mode 100755 index 000000000..a82bca53b --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/CidFont/TrueType.php @@ -0,0 +1,88 @@ +_fontType = Zend_Pdf_Font::TYPE_CIDFONT_TYPE_2; + + $this->_resource->Subtype = new Zend_Pdf_Element_Name('CIDFontType2'); + + $fontDescriptor = Zend_Pdf_Resource_Font_FontDescriptor::factory($this, $fontParser, $embeddingOptions); + $this->_resource->FontDescriptor = $this->_objectFactory->newObject($fontDescriptor); + + /* Prepare CIDToGIDMap */ + // Initialize 128K string of null characters (65536 2 byte integers) + $cidToGidMapData = str_repeat("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 8192); + // Fill the index + $charGlyphs = $this->_cmap->getCoveredCharactersGlyphs(); + foreach ($charGlyphs as $charCode => $glyph) { + $cidToGidMapData[$charCode*2 ] = chr($glyph >> 8); + $cidToGidMapData[$charCode*2 + 1] = chr($glyph & 0xFF); + } + // Store CIDToGIDMap within compressed stream object + $cidToGidMap = $this->_objectFactory->newStreamObject($cidToGidMapData); + $cidToGidMap->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode'); + $this->_resource->CIDToGIDMap = $cidToGidMap; + } + +} diff --git a/library/Zend/Pdf/Resource/Font/Extracted.php b/library/Zend/Pdf/Resource/Font/Extracted.php new file mode 100755 index 000000000..88de60434 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Extracted.php @@ -0,0 +1,274 @@ +_objectFactory = $fontDictionary->getFactory(); + $this->_resource = $fontDictionary; + + if ($fontDictionary->Encoding !== null) { + $this->_encoding = $fontDictionary->Encoding->value; + } + + switch ($fontDictionary->Subtype->value) { + case 'Type0': + // Composite type 0 font + if (count($fontDictionary->DescendantFonts->items) != 1) { + // Multiple descendant fonts are not supported + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::TYPE_NOT_SUPPORTED); + } + + $fontDictionaryIterator = $fontDictionary->DescendantFonts->items->getIterator(); + $fontDictionaryIterator->rewind(); + $descendantFont = $fontDictionaryIterator->current(); + $fontDescriptor = $descendantFont->FontDescriptor; + break; + + case 'Type1': + if ($fontDictionary->FontDescriptor === null) { + // That's one of the standard fonts + $standardFont = Zend_Pdf_Font::fontWithName($fontDictionary->BaseFont->value); + + $this->_fontNames = $standardFont->getFontNames(); + $this->_isBold = $standardFont->isBold(); + $this->_isItalic = $standardFont->isItalic(); + $this->_isMonospace = $standardFont->isMonospace(); + $this->_underlinePosition = $standardFont->getUnderlinePosition(); + $this->_underlineThickness = $standardFont->getUnderlineThickness(); + $this->_strikePosition = $standardFont->getStrikePosition(); + $this->_strikeThickness = $standardFont->getStrikeThickness(); + $this->_unitsPerEm = $standardFont->getUnitsPerEm(); + $this->_ascent = $standardFont->getAscent(); + $this->_descent = $standardFont->getDescent(); + $this->_lineGap = $standardFont->getLineGap(); + + return; + } + + $fontDescriptor = $fontDictionary->FontDescriptor; + break; + + case 'TrueType': + $fontDescriptor = $fontDictionary->FontDescriptor; + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::TYPE_NOT_SUPPORTED); + } + + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = iconv('UTF-8', 'UTF-16BE', $fontDictionary->BaseFont->value); + + $this->_isBold = false; // this property is actually not used anywhere + $this->_isItalic = ( ($fontDescriptor->Flags->value & (1 << 6)) != 0 ); // Bit-7 is set + $this->_isMonospace = ( ($fontDescriptor->Flags->value & (1 << 0)) != 0 ); // Bit-1 is set + $this->_underlinePosition = null; // Can't be extracted + $this->_underlineThickness = null; // Can't be extracted + $this->_strikePosition = null; // Can't be extracted + $this->_strikeThickness = null; // Can't be extracted + $this->_unitsPerEm = null; // Can't be extracted + $this->_ascent = $fontDescriptor->Ascent->value; + $this->_descent = $fontDescriptor->Descent->value; + $this->_lineGap = null; // Can't be extracted + } + + /** + * Returns an array of glyph numbers corresponding to the Unicode characters. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumberForCharacter()}. + * + * @param array $characterCodes Array of Unicode character codes (code points). + * @return array Array of glyph numbers. + */ + public function glyphNumbersForCharacters($characterCodes) + { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED); + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED); + } + + /** + * Returns a number between 0 and 1 inclusive that indicates the percentage + * of characters in the string which are covered by glyphs in this font. + * + * Since no one font will contain glyphs for the entire Unicode character + * range, this method can be used to help locate a suitable font when the + * actual contents of the string are not known. + * + * Note that some fonts lie about the characters they support. Additionally, + * fonts don't usually contain glyphs for control characters such as tabs + * and line breaks, so it is rare that you will get back a full 1.0 score. + * The resulting value should be considered informational only. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source text. + * If omitted, uses 'current locale'. + * @return float + */ + public function getCoveredPercentage($string, $charEncoding = '') + { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED); + } + + /** + * Returns the widths of the glyphs. + * + * The widths are expressed in the font's glyph space. You are responsible + * for converting to user space as necessary. See {@link unitsPerEm()}. + * + * See also {@link widthForGlyph()}. + * + * @param array $glyphNumbers Array of glyph numbers. + * @return array Array of glyph widths (integers). + * @throws Zend_Pdf_Exception + */ + public function widthsForGlyphs($glyphNumbers) + { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED); + } + + /** + * Returns the width of the glyph. + * + * Like {@link widthsForGlyphs()} but used for one glyph at a time. + * + * @param integer $glyphNumber + * @return integer + * @throws Zend_Pdf_Exception + */ + public function widthForGlyph($glyphNumber) + { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED); + } + + /** + * Convert string to the font encoding. + * + * The method is used to prepare string for text drawing operators + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + */ + public function encodeString($string, $charEncoding) + { + if ($this->_encoding == 'Identity-H') { + return iconv($charEncoding, 'UTF-16BE', $string); + } + + if ($this->_encoding == 'WinAnsiEncoding') { + return iconv($charEncoding, 'CP1252//IGNORE', $string); + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::ENCODING_NOT_SUPPORTED); + } + + /** + * Convert string from the font encoding. + * + * The method is used to convert strings retrieved from existing content streams + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + */ + public function decodeString($string, $charEncoding) + { + if ($this->_encoding == 'Identity-H') { + return iconv('UTF-16BE', $charEncoding, $string); + } + + if ($this->_encoding == 'WinAnsiEncoding') { + return iconv('CP1252', $charEncoding, $string); + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(self::ENCODING_NOT_SUPPORTED); + } +} diff --git a/library/Zend/Pdf/Resource/Font/FontDescriptor.php b/library/Zend/Pdf/Resource/Font/FontDescriptor.php new file mode 100755 index 000000000..bef833637 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/FontDescriptor.php @@ -0,0 +1,204 @@ +Type = new Zend_Pdf_Element_Name('FontDescriptor'); + $fontDescriptor->FontName = new Zend_Pdf_Element_Name($font->getResource()->BaseFont->value); + + /* The font flags value is a bitfield that describes the stylistic + * attributes of the font. We will set as many of the bits as can be + * determined from the font parser. + */ + $flags = 0; + if ($fontParser->isMonospaced) { // bit 1: FixedPitch + $flags |= 1 << 0; + } + if ($fontParser->isSerifFont) { // bit 2: Serif + $flags |= 1 << 1; + } + if (! $fontParser->isAdobeLatinSubset) { // bit 3: Symbolic + $flags |= 1 << 2; + } + if ($fontParser->isScriptFont) { // bit 4: Script + $flags |= 1 << 3; + } + if ($fontParser->isAdobeLatinSubset) { // bit 6: Nonsymbolic + $flags |= 1 << 5; + } + if ($fontParser->isItalic) { // bit 7: Italic + $flags |= 1 << 6; + } + // bits 17-19: AllCap, SmallCap, ForceBold; not available + $fontDescriptor->Flags = new Zend_Pdf_Element_Numeric($flags); + + $fontBBox = array(new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->xMin)), + new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->yMin)), + new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->xMax)), + new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->yMax))); + $fontDescriptor->FontBBox = new Zend_Pdf_Element_Array($fontBBox); + + $fontDescriptor->ItalicAngle = new Zend_Pdf_Element_Numeric($fontParser->italicAngle); + + $fontDescriptor->Ascent = new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->ascent)); + $fontDescriptor->Descent = new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->descent)); + + $fontDescriptor->CapHeight = new Zend_Pdf_Element_Numeric($fontParser->capitalHeight); + /** + * The vertical stem width is not yet extracted from the OpenType font + * file. For now, record zero which is interpreted as 'unknown'. + * @todo Calculate value for StemV. + */ + $fontDescriptor->StemV = new Zend_Pdf_Element_Numeric(0); + + $fontDescriptor->MissingWidth = new Zend_Pdf_Element_Numeric($fontParser->glyphWidths[0]); + + /* Set up font embedding. This is where the actual font program itself + * is embedded within the PDF document. + * + * Note that it is not requried that fonts be embedded within the PDF + * document to use them. If the recipient of the PDF has the font + * installed on their computer, they will see the correct fonts in the + * document. If they don't, the PDF viewer will substitute or synthesize + * a replacement. + * + * There are several guidelines for font embedding: + * + * First, the developer might specifically request not to embed the font. + */ + if (!($embeddingOptions & Zend_Pdf_Font::EMBED_DONT_EMBED)) { + + /* Second, the font author may have set copyright bits that prohibit + * the font program from being embedded. Yes this is controversial, + * but it's the rules: + * http://partners.adobe.com/public/developer/en/acrobat/sdk/FontPolicies.pdf + * + * To keep the developer in the loop, and to prevent surprising bug + * reports of "your PDF doesn't have the right fonts," throw an + * exception if the font cannot be embedded. + */ + if (! $fontParser->isEmbeddable) { + /* This exception may be suppressed if the developer decides that + * it's not a big deal that the font program can't be embedded. + */ + if (!($embeddingOptions & Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION)) { + $message = 'This font cannot be embedded in the PDF document. If you would like to use ' + . 'it anyway, you must pass Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION ' + . 'in the $options parameter of the font constructor.'; + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception($message, Zend_Pdf_Exception::FONT_CANT_BE_EMBEDDED); + } + + } else { + /* Otherwise, the default behavior is to embed all custom fonts. + */ + /* This section will change soon to a stream object data + * provider model so that we don't have to keep a copy of the + * entire font in memory. + * + * We also cannot build font subsetting until the data provider + * model is in place. + */ + $fontFile = $fontParser->getDataSource()->readAllBytes(); + $fontFileObject = $font->getFactory()->newStreamObject($fontFile); + $fontFileObject->dictionary->Length1 = new Zend_Pdf_Element_Numeric(strlen($fontFile)); + if (!($embeddingOptions & Zend_Pdf_Font::EMBED_DONT_COMPRESS)) { + /* Compress the font file using Flate. This generally cuts file + * sizes by about half! + */ + $fontFileObject->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode'); + } + if ($fontParser instanceof Zend_Pdf_FileParser_Font_OpenType_Type1 /* not implemented now */) { + $fontDescriptor->FontFile = $fontFileObject; + } else if ($fontParser instanceof Zend_Pdf_FileParser_Font_OpenType_TrueType) { + $fontDescriptor->FontFile2 = $fontFileObject; + } else { + $fontDescriptor->FontFile3 = $fontFileObject; + } + } + } + + return $fontDescriptor; + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple.php b/library/Zend/Pdf/Resource/Font/Simple.php new file mode 100755 index 000000000..029a566cc --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple.php @@ -0,0 +1,283 @@ +_resource->Encoding = new Zend_Pdf_Element_Name('WinAnsiEncoding'); + } + + /** + * Returns an array of glyph numbers corresponding to the Unicode characters. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumberForCharacter()}. + * + * @param array $characterCodes Array of Unicode character codes (code points). + * @return array Array of glyph numbers. + */ + public function glyphNumbersForCharacters($characterCodes) + { + return $this->_cmap->glyphNumbersForCharacters($characterCodes); + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * If a particular character doesn't exist in this font, the special 'missing + * character glyph' will be substituted. + * + * See also {@link glyphNumbersForCharacters()} which is optimized for bulk + * operations. + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + return $this->_cmap->glyphNumberForCharacter($characterCode); + } + + /** + * Returns a number between 0 and 1 inclusive that indicates the percentage + * of characters in the string which are covered by glyphs in this font. + * + * Since no one font will contain glyphs for the entire Unicode character + * range, this method can be used to help locate a suitable font when the + * actual contents of the string are not known. + * + * Note that some fonts lie about the characters they support. Additionally, + * fonts don't usually contain glyphs for control characters such as tabs + * and line breaks, so it is rare that you will get back a full 1.0 score. + * The resulting value should be considered informational only. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source text. + * If omitted, uses 'current locale'. + * @return float + */ + public function getCoveredPercentage($string, $charEncoding = '') + { + /* Convert the string to UTF-16BE encoding so we can match the string's + * character codes to those found in the cmap. + */ + if ($charEncoding != 'UTF-16BE') { + if (PHP_OS != 'AIX') { // AIX doesnt know what UTF-16BE is + $string = iconv($charEncoding, 'UTF-16BE', $string); + } + } + + $charCount = (PHP_OS != 'AIX') ? iconv_strlen($string, 'UTF-16BE') : strlen($string); + if ($charCount == 0) { + return 0; + } + + /* Fetch the covered character code list from the font's cmap. + */ + $coveredCharacters = $this->_cmap->getCoveredCharacters(); + + /* Calculate the score by doing a lookup for each character. + */ + $score = 0; + $maxIndex = strlen($string); + for ($i = 0; $i < $maxIndex; $i++) { + /** + * @todo Properly handle characters encoded as surrogate pairs. + */ + $charCode = (ord($string[$i]) << 8) | ord($string[++$i]); + /* This could probably be optimized a bit with a binary search... + */ + if (in_array($charCode, $coveredCharacters)) { + $score++; + } + } + return $score / $charCount; + } + + /** + * Returns the widths of the glyphs. + * + * The widths are expressed in the font's glyph space. You are responsible + * for converting to user space as necessary. See {@link unitsPerEm()}. + * + * See also {@link widthForGlyph()}. + * + * @param array &$glyphNumbers Array of glyph numbers. + * @return array Array of glyph widths (integers). + */ + public function widthsForGlyphs($glyphNumbers) + { + $widths = array(); + foreach ($glyphNumbers as $key => $glyphNumber) { + if (!isset($this->_glyphWidths[$glyphNumber])) { + $widths[$key] = $this->_missingGlyphWidth; + } else { + $widths[$key] = $this->_glyphWidths[$glyphNumber]; + } + } + return $widths; + } + + /** + * Returns the width of the glyph. + * + * Like {@link widthsForGlyphs()} but used for one glyph at a time. + * + * @param integer $glyphNumber + * @return integer + */ + public function widthForGlyph($glyphNumber) + { + if (!isset($this->_glyphWidths[$glyphNumber])) { + return $this->_missingGlyphWidth; + } + return $this->_glyphWidths[$glyphNumber]; + } + + /** + * Convert string to the font encoding. + * + * The method is used to prepare string for text drawing operators + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + */ + public function encodeString($string, $charEncoding) + { + if (PHP_OS == 'AIX') { + return $string; // returning here b/c AIX doesnt know what CP1252 is + } + + return iconv($charEncoding, 'CP1252//IGNORE', $string); + } + + /** + * Convert string from the font encoding. + * + * The method is used to convert strings retrieved from existing content streams + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + */ + public function decodeString($string, $charEncoding) + { + return iconv('CP1252', $charEncoding, $string); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Parsed.php b/library/Zend/Pdf/Resource/Font/Simple/Parsed.php new file mode 100755 index 000000000..5716d315a --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Parsed.php @@ -0,0 +1,105 @@ +parse(); + + /* Object properties */ + + $this->_fontNames = $fontParser->names; + + $this->_isBold = $fontParser->isBold; + $this->_isItalic = $fontParser->isItalic; + $this->_isMonospaced = $fontParser->isMonospaced; + + $this->_underlinePosition = $fontParser->underlinePosition; + $this->_underlineThickness = $fontParser->underlineThickness; + $this->_strikePosition = $fontParser->strikePosition; + $this->_strikeThickness = $fontParser->strikeThickness; + + $this->_unitsPerEm = $fontParser->unitsPerEm; + + $this->_ascent = $fontParser->ascent; + $this->_descent = $fontParser->descent; + $this->_lineGap = $fontParser->lineGap; + + $this->_glyphWidths = $fontParser->glyphWidths; + $this->_missingGlyphWidth = $this->_glyphWidths[0]; + + + $this->_cmap = $fontParser->cmap; + + + /* Resource dictionary */ + + $baseFont = $this->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8'); + $this->_resource->BaseFont = new Zend_Pdf_Element_Name($baseFont); + + $this->_resource->FirstChar = new Zend_Pdf_Element_Numeric(0); + $this->_resource->LastChar = new Zend_Pdf_Element_Numeric(count($this->_glyphWidths) - 1); + + /* Now convert the scalar glyph widths to Zend_Pdf_Element_Numeric objects. + */ + $pdfWidths = array(); + foreach ($this->_glyphWidths as $width) { + $pdfWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($width)); + } + /* Create the Zend_Pdf_Element_Array object and add it to the font's + * object factory and resource dictionary. + */ + $widthsArrayElement = new Zend_Pdf_Element_Array($pdfWidths); + $widthsObject = $this->_objectFactory->newObject($widthsArrayElement); + $this->_resource->Widths = $widthsObject; + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php b/library/Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php new file mode 100755 index 000000000..73045e94a --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php @@ -0,0 +1,67 @@ +_fontType = Zend_Pdf_Font::TYPE_TRUETYPE; + + $this->_resource->Subtype = new Zend_Pdf_Element_Name('TrueType'); + + $fontDescriptor = Zend_Pdf_Resource_Font_FontDescriptor::factory($this, $fontParser, $embeddingOptions); + $this->_resource->FontDescriptor = $this->_objectFactory->newObject($fontDescriptor); + } + +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard.php b/library/Zend/Pdf/Resource/Font/Simple/Standard.php new file mode 100755 index 000000000..118370c88 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard.php @@ -0,0 +1,82 @@ + + *
  • Courier - {@link Zend_Pdf_Resource_Font_Simple_Standard_Courier} + *
  • Courier-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierBold} + *
  • Courier-Oblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierOblique} + *
  • Courier-BoldOblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierBoldOblique} + *
  • Helvetica - {@link Zend_Pdf_Resource_Font_Simple_Standard_Helvetica} + *
  • Helvetica-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBold} + *
  • Helvetica-Oblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaOblique} + *
  • Helvetica-BoldOblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBoldOblique} + *
  • Symbol - {@link Zend_Pdf_Resource_Font_Simple_Standard_Symbol} + *
  • Times - {@link Zend_Pdf_Resource_Font_Simple_Standard_Times} + *
  • Times-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesBold} + *
  • Times-Italic - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesItalic} + *
  • Times-BoldItalic - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesBoldItalic} + *
  • ZapfDingbats - {@link Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats} + * + * + * Font objects should be normally be obtained from the factory methods + * {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}. + * + * @package Zend_Pdf + * @subpackage Fonts + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Pdf_Resource_Font_Simple_Standard extends Zend_Pdf_Resource_Font_Simple +{ + /**** Public Interface ****/ + + + /* Object Lifecycle */ + + /** + * Object constructor + */ + public function __construct() + { + $this->_fontType = Zend_Pdf_Font::TYPE_STANDARD; + + parent::__construct(); + $this->_resource->Subtype = new Zend_Pdf_Element_Name('Type1'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/Courier.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/Courier.php new file mode 100755 index 000000000..7bbf517d2 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/Courier.php @@ -0,0 +1,295 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x32\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00" + . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00" + . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00" + . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00" + . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00" + . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00" + . "\x64\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x20\x00" + . "\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72"; + + $this->_isBold = false; + $this->_isItalic = false; + $this->_isMonospaced = true; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 629; + $this->_descent = -157; + $this->_lineGap = 414; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258, + 0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258, + 0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258, + 0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258, + 0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258, + 0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258, + 0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258, + 0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258, + 0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258, + 0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258, + 0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258, + 0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258, + 0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258, + 0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258, + 0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258, + 0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258, + 0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258, + 0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258, + 0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258, + 0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258, + 0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258, + 0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258, + 0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258, + 0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258, + 0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258, + 0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258, + 0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258, + 0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258, + 0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258, + 0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258, + 0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258, + 0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258, + 0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258, + 0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258, + 0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258, + 0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258, + 0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258, + 0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258, + 0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258, + 0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258, + 0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258, + 0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258, + 0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258, + 0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258, + 0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258, + 0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258, + 0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258, + 0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258, + 0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258, + 0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258, + 0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258, + 0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258, + 0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258, + 0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258, + 0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258, + 0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258, + 0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258, + 0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258, + 0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258, + 0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258, + 0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258, + 0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258, + 0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258, + 0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258, + 0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258, + 0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258, + 0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258, + 0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258, + 0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258, + 0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258, + 0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258, + 0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258, + 0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258, + 0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258, + 0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258, + 0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258, + 0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258, + 0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258, + 0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierBold.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierBold.php new file mode 100755 index 000000000..99788bb41 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierBold.php @@ -0,0 +1,296 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00" + . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00" + . "\x76\x00\x65\x00\x64\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x34\x00\x38"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00" + . "\x42\x00\x6f\x00\x6c\x00\x64\x00\x20\x00\x42\x00\x6f\x00\x6c\x00" + . "\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00" + . "\x42\x00\x6f\x00\x6c\x00\x64"; + + $this->_isBold = true; + $this->_isItalic = false; + $this->_isMonospaced = true; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 629; + $this->_descent = -157; + $this->_lineGap = 414; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258, + 0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258, + 0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258, + 0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258, + 0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258, + 0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258, + 0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258, + 0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258, + 0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258, + 0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258, + 0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258, + 0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258, + 0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258, + 0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258, + 0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258, + 0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258, + 0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258, + 0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258, + 0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258, + 0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258, + 0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258, + 0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258, + 0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258, + 0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258, + 0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258, + 0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258, + 0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258, + 0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258, + 0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258, + 0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258, + 0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258, + 0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258, + 0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258, + 0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258, + 0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258, + 0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258, + 0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258, + 0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258, + 0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258, + 0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258, + 0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258, + 0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258, + 0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258, + 0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258, + 0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258, + 0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258, + 0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258, + 0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258, + 0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258, + 0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258, + 0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258, + 0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258, + 0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258, + 0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258, + 0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258, + 0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258, + 0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258, + 0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258, + 0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258, + 0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258, + 0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258, + 0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258, + 0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258, + 0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258, + 0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258, + 0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258, + 0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258, + 0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258, + 0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258, + 0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258, + 0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258, + 0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258, + 0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258, + 0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258, + 0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258, + 0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258, + 0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258, + 0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258, + 0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier-Bold'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierBoldOblique.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierBoldOblique.php new file mode 100755 index 000000000..2f3527dd3 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierBoldOblique.php @@ -0,0 +1,297 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00" + . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00" + . "\x76\x00\x65\x00\x64\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x34\x00\x39"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00" + . "\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00\x6c\x00\x69\x00" + . "\x71\x00\x75\x00\x65\x00\x20\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00" + . "\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00\x6c\x00\x69\x00" + . "\x71\x00\x75\x00\x65"; + + $this->_isBold = true; + $this->_isItalic = true; + $this->_isMonospaced = true; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 629; + $this->_descent = -157; + $this->_lineGap = 414; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258, + 0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258, + 0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258, + 0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258, + 0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258, + 0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258, + 0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258, + 0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258, + 0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258, + 0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258, + 0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258, + 0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258, + 0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258, + 0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258, + 0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258, + 0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258, + 0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258, + 0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258, + 0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258, + 0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258, + 0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258, + 0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258, + 0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258, + 0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258, + 0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258, + 0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258, + 0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258, + 0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258, + 0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258, + 0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258, + 0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258, + 0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258, + 0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258, + 0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258, + 0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258, + 0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258, + 0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258, + 0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258, + 0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258, + 0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258, + 0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258, + 0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258, + 0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258, + 0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258, + 0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258, + 0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258, + 0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258, + 0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258, + 0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258, + 0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258, + 0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258, + 0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258, + 0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258, + 0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258, + 0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258, + 0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258, + 0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258, + 0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258, + 0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258, + 0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258, + 0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258, + 0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258, + 0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258, + 0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258, + 0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258, + 0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258, + 0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258, + 0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258, + 0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258, + 0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258, + 0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258, + 0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258, + 0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258, + 0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258, + 0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258, + 0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258, + 0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258, + 0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258, + 0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier-BoldOblique'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierOblique.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierOblique.php new file mode 100755 index 000000000..2f1766aaa --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/CourierOblique.php @@ -0,0 +1,297 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x32\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00" + . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00" + . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00" + . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00" + . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00" + . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00" + . "\x64\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x31"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00" + . "\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x00\x20\x00" + . "\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00" + . "\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65"; + + $this->_isBold = false; + $this->_isItalic = true; + $this->_isMonospaced = true; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 629; + $this->_descent = -157; + $this->_lineGap = 414; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258, + 0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258, + 0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258, + 0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258, + 0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258, + 0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258, + 0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258, + 0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258, + 0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258, + 0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258, + 0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258, + 0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258, + 0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258, + 0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258, + 0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258, + 0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258, + 0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258, + 0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258, + 0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258, + 0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258, + 0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258, + 0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258, + 0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258, + 0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258, + 0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258, + 0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258, + 0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258, + 0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258, + 0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258, + 0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258, + 0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258, + 0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258, + 0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258, + 0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258, + 0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258, + 0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258, + 0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258, + 0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258, + 0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258, + 0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258, + 0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258, + 0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258, + 0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258, + 0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258, + 0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258, + 0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258, + 0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258, + 0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258, + 0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258, + 0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258, + 0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258, + 0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258, + 0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258, + 0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258, + 0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258, + 0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258, + 0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258, + 0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258, + 0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258, + 0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258, + 0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258, + 0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258, + 0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258, + 0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258, + 0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258, + 0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258, + 0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258, + 0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258, + 0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258, + 0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258, + 0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258, + 0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258, + 0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258, + 0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258, + 0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258, + 0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258, + 0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258, + 0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258, + 0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Courier-Oblique'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/Helvetica.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/Helvetica.php new file mode 100755 index 000000000..c843bbf0c --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/Helvetica.php @@ -0,0 +1,305 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00" + . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00" + . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00" + . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00" + . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00" + . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00" + . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00" + . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00" + . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00" + . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00" + . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00" + . "\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x34"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x20\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61"; + + $this->_isBold = false; + $this->_isItalic = false; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 718; + $this->_descent = -207; + $this->_lineGap = 275; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0116, 0x02 => 0x0116, 0x03 => 0x0163, + 0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x029b, + 0x08 => 0xde, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185, + 0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116, + 0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c, + 0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c, + 0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x0116, + 0x1c => 0x0116, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248, + 0x20 => 0x022c, 0x21 => 0x03f7, 0x22 => 0x029b, 0x23 => 0x029b, + 0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263, + 0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x01f4, + 0x2c => 0x029b, 0x2d => 0x022c, 0x2e => 0x0341, 0x2f => 0x02d2, + 0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2, + 0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b, + 0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263, + 0x3c => 0x0116, 0x3d => 0x0116, 0x3e => 0x0116, 0x3f => 0x01d5, + 0x40 => 0x022c, 0x41 => 0xde, 0x42 => 0x022c, 0x43 => 0x022c, + 0x44 => 0x01f4, 0x45 => 0x022c, 0x46 => 0x022c, 0x47 => 0x0116, + 0x48 => 0x022c, 0x49 => 0x022c, 0x4a => 0xde, 0x4b => 0xde, + 0x4c => 0x01f4, 0x4d => 0xde, 0x4e => 0x0341, 0x4f => 0x022c, + 0x50 => 0x022c, 0x51 => 0x022c, 0x52 => 0x022c, 0x53 => 0x014d, + 0x54 => 0x01f4, 0x55 => 0x0116, 0x56 => 0x022c, 0x57 => 0x01f4, + 0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01f4, + 0x5c => 0x014e, 0x5d => 0x0104, 0x5e => 0x014e, 0x5f => 0x0248, + 0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7, + 0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c, + 0x68 => 0xbf, 0x69 => 0x014d, 0x6a => 0x022c, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x01f4, 0x6e => 0x01f4, 0x6f => 0x022c, + 0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x0219, + 0x74 => 0x015e, 0x75 => 0xde, 0x76 => 0x014d, 0x77 => 0x014d, + 0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172, + 0x8c => 0x022c, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d, + 0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0xde, 0x93 => 0x0263, + 0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c, + 0x98 => 0x022c, 0x99 => 0x022c, 0x9a => 0x022c, 0x9b => 0x029b, + 0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x029b, 0x9f => 0x022c, + 0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x01f4, 0xa3 => 0x022c, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2, + 0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x01f4, 0xaf => 0x022c, + 0xb0 => 0x02d2, 0xb1 => 0xde, 0xb2 => 0x022c, 0xb3 => 0x0263, + 0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x01f4, + 0xb8 => 0x01f4, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x02d2, + 0xbc => 0x030a, 0xbd => 0x022c, 0xbe => 0x022c, 0xbf => 0x029b, + 0xc0 => 0x014d, 0xc1 => 0x01f4, 0xc2 => 0x0263, 0xc3 => 0x029b, + 0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x0283, + 0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x014d, 0xcb => 0x030a, + 0xcc => 0x029b, 0xcd => 0x029b, 0xce => 0x0248, 0xcf => 0x022c, + 0xd0 => 0x0263, 0xd1 => 0x01dc, 0xd2 => 0x01f4, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c, + 0xd8 => 0x01f4, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2, + 0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0104, 0xdf => 0x02e1, + 0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b, + 0xe4 => 0x014d, 0xe5 => 0x022c, 0xe6 => 0x0263, 0xe7 => 0x0263, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0xde, + 0xec => 0x013d, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x029b, + 0xf0 => 0x029b, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0xde, + 0xf4 => 0x030a, 0xf5 => 0x022c, 0xf6 => 0x022c, 0xf7 => 0x01f4, + 0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x022c, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x022c, + 0x0100 => 0x0116, 0x0101 => 0x022c, 0x0102 => 0x029b, 0x0103 => 0x022c, + 0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x012b, 0x0107 => 0x029b, + 0x0108 => 0x022c, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116, + 0x010c => 0x0116, 0x010d => 0x022c, 0x010e => 0x0342, 0x010f => 0x0225, + 0x0110 => 0x022c, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b, + 0x0114 => 0x022c, 0x0115 => 0x022c, 0x0116 => 0x0342, 0x0117 => 0x029b, + 0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x022c, + 0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x01c5, 0x011f => 0x02d2, + 0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x022c, 0x0123 => 0x02d2, + 0x0124 => 0x022c, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b, + 0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116, + 0x012c => 0x01f4, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x022c, + 0x0130 => 0x0116, 0x0131 => 0x0248, 0x0132 => 0x022c, 0x0133 => 0x022c, + 0x0134 => 0x0225, 0x0135 => 0x022c, 0x0136 => 0x022c, 0x0137 => 0x01f4, + 0x0138 => 0x022c, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBold.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBold.php new file mode 100755 index 000000000..032d048ea --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBold.php @@ -0,0 +1,305 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00" + . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00" + . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00" + . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00" + . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00" + . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00" + . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00" + . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00" + . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00" + . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00" + . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00" + . "\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x32"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x20\x00\x42\x00" + . "\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64"; + + $this->_isBold = true; + $this->_isItalic = false; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 718; + $this->_descent = -207; + $this->_lineGap = 275; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0116, 0x02 => 0x014d, 0x03 => 0x01da, + 0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x02d2, + 0x08 => 0x0116, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185, + 0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116, + 0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c, + 0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c, + 0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x014d, + 0x1c => 0x014d, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248, + 0x20 => 0x0263, 0x21 => 0x03cf, 0x22 => 0x02d2, 0x23 => 0x02d2, + 0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263, + 0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x022c, + 0x2c => 0x02d2, 0x2d => 0x0263, 0x2e => 0x0341, 0x2f => 0x02d2, + 0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2, + 0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b, + 0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263, + 0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x0248, + 0x40 => 0x022c, 0x41 => 0x0116, 0x42 => 0x022c, 0x43 => 0x0263, + 0x44 => 0x022c, 0x45 => 0x0263, 0x46 => 0x022c, 0x47 => 0x014d, + 0x48 => 0x0263, 0x49 => 0x0263, 0x4a => 0x0116, 0x4b => 0x0116, + 0x4c => 0x022c, 0x4d => 0x0116, 0x4e => 0x0379, 0x4f => 0x0263, + 0x50 => 0x0263, 0x51 => 0x0263, 0x52 => 0x0263, 0x53 => 0x0185, + 0x54 => 0x022c, 0x55 => 0x014d, 0x56 => 0x0263, 0x57 => 0x022c, + 0x58 => 0x030a, 0x59 => 0x022c, 0x5a => 0x022c, 0x5b => 0x01f4, + 0x5c => 0x0185, 0x5d => 0x0118, 0x5e => 0x0185, 0x5f => 0x0248, + 0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7, + 0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c, + 0x68 => 0xee, 0x69 => 0x01f4, 0x6a => 0x022c, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x0263, 0x6e => 0x0263, 0x6f => 0x022c, + 0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x022c, + 0x74 => 0x015e, 0x75 => 0x0116, 0x76 => 0x01f4, 0x77 => 0x01f4, + 0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172, + 0x8c => 0x0263, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d, + 0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x0263, + 0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c, + 0x98 => 0x022c, 0x99 => 0x0263, 0x9a => 0x022c, 0x9b => 0x029b, + 0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x02d2, 0x9f => 0x022c, + 0xa0 => 0x02d2, 0xa1 => 0x022c, 0xa2 => 0x022c, 0xa3 => 0x022c, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2, + 0xa8 => 0x0263, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x022c, 0xaf => 0x022c, + 0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x022c, 0xb3 => 0x0263, + 0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x022c, + 0xb8 => 0x022c, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x02d2, + 0xbc => 0x030a, 0xbd => 0x0263, 0xbe => 0x022c, 0xbf => 0x02d2, + 0xc0 => 0x0185, 0xc1 => 0x022c, 0xc2 => 0x0263, 0xc3 => 0x029b, + 0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x02e7, + 0xc8 => 0x02d2, 0xc9 => 0x0263, 0xca => 0x014d, 0xcb => 0x030a, + 0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x0248, 0xcf => 0x0263, + 0xd0 => 0x0263, 0xd1 => 0x01ee, 0xd2 => 0x022c, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c, + 0xd8 => 0x022c, 0xd9 => 0x0263, 0xda => 0x0263, 0xdb => 0x02d2, + 0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0118, 0xdf => 0x02e1, + 0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b, + 0xe4 => 0x0185, 0xe5 => 0x0263, 0xe6 => 0x0263, 0xe7 => 0x0263, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0x0116, + 0xec => 0x0185, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x02d2, + 0xf0 => 0x02d2, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0x0116, + 0xf4 => 0x030a, 0xf5 => 0x0263, 0xf6 => 0x022c, 0xf7 => 0x022c, + 0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x0263, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x0263, + 0x0100 => 0x0116, 0x0101 => 0x0263, 0x0102 => 0x029b, 0x0103 => 0x0263, + 0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x0190, 0x0107 => 0x02d2, + 0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116, + 0x010c => 0x0116, 0x010d => 0x0263, 0x010e => 0x0342, 0x010f => 0x0225, + 0x0110 => 0x0263, 0x0111 => 0x0263, 0x0112 => 0x02d2, 0x0113 => 0x029b, + 0x0114 => 0x022c, 0x0115 => 0x0263, 0x0116 => 0x0342, 0x0117 => 0x029b, + 0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x0263, + 0x011c => 0x02d2, 0x011d => 0x0263, 0x011e => 0x0225, 0x011f => 0x02d2, + 0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x0263, 0x0123 => 0x02d2, + 0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2, + 0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116, + 0x012c => 0x022c, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x0263, + 0x0130 => 0x014d, 0x0131 => 0x0248, 0x0132 => 0x0263, 0x0133 => 0x0263, + 0x0134 => 0x0225, 0x0135 => 0x0263, 0x0136 => 0x0263, 0x0137 => 0x01f4, + 0x0138 => 0x0263, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica-Bold'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.php new file mode 100755 index 000000000..0ad846db4 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaBoldOblique.php @@ -0,0 +1,308 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00" + . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00" + . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00" + . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00" + . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00" + . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00" + . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00" + . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00" + . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00" + . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00" + . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00" + . "\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x33"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00" + . "\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x00\x20\x00\x42\x00\x6f\x00" + . "\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00" + . "\x6c\x00\x69\x00\x71\x00\x75\x00\x65"; + + $this->_isBold = true; + $this->_isItalic = true; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 718; + $this->_descent = -207; + $this->_lineGap = 275; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0116, 0x02 => 0x014d, 0x03 => 0x01da, + 0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x02d2, + 0x08 => 0x0116, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185, + 0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116, + 0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c, + 0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c, + 0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x014d, + 0x1c => 0x014d, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248, + 0x20 => 0x0263, 0x21 => 0x03cf, 0x22 => 0x02d2, 0x23 => 0x02d2, + 0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263, + 0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x022c, + 0x2c => 0x02d2, 0x2d => 0x0263, 0x2e => 0x0341, 0x2f => 0x02d2, + 0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2, + 0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b, + 0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263, + 0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x0248, + 0x40 => 0x022c, 0x41 => 0x0116, 0x42 => 0x022c, 0x43 => 0x0263, + 0x44 => 0x022c, 0x45 => 0x0263, 0x46 => 0x022c, 0x47 => 0x014d, + 0x48 => 0x0263, 0x49 => 0x0263, 0x4a => 0x0116, 0x4b => 0x0116, + 0x4c => 0x022c, 0x4d => 0x0116, 0x4e => 0x0379, 0x4f => 0x0263, + 0x50 => 0x0263, 0x51 => 0x0263, 0x52 => 0x0263, 0x53 => 0x0185, + 0x54 => 0x022c, 0x55 => 0x014d, 0x56 => 0x0263, 0x57 => 0x022c, + 0x58 => 0x030a, 0x59 => 0x022c, 0x5a => 0x022c, 0x5b => 0x01f4, + 0x5c => 0x0185, 0x5d => 0x0118, 0x5e => 0x0185, 0x5f => 0x0248, + 0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7, + 0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c, + 0x68 => 0xee, 0x69 => 0x01f4, 0x6a => 0x022c, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x0263, 0x6e => 0x0263, 0x6f => 0x022c, + 0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x022c, + 0x74 => 0x015e, 0x75 => 0x0116, 0x76 => 0x01f4, 0x77 => 0x01f4, + 0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172, + 0x8c => 0x0263, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d, + 0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x0263, + 0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c, + 0x98 => 0x022c, 0x99 => 0x0263, 0x9a => 0x022c, 0x9b => 0x029b, + 0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x02d2, 0x9f => 0x022c, + 0xa0 => 0x02d2, 0xa1 => 0x022c, 0xa2 => 0x022c, 0xa3 => 0x022c, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2, + 0xa8 => 0x0263, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x022c, 0xaf => 0x022c, + 0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x022c, 0xb3 => 0x0263, + 0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x022c, + 0xb8 => 0x022c, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x02d2, + 0xbc => 0x030a, 0xbd => 0x0263, 0xbe => 0x022c, 0xbf => 0x02d2, + 0xc0 => 0x0185, 0xc1 => 0x022c, 0xc2 => 0x0263, 0xc3 => 0x029b, + 0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x02e7, + 0xc8 => 0x02d2, 0xc9 => 0x0263, 0xca => 0x014d, 0xcb => 0x030a, + 0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x0248, 0xcf => 0x0263, + 0xd0 => 0x0263, 0xd1 => 0x01ee, 0xd2 => 0x022c, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c, + 0xd8 => 0x022c, 0xd9 => 0x0263, 0xda => 0x0263, 0xdb => 0x02d2, + 0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0118, 0xdf => 0x02e1, + 0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b, + 0xe4 => 0x0185, 0xe5 => 0x0263, 0xe6 => 0x0263, 0xe7 => 0x0263, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0x0116, + 0xec => 0x0185, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x02d2, + 0xf0 => 0x02d2, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0x0116, + 0xf4 => 0x030a, 0xf5 => 0x0263, 0xf6 => 0x022c, 0xf7 => 0x022c, + 0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x0263, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x0263, + 0x0100 => 0x0116, 0x0101 => 0x0263, 0x0102 => 0x029b, 0x0103 => 0x0263, + 0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x0190, 0x0107 => 0x02d2, + 0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116, + 0x010c => 0x0116, 0x010d => 0x0263, 0x010e => 0x0342, 0x010f => 0x0225, + 0x0110 => 0x0263, 0x0111 => 0x0263, 0x0112 => 0x02d2, 0x0113 => 0x029b, + 0x0114 => 0x022c, 0x0115 => 0x0263, 0x0116 => 0x0342, 0x0117 => 0x029b, + 0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x0263, + 0x011c => 0x02d2, 0x011d => 0x0263, 0x011e => 0x0225, 0x011f => 0x02d2, + 0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x0263, 0x0123 => 0x02d2, + 0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2, + 0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116, + 0x012c => 0x022c, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x0263, + 0x0130 => 0x014d, 0x0131 => 0x0248, 0x0132 => 0x0263, 0x0133 => 0x0263, + 0x0134 => 0x0225, 0x0135 => 0x0263, 0x0136 => 0x0263, 0x0137 => 0x01f4, + 0x0138 => 0x0263, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica-BoldOblique'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaOblique.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaOblique.php new file mode 100755 index 000000000..add19f95f --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/HelveticaOblique.php @@ -0,0 +1,307 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00" + . "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00" + . "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00" + . "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00" + . "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00" + . "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00" + . "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00" + . "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00" + . "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00" + . "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00" + . "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00" + . "\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x35\x00\x35"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x2d\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00" + . "\x65\x00\x20\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00" + . "\x61\x00\x2d\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00" + . "\x65"; + + $this->_isBold = false; + $this->_isItalic = true; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 718; + $this->_descent = -207; + $this->_lineGap = 275; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0116, 0x02 => 0x0116, 0x03 => 0x0163, + 0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x029b, + 0x08 => 0xde, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185, + 0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116, + 0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c, + 0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c, + 0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x0116, + 0x1c => 0x0116, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248, + 0x20 => 0x022c, 0x21 => 0x03f7, 0x22 => 0x029b, 0x23 => 0x029b, + 0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263, + 0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x01f4, + 0x2c => 0x029b, 0x2d => 0x022c, 0x2e => 0x0341, 0x2f => 0x02d2, + 0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2, + 0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b, + 0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263, + 0x3c => 0x0116, 0x3d => 0x0116, 0x3e => 0x0116, 0x3f => 0x01d5, + 0x40 => 0x022c, 0x41 => 0xde, 0x42 => 0x022c, 0x43 => 0x022c, + 0x44 => 0x01f4, 0x45 => 0x022c, 0x46 => 0x022c, 0x47 => 0x0116, + 0x48 => 0x022c, 0x49 => 0x022c, 0x4a => 0xde, 0x4b => 0xde, + 0x4c => 0x01f4, 0x4d => 0xde, 0x4e => 0x0341, 0x4f => 0x022c, + 0x50 => 0x022c, 0x51 => 0x022c, 0x52 => 0x022c, 0x53 => 0x014d, + 0x54 => 0x01f4, 0x55 => 0x0116, 0x56 => 0x022c, 0x57 => 0x01f4, + 0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01f4, + 0x5c => 0x014e, 0x5d => 0x0104, 0x5e => 0x014e, 0x5f => 0x0248, + 0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7, + 0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c, + 0x68 => 0xbf, 0x69 => 0x014d, 0x6a => 0x022c, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x01f4, 0x6e => 0x01f4, 0x6f => 0x022c, + 0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x0219, + 0x74 => 0x015e, 0x75 => 0xde, 0x76 => 0x014d, 0x77 => 0x014d, + 0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172, + 0x8c => 0x022c, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d, + 0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0xde, 0x93 => 0x0263, + 0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c, + 0x98 => 0x022c, 0x99 => 0x022c, 0x9a => 0x022c, 0x9b => 0x029b, + 0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x029b, 0x9f => 0x022c, + 0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x01f4, 0xa3 => 0x022c, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2, + 0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x01f4, 0xaf => 0x022c, + 0xb0 => 0x02d2, 0xb1 => 0xde, 0xb2 => 0x022c, 0xb3 => 0x0263, + 0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x01f4, + 0xb8 => 0x01f4, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x02d2, + 0xbc => 0x030a, 0xbd => 0x022c, 0xbe => 0x022c, 0xbf => 0x029b, + 0xc0 => 0x014d, 0xc1 => 0x01f4, 0xc2 => 0x0263, 0xc3 => 0x029b, + 0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x0283, + 0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x014d, 0xcb => 0x030a, + 0xcc => 0x029b, 0xcd => 0x029b, 0xce => 0x0248, 0xcf => 0x022c, + 0xd0 => 0x0263, 0xd1 => 0x01dc, 0xd2 => 0x01f4, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c, + 0xd8 => 0x01f4, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2, + 0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0104, 0xdf => 0x02e1, + 0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b, + 0xe4 => 0x014d, 0xe5 => 0x022c, 0xe6 => 0x0263, 0xe7 => 0x0263, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0xde, + 0xec => 0x013d, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x029b, + 0xf0 => 0x029b, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0xde, + 0xf4 => 0x030a, 0xf5 => 0x022c, 0xf6 => 0x022c, 0xf7 => 0x01f4, + 0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x022c, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x022c, + 0x0100 => 0x0116, 0x0101 => 0x022c, 0x0102 => 0x029b, 0x0103 => 0x022c, + 0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x012b, 0x0107 => 0x029b, + 0x0108 => 0x022c, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116, + 0x010c => 0x0116, 0x010d => 0x022c, 0x010e => 0x0342, 0x010f => 0x0225, + 0x0110 => 0x022c, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b, + 0x0114 => 0x022c, 0x0115 => 0x022c, 0x0116 => 0x0342, 0x0117 => 0x029b, + 0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x022c, + 0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x01c5, 0x011f => 0x02d2, + 0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x022c, 0x0123 => 0x02d2, + 0x0124 => 0x022c, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b, + 0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116, + 0x012c => 0x01f4, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x022c, + 0x0130 => 0x0116, 0x0131 => 0x0248, 0x0132 => 0x022c, 0x0133 => 0x022c, + 0x0134 => 0x0225, 0x0135 => 0x022c, 0x0136 => 0x022c, 0x0137 => 0x01f4, + 0x0138 => 0x022c, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Helvetica-Oblique'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/Symbol.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/Symbol.php new file mode 100755 index 000000000..b5df771c1 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/Symbol.php @@ -0,0 +1,465 @@ + "\x20", 0x21 => "\x21", 0x2200 => "\x22", 0x23 => "\x23", + 0x2203 => "\x24", 0x25 => "\x25", 0x26 => "\x26", 0x220b => "\x27", + 0x28 => "\x28", 0x29 => "\x29", 0x2217 => "\x2a", 0x2b => "\x2b", + 0x2c => "\x2c", 0x2212 => "\x2d", 0x2e => "\x2e", 0x2f => "\x2f", + 0x30 => "\x30", 0x31 => "\x31", 0x32 => "\x32", 0x33 => "\x33", + 0x34 => "\x34", 0x35 => "\x35", 0x36 => "\x36", 0x37 => "\x37", + 0x38 => "\x38", 0x39 => "\x39", 0x3a => "\x3a", 0x3b => "\x3b", + 0x3c => "\x3c", 0x3d => "\x3d", 0x3e => "\x3e", 0x3f => "\x3f", + 0x2245 => "\x40", 0x0391 => "\x41", 0x0392 => "\x42", 0x03a7 => "\x43", + 0x2206 => "\x44", 0x0395 => "\x45", 0x03a6 => "\x46", 0x0393 => "\x47", + 0x0397 => "\x48", 0x0399 => "\x49", 0x03d1 => "\x4a", 0x039a => "\x4b", + 0x039b => "\x4c", 0x039c => "\x4d", 0x039d => "\x4e", 0x039f => "\x4f", + 0x03a0 => "\x50", 0x0398 => "\x51", 0x03a1 => "\x52", 0x03a3 => "\x53", + 0x03a4 => "\x54", 0x03a5 => "\x55", 0x03c2 => "\x56", 0x2126 => "\x57", + 0x039e => "\x58", 0x03a8 => "\x59", 0x0396 => "\x5a", 0x5b => "\x5b", + 0x2234 => "\x5c", 0x5d => "\x5d", 0x22a5 => "\x5e", 0x5f => "\x5f", + 0xf8e5 => "\x60", 0x03b1 => "\x61", 0x03b2 => "\x62", 0x03c7 => "\x63", + 0x03b4 => "\x64", 0x03b5 => "\x65", 0x03c6 => "\x66", 0x03b3 => "\x67", + 0x03b7 => "\x68", 0x03b9 => "\x69", 0x03d5 => "\x6a", 0x03ba => "\x6b", + 0x03bb => "\x6c", 0xb5 => "\x6d", 0x03bd => "\x6e", 0x03bf => "\x6f", + 0x03c0 => "\x70", 0x03b8 => "\x71", 0x03c1 => "\x72", 0x03c3 => "\x73", + 0x03c4 => "\x74", 0x03c5 => "\x75", 0x03d6 => "\x76", 0x03c9 => "\x77", + 0x03be => "\x78", 0x03c8 => "\x79", 0x03b6 => "\x7a", 0x7b => "\x7b", + 0x7c => "\x7c", 0x7d => "\x7d", 0x223c => "\x7e", 0x20ac => "\xa0", + 0x03d2 => "\xa1", 0x2032 => "\xa2", 0x2264 => "\xa3", 0x2044 => "\xa4", + 0x221e => "\xa5", 0x0192 => "\xa6", 0x2663 => "\xa7", 0x2666 => "\xa8", + 0x2665 => "\xa9", 0x2660 => "\xaa", 0x2194 => "\xab", 0x2190 => "\xac", + 0x2191 => "\xad", 0x2192 => "\xae", 0x2193 => "\xaf", 0xb0 => "\xb0", + 0xb1 => "\xb1", 0x2033 => "\xb2", 0x2265 => "\xb3", 0xd7 => "\xb4", + 0x221d => "\xb5", 0x2202 => "\xb6", 0x2022 => "\xb7", 0xf7 => "\xb8", + 0x2260 => "\xb9", 0x2261 => "\xba", 0x2248 => "\xbb", 0x2026 => "\xbc", + 0xf8e6 => "\xbd", 0xf8e7 => "\xbe", 0x21b5 => "\xbf", 0x2135 => "\xc0", + 0x2111 => "\xc1", 0x211c => "\xc2", 0x2118 => "\xc3", 0x2297 => "\xc4", + 0x2295 => "\xc5", 0x2205 => "\xc6", 0x2229 => "\xc7", 0x222a => "\xc8", + 0x2283 => "\xc9", 0x2287 => "\xca", 0x2284 => "\xcb", 0x2282 => "\xcc", + 0x2286 => "\xcd", 0x2208 => "\xce", 0x2209 => "\xcf", 0x2220 => "\xd0", + 0x2207 => "\xd1", 0xf6da => "\xd2", 0xf6d9 => "\xd3", 0xf6db => "\xd4", + 0x220f => "\xd5", 0x221a => "\xd6", 0x22c5 => "\xd7", 0xac => "\xd8", + 0x2227 => "\xd9", 0x2228 => "\xda", 0x21d4 => "\xdb", 0x21d0 => "\xdc", + 0x21d1 => "\xdd", 0x21d2 => "\xde", 0x21d3 => "\xdf", 0x25ca => "\xe0", + 0x2329 => "\xe1", 0xf8e8 => "\xe2", 0xf8e9 => "\xe3", 0xf8ea => "\xe4", + 0x2211 => "\xe5", 0xf8eb => "\xe6", 0xf8ec => "\xe7", 0xf8ed => "\xe8", + 0xf8ee => "\xe9", 0xf8ef => "\xea", 0xf8f0 => "\xeb", 0xf8f1 => "\xec", + 0xf8f2 => "\xed", 0xf8f3 => "\xee", 0xf8f4 => "\xef", 0x232a => "\xf1", + 0x222b => "\xf2", 0x2320 => "\xf3", 0xf8f5 => "\xf4", 0x2321 => "\xf5", + 0xf8f6 => "\xf6", 0xf8f7 => "\xf7", 0xf8f8 => "\xf8", 0xf8f9 => "\xf9", + 0xf8fa => "\xfa", 0xf8fb => "\xfb", 0xf8fc => "\xfc", 0xf8fd => "\xfd", + 0xf8fe => "\xfe"); + + /** + * Array for conversion from special font encoding to local encoding. + * See {@link decodeString()}. + * @var array + */ + protected $_fromFontEncoding = array( + 0x20 => "\x00\x20", 0x21 => "\x00\x21", 0x22 => "\x22\x00", + 0x23 => "\x00\x23", 0x24 => "\x22\x03", 0x25 => "\x00\x25", + 0x26 => "\x00\x26", 0x27 => "\x22\x0b", 0x28 => "\x00\x28", + 0x29 => "\x00\x29", 0x2a => "\x22\x17", 0x2b => "\x00\x2b", + 0x2c => "\x00\x2c", 0x2d => "\x22\x12", 0x2e => "\x00\x2e", + 0x2f => "\x00\x2f", 0x30 => "\x00\x30", 0x31 => "\x00\x31", + 0x32 => "\x00\x32", 0x33 => "\x00\x33", 0x34 => "\x00\x34", + 0x35 => "\x00\x35", 0x36 => "\x00\x36", 0x37 => "\x00\x37", + 0x38 => "\x00\x38", 0x39 => "\x00\x39", 0x3a => "\x00\x3a", + 0x3b => "\x00\x3b", 0x3c => "\x00\x3c", 0x3d => "\x00\x3d", + 0x3e => "\x00\x3e", 0x3f => "\x00\x3f", 0x40 => "\x22\x45", + 0x41 => "\x03\x91", 0x42 => "\x03\x92", 0x43 => "\x03\xa7", + 0x44 => "\x22\x06", 0x45 => "\x03\x95", 0x46 => "\x03\xa6", + 0x47 => "\x03\x93", 0x48 => "\x03\x97", 0x49 => "\x03\x99", + 0x4a => "\x03\xd1", 0x4b => "\x03\x9a", 0x4c => "\x03\x9b", + 0x4d => "\x03\x9c", 0x4e => "\x03\x9d", 0x4f => "\x03\x9f", + 0x50 => "\x03\xa0", 0x51 => "\x03\x98", 0x52 => "\x03\xa1", + 0x53 => "\x03\xa3", 0x54 => "\x03\xa4", 0x55 => "\x03\xa5", + 0x56 => "\x03\xc2", 0x57 => "\x21\x26", 0x58 => "\x03\x9e", + 0x59 => "\x03\xa8", 0x5a => "\x03\x96", 0x5b => "\x00\x5b", + 0x5c => "\x22\x34", 0x5d => "\x00\x5d", 0x5e => "\x22\xa5", + 0x5f => "\x00\x5f", 0x60 => "\xf8\xe5", 0x61 => "\x03\xb1", + 0x62 => "\x03\xb2", 0x63 => "\x03\xc7", 0x64 => "\x03\xb4", + 0x65 => "\x03\xb5", 0x66 => "\x03\xc6", 0x67 => "\x03\xb3", + 0x68 => "\x03\xb7", 0x69 => "\x03\xb9", 0x6a => "\x03\xd5", + 0x6b => "\x03\xba", 0x6c => "\x03\xbb", 0x6d => "\x00\xb5", + 0x6e => "\x03\xbd", 0x6f => "\x03\xbf", 0x70 => "\x03\xc0", + 0x71 => "\x03\xb8", 0x72 => "\x03\xc1", 0x73 => "\x03\xc3", + 0x74 => "\x03\xc4", 0x75 => "\x03\xc5", 0x76 => "\x03\xd6", + 0x77 => "\x03\xc9", 0x78 => "\x03\xbe", 0x79 => "\x03\xc8", + 0x7a => "\x03\xb6", 0x7b => "\x00\x7b", 0x7c => "\x00\x7c", + 0x7d => "\x00\x7d", 0x7e => "\x22\x3c", 0xa0 => "\x20\xac", + 0xa1 => "\x03\xd2", 0xa2 => "\x20\x32", 0xa3 => "\x22\x64", + 0xa4 => "\x20\x44", 0xa5 => "\x22\x1e", 0xa6 => "\x01\x92", + 0xa7 => "\x26\x63", 0xa8 => "\x26\x66", 0xa9 => "\x26\x65", + 0xaa => "\x26\x60", 0xab => "\x21\x94", 0xac => "\x21\x90", + 0xad => "\x21\x91", 0xae => "\x21\x92", 0xaf => "\x21\x93", + 0xb0 => "\x00\xb0", 0xb1 => "\x00\xb1", 0xb2 => "\x20\x33", + 0xb3 => "\x22\x65", 0xb4 => "\x00\xd7", 0xb5 => "\x22\x1d", + 0xb6 => "\x22\x02", 0xb7 => "\x20\x22", 0xb8 => "\x00\xf7", + 0xb9 => "\x22\x60", 0xba => "\x22\x61", 0xbb => "\x22\x48", + 0xbc => "\x20\x26", 0xbd => "\xf8\xe6", 0xbe => "\xf8\xe7", + 0xbf => "\x21\xb5", 0xc0 => "\x21\x35", 0xc1 => "\x21\x11", + 0xc2 => "\x21\x1c", 0xc3 => "\x21\x18", 0xc4 => "\x22\x97", + 0xc5 => "\x22\x95", 0xc6 => "\x22\x05", 0xc7 => "\x22\x29", + 0xc8 => "\x22\x2a", 0xc9 => "\x22\x83", 0xca => "\x22\x87", + 0xcb => "\x22\x84", 0xcc => "\x22\x82", 0xcd => "\x22\x86", + 0xce => "\x22\x08", 0xcf => "\x22\x09", 0xd0 => "\x22\x20", + 0xd1 => "\x22\x07", 0xd2 => "\xf6\xda", 0xd3 => "\xf6\xd9", + 0xd4 => "\xf6\xdb", 0xd5 => "\x22\x0f", 0xd6 => "\x22\x1a", + 0xd7 => "\x22\xc5", 0xd8 => "\x00\xac", 0xd9 => "\x22\x27", + 0xda => "\x22\x28", 0xdb => "\x21\xd4", 0xdc => "\x21\xd0", + 0xdd => "\x21\xd1", 0xde => "\x21\xd2", 0xdf => "\x21\xd3", + 0xe0 => "\x25\xca", 0xe1 => "\x23\x29", 0xe2 => "\xf8\xe8", + 0xe3 => "\xf8\xe9", 0xe4 => "\xf8\xea", 0xe5 => "\x22\x11", + 0xe6 => "\xf8\xeb", 0xe7 => "\xf8\xec", 0xe8 => "\xf8\xed", + 0xe9 => "\xf8\xee", 0xea => "\xf8\xef", 0xeb => "\xf8\xf0", + 0xec => "\xf8\xf1", 0xed => "\xf8\xf2", 0xee => "\xf8\xf3", + 0xef => "\xf8\xf4", 0xf1 => "\x23\x2a", 0xf2 => "\x22\x2b", + 0xf3 => "\x23\x20", 0xf4 => "\xf8\xf5", 0xf5 => "\x23\x21", + 0xf6 => "\xf8\xf6", 0xf7 => "\xf8\xf7", 0xf8 => "\xf8\xf8", + 0xf9 => "\xf8\xf9", 0xfa => "\xf8\xfa", 0xfb => "\xf8\xfb", + 0xfc => "\xf8\xfc", 0xfd => "\xf8\xfd", 0xfe => "\xf8\xfe", + ); + + + + /**** Public Interface ****/ + + + /* Object Lifecycle */ + + /** + * Object constructor + */ + public function __construct() + { + parent::__construct(); + + + /* Object properties */ + + /* The font names are stored internally as Unicode UTF-16BE-encoded + * strings. Since this information is static, save unnecessary trips + * through iconv() and just use pre-encoded hexidecimal strings. + */ + $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00" + . "\x6c\x00\x6c\x00\x20\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00" + . "\x73\x00\x20\x00\x72\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00" + . "\x65\x00\x64\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x34"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c\x00\x20\x00\x4d\x00" + . "\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x31\x00\x2e\x00\x30\x00\x30\x00\x38"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c"; + + $this->_isBold = false; + $this->_isItalic = false; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 1000; + $this->_descent = 0; + $this->_lineGap = 200; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0xfa, 0x02 => 0x014d, 0x03 => 0x02c9, + 0x04 => 0x01f4, 0x05 => 0x0225, 0x06 => 0x0341, 0x07 => 0x030a, + 0x08 => 0x01b7, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4, + 0x0c => 0x0225, 0x0d => 0xfa, 0x0e => 0x0225, 0x0f => 0xfa, + 0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4, + 0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4, + 0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x0116, + 0x1c => 0x0116, 0x1d => 0x0225, 0x1e => 0x0225, 0x1f => 0x0225, + 0x20 => 0x01bc, 0x21 => 0x0225, 0x22 => 0x02d2, 0x23 => 0x029b, + 0x24 => 0x02d2, 0x25 => 0x0264, 0x26 => 0x0263, 0x27 => 0x02fb, + 0x28 => 0x025b, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x0277, + 0x2c => 0x02d2, 0x2d => 0x02ae, 0x2e => 0x0379, 0x2f => 0x02d2, + 0x30 => 0x02d2, 0x31 => 0x0300, 0x32 => 0x02e5, 0x33 => 0x022c, + 0x34 => 0x0250, 0x35 => 0x0263, 0x36 => 0x02b2, 0x37 => 0x01b7, + 0x38 => 0x0300, 0x39 => 0x0285, 0x3a => 0x031b, 0x3b => 0x0263, + 0x3c => 0x014d, 0x3d => 0x035f, 0x3e => 0x014d, 0x3f => 0x0292, + 0x40 => 0x01f4, 0x41 => 0x01f4, 0x42 => 0x0277, 0x43 => 0x0225, + 0x44 => 0x0225, 0x45 => 0x01ee, 0x46 => 0x01b7, 0x47 => 0x0209, + 0x48 => 0x019b, 0x49 => 0x025b, 0x4a => 0x0149, 0x4b => 0x025b, + 0x4c => 0x0225, 0x4d => 0x0225, 0x4e => 0x0240, 0x4f => 0x0209, + 0x50 => 0x0225, 0x51 => 0x0225, 0x52 => 0x0209, 0x53 => 0x0225, + 0x54 => 0x025b, 0x55 => 0x01b7, 0x56 => 0x0240, 0x57 => 0x02c9, + 0x58 => 0x02ae, 0x59 => 0x01ed, 0x5a => 0x02ae, 0x5b => 0x01ee, + 0x5c => 0x01e0, 0x5d => 0xc8, 0x5e => 0x01e0, 0x5f => 0x0225, + 0x60 => 0x02ee, 0x61 => 0x026c, 0x62 => 0xf7, 0x63 => 0x0225, + 0x64 => 0xa7, 0x65 => 0x02c9, 0x66 => 0x01f4, 0x67 => 0x02f1, + 0x68 => 0x02f1, 0x69 => 0x02f1, 0x6a => 0x02f1, 0x6b => 0x0412, + 0x6c => 0x03db, 0x6d => 0x025b, 0x6e => 0x03db, 0x6f => 0x025b, + 0x70 => 0x0190, 0x71 => 0x0225, 0x72 => 0x019b, 0x73 => 0x0225, + 0x74 => 0x0225, 0x75 => 0x02c9, 0x76 => 0x01ee, 0x77 => 0x01cc, + 0x78 => 0x0225, 0x79 => 0x0225, 0x7a => 0x0225, 0x7b => 0x0225, + 0x7c => 0x03e8, 0x7d => 0x025b, 0x7e => 0x03e8, 0x7f => 0x0292, + 0x80 => 0x0337, 0x81 => 0x02ae, 0x82 => 0x031b, 0x83 => 0x03db, + 0x84 => 0x0300, 0x85 => 0x0300, 0x86 => 0x0337, 0x87 => 0x0300, + 0x88 => 0x0300, 0x89 => 0x02c9, 0x8a => 0x02c9, 0x8b => 0x02c9, + 0x8c => 0x02c9, 0x8d => 0x02c9, 0x8e => 0x02c9, 0x8f => 0x02c9, + 0x90 => 0x0300, 0x91 => 0x02c9, 0x92 => 0x0316, 0x93 => 0x0316, + 0x94 => 0x037a, 0x95 => 0x0337, 0x96 => 0x0225, 0x97 => 0xfa, + 0x98 => 0x02c9, 0x99 => 0x025b, 0x9a => 0x025b, 0x9b => 0x0412, + 0x9c => 0x03db, 0x9d => 0x025b, 0x9e => 0x03db, 0x9f => 0x025b, + 0xa0 => 0x01ee, 0xa1 => 0x0149, 0xa2 => 0x0316, 0xa3 => 0x0316, + 0xa4 => 0x0312, 0xa5 => 0x02c9, 0xa6 => 0x0180, 0xa7 => 0x0180, + 0xa8 => 0x0180, 0xa9 => 0x0180, 0xaa => 0x0180, 0xab => 0x0180, + 0xac => 0x01ee, 0xad => 0x01ee, 0xae => 0x01ee, 0xaf => 0x01ee, + 0xb0 => 0x0149, 0xb1 => 0x0112, 0xb2 => 0x02ae, 0xb3 => 0x02ae, + 0xb4 => 0x02ae, 0xb5 => 0x0180, 0xb6 => 0x0180, 0xb7 => 0x0180, + 0xb8 => 0x0180, 0xb9 => 0x0180, 0xba => 0x0180, 0xbb => 0x01ee, + 0xbc => 0x01ee, 0xbd => 0x01ee, 0xbe => 0x0316); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x2200 => 0x03, 0x23 => 0x04, + 0x2203 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x220b => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2217 => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2212 => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x2245 => 0x21, 0x0391 => 0x22, 0x0392 => 0x23, 0x03a7 => 0x24, + 0x2206 => 0x25, 0x0395 => 0x26, 0x03a6 => 0x27, 0x0393 => 0x28, + 0x0397 => 0x29, 0x0399 => 0x2a, 0x03d1 => 0x2b, 0x039a => 0x2c, + 0x039b => 0x2d, 0x039c => 0x2e, 0x039d => 0x2f, 0x039f => 0x30, + 0x03a0 => 0x31, 0x0398 => 0x32, 0x03a1 => 0x33, 0x03a3 => 0x34, + 0x03a4 => 0x35, 0x03a5 => 0x36, 0x03c2 => 0x37, 0x2126 => 0x38, + 0x039e => 0x39, 0x03a8 => 0x3a, 0x0396 => 0x3b, 0x5b => 0x3c, + 0x2234 => 0x3d, 0x5d => 0x3e, 0x22a5 => 0x3f, 0x5f => 0x40, + 0xf8e5 => 0x41, 0x03b1 => 0x42, 0x03b2 => 0x43, 0x03c7 => 0x44, + 0x03b4 => 0x45, 0x03b5 => 0x46, 0x03c6 => 0x47, 0x03b3 => 0x48, + 0x03b7 => 0x49, 0x03b9 => 0x4a, 0x03d5 => 0x4b, 0x03ba => 0x4c, + 0x03bb => 0x4d, 0xb5 => 0x4e, 0x03bd => 0x4f, 0x03bf => 0x50, + 0x03c0 => 0x51, 0x03b8 => 0x52, 0x03c1 => 0x53, 0x03c3 => 0x54, + 0x03c4 => 0x55, 0x03c5 => 0x56, 0x03d6 => 0x57, 0x03c9 => 0x58, + 0x03be => 0x59, 0x03c8 => 0x5a, 0x03b6 => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x223c => 0x5f, 0x20ac => 0x60, + 0x03d2 => 0x61, 0x2032 => 0x62, 0x2264 => 0x63, 0x2044 => 0x64, + 0x221e => 0x65, 0x0192 => 0x66, 0x2663 => 0x67, 0x2666 => 0x68, + 0x2665 => 0x69, 0x2660 => 0x6a, 0x2194 => 0x6b, 0x2190 => 0x6c, + 0x2191 => 0x6d, 0x2192 => 0x6e, 0x2193 => 0x6f, 0xb0 => 0x70, + 0xb1 => 0x71, 0x2033 => 0x72, 0x2265 => 0x73, 0xd7 => 0x74, + 0x221d => 0x75, 0x2202 => 0x76, 0x2022 => 0x77, 0xf7 => 0x78, + 0x2260 => 0x79, 0x2261 => 0x7a, 0x2248 => 0x7b, 0x2026 => 0x7c, + 0xf8e6 => 0x7d, 0xf8e7 => 0x7e, 0x21b5 => 0x7f, 0x2135 => 0x80, + 0x2111 => 0x81, 0x211c => 0x82, 0x2118 => 0x83, 0x2297 => 0x84, + 0x2295 => 0x85, 0x2205 => 0x86, 0x2229 => 0x87, 0x222a => 0x88, + 0x2283 => 0x89, 0x2287 => 0x8a, 0x2284 => 0x8b, 0x2282 => 0x8c, + 0x2286 => 0x8d, 0x2208 => 0x8e, 0x2209 => 0x8f, 0x2220 => 0x90, + 0x2207 => 0x91, 0xf6da => 0x92, 0xf6d9 => 0x93, 0xf6db => 0x94, + 0x220f => 0x95, 0x221a => 0x96, 0x22c5 => 0x97, 0xac => 0x98, + 0x2227 => 0x99, 0x2228 => 0x9a, 0x21d4 => 0x9b, 0x21d0 => 0x9c, + 0x21d1 => 0x9d, 0x21d2 => 0x9e, 0x21d3 => 0x9f, 0x25ca => 0xa0, + 0x2329 => 0xa1, 0xf8e8 => 0xa2, 0xf8e9 => 0xa3, 0xf8ea => 0xa4, + 0x2211 => 0xa5, 0xf8eb => 0xa6, 0xf8ec => 0xa7, 0xf8ed => 0xa8, + 0xf8ee => 0xa9, 0xf8ef => 0xaa, 0xf8f0 => 0xab, 0xf8f1 => 0xac, + 0xf8f2 => 0xad, 0xf8f3 => 0xae, 0xf8f4 => 0xaf, 0x232a => 0xb0, + 0x222b => 0xb1, 0x2320 => 0xb2, 0xf8f5 => 0xb3, 0x2321 => 0xb4, + 0xf8f6 => 0xb5, 0xf8f7 => 0xb6, 0xf8f8 => 0xb7, 0xf8f9 => 0xb8, + 0xf8fa => 0xb9, 0xf8fb => 0xba, 0xf8fc => 0xbb, 0xf8fd => 0xbc, + 0xf8fe => 0xbd, 0xf8ff => 0xbe); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Symbol'); + + /* This font has a built-in custom character encoding method. Don't + * override with WinAnsi like the other built-in fonts or else it will + * not work as expected. + */ + $this->_resource->Encoding = null; + } + + + /* Information and Conversion Methods */ + + /** + * Convert string encoding from local encoding to font encoding. Overridden + * to defeat the conversion behavior for this ornamental font. + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + */ + public function encodeString($string, $charEncoding) + { + /* This isn't the optimal time to perform this conversion, but it must + * live here until the remainder of the layout code is completed. This, + * and the $charEncoding parameter, will go away soon... + */ + if ($charEncoding != 'UTF-16BE') { + $string = iconv($charEncoding, 'UTF-16BE', $string); + } + /** + * @todo Properly handle characters encoded as surrogate pairs. + */ + $encodedString = ''; + for ($i = 0; $i < strlen($string); $i++) { + $characterCode = (ord($string[$i++]) << 8) | ord($string[$i]); + if (isset($this->_toFontEncoding[$characterCode])) { + $encodedString .= $this->_toFontEncoding[$characterCode]; + } else { + /* For now, mimic the behavior in Zend_Pdf_Font::encodeString() + * where unknown characters are removed completely. This is not + * perfect, but we should be consistent. In a future revision, + * we will use the well-known substitution character 0x1a + * (Control-Z). + */ + } + } + return $encodedString; + } + + /** + * Convert string encoding from font encoding to local encoding. Overridden + * to defeat the conversion behavior for this ornamental font. + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + */ + public function decodeString($string, $charEncoding) + { + $decodedString = ''; + for ($i = 0; $i < strlen($string); $i++) { + $characterCode = ord($string[$i]); + if (isset($this->_fromFontEncoding[$characterCode])) { + $decodedString .= $this->_fromFontEncoding[$characterCode]; + } else { + /* For now, mimic the behavior in Zend_Pdf_Font::encodeString() + * where unknown characters are removed completely. This is not + * perfect, but we should be consistent. In a future revision, + * we will use the Unicode substitution character (U+FFFD). + */ + } + } + if ($charEncoding != 'UTF-16BE') { + $decodedString = iconv('UTF-16BE', $charEncoding, $decodedString); + } + return $decodedString; + } + + /** + * Converts a Latin-encoded string that fakes the font's internal encoding + * to the proper Unicode characters, in UTF-16BE encoding. + * + * Used to maintain backwards compatibility with the 20 year-old legacy + * method of using this font, which is still employed by recent versions of + * some popular word processors. + * + * Note that using this method adds overhead due to the additional + * character conversion. Don't use this for new code; it is more efficient + * to use the appropriate Unicode characters directly. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source + * string. Defaults to current locale. + * @return string + */ + public function toUnicode($string, $charEncoding = '') + { + /* When using these faked strings, the closest match to the font's + * internal encoding is ISO-8859-1. + */ + if ($charEncoding != 'ISO-8859-1') { + $string = iconv($charEncoding, 'ISO-8859-1', $string); + } + return $this->decodeString($string, 'UTF-16BE'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesBold.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesBold.php new file mode 100755 index 000000000..d1ca475cd --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesBold.php @@ -0,0 +1,304 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00" + . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00" + . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00" + . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00" + . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00" + . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00" + . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00" + . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00" + . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00" + . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00" + . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00" + . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00" + . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00" + . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00" + . "\x65\x00\x73\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x35"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00" + . "\x6c\x00\x64\x00\x20\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00" + . "\x6c\x00\x64"; + + $this->_isBold = true; + $this->_isItalic = false; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 683; + $this->_descent = -217; + $this->_lineGap = 300; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0xfa, 0x02 => 0x014d, 0x03 => 0x022b, + 0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x03e8, 0x07 => 0x0341, + 0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4, + 0x0c => 0x023a, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa, + 0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4, + 0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4, + 0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x014d, + 0x1c => 0x014d, 0x1d => 0x023a, 0x1e => 0x023a, 0x1f => 0x023a, + 0x20 => 0x01f4, 0x21 => 0x03a2, 0x22 => 0x02d2, 0x23 => 0x029b, + 0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263, + 0x28 => 0x030a, 0x29 => 0x030a, 0x2a => 0x0185, 0x2b => 0x01f4, + 0x2c => 0x030a, 0x2d => 0x029b, 0x2e => 0x03b0, 0x2f => 0x02d2, + 0x30 => 0x030a, 0x31 => 0x0263, 0x32 => 0x030a, 0x33 => 0x02d2, + 0x34 => 0x022c, 0x35 => 0x029b, 0x36 => 0x02d2, 0x37 => 0x02d2, + 0x38 => 0x03e8, 0x39 => 0x02d2, 0x3a => 0x02d2, 0x3b => 0x029b, + 0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x0245, + 0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01f4, 0x43 => 0x022c, + 0x44 => 0x01bc, 0x45 => 0x022c, 0x46 => 0x01bc, 0x47 => 0x014d, + 0x48 => 0x01f4, 0x49 => 0x022c, 0x4a => 0x0116, 0x4b => 0x014d, + 0x4c => 0x022c, 0x4d => 0x0116, 0x4e => 0x0341, 0x4f => 0x022c, + 0x50 => 0x01f4, 0x51 => 0x022c, 0x52 => 0x022c, 0x53 => 0x01bc, + 0x54 => 0x0185, 0x55 => 0x014d, 0x56 => 0x022c, 0x57 => 0x01f4, + 0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01bc, + 0x5c => 0x018a, 0x5d => 0xdc, 0x5e => 0x018a, 0x5f => 0x0208, + 0x60 => 0x014d, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7, + 0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4, + 0x68 => 0x0116, 0x69 => 0x01f4, 0x6a => 0x01f4, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x022c, 0x6e => 0x022c, 0x6f => 0x01f4, + 0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x021c, + 0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x01f4, 0x77 => 0x01f4, + 0x78 => 0x01f4, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x01f4, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x012c, + 0x8c => 0x029b, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x014a, + 0x90 => 0x02d2, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4, + 0x94 => 0x02d2, 0x95 => 0x022c, 0x96 => 0x0185, 0x97 => 0x01bc, + 0x98 => 0x01f4, 0x99 => 0x022c, 0x9a => 0x01bc, 0x9b => 0x02d2, + 0x9c => 0x023a, 0x9d => 0x02d2, 0x9e => 0x02d2, 0x9f => 0x01f4, + 0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x0185, 0xa3 => 0x01bc, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01f4, 0xa7 => 0x02d2, + 0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02eb, 0xad => 0x029b, 0xae => 0x01bc, 0xaf => 0x01f4, + 0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x01f4, 0xb3 => 0x029b, + 0xb4 => 0x02d2, 0xb5 => 0x01f4, 0xb6 => 0x029b, 0xb7 => 0x0185, + 0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x02d2, + 0xbc => 0x030a, 0xbd => 0x022c, 0xbe => 0x01f4, 0xbf => 0x02d2, + 0xc0 => 0x01bc, 0xc1 => 0x01bc, 0xc2 => 0x029b, 0xc3 => 0x0263, + 0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x022c, 0xc7 => 0x02a0, + 0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x012c, 0xcb => 0x030a, + 0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x023a, 0xcf => 0x022c, + 0xd0 => 0x029b, 0xd1 => 0x01ee, 0xd2 => 0x01f4, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x01f4, 0xd7 => 0x01bc, + 0xd8 => 0x01bc, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2, + 0xdc => 0x0185, 0xdd => 0x023a, 0xde => 0xdc, 0xdf => 0x02eb, + 0xe0 => 0x030a, 0xe1 => 0x0185, 0xe2 => 0x0258, 0xe3 => 0x029b, + 0xe4 => 0x01bc, 0xe5 => 0x01f4, 0xe6 => 0x029b, 0xe7 => 0x029b, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0x0116, + 0xec => 0x01a0, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x02d2, + 0xf0 => 0x02d2, 0xf1 => 0x01bc, 0xf2 => 0x01bc, 0xf3 => 0x0116, + 0xf4 => 0x030a, 0xf5 => 0x01f4, 0xf6 => 0x01f4, 0xf7 => 0x0185, + 0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x022c, 0xfd => 0x012c, 0xfe => 0x030a, 0xff => 0x022c, + 0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x029b, 0x0103 => 0x022c, + 0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x018a, 0x0107 => 0x030a, + 0x0108 => 0x029b, 0x0109 => 0x03e8, 0x010a => 0x01bc, 0x010b => 0x0185, + 0x010c => 0x0185, 0x010d => 0x029b, 0x010e => 0x02ee, 0x010f => 0x0225, + 0x0110 => 0x01f4, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b, + 0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c, + 0x0118 => 0x022c, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x01f4, + 0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x0225, 0x011f => 0x02d2, + 0x0120 => 0x01bc, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x02d2, + 0x0124 => 0x029b, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2, + 0x0128 => 0x030a, 0x0129 => 0x01bc, 0x012a => 0x029b, 0x012b => 0x0185, + 0x012c => 0x022c, 0x012d => 0x023a, 0x012e => 0x0185, 0x012f => 0x022c, + 0x0130 => 0x014d, 0x0131 => 0x023a, 0x0132 => 0x01f4, 0x0133 => 0x022c, + 0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x01bc, + 0x0138 => 0x022c, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-Bold'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesBoldItalic.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesBoldItalic.php new file mode 100755 index 000000000..5a0bf0f8a --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesBoldItalic.php @@ -0,0 +1,305 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00" + . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00" + . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00" + . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00" + . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00" + . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00" + . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00" + . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00" + . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00" + . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00" + . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00" + . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00" + . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00" + . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00" + . "\x65\x00\x73\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x36"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00" + . "\x6c\x00\x64\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00" + . "\x20\x00\x42\x00\x6f\x00\x6c\x00\x64"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00" + . "\x6c\x00\x64\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63"; + + $this->_isBold = true; + $this->_isItalic = true; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 683; + $this->_descent = -217; + $this->_lineGap = 300; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0xfa, 0x02 => 0x0185, 0x03 => 0x022b, + 0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x0341, 0x07 => 0x030a, + 0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4, + 0x0c => 0x023a, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa, + 0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4, + 0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4, + 0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x014d, + 0x1c => 0x014d, 0x1d => 0x023a, 0x1e => 0x023a, 0x1f => 0x023a, + 0x20 => 0x01f4, 0x21 => 0x0340, 0x22 => 0x029b, 0x23 => 0x029b, + 0x24 => 0x029b, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x029b, + 0x28 => 0x02d2, 0x29 => 0x030a, 0x2a => 0x0185, 0x2b => 0x01f4, + 0x2c => 0x029b, 0x2d => 0x0263, 0x2e => 0x0379, 0x2f => 0x02d2, + 0x30 => 0x02d2, 0x31 => 0x0263, 0x32 => 0x02d2, 0x33 => 0x029b, + 0x34 => 0x022c, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b, + 0x38 => 0x0379, 0x39 => 0x029b, 0x3a => 0x0263, 0x3b => 0x0263, + 0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x023a, + 0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01f4, 0x43 => 0x01f4, + 0x44 => 0x01bc, 0x45 => 0x01f4, 0x46 => 0x01bc, 0x47 => 0x014d, + 0x48 => 0x01f4, 0x49 => 0x022c, 0x4a => 0x0116, 0x4b => 0x0116, + 0x4c => 0x01f4, 0x4d => 0x0116, 0x4e => 0x030a, 0x4f => 0x022c, + 0x50 => 0x01f4, 0x51 => 0x01f4, 0x52 => 0x01f4, 0x53 => 0x0185, + 0x54 => 0x0185, 0x55 => 0x0116, 0x56 => 0x022c, 0x57 => 0x01bc, + 0x58 => 0x029b, 0x59 => 0x01f4, 0x5a => 0x01bc, 0x5b => 0x0185, + 0x5c => 0x015c, 0x5d => 0xdc, 0x5e => 0x015c, 0x5f => 0x023a, + 0x60 => 0x0185, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7, + 0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4, + 0x68 => 0x0116, 0x69 => 0x01f4, 0x6a => 0x01f4, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x022c, 0x6e => 0x022c, 0x6f => 0x01f4, + 0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x01f4, + 0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x01f4, 0x77 => 0x01f4, + 0x78 => 0x01f4, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x01f4, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03b0, 0x8b => 0x010a, + 0x8c => 0x0263, 0x8d => 0x02d2, 0x8e => 0x03b0, 0x8f => 0x012c, + 0x90 => 0x02d2, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4, + 0x94 => 0x02d2, 0x95 => 0x01f4, 0x96 => 0x0185, 0x97 => 0x01bc, + 0x98 => 0x01f4, 0x99 => 0x022c, 0x9a => 0x01bc, 0x9b => 0x0263, + 0x9c => 0x023a, 0x9d => 0x0263, 0x9e => 0x029b, 0x9f => 0x01f4, + 0xa0 => 0x02d2, 0xa1 => 0x01bc, 0xa2 => 0x0185, 0xa3 => 0x01bc, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01f4, 0xa7 => 0x02d2, + 0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02eb, 0xad => 0x029b, 0xae => 0x01bc, 0xaf => 0x01f4, + 0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x01f4, 0xb3 => 0x0263, + 0xb4 => 0x029b, 0xb5 => 0x01f4, 0xb6 => 0x029b, 0xb7 => 0x0185, + 0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x029b, + 0xbc => 0x02d2, 0xbd => 0x022c, 0xbe => 0x01f4, 0xbf => 0x029b, + 0xc0 => 0x0185, 0xc1 => 0x01bc, 0xc2 => 0x0263, 0xc3 => 0x0263, + 0xc4 => 0x02d2, 0xc5 => 0x029b, 0xc6 => 0x022c, 0xc7 => 0x0260, + 0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x012c, 0xcb => 0x02d2, + 0xcc => 0x029b, 0xcd => 0x029b, 0xce => 0x023a, 0xcf => 0x022c, + 0xd0 => 0x0263, 0xd1 => 0x01ee, 0xd2 => 0x01bc, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x01f4, 0xd7 => 0x01bc, + 0xd8 => 0x01bc, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2, + 0xdc => 0x0185, 0xdd => 0x023a, 0xde => 0xdc, 0xdf => 0x02eb, + 0xe0 => 0x02d2, 0xe1 => 0x0185, 0xe2 => 0x0258, 0xe3 => 0x029b, + 0xe4 => 0x0185, 0xe5 => 0x01f4, 0xe6 => 0x0263, 0xe7 => 0x0263, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x029b, 0xeb => 0x0116, + 0xec => 0x016e, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x029b, + 0xf0 => 0x029b, 0xf1 => 0x01bc, 0xf2 => 0x0185, 0xf3 => 0x0116, + 0xf4 => 0x02d2, 0xf5 => 0x01f4, 0xf6 => 0x01f4, 0xf7 => 0x0185, + 0xf8 => 0x0116, 0xf9 => 0x02d2, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x01f4, 0xfd => 0x012c, 0xfe => 0x02d2, 0xff => 0x0240, + 0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x029b, 0x0103 => 0x01f4, + 0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x017e, 0x0107 => 0x029b, + 0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x01bc, 0x010b => 0x0185, + 0x010c => 0x0185, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225, + 0x0110 => 0x01f4, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b, + 0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c, + 0x0118 => 0x022c, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4, + 0x011c => 0x029b, 0x011d => 0x022c, 0x011e => 0x0225, 0x011f => 0x02d2, + 0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x029b, + 0x0124 => 0x0263, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b, + 0x0128 => 0x02d2, 0x0129 => 0x0185, 0x012a => 0x029b, 0x012b => 0x0185, + 0x012c => 0x01f4, 0x012d => 0x025e, 0x012e => 0x0185, 0x012f => 0x022c, + 0x0130 => 0x0116, 0x0131 => 0x025e, 0x0132 => 0x01f4, 0x0133 => 0x022c, + 0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x0185, + 0x0138 => 0x022c, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-BoldItalic'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesItalic.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesItalic.php new file mode 100755 index 000000000..6d9d4fb4c --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesItalic.php @@ -0,0 +1,305 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00" + . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00" + . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00" + . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00" + . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00" + . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00" + . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00" + . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00" + . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00" + . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00" + . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00" + . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00" + . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00" + . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00" + . "\x65\x00\x73\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x37"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x49\x00\x74\x00" + . "\x61\x00\x6c\x00\x69\x00\x63\x00\x20\x00\x4d\x00\x65\x00\x64\x00" + . "\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x49\x00\x74\x00" + . "\x61\x00\x6c\x00\x69\x00\x63"; + + $this->_isBold = false; + $this->_isItalic = true; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 683; + $this->_descent = -217; + $this->_lineGap = 300; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0xfa, 0x02 => 0x014d, 0x03 => 0x01a4, + 0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x0341, 0x07 => 0x030a, + 0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4, + 0x0c => 0x02a3, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa, + 0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4, + 0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4, + 0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x014d, + 0x1c => 0x014d, 0x1d => 0x02a3, 0x1e => 0x02a3, 0x1f => 0x02a3, + 0x20 => 0x01f4, 0x21 => 0x0398, 0x22 => 0x0263, 0x23 => 0x0263, + 0x24 => 0x029b, 0x25 => 0x02d2, 0x26 => 0x0263, 0x27 => 0x0263, + 0x28 => 0x02d2, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x01bc, + 0x2c => 0x029b, 0x2d => 0x022c, 0x2e => 0x0341, 0x2f => 0x029b, + 0x30 => 0x02d2, 0x31 => 0x0263, 0x32 => 0x02d2, 0x33 => 0x0263, + 0x34 => 0x01f4, 0x35 => 0x022c, 0x36 => 0x02d2, 0x37 => 0x0263, + 0x38 => 0x0341, 0x39 => 0x0263, 0x3a => 0x022c, 0x3b => 0x022c, + 0x3c => 0x0185, 0x3d => 0x0116, 0x3e => 0x0185, 0x3f => 0x01a6, + 0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01f4, 0x43 => 0x01f4, + 0x44 => 0x01bc, 0x45 => 0x01f4, 0x46 => 0x01bc, 0x47 => 0x0116, + 0x48 => 0x01f4, 0x49 => 0x01f4, 0x4a => 0x0116, 0x4b => 0x0116, + 0x4c => 0x01bc, 0x4d => 0x0116, 0x4e => 0x02d2, 0x4f => 0x01f4, + 0x50 => 0x01f4, 0x51 => 0x01f4, 0x52 => 0x01f4, 0x53 => 0x0185, + 0x54 => 0x0185, 0x55 => 0x0116, 0x56 => 0x01f4, 0x57 => 0x01bc, + 0x58 => 0x029b, 0x59 => 0x01bc, 0x5a => 0x01bc, 0x5b => 0x0185, + 0x5c => 0x0190, 0x5d => 0x0113, 0x5e => 0x0190, 0x5f => 0x021d, + 0x60 => 0x0185, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7, + 0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4, + 0x68 => 0xd6, 0x69 => 0x022c, 0x6a => 0x01f4, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x01f4, 0x6e => 0x01f4, 0x6f => 0x01f4, + 0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x020b, + 0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x022c, 0x77 => 0x022c, + 0x78 => 0x01f4, 0x79 => 0x0379, 0x7a => 0x03e8, 0x7b => 0x01f4, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x0379, 0x8a => 0x0379, 0x8b => 0x0114, + 0x8c => 0x022c, 0x8d => 0x02d2, 0x8e => 0x03b0, 0x8f => 0x0136, + 0x90 => 0x029b, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4, + 0x94 => 0x029b, 0x95 => 0x01f4, 0x96 => 0x014d, 0x97 => 0x01bc, + 0x98 => 0x01f4, 0x99 => 0x01f4, 0x9a => 0x01bc, 0x9b => 0x022c, + 0x9c => 0x02a3, 0x9d => 0x022c, 0x9e => 0x0263, 0x9f => 0x01f4, + 0xa0 => 0x02d2, 0xa1 => 0x01bc, 0xa2 => 0x0185, 0xa3 => 0x01bc, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01f4, 0xa7 => 0x02d2, + 0xa8 => 0x01f4, 0xa9 => 0x0263, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02f8, 0xad => 0x0263, 0xae => 0x01bc, 0xaf => 0x01f4, + 0xb0 => 0x029b, 0xb1 => 0x0116, 0xb2 => 0x01f4, 0xb3 => 0x022c, + 0xb4 => 0x029b, 0xb5 => 0x01f4, 0xb6 => 0x0263, 0xb7 => 0x0185, + 0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x0263, + 0xbc => 0x02d2, 0xbd => 0x01f4, 0xbe => 0x01f4, 0xbf => 0x0263, + 0xc0 => 0x0185, 0xc1 => 0x01bc, 0xc2 => 0x022c, 0xc3 => 0x0263, + 0xc4 => 0x02d2, 0xc5 => 0x0263, 0xc6 => 0x01f4, 0xc7 => 0x0220, + 0xc8 => 0x02d2, 0xc9 => 0x01f4, 0xca => 0x012c, 0xcb => 0x02d2, + 0xcc => 0x0263, 0xcd => 0x0263, 0xce => 0x02a3, 0xcf => 0x01f4, + 0xd0 => 0x022c, 0xd1 => 0x01dc, 0xd2 => 0x01bc, 0xd3 => 0x029b, + 0xd4 => 0x0116, 0xd5 => 0x0263, 0xd6 => 0x01f4, 0xd7 => 0x01bc, + 0xd8 => 0x01bc, 0xd9 => 0x01f4, 0xda => 0x01f4, 0xdb => 0x029b, + 0xdc => 0x014d, 0xdd => 0x02a3, 0xde => 0x0113, 0xdf => 0x02f8, + 0xe0 => 0x02d2, 0xe1 => 0x014d, 0xe2 => 0x0258, 0xe3 => 0x0263, + 0xe4 => 0x0185, 0xe5 => 0x01f4, 0xe6 => 0x022c, 0xe7 => 0x022c, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x029b, 0xeb => 0x0116, + 0xec => 0x012c, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x0263, + 0xf0 => 0x0263, 0xf1 => 0x01bc, 0xf2 => 0x0185, 0xf3 => 0x0116, + 0xf4 => 0x02d2, 0xf5 => 0x01f4, 0xf6 => 0x01f4, 0xf7 => 0x0185, + 0xf8 => 0x0116, 0xf9 => 0x02d2, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x01f4, 0xfd => 0x012c, 0xfe => 0x02d2, 0xff => 0x01f4, + 0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x0263, 0x0103 => 0x01f4, + 0x0104 => 0x02ee, 0x0105 => 0x01f4, 0x0106 => 0x012c, 0x0107 => 0x029b, + 0x0108 => 0x022c, 0x0109 => 0x03d4, 0x010a => 0x01bc, 0x010b => 0x014d, + 0x010c => 0x014d, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225, + 0x0110 => 0x01f4, 0x0111 => 0x01f4, 0x0112 => 0x02d2, 0x0113 => 0x0263, + 0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x01f4, + 0x0118 => 0x01f4, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4, + 0x011c => 0x029b, 0x011d => 0x01f4, 0x011e => 0x01c5, 0x011f => 0x02d2, + 0x0120 => 0x0185, 0x0121 => 0x029b, 0x0122 => 0x01f4, 0x0123 => 0x0263, + 0x0124 => 0x022c, 0x0125 => 0x0263, 0x0126 => 0x0263, 0x0127 => 0x0263, + 0x0128 => 0x02d2, 0x0129 => 0x0185, 0x012a => 0x0263, 0x012b => 0x014d, + 0x012c => 0x01bc, 0x012d => 0x02a3, 0x012e => 0x014d, 0x012f => 0x01f4, + 0x0130 => 0x0116, 0x0131 => 0x02a3, 0x0132 => 0x01f4, 0x0133 => 0x01f4, + 0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x0185, + 0x0138 => 0x01f4, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-Italic'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesRoman.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesRoman.php new file mode 100755 index 000000000..baf8ffc7a --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/TimesRoman.php @@ -0,0 +1,305 @@ +_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00" + . "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00" + . "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00" + . "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00" + . "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00" + . "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00" + . "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00" + . "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00" + . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00" + . "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00" + . "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00" + . "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00" + . "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00" + . "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00" + . "\x65\x00\x73\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x52\x00\x6f\x00\x6d\x00\x61\x00\x6e"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x38"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x52\x00\x6f\x00" + . "\x6d\x00\x61\x00\x6e\x00\x20\x00\x52\x00\x6f\x00\x6d\x00\x61\x00" + . "\x6e"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x52\x00\x6f\x00" + . "\x6d\x00\x61\x00\x6e"; + + $this->_isBold = false; + $this->_isItalic = false; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 683; + $this->_descent = -217; + $this->_lineGap = 300; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0xfa, 0x02 => 0x014d, 0x03 => 0x0198, + 0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x0341, 0x07 => 0x030a, + 0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4, + 0x0c => 0x0234, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa, + 0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4, + 0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4, + 0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x0116, + 0x1c => 0x0116, 0x1d => 0x0234, 0x1e => 0x0234, 0x1f => 0x0234, + 0x20 => 0x01bc, 0x21 => 0x0399, 0x22 => 0x02d2, 0x23 => 0x029b, + 0x24 => 0x029b, 0x25 => 0x02d2, 0x26 => 0x0263, 0x27 => 0x022c, + 0x28 => 0x02d2, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x0185, + 0x2c => 0x02d2, 0x2d => 0x0263, 0x2e => 0x0379, 0x2f => 0x02d2, + 0x30 => 0x02d2, 0x31 => 0x022c, 0x32 => 0x02d2, 0x33 => 0x029b, + 0x34 => 0x022c, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x02d2, + 0x38 => 0x03b0, 0x39 => 0x02d2, 0x3a => 0x02d2, 0x3b => 0x0263, + 0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x01d5, + 0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01bc, 0x43 => 0x01f4, + 0x44 => 0x01bc, 0x45 => 0x01f4, 0x46 => 0x01bc, 0x47 => 0x014d, + 0x48 => 0x01f4, 0x49 => 0x01f4, 0x4a => 0x0116, 0x4b => 0x0116, + 0x4c => 0x01f4, 0x4d => 0x0116, 0x4e => 0x030a, 0x4f => 0x01f4, + 0x50 => 0x01f4, 0x51 => 0x01f4, 0x52 => 0x01f4, 0x53 => 0x014d, + 0x54 => 0x0185, 0x55 => 0x0116, 0x56 => 0x01f4, 0x57 => 0x01f4, + 0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01bc, + 0x5c => 0x01e0, 0x5d => 0xc8, 0x5e => 0x01e0, 0x5f => 0x021d, + 0x60 => 0x014d, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7, + 0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4, + 0x68 => 0xb4, 0x69 => 0x01bc, 0x6a => 0x01f4, 0x6b => 0x014d, + 0x6c => 0x014d, 0x6d => 0x022c, 0x6e => 0x022c, 0x6f => 0x01f4, + 0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x01c5, + 0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x01bc, 0x77 => 0x01bc, + 0x78 => 0x01f4, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x01bc, + 0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d, + 0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d, + 0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d, + 0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x0379, 0x8b => 0x0114, + 0x8c => 0x0263, 0x8d => 0x02d2, 0x8e => 0x0379, 0x8f => 0x0136, + 0x90 => 0x029b, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4, + 0x94 => 0x02d2, 0x95 => 0x01f4, 0x96 => 0x014d, 0x97 => 0x01bc, + 0x98 => 0x01bc, 0x99 => 0x01f4, 0x9a => 0x01bc, 0x9b => 0x02d2, + 0x9c => 0x0234, 0x9d => 0x02d2, 0x9e => 0x02d2, 0x9f => 0x01bc, + 0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x0185, 0xa3 => 0x01bc, + 0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01bc, 0xa7 => 0x02d2, + 0xa8 => 0x01f4, 0xa9 => 0x0263, 0xaa => 0x02d2, 0xab => 0xfa, + 0xac => 0x02f8, 0xad => 0x0263, 0xae => 0x01bc, 0xaf => 0x01bc, + 0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x01bc, 0xb3 => 0x0263, + 0xb4 => 0x029b, 0xb5 => 0x01bc, 0xb6 => 0x0263, 0xb7 => 0x0185, + 0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x029b, + 0xbc => 0x02d2, 0xbd => 0x01f4, 0xbe => 0x01bc, 0xbf => 0x02d2, + 0xc0 => 0x014d, 0xc1 => 0x01bc, 0xc2 => 0x0263, 0xc3 => 0x022c, + 0xc4 => 0x02d2, 0xc5 => 0x029b, 0xc6 => 0x022c, 0xc7 => 0x024c, + 0xc8 => 0x02d2, 0xc9 => 0x01f4, 0xca => 0x012c, 0xcb => 0x02d2, + 0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x0234, 0xcf => 0x01f4, + 0xd0 => 0x0263, 0xd1 => 0x01dc, 0xd2 => 0x01f4, 0xd3 => 0x02d2, + 0xd4 => 0x0116, 0xd5 => 0x0263, 0xd6 => 0x01bc, 0xd7 => 0x01bc, + 0xd8 => 0x01bc, 0xd9 => 0x01f4, 0xda => 0x01f4, 0xdb => 0x02d2, + 0xdc => 0x014d, 0xdd => 0x0234, 0xde => 0xc8, 0xdf => 0x02f8, + 0xe0 => 0x02d2, 0xe1 => 0x014d, 0xe2 => 0x0258, 0xe3 => 0x0263, + 0xe4 => 0x014d, 0xe5 => 0x01f4, 0xe6 => 0x0263, 0xe7 => 0x0263, + 0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x029b, 0xeb => 0x0116, + 0xec => 0x0146, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x02d2, + 0xf0 => 0x02d2, 0xf1 => 0x01bc, 0xf2 => 0x01bc, 0xf3 => 0x0116, + 0xf4 => 0x02d2, 0xf5 => 0x01f4, 0xf6 => 0x01bc, 0xf7 => 0x0185, + 0xf8 => 0x0116, 0xf9 => 0x02d2, 0xfa => 0x02d2, 0xfb => 0x0264, + 0xfc => 0x01f4, 0xfd => 0x012c, 0xfe => 0x02d2, 0xff => 0x01f4, + 0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x0263, 0x0103 => 0x01f4, + 0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x0158, 0x0107 => 0x02d2, + 0x0108 => 0x0263, 0x0109 => 0x03d4, 0x010a => 0x01bc, 0x010b => 0x014d, + 0x010c => 0x014d, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225, + 0x0110 => 0x01f4, 0x0111 => 0x01f4, 0x0112 => 0x02d2, 0x0113 => 0x0263, + 0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c, + 0x0118 => 0x022c, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4, + 0x011c => 0x029b, 0x011d => 0x01f4, 0x011e => 0x01c5, 0x011f => 0x02d2, + 0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x029b, + 0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2, + 0x0128 => 0x02d2, 0x0129 => 0x01bc, 0x012a => 0x0263, 0x012b => 0x014d, + 0x012c => 0x01f4, 0x012d => 0x0234, 0x012e => 0x014d, 0x012f => 0x01f4, + 0x0130 => 0x0116, 0x0131 => 0x0234, 0x0132 => 0x01f4, 0x0133 => 0x01f4, + 0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x01bc, + 0x0138 => 0x01f4, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4, + ); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04, + 0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08, + 0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c, + 0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10, + 0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14, + 0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18, + 0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c, + 0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20, + 0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24, + 0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28, + 0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c, + 0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30, + 0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34, + 0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38, + 0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c, + 0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40, + 0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44, + 0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48, + 0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c, + 0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50, + 0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54, + 0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58, + 0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c, + 0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60, + 0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64, + 0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68, + 0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c, + 0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70, + 0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74, + 0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78, + 0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c, + 0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80, + 0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84, + 0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88, + 0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c, + 0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90, + 0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94, + 0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98, + 0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c, + 0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0, + 0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4, + 0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8, + 0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac, + 0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0, + 0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4, + 0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8, + 0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc, + 0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0, + 0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4, + 0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8, + 0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc, + 0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0, + 0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4, + 0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8, + 0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc, + 0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0, + 0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4, + 0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8, + 0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec, + 0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0, + 0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4, + 0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8, + 0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc, + 0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100, + 0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104, + 0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108, + 0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c, + 0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110, + 0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114, + 0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118, + 0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c, + 0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120, + 0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124, + 0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128, + 0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c, + 0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130, + 0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134, + 0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138, + 0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Times-Roman'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Simple/Standard/ZapfDingbats.php b/library/Zend/Pdf/Resource/Font/Simple/Standard/ZapfDingbats.php new file mode 100755 index 000000000..c55139b49 --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Simple/Standard/ZapfDingbats.php @@ -0,0 +1,491 @@ + "\x20", 0x2701 => "\x21", 0x2702 => "\x22", 0x2703 => "\x23", + 0x2704 => "\x24", 0x260e => "\x25", 0x2706 => "\x26", 0x2707 => "\x27", + 0x2708 => "\x28", 0x2709 => "\x29", 0x261b => "\x2a", 0x261e => "\x2b", + 0x270c => "\x2c", 0x270d => "\x2d", 0x270e => "\x2e", 0x270f => "\x2f", + 0x2710 => "\x30", 0x2711 => "\x31", 0x2712 => "\x32", 0x2713 => "\x33", + 0x2714 => "\x34", 0x2715 => "\x35", 0x2716 => "\x36", 0x2717 => "\x37", + 0x2718 => "\x38", 0x2719 => "\x39", 0x271a => "\x3a", 0x271b => "\x3b", + 0x271c => "\x3c", 0x271d => "\x3d", 0x271e => "\x3e", 0x271f => "\x3f", + 0x2720 => "\x40", 0x2721 => "\x41", 0x2722 => "\x42", 0x2723 => "\x43", + 0x2724 => "\x44", 0x2725 => "\x45", 0x2726 => "\x46", 0x2727 => "\x47", + 0x2605 => "\x48", 0x2729 => "\x49", 0x272a => "\x4a", 0x272b => "\x4b", + 0x272c => "\x4c", 0x272d => "\x4d", 0x272e => "\x4e", 0x272f => "\x4f", + 0x2730 => "\x50", 0x2731 => "\x51", 0x2732 => "\x52", 0x2733 => "\x53", + 0x2734 => "\x54", 0x2735 => "\x55", 0x2736 => "\x56", 0x2737 => "\x57", + 0x2738 => "\x58", 0x2739 => "\x59", 0x273a => "\x5a", 0x273b => "\x5b", + 0x273c => "\x5c", 0x273d => "\x5d", 0x273e => "\x5e", 0x273f => "\x5f", + 0x2740 => "\x60", 0x2741 => "\x61", 0x2742 => "\x62", 0x2743 => "\x63", + 0x2744 => "\x64", 0x2745 => "\x65", 0x2746 => "\x66", 0x2747 => "\x67", + 0x2748 => "\x68", 0x2749 => "\x69", 0x274a => "\x6a", 0x274b => "\x6b", + 0x25cf => "\x6c", 0x274d => "\x6d", 0x25a0 => "\x6e", 0x274f => "\x6f", + 0x2750 => "\x70", 0x2751 => "\x71", 0x2752 => "\x72", 0x25b2 => "\x73", + 0x25bc => "\x74", 0x25c6 => "\x75", 0x2756 => "\x76", 0x25d7 => "\x77", + 0x2758 => "\x78", 0x2759 => "\x79", 0x275a => "\x7a", 0x275b => "\x7b", + 0x275c => "\x7c", 0x275d => "\x7d", 0x275e => "\x7e", 0x2768 => "\x80", + 0x2769 => "\x81", 0x276a => "\x82", 0x276b => "\x83", 0x276c => "\x84", + 0x276d => "\x85", 0x276e => "\x86", 0x276f => "\x87", 0x2770 => "\x88", + 0x2771 => "\x89", 0x2772 => "\x8a", 0x2773 => "\x8b", 0x2774 => "\x8c", + 0x2775 => "\x8d", 0x2761 => "\xa1", 0x2762 => "\xa2", 0x2763 => "\xa3", + 0x2764 => "\xa4", 0x2765 => "\xa5", 0x2766 => "\xa6", 0x2767 => "\xa7", + 0x2663 => "\xa8", 0x2666 => "\xa9", 0x2665 => "\xaa", 0x2660 => "\xab", + 0x2460 => "\xac", 0x2461 => "\xad", 0x2462 => "\xae", 0x2463 => "\xaf", + 0x2464 => "\xb0", 0x2465 => "\xb1", 0x2466 => "\xb2", 0x2467 => "\xb3", + 0x2468 => "\xb4", 0x2469 => "\xb5", 0x2776 => "\xb6", 0x2777 => "\xb7", + 0x2778 => "\xb8", 0x2779 => "\xb9", 0x277a => "\xba", 0x277b => "\xbb", + 0x277c => "\xbc", 0x277d => "\xbd", 0x277e => "\xbe", 0x277f => "\xbf", + 0x2780 => "\xc0", 0x2781 => "\xc1", 0x2782 => "\xc2", 0x2783 => "\xc3", + 0x2784 => "\xc4", 0x2785 => "\xc5", 0x2786 => "\xc6", 0x2787 => "\xc7", + 0x2788 => "\xc8", 0x2789 => "\xc9", 0x278a => "\xca", 0x278b => "\xcb", + 0x278c => "\xcc", 0x278d => "\xcd", 0x278e => "\xce", 0x278f => "\xcf", + 0x2790 => "\xd0", 0x2791 => "\xd1", 0x2792 => "\xd2", 0x2793 => "\xd3", + 0x2794 => "\xd4", 0x2192 => "\xd5", 0x2194 => "\xd6", 0x2195 => "\xd7", + 0x2798 => "\xd8", 0x2799 => "\xd9", 0x279a => "\xda", 0x279b => "\xdb", + 0x279c => "\xdc", 0x279d => "\xdd", 0x279e => "\xde", 0x279f => "\xdf", + 0x27a0 => "\xe0", 0x27a1 => "\xe1", 0x27a2 => "\xe2", 0x27a3 => "\xe3", + 0x27a4 => "\xe4", 0x27a5 => "\xe5", 0x27a6 => "\xe6", 0x27a7 => "\xe7", + 0x27a8 => "\xe8", 0x27a9 => "\xe9", 0x27aa => "\xea", 0x27ab => "\xeb", + 0x27ac => "\xec", 0x27ad => "\xed", 0x27ae => "\xee", 0x27af => "\xef", + 0x27b1 => "\xf1", 0x27b2 => "\xf2", 0x27b3 => "\xf3", 0x27b4 => "\xf4", + 0x27b5 => "\xf5", 0x27b6 => "\xf6", 0x27b7 => "\xf7", 0x27b8 => "\xf8", + 0x27b9 => "\xf9", 0x27ba => "\xfa", 0x27bb => "\xfb", 0x27bc => "\xfc", + 0x27bd => "\xfd", 0x27be => "\xfe"); + + /** + * Array for conversion from special font encoding to local encoding. + * See {@link decodeString()}. + * @var array + */ + protected $_fromFontEncoding = array( + 0x20 => "\x00\x20", 0x21 => "\x27\x01", 0x22 => "\x27\x02", + 0x23 => "\x27\x03", 0x24 => "\x27\x04", 0x25 => "\x26\x0e", + 0x26 => "\x27\x06", 0x27 => "\x27\x07", 0x28 => "\x27\x08", + 0x29 => "\x27\x09", 0x2a => "\x26\x1b", 0x2b => "\x26\x1e", + 0x2c => "\x27\x0c", 0x2d => "\x27\x0d", 0x2e => "\x27\x0e", + 0x2f => "\x27\x0f", 0x30 => "\x27\x10", 0x31 => "\x27\x11", + 0x32 => "\x27\x12", 0x33 => "\x27\x13", 0x34 => "\x27\x14", + 0x35 => "\x27\x15", 0x36 => "\x27\x16", 0x37 => "\x27\x17", + 0x38 => "\x27\x18", 0x39 => "\x27\x19", 0x3a => "\x27\x1a", + 0x3b => "\x27\x1b", 0x3c => "\x27\x1c", 0x3d => "\x27\x1d", + 0x3e => "\x27\x1e", 0x3f => "\x27\x1f", 0x40 => "\x27\x20", + 0x41 => "\x27\x21", 0x42 => "\x27\x22", 0x43 => "\x27\x23", + 0x44 => "\x27\x24", 0x45 => "\x27\x25", 0x46 => "\x27\x26", + 0x47 => "\x27\x27", 0x48 => "\x26\x05", 0x49 => "\x27\x29", + 0x4a => "\x27\x2a", 0x4b => "\x27\x2b", 0x4c => "\x27\x2c", + 0x4d => "\x27\x2d", 0x4e => "\x27\x2e", 0x4f => "\x27\x2f", + 0x50 => "\x27\x30", 0x51 => "\x27\x31", 0x52 => "\x27\x32", + 0x53 => "\x27\x33", 0x54 => "\x27\x34", 0x55 => "\x27\x35", + 0x56 => "\x27\x36", 0x57 => "\x27\x37", 0x58 => "\x27\x38", + 0x59 => "\x27\x39", 0x5a => "\x27\x3a", 0x5b => "\x27\x3b", + 0x5c => "\x27\x3c", 0x5d => "\x27\x3d", 0x5e => "\x27\x3e", + 0x5f => "\x27\x3f", 0x60 => "\x27\x40", 0x61 => "\x27\x41", + 0x62 => "\x27\x42", 0x63 => "\x27\x43", 0x64 => "\x27\x44", + 0x65 => "\x27\x45", 0x66 => "\x27\x46", 0x67 => "\x27\x47", + 0x68 => "\x27\x48", 0x69 => "\x27\x49", 0x6a => "\x27\x4a", + 0x6b => "\x27\x4b", 0x6c => "\x25\xcf", 0x6d => "\x27\x4d", + 0x6e => "\x25\xa0", 0x6f => "\x27\x4f", 0x70 => "\x27\x50", + 0x71 => "\x27\x51", 0x72 => "\x27\x52", 0x73 => "\x25\xb2", + 0x74 => "\x25\xbc", 0x75 => "\x25\xc6", 0x76 => "\x27\x56", + 0x77 => "\x25\xd7", 0x78 => "\x27\x58", 0x79 => "\x27\x59", + 0x7a => "\x27\x5a", 0x7b => "\x27\x5b", 0x7c => "\x27\x5c", + 0x7d => "\x27\x5d", 0x7e => "\x27\x5e", 0x80 => "\x27\x68", + 0x81 => "\x27\x69", 0x82 => "\x27\x6a", 0x83 => "\x27\x6b", + 0x84 => "\x27\x6c", 0x85 => "\x27\x6d", 0x86 => "\x27\x6e", + 0x87 => "\x27\x6f", 0x88 => "\x27\x70", 0x89 => "\x27\x71", + 0x8a => "\x27\x72", 0x8b => "\x27\x73", 0x8c => "\x27\x74", + 0x8d => "\x27\x75", 0xa1 => "\x27\x61", 0xa2 => "\x27\x62", + 0xa3 => "\x27\x63", 0xa4 => "\x27\x64", 0xa5 => "\x27\x65", + 0xa6 => "\x27\x66", 0xa7 => "\x27\x67", 0xa8 => "\x26\x63", + 0xa9 => "\x26\x66", 0xaa => "\x26\x65", 0xab => "\x26\x60", + 0xac => "\x24\x60", 0xad => "\x24\x61", 0xae => "\x24\x62", + 0xaf => "\x24\x63", 0xb0 => "\x24\x64", 0xb1 => "\x24\x65", + 0xb2 => "\x24\x66", 0xb3 => "\x24\x67", 0xb4 => "\x24\x68", + 0xb5 => "\x24\x69", 0xb6 => "\x27\x76", 0xb7 => "\x27\x77", + 0xb8 => "\x27\x78", 0xb9 => "\x27\x79", 0xba => "\x27\x7a", + 0xbb => "\x27\x7b", 0xbc => "\x27\x7c", 0xbd => "\x27\x7d", + 0xbe => "\x27\x7e", 0xbf => "\x27\x7f", 0xc0 => "\x27\x80", + 0xc1 => "\x27\x81", 0xc2 => "\x27\x82", 0xc3 => "\x27\x83", + 0xc4 => "\x27\x84", 0xc5 => "\x27\x85", 0xc6 => "\x27\x86", + 0xc7 => "\x27\x87", 0xc8 => "\x27\x88", 0xc9 => "\x27\x89", + 0xca => "\x27\x8a", 0xcb => "\x27\x8b", 0xcc => "\x27\x8c", + 0xcd => "\x27\x8d", 0xce => "\x27\x8e", 0xcf => "\x27\x8f", + 0xd0 => "\x27\x90", 0xd1 => "\x27\x91", 0xd2 => "\x27\x92", + 0xd3 => "\x27\x93", 0xd4 => "\x27\x94", 0xd5 => "\x21\x92", + 0xd6 => "\x21\x94", 0xd7 => "\x21\x95", 0xd8 => "\x27\x98", + 0xd9 => "\x27\x99", 0xda => "\x27\x9a", 0xdb => "\x27\x9b", + 0xdc => "\x27\x9c", 0xdd => "\x27\x9d", 0xde => "\x27\x9e", + 0xdf => "\x27\x9f", 0xe0 => "\x27\xa0", 0xe1 => "\x27\xa1", + 0xe2 => "\x27\xa2", 0xe3 => "\x27\xa3", 0xe4 => "\x27\xa4", + 0xe5 => "\x27\xa5", 0xe6 => "\x27\xa6", 0xe7 => "\x27\xa7", + 0xe8 => "\x27\xa8", 0xe9 => "\x27\xa9", 0xea => "\x27\xaa", + 0xeb => "\x27\xab", 0xec => "\x27\xac", 0xed => "\x27\xad", + 0xee => "\x27\xae", 0xef => "\x27\xaf", 0xf1 => "\x27\xb1", + 0xf2 => "\x27\xb2", 0xf3 => "\x27\xb3", 0xf4 => "\x27\xb4", + 0xf5 => "\x27\xb5", 0xf6 => "\x27\xb6", 0xf7 => "\x27\xb7", + 0xf8 => "\x27\xb8", 0xf9 => "\x27\xb9", 0xfa => "\x27\xba", + 0xfb => "\x27\xbb", 0xfc => "\x27\xbc", 0xfd => "\x27\xbd", + 0xfe => "\x27\xbe"); + + + + /**** Public Interface ****/ + + + /* Object Lifecycle */ + + /** + * Object constructor + */ + public function __construct() + { + parent::__construct(); + + + /* Object properties */ + + /* The font names are stored internally as Unicode UTF-16BE-encoded + * strings. Since this information is static, save unnecessary trips + * through iconv() and just use pre-encoded hexidecimal strings. + */ + $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] = + "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00" + . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00" + . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00" + . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x38\x00\x2c\x00\x20\x00" + . "\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00" + . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00" + . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00" + . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00" + . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00" + . "\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00" + . "\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00" + . "\x65\x00\x64\x00\x2e\x00\x49\x00\x54\x00\x43\x00\x20\x00\x5a\x00" + . "\x61\x00\x70\x00\x66\x00\x20\x00\x44\x00\x69\x00\x6e\x00\x67\x00" + . "\x62\x00\x61\x00\x74\x00\x73\x00\x20\x00\x69\x00\x73\x00\x20\x00" + . "\x61\x00\x20\x00\x72\x00\x65\x00\x67\x00\x69\x00\x73\x00\x74\x00" + . "\x65\x00\x72\x00\x65\x00\x64\x00\x20\x00\x74\x00\x72\x00\x61\x00" + . "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00" + . "\x66\x00\x20\x00\x49\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\x00" + . "\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x6c\x00\x20\x00" + . "\x54\x00\x79\x00\x70\x00\x65\x00\x66\x00\x61\x00\x63\x00\x65\x00" + . "\x20\x00\x43\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00" + . "\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e"; + $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] = + "\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00" + . "\x62\x00\x61\x00\x74\x00\x73"; + $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] = + "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] = + "\x00\x34\x00\x33\x00\x30\x00\x38\x00\x32"; + $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] = + "\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00" + . "\x62\x00\x61\x00\x74\x00\x73\x00\x20\x00\x4d\x00\x65\x00\x64\x00" + . "\x69\x00\x75\x00\x6d"; + $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] = + "\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30"; + $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = + "\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00" + . "\x62\x00\x61\x00\x74\x00\x73"; + + $this->_isBold = false; + $this->_isItalic = false; + $this->_isMonospaced = false; + + $this->_underlinePosition = -100; + $this->_underlineThickness = 50; + $this->_strikePosition = 225; + $this->_strikeThickness = 50; + + $this->_unitsPerEm = 1000; + + $this->_ascent = 1000; + $this->_descent = 0; + $this->_lineGap = 200; + + /* The glyph numbers assigned here are synthetic; they do not match the + * actual glyph numbers used by the font. This is not a big deal though + * since this data never makes it to the PDF file. It is only used + * internally for layout calculations. + */ + $this->_glyphWidths = array( + 0x00 => 0x01f4, 0x01 => 0x0116, 0x02 => 0x03ce, 0x03 => 0x03c1, + 0x04 => 0x03ce, 0x05 => 0x03d4, 0x06 => 0x02cf, 0x07 => 0x0315, + 0x08 => 0x0316, 0x09 => 0x0317, 0x0a => 0x02b2, 0x0b => 0x03c0, + 0x0c => 0x03ab, 0x0d => 0x0225, 0x0e => 0x0357, 0x0f => 0x038f, + 0x10 => 0x03a5, 0x11 => 0x038f, 0x12 => 0x03b1, 0x13 => 0x03ce, + 0x14 => 0x02f3, 0x15 => 0x034e, 0x16 => 0x02fa, 0x17 => 0x02f9, + 0x18 => 0x023b, 0x19 => 0x02a5, 0x1a => 0x02fb, 0x1b => 0x02f8, + 0x1c => 0x02f7, 0x1d => 0x02f2, 0x1e => 0x01ee, 0x1f => 0x0228, + 0x20 => 0x0219, 0x21 => 0x0241, 0x22 => 0x02b4, 0x23 => 0x0312, + 0x24 => 0x0314, 0x25 => 0x0314, 0x26 => 0x0316, 0x27 => 0x0319, + 0x28 => 0x031a, 0x29 => 0x0330, 0x2a => 0x0337, 0x2b => 0x0315, + 0x2c => 0x0349, 0x2d => 0x0337, 0x2e => 0x0341, 0x2f => 0x0330, + 0x30 => 0x033f, 0x31 => 0x039b, 0x32 => 0x02e8, 0x33 => 0x02d3, + 0x34 => 0x02ed, 0x35 => 0x0316, 0x36 => 0x0318, 0x37 => 0x02b7, + 0x38 => 0x0308, 0x39 => 0x0300, 0x3a => 0x0318, 0x3b => 0x02f7, + 0x3c => 0x02c3, 0x3d => 0x02c4, 0x3e => 0x02aa, 0x3f => 0x02bd, + 0x40 => 0x033a, 0x41 => 0x032f, 0x42 => 0x0315, 0x43 => 0x0315, + 0x44 => 0x02c3, 0x45 => 0x02af, 0x46 => 0x02b8, 0x47 => 0x02b1, + 0x48 => 0x0312, 0x49 => 0x0313, 0x4a => 0x02c9, 0x4b => 0x0317, + 0x4c => 0x0311, 0x4d => 0x0317, 0x4e => 0x0369, 0x4f => 0x02f9, + 0x50 => 0x02fa, 0x51 => 0x02fa, 0x52 => 0x02f7, 0x53 => 0x02f7, + 0x54 => 0x037c, 0x55 => 0x037c, 0x56 => 0x0314, 0x57 => 0x0310, + 0x58 => 0x01b6, 0x59 => 0x8a, 0x5a => 0x0115, 0x5b => 0x019f, + 0x5c => 0x0188, 0x5d => 0x0188, 0x5e => 0x029c, 0x5f => 0x029c, + 0x60 => 0x0186, 0x61 => 0x0186, 0x62 => 0x013d, 0x63 => 0x013d, + 0x64 => 0x0114, 0x65 => 0x0114, 0x66 => 0x01fd, 0x67 => 0x01fd, + 0x68 => 0x019a, 0x69 => 0x019a, 0x6a => 0xea, 0x6b => 0xea, + 0x6c => 0x014e, 0x6d => 0x014e, 0x6e => 0x02dc, 0x6f => 0x0220, + 0x70 => 0x0220, 0x71 => 0x038e, 0x72 => 0x029b, 0x73 => 0x02f8, + 0x74 => 0x02f8, 0x75 => 0x0308, 0x76 => 0x0253, 0x77 => 0x02b6, + 0x78 => 0x0272, 0x79 => 0x0314, 0x7a => 0x0314, 0x7b => 0x0314, + 0x7c => 0x0314, 0x7d => 0x0314, 0x7e => 0x0314, 0x7f => 0x0314, + 0x80 => 0x0314, 0x81 => 0x0314, 0x82 => 0x0314, 0x83 => 0x0314, + 0x84 => 0x0314, 0x85 => 0x0314, 0x86 => 0x0314, 0x87 => 0x0314, + 0x88 => 0x0314, 0x89 => 0x0314, 0x8a => 0x0314, 0x8b => 0x0314, + 0x8c => 0x0314, 0x8d => 0x0314, 0x8e => 0x0314, 0x8f => 0x0314, + 0x90 => 0x0314, 0x91 => 0x0314, 0x92 => 0x0314, 0x93 => 0x0314, + 0x94 => 0x0314, 0x95 => 0x0314, 0x96 => 0x0314, 0x97 => 0x0314, + 0x98 => 0x0314, 0x99 => 0x0314, 0x9a => 0x0314, 0x9b => 0x0314, + 0x9c => 0x0314, 0x9d => 0x0314, 0x9e => 0x0314, 0x9f => 0x0314, + 0xa0 => 0x0314, 0xa1 => 0x037e, 0xa2 => 0x0346, 0xa3 => 0x03f8, + 0xa4 => 0x01ca, 0xa5 => 0x02ec, 0xa6 => 0x039c, 0xa7 => 0x02ec, + 0xa8 => 0x0396, 0xa9 => 0x039f, 0xaa => 0x03a0, 0xab => 0x03a0, + 0xac => 0x0342, 0xad => 0x0369, 0xae => 0x033c, 0xaf => 0x039c, + 0xb0 => 0x039c, 0xb1 => 0x0395, 0xb2 => 0x03a2, 0xb3 => 0x03a3, + 0xb4 => 0x01cf, 0xb5 => 0x0373, 0xb6 => 0x0344, 0xb7 => 0x0344, + 0xb8 => 0x0363, 0xb9 => 0x0363, 0xba => 0x02b8, 0xbb => 0x02b8, + 0xbc => 0x036a, 0xbd => 0x036a, 0xbe => 0x02f8, 0xbf => 0x03b2, + 0xc0 => 0x0303, 0xc1 => 0x0361, 0xc2 => 0x0303, 0xc3 => 0x0378, + 0xc4 => 0x03c7, 0xc5 => 0x0378, 0xc6 => 0x033f, 0xc7 => 0x0369, + 0xc8 => 0x039f, 0xc9 => 0x03ca, 0xca => 0x0396); + + /* The cmap table is similarly synthesized. + */ + $cmapData = array( + 0x20 => 0x01, 0x2701 => 0x02, 0x2702 => 0x03, 0x2703 => 0x04, + 0x2704 => 0x05, 0x260e => 0x06, 0x2706 => 0x07, 0x2707 => 0x08, + 0x2708 => 0x09, 0x2709 => 0x0a, 0x261b => 0x0b, 0x261e => 0x0c, + 0x270c => 0x0d, 0x270d => 0x0e, 0x270e => 0x0f, 0x270f => 0x10, + 0x2710 => 0x11, 0x2711 => 0x12, 0x2712 => 0x13, 0x2713 => 0x14, + 0x2714 => 0x15, 0x2715 => 0x16, 0x2716 => 0x17, 0x2717 => 0x18, + 0x2718 => 0x19, 0x2719 => 0x1a, 0x271a => 0x1b, 0x271b => 0x1c, + 0x271c => 0x1d, 0x271d => 0x1e, 0x271e => 0x1f, 0x271f => 0x20, + 0x2720 => 0x21, 0x2721 => 0x22, 0x2722 => 0x23, 0x2723 => 0x24, + 0x2724 => 0x25, 0x2725 => 0x26, 0x2726 => 0x27, 0x2727 => 0x28, + 0x2605 => 0x29, 0x2729 => 0x2a, 0x272a => 0x2b, 0x272b => 0x2c, + 0x272c => 0x2d, 0x272d => 0x2e, 0x272e => 0x2f, 0x272f => 0x30, + 0x2730 => 0x31, 0x2731 => 0x32, 0x2732 => 0x33, 0x2733 => 0x34, + 0x2734 => 0x35, 0x2735 => 0x36, 0x2736 => 0x37, 0x2737 => 0x38, + 0x2738 => 0x39, 0x2739 => 0x3a, 0x273a => 0x3b, 0x273b => 0x3c, + 0x273c => 0x3d, 0x273d => 0x3e, 0x273e => 0x3f, 0x273f => 0x40, + 0x2740 => 0x41, 0x2741 => 0x42, 0x2742 => 0x43, 0x2743 => 0x44, + 0x2744 => 0x45, 0x2745 => 0x46, 0x2746 => 0x47, 0x2747 => 0x48, + 0x2748 => 0x49, 0x2749 => 0x4a, 0x274a => 0x4b, 0x274b => 0x4c, + 0x25cf => 0x4d, 0x274d => 0x4e, 0x25a0 => 0x4f, 0x274f => 0x50, + 0x2750 => 0x51, 0x2751 => 0x52, 0x2752 => 0x53, 0x25b2 => 0x54, + 0x25bc => 0x55, 0x25c6 => 0x56, 0x2756 => 0x57, 0x25d7 => 0x58, + 0x2758 => 0x59, 0x2759 => 0x5a, 0x275a => 0x5b, 0x275b => 0x5c, + 0x275c => 0x5d, 0x275d => 0x5e, 0x275e => 0x5f, 0x2768 => 0x60, + 0x2769 => 0x61, 0x276a => 0x62, 0x276b => 0x63, 0x276c => 0x64, + 0x276d => 0x65, 0x276e => 0x66, 0x276f => 0x67, 0x2770 => 0x68, + 0x2771 => 0x69, 0x2772 => 0x6a, 0x2773 => 0x6b, 0x2774 => 0x6c, + 0x2775 => 0x6d, 0x2761 => 0x6e, 0x2762 => 0x6f, 0x2763 => 0x70, + 0x2764 => 0x71, 0x2765 => 0x72, 0x2766 => 0x73, 0x2767 => 0x74, + 0x2663 => 0x75, 0x2666 => 0x76, 0x2665 => 0x77, 0x2660 => 0x78, + 0x2460 => 0x79, 0x2461 => 0x7a, 0x2462 => 0x7b, 0x2463 => 0x7c, + 0x2464 => 0x7d, 0x2465 => 0x7e, 0x2466 => 0x7f, 0x2467 => 0x80, + 0x2468 => 0x81, 0x2469 => 0x82, 0x2776 => 0x83, 0x2777 => 0x84, + 0x2778 => 0x85, 0x2779 => 0x86, 0x277a => 0x87, 0x277b => 0x88, + 0x277c => 0x89, 0x277d => 0x8a, 0x277e => 0x8b, 0x277f => 0x8c, + 0x2780 => 0x8d, 0x2781 => 0x8e, 0x2782 => 0x8f, 0x2783 => 0x90, + 0x2784 => 0x91, 0x2785 => 0x92, 0x2786 => 0x93, 0x2787 => 0x94, + 0x2788 => 0x95, 0x2789 => 0x96, 0x278a => 0x97, 0x278b => 0x98, + 0x278c => 0x99, 0x278d => 0x9a, 0x278e => 0x9b, 0x278f => 0x9c, + 0x2790 => 0x9d, 0x2791 => 0x9e, 0x2792 => 0x9f, 0x2793 => 0xa0, + 0x2794 => 0xa1, 0x2192 => 0xa2, 0x2194 => 0xa3, 0x2195 => 0xa4, + 0x2798 => 0xa5, 0x2799 => 0xa6, 0x279a => 0xa7, 0x279b => 0xa8, + 0x279c => 0xa9, 0x279d => 0xaa, 0x279e => 0xab, 0x279f => 0xac, + 0x27a0 => 0xad, 0x27a1 => 0xae, 0x27a2 => 0xaf, 0x27a3 => 0xb0, + 0x27a4 => 0xb1, 0x27a5 => 0xb2, 0x27a6 => 0xb3, 0x27a7 => 0xb4, + 0x27a8 => 0xb5, 0x27a9 => 0xb6, 0x27aa => 0xb7, 0x27ab => 0xb8, + 0x27ac => 0xb9, 0x27ad => 0xba, 0x27ae => 0xbb, 0x27af => 0xbc, + 0x27b1 => 0xbd, 0x27b2 => 0xbe, 0x27b3 => 0xbf, 0x27b4 => 0xc0, + 0x27b5 => 0xc1, 0x27b6 => 0xc2, 0x27b7 => 0xc3, 0x27b8 => 0xc4, + 0x27b9 => 0xc5, 0x27ba => 0xc6, 0x27bb => 0xc7, 0x27bc => 0xc8, + 0x27bd => 0xc9, 0x27be => 0xca); + require_once 'Zend/Pdf/Cmap.php'; + $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData( + Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC, $cmapData); + + + /* Resource dictionary */ + + /* The resource dictionary for the standard fonts is sparse because PDF + * viewers already have all of the metrics data. We only need to provide + * the font name and encoding method. + */ + $this->_resource->BaseFont = new Zend_Pdf_Element_Name('ZapfDingbats'); + + /* This font has a built-in custom character encoding method. Don't + * override with WinAnsi like the other built-in fonts or else it will + * not work as expected. + */ + $this->_resource->Encoding = null; + } + + + /* Information and Conversion Methods */ + + /** + * Convert string encoding from local encoding to font encoding. Overridden + * to defeat the conversion behavior for this ornamental font. + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + */ + public function encodeString($string, $charEncoding) + { + /* This isn't the optimal time to perform this conversion, but it must + * live here until the remainder of the layout code is completed. This, + * and the $charEncoding parameter, will go away soon... + */ + if ($charEncoding != 'UTF-16BE') { + $string = iconv($charEncoding, 'UTF-16BE', $string); + } + /** + * @todo Properly handle characters encoded as surrogate pairs. + */ + $encodedString = ''; + for ($i = 0; $i < strlen($string); $i++) { + $characterCode = (ord($string[$i++]) << 8) | ord($string[$i]); + if (isset($this->_toFontEncoding[$characterCode])) { + $encodedString .= $this->_toFontEncoding[$characterCode]; + } else { + /* For now, mimic the behavior in Zend_Pdf_Font::encodeString() + * where unknown characters are removed completely. This is not + * perfect, but we should be consistent. In a future revision, + * we will use the well-known substitution character 0x1a + * (Control-Z). + */ + } + } + return $encodedString; + } + + /** + * Convert string encoding from font encoding to local encoding. Overridden + * to defeat the conversion behavior for this ornamental font. + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + */ + public function decodeString($string, $charEncoding) + { + $decodedString = ''; + for ($i = 0; $i < strlen($string); $i++) { + $characterCode = ord($string[$i]); + if (isset($this->_fromFontEncoding[$characterCode])) { + $decodedString .= $this->_fromFontEncoding[$characterCode]; + } else { + /* For now, mimic the behavior in Zend_Pdf_Font::encodeString() + * where unknown characters are removed completely. This is not + * perfect, but we should be consistent. In a future revision, + * we will use the Unicode substitution character (U+FFFD). + */ + } + } + if ($charEncoding != 'UTF-16BE') { + $decodedString = iconv('UTF-16BE', $charEncoding, $decodedString); + } + return $decodedString; + } + + /** + * Converts a Latin-encoded string that fakes the font's internal encoding + * to the proper Unicode characters, in UTF-16BE encoding. + * + * Used to maintain backwards compatibility with the 20 year-old legacy + * method of using this font, which is still employed by recent versions of + * some popular word processors. + * + * Note that using this method adds overhead due to the additional + * character conversion. Don't use this for new code; it is more efficient + * to use the appropriate Unicode characters directly. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source + * string. Defaults to current locale. + * @return string + */ + public function toUnicode($string, $charEncoding = '') + { + /* When using these faked strings, the closest match to the font's + * internal encoding is ISO-8859-1. + */ + if ($charEncoding != 'ISO-8859-1') { + $string = iconv($charEncoding, 'ISO-8859-1', $string); + } + return $this->decodeString($string, 'UTF-16BE'); + } +} diff --git a/library/Zend/Pdf/Resource/Font/Type0.php b/library/Zend/Pdf/Resource/Font/Type0.php new file mode 100755 index 000000000..4a88580cf --- /dev/null +++ b/library/Zend/Pdf/Resource/Font/Type0.php @@ -0,0 +1,257 @@ +> def' . "\n" + . '/CMapName /Adobe-Identity-UCS def ' . "\n" + . '/CMapType 2 def ' . "\n" + . '1 begincodespacerange' . "\n" + . '<0000> ' . "\n" + . 'endcodespacerange ' . "\n" + . '1 beginbfrange ' . "\n" + . '<0000> <0000> ' . "\n" + . 'endbfrange ' . "\n" + . 'endcmap ' . "\n" + . 'CMapName currentdict /CMap defineresource pop ' . "\n" + . 'end ' + . 'end '; + } + + /** + * Object constructor + * + */ + public function __construct(Zend_Pdf_Resource_Font_CidFont $descendantFont) + { + parent::__construct(); + + $this->_objectFactory->attach($descendantFont->getFactory()); + + $this->_fontType = Zend_Pdf_Font::TYPE_TYPE_0; + $this->_descendantFont = $descendantFont; + + + $this->_fontNames = $descendantFont->getFontNames(); + + $this->_isBold = $descendantFont->isBold(); + $this->_isItalic = $descendantFont->isItalic(); + $this->_isMonospaced = $descendantFont->isMonospace(); + + $this->_underlinePosition = $descendantFont->getUnderlinePosition(); + $this->_underlineThickness = $descendantFont->getUnderlineThickness(); + $this->_strikePosition = $descendantFont->getStrikePosition(); + $this->_strikeThickness = $descendantFont->getStrikeThickness(); + + $this->_unitsPerEm = $descendantFont->getUnitsPerEm(); + + $this->_ascent = $descendantFont->getAscent(); + $this->_descent = $descendantFont->getDescent(); + $this->_lineGap = $descendantFont->getLineGap(); + + + $this->_resource->Subtype = new Zend_Pdf_Element_Name('Type0'); + $this->_resource->BaseFont = new Zend_Pdf_Element_Name($descendantFont->getResource()->BaseFont->value); + $this->_resource->DescendantFonts = new Zend_Pdf_Element_Array(array( $descendantFont->getResource() )); + $this->_resource->Encoding = new Zend_Pdf_Element_Name('Identity-H'); + + $toUnicode = $this->_objectFactory->newStreamObject(self::getToUnicodeCMapData()); + $this->_resource->ToUnicode = $toUnicode; + + } + + /** + * Returns an array of glyph numbers corresponding to the Unicode characters. + * + * Zend_Pdf uses 'Identity-H' encoding for Type 0 fonts. + * So we don't need to perform any conversion + * + * See also {@link glyphNumberForCharacter()}. + * + * @param array $characterCodes Array of Unicode character codes (code points). + * @return array Array of glyph numbers. + */ + public function glyphNumbersForCharacters($characterCodes) + { + return $characterCodes; + } + + /** + * Returns the glyph number corresponding to the Unicode character. + * + * Zend_Pdf uses 'Identity-H' encoding for Type 0 fonts. + * So we don't need to perform any conversion + * + * @param integer $characterCode Unicode character code (code point). + * @return integer Glyph number. + */ + public function glyphNumberForCharacter($characterCode) + { + return $characterCode; + } + + /** + * Returns a number between 0 and 1 inclusive that indicates the percentage + * of characters in the string which are covered by glyphs in this font. + * + * Since no one font will contain glyphs for the entire Unicode character + * range, this method can be used to help locate a suitable font when the + * actual contents of the string are not known. + * + * Note that some fonts lie about the characters they support. Additionally, + * fonts don't usually contain glyphs for control characters such as tabs + * and line breaks, so it is rare that you will get back a full 1.0 score. + * The resulting value should be considered informational only. + * + * @param string $string + * @param string $charEncoding (optional) Character encoding of source text. + * If omitted, uses 'current locale'. + * @return float + */ + public function getCoveredPercentage($string, $charEncoding = '') + { + return $this->_descendantFont->getCoveredPercentage($string, $charEncoding); + } + + /** + * Returns the widths of the glyphs. + * + * The widths are expressed in the font's glyph space. You are responsible + * for converting to user space as necessary. See {@link unitsPerEm()}. + * + * Throws an exception if the glyph number is out of range. + * + * See also {@link widthForGlyph()}. + * + * @param array &$glyphNumbers Array of glyph numbers. + * @return array Array of glyph widths (integers). + * @throws Zend_Pdf_Exception + */ + public function widthsForGlyphs($glyphNumbers) + { + return $this->_descendantFont->widthsForChars($glyphNumbers); + } + + /** + * Returns the width of the glyph. + * + * Like {@link widthsForGlyphs()} but used for one glyph at a time. + * + * @param integer $glyphNumber + * @return integer + * @throws Zend_Pdf_Exception + */ + public function widthForGlyph($glyphNumber) + { + return $this->_descendantFont->widthForChar($glyphNumber); + } + + /** + * Convert string to the font encoding. + * + * The method is used to prepare string for text drawing operators + * + * @param string $string + * @param string $charEncoding Character encoding of source text. + * @return string + */ + public function encodeString($string, $charEncoding) + { + return iconv($charEncoding, 'UTF-16BE', $string); + } + + /** + * Convert string from the font encoding. + * + * The method is used to convert strings retrieved from existing content streams + * + * @param string $string + * @param string $charEncoding Character encoding of resulting text. + * @return string + */ + public function decodeString($string, $charEncoding) + { + return iconv('UTF-16BE', $charEncoding, $string); + } +} diff --git a/library/Zend/Pdf/Resource/GraphicsState.php b/library/Zend/Pdf/Resource/GraphicsState.php new file mode 100755 index 000000000..960a0dece --- /dev/null +++ b/library/Zend/Pdf/Resource/GraphicsState.php @@ -0,0 +1,109 @@ +Type = new Zend_Pdf_Element_Name('ExtGState'); + + $extGStateObject = $factory->newObject($gsDictionary); + } + + if ($extGStateObject->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Graphics state PDF object must be a dictionary'); + } + + parent::__construct($gsDictionary); + } + + /** + * Set the transparancy + * + * $alpha == 0 - transparent + * $alpha == 1 - opaque + * + * Transparency modes, supported by PDF: + * Normal (default), Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, + * SoftLight, Difference, Exclusion + * + * @param float $alpha + * @param string $mode + * @throws Zend_Pdf_Exception + * @return Zend_Pdf_Canvas_Interface + */ + public function setAlpha($alpha, $mode = 'Normal') + { + if (!in_array($mode, array('Normal', 'Multiply', 'Screen', 'Overlay', 'Darken', 'Lighten', 'ColorDodge', + 'ColorBurn', 'HardLight', 'SoftLight', 'Difference', 'Exclusion'))) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Unsupported transparency mode.'); + } + if (!is_numeric($alpha) || $alpha < 0 || $alpha > 1) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Alpha value must be numeric between 0 (transparent) and 1 (opaque).'); + } + + $this->_resource->BM = new Zend_Pdf_Element_Name($mode); + $this->_resource->CA = new Zend_Pdf_Element_Numeric($alpha); + $this->_resource->ca = new Zend_Pdf_Element_Numeric($alpha); + } + + + /** @todo add other Graphics State features support */ +} + diff --git a/library/Zend/Pdf/Resource/Image.php b/library/Zend/Pdf/Resource/Image.php new file mode 100755 index 000000000..b2a2c3653 --- /dev/null +++ b/library/Zend/Pdf/Resource/Image.php @@ -0,0 +1,73 @@ +_resource->dictionary->Type = new Zend_Pdf_Element_Name('XObject'); + $this->_resource->dictionary->Subtype = new Zend_Pdf_Element_Name('Image'); + } + /** + * get the height in pixels of the image + * + * @return integer + */ + abstract public function getPixelHeight(); + + /** + * get the width in pixels of the image + * + * @return integer + */ + abstract public function getPixelWidth(); + + /** + * gets an associative array of information about an image + * + * @return array + */ + abstract public function getProperties(); +} + diff --git a/library/Zend/Pdf/Resource/Image/Jpeg.php b/library/Zend/Pdf/Resource/Image/Jpeg.php new file mode 100755 index 000000000..ad13235be --- /dev/null +++ b/library/Zend/Pdf/Resource/Image/Jpeg.php @@ -0,0 +1,152 @@ +_resource->dictionary; + $imageDictionary->Width = new Zend_Pdf_Element_Numeric($imageInfo[0]); + $imageDictionary->Height = new Zend_Pdf_Element_Numeric($imageInfo[1]); + $imageDictionary->ColorSpace = new Zend_Pdf_Element_Name($colorSpace); + $imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($imageInfo['bits']); + if ($imageInfo[2] == IMAGETYPE_JPEG) { + $imageDictionary->Filter = new Zend_Pdf_Element_Name('DCTDecode'); + } else if ($imageInfo[2] == IMAGETYPE_JPEG2000){ + $imageDictionary->Filter = new Zend_Pdf_Element_Name('JPXDecode'); + } + + if (($imageFile = @fopen($imageFileName, 'rb')) === false ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." ); + } + $byteCount = filesize($imageFileName); + $this->_resource->value = ''; + + while ($byteCount > 0 && !feof($imageFile)) { + $nextBlock = fread($imageFile, $byteCount); + if ($nextBlock === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Error occured while '$imageFileName' file reading." ); + } + + $this->_resource->value .= $nextBlock; + $byteCount -= strlen($nextBlock); + } + if ($byteCount != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Error occured while '$imageFileName' file reading." ); + } + fclose($imageFile); + $this->_resource->skipFilters(); + + $this->_width = $imageInfo[0]; + $this->_height = $imageInfo[1]; + $this->_imageProperties = array(); + $this->_imageProperties['bitDepth'] = $imageInfo['bits']; + $this->_imageProperties['jpegImageType'] = $imageInfo[2]; + $this->_imageProperties['jpegColorType'] = $imageInfo['channels']; + } + + /** + * Image width + */ + public function getPixelWidth() { + return $this->_width; + } + + /** + * Image height + */ + public function getPixelHeight() { + return $this->_height; + } + + /** + * Image properties + */ + public function getProperties() { + return $this->_imageProperties; + } +} + diff --git a/library/Zend/Pdf/Resource/Image/Png.php b/library/Zend/Pdf/Resource/Image/Png.php new file mode 100755 index 000000000..661b4325f --- /dev/null +++ b/library/Zend/Pdf/Resource/Image/Png.php @@ -0,0 +1,380 @@ +_width = $width; + $this->_height = $height; + $this->_imageProperties = array(); + $this->_imageProperties['bitDepth'] = $bits; + $this->_imageProperties['pngColorType'] = $color; + $this->_imageProperties['pngFilterType'] = $prefilter; + $this->_imageProperties['pngCompressionType'] = $compression; + $this->_imageProperties['pngInterlacingType'] = $interlacing; + + fseek($imageFile, 4, SEEK_CUR); //4 Byte Ending Sequence + $imageData = ''; + + /* + * The following loop processes PNG chunks. 4 Byte Longs are packed first give the chunk length + * followed by the chunk signature, a four byte code. IDAT and IEND are manditory in any PNG. + */ + while (!feof($imageFile)) { + $chunkLengthBytes = fread($imageFile, 4); + if ($chunkLengthBytes === false) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Error ocuured while image file reading.'); + } + + $chunkLengthtmp = unpack('Ni', $chunkLengthBytes); + $chunkLength = $chunkLengthtmp['i']; + $chunkType = fread($imageFile, 4); + switch($chunkType) { + case 'IDAT': //Image Data + /* + * Reads the actual image data from the PNG file. Since we know at this point that the compression + * strategy is the default strategy, we also know that this data is Zip compressed. We will either copy + * the data directly to the PDF and provide the correct FlateDecode predictor, or decompress the data + * decode the filters and output the data as a raw pixel map. + */ + $imageData .= fread($imageFile, $chunkLength); + fseek($imageFile, 4, SEEK_CUR); + break; + + case 'PLTE': //Palette + $paletteData = fread($imageFile, $chunkLength); + fseek($imageFile, 4, SEEK_CUR); + break; + + case 'tRNS': //Basic (non-alpha channel) transparency. + $trnsData = fread($imageFile, $chunkLength); + switch ($color) { + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY: + $baseColor = ord(substr($trnsData, 1, 1)); + $transparencyData = array(new Zend_Pdf_Element_Numeric($baseColor), + new Zend_Pdf_Element_Numeric($baseColor)); + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB: + $red = ord(substr($trnsData,1,1)); + $green = ord(substr($trnsData,3,1)); + $blue = ord(substr($trnsData,5,1)); + $transparencyData = array(new Zend_Pdf_Element_Numeric($red), + new Zend_Pdf_Element_Numeric($red), + new Zend_Pdf_Element_Numeric($green), + new Zend_Pdf_Element_Numeric($green), + new Zend_Pdf_Element_Numeric($blue), + new Zend_Pdf_Element_Numeric($blue)); + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_INDEXED: + //Find the first transparent color in the index, we will mask that. (This is a bit of a hack. This should be a SMask and mask all entries values). + if(($trnsIdx = strpos($trnsData, "\0")) !== false) { + $transparencyData = array(new Zend_Pdf_Element_Numeric($trnsIdx), + new Zend_Pdf_Element_Numeric($trnsIdx)); + } + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY_ALPHA: + // Fall through to the next case + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "tRNS chunk illegal for Alpha Channel Images" ); + break; + } + fseek($imageFile, 4, SEEK_CUR); //4 Byte Ending Sequence + break; + + case 'IEND'; + break 2; //End the loop too + + default: + fseek($imageFile, $chunkLength + 4, SEEK_CUR); //Skip the section + break; + } + } + fclose($imageFile); + + $compressed = true; + $imageDataTmp = ''; + $smaskData = ''; + switch ($color) { + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB: + $colorSpace = new Zend_Pdf_Element_Name('DeviceRGB'); + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY: + $colorSpace = new Zend_Pdf_Element_Name('DeviceGray'); + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_INDEXED: + if(empty($paletteData)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "PNG Corruption: No palette data read for indexed type PNG." ); + } + $colorSpace = new Zend_Pdf_Element_Array(); + $colorSpace->items[] = new Zend_Pdf_Element_Name('Indexed'); + $colorSpace->items[] = new Zend_Pdf_Element_Name('DeviceRGB'); + $colorSpace->items[] = new Zend_Pdf_Element_Numeric((strlen($paletteData)/3-1)); + $paletteObject = $this->_objectFactory->newObject(new Zend_Pdf_Element_String_Binary($paletteData)); + $colorSpace->items[] = $paletteObject; + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY_ALPHA: + /* + * To decode PNG's with alpha data we must create two images from one. One image will contain the Gray data + * the other will contain the Gray transparency overlay data. The former will become the object data and the latter + * will become the Shadow Mask (SMask). + */ + if($bits > 8) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Alpha PNGs with bit depth > 8 are not yet supported"); + } + + $colorSpace = new Zend_Pdf_Element_Name('DeviceGray'); + + require_once 'Zend/Pdf/ElementFactory.php'; + $decodingObjFactory = Zend_Pdf_ElementFactory::createFactory(1); + $decodingStream = $decodingObjFactory->newStreamObject($imageData); + $decodingStream->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode'); + $decodingStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary(); + $decodingStream->dictionary->DecodeParms->Predictor = new Zend_Pdf_Element_Numeric(15); + $decodingStream->dictionary->DecodeParms->Columns = new Zend_Pdf_Element_Numeric($width); + $decodingStream->dictionary->DecodeParms->Colors = new Zend_Pdf_Element_Numeric(2); //GreyAlpha + $decodingStream->dictionary->DecodeParms->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits); + $decodingStream->skipFilters(); + + $pngDataRawDecoded = $decodingStream->value; + + //Iterate every pixel and copy out gray data and alpha channel (this will be slow) + for($pixel = 0, $pixelcount = ($width * $height); $pixel < $pixelcount; $pixel++) { + $imageDataTmp .= $pngDataRawDecoded[($pixel*2)]; + $smaskData .= $pngDataRawDecoded[($pixel*2)+1]; + } + $compressed = false; + $imageData = $imageDataTmp; //Overwrite image data with the gray channel without alpha + break; + + case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA: + /* + * To decode PNG's with alpha data we must create two images from one. One image will contain the RGB data + * the other will contain the Gray transparency overlay data. The former will become the object data and the latter + * will become the Shadow Mask (SMask). + */ + if($bits > 8) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Alpha PNGs with bit depth > 8 are not yet supported"); + } + + $colorSpace = new Zend_Pdf_Element_Name('DeviceRGB'); + + require_once 'Zend/Pdf/ElementFactory.php'; + $decodingObjFactory = Zend_Pdf_ElementFactory::createFactory(1); + $decodingStream = $decodingObjFactory->newStreamObject($imageData); + $decodingStream->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode'); + $decodingStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary(); + $decodingStream->dictionary->DecodeParms->Predictor = new Zend_Pdf_Element_Numeric(15); + $decodingStream->dictionary->DecodeParms->Columns = new Zend_Pdf_Element_Numeric($width); + $decodingStream->dictionary->DecodeParms->Colors = new Zend_Pdf_Element_Numeric(4); //RGBA + $decodingStream->dictionary->DecodeParms->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits); + $decodingStream->skipFilters(); + + $pngDataRawDecoded = $decodingStream->value; + + //Iterate every pixel and copy out rgb data and alpha channel (this will be slow) + for($pixel = 0, $pixelcount = ($width * $height); $pixel < $pixelcount; $pixel++) { + $imageDataTmp .= $pngDataRawDecoded[($pixel*4)+0] . $pngDataRawDecoded[($pixel*4)+1] . $pngDataRawDecoded[($pixel*4)+2]; + $smaskData .= $pngDataRawDecoded[($pixel*4)+3]; + } + + $compressed = false; + $imageData = $imageDataTmp; //Overwrite image data with the RGB channel without alpha + break; + + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "PNG Corruption: Invalid color space." ); + } + + if(empty($imageData)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Corrupt PNG Image. Mandatory IDAT chunk not found." ); + } + + $imageDictionary = $this->_resource->dictionary; + if(!empty($smaskData)) { + /* + * Includes the Alpha transparency data as a Gray Image, then assigns the image as the Shadow Mask for the main image data. + */ + $smaskStream = $this->_objectFactory->newStreamObject($smaskData); + $smaskStream->dictionary->Type = new Zend_Pdf_Element_Name('XObject'); + $smaskStream->dictionary->Subtype = new Zend_Pdf_Element_Name('Image'); + $smaskStream->dictionary->Width = new Zend_Pdf_Element_Numeric($width); + $smaskStream->dictionary->Height = new Zend_Pdf_Element_Numeric($height); + $smaskStream->dictionary->ColorSpace = new Zend_Pdf_Element_Name('DeviceGray'); + $smaskStream->dictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits); + $imageDictionary->SMask = $smaskStream; + + // Encode stream with FlateDecode filter + $smaskStreamDecodeParms = array(); + $smaskStreamDecodeParms['Predictor'] = new Zend_Pdf_Element_Numeric(15); + $smaskStreamDecodeParms['Columns'] = new Zend_Pdf_Element_Numeric($width); + $smaskStreamDecodeParms['Colors'] = new Zend_Pdf_Element_Numeric(1); + $smaskStreamDecodeParms['BitsPerComponent'] = new Zend_Pdf_Element_Numeric(8); + $smaskStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary($smaskStreamDecodeParms); + $smaskStream->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode'); + } + + if(!empty($transparencyData)) { + //This is experimental and not properly tested. + $imageDictionary->Mask = new Zend_Pdf_Element_Array($transparencyData); + } + + $imageDictionary->Width = new Zend_Pdf_Element_Numeric($width); + $imageDictionary->Height = new Zend_Pdf_Element_Numeric($height); + $imageDictionary->ColorSpace = $colorSpace; + $imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits); + $imageDictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode'); + + $decodeParms = array(); + $decodeParms['Predictor'] = new Zend_Pdf_Element_Numeric(15); // Optimal prediction + $decodeParms['Columns'] = new Zend_Pdf_Element_Numeric($width); + $decodeParms['Colors'] = new Zend_Pdf_Element_Numeric((($color==Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB || $color==Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA)?(3):(1))); + $decodeParms['BitsPerComponent'] = new Zend_Pdf_Element_Numeric($bits); + $imageDictionary->DecodeParms = new Zend_Pdf_Element_Dictionary($decodeParms); + + //Include only the image IDAT section data. + $this->_resource->value = $imageData; + + //Skip double compression + if ($compressed) { + $this->_resource->skipFilters(); + } + } + + /** + * Image width + */ + public function getPixelWidth() { + return $this->_width; + } + + /** + * Image height + */ + public function getPixelHeight() { + return $this->_height; + } + + /** + * Image properties + */ + public function getProperties() { + return $this->_imageProperties; + } +} diff --git a/library/Zend/Pdf/Resource/Image/Tiff.php b/library/Zend/Pdf/Resource/Image/Tiff.php new file mode 100755 index 000000000..3618951a7 --- /dev/null +++ b/library/Zend/Pdf/Resource/Image/Tiff.php @@ -0,0 +1,442 @@ +_endianType)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("The unpackBytes function can only be used after the endianness of the file is known"); + } + switch($type) { + case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_BYTE: + $format = 'C'; + $unpacked = unpack($format, $bytes); + return $unpacked[1]; + break; + case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT: + $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'v':'n'; + $unpacked = unpack($format, $bytes); + return $unpacked[1]; + break; + case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG: + $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V':'N'; + $unpacked = unpack($format, $bytes); + return $unpacked[1]; + break; + case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_RATIONAL: + $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V2':'N2'; + $unpacked = unpack($format, $bytes); + return ($unpacked[1]/$unpacked[2]); + break; + } + } + + /** + * Object constructor + * + * @param string $imageFileName + * @throws Zend_Pdf_Exception + */ + public function __construct($imageFileName) + { + if (($imageFile = @fopen($imageFileName, 'rb')) === false ) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." ); + } + + $byteOrderIndicator = fread($imageFile, 2); + if($byteOrderIndicator == 'II') { + $this->_endianType = Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE; + } else if($byteOrderIndicator == 'MM') { + $this->_endianType = Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_BIG; + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Not a tiff file or Tiff corrupt. No byte order indication found" ); + } + + $version = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2)); + + if($version != 42) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( "Not a tiff file or Tiff corrupt. Incorrect version number." ); + } + $ifdOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4)); + + $fileStats = fstat($imageFile); + $this->_fileSize = $fileStats['size']; + + /* + * Tiff files are stored as a series of Image File Directories (IFD) each direcctory + * has a specific number of entries each 12 bytes in length. At the end of the directories + * is four bytes pointing to the offset of the next IFD. + */ + + while($ifdOffset > 0) { + if(fseek($imageFile, $ifdOffset, SEEK_SET) == -1 || $ifdOffset+2 >= $this->_fileSize) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Could not seek to the image file directory as indexed by the file. Likely cause is TIFF corruption. Offset: ". $ifdOffset); + } + + $numDirEntries = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2)); + + /* + * Since we now know how many entries are in this (IFD) we can extract the data. + * The format of a TIFF directory entry is: + * + * 2 bytes (short) tag code; See TIFF_TAG constants at the top for supported values. (There are many more in the spec) + * 2 bytes (short) field type + * 4 bytes (long) number of values, or value count. + * 4 bytes (mixed) data if the data will fit into 4 bytes or an offset if the data is too large. + */ + for($dirEntryIdx = 1; $dirEntryIdx <= $numDirEntries; $dirEntryIdx++) { + $tag = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2)); + $fieldType = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2)); + $valueCount = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4)); + + switch($fieldType) { + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_BYTE: + $fieldLength = $valueCount; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_ASCII: + $fieldLength = $valueCount; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_SHORT: + $fieldLength = $valueCount * 2; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_LONG: + $fieldLength = $valueCount * 4; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_RATIONAL: + $fieldLength = $valueCount * 8; + break; + default: + $fieldLength = $valueCount; + } + + $offsetBytes = fread($imageFile, 4); + + if($fieldLength <= 4) { + switch($fieldType) { + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_BYTE: + $value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_BYTE, $offsetBytes); + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_ASCII: + //Fall through to next case + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_LONG: + $value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, $offsetBytes); + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_SHORT: + //Fall through to next case + default: + $value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, $offsetBytes); + } + } else { + $refOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, $offsetBytes); + } + /* + * Linear tag processing is probably not the best way to do this. I've processed the tags according to the + * Tiff 6 specification and make some assumptions about when tags will be < 4 bytes and fit into $value and when + * they will be > 4 bytes and require seek/extraction of the offset. Same goes for extracting arrays of data, like + * the data offsets and length. This should be fixed in the future. + */ + switch($tag) { + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_IMAGE_WIDTH: + $this->_width = $value; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_IMAGE_LENGTH: + $this->_height = $value; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_BITS_PER_SAMPLE: + if($valueCount>1) { + $fp = ftell($imageFile); + fseek($imageFile, $refOffset, SEEK_SET); + $this->_bitsPerSample = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2)); + fseek($imageFile, $fp, SEEK_SET); + } else { + $this->_bitsPerSample = $value; + } + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_COMPRESSION: + $this->_compression = $value; + switch($value) { + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_UNCOMPRESSED: + $this->_filter = 'None'; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_CCITT1D: + //Fall through to next case + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_GROUP_3_FAX: + //Fall through to next case + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_GROUP_4_FAX: + $this->_filter = 'CCITTFaxDecode'; + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("CCITTFaxDecode Compression Mode Not Currently Supported"); + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_LZW: + $this->_filter = 'LZWDecode'; + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("LZWDecode Compression Mode Not Currently Supported"); + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_JPEG: + $this->_filter = 'DCTDecode'; //Should work, doesnt... + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("JPEG Compression Mode Not Currently Supported"); + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_FLATE: + //fall through to next case + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_FLATE_OBSOLETE_CODE: + $this->_filter = 'FlateDecode'; + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("ZIP/Flate Compression Mode Not Currently Supported"); + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_PACKBITS: + $this->_filter = 'RunLengthDecode'; + break; + } + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_PHOTOMETRIC_INTERPRETATION: + $this->_colorCode = $value; + $this->_whiteIsZero = false; + $this->_blackIsZero = false; + switch($value) { + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO: + $this->_whiteIsZero = true; + $this->_colorSpace = 'DeviceGray'; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO: + $this->_blackIsZero = true; + $this->_colorSpace = 'DeviceGray'; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_YCBCR: + //fall through to next case + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_RGB: + $this->_colorSpace = 'DeviceRGB'; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_RGB_INDEXED: + $this->_colorSpace = 'Indexed'; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_CMYK: + $this->_colorSpace = 'DeviceCMYK'; + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_CIELAB: + $this->_colorSpace = 'Lab'; + break; + default: + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('TIFF: Unknown or Unsupported Color Type: '. $value); + } + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_STRIP_OFFSETS: + if($valueCount>1) { + $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V*':'N*'; + $fp = ftell($imageFile); + fseek($imageFile, $refOffset, SEEK_SET); + $stripOffsetsBytes = fread($imageFile, $fieldLength); + $this->_imageDataOffset = unpack($format, $stripOffsetsBytes); + fseek($imageFile, $fp, SEEK_SET); + } else { + $this->_imageDataOffset = $value; + } + break; + case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_STRIP_BYTE_COUNTS: + if($valueCount>1) { + $format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V*':'N*'; + $fp = ftell($imageFile); + fseek($imageFile, $refOffset, SEEK_SET); + $stripByteCountsBytes = fread($imageFile, $fieldLength); + $this->_imageDataLength = unpack($format, $stripByteCountsBytes); + fseek($imageFile, $fp, SEEK_SET); + } else { + $this->_imageDataLength = $value; + } + break; + default: + //For debugging. It should be harmless to ignore unknown tags, though there is some good info in them. + //echo "Unknown tag detected: ". $tag . " value: ". $value; + } + } + $ifdOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4)); + } + + if(!isset($this->_imageDataOffset) || !isset($this->_imageDataLength)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("TIFF: The image processed did not contain image data as expected."); + } + + $imageDataBytes = ''; + if(is_array($this->_imageDataOffset)) { + if(!is_array($this->_imageDataLength)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("TIFF: The image contained multiple data offsets but not multiple data lengths. Tiff may be corrupt."); + } + foreach($this->_imageDataOffset as $idx => $offset) { + fseek($imageFile, $this->_imageDataOffset[$idx], SEEK_SET); + $imageDataBytes .= fread($imageFile, $this->_imageDataLength[$idx]); + } + } else { + fseek($imageFile, $this->_imageDataOffset, SEEK_SET); + $imageDataBytes = fread($imageFile, $this->_imageDataLength); + } + if($imageDataBytes === '') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("TIFF: No data. Image Corruption"); + } + + fclose($imageFile); + + parent::__construct(); + + $imageDictionary = $this->_resource->dictionary; + if(!isset($this->_width) || !isset($this->_width)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Problem reading tiff file. Tiff is probably corrupt."); + } + + $this->_imageProperties = array(); + $this->_imageProperties['bitDepth'] = $this->_bitsPerSample; + $this->_imageProperties['fileSize'] = $this->_fileSize; + $this->_imageProperties['TIFFendianType'] = $this->_endianType; + $this->_imageProperties['TIFFcompressionType'] = $this->_compression; + $this->_imageProperties['TIFFwhiteIsZero'] = $this->_whiteIsZero; + $this->_imageProperties['TIFFblackIsZero'] = $this->_blackIsZero; + $this->_imageProperties['TIFFcolorCode'] = $this->_colorCode; + $this->_imageProperties['TIFFimageDataOffset'] = $this->_imageDataOffset; + $this->_imageProperties['TIFFimageDataLength'] = $this->_imageDataLength; + $this->_imageProperties['PDFfilter'] = $this->_filter; + $this->_imageProperties['PDFcolorSpace'] = $this->_colorSpace; + + $imageDictionary->Width = new Zend_Pdf_Element_Numeric($this->_width); + if($this->_whiteIsZero === true) { + $imageDictionary->Decode = new Zend_Pdf_Element_Array(array(new Zend_Pdf_Element_Numeric(1), new Zend_Pdf_Element_Numeric(0))); + } + $imageDictionary->Height = new Zend_Pdf_Element_Numeric($this->_height); + $imageDictionary->ColorSpace = new Zend_Pdf_Element_Name($this->_colorSpace); + $imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($this->_bitsPerSample); + if(isset($this->_filter) && $this->_filter != 'None') { + $imageDictionary->Filter = new Zend_Pdf_Element_Name($this->_filter); + } + + $this->_resource->value = $imageDataBytes; + $this->_resource->skipFilters(); + } + /** + * Image width (defined in Zend_Pdf_Resource_Image_Interface) + */ + public function getPixelWidth() { + return $this->_width; + } + + /** + * Image height (defined in Zend_Pdf_Resource_Image_Interface) + */ + public function getPixelHeight() { + return $this->_height; + } + + /** + * Image properties (defined in Zend_Pdf_Resource_Image_Interface) + */ + public function getProperties() { + return $this->_imageProperties; + } +} + diff --git a/library/Zend/Pdf/Resource/ImageFactory.php b/library/Zend/Pdf/Resource/ImageFactory.php new file mode 100755 index 000000000..436a90f84 --- /dev/null +++ b/library/Zend/Pdf/Resource/ImageFactory.php @@ -0,0 +1,71 @@ +_context = null; + $this->_elements = array(); + $this->_objFactory = null; + } + + /** + * Character with code $chCode is white space + * + * @param integer $chCode + * @return boolean + */ + public static function isWhiteSpace($chCode) + { + if ($chCode == 0x00 || // null character + $chCode == 0x09 || // Tab + $chCode == 0x0A || // Line feed + $chCode == 0x0C || // Form Feed + $chCode == 0x0D || // Carriage return + $chCode == 0x20 // Space + ) { + return true; + } else { + return false; + } + } + + + /** + * Character with code $chCode is a delimiter character + * + * @param integer $chCode + * @return boolean + */ + public static function isDelimiter($chCode ) + { + if ($chCode == 0x28 || // '(' + $chCode == 0x29 || // ')' + $chCode == 0x3C || // '<' + $chCode == 0x3E || // '>' + $chCode == 0x5B || // '[' + $chCode == 0x5D || // ']' + $chCode == 0x7B || // '{' + $chCode == 0x7D || // '}' + $chCode == 0x2F || // '/' + $chCode == 0x25 // '%' + ) { + return true; + } else { + return false; + } + } + + + /** + * Skip white space + * + * @param boolean $skipComment + */ + public function skipWhiteSpace($skipComment = true) + { + if ($skipComment) { + while (true) { + $this->offset += strspn($this->data, "\x00\t\n\f\r ", $this->offset); + + if ($this->offset < strlen($this->data) && $this->data[$this->offset] == '%') { + // Skip comment + $this->offset += strcspn($this->data, "\r\n", $this->offset); + } else { + // Non white space character not equal to '%' is found + return; + } + } + } else { + $this->offset += strspn($this->data, "\x00\t\n\f\r ", $this->offset); + } + +// /** Original (non-optimized) implementation. */ +// +// while ($this->offset < strlen($this->data)) { +// if (strpos("\x00\t\n\f\r ", $this->data[$this->offset]) !== false) { +// $this->offset++; +// } else if (ord($this->data[$this->offset]) == 0x25 && $skipComment) { // '%' +// $this->skipComment(); +// } else { +// return; +// } +// } + } + + + /** + * Skip comment + */ + public function skipComment() + { + while ($this->offset < strlen($this->data)) + { + if (ord($this->data[$this->offset]) != 0x0A || // Line feed + ord($this->data[$this->offset]) != 0x0d // Carriage return + ) { + $this->offset++; + } else { + return; + } + } + } + + + /** + * Read comment line + * + * @return string + */ + public function readComment() + { + $this->skipWhiteSpace(false); + + /** Check if it's a comment line */ + if ($this->data[$this->offset] != '%') { + return ''; + } + + for ($start = $this->offset; + $this->offset < strlen($this->data); + $this->offset++) { + if (ord($this->data[$this->offset]) == 0x0A || // Line feed + ord($this->data[$this->offset]) == 0x0d // Carriage return + ) { + break; + } + } + + return substr($this->data, $start, $this->offset-$start); + } + + + /** + * Returns next lexeme from a pdf stream + * + * @return string + */ + public function readLexeme() + { + // $this->skipWhiteSpace(); + while (true) { + $this->offset += strspn($this->data, "\x00\t\n\f\r ", $this->offset); + + if ($this->offset < strlen($this->data) && $this->data[$this->offset] == '%') { + $this->offset += strcspn($this->data, "\r\n", $this->offset); + } else { + break; + } + } + + if ($this->offset >= strlen($this->data)) { + return ''; + } + + if ( /* self::isDelimiter( ord($this->data[$start]) ) */ + strpos('()<>[]{}/%', $this->data[$this->offset]) !== false ) { + + switch (substr($this->data, $this->offset, 2)) { + case '<<': + $this->offset += 2; + return '<<'; + break; + + case '>>': + $this->offset += 2; + return '>>'; + break; + + default: + return $this->data[$this->offset++]; + break; + } + } else { + $start = $this->offset; + $compare = ''; + if( version_compare( phpversion(), '5.2.5' ) >= 0) { + $compare = "()<>[]{}/%\x00\t\n\f\r "; + } else { + $compare = "()<>[]{}/%\x00\t\n\r "; + } + + $this->offset += strcspn($this->data, $compare, $this->offset); + + return substr($this->data, $start, $this->offset - $start); + } + } + + + /** + * Read elemental object from a PDF stream + * + * @return Zend_Pdf_Element + * @throws Zend_Pdf_Exception + */ + public function readElement($nextLexeme = null) + { + if ($nextLexeme === null) { + $nextLexeme = $this->readLexeme(); + } + + /** + * Note: readElement() method is a public method and could be invoked from other classes. + * If readElement() is used not by Zend_Pdf_StringParser::getObject() method, then we should not care + * about _elements member management. + */ + switch ($nextLexeme) { + case '(': + return ($this->_elements[] = $this->_readString()); + + case '<': + return ($this->_elements[] = $this->_readBinaryString()); + + case '/': + return ($this->_elements[] = new Zend_Pdf_Element_Name( + Zend_Pdf_Element_Name::unescape( $this->readLexeme() ) + )); + + case '[': + return ($this->_elements[] = $this->_readArray()); + + case '<<': + return ($this->_elements[] = $this->_readDictionary()); + + case ')': + // fall through to next case + case '>': + // fall through to next case + case ']': + // fall through to next case + case '>>': + // fall through to next case + case '{': + // fall through to next case + case '}': + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.', + $this->offset)); + + default: + if (strcasecmp($nextLexeme, 'true') == 0) { + return ($this->_elements[] = new Zend_Pdf_Element_Boolean(true)); + } else if (strcasecmp($nextLexeme, 'false') == 0) { + return ($this->_elements[] = new Zend_Pdf_Element_Boolean(false)); + } else if (strcasecmp($nextLexeme, 'null') == 0) { + return ($this->_elements[] = new Zend_Pdf_Element_Null()); + } + + $ref = $this->_readReference($nextLexeme); + if ($ref !== null) { + return ($this->_elements[] = $ref); + } + + return ($this->_elements[] = $this->_readNumeric($nextLexeme)); + } + } + + + /** + * Read string PDF object + * Also reads trailing ')' from a pdf stream + * + * @return Zend_Pdf_Element_String + * @throws Zend_Pdf_Exception + */ + private function _readString() + { + $start = $this->offset; + $openedBrackets = 1; + + $this->offset += strcspn($this->data, '()\\', $this->offset); + + while ($this->offset < strlen($this->data)) { + switch (ord( $this->data[$this->offset] )) { + case 0x28: // '(' - opened bracket in the string, needs balanced pair. + $this->offset++; + $openedBrackets++; + break; + + case 0x29: // ')' - pair to the opened bracket + $this->offset++; + $openedBrackets--; + break; + + case 0x5C: // '\\' - escape sequence, skip next char from a check + $this->offset += 2; + } + + if ($openedBrackets == 0) { + break; // end of string + } + + $this->offset += strcspn($this->data, '()\\', $this->offset); + } + if ($openedBrackets != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while string reading. Offset - 0x%X. \')\' expected.', $start)); + } + + return new Zend_Pdf_Element_String(Zend_Pdf_Element_String::unescape( substr($this->data, + $start, + $this->offset - $start - 1) )); + } + + + /** + * Read binary string PDF object + * Also reads trailing '>' from a pdf stream + * + * @return Zend_Pdf_Element_String_Binary + * @throws Zend_Pdf_Exception + */ + private function _readBinaryString() + { + $start = $this->offset; + + $this->offset += strspn($this->data, "\x00\t\n\f\r 0123456789abcdefABCDEF", $this->offset); + + if ($this->offset >= strlen($this->data) - 1) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while reading binary string. Offset - 0x%X. \'>\' expected.', $start)); + } + + if ($this->data[$this->offset++] != '>') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected character while binary string reading. Offset - 0x%X.', $this->offset)); + } + + return new Zend_Pdf_Element_String_Binary( + Zend_Pdf_Element_String_Binary::unescape( substr($this->data, + $start, + $this->offset - $start - 1) )); + } + + + /** + * Read array PDF object + * Also reads trailing ']' from a pdf stream + * + * @return Zend_Pdf_Element_Array + * @throws Zend_Pdf_Exception + */ + private function _readArray() + { + $elements = array(); + + while ( strlen($nextLexeme = $this->readLexeme()) != 0 ) { + if ($nextLexeme != ']') { + $elements[] = $this->readElement($nextLexeme); + } else { + return new Zend_Pdf_Element_Array($elements); + } + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while array reading. Offset - 0x%X. \']\' expected.', $this->offset)); + } + + + /** + * Read dictionary PDF object + * Also reads trailing '>>' from a pdf stream + * + * @return Zend_Pdf_Element_Dictionary + * @throws Zend_Pdf_Exception + */ + private function _readDictionary() + { + $dictionary = new Zend_Pdf_Element_Dictionary(); + + while ( strlen($nextLexeme = $this->readLexeme()) != 0 ) { + if ($nextLexeme != '>>') { + $nameStart = $this->offset - strlen($nextLexeme); + + $name = $this->readElement($nextLexeme); + $value = $this->readElement(); + + if (!$name instanceof Zend_Pdf_Element_Name) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Name object expected while dictionary reading. Offset - 0x%X.', $nameStart)); + } + + $dictionary->add($name, $value); + } else { + return $dictionary; + } + } + + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Unexpected end of file while dictionary reading. Offset - 0x%X. \'>>\' expected.', $this->offset)); + } + + + /** + * Read reference PDF object + * + * @param string $nextLexeme + * @return Zend_Pdf_Element_Reference + */ + private function _readReference($nextLexeme = null) + { + $start = $this->offset; + + if ($nextLexeme === null) { + $objNum = $this->readLexeme(); + } else { + $objNum = $nextLexeme; + } + if (!ctype_digit($objNum)) { // it's not a reference + $this->offset = $start; + return null; + } + + $genNum = $this->readLexeme(); + if (!ctype_digit($genNum)) { // it's not a reference + $this->offset = $start; + return null; + } + + $rMark = $this->readLexeme(); + if ($rMark != 'R') { // it's not a reference + $this->offset = $start; + return null; + } + + $ref = new Zend_Pdf_Element_Reference((int)$objNum, (int)$genNum, $this->_context, $this->_objFactory->resolve()); + + return $ref; + } + + + /** + * Read numeric PDF object + * + * @param string $nextLexeme + * @return Zend_Pdf_Element_Numeric + */ + private function _readNumeric($nextLexeme = null) + { + if ($nextLexeme === null) { + $nextLexeme = $this->readLexeme(); + } + + return new Zend_Pdf_Element_Numeric($nextLexeme); + } + + + /** + * Read inderect object from a PDF stream + * + * @param integer $offset + * @param Zend_Pdf_Element_Reference_Context $context + * @return Zend_Pdf_Element_Object + */ + public function getObject($offset, Zend_Pdf_Element_Reference_Context $context) + { + if ($offset === null ) { + return new Zend_Pdf_Element_Null(); + } + + // Save current offset to make getObject() reentrant + $offsetSave = $this->offset; + + $this->offset = $offset; + $this->_context = $context; + $this->_elements = array(); + + $objNum = $this->readLexeme(); + if (!ctype_digit($objNum)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Object number expected.', $this->offset - strlen($objNum))); + } + + $genNum = $this->readLexeme(); + if (!ctype_digit($genNum)) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Object generation number expected.', $this->offset - strlen($genNum))); + } + + $objKeyword = $this->readLexeme(); + if ($objKeyword != 'obj') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'obj\' keyword expected.', $this->offset - strlen($objKeyword))); + } + + $objValue = $this->readElement(); + + $nextLexeme = $this->readLexeme(); + + if( $nextLexeme == 'endobj' ) { + /** + * Object is not generated by factory (thus it's not marked as modified object). + * But factory is assigned to the obect. + */ + $obj = new Zend_Pdf_Element_Object($objValue, (int)$objNum, (int)$genNum, $this->_objFactory->resolve()); + + foreach ($this->_elements as $element) { + $element->setParentObject($obj); + } + + // Restore offset value + $this->offset = $offsetSave; + + return $obj; + } + + /** + * It's a stream object + */ + if ($nextLexeme != 'stream') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'endobj\' or \'stream\' keywords expected.', $this->offset - strlen($nextLexeme))); + } + + if (!$objValue instanceof Zend_Pdf_Element_Dictionary) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. Stream extent must be preceded by stream dictionary.', $this->offset - strlen($nextLexeme))); + } + + /** + * References are automatically dereferenced at this moment. + */ + $streamLength = $objValue->Length->value; + + /** + * 'stream' keyword must be followed by either cr-lf sequence or lf character only. + * This restriction gives the possibility to recognize all cases exactly + */ + if ($this->data[$this->offset] == "\r" && + $this->data[$this->offset + 1] == "\n" ) { + $this->offset += 2; + } else if ($this->data[$this->offset] == "\n" ) { + $this->offset++; + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'stream\' must be followed by either cr-lf sequence or lf character only.', $this->offset - strlen($nextLexeme))); + } + + $dataOffset = $this->offset; + + $this->offset += $streamLength; + + $nextLexeme = $this->readLexeme(); + if ($nextLexeme != 'endstream') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'endstream\' keyword expected.', $this->offset - strlen($nextLexeme))); + } + + $nextLexeme = $this->readLexeme(); + if ($nextLexeme != 'endobj') { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X. \'endobj\' keyword expected.', $this->offset - strlen($nextLexeme))); + } + + $obj = new Zend_Pdf_Element_Object_Stream(substr($this->data, + $dataOffset, + $streamLength), + (int)$objNum, + (int)$genNum, + $this->_objFactory->resolve(), + $objValue); + + foreach ($this->_elements as $element) { + $element->setParentObject($obj); + } + + // Restore offset value + $this->offset = $offsetSave; + + return $obj; + } + + + /** + * Get length of source string + * + * @return integer + */ + public function getLength() + { + return strlen($this->data); + } + + /** + * Get source string + * + * @return string + */ + public function getString() + { + return $this->data; + } + + + /** + * Parse integer value from a binary stream + * + * @param string $stream + * @param integer $offset + * @param integer $size + * @return integer + */ + public static function parseIntFromStream($stream, $offset, $size) + { + $value = 0; + for ($count = 0; $count < $size; $count++) { + $value *= 256; + $value += ord($stream[$offset + $count]); + } + + return $value; + } + + + + /** + * Set current context + * + * @param Zend_Pdf_Element_Reference_Context $context + */ + public function setContext(Zend_Pdf_Element_Reference_Context $context) + { + $this->_context = $context; + } + + /** + * Object constructor + * + * Note: PHP duplicates string, which is sent by value, only of it's updated. + * Thus we don't need to care about overhead + * + * @param string $pdfString + * @param Zend_Pdf_ElementFactory_Interface $factory + */ + public function __construct($source, Zend_Pdf_ElementFactory_Interface $factory) + { + $this->data = $source; + $this->_objFactory = $factory; + } +} diff --git a/library/Zend/Pdf/Style.php b/library/Zend/Pdf/Style.php new file mode 100755 index 000000000..4aff3e48c --- /dev/null +++ b/library/Zend/Pdf/Style.php @@ -0,0 +1,294 @@ +_fillColor = $anotherStyle->_fillColor; + $this->_color = $anotherStyle->_color; + $this->_lineWidth = $anotherStyle->_lineWidth; + $this->_lineDashingPattern = $anotherStyle->_lineDashingPattern; + $this->_lineDashingPhase = $anotherStyle->_lineDashingPhase; + $this->_font = $anotherStyle->_font; + $this->_fontSize = $anotherStyle->_fontSize; + } + } + + + /** + * Set fill color. + * + * @param Zend_Pdf_Color $color + */ + public function setFillColor(Zend_Pdf_Color $color) + { + $this->_fillColor = $color; + } + + /** + * Set line color. + * + * @param Zend_Pdf_Color $color + */ + public function setLineColor(Zend_Pdf_Color $color) + { + $this->_color = $color; + } + + /** + * Set line width. + * + * @param float $width + */ + public function setLineWidth($width) + { + require_once 'Zend/Pdf/Element/Numeric.php'; + $this->_lineWidth = new Zend_Pdf_Element_Numeric($width); + } + + + /** + * Set line dashing pattern + * + * @param array $pattern + * @param float $phase + */ + public function setLineDashingPattern($pattern, $phase = 0) + { + require_once 'Zend/Pdf/Page.php'; + if ($pattern === Zend_Pdf_Page::LINE_DASHING_SOLID) { + $pattern = array(); + $phase = 0; + } + + require_once 'Zend/Pdf/Element/Numeric.php'; + $this->_lineDashingPattern = $pattern; + $this->_lineDashingPhase = new Zend_Pdf_Element_Numeric($phase); + } + + + /** + * Set current font. + * + * @param Zend_Pdf_Resource_Font $font + * @param float $fontSize + */ + public function setFont(Zend_Pdf_Resource_Font $font, $fontSize) + { + $this->_font = $font; + $this->_fontSize = $fontSize; + } + + /** + * Modify current font size + * + * @param float $fontSize + */ + public function setFontSize($fontSize) + { + $this->_fontSize = $fontSize; + } + + /** + * Get fill color. + * + * @return Zend_Pdf_Color|null + */ + public function getFillColor() + { + return $this->_fillColor; + } + + /** + * Get line color. + * + * @return Zend_Pdf_Color|null + */ + public function getLineColor() + { + return $this->_color; + } + + /** + * Get line width. + * + * @return float + */ + public function getLineWidth() + { + return $this->_lineWidth->value; + } + + /** + * Get line dashing pattern + * + * @return array + */ + public function getLineDashingPattern() + { + return $this->_lineDashingPattern; + } + + + /** + * Get current font. + * + * @return Zend_Pdf_Resource_Font $font + */ + public function getFont() + { + return $this->_font; + } + + /** + * Get current font size + * + * @return float $fontSize + */ + public function getFontSize() + { + return $this->_fontSize; + } + + /** + * Get line dashing phase + * + * @return float + */ + public function getLineDashingPhase() + { + return $this->_lineDashingPhase->value; + } + + + /** + * Dump style to a string, which can be directly inserted into content stream + * + * @return string + */ + public function instructions() + { + $instructions = ''; + + if ($this->_fillColor !== null) { + $instructions .= $this->_fillColor->instructions(false); + } + + if ($this->_color !== null) { + $instructions .= $this->_color->instructions(true); + } + + if ($this->_lineWidth !== null) { + $instructions .= $this->_lineWidth->toString() . " w\n"; + } + + if ($this->_lineDashingPattern !== null) { + require_once 'Zend/Pdf/Element/Array.php'; + $dashPattern = new Zend_Pdf_Element_Array(); + + require_once 'Zend/Pdf/Element/Numeric.php'; + foreach ($this->_lineDashingPattern as $dashItem) { + $dashElement = new Zend_Pdf_Element_Numeric($dashItem); + $dashPattern->items[] = $dashElement; + } + + $instructions .= $dashPattern->toString() . ' ' + . $this->_lineDashingPhase->toString() . " d\n"; + } + + return $instructions; + } + +} diff --git a/library/Zend/Pdf/Target.php b/library/Zend/Pdf/Target.php new file mode 100755 index 000000000..e9049a1f1 --- /dev/null +++ b/library/Zend/Pdf/Target.php @@ -0,0 +1,76 @@ +getType() == Zend_Pdf_Element::TYPE_DICTIONARY) { + if (($resource->Type === null || $resource->Type->value =='Action') && $resource->S !== null) { + // It's a well-formed action, load it + require_once 'Zend/Pdf/Action.php'; + return Zend_Pdf_Action::load($resource); + } else if ($resource->D !== null) { + // It's a destination + $resource = $resource->D; + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Wrong resource type.'); + } + } + + if ($resource->getType() == Zend_Pdf_Element::TYPE_ARRAY || + $resource->getType() == Zend_Pdf_Element::TYPE_NAME || + $resource->getType() == Zend_Pdf_Element::TYPE_STRING) { + // Resource is an array, just treat it as an explicit destination array + require_once 'Zend/Pdf/Destination.php'; + return Zend_Pdf_Destination::load($resource); + } else { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception( 'Wrong resource type.' ); + } + } + + /** + * Get resource + * + * @internal + * @return Zend_Pdf_Element + */ + abstract public function getResource(); +} diff --git a/library/Zend/Pdf/Trailer.php b/library/Zend/Pdf/Trailer.php new file mode 100755 index 000000000..1c1b5e1eb --- /dev/null +++ b/library/Zend/Pdf/Trailer.php @@ -0,0 +1,126 @@ +_dict = $dict; + + foreach ($this->_dict->getKeys() as $dictKey) { + $this->_checkDictKey($dictKey); + } + } + + /** + * Get handler + * + * @param string $property + * @return mixed + */ + public function __get($property) + { + return $this->_dict->$property; + } + + /** + * Set handler + * + * @param string $property + * @param mixed $value + */ + public function __set($property, $value) + { + $this->_checkDictKey($property); + $this->_dict->$property = $value; + } + + /** + * Return string trailer representation + * + * @return string + */ + public function toString() + { + return "trailer\n" . $this->_dict->toString() . "\n"; + } + + + /** + * Get length of source PDF + * + * @return string + */ + abstract public function getPDFLength(); + + /** + * Get PDF String + * + * @return string + */ + abstract public function getPDFString(); + + /** + * Get header of free objects list + * Returns object number of last free object + * + * @return integer + */ + abstract public function getLastFreeObject(); +} diff --git a/library/Zend/Pdf/Trailer/Generator.php b/library/Zend/Pdf/Trailer/Generator.php new file mode 100755 index 000000000..021e8ba13 --- /dev/null +++ b/library/Zend/Pdf/Trailer/Generator.php @@ -0,0 +1,77 @@ +_context = $context; + $this->_prev = $prev; + } + + /** + * Setter for $this->_prev + * + * @param Zend_Pdf_Trailer_Keeper $prev + */ + public function setPrev(Zend_Pdf_Trailer_Keeper $prev) + { + $this->_prev = $prev; + } + + /** + * Getter for $this->_prev + * + * @return Zend_Pdf_Trailer + */ + public function getPrev() + { + return $this->_prev; + } + + /** + * Get length of source PDF + * + * @return string + */ + public function getPDFLength() + { + return $this->_context->getParser()->getLength(); + } + + /** + * Get PDF String + * + * @return string + */ + public function getPDFString() + { + return $this->_context->getParser()->getString(); + } + + /** + * Get reference table, which corresponds to the trailer. + * Proxy to the $_context member methad call + * + * @return Zend_Pdf_Element_Reference_Context + */ + public function getRefTable() + { + return $this->_context->getRefTable(); + } + + /** + * Get header of free objects list + * Returns object number of last free object + * + * @throws Zend_Pdf_Exception + * @return integer + */ + public function getLastFreeObject() + { + try { + $this->_context->getRefTable()->getNextFree('0 65535 R'); + } catch (Zend_Pdf_Exception $e) { + if ($e->getMessage() == 'Object not found.') { + /** + * Here is work around for some wrong generated PDFs. + * We have not found reference to the header of free object list, + * thus we treat it as there are no free objects. + */ + return 0; + } + + throw new Zend_Pdf_Exception($e->getMessage(), $e->getCode(), $e); + } + } +} diff --git a/library/Zend/Pdf/UpdateInfoContainer.php b/library/Zend/Pdf/UpdateInfoContainer.php new file mode 100755 index 000000000..addfe1abb --- /dev/null +++ b/library/Zend/Pdf/UpdateInfoContainer.php @@ -0,0 +1,131 @@ +_objNum = $objNum; + $this->_genNum = $genNum; + $this->_isFree = $isFree; + + if ($dump !== null) { + if (strlen($dump) > 1024) { + require_once 'Zend/Pdf.php'; + $this->_dump = Zend_Pdf::getMemoryManager()->create($dump); + } else { + $this->_dump = $dump; + } + } + } + + + /** + * Get object number + * + * @return integer + */ + public function getObjNum() + { + return $this->_objNum; + } + + /** + * Get generation number + * + * @return integer + */ + public function getGenNum() + { + return $this->_genNum; + } + + /** + * Check, that object is free + * + * @return boolean + */ + public function isFree() + { + return $this->_isFree; + } + + /** + * Get string representation of the object + * + * @return string + */ + public function getObjectDump() + { + if ($this->_dump === null) { + return ''; + } + + if (is_string($this->_dump)) { + return $this->_dump; + } + + return $this->_dump->getRef(); + } +} + diff --git a/library/Zend/ProgressBar.php b/library/Zend/ProgressBar.php new file mode 100755 index 000000000..405b3e195 --- /dev/null +++ b/library/Zend/ProgressBar.php @@ -0,0 +1,209 @@ + $max) { + require_once 'Zend/ProgressBar/Exception.php'; + throw new Zend_ProgressBar_Exception('$max must be greater than $min'); + } + + $this->_min = (float) $min; + $this->_max = (float) $max; + $this->_current = (float) $min; + + // See if we have to open a session namespace + if ($persistenceNamespace !== null) { + require_once 'Zend/Session/Namespace.php'; + + $this->_persistenceNamespace = new Zend_Session_Namespace($persistenceNamespace); + } + + // Set adapter + $this->_adapter = $adapter; + + // Track the start time + $this->_startTime = time(); + + // See If a persistenceNamespace exists and handle accordingly + if ($this->_persistenceNamespace !== null) { + if (isset($this->_persistenceNamespace->isSet)) { + $this->_startTime = $this->_persistenceNamespace->startTime; + $this->_current = $this->_persistenceNamespace->current; + $this->_statusText = $this->_persistenceNamespace->statusText; + } else { + $this->_persistenceNamespace->isSet = true; + $this->_persistenceNamespace->startTime = $this->_startTime; + $this->_persistenceNamespace->current = $this->_current; + $this->_persistenceNamespace->statusText = $this->_statusText; + } + } else { + $this->update(); + } + } + + /** + * Get the current adapter + * + * @return Zend_ProgressBar_Adapter + */ + public function getAdapter() + { + return $this->_adapter; + } + + /** + * Update the progressbar + * + * @param float $value + * @param string $text + * @return void + */ + public function update($value = null, $text = null) + { + // Update value if given + if ($value !== null) { + $this->_current = min($this->_max, max($this->_min, $value)); + } + + // Update text if given + if ($text !== null) { + $this->_statusText = $text; + } + + // See if we have to update a namespace + if ($this->_persistenceNamespace !== null) { + $this->_persistenceNamespace->current = $this->_current; + $this->_persistenceNamespace->statusText = $this->_statusText; + } + + // Calculate percent + if ($this->_min === $this->_max) { + $percent = false; + } else { + $percent = (float) ($this->_current - $this->_min) / ($this->_max - $this->_min); + } + + // Calculate ETA + $timeTaken = time() - $this->_startTime; + + if ($percent === .0 || $percent === false) { + $timeRemaining = null; + } else { + $timeRemaining = round(((1 / $percent) * $timeTaken) - $timeTaken); + } + + // Poll the adapter + $this->_adapter->notify($this->_current, $this->_max, $percent, $timeTaken, $timeRemaining, $this->_statusText); + } + + /** + * Update the progressbar to the next value + * + * @param string $text + * @return void + */ + public function next($diff = 1, $text = null) + { + $this->update(max($this->_min, min($this->_max, $this->_current + $diff)), $text); + } + + /** + * Call the adapters finish() behaviour + * + * @return void + */ + public function finish() + { + if ($this->_persistenceNamespace !== null) { + unset($this->_persistenceNamespace->isSet); + } + + $this->_adapter->finish(); + } +} diff --git a/library/Zend/ProgressBar/Adapter.php b/library/Zend/ProgressBar/Adapter.php new file mode 100755 index 000000000..89e59183b --- /dev/null +++ b/library/Zend/ProgressBar/Adapter.php @@ -0,0 +1,113 @@ +setOptions($options); + } elseif ($options instanceof Zend_Config) { + $this->setConfig($options); + } + } + + /** + * Set options via a Zend_Config instance + * + * @param Zend_Config $config + * @return Zend_ProgressBar_Adapter + */ + public function setConfig(Zend_Config $config) + { + $this->setOptions($config->toArray()); + + return $this; + } + + /** + * Set options via an array + * + * @param array $options + * @return Zend_ProgressBar_Adapter + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Notify the adapter about an update + * + * @param float $current Current progress value + * @param float $max Max progress value + * @param float $percent Current percent value + * @param integer $timeTaken Taken time in seconds + * @param integer $timeRemaining Remaining time in seconds + * @param string $text Status text + * @return void + */ + abstract public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text); + + /** + * Called when the progress is explicitly finished + * + * @return void + */ + abstract public function finish(); +} diff --git a/library/Zend/ProgressBar/Adapter/Console.php b/library/Zend/ProgressBar/Adapter/Console.php new file mode 100755 index 000000000..abfc3b055 --- /dev/null +++ b/library/Zend/ProgressBar/Adapter/Console.php @@ -0,0 +1,534 @@ +_width === null) { + $this->setWidth(); + } + } + + /** + * Close local stdout, when open + */ + public function __destruct() + { + if ($this->_outputStream !== null) { + fclose($this->_outputStream); + } + } + + /** + * Set a different output-stream + * + * @param string $resource + * @return Zend_ProgressBar_Adapter_Console + */ + public function setOutputStream($resource) + { + $stream = @fopen($resource, 'w'); + + if ($stream === false) { + require_once 'Zend/ProgressBar/Adapter/Exception.php'; + throw new Zend_ProgressBar_Adapter_Exception('Unable to open stream'); + } + + if ($this->_outputStream !== null) { + fclose($this->_outputStream); + } + + $this->_outputStream = $stream; + } + + /** + * Get the current output stream + * + * @return resource + */ + public function getOutputStream() + { + if ($this->_outputStream === null) { + if (!defined('STDOUT')) { + $this->_outputStream = fopen('php://stdout', 'w'); + } else { + return STDOUT; + } + } + + return $this->_outputStream; + } + + /** + * Set the width of the progressbar + * + * @param integer $width + * @return Zend_ProgressBar_Adapter_Console + */ + public function setWidth($width = null) + { + if ($width === null || !is_integer($width)) { + if (substr(PHP_OS, 0, 3) === 'WIN') { + // We have to default to 79 on windows, because the windows + // terminal always has a fixed width of 80 characters and the + // cursor is counted to the line, else windows would line break + // after every update. + $this->_width = 79; + } else { + // Set the default width of 80 + $this->_width = 80; + + // Try to determine the width through stty + if (preg_match('#\d+ (\d+)#', @shell_exec('stty size'), $match) === 1) { + $this->_width = (int) $match[1]; + } else if (preg_match('#columns = (\d+);#', @shell_exec('stty'), $match) === 1) { + $this->_width = (int) $match[1]; + } + } + } else { + $this->_width = (int) $width; + } + + $this->_calculateBarWidth(); + + return $this; + } + + /** + * Set the elements to display with the progressbar + * + * @param array $elements + * @throws Zend_ProgressBar_Adapter_Exception When an invalid element is foudn in the array + * @return Zend_ProgressBar_Adapter_Console + */ + public function setElements(array $elements) + { + $allowedElements = array(self::ELEMENT_PERCENT, + self::ELEMENT_BAR, + self::ELEMENT_ETA, + self::ELEMENT_TEXT); + + if (count(array_diff($elements, $allowedElements)) > 0) { + require_once 'Zend/ProgressBar/Adapter/Exception.php'; + throw new Zend_ProgressBar_Adapter_Exception('Invalid element found in $elements array'); + } + + $this->_elements = $elements; + + $this->_calculateBarWidth(); + + return $this; + } + + /** + * Set the left-hand character for the bar + * + * @param string $char + * @throws Zend_ProgressBar_Adapter_Exception When character is empty + * @return Zend_ProgressBar_Adapter_Console + */ + public function setBarLeftChar($char) + { + if (empty($char)) { + require_once 'Zend/ProgressBar/Adapter/Exception.php'; + throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty'); + } + + $this->_barLeftChar = (string) $char; + + return $this; + } + + /** + * Set the right-hand character for the bar + * + * @param string $char + * @throws Zend_ProgressBar_Adapter_Exception When character is empty + * @return Zend_ProgressBar_Adapter_Console + */ + public function setBarRightChar($char) + { + if (empty($char)) { + require_once 'Zend/ProgressBar/Adapter/Exception.php'; + throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty'); + } + + $this->_barRightChar = (string) $char; + + return $this; + } + + /** + * Set the indicator character for the bar + * + * @param string $char + * @return Zend_ProgressBar_Adapter_Console + */ + public function setBarIndicatorChar($char) + { + $this->_barIndicatorChar = (string) $char; + + return $this; + } + + /** + * Set the width of the text element + * + * @param integer $width + * @return Zend_ProgressBar_Adapter_Console + */ + public function setTextWidth($width) + { + $this->_textWidth = (int) $width; + + $this->_calculateBarWidth(); + + return $this; + } + + /** + * Set the charset of the text element + * + * @param string $charset + */ + public function setCharset($charset) + { + $this->_charset = $charset; + } + + /** + * Set the finish action + * + * @param string $action + * @throws Zend_ProgressBar_Adapter_Exception When an invalid action is specified + * @return Zend_ProgressBar_Adapter_Console + */ + public function setFinishAction($action) + { + $allowedActions = array(self::FINISH_ACTION_CLEAR_LINE, + self::FINISH_ACTION_EOL, + self::FINISH_ACTION_NONE); + + if (!in_array($action, $allowedActions)) { + require_once 'Zend/ProgressBar/Adapter/Exception.php'; + throw new Zend_ProgressBar_Adapter_Exception('Invalid finish action specified'); + } + + $this->_finishAction = $action; + + return $this; + } + + /** + * Defined by Zend_ProgressBar_Adapter_Interface + * + * @param float $current Current progress value + * @param float $max Max progress value + * @param float $percent Current percent value + * @param integer $timeTaken Taken time in seconds + * @param integer $timeRemaining Remaining time in seconds + * @param string $text Status text + * @return void + */ + public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text) + { + // See if we must clear the line + if ($this->_outputStarted) { + $data = str_repeat("\x08", $this->_width); + } else { + $data = ''; + $this->_outputStarted = true; + } + + // Build all elements + $renderedElements = array(); + + foreach ($this->_elements as $element) { + switch ($element) { + case self::ELEMENT_BAR: + $visualWidth = $this->_barWidth - 2; + $bar = '['; + + $indicatorWidth = strlen($this->_barIndicatorChar); + + $doneWidth = min($visualWidth - $indicatorWidth, round($visualWidth * $percent)); + if ($doneWidth > 0) { + $bar .= substr(str_repeat($this->_barLeftChar, ceil($doneWidth / strlen($this->_barLeftChar))), 0, $doneWidth); + } + + $bar .= $this->_barIndicatorChar; + + $leftWidth = $visualWidth - $doneWidth - $indicatorWidth; + if ($leftWidth > 0) { + $bar .= substr(str_repeat($this->_barRightChar, ceil($leftWidth / strlen($this->_barRightChar))), 0, $leftWidth); + } + + $bar .= ']'; + + $renderedElements[] = $bar; + break; + + case self::ELEMENT_PERCENT: + $renderedElements[] = str_pad(round($percent * 100), 3, ' ', STR_PAD_LEFT) . '%'; + break; + + case self::ELEMENT_ETA: + // In the first 5 seconds we don't get accurate results, + // this skipping technique is found in many progressbar + // implementations. + if ($timeTaken < 5) { + $renderedElements[] = str_repeat(' ', 12); + break; + } + + if ($timeRemaining === null || $timeRemaining > 86400) { + $etaFormatted = '??:??:??'; + } else { + $hours = floor($timeRemaining / 3600); + $minutes = floor(($timeRemaining % 3600) / 60); + $seconds = ($timeRemaining % 3600 % 60); + + $etaFormatted = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); + } + + $renderedElements[] = 'ETA ' . $etaFormatted; + break; + + case self::ELEMENT_TEXT: + $renderedElements[] = Zend_Text_MultiByte::strPad(substr($text, 0, $this->_textWidth), $this->_textWidth, ' ', STR_PAD_RIGHT, $this->_charset); + break; + } + } + + $data .= implode(' ', $renderedElements); + + // Output line data + $this->_outputData($data); + } + + /** + * Defined by Zend_ProgressBar_Adapter_Interface + * + * @return void + */ + public function finish() + { + switch ($this->_finishAction) { + case self::FINISH_ACTION_EOL: + $this->_outputData(PHP_EOL); + break; + + case self::FINISH_ACTION_CLEAR_LINE: + if ($this->_outputStarted) { + $data = str_repeat("\x08", $this->_width) + . str_repeat(' ', $this->_width) + . str_repeat("\x08", $this->_width); + + $this->_outputData($data); + } + break; + + case self::FINISH_ACTION_NONE: + break; + } + } + + /** + * Calculate the bar width when other elements changed + * + * @return void + */ + protected function _calculateBarWidth() + { + if (in_array(self::ELEMENT_BAR, $this->_elements)) { + $barWidth = $this->_width; + + if (in_array(self::ELEMENT_PERCENT, $this->_elements)) { + $barWidth -= 4; + } + + if (in_array(self::ELEMENT_ETA, $this->_elements)) { + $barWidth -= 12; + } + + if (in_array(self::ELEMENT_TEXT, $this->_elements)) { + $barWidth -= $this->_textWidth; + } + + $this->_barWidth = $barWidth - (count($this->_elements) - 1); + } + } + + /** + * Outputs given data to STDOUT. + * + * This split-off is required for unit-testing. + * + * @param string $data + * @return void + */ + protected function _outputData($data) + { + fwrite($this->getOutputStream(), $data); + } +} diff --git a/library/Zend/ProgressBar/Adapter/Exception.php b/library/Zend/ProgressBar/Adapter/Exception.php new file mode 100755 index 000000000..1b32ffacd --- /dev/null +++ b/library/Zend/ProgressBar/Adapter/Exception.php @@ -0,0 +1,38 @@ +_exitAfterSend = $exitAfterSend; + } + + /** + * Defined by Zend_ProgressBar_Adapter_Interface + * + * @param float $current Current progress value + * @param float $max Max progress value + * @param float $percent Current percent value + * @param integer $timeTaken Taken time in seconds + * @param integer $timeRemaining Remaining time in seconds + * @param string $text Status text + * @return void + */ + public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text) + { + $arguments = array( + 'current' => $current, + 'max' => $max, + 'percent' => ($percent * 100), + 'timeTaken' => $timeTaken, + 'timeRemaining' => $timeRemaining, + 'text' => $text, + 'finished' => false + ); + + $data = Zend_Json::encode($arguments); + + // Output the data + $this->_outputData($data); + } + + /** + * Defined by Zend_ProgressBar_Adapter_Interface + * + * @return void + */ + public function finish() + { + $data = Zend_Json::encode(array('finished' => true)); + + $this->_outputData($data); + } + + /** + * Outputs given data the user agent. + * + * This split-off is required for unit-testing. + * + * @param string $data + * @return void + */ + protected function _outputData($data) + { + echo $data; + + if ($this->_exitAfterSend) { + exit; + } + } +} diff --git a/library/Zend/ProgressBar/Adapter/JsPush.php b/library/Zend/ProgressBar/Adapter/JsPush.php new file mode 100755 index 000000000..bba55c83c --- /dev/null +++ b/library/Zend/ProgressBar/Adapter/JsPush.php @@ -0,0 +1,148 @@ +_updateMethodName = $methodName; + + return $this; + } + + /** + * Set the finish method name + * + * @param string $methodName + * @return Zend_ProgressBar_Adapter_JsPush + */ + public function setFinishMethodName($methodName) + { + $this->_finishMethodName = $methodName; + + return $this; + } + + /** + * Defined by Zend_ProgressBar_Adapter_Interface + * + * @param float $current Current progress value + * @param float $max Max progress value + * @param float $percent Current percent value + * @param integer $timeTaken Taken time in seconds + * @param integer $timeRemaining Remaining time in seconds + * @param string $text Status text + * @return void + */ + public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text) + { + $arguments = array( + 'current' => $current, + 'max' => $max, + 'percent' => ($percent * 100), + 'timeTaken' => $timeTaken, + 'timeRemaining' => $timeRemaining, + 'text' => $text + ); + + $data = ''; + + // Output the data + $this->_outputData($data); + } + + /** + * Defined by Zend_ProgressBar_Adapter_Interface + * + * @return void + */ + public function finish() + { + if ($this->_finishMethodName === null) { + return; + } + + $data = ''; + + $this->_outputData($data); + } + + /** + * Outputs given data the user agent. + * + * This split-off is required for unit-testing. + * + * @param string $data + * @return void + */ + protected function _outputData($data) + { + // 1024 padding is required for Safari, while 256 padding is required + // for Internet Explorer. The
    is required so Safari actually + // executes the +SCRIPT; + } + $challengeField = 'recaptcha_challenge_field'; + $responseField = 'recaptcha_response_field'; + if (!empty($name)) { + $challengeField = $name . '[' . $challengeField . ']'; + $responseField = $name . '[' . $responseField . ']'; + } + + $return = $reCaptchaOptions; + $return .= << + +HTML; + $return .= << + {$htmlBreak} + + +HTML; + + return $return; + } + + /** + * Post a solution to the verify server + * + * @param string $challengeField + * @param string $responseField + * @return Zend_Http_Response + * @throws Zend_Service_ReCaptcha_Exception + */ + protected function _post($challengeField, $responseField) + { + if ($this->_privateKey === null) { + /** @see Zend_Service_ReCaptcha_Exception */ + require_once 'Zend/Service/ReCaptcha/Exception.php'; + + throw new Zend_Service_ReCaptcha_Exception('Missing private key'); + } + + if ($this->_ip === null) { + /** @see Zend_Service_ReCaptcha_Exception */ + require_once 'Zend/Service/ReCaptcha/Exception.php'; + + throw new Zend_Service_ReCaptcha_Exception('Missing ip address'); + } + + /* Fetch an instance of the http client */ + $httpClient = self::getHttpClient(); + $httpClient->resetParameters(true); + + $postParams = array('privatekey' => $this->_privateKey, + 'remoteip' => $this->_ip, + 'challenge' => $challengeField, + 'response' => $responseField); + + /* Make the POST and return the response */ + return $httpClient->setUri(self::VERIFY_SERVER) + ->setParameterPost($postParams) + ->request(Zend_Http_Client::POST); + } + + /** + * Verify the user input + * + * This method calls up the post method and returns a + * Zend_Service_ReCaptcha_Response object. + * + * @param string $challengeField + * @param string $responseField + * @return Zend_Service_ReCaptcha_Response + */ + public function verify($challengeField, $responseField) + { + $response = $this->_post($challengeField, $responseField); + + return new Zend_Service_ReCaptcha_Response(null, null, $response); + } +} diff --git a/library/Zend/Service/ReCaptcha/Exception.php b/library/Zend/Service/ReCaptcha/Exception.php new file mode 100755 index 000000000..b84d47eb1 --- /dev/null +++ b/library/Zend/Service/ReCaptcha/Exception.php @@ -0,0 +1,36 @@ +_requireMcrypt(); + + /* If options is a Zend_Config object we want to convert it to an array so we can merge it with the default options */ + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + /* Merge if needed */ + if (is_array($options)) { + $options = array_merge($this->getDefaultOptions(), $options); + } else { + $options = $this->getDefaultOptions(); + } + + parent::__construct($publicKey, $privateKey, null, $options); + + if ($email !== null) { + $this->setEmail($email); + } + } + + + /** + * Get emailValidator + * + * @return Zend_Validate_Interface + */ + public function getEmailValidator() + { + if (null === $this->_emailValidator) { + require_once 'Zend/Validate/EmailAddress.php'; + $this->setEmailValidator(new Zend_Validate_EmailAddress()); + } + return $this->_emailValidator; + } + + /** + * Set email validator + * + * @param Zend_Validate_Interface $validator + * @return Zend_Service_ReCaptcha_MailHide + */ + public function setEmailValidator(Zend_Validate_Interface $validator) + { + $this->_emailValidator = $validator; + return $this; + } + + + /** + * See if the mcrypt extension is available + * + * @throws Zend_Service_ReCaptcha_MailHide_Exception + */ + protected function _requireMcrypt() + { + if (!extension_loaded('mcrypt')) { + /** @see Zend_Service_ReCaptcha_MailHide_Exception */ + require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php'; + + throw new Zend_Service_ReCaptcha_MailHide_Exception('Use of the Zend_Service_ReCaptcha_MailHide component requires the mcrypt extension to be enabled in PHP'); + } + } + + /** + * Serialize as string + * + * When the instance is used as a string it will display the email address. Since we can't + * throw exceptions within this method we will trigger a user warning instead. + * + * @return string + */ + public function __toString() + { + try { + $return = $this->getHtml(); + } catch (Exception $e) { + $return = ''; + trigger_error($e->getMessage(), E_USER_WARNING); + } + + return $return; + } + + /** + * Get the default set of parameters + * + * @return array + */ + public function getDefaultOptions() + { + return array( + 'encoding' => 'UTF-8', + 'linkTitle' => 'Reveal this e-mail address', + 'linkHiddenText' => '...', + 'popupWidth' => 500, + 'popupHeight' => 300, + ); + } + + /** + * Override the setPrivateKey method + * + * Override the parent method to store a binary representation of the private key as well. + * + * @param string $privateKey + * @return Zend_Service_ReCaptcha_MailHide + */ + public function setPrivateKey($privateKey) + { + parent::setPrivateKey($privateKey); + + /* Pack the private key into a binary string */ + $this->_privateKeyPacked = pack('H*', $this->_privateKey); + + return $this; + } + + /** + * Set the email property + * + * This method will set the email property along with the local and domain parts + * + * @param string $email + * @return Zend_Service_ReCaptcha_MailHide + */ + public function setEmail($email) + { + $this->_email = $email; + + $validator = $this->getEmailValidator(); + if (!$validator->isValid($email)) { + require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php'; + throw new Zend_Service_ReCaptcha_MailHide_Exception('Invalid email address provided'); + } + + $emailParts = explode('@', $email, 2); + + /* Decide on how much of the local part we want to reveal */ + if (strlen($emailParts[0]) <= 4) { + $emailParts[0] = substr($emailParts[0], 0, 1); + } else if (strlen($emailParts[0]) <= 6) { + $emailParts[0] = substr($emailParts[0], 0, 3); + } else { + $emailParts[0] = substr($emailParts[0], 0, 4); + } + + $this->_emailLocalPart = $emailParts[0]; + $this->_emailDomainPart = $emailParts[1]; + + return $this; + } + + /** + * Get the email property + * + * @return string + */ + public function getEmail() + { + return $this->_email; + } + + /** + * Get the local part of the email address + * + * @return string + */ + public function getEmailLocalPart() + { + return $this->_emailLocalPart; + } + + /** + * Get the domain part of the email address + * + * @return string + */ + public function getEmailDomainPart() + { + return $this->_emailDomainPart; + } + + /** + * Get the HTML code needed for the mail hide + * + * @param string $email + * @return string + * @throws Zend_Service_ReCaptcha_MailHide_Exception + */ + public function getHtml($email = null) + { + if ($email !== null) { + $this->setEmail($email); + } elseif (null === ($email = $this->getEmail())) { + /** @see Zend_Service_ReCaptcha_MailHide_Exception */ + require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php'; + throw new Zend_Service_ReCaptcha_MailHide_Exception('Missing email address'); + } + + if ($this->_publicKey === null) { + /** @see Zend_Service_ReCaptcha_MailHide_Exception */ + require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php'; + throw new Zend_Service_ReCaptcha_MailHide_Exception('Missing public key'); + } + + if ($this->_privateKey === null) { + /** @see Zend_Service_ReCaptcha_MailHide_Exception */ + require_once 'Zend/Service/ReCaptcha/MailHide/Exception.php'; + throw new Zend_Service_ReCaptcha_MailHide_Exception('Missing private key'); + } + + /* Generate the url */ + $url = $this->_getUrl(); + + $enc = $this->getOption('encoding'); + + /* Genrate the HTML used to represent the email address */ + $html = htmlentities($this->getEmailLocalPart(), ENT_COMPAT, $enc) + . '' . $this->_options['linkHiddenText'] . '@' + . htmlentities($this->getEmailDomainPart(), ENT_COMPAT, $enc); + + return $html; + } + + /** + * Get the url used on the "hidden" part of the email address + * + * @return string + */ + protected function _getUrl() + { + /* Figure out how much we need to pad the email */ + $numPad = self::ENCRYPTION_BLOCK_SIZE - (strlen($this->_email) % self::ENCRYPTION_BLOCK_SIZE); + + /* Pad the email */ + $emailPadded = str_pad($this->_email, strlen($this->_email) + $numPad, chr($numPad)); + + /* Encrypt the email */ + $emailEncrypted = mcrypt_encrypt(self::ENCRYPTION_CIPHER, $this->_privateKeyPacked, $emailPadded, self::ENCRYPTION_MODE, self::ENCRYPTION_IV); + + /* Return the url */ + return self::MAILHIDE_SERVER . '?k=' . $this->_publicKey . '&c=' . strtr(base64_encode($emailEncrypted), '+/', '-_'); + } +} diff --git a/library/Zend/Service/ReCaptcha/MailHide/Exception.php b/library/Zend/Service/ReCaptcha/MailHide/Exception.php new file mode 100755 index 000000000..7710e7fd0 --- /dev/null +++ b/library/Zend/Service/ReCaptcha/MailHide/Exception.php @@ -0,0 +1,36 @@ +setStatus($status); + } + + if ($errorCode !== null) { + $this->setErrorCode($errorCode); + } + + if ($httpResponse !== null) { + $this->setFromHttpResponse($httpResponse); + } + } + + /** + * Set the status + * + * @param string $status + * @return Zend_Service_ReCaptcha_Response + */ + public function setStatus($status) + { + if ($status === 'true') { + $this->_status = true; + } else { + $this->_status = false; + } + + return $this; + } + + /** + * Get the status + * + * @return boolean + */ + public function getStatus() + { + return $this->_status; + } + + /** + * Alias for getStatus() + * + * @return boolean + */ + public function isValid() + { + return $this->getStatus(); + } + + /** + * Set the error code + * + * @param string $errorCode + * @return Zend_Service_ReCaptcha_Response + */ + public function setErrorCode($errorCode) + { + $this->_errorCode = $errorCode; + + return $this; + } + + /** + * Get the error code + * + * @return string + */ + public function getErrorCode() + { + return $this->_errorCode; + } + + /** + * Populate this instance based on a Zend_Http_Response object + * + * @param Zend_Http_Response $response + * @return Zend_Service_ReCaptcha_Response + */ + public function setFromHttpResponse(Zend_Http_Response $response) + { + $body = $response->getBody(); + + // Default status and error code + $status = 'false'; + $errorCode = ''; + + $parts = explode("\n", $body); + + if ($parts[0] === 'true') { + $status = 'true'; + } + + if (!empty($parts[1])) { + $errorCode = $parts[1]; + } + + $this->setStatus($status); + $this->setErrorCode($errorCode); + + return $this; + } +} diff --git a/library/Zend/Service/ShortUrl/AbstractShortener.php b/library/Zend/Service/ShortUrl/AbstractShortener.php new file mode 100755 index 000000000..c1773c7ae --- /dev/null +++ b/library/Zend/Service/ShortUrl/AbstractShortener.php @@ -0,0 +1,83 @@ +_baseUri) !== 0) { + require_once 'Zend/Service/ShortUrl/Exception.php'; + throw new Zend_Service_ShortUrl_Exception(sprintf( + 'The url "%s" is not valid for this service and the target cannot be resolved', + $shortenedUrl + )); + } + } +} diff --git a/library/Zend/Service/ShortUrl/BitLy.php b/library/Zend/Service/ShortUrl/BitLy.php new file mode 100755 index 000000000..71b21ea18 --- /dev/null +++ b/library/Zend/Service/ShortUrl/BitLy.php @@ -0,0 +1,167 @@ +setOAuthAccessToken($login); + } else { + $this->setApiLogin($login, $apiKey); + } + } + + /** + * set OAuth credentials + * + * @param $accessToken + * @return Zend_Service_ShortUrl_BitLy + */ + public function setOAuthAccessToken($accessToken) + { + $this->_apiKey = $accessToken; + $this->_loginName = null; + return $this; + } + + /** + * set login credentials + * + * @param $login + * @param $apiKey + * @return Zend_Service_ShortUrl_BitLy + */ + public function setApiLogin($login, $apiKey) + { + $this->_apiKey = $apiKey; + $this->_loginName = $login; + return $this; + } + + /** + * prepare http client + * @return void + */ + protected function _setAccessParameter() + { + if(null === $this->_loginName) { + //OAuth login + $this->getHttpClient()->setParameterGet('access_token', $this->_apiKey); + } else { + //login/APIKey authentication + $this->getHttpClient()->setParameterGet('login',$this->_loginName); + $this->getHttpClient()->setParameterGet('apiKey',$this->_apiKey); + } + } + + /** + * handle bit.ly response + * + * @return string + * @throws Zend_Service_ShortUrl_Exception + */ + protected function _processRequest() + { + $response = $this->getHttpClient()->request(); + if(500 == $response->getStatus()) { + throw new Zend_Service_ShortUrl_Exception('Bit.ly :: '.$response->getBody()); + } + return $response->getBody(); + } + + /** + * This function shortens long url + * + * @param string $url URL to Shorten + * @throws Zend_Service_ShortUrl_Exception if bit.ly reports an error + * @return string Shortened Url + */ + public function shorten($url) + { + $this->_validateUri($url); + $this->_setAccessParameter(); + + $this->getHttpClient()->setUri($this->_apiUri.'/v3/shorten'); + $this->getHttpClient()->setParameterGet('longUrl',$url); + $this->getHttpClient()->setParameterGet('format','txt'); + + return $this->_processRequest(); + } + + /** + * Reveals target for short URL + * + * @param string $shortenedUrl URL to reveal target of + * @throws Zend_Service_ShortUrl_Exception if bit.ly reports an error + * @return string Unshortened Url + */ + public function unshorten($shortenedUrl) + { + $this->_validateUri($shortenedUrl); + $this->_setAccessParameter(); + + $this->getHttpClient()->setUri($this->_apiUri.'/v3/expand'); + $this->getHttpClient()->setParameterGet('shortUrl',$shortenedUrl); + $this->getHttpClient()->setParameterGet('format','txt'); + + return $this->_processRequest(); + } +} diff --git a/library/Zend/Service/ShortUrl/Exception.php b/library/Zend/Service/ShortUrl/Exception.php new file mode 100755 index 000000000..3e1b97ed2 --- /dev/null +++ b/library/Zend/Service/ShortUrl/Exception.php @@ -0,0 +1,32 @@ +_validateUri($url); + + $serviceUri = 'http://is.gd/api.php'; + + $this->getHttpClient()->resetParameters(true); + $this->getHttpClient()->setUri($serviceUri); + $this->getHttpClient()->setParameterGet('longurl', $url); + + $response = $this->getHttpClient()->request(); + + return $response->getBody(); + } + + /** + * Reveals target for short URL + * + * @param string $shortenedUrl URL to reveal target of + * @throws Zend_Service_ShortUrl_Exception When URL is not valid or is not shortened by this service + * @return string + */ + public function unshorten($shortenedUrl) + { + $this->_validateUri($shortenedUrl); + + $this->_verifyBaseUri($shortenedUrl); + + $this->getHttpClient()->resetParameters(true); + $this->getHttpClient()->setUri($shortenedUrl); + $this->getHttpClient()->setConfig(array('maxredirects' => 0)); + + $response = $this->getHttpClient()->request(); + if ($response->isError()) { + require_once 'Zend/Service/ShortUrl/Exception.php'; + throw new Zend_Service_ShortUrl_Exception($response->getMessage()); + } + + if ($response->isRedirect()) { + return $response->getHeader('Location'); + } + + require_once 'Zend/Service/ShortUrl/Exception.php'; + throw new Zend_Service_ShortUrl_Exception('Url unshortening was not successful'); + } +} diff --git a/library/Zend/Service/ShortUrl/JdemCz.php b/library/Zend/Service/ShortUrl/JdemCz.php new file mode 100755 index 000000000..7f04bc1f5 --- /dev/null +++ b/library/Zend/Service/ShortUrl/JdemCz.php @@ -0,0 +1,84 @@ +_validateUri($url); + + $serviceUri = 'http://www.jdem.cz/get'; + + $this->getHttpClient()->setUri($serviceUri); + $this->getHttpClient()->setParameterGet('url', $url); + + $response = $this->getHttpClient()->request(); + + return $response->getBody(); + } + + /** + * Reveals target for short URL + * + * @param string $shortenedUrl URL to reveal target of + * @throws Zend_Service_ShortUrl_Exception When URL is not valid or is not shortened by this service + * @return string + */ + public function unshorten($shortenedUrl) + { + $this->_validateUri($shortenedUrl); + + $this->_verifyBaseUri($shortenedUrl); + + $this->getHttpClient()->setUri($shortenedUrl)->setParameterGet('kam', 1); + + $response = $this->getHttpClient()->request(); + + return $response->getBody(); + } +} diff --git a/library/Zend/Service/ShortUrl/MetamarkNet.php b/library/Zend/Service/ShortUrl/MetamarkNet.php new file mode 100755 index 000000000..61712994c --- /dev/null +++ b/library/Zend/Service/ShortUrl/MetamarkNet.php @@ -0,0 +1,85 @@ +_validateUri($url); + + $this->getHttpClient()->setUri($this->_apiUri); + $this->getHttpClient()->setParameterGet('long_url', $url); + + $response = $this->getHttpClient()->request(); + + return $response->getBody(); + } + + /** + * Reveals target for short URL + * + * @param string $shortenedUrl URL to reveal target of + * @throws Zend_Service_ShortUrl_Exception When URL is not valid or is not shortened by this service + * @return string + */ + public function unshorten($shortenedUrl) + { + $this->_validateUri($shortenedUrl); + + $this->_verifyBaseUri($shortenedUrl); + + $this->getHttpClient()->setUri($this->_apiUri); + $this->getHttpClient()->setParameterGet('short_url', $shortenedUrl); + + $response = $this->getHttpClient()->request(); + + return $response->getBody(); + } +} diff --git a/library/Zend/Service/ShortUrl/Shortener.php b/library/Zend/Service/ShortUrl/Shortener.php new file mode 100755 index 000000000..302030898 --- /dev/null +++ b/library/Zend/Service/ShortUrl/Shortener.php @@ -0,0 +1,45 @@ +_validateUri($url); + + $serviceUri = 'http://tinyurl.com/api-create.php'; + + $this->getHttpClient()->setUri($serviceUri); + $this->getHttpClient()->setParameterGet('url', $url); + + $response = $this->getHttpClient()->request(); + + return $response->getBody(); + } + + /** + * Reveals target for short URL + * + * @param string $shortenedUrl URL to reveal target of + * @throws Zend_Service_ShortUrl_Exception When URL is not valid or is not shortened by this service + * @return string + */ + public function unshorten($shortenedUrl) + { + $this->_validateUri($shortenedUrl); + + $this->_verifyBaseUri($shortenedUrl); + + //TinyUrl.com does not have an API for that, but we can use preview feature + //we need new Zend_Http_Client + $this->setHttpClient(new Zend_Http_Client()); + + $this->getHttpClient() + ->setCookie('preview', 1) + ->setUri($shortenedUrl); + + //get response + $response = $this->getHttpClient()->request(); + + require_once 'Zend/Dom/Query.php'; + $dom = new Zend_Dom_Query($response->getBody()); + + //find the redirect url link + $results = $dom->query('a#redirecturl'); + + //get href + $originalUrl = $results->current()->getAttribute('href'); + + return $originalUrl; + } +} diff --git a/library/Zend/Service/SlideShare.php b/library/Zend/Service/SlideShare.php new file mode 100755 index 000000000..33577af8a --- /dev/null +++ b/library/Zend/Service/SlideShare.php @@ -0,0 +1,676 @@ +_httpclient = $client; + return $this; + } + + /** + * Returns the instance of the Zend_Http_Client which will be used. Creates + * an instance of Zend_Http_Client if no previous client was set. + * + * @return Zend_Http_Client The HTTP client which will be used + */ + public function getHttpClient() + { + + if (!($this->_httpclient instanceof Zend_Http_Client)) { + $client = new Zend_Http_Client(); + $client->setConfig( + array( + 'maxredirects' => 2, + 'timeout' => 5 + ) + ); + + $this->setHttpClient($client); + } + + $this->_httpclient->resetParameters(); + + return $this->_httpclient; + } + + /** + * Sets the Zend_Cache object to use to cache the results of API queries + * + * @param Zend_Cache_Core $cacheobject The Zend_Cache object used + * @return Zend_Service_SlideShare + */ + public function setCacheObject(Zend_Cache_Core $cacheobject) + { + $this->_cacheobject = $cacheobject; + return $this; + } + + /** + * Gets the Zend_Cache object which will be used to cache API queries. If no + * cache object was previously set the the default will be used (Filesystem + * caching in /tmp with a life time of 43200 seconds) + * + * @return Zend_Cache_Core The object used in caching + */ + public function getCacheObject() + { + + if (!($this->_cacheobject instanceof Zend_Cache_Core)) { + $cache = Zend_Cache::factory( + 'Core', + 'File', + array( + 'lifetime' => 43200, + 'automatic_serialization' => true + ), + array('cache_dir' => '/tmp') + ); + + $this->setCacheObject($cache); + } + + return $this->_cacheobject; + } + + /** + * Returns the user name used for API calls + * + * @return string The username + */ + public function getUserName() + { + return $this->_username; + } + + /** + * Sets the user name to use for API calls + * + * @param string $un The username to use + * @return Zend_Service_SlideShare + */ + public function setUserName($un) + { + $this->_username = $un; + return $this; + } + + /** + * Gets the password to use in API calls + * + * @return string the password to use in API calls + */ + public function getPassword() + { + return $this->_password; + } + + /** + * Sets the password to use in API calls + * + * @param string $pw The password to use + * @return Zend_Service_SlideShare + */ + public function setPassword($pw) + { + $this->_password = (string)$pw; + return $this; + } + + /** + * Gets the API key to be used in making API calls + * + * @return string the API Key + */ + public function getApiKey() + { + return $this->_apiKey; + } + + /** + * Sets the API key to be used in making API calls + * + * @param string $key The API key to use + * @return Zend_Service_SlideShare + */ + public function setApiKey($key) + { + $this->_apiKey = (string)$key; + return $this; + } + + /** + * Gets the shared secret used in making API calls + * + * @return string the Shared secret + */ + public function getSharedSecret() + { + return $this->_sharedSecret; + } + + /** + * Sets the shared secret used in making API calls + * + * @param string $secret the shared secret + * @return Zend_Service_SlideShare + */ + public function setSharedSecret($secret) + { + $this->_sharedSecret = (string)$secret; + return $this; + } + + /** + * The Constructor + * + * @param string $apikey The API key + * @param string $sharedSecret The shared secret + * @param string $username The username + * @param string $password The password + */ + public function __construct( + $apikey, $sharedSecret, $username = null, $password = null + ) + { + $this->setApiKey($apikey) + ->setSharedSecret($sharedSecret) + ->setUserName($username) + ->setPassword($password); + + $this->_httpclient = new Zend_Http_Client(); + } + + /** + * Uploads the specified Slide show the the server + * + * @param Zend_Service_SlideShare_SlideShow $ss The slide show + * object representing the + * slide show to upload + * @param boolean $makeSrcPublic Determines if the slide + * show's source file is public + * or not upon upload + * @return Zend_Service_SlideShare_SlideShow The passed Slide show object, + * with the new assigned ID + * provided + * @throws Zend_Service_SlideShare_Exception + */ + public function uploadSlideShow( + Zend_Service_SlideShare_SlideShow $ss, $makeSrcPublic = true + ) + { + $timestamp = time(); + + $params = array( + 'api_key' => $this->getApiKey(), + 'ts' => $timestamp, + 'hash' => sha1($this->getSharedSecret() . $timestamp), + 'username' => $this->getUserName(), + 'password' => $this->getPassword(), + 'slideshow_title' => $ss->getTitle() + ); + + $description = $ss->getDescription(); + $tags = $ss->getTags(); + + $filename = $ss->getFilename(); + + if (!file_exists($filename) || !is_readable($filename)) { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + 'Specified Slideshow for upload not found or unreadable' + ); + } + + if (!empty($description)) { + $params['slideshow_description'] = $description; + } else { + $params['slideshow_description'] = ""; + } + + if (!empty($tags)) { + $tmp = array(); + foreach ($tags as $tag) { + $tmp[] = "\"$tag\""; + } + $params['slideshow_tags'] = implode(' ', $tmp); + } else { + $params['slideshow_tags'] = ""; + } + + $client = $this->getHttpClient(); + $client->setUri(self::SERVICE_UPLOAD_URI); + $client->setParameterPost($params); + $client->setFileUpload($filename, "slideshow_srcfile"); + + require_once 'Zend/Http/Client/Exception.php'; + try { + $response = $client->request('POST'); + } catch (Zend_Http_Client_Exception $e) { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + "Service Request Failed: {$e->getMessage()}", 0, $e + ); + } + + $sxe = Zend_Xml_Security::scan($response->getBody()); + + if ($sxe->getName() == "SlideShareServiceError") { + $message = (string)$sxe->Message[0]; + list($code, $errorStr) = explode(':', $message); + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + trim($errorStr), + $code + ); + } + + if (!$sxe->getName() == "SlideShowUploaded") { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + 'Unknown XML Respons Received' + ); + } + + $ss->setId((int)(string)$sxe->SlideShowID); + + return $ss; + } + + /** + * Retrieves a slide show's information based on slide show ID + * + * @param int $ssId The slide show ID + * @return Zend_Service_SlideShare_SlideShow the Slideshow object + * @throws Zend_Service_SlideShare_Exception + */ + public function getSlideShow($ssId) + { + $timestamp = time(); + + $params = array( + 'api_key' => $this->getApiKey(), + 'ts' => $timestamp, + 'hash' => sha1($this->getSharedSecret() . $timestamp), + 'slideshow_id' => $ssId + ); + + $cache = $this->getCacheObject(); + $cacheKey = md5("__zendslideshare_cache_$ssId"); + + if (!$retval = $cache->load($cacheKey)) { + $client = $this->getHttpClient(); + + $client->setUri(self::SERVICE_GET_SHOW_URI); + $client->setParameterPost($params); + + require_once 'Zend/Http/Client/Exception.php'; + try { + $response = $client->request('POST'); + } catch (Zend_Http_Client_Exception $e) { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + "Service Request Failed: {$e->getMessage()}", 0, $e + ); + } + + $sxe = Zend_Xml_Security::scan($response->getBody()); + + if ($sxe->getName() == "SlideShareServiceError") { + $message = (string)$sxe->Message[0]; + list($code, $errorStr) = explode(':', $message); + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + trim($errorStr), + $code + ); + } + + if (!($sxe->getName() == 'Slideshow')) { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + 'Unknown XML Repsonse Received' + ); + } + $retval = $this->_slideShowNodeToObject(clone $sxe); + + $cache->save($retval, $cacheKey); + } + + return $retval; + } + + /** + * Retrieves an array of slide shows for a given username + * + * @param string $username The username to retrieve slide shows from + * @param int $offset The offset of the list to start retrieving from + * @param int $limit The maximum number of slide shows to retrieve + * @return array An array of Zend_Service_SlideShare_SlideShow objects + */ + public function getSlideShowsByUsername( + $username, $offset = null, $limit = null + ) + { + return $this->_getSlideShowsByType( + 'username_for', $username, $offset, $limit + ); + } + + /** + * Retrieves an array of slide shows based on tag + * + * @param string $tag The tag to retrieve slide shows with + * @param int $offset The offset of the list to start retrieving from + * @param int $limit The maximum number of slide shows to retrieve + * @return array An array of Zend_Service_SlideShare_SlideShow objects + */ + public function getSlideShowsByTag($tag, $offset = null, $limit = null) + { + + if (is_array($tag)) { + $tmp = array(); + foreach ($tag as $t) { + $tmp[] = "\"$t\""; + } + + $tag = implode(" ", $tmp); + } + + return $this->_getSlideShowsByType('tag', $tag, $offset, $limit); + } + + /** + * Retrieves an array of slide shows based on group name + * + * @param string $group The group name to retrieve slide shows for + * @param int $offset The offset of the list to start retrieving from + * @param int $limit The maximum number of slide shows to retrieve + * @return array An array of Zend_Service_SlideShare_SlideShow objects + */ + public function getSlideShowsByGroup($group, $offset = null, $limit = null) + { + return $this->_getSlideShowsByType('group_name', $group, $offset, $limit); + } + + /** + * Retrieves Zend_Service_SlideShare_SlideShow object arrays based on the type of + * list desired + * + * @param string $key The type of slide show object to retrieve + * @param string $value The specific search query for the slide show type to look up + * @param int $offset The offset of the list to start retrieving from + * @param int $limit The maximum number of slide shows to retrieve + * @return array An array of Zend_Service_SlideShare_SlideShow objects + * @throws Zend_Service_SlideShare_Exception + */ + protected function _getSlideShowsByType( + $key, $value, $offset = null, $limit = null + ) + { + $key = strtolower($key); + + switch ($key) { + case 'username_for': + $responseTag = 'User'; + $queryUri = self::SERVICE_GET_SHOW_BY_USER_URI; + break; + case 'group_name': + $responseTag = 'Group'; + $queryUri = self::SERVICE_GET_SHOW_BY_GROUP_URI; + break; + case 'tag': + $responseTag = 'Tag'; + $queryUri = self::SERVICE_GET_SHOW_BY_TAG_URI; + break; + default: + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + 'Invalid SlideShare Query' + ); + } + + $timestamp = time(); + + $params = array( + 'api_key' => $this->getApiKey(), + 'ts' => $timestamp, + 'hash' => sha1($this->getSharedSecret() . $timestamp), + $key => $value + ); + + if ($offset !== null) { + $params['offset'] = (int)$offset; + } + + if ($limit !== null) { + $params['limit'] = (int)$limit; + } + + $cache = $this->getCacheObject(); + $cacheKey = md5($key . $value . $offset . $limit); + + if (!$retval = $cache->load($cacheKey)) { + $client = $this->getHttpClient(); + + $client->setUri($queryUri); + $client->setParameterPost($params); + + require_once 'Zend/Http/Client/Exception.php'; + try { + $response = $client->request('POST'); + } catch (Zend_Http_Client_Exception $e) { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + "Service Request Failed: {$e->getMessage()}", 0, $e + ); + } + + $sxe = Zend_Xml_Security::scan($response->getBody()); + + if ($sxe->getName() == "SlideShareServiceError") { + $message = (string)$sxe->Message[0]; + list($code, $errorStr) = explode(':', $message); + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + trim($errorStr), $code + ); + } + + if (!$sxe->getName() == $responseTag) { + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + 'Unknown or Invalid XML Repsonse Received' + ); + } + + $retval = array(); + + foreach ($sxe->children() as $node) { + if ($node->getName() == 'Slideshow') { + $retval[] = $this->_slideShowNodeToObject($node); + } + } + + $cache->save($retval, $cacheKey); + } + + return $retval; + } + + /** + * Converts a SimpleXMLElement object representing a response from the service + * into a Zend_Service_SlideShare_SlideShow object + * + * @see http://www.slideshare.net/developers/documentation#get_slideshow + * + * @param SimpleXMLElement $node The input XML from the slideshare.net service + * @return Zend_Service_SlideShare_SlideShow The resulting object + * @throws Zend_Service_SlideShare_Exception + */ + protected function _slideShowNodeToObject(SimpleXMLElement $node) + { + + if ($node->getName() == 'Slideshow') { + $ss = new Zend_Service_SlideShare_SlideShow(); + + $ss->setId((string)$node->ID); + $ss->setDescription((string)$node->Description); + $ss->setEmbedCode((string)$node->Embed); + $ss->setNumViews((string)$node->Views); + $ss->setUrl((string)$node->URL); + $ss->setStatus((string)$node->Status); + $ss->setStatusDescription((string)$node->StatusDescription); + + foreach (explode(",", (string)$node->Tags) as $tag) { + if (!in_array($tag, $ss->getTags())) { + $ss->addTag($tag); + } + } + + $ss->setThumbnailUrl((string)$node->ThumbnailURL); + $ss->setTitle((string)$node->Title); + $ss->setLocation((string)$node->Location); + $ss->setTranscript((string)$node->Transcript); + + return $ss; + } + + require_once 'Zend/Service/SlideShare/Exception.php'; + throw new Zend_Service_SlideShare_Exception( + 'Was not provided the expected XML Node for processing' + ); + } +} diff --git a/library/Zend/Service/SlideShare/Exception.php b/library/Zend/Service/SlideShare/Exception.php new file mode 100755 index 000000000..577d63660 --- /dev/null +++ b/library/Zend/Service/SlideShare/Exception.php @@ -0,0 +1,38 @@ +_location; + } + + /** + * Sets the location of the slide show + * + * @param string $loc The location to use + * @return Zend_Service_SlideShare_SlideShow + */ + public function setLocation($loc) + { + $this->_location = (string)$loc; + return $this; + } + + /** + * Gets the transcript for this slide show + * + * @return string the Transcript + */ + public function getTranscript() + { + return $this->_transcript; + } + + /** + * Sets the transcript for this slide show + * + * @param string $t The transcript + * @return Zend_Service_SlideShare_SlideShow + */ + public function setTranscript($t) + { + $this->_transcript = (string)$t; + return $this; + } + + /** + * Adds a tag to the slide show + * + * @param string $tag The tag to add + * @return Zend_Service_SlideShare_SlideShow + */ + public function addTag($tag) + { + $this->_tags[] = (string)$tag; + return $this; + } + + /** + * Sets the tags for the slide show + * + * @param array $tags An array of tags to set + * @return Zend_Service_SlideShare_SlideShow + */ + public function setTags(Array $tags) + { + $this->_tags = $tags; + return $this; + } + + /** + * Gets all of the tags associated with the slide show + * + * @return array An array of tags for the slide show + */ + public function getTags() + { + return $this->_tags; + } + + /** + * Sets the filename on the local filesystem of the slide show + * (for uploading a new slide show) + * + * @param string $file The full path & filename to the slide show + * @return Zend_Service_SlideShare_SlideShow + */ + public function setFilename($file) + { + $this->_slideShowFilename = (string)$file; + return $this; + } + + /** + * Retrieves the filename on the local filesystem of the slide show + * which will be uploaded + * + * @return string The full path & filename to the slide show + */ + public function getFilename() + { + return $this->_slideShowFilename; + } + + /** + * Sets the ID for the slide show + * + * @param int $id The slide show ID + * @return Zend_Service_SlideShare_SlideShow + */ + public function setId($id) + { + $this->_slideShowId = (string)$id; + return $this; + } + + /** + * Gets the ID for the slide show + * + * @return int The slide show ID + */ + public function getId() + { + return $this->_slideShowId; + } + + /** + * Sets the HTML embed code for the slide show + * + * @param string $code The HTML embed code + * @return Zend_Service_SlideShare_SlideShow + */ + public function setEmbedCode($code) + { + $this->_embedCode = (string)$code; + return $this; + } + + /** + * Retrieves the HTML embed code for the slide show + * + * @return string the HTML embed code + */ + public function getEmbedCode() + { + return $this->_embedCode; + } + + /** + * Sets the Thumbnail URI for the slide show + * + * @param string $url The URI for the thumbnail image + * @return Zend_Service_SlideShare_SlideShow + */ + public function setThumbnailUrl($url) + { + $this->_thumbnailUrl = (string) $url; + return $this; + } + + /** + * Retrieves the Thumbnail URi for the slide show + * + * @return string The URI for the thumbnail image + */ + public function getThumbnailUrl() + { + return $this->_thumbnailUrl; + } + + /** + * Sets the title for the Slide show + * + * @param string $title The slide show title + * @return Zend_Service_SlideShare_SlideShow + */ + public function setTitle($title) + { + $this->_title = (string)$title; + return $this; + } + + /** + * Retrieves the Slide show title + * + * @return string the Slide show title + */ + public function getTitle() + { + return $this->_title; + } + + /** + * Sets the description for the Slide show + * + * @param string $desc The description of the slide show + * @return Zend_Service_SlideShare_SlideShow + */ + public function setDescription($desc) + { + $this->_description = (string)$desc; + return $this; + } + + /** + * Gets the description of the slide show + * + * @return string The slide show description + */ + public function getDescription() + { + return $this->_description; + } + + /** + * Sets the numeric status of the slide show on the server + * + * @param int $status The numeric status on the server + * @return Zend_Service_SlideShare_SlideShow + */ + public function setStatus($status) + { + $this->_status = (int)$status; + return $this; + } + + /** + * Gets the numeric status of the slide show on the server + * + * @return int A Zend_Service_SlideShare_SlideShow Status constant + */ + public function getStatus() + { + return $this->_status; + } + + /** + * Sets the textual description of the status of the slide show on the server + * + * @param string $desc The textual description of the status of the slide show + * @return Zend_Service_SlideShare_SlideShow + */ + public function setStatusDescription($desc) + { + $this->_statusDescription = (string)$desc; + return $this; + } + + /** + * Gets the textual description of the status of the slide show on the server + * + * @return string the textual description of the service + */ + public function getStatusDescription() + { + return $this->_statusDescription; + } + + /** + * Sets the permanent link of the slide show + * + * @see Zend_Service_SlideShare_SlideShow::setUrl() + * + * @param string $url The permanent URL for the slide show + * @return Zend_Service_SlideShare_SlideShow + * @deprecated Since 1.12.10, use setUrl() + */ + public function setPermaLink($url) + { + $this->setUrl($url); + return $this; + } + + /** + * Gets the permanent link of the slide show + * + * @see Zend_Service_SlideShare_SlideShow::getUrl() + * + * @return string the permanent URL for the slide show + * @deprecated Since 1.12.10, use getUrl() + */ + public function getPermaLink() + { + return $this->getUrl(); + } + + /** + * Sets the URL of the slide show + * + * @param string $url The URL for the slide show + * @return self + */ + public function setUrl($url) + { + $this->_url = (string)$url; + return $this; + } + + /** + * Gets the URL of the slide show + * + * @return string The URL for the slide show + */ + public function getUrl() + { + return $this->_url; + } + + /** + * Sets the number of views the slide show has received + * + * @param int $views The number of views + * @return Zend_Service_SlideShare_SlideShow + */ + public function setNumViews($views) + { + $this->_numViews = (int)$views; + return $this; + } + + /** + * Gets the number of views the slide show has received + * + * @return int The number of views + */ + public function getNumViews() + { + return $this->_numViews; + } +} diff --git a/library/Zend/Service/SqlAzure/Exception.php b/library/Zend/Service/SqlAzure/Exception.php new file mode 100755 index 000000000..800baafce --- /dev/null +++ b/library/Zend/Service/SqlAzure/Exception.php @@ -0,0 +1,35 @@ +_subscriptionId = $subscriptionId; + $this->_certificatePath = $certificatePath; + $this->_certificatePassphrase = $certificatePassphrase; + + $this->_retryPolicy = $retryPolicy; + if (is_null($this->_retryPolicy)) { + $this->_retryPolicy = Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract::noRetry(); + } + + // Setup default Zend_Http_Client channel + $options = array( + 'adapter' => 'Zend_Http_Client_Adapter_Socket', + 'ssltransport' => 'ssl', + 'sslcert' => $this->_certificatePath, + 'sslpassphrase' => $this->_certificatePassphrase, + 'sslusecontext' => true, + ); + if (function_exists('curl_init')) { + // Set cURL options if cURL is used afterwards + $options['curloptions'] = array( + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_TIMEOUT => 120, + ); + } + $this->_httpClientChannel = new Zend_Http_Client(null, $options); + } + + /** + * Set the HTTP client channel to use + * + * @param Zend_Http_Client_Adapter_Interface|string $adapterInstance Adapter instance or adapter class name. + */ + public function setHttpClientChannel($adapterInstance = 'Zend_Http_Client_Adapter_Socket') + { + $this->_httpClientChannel->setAdapter($adapterInstance); + } + + /** + * Retrieve HTTP client channel + * + * @return Zend_Http_Client_Adapter_Interface + */ + public function getHttpClientChannel() + { + return $this->_httpClientChannel; + } + + /** + * Returns the Windows Azure subscription ID + * + * @return string + */ + public function getSubscriptionId() + { + return $this->_subscriptionId; + } + + /** + * Returns the last request ID. + * + * @return string + */ + public function getLastRequestId() + { + return $this->_lastRequestId; + } + + /** + * Get base URL for creating requests + * + * @return string + */ + public function getBaseUrl() + { + return self::URL_MANAGEMENT . '/' . $this->_subscriptionId; + } + + /** + * Perform request using Zend_Http_Client channel + * + * @param string $path Path + * @param string $queryString Query string + * @param string $httpVerb HTTP verb the request will use + * @param array $headers x-ms headers to add + * @param mixed $rawData Optional RAW HTTP data to be sent over the wire + * @return Zend_Http_Response + */ + protected function _performRequest( + $path = '/', + $queryString = '', + $httpVerb = Zend_Http_Client::GET, + $headers = array(), + $rawData = null + ) { + // Clean path + if (strpos($path, '/') !== 0) { + $path = '/' . $path; + } + + // Clean headers + if (is_null($headers)) { + $headers = array(); + } + + // Ensure cUrl will also work correctly: + // - disable Content-Type if required + // - disable Expect: 100 Continue + if (!isset($headers["Content-Type"])) { + $headers["Content-Type"] = ''; + } + //$headers["Expect"] = ''; + + // Add version header + $headers['x-ms-version'] = $this->_apiVersion; + + // URL encoding + $path = self::urlencode($path); + $queryString = self::urlencode($queryString); + + // Generate URL and sign request + $requestUrl = $this->getBaseUrl() . $path . $queryString; + $requestHeaders = $headers; + + // Prepare request + $this->_httpClientChannel->resetParameters(true); + $this->_httpClientChannel->setUri($requestUrl); + $this->_httpClientChannel->setHeaders($requestHeaders); + $this->_httpClientChannel->setRawData($rawData); + + // Execute request + $response = $this->_retryPolicy->execute( + array($this->_httpClientChannel, 'request'), + array($httpVerb) + ); + + // Store request id + $this->_lastRequestId = $response->getHeader('x-ms-request-id'); + + return $response; + } + + /** + * Parse result from Zend_Http_Response + * + * @param Zend_Http_Response $response Response from HTTP call + * @return object + * @throws Zend_Service_WindowsAzure_Exception + */ + protected function _parseResponse(Zend_Http_Response $response = null) + { + if (is_null($response)) { + require_once 'Zend/Service/SqlAzure/Exception.php'; + throw new Zend_Service_SqlAzure_Exception('Response should not be null.'); + } + + $xml = @Zend_Xml_Security::scan($response->getBody()); + + if ($xml !== false) { + // Fetch all namespaces + $namespaces = array_merge($xml->getNamespaces(true), $xml->getDocNamespaces(true)); + + // Register all namespace prefixes + foreach ($namespaces as $prefix => $ns) { + if ($prefix != '') { + $xml->registerXPathNamespace($prefix, $ns); + } + } + } + + return $xml; + } + + /** + * URL encode function + * + * @param string $value Value to encode + * @return string Encoded value + */ + public static function urlencode($value) + { + return str_replace(' ', '%20', $value); + } + + /** + * Builds a query string from an array of elements + * + * @param array Array of elements + * @return string Assembled query string + */ + public static function createQueryStringFromArray($queryString) + { + return count($queryString) > 0 ? '?' . implode('&', $queryString) : ''; + } + + /** + * Get error message from Zend_Http_Response + * + * @param Zend_Http_Response $response Repsonse + * @param string $alternativeError Alternative error message + * @return string + */ + protected function _getErrorMessage(Zend_Http_Response $response, $alternativeError = 'Unknown error.') + { + $response = $this->_parseResponse($response); + if ($response && $response->Message) { + return (string)$response->Message; + } else { + return $alternativeError; + } + } + + /** + * The Create Server operation adds a new SQL Azure server to a subscription. + * + * @param string $administratorLogin Administrator login. + * @param string $administratorPassword Administrator password. + * @param string $location Location of the server. + * @return Zend_Service_SqlAzure_Management_ServerInstance Server information. + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function createServer($administratorLogin, $administratorPassword, $location) + { + if ($administratorLogin == '' || is_null($administratorLogin)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Administrator login should be specified.'); + } + if ($administratorPassword == '' || is_null($administratorPassword)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Administrator password should be specified.'); + } + if (is_null($location) && is_null($affinityGroup)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Please specify a location for the server.'); + } + + $response = $this->_performRequest(self::OP_SERVERS, '', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $administratorLogin . '' . $administratorPassword . '' . $location . ''); + + if ($response->isSuccessful()) { + $xml = $this->_parseResponse($response); + + return new Zend_Service_SqlAzure_Management_ServerInstance( + (string)$xml, + $administratorLogin, + $location + ); + } else { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Servers operation enumerates SQL Azure servers that are provisioned for a subscription. + * + * @return array An array of Zend_Service_SqlAzure_Management_ServerInstance. + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function listServers() + { + $response = $this->_performRequest(self::OP_SERVERS); + + if ($response->isSuccessful()) { + $xml = $this->_parseResponse($response); + $xmlServices = null; + + if (!$xml->Server) { + return array(); + } + if (count($xml->Server) > 1) { + $xmlServices = $xml->Server; + } else { + $xmlServices = array($xml->Server); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_SqlAzure_Management_ServerInstance( + (string)$xmlServices[$i]->Name, + (string)$xmlServices[$i]->AdministratorLogin, + (string)$xmlServices[$i]->Location + ); + } + } + return $services; + } else { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Drop Server operation drops a SQL Azure server from a subscription. + * + * @param string $serverName Server to drop. + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function dropServer($serverName) + { + if ($serverName == '' || is_null($serverName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Server name should be specified.'); + } + + $response = $this->_performRequest(self::OP_SERVERS . '/' . $serverName, '', Zend_Http_Client::DELETE); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Set Server Administrator Password operation sets the administrative password of a SQL Azure server for a subscription. + * + * @param string $serverName Server to set password for. + * @param string $administratorPassword Administrator password. + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function setAdministratorPassword($serverName, $administratorPassword) + { + if ($serverName == '' || is_null($serverName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Server name should be specified.'); + } + if ($administratorPassword == '' || is_null($administratorPassword)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Administrator password should be specified.'); + } + + $response = $this->_performRequest(self::OP_SERVERS . '/' . $serverName, '?op=ResetPassword', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $administratorPassword . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Set Server Firewall Rule operation updates an existing firewall rule or adds a new firewall rule for a SQL Azure server that belongs to a subscription. + * + * @param string $serverName Server name. + * @param string $ruleName Firewall rule name. + * @param string $startIpAddress Start IP address. + * @param string $endIpAddress End IP address. + * @return Zend_Service_SqlAzure_Management_FirewallRuleInstance + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function createFirewallRule($serverName, $ruleName, $startIpAddress, $endIpAddress) + { + if ($serverName == '' || is_null($serverName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Server name should be specified.'); + } + if ($ruleName == '' || is_null($ruleName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Rule name should be specified.'); + } + if ($startIpAddress == '' || is_null($startIpAddress) || !filter_var($startIpAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Start IP address should be specified.'); + } + if ($endIpAddress == '' || is_null($endIpAddress) || !filter_var($endIpAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('End IP address should be specified.'); + } + + $response = $this->_performRequest(self::OP_SERVERS . '/' . $serverName . '/' . self::OP_FIREWALLRULES . '/' . $ruleName, '', + Zend_Http_Client::PUT, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $startIpAddress . '' . $endIpAddress . ''); + + if ($response->isSuccessful()) { + + return new Zend_Service_SqlAzure_Management_FirewallRuleInstance( + $ruleName, + $startIpAddress, + $endIpAddress + ); + } else { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Server Firewall Rules operation retrieves a list of all the firewall rules for a SQL Azure server that belongs to a subscription. + * + * @param string $serverName Server name. + * @return Array of Zend_Service_SqlAzure_Management_FirewallRuleInstance. + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function listFirewallRules($serverName) + { + if ($serverName == '' || is_null($serverName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Server name should be specified.'); + } + + $response = $this->_performRequest(self::OP_SERVERS . '/' . $serverName . '/' . self::OP_FIREWALLRULES); + + if ($response->isSuccessful()) { + $xml = $this->_parseResponse($response); + $xmlServices = null; + + if (!$xml->FirewallRule) { + return array(); + } + if (count($xml->FirewallRule) > 1) { + $xmlServices = $xml->FirewallRule; + } else { + $xmlServices = array($xml->FirewallRule); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_SqlAzure_Management_FirewallRuleInstance( + (string)$xmlServices[$i]->Name, + (string)$xmlServices[$i]->StartIpAddress, + (string)$xmlServices[$i]->EndIpAddress + ); + } + } + return $services; + } else { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Delete Server Firewall Rule operation deletes a firewall rule from a SQL Azure server that belongs to a subscription. + * + * @param string $serverName Server name. + * @param string $ruleName Rule name. + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function deleteFirewallRule($serverName, $ruleName) + { + if ($serverName == '' || is_null($serverName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Server name should be specified.'); + } + if ($ruleName == '' || is_null($ruleName)) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception('Rule name should be specified.'); + } + + $response = $this->_performRequest(self::OP_SERVERS . '/' . $serverName . '/' . self::OP_FIREWALLRULES . '/' . $ruleName, '', + Zend_Http_Client::DELETE); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Creates a firewall rule for Microsoft Services. This is required if access to SQL Azure is required from other services like Windows Azure. + * + * @param string $serverName Server name. + * @param boolean $allowAccess Allow access from other Microsoft Services? + * @throws Zend_Service_SqlAzure_Management_Exception + */ + public function createFirewallRuleForMicrosoftServices($serverName, $allowAccess) + { + if ($allowAccess) { + $this->createFirewallRule($serverName, 'MicrosoftServices', '0.0.0.0', '0.0.0.0'); + } else { + $this->deleteFirewallRule($serverName, 'MicrosoftServices'); + } + } + +} diff --git a/library/Zend/Service/SqlAzure/Management/Exception.php b/library/Zend/Service/SqlAzure/Management/Exception.php new file mode 100755 index 000000000..88e2f8fef --- /dev/null +++ b/library/Zend/Service/SqlAzure/Management/Exception.php @@ -0,0 +1,35 @@ +_data = array( + 'name' => $name, + 'startipaddress' => $startIpAddress, + 'endipaddress' => $endIpAddress + ); + } +} diff --git a/library/Zend/Service/SqlAzure/Management/ServerInstance.php b/library/Zend/Service/SqlAzure/Management/ServerInstance.php new file mode 100755 index 000000000..d10611e54 --- /dev/null +++ b/library/Zend/Service/SqlAzure/Management/ServerInstance.php @@ -0,0 +1,59 @@ +_data = array( + 'name' => $name, + 'dnsname' => $name . '.database.windows.net', + 'administratorlogin' => $administratorLogin, + 'location' => $location + ); + } +} diff --git a/library/Zend/Service/SqlAzure/Management/ServiceEntityAbstract.php b/library/Zend/Service/SqlAzure/Management/ServiceEntityAbstract.php new file mode 100755 index 000000000..5cc53711a --- /dev/null +++ b/library/Zend/Service/SqlAzure/Management/ServiceEntityAbstract.php @@ -0,0 +1,67 @@ +_data)) { + $this->_data[strtolower($name)] = $value; + return; + } + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception("Unknown property: " . $name); + } + + /** + * Magic overload for getting properties + * + * @param string $name Name of the property + */ + public function __get($name) { + if (array_key_exists(strtolower($name), $this->_data)) { + return $this->_data[strtolower($name)]; + } + require_once 'Zend/Service/SqlAzure/Management/Exception.php'; + throw new Zend_Service_SqlAzure_Management_Exception("Unknown property: " . $name); + } +} diff --git a/library/Zend/Service/StrikeIron.php b/library/Zend/Service/StrikeIron.php new file mode 100755 index 000000000..5ab03fcda --- /dev/null +++ b/library/Zend/Service/StrikeIron.php @@ -0,0 +1,92 @@ +_options = $options; + } + + /** + * Factory method to return a preconfigured Zend_Service_StrikeIron_* + * instance. + * + * @param null|string $options Service options + * @return object Zend_Service_StrikeIron_* instance + * @throws Zend_Service_StrikeIron_Exception + */ + public function getService($options = array()) + { + $class = isset($options['class']) ? $options['class'] : 'Base'; + unset($options['class']); + + if (strpos($class, '_') === false) { + $class = "Zend_Service_StrikeIron_{$class}"; + } + + try { + if (!class_exists($class)) { + require_once 'Zend/Loader.php'; + @Zend_Loader::loadClass($class); + } + if (!class_exists($class, false)) { + throw new Exception('Class file not found'); + } + } catch (Exception $e) { + $msg = "Service '$class' could not be loaded: " . $e->getMessage(); + /** + * @see Zend_Service_StrikeIron_Exception + */ + require_once 'Zend/Service/StrikeIron/Exception.php'; + throw new Zend_Service_StrikeIron_Exception($msg, $e->getCode(), $e); + } + + // instantiate and return the service + $service = new $class(array_merge($this->_options, $options)); + return $service; + } + +} diff --git a/library/Zend/Service/StrikeIron/Base.php b/library/Zend/Service/StrikeIron/Base.php new file mode 100755 index 000000000..a2d35ef21 --- /dev/null +++ b/library/Zend/Service/StrikeIron/Base.php @@ -0,0 +1,274 @@ + null, + 'password' => null, + 'client' => null, + 'options' => null, + 'headers' => null, + 'wsdl' => null); + + /** + * Output headers returned by the last call to SOAPClient->__soapCall() + * @param array + */ + protected $_outputHeaders = array(); + + /** + * Class constructor + * + * @param array $options Key/value pair options + * @throws Zend_Service_StrikeIron_Exception + */ + public function __construct($options = array()) + { + if (!extension_loaded('soap')) { + /** + * @see Zend_Service_StrikeIron_Exception + */ + require_once 'Zend/Service/StrikeIron/Exception.php'; + throw new Zend_Service_StrikeIron_Exception('SOAP extension is not enabled'); + } + + $this->_options = array_merge($this->_options, $options); + + $this->_initSoapHeaders(); + $this->_initSoapClient(); + } + + /** + * Proxy method calls to the SOAPClient instance, transforming method + * calls and responses for convenience. + * + * @param string $method Method name + * @param array $params Parameters for method + * @return mixed Result + * @throws Zend_Service_StrikeIron_Exception + */ + public function __call($method, $params) + { + // prepare method name and parameters for soap call + list($method, $params) = $this->_transformCall($method, $params); + $params = isset($params[0]) ? array($params[0]) : array(); + + // make soap call, capturing the result and output headers + try { + $result = $this->_options['client']->__soapCall($method, + $params, + $this->_options['options'], + $this->_options['headers'], + $this->_outputHeaders); + } catch (Exception $e) { + $message = get_class($e) . ': ' . $e->getMessage(); + /** + * @see Zend_Service_StrikeIron_Exception + */ + require_once 'Zend/Service/StrikeIron/Exception.php'; + throw new Zend_Service_StrikeIron_Exception($message, $e->getCode(), $e); + } + + // transform/decorate the result and return it + $result = $this->_transformResult($result, $method, $params); + return $result; + } + + /** + * Initialize the SOAPClient instance + * + * @return void + */ + protected function _initSoapClient() + { + if (! isset($this->_options['options'])) { + $this->_options['options'] = array(); + } + + if (! isset($this->_options['client'])) { + $this->_options['client'] = new SoapClient($this->_options['wsdl'], + $this->_options['options']); + } + } + + /** + * Initialize the headers to pass to SOAPClient->__soapCall() + * + * @return void + * @throws Zend_Service_StrikeIron_Exception + */ + protected function _initSoapHeaders() + { + // validate headers and check if LicenseInfo was given + $foundLicenseInfo = false; + if (isset($this->_options['headers'])) { + if (! is_array($this->_options['headers'])) { + $this->_options['headers'] = array($this->_options['headers']); + } + + foreach ($this->_options['headers'] as $header) { + if (! $header instanceof SoapHeader) { + /** + * @see Zend_Service_StrikeIron_Exception + */ + require_once 'Zend/Service/StrikeIron/Exception.php'; + throw new Zend_Service_StrikeIron_Exception('Header must be instance of SoapHeader'); + } else if ($header->name == 'LicenseInfo') { + $foundLicenseInfo = true; + break; + } + } + } else { + $this->_options['headers'] = array(); + } + + // add default LicenseInfo header if a custom one was not supplied + if (! $foundLicenseInfo) { + $this->_options['headers'][] = new SoapHeader('http://ws.strikeiron.com', + 'LicenseInfo', + array('RegisteredUser' => array('UserID' => $this->_options['username'], + 'Password' => $this->_options['password']))); + } + } + + /** + * Transform a method name or method parameters before sending them + * to the remote service. This can be useful for inflection or other + * transforms to give the method call a more PHP-like interface. + * + * @see __call() + * @param string $method Method name called from PHP + * @param mixed $param Parameters passed from PHP + * @return array [$method, $params] for SOAPClient->__soapCall() + */ + protected function _transformCall($method, $params) + { + return array(ucfirst($method), $params); + } + + /** + * Transform the result returned from a method before returning + * it to the PHP caller. This can be useful for transforming + * the SOAPClient returned result to be more PHP-like. + * + * The $method name and $params passed to the method are provided to + * allow decisions to be made about how to transform the result based + * on what was originally called. + * + * @see __call() + * @param object $result Raw result returned from SOAPClient_>__soapCall() + * @param string $method Method name that was passed to SOAPClient->__soapCall() + * @param array $params Method parameters that were passed to SOAPClient->__soapCall() + * @return mixed Transformed result + */ + protected function _transformResult($result, $method, $params) + { + $resultObjectName = "{$method}Result"; + if (isset($result->$resultObjectName)) { + $result = $result->$resultObjectName; + } + if (is_object($result)) { + $result = new Zend_Service_StrikeIron_Decorator($result, $resultObjectName); + } + return $result; + } + + /** + * Get the WSDL URL for this service. + * + * @return string + */ + public function getWsdl() + { + return $this->_options['wsdl']; + } + + /** + * Get the SOAP Client instance for this service. + */ + public function getSoapClient() + { + return $this->_options['client']; + } + + /** + * Get the StrikeIron output headers returned with the last method response. + * + * @return array + */ + public function getLastOutputHeaders() + { + return $this->_outputHeaders; + } + + /** + * Get the StrikeIron subscription information for this service. + * If any service method was recently called, the subscription info + * should have been returned in the SOAP headers so it is cached + * and returned from the cache. Otherwise, the getRemainingHits() + * method is called as a dummy to get the subscription info headers. + * + * @param boolean $now Force a call to getRemainingHits instead of cache? + * @param string $queryMethod Method that will cause SubscriptionInfo header to be sent + * @return Zend_Service_StrikeIron_Decorator Decorated subscription info + * @throws Zend_Service_StrikeIron_Exception + */ + public function getSubscriptionInfo($now = false, $queryMethod = 'GetRemainingHits') + { + if ($now || empty($this->_outputHeaders['SubscriptionInfo'])) { + $this->$queryMethod(); + } + + // capture subscription info if returned in output headers + if (isset($this->_outputHeaders['SubscriptionInfo'])) { + $info = (object)$this->_outputHeaders['SubscriptionInfo']; + $subscriptionInfo = new Zend_Service_StrikeIron_Decorator($info, 'SubscriptionInfo'); + } else { + $msg = 'No SubscriptionInfo header found in last output headers'; + /** + * @see Zend_Service_StrikeIron_Exception + */ + require_once 'Zend/Service/StrikeIron/Exception.php'; + throw new Zend_Service_StrikeIron_Exception($msg); + } + + return $subscriptionInfo; + } +} diff --git a/library/Zend/Service/StrikeIron/Decorator.php b/library/Zend/Service/StrikeIron/Decorator.php new file mode 100755 index 000000000..023fd8c7f --- /dev/null +++ b/library/Zend/Service/StrikeIron/Decorator.php @@ -0,0 +1,143 @@ +_object = $object; + $this->_name = $name; + } + + /** + * Proxy property access to the decorated object, inflecting + * the property name and decorating any child objects returned. + * If the property is not found in the decorated object, return + * NULL as a convenience feature to avoid notices. + * + * @param string $property Property name to retrieve + * @return mixed Value of property or NULL + */ + public function __get($property) + { + $result = null; + + if (! isset($this->_object->$property)) { + $property = $this->_inflect($property); + } + + if (isset($this->_object->$property)) { + $result = $this->_object->$property; + $result = $this->_decorate($result); + } + return $result; + } + + /** + * Proxy method calls to the decorated object. This will only + * be used when the SOAPClient returns a custom PHP object via + * its classmap option so no inflection is done. + * + * @param string $method Name of method called + * @param array $args Arguments for method + */ + public function __call($method, $args) + { + return call_user_func_array(array($this->_object, $method), $args); + } + + /** + * Inflect a property name from PHP-style to the result object's + * style. The default implementation here only inflects the case + * of the first letter, e.g. from "fooBar" to "FooBar". + * + * @param string $property Property name to inflect + * @return string Inflected property name + */ + protected function _inflect($property) + { + return ucfirst($property); + } + + /** + * Decorate a value returned by the result object. The default + * implementation here only decorates child objects. + * + * @param mixed $result Value to decorate + * @return mixed Decorated result + */ + protected function _decorate($result) + { + if (is_object($result)) { + $result = new self($result); + } + return $result; + } + + /** + * Return the object being decorated + * + * @return object + */ + public function getDecoratedObject() + { + return $this->_object; + } + + /** + * Return the name of the object being decorated + * + * @return null|string + */ + public function getDecoratedObjectName() + { + return $this->_name; + } +} diff --git a/library/Zend/Service/StrikeIron/Exception.php b/library/Zend/Service/StrikeIron/Exception.php new file mode 100755 index 000000000..550630974 --- /dev/null +++ b/library/Zend/Service/StrikeIron/Exception.php @@ -0,0 +1,36 @@ + null, + 'password' => null, + 'client' => null, + 'options' => null, + 'headers' => null, + 'wsdl' => 'http://ws.strikeiron.com/zf1.StrikeIron/taxdatabasic4?WSDL'); +} diff --git a/library/Zend/Service/StrikeIron/USAddressVerification.php b/library/Zend/Service/StrikeIron/USAddressVerification.php new file mode 100755 index 000000000..86cb22f56 --- /dev/null +++ b/library/Zend/Service/StrikeIron/USAddressVerification.php @@ -0,0 +1,45 @@ + null, + 'password' => null, + 'client' => null, + 'options' => null, + 'headers' => null, + 'wsdl' => 'http://ws.strikeiron.com/zf1.StrikeIron/USAddressVerification4_0?WSDL'); +} diff --git a/library/Zend/Service/StrikeIron/ZipCodeInfo.php b/library/Zend/Service/StrikeIron/ZipCodeInfo.php new file mode 100755 index 000000000..1a60ee298 --- /dev/null +++ b/library/Zend/Service/StrikeIron/ZipCodeInfo.php @@ -0,0 +1,45 @@ + null, + 'password' => null, + 'client' => null, + 'options' => null, + 'headers' => null, + 'wsdl' => 'http://sdpws.strikeiron.com/zf1.StrikeIron/sdpZIPCodeInfo?WSDL'); +} diff --git a/library/Zend/Service/Twitter.php b/library/Zend/Service/Twitter.php new file mode 100755 index 000000000..836d3b8ca --- /dev/null +++ b/library/Zend/Service/Twitter.php @@ -0,0 +1,1307 @@ +toArray(); + } + if (!is_array($options)) { + $options = array(); + } + + $this->options = $options; + + if (isset($options['username'])) { + $this->setUsername($options['username']); + } + + $accessToken = false; + if (isset($options['accessToken'])) { + $accessToken = $options['accessToken']; + } elseif (isset($options['access_token'])) { + $accessToken = $options['access_token']; + } + + $oauthOptions = array(); + if (isset($options['oauthOptions'])) { + $oauthOptions = $options['oauthOptions']; + } elseif (isset($options['oauth_options'])) { + $oauthOptions = $options['oauth_options']; + } + $oauthOptions['siteUrl'] = self::OAUTH_BASE_URI; + + $httpClientOptions = array(); + if (isset($options['httpClientOptions'])) { + $httpClientOptions = $options['httpClientOptions']; + } elseif (isset($options['http_client_options'])) { + $httpClientOptions = $options['http_client_options']; + } + + // If we have an OAuth access token, use the HTTP client it provides + if ($accessToken && is_array($accessToken) + && (isset($accessToken['token']) && isset($accessToken['secret'])) + ) { + $token = new Zend_Oauth_Token_Access(); + $token->setToken($accessToken['token']); + $token->setTokenSecret($accessToken['secret']); + $accessToken = $token; + } + if ($accessToken && $accessToken instanceof Zend_Oauth_Token_Access) { + $oauthOptions['token'] = $accessToken; + $this->setHttpClient($accessToken->getHttpClient($oauthOptions, self::OAUTH_BASE_URI, $httpClientOptions)); + return; + } + + // See if we were passed an http client + if (isset($options['httpClient']) && null === $httpClient) { + $httpClient = $options['httpClient']; + } elseif (isset($options['http_client']) && null === $httpClient) { + $httpClient = $options['http_client']; + } + if ($httpClient instanceof Zend_Http_Client) { + $this->httpClient = $httpClient; + } else { + $this->setHttpClient(new Zend_Http_Client(null, $httpClientOptions)); + } + + // Set the OAuth consumer + if ($consumer === null) { + $consumer = new Zend_Oauth_Consumer($oauthOptions); + } + $this->oauthConsumer = $consumer; + } + + /** + * Proxy service methods + * + * @param string $type + * @return Twitter + * @throws Exception\DomainException If method not in method types list + */ + public function __get($type) + { + $type = strtolower($type); + $type = str_replace('_', '', $type); + if (!in_array($type, $this->methodTypes)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Invalid method type "' . $type . '"' + ); + } + $this->methodType = $type; + return $this; + } + + /** + * Method overloading + * + * @param string $method + * @param array $params + * @return mixed + * @throws Exception\BadMethodCallException if unable to find method + */ + public function __call($method, $params) + { + if (method_exists($this->oauthConsumer, $method)) { + $return = call_user_func_array(array($this->oauthConsumer, $method), $params); + if ($return instanceof Zend_Oauth_Token_Access) { + $this->setHttpClient($return->getHttpClient($this->options)); + } + return $return; + } + if (empty($this->methodType)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Invalid method "' . $method . '"' + ); + } + + $test = str_replace('_', '', strtolower($method)); + $test = $this->methodType . $test; + if (!method_exists($this, $test)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Invalid method "' . $test . '"' + ); + } + + return call_user_func_array(array($this, $test), $params); + } + + /** + * Set HTTP client + * + * @param Zend_Http_Client $client + * @return self + */ + public function setHttpClient(Zend_Http_Client $client) + { + $this->httpClient = $client; + $this->httpClient->setHeaders(array('Accept-Charset' => 'ISO-8859-1,utf-8')); + return $this; + } + + /** + * Get the HTTP client + * + * Lazy loads one if none present + * + * @return Zend_Http_Client + */ + public function getHttpClient() + { + if (null === $this->httpClient) { + $this->setHttpClient(new Zend_Http_Client()); + } + return $this->httpClient; + } + + /** + * Retrieve username + * + * @return string + */ + public function getUsername() + { + return $this->username; + } + + /** + * Set username + * + * @param string $value + * @return self + */ + public function setUsername($value) + { + $this->username = $value; + return $this; + } + + /** + * Checks for an authorised state + * + * @return bool + */ + public function isAuthorised() + { + if ($this->getHttpClient() instanceof Zend_Oauth_Client) { + return true; + } + return false; + } + + /** + * Verify Account Credentials + * + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function accountVerifyCredentials() + { + $this->init(); + $response = $this->get('account/verify_credentials'); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Returns the number of api requests you have left per hour. + * + * @todo Have a separate payload object to represent rate limits + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function applicationRateLimitStatus() + { + $this->init(); + $response = $this->get('application/rate_limit_status'); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Blocks the user specified in the ID parameter as the authenticating user. + * Destroys a friendship to the blocked user if it exists. + * + * @param integer|string $id The ID or screen name of a user to block. + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function blocksCreate($id) + { + $this->init(); + $path = 'blocks/create'; + $params = $this->createUserParameter($id, array()); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Un-blocks the user specified in the ID parameter for the authenticating user + * + * @param integer|string $id The ID or screen_name of the user to un-block. + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function blocksDestroy($id) + { + $this->init(); + $path = 'blocks/destroy'; + $params = $this->createUserParameter($id, array()); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Returns an array of user ids that the authenticating user is blocking + * + * @param integer $cursor Optional. Specifies the cursor position at which to begin listing ids; defaults to first "page" of results. + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function blocksIds($cursor = -1) + { + $this->init(); + $path = 'blocks/ids'; + $response = $this->get($path, array('cursor' => $cursor)); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Returns an array of user objects that the authenticating user is blocking + * + * @param integer $cursor Optional. Specifies the cursor position at which to begin listing ids; defaults to first "page" of results. + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function blocksList($cursor = -1) + { + $this->init(); + $path = 'blocks/list'; + $response = $this->get($path, array('cursor' => $cursor)); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Destroy a direct message + * + * @param int $id ID of message to destroy + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function directMessagesDestroy($id) + { + $this->init(); + $path = 'direct_messages/destroy'; + $params = array('id' => $this->validInteger($id)); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Retrieve direct messages for the current user + * + * $options may include one or more of the following keys + * - count: return page X of results + * - since_id: return statuses only greater than the one specified + * - max_id: return statuses with an ID less than (older than) or equal to that specified + * - include_entities: setting to false will disable embedded entities + * - skip_status:setting to true, "t", or 1 will omit the status in returned users + * + * @param array $options + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function directMessagesMessages(array $options = array()) + { + $this->init(); + $path = 'direct_messages'; + $params = array(); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'count': + $params['count'] = (int) $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + case 'skip_status': + $params['skip_status'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Send a direct message to a user + * + * @param int|string $user User to whom to send message + * @param string $text Message to send to user + * @throws Exception\InvalidArgumentException if message is empty + * @throws Exception\OutOfRangeException if message is too long + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function directMessagesNew($user, $text) + { + $this->init(); + $path = 'direct_messages/new'; + + $len = iconv_strlen($text, 'UTF-8'); + if (0 == $len) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Direct message must contain at least one character' + ); + } elseif (140 < $len) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Direct message must contain no more than 140 characters' + ); + } + + $params = $this->createUserParameter($user, array()); + $params['text'] = $text; + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Retrieve list of direct messages sent by current user + * + * $options may include one or more of the following keys + * - count: return page X of results + * - page: return starting at page + * - since_id: return statuses only greater than the one specified + * - max_id: return statuses with an ID less than (older than) or equal to that specified + * - include_entities: setting to false will disable embedded entities + * + * @param array $options + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function directMessagesSent(array $options = array()) + { + $this->init(); + $path = 'direct_messages/sent'; + $params = array(); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'count': + $params['count'] = (int) $value; + break; + case 'page': + $params['page'] = (int) $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Mark a status as a favorite + * + * @param int $id Status ID you want to mark as a favorite + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function favoritesCreate($id) + { + $this->init(); + $path = 'favorites/create'; + $params = array('id' => $this->validInteger($id)); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Remove a favorite + * + * @param int $id Status ID you want to de-list as a favorite + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function favoritesDestroy($id) + { + $this->init(); + $path = 'favorites/destroy'; + $params = array('id' => $this->validInteger($id)); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Fetch favorites + * + * $options may contain one or more of the following: + * - user_id: Id of a user for whom to fetch favorites + * - screen_name: Screen name of a user for whom to fetch favorites + * - count: number of tweets to attempt to retrieve, up to 200 + * - since_id: return results only after the specified tweet id + * - max_id: return results with an ID less than (older than) or equal to the specified ID + * - include_entities: when set to false, entities member will be omitted + * + * @param array $params + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function favoritesList(array $options = array()) + { + $this->init(); + $path = 'favorites/list'; + $params = array(); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'user_id': + $params['user_id'] = $this->validInteger($value); + break; + case 'screen_name': + $params['screen_name'] = $value; + break; + case 'count': + $params['count'] = (int) $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Create friendship + * + * @param int|string $id User ID or name of new friend + * @param array $params Additional parameters to pass + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function friendshipsCreate($id, array $params = array()) + { + $this->init(); + $path = 'friendships/create'; + $params = $this->createUserParameter($id, $params); + $allowed = array( + 'user_id' => null, + 'screen_name' => null, + 'follow' => null, + ); + $params = array_intersect_key($params, $allowed); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Destroy friendship + * + * @param int|string $id User ID or name of friend to remove + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function friendshipsDestroy($id) + { + $this->init(); + $path = 'friendships/destroy'; + $params = $this->createUserParameter($id, array()); + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Search tweets + * + * $options may include any of the following: + * - geocode: a string of the form "latitude, longitude, radius" + * - lang: restrict tweets to the two-letter language code + * - locale: query is in the given two-letter language code + * - result_type: what type of results to receive: mixed, recent, or popular + * - count: number of tweets to return per page; up to 100 + * - until: return tweets generated before the given date + * - since_id: return resutls with an ID greater than (more recent than) the given ID + * - max_id: return results with an ID less than (older than) the given ID + * - include_entities: whether or not to include embedded entities + * + * @param string $query + * @param array $options + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function searchTweets($query, array $options = array()) + { + $this->init(); + $path = 'search/tweets'; + + $len = iconv_strlen($query, 'UTF-8'); + if (0 == $len) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Query must contain at least one character' + ); + } + + $params = array('q' => $query); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'geocode': + if (!substr_count($value, ',') !== 2) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + '"geocode" must be of the format "latitude,longitude,radius"' + ); + } + list($latitude, $longitude, $radius) = explode(',', $value); + $radius = trim($radius); + if (!preg_match('/^\d+(mi|km)$/', $radius)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Radius segment of "geocode" must be of the format "[unit](mi|km)"' + ); + } + $latitude = (float) $latitude; + $longitude = (float) $longitude; + $params['geocode'] = $latitude . ',' . $longitude . ',' . $radius; + break; + case 'lang': + if (strlen($value) > 2) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Query language must be a 2 character string' + ); + } + $params['lang'] = strtolower($value); + break; + case 'locale': + if (strlen($value) > 2) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Query locale must be a 2 character string' + ); + } + $params['locale'] = strtolower($value); + break; + case 'result_type': + $value = strtolower($value); + if (!in_array($value, array('mixed', 'recent', 'popular'))) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'result_type must be one of "mixed", "recent", or "popular"' + ); + } + $params['result_type'] = $value; + break; + case 'count': + $value = (int) $value; + if (1 > $value || 100 < $value) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'count must be between 1 and 100' + ); + } + $params['count'] = $value; + break; + case 'until': + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + '"until" must be a date in the format YYYY-MM-DD' + ); + } + $params['until'] = $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Destroy a status message + * + * @param int $id ID of status to destroy + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesDestroy($id) + { + $this->init(); + $path = 'statuses/destroy/' . $this->validInteger($id); + $response = $this->post($path); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Friend Timeline Status + * + * $options may include one or more of the following keys + * - count: number of tweets to attempt to retrieve, up to 200 + * - since_id: return results only after the specified tweet id + * - max_id: return results with an ID less than (older than) or equal to the specified ID + * - trim_user: when set to true, "t", or 1, user object in tweets will include only author's ID. + * - contributor_details: when set to true, includes screen_name of each contributor + * - include_entities: when set to false, entities member will be omitted + * - exclude_replies: when set to true, will strip replies appearing in the timeline + * + * @param array $params + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesHomeTimeline(array $options = array()) + { + $this->init(); + $path = 'statuses/home_timeline'; + $params = array(); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'count': + $params['count'] = (int) $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'trim_user': + if (in_array($value, array(true, 'true', 't', 1, '1'))) { + $value = true; + } else { + $value = false; + } + $params['trim_user'] = $value; + break; + case 'contributor_details:': + $params['contributor_details:'] = (bool) $value; + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + case 'exclude_replies': + $params['exclude_replies'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Get status replies + * + * $options may include one or more of the following keys + * - count: number of tweets to attempt to retrieve, up to 200 + * - since_id: return results only after the specified tweet id + * - max_id: return results with an ID less than (older than) or equal to the specified ID + * - trim_user: when set to true, "t", or 1, user object in tweets will include only author's ID. + * - contributor_details: when set to true, includes screen_name of each contributor + * - include_entities: when set to false, entities member will be omitted + * + * @param array $options + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesMentionsTimeline(array $options = array()) + { + $this->init(); + $path = 'statuses/mentions_timeline'; + $params = array(); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'count': + $params['count'] = (int) $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'trim_user': + if (in_array($value, array(true, 'true', 't', 1, '1'))) { + $value = true; + } else { + $value = false; + } + $params['trim_user'] = $value; + break; + case 'contributor_details:': + $params['contributor_details:'] = (bool) $value; + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Public Timeline status + * + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesSample() + { + $this->init(); + $path = 'statuses/sample'; + $response = $this->get($path); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Show a single status + * + * @param int $id Id of status to show + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesShow($id) + { + $this->init(); + $path = 'statuses/show/' . $this->validInteger($id); + $response = $this->get($path); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Update user's current status + * + * @todo Support additional parameters supported by statuses/update endpoint + * @param string $status + * @param null|int $inReplyToStatusId + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\OutOfRangeException if message is too long + * @throws Exception\InvalidArgumentException if message is empty + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesUpdate($status, $inReplyToStatusId = null) + { + $this->init(); + $path = 'statuses/update'; + $len = iconv_strlen(htmlspecialchars($status, ENT_QUOTES, 'UTF-8'), 'UTF-8'); + if ($len > self::STATUS_MAX_CHARACTERS) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Status must be no more than ' + . self::STATUS_MAX_CHARACTERS + . ' characters in length' + ); + } elseif (0 == $len) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Status must contain at least one character' + ); + } + + $params = array('status' => $status); + $inReplyToStatusId = $this->validInteger($inReplyToStatusId); + if ($inReplyToStatusId) { + $params['in_reply_to_status_id'] = $inReplyToStatusId; + } + $response = $this->post($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * User Timeline status + * + * $options may include one or more of the following keys + * - user_id: Id of a user for whom to fetch favorites + * - screen_name: Screen name of a user for whom to fetch favorites + * - count: number of tweets to attempt to retrieve, up to 200 + * - since_id: return results only after the specified tweet id + * - max_id: return results with an ID less than (older than) or equal to the specified ID + * - trim_user: when set to true, "t", or 1, user object in tweets will include only author's ID. + * - exclude_replies: when set to true, will strip replies appearing in the timeline + * - contributor_details: when set to true, includes screen_name of each contributor + * - include_rts: when set to false, will strip native retweets + * + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function statusesUserTimeline(array $options = array()) + { + $this->init(); + $path = 'statuses/user_timeline'; + $params = array(); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'user_id': + $params['user_id'] = $this->validInteger($value); + break; + case 'screen_name': + $params['screen_name'] = $this->validateScreenName($value); + break; + case 'count': + $params['count'] = (int) $value; + break; + case 'since_id': + $params['since_id'] = $this->validInteger($value); + break; + case 'max_id': + $params['max_id'] = $this->validInteger($value); + break; + case 'trim_user': + if (in_array($value, array(true, 'true', 't', 1, '1'))) { + $value = true; + } else { + $value = false; + } + $params['trim_user'] = $value; + break; + case 'contributor_details:': + $params['contributor_details:'] = (bool) $value; + break; + case 'exclude_replies': + $params['exclude_replies'] = (bool) $value; + break; + case 'include_rts': + $params['include_rts'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Search users + * + * $options may include any of the following: + * - page: the page of results to retrieve + * - count: the number of users to retrieve per page; max is 20 + * - include_entities: if set to boolean true, include embedded entities + * + * @param string $query + * @param array $options + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function usersSearch($query, array $options = array()) + { + $this->init(); + $path = 'users/search'; + + $len = iconv_strlen($query, 'UTF-8'); + if (0 == $len) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Query must contain at least one character' + ); + } + + $params = array('q' => $query); + foreach ($options as $key => $value) { + switch (strtolower($key)) { + case 'count': + $value = (int) $value; + if (1 > $value || 20 < $value) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'count must be between 1 and 20' + ); + } + $params['count'] = $value; + break; + case 'page': + $params['page'] = (int) $value; + break; + case 'include_entities': + $params['include_entities'] = (bool) $value; + break; + default: + break; + } + } + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + + /** + * Show extended information on a user + * + * @param int|string $id User ID or name + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @throws Exception\DomainException if unable to decode JSON payload + * @return Zend_Service_Twitter_Response + */ + public function usersShow($id) + { + $this->init(); + $path = 'users/show'; + $params = $this->createUserParameter($id, array()); + $response = $this->get($path, $params); + return new Zend_Service_Twitter_Response($response); + } + + /** + * Initialize HTTP authentication + * + * @return void + * @throws Exception\DomainException if unauthorised + */ + protected function init() + { + if (!$this->isAuthorised() && $this->getUsername() !== null) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Twitter session is unauthorised. You need to initialize ' + . __CLASS__ . ' with an OAuth Access Token or use ' + . 'its OAuth functionality to obtain an Access Token before ' + . 'attempting any API actions that require authorisation' + ); + } + $client = $this->getHttpClient(); + $client->resetParameters(); + if (null === $this->cookieJar) { + $cookieJar = $client->getCookieJar(); + if (null === $cookieJar) { + $cookieJar = new Zend_Http_CookieJar(); + } + $this->cookieJar = $cookieJar; + $this->cookieJar->reset(); + } else { + $client->setCookieJar($this->cookieJar); + } + } + + /** + * Protected function to validate that the integer is valid or return a 0 + * + * @param $int + * @throws Zend_Http_Client_Exception if HTTP request fails or times out + * @return integer + */ + protected function validInteger($int) + { + if (preg_match("/(\d+)/", $int)) { + return $int; + } + return 0; + } + + /** + * Validate a screen name using Twitter rules + * + * @param string $name + * @return string + * @throws Exception\InvalidArgumentException + */ + protected function validateScreenName($name) + { + if (!preg_match('/^[a-zA-Z0-9_]{0,20}$/', $name)) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Screen name, "' . $name + . '" should only contain alphanumeric characters and' + . ' underscores, and not exceed 15 characters.'); + } + return $name; + } + + /** + * Call a remote REST web service URI + * + * @param string $path The path to append to the URI + * @param Zend_Http_Client $client + * @throws Zend_Http_Client_Exception + * @return void + */ + protected function prepare($path, Zend_Http_Client $client) + { + $client->setUri(self::API_BASE_URI . $path . '.json'); + + /** + * Do this each time to ensure oauth calls do not inject new params + */ + $client->resetParameters(); + } + + /** + * Performs an HTTP GET request to the $path. + * + * @param string $path + * @param array $query Array of GET parameters + * @throws Zend_Http_Client_Exception + * @return Zend_Http_Response + */ + protected function get($path, array $query = array()) + { + $client = $this->getHttpClient(); + $this->prepare($path, $client); + $client->setParameterGet($query); + $response = $client->request(Zend_Http_Client::GET); + return $response; + } + + /** + * Performs an HTTP POST request to $path. + * + * @param string $path + * @param mixed $data Raw data to send + * @throws Zend_Http_Client_Exception + * @return Zend_Http_Response + */ + protected function post($path, $data = null) + { + $client = $this->getHttpClient(); + $this->prepare($path, $client); + $response = $this->performPost(Zend_Http_Client::POST, $data, $client); + return $response; + } + + /** + * Perform a POST or PUT + * + * Performs a POST or PUT request. Any data provided is set in the HTTP + * client. String data is pushed in as raw POST data; array or object data + * is pushed in as POST parameters. + * + * @param mixed $method + * @param mixed $data + * @return Zend_Http_Response + */ + protected function performPost($method, $data, Zend_Http_Client $client) + { + if (is_string($data)) { + $client->setRawData($data); + } elseif (is_array($data) || is_object($data)) { + $client->setParameterPost((array) $data); + } + return $client->request($method); + } + + /** + * Create a parameter representing the user + * + * Determines if $id is an integer, and, if so, sets the "user_id" parameter. + * If not, assumes the $id is the "screen_name". + * + * @param int|string $id + * @param array $params + * @return array + */ + protected function createUserParameter($id, array $params) + { + if ($this->validInteger($id)) { + $params['user_id'] = $id; + return $params; + } + + $params['screen_name'] = $this->validateScreenName($id); + return $params; + } +} diff --git a/library/Zend/Service/Twitter/Exception.php b/library/Zend/Service/Twitter/Exception.php new file mode 100755 index 000000000..742f14418 --- /dev/null +++ b/library/Zend/Service/Twitter/Exception.php @@ -0,0 +1,37 @@ +httpResponse = $httpResponse; + $this->rawBody = $httpResponse->getBody(); + try { + $jsonBody = Zend_Json::decode($this->rawBody, Zend_Json::TYPE_OBJECT); + $this->jsonBody = $jsonBody; + } catch (Zend_Json_Exception $e) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception(sprintf( + 'Unable to decode response from twitter: %s', + $e->getMessage() + ), 0, $e); + } + } + + /** + * Property overloading to JSON elements + * + * If a named property exists within the JSON response returned, + * proxies to it. Otherwise, returns null. + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + if (null === $this->jsonBody) { + return null; + } + if (!isset($this->jsonBody->{$name})) { + return null; + } + return $this->jsonBody->{$name}; + } + + /** + * Was the request successful? + * + * @return bool + */ + public function isSuccess() + { + return $this->httpResponse->isSuccessful(); + } + + /** + * Did an error occur in the request? + * + * @return bool + */ + public function isError() + { + return !$this->httpResponse->isSuccessful(); + } + + /** + * Retrieve the errors. + * + * Twitter _should_ return a standard error object, which contains an + * "errors" property pointing to an array of errors. This method will + * return that array if present, and raise an exception if not detected. + * + * If the response was successful, an empty array is returned. + * + * @return array + * @throws Exception\DomainException if unable to detect structure of error response + */ + public function getErrors() + { + if (!$this->isError()) { + return array(); + } + if (null === $this->jsonBody + || !isset($this->jsonBody->errors) + ) { + require_once 'Zend/Service/Twitter/Exception.php'; + throw new Zend_Service_Twitter_Exception( + 'Either no JSON response received, or JSON error response is malformed; cannot return errors' + ); + } + return $this->jsonBody->errors; + } + + /** + * Retrieve the raw response body + * + * @return string + */ + public function getRawResponse() + { + return $this->rawBody; + } + + /** + * Retun the decoded response body + * + * @return array|stdClass + */ + public function toValue() + { + return $this->jsonBody; + } +} diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Certificate.php b/library/Zend/Service/WindowsAzure/CommandLine/Certificate.php new file mode 100755 index 000000000..af79c63a7 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Certificate.php @@ -0,0 +1,180 @@ +" -cert:"mycert.pem" -sn:"phptest" + */ + public function listCertificatesCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->listCertificates($serviceName); + + if (count($result) == 0) { + echo 'No data to display.'; + } + foreach ($result as $object) { + $this->_displayObjectInformation($object, array('Thumbprint', 'CertificateUrl', 'ThumbprintAlgorithm')); + } + } + + /** + * Add a certificate for a specified hosted service in a specified subscription. + * + * @command-name Add + * @command-description Add a certificate for a specified hosted service in a specified subscription. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --ServiceName|-sn Required. The name of the hosted service. + * @command-parameter-for $certificateLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateLocation Required. Path to the .pfx certificate to be added. + * @command-parameter-for $certificatePassword Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --CertificatePassword Required. The password for the certificate that will be added. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Add certificates for service name "phptest": + * @command-example Add -sid:"" -cert:"mycert.pem" -sn:"phptest" --CertificateLocation:"cert.pfx" --CertificatePassword:"certpassword" + */ + public function addCertificateCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $certificateLocation, $certificatePassword, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->addCertificate($serviceName, $certificateLocation, $certificatePassword, 'pfx'); + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Gets a certificate from a specified hosted service in a specified subscription. + * + * @command-name Get + * @command-description Gets a certificate from a specified hosted service in a specified subscription. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --ServiceName|-sn Required. The name of the hosted service. + * @command-parameter-for $thumbprint Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateThumbprint Required. The certificate thumbprint for which to retrieve the certificate. + * @command-parameter-for $algorithm Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateAlgorithm Required. The certificate's algorithm. + * @command-example Get certificate for service name "phptest": + * @command-example Get -sid:"" -cert:"mycert.pem" -sn:"phptest" --CertificateThumbprint:"" --CertificateAlgorithm:"sha1" + */ + public function getCertificateCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $thumbprint, $algorithm = "sha1") + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getCertificate($serviceName, $algorithm, $thumbprint); + + $this->_displayObjectInformation($result, array('Thumbprint', 'CertificateUrl', 'ThumbprintAlgorithm')); + } + + /** + * Gets a certificate property from a specified hosted service in a specified subscription. + * + * @command-name GetProperty + * @command-description Gets a certificate property from a specified hosted service in a specified subscription. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --ServiceName|-sn Required. The name of the hosted service. + * @command-parameter-for $thumbprint Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateThumbprint Required. The certificate thumbprint for which to retrieve the certificate. + * @command-parameter-for $algorithm Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateAlgorithm Required. The certificate's algorithm. + * @command-parameter-for $property Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Property|-prop Required. The property to retrieve for the certificate. + * @command-example Get certificate for service name "phptest": + * @command-example Get -sid:"" -cert:"mycert.pem" -sn:"phptest" --CertificateThumbprint:"" --CertificateAlgorithm:"sha1" + */ + public function getCertificatePropertyCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $thumbprint, $algorithm = "sha1", $property) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getCertificate($serviceName, $algorithm, $thumbprint); + + printf("%s\r\n", $result->$property); + } + + /** + * Deletes a certificate from a specified hosted service in a specified subscription. + * + * @command-name Delete + * @command-description Deletes a certificate from a specified hosted service in a specified subscription. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --ServiceName|-sn Required. The name of the hosted service. + * @command-parameter-for $thumbprint Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateThumbprint Required. The certificate thumbprint for which to retrieve the certificate. + * @command-parameter-for $algorithm Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --CertificateAlgorithm Required. The certificate's algorithm. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Get certificate for service name "phptest": + * @command-example Get -sid:"" -cert:"mycert.pem" -sn:"phptest" --CertificateThumbprint:"" --CertificateAlgorithm:"sha1" + */ + public function deleteCertificateCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $thumbprint, $algorithm = "sha1", $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->deleteCertificate($serviceName, $algorithm, $thumbprint); + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } +} + +Zend_Service_Console_Command::bootstrap($_SERVER['argv']); diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Deployment.php b/library/Zend/Service/WindowsAzure/CommandLine/Deployment.php new file mode 100755 index 000000000..1ff6de6dd --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Deployment.php @@ -0,0 +1,585 @@ +" -cert:"mycert.pem" --Name:"hostedservicename" --DeploymentName:"deploymentname" + * @command-example --Label:"deploymentlabel" --Production + * @command-example --PackageUrl:"http://acct.blob.core.windows.net/pkgs/service.cspkg" + * @command-example --ServiceConfigLocation:".\ServiceConfiguration.cscfg" --StartImmediately --WaitFor + */ + public function createFromStorageCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentName, $label, $staging = false, $production = false, $packageUrl, $serviceConfigurationLocation, $startImmediately = true, $warningsAsErrors = false, $waitForOperation = false) + { + $deploymentSlot = 'staging'; + if (!$staging && !$production) { + require_once 'Zend/Service/Console/Exception.php'; + throw new Zend_Service_Console_Exception('Either --Staging or --Production should be specified.'); + } + if ($production) { + $deploymentSlot = 'production'; + } + + $client->createDeployment($serviceName, $deploymentSlot, $deploymentName, $label, $packageUrl, $serviceConfigurationLocation, $startImmediately, $warningsAsErrors); + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Creates a deployment from a local package file and service configuration. + * + * @command-name CreateFromLocal + * @command-description Creates a deployment from a local package file and service configuration. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --DeploymentName Required. The name for the deployment. + * @command-parameter-for $label Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Label Required. The label for the deployment. + * @command-parameter-for $staging Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Staging Host the service in the staging slot. + * @command-parameter-for $production Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Production Host the service in the staging slot. + * @command-parameter-for $packageLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --PackageLocation Required. The location of the .cspkg file. + * @command-parameter-for $serviceConfigurationLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ServiceConfigLocation Required. The location of the .cspkg file. + * @command-parameter-for $storageAccount Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --StorageAccount Required. Storage account to use when creating the deployment. + * @command-parameter-for $startImmediately Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --StartImmediately Optional. Start the deployment after creation. + * @command-parameter-for $warningsAsErrors Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WarningsAsErrors Optional. Treat warnings as errors. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Create a deployment from a local .cspkg: + * @command-example CreateFromLocal -sid:"" -cert:"mycert.pem" --Name:"hostedservicename" --DeploymentName:"deploymentname" + * @command-example --Label:"deploymentlabel" --Production --PackageLocation:".\service.cspkg" + * @command-example --ServiceConfigLocation:".\ServiceConfiguration.cscfg" --StorageAccount:"mystorage" + * @command-example --StartImmediately --WaitFor + */ + public function createFromLocalCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentName, $label, $staging = false, $production = false, $packageLocation, $serviceConfigurationLocation, $storageAccount, $startImmediately = true, $warningsAsErrors = false, $waitForOperation = false) + { + $deploymentSlot = 'staging'; + if (!$staging && !$production) { + require_once 'Zend/Service/Console/Exception.php'; + throw new Zend_Service_Console_Exception('Either --Staging or --Production should be specified.'); + } + if ($production) { + $deploymentSlot = 'production'; + } + + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $blobClient = $client->createBlobClientForService($storageAccount); + $blobClient->createContainerIfNotExists('phpazuredeployments'); + $blobClient->putBlob('phpazuredeployments', basename($packageLocation), $packageLocation); + $package = $blobClient->getBlobInstance('phpazuredeployments', basename($packageLocation)); + + $client->createDeployment($serviceName, $deploymentSlot, $deploymentName, $label, $package->Url, $serviceConfigurationLocation, $startImmediately, $warningsAsErrors); + + $client->waitForOperation(); + $blobClient->deleteBlob('phpazuredeployments', basename($packageLocation)); + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Get deployment properties. + * + * @command-name GetProperties + * @command-description Get deployment properties. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-example Get deployment properties for service "phptest" (production slot): + * @command-example GetProperties -sid:"" -cert:"mycert.pem" --Name:"servicename" --BySlot:"production" + */ + public function getPropertiesCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + $result = null; + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $result = $client->getDeploymentBySlot($serviceName, $deploymentSlot); + } else { + $result = $client->getDeploymentByDeploymentId($serviceName, $deploymentName); + } + + $this->_displayObjectInformation($result, array('Name', 'DeploymentSlot', 'Label', 'Url', 'Status')); + } + + /** + * Get hosted service account property. + * + * @command-name GetProperty + * @command-description Get deployment property. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $property Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Property|-prop Required. The property to retrieve for the hosted service account. + * @command-example Get deployment property "Name" for service "phptest" (production slot): + * @command-example GetProperties -sid:"" -cert:"mycert.pem" + * @command-example --Name:"servicename" --BySlot:"production" --Property:"Name" + */ + public function getPropertyCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $property) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + $result = null; + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $result = $client->getDeploymentBySlot($serviceName, $deploymentSlot); + } else { + $result = $client->getDeploymentByDeploymentId($serviceName, $deploymentName); + } + + printf("%s\r\n", $result->$property); + } + + /** + * Swap deployment slots (perform VIP swap). + * + * @command-name Swap + * @command-description Swap deployment slots (perform VIP swap). + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Swap deployment slots: + * @command-example Swap -sid:"" -cert:"mycert.pem" --Name:"servicename" + */ + public function swapCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + $productionDeploymentName = null; + try { $productionDeploymentName = $client->getDeploymentBySlot($serviceName, 'production')->Name; } catch (Exception $ex) {} + + $stagingDeploymentName = null; + try { $stagingDeploymentName = $client->getDeploymentBySlot($serviceName, 'staging')->Name; } catch (Exception $ex) {} + + if (is_null($productionDeploymentName)) { + $productionDeploymentName = $stagingDeploymentName; + } + if (is_null($stagingDeploymentName)) { + require_once 'Zend/Service/Console/Exception.php'; + throw new Zend_Service_Console_Exception('Swapping deployment slots is only possible when both slots have an active deployment or when production slot is empty.'); + } + + $client->swapDeployment($serviceName, $productionDeploymentName, $stagingDeploymentName); + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Deletes a deployment. + * + * @command-name Delete + * @command-description Deletes a deployment. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Delete a deployment: + * @command-example Delete -sid:"" -cert:"mycert.pem" --Name:"hostedservicename" --DeploymentName:"deploymentname" + */ + public function deleteCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->deleteDeploymentBySlot($serviceName, $deploymentSlot); + } else { + $client->deleteDeploymentByDeploymentId($serviceName, $deploymentName); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Updates a deployment's configuration. + * + * @command-name UpdateConfig + * @command-description Updates a deployment's configuration. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $serviceConfigurationLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ServiceConfigLocation Required. The location of the .cspkg file. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Update configuration: + * @command-example UpdateConfig -sid:"" -cert:"mycert.pem" + * @command-example --Name:"hostedservicename" --ByName:"deploymentname" + * @command-example --ServiceConfigLocation:".\ServiceConfiguration.cscfg" + */ + public function updateConfigurationCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $serviceConfigurationLocation, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->configureDeploymentBySlot($serviceName, $deploymentSlot, $serviceConfigurationLocation); + } else { + $client->configureDeploymentByDeploymentId($serviceName, $deploymentName, $serviceConfigurationLocation); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Updates a deployment's status. + * + * @command-name UpdateStatus + * @command-description Updates a deployment's status. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $newStatus Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Status Required. New status (Suspended|Running) + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Suspend a deployment: + * @command-example UpdateStatus -sid:"" -cert:"mycert.pem" + * @command-example --Name:"hostedservicename" --ByName:"deploymentname" + * @command-example --Status:"Suspended" + */ + public function updateStatusCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $newStatus, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->updateDeploymentStatusBySlot($serviceName, $deploymentSlot, $newStatus); + } else { + $client->updateDeploymentStatusByDeploymentId($serviceName, $deploymentName, $newStatus); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Updates the number of instances. + * + * @command-name EditInstanceNumber + * @command-description Updates the number of instances. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $roleName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RoleName|-r Required. Role name to update the number of instances for. + * @command-parameter-for $newInstanceNumber Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --NewInstanceNumber|-i Required. New number of instances. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Suspend a deployment: + * @command-example EditInstanceNumber -sid:"" -cert:"mycert.pem" + * @command-example --Name:"hostedservicename" --ByName:"deploymentname" + * @command-example --NewInstanceNumber:"4" + */ + public function editInstanceNumberCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $roleName, $newInstanceNumber = 1, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->setInstanceCountBySlot($serviceName, $deploymentSlot, $roleName, $newInstanceNumber); + } else { + $client->setInstanceCountByDeploymentId($serviceName, $deploymentName, $roleName, $newInstanceNumber); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Reboots a role instance. + * + * @command-name RebootInstance + * @command-description Reboots a role instance. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $instanceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RoleInstanceName Required. The name of the role instance to work with. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Reboot a role instance: + * @command-example RebootInstance -sid:"" -cert:"mycert.pem" + * @command-example --Name:"hostedservicename" --ByName:"deploymentname" + * @command-example --RoleInstanceName:"PhpOnAzure.Web_IN_0" + */ + public function rebootInstanceCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $instanceName, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->rebootRoleInstanceBySlot($serviceName, $deploymentSlot, $instanceName); + } else { + $client->rebootRoleInstanceByDeploymentId($serviceName, $deploymentName, $instanceName); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Reimages a role instance. + * + * @command-name ReimageInstance + * @command-description Reimages a role instance. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $instanceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RoleInstanceName Required. The name of the role instance to work with. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Reimage a role instance: + * @command-example ReimageInstance -sid:"" -cert:"mycert.pem" + * @command-example --Name:"hostedservicename" --ByName:"deploymentname" + * @command-example --RoleInstanceName:"PhpOnAzure.Web_IN_0" + */ + public function reimageInstanceCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $instanceName, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->reimageRoleInstanceBySlot($serviceName, $deploymentSlot, $instanceName); + } else { + $client->reimageRoleInstanceByDeploymentId($serviceName, $deploymentName, $instanceName); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Upgrades a deployment from a remote package file and service configuration. + * + * @command-name UpgradeFromStorage + * @command-description Upgrades a deployment from a remote package file and service configuration. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $label Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Label Required. The label for the deployment. + * @command-parameter-for $packageUrl Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --PackageUrl Required. The remote location of the .cspkg file. + * @command-parameter-for $serviceConfigurationLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ServiceConfigLocation Required. The location of the .cspkg file. + * @command-parameter-for $mode Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Mode Required. Set to auto|manual. + * @command-parameter-for $roleName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RoleName Optional. Role name to upgrade. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + */ + public function upgradeFromStorageCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $label, $packageUrl, $serviceConfigurationLocation, $mode = 'auto', $roleName = null, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->upgradeDeploymentBySlot($serviceName, $deploymentSlot, $label, $packageUrl, $serviceConfigurationLocation, $mode, $roleName); + } else { + $client->upgradeDeploymentByDeploymentId($serviceName, $deploymentName, $label, $packageUrl, $serviceConfigurationLocation, $mode, $roleName); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Upgrades a deployment from a local package file and service configuration. + * + * @command-name UpgradeFromLocal + * @command-description Upgrades a deployment from a local package file and service configuration. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $label Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Label Required. The label for the deployment. + * @command-parameter-for $packageLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --PackageLocation Required. The location of the .cspkg file. + * @command-parameter-for $serviceConfigurationLocation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ServiceConfigLocation Required. The location of the .cspkg file. + * @command-parameter-for $storageAccount Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --StorageAccount Required. Storage account to use when creating the deployment. + * @command-parameter-for $mode Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Mode Required. Set to auto|manual. + * @command-parameter-for $roleName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RoleName Optional. Role name to upgrade. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + */ + public function upgradeFromLocalCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $label, $packageLocation, $serviceConfigurationLocation, $storageAccount, $mode = 'auto', $roleName = null, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + $blobClient = $client->createBlobClientForService($storageAccount); + $blobClient->createContainerIfNotExists('phpazuredeployments'); + $blobClient->putBlob('phpazuredeployments', basename($packageLocation), $packageLocation); + $package = $blobClient->getBlobInstance('phpazuredeployments', basename($packageLocation)); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->upgradeDeploymentBySlot($serviceName, $deploymentSlot, $label, $package->Url, $serviceConfigurationLocation, $mode, $roleName); + } else { + $client->upgradeDeploymentByDeploymentId($serviceName, $deploymentName, $label, $package->Url, $serviceConfigurationLocation, $mode, $roleName); + } + + $client->waitForOperation(); + $blobClient->deleteBlob('phpazuredeployments', basename($packageLocation)); + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Walks upgrade domains. + * + * @command-name WalkUpgradeDomains + * @command-description Walks upgrade domains. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $deploymentSlot Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --BySlot Required if deployment name is omitted. The slot to retrieve property information for. + * @command-parameter-for $deploymentName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --ByName Required if deployment slot is omitted. The deployment name to retrieve property information for. + * @command-parameter-for $upgradeDomain Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --UpgradeDomain Required. The upgrade domain index. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + */ + public function walkUpgradeDomainsCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $deploymentSlot, $deploymentName, $upgradeDomain, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + + if (!is_null($deploymentSlot) && $deploymentSlot != '') { + $deploymentSlot = strtolower($deploymentSlot); + + $client->walkUpgradeDomainBySlot($serviceName, $deploymentSlot, $upgradeDomain); + } else { + $client->walkUpgradeDomainByDeploymentId($serviceName, $deploymentName, $upgradeDomain); + } + + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } +} + +Zend_Service_Console_Command::bootstrap($_SERVER['argv']); diff --git a/library/Zend/Service/WindowsAzure/CommandLine/GetAsynchronousOperation.php b/library/Zend/Service/WindowsAzure/CommandLine/GetAsynchronousOperation.php new file mode 100755 index 000000000..e04d2da2a --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/GetAsynchronousOperation.php @@ -0,0 +1,98 @@ +" -cert:"mycert.pem" -r:"dab87a4b70e94a36805f5af2d20fc593" + */ + public function getInfoCommand($subscriptionId, $certificate, $certificatePassphrase, $requestId) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getOperationStatus($requestId); + + $this->_displayObjectInformation($result, array('ID', 'Status', 'ErrorMessage')); + } + + /** + * Wait for a specific asynchronous request to complete. + * + * @command-name WaitFor + * @command-description Wait for a specific asynchronous request to complete. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $requestId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RequestId|-r Required. The value returned by a call that starts an asynchronous operation to monitor. + * @command-parameter-for $interval Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Interval|-i Optional. The interval between two status checks (in milliseconds). + * @command-example Wait for a specific asynchronous operation: + * @command-example WaitFor -sid:"" -cert:"mycert.pem" -r:"dab87a4b70e94a36805f5af2d20fc593" + */ + public function waitForCommand($subscriptionId, $certificate, $certificatePassphrase, $requestId, $interval = 250) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->waitForOperation($requestId, $interval); + } +} + +Zend_Service_Console_Command::bootstrap($_SERVER['argv']); diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Package.php b/library/Zend/Service/WindowsAzure/CommandLine/Package.php new file mode 100755 index 000000000..3d337a659 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Package.php @@ -0,0 +1,205 @@ +invoke($archive, $path, $options); + } + + + /** + * Packages a Windows Azure project structure. + * + * @command-name Create + * @command-description Packages a Windows Azure project structure. + * + * @command-parameter-for $path Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Path|-p Required. The path to package. + * @command-parameter-for $runDevFabric Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --RunDevFabric|-dev Required. Switch. Run and deploy to the Windows Azure development fabric. + * @command-parameter-for $outputPath Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --OutputPath|-out Optional. The output path for the resulting package. + */ + public function createPackageCommand($path, $runDevFabric, $outputPath) + { + // Create output paths + if ($outputPath == '') { + $outputPath = realpath($path . '/../'); + } + $packageOut = $outputPath . '/' . basename($path) . '.cspkg'; + + // Find Windows Azure SDK bin folder + $windowsAzureSdkFolderCandidates = array_merge( + isset($_SERVER['ProgramFiles']) ? glob($_SERVER['ProgramFiles'] . '\Windows Azure SDK\*\bin', GLOB_NOSORT) : array(), + isset($_SERVER['ProgramFiles']) ? glob($_SERVER['ProgramFiles(x86)'] . '\Windows Azure SDK\*\bin', GLOB_NOSORT) : array(), + isset($_SERVER['ProgramFiles']) ? glob($_SERVER['ProgramW6432'] . '\Windows Azure SDK\*\bin', GLOB_NOSORT) : array() + ); + if (count($windowsAzureSdkFolderCandidates) == 0) { + throw new Zend_Service_Console_Exception('Could not locate Windows Azure SDK for PHP.'); + } + $cspack = '"' . $windowsAzureSdkFolderCandidates[0] . '\cspack.exe' . '"'; + $csrun = '"' . $windowsAzureSdkFolderCandidates[0] . '\csrun.exe' . '"'; + + // Open the ServiceDefinition.csdef file and check for role paths + $serviceDefinitionFile = $path . '/ServiceDefinition.csdef'; + if (!file_exists($serviceDefinitionFile)) { + require_once 'Zend/Service/Console/Exception.php'; + throw new Zend_Service_Console_Exception('Could not locate ServiceDefinition.csdef at ' . $serviceDefinitionFile . '.'); + } + $serviceDefinition = Zend_Xml_Security::scanFile($serviceDefinitionFile); + $xmlRoles = array(); + if ($serviceDefinition->WebRole) { + if (count($serviceDefinition->WebRole) > 1) { + $xmlRoles = array_merge($xmlRoles, $serviceDefinition->WebRole); + } else { + $xmlRoles = array_merge($xmlRoles, array($serviceDefinition->WebRole)); + } + } + if ($serviceDefinition->WorkerRole) { + if (count($serviceDefinition->WorkerRole) > 1) { + $xmlRoles = array_merge($xmlRoles, $serviceDefinition->WorkerRole); + } else { + $xmlRoles = array_merge($xmlRoles, array($serviceDefinition->WorkerRole)); + } + } + + // Build '/role:' command parameter + $roleArgs = array(); + foreach ($xmlRoles as $xmlRole) { + if ($xmlRole["name"]) { + $roleArgs[] = '/role:' . $xmlRole["name"] . ';' . realpath($path . '/' . $xmlRole["name"]); + } + } + + // Build command + $command = $cspack; + $args = array( + $path . '\ServiceDefinition.csdef', + implode(' ', $roleArgs), + '/out:' . $packageOut + ); + if ($runDevFabric) { + $args[] = '/copyOnly'; + } + passthru($command . ' ' . implode(' ', $args)); + + // Can we copy a configuration file? + $serviceConfigurationFile = $path . '/ServiceConfiguration.cscfg'; + $serviceConfigurationFileOut = $outputPath . '/ServiceConfiguration.cscfg'; + if (file_exists($serviceConfigurationFile) && !file_exists($serviceConfigurationFileOut)) { + copy($serviceConfigurationFile, $serviceConfigurationFileOut); + } + + // Do we have to start the development fabric? + if ($runDevFabric) { + passthru($csrun . ' /devstore:start /devfabric:start'); + passthru($csrun . ' /removeAll'); + passthru($csrun . ' /run:"' . $packageOut . ';' . $serviceConfigurationFileOut . '" /launchBrowser'); + } + } + + /** + * Creates a scaffolder from a given path. + * + * @command-name CreateScaffolder + * @command-description Creates a scaffolder from a given path. + * + * @command-parameter-for $rootPath Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Path|-p Required. The path to package into a scaffolder. + * @command-parameter-for $scaffolderFile Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --OutFile|-out Required. The filename of the scaffolder. + */ + public function createScaffolderCommand($rootPath, $scaffolderFile) + { + $archive = new Phar($scaffolderFile); + $archive->buildFromIterator( + new RecursiveIteratorIterator( + new RecursiveDirectoryIterator(realpath($rootPath))), + realpath($rootPath)); + } +} +Zend_Service_Console_Command::bootstrap($_SERVER['argv']); diff --git a/library/Zend/Service/WindowsAzure/CommandLine/PackageScaffolder/PackageScaffolderAbstract.php b/library/Zend/Service/WindowsAzure/CommandLine/PackageScaffolder/PackageScaffolderAbstract.php new file mode 100755 index 000000000..113e7beb3 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/PackageScaffolder/PackageScaffolderAbstract.php @@ -0,0 +1,251 @@ +deleteDirectory($path); + $phar->extractTo($path); + @unlink($path . '/index.php'); + @unlink($path . '/build.bat'); + $this->copyDirectory($path . '/resources', $path, false); + $this->deleteDirectory($path . '/resources'); + } + + /** + * Apply file transforms. + * + * @param string $rootPath Root path. + * @param array $values Key/value array. + */ + protected function applyTransforms($rootPath, $values) + { + if (is_null($rootPath) || !is_string($rootPath) || empty($rootPath)) { + throw new InvalidArgumentException("Undefined \"rootPath\""); + } + + if (is_dir($rootPath)) { + $d = dir($rootPath); + while ( false !== ( $entry = $d->read() ) ) { + if ( $entry == '.' || $entry == '..' ) { + continue; + } + $entry = $rootPath . '/' . $entry; + + $this->applyTransforms($entry, $values); + } + $d->close(); + } else { + $contents = file_get_contents($rootPath); + foreach ($values as $key => $value) { + $contents = str_replace('$' . $key . '$', $value, $contents); + } + file_put_contents($rootPath, $contents); + } + + return true; + } + + /** + * Create directory + * + * @param string $path Path of directory to create. + * @param boolean $abortIfExists Abort if directory exists. + * @param boolean $recursive Create parent directories if not exist. + * + * @return boolean + */ + protected function createDirectory($path, $abortIfExists = true, $recursive = true) { + if (is_null($path) || !is_string($path) || empty($path)) { + throw new InvalidArgumentException ("Undefined \"path\"" ); + } + + if (is_dir($path) && $abortIfExists) { + return false; + } + + if (is_dir($path) ) { + @chmod($path, '0775'); + if (!self::deleteDirectory($path) ) { + throw new RuntimeException("Failed to delete \"{$path}\"."); + } + } + + if (!mkdir($path, '0775', $recursive) || !is_dir($path)) { + throw new RuntimeException( "Failed to create directory \"{$path}\"." ); + } + + return true; + } + + /** + * Fully copy a source directory to a target directory. + * + * @param string $sourcePath Source directory + * @param string $destinationPath Target directory + * @param boolean $abortIfExists Query re-creating target directory if exists + * @param octal $mode Changes access mode + * + * @return boolean + */ + protected function copyDirectory($sourcePath, $destinationPath, $abortIfExists = true, $mode = '0775') { + $mode = $mode & ~0002; + + if (is_null($sourcePath) || !is_string($sourcePath) || empty($sourcePath)) { + throw new InvalidArgumentException("Undefined \"sourcePath\""); + } + + if (is_null($destinationPath) || !is_string($destinationPath) || empty($destinationPath)) { + throw new InvalidArgumentException("Undefined \"destinationPath\""); + } + + if (is_dir($destinationPath) && $abortIfExists) { + return false; + } + + if (is_dir($sourcePath)) { + if (!is_dir($destinationPath) && !mkdir($destinationPath, $mode)) { + throw new RuntimeException("Failed to create target directory \"{$destinationPath}\"" ); + } + $d = dir($sourcePath); + while ( false !== ( $entry = $d->read() ) ) { + if ( $entry == '.' || $entry == '..' ) { + continue; + } + $strSourceEntry = $sourcePath . '/' . $entry; + $strTargetEntry = $destinationPath . '/' . $entry; + if (is_dir($strSourceEntry) ) { + $this->copyDirectory( + $strSourceEntry, + $strTargetEntry, + false, + $mode + ); + continue; + } + if (!copy($strSourceEntry, $strTargetEntry) ) { + throw new RuntimeException ( + "Failed to copy" + . " file \"{$strSourceEntry}\"" + . " to \"{$strTargetEntry}\"" + ); + } + } + $d->close(); + } else { + if (!copy($sourcePath, $destinationPath)) { + throw new RuntimeException ( + "Failed to copy" + . " file \"{$sourcePath}\"" + . " to \"{$destinationPath}\"" + + ); + } + } + + return true; + } + + /** + * Delete directory and all of its contents; + * + * @param string $path Directory path + * @return boolean + */ + protected function deleteDirectory($path) + { + if (is_null($path) || !is_string($path) || empty($path)) { + throw new InvalidArgumentException( "Undefined \"path\"" ); + } + + $handleDir = false; + if (is_dir($path) ) { + $handleDir = @opendir($path); + } + if (!$handleDir) { + return false; + } + @chmod($path, 0775); + while ($file = readdir($handleDir)) { + if ($file == '.' || $file == '..') { + continue; + } + + $fsEntity = $path . "/" . $file; + + if (is_dir($fsEntity)) { + $this->deleteDirectory($fsEntity); + continue; + } + + if (is_file($fsEntity)) { + @unlink($fsEntity); + continue; + } + + throw new LogicException ( + "Unexpected file type: \"{$fsEntity}\"" + ); + } + + @chmod($path, 0775); + closedir($handleDir); + @rmdir($path); + + return true; + } +} diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder.phar b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder.phar new file mode 100755 index 000000000..e25ec460e Binary files /dev/null and b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder.phar differ diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/build.bat b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/build.bat new file mode 100755 index 000000000..6a444217b --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/build.bat @@ -0,0 +1 @@ +php ..\..\Package.php CreateScaffolder -p:"./" -out:"..\DefaultScaffolder.phar" \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/index.php b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/index.php new file mode 100755 index 000000000..5a9b5341f --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/index.php @@ -0,0 +1,63 @@ +log('Extracting resources...'); + $this->createDirectory($rootPath); + $this->extractResources($phar, $rootPath); + $this->log('Extracted resources.'); + + // Apply transforms + $this->log('Applying transforms...'); + $this->applyTransforms($rootPath, $options); + $this->log('Applied transforms.'); + + // Show "to do" message + $contentRoot = realpath($rootPath . '/PhpOnAzure.Web'); + echo "\r\n"; + echo "Note: before packaging your application, please copy your application code to $contentRoot"; + } +} diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/Web.config b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/Web.config new file mode 100755 index 000000000..c9c2671eb --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/Web.config @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/add-environment-variables.cmd b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/add-environment-variables.cmd new file mode 100755 index 000000000..6883c9262 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/add-environment-variables.cmd @@ -0,0 +1,7 @@ +@echo off +ECHO "Adding extra environment variables..." >> ..\startup-tasks-log.txt + +powershell.exe Set-ExecutionPolicy Unrestricted +powershell.exe .\add-environment-variables.ps1 >> ..\startup-tasks-log.txt 2>>..\startup-tasks-error-log.txt + +ECHO "Added extra environment variables." >> ..\startup-tasks-log.txt \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/add-environment-variables.ps1 b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/add-environment-variables.ps1 new file mode 100755 index 000000000..5ebdec2a6 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/add-environment-variables.ps1 @@ -0,0 +1,15 @@ +[Reflection.Assembly]::LoadWithPartialName("zend.service.windowsazure.ServiceRuntime") + +$rdRoleId = [Environment]::GetEnvironmentVariable("RdRoleId", "Machine") + +[Environment]::SetEnvironmentVariable("RdRoleId", [zend.service.windowsazure.ServiceRuntime.RoleEnvironment]::CurrentRoleInstance.Id, "Machine") +[Environment]::SetEnvironmentVariable("RoleName", [zend.service.windowsazure.ServiceRuntime.RoleEnvironment]::CurrentRoleInstance.Role.Name, "Machine") +[Environment]::SetEnvironmentVariable("RoleInstanceID", [zend.service.windowsazure.ServiceRuntime.RoleEnvironment]::CurrentRoleInstance.Id, "Machine") +[Environment]::SetEnvironmentVariable("RoleDeploymentID", [zend.service.windowsazure.ServiceRuntime.RoleEnvironment]::DeploymentId, "Machine") + + +if ($rdRoleId -ne [zend.service.windowsazure.ServiceRuntime.RoleEnvironment]::CurrentRoleInstance.Id) { + Restart-Computer +} + +[Environment]::SetEnvironmentVariable('Path', $env:RoleRoot + '\base\x86;' + [Environment]::GetEnvironmentVariable('Path', 'Machine'), 'Machine') \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/install-php.cmd b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/install-php.cmd new file mode 100755 index 000000000..64bcb452d --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/bin/install-php.cmd @@ -0,0 +1,12 @@ +@echo off +ECHO "Starting PHP installation..." >> ..\startup-tasks-log.txt + +md "%~dp0appdata" +cd "%~dp0appdata" +cd .. + +reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f +"..\resources\WebPICmdLine\webpicmdline" /Products:PHP53,SQLDriverPHP53IIS /AcceptEula >> ..\startup-tasks-log.txt 2>>..\startup-tasks-error-log.txt +reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f + +ECHO "Completed PHP installation." >> ..\startup-tasks-log.txt \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/diagnostics.wadcfg b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/diagnostics.wadcfg new file mode 100755 index 000000000..10bdbba12 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/diagnostics.wadcfg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.Deployment.dll b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.Deployment.dll new file mode 100755 index 000000000..230f75def Binary files /dev/null and b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.Deployment.dll differ diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.PlatformInstaller.UI.dll b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.PlatformInstaller.UI.dll new file mode 100755 index 000000000..9951693e9 Binary files /dev/null and b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.PlatformInstaller.UI.dll differ diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.PlatformInstaller.dll b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.PlatformInstaller.dll new file mode 100755 index 000000000..83a5c2fb9 Binary files /dev/null and b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/Microsoft.Web.PlatformInstaller.dll differ diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/WebpiCmdLine.exe b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/WebpiCmdLine.exe new file mode 100755 index 000000000..5f95d8f3a Binary files /dev/null and b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/WebpiCmdLine.exe differ diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/license.rtf b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/license.rtf new file mode 100755 index 000000000..b703f2258 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/PhpOnAzure.Web/resources/WebPICmdLine/license.rtf @@ -0,0 +1,41 @@ +{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\froman\fprq2\fcharset2 Symbol;}} +{\colortbl ;\red0\green0\blue0;\red0\green0\blue255;} +{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}} +{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\nowidctlpar\sb120\sa120\b\f0\fs20 MICROSOFT SOFTWARE LICENSE TERMS\par +\pard\brdrb\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 MICROSOFT WEB PLATFORM INSTALLER 3.0\f1\par +\pard\nowidctlpar\sb120\sa120\b0\f0 These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft\par +\pard\nowidctlpar\fi-360\li360\sb120\sa120\tx360\f2\'b7\tab\f0 updates,\par +\pard\nowidctlpar\fi-360\li360\sb120\sa120\f2\'b7\tab\f0 supplements,\par +\f2\'b7\tab\f0 Internet-based services, and\par +\f2\'b7\tab\f0 support services\par +\pard\nowidctlpar\sb120\sa120 for this software, unless other terms accompany those items. If so, those terms apply.\par +\b By using the software, you accept these terms. If you do not accept them, do not use the software.\par +\pard\brdrt\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 If you comply with these license terms, you have the rights below.\par +\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\tx360 1.\tab INSTALLATION AND USE RIGHTS. \b0 You may install and use any number of copies of the software on your devices.\f1\par +\pard\s1\fi-357\li357\sb120\sa120\tx360\b\caps\f0 2.\tab\fs19 Third Party Programs\caps0\f1 .\b0\f0\fs20 T\kerning36 his software enables you to obtain software applications from other sources. Those applications are offered and distributed by third parties under their own license terms. Microsoft is not developing, distributing or licensing those applications to you, but instead, as a convenience, enables you to use this software to obtain those applications directly from the application providers. By using the software, you acknowledge and agree that you are obtaining the applications directly from the third party providers and under separate license terms, and that it is your responsibility to locate, understand and comply with those license terms.\fs19 Microsoft grants you no license rights for third-party software or applications that is obtained using this software. \kerning0 \b\f1\par +\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\tx360\f0\fs20 3.\tab INTERNET-BASED SERVICES. \b0 Microsoft provides Internet-based services with the software. It may change or cancel them at any time. \cf1 The software contains product information that is updated by means of a feed online from Microsoft.\cf0\f1\par +\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\b\f0 4.\tab SCOPE OF LICENSE.\b0 The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not\par +\pard\nowidctlpar\fi-363\li720\sb120\sa120\tx720\f2\'b7\tab\f0 work around any technical limitations in the software;\par +\pard\nowidctlpar\fi-363\li720\sb120\sa120\f2\'b7\tab\f0 reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;\par +\f2\'b7\tab\f0 make more copies of the software than specified in this agreement or allowed by applicable law, despite this limitation;\par +\f2\'b7\tab\f0 publish the software for others to copy;\par +\f2\'b7\tab\f0 rent, lease or lend the software; or\par +\f2\'b7\tab\f0 transfer the software or this agreement to any third party;\par +\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\tx360\b 5.\tab BACKUP COPY.\b0 You may make one backup copy of the software. You may use it only to reinstall the software.\par +\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\b 6.\tab DOCUMENTATION.\b0 Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.\par +\b 7.\tab TRANSFER TO ANOTHER DEVICE.\b0 You may uninstall the software and install it on another device for your use. You may not do so to share this license between devices.\par +\b 8.\tab EXPORT RESTRICTIONS.\b0 The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see {\field{\*\fldinst{HYPERLINK "www.microsoft.com/exporting"}}{\fldrslt{\ul\cf2 www.microsoft.com/exporting}}}\f1\fs20 .\ul\par +\ulnone\b\f0 9.\tab SUPPORT SERVICES. \b0 Because this software is \ldblquote as is,\rdblquote we may not provide support services for it.\par +\b 10.\tab ENTIRE AGREEMENT.\b0 This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.\par +\pard\nowidctlpar\s1\fi-360\li360\sb120\sa120\tx360\b 11.\tab APPLICABLE LAW.\par +\pard\nowidctlpar\s2\fi-363\li720\sb120\sa120\tx720 a.\tab United States.\b0 If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.\par +\pard\nowidctlpar\s2\fi-363\li720\sb120\sa120\b b.\tab Outside the United States.\b0 If you acquired the software in any other country, the laws of that country apply.\par +\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\tx360\b 12.\tab LEGAL EFFECT.\b0 This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.\par +\pard\s1\fi-357\li357\sb120\sa120\tx360\b 13.\tab DISCLAIMER OF WARRANTY. The software is licensed \ldblquote as-is.\rdblquote You bear the risk of using it. Microsoft gives no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this agreement cannot change. To the extent permitted under your local laws, Microsoft excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement.\par +\pard\s1\fi-357\li357\sb120\sa120 14.\tab LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. You can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages.\par +\pard\nowidctlpar\li357\sb120\sa120\b0 This limitation applies to\par +\pard\nowidctlpar\fi-363\li720\sb120\sa120\tx720\f2\'b7\tab\f0 anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and\par +\pard\nowidctlpar\fi-363\li720\sb120\sa120\f2\'b7\tab\f0 claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.\par +\pard\sb120\sa120 It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages\f1 .\fs19\par +} + \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/ServiceConfiguration.cscfg b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/ServiceConfiguration.cscfg new file mode 100755 index 000000000..34efdb28a --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/ServiceConfiguration.cscfg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/ServiceDefinition.csdef b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/ServiceDefinition.csdef new file mode 100755 index 000000000..e03ebfa19 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Scaffolders/DefaultScaffolder/resources/ServiceDefinition.csdef @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Service.php b/library/Zend/Service/WindowsAzure/CommandLine/Service.php new file mode 100755 index 000000000..a05c0f666 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Service.php @@ -0,0 +1,201 @@ +" -cert:"mycert.pem" + */ + public function listCommand($subscriptionId, $certificate, $certificatePassphrase) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->listHostedServices(); + + if (count($result) == 0) { + echo 'No data to display.'; + } + foreach ($result as $object) { + $this->_displayObjectInformation($object, array('ServiceName', 'Url')); + } + } + + /** + * Get hosted service account properties. + * + * @command-name GetProperties + * @command-description Get hosted service account properties. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-example Get hosted service account properties for service "phptest": + * @command-example GetProperties -sid:"" -cert:"mycert.pem" + * @command-example --Name:"phptest" + */ + public function getPropertiesCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getHostedServiceProperties($serviceName); + + $this->_displayObjectInformation($result, array('ServiceName', 'Label', 'AffinityGroup', 'Location')); + } + + /** + * Get hosted service account property. + * + * @command-name GetProperty + * @command-description Get storage account property. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on. + * @command-parameter-for $property Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Property|-prop Required. The property to retrieve for the hosted service account. + * @command-example Get hosted service account property "Url" for service "phptest": + * @command-example GetProperty -sid:"" -cert:"mycert.pem" + * @command-example --Name:"phptest" --Property:Url + */ + public function getPropertyCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $property) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getHostedServiceProperties($serviceName); + + printf("%s\r\n", $result->$property); + } + + /** + * Create hosted service account. + * + * @command-name Create + * @command-description Create hosted service account. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Name Required. The hosted service account name. + * @command-parameter-for $label Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Label Required. A label for the hosted service. + * @command-parameter-for $description Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Description Optional. A description for the hosted service. + * @command-parameter-for $location Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Location Required if AffinityGroup is not specified. The location where the hosted service will be created. + * @command-parameter-for $affinityGroup Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --AffinityGroup Required if Location is not specified. The name of an existing affinity group associated with this subscription. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Create hosted service account in West Europe + * @command-example Create -p:"phpazure" --Name:"phptestsdk2" --Label:"phptestsdk2" --Location:"West Europe" + */ + public function createCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $label, $description, $location, $affinityGroup, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->createHostedService($serviceName, $label, $description, $location, $affinityGroup); + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Update hosted service account. + * + * @command-name Update + * @command-description Update hosted service account. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Name Required. The hosted service account name. + * @command-parameter-for $label Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Label Required. A label for the hosted service. + * @command-parameter-for $description Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Description Optional. A description for the hosted service. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Update hosted service + * @command-example Update -p:"phpazure" --Name:"phptestsdk2" --Label:"New label" --Description:"Some description" + */ + public function updateCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $label, $description, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->updateHostedService($serviceName, $label, $description); + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } + + /** + * Delete hosted service account. + * + * @command-name Delete + * @command-description Delete hosted service account. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Name Required. The hosted service account name. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Delete hosted service + * @command-example Delete -p:"phpazure" --Name:"phptestsdk2" + */ + public function deleteCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->deleteHostedService($serviceName); + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } +} + +Zend_Service_Console_Command::bootstrap($_SERVER['argv']); diff --git a/library/Zend/Service/WindowsAzure/CommandLine/Storage.php b/library/Zend/Service/WindowsAzure/CommandLine/Storage.php new file mode 100755 index 000000000..bfaca726f --- /dev/null +++ b/library/Zend/Service/WindowsAzure/CommandLine/Storage.php @@ -0,0 +1,198 @@ +" -cert:"mycert.pem" + */ + public function listAccountsCommand($subscriptionId, $certificate, $certificatePassphrase) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->listStorageAccounts(); + + if (count($result) == 0) { + echo 'No data to display.'; + } + foreach ($result as $object) { + $this->_displayObjectInformation($object, array('ServiceName', 'Url')); + } + } + + /** + * Get storage account properties. + * + * @command-name GetProperties + * @command-description Get storage account properties. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $accountName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --AccountName Required. The storage account name to operate on. + * @command-example Get storage account properties for account "phptest": + * @command-example GetProperties -sid:"" -cert:"mycert.pem" + * @command-example --AccountName:"phptest" + */ + public function getPropertiesCommand($subscriptionId, $certificate, $certificatePassphrase, $accountName) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getStorageAccountProperties($accountName); + + $this->_displayObjectInformation($result, array('ServiceName', 'Label', 'AffinityGroup', 'Location')); + } + + /** + * Get storage account property. + * + * @command-name GetProperty + * @command-description Get storage account property. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $accountName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --AccountName Required. The storage account name to operate on. + * @command-parameter-for $property Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Property|-prop Required. The property to retrieve for the storage account. + * @command-example Get storage account property "Url" for account "phptest": + * @command-example GetProperty -sid:"" -cert:"mycert.pem" + * @command-example --AccountName:"phptest" --Property:Url + */ + public function getPropertyCommand($subscriptionId, $certificate, $certificatePassphrase, $accountName, $property) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getStorageAccountProperties($accountName); + + printf("%s\r\n", $result->$property); + } + + /** + * Get storage account keys. + * + * @command-name GetKeys + * @command-description Get storage account keys. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $accountName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --AccountName Required. The storage account name to operate on. + * @command-example Get storage account keys for account "phptest": + * @command-example GetKeys -sid:"" -cert:"mycert.pem" + * @command-example --AccountName:"phptest" + */ + public function getKeysCommand($subscriptionId, $certificate, $certificatePassphrase, $accountName) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getStorageAccountKeys($accountName); + + $this->_displayObjectInformation((object)array('Key' => 'primary', 'Value' => $result[0]), array('Key', 'Value')); + $this->_displayObjectInformation((object)array('Key' => 'secondary', 'Value' => $result[1]), array('Key', 'Value')); + } + + /** + * Get storage account key. + * + * @command-name GetKey + * @command-description Get storage account key. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $accountName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --AccountName Required. The storage account name to operate on. + * @command-parameter-for $key Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Key|-k Optional. Specifies the key to regenerate (primary|secondary). If omitted, primary key is used as the default. + * @command-example Get primary storage account key for account "phptest": + * @command-example GetKey -sid:"" -cert:"mycert.pem" + * @command-example --AccountName:"phptest" -Key:primary + */ + public function getKeyCommand($subscriptionId, $certificate, $certificatePassphrase, $accountName, $key = 'primary') + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $result = $client->getStorageAccountKeys($accountName); + + if (strtolower($key) == 'secondary') { + printf("%s\r\n", $result[1]); + } + printf("%s\r\n", $result[0]); + } + + /** + * Regenerate storage account keys. + * + * @command-name RegenerateKeys + * @command-description Regenerate storage account keys. + * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on. + * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate. + * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed. + * @command-parameter-for $accountName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --AccountName Required. The storage account name to operate on. + * @command-parameter-for $key Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --Key|-k Optional. Specifies the key to regenerate (primary|secondary). If omitted, primary key is used as the default. + * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete? + * @command-example Regenerate secondary key for account "phptest": + * @command-example RegenerateKeys -sid:"" -cert:"mycert.pem" + * @command-example --AccountName:"phptest" -Key:secondary + */ + public function regenerateKeysCommand($subscriptionId, $certificate, $certificatePassphrase, $accountName, $key = 'primary', $waitForOperation = false) + { + $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase); + $client->regenerateStorageAccountKey($accountName, $key); + if ($waitForOperation) { + $client->waitForOperation(); + } + echo $client->getLastRequestId(); + } +} + +Zend_Service_Console_Command::bootstrap($_SERVER['argv']); diff --git a/library/Zend/Service/WindowsAzure/Credentials/CredentialsAbstract.php b/library/Zend/Service/WindowsAzure/Credentials/CredentialsAbstract.php new file mode 100755 index 000000000..76893c980 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Credentials/CredentialsAbstract.php @@ -0,0 +1,235 @@ +_accountName = $accountName; + $this->_accountKey = base64_decode($accountKey); + $this->_usePathStyleUri = $usePathStyleUri; + } + + /** + * Set account name for Windows Azure + * + * @param string $value + * @return Zend_Service_WindowsAzure_Credentials_CredentialsAbstract + */ + public function setAccountName($value = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::DEVSTORE_ACCOUNT) + { + $this->_accountName = $value; + return $this; + } + + /** + * Set account key for Windows Azure + * + * @param string $value + * @return Zend_Service_WindowsAzure_Credentials_CredentialsAbstract + */ + public function setAccountkey($value = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::DEVSTORE_KEY) + { + $this->_accountKey = base64_decode($value); + return $this; + } + + /** + * Set use path-style URI's + * + * @param boolean $value + * @return Zend_Service_WindowsAzure_Credentials_CredentialsAbstract + */ + public function setUsePathStyleUri($value = false) + { + $this->_usePathStyleUri = $value; + return $this; + } + + /** + * Sign request URL with credentials + * + * @param string $requestUrl Request URL + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @return string Signed request URL + */ + abstract public function signRequestUrl( + $requestUrl = '', + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ + ); + + /** + * Sign request headers with credentials + * + * @param string $httpVerb HTTP verb the request will use + * @param string $path Path for the request + * @param string $queryString Query string for the request + * @param array $headers x-ms headers to add + * @param boolean $forTableStorage Is the request for table storage? + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @param mixed $rawData Raw post data + * @return array Array of headers + */ + abstract public function signRequestHeaders( + $httpVerb = Zend_Http_Client::GET, + $path = '/', + $queryString = '', + $headers = null, + $forTableStorage = false, + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ, + $rawData = null + ); + + + /** + * Prepare query string for signing + * + * @param string $value Original query string + * @return string Query string for signing + */ + protected function _prepareQueryStringForSigning($value) + { + // Return value + $returnValue = array(); + + // Prepare query string + $queryParts = $this->_makeArrayOfQueryString($value); + foreach ($queryParts as $key => $value) { + $returnValue[] = $key . '=' . $value; + } + + // Return + if (count($returnValue) > 0) { + return '?' . implode('&', $returnValue); + } else { + return ''; + } + } + + /** + * Make array of query string + * + * @param string $value Query string + * @return array Array of key/value pairs + */ + protected function _makeArrayOfQueryString($value) + { + // Returnvalue + $returnValue = array(); + + // Remove front ? + if (strlen($value) > 0 && strpos($value, '?') === 0) { + $value = substr($value, 1); + } + + // Split parts + $queryParts = explode('&', $value); + foreach ($queryParts as $queryPart) { + $queryPart = explode('=', $queryPart, 2); + + if ($queryPart[0] != '') { + $returnValue[ $queryPart[0] ] = isset($queryPart[1]) ? $queryPart[1] : ''; + } + } + + // Sort + ksort($returnValue); + + // Return + return $returnValue; + } + + /** + * Returns an array value if the key is set, otherwide returns $valueIfNotSet + * + * @param array $array + * @param mixed $key + * @param mixed $valueIfNotSet + * @return mixed + */ + protected function _issetOr($array, $key, $valueIfNotSet) + { + return isset($array[$key]) ? $array[$key] : $valueIfNotSet; + } +} diff --git a/library/Zend/Service/WindowsAzure/Credentials/Exception.php b/library/Zend/Service/WindowsAzure/Credentials/Exception.php new file mode 100755 index 000000000..780e2ae4a --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Credentials/Exception.php @@ -0,0 +1,35 @@ +_permissionSet = $permissionSet; + } + + /** + * Get permission set + * + * @return array + */ + public function getPermissionSet() + { + return $this->_permissionSet; + } + + /** + * Set permisison set + * + * Warning: fine-grained permissions should be added prior to coarse-grained permissions. + * For example: first add blob permissions, end with container-wide permissions. + * + * Warning: the signed access signature URL must match the account name of the + * Zend_Service_WindowsAzure_Credentials_Zend_Service_WindowsAzure_Credentials_SharedAccessSignature instance + * + * @param array $value Permission set + * @return void + */ + public function setPermissionSet($value = array()) + { + foreach ($value as $url) { + if (strpos($url, $this->_accountName) === false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('The permission set can only contain URLs for the account name specified in the Zend_Service_WindowsAzure_Credentials_SharedAccessSignature instance.'); + } + } + $this->_permissionSet = $value; + } + + /** + * Create signature + * + * @param string $path Path for the request + * @param string $resource Signed resource - container (c) - blob (b) + * @param string $permissions Signed permissions - read (r), write (w), delete (d) and list (l) + * @param string $start The time at which the Shared Access Signature becomes valid. + * @param string $expiry The time at which the Shared Access Signature becomes invalid. + * @param string $identifier Signed identifier + * @return string + */ + public function createSignature( + $path = '/', + $resource = 'b', + $permissions = 'r', + $start = '', + $expiry = '', + $identifier = '' + ) { + // Determine path + if ($this->_usePathStyleUri) { + $path = substr($path, strpos($path, '/')); + } + + // Add trailing slash to $path + if (substr($path, 0, 1) !== '/') { + $path = '/' . $path; + } + + // Build canonicalized resource string + $canonicalizedResource = '/' . $this->_accountName; + /*if ($this->_usePathStyleUri) { + $canonicalizedResource .= '/' . $this->_accountName; + }*/ + $canonicalizedResource .= $path; + + // Create string to sign + $stringToSign = array(); + $stringToSign[] = $permissions; + $stringToSign[] = $start; + $stringToSign[] = $expiry; + $stringToSign[] = $canonicalizedResource; + $stringToSign[] = $identifier; + + $stringToSign = implode("\n", $stringToSign); + $signature = base64_encode(hash_hmac('sha256', $stringToSign, $this->_accountKey, true)); + + return $signature; + } + + /** + * Create signed query string + * + * @param string $path Path for the request + * @param string $queryString Query string for the request + * @param string $resource Signed resource - container (c) - blob (b) + * @param string $permissions Signed permissions - read (r), write (w), delete (d) and list (l) + * @param string $start The time at which the Shared Access Signature becomes valid. + * @param string $expiry The time at which the Shared Access Signature becomes invalid. + * @param string $identifier Signed identifier + * @return string + */ + public function createSignedQueryString( + $path = '/', + $queryString = '', + $resource = 'b', + $permissions = 'r', + $start = '', + $expiry = '', + $identifier = '' + ) { + // Parts + $parts = array(); + if ($start !== '') { + $parts[] = 'st=' . urlencode($start); + } + $parts[] = 'se=' . urlencode($expiry); + $parts[] = 'sr=' . $resource; + $parts[] = 'sp=' . $permissions; + if ($identifier !== '') { + $parts[] = 'si=' . urlencode($identifier); + } + $parts[] = 'sig=' . urlencode($this->createSignature($path, $resource, $permissions, $start, $expiry, $identifier)); + + // Assemble parts and query string + if ($queryString != '') { + $queryString .= '&'; + } + $queryString .= implode('&', $parts); + + return $queryString; + } + + /** + * Permission matches request? + * + * @param string $permissionUrl Permission URL + * @param string $requestUrl Request URL + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @return string Signed request URL + */ + public function permissionMatchesRequest( + $permissionUrl = '', + $requestUrl = '', + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ + ) { + // Build requirements + $requiredResourceType = $resourceType; + if ($requiredResourceType == Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB) { + $requiredResourceType .= Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER; + } + + // Parse permission url + $parsedPermissionUrl = parse_url($permissionUrl); + + // Parse permission properties + $permissionParts = explode('&', $parsedPermissionUrl['query']); + + // Parse request url + $parsedRequestUrl = parse_url($requestUrl); + + // Check if permission matches request + $matches = true; + foreach ($permissionParts as $part) { + list($property, $value) = explode('=', $part, 2); + + if ($property == 'sr') { + $matches = $matches && (strpbrk($value, $requiredResourceType) !== false); + } + + if ($property == 'sp') { + $matches = $matches && (strpbrk($value, $requiredPermission) !== false); + } + } + + // Ok, but... does the resource match? + $matches = $matches && (strpos($parsedRequestUrl['path'], $parsedPermissionUrl['path']) !== false); + + // Return + return $matches; + } + + /** + * Sign request URL with credentials + * + * @param string $requestUrl Request URL + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @return string Signed request URL + */ + public function signRequestUrl( + $requestUrl = '', + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ + ) { + // Look for a matching permission + foreach ($this->getPermissionSet() as $permittedUrl) { + if ($this->permissionMatchesRequest($permittedUrl, $requestUrl, $resourceType, $requiredPermission)) { + // This matches, append signature data + $parsedPermittedUrl = parse_url($permittedUrl); + + if (strpos($requestUrl, '?') === false) { + $requestUrl .= '?'; + } else { + $requestUrl .= '&'; + } + + $requestUrl .= $parsedPermittedUrl['query']; + + // Return url + return $requestUrl; + } + } + + // Return url, will be unsigned... + return $requestUrl; + } + + /** + * Sign request with credentials + * + * @param string $httpVerb HTTP verb the request will use + * @param string $path Path for the request + * @param string $queryString Query string for the request + * @param array $headers x-ms headers to add + * @param boolean $forTableStorage Is the request for table storage? + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @param mixed $rawData Raw post data + * @return array Array of headers + */ + public function signRequestHeaders( + $httpVerb = Zend_Http_Client::GET, + $path = '/', + $queryString = '', + $headers = null, + $forTableStorage = false, + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ, + $rawData = null + ) { + return $headers; + } +} diff --git a/library/Zend/Service/WindowsAzure/Credentials/SharedKey.php b/library/Zend/Service/WindowsAzure/Credentials/SharedKey.php new file mode 100755 index 000000000..c98eeaab3 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Credentials/SharedKey.php @@ -0,0 +1,173 @@ +_usePathStyleUri) { + $path = substr($path, strpos($path, '/')); + } + + // Determine query + $queryString = $this->_prepareQueryStringForSigning($queryString); + + // Canonicalized headers + $canonicalizedHeaders = array(); + + // Request date + $requestDate = ''; + if (isset($headers[Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date'])) { + $requestDate = $headers[Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date']; + } else { + $requestDate = gmdate('D, d M Y H:i:s', time()) . ' GMT'; // RFC 1123 + $canonicalizedHeaders[] = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date:' . $requestDate; + } + + // Build canonicalized headers + if (!is_null($headers)) { + foreach ($headers as $header => $value) { + if (is_bool($value)) { + $value = $value === true ? 'True' : 'False'; + } + + $headers[$header] = $value; + if (substr($header, 0, strlen(Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER)) == Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER) { + $canonicalizedHeaders[] = strtolower($header) . ':' . $value; + } + } + } + sort($canonicalizedHeaders); + + // Build canonicalized resource string + $canonicalizedResource = '/' . $this->_accountName; + if ($this->_usePathStyleUri) { + $canonicalizedResource .= '/' . $this->_accountName; + } + $canonicalizedResource .= $path; + if ($queryString !== '') { + $queryStringItems = $this->_makeArrayOfQueryString($queryString); + foreach ($queryStringItems as $key => $value) { + $canonicalizedResource .= "\n" . strtolower($key) . ':' . urldecode($value); + } + } + + // Content-Length header + $contentLength = ''; + if (strtoupper($httpVerb) != Zend_Http_Client::GET + && strtoupper($httpVerb) != Zend_Http_Client::DELETE + && strtoupper($httpVerb) != Zend_Http_Client::HEAD) { + $contentLength = 0; + + if (!is_null($rawData)) { + $contentLength = strlen($rawData); + } + } + + // Create string to sign + $stringToSign = array(); + $stringToSign[] = strtoupper($httpVerb); // VERB + $stringToSign[] = $this->_issetOr($headers, 'Content-Encoding', ''); // Content-Encoding + $stringToSign[] = $this->_issetOr($headers, 'Content-Language', ''); // Content-Language + $stringToSign[] = $contentLength; // Content-Length + $stringToSign[] = $this->_issetOr($headers, 'Content-MD5', ''); // Content-MD5 + $stringToSign[] = $this->_issetOr($headers, 'Content-Type', ''); // Content-Type + $stringToSign[] = ""; // Date + $stringToSign[] = $this->_issetOr($headers, 'If-Modified-Since', ''); // If-Modified-Since + $stringToSign[] = $this->_issetOr($headers, 'If-Match', ''); // If-Match + $stringToSign[] = $this->_issetOr($headers, 'If-None-Match', ''); // If-None-Match + $stringToSign[] = $this->_issetOr($headers, 'If-Unmodified-Since', ''); // If-Unmodified-Since + $stringToSign[] = $this->_issetOr($headers, 'Range', ''); // Range + + if (!$forTableStorage && count($canonicalizedHeaders) > 0) { + $stringToSign[] = implode("\n", $canonicalizedHeaders); // Canonicalized headers + } + + $stringToSign[] = $canonicalizedResource; // Canonicalized resource + $stringToSign = implode("\n", $stringToSign); + $signString = base64_encode(hash_hmac('sha256', $stringToSign, $this->_accountKey, true)); + + // Sign request + $headers[Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date'] = $requestDate; + $headers['Authorization'] = 'SharedKey ' . $this->_accountName . ':' . $signString; + + // Return headers + return $headers; + } +} diff --git a/library/Zend/Service/WindowsAzure/Credentials/SharedKeyLite.php b/library/Zend/Service/WindowsAzure/Credentials/SharedKeyLite.php new file mode 100755 index 000000000..a9f931f07 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Credentials/SharedKeyLite.php @@ -0,0 +1,152 @@ +_usePathStyleUri) { + $path = substr($path, strpos($path, '/')); + } + + // Determine query + $queryString = $this->_prepareQueryStringForSigning($queryString); + + // Build canonicalized resource string + $canonicalizedResource = '/' . $this->_accountName; + if ($this->_usePathStyleUri) { + $canonicalizedResource .= '/' . $this->_accountName; + } + $canonicalizedResource .= $path; + if ($queryString !== '') { + $canonicalizedResource .= $queryString; + } + + // Request date + $requestDate = ''; + if (isset($headers[Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date'])) { + $requestDate = $headers[Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date']; + } else { + $requestDate = gmdate('D, d M Y H:i:s', time()) . ' GMT'; // RFC 1123 + } + + // Create string to sign + $stringToSign = array(); + $stringToSign[] = $requestDate; // Date + $stringToSign[] = $canonicalizedResource; // Canonicalized resource + $stringToSign = implode("\n", $stringToSign); + $signString = base64_encode(hash_hmac('sha256', $stringToSign, $this->_accountKey, true)); + + // Sign request + $headers[Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PREFIX_STORAGE_HEADER . 'date'] = $requestDate; + $headers['Authorization'] = 'SharedKeyLite ' . $this->_accountName . ':' . $signString; + + // Return headers + return $headers; + } + + /** + * Prepare query string for signing + * + * @param string $value Original query string + * @return string Query string for signing + */ + protected function _prepareQueryStringForSigning($value) + { + // Check for 'comp=' + if (strpos($value, 'comp=') === false) { + // If not found, no query string needed + return ''; + } else { + // If found, make sure it is the only parameter being used + if (strlen($value) > 0 && strpos($value, '?') === 0) { + $value = substr($value, 1); + } + + // Split parts + $queryParts = explode('&', $value); + foreach ($queryParts as $queryPart) { + if (strpos($queryPart, 'comp=') !== false) { + return '?' . $queryPart; + } + } + + // Should never happen... + return ''; + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDataSources.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDataSources.php new file mode 100755 index 000000000..9858afce1 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDataSources.php @@ -0,0 +1,81 @@ +_data = array( + 'overallquotainmb' => $overallQuotaInMB, + 'logs' => new Zend_Service_WindowsAzure_Diagnostics_ConfigurationLogs(), + 'diagnosticinfrastructurelogs' => new Zend_Service_WindowsAzure_Diagnostics_ConfigurationDiagnosticInfrastructureLogs(), + 'performancecounters' => new Zend_Service_WindowsAzure_Diagnostics_ConfigurationPerformanceCounters(), + 'windowseventlog' => new Zend_Service_WindowsAzure_Diagnostics_ConfigurationWindowsEventLog(), + 'directories' => new Zend_Service_WindowsAzure_Diagnostics_ConfigurationDirectories() + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDiagnosticInfrastructureLogs.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDiagnosticInfrastructureLogs.php new file mode 100755 index 000000000..ddb65663a --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDiagnosticInfrastructureLogs.php @@ -0,0 +1,53 @@ +_data = array( + 'bufferquotainmb' => $bufferQuotaInMB, + 'scheduledtransferperiodinminutes' => $scheduledTransferPeriodInMinutes, + 'scheduledtransferloglevelfilter' => $scheduledTransferLogLevelFilter + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDirectories.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDirectories.php new file mode 100755 index 000000000..8ae466482 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationDirectories.php @@ -0,0 +1,85 @@ +_data = array( + 'bufferquotainmb' => $bufferQuotaInMB, + 'scheduledtransferperiodinminutes' => $scheduledTransferPeriodInMinutes, + 'subscriptions' => array() + ); + } + + /** + * Add subscription + * + * @param string $path Path + * @param string $container Container + * @param int $directoryQuotaInMB Directory quota in MB + */ + public function addSubscription($path, $container, $directoryQuotaInMB = 1024) + { + $this->_data['subscriptions'][$path] = new Zend_Service_WindowsAzure_Diagnostics_DirectoryConfigurationSubscription($path, $container, $directoryQuotaInMB); + } + + /** + * Remove subscription + * + * @param string $path Path + */ + public function removeSubscription($path) + { + if (isset($this->_data['subscriptions'][$path])) { + unset($this->_data['subscriptions'][$path]); + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php new file mode 100755 index 000000000..8056cd3c3 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationInstance.php @@ -0,0 +1,220 @@ +_data = array( + 'datasources' => new Zend_Service_WindowsAzure_Diagnostics_ConfigurationDataSources() + ); + } + + /** + * Load configuration XML + * + * @param string $configurationXml Configuration XML + */ + public function loadXml($configurationXml) + { + // Convert to SimpleXMLElement + $configurationXml = Zend_Xml_Security::scan($configurationXml); + + // Assign general settings + $this->DataSources->OverallQuotaInMB = (int)$configurationXml->DataSources->OverallQuotaInMB; + + // Assign Logs settings + $this->DataSources->Logs->BufferQuotaInMB = (int)$configurationXml->DataSources->Logs->BufferQuotaInMB; + $this->DataSources->Logs->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->Logs->ScheduledTransferPeriodInMinutes; + $this->DataSources->Logs->ScheduledTransferLogLevelFilter = (string)$configurationXml->DataSources->Logs->ScheduledTransferLogLevelFilter; + + // Assign DiagnosticInfrastructureLogs settings + $this->DataSources->DiagnosticInfrastructureLogs->BufferQuotaInMB = (int)$configurationXml->DataSources->DiagnosticInfrastructureLogs->BufferQuotaInMB; + $this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferPeriodInMinutes; + $this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferLogLevelFilter = (string)$configurationXml->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferLogLevelFilter; + + // Assign PerformanceCounters settings + $this->DataSources->PerformanceCounters->BufferQuotaInMB = (int)$configurationXml->DataSources->PerformanceCounters->BufferQuotaInMB; + $this->DataSources->PerformanceCounters->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->PerformanceCounters->ScheduledTransferPeriodInMinutes; + if ($configurationXml->DataSources->PerformanceCounters->Subscriptions + && $configurationXml->DataSources->PerformanceCounters->Subscriptions->PerformanceCounterConfiguration) { + $subscriptions = $configurationXml->DataSources->PerformanceCounters->Subscriptions; + if (count($subscriptions->PerformanceCounterConfiguration) > 1) { + $subscriptions = $subscriptions->PerformanceCounterConfiguration; + } else { + $subscriptions = array($subscriptions->PerformanceCounterConfiguration); + } + foreach ($subscriptions as $subscription) { + $this->DataSources->PerformanceCounters->addSubscription((string)$subscription->CounterSpecifier, (int)$subscription->SampleRateInSeconds); + } + } + + // Assign WindowsEventLog settings + $this->DataSources->WindowsEventLog->BufferQuotaInMB = (int)$configurationXml->DataSources->WindowsEventLog->BufferQuotaInMB; + $this->DataSources->WindowsEventLog->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->WindowsEventLog->ScheduledTransferPeriodInMinutes; + $this->DataSources->WindowsEventLog->ScheduledTransferLogLevelFilter = (string)$configurationXml->DataSources->WindowsEventLog->ScheduledTransferLogLevelFilter; + if ($configurationXml->DataSources->WindowsEventLog->Subscriptions + && $configurationXml->DataSources->WindowsEventLog->Subscriptions->string) { + $subscriptions = $configurationXml->DataSources->WindowsEventLog->Subscriptions; + if (count($subscriptions->string) > 1) { + $subscriptions = $subscriptions->string; + } else { + $subscriptions = array($subscriptions->string); + } + foreach ($subscriptions as $subscription) { + $this->DataSources->WindowsEventLog->addSubscription((string)$subscription); + } + } + + // Assign Directories settings + $this->DataSources->Directories->BufferQuotaInMB = (int)$configurationXml->DataSources->Directories->BufferQuotaInMB; + $this->DataSources->Directories->ScheduledTransferPeriodInMinutes = (int)$configurationXml->DataSources->Directories->ScheduledTransferPeriodInMinutes; + + if ($configurationXml->DataSources->Directories->Subscriptions + && $configurationXml->DataSources->Directories->Subscriptions->DirectoryConfiguration) { + $subscriptions = $configurationXml->DataSources->Directories->Subscriptions; + if (count($subscriptions->DirectoryConfiguration) > 1) { + $subscriptions = $subscriptions->DirectoryConfiguration; + } else { + $subscriptions = array($subscriptions->DirectoryConfiguration); + } + foreach ($subscriptions as $subscription) { + $this->DataSources->Directories->addSubscription((string)$subscription->Path, (string)$subscription->Container, (int)$subscription->DirectoryQuotaInMB); + } + } + } + + /** + * Create configuration XML + * + * @return string + */ + public function toXml() + { + // Return value + $returnValue = array(); + + // Build XML + $returnValue[] = ''; + $returnValue[] = ''; + + // Add data sources + $returnValue[] = ' '; + + $returnValue[] = ' ' . $this->DataSources->OverallQuotaInMB . ''; + + $returnValue[] = ' '; + $returnValue[] = ' ' . $this->DataSources->Logs->BufferQuotaInMB . ''; + $returnValue[] = ' ' . $this->DataSources->Logs->ScheduledTransferPeriodInMinutes . ''; + $returnValue[] = ' ' . $this->DataSources->Logs->ScheduledTransferLogLevelFilter . ''; + $returnValue[] = ' '; + + $returnValue[] = ' '; + $returnValue[] = ' ' . $this->DataSources->DiagnosticInfrastructureLogs->BufferQuotaInMB . ''; + $returnValue[] = ' ' . $this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferPeriodInMinutes . ''; + $returnValue[] = ' ' . $this->DataSources->DiagnosticInfrastructureLogs->ScheduledTransferLogLevelFilter . ''; + $returnValue[] = ' '; + + $returnValue[] = ' '; + $returnValue[] = ' ' . $this->DataSources->PerformanceCounters->BufferQuotaInMB . ''; + $returnValue[] = ' ' . $this->DataSources->PerformanceCounters->ScheduledTransferPeriodInMinutes . ''; + if (count($this->DataSources->PerformanceCounters->Subscriptions) == 0) { + $returnValue[] = ' '; + } else { + $returnValue[] = ' '; + foreach ($this->DataSources->PerformanceCounters->Subscriptions as $subscription) { + $returnValue[] = ' '; + $returnValue[] = ' ' . $subscription->CounterSpecifier . ''; + $returnValue[] = ' ' . $subscription->SampleRateInSeconds . ''; + $returnValue[] = ' '; + } + $returnValue[] = ' '; + } + $returnValue[] = ' '; + + $returnValue[] = ' '; + $returnValue[] = ' ' . $this->DataSources->WindowsEventLog->BufferQuotaInMB . ''; + $returnValue[] = ' ' . $this->DataSources->WindowsEventLog->ScheduledTransferPeriodInMinutes . ''; + if (count($this->DataSources->WindowsEventLog->Subscriptions) == 0) { + $returnValue[] = ' '; + } else { + $returnValue[] = ' '; + foreach ($this->DataSources->WindowsEventLog->Subscriptions as $subscription) { + $returnValue[] = ' ' . $subscription . ''; + } + $returnValue[] = ' '; + } + $returnValue[] = ' ' . $this->DataSources->WindowsEventLog->ScheduledTransferLogLevelFilter . ''; + $returnValue[] = ' '; + + $returnValue[] = ' '; + $returnValue[] = ' ' . $this->DataSources->Directories->BufferQuotaInMB . ''; + $returnValue[] = ' ' . $this->DataSources->Directories->ScheduledTransferPeriodInMinutes . ''; + if (count($this->DataSources->Directories->Subscriptions) == 0) { + $returnValue[] = ' '; + } else { + $returnValue[] = ' '; + foreach ($this->DataSources->Directories->Subscriptions as $subscription) { + $returnValue[] = ' '; + $returnValue[] = ' ' . $subscription->Path . ''; + $returnValue[] = ' ' . $subscription->Container . ''; + $returnValue[] = ' ' . $subscription->DirectoryQuotaInMB . ''; + $returnValue[] = ' '; + } + $returnValue[] = ' '; + } + $returnValue[] = ' '; + + $returnValue[] = ' '; + $returnValue[] = ' false'; + $returnValue[] = ''; + + // Return + return implode("\r\n", $returnValue); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationLogs.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationLogs.php new file mode 100755 index 000000000..822ad78b4 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationLogs.php @@ -0,0 +1,62 @@ +_data = array( + 'bufferquotainmb' => $bufferQuotaInMB, + 'scheduledtransferperiodinminutes' => $scheduledTransferPeriodInMinutes, + 'scheduledtransferloglevelfilter' => $scheduledTransferLogLevelFilter + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationObjectBaseAbstract.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationObjectBaseAbstract.php new file mode 100755 index 000000000..211c00585 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationObjectBaseAbstract.php @@ -0,0 +1,66 @@ +_data)) { + $this->_data[strtolower($name)] = $value; + return; + } + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception("Unknown property: " . $name); + } + + /** + * Magic overload for getting properties + * + * @param string $name Name of the property + */ + public function __get($name) { + if (array_key_exists(strtolower($name), $this->_data)) { + return $this->_data[strtolower($name)]; + } + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception("Unknown property: " . $name); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationPerformanceCounters.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationPerformanceCounters.php new file mode 100755 index 000000000..5346f5d6e --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationPerformanceCounters.php @@ -0,0 +1,85 @@ +_data = array( + 'bufferquotainmb' => $bufferQuotaInMB, + 'scheduledtransferperiodinminutes' => $scheduledTransferPeriodInMinutes, + 'subscriptions' => array() + ); + } + + /** + * Add subscription + * + * @param string $counterSpecifier Counter specifier + * @param int $sampleRateInSeconds Sample rate in seconds + */ + public function addSubscription($counterSpecifier, $sampleRateInSeconds = 1) + { + + $this->_data['subscriptions'][$counterSpecifier] = new Zend_Service_WindowsAzure_Diagnostics_PerformanceCounterSubscription($counterSpecifier, $sampleRateInSeconds); + } + + /** + * Remove subscription + * + * @param string $counterSpecifier Counter specifier + */ + public function removeSubscription($counterSpecifier) + { + if (isset($this->_data['subscriptions'][$counterSpecifier])) { + unset($this->_data['subscriptions'][$counterSpecifier]); + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationWindowsEventLog.php b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationWindowsEventLog.php new file mode 100755 index 000000000..f8a069496 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/ConfigurationWindowsEventLog.php @@ -0,0 +1,76 @@ +_data = array( + 'bufferquotainmb' => $bufferQuotaInMB, + 'scheduledtransferperiodinminutes' => $scheduledTransferPeriodInMinutes, + 'scheduledtransferloglevelfilter' => $scheduledTransferLogLevelFilter, + 'subscriptions' => array() + ); + } + + /** + * Add subscription + * + * @param string $filter Event log filter + */ + public function addSubscription($filter) + { + $this->_data['subscriptions'][$filter] = $filter; + } + + /** + * Remove subscription + * + * @param string $filter Event log filter + */ + public function removeSubscription($filter) + { + if (isset($this->_data['subscriptions'][$filter])) { + unset($this->_data['subscriptions'][$filter]); + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/DirectoryConfigurationSubscription.php b/library/Zend/Service/WindowsAzure/Diagnostics/DirectoryConfigurationSubscription.php new file mode 100755 index 000000000..1f62028d7 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/DirectoryConfigurationSubscription.php @@ -0,0 +1,53 @@ +_data = array( + 'path' => $path, + 'container' => $container, + 'directoryquotainmb' => $directoryQuotaInMB + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/Exception.php b/library/Zend/Service/WindowsAzure/Diagnostics/Exception.php new file mode 100755 index 000000000..bb3508541 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/Exception.php @@ -0,0 +1,35 @@ +_blobStorageClient = $blobStorageClient; + $this->_controlContainer = $controlContainer; + + $this->_ensureStorageInitialized(); + } + + /** + * Ensure storage has been initialized + */ + protected function _ensureStorageInitialized() + { + if (!$this->_blobStorageClient->containerExists($this->_controlContainer)) { + $this->_blobStorageClient->createContainer($this->_controlContainer); + } + } + + /** + * Get default configuration values + * + * @return Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance + */ + public function getDefaultConfiguration() + { + return new Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance(); + } + + /** + * Checks if a configuration for a specific role instance exists. + * + * @param string $roleInstance Role instance name, can be found in $_SERVER['RdRoleId'] when hosted on Windows Azure. + * @return boolean + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + public function configurationForRoleInstanceExists($roleInstance = null) + { + if (is_null($roleInstance)) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Role instance should be specified. Try reading $_SERVER[\'RdRoleId\'] for this information if the application is hosted on Windows Azure Fabric or Development Fabric.'); + } + + return $this->_blobStorageClient->blobExists($this->_controlContainer, $roleInstance); + } + + /** + * Checks if a configuration for current role instance exists. Only works on Development Fabric or Windows Azure Fabric. + * + * @return boolean + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + public function configurationForCurrentRoleInstanceExists() + { + if (!isset($_SERVER['RdRoleId'])) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.'); + } + + return $this->_blobStorageClient->blobExists($this->_controlContainer, $this->_getCurrentRoleInstanceId()); + } + + /** + * Get configuration for current role instance. Only works on Development Fabric or Windows Azure Fabric. + * + * @return Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + public function getConfigurationForCurrentRoleInstance() + { + if (!isset($_SERVER['RdRoleId'])) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.'); + } + return $this->getConfigurationForRoleInstance($this->_getCurrentRoleInstanceId()); + } + + /** + * Get the current role instance ID. Only works on Development Fabric or Windows Azure Fabric. + * + * @return string + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + protected function _getCurrentRoleInstanceId() + { + if (!isset($_SERVER['RdRoleId'])) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.'); + } + + if (strpos($_SERVER['RdRoleId'], 'deployment(') === false) { + return $_SERVER['RdRoleId']; + } else { + $roleIdParts = explode('.', $_SERVER['RdRoleId']); + return $roleIdParts[0] . '/' . $roleIdParts[2] . '/' . $_SERVER['RdRoleId']; + } + + if (!isset($_SERVER['RoleDeploymentID']) && !isset($_SERVER['RoleInstanceID']) && !isset($_SERVER['RoleName'])) { + throw new Exception('Server variables \'RoleDeploymentID\', \'RoleInstanceID\' and \'RoleName\' are unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.'); + } + + if (strpos($_SERVER['RdRoleId'], 'deployment(') === false) { + return $_SERVER['RdRoleId']; + } else { + return $_SERVER['RoleDeploymentID'] . '/' . $_SERVER['RoleInstanceID'] . '/' . $_SERVER['RoleName']; + } + } + + /** + * Set configuration for current role instance. Only works on Development Fabric or Windows Azure Fabric. + * + * @param Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration Configuration to apply + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + public function setConfigurationForCurrentRoleInstance(Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration) + { + if (!isset($_SERVER['RdRoleId'])) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Server variable \'RdRoleId\' is unknown. Please verify the application is running in Development Fabric or Windows Azure Fabric.'); + } + + $this->setConfigurationForRoleInstance($this->_getCurrentRoleInstanceId(), $configuration); + } + + /** + * Get configuration for a specific role instance + * + * @param string $roleInstance Role instance name, can be found in $_SERVER['RdRoleId'] when hosted on Windows Azure. + * @return Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + public function getConfigurationForRoleInstance($roleInstance = null) + { + if (is_null($roleInstance)) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Role instance should be specified. Try reading $_SERVER[\'RdRoleId\'] for this information if the application is hosted on Windows Azure Fabric or Development Fabric.'); + } + + + + if ($this->_blobStorageClient->blobExists($this->_controlContainer, $roleInstance)) { + $configurationInstance = new Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance(); + $configurationInstance->loadXml( $this->_blobStorageClient->getBlobData($this->_controlContainer, $roleInstance) ); + return $configurationInstance; + } + + return new Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance(); + } + + /** + * Set configuration for a specific role instance + * + * @param string $roleInstance Role instance name, can be found in $_SERVER['RdRoleId'] when hosted on Windows Azure. + * @param Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration Configuration to apply + * @throws Zend_Service_WindowsAzure_Diagnostics_Exception + */ + public function setConfigurationForRoleInstance($roleInstance = null, Zend_Service_WindowsAzure_Diagnostics_ConfigurationInstance $configuration) + { + if (is_null($roleInstance)) { + require_once 'Zend/Service/WindowsAzure/Diagnostics/Exception.php'; + throw new Zend_Service_WindowsAzure_Diagnostics_Exception('Role instance should be specified. Try reading $_SERVER[\'RdRoleId\'] for this information if the application is hosted on Windows Azure Fabric or Development Fabric.'); + } + + $this->_blobStorageClient->putBlobData($this->_controlContainer, $roleInstance, $configuration->toXml(), array(), null, array('Content-Type' => 'text/xml')); + } +} diff --git a/library/Zend/Service/WindowsAzure/Diagnostics/PerformanceCounterSubscription.php b/library/Zend/Service/WindowsAzure/Diagnostics/PerformanceCounterSubscription.php new file mode 100755 index 000000000..f9798f3e0 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Diagnostics/PerformanceCounterSubscription.php @@ -0,0 +1,54 @@ +_data = array( + 'counterspecifier' => $counterSpecifier, + 'samplerateinseconds' => $sampleRateInSeconds + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Exception.php b/library/Zend/Service/WindowsAzure/Exception.php new file mode 100755 index 000000000..cab110bfe --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Exception.php @@ -0,0 +1,35 @@ + $value) { + if ((is_object($value) && !method_exists($value, '__toString')) + || is_array($value) + ) { + $value = gettype($value); + } + $logEntity->{$key} = $value; + } + + return $logEntity; + } +} diff --git a/library/Zend/Service/WindowsAzure/Log/Writer/WindowsAzure.php b/library/Zend/Service/WindowsAzure/Log/Writer/WindowsAzure.php new file mode 100755 index 000000000..00ba7ba97 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Log/Writer/WindowsAzure.php @@ -0,0 +1,196 @@ +_tableStorageConnection = $tableStorageConnection; + $this->_tableName = $tableName; + + // create the logging table if it does not exist. It will add some overhead, so it's optional + if ($createTable) { + $this->_tableStorageConnection->createTableIfNotExists( + $this->_tableName + ); + } + + // keep messages to be logged in an internal buffer and only send them over the wire when + // the script execution ends + if ($bufferMessages) { + $this->_bufferMessages = $bufferMessages; + } + + $this->_formatter = + new Zend_Service_WindowsAzure_Log_Formatter_WindowsAzure(); + } + + /** + * If the log messages have been stored in the internal buffer, just send them + * to table storage. + */ + public function shutdown() + { + parent::shutdown(); + if ($this->_bufferMessages) { + $this->_tableStorageConnection->startBatch(); + foreach ($this->_messageBuffer as $logEntity) { + $this->_tableStorageConnection->insertEntity( + $this->_tableName, $logEntity + ); + } + $this->_tableStorageConnection->commit(); + } + } + + /** + * Create a new instance of Zend_Service_Log_Writer_WindowsAzure + * + * @param array $config + * @return Zend_Service_Log_Writer_WindowsAzure + * @throws Zend_Service_Log_Exception + */ + static public function factory($config) + { + $config = self::_parseConfig($config); + $config = array_merge( + array( + 'connection' => null, + 'tableName' => null, + 'createTable' => true, + ), $config + ); + + return new self( + $config['connection'], + $config['tableName'], + $config['createTable'] + ); + } + + /** + * The only formatter accepted is already loaded in the constructor + * + * @todo enable custom formatters using the WindowsAzure_Storage_DynamicTableEntity class + */ + public function setFormatter( + Zend_Service_Log_Formatter_Interface $formatter + ) + { + require_once 'Zend/Service/Log/Exception.php'; + throw new Zend_Service_Log_Exception( + get_class($this) . ' does not support formatting'); + } + + /** + * Write a message to the table storage. If buffering is activated, then messages will just be + * added to an internal buffer. + * + * @param array $event + * @return void + * @todo format the event using a formatted, not in this method + */ + protected function _write($event) + { + $logEntity = $this->_formatter->format($event); + + if ($this->_bufferMessages) { + $this->_messageBuffer[] = $logEntity; + } else { + $this->_tableStorageConnection->insertEntity( + $this->_tableName, $logEntity + ); + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/AffinityGroupInstance.php b/library/Zend/Service/WindowsAzure/Management/AffinityGroupInstance.php new file mode 100755 index 000000000..a5ec8dce1 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/AffinityGroupInstance.php @@ -0,0 +1,66 @@ +_data = array( + 'name' => $name, + 'label' => base64_decode($label), + 'description' => $description, + 'location' => $location, + 'hostedservices' => $hostedServices, + 'storageservices' => $storageServices + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/CertificateInstance.php b/library/Zend/Service/WindowsAzure/Management/CertificateInstance.php new file mode 100755 index 000000000..584b44978 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/CertificateInstance.php @@ -0,0 +1,60 @@ +_data = array( + 'certificateurl' => $certificateUrl, + 'thumbprint' => $thumbprint, + 'thumbprintalgorithm' => $thumbprintAlgorithm, + 'data' => base64_decode($data) + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/Client.php b/library/Zend/Service/WindowsAzure/Management/Client.php new file mode 100755 index 000000000..69bd9e962 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/Client.php @@ -0,0 +1,2426 @@ +_subscriptionId = $subscriptionId; + $this->_certificatePath = $certificatePath; + $this->_certificatePassphrase = $certificatePassphrase; + + $this->_retryPolicy = $retryPolicy; + if (is_null($this->_retryPolicy)) { + $this->_retryPolicy = Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract::noRetry(); + } + + // Setup default Zend_Http_Client channel + $options = array( + 'adapter' => 'Zend_Http_Client_Adapter_Socket', + 'ssltransport' => 'ssl', + 'sslcert' => $this->_certificatePath, + 'sslpassphrase' => $this->_certificatePassphrase, + 'sslusecontext' => true, + ); + if (function_exists('curl_init')) { + // Set cURL options if cURL is used afterwards + $options['curloptions'] = array( + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_TIMEOUT => 120, + ); + } + $this->_httpClientChannel = new Zend_Http_Client(null, $options); + } + + /** + * Set the HTTP client channel to use + * + * @param Zend_Http_Client_Adapter_Interface|string $adapterInstance Adapter instance or adapter class name. + */ + public function setHttpClientChannel($adapterInstance = 'Zend_Http_Client_Adapter_Socket') + { + $this->_httpClientChannel->setAdapter($adapterInstance); + } + + /** + * Retrieve HTTP client channel + * + * @return Zend_Http_Client_Adapter_Interface + */ + public function getHttpClientChannel() + { + return $this->_httpClientChannel; + } + + /** + * Returns the Windows Azure subscription ID + * + * @return string + */ + public function getSubscriptionId() + { + return $this->_subscriptionId; + } + + /** + * Returns the last request ID. + * + * @return string + */ + public function getLastRequestId() + { + return $this->_lastRequestId; + } + + /** + * Get base URL for creating requests + * + * @return string + */ + public function getBaseUrl() + { + return self::URL_MANAGEMENT . '/' . $this->_subscriptionId; + } + + /** + * Perform request using Zend_Http_Client channel + * + * @param string $path Path + * @param string $queryString Query string + * @param string $httpVerb HTTP verb the request will use + * @param array $headers x-ms headers to add + * @param mixed $rawData Optional RAW HTTP data to be sent over the wire + * @return Zend_Http_Response + */ + protected function _performRequest( + $path = '/', + $queryString = '', + $httpVerb = Zend_Http_Client::GET, + $headers = array(), + $rawData = null + ) { + // Clean path + if (strpos($path, '/') !== 0) { + $path = '/' . $path; + } + + // Clean headers + if (is_null($headers)) { + $headers = array(); + } + + // Ensure cUrl will also work correctly: + // - disable Content-Type if required + // - disable Expect: 100 Continue + if (!isset($headers["Content-Type"])) { + $headers["Content-Type"] = ''; + } + //$headers["Expect"] = ''; + + // Add version header + $headers['x-ms-version'] = $this->_apiVersion; + + // URL encoding + $path = self::urlencode($path); + $queryString = self::urlencode($queryString); + + // Generate URL and sign request + $requestUrl = $this->getBaseUrl() . $path . $queryString; + $requestHeaders = $headers; + + // Prepare request + $this->_httpClientChannel->resetParameters(true); + $this->_httpClientChannel->setUri($requestUrl); + $this->_httpClientChannel->setHeaders($requestHeaders); + $this->_httpClientChannel->setRawData($rawData); + + // Execute request + $response = $this->_retryPolicy->execute( + array($this->_httpClientChannel, 'request'), + array($httpVerb) + ); + + // Store request id + $this->_lastRequestId = $response->getHeader('x-ms-request-id'); + + return $response; + } + + /** + * Parse result from Zend_Http_Response + * + * @param Zend_Http_Response $response Response from HTTP call + * @return object + * @throws Zend_Service_WindowsAzure_Exception + */ + protected function _parseResponse(Zend_Http_Response $response = null) + { + if (is_null($response)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Response should not be null.'); + } + + $xml = Zend_Xml_Security::scan($response->getBody()); + + if ($xml !== false) { + // Fetch all namespaces + $namespaces = array_merge($xml->getNamespaces(true), $xml->getDocNamespaces(true)); + + // Register all namespace prefixes + foreach ($namespaces as $prefix => $ns) { + if ($prefix != '') { + $xml->registerXPathNamespace($prefix, $ns); + } + } + } + + return $xml; + } + + /** + * URL encode function + * + * @param string $value Value to encode + * @return string Encoded value + */ + public static function urlencode($value) + { + return str_replace(' ', '%20', $value); + } + + /** + * Builds a query string from an array of elements + * + * @param array Array of elements + * @return string Assembled query string + */ + public static function createQueryStringFromArray($queryString) + { + return count($queryString) > 0 ? '?' . implode('&', $queryString) : ''; + } + + /** + * Get error message from Zend_Http_Response + * + * @param Zend_Http_Response $response Repsonse + * @param string $alternativeError Alternative error message + * @return string + */ + protected function _getErrorMessage(Zend_Http_Response $response, $alternativeError = 'Unknown error.') + { + $response = $this->_parseResponse($response); + if ($response && $response->Message) { + return (string)$response->Message; + } else { + return $alternativeError; + } + } + + /** + * The Get Operation Status operation returns the status of the specified operation. + * After calling an asynchronous operation, you can call Get Operation Status to + * determine whether the operation has succeed, failed, or is still in progress. + * + * @param string $requestId The request ID. If omitted, the last request ID will be used. + * @return Zend_Service_WindowsAzure_Management_OperationStatusInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getOperationStatus($requestId = '') + { + if ($requestId == '') { + $requestId = $this->getLastRequestId(); + } + + $response = $this->_performRequest(self::OP_OPERATIONS . '/' . $requestId); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!is_null($result)) { + return new Zend_Service_WindowsAzure_Management_OperationStatusInstance( + (string)$result->ID, + (string)$result->Status, + ($result->Error ? (string)$result->Error->Code : ''), + ($result->Error ? (string)$result->Error->Message : '') + ); + } + return null; + } else { + require_once 'Zend/Service/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + + + /** + * The List Subscription Operations operation returns a list of create, update, + * and delete operations that were performed on a subscription during the specified timeframe. + * Documentation on the parameters can be found at http://msdn.microsoft.com/en-us/library/gg715318.aspx. + * + * @param string $startTime The start of the timeframe to begin listing subscription operations in UTC format. This parameter and the $endTime parameter indicate the timeframe to retrieve subscription operations. This parameter cannot indicate a start date of more than 90 days in the past. + * @param string $endTime The end of the timeframe to begin listing subscription operations in UTC format. This parameter and the $startTime parameter indicate the timeframe to retrieve subscription operations. + * @param string $objectIdFilter Returns subscription operations only for the specified object type and object ID. + * @param string $operationResultFilter Returns subscription operations only for the specified result status, either Succeeded, Failed, or InProgress. + * @param string $continuationToken Internal usage. + * @return array Array of Zend_Service_WindowsAzure_Management_SubscriptionOperationInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listSubscriptionOperations($startTime, $endTime, $objectIdFilter = null, $operationResultFilter = null, $continuationToken = null) + { + if ($startTime == '' || is_null($startTime)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Start time should be specified.'); + } + if ($endTime == '' || is_null($endTime)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('End time should be specified.'); + } + if ($operationResultFilter != '' && !is_null($operationResultFilter)) { + $operationResultFilter = strtolower($operationResultFilter); + if ($operationResultFilter != 'succeeded' && $operationResultFilter != 'failed' && $operationResultFilter != 'inprogress') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('OperationResultFilter should be succeeded|failed|inprogress.'); + } + } + + $parameters = array(); + $parameters[] = 'StartTime=' . $startTime; + $parameters[] = 'EndTime=' . $endTime; + if ($objectIdFilter != '' && !is_null($objectIdFilter)) { + $parameters[] = 'ObjectIdFilter=' . $objectIdFilter; + } + if ($operationResultFilter != '' && !is_null($operationResultFilter)) { + $parameters[] = 'OperationResultFilter=' . ucfirst($operationResultFilter); + } + if ($continuationToken != '' && !is_null($continuationToken)) { + $parameters[] = 'ContinuationToken=' . $continuationToken; + } + + $response = $this->_performRequest(self::OP_OPERATIONS, '?' . implode('&', $parameters)); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + $namespaces = $result->getDocNamespaces(); + $result->registerXPathNamespace('__empty_ns', $namespaces['']); + + $xmlOperations = $result->xpath('//__empty_ns:SubscriptionOperation'); + + // Create return value + $returnValue = array(); + foreach ($xmlOperations as $xmlOperation) { + // Create operation instance + $operation = new Zend_Service_WindowsAzure_Management_SubscriptionOperationInstance( + $xmlOperation->OperationId, + $xmlOperation->OperationObjectId, + $xmlOperation->OperationName, + array(), + (array)$xmlOperation->OperationCaller, + (array)$xmlOperation->OperationStatus + ); + + // Parse parameters + $xmlOperation->registerXPathNamespace('__empty_ns', $namespaces['']); + $xmlParameters = $xmlOperation->xpath('.//__empty_ns:OperationParameter'); + foreach ($xmlParameters as $xmlParameter) { + $xmlParameterDetails = $xmlParameter->children('http://schemas.datacontract.org/2004/07/Microsoft.Samples.WindowsAzure.ServiceManagement'); + $operation->addOperationParameter((string)$xmlParameterDetails->Name, (string)$xmlParameterDetails->Value); + } + + // Add to result + $returnValue[] = $operation; + } + + // More data? + if (!is_null($result->ContinuationToken) && $result->ContinuationToken != '') { + $returnValue = array_merge($returnValue, $this->listSubscriptionOperations($startTime, $endTime, $objectIdFilter, $operationResultFilter, (string)$result->ContinuationToken)); + } + + // Return + return $returnValue; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Wait for an operation to complete + * + * @param string $requestId The request ID. If omitted, the last request ID will be used. + * @param int $sleepInterval Sleep interval in milliseconds. + * @return Zend_Service_WindowsAzure_Management_OperationStatusInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function waitForOperation($requestId = '', $sleepInterval = 250) + { + if ($requestId == '') { + $requestId = $this->getLastRequestId(); + } + if ($requestId == '' || is_null($requestId)) { + return null; + } + + $status = $this->getOperationStatus($requestId); + while ($status->Status == 'InProgress') { + $status = $this->getOperationStatus($requestId); + usleep($sleepInterval); + } + + return $status; + } + + /** + * Creates a new Zend_Service_WindowsAzure_Storage_Blob instance for the current account + * + * @param string $serviceName the service name to create a storage client for. + * @param Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy Retry policy to use when making requests + * @return Zend_Service_WindowsAzure_Storage_Blob + */ + public function createBlobClientForService($serviceName, Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy = null) + { + if ($serviceName == '' || is_null($serviceName)) { + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $storageKeys = $this->getStorageAccountKeys($serviceName); + + + + return new Zend_Service_WindowsAzure_Storage_Blob( + Zend_Service_WindowsAzure_Storage::URL_CLOUD_BLOB, + $serviceName, + $storageKeys[0], + false, + $retryPolicy + ); + } + + /** + * Creates a new Zend_Service_WindowsAzure_Storage_Table instance for the current account + * + * @param string $serviceName the service name to create a storage client for. + * @param Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy Retry policy to use when making requests + * @return Zend_Service_WindowsAzure_Storage_Table + */ + public function createTableClientForService($serviceName, Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy = null) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $storageKeys = $this->getStorageAccountKeys($serviceName); + + return new Zend_Service_WindowsAzure_Storage_Table( + Zend_Service_WindowsAzure_Storage::URL_CLOUD_TABLE, + $serviceName, + $storageKeys[0], + false, + $retryPolicy + ); + } + + /** + * Creates a new Zend_Service_WindowsAzure_Storage_Queue instance for the current account + * + * @param string $serviceName the service name to create a storage client for. + * @param Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy Retry policy to use when making requests + * @return Zend_Service_WindowsAzure_Storage_Queue + */ + public function createQueueClientForService($serviceName, Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy = null) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $storageKeys = $this->getStorageAccountKeys($serviceName); + + require_once 'Zend/Service/WindowsAzure/Storage/Queue.php'; + + return new Zend_Service_WindowsAzure_Storage_Queue( + Zend_Service_WindowsAzure_Storage::URL_CLOUD_QUEUE, + $serviceName, + $storageKeys[0], + false, + $retryPolicy + ); + } + + /** + * The List Storage Accounts operation lists the storage accounts available under + * the current subscription. + * + * @return array An array of Zend_Service_WindowsAzure_Management_StorageServiceInstance + */ + public function listStorageAccounts() + { + $response = $this->_performRequest(self::OP_STORAGE_ACCOUNTS); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->StorageService) { + return array(); + } + if (count($result->StorageService) > 1) { + $xmlServices = $result->StorageService; + } else { + $xmlServices = array($result->StorageService); + } + + $services = array(); + if (!is_null($xmlServices)) { + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_StorageServiceInstance( + (string)$xmlServices[$i]->Url, + (string)$xmlServices[$i]->ServiceName + ); + } + } + return $services; + } else { + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Storage Account Properties operation returns the system properties for the + * specified storage account. These properties include: the address, description, and + * label of the storage account; and the name of the affinity group to which the service + * belongs, or its geo-location if it is not part of an affinity group. + * + * @param string $serviceName The name of your service. + * @return Zend_Service_WindowsAzure_Management_StorageServiceInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getStorageAccountProperties($serviceName) + { + if ($serviceName == '' || is_null($serviceName)) { + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $response = $this->_performRequest(self::OP_STORAGE_ACCOUNTS . '/' . $serviceName); + + if ($response->isSuccessful()) { + $xmlService = $this->_parseResponse($response); + + if (!is_null($xmlService)) { + require_once 'Zend/Service/WindowsAzure/Management/StorageServiceInstance.php'; + + return new Zend_Service_WindowsAzure_Management_StorageServiceInstance( + (string)$xmlService->Url, + (string)$xmlService->ServiceName, + (string)$xmlService->StorageServiceProperties->Description, + (string)$xmlService->StorageServiceProperties->AffinityGroup, + (string)$xmlService->StorageServiceProperties->Location, + (string)$xmlService->StorageServiceProperties->Label + ); + } + return null; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Storage Keys operation returns the primary + * and secondary access keys for the specified storage account. + * + * @param string $serviceName The name of your service. + * @return array An array of strings + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getStorageAccountKeys($serviceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $response = $this->_performRequest(self::OP_STORAGE_ACCOUNTS . '/' . $serviceName . '/keys'); + + if ($response->isSuccessful()) { + $xmlService = $this->_parseResponse($response); + + if (!is_null($xmlService)) { + return array( + (string)$xmlService->StorageServiceKeys->Primary, + (string)$xmlService->StorageServiceKeys->Secondary + ); + } + return array(); + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Regenerate Keys operation regenerates the primary + * or secondary access key for the specified storage account. + * + * @param string $serviceName The name of your service. + * @param string $key The key to regenerate (primary or secondary) + * @return array An array of strings + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function regenerateStorageAccountKey($serviceName, $key = 'primary') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $key = strtolower($key); + if ($key != 'primary' && $key != 'secondary') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Key identifier should be primary|secondary.'); + } + + $response = $this->_performRequest( + self::OP_STORAGE_ACCOUNTS . '/' . $serviceName . '/keys', '?action=regenerate', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml'), + ' + + ' . ucfirst($key) . ' + '); + + if ($response->isSuccessful()) { + $xmlService = $this->_parseResponse($response); + + if (!is_null($xmlService)) { + return array( + (string)$xmlService->StorageServiceKeys->Primary, + (string)$xmlService->StorageServiceKeys->Secondary + ); + } + return array(); + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The List Hosted Services operation lists the hosted services available + * under the current subscription. + * + * @return array An array of Zend_Service_WindowsAzure_Management_HostedServiceInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listHostedServices() + { + $response = $this->_performRequest(self::OP_HOSTED_SERVICES); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->HostedService) { + return array(); + } + if (count($result->HostedService) > 1) { + $xmlServices = $result->HostedService; + } else { + $xmlServices = array($result->HostedService); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_HostedServiceInstance( + (string)$xmlServices[$i]->Url, + (string)$xmlServices[$i]->ServiceName + ); + } + } + return $services; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Create Hosted Service operation creates a new hosted service in Windows Azure. + * + * @param string $serviceName A name for the hosted service that is unique to the subscription. + * @param string $label A label for the hosted service. The label may be up to 100 characters in length. + * @param string $description A description for the hosted service. The description may be up to 1024 characters in length. + * @param string $location Required if AffinityGroup is not specified. The location where the hosted service will be created. + * @param string $affinityGroup Required if Location is not specified. The name of an existing affinity group associated with this subscription. + */ + public function createHostedService($serviceName, $label, $description = '', $location = null, $affinityGroup = null) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + if (strlen($description) > 1024) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Description is too long. The maximum length is 1024 characters.'); + } + if ( (is_null($location) && is_null($affinityGroup)) || (!is_null($location) && !is_null($affinityGroup)) ) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Please specify a location -or- an affinity group for the service.'); + } + + $locationOrAffinityGroup = is_null($location) + ? '' . $affinityGroup . '' + : '' . $location . ''; + + $response = $this->_performRequest(self::OP_HOSTED_SERVICES, '', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $serviceName . '' . $description . '' . $locationOrAffinityGroup . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Update Hosted Service operation updates the label and/or the description for a hosted service in Windows Azure. + * + * @param string $serviceName A name for the hosted service that is unique to the subscription. + * @param string $label A label for the hosted service. The label may be up to 100 characters in length. + * @param string $description A description for the hosted service. The description may be up to 1024 characters in length. + */ + public function updateHostedService($serviceName, $label, $description = '') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + + $response = $this->_performRequest(self::OP_HOSTED_SERVICES . '/' . $serviceName, '', + Zend_Http_Client::PUT, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $description . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Delete Hosted Service operation deletes the specified hosted service in Windows Azure. + * + * @param string $serviceName A name for the hosted service that is unique to the subscription. + */ + public function deleteHostedService($serviceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $response = $this->_performRequest(self::OP_HOSTED_SERVICES . '/' . $serviceName, '', Zend_Http_Client::DELETE); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Hosted Service Properties operation retrieves system properties + * for the specified hosted service. These properties include the service + * name and service type; the name of the affinity group to which the service + * belongs, or its location if it is not part of an affinity group; and + * optionally, information on the service's deployments. + * + * @param string $serviceName The name of your service. + * @return Zend_Service_WindowsAzure_Management_HostedServiceInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getHostedServiceProperties($serviceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $response = $this->_performRequest(self::OP_HOSTED_SERVICES . '/' . $serviceName, '?embed-detail=true'); + + if ($response->isSuccessful()) { + $xmlService = $this->_parseResponse($response); + + if (!is_null($xmlService)) { + + $returnValue = new Zend_Service_WindowsAzure_Management_HostedServiceInstance( + (string)$xmlService->Url, + (string)$xmlService->ServiceName, + (string)$xmlService->HostedServiceProperties->Description, + (string)$xmlService->HostedServiceProperties->AffinityGroup, + (string)$xmlService->HostedServiceProperties->Location, + (string)$xmlService->HostedServiceProperties->Label + ); + + // Deployments + if (count($xmlService->Deployments->Deployment) > 1) { + $xmlServices = $xmlService->Deployments->Deployment; + } else { + $xmlServices = array($xmlService->Deployments->Deployment); + } + + $deployments = array(); + foreach ($xmlServices as $xmlDeployment) { + $deployments[] = $this->_convertXmlElementToDeploymentInstance($xmlDeployment); + } + $returnValue->Deployments = $deployments; + + return $returnValue; + } + return null; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Create Deployment operation uploads a new service package + * and creates a new deployment on staging or production. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string $name The name for the deployment. The deployment ID as listed on the Windows Azure management portal must be unique among other deployments for the hosted service. + * @param string $label A URL that refers to the location of the service package in the Blob service. The service package must be located in a storage account beneath the same subscription. + * @param string $packageUrl The service configuration file for the deployment. + * @param string $configuration A label for this deployment, up to 100 characters in length. + * @param boolean $startDeployment Indicates whether to start the deployment immediately after it is created. + * @param boolean $treatWarningsAsErrors Indicates whether to treat package validation warnings as errors. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function createDeployment($serviceName, $deploymentSlot, $name, $label, $packageUrl, $configuration, $startDeployment = false, $treatWarningsAsErrors = false) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + if ($name == '' || is_null($name)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Name should be specified.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + if ($packageUrl == '' || is_null($packageUrl)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Package URL should be specified.'); + } + if ($configuration == '' || is_null($configuration)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Configuration should be specified.'); + } + + if (@file_exists($configuration)) { + $configuration = utf8_decode(file_get_contents($configuration)); + } + + // Clean up the configuration + $conformingConfiguration = $this->_cleanConfiguration($configuration); + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + $response = $this->_performRequest($operationUrl, '', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $name . '' . $packageUrl . '' . base64_encode($conformingConfiguration) . '' . ($startDeployment ? 'true' : 'false') . '' . ($treatWarningsAsErrors ? 'true' : 'false') . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Deployment operation returns configuration information, status, + * and system properties for the specified deployment. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @return Zend_Service_WindowsAzure_Management_DeploymentInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getDeploymentBySlot($serviceName, $deploymentSlot) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + return $this->_getDeployment($operationUrl); + } + + /** + * The Get Deployment operation returns configuration information, status, + * and system properties for the specified deployment. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @return Zend_Service_WindowsAzure_Management_DeploymentInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getDeploymentByDeploymentId($serviceName, $deploymentId) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId; + return $this->_getDeployment($operationUrl); + } + + /** + * The Get Deployment operation returns configuration information, status, + * and system properties for the specified deployment. + * + * @param string $operationUrl The operation url + * @return Zend_Service_WindowsAzure_Management_DeploymentInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _getDeployment($operationUrl) + { + $response = $this->_performRequest($operationUrl); + + if ($response->isSuccessful()) { + $xmlService = $this->_parseResponse($response); + + return $this->_convertXmlElementToDeploymentInstance($xmlService); + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Swap Deployment operation initiates a virtual IP swap between + * the staging and production deployment environments for a service. + * If the service is currently running in the staging environment, + * it will be swapped to the production environment. If it is running + * in the production environment, it will be swapped to staging. + * + * @param string $serviceName The service name. + * @param string $productionDeploymentName The name of the production deployment. + * @param string $sourceDeploymentName The name of the source deployment. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function swapDeployment($serviceName, $productionDeploymentName, $sourceDeploymentName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($productionDeploymentName == '' || is_null($productionDeploymentName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Production Deployment ID should be specified.'); + } + if ($sourceDeploymentName == '' || is_null($sourceDeploymentName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Source Deployment ID should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName; + $response = $this->_performRequest($operationUrl, '', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $productionDeploymentName . '' . $sourceDeploymentName . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Delete Deployment operation deletes the specified deployment. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function deleteDeploymentBySlot($serviceName, $deploymentSlot) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + return $this->_deleteDeployment($operationUrl); + } + + /** + * The Delete Deployment operation deletes the specified deployment. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function deleteDeploymentByDeploymentId($serviceName, $deploymentId) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId; + return $this->_deleteDeployment($operationUrl); + } + + /** + * The Delete Deployment operation deletes the specified deployment. + * + * @param string $operationUrl The operation url + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _deleteDeployment($operationUrl) + { + $response = $this->_performRequest($operationUrl, '', Zend_Http_Client::DELETE); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Update Deployment Status operation initiates a change in deployment status. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string $status The deployment status (running|suspended) + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function updateDeploymentStatusBySlot($serviceName, $deploymentSlot, $status = 'running') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + $status = strtolower($status); + if ($status != 'running' && $status != 'suspended') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Status should be running|suspended.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + return $this->_updateDeploymentStatus($operationUrl, $status); + } + + /** + * The Update Deployment Status operation initiates a change in deployment status. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @param string $status The deployment status (running|suspended) + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function updateDeploymentStatusByDeploymentId($serviceName, $deploymentId, $status = 'running') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + $status = strtolower($status); + if ($status != 'running' && $status != 'suspended') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Status should be running|suspended.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId; + return $this->_updateDeploymentStatus($operationUrl, $status); + } + + /** + * The Update Deployment Status operation initiates a change in deployment status. + * + * @param string $operationUrl The operation url + * @param string $status The deployment status (running|suspended) + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _updateDeploymentStatus($operationUrl, $status = 'running') + { + $response = $this->_performRequest($operationUrl . '/', '?comp=status', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . ucfirst($status) . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Converts an XmlElement into a Zend_Service_WindowsAzure_Management_DeploymentInstance + * + * @param object $xmlService The XML Element + * @return Zend_Service_WindowsAzure_Management_DeploymentInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _convertXmlElementToDeploymentInstance($xmlService) + { + if (!is_null($xmlService)) { + + $returnValue = new Zend_Service_WindowsAzure_Management_DeploymentInstance( + (string)$xmlService->Name, + (string)$xmlService->DeploymentSlot, + (string)$xmlService->PrivateID, + (string)$xmlService->Label, + (string)$xmlService->Url, + (string)$xmlService->Configuration, + (string)$xmlService->Status, + (string)$xmlService->UpgradeStatus, + (string)$xmlService->UpgradeType, + (string)$xmlService->CurrentUpgradeDomainState, + (string)$xmlService->CurrentUpgradeDomain, + (string)$xmlService->UpgradeDomainCount + ); + + // Append role instances + if ($xmlService->RoleInstanceList && $xmlService->RoleInstanceList->RoleInstance) { + $xmlRoleInstances = $xmlService->RoleInstanceList->RoleInstance; + if (count($xmlService->RoleInstanceList->RoleInstance) == 1) { + $xmlRoleInstances = array($xmlService->RoleInstanceList->RoleInstance); + } + + $roleInstances = array(); + if (!is_null($xmlRoleInstances)) { + for ($i = 0; $i < count($xmlRoleInstances); $i++) { + $roleInstances[] = array( + 'rolename' => (string)$xmlRoleInstances[$i]->RoleName, + 'instancename' => (string)$xmlRoleInstances[$i]->InstanceName, + 'instancestatus' => (string)$xmlRoleInstances[$i]->InstanceStatus + ); + } + } + + $returnValue->RoleInstanceList = $roleInstances; + } + + // Append roles + if ($xmlService->RoleList && $xmlService->RoleList->Role) { + $xmlRoles = $xmlService->RoleList->Role; + if (count($xmlService->RoleList->Role) == 1) { + $xmlRoles = array($xmlService->RoleList->Role); + } + + $roles = array(); + if (!is_null($xmlRoles)) { + for ($i = 0; $i < count($xmlRoles); $i++) { + $roles[] = array( + 'rolename' => (string)$xmlRoles[$i]->RoleName, + 'osversion' => (!is_null($xmlRoles[$i]->OsVersion) ? (string)$xmlRoles[$i]->OsVersion : (string)$xmlRoles[$i]->OperatingSystemVersion) + ); + } + } + $returnValue->RoleList = $roles; + } + + return $returnValue; + } + return null; + } + + /** + * Updates a deployment's role instance count. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string|array $roleName The role name + * @param string|array $instanceCount The instance count + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function setInstanceCountBySlot($serviceName, $deploymentSlot, $roleName, $instanceCount) { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + if ($roleName == '' || is_null($roleName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Role name name should be specified.'); + } + + // Get configuration + $deployment = $this->getDeploymentBySlot($serviceName, $deploymentSlot); + $configuration = $deployment->Configuration; + $configuration = $this->_updateInstanceCountInConfiguration($roleName, $instanceCount, $configuration); + + // Update configuration + $this->configureDeploymentBySlot($serviceName, $deploymentSlot, $configuration); + } + + /** + * Updates a deployment's role instance count. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string|array $roleName The role name + * @param string|array $instanceCount The instance count + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function setInstanceCountByDeploymentId($serviceName, $deploymentId, $roleName, $instanceCount) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + if ($roleName == '' || is_null($roleName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Role name name should be specified.'); + } + + // Get configuration + $deployment = $this->getDeploymentByDeploymentId($serviceName, $deploymentId); + $configuration = $deployment->Configuration; + $configuration = $this->_updateInstanceCountInConfiguration($roleName, $instanceCount, $configuration); + + // Update configuration + $this->configureDeploymentByDeploymentId($serviceName, $deploymentId, $configuration); + } + + /** + * Updates instance count in configuration XML. + * + * @param string|array $roleName The role name + * @param string|array $instanceCount The instance count + * @param string $configuration XML configuration represented as a string + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _updateInstanceCountInConfiguration($roleName, $instanceCount, $configuration) { + // Change variables + if (!is_array($roleName)) { + $roleName = array($roleName); + } + if (!is_array($instanceCount)) { + $instanceCount = array($instanceCount); + } + + $configuration = preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $configuration); + //$configuration = '' . substr($configuration, strpos($configuration, '>') + 2); + + $xml = Zend_Xml_Security::scan($configuration); + + // http://www.php.net/manual/en/simplexmlelement.xpath.php#97818 + $namespaces = $xml->getDocNamespaces(); + $xml->registerXPathNamespace('__empty_ns', $namespaces['']); + + for ($i = 0; $i < count($roleName); $i++) { + $elements = $xml->xpath('//__empty_ns:Role[@name="' . $roleName[$i] . '"]/__empty_ns:Instances'); + + if (count($elements) == 1) { + $element = $elements[0]; + $element['count'] = $instanceCount[$i]; + } + } + + $configuration = $xml->asXML(); + //$configuration = preg_replace('/(<\?xml[^?]+?)utf-8/i', '$1utf-16', $configuration); + + return $configuration; + } + + /** + * The Change Deployment Configuration request may be specified as follows. + * Note that you can change a deployment's configuration either by specifying the deployment + * environment (staging or production), or by specifying the deployment's unique name. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string $configuration XML configuration represented as a string + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function configureDeploymentBySlot($serviceName, $deploymentSlot, $configuration) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + if ($configuration == '' || is_null($configuration)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Configuration name should be specified.'); + } + + if (@file_exists($configuration)) { + $configuration = utf8_decode(file_get_contents($configuration)); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + return $this->_configureDeployment($operationUrl, $configuration); + } + + /** + * The Change Deployment Configuration request may be specified as follows. + * Note that you can change a deployment's configuration either by specifying the deployment + * environment (staging or production), or by specifying the deployment's unique name. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @param string $configuration XML configuration represented as a string + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function configureDeploymentByDeploymentId($serviceName, $deploymentId, $configuration) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + if ($configuration == '' || is_null($configuration)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Configuration name should be specified.'); + } + + if (@file_exists($configuration)) { + $configuration = utf8_decode(file_get_contents($configuration)); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId; + return $this->_configureDeployment($operationUrl, $configuration); + } + + /** + * The Change Deployment Configuration request may be specified as follows. + * Note that you can change a deployment's configuration either by specifying the deployment + * environment (staging or production), or by specifying the deployment's unique name. + * + * @param string $operationUrl The operation url + * @param string $configuration XML configuration represented as a string + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _configureDeployment($operationUrl, $configuration) + { + // Clean up the configuration + $conformingConfiguration = $this->_cleanConfiguration($configuration); + + $response = $this->_performRequest($operationUrl . '/', '?comp=config', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . base64_encode($conformingConfiguration) . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Upgrade Deployment operation initiates an upgrade. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string $label A URL that refers to the location of the service package in the Blob service. The service package must be located in a storage account beneath the same subscription. + * @param string $packageUrl The service configuration file for the deployment. + * @param string $configuration A label for this deployment, up to 100 characters in length. + * @param string $mode The type of upgrade to initiate. Possible values are Auto or Manual. + * @param string $roleToUpgrade The name of the specific role to upgrade. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function upgradeDeploymentBySlot($serviceName, $deploymentSlot, $label, $packageUrl, $configuration, $mode = 'auto', $roleToUpgrade = null) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + if ($packageUrl == '' || is_null($packageUrl)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Package URL should be specified.'); + } + if ($configuration == '' || is_null($configuration)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Configuration should be specified.'); + } + $mode = strtolower($mode); + if ($mode != 'auto' && $mode != 'manual') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Mode should be auto|manual.'); + } + + if (@file_exists($configuration)) { + $configuration = utf8_decode(file_get_contents($configuration)); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + return $this->_upgradeDeployment($operationUrl, $label, $packageUrl, $configuration, $mode, $roleToUpgrade); + } + + /** + * The Upgrade Deployment operation initiates an upgrade. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @param string $label A URL that refers to the location of the service package in the Blob service. The service package must be located in a storage account beneath the same subscription. + * @param string $packageUrl The service configuration file for the deployment. + * @param string $configuration A label for this deployment, up to 100 characters in length. + * @param string $mode The type of upgrade to initiate. Possible values are Auto or Manual. + * @param string $roleToUpgrade The name of the specific role to upgrade. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function upgradeDeploymentByDeploymentId($serviceName, $deploymentId, $label, $packageUrl, $configuration, $mode = 'auto', $roleToUpgrade = null) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + if ($packageUrl == '' || is_null($packageUrl)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Package URL should be specified.'); + } + if ($configuration == '' || is_null($configuration)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Configuration should be specified.'); + } + $mode = strtolower($mode); + if ($mode != 'auto' && $mode != 'manual') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Mode should be auto|manual.'); + } + + if (@file_exists($configuration)) { + $configuration = utf8_decode(file_get_contents($configuration)); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId; + return $this->_upgradeDeployment($operationUrl, $label, $packageUrl, $configuration, $mode, $roleToUpgrade); + } + + + /** + * The Upgrade Deployment operation initiates an upgrade. + * + * @param string $operationUrl The operation url + * @param string $label A URL that refers to the location of the service package in the Blob service. The service package must be located in a storage account beneath the same subscription. + * @param string $packageUrl The service configuration file for the deployment. + * @param string $configuration A label for this deployment, up to 100 characters in length. + * @param string $mode The type of upgrade to initiate. Possible values are Auto or Manual. + * @param string $roleToUpgrade The name of the specific role to upgrade. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _upgradeDeployment($operationUrl, $label, $packageUrl, $configuration, $mode, $roleToUpgrade) + { + // Clean up the configuration + $conformingConfiguration = $this->_cleanConfiguration($configuration); + + $response = $this->_performRequest($operationUrl . '/', '?comp=upgrade', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . ucfirst($mode) . '' . $packageUrl . '' . base64_encode($conformingConfiguration) . '' . (!is_null($roleToUpgrade) ? '' . $roleToUpgrade . '' : '') . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Walk Upgrade Domain operation specifies the next upgrade domain to be walked during an in-place upgrade. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param int $upgradeDomain An integer value that identifies the upgrade domain to walk. Upgrade domains are identified with a zero-based index: the first upgrade domain has an ID of 0, the second has an ID of 1, and so on. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function walkUpgradeDomainBySlot($serviceName, $deploymentSlot, $upgradeDomain = 0) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot; + return $this->_walkUpgradeDomain($operationUrl, $upgradeDomain); + } + + /** + * The Walk Upgrade Domain operation specifies the next upgrade domain to be walked during an in-place upgrade. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @param int $upgradeDomain An integer value that identifies the upgrade domain to walk. Upgrade domains are identified with a zero-based index: the first upgrade domain has an ID of 0, the second has an ID of 1, and so on. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function walkUpgradeDomainByDeploymentId($serviceName, $deploymentId, $upgradeDomain = 0) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId; + return $this->_walkUpgradeDomain($operationUrl, $upgradeDomain); + } + + + /** + * The Walk Upgrade Domain operation specifies the next upgrade domain to be walked during an in-place upgrade. + * + * @param string $operationUrl The operation url + * @param int $upgradeDomain An integer value that identifies the upgrade domain to walk. Upgrade domains are identified with a zero-based index: the first upgrade domain has an ID of 0, the second has an ID of 1, and so on. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _walkUpgradeDomain($operationUrl, $upgradeDomain = 0) + { + $response = $this->_performRequest($operationUrl . '/', '?comp=walkupgradedomain', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $upgradeDomain . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Reboot Role Instance operation requests a reboot of a role instance + * that is running in a deployment. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string $roleInstanceName The role instance name + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function rebootRoleInstanceBySlot($serviceName, $deploymentSlot, $roleInstanceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + if ($roleInstanceName == '' || is_null($roleInstanceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Role instance name should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot . '/roleinstances/' . $roleInstanceName; + return $this->_rebootOrReimageRoleInstance($operationUrl, 'reboot'); + } + + /** + * The Reboot Role Instance operation requests a reboot of a role instance + * that is running in a deployment. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @param string $roleInstanceName The role instance name + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function rebootRoleInstanceByDeploymentId($serviceName, $deploymentId, $roleInstanceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + if ($roleInstanceName == '' || is_null($roleInstanceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Role instance name should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId . '/roleinstances/' . $roleInstanceName; + return $this->_rebootOrReimageRoleInstance($operationUrl, 'reboot'); + } + + /** + * The Reimage Role Instance operation requests a reimage of a role instance + * that is running in a deployment. + * + * @param string $serviceName The service name + * @param string $deploymentSlot The deployment slot (production or staging) + * @param string $roleInstanceName The role instance name + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function reimageRoleInstanceBySlot($serviceName, $deploymentSlot, $roleInstanceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + $deploymentSlot = strtolower($deploymentSlot); + if ($deploymentSlot != 'production' && $deploymentSlot != 'staging') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment slot should be production|staging.'); + } + if ($roleInstanceName == '' || is_null($roleInstanceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Role instance name should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deploymentslots/' . $deploymentSlot . '/roleinstances/' . $roleInstanceName; + return $this->_rebootOrReimageRoleInstance($operationUrl, 'reimage'); + } + + /** + * The Reimage Role Instance operation requests a reimage of a role instance + * that is running in a deployment. + * + * @param string $serviceName The service name + * @param string $deploymentId The deployment ID as listed on the Windows Azure management portal + * @param string $roleInstanceName The role instance name + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function reimageRoleInstanceByDeploymentId($serviceName, $deploymentId, $roleInstanceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($deploymentId == '' || is_null($deploymentId)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Deployment ID should be specified.'); + } + if ($roleInstanceName == '' || is_null($roleInstanceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Role instance name should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/deployments/' . $deploymentId . '/roleinstances/' . $roleInstanceName; + return $this->_rebootOrReimageRoleInstance($operationUrl, 'reimage'); + } + + /** + * Reboots or reimages a role instance. + * + * @param string $operationUrl The operation url + * @param string $operation The operation (reboot|reimage) + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + protected function _rebootOrReimageRoleInstance($operationUrl, $operation = 'reboot') + { + $response = $this->_performRequest($operationUrl, '?comp=' . $operation, Zend_Http_Client::POST); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The List Certificates operation lists all certificates associated with + * the specified hosted service. + * + * @param string $serviceName The service name + * @return array Array of Zend_Service_WindowsAzure_Management_CertificateInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listCertificates($serviceName) + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/certificates'; + $response = $this->_performRequest($operationUrl); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->Certificate) { + return array(); + } + if (count($result->Certificate) > 1) { + $xmlServices = $result->Certificate; + } else { + $xmlServices = array($result->Certificate); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_CertificateInstance( + (string)$xmlServices[$i]->CertificateUrl, + (string)$xmlServices[$i]->Thumbprint, + (string)$xmlServices[$i]->ThumbprintAlgorithm, + (string)$xmlServices[$i]->Data + ); + } + } + return $services; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Certificate operation returns the public data for the specified certificate. + * + * @param string $serviceName|$certificateUrl The service name -or- the certificate URL + * @param string $algorithm Algorithm + * @param string $thumbprint Thumbprint + * @return Zend_Service_WindowsAzure_Management_CertificateInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getCertificate($serviceName, $algorithm = '', $thumbprint = '') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name or certificate URL should be specified.'); + } + if (strpos($serviceName, 'https') === false && ($algorithm == '' || is_null($algorithm)) && ($thumbprint == '' || is_null($thumbprint))) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Algorithm and thumbprint should be specified.'); + } + + $operationUrl = str_replace($this->getBaseUrl(), '', $serviceName); + if (strpos($serviceName, 'https') === false) { + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/certificates/' . $algorithm . '-' . strtoupper($thumbprint); + } + + $response = $this->_performRequest($operationUrl); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + return new Zend_Service_WindowsAzure_Management_CertificateInstance( + $this->getBaseUrl() . $operationUrl, + $algorithm, + $thumbprint, + (string)$result->Data + ); + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Add Certificate operation adds a certificate to the subscription. + * + * @param string $serviceName The service name + * @param string $certificateData Certificate data + * @param string $certificatePassword The certificate password + * @param string $certificateFormat The certificate format. Currently, only 'pfx' is supported. + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function addCertificate($serviceName, $certificateData, $certificatePassword, $certificateFormat = 'pfx') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name should be specified.'); + } + if ($certificateData == '' || is_null($certificateData)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Certificate data should be specified.'); + } + if ($certificatePassword == '' || is_null($certificatePassword)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Certificate password should be specified.'); + } + if ($certificateFormat != 'pfx') { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Certificate format should be "pfx".'); + } + + if (@file_exists($certificateData)) { + $certificateData = file_get_contents($certificateData); + } + + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/certificates'; + $response = $this->_performRequest($operationUrl, '', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . base64_encode($certificateData) . '' . $certificateFormat . '' . $certificatePassword . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Delete Certificate operation deletes a certificate from the subscription's certificate store. + * + * @param string $serviceName|$certificateUrl The service name -or- the certificate URL + * @param string $algorithm Algorithm + * @param string $thumbprint Thumbprint + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function deleteCertificate($serviceName, $algorithm = '', $thumbprint = '') + { + if ($serviceName == '' || is_null($serviceName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Service name or certificate URL should be specified.'); + } + if (strpos($serviceName, 'https') === false && ($algorithm == '' || is_null($algorithm)) && ($thumbprint == '' || is_null($thumbprint))) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Algorithm and thumbprint should be specified.'); + } + + $operationUrl = str_replace($this->getBaseUrl(), '', $serviceName); + if (strpos($serviceName, 'https') === false) { + $operationUrl = self::OP_HOSTED_SERVICES . '/' . $serviceName . '/certificates/' . $algorithm . '-' . strtoupper($thumbprint); + } + + $response = $this->_performRequest($operationUrl, '', Zend_Http_Client::DELETE); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The List Affinity Groups operation lists the affinity groups associated with + * the specified subscription. + * + * @return array Array of Zend_Service_WindowsAzure_Management_AffinityGroupInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listAffinityGroups() + { + $response = $this->_performRequest(self::OP_AFFINITYGROUPS); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->AffinityGroup) { + return array(); + } + if (count($result->AffinityGroup) > 1) { + $xmlServices = $result->AffinityGroup; + } else { + $xmlServices = array($result->AffinityGroup); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_AffinityGroupInstance( + (string)$xmlServices[$i]->Name, + (string)$xmlServices[$i]->Label, + (string)$xmlServices[$i]->Description, + (string)$xmlServices[$i]->Location + ); + } + } + return $services; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Create Affinity Group operation creates a new affinity group for the specified subscription. + * + * @param string $name A name for the affinity group that is unique to the subscription. + * @param string $label A label for the affinity group. The label may be up to 100 characters in length. + * @param string $description A description for the affinity group. The description may be up to 1024 characters in length. + * @param string $location The location where the affinity group will be created. To list available locations, use the List Locations operation. + */ + public function createAffinityGroup($name, $label, $description = '', $location = '') + { + if ($name == '' || is_null($name)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Affinity group name should be specified.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + if (strlen($description) > 1024) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Description is too long. The maximum length is 1024 characters.'); + } + if ($location == '' || is_null($location)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Location should be specified.'); + } + + $response = $this->_performRequest(self::OP_AFFINITYGROUPS, '', + Zend_Http_Client::POST, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $name . '' . $description . '' . $location . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Update Affinity Group operation updates the label and/or the description for an affinity group for the specified subscription. + * + * @param string $name The name for the affinity group that should be updated. + * @param string $label A label for the affinity group. The label may be up to 100 characters in length. + * @param string $description A description for the affinity group. The description may be up to 1024 characters in length. + */ + public function updateAffinityGroup($name, $label, $description = '') + { + if ($name == '' || is_null($name)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Affinity group name should be specified.'); + } + if ($label == '' || is_null($label)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label should be specified.'); + } + if (strlen($label) > 100) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Label is too long. The maximum length is 100 characters.'); + } + if (strlen($description) > 1024) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Description is too long. The maximum length is 1024 characters.'); + } + + $response = $this->_performRequest(self::OP_AFFINITYGROUPS . '/' . $name, '', + Zend_Http_Client::PUT, + array('Content-Type' => 'application/xml; charset=utf-8'), + '' . $description . ''); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Delete Affinity Group operation deletes an affinity group in the specified subscription. + * + * @param string $name The name for the affinity group that should be deleted. + */ + public function deleteAffinityGroup($name) + { + if ($name == '' || is_null($name)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Affinity group name should be specified.'); + } + + $response = $this->_performRequest(self::OP_AFFINITYGROUPS . '/' . $name, '', + Zend_Http_Client::DELETE); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The Get Affinity Group Properties operation returns the + * system properties associated with the specified affinity group. + * + * @param string $affinityGroupName The affinity group name. + * @return Zend_Service_WindowsAzure_Management_AffinityGroupInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function getAffinityGroupProperties($affinityGroupName) + { + if ($affinityGroupName == '' || is_null($affinityGroupName)) { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception('Affinity group name should be specified.'); + } + + $response = $this->_performRequest(self::OP_AFFINITYGROUPS . '/' . $affinityGroupName); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + $affinityGroup = new Zend_Service_WindowsAzure_Management_AffinityGroupInstance( + $affinityGroupName, + (string)$result->Label, + (string)$result->Description, + (string)$result->Location + ); + + // Hosted services + if (count($result->HostedServices->HostedService) > 1) { + $xmlService = $result->HostedServices->HostedService; + } else { + $xmlService = array($result->HostedServices->HostedService); + } + + $services = array(); + if (!is_null($xmlService)) { + for ($i = 0; $i < count($xmlService); $i++) { + $services[] = array( + 'url' => (string)$xmlService[$i]->Url, + 'name' => (string)$xmlService[$i]->ServiceName + ); + } + } + $affinityGroup->HostedServices = $services; + + // Storage services + if (count($result->StorageServices->StorageService) > 1) { + $xmlService = $result->StorageServices->StorageService; + } else { + $xmlService = array($result->StorageServices->StorageService); + } + + $services = array(); + if (!is_null($xmlService)) { + for ($i = 0; $i < count($xmlService); $i++) { + $services[] = array( + 'url' => (string)$xmlService[$i]->Url, + 'name' => (string)$xmlService[$i]->ServiceName + ); + } + } + $affinityGroup->StorageServices = $services; + + return $affinityGroup; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The List Locations operation lists all of the data center locations + * that are valid for your subscription. + * + * @return array Array of Zend_Service_WindowsAzure_Management_LocationInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listLocations() + { + $response = $this->_performRequest(self::OP_LOCATIONS); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->Location) { + return array(); + } + if (count($result->Location) > 1) { + $xmlServices = $result->Location; + } else { + $xmlServices = array($result->Location); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_LocationInstance( + (string)$xmlServices[$i]->Name + ); + } + } + return $services; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The List Operating Systems operation lists the versions of the guest operating system + * that are currently available in Windows Azure. The 2010-10-28 version of List Operating + * Systems also indicates what family an operating system version belongs to. + * Currently Windows Azure supports two operating system families: the Windows Azure guest + * operating system that is substantially compatible with Windows Server 2008 SP2, + * and the Windows Azure guest operating system that is substantially compatible with + * Windows Server 2008 R2. + * + * @return array Array of Zend_Service_WindowsAzure_Management_OperatingSystemInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listOperatingSystems() + { + $response = $this->_performRequest(self::OP_OPERATINGSYSTEMS); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->OperatingSystem) { + return array(); + } + if (count($result->OperatingSystem) > 1) { + $xmlServices = $result->OperatingSystem; + } else { + $xmlServices = array($result->OperatingSystem); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_OperatingSystemInstance( + (string)$xmlServices[$i]->Version, + (string)$xmlServices[$i]->Label, + ((string)$xmlServices[$i]->IsDefault == 'true'), + ((string)$xmlServices[$i]->IsActive == 'true'), + (string)$xmlServices[$i]->Family, + (string)$xmlServices[$i]->FamilyLabel + ); + } + } + return $services; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * The List OS Families operation lists the guest operating system families + * available in Windows Azure, and also lists the operating system versions + * available for each family. Currently Windows Azure supports two operating + * system families: the Windows Azure guest operating system that is + * substantially compatible with Windows Server 2008 SP2, and the Windows + * Azure guest operating system that is substantially compatible with + * Windows Server 2008 R2. + * + * @return array Array of Zend_Service_WindowsAzure_Management_OperatingSystemFamilyInstance + * @throws Zend_Service_WindowsAzure_Management_Exception + */ + public function listOperatingSystemFamilies() + { + $response = $this->_performRequest(self::OP_OPERATINGSYSTEMFAMILIES); + + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + + if (!$result->OperatingSystemFamily) { + return array(); + } + if (count($result->OperatingSystemFamily) > 1) { + $xmlServices = $result->OperatingSystemFamily; + } else { + $xmlServices = array($result->OperatingSystemFamily); + } + + $services = array(); + if (!is_null($xmlServices)) { + + for ($i = 0; $i < count($xmlServices); $i++) { + $services[] = new Zend_Service_WindowsAzure_Management_OperatingSystemFamilyInstance( + (string)$xmlServices[$i]->Name, + (string)$xmlServices[$i]->Label + ); + + if (count($xmlServices[$i]->OperatingSystems->OperatingSystem) > 1) { + $xmlOperatingSystems = $xmlServices[$i]->OperatingSystems->OperatingSystem; + } else { + $xmlOperatingSystems = array($xmlServices[$i]->OperatingSystems->OperatingSystem); + } + + $operatingSystems = array(); + if (!is_null($xmlOperatingSystems)) { + require_once 'Zend/Service/WindowsAzure/Management/OperatingSystemInstance.php'; + for ($i = 0; $i < count($xmlOperatingSystems); $i++) { + $operatingSystems[] = new Zend_Service_WindowsAzure_Management_OperatingSystemInstance( + (string)$xmlOperatingSystems[$i]->Version, + (string)$xmlOperatingSystems[$i]->Label, + ((string)$xmlOperatingSystems[$i]->IsDefault == 'true'), + ((string)$xmlOperatingSystems[$i]->IsActive == 'true'), + (string)$xmlServices[$i]->Name, + (string)$xmlServices[$i]->Label + ); + } + } + $services[ count($services) - 1 ]->OperatingSystems = $operatingSystems; + } + } + return $services; + } else { + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Clean configuration + * + * @param string $configuration Configuration to clean. + * @return string + */ + public function _cleanConfiguration($configuration) { + $configuration = str_replace('?_data = array( + 'name' => $name, + 'deploymentslot' => $deploymentSlot, + 'privateid' => $privateID, + 'label' => base64_decode($label), + 'url' => $url, + 'configuration' => base64_decode($configuration), + 'status' => $status, + 'upgradestatus' => $upgradeStatus, + 'upgradetype' => $upgradeType, + 'currentupgradedomainstate' => $currentUpgradeDomainState, + 'currentupgradedomain' => $currentUpgradeDomain, + 'upgradedomaincount' => $upgradeDomainCount, + 'roleinstancelist' => $roleInstanceList, + 'rolelist' => $roleList + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/Exception.php b/library/Zend/Service/WindowsAzure/Management/Exception.php new file mode 100755 index 000000000..19fdb6177 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/Exception.php @@ -0,0 +1,38 @@ +_data = array( + 'url' => $url, + 'servicename' => $serviceName, + 'description' => $description, + 'affinitygroup' => $affinityGroup, + 'location' => $location, + 'label' => base64_decode($label), + 'deployments' => $deployments + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/LocationInstance.php b/library/Zend/Service/WindowsAzure/Management/LocationInstance.php new file mode 100755 index 000000000..83d19930a --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/LocationInstance.php @@ -0,0 +1,51 @@ +_data = array( + 'name' => $name + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/OperatingSystemFamilyInstance.php b/library/Zend/Service/WindowsAzure/Management/OperatingSystemFamilyInstance.php new file mode 100755 index 000000000..4a46ead65 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/OperatingSystemFamilyInstance.php @@ -0,0 +1,57 @@ +_data = array( + 'name' => $name, + 'label' => base64_decode($label), + 'operatingsystems' => $operatingSystems + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/OperatingSystemInstance.php b/library/Zend/Service/WindowsAzure/Management/OperatingSystemInstance.php new file mode 100755 index 000000000..7fb5edb61 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/OperatingSystemInstance.php @@ -0,0 +1,66 @@ +_data = array( + 'version' => $version, + 'label' => base64_decode($label), + 'isdefault' => $isDefault, + 'isactive' => $isActive, + 'family' => $family, + 'familylabel' => base64_decode($familyLabel) + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/OperationStatusInstance.php b/library/Zend/Service/WindowsAzure/Management/OperationStatusInstance.php new file mode 100755 index 000000000..7aa003b46 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/OperationStatusInstance.php @@ -0,0 +1,60 @@ +_data = array( + 'id' => $id, + 'status' => $status, + 'errorcode' => $errorCode, + 'errormessage' => $errorMessage + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/ServiceEntityAbstract.php b/library/Zend/Service/WindowsAzure/Management/ServiceEntityAbstract.php new file mode 100755 index 000000000..c0c590c10 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/ServiceEntityAbstract.php @@ -0,0 +1,67 @@ +_data)) { + $this->_data[strtolower($name)] = $value; + return; + } + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception("Unknown property: " . $name); + } + + /** + * Magic overload for getting properties + * + * @param string $name Name of the property + */ + public function __get($name) { + if (array_key_exists(strtolower($name), $this->_data)) { + return $this->_data[strtolower($name)]; + } + require_once 'Zend/Service/WindowsAzure/Management/Exception.php'; + throw new Zend_Service_WindowsAzure_Management_Exception("Unknown property: " . $name); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/StorageServiceInstance.php b/library/Zend/Service/WindowsAzure/Management/StorageServiceInstance.php new file mode 100755 index 000000000..bbad793e3 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/StorageServiceInstance.php @@ -0,0 +1,66 @@ +_data = array( + 'url' => $url, + 'servicename' => $serviceName, + 'description' => $description, + 'affinitygroup' => $affinityGroup, + 'location' => $location, + 'label' => base64_decode($label) + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Management/SubscriptionOperationInstance.php b/library/Zend/Service/WindowsAzure/Management/SubscriptionOperationInstance.php new file mode 100755 index 000000000..cda37e0a8 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Management/SubscriptionOperationInstance.php @@ -0,0 +1,77 @@ +_data = array( + 'operationid' => $operationId, + 'operationobjectid' => $operationObjectId, + 'operationname' => $operationName, + 'operationparameters' => $operationParameters, + 'operationcaller' => $operationCaller, + 'operationstatus' => $operationStatus + ); + } + + /** + * Add operation parameter + * + * @param string $name Name + * @param string $value Value + */ + public function addOperationParameter($name, $value) + { + $this->_data['operationparameters'][$name] = $value; + } +} diff --git a/library/Zend/Service/WindowsAzure/RetryPolicy/Exception.php b/library/Zend/Service/WindowsAzure/RetryPolicy/Exception.php new file mode 100755 index 000000000..2ed3488d5 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/RetryPolicy/Exception.php @@ -0,0 +1,36 @@ +_retryCount = $count; + $this->_retryInterval = $intervalBetweenRetries; + } + + /** + * Execute function under retry policy + * + * @param string|array $function Function to execute + * @param array $parameters Parameters for function call + * @return mixed + */ + public function execute($function, $parameters = array()) + { + $returnValue = null; + + for ($retriesLeft = $this->_retryCount; $retriesLeft >= 0; --$retriesLeft) { + try { + $returnValue = call_user_func_array($function, $parameters); + return $returnValue; + } catch (Exception $ex) { + if ($retriesLeft == 1) { + require_once 'Zend/Service/WindowsAzure/RetryPolicy/Exception.php'; + throw new Zend_Service_WindowsAzure_RetryPolicy_Exception("Exceeded retry count of " . $this->_retryCount . ". " . $ex->getMessage()); + } + + usleep($this->_retryInterval * 1000); + } + } + } +} diff --git a/library/Zend/Service/WindowsAzure/RetryPolicy/RetryPolicyAbstract.php b/library/Zend/Service/WindowsAzure/RetryPolicy/RetryPolicyAbstract.php new file mode 100755 index 000000000..83a6ea9d1 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/RetryPolicy/RetryPolicyAbstract.php @@ -0,0 +1,72 @@ +_storage = $storage; + $this->_storageType = $storageType; + $this->_sessionContainer = $sessionContainer; + $this->_sessionContainerPartition = $sessionContainerPartition; + } + + /** + * Registers the current session handler as PHP's session handler + * + * @return boolean + */ + public function register() + { + return session_set_save_handler(array($this, 'open'), + array($this, 'close'), + array($this, 'read'), + array($this, 'write'), + array($this, 'destroy'), + array($this, 'gc') + ); + } + + /** + * Open the session store + * + * @return bool + */ + public function open() + { + // Make sure storage container exists + if ($this->_storageType == self::STORAGE_TYPE_TABLE) { + $this->_storage->createTableIfNotExists($this->_sessionContainer); + } else if ($this->_storageType == self::STORAGE_TYPE_BLOB) { + $this->_storage->createContainerIfNotExists($this->_sessionContainer); + } + + // Ok! + return true; + } + + /** + * Close the session store + * + * @return bool + */ + public function close() + { + return true; + } + + /** + * Read a specific session + * + * @param int $id Session Id + * @return string + */ + public function read($id) + { + // Read data + if ($this->_storageType == self::STORAGE_TYPE_TABLE) { + // In table storage + try + { + $sessionRecord = $this->_storage->retrieveEntityById( + $this->_sessionContainer, + $this->_sessionContainerPartition, + $id + ); + return unserialize(base64_decode($sessionRecord->serializedData)); + } + catch (Zend_Service_WindowsAzure_Exception $ex) + { + return ''; + } + } else if ($this->_storageType == self::STORAGE_TYPE_BLOB) { + // In blob storage + try + { + $data = $this->_storage->getBlobData( + $this->_sessionContainer, + $this->_sessionContainerPartition . '/' . $id + ); + return unserialize(base64_decode($data)); + } + catch (Zend_Service_WindowsAzure_Exception $ex) + { + return false; + } + } + } + + /** + * Write a specific session + * + * @param int $id Session Id + * @param string $serializedData Serialized PHP object + * @throws Exception + */ + public function write($id, $serializedData) + { + // Encode data + $serializedData = base64_encode(serialize($serializedData)); + if (strlen($serializedData) >= self::MAX_TS_PROPERTY_SIZE && $this->_storageType == self::STORAGE_TYPE_TABLE) { + throw new Zend_Service_WindowsAzure_Exception('Session data exceeds the maximum allowed size of ' . self::MAX_TS_PROPERTY_SIZE . ' bytes that can be stored using table storage. Consider switching to a blob storage back-end or try reducing session data size.'); + } + + // Store data + if ($this->_storageType == self::STORAGE_TYPE_TABLE) { + // In table storage + $sessionRecord = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($this->_sessionContainerPartition, $id); + $sessionRecord->sessionExpires = time(); + $sessionRecord->serializedData = $serializedData; + + $sessionRecord->setAzurePropertyType('sessionExpires', 'Edm.Int32'); + + try + { + $this->_storage->updateEntity($this->_sessionContainer, $sessionRecord); + } + catch (Zend_Service_WindowsAzure_Exception $unknownRecord) + { + $this->_storage->insertEntity($this->_sessionContainer, $sessionRecord); + } + } else if ($this->_storageType == self::STORAGE_TYPE_BLOB) { + // In blob storage + $this->_storage->putBlobData( + $this->_sessionContainer, + $this->_sessionContainerPartition . '/' . $id, + $serializedData, + array('sessionexpires' => time()) + ); + } + } + + /** + * Destroy a specific session + * + * @param int $id Session Id + * @return boolean + */ + public function destroy($id) + { + // Destroy data + if ($this->_storageType == self::STORAGE_TYPE_TABLE) { + // In table storage + try + { + $sessionRecord = $this->_storage->retrieveEntityById( + $this->_sessionContainer, + $this->_sessionContainerPartition, + $id + ); + $this->_storage->deleteEntity($this->_sessionContainer, $sessionRecord); + + return true; + } + catch (Zend_Service_WindowsAzure_Exception $ex) + { + return false; + } + } else if ($this->_storageType == self::STORAGE_TYPE_BLOB) { + // In blob storage + try + { + $this->_storage->deleteBlob( + $this->_sessionContainer, + $this->_sessionContainerPartition . '/' . $id + ); + + return true; + } + catch (Zend_Service_WindowsAzure_Exception $ex) + { + return false; + } + } + } + + /** + * Garbage collector + * + * @param int $lifeTime Session maximal lifetime + * @see session.gc_divisor 100 + * @see session.gc_maxlifetime 1440 + * @see session.gc_probability 1 + * @usage Execution rate 1/100 (session.gc_probability/session.gc_divisor) + * @return boolean + */ + public function gc($lifeTime) + { + if ($this->_storageType == self::STORAGE_TYPE_TABLE) { + // In table storage + try + { + $result = $this->_storage->retrieveEntities($this->_sessionContainer, 'PartitionKey eq \'' . $this->_sessionContainerPartition . '\' and sessionExpires lt ' . (time() - $lifeTime)); + foreach ($result as $sessionRecord) + { + $this->_storage->deleteEntity($this->_sessionContainer, $sessionRecord); + } + return true; + } + catch (Zend_Service_WindowsAzure_exception $ex) + { + return false; + } + } else if ($this->_storageType == self::STORAGE_TYPE_BLOB) { + // In blob storage + try + { + $result = $this->_storage->listBlobs($this->_sessionContainer, $this->_sessionContainerPartition, '', null, null, 'metadata'); + foreach ($result as $sessionRecord) + { + if ($sessionRecord->Metadata['sessionexpires'] < (time() - $lifeTime)) { + $this->_storage->deleteBlob($this->_sessionContainer, $sessionRecord->Name); + } + } + return true; + } + catch (Zend_Service_WindowsAzure_exception $ex) + { + return false; + } + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage.php b/library/Zend/Service/WindowsAzure/Storage.php new file mode 100755 index 000000000..2e8111913 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage.php @@ -0,0 +1,564 @@ +_host = $host; + $this->_accountName = $accountName; + $this->_accountKey = $accountKey; + $this->_usePathStyleUri = $usePathStyleUri; + + // Using local storage? + if (!$this->_usePathStyleUri + && ($this->_host == self::URL_DEV_BLOB + || $this->_host == self::URL_DEV_QUEUE + || $this->_host == self::URL_DEV_TABLE) + ) { + // Local storage + $this->_usePathStyleUri = true; + } + + if (is_null($this->_credentials)) { + $this->_credentials = new Zend_Service_WindowsAzure_Credentials_SharedKey( + $this->_accountName, $this->_accountKey, $this->_usePathStyleUri); + } + + $this->_retryPolicy = $retryPolicy; + if (is_null($this->_retryPolicy)) { + $this->_retryPolicy = Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract::noRetry(); + } + + // Setup default Zend_Http_Client channel + $options = array( + 'adapter' => 'Zend_Http_Client_Adapter_Proxy' + ); + if (function_exists('curl_init')) { + // Set cURL options if cURL is used afterwards + $options['curloptions'] = array( + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_TIMEOUT => 120, + ); + } + $this->_httpClientChannel = new Zend_Http_Client(null, $options); + } + + /** + * Set the HTTP client channel to use + * + * @param Zend_Http_Client_Adapter_Interface|string $adapterInstance Adapter instance or adapter class name. + */ + public function setHttpClientChannel($adapterInstance = 'Zend_Http_Client_Adapter_Proxy') + { + $this->_httpClientChannel->setAdapter($adapterInstance); + } + + /** + * Retrieve HTTP client channel + * + * @return Zend_Http_Client_Adapter_Interface + */ + public function getHttpClientChannel() + { + return $this->_httpClientChannel; + } + + /** + * Set retry policy to use when making requests + * + * @param Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy Retry policy to use when making requests + */ + public function setRetryPolicy(Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy = null) + { + $this->_retryPolicy = $retryPolicy; + if (is_null($this->_retryPolicy)) { + $this->_retryPolicy = Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract::noRetry(); + } + } + + /** + * Set proxy + * + * @param boolean $useProxy Use proxy? + * @param string $proxyUrl Proxy URL + * @param int $proxyPort Proxy port + * @param string $proxyCredentials Proxy credentials + */ + public function setProxy($useProxy = false, $proxyUrl = '', $proxyPort = 80, $proxyCredentials = '') + { + $this->_useProxy = $useProxy; + $this->_proxyUrl = $proxyUrl; + $this->_proxyPort = $proxyPort; + $this->_proxyCredentials = $proxyCredentials; + + if ($this->_useProxy) { + $credentials = explode(':', $this->_proxyCredentials); + + $this->_httpClientChannel->setConfig(array( + 'proxy_host' => $this->_proxyUrl, + 'proxy_port' => $this->_proxyPort, + 'proxy_user' => $credentials[0], + 'proxy_pass' => $credentials[1], + )); + } else { + $this->_httpClientChannel->setConfig(array( + 'proxy_host' => '', + 'proxy_port' => 8080, + 'proxy_user' => '', + 'proxy_pass' => '', + )); + } + } + + /** + * Returns the Windows Azure account name + * + * @return string + */ + public function getAccountName() + { + return $this->_accountName; + } + + /** + * Get base URL for creating requests + * + * @return string + */ + public function getBaseUrl() + { + if ($this->_usePathStyleUri) { + return 'http://' . $this->_host . '/' . $this->_accountName; + } else { + return 'http://' . $this->_accountName . '.' . $this->_host; + } + } + + /** + * Set Zend_Service_WindowsAzure_Credentials_CredentialsAbstract instance + * + * @param Zend_Service_WindowsAzure_Credentials_CredentialsAbstract $credentials Zend_Service_WindowsAzure_Credentials_CredentialsAbstract instance to use for request signing. + */ + public function setCredentials(Zend_Service_WindowsAzure_Credentials_CredentialsAbstract $credentials) + { + $this->_credentials = $credentials; + $this->_credentials->setAccountName($this->_accountName); + $this->_credentials->setAccountkey($this->_accountKey); + $this->_credentials->setUsePathStyleUri($this->_usePathStyleUri); + } + + /** + * Get Zend_Service_WindowsAzure_Credentials_CredentialsAbstract instance + * + * @return Zend_Service_WindowsAzure_Credentials_CredentialsAbstract + */ + public function getCredentials() + { + return $this->_credentials; + } + + /** + * Perform request using Zend_Http_Client channel + * + * @param string $path Path + * @param string $queryString Query string + * @param string $httpVerb HTTP verb the request will use + * @param array $headers x-ms headers to add + * @param boolean $forTableStorage Is the request for table storage? + * @param mixed $rawData Optional RAW HTTP data to be sent over the wire + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @return Zend_Http_Response + */ + protected function _performRequest( + $path = '/', + $queryString = '', + $httpVerb = Zend_Http_Client::GET, + $headers = array(), + $forTableStorage = false, + $rawData = null, + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ + ) { + // Clean path + if (strpos($path, '/') !== 0) { + $path = '/' . $path; + } + + // Clean headers + if (is_null($headers)) { + $headers = array(); + } + + // Ensure cUrl will also work correctly: + // - disable Content-Type if required + // - disable Expect: 100 Continue + if (!isset($headers["Content-Type"])) { + $headers["Content-Type"] = ''; + } + $headers["Expect"]= ''; + + // Add version header + $headers['x-ms-version'] = $this->_apiVersion; + + // URL encoding + $path = self::urlencode($path); + $queryString = self::urlencode($queryString); + + // Generate URL and sign request + $requestUrl = $this->_credentials + ->signRequestUrl($this->getBaseUrl() . $path . $queryString, $resourceType, $requiredPermission); + $requestHeaders = $this->_credentials + ->signRequestHeaders($httpVerb, $path, $queryString, $headers, $forTableStorage, $resourceType, $requiredPermission, $rawData); + + // Prepare request + $this->_httpClientChannel->resetParameters(true); + $this->_httpClientChannel->setUri($requestUrl); + $this->_httpClientChannel->setHeaders($requestHeaders); + $this->_httpClientChannel->setRawData($rawData); + + // Execute request + $response = $this->_retryPolicy->execute( + array($this->_httpClientChannel, 'request'), + array($httpVerb) + ); + + return $response; + } + + /** + * Parse result from Zend_Http_Response + * + * @param Zend_Http_Response $response Response from HTTP call + * @return object + * @throws Zend_Service_WindowsAzure_Exception + */ + protected function _parseResponse(Zend_Http_Response $response = null) + { + if (is_null($response)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Response should not be null.'); + } + + $xml = Zend_Xml_Security::scan($response->getBody()); + + if ($xml !== false) { + // Fetch all namespaces + $namespaces = array_merge($xml->getNamespaces(true), $xml->getDocNamespaces(true)); + + // Register all namespace prefixes + foreach ($namespaces as $prefix => $ns) { + if ($prefix != '') { + $xml->registerXPathNamespace($prefix, $ns); + } + } + } + + return $xml; + } + + /** + * Generate metadata headers + * + * @param array $metadata + * @return HTTP headers containing metadata + */ + protected function _generateMetadataHeaders($metadata = array()) + { + // Validate + if (!is_array($metadata)) { + return array(); + } + + // Return headers + $headers = array(); + foreach ($metadata as $key => $value) { + if (strpos($value, "\r") !== false || strpos($value, "\n") !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Metadata cannot contain newline characters.'); + } + + if (!self::isValidMetadataName($key)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Metadata name does not adhere to metadata naming conventions. See http://msdn.microsoft.com/en-us/library/aa664670(VS.71).aspx for more information.'); + } + + $headers["x-ms-meta-" . strtolower($key)] = $value; + } + return $headers; + } + + /** + * Parse metadata headers + * + * @param array $headers HTTP headers containing metadata + * @return array + */ + protected function _parseMetadataHeaders($headers = array()) + { + // Validate + if (!is_array($headers)) { + return array(); + } + + // Return metadata + $metadata = array(); + foreach ($headers as $key => $value) { + if (substr(strtolower($key), 0, 10) == "x-ms-meta-") { + $metadata[str_replace("x-ms-meta-", '', strtolower($key))] = $value; + } + } + return $metadata; + } + + /** + * Parse metadata XML + * + * @param SimpleXMLElement $parentElement Element containing the Metadata element. + * @return array + */ + protected function _parseMetadataElement($element = null) + { + // Metadata present? + if (!is_null($element) && isset($element->Metadata) && !is_null($element->Metadata)) { + return get_object_vars($element->Metadata); + } + + return array(); + } + + /** + * Generate ISO 8601 compliant date string in UTC time zone + * + * @param int $timestamp + * @return string + */ + public function isoDate($timestamp = null) + { + $tz = @date_default_timezone_get(); + @date_default_timezone_set('UTC'); + + if (is_null($timestamp)) { + $timestamp = time(); + } + + $returnValue = str_replace('+00:00', '.0000000Z', @date('c', $timestamp)); + @date_default_timezone_set($tz); + return $returnValue; + } + + /** + * URL encode function + * + * @param string $value Value to encode + * @return string Encoded value + */ + public static function urlencode($value) + { + return str_replace(' ', '%20', $value); + } + + /** + * Is valid metadata name? + * + * @param string $metadataName Metadata name + * @return boolean + */ + public static function isValidMetadataName($metadataName = '') + { + if (preg_match("/^[a-zA-Z0-9_@][a-zA-Z0-9_]*$/", $metadataName) === 0) { + return false; + } + + if ($metadataName == '') { + return false; + } + + return true; + } + + /** + * Builds a query string from an array of elements + * + * @param array Array of elements + * @return string Assembled query string + */ + public static function createQueryStringFromArray($queryString) + { + return count($queryString) > 0 ? '?' . implode('&', $queryString) : ''; + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/Batch.php b/library/Zend/Service/WindowsAzure/Storage/Batch.php new file mode 100755 index 000000000..659b72617 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/Batch.php @@ -0,0 +1,241 @@ +_storageClient = $storageClient; + $this->_baseUrl = $baseUrl; + $this->_beginBatch(); + } + + /** + * Get base URL for creating requests + * + * @return string + */ + public function getBaseUrl() + { + return $this->_baseUrl; + } + + /** + * Starts a new batch operation set + * + * @throws Zend_Service_WindowsAzure_Exception + */ + protected function _beginBatch() + { + $this->_storageClient->setCurrentBatch($this); + } + + /** + * Cleanup current batch + */ + protected function _clean() + { + unset($this->_operations); + $this->_storageClient->setCurrentBatch(null); + $this->_storageClient = null; + unset($this); + } + + /** + * Enlist operation in current batch + * + * @param string $path Path + * @param string $queryString Query string + * @param string $httpVerb HTTP verb the request will use + * @param array $headers x-ms headers to add + * @param boolean $forTableStorage Is the request for table storage? + * @param mixed $rawData Optional RAW HTTP data to be sent over the wire + * @throws Zend_Service_WindowsAzure_Exception + */ + public function enlistOperation($path = '/', $queryString = '', $httpVerb = Zend_Http_Client::GET, $headers = array(), $forTableStorage = false, $rawData = null) + { + // Set _forTableStorage + if ($forTableStorage) { + $this->_forTableStorage = true; + } + + // Set _isSingleSelect + if ($httpVerb == Zend_Http_Client::GET) { + if (count($this->_operations) > 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception("Select operations can only be performed in an empty batch transaction."); + } + $this->_isSingleSelect = true; + } + + // Clean path + if (strpos($path, '/') !== 0) { + $path = '/' . $path; + } + + // Clean headers + if (is_null($headers)) { + $headers = array(); + } + + // URL encoding + $path = Zend_Service_WindowsAzure_Storage::urlencode($path); + $queryString = Zend_Service_WindowsAzure_Storage::urlencode($queryString); + + // Generate URL + $requestUrl = $this->getBaseUrl() . $path . $queryString; + + // Generate $rawData + if (is_null($rawData)) { + $rawData = ''; + } + + // Add headers + if ($httpVerb != Zend_Http_Client::GET) { + $headers['Content-ID'] = count($this->_operations) + 1; + if ($httpVerb != Zend_Http_Client::DELETE) { + $headers['Content-Type'] = 'application/atom+xml;type=entry'; + } + $headers['Content-Length'] = strlen($rawData); + } + + // Generate $operation + $operation = ''; + $operation .= $httpVerb . ' ' . $requestUrl . ' HTTP/1.1' . "\n"; + foreach ($headers as $key => $value) + { + $operation .= $key . ': ' . $value . "\n"; + } + $operation .= "\n"; + + // Add data + $operation .= $rawData; + + // Store operation + $this->_operations[] = $operation; + } + + /** + * Commit current batch + * + * @return Zend_Http_Response + * @throws Zend_Service_WindowsAzure_Exception + */ + public function commit() + { + // Perform batch + $response = $this->_storageClient->performBatch($this->_operations, $this->_forTableStorage, $this->_isSingleSelect); + + // Dispose + $this->_clean(); + + // Parse response + $errors = null; + preg_match_all('/(.*)<\/message>/', $response->getBody(), $errors); + + // Error? + if (count($errors[2]) > 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('An error has occured while committing a batch: ' . $errors[2][0]); + } + + // Return + return $response; + } + + /** + * Rollback current batch + */ + public function rollback() + { + // Dispose + $this->_clean(); + } + + /** + * Get operation count + * + * @return integer + */ + public function getOperationCount() + { + return count($this->_operations); + } + + /** + * Is single select? + * + * @return boolean + */ + public function isSingleSelect() + { + return $this->_isSingleSelect; + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/BatchStorageAbstract.php b/library/Zend/Service/WindowsAzure/Storage/BatchStorageAbstract.php new file mode 100755 index 000000000..d1af80c9b --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/BatchStorageAbstract.php @@ -0,0 +1,174 @@ +isInBatch()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Only one batch can be active at a time.'); + } + $this->_currentBatch = $batch; + } + + /** + * Get current batch + * + * @return Zend_Service_WindowsAzure_Storage_Batch + */ + public function getCurrentBatch() + { + return $this->_currentBatch; + } + + /** + * Is there a current batch? + * + * @return boolean + */ + public function isInBatch() + { + return !is_null($this->_currentBatch); + } + + /** + * Starts a new batch operation set + * + * @return Zend_Service_WindowsAzure_Storage_Batch + * @throws Zend_Service_WindowsAzure_Exception + */ + public function startBatch() + { + require_once 'Zend/Service/WindowsAzure/Storage/Batch.php'; + return new Zend_Service_WindowsAzure_Storage_Batch($this, $this->getBaseUrl()); + } + + /** + * Perform batch using Zend_Http_Client channel, combining all batch operations into one request + * + * @param array $operations Operations in batch + * @param boolean $forTableStorage Is the request for table storage? + * @param boolean $isSingleSelect Is the request a single select statement? + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @return Zend_Http_Response + */ + public function performBatch($operations = array(), $forTableStorage = false, $isSingleSelect = false, $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ) + { + // Generate boundaries + $batchBoundary = 'batch_' . md5(time() . microtime()); + $changesetBoundary = 'changeset_' . md5(time() . microtime()); + + // Set headers + $headers = array(); + + // Add version header + $headers['x-ms-version'] = $this->_apiVersion; + + // Add dataservice headers + $headers['DataServiceVersion'] = '1.0;NetFx'; + $headers['MaxDataServiceVersion'] = '1.0;NetFx'; + + // Add content-type header + $headers['Content-Type'] = 'multipart/mixed; boundary=' . $batchBoundary; + + // Set path and query string + $path = '/$batch'; + $queryString = ''; + + // Set verb + $httpVerb = Zend_Http_Client::POST; + + // Generate raw data + $rawData = ''; + + // Single select? + if ($isSingleSelect) { + $operation = $operations[0]; + $rawData .= '--' . $batchBoundary . "\n"; + $rawData .= 'Content-Type: application/http' . "\n"; + $rawData .= 'Content-Transfer-Encoding: binary' . "\n\n"; + $rawData .= $operation; + $rawData .= '--' . $batchBoundary . '--'; + } else { + $rawData .= '--' . $batchBoundary . "\n"; + $rawData .= 'Content-Type: multipart/mixed; boundary=' . $changesetBoundary . "\n\n"; + + // Add operations + foreach ($operations as $operation) + { + $rawData .= '--' . $changesetBoundary . "\n"; + $rawData .= 'Content-Type: application/http' . "\n"; + $rawData .= 'Content-Transfer-Encoding: binary' . "\n\n"; + $rawData .= $operation; + } + $rawData .= '--' . $changesetBoundary . '--' . "\n"; + + $rawData .= '--' . $batchBoundary . '--'; + } + + // Generate URL and sign request + $requestUrl = $this->_credentials->signRequestUrl($this->getBaseUrl() . $path . $queryString, $resourceType, $requiredPermission); + $requestHeaders = $this->_credentials->signRequestHeaders($httpVerb, $path, $queryString, $headers, $forTableStorage, $resourceType, $requiredPermission); + + // Prepare request + $this->_httpClientChannel->resetParameters(true); + $this->_httpClientChannel->setUri($requestUrl); + $this->_httpClientChannel->setHeaders($requestHeaders); + $this->_httpClientChannel->setRawData($rawData); + + // Execute request + $response = $this->_retryPolicy->execute( + array($this->_httpClientChannel, 'request'), + array($httpVerb) + ); + + return $response; + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/Blob.php b/library/Zend/Service/WindowsAzure/Storage/Blob.php new file mode 100755 index 000000000..6ae85a145 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/Blob.php @@ -0,0 +1,2142 @@ +_apiVersion = '2009-09-19'; + + // SharedAccessSignature credentials + $this->_sharedAccessSignatureCredentials = new Zend_Service_WindowsAzure_Credentials_SharedAccessSignature($accountName, $accountKey, $usePathStyleUri); + } + + /** + * Check if a blob exists + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @return boolean + */ + public function blobExists($containerName = '', $blobName = '', $snapshotId = null) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + + // Get blob instance + try { + $this->getBlobInstance($containerName, $blobName, $snapshotId); + } catch (Zend_Service_WindowsAzure_Exception $e) { + return false; + } + + return true; + } + + /** + * Check if a container exists + * + * @param string $containerName Container name + * @return boolean + */ + public function containerExists($containerName = '') + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // List containers + $containers = $this->listContainers($containerName, 1); + foreach ($containers as $container) { + if ($container->Name == $containerName) { + return true; + } + } + + return false; + } + + /** + * Create container + * + * @param string $containerName Container name + * @param array $metadata Key/value pairs of meta data + * @return object Container properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createContainer($containerName = '', $metadata = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if (!is_array($metadata)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Meta data should be an array of key and value pairs.'); + } + + // Create metadata headers + $headers = array(); + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Perform request + $response = $this->_performRequest($containerName, '?restype=container', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if ($response->isSuccessful()) { + + return new Zend_Service_WindowsAzure_Storage_BlobContainer( + $containerName, + $response->getHeader('Etag'), + $response->getHeader('Last-modified'), + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Create container if it does not exist + * + * @param string $containerName Container name + * @param array $metadata Key/value pairs of meta data + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createContainerIfNotExists($containerName = '', $metadata = array()) + { + if (!$this->containerExists($containerName)) { + $this->createContainer($containerName, $metadata); + } + } + + /** + * Get container ACL + * + * @param string $containerName Container name + * @param bool $signedIdentifiers Display only private/blob/container or display signed identifiers? + * @return string Acl, to be compared with Zend_Service_WindowsAzure_Storage_Blob::ACL_* + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getContainerAcl($containerName = '', $signedIdentifiers = false) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // Perform request + $response = $this->_performRequest($containerName, '?restype=container&comp=acl', Zend_Http_Client::GET, array(), false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ); + if ($response->isSuccessful()) { + if ($signedIdentifiers == false) { + // Only private/blob/container + $accessType = $response->getHeader(Zend_Service_WindowsAzure_Storage::PREFIX_STORAGE_HEADER . 'blob-public-access'); + if (strtolower($accessType) == 'true') { + $accessType = self::ACL_PUBLIC_CONTAINER; + } + return $accessType; + } else { + // Parse result + $result = $this->_parseResponse($response); + if (!$result) { + return array(); + } + + $entries = null; + if ($result->SignedIdentifier) { + if (count($result->SignedIdentifier) > 1) { + $entries = $result->SignedIdentifier; + } else { + $entries = array($result->SignedIdentifier); + } + } + + require_once 'Zend/Service/WindowsAzure/Storage/SignedIdentifier.php'; + // Return value + $returnValue = array(); + foreach ($entries as $entry) { + $returnValue[] = new Zend_Service_WindowsAzure_Storage_SignedIdentifier( + $entry->Id, + $entry->AccessPolicy ? $entry->AccessPolicy->Start ? $entry->AccessPolicy->Start : '' : '', + $entry->AccessPolicy ? $entry->AccessPolicy->Expiry ? $entry->AccessPolicy->Expiry : '' : '', + $entry->AccessPolicy ? $entry->AccessPolicy->Permission ? $entry->AccessPolicy->Permission : '' : '' + ); + } + + // Return + return $returnValue; + } + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Set container ACL + * + * @param string $containerName Container name + * @param bool $acl Zend_Service_WindowsAzure_Storage_Blob::ACL_* + * @param array $signedIdentifiers Signed identifiers + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setContainerAcl($containerName = '', $acl = self::ACL_PRIVATE, $signedIdentifiers = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // Headers + $headers = array(); + + // Acl specified? + if ($acl != self::ACL_PRIVATE && !is_null($acl) && $acl != '') { + $headers[Zend_Service_WindowsAzure_Storage::PREFIX_STORAGE_HEADER . 'blob-public-access'] = $acl; + } + + // Policies + $policies = null; + if (is_array($signedIdentifiers) && count($signedIdentifiers) > 0) { + $policies = ''; + $policies .= '' . "\r\n"; + $policies .= '' . "\r\n"; + foreach ($signedIdentifiers as $signedIdentifier) { + $policies .= ' ' . "\r\n"; + $policies .= ' ' . $signedIdentifier->Id . '' . "\r\n"; + $policies .= ' ' . "\r\n"; + if ($signedIdentifier->Start != '') + $policies .= ' ' . $signedIdentifier->Start . '' . "\r\n"; + if ($signedIdentifier->Expiry != '') + $policies .= ' ' . $signedIdentifier->Expiry . '' . "\r\n"; + if ($signedIdentifier->Permissions != '') + $policies .= ' ' . $signedIdentifier->Permissions . '' . "\r\n"; + $policies .= ' ' . "\r\n"; + $policies .= ' ' . "\r\n"; + } + $policies .= '' . "\r\n"; + } + + // Perform request + $response = $this->_performRequest($containerName, '?restype=container&comp=acl', Zend_Http_Client::PUT, $headers, false, $policies, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get container + * + * @param string $containerName Container name + * @return Zend_Service_WindowsAzure_Storage_BlobContainer + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getContainer($containerName = '') + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // Perform request + $response = $this->_performRequest($containerName, '?restype=container', Zend_Http_Client::GET, array(), false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ); + if ($response->isSuccessful()) { + // Parse metadata + $metadata = $this->_parseMetadataHeaders($response->getHeaders()); + + // Return container + return new Zend_Service_WindowsAzure_Storage_BlobContainer( + $containerName, + $response->getHeader('Etag'), + $response->getHeader('Last-modified'), + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get container metadata + * + * @param string $containerName Container name + * @return array Key/value pairs of meta data + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getContainerMetadata($containerName = '') + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + return $this->getContainer($containerName)->Metadata; + } + + /** + * Set container metadata + * + * Calling the Set Container Metadata operation overwrites all existing metadata that is associated with the container. It's not possible to modify an individual name/value pair. + * + * @param string $containerName Container name + * @param array $metadata Key/value pairs of meta data + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setContainerMetadata($containerName = '', $metadata = array(), $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if (!is_array($metadata)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Meta data should be an array of key and value pairs.'); + } + if (count($metadata) == 0) { + return; + } + + // Create metadata headers + $headers = array(); + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Perform request + $response = $this->_performRequest($containerName, '?restype=container&comp=metadata', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Delete container + * + * @param string $containerName Container name + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function deleteContainer($containerName = '', $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // Additional headers? + $headers = array(); + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Perform request + $response = $this->_performRequest($containerName, '?restype=container', Zend_Http_Client::DELETE, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * List containers + * + * @param string $prefix Optional. Filters the results to return only containers whose name begins with the specified prefix. + * @param int $maxResults Optional. Specifies the maximum number of containers to return per call to Azure storage. This does NOT affect list size returned by this function. (maximum: 5000) + * @param string $marker Optional string value that identifies the portion of the list to be returned with the next list operation. + * @param string $include Optional. Include this parameter to specify that the container's metadata be returned as part of the response body. (allowed values: '', 'metadata') + * @param int $currentResultCount Current result count (internal use) + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function listContainers($prefix = null, $maxResults = null, $marker = null, $include = null, $currentResultCount = 0) + { + // Build query string + $queryString = array('comp=list'); + if (!is_null($prefix)) { + $queryString[] = 'prefix=' . $prefix; + } + if (!is_null($maxResults)) { + $queryString[] = 'maxresults=' . $maxResults; + } + if (!is_null($marker)) { + $queryString[] = 'marker=' . $marker; + } + if (!is_null($include)) { + $queryString[] = 'include=' . $include; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Perform request + $response = $this->_performRequest('', $queryString, Zend_Http_Client::GET, array(), false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_CONTAINER, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_LIST); + if ($response->isSuccessful()) { + $xmlContainers = $this->_parseResponse($response)->Containers->Container; + $xmlMarker = (string)$this->_parseResponse($response)->NextMarker; + + $containers = array(); + if (!is_null($xmlContainers)) { + for ($i = 0; $i < count($xmlContainers); $i++) { + + $containers[] = new Zend_Service_WindowsAzure_Storage_BlobContainer( + (string)$xmlContainers[$i]->Name, + (string)$xmlContainers[$i]->Etag, + (string)$xmlContainers[$i]->LastModified, + $this->_parseMetadataElement($xmlContainers[$i]) + ); + } + } + $currentResultCount = $currentResultCount + count($containers); + if (!is_null($maxResults) && $currentResultCount < $maxResults) { + if (!is_null($xmlMarker) && $xmlMarker != '') { + $containers = array_merge($containers, $this->listContainers($prefix, $maxResults, $xmlMarker, $include, $currentResultCount)); + } + } + if (!is_null($maxResults) && count($containers) > $maxResults) { + $containers = array_slice($containers, 0, $maxResults); + } + + return $containers; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Put blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $localFileName Local file name to be uploaded + * @param array $metadata Key/value pairs of meta data + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return object Partial blob properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putBlob($containerName = '', $blobName = '', $localFileName = '', $metadata = array(), $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($localFileName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Local file name is not specified.'); + } + if (!file_exists($localFileName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Local file not found.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Check file size + if (filesize($localFileName) >= self::MAX_BLOB_SIZE) { + return $this->putLargeBlob($containerName, $blobName, $localFileName, $metadata, $leaseId, $additionalHeaders); + } + + // Put the data to Windows Azure Storage + return $this->putBlobData($containerName, $blobName, file_get_contents($localFileName), $metadata, $leaseId, $additionalHeaders); + } + + /** + * Put blob data + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param mixed $data Data to store + * @param array $metadata Key/value pairs of meta data + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return object Partial blob properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putBlobData($containerName = '', $blobName = '', $data = '', $metadata = array(), $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Create metadata headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Specify blob type + $headers[Zend_Service_WindowsAzure_Storage::PREFIX_STORAGE_HEADER . 'blob-type'] = self::BLOBTYPE_BLOCK; + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '', Zend_Http_Client::PUT, $headers, false, $data, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if ($response->isSuccessful()) { + + return new Zend_Service_WindowsAzure_Storage_BlobInstance( + $containerName, + $blobName, + null, + $response->getHeader('Etag'), + $response->getHeader('Last-modified'), + $this->getBaseUrl() . '/' . $containerName . '/' . $blobName, + strlen($data), + '', + '', + '', + false, + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Put large blob (> 64 MB) + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $localFileName Local file name to be uploaded + * @param array $metadata Key/value pairs of meta data + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return object Partial blob properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putLargeBlob($containerName = '', $blobName = '', $localFileName = '', $metadata = array(), $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($localFileName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Local file name is not specified.'); + } + if (!file_exists($localFileName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Local file not found.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Check file size + if (filesize($localFileName) < self::MAX_BLOB_SIZE) { + return $this->putBlob($containerName, $blobName, $localFileName, $metadata, $leaseId, $additionalHeaders); + } + + // Determine number of parts + $numberOfParts = ceil( filesize($localFileName) / self::MAX_BLOB_TRANSFER_SIZE ); + + // Generate block id's + $blockIdentifiers = array(); + for ($i = 0; $i < $numberOfParts; $i++) { + $blockIdentifiers[] = $this->_generateBlockId($i); + } + + // Open file + $fp = fopen($localFileName, 'r'); + if ($fp === false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Could not open local file.'); + } + + // Upload parts + for ($i = 0; $i < $numberOfParts; $i++) { + // Seek position in file + fseek($fp, $i * self::MAX_BLOB_TRANSFER_SIZE); + + // Read contents + $fileContents = fread($fp, self::MAX_BLOB_TRANSFER_SIZE); + + // Put block + $this->putBlock($containerName, $blobName, $blockIdentifiers[$i], $fileContents, $leaseId); + + // Dispose file contents + $fileContents = null; + unset($fileContents); + } + + // Close file + fclose($fp); + + // Put block list + $this->putBlockList($containerName, $blobName, $blockIdentifiers, $metadata, $leaseId, $additionalHeaders); + + // Return information of the blob + return $this->getBlobInstance($containerName, $blobName, null, $leaseId); + } + + /** + * Put large blob block + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $identifier Block ID + * @param array $contents Contents of the block + * @param string $leaseId Lease identifier + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putBlock($containerName = '', $blobName = '', $identifier = '', $contents = '', $leaseId = null) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($identifier === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Block identifier is not specified.'); + } + if (strlen($contents) > self::MAX_BLOB_TRANSFER_SIZE) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Block size is too big.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Upload + $response = $this->_performRequest($resourceName, '?comp=block&blockid=' . base64_encode($identifier), Zend_Http_Client::PUT, $headers, false, $contents, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Put block list + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param array $blockList Array of block identifiers + * @param array $metadata Key/value pairs of meta data + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putBlockList($containerName = '', $blobName = '', $blockList = array(), $metadata = array(), $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if (count($blockList) == 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Block list does not contain any elements.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Generate block list + $blocks = ''; + foreach ($blockList as $block) { + $blocks .= ' ' . base64_encode($block) . '' . "\n"; + } + + // Generate block list request + $fileContents = utf8_encode(implode("\n", array( + '', + '', + $blocks, + '' + ))); + + // Create metadata headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '?comp=blocklist', Zend_Http_Client::PUT, $headers, false, $fileContents, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get block list + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @param integer $type Type of block list to retrieve. 0 = all, 1 = committed, 2 = uncommitted + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getBlockList($containerName = '', $blobName = '', $snapshotId = null, $leaseId = null, $type = 0) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($type < 0 || $type > 2) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Invalid type of block list to retrieve.'); + } + + // Set $blockListType + $blockListType = 'all'; + if ($type == 1) { + $blockListType = 'committed'; + } + if ($type == 2) { + $blockListType = 'uncommitted'; + } + + // Headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + + // Build query string + $queryString = array('comp=blocklist', 'blocklisttype=' . $blockListType); + if (!is_null($snapshotId)) { + $queryString[] = 'snapshot=' . $snapshotId; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, $queryString, Zend_Http_Client::GET, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ); + if ($response->isSuccessful()) { + // Parse response + $blockList = $this->_parseResponse($response); + + // Create return value + $returnValue = array(); + if ($blockList->CommittedBlocks) { + foreach ($blockList->CommittedBlocks->Block as $block) { + $returnValue['CommittedBlocks'][] = (object)array( + 'Name' => (string)$block->Name, + 'Size' => (string)$block->Size + ); + } + } + if ($blockList->UncommittedBlocks) { + foreach ($blockList->UncommittedBlocks->Block as $block) { + $returnValue['UncommittedBlocks'][] = (object)array( + 'Name' => (string)$block->Name, + 'Size' => (string)$block->Size + ); + } + } + + return $returnValue; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Create page blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param int $size Size of the page blob in bytes + * @param array $metadata Key/value pairs of meta data + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return object Partial blob properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createPageBlob($containerName = '', $blobName = '', $size = 0, $metadata = array(), $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + if ($size <= 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Page blob size must be specified.'); + } + + // Create metadata headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Specify blob type & blob length + $headers[Zend_Service_WindowsAzure_Storage::PREFIX_STORAGE_HEADER . 'blob-type'] = self::BLOBTYPE_PAGE; + $headers[Zend_Service_WindowsAzure_Storage::PREFIX_STORAGE_HEADER . 'blob-content-length'] = $size; + $headers['Content-Length'] = 0; + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '', Zend_Http_Client::PUT, $headers, false, '', Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if ($response->isSuccessful()) { + + return new Zend_Service_WindowsAzure_Storage_BlobInstance( + $containerName, + $blobName, + null, + $response->getHeader('Etag'), + $response->getHeader('Last-modified'), + $this->getBaseUrl() . '/' . $containerName . '/' . $blobName, + $size, + '', + '', + '', + false, + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Put page in page blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param int $startByteOffset Start byte offset + * @param int $endByteOffset End byte offset + * @param mixed $contents Page contents + * @param string $writeMethod Write method (Zend_Service_WindowsAzure_Storage_Blob::PAGE_WRITE_*) + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putPage($containerName = '', $blobName = '', $startByteOffset = 0, $endByteOffset = 0, $contents = '', $writeMethod = self::PAGE_WRITE_UPDATE, $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + if ($startByteOffset % 512 != 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Start byte offset must be a modulus of 512.'); + } + if (($endByteOffset + 1) % 512 != 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('End byte offset must be a modulus of 512 minus 1.'); + } + + // Determine size + $size = strlen($contents); + if ($size >= self::MAX_BLOB_TRANSFER_SIZE) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Page blob size must not be larger than ' + self::MAX_BLOB_TRANSFER_SIZE . ' bytes.'); + } + + // Create metadata headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Specify range + $headers['Range'] = 'bytes=' . $startByteOffset . '-' . $endByteOffset; + + // Write method + $headers[Zend_Service_WindowsAzure_Storage::PREFIX_STORAGE_HEADER . 'page-write'] = $writeMethod; + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '?comp=page', Zend_Http_Client::PUT, $headers, false, $contents, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Put page in page blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param int $startByteOffset Start byte offset + * @param int $endByteOffset End byte offset + * @param string $leaseId Lease identifier + * @return array Array of page ranges + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getPageRegions($containerName = '', $blobName = '', $startByteOffset = 0, $endByteOffset = 0, $leaseId = null) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + if ($startByteOffset % 512 != 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Start byte offset must be a modulus of 512.'); + } + if ($endByteOffset > 0 && ($endByteOffset + 1) % 512 != 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('End byte offset must be a modulus of 512 minus 1.'); + } + + // Create metadata headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + + // Specify range? + if ($endByteOffset > 0) { + $headers['Range'] = 'bytes=' . $startByteOffset . '-' . $endByteOffset; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '?comp=pagelist', Zend_Http_Client::GET, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if ($response->isSuccessful()) { + $result = $this->_parseResponse($response); + $xmlRanges = null; + if (count($result->PageRange) > 1) { + $xmlRanges = $result->PageRange; + } else { + $xmlRanges = array($result->PageRange); + } + + + $ranges = array(); + + for ($i = 0; $i < count($xmlRanges); $i++) { + $ranges[] = new Zend_Service_WindowsAzure_Storage_PageRegionInstance( + (int)$xmlRanges[$i]->Start, + (int)$xmlRanges[$i]->End + ); + } + + return $ranges; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Copy blob + * + * @param string $sourceContainerName Source container name + * @param string $sourceBlobName Source blob name + * @param string $destinationContainerName Destination container name + * @param string $destinationBlobName Destination blob name + * @param array $metadata Key/value pairs of meta data + * @param string $sourceSnapshotId Source snapshot identifier + * @param string $destinationLeaseId Destination lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd894037.aspx for more information. + * @return object Partial blob properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function copyBlob($sourceContainerName = '', $sourceBlobName = '', $destinationContainerName = '', $destinationBlobName = '', $metadata = array(), $sourceSnapshotId = null, $destinationLeaseId = null, $additionalHeaders = array()) + { + if ($sourceContainerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Source container name is not specified.'); + } + if (!self::isValidContainerName($sourceContainerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Source container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($sourceBlobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Source blob name is not specified.'); + } + if ($destinationContainerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Destination container name is not specified.'); + } + if (!self::isValidContainerName($destinationContainerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Destination container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($destinationBlobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Destination blob name is not specified.'); + } + if ($sourceContainerName === '$root' && strpos($sourceBlobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + if ($destinationContainerName === '$root' && strpos($destinationBlobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Create metadata headers + $headers = array(); + if (!is_null($destinationLeaseId)) { + $headers['x-ms-lease-id'] = $destinationLeaseId; + } + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Resource names + $sourceResourceName = self::createResourceName($sourceContainerName, $sourceBlobName); + if (!is_null($sourceSnapshotId)) { + $sourceResourceName .= '?snapshot=' . $sourceSnapshotId; + } + $destinationResourceName = self::createResourceName($destinationContainerName, $destinationBlobName); + + // Set source blob + $headers["x-ms-copy-source"] = '/' . $this->_accountName . '/' . $sourceResourceName; + + // Perform request + $response = $this->_performRequest($destinationResourceName, '', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if ($response->isSuccessful()) { + + return new Zend_Service_WindowsAzure_Storage_BlobInstance( + $destinationContainerName, + $destinationBlobName, + null, + $response->getHeader('Etag'), + $response->getHeader('Last-modified'), + $this->getBaseUrl() . '/' . $destinationContainerName . '/' . $destinationBlobName, + 0, + '', + '', + '', + false, + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $localFileName Local file name to store downloaded blob + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getBlob($containerName = '', $blobName = '', $localFileName = '', $snapshotId = null, $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($localFileName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Local file name is not specified.'); + } + + // Fetch data + file_put_contents($localFileName, $this->getBlobData($containerName, $blobName, $snapshotId, $leaseId, $additionalHeaders)); + } + + /** + * Get blob data + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return mixed Blob contents + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getBlobData($containerName = '', $blobName = '', $snapshotId = null, $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + + // Build query string + $queryString = array(); + if (!is_null($snapshotId)) { + $queryString[] = 'snapshot=' . $snapshotId; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Additional headers? + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, $queryString, Zend_Http_Client::GET, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ); + if ($response->isSuccessful()) { + return $response->getBody(); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get blob instance + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return Zend_Service_WindowsAzure_Storage_BlobInstance + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getBlobInstance($containerName = '', $blobName = '', $snapshotId = null, $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Build query string + $queryString = array(); + if (!is_null($snapshotId)) { + $queryString[] = 'snapshot=' . $snapshotId; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Additional headers? + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, $queryString, Zend_Http_Client::HEAD, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ); + if ($response->isSuccessful()) { + // Parse metadata + $metadata = $this->_parseMetadataHeaders($response->getHeaders()); + + // Return blob + return new Zend_Service_WindowsAzure_Storage_BlobInstance( + $containerName, + $blobName, + $snapshotId, + $response->getHeader('Etag'), + $response->getHeader('Last-modified'), + $this->getBaseUrl() . '/' . $containerName . '/' . $blobName, + $response->getHeader('Content-Length'), + $response->getHeader('Content-Type'), + $response->getHeader('Content-Encoding'), + $response->getHeader('Content-Language'), + $response->getHeader('Cache-Control'), + $response->getHeader('x-ms-blob-type'), + $response->getHeader('x-ms-lease-status'), + false, + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get blob metadata + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @return array Key/value pairs of meta data + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getBlobMetadata($containerName = '', $blobName = '', $snapshotId = null, $leaseId = null) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + return $this->getBlobInstance($containerName, $blobName, $snapshotId, $leaseId)->Metadata; + } + + /** + * Set blob metadata + * + * Calling the Set Blob Metadata operation overwrites all existing metadata that is associated with the blob. It's not possible to modify an individual name/value pair. + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param array $metadata Key/value pairs of meta data + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setBlobMetadata($containerName = '', $blobName = '', $metadata = array(), $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + if (count($metadata) == 0) { + return; + } + + // Create metadata headers + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Perform request + $response = $this->_performRequest($containerName . '/' . $blobName, '?comp=metadata', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Set blob properties + * + * All available properties are listed at http://msdn.microsoft.com/en-us/library/ee691966.aspx and should be provided in the $additionalHeaders parameter. + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setBlobProperties($containerName = '', $blobName = '', $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + if (count($additionalHeaders) == 0) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('No additional headers are specified.'); + } + + // Create headers + $headers = array(); + + // Lease set? + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + + // Additional headers? + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Perform request + $response = $this->_performRequest($containerName . '/' . $blobName, '?comp=properties', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get blob properties + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @return Zend_Service_WindowsAzure_Storage_BlobInstance + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getBlobProperties($containerName = '', $blobName = '', $snapshotId = null, $leaseId = null) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + return $this->getBlobInstance($containerName, $blobName, $snapshotId, $leaseId); + } + + /** + * Delete blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $snapshotId Snapshot identifier + * @param string $leaseId Lease identifier + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function deleteBlob($containerName = '', $blobName = '', $snapshotId = null, $leaseId = null, $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Build query string + $queryString = array(); + if (!is_null($snapshotId)) { + $queryString[] = 'snapshot=' . $snapshotId; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Additional headers? + $headers = array(); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, $queryString, Zend_Http_Client::DELETE, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Snapshot blob + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param array $metadata Key/value pairs of meta data + * @param array $additionalHeaders Additional headers. See http://msdn.microsoft.com/en-us/library/dd179371.aspx for more information. + * @return string Date/Time value representing the snapshot identifier. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function snapshotBlob($containerName = '', $blobName = '', $metadata = array(), $additionalHeaders = array()) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Additional headers? + $headers = array(); + foreach ($additionalHeaders as $key => $value) { + $headers[$key] = $value; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '?comp=snapshot', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + if ($response->isSuccessful()) { + return $response->getHeader('x-ms-snapshot'); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Lease blob - See (http://msdn.microsoft.com/en-us/library/ee691972.aspx) + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $leaseAction Lease action (Zend_Service_WindowsAzure_Storage_Blob::LEASE_*) + * @param string $leaseId Lease identifier, required to renew the lease or to release the lease. + * @return Zend_Service_WindowsAzure_Storage_LeaseInstance Lease instance + * @throws Zend_Service_WindowsAzure_Exception + */ + public function leaseBlob($containerName = '', $blobName = '', $leaseAction = self::LEASE_ACQUIRE, $leaseId = null) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + if ($blobName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blob name is not specified.'); + } + if ($containerName === '$root' && strpos($blobName, '/') !== false) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Blobs stored in the root container can not have a name containing a forward slash (/).'); + } + + // Additional headers? + $headers = array(); + $headers['x-ms-lease-action'] = strtolower($leaseAction); + if (!is_null($leaseId)) { + $headers['x-ms-lease-id'] = $leaseId; + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Perform request + $response = $this->_performRequest($resourceName, '?comp=lease', Zend_Http_Client::PUT, $headers, false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_WRITE); + + + + if ($response->isSuccessful()) { + return new Zend_Service_WindowsAzure_Storage_LeaseInstance( + $containerName, + $blobName, + $response->getHeader('x-ms-lease-id'), + $response->getHeader('x-ms-lease-time')); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * List blobs + * + * @param string $containerName Container name + * @param string $prefix Optional. Filters the results to return only blobs whose name begins with the specified prefix. + * @param string $delimiter Optional. Delimiter, i.e. '/', for specifying folder hierarchy + * @param int $maxResults Optional. Specifies the maximum number of blobs to return per call to Azure storage. This does NOT affect list size returned by this function. (maximum: 5000) + * @param string $marker Optional string value that identifies the portion of the list to be returned with the next list operation. + * @param string $include Optional. Specifies that the response should include one or more of the following subsets: '', 'metadata', 'snapshots', 'uncommittedblobs'). Multiple values can be added separated with a comma (,) + * @param int $currentResultCount Current result count (internal use) + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function listBlobs($containerName = '', $prefix = '', $delimiter = '', $maxResults = null, $marker = null, $include = null, $currentResultCount = 0) + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // Build query string + $queryString = array('restype=container', 'comp=list'); + if (!is_null($prefix)) { + $queryString[] = 'prefix=' . $prefix; + } + if ($delimiter !== '') { + $queryString[] = 'delimiter=' . $delimiter; + } + if (!is_null($maxResults)) { + $queryString[] = 'maxresults=' . $maxResults; + } + if (!is_null($marker)) { + $queryString[] = 'marker=' . $marker; + } + if (!is_null($include)) { + $queryString[] = 'include=' . $include; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Perform request + $response = $this->_performRequest($containerName, $queryString, Zend_Http_Client::GET, array(), false, null, Zend_Service_WindowsAzure_Storage::RESOURCE_BLOB, Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_LIST); + if ($response->isSuccessful()) { + // Return value + $blobs = array(); + + // Blobs + $xmlBlobs = $this->_parseResponse($response)->Blobs->Blob; + if (!is_null($xmlBlobs)) { + + for ($i = 0; $i < count($xmlBlobs); $i++) { + $properties = (array)$xmlBlobs[$i]->Properties; + + $blobs[] = new Zend_Service_WindowsAzure_Storage_BlobInstance( + $containerName, + (string)$xmlBlobs[$i]->Name, + (string)$xmlBlobs[$i]->Snapshot, + (string)$properties['Etag'], + (string)$properties['Last-Modified'], + (string)$xmlBlobs[$i]->Url, + (string)$properties['Content-Length'], + (string)$properties['Content-Type'], + (string)$properties['Content-Encoding'], + (string)$properties['Content-Language'], + (string)$properties['Cache-Control'], + (string)$properties['BlobType'], + (string)$properties['LeaseStatus'], + false, + $this->_parseMetadataElement($xmlBlobs[$i]) + ); + } + } + + // Blob prefixes (folders) + $xmlBlobs = $this->_parseResponse($response)->Blobs->BlobPrefix; + + if (!is_null($xmlBlobs)) { + + for ($i = 0; $i < count($xmlBlobs); $i++) { + $blobs[] = new Zend_Service_WindowsAzure_Storage_BlobInstance( + $containerName, + (string)$xmlBlobs[$i]->Name, + null, + '', + '', + '', + 0, + '', + '', + '', + '', + '', + '', + true, + $this->_parseMetadataElement($xmlBlobs[$i]) + ); + } + } + + // More blobs? + $xmlMarker = (string)$this->_parseResponse($response)->NextMarker; + $currentResultCount = $currentResultCount + count($blobs); + if (!is_null($maxResults) && $currentResultCount < $maxResults) { + if (!is_null($xmlMarker) && $xmlMarker != '') { + $blobs = array_merge($blobs, $this->listBlobs($containerName, $prefix, $delimiter, $maxResults, $marker, $include, $currentResultCount)); + } + } + if (!is_null($maxResults) && count($blobs) > $maxResults) { + $blobs = array_slice($blobs, 0, $maxResults); + } + + return $blobs; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Generate shared access URL + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @param string $resource Signed resource - container (c) - blob (b) + * @param string $permissions Signed permissions - read (r), write (w), delete (d) and list (l) + * @param string $start The time at which the Shared Access Signature becomes valid. + * @param string $expiry The time at which the Shared Access Signature becomes invalid. + * @param string $identifier Signed identifier + * @return string + */ + public function generateSharedAccessUrl($containerName = '', $blobName = '', $resource = 'b', $permissions = 'r', $start = '', $expiry = '', $identifier = '') + { + if ($containerName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name is not specified.'); + } + if (!self::isValidContainerName($containerName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Container name does not adhere to container naming conventions. See http://msdn.microsoft.com/en-us/library/dd135715.aspx for more information.'); + } + + // Resource name + $resourceName = self::createResourceName($containerName , $blobName); + + // Generate URL + return $this->getBaseUrl() . '/' . $resourceName . '?' . + $this->_sharedAccessSignatureCredentials->createSignedQueryString( + $resourceName, + '', + $resource, + $permissions, + $start, + $expiry, + $identifier); + } + + /** + * Register this object as stream wrapper client + * + * @param string $name Protocol name + * @return Zend_Service_WindowsAzure_Storage_Blob + */ + public function registerAsClient($name) + { + self::$_wrapperClients[$name] = $this; + return $this; + } + + /** + * Unregister this object as stream wrapper client + * + * @param string $name Protocol name + * @return Zend_Service_WindowsAzure_Storage_Blob + */ + public function unregisterAsClient($name) + { + unset(self::$_wrapperClients[$name]); + return $this; + } + + /** + * Get wrapper client for stream type + * + * @param string $name Protocol name + * @return Zend_Service_WindowsAzure_Storage_Blob + */ + public static function getWrapperClient($name) + { + return self::$_wrapperClients[$name]; + } + + /** + * Register this object as stream wrapper + * + * @param string $name Protocol name + */ + public function registerStreamWrapper($name = 'azure') + { + stream_register_wrapper($name, 'Zend_Service_WindowsAzure_Storage_Blob_Stream'); + $this->registerAsClient($name); + } + + /** + * Unregister this object as stream wrapper + * + * @param string $name Protocol name + * @return Zend_Service_WindowsAzure_Storage_Blob + */ + public function unregisterStreamWrapper($name = 'azure') + { + stream_wrapper_unregister($name); + $this->unregisterAsClient($name); + } + + /** + * Create resource name + * + * @param string $containerName Container name + * @param string $blobName Blob name + * @return string + */ + public static function createResourceName($containerName = '', $blobName = '') + { + // Resource name + $resourceName = $containerName . '/' . $blobName; + if ($containerName === '' || $containerName === '$root') { + $resourceName = $blobName; + } + if ($blobName === '') { + $resourceName = $containerName; + } + + return $resourceName; + } + + /** + * Is valid container name? + * + * @param string $containerName Container name + * @return boolean + */ + public static function isValidContainerName($containerName = '') + { + if ($containerName == '$root') { + return true; + } + + if (preg_match("/^[a-z0-9][a-z0-9-]*$/", $containerName) === 0) { + return false; + } + + if (strpos($containerName, '--') !== false) { + return false; + } + + if (strtolower($containerName) != $containerName) { + return false; + } + + if (strlen($containerName) < 3 || strlen($containerName) > 63) { + return false; + } + + if (substr($containerName, -1) == '-') { + return false; + } + + return true; + } + + /** + * Get error message from Zend_Http_Response + * + * @param Zend_Http_Response $response Repsonse + * @param string $alternativeError Alternative error message + * @return string + */ + protected function _getErrorMessage(Zend_Http_Response $response, $alternativeError = 'Unknown error.') + { + $response = $this->_parseResponse($response); + if ($response && $response->Message) { + return (string)$response->Message; + } else { + return $alternativeError; + } + } + + /** + * Generate block id + * + * @param int $part Block number + * @return string Windows Azure Blob Storage block number + */ + protected function _generateBlockId($part = 0) + { + $returnValue = $part; + while (strlen($returnValue) < 64) { + $returnValue = '0' . $returnValue; + } + + return $returnValue; + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/Blob/Stream.php b/library/Zend/Service/WindowsAzure/Storage/Blob/Stream.php new file mode 100755 index 000000000..7083ef08d --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/Blob/Stream.php @@ -0,0 +1,544 @@ +_storageClient)) { + $url = explode(':', $path); + if (!$url) { + throw new Zend_Service_WindowsAzure_Exception('Could not parse path "' . $path . '".'); + } + + $this->_storageClient = Zend_Service_WindowsAzure_Storage_Blob::getWrapperClient($url[0]); + if (!$this->_storageClient) { + throw new Zend_Service_WindowsAzure_Exception('No storage client registered for stream type "' . $url[0] . '://".'); + } + } + + return $this->_storageClient; + } + + /** + * Extract container name + * + * @param string $path + * @return string + */ + protected function _getContainerName($path) + { + $url = parse_url($path); + if ($url['host']) { + return $url['host']; + } + + return ''; + } + + /** + * Extract file name + * + * @param string $path + * @return string + */ + protected function _getFileName($path) + { + $url = parse_url($path); + if ($url['host']) { + $fileName = isset($url['path']) ? $url['path'] : $url['host']; + if (strpos($fileName, '/') === 0) { + $fileName = substr($fileName, 1); + } + return $fileName; + } + + return ''; + } + + /** + * Open the stream + * + * @param string $path + * @param string $mode + * @param integer $options + * @param string $opened_path + * @return boolean + */ + public function stream_open($path, $mode, $options, &$opened_path) + { + $this->_fileName = $path; + $this->_temporaryFileName = tempnam(sys_get_temp_dir(), 'azure'); + + // Check the file can be opened + $fh = @fopen($this->_temporaryFileName, $mode); + if ($fh === false) { + return false; + } + fclose($fh); + + // Write mode? + if (strpbrk($mode, 'wax+')) { + $this->_writeMode = true; + } else { + $this->_writeMode = false; + } + + // If read/append, fetch the file + if (!$this->_writeMode || strpbrk($mode, 'ra+')) { + $this->_getStorageClient($this->_fileName)->getBlob( + $this->_getContainerName($this->_fileName), + $this->_getFileName($this->_fileName), + $this->_temporaryFileName + ); + } + + // Open temporary file handle + $this->_temporaryFileHandle = fopen($this->_temporaryFileName, $mode); + + // Ok! + return true; + } + + /** + * Close the stream + * + * @return void + */ + public function stream_close() + { + @fclose($this->_temporaryFileHandle); + + // Upload the file? + if ($this->_writeMode) { + // Make sure the container exists + $containerExists = $this->_getStorageClient($this->_fileName)->containerExists( + $this->_getContainerName($this->_fileName) + ); + if (!$containerExists) { + $this->_getStorageClient($this->_fileName)->createContainer( + $this->_getContainerName($this->_fileName) + ); + } + + // Upload the file + try { + $this->_getStorageClient($this->_fileName)->putBlob( + $this->_getContainerName($this->_fileName), + $this->_getFileName($this->_fileName), + $this->_temporaryFileName + ); + } catch (Zend_Service_WindowsAzure_Exception $ex) { + @unlink($this->_temporaryFileName); + unset($this->_storageClient); + + throw $ex; + } + } + + @unlink($this->_temporaryFileName); + unset($this->_storageClient); + } + + /** + * Read from the stream + * + * @param integer $count + * @return string + */ + public function stream_read($count) + { + if (!$this->_temporaryFileHandle) { + return false; + } + + return fread($this->_temporaryFileHandle, $count); + } + + /** + * Write to the stream + * + * @param string $data + * @return integer + */ + public function stream_write($data) + { + if (!$this->_temporaryFileHandle) { + return 0; + } + + $len = strlen($data); + fwrite($this->_temporaryFileHandle, $data, $len); + return $len; + } + + /** + * End of the stream? + * + * @return boolean + */ + public function stream_eof() + { + if (!$this->_temporaryFileHandle) { + return true; + } + + return feof($this->_temporaryFileHandle); + } + + /** + * What is the current read/write position of the stream? + * + * @return integer + */ + public function stream_tell() + { + return ftell($this->_temporaryFileHandle); + } + + /** + * Update the read/write position of the stream + * + * @param integer $offset + * @param integer $whence + * @return boolean + */ + public function stream_seek($offset, $whence) + { + if (!$this->_temporaryFileHandle) { + return false; + } + + return (fseek($this->_temporaryFileHandle, $offset, $whence) === 0); + } + + /** + * Flush current cached stream data to storage + * + * @return boolean + */ + public function stream_flush() + { + $result = fflush($this->_temporaryFileHandle); + + // Upload the file? + if ($this->_writeMode) { + // Make sure the container exists + $containerExists = $this->_getStorageClient($this->_fileName)->containerExists( + $this->_getContainerName($this->_fileName) + ); + if (!$containerExists) { + $this->_getStorageClient($this->_fileName)->createContainer( + $this->_getContainerName($this->_fileName) + ); + } + + // Upload the file + try { + $this->_getStorageClient($this->_fileName)->putBlob( + $this->_getContainerName($this->_fileName), + $this->_getFileName($this->_fileName), + $this->_temporaryFileName + ); + } catch (Zend_Service_WindowsAzure_Exception $ex) { + @unlink($this->_temporaryFileName); + unset($this->_storageClient); + + throw $ex; + } + } + + return $result; + } + + /** + * Returns data array of stream variables + * + * @return array + */ + public function stream_stat() + { + if (!$this->_temporaryFileHandle) { + return false; + } + + return $this->url_stat($this->_fileName, 0); + } + + /** + * Attempt to delete the item + * + * @param string $path + * @return boolean + */ + public function unlink($path) + { + $this->_getStorageClient($path)->deleteBlob( + $this->_getContainerName($path), + $this->_getFileName($path) + ); + + // Clear the stat cache for this path. + clearstatcache(true, $path); + return true; + } + + /** + * Attempt to rename the item + * + * @param string $path_from + * @param string $path_to + * @return boolean False + */ + public function rename($path_from, $path_to) + { + if ($this->_getContainerName($path_from) != $this->_getContainerName($path_to)) { + throw new Zend_Service_WindowsAzure_Exception('Container name can not be changed.'); + } + + if ($this->_getFileName($path_from) == $this->_getContainerName($path_to)) { + return true; + } + + $this->_getStorageClient($path_from)->copyBlob( + $this->_getContainerName($path_from), + $this->_getFileName($path_from), + $this->_getContainerName($path_to), + $this->_getFileName($path_to) + ); + $this->_getStorageClient($path_from)->deleteBlob( + $this->_getContainerName($path_from), + $this->_getFileName($path_from) + ); + + // Clear the stat cache for the affected paths. + clearstatcache(true, $path_from); + clearstatcache(true, $path_to); + return true; + } + + /** + * Return array of URL variables + * + * @param string $path + * @param integer $flags + * @return array + */ + public function url_stat($path, $flags) + { + $stat = array(); + $stat['dev'] = 0; + $stat['ino'] = 0; + $stat['mode'] = 0; + $stat['nlink'] = 0; + $stat['uid'] = 0; + $stat['gid'] = 0; + $stat['rdev'] = 0; + $stat['size'] = 0; + $stat['atime'] = 0; + $stat['mtime'] = 0; + $stat['ctime'] = 0; + $stat['blksize'] = 0; + $stat['blocks'] = 0; + + $info = null; + try { + $info = $this->_getStorageClient($path)->getBlobInstance( + $this->_getContainerName($path), + $this->_getFileName($path) + ); + $stat['size'] = $info->Size; + + // Set the modification time and last modified to the Last-Modified header. + $lastmodified = strtotime($info->LastModified); + $stat['mtime'] = $lastmodified; + $stat['ctime'] = $lastmodified; + + // Entry is a regular file. + $stat['mode'] = 0100000; + + return array_values($stat) + $stat; + } catch (Zend_Service_WindowsAzure_Exception $ex) { + // Unexisting file... + return false; + } + } + + /** + * Create a new directory + * + * @param string $path + * @param integer $mode + * @param integer $options + * @return boolean + */ + public function mkdir($path, $mode, $options) + { + if ($this->_getContainerName($path) == $this->_getFileName($path)) { + // Create container + try { + $this->_getStorageClient($path)->createContainer( + $this->_getContainerName($path) + ); + return true; + } catch (Zend_Service_WindowsAzure_Exception $ex) { + return false; + } + } else { + throw new Zend_Service_WindowsAzure_Exception('mkdir() with multiple levels is not supported on Windows Azure Blob Storage.'); + } + } + + /** + * Remove a directory + * + * @param string $path + * @param integer $options + * @return boolean + */ + public function rmdir($path, $options) + { + if ($this->_getContainerName($path) == $this->_getFileName($path)) { + // Clear the stat cache so that affected paths are refreshed. + clearstatcache(); + + // Delete container + try { + $this->_getStorageClient($path)->deleteContainer( + $this->_getContainerName($path) + ); + return true; + } catch (Zend_Service_WindowsAzure_Exception $ex) { + return false; + } + } else { + throw new Zend_Service_WindowsAzure_Exception('rmdir() with multiple levels is not supported on Windows Azure Blob Storage.'); + } + } + + /** + * Attempt to open a directory + * + * @param string $path + * @param integer $options + * @return boolean + */ + public function dir_opendir($path, $options) + { + $this->_blobs = $this->_getStorageClient($path)->listBlobs( + $this->_getContainerName($path) + ); + return is_array($this->_blobs); + } + + /** + * Return the next filename in the directory + * + * @return string + */ + public function dir_readdir() + { + $object = current($this->_blobs); + if ($object !== false) { + next($this->_blobs); + return $object->Name; + } + return false; + } + + /** + * Reset the directory pointer + * + * @return boolean True + */ + public function dir_rewinddir() + { + reset($this->_blobs); + return true; + } + + /** + * Close a directory + * + * @return boolean True + */ + public function dir_closedir() + { + $this->_blobs = null; + return true; + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/BlobContainer.php b/library/Zend/Service/WindowsAzure/Storage/BlobContainer.php new file mode 100755 index 000000000..1afd441a0 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/BlobContainer.php @@ -0,0 +1,90 @@ +_data = array( + 'name' => $name, + 'etag' => $etag, + 'lastmodified' => $lastModified, + 'metadata' => $metadata + ); + } + + /** + * Magic overload for setting properties + * + * @param string $name Name of the property + * @param string $value Value to set + */ + public function __set($name, $value) { + if (array_key_exists(strtolower($name), $this->_data)) { + $this->_data[strtolower($name)] = $value; + return; + } + + throw new Exception("Unknown property: " . $name); + } + + /** + * Magic overload for getting properties + * + * @param string $name Name of the property + */ + public function __get($name) { + if (array_key_exists(strtolower($name), $this->_data)) { + return $this->_data[strtolower($name)]; + } + + throw new Exception("Unknown property: " . $name); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/BlobInstance.php b/library/Zend/Service/WindowsAzure/Storage/BlobInstance.php new file mode 100755 index 000000000..d316f6db8 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/BlobInstance.php @@ -0,0 +1,93 @@ +_data = array( + 'container' => $containerName, + 'name' => $name, + 'snapshotid' => $snapshotId, + 'etag' => $etag, + 'lastmodified' => $lastModified, + 'url' => $url, + 'size' => $size, + 'contenttype' => $contentType, + 'contentencoding' => $contentEncoding, + 'contentlanguage' => $contentLanguage, + 'cachecontrol' => $cacheControl, + 'blobtype' => $blobType, + 'leasestatus' => $leaseStatus, + 'isprefix' => $isPrefix, + 'metadata' => $metadata + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/DynamicTableEntity.php b/library/Zend/Service/WindowsAzure/Storage/DynamicTableEntity.php new file mode 100755 index 000000000..7a2f49d34 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/DynamicTableEntity.php @@ -0,0 +1,219 @@ +setAzureProperty($name, $value, null); + } + + /** + * Magic overload for getting properties + * + * @param string $name Name of the property + */ + public function __get($name) { + return $this->getAzureProperty($name); + } + + /** + * Set an Azure property + * + * @param string $name Property name + * @param mixed $value Property value + * @param string $type Property type (Edm.xxxx) + * @return Zend_Service_WindowsAzure_Storage_DynamicTableEntity + */ + public function setAzureProperty($name, $value = '', $type = null) + { + if (strtolower($name) == 'partitionkey') { + $this->setPartitionKey($value); + } else if (strtolower($name) == 'rowkey') { + $this->setRowKey($value); + } else if (strtolower($name) == 'etag') { + $this->setEtag($value); + } else { + if (!array_key_exists(strtolower($name), $this->_dynamicProperties)) { + // Determine type? + if (is_null($type)) { + $type = 'Edm.String'; + if (is_int($value)) { + $type = 'Edm.Int32'; + } else if (is_float($value)) { + $type = 'Edm.Double'; + } else if (is_bool($value)) { + $type = 'Edm.Boolean'; + } else if ($value instanceof DateTime || $this->_convertToDateTime($value) !== false) { + if (!$value instanceof DateTime) { + $value = $this->_convertToDateTime($value); + } + $type = 'Edm.DateTime'; + } + } + + // Set dynamic property + $this->_dynamicProperties[strtolower($name)] = (object)array( + 'Name' => $name, + 'Type' => $type, + 'Value' => $value, + ); + } + + // Set type? + if (!is_null($type)) { + $this->_dynamicProperties[strtolower($name)]->Type = $type; + + // Try to convert the type + if ($type == 'Edm.Int32' || $type == 'Edm.Int64') { + $value = intval($value); + } else if ($type == 'Edm.Double') { + $value = floatval($value); + } else if ($type == 'Edm.Boolean') { + if (!is_bool($value)) { + $value = strtolower($value) == 'true'; + } + } else if ($type == 'Edm.DateTime') { + if (!$value instanceof DateTime) { + $value = $this->_convertToDateTime($value); + } + } + } + + // Set value + $this->_dynamicProperties[strtolower($name)]->Value = $value; + } + return $this; + } + + /** + * Set an Azure property type + * + * @param string $name Property name + * @param string $type Property type (Edm.xxxx) + * @return Zend_Service_WindowsAzure_Storage_DynamicTableEntity + */ + public function setAzurePropertyType($name, $type = 'Edm.String') + { + if (!array_key_exists(strtolower($name), $this->_dynamicProperties)) { + $this->setAzureProperty($name, '', $type); + } else { + $this->_dynamicProperties[strtolower($name)]->Type = $type; + } + return $this; + } + + /** + * Get an Azure property + * + * @param string $name Property name + * @param mixed $value Property value + * @param string $type Property type (Edm.xxxx) + * @return Zend_Service_WindowsAzure_Storage_DynamicTableEntity + */ + public function getAzureProperty($name) + { + if (strtolower($name) == 'partitionkey') { + return $this->getPartitionKey(); + } + if (strtolower($name) == 'rowkey') { + return $this->getRowKey(); + } + if (strtolower($name) == 'etag') { + return $this->getEtag(); + } + + if (!array_key_exists(strtolower($name), $this->_dynamicProperties)) { + $this->setAzureProperty($name); + } + + return $this->_dynamicProperties[strtolower($name)]->Value; + } + + /** + * Get an Azure property type + * + * @param string $name Property name + * @return string Property type (Edm.xxxx) + */ + public function getAzurePropertyType($name) + { + if (!array_key_exists(strtolower($name), $this->_dynamicProperties)) { + $this->setAzureProperty($name, '', $type); + } + + return $this->_dynamicProperties[strtolower($name)]->Type; + } + + /** + * Get Azure values + * + * @return array + */ + public function getAzureValues() + { + return array_merge(array_values($this->_dynamicProperties), parent::getAzureValues()); + } + + /** + * Set Azure values + * + * @param array $values + * @param boolean $throwOnError Throw Zend_Service_WindowsAzure_Exception when a property is not specified in $values? + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setAzureValues($values = array(), $throwOnError = false) + { + // Set parent values + parent::setAzureValues($values, false); + + // Set current values + foreach ($values as $key => $value) + { + $this->$key = $value; + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/LeaseInstance.php b/library/Zend/Service/WindowsAzure/Storage/LeaseInstance.php new file mode 100755 index 000000000..9a56e45c5 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/LeaseInstance.php @@ -0,0 +1,60 @@ +_data = array( + 'container' => $containerName, + 'name' => $name, + 'leaseid' => $leaseId, + 'leasetime' => $leaseTime + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/PageRegionInstance.php b/library/Zend/Service/WindowsAzure/Storage/PageRegionInstance.php new file mode 100755 index 000000000..aa77e6ba3 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/PageRegionInstance.php @@ -0,0 +1,54 @@ +_data = array( + 'start' => $start, + 'end' => $end + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/Queue.php b/library/Zend/Service/WindowsAzure/Storage/Queue.php new file mode 100755 index 000000000..8a461761c --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/Queue.php @@ -0,0 +1,592 @@ +_apiVersion = '2009-09-19'; + } + + /** + * Check if a queue exists + * + * @param string $queueName Queue name + * @return boolean + */ + public function queueExists($queueName = '') + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + + // List queues + $queues = $this->listQueues($queueName, 1); + foreach ($queues as $queue) { + if ($queue->Name == $queueName) { + return true; + } + } + + return false; + } + + /** + * Create queue + * + * @param string $queueName Queue name + * @param array $metadata Key/value pairs of meta data + * @return object Queue properties + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createQueue($queueName = '', $metadata = array()) + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + + // Create metadata headers + $headers = array(); + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Perform request + $response = $this->_performRequest($queueName, '', Zend_Http_Client::PUT, $headers); + if ($response->isSuccessful()) { + + return new Zend_Service_WindowsAzure_Storage_QueueInstance( + $queueName, + $metadata + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Create queue if it does not exist + * + * @param string $queueName Queue name + * @param array $metadata Key/value pairs of meta data + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createQueueIfNotExists($queueName = '', $metadata = array()) + { + if (!$this->queueExists($queueName)) { + $this->createQueue($queueName, $metadata); + } + } + + /** + * Get queue + * + * @param string $queueName Queue name + * @return Zend_Service_WindowsAzure_Storage_QueueInstance + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getQueue($queueName = '') + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + + // Perform request + $response = $this->_performRequest($queueName, '?comp=metadata', Zend_Http_Client::GET); + if ($response->isSuccessful()) { + // Parse metadata + $metadata = $this->_parseMetadataHeaders($response->getHeaders()); + + // Return queue + $queue = new Zend_Service_WindowsAzure_Storage_QueueInstance( + $queueName, + $metadata + ); + $queue->ApproximateMessageCount = intval($response->getHeader('x-ms-approximate-message-count')); + return $queue; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Get queue metadata + * + * @param string $queueName Queue name + * @return array Key/value pairs of meta data + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getQueueMetadata($queueName = '') + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + + return $this->getQueue($queueName)->Metadata; + } + + /** + * Set queue metadata + * + * Calling the Set Queue Metadata operation overwrites all existing metadata that is associated with the queue. It's not possible to modify an individual name/value pair. + * + * @param string $queueName Queue name + * @param array $metadata Key/value pairs of meta data + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setQueueMetadata($queueName = '', $metadata = array()) + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + if (count($metadata) == 0) { + return; + } + + // Create metadata headers + $headers = array(); + $headers = array_merge($headers, $this->_generateMetadataHeaders($metadata)); + + // Perform request + $response = $this->_performRequest($queueName, '?comp=metadata', Zend_Http_Client::PUT, $headers); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Delete queue + * + * @param string $queueName Queue name + * @throws Zend_Service_WindowsAzure_Exception + */ + public function deleteQueue($queueName = '') + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + + // Perform request + $response = $this->_performRequest($queueName, '', Zend_Http_Client::DELETE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * List queues + * + * @param string $prefix Optional. Filters the results to return only queues whose name begins with the specified prefix. + * @param int $maxResults Optional. Specifies the maximum number of queues to return per call to Azure storage. This does NOT affect list size returned by this function. (maximum: 5000) + * @param string $marker Optional string value that identifies the portion of the list to be returned with the next list operation. + * @param string $include Optional. Include this parameter to specify that the queue's metadata be returned as part of the response body. (allowed values: '', 'metadata') + * @param int $currentResultCount Current result count (internal use) + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function listQueues($prefix = null, $maxResults = null, $marker = null, $include = null, $currentResultCount = 0) + { + // Build query string + $queryString = array('comp=list'); + if (!is_null($prefix)) { + $queryString[] = 'prefix=' . $prefix; + } + if (!is_null($maxResults)) { + $queryString[] = 'maxresults=' . $maxResults; + } + if (!is_null($marker)) { + $queryString[] = 'marker=' . $marker; + } + if (!is_null($include)) { + $queryString[] = 'include=' . $include; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Perform request + $response = $this->_performRequest('', $queryString, Zend_Http_Client::GET); + if ($response->isSuccessful()) { + $xmlQueues = $this->_parseResponse($response)->Queues->Queue; + $xmlMarker = (string)$this->_parseResponse($response)->NextMarker; + + $queues = array(); + if (!is_null($xmlQueues)) { + + for ($i = 0; $i < count($xmlQueues); $i++) { + $queues[] = new Zend_Service_WindowsAzure_Storage_QueueInstance( + (string)$xmlQueues[$i]->Name, + $this->_parseMetadataElement($xmlQueues[$i]) + ); + } + } + $currentResultCount = $currentResultCount + count($queues); + if (!is_null($maxResults) && $currentResultCount < $maxResults) { + if (!is_null($xmlMarker) && $xmlMarker != '') { + $queues = array_merge($queues, $this->listQueues($prefix, $maxResults, $xmlMarker, $include, $currentResultCount)); + } + } + if (!is_null($maxResults) && count($queues) > $maxResults) { + $queues = array_slice($queues, 0, $maxResults); + } + + return $queues; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Put message into queue + * + * @param string $queueName Queue name + * @param string $message Message + * @param int $ttl Message Time-To-Live (in seconds). Defaults to 7 days if the parameter is omitted. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function putMessage($queueName = '', $message = '', $ttl = null) + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + if (strlen($message) > self::MAX_MESSAGE_SIZE) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Message is too big. Message content should be < 8KB.'); + } + if ($message == '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Message is not specified.'); + } + if (!is_null($ttl) && ($ttl <= 0 || $ttl > self::MAX_MESSAGE_SIZE)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Message TTL is invalid. Maximal TTL is 7 days (' . self::MAX_MESSAGE_SIZE . ' seconds) and should be greater than zero.'); + } + + // Build query string + $queryString = array(); + if (!is_null($ttl)) { + $queryString[] = 'messagettl=' . $ttl; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Build body + $rawData = ''; + $rawData .= ''; + $rawData .= ' ' . base64_encode($message) . ''; + $rawData .= ''; + + // Perform request + $response = $this->_performRequest($queueName . '/messages', $queryString, Zend_Http_Client::POST, array(), false, $rawData); + + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Error putting message into queue.'); + } + } + + /** + * Get queue messages + * + * @param string $queueName Queue name + * @param string $numOfMessages Optional. A nonzero integer value that specifies the number of messages to retrieve from the queue, up to a maximum of 32. By default, a single message is retrieved from the queue with this operation. + * @param int $visibilityTimeout Optional. An integer value that specifies the message's visibility timeout in seconds. The maximum value is 2 hours. The default message visibility timeout is 30 seconds. + * @param string $peek Peek only? + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function getMessages($queueName = '', $numOfMessages = 1, $visibilityTimeout = null, $peek = false) + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + if ($numOfMessages < 1 || $numOfMessages > 32 || intval($numOfMessages) != $numOfMessages) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Invalid number of messages to retrieve.'); + } + if (!is_null($visibilityTimeout) && ($visibilityTimeout <= 0 || $visibilityTimeout > 7200)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Visibility timeout is invalid. Maximum value is 2 hours (7200 seconds) and should be greater than zero.'); + } + + // Build query string + $queryString = array(); + if ($peek) { + $queryString[] = 'peekonly=true'; + } + if ($numOfMessages > 1) { + $queryString[] = 'numofmessages=' . $numOfMessages; + } + if (!$peek && !is_null($visibilityTimeout)) { + $queryString[] = 'visibilitytimeout=' . $visibilityTimeout; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Perform request + $response = $this->_performRequest($queueName . '/messages', $queryString, Zend_Http_Client::GET); + if ($response->isSuccessful()) { + // Parse results + $result = $this->_parseResponse($response); + if (!$result) { + return array(); + } + + $xmlMessages = null; + if (count($result->QueueMessage) > 1) { + $xmlMessages = $result->QueueMessage; + } else { + $xmlMessages = array($result->QueueMessage); + } + + $messages = array(); + for ($i = 0; $i < count($xmlMessages); $i++) { + $messages[] = new Zend_Service_WindowsAzure_Storage_QueueMessage( + (string)$xmlMessages[$i]->MessageId, + (string)$xmlMessages[$i]->InsertionTime, + (string)$xmlMessages[$i]->ExpirationTime, + ($peek ? '' : (string)$xmlMessages[$i]->PopReceipt), + ($peek ? '' : (string)$xmlMessages[$i]->TimeNextVisible), + (string)$xmlMessages[$i]->DequeueCount, + base64_decode((string)$xmlMessages[$i]->MessageText) + ); + } + + return $messages; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Peek queue messages + * + * @param string $queueName Queue name + * @param string $numOfMessages Optional. A nonzero integer value that specifies the number of messages to retrieve from the queue, up to a maximum of 32. By default, a single message is retrieved from the queue with this operation. + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function peekMessages($queueName = '', $numOfMessages = 1) + { + return $this->getMessages($queueName, $numOfMessages, null, true); + } + + /** + * Checks to see if a given queue has messages + * + * @param string $queueName Queue name + * @return boolean + * @throws Zend_Service_WindowsAzure_Exception + */ + public function hasMessages($queueName = '') + { + return count($this->peekMessages($queueName)) > 0; + } + + /** + * Clear queue messages + * + * @param string $queueName Queue name + * @throws Zend_Service_WindowsAzure_Exception + */ + public function clearMessages($queueName = '') + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + + // Perform request + $response = $this->_performRequest($queueName . '/messages', '', Zend_Http_Client::DELETE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Error clearing messages from queue.'); + } + } + + /** + * Delete queue message + * + * @param string $queueName Queue name + * @param Zend_Service_WindowsAzure_Storage_QueueMessage $message Message to delete from queue. A message retrieved using "peekMessages" can NOT be deleted! + * @throws Zend_Service_WindowsAzure_Exception + */ + public function deleteMessage($queueName = '', Zend_Service_WindowsAzure_Storage_QueueMessage $message) + { + if ($queueName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name is not specified.'); + } + if (!self::isValidQueueName($queueName)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Queue name does not adhere to queue naming conventions. See http://msdn.microsoft.com/en-us/library/dd179349.aspx for more information.'); + } + if ($message->PopReceipt == '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('A message retrieved using "peekMessages" can NOT be deleted! Use "getMessages" instead.'); + } + + // Perform request + $response = $this->_performRequest($queueName . '/messages/' . $message->MessageId, '?popreceipt=' . urlencode($message->PopReceipt), Zend_Http_Client::DELETE); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Is valid queue name? + * + * @param string $queueName Queue name + * @return boolean + */ + public static function isValidQueueName($queueName = '') + { + if (preg_match("/^[a-z0-9][a-z0-9-]*$/", $queueName) === 0) { + return false; + } + + if (strpos($queueName, '--') !== false) { + return false; + } + + if (strtolower($queueName) != $queueName) { + return false; + } + + if (strlen($queueName) < 3 || strlen($queueName) > 63) { + return false; + } + + if (substr($queueName, -1) == '-') { + return false; + } + + return true; + } + + /** + * Get error message from Zend_Http_Response + * + * @param Zend_Http_Response $response Repsonse + * @param string $alternativeError Alternative error message + * @return string + */ + protected function _getErrorMessage(Zend_Http_Response $response, $alternativeError = 'Unknown error.') + { + $response = $this->_parseResponse($response); + if ($response && $response->Message) { + return (string)$response->Message; + } else { + return $alternativeError; + } + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/QueueInstance.php b/library/Zend/Service/WindowsAzure/Storage/QueueInstance.php new file mode 100755 index 000000000..1532eb61e --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/QueueInstance.php @@ -0,0 +1,56 @@ +_data = array( + 'name' => $name, + 'metadata' => $metadata, + 'approximatemessagecount' => 0 + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/QueueMessage.php b/library/Zend/Service/WindowsAzure/Storage/QueueMessage.php new file mode 100755 index 000000000..a57441d8f --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/QueueMessage.php @@ -0,0 +1,69 @@ +_data = array( + 'messageid' => $messageId, + 'insertiontime' => $insertionTime, + 'expirationtime' => $expirationTime, + 'popreceipt' => $popReceipt, + 'timenextvisible' => $timeNextVisible, + 'dequeuecount' => $dequeueCount, + 'messagetext' => $messageText + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/SignedIdentifier.php b/library/Zend/Service/WindowsAzure/Storage/SignedIdentifier.php new file mode 100755 index 000000000..26af97f77 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/SignedIdentifier.php @@ -0,0 +1,60 @@ +_data = array( + 'id' => $id, + 'start' => $start, + 'expiry' => $expiry, + 'permissions' => $permissions + ); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/StorageEntityAbstract.php b/library/Zend/Service/WindowsAzure/Storage/StorageEntityAbstract.php new file mode 100755 index 000000000..ef7bfd74e --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/StorageEntityAbstract.php @@ -0,0 +1,67 @@ +_data)) { + $this->_data[strtolower($name)] = $value; + return; + } + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception("Unknown property: " . $name); + } + + /** + * Magic overload for getting properties + * + * @param string $name Name of the property + */ + public function __get($name) { + if (array_key_exists(strtolower($name), $this->_data)) { + return $this->_data[strtolower($name)]; + } + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception("Unknown property: " . $name); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/Table.php b/library/Zend/Service/WindowsAzure/Storage/Table.php new file mode 100755 index 000000000..05e59ab73 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/Table.php @@ -0,0 +1,931 @@ +_throwExceptionOnMissingData = $value; + } + + /** + * Throw Zend_Service_WindowsAzure_Exception when a property is not specified in Windows Azure? + */ + public function getThrowExceptionOnMissingData() + { + return $this->_throwExceptionOnMissingData; + } + + /** + * Creates a new Zend_Service_WindowsAzure_Storage_Table instance + * + * @param string $host Storage host name + * @param string $accountName Account name for Windows Azure + * @param string $accountKey Account key for Windows Azure + * @param boolean $usePathStyleUri Use path-style URI's + * @param Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy Retry policy to use when making requests + */ + public function __construct($host = Zend_Service_WindowsAzure_Storage::URL_DEV_TABLE, $accountName = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::DEVSTORE_ACCOUNT, $accountKey = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::DEVSTORE_KEY, $usePathStyleUri = false, Zend_Service_WindowsAzure_RetryPolicy_RetryPolicyAbstract $retryPolicy = null) + { + parent::__construct($host, $accountName, $accountKey, $usePathStyleUri, $retryPolicy); + + // Always use SharedKeyLite authentication + $this->_credentials = new Zend_Service_WindowsAzure_Credentials_SharedKeyLite($accountName, $accountKey, $this->_usePathStyleUri); + + // API version + $this->_apiVersion = '2009-09-19'; + } + + /** + * Check if a table exists + * + * @param string $tableName Table name + * @return boolean + */ + public function tableExists($tableName = '') + { + if ($tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + + // List tables + $tables = $this->listTables(); // 2009-09-19 does not support $this->listTables($tableName); all of a sudden... + foreach ($tables as $table) { + if ($table->Name == $tableName) { + return true; + } + } + + return false; + } + + /** + * List tables + * + * @param string $nextTableName Next table name, used for listing tables when total amount of tables is > 1000. + * @return array + * @throws Zend_Service_WindowsAzure_Exception + */ + public function listTables($nextTableName = '') + { + // Build query string + $queryString = array(); + if ($nextTableName != '') { + $queryString[] = 'NextTableName=' . $nextTableName; + } + $queryString = self::createQueryStringFromArray($queryString); + + // Perform request + $response = $this->_performRequest('Tables', $queryString, Zend_Http_Client::GET, null, true); + if ($response->isSuccessful()) { + // Parse result + $result = $this->_parseResponse($response); + + if (!$result || !$result->entry) { + return array(); + } + + $entries = null; + if (count($result->entry) > 1) { + $entries = $result->entry; + } else { + $entries = array($result->entry); + } + + // Create return value + $returnValue = array(); + foreach ($entries as $entry) { + $tableName = $entry->xpath('.//m:properties/d:TableName'); + $tableName = (string)$tableName[0]; + + $returnValue[] = new Zend_Service_WindowsAzure_Storage_TableInstance( + (string)$entry->id, + $tableName, + (string)$entry->link['href'], + (string)$entry->updated + ); + } + + // More tables? + if (!is_null($response->getHeader('x-ms-continuation-NextTableName'))) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + $returnValue = array_merge($returnValue, $this->listTables($response->getHeader('x-ms-continuation-NextTableName'))); + } + + return $returnValue; + } else { + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Create table + * + * @param string $tableName Table name + * @return Zend_Service_WindowsAzure_Storage_TableInstance + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createTable($tableName = '') + { + if ($tableName === '') { + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + + // Generate request body + $requestBody = ' + + + <updated>{tpl:Updated}</updated> + <author> + <name /> + </author> + <id /> + <content type="application/xml"> + <m:properties> + <d:TableName>{tpl:TableName}</d:TableName> + </m:properties> + </content> + </entry>'; + + $requestBody = $this->_fillTemplate($requestBody, array( + 'BaseUrl' => $this->getBaseUrl(), + 'TableName' => htmlspecialchars($tableName), + 'Updated' => $this->isoDate(), + 'AccountName' => $this->_accountName + )); + + // Add header information + $headers = array(); + $headers['Content-Type'] = 'application/atom+xml'; + $headers['DataServiceVersion'] = '1.0;NetFx'; + $headers['MaxDataServiceVersion'] = '1.0;NetFx'; + + // Perform request + $response = $this->_performRequest('Tables', '', Zend_Http_Client::POST, $headers, true, $requestBody); + if ($response->isSuccessful()) { + // Parse response + $entry = $this->_parseResponse($response); + + $tableName = $entry->xpath('.//m:properties/d:TableName'); + $tableName = (string)$tableName[0]; + + + return new Zend_Service_WindowsAzure_Storage_TableInstance( + (string)$entry->id, + $tableName, + (string)$entry->link['href'], + (string)$entry->updated + ); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Create table if it does not exist + * + * @param string $tableName Table name + * @throws Zend_Service_WindowsAzure_Exception + */ + public function createTableIfNotExists($tableName = '') + { + if (!$this->tableExists($tableName)) { + $this->createTable($tableName); + } + } + + /** + * Delete table + * + * @param string $tableName Table name + * @throws Zend_Service_WindowsAzure_Exception + */ + public function deleteTable($tableName = '') + { + if ($tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + + // Add header information + $headers = array(); + $headers['Content-Type'] = 'application/atom+xml'; + + // Perform request + $response = $this->_performRequest('Tables(\'' . $tableName . '\')', '', Zend_Http_Client::DELETE, $headers, true, null); + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Insert entity into table + * + * @param string $tableName Table name + * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity Entity to insert + * @return Zend_Service_WindowsAzure_Storage_TableEntity + * @throws Zend_Service_WindowsAzure_Exception + */ + public function insertEntity($tableName = '', Zend_Service_WindowsAzure_Storage_TableEntity $entity = null) + { + if ($tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + if (is_null($entity)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Entity is not specified.'); + } + + // Generate request body + $requestBody = '<?xml version="1.0" encoding="utf-8" standalone="yes"?> + <entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> + <title /> + <updated>{tpl:Updated}</updated> + <author> + <name /> + </author> + <id /> + <content type="application/xml"> + <m:properties> + {tpl:Properties} + </m:properties> + </content> + </entry>'; + + $requestBody = $this->_fillTemplate($requestBody, array( + 'Updated' => $this->isoDate(), + 'Properties' => $this->_generateAzureRepresentation($entity) + )); + + // Add header information + $headers = array(); + $headers['Content-Type'] = 'application/atom+xml'; + + // Perform request + $response = null; + if ($this->isInBatch()) { + $this->getCurrentBatch()->enlistOperation($tableName, '', Zend_Http_Client::POST, $headers, true, $requestBody); + return null; + } else { + $response = $this->_performRequest($tableName, '', Zend_Http_Client::POST, $headers, true, $requestBody); + } + if ($response->isSuccessful()) { + // Parse result + $result = $this->_parseResponse($response); + + $timestamp = $result->xpath('//m:properties/d:Timestamp'); + $timestamp = $this->_convertToDateTime( (string)$timestamp[0] ); + + $etag = $result->attributes('http://schemas.microsoft.com/ado/2007/08/dataservices/metadata'); + $etag = (string)$etag['etag']; + + // Update properties + $entity->setTimestamp($timestamp); + $entity->setEtag($etag); + + return $entity; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Delete entity from table + * + * @param string $tableName Table name + * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity Entity to delete + * @param boolean $verifyEtag Verify etag of the entity (used for concurrency) + * @throws Zend_Service_WindowsAzure_Exception + */ + public function deleteEntity($tableName = '', Zend_Service_WindowsAzure_Storage_TableEntity $entity = null, $verifyEtag = false) + { + if ($tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + if (is_null($entity)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Entity is not specified.'); + } + + // Add header information + $headers = array(); + if (!$this->isInBatch()) { + // http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/9e255447-4dc7-458a-99d3-bdc04bdc5474/ + $headers['Content-Type'] = 'application/atom+xml'; + } + $headers['Content-Length'] = 0; + if (!$verifyEtag) { + $headers['If-Match'] = '*'; + } else { + $headers['If-Match'] = $entity->getEtag(); + } + + // Perform request + $response = null; + if ($this->isInBatch()) { + $this->getCurrentBatch()->enlistOperation($tableName . '(PartitionKey=\'' . $entity->getPartitionKey() . '\', RowKey=\'' . $entity->getRowKey() . '\')', '', Zend_Http_Client::DELETE, $headers, true, null); + return null; + } else { + $response = $this->_performRequest($tableName . '(PartitionKey=\'' . $entity->getPartitionKey() . '\', RowKey=\'' . $entity->getRowKey() . '\')', '', Zend_Http_Client::DELETE, $headers, true, null); + } + if (!$response->isSuccessful()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Retrieve entity from table, by id + * + * @param string $tableName Table name + * @param string $partitionKey Partition key + * @param string $rowKey Row key + * @param string $entityClass Entity class name* + * @return Zend_Service_WindowsAzure_Storage_TableEntity + * @throws Zend_Service_WindowsAzure_Exception + */ + public function retrieveEntityById($tableName, $partitionKey, $rowKey, $entityClass = 'Zend_Service_WindowsAzure_Storage_DynamicTableEntity') + { + if (is_null($tableName) || $tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + if (is_null($partitionKey) || $partitionKey === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Partition key is not specified.'); + } + if (is_null($rowKey) || $rowKey === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Row key is not specified.'); + } + if (is_null($entityClass) || $entityClass === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Entity class is not specified.'); + } + + + // Check for combined size of partition key and row key + // http://msdn.microsoft.com/en-us/library/dd179421.aspx + if (strlen($partitionKey . $rowKey) >= 256) { + // Start a batch if possible + if ($this->isInBatch()) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Entity cannot be retrieved. A transaction is required to retrieve the entity, but another transaction is already active.'); + } + + $this->startBatch(); + } + + // Fetch entities from Azure + $result = $this->retrieveEntities( + $this->select() + ->from($tableName) + ->wherePartitionKey($partitionKey) + ->whereRowKey($rowKey), + '', + $entityClass + ); + + // Return + if (count($result) == 1) { + return $result[0]; + } + + return null; + } + + /** + * Create a new Zend_Service_WindowsAzure_Storage_TableEntityQuery + * + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function select() + { + + return new Zend_Service_WindowsAzure_Storage_TableEntityQuery(); + } + + /** + * Retrieve entities from table + * + * @param string $tableName|Zend_Service_WindowsAzure_Storage_TableEntityQuery Table name -or- Zend_Service_WindowsAzure_Storage_TableEntityQuery instance + * @param string $filter Filter condition (not applied when $tableName is a Zend_Service_WindowsAzure_Storage_TableEntityQuery instance) + * @param string $entityClass Entity class name + * @param string $nextPartitionKey Next partition key, used for listing entities when total amount of entities is > 1000. + * @param string $nextRowKey Next row key, used for listing entities when total amount of entities is > 1000. + * @return array Array of Zend_Service_WindowsAzure_Storage_TableEntity + * @throws Zend_Service_WindowsAzure_Exception + */ + public function retrieveEntities($tableName = '', $filter = '', $entityClass = 'Zend_Service_WindowsAzure_Storage_DynamicTableEntity', $nextPartitionKey = null, $nextRowKey = null) + { + if ($tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + if ($entityClass === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Entity class is not specified.'); + } + + // Convenience... + if (class_exists($filter)) { + $entityClass = $filter; + $filter = ''; + } + + // Query string + $queryString = ''; + + // Determine query + if (is_string($tableName)) { + // Option 1: $tableName is a string + + // Append parentheses + if (strpos($tableName, '()') === false) { + $tableName .= '()'; + } + + // Build query + $query = array(); + + // Filter? + if ($filter !== '') { + $query[] = '$filter=' . Zend_Service_WindowsAzure_Storage_TableEntityQuery::encodeQuery($filter); + } + + // Build queryString + if (count($query) > 0) { + $queryString = '?' . implode('&', $query); + } + } else if (get_class($tableName) == 'Zend_Service_WindowsAzure_Storage_TableEntityQuery') { + // Option 2: $tableName is a Zend_Service_WindowsAzure_Storage_TableEntityQuery instance + + // Build queryString + $queryString = $tableName->assembleQueryString(true); + + // Change $tableName + $tableName = $tableName->assembleFrom(true); + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Invalid argument: $tableName'); + } + + // Add continuation querystring parameters? + if (!is_null($nextPartitionKey) && !is_null($nextRowKey)) { + if ($queryString !== '') { + $queryString .= '&'; + } else { + $queryString .= '?'; + } + + $queryString .= 'NextPartitionKey=' . rawurlencode($nextPartitionKey) . '&NextRowKey=' . rawurlencode($nextRowKey); + } + + // Perform request + $response = null; + if ($this->isInBatch() && $this->getCurrentBatch()->getOperationCount() == 0) { + $this->getCurrentBatch()->enlistOperation($tableName, $queryString, Zend_Http_Client::GET, array(), true, null); + $response = $this->getCurrentBatch()->commit(); + + // Get inner response (multipart) + $innerResponse = $response->getBody(); + $innerResponse = substr($innerResponse, strpos($innerResponse, 'HTTP/1.1 200 OK')); + $innerResponse = substr($innerResponse, 0, strpos($innerResponse, '--batchresponse')); + $response = Zend_Http_Response::fromString($innerResponse); + } else { + $response = $this->_performRequest($tableName, $queryString, Zend_Http_Client::GET, array(), true, null); + } + + if ($response->isSuccessful()) { + // Parse result + $result = $this->_parseResponse($response); + if (!$result) { + return array(); + } + + $entries = null; + if ($result->entry) { + if (count($result->entry) > 1) { + $entries = $result->entry; + } else { + $entries = array($result->entry); + } + } else { + // This one is tricky... If we have properties defined, we have an entity. + $properties = $result->xpath('//m:properties'); + if ($properties) { + $entries = array($result); + } else { + return array(); + } + } + + // Create return value + $returnValue = array(); + foreach ($entries as $entry) { + // Parse properties + $properties = $entry->xpath('.//m:properties'); + $properties = $properties[0]->children('http://schemas.microsoft.com/ado/2007/08/dataservices'); + + // Create entity + $entity = new $entityClass('', ''); + $entity->setAzureValues((array)$properties, $this->_throwExceptionOnMissingData); + + // If we have a Zend_Service_WindowsAzure_Storage_DynamicTableEntity, make sure all property types are set + if ($entity instanceof Zend_Service_WindowsAzure_Storage_DynamicTableEntity) { + foreach ($properties as $key => $value) { + $attributes = $value->attributes('http://schemas.microsoft.com/ado/2007/08/dataservices/metadata'); + $type = (string)$attributes['type']; + if ($type !== '') { + $entity->setAzureProperty($key, (string)$value, $type); + } + } + } + + // Update etag + $etag = $entry->attributes('http://schemas.microsoft.com/ado/2007/08/dataservices/metadata'); + $etag = (string)$etag['etag']; + $entity->setEtag($etag); + + // Add to result + $returnValue[] = $entity; + } + + // More entities? + if (!is_null($response->getHeader('x-ms-continuation-NextPartitionKey')) && !is_null($response->getHeader('x-ms-continuation-NextRowKey'))) { + if (strpos($queryString, '$top') === false) { + $returnValue = array_merge($returnValue, $this->retrieveEntities($tableName, $filter, $entityClass, $response->getHeader('x-ms-continuation-NextPartitionKey'), $response->getHeader('x-ms-continuation-NextRowKey'))); + } + } + + // Return + return $returnValue; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Update entity by replacing it + * + * @param string $tableName Table name + * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity Entity to update + * @param boolean $verifyEtag Verify etag of the entity (used for concurrency) + * @throws Zend_Service_WindowsAzure_Exception + */ + public function updateEntity($tableName = '', Zend_Service_WindowsAzure_Storage_TableEntity $entity = null, $verifyEtag = false) + { + return $this->_changeEntity(Zend_Http_Client::PUT, $tableName, $entity, $verifyEtag); + } + + /** + * Update entity by adding or updating properties + * + * @param string $tableName Table name + * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity Entity to update + * @param boolean $verifyEtag Verify etag of the entity (used for concurrency) + * @param array $properties Properties to merge. All properties will be used when omitted. + * @throws Zend_Service_WindowsAzure_Exception + */ + public function mergeEntity($tableName = '', Zend_Service_WindowsAzure_Storage_TableEntity $entity = null, $verifyEtag = false, $properties = array()) + { + $mergeEntity = null; + if (is_array($properties) && count($properties) > 0) { + + // Build a new object + $mergeEntity = new Zend_Service_WindowsAzure_Storage_DynamicTableEntity($entity->getPartitionKey(), $entity->getRowKey()); + + // Keep only values mentioned in $properties + $azureValues = $entity->getAzureValues(); + foreach ($azureValues as $key => $value) { + if (in_array($value->Name, $properties)) { + $mergeEntity->setAzureProperty($value->Name, $value->Value, $value->Type); + } + } + } else { + $mergeEntity = $entity; + } + + // Ensure entity timestamp matches updated timestamp + $entity->setTimestamp(new DateTime()); + + return $this->_changeEntity(Zend_Http_Client::MERGE, $tableName, $mergeEntity, $verifyEtag); + } + + /** + * Get error message from Zend_Http_Response + * + * @param Zend_Http_Response $response Repsonse + * @param string $alternativeError Alternative error message + * @return string + */ + protected function _getErrorMessage(Zend_Http_Response $response, $alternativeError = 'Unknown error.') + { + $response = $this->_parseResponse($response); + if ($response && $response->message) { + return (string)$response->message; + } else { + return $alternativeError; + } + } + + /** + * Update entity / merge entity + * + * @param string $httpVerb HTTP verb to use (PUT = update, MERGE = merge) + * @param string $tableName Table name + * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity Entity to update + * @param boolean $verifyEtag Verify etag of the entity (used for concurrency) + * @throws Zend_Service_WindowsAzure_Exception + */ + protected function _changeEntity($httpVerb = Zend_Http_Client::PUT, $tableName = '', Zend_Service_WindowsAzure_Storage_TableEntity $entity = null, $verifyEtag = false) + { + if ($tableName === '') { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Table name is not specified.'); + } + if (is_null($entity)) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception('Entity is not specified.'); + } + + // Add header information + $headers = array(); + $headers['Content-Type'] = 'application/atom+xml'; + $headers['Content-Length'] = 0; + if (!$verifyEtag) { + $headers['If-Match'] = '*'; + } else { + $headers['If-Match'] = $entity->getEtag(); + } + + // Generate request body + $requestBody = '<?xml version="1.0" encoding="utf-8" standalone="yes"?> + <entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> + <title /> + <updated>{tpl:Updated}</updated> + <author> + <name /> + </author> + <id /> + <content type="application/xml"> + <m:properties> + {tpl:Properties} + </m:properties> + </content> + </entry>'; + + // Attempt to get timestamp from entity + $timestamp = $entity->getTimestamp(); + + $requestBody = $this->_fillTemplate($requestBody, array( + 'Updated' => $this->_convertToEdmDateTime($timestamp), + 'Properties' => $this->_generateAzureRepresentation($entity) + )); + + // Add header information + $headers = array(); + $headers['Content-Type'] = 'application/atom+xml'; + if (!$verifyEtag) { + $headers['If-Match'] = '*'; + } else { + $headers['If-Match'] = $entity->getEtag(); + } + + // Perform request + $response = null; + if ($this->isInBatch()) { + $this->getCurrentBatch()->enlistOperation($tableName . '(PartitionKey=\'' . $entity->getPartitionKey() . '\', RowKey=\'' . $entity->getRowKey() . '\')', '', $httpVerb, $headers, true, $requestBody); + return null; + } else { + $response = $this->_performRequest($tableName . '(PartitionKey=\'' . $entity->getPartitionKey() . '\', RowKey=\'' . $entity->getRowKey() . '\')', '', $httpVerb, $headers, true, $requestBody); + } + if ($response->isSuccessful()) { + // Update properties + $entity->setEtag($response->getHeader('Etag')); + $entity->setTimestamp( $this->_convertToDateTime($response->getHeader('Last-modified')) ); + + return $entity; + } else { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception($this->_getErrorMessage($response, 'Resource could not be accessed.')); + } + } + + /** + * Generate RFC 1123 compliant date string + * + * @return string + */ + protected function _rfcDate() + { + return gmdate('D, d M Y H:i:s', time()) . ' GMT'; // RFC 1123 + } + + /** + * Fill text template with variables from key/value array + * + * @param string $templateText Template text + * @param array $variables Array containing key/value pairs + * @return string + */ + protected function _fillTemplate($templateText, $variables = array()) + { + foreach ($variables as $key => $value) { + $templateText = str_replace('{tpl:' . $key . '}', $value, $templateText); + } + return $templateText; + } + + /** + * Generate Azure representation from entity (creates atompub markup from properties) + * + * @param Zend_Service_WindowsAzure_Storage_TableEntity $entity + * @return string + */ + protected function _generateAzureRepresentation(Zend_Service_WindowsAzure_Storage_TableEntity $entity = null) + { + // Generate Azure representation from entity + $azureRepresentation = array(); + $azureValues = $entity->getAzureValues(); + foreach ($azureValues as $azureValue) { + $value = array(); + $value[] = '<d:' . $azureValue->Name; + if ($azureValue->Type != '') { + $value[] = ' m:type="' . $azureValue->Type . '"'; + } + if (is_null($azureValue->Value)) { + $value[] = ' m:null="true"'; + } + $value[] = '>'; + + if (!is_null($azureValue->Value)) { + if (strtolower($azureValue->Type) == 'edm.boolean') { + $value[] = ($azureValue->Value == true ? '1' : '0'); + } else if (strtolower($azureValue->Type) == 'edm.datetime') { + $value[] = $this->_convertToEdmDateTime($azureValue->Value); + } else { + $value[] = htmlspecialchars($azureValue->Value); + } + } + + $value[] = '</d:' . $azureValue->Name . '>'; + $azureRepresentation[] = implode('', $value); + } + + return implode('', $azureRepresentation); + } + + /** + * Perform request using Zend_Http_Client channel + * + * @param string $path Path + * @param string $queryString Query string + * @param string $httpVerb HTTP verb the request will use + * @param array $headers x-ms headers to add + * @param boolean $forTableStorage Is the request for table storage? + * @param mixed $rawData Optional RAW HTTP data to be sent over the wire + * @param string $resourceType Resource type + * @param string $requiredPermission Required permission + * @return Zend_Http_Response + */ + protected function _performRequest( + $path = '/', + $queryString = '', + $httpVerb = Zend_Http_Client::GET, + $headers = array(), + $forTableStorage = false, + $rawData = null, + $resourceType = Zend_Service_WindowsAzure_Storage::RESOURCE_UNKNOWN, + $requiredPermission = Zend_Service_WindowsAzure_Credentials_CredentialsAbstract::PERMISSION_READ + ) { + // Add headers + $headers['DataServiceVersion'] = '1.0;NetFx'; + $headers['MaxDataServiceVersion'] = '1.0;NetFx'; + + // Perform request + return parent::_performRequest( + $path, + $queryString, + $httpVerb, + $headers, + $forTableStorage, + $rawData, + $resourceType, + $requiredPermission + ); + } + + /** + * Converts a string to a DateTime object. Returns false on failure. + * + * @param string $value The string value to parse + * @return DateTime|boolean + */ + protected function _convertToDateTime($value = '') + { + if ($value instanceof DateTime) { + return $value; + } + + try { + if (substr($value, -1) == 'Z') { + $value = substr($value, 0, strlen($value) - 1); + } + return new DateTime($value, new DateTimeZone('UTC')); + } + catch (Exception $ex) { + return false; + } + } + + /** + * Converts a DateTime object into an Edm.DaeTime value in UTC timezone, + * represented as a string. + * + * @param DateTime $value + * @return string + */ + protected function _convertToEdmDateTime(DateTime $value) + { + $cloned = clone $value; + $cloned->setTimezone(new DateTimeZone('UTC')); + return str_replace('+0000', 'Z', $cloned->format(DateTime::ISO8601)); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/TableEntity.php b/library/Zend/Service/WindowsAzure/Storage/TableEntity.php new file mode 100755 index 000000000..af1acfd06 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/TableEntity.php @@ -0,0 +1,354 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service_WindowsAzure + * @subpackage Storage + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Service_WindowsAzure + * @subpackage Storage + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_WindowsAzure_Storage_TableEntity +{ + /** + * Partition key + * + * @var string + */ + protected $_partitionKey; + + /** + * Row key + * + * @var string + */ + protected $_rowKey; + + /** + * Timestamp + * + * @var string + */ + protected $_timestamp; + + /** + * Etag + * + * @var string + */ + protected $_etag = ''; + + /** + * Constructor + * + * @param string $partitionKey Partition key + * @param string $rowKey Row key + */ + public function __construct($partitionKey = '', $rowKey = '') + { + $this->_partitionKey = $partitionKey; + $this->_rowKey = $rowKey; + } + + /** + * Get partition key + * + * @azure PartitionKey + * @return string + */ + public function getPartitionKey() + { + return $this->_partitionKey; + } + + /** + * Set partition key + * + * @azure PartitionKey + * @param string $value + */ + public function setPartitionKey($value) + { + $this->_partitionKey = $value; + } + + /** + * Get row key + * + * @azure RowKey + * @return string + */ + public function getRowKey() + { + return $this->_rowKey; + } + + /** + * Set row key + * + * @azure RowKey + * @param string $value + */ + public function setRowKey($value) + { + $this->_rowKey = $value; + } + + /** + * Get timestamp + * + * @azure Timestamp Edm.DateTime + * @return string + */ + public function getTimestamp() + { + if (null === $this->_timestamp) { + $this->setTimestamp(new DateTime()); + } + return $this->_timestamp; + } + + /** + * Set timestamp + * + * @azure Timestamp Edm.DateTime + * @param DateTime $value + */ + public function setTimestamp(DateTime $value) + { + $this->_timestamp = $value; + } + + /** + * Get etag + * + * @return string + */ + public function getEtag() + { + return $this->_etag; + } + + /** + * Set etag + * + * @param string $value + */ + public function setEtag($value = '') + { + $this->_etag = $value; + } + + /** + * Get Azure values + * + * @return array + */ + public function getAzureValues() + { + // Get accessors + $accessors = self::getAzureAccessors(get_class($this)); + + // Loop accessors and retrieve values + $returnValue = array(); + foreach ($accessors as $accessor) { + if ($accessor->EntityType == 'ReflectionProperty') { + $property = $accessor->EntityAccessor; + $returnValue[] = (object)array( + 'Name' => $accessor->AzurePropertyName, + 'Type' => $accessor->AzurePropertyType, + 'Value' => $this->$property, + ); + } else if ($accessor->EntityType == 'ReflectionMethod' && substr(strtolower($accessor->EntityAccessor), 0, 3) == 'get') { + $method = $accessor->EntityAccessor; + $returnValue[] = (object)array( + 'Name' => $accessor->AzurePropertyName, + 'Type' => $accessor->AzurePropertyType, + 'Value' => $this->$method(), + ); + } + } + + // Return + return $returnValue; + } + + /** + * Set Azure values + * + * @param array $values + * @param boolean $throwOnError Throw Zend_Service_WindowsAzure_Exception when a property is not specified in $values? + * @throws Zend_Service_WindowsAzure_Exception + */ + public function setAzureValues($values = array(), $throwOnError = false) + { + // Get accessors + $accessors = self::getAzureAccessors(get_class($this)); + + // Loop accessors and set values + $returnValue = array(); + foreach ($accessors as $accessor) { + if (isset($values[$accessor->AzurePropertyName])) { + // Cast to correct type + if ($accessor->AzurePropertyType != '') { + switch (strtolower($accessor->AzurePropertyType)) { + case 'edm.int32': + case 'edm.int64': + $values[$accessor->AzurePropertyName] = intval($values[$accessor->AzurePropertyName]); break; + case 'edm.boolean': + if ($values[$accessor->AzurePropertyName] == 'true' || $values[$accessor->AzurePropertyName] == '1') + $values[$accessor->AzurePropertyName] = true; + else + $values[$accessor->AzurePropertyName] = false; + break; + case 'edm.double': + $values[$accessor->AzurePropertyName] = floatval($values[$accessor->AzurePropertyName]); break; + case 'edm.datetime': + $values[$accessor->AzurePropertyName] = $this->_convertToDateTime($values[$accessor->AzurePropertyName]); break; + } + } + + // Assign value + if ($accessor->EntityType == 'ReflectionProperty') { + $property = $accessor->EntityAccessor; + $this->$property = $values[$accessor->AzurePropertyName]; + } else if ($accessor->EntityType == 'ReflectionMethod' && substr(strtolower($accessor->EntityAccessor), 0, 3) == 'set') { + $method = $accessor->EntityAccessor; + $this->$method($values[$accessor->AzurePropertyName]); + } + } else if ($throwOnError) { + require_once 'Zend/Service/WindowsAzure/Exception.php'; + throw new Zend_Service_WindowsAzure_Exception("Property '" . $accessor->AzurePropertyName . "' was not found in \$values array"); + } + } + + // Return + return $returnValue; + } + + /** + * Get Azure accessors from class + * + * @param string $className Class to get accessors for + * @return array + */ + public static function getAzureAccessors($className = '') + { + // List of accessors + $azureAccessors = array(); + + // Get all types + $type = new ReflectionClass($className); + + // Loop all properties + $properties = $type->getProperties(); + foreach ($properties as $property) { + $accessor = self::getAzureAccessor($property); + if (!is_null($accessor)) { + $azureAccessors[] = $accessor; + } + } + + // Loop all methods + $methods = $type->getMethods(); + foreach ($methods as $method) { + $accessor = self::getAzureAccessor($method); + if (!is_null($accessor)) { + $azureAccessors[] = $accessor; + } + } + + // Return + return $azureAccessors; + } + + /** + * Get Azure accessor from reflection member + * + * @param ReflectionProperty|ReflectionMethod $member + * @return object + */ + public static function getAzureAccessor($member) + { + // Get comment + $docComment = $member->getDocComment(); + + // Check for Azure comment + if (strpos($docComment, '@azure') === false) + { + return null; + } + + // Search for @azure contents + $azureComment = ''; + $commentLines = explode("\n", $docComment); + foreach ($commentLines as $commentLine) { + if (strpos($commentLine, '@azure') !== false) { + $azureComment = trim(substr($commentLine, strpos($commentLine, '@azure') + 6)); + while (strpos($azureComment, ' ') !== false) { + $azureComment = str_replace(' ', ' ', $azureComment); + } + break; + } + } + + // Fetch @azure properties + $azureProperties = explode(' ', $azureComment); + return (object)array( + 'EntityAccessor' => $member->getName(), + 'EntityType' => get_class($member), + 'AzurePropertyName' => $azureProperties[0], + 'AzurePropertyType' => isset($azureProperties[1]) ? $azureProperties[1] : '' + ); + } + + /** + * Converts a string to a DateTime object. Returns false on failure. + * + * @param string $value The string value to parse + * @return DateTime|boolean + */ + protected function _convertToDateTime($value = '') + { + if ($value === '') { + return false; + } + + if ($value instanceof DateTime) { + return $value; + } + + if (@strtotime($value) !== false) { + try { + if (substr($value, -1) == 'Z') { + $value = substr($value, 0, strlen($value) - 1); + } + return new DateTime($value, new DateTimeZone('UTC')); + } + catch (Exception $ex) { + return false; + } + } + + return false; + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/TableEntityQuery.php b/library/Zend/Service/WindowsAzure/Storage/TableEntityQuery.php new file mode 100755 index 000000000..f7904d2ef --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/TableEntityQuery.php @@ -0,0 +1,351 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service_WindowsAzure + * @subpackage Storage + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Service_WindowsAzure + * @subpackage Storage + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_WindowsAzure_Storage_TableEntityQuery +{ + /** + * From + * + * @var string + */ + protected $_from = ''; + + /** + * Where + * + * @var array + */ + protected $_where = array(); + + /** + * Order by + * + * @var array + */ + protected $_orderBy = array(); + + /** + * Top + * + * @var int + */ + protected $_top = null; + + /** + * Partition key + * + * @var string + */ + protected $_partitionKey = null; + + /** + * Row key + * + * @var string + */ + protected $_rowKey = null; + + /** + * Select clause + * + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function select() + { + return $this; + } + + /** + * From clause + * + * @param string $name Table name to select entities from + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function from($name) + { + $this->_from = $name; + return $this; + } + + /** + * Specify partition key + * + * @param string $value Partition key to query for + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function wherePartitionKey($value = null) + { + $this->_partitionKey = $value; + return $this; + } + + /** + * Specify row key + * + * @param string $value Row key to query for + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function whereRowKey($value = null) + { + $this->_rowKey = $value; + return $this; + } + + /** + * Add where clause + * + * @param string $condition Condition, can contain question mark(s) (?) for parameter insertion. + * @param string|array $value Value(s) to insert in question mark (?) parameters. + * @param string $cond Condition for the clause (and/or/not) + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function where($condition, $value = null, $cond = '') + { + $condition = $this->_replaceOperators($condition); + + if (!is_null($value)) { + $condition = $this->_quoteInto($condition, $value); + } + + if (count($this->_where) == 0) { + $cond = ''; + } else if ($cond !== '') { + $cond = ' ' . strtolower(trim($cond)) . ' '; + } + + $this->_where[] = $cond . $condition; + return $this; + } + + /** + * Add where clause with AND condition + * + * @param string $condition Condition, can contain question mark(s) (?) for parameter insertion. + * @param string|array $value Value(s) to insert in question mark (?) parameters. + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function andWhere($condition, $value = null) + { + return $this->where($condition, $value, 'and'); + } + + /** + * Add where clause with OR condition + * + * @param string $condition Condition, can contain question mark(s) (?) for parameter insertion. + * @param string|array $value Value(s) to insert in question mark (?) parameters. + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function orWhere($condition, $value = null) + { + return $this->where($condition, $value, 'or'); + } + + /** + * OrderBy clause + * + * @param string $column Column to sort by + * @param string $direction Direction to sort (asc/desc) + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function orderBy($column, $direction = 'asc') + { + $this->_orderBy[] = $column . ' ' . $direction; + return $this; + } + + /** + * Top clause + * + * @param int $top Top to fetch + * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery + */ + public function top($top = null) + { + $this->_top = (int)$top; + return $this; + } + + /** + * Assembles the query string + * + * @param boolean $urlEncode Apply URL encoding to the query string + * @return string + */ + public function assembleQueryString($urlEncode = false) + { + $query = array(); + if (count($this->_where) != 0) { + $filter = implode('', $this->_where); + $query[] = '$filter=' . ($urlEncode ? self::encodeQuery($filter) : $filter); + } + + if (count($this->_orderBy) != 0) { + $orderBy = implode(',', $this->_orderBy); + $query[] = '$orderby=' . ($urlEncode ? self::encodeQuery($orderBy) : $orderBy); + } + + if (!is_null($this->_top)) { + $query[] = '$top=' . $this->_top; + } + + if (count($query) != 0) { + return '?' . implode('&', $query); + } + + return ''; + } + + /** + * Assemble from + * + * @param boolean $includeParentheses Include parentheses? () + * @return string + */ + public function assembleFrom($includeParentheses = true) + { + $identifier = ''; + if ($includeParentheses) { + $identifier .= '('; + + if (!is_null($this->_partitionKey)) { + $identifier .= 'PartitionKey=\'' . self::encodeQuery($this->_partitionKey) . '\''; + } + + if (!is_null($this->_partitionKey) && !is_null($this->_rowKey)) { + $identifier .= ', '; + } + + if (!is_null($this->_rowKey)) { + $identifier .= 'RowKey=\'' . self::encodeQuery($this->_rowKey) . '\''; + } + + $identifier .= ')'; + } + return $this->_from . $identifier; + } + + /** + * Assemble full query + * + * @return string + */ + public function assembleQuery() + { + $assembledQuery = $this->assembleFrom(); + + $queryString = $this->assembleQueryString(); + if ($queryString !== '') { + $assembledQuery .= $queryString; + } + + return $assembledQuery; + } + + /** + * Quotes a variable into a condition + * + * @param string $text Condition, can contain question mark(s) (?) for parameter insertion. + * @param string|array $value Value(s) to insert in question mark (?) parameters. + * @return string + */ + protected function _quoteInto($text, $value = null) + { + if (!is_array($value)) { + $text = str_replace('?', '\'' . addslashes($value) . '\'', $text); + } else { + $i = 0; + while(strpos($text, '?') !== false) { + if (is_numeric($value[$i])) { + $text = substr_replace($text, $value[$i++], strpos($text, '?'), 1); + } else { + $text = substr_replace($text, '\'' . addslashes($value[$i++]) . '\'', strpos($text, '?'), 1); + } + } + } + return $text; + } + + /** + * Replace operators + * + * @param string $text + * @return string + */ + protected function _replaceOperators($text) + { + $text = str_replace('==', 'eq', $text); + $text = str_replace('>', 'gt', $text); + $text = str_replace('<', 'lt', $text); + $text = str_replace('>=', 'ge', $text); + $text = str_replace('<=', 'le', $text); + $text = str_replace('!=', 'ne', $text); + + $text = str_replace('&&', 'and', $text); + $text = str_replace('||', 'or', $text); + $text = str_replace('!', 'not', $text); + + return $text; + } + + /** + * urlencode a query + * + * @param string $query Query to encode + * @return string Encoded query + */ + public static function encodeQuery($query) + { + $query = str_replace('/', '%2F', $query); + $query = str_replace('?', '%3F', $query); + $query = str_replace(':', '%3A', $query); + $query = str_replace('@', '%40', $query); + $query = str_replace('&', '%26', $query); + $query = str_replace('=', '%3D', $query); + $query = str_replace('+', '%2B', $query); + $query = str_replace(',', '%2C', $query); + $query = str_replace('$', '%24', $query); + $query = str_replace('{', '%7B', $query); + $query = str_replace('}', '%7D', $query); + + $query = str_replace(' ', '%20', $query); + + return $query; + } + + /** + * __toString overload + * + * @return string + */ + public function __toString() + { + return $this->assembleQuery(); + } +} diff --git a/library/Zend/Service/WindowsAzure/Storage/TableInstance.php b/library/Zend/Service/WindowsAzure/Storage/TableInstance.php new file mode 100755 index 000000000..a74e893b6 --- /dev/null +++ b/library/Zend/Service/WindowsAzure/Storage/TableInstance.php @@ -0,0 +1,60 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service_WindowsAzure + * @subpackage Storage + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Service_WindowsAzure_Storage_StorageEntityAbstract + */ +require_once 'Zend/Service/WindowsAzure/Storage/StorageEntityAbstract.php'; + +/** + * @category Zend + * @package Zend_Service_WindowsAzure + * @subpackage Storage + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * + * @property string $Id Id + * @property string $Name Name + * @property string $Href Href + * @property string $Updated Updated + */ +class Zend_Service_WindowsAzure_Storage_TableInstance + extends Zend_Service_WindowsAzure_Storage_StorageEntityAbstract +{ + /** + * Constructor + * + * @param string $id Id + * @param string $name Name + * @param string $href Href + * @param string $updated Updated + */ + public function __construct($id, $name, $href, $updated) + { + $this->_data = array( + 'id' => $id, + 'name' => $name, + 'href' => $href, + 'updated' => $updated + ); + } +} diff --git a/library/Zend/Service/Yahoo.php b/library/Zend/Service/Yahoo.php new file mode 100755 index 000000000..2503435e5 --- /dev/null +++ b/library/Zend/Service/Yahoo.php @@ -0,0 +1,951 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** @see Zend_Xml_Security */ +require_once 'Zend/Xml/Security.php'; + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo +{ + /** + * Yahoo Developer Application ID + * + * @var string + */ + public $appId; + + /** + * Reference to the REST client + * + * @var Zend_Rest_Client + */ + protected $_rest; + + + /** + * Sets the application ID and instantiates the REST client + * + * @param string $appId specified the developer's appid + * @return void + */ + public function __construct($appId) + { + $this->appId = (string) $appId; + /** + * @see Zend_Rest_Client + */ + require_once 'Zend/Rest/Client.php'; + $this->_rest = new Zend_Rest_Client('http://search.yahooapis.com'); + } + + + /** + * Retrieve Inlink Data from siteexplorer.yahoo.com. A basic query + * consists simply of a URL. Additional options that can be + * specified consist of: + * 'results' => int How many results to return, max is 100 + * 'start' => int The start offset for search results + * 'entire_site' => bool Data for the whole site or a single page + * 'omit_inlinks' => (none|domain|subdomain) Filter inlinks from these sources + * + * @param string $query the query being run + * @param array $options any optional parameters + * @return Zend_Service_Yahoo_ResultSet The return set + * @throws Zend_Service_Exception + */ + public function inlinkDataSearch($query, array $options = array()) + { + static $defaultOptions = array('results' => '50', + 'start' => 1); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + $this->_validateInlinkDataSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://search.yahooapis.com'); + $response = $this->_rest->restGet('/SiteExplorerService/V1/inlinkData', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_Yahoo_InlinkDataResultSet + */ + require_once 'Zend/Service/Yahoo/InlinkDataResultSet.php'; + return new Zend_Service_Yahoo_InlinkDataResultSet($dom); + } + + + /** + * Perform a search of images. The most basic query consists simply + * of a plain text search, but you can also specify the type of + * image, the format, color, etc. + * + * The specific options are: + * 'type' => (all|any|phrase) How to parse the query terms + * 'results' => int How many results to return, max is 50 + * 'start' => int The start offset for search results + * 'format' => (any|bmp|gif|jpeg|png) The type of images to search for + * 'coloration' => (any|color|bw) The coloration of images to search for + * 'adult_ok' => bool Flag to allow 'adult' images. + * + * @param string $query the query to be run + * @param array $options an optional array of query options + * @return Zend_Service_Yahoo_ImageResultSet the search results + * @throws Zend_Service_Exception + */ + public function imageSearch($query, array $options = array()) + { + static $defaultOptions = array('type' => 'all', + 'results' => 10, + 'start' => 1, + 'format' => 'any', + 'coloration' => 'any'); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + + $this->_validateImageSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://search.yahooapis.com'); + $response = $this->_rest->restGet('/ImageSearchService/V1/imageSearch', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_YahooImageResultSet + */ + require_once 'Zend/Service/Yahoo/ImageResultSet.php'; + return new Zend_Service_Yahoo_ImageResultSet($dom); + } + + + /** + * Perform a search on local.yahoo.com. The basic search + * consists of a query and some fragment of location information; + * for example zipcode, latitude/longitude, or street address. + * + * Query options include: + * 'results' => int How many results to return, max is 50 + * 'start' => int The start offset for search results + * 'sort' => (relevance|title|distance|rating) How to order your results + * + * 'radius' => float The radius (in miles) in which to search + * + * 'longitude' => float The longitude of the location to search around + * 'latitude' => float The latitude of the location to search around + * + * 'zip' => string The zipcode to search around + * + * 'street' => string The street address to search around + * 'city' => string The city for address search + * 'state' => string The state for address search + * 'location' => string An adhoc location string to search around + * + * @param string $query The query string you want to run + * @param array $options The search options, including location + * @return Zend_Service_Yahoo_LocalResultSet The results + * @throws Zend_Service_Exception + */ + public function localSearch($query, array $options = array()) + { + static $defaultOptions = array('results' => 10, + 'start' => 1, + 'sort' => 'distance', + 'radius' => 5); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + + $this->_validateLocalSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://local.yahooapis.com'); + $response = $this->_rest->restGet('/LocalSearchService/V1/localSearch', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_Yahoo_LocalResultSet + */ + require_once 'Zend/Service/Yahoo/LocalResultSet.php'; + return new Zend_Service_Yahoo_LocalResultSet($dom); + } + + + /** + * Execute a search on news.yahoo.com. This method minimally takes a + * text query to search on. + * + * Query options coonsist of: + * + * 'results' => int How many results to return, max is 50 + * 'start' => int The start offset for search results + * 'sort' => (rank|date) How to order your results + * 'language' => lang The target document language to match + * 'type' => (all|any|phrase) How the query should be parsed + * 'site' => string A site to which your search should be restricted + * + * @param string $query The query to run + * @param array $options The array of optional parameters + * @return Zend_Service_Yahoo_NewsResultSet The query return set + * @throws Zend_Service_Exception + */ + public function newsSearch($query, array $options = array()) + { + static $defaultOptions = array('type' => 'all', + 'start' => 1, + 'sort' => 'rank'); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + + $this->_validateNewsSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://search.yahooapis.com'); + $response = $this->_rest->restGet('/NewsSearchService/V1/newsSearch', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_Yahoo_NewsResultSet + */ + require_once 'Zend/Service/Yahoo/NewsResultSet.php'; + return new Zend_Service_Yahoo_NewsResultSet($dom); + } + + + /** + * Retrieve Page Data from siteexplorer.yahoo.com. A basic query + * consists simply of a URL. Additional options that can be + * specified consist of: + * 'results' => int How many results to return, max is 100 + * 'start' => int The start offset for search results + * 'domain_only' => bool Data for just the given domain or all sub-domains also + * + * @param string $query the query being run + * @param array $options any optional parameters + * @return Zend_Service_Yahoo_ResultSet The return set + * @throws Zend_Service_Exception + */ + public function pageDataSearch($query, array $options = array()) + { + static $defaultOptions = array('results' => '50', + 'start' => 1); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + $this->_validatePageDataSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://search.yahooapis.com'); + $response = $this->_rest->restGet('/SiteExplorerService/V1/pageData', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_Yahoo_PageDataResultSet + */ + require_once 'Zend/Service/Yahoo/PageDataResultSet.php'; + return new Zend_Service_Yahoo_PageDataResultSet($dom); + } + + + /** + * Perform a search of videos. The most basic query consists simply + * of a plain text search, but you can also specify the format of + * video. + * + * The specific options are: + * 'type' => (all|any|phrase) How to parse the query terms + * 'results' => int How many results to return, max is 50 + * 'start' => int The start offset for search results + * 'format' => (any|avi|flash|mpeg|msmedia|quicktime|realmedia) The type of videos to search for + * 'adult_ok' => bool Flag to allow 'adult' videos. + * + * @param string $query the query to be run + * @param array $options an optional array of query options + * @return Zend_Service_Yahoo_VideoResultSet the search results + * @throws Zend_Service_Exception + */ + public function videoSearch($query, array $options = array()) + { + static $defaultOptions = array('type' => 'all', + 'results' => 10, + 'start' => 1, + 'format' => 'any'); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + + $this->_validateVideoSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://search.yahooapis.com'); + $response = $this->_rest->restGet('/VideoSearchService/V1/videoSearch', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_YahooVideoResultSet + */ + require_once 'Zend/Service/Yahoo/VideoResultSet.php'; + return new Zend_Service_Yahoo_VideoResultSet($dom); + } + + + /** + * Perform a web content search on search.yahoo.com. A basic query + * consists simply of a text query. Additional options that can be + * specified consist of: + * 'results' => int How many results to return, max is 50 + * 'start' => int The start offset for search results + * 'language' => lang The target document language to match + * 'type' => (all|any|phrase) How the query should be parsed + * 'site' => string A site to which your search should be restricted + * 'format' => (any|html|msword|pdf|ppt|rss|txt|xls) + * 'adult_ok' => bool permit 'adult' content in the search results + * 'similar_ok' => bool permit similar results in the result set + * 'country' => string The country code for the content searched + * 'license' => (any|cc_any|cc_commercial|cc_modifiable) The license of content being searched + * 'region' => The regional search engine on which the service performs the search. default us. + * + * @param string $query the query being run + * @param array $options any optional parameters + * @return Zend_Service_Yahoo_WebResultSet The return set + * @throws Zend_Service_Exception + */ + public function webSearch($query, array $options = array()) + { + static $defaultOptions = array('type' => 'all', + 'start' => 1, + 'results' => 10, + 'format' => 'any'); + + $options = $this->_prepareOptions($query, $options, $defaultOptions); + $this->_validateWebSearch($options); + + $this->_rest->getHttpClient()->resetParameters(); + $this->_rest->setUri('http://search.yahooapis.com'); + $response = $this->_rest->restGet('/WebSearchService/V1/webSearch', $options); + + if ($response->isError()) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('An error occurred sending request. Status code: ' . + $response->getStatus()); + } + + $dom = new DOMDocument(); + $dom = Zend_Xml_Security::scan($response->getBody(), $dom); + self::_checkErrors($dom); + + /** + * @see Zend_Service_Yahoo_WebResultSet + */ + require_once 'Zend/Service/Yahoo/WebResultSet.php'; + return new Zend_Service_Yahoo_WebResultSet($dom); + } + + + /** + * Returns a reference to the REST client + * + * @return Zend_Rest_Client + */ + public function getRestClient() + { + return $this->_rest; + } + + + /** + * Validate Inlink Data Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateInlinkDataSearch(array $options) + { + $validOptions = array('appid', 'query', 'results', 'start', 'entire_site', 'omit_inlinks'); + + $this->_compareOptions($options, $validOptions); + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 100, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(100)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + + if (isset($options['omit_inlinks'])) { + $this->_validateInArray('omit_inlinks', $options['omit_inlinks'], array('none', 'domain', 'subdomain')); + } + } + + + /** + * Validate Image Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateImageSearch(array $options) + { + $validOptions = array('appid', 'query', 'type', 'results', 'start', 'format', 'coloration', 'adult_ok'); + + $this->_compareOptions($options, $validOptions); + + if (isset($options['type'])) { + switch($options['type']) { + case 'all': + case 'any': + case 'phrase': + break; + default: + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'type': '{$options['type']}'"); + } + } + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 50, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(50)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + + if (isset($options['format'])) { + switch ($options['format']) { + case 'any': + case 'bmp': + case 'gif': + case 'jpeg': + case 'png': + break; + default: + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'format': {$options['format']}"); + } + } + + if (isset($options['coloration'])) { + switch ($options['coloration']) { + case 'any': + case 'color': + case 'bw': + break; + default: + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'coloration': " + . "{$options['coloration']}"); + } + } + } + + + /** + * Validate Local Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateLocalSearch(array $options) + { + $validOptions = array('appid', 'query', 'results', 'start', 'sort', 'radius', 'street', + 'city', 'state', 'zip', 'location', 'latitude', 'longitude'); + + $this->_compareOptions($options, $validOptions); + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 20, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(20)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + + if (isset($options['longitude']) && !$between->setMin(-90)->setMax(90)->isValid($options['longitude'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'longitude': {$options['longitude']}"); + } + + if (isset($options['latitude']) && !$between->setMin(-180)->setMax(180)->isValid($options['latitude'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'latitude': {$options['latitude']}"); + } + + if (isset($options['zip']) && !preg_match('/(^\d{5}$)|(^\d{5}-\d{4}$)/', $options['zip'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'zip': {$options['zip']}"); + } + + $hasLocation = false; + $locationFields = array('street', 'city', 'state', 'zip', 'location'); + foreach ($locationFields as $field) { + if (isset($options[$field]) && $options[$field] != '') { + $hasLocation = true; + break; + } + } + + if (!$hasLocation && (!isset($options['latitude']) || !isset($options['longitude']))) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('Location data are required but missing'); + } + + if (!in_array($options['sort'], array('relevance', 'title', 'distance', 'rating'))) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'sort': {$options['sort']}"); + } + } + + + /** + * Validate News Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateNewsSearch(array $options) + { + $validOptions = array('appid', 'query', 'results', 'start', 'sort', 'language', 'type', 'site'); + + $this->_compareOptions($options, $validOptions); + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 50, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(50)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + + if (isset($options['language'])) { + $this->_validateLanguage($options['language']); + } + + $this->_validateInArray('sort', $options['sort'], array('rank', 'date')); + $this->_validateInArray('type', $options['type'], array('all', 'any', 'phrase')); + } + + + /** + * Validate Page Data Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validatePageDataSearch(array $options) + { + $validOptions = array('appid', 'query', 'results', 'start', 'domain_only'); + + $this->_compareOptions($options, $validOptions); + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 100, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(100)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + } + + + /** + * Validate Video Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateVideoSearch(array $options) + { + $validOptions = array('appid', 'query', 'type', 'results', 'start', 'format', 'adult_ok'); + + $this->_compareOptions($options, $validOptions); + + if (isset($options['type'])) { + $this->_validateInArray('type', $options['type'], array('all', 'any', 'phrase')); + } + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 50, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(50)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + + if (isset($options['format'])) { + $this->_validateInArray('format', $options['format'], array('any', 'avi', 'flash', 'mpeg', 'msmedia', 'quicktime', 'realmedia')); + } + } + + + /** + * Validate Web Search Options + * + * @param array $options + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateWebSearch(array $options) + { + $validOptions = array('appid', 'query', 'results', 'start', 'language', 'type', 'format', 'adult_ok', + 'similar_ok', 'country', 'site', 'subscription', 'license', 'region'); + + $this->_compareOptions($options, $validOptions); + + /** + * @see Zend_Validate_Between + */ + require_once 'Zend/Validate/Between.php'; + $between = new Zend_Validate_Between(1, 100, true); + + if (isset($options['results']) && !$between->setMin(1)->setMax(100)->isValid($options['results'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'results': {$options['results']}"); + } + + if (isset($options['start']) && !$between->setMin(1)->setMax(1000)->isValid($options['start'])) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option 'start': {$options['start']}"); + } + + if (isset($options['language'])) { + $this->_validateLanguage($options['language']); + } + + $this->_validateInArray('type', $options['type'], array('all', 'any', 'phrase')); + $this->_validateInArray('format', $options['format'], array('any', 'html', 'msword', 'pdf', 'ppt', 'rss', + 'txt', 'xls')); + if (isset($options['license'])) { + $this->_validateInArray('license', $options['license'], array('any', 'cc_any', 'cc_commercial', + 'cc_modifiable')); + } + + if (isset($options['region'])){ + $this->_validateInArray('region', $options['region'], array('ar', 'au', 'at', 'br', 'ca', 'ct', 'dk', 'fi', + 'fr', 'de', 'in', 'id', 'it', 'my', 'mx', + 'nl', 'no', 'ph', 'ru', 'sg', 'es', 'se', + 'ch', 'th', 'uk', 'us')); + } + } + + + /** + * Prepare options for sending to Yahoo! + * + * @param string $query Search Query + * @param array $options User specified options + * @param array $defaultOptions Required/Default options + * @return array + */ + protected function _prepareOptions($query, array $options, array $defaultOptions = array()) + { + $options['appid'] = $this->appId; + $options['query'] = (string) $query; + + return array_merge($defaultOptions, $options); + } + + + /** + * Throws an exception if the chosen language is not supported + * + * @param string $lang Language code + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateLanguage($lang) + { + $languages = array('ar', 'bg', 'ca', 'szh', 'tzh', 'hr', 'cs', 'da', 'nl', 'en', 'et', 'fi', 'fr', 'de', 'el', + 'he', 'hu', 'is', 'id', 'it', 'ja', 'ko', 'lv', 'lt', 'no', 'fa', 'pl', 'pt', 'ro', 'ru', 'sk', 'sr', 'sl', + 'es', 'sv', 'th', 'tr' + ); + if (!in_array($lang, $languages)) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("The selected language '$lang' is not supported"); + } + } + + + /** + * Utility function to check for a difference between two arrays. + * + * @param array $options User specified options + * @param array $validOptions Valid options + * @return void + * @throws Zend_Service_Exception if difference is found (e.g., unsupported query option) + */ + protected function _compareOptions(array $options, array $validOptions) + { + $difference = array_diff(array_keys($options), $validOptions); + if ($difference) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('The following parameters are invalid: ' . join(', ', $difference)); + } + } + + + /** + * Check that a named value is in the given array + * + * @param string $name Name associated with the value + * @param mixed $value Value + * @param array $array Array in which to check for the value + * @return void + * @throws Zend_Service_Exception + */ + protected function _validateInArray($name, $value, array $array) + { + if (!in_array($value, $array)) { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception("Invalid value for option '$name': $value"); + } + } + + + /** + * Check if response is an error + * + * @param DOMDocument $dom DOM Object representing the result XML + * @return void + * @throws Zend_Service_Exception Thrown when the result from Yahoo! is an error + */ + protected static function _checkErrors(DOMDocument $dom) + { + $xpath = new DOMXPath($dom); + $xpath->registerNamespace('yapi', 'urn:yahoo:api'); + + if ($xpath->query('//yapi:Error')->length >= 1) { + $message = $xpath->query('//yapi:Error/yapi:Message/text()')->item(0)->data; + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception($message); + } + } +} diff --git a/library/Zend/Service/Yahoo/Image.php b/library/Zend/Service/Yahoo/Image.php new file mode 100755 index 000000000..defdddec4 --- /dev/null +++ b/library/Zend/Service/Yahoo/Image.php @@ -0,0 +1,71 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_Image +{ + /** + * Image URL + * + * @var string + */ + public $Url; + + /** + * Image height in pixels + * + * @var int + */ + public $Height; + + /** + * Image width in pixels + * + * @var int + */ + public $Width; + + + /** + * Initializes the image + * + * @param DOMNode $dom + * @param string $namespace + * @return void + */ + public function __construct(DOMNode $dom, $namespace) + { + $xpath = new DOMXPath($dom->ownerDocument); + $xpath->registerNamespace('yh', $namespace); + $this->Url = Zend_Uri::factory($xpath->query('./yh:Url/text()', $dom)->item(0)->data); + $this->Height = (int) $xpath->query('./yh:Height/text()', $dom)->item(0)->data; + $this->Width = (int) $xpath->query('./yh:Width/text()', $dom)->item(0)->data; + } +} diff --git a/library/Zend/Service/Yahoo/ImageResult.php b/library/Zend/Service/Yahoo/ImageResult.php new file mode 100755 index 000000000..5f38b9a3e --- /dev/null +++ b/library/Zend/Service/Yahoo/ImageResult.php @@ -0,0 +1,111 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_ImageResult extends Zend_Service_Yahoo_Result +{ + /** + * Summary info for the image + * + * @var string + */ + public $Summary; + + /** + * The URL of the webpage hosting the image + * + * @var string + */ + public $RefererUrl; + + /** + * The size of the files in bytes + * + * @var string + */ + public $FileSize; + + /** + * The type of file (bmp, gif, jpeg, etc.) + * + * @var string + */ + public $FileFormat; + + /** + * The height of the image in pixels + * + * @var string + */ + public $Height; + + /** + * The width of the image in pixels + * + * @var string + */ + public $Width; + + /** + * The thubmnail image for the article, if it exists + * + * @var Zend_Service_Yahoo_Image + */ + public $Thumbnail; + + /** + * Image result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srchmi'; + + + /** + * Initializes the image result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array('Summary', 'RefererUrl', 'FileSize', 'FileFormat', 'Height', 'Width', 'Thumbnail'); + + parent::__construct($result); + + $this->_setThumbnail(); + } +} diff --git a/library/Zend/Service/Yahoo/ImageResultSet.php b/library/Zend/Service/Yahoo/ImageResultSet.php new file mode 100755 index 000000000..b82746832 --- /dev/null +++ b/library/Zend/Service/Yahoo/ImageResultSet.php @@ -0,0 +1,63 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_ImageResult + */ +require_once 'Zend/Service/Yahoo/ImageResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_ImageResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * Image result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srchmi'; + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_ImageResult + */ + public function current() + { + return new Zend_Service_Yahoo_ImageResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Service/Yahoo/InlinkDataResult.php b/library/Zend/Service/Yahoo/InlinkDataResult.php new file mode 100755 index 000000000..f325aff8d --- /dev/null +++ b/library/Zend/Service/Yahoo/InlinkDataResult.php @@ -0,0 +1,58 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_InlinkDataResult extends Zend_Service_Yahoo_Result +{ + /** + * Web result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srch'; + + + /** + * Initializes the web result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array(); + parent::__construct($result); + } +} diff --git a/library/Zend/Service/Yahoo/InlinkDataResultSet.php b/library/Zend/Service/Yahoo/InlinkDataResultSet.php new file mode 100755 index 000000000..3a8b815d1 --- /dev/null +++ b/library/Zend/Service/Yahoo/InlinkDataResultSet.php @@ -0,0 +1,62 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_WebResult + */ +require_once 'Zend/Service/Yahoo/InlinkDataResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_InlinkDataResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * Web result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srch'; + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_InlinkDataResult + */ + public function current() + { + return new Zend_Service_Yahoo_InlinkDataResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Service/Yahoo/LocalResult.php b/library/Zend/Service/Yahoo/LocalResult.php new file mode 100755 index 000000000..9993e9283 --- /dev/null +++ b/library/Zend/Service/Yahoo/LocalResult.php @@ -0,0 +1,124 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_LocalResult extends Zend_Service_Yahoo_Result +{ + /** + * Street address of the result + * + * @var string + */ + public $Address; + + /** + * City in which the result resides + * + * @var string + */ + public $City; + + /** + * State in which the result resides + * + * @var string + */ + public $State; + + /** + * Phone number for the result + * + * @var string + */ + public $Phone; + + /** + * User-submitted rating for the result + * + * @var string + */ + public $Rating; + + /** + * The distance to the result from your specified location + * + * @var string + */ + public $Distance; + + /** + * A URL of a map for the result + * + * @var string + */ + public $MapUrl; + + /** + * The URL for the business website, if known + * + * @var string + */ + public $BusinessUrl; + + /** + * The URL for linking to the business website, if known + * + * @var string + */ + public $BusinessClickUrl; + + /** + * Local result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:lcl'; + + + /** + * Initializes the local result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array('Address','City', 'City', 'State', 'Phone', 'Rating', 'Distance', 'MapUrl', + 'BusinessUrl', 'BusinessClickUrl'); + + parent::__construct($result); + } +} diff --git a/library/Zend/Service/Yahoo/LocalResultSet.php b/library/Zend/Service/Yahoo/LocalResultSet.php new file mode 100755 index 000000000..d2228244e --- /dev/null +++ b/library/Zend/Service/Yahoo/LocalResultSet.php @@ -0,0 +1,84 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_LocalResult + */ +require_once 'Zend/Service/Yahoo/LocalResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_LocalResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * The URL of a webpage containing a map graphic with all returned results plotted on it. + * + * @var string + */ + public $resultSetMapURL; + + /** + * Local result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:lcl'; + + + /** + * Initializes the local result set + * + * @param DOMDocument $dom + * @return void + */ + public function __construct(DOMDocument $dom) + { + parent::__construct($dom); + + $this->resultSetMapURL = $this->_xpath->query('//yh:ResultSetMapUrl/text()')->item(0)->data; + } + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_LocalResult + */ + public function current() + { + return new Zend_Service_Yahoo_LocalResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Service/Yahoo/NewsResult.php b/library/Zend/Service/Yahoo/NewsResult.php new file mode 100755 index 000000000..e71daef57 --- /dev/null +++ b/library/Zend/Service/Yahoo/NewsResult.php @@ -0,0 +1,112 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_NewsResult extends Zend_Service_Yahoo_Result +{ + /** + * Sumamry text associated with the result article + * + * @var string + */ + public $Summary; + + /** + * The company who distributed the article + * + * @var string + */ + public $NewsSource; + + /** + * The URL for the company who distributed the article + * + * @var string + */ + public $NewsSourceUrl; + + /** + * The language the article is in + * + * @var string + */ + public $Language; + + /** + * The date the article was published (in unix timestamp format) + * + * @var string + */ + public $PublishDate; + + /** + * The date the article was modified (in unix timestamp format) + * + * @var string + */ + public $ModificationDate; + + /** + * The thubmnail image for the article, if it exists + * + * @var Zend_Service_Yahoo_Image + */ + public $Thumbnail; + + /** + * News result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:yn'; + + + /** + * Initializes the news result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array('Summary', 'NewsSource', 'NewsSourceUrl', 'Language', 'PublishDate', + 'ModificationDate', 'Thumbnail'); + + parent::__construct($result); + + $this->_setThumbnail(); + } +} diff --git a/library/Zend/Service/Yahoo/NewsResultSet.php b/library/Zend/Service/Yahoo/NewsResultSet.php new file mode 100755 index 000000000..7f2c13120 --- /dev/null +++ b/library/Zend/Service/Yahoo/NewsResultSet.php @@ -0,0 +1,63 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_NewsResult + */ +require_once 'Zend/Service/Yahoo/NewsResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_NewsResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * News result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:yn'; + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_NewsResult + */ + public function current() + { + return new Zend_Service_Yahoo_NewsResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Service/Yahoo/PageDataResult.php b/library/Zend/Service/Yahoo/PageDataResult.php new file mode 100755 index 000000000..a4aa74da2 --- /dev/null +++ b/library/Zend/Service/Yahoo/PageDataResult.php @@ -0,0 +1,58 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_PageDataResult extends Zend_Service_Yahoo_Result +{ + /** + * Web result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srch'; + + + /** + * Initializes the web result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array(); + parent::__construct($result); + } +} diff --git a/library/Zend/Service/Yahoo/PageDataResultSet.php b/library/Zend/Service/Yahoo/PageDataResultSet.php new file mode 100755 index 000000000..60cd4a576 --- /dev/null +++ b/library/Zend/Service/Yahoo/PageDataResultSet.php @@ -0,0 +1,62 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_WebResult + */ +require_once 'Zend/Service/Yahoo/PageDataResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_PageDataResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * Web result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srch'; + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_WebResult + */ + public function current() + { + return new Zend_Service_Yahoo_PageDataResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Service/Yahoo/Result.php b/library/Zend/Service/Yahoo/Result.php new file mode 100755 index 000000000..fcd73d29d --- /dev/null +++ b/library/Zend/Service/Yahoo/Result.php @@ -0,0 +1,126 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_Result +{ + /** + * The title of the search entry + * + * @var string + */ + public $Title; + + /** + * The URL of the found object + * + * @var string + */ + public $Url; + + /** + * The URL for linking to the found object + * + * @var string + */ + public $ClickUrl; + + /** + * Result fields + * + * @var array + */ + protected $_fields; + + /** + * REST response fragment for the result + * + * @var DOMElement + */ + protected $_result; + + /** + * Object for XPath queries + * + * @var DOMXPath + */ + protected $_xpath; + + + /** + * Initializes the result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + // default fields for all search results: + $fields = array('Title', 'Url', 'ClickUrl'); + + // merge w/ child's fields + $this->_fields = array_merge($this->_fields, $fields); + + $this->_xpath = new DOMXPath($result->ownerDocument); + $this->_xpath->registerNamespace('yh', $this->_namespace); + + // add search results to appropriate fields + + foreach ($this->_fields as $f) { + $query = "./yh:$f/text()"; + $node = $this->_xpath->query($query, $result); + if ($node->length == 1) { + $this->{$f} = $node->item(0)->data; + } + } + + $this->_result = $result; + } + + + /** + * Sets the Thumbnail property + * + * @return void + */ + protected function _setThumbnail() + { + $node = $this->_xpath->query('./yh:Thumbnail', $this->_result); + if ($node->length == 1) { + /** + * @see Zend_Service_Yahoo_Image + */ + require_once 'Zend/Service/Yahoo/Image.php'; + $this->Thumbnail = new Zend_Service_Yahoo_Image($node->item(0), $this->_namespace); + } else { + $this->Thumbnail = null; + } + } +} diff --git a/library/Zend/Service/Yahoo/ResultSet.php b/library/Zend/Service/Yahoo/ResultSet.php new file mode 100755 index 000000000..163cafb68 --- /dev/null +++ b/library/Zend/Service/Yahoo/ResultSet.php @@ -0,0 +1,195 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_ResultSet implements SeekableIterator +{ + /** + * Total number of results available + * + * @var int + */ + public $totalResultsAvailable; + + /** + * The number of results in this result set + * + * @var int + */ + public $totalResultsReturned; + + /** + * The offset in the total result set of this search set + * + * @var int + */ + public $firstResultPosition; + + /** + * A DOMNodeList of results + * + * @var DOMNodeList + */ + protected $_results; + + /** + * Yahoo Web Service Return Document + * + * @var DOMDocument + */ + protected $_dom; + + /** + * Xpath Object for $this->_dom + * + * @var DOMXPath + */ + protected $_xpath; + + /** + * Current Index for SeekableIterator + * + * @var int + */ + protected $_currentIndex = 0; + + + /** + * Parse the search response and retrieve the results for iteration + * + * @param DOMDocument $dom the REST fragment for this object + * @return void + */ + public function __construct(DOMDocument $dom) + { + $this->totalResultsAvailable = (int) $dom->documentElement->getAttribute('totalResultsAvailable'); + $this->totalResultsReturned = (int) $dom->documentElement->getAttribute('totalResultsReturned'); + $this->firstResultPosition = (int) $dom->documentElement->getAttribute('firstResultPosition'); + + $this->_dom = $dom; + $this->_xpath = new DOMXPath($dom); + + $this->_xpath->registerNamespace('yh', $this->_namespace); + + $this->_results = $this->_xpath->query('//yh:Result'); + } + + + /** + * Total Number of results returned + * + * @return int Total number of results returned + */ + public function totalResults() + { + return $this->totalResultsReturned; + } + + + /** + * Implement SeekableIterator::current() + * + * Must be implemented by child classes + * + * @throws Zend_Service_Exception + * @return Zend_Service_Yahoo_Result + */ + public function current() + { + /** + * @see Zend_Service_Exception + */ + require_once 'Zend/Service/Exception.php'; + throw new Zend_Service_Exception('Zend_Service_Yahoo_ResultSet::current() must be implemented by child ' + . 'classes'); + } + + + /** + * Implement SeekableIterator::key() + * + * @return int + */ + public function key() + { + return $this->_currentIndex; + } + + + /** + * Implement SeekableIterator::next() + * + * @return void + */ + public function next() + { + $this->_currentIndex += 1; + } + + + /** + * Implement SeekableIterator::rewind() + * + * @return void + */ + public function rewind() + { + $this->_currentIndex = 0; + } + + + /** + * Implement SeekableIterator::seek() + * + * @param int $index + * @return void + * @throws OutOfBoundsException + */ + public function seek($index) + { + $indexInt = (int) $index; + if ($indexInt >= 0 && $indexInt < $this->_results->length) { + $this->_currentIndex = $indexInt; + } else { + throw new OutOfBoundsException("Illegal index '$index'"); + } + } + + + /** + * Implement SeekableIterator::valid() + * + * @return boolean + */ + public function valid() + { + return $this->_currentIndex < $this->_results->length; + } +} diff --git a/library/Zend/Service/Yahoo/VideoResult.php b/library/Zend/Service/Yahoo/VideoResult.php new file mode 100755 index 000000000..7aded4643 --- /dev/null +++ b/library/Zend/Service/Yahoo/VideoResult.php @@ -0,0 +1,132 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_VideoResult extends Zend_Service_Yahoo_Result +{ + /** + * Summary info for the video + * + * @var string + */ + public $Summary; + + /** + * The URL of the webpage hosting the video + * + * @var string + */ + public $RefererUrl; + + /** + * The size of the files in bytes + * + * @var string + */ + public $FileSize; + + /** + * The type of file (bmp, gif, jpeg, etc.) + * + * @var string + */ + public $FileFormat; + + /** + * The height of the video in pixels + * + * @var string + */ + public $Height; + + /** + * The width of the video in pixels + * + * @var string + */ + public $Width; + + /** + * The duration of the video in seconds + * + * @var string + */ + public $Duration; + + /** + * The number of audio channels in the video + * + * @var string + */ + public $Channels; + + /** + * Whether the video is streamed or not + * + * @var boolean + */ + public $Streaming; + + /** + * The thubmnail video for the article, if it exists + * + * @var Zend_Service_Yahoo_Video + */ + public $Thumbnail; + + /** + * Video result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srchmv'; + + + /** + * Initializes the video result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array('Summary', 'RefererUrl', 'FileSize', 'FileFormat', 'Height', 'Width', 'Duration', 'Channels', 'Streaming', 'Thumbnail'); + + parent::__construct($result); + + $this->_setThumbnail(); + } +} diff --git a/library/Zend/Service/Yahoo/VideoResultSet.php b/library/Zend/Service/Yahoo/VideoResultSet.php new file mode 100755 index 000000000..c26ff496e --- /dev/null +++ b/library/Zend/Service/Yahoo/VideoResultSet.php @@ -0,0 +1,63 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_VideoResult + */ +require_once 'Zend/Service/Yahoo/VideoResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_VideoResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * Video result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srchmv'; + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_VideoResult + */ + public function current() + { + return new Zend_Service_Yahoo_VideoResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Service/Yahoo/WebResult.php b/library/Zend/Service/Yahoo/WebResult.php new file mode 100755 index 000000000..7fa318473 --- /dev/null +++ b/library/Zend/Service/Yahoo/WebResult.php @@ -0,0 +1,109 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_Result + */ +require_once 'Zend/Service/Yahoo/Result.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_WebResult extends Zend_Service_Yahoo_Result +{ + /** + * A summary of the result + * + * @var string + */ + public $Summary; + + /** + * The file type of the result (text, html, pdf, etc.) + * + * @var string + */ + public $MimeType; + + /** + * The modification time of the result (as a unix timestamp) + * + * @var string + */ + public $ModificationDate; + + /** + * The URL for the Yahoo cache of this page, if it exists + * + * @var string + */ + public $CacheUrl; + + /** + * The size of the cache entry + * + * @var int + */ + public $CacheSize; + + /** + * Web result namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srch'; + + + /** + * Initializes the web result + * + * @param DOMElement $result + * @return void + */ + public function __construct(DOMElement $result) + { + $this->_fields = array('Summary', 'MimeType', 'ModificationDate'); + parent::__construct($result); + + $this->_xpath = new DOMXPath($result->ownerDocument); + $this->_xpath->registerNamespace('yh', $this->_namespace); + + // check if the cache section exists + $cacheUrl = $this->_xpath->query('./yh:Cache/yh:Url/text()', $result)->item(0); + if ($cacheUrl instanceof DOMNode) + { + $this->CacheUrl = $cacheUrl->data; + } + $cacheSize = $this->_xpath->query('./yh:Cache/yh:Size/text()', $result)->item(0); + if ($cacheSize instanceof DOMNode) + { + $this->CacheSize = (int) $cacheSize->data; + } + } +} diff --git a/library/Zend/Service/Yahoo/WebResultSet.php b/library/Zend/Service/Yahoo/WebResultSet.php new file mode 100755 index 000000000..267f04b4b --- /dev/null +++ b/library/Zend/Service/Yahoo/WebResultSet.php @@ -0,0 +1,63 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +/** + * @see Zend_Service_Yahoo_ResultSet + */ +require_once 'Zend/Service/Yahoo/ResultSet.php'; + + +/** + * @see Zend_Service_Yahoo_WebResult + */ +require_once 'Zend/Service/Yahoo/WebResult.php'; + + +/** + * @category Zend + * @package Zend_Service + * @subpackage Yahoo + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Service_Yahoo_WebResultSet extends Zend_Service_Yahoo_ResultSet +{ + /** + * Web result set namespace + * + * @var string + */ + protected $_namespace = 'urn:yahoo:srch'; + + + /** + * Overrides Zend_Service_Yahoo_ResultSet::current() + * + * @return Zend_Service_Yahoo_WebResult + */ + public function current() + { + return new Zend_Service_Yahoo_WebResult($this->_results->item($this->_currentIndex)); + } +} diff --git a/library/Zend/Session.php b/library/Zend/Session.php new file mode 100755 index 000000000..86073f1b7 --- /dev/null +++ b/library/Zend/Session.php @@ -0,0 +1,911 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + + +/** + * @see Zend_Session_Abstract + */ +require_once 'Zend/Session/Abstract.php'; + +/** + * @see Zend_Session_Namespace + */ +require_once 'Zend/Session/Namespace.php'; + +/** + * @see Zend_Session_SaveHandler_Interface + */ +require_once 'Zend/Session/SaveHandler/Interface.php'; + + +/** + * Zend_Session + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session extends Zend_Session_Abstract +{ + /** + * Whether or not Zend_Session is being used with unit tests + * + * @internal + * @var bool + */ + public static $_unitTestEnabled = false; + + /** + * $_throwStartupException + * + * @var bool|bitset This could also be a combiniation of error codes to catch + */ + protected static $_throwStartupExceptions = true; + + /** + * Check whether or not the session was started + * + * @var bool + */ + private static $_sessionStarted = false; + + /** + * Whether or not the session id has been regenerated this request. + * + * Id regeneration state + * <0 - regenerate requested when session is started + * 0 - do nothing + * >0 - already called session_regenerate_id() + * + * @var int + */ + private static $_regenerateIdState = 0; + + /** + * Private list of php's ini values for ext/session + * null values will default to the php.ini value, otherwise + * the value below will overwrite the default ini value, unless + * the user has set an option explicity with setOptions() + * + * @var array + */ + private static $_defaultOptions = array( + 'save_path' => null, + 'name' => null, /* this should be set to a unique value for each application */ + 'save_handler' => null, + //'auto_start' => null, /* intentionally excluded (see manual) */ + 'gc_probability' => null, + 'gc_divisor' => null, + 'gc_maxlifetime' => null, + 'serialize_handler' => null, + 'cookie_lifetime' => null, + 'cookie_path' => null, + 'cookie_domain' => null, + 'cookie_secure' => null, + 'cookie_httponly' => null, + 'use_cookies' => null, + 'use_only_cookies' => 'on', + 'referer_check' => null, + 'entropy_file' => null, + 'entropy_length' => null, + 'cache_limiter' => null, + 'cache_expire' => null, + 'use_trans_sid' => null, + 'bug_compat_42' => null, + 'bug_compat_warn' => null, + 'hash_function' => null, + 'hash_bits_per_character' => null + ); + + /** + * List of options pertaining to Zend_Session that can be set by developers + * using Zend_Session::setOptions(). This list intentionally duplicates + * the individual declaration of static "class" variables by the same names. + * + * @var array + */ + private static $_localOptions = array( + 'strict' => '_strict', + 'remember_me_seconds' => '_rememberMeSeconds', + 'throw_startup_exceptions' => '_throwStartupExceptions' + ); + + /** + * Whether or not write close has been performed. + * + * @var bool + */ + private static $_writeClosed = false; + + /** + * Whether or not session id cookie has been deleted + * + * @var bool + */ + private static $_sessionCookieDeleted = false; + + /** + * Whether or not session has been destroyed via session_destroy() + * + * @var bool + */ + private static $_destroyed = false; + + /** + * Whether or not session must be initiated before usage + * + * @var bool + */ + private static $_strict = false; + + /** + * Default number of seconds the session will be remembered for when asked to be remembered + * + * @var int + */ + private static $_rememberMeSeconds = 1209600; // 2 weeks + + /** + * Whether the default options listed in Zend_Session::$_localOptions have been set + * + * @var bool + */ + private static $_defaultOptionsSet = false; + + /** + * A reference to the set session save handler + * + * @var Zend_Session_SaveHandler_Interface + */ + private static $_saveHandler = null; + + + /** + * Constructor overriding - make sure that a developer cannot instantiate + */ + protected function __construct() + { + } + + + /** + * setOptions - set both the class specified + * + * @param array $userOptions - pass-by-keyword style array of <option name, option value> pairs + * @throws Zend_Session_Exception + * @return void + */ + public static function setOptions(array $userOptions = array()) + { + // set default options on first run only (before applying user settings) + if (!self::$_defaultOptionsSet) { + foreach (self::$_defaultOptions as $defaultOptionName => $defaultOptionValue) { + if (isset(self::$_defaultOptions[$defaultOptionName])) { + ini_set("session.$defaultOptionName", $defaultOptionValue); + } + } + + self::$_defaultOptionsSet = true; + } + + // set the options the user has requested to set + foreach ($userOptions as $userOptionName => $userOptionValue) { + + $userOptionName = strtolower($userOptionName); + + // set the ini based values + if (array_key_exists($userOptionName, self::$_defaultOptions)) { + ini_set("session.$userOptionName", $userOptionValue); + } + elseif (isset(self::$_localOptions[$userOptionName])) { + self::${self::$_localOptions[$userOptionName]} = $userOptionValue; + } + else { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("Unknown option: $userOptionName = $userOptionValue"); + } + } + } + + /** + * getOptions() + * + * @param string $optionName OPTIONAL + * @return array|string + */ + public static function getOptions($optionName = null) + { + $options = array(); + foreach (ini_get_all('session') as $sysOptionName => $sysOptionValues) { + $options[substr($sysOptionName, 8)] = $sysOptionValues['local_value']; + } + foreach (self::$_localOptions as $localOptionName => $localOptionMemberName) { + $options[$localOptionName] = self::${$localOptionMemberName}; + } + + if ($optionName) { + if (array_key_exists($optionName, $options)) { + return $options[$optionName]; + } + return null; + } + + return $options; + } + + /** + * setSaveHandler() - Session Save Handler assignment + * + * @param Zend_Session_SaveHandler_Interface $interface + * @throws Zend_Session_Exception When the session_set_save_handler call fails + * @return void + */ + public static function setSaveHandler(Zend_Session_SaveHandler_Interface $saveHandler) + { + self::$_saveHandler = $saveHandler; + + if (self::$_unitTestEnabled) { + return; + } + + $result = session_set_save_handler( + array(&$saveHandler, 'open'), + array(&$saveHandler, 'close'), + array(&$saveHandler, 'read'), + array(&$saveHandler, 'write'), + array(&$saveHandler, 'destroy'), + array(&$saveHandler, 'gc') + ); + + if (!$result) { + throw new Zend_Session_Exception('Unable to set session handler'); + } + } + + + /** + * getSaveHandler() - Get the session Save Handler + * + * @return Zend_Session_SaveHandler_Interface + */ + public static function getSaveHandler() + { + return self::$_saveHandler; + } + + + /** + * regenerateId() - Regenerate the session id. Best practice is to call this after + * session is started. If called prior to session starting, session id will be regenerated + * at start time. + * + * @throws Zend_Session_Exception + * @return void + */ + public static function regenerateId() + { + if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("You must call " . __CLASS__ . '::' . __FUNCTION__ . + "() before any output has been sent to the browser; output started in {$filename}/{$linenum}"); + } + + if ( !self::$_sessionStarted ) { + self::$_regenerateIdState = -1; + } else { + if (!self::$_unitTestEnabled) { + session_regenerate_id(true); + } + self::$_regenerateIdState = 1; + } + } + + + /** + * rememberMe() - Write a persistent cookie that expires after a number of seconds in the future. If no number of + * seconds is specified, then this defaults to self::$_rememberMeSeconds. Due to clock errors on end users' systems, + * large values are recommended to avoid undesirable expiration of session cookies. + * + * @param int $seconds OPTIONAL specifies TTL for cookie in seconds from present time + * @return void + */ + public static function rememberMe($seconds = null) + { + $seconds = (int) $seconds; + $seconds = ($seconds > 0) ? $seconds : self::$_rememberMeSeconds; + + self::rememberUntil($seconds); + } + + + /** + * forgetMe() - Write a volatile session cookie, removing any persistent cookie that may have existed. The session + * would end upon, for example, termination of a web browser program. + * + * @return void + */ + public static function forgetMe() + { + self::rememberUntil(0); + } + + + /** + * rememberUntil() - This method does the work of changing the state of the session cookie and making + * sure that it gets resent to the browser via regenerateId() + * + * @param int $seconds + * @return void + */ + public static function rememberUntil($seconds = 0) + { + if (self::$_unitTestEnabled) { + self::regenerateId(); + return; + } + + $cookieParams = session_get_cookie_params(); + + session_set_cookie_params( + $seconds, + $cookieParams['path'], + $cookieParams['domain'], + $cookieParams['secure'] + ); + + // normally "rememberMe()" represents a security context change, so should use new session id + self::regenerateId(); + } + + + /** + * sessionExists() - whether or not a session exists for the current request + * + * @return bool + */ + public static function sessionExists() + { + if ((bool)ini_get('session.use_cookies') == true && isset($_COOKIE[session_name()])) { + return true; + } elseif ((bool)ini_get('session.use_only_cookies') == false && isset($_REQUEST[session_name()])) { + return true; + } elseif (self::$_unitTestEnabled) { + return true; + } + + return false; + } + + + /** + * Whether or not session has been destroyed via session_destroy() + * + * @return bool + */ + public static function isDestroyed() + { + return self::$_destroyed; + } + + + /** + * start() - Start the session. + * + * @param bool|array $options OPTIONAL Either user supplied options, or flag indicating if start initiated automatically + * @throws Zend_Session_Exception + * @return void + */ + public static function start($options = false) + { + // Check to see if we've been passed an invalid session ID + if ( self::getId() && !self::_checkId(self::getId()) ) { + // Generate a valid, temporary replacement + self::setId(md5(self::getId())); + // Force a regenerate after session is started + self::$_regenerateIdState = -1; + } + + if (self::$_sessionStarted && self::$_destroyed) { + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('The session was explicitly destroyed during this request, attempting to re-start is not allowed.'); + } + + if (self::$_sessionStarted) { + return; // already started + } + + // make sure our default options (at the least) have been set + if (!self::$_defaultOptionsSet) { + self::setOptions(is_array($options) ? $options : array()); + } + + // In strict mode, do not allow auto-starting Zend_Session, such as via "new Zend_Session_Namespace()" + if (self::$_strict && $options === true) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('You must explicitly start the session with Zend_Session::start() when session options are set to strict.'); + } + + $filename = $linenum = null; + if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("Session must be started before any output has been sent to the browser;" + . " output started in {$filename}/{$linenum}"); + } + + // See http://www.php.net/manual/en/ref.session.php for explanation + if (!self::$_unitTestEnabled && defined('SID')) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('session has already been started by session.auto-start or session_start()'); + } + + /** + * Hack to throw exceptions on start instead of php errors + * @see http://framework.zend.com/issues/browse/ZF-1325 + */ + + $errorLevel = (is_int(self::$_throwStartupExceptions)) ? self::$_throwStartupExceptions : E_ALL; + + /** @see Zend_Session_Exception */ + if (!self::$_unitTestEnabled) { + + if (self::$_throwStartupExceptions) { + require_once 'Zend/Session/Exception.php'; + set_error_handler(array('Zend_Session_Exception', 'handleSessionStartError'), $errorLevel); + } + + $startedCleanly = session_start(); + + if (self::$_throwStartupExceptions) { + restore_error_handler(); + } + + if (!$startedCleanly || Zend_Session_Exception::$sessionStartError != null) { + if (self::$_throwStartupExceptions) { + set_error_handler(array('Zend_Session_Exception', 'handleSilentWriteClose'), $errorLevel); + } + session_write_close(); + if (self::$_throwStartupExceptions) { + restore_error_handler(); + throw new Zend_Session_Exception(__CLASS__ . '::' . __FUNCTION__ . '() - ' . Zend_Session_Exception::$sessionStartError); + } + } + } + + parent::$_readable = true; + parent::$_writable = true; + self::$_sessionStarted = true; + if (self::$_regenerateIdState === -1) { + self::regenerateId(); + } + + // run validators if they exist + if (isset($_SESSION['__ZF']['VALID'])) { + self::_processValidators(); + } + + self::_processStartupMetadataGlobal(); + } + + /** + * Perform a hash-bits check on the session ID + * + * @param string $id Session ID + * @return bool + */ + protected static function _checkId($id) + { + $saveHandler = ini_get('session.save_handler'); + if ($saveHandler == 'cluster') { // Zend Server SC, validate only after last dash + $dashPos = strrpos($id, '-'); + if ($dashPos) { + $id = substr($id, $dashPos + 1); + } + } + + $hashBitsPerChar = ini_get('session.hash_bits_per_character'); + if (!$hashBitsPerChar) { + $hashBitsPerChar = 5; // the default value + } + switch($hashBitsPerChar) { + case 4: $pattern = '^[0-9a-f]*$'; break; + case 5: $pattern = '^[0-9a-v]*$'; break; + case 6: $pattern = '^[0-9a-zA-Z-,]*$'; break; + } + return preg_match('#'.$pattern.'#', $id); + } + + + /** + * _processGlobalMetadata() - this method initizes the sessions GLOBAL + * metadata, mostly global data expiration calculations. + * + * @return void + */ + private static function _processStartupMetadataGlobal() + { + // process global metadata + if (isset($_SESSION['__ZF'])) { + + // expire globally expired values + foreach ($_SESSION['__ZF'] as $namespace => $namespace_metadata) { + + // Expire Namespace by Time (ENT) + if (isset($namespace_metadata['ENT']) && ($namespace_metadata['ENT'] > 0) && (time() > $namespace_metadata['ENT']) ) { + unset($_SESSION[$namespace]); + unset($_SESSION['__ZF'][$namespace]); + } + + // Expire Namespace by Global Hop (ENGH) if it wasnt expired above + if (isset($_SESSION['__ZF'][$namespace]) && isset($namespace_metadata['ENGH']) && $namespace_metadata['ENGH'] >= 1) { + + $_SESSION['__ZF'][$namespace]['ENGH']--; + + if ($_SESSION['__ZF'][$namespace]['ENGH'] === 0) { + if (isset($_SESSION[$namespace])) { + parent::$_expiringData[$namespace] = $_SESSION[$namespace]; + unset($_SESSION[$namespace]); + } + unset($_SESSION['__ZF'][$namespace]); + } + } + + // Expire Namespace Variables by Time (ENVT) + if (isset($namespace_metadata['ENVT'])) { + foreach ($namespace_metadata['ENVT'] as $variable => $time) { + if (time() > $time) { + unset($_SESSION[$namespace][$variable]); + unset($_SESSION['__ZF'][$namespace]['ENVT'][$variable]); + } + } + if (empty($_SESSION['__ZF'][$namespace]['ENVT'])) { + unset($_SESSION['__ZF'][$namespace]['ENVT']); + } + } + + // Expire Namespace Variables by Global Hop (ENVGH) + if (isset($namespace_metadata['ENVGH'])) { + foreach ($namespace_metadata['ENVGH'] as $variable => $hops) { + $_SESSION['__ZF'][$namespace]['ENVGH'][$variable]--; + + if ($_SESSION['__ZF'][$namespace]['ENVGH'][$variable] === 0) { + if (isset($_SESSION[$namespace][$variable])) { + parent::$_expiringData[$namespace][$variable] = $_SESSION[$namespace][$variable]; + unset($_SESSION[$namespace][$variable]); + } + unset($_SESSION['__ZF'][$namespace]['ENVGH'][$variable]); + } + } + if (empty($_SESSION['__ZF'][$namespace]['ENVGH'])) { + unset($_SESSION['__ZF'][$namespace]['ENVGH']); + } + } + + if (isset($namespace) && empty($_SESSION['__ZF'][$namespace])) { + unset($_SESSION['__ZF'][$namespace]); + } + } + } + + if (isset($_SESSION['__ZF']) && empty($_SESSION['__ZF'])) { + unset($_SESSION['__ZF']); + } + } + + + /** + * isStarted() - convenience method to determine if the session is already started. + * + * @return bool + */ + public static function isStarted() + { + return self::$_sessionStarted; + } + + + /** + * isRegenerated() - convenience method to determine if session_regenerate_id() + * has been called during this request by Zend_Session. + * + * @return bool + */ + public static function isRegenerated() + { + return ( (self::$_regenerateIdState > 0) ? true : false ); + } + + + /** + * getId() - get the current session id + * + * @return string + */ + public static function getId() + { + return session_id(); + } + + + /** + * setId() - set an id to a user specified id + * + * @throws Zend_Session_Exception + * @param string $id + * @return void + */ + public static function setId($id) + { + if (!self::$_unitTestEnabled && defined('SID')) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('The session has already been started. The session id must be set first.'); + } + + if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("You must call ".__CLASS__.'::'.__FUNCTION__. + "() before any output has been sent to the browser; output started in {$filename}/{$linenum}"); + } + + if (!is_string($id) || $id === '') { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('You must provide a non-empty string as a session identifier.'); + } + + session_id($id); + } + + + /** + * registerValidator() - register a validator that will attempt to validate this session for + * every future request + * + * @param Zend_Session_Validator_Interface $validator + * @return void + */ + public static function registerValidator(Zend_Session_Validator_Interface $validator) + { + $validator->setup(); + } + + + /** + * stop() - Disable write access. Optionally disable read (not implemented). + * + * @return void + */ + public static function stop() + { + parent::$_writable = false; + } + + + /** + * writeClose() - Shutdown the sesssion, close writing and detach $_SESSION from the back-end storage mechanism. + * This will complete the internal data transformation on this request. + * + * @param bool $readonly - OPTIONAL remove write access (i.e. throw error if Zend_Session's attempt writes) + * @return void + */ + public static function writeClose($readonly = true) + { + if (self::$_unitTestEnabled) { + return; + } + + if (self::$_writeClosed) { + return; + } + + if ($readonly) { + parent::$_writable = false; + } + + @session_write_close(); + self::$_writeClosed = true; + } + + + /** + * destroy() - This is used to destroy session data, and optionally, the session cookie itself + * + * @param bool $remove_cookie - OPTIONAL remove session id cookie, defaults to true (remove cookie) + * @param bool $readonly - OPTIONAL remove write access (i.e. throw error if Zend_Session's attempt writes) + * @return void + */ + public static function destroy($remove_cookie = true, $readonly = true) + { + if (self::$_unitTestEnabled) { + return; + } + + if (self::$_destroyed) { + return; + } + + if ($readonly) { + parent::$_writable = false; + } + + session_destroy(); + self::$_destroyed = true; + + if ($remove_cookie) { + self::expireSessionCookie(); + } + } + + + /** + * expireSessionCookie() - Sends an expired session id cookie, causing the client to delete the session cookie + * + * @return void + */ + public static function expireSessionCookie() + { + if (self::$_unitTestEnabled) { + return; + } + + if (self::$_sessionCookieDeleted) { + return; + } + + self::$_sessionCookieDeleted = true; + + if (isset($_COOKIE[session_name()])) { + $cookie_params = session_get_cookie_params(); + + setcookie( + session_name(), + false, + 315554400, // strtotime('1980-01-01'), + $cookie_params['path'], + $cookie_params['domain'], + $cookie_params['secure'] + ); + } + } + + + /** + * _processValidator() - internal function that is called in the existence of VALID metadata + * + * @throws Zend_Session_Exception + * @return void + */ + private static function _processValidators() + { + foreach ($_SESSION['__ZF']['VALID'] as $validator_name => $valid_data) { + if (!class_exists($validator_name)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($validator_name); + } + $validator = new $validator_name; + if ($validator->validate() === false) { + /** @see Zend_Session_Validator_Exception */ + require_once 'Zend/Session/Validator/Exception.php'; + throw new Zend_Session_Validator_Exception("This session is not valid according to {$validator_name}."); + } + } + } + + + /** + * namespaceIsset() - check to see if a namespace is set + * + * @param string $namespace + * @return bool + */ + public static function namespaceIsset($namespace) + { + return parent::_namespaceIsset($namespace); + } + + + /** + * namespaceUnset() - unset a namespace or a variable within a namespace + * + * @param string $namespace + * @throws Zend_Session_Exception + * @return void + */ + public static function namespaceUnset($namespace) + { + parent::_namespaceUnset($namespace); + Zend_Session_Namespace::resetSingleInstance($namespace); + } + + + /** + * namespaceGet() - get all variables in a namespace + * Deprecated: Use getIterator() in Zend_Session_Namespace. + * + * @param string $namespace + * @return array + */ + public static function namespaceGet($namespace) + { + return parent::_namespaceGetAll($namespace); + } + + + /** + * getIterator() - return an iteratable object for use in foreach and the like, + * this completes the IteratorAggregate interface + * + * @throws Zend_Session_Exception + * @return ArrayObject + */ + public static function getIterator() + { + if (parent::$_readable === false) { + /** @see Zend_Session_Exception */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(parent::_THROW_NOT_READABLE_MSG); + } + + $spaces = array(); + if (isset($_SESSION)) { + $spaces = array_keys($_SESSION); + foreach($spaces as $key => $space) { + if (!strncmp($space, '__', 2) || !is_array($_SESSION[$space])) { + unset($spaces[$key]); + } + } + } + + return new ArrayObject(array_merge($spaces, array_keys(parent::$_expiringData))); + } + + + /** + * isWritable() - returns a boolean indicating if namespaces can write (use setters) + * + * @return bool + */ + public static function isWritable() + { + return parent::$_writable; + } + + + /** + * isReadable() - returns a boolean indicating if namespaces can write (use setters) + * + * @return bool + */ + public static function isReadable() + { + return parent::$_readable; + } + +} diff --git a/library/Zend/Session/Abstract.php b/library/Zend/Session/Abstract.php new file mode 100755 index 000000000..127905c5e --- /dev/null +++ b/library/Zend/Session/Abstract.php @@ -0,0 +1,185 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + + +/** + * Zend_Session_Abstract + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Session_Abstract +{ + /** + * Whether or not session permits writing (modification of $_SESSION[]) + * + * @var bool + */ + protected static $_writable = false; + + /** + * Whether or not session permits reading (reading data in $_SESSION[]) + * + * @var bool + */ + protected static $_readable = false; + + /** + * Since expiring data is handled at startup to avoid __destruct difficulties, + * the data that will be expiring at end of this request is held here + * + * @var array + */ + protected static $_expiringData = array(); + + + /** + * Error message thrown when an action requires modification, + * but current Zend_Session has been marked as read-only. + */ + const _THROW_NOT_WRITABLE_MSG = 'Zend_Session is currently marked as read-only.'; + + + /** + * Error message thrown when an action requires reading session data, + * but current Zend_Session is not marked as readable. + */ + const _THROW_NOT_READABLE_MSG = 'Zend_Session is not marked as readable.'; + + + /** + * namespaceIsset() - check to see if a namespace or a variable within a namespace is set + * + * @param string $namespace + * @param string $name + * @return bool + */ + protected static function _namespaceIsset($namespace, $name = null) + { + if (self::$_readable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG); + } + + if ($name === null) { + return ( isset($_SESSION[$namespace]) || isset(self::$_expiringData[$namespace]) ); + } else { + return ( isset($_SESSION[$namespace][$name]) || isset(self::$_expiringData[$namespace][$name]) ); + } + } + + + /** + * namespaceUnset() - unset a namespace or a variable within a namespace + * + * @param string $namespace + * @param string $name + * @throws Zend_Session_Exception + * @return void + */ + protected static function _namespaceUnset($namespace, $name = null) + { + if (self::$_writable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(self::_THROW_NOT_WRITABLE_MSG); + } + + $name = (string) $name; + + // check to see if the api wanted to remove a var from a namespace or a namespace + if ($name === '') { + unset($_SESSION[$namespace]); + unset(self::$_expiringData[$namespace]); + } else { + unset($_SESSION[$namespace][$name]); + unset(self::$_expiringData[$namespace][$name]); + } + + // if we remove the last value, remove namespace. + if (empty($_SESSION[$namespace])) { + unset($_SESSION[$namespace]); + } + } + + + /** + * namespaceGet() - Get $name variable from $namespace, returning by reference. + * + * @param string $namespace + * @param string $name + * @return mixed + */ + protected static function & _namespaceGet($namespace, $name = null) + { + if (self::$_readable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG); + } + + if ($name === null) { + if (isset($_SESSION[$namespace])) { // check session first for data requested + return $_SESSION[$namespace]; + } elseif (isset(self::$_expiringData[$namespace])) { // check expiring data for data reqeusted + return self::$_expiringData[$namespace]; + } else { + return $_SESSION[$namespace]; // satisfy return by reference + } + } else { + if (isset($_SESSION[$namespace][$name])) { // check session first + return $_SESSION[$namespace][$name]; + } elseif (isset(self::$_expiringData[$namespace][$name])) { // check expiring data + return self::$_expiringData[$namespace][$name]; + } else { + return $_SESSION[$namespace][$name]; // satisfy return by reference + } + } + } + + + /** + * namespaceGetAll() - Get an array containing $namespace, including expiring data. + * + * @param string $namespace + * @param string $name + * @return mixed + */ + protected static function _namespaceGetAll($namespace) + { + $currentData = (isset($_SESSION[$namespace]) && is_array($_SESSION[$namespace])) ? + $_SESSION[$namespace] : array(); + $expiringData = (isset(self::$_expiringData[$namespace]) && is_array(self::$_expiringData[$namespace])) ? + self::$_expiringData[$namespace] : array(); + return array_merge($currentData, $expiringData); + } +} diff --git a/library/Zend/Session/Exception.php b/library/Zend/Session/Exception.php new file mode 100755 index 000000000..d99a6adb7 --- /dev/null +++ b/library/Zend/Session/Exception.php @@ -0,0 +1,74 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + + +/** + * @see Zend_Exception + */ +require_once 'Zend/Exception.php'; + + +/** + * Zend_Session_Exception + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session_Exception extends Zend_Exception +{ + /** + * sessionStartError + * + * @see http://framework.zend.com/issues/browse/ZF-1325 + * @var string PHP Error Message + */ + static public $sessionStartError = null; + + /** + * handleSessionStartError() - interface for set_error_handler() + * + * @see http://framework.zend.com/issues/browse/ZF-1325 + * @param int $errno + * @param string $errstr + * @return void + */ + static public function handleSessionStartError($errno, $errstr, $errfile, $errline, $errcontext) + { + self::$sessionStartError = $errfile . '(Line:' . $errline . '): Error #' . $errno . ' ' . $errstr; + } + + /** + * handleSilentWriteClose() - interface for set_error_handler() + * + * @see http://framework.zend.com/issues/browse/ZF-1325 + * @param int $errno + * @param string $errstr + * @return void + */ + static public function handleSilentWriteClose($errno, $errstr, $errfile, $errline, $errcontext) + { + self::$sessionStartError .= PHP_EOL . $errfile . '(Line:' . $errline . '): Error #' . $errno . ' ' . $errstr; + } +} + diff --git a/library/Zend/Session/Namespace.php b/library/Zend/Session/Namespace.php new file mode 100755 index 000000000..06aa272b9 --- /dev/null +++ b/library/Zend/Session/Namespace.php @@ -0,0 +1,529 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + + +/** + * @see Zend_Session + */ +require_once 'Zend/Session.php'; + + +/** + * @see Zend_Session_Abstract + */ +require_once 'Zend/Session/Abstract.php'; + + +/** + * Zend_Session_Namespace + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session_Namespace extends Zend_Session_Abstract implements IteratorAggregate +{ + + /** + * used as option to constructor to prevent additional instances to the same namespace + */ + const SINGLE_INSTANCE = true; + + /** + * Namespace - which namespace this instance of zend-session is saving-to/getting-from + * + * @var string + */ + protected $_namespace = "Default"; + + /** + * Namespace locking mechanism + * + * @var array + */ + protected static $_namespaceLocks = array(); + + /** + * Single instance namespace array to ensure data security. + * + * @var array + */ + protected static $_singleInstances = array(); + + /** + * resetSingleInstance() + * + * @param string $namespaceName + * @return null + */ + public static function resetSingleInstance($namespaceName = null) + { + if ($namespaceName != null) { + if (array_key_exists($namespaceName, self::$_singleInstances)) { + unset(self::$_singleInstances[$namespaceName]); + } + return; + } + + self::$_singleInstances = array(); + return; + } + + /** + * __construct() - Returns an instance object bound to a particular, isolated section + * of the session, identified by $namespace name (defaulting to 'Default'). + * The optional argument $singleInstance will prevent construction of additional + * instance objects acting as accessors to this $namespace. + * + * @param string $namespace - programmatic name of the requested namespace + * @param bool $singleInstance - prevent creation of additional accessor instance objects for this namespace + * @return void + */ + public function __construct($namespace = 'Default', $singleInstance = false) + { + if ($namespace === '') { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('Session namespace must be a non-empty string.'); + } + + if ($namespace[0] == "_") { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('Session namespace must not start with an underscore.'); + } + + if (preg_match('#(^[0-9])#i', $namespace[0])) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('Session namespace must not start with a number.'); + } + + if (isset(self::$_singleInstances[$namespace])) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("A session namespace object already exists for this namespace ('$namespace'), and no additional accessors (session namespace objects) for this namespace are permitted."); + } + + if ($singleInstance === true) { + self::$_singleInstances[$namespace] = true; + } + + $this->_namespace = $namespace; + + // Process metadata specific only to this namespace. + Zend_Session::start(true); // attempt auto-start (throws exception if strict option set) + + if (self::$_readable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(self::_THROW_NOT_READABLE_MSG); + } + + if (!isset($_SESSION['__ZF'])) { + return; // no further processing needed + } + + // do not allow write access to namespaces, after stop() or writeClose() + if (parent::$_writable === true) { + if (isset($_SESSION['__ZF'][$namespace])) { + + // Expire Namespace by Namespace Hop (ENNH) + if (isset($_SESSION['__ZF'][$namespace]['ENNH'])) { + $_SESSION['__ZF'][$namespace]['ENNH']--; + + if ($_SESSION['__ZF'][$namespace]['ENNH'] === 0) { + if (isset($_SESSION[$namespace])) { + self::$_expiringData[$namespace] = $_SESSION[$namespace]; + unset($_SESSION[$namespace]); + } + unset($_SESSION['__ZF'][$namespace]); + } + } + + // Expire Namespace Variables by Namespace Hop (ENVNH) + if (isset($_SESSION['__ZF'][$namespace]['ENVNH'])) { + foreach ($_SESSION['__ZF'][$namespace]['ENVNH'] as $variable => $hops) { + $_SESSION['__ZF'][$namespace]['ENVNH'][$variable]--; + + if ($_SESSION['__ZF'][$namespace]['ENVNH'][$variable] === 0) { + if (isset($_SESSION[$namespace][$variable])) { + self::$_expiringData[$namespace][$variable] = $_SESSION[$namespace][$variable]; + unset($_SESSION[$namespace][$variable]); + } + unset($_SESSION['__ZF'][$namespace]['ENVNH'][$variable]); + } + } + if(empty($_SESSION['__ZF'][$namespace]['ENVNH'])) { + unset($_SESSION['__ZF'][$namespace]['ENVNH']); + } + } + } + + if (empty($_SESSION['__ZF'][$namespace])) { + unset($_SESSION['__ZF'][$namespace]); + } + + if (empty($_SESSION['__ZF'])) { + unset($_SESSION['__ZF']); + } + } + } + + + /** + * getIterator() - return an iteratable object for use in foreach and the like, + * this completes the IteratorAggregate interface + * + * @return ArrayObject - iteratable container of the namespace contents + */ + public function getIterator() + { + return new ArrayObject(parent::_namespaceGetAll($this->_namespace)); + } + + + /** + * lock() - mark a session/namespace as readonly + * + * @return void + */ + public function lock() + { + self::$_namespaceLocks[$this->_namespace] = true; + } + + + /** + * unlock() - unmark a session/namespace to enable read & write + * + * @return void + */ + public function unlock() + { + unset(self::$_namespaceLocks[$this->_namespace]); + } + + + /** + * unlockAll() - unmark all session/namespaces to enable read & write + * + * @return void + */ + public static function unlockAll() + { + self::$_namespaceLocks = array(); + } + + + /** + * isLocked() - return lock status, true if, and only if, read-only + * + * @return bool + */ + public function isLocked() + { + return isset(self::$_namespaceLocks[$this->_namespace]); + } + + + /** + * unsetAll() - unset all variables in this namespace + * + * @return true + */ + public function unsetAll() + { + return parent::_namespaceUnset($this->_namespace); + } + + + /** + * __get() - method to get a variable in this object's current namespace + * + * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace + * @return mixed + */ + public function & __get($name) + { + if ($name === '') { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("The '$name' key must be a non-empty string"); + } + + return parent::_namespaceGet($this->_namespace, $name); + } + + + /** + * __set() - method to set a variable/value in this object's namespace + * + * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace + * @param mixed $value - value in the <key,value> pair to assign to the $name key + * @throws Zend_Session_Exception + * @return true + */ + public function __set($name, $value) + { + if (isset(self::$_namespaceLocks[$this->_namespace])) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('This session/namespace has been marked as read-only.'); + } + + if ($name === '') { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("The '$name' key must be a non-empty string"); + } + + if (parent::$_writable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG); + } + + $name = (string) $name; + + $_SESSION[$this->_namespace][$name] = $value; + } + + + /** + * apply() - enables applying user-selected function, such as array_merge() to the namespace + * Parameters following the $callback argument are passed to the callback function. + * Caveat: ignores members expiring now. + * + * Example: + * $namespace->apply('array_merge', array('tree' => 'apple', 'fruit' => 'peach'), array('flower' => 'rose')); + * $namespace->apply('count'); + * + * @param string|array $callback - callback function + */ + public function apply($callback) + { + $arg_list = func_get_args(); + $arg_list[0] = $_SESSION[$this->_namespace]; + return call_user_func_array($callback, $arg_list); + } + + + /** + * applySet() - enables applying user-selected function, and sets entire namespace to the result + * Result of $callback must be an array. + * Parameters following the $callback argument are passed to the callback function. + * Caveat: ignores members expiring now. + * + * Example: + * $namespace->applySet('array_merge', array('tree' => 'apple', 'fruit' => 'peach'), array('flower' => 'rose')); + * + * @param string|array $callback - callback function + */ + public function applySet($callback) + { + $arg_list = func_get_args(); + $arg_list[0] = $_SESSION[$this->_namespace]; + $result = call_user_func_array($callback, $arg_list); + if (!is_array($result)) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('Result must be an array. Got: ' . gettype($result)); + } + $_SESSION[$this->_namespace] = $result; + return $result; + } + + + /** + * __isset() - determine if a variable in this object's namespace is set + * + * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace + * @return bool + */ + public function __isset($name) + { + if ($name === '') { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("The '$name' key must be a non-empty string"); + } + + return parent::_namespaceIsset($this->_namespace, $name); + } + + + /** + * __unset() - unset a variable in this object's namespace. + * + * @param string $name - programmatic name of a key, in a <key,value> pair in the current namespace + * @return true + */ + public function __unset($name) + { + if ($name === '') { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception("The '$name' key must be a non-empty string"); + } + + return parent::_namespaceUnset($this->_namespace, $name); + } + + + /** + * setExpirationSeconds() - expire the namespace, or specific variables after a specified + * number of seconds + * + * @param int $seconds - expires in this many seconds + * @param mixed $variables - OPTIONAL list of variables to expire (defaults to all) + * @throws Zend_Session_Exception + * @return void + */ + public function setExpirationSeconds($seconds, $variables = null) + { + if (parent::$_writable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG); + } + + if ($seconds <= 0) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('Seconds must be positive.'); + } + + if ($variables === null) { + + // apply expiration to entire namespace + $_SESSION['__ZF'][$this->_namespace]['ENT'] = time() + $seconds; + + } else { + + if (is_string($variables)) { + $variables = array($variables); + } + + foreach ($variables as $variable) { + if (!empty($variable)) { + $_SESSION['__ZF'][$this->_namespace]['ENVT'][$variable] = time() + $seconds; + } + } + } + } + + + /** + * setExpirationHops() - expire the namespace, or specific variables after a specified + * number of page hops + * + * @param int $hops - how many "hops" (number of subsequent requests) before expiring + * @param mixed $variables - OPTIONAL list of variables to expire (defaults to all) + * @param boolean $hopCountOnUsageOnly - OPTIONAL if set, only count a hop/request if this namespace is used + * @throws Zend_Session_Exception + * @return void + */ + public function setExpirationHops($hops, $variables = null, $hopCountOnUsageOnly = false) + { + if (parent::$_writable === false) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception(parent::_THROW_NOT_WRITABLE_MSG); + } + + if ($hops <= 0) { + /** + * @see Zend_Session_Exception + */ + require_once 'Zend/Session/Exception.php'; + throw new Zend_Session_Exception('Hops must be positive number.'); + } + + if ($variables === null) { + + // apply expiration to entire namespace + if ($hopCountOnUsageOnly === false) { + $_SESSION['__ZF'][$this->_namespace]['ENGH'] = $hops; + } else { + $_SESSION['__ZF'][$this->_namespace]['ENNH'] = $hops; + } + + } else { + + if (is_string($variables)) { + $variables = array($variables); + } + + foreach ($variables as $variable) { + if (!empty($variable)) { + if ($hopCountOnUsageOnly === false) { + $_SESSION['__ZF'][$this->_namespace]['ENVGH'][$variable] = $hops; + } else { + $_SESSION['__ZF'][$this->_namespace]['ENVNH'][$variable] = $hops; + } + } + } + } + } + + /** + * Returns the namespace name + * + * @return string + */ + public function getNamespace() + { + return $this->_namespace; + } +} diff --git a/library/Zend/Session/SaveHandler/DbTable.php b/library/Zend/Session/SaveHandler/DbTable.php new file mode 100755 index 000000000..e423a18d4 --- /dev/null +++ b/library/Zend/Session/SaveHandler/DbTable.php @@ -0,0 +1,591 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-webat this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Session + */ +require_once 'Zend/Session.php'; + +/** + * @see Zend_Db_Table_Abstract + */ +require_once 'Zend/Db/Table/Abstract.php'; + +/** + * @see Zend_Db_Table_Row_Abstract + */ +require_once 'Zend/Db/Table/Row/Abstract.php'; + +/** + * @see Zend_Config + */ +require_once 'Zend/Config.php'; + +/** + * Zend_Session_SaveHandler_DbTable + * + * @category Zend + * @package Zend_Session + * @subpackage SaveHandler + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session_SaveHandler_DbTable + extends Zend_Db_Table_Abstract + implements Zend_Session_SaveHandler_Interface +{ + const PRIMARY_ASSIGNMENT = 'primaryAssignment'; + const PRIMARY_ASSIGNMENT_SESSION_SAVE_PATH = 'sessionSavePath'; + const PRIMARY_ASSIGNMENT_SESSION_NAME = 'sessionName'; + const PRIMARY_ASSIGNMENT_SESSION_ID = 'sessionId'; + + const MODIFIED_COLUMN = 'modifiedColumn'; + const LIFETIME_COLUMN = 'lifetimeColumn'; + const DATA_COLUMN = 'dataColumn'; + + const LIFETIME = 'lifetime'; + const OVERRIDE_LIFETIME = 'overrideLifetime'; + + const PRIMARY_TYPE_NUM = 'PRIMARY_TYPE_NUM'; + const PRIMARY_TYPE_PRIMARYNUM = 'PRIMARY_TYPE_PRIMARYNUM'; + const PRIMARY_TYPE_ASSOC = 'PRIMARY_TYPE_ASSOC'; + const PRIMARY_TYPE_WHERECLAUSE = 'PRIMARY_TYPE_WHERECLAUSE'; + + /** + * Session table primary key value assignment + * + * @var array + */ + protected $_primaryAssignment = null; + + /** + * Session table last modification time column + * + * @var string + */ + protected $_modifiedColumn = null; + + /** + * Session table lifetime column + * + * @var string + */ + protected $_lifetimeColumn = null; + + /** + * Session table data column + * + * @var string + */ + protected $_dataColumn = null; + + /** + * Session lifetime + * + * @var int + */ + protected $_lifetime = false; + + /** + * Whether or not the lifetime of an existing session should be overridden + * + * @var boolean + */ + protected $_overrideLifetime = false; + + /** + * Session save path + * + * @var string + */ + protected $_sessionSavePath; + + /** + * Session name + * + * @var string + */ + protected $_sessionName; + + /** + * Constructor + * + * $config is an instance of Zend_Config or an array of key/value pairs containing configuration options for + * Zend_Session_SaveHandler_DbTable and Zend_Db_Table_Abstract. These are the configuration options for + * Zend_Session_SaveHandler_DbTable: + * + * primaryAssignment => (string|array) Session table primary key value assignment + * (optional; default: 1 => sessionId) You have to assign a value to each primary key of your session table. + * The value of this configuration option is either a string if you have only one primary key or an array if + * you have multiple primary keys. The array consists of numeric keys starting at 1 and string values. There + * are some values which will be replaced by session information: + * + * sessionId => The id of the current session + * sessionName => The name of the current session + * sessionSavePath => The save path of the current session + * + * NOTE: One of your assignments MUST contain 'sessionId' as value! + * + * modifiedColumn => (string) Session table last modification time column + * + * lifetimeColumn => (string) Session table lifetime column + * + * dataColumn => (string) Session table data column + * + * lifetime => (integer) Session lifetime (optional; default: ini_get('session.gc_maxlifetime')) + * + * overrideLifetime => (boolean) Whether or not the lifetime of an existing session should be overridden + * (optional; default: false) + * + * @param Zend_Config|array $config User-provided configuration + * @return void + * @throws Zend_Session_SaveHandler_Exception + */ + public function __construct($config) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } else if (!is_array($config)) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception( + '$config must be an instance of Zend_Config or array of key/value pairs containing ' + . 'configuration options for Zend_Session_SaveHandler_DbTable and Zend_Db_Table_Abstract.'); + } + + foreach ($config as $key => $value) { + do { + switch ($key) { + case self::PRIMARY_ASSIGNMENT: + $this->_primaryAssignment = $value; + break; + case self::MODIFIED_COLUMN: + $this->_modifiedColumn = (string) $value; + break; + case self::LIFETIME_COLUMN: + $this->_lifetimeColumn = (string) $value; + break; + case self::DATA_COLUMN: + $this->_dataColumn = (string) $value; + break; + case self::LIFETIME: + $this->setLifetime($value); + break; + case self::OVERRIDE_LIFETIME: + $this->setOverrideLifetime($value); + break; + default: + // unrecognized options passed to parent::__construct() + break 2; + } + unset($config[$key]); + } while (false); + } + + parent::__construct($config); + } + + /** + * Destructor + * + * @return void + */ + public function __destruct() + { + Zend_Session::writeClose(); + } + + /** + * Set session lifetime and optional whether or not the lifetime of an existing session should be overridden + * + * $lifetime === false resets lifetime to session.gc_maxlifetime + * + * @param int $lifetime + * @param boolean $overrideLifetime (optional) + * @return Zend_Session_SaveHandler_DbTable + */ + public function setLifetime($lifetime, $overrideLifetime = null) + { + if ($lifetime < 0) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + throw new Zend_Session_SaveHandler_Exception(); + } else if (empty($lifetime)) { + $this->_lifetime = (int) ini_get('session.gc_maxlifetime'); + } else { + $this->_lifetime = (int) $lifetime; + } + + if ($overrideLifetime != null) { + $this->setOverrideLifetime($overrideLifetime); + } + + return $this; + } + + /** + * Retrieve session lifetime + * + * @return int + */ + public function getLifetime() + { + return $this->_lifetime; + } + + /** + * Set whether or not the lifetime of an existing session should be overridden + * + * @param boolean $overrideLifetime + * @return Zend_Session_SaveHandler_DbTable + */ + public function setOverrideLifetime($overrideLifetime) + { + $this->_overrideLifetime = (boolean) $overrideLifetime; + + return $this; + } + + /** + * Retrieve whether or not the lifetime of an existing session should be overridden + * + * @return boolean + */ + public function getOverrideLifetime() + { + return $this->_overrideLifetime; + } + + /** + * Open Session + * + * @param string $save_path + * @param string $name + * @return boolean + */ + public function open($save_path, $name) + { + $this->_sessionSavePath = $save_path; + $this->_sessionName = $name; + + return true; + } + + /** + * Close session + * + * @return boolean + */ + public function close() + { + return true; + } + + /** + * Read session data + * + * @param string $id + * @return string + */ + public function read($id) + { + $return = ''; + + $rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id)); + + if (count($rows)) { + if ($this->_getExpirationTime($row = $rows->current()) > time()) { + $return = $row->{$this->_dataColumn}; + } else { + $this->destroy($id); + } + } + + return $return; + } + + /** + * Write session data + * + * @param string $id + * @param string $data + * @return boolean + */ + public function write($id, $data) + { + $return = false; + + $data = array($this->_modifiedColumn => time(), + $this->_dataColumn => (string) $data); + + $rows = call_user_func_array(array(&$this, 'find'), $this->_getPrimary($id)); + + if (count($rows)) { + $data[$this->_lifetimeColumn] = $this->_getLifetime($rows->current()); + + if ($this->update($data, $this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) { + $return = true; + } + } else { + $data[$this->_lifetimeColumn] = $this->_lifetime; + + if ($this->insert(array_merge($this->_getPrimary($id, self::PRIMARY_TYPE_ASSOC), $data))) { + $return = true; + } + } + + return $return; + } + + /** + * Destroy session + * + * @param string $id + * @return boolean + */ + public function destroy($id) + { + $return = false; + + if ($this->delete($this->_getPrimary($id, self::PRIMARY_TYPE_WHERECLAUSE))) { + $return = true; + } + + return $return; + } + + /** + * Garbage Collection + * + * @param int $maxlifetime + * @return true + */ + public function gc($maxlifetime) + { + $this->delete($this->getAdapter()->quoteIdentifier($this->_modifiedColumn, true) . ' + ' + . $this->getAdapter()->quoteIdentifier($this->_lifetimeColumn, true) . ' < ' + . $this->getAdapter()->quote(time())); + + return true; + } + + /** + * Calls other protected methods for individual setup tasks and requirement checks + * + * @return void + */ + protected function _setup() + { + parent::_setup(); + + $this->_setupPrimaryAssignment(); + $this->setLifetime($this->_lifetime); + + $this->_checkRequiredColumns(); + } + + /** + * Initialize table and schema names + * + * @return void + * @throws Zend_Session_SaveHandler_Exception + */ + protected function _setupTableName() + { + if (empty($this->_name) && basename(($this->_name = session_save_path())) != $this->_name) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception('session.save_path is a path and not a table name.'); + } + + if (strpos($this->_name, '.')) { + list($this->_schema, $this->_name) = explode('.', $this->_name); + } + } + + /** + * Initialize session table primary key value assignment + * + * @return void + * @throws Zend_Session_SaveHandler_Exception + */ + protected function _setupPrimaryAssignment() + { + if ($this->_primaryAssignment === null) { + $this->_primaryAssignment = array(1 => self::PRIMARY_ASSIGNMENT_SESSION_ID); + } else if (!is_array($this->_primaryAssignment)) { + $this->_primaryAssignment = array(1 => (string) $this->_primaryAssignment); + } else if (isset($this->_primaryAssignment[0])) { + array_unshift($this->_primaryAssignment, null); + + unset($this->_primaryAssignment[0]); + } + + if (count($this->_primaryAssignment) !== count($this->_primary)) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception( + "Value for configuration option '" . self::PRIMARY_ASSIGNMENT . "' must have an assignment " + . "for each session table primary key."); + } else if (!in_array(self::PRIMARY_ASSIGNMENT_SESSION_ID, $this->_primaryAssignment)) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception( + "Value for configuration option '" . self::PRIMARY_ASSIGNMENT . "' must have an assignment " + . "for the session id ('" . self::PRIMARY_ASSIGNMENT_SESSION_ID . "')."); + } + } + + /** + * Check for required session table columns + * + * @return void + * @throws Zend_Session_SaveHandler_Exception + */ + protected function _checkRequiredColumns() + { + if ($this->_modifiedColumn === null) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception( + "Configuration must define '" . self::MODIFIED_COLUMN . "' which names the " + . "session table last modification time column."); + } else if ($this->_lifetimeColumn === null) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception( + "Configuration must define '" . self::LIFETIME_COLUMN . "' which names the " + . "session table lifetime column."); + } else if ($this->_dataColumn === null) { + /** + * @see Zend_Session_SaveHandler_Exception + */ + require_once 'Zend/Session/SaveHandler/Exception.php'; + + throw new Zend_Session_SaveHandler_Exception( + "Configuration must define '" . self::DATA_COLUMN . "' which names the " + . "session table data column."); + } + } + + /** + * Retrieve session table primary key values + * + * @param string $id + * @param string $type (optional; default: self::PRIMARY_TYPE_NUM) + * @return array + */ + protected function _getPrimary($id, $type = null) + { + $this->_setupPrimaryKey(); + + if ($type === null) { + $type = self::PRIMARY_TYPE_NUM; + } + + $primaryArray = array(); + + foreach ($this->_primary as $index => $primary) { + switch ($this->_primaryAssignment[$index]) { + case self::PRIMARY_ASSIGNMENT_SESSION_SAVE_PATH: + $value = $this->_sessionSavePath; + break; + case self::PRIMARY_ASSIGNMENT_SESSION_NAME: + $value = $this->_sessionName; + break; + case self::PRIMARY_ASSIGNMENT_SESSION_ID: + $value = (string) $id; + break; + default: + $value = (string) $this->_primaryAssignment[$index]; + break; + } + + switch ((string) $type) { + case self::PRIMARY_TYPE_PRIMARYNUM: + $primaryArray[$index] = $value; + break; + case self::PRIMARY_TYPE_ASSOC: + $primaryArray[$primary] = $value; + break; + case self::PRIMARY_TYPE_WHERECLAUSE: + $primaryArray[] = $this->getAdapter()->quoteIdentifier($primary, true) . ' = ' + . $this->getAdapter()->quote($value); + break; + case self::PRIMARY_TYPE_NUM: + default: + $primaryArray[] = $value; + break; + } + } + + return $primaryArray; + } + + /** + * Retrieve session lifetime considering Zend_Session_SaveHandler_DbTable::OVERRIDE_LIFETIME + * + * @param Zend_Db_Table_Row_Abstract $row + * @return int + */ + protected function _getLifetime(Zend_Db_Table_Row_Abstract $row) + { + $return = $this->_lifetime; + + if (!$this->_overrideLifetime) { + $return = (int) $row->{$this->_lifetimeColumn}; + } + + return $return; + } + + /** + * Retrieve session expiration time + * + * @param Zend_Db_Table_Row_Abstract $row + * @return int + */ + protected function _getExpirationTime(Zend_Db_Table_Row_Abstract $row) + { + return (int) $row->{$this->_modifiedColumn} + $this->_getLifetime($row); + } +} diff --git a/library/Zend/Session/SaveHandler/Exception.php b/library/Zend/Session/SaveHandler/Exception.php new file mode 100755 index 000000000..f54ed7e29 --- /dev/null +++ b/library/Zend/Session/SaveHandler/Exception.php @@ -0,0 +1,37 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Session_Exception + */ +require_once 'Zend/Session/Exception.php'; + +/** + * Zend_Session_SaveHandler_Exception + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session_SaveHandler_Exception extends Zend_Session_Exception +{} diff --git a/library/Zend/Session/SaveHandler/Interface.php b/library/Zend/Session/SaveHandler/Interface.php new file mode 100755 index 000000000..18ed5fe52 --- /dev/null +++ b/library/Zend/Session/SaveHandler/Interface.php @@ -0,0 +1,81 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + +/** + * Zend_Session_SaveHandler_Interface + * + * @category Zend + * @package Zend_Session + * @subpackage SaveHandler + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @see http://php.net/session_set_save_handler + */ +interface Zend_Session_SaveHandler_Interface +{ + + /** + * Open Session - retrieve resources + * + * @param string $save_path + * @param string $name + */ + public function open($save_path, $name); + + /** + * Close Session - free resources + * + */ + public function close(); + + /** + * Read session data + * + * @param string $id + */ + public function read($id); + + /** + * Write Session - commit data to resource + * + * @param string $id + * @param mixed $data + */ + public function write($id, $data); + + /** + * Destroy Session - remove data from resource for + * given session id + * + * @param string $id + */ + public function destroy($id); + + /** + * Garbage Collection - remove old session data older + * than $maxlifetime (in seconds) + * + * @param int $maxlifetime + */ + public function gc($maxlifetime); + +} diff --git a/library/Zend/Session/Validator/Abstract.php b/library/Zend/Session/Validator/Abstract.php new file mode 100755 index 000000000..2afba8154 --- /dev/null +++ b/library/Zend/Session/Validator/Abstract.php @@ -0,0 +1,71 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + +/** + * @see Zend_Session_Validator_Interface + */ +require_once 'Zend/Session/Validator/Interface.php'; + +/** + * Zend_Session_Validator_Abstract + * + * @category Zend + * @package Zend_Session + * @subpackage Validator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Session_Validator_Abstract implements Zend_Session_Validator_Interface +{ + + /** + * SetValidData() - This method should be used to store the environment variables that + * will be needed in order to validate the session later in the validate() method. + * These values are stored in the session in the __ZF namespace, in an array named VALID + * + * @param mixed $data + * @return void + */ + protected function setValidData($data) + { + $validatorName = get_class($this); + + $_SESSION['__ZF']['VALID'][$validatorName] = $data; + } + + + /** + * GetValidData() - This method should be used to retrieve the environment variables that + * will be needed to 'validate' a session. + * + * @return mixed + */ + protected function getValidData() + { + $validatorName = get_class($this); + if (isset($_SESSION['__ZF']['VALID'][$validatorName])) { + return $_SESSION['__ZF']['VALID'][$validatorName]; + } + return null; + } + +} diff --git a/library/Zend/Session/Validator/Exception.php b/library/Zend/Session/Validator/Exception.php new file mode 100755 index 000000000..c8afe8aff --- /dev/null +++ b/library/Zend/Session/Validator/Exception.php @@ -0,0 +1,43 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + + +/** + * @see Zend_Session_Exception + */ +require_once 'Zend/Session/Exception.php'; + + +/** + * Zend_Session_Validator_Exception + * + * @category Zend + * @package Zend_Session + * @subpackage Validator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session_Validator_Exception extends Zend_Session_Exception +{ + +} + diff --git a/library/Zend/Session/Validator/HttpUserAgent.php b/library/Zend/Session/Validator/HttpUserAgent.php new file mode 100755 index 000000000..3f594d2c0 --- /dev/null +++ b/library/Zend/Session/Validator/HttpUserAgent.php @@ -0,0 +1,66 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + +/** + * @see Zend_Session_Validator_Abstract + */ +require_once 'Zend/Session/Validator/Abstract.php'; + +/** + * Zend_Session_Validator_HttpUserAgent + * + * @category Zend + * @package Zend_Session + * @subpackage Validator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Session_Validator_HttpUserAgent extends Zend_Session_Validator_Abstract +{ + + /** + * Setup() - this method will get the current user agent and store it in the session + * as 'valid data' + * + * @return void + */ + public function setup() + { + $this->setValidData( (isset($_SERVER['HTTP_USER_AGENT']) + ? $_SERVER['HTTP_USER_AGENT'] : null) ); + } + + /** + * Validate() - this method will determine if the current user agent matches the + * user agent we stored when we initialized this variable. + * + * @return bool + */ + public function validate() + { + $currentBrowser = (isset($_SERVER['HTTP_USER_AGENT']) + ? $_SERVER['HTTP_USER_AGENT'] : null); + + return $currentBrowser === $this->getValidData(); + } + +} diff --git a/library/Zend/Session/Validator/Interface.php b/library/Zend/Session/Validator/Interface.php new file mode 100755 index 000000000..ab4eb3ec9 --- /dev/null +++ b/library/Zend/Session/Validator/Interface.php @@ -0,0 +1,52 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Session + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + * @since Preview Release 0.2 + */ + +/** + * Zend_Session_Validator_Interface + * + * @category Zend + * @package Zend_Session + * @subpackage Validator + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Session_Validator_Interface +{ + + /** + * Setup() - this method will store the environment variables + * necessary to be able to validate against in future requests. + * + * @return void + */ + public function setup(); + + /** + * Validate() - this method will be called at the beginning of + * every session to determine if the current environment matches + * that which was store in the setup() procedure. + * + * @return boolean + */ + public function validate(); + +} diff --git a/library/Zend/Soap/AutoDiscover.php b/library/Zend/Soap/AutoDiscover.php new file mode 100755 index 000000000..f1df112ab --- /dev/null +++ b/library/Zend/Soap/AutoDiscover.php @@ -0,0 +1,611 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage AutoDiscover + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Server_Interface + */ +require_once 'Zend/Server/Interface.php'; +/** + * @see Zend_Soap_Wsdl + */ +require_once 'Zend/Soap/Wsdl.php'; +/** + * @see Zend_Server_Reflection + */ +require_once 'Zend/Server/Reflection.php'; +/** + * @see Zend_Server_Abstract + */ +require_once 'Zend/Server/Abstract.php'; +/** + * @see Zend_Uri + */ +require_once 'Zend/Uri.php'; + +/** + * Zend_Soap_AutoDiscover + * + * @category Zend + * @package Zend_Soap + * @subpackage AutoDiscover + */ +class Zend_Soap_AutoDiscover implements Zend_Server_Interface +{ + /** + * @var Zend_Soap_Wsdl + */ + protected $_wsdl = null; + + /** + * @var Zend_Server_Reflection + */ + protected $_reflection = null; + + /** + * @var array + */ + protected $_functions = array(); + + /** + * @var boolean + */ + protected $_strategy; + + /** + * Url where the WSDL file will be available at. + * + * @var WSDL Uri + */ + protected $_uri; + + /** + * soap:body operation style options + * + * @var array + */ + protected $_operationBodyStyle = array('use' => 'encoded', 'encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/"); + + /** + * soap:operation style + * + * @var array + */ + protected $_bindingStyle = array('style' => 'rpc', 'transport' => 'http://schemas.xmlsoap.org/soap/http'); + + /** + * Name of the class to handle the WSDL creation. + * + * @var string + */ + protected $_wsdlClass = 'Zend_Soap_Wsdl'; + + /** + * Constructor + * + * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy + * @param string|Zend_Uri $uri + * @param string $wsdlClass + */ + public function __construct($strategy = true, $uri=null, $wsdlClass=null) + { + $this->_reflection = new Zend_Server_Reflection(); + $this->setComplexTypeStrategy($strategy); + + if($uri !== null) { + $this->setUri($uri); + } + + if($wsdlClass !== null) { + $this->setWsdlClass($wsdlClass); + } + } + + /** + * Set the location at which the WSDL file will be availabe. + * + * @see Zend_Soap_Exception + * @param Zend_Uri|string $uri + * @return Zend_Soap_AutoDiscover + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function setUri($uri) + { + if (!is_string($uri) && !($uri instanceof Zend_Uri)) { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("No uri given to Zend_Soap_AutoDiscover::setUri as string or Zend_Uri instance."); + } + $this->_uri = $uri; + + // change uri in WSDL file also if existant + if ($this->_wsdl instanceof Zend_Soap_Wsdl) { + $this->_wsdl->setUri($uri); + } + + return $this; + } + + /** + * Return the current Uri that the SOAP WSDL Service will be located at. + * + * @return Zend_Uri + */ + public function getUri() + { + if($this->_uri !== null) { + $uri = $this->_uri; + } else { + $schema = $this->getSchema(); + $host = $this->getHostName(); + $scriptName = $this->getRequestUriWithoutParameters(); + $uri = Zend_Uri::factory($schema . '://' . $host . $scriptName); + $this->setUri($uri); + } + return $uri; + } + + /** + * Set the name of the WSDL handling class. + * + * @see Zend_Soap_Exception + * @see Zend_Soap_Exception + * @param string $wsdlClass + * @return Zend_Soap_AutoDiscover + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function setWsdlClass($wsdlClass) + { + if (!is_string($wsdlClass) && !is_subclass_of($wsdlClass, 'Zend_Soap_Wsdl')) { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("No Zend_Soap_Wsdl subclass given to Zend_Soap_AutoDiscover::setWsdlClass as string."); + } + $this->_wsdlClass = $wsdlClass; + + return $this; + } + + /** + * Return the name of the WSDL handling class. + * + * @return string + */ + public function getWsdlClass() + { + return $this->_wsdlClass; + } + + /** + * Set options for all the binding operations soap:body elements. + * + * By default the options are set to 'use' => 'encoded' and + * 'encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/". + * + * @see Zend_Soap_AutoDiscover_Exception + * @param array $operationStyle + * @return Zend_Soap_AutoDiscover + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function setOperationBodyStyle(array $operationStyle=array()) + { + if(!isset($operationStyle['use'])) { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("Key 'use' is required in Operation soap:body style."); + } + $this->_operationBodyStyle = $operationStyle; + return $this; + } + + /** + * Set Binding soap:binding style. + * + * By default 'style' is 'rpc' and 'transport' is 'http://schemas.xmlsoap.org/soap/http'. + * + * @param array $bindingStyle + * @return Zend_Soap_AutoDiscover + */ + public function setBindingStyle(array $bindingStyle=array()) + { + if(isset($bindingStyle['style'])) { + $this->_bindingStyle['style'] = $bindingStyle['style']; + } + if(isset($bindingStyle['transport'])) { + $this->_bindingStyle['transport'] = $bindingStyle['transport']; + } + return $this; + } + + /** + * Detect and returns the current HTTP/HTTPS Schema + * + * @return string + */ + protected function getSchema() + { + $schema = "http"; + if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { + $schema = 'https'; + } + return $schema; + } + + /** + * Detect and return the current hostname + * + * @return string + */ + protected function getHostName() + { + if(isset($_SERVER['HTTP_HOST'])) { + $host = $_SERVER['HTTP_HOST']; + } else { + $host = $_SERVER['SERVER_NAME']; + } + return $host; + } + + /** + * Detect and return the current script name without parameters + * + * @return string + */ + protected function getRequestUriWithoutParameters() + { + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { // IIS with Microsoft Rewrite Module + $requestUri = $_SERVER['HTTP_X_ORIGINAL_URL']; + } elseif (isset($_SERVER['HTTP_X_REWRITE_URL'])) { // check this first so IIS will catch + $requestUri = $_SERVER['HTTP_X_REWRITE_URL']; + } elseif (isset($_SERVER['REQUEST_URI'])) { + $requestUri = $_SERVER['REQUEST_URI']; + } elseif (isset($_SERVER['ORIG_PATH_INFO'])) { // IIS 5.0, PHP as CGI + $requestUri = $_SERVER['ORIG_PATH_INFO']; + } else { + $requestUri = $_SERVER['SCRIPT_NAME']; + } + if( ($pos = strpos($requestUri, "?")) !== false) { + $requestUri = substr($requestUri, 0, $pos); + } + + return $requestUri; + } + + /** + * Set the strategy that handles functions and classes that are added AFTER this call. + * + * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy + * @return Zend_Soap_AutoDiscover + */ + public function setComplexTypeStrategy($strategy) + { + $this->_strategy = $strategy; + if($this->_wsdl instanceof Zend_Soap_Wsdl) { + $this->_wsdl->setComplexTypeStrategy($strategy); + } + + return $this; + } + + /** + * Set the Class the SOAP server will use + * + * @param string $class Class Name + * @param string $namespace Class Namspace - Not Used + * @param array $argv Arguments to instantiate the class - Not Used + * @return Zend_Soap_AutoDiscover + */ + public function setClass($class, $namespace = '', $argv = null) + { + $uri = $this->getUri(); + + $wsdl = new $this->_wsdlClass($class, $uri, $this->_strategy); + + // The wsdl:types element must precede all other elements (WS-I Basic Profile 1.1 R2023) + $wsdl->addSchemaTypeSection(); + + $port = $wsdl->addPortType($class . 'Port'); + $binding = $wsdl->addBinding($class . 'Binding', 'tns:' .$class. 'Port'); + + $wsdl->addSoapBinding($binding, $this->_bindingStyle['style'], $this->_bindingStyle['transport']); + $wsdl->addService($class . 'Service', $class . 'Port', 'tns:' . $class . 'Binding', $uri); + foreach ($this->_reflection->reflectClass($class)->getMethods() as $method) { + $this->_addFunctionToWsdl($method, $wsdl, $port, $binding); + } + $this->_wsdl = $wsdl; + + return $this; + } + + /** + * Add a Single or Multiple Functions to the WSDL + * + * @param string $function Function Name + * @param string $namespace Function namespace - Not Used + * @return Zend_Soap_AutoDiscover + */ + public function addFunction($function, $namespace = '') + { + static $port; + static $operation; + static $binding; + + if (!is_array($function)) { + $function = (array) $function; + } + + $uri = $this->getUri(); + + if (!($this->_wsdl instanceof Zend_Soap_Wsdl)) { + $parts = explode('.', basename($_SERVER['SCRIPT_NAME'])); + $name = $parts[0]; + $wsdl = new Zend_Soap_Wsdl($name, $uri, $this->_strategy); + + // The wsdl:types element must precede all other elements (WS-I Basic Profile 1.1 R2023) + $wsdl->addSchemaTypeSection(); + + $port = $wsdl->addPortType($name . 'Port'); + $binding = $wsdl->addBinding($name . 'Binding', 'tns:' .$name. 'Port'); + + $wsdl->addSoapBinding($binding, $this->_bindingStyle['style'], $this->_bindingStyle['transport']); + $wsdl->addService($name . 'Service', $name . 'Port', 'tns:' . $name . 'Binding', $uri); + } else { + $wsdl = $this->_wsdl; + } + + foreach ($function as $func) { + $method = $this->_reflection->reflectFunction($func); + $this->_addFunctionToWsdl($method, $wsdl, $port, $binding); + } + $this->_wsdl = $wsdl; + + return $this; + } + + /** + * Add a function to the WSDL document. + * + * @param Zend_Server_Reflection_Function_Abstract $function function to add + * @param Zend_Soap_Wsdl $wsdl WSDL document + * @param object $port wsdl:portType + * @param object $binding wsdl:binding + * @return void + */ + protected function _addFunctionToWsdl($function, $wsdl, $port, $binding) + { + $uri = $this->getUri(); + + // We only support one prototype: the one with the maximum number of arguments + $prototype = null; + $maxNumArgumentsOfPrototype = -1; + foreach ($function->getPrototypes() as $tmpPrototype) { + $numParams = count($tmpPrototype->getParameters()); + if ($numParams > $maxNumArgumentsOfPrototype) { + $maxNumArgumentsOfPrototype = $numParams; + $prototype = $tmpPrototype; + } + } + if ($prototype === null) { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("No prototypes could be found for the '" . $function->getName() . "' function"); + } + + // Add the input message (parameters) + $args = array(); + if ($this->_bindingStyle['style'] == 'document') { + // Document style: wrap all parameters in a sequence element + $sequence = array(); + foreach ($prototype->getParameters() as $param) { + $sequenceElement = array( + 'name' => $param->getName(), + 'type' => $wsdl->getType($param->getType()) + ); + if ($param->isOptional()) { + $sequenceElement['nillable'] = 'true'; + } + $sequence[] = $sequenceElement; + } + $element = array( + 'name' => $function->getName(), + 'sequence' => $sequence + ); + // Add the wrapper element part, which must be named 'parameters' + $args['parameters'] = array('element' => $wsdl->addElement($element)); + } else { + // RPC style: add each parameter as a typed part + foreach ($prototype->getParameters() as $param) { + $args[$param->getName()] = array('type' => $wsdl->getType($param->getType())); + } + } + $wsdl->addMessage($function->getName() . 'In', $args); + + $isOneWayMessage = false; + if($prototype->getReturnType() == "void") { + $isOneWayMessage = true; + } + + if($isOneWayMessage == false) { + // Add the output message (return value) + $args = array(); + if ($this->_bindingStyle['style'] == 'document') { + // Document style: wrap the return value in a sequence element + $sequence = array(); + if ($prototype->getReturnType() != "void") { + $sequence[] = array( + 'name' => $function->getName() . 'Result', + 'type' => $wsdl->getType($prototype->getReturnType()) + ); + } + $element = array( + 'name' => $function->getName() . 'Response', + 'sequence' => $sequence + ); + // Add the wrapper element part, which must be named 'parameters' + $args['parameters'] = array('element' => $wsdl->addElement($element)); + } else if ($prototype->getReturnType() != "void") { + // RPC style: add the return value as a typed part + $args['return'] = array('type' => $wsdl->getType($prototype->getReturnType())); + } + $wsdl->addMessage($function->getName() . 'Out', $args); + } + + // Add the portType operation + if($isOneWayMessage == false) { + $portOperation = $wsdl->addPortOperation($port, $function->getName(), 'tns:' . $function->getName() . 'In', 'tns:' . $function->getName() . 'Out'); + } else { + $portOperation = $wsdl->addPortOperation($port, $function->getName(), 'tns:' . $function->getName() . 'In', false); + } + $desc = $function->getDescription(); + if (strlen($desc) > 0) { + $wsdl->addDocumentation($portOperation, $desc); + } + + // When using the RPC style, make sure the operation style includes a 'namespace' attribute (WS-I Basic Profile 1.1 R2717) + if ($this->_bindingStyle['style'] == 'rpc' && !isset($this->_operationBodyStyle['namespace'])) { + $this->_operationBodyStyle['namespace'] = ''.$uri; + } + + // Add the binding operation + if($isOneWayMessage == false) { + $operation = $wsdl->addBindingOperation($binding, $function->getName(), $this->_operationBodyStyle, $this->_operationBodyStyle); + } else { + $operation = $wsdl->addBindingOperation($binding, $function->getName(), $this->_operationBodyStyle); + } + $wsdl->addSoapOperation($operation, $uri . '#' .$function->getName()); + + // Add the function name to the list + $this->_functions[] = $function->getName(); + } + + /** + * Action to take when an error occurs + * + * @param string $fault + * @param string|int $code + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function fault($fault = null, $code = null) + { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("Function has no use in AutoDiscover."); + } + + /** + * Handle the Request + * + * @param string $request A non-standard request - Not Used + */ + public function handle($request = false) + { + if (!headers_sent()) { + header('Content-Type: text/xml'); + } + $this->_wsdl->dump(); + } + + /** + * Proxy to WSDL dump function + * + * @param string $filename + * @return boolean + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function dump($filename) + { + if($this->_wsdl !== null) { + return $this->_wsdl->dump($filename); + } else { + /** + * @see Zend_Soap_AutoDiscover_Exception + */ + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("Cannot dump autodiscovered contents, WSDL file has not been generated yet."); + } + } + + /** + * Proxy to WSDL toXml() function + * + * @return string + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function toXml() + { + if($this->_wsdl !== null) { + return $this->_wsdl->toXml(); + } else { + /** + * @see Zend_Soap_AutoDiscover_Exception + */ + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("Cannot return autodiscovered contents, WSDL file has not been generated yet."); + } + } + + /** + * Return an array of functions in the WSDL + * + * @return array + */ + public function getFunctions() + { + return $this->_functions; + } + + /** + * Load Functions + * + * @param unknown_type $definition + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function loadFunctions($definition) + { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("Function has no use in AutoDiscover."); + } + + /** + * Set Persistance + * + * @param int $mode + * @throws Zend_Soap_AutoDiscover_Exception + */ + public function setPersistence($mode) + { + require_once "Zend/Soap/AutoDiscover/Exception.php"; + throw new Zend_Soap_AutoDiscover_Exception("Function has no use in AutoDiscover."); + } + + /** + * Returns an XSD Type for the given PHP type + * + * @param string $type PHP Type to get the XSD type for + * @return string + */ + public function getType($type) + { + if (!($this->_wsdl instanceof Zend_Soap_Wsdl)) { + /** @todo Exception throwing may be more correct */ + + // WSDL is not defined yet, so we can't recognize type in context of current service + return ''; + } else { + return $this->_wsdl->getType($type); + } + } +} diff --git a/library/Zend/Soap/AutoDiscover/Exception.php b/library/Zend/Soap/AutoDiscover/Exception.php new file mode 100755 index 000000000..278ff8e1b --- /dev/null +++ b/library/Zend/Soap/AutoDiscover/Exception.php @@ -0,0 +1,34 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage AutoDiscover + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Exception + */ +require_once "Zend/Exception.php"; + +/** + * @package Zend_Soap + * @subpackage AutoDiscover + */ +class Zend_Soap_AutoDiscover_Exception extends Zend_Exception +{ +} diff --git a/library/Zend/Soap/Client.php b/library/Zend/Soap/Client.php new file mode 100755 index 000000000..9a3b754c3 --- /dev/null +++ b/library/Zend/Soap/Client.php @@ -0,0 +1,1242 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Server + */ +require_once 'Zend/Soap/Server.php'; + +/** + * @see Zend_Soap_Client_Local + */ +require_once 'Zend/Soap/Client/Local.php'; + +/** + * @see Zend_Soap_Client_Common + */ +require_once 'Zend/Soap/Client/Common.php'; + +/** + * Zend_Soap_Client + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Client +{ + /** + * Encoding + * @var string + */ + protected $_encoding = 'UTF-8'; + + /** + * Array of SOAP type => PHP class pairings for handling return/incoming values + * @var array + */ + protected $_classmap = null; + + /** + * Registered fault exceptions + * @var array + */ + protected $_faultExceptions = array(); + + /** + * SOAP version to use; SOAP_1_2 by default, to allow processing of headers + * @var int + */ + protected $_soapVersion = SOAP_1_2; + + /** Set of other SoapClient options */ + protected $_uri = null; + protected $_location = null; + protected $_style = null; + protected $_use = null; + protected $_login = null; + protected $_password = null; + protected $_proxy_host = null; + protected $_proxy_port = null; + protected $_proxy_login = null; + protected $_proxy_password = null; + protected $_local_cert = null; + protected $_passphrase = null; + protected $_compression = null; + protected $_connection_timeout = null; + protected $_stream_context = null; + protected $_features = null; + protected $_cache_wsdl = null; + protected $_user_agent = null; + protected $_exceptions = null; + + /** + * WSDL used to access server + * It also defines Zend_Soap_Client working mode (WSDL vs non-WSDL) + * + * @var string + */ + protected $_wsdl = null; + + /** + * SoapClient object + * + * @var SoapClient + */ + protected $_soapClient; + + /** + * Last invoked method + * + * @var string + */ + protected $_lastMethod = ''; + + /** + * SOAP request headers. + * + * Array of SoapHeader objects + * + * @var array + */ + protected $_soapInputHeaders = array(); + + /** + * Permanent SOAP request headers (shared between requests). + * + * Array of SoapHeader objects + * + * @var array + */ + protected $_permanentSoapInputHeaders = array(); + + /** + * Output SOAP headers. + * + * Array of SoapHeader objects + * + * @var array + */ + protected $_soapOutputHeaders = array(); + + /** + * Constructor + * + * @param string $wsdl + * @param array $options + */ + public function __construct($wsdl = null, $options = null) + { + if (!extension_loaded('soap')) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('SOAP extension is not loaded.'); + } + + if ($wsdl !== null) { + $this->setWsdl($wsdl); + } + if ($options !== null) { + $this->setOptions($options); + } + } + + /** + * Set wsdl + * + * @param string $wsdl + * @return Zend_Soap_Client + */ + public function setWsdl($wsdl) + { + $this->_wsdl = $wsdl; + $this->_soapClient = null; + + return $this; + } + + /** + * Get wsdl + * + * @return string + */ + public function getWsdl() + { + return $this->_wsdl; + } + + /** + * Set Options + * + * Allows setting options as an associative array of option => value pairs. + * + * @param array|Zend_Config $options + * @return Zend_Soap_Client + * @throws Zend_SoapClient_Exception + */ + public function setOptions($options) + { + if($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + foreach ($options as $key => $value) { + switch ($key) { + case 'classmap': + case 'classMap': + $this->setClassmap($value); + break; + case 'encoding': + $this->setEncoding($value); + break; + case 'soapVersion': + case 'soap_version': + $this->setSoapVersion($value); + break; + case 'wsdl': + $this->setWsdl($value); + break; + case 'uri': + $this->setUri($value); + break; + case 'location': + $this->setLocation($value); + break; + case 'style': + $this->setStyle($value); + break; + case 'use': + $this->setEncodingMethod($value); + break; + case 'login': + $this->setHttpLogin($value); + break; + case 'password': + $this->setHttpPassword($value); + break; + case 'proxy_host': + $this->setProxyHost($value); + break; + case 'proxy_port': + $this->setProxyPort($value); + break; + case 'proxy_login': + $this->setProxyLogin($value); + break; + case 'proxy_password': + $this->setProxyPassword($value); + break; + case 'local_cert': + $this->setHttpsCertificate($value); + break; + case 'passphrase': + $this->setHttpsCertPassphrase($value); + break; + case 'compression': + $this->setCompressionOptions($value); + break; + case 'stream_context': + $this->setStreamContext($value); + break; + case 'features': + $this->setSoapFeatures($value); + break; + case 'cache_wsdl': + $this->setWsdlCache($value); + break; + case 'useragent': + case 'userAgent': + case 'user_agent': + $this->setUserAgent($value); + break; + case 'exceptions': + $this->setExceptions($value); + break; + + // Not used now + // case 'connection_timeout': + // $this->_connection_timeout = $value; + // break; + + default: + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Unknown SOAP client option'); + break; + } + } + + return $this; + } + + /** + * Return array of options suitable for using with SoapClient constructor + * + * @return array + */ + public function getOptions() + { + $options = array(); + + $options['classmap'] = $this->getClassmap(); + $options['encoding'] = $this->getEncoding(); + $options['soap_version'] = $this->getSoapVersion(); + $options['wsdl'] = $this->getWsdl(); + $options['uri'] = $this->getUri(); + $options['location'] = $this->getLocation(); + $options['style'] = $this->getStyle(); + $options['use'] = $this->getEncodingMethod(); + $options['login'] = $this->getHttpLogin(); + $options['password'] = $this->getHttpPassword(); + $options['proxy_host'] = $this->getProxyHost(); + $options['proxy_port'] = $this->getProxyPort(); + $options['proxy_login'] = $this->getProxyLogin(); + $options['proxy_password'] = $this->getProxyPassword(); + $options['local_cert'] = $this->getHttpsCertificate(); + $options['passphrase'] = $this->getHttpsCertPassphrase(); + $options['compression'] = $this->getCompressionOptions(); + //$options['connection_timeout'] = $this->_connection_timeout; + $options['stream_context'] = $this->getStreamContext(); + $options['cache_wsdl'] = $this->getWsdlCache(); + $options['features'] = $this->getSoapFeatures(); + $options['user_agent'] = $this->getUserAgent(); + $options['exceptions'] = $this->getExceptions(); + + foreach ($options as $key => $value) { + /* + * ugly hack as I don't know if checking for '=== null' + * breaks some other option + */ + if (in_array($key, array('user_agent', 'cache_wsdl', 'compression', 'exceptions'))) { + if ($value === null) { + unset($options[$key]); + } + } else { + if ($value == null) { + unset($options[$key]); + } + } + } + + return $options; + } + + /** + * Set SOAP version + * + * @param int $version One of the SOAP_1_1 or SOAP_1_2 constants + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid soap version argument + */ + public function setSoapVersion($version) + { + if (!in_array($version, array(SOAP_1_1, SOAP_1_2))) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid soap version specified. Use SOAP_1_1 or SOAP_1_2 constants.'); + } + $this->_soapVersion = $version; + + $this->_soapClient = null; + + return $this; + } + + /** + * Get SOAP version + * + * @return int + */ + public function getSoapVersion() + { + return $this->_soapVersion; + } + + /** + * Set classmap + * + * @param array $classmap + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception for any invalid class in the class map + */ + public function setClassmap(array $classmap) + { + foreach ($classmap as $type => $class) { + if (!class_exists($class)) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid class in class map'); + } + } + + $this->_classmap = $classmap; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve classmap + * + * @return mixed + */ + public function getClassmap() + { + return $this->_classmap; + } + + /** + * Set encoding + * + * @param string $encoding + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid encoding argument + */ + public function setEncoding($encoding) + { + if (!is_string($encoding)) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid encoding specified'); + } + + $this->_encoding = $encoding; + + $this->_soapClient = null; + + return $this; + } + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Check for valid URN + * + * @param string $urn + * @return true + * @throws Zend_Soap_Client_Exception on invalid URN + */ + public function validateUrn($urn) + { + $scheme = parse_url($urn, PHP_URL_SCHEME); + if ($scheme === false || $scheme === null) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid URN'); + } + + return true; + + } + + /** + * Set URI + * + * URI in Web Service the target namespace + * + * @param string $uri + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid uri argument + */ + public function setUri($uri) + { + $this->validateUrn($uri); + $this->_uri = $uri; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve URI + * + * @return string + */ + public function getUri() + { + return $this->_uri; + } + + /** + * Set Location + * + * URI in Web Service the target namespace + * + * @param string $location + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid uri argument + */ + public function setLocation($location) + { + $this->validateUrn($location); + $this->_location = $location; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve URI + * + * @return string + */ + public function getLocation() + { + return $this->_location; + } + + /** + * Set request style + * + * @param int $style One of the SOAP_RPC or SOAP_DOCUMENT constants + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid style argument + */ + public function setStyle($style) + { + if (!in_array($style, array(SOAP_RPC, SOAP_DOCUMENT))) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid request style specified. Use SOAP_RPC or SOAP_DOCUMENT constants.'); + } + + $this->_style = $style; + + $this->_soapClient = null; + + return $this; + } + + /** + * Get request style + * + * @return int + */ + public function getStyle() + { + return $this->_style; + } + + /** + * Set message encoding method + * + * @param int $use One of the SOAP_ENCODED or SOAP_LITERAL constants + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid message encoding method argument + */ + public function setEncodingMethod($use) + { + if (!in_array($use, array(SOAP_ENCODED, SOAP_LITERAL))) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid message encoding method. Use SOAP_ENCODED or SOAP_LITERAL constants.'); + } + + $this->_use = $use; + + $this->_soapClient = null; + + return $this; + } + + /** + * Get message encoding method + * + * @return int + */ + public function getEncodingMethod() + { + return $this->_use; + } + + /** + * Set HTTP login + * + * @param string $login + * @return Zend_Soap_Client + */ + public function setHttpLogin($login) + { + $this->_login = $login; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve HTTP Login + * + * @return string + */ + public function getHttpLogin() + { + return $this->_login; + } + + /** + * Set HTTP password + * + * @param string $password + * @return Zend_Soap_Client + */ + public function setHttpPassword($password) + { + $this->_password = $password; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve HTTP Password + * + * @return string + */ + public function getHttpPassword() + { + return $this->_password; + } + + /** + * Set proxy host + * + * @param string $proxyHost + * @return Zend_Soap_Client + */ + public function setProxyHost($proxyHost) + { + $this->_proxy_host = $proxyHost; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve proxy host + * + * @return string + */ + public function getProxyHost() + { + return $this->_proxy_host; + } + + /** + * Set proxy port + * + * @param int $proxyPort + * @return Zend_Soap_Client + */ + public function setProxyPort($proxyPort) + { + $this->_proxy_port = (int)$proxyPort; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve proxy port + * + * @return int + */ + public function getProxyPort() + { + return $this->_proxy_port; + } + + /** + * Set proxy login + * + * @param string $proxyLogin + * @return Zend_Soap_Client + */ + public function setProxyLogin($proxyLogin) + { + $this->_proxy_login = $proxyLogin; + + $this->_soapClient = null; + + return $this; + } + + /** + * Retrieve proxy login + * + * @return string + */ + public function getProxyLogin() + { + return $this->_proxy_login; + } + + /** + * Set proxy password + * + * @param string $proxyLogin + * @return Zend_Soap_Client + */ + public function setProxyPassword($proxyPassword) + { + $this->_proxy_password = $proxyPassword; + + $this->_soapClient = null; + + return $this; + } + + /** + * Set HTTPS client certificate path + * + * @param string $localCert local certificate path + * @return Zend_Soap_Client + * @throws Zend_Soap_Client_Exception with invalid local certificate path argument + */ + public function setHttpsCertificate($localCert) + { + if (!is_readable($localCert)) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('Invalid HTTPS client certificate path.'); + } + + $this->_local_cert = $localCert; + + $this->_soapClient = null; + + return $this; + } + + /** + * Get HTTPS client certificate path + * + * @return string + */ + public function getHttpsCertificate() + { + return $this->_local_cert; + } + + /** + * Set HTTPS client certificate passphrase + * + * @param string $passphrase + * @return Zend_Soap_Client + */ + public function setHttpsCertPassphrase($passphrase) + { + $this->_passphrase = $passphrase; + + $this->_soapClient = null; + + return $this; + } + + /** + * Get HTTPS client certificate passphrase + * + * @return string + */ + public function getHttpsCertPassphrase() + { + return $this->_passphrase; + } + + /** + * Set compression options + * + * @param int|null $compressionOptions + * @return Zend_Soap_Client + */ + public function setCompressionOptions($compressionOptions) + { + if ($compressionOptions === null) { + $this->_compression = null; + } else { + $this->_compression = (int)$compressionOptions; + } + $this->_soapClient = null; + return $this; + } + + /** + * Get Compression options + * + * @return int + */ + public function getCompressionOptions() + { + return $this->_compression; + } + + /** + * Retrieve proxy password + * + * @return string + */ + public function getProxyPassword() + { + return $this->_proxy_password; + } + + /** + * Set Stream Context + * + * @return Zend_Soap_Client + */ + public function setStreamContext($context) + { + if(!is_resource($context) || get_resource_type($context) !== "stream-context") { + /** + * @see Zend_Soap_Client_Exception + */ + require_once "Zend/Soap/Client/Exception.php"; + throw new Zend_Soap_Client_Exception( + "Invalid stream context resource given." + ); + } + + $this->_stream_context = $context; + return $this; + } + + /** + * Get Stream Context + * + * @return resource + */ + public function getStreamContext() + { + return $this->_stream_context; + } + + /** + * Set the SOAP Feature options. + * + * @param string|int $feature + * @return Zend_Soap_Client + */ + public function setSoapFeatures($feature) + { + $this->_features = $feature; + + $this->_soapClient = null; + return $this; + } + + /** + * Return current SOAP Features options + * + * @return int + */ + public function getSoapFeatures() + { + return $this->_features; + } + + /** + * Set the SOAP Wsdl Caching Options + * + * @param string|int|boolean|null $caching + * @return Zend_Soap_Client + */ + public function setWsdlCache($caching) + { + if ($caching === null) { + $this->_cache_wsdl = null; + } else { + $this->_cache_wsdl = (int)$caching; + } + return $this; + } + + /** + * Get current SOAP Wsdl Caching option + * + * @return int + */ + public function getWsdlCache() + { + return $this->_cache_wsdl; + } + + /** + * Set the string to use in User-Agent header + * + * @param string|null $userAgent + * @return Zend_Soap_Client + */ + public function setUserAgent($userAgent) + { + if ($userAgent === null) { + $this->_user_agent = null; + } else { + $this->_user_agent = (string)$userAgent; + } + return $this; + } + + /** + * Get current string to use in User-Agent header + * + * @return string|null + */ + public function getUserAgent() + { + return $this->_user_agent; + } + + /** + * Set the exceptions option + * + * The exceptions option is a boolean value defining whether soap errors + * throw exceptions. + * + * @see http://php.net/manual/soapclient.soapclient.php#refsect1-soapclient.soapclient-parameters + * + * @param bool $exceptions + * @return $this + */ + public function setExceptions($exceptions) + { + $this->_exceptions = (bool) $exceptions; + + return $this; + } + + /** + * Get the exceptions option + * + * The exceptions option is a boolean value defining whether soap errors + * throw exceptions. + * + * @see http://php.net/manual/soapclient.soapclient.php#refsect1-soapclient.soapclient-parameters + * + * @return bool|null + */ + public function getExceptions() + { + return $this->_exceptions; + } + + /** + * Retrieve request XML + * + * @return string + */ + public function getLastRequest() + { + if ($this->_soapClient !== null) { + return $this->_soapClient->__getLastRequest(); + } + + return ''; + } + + /** + * Get response XML + * + * @return string + */ + public function getLastResponse() + { + if ($this->_soapClient !== null) { + return $this->_soapClient->__getLastResponse(); + } + + return ''; + } + + /** + * Retrieve request headers + * + * @return string + */ + public function getLastRequestHeaders() + { + if ($this->_soapClient !== null) { + return $this->_soapClient->__getLastRequestHeaders(); + } + + return ''; + } + + /** + * Retrieve response headers (as string) + * + * @return string + */ + public function getLastResponseHeaders() + { + if ($this->_soapClient !== null) { + return $this->_soapClient->__getLastResponseHeaders(); + } + + return ''; + } + + /** + * Retrieve last invoked method + * + * @return string + */ + public function getLastMethod() + { + return $this->_lastMethod; + } + + /** + * Do request proxy method. + * + * May be overridden in subclasses + * + * @internal + * @param Zend_Soap_Client_Common $client + * @param string $request + * @param string $location + * @param string $action + * @param int $version + * @param int $one_way + * @return mixed + */ + public function _doRequest(Zend_Soap_Client_Common $client, $request, $location, $action, $version, $one_way = null) + { + // Perform request as is + if ($one_way == null) { + return call_user_func(array($client,'SoapClient::__doRequest'), $request, $location, $action, $version); + } else { + return call_user_func(array($client,'SoapClient::__doRequest'), $request, $location, $action, $version, $one_way); + } + } + + /** + * Initialize SOAP Client object + * + * @throws Zend_Soap_Client_Exception + */ + protected function _initSoapClientObject() + { + $wsdl = $this->getWsdl(); + $options = array_merge($this->getOptions(), array('trace' => true)); + + if ($wsdl == null) { + if (!isset($options['location'])) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('\'location\' parameter is required in non-WSDL mode.'); + } + if (!isset($options['uri'])) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('\'uri\' parameter is required in non-WSDL mode.'); + } + } else { + if (isset($options['use'])) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('\'use\' parameter only works in non-WSDL mode.'); + } + if (isset($options['style'])) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('\'style\' parameter only works in non-WSDL mode.'); + } + } + unset($options['wsdl']); + + $this->_soapClient = new Zend_Soap_Client_Common(array($this, '_doRequest'), $wsdl, $options); + } + + + /** + * Perform arguments pre-processing + * + * My be overridden in descendant classes + * + * @param array $arguments + */ + protected function _preProcessArguments($arguments) + { + // Do nothing + return $arguments; + } + + /** + * Perform result pre-processing + * + * My be overridden in descendant classes + * + * @param array $arguments + */ + protected function _preProcessResult($result) + { + // Do nothing + return $result; + } + + /** + * Add SOAP input header + * + * @param SoapHeader $header + * @param boolean $permanent + * @return Zend_Soap_Client + */ + public function addSoapInputHeader(SoapHeader $header, $permanent = false) + { + if ($permanent) { + $this->_permanentSoapInputHeaders[] = $header; + } else { + $this->_soapInputHeaders[] = $header; + } + + return $this; + } + + /** + * Reset SOAP input headers + * + * @return Zend_Soap_Client + */ + public function resetSoapInputHeaders() + { + $this->_permanentSoapInputHeaders = array(); + $this->_soapInputHeaders = array(); + + return $this; + } + + /** + * Get last SOAP output headers + * + * @return array + */ + public function getLastSoapOutputHeaderObjects() + { + return $this->_soapOutputHeaders; + } + + /** + * Perform a SOAP call + * + * @param string $name + * @param array $arguments + * @return mixed + */ + public function __call($name, $arguments) + { + $soapClient = $this->getSoapClient(); + + $this->_lastMethod = $name; + + $soapHeaders = array_merge($this->_permanentSoapInputHeaders, $this->_soapInputHeaders); + $result = $soapClient->__soapCall($name, + $this->_preProcessArguments($arguments), + null, /* Options are already set to the SOAP client object */ + (count($soapHeaders) > 0)? $soapHeaders : null, + $this->_soapOutputHeaders); + + // Reset non-permanent input headers + $this->_soapInputHeaders = array(); + + return $this->_preProcessResult($result); + } + + + /** + * Return a list of available functions + * + * @return array + * @throws Zend_Soap_Client_Exception + */ + public function getFunctions() + { + if ($this->getWsdl() == null) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('\'getFunctions\' method is available only in WSDL mode.'); + } + + $soapClient = $this->getSoapClient(); + return $soapClient->__getFunctions(); + } + + + /** + * Get used types. + * + * @return array + */ + + /** + * Return a list of SOAP types + * + * @return array + * @throws Zend_Soap_Client_Exception + */ + public function getTypes() + { + if ($this->getWsdl() == null) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('\'getTypes\' method is available only in WSDL mode.'); + } + + $soapClient = $this->getSoapClient(); + + return $soapClient->__getTypes(); + } + + /** + * @param SoapClient $soapClient + * @return Zend_Soap_Client + */ + public function setSoapClient(SoapClient $soapClient) + { + $this->_soapClient = $soapClient; + return $this; + } + + /** + * @return SoapClient + */ + public function getSoapClient() + { + if ($this->_soapClient == null) { + $this->_initSoapClientObject(); + } + return $this->_soapClient; + } + + /** + * @param string $name + * @param string $value + * @return Zend_Soap_Client + */ + public function setCookie($cookieName, $cookieValue=null) + { + $soapClient = $this->getSoapClient(); + $soapClient->__setCookie($cookieName, $cookieValue); + return $this; + } +} diff --git a/library/Zend/Soap/Client/Common.php b/library/Zend/Soap/Client/Common.php new file mode 100755 index 000000000..7880115ce --- /dev/null +++ b/library/Zend/Soap/Client/Common.php @@ -0,0 +1,76 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + + +if (extension_loaded('soap')) { + +/** + * @category Zend + * @package Zend_Soap + * @subpackage Client + */ +class Zend_Soap_Client_Common extends SoapClient +{ + /** + * doRequest() pre-processing method + * + * @var callback + */ + protected $_doRequestCallback; + + /** + * Common Soap Client constructor + * + * @param callback $doRequestMethod + * @param string $wsdl + * @param array $options + */ + function __construct($doRequestCallback, $wsdl, $options) + { + $this->_doRequestCallback = $doRequestCallback; + + parent::__construct($wsdl, $options); + } + + /** + * Performs SOAP request over HTTP. + * Overridden to implement different transport layers, perform additional XML processing or other purpose. + * + * @param string $request + * @param string $location + * @param string $action + * @param int $version + * @param int $one_way + * @return mixed + */ + function __doRequest($request, $location, $action, $version, $one_way = null) + { + if ($one_way === null) { + return call_user_func($this->_doRequestCallback, $this, $request, $location, $action, $version); + } else { + return call_user_func($this->_doRequestCallback, $this, $request, $location, $action, $version, $one_way); + } + } + +} + +} // end if (extension_loaded('soap') diff --git a/library/Zend/Soap/Client/DotNet.php b/library/Zend/Soap/Client/DotNet.php new file mode 100755 index 000000000..d031f4c36 --- /dev/null +++ b/library/Zend/Soap/Client/DotNet.php @@ -0,0 +1,95 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** Zend_Soap_Client */ +require_once 'Zend/Soap/Client.php'; + +if (extension_loaded('soap')) { + +/** + * Zend_Soap_Client_Local + * + * Class is intended to be used with .Net Web Services. + * + * Important! Class is at experimental stage now. + * Please leave your notes, compatiblity issues reports or + * suggestions in fw-webservices@lists.zend.com or fw-general@lists.com + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + */ +class Zend_Soap_Client_DotNet extends Zend_Soap_Client +{ + /** + * Constructor + * + * @param string $wsdl + * @param array $options + */ + public function __construct($wsdl = null, $options = null) + { + // Use SOAP 1.1 as default + $this->setSoapVersion(SOAP_1_1); + + parent::__construct($wsdl, $options); + } + + + /** + * Perform arguments pre-processing + * + * My be overridden in descendant classes + * + * @param array $arguments + * @throws Zend_Soap_Client_Exception + */ + protected function _preProcessArguments($arguments) + { + if (count($arguments) > 1 || + (count($arguments) == 1 && !is_array(reset($arguments))) + ) { + require_once 'Zend/Soap/Client/Exception.php'; + throw new Zend_Soap_Client_Exception('.Net webservice arguments have to be grouped into array: array(\'a\' => $a, \'b\' => $b, ...).'); + } + + // Do nothing + return $arguments; + } + + /** + * Perform result pre-processing + * + * My be overridden in descendant classes + * + * @param array $arguments + */ + protected function _preProcessResult($result) + { + $resultProperty = $this->getLastMethod() . 'Result'; + + return $result->$resultProperty; + } + +} + +} // end if (extension_loaded('soap') diff --git a/library/Zend/Soap/Client/Exception.php b/library/Zend/Soap/Client/Exception.php new file mode 100755 index 000000000..8f6d0c627 --- /dev/null +++ b/library/Zend/Soap/Client/Exception.php @@ -0,0 +1,35 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** Zend_Exception */ +require_once 'Zend/Exception.php'; + +/** + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Soap_Client_Exception extends Zend_Exception +{} + diff --git a/library/Zend/Soap/Client/Local.php b/library/Zend/Soap/Client/Local.php new file mode 100755 index 000000000..18a11b282 --- /dev/null +++ b/library/Zend/Soap/Client/Local.php @@ -0,0 +1,99 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** Zend_Soap_Server */ +require_once 'Zend/Soap/Server.php'; + +/** Zend_Soap_Client */ +require_once 'Zend/Soap/Client.php'; + +if (extension_loaded('soap')) { + +/** + * Zend_Soap_Client_Local + * + * Class is intended to be used as local SOAP client which works + * with a provided Server object. + * + * Could be used for development or testing purposes. + * + * @category Zend + * @package Zend_Soap + * @subpackage Client + */ +class Zend_Soap_Client_Local extends Zend_Soap_Client +{ + /** + * Server object + * + * @var Zend_Soap_Server + */ + protected $_server; + + /** + * Local client constructor + * + * @param Zend_Soap_Server $server + * @param string $wsdl + * @param array $options + */ + function __construct(Zend_Soap_Server $server, $wsdl, $options = null) + { + $this->_server = $server; + + // Use Server specified SOAP version as default + $this->setSoapVersion($server->getSoapVersion()); + + parent::__construct($wsdl, $options); + } + + /** + * Actual "do request" method. + * + * @internal + * @param Zend_Soap_Client_Common $client + * @param string $request + * @param string $location + * @param string $action + * @param int $version + * @param int $one_way + * @return mixed + */ + public function _doRequest(Zend_Soap_Client_Common $client, $request, $location, $action, $version, $one_way = null) + { + // Perform request as is + ob_start(); + $this->_server->handle($request); + $response = ob_get_clean(); + + if ($response === null || $response === '') { + $serverResponse = $this->server->getResponse(); + if ($serverResponse !== null) { + $response = $serverResponse; + } + } + + return $response; + } +} + +} // end if (extension_loaded('soap') diff --git a/library/Zend/Soap/Server.php b/library/Zend/Soap/Server.php new file mode 100755 index 000000000..d1421d3ec --- /dev/null +++ b/library/Zend/Soap/Server.php @@ -0,0 +1,1022 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * @see Zend_Server_Interface + */ +require_once 'Zend/Server/Interface.php'; + +/** @see Zend_Xml_Security */ +require_once 'Zend/Xml/Security.php'; + +/** @see Zend_Xml_Exception */ +require_once 'Zend/Xml/Exception.php'; + +/** + * Zend_Soap_Server + * + * @category Zend + * @package Zend_Soap + * @subpackage Server + * @uses Zend_Server_Interface + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Soap_Server implements Zend_Server_Interface +{ + /** + * Actor URI + * @var string URI + */ + protected $_actor; + + /** + * Class registered with this server + * @var string + */ + protected $_class; + + /** + * Arguments to pass to {@link $_class} constructor + * @var array + */ + protected $_classArgs = array(); + + /** + * Object registered with this server + */ + protected $_object; + + /** + * Array of SOAP type => PHP class pairings for handling return/incoming values + * @var array + */ + protected $_classmap; + + /** + * Encoding + * @var string + */ + protected $_encoding; + + /** + * SOAP Server Features + * + * @var int + */ + protected $_features; + + /** + * WSDL Caching Options of SOAP Server + * + * @var mixed + */ + protected $_wsdlCache; + + /** + * WS-I compliant + * + * @var boolean + */ + protected $_wsiCompliant; + + /** + * Registered fault exceptions + * @var array + */ + protected $_faultExceptions = array(); + + /** + * Functions registered with this server; may be either an array or the SOAP_FUNCTIONS_ALL + * constant + * @var array|int + */ + protected $_functions = array(); + + /** + * Persistence mode; should be one of the SOAP persistence constants + * @var int + */ + protected $_persistence; + + /** + * Request XML + * @var string + */ + protected $_request; + + /** + * Response XML + * @var string + */ + protected $_response; + + /** + * Flag: whether or not {@link handle()} should return a response instead + * of automatically emitting it. + * @var boolean + */ + protected $_returnResponse = false; + + /** + * SOAP version to use; SOAP_1_2 by default, to allow processing of headers + * @var int + */ + protected $_soapVersion = SOAP_1_2; + + /** + * URI or path to WSDL + * @var string + */ + protected $_wsdl; + + /** + * URI namespace for SOAP server + * @var string URI + */ + protected $_uri; + + /** + * Constructor + * + * Sets display_errors INI setting to off (prevent client errors due to bad + * XML in response). Registers {@link handlePhpErrors()} as error handler + * for E_USER_ERROR. + * + * If $wsdl is provided, it is passed on to {@link setWsdl()}; if any + * options are specified, they are passed on to {@link setOptions()}. + * + * @param string $wsdl + * @param array $options + * @return void + */ + public function __construct($wsdl = null, array $options = null) + { + if (!extension_loaded('soap')) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('SOAP extension is not loaded.'); + } + + if (null !== $wsdl) { + $this->setWsdl($wsdl); + } + + if (null !== $options) { + $this->setOptions($options); + } + } + + /** + * Set Options + * + * Allows setting options as an associative array of option => value pairs. + * + * @param array|Zend_Config $options + * @return Zend_Soap_Server + */ + public function setOptions($options) + { + if($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + foreach ($options as $key => $value) { + switch ($key) { + case 'actor': + $this->setActor($value); + break; + case 'classmap': + case 'classMap': + $this->setClassmap($value); + break; + case 'encoding': + $this->setEncoding($value); + break; + case 'soapVersion': + case 'soap_version': + $this->setSoapVersion($value); + break; + case 'uri': + $this->setUri($value); + break; + case 'wsdl': + $this->setWsdl($value); + break; + case 'featues': + trigger_error(__METHOD__ . ': the option "featues" is deprecated as of 1.10.x and will be removed with 2.0.0; use "features" instead', E_USER_NOTICE); + case 'features': + $this->setSoapFeatures($value); + break; + case 'cache_wsdl': + $this->setWsdlCache($value); + break; + case 'wsi_compliant': + $this->setWsiCompliant($value); + break; + default: + break; + } + } + + return $this; + } + + /** + * Return array of options suitable for using with SoapServer constructor + * + * @return array + */ + public function getOptions() + { + $options = array(); + if (null !== $this->_actor) { + $options['actor'] = $this->_actor; + } + + if (null !== $this->_classmap) { + $options['classmap'] = $this->_classmap; + } + + if (null !== $this->_encoding) { + $options['encoding'] = $this->_encoding; + } + + if (null !== $this->_soapVersion) { + $options['soap_version'] = $this->_soapVersion; + } + + if (null !== $this->_uri) { + $options['uri'] = $this->_uri; + } + + if (null !== $this->_features) { + $options['features'] = $this->_features; + } + + if (null !== $this->_wsdlCache) { + $options['cache_wsdl'] = $this->_wsdlCache; + } + + if (null !== $this->_wsiCompliant) { + $options['wsi_compliant'] = $this->_wsiCompliant; + } + + return $options; + } + /** + * Set WS-I compliant + * + * @param boolean $value + * @return Zend_Soap_Server + */ + public function setWsiCompliant($value) + { + if (is_bool($value)) { + $this->_wsiCompliant = $value; + } + return $this; + } + /** + * Gt WS-I compliant + * + * @return boolean + */ + public function getWsiCompliant() + { + return $this->_wsiCompliant; + } + /** + * Set encoding + * + * @param string $encoding + * @return Zend_Soap_Server + * @throws Zend_Soap_Server_Exception with invalid encoding argument + */ + public function setEncoding($encoding) + { + if (!is_string($encoding)) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid encoding specified'); + } + + $this->_encoding = $encoding; + return $this; + } + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set SOAP version + * + * @param int $version One of the SOAP_1_1 or SOAP_1_2 constants + * @return Zend_Soap_Server + * @throws Zend_Soap_Server_Exception with invalid soap version argument + */ + public function setSoapVersion($version) + { + if (!in_array($version, array(SOAP_1_1, SOAP_1_2))) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid soap version specified'); + } + + $this->_soapVersion = $version; + return $this; + } + + /** + * Get SOAP version + * + * @return int + */ + public function getSoapVersion() + { + return $this->_soapVersion; + } + + /** + * Check for valid URN + * + * @param string $urn + * @return true + * @throws Zend_Soap_Server_Exception on invalid URN + */ + public function validateUrn($urn) + { + $scheme = parse_url($urn, PHP_URL_SCHEME); + if ($scheme === false || $scheme === null) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid URN'); + } + + return true; + } + + /** + * Set actor + * + * Actor is the actor URI for the server. + * + * @param string $actor + * @return Zend_Soap_Server + */ + public function setActor($actor) + { + $this->validateUrn($actor); + $this->_actor = $actor; + return $this; + } + + /** + * Retrieve actor + * + * @return string + */ + public function getActor() + { + return $this->_actor; + } + + /** + * Set URI + * + * URI in SoapServer is actually the target namespace, not a URI; $uri must begin with 'urn:'. + * + * @param string $uri + * @return Zend_Soap_Server + * @throws Zend_Soap_Server_Exception with invalid uri argument + */ + public function setUri($uri) + { + $this->validateUrn($uri); + $this->_uri = $uri; + return $this; + } + + /** + * Retrieve URI + * + * @return string + */ + public function getUri() + { + return $this->_uri; + } + + /** + * Set classmap + * + * @param array $classmap + * @return Zend_Soap_Server + * @throws Zend_Soap_Server_Exception for any invalid class in the class map + */ + public function setClassmap($classmap) + { + if (!is_array($classmap)) { + /** + * @see Zend_Soap_Server_Exception + */ + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Classmap must be an array'); + } + foreach ($classmap as $type => $class) { + if (!class_exists($class)) { + /** + * @see Zend_Soap_Server_Exception + */ + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid class in class map'); + } + } + + $this->_classmap = $classmap; + return $this; + } + + /** + * Retrieve classmap + * + * @return mixed + */ + public function getClassmap() + { + return $this->_classmap; + } + + /** + * Set wsdl + * + * @param string $wsdl URI or path to a WSDL + * @return Zend_Soap_Server + */ + public function setWsdl($wsdl) + { + $this->_wsdl = $wsdl; + return $this; + } + + /** + * Retrieve wsdl + * + * @return string + */ + public function getWsdl() + { + return $this->_wsdl; + } + + /** + * Set the SOAP Feature options. + * + * @param string|int $feature + * @return Zend_Soap_Server + */ + public function setSoapFeatures($feature) + { + $this->_features = $feature; + return $this; + } + + /** + * Return current SOAP Features options + * + * @return int + */ + public function getSoapFeatures() + { + return $this->_features; + } + + /** + * Set the SOAP Wsdl Caching Options + * + * @param string|int|boolean $caching + * @return Zend_Soap_Server + */ + public function setWsdlCache($options) + { + $this->_wsdlCache = $options; + return $this; + } + + /** + * Get current SOAP Wsdl Caching option + */ + public function getWsdlCache() + { + return $this->_wsdlCache; + } + + /** + * Attach a function as a server method + * + * @param array|string $function Function name, array of function names to attach, + * or SOAP_FUNCTIONS_ALL to attach all functions + * @param string $namespace Ignored + * @return Zend_Soap_Server + * @throws Zend_Soap_Server_Exception on invalid functions + */ + public function addFunction($function, $namespace = '') + { + // Bail early if set to SOAP_FUNCTIONS_ALL + if ($this->_functions == SOAP_FUNCTIONS_ALL) { + return $this; + } + + if (is_array($function)) { + foreach ($function as $func) { + if (is_string($func) && function_exists($func)) { + $this->_functions[] = $func; + } else { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('One or more invalid functions specified in array'); + } + } + $this->_functions = array_merge($this->_functions, $function); + } elseif (is_string($function) && function_exists($function)) { + $this->_functions[] = $function; + } elseif ($function == SOAP_FUNCTIONS_ALL) { + $this->_functions = SOAP_FUNCTIONS_ALL; + } else { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid function specified'); + } + + if (is_array($this->_functions)) { + $this->_functions = array_unique($this->_functions); + } + + return $this; + } + + /** + * Attach a class to a server + * + * Accepts a class name to use when handling requests. Any additional + * arguments will be passed to that class' constructor when instantiated. + * + * See {@link setObject()} to set preconfigured object instances as request handlers. + * + * @param string $class Class Name which executes SOAP Requests at endpoint. + * @return Zend_Soap_Server + * @throws Zend_Soap_Server_Exception if called more than once, or if class + * does not exist + */ + public function setClass($class, $namespace = '', $argv = null) + { + if (isset($this->_class)) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('A class has already been registered with this soap server instance'); + } + + if (!is_string($class)) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid class argument (' . gettype($class) . ')'); + } + + if (!class_exists($class)) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Class "' . $class . '" does not exist'); + } + + $this->_class = $class; + if (1 < func_num_args()) { + $argv = func_get_args(); + array_shift($argv); + $this->_classArgs = $argv; + } + + return $this; + } + + /** + * Attach an object to a server + * + * Accepts an instanciated object to use when handling requests. + * + * @param object $object + * @return Zend_Soap_Server + */ + public function setObject($object) + { + if(!is_object($object)) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid object argument ('.gettype($object).')'); + } + + if(isset($this->_object)) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('An object has already been registered with this soap server instance'); + } + + if ($this->_wsiCompliant) { + require_once 'Zend/Soap/Server/Proxy.php'; + $this->_object = new Zend_Soap_Server_Proxy($object); + } else { + $this->_object = $object; + } + + return $this; + } + + /** + * Return a server definition array + * + * Returns a list of all functions registered with {@link addFunction()}, + * merged with all public methods of the class set with {@link setClass()} + * (if any). + * + * @access public + * @return array + */ + public function getFunctions() + { + $functions = array(); + if (null !== $this->_class) { + $functions = get_class_methods($this->_class); + } elseif (null !== $this->_object) { + $functions = get_class_methods($this->_object); + } + + return array_merge((array) $this->_functions, $functions); + } + + /** + * Unimplemented: Load server definition + * + * @param array $array + * @return void + * @throws Zend_Soap_Server_Exception Unimplemented + */ + public function loadFunctions($definition) + { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Unimplemented'); + } + + /** + * Set server persistence + * + * @param int $mode + * @return Zend_Soap_Server + */ + public function setPersistence($mode) + { + if (!in_array($mode, array(SOAP_PERSISTENCE_SESSION, SOAP_PERSISTENCE_REQUEST))) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid persistence mode specified'); + } + + $this->_persistence = $mode; + return $this; + } + + /** + * Get server persistence + * + * @return Zend_Soap_Server + */ + public function getPersistence() + { + return $this->_persistence; + } + + /** + * Set request + * + * $request may be any of: + * - DOMDocument; if so, then cast to XML + * - DOMNode; if so, then grab owner document and cast to XML + * - SimpleXMLElement; if so, then cast to XML + * - stdClass; if so, calls __toString() and verifies XML + * - string; if so, verifies XML + * + * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request + * @return Zend_Soap_Server + */ + protected function _setRequest($request) + { + if ($request instanceof DOMDocument) { + $xml = $request->saveXML(); + } elseif ($request instanceof DOMNode) { + $xml = $request->ownerDocument->saveXML(); + } elseif ($request instanceof SimpleXMLElement) { + $xml = $request->asXML(); + } elseif (is_object($request) || is_string($request)) { + if (is_object($request)) { + $xml = $request->__toString(); + } else { + $xml = $request; + } + + $dom = new DOMDocument(); + try { + if(strlen($xml) == 0 || (!$dom = Zend_Xml_Security::scan($xml, $dom))) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception('Invalid XML'); + } + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Soap/Server/Exception.php'; + throw new Zend_Soap_Server_Exception( + $e->getMessage() + ); + } + } + $this->_request = $xml; + return $this; + } + + /** + * Retrieve request XML + * + * @return string + */ + public function getLastRequest() + { + return $this->_request; + } + + /** + * Set return response flag + * + * If true, {@link handle()} will return the response instead of + * automatically sending it back to the requesting client. + * + * The response is always available via {@link getResponse()}. + * + * @param boolean $flag + * @return Zend_Soap_Server + */ + public function setReturnResponse($flag) + { + $this->_returnResponse = ($flag) ? true : false; + return $this; + } + + /** + * Retrieve return response flag + * + * @return boolean + */ + public function getReturnResponse() + { + return $this->_returnResponse; + } + + /** + * Get response XML + * + * @return string + */ + public function getLastResponse() + { + return $this->_response; + } + + /** + * Get SoapServer object + * + * Uses {@link $_wsdl} and return value of {@link getOptions()} to instantiate + * SoapServer object, and then registers any functions or class with it, as + * well as peristence. + * + * @return SoapServer + */ + protected function _getSoap() + { + $options = $this->getOptions(); + $server = new SoapServer($this->_wsdl, $options); + + if (!empty($this->_functions)) { + $server->addFunction($this->_functions); + } + + if (!empty($this->_class)) { + $args = $this->_classArgs; + array_unshift($args, $this->_class); + if ($this->_wsiCompliant) { + require_once 'Zend/Soap/Server/Proxy.php'; + array_unshift($args, 'Zend_Soap_Server_Proxy'); + } + call_user_func_array(array($server, 'setClass'), $args); + } + + if (!empty($this->_object)) { + $server->setObject($this->_object); + } + + if (null !== $this->_persistence) { + $server->setPersistence($this->_persistence); + } + + return $server; + } + + /** + * Handle a request + * + * Instantiates SoapServer object with options set in object, and + * dispatches its handle() method. + * + * $request may be any of: + * - DOMDocument; if so, then cast to XML + * - DOMNode; if so, then grab owner document and cast to XML + * - SimpleXMLElement; if so, then cast to XML + * - stdClass; if so, calls __toString() and verifies XML + * - string; if so, verifies XML + * + * If no request is passed, pulls request using php:://input (for + * cross-platform compatability purposes). + * + * @param DOMDocument|DOMNode|SimpleXMLElement|stdClass|string $request Optional request + * @return void|string + */ + public function handle($request = null) + { + if (null === $request) { + $request = file_get_contents('php://input'); + } + + // Set Zend_Soap_Server error handler + $displayErrorsOriginalState = $this->_initializeSoapErrorContext(); + + $setRequestException = null; + /** + * @see Zend_Soap_Server_Exception + */ + require_once 'Zend/Soap/Server/Exception.php'; + try { + $this->_setRequest($request); + } catch (Zend_Soap_Server_Exception $e) { + $setRequestException = $e; + } + + $soap = $this->_getSoap(); + + $fault = false; + ob_start(); + if ($setRequestException instanceof Exception) { + // Create SOAP fault message if we've caught a request exception + $fault = $this->fault($setRequestException->getMessage(), 'Sender'); + } else { + try { + $soap->handle($this->_request); + } catch (Exception $e) { + $fault = $this->fault($e); + } + } + $this->_response = ob_get_clean(); + + // Restore original error handler + restore_error_handler(); + ini_set('display_errors', $displayErrorsOriginalState); + + // Send a fault, if we have one + if ($fault) { + $soap->fault($fault->faultcode, $fault->faultstring); + } + + if (!$this->_returnResponse) { + echo $this->_response; + return; + } + + return $this->_response; + } + + /** + * Method initalizes the error context that the SOAPServer enviroment will run in. + * + * @return boolean display_errors original value + */ + protected function _initializeSoapErrorContext() + { + $displayErrorsOriginalState = ini_get('display_errors'); + ini_set('display_errors', false); + set_error_handler(array($this, 'handlePhpErrors'), E_USER_ERROR); + return $displayErrorsOriginalState; + } + + /** + * Register a valid fault exception + * + * @param string|array $class Exception class or array of exception classes + * @return Zend_Soap_Server + */ + public function registerFaultException($class) + { + $this->_faultExceptions = array_merge($this->_faultExceptions, (array) $class); + return $this; + } + + /** + * Deregister a fault exception from the fault exception stack + * + * @param string $class + * @return boolean + */ + public function deregisterFaultException($class) + { + if (in_array($class, $this->_faultExceptions, true)) { + $index = array_search($class, $this->_faultExceptions); + unset($this->_faultExceptions[$index]); + return true; + } + + return false; + } + + /** + * Return fault exceptions list + * + * @return array + */ + public function getFaultExceptions() + { + return $this->_faultExceptions; + } + + /** + * Generate a server fault + * + * Note that the arguments are reverse to those of SoapFault. + * + * If an exception is passed as the first argument, its message and code + * will be used to create the fault object if it has been registered via + * {@Link registerFaultException()}. + * + * @link http://www.w3.org/TR/soap12-part1/#faultcodes + * @param string|Exception $fault + * @param string $code SOAP Fault Codes + * @return SoapFault + */ + public function fault($fault = null, $code = "Receiver") + { + if ($fault instanceof Exception) { + $class = get_class($fault); + if (in_array($class, $this->_faultExceptions)) { + $message = $fault->getMessage(); + $eCode = $fault->getCode(); + $code = empty($eCode) ? $code : $eCode; + } else { + $message = 'Unknown error'; + } + } elseif(is_string($fault)) { + $message = $fault; + } else { + $message = 'Unknown error'; + } + + $allowedFaultModes = array( + 'VersionMismatch', 'MustUnderstand', 'DataEncodingUnknown', + 'Sender', 'Receiver', 'Server' + ); + if(!in_array($code, $allowedFaultModes)) { + $code = "Receiver"; + } + + return new SoapFault($code, $message); + } + + /** + * Throw PHP errors as SoapFaults + * + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param int $errline + * @param array $errcontext + * @return void + * @throws SoapFault + */ + public function handlePhpErrors($errno, $errstr, $errfile = null, $errline = null, array $errcontext = null) + { + throw $this->fault($errstr, "Receiver"); + } +} diff --git a/library/Zend/Soap/Server/Exception.php b/library/Zend/Soap/Server/Exception.php new file mode 100755 index 000000000..1e8531896 --- /dev/null +++ b/library/Zend/Soap/Server/Exception.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + + +/** Zend_Exception */ +require_once 'Zend/Exception.php'; + + +/** + * @category Zend + * @package Zend_Soap + * @subpackage Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Soap_Server_Exception extends Zend_Exception +{} + diff --git a/library/Zend/Soap/Server/Proxy.php b/library/Zend/Soap/Server/Proxy.php new file mode 100755 index 000000000..93b6ab4e6 --- /dev/null +++ b/library/Zend/Soap/Server/Proxy.php @@ -0,0 +1,75 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage AutoDiscover + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id:$ + */ + +class Zend_Soap_Server_Proxy +{ + /** + * @var object + */ + protected $_classInstance; + /** + * @var string + */ + protected $_className; + /** + * Constructor + * + * @param object $service + */ + public function __construct($className, $classArgs = array()) + { + $class = new ReflectionClass($className); + $constructor = $class->getConstructor(); + if ($constructor === null) { + $this->_classInstance = $class->newInstance(); + } else { + $this->_classInstance = $class->newInstanceArgs($classArgs); + } + $this->_className = $className; + } + /** + * Proxy for the WS-I compliant call + * + * @param string $name + * @param string $arguments + * @return array + */ + public function __call($name, $arguments) + { + $result = call_user_func_array(array($this->_classInstance, $name), $this->_preProcessArguments($arguments)); + return array("{$name}Result"=>$result); + } + /** + * Pre process arguments + * + * @param mixed $arguments + * @return array + */ + protected function _preProcessArguments($arguments) + { + if (count($arguments) == 1 && is_object($arguments[0])) { + return get_object_vars($arguments[0]); + } else { + return $arguments; + } + } +} diff --git a/library/Zend/Soap/Wsdl.php b/library/Zend/Soap/Wsdl.php new file mode 100755 index 000000000..afc5f687c --- /dev/null +++ b/library/Zend/Soap/Wsdl.php @@ -0,0 +1,670 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_Interface + */ +require_once "Zend/Soap/Wsdl/Strategy/Interface.php"; + +/** + * @see Zend_Soap_Wsdl_Strategy_Abstract + */ +require_once "Zend/Soap/Wsdl/Strategy/Abstract.php"; + +/** @see Zend_Xml_Security */ +require_once "Zend/Xml/Security.php"; + +/** + * Zend_Soap_Wsdl + * + * @category Zend + * @package Zend_Soap + */ +class Zend_Soap_Wsdl +{ + /** + * @var object DomDocument Instance + */ + private $_dom; + + /** + * @var object WSDL Root XML_Tree_Node + */ + private $_wsdl; + + /** + * @var string URI where the WSDL will be available + */ + private $_uri; + + /** + * @var DOMElement + */ + private $_schema = null; + + /** + * Types defined on schema + * + * @var array + */ + private $_includedTypes = array(); + + /** + * Strategy for detection of complex types + */ + protected $_strategy = null; + + + /** + * Constructor + * + * @param string $name Name of the Web Service being Described + * @param string $uri URI where the WSDL will be available + * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy + */ + public function __construct($name, $uri, $strategy = true) + { + if ($uri instanceof Zend_Uri_Http) { + $uri = $uri->getUri(); + } + $this->_uri = $uri; + + /** + * @todo change DomDocument object creation from cparsing to construxting using API + * It also should authomatically escape $name and $uri values if necessary + */ + $wsdl = "<?xml version='1.0' ?> + <definitions name='$name' targetNamespace='$uri' + xmlns='http://schemas.xmlsoap.org/wsdl/' + xmlns:tns='$uri' + xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' + xmlns:xsd='http://www.w3.org/2001/XMLSchema' + xmlns:soap-enc='http://schemas.xmlsoap.org/soap/encoding/' + xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'></definitions>"; + $this->_dom = new DOMDocument(); + if (!$this->_dom = Zend_Xml_Security::scan($wsdl, $this->_dom)) { + require_once 'Zend/Server/Exception.php'; + throw new Zend_Server_Exception('Unable to create DomDocument'); + } + $this->_wsdl = $this->_dom->documentElement; + + $this->setComplexTypeStrategy($strategy); + } + + /** + * Set a new uri for this WSDL + * + * @param string|Zend_Uri_Http $uri + * @return Zend_Server_Wsdl + */ + public function setUri($uri) + { + if ($uri instanceof Zend_Uri_Http) { + $uri = $uri->getUri(); + } + $oldUri = $this->_uri; + $this->_uri = $uri; + + if($this->_dom !== null) { + // @todo: This is the worst hack ever, but its needed due to design and non BC issues of WSDL generation + $xml = $this->_dom->saveXML(); + $xml = str_replace($oldUri, $uri, $xml); + $this->_dom = new DOMDocument(); + $this->_dom = Zend_Xml_Security::scan($xml, $this->_dom); + } + + return $this; + } + + /** + * Set a strategy for complex type detection and handling + * + * @todo Boolean is for backwards compability with extractComplexType object var. Remove it in later versions. + * @param boolean|string|Zend_Soap_Wsdl_Strategy_Interface $strategy + * @return Zend_Soap_Wsdl + */ + public function setComplexTypeStrategy($strategy) + { + if($strategy === true) { + require_once "Zend/Soap/Wsdl/Strategy/DefaultComplexType.php"; + $strategy = new Zend_Soap_Wsdl_Strategy_DefaultComplexType(); + } else if($strategy === false) { + require_once "Zend/Soap/Wsdl/Strategy/AnyType.php"; + $strategy = new Zend_Soap_Wsdl_Strategy_AnyType(); + } else if(is_string($strategy)) { + if(class_exists($strategy)) { + $strategy = new $strategy(); + } else { + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception( + sprintf("Strategy with name '%s does not exist.", $strategy + )); + } + } + + if(!($strategy instanceof Zend_Soap_Wsdl_Strategy_Interface)) { + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception("Set a strategy that is not of type 'Zend_Soap_Wsdl_Strategy_Interface'"); + } + $this->_strategy = $strategy; + return $this; + } + + /** + * Get the current complex type strategy + * + * @return Zend_Soap_Wsdl_Strategy_Interface + */ + public function getComplexTypeStrategy() + { + return $this->_strategy; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_messages message} element to the WSDL + * + * @param string $name Name for the {@link http://www.w3.org/TR/wsdl#_messages message} + * @param array $parts An array of {@link http://www.w3.org/TR/wsdl#_message parts} + * The array is constructed like: 'name of part' => 'part xml schema data type' + * or 'name of part' => array('type' => 'part xml schema type') + * or 'name of part' => array('element' => 'part xml element name') + * @return object The new message's XML_Tree_Node for use in {@link function addDocumentation} + */ + public function addMessage($name, $parts) + { + $message = $this->_dom->createElement('message'); + + $message->setAttribute('name', $name); + + if (sizeof($parts) > 0) { + foreach ($parts as $name => $type) { + $part = $this->_dom->createElement('part'); + $part->setAttribute('name', $name); + if (is_array($type)) { + foreach ($type as $key => $value) { + $part->setAttribute($key, $value); + } + } else { + $part->setAttribute('type', $type); + } + $message->appendChild($part); + } + } + + $this->_wsdl->appendChild($message); + + return $message; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_porttypes portType} element to the WSDL + * + * @param string $name portType element's name + * @return object The new portType's XML_Tree_Node for use in {@link function addPortOperation} and {@link function addDocumentation} + */ + public function addPortType($name) + { + $portType = $this->_dom->createElement('portType'); + $portType->setAttribute('name', $name); + $this->_wsdl->appendChild($portType); + + return $portType; + } + + /** + * Add an {@link http://www.w3.org/TR/wsdl#_request-response operation} element to a portType element + * + * @param object $portType a portType XML_Tree_Node, from {@link function addPortType} + * @param string $name Operation name + * @param string $input Input Message + * @param string $output Output Message + * @param string $fault Fault Message + * @return object The new operation's XML_Tree_Node for use in {@link function addDocumentation} + */ + public function addPortOperation($portType, $name, $input = false, $output = false, $fault = false) + { + $operation = $this->_dom->createElement('operation'); + $operation->setAttribute('name', $name); + + if (is_string($input) && (strlen(trim($input)) >= 1)) { + $node = $this->_dom->createElement('input'); + $node->setAttribute('message', $input); + $operation->appendChild($node); + } + if (is_string($output) && (strlen(trim($output)) >= 1)) { + $node= $this->_dom->createElement('output'); + $node->setAttribute('message', $output); + $operation->appendChild($node); + } + if (is_string($fault) && (strlen(trim($fault)) >= 1)) { + $node = $this->_dom->createElement('fault'); + $node->setAttribute('message', $fault); + $operation->appendChild($node); + } + + $portType->appendChild($operation); + + return $operation; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_bindings binding} element to WSDL + * + * @param string $name Name of the Binding + * @param string $type name of the portType to bind + * @return object The new binding's XML_Tree_Node for use with {@link function addBindingOperation} and {@link function addDocumentation} + */ + public function addBinding($name, $portType) + { + $binding = $this->_dom->createElement('binding'); + $binding->setAttribute('name', $name); + $binding->setAttribute('type', $portType); + + $this->_wsdl->appendChild($binding); + + return $binding; + } + + /** + * Add an operation to a binding element + * + * @param object $binding A binding XML_Tree_Node returned by {@link function addBinding} + * @param array $input An array of attributes for the input element, allowed keys are: 'use', 'namespace', 'encodingStyle'. {@link http://www.w3.org/TR/wsdl#_soap:body More Information} + * @param array $output An array of attributes for the output element, allowed keys are: 'use', 'namespace', 'encodingStyle'. {@link http://www.w3.org/TR/wsdl#_soap:body More Information} + * @param array $fault An array of attributes for the fault element, allowed keys are: 'name', 'use', 'namespace', 'encodingStyle'. {@link http://www.w3.org/TR/wsdl#_soap:body More Information} + * @return object The new Operation's XML_Tree_Node for use with {@link function addSoapOperation} and {@link function addDocumentation} + */ + public function addBindingOperation($binding, $name, $input = false, $output = false, $fault = false) + { + $operation = $this->_dom->createElement('operation'); + $operation->setAttribute('name', $name); + + if (is_array($input)) { + $node = $this->_dom->createElement('input'); + $soap_node = $this->_dom->createElement('soap:body'); + foreach ($input as $name => $value) { + $soap_node->setAttribute($name, $value); + } + $node->appendChild($soap_node); + $operation->appendChild($node); + } + + if (is_array($output)) { + $node = $this->_dom->createElement('output'); + $soap_node = $this->_dom->createElement('soap:body'); + foreach ($output as $name => $value) { + $soap_node->setAttribute($name, $value); + } + $node->appendChild($soap_node); + $operation->appendChild($node); + } + + if (is_array($fault)) { + $node = $this->_dom->createElement('fault'); + /** + * Note. Do we really need name attribute to be also set at wsdl:fault node??? + * W3C standard doesn't mention it (http://www.w3.org/TR/wsdl#_soap:fault) + * But some real world WSDLs use it, so it may be required for compatibility reasons. + */ + if (isset($fault['name'])) { + $node->setAttribute('name', $fault['name']); + } + + $soap_node = $this->_dom->createElement('soap:fault'); + foreach ($fault as $name => $value) { + $soap_node->setAttribute($name, $value); + } + $node->appendChild($soap_node); + $operation->appendChild($node); + } + + $binding->appendChild($operation); + + return $operation; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_soap:binding SOAP binding} element to a Binding element + * + * @param object $binding A binding XML_Tree_Node returned by {@link function addBinding} + * @param string $style binding style, possible values are "rpc" (the default) and "document" + * @param string $transport Transport method (defaults to HTTP) + * @return boolean + */ + public function addSoapBinding($binding, $style = 'document', $transport = 'http://schemas.xmlsoap.org/soap/http') + { + $soap_binding = $this->_dom->createElement('soap:binding'); + $soap_binding->setAttribute('style', $style); + $soap_binding->setAttribute('transport', $transport); + + $binding->appendChild($soap_binding); + + return $soap_binding; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_soap:operation SOAP operation} to an operation element + * + * @param object $operation An operation XML_Tree_Node returned by {@link function addBindingOperation} + * @param string $soap_action SOAP Action + * @return boolean + */ + public function addSoapOperation($binding, $soap_action) + { + if ($soap_action instanceof Zend_Uri_Http) { + $soap_action = $soap_action->getUri(); + } + $soap_operation = $this->_dom->createElement('soap:operation'); + $soap_operation->setAttribute('soapAction', $soap_action); + + $binding->insertBefore($soap_operation, $binding->firstChild); + + return $soap_operation; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_services service} element to the WSDL + * + * @param string $name Service Name + * @param string $port_name Name of the port for the service + * @param string $binding Binding for the port + * @param string $location SOAP Address for the service + * @return object The new service's XML_Tree_Node for use with {@link function addDocumentation} + */ + public function addService($name, $port_name, $binding, $location) + { + if ($location instanceof Zend_Uri_Http) { + $location = $location->getUri(); + } + $service = $this->_dom->createElement('service'); + $service->setAttribute('name', $name); + + $port = $this->_dom->createElement('port'); + $port->setAttribute('name', $port_name); + $port->setAttribute('binding', $binding); + + $soap_address = $this->_dom->createElement('soap:address'); + $soap_address->setAttribute('location', $location); + + $port->appendChild($soap_address); + $service->appendChild($port); + + $this->_wsdl->appendChild($service); + + return $service; + } + + /** + * Add a documentation element to any element in the WSDL. + * + * Note that the WSDL {@link http://www.w3.org/TR/wsdl#_documentation specification} uses 'document', + * but the WSDL {@link http://schemas.xmlsoap.org/wsdl/ schema} uses 'documentation' instead. + * The {@link http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html#WSDL_documentation_Element WS-I Basic Profile 1.1} recommends using 'documentation'. + * + * @param object $input_node An XML_Tree_Node returned by another method to add the documentation to + * @param string $documentation Human readable documentation for the node + * @return DOMElement The documentation element + */ + public function addDocumentation($input_node, $documentation) + { + if ($input_node === $this) { + $node = $this->_dom->documentElement; + } else { + $node = $input_node; + } + + $doc = $this->_dom->createElement('documentation'); + $doc_cdata = $this->_dom->createTextNode(str_replace(array("\r\n", "\r"), "\n", $documentation)); + $doc->appendChild($doc_cdata); + + if($node->hasChildNodes()) { + $node->insertBefore($doc, $node->firstChild); + } else { + $node->appendChild($doc); + } + + return $doc; + } + + /** + * Add WSDL Types element + * + * @param object $types A DomDocument|DomNode|DomElement|DomDocumentFragment with all the XML Schema types defined in it + */ + public function addTypes($types) + { + if ($types instanceof DomDocument) { + $dom = $this->_dom->importNode($types->documentElement); + $this->_wsdl->appendChild($types->documentElement); + } elseif ($types instanceof DomNode || $types instanceof DomElement || $types instanceof DomDocumentFragment ) { + $dom = $this->_dom->importNode($types); + $this->_wsdl->appendChild($dom); + } + } + + /** + * Add a complex type name that is part of this WSDL and can be used in signatures. + * + * @param string $type + * @return Zend_Soap_Wsdl + */ + public function addType($type) + { + if(!in_array($type, $this->_includedTypes)) { + $this->_includedTypes[] = $type; + } + return $this; + } + + /** + * Return an array of all currently included complex types + * + * @return array + */ + public function getTypes() + { + return $this->_includedTypes; + } + + /** + * Return the Schema node of the WSDL + * + * @return DOMElement + */ + public function getSchema() + { + if($this->_schema == null) { + $this->addSchemaTypeSection(); + } + + return $this->_schema; + } + + /** + * Return the WSDL as XML + * + * @return string WSDL as XML + */ + public function toXML() + { + return $this->_dom->saveXML(); + } + + /** + * Return DOM Document + * + * @return object DomDocum ent + */ + public function toDomDocument() + { + return $this->_dom; + } + + /** + * Echo the WSDL as XML + * + * @return boolean + */ + public function dump($filename = false) + { + if (!$filename) { + echo $this->toXML(); + return true; + } else { + return file_put_contents($filename, $this->toXML()); + } + } + + /** + * Returns an XSD Type for the given PHP type + * + * @param string $type PHP Type to get the XSD type for + * @return string + */ + public function getType($type) + { + switch (strtolower($type)) { + case 'string': + case 'str': + return 'xsd:string'; + case 'long': + return 'xsd:long'; + case 'int': + case 'integer': + return 'xsd:int'; + case 'float': + return 'xsd:float'; + case 'double': + return 'xsd:double'; + case 'boolean': + case 'bool': + return 'xsd:boolean'; + case 'array': + return 'soap-enc:Array'; + case 'object': + return 'xsd:struct'; + case 'mixed': + return 'xsd:anyType'; + case 'void': + return ''; + default: + // delegate retrieval of complex type to current strategy + return $this->addComplexType($type); + } + } + + /** + * This function makes sure a complex types section and schema additions are set. + * + * @return Zend_Soap_Wsdl + */ + public function addSchemaTypeSection() + { + if ($this->_schema === null) { + $this->_schema = $this->_dom->createElement('xsd:schema'); + $this->_schema->setAttribute('targetNamespace', $this->_uri); + $types = $this->_dom->createElement('types'); + $types->appendChild($this->_schema); + $this->_wsdl->appendChild($types); + } + return $this; + } + + /** + * Add a {@link http://www.w3.org/TR/wsdl#_types types} data type definition + * + * @param string $type Name of the class to be specified + * @return string XSD Type for the given PHP type + */ + public function addComplexType($type) + { + if (in_array($type, $this->getTypes())) { + return "tns:$type"; + } + $this->addSchemaTypeSection(); + + $strategy = $this->getComplexTypeStrategy(); + $strategy->setContext($this); + // delegates the detection of a complex type to the current strategy + return $strategy->addComplexType($type); + } + + /** + * Parse an xsd:element represented as an array into a DOMElement. + * + * @param array $element an xsd:element represented as an array + * @return DOMElement parsed element + */ + private function _parseElement($element) + { + if (!is_array($element)) { + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception("The 'element' parameter needs to be an associative array."); + } + + $elementXml = $this->_dom->createElement('xsd:element'); + foreach ($element as $key => $value) { + if (in_array($key, array('sequence', 'all', 'choice'))) { + if (is_array($value)) { + $complexType = $this->_dom->createElement('xsd:complexType'); + if (count($value) > 0) { + $container = $this->_dom->createElement('xsd:' . $key); + foreach ($value as $subelement) { + $subelementXml = $this->_parseElement($subelement); + $container->appendChild($subelementXml); + } + $complexType->appendChild($container); + } + $elementXml->appendChild($complexType); + } + } else { + $elementXml->setAttribute($key, $value); + } + } + return $elementXml; + } + + /** + * Add an xsd:element represented as an array to the schema. + * + * Array keys represent attribute names and values their respective value. + * The 'sequence', 'all' and 'choice' keys must have an array of elements as their value, + * to add them to a nested complexType. + * + * Example: array( 'name' => 'MyElement', + * 'sequence' => array( array('name' => 'myString', 'type' => 'string'), + * array('name' => 'myInteger', 'type' => 'int') ) ); + * Resulting XML: <xsd:element name="MyElement"><xsd:complexType><xsd:sequence> + * <xsd:element name="myString" type="string"/> + * <xsd:element name="myInteger" type="int"/> + * </xsd:sequence></xsd:complexType></xsd:element> + * + * @param array $element an xsd:element represented as an array + * @return string xsd:element for the given element array + */ + public function addElement($element) + { + $schema = $this->getSchema(); + $elementXml = $this->_parseElement($element); + $schema->appendChild($elementXml); + return 'tns:' . $element['name']; + } +} diff --git a/library/Zend/Soap/Wsdl/Exception.php b/library/Zend/Soap/Wsdl/Exception.php new file mode 100755 index 000000000..029ef73b5 --- /dev/null +++ b/library/Zend/Soap/Wsdl/Exception.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Exception + */ +require_once "Zend/Exception.php"; + +/** + * Zend_Soap_Wsdl_Exception + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Wsdl_Exception extends Zend_Exception { } diff --git a/library/Zend/Soap/Wsdl/Strategy/Abstract.php b/library/Zend/Soap/Wsdl/Strategy/Abstract.php new file mode 100755 index 000000000..63abdba42 --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/Abstract.php @@ -0,0 +1,66 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_Interface + */ +require_once "Zend/Soap/Wsdl/Strategy/Interface.php"; + +/** + * Abstract class for Zend_Soap_Wsdl_Strategy. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Soap_Wsdl_Strategy_Abstract implements Zend_Soap_Wsdl_Strategy_Interface +{ + /** + * Context object + * + * @var Zend_Soap_Wsdl + */ + protected $_context; + + /** + * Set the Zend_Soap_Wsdl Context object this strategy resides in. + * + * @param Zend_Soap_Wsdl $context + * @return void + */ + public function setContext(Zend_Soap_Wsdl $context) + { + $this->_context = $context; + } + + /** + * Return the current Zend_Soap_Wsdl context object + * + * @return Zend_Soap_Wsdl + */ + public function getContext() + { + return $this->_context; + } +} diff --git a/library/Zend/Soap/Wsdl/Strategy/AnyType.php b/library/Zend/Soap/Wsdl/Strategy/AnyType.php new file mode 100755 index 000000000..bb0e01179 --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/AnyType.php @@ -0,0 +1,59 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_Interface + */ +require_once "Zend/Soap/Wsdl/Strategy/Interface.php"; + +/** + * Zend_Soap_Wsdl_Strategy_AnyType + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Wsdl_Strategy_AnyType implements Zend_Soap_Wsdl_Strategy_Interface +{ + /** + * Not needed in this strategy. + * + * @param Zend_Soap_Wsdl $context + */ + public function setContext(Zend_Soap_Wsdl $context) + { + + } + + /** + * Returns xsd:anyType regardless of the input. + * + * @param string $type + * @return string + */ + public function addComplexType($type) + { + return 'xsd:anyType'; + } +} diff --git a/library/Zend/Soap/Wsdl/Strategy/ArrayOfTypeComplex.php b/library/Zend/Soap/Wsdl/Strategy/ArrayOfTypeComplex.php new file mode 100755 index 000000000..3e7d6acbb --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/ArrayOfTypeComplex.php @@ -0,0 +1,145 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_DefaultComplexType + */ +require_once "Zend/Soap/Wsdl/Strategy/DefaultComplexType.php"; + +/** + * Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex extends Zend_Soap_Wsdl_Strategy_DefaultComplexType +{ + protected $_inProcess = array(); + + /** + * Add an ArrayOfType based on the xsd:complexType syntax if type[] is detected in return value doc comment. + * + * @param string $type + * @return string tns:xsd-type + */ + public function addComplexType($type) + { + if (in_array($type, $this->_inProcess)) { + return "tns:" . $type; + } + $this->_inProcess[$type] = $type; + + $nestingLevel = $this->_getNestedCount($type); + + if($nestingLevel > 1) { + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception( + "ArrayOfTypeComplex cannot return nested ArrayOfObject deeper than ". + "one level. Use array object properties to return deep nested data. + "); + } + + $singularType = $this->_getSingularPhpType($type); + + if(!class_exists($singularType)) { + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception(sprintf( + "Cannot add a complex type %s that is not an object or where ". + "class could not be found in 'DefaultComplexType' strategy.", $type + )); + } + + if($nestingLevel == 1) { + // The following blocks define the Array of Object structure + $xsdComplexTypeName = $this->_addArrayOfComplexType($singularType, $type); + } else { + $xsdComplexTypeName = $singularType; + } + + // The array for the objects has been created, now build the object definition: + if(!in_array($singularType, $this->getContext()->getTypes())) { + parent::addComplexType($singularType); + } + + unset($this->_inProcess[$type]); + return "tns:".$xsdComplexTypeName; + } + + protected function _addArrayOfComplexType($singularType, $type) + { + $dom = $this->getContext()->toDomDocument(); + + $xsdComplexTypeName = $this->_getXsdComplexTypeName($singularType); + + if(!in_array($xsdComplexTypeName, $this->getContext()->getTypes())) { + $complexType = $dom->createElement('xsd:complexType'); + $complexType->setAttribute('name', $xsdComplexTypeName); + + $complexContent = $dom->createElement("xsd:complexContent"); + $complexType->appendChild($complexContent); + + $xsdRestriction = $dom->createElement("xsd:restriction"); + $xsdRestriction->setAttribute('base', 'soap-enc:Array'); + $complexContent->appendChild($xsdRestriction); + + $xsdAttribute = $dom->createElement("xsd:attribute"); + $xsdAttribute->setAttribute("ref", "soap-enc:arrayType"); + $xsdAttribute->setAttribute("wsdl:arrayType", sprintf("tns:%s[]", $singularType)); + $xsdRestriction->appendChild($xsdAttribute); + + $this->getContext()->getSchema()->appendChild($complexType); + $this->getContext()->addType($xsdComplexTypeName); + } + + return $xsdComplexTypeName; + } + + protected function _getXsdComplexTypeName($type) + { + return sprintf('ArrayOf%s', $type); + } + + /** + * From a nested definition with type[], get the singular PHP Type + * + * @param string $type + * @return string + */ + protected function _getSingularPhpType($type) + { + return str_replace("[]", "", $type); + } + + /** + * Return the array nesting level based on the type name + * + * @param string $type + * @return integer + */ + protected function _getNestedCount($type) + { + return substr_count($type, "[]"); + } +} diff --git a/library/Zend/Soap/Wsdl/Strategy/ArrayOfTypeSequence.php b/library/Zend/Soap/Wsdl/Strategy/ArrayOfTypeSequence.php new file mode 100755 index 000000000..0c04221a3 --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/ArrayOfTypeSequence.php @@ -0,0 +1,155 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_DefaultComplexType + */ +require_once "Zend/Soap/Wsdl/Strategy/DefaultComplexType.php"; + +/** + * Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence extends Zend_Soap_Wsdl_Strategy_DefaultComplexType +{ + /** + * Add an unbounded ArrayOfType based on the xsd:sequence syntax if type[] is detected in return value doc comment. + * + * @param string $type + * @return string tns:xsd-type + */ + public function addComplexType($type) + { + $nestedCounter = $this->_getNestedCount($type); + + if($nestedCounter > 0) { + $singularType = $this->_getSingularType($type); + + for($i = 1; $i <= $nestedCounter; $i++) { + $complexTypeName = substr($this->_getTypeNameBasedOnNestingLevel($singularType, $i), 4); + $childTypeName = $this->_getTypeNameBasedOnNestingLevel($singularType, $i-1); + + $this->_addElementFromWsdlAndChildTypes($complexTypeName, $childTypeName); + } + // adding the PHP type which is resolved to a nested XSD type. therefore add only once. + $this->getContext()->addType($complexTypeName); + + return "tns:$complexTypeName"; + } else if (!in_array($type, $this->getContext()->getTypes())) { + // New singular complex type + return parent::addComplexType($type); + } else { + // Existing complex type + return $this->getContext()->getType($type); + } + } + + /** + * Return the ArrayOf or simple type name based on the singular xsdtype and the nesting level + * + * @param string $singularType + * @param int $level + * @return string + */ + protected function _getTypeNameBasedOnNestingLevel($singularType, $level) + { + if($level == 0) { + // This is not an Array anymore, return the xsd simple type + return $singularType; + } else { + $prefix = str_repeat("ArrayOf", $level); + $xsdType = $this->_getStrippedXsdType($singularType); + $arrayType = $prefix.$xsdType; + return "tns:$arrayType"; + } + } + + /** + * Strip the xsd: from a singularType and Format it nice for ArrayOf<Type> naming + * + * @param string $singularType + * @return string + */ + protected function _getStrippedXsdType($singularType) + { + return ucfirst(substr(strtolower($singularType), 4)); + } + + /** + * From a nested defintion with type[], get the singular xsd:type + * + * @throws Zend_Soap_Wsdl_Exception When no xsd:simpletype can be detected. + * @param string $type + * @return string + */ + protected function _getSingularType($type) + { + $singulartype = $this->getContext()->getType(str_replace("[]", "", $type)); + return $singulartype; + } + + /** + * Return the array nesting level based on the type name + * + * @param string $type + * @return integer + */ + protected function _getNestedCount($type) + { + return substr_count($type, "[]"); + } + + /** + * Append the complex type definition to the WSDL via the context access + * + * @param string $arrayType + * @param string $childTypeName + * @return void + */ + protected function _addElementFromWsdlAndChildTypes($arrayType, $childTypeName) + { + if (!in_array($arrayType, $this->getContext()->getTypes())) { + $dom = $this->getContext()->toDomDocument(); + + $complexType = $dom->createElement('xsd:complexType'); + $complexType->setAttribute('name', $arrayType); + + $sequence = $dom->createElement('xsd:sequence'); + + $element = $dom->createElement('xsd:element'); + $element->setAttribute('name', 'item'); + $element->setAttribute('type', $childTypeName); + $element->setAttribute('minOccurs', 0); + $element->setAttribute('maxOccurs', 'unbounded'); + $sequence->appendChild($element); + + $complexType->appendChild($sequence); + + $this->getContext()->getSchema()->appendChild($complexType); + $this->getContext()->addType($arrayType); + } + } +} diff --git a/library/Zend/Soap/Wsdl/Strategy/Composite.php b/library/Zend/Soap/Wsdl/Strategy/Composite.php new file mode 100755 index 000000000..eb531bfb0 --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/Composite.php @@ -0,0 +1,188 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_Interface + */ +require_once "Zend/Soap/Wsdl/Strategy/Interface.php"; + +/** + * Zend_Soap_Wsdl_Strategy_Composite + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Wsdl_Strategy_Composite implements Zend_Soap_Wsdl_Strategy_Interface +{ + /** + * Typemap of Complex Type => Strategy pairs. + * + * @var array + */ + protected $_typeMap = array(); + + /** + * Default Strategy of this composite + * + * @var string|Zend_Soap_Wsdl_Strategy_Interface + */ + protected $_defaultStrategy; + + /** + * Context WSDL file that this composite serves + * + * @var Zend_Soap_Wsdl|null + */ + protected $_context; + + /** + * Construct Composite WSDL Strategy. + * + * @throws Zend_Soap_Wsdl_Exception + * @param array $typeMap + * @param string|Zend_Soap_Wsdl_Strategy_Interface $defaultStrategy + */ + public function __construct(array $typeMap=array(), $defaultStrategy="Zend_Soap_Wsdl_Strategy_DefaultComplexType") + { + foreach($typeMap AS $type => $strategy) { + $this->connectTypeToStrategy($type, $strategy); + } + $this->_defaultStrategy = $defaultStrategy; + } + + /** + * Connect a complex type to a given strategy. + * + * @throws Zend_Soap_Wsdl_Exception + * @param string $type + * @param string|Zend_Soap_Wsdl_Strategy_Interface $strategy + * @return Zend_Soap_Wsdl_Strategy_Composite + */ + public function connectTypeToStrategy($type, $strategy) + { + if(!is_string($type)) { + /** + * @see Zend_Soap_Wsdl_Exception + */ + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception("Invalid type given to Composite Type Map."); + } + $this->_typeMap[$type] = $strategy; + return $this; + } + + /** + * Return default strategy of this composite + * + * @throws Zend_Soap_Wsdl_Exception + * @param string $type + * @return Zend_Soap_Wsdl_Strategy_Interface + */ + public function getDefaultStrategy() + { + $strategy = $this->_defaultStrategy; + if(is_string($strategy) && class_exists($strategy)) { + $strategy = new $strategy; + } + if( !($strategy instanceof Zend_Soap_Wsdl_Strategy_Interface) ) { + /** + * @see Zend_Soap_Wsdl_Exception + */ + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception( + "Default Strategy for Complex Types is not a valid strategy object." + ); + } + $this->_defaultStrategy = $strategy; + return $strategy; + } + + /** + * Return specific strategy or the default strategy of this type. + * + * @throws Zend_Soap_Wsdl_Exception + * @param string $type + * @return Zend_Soap_Wsdl_Strategy_Interface + */ + public function getStrategyOfType($type) + { + if(isset($this->_typeMap[$type])) { + $strategy = $this->_typeMap[$type]; + + if(is_string($strategy) && class_exists($strategy)) { + $strategy = new $strategy(); + } + + if( !($strategy instanceof Zend_Soap_Wsdl_Strategy_Interface) ) { + /** + * @see Zend_Soap_Wsdl_Exception + */ + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception( + "Strategy for Complex Type '".$type."' is not a valid strategy object." + ); + } + $this->_typeMap[$type] = $strategy; + } else { + $strategy = $this->getDefaultStrategy(); + } + return $strategy; + } + + /** + * Method accepts the current WSDL context file. + * + * @param Zend_Soap_Wsdl $context + */ + public function setContext(Zend_Soap_Wsdl $context) + { + $this->_context = $context; + return $this; + } + + /** + * Create a complex type based on a strategy + * + * @throws Zend_Soap_Wsdl_Exception + * @param string $type + * @return string XSD type + */ + public function addComplexType($type) + { + if(!($this->_context instanceof Zend_Soap_Wsdl) ) { + /** + * @see Zend_Soap_Wsdl_Exception + */ + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception( + "Cannot add complex type '".$type."', no context is set for this composite strategy." + ); + } + + $strategy = $this->getStrategyOfType($type); + $strategy->setContext($this->_context); + return $strategy->addComplexType($type); + } +} diff --git a/library/Zend/Soap/Wsdl/Strategy/DefaultComplexType.php b/library/Zend/Soap/Wsdl/Strategy/DefaultComplexType.php new file mode 100755 index 000000000..4bbf2a8f3 --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/DefaultComplexType.php @@ -0,0 +1,91 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Soap_Wsdl_Strategy_Abstract + */ +require_once "Zend/Soap/Wsdl/Strategy/Abstract.php"; + +/** + * Zend_Soap_Wsdl_Strategy_DefaultComplexType + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Soap_Wsdl_Strategy_DefaultComplexType extends Zend_Soap_Wsdl_Strategy_Abstract +{ + /** + * Add a complex type by recursivly using all the class properties fetched via Reflection. + * + * @param string $type Name of the class to be specified + * @return string XSD Type for the given PHP type + */ + public function addComplexType($type) + { + if(!class_exists($type)) { + require_once "Zend/Soap/Wsdl/Exception.php"; + throw new Zend_Soap_Wsdl_Exception(sprintf( + "Cannot add a complex type %s that is not an object or where ". + "class could not be found in 'DefaultComplexType' strategy.", $type + )); + } + + $dom = $this->getContext()->toDomDocument(); + $class = new ReflectionClass($type); + + $defaultProperties = $class->getDefaultProperties(); + + $complexType = $dom->createElement('xsd:complexType'); + $complexType->setAttribute('name', $type); + + $all = $dom->createElement('xsd:all'); + + foreach ($class->getProperties() as $property) { + if ($property->isPublic() && preg_match_all('/@var\s+([^\s]+)/m', $property->getDocComment(), $matches)) { + + /** + * @todo check if 'xsd:element' must be used here (it may not be compatible with using 'complexType' + * node for describing other classes used as attribute types for current class + */ + $element = $dom->createElement('xsd:element'); + $element->setAttribute('name', $propertyName = $property->getName()); + $element->setAttribute('type', $this->getContext()->getType(trim($matches[1][0]))); + + // If the default value is null, then this property is nillable. + if ($defaultProperties[$propertyName] === null) { + $element->setAttribute('nillable', 'true'); + } + + $all->appendChild($element); + } + } + + $complexType->appendChild($all); + $this->getContext()->getSchema()->appendChild($complexType); + $this->getContext()->addType($type); + + return "tns:$type"; + } +} diff --git a/library/Zend/Soap/Wsdl/Strategy/Interface.php b/library/Zend/Soap/Wsdl/Strategy/Interface.php new file mode 100755 index 000000000..9a576055c --- /dev/null +++ b/library/Zend/Soap/Wsdl/Strategy/Interface.php @@ -0,0 +1,48 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Interface for Zend_Soap_Wsdl_Strategy. + * + * @category Zend + * @package Zend_Soap + * @subpackage Wsdl + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Soap_Wsdl_Strategy_Interface +{ + /** + * Method accepts the current WSDL context file. + * + * @param <type> $context + */ + public function setContext(Zend_Soap_Wsdl $context); + + /** + * Create a complex type based on a strategy + * + * @param string $type + * @return string XSD type + */ + public function addComplexType($type); +} diff --git a/library/Zend/Stdlib/CallbackHandler.php b/library/Zend/Stdlib/CallbackHandler.php new file mode 100755 index 000000000..a3528174e --- /dev/null +++ b/library/Zend/Stdlib/CallbackHandler.php @@ -0,0 +1,304 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * CallbackHandler + * + * A handler for a event, event, filterchain, etc. Abstracts PHP callbacks, + * primarily to allow for lazy-loading and ensuring availability of default + * arguments (currying). + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Stdlib_CallbackHandler +{ + /** + * @var string|array PHP callback to invoke + */ + protected $callback; + + /** + * Did an error occur when testing the validity of the callback? + * @var bool + */ + protected $error = false; + + /** + * Callback metadata, if any + * @var array + */ + protected $metadata; + + /** + * Constructor + * + * @param string $event Event to which slot is subscribed + * @param string|array|object $callback PHP callback + * @param array $options Options used by the callback handler (e.g., priority) + * @return void + */ + public function __construct($callback, array $metadata = array()) + { + $this->metadata = $metadata; + $this->registerCallback($callback); + } + + /** + * Error handler + * + * Used by registerCallback() when calling is_callable() to capture engine warnings. + * + * @param int $errno + * @param string $errstr + * @return void + */ + public function errorHandler($errno, $errstr) + { + $this->error = true; + } + + /** + * Registers the callback provided in the constructor + * + * If you have pecl/weakref {@see http://pecl.php.net/weakref} installed, + * this method provides additional behavior. + * + * If a callback is a functor, or an array callback composing an object + * instance, this method will pass the object to a WeakRef instance prior + * to registering the callback. + * + * @param Callable $callback + * @return void + */ + protected function registerCallback($callback) + { + set_error_handler(array($this, 'errorHandler'), E_STRICT); + $callable = is_callable($callback); + restore_error_handler(); + if (!$callable || $this->error) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException('Invalid callback provided; not callable'); + } + + // If pecl/weakref is not installed, simply store the callback and return + set_error_handler(array($this, 'errorHandler'), E_WARNING); + $callable = class_exists('WeakRef'); + restore_error_handler(); + if (!$callable || $this->error) { + $this->callback = $callback; + return; + } + + // If WeakRef exists, we want to use it. + + // If we have a non-closure object, pass it to WeakRef, and then + // register it. + if (is_object($callback) && !$callback instanceof Closure) { + $this->callback = new WeakRef($callback); + return; + } + + // If we have a string or closure, register as-is + if (!is_array($callback)) { + $this->callback = $callback; + return; + } + + list($target, $method) = $callback; + + // If we have an array callback, and the first argument is not an + // object, register as-is + if (!is_object($target)) { + $this->callback = $callback; + return; + } + + // We have an array callback with an object as the first argument; + // pass it to WeakRef, and then register the new callback + $target = new WeakRef($target); + $this->callback = array($target, $method); + } + + /** + * Retrieve registered callback + * + * @return Callable + */ + public function getCallback() + { + $callback = $this->callback; + + // String callbacks -- simply return + if (is_string($callback)) { + return $callback; + } + + // WeakRef callbacks -- pull it out of the object and return it + if ($callback instanceof WeakRef) { + return $callback->get(); + } + + // Non-WeakRef object callback -- return it + if (is_object($callback)) { + return $callback; + } + + // Array callback with WeakRef object -- retrieve the object first, and + // then return + list($target, $method) = $callback; + if ($target instanceof WeakRef) { + return array($target->get(), $method); + } + + // Otherwise, return it + return $callback; + } + + /** + * Invoke handler + * + * @param array $args Arguments to pass to callback + * @return mixed + */ + public function call(array $args = array()) + { + $callback = $this->getCallback(); + + $isPhp54 = version_compare(PHP_VERSION, '5.4.0rc1', '>='); + + if ($isPhp54 && is_string($callback)) { + $this->validateStringCallbackFor54($callback); + } + + // Minor performance tweak; use call_user_func() until > 3 arguments + // reached + switch (count($args)) { + case 0: + if ($isPhp54) { + return $callback(); + } + return call_user_func($callback); + case 1: + if ($isPhp54) { + return $callback(array_shift($args)); + } + return call_user_func($callback, array_shift($args)); + case 2: + $arg1 = array_shift($args); + $arg2 = array_shift($args); + if ($isPhp54) { + return $callback($arg1, $arg2); + } + return call_user_func($callback, $arg1, $arg2); + case 3: + $arg1 = array_shift($args); + $arg2 = array_shift($args); + $arg3 = array_shift($args); + if ($isPhp54) { + return $callback($arg1, $arg2, $arg3); + } + return call_user_func($callback, $arg1, $arg2, $arg3); + default: + return call_user_func_array($callback, $args); + } + } + + /** + * Invoke as functor + * + * @return mixed + */ + public function __invoke() + { + return $this->call(func_get_args()); + } + + /** + * Get all callback metadata + * + * @return array + */ + public function getMetadata() + { + return $this->metadata; + } + + /** + * Retrieve a single metadatum + * + * @param string $name + * @return mixed + */ + public function getMetadatum($name) + { + if (array_key_exists($name, $this->metadata)) { + return $this->metadata[$name]; + } + return null; + } + + /** + * Validate a static method call + * + * Validates that a static method call in PHP 5.4 will actually work + * + * @param string $callback + * @return true + * @throws Zend_Stdlib_Exception_InvalidCallbackException if invalid + */ + protected function validateStringCallbackFor54($callback) + { + if (!strstr($callback, '::')) { + return true; + } + + list($class, $method) = explode('::', $callback, 2); + + if (!class_exists($class)) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException(sprintf( + 'Static method call "%s" refers to a class that does not exist', + $callback + )); + } + + $r = new ReflectionClass($class); + if (!$r->hasMethod($method)) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException(sprintf( + 'Static method call "%s" refers to a method that does not exist', + $callback + )); + } + $m = $r->getMethod($method); + if (!$m->isStatic()) { + require_once 'Zend/Stdlib/Exception/InvalidCallbackException.php'; + throw new Zend_Stdlib_Exception_InvalidCallbackException(sprintf( + 'Static method call "%s" refers to a method that is not static', + $callback + )); + } + + return true; + } +} diff --git a/library/Zend/Stdlib/Exception.php b/library/Zend/Stdlib/Exception.php new file mode 100755 index 000000000..05cb27533 --- /dev/null +++ b/library/Zend/Stdlib/Exception.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Marker interface for Stdlib exceptions + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Stdlib_Exception +{ +} diff --git a/library/Zend/Stdlib/Exception/InvalidCallbackException.php b/library/Zend/Stdlib/Exception/InvalidCallbackException.php new file mode 100755 index 000000000..d973ecb76 --- /dev/null +++ b/library/Zend/Stdlib/Exception/InvalidCallbackException.php @@ -0,0 +1,35 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +require_once 'Zend/Stdlib/Exception.php'; + +/** + * Invalid callback exception + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Stdlib_Exception_InvalidCallbackException + extends DomainException + implements Zend_Stdlib_Exception +{ +} diff --git a/library/Zend/Stdlib/PriorityQueue.php b/library/Zend/Stdlib/PriorityQueue.php new file mode 100755 index 000000000..b0c30d5a5 --- /dev/null +++ b/library/Zend/Stdlib/PriorityQueue.php @@ -0,0 +1,319 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +require_once 'Zend/Stdlib/SplPriorityQueue.php'; + +/** + * Re-usable, serializable priority queue implementation + * + * SplPriorityQueue acts as a heap; on iteration, each item is removed from the + * queue. If you wish to re-use such a queue, you need to clone it first. This + * makes for some interesting issues if you wish to delete items from the queue, + * or, as already stated, iterate over it multiple times. + * + * This class aggregates items for the queue itself, but also composes an + * "inner" iterator in the form of an SplPriorityQueue object for performing + * the actual iteration. + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Stdlib_PriorityQueue implements Countable, IteratorAggregate, Serializable +{ + const EXTR_DATA = 0x00000001; + const EXTR_PRIORITY = 0x00000002; + const EXTR_BOTH = 0x00000003; + + /** + * Inner queue class to use for iteration + * @var string + */ + protected $queueClass = 'Zend_Stdlib_SplPriorityQueue'; + + /** + * Actual items aggregated in the priority queue. Each item is an array + * with keys "data" and "priority". + * @var array + */ + protected $items = array(); + + /** + * Inner queue object + * @var SplPriorityQueue + */ + protected $queue; + + /** + * Insert an item into the queue + * + * Priority defaults to 1 (low priority) if none provided. + * + * @param mixed $data + * @param int $priority + * @return Zend_Stdlib_PriorityQueue + */ + public function insert($data, $priority = 1) + { + $priority = (int) $priority; + $this->items[] = array( + 'data' => $data, + 'priority' => $priority, + ); + $this->getQueue()->insert($data, $priority); + return $this; + } + + /** + * Remove an item from the queue + * + * This is different than {@link extract()}; its purpose is to dequeue an + * item. + * + * This operation is potentially expensive, as it requires + * re-initialization and re-population of the inner queue. + * + * Note: this removes the first item matching the provided item found. If + * the same item has been added multiple times, it will not remove other + * instances. + * + * @param mixed $datum + * @return boolean False if the item was not found, true otherwise. + */ + public function remove($datum) + { + $found = false; + foreach ($this->items as $key => $item) { + if ($item['data'] === $datum) { + $found = true; + break; + } + } + if ($found) { + unset($this->items[$key]); + $this->queue = null; + $queue = $this->getQueue(); + foreach ($this->items as $item) { + $queue->insert($item['data'], $item['priority']); + } + return true; + } + return false; + } + + /** + * Is the queue empty? + * + * @return bool + */ + public function isEmpty() + { + return (0 === $this->count()); + } + + /** + * How many items are in the queue? + * + * @return int + */ + public function count() + { + return count($this->items); + } + + /** + * Peek at the top node in the queue, based on priority. + * + * @return mixed + */ + public function top() + { + return $this->getIterator()->top(); + } + + /** + * Extract a node from the inner queue and sift up + * + * @return mixed + */ + public function extract() + { + return $this->getQueue()->extract(); + } + + /** + * Retrieve the inner iterator + * + * SplPriorityQueue acts as a heap, which typically implies that as items + * are iterated, they are also removed. This does not work for situations + * where the queue may be iterated multiple times. As such, this class + * aggregates the values, and also injects an SplPriorityQueue. This method + * retrieves the inner queue object, and clones it for purposes of + * iteration. + * + * @return SplPriorityQueue + */ + public function getIterator() + { + $queue = $this->getQueue(); + return clone $queue; + } + + /** + * Serialize the data structure + * + * @return string + */ + public function serialize() + { + return serialize($this->items); + } + + /** + * Unserialize a string into a Zend_Stdlib_PriorityQueue object + * + * Serialization format is compatible with {@link Zend_Stdlib_SplPriorityQueue} + * + * @param string $data + * @return void + */ + public function unserialize($data) + { + foreach (unserialize($data) as $item) { + $this->insert($item['data'], $item['priority']); + } + } + + /** + * Serialize to an array + * + * By default, returns only the item data, and in the order registered (not + * sorted). You may provide one of the EXTR_* flags as an argument, allowing + * the ability to return priorities or both data and priority. + * + * @param int $flag + * @return array + */ + public function toArray($flag = self::EXTR_DATA) + { + switch ($flag) { + case self::EXTR_BOTH: + return $this->items; + case self::EXTR_PRIORITY: + return array_map(array($this, 'returnPriority'), $this->items); + case self::EXTR_DATA: + default: + return array_map(array($this, 'returnData'), $this->items); + } + } + + /** + * Specify the internal queue class + * + * Please see {@link getIterator()} for details on the necessity of an + * internal queue class. The class provided should extend SplPriorityQueue. + * + * @param string $class + * @return Zend_Stdlib_PriorityQueue + */ + public function setInternalQueueClass($class) + { + $this->queueClass = (string) $class; + return $this; + } + + /** + * Does the queue contain the given datum? + * + * @param mixed $datum + * @return bool + */ + public function contains($datum) + { + foreach ($this->items as $item) { + if ($item['data'] === $datum) { + return true; + } + } + return false; + } + + /** + * Does the queue have an item with the given priority? + * + * @param int $priority + * @return bool + */ + public function hasPriority($priority) + { + foreach ($this->items as $item) { + if ($item['priority'] === $priority) { + return true; + } + } + return false; + } + + /** + * Get the inner priority queue instance + * + * @return Zend_Stdlib_SplPriorityQueue + */ + protected function getQueue() + { + if (null === $this->queue) { + $this->queue = new $this->queueClass(); + if (!$this->queue instanceof SplPriorityQueue) { + throw new DomainException(sprintf( + 'Zend_Stdlib_PriorityQueue expects an internal queue of type SplPriorityQueue; received "%s"', + get_class($this->queue) + )); + } + } + return $this->queue; + } + + /** + * Return priority from an internal item + * + * Used as a lambda in toArray(). + * + * @param array $item + * @return mixed + */ + public function returnPriority($item) + { + return $item['priority']; + } + + /** + * Return data from an internal item + * + * Used as a lambda in toArray(). + * + * @param array $item + * @return mixed + */ + public function returnData($item) + { + return $item['data']; + } +} diff --git a/library/Zend/Stdlib/SplPriorityQueue.php b/library/Zend/Stdlib/SplPriorityQueue.php new file mode 100755 index 000000000..bf19cc7aa --- /dev/null +++ b/library/Zend/Stdlib/SplPriorityQueue.php @@ -0,0 +1,499 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +if (version_compare(PHP_VERSION, '5.3.0', '<')) { + /** + * SplPriorityQueue + * + * PHP 5.2.X userland implementation of PHP's SplPriorityQueue + */ + class SplPriorityQueue implements Iterator , Countable + { + /** + * Extract data only + */ + const EXTR_DATA = 0x00000001; + + /** + * Extract priority only + */ + const EXTR_PRIORITY = 0x00000002; + + /** + * Extract an array of ('data' => $value, 'priority' => $priority) + */ + const EXTR_BOTH = 0x00000003; + + /** + * Count of items in the queue + * @var int + */ + protected $count = 0; + + /** + * Flag indicating what should be returned when iterating or extracting + * @var int + */ + protected $extractFlags = self::EXTR_DATA; + + /** + * @var bool|array + */ + protected $preparedQueue = false; + + /** + * All items in the queue + * @var array + */ + protected $queue = array(); + + /** + * Constructor + * + * Creates a new, empty queue + * + * @return void + */ + public function __construct() + { + } + + /** + * Compare two priorities + * + * Returns positive integer if $priority1 is greater than $priority2, 0 + * if equal, negative otherwise. + * + * Unused internally, and only included in order to retain the same + * interface as PHP's SplPriorityQueue. + * + * @param mixed $priority1 + * @param mixed $priority2 + * @return int + */ + public function compare($priority1, $priority2) + { + if ($priority1 > $priority2) { + return 1; + } + if ($priority1 == $priority2) { + return 0; + } + + return -1; + } + + /** + * Countable: return number of items composed in the queue + * + * @return int + */ + public function count() + { + return $this->count; + } + + /** + * Iterator: return current item + * + * @return mixed + */ + public function current() + { + if (!$this->preparedQueue) { + $this->rewind(); + } + if (!$this->count) { + throw new OutOfBoundsException('Cannot iterate SplPriorityQueue; no elements present'); + } + +if (!is_array($this->preparedQueue)) { + throw new DomainException(sprintf( + "Queue was prepared, but is empty?\n PreparedQueue: %s\n Internal Queue: %s\n", + var_export($this->preparedQueue, 1), + var_export($this->queue, 1) + )); +} + + $return = array_shift($this->preparedQueue); + $priority = $return['priority']; + $priorityKey = $return['priorityKey']; + $key = $return['key']; + unset($return['key']); + unset($return['priorityKey']); + unset($this->queue[$priorityKey][$key]); + + switch ($this->extractFlags) { + case self::EXTR_DATA: + return $return['data']; + case self::EXTR_PRIORITY: + return $return['priority']; + case self::EXTR_BOTH: + default: + return $return; + }; + } + + /** + * Extract a node from top of the heap and sift up + * + * Returns either the value, the priority, or both, depending on the extract flag. + * + * @return mixed; + */ + public function extract() + { + if (!$this->count) { + return null; + } + + if (!$this->preparedQueue) { + $this->prepareQueue(); + } + + if (empty($this->preparedQueue)) { + return null; + } + + $return = array_shift($this->preparedQueue); + $priority = $return['priority']; + $priorityKey = $return['priorityKey']; + $key = $return['key']; + unset($return['key']); + unset($return['priorityKey']); + unset($this->queue[$priorityKey][$key]); + $this->count--; + + switch ($this->extractFlags) { + case self::EXTR_DATA: + return $return['data']; + case self::EXTR_PRIORITY: + return $return['priority']; + case self::EXTR_BOTH: + default: + return $return; + }; + } + + /** + * Insert a value into the heap, at the specified priority + * + * @param mixed $value + * @param mixed $priority + * @return void + */ + public function insert($value, $priority) + { + if (!is_scalar($priority)) { + $priority = serialize($priority); + } + if (!isset($this->queue[$priority])) { + $this->queue[$priority] = array(); + } + $this->queue[$priority][] = $value; + $this->count++; + $this->preparedQueue = false; + } + + /** + * Is the queue currently empty? + * + * @return bool + */ + public function isEmpty() + { + return (0 == $this->count); + } + + /** + * Iterator: return current key + * + * @return mixed Usually an int or string + */ + public function key() + { + return $this->count; + } + + /** + * Iterator: Move pointer forward + * + * @return void + */ + public function next() + { + $this->count--; + } + + /** + * Recover from corrupted state and allow further actions on the queue + * + * Unimplemented, and only included in order to retain the same interface as PHP's + * SplPriorityQueue. + * + * @return void + */ + public function recoverFromCorruption() + { + } + + /** + * Iterator: Move pointer to first item + * + * @return void + */ + public function rewind() + { + if (!$this->preparedQueue) { + $this->prepareQueue(); + } + } + + /** + * Set the extract flags + * + * Defines what is extracted by SplPriorityQueue::current(), + * SplPriorityQueue::top() and SplPriorityQueue::extract(). + * + * - SplPriorityQueue::EXTR_DATA (0x00000001): Extract the data + * - SplPriorityQueue::EXTR_PRIORITY (0x00000002): Extract the priority + * - SplPriorityQueue::EXTR_BOTH (0x00000003): Extract an array containing both + * + * The default mode is SplPriorityQueue::EXTR_DATA. + * + * @param int $flags + * @return void + */ + public function setExtractFlags($flags) + { + $expected = array( + self::EXTR_DATA => true, + self::EXTR_PRIORITY => true, + self::EXTR_BOTH => true, + ); + if (!isset($expected[$flags])) { + throw new InvalidArgumentException(sprintf('Expected an EXTR_* flag; received %s', $flags)); + } + $this->extractFlags = $flags; + } + + /** + * Return the value or priority (or both) of the top node, depending on + * the extract flag + * + * @return mixed + */ + public function top() + { + $this->sort(); + $keys = array_keys($this->queue); + $key = array_shift($keys); + if (preg_match('/^(a|O):/', $key)) { + $key = unserialize($key); + } + + if ($this->extractFlags == self::EXTR_PRIORITY) { + return $key; + } + + if ($this->extractFlags == self::EXTR_DATA) { + return $this->queue[$key][0]; + } + + return array( + 'data' => $this->queue[$key][0], + 'priority' => $key, + ); + } + + /** + * Iterator: is the current position valid for the queue + * + * @return bool + */ + public function valid() + { + return (bool) $this->count; + } + + /** + * Sort the queue + * + * @return void + */ + protected function sort() + { + krsort($this->queue); + } + + /** + * Prepare the queue for iteration and/or extraction + * + * @return void + */ + protected function prepareQueue() + { + $this->sort(); + $count = $this->count; + $queue = array(); + foreach ($this->queue as $priority => $values) { + $priorityKey = $priority; + if (preg_match('/^(a|O):/', $priority)) { + $priority = unserialize($priority); + } + foreach ($values as $key => $value) { + $queue[$count] = array( + 'data' => $value, + 'priority' => $priority, + 'priorityKey' => $priorityKey, + 'key' => $key, + ); + $count--; + } + } + $this->preparedQueue = $queue; + } + } +} + +/** + * Serializable version of SplPriorityQueue + * + * Also, provides predictable heap order for datums added with the same priority + * (i.e., they will be emitted in the same order they are enqueued). + * + * @category Zend + * @package Zend_Stdlib + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Stdlib_SplPriorityQueue extends SplPriorityQueue implements Serializable +{ + /** + * @var int Seed used to ensure queue order for items of the same priority + */ + protected $serial = PHP_INT_MAX; + + /** + * @var bool + */ + protected $isPhp53; + + /** + * Constructor + * + * @return void + */ + public function __construct() + { + $this->isPhp53 = version_compare(PHP_VERSION, '5.3', '>='); + } + + /** + * Insert a value with a given priority + * + * Utilizes {@var $serial} to ensure that values of equal priority are + * emitted in the same order in which they are inserted. + * + * @param mixed $datum + * @param mixed $priority + * @return void + */ + public function insert($datum, $priority) + { + // If using the native PHP SplPriorityQueue implementation, we need to + // hack around it to ensure that items registered at the same priority + // return in the order registered. In the userland version, this is not + // necessary. + if ($this->isPhp53) { + if (!is_array($priority)) { + $priority = array($priority, $this->serial--); + } + } + parent::insert($datum, $priority); + } + + /** + * Serialize to an array + * + * Array will be priority => data pairs + * + * @return array + */ + public function toArray() + { + $this->setExtractFlags(self::EXTR_BOTH); + $array = array(); + while ($this->valid()) { + $array[] = $this->current(); + $this->next(); + } + $this->setExtractFlags(self::EXTR_DATA); + + // Iterating through a priority queue removes items + foreach ($array as $item) { + $this->insert($item['data'], $item['priority']); + } + + // Return only the data + $return = array(); + foreach ($array as $item) { + $return[] = $item['data']; + } + + return $return; + } + + /** + * Serialize + * + * @return string + */ + public function serialize() + { + $data = array(); + $this->setExtractFlags(self::EXTR_BOTH); + while ($this->valid()) { + $data[] = $this->current(); + $this->next(); + } + $this->setExtractFlags(self::EXTR_DATA); + + // Iterating through a priority queue removes items + foreach ($data as $item) { + $this->insert($item['data'], $item['priority']); + } + + return serialize($data); + } + + /** + * Deserialize + * + * @param string $data + * @return void + */ + public function unserialize($data) + { + foreach (unserialize($data) as $item) { + $this->insert($item['data'], $item['priority']); + } + } +} diff --git a/library/Zend/Tag/Cloud.php b/library/Zend/Tag/Cloud.php new file mode 100755 index 000000000..2e788e057 --- /dev/null +++ b/library/Zend/Tag/Cloud.php @@ -0,0 +1,410 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tag_Item + */ +require_once 'Zend/Tag/Item.php'; + +/** + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Cloud +{ + /** + * Decorator for the cloud + * + * @var Zend_Tag_Cloud_Decorator_Cloud + */ + protected $_cloudDecorator = null; + + /** + * Decorator for the tags + * + * @var Zend_Tag_Cloud_Decorator_Tag + */ + protected $_tagDecorator = null; + + /** + * List of all tags + * + * @var Zend_Tag_ItemList + */ + protected $_tags = null; + + /** + * Plugin loader for decorators + * + * @var Zend_Loader_PluginLoader + */ + protected $_pluginLoader = null; + + /** + * Option keys to skip when calling setOptions() + * + * @var array + */ + protected $_skipOptions = array( + 'options', + 'config', + ); + + /** + * Create a new tag cloud with options + * + * @param mixed $options + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $this->setConfig($options); + } + + if (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set options from Zend_Config + * + * @param Zend_Config $config + * @return Zend_Tag_Cloud + */ + public function setConfig(Zend_Config $config) + { + $this->setOptions($config->toArray()); + + return $this; + } + + /** + * Set options from array + * + * @param array $options Configuration for Zend_Tag_Cloud + * @return Zend_Tag_Cloud + */ + public function setOptions(array $options) + { + if (isset($options['prefixPath'])) { + $this->addPrefixPaths($options['prefixPath']); + unset($options['prefixPath']); + } + + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Set the tags for the tag cloud. + * + * $tags should be an array containing single tags as array. Each tag + * array should at least contain the keys 'title' and 'weight'. Optionally + * you may supply the key 'url', to which the tag links to. Any additional + * parameter in the array is silently ignored and can be used by custom + * decorators. + * + * @param array $tags + * @return Zend_Tag_Cloud + */ + public function setTags(array $tags) + { + // Validate and cleanup the tags + $itemList = $this->getItemList(); + + foreach ($tags as $tag) { + if ($tag instanceof Zend_Tag_Taggable) { + $itemList[] = $tag; + } else if (is_array($tag)) { + $itemList[] = new Zend_Tag_Item($tag); + } else { + require_once 'Zend/Tag/Cloud/Exception.php'; + throw new Zend_Tag_Cloud_Exception('Tag must be an instance of Zend_Tag_Taggable or an array'); + } + } + + return $this; + } + + /** + * Append a single tag to the cloud + * + * @param Zend_Tag_Taggable|array $tag + * @return Zend_Tag_Cloud + */ + public function appendTag($tag) + { + $tags = $this->getItemList(); + if ($tag instanceof Zend_Tag_Taggable) { + $tags[] = $tag; + } else if (is_array($tag)) { + $tags[] = new Zend_Tag_Item($tag); + } else { + require_once 'Zend/Tag/Cloud/Exception.php'; + throw new Zend_Tag_Cloud_Exception('Tag must be an instance of Zend_Tag_Taggable or an array'); + } + + return $this; + } + + /** + * Set the item list + * + * @param Zend_Tag_ItemList $itemList + * @return Zend_Tag_Cloud + */ + public function setItemList(Zend_Tag_ItemList $itemList) + { + $this->_tags = $itemList; + return $this; + } + + /** + * Retrieve the item list + * + * If item list is undefined, creates one. + * + * @return Zend_Tag_ItemList + */ + public function getItemList() + { + if (null === $this->_tags) { + require_once 'Zend/Tag/ItemList.php'; + $this->setItemList(new Zend_Tag_ItemList()); + } + return $this->_tags; + } + + /** + * Set the decorator for the cloud + * + * @param mixed $decorator + * @return Zend_Tag_Cloud + */ + public function setCloudDecorator($decorator) + { + $options = null; + + if (is_array($decorator)) { + if (isset($decorator['options'])) { + $options = $decorator['options']; + } + + if (isset($decorator['decorator'])) { + $decorator = $decorator['decorator']; + } + } + + if (is_string($decorator)) { + $classname = $this->getPluginLoader()->load($decorator); + $decorator = new $classname($options); + } + + if (!($decorator instanceof Zend_Tag_Cloud_Decorator_Cloud)) { + require_once 'Zend/Tag/Cloud/Exception.php'; + throw new Zend_Tag_Cloud_Exception('Decorator is no instance of Zend_Tag_Cloud_Decorator_Cloud'); + } + + $this->_cloudDecorator = $decorator; + + return $this; + } + + /** + * Get the decorator for the cloud + * + * @return Zend_Tag_Cloud_Decorator_Cloud + */ + public function getCloudDecorator() + { + if (null === $this->_cloudDecorator) { + $this->setCloudDecorator('htmlCloud'); + } + return $this->_cloudDecorator; + } + + /** + * Set the decorator for the tags + * + * @param mixed $decorator + * @return Zend_Tag_Cloud + */ + public function setTagDecorator($decorator) + { + $options = null; + + if (is_array($decorator)) { + if (isset($decorator['options'])) { + $options = $decorator['options']; + } + + if (isset($decorator['decorator'])) { + $decorator = $decorator['decorator']; + } + } + + if (is_string($decorator)) { + $classname = $this->getPluginLoader()->load($decorator); + $decorator = new $classname($options); + } + + if (!($decorator instanceof Zend_Tag_Cloud_Decorator_Tag)) { + require_once 'Zend/Tag/Cloud/Exception.php'; + throw new Zend_Tag_Cloud_Exception('Decorator is no instance of Zend_Tag_Cloud_Decorator_Tag'); + } + + $this->_tagDecorator = $decorator; + + return $this; + } + + /** + * Get the decorator for the tags + * + * @return Zend_Tag_Cloud_Decorator_Tag + */ + public function getTagDecorator() + { + if (null === $this->_tagDecorator) { + $this->setTagDecorator('htmlTag'); + } + return $this->_tagDecorator; + } + + /** + * Set plugin loaders for use with decorators + * + * @param Zend_Loader_PluginLoader_Interface $loader + * @return Zend_Tag_Cloud + */ + public function setPluginLoader(Zend_Loader_PluginLoader_Interface $loader) + { + $this->_pluginLoader = $loader; + return $this; + } + + /** + * Get the plugin loader for decorators + * + * @return Zend_Loader_PluginLoader + */ + public function getPluginLoader() + { + if ($this->_pluginLoader === null) { + $prefix = 'Zend_Tag_Cloud_Decorator_'; + $pathPrefix = 'Zend/Tag/Cloud/Decorator/'; + + require_once 'Zend/Loader/PluginLoader.php'; + $this->_pluginLoader = new Zend_Loader_PluginLoader(array($prefix => $pathPrefix)); + } + + return $this->_pluginLoader; + } + + /** + * Add many prefix paths at once + * + * @param array $paths + * @return Zend_Tag_Cloud + */ + public function addPrefixPaths(array $paths) + { + if (isset($paths['prefix']) && isset($paths['path'])) { + return $this->addPrefixPath($paths['prefix'], $paths['path']); + } + + foreach ($paths as $path) { + if (!isset($path['prefix']) || !isset($path['path'])) { + continue; + } + + $this->addPrefixPath($path['prefix'], $path['path']); + } + + return $this; + } + + /** + * Add prefix path for plugin loader + * + * @param string $prefix + * @param string $path + * @return Zend_Tag_Cloud + */ + public function addPrefixPath($prefix, $path) + { + $loader = $this->getPluginLoader(); + $loader->addPrefixPath($prefix, $path); + + return $this; + } + + /** + * Render the tag cloud + * + * @return string + */ + public function render() + { + $tags = $this->getItemList(); + + if (count($tags) === 0) { + return ''; + } + + $tagsResult = $this->getTagDecorator()->render($tags); + $cloudResult = $this->getCloudDecorator()->render($tagsResult); + + return $cloudResult; + } + + /** + * Render the tag cloud + * + * @return string + */ + public function __toString() + { + try { + $result = $this->render(); + return $result; + } catch (Exception $e) { + $message = "Exception caught by tag cloud: " . $e->getMessage() + . "\nStack Trace:\n" . $e->getTraceAsString(); + trigger_error($message, E_USER_WARNING); + return ''; + } + } +} diff --git a/library/Zend/Tag/Cloud/Decorator/Cloud.php b/library/Zend/Tag/Cloud/Decorator/Cloud.php new file mode 100755 index 000000000..e649d54f2 --- /dev/null +++ b/library/Zend/Tag/Cloud/Decorator/Cloud.php @@ -0,0 +1,88 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Abstract class for cloud decorators + * + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tag_Cloud_Decorator_Cloud +{ + /** + * Option keys to skip when calling setOptions() + * + * @var array + */ + protected $_skipOptions = array( + 'options', + 'config', + ); + + /** + * Create a new cloud decorator with options + * + * @param mixed $options + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set options from array + * + * @param array $options Configuration for the decorator + * @return Zend_Tag_Cloud + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . $key; + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Render a list of formatted tags + * + * @param array $tags + * @return string + */ + abstract public function render(array $tags); +} diff --git a/library/Zend/Tag/Cloud/Decorator/Exception.php b/library/Zend/Tag/Cloud/Decorator/Exception.php new file mode 100755 index 000000000..cd2d8aea7 --- /dev/null +++ b/library/Zend/Tag/Cloud/Decorator/Exception.php @@ -0,0 +1,39 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Tag_Cloud_Exception + */ +require_once 'Zend/Tag/Cloud/Exception.php'; + +/** + * Exception class for Zend_Tag_Cloud_Decorator + * + * @category Zend + * @package Zend_Tag + * @uses Zend_Tag_Cloud_Exception + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Cloud_Decorator_Exception extends Zend_Tag_Cloud_Exception +{ +} diff --git a/library/Zend/Tag/Cloud/Decorator/HtmlCloud.php b/library/Zend/Tag/Cloud/Decorator/HtmlCloud.php new file mode 100755 index 000000000..917ae1cf0 --- /dev/null +++ b/library/Zend/Tag/Cloud/Decorator/HtmlCloud.php @@ -0,0 +1,155 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tag_Cloud_Decorator_Cloud + */ +require_once 'Zend/Tag/Cloud/Decorator/Cloud.php'; + +/** + * Simple HTML decorator for clouds + * + * @category Zend + * @package Zend_Tag + * @uses Zend_Tag_Cloud_Decorator_Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Cloud_Decorator_HtmlCloud extends Zend_Tag_Cloud_Decorator_Cloud +{ + /** + * @var string Encoding to use + */ + protected $_encoding = 'UTF-8'; + + /** + * List of HTML tags + * + * @var array + */ + protected $_htmlTags = array( + 'ul' => array('class' => 'Zend_Tag_Cloud') + ); + + /** + * Separator for the single tags + * + * @var string + */ + protected $_separator = ' '; + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set encoding + * + * @param string + * @return Zend_Tag_Cloud_Decorator_HtmlCloud + */ + public function setEncoding($value) + { + $this->_encoding = (string) $value; + return $this; + } + + /** + * Set the HTML tags surrounding all tags + * + * @param array $htmlTags + * @return Zend_Tag_Cloud_Decorator_HtmlCloud + */ + public function setHtmlTags(array $htmlTags) + { + $this->_htmlTags = $htmlTags; + return $this; + } + + /** + * Retrieve HTML tag map + * + * @return array + */ + public function getHtmlTags() + { + return $this->_htmlTags; + } + + /** + * Set the separator between the single tags + * + * @param string + * @return Zend_Tag_Cloud_Decorator_HtmlCloud + */ + public function setSeparator($separator) + { + $this->_separator = $separator; + return $this; + } + + /** + * Get tag separator + * + * @return string + */ + public function getSeparator() + { + return $this->_separator; + } + + /** + * Defined by Zend_Tag_Cloud_Decorator_Cloud + * + * @param array $tags + * @return string + */ + public function render(array $tags) + { + $cloudHtml = implode($this->getSeparator(), $tags); + + $enc = $this->getEncoding(); + foreach ($this->getHtmlTags() as $key => $data) { + if (is_array($data)) { + $htmlTag = $key; + $attributes = ''; + + foreach ($data as $param => $value) { + $attributes .= ' ' . $param . '="' . htmlspecialchars($value, ENT_COMPAT, $enc) . '"'; + } + } else { + $htmlTag = $data; + $attributes = ''; + } + + $cloudHtml = sprintf('<%1$s%3$s>%2$s</%1$s>', $htmlTag, $cloudHtml, $attributes); + } + + return $cloudHtml; + } +} diff --git a/library/Zend/Tag/Cloud/Decorator/HtmlTag.php b/library/Zend/Tag/Cloud/Decorator/HtmlTag.php new file mode 100755 index 000000000..5bb44d0e8 --- /dev/null +++ b/library/Zend/Tag/Cloud/Decorator/HtmlTag.php @@ -0,0 +1,306 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tag_Cloud_Decorator_Tag + */ +require_once 'Zend/Tag/Cloud/Decorator/Tag.php'; + +/** + * Simple HTML decorator for tags + * + * @category Zend + * @package Zend_Tag + * @uses Zend_Tag_Cloud_Decorator_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Cloud_Decorator_HtmlTag extends Zend_Tag_Cloud_Decorator_Tag +{ + /** + * List of tags which get assigned to the inner element instead of + * font-sizes. + * + * @var array + */ + protected $_classList = null; + + /** + * @var string Encoding to utilize + */ + protected $_encoding = 'UTF-8'; + + /** + * Unit for the fontsize + * + * @var string + */ + protected $_fontSizeUnit = 'px'; + + /** + * Allowed fontsize units + * + * @var array + */ + protected $_alloweFontSizeUnits = array('em', 'ex', 'px', 'in', 'cm', 'mm', 'pt', 'pc', '%'); + + /** + * List of HTML tags + * + * @var array + */ + protected $_htmlTags = array( + 'li' + ); + + /** + * Maximum fontsize + * + * @var integer + */ + protected $_maxFontSize = 20; + + /** + * Minimum fontsize + * + * @var integer + */ + protected $_minFontSize = 10; + + /** + * Set a list of classes to use instead of fontsizes + * + * @param array $classList + * @throws Zend_Tag_Cloud_Decorator_Exception When the classlist is empty + * @throws Zend_Tag_Cloud_Decorator_Exception When the classlist contains an invalid classname + * @return Zend_Tag_Cloud_Decorator_HtmlTag + */ + public function setClassList(array $classList = null) + { + if (is_array($classList)) { + if (count($classList) === 0) { + require_once 'Zend/Tag/Cloud/Decorator/Exception.php'; + throw new Zend_Tag_Cloud_Decorator_Exception('Classlist is empty'); + } + + foreach ($classList as $class) { + if (!is_string($class)) { + require_once 'Zend/Tag/Cloud/Decorator/Exception.php'; + throw new Zend_Tag_Cloud_Decorator_Exception('Classlist contains an invalid classname'); + } + } + } + + $this->_classList = $classList; + return $this; + } + + /** + * Get class list + * + * @return array + */ + public function getClassList() + { + return $this->_classList; + } + + /** + * Get encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set encoding + * + * @param string $value + * @return Zend_Tag_Cloud_Decorator_HtmlTag + */ + public function setEncoding($value) + { + $this->_encoding = (string) $value; + return $this; + } + + /** + * Set the font size unit + * + * Possible values are: em, ex, px, in, cm, mm, pt, pc and % + * + * @param string $fontSizeUnit + * @throws Zend_Tag_Cloud_Decorator_Exception When an invalid fontsize unit is specified + * @return Zend_Tag_Cloud_Decorator_HtmlTag + */ + public function setFontSizeUnit($fontSizeUnit) + { + if (!in_array($fontSizeUnit, $this->_alloweFontSizeUnits)) { + require_once 'Zend/Tag/Cloud/Decorator/Exception.php'; + throw new Zend_Tag_Cloud_Decorator_Exception('Invalid fontsize unit specified'); + } + + $this->_fontSizeUnit = (string) $fontSizeUnit; + $this->setClassList(null); + return $this; + } + + /** + * Retrieve font size unit + * + * @return string + */ + public function getFontSizeUnit() + { + return $this->_fontSizeUnit; + } + /** + * Set the HTML tags surrounding the <a> element + * + * @param array $htmlTags + * @return Zend_Tag_Cloud_Decorator_HtmlTag + */ + public function setHtmlTags(array $htmlTags) + { + $this->_htmlTags = $htmlTags; + return $this; + } + + /** + * Get HTML tags map + * + * @return array + */ + public function getHtmlTags() + { + return $this->_htmlTags; + } + + /** + * Set maximum font size + * + * @param integer $maxFontSize + * @throws Zend_Tag_Cloud_Decorator_Exception When fontsize is not numeric + * @return Zend_Tag_Cloud_Decorator_HtmlTag + */ + public function setMaxFontSize($maxFontSize) + { + if (!is_numeric($maxFontSize)) { + require_once 'Zend/Tag/Cloud/Decorator/Exception.php'; + throw new Zend_Tag_Cloud_Decorator_Exception('Fontsize must be numeric'); + } + + $this->_maxFontSize = (int) $maxFontSize; + $this->setClassList(null); + return $this; + } + + /** + * Retrieve maximum font size + * + * @return int + */ + public function getMaxFontSize() + { + return $this->_maxFontSize; + } + + /** + * Set minimum font size + * + * @param int $minFontSize + * @throws Zend_Tag_Cloud_Decorator_Exception When fontsize is not numeric + * @return Zend_Tag_Cloud_Decorator_HtmlTag + */ + public function setMinFontSize($minFontSize) + { + if (!is_numeric($minFontSize)) { + require_once 'Zend/Tag/Cloud/Decorator/Exception.php'; + throw new Zend_Tag_Cloud_Decorator_Exception('Fontsize must be numeric'); + } + + $this->_minFontSize = (int) $minFontSize; + $this->setClassList(null); + return $this; + } + + /** + * Retrieve minimum font size + * + * @return int + */ + public function getMinFontSize() + { + return $this->_minFontSize; + } + + /** + * Defined by Zend_Tag_Cloud_Decorator_Tag + * + * @param Zend_Tag_ItemList $tags + * @return array + */ + public function render(Zend_Tag_ItemList $tags) + { + if (null === ($weightValues = $this->getClassList())) { + $weightValues = range($this->getMinFontSize(), $this->getMaxFontSize()); + } + + $tags->spreadWeightValues($weightValues); + + $result = array(); + + $enc = $this->getEncoding(); + foreach ($tags as $tag) { + if (null === ($classList = $this->getClassList())) { + $attribute = sprintf('style="font-size: %d%s;"', $tag->getParam('weightValue'), $this->getFontSizeUnit()); + } else { + $attribute = sprintf('class="%s"', htmlspecialchars($tag->getParam('weightValue'), ENT_COMPAT, $enc)); + } + + $tagHtml = sprintf('<a href="%s" %s>%s</a>', htmlSpecialChars($tag->getParam('url'), ENT_COMPAT, $enc), $attribute, $tag->getTitle()); + + foreach ($this->getHtmlTags() as $key => $data) { + if (is_array($data)) { + $htmlTag = $key; + $attributes = ''; + + foreach ($data as $param => $value) { + $attributes .= ' ' . $param . '="' . htmlspecialchars($value, ENT_COMPAT, $enc) . '"'; + } + } else { + $htmlTag = $data; + $attributes = ''; + } + + $tagHtml = sprintf('<%1$s%3$s>%2$s</%1$s>', $htmlTag, $tagHtml, $attributes); + } + + $result[] = $tagHtml; + } + + return $result; + } +} diff --git a/library/Zend/Tag/Cloud/Decorator/Tag.php b/library/Zend/Tag/Cloud/Decorator/Tag.php new file mode 100755 index 000000000..b23695691 --- /dev/null +++ b/library/Zend/Tag/Cloud/Decorator/Tag.php @@ -0,0 +1,88 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Cloud + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Abstract class for tag decorators + * + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tag_Cloud_Decorator_Tag +{ + /** + * Option keys to skip when calling setOptions() + * + * @var array + */ + protected $_skipOptions = array( + 'options', + 'config', + ); + + /** + * Create a new cloud decorator with options + * + * @param mixed $options + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set options from array + * + * @param array $options Configuration for the decorator + * @return Zend_Tag_Cloud + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . $key; + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Render a list of tags + * + * @param Zend_Tag_ItemList $tags + * @return array + */ + abstract public function render(Zend_Tag_ItemList $tags); +} diff --git a/library/Zend/Tag/Cloud/Exception.php b/library/Zend/Tag/Cloud/Exception.php new file mode 100755 index 000000000..08fcb4098 --- /dev/null +++ b/library/Zend/Tag/Cloud/Exception.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Tag_Exception + */ +require_once 'Zend/Tag/Exception.php'; + +/** + * Exception class for Zend_Tag_Cloud + * + * @category Zend + * @package Zend_Tag + * @uses Zend_Exception + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Cloud_Exception extends Zend_Tag_Exception +{ +} diff --git a/library/Zend/Tag/Exception.php b/library/Zend/Tag/Exception.php new file mode 100755 index 000000000..52a9fce52 --- /dev/null +++ b/library/Zend/Tag/Exception.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Exception + */ +require_once 'Zend/Exception.php'; + +/** + * Exception class for Zend_Tag + * + * @category Zend + * @package Zend_Tag + * @uses Zend_Exception + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Exception extends Zend_Exception +{ +} diff --git a/library/Zend/Tag/Item.php b/library/Zend/Tag/Item.php new file mode 100755 index 000000000..cb51e4b50 --- /dev/null +++ b/library/Zend/Tag/Item.php @@ -0,0 +1,220 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Item + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tag_Taggable + */ +require_once 'Zend/Tag/Taggable.php'; + +/** + * @category Zend + * @package Zend_Tag + * @uses Zend_Tag_Taggable + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_Item implements Zend_Tag_Taggable +{ + /** + * Title of the tag + * + * @var string + */ + protected $_title = null; + + /** + * Weight of the tag + * + * @var float + */ + protected $_weight = null; + + /** + * Custom parameters + * + * @var string + */ + protected $_params = array(); + + /** + * Option keys to skip when calling setOptions() + * + * @var array + */ + protected $_skipOptions = array( + 'options', + 'param' + ); + + /** + * Create a new tag according to the options + * + * @param array|Zend_Config $options + * @throws Zend_Tag_Exception When invalid options are provided + * @throws Zend_Tag_Exception When title was not set + * @throws Zend_Tag_Exception When weight was not set + * @return void + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (!is_array($options)) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Invalid options provided to constructor'); + } + + $this->setOptions($options); + + if ($this->_title === null) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Title was not set'); + } + + if ($this->_weight === null) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Weight was not set'); + } + } + + /** + * Set options of the tag + * + * @param array $options + * @return Zend_Tag_Item + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . $key; + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Defined by Zend_Tag_Taggable + * + * @return string + */ + public function getTitle() + { + return $this->_title; + } + + /** + * Set the title + * + * @param string $title + * @throws Zend_Tag_Exception When title is no string + * @return Zend_Tag_Item + */ + public function setTitle($title) + { + if (!is_string($title)) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Title must be a string'); + } + + $this->_title = (string) $title; + return $this; + } + + /** + * Defined by Zend_Tag_Taggable + * + * @return float + */ + public function getWeight() + { + return $this->_weight; + } + + /** + * Set the weight + * + * @param float $weight + * @throws Zend_Tag_Exception When weight is not numeric + * @return Zend_Tag_Item + */ + public function setWeight($weight) + { + if (!is_numeric($weight)) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Weight must be numeric'); + } + + $this->_weight = (float) $weight; + return $this; + } + + /** + * Set multiple params at once + * + * @param array $params + * @return Zend_Tag_Item + */ + public function setParams(array $params) + { + foreach ($params as $name => $value) { + $this->setParam($name, $value); + } + + return $this; + } + + /** + * Defined by Zend_Tag_Taggable + * + * @param string $name + * @param mixed $value + * @return Zend_Tag_Item + */ + public function setParam($name, $value) + { + $this->_params[$name] = $value; + return $this; + } + + /** + * Defined by Zend_Tag_Taggable + * + * @param string $name + * @return mixed + */ + public function getParam($name) + { + if (isset($this->_params[$name])) { + return $this->_params[$name]; + } + return null; + } +} diff --git a/library/Zend/Tag/ItemList.php b/library/Zend/Tag/ItemList.php new file mode 100755 index 000000000..dfc8cddfc --- /dev/null +++ b/library/Zend/Tag/ItemList.php @@ -0,0 +1,238 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage ItemList + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tag_Taggable + */ +require_once 'Zend/Tag/Taggable.php'; + +/** + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tag_ItemList implements Countable, SeekableIterator, ArrayAccess +{ + /** + * Items in this list + * + * @var array + */ + protected $_items = array(); + + /** + * Count all items + * + * @return integer + */ + public function count() + { + return count($this->_items); + } + + /** + * Spread values in the items relative to their weight + * + * @param array $values + * @throws Zend_Tag_Exception When value list is empty + * @return void + */ + public function spreadWeightValues(array $values) + { + // Don't allow an empty value list + if (count($values) === 0) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Value list may not be empty'); + } + + // Re-index the array + $values = array_values($values); + + // If just a single value is supplied simply assign it to to all tags + if (count($values) === 1) { + foreach ($this->_items as $item) { + $item->setParam('weightValue', $values[0]); + } + } else { + // Calculate min- and max-weight + $minWeight = null; + $maxWeight = null; + + foreach ($this->_items as $item) { + if ($minWeight === null && $maxWeight === null) { + $minWeight = $item->getWeight(); + $maxWeight = $item->getWeight(); + } else { + $minWeight = min($minWeight, $item->getWeight()); + $maxWeight = max($maxWeight, $item->getWeight()); + } + } + + // Calculate the thresholds + $steps = count($values); + $delta = ($maxWeight - $minWeight) / ($steps - 1); + $thresholds = array(); + + for ($i = 0; $i < $steps; $i++) { + $thresholds[$i] = floor(100 * log(($minWeight + $i * $delta) + 2)); + } + + // Then assign the weight values + foreach ($this->_items as $item) { + $threshold = floor(100 * log($item->getWeight() + 2)); + + for ($i = 0; $i < $steps; $i++) { + if ($threshold <= $thresholds[$i]) { + $item->setParam('weightValue', $values[$i]); + break; + } + } + } + } + } + + /** + * Seek to an absolute positio + * + * @param integer $index + * @throws OutOfBoundsException When the seek position is invalid + * @return void + */ + public function seek($index) + { + $this->rewind(); + $position = 0; + + while ($position < $index && $this->valid()) { + $this->next(); + $position++; + } + + if (!$this->valid()) { + throw new OutOfBoundsException('Invalid seek position'); + } + } + + /** + * Return the current element + * + * @return mixed + */ + public function current() + { + return current($this->_items); + } + + /** + * Move forward to next element + * + * @return mixed + */ + public function next() + { + return next($this->_items); + } + + /** + * Return the key of the current element + * + * @return mixed + */ + public function key() + { + return key($this->_items); + } + + /** + * Check if there is a current element after calls to rewind() or next() + * + * @return boolean + */ + public function valid() + { + return ($this->current() !== false); + } + + /** + * Rewind the Iterator to the first element + * + * @return void + */ + public function rewind() + { + reset($this->_items); + } + + /** + * Check if an offset exists + * + * @param mixed $offset + * @return boolean + */ + public function offsetExists($offset) { + return array_key_exists($offset, $this->_items); + } + + /** + * Get the value of an offset + * + * @param mixed $offset + * @return Zend_Tag_Taggable + */ + public function offsetGet($offset) { + return $this->_items[$offset]; + } + + /** + * Append a new item + * + * @param mixed $offset + * @param Zend_Tag_Taggable $item + * @throws OutOfBoundsException When item does not implement Zend_Tag_Taggable + * @return void + */ + public function offsetSet($offset, $item) { + // We need to make that check here, as the method signature must be + // compatible with ArrayAccess::offsetSet() + if (!($item instanceof Zend_Tag_Taggable)) { + require_once 'Zend/Tag/Exception.php'; + throw new Zend_Tag_Exception('Item must implement Zend_Tag_Taggable'); + } + + if ($offset === null) { + $this->_items[] = $item; + } else { + $this->_items[$offset] = $item; + } + } + + /** + * Unset an item + * + * @param mixed $offset + * @return void + */ + public function offsetUnset($offset) { + unset($this->_items[$offset]); + } +} diff --git a/library/Zend/Tag/Taggable.php b/library/Zend/Tag/Taggable.php new file mode 100755 index 000000000..767b8e5b0 --- /dev/null +++ b/library/Zend/Tag/Taggable.php @@ -0,0 +1,60 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tag + * @subpackage Item + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tag + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tag_Taggable +{ + /** + * Get the title of the tag + * + * @return string + */ + public function getTitle(); + + /** + * Get the weight of the tag + * + * @return float + */ + public function getWeight(); + + /** + * Set a parameter + * + * @param string $name + * @param string $value + */ + public function setParam($name, $value); + + /** + * Get a parameter + * + * @param string $name + * @return mixed + */ + public function getParam($name); +} diff --git a/library/Zend/Test/DbAdapter.php b/library/Zend/Test/DbAdapter.php new file mode 100755 index 000000000..31198944f --- /dev/null +++ b/library/Zend/Test/DbAdapter.php @@ -0,0 +1,345 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Db_Adapter_Abstract + */ +require_once "Zend/Db/Adapter/Abstract.php"; + +/** + * @see Zend_Test_DbStatement + */ +require_once "Zend/Test/DbStatement.php"; + +/** + * @see Zend_Db_Profiler + */ +require_once 'Zend/Db/Profiler.php'; + +/** + * Testing Database Adapter which acts as a stack for SQL Results + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_DbAdapter extends Zend_Db_Adapter_Abstract +{ + /** + * @var array + */ + protected $_statementStack = array(); + + /** + * @var boolean + */ + protected $_connected = false; + + /** + * @var array + */ + protected $_listTables = array(); + + /** + * @var array + */ + protected $_lastInsertIdStack = array(); + + /** + * @var array + */ + protected $_describeTables = array(); + + /** + * @var string + */ + protected $_quoteIdentifierSymbol = ''; + + /** + * Empty constructor to make it parameterless. + */ + public function __construct() + { + $profiler = new Zend_Db_Profiler(); + $profiler->setEnabled(true); + $this->setProfiler($profiler); + } + + /** + * Append a new Statement to the SQL Result Stack. + * + * @param Zend_Test_DbStatement $stmt + * @return Zend_Test_DbAdapter + */ + public function appendStatementToStack(Zend_Test_DbStatement $stmt) + { + array_push($this->_statementStack, $stmt); + return $this; + } + + /** + * Append a new Insert Id to the {@see lastInsertId}. + * + * @param int|string $id + * @return Zend_Test_DbAdapter + */ + public function appendLastInsertIdToStack($id) + { + array_push($this->_lastInsertIdStack, $id); + return $this; + } + + /** + * @var string + */ + public function setQuoteIdentifierSymbol($symbol) + { + $this->_quoteIdentifierSymbol = $symbol; + } + + /** + * Returns the symbol the adapter uses for delimited identifiers. + * + * @return string + */ + public function getQuoteIdentifierSymbol() + { + return $this->_quoteIdentifierSymbol; + } + + /** + * Set the result from {@see listTables()}. + * + * @param array $listTables + */ + public function setListTables(array $listTables) + { + $this->_listTables = $listTables; + } + + /** + * Returns a list of the tables in the database. + * + * @return array + */ + public function listTables() + { + return $this->_listTables; + } + + /** + * + * @param string $table + * @param array $tableInfo + * @return Zend_Test_DbAdapter + */ + public function setDescribeTable($table, $tableInfo) + { + $this->_describeTables[$table] = $tableInfo; + return $this; + } + + /** + * Returns the column descriptions for a table. + * + * The return value is an associative array keyed by the column name, + * as returned by the RDBMS. + * + * The value of each array element is an associative array + * with the following keys: + * + * SCHEMA_NAME => string; name of database or schema + * TABLE_NAME => string; + * COLUMN_NAME => string; column name + * COLUMN_POSITION => number; ordinal position of column in table + * DATA_TYPE => string; SQL datatype name of column + * DEFAULT => string; default expression of column, null if none + * NULLABLE => boolean; true if column can have nulls + * LENGTH => number; length of CHAR/VARCHAR + * SCALE => number; scale of NUMERIC/DECIMAL + * PRECISION => number; precision of NUMERIC/DECIMAL + * UNSIGNED => boolean; unsigned property of an integer type + * PRIMARY => boolean; true if column is part of the primary key + * PRIMARY_POSITION => integer; position of column in primary key + * + * @param string $tableName + * @param string $schemaName OPTIONAL + * @return array + */ + public function describeTable($tableName, $schemaName = null) + { + if(isset($this->_describeTables[$tableName])) { + return $this->_describeTables[$tableName]; + } else { + return array(); + } + } + + /** + * Creates a connection to the database. + * + * @return void + */ + protected function _connect() + { + $this->_connected = true; + } + + /** + * Test if a connection is active + * + * @return boolean + */ + public function isConnected() + { + return $this->_connected; + } + + /** + * Force the connection to close. + * + * @return void + */ + public function closeConnection() + { + $this->_connected = false; + } + + /** + * Prepare a statement and return a PDOStatement-like object. + * + * @param string|Zend_Db_Select $sql SQL query + * @return Zend_Db_Statment|PDOStatement + */ + public function prepare($sql) + { + $queryId = $this->getProfiler()->queryStart($sql); + + if(count($this->_statementStack)) { + $stmt = array_pop($this->_statementStack); + } else { + $stmt = new Zend_Test_DbStatement(); + } + + if($this->getProfiler()->getEnabled() == true) { + $qp = $this->getProfiler()->getQueryProfile($queryId); + $stmt->setQueryProfile($qp); + } + + return $stmt; + } + + /** + * Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column. + * + * As a convention, on RDBMS brands that support sequences + * (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence + * from the arguments and returns the last id generated by that sequence. + * On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method + * returns the last value generated for such a column, and the table name + * argument is disregarded. + * + * @param string $tableName OPTIONAL Name of table. + * @param string $primaryKey OPTIONAL Name of primary key column. + * @return string + */ + public function lastInsertId($tableName = null, $primaryKey = null) + { + if(count($this->_lastInsertIdStack)) { + return array_pop($this->_lastInsertIdStack); + } else { + return false; + } + } + + /** + * Begin a transaction. + */ + protected function _beginTransaction() + { + return; + } + + /** + * Commit a transaction. + */ + protected function _commit() + { + return; + } + + /** + * Roll-back a transaction. + */ + protected function _rollBack() + { + + } + + /** + * Set the fetch mode. + * + * @param integer $mode + * @return void + * @throws Zend_Db_Adapter_Exception + */ + public function setFetchMode($mode) + { + return; + } + + /** + * Adds an adapter-specific LIMIT clause to the SELECT statement. + * + * @param mixed $sql + * @param integer $count + * @param integer $offset + * @return string + */ + public function limit($sql, $count, $offset = 0) + { + return sprintf('%s LIMIT %d,%d', $sql, $offset, $count); + } + + /** + * Check if the adapter supports real SQL parameters. + * + * @param string $type 'positional' or 'named' + * @return bool + */ + public function supportsParameters($type) + { + return true; + } + + /** + * Retrieve server version in PHP style + * + * @return string + */ + function getServerVersion() + { + return "1.0.0"; + } +} diff --git a/library/Zend/Test/DbStatement.php b/library/Zend/Test/DbStatement.php new file mode 100755 index 000000000..68bbc2f89 --- /dev/null +++ b/library/Zend/Test/DbStatement.php @@ -0,0 +1,408 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Db_Statement_Interface + */ +require_once "Zend/Db/Statement/Interface.php"; + +/** + * Testing Database Statement that acts as a stack to SQL resultsets. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_DbStatement implements Zend_Db_Statement_Interface +{ + /** + * @var array + */ + protected $_fetchStack = array(); + + /** + * @var int + */ + protected $_columnCount = 0; + + /** + * @var int + */ + protected $_rowCount = 0; + + /** + * @var Zend_Db_Profiler_Query + */ + protected $_queryProfile = null; + + /** + * Create a Select statement which returns the given array of rows. + * + * @param array $rows + * @return Zend_Test_DbStatement + */ + static public function createSelectStatement(array $rows=array()) + { + $stmt = new Zend_Test_DbStatement(); + foreach($rows AS $row) { + $stmt->append($row); + } + return $stmt; + } + + /** + * Create an Insert Statement + * + * @param int $affectedRows + * @return Zend_Test_DbStatement + */ + static public function createInsertStatement($affectedRows=0) + { + return self::_createRowCountStatement($affectedRows); + } + + /** + * Create an Delete Statement + * + * @param int $affectedRows + * @return Zend_Test_DbStatement + */ + static public function createDeleteStatement($affectedRows=0) + { + return self::_createRowCountStatement($affectedRows); + } + + /** + * Create an Update Statement + * + * @param int $affectedRows + * @return Zend_Test_DbStatement + */ + static public function createUpdateStatement($affectedRows=0) + { + return self::_createRowCountStatement($affectedRows); + } + + /** + * Create a Row Count Statement + * + * @param int $affectedRows + * @return Zend_Test_DbStatement + */ + static protected function _createRowCountStatement($affectedRows) + { + $stmt = new Zend_Test_DbStatement(); + $stmt->setRowCount($affectedRows); + return $stmt; + } + + /** + * @param Zend_Db_Profiler_Query $qp + */ + public function setQueryProfile(Zend_Db_Profiler_Query $qp) + { + $this->_queryProfile = $qp; + } + + /** + * @param int $rowCount + */ + public function setRowCount($rowCount) + { + $this->_rowCount = $rowCount; + } + + /** + * Append a new row to the fetch stack. + * + * @param array $row + */ + public function append($row) + { + if (!is_array($row)) { + $this->_columnCount = 1; + } else { + $this->_columnCount = count($row); + } + $this->_fetchStack[] = $row; + } + + /** + * Bind a column of the statement result set to a PHP variable. + * + * @param string $column Name the column in the result set, either by + * position or by name. + * @param mixed $param Reference to the PHP variable containing the value. + * @param mixed $type OPTIONAL + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function bindColumn($column, &$param, $type = null) + { + return true; + } + + /** + * Binds a parameter to the specified variable name. + * + * @param mixed $parameter Name the parameter, either integer or string. + * @param mixed $variable Reference to PHP variable containing the value. + * @param mixed $type OPTIONAL Datatype of SQL parameter. + * @param mixed $length OPTIONAL Length of SQL parameter. + * @param mixed $options OPTIONAL Other options. + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function bindParam($parameter, &$variable, $type = null, $length = null, $options = null) + { + if($this->_queryProfile !== null) { + $this->_queryProfile->bindParam($parameter, $variable); + } + return true; + } + + /** + * Binds a value to a parameter. + * + * @param mixed $parameter Name the parameter, either integer or string. + * @param mixed $value Scalar value to bind to the parameter. + * @param mixed $type OPTIONAL Datatype of the parameter. + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function bindValue($parameter, $value, $type = null) + { + return true; + } + + /** + * Closes the cursor, allowing the statement to be executed again. + * + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function closeCursor() + { + return true; + } + + /** + * Returns the number of columns in the result set. + * Returns null if the statement has no result set metadata. + * + * @return int The number of columns. + * @throws Zend_Db_Statement_Exception + */ + public function columnCount() + { + return $this->_columnCount; + } + + /** + * Retrieves the error code, if any, associated with the last operation on + * the statement handle. + * + * @return string error code. + * @throws Zend_Db_Statement_Exception + */ + public function errorCode() + { + return false; + } + + /** + * Retrieves an array of error information, if any, associated with the + * last operation on the statement handle. + * + * @return array + * @throws Zend_Db_Statement_Exception + */ + public function errorInfo() + { + return false; + } + + /** + * Executes a prepared statement. + * + * @param array $params OPTIONAL Values to bind to parameter placeholders. + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function execute(array $params = array()) + { + if($this->_queryProfile !== null) { + $this->_queryProfile->bindParams($params); + $this->_queryProfile->end(); + } + return true; + } + + /** + * Fetches a row from the result set. + * + * @param int $style OPTIONAL Fetch mode for this fetch operation. + * @param int $cursor OPTIONAL Absolute, relative, or other. + * @param int $offset OPTIONAL Number for absolute or relative cursors. + * @return mixed Array, object, or scalar depending on fetch mode. + * @throws Zend_Db_Statement_Exception + */ + public function fetch($style = null, $cursor = null, $offset = null) + { + if(count($this->_fetchStack)) { + $row = array_shift($this->_fetchStack); + return $row; + } else { + return false; + } + } + + /** + * Returns an array containing all of the result set rows. + * + * @param int $style OPTIONAL Fetch mode. + * @param int $col OPTIONAL Column number, if fetch mode is by column. + * @return array Collection of rows, each in a format by the fetch mode. + * @throws Zend_Db_Statement_Exception + */ + public function fetchAll($style = null, $col = null) + { + $rows = $this->_fetchStack; + $this->_fetchStack = array(); + + return $rows; + } + + /** + * Returns a single column from the next row of a result set. + * + * @param int $col OPTIONAL Position of the column to fetch. + * @return string + * @throws Zend_Db_Statement_Exception + */ + public function fetchColumn($col = 0) + { + $row = $this->fetch(); + + if($row == false) { + return false; + } else { + if(count($row) < $col) { + require_once "Zend/Db/Statement/Exception.php"; + throw new Zend_Db_Statement_Exception( + "Column Position '".$col."' is out of bounds." + ); + } + + $keys = array_keys($row); + return $row[$keys[$col]]; + } + } + + /** + * Fetches the next row and returns it as an object. + * + * @param string $class OPTIONAL Name of the class to create. + * @param array $config OPTIONAL Constructor arguments for the class. + * @return mixed One object instance of the specified class. + * @throws Zend_Db_Statement_Exception + */ + public function fetchObject($class = 'stdClass', array $config = array()) + { + if(!class_exists($class)) { + throw new Zend_Db_Statement_Exception("Class '".$class."' does not exist!"); + } + + $object = new $class(); + $row = $this->fetch(); + foreach($row AS $k => $v) { + $object->$k = $v; + } + + return $object; + } + + /** + * Retrieve a statement attribute. + * + * @param string $key Attribute name. + * @return mixed Attribute value. + * @throws Zend_Db_Statement_Exception + */ + public function getAttribute($key) + { + return false; + } + + /** + * Retrieves the next rowset (result set) for a SQL statement that has + * multiple result sets. An example is a stored procedure that returns + * the results of multiple queries. + * + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function nextRowset() + { + return false; + } + + /** + * Returns the number of rows affected by the execution of the + * last INSERT, DELETE, or UPDATE statement executed by this + * statement object. + * + * @return int The number of rows affected. + * @throws Zend_Db_Statement_Exception + */ + public function rowCount() + { + return $this->_rowCount; + } + + /** + * Set a statement attribute. + * + * @param string $key Attribute name. + * @param mixed $val Attribute value. + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function setAttribute($key, $val) + { + return true; + } + + /** + * Set the default fetch mode for this statement. + * + * @param int $mode The fetch mode. + * @return bool + * @throws Zend_Db_Statement_Exception + */ + public function setFetchMode($mode) + { + return true; + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/DomQuery.php b/library/Zend/Test/PHPUnit/Constraint/DomQuery.php new file mode 100755 index 000000000..2aa52794b --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/DomQuery.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +if (version_compare(PHPUnit_Runner_Version::id(), '4.1', '>=')) { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'DomQuery41.php'); + + class Zend_Test_PHPUnit_Constraint_DomQuery extends Zend_Test_PHPUnit_Constraint_DomQuery41 + {} +} elseif (version_compare(PHPUnit_Runner_Version::id(), '3.5', '>=')) { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'DomQuery37.php'); + + class Zend_Test_PHPUnit_Constraint_DomQuery extends Zend_Test_PHPUnit_Constraint_DomQuery37 + {} +} else { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'DomQuery34.php'); + + class Zend_Test_PHPUnit_Constraint_DomQuery extends Zend_Test_PHPUnit_Constraint_DomQuery34 + {} +} diff --git a/library/Zend/Test/PHPUnit/Constraint/DomQuery34.php b/library/Zend/Test/PHPUnit/Constraint/DomQuery34.php new file mode 100755 index 000000000..740f51cbb --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/DomQuery34.php @@ -0,0 +1,422 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** @see Zend_Dom_Query */ +require_once 'Zend/Dom/Query.php'; + +/** + * Zend_Dom_Query-based PHPUnit Constraint + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_DomQuery34 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_QUERY = 'assertQuery'; + const ASSERT_CONTENT_CONTAINS = 'assertQueryContentContains'; + const ASSERT_CONTENT_REGEX = 'assertQueryContentRegex'; + const ASSERT_CONTENT_COUNT = 'assertQueryCount'; + const ASSERT_CONTENT_COUNT_MIN= 'assertQueryCountMin'; + const ASSERT_CONTENT_COUNT_MAX= 'assertQueryCountMax'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_QUERY, + self::ASSERT_CONTENT_CONTAINS, + self::ASSERT_CONTENT_REGEX, + self::ASSERT_CONTENT_COUNT, + self::ASSERT_CONTENT_COUNT_MIN, + self::ASSERT_CONTENT_COUNT_MAX, + ); + + /** + * Content being matched + * @var string + */ + protected $_content = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * CSS selector or XPath path to select against + * @var string + */ + protected $_path = null; + + /** + * Whether or not to use XPath when querying + * @var bool + */ + protected $_useXpath = false; + + /** + * XPath namespaces + * @var array + */ + protected $_xpathNamespaces = array(); + + /** + * Constructor; setup constraint state + * + * @param string $path CSS selector path + * @return void + */ + public function __construct($path) + { + $this->_path = $path; + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Whether or not path is a straight XPath expression + * + * @param bool $flag + * @return Zend_Test_PHPUnit_Constraint_DomQuery + */ + public function setUseXpath($flag = true) + { + $this->_useXpath = (bool) $flag; + return $this; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param string $other String to examine + * @param null|string Assertion type + * @return bool + */ + public function evaluate($other, $assertType = null) + { + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (strstr($assertType, 'Xpath')) { + $this->setUseXpath(true); + $assertType = str_replace('Xpath', 'Query', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $method = $this->_useXpath ? 'queryXpath' : 'query'; + $domQuery = new Zend_Dom_Query($other); + $domQuery->registerXpathNamespaces($this->_xpathNamespaces); + $result = $domQuery->$method($this->_path); + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_CONTENT_CONTAINS: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No content provided against which to match'); + } + $this->_content = $content = $argv[2]; + return ($this->_negate) + ? $this->_notMatchContent($result, $content) + : $this->_matchContent($result, $content); + case self::ASSERT_CONTENT_REGEX: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match'); + } + $this->_content = $content = $argv[2]; + return ($this->_negate) + ? $this->_notRegexContent($result, $content) + : $this->_regexContent($result, $content); + case self::ASSERT_CONTENT_COUNT: + case self::ASSERT_CONTENT_COUNT_MIN: + case self::ASSERT_CONTENT_COUNT_MAX: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No count provided against which to compare'); + } + $this->_content = $content = $argv[2]; + return $this->_countContent($result, $content, $assertType); + case self::ASSERT_QUERY: + default: + if ($this->_negate) { + return (0 == count($result)); + } else { + return (0 != count($result)); + } + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed $other CSS selector path + * @param string $description + * @param bool $not + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + */ + public function fail($other, $description, $not = false) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_CONTENT_CONTAINS: + $failure = 'Failed asserting node denoted by %s CONTAINS content "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content "%s"'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_REGEX: + $failure = 'Failed asserting node denoted by %s CONTAINS content MATCHING "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content MATCHING "%s"'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT: + $failure = 'Failed asserting node DENOTED BY %s OCCURS EXACTLY %d times'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT OCCUR EXACTLY %d times'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT_MIN: + $failure = 'Failed asserting node DENOTED BY %s OCCURS AT LEAST %d times'; + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT_MAX: + $failure = 'Failed asserting node DENOTED BY %s OCCURS AT MOST %d times'; + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_QUERY: + default: + $failure = 'Failed asserting node DENOTED BY %s EXISTS'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT EXIST'; + } + $failure = sprintf($failure, $other); + break; + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Register XPath namespaces + * + * @param array $xpathNamespaces + * @return void + */ + public function registerXpathNamespaces($xpathNamespaces) + { + $this->_xpathNamespaces = $xpathNamespaces; + } + + /** + * Check to see if content is matched in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $match Content to match + * @return bool + */ + protected function _matchContent($result, $match) + { + $match = (string) $match; + + if (0 == count($result)) { + return false; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (strstr($content, $match)) { + return true; + } + } + + return false; + } + + /** + * Check to see if content is NOT matched in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $match + * @return bool + */ + protected function _notMatchContent($result, $match) + { + if (0 == count($result)) { + return true; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (strstr($content, $match)) { + return false; + } + } + + return true; + } + + /** + * Check to see if content is matched by regex in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $pattern + * @return bool + */ + protected function _regexContent($result, $pattern) + { + if (0 == count($result)) { + return false; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (preg_match($pattern, $content)) { + return true; + } + } + + return false; + } + + /** + * Check to see if content is NOT matched by regex in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $pattern + * @return bool + */ + protected function _notRegexContent($result, $pattern) + { + if (0 == count($result)) { + return true; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (preg_match($pattern, $content)) { + return false; + } + } + + return true; + } + + /** + * Determine if content count matches criteria + * + * @param Zend_Dom_Query_Result $result + * @param int $test Value against which to test + * @param string $type assertion type + * @return boolean + */ + protected function _countContent($result, $test, $type) + { + $count = count($result); + + switch ($type) { + case self::ASSERT_CONTENT_COUNT: + return ($this->_negate) + ? ($test != $count) + : ($test == $count); + case self::ASSERT_CONTENT_COUNT_MIN: + return ($count >= $test); + case self::ASSERT_CONTENT_COUNT_MAX: + return ($count <= $test); + default: + return false; + } + } + + /** + * Get node content, minus node markup tags + * + * @param DOMNode $node + * @return string + */ + protected function _getNodeContent(DOMNode $node) + { + if ($node instanceof DOMAttr) { + return $node->value; + } else { + $doc = $node->ownerDocument; + $content = $doc->saveXML($node); + $tag = $node->nodeName; + $regex = '|</?' . $tag . '[^>]*>|'; + return preg_replace($regex, '', $content); + } + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/DomQuery37.php b/library/Zend/Test/PHPUnit/Constraint/DomQuery37.php new file mode 100755 index 000000000..b5c230ab7 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/DomQuery37.php @@ -0,0 +1,434 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** @see Zend_Dom_Query */ +require_once 'Zend/Dom/Query.php'; + +/** + * Zend_Dom_Query-based PHPUnit Constraint + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_DomQuery37 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_QUERY = 'assertQuery'; + const ASSERT_CONTENT_CONTAINS = 'assertQueryContentContains'; + const ASSERT_CONTENT_REGEX = 'assertQueryContentRegex'; + const ASSERT_CONTENT_COUNT = 'assertQueryCount'; + const ASSERT_CONTENT_COUNT_MIN= 'assertQueryCountMin'; + const ASSERT_CONTENT_COUNT_MAX= 'assertQueryCountMax'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_QUERY, + self::ASSERT_CONTENT_CONTAINS, + self::ASSERT_CONTENT_REGEX, + self::ASSERT_CONTENT_COUNT, + self::ASSERT_CONTENT_COUNT_MIN, + self::ASSERT_CONTENT_COUNT_MAX, + ); + + /** + * Content being matched + * @var string + */ + protected $_content = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * CSS selector or XPath path to select against + * @var string + */ + protected $_path = null; + + /** + * Whether or not to use XPath when querying + * @var bool + */ + protected $_useXpath = false; + + /** + * XPath namespaces + * @var array + */ + protected $_xpathNamespaces = array(); + + /** + * Constructor; setup constraint state + * + * @param string $path CSS selector path + * @return void + */ + public function __construct($path) + { + $this->_path = $path; + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Whether or not path is a straight XPath expression + * + * @param bool $flag + * @return Zend_Test_PHPUnit_Constraint_DomQuery + */ + public function setUseXpath($flag = true) + { + $this->_useXpath = (bool) $flag; + return $this; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param string Response content to be matched against (haystack) + * @param null|string Assertion type + * @param string (optional) String to match (needle), may be required depending on assertion type + * @return bool + * + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function evaluate($other, $assertType = null) + * In PHPUnit 3.6.0 they changed the interface into this: + * public function evaluate($other, $description = '', $returnResult = FALSE) + * We use the new interface for PHP-strict checking, but emulate the old one + */ + public function evaluate($content, $assertType = '', $match = FALSE) + { + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (strstr($assertType, 'Xpath')) { + $this->setUseXpath(true); + $assertType = str_replace('Xpath', 'Query', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $method = $this->_useXpath ? 'queryXpath' : 'query'; + $domQuery = new Zend_Dom_Query($content); + $domQuery->registerXpathNamespaces($this->_xpathNamespaces); + $result = $domQuery->$method($this->_path); + + switch ($assertType) { + case self::ASSERT_CONTENT_CONTAINS: + if (!$match) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No content provided against which to match'); + } + $this->_content = $match; + return ($this->_negate) + ? $this->_notMatchContent($result, $match) + : $this->_matchContent($result, $match); + case self::ASSERT_CONTENT_REGEX: + if (!$match) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match'); + } + $this->_content = $match; + return ($this->_negate) + ? $this->_notRegexContent($result, $match) + : $this->_regexContent($result, $match); + case self::ASSERT_CONTENT_COUNT: + case self::ASSERT_CONTENT_COUNT_MIN: + case self::ASSERT_CONTENT_COUNT_MAX: + if ($match === false) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No count provided against which to compare'); + } + $this->_content = $match; + return $this->_countContent($result, $match, $assertType); + case self::ASSERT_QUERY: + default: + if ($this->_negate) { + return (0 == count($result)); + } else { + return (0 != count($result)); + } + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed CSS selector path + * @param string Failure description + * @param object Cannot be used, null + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function fail($other, $description, $not = false) + * In PHPUnit 3.6.0 they changed the interface into this: + * protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL) + * We use the new interface for PHP-strict checking + */ + public function fail($other, $description, PHPUnit_Framework_ComparisonFailure $cannot_be_used = NULL) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_CONTENT_CONTAINS: + $failure = 'Failed asserting node denoted by %s CONTAINS content "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content "%s"'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_REGEX: + $failure = 'Failed asserting node denoted by %s CONTAINS content MATCHING "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content MATCHING "%s"'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT: + $failure = 'Failed asserting node DENOTED BY %s OCCURS EXACTLY %d times'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT OCCUR EXACTLY %d times'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT_MIN: + $failure = 'Failed asserting node DENOTED BY %s OCCURS AT LEAST %d times'; + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT_MAX: + $failure = 'Failed asserting node DENOTED BY %s OCCURS AT MOST %d times'; + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_QUERY: + default: + $failure = 'Failed asserting node DENOTED BY %s EXISTS'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT EXIST'; + } + $failure = sprintf($failure, $other); + break; + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Register XPath namespaces + * + * @param array $xpathNamespaces + * @return void + */ + public function registerXpathNamespaces($xpathNamespaces) + { + $this->_xpathNamespaces = $xpathNamespaces; + } + + /** + * Check to see if content is matched in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $match Content to match + * @return bool + */ + protected function _matchContent($result, $match) + { + $match = (string) $match; + + if (0 == count($result)) { + return false; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (strstr($content, $match)) { + return true; + } + } + + return false; + } + + /** + * Check to see if content is NOT matched in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $match + * @return bool + */ + protected function _notMatchContent($result, $match) + { + if (0 == count($result)) { + return true; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (strstr($content, $match)) { + return false; + } + } + + return true; + } + + /** + * Check to see if content is matched by regex in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $pattern + * @return bool + */ + protected function _regexContent($result, $pattern) + { + if (0 == count($result)) { + return false; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (preg_match($pattern, $content)) { + return true; + } + } + + return false; + } + + /** + * Check to see if content is NOT matched by regex in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $pattern + * @return bool + */ + protected function _notRegexContent($result, $pattern) + { + if (0 == count($result)) { + return true; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (preg_match($pattern, $content)) { + return false; + } + } + + return true; + } + + /** + * Determine if content count matches criteria + * + * @param Zend_Dom_Query_Result $result + * @param int $test Value against which to test + * @param string $type assertion type + * @return boolean + */ + protected function _countContent($result, $test, $type) + { + $count = count($result); + + switch ($type) { + case self::ASSERT_CONTENT_COUNT: + return ($this->_negate) + ? ($test != $count) + : ($test == $count); + case self::ASSERT_CONTENT_COUNT_MIN: + return ($count >= $test); + case self::ASSERT_CONTENT_COUNT_MAX: + return ($count <= $test); + default: + return false; + } + } + + /** + * Get node content, minus node markup tags + * + * @param DOMNode $node + * @return string + */ + protected function _getNodeContent(DOMNode $node) + { + if ($node instanceof DOMAttr) { + return $node->value; + } else { + $doc = $node->ownerDocument; + $content = $doc->saveXML($node); + $tag = $node->nodeName; + $regex = '|</?' . $tag . '[^>]*>|'; + return preg_replace($regex, '', $content); + } + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/DomQuery41.php b/library/Zend/Test/PHPUnit/Constraint/DomQuery41.php new file mode 100755 index 000000000..28cc484b3 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/DomQuery41.php @@ -0,0 +1,436 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** @see Zend_Dom_Query */ +require_once 'Zend/Dom/Query.php'; + +/** + * Zend_Dom_Query-based PHPUnit Constraint + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_DomQuery41 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_QUERY = 'assertQuery'; + const ASSERT_CONTENT_CONTAINS = 'assertQueryContentContains'; + const ASSERT_CONTENT_REGEX = 'assertQueryContentRegex'; + const ASSERT_CONTENT_COUNT = 'assertQueryCount'; + const ASSERT_CONTENT_COUNT_MIN= 'assertQueryCountMin'; + const ASSERT_CONTENT_COUNT_MAX= 'assertQueryCountMax'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_QUERY, + self::ASSERT_CONTENT_CONTAINS, + self::ASSERT_CONTENT_REGEX, + self::ASSERT_CONTENT_COUNT, + self::ASSERT_CONTENT_COUNT_MIN, + self::ASSERT_CONTENT_COUNT_MAX, + ); + + /** + * Content being matched + * @var string + */ + protected $_content = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * CSS selector or XPath path to select against + * @var string + */ + protected $_path = null; + + /** + * Whether or not to use XPath when querying + * @var bool + */ + protected $_useXpath = false; + + /** + * XPath namespaces + * @var array + */ + protected $_xpathNamespaces = array(); + + /** + * Constructor; setup constraint state + * + * @param string $path CSS selector path + * @return void + */ + public function __construct($path) + { + $this->_path = $path; + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Whether or not path is a straight XPath expression + * + * @param bool $flag + * @return Zend_Test_PHPUnit_Constraint_DomQuery + */ + public function setUseXpath($flag = true) + { + $this->_useXpath = (bool) $flag; + return $this; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param string Response content to be matched against (haystack) + * @param null|string Assertion type + * @param string (optional) String to match (needle), may be required depending on assertion type + * @return bool + * + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function evaluate($other, $assertType = null) + * In PHPUnit 3.6.0 they changed the interface into this: + * public function evaluate($other, $description = '', $returnResult = FALSE) + * We use the new interface for PHP-strict checking, but emulate the old one + */ + public function evaluate($content, $assertType = '', $match = FALSE) + { + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (strstr($assertType, 'Xpath')) { + $this->setUseXpath(true); + $assertType = str_replace('Xpath', 'Query', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $method = $this->_useXpath ? 'queryXpath' : 'query'; + $domQuery = new Zend_Dom_Query($content); + $domQuery->registerXpathNamespaces($this->_xpathNamespaces); + $result = $domQuery->$method($this->_path); + + switch ($assertType) { + case self::ASSERT_CONTENT_CONTAINS: + if (!$match) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No content provided against which to match'); + } + $this->_content = $match; + return ($this->_negate) + ? $this->_notMatchContent($result, $match) + : $this->_matchContent($result, $match); + case self::ASSERT_CONTENT_REGEX: + if (!$match) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match'); + } + $this->_content = $match; + return ($this->_negate) + ? $this->_notRegexContent($result, $match) + : $this->_regexContent($result, $match); + case self::ASSERT_CONTENT_COUNT: + case self::ASSERT_CONTENT_COUNT_MIN: + case self::ASSERT_CONTENT_COUNT_MAX: + if ($match === false) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No count provided against which to compare'); + } + $this->_content = $match; + return $this->_countContent($result, $match, $assertType); + case self::ASSERT_QUERY: + default: + if ($this->_negate) { + return (0 == count($result)); + } else { + return (0 != count($result)); + } + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed CSS selector path + * @param string Failure description + * @param object Cannot be used, null + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function fail($other, $description, $not = false) + * In PHPUnit 3.6.0 they changed the interface into this: + * protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL) + * We use the new interface for PHP-strict checking + * NOTE 2: + * Interface changed again in PHPUnit 4.1.0 because of refactoring to SebastianBergmann\Comparator + */ + public function fail($other, $description, \SebastianBergmann\Comparator\ComparisonFailure $cannot_be_used = NULL) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_CONTENT_CONTAINS: + $failure = 'Failed asserting node denoted by %s CONTAINS content "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content "%s"'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_REGEX: + $failure = 'Failed asserting node denoted by %s CONTAINS content MATCHING "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT CONTAIN content MATCHING "%s"'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT: + $failure = 'Failed asserting node DENOTED BY %s OCCURS EXACTLY %d times'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT OCCUR EXACTLY %d times'; + } + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT_MIN: + $failure = 'Failed asserting node DENOTED BY %s OCCURS AT LEAST %d times'; + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_CONTENT_COUNT_MAX: + $failure = 'Failed asserting node DENOTED BY %s OCCURS AT MOST %d times'; + $failure = sprintf($failure, $other, $this->_content); + break; + case self::ASSERT_QUERY: + default: + $failure = 'Failed asserting node DENOTED BY %s EXISTS'; + if ($this->_negate) { + $failure = 'Failed asserting node DENOTED BY %s DOES NOT EXIST'; + } + $failure = sprintf($failure, $other); + break; + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Register XPath namespaces + * + * @param array $xpathNamespaces + * @return void + */ + public function registerXpathNamespaces($xpathNamespaces) + { + $this->_xpathNamespaces = $xpathNamespaces; + } + + /** + * Check to see if content is matched in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $match Content to match + * @return bool + */ + protected function _matchContent($result, $match) + { + $match = (string) $match; + + if (0 == count($result)) { + return false; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (strstr($content, $match)) { + return true; + } + } + + return false; + } + + /** + * Check to see if content is NOT matched in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $match + * @return bool + */ + protected function _notMatchContent($result, $match) + { + if (0 == count($result)) { + return true; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (strstr($content, $match)) { + return false; + } + } + + return true; + } + + /** + * Check to see if content is matched by regex in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $pattern + * @return bool + */ + protected function _regexContent($result, $pattern) + { + if (0 == count($result)) { + return false; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (preg_match($pattern, $content)) { + return true; + } + } + + return false; + } + + /** + * Check to see if content is NOT matched by regex in selected nodes + * + * @param Zend_Dom_Query_Result $result + * @param string $pattern + * @return bool + */ + protected function _notRegexContent($result, $pattern) + { + if (0 == count($result)) { + return true; + } + + foreach ($result as $node) { + $content = $this->_getNodeContent($node); + if (preg_match($pattern, $content)) { + return false; + } + } + + return true; + } + + /** + * Determine if content count matches criteria + * + * @param Zend_Dom_Query_Result $result + * @param int $test Value against which to test + * @param string $type assertion type + * @return boolean + */ + protected function _countContent($result, $test, $type) + { + $count = count($result); + + switch ($type) { + case self::ASSERT_CONTENT_COUNT: + return ($this->_negate) + ? ($test != $count) + : ($test == $count); + case self::ASSERT_CONTENT_COUNT_MIN: + return ($count >= $test); + case self::ASSERT_CONTENT_COUNT_MAX: + return ($count <= $test); + default: + return false; + } + } + + /** + * Get node content, minus node markup tags + * + * @param DOMNode $node + * @return string + */ + protected function _getNodeContent(DOMNode $node) + { + if ($node instanceof DOMAttr) { + return $node->value; + } else { + $doc = $node->ownerDocument; + $content = $doc->saveXML($node); + $tag = $node->nodeName; + $regex = '|</?' . $tag . '[^>]*>|'; + return preg_replace($regex, '', $content); + } + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/Exception.php b/library/Zend/Test/PHPUnit/Constraint/Exception.php new file mode 100755 index 000000000..2286fef07 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/Exception.php @@ -0,0 +1,35 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Test_PHPUnit_Constraint_Exception + * + * @uses PHPUnit_Framework_ExpectationFailedException + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_Exception extends PHPUnit_Framework_ExpectationFailedException +{ +} diff --git a/library/Zend/Test/PHPUnit/Constraint/Redirect.php b/library/Zend/Test/PHPUnit/Constraint/Redirect.php new file mode 100755 index 000000000..819d8b2b9 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/Redirect.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +if (version_compare(PHPUnit_Runner_Version::id(), '4.1', '>=')) { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Redirect41.php'); + + class Zend_Test_PHPUnit_Constraint_Redirect extends Zend_Test_PHPUnit_Constraint_Redirect41 + {} +} elseif (version_compare(PHPUnit_Runner_Version::id(), '3.5', '>=')) { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Redirect37.php'); + + class Zend_Test_PHPUnit_Constraint_Redirect extends Zend_Test_PHPUnit_Constraint_Redirect37 + {} +} else { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Redirect34.php'); + + class Zend_Test_PHPUnit_Constraint_Redirect extends Zend_Test_PHPUnit_Constraint_Redirect34 + {} +} diff --git a/library/Zend/Test/PHPUnit/Constraint/Redirect34.php b/library/Zend/Test/PHPUnit/Constraint/Redirect34.php new file mode 100755 index 000000000..e8d9f8ed9 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/Redirect34.php @@ -0,0 +1,303 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Redirection constraints + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_Redirect34 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_REDIRECT = 'assertRedirect'; + const ASSERT_REDIRECT_TO = 'assertRedirectTo'; + const ASSERT_REDIRECT_REGEX = 'assertRedirectRegex'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_REDIRECT, + self::ASSERT_REDIRECT_TO, + self::ASSERT_REDIRECT_REGEX, + ); + + /** + * Pattern to match against + * @var string + */ + protected $_match = null; + + /** + * What is actual redirect + */ + protected $_actual = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * Constructor; setup constraint state + * + * @return void + */ + public function __construct() + { + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param string $other String to examine + * @param null|string Assertion type + * @return bool + */ + public function evaluate($other, $assertType = null) + { + if (!$other instanceof Zend_Controller_Response_Abstract) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Redirect constraint assertions require a response object'); + } + + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $response = $other; + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_REDIRECT_TO: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No redirect URL provided against which to match'); + } + $this->_match = $match = $argv[2]; + return ($this->_negate) + ? $this->_notMatch($response, $match) + : $this->_match($response, $match); + case self::ASSERT_REDIRECT_REGEX: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match redirect'); + } + $this->_match = $match = $argv[2]; + return ($this->_negate) + ? $this->_notRegex($response, $match) + : $this->_regex($response, $match); + case self::ASSERT_REDIRECT: + default: + $headers = $response->sendHeaders(); + if (isset($headers['location'])) { + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + } + return ($this->_negate) ? !$response->isRedirect() : $response->isRedirect(); + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed $other + * @param string $description Additional message to display + * @param bool $not + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + */ + public function fail($other, $description, $not = false) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_REDIRECT_TO: + $failure = 'Failed asserting response redirects to "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response DOES NOT redirect to "%s"'; + } + $failure = sprintf($failure, $this->_match); + if (!$this->_negate && $this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s".', $this->_actual); + } + break; + case self::ASSERT_REDIRECT_REGEX: + $failure = 'Failed asserting response redirects to URL MATCHING "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response DOES NOT redirect to URL MATCHING "%s"'; + } + $failure = sprintf($failure, $this->_match); + if ($this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s".', $this->_actual); + } + break; + case self::ASSERT_REDIRECT: + default: + $failure = 'Failed asserting response is a redirect'; + if ($this->_negate) { + $failure = 'Failed asserting response is NOT a redirect'; + if ($this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s"', $this->_actual); + } + } + break; + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Check to see if content is matched in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $match Content to match + * @return bool + */ + protected function _match($response, $match) + { + if (!$response->isRedirect()) { + return false; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return ($redirect == $match); + } + + /** + * Check to see if content is NOT matched in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $match + * @return bool + */ + protected function _notMatch($response, $match) + { + if (!$response->isRedirect()) { + return true; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return ($redirect != $match); + } + + /** + * Check to see if content is matched by regex in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $pattern + * @return bool + */ + protected function _regex($response, $pattern) + { + if (!$response->isRedirect()) { + return false; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return preg_match($pattern, $redirect); + } + + /** + * Check to see if content is NOT matched by regex in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $pattern + * @return bool + */ + protected function _notRegex($response, $pattern) + { + if (!$response->isRedirect()) { + return true; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return !preg_match($pattern, $redirect); + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/Redirect37.php b/library/Zend/Test/PHPUnit/Constraint/Redirect37.php new file mode 100755 index 000000000..0494c976f --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/Redirect37.php @@ -0,0 +1,315 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Redirection constraints + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_Redirect37 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_REDIRECT = 'assertRedirect'; + const ASSERT_REDIRECT_TO = 'assertRedirectTo'; + const ASSERT_REDIRECT_REGEX = 'assertRedirectRegex'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_REDIRECT, + self::ASSERT_REDIRECT_TO, + self::ASSERT_REDIRECT_REGEX, + ); + + /** + * Pattern to match against + * @var string + */ + protected $_match = null; + + /** + * What is actual redirect + */ + protected $_actual = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * Constructor; setup constraint state + * + * @return void + */ + public function __construct() + { + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param string $other String to examine + * @param null|string Assertion type + * @return bool + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function evaluate($other, $assertType = null) + * In PHPUnit 3.6.0 they changed the interface into this: + * public function evaluate($other, $description = '', $returnResult = FALSE) + * We use the new interface for PHP-strict checking, but emulate the old one + */ + public function evaluate($other, $assertType = null, $variable = FALSE) + { + if (!$other instanceof Zend_Controller_Response_Abstract) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Redirect constraint assertions require a response object'); + } + + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $response = $other; + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_REDIRECT_TO: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No redirect URL provided against which to match'); + } + $this->_match = $match = $argv[2]; + return ($this->_negate) + ? $this->_notMatch($response, $match) + : $this->_match($response, $match); + case self::ASSERT_REDIRECT_REGEX: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match redirect'); + } + $this->_match = $match = $argv[2]; + return ($this->_negate) + ? $this->_notRegex($response, $match) + : $this->_regex($response, $match); + case self::ASSERT_REDIRECT: + default: + $headers = $response->sendHeaders(); + if (isset($headers['location'])) { + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + } + return ($this->_negate) ? !$response->isRedirect() : $response->isRedirect(); + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed $other + * @param string $description Additional message to display + * @param bool $not + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function fail($other, $description, $not = false) + * In PHPUnit 3.6.0 they changed the interface into this: + * protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL) + * We use the new interface for PHP-strict checking + */ + public function fail($other, $description, PHPUnit_Framework_ComparisonFailure $cannot_be_used = NULL) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_REDIRECT_TO: + $failure = 'Failed asserting response redirects to "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response DOES NOT redirect to "%s"'; + } + $failure = sprintf($failure, $this->_match); + if (!$this->_negate && $this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s".', $this->_actual); + } + break; + case self::ASSERT_REDIRECT_REGEX: + $failure = 'Failed asserting response redirects to URL MATCHING "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response DOES NOT redirect to URL MATCHING "%s"'; + } + $failure = sprintf($failure, $this->_match); + if ($this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s".', $this->_actual); + } + break; + case self::ASSERT_REDIRECT: + default: + $failure = 'Failed asserting response is a redirect'; + if ($this->_negate) { + $failure = 'Failed asserting response is NOT a redirect'; + if ($this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s"', $this->_actual); + } + } + break; + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Check to see if content is matched in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $match Content to match + * @return bool + */ + protected function _match($response, $match) + { + if (!$response->isRedirect()) { + return false; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return ($redirect == $match); + } + + /** + * Check to see if content is NOT matched in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $match + * @return bool + */ + protected function _notMatch($response, $match) + { + if (!$response->isRedirect()) { + return true; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return ($redirect != $match); + } + + /** + * Check to see if content is matched by regex in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $pattern + * @return bool + */ + protected function _regex($response, $pattern) + { + if (!$response->isRedirect()) { + return false; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return preg_match($pattern, $redirect); + } + + /** + * Check to see if content is NOT matched by regex in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $pattern + * @return bool + */ + protected function _notRegex($response, $pattern) + { + if (!$response->isRedirect()) { + return true; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return !preg_match($pattern, $redirect); + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/Redirect41.php b/library/Zend/Test/PHPUnit/Constraint/Redirect41.php new file mode 100755 index 000000000..6f6e91564 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/Redirect41.php @@ -0,0 +1,317 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Redirection constraints + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_Redirect41 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_REDIRECT = 'assertRedirect'; + const ASSERT_REDIRECT_TO = 'assertRedirectTo'; + const ASSERT_REDIRECT_REGEX = 'assertRedirectRegex'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_REDIRECT, + self::ASSERT_REDIRECT_TO, + self::ASSERT_REDIRECT_REGEX, + ); + + /** + * Pattern to match against + * @var string + */ + protected $_match = null; + + /** + * What is actual redirect + */ + protected $_actual = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * Constructor; setup constraint state + * + * @return void + */ + public function __construct() + { + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param string $other String to examine + * @param null|string Assertion type + * @return bool + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function evaluate($other, $assertType = null) + * In PHPUnit 3.6.0 they changed the interface into this: + * public function evaluate($other, $description = '', $returnResult = FALSE) + * We use the new interface for PHP-strict checking, but emulate the old one + */ + public function evaluate($other, $assertType = null, $variable = FALSE) + { + if (!$other instanceof Zend_Controller_Response_Abstract) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Redirect constraint assertions require a response object'); + } + + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $response = $other; + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_REDIRECT_TO: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No redirect URL provided against which to match'); + } + $this->_match = $match = $argv[2]; + return ($this->_negate) + ? $this->_notMatch($response, $match) + : $this->_match($response, $match); + case self::ASSERT_REDIRECT_REGEX: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No pattern provided against which to match redirect'); + } + $this->_match = $match = $argv[2]; + return ($this->_negate) + ? $this->_notRegex($response, $match) + : $this->_regex($response, $match); + case self::ASSERT_REDIRECT: + default: + $headers = $response->sendHeaders(); + if (isset($headers['location'])) { + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + } + return ($this->_negate) ? !$response->isRedirect() : $response->isRedirect(); + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed $other + * @param string $description Additional message to display + * @param bool $not + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function fail($other, $description, $not = false) + * In PHPUnit 3.6.0 they changed the interface into this: + * protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL) + * We use the new interface for PHP-strict checking + * NOTE 2: + * Interface changed again in PHPUnit 4.1.0 because of refactoring to SebastianBergmann\Comparator + */ + public function fail($other, $description, \SebastianBergmann\Comparator\ComparisonFailure $cannot_be_used = NULL) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_REDIRECT_TO: + $failure = 'Failed asserting response redirects to "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response DOES NOT redirect to "%s"'; + } + $failure = sprintf($failure, $this->_match); + if (!$this->_negate && $this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s".', $this->_actual); + } + break; + case self::ASSERT_REDIRECT_REGEX: + $failure = 'Failed asserting response redirects to URL MATCHING "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response DOES NOT redirect to URL MATCHING "%s"'; + } + $failure = sprintf($failure, $this->_match); + if ($this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s".', $this->_actual); + } + break; + case self::ASSERT_REDIRECT: + default: + $failure = 'Failed asserting response is a redirect'; + if ($this->_negate) { + $failure = 'Failed asserting response is NOT a redirect'; + if ($this->_actual) { + $failure .= sprintf(PHP_EOL . 'It redirects to "%s"', $this->_actual); + } + } + break; + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Check to see if content is matched in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $match Content to match + * @return bool + */ + protected function _match($response, $match) + { + if (!$response->isRedirect()) { + return false; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return ($redirect == $match); + } + + /** + * Check to see if content is NOT matched in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $match + * @return bool + */ + protected function _notMatch($response, $match) + { + if (!$response->isRedirect()) { + return true; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return ($redirect != $match); + } + + /** + * Check to see if content is matched by regex in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $pattern + * @return bool + */ + protected function _regex($response, $pattern) + { + if (!$response->isRedirect()) { + return false; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return preg_match($pattern, $redirect); + } + + /** + * Check to see if content is NOT matched by regex in selected nodes + * + * @param Zend_Controller_Response_HttpTestCase $response + * @param string $pattern + * @return bool + */ + protected function _notRegex($response, $pattern) + { + if (!$response->isRedirect()) { + return true; + } + + $headers = $response->sendHeaders(); + $redirect = $headers['location']; + $redirect = str_replace('Location: ', '', $redirect); + $this->_actual = $redirect; + + return !preg_match($pattern, $redirect); + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/ResponseHeader.php b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader.php new file mode 100755 index 000000000..178de0505 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +if (version_compare(PHPUnit_Runner_Version::id(), '4.1', '>=')) { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'ResponseHeader41.php'); + + class Zend_Test_PHPUnit_Constraint_ResponseHeader extends Zend_Test_PHPUnit_Constraint_ResponseHeader41 + {} +} elseif (version_compare(PHPUnit_Runner_Version::id(), '3.5', '>=')) { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'ResponseHeader37.php'); + + class Zend_Test_PHPUnit_Constraint_ResponseHeader extends Zend_Test_PHPUnit_Constraint_ResponseHeader37 + {} +} else { + include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'ResponseHeader34.php'); + + class Zend_Test_PHPUnit_Constraint_ResponseHeader extends Zend_Test_PHPUnit_Constraint_ResponseHeader34 + {} +} diff --git a/library/Zend/Test/PHPUnit/Constraint/ResponseHeader34.php b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader34.php new file mode 100755 index 000000000..3d37756d2 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader34.php @@ -0,0 +1,406 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Response header PHPUnit Constraint + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_ResponseHeader34 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_RESPONSE_CODE = 'assertResponseCode'; + const ASSERT_HEADER = 'assertHeader'; + const ASSERT_HEADER_CONTAINS = 'assertHeaderContains'; + const ASSERT_HEADER_REGEX = 'assertHeaderRegex'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_RESPONSE_CODE, + self::ASSERT_HEADER, + self::ASSERT_HEADER_CONTAINS, + self::ASSERT_HEADER_REGEX, + ); + + /** + * @var int Response code + */ + protected $_code = 200; + + /** + * @var int Actual response code + */ + protected $_actualCode = null; + + /** + * @var string Header + */ + protected $_header = null; + + /** + * @var string pattern against which to compare header content + */ + protected $_match = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * Constructor; setup constraint state + * + * @return void + */ + public function __construct() + { + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param Zend_Controller_Response_Abstract $other String to examine + * @param null|string Assertion type + * @return bool + */ + public function evaluate($other, $assertType = null) + { + if (!$other instanceof Zend_Controller_Response_Abstract) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Header constraint assertions require a response object'); + } + + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $response = $other; + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_RESPONSE_CODE: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No response code provided against which to match'); + } + $this->_code = $code = $argv[2]; + return ($this->_negate) + ? $this->_notCode($response, $code) + : $this->_code($response, $code); + case self::ASSERT_HEADER: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No header provided against which to match'); + } + $this->_header = $header = $argv[2]; + return ($this->_negate) + ? $this->_notHeader($response, $header) + : $this->_header($response, $header); + case self::ASSERT_HEADER_CONTAINS: + if (4 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . __FUNCTION__); + } + $this->_header = $header = $argv[2]; + $this->_match = $match = $argv[3]; + return ($this->_negate) + ? $this->_notHeaderContains($response, $header, $match) + : $this->_headerContains($response, $header, $match); + case self::ASSERT_HEADER_REGEX: + if (4 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . __FUNCTION__); + } + $this->_header = $header = $argv[2]; + $this->_match = $match = $argv[3]; + return ($this->_negate) + ? $this->_notHeaderRegex($response, $header, $match) + : $this->_headerRegex($response, $header, $match); + default: + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . __FUNCTION__); + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed $other + * @param string $description Additional message to display + * @param bool $not + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + */ + public function fail($other, $description, $not = false) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_RESPONSE_CODE: + $failure = 'Failed asserting response code "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response code IS NOT "%s"'; + } + $failure = sprintf($failure, $this->_code); + if (!$this->_negate && $this->_actualCode) { + $failure .= sprintf(PHP_EOL . 'Was "%s"', $this->_actualCode); + } + break; + case self::ASSERT_HEADER: + $failure = 'Failed asserting response header "%s" found'; + if ($this->_negate) { + $failure = 'Failed asserting response response header "%s" WAS NOT found'; + } + $failure = sprintf($failure, $this->_header); + break; + case self::ASSERT_HEADER_CONTAINS: + $failure = 'Failed asserting response header "%s" exists and contains "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response header "%s" DOES NOT CONTAIN "%s"'; + } + $failure = sprintf($failure, $this->_header, $this->_match); + break; + case self::ASSERT_HEADER_REGEX: + $failure = 'Failed asserting response header "%s" exists and matches regex "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response header "%s" DOES NOT MATCH regex "%s"'; + } + $failure = sprintf($failure, $this->_header, $this->_match); + break; + default: + throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . __FUNCTION__); + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Compare response code for positive match + * + * @param Zend_Controller_Response_Abstract $response + * @param int $code + * @return bool + */ + protected function _code(Zend_Controller_Response_Abstract $response, $code) + { + $test = $this->_getCode($response); + $this->_actualCode = $test; + return ($test == $code); + } + + /** + * Compare response code for negative match + * + * @param Zend_Controller_Response_Abstract $response + * @param int $code + * @return bool + */ + protected function _notCode(Zend_Controller_Response_Abstract $response, $code) + { + $test = $this->_getCode($response); + return ($test != $code); + } + + /** + * Retrieve response code + * + * @param Zend_Controller_Response_Abstract $response + * @return int + */ + protected function _getCode(Zend_Controller_Response_Abstract $response) + { + $test = $response->getHttpResponseCode(); + if (null === $test) { + $test = 200; + } + return $test; + } + + /** + * Positive check for response header presence + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return bool + */ + protected function _header(Zend_Controller_Response_Abstract $response, $header) + { + return (null !== $this->_getHeader($response, $header)); + } + + /** + * Negative check for response header presence + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return bool + */ + protected function _notHeader(Zend_Controller_Response_Abstract $response, $header) + { + return (null === $this->_getHeader($response, $header)); + } + + /** + * Retrieve response header + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return string|null + */ + protected function _getHeader(Zend_Controller_Response_Abstract $response, $header) + { + $headers = $response->sendHeaders(); + $header = strtolower($header); + if (array_key_exists($header, $headers)) { + return $headers[$header]; + } + return null; + } + + /** + * Positive check for header contents matching pattern + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $match + * @return bool + */ + protected function _headerContains(Zend_Controller_Response_Abstract $response, $header, $match) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return false; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return (strstr($contents, $match) !== false); + } + + /** + * Negative check for header contents matching pattern + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $match + * @return bool + */ + protected function _notHeaderContains(Zend_Controller_Response_Abstract $response, $header, $match) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return true; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return (strstr($contents, $match) === false); + } + + /** + * Positive check for header contents matching regex + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $pattern + * @return bool + */ + protected function _headerRegex(Zend_Controller_Response_Abstract $response, $header, $pattern) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return false; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return preg_match($pattern, $contents); + } + + /** + * Negative check for header contents matching regex + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $pattern + * @return bool + */ + protected function _notHeaderRegex(Zend_Controller_Response_Abstract $response, $header, $pattern) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return true; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return !preg_match($pattern, $contents); + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/ResponseHeader37.php b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader37.php new file mode 100755 index 000000000..ad26f0eb6 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader37.php @@ -0,0 +1,419 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Response header PHPUnit Constraint + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_ResponseHeader37 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_RESPONSE_CODE = 'assertResponseCode'; + const ASSERT_HEADER = 'assertHeader'; + const ASSERT_HEADER_CONTAINS = 'assertHeaderContains'; + const ASSERT_HEADER_REGEX = 'assertHeaderRegex'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_RESPONSE_CODE, + self::ASSERT_HEADER, + self::ASSERT_HEADER_CONTAINS, + self::ASSERT_HEADER_REGEX, + ); + + /** + * @var int Response code + */ + protected $_code = 200; + + /** + * @var int Actual response code + */ + protected $_actualCode = null; + + /** + * @var string Header + */ + protected $_header = null; + + /** + * @var string pattern against which to compare header content + */ + protected $_match = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * Constructor; setup constraint state + * + * @return void + */ + public function __construct() + { + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param object of Zend_Controller_Response_Abstract to be evaluated + * @param null|string Assertion type + * @param int|string HTTP response code to evaluate against | header string (haystack) + * @param string (optional) match (needle), may be required depending on assertion type + * @return bool + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function evaluate($other, $assertType = null) + * In PHPUnit 3.6.0 they changed the interface into this: + * public function evaluate($other, $description = '', $returnResult = FALSE) + * We use the new interface for PHP-strict checking, but emulate the old one + */ + public function evaluate($response, $assertType = '', $variable = FALSE) + { + if (!$response instanceof Zend_Controller_Response_Abstract) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Header constraint assertions require a response object'); + } + + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_RESPONSE_CODE: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No response code provided against which to match'); + } + $this->_code = $code = $argv[2]; + return ($this->_negate) + ? $this->_notCode($response, $code) + : $this->_code($response, $code); + case self::ASSERT_HEADER: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No header provided against which to match'); + } + $this->_header = $header = $argv[2]; + return ($this->_negate) + ? $this->_notHeader($response, $header) + : $this->_header($response, $header); + case self::ASSERT_HEADER_CONTAINS: + if (4 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . $assertType); + } + $this->_header = $header = $argv[2]; + $this->_match = $match = $argv[3]; + return ($this->_negate) + ? $this->_notHeaderContains($response, $header, $match) + : $this->_headerContains($response, $header, $match); + case self::ASSERT_HEADER_REGEX: + if (4 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . $assertType); + } + $this->_header = $header = $argv[2]; + $this->_match = $match = $argv[3]; + return ($this->_negate) + ? $this->_notHeaderRegex($response, $header, $match) + : $this->_headerRegex($response, $header, $match); + default: + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . $assertType); + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed CSS selector path + * @param string Failure description + * @param object Cannot be used, null + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function fail($other, $description, $not = false) + * In PHPUnit 3.6.0 they changed the interface into this: + * protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL) + * We use the new interface for PHP-strict checking + */ + public function fail($other, $description, PHPUnit_Framework_ComparisonFailure $cannot_be_used = NULL) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_RESPONSE_CODE: + $failure = 'Failed asserting response code "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response code IS NOT "%s"'; + } + $failure = sprintf($failure, $this->_code); + if (!$this->_negate && $this->_actualCode) { + $failure .= sprintf(PHP_EOL . 'Was "%s"', $this->_actualCode); + } + break; + case self::ASSERT_HEADER: + $failure = 'Failed asserting response header "%s" found'; + if ($this->_negate) { + $failure = 'Failed asserting response response header "%s" WAS NOT found'; + } + $failure = sprintf($failure, $this->_header); + break; + case self::ASSERT_HEADER_CONTAINS: + $failure = 'Failed asserting response header "%s" exists and contains "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response header "%s" DOES NOT CONTAIN "%s"'; + } + $failure = sprintf($failure, $this->_header, $this->_match); + break; + case self::ASSERT_HEADER_REGEX: + $failure = 'Failed asserting response header "%s" exists and matches regex "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response header "%s" DOES NOT MATCH regex "%s"'; + } + $failure = sprintf($failure, $this->_header, $this->_match); + break; + default: + throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . __FUNCTION__); + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Compare response code for positive match + * + * @param Zend_Controller_Response_Abstract $response + * @param int $code + * @return bool + */ + protected function _code(Zend_Controller_Response_Abstract $response, $code) + { + $test = $this->_getCode($response); + $this->_actualCode = $test; + return ($test == $code); + } + + /** + * Compare response code for negative match + * + * @param Zend_Controller_Response_Abstract $response + * @param int $code + * @return bool + */ + protected function _notCode(Zend_Controller_Response_Abstract $response, $code) + { + $test = $this->_getCode($response); + return ($test != $code); + } + + /** + * Retrieve response code + * + * @param Zend_Controller_Response_Abstract $response + * @return int + */ + protected function _getCode(Zend_Controller_Response_Abstract $response) + { + $test = $response->getHttpResponseCode(); + if (null === $test) { + $test = 200; + } + return $test; + } + + /** + * Positive check for response header presence + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return bool + */ + protected function _header(Zend_Controller_Response_Abstract $response, $header) + { + return (null !== $this->_getHeader($response, $header)); + } + + /** + * Negative check for response header presence + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return bool + */ + protected function _notHeader(Zend_Controller_Response_Abstract $response, $header) + { + return (null === $this->_getHeader($response, $header)); + } + + /** + * Retrieve response header + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return string|null + */ + protected function _getHeader(Zend_Controller_Response_Abstract $response, $header) + { + $headers = $response->sendHeaders(); + $header = strtolower($header); + if (array_key_exists($header, $headers)) { + return $headers[$header]; + } + return null; + } + + /** + * Positive check for header contents matching pattern + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $match + * @return bool + */ + protected function _headerContains(Zend_Controller_Response_Abstract $response, $header, $match) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return false; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return (strstr($contents, $match) !== false); + } + + /** + * Negative check for header contents matching pattern + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $match + * @return bool + */ + protected function _notHeaderContains(Zend_Controller_Response_Abstract $response, $header, $match) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return true; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return (strstr($contents, $match) === false); + } + + /** + * Positive check for header contents matching regex + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $pattern + * @return bool + */ + protected function _headerRegex(Zend_Controller_Response_Abstract $response, $header, $pattern) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return false; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return preg_match($pattern, $contents); + } + + /** + * Negative check for header contents matching regex + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $pattern + * @return bool + */ + protected function _notHeaderRegex(Zend_Controller_Response_Abstract $response, $header, $pattern) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return true; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return !preg_match($pattern, $contents); + } +} diff --git a/library/Zend/Test/PHPUnit/Constraint/ResponseHeader41.php b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader41.php new file mode 100755 index 000000000..7f244d43b --- /dev/null +++ b/library/Zend/Test/PHPUnit/Constraint/ResponseHeader41.php @@ -0,0 +1,421 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Response header PHPUnit Constraint + * + * @uses PHPUnit_Framework_Constraint + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Constraint_ResponseHeader41 extends PHPUnit_Framework_Constraint +{ + /**#@+ + * Assertion type constants + */ + const ASSERT_RESPONSE_CODE = 'assertResponseCode'; + const ASSERT_HEADER = 'assertHeader'; + const ASSERT_HEADER_CONTAINS = 'assertHeaderContains'; + const ASSERT_HEADER_REGEX = 'assertHeaderRegex'; + /**#@-*/ + + /** + * Current assertion type + * @var string + */ + protected $_assertType = null; + + /** + * Available assertion types + * @var array + */ + protected $_assertTypes = array( + self::ASSERT_RESPONSE_CODE, + self::ASSERT_HEADER, + self::ASSERT_HEADER_CONTAINS, + self::ASSERT_HEADER_REGEX, + ); + + /** + * @var int Response code + */ + protected $_code = 200; + + /** + * @var int Actual response code + */ + protected $_actualCode = null; + + /** + * @var string Header + */ + protected $_header = null; + + /** + * @var string pattern against which to compare header content + */ + protected $_match = null; + + /** + * Whether or not assertion is negated + * @var bool + */ + protected $_negate = false; + + /** + * Constructor; setup constraint state + * + * @return void + */ + public function __construct() + { + } + + /** + * Indicate negative match + * + * @param bool $flag + * @return void + */ + public function setNegate($flag = true) + { + $this->_negate = $flag; + } + + /** + * Evaluate an object to see if it fits the constraints + * + * @param object of Zend_Controller_Response_Abstract to be evaluated + * @param null|string Assertion type + * @param int|string HTTP response code to evaluate against | header string (haystack) + * @param string (optional) match (needle), may be required depending on assertion type + * @return bool + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function evaluate($other, $assertType = null) + * In PHPUnit 3.6.0 they changed the interface into this: + * public function evaluate($other, $description = '', $returnResult = FALSE) + * We use the new interface for PHP-strict checking, but emulate the old one + */ + public function evaluate($response, $assertType = '', $variable = FALSE) + { + if (!$response instanceof Zend_Controller_Response_Abstract) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Header constraint assertions require a response object'); + } + + if (strstr($assertType, 'Not')) { + $this->setNegate(true); + $assertType = str_replace('Not', '', $assertType); + } + + if (!in_array($assertType, $this->_assertTypes)) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception(sprintf('Invalid assertion type "%s" provided to %s constraint', $assertType, __CLASS__)); + } + + $this->_assertType = $assertType; + + $argv = func_get_args(); + $argc = func_num_args(); + + switch ($assertType) { + case self::ASSERT_RESPONSE_CODE: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No response code provided against which to match'); + } + $this->_code = $code = $argv[2]; + return ($this->_negate) + ? $this->_notCode($response, $code) + : $this->_code($response, $code); + case self::ASSERT_HEADER: + if (3 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('No header provided against which to match'); + } + $this->_header = $header = $argv[2]; + return ($this->_negate) + ? $this->_notHeader($response, $header) + : $this->_header($response, $header); + case self::ASSERT_HEADER_CONTAINS: + if (4 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . $assertType); + } + $this->_header = $header = $argv[2]; + $this->_match = $match = $argv[3]; + return ($this->_negate) + ? $this->_notHeaderContains($response, $header, $match) + : $this->_headerContains($response, $header, $match); + case self::ASSERT_HEADER_REGEX: + if (4 > $argc) { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Both a header name and content to match are required for ' . $assertType); + } + $this->_header = $header = $argv[2]; + $this->_match = $match = $argv[3]; + return ($this->_negate) + ? $this->_notHeaderRegex($response, $header, $match) + : $this->_headerRegex($response, $header, $match); + default: + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . $assertType); + } + } + + /** + * Report Failure + * + * @see PHPUnit_Framework_Constraint for implementation details + * @param mixed CSS selector path + * @param string Failure description + * @param object Cannot be used, null + * @return void + * @throws PHPUnit_Framework_ExpectationFailedException + * NOTE: + * Drastic changes up to PHPUnit 3.5.15 this was: + * public function fail($other, $description, $not = false) + * In PHPUnit 3.6.0 they changed the interface into this: + * protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL) + * We use the new interface for PHP-strict checking + * NOTE 2: + * Interface changed again in PHPUnit 4.1.0 because of refactoring to SebastianBergmann\Comparator + */ + public function fail($other, $description, \SebastianBergmann\Comparator\ComparisonFailure $cannot_be_used = NULL) + { + require_once 'Zend/Test/PHPUnit/Constraint/Exception.php'; + switch ($this->_assertType) { + case self::ASSERT_RESPONSE_CODE: + $failure = 'Failed asserting response code "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response code IS NOT "%s"'; + } + $failure = sprintf($failure, $this->_code); + if (!$this->_negate && $this->_actualCode) { + $failure .= sprintf(PHP_EOL . 'Was "%s"', $this->_actualCode); + } + break; + case self::ASSERT_HEADER: + $failure = 'Failed asserting response header "%s" found'; + if ($this->_negate) { + $failure = 'Failed asserting response response header "%s" WAS NOT found'; + } + $failure = sprintf($failure, $this->_header); + break; + case self::ASSERT_HEADER_CONTAINS: + $failure = 'Failed asserting response header "%s" exists and contains "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response header "%s" DOES NOT CONTAIN "%s"'; + } + $failure = sprintf($failure, $this->_header, $this->_match); + break; + case self::ASSERT_HEADER_REGEX: + $failure = 'Failed asserting response header "%s" exists and matches regex "%s"'; + if ($this->_negate) { + $failure = 'Failed asserting response header "%s" DOES NOT MATCH regex "%s"'; + } + $failure = sprintf($failure, $this->_header, $this->_match); + break; + default: + throw new Zend_Test_PHPUnit_Constraint_Exception('Invalid assertion type ' . __FUNCTION__); + } + + if (!empty($description)) { + $failure = $description . "\n" . $failure; + } + + throw new Zend_Test_PHPUnit_Constraint_Exception($failure); + } + + /** + * Complete implementation + * + * @return string + */ + public function toString() + { + return ''; + } + + /** + * Compare response code for positive match + * + * @param Zend_Controller_Response_Abstract $response + * @param int $code + * @return bool + */ + protected function _code(Zend_Controller_Response_Abstract $response, $code) + { + $test = $this->_getCode($response); + $this->_actualCode = $test; + return ($test == $code); + } + + /** + * Compare response code for negative match + * + * @param Zend_Controller_Response_Abstract $response + * @param int $code + * @return bool + */ + protected function _notCode(Zend_Controller_Response_Abstract $response, $code) + { + $test = $this->_getCode($response); + return ($test != $code); + } + + /** + * Retrieve response code + * + * @param Zend_Controller_Response_Abstract $response + * @return int + */ + protected function _getCode(Zend_Controller_Response_Abstract $response) + { + $test = $response->getHttpResponseCode(); + if (null === $test) { + $test = 200; + } + return $test; + } + + /** + * Positive check for response header presence + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return bool + */ + protected function _header(Zend_Controller_Response_Abstract $response, $header) + { + return (null !== $this->_getHeader($response, $header)); + } + + /** + * Negative check for response header presence + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return bool + */ + protected function _notHeader(Zend_Controller_Response_Abstract $response, $header) + { + return (null === $this->_getHeader($response, $header)); + } + + /** + * Retrieve response header + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @return string|null + */ + protected function _getHeader(Zend_Controller_Response_Abstract $response, $header) + { + $headers = $response->sendHeaders(); + $header = strtolower($header); + if (array_key_exists($header, $headers)) { + return $headers[$header]; + } + return null; + } + + /** + * Positive check for header contents matching pattern + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $match + * @return bool + */ + protected function _headerContains(Zend_Controller_Response_Abstract $response, $header, $match) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return false; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return (strstr($contents, $match) !== false); + } + + /** + * Negative check for header contents matching pattern + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $match + * @return bool + */ + protected function _notHeaderContains(Zend_Controller_Response_Abstract $response, $header, $match) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return true; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return (strstr($contents, $match) === false); + } + + /** + * Positive check for header contents matching regex + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $pattern + * @return bool + */ + protected function _headerRegex(Zend_Controller_Response_Abstract $response, $header, $pattern) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return false; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return preg_match($pattern, $contents); + } + + /** + * Negative check for header contents matching regex + * + * @param Zend_Controller_Response_Abstract $response + * @param string $header + * @param string $pattern + * @return bool + */ + protected function _notHeaderRegex(Zend_Controller_Response_Abstract $response, $header, $pattern) + { + if (null === ($fullHeader = $this->_getHeader($response, $header))) { + return true; + } + + $contents = str_replace($header . ': ', '', $fullHeader); + + return !preg_match($pattern, $contents); + } +} diff --git a/library/Zend/Test/PHPUnit/ControllerTestCase.php b/library/Zend/Test/PHPUnit/ControllerTestCase.php new file mode 100755 index 000000000..69976f0d9 --- /dev/null +++ b/library/Zend/Test/PHPUnit/ControllerTestCase.php @@ -0,0 +1,1165 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** @see Zend_Controller_Front */ +require_once 'Zend/Controller/Front.php'; + +/** @see Zend_Controller_Action_HelperBroker */ +require_once 'Zend/Controller/Action/HelperBroker.php'; + +/** @see Zend_Layout */ +require_once 'Zend/Layout.php'; + +/** @see Zend_Session */ +require_once 'Zend/Session.php'; + +/** @see Zend_Registry */ +require_once 'Zend/Registry.php'; + +/** + * Functional testing scaffold for MVC applications + * + * @uses PHPUnit_Framework_TestCase + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Test_PHPUnit_ControllerTestCase extends PHPUnit_Framework_TestCase +{ + /** + * @var mixed Bootstrap file path or callback + */ + public $bootstrap; + + /** + * @var Zend_Controller_Front + */ + protected $_frontController; + + /** + * @var Zend_Dom_Query + */ + protected $_query; + + /** + * @var Zend_Controller_Request_Abstract + */ + protected $_request; + + /** + * @var Zend_Controller_Response_Abstract + */ + protected $_response; + + /** + * XPath namespaces + * @var array + */ + protected $_xpathNamespaces = array(); + + /** + * Overloading: prevent overloading to special properties + * + * @param string $name + * @param mixed $value + * @throws Zend_Exception + */ + public function __set($name, $value) + { + if (in_array($name, array('request', 'response', 'frontController'))) { + require_once 'Zend/Exception.php'; + throw new Zend_Exception(sprintf('Setting %s object manually is not allowed', $name)); + } + $this->$name = $value; + } + + /** + * Overloading for common properties + * + * Provides overloading for request, response, and frontController objects. + * + * @param mixed $name + * @return null|Zend_Controller_Front|Zend_Controller_Request_HttpTestCase|Zend_Controller_Response_HttpTestCase + */ + public function __get($name) + { + switch ($name) { + case 'request': + return $this->getRequest(); + case 'response': + return $this->getResponse(); + case 'frontController': + return $this->getFrontController(); + } + + return null; + } + + /** + * Set up MVC app + * + * Calls {@link bootstrap()} by default + */ + protected function setUp() + { + $this->bootstrap(); + } + + /** + * Bootstrap the front controller + * + * Resets the front controller, and then bootstraps it. + * + * If {@link $bootstrap} is a callback, executes it; if it is a file, it include's + * it. When done, sets the test case request and response objects into the + * front controller. + */ + final public function bootstrap() + { + $this->reset(); + if (null !== $this->bootstrap) { + if ($this->bootstrap instanceof Zend_Application) { + $this->bootstrap->bootstrap(); + $this->_frontController = $this->bootstrap->getBootstrap()->getResource('frontcontroller'); + } elseif (is_callable($this->bootstrap)) { + call_user_func($this->bootstrap); + } elseif (is_string($this->bootstrap)) { + require_once 'Zend/Loader.php'; + if (Zend_Loader::isReadable($this->bootstrap)) { + include $this->bootstrap; + } + } + } + $this->frontController + ->setRequest($this->getRequest()) + ->setResponse($this->getResponse()); + } + + /** + * Dispatch the MVC + * + * If a URL is provided, sets it as the request URI in the request object. + * Then sets test case request and response objects in front controller, + * disables throwing exceptions, and disables returning the response. + * Finally, dispatches the front controller. + * + * @param string|null $url + */ + public function dispatch($url = null) + { + // redirector should not exit + $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); + $redirector->setExit(false); + + // json helper should not exit + $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); + $json->suppressExit = true; + + $request = $this->getRequest(); + if (null !== $url) { + $request->setRequestUri($url); + } + $request->setPathInfo(null); + + $controller = $this->getFrontController(); + $this->frontController + ->setRequest($request) + ->setResponse($this->getResponse()) + ->throwExceptions(false) + ->returnResponse(false); + + if ($this->bootstrap instanceof Zend_Application) { + $this->bootstrap->run(); + } else { + $this->frontController->dispatch(); + } + } + + /** + * Reset MVC state + * + * Creates new request/response objects, resets the front controller + * instance, and resets the action helper broker. + * + * @todo Need to update Zend_Layout to add a resetInstance() method + */ + public function reset() + { + $_SESSION = array(); + $_GET = array(); + $_POST = array(); + $_COOKIE = array(); + $this->resetRequest(); + $this->resetResponse(); + Zend_Layout::resetMvcInstance(); + Zend_Controller_Action_HelperBroker::resetHelpers(); + $this->frontController->resetInstance(); + Zend_Session::$_unitTestEnabled = true; + } + + /** + * Rest all view placeholders + */ + protected function _resetPlaceholders() + { + $registry = Zend_Registry::getInstance(); + $remove = array(); + foreach ($registry as $key => $value) { + if (strstr($key, '_View_')) { + $remove[] = $key; + } + } + + foreach ($remove as $key) { + unset($registry[$key]); + } + } + + /** + * Reset the request object + * + * Useful for test cases that need to test multiple trips to the server. + * + * @return Zend_Test_PHPUnit_ControllerTestCase + */ + public function resetRequest() + { + if ($this->_request instanceof Zend_Controller_Request_HttpTestCase) { + $this->_request->clearQuery() + ->clearPost(); + } + $this->_request = null; + return $this; + } + + /** + * Reset the response object + * + * Useful for test cases that need to test multiple trips to the server. + * + * @return Zend_Test_PHPUnit_ControllerTestCase + */ + public function resetResponse() + { + $this->_response = null; + $this->_resetPlaceholders(); + return $this; + } + + /** + * Assert against DOM selection + * + * @param string $path CSS selector path + * @param string $message + */ + public function assertQuery($path, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection + * + * @param string $path CSS selector path + * @param string $message + */ + public function assertNotQuery($path, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; node should contain content + * + * @param string $path CSS selector path + * @param string $match content that should be contained in matched nodes + * @param string $message + */ + public function assertQueryContentContains($path, $match, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $match)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; node should NOT contain content + * + * @param string $path CSS selector path + * @param string $match content that should NOT be contained in matched nodes + * @param string $message + */ + public function assertNotQueryContentContains($path, $match, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $match)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; node should match content + * + * @param string $path CSS selector path + * @param string $pattern Pattern that should be contained in matched nodes + * @param string $message + */ + public function assertQueryContentRegex($path, $pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; node should NOT match content + * + * @param string $path CSS selector path + * @param string $pattern pattern that should NOT be contained in matched nodes + * @param string $message + */ + public function assertNotQueryContentRegex($path, $pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; should contain exact number of nodes + * + * @param string $path CSS selector path + * @param string $count Number of nodes that should match + * @param string $message + */ + public function assertQueryCount($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; should NOT contain exact number of nodes + * + * @param string $path CSS selector path + * @param string $count Number of nodes that should NOT match + * @param string $message + */ + public function assertNotQueryCount($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; should contain at least this number of nodes + * + * @param string $path CSS selector path + * @param string $count Minimum number of nodes that should match + * @param string $message + */ + public function assertQueryCountMin($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against DOM selection; should contain no more than this number of nodes + * + * @param string $path CSS selector path + * @param string $count Maximum number of nodes that should match + * @param string $message + */ + public function assertQueryCountMax($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Register XPath namespaces + * + * @param array $xpathNamespaces + */ + public function registerXpathNamespaces($xpathNamespaces) + { + $this->_xpathNamespaces = $xpathNamespaces; + } + + /** + * Assert against XPath selection + * + * @param string $path XPath path + * @param string $message + */ + public function assertXpath($path, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection + * + * @param string $path XPath path + * @param string $message + */ + public function assertNotXpath($path, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; node should contain content + * + * @param string $path XPath path + * @param string $match content that should be contained in matched nodes + * @param string $message + */ + public function assertXpathContentContains($path, $match, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $match)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; node should NOT contain content + * + * @param string $path XPath path + * @param string $match content that should NOT be contained in matched nodes + * @param string $message + */ + public function assertNotXpathContentContains($path, $match, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $match)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; node should match content + * + * @param string $path XPath path + * @param string $pattern Pattern that should be contained in matched nodes + * @param string $message + */ + public function assertXpathContentRegex($path, $pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; node should NOT match content + * + * @param string $path XPath path + * @param string $pattern pattern that should NOT be contained in matched nodes + * @param string $message + */ + public function assertNotXpathContentRegex($path, $pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $pattern)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; should contain exact number of nodes + * + * @param string $path XPath path + * @param string $count Number of nodes that should match + * @param string $message + */ + public function assertXpathCount($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; should NOT contain exact number of nodes + * + * @param string $path XPath path + * @param string $count Number of nodes that should NOT match + * @param string $message + */ + public function assertNotXpathCount($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; should contain at least this number of nodes + * + * @param string $path XPath path + * @param string $count Minimum number of nodes that should match + * @param string $message + */ + public function assertXpathCountMin($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert against XPath selection; should contain no more than this number of nodes + * + * @param string $path XPath path + * @param string $count Maximum number of nodes that should match + * @param string $message + */ + public function assertXpathCountMax($path, $count, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/DomQuery.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_DomQuery($path); + $constraint->registerXpathNamespaces($this->_xpathNamespaces); + $content = $this->response->outputBody(); + if (!$constraint->evaluate($content, __FUNCTION__, $count)) { + $constraint->fail($path, $message); + } + } + + /** + * Assert that response is a redirect + * + * @param string $message + */ + public function assertRedirect($message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_Redirect(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert that response is NOT a redirect + * + * @param string $message + */ + public function assertNotRedirect($message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_Redirect(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert that response redirects to given URL + * + * @param string $url + * @param string $message + */ + public function assertRedirectTo($url, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_Redirect(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $url)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert that response does not redirect to given URL + * + * @param string $url + * @param string $message + */ + public function assertNotRedirectTo($url, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_Redirect(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $url)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert that redirect location matches pattern + * + * @param string $pattern + * @param string $message + */ + public function assertRedirectRegex($pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_Redirect(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $pattern)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert that redirect location does not match pattern + * + * @param string $pattern + * @param string $message + */ + public function assertNotRedirectRegex($pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/Redirect.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_Redirect(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $pattern)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response code + * + * @param int $code + * @param string $message + */ + public function assertResponseCode($code, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $code)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response code + * + * @param int $code + * @param string $message + */ + public function assertNotResponseCode($code, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $constraint->setNegate(true); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $code)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response header exists + * + * @param string $header + * @param string $message + */ + public function assertHeader($header, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $header)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response header does not exist + * + * @param string $header + * @param string $message + */ + public function assertNotHeader($header, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $constraint->setNegate(true); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $header)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response header exists and contains the given string + * + * @param string $header + * @param string $match + * @param string $message + */ + public function assertHeaderContains($header, $match, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $header, $match)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response header does not exist and/or does not contain the given string + * + * @param string $header + * @param string $match + * @param string $message + */ + public function assertNotHeaderContains($header, $match, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $constraint->setNegate(true); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $header, $match)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response header exists and matches the given pattern + * + * @param string $header + * @param string $pattern + * @param string $message + */ + public function assertHeaderRegex($header, $pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $header, $pattern)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert response header does not exist and/or does not match the given regex + * + * @param string $header + * @param string $pattern + * @param string $message + */ + public function assertNotHeaderRegex($header, $pattern, $message = '') + { + $this->_incrementAssertionCount(); + require_once 'Zend/Test/PHPUnit/Constraint/ResponseHeader.php'; + $constraint = new Zend_Test_PHPUnit_Constraint_ResponseHeader(); + $constraint->setNegate(true); + $response = $this->response; + if (!$constraint->evaluate($response, __FUNCTION__, $header, $pattern)) { + $constraint->fail($response, $message); + } + } + + /** + * Assert that the last handled request used the given module + * + * @param string $module + * @param string $message + */ + public function assertModule($module, $message = '') + { + $this->_incrementAssertionCount(); + if ($module != $this->request->getModuleName()) { + $msg = sprintf('Failed asserting last module used <"%s"> was "%s"', + $this->request->getModuleName(), + $module + ); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the last handled request did NOT use the given module + * + * @param string $module + * @param string $message + */ + public function assertNotModule($module, $message = '') + { + $this->_incrementAssertionCount(); + if ($module == $this->request->getModuleName()) { + $msg = sprintf('Failed asserting last module used was NOT "%s"', $module); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the last handled request used the given controller + * + * @param string $controller + * @param string $message + */ + public function assertController($controller, $message = '') + { + $this->_incrementAssertionCount(); + if ($controller != $this->request->getControllerName()) { + $msg = sprintf('Failed asserting last controller used <"%s"> was "%s"', + $this->request->getControllerName(), + $controller + ); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the last handled request did NOT use the given controller + * + * @param string $controller + * @param string $message + */ + public function assertNotController($controller, $message = '') + { + $this->_incrementAssertionCount(); + if ($controller == $this->request->getControllerName()) { + $msg = sprintf('Failed asserting last controller used <"%s"> was NOT "%s"', + $this->request->getControllerName(), + $controller + ); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the last handled request used the given action + * + * @param string $action + * @param string $message + */ + public function assertAction($action, $message = '') + { + $this->_incrementAssertionCount(); + if ($action != $this->request->getActionName()) { + $msg = sprintf('Failed asserting last action used <"%s"> was "%s"', $this->request->getActionName(), $action); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the last handled request did NOT use the given action + * + * @param string $action + * @param string $message + */ + public function assertNotAction($action, $message = '') + { + $this->_incrementAssertionCount(); + if ($action == $this->request->getActionName()) { + $msg = sprintf('Failed asserting last action used <"%s"> was NOT "%s"', $this->request->getActionName(), $action); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the specified route was used + * + * @param string $route + * @param string $message + */ + public function assertRoute($route, $message = '') + { + $this->_incrementAssertionCount(); + $router = $this->frontController->getRouter(); + if ($route != $router->getCurrentRouteName()) { + $msg = sprintf('Failed asserting matched route was "%s", actual route is %s', + $route, + $router->getCurrentRouteName() + ); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Assert that the route matched is NOT as specified + * + * @param string $route + * @param string $message + */ + public function assertNotRoute($route, $message = '') + { + $this->_incrementAssertionCount(); + $router = $this->frontController->getRouter(); + if ($route == $router->getCurrentRouteName()) { + $msg = sprintf('Failed asserting route matched was NOT "%s"', $route); + if (!empty($message)) { + $msg = $message . "\n" . $msg; + } + $this->fail($msg); + } + } + + /** + * Retrieve front controller instance + * + * @return Zend_Controller_Front + */ + public function getFrontController() + { + if (null === $this->_frontController) { + $this->_frontController = Zend_Controller_Front::getInstance(); + } + return $this->_frontController; + } + + /** + * Retrieve test case request object + * + * @return Zend_Controller_Request_HttpTestCase + */ + public function getRequest() + { + if (null === $this->_request) { + require_once 'Zend/Controller/Request/HttpTestCase.php'; + $this->_request = new Zend_Controller_Request_HttpTestCase; + } + return $this->_request; + } + + /** + * Retrieve test case response object + * + * @return Zend_Controller_Response_HttpTestCase + */ + public function getResponse() + { + if (null === $this->_response) { + require_once 'Zend/Controller/Response/HttpTestCase.php'; + $this->_response = new Zend_Controller_Response_HttpTestCase; + } + return $this->_response; + } + + /** + * Retrieve DOM query object + * + * @return Zend_Dom_Query + */ + public function getQuery() + { + if (null === $this->_query) { + require_once 'Zend/Dom/Query.php'; + $this->_query = new Zend_Dom_Query; + } + return $this->_query; + } + + /** + * URL Helper + * + * @param array $urlOptions + * @param string $name + * @param bool $reset + * @param bool $encode + * @throws Exception + * @throws Zend_Controller_Router_Exception + * @return string + */ + public function url($urlOptions = array(), $name = null, $reset = false, $encode = true) + { + $frontController = $this->getFrontController(); + $router = $frontController->getRouter(); + if (!$router instanceof Zend_Controller_Router_Rewrite) { + throw new Exception('This url helper utility function only works when the router is of type Zend_Controller_Router_Rewrite'); + } + if (count($router->getRoutes()) == 0) { + $router->addDefaultRoutes(); + } + return $router->assemble($urlOptions, $name, $reset, $encode); + } + + /** + * Urlize options + * + * @param array $urlOptions + * @param bool $actionControllerModuleOnly + * @return mixed + */ + public function urlizeOptions($urlOptions, $actionControllerModuleOnly = true) + { + $ccToDash = new Zend_Filter_Word_CamelCaseToDash(); + foreach ($urlOptions as $n => $v) { + if (in_array($n, array('action', 'controller', 'module'))) { + $urlOptions[$n] = $ccToDash->filter($v); + } + } + return $urlOptions; + } + + /** + * Increment assertion count + */ + protected function _incrementAssertionCount() + { + $stack = debug_backtrace(); + foreach ($stack as $step) { + if (isset($step['object']) + && $step['object'] instanceof PHPUnit_Framework_TestCase + ) { + if (version_compare(PHPUnit_Runner_Version::id(), '3.3.0', 'lt')) { + break; + } elseif (version_compare(PHPUnit_Runner_Version::id(), '3.3.3', 'lt')) { + $step['object']->incrementAssertionCounter(); + } else { + $step['object']->addToAssertionCount(1); + } + break; + } + } + } +} diff --git a/library/Zend/Test/PHPUnit/DatabaseTestCase.php b/library/Zend/Test/PHPUnit/DatabaseTestCase.php new file mode 100755 index 000000000..128030974 --- /dev/null +++ b/library/Zend/Test/PHPUnit/DatabaseTestCase.php @@ -0,0 +1,146 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_Operation_Truncate + */ +require_once "Zend/Test/PHPUnit/Db/Operation/Truncate.php"; + +/** + * @see Zend_Test_PHPUnit_Db_Operation_Insert + */ +require_once "Zend/Test/PHPUnit/Db/Operation/Insert.php"; + +/** + * @see Zend_Test_PHPUnit_Db_DataSet_DbTableDataSet + */ +require_once "Zend/Test/PHPUnit/Db/DataSet/DbTableDataSet.php"; + +/** + * @see Zend_Test_PHPUnit_Db_DataSet_DbTable + */ +require_once "Zend/Test/PHPUnit/Db/DataSet/DbTable.php"; + +/** + * @see Zend_Test_PHPUnit_Db_DataSet_DbRowset + */ +require_once "Zend/Test/PHPUnit/Db/DataSet/DbRowset.php"; + +/** + * Generic Testcase for Zend Framework related DbUnit Testing with PHPUnit + * + * @uses PHPUnit_Extensions_Database_TestCase + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Test_PHPUnit_DatabaseTestCase extends PHPUnit_Extensions_Database_TestCase +{ + /** + * Creates a new Zend Database Connection using the given Adapter and database schema name. + * + * @param Zend_Db_Adapter_Abstract $connection + * @param string $schema + * @return Zend_Test_PHPUnit_Db_Connection + */ + protected function createZendDbConnection(Zend_Db_Adapter_Abstract $connection, $schema) + { + return new Zend_Test_PHPUnit_Db_Connection($connection, $schema); + } + + /** + * Convenience function to get access to the database connection. + * + * @return Zend_Db_Adapter_Abstract + */ + protected function getAdapter() + { + return $this->getConnection()->getConnection(); + } + + /** + * Returns the database operation executed in test setup. + * + * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation + */ + protected function getSetUpOperation() + { + return new PHPUnit_Extensions_Database_Operation_Composite(array( + new Zend_Test_PHPUnit_Db_Operation_Truncate(), + new Zend_Test_PHPUnit_Db_Operation_Insert(), + )); + } + + /** + * Returns the database operation executed in test cleanup. + * + * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation + */ + protected function getTearDownOperation() + { + return PHPUnit_Extensions_Database_Operation_Factory::NONE(); + } + + /** + * Create a dataset based on multiple Zend_Db_Table instances + * + * @param array $tables + * @return Zend_Test_PHPUnit_Db_DataSet_DbTableDataSet + */ + protected function createDbTableDataSet(array $tables=array()) + { + $dataSet = new Zend_Test_PHPUnit_Db_DataSet_DbTableDataSet(); + foreach($tables AS $table) { + $dataSet->addTable($table); + } + return $dataSet; + } + + /** + * Create a table based on one Zend_Db_Table instance + * + * @param Zend_Db_Table_Abstract $table + * @param string $where + * @param string $order + * @param string $count + * @param string $offset + * @return Zend_Test_PHPUnit_Db_DataSet_DbTable + */ + protected function createDbTable(Zend_Db_Table_Abstract $table, $where=null, $order=null, $count=null, $offset=null) + { + return new Zend_Test_PHPUnit_Db_DataSet_DbTable($table, $where, $order, $count, $offset); + } + + /** + * Create a data table based on a Zend_Db_Table_Rowset instance + * + * @param Zend_Db_Table_Rowset_Abstract $rowset + * @param string + * @return Zend_Test_PHPUnit_Db_DataSet_DbRowset + */ + protected function createDbRowset(Zend_Db_Table_Rowset_Abstract $rowset, $tableName = null) + { + return new Zend_Test_PHPUnit_Db_DataSet_DbRowset($rowset, $tableName); + } +} diff --git a/library/Zend/Test/PHPUnit/Db/Connection.php b/library/Zend/Test/PHPUnit/Db/Connection.php new file mode 100755 index 000000000..2b0e5c3c1 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/Connection.php @@ -0,0 +1,144 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_DataSet_QueryTable + */ +require_once "Zend/Test/PHPUnit/Db/DataSet/QueryTable.php"; + +/** + * @see Zend_Test_PHPUnit_Db_Metadata_Generic + */ +require_once "Zend/Test/PHPUnit/Db/Metadata/Generic.php"; + +/** + * Generic Abstraction of Zend_Db Connections in the PHPUnit Database Extension context. + * + * @uses Zend_Db_Adapter_Abstract + * @uses PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_Connection extends PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection +{ + /** + * Zend_Db_Adapter_Abstract + * + * @var Zend_Db_Adapter_Abstract + */ + protected $_connection; + + /** + * Database Schema + * + * @var string $db + */ + protected $_schema; + + /** + * Metadata + * + * @param PHPUnit_Extensions_Database_DB_IMetaData $db + */ + protected $_metaData; + + /** + * Construct Connection based on Zend_Db_Adapter_Abstract + * + * @param Zend_Db_Adapter_Abstract $db + * @param string $schema + */ + public function __construct(Zend_Db_Adapter_Abstract $db, $schema) + { + $this->_connection = $db; + $this->_schema = $schema; + } + + /** + * Close this connection. + * + * @return void + */ + public function close() + { + $this->_connection->closeConnection(); + } + + /** + * Creates a table with the result of the specified SQL statement. + * + * @param string $resultName + * @param string $sql + * @return PHPUnit_Extensions_Database_DataSet_ITable + */ + public function createQueryTable($resultName, $sql) + { + return new Zend_Test_PHPUnit_Db_DataSet_QueryTable($resultName, $sql, $this); + } + + /** + * Returns a Zend_Db Connection + * + * @return Zend_Db_Adapter_Abstract + */ + public function getConnection() + { + return $this->_connection; + } + + /** + * Returns a database metadata object that can be used to retrieve table + * meta data from the database. + * + * @return PHPUnit_Extensions_Database_DB_IMetaData + */ + public function getMetaData() + { + if($this->_metaData === null) { + $this->_metaData = new Zend_Test_PHPUnit_Db_Metadata_Generic($this->getConnection(), $this->getSchema()); + } + return $this->_metaData; + } + + /** + * Returns the schema for the connection. + * + * @return string + */ + public function getSchema() + { + return $this->_schema; + } + + /** + * Returns the command used to truncate a table. + * + * @return string + */ + public function getTruncateCommand() + { + return "DELETE"; + } +} diff --git a/library/Zend/Test/PHPUnit/Db/DataSet/DbRowset.php b/library/Zend/Test/PHPUnit/Db/DataSet/DbRowset.php new file mode 100755 index 000000000..d8437528d --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/DataSet/DbRowset.php @@ -0,0 +1,73 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Db_Table_Rowset_Abstract + */ +require_once "Zend/Db/Table/Rowset/Abstract.php"; + +/** + * Use a Zend_Db Rowset as a datatable for assertions with other PHPUnit Database extension tables. + * + * @uses PHPUnit_Extensions_Database_DataSet_AbstractTable + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_DataSet_DbRowset extends PHPUnit_Extensions_Database_DataSet_AbstractTable +{ + /** + * Construct Table object from a Zend_Db_Table_Rowset + * + * @param Zend_Db_Table_Rowset_Abstract $rowset + * @param string $tableName + */ + public function __construct(Zend_Db_Table_Rowset_Abstract $rowset, $tableName = null) + { + if($tableName == null) { + $table = $rowset->getTable(); + if($table !== null) { + $tableName = $table->info('name'); + } else { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception( + 'No table name was given to Rowset Table and table name cannot be infered from the table, '. + 'because the rowset is disconnected from database.' + ); + } + } + + $this->data = $rowset->toArray(); + + $columns = array(); + if(isset($this->data[0]) > 0) { + $columns = array_keys($this->data[0]); + } else if($rowset->getTable() != null) { + $columns = $rowset->getTable()->info('cols'); + } + + $this->tableName = $tableName; + $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($this->tableName, $columns); + } +} diff --git a/library/Zend/Test/PHPUnit/Db/DataSet/DbTable.php b/library/Zend/Test/PHPUnit/Db/DataSet/DbTable.php new file mode 100755 index 000000000..37eaf430c --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/DataSet/DbTable.php @@ -0,0 +1,120 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Db_Table_Abstract + */ +require_once "Zend/Db/Table/Abstract.php"; + +/** + * Use a Zend_Db_Table for assertions with other PHPUnit Database Extension table types. + * + * @uses PHPUnit_Extensions_Database_DataSet_QueryTable + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_DataSet_DbTable extends PHPUnit_Extensions_Database_DataSet_QueryTable +{ + /** + * Zend_Db_Table object + * + * @var Zend_Db_Table_Abstract + */ + protected $_table = null; + + /** + * @var array + */ + protected $_columns = array(); + + /** + * @var string + */ + protected $_where = null; + + /** + * @var string + */ + protected $_orderBy = null; + + /** + * @var string + */ + protected $_count = null; + + /** + * @var int + */ + protected $_offset = null; + + /** + * Construct Dataset Table from Zend_Db_Table object + * + * @param Zend_Db_Table_Abstract $table + * @param string|Zend_Db_Select|null $where + * @param string|null $order + * @param int $count + * @param int $offset + */ + public function __construct(Zend_Db_Table_Abstract $table, $where=null, $order=null, $count=null, $offset=null) + { + $this->tableName = $table->info('name'); + $this->_columns = $table->info('cols'); + + $this->_table = $table; + $this->_where = $where; + $this->_order = $order; + $this->_count = $count; + $this->_offset = $offset; + } + + /** + * Lazy load data via table fetchAll() method. + * + * @return void + */ + protected function loadData() + { + if ($this->data === null) { + $this->data = $this->_table->fetchAll( + $this->_where, $this->_order, $this->_count, $this->_offset + ); + if($this->data instanceof Zend_Db_Table_Rowset_Abstract) { + $this->data = $this->data->toArray(); + } + } + } + + /** + * Create Table Metadata object + */ + protected function createTableMetaData() + { + if ($this->tableMetaData === NULL) { + $this->loadData(); + $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($this->tableName, $this->_columns); + } + } +} diff --git a/library/Zend/Test/PHPUnit/Db/DataSet/DbTableDataSet.php b/library/Zend/Test/PHPUnit/Db/DataSet/DbTableDataSet.php new file mode 100755 index 000000000..ed7530564 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/DataSet/DbTableDataSet.php @@ -0,0 +1,98 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_DataSet_DbTable + */ +require_once "Zend/Test/PHPUnit/Db/DataSet/DbTable.php"; + +/** + * Aggregate several Zend_Db_Table instances into a dataset. + * + * @uses Zend_Db_Table + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_DataSet_DbTableDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet +{ + /** + * @var array + */ + protected $tables = array(); + + /** + * Add a Table dataset representation by specifiying an arbitrary select query. + * + * By default a select * will be done on the given tablename. + * + * @param Zend_Db_Table_Abstract $table + * @param string $where + * @param string $order + * @param string $count + * @param string $offset + */ + public function addTable(Zend_Db_Table_Abstract $table, $where = null, $order = null, $count = null, $offset = null) + { + $tableName = $table->info('name'); + $this->tables[$tableName] = new Zend_Test_PHPUnit_Db_DataSet_DbTable($table, $where, $order, $count, $offset); + } + + /** + * Creates an iterator over the tables in the data set. If $reverse is + * true a reverse iterator will be returned. + * + * @param bool $reverse + * @return PHPUnit_Extensions_Database_DB_TableIterator + */ + protected function createIterator($reverse = FALSE) + { + return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator($this->tables, $reverse); + } + + /** + * Returns a table object for the given table. + * + * @param string $tableName + * @return PHPUnit_Extensions_Database_DB_Table + */ + public function getTable($tableName) + { + if (!isset($this->tables[$tableName])) { + throw new InvalidArgumentException("$tableName is not a table in the current database."); + } + + return $this->tables[$tableName]; + } + + /** + * Returns a list of table names for the database + * + * @return Array + */ + public function getTableNames() + { + return array_keys($this->tables); + } +} diff --git a/library/Zend/Test/PHPUnit/Db/DataSet/QueryDataSet.php b/library/Zend/Test/PHPUnit/Db/DataSet/QueryDataSet.php new file mode 100755 index 000000000..bd3f67daf --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/DataSet/QueryDataSet.php @@ -0,0 +1,80 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_DataSet_QueryTable + */ +require_once "Zend/Test/PHPUnit/Db/DataSet/QueryTable.php"; + +/** + * @see Zend_Db_Select + */ +require_once "Zend/Db/Select.php"; + +/** + * Uses several query strings or Zend_Db_Select objects to form a dataset of tables for assertion with other datasets. + * + * @uses PHPUnit_Extensions_Database_DataSet_QueryDataSet + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_DataSet_QueryDataSet extends PHPUnit_Extensions_Database_DataSet_QueryDataSet +{ + /** + * Creates a new dataset using the given database connection. + * + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection + */ + public function __construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection) + { + if( !($databaseConnection instanceof Zend_Test_PHPUnit_Db_Connection) ) { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception("Zend_Test_PHPUnit_Db_DataSet_QueryDataSet only works with Zend_Test_PHPUnit_Db_Connection connections-"); + } + $this->databaseConnection = $databaseConnection; + } + + /** + * Add a Table dataset representation by specifiying an arbitrary select query. + * + * By default a select * will be done on the given tablename. + * + * @param string $tableName + * @param string|Zend_Db_Select $query + */ + public function addTable($tableName, $query = NULL) + { + if ($query === NULL) { + $query = $this->databaseConnection->getConnection()->select(); + $query->from($tableName, Zend_Db_Select::SQL_WILDCARD); + } + + if($query instanceof Zend_Db_Select) { + $query = $query->__toString(); + } + + $this->tables[$tableName] = new Zend_Test_PHPUnit_Db_DataSet_QueryTable($tableName, $query, $this->databaseConnection); + } +} diff --git a/library/Zend/Test/PHPUnit/Db/DataSet/QueryTable.php b/library/Zend/Test/PHPUnit/Db/DataSet/QueryTable.php new file mode 100755 index 000000000..6100e8057 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/DataSet/QueryTable.php @@ -0,0 +1,82 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Represent a PHPUnit Database Extension table with Queries using a Zend_Db adapter for assertion against other tables. + * + * @uses PHPUnit_Extensions_Database_DataSet_QueryTable + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_DataSet_QueryTable extends PHPUnit_Extensions_Database_DataSet_QueryTable +{ + /** + * Creates a new database query table object. + * + * @param string $tableName + * @param string $query + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection + * @throws Zend_Test_PHPUnit_Db_Exception + */ + public function __construct($tableName, $query, PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection) + { + if( !($databaseConnection instanceof Zend_Test_PHPUnit_Db_Connection) ) { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception("Zend_Test_PHPUnit_Db_DataSet_QueryTable only works with Zend_Test_PHPUnit_Db_Connection connections-"); + } + parent::__construct($tableName, $query, $databaseConnection); + } + + /** + * Load data from the database. + * + * @return void + */ + protected function loadData() + { + if($this->data === null) { + $stmt = $this->databaseConnection->getConnection()->query($this->query); + $this->data = $stmt->fetchAll(Zend_Db::FETCH_ASSOC); + } + } + + /** + * Create Table Metadata + */ + protected function createTableMetaData() + { + if ($this->tableMetaData === NULL) + { + $this->loadData(); + $keys = array(); + if(count($this->data) > 0) { + $keys = array_keys($this->data[0]); + } + $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( + $this->tableName, $keys + ); + } + } +} diff --git a/library/Zend/Test/PHPUnit/Db/Exception.php b/library/Zend/Test/PHPUnit/Db/Exception.php new file mode 100755 index 000000000..6cf4c5715 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/Exception.php @@ -0,0 +1,40 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Exception + */ +require_once "Zend/Exception.php"; + +/** + * Exception for Zend_Test_PHPUnit_Database package + * + * @uses Zend_Exception + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_Exception extends Zend_Exception +{ +} diff --git a/library/Zend/Test/PHPUnit/Db/Metadata/Generic.php b/library/Zend/Test/PHPUnit/Db/Metadata/Generic.php new file mode 100755 index 000000000..d4b414494 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/Metadata/Generic.php @@ -0,0 +1,182 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Db_Adapter_Abstract + */ +require_once "Zend/Db/Adapter/Abstract.php"; + +/** + * Generic Metadata accessor for the Zend_Db adapters + * + * @uses PHPUnit_Extensions_Database_DB_IMetaData + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_Metadata_Generic implements PHPUnit_Extensions_Database_DB_IMetaData +{ + /** + * Zend_Db Connection + * + * @var Zend_Db_Adapter_Abstract + */ + protected $_connection; + + /** + * Schemaname + * + * @var string + */ + protected $_schema; + + /** + * Cached Table metadata + * + * @var array + */ + protected $_tableMetadata = array(); + + /** + * Creates a new database meta data object using the given pdo connection + * and schema name. + * + * @param Zend_Db_Adapter_Abstract $db + * @param string $schema + */ + public final function __construct(Zend_Db_Adapter_Abstract $db, $schema) + { + $this->_connection = $db; + $this->_schema = $schema; + } + + /** + * List Tables + * + * @return array + */ + public function getTableNames() + { + return $this->_connection->listTables(); + } + + /** + * Get Table information + * + * @param string $tableName + * @return array + */ + protected function getTableDescription($tableName) + { + if(!isset($this->_tableMetadata[$tableName])) { + $this->_tableMetadata[$tableName] = $this->_connection->describeTable($tableName); + } + return $this->_tableMetadata[$tableName]; + } + + /** + * Returns an array containing the names of all the columns in the + * $tableName table, + * + * @param string $tableName + * @return array + */ + public function getTableColumns($tableName) + { + $tableMeta = $this->getTableDescription($tableName); + $columns = array_keys($tableMeta); + return $columns; + } + + /** + * Returns an array containing the names of all the primary key columns in + * the $tableName table. + * + * @param string $tableName + * @return array + */ + public function getTablePrimaryKeys($tableName) + { + $tableMeta = $this->getTableDescription($tableName); + + $primaryColumnNames = array(); + foreach($tableMeta AS $column) { + if($column['PRIMARY'] == true) { + $primaryColumnNames[] = $column['COLUMN_NAME']; + } + } + return $primaryColumnNames; + } + + /** + * Returns the name of the default schema. + * + * @return string + */ + public function getSchema() + { + return $this->_schema; + } + + /** + * Returns a quoted schema object. (table name, column name, etc) + * + * @param string $object + * @return string + */ + public function quoteSchemaObject($object) + { + return $this->_connection->quoteIdentifier($object); + } + + /** + * Returns true if the rdbms allows cascading + * + * @return bool + */ + public function allowsCascading() + { + return false; + } + + /** + * Disables primary keys if rdbms does not allow setting them otherwise + * + * @param string $tableName + */ + public function disablePrimaryKeys($tableName) + { + // Implemented only to match new DBUnit interface + } + + /** + * Reenables primary keys after they have been disabled + * + * @param string $tableName + */ + public function enablePrimaryKeys($tableName) + { + // Implemented only to match new DBUnit interface + } +} diff --git a/library/Zend/Test/PHPUnit/Db/Operation/DeleteAll.php b/library/Zend/Test/PHPUnit/Db/Operation/DeleteAll.php new file mode 100755 index 000000000..7e4fa5e2e --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/Operation/DeleteAll.php @@ -0,0 +1,60 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_Connection + */ +require_once "Zend/Test/PHPUnit/Db/Connection.php"; + +/** + * Delete All Operation that can be executed on set up or tear down of a database tester. + * + * @uses PHPUnit_Extensions_Database_Operation_IDatabaseOperation + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_Operation_DeleteAll implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation +{ + /** + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection + * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet + */ + public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) + { + if(!($connection instanceof Zend_Test_PHPUnit_Db_Connection)) { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception("Not a valid Zend_Test_PHPUnit_Db_Connection instance, ".get_class($connection)." given!"); + } + + foreach ($dataSet as $table) { + try { + $tableName = $table->getTableMetaData()->getTableName(); + $connection->getConnection()->delete($tableName); + } catch (Exception $e) { + throw new PHPUnit_Extensions_Database_Operation_Exception('DELETEALL', 'DELETE FROM '.$tableName.'', array(), $table, $e->getMessage()); + } + } + } +} diff --git a/library/Zend/Test/PHPUnit/Db/Operation/Insert.php b/library/Zend/Test/PHPUnit/Db/Operation/Insert.php new file mode 100755 index 000000000..7668d6c50 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/Operation/Insert.php @@ -0,0 +1,84 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_Connection + */ +require_once "Zend/Test/PHPUnit/Db/Connection.php"; + +/** + * Operation for Inserting on setup or teardown of a database tester. + * + * @uses PHPUnit_Extensions_Database_Operation_IDatabaseOperation + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_Operation_Insert implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation +{ + /** + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection + * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet + */ + public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) + { + if(!($connection instanceof Zend_Test_PHPUnit_Db_Connection)) { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception("Not a valid Zend_Test_PHPUnit_Db_Connection instance, ".get_class($connection)." given!"); + } + + $databaseDataSet = $connection->createDataSet(); + + $dsIterator = $dataSet->getIterator(); + + foreach($dsIterator as $table) { + $tableName = $table->getTableMetaData()->getTableName(); + + $db = $connection->getConnection(); + for($i = 0; $i < $table->getRowCount(); $i++) { + $values = $this->buildInsertValues($table, $i); + try { + $db->insert($tableName, $values); + } catch (Exception $e) { + throw new PHPUnit_Extensions_Database_Operation_Exception("INSERT", "INSERT INTO ".$tableName." [..]", $values, $table, $e->getMessage()); + } + } + } + } + + /** + * + * @param PHPUnit_Extensions_Database_DataSet_ITable $table + * @param int $rowNum + * @return array + */ + protected function buildInsertValues(PHPUnit_Extensions_Database_DataSet_ITable $table, $rowNum) + { + $values = array(); + foreach($table->getTableMetaData()->getColumns() as $columnName) { + $values[$columnName] = $table->getValue($rowNum, $columnName); + } + return $values; + } +} diff --git a/library/Zend/Test/PHPUnit/Db/Operation/Truncate.php b/library/Zend/Test/PHPUnit/Db/Operation/Truncate.php new file mode 100755 index 000000000..da7c643b7 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/Operation/Truncate.php @@ -0,0 +1,110 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_Connection + */ +require_once "Zend/Test/PHPUnit/Db/Connection.php"; + +/** + * Operation for Truncating on setup or teardown of a database tester. + * + * @uses PHPUnit_Extensions_Database_Operation_IDatabaseOperation + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_Operation_Truncate implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation +{ + /** + * + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection + * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet + * @return void + */ + public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) + { + if(!($connection instanceof Zend_Test_PHPUnit_Db_Connection)) { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception("Not a valid Zend_Test_PHPUnit_Db_Connection instance, ".get_class($connection)." given!"); + } + + foreach ($dataSet->getReverseIterator() AS $table) { + try { + $tableName = $table->getTableMetaData()->getTableName(); + $this->_truncate($connection->getConnection(), $tableName); + } catch (Exception $e) { + throw new PHPUnit_Extensions_Database_Operation_Exception('TRUNCATE', 'TRUNCATE '.$tableName.'', array(), $table, $e->getMessage()); + } + } + } + + /** + * Truncate a given table. + * + * @param Zend_Db_Adapter_Abstract $db + * @param string $tableName + * @return void + */ + protected function _truncate(Zend_Db_Adapter_Abstract $db, $tableName) + { + $tableName = $db->quoteIdentifier($tableName, true); + if($db instanceof Zend_Db_Adapter_Pdo_Sqlite) { + $db->query('DELETE FROM '.$tableName); + } else if($db instanceof Zend_Db_Adapter_Db2) { + /*if(strstr(PHP_OS, "WIN")) { + $file = tempnam(sys_get_temp_dir(), "zendtestdbibm_"); + file_put_contents($file, ""); + $db->query('IMPORT FROM '.$file.' OF DEL REPLACE INTO '.$tableName); + unlink($file); + } else { + $db->query('IMPORT FROM /dev/null OF DEL REPLACE INTO '.$tableName); + }*/ + require_once "Zend/Exception.php"; + throw Zend_Exception("IBM Db2 TRUNCATE not supported."); + } else if($this->_isMssqlOrOracle($db)) { + $db->query('TRUNCATE TABLE '.$tableName); + } else if($db instanceof Zend_Db_Adapter_Pdo_Pgsql) { + $db->query('TRUNCATE '.$tableName.' CASCADE'); + } else { + $db->query('TRUNCATE '.$tableName); + } + } + + /** + * Detect if an adapter is for Mssql or Oracle Databases. + * + * @param Zend_Db_Adapter_Abstract $db + * @return bool + */ + private function _isMssqlOrOracle($db) + { + return ( + $db instanceof Zend_Db_Adapter_Pdo_Mssql || + $db instanceof Zend_Db_Adapter_Sqlsrv || + $db instanceof Zend_Db_Adapter_Pdo_Oci || + $db instanceof Zend_Db_Adapter_Oracle + ); + } +} diff --git a/library/Zend/Test/PHPUnit/Db/SimpleTester.php b/library/Zend/Test/PHPUnit/Db/SimpleTester.php new file mode 100755 index 000000000..901b4e713 --- /dev/null +++ b/library/Zend/Test/PHPUnit/Db/SimpleTester.php @@ -0,0 +1,75 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Test_PHPUnit_Db_Operation_Truncate + */ +require_once "Zend/Test/PHPUnit/Db/Operation/Truncate.php"; + +/** + * @see Zend_Test_PHPUnit_Db_Operation_Insert + */ +require_once "Zend/Test/PHPUnit/Db/Operation/Insert.php"; + +/** + * Simple Tester for Database Tests when the Abstract Test Case cannot be used. + * + * @uses PHPUnit_Extensions_Database_DefaultTester + * @category Zend + * @package Zend_Test + * @subpackage PHPUnit + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Test_PHPUnit_Db_SimpleTester extends PHPUnit_Extensions_Database_DefaultTester +{ + /** + * Creates a new default database tester using the given connection. + * + * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection + */ + public function __construct(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection) + { + if(!($connection instanceof Zend_Test_PHPUnit_Db_Connection)) { + require_once "Zend/Test/PHPUnit/Db/Exception.php"; + throw new Zend_Test_PHPUnit_Db_Exception("Not a valid Zend_Test_PHPUnit_Db_Connection instance, ".get_class($connection)." given!"); + } + + $this->connection = $connection; + $this->setUpOperation = new PHPUnit_Extensions_Database_Operation_Composite(array( + new Zend_Test_PHPUnit_Db_Operation_Truncate(), + new Zend_Test_PHPUnit_Db_Operation_Insert(), + )); + $this->tearDownOperation = PHPUnit_Extensions_Database_Operation_Factory::NONE(); + } + + /** + * Set Up the database using the given Dataset and the SetUp strategy "Truncate, then Insert" + * + * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet + */ + public function setUpDatabase(PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) + { + $this->setDataSet($dataSet); + $this->onSetUp(); + } +} diff --git a/library/Zend/Text/Exception.php b/library/Zend/Text/Exception.php new file mode 100755 index 000000000..026e36cc4 --- /dev/null +++ b/library/Zend/Text/Exception.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Exception + */ +require_once 'Zend/Exception.php'; + +/** + * Exception class for Zend_Text + * + * @category Zend + * @package Zend_Text + * @uses Zend_Exception + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Exception extends Zend_Exception +{ +} diff --git a/library/Zend/Text/Figlet.php b/library/Zend/Text/Figlet.php new file mode 100755 index 000000000..9a4243045 --- /dev/null +++ b/library/Zend/Text/Figlet.php @@ -0,0 +1,1232 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Figlet + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Text_Figlet is a PHP implementation of FIGlet + * + * @category Zend + * @package Zend_Text_Figlet + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Figlet +{ + /** + * Smush2 layout modes + */ + const SM_EQUAL = 0x01; + const SM_LOWLINE = 0x02; + const SM_HIERARCHY = 0x04; + const SM_PAIR = 0x08; + const SM_BIGX = 0x10; + const SM_HARDBLANK = 0x20; + const SM_KERN = 0x40; + const SM_SMUSH = 0x80; + + /** + * Smush mode override modes + */ + const SMO_NO = 0; + const SMO_YES = 1; + const SMO_FORCE = 2; + + /** + * Justifications + */ + const JUSTIFICATION_LEFT = 0; + const JUSTIFICATION_CENTER = 1; + const JUSTIFICATION_RIGHT = 2; + + /** + * Write directions + */ + const DIRECTION_LEFT_TO_RIGHT = 0; + const DIRECTION_RIGHT_TO_LEFT = 1; + + /** + * Magic fontfile number + */ + const FONTFILE_MAGIC_NUMBER = 'flf2'; + + /** + * Array containing all characters of the current font + * + * @var array + */ + protected $_charList = array(); + + /** + * Indicates if a font was loaded yet + * + * @var boolean + */ + protected $_fontLoaded = false; + + /** + * Latin-1 codes for German letters, respectively: + * + * LATIN CAPITAL LETTER A WITH DIAERESIS = A-umlaut + * LATIN CAPITAL LETTER O WITH DIAERESIS = O-umlaut + * LATIN CAPITAL LETTER U WITH DIAERESIS = U-umlaut + * LATIN SMALL LETTER A WITH DIAERESIS = a-umlaut + * LATIN SMALL LETTER O WITH DIAERESIS = o-umlaut + * LATIN SMALL LETTER U WITH DIAERESIS = u-umlaut + * LATIN SMALL LETTER SHARP S = ess-zed + * + * @var array + */ + protected $_germanChars = array(196, 214, 220, 228, 246, 252, 223); + + /** + * Output width, defaults to 80. + * + * @var integer + */ + protected $_outputWidth = 80; + + /** + * Hard blank character + * + * @var string + */ + protected $_hardBlank; + + /** + * Height of the characters + * + * @var integer + */ + protected $_charHeight; + + /** + * Max length of any character + * + * @var integer + */ + protected $_maxLength; + + /** + * Smush mode + * + * @var integer + */ + protected $_smushMode = 0; + + /** + * Smush defined by the font + * + * @var integer + */ + protected $_fontSmush = 0; + + /** + * Smush defined by the user + * + * @var integer + */ + protected $_userSmush = 0; + + /** + * Wether to handle paragraphs || not + * + * @var boolean + */ + protected $_handleParagraphs = false; + + /** + * Justification for the text, according to $_outputWidth + * + * For using font default, this parameter should be null, else one of + * the values of Zend_Text_Figlet::JUSTIFICATION_* + * + * @var integer + */ + protected $_justification = null; + + /** + * Direction of text-writing, namely right to left + * + * For using font default, this parameter should be null, else one of + * the values of Zend_Text_Figlet::DIRECTION_* + * + * @var integer + */ + protected $_rightToLeft = null; + + /** + * Override font file smush layout + * + * @var integer + */ + protected $_smushOverride = 0; + + /** + * Options of the current font + * + * @var array + */ + protected $_fontOptions = array(); + + /** + * Previous character width + * + * @var integer + */ + protected $_previousCharWidth = 0; + + /** + * Current character width + * + * @var integer + */ + protected $_currentCharWidth = 0; + + /** + * Current outline length + * + * @var integer + */ + protected $_outlineLength = 0; + + /** + * Maxmimum outline length + * + * @var integer + */ + protected $_outlineLengthLimit = 0; + + /** + * In character line + * + * @var string + */ + protected $_inCharLine; + + /** + * In character line length + * + * @var integer + */ + protected $_inCharLineLength = 0; + + /** + * Maximum in character line length + * + * @var integer + */ + protected $_inCharLineLengthLimit = 0; + + /** + * Current char + * + * @var array + */ + protected $_currentChar = null; + + /** + * Current output line + * + * @var array + */ + protected $_outputLine; + + /** + * Current output + * + * @var string + */ + protected $_output; + + /** + * Option keys to skip when calling setOptions() + * + * @var array + */ + protected $_skipOptions = array( + 'options', + 'config', + ); + + /** + * Instantiate the FIGlet with a specific font. If no font is given, the + * standard font is used. You can also supply multiple options via + * the $options variable, which can either be an array or an instance of + * Zend_Config. + * + * @param array|Zend_Config $options Options for the output + */ + public function __construct($options = null) + { + // Set options + if (is_array($options)) { + $this->setOptions($options); + } else if ($options instanceof Zend_Config) { + $this->setConfig($options); + } + + // If no font was defined, load default font + if (!$this->_fontLoaded) { + $this->_loadFont(dirname(__FILE__) . '/Figlet/zend-framework.flf'); + } + } + + /** + * Set options from array + * + * @param array $options Configuration for Zend_Text_Figlet + * @return Zend_Text_Figlet + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + return $this; + } + + /** + * Set options from config object + * + * @param Zend_Config $config Configuration for Zend_Text_Figlet + * @return Zend_Text_Figlet + */ + public function setConfig(Zend_Config $config) + { + return $this->setOptions($config->toArray()); + } + + /** + * Set a font to use + * + * @param string $font Path to the font + * @return Zend_Text_Figlet + */ + public function setFont($font) + { + $this->_loadFont($font); + return $this; + } + + /** + * Set handling of paragraphs + * + * @param boolean $handleParagraphs Wether to handle paragraphs or not + * @return Zend_Text_Figlet + */ + public function setHandleParagraphs($handleParagraphs) + { + $this->_handleParagraphs = (bool) $handleParagraphs; + return $this; + } + + /** + * Set the justification. 0 stands for left aligned, 1 for centered and 2 + * for right aligned. + * + * @param integer $justification Justification of the output text + * @return Zend_Text_Figlet + */ + public function setJustification($justification) + { + $this->_justification = min(3, max(0, (int) $justification)); + return $this; + } + + /** + * Set the output width + * + * @param integer $outputWidth Output with which should be used for word + * wrapping and justification + * @return Zend_Text_Figlet + */ + public function setOutputWidth($outputWidth) + { + $this->_outputWidth = max(1, (int) $outputWidth); + return $this; + } + + /** + * Set right to left mode. For writing from left to right, use + * Zend_Text_Figlet::DIRECTION_LEFT_TO_RIGHT. For writing from right to left, + * use Zend_Text_Figlet::DIRECTION_RIGHT_TO_LEFT. + * + * @param integer $rightToLeft Right-to-left mode + * @return Zend_Text_Figlet + */ + public function setRightToLeft($rightToLeft) + { + $this->_rightToLeft = min(1, max(0, (int) $rightToLeft)); + return $this; + } + + /** + * Set the smush mode. + * + * Use one of the constants of Zend_Text_Figlet::SM_*, you may combine them. + * + * @param integer $smushMode Smush mode to use for generating text + * @return Zend_Text_Figlet + */ + public function setSmushMode($smushMode) + { + $smushMode = (int) $smushMode; + + if ($smushMode < -1) { + $this->_smushOverride = self::SMO_NO; + } else { + if ($smushMode === 0) { + $this->_userSmush = self::SM_KERN; + } else if ($smushMode === -1) { + $this->_userSmush = 0; + } else { + $this->_userSmush = (($smushMode & 63) | self::SM_SMUSH); + } + + $this->_smushOverride = self::SMO_YES; + } + + $this->_setUsedSmush(); + + return $this; + } + + /** + * Render a FIGlet text + * + * @param string $text Text to convert to a figlet text + * @param string $encoding Encoding of the input string + * @throws InvalidArgumentException When $text is not a string + * @throws Zend_Text_Figlet_Exception When $text it not properly encoded + * @return string + */ + public function render($text, $encoding = 'UTF-8') + { + if (!is_string($text)) { + throw new InvalidArgumentException('$text must be a string'); + } + + if ($encoding !== 'UTF-8') { + $text = iconv($encoding, 'UTF-8', $text); + } + + $this->_output = ''; + $this->_outputLine = array(); + + $this->_clearLine(); + + $this->_outlineLengthLimit = ($this->_outputWidth - 1); + $this->_inCharLineLengthLimit = ($this->_outputWidth * 4 + 100); + + $wordBreakMode = 0; + $lastCharWasEol = false; + $textLength = @iconv_strlen($text, 'UTF-8'); + + if ($textLength === false) { + require_once 'Zend/Text/Figlet/Exception.php'; + throw new Zend_Text_Figlet_Exception('$text is not encoded with ' . $encoding); + } + + for ($charNum = 0; $charNum < $textLength; $charNum++) { + // Handle paragraphs + $char = iconv_substr($text, $charNum, 1, 'UTF-8'); + + if ($char === "\n" && $this->_handleParagraphs && !$lastCharWasEol) { + $nextChar = iconv_substr($text, ($charNum + 1), 1, 'UTF-8'); + if (!$nextChar) { + $nextChar = null; + } + + $char = (ctype_space($nextChar)) ? "\n" : ' '; + } + + $lastCharWasEol = (ctype_space($char) && $char !== "\t" && $char !== ' '); + + if (ctype_space($char)) { + $char = ($char === "\t" || $char === ' ') ? ' ': "\n"; + } + + // Skip unprintable characters + $ordChar = $this->_uniOrd($char); + if (($ordChar > 0 && $ordChar < 32 && $char !== "\n") || $ordChar === 127) { + continue; + } + + // Build the character + // Note: The following code is complex and thoroughly tested. + // Be careful when modifying! + do { + $charNotAdded = false; + + if ($wordBreakMode === -1) { + if ($char === ' ') { + break; + } else if ($char === "\n") { + $wordBreakMode = 0; + break; + } + + $wordBreakMode = 0; + } + + if ($char === "\n") { + $this->_appendLine(); + $wordBreakMode = false; + } else if ($this->_addChar($char)) { + if ($char !== ' ') { + $wordBreakMode = ($wordBreakMode >= 2) ? 3: 1; + } else { + $wordBreakMode = ($wordBreakMode > 0) ? 2: 0; + } + } else if ($this->_outlineLength === 0) { + for ($i = 0; $i < $this->_charHeight; $i++) { + if ($this->_rightToLeft === 1 && $this->_outputWidth > 1) { + $offset = (strlen($this->_currentChar[$i]) - $this->_outlineLengthLimit); + $this->_putString(substr($this->_currentChar[$i], $offset)); + } else { + $this->_putString($this->_currentChar[$i]); + } + } + + $wordBreakMode = -1; + } else if ($char === ' ') { + if ($wordBreakMode === 2) { + $this->_splitLine(); + } else { + $this->_appendLine(); + } + + $wordBreakMode = -1; + } else { + if ($wordBreakMode >= 2) { + $this->_splitLine(); + } else { + $this->_appendLine(); + } + + $wordBreakMode = ($wordBreakMode === 3) ? 1 : 0; + $charNotAdded = true; + } + } while ($charNotAdded); + } + + if ($this->_outlineLength !== 0) { + $this->_appendLine(); + } + + return $this->_output; + } + + /** + * Puts the given string, substituting blanks for hardblanks. If outputWidth + * is 1, puts the entire string; otherwise puts at most outputWidth - 1 + * characters. Puts a newline at the end of the string. The string is left- + * justified, centered or right-justified (taking outputWidth as the screen + * width) if justification is 0, 1 or 2 respectively. + * + * @param string $string The string to add to the output + * @return void + */ + protected function _putString($string) + { + $length = strlen($string); + + if ($this->_outputWidth > 1) { + if ($length > ($this->_outputWidth - 1)) { + $length = ($this->_outputWidth - 1); + } + + if ($this->_justification > 0) { + for ($i = 1; + ((3 - $this->_justification) * $i + $length + $this->_justification - 2) < $this->_outputWidth; + $i++) { + $this->_output .= ' '; + } + } + } + + $this->_output .= str_replace($this->_hardBlank, ' ', $string) . "\n"; + } + + /** + * Appends the current line to the output + * + * @return void + */ + protected function _appendLine() + { + for ($i = 0; $i < $this->_charHeight; $i++) { + $this->_putString($this->_outputLine[$i]); + } + + $this->_clearLine(); + } + + /** + * Splits inCharLine at the last word break (bunch of consecutive blanks). + * Makes a new line out of the first part and appends it using appendLine(). + * Makes a new line out of the second part and returns. + * + * @return void + */ + protected function _splitLine() + { + $gotSpace = false; + for ($i = ($this->_inCharLineLength - 1); $i >= 0; $i--) { + if (!$gotSpace && $this->_inCharLine[$i] === ' ') { + $gotSpace = true; + $lastSpace = $i; + } + + if ($gotSpace && $this->_inCharLine[$i] !== ' ') { + break; + } + } + + $firstLength = ($i + 1); + $lastLength = ($this->_inCharLineLength - $lastSpace - 1); + + $firstPart = ''; + for ($i = 0; $i < $firstLength; $i++) { + $firstPart[$i] = $this->_inCharLine[$i]; + } + + $lastPart = ''; + for ($i = 0; $i < $lastLength; $i++) { + $lastPart[$i] = $this->_inCharLine[($lastSpace + 1 + $i)]; + } + + $this->_clearLine(); + + for ($i = 0; $i < $firstLength; $i++) { + $this->_addChar($firstPart[$i]); + } + + $this->_appendLine(); + + for ($i = 0; $i < $lastLength; $i++) { + $this->_addChar($lastPart[$i]); + } + } + + /** + * Clears the current line + * + * @return void + */ + protected function _clearLine() + { + for ($i = 0; $i < $this->_charHeight; $i++) { + $this->_outputLine[$i] = ''; + } + + $this->_outlineLength = 0; + $this->_inCharLineLength = 0; + } + + /** + * Attempts to add the given character onto the end of the current line. + * Returns true if this can be done, false otherwise. + * + * @param string $char Character which to add to the output + * @return boolean + */ + protected function _addChar($char) + { + $this->_getLetter($char); + + if ($this->_currentChar === null) { + return true; + } + + $smushAmount = $this->_smushAmount(); + + if (($this->_outlineLength + $this->_currentCharWidth - $smushAmount) > $this->_outlineLengthLimit + || ($this->_inCharLineLength + 1) > $this->_inCharLineLengthLimit) { + return false; + } + + $tempLine = ''; + for ($row = 0; $row < $this->_charHeight; $row++) { + if ($this->_rightToLeft === 1) { + $tempLine = $this->_currentChar[$row]; + + for ($k = 0; $k < $smushAmount; $k++) { + $position = ($this->_currentCharWidth - $smushAmount + $k); + $tempLine[$position] = $this->_smushem($tempLine[$position], $this->_outputLine[$row][$k]); + } + + $this->_outputLine[$row] = $tempLine . substr($this->_outputLine[$row], $smushAmount); + } else { + for ($k = 0; $k < $smushAmount; $k++) { + if (($this->_outlineLength - $smushAmount + $k) < 0) { + continue; + } + + $position = ($this->_outlineLength - $smushAmount + $k); + if (isset($this->_outputLine[$row][$position])) { + $leftChar = $this->_outputLine[$row][$position]; + } else { + $leftChar = null; + } + + $this->_outputLine[$row][$position] = $this->_smushem($leftChar, $this->_currentChar[$row][$k]); + } + + $this->_outputLine[$row] .= substr($this->_currentChar[$row], $smushAmount); + } + } + + $this->_outlineLength = strlen($this->_outputLine[0]); + $this->_inCharLine[$this->_inCharLineLength++] = $char; + + return true; + } + + /** + * Gets the requested character and sets current and previous char width. + * + * @param string $char The character from which to get the letter of + * @return void + */ + protected function _getLetter($char) + { + if (array_key_exists($this->_uniOrd($char), $this->_charList)) { + $this->_currentChar = $this->_charList[$this->_uniOrd($char)]; + $this->_previousCharWidth = $this->_currentCharWidth; + $this->_currentCharWidth = strlen($this->_currentChar[0]); + } else { + $this->_currentChar = null; + } + } + + /** + * Returns the maximum amount that the current character can be smushed into + * the current line. + * + * @return integer + */ + protected function _smushAmount() + { + if (($this->_smushMode & (self::SM_SMUSH | self::SM_KERN)) === 0) { + return 0; + } + + $maxSmush = $this->_currentCharWidth; + $amount = $maxSmush; + + for ($row = 0; $row < $this->_charHeight; $row++) { + if ($this->_rightToLeft === 1) { + $charbd = strlen($this->_currentChar[$row]); + while (true) { + if (!isset($this->_currentChar[$row][$charbd])) { + $leftChar = null; + } else { + $leftChar = $this->_currentChar[$row][$charbd]; + } + + if ($charbd > 0 && ($leftChar === null || $leftChar == ' ')) { + $charbd--; + } else { + break; + } + } + + $linebd = 0; + while (true) { + if (!isset($this->_outputLine[$row][$linebd])) { + $rightChar = null; + } else { + $rightChar = $this->_outputLine[$row][$linebd]; + } + + if ($rightChar === ' ') { + $linebd++; + } else { + break; + } + } + + $amount = ($linebd + $this->_currentCharWidth - 1 - $charbd); + } else { + $linebd = strlen($this->_outputLine[$row]); + while (true) { + if (!isset($this->_outputLine[$row][$linebd])) { + $leftChar = null; + } else { + $leftChar = $this->_outputLine[$row][$linebd]; + } + + if ($linebd > 0 && ($leftChar === null || $leftChar == ' ')) { + $linebd--; + } else { + break; + } + } + + $charbd = 0; + while (true) { + if (!isset($this->_currentChar[$row][$charbd])) { + $rightChar = null; + } else { + $rightChar = $this->_currentChar[$row][$charbd]; + } + + if ($rightChar === ' ') { + $charbd++; + } else { + break; + } + } + + $amount = ($charbd + $this->_outlineLength - 1 - $linebd); + } + + if (empty($leftChar) || $leftChar === ' ') { + $amount++; + } else if (!empty($rightChar)) { + if ($this->_smushem($leftChar, $rightChar) !== null) { + $amount++; + } + } + + $maxSmush = min($amount, $maxSmush); + } + + return $maxSmush; + } + + /** + * Given two characters, attempts to smush them into one, according to the + * current smushmode. Returns smushed character or false if no smushing can + * be done. + * + * Smushmode values are sum of following (all values smush blanks): + * + * 1: Smush equal chars (not hardblanks) + * 2: Smush '_' with any char in hierarchy below + * 4: hierarchy: "|", "/\", "[]", "{}", "()", "<>" + * Each class in hier. can be replaced by later class. + * 8: [ + ] -> |, { + } -> |, ( + ) -> | + * 16: / + \ -> X, > + < -> X (only in that order) + * 32: hardblank + hardblank -> hardblank + * + * @param string $leftChar Left character to smush + * @param string $rightChar Right character to smush + * @return string + */ + protected function _smushem($leftChar, $rightChar) + { + if ($leftChar === ' ') { + return $rightChar; + } + + if ($rightChar === ' ') { + return $leftChar; + } + + if ($this->_previousCharWidth < 2 || $this->_currentCharWidth < 2) { + // Disallows overlapping if the previous character or the current + // character has a width of one or zero. + return null; + } + + if (($this->_smushMode & self::SM_SMUSH) === 0) { + // Kerning + return null; + } + + if (($this->_smushMode & 63) === 0) { + // This is smushing by universal overlapping + if ($leftChar === ' ') { + return $rightChar; + } else if ($rightChar === ' ') { + return $leftChar; + } else if ($leftChar === $this->_hardBlank) { + return $rightChar; + } else if ($rightChar === $this->_hardBlank) { + return $rightChar; + } else if ($this->_rightToLeft === 1) { + return $leftChar; + } else { + // Occurs in the absence of above exceptions + return $rightChar; + } + } + + if (($this->_smushMode & self::SM_HARDBLANK) > 0) { + if ($leftChar === $this->_hardBlank && $rightChar === $this->_hardBlank) { + return $leftChar; + } + } + + if ($leftChar === $this->_hardBlank && $rightChar === $this->_hardBlank) { + return null; + } + + if (($this->_smushMode & self::SM_EQUAL) > 0) { + if ($leftChar === $rightChar) { + return $leftChar; + } + } + + if (($this->_smushMode & self::SM_LOWLINE) > 0) { + if ($leftChar === '_' && strchr('|/\\[]{}()<>', $rightChar) !== false) { + return $rightChar; + } else if ($rightChar === '_' && strchr('|/\\[]{}()<>', $leftChar) !== false) { + return $leftChar; + } + } + + if (($this->_smushMode & self::SM_HIERARCHY) > 0) { + if ($leftChar === '|' && strchr('/\\[]{}()<>', $rightChar) !== false) { + return $rightChar; + } else if ($rightChar === '|' && strchr('/\\[]{}()<>', $leftChar) !== false) { + return $leftChar; + } else if (strchr('/\\', $leftChar) && strchr('[]{}()<>', $rightChar) !== false) { + return $rightChar; + } else if (strchr('/\\', $rightChar) && strchr('[]{}()<>', $leftChar) !== false) { + return $leftChar; + } else if (strchr('[]', $leftChar) && strchr('{}()<>', $rightChar) !== false) { + return $rightChar; + } else if (strchr('[]', $rightChar) && strchr('{}()<>', $leftChar) !== false) { + return $leftChar; + } else if (strchr('{}', $leftChar) && strchr('()<>', $rightChar) !== false) { + return $rightChar; + } else if (strchr('{}', $rightChar) && strchr('()<>', $leftChar) !== false) { + return $leftChar; + } else if (strchr('()', $leftChar) && strchr('<>', $rightChar) !== false) { + return $rightChar; + } else if (strchr('()', $rightChar) && strchr('<>', $leftChar) !== false) { + return $leftChar; + } + } + + if (($this->_smushMode & self::SM_PAIR) > 0) { + if ($leftChar === '[' && $rightChar === ']') { + return '|'; + } else if ($rightChar === '[' && $leftChar === ']') { + return '|'; + } else if ($leftChar === '{' && $rightChar === '}') { + return '|'; + } else if ($rightChar === '{' && $leftChar === '}') { + return '|'; + } else if ($leftChar === '(' && $rightChar === ')') { + return '|'; + } else if ($rightChar === '(' && $leftChar === ')') { + return '|'; + } + } + + if (($this->_smushMode & self::SM_BIGX) > 0) { + if ($leftChar === '/' && $rightChar === '\\') { + return '|'; + } else if ($rightChar === '/' && $leftChar === '\\') { + return 'Y'; + } else if ($leftChar === '>' && $rightChar === '<') { + return 'X'; + } + } + + return null; + } + + /** + * Load the specified font + * + * @param string $fontFile Font file to load + * @throws Zend_Text_Figlet_Exception When font file was not found + * @throws Zend_Text_Figlet_Exception When GZIP library is required but not found + * @throws Zend_Text_Figlet_Exception When font file is not readable + * @return void + */ + protected function _loadFont($fontFile) + { + // Check if the font file exists + if (!file_exists($fontFile)) { + require_once 'Zend/Text/Figlet/Exception.php'; + throw new Zend_Text_Figlet_Exception($fontFile . ': Font file not found'); + } + + // Check if gzip support is required + if (substr($fontFile, -3) === '.gz') { + if (!function_exists('gzcompress')) { + require_once 'Zend/Text/Figlet/Exception.php'; + throw new Zend_Text_Figlet_Exception('GZIP library is required for ' + . 'gzip compressed font files'); + } + + $fontFile = 'compress.zlib://' . $fontFile; + $compressed = true; + } else { + $compressed = false; + } + + // Try to open the file + $fp = fopen($fontFile, 'rb'); + if ($fp === false) { + require_once 'Zend/Text/Figlet/Exception.php'; + throw new Zend_Text_Figlet_Exception($fontFile . ': Could not open file'); + } + + // If the file is not compressed, lock the stream + if (!$compressed) { + flock($fp, LOCK_SH); + } + + // Get magic + $magic = $this->_readMagic($fp); + + // Get the header + $numsRead = sscanf(fgets($fp, 1000), + '%*c%c %d %*d %d %d %d %d %d', + $this->_hardBlank, + $this->_charHeight, + $this->_maxLength, + $smush, + $cmtLines, + $rightToLeft, + $this->_fontSmush); + + if ($magic !== self::FONTFILE_MAGIC_NUMBER || $numsRead < 5) { + require_once 'Zend/Text/Figlet/Exception.php'; + throw new Zend_Text_Figlet_Exception($fontFile . ': Not a FIGlet 2 font file'); + } + + // Set default right to left + if ($numsRead < 6) { + $rightToLeft = 0; + } + + // If no smush2, decode smush into smush2 + if ($numsRead < 7) { + if ($smush === 2) { + $this->_fontSmush = self::SM_KERN; + } else if ($smush < 0) { + $this->_fontSmush = 0; + } else { + $this->_fontSmush = (($smush & 31) | self::SM_SMUSH); + } + } + + // Correct char height && maxlength + $this->_charHeight = max(1, $this->_charHeight); + $this->_maxLength = max(1, $this->_maxLength); + + // Give ourselves some extra room + $this->_maxLength += 100; + + // See if we have to override smush settings + $this->_setUsedSmush(); + + // Get left to right value + if ($this->_rightToLeft === null) { + $this->_rightToLeft = $rightToLeft; + } + + // Get justification value + if ($this->_justification === null) { + $this->_justification = (2 * $this->_rightToLeft); + } + + // Skip all comment lines + for ($line = 1; $line <= $cmtLines; $line++) { + $this->_skipToEol($fp); + } + + // Fetch all ASCII characters + for ($asciiCode = 32; $asciiCode < 127; $asciiCode++) { + $this->_charList[$asciiCode] = $this->_loadChar($fp); + } + + // Fetch all german characters + foreach ($this->_germanChars as $uniCode) { + $char = $this->_loadChar($fp); + + if ($char === false) { + fclose($fp); + return; + } + + if (trim(implode('', $char)) !== '') { + $this->_charList[$uniCode] = $char; + } + } + + // At the end fetch all extended characters + while (!feof($fp)) { + // Get the Unicode + list($uniCode) = explode(' ', fgets($fp, 2048)); + + if (empty($uniCode)) { + continue; + } + + // Convert it if required + if (substr($uniCode, 0, 2) === '0x') { + $uniCode = hexdec(substr($uniCode, 2)); + } else if (substr($uniCode, 0, 1) === '0' and + $uniCode !== '0' or + substr($uniCode, 0, 2) === '-0') { + $uniCode = octdec($uniCode); + } else { + $uniCode = (int) $uniCode; + } + + // Now fetch the character + $char = $this->_loadChar($fp); + + if ($char === false) { + fclose($fp); + return; + } + + $this->_charList[$uniCode] = $char; + } + + fclose($fp); + + $this->_fontLoaded = true; + } + + /** + * Set the used smush mode, according to smush override, user smsush and + * font smush. + * + * @return void + */ + protected function _setUsedSmush() + { + if ($this->_smushOverride === self::SMO_NO) { + $this->_smushMode = $this->_fontSmush; + } else if ($this->_smushOverride === self::SMO_YES) { + $this->_smushMode = $this->_userSmush; + } else if ($this->_smushOverride === self::SMO_FORCE) { + $this->_smushMode = ($this->_fontSmush | $this->_userSmush); + } + } + + /** + * Reads a four-character magic string from a stream + * + * @param resource $fp File pointer to the font file + * @return string + */ + protected function _readMagic($fp) + { + $magic = ''; + + for ($i = 0; $i < 4; $i++) { + $magic .= fgetc($fp); + } + + return $magic; + } + + /** + * Skip a stream to the end of line + * + * @param resource $fp File pointer to the font file + * @return void + */ + protected function _skipToEol($fp) + { + $dummy = fgetc($fp); + while ($dummy !== false && !feof($fp)) { + if ($dummy === "\n") { + return; + } + + if ($dummy === "\r") { + $dummy = fgetc($fp); + + if (!feof($fp) && $dummy !== "\n") { + fseek($fp, -1, SEEK_SET); + } + + return; + } + + $dummy = fgetc($fp); + } + } + + /** + * Load a single character from the font file + * + * @param resource $fp File pointer to the font file + * @return array + */ + protected function _loadChar($fp) + { + $char = array(); + + for ($i = 0; $i < $this->_charHeight; $i++) { + if (feof($fp)) { + return false; + } + + $line = rtrim(fgets($fp, 2048), "\r\n"); + + if (preg_match('#(.)\\1?$#', $line, $result) === 1) { + $line = str_replace($result[1], '', $line); + } + + $char[] = $line; + } + + return $char; + } + + /** + * Unicode compatible ord() method + * + * @param string $c The char to get the value from + * @return integer + */ + protected function _uniOrd($c) + { + $h = ord($c[0]); + + if ($h <= 0x7F) { + $ord = $h; + } else if ($h < 0xC2) { + $ord = 0; + } else if ($h <= 0xDF) { + $ord = (($h & 0x1F) << 6 | (ord($c[1]) & 0x3F)); + } else if ($h <= 0xEF) { + $ord = (($h & 0x0F) << 12 | (ord($c[1]) & 0x3F) << 6 | (ord($c[2]) & 0x3F)); + } else if ($h <= 0xF4) { + $ord = (($h & 0x0F) << 18 | (ord($c[1]) & 0x3F) << 12 | + (ord($c[2]) & 0x3F) << 6 | (ord($c[3]) & 0x3F)); + } else { + $ord = 0; + } + + return $ord; + } +} diff --git a/library/Zend/Text/Figlet/Exception.php b/library/Zend/Text/Figlet/Exception.php new file mode 100755 index 000000000..b501a84d3 --- /dev/null +++ b/library/Zend/Text/Figlet/Exception.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Figlet + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Text_Exception + */ +require_once 'Zend/Text/Exception.php'; + +/** + * Exception class for Zend_Figlet + * + * @category Zend + * @package Zend_Text_Figlet + * @uses Zend_Text_Exception + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Figlet_Exception extends Zend_Text_Exception +{ +} diff --git a/library/Zend/Text/Figlet/zend-framework.flf b/library/Zend/Text/Figlet/zend-framework.flf new file mode 100755 index 000000000..8b4ddc8be --- /dev/null +++ b/library/Zend/Text/Figlet/zend-framework.flf @@ -0,0 +1,753 @@ +flf2a$ 7 6 10 51 22 0 7987 +Author : Wil Sinclair +Date : 2008/6/26 20:34:25 +Version: 1.0 + +------------------------------------------------------------------------------- + + Zend Framework + + LICENSE + + This source file is subject to the new BSD license that is bundled + with this package in the file LICENSE.txt. + It is also available through the world-wide-web at this URL: + http://framework.zend.com/license/new-bsd + If you did not receive a copy of the license and are unable to + obtain it through the world-wide-web, please send an email + to license@zend.com so we can send you a copy immediately. + + Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + +------------------------------------------------------------------------------- + +$ # +$ # +$ # +$ # +$ # +$ # +$ ## + __ # + / \\ # + | || # + |$ || # + \// # + []| # + ## + __ __ # + / /// //# + /_///_// # + `-` `-` # + # + # + ## +## + # + # + # + # + # + ## + _ # + | ||_ # + / ___// # + \___ \\ # + / $ // # + /_ // # + `-|_|| ## +%# + # + # + # + # + # + ## +&# + # + # + # + # + # + ## +'# + # + # + # + # + # + ## +(# + # + # + # + # + # + ## +)# + # + # + # + # + # + ## +*# + # + # + # + # + # + ## + # + _ # + _| || # + |_ $ _|| # + `-|_|-` # + - # + ## +,# + # + # + # + # + # + ## + # + # + ,------,,# +'======'' # + # + # + ## +.# + # + # + # + # + # + ## +/# + # + # + # + # + # + ## + ___ # + / _ \\ # + | |$| || # + | |_| || # + \___// # + `---` # + ## + __ # + / || # + | || # + _| ||_ # + |__$__|| # + `-----` # + ## + _____ # + \___ \\ # + / ___// # + | $ \\ # + |_____\\ # + `------` # + ## + _____ # + |___ \\ # + __$\ // # + __$/ \\ # + |_____// # + `-----` # + ## + __ # + / || # + / /|||_ # + /__ $ _||# + |_|| # + `-` # + ## + _____ # + / ___// # + /___ \\ # + / $ // # + /___// # +`----` # + ## + __ # + / // # + / // # + / __ \\ # + \____// # + `---` # + ## + ______ # + |___ // # + / // # + | || # + |_|| # + `-` # + ## + ____ # + / \\ # + \ -- // # + / -- \\ # + \____// # + `----` # + ## + ____ # + / __ \\ # + \__ || # + / // # + /_// # + `-` # + ## + # + # + []| # + # + []| # + # + ## + # + _ # + [_]| # + _ # + | ]] # + |// # + ' ## +<# + # + # + # + # + # + ## + # + ______ # + /_____// # + /_____// # + `-----` # + # + ## +># + # + # + # + # + # + ## +?# + # + # + # + # + # + ## +@# + # + # + # + # + # + ## + ___ # + / _ \\ # + / //\ \\ # +| ___ ||# +|_|| |_||# +`-` `-` # + ## + ______ # +| \\ # +| --$ // # +| -- \\ # +|______// # +`------` # + ## + _____ # + / ____|| # +/ //---`' # +\ \\___ # + \_____|| # + `----` # + ## + _____ # +| __ \\ # +| |$ \ || # +| |__/ || # +|_____// # + -----` # + ## + _____ # + | ___|| # + | ||__ # + | ||__ # + |_____|| # + `-----` # + ## + ______ # + /_____// # + `____ ` # + /___// # + `__ ` # + /_// # + `-` ## + _____ # + / ___|| # +| //$__ # +| \\_\ || # + \____// # + `---` # + ## + __ _ # +| || | || # +| '--' || # +| .--. || # +|_|| |_|| # +`-` `-` # + ## + ______ # + /_ _// # + -| ||- # + _| ||_ # + /_____// # + `-----` # + ## + ______ # + /_ _// # + | || # + _| || # + /__// # + `--` # + ## + _ __ # + | |/ // # + | ' // # + | . \\ # + |_|\_\\ # + `-` --` # + ## + __ # + | || # + | || # + | ||__ # + |____// # + `----` # + ## + _ _ # +| \ / || # +| \/ || # +| . . || # +|_|\/|_|| # +`-` `-` # + ## + _ _ # + | \| || # + | ' || # + | . || # + |_|\_|| # + `-` -` # + ## + ___ # + / _ \\ # + | /$\ || # + | \_/ || # + \___// # + `---` # + ## + ____ # + | _ \\ # + | |_| || # + | .__// # + |_|--` # + `-` # + ## + ___ # + / _ \\ # +| /$\ || # +| \_/ || # + \___ \\ # + `---` # + ## + ____ # + | _ \\ # + | |_| || # + | . // # + |_|\_\\ # + `-` --` # + ## + _____ # + / ___// # + \___ \\ # + / $ // # + /____// # +`-----` # + ## + ______ # + /_ _// # + `-| |,- # + | || # + |_|| # + `-`' # + ## + _ _ # +| || | || # +| || | || # +| \\_/ || # + \____// # + `---` # + ## +__ __ # +\ \\ / // # + \ \/ // # + \ // # + \// # + ` # + ## + _ _ # +| | | || # +| |/\| || # +| /\ || # +|_// \_|| # +`-` `-` # + ## + __ __ # + \ \\/ // # + \ $ // # + / . \\ # + /_//\_\\ # + `-` --` # + ## + __ __ # + \ \\/ // # + \ ` // # + | || # + |_|| # + `-`' # + ## + ______ # +|____ // # + / // # + / // # + / //__ # +/______|| # +`------` ## +[# + # + # + # + # + # + ## +\# + # + # + # + # + # + ## +]# + # + # + # + # + # + ## +^# + # + # + # + # + # + ## +_# + # + # + # + # + # + ## +`# + # + # + # + # + # + ## + ___ # + / _ \\ # + / //\ \\ # +| ___ ||# +|_|| |_||# +`-` `-` # + ## + ______ # +| \\ # +| --$ // # +| -- \\ # +|______// # +`------` # + ## + _____ # + / ____|| # +/ //---`' # +\ \\___ # + \_____|| # + `----` # + ## + _____ # +| __ \\ # +| |$ \ || # +| |__/ || # +|_____// # + -----` # + ## + _____ # + | ___|| # + | ||__ # + | ||__ # + |_____|| # + `-----` # + ## + ______ # + /_____// # + `____ ` # + /___// # + `__ ` # + /_// # + `-` ## + _____ # + / ___|| # +| //$__ # +| \\_\ || # + \____// # + `---` # + ## + __ _ # +| || | || # +| '--' || # +| .--. || # +|_|| |_|| # +`-` `-` # + ## + ______ # + /_ _// # + -| ||- # + _| ||_ # + /_____// # + `-----` # + ## + ______ # + /_ _// # + | || # + _| || # + /__// # + `--` # + ## + _ __ # + | |/ // # + | ' // # + | . \\ # + |_|\_\\ # + `-` --` # + ## + __ # + | || # + | || # + | ||__ # + |____// # + `----` # + ## + _ _ # +| \ / || # +| \/ || # +| . . || # +|_|\/|_|| # +`-` `-` # + ## + _ _ # + | \| || # + | ' || # + | . || # + |_|\_|| # + `-` -` # + ## + ___ # + / _ \\ # + | /$\ || # + | \_/ || # + \___// # + `---` # + ## + # + ____ # + | \\ # + | [] || # + | __// # + |_|`-` # + `-` ## + # + ___ # + / || # + | [] || # + \__ || # + -|_|| # + `-` ## + ____ # + | _ \\ # + | |_| || # + | . // # + |_|\_\\ # + `-` --` # + ## + _____ # + / ___// # + \___ \\ # + / $ // # + /____// # +`-----` # + ## + ______ # + /_ _// # + `-| |,- # + | || # + |_|| # + `-`' # + ## + _ _ # +| || | || # +| || | || # +| \\_/ || # + \____// # + `---` # + ## +__ __ # +\ \\ / // # + \ \/ // # + \ // # + \// # + ` # + ## + _ _ # +| | | || # +| |/\| || # +| /\ || # +|_// \_|| # +`-` `-` # + ## + __ __ # + \ \\/ // # + \ $ // # + / . \\ # + /_//\_\\ # + `-` --` # + ## + __ __ # + \ \\/ // # + \ ` // # + | || # + |_|| # + `-`' # + ## + _____ # + |__ // # + / // # + / //__ # + /_____|| # + `-----` # + ## +{# + # + # + # + # + # + ## +|# + # + # + # + # + # + ## +}# + # + # + # + # + # + ## +~# + # + # + # + # + # + ## + []|_[]| # + / _ \\ # + / //\ \\ # +| $___$ ||# +|_||$ |_||# +`-` `-` # + ## + []|_[]| # + / _ \\ # + | /$\ || # + | \_/ || # + \___// # + ---` # + ## + []| []| # +| ||$| || # +| ||$| || # +| \\_/ || # + \____// # + `---` # + ## + []|_[]| # + / _ \\ # + / //\ \\ # +| $___$ ||# +|_||$ |_||# +`-` `-` # + ## + []|_[]| # + / _ \\ # + | /$\ || # + | \_/ || # + \___// # + ---` # + ## + []| []| # +| ||$| || # +| ||$| || # +| \\_/ || # + \____// # + `---` # + ## + ,--. # + | _$ \\ # + | // # + | |\ \\ # + |$ ___\\ # + |_|----` # + - ## +162 CENT SIGN + _ # + | || # + / __// # +| (__` # + \ \\ # + |_|` # + `-` ## +215 MULTIPLICATION SIGN + # + # + \\// # + \\ # + //\\ # + # + ## diff --git a/library/Zend/Text/MultiByte.php b/library/Zend/Text/MultiByte.php new file mode 100755 index 000000000..ad6a91656 --- /dev/null +++ b/library/Zend/Text/MultiByte.php @@ -0,0 +1,143 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Text_MultiByte contains multibyte safe string methods + * + * @category Zend + * @package Zend_Text + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_MultiByte +{ + /** + * Word wrap + * + * @param string $string + * @param integer $width + * @param string $break + * @param boolean $cut + * @param string $charset + * @return string + */ + public static function wordWrap($string, $width = 75, $break = "\n", $cut = false, $charset = 'utf-8') + { + $stringWidth = iconv_strlen($string, $charset); + $breakWidth = iconv_strlen($break, $charset); + + if (strlen($string) === 0) { + return ''; + } elseif ($breakWidth === null) { + throw new Zend_Text_Exception('Break string cannot be empty'); + } elseif ($width === 0 && $cut) { + throw new Zend_Text_Exception('Can\'t force cut when width is zero'); + } + + $result = ''; + $lastStart = $lastSpace = 0; + + for ($current = 0; $current < $stringWidth; $current++) { + $char = iconv_substr($string, $current, 1, $charset); + + if ($breakWidth === 1) { + $possibleBreak = $char; + } else { + $possibleBreak = iconv_substr($string, $current, $breakWidth, $charset); + } + + if ($possibleBreak === $break) { + $result .= iconv_substr($string, $lastStart, $current - $lastStart + $breakWidth, $charset); + $current += $breakWidth - 1; + $lastStart = $lastSpace = $current + 1; + } elseif ($char === ' ') { + if ($current - $lastStart >= $width) { + $result .= iconv_substr($string, $lastStart, $current - $lastStart, $charset) . $break; + $lastStart = $current + 1; + } + + $lastSpace = $current; + } elseif ($current - $lastStart >= $width && $cut && $lastStart >= $lastSpace) { + $result .= iconv_substr($string, $lastStart, $current - $lastStart, $charset) . $break; + $lastStart = $lastSpace = $current; + } elseif ($current - $lastStart >= $width && $lastStart < $lastSpace) { + $result .= iconv_substr($string, $lastStart, $lastSpace - $lastStart, $charset) . $break; + $lastStart = $lastSpace = $lastSpace + 1; + } + } + + if ($lastStart !== $current) { + $result .= iconv_substr($string, $lastStart, $current - $lastStart, $charset); + } + + return $result; + } + + /** + * String padding + * + * @param string $input + * @param integer $padLength + * @param string $padString + * @param integer $padType + * @param string $charset + * @return string + */ + public static function strPad($input, $padLength, $padString = ' ', $padType = STR_PAD_RIGHT, $charset = 'utf-8') + { + $return = ''; + $lengthOfPadding = $padLength - iconv_strlen($input, $charset); + $padStringLength = iconv_strlen($padString, $charset); + + if ($padStringLength === 0 || $lengthOfPadding <= 0) { + $return = $input; + } else { + $repeatCount = floor($lengthOfPadding / $padStringLength); + + if ($padType === STR_PAD_BOTH) { + $lastStringLeft = ''; + $lastStringRight = ''; + $repeatCountLeft = $repeatCountRight = ($repeatCount - $repeatCount % 2) / 2; + + $lastStringLength = $lengthOfPadding - 2 * $repeatCountLeft * $padStringLength; + $lastStringLeftLength = $lastStringRightLength = floor($lastStringLength / 2); + $lastStringRightLength += $lastStringLength % 2; + + $lastStringLeft = iconv_substr($padString, 0, $lastStringLeftLength, $charset); + $lastStringRight = iconv_substr($padString, 0, $lastStringRightLength, $charset); + + $return = str_repeat($padString, $repeatCountLeft) . $lastStringLeft + . $input + . str_repeat($padString, $repeatCountRight) . $lastStringRight; + } else { + $lastString = iconv_substr($padString, 0, $lengthOfPadding % $padStringLength, $charset); + + if ($padType === STR_PAD_LEFT) { + $return = str_repeat($padString, $repeatCount) . $lastString . $input; + } else { + $return = $input . str_repeat($padString, $repeatCount) . $lastString; + } + } + } + + return $return; + } +} diff --git a/library/Zend/Text/Table.php b/library/Zend/Text/Table.php new file mode 100755 index 000000000..9f0980232 --- /dev/null +++ b/library/Zend/Text/Table.php @@ -0,0 +1,533 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Text_Table enables developers to create tables out of characters + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Table +{ + /** + * Auto seperator settings + */ + const AUTO_SEPARATE_NONE = 0x0; + const AUTO_SEPARATE_HEADER = 0x1; + const AUTO_SEPARATE_FOOTER = 0x2; + const AUTO_SEPARATE_ALL = 0x4; + + /** + * Decorator used for the table borders + * + * @var Zend_Text_Table_Decorator_Interface + */ + protected $_decorator = null; + + /** + * List of all column widths + * + * @var array + */ + protected $_columnWidths = null; + + /** + * Rows of the table + * + * @var array + */ + protected $_rows = array(); + + /** + * Auto separation mode + * + * @var integer + */ + protected $_autoSeparate = self::AUTO_SEPARATE_ALL; + + /** + * Padding for columns + * + * @var integer + */ + protected $_padding = 0; + + /** + * Default column aligns for rows created by appendRow(array $data) + * + * @var array + */ + protected $_defaultColumnAligns = array(); + + /** + * Plugin loader for decorators + * + * @var string + */ + protected $_pluginLoader = null; + + /** + * Charset which is used for input by default + * + * @var string + */ + protected static $_inputCharset = 'utf-8'; + + /** + * Charset which is used internally + * + * @var string + */ + protected static $_outputCharset = 'utf-8'; + + /** + * Option keys to skip when calling setOptions() + * + * @var array + */ + protected $_skipOptions = array( + 'options', + 'config', + 'defaultColumnAlign', + ); + + /** + * Create a basic table object + * + * @param array $columnsWidths List of all column widths + * @param Zend_Config|array $options Configuration options + * @throws Zend_Text_Table_Exception When no columns widths were set + */ + public function __construct($options = null) + { + // Set options + if (is_array($options)) { + $this->setOptions($options); + } else if ($options instanceof Zend_Config) { + $this->setConfig($options); + } + + // Check if column widths were set + // @todo When column widths were not set, assume auto-sizing + if ($this->_columnWidths === null) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('You must define the column widths'); + } + + // If no decorator was given, use default unicode decorator + if ($this->_decorator === null) { + if (self::getOutputCharset() === 'utf-8') { + $this->setDecorator('unicode'); + } else { + $this->setDecorator('ascii'); + } + } + } + + /** + * Set options from array + * + * @param array $options Configuration for Zend_Text_Table + * @return Zend_Text_Table + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + if (in_array(strtolower($key), $this->_skipOptions)) { + continue; + } + + $method = 'set' . ucfirst($key); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Set options from config object + * + * @param Zend_Config $config Configuration for Zend_Text_Table + * @return Zend_Text_Table + */ + public function setConfig(Zend_Config $config) + { + return $this->setOptions($config->toArray()); + } + + /** + * Set column widths + * + * @param array $columnWidths Widths of all columns + * @throws Zend_Text_Table_Exception When no columns were supplied + * @throws Zend_Text_Table_Exception When a column has an invalid width + * @return Zend_Text_Table + */ + public function setColumnWidths(array $columnWidths) + { + if (count($columnWidths) === 0) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('You must supply at least one column'); + } + + foreach ($columnWidths as $columnNum => $columnWidth) { + if (is_int($columnWidth) === false or $columnWidth < 1) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('Column ' . $columnNum . ' has an invalid' + . ' column width'); + } + } + + $this->_columnWidths = $columnWidths; + + return $this; + } + + /** + * Set auto separation mode + * + * @param integer $autoSeparate Auto separation mode + * @return Zend_Text_Table + */ + public function setAutoSeparate($autoSeparate) + { + $this->_autoSeparate = (int) $autoSeparate; + return $this; + } + + /** + * Set decorator + * + * @param Zend_Text_Table_Decorator_Interface|string $decorator Decorator to use + * @return Zend_Text_Table + */ + public function setDecorator($decorator) + { + if ($decorator instanceof Zend_Text_Table_Decorator_Interface) { + $this->_decorator = $decorator; + } else { + $classname = $this->getPluginLoader()->load($decorator); + $this->_decorator = new $classname; + } + + return $this; + } + + /** + * Set the column padding + * + * @param integer $padding The padding for the columns + * @return Zend_Text_Table + */ + public function setPadding($padding) + { + $this->_padding = max(0, (int) $padding); + return $this; + } + + /** + * Get the plugin loader for decorators + * + * @return Zend_Loader_PluginLoader + */ + public function getPluginLoader() + { + if ($this->_pluginLoader === null) { + $prefix = 'Zend_Text_Table_Decorator_'; + $pathPrefix = 'Zend/Text/Table/Decorator/'; + + require_once 'Zend/Loader/PluginLoader.php'; + $this->_pluginLoader = new Zend_Loader_PluginLoader(array($prefix => $pathPrefix)); + } + + return $this->_pluginLoader; + } + + /** + * Set default column align for rows created by appendRow(array $data) + * + * @param integer $columnNum + * @param string $align + * @return Zend_Text_Table + */ + public function setDefaultColumnAlign($columnNum, $align) + { + $this->_defaultColumnAligns[$columnNum] = $align; + + return $this; + } + + /** + * Set the input charset for column contents + * + * @param string $charset + */ + public static function setInputCharset($charset) + { + self::$_inputCharset = strtolower($charset); + } + + /** + * Get the input charset for column contents + * + * @param string $charset + */ + public static function getInputCharset() + { + return self::$_inputCharset; + } + + /** + * Set the output charset for column contents + * + * @param string $charset + */ + public static function setOutputCharset($charset) + { + self::$_outputCharset = strtolower($charset); + } + + /** + * Get the output charset for column contents + * + * @param string $charset + */ + public static function getOutputCharset() + { + return self::$_outputCharset; + } + + /** + * Append a row to the table + * + * @param array|Zend_Text_Table_Row $row The row to append to the table + * @throws Zend_Text_Table_Exception When $row is neither an array nor Zend_Zext_Table_Row + * @throws Zend_Text_Table_Exception When a row contains too many columns + * @return Zend_Text_Table + */ + public function appendRow($row) + { + if (!is_array($row) && !($row instanceof Zend_Text_Table_Row)) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('$row must be an array or instance of Zend_Text_Table_Row'); + } + + if (is_array($row)) { + if (count($row) > count($this->_columnWidths)) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('Row contains too many columns'); + } + + require_once 'Zend/Text/Table/Row.php'; + require_once 'Zend/Text/Table/Column.php'; + + $data = $row; + $row = new Zend_Text_Table_Row(); + $colNum = 0; + foreach ($data as $columnData) { + if (isset($this->_defaultColumnAligns[$colNum])) { + $align = $this->_defaultColumnAligns[$colNum]; + } else { + $align = null; + } + + $row->appendColumn(new Zend_Text_Table_Column($columnData, $align)); + $colNum++; + } + } + + $this->_rows[] = $row; + + return $this; + } + + /** + * Render the table + * + * @throws Zend_Text_Table_Exception When no rows were added to the table + * @return string + */ + public function render() + { + // There should be at least one row + if (count($this->_rows) === 0) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('No rows were added to the table yet'); + } + + // Initiate the result variable + $result = ''; + + // Count total columns + $totalNumColumns = count($this->_columnWidths); + + // Now render all rows, starting from the first one + $numRows = count($this->_rows); + foreach ($this->_rows as $rowNum => $row) { + // Get all column widths + if (isset($columnWidths) === true) { + $lastColumnWidths = $columnWidths; + } + + $renderedRow = $row->render($this->_columnWidths, $this->_decorator, $this->_padding); + $columnWidths = $row->getColumnWidths(); + $numColumns = count($columnWidths); + + // Check what we have to draw + if ($rowNum === 0) { + // If this is the first row, draw the table top + $result .= $this->_decorator->getTopLeft(); + + foreach ($columnWidths as $columnNum => $columnWidth) { + $result .= str_repeat($this->_decorator->getHorizontal(), + $columnWidth); + + if (($columnNum + 1) === $numColumns) { + $result .= $this->_decorator->getTopRight(); + } else { + $result .= $this->_decorator->getHorizontalDown(); + } + } + + $result .= "\n"; + } else { + // Else check if we have to draw the row separator + if ($this->_autoSeparate & self::AUTO_SEPARATE_ALL) { + $drawSeparator = true; + } else if ($rowNum === 1 && $this->_autoSeparate & self::AUTO_SEPARATE_HEADER) { + $drawSeparator = true; + } else if ($rowNum === ($numRows - 1) && $this->_autoSeparate & self::AUTO_SEPARATE_FOOTER) { + $drawSeparator = true; + } else { + $drawSeparator = false; + } + + if ($drawSeparator) { + $result .= $this->_decorator->getVerticalRight(); + + $currentUpperColumn = 0; + $currentLowerColumn = 0; + $currentUpperWidth = 0; + $currentLowerWidth = 0; + + // Loop through all column widths + foreach ($this->_columnWidths as $columnNum => $columnWidth) { + // Add the horizontal line + $result .= str_repeat($this->_decorator->getHorizontal(), + $columnWidth); + + // If this is the last line, break out + if (($columnNum + 1) === $totalNumColumns) { + break; + } + + // Else check, which connector style has to be used + $connector = 0x0; + $currentUpperWidth += $columnWidth; + $currentLowerWidth += $columnWidth; + + if ($lastColumnWidths[$currentUpperColumn] === $currentUpperWidth) { + $connector |= 0x1; + $currentUpperColumn += 1; + $currentUpperWidth = 0; + } else { + $currentUpperWidth += 1; + } + + if ($columnWidths[$currentLowerColumn] === $currentLowerWidth) { + $connector |= 0x2; + $currentLowerColumn += 1; + $currentLowerWidth = 0; + } else { + $currentLowerWidth += 1; + } + + switch ($connector) { + case 0x0: + $result .= $this->_decorator->getHorizontal(); + break; + + case 0x1: + $result .= $this->_decorator->getHorizontalUp(); + break; + + case 0x2: + $result .= $this->_decorator->getHorizontalDown(); + break; + + case 0x3: + $result .= $this->_decorator->getCross(); + break; + + default: + // This can never happen, but the CS tells I have to have it ... + break; + } + } + + $result .= $this->_decorator->getVerticalLeft() . "\n"; + } + } + + // Add the rendered row to the result + $result .= $renderedRow; + + // If this is the last row, draw the table bottom + if (($rowNum + 1) === $numRows) { + $result .= $this->_decorator->getBottomLeft(); + + foreach ($columnWidths as $columnNum => $columnWidth) { + $result .= str_repeat($this->_decorator->getHorizontal(), + $columnWidth); + + if (($columnNum + 1) === $numColumns) { + $result .= $this->_decorator->getBottomRight(); + } else { + $result .= $this->_decorator->getHorizontalUp(); + } + } + + $result .= "\n"; + } + } + + return $result; + } + + /** + * Magic method which returns the rendered table + * + * @return string + */ + public function __toString() + { + try { + return $this->render(); + } catch (Exception $e) { + trigger_error($e->getMessage(), E_USER_ERROR); + } + + } +} diff --git a/library/Zend/Text/Table/Column.php b/library/Zend/Text/Table/Column.php new file mode 100755 index 000000000..cd1547062 --- /dev/null +++ b/library/Zend/Text/Table/Column.php @@ -0,0 +1,243 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Text_Table + */ +require_once 'Zend/Text/Table.php'; + +/** + * @see Zend_Text_MultiByte + */ +require_once 'Zend/Text/MultiByte.php'; + +/** + * Column class for Zend_Text_Table_Row + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Table_Column +{ + /** + * Aligns for columns + */ + const ALIGN_LEFT = 'left'; + const ALIGN_CENTER = 'center'; + const ALIGN_RIGHT = 'right'; + + /** + * Content of the column + * + * @var string + */ + protected $_content = ''; + + /** + * Align of the column + * + * @var string + */ + protected $_align = self::ALIGN_LEFT; + + /** + * Colspan of the column + * + * @var integer + */ + protected $_colSpan = 1; + + /** + * Allowed align parameters + * + * @var array + */ + protected $_allowedAligns = array(self::ALIGN_LEFT, self::ALIGN_CENTER, self::ALIGN_RIGHT); + + /** + * Create a column for a Zend_Text_Table_Row object. + * + * @param string $content The content of the column + * @param string $align The align of the content + * @param integer $colSpan The colspan of the column + * @param string $charset The encoding of the content + */ + public function __construct($content = null, $align = null, $colSpan = null, $charset = null) + { + if ($content !== null) { + $this->setContent($content, $charset); + } + + if ($align !== null) { + $this->setAlign($align); + } + + if ($colSpan !== null) { + $this->setColSpan($colSpan); + } + } + + /** + * Set the content. + * + * If $charset is not defined, it is assumed that $content is encoded in + * the charset defined via Zend_Text_Table::setInputCharset() (defaults + * to utf-8). + * + * @param string $content Content of the column + * @param string $charset The charset of the content + * @throws Zend_Text_Table_Exception When $content is not a string + * @return Zend_Text_Table_Column + */ + public function setContent($content, $charset = null) + { + if (is_string($content) === false) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('$content must be a string'); + } + + if ($charset === null) { + $inputCharset = Zend_Text_Table::getInputCharset(); + } else { + $inputCharset = strtolower($charset); + } + + $outputCharset = Zend_Text_Table::getOutputCharset(); + + if ($inputCharset !== $outputCharset) { + if (PHP_OS !== 'AIX') { + // AIX does not understand these character sets + $content = iconv($inputCharset, $outputCharset, $content); + } + + } + + $this->_content = $content; + + return $this; + } + + /** + * Set the align + * + * @param string $align Align of the column + * @throws Zend_Text_Table_Exception When supplied align is invalid + * @return Zend_Text_Table_Column + */ + public function setAlign($align) + { + if (in_array($align, $this->_allowedAligns) === false) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('Invalid align supplied'); + } + + $this->_align = $align; + + return $this; + } + + /** + * Set the colspan + * + * @param int $colSpan + * @throws Zend_Text_Table_Exception When $colSpan is smaller than 1 + * @return Zend_Text_Table_Column + */ + public function setColSpan($colSpan) + { + if (is_int($colSpan) === false or $colSpan < 1) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('$colSpan must be an integer and greater than 0'); + } + + $this->_colSpan = $colSpan; + + return $this; + } + + /** + * Get the colspan + * + * @return integer + */ + public function getColSpan() + { + return $this->_colSpan; + } + + /** + * Render the column width the given column width + * + * @param integer $columnWidth The width of the column + * @param integer $padding The padding for the column + * @throws Zend_Text_Table_Exception When $columnWidth is lower than 1 + * @throws Zend_Text_Table_Exception When padding is greater than columnWidth + * @return string + */ + public function render($columnWidth, $padding = 0) + { + if (is_int($columnWidth) === false or $columnWidth < 1) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('$columnWidth must be an integer and greater than 0'); + } + + $columnWidth -= ($padding * 2); + + if ($columnWidth < 1) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('Padding (' . $padding . ') is greater than column width'); + } + + switch ($this->_align) { + case self::ALIGN_LEFT: + $padMode = STR_PAD_RIGHT; + break; + + case self::ALIGN_CENTER: + $padMode = STR_PAD_BOTH; + break; + + case self::ALIGN_RIGHT: + $padMode = STR_PAD_LEFT; + break; + + default: + // This can never happen, but the CS tells I have to have it ... + break; + } + + $outputCharset = Zend_Text_Table::getOutputCharset(); + $lines = explode("\n", Zend_Text_MultiByte::wordWrap($this->_content, $columnWidth, "\n", true, $outputCharset)); + $paddedLines = array(); + + foreach ($lines AS $line) { + $paddedLines[] = str_repeat(' ', $padding) + . Zend_Text_MultiByte::strPad($line, $columnWidth, ' ', $padMode, $outputCharset) + . str_repeat(' ', $padding); + } + + $result = implode("\n", $paddedLines); + + return $result; + } +} diff --git a/library/Zend/Text/Table/Decorator/Ascii.php b/library/Zend/Text/Table/Decorator/Ascii.php new file mode 100755 index 000000000..bfc6fb574 --- /dev/null +++ b/library/Zend/Text/Table/Decorator/Ascii.php @@ -0,0 +1,147 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Text_Table_Decorator_Interface + */ +require_once 'Zend/Text/Table/Decorator/Interface.php'; + +/** + * ASCII Decorator for Zend_Text_Table + * + * @category Zend + * @package Zend_Text_Table + * @uses Zend_Text_Table_Decorator_Interface + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Table_Decorator_Ascii implements Zend_Text_Table_Decorator_Interface +{ + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getTopLeft() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getTopRight() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getBottomLeft() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getBottomRight() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getVertical() + { + return '|'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getHorizontal() + { + return '-'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getCross() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getVerticalRight() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getVerticalLeft() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getHorizontalDown() + { + return '+'; + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getHorizontalUp() + { + return '+'; + } +} diff --git a/library/Zend/Text/Table/Decorator/Interface.php b/library/Zend/Text/Table/Decorator/Interface.php new file mode 100755 index 000000000..995d30399 --- /dev/null +++ b/library/Zend/Text/Table/Decorator/Interface.php @@ -0,0 +1,108 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Interface for Zend_Text_Table decorators + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Text_Table_Decorator_Interface +{ + /** + * Get a single character for the top left corner + * + * @return string + */ + public function getTopLeft(); + + /** + * Get a single character for the top right corner + * + * @return string + */ + public function getTopRight(); + + /** + * Get a single character for the bottom left corner + * + * @return string + */ + public function getBottomLeft(); + + /** + * Get a single character for the bottom right corner + * + * @return string + */ + public function getBottomRight(); + + /** + * Get a single character for a vertical line + * + * @return string + */ + public function getVertical(); + + /** + * Get a single character for a horizontal line + * + * @return string + */ + public function getHorizontal(); + + /** + * Get a single character for a crossing line + * + * @return string + */ + public function getCross(); + + /** + * Get a single character for a vertical divider right + * + * @return string + */ + public function getVerticalRight(); + + /** + * Get a single character for a vertical divider left + * + * @return string + */ + public function getVerticalLeft(); + + /** + * Get a single character for a horizontal divider down + * + * @return string + */ + public function getHorizontalDown(); + + /** + * Get a single character for a horizontal divider up + * + * @return string + */ + public function getHorizontalUp(); +} diff --git a/library/Zend/Text/Table/Decorator/Unicode.php b/library/Zend/Text/Table/Decorator/Unicode.php new file mode 100755 index 000000000..e736afdd1 --- /dev/null +++ b/library/Zend/Text/Table/Decorator/Unicode.php @@ -0,0 +1,176 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Text_Table_Decorator_Interface + */ +require_once 'Zend/Text/Table/Decorator/Interface.php'; + +/** + * Unicode Decorator for Zend_Text_Table + * + * @category Zend + * @package Zend_Text_Table + * @uses Zend_Text_Table_Decorator_Interface + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Table_Decorator_Unicode implements Zend_Text_Table_Decorator_Interface +{ + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getTopLeft() + { + return $this->_uniChar(0x250C); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getTopRight() + { + return $this->_uniChar(0x2510); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getBottomLeft() + { + return $this->_uniChar(0x2514); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getBottomRight() + { + return $this->_uniChar(0x2518); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getVertical() + { + return $this->_uniChar(0x2502); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getHorizontal() + { + return $this->_uniChar(0x2500); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getCross() + { + return $this->_uniChar(0x253C); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getVerticalRight() + { + return $this->_uniChar(0x251C); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getVerticalLeft() + { + return $this->_uniChar(0x2524); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getHorizontalDown() + { + return $this->_uniChar(0x252C); + } + + /** + * Defined by Zend_Text_Table_Decorator_Interface + * + * @return string + */ + public function getHorizontalUp() + { + return $this->_uniChar(0x2534); + } + + /** + * Convert am unicode character code to a character + * + * @param integer $code + * @return string|false + */ + protected function _uniChar($code) + { + if ($code <= 0x7F) { + $char = chr($code); + } else if ($code <= 0x7FF) { + $char = chr(0xC0 | $code >> 6) + . chr(0x80 | $code & 0x3F); + } else if ($code <= 0xFFFF) { + $char = chr(0xE0 | $code >> 12) + . chr(0x80 | $code >> 6 & 0x3F) + . chr(0x80 | $code & 0x3F); + } else if ($code <= 0x10FFFF) { + $char = chr(0xF0 | $code >> 18) + . chr(0x80 | $code >> 12 & 0x3F) + . chr(0x80 | $code >> 6 & 0x3F) + . chr(0x80 | $code & 0x3F); + } else { + return false; + } + + return $char; + } +} diff --git a/library/Zend/Text/Table/Exception.php b/library/Zend/Text/Table/Exception.php new file mode 100755 index 000000000..d39402f6d --- /dev/null +++ b/library/Zend/Text/Table/Exception.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Text_Exception + */ +require_once 'Zend/Text/Exception.php'; + +/** + * Exception class for Zend_Text_Table + * + * @category Zend + * @package Zend_Text_Table + * @uses Zend_Text_Exception + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Table_Exception extends Zend_Text_Exception +{ +} diff --git a/library/Zend/Text/Table/Row.php b/library/Zend/Text/Table/Row.php new file mode 100755 index 000000000..7af2bfc1f --- /dev/null +++ b/library/Zend/Text/Table/Row.php @@ -0,0 +1,215 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Row class for Zend_Text_Table + * + * @category Zend + * @package Zend_Text_Table + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Text_Table_Row +{ + /** + * List of all columns + * + * @var array + */ + protected $_columns = array(); + + /** + * Temporary stored column widths + * + * @var array + */ + protected $_columnWidths = null; + + /** + * Create a new column and append it to the row + * + * @param string $content + * @param array $options + * @return Zend_Text_Table_Row + */ + public function createColumn($content, array $options = null) + { + $align = null; + $colSpan = null; + $encoding = null; + + if ($options !== null) { + extract($options, EXTR_IF_EXISTS); + } + + require_once 'Zend/Text/Table/Column.php'; + + $column = new Zend_Text_Table_Column($content, $align, $colSpan, $encoding); + + $this->appendColumn($column); + + return $this; + } + + /** + * Append a column to the row + * + * @param Zend_Text_Table_Column $column The column to append to the row + * @return Zend_Text_Table_Row + */ + public function appendColumn(Zend_Text_Table_Column $column) + { + $this->_columns[] = $column; + + return $this; + } + + /** + * Get a column by it's index + * + * Returns null, when the index is out of range + * + * @param integer $index + * @return Zend_Text_Table_Column|null + */ + public function getColumn($index) + { + if (!isset($this->_columns[$index])) { + return null; + } + + return $this->_columns[$index]; + } + + /** + * Get all columns of the row + * + * @return array + */ + public function getColumns() + { + return $this->_columns; + } + + /** + * Get the widths of all columns, which were rendered last + * + * @throws Zend_Text_Table_Exception When no columns were rendered yet + * @return integer + */ + public function getColumnWidths() + { + if ($this->_columnWidths === null) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('No columns were rendered yet'); + } + + return $this->_columnWidths; + } + + /** + * Render the row + * + * @param array $columnWidths Width of all columns + * @param Zend_Text_Table_Decorator_Interface $decorator Decorator for the row borders + * @param integer $padding Padding for the columns + * @throws Zend_Text_Table_Exception When there are too many columns + * @return string + */ + public function render(array $columnWidths, + Zend_Text_Table_Decorator_Interface $decorator, + $padding = 0) + { + // Prepare an array to store all column widths + $this->_columnWidths = array(); + + // If there is no single column, create a column which spans over the + // entire row + if (count($this->_columns) === 0) { + require_once 'Zend/Text/Table/Column.php'; + $this->appendColumn(new Zend_Text_Table_Column(null, null, count($columnWidths))); + } + + // First we have to render all columns, to get the maximum height + $renderedColumns = array(); + $maxHeight = 0; + $colNum = 0; + foreach ($this->_columns as $column) { + // Get the colspan of the column + $colSpan = $column->getColSpan(); + + // Verify if there are enough column widths defined + if (($colNum + $colSpan) > count($columnWidths)) { + require_once 'Zend/Text/Table/Exception.php'; + throw new Zend_Text_Table_Exception('Too many columns'); + } + + // Calculate the column width + $columnWidth = ($colSpan - 1 + array_sum(array_slice($columnWidths, + $colNum, + $colSpan))); + + // Render the column and split it's lines into an array + $result = explode("\n", $column->render($columnWidth, $padding)); + + // Store the width of the rendered column + $this->_columnWidths[] = $columnWidth; + + // Store the rendered column and calculate the new max height + $renderedColumns[] = $result; + $maxHeight = max($maxHeight, count($result)); + + // Set up the internal column number + $colNum += $colSpan; + } + + // If the row doesnt contain enough columns to fill the entire row, fill + // it with an empty column + if ($colNum < count($columnWidths)) { + $remainingWidth = (count($columnWidths) - $colNum - 1) + + array_sum(array_slice($columnWidths, + $colNum)); + $renderedColumns[] = array(str_repeat(' ', $remainingWidth)); + + $this->_columnWidths[] = $remainingWidth; + } + + // Add each single column line to the result + $result = ''; + for ($line = 0; $line < $maxHeight; $line++) { + $result .= $decorator->getVertical(); + + foreach ($renderedColumns as $index => $renderedColumn) { + if (isset($renderedColumn[$line]) === true) { + $result .= $renderedColumn[$line]; + } else { + $result .= str_repeat(' ', $this->_columnWidths[$index]); + } + + $result .= $decorator->getVertical(); + } + + $result .= "\n"; + } + + return $result; + } +} diff --git a/library/Zend/TimeSync.php b/library/Zend/TimeSync.php new file mode 100755 index 000000000..bf56fe25a --- /dev/null +++ b/library/Zend/TimeSync.php @@ -0,0 +1,304 @@ +<?php + +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @version $Id$ + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * Zend_Date + */ +require_once 'Zend/Date.php'; + +/** + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_TimeSync implements IteratorAggregate +{ + /** + * Set the default timeserver protocol to "Ntp". This will be called + * when no protocol is specified + */ + const DEFAULT_PROTOCOL = 'Ntp'; + + /** + * Contains array of timeserver objects + * + * @var array + */ + protected $_timeservers = array(); + + /** + * Holds a reference to the timeserver that is currently being used + * + * @var object + */ + protected $_current; + + /** + * Allowed timeserver schemes + * + * @var array + */ + protected $_allowedSchemes = array( + 'Ntp', + 'Sntp' + ); + + /** + * Configuration array, set using the constructor or using + * ::setOptions() or ::setOption() + * + * @var array + */ + public static $options = array( + 'timeout' => 1 + ); + + /** + * Zend_TimeSync constructor + * + * @param string|array $target - OPTIONAL single timeserver, or an array of timeservers. + * @param string $alias - OPTIONAL an alias for this timeserver + * @return object + */ + public function __construct($target = null, $alias = null) + { + if ($target !== null) { + $this->addServer($target, $alias); + } + } + + /** + * getIterator() - return an iteratable object for use in foreach and the like, + * this completes the IteratorAggregate interface + * + * @return ArrayObject + */ + public function getIterator() + { + return new ArrayObject($this->_timeservers); + } + + /** + * Add a timeserver or multiple timeservers + * + * Server should be a single string representation of a timeserver, + * or a structured array listing multiple timeservers. + * + * If you provide an array of timeservers in the $target variable, + * $alias will be ignored. you can enter these as the array key + * in the provided array, which should be structured as follows: + * + * <code> + * $example = array( + * 'server_a' => 'ntp://127.0.0.1', + * 'server_b' => 'ntp://127.0.0.1:123', + * 'server_c' => 'ntp://[2000:364:234::2.5]', + * 'server_d' => 'ntp://[2000:364:234::2.5]:123' + * ); + * </code> + * + * If no port number has been suplied, the default matching port + * number will be used. + * + * Supported protocols are: + * - ntp + * - sntp + * + * @param string|array $target - Single timeserver, or an array of timeservers. + * @param string $alias - OPTIONAL an alias for this timeserver + * @throws Zend_TimeSync_Exception + */ + public function addServer($target, $alias = null) + { + if (is_array($target)) { + foreach ($target as $key => $server) { + $this->_addServer($server, $key); + } + } else { + $this->_addServer($target, $alias); + } + } + + /** + * Sets the value for the given options + * + * This will replace any currently defined options. + * + * @param array $options - An array of options to be set + */ + public static function setOptions(array $options) + { + foreach ($options as $key => $value) { + Zend_TimeSync::$options[$key] = $value; + } + } + + /** + * Marks a nameserver as current + * + * @param string|integer $alias - The alias from the timeserver to set as current + * @throws Zend_TimeSync_Exception + */ + public function setServer($alias) + { + if (isset($this->_timeservers[$alias]) === true) { + $this->_current = $this->_timeservers[$alias]; + } else { + require_once 'Zend/TimeSync/Exception.php'; + throw new Zend_TimeSync_Exception("'$alias' does not point to valid timeserver"); + } + } + + /** + * Returns the value to the option + * + * @param string $key - The option's identifier + * @return mixed + * @throws Zend_TimeSync_Exception + */ + public static function getOptions($key = null) + { + if ($key == null) { + return Zend_TimeSync::$options; + } + + if (isset(Zend_TimeSync::$options[$key]) === true) { + return Zend_TimeSync::$options[$key]; + } else { + require_once 'Zend/TimeSync/Exception.php'; + throw new Zend_TimeSync_Exception("'$key' does not point to valid option"); + } + } + + /** + * Return a specified timeserver by alias + * If no alias is given it will return the current timeserver + * + * @param string|integer $alias - The alias from the timeserver to return + * @return object + * @throws Zend_TimeSync_Exception + */ + public function getServer($alias = null) + { + if ($alias === null) { + if (isset($this->_current) && $this->_current !== false) { + return $this->_current; + } else { + require_once 'Zend/TimeSync/Exception.php'; + throw new Zend_TimeSync_Exception('there is no timeserver set'); + } + } + if (isset($this->_timeservers[$alias]) === true) { + return $this->_timeservers[$alias]; + } else { + require_once 'Zend/TimeSync/Exception.php'; + throw new Zend_TimeSync_Exception("'$alias' does not point to valid timeserver"); + } + } + + /** + * Returns information sent/returned from the current timeserver + * + * @return array + */ + public function getInfo() + { + return $this->getServer()->getInfo(); + } + + /** + * Query the timeserver list using the fallback mechanism + * + * If there are multiple servers listed, this method will act as a + * facade and will try to return the date from the first server that + * returns a valid result. + * + * @param Zend_Locale $locale - OPTIONAL locale + * @return object + * @throws Zend_TimeSync_Exception + */ + public function getDate($locale = null) + { + require_once 'Zend/TimeSync/Exception.php'; + foreach ($this->_timeservers as $alias => $server) { + $this->_current = $server; + try { + return $server->getDate($locale); + } catch (Zend_TimeSync_Exception $e) { + if (!isset($masterException)) { + $masterException = new Zend_TimeSync_Exception('all timeservers are bogus'); + } + $masterException->addException($e); + } + } + + throw $masterException; + } + + /** + * Adds a timeserver object to the timeserver list + * + * @param string|array $target - Single timeserver, or an array of timeservers. + * @param string $alias - An alias for this timeserver + */ + protected function _addServer($target, $alias) + { + if ($pos = strpos($target, '://')) { + $protocol = substr($target, 0, $pos); + $adress = substr($target, $pos + 3); + } else { + $adress = $target; + $protocol = self::DEFAULT_PROTOCOL; + } + + if ($pos = strrpos($adress, ':')) { + $posbr = strpos($adress, ']'); + if ($posbr and ($pos > $posbr)) { + $port = substr($adress, $pos + 1); + $adress = substr($adress, 0, $pos); + } else if (!$posbr and $pos) { + $port = substr($adress, $pos + 1); + $adress = substr($adress, 0, $pos); + } else { + $port = null; + } + } else { + $port = null; + } + + $protocol = ucfirst(strtolower($protocol)); + if (!in_array($protocol, $this->_allowedSchemes)) { + require_once 'Zend/TimeSync/Exception.php'; + throw new Zend_TimeSync_Exception("'$protocol' is not a supported protocol"); + } + + $className = 'Zend_TimeSync_' . $protocol; + if (!class_exists($className)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($className); + } + $timeServerObj = new $className($adress, $port); + + $this->_timeservers[$alias] = $timeServerObj; + } +} diff --git a/library/Zend/TimeSync/Exception.php b/library/Zend/TimeSync/Exception.php new file mode 100755 index 000000000..55c0bfc4e --- /dev/null +++ b/library/Zend/TimeSync/Exception.php @@ -0,0 +1,64 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Exception + */ +require_once 'Zend/Exception.php'; + +/** + * Exception class for Zend_TimeSync + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_TimeSync_Exception extends Zend_Exception +{ + /** + * Contains array of exceptions thrown in queried server + * + * @var array + */ + protected $_exceptions; + + /** + * Adds an exception to the exception list + * + * @param Zend_TimeSync_Exception $exception New exteption to throw + * @return void + */ + public function addException(Zend_TimeSync_Exception $exception) + { + $this->_exceptions[] = $exception; + } + + /** + * Returns an array of exceptions that were thrown + * + * @return array + */ + public function get() + { + return $this->_exceptions; + } +} diff --git a/library/Zend/TimeSync/Ntp.php b/library/Zend/TimeSync/Ntp.php new file mode 100755 index 000000000..a0f26b43a --- /dev/null +++ b/library/Zend/TimeSync/Ntp.php @@ -0,0 +1,431 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_TimeSync_Protocol + */ +require_once 'Zend/TimeSync/Protocol.php'; + +/** + * NTP Protocol handling class + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_TimeSync_Ntp extends Zend_TimeSync_Protocol +{ + /** + * NTP port number (123) assigned by the Internet Assigned Numbers Authority + * + * @var integer + */ + protected $_port = 123; + + /** + * NTP class constructor, sets the timeserver and port number + * + * @param string $timeserver Adress of the timeserver to connect to + * @param integer $port (Optional) Port for this timeserver + */ + public function __construct($timeserver, $port = 123) + { + $this->_timeserver = 'udp://' . $timeserver; + if ($port !== null) { + $this->_port = $port; + } + } + + /** + * Prepare local timestamp for transmission in our request packet + * + * NTP timestamps are represented as a 64-bit fixed-point number, in + * seconds relative to 0000 UT on 1 January 1900. The integer part is + * in the first 32 bits and the fraction part in the last 32 bits + * + * @return string + */ + protected function _prepare() + { + $frac = microtime(); + $fracba = ($frac & 0xff000000) >> 24; + $fracbb = ($frac & 0x00ff0000) >> 16; + $fracbc = ($frac & 0x0000ff00) >> 8; + $fracbd = ($frac & 0x000000ff); + + $sec = (time() + 2208988800); + $secba = ($sec & 0xff000000) >> 24; + $secbb = ($sec & 0x00ff0000) >> 16; + $secbc = ($sec & 0x0000ff00) >> 8; + $secbd = ($sec & 0x000000ff); + + // Flags + $nul = chr(0x00); + $nulbyte = $nul . $nul . $nul . $nul; + $ntppacket = chr(0xd9) . $nul . chr(0x0a) . chr(0xfa); + + /* + * Root delay + * + * Indicates the total roundtrip delay to the primary reference + * source at the root of the synchronization subnet, in seconds + */ + $ntppacket .= $nul . $nul . chr(0x1c) . chr(0x9b); + + /* + * Clock Dispersion + * + * Indicates the maximum error relative to the primary reference source at the + * root of the synchronization subnet, in seconds + */ + $ntppacket .= $nul . chr(0x08) . chr(0xd7) . chr(0xff); + + /* + * ReferenceClockID + * + * Identifying the particular reference clock + */ + $ntppacket .= $nulbyte; + + /* + * The local time, in timestamp format, at the peer when its latest NTP message + * was sent. Contanis an integer and a fractional part + */ + $ntppacket .= chr($secba) . chr($secbb) . chr($secbc) . chr($secbd); + $ntppacket .= chr($fracba) . chr($fracbb) . chr($fracbc) . chr($fracbd); + + /* + * The local time, in timestamp format, at the peer. Contains an integer + * and a fractional part. + */ + $ntppacket .= $nulbyte; + $ntppacket .= $nulbyte; + + /* + * This is the local time, in timestamp format, when the latest NTP message from + * the peer arrived. Contanis an integer and a fractional part. + */ + $ntppacket .= $nulbyte; + $ntppacket .= $nulbyte; + + /* + * The local time, in timestamp format, at which the + * NTP message departed the sender. Contanis an integer + * and a fractional part. + */ + $ntppacket .= chr($secba) . chr($secbb) . chr($secbc) . chr($secbd); + $ntppacket .= chr($fracba) . chr($fracbb) . chr($fracbc) . chr($fracbd); + + return $ntppacket; + } + + /** + * Calculates a 32bit integer + * + * @param string $input + * @return integer + */ + protected function _getInteger($input) + { + $f1 = str_pad(ord($input[0]), 2, '0', STR_PAD_LEFT); + $f1 .= str_pad(ord($input[1]), 2, '0', STR_PAD_LEFT); + $f1 .= str_pad(ord($input[2]), 2, '0', STR_PAD_LEFT); + $f1 .= str_pad(ord($input[3]), 2, '0', STR_PAD_LEFT); + return (int) $f1; + } + + /** + * Calculates a 32bit signed fixed point number + * + * @param string $input + * @return float + */ + protected function _getFloat($input) + { + $f1 = str_pad(ord($input[0]), 2, '0', STR_PAD_LEFT); + $f1 .= str_pad(ord($input[1]), 2, '0', STR_PAD_LEFT); + $f1 .= str_pad(ord($input[2]), 2, '0', STR_PAD_LEFT); + $f1 .= str_pad(ord($input[3]), 2, '0', STR_PAD_LEFT); + $f2 = $f1 >> 17; + $f3 = ($f1 & 0x0001FFFF); + $f1 = $f2 . '.' . $f3; + return (float) $f1; + } + + /** + * Calculates a 64bit timestamp + * + * @param string $input + * @return float + */ + protected function _getTimestamp($input) + { + $f1 = (ord($input[0]) * pow(256, 3)); + $f1 += (ord($input[1]) * pow(256, 2)); + $f1 += (ord($input[2]) * pow(256, 1)); + $f1 += (ord($input[3])); + $f1 -= 2208988800; + + $f2 = (ord($input[4]) * pow(256, 3)); + $f2 += (ord($input[5]) * pow(256, 2)); + $f2 += (ord($input[6]) * pow(256, 1)); + $f2 += (ord($input[7])); + + return (float) ($f1 . "." . $f2); + } + + /** + * Reads the data returned from the timeserver + * + * This will return an array with binary data listing: + * + * @return array + * @throws Zend_TimeSync_Exception When timeserver can not be connected + */ + protected function _read() + { + $flags = ord(fread($this->_socket, 1)); + $info = stream_get_meta_data($this->_socket); + + if ($info['timed_out'] === true) { + fclose($this->_socket); + throw new Zend_TimeSync_Exception('could not connect to ' . + "'$this->_timeserver' on port '$this->_port', reason: 'server timed out'"); + } + + $result = array( + 'flags' => $flags, + 'stratum' => ord(fread($this->_socket, 1)), + 'poll' => ord(fread($this->_socket, 1)), + 'precision' => ord(fread($this->_socket, 1)), + 'rootdelay' => $this->_getFloat(fread($this->_socket, 4)), + 'rootdispersion' => $this->_getFloat(fread($this->_socket, 4)), + 'referenceid' => fread($this->_socket, 4), + 'referencestamp' => $this->_getTimestamp(fread($this->_socket, 8)), + 'originatestamp' => $this->_getTimestamp(fread($this->_socket, 8)), + 'receivestamp' => $this->_getTimestamp(fread($this->_socket, 8)), + 'transmitstamp' => $this->_getTimestamp(fread($this->_socket, 8)), + 'clientreceived' => microtime(true) + ); + + $this->_disconnect(); + return $result; + } + + /** + * Sends the NTP packet to the server + * + * @param string $data Data to send to the timeserver + * @return void + */ + protected function _write($data) + { + $this->_connect(); + + fwrite($this->_socket, $data); + stream_set_timeout($this->_socket, Zend_TimeSync::$options['timeout']); + } + + /** + * Extracts the binary data returned from the timeserver + * + * @param string|array $binary Data returned from the timeserver + * @return integer Difference in seconds + */ + protected function _extract($binary) + { + /* + * Leap Indicator bit 1100 0000 + * + * Code warning of impending leap-second to be inserted at the end of + * the last day of the current month. + */ + $leap = ($binary['flags'] & 0xc0) >> 6; + switch($leap) { + case 0: + $this->_info['leap'] = '0 - no warning'; + break; + + case 1: + $this->_info['leap'] = '1 - last minute has 61 seconds'; + break; + + case 2: + $this->_info['leap'] = '2 - last minute has 59 seconds'; + break; + + default: + $this->_info['leap'] = '3 - not syncronised'; + break; + } + + /* + * Version Number bit 0011 1000 + * + * This should be 3 (RFC 1305) + */ + $this->_info['version'] = ($binary['flags'] & 0x38) >> 3; + + /* + * Mode bit 0000 0111 + * + * Except in broadcast mode, an NTP association is formed when two peers + * exchange messages and one or both of them create and maintain an + * instantiation of the protocol machine, called an association. + */ + $mode = ($binary['flags'] & 0x07); + switch($mode) { + case 1: + $this->_info['mode'] = 'symetric active'; + break; + + case 2: + $this->_info['mode'] = 'symetric passive'; + break; + + case 3: + $this->_info['mode'] = 'client'; + break; + + case 4: + $this->_info['mode'] = 'server'; + break; + + case 5: + $this->_info['mode'] = 'broadcast'; + break; + + default: + $this->_info['mode'] = 'reserved'; + break; + } + + $ntpserviceid = 'Unknown Stratum ' . $binary['stratum'] . ' Service'; + + /* + * Reference Clock Identifier + * + * Identifies the particular reference clock. + */ + $refid = strtoupper($binary['referenceid']); + switch($binary['stratum']) { + case 0: + if (substr($refid, 0, 3) === 'DCN') { + $ntpserviceid = 'DCN routing protocol'; + } else if (substr($refid, 0, 4) === 'NIST') { + $ntpserviceid = 'NIST public modem'; + } else if (substr($refid, 0, 3) === 'TSP') { + $ntpserviceid = 'TSP time protocol'; + } else if (substr($refid, 0, 3) === 'DTS') { + $ntpserviceid = 'Digital Time Service'; + } + break; + + case 1: + if (substr($refid, 0, 4) === 'ATOM') { + $ntpserviceid = 'Atomic Clock (calibrated)'; + } else if (substr($refid, 0, 3) === 'VLF') { + $ntpserviceid = 'VLF radio'; + } else if ($refid === 'CALLSIGN') { + $ntpserviceid = 'Generic radio'; + } else if (substr($refid, 0, 4) === 'LORC') { + $ntpserviceid = 'LORAN-C radionavigation'; + } else if (substr($refid, 0, 4) === 'GOES') { + $ntpserviceid = 'GOES UHF environment satellite'; + } else if (substr($refid, 0, 3) === 'GPS') { + $ntpserviceid = 'GPS UHF satellite positioning'; + } + break; + + default: + $ntpserviceid = ord(substr($binary['referenceid'], 0, 1)); + $ntpserviceid .= '.'; + $ntpserviceid .= ord(substr($binary['referenceid'], 1, 1)); + $ntpserviceid .= '.'; + $ntpserviceid .= ord(substr($binary['referenceid'], 2, 1)); + $ntpserviceid .= '.'; + $ntpserviceid .= ord(substr($binary['referenceid'], 3, 1)); + break; + } + + $this->_info['ntpid'] = $ntpserviceid; + + /* + * Stratum + * + * Indicates the stratum level of the local clock + */ + switch($binary['stratum']) { + case 0: + $this->_info['stratum'] = 'undefined'; + break; + + case 1: + $this->_info['stratum'] = 'primary reference'; + break; + + default: + $this->_info['stratum'] = 'secondary reference'; + break; + } + + /* + * Indicates the total roundtrip delay to the primary reference source at the + * root of the synchronization subnet, in seconds. + * + * Both positive and negative values, depending on clock precision and skew, are + * possible. + */ + $this->_info['rootdelay'] = $binary['rootdelay']; + + /* + * Indicates the maximum error relative to the primary reference source at the + * root of the synchronization subnet, in seconds. + * + * Only positive values greater than zero are possible. + */ + $this->_info['rootdispersion'] = $binary['rootdispersion']; + + /* + * The roundtrip delay of the peer clock relative to the local clock + * over the network path between them, in seconds. + * + * Note that this variable can take on both positive and negative values, + * depending on clock precision and skew-error accumulation. + */ + $this->_info['roundtrip'] = $binary['receivestamp']; + $this->_info['roundtrip'] -= $binary['originatestamp']; + $this->_info['roundtrip'] -= $binary['transmitstamp']; + $this->_info['roundtrip'] += $binary['clientreceived']; + $this->_info['roundtrip'] /= 2; + + // The offset of the peer clock relative to the local clock, in seconds. + $this->_info['offset'] = $binary['receivestamp']; + $this->_info['offset'] -= $binary['originatestamp']; + $this->_info['offset'] += $binary['transmitstamp']; + $this->_info['offset'] -= $binary['clientreceived']; + $this->_info['offset'] /= 2; + $time = (time() - $this->_info['offset']); + + return $time; + } +} diff --git a/library/Zend/TimeSync/Protocol.php b/library/Zend/TimeSync/Protocol.php new file mode 100755 index 000000000..12dc6d9f9 --- /dev/null +++ b/library/Zend/TimeSync/Protocol.php @@ -0,0 +1,148 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Abstract class definition for all timeserver protocols + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_TimeSync_Protocol +{ + /** + * Holds the current socket connection + * + * @var array + */ + protected $_socket; + + /** + * Exceptions that might have occured + * + * @var array + */ + protected $_exceptions; + + /** + * Hostname for timeserver + * + * @var string + */ + protected $_timeserver; + + /** + * Holds information passed/returned from timeserver + * + * @var array + */ + protected $_info = array(); + + /** + * Abstract method that prepares the data to send to the timeserver + * + * @return mixed + */ + abstract protected function _prepare(); + + /** + * Abstract method that reads the data returned from the timeserver + * + * @return mixed + */ + abstract protected function _read(); + + /** + * Abstract method that writes data to to the timeserver + * + * @param string $data Data to write + * @return void + */ + abstract protected function _write($data); + + /** + * Abstract method that extracts the binary data returned from the timeserver + * + * @param string|array $data Data returned from the timeserver + * @return integer + */ + abstract protected function _extract($data); + + /** + * Connect to the specified timeserver. + * + * @return void + * @throws Zend_TimeSync_Exception When the connection failed + */ + protected function _connect() + { + $socket = @fsockopen($this->_timeserver, $this->_port, $errno, $errstr, + Zend_TimeSync::$options['timeout']); + if ($socket === false) { + throw new Zend_TimeSync_Exception('could not connect to ' . + "'$this->_timeserver' on port '$this->_port', reason: '$errstr'"); + } + + $this->_socket = $socket; + } + + /** + * Disconnects from the peer, closes the socket. + * + * @return void + */ + protected function _disconnect() + { + @fclose($this->_socket); + $this->_socket = null; + } + + /** + * Return information sent/returned from the timeserver + * + * @return array + */ + public function getInfo() + { + if (empty($this->_info) === true) { + $this->_write($this->_prepare()); + $timestamp = $this->_extract($this->_read()); + } + + return $this->_info; + } + + /** + * Query this timeserver without using the fallback mechanism + * + * @param string|Zend_Locale $locale (Optional) Locale + * @return Zend_Date + */ + public function getDate($locale = null) + { + $this->_write($this->_prepare()); + $timestamp = $this->_extract($this->_read()); + + $date = new Zend_Date($this, null, $locale); + return $date; + } +} diff --git a/library/Zend/TimeSync/Sntp.php b/library/Zend/TimeSync/Sntp.php new file mode 100755 index 000000000..e49d92932 --- /dev/null +++ b/library/Zend/TimeSync/Sntp.php @@ -0,0 +1,119 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_TimeSync_Protocol + */ +require_once 'Zend/TimeSync/Protocol.php'; + +/** + * SNTP Protocol handling class + * + * @category Zend + * @package Zend_TimeSync + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_TimeSync_Sntp extends Zend_TimeSync_Protocol +{ + /** + * Port number for this timeserver + * + * @var integer + */ + protected $_port = 37; + + /** + * Socket delay + * + * @var integer + */ + private $_delay; + + /** + * Class constructor, sets the timeserver and port number + * + * @param string $timeserver Timeserver to connect to + * @param integer $port Port of the timeserver when it differs from the default port + */ + public function __construct($timeserver, $port) + { + $this->_timeserver = 'udp://' . $timeserver; + if ($port !== null) { + $this->_port = $port; + } + } + + /** + * Prepares the data that will be send to the timeserver + * + * @return array + */ + protected function _prepare() + { + return "\n"; + } + + /** + * Reads the data returned from the timeserver + * + * @return string + */ + protected function _read() + { + $result = fread($this->_socket, 49); + $this->_delay = (($this->_delay - time()) / 2); + + return $result; + } + + /** + * Writes data to to the timeserver + * + * @param string $data Data to write to the timeserver + * @return void + */ + protected function _write($data) + { + $this->_connect(); + $this->_delay = time(); + fputs($this->_socket, $data); + } + + /** + * Extracts the data returned from the timeserver + * + * @param string $result Data to extract + * @return integer + */ + protected function _extract($result) + { + $dec = hexdec('7fffffff'); + $time = abs(($dec - hexdec(bin2hex($result))) - $dec); + $time -= 2208988800; + // Socket delay + $time -= $this->_delay; + + $this->_info['offset'] = $this->_delay; + + return $time; + } +} diff --git a/library/Zend/Tool/Framework/Action/Base.php b/library/Zend/Tool/Framework/Action/Base.php new file mode 100755 index 000000000..817c06c99 --- /dev/null +++ b/library/Zend/Tool/Framework/Action/Base.php @@ -0,0 +1,95 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Action_Interface + */ +require_once 'Zend/Tool/Framework/Action/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Action_Base implements Zend_Tool_Framework_Action_Interface +{ + + /** + * @var string + */ + protected $_name = null; + + /** + * constructor - + * + * @param unknown_type $options + */ + public function __construct($options = null) + { + if ($options !== null) { + if (is_string($options)) { + $this->setName($options); + } + // implement $options here in the future if this is needed + } + } + + /** + * setName() + * + * @param string $name + * @return Zend_Tool_Framework_Action_Base + */ + public function setName($name) + { + $this->_name = $name; + return $this; + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + if ($this->_name == null) { + $this->_name = $this->_parseName(); + } + return $this->_name; + } + + /** + * _parseName - internal method to determine the name of an action when one is not explicity provided. + * + * @param Zend_Tool_Framework_Action_Interface $action + * @return string + */ + protected function _parseName() + { + $className = get_class($this); + $actionName = substr($className, strrpos($className, '_')+1); + return $actionName; + } + +} diff --git a/library/Zend/Tool/Framework/Action/Exception.php b/library/Zend/Tool/Framework/Action/Exception.php new file mode 100755 index 000000000..e6a0b7925 --- /dev/null +++ b/library/Zend/Tool/Framework/Action/Exception.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Exception + */ +require_once 'Zend/Tool/Framework/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Action_Exception extends Zend_Tool_Framework_Exception +{ + +} diff --git a/library/Zend/Tool/Framework/Action/Interface.php b/library/Zend/Tool/Framework/Action/Interface.php new file mode 100755 index 000000000..17f1ddb9e --- /dev/null +++ b/library/Zend/Tool/Framework/Action/Interface.php @@ -0,0 +1,32 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Action_Interface +{ + public function getName(); +} diff --git a/library/Zend/Tool/Framework/Action/Repository.php b/library/Zend/Tool/Framework/Action/Repository.php new file mode 100755 index 000000000..38262c01e --- /dev/null +++ b/library/Zend/Tool/Framework/Action/Repository.php @@ -0,0 +1,138 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Action_Repository + implements Zend_Tool_Framework_Registry_EnabledInterface, IteratorAggregate, Countable +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + /** + * @var array + */ + protected $_actions = array(); + + /** + * setRegistry() + * + * @param Zend_Tool_Framework_Registry_Interface $registry + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + } + + /** + * addAction() + * + * @param Zend_Tool_Framework_Action_Interface $action + * @return Zend_Tool_Framework_Action_Repository + */ + public function addAction(Zend_Tool_Framework_Action_Interface $action, $overrideExistingAction = false) + { + $actionName = $action->getName(); + + if ($actionName == '' || $actionName == 'Base') { + require_once 'Zend/Tool/Framework/Action/Exception.php'; + throw new Zend_Tool_Framework_Action_Exception('An action name for the provided action could not be determined.'); + } + + if (!$overrideExistingAction && array_key_exists(strtolower($actionName), $this->_actions)) { + require_once 'Zend/Tool/Framework/Action/Exception.php'; + throw new Zend_Tool_Framework_Action_Exception('An action by the name ' . $actionName + . ' is already registered and $overrideExistingAction is set to false.'); + } + + $this->_actions[strtolower($actionName)] = $action; + return $this; + } + + /** + * process() - this is called when the client is done constructing (after init()) + * + * @return unknown + */ + public function process() + { + return null; + } + + /** + * getActions() - get all actions in the repository + * + * @return array + */ + public function getActions() + { + return $this->_actions; + } + + /** + * getAction() - get an action by a specific name + * + * @param string $actionName + * @return Zend_Tool_Framework_Action_Interface + */ + public function getAction($actionName) + { + if (!array_key_exists(strtolower($actionName), $this->_actions)) { + return null; + } + + return $this->_actions[strtolower($actionName)]; + } + + /** + * count() required by the Countable interface + * + * @return int + */ + public function count() + { + return count($this->_actions); + } + + /** + * getIterator() - get all actions, this supports the IteratorAggregate interface + * + * @return array + */ + public function getIterator() + { + return new ArrayIterator($this->_actions); + } + +} diff --git a/library/Zend/Tool/Framework/Client/Abstract.php b/library/Zend/Tool/Framework/Client/Abstract.php new file mode 100755 index 000000000..6f342f8e1 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Abstract.php @@ -0,0 +1,333 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Loader_Autoloader + */ +require_once 'Zend/Loader/Autoloader.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tool_Framework_Client_Abstract implements Zend_Tool_Framework_Registry_EnabledInterface +{ + + /** + * @var Zend_Tool_Framework_Registry + */ + protected $_registry = null; + + /** + * @var callback|null + */ + protected $_interactiveCallback = null; + + /** + * @var bool + */ + protected $_isInitialized = false; + + /** + * @var Zend_Log + */ + protected $_debugLogger = null; + + public function __construct($options = array()) + { + // require autoloader + Zend_Loader_Autoloader::getInstance(); + + // this might look goofy, but this is setting up the + // registry for dependency injection into the client + $registry = new Zend_Tool_Framework_Registry(); + $registry->setClient($this); + + // NOTE: at this moment, $this->_registry should contain the registry object + + if ($options) { + $this->setOptions($options); + } + } + + public function setOptions(Array $options) + { + foreach ($options as $optionName => $optionValue) { + $setMethodName = 'set' . $optionName; + if (method_exists($this, $setMethodName)) { + $this->{$setMethodName}($optionValue); + } + } + } + + /** + * getName() - Return the client name which can be used to + * query the manifest if need be. + * + * @return string The client name + */ + abstract public function getName(); + + /** + * initialized() - This will initialize the client for use + * + */ + public function initialize() + { + // if its already initialized, no need to initialize again + if ($this->_isInitialized) { + return; + } + + // run any preInit + $this->_preInit(); + + $manifest = $this->_registry->getManifestRepository(); + $manifest->addManifest(new Zend_Tool_Framework_Client_Manifest()); + + // setup the debug log + if (!$this->_debugLogger instanceof Zend_Log) { + require_once 'Zend/Log.php'; + require_once 'Zend/Log/Writer/Null.php'; + $this->_debugLogger = new Zend_Log(new Zend_Log_Writer_Null()); + } + + // let the loader load, then the repositories process whats been loaded + $this->_registry->getLoader()->load(); + + // process the action repository + $this->_registry->getActionRepository()->process(); + + // process the provider repository + $this->_registry->getProviderRepository()->process(); + + // process the manifest repository + $this->_registry->getManifestRepository()->process(); + + if ($this instanceof Zend_Tool_Framework_Client_Interactive_InputInterface) { + require_once 'Zend/Tool/Framework/Client/Interactive/InputHandler.php'; + } + + if ($this instanceof Zend_Tool_Framework_Client_Interactive_OutputInterface) { + $this->_registry->getResponse()->setContentCallback(array($this, 'handleInteractiveOutput')); + } + + } + + + /** + * This method should be implemented by the client implementation to + * construct and set custom inflectors, request and response objects. + */ + protected function _preInit() + { + } + + /** + * This method *must* be implemented by the client implementation to + * parse out and setup the request objects action, provider and parameter + * information. + */ + abstract protected function _preDispatch(); + + /** + * This method should be implemented by the client implementation to + * take the output of the response object and return it (in an client + * specific way) back to the Tooling Client. + */ + protected function _postDispatch() + { + } + + /** + * setRegistry() - Required by the Zend_Tool_Framework_Registry_EnabledInterface + * interface which ensures proper registry dependency resolution + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Client_Abstract + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * getRegistry(); + * + * @return Zend_Tool_Framework_Registry_Interface + */ + public function getRegistry() + { + return $this->_registry; + } + + /** + * hasInteractiveInput() - Convienence method for determining if this + * client can handle interactive input, and thus be able to run the + * promptInteractiveInput + * + * @return bool + */ + public function hasInteractiveInput() + { + return ($this instanceof Zend_Tool_Framework_Client_Interactive_InputInterface); + } + + public function promptInteractiveInput($inputRequest) + { + if (!$this->hasInteractiveInput()) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('promptInteractive() cannot be called on a non-interactive client.'); + } + + $inputHandler = new Zend_Tool_Framework_Client_Interactive_InputHandler(); + $inputHandler->setClient($this); + $inputHandler->setInputRequest($inputRequest); + return $inputHandler->handle(); + + } + + /** + * This method should be called in order to "handle" a Tooling Client + * request that has come to the client that has been implemented. + */ + public function dispatch() + { + $this->initialize(); + + try { + + $this->_preDispatch(); + + if ($this->_registry->getRequest()->isDispatchable()) { + + if ($this->_registry->getRequest()->getActionName() == null) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Client failed to setup the action name.'); + } + + if ($this->_registry->getRequest()->getProviderName() == null) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Client failed to setup the provider name.'); + } + + $this->_handleDispatch(); + + } + + } catch (Exception $exception) { + $this->_registry->getResponse()->setException($exception); + } + + $this->_postDispatch(); + } + + public function convertToClientNaming($string) + { + return $string; + } + + public function convertFromClientNaming($string) + { + return $string; + } + + protected function _handleDispatch() + { + // get the provider repository + $providerRepository = $this->_registry->getProviderRepository(); + + $request = $this->_registry->getRequest(); + + // get the dispatchable provider signature + $providerSignature = $providerRepository->getProviderSignature($request->getProviderName()); + + // get the actual provider + $provider = $providerSignature->getProvider(); + + // ensure that we can pretend if this is a pretend request + if ($request->isPretend() && (!$provider instanceof Zend_Tool_Framework_Provider_Pretendable)) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Dispatcher error - provider does not support pretend'); + } + + // get the action name + $actionName = $this->_registry->getRequest()->getActionName(); + $specialtyName = $this->_registry->getRequest()->getSpecialtyName(); + + if (!$actionableMethod = $providerSignature->getActionableMethodByActionName($actionName, $specialtyName)) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Dispatcher error - actionable method not found'); + } + + // get the actual method and param information + $methodName = $actionableMethod['methodName']; + $methodParameters = $actionableMethod['parameterInfo']; + + // get the provider params + $requestParameters = $this->_registry->getRequest()->getProviderParameters(); + + // @todo This seems hackish, determine if there is a better way + $callParameters = array(); + foreach ($methodParameters as $methodParameterName => $methodParameterValue) { + if (!array_key_exists($methodParameterName, $requestParameters) && $methodParameterValue['optional'] == false) { + if ($this instanceof Zend_Tool_Framework_Client_Interactive_InputInterface) { + $promptSting = $this->getMissingParameterPromptString($provider, $actionableMethod['action'], $methodParameterValue['name']); + $parameterPromptValue = $this->promptInteractiveInput($promptSting)->getContent(); + if ($parameterPromptValue == null) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Value supplied for required parameter "' . $methodParameterValue['name'] . '" is empty'); + } + $callParameters[] = $parameterPromptValue; + } else { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('A required parameter "' . $methodParameterValue['name'] . '" was not supplied.'); + } + } else { + $callParameters[] = (array_key_exists($methodParameterName, $requestParameters)) ? $requestParameters[$methodParameterName] : $methodParameterValue['default']; + } + } + + $this->_handleDispatchExecution($provider, $methodName, $callParameters); + } + + protected function _handleDispatchExecution($class, $methodName, $callParameters) + { + if (method_exists($class, $methodName)) { + call_user_func_array(array($class, $methodName), $callParameters); + } elseif (method_exists($class, $methodName . 'Action')) { + call_user_func_array(array($class, $methodName . 'Action'), $callParameters); + } else { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Not a supported method.'); + } + } + +} diff --git a/library/Zend/Tool/Framework/Client/Config.php b/library/Zend/Tool/Framework/Client/Config.php new file mode 100755 index 000000000..4cc726e78 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Config.php @@ -0,0 +1,244 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Config +{ + + protected $_configFilepath = null; + + /** + * @var Zend_Config + */ + protected $_config = null; + + /** + * @param array $options + */ + public function __config($options = array()) + { + if ($options) { + $this->setOptions($options); + } + } + + /** + * @param array $options + */ + public function setOptions(Array $options) + { + foreach ($options as $optionName => $optionValue) { + $setMethodName = 'set' . $optionName; + if (method_exists($this, $setMethodName)) { + $this->{$setMethodName}($optionValue); + } + } + } + + /** + * @param string $configFilepath + * @return Zend_Tool_Framework_Client_Config + */ + public function setConfigFilepath($configFilepath) + { + if (!file_exists($configFilepath)) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Provided path to config ' . $configFilepath . ' does not exist'); + } + + $this->_configFilepath = $configFilepath; + $this->loadConfig($configFilepath); + + return $this; + } + + /** + * Load the configuration from the given path. + * + * @param string $configFilepath + */ + protected function loadConfig($configFilepath) + { + $suffix = substr($configFilepath, -4); + + switch ($suffix) { + case '.ini': + require_once 'Zend/Config/Ini.php'; + $this->_config = new Zend_Config_Ini($configFilepath, null, array('allowModifications' => true)); + break; + case '.xml': + require_once 'Zend/Config/Xml.php'; + $this->_config = new Zend_Config_Xml($configFilepath, null, array('allowModifications' => true)); + break; + case '.php': + require_once 'Zend/Config.php'; + $this->_config = new Zend_Config(include $configFilepath, true); + break; + default: + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Unknown config file type ' + . $suffix . ' at location ' . $configFilepath + ); + } + } + + /** + * Return the filepath of the configuration. + * + * @return string + */ + public function getConfigFilepath() + { + return $this->_configFilepath; + } + + /** + * Get a configuration value. + * + * @param string $name + * @param string $defaultValue + * @return mixed + */ + public function get($name, $defaultValue=null) + { + return $this->getConfigInstance()->get($name, $defaultValue); + } + + /** + * Get a configuration value + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + return $this->getConfigInstance()->{$name}; + } + + /** + * Check if a configuration value isset. + * + * @param string $name + * @return boolean + */ + public function __isset($name) + { + if($this->exists() == false) { + return false; + } + return isset($this->getConfigInstance()->{$name}); + } + + /** + * @param string $name + */ + public function __unset($name) + { + unset($this->getConfigInstance()->$name); + } + + /** + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + return $this->getConfigInstance()->$name = $value; + } + + /** + * Check if the User profile has a configuration. + * + * @return bool + */ + public function exists() + { + return ($this->_config!==null); + } + + /** + * @throws Zend_Tool_Framework_Client_Exception + * @return Zend_Config + */ + public function getConfigInstance() + { + if(!$this->exists()) { + require_once "Zend/Tool/Framework/Client/Exception.php"; + throw new Zend_Tool_Framework_Client_Exception("Client has no persistent configuration."); + } + + return $this->_config; + } + + /** + * Save changes to the configuration into persistence. + * + * @return bool + */ + public function save() + { + if($this->exists()) { + $writer = $this->getConfigWriter(); + $writer->write($this->getConfigFilepath(), $this->getConfigInstance(), true); + $this->loadConfig($this->getConfigFilepath()); + + return true; + } + return false; + } + + /** + * Get the config writer that corresponds to the current config file type. + * + * @return Zend_Config_Writer_FileAbstract + */ + protected function getConfigWriter() + { + $suffix = substr($this->getConfigFilepath(), -4); + switch($suffix) { + case '.ini': + require_once "Zend/Config/Writer/Ini.php"; + $writer = new Zend_Config_Writer_Ini(); + $writer->setRenderWithoutSections(); + break; + case '.xml': + require_once "Zend/Config/Writer/Xml.php"; + $writer = new Zend_Config_Writer_Xml(); + break; + case '.php': + require_once "Zend/Config/Writer/Array.php"; + $writer = new Zend_Config_Writer_Array(); + break; + default: + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Unknown config file type ' + . $suffix . ' at location ' . $this->getConfigFilepath() + ); + } + return $writer; + } +} diff --git a/library/Zend/Tool/Framework/Client/Console.php b/library/Zend/Tool/Framework/Client/Console.php new file mode 100755 index 000000000..ed4338a60 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console.php @@ -0,0 +1,312 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Client_Abstract + */ +require_once 'Zend/Tool/Framework/Client/Abstract.php'; + +/** + * @see Zend_Tool_Framework_Client_Interactive_InputInterface + */ +require_once 'Zend/Tool/Framework/Client/Interactive/InputInterface.php'; + +/** + * @see Zend_Tool_Framework_Client_Interactive_OutputInterface + */ +require_once 'Zend/Tool/Framework/Client/Interactive/OutputInterface.php'; + +/** + * Zend_Tool_Framework_Client_Console - the CLI Client implementation for Zend_Tool_Framework + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * + * @todo methods need more API documentation. + */ +class Zend_Tool_Framework_Client_Console + extends Zend_Tool_Framework_Client_Abstract + implements Zend_Tool_Framework_Client_Interactive_InputInterface, + Zend_Tool_Framework_Client_Interactive_OutputInterface +{ + + /** + * @var array + */ + protected $_configOptions = null; + + /** + * @var array + */ + protected $_storageOptions = null; + + /** + * @var Zend_Filter_Word_CamelCaseToDash + */ + protected $_filterToClientNaming = null; + + /** + * @var Zend_Filter_Word_DashToCamelCase + */ + protected $_filterFromClientNaming = null; + + /** + * @var array + */ + protected $_classesToLoad = array(); + + /** + * main() - This is typically called from zf.php. This method is a + * self contained main() function. + * + */ + public static function main($options = array()) + { + $cliClient = new self($options); + $cliClient->dispatch(); + } + + /** + * getName() - return the name of the client, in this case 'console' + * + * @return string + */ + public function getName() + { + return 'console'; + } + + /** + * setConfigOptions() + * + * @param array $configOptions + */ + public function setConfigOptions($configOptions) + { + $this->_configOptions = $configOptions; + return $this; + } + + /** + * setStorageOptions() + * + * @param array $storageOptions + */ + public function setStorageOptions($storageOptions) + { + $this->_storageOptions = $storageOptions; + return $this; + } + + /** + * @param array $classesToLoad + */ + public function setClassesToLoad($classesToLoad) + { + $this->_classesToLoad = $classesToLoad; + return $this; + } + + /** + * _init() - Tasks processed before the constructor, generally setting up objects to use + * + */ + protected function _preInit() + { + $config = $this->_registry->getConfig(); + + if ($this->_configOptions != null) { + $config->setOptions($this->_configOptions); + } + + $storage = $this->_registry->getStorage(); + + if ($this->_storageOptions != null && isset($this->_storageOptions['directory'])) { + $storage->setAdapter( + new Zend_Tool_Framework_Client_Storage_Directory($this->_storageOptions['directory']) + ); + } + + // which classes are essential to initializing Zend_Tool_Framework_Client_Console + $classesToLoad = array( + 'Zend_Tool_Framework_Client_Console_Manifest', + 'Zend_Tool_Framework_System_Manifest' + ); + + if ($this->_classesToLoad) { + if (is_string($this->_classesToLoad)) { + $classesToLoad[] = $this->_classesToLoad; + } elseif (is_array($this->_classesToLoad)) { + $classesToLoad = array_merge($classesToLoad, $this->_classesToLoad); + } + } + + // add classes to the basic loader from the config file basicloader.classes.1 .. + if (isset($config->basicloader) && isset($config->basicloader->classes)) { + foreach ($config->basicloader->classes as $classKey => $className) { + array_push($classesToLoad, $className); + } + } + + $this->_registry->setLoader( + new Zend_Tool_Framework_Loader_BasicLoader(array('classesToLoad' => $classesToLoad)) + ); + + return; + } + + /** + * _preDispatch() - Tasks handed after initialization but before dispatching + * + */ + protected function _preDispatch() + { + $response = $this->_registry->getResponse(); + + $response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_AlignCenter()); + $response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_Indention()); + $response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_Blockize()); + + if (function_exists('posix_isatty')) { + $response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_Colorizer()); + } + + $response->addContentDecorator(new Zend_Tool_Framework_Client_Response_ContentDecorator_Separator()) + ->setDefaultDecoratorOptions(array('separator' => true)); + + $optParser = new Zend_Tool_Framework_Client_Console_ArgumentParser(); + $optParser->setArguments($_SERVER['argv']) + ->setRegistry($this->_registry) + ->parse(); + + return; + } + + /** + * _postDispatch() - Tasks handled after dispatching + * + */ + protected function _postDispatch() + { + $request = $this->_registry->getRequest(); + $response = $this->_registry->getResponse(); + + if ($response->isException()) { + $helpSystem = new Zend_Tool_Framework_Client_Console_HelpSystem(); + $helpSystem->setRegistry($this->_registry) + ->respondWithErrorMessage($response->getException()->getMessage(), $response->getException()) + ->respondWithSpecialtyAndParamHelp( + $request->getProviderName(), + $request->getActionName() + ); + } + + echo PHP_EOL; + return; + } + + /** + * handleInteractiveInputRequest() is required by the Interactive InputInterface + * + * + * @param Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest + * @return string + */ + public function handleInteractiveInputRequest(Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest) + { + fwrite(STDOUT, $inputRequest->getContent() . PHP_EOL . 'zf> '); + $inputContent = fgets(STDIN); + return rtrim($inputContent); // remove the return from the end of the string + } + + /** + * handleInteractiveOutput() is required by the Interactive OutputInterface + * + * This allows us to display output immediately from providers, rather + * than displaying it after the provider is done. + * + * @param string $output + */ + public function handleInteractiveOutput($output) + { + echo $output; + } + + /** + * getMissingParameterPromptString() + * + * @param Zend_Tool_Framework_Provider_Interface $provider + * @param Zend_Tool_Framework_Action_Interface $actionInterface + * @param string $missingParameterName + * @return string + */ + public function getMissingParameterPromptString(Zend_Tool_Framework_Provider_Interface $provider, Zend_Tool_Framework_Action_Interface $actionInterface, $missingParameterName) + { + return 'Please provide a value for $' . $missingParameterName; + } + + + /** + * convertToClientNaming() + * + * Convert words to client specific naming, in this case is lower, dash separated + * + * Filters are lazy-loaded. + * + * @param string $string + * @return string + */ + public function convertToClientNaming($string) + { + if (!$this->_filterToClientNaming) { + $filter = new Zend_Filter(); + $filter->addFilter(new Zend_Filter_Word_CamelCaseToDash()); + $filter->addFilter(new Zend_Filter_StringToLower()); + + $this->_filterToClientNaming = $filter; + } + + return $this->_filterToClientNaming->filter($string); + } + + /** + * convertFromClientNaming() + * + * Convert words from client specific naming to code naming - camelcased + * + * Filters are lazy-loaded. + * + * @param string $string + * @return string + */ + public function convertFromClientNaming($string) + { + if (!$this->_filterFromClientNaming) { + $this->_filterFromClientNaming = new Zend_Filter_Word_DashToCamelCase(); + } + + return $this->_filterFromClientNaming->filter($string); + } + +} diff --git a/library/Zend/Tool/Framework/Client/Console/ArgumentParser.php b/library/Zend/Tool/Framework/Client/Console/ArgumentParser.php new file mode 100755 index 000000000..77d85c0f2 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/ArgumentParser.php @@ -0,0 +1,539 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Console_GetOpt + */ +require_once 'Zend/Console/Getopt.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Console_ArgumentParser implements Zend_Tool_Framework_Registry_EnabledInterface +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + /** + * Holds the manifest repository taken from the registry. + * + * @var Zend_Tool_Framework_Manifest_Repository + */ + protected $_manifestRepository = null; + + /** + * @var Zend_Tool_Framework_Client_Request + */ + protected $_request = null; + + /** + * @var Zend_Tool_Framework_Client_Response + */ + protected $_response = null; + + /**#@+ + * @var array + */ + protected $_argumentsOriginal = null; + protected $_argumentsWorking = null; + /**#@-*/ + + /** + * @var bool + */ + protected $_help = false; + protected $_helpKnownAction = false; + protected $_helpKnownProvider = false; + protected $_helpKnownSpecialty = false; + + + /** + * setArguments + * + * @param array $arguments + * @return Zend_Tool_Framework_Client_Console_ArgumentParser + */ + public function setArguments(Array $arguments) + { + $this->_argumentsOriginal = $this->_argumentsWorking = $arguments; + return $this; + } + + /** + * setRegistry() + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Client_Console_ArgumentParser + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + // get the client registry + $this->_registry = $registry; + + // set manifest repository, request, response for easy access + $this->_manifestRepository = $this->_registry->getManifestRepository(); + $this->_request = $this->_registry->getRequest(); + $this->_response = $this->_registry->getResponse(); + return $this; + } + + /** + * Parse() - This method does the work of parsing the arguments into the enpooint request, + * this will also (during help operations) fill the response in with information as needed + * + * @return null + */ + public function parse() + { + + if ($this->_request == null || $this->_response == null) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('The client registry must have both a request and response registered.'); + } + + // setup the help options + $helpResponseOptions = array(); + + // check to see if the first cli arg is the script name + if ($this->_argumentsWorking[0] == $_SERVER['SCRIPT_NAME' ]) { + array_shift($this->_argumentsWorking); + } + + // process global options + try { + $this->_parseGlobalPart(); + } catch (Zend_Tool_Framework_Client_Exception $exception) { + $this->_createHelpResponse(array('error' => $exception->getMessage())); + return; + } + + // ensure there are arguments left + if (count($this->_argumentsWorking) == 0) { + $this->_request->setDispatchable(false); // at this point request is not dispatchable + + // check to see if this was a help request + if ($this->_help) { + $this->_createHelpResponse(); + } else { + $this->_createHelpResponse(array('error' => 'An action and provider is required.')); + } + return; + } + + // process the action part of the command line + try { + $this->_parseActionPart(); + } catch (Zend_Tool_Framework_Client_Exception $exception) { + $this->_request->setDispatchable(false); + $this->_createHelpResponse(array('error' => $exception->getMessage())); + return; + } + + if ($this->_helpKnownAction) { + $helpResponseOptions = array_merge( + $helpResponseOptions, + array('actionName' => $this->_request->getActionName()) + ); + } + + /* @TODO Action Parameter Requirements */ + + // make sure there are more "words" on the command line + if (count($this->_argumentsWorking) == 0) { + $this->_request->setDispatchable(false); // at this point request is not dispatchable + + // check to see if this is a help request + if ($this->_help) { + $this->_createHelpResponse($helpResponseOptions); + } else { + $this->_createHelpResponse(array_merge($helpResponseOptions, array('error' => 'A provider is required.'))); + } + return; + } + + + // process the provider part of the command line + try { + $this->_parseProviderPart(); + } catch (Zend_Tool_Framework_Client_Exception $exception) { + $this->_request->setDispatchable(false); + $this->_createHelpResponse(array('error' => $exception->getMessage())); + return; + } + + if ($this->_helpKnownProvider) { + $helpResponseOptions = array_merge( + $helpResponseOptions, + array('providerName' => $this->_request->getProviderName()) + ); + } + + if ($this->_helpKnownSpecialty) { + $helpResponseOptions = array_merge( + $helpResponseOptions, + array('specialtyName' => $this->_request->getSpecialtyName()) + ); + } + + // if there are arguments on the command line, lets process them as provider options + if (count($this->_argumentsWorking) != 0) { + $this->_parseProviderOptionsPart(); + } + + // if there is still arguments lingering around, we can assume something is wrong + if (count($this->_argumentsWorking) != 0) { + $this->_request->setDispatchable(false); // at this point request is not dispatchable + if ($this->_help) { + $this->_createHelpResponse($helpResponseOptions); + } else { + $this->_createHelpResponse(array_merge( + $helpResponseOptions, + array('error' => 'Unknown arguments left on the command line: ' . implode(' ', $this->_argumentsWorking)) + )); + } + return; + } + + // everything was processed and this is a request for help information + if ($this->_help) { + $this->_request->setDispatchable(false); // at this point request is not dispatchable + $this->_createHelpResponse($helpResponseOptions); + } + + return; + } + + /** + * Internal routine for parsing global options from the command line + * + * @return null + */ + protected function _parseGlobalPart() + { + $getoptOptions = array(); + $getoptOptions['help|h'] = 'HELP'; + $getoptOptions['verbose|v'] = 'VERBOSE'; + $getoptOptions['pretend|p'] = 'PRETEND'; + $getoptOptions['debug|d'] = 'DEBUG'; + $getoptParser = new Zend_Console_Getopt($getoptOptions, $this->_argumentsWorking, array('parseAll' => false)); + + // @todo catch any exceptions here + $getoptParser->parse(); + + foreach ($getoptParser->getOptions() as $option) { + if ($option == 'pretend') { + $this->_request->setPretend(true); + } elseif ($option == 'debug') { + $this->_request->setDebug(true); + } elseif ($option == 'verbose') { + $this->_request->setVerbose(true); + } else { + $property = '_'.$option; + $this->{$property} = true; + } + } + + $this->_argumentsWorking = $getoptParser->getRemainingArgs(); + + return; + } + + /** + * Internal routine for parsing the action name from the arguments + * + * @return null + */ + protected function _parseActionPart() + { + // the next "word" should be the action name + $consoleActionName = array_shift($this->_argumentsWorking); + + if ($consoleActionName == '?') { + $this->_help = true; + return; + } + + $actionSearchCriteria = array( + 'type' => 'Tool', + 'name' => 'actionName', + 'value' => $consoleActionName, + 'clientName' => 'console' + ); + + // is the action name valid? + $actionMetadata = $this->_manifestRepository->getMetadata($actionSearchCriteria); + + // check for normalized names as well (all lower, no separators) + if (!$actionMetadata) { + $actionSearchCriteria['name'] = 'normalizedActionName'; + $actionSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleActionName)); + $actionSearchCriteria['clientName'] = 'all'; + $actionMetadata = $this->_manifestRepository->getMetadata($actionSearchCriteria); + } + + // if no action, handle error + if (!$actionMetadata) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('Action \'' . $consoleActionName . '\' is not a valid action.'); + } + + // prepare action request name + $this->_helpKnownAction = true; + $this->_request->setActionName($actionMetadata->getActionName()); + return; + } + + /** + * Internal routine for parsing the provider part of the command line arguments + * + * @return null + */ + protected function _parseProviderPart() + { + // get the cli "word" as the provider name from command line + $consoleProviderFull = array_shift($this->_argumentsWorking); + $consoleSpecialtyName = '_global'; + + // if there is notation for specialties? If so, break them up + if (strstr($consoleProviderFull, '.')) { + list($consoleProviderName, $consoleSpecialtyName) = explode('.', $consoleProviderFull); + } else { + $consoleProviderName = $consoleProviderFull; + } + + if ($consoleProviderName == '?') { + $this->_help = true; + return; + } + + $providerSearchCriteria = array( + 'type' => 'Tool', + 'name' => 'providerName', + 'value' => $consoleProviderName, + 'clientName' => 'console' + ); + + // get the cli provider names from the manifest + $providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria); + + // check for normalized names as well (all lower, no separators) + if (!$providerMetadata) { + $providerSearchCriteria['name'] = 'normalizedProviderName'; + $providerSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleProviderName)); + $providerSearchCriteria['clientName'] = 'all'; + $providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria); + } + + if (!$providerMetadata) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception( + 'Provider \'' . $consoleProviderFull . '\' is not a valid provider.' + ); + } + + $this->_helpKnownProvider = true; + $this->_request->setProviderName($providerMetadata->getProviderName()); + + if ($consoleSpecialtyName == '?') { + $this->_help = true; + return; + } + + $providerSpecialtySearchCriteria = array( + 'type' => 'Tool', + 'name' => 'specialtyName', + 'value' => $consoleSpecialtyName, + 'providerName' => $providerMetadata->getProviderName(), + 'clientName' => 'console' + ); + + $providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria); + + if (!$providerSpecialtyMetadata) { + $providerSpecialtySearchCriteria['name'] = 'normalizedSpecialtyName'; + $providerSpecialtySearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleSpecialtyName)); + $providerSpecialtySearchCriteria['clientName'] = 'all'; + $providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria); + } + + if (!$providerSpecialtyMetadata) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception( + 'Provider \'' . $consoleSpecialtyName . '\' is not a valid specialty.' + ); + } + + $this->_helpKnownSpecialty = true; + $this->_request->setSpecialtyName($providerSpecialtyMetadata->getSpecialtyName()); + return; + } + + /** + * Internal routine for parsing the provider options from the command line + * + * @return null + */ + protected function _parseProviderOptionsPart() + { + if (current($this->_argumentsWorking) == '?') { + $this->_help = true; + return; + } + + $searchParams = array( + 'type' => 'Tool', + 'providerName' => $this->_request->getProviderName(), + 'actionName' => $this->_request->getActionName(), + 'specialtyName' => $this->_request->getSpecialtyName(), + 'clientName' => 'console' + ); + + $actionableMethodLongParamsMetadata = $this->_manifestRepository->getMetadata( + array_merge($searchParams, array('name' => 'actionableMethodLongParams')) + ); + + $actionableMethodShortParamsMetadata = $this->_manifestRepository->getMetadata( + array_merge($searchParams, array('name' => 'actionableMethodShortParams')) + ); + + $paramNameShortValues = $actionableMethodShortParamsMetadata->getValue(); + + $getoptOptions = array(); + $wordArguments = array(); + $longParamCanonicalNames = array(); + + $actionableMethodLongParamsMetadataReference = $actionableMethodLongParamsMetadata->getReference(); + foreach ($actionableMethodLongParamsMetadata->getValue() as $parameterNameLong => $consoleParameterNameLong) { + $optionConfig = $consoleParameterNameLong . '|'; + + $parameterInfo = $actionableMethodLongParamsMetadataReference['parameterInfo'][$parameterNameLong]; + + // process ParameterInfo into array for command line option matching + if ($parameterInfo['type'] == 'string' || $parameterInfo['type'] == 'bool') { + $optionConfig .= $paramNameShortValues[$parameterNameLong] + . (($parameterInfo['optional']) ? '-' : '=') . 's'; + } elseif (in_array($parameterInfo['type'], array('int', 'integer', 'float'))) { + $optionConfig .= $paramNameShortValues[$parameterNameLong] + . (($parameterInfo['optional']) ? '-' : '=') . 'i'; + } else { + $optionConfig .= $paramNameShortValues[$parameterNameLong] . '-s'; + } + + $getoptOptions[$optionConfig] = ($parameterInfo['description'] != '') ? $parameterInfo['description'] : 'No description available.'; + + + // process ParameterInfo into array for command line WORD (argument) matching + $wordArguments[$parameterInfo['position']]['parameterName'] = $parameterInfo['name']; + $wordArguments[$parameterInfo['position']]['optional'] = $parameterInfo['optional']; + $wordArguments[$parameterInfo['position']]['type'] = $parameterInfo['type']; + + // keep a translation of console to canonical names + $longParamCanonicalNames[$consoleParameterNameLong] = $parameterNameLong; + } + + + if (!$getoptOptions) { + // no options to parse here, return + return; + } + + // if non-option arguments exist, attempt to process them before processing options + $wordStack = array(); + while (($wordOnTop = array_shift($this->_argumentsWorking))) { + if (substr($wordOnTop, 0, 1) != '-') { + array_push($wordStack, $wordOnTop); + } else { + // put word back on stack and move on + array_unshift($this->_argumentsWorking, $wordOnTop); + break; + } + + if (count($wordStack) == count($wordArguments)) { + // when we get at most the number of arguments we are expecting + // then break out. + break; + } + + } + + if ($wordStack && $wordArguments) { + for ($wordIndex = 1; $wordIndex <= count($wordArguments); $wordIndex++) { + if (!array_key_exists($wordIndex-1, $wordStack) || !array_key_exists($wordIndex, $wordArguments)) { + break; + } + $this->_request->setProviderParameter($wordArguments[$wordIndex]['parameterName'], $wordStack[$wordIndex-1]); + unset($wordStack[$wordIndex-1]); + } + } + + $getoptParser = new Zend_Console_Getopt($getoptOptions, $this->_argumentsWorking, array('parseAll' => false)); + $getoptParser->parse(); + foreach ($getoptParser->getOptions() as $option) { + $value = $getoptParser->getOption($option); + $providerParamOption = $longParamCanonicalNames[$option]; + $this->_request->setProviderParameter($providerParamOption, $value); + } + + $this->_argumentsWorking = $getoptParser->getRemainingArgs(); + + return; + } + + /** + * _createHelpResponse + * + * @param unknown_type $options + */ + protected function _createHelpResponse($options = array()) + { + require_once 'Zend/Tool/Framework/Client/Console/HelpSystem.php'; + $helpSystem = new Zend_Tool_Framework_Client_Console_HelpSystem(); + $helpSystem->setRegistry($this->_registry); + + if (isset($options['error'])) { + $helpSystem->respondWithErrorMessage($options['error']); + } + + if (isset($options['actionName']) && isset($options['providerName'])) { + $helpSystem->respondWithSpecialtyAndParamHelp($options['providerName'], $options['actionName']); + } elseif (isset($options['actionName'])) { + $helpSystem->respondWithActionHelp($options['actionName']); + } elseif (isset($options['providerName'])) { + $helpSystem->respondWithProviderHelp($options['providerName']); + } else { + $helpSystem->respondWithGeneralHelp(); + } + + } + +} diff --git a/library/Zend/Tool/Framework/Client/Console/HelpSystem.php b/library/Zend/Tool/Framework/Client/Console/HelpSystem.php new file mode 100755 index 000000000..42edea90b --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/HelpSystem.php @@ -0,0 +1,378 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Console_HelpSystem +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + /** + * @var Zend_Tool_Framework_Client_Response + */ + protected $_response = null; + + /** + * setRegistry() + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + $this->_response = $registry->getResponse(); + return $this; + } + + /** + * respondWithErrorMessage() + * + * @param string $errorMessage + * @param Exception $exception + */ + public function respondWithErrorMessage($errorMessage, Exception $exception = null) + { + // break apart the message into wrapped chunks + $errorMessages = explode(PHP_EOL, wordwrap($errorMessage, 70, PHP_EOL, false)); + + $text = 'An Error Has Occurred'; + $this->_response->appendContent($text, array('color' => array('hiWhite', 'bgRed'), 'aligncenter' => true)); + $this->_response->appendContent($errorMessage, array('indention' => 1, 'blockize' => 72, 'color' => array('white', 'bgRed'))); + + if ($exception && $this->_registry->getRequest()->isDebug()) { + $this->_response->appendContent($exception->getTraceAsString()); + } + + $this->_response->appendContent(null, array('separator' => true)); + return $this; + } + + /** + * respondWithGeneralHelp() + * + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + public function respondWithGeneralHelp() + { + $this->_respondWithHeader(); + + $noSeparator = array('separator' => false); + + $this->_response->appendContent('Usage:', array('color' => 'green')) + ->appendContent(' ', $noSeparator) + ->appendContent('zf', array_merge(array('color' => 'cyan'), $noSeparator)) + ->appendContent(' [--global-opts]', $noSeparator) + ->appendContent(' action-name', array_merge(array('color' => 'cyan'), $noSeparator)) + ->appendContent(' [--action-opts]', $noSeparator) + ->appendContent(' provider-name', array_merge(array('color' => 'cyan'), $noSeparator)) + ->appendContent(' [--provider-opts]', $noSeparator) + ->appendContent(' [provider parameters ...]') + ->appendContent(' Note: You may use "?" in any place of the above usage string to ask for more specific help information.', array('color'=>'yellow')) + ->appendContent(' Example: "zf ? version" will list all available actions for the version provider.', array('color'=>'yellow', 'separator' => 2)) + ->appendContent('Providers and their actions:', array('color' => 'green')); + + $this->_respondWithSystemInformation(); + return $this; + } + + /** + * respondWithActionHelp() + * + * @param string $actionName + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + public function respondWithActionHelp($actionName) + { + $this->_respondWithHeader(); + $this->_response->appendContent('Providers that support the action "' . $actionName . '"', array('color' => 'green')); + $this->_respondWithSystemInformation(null, $actionName); + return $this; + } + + /** + * respondWithSpecialtyAndParamHelp() + * + * @param string $providerName + * @param string $actionName + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + public function respondWithSpecialtyAndParamHelp($providerName, $actionName) + { + $this->_respondWithHeader(); + $this->_response->appendContent( + 'Details for action "' . $actionName . '" and provider "' . $providerName . '"', + array('color' => 'green') + ); + $this->_respondWithSystemInformation($providerName, $actionName, true); + return $this; + } + + /** + * respondWithProviderHelp() + * + * @param string $providerName + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + public function respondWithProviderHelp($providerName) + { + $this->_respondWithHeader(); + $this->_response->appendContent('Actions supported by provider "' . $providerName . '"', array('color' => 'green')); + $this->_respondWithSystemInformation($providerName); + return $this; + } + + /** + * _respondWithHeader() + * + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + protected function _respondWithHeader() + { + /** + * @see Zend_Version + */ + require_once 'Zend/Version.php'; + $this->_response->appendContent('Zend Framework', array('color' => array('hiWhite'), 'separator' => false)); + $this->_response->appendContent(' Command Line Console Tool v' . Zend_Version::VERSION . ''); + return $this; + } + + /** + * _respondWithSystemInformation() + * + * @param string $providerNameFilter + * @param string $actionNameFilter + * @param bool $includeAllSpecialties + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + protected function _respondWithSystemInformation($providerNameFilter = null, $actionNameFilter = null, $includeAllSpecialties = false) + { + $manifest = $this->_registry->getManifestRepository(); + + $providerMetadatasSearch = array( + 'type' => 'Tool', + 'name' => 'providerName', + 'clientName' => 'console' + ); + + if (is_string($providerNameFilter)) { + $providerMetadatasSearch = array_merge($providerMetadatasSearch, array('providerName' => $providerNameFilter)); + } + + $actionMetadatasSearch = array( + 'type' => 'Tool', + 'name' => 'actionName', + 'clientName' => 'console' + ); + + if (is_string($actionNameFilter)) { + $actionMetadatasSearch = array_merge($actionMetadatasSearch, array('actionName' => $actionNameFilter)); + } + + // get the metadata's for the things to display + $displayProviderMetadatas = $manifest->getMetadatas($providerMetadatasSearch); + $displayActionMetadatas = $manifest->getMetadatas($actionMetadatasSearch); + + // create index of actionNames + for ($i = 0; $i < count($displayActionMetadatas); $i++) { + $displayActionNames[] = $displayActionMetadatas[$i]->getActionName(); + } + + foreach ($displayProviderMetadatas as $providerMetadata) { + + $providerNameDisplayed = false; + + $providerName = $providerMetadata->getProviderName(); + $providerSignature = $providerMetadata->getReference(); + + foreach ($providerSignature->getActions() as $actionInfo) { + + $actionName = $actionInfo->getName(); + + // check to see if this action name is valid + if (($foundActionIndex = array_search($actionName, $displayActionNames)) === false) { + continue; + } else { + $actionMetadata = $displayActionMetadatas[$foundActionIndex]; + } + + $specialtyMetadata = $manifest->getMetadata(array( + 'type' => 'Tool', + 'name' => 'specialtyName', + 'providerName' => $providerName, + 'specialtyName' => '_Global', + 'clientName' => 'console' + )); + + // lets do the main _Global action first + $actionableGlobalLongParamMetadata = $manifest->getMetadata(array( + 'type' => 'Tool', + 'name' => 'actionableMethodLongParams', + 'providerName' => $providerName, + 'specialtyName' => '_Global', + 'actionName' => $actionName, + 'clientName' => 'console' + )); + + $actionableGlobalMetadatas = $manifest->getMetadatas(array( + 'type' => 'Tool', + 'name' => 'actionableMethodLongParams', + 'providerName' => $providerName, + 'actionName' => $actionName, + 'clientName' => 'console' + )); + + if ($actionableGlobalLongParamMetadata) { + + if (!$providerNameDisplayed) { + $this->_respondWithProviderName($providerMetadata); + $providerNameDisplayed = true; + } + + $this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableGlobalLongParamMetadata); + + $actionIsGlobal = true; + } else { + $actionIsGlobal = false; + } + + // check for providers without a _Global action + $isSingleSpecialProviderAction = false; + if (!$actionIsGlobal && count($actionableGlobalMetadatas) == 1) { + $isSingleSpecialProviderAction = true; + $this->_respondWithProviderName($providerMetadata); + $providerNameDisplayed = true; + } + + if ($includeAllSpecialties || $isSingleSpecialProviderAction) { + + foreach ($providerSignature->getSpecialties() as $specialtyName) { + + if ($specialtyName == '_Global') { + continue; + } + + $specialtyMetadata = $manifest->getMetadata(array( + 'type' => 'Tool', + 'name' => 'specialtyName', + 'providerName' => $providerMetadata->getProviderName(), + 'specialtyName' => $specialtyName, + 'clientName' => 'console' + )); + + $actionableSpecialtyLongMetadata = $manifest->getMetadata(array( + 'type' => 'Tool', + 'name' => 'actionableMethodLongParams', + 'providerName' => $providerMetadata->getProviderName(), + 'specialtyName' => $specialtyName, + 'actionName' => $actionName, + 'clientName' => 'console' + )); + + if($actionableSpecialtyLongMetadata) { + $this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableSpecialtyLongMetadata); + } + + } + } + + // reset the special flag for single provider action with specialty + $isSingleSpecialProviderAction = false; + + if (!$includeAllSpecialties && count($actionableGlobalMetadatas) > 1) { + $this->_response->appendContent(' Note: There are specialties, use ', array('color' => 'yellow', 'separator' => false)); + $this->_response->appendContent( + 'zf ' . $actionMetadata->getValue() . ' ' . $providerMetadata->getValue() . '.?', + array('color' => 'cyan', 'separator' => false) + ); + $this->_response->appendContent(' to get specific help on them.', array('color' => 'yellow')); + } + + } + + if ($providerNameDisplayed) { + $this->_response->appendContent(null, array('separator' => true)); + } + } + return $this; + } + + /** + * _respondWithProviderName() + * + * @param Zend_Tool_Framework_Metadata_Tool $providerMetadata + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + protected function _respondWithProviderName(Zend_Tool_Framework_Metadata_Tool $providerMetadata) + { + $this->_response->appendContent(' ' . $providerMetadata->getProviderName()); + return $this; + } + + /** + * _respondWithCommand() + * + * @param Zend_Tool_Framework_Metadata_Tool $providerMetadata + * @param Zend_Tool_Framework_Metadata_Tool $actionMetadata + * @param Zend_Tool_Framework_Metadata_Tool $specialtyMetadata + * @param Zend_Tool_Framework_Metadata_Tool $parameterLongMetadata + * @return Zend_Tool_Framework_Client_Console_HelpSystem + */ + protected function _respondWithCommand( + Zend_Tool_Framework_Metadata_Tool $providerMetadata, + Zend_Tool_Framework_Metadata_Tool $actionMetadata, + Zend_Tool_Framework_Metadata_Tool $specialtyMetadata, + Zend_Tool_Framework_Metadata_Tool $parameterLongMetadata)//, + //Zend_Tool_Framework_Metadata_Tool $parameterShortMetadata) + { + $this->_response->appendContent( + ' zf ' . $actionMetadata->getValue() . ' ' . $providerMetadata->getValue(), + array('color' => 'cyan', 'separator' => false) + ); + + if ($specialtyMetadata->getSpecialtyName() != '_Global') { + $this->_response->appendContent('.' . $specialtyMetadata->getValue(), array('color' => 'cyan', 'separator' => false)); + } + + foreach ($parameterLongMetadata->getValue() as $paramName => $consoleParamName) { + $methodInfo = $parameterLongMetadata->getReference(); + $paramString = ' ' . $consoleParamName; + if ( ($defaultValue = $methodInfo['parameterInfo'][$paramName]['default']) != null) { + $paramString .= '[=' . $defaultValue . ']'; + } + $this->_response->appendContent($paramString . '', array('separator' => false)); + } + + $this->_response->appendContent(null, array('separator' => true)); + return $this; + } + +} diff --git a/library/Zend/Tool/Framework/Client/Console/Manifest.php b/library/Zend/Tool/Framework/Client/Console/Manifest.php new file mode 100755 index 000000000..db592db93 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/Manifest.php @@ -0,0 +1,209 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Manifest_MetadataManifestable + */ +require_once 'Zend/Tool/Framework/Manifest/MetadataManifestable.php'; + +/** + * @see Zend_Filter + */ +require_once 'Zend/Filter.php'; + +/** + * @see Zend_Filter_Word_CamelCaseToDash + */ +require_once 'Zend/Filter/Word/CamelCaseToDash.php'; + +/** + * @see Zend_Filter_StringToLower + */ +require_once 'Zend/Filter/StringToLower.php'; + +/** + * @see Zend_Tool_Framework_Metadata_Tool + */ +require_once 'Zend/Tool/Framework/Metadata/Tool.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * Zend_Tool_Framework_Client_ConsoleClient_Manifest + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Console_Manifest + implements Zend_Tool_Framework_Registry_EnabledInterface, + Zend_Tool_Framework_Manifest_MetadataManifestable +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + /** + * setRegistry() - Required for the Zend_Tool_Framework_Registry_EnabledInterface interface + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Client_Console_Manifest + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * getMetadata() is required by the Manifest Interface. + * + * These are the following metadatas that will be setup: + * + * actionName + * - metadata for actions + * - value will be a dashed name for the action named in 'actionName' + * providerName + * - metadata for providers + * - value will be a dashed-name for the provider named in 'providerName' + * providerSpecialtyNames + * - metadata for providers + * actionableMethodLongParameters + * - metadata for providers + * actionableMethodShortParameters + * - metadata for providers + * + * @return array Array of Metadatas + */ + public function getMetadata() + { + $metadatas = array(); + + // setup the camelCase to dashed filter to use since cli expects dashed named + $ccToDashedFilter = new Zend_Filter(); + $ccToDashedFilter + ->addFilter(new Zend_Filter_Word_CamelCaseToDash()) + ->addFilter(new Zend_Filter_StringToLower()); + + // get the registry to get the action and provider repository + $actionRepository = $this->_registry->getActionRepository(); + $providerRepository = $this->_registry->getProviderRepository(); + + // loop through all actions and create a metadata for each + foreach ($actionRepository->getActions() as $action) { + // each action metadata will be called + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'actionName', + 'value' => $ccToDashedFilter->filter($action->getName()), + 'reference' => $action, + 'actionName' => $action->getName(), + 'clientName' => 'console', + 'clientReference' => $this->_registry->getClient() + )); + } + + foreach ($providerRepository->getProviderSignatures() as $providerSignature) { + + // create the metadata for the provider's cliProviderName + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'providerName', + 'value' => $ccToDashedFilter->filter($providerSignature->getName()), + 'reference' => $providerSignature, + 'clientName' => 'console', + 'providerName' => $providerSignature->getName(), + 'clientReference' => $this->_registry->getClient() + )); + + // create the metadatas for the per provider specialites in providerSpecaltyNames + foreach ($providerSignature->getSpecialties() as $specialty) { + + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'specialtyName', + 'value' => $ccToDashedFilter->filter($specialty), + 'reference' => $providerSignature, + 'clientName' => 'console', + 'providerName' => $providerSignature->getName(), + 'specialtyName' => $specialty, + 'clientReference' => $this->_registry->getClient() + )); + + } + + // $actionableMethod is keyed by the methodName (but not used) + foreach ($providerSignature->getActionableMethods() as $actionableMethodData) { + + $methodLongParams = array(); + $methodShortParams = array(); + + // $actionableMethodData get both the long and short names + foreach ($actionableMethodData['parameterInfo'] as $parameterInfoData) { + + // filter to dashed + $methodLongParams[$parameterInfoData['name']] = $ccToDashedFilter->filter($parameterInfoData['name']); + + // simply lower the character, (its only 1 char after all) + $methodShortParams[$parameterInfoData['name']] = strtolower($parameterInfoData['name'][0]); + + } + + // create metadata for the long name cliActionableMethodLongParameters + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'actionableMethodLongParams', + 'value' => $methodLongParams, + 'clientName' => 'console', + 'providerName' => $providerSignature->getName(), + 'specialtyName' => $actionableMethodData['specialty'], + 'actionName' => $actionableMethodData['actionName'], + 'reference' => &$actionableMethodData, + 'clientReference' => $this->_registry->getClient() + )); + + // create metadata for the short name cliActionableMethodShortParameters + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'actionableMethodShortParams', + 'value' => $methodShortParams, + 'clientName' => 'console', + 'providerName' => $providerSignature->getName(), + 'specialtyName' => $actionableMethodData['specialty'], + 'actionName' => $actionableMethodData['actionName'], + 'reference' => &$actionableMethodData, + 'clientReference' => $this->_registry->getClient() + )); + + } + + } + + return $metadatas; + } + + public function getIndex() + { + return 10000; + } + +} diff --git a/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/AlignCenter.php b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/AlignCenter.php new file mode 100755 index 000000000..09285d24e --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/AlignCenter.php @@ -0,0 +1,66 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php"; + +/** + * Try to align a given text central on the screen. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Tool_Framework_Client_Console_ResponseDecorator_AlignCenter + implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface +{ + public function getName() + { + return "aligncenter"; + } + + /** + * @param string $content + * @param integer $lineLength + */ + public function decorate($content, $lineLength) + { + if(!is_numeric($lineLength)) { + $lineLength = 72; + } + if(strlen($content) < $lineLength) { + $append = false; + $len = strlen($content); + for($i = $len; $i < $lineLength; $i++) { + if($append == true) { + $content = $content." "; + $append = false; + } else { + $content = " ".$content; + $append = true; + } + } + } + return $content; + } +} diff --git a/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Blockize.php b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Blockize.php new file mode 100755 index 000000000..a116bf5ab --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Blockize.php @@ -0,0 +1,69 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php"; + +/** + * Take a text and block it into several lines of a fixed length. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Tool_Framework_Client_Console_ResponseDecorator_Blockize + implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface +{ + public function getName() + { + return 'blockize'; + } + + /** + * + * @param string $content + * @param int $lineLength + * @return string + */ + public function decorate($content, $lineLength) + { + if(intval(strval($lineLength)) != $lineLength) { + $lineLength = 72; + } + + // break apart the message into wrapped chunks + $lines = explode(PHP_EOL, wordwrap($content, $lineLength, PHP_EOL, false)); + $content = array(); + foreach($lines AS $line) { + if(strlen(trim($line)) == 0) { + continue; + } + + if(strlen($line) < $lineLength) { + $line .= str_repeat(" ", $lineLength-strlen($line)); + } + $content[] = $line; + } + return implode(PHP_EOL, $content); + } +} diff --git a/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Colorizer.php b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Colorizer.php new file mode 100755 index 000000000..5d83feaee --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Colorizer.php @@ -0,0 +1,92 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Console_ResponseDecorator_Colorizer + implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface +{ + + protected $_colorOptions = array( + // blacks + 'black' => '30m', + 'hiBlack' => '1;30m', + 'bgBlack' => '40m', + // reds + 'red' => '31m', + 'hiRed' => '1;31m', + 'bgRed' => '41m', + // greens + 'green' => '32m', + 'hiGreen' => '1;32m', + 'bgGreen' => '42m', + // yellows + 'yellow' => '33m', + 'hiYellow' => '1;33m', + 'bgYellow' => '43m', + // blues + 'blue' => '34m', + 'hiBlue' => '1;34m', + 'bgBlue' => '44m', + // magentas + 'magenta' => '35m', + 'hiMagenta' => '1;35m', + 'bgMagenta' => '45m', + // cyans + 'cyan' => '36m', + 'hiCyan' => '1;36m', + 'bgCyan' => '46m', + // whites + 'white' => '37m', + 'hiWhite' => '1;37m', + 'bgWhite' => '47m' + ); + + public function getName() + { + return 'color'; + } + + public function decorate($content, $color) + { + if (is_string($color)) { + $color = array($color); + } + + $newContent = ''; + + foreach ($color as $c) { + if (array_key_exists($c, $this->_colorOptions)) { + $newContent .= "\033[" . $this->_colorOptions[$c]; + } + } + + $newContent .= $content . "\033[m"; + + return $newContent; + } + + +} diff --git a/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Indention.php b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Indention.php new file mode 100755 index 000000000..a1372af97 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Console/ResponseDecorator/Indention.php @@ -0,0 +1,56 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php"; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Console_ResponseDecorator_Indention + implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface +{ + public function getName() + { + return 'indention'; + } + + /** + * @param string $content + * @param integer $indention + */ + public function decorate($content, $indention) + { + if(strval(intval($indention)) != $indention) { + return $content; + } + + $newContent = ""; + $lines = preg_split('((\r\n|\r|\n)+)', $content); + $lineIndention = str_repeat(' ', $indention); + foreach($lines AS $line) { + $newContent .= $lineIndention.$line.PHP_EOL; + } + return rtrim($newContent); + } +} diff --git a/library/Zend/Tool/Framework/Client/Exception.php b/library/Zend/Tool/Framework/Client/Exception.php new file mode 100755 index 000000000..32b38f442 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Exception.php @@ -0,0 +1,36 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Exception + */ +require_once 'Zend/Tool/Framework/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Exception extends Zend_Tool_Framework_Exception +{ +} diff --git a/library/Zend/Tool/Framework/Client/Interactive/InputHandler.php b/library/Zend/Tool/Framework/Client/Interactive/InputHandler.php new file mode 100755 index 000000000..5e12d1222 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Interactive/InputHandler.php @@ -0,0 +1,74 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Interactive_InputHandler +{ + + /** + * @var Zend_Tool_Framework_Client_Interactive_InputInterface + */ + protected $_client = null; + + protected $_inputRequest = null; + + public function setClient(Zend_Tool_Framework_Client_Interactive_InputInterface $client) + { + $this->_client = $client; + return $this; + } + + public function setInputRequest($inputRequest) + { + if (is_string($inputRequest)) { + require_once 'Zend/Tool/Framework/Client/Interactive/InputRequest.php'; + $inputRequest = new Zend_Tool_Framework_Client_Interactive_InputRequest($inputRequest); + } elseif (!$inputRequest instanceof Zend_Tool_Framework_Client_Interactive_InputRequest) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('promptInteractive() requires either a string or an instance of Zend_Tool_Framework_Client_Interactive_InputRequest.'); + } + + $this->_inputRequest = $inputRequest; + return $this; + } + + public function handle() + { + $inputResponse = $this->_client->handleInteractiveInputRequest($this->_inputRequest); + + if (is_string($inputResponse)) { + require_once 'Zend/Tool/Framework/Client/Interactive/InputResponse.php'; + $inputResponse = new Zend_Tool_Framework_Client_Interactive_InputResponse($inputResponse); + } elseif (!$inputResponse instanceof Zend_Tool_Framework_Client_Interactive_InputResponse) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('The registered $_interactiveCallback for the client must either return a string or an instance of Zend_Tool_Framework_Client_Interactive_InputResponse.'); + } + + return $inputResponse; + } + + +} diff --git a/library/Zend/Tool/Framework/Client/Interactive/InputInterface.php b/library/Zend/Tool/Framework/Client/Interactive/InputInterface.php new file mode 100755 index 000000000..a12a833b5 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Interactive/InputInterface.php @@ -0,0 +1,41 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Client_Interactive_InputInterface +{ + + /** + * Handle Interactive Input Request + * + * @param Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest + * @return Zend_Tool_Framework_Client_Interactive_InputResponse|string + */ + public function handleInteractiveInputRequest(Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest); + + public function getMissingParameterPromptString(Zend_Tool_Framework_Provider_Interface $provider, Zend_Tool_Framework_Action_Interface $actionInterface, $missingParameterName); + +} diff --git a/library/Zend/Tool/Framework/Client/Interactive/InputRequest.php b/library/Zend/Tool/Framework/Client/Interactive/InputRequest.php new file mode 100755 index 000000000..5871bb169 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Interactive/InputRequest.php @@ -0,0 +1,54 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Interactive_InputRequest +{ + protected $_content = null; + + public function __construct($content = null) + { + if ($content) { + $this->setContent($content); + } + } + + public function setContent($content) + { + $this->_content = $content; + return $this; + } + + public function getContent() + { + return $this->_content; + } + + public function __toString() + { + return $this->_content; + } +} diff --git a/library/Zend/Tool/Framework/Client/Interactive/InputResponse.php b/library/Zend/Tool/Framework/Client/Interactive/InputResponse.php new file mode 100755 index 000000000..5a6804385 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Interactive/InputResponse.php @@ -0,0 +1,52 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Interactive_InputResponse +{ + + protected $_content = null; + + public function __construct($content = null) + { + if ($content) { + $this->setContent($content); + } + } + + public function setContent($content) + { + $this->_content = $content; + return $this; + } + + public function getContent() + { + return $this->_content; + } + + +} diff --git a/library/Zend/Tool/Framework/Client/Interactive/OutputInterface.php b/library/Zend/Tool/Framework/Client/Interactive/OutputInterface.php new file mode 100755 index 000000000..03ecfcc48 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Interactive/OutputInterface.php @@ -0,0 +1,33 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Client_Interactive_OutputInterface +{ + + public function handleInteractiveOutput($string); + +} diff --git a/library/Zend/Tool/Framework/Client/Manifest.php b/library/Zend/Tool/Framework/Client/Manifest.php new file mode 100755 index 000000000..5f66578ad --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Manifest.php @@ -0,0 +1,206 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Manifest_MetadataManifestable + */ +require_once 'Zend/Tool/Framework/Manifest/MetadataManifestable.php'; + +/** + * @see Zend_Filter + */ +require_once 'Zend/Filter.php'; + +/** + * @see Zend_Filter_Word_CamelCaseToDash + */ +require_once 'Zend/Filter/Word/CamelCaseToDash.php'; + +/** + * @see Zend_Filter_StringToLower + */ +require_once 'Zend/Filter/StringToLower.php'; + +/** + * @see Zend_Tool_Framework_Metadata_Tool + */ +require_once 'Zend/Tool/Framework/Metadata/Tool.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * Zend_Tool_Framework_Client_ConsoleClient_Manifest + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Manifest + implements Zend_Tool_Framework_Registry_EnabledInterface, + Zend_Tool_Framework_Manifest_MetadataManifestable +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + /** + * setRegistry() - Required for the Zend_Tool_Framework_Registry_EnabledInterface interface + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Client_Console_Manifest + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * getMetadata() is required by the Manifest Interface. + * + * These are the following metadatas that will be setup: + * + * normalizedActionName + * - metadata for actions + * - value will be a dashed name for the action named in 'actionName' + * normalizedProviderName + * - metadata for providers + * - value will be a dashed-name for the provider named in 'providerName' + * normalizedProviderSpecialtyNames + * - metadata for providers + * normalizedActionableMethodLongParameters + * - metadata for providers + * normalizedActionableMethodShortParameters + * - metadata for providers + * + * @return array Array of Metadatas + */ + public function getMetadata() + { + $metadatas = array(); + + // setup the camelCase to dashed filter to use since cli expects dashed named + $lowerFilter = new Zend_Filter(); + $lowerFilter->addFilter(new Zend_Filter_StringToLower()); + + // get the registry to get the action and provider repository + $actionRepository = $this->_registry->getActionRepository(); + $providerRepository = $this->_registry->getProviderRepository(); + + // loop through all actions and create a metadata for each + foreach ($actionRepository->getActions() as $action) { + // each action metadata will be called + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'normalizedActionName', + 'value' => $lowerFilter->filter($action->getName()), + 'reference' => $action, + 'actionName' => $action->getName(), + 'clientName' => 'all' + )); + } + + foreach ($providerRepository->getProviderSignatures() as $providerSignature) { + + // create the metadata for the provider's cliProviderName + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'normalizedProviderName', + 'value' => $lowerFilter->filter($providerSignature->getName()), + 'reference' => $providerSignature, + 'clientName' => 'all', + 'providerName' => $providerSignature->getName() + )); + + // create the metadatas for the per provider specialites in providerSpecaltyNames + foreach ($providerSignature->getSpecialties() as $specialty) { + + if ($specialty == '_Global') { + continue; + } + + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'normalizedSpecialtyName', + 'value' => $lowerFilter->filter($specialty), + 'reference' => $providerSignature, + 'clientName' => 'all', + 'providerName' => $providerSignature->getName(), + 'specialtyName' => $specialty + )); + + } + + // $actionableMethod is keyed by the methodName (but not used) + foreach ($providerSignature->getActionableMethods() as $actionableMethodData) { + + $methodLongParams = array(); + $methodShortParams = array(); + + // $actionableMethodData get both the long and short names + foreach ($actionableMethodData['parameterInfo'] as $parameterInfoData) { + + // filter to dashed + $methodLongParams[$parameterInfoData['name']] = $lowerFilter->filter($parameterInfoData['name']); + + // simply lower the character, (its only 1 char after all) + $methodShortParams[$parameterInfoData['name']] = strtolower($parameterInfoData['name'][0]); + + } + + // create metadata for the long name cliActionableMethodLongParameters + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'normalizedActionableMethodLongParams', + 'value' => $methodLongParams, + 'clientName' => 'console', + 'providerName' => $providerSignature->getName(), + 'specialtyName' => $actionableMethodData['specialty'], + 'actionName' => $actionableMethodData['actionName'], + 'reference' => &$actionableMethodData + )); + + // create metadata for the short name cliActionableMethodShortParameters + $metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array( + 'name' => 'normalizedActionableMethodShortParams', + 'value' => $methodShortParams, + 'clientName' => 'console', + 'providerName' => $providerSignature->getName(), + 'specialtyName' => $actionableMethodData['specialty'], + 'actionName' => $actionableMethodData['actionName'], + 'reference' => &$actionableMethodData + )); + + } + + } + + return $metadatas; + } + + public function getIndex() + { + return 100000; + } + +} diff --git a/library/Zend/Tool/Framework/Client/Request.php b/library/Zend/Tool/Framework/Client/Request.php new file mode 100755 index 000000000..c3896c680 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Request.php @@ -0,0 +1,299 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Request +{ + + /** + * @var string + */ + protected $_providerName = null; + + /** + * @var string + */ + protected $_specialtyName = null; + + /** + * @var string + */ + protected $_actionName = null; + + /** + * @var array + */ + protected $_actionParameters = array(); + + /** + * @var array + */ + protected $_providerParameters = array(); + + /** + * @var bool + */ + protected $_isPretend = false; + + /** + * @var bool + */ + protected $_isDebug = false; + + /** + * @var bool + */ + protected $_isVerbose = false; + + /** + * @var bool + */ + protected $_isDispatchable = true; + + /** + * setProviderName() + * + * @param string $providerName + * @return Zend_Tool_Framework_Client_Request + */ + public function setProviderName($providerName) + { + $this->_providerName = $providerName; + return $this; + } + + /** + * getProviderName() + * + * @return string + */ + public function getProviderName() + { + return $this->_providerName; + } + + /** + * setSpecialtyName() + * + * @param string $specialtyName + * @return Zend_Tool_Framework_Client_Request + */ + public function setSpecialtyName($specialtyName) + { + $this->_specialtyName = $specialtyName; + return $this; + } + + /** + * getSpecialtyName() + * + * @return string + */ + public function getSpecialtyName() + { + return $this->_specialtyName; + } + + /** + * setActionName() + * + * @param string $actionName + * @return Zend_Tool_Framework_Client_Request + */ + public function setActionName($actionName) + { + $this->_actionName = $actionName; + return $this; + } + + /** + * getActionName() + * + * @return string + */ + public function getActionName() + { + return $this->_actionName; + } + + /** + * setActionParameter() + * + * @param string $parameterName + * @param string $parameterValue + * @return Zend_Tool_Framework_Client_Request + */ + public function setActionParameter($parameterName, $parameterValue) + { + $this->_actionParameters[$parameterName] = $parameterValue; + return $this; + } + + /** + * getActionParameters() + * + * @return array + */ + public function getActionParameters() + { + return $this->_actionParameters; + } + + /** + * getActionParameter() + * + * @param string $parameterName + * @return string + */ + public function getActionParameter($parameterName) + { + return (isset($this->_actionParameters[$parameterName])) ? $this->_actionParameters[$parameterName] : null; + } + + /** + * setProviderParameter() + * + * @param string $parameterName + * @param string $parameterValue + * @return Zend_Tool_Framework_Client_Request + */ + public function setProviderParameter($parameterName, $parameterValue) + { + $this->_providerParameters[$parameterName] = $parameterValue; + return $this; + } + + /** + * getProviderParameters() + * + * @return array + */ + public function getProviderParameters() + { + return $this->_providerParameters; + } + + /** + * getProviderParameter() + * + * @param string $parameterName + * @return string + */ + public function getProviderParameter($parameterName) + { + return (isset($this->_providerParameters[$parameterName])) ? $this->_providerParameters[$parameterName] : null; + } + + /** + * setPretend() + * + * @param bool $pretend + * @return Zend_Tool_Framework_Client_Request + */ + public function setPretend($pretend) + { + $this->_isPretend = (bool) $pretend; + return $this; + } + + /** + * isPretend() - Whether or not this is a pretend request + * + * @return bool + */ + public function isPretend() + { + return $this->_isPretend; + } + + /** + * setDebug() + * + * @param bool $pretend + * @return Zend_Tool_Framework_Client_Request + */ + public function setDebug($debug) + { + $this->_isDebug = (bool) $debug; + return $this; + } + + /** + * isDebug() - Whether or not this is a debug enabled request + * + * @return bool + */ + public function isDebug() + { + return $this->_isDebug; + } + + /** + * setVerbose() + * + * @param bool $verbose + * @return Zend_Tool_Framework_Client_Request + */ + public function setVerbose($verbose) + { + $this->_isVerbose = (bool) $verbose; + return $this; + } + + /** + * isVerbose() - Whether or not this is a verbose enabled request + * + * @return bool + */ + public function isVerbose() + { + return $this->_isVerbose; + } + + /** + * setDispatchable() + * + * @param bool $dispatchable + * @return Zend_Tool_Framework_Client_Request + */ + public function setDispatchable($dispatchable) + { + $this->_isDispatchable = (bool) $dispatchable; + return $this; + } + + /** + * isDispatchable() Is this request Dispatchable? + * + * @return bool + */ + public function isDispatchable() + { + return $this->_isDispatchable; + } + +} diff --git a/library/Zend/Tool/Framework/Client/Response.php b/library/Zend/Tool/Framework/Client/Response.php new file mode 100755 index 000000000..97998da89 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Response.php @@ -0,0 +1,223 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Response +{ + /** + * @var callback|null + */ + protected $_callback = null; + + /** + * @var array + */ + protected $_content = array(); + + /** + * @var Zend_Tool_Framework_Exception + */ + protected $_exception = null; + + /** + * @var array + */ + protected $_decorators = array(); + + /** + * @var array + */ + protected $_defaultDecoratorOptions = array(); + + /** + * setContentCallback() + * + * @param callback $callback + * @return Zend_Tool_Framework_Client_Response + */ + public function setContentCallback($callback) + { + if (!is_callable($callback)) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('The callback provided is not callable'); + } + $this->_callback = $callback; + return $this; + } + + /** + * setContent() + * + * @param string $content + * @return Zend_Tool_Framework_Client_Response + */ + public function setContent($content, Array $decoratorOptions = array()) + { + $content = $this->_applyDecorators($content, $decoratorOptions); + + $this->_content = array(); + $this->appendContent($content); + return $this; + } + + /** + * appendCallback + * + * @param string $content + * @return Zend_Tool_Framework_Client_Response + */ + public function appendContent($content, Array $decoratorOptions = array()) + { + $content = $this->_applyDecorators($content, $decoratorOptions); + + if ($this->_callback !== null) { + call_user_func($this->_callback, $content); + } + + $this->_content[] = $content; + + return $this; + } + + /** + * setDefaultDecoratorOptions() + * + * @param array $decoratorOptions + * @param bool $mergeIntoExisting + * @return Zend_Tool_Framework_Client_Response + */ + public function setDefaultDecoratorOptions(Array $decoratorOptions, $mergeIntoExisting = false) + { + if ($mergeIntoExisting == false) { + $this->_defaultDecoratorOptions = array(); + } + + $this->_defaultDecoratorOptions = array_merge($this->_defaultDecoratorOptions, $decoratorOptions); + return $this; + } + + /** + * getContent() + * + * @return string + */ + public function getContent() + { + return implode('', $this->_content); + } + + /** + * isException() + * + * @return bool + */ + public function isException() + { + return isset($this->_exception); + } + + /** + * setException() + * + * @param Exception $exception + * @return Zend_Tool_Framework_Client_Response + */ + public function setException(Exception $exception) + { + $this->_exception = $exception; + return $this; + } + + /** + * getException() + * + * @return Exception + */ + public function getException() + { + return $this->_exception; + } + + /** + * Add Content Decorator + * + * @param Zend_Tool_Framework_Client_Response_ContentDecorator_Interface $contentDecorator + * @return unknown + */ + public function addContentDecorator(Zend_Tool_Framework_Client_Response_ContentDecorator_Interface $contentDecorator) + { + $decoratorName = strtolower($contentDecorator->getName()); + $this->_decorators[$decoratorName] = $contentDecorator; + return $this; + } + + /** + * getContentDecorators() + * + * @return array + */ + public function getContentDecorators() + { + return $this->_decorators; + } + + /** + * __toString() to cast to a string + * + * @return string + */ + public function __toString() + { + return (string) implode('', $this->_content); + } + + /** + * _applyDecorators() apply a group of decorators + * + * @param string $content + * @param array $decoratorOptions + * @return string + */ + protected function _applyDecorators($content, Array $decoratorOptions) + { + $options = array_merge($this->_defaultDecoratorOptions, $decoratorOptions); + + $options = array_change_key_case($options, CASE_LOWER); + + if ($options) { + foreach ($this->_decorators as $decoratorName => $decorator) { + if (array_key_exists($decoratorName, $options)) { + $content = $decorator->decorate($content, $options[$decoratorName]); + } + } + } + + return $content; + + } + +} diff --git a/library/Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php b/library/Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php new file mode 100755 index 000000000..ec29803da --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php @@ -0,0 +1,35 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Client_Response_ContentDecorator_Interface +{ + + public function getName(); + + public function decorate($content, $decoratorValue); + +} diff --git a/library/Zend/Tool/Framework/Client/Response/ContentDecorator/Separator.php b/library/Zend/Tool/Framework/Client/Response/ContentDecorator/Separator.php new file mode 100755 index 000000000..b6aa34fe8 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Response/ContentDecorator/Separator.php @@ -0,0 +1,93 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Client_Response_ContentDecorator_Interface + */ +require_once 'Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Response_ContentDecorator_Separator + implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface +{ + + /** + * @var string + */ + protected $_separator = PHP_EOL; + + /** + * getName() - name of the decorator + * + * @return string + */ + public function getName() + { + return 'separator'; + } + + /** + * setSeparator() + * + * @param string $separator + * @return Zend_Tool_Framework_Client_Response_ContentDecorator_Separator + */ + public function setSeparator($separator) + { + $this->_separator = $separator; + return $this; + } + + /** + * getSeparator() + * + * @return string + */ + public function getSeparator() + { + return $this->_separator; + } + + public function decorate($content, $decoratorValue) + { + $run = 1; + if (is_bool($decoratorValue) && $decoratorValue === false) { + return $content; + } + + if (is_int($decoratorValue)) { + $run = $decoratorValue; + } + + for ($i = 0; $i < $run; $i++) { + $content .= $this->_separator; + } + + return $content; + } + +} diff --git a/library/Zend/Tool/Framework/Client/Storage.php b/library/Zend/Tool/Framework/Client/Storage.php new file mode 100755 index 000000000..1d4ebe205 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Storage.php @@ -0,0 +1,117 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Client_Storage_AdapterInterface + */ +require_once 'Zend/Tool/Framework/Client/Storage/AdapterInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Storage +{ + + /** + * @var Zend_Tool_Framework_Client_Storage_AdapterInterface + */ + protected $_adapter = null; + + public function __construct($options = array()) + { + if (isset($options['adapter'])) { + $this->setAdapter($options['adapter']); + } + } + + public function setAdapter($adapter) + { + if (is_string($adapter)) { + $storageAdapterClass = 'Zend_Tool_Framework_Client_Storage_' . ucfirst($adapter); + Zend_Loader::loadClass($storageAdapterClass); + $adapter = new $storageAdapterClass(); + } + $this->_adapter = $adapter; + } + + public function isEnabled() + { + return ($this->_adapter instanceof Zend_Tool_Framework_Client_Storage_AdapterInterface); + } + + public function put($name, $value) + { + if (!$this->_adapter) { + return false; + } + + $this->_adapter->put($name, $value); + + return $this; + } + + public function get($name, $defaultValue = false) + { + if (!$this->_adapter) { + return false; + } + + if ($this->_adapter->has($name)) { + return $this->_adapter->get($name); + } else { + return $defaultValue; + } + + } + + public function has($name) + { + if (!$this->_adapter) { + return false; + } + + return $this->_adapter->has($name); + } + + public function remove($name) + { + if (!$this->_adapter) { + return false; + } + + $this->_adapter->remove($name); + + return $this; + } + + public function getStreamUri($name) + { + if (!$this->_adapter) { + return false; + } + + return $this->_adapter->getStreamUri($name); + } +} diff --git a/library/Zend/Tool/Framework/Client/Storage/AdapterInterface.php b/library/Zend/Tool/Framework/Client/Storage/AdapterInterface.php new file mode 100755 index 000000000..e3e717ab9 --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Storage/AdapterInterface.php @@ -0,0 +1,42 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Client_Storage_AdapterInterface +{ + + public function put($name, $value); + + public function get($name); + + public function has($name); + + public function remove($name); + + public function getStreamUri($name); + +} diff --git a/library/Zend/Tool/Framework/Client/Storage/Directory.php b/library/Zend/Tool/Framework/Client/Storage/Directory.php new file mode 100755 index 000000000..f211e1ebc --- /dev/null +++ b/library/Zend/Tool/Framework/Client/Storage/Directory.php @@ -0,0 +1,73 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Client_Storage_AdapterInterface + */ +require_once 'Zend/Tool/Framework/Client/Storage/AdapterInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Client_Storage_Directory + implements Zend_Tool_Framework_Client_Storage_AdapterInterface +{ + + protected $_directoryPath = null; + + public function __construct($directoryPath) + { + if (!file_exists($directoryPath)) { + throw new Zend_Tool_Framework_Client_Exception(__CLASS__ . ': the supplied directory does not exist'); + } + $this->_directoryPath = $directoryPath; + } + + public function put($name, $value) + { + return file_put_contents($this->_directoryPath . DIRECTORY_SEPARATOR . $name, $value); + } + + public function get($name) + { + return file_get_contents($this->_directoryPath . DIRECTORY_SEPARATOR . $name); + } + + public function has($name) + { + return file_exists($this->_directoryPath . DIRECTORY_SEPARATOR . $name); + } + + public function remove($name) + { + return unlink($this->_directoryPath . DIRECTORY_SEPARATOR . $name); + } + + public function getStreamUri($name) + { + return $this->_directoryPath . DIRECTORY_SEPARATOR . $name; + } + +} diff --git a/library/Zend/Tool/Framework/Exception.php b/library/Zend/Tool/Framework/Exception.php new file mode 100755 index 000000000..970243c9d --- /dev/null +++ b/library/Zend/Tool/Framework/Exception.php @@ -0,0 +1,36 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Exception + */ +require_once 'Zend/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Exception extends Zend_Exception +{ +} diff --git a/library/Zend/Tool/Framework/Loader/Abstract.php b/library/Zend/Tool/Framework/Loader/Abstract.php new file mode 100755 index 000000000..cb13d7713 --- /dev/null +++ b/library/Zend/Tool/Framework/Loader/Abstract.php @@ -0,0 +1,156 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +require_once 'Zend/Tool/Framework/Loader/Interface.php'; +require_once 'Zend/Tool/Framework/Manifest/Interface.php'; +require_once 'Zend/Tool/Framework/Provider/Interface.php'; + + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tool_Framework_Loader_Abstract + implements Zend_Tool_Framework_Loader_Interface, Zend_Tool_Framework_Registry_EnabledInterface +{ + /** + * @var Zend_Tool_Framework_Repository_Interface + */ + protected $_registry = null; + + /** + * @var array + */ + private $_retrievedFiles = array(); + + /** + * @var array + */ + private $_loadedClasses = array(); + + /** + * _getFiles + * + * @return array Array Of Files + */ + abstract protected function _getFiles(); + + /** + * setRegistry() - required by the enabled interface to get an instance of + * the registry + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Loader_Abstract + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * load() - called by the client initialize routine to load files + * + */ + public function load() + { + $this->_retrievedFiles = $this->getRetrievedFiles(); + $this->_loadedClasses = array(); + + $manifestRepository = $this->_registry->getManifestRepository(); + $providerRepository = $this->_registry->getProviderRepository(); + + $loadedClasses = array(); + + // loop through files and find the classes declared by loading the file + foreach ($this->_retrievedFiles as $file) { + if(is_dir($file)) { + continue; + } + + $classesLoadedBefore = get_declared_classes(); + $oldLevel = error_reporting(E_ALL | ~E_STRICT); // remove strict so that other packages wont throw warnings + // should we lint the files here? i think so + include_once $file; + error_reporting($oldLevel); // restore old error level + $classesLoadedAfter = get_declared_classes(); + $loadedClasses = array_merge($loadedClasses, array_diff($classesLoadedAfter, $classesLoadedBefore)); + } + + // loop through the loaded classes and ensure that + foreach ($loadedClasses as $loadedClass) { + + // reflect class to see if its something we want to load + $reflectionClass = new ReflectionClass($loadedClass); + if ($reflectionClass->implementsInterface('Zend_Tool_Framework_Manifest_Interface') + && !$reflectionClass->isAbstract()) + { + $manifestRepository->addManifest($reflectionClass->newInstance()); + $this->_loadedClasses[] = $loadedClass; + } + + if ($reflectionClass->implementsInterface('Zend_Tool_Framework_Provider_Interface') + && !$reflectionClass->isAbstract() + && !$providerRepository->hasProvider($reflectionClass->getName(), false)) + { + $providerRepository->addProvider($reflectionClass->newInstance()); + $this->_loadedClasses[] = $loadedClass; + } + + } + + return $this->_loadedClasses; + } + + /** + * getRetrievedFiles() + * + * @return array Array of Files Retrieved + */ + public function getRetrievedFiles() + { + if ($this->_retrievedFiles == null) { + $this->_retrievedFiles = $this->_getFiles(); + } + + return $this->_retrievedFiles; + } + + /** + * getLoadedClasses() + * + * @return array Array of Loaded Classes + */ + public function getLoadedClasses() + { + return $this->_loadedClasses; + } + + +} diff --git a/library/Zend/Tool/Framework/Loader/BasicLoader.php b/library/Zend/Tool/Framework/Loader/BasicLoader.php new file mode 100755 index 000000000..d65921c45 --- /dev/null +++ b/library/Zend/Tool/Framework/Loader/BasicLoader.php @@ -0,0 +1,157 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Loader_Abstract + */ +require_once 'Zend/Tool/Framework/Loader/Interface.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @see Zend_Loader + */ +require_once 'Zend/Loader.php'; +require_once 'Zend/Tool/Framework/Manifest/Interface.php'; +require_once 'Zend/Tool/Framework/Provider/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Loader_BasicLoader + implements Zend_Tool_Framework_Loader_Interface, Zend_Tool_Framework_Registry_EnabledInterface +{ + /** + * @var Zend_Tool_Framework_Repository_Interface + */ + protected $_registry = null; + + /** + * @var array + */ + protected $_classesToLoad = array(); + + public function __construct($options = array()) + { + if ($options) { + $this->setOptions($options); + } + } + + public function setOptions(Array $options) + { + foreach ($options as $optionName => $optionValue) { + $setMethod = 'set' . $optionName; + if (method_exists($this, $setMethod)) { + $this->{$setMethod}($optionValue); + } + } + } + + /** + * setRegistry() - required by the enabled interface to get an instance of + * the registry + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Loader_Abstract + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * @param array $classesToLoad + * @return Zend_Tool_Framework_Loader_Abstract + */ + public function setClassesToLoad(array $classesToLoad) + { + $this->_classesToLoad = $classesToLoad; + return $this; + } + + public function load() + { + $manifestRegistry = $this->_registry->getManifestRepository(); + $providerRegistry = $this->_registry->getProviderRepository(); + + $loadedClasses = array(); + + // loop through the loaded classes and ensure that + foreach ($this->_classesToLoad as $class) { + + if (!class_exists($class)) { + Zend_Loader::loadClass($class); + } + + // reflect class to see if its something we want to load + $reflectionClass = new ReflectionClass($class); + if ($this->_isManifestImplementation($reflectionClass)) { + $manifestRegistry->addManifest($reflectionClass->newInstance()); + $loadedClasses[] = $class; + } + + if ($this->_isProviderImplementation($reflectionClass)) { + $providerRegistry->addProvider($reflectionClass->newInstance()); + $loadedClasses[] = $class; + } + + } + + return $loadedClasses; + } + + /** + * @param ReflectionClass $reflectionClass + * @return bool + */ + private function _isManifestImplementation($reflectionClass) + { + return ( + $reflectionClass->implementsInterface('Zend_Tool_Framework_Manifest_Interface') + && !$reflectionClass->isAbstract() + ); + } + + /** + * @param ReflectionClass $reflectionClass + * @return bool + */ + private function _isProviderImplementation($reflectionClass) + { + $providerRegistry = $this->_registry->getProviderRepository(); + + return ( + $reflectionClass->implementsInterface('Zend_Tool_Framework_Provider_Interface') + && !$reflectionClass->isAbstract() + && !$providerRegistry->hasProvider($reflectionClass->getName(), false) + ); + } + +} diff --git a/library/Zend/Tool/Framework/Loader/IncludePathLoader.php b/library/Zend/Tool/Framework/Loader/IncludePathLoader.php new file mode 100755 index 000000000..237483538 --- /dev/null +++ b/library/Zend/Tool/Framework/Loader/IncludePathLoader.php @@ -0,0 +1,139 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Loader_Abstract + */ +require_once 'Zend/Tool/Framework/Loader/Abstract.php'; + +/** + * @see Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator + */ +require_once 'Zend/Tool/Framework/Loader/IncludePathLoader/RecursiveFilterIterator.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Loader_IncludePathLoader extends Zend_Tool_Framework_Loader_Abstract +{ + + /** + * _getFiles() + * + * @return array Array of files to load + */ + protected function _getFiles() + { + require_once 'Zend/Loader.php'; + $paths = Zend_Loader::explodeIncludePath(); + + // used for checking similarly named files + $relativeItems = array(); + $files = array(); + $isZendTraversed = false; + + foreach ($paths as $path) { + + // default patterns to use + $filterDenyDirectoryPattern = '.*(/|\\\\).svn'; + $filterAcceptFilePattern = '.*(?:Manifest|Provider)\.php$'; + + if (!file_exists($path) || $path[0] == '.') { + continue; + } + + $realIncludePath = realpath($path); + + // ensure that we only traverse a single version of Zend Framework on all include paths + if (file_exists($realIncludePath . '/Zend/Tool/Framework/Loader/IncludePathLoader.php')) { + if ($isZendTraversed === false) { + $isZendTraversed = true; + } else { + // use the deny directory pattern that includes the path to 'Zend', it will not be accepted + $filterDenyDirectoryPattern = '.*((/|\\\\).svn|' . preg_quote($realIncludePath . DIRECTORY_SEPARATOR) . 'Zend)'; + } + } + + // create recursive directory iterator + $rdi = new RecursiveDirectoryIterator($path); + + // pass in the RecursiveDirectoryIterator & the patterns + $filter = new Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator( + $rdi, + $filterDenyDirectoryPattern, + $filterAcceptFilePattern + ); + + // build the rii with the filter + $iterator = new RecursiveIteratorIterator($filter); + + // iterate over the accepted items + foreach ($iterator as $item) { + $file = (string)$item; + if($this->_fileIsBlacklisted($file)) { + continue; + } + + // ensure that the same named file from separate include_paths is not loaded + $relativeItem = preg_replace('#^' . preg_quote($realIncludePath . DIRECTORY_SEPARATOR, '#') . '#', '', $item->getRealPath()); + + // no links allowed here for now + if ($item->isLink()) { + continue; + } + + // no items that are relavitely the same are allowed + if (in_array($relativeItem, $relativeItems)) { + continue; + } + + $relativeItems[] = $relativeItem; + $files[] = $item->getRealPath(); + } + } + + return $files; + } + + /** + * + * @param string $file + * @return bool + */ + protected function _fileIsBlacklisted($file) + { + $blacklist = array( + "PHPUnit".DIRECTORY_SEPARATOR."Framework", + "Zend".DIRECTORY_SEPARATOR."OpenId".DIRECTORY_SEPARATOR."Provider" + ); + + foreach($blacklist AS $blacklitedPattern) { + if(strpos($file, $blacklitedPattern) !== false) { + return true; + } + } + return false; + } +} diff --git a/library/Zend/Tool/Framework/Loader/IncludePathLoader/RecursiveFilterIterator.php b/library/Zend/Tool/Framework/Loader/IncludePathLoader/RecursiveFilterIterator.php new file mode 100755 index 000000000..50c9c7409 --- /dev/null +++ b/library/Zend/Tool/Framework/Loader/IncludePathLoader/RecursiveFilterIterator.php @@ -0,0 +1,91 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator extends RecursiveFilterIterator +{ + + protected $_denyDirectoryPattern = null; + protected $_acceptFilePattern = null; + + /** + * constructor + * + * @param RecursiveIterator $iterator + * @param string $denyDirectoryPattern + * @param string $acceptFilePattern + */ + public function __construct(RecursiveIterator $iterator, $denyDirectoryPattern = null, $acceptFilePattern = null) + { + $this->_denyDirectoryPattern = $denyDirectoryPattern; + $this->_acceptFilePattern = $acceptFilePattern; + parent::__construct($iterator); + } + + /** + * accept() - Which iterable items to accept or deny, required by FilterInterface + * + * @return unknown + */ + public function accept() + { + $currentNode = $this->current(); + $currentNodeRealPath = $currentNode->getRealPath(); + + // if the current node is a directory AND doesn't match the denyDirectory pattern, accept + if ($currentNode->isDir() + && !preg_match('#' . $this->_denyDirectoryPattern . '#', $currentNodeRealPath)) { + return true; + } + + // if the file matches the accept file pattern, accept + $acceptable = (preg_match('#' . $this->_acceptFilePattern . '#', $currentNodeRealPath)) ? true : false; + return $acceptable; + } + + /** + * getChildren() - overridden from RecursiveFilterIterator to allow the persistence of + * the $_denyDirectoryPattern and the $_acceptFilePattern when sub iterators of this filter + * are needed to be created. + * + * @return Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator + */ + public function getChildren() + { + if (empty($this->ref)) { + $this->ref = new ReflectionClass($this); + } + + return $this->ref->newInstance( + $this->getInnerIterator()->getChildren(), + $this->_denyDirectoryPattern, + $this->_acceptFilePattern + ); + } + +} + diff --git a/library/Zend/Tool/Framework/Loader/Interface.php b/library/Zend/Tool/Framework/Loader/Interface.php new file mode 100755 index 000000000..f734a7cc1 --- /dev/null +++ b/library/Zend/Tool/Framework/Loader/Interface.php @@ -0,0 +1,42 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Basic Interface for factilities that load Zend_Tool providers or manifests. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Loader_Interface +{ + /** + * Load Providers and Manifests + * + * Returns an array of all loaded class names. + * + * @return array + */ + public function load(); +} diff --git a/library/Zend/Tool/Framework/Manifest/ActionManifestable.php b/library/Zend/Tool/Framework/Manifest/ActionManifestable.php new file mode 100755 index 000000000..8306e6a15 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/ActionManifestable.php @@ -0,0 +1,47 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Manifest_Interface + */ +require_once 'Zend/Tool/Framework/Manifest/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Manifest_ActionManifestable extends Zend_Tool_Framework_Manifest_Interface +{ + + /** + * getActions() + * + * Should either return a single action, or an array + * of actions + * + * @return array|Zend_Tool_Framework_Action_Interface + */ + public function getActions(); + +} diff --git a/library/Zend/Tool/Framework/Manifest/ActionMetadata.php b/library/Zend/Tool/Framework/Manifest/ActionMetadata.php new file mode 100755 index 000000000..573ccc611 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/ActionMetadata.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Manifest_ActionMetadata +{ + +} diff --git a/library/Zend/Tool/Framework/Manifest/Exception.php b/library/Zend/Tool/Framework/Manifest/Exception.php new file mode 100755 index 000000000..479f2c2b3 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/Exception.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Exception + */ +require_once 'Zend/Tool/Framework/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Manifest_Exception extends Zend_Tool_Framework_Exception +{ + +} diff --git a/library/Zend/Tool/Framework/Manifest/Indexable.php b/library/Zend/Tool/Framework/Manifest/Indexable.php new file mode 100755 index 000000000..532c2ceb8 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/Indexable.php @@ -0,0 +1,42 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Manifest_Indexable extends Zend_Tool_Framework_Manifest_Interface +{ + + /** + * getActions() + * + * Should either return a single action, or an array + * of actions + * + * @return array|Zend_Tool_Framework_Action_Interface + */ + public function getIndex(); + +} diff --git a/library/Zend/Tool/Framework/Manifest/Interface.php b/library/Zend/Tool/Framework/Manifest/Interface.php new file mode 100755 index 000000000..81677a068 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/Interface.php @@ -0,0 +1,82 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Manifest_Interface +{ + + /** + * The following methods are completely optional, and any combination of them + * can be used as part of a manifest. The manifest repository will process + * the return values of these actions as specfied in the following method docblocks. + * + * Since these actions are + * + */ + + /** + * getMetadata() + * + * Should either return a single metadata object or an array + * of metadata objects + * + * @return array|Zend_Tool_Framework_Manifest_Metadata + ** + + public function getMetadata(); + + **/ + + + + /** + * getActions() + * + * Should either return a single action, or an array + * of actions + * + * @return array|Zend_Tool_Framework_Action_Interface + ** + + public function getActions(); + + **/ + + + + /** + * getProviders() + * + * Should either return a single provider or an array + * of providers + * + ** + + public function getProviders(); + + **/ + +} diff --git a/library/Zend/Tool/Framework/Manifest/Metadata.php b/library/Zend/Tool/Framework/Manifest/Metadata.php new file mode 100755 index 000000000..f816b9da8 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/Metadata.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Manifest_Metadata +{ + +} diff --git a/library/Zend/Tool/Framework/Manifest/MetadataManifestable.php b/library/Zend/Tool/Framework/Manifest/MetadataManifestable.php new file mode 100755 index 000000000..d6e439797 --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/MetadataManifestable.php @@ -0,0 +1,47 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Manifest_Interface.php + */ +require_once 'Zend/Tool/Framework/Manifest/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Manifest_MetadataManifestable extends Zend_Tool_Framework_Manifest_Interface +{ + + /** + * getMetadata() + * + * Should either return a single metadata object or an array + * of metadata objects + * + * @return array|Zend_Tool_Framework_Manifest_Metadata + */ + public function getMetadata(); + +} diff --git a/library/Zend/Tool/Framework/Manifest/ProviderManifestable.php b/library/Zend/Tool/Framework/Manifest/ProviderManifestable.php new file mode 100755 index 000000000..ab54d5d6b --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/ProviderManifestable.php @@ -0,0 +1,47 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Manifest_Interface.php + */ +require_once 'Zend/Tool/Framework/Manifest/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Manifest_ProviderManifestable extends Zend_Tool_Framework_Manifest_Interface +{ + + /** + * getProviders() + * + * Should either return a single provider or an array + * of providers + * + * @return array|string|Zend_Tool_Framework_Provider_Interface + */ + public function getProviders(); + +} diff --git a/library/Zend/Tool/Framework/Manifest/ProviderMetadata.php b/library/Zend/Tool/Framework/Manifest/ProviderMetadata.php new file mode 100755 index 000000000..bff1d378f --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/ProviderMetadata.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Manifest_ProviderMetadata +{ + +} diff --git a/library/Zend/Tool/Framework/Manifest/Repository.php b/library/Zend/Tool/Framework/Manifest/Repository.php new file mode 100755 index 000000000..31aa4e4ed --- /dev/null +++ b/library/Zend/Tool/Framework/Manifest/Repository.php @@ -0,0 +1,313 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Manifest_Repository + implements Zend_Tool_Framework_Registry_EnabledInterface, IteratorAggregate, Countable +{ + + /** + * @var Zend_Tool_Framework_Provider_Registry_Interface + */ + protected $_registry = null; + + /** + * @var array + */ + protected $_manifests = array(); + + /** + * @var array Array of Zend_Tool_Framework_Metadata_Interface + */ + protected $_metadatas = array(); + + /** + * setRegistry() + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return unknown + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * addManifest() - Add a manifest for later processing + * + * @param Zend_Tool_Framework_Manifest_Interface $manifest + * @return Zend_Tool_Framework_Manifest_Repository + */ + public function addManifest(Zend_Tool_Framework_Manifest_Interface $manifest) + { + // we need to get an index number so that manifests with + // higher indexes have priority over others + $index = count($this->_manifests); + + if ($manifest instanceof Zend_Tool_Framework_Registry_EnabledInterface) { + $manifest->setRegistry($this->_registry); + } + + // if the manifest supplies a getIndex() method, use it + if ($manifest instanceof Zend_Tool_Framework_Manifest_Indexable) { + $index = $manifest->getIndex(); + } + + // get the required objects from the framework registry + $actionRepository = $this->_registry->getActionRepository(); + $providerRepository = $this->_registry->getProviderRepository(); + + // load providers if interface supports that method + if ($manifest instanceof Zend_Tool_Framework_Manifest_ProviderManifestable) { + $providers = $manifest->getProviders(); + if (!is_array($providers)) { + $providers = array($providers); + } + + foreach ($providers as $provider) { + + // if provider is a string, try and load it as an object + if (is_string($provider)) { + $provider = new $provider(); + } + + if (!$provider instanceof Zend_Tool_Framework_Provider_Interface) { + require_once 'Zend/Tool/Framework/Manifest/Exception.php'; + throw new Zend_Tool_Framework_Manifest_Exception( + 'A provider provided by the ' . get_class($manifest) + . ' does not implement Zend_Tool_Framework_Provider_Interface' + ); + } + if (!$providerRepository->hasProvider($provider, false)) { + $providerRepository->addProvider($provider); + } + } + + } + + // load actions if interface supports that method + if ($manifest instanceof Zend_Tool_Framework_Manifest_ActionManifestable) { + $actions = $manifest->getActions(); + if (!is_array($actions)) { + $actions = array($actions); + } + + foreach ($actions as $action) { + if (is_string($action)) { + $action = new Zend_Tool_Framework_Action_Base($action); + } + $actionRepository->addAction($action); + } + } + + // should we detect collisions here? does it even matter? + $this->_manifests[$index] = $manifest; + ksort($this->_manifests); + + return $this; + } + + /** + * getManifests() + * + * @return Zend_Tool_Framework_Manifest_Interface[] + */ + public function getManifests() + { + return $this->_manifests; + } + + /** + * addMetadata() - add a metadata peice by peice + * + * @param Zend_Tool_Framework_Manifest_Metadata $metadata + * @return Zend_Tool_Framework_Manifest_Repository + */ + public function addMetadata(Zend_Tool_Framework_Metadata_Interface $metadata) + { + $this->_metadatas[] = $metadata; + return $this; + } + + /** + * process() - Process is expected to be called at the end of client construction time. + * By this time, the loader has run and loaded any found manifests into the repository + * for loading + * + * @return Zend_Tool_Framework_Manifest_Repository + */ + public function process() + { + + foreach ($this->_manifests as $manifest) { + if ($manifest instanceof Zend_Tool_Framework_Manifest_MetadataManifestable) { + $metadatas = $manifest->getMetadata(); + if (!is_array($metadatas)) { + $metadatas = array($metadatas); + } + + foreach ($metadatas as $metadata) { + if (is_array($metadata)) { + if (!class_exists('Zend_Tool_Framework_Metadata_Dynamic')) { + require_once 'Zend/Tool/Framework/Metadata/Dynamic.php'; + } + $metadata = new Zend_Tool_Framework_Metadata_Dynamic($metadata); + } + + if (!$metadata instanceof Zend_Tool_Framework_Metadata_Interface) { + require_once 'Zend/Tool/Framework/Manifest/Exception.php'; + throw new Zend_Tool_Framework_Manifest_Exception( + 'A Zend_Tool_Framework_Metadata_Interface object was not found in manifest ' . get_class($manifest) + ); + } + + $this->addMetadata($metadata); + } + + } + } + + return $this; + } + + /** + * getMetadatas() - This is the main search function for the repository. + * + * example: This will retrieve all metadata that matches the following criteria + * $manifestRepo->getMetadatas(array( + * 'providerName' => 'Version', + * 'actionName' => 'show' + * )); + * + * @param array $searchProperties + * @param bool $includeNonExistentProperties + * @return Zend_Tool_Framework_Manifest_Metadata[] + */ + public function getMetadatas(Array $searchProperties = array(), $includeNonExistentProperties = true) + { + + $returnMetadatas = array(); + + // loop through the metadatas so that we can search each individual one + foreach ($this->_metadatas as $metadata) { + + // each value will be retrieved from the metadata, each metadata should + // implement a getter method to retrieve the value + foreach ($searchProperties as $searchPropertyName => $searchPropertyValue) { + if (method_exists($metadata, 'get' . $searchPropertyName)) { + if ($metadata->{'get' . $searchPropertyName}() != $searchPropertyValue) { + // if the metadata supports a specific property but the value does not + // match, move on + continue 2; + } + } elseif (!$includeNonExistentProperties) { + // if the option $includeNonExitentProperties is false, then move on as + // we dont want to include this metadata if non existent + // search properties are not inside the target (current) metadata + continue 2; + } + } + + // all searching has been accounted for, if we reach this point, then the metadata + // is good and we can return it + $returnMetadatas[] = $metadata; + + } + + return $returnMetadatas; + } + + /** + * getMetadata() - This will proxy to getMetadatas(), but will only return a single metadata. This method + * should be used in situations where the search criteria is known to only find a single metadata object + * + * @param array $searchProperties + * @param bool $includeNonExistentProperties + * @return Zend_Tool_Framework_Manifest_Metadata + */ + public function getMetadata(Array $searchProperties = array(), $includeNonExistentProperties = true) + { + $metadatas = $this->getMetadatas($searchProperties, $includeNonExistentProperties); + return array_shift($metadatas); + } + + /** + * __toString() - cast to string + * + * @return string + */ + public function __toString() + { + $metadatasByType = array(); + + foreach ($this->_metadatas as $metadata) { + if (!array_key_exists($metadata->getType(), $metadatasByType)) { + $metadatasByType[$metadata->getType()] = array(); + } + $metadatasByType[$metadata->getType()][] = $metadata; + } + + $string = ''; + foreach ($metadatasByType as $type => $metadatas) { + $string .= $type . PHP_EOL; + foreach ($metadatas as $metadata) { + $metadataString = ' ' . $metadata->__toString() . PHP_EOL; + //$metadataString = str_replace(PHP_EOL, PHP_EOL . ' ', $metadataString); + $string .= $metadataString; + } + } + + return $string; + } + + /** + * count() - required by the Countable Interface + * + * @return int + */ + public function count() + { + return count($this->_metadatas); + } + + /** + * getIterator() - required by the IteratorAggregate interface + * + * @return ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->_metadatas); + } + +} diff --git a/library/Zend/Tool/Framework/Metadata/Attributable.php b/library/Zend/Tool/Framework/Metadata/Attributable.php new file mode 100755 index 000000000..869f5d5e2 --- /dev/null +++ b/library/Zend/Tool/Framework/Metadata/Attributable.php @@ -0,0 +1,33 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Metadata_Attributable +{ + public function getAttributes(); +} + + diff --git a/library/Zend/Tool/Framework/Metadata/Basic.php b/library/Zend/Tool/Framework/Metadata/Basic.php new file mode 100755 index 000000000..4e59a9812 --- /dev/null +++ b/library/Zend/Tool/Framework/Metadata/Basic.php @@ -0,0 +1,227 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Metadata_Interface + */ +require_once 'Zend/Tool/Framework/Metadata/Interface.php'; + +/** + * @see Zend_Tool_Framework_Metadata_Attributable + */ +require_once 'Zend/Tool/Framework/Metadata/Attributable.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Metadata_Basic + implements Zend_Tool_Framework_Metadata_Interface, Zend_Tool_Framework_Metadata_Attributable +{ + + /**#@+ + * Search constants + */ + const ATTRIBUTES_ALL = 'attributesAll'; + const ATTRIBUTES_NO_PARENT = 'attributesParent'; + /**#@-*/ + + /**#@+ + * @var string + */ + protected $_type = 'Basic'; + protected $_name = null; + protected $_value = null; + /**#@-*/ + + /** + * @var mixed + */ + protected $_reference = null; + + /** + * Constructor - allows for the setting of options + * + * @param array $options + */ + public function __construct(Array $options = array()) + { + if ($options) { + $this->setOptions($options); + } + } + + /** + * setOptions() - standard issue implementation, this will set any + * options that are supported via a set method. + * + * @param array $options + * @return Zend_Tool_Framework_Metadata_Basic + */ + public function setOptions(Array $options) + { + foreach ($options as $optionName => $optionValue) { + $setMethod = 'set' . $optionName; + if (method_exists($this, $setMethod)) { + $this->{$setMethod}($optionValue); + } + } + + return $this; + } + + /** + * getType() + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * setType() + * + * @param string $type + * @return Zend_Tool_Framework_Metadata_Basic + */ + public function setType($type) + { + $this->_type = $type; + return $this; + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * setName() + * + * @param string $name + * @return Zend_Tool_Framework_Metadata_Basic + */ + public function setName($name) + { + $this->_name = $name; + return $this; + } + + /** + * getValue() + * + * @return mixed + */ + public function getValue() + { + return $this->_value; + } + + /** + * setValue() + * + * @param unknown_type $Value + * @return Zend_Tool_Framework_Metadata_Basic + */ + public function setValue($value) + { + $this->_value = $value; + return $this; + } + + /** + * setReference() + * + * @param mixed $reference + * @return Zend_Tool_Framework_Metadata_Basic + */ + public function setReference($reference) + { + $this->_reference = $reference; + return $this; + } + + /** + * getReference() + * + * @return mixed + */ + public function getReference() + { + return $this->_reference; + } + + /** + * getAttributes() - this will retrieve any attributes of this object that exist as properties + * This is most useful for printing metadata. + * + * @param const $type + * @return array + */ + public function getAttributes($type = self::ATTRIBUTES_ALL, $stringRepresentationOfNonScalars = false) + { + $thisReflection = new ReflectionObject($this); + + $metadataPairValues = array(); + + foreach (get_object_vars($this) as $varName => $varValue) { + if ($type == self::ATTRIBUTES_NO_PARENT && ($thisReflection->getProperty($varName)->getDeclaringClass()->getName() == 'Zend_Tool_Framework_Metadata_Basic')) { + continue; + } + + if ($stringRepresentationOfNonScalars) { + + if (is_object($varValue)) { + $varValue = '(object)'; + } + + if ($varValue === null) { + $varValue = '(null)'; + } + + } + + $metadataPairValues[ltrim($varName, '_')] = $varValue; + } + + return $metadataPairValues; + } + + /** + * __toString() - string representation of this object + * + * @return string + */ + public function __toString() + { + return 'Type: ' . $this->_type . ', Name: ' . $this->_name . ', Value: ' . (is_array($this->_value) ? http_build_query($this->_value) : (string) $this->_value); + } +} diff --git a/library/Zend/Tool/Framework/Metadata/Dynamic.php b/library/Zend/Tool/Framework/Metadata/Dynamic.php new file mode 100755 index 000000000..2fbf6af62 --- /dev/null +++ b/library/Zend/Tool/Framework/Metadata/Dynamic.php @@ -0,0 +1,219 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Metadata_Interface + */ +require_once 'Zend/Tool/Framework/Metadata/Interface.php'; + +/** + * @see Zend_Tool_Framework_Metadata_Attributable + */ +require_once 'Zend/Tool/Framework/Metadata/Attributable.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Metadata_Dynamic + implements Zend_Tool_Framework_Metadata_Interface, Zend_Tool_Framework_Metadata_Attributable +{ + + /** + * @var string + */ + protected $_type = 'Dynamic'; + + /** + * @var string + */ + protected $_name = null; + + /** + * @var string + */ + protected $_value = null; + + /** + * @var array + */ + protected $_dynamicAttributes = array(); + + public function __construct($options = array()) + { + if ($options) { + $this->setOptions($options); + } + } + + public function setOptions(Array $options = array()) + { + foreach ($options as $optName => $optValue) { + $methodName = 'set' . $optName; + $this->{$methodName}($optValue); + } + } + + /** + * setType() + * + * @param string $type + * @return Zend_Tool_Framework_Metadata_Dynamic + */ + public function setType($type) + { + $this->_type = $type; + return $this; + } + + /** + * getType() + * + * The type of metadata this describes + * + * @return string + */ + public function getType() + { + return $this->_type; + } + + /** + * setName() + * + * @param string $name + * @return Zend_Tool_Framework_Metadata_Dynamic + */ + public function setName($name) + { + $this->_name = $name; + return $this; + } + + /** + * getName() + * + * Metadata name + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + /** + * setValue() + * + * @param mixed $value + * @return Zend_Tool_Framework_Metadata_Dynamic + */ + public function setValue($value) + { + $this->_value = $value; + return $this; + } + + /** + * getValue() + * + * Metadata Value + * + * @return string + */ + public function getValue() + { + return $this->_value; + } + + public function getAttributes() + { + return $this->_dynamicAttributes; + } + + /** + * __isset() + * + * Check if an attrbute is set + * + * @param string $name + * @return bool + */ + public function __isset($name) + { + return isset($this->_dynamicAttributes[$name]); + } + + /** + * __unset() + * + * @param string $name + * @return null + */ + public function __unset($name) + { + unset($this->_dynamicAttributes[$name]); + return; + } + + /** + * __get() - Get a property via property call $metadata->foo + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + if (method_exists($this, 'get' . $name)) { + return $this->{'get' . $name}(); + } elseif (array_key_exists($name, $this->_dynamicAttributes)) { + return $this->_dynamicAttributes[$name]; + } else { + require_once 'Zend/Tool/Framework/Registry/Exception.php'; + throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this metadata.'); + } + } + + /** + * __set() - Set a property via the magic set $metadata->foo = 'foo' + * + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + if (method_exists($this, 'set' . $name)) { + $this->{'set' . $name}($value); + return $this; + } else { + $this->_dynamicAttributes[$name] = $value; + return $this; + } +// { +// require_once 'Zend/Tool/Framework/Registry/Exception.php'; +// throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.'); +// } + } + +} diff --git a/library/Zend/Tool/Framework/Metadata/Interface.php b/library/Zend/Tool/Framework/Metadata/Interface.php new file mode 100755 index 000000000..d7e327bf3 --- /dev/null +++ b/library/Zend/Tool/Framework/Metadata/Interface.php @@ -0,0 +1,52 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Metadata_Interface +{ + + /** + * getType() + * + * The type of metadata this describes + * + */ + public function getType(); + + /** + * getName() + * + */ + public function getName(); + + /** + * getValue() + * + */ + public function getValue(); + +} diff --git a/library/Zend/Tool/Framework/Metadata/Tool.php b/library/Zend/Tool/Framework/Metadata/Tool.php new file mode 100755 index 000000000..24c73c63c --- /dev/null +++ b/library/Zend/Tool/Framework/Metadata/Tool.php @@ -0,0 +1,218 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Metadata_Basic + */ +require_once 'Zend/Tool/Framework/Metadata/Basic.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Metadata_Tool extends Zend_Tool_Framework_Metadata_Basic +{ + + /** + * @var string + */ + protected $_type = 'Tool'; + + /**#@+ + * @var string + */ + protected $_clientName = null; + protected $_actionName = null; + protected $_providerName = null; + protected $_specialtyName = null; + /**#@-*/ + + /**#@+ + * @var string + */ + protected $_clientReference = null; + protected $_actionReference = null; + protected $_providerReference = null; + /**#@-*/ + + public function setClientName($clientName) + { + $this->_clientName = $clientName; + return $this; + } + + public function getClientName() + { + return $this->_clientName; + } + + /** + * setActionName() + * + * @param string $actionName + * @return Zend_Tool_Framework_Metadata_Tool + */ + public function setActionName($actionName) + { + $this->_actionName = $actionName; + return $this; + } + + /** + * getActionName() + * + * @return string + */ + public function getActionName() + { + return $this->_actionName; + } + + /** + * setProviderName() + * + * @param string $providerName + * @return Zend_Tool_Framework_Metadata_Tool + */ + public function setProviderName($providerName) + { + $this->_providerName = $providerName; + return $this; + } + + /** + * getProviderName() + * + * @return string + */ + public function getProviderName() + { + return $this->_providerName; + } + + /** + * setSpecialtyName() + * + * @param string $specialtyName + * @return Zend_Tool_Framework_Metadata_Tool + */ + public function setSpecialtyName($specialtyName) + { + $this->_specialtyName = $specialtyName; + return $this; + } + + /** + * getSpecialtyName() + * + * @return string + */ + public function getSpecialtyName() + { + return $this->_specialtyName; + } + + /** + * setClientReference() + * + * @param Zend_Tool_Framework_Client_Abstract $client + * @return Zend_Tool_Framework_Metadata_Tool + */ + public function setClientReference(Zend_Tool_Framework_Client_Abstract $client) + { + $this->_clientReference = $client; + return $this; + } + + /** + * getClientReference() + * + * @return Zend_Tool_Framework_Client_Abstract + */ + public function getClientReference() + { + return $this->_clientReference; + } + + /** + * setActionReference() + * + * @param Zend_Tool_Framework_Action_Interface $action + * @return Zend_Tool_Framework_Metadata_Tool + */ + public function setActionReference(Zend_Tool_Framework_Action_Interface $action) + { + $this->_actionReference = $action; + return $this; + } + + /** + * getActionReference() + * + * @return Zend_Tool_Framework_Action_Interface + */ + public function getActionReference() + { + return $this->_actionReference; + } + + /** + * setProviderReference() + * + * @param Zend_Tool_Framework_Provider_Interface $provider + * @return Zend_Tool_Framework_Metadata_Tool + */ + public function setProviderReference(Zend_Tool_Framework_Provider_Interface $provider) + { + $this->_providerReference = $provider; + return $this; + } + + /** + * getProviderReference() + * + * @return Zend_Tool_Framework_Provider_Interface + */ + public function getProviderReference() + { + return $this->_providerReference; + } + + /** + * __toString() cast to string + * + * @return string + */ + public function __toString() + { + $string = parent::__toString(); + $string .= ' (ProviderName: ' . $this->_providerName + . ', ActionName: ' . $this->_actionName + . ', SpecialtyName: ' . $this->_specialtyName + . ')'; + + return $string; + } + +} diff --git a/library/Zend/Tool/Framework/Provider/Abstract.php b/library/Zend/Tool/Framework/Provider/Abstract.php new file mode 100755 index 000000000..889ce00be --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Abstract.php @@ -0,0 +1,68 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Provider_Interface + */ +require_once 'Zend/Tool/Framework/Provider/Interface.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + + +/** + * This is a convenience class. + * + * At current it will return the request and response from the client registry + * as they are the more common things that will be needed by providers + * + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tool_Framework_Provider_Abstract + implements Zend_Tool_Framework_Provider_Interface, Zend_Tool_Framework_Registry_EnabledInterface +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + /** + * setRegistry() - required by Zend_Tool_Framework_Registry_EnabledInterface + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Provider_Abstract + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + +} diff --git a/library/Zend/Tool/Framework/Provider/DocblockManifestable.php b/library/Zend/Tool/Framework/Provider/DocblockManifestable.php new file mode 100755 index 000000000..19bd7d6d7 --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/DocblockManifestable.php @@ -0,0 +1,30 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Provider_DocblockManifestInterface +{ +} diff --git a/library/Zend/Tool/Framework/Provider/Exception.php b/library/Zend/Tool/Framework/Provider/Exception.php new file mode 100755 index 000000000..6e328d1fa --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Exception.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Exception + */ +require_once 'Zend/Tool/Framework/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Provider_Exception extends Zend_Tool_Framework_Exception +{ + +} diff --git a/library/Zend/Tool/Framework/Provider/Initializable.php b/library/Zend/Tool/Framework/Provider/Initializable.php new file mode 100755 index 000000000..2e3e10684 --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Initializable.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: Interactable.php 20096 2010-01-06 02:05:09Z bkarwin $ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Provider_Initializable +{ + public function initialize(); +} diff --git a/library/Zend/Tool/Framework/Provider/Interactable.php b/library/Zend/Tool/Framework/Provider/Interactable.php new file mode 100755 index 000000000..bc9d5449f --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Interactable.php @@ -0,0 +1,30 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Provider_Interactable +{ +} diff --git a/library/Zend/Tool/Framework/Provider/Interface.php b/library/Zend/Tool/Framework/Provider/Interface.php new file mode 100755 index 000000000..085164755 --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Interface.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Provider_Interface +{ +} diff --git a/library/Zend/Tool/Framework/Provider/Pretendable.php b/library/Zend/Tool/Framework/Provider/Pretendable.php new file mode 100755 index 000000000..dde07def8 --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Pretendable.php @@ -0,0 +1,31 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Provider_Pretendable +{ +} diff --git a/library/Zend/Tool/Framework/Provider/Repository.php b/library/Zend/Tool/Framework/Provider/Repository.php new file mode 100755 index 000000000..b5aa53d35 --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Repository.php @@ -0,0 +1,275 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Provider_Signature + */ +require_once 'Zend/Tool/Framework/Provider/Signature.php'; + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Provider_Repository + implements Zend_Tool_Framework_Registry_EnabledInterface, IteratorAggregate, Countable +{ + + /** + * @var Zend_Tool_Framework_Registry + */ + protected $_registry = null; + + /** + * @var bool + */ + protected $_processOnAdd = false; + + /** + * @var Zend_Tool_Framework_Provider_Interface[] + */ + protected $_unprocessedProviders = array(); + + /** + * @var Zend_Tool_Framework_Provider_Signature[] + */ + protected $_providerSignatures = array(); + + /** + * @var array Array of Zend_Tool_Framework_Provider_Inteface + */ + protected $_providers = array(); + + /** + * setRegistry() + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return unknown + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * Set the ProcessOnAdd flag + * + * @param unknown_type $processOnAdd + * @return unknown + */ + public function setProcessOnAdd($processOnAdd = true) + { + $this->_processOnAdd = (bool) $processOnAdd; + return $this; + } + + /** + * Add a provider to the repository for processing + * + * @param Zend_Tool_Framework_Provider_Interface $provider + * @return Zend_Tool_Framework_Provider_Repository + */ + public function addProvider(Zend_Tool_Framework_Provider_Interface $provider, $overwriteExistingProvider = false) + { + if ($provider instanceof Zend_Tool_Framework_Registry_EnabledInterface) { + $provider->setRegistry($this->_registry); + } + + if (method_exists($provider, 'getName')) { + $providerName = $provider->getName(); + } else { + $providerName = $this->_parseName($provider); + } + + // if a provider by the given name already exist, and its not set as overwritable, throw exception + if (!$overwriteExistingProvider && + (array_key_exists($providerName, $this->_unprocessedProviders) + || array_key_exists($providerName, $this->_providers))) + { + require_once 'Zend/Tool/Framework/Provider/Exception.php'; + throw new Zend_Tool_Framework_Provider_Exception('A provider by the name ' . $providerName + . ' is already registered and $overrideExistingProvider is set to false.'); + } + + $this->_unprocessedProviders[$providerName] = $provider; + + // if process has already been called, process immediately. + if ($this->_processOnAdd) { + $this->process(); + } + + return $this; + } + + public function hasProvider($providerOrClassName, $processedOnly = true) + { + if ($providerOrClassName instanceof Zend_Tool_Framework_Provider_Interface) { + $targetProviderClassName = get_class($providerOrClassName); + } else { + $targetProviderClassName = (string) $providerOrClassName; + } + + if (!$processedOnly) { + foreach ($this->_unprocessedProviders as $unprocessedProvider) { + if (get_class($unprocessedProvider) == $targetProviderClassName) { + return true; + } + } + } + + foreach ($this->_providers as $processedProvider) { + if (get_class($processedProvider) == $targetProviderClassName) { + return true; + } + } + + return false; + } + + /** + * Process all of the unprocessed providers + * + */ + public function process() + { + + // process all providers in the unprocessedProviders array + //foreach ($this->_unprocessedProviders as $providerName => $provider) { + reset($this->_unprocessedProviders); + while ($this->_unprocessedProviders) { + + $providerName = key($this->_unprocessedProviders); + $provider = array_shift($this->_unprocessedProviders); + + // create a signature for the provided provider + $providerSignature = new Zend_Tool_Framework_Provider_Signature($provider); + + if ($providerSignature instanceof Zend_Tool_Framework_Registry_EnabledInterface) { + $providerSignature->setRegistry($this->_registry); + } + + $providerSignature->process(); + + // ensure the name is lowercased for easier searching + $providerName = strtolower($providerName); + + // add to the appropraite place + $this->_providerSignatures[$providerName] = $providerSignature; + $this->_providers[$providerName] = $providerSignature->getProvider(); + + if ($provider instanceof Zend_Tool_Framework_Provider_Initializable) { + $provider->initialize(); + } + + } + + } + + /** + * getProviders() Get all the providers in the repository + * + * @return array + */ + public function getProviders() + { + return $this->_providers; + } + + /** + * getProviderSignatures() Get all the provider signatures + * + * @return array + */ + public function getProviderSignatures() + { + return $this->_providerSignatures; + } + + /** + * getProvider() + * + * @param string $providerName + * @return Zend_Tool_Framework_Provider_Interface + */ + public function getProvider($providerName) + { + return $this->_providers[strtolower($providerName)]; + } + + /** + * getProviderSignature() + * + * @param string $providerName + * @return Zend_Tool_Framework_Provider_Signature + */ + public function getProviderSignature($providerName) + { + return $this->_providerSignatures[strtolower($providerName)]; + } + + /** + * count() - return the number of providers + * + * @return int + */ + public function count() + { + return count($this->_providers); + } + + /** + * getIterator() - Required by the IteratorAggregate Interface + * + * @return ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->getProviders()); + } + + /** + * _parseName - internal method to determine the name of an action when one is not explicity provided. + * + * @param Zend_Tool_Framework_Action_Interface $action + * @return string + */ + protected function _parseName(Zend_Tool_Framework_Provider_Interface $provider) + { + $className = get_class($provider); + $providerName = $className; + if (strpos($providerName, '_') !== false) { + $providerName = substr($providerName, strrpos($providerName, '_')+1); + } + if (substr($providerName, -8) == 'Provider') { + $providerName = substr($providerName, 0, strlen($providerName)-8); + } + return $providerName; + } + +} diff --git a/library/Zend/Tool/Framework/Provider/Signature.php b/library/Zend/Tool/Framework/Provider/Signature.php new file mode 100755 index 000000000..1bfbcb4bf --- /dev/null +++ b/library/Zend/Tool/Framework/Provider/Signature.php @@ -0,0 +1,394 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Reflection_Class + */ +require_once 'Zend/Reflection/Class.php'; + +/** + * @see Zend_Tool_Framework_Registry + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @see Zend_Tool_Framework_Action_Base + */ +require_once 'Zend/Tool/Framework/Action/Base.php'; + +/** + * The purpose of Zend_Tool_Framework_Provider_Signature is to derive + * callable signatures from the provided provider. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Provider_Signature implements Zend_Tool_Framework_Registry_EnabledInterface +{ + + /** + * @var Zend_Tool_Framework_Registry + */ + protected $_registry = null; + + /** + * @var Zend_Tool_Framework_Provider_Interface + */ + protected $_provider = null; + + /** + * @var string + */ + protected $_name = null; + + /** + * @var array + */ + protected $_specialties = array(); + + /** + * @var array + */ + protected $_actionableMethods = array(); + + /** + * @var unknown_type + */ + protected $_actions = array(); + + /** + * @var Zend_Reflection_Class + */ + protected $_providerReflection = null; + + /** + * @var bool + */ + protected $_isProcessed = false; + + /** + * Constructor + * + * @param Zend_Tool_Framework_Provider_Interface $provider + */ + public function __construct(Zend_Tool_Framework_Provider_Interface $provider) + { + $this->_provider = $provider; + $this->_providerReflection = new Zend_Reflection_Class($provider); + } + + /** + * setRegistry() + * + * @param Zend_Tool_Framework_Registry_Interface $registry + * @return Zend_Tool_Framework_Provider_Signature + */ + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + public function process() + { + if ($this->_isProcessed) { + return; + } + + $this->_process(); + } + + /** + * getName() of the provider + * + * @return unknown + */ + public function getName() + { + return $this->_name; + } + + /** + * Get the provider for this signature + * + * @return Zend_Tool_Framework_Provider_Interface + */ + public function getProvider() + { + return $this->_provider; + } + + /** + * getProviderReflection() + * + * @return Zend_Reflection_Class + */ + public function getProviderReflection() + { + return $this->_providerReflection; + } + + /** + * getSpecialities() + * + * @return array + */ + public function getSpecialties() + { + return $this->_specialties; + } + + /** + * getActions() + * + * @return array Array of Actions + */ + public function getActions() + { + return $this->_actions; + } + + /** + * getActionableMethods() + * + * @return array + */ + public function getActionableMethods() + { + return $this->_actionableMethods; + } + + /** + * getActionableMethod() - Get an actionable method by name, this will return an array of + * useful information about what can be exectued on this provider + * + * @param string $methodName + * @return array + */ + public function getActionableMethod($methodName) + { + if (isset($this->_actionableMethods[$methodName])) { + return $this->_actionableMethods[$methodName]; + } + + return false; + } + + /** + * getActionableMethodByActionName() - Get an actionable method by its action name, this + * will return an array of useful information about what can be exectued on this provider + * + * @param string $actionName + * @return array + */ + public function getActionableMethodByActionName($actionName, $specialtyName = '_Global') + { + foreach ($this->_actionableMethods as $actionableMethod) { + if ($actionName == $actionableMethod['actionName'] + && $specialtyName == $actionableMethod['specialty']) { + return $actionableMethod; + } + } + + return false; + } + + /** + * _process() is called at construction time and is what will build the signature information + * for determining what is actionable + * + */ + protected function _process() + { + $this->_isProcessed = true; + $this->_processName(); + $this->_processSpecialties(); + $this->_processActionableMethods(); + } + + /** + * _processName(); + * + */ + protected function _processName() + { + if (method_exists($this->_provider, 'getName')) { + $this->_name = $this->_provider->getName(); + } + + if ($this->_name == null) { + $className = get_class($this->_provider); + $name = $className; + if (strpos($name, '_')) { + $name = substr($name, strrpos($name, '_')+1); + } + $name = preg_replace('#(Provider|Manifest)$#', '', $name); + $this->_name = $name; + } + } + + /** + * _processSpecialties() - Break out the specialty names for this provider + * + */ + protected function _processSpecialties() + { + $specialties = array(); + + if ($this->_providerReflection->hasMethod('getSpecialties')) { + $specialties = $this->_provider->getSpecialties(); + if (!is_array($specialties)) { + require_once 'Zend/Tool/Framework/Provider/Exception.php'; + throw new Zend_Tool_Framework_Provider_Exception( + 'Provider ' . get_class($this->_provider) . ' must return an array for method getSpecialties().' + ); + } + } else { + $defaultProperties = $this->_providerReflection->getDefaultProperties(); + $specialties = (isset($defaultProperties['_specialties'])) ? $defaultProperties['_specialties'] : array(); + if (!is_array($specialties)) { + require_once 'Zend/Tool/Framework/Provider/Exception.php'; + throw new Zend_Tool_Framework_Provider_Exception( + 'Provider ' . get_class($this->_provider) . '\'s property $_specialties must be an array.' + ); + } + } + + $this->_specialties = array_merge(array('_Global'), $specialties); + + } + + /** + * _processActionableMethods() - process all methods that can be called on this provider. + * + */ + protected function _processActionableMethods() + { + + $specialtyRegex = '#(.*)(' . implode('|', $this->_specialties) . ')$#i'; + + + $methods = $this->_providerReflection->getMethods(); + + $actionableMethods = array(); + foreach ($methods as $method) { + + $methodName = $method->getName(); + + /** + * the following will determine what methods are actually actionable + * public, non-static, non-underscore prefixed, classes that dont + * contain the name " + */ + if (!$method->getDeclaringClass()->isInstantiable() + || !$method->isPublic() + || $methodName[0] == '_' + || $method->isStatic() + || in_array($methodName, array('getContextClasses', 'getName')) // other protected public methods will nee to go here + ) { + continue; + } + + /** + * check to see if the method was a required method by a Zend_Tool_* interface + */ + foreach ($method->getDeclaringClass()->getInterfaces() as $methodDeclaringClassInterface) { + if (strpos($methodDeclaringClassInterface->getName(), 'Zend_Tool_') === 0 + && $methodDeclaringClassInterface->hasMethod($methodName)) { + continue 2; + } + } + + $actionableName = ucfirst($methodName); + + if (substr($actionableName, -6) == 'Action') { + $actionableName = substr($actionableName, 0, -6); + } + + $actionableMethods[$methodName]['methodName'] = $methodName; + + $matches = null; + if (preg_match($specialtyRegex, $actionableName, $matches)) { + $actionableMethods[$methodName]['actionName'] = $matches[1]; + $actionableMethods[$methodName]['specialty'] = $matches[2]; + } else { + $actionableMethods[$methodName]['actionName'] = $actionableName; + $actionableMethods[$methodName]['specialty'] = '_Global'; + } + + // get the action, and create non-existent actions when they dont exist (the true part below) + $action = $this->_registry->getActionRepository()->getAction($actionableMethods[$methodName]['actionName']); + if ($action == null) { + $action = new Zend_Tool_Framework_Action_Base($actionableMethods[$methodName]['actionName']); + $this->_registry->getActionRepository()->addAction($action); + } + $actionableMethods[$methodName]['action'] = $action; + + if (!in_array($actionableMethods[$methodName]['action'], $this->_actions)) { + $this->_actions[] = $actionableMethods[$methodName]['action']; + } + + $parameterInfo = array(); + $position = 1; + foreach ($method->getParameters() as $parameter) { + $currentParam = $parameter->getName(); + $parameterInfo[$currentParam]['position'] = $position++; + $parameterInfo[$currentParam]['optional'] = $parameter->isOptional(); + $parameterInfo[$currentParam]['default'] = ($parameter->isOptional()) ? $parameter->getDefaultValue() : null; + $parameterInfo[$currentParam]['name'] = $currentParam; + $parameterInfo[$currentParam]['type'] = 'string'; + $parameterInfo[$currentParam]['description'] = null; + } + + $matches = null; + if (($docComment = $method->getDocComment()) != '' && + (preg_match_all('/@param\s+(\w+)+\s+(\$\S+)\s+(.*?)(?=(?:\*\s*@)|(?:\*\/))/s', $docComment, $matches))) + { + for ($i=0; $i <= count($matches[0])-1; $i++) { + $currentParam = ltrim($matches[2][$i], '$'); + + if ($currentParam != '' && isset($parameterInfo[$currentParam])) { + + $parameterInfo[$currentParam]['type'] = $matches[1][$i]; + + $descriptionSource = $matches[3][$i]; + + if ($descriptionSource != '') { + $parameterInfo[$currentParam]['description'] = trim($descriptionSource); + } + + } + + } + + } + + $actionableMethods[$methodName]['parameterInfo'] = $parameterInfo; + + } + + $this->_actionableMethods = $actionableMethods; + } + +} diff --git a/library/Zend/Tool/Framework/Registry.php b/library/Zend/Tool/Framework/Registry.php new file mode 100755 index 000000000..cd1d034ca --- /dev/null +++ b/library/Zend/Tool/Framework/Registry.php @@ -0,0 +1,419 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Registry_Interface + */ +require_once 'Zend/Tool/Framework/Registry/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Registry implements Zend_Tool_Framework_Registry_Interface +{ + /** + * @var Zend_Tool_Framework_Loader_Abstract + */ + protected $_loader = null; + + /** + * @var Zend_Tool_Framework_Client_Abstract + */ + protected $_client = null; + + /** + * @var Zend_Tool_Framework_Client_Config + */ + protected $_config = null; + + /** + * @var Zend_Tool_Framework_Client_Storage + */ + protected $_storage = null; + + /** + * @var Zend_Tool_Framework_Action_Repository + */ + protected $_actionRepository = null; + + /** + * @var Zend_Tool_Framework_Provider_Repository + */ + protected $_providerRepository = null; + + /** + * @var Zend_Tool_Framework_Manifest_Repository + */ + protected $_manifestRepository = null; + + /** + * @var Zend_Tool_Framework_Client_Request + */ + protected $_request = null; + + /** + * @var Zend_Tool_Framework_Client_Response + */ + protected $_response = null; + + /** + * reset() - Reset all internal properties + * + */ + public function reset() + { + unset($this->_client); + unset($this->_loader); + unset($this->_actionRepository); + unset($this->_providerRepository); + unset($this->_request); + unset($this->_response); + } + +// public function __construct() +// { +// // no instantiation from outside +// } + + /** + * Enter description here... + * + * @param Zend_Tool_Framework_Client_Abstract $client + * @return Zend_Tool_Framework_Registry + */ + public function setClient(Zend_Tool_Framework_Client_Abstract $client) + { + $this->_client = $client; + if ($this->isObjectRegistryEnablable($this->_client)) { + $this->enableRegistryOnObject($this->_client); + } + return $this; + } + + /** + * getClient() return the client in the registry + * + * @return Zend_Tool_Framework_Client_Abstract + */ + public function getClient() + { + return $this->_client; + } + + /** + * setConfig() + * + * @param Zend_Tool_Framework_Client_Config $config + * @return Zend_Tool_Framework_Registry + */ + public function setConfig(Zend_Tool_Framework_Client_Config $config) + { + $this->_config = $config; + return $this; + } + + /** + * getConfig() + * + * @return Zend_Tool_Framework_Client_Config + */ + public function getConfig() + { + if ($this->_config === null) { + require_once 'Zend/Tool/Framework/Client/Config.php'; + $this->setConfig(new Zend_Tool_Framework_Client_Config()); + } + + return $this->_config; + } + + /** + * setStorage() + * + * @param Zend_Tool_Framework_Client_Storage $storage + * @return Zend_Tool_Framework_Registry + */ + public function setStorage(Zend_Tool_Framework_Client_Storage $storage) + { + $this->_storage = $storage; + return $this; + } + + /** + * getConfig() + * + * @return Zend_Tool_Framework_Client_Storage + */ + public function getStorage() + { + if ($this->_storage === null) { + require_once 'Zend/Tool/Framework/Client/Storage.php'; + $this->setStorage(new Zend_Tool_Framework_Client_Storage()); + } + + return $this->_storage; + } + + /** + * setLoader() + * + * @param Zend_Tool_Framework_Loader_Interface $loader + * @return Zend_Tool_Framework_Registry + */ + public function setLoader(Zend_Tool_Framework_Loader_Interface $loader) + { + $this->_loader = $loader; + if ($this->isObjectRegistryEnablable($this->_loader)) { + $this->enableRegistryOnObject($this->_loader); + } + return $this; + } + + /** + * getLoader() + * + * @return Zend_Tool_Framework_Loader_Abstract + */ + public function getLoader() + { + if ($this->_loader === null) { + require_once 'Zend/Tool/Framework/Loader/IncludePathLoader.php'; + $this->setLoader(new Zend_Tool_Framework_Loader_IncludePathLoader()); + } + + return $this->_loader; + } + + /** + * setActionRepository() + * + * @param Zend_Tool_Framework_Action_Repository $actionRepository + * @return Zend_Tool_Framework_Registry + */ + public function setActionRepository(Zend_Tool_Framework_Action_Repository $actionRepository) + { + $this->_actionRepository = $actionRepository; + if ($this->isObjectRegistryEnablable($this->_actionRepository)) { + $this->enableRegistryOnObject($this->_actionRepository); + } + return $this; + } + + /** + * getActionRepository() + * + * @return Zend_Tool_Framework_Action_Repository + */ + public function getActionRepository() + { + if ($this->_actionRepository == null) { + require_once 'Zend/Tool/Framework/Action/Repository.php'; + $this->setActionRepository(new Zend_Tool_Framework_Action_Repository()); + } + + return $this->_actionRepository; + } + + /** + * setProviderRepository() + * + * @param Zend_Tool_Framework_Provider_Repository $providerRepository + * @return Zend_Tool_Framework_Registry + */ + public function setProviderRepository(Zend_Tool_Framework_Provider_Repository $providerRepository) + { + $this->_providerRepository = $providerRepository; + if ($this->isObjectRegistryEnablable($this->_providerRepository)) { + $this->enableRegistryOnObject($this->_providerRepository); + } + return $this; + } + + /** + * getProviderRepository() + * + * @return Zend_Tool_Framework_Provider_Repository + */ + public function getProviderRepository() + { + if ($this->_providerRepository == null) { + require_once 'Zend/Tool/Framework/Provider/Repository.php'; + $this->setProviderRepository(new Zend_Tool_Framework_Provider_Repository()); + } + + return $this->_providerRepository; + } + + /** + * setManifestRepository() + * + * @param Zend_Tool_Framework_Manifest_Repository $manifestRepository + * @return Zend_Tool_Framework_Registry + */ + public function setManifestRepository(Zend_Tool_Framework_Manifest_Repository $manifestRepository) + { + $this->_manifestRepository = $manifestRepository; + if ($this->isObjectRegistryEnablable($this->_manifestRepository)) { + $this->enableRegistryOnObject($this->_manifestRepository); + } + return $this; + } + + /** + * getManifestRepository() + * + * @return Zend_Tool_Framework_Manifest_Repository + */ + public function getManifestRepository() + { + if ($this->_manifestRepository == null) { + require_once 'Zend/Tool/Framework/Manifest/Repository.php'; + $this->setManifestRepository(new Zend_Tool_Framework_Manifest_Repository()); + } + + return $this->_manifestRepository; + } + + /** + * setRequest() + * + * @param Zend_Tool_Framework_Client_Request $request + * @return Zend_Tool_Framework_Registry + */ + public function setRequest(Zend_Tool_Framework_Client_Request $request) + { + $this->_request = $request; + return $this; + } + + /** + * getRequest() + * + * @return Zend_Tool_Framework_Client_Request + */ + public function getRequest() + { + if ($this->_request == null) { + require_once 'Zend/Tool/Framework/Client/Request.php'; + $this->setRequest(new Zend_Tool_Framework_Client_Request()); + } + + return $this->_request; + } + + /** + * setResponse() + * + * @param Zend_Tool_Framework_Client_Response $response + * @return Zend_Tool_Framework_Registry + */ + public function setResponse(Zend_Tool_Framework_Client_Response $response) + { + $this->_response = $response; + return $this; + } + + /** + * getResponse() + * + * @return Zend_Tool_Framework_Client_Response + */ + public function getResponse() + { + if ($this->_response == null) { + require_once 'Zend/Tool/Framework/Client/Response.php'; + $this->setResponse(new Zend_Tool_Framework_Client_Response()); + } + + return $this->_response; + } + + /** + * __get() - Get a property via property call $registry->foo + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + if (method_exists($this, 'get' . $name)) { + return $this->{'get' . $name}(); + } else { + require_once 'Zend/Tool/Framework/Registry/Exception.php'; + throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.'); + } + } + + /** + * __set() - Set a property via the magic set $registry->foo = 'foo' + * + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + if (method_exists($this, 'set' . $name)) { + $this->{'set' . $name}($value); + return; + } else { + require_once 'Zend/Tool/Framework/Registry/Exception.php'; + throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.'); + } + } + + /** + * isObjectRegistryEnablable() - Check whether an object is registry enablable + * + * @param object $object + * @return bool + */ + public function isObjectRegistryEnablable($object) + { + if (!is_object($object)) { + require_once 'Zend/Tool/Framework/Registry/Exception.php'; + throw new Zend_Tool_Framework_Registry_Exception('isObjectRegistryEnablable() expects an object.'); + } + + return ($object instanceof Zend_Tool_Framework_Registry_EnabledInterface); + } + + /** + * enableRegistryOnObject() - make an object registry enabled + * + * @param object $object + * @return Zend_Tool_Framework_Registry + */ + public function enableRegistryOnObject($object) + { + if (!$this->isObjectRegistryEnablable($object)) { + require_once 'Zend/Tool/Framework/Registry/Exception.php'; + throw new Zend_Tool_Framework_Registry_Exception('Object provided is not registry enablable, check first with Zend_Tool_Framework_Registry::isObjectRegistryEnablable()'); + } + + $object->setRegistry($this); + return $this; + } + +} diff --git a/library/Zend/Tool/Framework/Registry/EnabledInterface.php b/library/Zend/Tool/Framework/Registry/EnabledInterface.php new file mode 100755 index 000000000..5a97c8bd3 --- /dev/null +++ b/library/Zend/Tool/Framework/Registry/EnabledInterface.php @@ -0,0 +1,40 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This is a convenience class. + * + * At current it will return the request and response from the client registry + * as they are the more common things that will be needed by providers + * + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Registry_EnabledInterface +{ + + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry); + +} diff --git a/library/Zend/Tool/Framework/Registry/Exception.php b/library/Zend/Tool/Framework/Registry/Exception.php new file mode 100755 index 000000000..29e0bcae5 --- /dev/null +++ b/library/Zend/Tool/Framework/Registry/Exception.php @@ -0,0 +1,33 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once 'Zend/Tool/Framework/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_Registry_Exception extends Zend_Tool_Framework_Exception +{ + +} diff --git a/library/Zend/Tool/Framework/Registry/Interface.php b/library/Zend/Tool/Framework/Registry/Interface.php new file mode 100755 index 000000000..6636583e7 --- /dev/null +++ b/library/Zend/Tool/Framework/Registry/Interface.php @@ -0,0 +1,137 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Framework_Registry_Interface +{ + + + /** + * setClient() + * + * @param Zend_Tool_Framework_Client_Abstract $client + * @return Zend_Tool_Framework_Registry + */ + public function setClient(Zend_Tool_Framework_Client_Abstract $client); + + /** + * getClient() return the client in the registry + * + * @return Zend_Tool_Framework_Client_Abstract + */ + public function getClient(); + + /** + * setLoader() + * + * @param Zend_Tool_Framework_Loader_Abstract $loader + * @return Zend_Tool_Framework_Registry + */ + public function setLoader(Zend_Tool_Framework_Loader_Interface $loader); + + /** + * getLoader() + * + * @return Zend_Tool_Framework_Loader_Abstract + */ + public function getLoader(); + + /** + * setActionRepository() + * + * @param Zend_Tool_Framework_Action_Repository $actionRepository + * @return Zend_Tool_Framework_Registry + */ + public function setActionRepository(Zend_Tool_Framework_Action_Repository $actionRepository); + + /** + * getActionRepository() + * + * @return Zend_Tool_Framework_Action_Repository + */ + public function getActionRepository(); + + /** + * setProviderRepository() + * + * @param Zend_Tool_Framework_Provider_Repository $providerRepository + * @return Zend_Tool_Framework_Registry + */ + public function setProviderRepository(Zend_Tool_Framework_Provider_Repository $providerRepository); + + /** + * getProviderRepository() + * + * @return Zend_Tool_Framework_Provider_Repository + */ + public function getProviderRepository(); + + /** + * setManifestRepository() + * + * @param Zend_Tool_Framework_Manifest_Repository $manifestRepository + * @return Zend_Tool_Framework_Registry + */ + public function setManifestRepository(Zend_Tool_Framework_Manifest_Repository $manifestRepository); + + /** + * getManifestRepository() + * + * @return Zend_Tool_Framework_Manifest_Repository + */ + public function getManifestRepository(); + + /** + * setRequest() + * + * @param Zend_Tool_Framework_Client_Request $request + * @return Zend_Tool_Framework_Registry + */ + public function setRequest(Zend_Tool_Framework_Client_Request $request); + + /** + * getRequest() + * + * @return Zend_Tool_Framework_Client_Request + */ + public function getRequest(); + + /** + * setResponse() + * + * @param Zend_Tool_Framework_Client_Response $response + * @return Zend_Tool_Framework_Registry + */ + public function setResponse(Zend_Tool_Framework_Client_Response $response); + + /** + * getResponse() + * + * @return Zend_Tool_Framework_Client_Response + */ + public function getResponse(); + +} diff --git a/library/Zend/Tool/Framework/System/Action/Create.php b/library/Zend/Tool/Framework/System/Action/Create.php new file mode 100755 index 000000000..396f9f6d8 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Action/Create.php @@ -0,0 +1,44 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Action_Base + */ +require_once 'Zend/Tool/Framework/Action/Base.php'; + + +/** + * This is a convenience class. + * + * At current it will return the request and response from the client registry + * as they are the more common things that will be needed by providers + * + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_System_Action_Create extends Zend_Tool_Framework_Action_Base +{ + +} diff --git a/library/Zend/Tool/Framework/System/Action/Delete.php b/library/Zend/Tool/Framework/System/Action/Delete.php new file mode 100755 index 000000000..3437ffb51 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Action/Delete.php @@ -0,0 +1,44 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Action_Base + */ +require_once 'Zend/Tool/Framework/Action/Base.php'; + + +/** + * This is a convenience class. + * + * At current it will return the request and response from the client registry + * as they are the more common things that will be needed by providers + * + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_System_Action_Delete extends Zend_Tool_Framework_Action_Base +{ + +} diff --git a/library/Zend/Tool/Framework/System/Manifest.php b/library/Zend/Tool/Framework/System/Manifest.php new file mode 100755 index 000000000..632b549e3 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Manifest.php @@ -0,0 +1,63 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once 'Zend/Tool/Framework/Manifest/ProviderManifestable.php'; +require_once 'Zend/Tool/Framework/Manifest/ActionManifestable.php'; +require_once 'Zend/Tool/Framework/System/Provider/Version.php'; +require_once 'Zend/Tool/Framework/System/Provider/Config.php'; +require_once 'Zend/Tool/Framework/System/Provider/Phpinfo.php'; +require_once 'Zend/Tool/Framework/System/Provider/Manifest.php'; +require_once 'Zend/Tool/Framework/System/Action/Create.php'; +require_once 'Zend/Tool/Framework/System/Action/Delete.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_System_Manifest + implements Zend_Tool_Framework_Manifest_ProviderManifestable, Zend_Tool_Framework_Manifest_ActionManifestable +{ + + public function getProviders() + { + $providers = array( + new Zend_Tool_Framework_System_Provider_Version(), + new Zend_Tool_Framework_System_Provider_Config(), + new Zend_Tool_Framework_System_Provider_Phpinfo(), + new Zend_Tool_Framework_System_Provider_Manifest() + ); + + return $providers; + } + + public function getActions() + { + $actions = array( + new Zend_Tool_Framework_System_Action_Create(), + new Zend_Tool_Framework_System_Action_Delete() + ); + + return $actions; + } +} diff --git a/library/Zend/Tool/Framework/System/Provider/Config.php b/library/Zend/Tool/Framework/System/Provider/Config.php new file mode 100755 index 000000000..685a60789 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Provider/Config.php @@ -0,0 +1,323 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** + * @see Zend_Tool_Framework_Provider_Abstract + */ +require_once "Zend/Tool/Framework/Provider/Abstract.php"; + +/** + * @see Zend_Config + */ +require_once "Zend/Config.php"; + +/** + * @see Zend_Config_Writer_Ini + */ +require_once "Zend/Config/Writer/Ini.php"; + +/** + * @see Zend_Loader + */ +require_once "Zend/Loader.php"; + +/** + * Configuration Provider + * + * @category Zend + * @package Zend_Tool + * @package Framework + * @uses Zend_Tool_Framework_Provider_Abstract + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ +class Zend_Tool_Framework_System_Provider_Config extends Zend_Tool_Framework_Provider_Abstract +{ + /** + * @var array + */ + protected $_levelCompleted = array(); + + /** + * array of specialties handled by this provider + * + * @var array + */ + protected $_specialties = array('Manifest', 'Provider'); + + /** + * @param string $type + */ + public function create() + { + /* @var $userConfig Zend_Tool_Framework_Client_Config */ + $userConfig = $this->_registry->getConfig(); + + $resp = $this->_registry->getResponse(); + if ($userConfig->exists()) { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception( + "A configuration already exists, cannot create a new one."); + } + + $homeDirectory = $this->_detectHomeDirectory(); + + $writer = new Zend_Config_Writer_Ini(); + $writer->setRenderWithoutSections(); + $filename = $homeDirectory."/.zf.ini"; + + $config = array( + 'php' => array( + 'include_path' => get_include_path(), + ), + ); + $writer->write($filename, new Zend_Config($config)); + + $resp = $this->_registry->getResponse(); + $resp->appendContent("Successfully written Zend Tool config."); + $resp->appendContent("It is located at: ".$filename); + } + + /** + * @return string + */ + protected function _detectHomeDirectory() + { + $envVars = array("ZF_HOME", "HOME", "HOMEPATH"); + foreach($envVars AS $env) { + $homeDirectory = getenv($env); + if ($homeDirectory != false && file_exists($homeDirectory)) { + return $homeDirectory; + } + } + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception("Cannot detect user home directory, set ZF_HOME enviroment variable."); + } + + /** + * Show Zend Tool User Configuration + * + * @return void + */ + public function show() + { + $userConfig = $this->_loadUserConfigIfExists(); + $configArray = $userConfig->getConfigInstance()->toArray(); + + $resp = $this->_registry->getResponse(); + + $i = 0; + $tree = ""; + foreach($configArray AS $k => $v) { + $i++; + $tree .= $this->_printTree($k, $v, 1, count($configArray)==$i); + } + $resp->appendContent("User Configuration: ".$userConfig->getConfigFilepath(), array("color" => "green")); + $resp->appendContent($tree, array("indention" => 2)); + } + + /** + * + * @param string $key + * @param string $value + * @param int $level + * @return string + */ + protected function _printTree($key, $value, $level=1, $isLast=false) + { + $this->_levelCompleted[$level] = false; + + $prefix = ""; + for ($i = 1; $i < $level; $i++) { + if ($this->_levelCompleted[$i] == true) { + $prefix .= " "; + } else { + $prefix .= "| "; + } + } + if ($isLast) { + $pointer = "`-- "; + } else { + $pointer = "|-- "; + } + + $tree = ""; + if (is_array($value)) { + $tree .= $prefix.$pointer.$key.PHP_EOL; + + if ($isLast == true) { + $this->_levelCompleted[$level] = true; + } + + $i = 0; + foreach ($value as $k => $v) { + $i++; + $tree .= $this->_printTree($k, $v, $level+1, (count($value)==$i)); + } + } else { + $tree .= $prefix.$pointer.$key.": ".trim($value).PHP_EOL; + } + + return $tree; + } + + public function enable() + { + $resp = $this->_registry->getResponse(); + $resp->appendContent('Use either "zf enable config.provider" or "zf enable config.manifest".'); + } + + public function disable() + { + $resp = $this->_registry->getResponse(); + $resp->appendContent('Use either "zf disable config.provider" or "zf disable config.manifest".'); + } + + /** + * @param string $className + */ + public function enableProvider($className) + { + Zend_Loader::loadClass($className); + $reflClass = new ReflectionClass($className); + if (!in_array("Zend_Tool_Framework_Provider_Interface", $reflClass->getInterfaceNames())) { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception("Given class is not a provider"); + } + $this->_doEnable($className); + } + + protected function _doEnable($className) + { + + $userConfig = $this->_loadUserConfigIfExists(); + + if (!isset($userConfig->basicloader)) { + $userConfig->basicloader = array(); + } + if (!isset($userConfig->basicloader->classes)) { + $userConfig->basicloader->classes = array(); + } + + $providerClasses = $userConfig->basicloader->classes->toArray(); + if (!in_array($className, $providerClasses)) { + if (count($providerClasses)) { + $pos = max(array_keys($providerClasses))+1; + } else { + $pos = 0; + } + $userConfig->basicloader->classes->$pos = $className; + + if ($userConfig->save()) { + $this->_registry->getResponse()->appendContent( + "Provider/Manifest '".$className."' was enabled for usage with Zend Tool.", + array("color" => "green", "aligncenter" => true) + ); + } else { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception( + "Could not write user configuration to persistence." + ); + } + } else { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception( + "Provider/Manifest '".$className."' is already enabled." + ); + } + } + + /** + * @param string $className + */ + public function enableManifest($className) + { + Zend_Loader::loadClass($className); + $reflClass = new ReflectionClass($className); + if (!in_array("Zend_Tool_Framework_Manifest_Interface", $reflClass->getInterfaceNames())) { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception("Given class is not a manifest."); + } + $this->_doEnable($className); + } + + /** + * @param string $className + */ + public function disableManifest($className) + { + $this->disableProvider($className); + } + + /** + * @param string $className + */ + public function disableProvider($className) + { + $userConfig = $this->_loadUserConfigIfExists(); + + if (!isset($userConfig->basicloader)) { + $userConfig->basicloader = array(); + } + if (!isset($userConfig->basicloader->classes)) { + $userConfig->basicloader->classes = array(); + } + + $providerClasses = $userConfig->basicloader->classes->toArray(); + if (($key = array_search($className, $providerClasses)) !== false) { + unset($userConfig->basicloader->classes->$key); + + if ($userConfig->save()) { + $this->_registry->getResponse()->appendContent( + "Provider/Manifest '".$className."' was disabled.", + array("color" => "green", "aligncenter" => true) + ); + } else { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception( + "Could not write user configuration to persistence." + ); + } + } else { + require_once "Zend/Tool/Framework/Exception.php"; + throw new Zend_Tool_Framework_Exception( + "Provider/Manifest '".$className."' is not enabled." + ); + } + } + + /** + * @return Zend_Tool_Framework_Client_Config + */ + protected function _loadUserConfigIfExists() + { + /* @var $userConfig Zend_Tool_Framework_Client_Config */ + $userConfig = $this->_registry->getConfig(); + + $resp = $this->_registry->getResponse(); + if (!$userConfig->exists()) { + $resp->appendContent("User has no config file.", array("aligncenter" => true, "color" => array('hiWhite', 'bgRed'))); + } + + return $userConfig; + } +} diff --git a/library/Zend/Tool/Framework/System/Provider/Manifest.php b/library/Zend/Tool/Framework/System/Provider/Manifest.php new file mode 100755 index 000000000..83f903523 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Provider/Manifest.php @@ -0,0 +1,114 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Framework_Registry_EnabledInterface + */ +require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php'; + +/** + * @see Zend_Tool_Framework_Provider_Interface + */ +require_once 'Zend/Tool/Framework/Provider/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_System_Provider_Manifest + implements Zend_Tool_Framework_Provider_Interface, Zend_Tool_Framework_Registry_EnabledInterface +{ + + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + } + + public function getName() + { + return 'Manifest'; + } + + public function show() + { + + $manifestRepository = $this->_registry->getManifestRepository(); + $response = $this->_registry->getResponse(); + + $metadataTree = array(); + + $longestAttrNameLen = 50; + + foreach ($manifestRepository as $metadata) { + + $metadataType = $metadata->getType(); + $metadataName = $metadata->getName(); + $metadataAttrs = $metadata->getAttributes('attributesParent'); + + if (!$metadataAttrs) { + $metadataAttrs = '(None)'; + } else { + $metadataAttrs = urldecode(http_build_query($metadataAttrs, null, ', ')); + } + + if (!array_key_exists($metadataType, $metadataTree)) { + $metadataTree[$metadataType] = array(); + } + + if (!array_key_exists($metadataName, $metadataTree[$metadataType])) { + $metadataTree[$metadataType][$metadataName] = array(); + } + + if (!array_key_exists($metadataAttrs, $metadataTree[$metadataType][$metadataName])) { + $metadataTree[$metadataType][$metadataName][$metadataAttrs] = array(); + } + + $longestAttrNameLen = (strlen($metadataAttrs) > $longestAttrNameLen) ? strlen($metadataAttrs) : $longestAttrNameLen; + + $metadataValue = $metadata->getValue(); + if (is_array($metadataValue) && count($metadataValue) > 0) { + $metadataValue = urldecode(http_build_query($metadataValue, null, ', ')); + } elseif (is_array($metadataValue)) { + $metadataValue = '(empty array)'; + } + + $metadataTree[$metadataType][$metadataName][$metadataAttrs][] = $metadataValue; + } + + foreach ($metadataTree as $metadataType => $metadatasByName) { + $response->appendContent($metadataType); + foreach ($metadatasByName as $metadataName => $metadatasByAttributes) { + $response->appendContent(" " . $metadataName); + foreach ($metadatasByAttributes as $metadataAttributeName => $metadataValues) { + foreach ($metadataValues as $metadataValue) { + $string = sprintf(" %-{$longestAttrNameLen}.{$longestAttrNameLen}s : ", $metadataAttributeName) + . $metadataValue; + $response->appendContent($string); + } + } + } + } + + } +} diff --git a/library/Zend/Tool/Framework/System/Provider/Phpinfo.php b/library/Zend/Tool/Framework/System/Provider/Phpinfo.php new file mode 100755 index 000000000..2b10bb6b9 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Provider/Phpinfo.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once 'Zend/Tool/Framework/Provider/Interface.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_System_Provider_Phpinfo implements Zend_Tool_Framework_Provider_Interface +{ + + public function showAction() + { + phpinfo(); + } + +} diff --git a/library/Zend/Tool/Framework/System/Provider/Version.php b/library/Zend/Tool/Framework/System/Provider/Version.php new file mode 100755 index 000000000..afaf933e3 --- /dev/null +++ b/library/Zend/Tool/Framework/System/Provider/Version.php @@ -0,0 +1,111 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once 'Zend/Tool/Framework/Registry.php'; +require_once 'Zend/Tool/Framework/Provider/Interface.php'; +require_once 'Zend/Version.php'; + +/** + * Version Provider + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Framework_System_Provider_Version + implements Zend_Tool_Framework_Provider_Interface, Zend_Tool_Framework_Registry_EnabledInterface +{ + + /** + * @var Zend_Tool_Framework_Registry_Interface + */ + protected $_registry = null; + + const MODE_MAJOR = 'major'; + const MODE_MINOR = 'minor'; + const MODE_MINI = 'mini'; + + protected $_specialties = array('MajorPart', 'MinorPart', 'MiniPart'); + + public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * Show Action + * + * @param string $mode The mode switch can be one of: major, minor, or mini (default) + * @param bool $nameIncluded + */ + public function show($mode = self::MODE_MINI, $nameIncluded = true) + { + + $versionInfo = $this->_splitVersion(); + + switch($mode) { + case self::MODE_MINOR: + unset($versionInfo['mini']); + break; + case self::MODE_MAJOR: + unset($versionInfo['mini'], $versionInfo['minor']); + break; + } + + $output = implode('.', $versionInfo); + + if ($nameIncluded) { + $output = 'Zend Framework Version: ' . $output; + } + + $this->_registry->response->appendContent($output); + } + + public function showMajorPart($nameIncluded = true) + { + $versionNumbers = $this->_splitVersion(); + $output = (($nameIncluded == true) ? 'ZF Major Version: ' : null) . $versionNumbers['major']; + $this->_registry->response->appendContent($output); + } + + public function showMinorPart($nameIncluded = true) + { + $versionNumbers = $this->_splitVersion(); + $output = (($nameIncluded == true) ? 'ZF Minor Version: ' : null) . $versionNumbers['minor']; + $this->_registry->response->appendContent($output); + } + + public function showMiniPart($nameIncluded = true) + { + $versionNumbers = $this->_splitVersion(); + $output = (($nameIncluded == true) ? 'ZF Mini Version: ' : null) . $versionNumbers['mini']; + $this->_registry->response->appendContent($output); + } + + protected function _splitVersion() + { + list($major, $minor, $mini) = explode('.', Zend_Version::VERSION); + return array('major' => $major, 'minor' => $minor, 'mini' => $mini); + } + +} diff --git a/library/Zend/Tool/Project/Context/Content/Engine.php b/library/Zend/Tool/Project/Context/Content/Engine.php new file mode 100755 index 000000000..e28ca8cb2 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Content/Engine.php @@ -0,0 +1,106 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Content_Engine_CodeGenerator + */ +require_once 'Zend/Tool/Project/Context/Content/Engine/CodeGenerator.php'; + +/** + * @see Zend_Tool_Project_Context_Content_Engine_Phtml + */ +require_once 'Zend/Tool/Project/Context/Content/Engine/Phtml.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Content_Engine +{ + /** + * @var Zend_Tool_Framework_Client_Storage + */ + protected $_storage = null; + + /** + * @var string + */ + protected $_keyInStorage = 'project/content'; + + /** + * @var array + */ + protected $_engines = array(); + + /** + * __construct() + * + * @param Zend_Tool_Framework_Client_Storage $storage + */ + public function __construct(Zend_Tool_Framework_Client_Storage $storage) + { + $this->_storage = $storage; + $this->_engines = array( + new Zend_Tool_Project_Context_Content_Engine_CodeGenerator($storage, $this->_keyInStorage), + new Zend_Tool_Project_Context_Content_Engine_Phtml($storage, $this->_keyInStorage), + ); + } + + /** + * getContent() + * + * @param Zend_Tool_Project_Context_Interface $context + * @param string $methodName + * @param mixed $parameters + * @return string + */ + public function getContent(Zend_Tool_Project_Context_Interface $context, $methodName, $parameters) + { + $content = null; + + foreach ($this->_engines as $engine) { + if ($engine->hasContent($context, $methodName, $parameters)) { + $content = $engine->getContent($context, $methodName, $parameters); + + if ($content != null) { + break; + } + + } + + } + + if ($content == null) { + return false; + } + + return $content; + } + +} diff --git a/library/Zend/Tool/Project/Context/Content/Engine/CodeGenerator.php b/library/Zend/Tool/Project/Context/Content/Engine/CodeGenerator.php new file mode 100755 index 000000000..b29346782 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Content/Engine/CodeGenerator.php @@ -0,0 +1,98 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Content_Engine_CodeGenerator +{ + /** + * @var Zend_Tool_Framework_Client_Storage + */ + protected $_storage = null; + + /** + * @var string + */ + protected $_contentPrefix = null; + + /** + * __construct() + * + * @param Zend_Tool_Framework_Client_Storage $storage + * @param string $contentPrefix + */ + public function __construct(Zend_Tool_Framework_Client_Storage $storage, $contentPrefix) + { + $this->_storage = $storage; + $this->_contentPrefix = $contentPrefix; + } + + /** + * hasContent() + * + * @param Zend_Tool_Project_Context_Interface $context + * @param string $method + * @return string + */ + public function hasContent(Zend_Tool_Project_Context_Interface $context, $method) + { + return $this->_storage->has($this->_contentPrefix . '/' . $context->getName() . '/' . $method . '.php'); + } + + /** + * getContent() + * + * @param Zend_Tool_Project_Context_Interface $context + * @param string $method + * @param mixed $parameters + * @return string + */ + public function getContent(Zend_Tool_Project_Context_Interface $context, $method, $parameters) + { + $streamUri = $this->_storage->getStreamUri($this->_contentPrefix . '/' . $context->getName() . '/' . $method . '.php'); + + if (method_exists($context, 'getCodeGenerator')) { + $codeGenerator = $context->getCodeGenerator(); + } else { + $codeGenerator = new Zend_CodeGenerator_Php_File(); + } + + $codeGenerator = include $streamUri; + + if (!$codeGenerator instanceof Zend_CodeGenerator_Abstract) { + throw new Zend_Tool_Project_Exception('Custom file at ' . $streamUri . ' did not return the $codeGenerator object.'); + } + + return $codeGenerator->generate(); + } + + +} diff --git a/library/Zend/Tool/Project/Context/Content/Engine/Phtml.php b/library/Zend/Tool/Project/Context/Content/Engine/Phtml.php new file mode 100755 index 000000000..7a7cbef0a --- /dev/null +++ b/library/Zend/Tool/Project/Context/Content/Engine/Phtml.php @@ -0,0 +1,89 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Content_Engine_Phtml +{ + + /** + * @var Zend_Tool_Framework_Client_Storage + */ + protected $_storage = null; + + /** + * @var string + */ + protected $_contentPrefix = null; + + /** + * __construct() + * + * @param Zend_Tool_Framework_Client_Storage $storage + * @param string $contentPrefix + */ + public function __construct(Zend_Tool_Framework_Client_Storage $storage, $contentPrefix) + { + $this->_storage = $storage; + $this->_contentPrefix = $contentPrefix; + } + + /** + * hasContext() + * + * @param Zend_Tool_Project_Context_Interface $context + * @param string $method + * @return string + */ + public function hasContent(Zend_Tool_Project_Context_Interface $context, $method) + { + return $this->_storage->has($this->_contentPrefix . '/' . $context . '/' . $method . '.phtml'); + } + + /** + * getContent() + * + * @param Zend_Tool_Project_Context_Interface $context + * @param string $method + * @param mixed $parameters + */ + public function getContent(Zend_Tool_Project_Context_Interface $context, $method, $parameters) + { + $streamUri = $this->_storage->getStreamUri($this->_contentPrefix . '/' . $context->getName() . '/' . $method . '.phtml'); + + ob_start(); + include $streamUri; + $content = ob_get_clean(); + + return $content; + } + +} diff --git a/library/Zend/Tool/Project/Context/Exception.php b/library/Zend/Tool/Project/Context/Exception.php new file mode 100755 index 000000000..458f2e5d5 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Exception.php @@ -0,0 +1,33 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once 'Zend/Tool/Project/Exception.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Exception extends Zend_Tool_Project_Exception +{ + +} diff --git a/library/Zend/Tool/Project/Context/Filesystem/Abstract.php b/library/Zend/Tool/Project/Context/Filesystem/Abstract.php new file mode 100755 index 000000000..23e2d8aab --- /dev/null +++ b/library/Zend/Tool/Project/Context/Filesystem/Abstract.php @@ -0,0 +1,165 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Interface + */ +require_once 'Zend/Tool/Project/Context/Interface.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tool_Project_Context_Filesystem_Abstract implements Zend_Tool_Project_Context_Interface +{ + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_resource = null; + + /** + * @var string + */ + protected $_baseDirectory = null; + + /** + * @var string + */ + protected $_filesystemName = null; + + /** + * init() + * + * @return Zend_Tool_Project_Context_Filesystem_Abstract + */ + public function init() + { + $parentBaseDirectory = $this->_resource->getParentResource()->getContext()->getPath(); + $this->_baseDirectory = $parentBaseDirectory; + return $this; + } + + /** + * setResource() + * + * @param Zend_Tool_Project_Profile_Resource $resource + * @return Zend_Tool_Project_Context_Filesystem_Abstract + */ + public function setResource(Zend_Tool_Project_Profile_Resource $resource) + { + $this->_resource = $resource; + return $this; + } + + /** + * setBaseDirectory() + * + * @param string $baseDirectory + * @return Zend_Tool_Project_Context_Filesystem_Abstract + */ + public function setBaseDirectory($baseDirectory) + { + $this->_baseDirectory = rtrim(str_replace('\\', '/', $baseDirectory), '/'); + return $this; + } + + /** + * getBaseDirectory() + * + * @return string + */ + public function getBaseDirectory() + { + return $this->_baseDirectory; + } + + /** + * setFilesystemName() + * + * @param string $filesystemName + * @return Zend_Tool_Project_Context_Filesystem_Abstract + */ + public function setFilesystemName($filesystemName) + { + $this->_filesystemName = $filesystemName; + return $this; + } + + /** + * getFilesystemName() + * + * @return string + */ + public function getFilesystemName() + { + return $this->_filesystemName; + } + + /** + * getPath() + * + * @return string + */ + public function getPath() + { + $path = $this->_baseDirectory; + if ($this->_filesystemName) { + $path .= '/' . $this->_filesystemName; + } + return $path; + } + + /** + * exists() + * + * @return bool + */ + public function exists() + { + return file_exists($this->getPath()); + } + + /** + * create() + * + * Create this resource/context + * + */ + abstract public function create(); + + /** + * delete() + * + * Delete this resouce/context + * + */ + abstract public function delete(); + +} diff --git a/library/Zend/Tool/Project/Context/Filesystem/Directory.php b/library/Zend/Tool/Project/Context/Filesystem/Directory.php new file mode 100755 index 000000000..12e9435b3 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Filesystem/Directory.php @@ -0,0 +1,87 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Abstract + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Abstract.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Filesystem_Directory extends Zend_Tool_Project_Context_Filesystem_Abstract +{ + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'directory'; + } + + /** + * create() + * + * @return Zend_Tool_Project_Context_Filesystem_Directory; + */ + public function create() + { + // check to ensure the parent exists, if not, call it and create it + if (($parentResource = $this->_resource->getParentResource()) instanceof Zend_Tool_Project_Profile_Resource) { + if ((($parentContext = $parentResource->getContext()) instanceof Zend_Tool_Project_Context_Filesystem_Abstract) + && (!$parentContext->exists())) { + $parentResource->create(); + } + } + + if (!file_exists($this->getPath())) { + mkdir($this->getPath()); + } + + return $this; + } + + /** + * delete() + * + * @return Zend_Tool_Project_Context_Filesystem_Directory + */ + public function delete() + { + $this->_resource->setDeleted(true); + rmdir($this->getPath()); + + return $this; + } + +} diff --git a/library/Zend/Tool/Project/Context/Filesystem/File.php b/library/Zend/Tool/Project/Context/Filesystem/File.php new file mode 100755 index 000000000..645a4b763 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Filesystem/File.php @@ -0,0 +1,174 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Abstract + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Abstract.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Filesystem_File extends Zend_Tool_Project_Context_Filesystem_Abstract +{ + + protected $_fileOnlyContext = null; + + protected $_filesystemName = null; + + protected $_content = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'file'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Filesystem_File + */ + public function init() + { + if ($this->_resource->hasAttribute('filesystemName')) { + $this->_filesystemName = $this->_resource->getAttribute('filesystemName'); + } + + // check to see if this file is + if ($this->getName() == 'file') { + $this->_initFileOnlyContext(); + } + + // @potential-todo check to ensure that this 'file' resource has no children + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + $returnAttrs = array(); + if ($this->_filesystemName !== null) { + $returnAttrs['filesystemName'] = $this->_filesystemName; + } + return $returnAttrs; + } + + /** + * setResource() + * + * @param unknown_type $resource + */ + public function setResource(Zend_Tool_Project_Profile_Resource $resource) + { + $this->_resource = $resource; + $this->_resource->setAppendable(false); + return $this; + } + + /** + * getResource() + * + * @return Zend_Tool_Project_Profile_Resource + */ + public function getResource() + { + return $this->_resource; + } + + /** + * create() + * + * @return Zend_Tool_Project_Context_Filesystem_File + */ + public function create() + { + // check to ensure the parent exists, if not, call it and create it + if (($parentResource = $this->_resource->getParentResource()) instanceof Zend_Tool_Project_Profile_Resource) { + if ((($parentContext = $parentResource->getContext()) instanceof Zend_Tool_Project_Context_Filesystem_Abstract) + && (!$parentContext->exists())) { + $parentResource->create(); + } + } + + + if (file_exists($this->getPath())) { + // @todo propt user to determine if its ok to overwrite file + } + + file_put_contents($this->getPath(), $this->getContents()); + return $this; + } + + /** + * delete() + * + * @return Zend_Tool_Project_Context_Filesystem_File + */ + public function delete() + { + unlink($this->getPath()); + $this->_resource->setDeleted(true); + return $this; + } + + /** + * getContents() + * + * @return null + */ + public function getContents() + { + return $this->_content; + } + + protected function _initFileOnlyContext() + { + if ($this->_resource->hasAttribute('defaultContentCallback')) { + $contentFunc = $this->_resource->getAttribute('defaultContentCallback'); + if (is_callable($contentFunc)) { + $this->_content = call_user_func_array($contentFunc, array($this)); + } + } + if ($this->_filesystemName == null) { + $this->_filesystemName = 'file.txt'; + } + } + +} diff --git a/library/Zend/Tool/Project/Context/Interface.php b/library/Zend/Tool/Project/Context/Interface.php new file mode 100755 index 000000000..6eb2af6f5 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Interface.php @@ -0,0 +1,38 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Interface for contexts + * + * setResource() is an optional method that if the context supports + * will be set with the resource at construction time + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Project_Context_Interface +{ + + public function getName(); + +} diff --git a/library/Zend/Tool/Project/Context/Repository.php b/library/Zend/Tool/Project/Context/Repository.php new file mode 100755 index 000000000..8a9d8f4c1 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Repository.php @@ -0,0 +1,189 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +require_once 'Zend/Tool/Project/Context/System/Interface.php'; +require_once 'Zend/Tool/Project/Context/System/TopLevelRestrictable.php'; +require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php'; + +/** + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Repository implements Countable +{ + + protected static $_instance = null; + protected static $_isInitialized = false; + + protected $_shortContextNames = array(); + protected $_contexts = array(); + + /** + * Enter description here... + * + * @return Zend_Tool_Project_Context_Repository + */ + public static function getInstance() + { + if (self::$_instance == null) { + self::$_instance = new self(); + } + + return self::$_instance; + } + + public static function resetInstance() + { + self::$_instance = null; + self::$_isInitialized = false; + } + + protected function __construct() + { + if (self::$_isInitialized == false) { + $this->addContextClass('Zend_Tool_Project_Context_System_ProjectDirectory') + ->addContextClass('Zend_Tool_Project_Context_System_ProjectProfileFile') + ->addContextClass('Zend_Tool_Project_Context_System_ProjectProvidersDirectory'); + self::$_isInitialized = true; + } + } + + public function addContextsFromDirectory($directory, $prefix) + { + $prefix = trim($prefix, '_') . '_'; + foreach (new DirectoryIterator($directory) as $directoryItem) { + if ($directoryItem->isDot() || (substr($directoryItem->getFilename(), -4) !== '.php')) { + continue; + } + $class = $prefix . substr($directoryItem->getFilename(), 0, -4); + $this->addContextClass($class); + } + } + + + public function addContextClass($contextClass) + { + if (!class_exists($contextClass)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($contextClass); + } + $reflectionContextClass = new ReflectionClass($contextClass); + if ($reflectionContextClass->isInstantiable()) { + $context = new $contextClass(); + return $this->addContext($context); + } + return $this; + } + + /** + * Enter description here... + * + * @param Zend_Tool_Project_Context_Interface $context + * @return Zend_Tool_Project_Context_Repository + */ + public function addContext(Zend_Tool_Project_Context_Interface $context) + { + $isSystem = ($context instanceof Zend_Tool_Project_Context_System_Interface); + $isTopLevel = ($context instanceof Zend_Tool_Project_Context_System_TopLevelRestrictable); + $isOverwritable = !($context instanceof Zend_Tool_Project_Context_System_NotOverwritable); + + $index = (count($this->_contexts)) ? max(array_keys($this->_contexts)) + 1 : 1; + + $normalName = $this->_normalizeName($context->getName()); + + if (isset($this->_shortContextNames[$normalName]) && ($this->_contexts[$this->_shortContextNames[$normalName]]['isOverwritable'] === false) ) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception('Context ' . $context->getName() . ' is not overwriteable.'); + } + + $this->_shortContextNames[$normalName] = $index; + $this->_contexts[$index] = array( + 'isTopLevel' => $isTopLevel, + 'isSystem' => $isSystem, + 'isOverwritable' => $isOverwritable, + 'normalName' => $normalName, + 'context' => $context + ); + + return $this; + } + + public function getContext($name) + { + if (!$this->hasContext($name)) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception('Context by name ' . $name . ' does not exist in the registry.'); + } + + $name = $this->_normalizeName($name); + return clone $this->_contexts[$this->_shortContextNames[$name]]['context']; + } + + public function hasContext($name) + { + $name = $this->_normalizeName($name); + return (isset($this->_shortContextNames[$name]) ? true : false); + } + + public function isSystemContext($name) + { + if (!$this->hasContext($name)) { + return false; + } + + $name = $this->_normalizeName($name); + $index = $this->_shortContextNames[$name]; + return $this->_contexts[$index]['isSystemContext']; + } + + public function isTopLevelContext($name) + { + if (!$this->hasContext($name)) { + return false; + } + $name = $this->_normalizeName($name); + $index = $this->_shortContextNames[$name]; + return $this->_contexts[$index]['isTopLevel']; + } + + public function isOverwritableContext($name) + { + if (!$this->hasContext($name)) { + return false; + } + $name = $this->_normalizeName($name); + $index = $this->_shortContextNames[$name]; + return $this->_contexts[$index]['isOverwritable']; + } + + public function count() + { + return count($this->_contexts); + } + + protected function _normalizeName($name) + { + return strtolower($name); + } + +} diff --git a/library/Zend/Tool/Project/Context/System/Interface.php b/library/Zend/Tool/Project/Context/System/Interface.php new file mode 100755 index 000000000..f79faa973 --- /dev/null +++ b/library/Zend/Tool/Project/Context/System/Interface.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Project_Context_System_Interface +{ + +} diff --git a/library/Zend/Tool/Project/Context/System/NotOverwritable.php b/library/Zend/Tool/Project/Context/System/NotOverwritable.php new file mode 100755 index 000000000..19f7e89d4 --- /dev/null +++ b/library/Zend/Tool/Project/Context/System/NotOverwritable.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Project_Context_System_NotOverwritable +{ + +} diff --git a/library/Zend/Tool/Project/Context/System/ProjectDirectory.php b/library/Zend/Tool/Project/Context/System/ProjectDirectory.php new file mode 100755 index 000000000..8dce0473f --- /dev/null +++ b/library/Zend/Tool/Project/Context/System/ProjectDirectory.php @@ -0,0 +1,128 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * @see Zend_Tool_Project_Context_System_Interface + */ +require_once 'Zend/Tool/Project/Context/System/Interface.php'; + +/** + * @see Zend_Tool_Project_Context_System_TopLevelRestrictable + */ +require_once 'Zend/Tool/Project/Context/System/TopLevelRestrictable.php'; + +/** + * @see Zend_Tool_Project_Context_System_NotOverwritable + */ +require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_System_ProjectDirectory + extends Zend_Tool_Project_Context_Filesystem_Directory + implements Zend_Tool_Project_Context_System_Interface, + Zend_Tool_Project_Context_System_NotOverwritable, + Zend_Tool_Project_Context_System_TopLevelRestrictable +{ + + /** + * @var string + */ + protected $_filesystemName = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ProjectDirectory'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_System_ProjectDirectory + */ + public function init() + { + // get base path from attributes (would be in path attribute) + $projectDirectory = $this->_resource->getAttribute('path'); + + // if not, get from profile + if ($projectDirectory == null) { + $projectDirectory = $this->_resource->getProfile()->getAttribute('projectDirectory'); + } + + // if not, exception. + if ($projectDirectory == null) { + require_once 'Zend/Tool/Project/Exception.php'; + throw new Zend_Tool_Project_Exception('projectDirectory cannot find the directory for this project.'); + } + + $this->_baseDirectory = rtrim($projectDirectory, '\\/'); + return $this; + } + + /** + * create() + * + * @return Zend_Tool_Project_Context_System_ProjectDirectory + */ + public function create() + { + if (file_exists($this->getPath())) { + /* + foreach (new DirectoryIterator($this->getPath()) as $item) { + if (!$item->isDot()) { + if ($registry->getClient()->isInteractive()) { + // @todo prompt for override + } else { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception('This directory is not empty, project creation aborted.'); + } + break; + } + } + */ + } + + parent::create(); + return $this; + } + +} diff --git a/library/Zend/Tool/Project/Context/System/ProjectProfileFile.php b/library/Zend/Tool/Project/Context/System/ProjectProfileFile.php new file mode 100755 index 000000000..dfaa573af --- /dev/null +++ b/library/Zend/Tool/Project/Context/System/ProjectProfileFile.php @@ -0,0 +1,118 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * @see Zend_Tool_Project_Context_System_Interface + */ +require_once 'Zend/Tool/Project/Context/System/Interface.php'; + +/** + * @see Zend_Tool_Project_Context_System_NotOverwritable + */ +require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php'; + +/** + * @see Zend_Tool_Project_Profile_FileParser_Xml + */ +require_once 'Zend/Tool/Project/Profile/FileParser/Xml.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_System_ProjectProfileFile + extends Zend_Tool_Project_Context_Filesystem_File + implements Zend_Tool_Project_Context_System_Interface, + Zend_Tool_Project_Context_System_NotOverwritable +{ + + /** + * @var string + */ + protected $_filesystemName = '.zfproject.xml'; + + /** + * @var Zend_Tool_Project_Profile + */ + protected $_profile = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ProjectProfileFile'; + } + + /** + * setProfile() + * + * @param Zend_Tool_Project_Profile $profile + * @return Zend_Tool_Project_Context_System_ProjectProfileFile + */ + public function setProfile($profile) + { + $this->_profile = $profile; + return $this; + } + + /** + * save() + * + * Proxy to create + * + * @return Zend_Tool_Project_Context_System_ProjectProfileFile + */ + public function save() + { + parent::create(); + return $this; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $parser = new Zend_Tool_Project_Profile_FileParser_Xml(); + $profile = $this->_resource->getProfile(); + $xml = $parser->serialize($profile); + return $xml; + } + +} diff --git a/library/Zend/Tool/Project/Context/System/ProjectProvidersDirectory.php b/library/Zend/Tool/Project/Context/System/ProjectProvidersDirectory.php new file mode 100755 index 000000000..52fb266fa --- /dev/null +++ b/library/Zend/Tool/Project/Context/System/ProjectProvidersDirectory.php @@ -0,0 +1,87 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * @see Zend_Tool_Project_Context_System_Interface + */ +require_once 'Zend/Tool/Project/Context/System/Interface.php'; + +/** + * @see Zend_Tool_Project_Context_System_NotOverwritable + */ +require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_System_ProjectProvidersDirectory + extends Zend_Tool_Project_Context_Filesystem_Directory + implements Zend_Tool_Project_Context_System_Interface, + Zend_Tool_Project_Context_System_NotOverwritable +{ + + /** + * @var string + */ + protected $_filesystemName = 'providers'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ProjectProvidersDirectory'; + } + + public function loadProviders(Zend_Tool_Framework_Registry_Interface $registry) + { + if (file_exists($this->getPath())) { + + $providerRepository = $registry->getProviderRepository(); + + foreach (new DirectoryIterator($this->getPath()) as $item) { + if ($item->isFile() && (($suffixStart = strpos($item->getFilename(), 'Provider.php')) !== false)) { + $className = substr($item->getFilename(), 0, $suffixStart+8); + // $loadableFiles[$className] = $item->getPathname(); + include_once $item->getPathname(); + $providerRepository->addProvider(new $className()); + } + } + } + } + +} diff --git a/library/Zend/Tool/Project/Context/System/TopLevelRestrictable.php b/library/Zend/Tool/Project/Context/System/TopLevelRestrictable.php new file mode 100755 index 000000000..5680bb253 --- /dev/null +++ b/library/Zend/Tool/Project/Context/System/TopLevelRestrictable.php @@ -0,0 +1,37 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +interface Zend_Tool_Project_Context_System_TopLevelRestrictable +{ + +} diff --git a/library/Zend/Tool/Project/Context/Zf/AbstractClassFile.php b/library/Zend/Tool/Project/Context/Zf/AbstractClassFile.php new file mode 100755 index 000000000..dc58b2419 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/AbstractClassFile.php @@ -0,0 +1,84 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +abstract class Zend_Tool_Project_Context_Zf_AbstractClassFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * getFullClassName() + * + * @param string $localClassName + * @param string $classContextName + */ + public function getFullClassName($localClassName, $classContextName = null) + { + + // find the ApplicationDirectory OR ModuleDirectory + $currentResource = $this->_resource; + do { + $resourceName = $currentResource->getName(); + if ($resourceName == 'ApplicationDirectory' || $resourceName == 'ModuleDirectory') { + $containingResource = $currentResource; + break; + } + } while ($currentResource instanceof Zend_Tool_Project_Profile_Resource + && $currentResource = $currentResource->getParentResource()); + + $fullClassName = ''; + + // go find the proper prefix + if (isset($containingResource)) { + if ($containingResource->getName() == 'ApplicationDirectory') { + $prefix = $containingResource->getAttribute('classNamePrefix'); + $fullClassName = $prefix; + } elseif ($containingResource->getName() == 'ModuleDirectory') { + $filter = new Zend_Filter_Word_DashToCamelCase(); + $prefix = $filter->filter(ucfirst($containingResource->getAttribute('moduleName'))) . '_'; + $fullClassName = $prefix; + } + } + + if ($classContextName) { + $fullClassName .= rtrim($classContextName, '_') . '_'; + } + $fullClassName .= $localClassName; + + return $fullClassName; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ActionMethod.php b/library/Zend/Tool/Project/Context/Zf/ActionMethod.php new file mode 100755 index 000000000..0ff7a9539 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ActionMethod.php @@ -0,0 +1,224 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Interface + */ +require_once 'Zend/Tool/Project/Context/Interface.php'; + +/** + * @see Zend_Reflection_File + */ +require_once 'Zend/Reflection/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ActionMethod implements Zend_Tool_Project_Context_Interface +{ + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_resource = null; + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_controllerResource = null; + + /** + * @var string + */ + protected $_controllerPath = ''; + + /** + * @var string + */ + protected $_actionName = null; + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function init() + { + $this->_actionName = $this->_resource->getAttribute('actionName'); + + $this->_resource->setAppendable(false); + $this->_controllerResource = $this->_resource->getParentResource(); + if (!$this->_controllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_ControllerFile) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a ControllerFile'); + } + // make the ControllerFile node appendable so we can tack on the actionMethod. + $this->_resource->getParentResource()->setAppendable(true); + + $this->_controllerPath = $this->_controllerResource->getContext()->getPath(); + + /* + * This code block is now commented, its doing to much for init() + * + if ($this->_controllerPath != '' && self::hasActionMethod($this->_controllerPath, $this->_actionName)) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception('An action named ' . $this->_actionName . 'Action already exists in this controller'); + } + */ + + return $this; + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'actionName' => $this->getActionName() + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ActionMethod'; + } + + /** + * setResource() + * + * @param Zend_Tool_Project_Profile_Resource $resource + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function setResource(Zend_Tool_Project_Profile_Resource $resource) + { + $this->_resource = $resource; + return $this; + } + + /** + * setActionName() + * + * @param string $actionName + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function setActionName($actionName) + { + $this->_actionName = $actionName; + return $this; + } + + /** + * getActionName() + * + * @return string + */ + public function getActionName() + { + return $this->_actionName; + } + + /** + * create() + * + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function create() + { + if (self::createActionMethod($this->_controllerPath, $this->_actionName) === false) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception( + 'Could not create action within controller ' . $this->_controllerPath + . ' with action name ' . $this->_actionName + ); + } + return $this; + } + + /** + * delete() + * + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function delete() + { + // @todo do this + return $this; + } + + /** + * createAcionMethod() + * + * @param string $controllerPath + * @param string $actionName + * @param string $body + * @return true + */ + public static function createActionMethod($controllerPath, $actionName, $body = ' // action body') + { + if (!file_exists($controllerPath)) { + return false; + } + + $controllerCodeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($controllerPath, true, true); + $controllerCodeGenFile->getClass()->setMethod(array( + 'name' => $actionName . 'Action', + 'body' => $body + )); + + file_put_contents($controllerPath, $controllerCodeGenFile->generate()); + return true; + } + + /** + * hasActionMethod() + * + * @param string $controllerPath + * @param string $actionName + * @return bool + */ + public static function hasActionMethod($controllerPath, $actionName) + { + if (!file_exists($controllerPath)) { + return false; + } + + $controllerCodeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($controllerPath, true, true); + return $controllerCodeGenFile->getClass()->hasMethod($actionName . 'Action'); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ApisDirectory.php b/library/Zend/Tool/Project/Context/Zf/ApisDirectory.php new file mode 100755 index 000000000..540482b6e --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ApisDirectory.php @@ -0,0 +1,55 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ApisDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + /** + * @var string + */ + protected $_filesystemName = 'apis'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ApisDirectory'; + } +} diff --git a/library/Zend/Tool/Project/Context/Zf/ApplicationConfigFile.php b/library/Zend/Tool/Project/Context/Zf/ApplicationConfigFile.php new file mode 100755 index 000000000..da74e4dbe --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ApplicationConfigFile.php @@ -0,0 +1,285 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ApplicationConfigFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'application.ini'; + + /** + * @var string + */ + protected $_content = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ApplicationConfigFile'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ApplicationConfigFile + */ + public function init() + { + $this->_type = $this->_resource->getAttribute('type'); + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + return array('type' => $this->_type); + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + if ($this->_content === null) { + if (file_exists($this->getPath())) { + $this->_content = file_get_contents($this->getPath()); + } else { + $this->_content = $this->_getDefaultContents(); + } + + } + + return $this->_content; + } + + public function getAsZendConfig($section = 'production') + { + return new Zend_Config_Ini($this->getPath(), $section); + } + + /** + * addStringItem() + * + * @param string $key + * @param string $value + * @param string $section + * @param bool $quoteValue + * @return Zend_Tool_Project_Context_Zf_ApplicationConfigFile + */ + public function addStringItem($key, $value, $section = 'production', $quoteValue = true) + { + // null quote value means to auto-detect + if ($quoteValue === null) { + $quoteValue = preg_match('#[\"\']#', $value) ? false : true; + } + + if ($quoteValue == true) { + $value = '"' . $value . '"'; + } + + $contentLines = preg_split('#[\n\r]#', $this->getContents()); + + $newLines = array(); + $insideSection = false; + + foreach ($contentLines as $contentLineIndex => $contentLine) { + + if ($insideSection === false && preg_match('#^\[' . $section . '#', $contentLine)) { + $insideSection = true; + } + + $newLines[] = $contentLine; + if ($insideSection) { + // if its blank, or a section heading + if (isset($contentLines[$contentLineIndex + 1]{0}) && $contentLines[$contentLineIndex + 1]{0} == '[') { + $newLines[] = $key . ' = ' . $value; + $insideSection = null; + } else if (!isset($contentLines[$contentLineIndex + 1])){ + $newLines[] = $key . ' = ' . $value; + $insideSection = null; + } + } + } + + $this->_content = implode("\n", $newLines); + return $this; + } + + /** + * + * @param array $item + * @param string $section + * @param bool $quoteValue + * @return Zend_Tool_Project_Context_Zf_ApplicationConfigFile + */ + public function addItem($item, $section = 'production', $quoteValue = true) + { + $stringItems = array(); + $stringValues = array(); + $configKeyNames = array(); + + $rii = new RecursiveIteratorIterator( + new RecursiveArrayIterator($item), + RecursiveIteratorIterator::SELF_FIRST + ); + + $lastDepth = 0; + + // loop through array structure recursively to create proper keys + foreach ($rii as $name => $value) { + $lastDepth = $rii->getDepth(); + + if (is_array($value)) { + array_push($configKeyNames, $name); + } else { + $stringItems[] = implode('.', $configKeyNames) . '.' . $name; + $stringValues[] = $value; + } + } + + foreach ($stringItems as $stringItemIndex => $stringItem) { + $this->addStringItem($stringItem, $stringValues[$stringItemIndex], $section, $quoteValue); + } + + return $this; + } + + public function removeStringItem($key, $section = 'production') + { + $contentLines = file($this->getPath()); + + $newLines = array(); + $insideSection = false; + + foreach ($contentLines as $contentLineIndex => $contentLine) { + + if ($insideSection === false && preg_match('#^\[' . $section . '#', $contentLine)) { + $insideSection = true; + } + + if ($insideSection) { + // if its blank, or a section heading + if ((trim($contentLine) == null) || ($contentLines[$contentLineIndex + 1][0] == '[')) { + $insideSection = null; + } + } + + if (!preg_match('#' . $key . '\s?=.*#', $contentLine)) { + $newLines[] = $contentLine; + } + } + + $this->_content = implode('', $newLines); + } + + public function removeItem($item, $section = 'production') + { + $stringItems = array(); + $stringValues = array(); + $configKeyNames = array(); + + $rii = new RecursiveIteratorIterator( + new RecursiveArrayIterator($item), + RecursiveIteratorIterator::SELF_FIRST + ); + + $lastDepth = 0; + + // loop through array structure recursively to create proper keys + foreach ($rii as $name => $value) { + $lastDepth = $rii->getDepth(); + + if (is_array($value)) { + array_push($configKeyNames, $name); + } else { + $stringItems[] = implode('.', $configKeyNames) . '.' . $name; + $stringValues[] = $value; + } + } + + foreach ($stringItems as $stringItemIndex => $stringItem) { + $this->removeStringItem($stringItem, $section); + } + + return $this; + } + + protected function _getDefaultContents() + { + + $contents =<<<EOS +[production] +phpSettings.display_startup_errors = 0 +phpSettings.display_errors = 0 +includePaths.library = APPLICATION_PATH "/../library" +bootstrap.path = APPLICATION_PATH "/Bootstrap.php" +bootstrap.class = "Bootstrap" +appnamespace = "Application" +resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" +resources.frontController.params.displayExceptions = 0 + +[staging : production] + +[testing : production] +phpSettings.display_startup_errors = 1 +phpSettings.display_errors = 1 + +[development : production] +phpSettings.display_startup_errors = 1 +phpSettings.display_errors = 1 +resources.frontController.params.displayExceptions = 1 + +EOS; + + return $contents; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ApplicationDirectory.php b/library/Zend/Tool/Project/Context/Zf/ApplicationDirectory.php new file mode 100755 index 000000000..14b9353b6 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ApplicationDirectory.php @@ -0,0 +1,81 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ApplicationDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + protected $_filesystemName = 'application'; + + protected $_classNamePrefix = 'Application_'; + + public function init() + { + if ($this->_resource->hasAttribute('classNamePrefix')) { + $this->_classNamePrefix = $this->_resource->getAttribute('classNamePrefix'); + } + parent::init(); + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'classNamePrefix' => $this->getClassNamePrefix() + ); + } + + public function getName() + { + return 'ApplicationDirectory'; + } + + public function setClassNamePrefix($classNamePrefix) + { + $this->_classNamePrefix = $classNamePrefix; + } + + public function getClassNamePrefix() + { + return $this->_classNamePrefix; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/BootstrapFile.php b/library/Zend/Tool/Project/Context/Zf/BootstrapFile.php new file mode 100755 index 000000000..e815c9deb --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/BootstrapFile.php @@ -0,0 +1,119 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_BootstrapFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'Bootstrap.php'; + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_applicationConfigFile = null; + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_applicationDirectory = null; + + /** + * @var Zend_Application + */ + protected $_applicationInstance = null; + + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'BootstrapFile'; + } + + public function init() + { + parent::init(); + + $this->_applicationConfigFile = $this->_resource->getProfile()->search('ApplicationConfigFile'); + $this->_applicationDirectory = $this->_resource->getProfile()->search('ApplicationDirectory'); + + if (($this->_applicationConfigFile === false) || ($this->_applicationDirectory === false)) { + throw new Exception('To use the BootstrapFile context, your project requires the use of both the "ApplicationConfigFile" and "ApplicationDirectory" contexts.'); + } + + + } + + /** + * getContents() + * + * @return array + */ + public function getContents() + { + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => 'Bootstrap', + 'extendedClass' => 'Zend_Application_Bootstrap_Bootstrap', + )), + ) + )); + + return $codeGenFile->generate(); + } + + public function getApplicationInstance() + { + if ($this->_applicationInstance == null) { + if ($this->_applicationConfigFile->getContext()->exists()) { + define('APPLICATION_PATH', $this->_applicationDirectory->getPath()); + $applicationOptions = array(); + $applicationOptions['config'] = $this->_applicationConfigFile->getPath(); + + $this->_applicationInstance = new Zend_Application( + 'development', + $applicationOptions + ); + } + } + + return $this->_applicationInstance; + } +} diff --git a/library/Zend/Tool/Project/Context/Zf/CacheDirectory.php b/library/Zend/Tool/Project/Context/Zf/CacheDirectory.php new file mode 100755 index 000000000..d6b37ca7f --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/CacheDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_CacheDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'cache'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'CacheDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ConfigFile.php b/library/Zend/Tool/Project/Context/Zf/ConfigFile.php new file mode 100755 index 000000000..9be50e476 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ConfigFile.php @@ -0,0 +1,67 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ConfigFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'bootstrap.php'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ConfigFile'; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + return ''; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ConfigsDirectory.php b/library/Zend/Tool/Project/Context/Zf/ConfigsDirectory.php new file mode 100755 index 000000000..a6efc2e59 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ConfigsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ConfigsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'configs'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ConfigsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ControllerFile.php b/library/Zend/Tool/Project/Context/Zf/ControllerFile.php new file mode 100755 index 000000000..d6df9711a --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ControllerFile.php @@ -0,0 +1,223 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ControllerFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_controllerName = 'index'; + + /** + * @var string + */ + protected $_moduleName = null; + + /** + * @var string + */ + protected $_filesystemName = 'controllerName'; + + /** + * init() + * + */ + public function init() + { + $this->_controllerName = $this->_resource->getAttribute('controllerName'); + $this->_moduleName = $this->_resource->getAttribute('moduleName'); + $this->_filesystemName = ucfirst($this->_controllerName) . 'Controller.php'; + parent::init(); + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'controllerName' => $this->getControllerName() + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ControllerFile'; + } + + /** + * getControllerName() + * + * @return string + */ + public function getControllerName() + { + return $this->_controllerName; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $filter = new Zend_Filter_Word_DashToCamelCase(); + + $className = ($this->_moduleName) ? $filter->filter(ucfirst($this->_moduleName)) . '_' : ''; + $className .= ucfirst($this->_controllerName) . 'Controller'; + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'fileName' => $this->getPath(), + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'Zend_Controller_Action', + 'methods' => array( + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'init', + 'body' => '/* Initialize action controller here */', + )) + ) + )) + ) + )); + + + if ($className == 'ErrorController') { + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'fileName' => $this->getPath(), + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'Zend_Controller_Action', + 'methods' => array( + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'errorAction', + 'body' => <<<EOS +\$errors = \$this->_getParam('error_handler'); + +if (!\$errors || !\$errors instanceof ArrayObject) { + \$this->view->message = 'You have reached the error page'; + return; +} + +switch (\$errors->type) { + case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE: + case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: + case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: + // 404 error -- controller or action not found + \$this->getResponse()->setHttpResponseCode(404); + \$priority = Zend_Log::NOTICE; + \$this->view->message = 'Page not found'; + break; + default: + // application error + \$this->getResponse()->setHttpResponseCode(500); + \$priority = Zend_Log::CRIT; + \$this->view->message = 'Application error'; + break; +} + +// Log exception, if logger available +if (\$log = \$this->getLog()) { + \$log->log(\$this->view->message, \$priority, \$errors->exception); + \$log->log('Request Parameters', \$priority, \$errors->request->getParams()); +} + +// conditionally display exceptions +if (\$this->getInvokeArg('displayExceptions') == true) { + \$this->view->exception = \$errors->exception; +} + +\$this->view->request = \$errors->request; +EOS + )), + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'getLog', + 'body' => <<<EOS +\$bootstrap = \$this->getInvokeArg('bootstrap'); +if (!\$bootstrap->hasResource('Log')) { + return false; +} +\$log = \$bootstrap->getResource('Log'); +return \$log; +EOS + )), + ) + )) + ) + )); + + } + + // store the generator into the registry so that the addAction command can use the same object later + Zend_CodeGenerator_Php_File::registerFileCodeGenerator($codeGenFile); // REQUIRES filename to be set + return $codeGenFile->generate(); + } + + /** + * addAction() + * + * @param string $actionName + */ + public function addAction($actionName) + { + $classCodeGen = $this->getCodeGenerator(); + $classCodeGen->setMethod(array('name' => $actionName . 'Action', 'body' => ' // action body here')); + file_put_contents($this->getPath(), $classCodeGen->generate()); + } + + /** + * getCodeGenerator() + * + * @return Zend_CodeGenerator_Php_Class + */ + public function getCodeGenerator() + { + $codeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($this->getPath()); + $codeGenFileClasses = $codeGenFile->getClasses(); + $class = array_shift($codeGenFileClasses); + return $class; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ControllersDirectory.php b/library/Zend/Tool/Project/Context/Zf/ControllersDirectory.php new file mode 100755 index 000000000..fe6cd4dc1 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ControllersDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ControllersDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'controllers'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ControllersDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/DataDirectory.php b/library/Zend/Tool/Project/Context/Zf/DataDirectory.php new file mode 100755 index 000000000..396716e16 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/DataDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_DataDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'data'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'DataDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/DbTableDirectory.php b/library/Zend/Tool/Project/Context/Zf/DbTableDirectory.php new file mode 100755 index 000000000..ff4d54ece --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/DbTableDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_DbTableDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'DbTable'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'DbTableDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/DbTableFile.php b/library/Zend/Tool/Project/Context/Zf/DbTableFile.php new file mode 100755 index 000000000..306ae80d3 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/DbTableFile.php @@ -0,0 +1,92 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_DbTableFile extends Zend_Tool_Project_Context_Zf_AbstractClassFile +{ + + protected $_dbTableName = null; + + protected $_actualTableName = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'DbTableFile'; + } + + /** + * init() + * + */ + public function init() + { + $this->_dbTableName = $this->_resource->getAttribute('dbTableName'); + $this->_actualTableName = $this->_resource->getAttribute('actualTableName'); + $this->_filesystemName = ucfirst($this->_dbTableName) . '.php'; + parent::init(); + } + + public function getPersistentAttributes() + { + return array('dbTableName' => $this->_dbTableName); + } + + public function getContents() + { + $className = $this->getFullClassName($this->_dbTableName, 'Model_DbTable'); + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'fileName' => $this->getPath(), + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'Zend_Db_Table_Abstract', + 'properties' => array( + new Zend_CodeGenerator_Php_Property(array( + 'name' => '_name', + 'visibility' => Zend_CodeGenerator_Php_Property::VISIBILITY_PROTECTED, + 'defaultValue' => $this->_actualTableName + )) + ), + + )) + ) + )); + return $codeGenFile->generate(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/DocsDirectory.php b/library/Zend/Tool/Project/Context/Zf/DocsDirectory.php new file mode 100755 index 000000000..cc047ea17 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/DocsDirectory.php @@ -0,0 +1,61 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: DataDirectory.php 20096 2010-01-06 02:05:09Z bkarwin $ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_DocsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'docs'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'DocsDirectory'; + } + + public function create(){ + parent::create(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/FormFile.php b/library/Zend/Tool/Project/Context/Zf/FormFile.php new file mode 100755 index 000000000..7308e28e6 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/FormFile.php @@ -0,0 +1,113 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Zf_AbstractClassFile + */ +require_once 'Zend/Tool/Project/Context/Zf/AbstractClassFile.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_FormFile extends Zend_Tool_Project_Context_Zf_AbstractClassFile +{ + + /** + * @var string + */ + protected $_formName = 'Base'; + + /** + * @var string + */ + protected $_filesystemName = 'formName'; + + /** + * init() + * + */ + public function init() + { + $this->_formName = $this->_resource->getAttribute('formName'); + $this->_filesystemName = ucfirst($this->_formName) . '.php'; + parent::init(); + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'formName' => $this->getFormName() + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'FormFile'; + } + + public function getFormName() + { + return $this->_formName; + } + + public function getContents() + { + + $className = $this->getFullClassName($this->_formName, 'Form'); + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'fileName' => $this->getPath(), + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'Zend_Form', + 'methods' => array( + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'init', + 'body' => '/* Form Elements & Other Definitions Here ... */', + )) + ) + + )) + ) + )); + return $codeGenFile->generate(); + } +} diff --git a/library/Zend/Tool/Project/Context/Zf/FormsDirectory.php b/library/Zend/Tool/Project/Context/Zf/FormsDirectory.php new file mode 100755 index 000000000..433733d7a --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/FormsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_FormsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'forms'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'FormsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/HtaccessFile.php b/library/Zend/Tool/Project/Context/Zf/HtaccessFile.php new file mode 100755 index 000000000..fa6753f59 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/HtaccessFile.php @@ -0,0 +1,87 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_HtaccessFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = '.htaccess'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'HtaccessFile'; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $output = <<<EOS + +RewriteEngine On +# The following rule tells Apache that if the requested filename +# exists, simply serve it. +RewriteCond %{REQUEST_FILENAME} -s [OR] +RewriteCond %{REQUEST_FILENAME} -l [OR] +RewriteCond %{REQUEST_FILENAME} -d +RewriteRule ^.*$ - [NC,L] +# The following rewrites all other queries to index.php. The +# condition ensures that if you are using Apache aliases to do +# mass virtual hosting, the base path will be prepended to +# allow proper resolution of the index.php file; it will work +# in non-aliased environments as well, providing a safe, one-size +# fits all solution. +RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ +RewriteRule ^(.*)$ - [E=BASE:%1] +RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] + +EOS; + return $output; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/LayoutScriptFile.php b/library/Zend/Tool/Project/Context/Zf/LayoutScriptFile.php new file mode 100755 index 000000000..da549adb3 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/LayoutScriptFile.php @@ -0,0 +1,109 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_LayoutScriptFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'layout.phtml'; + + /** + * @var string + */ + protected $_layoutName = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'LayoutScriptFile'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ViewScriptFile + */ + public function init() + { + if ($layoutName = $this->_resource->getAttribute('layoutName')) { + $this->_layoutName = $layoutName; + } else { + throw new Exception('Either a forActionName or scriptName is required.'); + } + + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return unknown + */ + public function getPersistentAttributes() + { + $attributes = array(); + + if ($this->_layoutName) { + $attributes['layoutName'] = $this->_layoutName; + } + + return $attributes; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $contents = <<<EOS +<?php echo \$this->layout()->content; ?> +EOS; + + return $contents; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/LayoutScriptsDirectory.php b/library/Zend/Tool/Project/Context/Zf/LayoutScriptsDirectory.php new file mode 100755 index 000000000..52df0b412 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/LayoutScriptsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_LayoutScriptsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'scripts'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'LayoutScriptsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/LayoutsDirectory.php b/library/Zend/Tool/Project/Context/Zf/LayoutsDirectory.php new file mode 100755 index 000000000..d9f7062e8 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/LayoutsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_LayoutsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'layouts'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'LayoutsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/LibraryDirectory.php b/library/Zend/Tool/Project/Context/Zf/LibraryDirectory.php new file mode 100755 index 000000000..9d81cee35 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/LibraryDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_LibraryDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'library'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'LibraryDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/LocalesDirectory.php b/library/Zend/Tool/Project/Context/Zf/LocalesDirectory.php new file mode 100755 index 000000000..f30054cd5 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/LocalesDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_LocalesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'locales'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'LocalesDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/LogsDirectory.php b/library/Zend/Tool/Project/Context/Zf/LogsDirectory.php new file mode 100755 index 000000000..e626f6216 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/LogsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_LogsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'logs'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'LogsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ModelFile.php b/library/Zend/Tool/Project/Context/Zf/ModelFile.php new file mode 100755 index 000000000..5b2f5bc60 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ModelFile.php @@ -0,0 +1,107 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * Zend_Tool_Project_Context_Zf_AbstractClassFile + */ +require_once 'Zend/Tool/Project/Context/Zf/AbstractClassFile.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ModelFile extends Zend_Tool_Project_Context_Zf_AbstractClassFile +{ + + /** + * @var string + */ + protected $_modelName = 'Base'; + + /** + * @var string + */ + protected $_filesystemName = 'modelName'; + + /** + * init() + * + */ + public function init() + { + $this->_modelName = $this->_resource->getAttribute('modelName'); + $this->_filesystemName = ucfirst($this->_modelName) . '.php'; + parent::init(); + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'modelName' => $this->getModelName() + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ModelFile'; + } + + public function getModelName() + { + return $this->_modelName; + } + + public function getContents() + { + + $className = $this->getFullClassName($this->_modelName, 'Model'); + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'fileName' => $this->getPath(), + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + )) + ) + )); + return $codeGenFile->generate(); + } + + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ModelsDirectory.php b/library/Zend/Tool/Project/Context/Zf/ModelsDirectory.php new file mode 100755 index 000000000..45b6f5a26 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ModelsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ModelsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'models'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ModelsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ModuleDirectory.php b/library/Zend/Tool/Project/Context/Zf/ModuleDirectory.php new file mode 100755 index 000000000..ea55228e1 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ModuleDirectory.php @@ -0,0 +1,97 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ModuleDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_moduleName = null; + + /** + * @var string + */ + protected $_filesystemName = 'moduleDirectory'; + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ControllerFile + */ + public function init() + { + $this->_filesystemName = $this->_moduleName = $this->_resource->getAttribute('moduleName'); + parent::init(); + return $this; + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ModuleDirectory'; + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'moduleName' => $this->getModuleName() + ); + } + + /** + * getModuleName() + * + * @return string + */ + public function getModuleName() + { + return $this->_moduleName; + } + + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ModulesDirectory.php b/library/Zend/Tool/Project/Context/Zf/ModulesDirectory.php new file mode 100755 index 000000000..06c793c94 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ModulesDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ModulesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'modules'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'modulesDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ProjectProviderFile.php b/library/Zend/Tool/Project/Context/Zf/ProjectProviderFile.php new file mode 100755 index 000000000..e1d668b11 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ProjectProviderFile.php @@ -0,0 +1,152 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * @see Zend_CodeGenerator_Php_File + */ +require_once 'Zend/CodeGenerator/Php/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ProjectProviderFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_projectProviderName = null; + + /** + * @var array + */ + protected $_actionNames = array(); + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ProjectProviderFile + */ + public function init() + { + + $this->_projectProviderName = $this->_resource->getAttribute('projectProviderName'); + $this->_actionNames = $this->_resource->getAttribute('actionNames'); + $this->_filesystemName = ucfirst($this->_projectProviderName) . 'Provider.php'; + + if (strpos($this->_actionNames, ',')) { + $this->_actionNames = explode(',', $this->_actionNames); + } else { + $this->_actionNames = ($this->_actionNames) ? array($this->_actionNames) : array(); + } + + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'projectProviderName' => $this->getProjectProviderName(), + 'actionNames' => implode(',', $this->_actionNames) + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ProjectProviderFile'; + } + + /** + * getProjectProviderName() + * + * @return string + */ + public function getProjectProviderName() + { + return $this->_projectProviderName; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + + $filter = new Zend_Filter_Word_DashToCamelCase(); + + $className = $filter->filter($this->_projectProviderName) . 'Provider'; + + $class = new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'Zend_Tool_Project_Provider_Abstract' + )); + + $methods = array(); + foreach ($this->_actionNames as $actionName) { + $methods[] = new Zend_CodeGenerator_Php_Method(array( + 'name' => $actionName, + 'body' => ' /** @todo Implementation */' + )); + } + + if ($methods) { + $class->setMethods($methods); + } + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'requiredFiles' => array( + 'Zend/Tool/Project/Provider/Abstract.php', + 'Zend/Tool/Project/Provider/Exception.php' + ), + 'classes' => array($class) + )); + + return $codeGenFile->generate(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/PublicDirectory.php b/library/Zend/Tool/Project/Context/Zf/PublicDirectory.php new file mode 100755 index 000000000..5ab3b1b0e --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/PublicDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_PublicDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'public'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'PublicDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/PublicImagesDirectory.php b/library/Zend/Tool/Project/Context/Zf/PublicImagesDirectory.php new file mode 100755 index 000000000..da221f71a --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/PublicImagesDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_PublicImagesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'images'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'PublicImagesDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/PublicIndexFile.php b/library/Zend/Tool/Project/Context/Zf/PublicIndexFile.php new file mode 100755 index 000000000..1ed4b08f9 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/PublicIndexFile.php @@ -0,0 +1,95 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_PublicIndexFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'index.php'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'PublicIndexFile'; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $codeGenerator = new Zend_CodeGenerator_Php_File(array( + 'body' => <<<EOS +// Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); + +// Define application environment +defined('APPLICATION_ENV') + || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); + +// Ensure library/ is on include_path +set_include_path(implode(PATH_SEPARATOR, array( + realpath(APPLICATION_PATH . '/../library'), + get_include_path(), +))); + +/** Zend_Application */ +require_once 'Zend/Application.php'; + +// Create application, bootstrap, and run +\$application = new Zend_Application( + APPLICATION_ENV, + APPLICATION_PATH . '/configs/application.ini' +); +\$application->bootstrap() + ->run(); +EOS + )); + return $codeGenerator->generate(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/PublicScriptsDirectory.php b/library/Zend/Tool/Project/Context/Zf/PublicScriptsDirectory.php new file mode 100755 index 000000000..fe44d8009 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/PublicScriptsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_PublicScriptsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'js'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'PublicScriptsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/PublicStylesheetsDirectory.php b/library/Zend/Tool/Project/Context/Zf/PublicStylesheetsDirectory.php new file mode 100755 index 000000000..3143f4990 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/PublicStylesheetsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_PublicStylesheetsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'styles'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'PublicStylesheetsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/SearchIndexesDirectory.php b/library/Zend/Tool/Project/Context/Zf/SearchIndexesDirectory.php new file mode 100755 index 000000000..efd4a2180 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/SearchIndexesDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_SearchIndexesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'search-indexes'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'SearchIndexesDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ServicesDirectory.php b/library/Zend/Tool/Project/Context/Zf/ServicesDirectory.php new file mode 100755 index 000000000..76a4583b0 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ServicesDirectory.php @@ -0,0 +1,55 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ServicesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + /** + * @var string + */ + protected $_filesystemName = 'services'; + + /** + * Defined by Zend_Tool_Project_Context_Interface + * + * @return string + */ + public function getName() + { + return 'ServicesDirectory'; + } +} diff --git a/library/Zend/Tool/Project/Context/Zf/SessionsDirectory.php b/library/Zend/Tool/Project/Context/Zf/SessionsDirectory.php new file mode 100755 index 000000000..9febc4c1c --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/SessionsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_SessionsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'sessions'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'SessionsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TemporaryDirectory.php b/library/Zend/Tool/Project/Context/Zf/TemporaryDirectory.php new file mode 100755 index 000000000..32605f8b9 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TemporaryDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TemporaryDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'temp'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TemporaryDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationActionMethod.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationActionMethod.php new file mode 100755 index 000000000..369c41f54 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationActionMethod.php @@ -0,0 +1,229 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: ActionMethod.php 20096 2010-01-06 02:05:09Z bkarwin $ + */ + +/** + * @see Zend_Tool_Project_Context_Interface + */ +require_once 'Zend/Tool/Project/Context/Interface.php'; + +/** + * @see Zend_Reflection_File + */ +require_once 'Zend/Reflection/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationActionMethod implements Zend_Tool_Project_Context_Interface +{ + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_resource = null; + + /** + * @var Zend_Tool_Project_Profile_Resource + */ + protected $_testApplicationControllerResource = null; + + /** + * @var string + */ + protected $_testApplicationControllerPath = ''; + + /** + * @var string + */ + protected $_forActionName = null; + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function init() + { + $this->_forActionName = $this->_resource->getAttribute('forActionName'); + + $this->_resource->setAppendable(false); + $this->_testApplicationControllerResource = $this->_resource->getParentResource(); + if (!$this->_testApplicationControllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_TestApplicationControllerFile) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a TestApplicationControllerFile'); + } + // make the ControllerFile node appendable so we can tack on the actionMethod. + $this->_resource->getParentResource()->setAppendable(true); + + $this->_testApplicationControllerPath = $this->_testApplicationControllerResource->getContext()->getPath(); + + return $this; + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'forActionName' => $this->getForActionName() + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationActionMethod'; + } + + /** + * setResource() + * + * @param Zend_Tool_Project_Profile_Resource $resource + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function setResource(Zend_Tool_Project_Profile_Resource $resource) + { + $this->_resource = $resource; + return $this; + } + + /** + * getActionName() + * + * @return string + */ + public function getForActionName() + { + return $this->_forActionName; + } + + /** + * create() + * + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function create() + { + $file = $this->_testApplicationControllerPath; + + if (!file_exists($file)) { + require_once 'Zend/Tool/Project/Context/Exception.php'; + throw new Zend_Tool_Project_Context_Exception( + 'Could not create action within test controller ' . $file + . ' with action name ' . $this->_forActionName + ); + } + + $actionParam = $this->getForActionName(); + $controllerParam = $this->_resource->getParentResource()->getForControllerName(); + //$moduleParam = null;// + + /* @var $controllerDirectoryResource Zend_Tool_Project_Profile_Resource */ + $controllerDirectoryResource = $this->_resource->getParentResource()->getParentResource(); + if ($controllerDirectoryResource->getParentResource()->getName() == 'TestApplicationModuleDirectory') { + $moduleParam = $controllerDirectoryResource->getParentResource()->getForModuleName(); + } else { + $moduleParam = 'default'; + } + + + + if ($actionParam == 'index' && $controllerParam == 'Index' && $moduleParam == 'default') { + $assert = '$this->assertQueryContentContains("div#welcome h3", "This is your project\'s main page");'; + } else { + $assert = <<<EOS +\$this->assertQueryContentContains( + 'div#view-content p', + 'View script for controller <b>' . \$params['controller'] . '</b> and script/action name <b>' . \$params['action'] . '</b>' + ); +EOS; + } + + $codeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($file, true, true); + $codeGenFile->getClass()->setMethod(array( + 'name' => 'test' . ucfirst($actionParam) . 'Action', + 'body' => <<<EOS +\$params = array('action' => '$actionParam', 'controller' => '$controllerParam', 'module' => '$moduleParam'); +\$urlParams = \$this->urlizeOptions(\$params); +\$url = \$this->url(\$urlParams); +\$this->dispatch(\$url); + +// assertions +\$this->assertModule(\$urlParams['module']); +\$this->assertController(\$urlParams['controller']); +\$this->assertAction(\$urlParams['action']); +$assert + +EOS + )); + + file_put_contents($file, $codeGenFile->generate()); + + return $this; + } + + /** + * delete() + * + * @return Zend_Tool_Project_Context_Zf_ActionMethod + */ + public function delete() + { + // @todo do this + return $this; + } + + /** + * hasActionMethod() + * + * @param string $controllerPath + * @param string $actionName + * @return bool + */ + /* + public static function hasActionMethod($controllerPath, $actionName) + { + if (!file_exists($controllerPath)) { + return false; + } + + $controllerCodeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($controllerPath, true, true); + return $controllerCodeGenFile->getClass()->hasMethod('test' . $actionName . 'Action'); + } + */ + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationBootstrapFile.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationBootstrapFile.php new file mode 100755 index 000000000..5352aed9b --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationBootstrapFile.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationBootstrapFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'bootstrap.php'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationBootstrapFile'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationControllerDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationControllerDirectory.php new file mode 100755 index 000000000..4399dda92 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationControllerDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationControllerDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'controllers'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationControllerDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationControllerFile.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationControllerFile.php new file mode 100755 index 000000000..4515b8075 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationControllerFile.php @@ -0,0 +1,131 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationControllerFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_forControllerName = ''; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationControllerFile'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_TestApplicationControllerFile + */ + public function init() + { + $this->_forControllerName = $this->_resource->getAttribute('forControllerName'); + $this->_filesystemName = ucfirst($this->_forControllerName) . 'ControllerTest.php'; + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return unknown + */ + public function getPersistentAttributes() + { + $attributes = array(); + + if ($this->_forControllerName) { + $attributes['forControllerName'] = $this->getForControllerName(); + } + + return $attributes; + } + + public function getForControllerName() + { + return $this->_forControllerName; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + + $filter = new Zend_Filter_Word_DashToCamelCase(); + + $className = $filter->filter($this->_forControllerName) . 'ControllerTest'; + + /* @var $controllerDirectoryResource Zend_Tool_Project_Profile_Resource */ + $controllerDirectoryResource = $this->_resource->getParentResource(); + if ($controllerDirectoryResource->getParentResource()->getName() == 'TestApplicationModuleDirectory') { + $className = $filter->filter(ucfirst($controllerDirectoryResource->getParentResource()->getForModuleName())) + . '_' . $className; + } + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'Zend_Test_PHPUnit_ControllerTestCase', + 'methods' => array( + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'setUp', + 'body' => <<<EOS +\$this->bootstrap = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); +parent::setUp(); +EOS + )) + ) + )) + ) + )); + + return $codeGenFile->generate(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationDirectory.php new file mode 100755 index 000000000..8ec3297b7 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'application'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationModuleDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationModuleDirectory.php new file mode 100755 index 000000000..a1213b5dc --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationModuleDirectory.php @@ -0,0 +1,98 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: TestApplicationControllerDirectory.php 20096 2010-01-06 02:05:09Z bkarwin $ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationModuleDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + + /** + * @var string + */ + protected $_forModuleName = null; + + /** + * @var string + */ + protected $_filesystemName = 'moduleDirectory'; + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ControllerFile + */ + public function init() + { + $this->_filesystemName = $this->_forModuleName = $this->_resource->getAttribute('forModuleName'); + parent::init(); + return $this; + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationModuleDirectory'; + } + + /** + * getPersistentAttributes + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'forModuleName' => $this->getForModuleName() + ); + } + + /** + * getModuleName() + * + * @return string + */ + public function getForModuleName() + { + return $this->_forModuleName; + } + + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestApplicationModulesDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestApplicationModulesDirectory.php new file mode 100755 index 000000000..e4d60986e --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestApplicationModulesDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: TestApplicationControllerDirectory.php 20096 2010-01-06 02:05:09Z bkarwin $ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestApplicationModulesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'modules'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestApplicationModulesDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestLibraryBootstrapFile.php b/library/Zend/Tool/Project/Context/Zf/TestLibraryBootstrapFile.php new file mode 100755 index 000000000..cf251c5e0 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestLibraryBootstrapFile.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestLibraryBootstrapFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'bootstrap.php'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestLibraryBootstrapFile'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestLibraryDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestLibraryDirectory.php new file mode 100755 index 000000000..da7b9e8a9 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestLibraryDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestLibraryDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'library'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestLibraryDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestLibraryFile.php b/library/Zend/Tool/Project/Context/Zf/TestLibraryFile.php new file mode 100755 index 000000000..1e9923e82 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestLibraryFile.php @@ -0,0 +1,107 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestLibraryFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_forClassName = ''; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestLibraryFile'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_TestLibraryFile + */ + public function init() + { + $this->_forClassName = $this->_resource->getAttribute('forClassName'); + $this->_filesystemName = ucfirst(ltrim(strrchr($this->_forClassName, '_'), '_')) . 'Test.php'; + parent::init(); + return $this; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + + $filter = new Zend_Filter_Word_DashToCamelCase(); + + $className = $filter->filter($this->_forClassName) . 'Test'; + + $codeGenFile = new Zend_CodeGenerator_Php_File(array( + 'requiredFiles' => array( + 'PHPUnit/Framework/TestCase.php' + ), + 'classes' => array( + new Zend_CodeGenerator_Php_Class(array( + 'name' => $className, + 'extendedClass' => 'PHPUnit_Framework_TestCase', + 'methods' => array( + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'setUp', + 'body' => ' /* Setup Routine */' + )), + new Zend_CodeGenerator_Php_Method(array( + 'name' => 'tearDown', + 'body' => ' /* Tear Down Routine */' + )) + ) + )) + ) + )); + + return $codeGenFile->generate(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestLibraryNamespaceDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestLibraryNamespaceDirectory.php new file mode 100755 index 000000000..645683456 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestLibraryNamespaceDirectory.php @@ -0,0 +1,88 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestLibraryNamespaceDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_namespaceName = ''; + + /** + * @var string + */ + protected $_filesystemName = 'library'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestLibraryNamespaceDirectory'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_TestLibraryNamespaceDirectory + */ + public function init() + { + $this->_namespaceName = $this->_resource->getAttribute('namespaceName'); + $this->_filesystemName = $this->_namespaceName; + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + $attributes = array(); + $attributes['namespaceName'] = $this->_namespaceName; + + return $attributes; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestPHPUnitBootstrapFile.php b/library/Zend/Tool/Project/Context/Zf/TestPHPUnitBootstrapFile.php new file mode 100755 index 000000000..1ebf07976 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestPHPUnitBootstrapFile.php @@ -0,0 +1,88 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id: TestApplicationBootstrapFile.php 20096 2010-01-06 02:05:09Z bkarwin $ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestPHPUnitBootstrapFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'bootstrap.php'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestPHPUnitBootstrapFile'; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $codeGenerator = new Zend_CodeGenerator_Php_File(array( + 'body' => <<<EOS +// Define path to application directory +defined('APPLICATION_PATH') + || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); + +// Define application environment +defined('APPLICATION_ENV') + || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing')); + +// Ensure library/ is on include_path +set_include_path(implode(PATH_SEPARATOR, array( + realpath(APPLICATION_PATH . '/../library'), + get_include_path(), +))); + +require_once 'Zend/Loader/Autoloader.php'; +Zend_Loader_Autoloader::getInstance(); + +EOS + )); + return $codeGenerator->generate(); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestPHPUnitConfigFile.php b/library/Zend/Tool/Project/Context/Zf/TestPHPUnitConfigFile.php new file mode 100755 index 000000000..73b71f974 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestPHPUnitConfigFile.php @@ -0,0 +1,81 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestPHPUnitConfigFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'phpunit.xml'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestPHPUnitConfigFile'; + } + + public function getContents() + { + return <<<EOS +<phpunit bootstrap="./bootstrap.php"> + <testsuite name="Application Test Suite"> + <directory>./application</directory> + </testsuite> + <testsuite name="Library Test Suite"> + <directory>./library</directory> + </testsuite> + + <filter> + <!-- If Zend Framework is inside your project's library, uncomment this filter --> + <!-- + <whitelist> + <directory suffix=".php">../../library/Zend</directory> + </whitelist> + --> + </filter> +</phpunit> + +EOS; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/TestsDirectory.php b/library/Zend/Tool/Project/Context/Zf/TestsDirectory.php new file mode 100755 index 000000000..17213a15a --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/TestsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_TestsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'tests'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'TestsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/UploadsDirectory.php b/library/Zend/Tool/Project/Context/Zf/UploadsDirectory.php new file mode 100755 index 000000000..499b8c901 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/UploadsDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_UploadsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'uploads'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'UploadsDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ViewControllerScriptsDirectory.php b/library/Zend/Tool/Project/Context/Zf/ViewControllerScriptsDirectory.php new file mode 100755 index 000000000..296d6e11f --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ViewControllerScriptsDirectory.php @@ -0,0 +1,111 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * @see Zend_Filter + */ +require_once 'Zend/Filter.php'; + +/** + * @see Zend_Filter_Word_CamelCaseToDash + */ +require_once 'Zend/Filter/Word/CamelCaseToDash.php'; + +/** + * @see Zend_Filter_StringToLower + */ +require_once 'Zend/Filter/StringToLower.php'; + + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ViewControllerScriptsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'controllerName'; + + /** + * @var name + */ + protected $_forControllerName = null; + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ViewControllerScriptsDirectory + */ + public function init() + { + $this->_forControllerName = $this->_resource->getAttribute('forControllerName'); + $this->_filesystemName = $this->_convertControllerNameToFilesystemName($this->_forControllerName); + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + return array( + 'forControllerName' => $this->_forControllerName + ); + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ViewControllerScriptsDirectory'; + } + + protected function _convertControllerNameToFilesystemName($controllerName) + { + $filter = new Zend_Filter(); + $filter->addFilter(new Zend_Filter_Word_CamelCaseToDash()) + ->addFilter(new Zend_Filter_StringToLower()); + return $filter->filter($controllerName); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ViewFiltersDirectory.php b/library/Zend/Tool/Project/Context/Zf/ViewFiltersDirectory.php new file mode 100755 index 000000000..6e124c91f --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ViewFiltersDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ViewFiltersDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'filters'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ViewFiltersDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ViewHelpersDirectory.php b/library/Zend/Tool/Project/Context/Zf/ViewHelpersDirectory.php new file mode 100755 index 000000000..9b650df5c --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ViewHelpersDirectory.php @@ -0,0 +1,57 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_Directory + */ +require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php'; + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ViewHelpersDirectory extends Zend_Tool_Project_Context_Filesystem_Directory +{ + + /** + * @var string + */ + protected $_filesystemName = 'helpers'; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ViewHelpersDirectory'; + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ViewScriptFile.php b/library/Zend/Tool/Project/Context/Zf/ViewScriptFile.php new file mode 100755 index 000000000..943bd3831 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ViewScriptFile.php @@ -0,0 +1,247 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_Tool + * @subpackage Framework + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * @version $Id$ + */ + +/** + * @see Zend_Tool_Project_Context_Filesystem_File + */ +require_once 'Zend/Tool/Project/Context/Filesystem/File.php'; + +/** + * @see Zend_Filter + */ +require_once 'Zend/Filter.php'; + +/** + * @see Zend_Filter_Word_CamelCaseToDash + */ +require_once 'Zend/Filter/Word/CamelCaseToDash.php'; + +/** + * @see Zend_Filter_StringToLower + */ +require_once 'Zend/Filter/StringToLower.php'; + + +/** + * This class is the front most class for utilizing Zend_Tool_Project + * + * A profile is a hierarchical set of resources that keep track of + * items within a specific project. + * + * @category Zend + * @package Zend_Tool + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Tool_Project_Context_Zf_ViewScriptFile extends Zend_Tool_Project_Context_Filesystem_File +{ + + /** + * @var string + */ + protected $_filesystemName = 'view.phtml'; + + /** + * @var string + */ + protected $_forActionName = null; + + /** + * @var string + */ + protected $_scriptName = null; + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ViewScriptFile'; + } + + /** + * init() + * + * @return Zend_Tool_Project_Context_Zf_ViewScriptFile + */ + public function init() + { + if ($forActionName = $this->_resource->getAttribute('forActionName')) { + $this->_forActionName = $forActionName; + $this->_filesystemName = $this->_convertActionNameToFilesystemName($forActionName) . '.phtml'; + } elseif ($scriptName = $this->_resource->getAttribute('scriptName')) { + $this->_scriptName = $scriptName; + $this->_filesystemName = $scriptName . '.phtml'; + } else { + throw new Exception('Either a forActionName or scriptName is required.'); + } + + parent::init(); + return $this; + } + + /** + * getPersistentAttributes() + * + * @return unknown + */ + public function getPersistentAttributes() + { + $attributes = array(); + + if ($this->_forActionName) { + $attributes['forActionName'] = $this->_forActionName; + } + + if ($this->_scriptName) { + $attributes['scriptName'] = $this->_scriptName; + } + + return $attributes; + } + + /** + * getContents() + * + * @return string + */ + public function getContents() + { + $contents = ''; + + $controllerName = $this->_resource->getParentResource()->getAttribute('forControllerName'); + + $viewsDirectoryResource = $this->_resource + ->getParentResource() // view script + ->getParentResource() // view controller dir + ->getParentResource(); // views dir + if ($viewsDirectoryResource->getParentResource()->getName() == 'ModuleDirectory') { + $moduleName = $viewsDirectoryResource->getParentResource()->getModuleName(); + } else { + $moduleName = 'default'; + } + + if ($this->_filesystemName == 'error.phtml') { // should also check that the above directory is forController=error + $contents .= <<<EOS +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <title>Zend Framework Default Application + + +

    An error occurred

    +

    message ?>

    + + exception)): ?> + +

    Exception information:

    +

    + Message: exception->getMessage() ?> +

    + +

    Stack trace:

    +
    exception->getTraceAsString() ?>
    +  
    + +

    Request Parameters:

    +
    escape(var_export(\$this->request->getParams(), true)) ?>
    +  
    + + + + + + +EOS; + } elseif ($this->_forActionName == 'index' && $controllerName == 'Index' && $moduleName == 'default') { + + $contents =<< + a:link, + a:visited + { + color: #0398CA; + } + + span#zf-name + { + color: #91BE3F; + } + + div#welcome + { + color: #FFFFFF; + background-image: url(http://framework.zend.com/images/bkg_header.jpg); + width: 600px; + height: 400px; + border: 2px solid #444444; + overflow: hidden; + text-align: center; + } + + div#more-information + { + background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif); + height: 100%; + } + +
    +

    Welcome to the Zend Framework!

    + +

    This is your project's main page

    + +
    +

    +

    + Helpful Links:
    + Zend Framework Website | + Zend Framework Manual +

    +
    +
    +EOS; + + } else { + $controllerName = $this->_resource->getParentResource()->getAttribute('forControllerName'); + $actionName = $this->_forActionName; + $contents = <<
    +
    +

    View script for controller $controllerName and script/action name $actionName

    +
    +EOS; + } + return $contents; + } + + protected function _convertActionNameToFilesystemName($actionName) + { + $filter = new Zend_Filter(); + $filter->addFilter(new Zend_Filter_Word_CamelCaseToDash()) + ->addFilter(new Zend_Filter_StringToLower()); + return $filter->filter($actionName); + } + +} diff --git a/library/Zend/Tool/Project/Context/Zf/ViewScriptsDirectory.php b/library/Zend/Tool/Project/Context/Zf/ViewScriptsDirectory.php new file mode 100755 index 000000000..a73aea9d4 --- /dev/null +++ b/library/Zend/Tool/Project/Context/Zf/ViewScriptsDirectory.php @@ -0,0 +1,57 @@ +_getZfPath(); + if ($zfPath != false) { + $zfIterator = new RecursiveDirectoryIterator($zfPath); + foreach ($rii = new RecursiveIteratorIterator($zfIterator, RecursiveIteratorIterator::SELF_FIRST) as $file) { + $relativePath = preg_replace('#^'.preg_quote(realpath($zfPath), '#').'#', '', realpath($file->getPath())) . DIRECTORY_SEPARATOR . $file->getFilename(); + if (strpos($relativePath, DIRECTORY_SEPARATOR . '.') !== false) { + continue; + } + + if ($file->isDir()) { + mkdir($this->getBaseDirectory() . DIRECTORY_SEPARATOR . $this->getFilesystemName() . $relativePath); + } else { + copy($file->getPathname(), $this->getBaseDirectory() . DIRECTORY_SEPARATOR . $this->getFilesystemName() . $relativePath); + } + + } + } + } + + /** + * _getZfPath() + * + * @return string|false + */ + protected function _getZfPath() + { + require_once 'Zend/Loader.php'; + foreach (Zend_Loader::explodeIncludePath() as $includePath) { + if (!file_exists($includePath) || $includePath[0] == '.') { + continue; + } + + if (realpath($checkedPath = rtrim($includePath, '\\/') . '/Zend/Loader.php') !== false && file_exists($checkedPath)) { + return dirname($checkedPath); + } + } + + return false; + } + +} diff --git a/library/Zend/Tool/Project/Exception.php b/library/Zend/Tool/Project/Exception.php new file mode 100755 index 000000000..fa2531403 --- /dev/null +++ b/library/Zend/Tool/Project/Exception.php @@ -0,0 +1,37 @@ +setOptions($options); + } + + $this->_topResources = new Zend_Tool_Project_Profile_Resource_Container(); + } + + /** + * Process options and either set a profile property or + * set a profile 'attribute' + * + * @param array $options + */ + public function setOptions(Array $options) + { + $this->setAttributes($options); + } + + /** + * getIterator() - reqruied by the RecursiveIterator interface + * + * @return RecursiveIteratorIterator + */ + public function getIterator() + { + require_once 'Zend/Tool/Project/Profile/Iterator/EnabledResourceFilter.php'; + + return new RecursiveIteratorIterator( + new Zend_Tool_Project_Profile_Iterator_EnabledResourceFilter($this), + RecursiveIteratorIterator::SELF_FIRST + ); + } + + /** + * loadFromData() - Load a profile from data provided by the + * 'profilData' attribute + * + */ + public function loadFromData() + { + if (!isset($this->_attributes['profileData'])) { + require_once 'Zend/Tool/Project/Exception.php'; + throw new Zend_Tool_Project_Exception('loadFromData() must have "profileData" set.'); + } + + $profileFileParser = new Zend_Tool_Project_Profile_FileParser_Xml(); + $profileFileParser->unserialize($this->_attributes['profileData'], $this); + + $this->rewind(); + } + + /** + * isLoadableFromFile() - can a profile be loaded from a file + * + * wether or not a profile can be loaded from the + * file in attribute 'projectProfileFile', or from a file named + * '.zfproject.xml' inside a directory in key 'projectDirectory' + * + * @return bool + */ + public function isLoadableFromFile() + { + if (!isset($this->_attributes['projectProfileFile']) && !isset($this->_attributes['projectDirectory'])) { + return false; + } + + if (isset($this->_attributes['projectProfileFile'])) { + $projectProfileFilePath = $this->_attributes['projectProfileFile']; + if (!file_exists($projectProfileFilePath)) { + return false; + } + } else { + $projectProfileFilePath = rtrim($this->_attributes['projectDirectory'], '/\\') . '/.zfproject.xml'; + if (!file_exists($projectProfileFilePath)) { + return false; + } + } + + return true; + } + + /** + * loadFromFile() - Load data from file + * + * this attempts to load a project profile file from a variety of locations depending + * on what information the user provided vie $options or attributes, specifically the + * 'projectDirectory' or 'projectProfileFile' + * + */ + public function loadFromFile() + { + // if no data is supplied, need either a projectProfileFile or a projectDirectory + if (!isset($this->_attributes['projectProfileFile']) && !isset($this->_attributes['projectDirectory'])) { + require_once 'Zend/Tool/Project/Exception.php'; + throw new Zend_Tool_Project_Exception('loadFromFile() must have at least "projectProfileFile" or "projectDirectory" set.'); + } + + if (isset($this->_attributes['projectProfileFile'])) { + $projectProfileFilePath = $this->_attributes['projectProfileFile']; + if (!file_exists($projectProfileFilePath)) { + require_once 'Zend/Tool/Project/Exception.php'; + throw new Zend_Tool_Project_Exception('"projectProfileFile" was supplied but file was not found at location ' . $projectProfileFilePath); + } + $this->_attributes['projectDirectory'] = dirname($projectProfileFilePath); + } else { + $projectProfileFilePath = rtrim($this->_attributes['projectDirectory'], '/\\') . '/.zfproject.xml'; + if (!file_exists($projectProfileFilePath)) { + require_once 'Zend/Tool/Project/Exception.php'; + throw new Zend_Tool_Project_Exception('"projectDirectory" was supplied but no profile file file was not found at location ' . $projectProfileFilePath); + } + $this->_attributes['projectProfileFile'] = $projectProfileFilePath; + } + + $profileData = file_get_contents($projectProfileFilePath); + + $profileFileParser = new Zend_Tool_Project_Profile_FileParser_Xml(); + $profileFileParser->unserialize($profileData, $this); + + $this->rewind(); + } + + /** + * storeToFile() - store the current profile to file + * + * This will store the profile in memory to a place on disk determined by the attributes + * available, specifically if the key 'projectProfileFile' is available + * + */ + public function storeToFile() + { + $file = null; + + if (isset($this->_attributes['projectProfileFile'])) { + $file = $this->_attributes['projectProfileFile']; + } + + if ($file == null) { + require_once 'Zend/Tool/Project/Exception.php'; + throw new Zend_Tool_Project_Exception('storeToFile() must have a "projectProfileFile" attribute set.'); + } + + $parser = new Zend_Tool_Project_Profile_FileParser_Xml(); + $xml = $parser->serialize($this); + file_put_contents($file, $xml); + } + + /** + * storeToData() - create a string representation of the profile in memory + * + * @return string + */ + public function storeToData() + { + $parser = new Zend_Tool_Project_Profile_FileParser_Xml(); + $xml = $parser->serialize($this); + return $xml; + } + + /** + * __toString() - cast this profile to string to be able to view it. + * + * @return string + */ + public function __toString() + { + $string = ''; + foreach ($this as $resource) { + $string .= $resource->getName() . PHP_EOL; + $rii = new RecursiveIteratorIterator($resource, RecursiveIteratorIterator::SELF_FIRST); + foreach ($rii as $item) { + $string .= str_repeat(' ', $rii->getDepth()+1) . $item->getName() + . ((count($attributes = $item->getAttributes()) > 0) ? ' [' . http_build_query($attributes) . ']' : '') + . PHP_EOL; + } + } + return $string; + } +} diff --git a/library/Zend/Tool/Project/Profile/Exception.php b/library/Zend/Tool/Project/Profile/Exception.php new file mode 100755 index 000000000..35c65f547 --- /dev/null +++ b/library/Zend/Tool/Project/Profile/Exception.php @@ -0,0 +1,37 @@ +_contextRepository = Zend_Tool_Project_Context_Repository::getInstance(); + } + + /** + * serialize() + * + * create an xml string from the provided profile + * + * @param Zend_Tool_Project_Profile $profile + * @return string + */ + public function serialize(Zend_Tool_Project_Profile $profile) + { + + $profile = clone $profile; + + $this->_profile = $profile; + $xmlElement = new SimpleXMLElement(''); + + if ($profile->hasAttribute('type')) { + $xmlElement->addAttribute('type', $profile->getAttribute('type')); + } + + if ($profile->hasAttribute('version')) { + $xmlElement->addAttribute('version', $profile->getAttribute('version')); + } + + self::_serializeRecurser($profile, $xmlElement); + + $doc = new DOMDocument('1.0'); + $doc->formatOutput = true; + $domnode = dom_import_simplexml($xmlElement); + $domnode = $doc->importNode($domnode, true); + $domnode = $doc->appendChild($domnode); + + return $doc->saveXML(); + } + + /** + * unserialize() + * + * Create a structure in the object $profile from the structure specficied + * in the xml string provided + * + * @param string xml data + * @param Zend_Tool_Project_Profile The profile to use as the top node + * @return Zend_Tool_Project_Profile + */ + public function unserialize($data, Zend_Tool_Project_Profile $profile) + { + if ($data == null) { + throw new Exception('contents not available to unserialize.'); + } + + $this->_profile = $profile; + + $xmlDataIterator = new SimpleXMLIterator($data); + + if ($xmlDataIterator->getName() != 'projectProfile') { + throw new Exception('Profiles must start with a projectProfile node'); + } + + if (isset($xmlDataIterator['type'])) { + $this->_profile->setAttribute('type', (string) $xmlDataIterator['type']); + } + + if (isset($xmlDataIterator['version'])) { + $this->_profile->setAttribute('version', (string) $xmlDataIterator['version']); + } + + // start un-serialization of the xml doc + $this->_unserializeRecurser($xmlDataIterator); + + // contexts should be initialized after the unwinding of the profile structure + $this->_lazyLoadContexts(); + + return $this->_profile; + + } + + /** + * _serializeRecurser() + * + * This method will be used to traverse the depths of the structure + * when *serializing* an xml structure into a string + * + * @param array $resources + * @param SimpleXmlElement $xmlNode + */ + protected function _serializeRecurser($resources, SimpleXmlElement $xmlNode) + { + // @todo find a better way to handle concurrency.. if no clone, _position in node gets messed up + //if ($resources instanceof Zend_Tool_Project_Profile_Resource) { + // $resources = clone $resources; + //} + + foreach ($resources as $resource) { + + if ($resource->isDeleted()) { + continue; + } + + $resourceName = $resource->getContext()->getName(); + $resourceName[0] = strtolower($resourceName[0]); + + $newNode = $xmlNode->addChild($resourceName); + + //$reflectionClass = new ReflectionClass($resource->getContext()); + + if ($resource->isEnabled() == false) { + $newNode->addAttribute('enabled', 'false'); + } + + foreach ($resource->getPersistentAttributes() as $paramName => $paramValue) { + $newNode->addAttribute($paramName, $paramValue); + } + + if ($resource->hasChildren()) { + self::_serializeRecurser($resource, $newNode); + } + + } + + } + + + /** + * _unserializeRecurser() + * + * This method will be used to traverse the depths of the structure + * as needed to *unserialize* the profile from an xmlIterator + * + * @param SimpleXMLIterator $xmlIterator + * @param Zend_Tool_Project_Profile_Resource $resource + */ + protected function _unserializeRecurser(SimpleXMLIterator $xmlIterator, Zend_Tool_Project_Profile_Resource $resource = null) + { + + foreach ($xmlIterator as $resourceName => $resourceData) { + + $contextName = $resourceName; + $subResource = new Zend_Tool_Project_Profile_Resource($contextName); + $subResource->setProfile($this->_profile); + + if ($resourceAttributes = $resourceData->attributes()) { + $attributes = array(); + foreach ($resourceAttributes as $attrName => $attrValue) { + $attributes[$attrName] = (string) $attrValue; + } + $subResource->setAttributes($attributes); + } + + if ($resource) { + $resource->append($subResource, false); + } else { + $this->_profile->append($subResource); + } + + if ($this->_contextRepository->isOverwritableContext($contextName) == false) { + $subResource->initializeContext(); + } + + if ($xmlIterator->hasChildren()) { + self::_unserializeRecurser($xmlIterator->getChildren(), $subResource); + } + } + } + + /** + * _lazyLoadContexts() + * + * This method will call initializeContext on the resources in a profile + * @todo determine if this method belongs inside the profile + * + */ + protected function _lazyLoadContexts() + { + + foreach ($this->_profile as $topResource) { + $rii = new RecursiveIteratorIterator($topResource, RecursiveIteratorIterator::SELF_FIRST); + foreach ($rii as $resource) { + $resource->initializeContext(); + } + } + + } + +} diff --git a/library/Zend/Tool/Project/Profile/Iterator/ContextFilter.php b/library/Zend/Tool/Project/Profile/Iterator/ContextFilter.php new file mode 100755 index 000000000..b074614e4 --- /dev/null +++ b/library/Zend/Tool/Project/Profile/Iterator/ContextFilter.php @@ -0,0 +1,211 @@ +_rawOptions = $options; + if ($options) { + $this->setOptions($options); + } + } + + /** + * setOptions() + * + * @param array $options + */ + public function setOptions(Array $options) + { + foreach ($options as $optionName => $optionValue) { + if (substr($optionName, -1, 1) != 's') { + $optionName .= 's'; + } + if (method_exists($this, 'set' . $optionName)) { + $this->{'set' . $optionName}($optionValue); + } + } + } + + /** + * setAcceptTypes() + * + * @param array|string $acceptTypes + * @return Zend_Tool_Project_Profile_Iterator_ContextFilter + */ + public function setAcceptTypes($acceptTypes) + { + if (!is_array($acceptTypes)) { + $acceptTypes = array($acceptTypes); + } + + $this->_acceptTypes = $acceptTypes; + return $this; + } + + /** + * setDenyTypes() + * + * @param array|string $denyTypes + * @return Zend_Tool_Project_Profile_Iterator_ContextFilter + */ + public function setDenyTypes($denyTypes) + { + if (!is_array($denyTypes)) { + $denyTypes = array($denyTypes); + } + + $this->_denyTypes = $denyTypes; + return $this; + } + + /** + * setAcceptNames() + * + * @param array|string $acceptNames + * @return Zend_Tool_Project_Profile_Iterator_ContextFilter + */ + public function setAcceptNames($acceptNames) + { + if (!is_array($acceptNames)) { + $acceptNames = array($acceptNames); + } + + foreach ($acceptNames as $n => $v) { + $acceptNames[$n] = strtolower($v); + } + + $this->_acceptNames = $acceptNames; + return $this; + } + + /** + * setDenyNames() + * + * @param array|string $denyNames + * @return Zend_Tool_Project_Profile_Iterator_ContextFilter + */ + public function setDenyNames($denyNames) + { + if (!is_array($denyNames)) { + $denyNames = array($denyNames); + } + + foreach ($denyNames as $n => $v) { + $denyNames[$n] = strtolower($v); + } + + $this->_denyNames = $denyNames; + return $this; + } + + /** + * accept() is required by teh RecursiveFilterIterator + * + * @return bool + */ + public function accept() + { + $currentItem = $this->current(); + + if (in_array(strtolower($currentItem->getName()), $this->_acceptNames)) { + return true; + } elseif (in_array(strtolower($currentItem->getName()), $this->_denyNames)) { + return false; + } + + foreach ($this->_acceptTypes as $acceptType) { + if ($currentItem->getContent() instanceof $acceptType) { + return true; + } + } + + foreach ($this->_denyTypes as $denyType) { + if ($currentItem->getContext() instanceof $denyType) { + return false; + } + } + + return true; + } + + /** + * getChildren() + * + * This is here due to a bug/design issue in PHP + * @link + * + * @return unknown + */ + function getChildren() + { + + if (empty($this->ref)) { + $this->ref = new ReflectionClass($this); + } + + return $this->ref->newInstance($this->getInnerIterator()->getChildren(), $this->_rawOptions); + } + +} diff --git a/library/Zend/Tool/Project/Profile/Iterator/EnabledResourceFilter.php b/library/Zend/Tool/Project/Profile/Iterator/EnabledResourceFilter.php new file mode 100755 index 000000000..65b46b6ff --- /dev/null +++ b/library/Zend/Tool/Project/Profile/Iterator/EnabledResourceFilter.php @@ -0,0 +1,43 @@ +current()->isEnabled(); + } +} diff --git a/library/Zend/Tool/Project/Profile/Resource.php b/library/Zend/Tool/Project/Profile/Resource.php new file mode 100755 index 000000000..58b08cd5d --- /dev/null +++ b/library/Zend/Tool/Project/Profile/Resource.php @@ -0,0 +1,262 @@ +setContext($context); + } + + /** + * setContext() + * + * @param string|Zend_Tool_Project_Context_Interface $context + * @return Zend_Tool_Project_Profile_Resource + */ + public function setContext($context) + { + $this->_context = $context; + return $this; + } + + /** + * getContext() + * + * @return Zend_Tool_Project_Context_Interface + */ + public function getContext() + { + return $this->_context; + } + + /** + * getName() - Get the resource name + * + * Name is derived from the context name + * + * @return string + */ + public function getName() + { + if (is_string($this->_context)) { + return $this->_context; + } elseif ($this->_context instanceof Zend_Tool_Project_Context_Interface) { + return $this->_context->getName(); + } else { + throw new Zend_Tool_Project_Exception('Invalid context in resource'); + } + } + + /** + * setProfile() + * + * @param Zend_Tool_Project_Profile $profile + * @return Zend_Tool_Project_Profile_Resource + */ + public function setProfile(Zend_Tool_Project_Profile $profile) + { + $this->_profile = $profile; + return $this; + } + + /** + * getProfile + * + * @return Zend_Tool_Project_Profile + */ + public function getProfile() + { + return $this->_profile; + } + + /** + * getPersistentAttributes() + * + * @return array + */ + public function getPersistentAttributes() + { + if (method_exists($this->_context, 'getPersistentAttributes')) { + return $this->_context->getPersistentAttributes(); + } + + return array(); + } + + /** + * setEnabled() + * + * @param bool $enabled + * @return Zend_Tool_Project_Profile_Resource + */ + public function setEnabled($enabled = true) + { + // convert fuzzy types to bool + $this->_enabled = (!in_array($enabled, array('false', 'disabled', 0, -1, false), true)) ? true : false; + return $this; + } + + /** + * isEnabled() + * + * @return bool + */ + public function isEnabled() + { + return $this->_enabled; + } + + /** + * setDeleted() + * + * @param bool $deleted + * @return Zend_Tool_Project_Profile_Resource + */ + public function setDeleted($deleted = true) + { + $this->_deleted = (bool) $deleted; + return $this; + } + + /** + * isDeleted() + * + * @return Zend_Tool_Project_Profile_Resource + */ + public function isDeleted() + { + return $this->_deleted; + } + + /** + * initializeContext() + * + * @return Zend_Tool_Project_Profile_Resource + */ + public function initializeContext() + { + if ($this->_isContextInitialized) { + return; + } + if (is_string($this->_context)) { + $this->_context = Zend_Tool_Project_Context_Repository::getInstance()->getContext($this->_context); + } + + if (method_exists($this->_context, 'setResource')) { + $this->_context->setResource($this); + } + + if (method_exists($this->_context, 'init')) { + $this->_context->init(); + } + + $this->_isContextInitialized = true; + return $this; + } + + /** + * __toString() + * + * @return string + */ + public function __toString() + { + return $this->_context->getName(); + } + + /** + * __call() + * + * @param string $method + * @param array $arguments + * @return Zend_Tool_Project_Profile_Resource + */ + public function __call($method, $arguments) + { + if (method_exists($this->_context, $method)) { + if (!$this->isEnabled()) { + $this->setEnabled(true); + } + return call_user_func_array(array($this->_context, $method), $arguments); + } else { + throw new Zend_Tool_Project_Profile_Exception('cannot call ' . $method); + } + } + +} diff --git a/library/Zend/Tool/Project/Profile/Resource/Container.php b/library/Zend/Tool/Project/Profile/Resource/Container.php new file mode 100755 index 000000000..ffbee3ebc --- /dev/null +++ b/library/Zend/Tool/Project/Profile/Resource/Container.php @@ -0,0 +1,421 @@ + + * + * + * + * @param Zend_Tool_Project_Profile_Resource_SearchConstraints|string|array $searchParameters + * @return Zend_Tool_Project_Profile_Resource + */ + public function search($matchSearchConstraints, $nonMatchSearchConstraints = null) + { + if (!$matchSearchConstraints instanceof Zend_Tool_Project_Profile_Resource_SearchConstraints) { + $matchSearchConstraints = new Zend_Tool_Project_Profile_Resource_SearchConstraints($matchSearchConstraints); + } + + $this->rewind(); + + /** + * @todo This should be re-written with better support for a filter iterator, its the way to go + */ + + if ($nonMatchSearchConstraints) { + $filterIterator = new Zend_Tool_Project_Profile_Iterator_ContextFilter($this, array('denyNames' => $nonMatchSearchConstraints)); + $riIterator = new RecursiveIteratorIterator($filterIterator, RecursiveIteratorIterator::SELF_FIRST); + } else { + $riIterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST); + } + + $foundResource = false; + $currentConstraint = $matchSearchConstraints->getConstraint(); + $foundDepth = 0; + + foreach ($riIterator as $currentResource) { + + // if current depth is less than found depth, end + if ($riIterator->getDepth() < $foundDepth) { + break; + } + + if (strtolower($currentResource->getName()) == strtolower($currentConstraint->name)) { + + $paramsMatch = true; + + // @todo check to ensure params match (perhaps) + if (count($currentConstraint->params) > 0) { + $currentResourceAttributes = $currentResource->getAttributes(); + if (!is_array($currentConstraint->params)) { + require_once 'Zend/Tool/Project/Profile/Exception.php'; + throw new Zend_Tool_Project_Profile_Exception('Search parameter specifics must be in the form of an array for key "' + . $currentConstraint->name .'"'); + } + foreach ($currentConstraint->params as $paramName => $paramValue) { + if (!isset($currentResourceAttributes[$paramName]) || $currentResourceAttributes[$paramName] != $paramValue) { + $paramsMatch = false; + break; + } + } + } + + if ($paramsMatch) { + $foundDepth = $riIterator->getDepth(); + + if (($currentConstraint = $matchSearchConstraints->getConstraint()) == null) { + $foundResource = $currentResource; + break; + } + } + + } + + } + + return $foundResource; + } + + /** + * createResourceAt() + * + * @param array|Zend_Tool_Project_Profile_Resource_SearchConstraints $appendResourceOrSearchConstraints + * @param string $context + * @param array $attributes + * @return Zend_Tool_Project_Profile_Resource + */ + public function createResourceAt($appendResourceOrSearchConstraints, $context, Array $attributes = array()) + { + if (!$appendResourceOrSearchConstraints instanceof Zend_Tool_Project_Profile_Resource_Container) { + if (($parentResource = $this->search($appendResourceOrSearchConstraints)) == false) { + require_once 'Zend/Tool/Project/Profile/Exception.php'; + throw new Zend_Tool_Project_Profile_Exception('No node was found to append to.'); + } + } else { + $parentResource = $appendResourceOrSearchConstraints; + } + + return $parentResource->createResource($context, $attributes); + } + + /** + * createResource() + * + * Method to create a resource with a given context with specific attributes + * + * @param string $context + * @param array $attributes + * @return Zend_Tool_Project_Profile_Resource + */ + public function createResource($context, Array $attributes = array()) + { + if (is_string($context)) { + $contextRegistry = Zend_Tool_Project_Context_Repository::getInstance(); + if ($contextRegistry->hasContext($context)) { + $context = $contextRegistry->getContext($context); + } else { + require_once 'Zend/Tool/Project/Profile/Exception.php'; + throw new Zend_Tool_Project_Profile_Exception('Context by name ' . $context . ' was not found in the context registry.'); + } + } elseif (!$context instanceof Zend_Tool_Project_Context_Interface) { + require_once 'Zend/Tool/Project/Profile/Exception.php'; + throw new Zend_Tool_Project_Profile_Exception('Context must be of type string or Zend_Tool_Project_Context_Interface.'); + } + + $newResource = new Zend_Tool_Project_Profile_Resource($context); + + if ($attributes) { + $newResource->setAttributes($attributes); + } + + /** + * Interesting logic here: + * + * First set the parentResource (this will also be done inside append). This will allow + * the initialization routine to change the appendability of the parent resource. This + * is important to allow specific resources to be appendable by very specific sub-resources. + */ + $newResource->setParentResource($this); + $newResource->initializeContext(); + $this->append($newResource); + + return $newResource; + } + + /** + * setAttributes() + * + * persist the attributes if the resource will accept them + * + * @param array $attributes + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function setAttributes(Array $attributes) + { + foreach ($attributes as $attrName => $attrValue) { + $setMethod = 'set' . $attrName; + if (method_exists($this, $setMethod)) { + $this->{$setMethod}($attrValue); + } else { + $this->setAttribute($attrName, $attrValue); + } + } + return $this; + } + + /** + * getAttributes() + * + * @return array + */ + public function getAttributes() + { + return $this->_attributes; + } + + /** + * setAttribute() + * + * @param string $name + * @param mixed $value + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function setAttribute($name, $value) + { + $this->_attributes[$name] = $value; + return $this; + } + + /** + * getAttribute() + * + * @param string $name + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function getAttribute($name) + { + return (array_key_exists($name, $this->_attributes)) ? $this->_attributes[$name] : null; + } + + /** + * hasAttribute() + * + * @param string $name + * @return bool + */ + public function hasAttribute($name) + { + return array_key_exists($name, $this->_attributes); + } + + /** + * setAppendable() + * + * @param bool $appendable + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function setAppendable($appendable) + { + $this->_appendable = (bool) $appendable; + return $this; + } + + /** + * isAppendable() + * + * @return bool + */ + public function isAppendable() + { + return $this->_appendable; + } + + /** + * setParentResource() + * + * @param Zend_Tool_Project_Profile_Resource_Container $parentResource + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function setParentResource(Zend_Tool_Project_Profile_Resource_Container $parentResource) + { + $this->_parentResource = $parentResource; + return $this; + } + + /** + * getParentResource() + * + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function getParentResource() + { + return $this->_parentResource; + } + + /** + * append() + * + * @param Zend_Tool_Project_Profile_Resource_Container $resource + * @return Zend_Tool_Project_Profile_Resource_Container + */ + public function append(Zend_Tool_Project_Profile_Resource_Container $resource) + { + if (!$this->isAppendable()) { + throw new Exception('Resource by name ' . (string) $this . ' is not appendable'); + } + array_push($this->_subResources, $resource); + $resource->setParentResource($this); + + return $this; + } + + /** + * current() - required by RecursiveIterator + * + * @return Zend_Tool_Project_Profile_Resource + */ + public function current() + { + return current($this->_subResources); + } + + /** + * key() - required by RecursiveIterator + * + * @return int + */ + public function key() + { + return key($this->_subResources); + } + + /** + * next() - required by RecursiveIterator + * + * @return bool + */ + public function next() + { + return next($this->_subResources); + } + + /** + * rewind() - required by RecursiveIterator + * + * @return bool + */ + public function rewind() + { + return reset($this->_subResources); + } + + /** + * valid() - - required by RecursiveIterator + * + * @return bool + */ + public function valid() + { + return (bool) $this->current(); + } + + /** + * hasChildren() + * + * @return bool + */ + public function hasChildren() + { + return (count($this->_subResources) > 0) ? true : false; + } + + /** + * getChildren() + * + * @return array + */ + public function getChildren() + { + return $this->current(); + } + + /** + * count() + * + * @return int + */ + public function count() + { + return count($this->_subResources); + } + + /** + * __clone() + * + */ + public function __clone() + { + $this->rewind(); + foreach ($this->_subResources as $index => $resource) { + $this->_subResources[$index] = clone $resource; + } + } + +} diff --git a/library/Zend/Tool/Project/Profile/Resource/SearchConstraints.php b/library/Zend/Tool/Project/Profile/Resource/SearchConstraints.php new file mode 100755 index 000000000..e43bbeb77 --- /dev/null +++ b/library/Zend/Tool/Project/Profile/Resource/SearchConstraints.php @@ -0,0 +1,117 @@ +addConstraint($options); + } elseif (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * setOptions() + * + * @param array $option + * @return Zend_Tool_Project_Profile_Resource_SearchConstraints + */ + public function setOptions(Array $option) + { + foreach ($option as $optionName => $optionValue) { + if (is_int($optionName)) { + $this->addConstraint($optionValue); + } elseif (is_string($optionName)) { + $this->addConstraint(array('name' => $optionName, 'params' => $optionValue)); + } + } + + return $this; + } + + /** + * addConstraint() + * + * @param string|array $constraint + * @return Zend_Tool_Project_Profile_Resource_SearchConstraints + */ + public function addConstraint($constraint) + { + if (is_string($constraint)) { + $name = $constraint; + $params = array(); + } elseif (is_array($constraint)) { + $name = $constraint['name']; + $params = $constraint['params']; + } + + $constraint = $this->_makeConstraint($name, $params); + + array_push($this->_constraints, $constraint); + return $this; + } + + /** + * getConstraint() + * + * @return ArrayObject + */ + public function getConstraint() + { + return array_shift($this->_constraints); + } + + /** + * _makeConstraint + * + * @param string $name + * @param mixed $params + * @return ArrayObject + */ + protected function _makeConstraint($name, $params) + { + $value = array('name' => $name, 'params' => $params); + return new ArrayObject($value, ArrayObject::ARRAY_AS_PROPS); + } + +} diff --git a/library/Zend/Tool/Project/Provider/Abstract.php b/library/Zend/Tool/Project/Provider/Abstract.php new file mode 100755 index 000000000..66bf1e239 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Abstract.php @@ -0,0 +1,279 @@ +addContextsFromDirectory( + dirname(dirname(__FILE__)) . '/Context/Zf/', 'Zend_Tool_Project_Context_Zf_' + ); + $contextRegistry->addContextsFromDirectory( + dirname(dirname(__FILE__)) . '/Context/Filesystem/', 'Zend_Tool_Project_Context_Filesystem_' + ); + + // determine if there are project specfic providers ONCE + $profilePath = $this->_findProfileDirectory(); + if ($this->_hasProjectProviderDirectory($profilePath . DIRECTORY_SEPARATOR . '.zfproject.xml')) { + $profile = $this->_loadProfile(); + // project providers directory resource + $ppd = $profile->search('ProjectProvidersDirectory'); + $ppd->loadProviders($this->_registry); + } + + self::$_isInitialized = true; + } + + // load up the extending providers required context classes + if ($contextClasses = $this->getContextClasses()) { + $this->_loadContextClassesIntoRegistry($contextClasses); + } + + } + + public function getContextClasses() + { + return array(); + } + + /** + * _getProject is designed to find if there is project file in the context of where + * the client has been called from.. The search order is as follows.. + * - traversing downwards from (PWD) - current working directory + * - if an enpoint variable has been registered in teh client registry - key=workingDirectory + * - if an ENV variable with the key ZFPROJECT_PATH is found + * + * @param bool $loadProfileFlag Whether or not to throw an exception when no profile is found + * @param string $projectDirectory The project directory to use to search + * @param bool $searchParentDirectories Whether or not to search upper level direcotries + * @return Zend_Tool_Project_Profile + */ + protected function _loadProfile($loadProfileFlag = self::NO_PROFILE_THROW_EXCEPTION, $projectDirectory = null, $searchParentDirectories = true) + { + $foundPath = $this->_findProfileDirectory($projectDirectory, $searchParentDirectories); + + if ($foundPath == false) { + if ($loadProfileFlag == self::NO_PROFILE_THROW_EXCEPTION) { + throw new Zend_Tool_Project_Provider_Exception('A project profile was not found.'); + } else { + return false; + } + } + + $profile = new Zend_Tool_Project_Profile(); + $profile->setAttribute('projectDirectory', $foundPath); + $profile->loadFromFile(); + $this->_loadedProfile = $profile; + return $profile; + } + + protected function _findProfileDirectory($projectDirectory = null, $searchParentDirectories = true) + { + // use the cwd if no directory was provided + if ($projectDirectory == null) { + $projectDirectory = getcwd(); + } elseif (realpath($projectDirectory) == false) { + throw new Zend_Tool_Project_Provider_Exception('The $projectDirectory supplied does not exist.'); + } + + $profile = new Zend_Tool_Project_Profile(); + + $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR)); + while ($parentDirectoriesArray) { + $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); + + if (DIRECTORY_SEPARATOR !== "\\") { + $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled; + } + + $profile->setAttribute('projectDirectory', $projectDirectoryAssembled); + if ($profile->isLoadableFromFile()) { + unset($profile); + return $projectDirectoryAssembled; + } + + // break after first run if we are not to check upper directories + if ($searchParentDirectories == false) { + break; + } + + array_pop($parentDirectoriesArray); + } + + return false; + } + + /** + * Load the project profile from the current working directory, if not throw exception + * + * @return Zend_Tool_Project_Profile + */ + protected function _loadProfileRequired() + { + $profile = $this->_loadProfile(); + if ($profile === false) { + require_once 'Zend/Tool/Project/Provider/Exception.php'; + throw new Zend_Tool_Project_Provider_Exception('A project profile was not found in the current working directory.'); + } + return $profile; + } + + /** + * Return the currently loaded profile + * + * @return Zend_Tool_Project_Profile + */ + protected function _getProfile($loadProfileFlag = self::NO_PROFILE_THROW_EXCEPTION) + { + if (!$this->_loadedProfile) { + if (($this->_loadProfile($loadProfileFlag) === false) && ($loadProfileFlag === self::NO_PROFILE_RETURN_FALSE)) { + return false; + } + } + + return $this->_loadedProfile; + } + + /** + * _storeProfile() + * + * This method will store the profile into its proper location + * + */ + protected function _storeProfile() + { + $projectProfileFile = $this->_loadedProfile->search('ProjectProfileFile'); + + $name = $projectProfileFile->getContext()->getPath(); + + $this->_registry->getResponse()->appendContent('Updating project profile \'' . $name . '\''); + + $projectProfileFile->getContext()->save(); + } + + protected function _getContentForContext(Zend_Tool_Project_Context_Interface $context, $methodName, $parameters) + { + $storage = $this->_registry->getStorage(); + if (!$storage->isEnabled()) { + return false; + } + + if (!class_exists('Zend_Tool_Project_Context_Content_Engine')) { + require_once 'Zend/Tool/Project/Context/Content/Engine.php'; + } + + $engine = new Zend_Tool_Project_Context_Content_Engine($storage); + return $engine->getContent($context, $methodName, $parameters); + } + + protected function _hasProjectProviderDirectory($pathToProfileFile) + { + // do some static analysis of the file so that we can determin whether or not to incure + // the cost of loading the profile before the system is fully bootstrapped + if (!file_exists($pathToProfileFile)) { + return false; + } + + $contents = file_get_contents($pathToProfileFile); + if (strstr($contents, 'addContextClass($contextClass); + } + } +} diff --git a/library/Zend/Tool/Project/Provider/Action.php b/library/Zend/Tool/Project/Provider/Action.php new file mode 100755 index 000000000..7c96ae7ab --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Action.php @@ -0,0 +1,242 @@ +createResource('ActionMethod', array('actionName' => $actionName)); + + return $actionMethod; + } + + /** + * hasResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $actionName + * @param string $controllerName + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + public static function hasResource(Zend_Tool_Project_Profile $profile, $actionName, $controllerName, $moduleName = null) + { + if (!is_string($actionName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Action::createResource() expects \"actionName\" is the name of a action resource to create.'); + } + + if (!is_string($controllerName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Action::createResource() expects \"controllerName\" is the name of a controller resource to create.'); + } + + $controllerFile = self::_getControllerFileResource($profile, $controllerName, $moduleName); + + if ($controllerFile == null) { + throw new Zend_Tool_Project_Provider_Exception('Controller ' . $controllerName . ' was not found.'); + } + + return (($controllerFile->search(array('actionMethod' => array('actionName' => $actionName)))) instanceof Zend_Tool_Project_Profile_Resource); + } + + /** + * _getControllerFileResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $controllerName + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + protected static function _getControllerFileResource(Zend_Tool_Project_Profile $profile, $controllerName, $moduleName = null) + { + $profileSearchParams = array(); + + if ($moduleName != null && is_string($moduleName)) { + $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); + } + + $profileSearchParams[] = 'controllersDirectory'; + $profileSearchParams['controllerFile'] = array('controllerName' => $controllerName); + + return $profile->search($profileSearchParams); + } + + /** + * create() + * + * @param string $name Action name for controller, in camelCase format. + * @param string $controllerName Controller name action should be applied to. + * @param bool $viewIncluded Whether the view should the view be included. + * @param string $module Module name action should be applied to. + */ + public function create($name, $controllerName = 'Index', $viewIncluded = true, $module = null) + { + + $this->_loadProfile(); + + // get request/response object + $request = $this->_registry->getRequest(); + $response = $this->_registry->getResponse(); + + // determine if testing is enabled in the project + require_once 'Zend/Tool/Project/Provider/Test.php'; + $testingEnabled = Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + + if ($testingEnabled && !Zend_Tool_Project_Provider_Test::isPHPUnitAvailable()) { + $testingEnabled = false; + $response->appendContent( + 'Note: PHPUnit is required in order to generate controller test stubs.', + array('color' => array('yellow')) + ); + } + + // Check that there is not a dash or underscore, return if doesnt match regex + if (preg_match('#[_-]#', $name)) { + throw new Zend_Tool_Project_Provider_Exception('Action names should be camel cased.'); + } + + $originalName = $name; + $originalControllerName = $controllerName; + + // ensure it is camelCase (lower first letter) + $name = strtolower(substr($name, 0, 1)) . substr($name, 1); + + // ensure controller is MixedCase + $controllerName = ucfirst($controllerName); + + if (self::hasResource($this->_loadedProfile, $name, $controllerName, $module)) { + throw new Zend_Tool_Project_Provider_Exception('This controller (' . $controllerName . ') already has an action named (' . $name . ')'); + } + + $actionMethodResource = self::createResource($this->_loadedProfile, $name, $controllerName, $module); + + $testActionMethodResource = null; + if ($testingEnabled) { + $testActionMethodResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $controllerName, $name, $module); + } + + // alert the user about inline converted names + $tense = (($request->isPretend()) ? 'would be' : 'is'); + + if ($name !== $originalName) { + $response->appendContent( + 'Note: The canonical action name that ' . $tense + . ' used with other providers is "' . $name . '";' + . ' not "' . $originalName . '" as supplied', + array('color' => array('yellow')) + ); + } + + if ($controllerName !== $originalControllerName) { + $response->appendContent( + 'Note: The canonical controller name that ' . $tense + . ' used with other providers is "' . $controllerName . '";' + . ' not "' . $originalControllerName . '" as supplied', + array('color' => array('yellow')) + ); + } + + unset($tense); + + if ($request->isPretend()) { + $response->appendContent( + 'Would create an action named ' . $name . + ' inside controller at ' . $actionMethodResource->getParentResource()->getContext()->getPath() + ); + + if ($testActionMethodResource) { + $response->appendContent('Would create an action test in ' . $testActionMethodResource->getParentResource()->getContext()->getPath()); + } + + } else { + $response->appendContent( + 'Creating an action named ' . $name . + ' inside controller at ' . $actionMethodResource->getParentResource()->getContext()->getPath() + ); + $actionMethodResource->create(); + + if ($testActionMethodResource) { + $response->appendContent('Creating an action test in ' . $testActionMethodResource->getParentResource()->getContext()->getPath()); + $testActionMethodResource->create(); + } + + $this->_storeProfile(); + } + + if ($viewIncluded) { + $viewResource = Zend_Tool_Project_Provider_View::createResource($this->_loadedProfile, $name, $controllerName, $module); + + if ($this->_registry->getRequest()->isPretend()) { + $response->appendContent( + 'Would create a view script for the ' . $name . ' action method at ' . $viewResource->getContext()->getPath() + ); + } else { + $response->appendContent( + 'Creating a view script for the ' . $name . ' action method at ' . $viewResource->getContext()->getPath() + ); + $viewResource->create(); + $this->_storeProfile(); + } + + } + + } + +} diff --git a/library/Zend/Tool/Project/Provider/Application.php b/library/Zend/Tool/Project/Provider/Application.php new file mode 100755 index 000000000..d65f7feba --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Application.php @@ -0,0 +1,87 @@ +_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $originalClassNamePrefix = $classNamePrefix; + + if (substr($classNamePrefix, -1) != '_') { + $classNamePrefix .= '_'; + } + + $configFileResource = $profile->search('ApplicationConfigFile'); + $zc = $configFileResource->getAsZendConfig('production'); + if ($zc->appnamespace == $classNamePrefix) { + throw new Zend_Tool_Project_Exception('The requested name ' . $classNamePrefix . ' is already the prefix.'); + } + + // remove the old + $configFileResource->removeStringItem('appnamespace', 'production'); + $configFileResource->create(); + + // add the new + $configFileResource->addStringItem('appnamespace', $classNamePrefix, 'production', true); + $configFileResource->create(); + + // update the project profile + $applicationDirectory = $profile->search('ApplicationDirectory'); + $applicationDirectory->setClassNamePrefix($classNamePrefix); + + $response = $this->_registry->getResponse(); + + if ($originalClassNamePrefix !== $classNamePrefix) { + $response->appendContent( + 'Note: the name provided "' . $originalClassNamePrefix . '" was' + . ' altered to "' . $classNamePrefix . '" for correctness.', + array('color' => 'yellow') + ); + } + + // note to the user + $response->appendContent('Note: All existing models will need to be altered to this new namespace by hand', array('color' => 'yellow')); + $response->appendContent('application.ini updated with new appnamespace ' . $classNamePrefix); + + // store profile + $this->_storeProfile(); + } + +} diff --git a/library/Zend/Tool/Project/Provider/Controller.php b/library/Zend/Tool/Project/Provider/Controller.php new file mode 100755 index 000000000..606eea0c9 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Controller.php @@ -0,0 +1,209 @@ +createResource( + 'controllerFile', + array('controllerName' => $controllerName, 'moduleName' => $moduleName) + ); + + return $newController; + } + + /** + * hasResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $controllerName + * @param string $moduleName + * @return boolean + */ + public static function hasResource(Zend_Tool_Project_Profile $profile, $controllerName, $moduleName = null) + { + if (!is_string($controllerName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Controller::createResource() expects \"controllerName\" is the name of a controller resource to create.'); + } + + $controllersDirectory = self::_getControllersDirectoryResource($profile, $moduleName); + return ($controllersDirectory &&($controllersDirectory->search(array('controllerFile' => array('controllerName' => $controllerName)))) instanceof Zend_Tool_Project_Profile_Resource); + } + + /** + * _getControllersDirectoryResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + protected static function _getControllersDirectoryResource(Zend_Tool_Project_Profile $profile, $moduleName = null) + { + $profileSearchParams = array(); + + if ($moduleName != null && is_string($moduleName)) { + $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); + } + + $profileSearchParams[] = 'controllersDirectory'; + + return $profile->search($profileSearchParams); + } + + /** + * Create a new controller + * + * @param string $name The name of the controller to create, in camelCase. + * @param bool $indexActionIncluded Whether or not to create the index action. + */ + public function create($name, $indexActionIncluded = true, $module = null) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + // get request & response + $request = $this->_registry->getRequest(); + $response = $this->_registry->getResponse(); + + // determine if testing is enabled in the project + require_once 'Zend/Tool/Project/Provider/Test.php'; + $testingEnabled = Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + + if ($testingEnabled && !Zend_Tool_Project_Provider_Test::isPHPUnitAvailable()) { + $testingEnabled = false; + $response->appendContent( + 'Note: PHPUnit is required in order to generate controller test stubs.', + array('color' => array('yellow')) + ); + } + + $originalName = $name; + $name = ucfirst($name); + + if (self::hasResource($this->_loadedProfile, $name, $module)) { + throw new Zend_Tool_Project_Provider_Exception('This project already has a controller named ' . $name); + } + + // Check that there is not a dash or underscore, return if doesnt match regex + if (preg_match('#[_-]#', $name)) { + throw new Zend_Tool_Project_Provider_Exception('Controller names should be camel cased.'); + } + + try { + $controllerResource = self::createResource($this->_loadedProfile, $name, $module); + if ($indexActionIncluded) { + $indexActionResource = Zend_Tool_Project_Provider_Action::createResource($this->_loadedProfile, 'index', $name, $module); + $indexActionViewResource = Zend_Tool_Project_Provider_View::createResource($this->_loadedProfile, 'index', $name, $module); + } + if ($testingEnabled) { + $testActionResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $name, 'index', $module); + } + + } catch (Exception $e) { + $response->setException($e); + return; + } + + // determime if we need to note to the user about the name + if (($name !== $originalName)) { + $tense = (($request->isPretend()) ? 'would be' : 'is'); + $response->appendContent( + 'Note: The canonical controller name that ' . $tense + . ' used with other providers is "' . $name . '";' + . ' not "' . $originalName . '" as supplied', + array('color' => array('yellow')) + ); + unset($tense); + } + + // do the creation + if ($request->isPretend()) { + + $response->appendContent('Would create a controller at ' . $controllerResource->getContext()->getPath()); + + if (isset($indexActionResource)) { + $response->appendContent('Would create an index action method in controller ' . $name); + $response->appendContent('Would create a view script for the index action method at ' . $indexActionViewResource->getContext()->getPath()); + } + + if ($testingEnabled) { + $response->appendContent('Would create a controller test file at ' . $testActionResource->getParentResource()->getContext()->getPath()); + } + + } else { + + $response->appendContent('Creating a controller at ' . $controllerResource->getContext()->getPath()); + $controllerResource->create(); + + if (isset($indexActionResource)) { + $response->appendContent('Creating an index action method in controller ' . $name); + $indexActionResource->create(); + $response->appendContent('Creating a view script for the index action method at ' . $indexActionViewResource->getContext()->getPath()); + $indexActionViewResource->create(); + } + + if ($testingEnabled) { + $response->appendContent('Creating a controller test file at ' . $testActionResource->getParentResource()->getContext()->getPath()); + $testActionResource->getParentResource()->create(); + $testActionResource->create(); + } + + $this->_storeProfile(); + } + + } + + + +} diff --git a/library/Zend/Tool/Project/Provider/DbAdapter.php b/library/Zend/Tool/Project/Provider/DbAdapter.php new file mode 100755 index 000000000..61e77084b --- /dev/null +++ b/library/Zend/Tool/Project/Provider/DbAdapter.php @@ -0,0 +1,139 @@ +_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $appConfigFileResource = $profile->search('applicationConfigFile'); + + if ($appConfigFileResource == false) { + throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); + } + + $this->_appConfigFilePath = $appConfigFileResource->getPath(); + + $this->_config = new Zend_Config_Ini($this->_appConfigFilePath, null, array('skipExtends' => true, 'allowModifications' => true)); + + if ($sectionName != 'production') { + $this->_sectionName = $sectionName; + } + + if (!isset($this->_config->{$this->_sectionName})) { + throw new Zend_Tool_Project_Exception('The config does not have a ' . $this->_sectionName . ' section.'); + } + + if (isset($this->_config->{$this->_sectionName}->resources->db)) { + throw new Zend_Tool_Project_Exception('The config already has a db resource configured in section ' . $this->_sectionName . '.'); + } + + if ($dsn) { + $this->_configureViaDSN($dsn); + //} elseif ($interactivelyPrompt) { + // $this->_promptForConfig(); + } else { + $this->_registry->getResponse()->appendContent('Nothing to do!'); + } + + + } + + protected function _configureViaDSN($dsn) + { + $dsnVars = array(); + + if (strpos($dsn, '=') === false) { + throw new Zend_Tool_Project_Provider_Exception('At least one name value pair is expected, typcially ' + . 'in the format of "adapter=Mysqli&username=uname&password=mypass&dbname=mydb"' + ); + } + + parse_str($dsn, $dsnVars); + + // parse_str suffers when magic_quotes is enabled + if (get_magic_quotes_gpc()) { + array_walk_recursive($dsnVars, array($this, '_cleanMagicQuotesInValues')); + } + + $dbConfigValues = array('resources' => array('db' => null)); + + if (isset($dsnVars['adapter'])) { + $dbConfigValues['resources']['db']['adapter'] = $dsnVars['adapter']; + unset($dsnVars['adapter']); + } + + $dbConfigValues['resources']['db']['params'] = $dsnVars; + + $isPretend = $this->_registry->getRequest()->isPretend(); + + // get the config resource + $applicationConfig = $this->_loadedProfile->search('ApplicationConfigFile'); + $applicationConfig->addItem($dbConfigValues, $this->_sectionName, null); + + $response = $this->_registry->getResponse(); + + if ($isPretend) { + $response->appendContent('A db configuration for the ' . $this->_sectionName + . ' section would be written to the application config file with the following contents: ' + ); + $response->appendContent($applicationConfig->getContents()); + } else { + $applicationConfig->create(); + $response->appendContent('A db configuration for the ' . $this->_sectionName + . ' section has been written to the application config file.' + ); + } + } + + protected function _cleanMagicQuotesInValues(&$value, $key) + { + $value = stripslashes($value); + } + +} diff --git a/library/Zend/Tool/Project/Provider/DbTable.php b/library/Zend/Tool/Project/Provider/DbTable.php new file mode 100755 index 000000000..128e51982 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/DbTable.php @@ -0,0 +1,225 @@ + array('moduleName' => $moduleName)); + } + + $profileSearchParams[] = 'modelsDirectory'; + + $modelsDirectory = $profile->search($profileSearchParams); + + if (!($modelsDirectory instanceof Zend_Tool_Project_Profile_Resource)) { + throw new Zend_Tool_Project_Provider_Exception( + 'A models directory was not found' . + (($moduleName) ? ' for module ' . $moduleName . '.' : '.') + ); + } + + if (!($dbTableDirectory = $modelsDirectory->search('DbTableDirectory'))) { + $dbTableDirectory = $modelsDirectory->createResource('DbTableDirectory'); + } + + $dbTableFile = $dbTableDirectory->createResource('DbTableFile', array('dbTableName' => $dbTableName, 'actualTableName' => $actualTableName)); + + return $dbTableFile; + } + + public static function hasResource(Zend_Tool_Project_Profile $profile, $dbTableName, $moduleName = null) + { + $profileSearchParams = array(); + + if ($moduleName != null && is_string($moduleName)) { + $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); + } + + $profileSearchParams[] = 'modelsDirectory'; + + $modelsDirectory = $profile->search($profileSearchParams); + + if (!($modelsDirectory instanceof Zend_Tool_Project_Profile_Resource) + || !($dbTableDirectory = $modelsDirectory->search('DbTableDirectory'))) { + return false; + } + + $dbTableFile = $dbTableDirectory->search(array('DbTableFile' => array('dbTableName' => $dbTableName))); + + return ($dbTableFile instanceof Zend_Tool_Project_Profile_Resource) ? true : false; + } + + + public function create($name, $actualTableName, $module = null, $forceOverwrite = false) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + // Check that there is not a dash or underscore, return if doesnt match regex + if (preg_match('#[_-]#', $name)) { + throw new Zend_Tool_Project_Provider_Exception('DbTable names should be camel cased.'); + } + + $originalName = $name; + $name = ucfirst($name); + + if ($actualTableName == '') { + throw new Zend_Tool_Project_Provider_Exception('You must provide both the DbTable name as well as the actual db table\'s name.'); + } + + if (self::hasResource($this->_loadedProfile, $name, $module)) { + throw new Zend_Tool_Project_Provider_Exception('This project already has a DbTable named ' . $name); + } + + // get request/response object + $request = $this->_registry->getRequest(); + $response = $this->_registry->getResponse(); + + // alert the user about inline converted names + $tense = (($request->isPretend()) ? 'would be' : 'is'); + + if ($name !== $originalName) { + $response->appendContent( + 'Note: The canonical model name that ' . $tense + . ' used with other providers is "' . $name . '";' + . ' not "' . $originalName . '" as supplied', + array('color' => array('yellow')) + ); + } + + try { + $tableResource = self::createResource($this->_loadedProfile, $name, $actualTableName, $module); + } catch (Exception $e) { + $response = $this->_registry->getResponse(); + $response->setException($e); + return; + } + + // do the creation + if ($request->isPretend()) { + $response->appendContent('Would create a DbTable at ' . $tableResource->getContext()->getPath()); + } else { + $response->appendContent('Creating a DbTable at ' . $tableResource->getContext()->getPath()); + $tableResource->create(); + $this->_storeProfile(); + } + } + + /** + * @param string $module Module name action should be applied to. + * @param bool $forceOverwrite Whether should force overwriting previous classes generated + * @return void + */ + public function createFromDatabase($module = null, $forceOverwrite = false) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $bootstrapResource = $this->_loadedProfile->search('BootstrapFile'); + + /* @var $zendApp Zend_Application */ + $zendApp = $bootstrapResource->getApplicationInstance(); + + try { + $zendApp->bootstrap('db'); + } catch (Zend_Application_Exception $e) { + throw new Zend_Tool_Project_Provider_Exception('Db resource not available, you might need to configure a DbAdapter.'); + return; + } + + /* @var $db Zend_Db_Adapter_Abstract */ + $db = $zendApp->getBootstrap()->getResource('db'); + + $tableResources = array(); + foreach ($db->listTables() as $actualTableName) { + + $dbTableName = $this->_convertTableNameToClassName($actualTableName); + + if (!$forceOverwrite && self::hasResource($this->_loadedProfile, $dbTableName, $module)) { + throw new Zend_Tool_Project_Provider_Exception( + 'This DbTable resource already exists, if you wish to overwrite it, ' + . 'pass the "forceOverwrite" flag to this provider.' + ); + } + + $tableResources[] = self::createResource( + $this->_loadedProfile, + $dbTableName, + $actualTableName, + $module + ); + } + + if (count($tableResources) == 0) { + $this->_registry->getResponse()->appendContent('There are no tables in the selected database to write.'); + } + + // do the creation + if ($this->_registry->getRequest()->isPretend()) { + + foreach ($tableResources as $tableResource) { + $this->_registry->getResponse()->appendContent('Would create a DbTable at ' . $tableResource->getContext()->getPath()); + } + + } else { + + foreach ($tableResources as $tableResource) { + $this->_registry->getResponse()->appendContent('Creating a DbTable at ' . $tableResource->getContext()->getPath()); + $tableResource->create(); + } + + $this->_storeProfile(); + } + + + } + + protected function _convertTableNameToClassName($tableName) + { + if ($this->_nameFilter == null) { + $this->_nameFilter = new Zend_Filter(); + $this->_nameFilter + ->addFilter(new Zend_Filter_Word_UnderscoreToCamelCase()); + } + + return $this->_nameFilter->filter($tableName); + } + +} diff --git a/library/Zend/Tool/Project/Provider/Exception.php b/library/Zend/Tool/Project/Provider/Exception.php new file mode 100755 index 000000000..a3dc659fb --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Exception.php @@ -0,0 +1,37 @@ +createResource( + 'formFile', + array('formName' => $formName, 'moduleName' => $moduleName) + ); + + return $newForm; + } + + /** + * hasResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $formName + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + public static function hasResource(Zend_Tool_Project_Profile $profile, $formName, $moduleName = null) + { + if (!is_string($formName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Form::createResource() expects \"formName\" is the name of a form resource to check for existence.'); + } + + $formsDirectory = self::_getFormsDirectoryResource($profile, $moduleName); + return (($formsDirectory->search(array('formFile' => array('formName' => $formName)))) instanceof Zend_Tool_Project_Profile_Resource); + } + + /** + * _getFormsDirectoryResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + protected static function _getFormsDirectoryResource(Zend_Tool_Project_Profile $profile, $moduleName = null) + { + $profileSearchParams = array(); + + if ($moduleName != null && is_string($moduleName)) { + $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); + } + + $profileSearchParams[] = 'formsDirectory'; + + return $profile->search($profileSearchParams); + } + + public function enable($module = null) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + // determine if testing is enabled in the project + $testingEnabled = Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + + $formDirectoryResource = self::_getFormsDirectoryResource($this->_loadedProfile, $module); + + if ($formDirectoryResource->isEnabled()) { + throw new Zend_Tool_Project_Provider_Exception('This project already has forms enabled.'); + } else { + if ($this->_registry->getRequest()->isPretend()) { + $this->_registry->getResponse()->appendContent('Would enable forms directory at ' . $formDirectoryResource->getContext()->getPath()); + } else { + $this->_registry->getResponse()->appendContent('Enabling forms directory at ' . $formDirectoryResource->getContext()->getPath()); + $formDirectoryResource->setEnabled(true); + $formDirectoryResource->create(); + $this->_storeProfile(); + } + + } + } + + /** + * Create a new form + * + * @param string $name + * @param string $module + */ + public function create($name, $module = null) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + // determine if testing is enabled in the project + $testingEnabled = Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + + if (self::hasResource($this->_loadedProfile, $name, $module)) { + throw new Zend_Tool_Project_Provider_Exception('This project already has a form named ' . $name); + } + + // Check that there is not a dash or underscore, return if doesnt match regex + if (preg_match('#[_-]#', $name)) { + throw new Zend_Tool_Project_Provider_Exception('Form names should be camel cased.'); + } + + $name = ucwords($name); + + try { + $formResource = self::createResource($this->_loadedProfile, $name, $module); + + if ($testingEnabled) { + $testFormResource = null; + // $testFormResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $name, 'index', $module); + } + + } catch (Exception $e) { + $response = $this->_registry->getResponse(); + $response->setException($e); + return; + } + + // do the creation + if ($this->_registry->getRequest()->isPretend()) { + + $this->_registry->getResponse()->appendContent('Would create a form at ' . $formResource->getContext()->getPath()); + + if ($testFormResource) { + $this->_registry->getResponse()->appendContent('Would create a form test file at ' . $testFormResource->getContext()->getPath()); + } + + } else { + + $this->_registry->getResponse()->appendContent('Creating a form at ' . $formResource->getContext()->getPath()); + $formResource->create(); + + if ($testFormResource) { + $this->_registry->getResponse()->appendContent('Creating a form test file at ' . $testFormResource->getContext()->getPath()); + $testFormResource->create(); + } + + $this->_storeProfile(); + } + + } + + +} diff --git a/library/Zend/Tool/Project/Provider/Layout.php b/library/Zend/Tool/Project/Provider/Layout.php new file mode 100755 index 000000000..320de1e39 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Layout.php @@ -0,0 +1,140 @@ +search('applicationDirectory'); + $layoutDirectory = $applicationDirectory->search('layoutsDirectory'); + + if ($layoutDirectory == false) { + $layoutDirectory = $applicationDirectory->createResource('layoutsDirectory'); + } + + $layoutScriptsDirectory = $layoutDirectory->search('layoutScriptsDirectory'); + + if ($layoutScriptsDirectory == false) { + $layoutScriptsDirectory = $layoutDirectory->createResource('layoutScriptsDirectory'); + } + + $layoutScriptFile = $layoutScriptsDirectory->search('layoutScriptFile', array('layoutName' => 'layout')); + + if ($layoutScriptFile == false) { + $layoutScriptFile = $layoutScriptsDirectory->createResource('layoutScriptFile', array('layoutName' => 'layout')); + } + + return $layoutScriptFile; + } + + public function enable() + { + $profile = $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $applicationConfigResource = $profile->search('ApplicationConfigFile'); + + if (!$applicationConfigResource) { + throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); + } + + $zc = $applicationConfigResource->getAsZendConfig(); + + if (isset($zc->resources) && isset($zc->resources->layout)) { + $this->_registry->getResponse()->appendContent('A layout resource already exists in this project\'s application configuration file.'); + return; + } + + if ($this->_registry->getRequest()->isPretend()) { + $this->_registry->getResponse()->appendContent('Would add "resources.layout.layoutPath" key to the application config file.'); + } else { + $applicationConfigResource->addStringItem('resources.layout.layoutPath', $this->_layoutPath, 'production', false); + $applicationConfigResource->create(); + + $this->_registry->getResponse()->appendContent('A layout entry has been added to the application config file.'); + + $layoutScriptFile = self::createResource($profile); + if (!$layoutScriptFile->exists()) { + $layoutScriptFile->create(); + $this->_registry->getResponse()->appendContent( + 'A default layout has been created at ' + . $layoutScriptFile->getPath() + ); + + } + + $this->_storeProfile(); + } + } + + public function disable() + { + $profile = $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $applicationConfigResource = $this->_getApplicationConfigResource($profile); + $zc = $applicationConfigResource->getAsZendConfig(); + + if (isset($zc->resources) && !isset($zc->resources->layout)) { + $this->_registry->getResponse()->appendContent('No layout configuration exists in application config file.'); + return; + } + + if ($this->_registry->getRequest()->isPretend()) { + $this->_registry->getResponse()->appendContent('Would remove "resources.layout.layoutPath" key from the application config file.'); + } else { + + // Remove the resources.layout.layoutPath directive from application config + $applicationConfigResource->removeStringItem('resources.layout.layoutPath', $this->_layoutPath, 'production', false); + $applicationConfigResource->create(); + + // Tell the user about the good work we've done + $this->_registry->getResponse()->appendContent('Layout entry has been removed from the application config file.'); + + $this->_storeProfile(); + } + } + + protected function _getApplicationConfigResource(Zend_Tool_Project_Profile $profile) + { + $applicationConfigResource = $profile->search('ApplicationConfigFile'); + if (!$applicationConfigResource) { + throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); + } + + return $applicationConfigResource; + } +} diff --git a/library/Zend/Tool/Project/Provider/Manifest.php b/library/Zend/Tool/Project/Provider/Manifest.php new file mode 100755 index 000000000..d1f28beeb --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Manifest.php @@ -0,0 +1,75 @@ +createResource( + 'modelFile', + array('modelName' => $modelName, 'moduleName' => $moduleName) + ); + + return $newModel; + } + + /** + * hasResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $modelName + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + public static function hasResource(Zend_Tool_Project_Profile $profile, $modelName, $moduleName = null) + { + if (!is_string($modelName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Model::createResource() expects \"modelName\" is the name of a model resource to check for existence.'); + } + + $modelsDirectory = self::_getModelsDirectoryResource($profile, $moduleName); + + if (!$modelsDirectory instanceof Zend_Tool_Project_Profile_Resource) { + return false; + } + + return (($modelsDirectory->search(array('modelFile' => array('modelName' => $modelName)))) instanceof Zend_Tool_Project_Profile_Resource); + } + + /** + * _getModelsDirectoryResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + protected static function _getModelsDirectoryResource(Zend_Tool_Project_Profile $profile, $moduleName = null) + { + $profileSearchParams = array(); + + if ($moduleName != null && is_string($moduleName)) { + $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); + } + + $profileSearchParams[] = 'modelsDirectory'; + + return $profile->search($profileSearchParams); + } + + /** + * Create a new model + * + * @param string $name + * @param string $module + */ + public function create($name, $module = null) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + $originalName = $name; + + $name = ucwords($name); + + // determine if testing is enabled in the project + $testingEnabled = false; //Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + $testModelResource = null; + + // Check that there is not a dash or underscore, return if doesnt match regex + if (preg_match('#[_-]#', $name)) { + throw new Zend_Tool_Project_Provider_Exception('Model names should be camel cased.'); + } + + if (self::hasResource($this->_loadedProfile, $name, $module)) { + throw new Zend_Tool_Project_Provider_Exception('This project already has a model named ' . $name); + } + + // get request/response object + $request = $this->_registry->getRequest(); + $response = $this->_registry->getResponse(); + + // alert the user about inline converted names + $tense = (($request->isPretend()) ? 'would be' : 'is'); + + if ($name !== $originalName) { + $response->appendContent( + 'Note: The canonical model name that ' . $tense + . ' used with other providers is "' . $name . '";' + . ' not "' . $originalName . '" as supplied', + array('color' => array('yellow')) + ); + } + + try { + $modelResource = self::createResource($this->_loadedProfile, $name, $module); + + if ($testingEnabled) { + // $testModelResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $name, 'index', $module); + } + + } catch (Exception $e) { + $response->setException($e); + return; + } + + // do the creation + if ($request->isPretend()) { + + $response->appendContent('Would create a model at ' . $modelResource->getContext()->getPath()); + + if ($testModelResource) { + $response->appendContent('Would create a model test file at ' . $testModelResource->getContext()->getPath()); + } + + } else { + + $response->appendContent('Creating a model at ' . $modelResource->getContext()->getPath()); + $modelResource->create(); + + if ($testModelResource) { + $response->appendContent('Creating a model test file at ' . $testModelResource->getContext()->getPath()); + $testModelResource->create(); + } + + $this->_storeProfile(); + } + + } + + +} diff --git a/library/Zend/Tool/Project/Provider/Module.php b/library/Zend/Tool/Project/Provider/Module.php new file mode 100755 index 000000000..44898ce87 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Module.php @@ -0,0 +1,181 @@ +search('applicationDirectory'); + $targetModuleEnabledResources = array( + 'ControllersDirectory', 'ModelsDirectory', 'ViewsDirectory', + 'ViewScriptsDirectory', 'ViewHelpersDirectory', 'ViewFiltersDirectory' + ); + } + + // find the actual modules directory we will use to house our module + $modulesDirectory = $profile->search('modulesDirectory'); + + // if there is a module directory already, except + if ($modulesDirectory->search(array('moduleDirectory' => array('moduleName' => $moduleName)))) { + throw new Zend_Tool_Project_Provider_Exception('A module named "' . $moduleName . '" already exists.'); + } + + // create the module directory + $moduleDirectory = $modulesDirectory->createResource('moduleDirectory', array('moduleName' => $moduleName)); + + // create a context filter so that we can pull out only what we need from the module skeleton + $moduleContextFilterIterator = new Zend_Tool_Project_Profile_Iterator_ContextFilter( + $targetModuleResource, + array( + 'denyNames' => array('ModulesDirectory', 'ViewControllerScriptsDirectory'), + 'denyType' => 'Zend_Tool_Project_Context_Filesystem_File' + ) + ); + + // the iterator for the module skeleton + $targetIterator = new RecursiveIteratorIterator($moduleContextFilterIterator, RecursiveIteratorIterator::SELF_FIRST); + + // initialize some loop state information + $currentDepth = 0; + $parentResources = array(); + $currentResource = $moduleDirectory; + + // loop through the target module skeleton + foreach ($targetIterator as $targetSubResource) { + + $depthDifference = $targetIterator->getDepth() - $currentDepth; + $currentDepth = $targetIterator->getDepth(); + + if ($depthDifference === 1) { + // if we went down into a child, make note + array_push($parentResources, $currentResource); + // this will have always been set previously by another loop + $currentResource = $currentChildResource; + } elseif ($depthDifference < 0) { + // if we went up to a parent, make note + $i = $depthDifference; + do { + // if we went out more than 1 parent, get to the correct parent + $currentResource = array_pop($parentResources); + } while ($i-- > 0); + } + + // get parameters for the newly created module resource + $params = $targetSubResource->getAttributes(); + $currentChildResource = $currentResource->createResource($targetSubResource->getName(), $params); + + // based of the provided list (Currently up top), enable specific resources + if (isset($targetModuleEnabledResources)) { + $currentChildResource->setEnabled(in_array($targetSubResource->getName(), $targetModuleEnabledResources)); + } else { + $currentChildResource->setEnabled($targetSubResource->isEnabled()); + } + + } + + return $moduleDirectory; + } + + /** + * create() + * + * @param string $name + */ + public function create($name) //, $moduleProfile = null) + { + $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); + + // determine if testing is enabled in the project + require_once 'Zend/Tool/Project/Provider/Test.php'; + //$testingEnabled = Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + + $resources = self::createResources($this->_loadedProfile, $name); + + $response = $this->_registry->getResponse(); + + if ($this->_registry->getRequest()->isPretend()) { + $response->appendContent('I would create the following module and artifacts:'); + foreach (new RecursiveIteratorIterator($resources, RecursiveIteratorIterator::SELF_FIRST) as $resource) { + if (is_callable(array($resource->getContext(), 'getPath'))) { + $response->appendContent($resource->getContext()->getPath()); + } + } + } else { + $response->appendContent('Creating the following module and artifacts:'); + $enabledFilter = new Zend_Tool_Project_Profile_Iterator_EnabledResourceFilter($resources); + foreach (new RecursiveIteratorIterator($enabledFilter, RecursiveIteratorIterator::SELF_FIRST) as $resource) { + $response->appendContent($resource->getContext()->getPath()); + $resource->create(); + } + + $response->appendContent('Added a key for path module directory to the application.ini file'); + $appConfigFile = $this->_loadedProfile->search('ApplicationConfigFile'); + $appConfigFile->removeStringItem('resources.frontController.moduleDirectory', 'production'); + $appConfigFile->addStringItem('resources.frontController.moduleDirectory', 'APPLICATION_PATH "/modules"', 'production', false); + + if (strtolower($name) == 'default') { + $response->appendContent('Added a key for the default module to the application.ini file'); + $appConfigFile->addStringItem('resources.frontController.params.prefixDefaultModule', '1', 'production'); + } + + $appConfigFile->create(); + + // store changes to the profile + $this->_storeProfile(); + } + + } + +} + diff --git a/library/Zend/Tool/Project/Provider/Profile.php b/library/Zend/Tool/Project/Provider/Profile.php new file mode 100755 index 000000000..c0d4dd2e8 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Profile.php @@ -0,0 +1,54 @@ +_loadProfile(); + + $profileIterator = $this->_loadedProfile->getIterator(); + + foreach ($profileIterator as $profileItem) { + $this->_registry->getResponse()->appendContent( + str_repeat(' ', $profileIterator->getDepth()) . $profileItem + ); + } + + } +} diff --git a/library/Zend/Tool/Project/Provider/Project.php b/library/Zend/Tool/Project/Provider/Project.php new file mode 100755 index 000000000..30d04b60c --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Project.php @@ -0,0 +1,254 @@ +_loadProfile(self::NO_PROFILE_RETURN_FALSE, $path); + + if ($profile !== false) { + require_once 'Zend/Tool/Framework/Client/Exception.php'; + throw new Zend_Tool_Framework_Client_Exception('A project already exists here'); + } + + $profileData = null; + + if ($fileOfProfile != null && file_exists($fileOfProfile)) { + $profileData = file_get_contents($fileOfProfile); + } + + $storage = $this->_registry->getStorage(); + if ($profileData == '' && $nameOfProfile != null && $storage->isEnabled()) { + $profileData = $storage->get('project/profiles/' . $nameOfProfile . '.xml'); + } + + if ($profileData == '') { + $profileData = $this->_getDefaultProfile(); + } + + $newProfile = new Zend_Tool_Project_Profile(array( + 'projectDirectory' => $path, + 'profileData' => $profileData + )); + + $newProfile->loadFromData(); + + $response = $this->_registry->getResponse(); + + $response->appendContent('Creating project at ' . $path); + $response->appendContent('Note: ', array('separator' => false, 'color' => 'yellow')); + $response->appendContent( + 'This command created a web project, ' + . 'for more information setting up your VHOST, please see docs/README'); + + if (!Zend_Tool_Project_Provider_Test::isPHPUnitAvailable()) { + $response->appendContent('Testing Note: ', array('separator' => false, 'color' => 'yellow')); + $response->appendContent('PHPUnit was not found in your include_path, therefore no testing actions will be created.'); + } + + foreach ($newProfile->getIterator() as $resource) { + $resource->create(); + } + } + + public function show() + { + $this->_registry->getResponse()->appendContent('You probably meant to run "show project.info".', array('color' => 'yellow')); + } + + public function showInfo() + { + $profile = $this->_loadProfile(self::NO_PROFILE_RETURN_FALSE); + if (!$profile) { + $this->_registry->getResponse()->appendContent('No project found.'); + } else { + $this->_registry->getResponse()->appendContent('Working with project located at: ' . $profile->getAttribute('projectDirectory')); + } + } + + protected function _getDefaultProfile() + { + $testAction = ''; + if (Zend_Tool_Project_Provider_Test::isPHPUnitAvailable()) { + $testAction = ' '; + } + + $version = Zend_Version::VERSION; + + $data = << + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +$testAction + + + + + + + +EOS; + return $data; + } + + public static function getDefaultReadmeContents($caller = null) + { + $projectDirResource = $caller->getResource()->getProfile()->search('projectDirectory'); + if ($projectDirResource) { + $name = ltrim(strrchr($projectDirResource->getPath(), DIRECTORY_SEPARATOR), DIRECTORY_SEPARATOR); + $path = $projectDirResource->getPath() . '/public'; + } else { + $path = '/path/to/public'; + } + + return <<< EOS +README +====== + +This directory should be used to place project specfic documentation including +but not limited to project notes, generated API/phpdoc documentation, or +manual files generated or hand written. Ideally, this directory would remain +in your development environment only and should not be deployed with your +application to it's final production location. + + +Setting Up Your VHOST +===================== + +The following is a sample VHOST you might want to consider for your project. + + + DocumentRoot "$path" + ServerName $name.local + + # This should be omitted in the production environment + SetEnv APPLICATION_ENV development + + + Options Indexes MultiViews FollowSymLinks + AllowOverride All + Order allow,deny + Allow from all + + + + +EOS; + } +} diff --git a/library/Zend/Tool/Project/Provider/ProjectProvider.php b/library/Zend/Tool/Project/Provider/ProjectProvider.php new file mode 100755 index 000000000..440080679 --- /dev/null +++ b/library/Zend/Tool/Project/Provider/ProjectProvider.php @@ -0,0 +1,97 @@ +createResourceAt($profileSearchParams, 'projectProviderFile', array('projectProviderName' => $projectProviderName, 'actionNames' => $actionNames)); + + return $projectProvider; + } + + /** + * getName() + * + * @return string + */ + public function getName() + { + return 'ProjectProvider'; + } + + /** + * Create stub for Zend_Tool Project Provider + * + * @var string $name class name for new Zend_Tool Project Provider + * @var array|string $actions list of provider methods + * @throws Zend_Tool_Project_Provider_Exception + */ + public function create($name, $actions = null) + { + $profile = $this->_loadProfileRequired(); + + $projectProvider = self::createResource($profile, $name, $actions); + + if ($this->_registry->getRequest()->isPretend()) { + $this->_registry->getResponse()->appendContent('Would create a project provider named ' . $name + . ' in location ' . $projectProvider->getPath() + ); + } else { + $this->_registry->getResponse()->appendContent('Creating a project provider named ' . $name + . ' in location ' . $projectProvider->getPath() + ); + $projectProvider->create(); + $this->_storeProfile(); + } + + } +} diff --git a/library/Zend/Tool/Project/Provider/Test.php b/library/Zend/Tool/Project/Provider/Test.php new file mode 100755 index 000000000..31316027b --- /dev/null +++ b/library/Zend/Tool/Project/Provider/Test.php @@ -0,0 +1,198 @@ +search($profileSearchParams); + + return $testsDirectory->isEnabled(); + } + + public static function isPHPUnitAvailable() + { + if (class_exists('PHPUnit_Runner_Version', false)) { + return true; + } + + $included = @include 'PHPUnit/Runner/Version.php'; + + if ($included === false) { + return false; + } else { + return true; + } + } + + /** + * createApplicationResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $controllerName + * @param string $actionName + * @param string $moduleName + * @return Zend_Tool_Project_Profile_Resource + */ + public static function createApplicationResource(Zend_Tool_Project_Profile $profile, $controllerName, $actionName, $moduleName = null) + { + if (!is_string($controllerName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_View::createApplicationResource() expects \"controllerName\" is the name of a controller resource to create.'); + } + + if (!is_string($actionName)) { + throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_View::createApplicationResource() expects \"actionName\" is the name of a controller resource to create.'); + } + + $testsDirectoryResource = $profile->search('testsDirectory'); + + // parentOfController could either be application/ or a particular module folder, which is why we use this name + if (($testParentOfControllerDirectoryResource = $testsDirectoryResource->search('testApplicationDirectory')) === false) { + $testParentOfControllerDirectoryResource = $testsDirectoryResource->createResource('testApplicationDirectory'); + } + + if ($moduleName) { + if (($testAppModulesDirectoryResource = $testParentOfControllerDirectoryResource->search('testApplicationModulesDirectory')) === false) { + $testAppModulesDirectoryResource = $testParentOfControllerDirectoryResource->createResource('testApplicationModulesDirectory'); + } + + if (($testAppModuleDirectoryResource = $testAppModulesDirectoryResource->search(array('testApplicationModuleDirectory' => array('forModuleName' => $moduleName)))) === false) { + $testAppModuleDirectoryResource = $testAppModulesDirectoryResource->createResource('testApplicationModuleDirectory', array('forModuleName' => $moduleName)); + } + + $testParentOfControllerDirectoryResource = $testAppModuleDirectoryResource; + } + + if (($testAppControllerDirectoryResource = $testParentOfControllerDirectoryResource->search('testApplicationControllerDirectory', 'testApplicationModuleDirectory')) === false) { + $testAppControllerDirectoryResource = $testParentOfControllerDirectoryResource->createResource('testApplicationControllerDirectory'); + } + + if (($testAppControllerFileResource = $testAppControllerDirectoryResource->search(array('testApplicationControllerFile' => array('forControllerName' => $controllerName)))) === false) { + $testAppControllerFileResource = $testAppControllerDirectoryResource->createResource('testApplicationControllerFile', array('forControllerName' => $controllerName)); + } + + return $testAppControllerFileResource->createResource('testApplicationActionMethod', array('forActionName' => $actionName)); + } + + /** + * createLibraryResource() + * + * @param Zend_Tool_Project_Profile $profile + * @param string $libraryClassName + * @return Zend_Tool_Project_Profile_Resource + */ + public static function createLibraryResource(Zend_Tool_Project_Profile $profile, $libraryClassName) + { + $testLibraryDirectoryResource = $profile->search(array('TestsDirectory', 'TestLibraryDirectory')); + + + $fsParts = explode('_', $libraryClassName); + + $currentDirectoryResource = $testLibraryDirectoryResource; + + while ($nameOrNamespacePart = array_shift($fsParts)) { + + if (count($fsParts) > 0) { + + if (($libraryDirectoryResource = $currentDirectoryResource->search(array('TestLibraryNamespaceDirectory' => array('namespaceName' => $nameOrNamespacePart)))) === false) { + $currentDirectoryResource = $currentDirectoryResource->createResource('TestLibraryNamespaceDirectory', array('namespaceName' => $nameOrNamespacePart)); + } else { + $currentDirectoryResource = $libraryDirectoryResource; + } + + } else { + + if (($libraryFileResource = $currentDirectoryResource->search(array('TestLibraryFile' => array('forClassName' => $libraryClassName)))) === false) { + $libraryFileResource = $currentDirectoryResource->createResource('TestLibraryFile', array('forClassName' => $libraryClassName)); + } + + } + + } + + return $libraryFileResource; + } + + public function enable() + { + + } + + public function disable() + { + + } + + /** + * create() + * + * @param string $libraryClassName + */ + public function create($libraryClassName) + { + $profile = $this->_loadProfile(); + + if (!self::isTestingEnabled($profile)) { + $this->_registry->getResponse()->appendContent('Testing is not enabled for this project.'); + } + + $testLibraryResource = self::createLibraryResource($profile, $libraryClassName); + + $response = $this->_registry->getResponse(); + + if ($this->_registry->getRequest()->isPretend()) { + $response->appendContent('Would create a library stub in location ' . $testLibraryResource->getContext()->getPath()); + } else { + $response->appendContent('Creating a library stub in location ' . $testLibraryResource->getContext()->getPath()); + $testLibraryResource->create(); + $this->_storeProfile(); + } + + } + +} diff --git a/library/Zend/Tool/Project/Provider/View.php b/library/Zend/Tool/Project/Provider/View.php new file mode 100755 index 000000000..6ecccf1db --- /dev/null +++ b/library/Zend/Tool/Project/Provider/View.php @@ -0,0 +1,118 @@ + array('moduleName' => $moduleName)); + $noModuleSearch = null; + } else { + $noModuleSearch = array('modulesDirectory'); + } + + $profileSearchParams[] = 'viewsDirectory'; + $profileSearchParams[] = 'viewScriptsDirectory'; + + if (($viewScriptsDirectory = $profile->search($profileSearchParams, $noModuleSearch)) === false) { + require_once 'Zend/Tool/Project/Provider/Exception.php'; + throw new Zend_Tool_Project_Provider_Exception('This project does not have a viewScriptsDirectory resource.'); + } + + $profileSearchParams['viewControllerScriptsDirectory'] = array('forControllerName' => $controllerName); + + // @todo check if below is failing b/c of above search params + if (($viewControllerScriptsDirectory = $viewScriptsDirectory->search($profileSearchParams)) === false) { + $viewControllerScriptsDirectory = $viewScriptsDirectory->createResource('viewControllerScriptsDirectory', array('forControllerName' => $controllerName)); + } + + $newViewScriptFile = $viewControllerScriptsDirectory->createResource('ViewScriptFile', array('forActionName' => $actionName)); + + return $newViewScriptFile; + } + + /** + * create() + * + * @param string $controllerName + * @param string $actionNameOrSimpleName + */ + public function create($controllerName, $actionNameOrSimpleName, $module = null) + { + + if ($controllerName == '' || $actionNameOrSimpleName == '') { + require_once 'Zend/Tool/Project/Provider/Exception.php'; + throw new Zend_Tool_Project_Provider_Exception('ControllerName and/or ActionName are empty.'); + } + + $profile = $this->_loadProfile(); + + $view = self::createResource($profile, $actionNameOrSimpleName, $controllerName, $module); + + if ($this->_registry->getRequest()->isPretend()) { + $this->_registry->getResponse( + 'Would create a view script in location ' . $view->getContext()->getPath() + ); + } else { + $this->_registry->getResponse( + 'Creating a view script in location ' . $view->getContext()->getPath() + ); + $view->create(); + $this->_storeProfile(); + } + + } +} diff --git a/library/Zend/Translate.php b/library/Zend/Translate.php new file mode 100755 index 000000000..46bec43dc --- /dev/null +++ b/library/Zend/Translate.php @@ -0,0 +1,224 @@ +toArray(); + } else if (func_num_args() > 1) { + $args = func_get_args(); + $options = array(); + $options['adapter'] = array_shift($args); + if (!empty($args)) { + $options['content'] = array_shift($args); + } + + if (!empty($args)) { + $options['locale'] = array_shift($args); + } + + if (!empty($args)) { + $opt = array_shift($args); + $options = array_merge($opt, $options); + } + } else if (!is_array($options)) { + $options = array('adapter' => $options); + } + + $this->setAdapter($options); + } + + /** + * Sets a new adapter + * + * @param array|Zend_Config|Zend_Translate_Adapter $options Options to use + * @param string|array [$content] Path to content, or content itself + * @param string|Zend_Locale [$locale] + * @throws Zend_Translate_Exception + */ + public function setAdapter($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (func_num_args() > 1) { + $args = func_get_args(); + $options = array(); + $options['adapter'] = array_shift($args); + if (!empty($args)) { + $options['content'] = array_shift($args); + } + + if (!empty($args)) { + $options['locale'] = array_shift($args); + } + + if (!empty($args)) { + $opt = array_shift($args); + $options = array_merge($opt, $options); + } + } else if (!is_array($options)) { + $options = array('adapter' => $options); + } + + if (Zend_Loader::isReadable('Zend/Translate/Adapter/' . ucfirst($options['adapter']). '.php')) { + $options['adapter'] = 'Zend_Translate_Adapter_' . ucfirst($options['adapter']); + } + + if (!class_exists($options['adapter'])) { + Zend_Loader::loadClass($options['adapter']); + } + + if (array_key_exists('cache', $options)) { + Zend_Translate_Adapter::setCache($options['cache']); + } + + $adapter = $options['adapter']; + unset($options['adapter']); + $this->_adapter = new $adapter($options); + if (!$this->_adapter instanceof Zend_Translate_Adapter) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("Adapter " . $adapter . " does not extend Zend_Translate_Adapter"); + } + } + + /** + * Returns the adapters name and it's options + * + * @return Zend_Translate_Adapter + */ + public function getAdapter() + { + return $this->_adapter; + } + + /** + * Returns the set cache + * + * @return Zend_Cache_Core The set cache + */ + public static function getCache() + { + return Zend_Translate_Adapter::getCache(); + } + + /** + * Sets a cache for all instances of Zend_Translate + * + * @param Zend_Cache_Core $cache Cache to store to + * @return void + */ + public static function setCache(Zend_Cache_Core $cache) + { + Zend_Translate_Adapter::setCache($cache); + } + + /** + * Returns true when a cache is set + * + * @return boolean + */ + public static function hasCache() + { + return Zend_Translate_Adapter::hasCache(); + } + + /** + * Removes any set cache + * + * @return void + */ + public static function removeCache() + { + Zend_Translate_Adapter::removeCache(); + } + + /** + * Clears all set cache data + * + * @param string $tag Tag to clear when the default tag name is not used + * @return void + */ + public static function clearCache($tag = null) + { + Zend_Translate_Adapter::clearCache($tag); + } + + /** + * Calls all methods from the adapter + */ + public function __call($method, array $options) + { + if (method_exists($this->_adapter, $method)) { + return call_user_func_array(array($this->_adapter, $method), $options); + } + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("Unknown method '" . $method . "' called!"); + } +} diff --git a/library/Zend/Translate/Adapter.php b/library/Zend/Translate/Adapter.php new file mode 100755 index 000000000..efaaa05a2 --- /dev/null +++ b/library/Zend/Translate/Adapter.php @@ -0,0 +1,997 @@ + when true, clears already loaded translations when adding new files + * 'content' => content to translate or file or directory with content + * 'disableNotices' => when true, omits notices from being displayed + * 'ignore' => a prefix for files and directories which are not being added + * 'locale' => the actual set locale to use + * 'log' => a instance of Zend_Log where logs are written to + * 'logMessage' => message to be logged + * 'logPriority' => priority which is used to write the log message + * 'logUntranslated' => when true, untranslated messages are not logged + * 'reload' => reloads the cache by reading the content again + * 'scan' => searches for translation files using the LOCALE constants + * 'tag' => tag to use for the cache + * + * @var array + */ + protected $_options = array( + 'clear' => false, + 'content' => null, + 'disableNotices' => false, + 'ignore' => '.', + 'locale' => 'auto', + 'log' => null, + 'logMessage' => "Untranslated message within '%locale%': %message%", + 'logPriority' => 5, + 'logUntranslated' => false, + 'reload' => false, + 'route' => null, + 'scan' => null, + 'tag' => 'Zend_Translate' + ); + + /** + * Translation table + * @var array + */ + protected $_translate = array(); + + /** + * Generates the adapter + * + * @param string|array|Zend_Config $options Translation options for this adapter + * @param string|array [$content] + * @param string|Zend_Locale [$locale] + * @throws Zend_Translate_Exception + * @return void + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (func_num_args() > 1) { + $args = func_get_args(); + $options = array(); + $options['content'] = array_shift($args); + + if (!empty($args)) { + $options['locale'] = array_shift($args); + } + + if (!empty($args)) { + $opt = array_shift($args); + $options = array_merge($opt, $options); + } + } else if (!is_array($options)) { + $options = array('content' => $options); + } + + if (array_key_exists('cache', $options)) { + self::setCache($options['cache']); + unset($options['cache']); + } + + if (isset(self::$_cache)) { + $id = 'Zend_Translate_' . $this->toString() . '_Options'; + $result = self::$_cache->load($id); + if ($result) { + $this->_options = $result; + } + } + + if (empty($options['locale']) || ($options['locale'] === "auto")) { + $this->_automatic = true; + } else { + $this->_automatic = false; + } + + $locale = null; + if (!empty($options['locale'])) { + $locale = $options['locale']; + unset($options['locale']); + } + + $this->setOptions($options); + $options['locale'] = $locale; + + if (!empty($options['content'])) { + $this->addTranslation($options); + } + + if ($this->getLocale() !== (string) $options['locale']) { + $this->setLocale($options['locale']); + } + } + + /** + * Add translations + * + * This may be a new language or additional content for an existing language + * If the key 'clear' is true, then translations for the specified + * language will be replaced and added otherwise + * + * @param array|Zend_Config $options Options and translations to be added + * @throws Zend_Translate_Exception + * @return Zend_Translate_Adapter Provides fluent interface + */ + public function addTranslation($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (func_num_args() > 1) { + $args = func_get_args(); + $options = array(); + $options['content'] = array_shift($args); + + if (!empty($args)) { + $options['locale'] = array_shift($args); + } + + if (!empty($args)) { + $opt = array_shift($args); + $options = array_merge($opt, $options); + } + } else if (!is_array($options)) { + $options = array('content' => $options); + } + + if (!isset($options['content']) || empty($options['content'])) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("Required option 'content' is missing"); + } + + $originate = null; + if (!empty($options['locale'])) { + $originate = (string) $options['locale']; + } + + if ((array_key_exists('log', $options)) && !($options['log'] instanceof Zend_Log)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Instance of Zend_Log expected for option log'); + } + + try { + if (!($options['content'] instanceof Zend_Translate) && !($options['content'] instanceof Zend_Translate_Adapter)) { + if (empty($options['locale'])) { + $options['locale'] = null; + } + + $options['locale'] = Zend_Locale::findLocale($options['locale']); + } + } catch (Zend_Locale_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("The given Language '{$options['locale']}' does not exist", 0, $e); + } + + $options = $options + $this->_options; + if (is_string($options['content']) and is_dir($options['content'])) { + $options['content'] = realpath($options['content']); + $prev = ''; + $iterator = new RecursiveIteratorIterator( + new RecursiveRegexIterator( + new RecursiveDirectoryIterator($options['content'], RecursiveDirectoryIterator::KEY_AS_PATHNAME), + '/^(?!.*(\.svn|\.cvs)).*$/', RecursiveRegexIterator::MATCH + ), + RecursiveIteratorIterator::SELF_FIRST + ); + + foreach ($iterator as $directory => $info) { + $file = $info->getFilename(); + if (is_array($options['ignore'])) { + foreach ($options['ignore'] as $key => $ignore) { + if (strpos($key, 'regex') !== false) { + if (preg_match($ignore, $directory)) { + // ignore files matching the given regex from option 'ignore' and all files below + continue 2; + } + } else if (strpos($directory, DIRECTORY_SEPARATOR . $ignore) !== false) { + // ignore files matching first characters from option 'ignore' and all files below + continue 2; + } + } + } else { + if (strpos($directory, DIRECTORY_SEPARATOR . $options['ignore']) !== false) { + // ignore files matching first characters from option 'ignore' and all files below + continue; + } + } + + if ($info->isDir()) { + // pathname as locale + if (($options['scan'] === self::LOCALE_DIRECTORY) and (Zend_Locale::isLocale($file, true, false))) { + $options['locale'] = $file; + $prev = (string) $options['locale']; + } + } else if ($info->isFile()) { + // filename as locale + if ($options['scan'] === self::LOCALE_FILENAME) { + $filename = explode('.', $file); + array_pop($filename); + $filename = implode('.', $filename); + if (Zend_Locale::isLocale((string) $filename, true, false)) { + $options['locale'] = (string) $filename; + } else { + $parts = explode('.', $file); + $parts2 = array(); + foreach($parts as $token) { + $parts2 += explode('_', $token); + } + $parts = array_merge($parts, $parts2); + $parts2 = array(); + foreach($parts as $token) { + $parts2 += explode('-', $token); + } + $parts = array_merge($parts, $parts2); + $parts = array_unique($parts); + $prev = ''; + foreach($parts as $token) { + if (Zend_Locale::isLocale($token, true, false)) { + if (strlen($prev) <= strlen($token)) { + $options['locale'] = $token; + $prev = $token; + } + } + } + } + } + + try { + $options['content'] = $info->getPathname(); + $this->_addTranslationData($options); + } catch (Zend_Translate_Exception $e) { + // ignore failed sources while scanning + } + } + } + + unset($iterator); + } else { + $this->_addTranslationData($options); + } + + if ((isset($this->_translate[$originate]) === true) and (count($this->_translate[$originate]) > 0)) { + $this->setLocale($originate); + } + + return $this; + } + + /** + * Sets new adapter options + * + * @param array $options Adapter options + * @throws Zend_Translate_Exception + * @return Zend_Translate_Adapter Provides fluent interface + */ + public function setOptions(array $options = array()) + { + $change = false; + $locale = null; + foreach ($options as $key => $option) { + if ($key == 'locale') { + $locale = $option; + } else if ((isset($this->_options[$key]) and ($this->_options[$key] != $option)) or + !isset($this->_options[$key])) { + if (($key == 'log') && !($option instanceof Zend_Log)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Instance of Zend_Log expected for option log'); + } + + if ($key == 'cache') { + self::setCache($option); + continue; + } + + $this->_options[$key] = $option; + $change = true; + } + } + + if ($locale !== null) { + $this->setLocale($locale); + } + + if (isset(self::$_cache) and ($change == true)) { + $id = 'Zend_Translate_' . $this->toString() . '_Options'; + if (self::$_cacheTags) { + self::$_cache->save($this->_options, $id, array($this->_options['tag'])); + } else { + self::$_cache->save($this->_options, $id); + } + } + + return $this; + } + + /** + * Returns the adapters name and it's options + * + * @param string|null $optionKey String returns this option + * null returns all options + * @return integer|string|array|null + */ + public function getOptions($optionKey = null) + { + if ($optionKey === null) { + return $this->_options; + } + + if (isset($this->_options[$optionKey]) === true) { + return $this->_options[$optionKey]; + } + + return null; + } + + /** + * Gets locale + * + * @return Zend_Locale|string|null + */ + public function getLocale() + { + return $this->_options['locale']; + } + + /** + * Sets locale + * + * @param string|Zend_Locale $locale Locale to set + * @throws Zend_Translate_Exception + * @return Zend_Translate_Adapter Provides fluent interface + */ + public function setLocale($locale) + { + if (($locale === "auto") or ($locale === null)) { + $this->_automatic = true; + } else { + $this->_automatic = false; + } + + try { + $locale = Zend_Locale::findLocale($locale); + } catch (Zend_Locale_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("The given Language ({$locale}) does not exist", 0, $e); + } + + if (!isset($this->_translate[$locale])) { + $temp = explode('_', $locale); + if (!isset($this->_translate[$temp[0]]) and !isset($this->_translate[$locale])) { + if (!$this->_options['disableNotices']) { + if ($this->_options['log']) { + $this->_options['log']->log("The language '{$locale}' has to be added before it can be used.", $this->_options['logPriority']); + } else { + trigger_error("The language '{$locale}' has to be added before it can be used.", E_USER_NOTICE); + } + } + } + + $locale = $temp[0]; + } + + if (empty($this->_translate[$locale])) { + if (!$this->_options['disableNotices']) { + if ($this->_options['log']) { + $this->_options['log']->log("No translation for the language '{$locale}' available.", $this->_options['logPriority']); + } else { + trigger_error("No translation for the language '{$locale}' available.", E_USER_NOTICE); + } + } + } + + if ($this->_options['locale'] != $locale) { + $this->_options['locale'] = $locale; + + if (isset(self::$_cache)) { + $id = 'Zend_Translate_' . $this->toString() . '_Options'; + if (self::$_cacheTags) { + self::$_cache->save($this->_options, $id, array($this->_options['tag'])); + } else { + self::$_cache->save($this->_options, $id); + } + } + } + + return $this; + } + + /** + * Returns the available languages from this adapter + * + * @return array|null + */ + public function getList() + { + $list = array_keys($this->_translate); + $result = null; + foreach($list as $value) { + if (!empty($this->_translate[$value])) { + $result[$value] = $value; + } + } + return $result; + } + + /** + * Returns the message id for a given translation + * If no locale is given, the actual language will be used + * + * @param string $message Message to get the key for + * @param string|Zend_Locale $locale (optional) Language to return the message ids from + * @return string|array|false + */ + public function getMessageId($message, $locale = null) + { + if (empty($locale) or !$this->isAvailable($locale)) { + $locale = $this->_options['locale']; + } + + return array_search($message, $this->_translate[(string) $locale]); + } + + /** + * Returns all available message ids from this adapter + * If no locale is given, the actual language will be used + * + * @param string|Zend_Locale $locale (optional) Language to return the message ids from + * @return array + */ + public function getMessageIds($locale = null) + { + if (empty($locale) or !$this->isAvailable($locale)) { + $locale = $this->_options['locale']; + } + + return array_keys($this->_translate[(string) $locale]); + } + + /** + * Returns all available translations from this adapter + * If no locale is given, the actual language will be used + * If 'all' is given the complete translation dictionary will be returned + * + * @param string|Zend_Locale $locale (optional) Language to return the messages from + * @return array + */ + public function getMessages($locale = null) + { + if ($locale === 'all') { + return $this->_translate; + } + + if ((empty($locale) === true) or ($this->isAvailable($locale) === false)) { + $locale = $this->_options['locale']; + } + + return $this->_translate[(string) $locale]; + } + + /** + * Is the wished language available ? + * + * @see Zend_Locale + * @param string|Zend_Locale $locale Language to search for, identical with locale identifier, + * @see Zend_Locale for more information + * @return boolean + */ + public function isAvailable($locale) + { + $return = isset($this->_translate[(string) $locale]); + return $return; + } + + /** + * Load translation data + * + * @param mixed $data + * @param string|Zend_Locale $locale + * @param array $options (optional) + * @return array + */ + abstract protected function _loadTranslationData($data, $locale, array $options = array()); + + /** + * Internal function for adding translation data + * + * This may be a new language or additional data for an existing language + * If the options 'clear' is true, then the translation data for the specified + * language is replaced and added otherwise + * + * @see Zend_Locale + * @param array|Zend_Config $content Translation data to add + * @throws Zend_Translate_Exception + * @return Zend_Translate_Adapter Provides fluent interface + */ + private function _addTranslationData($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (func_num_args() > 1) { + $args = func_get_args(); + $options['content'] = array_shift($args); + + if (!empty($args)) { + $options['locale'] = array_shift($args); + } + + if (!empty($args)) { + $options += array_shift($args); + } + } + + if (($options['content'] instanceof Zend_Translate) || ($options['content'] instanceof Zend_Translate_Adapter)) { + $options['usetranslateadapter'] = true; + if (!empty($options['locale']) && ($options['locale'] !== 'auto')) { + $options['content'] = $options['content']->getMessages($options['locale']); + } else { + $content = $options['content']; + $locales = $content->getList(); + foreach ($locales as $locale) { + $options['locale'] = $locale; + $options['content'] = $content->getMessages($locale); + $this->_addTranslationData($options); + } + + return $this; + } + } + + try { + $options['locale'] = Zend_Locale::findLocale($options['locale']); + } catch (Zend_Locale_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("The given Language '{$options['locale']}' does not exist", 0, $e); + } + + if ($options['clear'] || !isset($this->_translate[$options['locale']])) { + $this->_translate[$options['locale']] = array(); + } + + $read = true; + if (isset(self::$_cache)) { + $id = 'Zend_Translate_' . md5(serialize($options['content'])) . '_' . $this->toString(); + $temp = self::$_cache->load($id); + if ($temp) { + $read = false; + } + } + + if ($options['reload']) { + $read = true; + } + + if ($read) { + if (!empty($options['usetranslateadapter'])) { + $temp = array($options['locale'] => $options['content']); + } else { + $temp = $this->_loadTranslationData($options['content'], $options['locale'], $options); + } + } + + if (empty($temp)) { + $temp = array(); + } + + $keys = array_keys($temp); + foreach($keys as $key) { + if (!isset($this->_translate[$key])) { + $this->_translate[$key] = array(); + } + + if (array_key_exists($key, $temp) && is_array($temp[$key])) { + $this->_translate[$key] = $temp[$key] + $this->_translate[$key]; + } + } + + if ($this->_automatic === true) { + $find = new Zend_Locale($options['locale']); + $browser = $find->getEnvironment() + $find->getBrowser(); + arsort($browser); + foreach($browser as $language => $quality) { + if (isset($this->_translate[$language])) { + $this->_options['locale'] = $language; + break; + } + } + } + + if (($read) and (isset(self::$_cache))) { + $id = 'Zend_Translate_' . md5(serialize($options['content'])) . '_' . $this->toString(); + if (self::$_cacheTags) { + self::$_cache->save($temp, $id, array($this->_options['tag'])); + } else { + self::$_cache->save($temp, $id); + } + } + + return $this; + } + + /** + * Translates the given string + * returns the translation + * + * @see Zend_Locale + * @param string|array $messageId Translation string, or Array for plural translations + * @param string|Zend_Locale $locale (optional) Locale/Language to use, identical with + * locale identifier, @see Zend_Locale for more information + * @return string + */ + public function translate($messageId, $locale = null) + { + if ($locale === null) { + $locale = $this->_options['locale']; + } + + $plural = null; + if (is_array($messageId)) { + if (count($messageId) > 2) { + $number = array_pop($messageId); + if (!is_numeric($number)) { + $plocale = $number; + $number = array_pop($messageId); + } else { + $plocale = 'en'; + } + + $plural = $messageId; + $messageId = $messageId[0]; + } else { + $messageId = $messageId[0]; + } + } + + if (!Zend_Locale::isLocale($locale, true, false)) { + if (!Zend_Locale::isLocale($locale, false, false)) { + // language does not exist, return original string + $this->_log($messageId, $locale); + // use rerouting when enabled + if (!empty($this->_options['route'])) { + if (array_key_exists($locale, $this->_options['route']) && + !array_key_exists($locale, $this->_routed)) { + $this->_routed[$locale] = true; + return $this->translate($messageId, $this->_options['route'][$locale]); + } + } + + $this->_routed = array(); + if ($plural === null) { + return $messageId; + } + + $rule = Zend_Translate_Plural::getPlural($number, $plocale); + if (!isset($plural[$rule])) { + $rule = 0; + } + + return $plural[$rule]; + } + + $locale = new Zend_Locale($locale); + } + + $locale = (string) $locale; + if ((is_string($messageId) || is_int($messageId)) && isset($this->_translate[$locale][$messageId])) { + // return original translation + if ($plural === null) { + $this->_routed = array(); + return $this->_translate[$locale][$messageId]; + } + + $rule = Zend_Translate_Plural::getPlural($number, $locale); + if (isset($this->_translate[$locale][$plural[0]][$rule])) { + $this->_routed = array(); + return $this->_translate[$locale][$plural[0]][$rule]; + } + } else if (strlen($locale) != 2) { + // faster than creating a new locale and separate the leading part + $locale = substr($locale, 0, -strlen(strrchr($locale, '_'))); + + if ((is_string($messageId) || is_int($messageId)) && isset($this->_translate[$locale][$messageId])) { + // return regionless translation (en_US -> en) + if ($plural === null) { + $this->_routed = array(); + return $this->_translate[$locale][$messageId]; + } + + $rule = Zend_Translate_Plural::getPlural($number, $locale); + if (isset($this->_translate[$locale][$plural[0]][$rule])) { + $this->_routed = array(); + return $this->_translate[$locale][$plural[0]][$rule]; + } + } + } + + $this->_log($messageId, $locale); + // use rerouting when enabled + if (!empty($this->_options['route'])) { + if (array_key_exists($locale, $this->_options['route']) && + !array_key_exists($locale, $this->_routed)) { + $this->_routed[$locale] = true; + return $this->translate($messageId, $this->_options['route'][$locale]); + } + } + + $this->_routed = array(); + if ($plural === null) { + return $messageId; + } + + $rule = Zend_Translate_Plural::getPlural($number, $plocale); + if (!isset($plural[$rule])) { + $rule = 0; + } + + return $plural[$rule]; + } + + /** + * Translates the given string using plural notations + * Returns the translated string + * + * @see Zend_Locale + * @param string $singular Singular translation string + * @param string $plural Plural translation string + * @param integer $number Number for detecting the correct plural + * @param string|Zend_Locale $locale (Optional) Locale/Language to use, identical with + * locale identifier, @see Zend_Locale for more information + * @return string + */ + public function plural($singular, $plural, $number, $locale = null) + { + return $this->translate(array($singular, $plural, $number), $locale); + } + + /** + * Logs a message when the log option is set + * + * @param string $message Message to log + * @param String $locale Locale to log + */ + protected function _log($message, $locale) { + if ($this->_options['logUntranslated']) { + $message = str_replace('%message%', $message, $this->_options['logMessage']); + $message = str_replace('%locale%', $locale, $message); + if ($this->_options['log']) { + $this->_options['log']->log($message, $this->_options['logPriority']); + } else { + trigger_error($message, E_USER_NOTICE); + } + } + } + + /** + * Translates the given string + * returns the translation + * + * @param string $messageId Translation string + * @param string|Zend_Locale $locale (optional) Locale/Language to use, identical with locale + * identifier, @see Zend_Locale for more information + * @return string + */ + public function _($messageId, $locale = null) + { + return $this->translate($messageId, $locale); + } + + /** + * Checks if a string is translated within the source or not + * returns boolean + * + * @param string $messageId Translation string + * @param boolean $original (optional) Allow translation only for original language + * when true, a translation for 'en_US' would give false when it can + * be translated with 'en' only + * @param string|Zend_Locale $locale (optional) Locale/Language to use, identical with locale identifier, + * see Zend_Locale for more information + * @return boolean + */ + public function isTranslated($messageId, $original = false, $locale = null) + { + if (($original !== false) and ($original !== true)) { + $locale = $original; + $original = false; + } + + if ($locale === null) { + $locale = $this->_options['locale']; + } + + if (!Zend_Locale::isLocale($locale, true, false)) { + if (!Zend_Locale::isLocale($locale, false, false)) { + // language does not exist, return original string + return false; + } + + $locale = new Zend_Locale($locale); + } + + $locale = (string) $locale; + if ((is_string($messageId) || is_int($messageId)) && isset($this->_translate[$locale][$messageId])) { + // return original translation + return true; + } else if ((strlen($locale) != 2) and ($original === false)) { + // faster than creating a new locale and separate the leading part + $locale = substr($locale, 0, -strlen(strrchr($locale, '_'))); + + if ((is_string($messageId) || is_int($messageId)) && isset($this->_translate[$locale][$messageId])) { + // return regionless translation (en_US -> en) + return true; + } + } + + // No translation found, return original + return false; + } + + /** + * Returns the set cache + * + * @return Zend_Cache_Core The set cache + */ + public static function getCache() + { + return self::$_cache; + } + + /** + * Sets a cache for all Zend_Translate_Adapters + * + * @param Zend_Cache_Core $cache Cache to store to + */ + public static function setCache(Zend_Cache_Core $cache) + { + self::$_cache = $cache; + self::_getTagSupportForCache(); + } + + /** + * Returns true when a cache is set + * + * @return boolean + */ + public static function hasCache() + { + if (self::$_cache !== null) { + return true; + } + + return false; + } + + /** + * Removes any set cache + * + * @return void + */ + public static function removeCache() + { + self::$_cache = null; + } + + /** + * Clears all set cache data + * + * @param string $tag Tag to clear when the default tag name is not used + * @return void + */ + public static function clearCache($tag = null) + { + require_once 'Zend/Cache.php'; + if (self::$_cacheTags) { + if ($tag == null) { + $tag = 'Zend_Translate'; + } + + self::$_cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array($tag)); + } else { + self::$_cache->clean(Zend_Cache::CLEANING_MODE_ALL); + } + } + + /** + * Returns the adapter name + * + * @return string + */ + abstract public function toString(); + + /** + * Internal method to check if the given cache supports tags + * + * @param Zend_Cache $cache + */ + private static function _getTagSupportForCache() + { + $backend = self::$_cache->getBackend(); + if ($backend instanceof Zend_Cache_Backend_ExtendedInterface) { + $cacheOptions = $backend->getCapabilities(); + self::$_cacheTags = $cacheOptions['tags']; + } else { + self::$_cacheTags = false; + } + + return self::$_cacheTags; + } +} diff --git a/library/Zend/Translate/Adapter/Array.php b/library/Zend/Translate/Adapter/Array.php new file mode 100755 index 000000000..2dd298eb0 --- /dev/null +++ b/library/Zend/Translate/Adapter/Array.php @@ -0,0 +1,81 @@ +_data = array(); + if (!is_array($data)) { + if (file_exists($data)) { + ob_start(); + $data = include($data); + ob_end_clean(); + } + } + if (!is_array($data)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("Error including array or file '".$data."'"); + } + + if (!isset($this->_data[$locale])) { + $this->_data[$locale] = array(); + } + + $this->_data[$locale] = $data + $this->_data[$locale]; + return $this->_data; + } + + /** + * returns the adapters name + * + * @return string + */ + public function toString() + { + return "Array"; + } +} diff --git a/library/Zend/Translate/Adapter/Csv.php b/library/Zend/Translate/Adapter/Csv.php new file mode 100755 index 000000000..300de2768 --- /dev/null +++ b/library/Zend/Translate/Adapter/Csv.php @@ -0,0 +1,121 @@ +_options['delimiter'] = ";"; + $this->_options['length'] = 0; + $this->_options['enclosure'] = '"'; + + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (func_num_args() > 1) { + $args = func_get_args(); + $options = array(); + $options['content'] = array_shift($args); + + if (!empty($args)) { + $options['locale'] = array_shift($args); + } + + if (!empty($args)) { + $opt = array_shift($args); + $options = array_merge($opt, $options); + } + } else if (!is_array($options)) { + $options = array('content' => $options); + } + + parent::__construct($options); + } + + /** + * Load translation data + * + * @param string|array $filename Filename and full path to the translation source + * @param string $locale Locale/Language to add data for, identical with locale identifier, + * see Zend_Locale for more information + * @param array $option OPTIONAL Options to use + * @return array + */ + protected function _loadTranslationData($filename, $locale, array $options = array()) + { + $this->_data = array(); + $options = $options + $this->_options; + $this->_file = @fopen($filename, 'rb'); + if (!$this->_file) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Error opening translation file \'' . $filename . '\'.'); + } + + while(($data = fgetcsv($this->_file, $options['length'], $options['delimiter'], $options['enclosure'])) !== false) { + if (substr($data[0], 0, 1) === '#') { + continue; + } + + if (!isset($data[1])) { + continue; + } + + if (count($data) == 2) { + $this->_data[$locale][$data[0]] = $data[1]; + } else { + $singular = array_shift($data); + $this->_data[$locale][$singular] = $data; + } + } + + return $this->_data; + } + + /** + * returns the adapters name + * + * @return string + */ + public function toString() + { + return "Csv"; + } +} diff --git a/library/Zend/Translate/Adapter/Gettext.php b/library/Zend/Translate/Adapter/Gettext.php new file mode 100755 index 000000000..81a7841ea --- /dev/null +++ b/library/Zend/Translate/Adapter/Gettext.php @@ -0,0 +1,169 @@ +_bigEndian === false) { + return unpack('V' . $bytes, fread($this->_file, 4 * $bytes)); + } else { + return unpack('N' . $bytes, fread($this->_file, 4 * $bytes)); + } + } + + /** + * Load translation data (MO file reader) + * + * @param string $filename MO file to add, full path must be given for access + * @param string $locale New Locale/Language to set, identical with locale identifier, + * see Zend_Locale for more information + * @param array $option OPTIONAL Options to use + * @throws Zend_Translation_Exception + * @return array + */ + protected function _loadTranslationData($filename, $locale, array $options = array()) + { + $this->_data = array(); + $this->_bigEndian = false; + $this->_file = @fopen($filename, 'rb'); + if (!$this->_file) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Error opening translation file \'' . $filename . '\'.'); + } + if (@filesize($filename) < 10) { + @fclose($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('\'' . $filename . '\' is not a gettext file'); + } + + // get Endian + $input = $this->_readMOData(1); + if (strtolower(substr(dechex($input[1]), -8)) == "950412de") { + $this->_bigEndian = false; + } else if (strtolower(substr(dechex($input[1]), -8)) == "de120495") { + $this->_bigEndian = true; + } else { + @fclose($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('\'' . $filename . '\' is not a gettext file'); + } + // read revision - not supported for now + $input = $this->_readMOData(1); + + // number of bytes + $input = $this->_readMOData(1); + $total = $input[1]; + + // number of original strings + $input = $this->_readMOData(1); + $OOffset = $input[1]; + + // number of translation strings + $input = $this->_readMOData(1); + $TOffset = $input[1]; + + // fill the original table + fseek($this->_file, $OOffset); + $origtemp = $this->_readMOData(2 * $total); + fseek($this->_file, $TOffset); + $transtemp = $this->_readMOData(2 * $total); + + for($count = 0; $count < $total; ++$count) { + if ($origtemp[$count * 2 + 1] != 0) { + fseek($this->_file, $origtemp[$count * 2 + 2]); + $original = @fread($this->_file, $origtemp[$count * 2 + 1]); + $original = explode("\0", $original); + } else { + $original[0] = ''; + } + + if ($transtemp[$count * 2 + 1] != 0) { + fseek($this->_file, $transtemp[$count * 2 + 2]); + $translate = fread($this->_file, $transtemp[$count * 2 + 1]); + $translate = explode("\0", $translate); + if ((count($original) > 1)) { + $this->_data[$locale][$original[0]] = $translate; + array_shift($original); + foreach ($original as $orig) { + $this->_data[$locale][$orig] = ''; + } + } else { + $this->_data[$locale][$original[0]] = $translate[0]; + } + } + } + + @fclose($this->_file); + + $this->_data[$locale][''] = trim($this->_data[$locale]['']); + if (empty($this->_data[$locale][''])) { + $this->_adapterInfo[$filename] = 'No adapter information available'; + } else { + $this->_adapterInfo[$filename] = $this->_data[$locale]['']; + } + + unset($this->_data[$locale]['']); + return $this->_data; + } + + /** + * Returns the adapter informations + * + * @return array Each loaded adapter information as array value + */ + public function getAdapterInfo() + { + return $this->_adapterInfo; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return "Gettext"; + } +} diff --git a/library/Zend/Translate/Adapter/Ini.php b/library/Zend/Translate/Adapter/Ini.php new file mode 100755 index 000000000..7935f20ee --- /dev/null +++ b/library/Zend/Translate/Adapter/Ini.php @@ -0,0 +1,74 @@ +_data = array(); + if (!file_exists($data)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception("Ini file '".$data."' not found"); + } + + $inidata = parse_ini_file($data, false); + if (!isset($this->_data[$locale])) { + $this->_data[$locale] = array(); + } + + $this->_data[$locale] = array_merge($this->_data[$locale], $inidata); + return $this->_data; + } + + /** + * returns the adapters name + * + * @return string + */ + public function toString() + { + return "Ini"; + } +} diff --git a/library/Zend/Translate/Adapter/Qt.php b/library/Zend/Translate/Adapter/Qt.php new file mode 100755 index 000000000..db543ff64 --- /dev/null +++ b/library/Zend/Translate/Adapter/Qt.php @@ -0,0 +1,175 @@ +_data = array(); + if (!is_readable($filename)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.'); + } + + $this->_target = $locale; + + $encoding = $this->_findEncoding($filename); + $this->_file = xml_parser_create($encoding); + xml_set_object($this->_file, $this); + xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0); + xml_set_element_handler($this->_file, "_startElement", "_endElement"); + xml_set_character_data_handler($this->_file, "_contentElement"); + + try { + Zend_Xml_Security::scanFile($filename); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception( + $e->getMessage() + ); + } + + if (!xml_parse($this->_file, file_get_contents($filename))) { + $ex = sprintf('XML error: %s at line %d of file %s', + xml_error_string(xml_get_error_code($this->_file)), + xml_get_current_line_number($this->_file), + $filename); + xml_parser_free($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception($ex); + } + + return $this->_data; + } + + private function _startElement($file, $name, $attrib) + { + switch(strtolower($name)) { + case 'message': + $this->_source = null; + $this->_stag = false; + $this->_ttag = false; + $this->_scontent = null; + $this->_tcontent = null; + break; + case 'source': + $this->_stag = true; + break; + case 'translation': + $this->_ttag = true; + break; + default: + break; + } + } + + private function _endElement($file, $name) + { + switch (strtolower($name)) { + case 'source': + $this->_stag = false; + break; + + case 'translation': + if (!empty($this->_scontent) and !empty($this->_tcontent) or + (isset($this->_data[$this->_target][$this->_scontent]) === false)) { + $this->_data[$this->_target][$this->_scontent] = $this->_tcontent; + } + $this->_ttag = false; + break; + + default: + break; + } + } + + private function _contentElement($file, $data) + { + if ($this->_stag === true) { + $this->_scontent .= $data; + } + + if ($this->_ttag === true) { + $this->_tcontent .= $data; + } + } + + private function _findEncoding($filename) + { + $file = file_get_contents($filename, null, null, 0, 100); + if (strpos($file, "encoding") !== false) { + $encoding = substr($file, strpos($file, "encoding") + 9); + $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1); + return $encoding; + } + return 'UTF-8'; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return "Qt"; + } +} diff --git a/library/Zend/Translate/Adapter/Tbx.php b/library/Zend/Translate/Adapter/Tbx.php new file mode 100755 index 000000000..107107c4e --- /dev/null +++ b/library/Zend/Translate/Adapter/Tbx.php @@ -0,0 +1,180 @@ +_data = array(); + if (!is_readable($filename)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.'); + } + + $encoding = $this->_findEncoding($filename); + $this->_file = xml_parser_create($encoding); + xml_set_object($this->_file, $this); + xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0); + xml_set_element_handler($this->_file, "_startElement", "_endElement"); + xml_set_character_data_handler($this->_file, "_contentElement"); + + try { + Zend_Xml_Security::scanFile($filename); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception( + $e->getMessage() + ); + } + + if (!xml_parse($this->_file, file_get_contents($filename))) { + $ex = sprintf('XML error: %s at line %d of file %s', + xml_error_string(xml_get_error_code($this->_file)), + xml_get_current_line_number($this->_file), + $filename); + xml_parser_free($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception($ex); + } + + return $this->_data; + } + + private function _startElement($file, $name, $attrib) + { + if ($this->_term !== null) { + $this->_content .= "<".$name; + foreach($attrib as $key => $value) { + $this->_content .= " $key=\"$value\""; + } + $this->_content .= ">"; + } else { + switch(strtolower($name)) { + case 'termentry': + $this->_termentry = null; + break; + case 'langset': + if (isset($attrib['xml:lang']) === true) { + $this->_langset = $attrib['xml:lang']; + if (isset($this->_data[$this->_langset]) === false) { + $this->_data[$this->_langset] = array(); + } + } + break; + case 'term': + $this->_term = true; + $this->_content = null; + break; + default: + break; + } + } + } + + private function _endElement($file, $name) + { + if (($this->_term !== null) and ($name != "term")) { + $this->_content .= ""; + } else { + switch (strtolower($name)) { + case 'langset': + $this->_langset = null; + break; + case 'term': + $this->_term = null; + if (empty($this->_termentry)) { + $this->_termentry = $this->_content; + } + if (!empty($this->_content) or (isset($this->_data[$this->_langset][$this->_termentry]) === false)) { + $this->_data[$this->_langset][$this->_termentry] = $this->_content; + } + break; + default: + break; + } + } + } + + private function _contentElement($file, $data) + { + if ($this->_term !== null) { + $this->_content .= $data; + } + } + + private function _findEncoding($filename) + { + $file = file_get_contents($filename, null, null, 0, 100); + if (strpos($file, "encoding") !== false) { + $encoding = substr($file, strpos($file, "encoding") + 9); + $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1); + return $encoding; + } + return 'UTF-8'; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return "Tbx"; + } +} diff --git a/library/Zend/Translate/Adapter/Tmx.php b/library/Zend/Translate/Adapter/Tmx.php new file mode 100755 index 000000000..d6572592d --- /dev/null +++ b/library/Zend/Translate/Adapter/Tmx.php @@ -0,0 +1,248 @@ +_data = array(); + if (!is_readable($filename)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.'); + } + + if (isset($options['useId'])) { + $this->_useId = (boolean) $options['useId']; + } + + $encoding = $this->_findEncoding($filename); + $this->_file = xml_parser_create($encoding); + xml_set_object($this->_file, $this); + xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0); + xml_set_element_handler($this->_file, "_startElement", "_endElement"); + xml_set_character_data_handler($this->_file, "_contentElement"); + + try { + Zend_Xml_Security::scanFile($filename); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception( + $e->getMessage() + ); + } + + if (!xml_parse($this->_file, file_get_contents($filename))) { + $ex = sprintf('XML error: %s at line %d of file %s', + xml_error_string(xml_get_error_code($this->_file)), + xml_get_current_line_number($this->_file), + $filename); + xml_parser_free($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception($ex); + } + + return $this->_data; + } + + /** + * Internal method, called by xml element handler at start + * + * @param resource $file File handler + * @param string $name Elements name + * @param array $attrib Attributes for this element + */ + protected function _startElement($file, $name, $attrib) + { + if ($this->_seg !== null) { + $this->_content .= "<".$name; + foreach($attrib as $key => $value) { + $this->_content .= " $key=\"$value\""; + } + $this->_content .= ">"; + } else { + switch(strtolower($name)) { + case 'header': + if (empty($this->_useId) && isset($attrib['srclang'])) { + if (Zend_Locale::isLocale($attrib['srclang'])) { + $this->_srclang = Zend_Locale::findLocale($attrib['srclang']); + } else { + if (!$this->_options['disableNotices']) { + if ($this->_options['log']) { + $this->_options['log']->notice("The language '{$attrib['srclang']}' can not be set because it does not exist."); + } else { + trigger_error("The language '{$attrib['srclang']}' can not be set because it does not exist.", E_USER_NOTICE); + } + } + + $this->_srclang = $attrib['srclang']; + } + } + break; + case 'tu': + if (isset($attrib['tuid'])) { + $this->_tu = $attrib['tuid']; + } + break; + case 'tuv': + if (isset($attrib['xml:lang'])) { + if (Zend_Locale::isLocale($attrib['xml:lang'])) { + $this->_tuv = Zend_Locale::findLocale($attrib['xml:lang']); + } else { + if (!$this->_options['disableNotices']) { + if ($this->_options['log']) { + $this->_options['log']->notice("The language '{$attrib['xml:lang']}' can not be set because it does not exist."); + } else { + trigger_error("The language '{$attrib['xml:lang']}' can not be set because it does not exist.", E_USER_NOTICE); + } + } + + $this->_tuv = $attrib['xml:lang']; + } + + if (!isset($this->_data[$this->_tuv])) { + $this->_data[$this->_tuv] = array(); + } + } + break; + case 'seg': + $this->_seg = true; + $this->_content = null; + break; + default: + break; + } + } + } + + + /** + * Internal method, called by xml element handler at end + * + * @param resource $file File handler + * @param string $name Elements name + */ + protected function _endElement($file, $name) + { + if (($this->_seg !== null) and ($name !== 'seg')) { + $this->_content .= ""; + } else { + switch (strtolower($name)) { + case 'tu': + $this->_tu = null; + break; + case 'tuv': + $this->_tuv = null; + break; + case 'seg': + $this->_seg = null; + if (!empty($this->_srclang) && ($this->_srclang == $this->_tuv)) { + $this->_tu = $this->_content; + } + + if (!empty($this->_content) or (!isset($this->_data[$this->_tuv][$this->_tu]))) { + $this->_data[$this->_tuv][$this->_tu] = $this->_content; + } + break; + default: + break; + } + } + } + + /** + * Internal method, called by xml element handler for content + * + * @param resource $file File handler + * @param string $data Elements content + */ + protected function _contentElement($file, $data) + { + if (($this->_seg !== null) and ($this->_tu !== null) and ($this->_tuv !== null)) { + $this->_content .= $data; + } + } + + + /** + * Internal method, detects the encoding of the xml file + * + * @param string $name Filename + * @return string Encoding + */ + protected function _findEncoding($filename) + { + $file = file_get_contents($filename, null, null, 0, 100); + if (strpos($file, "encoding") !== false) { + $encoding = substr($file, strpos($file, "encoding") + 9); + $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1); + return $encoding; + } + return 'UTF-8'; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return "Tmx"; + } +} diff --git a/library/Zend/Translate/Adapter/Xliff.php b/library/Zend/Translate/Adapter/Xliff.php new file mode 100755 index 000000000..e8c664bd5 --- /dev/null +++ b/library/Zend/Translate/Adapter/Xliff.php @@ -0,0 +1,244 @@ +_data = array(); + if (!is_readable($filename)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.'); + } + + if (empty($options['useId'])) { + $this->_useId = false; + } else { + $this->_useId = true; + } + + $encoding = $this->_findEncoding($filename); + $this->_target = $locale; + $this->_file = xml_parser_create($encoding); + xml_set_object($this->_file, $this); + xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0); + xml_set_element_handler($this->_file, "_startElement", "_endElement"); + xml_set_character_data_handler($this->_file, "_contentElement"); + + try { + Zend_Xml_Security::scanFile($filename); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception( + $e->getMessage() + ); + } + + if (!xml_parse($this->_file, file_get_contents($filename))) { + $ex = sprintf('XML error: %s at line %d of file %s', + xml_error_string(xml_get_error_code($this->_file)), + xml_get_current_line_number($this->_file), + $filename); + xml_parser_free($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception($ex); + } + + return $this->_data; + } + + private function _startElement($file, $name, $attrib) + { + if ($this->_stag === true) { + $this->_scontent .= "<".$name; + foreach($attrib as $key => $value) { + $this->_scontent .= " $key=\"$value\""; + } + $this->_scontent .= ">"; + } else if ($this->_ttag === true) { + $this->_tcontent .= "<".$name; + foreach($attrib as $key => $value) { + $this->_tcontent .= " $key=\"$value\""; + } + $this->_tcontent .= ">"; + } else { + switch(strtolower($name)) { + case 'file': + $this->_source = $attrib['source-language']; + if (isset($attrib['target-language'])) { + $this->_target = $attrib['target-language']; + } + + if (!isset($this->_data[$this->_source])) { + $this->_data[$this->_source] = array(); + } + + if (!isset($this->_data[$this->_target])) { + $this->_data[$this->_target] = array(); + } + + break; + case 'trans-unit': + $this->_transunit = true; + $this->_langId = $attrib['id']; + break; + case 'source': + if ($this->_transunit === true) { + $this->_scontent = null; + $this->_stag = true; + $this->_ttag = false; + } + break; + case 'target': + if ($this->_transunit === true) { + $this->_tcontent = null; + $this->_ttag = true; + $this->_stag = false; + } + break; + default: + break; + } + } + } + + private function _endElement($file, $name) + { + if (($this->_stag === true) and ($name !== 'source')) { + $this->_scontent .= ""; + } else if (($this->_ttag === true) and ($name !== 'target')) { + $this->_tcontent .= ""; + } else { + switch (strtolower($name)) { + case 'trans-unit': + $this->_transunit = null; + $this->_langId = null; + $this->_scontent = null; + $this->_tcontent = null; + break; + case 'source': + if ($this->_useId) { + if (!empty($this->_scontent) && !empty($this->_langId) && + !isset($this->_data[$this->_source][$this->_langId])) { + $this->_data[$this->_source][$this->_langId] = $this->_scontent; + } + } else { + if (!empty($this->_scontent) && + !isset($this->_data[$this->_source][$this->_scontent])) { + $this->_data[$this->_source][$this->_scontent] = $this->_scontent; + } + } + $this->_stag = false; + break; + case 'target': + if ($this->_useId) { + if (!empty($this->_tcontent) && !empty($this->_langId) && + !isset($this->_data[$this->_target][$this->_langId])) { + $this->_data[$this->_target][$this->_langId] = $this->_tcontent; + } + } else { + if (!empty($this->_tcontent) && !empty($this->_scontent) && + !isset($this->_data[$this->_target][$this->_scontent])) { + $this->_data[$this->_target][$this->_scontent] = $this->_tcontent; + } + } + $this->_ttag = false; + break; + default: + break; + } + } + } + + private function _contentElement($file, $data) + { + if (($this->_transunit !== null) and ($this->_source !== null) and ($this->_stag === true)) { + $this->_scontent .= $data; + } + + if (($this->_transunit !== null) and ($this->_target !== null) and ($this->_ttag === true)) { + $this->_tcontent .= $data; + } + } + + private function _findEncoding($filename) + { + $file = file_get_contents($filename, null, null, 0, 100); + if (strpos($file, "encoding") !== false) { + $encoding = substr($file, strpos($file, "encoding") + 9); + $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1); + return $encoding; + } + return 'UTF-8'; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return "Xliff"; + } +} diff --git a/library/Zend/Translate/Adapter/XmlTm.php b/library/Zend/Translate/Adapter/XmlTm.php new file mode 100755 index 000000000..87d22695e --- /dev/null +++ b/library/Zend/Translate/Adapter/XmlTm.php @@ -0,0 +1,154 @@ +_data = array(); + $this->_lang = $locale; + if (!is_readable($filename)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('Translation file \'' . $filename . '\' is not readable.'); + } + + $encoding = $this->_findEncoding($filename); + $this->_file = xml_parser_create($encoding); + xml_set_object($this->_file, $this); + xml_parser_set_option($this->_file, XML_OPTION_CASE_FOLDING, 0); + xml_set_element_handler($this->_file, "_startElement", "_endElement"); + xml_set_character_data_handler($this->_file, "_contentElement"); + + try { + Zend_Xml_Security::scanFile($filename); + } catch (Zend_Xml_Exception $e) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception( + $e->getMessage() + ); + } + + if (!xml_parse($this->_file, file_get_contents($filename))) { + $ex = sprintf('XML error: %s at line %d of file %s', + xml_error_string(xml_get_error_code($this->_file)), + xml_get_current_line_number($this->_file), + $filename); + xml_parser_free($this->_file); + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception($ex); + } + + return $this->_data; + } + + private function _startElement($file, $name, $attrib) + { + switch(strtolower($name)) { + case 'tm:tu': + $this->_tag = $attrib['id']; + $this->_content = null; + break; + default: + break; + } + } + + private function _endElement($file, $name) + { + switch (strtolower($name)) { + case 'tm:tu': + if (!empty($this->_tag) and !empty($this->_content) or + (isset($this->_data[$this->_lang][$this->_tag]) === false)) { + $this->_data[$this->_lang][$this->_tag] = $this->_content; + } + $this->_tag = null; + $this->_content = null; + break; + + default: + break; + } + } + + private function _contentElement($file, $data) + { + if (($this->_tag !== null)) { + $this->_content .= $data; + } + } + + private function _findEncoding($filename) + { + $file = file_get_contents($filename, null, null, 0, 100); + if (strpos($file, "encoding") !== false) { + $encoding = substr($file, strpos($file, "encoding") + 9); + $encoding = substr($encoding, 1, strpos($encoding, $encoding[0], 1) - 1); + return $encoding; + } + return 'UTF-8'; + } + + /** + * Returns the adapter name + * + * @return string + */ + public function toString() + { + return "XmlTm"; + } +} diff --git a/library/Zend/Translate/Exception.php b/library/Zend/Translate/Exception.php new file mode 100755 index 000000000..7309a98b2 --- /dev/null +++ b/library/Zend/Translate/Exception.php @@ -0,0 +1,37 @@ + 3) { + $locale = substr($locale, 0, -strlen(strrchr($locale, '_'))); + } + + if (isset(self::$_plural[$locale])) { + $return = call_user_func(self::$_plural[$locale], $number); + + if (!is_int($return) || ($return < 0)) { + $return = 0; + } + + return $return; + } + + switch($locale) { + case 'az': + case 'bo': + case 'dz': + case 'id': + case 'ja': + case 'jv': + case 'ka': + case 'km': + case 'kn': + case 'ko': + case 'ms': + case 'th': + case 'tr': + case 'vi': + case 'zh': + return 0; + break; + + case 'af': + case 'bn': + case 'bg': + case 'ca': + case 'da': + case 'de': + case 'el': + case 'en': + case 'eo': + case 'es': + case 'et': + case 'eu': + case 'fa': + case 'fi': + case 'fo': + case 'fur': + case 'fy': + case 'gl': + case 'gu': + case 'ha': + case 'he': + case 'hu': + case 'is': + case 'it': + case 'ku': + case 'lb': + case 'ml': + case 'mn': + case 'mr': + case 'nah': + case 'nb': + case 'ne': + case 'nl': + case 'nn': + case 'no': + case 'om': + case 'or': + case 'pa': + case 'pap': + case 'ps': + case 'pt': + case 'so': + case 'sq': + case 'sv': + case 'sw': + case 'ta': + case 'te': + case 'tk': + case 'ur': + case 'zu': + return ($number == 1) ? 0 : 1; + + case 'am': + case 'bh': + case 'fil': + case 'fr': + case 'gun': + case 'hi': + case 'ln': + case 'mg': + case 'nso': + case 'xbr': + case 'ti': + case 'wa': + return (($number == 0) || ($number == 1)) ? 0 : 1; + + case 'be': + case 'bs': + case 'hr': + case 'ru': + case 'sr': + case 'uk': + return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); + + case 'cs': + case 'sk': + return ($number == 1) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2); + + case 'ga': + return ($number == 1) ? 0 : (($number == 2) ? 1 : 2); + + case 'lt': + return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); + + case 'sl': + return ($number % 100 == 1) ? 0 : (($number % 100 == 2) ? 1 : ((($number % 100 == 3) || ($number % 100 == 4)) ? 2 : 3)); + + case 'mk': + return ($number % 10 == 1) ? 0 : 1; + + case 'mt': + return ($number == 1) ? 0 : ((($number == 0) || (($number % 100 > 1) && ($number % 100 < 11))) ? 1 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 2 : 3)); + + case 'lv': + return ($number == 0) ? 0 : ((($number % 10 == 1) && ($number % 100 != 11)) ? 1 : 2); + + case 'pl': + return ($number == 1) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 1 : 2); + + case 'cy': + return ($number == 1) ? 0 : (($number == 2) ? 1 : ((($number == 8) || ($number == 11)) ? 2 : 3)); + + case 'ro': + return ($number == 1) ? 0 : ((($number == 0) || (($number % 100 > 0) && ($number % 100 < 20))) ? 1 : 2); + + case 'ar': + return ($number == 0) ? 0 : (($number == 1) ? 1 : (($number == 2) ? 2 : ((($number >= 3) && ($number <= 10)) ? 3 : ((($number >= 11) && ($number <= 99)) ? 4 : 5)))); + + default: + return 0; + } + } + + /** + * Set's a new plural rule + * + * @param string $rule Callback which acts as rule + * @param string $locale Locale which is used for this callback + * @return null + */ + public static function setPlural($rule, $locale) + { + if ($locale == "pt_BR") { + // temporary set a locale for brasilian + $locale = "xbr"; + } + + if (strlen($locale) > 3) { + $locale = substr($locale, 0, -strlen(strrchr($locale, '_'))); + } + + if (!is_callable($rule)) { + require_once 'Zend/Translate/Exception.php'; + throw new Zend_Translate_Exception('The given rule can not be called'); + } + + self::$_plural[$locale] = $rule; + } +} diff --git a/library/Zend/Uri.php b/library/Zend/Uri.php new file mode 100755 index 000000000..e1660d8bf --- /dev/null +++ b/library/Zend/Uri.php @@ -0,0 +1,207 @@ + false + ); + + /** + * Return a string representation of this URI. + * + * @see getUri() + * @return string + */ + public function __toString() + { + try { + return $this->getUri(); + } catch (Exception $e) { + trigger_error($e->getMessage(), E_USER_WARNING); + return ''; + } + } + + /** + * Convenience function, checks that a $uri string is well-formed + * by validating it but not returning an object. Returns TRUE if + * $uri is a well-formed URI, or FALSE otherwise. + * + * @param string $uri The URI to check + * @return boolean + */ + public static function check($uri) + { + try { + $uri = self::factory($uri); + } catch (Exception $e) { + return false; + } + + return $uri->valid(); + } + + /** + * Create a new Zend_Uri object for a URI. If building a new URI, then $uri should contain + * only the scheme (http, ftp, etc). Otherwise, supply $uri with the complete URI. + * + * @param string $uri The URI form which a Zend_Uri instance is created + * @param string $className The name of the class to use in order to manipulate URI + * @throws Zend_Uri_Exception When an empty string was supplied for the scheme + * @throws Zend_Uri_Exception When an illegal scheme is supplied + * @throws Zend_Uri_Exception When the scheme is not supported + * @throws Zend_Uri_Exception When $className doesn't exist or doesn't implements Zend_Uri + * @return Zend_Uri + * @link http://www.faqs.org/rfcs/rfc2396.html + */ + public static function factory($uri = 'http', $className = null) + { + // Separate the scheme from the scheme-specific parts + $uri = explode(':', $uri, 2); + $scheme = strtolower($uri[0]); + $schemeSpecific = isset($uri[1]) === true ? $uri[1] : ''; + + if (strlen($scheme) === 0) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('An empty string was supplied for the scheme'); + } + + // Security check: $scheme is used to load a class file, so only alphanumerics are allowed. + if (ctype_alnum($scheme) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Illegal scheme supplied, only alphanumeric characters are permitted'); + } + + if ($className === null) { + /** + * Create a new Zend_Uri object for the $uri. If a subclass of Zend_Uri exists for the + * scheme, return an instance of that class. Otherwise, a Zend_Uri_Exception is thrown. + */ + switch ($scheme) { + case 'http': + // Break intentionally omitted + case 'https': + $className = 'Zend_Uri_Http'; + break; + + case 'mailto': + // TODO + default: + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Scheme \"$scheme\" is not supported"); + break; + } + } + + require_once 'Zend/Loader.php'; + try { + Zend_Loader::loadClass($className); + } catch (Exception $e) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("\"$className\" not found"); + } + + $schemeHandler = new $className($scheme, $schemeSpecific); + + if (! $schemeHandler instanceof Zend_Uri) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("\"$className\" is not an instance of Zend_Uri"); + } + + return $schemeHandler; + } + + /** + * Get the URI's scheme + * + * @return string|false Scheme or false if no scheme is set. + */ + public function getScheme() + { + if (empty($this->_scheme) === false) { + return $this->_scheme; + } else { + return false; + } + } + + /** + * Set global configuration options + * + * @param Zend_Config|array $config + */ + static public function setConfig($config) + { + if ($config instanceof Zend_Config) { + $config = $config->toArray(); + } elseif (!is_array($config)) { + throw new Zend_Uri_Exception("Config must be an array or an instance of Zend_Config."); + } + + foreach ($config as $k => $v) { + self::$_config[$k] = $v; + } + } + + /** + * Zend_Uri and its subclasses cannot be instantiated directly. + * Use Zend_Uri::factory() to return a new Zend_Uri object. + * + * @param string $scheme The scheme of the URI + * @param string $schemeSpecific The scheme-specific part of the URI + */ + abstract protected function __construct($scheme, $schemeSpecific = ''); + + /** + * Return a string representation of this URI. + * + * @return string + */ + abstract public function getUri(); + + /** + * Returns TRUE if this URI is valid, or FALSE otherwise. + * + * @return boolean + */ + abstract public function valid(); +} diff --git a/library/Zend/Uri/Exception.php b/library/Zend/Uri/Exception.php new file mode 100755 index 000000000..f5a497edd --- /dev/null +++ b/library/Zend/Uri/Exception.php @@ -0,0 +1,37 @@ +_scheme = $scheme; + + // Set up grammar rules for validation via regular expressions. These + // are to be used with slash-delimited regular expression strings. + + // Escaped special characters (eg. '%25' for '%') + $this->_regex['escaped'] = '%[[:xdigit:]]{2}'; + + // Unreserved characters + $this->_regex['unreserved'] = '[' . self::CHAR_ALNUM . self::CHAR_MARK . ']'; + + // Segment can use escaped, unreserved or a set of additional chars + $this->_regex['segment'] = '(?:' . $this->_regex['escaped'] . '|[' . + self::CHAR_ALNUM . self::CHAR_MARK . self::CHAR_SEGMENT . '])*'; + + // Path can be a series of segmets char strings seperated by '/' + $this->_regex['path'] = '(?:\/(?:' . $this->_regex['segment'] . ')?)+'; + + // URI characters can be escaped, alphanumeric, mark or reserved chars + $this->_regex['uric'] = '(?:' . $this->_regex['escaped'] . '|[' . + self::CHAR_ALNUM . self::CHAR_MARK . self::CHAR_RESERVED . + + // If unwise chars are allowed, add them to the URI chars class + (self::$_config['allow_unwise'] ? self::CHAR_UNWISE : '') . '])'; + + // If no scheme-specific part was supplied, the user intends to create + // a new URI with this object. No further parsing is required. + if (strlen($schemeSpecific) === 0) { + return; + } + + // Parse the scheme-specific URI parts into the instance variables. + $this->_parseUri($schemeSpecific); + + // Validate the URI + if ($this->valid() === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Invalid URI supplied'); + } + } + + /** + * Creates a Zend_Uri_Http from the given string + * + * @param string $uri String to create URI from, must start with + * 'http://' or 'https://' + * @throws InvalidArgumentException When the given $uri is not a string or + * does not start with http:// or https:// + * @throws Zend_Uri_Exception When the given $uri is invalid + * @return Zend_Uri_Http + */ + public static function fromString($uri) + { + if (is_string($uri) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('$uri is not a string'); + } + + $uri = explode(':', $uri, 2); + $scheme = strtolower($uri[0]); + $schemeSpecific = isset($uri[1]) === true ? $uri[1] : ''; + + if (in_array($scheme, array('http', 'https')) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Invalid scheme: '$scheme'"); + } + + $schemeHandler = new Zend_Uri_Http($scheme, $schemeSpecific); + return $schemeHandler; + } + + /** + * Parse the scheme-specific portion of the URI and place its parts into instance variables. + * + * @param string $schemeSpecific The scheme-specific portion to parse + * @throws Zend_Uri_Exception When scheme-specific decoposition fails + * @throws Zend_Uri_Exception When authority decomposition fails + * @return void + */ + protected function _parseUri($schemeSpecific) + { + // High-level decomposition parser + $pattern = '~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~'; + $status = @preg_match($pattern, $schemeSpecific, $matches); + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: scheme-specific decomposition failed'); + } + + // Failed decomposition; no further processing needed + if ($status === false) { + return; + } + + // Save URI components that need no further decomposition + $this->_path = isset($matches[4]) === true ? $matches[4] : ''; + $this->_query = isset($matches[6]) === true ? $matches[6] : ''; + $this->_fragment = isset($matches[8]) === true ? $matches[8] : ''; + + // Additional decomposition to get username, password, host, and port + $combo = isset($matches[3]) === true ? $matches[3] : ''; + $pattern = '~^(([^:@]*)(:([^@]*))?@)?((?(?=[[])[[][^]]+[]]|[^:]+))(:(.*))?$~'; + $status = @preg_match($pattern, $combo, $matches); + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: authority decomposition failed'); + } + + // Save remaining URI components + $this->_username = isset($matches[2]) === true ? $matches[2] : ''; + $this->_password = isset($matches[4]) === true ? $matches[4] : ''; + $this->_host = isset($matches[5]) === true + ? preg_replace('~^\[([^]]+)\]$~', '\1', $matches[5]) // Strip wrapper [] from IPv6 literal + : ''; + $this->_port = isset($matches[7]) === true ? $matches[7] : ''; + } + + /** + * Returns a URI based on current values of the instance variables. If any + * part of the URI does not pass validation, then an exception is thrown. + * + * @throws Zend_Uri_Exception When one or more parts of the URI are invalid + * @return string + */ + public function getUri() + { + if ($this->valid() === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('One or more parts of the URI are invalid'); + } + + $password = strlen($this->_password) > 0 ? ":$this->_password" : ''; + $auth = strlen($this->_username) > 0 ? "$this->_username$password@" : ''; + $port = strlen($this->_port) > 0 ? ":$this->_port" : ''; + $query = strlen($this->_query) > 0 ? "?$this->_query" : ''; + $fragment = strlen($this->_fragment) > 0 ? "#$this->_fragment" : ''; + + return $this->_scheme + . '://' + . $auth + . $this->_host + . $port + . $this->_path + . $query + . $fragment; + } + + /** + * Validate the current URI from the instance variables. Returns true if and only if all + * parts pass validation. + * + * @return boolean + */ + public function valid() + { + // Return true if and only if all parts of the URI have passed validation + return $this->validateUsername() + and $this->validatePassword() + and $this->validateHost() + and $this->validatePort() + and $this->validatePath() + and $this->validateQuery() + and $this->validateFragment(); + } + + /** + * Returns the username portion of the URL, or FALSE if none. + * + * @return string + */ + public function getUsername() + { + return strlen($this->_username) > 0 ? $this->_username : false; + } + + /** + * Returns true if and only if the username passes validation. If no username is passed, + * then the username contained in the instance variable is used. + * + * @param string $username The HTTP username + * @throws Zend_Uri_Exception When username validation fails + * @return boolean + * @link http://www.faqs.org/rfcs/rfc2396.html + */ + public function validateUsername($username = null) + { + if ($username === null) { + $username = $this->_username; + } + + // If the username is empty, then it is considered valid + if (strlen($username) === 0) { + return true; + } + + // Check the username against the allowed values + $status = @preg_match('/^(?:' . $this->_regex['escaped'] . '|[' . + self::CHAR_ALNUM . self::CHAR_MARK . ';:&=+$,' . '])+$/', $username); + + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: username validation failed'); + } + + return $status === 1; + } + + /** + * Sets the username for the current URI, and returns the old username + * + * @param string $username The HTTP username + * @throws Zend_Uri_Exception When $username is not a valid HTTP username + * @return string + */ + public function setUsername($username) + { + if ($this->validateUsername($username) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Username \"$username\" is not a valid HTTP username"); + } + + $oldUsername = $this->_username; + $this->_username = $username; + + return $oldUsername; + } + + /** + * Returns the password portion of the URL, or FALSE if none. + * + * @return string + */ + public function getPassword() + { + return strlen($this->_password) > 0 ? $this->_password : false; + } + + /** + * Returns true if and only if the password passes validation. If no password is passed, + * then the password contained in the instance variable is used. + * + * @param string $password The HTTP password + * @throws Zend_Uri_Exception When password validation fails + * @return boolean + * @link http://www.faqs.org/rfcs/rfc2396.html + */ + public function validatePassword($password = null) + { + if ($password === null) { + $password = $this->_password; + } + + // If the password is empty, then it is considered valid + if (strlen($password) === 0) { + return true; + } + + // If the password is nonempty, but there is no username, then it is considered invalid + if (strlen($password) > 0 and strlen($this->_username) === 0) { + return false; + } + + // Check the password against the allowed values + $status = @preg_match('/^(?:' . $this->_regex['escaped'] . '|[' . + self::CHAR_ALNUM . self::CHAR_MARK . ';:&=+$,' . '])+$/', $password); + + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: password validation failed.'); + } + + return $status == 1; + } + + /** + * Sets the password for the current URI, and returns the old password + * + * @param string $password The HTTP password + * @throws Zend_Uri_Exception When $password is not a valid HTTP password + * @return string + */ + public function setPassword($password) + { + if ($this->validatePassword($password) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Password \"$password\" is not a valid HTTP password."); + } + + $oldPassword = $this->_password; + $this->_password = $password; + + return $oldPassword; + } + + /** + * Returns the domain or host IP portion of the URL, or FALSE if none. + * + * @return string + */ + public function getHost() + { + return strlen($this->_host) > 0 ? $this->_host : false; + } + + /** + * Returns true if and only if the host string passes validation. If no host is passed, + * then the host contained in the instance variable is used. + * + * @param string $host The HTTP host + * @return boolean + * @uses Zend_Filter + */ + public function validateHost($host = null) + { + if ($host === null) { + $host = $this->_host; + } + + // If the host is empty, then it is considered invalid + if (strlen($host) === 0) { + return false; + } + + // Check the host against the allowed values; delegated to Zend_Filter. + $validate = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL); + + return $validate->isValid($host); + } + + /** + * Sets the host for the current URI, and returns the old host + * + * @param string $host The HTTP host + * @throws Zend_Uri_Exception When $host is nota valid HTTP host + * @return string + */ + public function setHost($host) + { + if ($this->validateHost($host) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Host \"$host\" is not a valid HTTP host"); + } + + $oldHost = $this->_host; + $this->_host = $host; + + return $oldHost; + } + + /** + * Returns the TCP port, or FALSE if none. + * + * @return string + */ + public function getPort() + { + return strlen($this->_port) > 0 ? $this->_port : false; + } + + /** + * Returns true if and only if the TCP port string passes validation. If no port is passed, + * then the port contained in the instance variable is used. + * + * @param string $port The HTTP port + * @return boolean + */ + public function validatePort($port = null) + { + if ($port === null) { + $port = $this->_port; + } + + // If the port is empty, then it is considered valid + if (strlen($port) === 0) { + return true; + } + + // Check the port against the allowed values + return ctype_digit((string) $port) and 1 <= $port and $port <= 65535; + } + + /** + * Sets the port for the current URI, and returns the old port + * + * @param string $port The HTTP port + * @throws Zend_Uri_Exception When $port is not a valid HTTP port + * @return string + */ + public function setPort($port) + { + if ($this->validatePort($port) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Port \"$port\" is not a valid HTTP port."); + } + + $oldPort = $this->_port; + $this->_port = $port; + + return $oldPort; + } + + /** + * Returns the path and filename portion of the URL. + * + * @return string + */ + public function getPath() + { + return strlen($this->_path) > 0 ? $this->_path : '/'; + } + + /** + * Returns true if and only if the path string passes validation. If no path is passed, + * then the path contained in the instance variable is used. + * + * @param string $path The HTTP path + * @throws Zend_Uri_Exception When path validation fails + * @return boolean + */ + public function validatePath($path = null) + { + if ($path === null) { + $path = $this->_path; + } + + // If the path is empty, then it is considered valid + if (strlen($path) === 0) { + return true; + } + + // Determine whether the path is well-formed + $pattern = '/^' . $this->_regex['path'] . '$/'; + $status = @preg_match($pattern, $path); + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: path validation failed'); + } + + return (boolean) $status; + } + + /** + * Sets the path for the current URI, and returns the old path + * + * @param string $path The HTTP path + * @throws Zend_Uri_Exception When $path is not a valid HTTP path + * @return string + */ + public function setPath($path) + { + if ($this->validatePath($path) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Path \"$path\" is not a valid HTTP path"); + } + + $oldPath = $this->_path; + $this->_path = $path; + + return $oldPath; + } + + /** + * Returns the query portion of the URL (after ?), or FALSE if none. + * + * @return string + */ + public function getQuery() + { + return strlen($this->_query) > 0 ? $this->_query : false; + } + + /** + * Returns the query portion of the URL (after ?) as a + * key-value-array. If the query is empty an empty array + * is returned + * + * @return array + */ + public function getQueryAsArray() + { + $query = $this->getQuery(); + $querryArray = array(); + if ($query !== false) { + parse_str($query, $querryArray); + } + return $querryArray; + } + + /** + * Returns true if and only if the query string passes validation. If no query is passed, + * then the query string contained in the instance variable is used. + * + * @param string $query The query to validate + * @throws Zend_Uri_Exception When query validation fails + * @return boolean + * @link http://www.faqs.org/rfcs/rfc2396.html + */ + public function validateQuery($query = null) + { + if ($query === null) { + $query = $this->_query; + } + + // If query is empty, it is considered to be valid + if (strlen($query) === 0) { + return true; + } + + // Determine whether the query is well-formed + $pattern = '/^' . $this->_regex['uric'] . '*$/'; + $status = @preg_match($pattern, $query); + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: query validation failed'); + } + + return $status == 1; + } + + /** + * Add or replace params in the query string for the current URI, and + * return the old query. + * + * @param array $queryParams + * @return string Old query string + */ + public function addReplaceQueryParameters(array $queryParams) + { + $queryParams = array_merge($this->getQueryAsArray(), $queryParams); + return $this->setQuery($queryParams); + } + + /** + * Remove params in the query string for the current URI, and + * return the old query. + * + * @param array $queryParamKeys + * @return string Old query string + */ + public function removeQueryParameters(array $queryParamKeys) + { + $queryParams = array_diff_key($this->getQueryAsArray(), array_fill_keys($queryParamKeys, 0)); + return $this->setQuery($queryParams); + } + + /** + * Set the query string for the current URI, and return the old query + * string This method accepts both strings and arrays. + * + * @param string|array $query The query string or array + * @throws Zend_Uri_Exception When $query is not a valid query string + * @return string Old query string + */ + public function setQuery($query) + { + $oldQuery = $this->_query; + + // If query is empty, set an empty string + if (empty($query) === true) { + $this->_query = ''; + return $oldQuery; + } + + // If query is an array, make a string out of it + if (is_array($query) === true) { + $query = http_build_query($query, '', '&'); + } else { + // If it is a string, make sure it is valid. If not parse and encode it + $query = (string) $query; + if ($this->validateQuery($query) === false) { + parse_str($query, $queryArray); + $query = http_build_query($queryArray, '', '&'); + } + } + + // Make sure the query is valid, and set it + if ($this->validateQuery($query) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("'$query' is not a valid query string"); + } + + $this->_query = $query; + + return $oldQuery; + } + + /** + * Returns the fragment portion of the URL (after #), or FALSE if none. + * + * @return string|false + */ + public function getFragment() + { + return strlen($this->_fragment) > 0 ? $this->_fragment : false; + } + + /** + * Returns true if and only if the fragment passes validation. If no fragment is passed, + * then the fragment contained in the instance variable is used. + * + * @param string $fragment Fragment of an URI + * @throws Zend_Uri_Exception When fragment validation fails + * @return boolean + * @link http://www.faqs.org/rfcs/rfc2396.html + */ + public function validateFragment($fragment = null) + { + if ($fragment === null) { + $fragment = $this->_fragment; + } + + // If fragment is empty, it is considered to be valid + if (strlen($fragment) === 0) { + return true; + } + + // Determine whether the fragment is well-formed + $pattern = '/^' . $this->_regex['uric'] . '*$/'; + $status = @preg_match($pattern, $fragment); + if ($status === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception('Internal error: fragment validation failed'); + } + + return (boolean) $status; + } + + /** + * Sets the fragment for the current URI, and returns the old fragment + * + * @param string $fragment Fragment of the current URI + * @throws Zend_Uri_Exception When $fragment is not a valid HTTP fragment + * @return string + */ + public function setFragment($fragment) + { + if ($this->validateFragment($fragment) === false) { + require_once 'Zend/Uri/Exception.php'; + throw new Zend_Uri_Exception("Fragment \"$fragment\" is not a valid HTTP fragment"); + } + + $oldFragment = $this->_fragment; + $this->_fragment = $fragment; + + return $oldFragment; + } +} diff --git a/library/Zend/Validate.php b/library/Zend/Validate.php new file mode 100755 index 000000000..956d3119d --- /dev/null +++ b/library/Zend/Validate.php @@ -0,0 +1,290 @@ +_validators[] = array( + 'instance' => $validator, + 'breakChainOnFailure' => (boolean) $breakChainOnFailure + ); + return $this; + } + + /** + * Returns true if and only if $value passes all validations in the chain + * + * Validators are run in the order in which they were added to the chain (FIFO). + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + $this->_messages = array(); + $this->_errors = array(); + $result = true; + foreach ($this->_validators as $element) { + $validator = $element['instance']; + if ($validator->isValid($value)) { + continue; + } + $result = false; + $messages = $validator->getMessages(); + $this->_messages = array_merge($this->_messages, $messages); + $this->_errors = array_merge($this->_errors, array_keys($messages)); + if ($element['breakChainOnFailure']) { + break; + } + } + return $result; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns array of validation failure messages + * + * @return array + */ + public function getMessages() + { + return $this->_messages; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns array of validation failure message codes + * + * @return array + * @deprecated Since 1.5.0 + */ + public function getErrors() + { + return $this->_errors; + } + + /** + * Returns the set default namespaces + * + * @return array + */ + public static function getDefaultNamespaces() + { + return self::$_defaultNamespaces; + } + + /** + * Sets new default namespaces + * + * @param array|string $namespace + * @return null + */ + public static function setDefaultNamespaces($namespace) + { + if (!is_array($namespace)) { + $namespace = array((string) $namespace); + } + + self::$_defaultNamespaces = $namespace; + } + + /** + * Adds a new default namespace + * + * @param array|string $namespace + * @return null + */ + public static function addDefaultNamespaces($namespace) + { + if (!is_array($namespace)) { + $namespace = array((string) $namespace); + } + + self::$_defaultNamespaces = array_unique(array_merge(self::$_defaultNamespaces, $namespace)); + } + + /** + * Returns true when defaultNamespaces are set + * + * @return boolean + */ + public static function hasDefaultNamespaces() + { + return (!empty(self::$_defaultNamespaces)); + } + + /** + * @param mixed $value + * @param string $classBaseName + * @param array $args OPTIONAL + * @param mixed $namespaces OPTIONAL + * @return boolean + * @throws Zend_Validate_Exception + */ + public static function is($value, $classBaseName, array $args = array(), $namespaces = array()) + { + $namespaces = array_merge((array) $namespaces, self::$_defaultNamespaces, array('Zend_Validate')); + $className = ucfirst($classBaseName); + try { + if (!class_exists($className, false)) { + require_once 'Zend/Loader.php'; + foreach($namespaces as $namespace) { + $class = $namespace . '_' . $className; + $file = str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php'; + if (Zend_Loader::isReadable($file)) { + Zend_Loader::loadClass($class); + $className = $class; + break; + } + } + } + + $class = new ReflectionClass($className); + if ($class->implementsInterface('Zend_Validate_Interface')) { + if ($class->hasMethod('__construct')) { + $keys = array_keys($args); + $numeric = false; + foreach($keys as $key) { + if (is_numeric($key)) { + $numeric = true; + break; + } + } + + if ($numeric) { + $object = $class->newInstanceArgs($args); + } else { + $object = $class->newInstance($args); + } + } else { + $object = $class->newInstance(); + } + + return $object->isValid($value); + } + } catch (Zend_Validate_Exception $ze) { + // if there is an exception while validating throw it + throw $ze; + } catch (Exception $e) { + // fallthrough and continue for missing validation classes + } + + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Validate class not found from basename '$classBaseName'"); + } + + /** + * Returns the maximum allowed message length + * + * @return integer + */ + public static function getMessageLength() + { + require_once 'Zend/Validate/Abstract.php'; + return Zend_Validate_Abstract::getMessageLength(); + } + + /** + * Sets the maximum allowed message length + * + * @param integer $length + */ + public static function setMessageLength($length = -1) + { + require_once 'Zend/Validate/Abstract.php'; + Zend_Validate_Abstract::setMessageLength($length); + } + + /** + * Returns the default translation object + * + * @return Zend_Translate_Adapter|null + */ + public static function getDefaultTranslator($translator = null) + { + require_once 'Zend/Validate/Abstract.php'; + return Zend_Validate_Abstract::getDefaultTranslator(); + } + + /** + * Sets a default translation object for all validation objects + * + * @param Zend_Translate|Zend_Translate_Adapter|null $translator + */ + public static function setDefaultTranslator($translator = null) + { + require_once 'Zend/Validate/Abstract.php'; + Zend_Validate_Abstract::setDefaultTranslator($translator); + } +} diff --git a/library/Zend/Validate/Abstract.php b/library/Zend/Validate/Abstract.php new file mode 100755 index 000000000..87998c576 --- /dev/null +++ b/library/Zend/Validate/Abstract.php @@ -0,0 +1,483 @@ +_messages; + } + + /** + * Returns an array of the names of variables that are used in constructing validation failure messages + * + * @return array + */ + public function getMessageVariables() + { + return array_keys($this->_messageVariables); + } + + /** + * Returns the message templates from the validator + * + * @return array + */ + public function getMessageTemplates() + { + return $this->_messageTemplates; + } + + /** + * Sets the validation failure message template for a particular key + * + * @param string $messageString + * @param string $messageKey OPTIONAL + * @return Zend_Validate_Abstract Provides a fluent interface + * @throws Zend_Validate_Exception + */ + public function setMessage($messageString, $messageKey = null) + { + if ($messageKey === null) { + $keys = array_keys($this->_messageTemplates); + foreach($keys as $key) { + $this->setMessage($messageString, $key); + } + return $this; + } + + if (!isset($this->_messageTemplates[$messageKey])) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("No message template exists for key '$messageKey'"); + } + + $this->_messageTemplates[$messageKey] = $messageString; + return $this; + } + + /** + * Sets validation failure message templates given as an array, where the array keys are the message keys, + * and the array values are the message template strings. + * + * @param array $messages + * @return Zend_Validate_Abstract + */ + public function setMessages(array $messages) + { + foreach ($messages as $key => $message) { + $this->setMessage($message, $key); + } + return $this; + } + + /** + * Magic function returns the value of the requested property, if and only if it is the value or a + * message variable. + * + * @param string $property + * @return mixed + * @throws Zend_Validate_Exception + */ + public function __get($property) + { + if ($property == 'value') { + return $this->_value; + } + if (array_key_exists($property, $this->_messageVariables)) { + return $this->{$this->_messageVariables[$property]}; + } + /** + * @see Zend_Validate_Exception + */ + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("No property exists by the name '$property'"); + } + + /** + * Constructs and returns a validation failure message with the given message key and value. + * + * Returns null if and only if $messageKey does not correspond to an existing template. + * + * If a translator is available and a translation exists for $messageKey, + * the translation will be used. + * + * @param string $messageKey + * @param string $value + * @return string + */ + protected function _createMessage($messageKey, $value) + { + if (!isset($this->_messageTemplates[$messageKey])) { + return null; + } + + $message = $this->_messageTemplates[$messageKey]; + + if (null !== ($translator = $this->getTranslator())) { + if ($translator->isTranslated($messageKey)) { + $message = $translator->translate($messageKey); + } else { + $message = $translator->translate($message); + } + } + + if (is_object($value)) { + if (!in_array('__toString', get_class_methods($value))) { + $value = get_class($value) . ' object'; + } else { + $value = $value->__toString(); + } + } elseif (is_array($value)) { + $value = $this->_implodeRecursive($value); + } else { + $value = implode((array) $value); + } + + if ($this->getObscureValue()) { + $value = str_repeat('*', strlen($value)); + } + + $message = str_replace('%value%', $value, $message); + foreach ($this->_messageVariables as $ident => $property) { + $message = str_replace( + "%$ident%", + implode(' ', (array) $this->$property), + $message + ); + } + + $length = self::getMessageLength(); + if (($length > -1) && (strlen($message) > $length)) { + $message = substr($message, 0, (self::getMessageLength() - 3)) . '...'; + } + + return $message; + } + + /** + * Joins elements of a multidimensional array + * + * @param array $pieces + * @return string + */ + protected function _implodeRecursive(array $pieces) + { + $values = array(); + foreach ($pieces as $item) { + if (is_array($item)) { + $values[] = $this->_implodeRecursive($item); + } else { + $values[] = $item; + } + } + + return implode(', ', $values); + } + + /** + * @param string $messageKey + * @param string $value OPTIONAL + * @return void + */ + protected function _error($messageKey, $value = null) + { + if ($messageKey === null) { + $keys = array_keys($this->_messageTemplates); + $messageKey = current($keys); + } + if ($value === null) { + $value = $this->_value; + } + $this->_errors[] = $messageKey; + $this->_messages[$messageKey] = $this->_createMessage($messageKey, $value); + } + + /** + * Sets the value to be validated and clears the messages and errors arrays + * + * @param mixed $value + * @return void + */ + protected function _setValue($value) + { + $this->_value = $value; + $this->_messages = array(); + $this->_errors = array(); + } + + /** + * Returns array of validation failure message codes + * + * @return array + * @deprecated Since 1.5.0 + */ + public function getErrors() + { + return $this->_errors; + } + + /** + * Set flag indicating whether or not value should be obfuscated in messages + * + * @param bool $flag + * @return Zend_Validate_Abstract + */ + public function setObscureValue($flag) + { + $this->_obscureValue = (bool) $flag; + return $this; + } + + /** + * Retrieve flag indicating whether or not value should be obfuscated in + * messages + * + * @return bool + */ + public function getObscureValue() + { + return $this->_obscureValue; + } + + /** + * Set translation object + * + * @param Zend_Translate|Zend_Translate_Adapter|null $translator + * @throws Zend_Validate_Exception + * @return Zend_Validate_Abstract + */ + public function setTranslator($translator = null) + { + if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) { + $this->_translator = $translator; + } elseif ($translator instanceof Zend_Translate) { + $this->_translator = $translator->getAdapter(); + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid translator specified'); + } + return $this; + } + + /** + * Return translation object + * + * @return Zend_Translate_Adapter|null + */ + public function getTranslator() + { + if ($this->translatorIsDisabled()) { + return null; + } + + if (null === $this->_translator) { + return self::getDefaultTranslator(); + } + + return $this->_translator; + } + + /** + * Does this validator have its own specific translator? + * + * @return bool + */ + public function hasTranslator() + { + return (bool)$this->_translator; + } + + /** + * Set default translation object for all validate objects + * + * @param Zend_Translate|Zend_Translate_Adapter|null $translator + * @throws Zend_Validate_Exception + */ + public static function setDefaultTranslator($translator = null) + { + if ((null === $translator) || ($translator instanceof Zend_Translate_Adapter)) { + self::$_defaultTranslator = $translator; + } elseif ($translator instanceof Zend_Translate) { + self::$_defaultTranslator = $translator->getAdapter(); + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid translator specified'); + } + } + + /** + * Get default translation object for all validate objects + * + * @return Zend_Translate_Adapter|null + */ + public static function getDefaultTranslator() + { + if (null === self::$_defaultTranslator) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Translate')) { + $translator = Zend_Registry::get('Zend_Translate'); + if ($translator instanceof Zend_Translate_Adapter) { + return $translator; + } elseif ($translator instanceof Zend_Translate) { + return $translator->getAdapter(); + } + } + } + + return self::$_defaultTranslator; + } + + /** + * Is there a default translation object set? + * + * @return boolean + */ + public static function hasDefaultTranslator() + { + return (bool)self::$_defaultTranslator; + } + + /** + * Indicate whether or not translation should be disabled + * + * @param bool $flag + * @return Zend_Validate_Abstract + */ + public function setDisableTranslator($flag) + { + $this->_translatorDisabled = (bool) $flag; + return $this; + } + + /** + * Is translation disabled? + * + * @return bool + */ + public function translatorIsDisabled() + { + return $this->_translatorDisabled; + } + + /** + * Returns the maximum allowed message length + * + * @return integer + */ + public static function getMessageLength() + { + return self::$_messageLength; + } + + /** + * Sets the maximum allowed message length + * + * @param integer $length + */ + public static function setMessageLength($length = -1) + { + self::$_messageLength = $length; + } +} diff --git a/library/Zend/Validate/Alnum.php b/library/Zend/Validate/Alnum.php new file mode 100755 index 000000000..509183021 --- /dev/null +++ b/library/Zend/Validate/Alnum.php @@ -0,0 +1,149 @@ + "Invalid type given. String, integer or float expected", + self::NOT_ALNUM => "'%value%' contains characters which are non alphabetic and no digits", + self::STRING_EMPTY => "'%value%' is an empty string", + ); + + /** + * Sets default option values for this instance + * + * @param boolean|Zend_Config $allowWhiteSpace + */ + public function __construct($allowWhiteSpace = false) + { + if ($allowWhiteSpace instanceof Zend_Config) { + $allowWhiteSpace = $allowWhiteSpace->toArray(); + } + + if (is_array($allowWhiteSpace)) { + if (array_key_exists('allowWhiteSpace', $allowWhiteSpace)) { + $allowWhiteSpace = $allowWhiteSpace['allowWhiteSpace']; + } else { + $allowWhiteSpace = false; + } + } + + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + } + + /** + * Returns the allowWhiteSpace option + * + * @return boolean + */ + public function getAllowWhiteSpace() + { + return $this->allowWhiteSpace; + } + + /** + * Sets the allowWhiteSpace option + * + * @param boolean $allowWhiteSpace + * @return Zend_Filter_Alnum Provides a fluent interface + */ + public function setAllowWhiteSpace($allowWhiteSpace) + { + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value contains only alphabetic and digit characters + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value) && !is_float($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + + if ('' === $value) { + $this->_error(self::STRING_EMPTY); + return false; + } + + if (null === self::$_filter) { + /** + * @see Zend_Filter_Alnum + */ + require_once 'Zend/Filter/Alnum.php'; + self::$_filter = new Zend_Filter_Alnum(); + } + + self::$_filter->allowWhiteSpace = $this->allowWhiteSpace; + + if ($value != self::$_filter->filter($value)) { + $this->_error(self::NOT_ALNUM); + return false; + } + + return true; + } + +} diff --git a/library/Zend/Validate/Alpha.php b/library/Zend/Validate/Alpha.php new file mode 100755 index 000000000..c9ea9828f --- /dev/null +++ b/library/Zend/Validate/Alpha.php @@ -0,0 +1,149 @@ + "Invalid type given. String expected", + self::NOT_ALPHA => "'%value%' contains non alphabetic characters", + self::STRING_EMPTY => "'%value%' is an empty string" + ); + + /** + * Sets default option values for this instance + * + * @param boolean|Zend_Config $allowWhiteSpace + */ + public function __construct($allowWhiteSpace = false) + { + if ($allowWhiteSpace instanceof Zend_Config) { + $allowWhiteSpace = $allowWhiteSpace->toArray(); + } + + if (is_array($allowWhiteSpace)) { + if (array_key_exists('allowWhiteSpace', $allowWhiteSpace)) { + $allowWhiteSpace = $allowWhiteSpace['allowWhiteSpace']; + } else { + $allowWhiteSpace = false; + } + } + + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + } + + /** + * Returns the allowWhiteSpace option + * + * @return boolean + */ + public function getAllowWhiteSpace() + { + return $this->allowWhiteSpace; + } + + /** + * Sets the allowWhiteSpace option + * + * @param boolean $allowWhiteSpace + * @return Zend_Filter_Alpha Provides a fluent interface + */ + public function setAllowWhiteSpace($allowWhiteSpace) + { + $this->allowWhiteSpace = (boolean) $allowWhiteSpace; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value contains only alphabetic characters + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + + if ('' === $value) { + $this->_error(self::STRING_EMPTY); + return false; + } + + if (null === self::$_filter) { + /** + * @see Zend_Filter_Alpha + */ + require_once 'Zend/Filter/Alpha.php'; + self::$_filter = new Zend_Filter_Alpha(); + } + + self::$_filter->allowWhiteSpace = $this->allowWhiteSpace; + + if ($value !== self::$_filter->filter($value)) { + $this->_error(self::NOT_ALPHA); + return false; + } + + return true; + } + +} diff --git a/library/Zend/Validate/Barcode.php b/library/Zend/Validate/Barcode.php new file mode 100755 index 000000000..4d48d5160 --- /dev/null +++ b/library/Zend/Validate/Barcode.php @@ -0,0 +1,227 @@ + "'%value%' failed checksum validation", + self::INVALID_CHARS => "'%value%' contains invalid characters", + self::INVALID_LENGTH => "'%value%' should have a length of %length% characters", + self::INVALID => "Invalid type given. String expected", + ); + + /** + * Additional variables available for validation failure messages + * + * @var array + */ + protected $_messageVariables = array( + 'length' => '_length' + ); + + /** + * Length for the set subtype + * + * @var integer + */ + protected $_length; + + /** + * Barcode adapter + * + * @var Zend_Validate_Barcode_BarcodeAdapter + */ + protected $_adapter; + + /** + * Generates the standard validator object + * + * @param string|Zend_Config| + * Zend_Validate_Barcode_BarcodeAdapter $adapter Barcode adapter to use + * @throws Zend_Validate_Exception + */ + public function __construct($adapter) + { + if ($adapter instanceof Zend_Config) { + $adapter = $adapter->toArray(); + } + + $options = null; + $checksum = null; + if (is_array($adapter)) { + if (array_key_exists('options', $adapter)) { + $options = $adapter['options']; + } + + if (array_key_exists('checksum', $adapter)) { + $checksum = $adapter['checksum']; + } + + if (array_key_exists('adapter', $adapter)) { + $adapter = $adapter['adapter']; + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Missing option 'adapter'"); + } + } + + $this->setAdapter($adapter, $options); + if ($checksum !== null) { + $this->setChecksum($checksum); + } + } + + /** + * Returns the set adapter + * + * @return Zend_Validate_Barcode_BarcodeAdapter + */ + public function getAdapter() + { + return $this->_adapter; + } + + /** + * Sets a new barcode adapter + * + * @param string|Zend_Validate_Barcode $adapter Barcode adapter to use + * @param array $options Options for this adapter + * @return $this + * @throws Zend_Validate_Exception + */ + public function setAdapter($adapter, $options = null) + { + $adapter = ucfirst(strtolower($adapter)); + require_once 'Zend/Loader.php'; + if (Zend_Loader::isReadable('Zend/Validate/Barcode/' . $adapter. '.php')) { + $adapter = 'Zend_Validate_Barcode_' . $adapter; + } + + if (!class_exists($adapter)) { + Zend_Loader::loadClass($adapter); + } + + $this->_adapter = new $adapter($options); + if (!$this->_adapter instanceof Zend_Validate_Barcode_AdapterInterface) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception( + "Adapter " . $adapter . " does not implement Zend_Validate_Barcode_AdapterInterface" + ); + } + + return $this; + } + + /** + * Returns the checksum option + * + * @return boolean + */ + public function getChecksum() + { + return $this->getAdapter()->getCheck(); + } + + /** + * Sets the checksum option + * + * @param boolean $checksum + * @return Zend_Validate_Barcode + */ + public function setChecksum($checksum) + { + $this->getAdapter()->setCheck($checksum); + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value contains a valid barcode + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + $adapter = $this->getAdapter(); + $this->_length = $adapter->getLength(); + $result = $adapter->checkLength($value); + if (!$result) { + if (is_array($this->_length)) { + $temp = $this->_length; + $this->_length = ""; + foreach($temp as $length) { + $this->_length .= "/"; + $this->_length .= $length; + } + + $this->_length = substr($this->_length, 1); + } + + $this->_error(self::INVALID_LENGTH); + return false; + } + + $result = $adapter->checkChars($value); + if (!$result) { + $this->_error(self::INVALID_CHARS); + return false; + } + + if ($this->getChecksum()) { + $result = $adapter->checksum($value); + if (!$result) { + $this->_error(self::FAILED); + return false; + } + } + + return true; + } +} diff --git a/library/Zend/Validate/Barcode/AdapterAbstract.php b/library/Zend/Validate/Barcode/AdapterAbstract.php new file mode 100755 index 000000000..05dc2b9fa --- /dev/null +++ b/library/Zend/Validate/Barcode/AdapterAbstract.php @@ -0,0 +1,315 @@ +getLength(); + if (is_array($length)) { + foreach ($length as $value) { + if ($fixum == $value) { + $found = true; + } + + if ($value == -1) { + $found = true; + } + } + } elseif ($fixum == $length) { + $found = true; + } elseif ($length == -1) { + $found = true; + } elseif ($length == 'even') { + $count = $fixum % 2; + $found = ($count == 0) ? true : false; + } elseif ($length == 'odd') { + $count = $fixum % 2; + $found = ($count == 1) ? true : false; + } + + return $found; + } + + /** + * Checks for allowed characters within the barcode + * + * @param string $value The barcode to check for allowed characters + * @return boolean + */ + public function checkChars($value) + { + if (!is_string($value)) { + return false; + } + + $characters = $this->getCharacters(); + if ($characters == 128) { + for ($x = 0; $x < 128; ++$x) { + $value = str_replace(chr($x), '', $value); + } + } else { + $chars = str_split($characters); + foreach ($chars as $char) { + $value = str_replace($char, '', $value); + } + } + + if (strlen($value) > 0) { + return false; + } + + return true; + } + + /** + * Validates the checksum + * + * @param string $value The barcode to check the checksum for + * @return boolean + */ + public function checksum($value) + { + $checksum = $this->getChecksum(); + if (!empty($checksum)) { + if (method_exists($this, $checksum)) { + return call_user_func(array($this, $checksum), $value); + } + } + + return false; + } + + /** + * Returns the allowed barcode length + * + * @return string + */ + public function getLength() + { + return $this->_length; + } + + /** + * Returns the allowed characters + * + * @return integer|string + */ + public function getCharacters() + { + return $this->_characters; + } + + /** + * Returns the checksum function name + * + */ + public function getChecksum() + { + return $this->_checksum; + } + + /** + * Returns if barcode uses checksum + * + * @return boolean + */ + public function getCheck() + { + return $this->_hasChecksum; + } + + /** + * Sets the checksum validation + * + * @param boolean $check + * @return Zend_Validate_Barcode_AdapterAbstract + */ + public function setCheck($check) + { + $this->_hasChecksum = (boolean) $check; + return $this; + } + + /** + * Validates the checksum (Modulo 10) + * GTIN implementation factor 3 + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _gtin($value) + { + $barcode = substr($value, 0, -1); + $sum = 0; + $length = strlen($barcode) - 1; + + for ($i = 0; $i <= $length; $i++) { + if (($i % 2) === 0) { + $sum += $barcode[$length - $i] * 3; + } else { + $sum += $barcode[$length - $i]; + } + } + + $calc = $sum % 10; + $checksum = ($calc === 0) ? 0 : (10 - $calc); + if ($value[$length + 1] != $checksum) { + return false; + } + + return true; + } + + /** + * Validates the checksum (Modulo 10) + * IDENTCODE implementation factors 9 and 4 + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _identcode($value) + { + $barcode = substr($value, 0, -1); + $sum = 0; + $length = strlen($value) - 2; + + for ($i = 0; $i <= $length; $i++) { + if (($i % 2) === 0) { + $sum += $barcode[$length - $i] * 4; + } else { + $sum += $barcode[$length - $i] * 9; + } + } + + $calc = $sum % 10; + $checksum = ($calc === 0) ? 0 : (10 - $calc); + if ($value[$length + 1] != $checksum) { + return false; + } + + return true; + } + + /** + * Validates the checksum (Modulo 10) + * CODE25 implementation factor 3 + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _code25($value) + { + $barcode = substr($value, 0, -1); + $sum = 0; + $length = strlen($barcode) - 1; + + for ($i = 0; $i <= $length; $i++) { + if (($i % 2) === 0) { + $sum += $barcode[$i] * 3; + } else { + $sum += $barcode[$i]; + } + } + + $calc = $sum % 10; + $checksum = ($calc === 0) ? 0 : (10 - $calc); + if ($value[$length + 1] != $checksum) { + return false; + } + + return true; + } + + /** + * Validates the checksum () + * POSTNET implementation + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _postnet($value) + { + $checksum = substr($value, -1, 1); + $values = str_split(substr($value, 0, -1)); + + $check = 0; + foreach($values as $row) { + $check += $row; + } + + $check %= 10; + $check = 10 - $check; + if ($check == $checksum) { + return true; + } + + return false; + } +} diff --git a/library/Zend/Validate/Barcode/AdapterInterface.php b/library/Zend/Validate/Barcode/AdapterInterface.php new file mode 100755 index 000000000..8e96effbf --- /dev/null +++ b/library/Zend/Validate/Barcode/AdapterInterface.php @@ -0,0 +1,68 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Code25interleaved.php b/library/Zend/Validate/Barcode/Code25interleaved.php new file mode 100755 index 000000000..479aa0320 --- /dev/null +++ b/library/Zend/Validate/Barcode/Code25interleaved.php @@ -0,0 +1,62 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Code39.php b/library/Zend/Validate/Barcode/Code39.php new file mode 100755 index 000000000..37b2f13af --- /dev/null +++ b/library/Zend/Validate/Barcode/Code39.php @@ -0,0 +1,98 @@ + 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, + '7' => 7, '8' => 8, '9' => 9, 'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, + 'E' => 14, 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19, 'K' => 20, + 'L' => 21, 'M' => 22, 'N' => 23, 'O' => 24, 'P' => 25, 'Q' => 26, 'R' => 27, + 'S' => 28, 'T' => 29, 'U' => 30, 'V' => 31, 'W' => 32, 'X' => 33, 'Y' => 34, + 'Z' => 35, '-' => 36, '.' => 37, ' ' => 38, '$' => 39, '/' => 40, '+' => 41, + '%' => 42, + ); + + /** + * Constructor + * + * Sets check flag to false. + */ + public function __construct() + { + $this->setCheck(false); + } + + /** + * Validates the checksum (Modulo 43) + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _code39($value) + { + $checksum = substr($value, -1, 1); + $value = str_split(substr($value, 0, -1)); + $count = 0; + foreach($value as $char) { + $count += $this->_check[$char]; + } + + $mod = $count % 43; + if ($mod == $this->_check[$checksum]) { + return true; + } + + return false; + } +} diff --git a/library/Zend/Validate/Barcode/Code39ext.php b/library/Zend/Validate/Barcode/Code39ext.php new file mode 100755 index 000000000..cd99c363c --- /dev/null +++ b/library/Zend/Validate/Barcode/Code39ext.php @@ -0,0 +1,56 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Code93.php b/library/Zend/Validate/Barcode/Code93.php new file mode 100755 index 000000000..e09ba17ec --- /dev/null +++ b/library/Zend/Validate/Barcode/Code93.php @@ -0,0 +1,118 @@ + 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, + '7' => 7, '8' => 8, '9' => 9, 'A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, + 'E' => 14, 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 18, 'J' => 19, 'K' => 20, + 'L' => 21, 'M' => 22, 'N' => 23, 'O' => 24, 'P' => 25, 'Q' => 26, 'R' => 27, + 'S' => 28, 'T' => 29, 'U' => 30, 'V' => 31, 'W' => 32, 'X' => 33, 'Y' => 34, + 'Z' => 35, '-' => 36, '.' => 37, ' ' => 38, '$' => 39, '/' => 40, '+' => 41, + '%' => 42, '!' => 43, '"' => 44, '§' => 45, '&' => 46, + ); + + /** + * Constructor + * + * Sets check flag to false. + */ + public function __construct() + { + $this->setCheck(false); + } + + /** + * Validates the checksum (Modulo CK) + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _code93($value) + { + $checksum = substr($value, -2, 2); + $value = str_split(substr($value, 0, -2)); + $count = 0; + $length = count($value) % 20; + foreach($value as $char) { + if ($length == 0) { + $length = 20; + } + + $count += $this->_check[$char] * $length; + --$length; + } + + $check = array_search(($count % 47), $this->_check); + $value[] = $check; + $count = 0; + $length = count($value) % 15; + foreach($value as $char) { + if ($length == 0) { + $length = 15; + } + + $count += $this->_check[$char] * $length; + --$length; + } + $check .= array_search(($count % 47), $this->_check); + + if ($check == $checksum) { + return true; + } + + return false; + } +} diff --git a/library/Zend/Validate/Barcode/Code93ext.php b/library/Zend/Validate/Barcode/Code93ext.php new file mode 100755 index 000000000..6879a8937 --- /dev/null +++ b/library/Zend/Validate/Barcode/Code93ext.php @@ -0,0 +1,56 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Ean12.php b/library/Zend/Validate/Barcode/Ean12.php new file mode 100755 index 000000000..e185233f5 --- /dev/null +++ b/library/Zend/Validate/Barcode/Ean12.php @@ -0,0 +1,52 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Ean5.php b/library/Zend/Validate/Barcode/Ean5.php new file mode 100755 index 000000000..ff5b4bb2a --- /dev/null +++ b/library/Zend/Validate/Barcode/Ean5.php @@ -0,0 +1,56 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Ean8.php b/library/Zend/Validate/Barcode/Ean8.php new file mode 100755 index 000000000..6b1caa973 --- /dev/null +++ b/library/Zend/Validate/Barcode/Ean8.php @@ -0,0 +1,69 @@ +setCheck(false); + } else { + $this->setCheck(true); + } + + return parent::checkLength($value); + } +} diff --git a/library/Zend/Validate/Barcode/Gtin12.php b/library/Zend/Validate/Barcode/Gtin12.php new file mode 100755 index 000000000..65ff5b9a2 --- /dev/null +++ b/library/Zend/Validate/Barcode/Gtin12.php @@ -0,0 +1,52 @@ +setCheck(false); + } +} diff --git a/library/Zend/Validate/Barcode/Issn.php b/library/Zend/Validate/Barcode/Issn.php new file mode 100755 index 000000000..a74fa5379 --- /dev/null +++ b/library/Zend/Validate/Barcode/Issn.php @@ -0,0 +1,119 @@ +_checksum = '_issn'; + } else { + $this->_checksum = '_gtin'; + } + + return parent::checksum($value); + } + + /** + * Validates the checksum () + * ISSN implementation (reversed mod11) + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _issn($value) + { + $checksum = substr($value, -1, 1); + $values = str_split(substr($value, 0, -1)); + $check = 0; + $multi = 8; + foreach($values as $token) { + if ($token == 'X') { + $token = 10; + } + + $check += ($token * $multi); + --$multi; + } + + $check %= 11; + $check = 11 - $check; + if ($check == $checksum) { + return true; + } else if (($check == 10) && ($checksum == 'X')) { + return true; + } + + return false; + } +} diff --git a/library/Zend/Validate/Barcode/Itf14.php b/library/Zend/Validate/Barcode/Itf14.php new file mode 100755 index 000000000..4adc7447b --- /dev/null +++ b/library/Zend/Validate/Barcode/Itf14.php @@ -0,0 +1,52 @@ + 1, '1' => 1, '2' => 1, '3' => 1, '4' => 1, '5' => 1, + '6' => 2, '7' => 2, '8' => 2, '9' => 2, 'A' => 2, 'B' => 2, + 'C' => 3, 'D' => 3, 'E' => 3, 'F' => 3, 'G' => 3, 'H' => 3, + 'I' => 4, 'J' => 4, 'K' => 4, 'L' => 4, 'M' => 4, 'N' => 4, + 'O' => 5, 'P' => 5, 'Q' => 5, 'R' => 5, 'S' => 5, 'T' => 5, + 'U' => 0, 'V' => 0, 'W' => 0, 'X' => 0, 'Y' => 0, 'Z' => 0, + ); + + protected $_columns = array( + '0' => 1, '1' => 2, '2' => 3, '3' => 4, '4' => 5, '5' => 0, + '6' => 1, '7' => 2, '8' => 3, '9' => 4, 'A' => 5, 'B' => 0, + 'C' => 1, 'D' => 2, 'E' => 3, 'F' => 4, 'G' => 5, 'H' => 0, + 'I' => 1, 'J' => 2, 'K' => 3, 'L' => 4, 'M' => 5, 'N' => 0, + 'O' => 1, 'P' => 2, 'Q' => 3, 'R' => 4, 'S' => 5, 'T' => 0, + 'U' => 1, 'V' => 2, 'W' => 3, 'X' => 4, 'Y' => 5, 'Z' => 0, + ); + + /** + * Checksum function + * @var string + */ + protected $_checksum = '_royalmail'; + + /** + * Validates the checksum () + * + * @param string $value The barcode to validate + * @return boolean + */ + protected function _royalmail($value) + { + $checksum = substr($value, -1, 1); + $values = str_split(substr($value, 0, -1)); + $rowvalue = 0; + $colvalue = 0; + foreach($values as $row) { + $rowvalue += $this->_rows[$row]; + $colvalue += $this->_columns[$row]; + } + + $rowvalue %= 6; + $colvalue %= 6; + + $rowchkvalue = array_keys($this->_rows, $rowvalue); + $colchkvalue = array_keys($this->_columns, $colvalue); + $chkvalue = current(array_intersect($rowchkvalue, $colchkvalue)); + if ($chkvalue == $checksum) { + return true; + } + + return false; + } + + /** + * Allows start and stop tag within checked chars + * + * @param string $value The barcode to check for allowed characters + * @return boolean + */ + public function checkChars($value) + { + if ($value[0] == '(') { + $value = substr($value, 1); + + if ($value[strlen($value) - 1] == ')') { + $value = substr($value, 0, -1); + } else { + return false; + } + } + + return parent::checkChars($value); + } +} diff --git a/library/Zend/Validate/Barcode/Sscc.php b/library/Zend/Validate/Barcode/Sscc.php new file mode 100755 index 000000000..e624d7d79 --- /dev/null +++ b/library/Zend/Validate/Barcode/Sscc.php @@ -0,0 +1,52 @@ +setCheck(false); + } else { + $this->setCheck(true); + } + + return parent::checkLength($value); + } +} diff --git a/library/Zend/Validate/Between.php b/library/Zend/Validate/Between.php new file mode 100755 index 000000000..53b68261d --- /dev/null +++ b/library/Zend/Validate/Between.php @@ -0,0 +1,224 @@ + "'%value%' is not between '%min%' and '%max%', inclusively", + self::NOT_BETWEEN_STRICT => "'%value%' is not strictly between '%min%' and '%max%'" + ); + + /** + * Additional variables available for validation failure messages + * + * @var array + */ + protected $_messageVariables = array( + 'min' => '_min', + 'max' => '_max' + ); + + /** + * Minimum value + * + * @var mixed + */ + protected $_min; + + /** + * Maximum value + * + * @var mixed + */ + protected $_max; + + /** + * Whether to do inclusive comparisons, allowing equivalence to min and/or max + * + * If false, then strict comparisons are done, and the value may equal neither + * the min nor max options + * + * @var boolean + */ + protected $_inclusive; + + /** + * Sets validator options + * Accepts the following option keys: + * 'min' => scalar, minimum border + * 'max' => scalar, maximum border + * 'inclusive' => boolean, inclusive border values + * + * @param array|Zend_Config $options + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['min'] = array_shift($options); + if (!empty($options)) { + $temp['max'] = array_shift($options); + } + + if (!empty($options)) { + $temp['inclusive'] = array_shift($options); + } + + $options = $temp; + } + + if (!array_key_exists('min', $options) || !array_key_exists('max', $options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Missing option. 'min' and 'max' has to be given"); + } + + if (!array_key_exists('inclusive', $options)) { + $options['inclusive'] = true; + } + + $this->setMin($options['min']) + ->setMax($options['max']) + ->setInclusive($options['inclusive']); + } + + /** + * Returns the min option + * + * @return mixed + */ + public function getMin() + { + return $this->_min; + } + + /** + * Sets the min option + * + * @param mixed $min + * @return Zend_Validate_Between Provides a fluent interface + */ + public function setMin($min) + { + $this->_min = $min; + return $this; + } + + /** + * Returns the max option + * + * @return mixed + */ + public function getMax() + { + return $this->_max; + } + + /** + * Sets the max option + * + * @param mixed $max + * @return Zend_Validate_Between Provides a fluent interface + */ + public function setMax($max) + { + $this->_max = $max; + return $this; + } + + /** + * Returns the inclusive option + * + * @return boolean + */ + public function getInclusive() + { + return $this->_inclusive; + } + + /** + * Sets the inclusive option + * + * @param boolean $inclusive + * @return Zend_Validate_Between Provides a fluent interface + */ + public function setInclusive($inclusive) + { + $this->_inclusive = $inclusive; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is between min and max options, inclusively + * if inclusive option is true. + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + + if ($this->_inclusive) { + if ($this->_min > $value || $value > $this->_max) { + $this->_error(self::NOT_BETWEEN); + return false; + } + } else { + if ($this->_min >= $value || $value >= $this->_max) { + $this->_error(self::NOT_BETWEEN_STRICT); + return false; + } + } + return true; + } + +} diff --git a/library/Zend/Validate/Callback.php b/library/Zend/Validate/Callback.php new file mode 100755 index 000000000..bb12ecf78 --- /dev/null +++ b/library/Zend/Validate/Callback.php @@ -0,0 +1,173 @@ + "'%value%' is not valid", + self::INVALID_CALLBACK => "An exception has been raised within the callback", + ); + + /** + * Callback in a call_user_func format + * + * @var string|array + */ + protected $_callback = null; + + /** + * Default options to set for the filter + * + * @var mixed + */ + protected $_options = array(); + + /** + * Sets validator options + * + * @param mixed $callback + * @throws Zend_Validate_Exception + */ + public function __construct($callback = null) + { + if (is_callable($callback)) { + $this->setCallback($callback); + } elseif (is_array($callback)) { + if (isset($callback['callback'])) { + $this->setCallback($callback['callback']); + } + if (isset($callback['options'])) { + $this->setOptions($callback['options']); + } + } + + if (null === ($initializedCallack = $this->getCallback())) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('No callback registered'); + } + } + + /** + * Returns the set callback + * + * @return mixed + */ + public function getCallback() + { + return $this->_callback; + } + + /** + * Sets the callback + * + * @param string|array $callback + * @throws Zend_Validate_Exception + * @return Zend_Validate_Callback Provides a fluent interface + */ + public function setCallback($callback) + { + if (!is_callable($callback)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid callback given'); + } + $this->_callback = $callback; + return $this; + } + + /** + * Returns the set options for the callback + * + * @return mixed + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets options for the callback + * + * @param mixed $options + * @return Zend_Validate_Callback Provides a fluent interface + */ + public function setOptions($options) + { + $this->_options = (array) $options; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the set callback returns + * for the provided $value + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + + $options = $this->getOptions(); + $callback = $this->getCallback(); + $args = func_get_args(); + $options = array_merge($args, $options); + + try { + if (!call_user_func_array($callback, $options)) { + $this->_error(self::INVALID_VALUE); + return false; + } + } catch (Exception $e) { + $this->_error(self::INVALID_CALLBACK); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Ccnum.php b/library/Zend/Validate/Ccnum.php new file mode 100755 index 000000000..c3c7029a3 --- /dev/null +++ b/library/Zend/Validate/Ccnum.php @@ -0,0 +1,112 @@ + "'%value%' must contain between 13 and 19 digits", + self::CHECKSUM => "Luhn algorithm (mod-10 checksum) failed on '%value%'" + ); + + public function __construct() + { + trigger_error('Using the Ccnum validator is deprecated in favor of the CreditCard validator'); + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value follows the Luhn algorithm (mod-10 checksum) + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + + if (null === self::$_filter) { + /** + * @see Zend_Filter_Digits + */ + require_once 'Zend/Filter/Digits.php'; + self::$_filter = new Zend_Filter_Digits(); + } + + $valueFiltered = self::$_filter->filter($value); + + $length = strlen($valueFiltered); + + if ($length < 13 || $length > 19) { + $this->_error(self::LENGTH); + return false; + } + + $sum = 0; + $weight = 2; + + for ($i = $length - 2; $i >= 0; $i--) { + $digit = $weight * $valueFiltered[$i]; + $sum += floor($digit / 10) + $digit % 10; + $weight = $weight % 2 + 1; + } + + if ((10 - $sum % 10) % 10 != $valueFiltered[$length - 1]) { + $this->_error(self::CHECKSUM, $valueFiltered); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/CreditCard.php b/library/Zend/Validate/CreditCard.php new file mode 100755 index 000000000..170b62250 --- /dev/null +++ b/library/Zend/Validate/CreditCard.php @@ -0,0 +1,319 @@ + "'%value%' seems to contain an invalid checksum", + self::CONTENT => "'%value%' must contain only digits", + self::INVALID => "Invalid type given. String expected", + self::LENGTH => "'%value%' contains an invalid amount of digits", + self::PREFIX => "'%value%' is not from an allowed institute", + self::SERVICE => "'%value%' seems to be an invalid creditcard number", + self::SERVICEFAILURE => "An exception has been raised while validating '%value%'", + ); + + /** + * List of allowed CCV lengths + * + * @var array + */ + protected $_cardLength = array( + self::AMERICAN_EXPRESS => array(15), + self::DINERS_CLUB => array(14), + self::DINERS_CLUB_US => array(16), + self::DISCOVER => array(16), + self::JCB => array(16), + self::LASER => array(16, 17, 18, 19), + self::MAESTRO => array(12, 13, 14, 15, 16, 17, 18, 19), + self::MASTERCARD => array(16), + self::SOLO => array(16, 18, 19), + self::UNIONPAY => array(16, 17, 18, 19), + self::VISA => array(16), + ); + + /** + * List of accepted CCV provider tags + * + * @var array + */ + protected $_cardType = array( + self::AMERICAN_EXPRESS => array('34', '37'), + self::DINERS_CLUB => array('300', '301', '302', '303', '304', '305', '36'), + self::DINERS_CLUB_US => array('54', '55'), + self::DISCOVER => array('6011', '622126', '622127', '622128', '622129', '62213', + '62214', '62215', '62216', '62217', '62218', '62219', + '6222', '6223', '6224', '6225', '6226', '6227', '6228', + '62290', '62291', '622920', '622921', '622922', '622923', + '622924', '622925', '644', '645', '646', '647', '648', + '649', '65'), + self::JCB => array('3528', '3529', '353', '354', '355', '356', '357', '358'), + self::LASER => array('6304', '6706', '6771', '6709'), + self::MAESTRO => array('5018', '5020', '5038', '6304', '6759', '6761', '6763'), + self::MASTERCARD => array('51', '52', '53', '54', '55'), + self::SOLO => array('6334', '6767'), + self::UNIONPAY => array('622126', '622127', '622128', '622129', '62213', '62214', + '62215', '62216', '62217', '62218', '62219', '6222', '6223', + '6224', '6225', '6226', '6227', '6228', '62290', '62291', + '622920', '622921', '622922', '622923', '622924', '622925'), + self::VISA => array('4'), + ); + + /** + * CCIs which are accepted by validation + * + * @var array + */ + protected $_type = array(); + + /** + * Service callback for additional validation + * + * @var callback + */ + protected $_service; + + /** + * Constructor + * + * @param string|array|Zend_Config $options OPTIONAL Type of CCI to allow + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['type'] = array_shift($options); + if (!empty($options)) { + $temp['service'] = array_shift($options); + } + + $options = $temp; + } + + if (!array_key_exists('type', $options)) { + $options['type'] = self::ALL; + } + + $this->setType($options['type']); + if (array_key_exists('service', $options)) { + $this->setService($options['service']); + } + } + + /** + * Returns a list of accepted CCIs + * + * @return array + */ + public function getType() + { + return $this->_type; + } + + /** + * Sets CCIs which are accepted by validation + * + * @param string|array $type Type to allow for validation + * @return Zend_Validate_CreditCard Provides a fluent interface + */ + public function setType($type) + { + $this->_type = array(); + return $this->addType($type); + } + + /** + * Adds a CCI to be accepted by validation + * + * @param string|array $type Type to allow for validation + * @return Zend_Validate_CreditCard Provides a fluent interface + */ + public function addType($type) + { + if (is_string($type)) { + $type = array($type); + } + + foreach($type as $typ) { + if (defined('self::' . strtoupper($typ)) && !in_array($typ, $this->_type)) { + $this->_type[] = $typ; + } + + if (($typ == self::ALL)) { + $this->_type = array_keys($this->_cardLength); + } + } + + return $this; + } + + /** + * Returns the actual set service + * + * @return callback + */ + public function getService() + { + return $this->_service; + } + + /** + * Sets a new callback for service validation + * + * @param mixed $service + * @throws Zend_Validate_Exception + * @return $this + */ + public function setService($service) + { + if (!is_callable($service)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid callback given'); + } + + $this->_service = $service; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value follows the Luhn algorithm (mod-10 checksum) + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + + if (!is_string($value)) { + $this->_error(self::INVALID, $value); + return false; + } + + if (!ctype_digit($value)) { + $this->_error(self::CONTENT, $value); + return false; + } + + $length = strlen($value); + $types = $this->getType(); + $foundp = false; + $foundl = false; + foreach ($types as $type) { + foreach ($this->_cardType[$type] as $prefix) { + if (substr($value, 0, strlen($prefix)) == $prefix) { + $foundp = true; + if (in_array($length, $this->_cardLength[$type])) { + $foundl = true; + break 2; + } + } + } + } + + if ($foundp == false){ + $this->_error(self::PREFIX, $value); + return false; + } + + if ($foundl == false) { + $this->_error(self::LENGTH, $value); + return false; + } + + $sum = 0; + $weight = 2; + + for ($i = $length - 2; $i >= 0; $i--) { + $digit = $weight * $value[$i]; + $sum += floor($digit / 10) + $digit % 10; + $weight = $weight % 2 + 1; + } + + if ((10 - $sum % 10) % 10 != $value[$length - 1]) { + $this->_error(self::CHECKSUM, $value); + return false; + } + + if (!empty($this->_service)) { + try { + require_once 'Zend/Validate/Callback.php'; + $callback = new Zend_Validate_Callback($this->_service); + $callback->setOptions($this->_type); + if (!$callback->isValid($value)) { + $this->_error(self::SERVICE, $value); + return false; + } + } catch (Zend_Exception $e) { + $this->_error(self::SERVICEFAILURE, $value); + return false; + } + } + + return true; + } +} diff --git a/library/Zend/Validate/Date.php b/library/Zend/Validate/Date.php new file mode 100755 index 000000000..e875aaf55 --- /dev/null +++ b/library/Zend/Validate/Date.php @@ -0,0 +1,258 @@ + "Invalid type given. String, integer, array or Zend_Date expected", + self::INVALID_DATE => "'%value%' does not appear to be a valid date", + self::FALSEFORMAT => "'%value%' does not fit the date format '%format%'", + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'format' => '_format' + ); + + /** + * Optional format + * + * @var string|null + */ + protected $_format; + + /** + * Optional locale + * + * @var string|Zend_Locale|null + */ + protected $_locale; + + /** + * Sets validator options + * + * @param string|array|Zend_Config $options OPTIONAL + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['format'] = array_shift($options); + if (!empty($options)) { + $temp['locale'] = array_shift($options); + } + + $options = $temp; + } + + if (array_key_exists('format', $options)) { + $this->setFormat($options['format']); + } + + if (!array_key_exists('locale', $options)) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Locale')) { + $options['locale'] = Zend_Registry::get('Zend_Locale'); + } + } + + if (array_key_exists('locale', $options)) { + $this->setLocale($options['locale']); + } + } + + /** + * Returns the locale option + * + * @return string|Zend_Locale|null + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Sets the locale option + * + * @param string|Zend_Locale $locale + * @return Zend_Validate_Date provides a fluent interface + */ + public function setLocale($locale = null) + { + require_once 'Zend/Locale.php'; + $this->_locale = Zend_Locale::findLocale($locale); + return $this; + } + + /** + * Returns the locale option + * + * @return string|null + */ + public function getFormat() + { + return $this->_format; + } + + /** + * Sets the format option + * + * @param string $format + * @return Zend_Validate_Date provides a fluent interface + */ + public function setFormat($format = null) + { + $this->_format = $format; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if $value is a valid date of the format YYYY-MM-DD + * If optional $format or $locale is set the date format is checked + * according to Zend_Date, see Zend_Date::isDate() + * + * @param string|array|Zend_Date $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value) && !is_float($value) && + !is_array($value) && !($value instanceof Zend_Date)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + + if (($this->_format !== null) || ($this->_locale !== null) || is_array($value) || + $value instanceof Zend_Date) { + require_once 'Zend/Date.php'; + if (!Zend_Date::isDate($value, $this->_format, $this->_locale)) { + if ($this->_checkFormat($value) === false) { + $this->_error(self::FALSEFORMAT); + } else { + $this->_error(self::INVALID_DATE); + } + return false; + } + } else { + if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) { + $this->_format = 'yyyy-MM-dd'; + $this->_error(self::FALSEFORMAT); + $this->_format = null; + return false; + } + + list($year, $month, $day) = sscanf($value, '%d-%d-%d'); + + if (!checkdate($month, $day, $year)) { + $this->_error(self::INVALID_DATE); + return false; + } + } + + return true; + } + + /** + * Check if the given date fits the given format + * + * @param string $value Date to check + * @return boolean False when date does not fit the format + */ + private function _checkFormat($value) + { + try { + require_once 'Zend/Locale/Format.php'; + $parsed = Zend_Locale_Format::getDate($value, array( + 'date_format' => $this->_format, 'format_type' => 'iso', + 'fix_date' => false)); + if (isset($parsed['year']) and ((strpos(strtoupper($this->_format), 'YY') !== false) and + (strpos(strtoupper($this->_format), 'YYYY') === false))) { + $parsed['year'] = Zend_Date::getFullYear($parsed['year']); + } + } catch (Exception $e) { + // Date can not be parsed + return false; + } + + if (((strpos($this->_format, 'Y') !== false) or (strpos($this->_format, 'y') !== false)) and + (!isset($parsed['year']))) { + // Year expected but not found + return false; + } + + if ((strpos($this->_format, 'M') !== false) and (!isset($parsed['month']))) { + // Month expected but not found + return false; + } + + if ((strpos($this->_format, 'd') !== false) and (!isset($parsed['day']))) { + // Day expected but not found + return false; + } + + if (((strpos($this->_format, 'H') !== false) or (strpos($this->_format, 'h') !== false)) and + (!isset($parsed['hour']))) { + // Hour expected but not found + return false; + } + + if ((strpos($this->_format, 'm') !== false) and (!isset($parsed['minute']))) { + // Minute expected but not found + return false; + } + + if ((strpos($this->_format, 's') !== false) and (!isset($parsed['second']))) { + // Second expected but not found + return false; + } + + // Date fits the format + return true; + } +} diff --git a/library/Zend/Validate/Db/Abstract.php b/library/Zend/Validate/Db/Abstract.php new file mode 100755 index 000000000..ffee51f26 --- /dev/null +++ b/library/Zend/Validate/Db/Abstract.php @@ -0,0 +1,355 @@ + "No record matching '%value%' was found", + self::ERROR_RECORD_FOUND => "A record matching '%value%' was found", + ); + + /** + * @var string + */ + protected $_schema = null; + + /** + * @var string + */ + protected $_table = ''; + + /** + * @var string + */ + protected $_field = ''; + + /** + * @var mixed + */ + protected $_exclude = null; + + /** + * Database adapter to use. If null isValid() will use Zend_Db::getInstance instead + * + * @var unknown_type + */ + protected $_adapter = null; + + /** + * Select object to use. can be set, or will be auto-generated + * @var Zend_Db_Select + */ + protected $_select; + + /** + * Provides basic configuration for use with Zend_Validate_Db Validators + * Setting $exclude allows a single record to be excluded from matching. + * Exclude can either be a String containing a where clause, or an array with `field` and `value` keys + * to define the where clause added to the sql. + * A database adapter may optionally be supplied to avoid using the registered default adapter. + * + * The following option keys are supported: + * 'table' => The database table to validate against + * 'schema' => The schema keys + * 'field' => The field to check for a match + * 'exclude' => An optional where clause or field/value pair to exclude from the query + * 'adapter' => An optional database adapter to use + * + * @param array|Zend_Config $options Options to use for this validator + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Db_Select) { + $this->setSelect($options); + return; + } + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (func_num_args() > 1) { + $options = func_get_args(); + $temp['table'] = array_shift($options); + $temp['field'] = array_shift($options); + if (!empty($options)) { + $temp['exclude'] = array_shift($options); + } + + if (!empty($options)) { + $temp['adapter'] = array_shift($options); + } + + $options = $temp; + } + + if (!array_key_exists('table', $options) && !array_key_exists('schema', $options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Table or Schema option missing!'); + } + + if (!array_key_exists('field', $options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Field option missing!'); + } + + if (array_key_exists('adapter', $options)) { + $this->setAdapter($options['adapter']); + } + + if (array_key_exists('exclude', $options)) { + $this->setExclude($options['exclude']); + } + + $this->setField($options['field']); + if (array_key_exists('table', $options)) { + $this->setTable($options['table']); + } + + if (array_key_exists('schema', $options)) { + $this->setSchema($options['schema']); + } + } + + /** + * Returns the set adapter + * + * @throws Zend_Validate_Exception + * @return Zend_Db_Adapter + */ + public function getAdapter() + { + /** + * Check for an adapter being defined. if not, fetch the default adapter. + */ + if ($this->_adapter === null) { + $this->_adapter = Zend_Db_Table_Abstract::getDefaultAdapter(); + if (null === $this->_adapter) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('No database adapter present'); + } + } + return $this->_adapter; + } + + /** + * Sets a new database adapter + * + * @param Zend_Db_Adapter_Abstract $adapter + * @throws Zend_Validate_Exception + * @return Zend_Validate_Db_Abstract + */ + public function setAdapter($adapter) + { + if (!($adapter instanceof Zend_Db_Adapter_Abstract)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Adapter option must be a database adapter!'); + } + + $this->_adapter = $adapter; + return $this; + } + + /** + * Returns the set exclude clause + * + * @return string|array + */ + public function getExclude() + { + return $this->_exclude; + } + + /** + * Sets a new exclude clause + * + * @param string|array $exclude + * @return Zend_Validate_Db_Abstract + */ + public function setExclude($exclude) + { + $this->_exclude = $exclude; + return $this; + } + + /** + * Returns the set field + * + * @return string|array + */ + public function getField() + { + return $this->_field; + } + + /** + * Sets a new field + * + * @param string $field + * @return Zend_Validate_Db_Abstract + */ + public function setField($field) + { + $this->_field = (string) $field; + return $this; + } + + /** + * Returns the set table + * + * @return string + */ + public function getTable() + { + return $this->_table; + } + + /** + * Sets a new table + * + * @param string $table + * @return Zend_Validate_Db_Abstract + */ + public function setTable($table) + { + $this->_table = (string) $table; + return $this; + } + + /** + * Returns the set schema + * + * @return string + */ + public function getSchema() + { + return $this->_schema; + } + + /** + * Sets a new schema + * + * @param string $schema + * @return Zend_Validate_Db_Abstract + */ + public function setSchema($schema) + { + $this->_schema = $schema; + return $this; + } + + /** + * Sets the select object to be used by the validator + * + * @param Zend_Db_Select $select + * @throws Zend_Validate_Exception + * @return Zend_Validate_Db_Abstract + */ + public function setSelect($select) + { + if (!$select instanceof Zend_Db_Select) { + throw new Zend_Validate_Exception('Select option must be a valid ' . + 'Zend_Db_Select object'); + } + $this->_select = $select; + return $this; + } + + /** + * Gets the select object to be used by the validator. + * If no select object was supplied to the constructor, + * then it will auto-generate one from the given table, + * schema, field, and adapter options. + * + * @return Zend_Db_Select The Select object which will be used + */ + public function getSelect() + { + if (null === $this->_select) { + $db = $this->getAdapter(); + /** + * Build select object + */ + $select = new Zend_Db_Select($db); + $select->from($this->_table, array($this->_field), $this->_schema); + if ($db->supportsParameters('named')) { + $select->where($db->quoteIdentifier($this->_field, true).' = :value'); // named + } else { + $select->where($db->quoteIdentifier($this->_field, true).' = ?'); // positional + } + if ($this->_exclude !== null) { + if (is_array($this->_exclude)) { + $select->where( + $db->quoteIdentifier($this->_exclude['field'], true) . + ' != ?', $this->_exclude['value'] + ); + } else { + $select->where($this->_exclude); + } + } + $select->limit(1); + $this->_select = $select; + } + return $this->_select; + } + + /** + * Run query and returns matches, or null if no matches are found. + * + * @param String $value + * @return Array when matches are found. + */ + protected function _query($value) + { + $select = $this->getSelect(); + /** + * Run query + */ + $result = $select->getAdapter()->fetchRow( + $select, + array('value' => $value), // this should work whether db supports positional or named params + Zend_Db::FETCH_ASSOC + ); + + return $result; + } +} diff --git a/library/Zend/Validate/Db/NoRecordExists.php b/library/Zend/Validate/Db/NoRecordExists.php new file mode 100755 index 000000000..4dba8bc63 --- /dev/null +++ b/library/Zend/Validate/Db/NoRecordExists.php @@ -0,0 +1,51 @@ +_setValue($value); + + $result = $this->_query($value); + if ($result) { + $valid = false; + $this->_error(self::ERROR_RECORD_FOUND); + } + + return $valid; + } +} diff --git a/library/Zend/Validate/Db/RecordExists.php b/library/Zend/Validate/Db/RecordExists.php new file mode 100755 index 000000000..540af13bc --- /dev/null +++ b/library/Zend/Validate/Db/RecordExists.php @@ -0,0 +1,51 @@ +_setValue($value); + + $result = $this->_query($value); + if (!$result) { + $valid = false; + $this->_error(self::ERROR_NO_RECORD_FOUND); + } + + return $valid; + } +} diff --git a/library/Zend/Validate/Digits.php b/library/Zend/Validate/Digits.php new file mode 100755 index 000000000..411c4c5b3 --- /dev/null +++ b/library/Zend/Validate/Digits.php @@ -0,0 +1,91 @@ + "'%value%' must contain only digits", + self::STRING_EMPTY => "'%value%' is an empty string", + self::INVALID => "Invalid type given. String, integer or float expected", + ); + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value only contains digit characters + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value) && !is_float($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue((string) $value); + + if ('' === $this->_value) { + $this->_error(self::STRING_EMPTY); + return false; + } + + if (null === self::$_filter) { + require_once 'Zend/Filter/Digits.php'; + self::$_filter = new Zend_Filter_Digits(); + } + + if ($this->_value !== self::$_filter->filter($this->_value)) { + $this->_error(self::NOT_DIGITS); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/EmailAddress.php b/library/Zend/Validate/EmailAddress.php new file mode 100755 index 000000000..21076e612 --- /dev/null +++ b/library/Zend/Validate/EmailAddress.php @@ -0,0 +1,574 @@ + "Invalid type given. String expected", + self::INVALID_FORMAT => "'%value%' is not a valid email address in the basic format local-part@hostname", + self::INVALID_HOSTNAME => "'%hostname%' is not a valid hostname for email address '%value%'", + self::INVALID_MX_RECORD => "'%hostname%' does not appear to have a valid MX record for the email address '%value%'", + self::INVALID_SEGMENT => "'%hostname%' is not in a routable network segment. The email address '%value%' should not be resolved from public network", + self::DOT_ATOM => "'%localPart%' can not be matched against dot-atom format", + self::QUOTED_STRING => "'%localPart%' can not be matched against quoted-string format", + self::INVALID_LOCAL_PART => "'%localPart%' is not a valid local part for email address '%value%'", + self::LENGTH_EXCEEDED => "'%value%' exceeds the allowed length", + ); + + /** + * As of RFC5753 (JAN 2010), the following blocks are no longer reserved: + * - 128.0.0.0/16 + * - 191.255.0.0/16 + * - 223.255.255.0/24 + * @see http://tools.ietf.org/html/rfc5735#page-6 + * + * As of RFC6598 (APR 2012), the following blocks are now reserved: + * - 100.64.0.0/10 + * @see http://tools.ietf.org/html/rfc6598#section-7 + * + * @see http://en.wikipedia.org/wiki/IPv4 + * @var array + */ + protected $_invalidIp = array( + '0' => '0.0.0.0/8', + '10' => '10.0.0.0/8', + '100' => '100.64.0.0/10', + '127' => '127.0.0.0/8', + '169' => '169.254.0.0/16', + '172' => '172.16.0.0/12', + '192' => array( + '192.0.0.0/24', + '192.0.2.0/24', + '192.88.99.0/24', + '192.168.0.0/16' + ), + '198' => '198.18.0.0/15', + '224' => '224.0.0.0/4', + '240' => '240.0.0.0/4' + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'hostname' => '_hostname', + 'localPart' => '_localPart' + ); + + /** + * @var string + */ + protected $_hostname; + + /** + * @var string + */ + protected $_localPart; + + /** + * Internal options array + */ + protected $_options = array( + 'mx' => false, + 'deep' => false, + 'domain' => true, + 'allow' => Zend_Validate_Hostname::ALLOW_DNS, + 'hostname' => null + ); + + /** + * Instantiates hostname validator for local use + * + * The following option keys are supported: + * 'hostname' => A hostname validator, see Zend_Validate_Hostname + * 'allow' => Options for the hostname validator, see Zend_Validate_Hostname::ALLOW_* + * 'mx' => If MX check should be enabled, boolean + * 'deep' => If a deep MX check should be done, boolean + * + * @param array|string|Zend_Config $options OPTIONAL + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['allow'] = array_shift($options); + if (!empty($options)) { + $temp['mx'] = array_shift($options); + } + + if (!empty($options)) { + $temp['hostname'] = array_shift($options); + } + + $options = $temp; + } + + $options += $this->_options; + $this->setOptions($options); + } + + /** + * Returns all set Options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Set options for the email validator + * + * @param array $options + * @return Zend_Validate_EmailAddress Provides a fluent inteface + */ + public function setOptions(array $options = array()) + { + if (array_key_exists('messages', $options)) { + $this->setMessages($options['messages']); + } + + if (array_key_exists('hostname', $options)) { + if (array_key_exists('allow', $options)) { + $this->setHostnameValidator($options['hostname'], $options['allow']); + } else { + $this->setHostnameValidator($options['hostname']); + } + } elseif ($this->_options['hostname'] == null) { + $this->setHostnameValidator(); + } + + if (array_key_exists('mx', $options)) { + $this->setValidateMx($options['mx']); + } + + if (array_key_exists('deep', $options)) { + $this->setDeepMxCheck($options['deep']); + } + + if (array_key_exists('domain', $options)) { + $this->setDomainCheck($options['domain']); + } + + return $this; + } + + /** + * Sets the validation failure message template for a particular key + * Adds the ability to set messages to the attached hostname validator + * + * @param string $messageString + * @param string $messageKey OPTIONAL + * @return Zend_Validate_Abstract Provides a fluent interface + * @throws Zend_Validate_Exception + */ + public function setMessage($messageString, $messageKey = null) + { + if ($messageKey === null) { + $this->_options['hostname']->setMessage($messageString); + parent::setMessage($messageString); + return $this; + } + + if (!isset($this->_messageTemplates[$messageKey])) { + $this->_options['hostname']->setMessage($messageString, $messageKey); + } + + $this->_messageTemplates[$messageKey] = $messageString; + return $this; + } + + /** + * Returns the set hostname validator + * + * @return Zend_Validate_Hostname + */ + public function getHostnameValidator() + { + return $this->_options['hostname']; + } + + /** + * @param Zend_Validate_Hostname $hostnameValidator OPTIONAL + * @param int $allow OPTIONAL + * @return $this + */ + public function setHostnameValidator(Zend_Validate_Hostname $hostnameValidator = null, $allow = Zend_Validate_Hostname::ALLOW_DNS) + { + if (!$hostnameValidator) { + $hostnameValidator = new Zend_Validate_Hostname($allow); + } + + $this->_options['hostname'] = $hostnameValidator; + $this->_options['allow'] = $allow; + return $this; + } + + /** + * Whether MX checking via getmxrr is supported or not + * + * This currently only works on UNIX systems + * + * @return boolean + */ + public function validateMxSupported() + { + return function_exists('getmxrr'); + } + + /** + * Returns the set validateMx option + * + * @return boolean + */ + public function getValidateMx() + { + return $this->_options['mx']; + } + + /** + * Set whether we check for a valid MX record via DNS + * + * This only applies when DNS hostnames are validated + * + * @param boolean $mx Set allowed to true to validate for MX records, and false to not validate them + * @throws Zend_Validate_Exception + * @return Zend_Validate_EmailAddress Provides a fluent inteface + */ + public function setValidateMx($mx) + { + if ((bool) $mx && !$this->validateMxSupported()) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('MX checking not available on this system'); + } + + $this->_options['mx'] = (bool) $mx; + return $this; + } + + /** + * Returns the set deepMxCheck option + * + * @return boolean + */ + public function getDeepMxCheck() + { + return $this->_options['deep']; + } + + /** + * Set whether we check MX record should be a deep validation + * + * @param boolean $deep Set deep to true to perform a deep validation process for MX records + * @return Zend_Validate_EmailAddress Provides a fluent inteface + */ + public function setDeepMxCheck($deep) + { + $this->_options['deep'] = (bool) $deep; + return $this; + } + + /** + * Returns the set domainCheck option + * + * @return unknown + */ + public function getDomainCheck() + { + return $this->_options['domain']; + } + + /** + * Sets if the domain should also be checked + * or only the local part of the email address + * + * @param boolean $domain + * @return Zend_Validate_EmailAddress Provides a fluent inteface + */ + public function setDomainCheck($domain = true) + { + $this->_options['domain'] = (boolean) $domain; + return $this; + } + + /** + * Returns if the given host is reserved + * + * @param string $host + * @return boolean + */ + private function _isReserved($host){ + if (!preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $host)) { + $host = gethostbyname($host); + } + + $octet = explode('.',$host); + if ((int)$octet[0] >= 224) { + return true; + } else if (array_key_exists($octet[0], $this->_invalidIp)) { + foreach ((array)$this->_invalidIp[$octet[0]] as $subnetData) { + // we skip the first loop as we already know that octet matches + for ($i = 1; $i < 4; $i++) { + if (strpos($subnetData, $octet[$i]) !== $i * 4) { + break; + } + } + + $host = explode("/", $subnetData); + $binaryHost = ""; + $tmp = explode(".", $host[0]); + for ($i = 0; $i < 4 ; $i++) { + $binaryHost .= str_pad(decbin($tmp[$i]), 8, "0", STR_PAD_LEFT); + } + + $segmentData = array( + 'network' => (int)$this->_toIp(str_pad(substr($binaryHost, 0, $host[1]), 32, 0)), + 'broadcast' => (int)$this->_toIp(str_pad(substr($binaryHost, 0, $host[1]), 32, 1)) + ); + + for ($j = $i; $j < 4; $j++) { + if ((int)$octet[$j] < $segmentData['network'][$j] || + (int)$octet[$j] > $segmentData['broadcast'][$j]) { + return false; + } + } + } + + return true; + } else { + return false; + } + } + + /** + * Converts a binary string to an IP address + * + * @param string $binary + * @return mixed + */ + private function _toIp($binary) + { + $ip = array(); + $tmp = explode(".", chunk_split($binary, 8, ".")); + for ($i = 0; $i < 4 ; $i++) { + $ip[$i] = bindec($tmp[$i]); + } + + return $ip; + } + + /** + * Internal method to validate the local part of the email address + * + * @return boolean + */ + private function _validateLocalPart() + { + // First try to match the local part on the common dot-atom format + $result = false; + + // Dot-atom characters are: 1*atext *("." 1*atext) + // atext: ALPHA / DIGIT / and "!", "#", "$", "%", "&", "'", "*", + // "+", "-", "/", "=", "?", "^", "_", "`", "{", "|", "}", "~" + $atext = 'a-zA-Z0-9\x21\x23\x24\x25\x26\x27\x2a\x2b\x2d\x2f\x3d\x3f\x5e\x5f\x60\x7b\x7c\x7d\x7e'; + if (preg_match('/^[' . $atext . ']+(\x2e+[' . $atext . ']+)*$/', $this->_localPart)) { + $result = true; + } else { + // Try quoted string format (RFC 5321 Chapter 4.1.2) + + // Quoted-string characters are: DQUOTE *(qtext/quoted-pair) DQUOTE + $qtext = '\x20-\x21\x23-\x5b\x5d-\x7e'; // %d32-33 / %d35-91 / %d93-126 + $quotedPair = '\x20-\x7e'; // %d92 %d32-126 + if (preg_match('/^"(['. $qtext .']|\x5c[' . $quotedPair . '])*"$/', $this->localPart)) { + $result = true; + } else { + $this->_error(self::DOT_ATOM); + $this->_error(self::QUOTED_STRING); + $this->_error(self::INVALID_LOCAL_PART); + } + } + + return $result; + } + + /** + * Internal method to validate the servers MX records + * + * @return boolean + */ + private function _validateMXRecords() + { + $mxHosts = array(); + $hostname = $this->_hostname; + + //decode IDN domain name if possible + if (function_exists('idn_to_ascii')) { + $hostname = idn_to_ascii($this->_hostname, 0, INTL_IDNA_VARIANT_UTS46); + } + + $result = getmxrr($hostname, $mxHosts); + if (!$result) { + $this->_error(self::INVALID_MX_RECORD); + } else if ($this->_options['deep'] && function_exists('checkdnsrr')) { + $validAddress = false; + $reserved = true; + foreach ($mxHosts as $hostname) { + $res = $this->_isReserved($hostname); + if (!$res) { + $reserved = false; + } + + if (!$res + && (checkdnsrr($hostname, "A") + || checkdnsrr($hostname, "AAAA") + || checkdnsrr($hostname, "A6"))) { + $validAddress = true; + break; + } + } + + if (!$validAddress) { + $result = false; + if ($reserved) { + $this->_error(self::INVALID_SEGMENT); + } else { + $this->_error(self::INVALID_MX_RECORD); + } + } + } + + return $result; + } + + /** + * Internal method to validate the hostname part of the email address + * + * @return boolean + */ + private function _validateHostnamePart() + { + $hostname = $this->_options['hostname']->setTranslator($this->getTranslator()) + ->isValid($this->_hostname); + if (!$hostname) { + $this->_error(self::INVALID_HOSTNAME); + + // Get messages and errors from hostnameValidator + foreach ($this->_options['hostname']->getMessages() as $code => $message) { + $this->_messages[$code] = $message; + } + + foreach ($this->_options['hostname']->getErrors() as $error) { + $this->_errors[] = $error; + } + } else if ($this->_options['mx']) { + // MX check on hostname + $hostname = $this->_validateMXRecords(); + } + + return $hostname; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is a valid email address + * according to RFC2822 + * + * @link http://www.ietf.org/rfc/rfc2822.txt RFC2822 + * @link http://www.columbia.edu/kermit/ascii.html US-ASCII characters + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $matches = array(); + $length = true; + $this->_setValue($value); + + // Split email address up and disallow '..' + if ((strpos($value, '..') !== false) or + (!preg_match('/^(.+)@([^@]+)$/', $value, $matches))) { + $this->_error(self::INVALID_FORMAT); + return false; + } + + $this->_localPart = $matches[1]; + $this->_hostname = $matches[2]; + + if ((strlen($this->_localPart) > 64) || (strlen($this->_hostname) > 255)) { + $length = false; + $this->_error(self::LENGTH_EXCEEDED); + } + + // Match hostname part + if ($this->_options['domain']) { + $hostname = $this->_validateHostnamePart(); + } + + $local = $this->_validateLocalPart(); + + // If both parts valid, return true + if ($local && $length) { + if (($this->_options['domain'] && $hostname) || !$this->_options['domain']) { + return true; + } + } + + return false; + } +} diff --git a/library/Zend/Validate/Exception.php b/library/Zend/Validate/Exception.php new file mode 100755 index 000000000..4a4e2b2cb --- /dev/null +++ b/library/Zend/Validate/Exception.php @@ -0,0 +1,34 @@ + "Too many files, maximum '%max%' are allowed but '%count%' are given", + self::TOO_FEW => "Too few files, minimum '%min%' are expected but '%count%' are given", + ); + + /** + * @var array Error message template variables + */ + protected $_messageVariables = array( + 'min' => '_min', + 'max' => '_max', + 'count' => '_count' + ); + + /** + * Minimum file count + * + * If null, there is no minimum file count + * + * @var integer + */ + protected $_min; + + /** + * Maximum file count + * + * If null, there is no maximum file count + * + * @var integer|null + */ + protected $_max; + + /** + * Actual filecount + * + * @var integer + */ + protected $_count; + + /** + * Internal file array + * @var array + */ + protected $_files; + + /** + * Sets validator options + * + * Min limits the file count, when used with max=null it is the maximum file count + * It also accepts an array with the keys 'min' and 'max' + * + * If $options is a integer, it will be used as maximum file count + * As Array is accepts the following keys: + * 'min': Minimum filecount + * 'max': Maximum filecount + * + * @param integer|array|Zend_Config $options Options for the adapter + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_string($options) || is_numeric($options)) { + $options = array('max' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + if (1 < func_num_args()) { + $options['min'] = func_get_arg(0); + $options['max'] = func_get_arg(1); + } + + if (isset($options['min'])) { + $this->setMin($options); + } + + if (isset($options['max'])) { + $this->setMax($options); + } + } + + /** + * Returns the minimum file count + * + * @return integer + */ + public function getMin() + { + return $this->_min; + } + + /** + * Sets the minimum file count + * + * @param integer|array $min The minimum file count + * @return Zend_Validate_File_Count Provides a fluent interface + * @throws Zend_Validate_Exception When min is greater than max + */ + public function setMin($min) + { + if (is_array($min) and isset($min['min'])) { + $min = $min['min']; + } + + if (!is_string($min) and !is_numeric($min)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + $min = (integer) $min; + if (($this->_max !== null) && ($min > $this->_max)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum file count, but $min >" + . " {$this->_max}"); + } + + $this->_min = $min; + return $this; + } + + /** + * Returns the maximum file count + * + * @return integer + */ + public function getMax() + { + return $this->_max; + } + + /** + * Sets the maximum file count + * + * @param integer|array $max The maximum file count + * @return Zend_Validate_StringLength Provides a fluent interface + * @throws Zend_Validate_Exception When max is smaller than min + */ + public function setMax($max) + { + if (is_array($max) and isset($max['max'])) { + $max = $max['max']; + } + + if (!is_string($max) and !is_numeric($max)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + $max = (integer) $max; + if (($this->_min !== null) && ($max < $this->_min)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum file count, but " + . "$max < {$this->_min}"); + } + + $this->_max = $max; + return $this; + } + + /** + * Adds a file for validation + * + * @param string|array $file + * @return $this + */ + public function addFile($file) + { + if (is_string($file)) { + $file = array($file); + } + + if (is_array($file)) { + foreach ($file as $name) { + if (!isset($this->_files[$name]) && !empty($name)) { + $this->_files[$name] = $name; + } + } + } + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the file count of all checked files is at least min and + * not bigger than max (when max is not null). Attention: When checking with set min you + * must give all files with the first call, otherwise you will get an false. + * + * @param string|array $value Filenames to check for count + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + if (($file !== null) && !array_key_exists('destination', $file)) { + $file['destination'] = dirname($value); + } + + if (($file !== null) && array_key_exists('tmp_name', $file)) { + $value = $file['destination'] . DIRECTORY_SEPARATOR . $file['name']; + } + + if (($file === null) || !empty($file['tmp_name'])) { + $this->addFile($value); + } + + $this->_count = count($this->_files); + if (($this->_max !== null) && ($this->_count > $this->_max)) { + return $this->_throw($file, self::TOO_MANY); + } + + if (($this->_min !== null) && ($this->_count < $this->_min)) { + return $this->_throw($file, self::TOO_FEW); + } + + return true; + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/Crc32.php b/library/Zend/Validate/File/Crc32.php new file mode 100755 index 000000000..9fd47271c --- /dev/null +++ b/library/Zend/Validate/File/Crc32.php @@ -0,0 +1,180 @@ + "File '%value%' does not match the given crc32 hashes", + self::NOT_DETECTED => "A crc32 hash could not be evaluated for the given file", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * Hash of the file + * + * @var string + */ + protected $_hash; + + /** + * Sets validator options + * + * @param string|array|Zend_Config $options + * @throws Zend_Validate_Exception + * @return Zend_Validate_File_Crc32 + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_scalar($options)) { + $options = array('hash1' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid options to validator provided'); + } + + $this->setCrc32($options); + } + + /** + * Returns all set crc32 hashes + * + * @return array + */ + public function getCrc32() + { + return $this->getHash(); + } + + /** + * Sets the crc32 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setHash($options) + { + if (!is_array($options)) { + $options = array($options); + } + + $options['algorithm'] = 'crc32'; + parent::setHash($options); + return $this; + } + + /** + * Sets the crc32 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setCrc32($options) + { + $this->setHash($options); + return $this; + } + + /** + * Adds the crc32 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addHash($options) + { + if (!is_array($options)) { + $options = array($options); + } + + $options['algorithm'] = 'crc32'; + parent::addHash($options); + return $this; + } + + /** + * Adds the crc32 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addCrc32($options) + { + $this->addHash($options); + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the given file confirms the set hash + * + * @param string $value Filename to check for hash + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + $hashes = array_unique(array_keys($this->_hash)); + $filehash = hash_file('crc32', $value); + if ($filehash === false) { + return $this->_throw($file, self::NOT_DETECTED); + } + + foreach($hashes as $hash) { + if ($filehash === $hash) { + return true; + } + } + + return $this->_throw($file, self::DOES_NOT_MATCH); + } +} diff --git a/library/Zend/Validate/File/ExcludeExtension.php b/library/Zend/Validate/File/ExcludeExtension.php new file mode 100755 index 000000000..e894af6a3 --- /dev/null +++ b/library/Zend/Validate/File/ExcludeExtension.php @@ -0,0 +1,94 @@ + "File '%value%' has a false extension", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the fileextension of $value is not included in the + * set extension list + * + * @param string $value Real file to check for extension + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + if ($file !== null) { + $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1); + } else { + $info = pathinfo($value); + } + + $extensions = $this->getExtension(); + + if ($this->_case and (!in_array($info['extension'], $extensions))) { + return true; + } else if (!$this->_case) { + $found = false; + foreach ($extensions as $extension) { + if (strtolower($extension) == strtolower($info['extension'])) { + $found = true; + } + } + + if (!$found) { + return true; + } + } + + return $this->_throw($file, self::FALSE_EXTENSION); + } +} diff --git a/library/Zend/Validate/File/ExcludeMimeType.php b/library/Zend/Validate/File/ExcludeMimeType.php new file mode 100755 index 000000000..27d4f5ac3 --- /dev/null +++ b/library/Zend/Validate/File/ExcludeMimeType.php @@ -0,0 +1,101 @@ + "File '%value%' has a false mimetype of '%type%'", + self::NOT_DETECTED => "The mimetype of file '%value%' could not be detected", + self::NOT_READABLE => "File '%value%' is not readable or does not exist", + ); + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if the mimetype of the file does not matche the given ones. Also parts + * of mimetypes can be checked. If you give for example "image" all image + * mime types will not be accepted like "image/gif", "image/jpeg" and so on. + * + * @param string $value Real file to check for mimetype + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + if ($file === null) { + $file = array( + 'type' => null, + 'name' => $value + ); + } + + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_READABLE); + } + + $this->_type = $this->_detectMimeType($value); + + if (empty($this->_type) && $this->_headerCheck) { + $this->_type = $file['type']; + } + + if (empty($this->_type)) { + return $this->_throw($file, self::NOT_DETECTED); + } + + $mimetype = $this->getMimeType(true); + if (in_array($this->_type, $mimetype)) { + return $this->_throw($file, self::FALSE_TYPE); + } + + $types = explode('/', $this->_type); + $types = array_merge($types, explode('-', $this->_type)); + foreach($mimetype as $mime) { + if (in_array($mime, $types)) { + return $this->_throw($file, self::FALSE_TYPE); + } + } + + return true; + } +} diff --git a/library/Zend/Validate/File/Exists.php b/library/Zend/Validate/File/Exists.php new file mode 100755 index 000000000..8da1ccdd7 --- /dev/null +++ b/library/Zend/Validate/File/Exists.php @@ -0,0 +1,204 @@ + "File '%value%' does not exist", + ); + + /** + * Internal list of directories + * @var string + */ + protected $_directory = ''; + + /** + * @var array Error message template variables + */ + protected $_messageVariables = array( + 'directory' => '_directory' + ); + + /** + * Sets validator options + * + * @param string|array|Zend_Config $directory + * @throws Zend_Validate_Exception + */ + public function __construct($directory = array()) + { + if ($directory instanceof Zend_Config) { + $directory = $directory->toArray(); + } else if (is_string($directory)) { + $directory = explode(',', $directory); + } else if (!is_array($directory)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + $this->setDirectory($directory); + } + + /** + * Returns the set file directories which are checked + * + * @param boolean $asArray Returns the values as array, when false an concated string is returned + * @return string + */ + public function getDirectory($asArray = false) + { + $asArray = (bool) $asArray; + $directory = (string) $this->_directory; + if ($asArray) { + $directory = explode(',', $directory); + } + + return $directory; + } + + /** + * Sets the file directory which will be checked + * + * @param string|array $directory The directories to validate + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function setDirectory($directory) + { + $this->_directory = null; + $this->addDirectory($directory); + return $this; + } + + /** + * Adds the file directory which will be checked + * + * @param string|array $directory The directory to add for validation + * @throws Zend_Validate_Exception + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function addDirectory($directory) + { + $directories = $this->getDirectory(true); + + if (is_string($directory)) { + $directory = explode(',', $directory); + } else if (!is_array($directory)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + foreach ($directory as $content) { + if (empty($content) || !is_string($content)) { + continue; + } + + $directories[] = trim($content); + } + $directories = array_unique($directories); + + // Sanity check to ensure no empty values + foreach ($directories as $key => $dir) { + if (empty($dir)) { + unset($directories[$key]); + } + } + + $this->_directory = implode(',', $directories); + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the file already exists in the set directories + * + * @param string $value Real file to check for existance + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + $directories = $this->getDirectory(true); + if (($file !== null) and (!empty($file['destination']))) { + $directories[] = $file['destination']; + } else if (!isset($file['name'])) { + $file['name'] = $value; + } + + $check = false; + foreach ($directories as $directory) { + if (empty($directory)) { + continue; + } + + $check = true; + if (!file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) { + return $this->_throw($file, self::DOES_NOT_EXIST); + } + } + + if (!$check) { + return $this->_throw($file, self::DOES_NOT_EXIST); + } + + return true; + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/Extension.php b/library/Zend/Validate/File/Extension.php new file mode 100755 index 000000000..92f9f06a8 --- /dev/null +++ b/library/Zend/Validate/File/Extension.php @@ -0,0 +1,237 @@ + "File '%value%' has a false extension", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * Internal list of extensions + * @var string + */ + protected $_extension = ''; + + /** + * Validate case sensitive + * + * @var boolean + */ + protected $_case = false; + + /** + * @var array Error message template variables + */ + protected $_messageVariables = array( + 'extension' => '_extension' + ); + + /** + * Sets validator options + * + * @param string|array|Zend_Config $options + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (1 < func_num_args()) { + $case = func_get_arg(1); + $this->setCase($case); + } + + if (is_array($options) and isset($options['case'])) { + $this->setCase($options['case']); + unset($options['case']); + } + + $this->setExtension($options); + } + + /** + * Returns the case option + * + * @return boolean + */ + public function getCase() + { + return $this->_case; + } + + /** + * Sets the case to use + * + * @param boolean $case + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function setCase($case) + { + $this->_case = (boolean) $case; + return $this; + } + + /** + * Returns the set file extension + * + * @return array + */ + public function getExtension() + { + $extension = explode(',', $this->_extension); + + return $extension; + } + + /** + * Sets the file extensions + * + * @param string|array $extension The extensions to validate + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function setExtension($extension) + { + $this->_extension = null; + $this->addExtension($extension); + return $this; + } + + /** + * Adds the file extensions + * + * @param string|array $extension The extensions to add for validation + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function addExtension($extension) + { + $extensions = $this->getExtension(); + if (is_string($extension)) { + $extension = explode(',', $extension); + } + + foreach ($extension as $content) { + if (empty($content) || !is_string($content)) { + continue; + } + + $extensions[] = trim($content); + } + $extensions = array_unique($extensions); + + // Sanity check to ensure no empty values + foreach ($extensions as $key => $ext) { + if (empty($ext)) { + unset($extensions[$key]); + } + } + + $this->_extension = implode(',', $extensions); + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the fileextension of $value is included in the + * set extension list + * + * @param string $value Real file to check for extension + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + if ($file !== null) { + $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1); + } else { + $info = pathinfo($value); + if (!array_key_exists('extension', $info)) { + // From the manual at http://php.net/pathinfo: + // "If the path does not have an extension, no extension element + // will be returned (see second example below)." + return false; + } + } + + $extensions = $this->getExtension(); + + if ($this->_case && (in_array($info['extension'], $extensions))) { + return true; + } else if (!$this->getCase()) { + foreach ($extensions as $extension) { + if (strtolower($extension) == strtolower($info['extension'])) { + return true; + } + } + } + + return $this->_throw($file, self::FALSE_EXTENSION); + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if (null !== $file) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/FilesSize.php b/library/Zend/Validate/File/FilesSize.php new file mode 100755 index 000000000..b64813341 --- /dev/null +++ b/library/Zend/Validate/File/FilesSize.php @@ -0,0 +1,164 @@ + "All files in sum should have a maximum size of '%max%' but '%size%' were detected", + self::TOO_SMALL => "All files in sum should have a minimum size of '%min%' but '%size%' were detected", + self::NOT_READABLE => "One or more files can not be read", + ); + + /** + * Internal file array + * + * @var array + */ + protected $_files; + + /** + * Sets validator options + * + * Min limits the used diskspace for all files, when used with max=null it is the maximum filesize + * It also accepts an array with the keys 'min' and 'max' + * + * @param integer|array|Zend_Config $options Options for this validator + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + $this->_files = array(); + $this->_setSize(0); + + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_scalar($options)) { + $options = array('max' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid options to validator provided'); + } + + if (1 < func_num_args()) { + $argv = func_get_args(); + array_shift($argv); + $options['max'] = array_shift($argv); + if (!empty($argv)) { + $options['bytestring'] = array_shift($argv); + } + } + + parent::__construct($options); + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the disk usage of all files is at least min and + * not bigger than max (when max is not null). + * + * @param string|array $value Real file to check for size + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + require_once 'Zend/Loader.php'; + if (is_string($value)) { + $value = array($value); + } + + $min = $this->getMin(true); + $max = $this->getMax(true); + $size = $this->_getSize(); + foreach ($value as $files) { + // Is file readable ? + if (!Zend_Loader::isReadable($files)) { + $this->_throw($file, self::NOT_READABLE); + continue; + } + + if (!isset($this->_files[$files])) { + $this->_files[$files] = $files; + } else { + // file already counted... do not count twice + continue; + } + + // limited to 2GB files + $size += @filesize($files); + $this->_size = $size; + if (($max !== null) && ($max < $size)) { + if ($this->useByteString()) { + $this->_max = $this->_toByteString($max); + $this->_size = $this->_toByteString($size); + $this->_throw($file, self::TOO_BIG); + $this->_max = $max; + $this->_size = $size; + } else { + $this->_throw($file, self::TOO_BIG); + } + } + } + + // Check that aggregate files are >= minimum size + if (($min !== null) && ($size < $min)) { + if ($this->useByteString()) { + $this->_min = $this->_toByteString($min); + $this->_size = $this->_toByteString($size); + $this->_throw($file, self::TOO_SMALL); + $this->_min = $min; + $this->_size = $size; + } else { + $this->_throw($file, self::TOO_SMALL); + } + } + + if (count($this->_messages) > 0) { + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/File/Hash.php b/library/Zend/Validate/File/Hash.php new file mode 100755 index 000000000..54b036756 --- /dev/null +++ b/library/Zend/Validate/File/Hash.php @@ -0,0 +1,195 @@ + "File '%value%' does not match the given hashes", + self::NOT_DETECTED => "A hash could not be evaluated for the given file", + self::NOT_FOUND => "File '%value%' is not readable or does not exist" + ); + + /** + * Hash of the file + * + * @var string + */ + protected $_hash; + + /** + * Sets validator options + * + * @param string|array $options + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_scalar($options)) { + $options = array('hash1' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid options to validator provided'); + } + + if (1 < func_num_args()) { + $options['algorithm'] = func_get_arg(1); + } + + $this->setHash($options); + } + + /** + * Returns the set hash values as array, the hash as key and the algorithm the value + * + * @return array + */ + public function getHash() + { + return $this->_hash; + } + + /** + * Sets the hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setHash($options) + { + $this->_hash = null; + $this->addHash($options); + + return $this; + } + + /** + * Adds the hash for one or multiple files + * + * @param string|array $options + * @throws Zend_Validate_Exception + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addHash($options) + { + if (is_string($options)) { + $options = array($options); + } else if (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("False parameter given"); + } + + $known = hash_algos(); + if (!isset($options['algorithm'])) { + $algorithm = 'crc32'; + } else { + $algorithm = $options['algorithm']; + unset($options['algorithm']); + } + + if (!in_array($algorithm, $known)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Unknown algorithm '{$algorithm}'"); + } + + foreach ($options as $value) { + $this->_hash[$value] = $algorithm; + } + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the given file confirms the set hash + * + * @param string $value Filename to check for hash + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + $algos = array_unique(array_values($this->_hash)); + $hashes = array_unique(array_keys($this->_hash)); + foreach ($algos as $algorithm) { + $filehash = hash_file($algorithm, $value); + if ($filehash === false) { + return $this->_throw($file, self::NOT_DETECTED); + } + + foreach($hashes as $hash) { + if ($filehash === $hash) { + return true; + } + } + } + + return $this->_throw($file, self::DOES_NOT_MATCH); + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/ImageSize.php b/library/Zend/Validate/File/ImageSize.php new file mode 100755 index 000000000..871fef84f --- /dev/null +++ b/library/Zend/Validate/File/ImageSize.php @@ -0,0 +1,364 @@ + "Maximum allowed width for image '%value%' should be '%maxwidth%' but '%width%' detected", + self::WIDTH_TOO_SMALL => "Minimum expected width for image '%value%' should be '%minwidth%' but '%width%' detected", + self::HEIGHT_TOO_BIG => "Maximum allowed height for image '%value%' should be '%maxheight%' but '%height%' detected", + self::HEIGHT_TOO_SMALL => "Minimum expected height for image '%value%' should be '%minheight%' but '%height%' detected", + self::NOT_DETECTED => "The size of image '%value%' could not be detected", + self::NOT_READABLE => "File '%value%' is not readable or does not exist", + ); + + /** + * @var array Error message template variables + */ + protected $_messageVariables = array( + 'minwidth' => '_minwidth', + 'maxwidth' => '_maxwidth', + 'minheight' => '_minheight', + 'maxheight' => '_maxheight', + 'width' => '_width', + 'height' => '_height' + ); + + /** + * Minimum image width + * + * @var integer + */ + protected $_minwidth; + + /** + * Maximum image width + * + * @var integer + */ + protected $_maxwidth; + + /** + * Minimum image height + * + * @var integer + */ + protected $_minheight; + + /** + * Maximum image height + * + * @var integer + */ + protected $_maxheight; + + /** + * Detected width + * + * @var integer + */ + protected $_width; + + /** + * Detected height + * + * @var integer + */ + protected $_height; + + /** + * Sets validator options + * + * Accepts the following option keys: + * - minheight + * - minwidth + * - maxheight + * - maxwidth + * + * @param Zend_Config|array $options + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (1 < func_num_args()) { + if (!is_array($options)) { + $options = array('minwidth' => $options); + } + $argv = func_get_args(); + array_shift($argv); + $options['minheight'] = array_shift($argv); + if (!empty($argv)) { + $options['maxwidth'] = array_shift($argv); + if (!empty($argv)) { + $options['maxheight'] = array_shift($argv); + } + } + } else if (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + if (isset($options['minheight']) || isset($options['minwidth'])) { + $this->setImageMin($options); + } + + if (isset($options['maxheight']) || isset($options['maxwidth'])) { + $this->setImageMax($options); + } + } + + /** + * Returns the set minimum image sizes + * + * @return array + */ + public function getImageMin() + { + return array('minwidth' => $this->_minwidth, 'minheight' => $this->_minheight); + } + + /** + * Returns the set maximum image sizes + * + * @return array + */ + public function getImageMax() + { + return array('maxwidth' => $this->_maxwidth, 'maxheight' => $this->_maxheight); + } + + /** + * Returns the set image width sizes + * + * @return array + */ + public function getImageWidth() + { + return array('minwidth' => $this->_minwidth, 'maxwidth' => $this->_maxwidth); + } + + /** + * Returns the set image height sizes + * + * @return array + */ + public function getImageHeight() + { + return array('minheight' => $this->_minheight, 'maxheight' => $this->_maxheight); + } + + /** + * Sets the minimum image size + * + * @param array $options The minimum image dimensions + * @throws Zend_Validate_Exception When minwidth is greater than maxwidth + * @throws Zend_Validate_Exception When minheight is greater than maxheight + * @return Zend_Validate_File_ImageSize Provides a fluent interface + */ + public function setImageMin($options) + { + if (isset($options['minwidth'])) { + if (($this->_maxwidth !== null) and ($options['minwidth'] > $this->_maxwidth)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The minimum image width must be less than or equal to the " + . " maximum image width, but {$options['minwidth']} > {$this->_maxwidth}"); + } + } + + if (isset($options['maxheight'])) { + if (($this->_maxheight !== null) and ($options['minheight'] > $this->_maxheight)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The minimum image height must be less than or equal to the " + . " maximum image height, but {$options['minheight']} > {$this->_maxheight}"); + } + } + + if (isset($options['minwidth'])) { + $this->_minwidth = (int) $options['minwidth']; + } + + if (isset($options['minheight'])) { + $this->_minheight = (int) $options['minheight']; + } + + return $this; + } + + /** + * Sets the maximum image size + * + * @param array $options The maximum image dimensions + * @throws Zend_Validate_Exception When maxwidth is smaller than minwidth + * @throws Zend_Validate_Exception When maxheight is smaller than minheight + * @return Zend_Validate_StringLength Provides a fluent interface + */ + public function setImageMax($options) + { + if (isset($options['maxwidth'])) { + if (($this->_minwidth !== null) and ($options['maxwidth'] < $this->_minwidth)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The maximum image width must be greater than or equal to the " + . "minimum image width, but {$options['maxwidth']} < {$this->_minwidth}"); + } + } + + if (isset($options['maxheight'])) { + if (($this->_minheight !== null) and ($options['maxheight'] < $this->_minheight)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The maximum image height must be greater than or equal to the " + . "minimum image height, but {$options['maxheight']} < {$this->_minwidth}"); + } + } + + if (isset($options['maxwidth'])) { + $this->_maxwidth = (int) $options['maxwidth']; + } + + if (isset($options['maxheight'])) { + $this->_maxheight = (int) $options['maxheight']; + } + + return $this; + } + + /** + * Sets the mimimum and maximum image width + * + * @param array $options The image width dimensions + * @return Zend_Validate_File_ImageSize Provides a fluent interface + */ + public function setImageWidth($options) + { + $this->setImageMin($options); + $this->setImageMax($options); + + return $this; + } + + /** + * Sets the mimimum and maximum image height + * + * @param array $options The image height dimensions + * @return Zend_Validate_File_ImageSize Provides a fluent interface + */ + public function setImageHeight($options) + { + $this->setImageMin($options); + $this->setImageMax($options); + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the imagesize of $value is at least min and + * not bigger than max + * + * @param string $value Real file to check for image size + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_READABLE); + } + + $size = @getimagesize($value); + $this->_setValue($file); + + if (empty($size) or ($size[0] === 0) or ($size[1] === 0)) { + return $this->_throw($file, self::NOT_DETECTED); + } + + $this->_width = $size[0]; + $this->_height = $size[1]; + if ($this->_width < $this->_minwidth) { + $this->_throw($file, self::WIDTH_TOO_SMALL); + } + + if (($this->_maxwidth !== null) and ($this->_maxwidth < $this->_width)) { + $this->_throw($file, self::WIDTH_TOO_BIG); + } + + if ($this->_height < $this->_minheight) { + $this->_throw($file, self::HEIGHT_TOO_SMALL); + } + + if (($this->_maxheight !== null) and ($this->_maxheight < $this->_height)) { + $this->_throw($file, self::HEIGHT_TOO_BIG); + } + + if (count($this->_messages) > 0) { + return false; + } + + return true; + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/IsCompressed.php b/library/Zend/Validate/File/IsCompressed.php new file mode 100755 index 000000000..ce59423bd --- /dev/null +++ b/library/Zend/Validate/File/IsCompressed.php @@ -0,0 +1,149 @@ + "File '%value%' is not compressed, '%type%' detected", + self::NOT_DETECTED => "The mimetype of file '%value%' could not be detected", + self::NOT_READABLE => "File '%value%' is not readable or does not exist", + ); + + /** + * Sets validator options + * + * @param string|array|Zend_Config $mimetype + */ + public function __construct($mimetype = array()) + { + if ($mimetype instanceof Zend_Config) { + $mimetype = $mimetype->toArray(); + } + + $temp = array(); + // http://de.wikipedia.org/wiki/Liste_von_Dateiendungen + $default = array( + 'application/arj', + 'application/gnutar', + 'application/lha', + 'application/lzx', + 'application/vnd.ms-cab-compressed', + 'application/x-ace-compressed', + 'application/x-arc', + 'application/x-archive', + 'application/x-arj', + 'application/x-bzip', + 'application/x-bzip2', + 'application/x-cab-compressed', + 'application/x-compress', + 'application/x-compressed', + 'application/x-cpio', + 'application/x-debian-package', + 'application/x-eet', + 'application/x-gzip', + 'application/x-java-pack200', + 'application/x-lha', + 'application/x-lharc', + 'application/x-lzh', + 'application/x-lzma', + 'application/x-lzx', + 'application/x-rar', + 'application/x-sit', + 'application/x-stuffit', + 'application/x-tar', + 'application/zip', + 'application/x-zip', + 'application/zoo', + 'multipart/x-gzip', + ); + + if (is_array($mimetype)) { + $temp = $mimetype; + if (array_key_exists('magicfile', $temp)) { + unset($temp['magicfile']); + } + + if (array_key_exists('headerCheck', $temp)) { + unset($temp['headerCheck']); + } + + if (empty($temp)) { + $mimetype += $default; + } + } + + if (empty($mimetype)) { + $mimetype = $default; + } + + parent::__construct($mimetype); + } + + /** + * Throws an error of the given type + * Duplicates parent method due to OOP Problem with late static binding in PHP 5.2 + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + $this->_value = $file['name']; + switch($errorType) { + case Zend_Validate_File_MimeType::FALSE_TYPE : + $errorType = self::FALSE_TYPE; + break; + case Zend_Validate_File_MimeType::NOT_DETECTED : + $errorType = self::NOT_DETECTED; + break; + case Zend_Validate_File_MimeType::NOT_READABLE : + $errorType = self::NOT_READABLE; + break; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/IsImage.php b/library/Zend/Validate/File/IsImage.php new file mode 100755 index 000000000..09a6e42ab --- /dev/null +++ b/library/Zend/Validate/File/IsImage.php @@ -0,0 +1,172 @@ + "File '%value%' is no image, '%type%' detected", + self::NOT_DETECTED => "The mimetype of file '%value%' could not be detected", + self::NOT_READABLE => "File '%value%' is not readable or does not exist", + ); + + /** + * Sets validator options + * + * @param string|array|Zend_Config $mimetype + */ + public function __construct($mimetype = array()) + { + if ($mimetype instanceof Zend_Config) { + $mimetype = $mimetype->toArray(); + } + + $temp = array(); + // http://de.wikipedia.org/wiki/Liste_von_Dateiendungen + // http://www.iana.org/assignments/media-types/image/ + $default = array( + 'application/cdf', + 'application/dicom', + 'application/fractals', + 'application/postscript', + 'application/vnd.hp-hpgl', + 'application/vnd.oasis.opendocument.graphics', + 'application/x-cdf', + 'application/x-cmu-raster', + 'application/x-ima', + 'application/x-inventor', + 'application/x-koan', + 'application/x-portable-anymap', + 'application/x-world-x-3dmf', + 'image/bmp', + 'image/c', + 'image/cgm', + 'image/fif', + 'image/gif', + 'image/jpeg', + 'image/jpm', + 'image/jpx', + 'image/jp2', + 'image/naplps', + 'image/pjpeg', + 'image/png', + 'image/svg', + 'image/svg+xml', + 'image/tiff', + 'image/vnd.adobe.photoshop', + 'image/vnd.djvu', + 'image/vnd.fpx', + 'image/vnd.net-fpx', + 'image/x-cmu-raster', + 'image/x-cmx', + 'image/x-coreldraw', + 'image/x-cpi', + 'image/x-emf', + 'image/x-ico', + 'image/x-icon', + 'image/x-jg', + 'image/x-ms-bmp', + 'image/x-niff', + 'image/x-pict', + 'image/x-pcx', + 'image/x-portable-anymap', + 'image/x-portable-bitmap', + 'image/x-portable-greymap', + 'image/x-portable-pixmap', + 'image/x-quicktime', + 'image/x-rgb', + 'image/x-tiff', + 'image/x-unknown', + 'image/x-windows-bmp', + 'image/x-xpmi', + ); + + if (is_array($mimetype)) { + $temp = $mimetype; + if (array_key_exists('magicfile', $temp)) { + unset($temp['magicfile']); + } + + if (array_key_exists('headerCheck', $temp)) { + unset($temp['headerCheck']); + } + + if (empty($temp)) { + $mimetype += $default; + } + } + + if (empty($mimetype)) { + $mimetype = $default; + } + + parent::__construct($mimetype); + } + + /** + * Throws an error of the given type + * Duplicates parent method due to OOP Problem with late static binding in PHP 5.2 + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + $this->_value = $file['name']; + switch($errorType) { + case Zend_Validate_File_MimeType::FALSE_TYPE : + $errorType = self::FALSE_TYPE; + break; + case Zend_Validate_File_MimeType::NOT_DETECTED : + $errorType = self::NOT_DETECTED; + break; + case Zend_Validate_File_MimeType::NOT_READABLE : + $errorType = self::NOT_READABLE; + break; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/Md5.php b/library/Zend/Validate/File/Md5.php new file mode 100755 index 000000000..bfe0b6046 --- /dev/null +++ b/library/Zend/Validate/File/Md5.php @@ -0,0 +1,182 @@ + "File '%value%' does not match the given md5 hashes", + self::NOT_DETECTED => "A md5 hash could not be evaluated for the given file", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * Hash of the file + * + * @var string + */ + protected $_hash; + + /** + * Sets validator options + * + * $hash is the hash we accept for the file $file + * + * @param string|array $options + * @throws Zend_Validate_Exception + * @return Zend_Validate_File_Md5 + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_scalar($options)) { + $options = array('hash1' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid options to validator provided'); + } + + $this->setMd5($options); + } + + /** + * Returns all set md5 hashes + * + * @return array + */ + public function getMd5() + { + return $this->getHash(); + } + + /** + * Sets the md5 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setHash($options) + { + if (!is_array($options)) { + $options = (array) $options; + } + + $options['algorithm'] = 'md5'; + parent::setHash($options); + return $this; + } + + /** + * Sets the md5 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setMd5($options) + { + $this->setHash($options); + return $this; + } + + /** + * Adds the md5 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addHash($options) + { + if (!is_array($options)) { + $options = (array) $options; + } + + $options['algorithm'] = 'md5'; + parent::addHash($options); + return $this; + } + + /** + * Adds the md5 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addMd5($options) + { + $this->addHash($options); + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the given file confirms the set hash + * + * @param string $value Filename to check for hash + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + $hashes = array_unique(array_keys($this->_hash)); + $filehash = hash_file('md5', $value); + if ($filehash === false) { + return $this->_throw($file, self::NOT_DETECTED); + } + + foreach($hashes as $hash) { + if ($filehash === $hash) { + return true; + } + } + + return $this->_throw($file, self::DOES_NOT_MATCH); + } +} diff --git a/library/Zend/Validate/File/MimeType.php b/library/Zend/Validate/File/MimeType.php new file mode 100755 index 000000000..874148836 --- /dev/null +++ b/library/Zend/Validate/File/MimeType.php @@ -0,0 +1,476 @@ + "File '%value%' has a false mimetype of '%type%'", + self::NOT_DETECTED => "The mimetype of file '%value%' could not be detected", + self::NOT_READABLE => "File '%value%' is not readable or does not exist", + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'type' => '_type' + ); + + /** + * @var string + */ + protected $_type; + + /** + * Mimetypes + * + * If null, there is no mimetype + * + * @var string|null + */ + protected $_mimetype; + + /** + * Magicfile to use + * + * @var string|null + */ + protected $_magicfile; + + /** + * Finfo object to use + * + * @var resource + */ + protected $_finfo; + + /** + * If no $_ENV['MAGIC'] is set, try and autodiscover it based on common locations + * @var array + */ + protected $_magicFiles = array( + '/usr/share/misc/magic', + '/usr/share/misc/magic.mime', + '/usr/share/misc/magic.mgc', + '/usr/share/mime/magic', + '/usr/share/mime/magic.mime', + '/usr/share/mime/magic.mgc', + '/usr/share/file/magic', + '/usr/share/file/magic.mime', + '/usr/share/file/magic.mgc', + ); + + /** + * Indicates whether use of $_magicFiles should be attempted. + * @var boolean + */ + protected $_tryCommonMagicFiles = true; + + /** + * Option to allow header check + * + * @var boolean + */ + protected $_headerCheck = false; + + /** + * Holds error information returned by finfo_open + * + * @var array + */ + protected $_finfoError; + + /** + * Sets validator options + * + * Mimetype to accept + * + * @param string|array $mimetype MimeType + * @throws Zend_Validate_Exception + */ + public function __construct($mimetype) + { + if ($mimetype instanceof Zend_Config) { + $mimetype = $mimetype->toArray(); + } elseif (is_string($mimetype)) { + $mimetype = explode(',', $mimetype); + } elseif (!is_array($mimetype)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Invalid options to validator provided"); + } + + if (isset($mimetype['magicfile'])) { + $this->setMagicFile($mimetype['magicfile']); + unset($mimetype['magicfile']); + } + + if (isset($mimetype['headerCheck'])) { + $this->enableHeaderCheck($mimetype['headerCheck']); + unset($mimetype['headerCheck']); + } + + $this->setMimeType($mimetype); + } + + /** + * Returns the actual set magicfile + * + * Note that for PHP 5.3.0 or higher, we don't use $_ENV['MAGIC'] or try to + * find a magic file in a common location as PHP now has a built-in internal + * magic file. + * + * @return string + */ + public function getMagicFile() + { + if (version_compare(PHP_VERSION, '5.3.0', '<') + && null === $this->_magicfile) { + if (!empty($_ENV['MAGIC'])) { + $this->setMagicFile($_ENV['MAGIC']); + } elseif ( + !(@ini_get("safe_mode") == 'On' || @ini_get("safe_mode") === 1) + && $this->shouldTryCommonMagicFiles() // @see ZF-11784 + ) { + require_once 'Zend/Validate/Exception.php'; + foreach ($this->_magicFiles as $file) { + // supressing errors which are thrown due to openbase_dir restrictions + try { + $this->setMagicFile($file); + if ($this->_magicfile !== null) { + break; + } + } catch (Zend_Validate_Exception $e) { + // Intentionally, catch and fall through + } + } + } + + if ($this->_magicfile === null) { + $this->_magicfile = false; + } + } + + return $this->_magicfile; + } + + /** + * Sets the magicfile to use + * if null, the MAGIC constant from php is used + * if the MAGIC file is errorous, no file will be set + * + * @param string $file + * @throws Zend_Validate_Exception When finfo can not read the magicfile + * @return Zend_Validate_File_MimeType Provides a fluent interface + */ + public function setMagicFile($file) + { + if (empty($file)) { + $this->_magicfile = null; + } else if (!(class_exists('finfo', false))) { + $this->_magicfile = null; + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Magicfile can not be set. There is no finfo extension installed'); + } else if (!is_file($file) || !is_readable($file)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('The given magicfile can not be read'); + } else { + $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; + set_error_handler(array($this, '_errorHandler'), E_NOTICE | E_WARNING); + $this->_finfo = finfo_open($const, $file); + restore_error_handler(); + if (empty($this->_finfo)) { + $this->_finfo = null; + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception( + sprintf('The given magicfile ("%s") is not accepted by finfo', $file), + null, + $this->_finfoError + ); + } else { + $this->_magicfile = $file; + } + } + + return $this; + } + + /** + * Enables or disables attempts to try the common magic file locations + * specified by Zend_Validate_File_MimeType::_magicFiles + * + * @param boolean $flag + * @return Zend_Validate_File_MimeType Provides fluent interface + * @see http://framework.zend.com/issues/browse/ZF-11784 + */ + public function setTryCommonMagicFilesFlag($flag = true) + { + $this->_tryCommonMagicFiles = (boolean) $flag; + + return $this; + } + + /** + * Accessor for Zend_Validate_File_MimeType::_magicFiles + * + * @return boolean + * @see http://framework.zend.com/issues/browse/ZF-11784 + */ + public function shouldTryCommonMagicFiles() + { + return $this->_tryCommonMagicFiles; + } + + /** + * Returns the Header Check option + * + * @return boolean + */ + public function getHeaderCheck() + { + return $this->_headerCheck; + } + + /** + * Defines if the http header should be used + * Note that this is unsave and therefor the default value is false + * + * @param boolean $headerCheck + * @return Zend_Validate_File_MimeType Provides a fluent interface + */ + public function enableHeaderCheck($headerCheck = true) + { + $this->_headerCheck = (boolean) $headerCheck; + return $this; + } + + /** + * Returns the set mimetypes + * + * @param boolean $asArray Returns the values as array, when false an concated string is returned + * @return string|array + */ + public function getMimeType($asArray = false) + { + $asArray = (bool) $asArray; + $mimetype = (string) $this->_mimetype; + if ($asArray) { + $mimetype = explode(',', $mimetype); + } + + return $mimetype; + } + + /** + * Sets the mimetypes + * + * @param string|array $mimetype The mimetypes to validate + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function setMimeType($mimetype) + { + $this->_mimetype = null; + $this->addMimeType($mimetype); + return $this; + } + + /** + * Adds the mimetypes + * + * @param string|array $mimetype The mimetypes to add for validation + * @throws Zend_Validate_Exception + * @return Zend_Validate_File_Extension Provides a fluent interface + */ + public function addMimeType($mimetype) + { + $mimetypes = $this->getMimeType(true); + + if (is_string($mimetype)) { + $mimetype = explode(',', $mimetype); + } elseif (!is_array($mimetype)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Invalid options to validator provided"); + } + + if (isset($mimetype['magicfile'])) { + unset($mimetype['magicfile']); + } + + foreach ($mimetype as $content) { + if (empty($content) || !is_string($content)) { + continue; + } + $mimetypes[] = trim($content); + } + $mimetypes = array_unique($mimetypes); + + // Sanity check to ensure no empty values + foreach ($mimetypes as $key => $mt) { + if (empty($mt)) { + unset($mimetypes[$key]); + } + } + + $this->_mimetype = implode(',', $mimetypes); + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if the mimetype of the file matches the given ones. Also parts + * of mimetypes can be checked. If you give for example "image" all image + * mime types will be accepted like "image/gif", "image/jpeg" and so on. + * + * @param string $value Real file to check for mimetype + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + if ($file === null) { + $file = array( + 'type' => null, + 'name' => $value + ); + } + + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_READABLE); + } + + $this->_type = $this->_detectMimeType($value); + + if (empty($this->_type) && $this->_headerCheck) { + $this->_type = $file['type']; + } + + if (empty($this->_type)) { + return $this->_throw($file, self::NOT_DETECTED); + } + + $mimetype = $this->getMimeType(true); + if (in_array($this->_type, $mimetype)) { + return true; + } + + $types = explode('/', $this->_type); + $types = array_merge($types, explode('-', $this->_type)); + $types = array_merge($types, explode(';', $this->_type)); + foreach($mimetype as $mime) { + if (in_array($mime, $types)) { + return true; + } + } + + return $this->_throw($file, self::FALSE_TYPE); + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + $this->_value = $file['name']; + $this->_error($errorType); + return false; + } + + /** + * Try to detect mime type of given file. + * @param string $file File which mime type should be detected + * @return string File mime type or null if not detected + */ + protected function _detectMimeType($file) + { + $mimefile = $this->getMagicFile(); + $type = null; + + if (class_exists('finfo', false)) { + $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; + + if (!empty($mimefile) && empty($this->_finfo)) { + set_error_handler(array($this, '_errorHandler'), E_NOTICE | E_WARNING); + $this->_finfo = finfo_open($const, $mimefile); + restore_error_handler(); + } + + if (empty($this->_finfo)) { + set_error_handler(array($this, '_errorHandler'), E_NOTICE | E_WARNING); + $this->_finfo = finfo_open($const); + restore_error_handler(); + } + + if (!empty($this->_finfo)) { + $type = finfo_file($this->_finfo, $file); + } + } + + if (empty($type) && + (function_exists('mime_content_type') && ini_get('mime_magic.magicfile'))) { + $type = mime_content_type($file); + } + + return $type; + } + + /** + * Saves the provided error information by finfo_open to this instance + * + * @param integer $errno + * @param string $errstr + * @param string $errfile + * @param integer $errline + */ + protected function _errorHandler($errno, $errstr, $errfile, $errline) + { + $this->_finfoError = new ErrorException($errstr, $errno, 0, $errfile, $errline); + } +} diff --git a/library/Zend/Validate/File/NotExists.php b/library/Zend/Validate/File/NotExists.php new file mode 100755 index 000000000..bf58dce22 --- /dev/null +++ b/library/Zend/Validate/File/NotExists.php @@ -0,0 +1,84 @@ + "File '%value%' exists", + ); + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the file does not exist in the set destinations + * + * @param string $value Real file to check for + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + $directories = $this->getDirectory(true); + if (($file !== null) and (!empty($file['destination']))) { + $directories[] = $file['destination']; + } else if (!isset($file['name'])) { + $file['name'] = $value; + } + + foreach ($directories as $directory) { + if (empty($directory)) { + continue; + } + + $check = true; + if (file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) { + return $this->_throw($file, self::DOES_EXIST); + } + } + + if (!isset($check)) { + return $this->_throw($file, self::DOES_EXIST); + } + + return true; + } +} diff --git a/library/Zend/Validate/File/Sha1.php b/library/Zend/Validate/File/Sha1.php new file mode 100755 index 000000000..e4076139b --- /dev/null +++ b/library/Zend/Validate/File/Sha1.php @@ -0,0 +1,182 @@ + "File '%value%' does not match the given sha1 hashes", + self::NOT_DETECTED => "A sha1 hash could not be evaluated for the given file", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * Hash of the file + * + * @var string + */ + protected $_hash; + + /** + * Sets validator options + * + * $hash is the hash we accept for the file $file + * + * @param string|array $options + * @throws Zend_Validate_Exception + * @return Zend_Validate_File_Sha1 + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_scalar($options)) { + $options = array('hash1' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid options to validator provided'); + } + + $this->setHash($options); + } + + /** + * Returns all set sha1 hashes + * + * @return array + */ + public function getSha1() + { + return $this->getHash(); + } + + /** + * Sets the sha1 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setHash($options) + { + if (!is_array($options)) { + $options = (array) $options; + } + + $options['algorithm'] = 'sha1'; + parent::setHash($options); + return $this; + } + + /** + * Sets the sha1 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function setSha1($options) + { + $this->setHash($options); + return $this; + } + + /** + * Adds the sha1 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addHash($options) + { + if (!is_array($options)) { + $options = (array) $options; + } + + $options['algorithm'] = 'sha1'; + parent::addHash($options); + return $this; + } + + /** + * Adds the sha1 hash for one or multiple files + * + * @param string|array $options + * @return Zend_Validate_File_Hash Provides a fluent interface + */ + public function addSha1($options) + { + $this->addHash($options); + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the given file confirms the set hash + * + * @param string $value Filename to check for hash + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + $hashes = array_unique(array_keys($this->_hash)); + $filehash = hash_file('sha1', $value); + if ($filehash === false) { + return $this->_throw($file, self::NOT_DETECTED); + } + + foreach ($hashes as $hash) { + if ($filehash === $hash) { + return true; + } + } + + return $this->_throw($file, self::DOES_NOT_MATCH); + } +} diff --git a/library/Zend/Validate/File/Size.php b/library/Zend/Validate/File/Size.php new file mode 100755 index 000000000..bc9dea0d2 --- /dev/null +++ b/library/Zend/Validate/File/Size.php @@ -0,0 +1,405 @@ + "Maximum allowed size for file '%value%' is '%max%' but '%size%' detected", + self::TOO_SMALL => "Minimum expected size for file '%value%' is '%min%' but '%size%' detected", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * @var array Error message template variables + */ + protected $_messageVariables = array( + 'min' => '_min', + 'max' => '_max', + 'size' => '_size', + ); + + /** + * Minimum filesize + * @var integer + */ + protected $_min; + + /** + * Maximum filesize + * + * If null, there is no maximum filesize + * + * @var integer|null + */ + protected $_max; + + /** + * Detected size + * + * @var integer + */ + protected $_size; + + /** + * Use bytestring ? + * + * @var boolean + */ + protected $_useByteString = true; + + /** + * Sets validator options + * + * If $options is a integer, it will be used as maximum filesize + * As Array is accepts the following keys: + * 'min': Minimum filesize + * 'max': Maximum filesize + * 'bytestring': Use bytestring or real size for messages + * + * @param integer|array $options Options for the adapter + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } elseif (is_string($options) || is_numeric($options)) { + $options = array('max' => $options); + } elseif (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + if (1 < func_num_args()) { + $argv = func_get_args(); + array_shift($argv); + $options['max'] = array_shift($argv); + if (!empty($argv)) { + $options['bytestring'] = array_shift($argv); + } + } + + if (isset($options['bytestring'])) { + $this->setUseByteString($options['bytestring']); + } + + if (isset($options['min'])) { + $this->setMin($options['min']); + } + + if (isset($options['max'])) { + $this->setMax($options['max']); + } + } + + /** + * Returns the minimum filesize + * + * @param boolean $byteString Use bytestring ? + * @return integer + */ + public function setUseByteString($byteString = true) + { + $this->_useByteString = (bool) $byteString; + return $this; + } + + /** + * Will bytestring be used? + * + * @return boolean + */ + public function useByteString() + { + return $this->_useByteString; + } + + /** + * Returns the minimum filesize + * + * @param bool $raw Whether or not to force return of the raw value (defaults off) + * @return integer|string + */ + public function getMin($raw = false) + { + $min = $this->_min; + if (!$raw && $this->useByteString()) { + $min = $this->_toByteString($min); + } + + return $min; + } + + /** + * Sets the minimum filesize + * + * @param integer $min The minimum filesize + * @throws Zend_Validate_Exception When min is greater than max + * @return Zend_Validate_File_Size Provides a fluent interface + */ + public function setMin($min) + { + if (!is_string($min) and !is_numeric($min)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + $min = (integer) $this->_fromByteString($min); + $max = $this->getMax(true); + if (($max !== null) && ($min > $max)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum filesize, but $min >" + . " $max"); + } + + $this->_min = $min; + return $this; + } + + /** + * Returns the maximum filesize + * + * @param bool $raw Whether or not to force return of the raw value (defaults off) + * @return integer|string + */ + public function getMax($raw = false) + { + $max = $this->_max; + if (!$raw && $this->useByteString()) { + $max = $this->_toByteString($max); + } + + return $max; + } + + /** + * Sets the maximum filesize + * + * @param integer $max The maximum filesize + * @throws Zend_Validate_Exception When max is smaller than min + * @return Zend_Validate_StringLength Provides a fluent interface + */ + public function setMax($max) + { + if (!is_string($max) && !is_numeric($max)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception ('Invalid options to validator provided'); + } + + $max = (integer) $this->_fromByteString($max); + $min = $this->getMin(true); + if (($min !== null) && ($max < $min)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum filesize, but " + . "$max < $min"); + } + + $this->_max = $max; + return $this; + } + + /** + * Retrieve current detected file size + * + * @return int + */ + protected function _getSize() + { + return $this->_size; + } + + /** + * Set current size + * + * @param int $size + * @return Zend_Validate_File_Size + */ + protected function _setSize($size) + { + $this->_size = $size; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the filesize of $value is at least min and + * not bigger than max (when max is not null). + * + * @param string $value Real file to check for size + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + // limited to 4GB files + $size = sprintf("%u", @filesize($value)); + $this->_size = $size; + + // Check to see if it's smaller than min size + $min = $this->getMin(true); + $max = $this->getMax(true); + if (($min !== null) && ($size < $min)) { + if ($this->useByteString()) { + $this->_min = $this->_toByteString($min); + $this->_size = $this->_toByteString($size); + $this->_throw($file, self::TOO_SMALL); + $this->_min = $min; + $this->_size = $size; + } else { + $this->_throw($file, self::TOO_SMALL); + } + } + + // Check to see if it's larger than max size + if (($max !== null) && ($max < $size)) { + if ($this->useByteString()) { + $this->_max = $this->_toByteString($max); + $this->_size = $this->_toByteString($size); + $this->_throw($file, self::TOO_BIG); + $this->_max = $max; + $this->_size = $size; + } else { + $this->_throw($file, self::TOO_BIG); + } + } + + if (count($this->_messages) > 0) { + return false; + } + + return true; + } + + /** + * Returns the formatted size + * + * @param integer $size + * @return string + */ + protected function _toByteString($size) + { + $sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + for ($i=0; $size >= 1024 && $i < 9; $i++) { + $size /= 1024; + } + + return round($size, 2) . $sizes[$i]; + } + + /** + * Returns the unformatted size + * + * @param string $size + * @return integer + */ + protected function _fromByteString($size) + { + if (is_numeric($size)) { + return (integer) $size; + } + + $type = trim(substr($size, -2, 1)); + + $value = substr($size, 0, -1); + if (!is_numeric($value)) { + $value = substr($value, 0, -1); + } + + switch (strtoupper($type)) { + case 'Y': + $value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024); + break; + case 'Z': + $value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024); + break; + case 'E': + $value *= (1024 * 1024 * 1024 * 1024 * 1024 * 1024); + break; + case 'P': + $value *= (1024 * 1024 * 1024 * 1024 * 1024); + break; + case 'T': + $value *= (1024 * 1024 * 1024 * 1024); + break; + case 'G': + $value *= (1024 * 1024 * 1024); + break; + case 'M': + $value *= (1024 * 1024); + break; + case 'K': + $value *= 1024; + break; + default: + break; + } + + return $value; + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/Upload.php b/library/Zend/Validate/File/Upload.php new file mode 100755 index 000000000..fde3414c9 --- /dev/null +++ b/library/Zend/Validate/File/Upload.php @@ -0,0 +1,251 @@ + "File '%value%' exceeds the defined ini size", + self::FORM_SIZE => "File '%value%' exceeds the defined form size", + self::PARTIAL => "File '%value%' was only partially uploaded", + self::NO_FILE => "File '%value%' was not uploaded", + self::NO_TMP_DIR => "No temporary directory was found for file '%value%'", + self::CANT_WRITE => "File '%value%' can't be written", + self::EXTENSION => "A PHP extension returned an error while uploading the file '%value%'", + self::ATTACK => "File '%value%' was illegally uploaded. This could be a possible attack", + self::FILE_NOT_FOUND => "File '%value%' was not found", + self::UNKNOWN => "Unknown error while uploading file '%value%'" + ); + + /** + * Internal array of files + * @var array + */ + protected $_files = array(); + + /** + * Sets validator options + * + * The array $files must be given in syntax of Zend_File_Transfer to be checked + * If no files are given the $_FILES array will be used automatically. + * NOTE: This validator will only work with HTTP POST uploads! + * + * @param array|Zend_Config $files Array of files in syntax of Zend_File_Transfer + */ + public function __construct($files = array()) + { + if ($files instanceof Zend_Config) { + $files = $files->toArray(); + } + + $this->setFiles($files); + } + + /** + * Returns the array of set files + * + * @param string $file (Optional) The file to return in detail + * @return array + * @throws Zend_Validate_Exception If file is not found + */ + public function getFiles($file = null) + { + if ($file !== null) { + $return = array(); + foreach ($this->_files as $name => $content) { + if ($name === $file) { + $return[$file] = $this->_files[$name]; + } + + if ($content['name'] === $file) { + $return[$name] = $this->_files[$name]; + } + } + + if (count($return) === 0) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The file '$file' was not found"); + } + + return $return; + } + + return $this->_files; + } + + /** + * Sets the files to be checked + * + * @param array $files The files to check in syntax of Zend_File_Transfer + * @return Zend_Validate_File_Upload Provides a fluent interface + */ + public function setFiles($files = array()) + { + if ($files === null || count($files) === 0) { + $this->_files = $_FILES; + } else { + $this->_files = $files; + } + + // see ZF-10738 + if (is_null($this->_files)) { + $this->_files = array(); + } + + foreach($this->_files as $file => $content) { + if (!isset($content['error'])) { + unset($this->_files[$file]); + } + } + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the file was uploaded without errors + * + * @param string $value Single file to check for upload errors, when giving null the $_FILES array + * from initialization will be used + * @param string|null $file + * @return boolean + */ + public function isValid($value, $file = null) + { + $this->_messages = null; + if (array_key_exists($value, $this->_files)) { + $files[$value] = $this->_files[$value]; + } else { + foreach ($this->_files as $file => $content) { + if (isset($content['name']) && ($content['name'] === $value)) { + $files[$file] = $this->_files[$file]; + } + + if (isset($content['tmp_name']) && ($content['tmp_name'] === $value)) { + $files[$file] = $this->_files[$file]; + } + } + } + + if (empty($files)) { + return $this->_throw($file, self::FILE_NOT_FOUND); + } + + foreach ($files as $file => $content) { + $this->_value = $file; + switch($content['error']) { + case 0: + if (!is_uploaded_file($content['tmp_name'])) { + $this->_throw($content, self::ATTACK); + } + break; + + case 1: + $this->_throw($content, self::INI_SIZE); + break; + + case 2: + $this->_throw($content, self::FORM_SIZE); + break; + + case 3: + $this->_throw($content, self::PARTIAL); + break; + + case 4: + $this->_throw($content, self::NO_FILE); + break; + + case 6: + $this->_throw($content, self::NO_TMP_DIR); + break; + + case 7: + $this->_throw($content, self::CANT_WRITE); + break; + + case 8: + $this->_throw($content, self::EXTENSION); + break; + + default: + $this->_throw($content, self::UNKNOWN); + break; + } + } + + if (count($this->_messages) > 0) { + return false; + } else { + return true; + } + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + if (is_array($file) and !empty($file['name'])) { + $this->_value = $file['name']; + } + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/File/WordCount.php b/library/Zend/Validate/File/WordCount.php new file mode 100755 index 000000000..42c79a5bd --- /dev/null +++ b/library/Zend/Validate/File/WordCount.php @@ -0,0 +1,101 @@ + "Too much words, maximum '%max%' are allowed but '%count%' were counted", + self::TOO_LESS => "Too less words, minimum '%min%' are expected but '%count%' were counted", + self::NOT_FOUND => "File '%value%' is not readable or does not exist", + ); + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the counted words are at least min and + * not bigger than max (when max is not null). + * + * @param string $value Filename to check for word count + * @param array $file File data from Zend_File_Transfer + * @return boolean + */ + public function isValid($value, $file = null) + { + // Is file readable ? + require_once 'Zend/Loader.php'; + if (!Zend_Loader::isReadable($value)) { + return $this->_throw($file, self::NOT_FOUND); + } + + $content = file_get_contents($value); + $this->_count = str_word_count($content); + if (($this->_max !== null) && ($this->_count > $this->_max)) { + return $this->_throw($file, self::TOO_MUCH); + } + + if (($this->_min !== null) && ($this->_count < $this->_min)) { + return $this->_throw($file, self::TOO_LESS); + } + + return true; + } + + /** + * Throws an error of the given type + * + * @param string $file + * @param string $errorType + * @return false + */ + protected function _throw($file, $errorType) + { + if ($file !== null) { + $this->_value = $file['name']; + } + + $this->_error($errorType); + return false; + } +} diff --git a/library/Zend/Validate/Float.php b/library/Zend/Validate/Float.php new file mode 100755 index 000000000..f0879a541 --- /dev/null +++ b/library/Zend/Validate/Float.php @@ -0,0 +1,135 @@ + "Invalid type given. String, integer or float expected", + self::NOT_FLOAT => "'%value%' does not appear to be a float", + ); + + protected $_locale; + + /** + * Constructor for the float validator + * + * @param string|Zend_Config|Zend_Locale $locale + */ + public function __construct($locale = null) + { + if ($locale instanceof Zend_Config) { + $locale = $locale->toArray(); + } + + if (is_array($locale)) { + if (array_key_exists('locale', $locale)) { + $locale = $locale['locale']; + } else { + $locale = null; + } + } + + if (empty($locale)) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Locale')) { + $locale = Zend_Registry::get('Zend_Locale'); + } + } + + $this->setLocale($locale); + } + + /** + * Returns the set locale + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Sets the locale to use + * + * @param string|Zend_Locale $locale + * @return $this + */ + public function setLocale($locale = null) + { + require_once 'Zend/Locale.php'; + $this->_locale = Zend_Locale::findLocale($locale); + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is a floating-point value + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value) && !is_float($value)) { + $this->_error(self::INVALID); + return false; + } + + if (is_float($value)) { + return true; + } + + $this->_setValue($value); + try { + if (!Zend_Locale_Format::isFloat($value, array('locale' => $this->_locale))) { + $this->_error(self::NOT_FLOAT); + return false; + } + } catch (Zend_Locale_Exception $e) { + $this->_error(self::NOT_FLOAT); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/GreaterThan.php b/library/Zend/Validate/GreaterThan.php new file mode 100755 index 000000000..5dd0579cd --- /dev/null +++ b/library/Zend/Validate/GreaterThan.php @@ -0,0 +1,124 @@ + "'%value%' is not greater than '%min%'", + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'min' => '_min' + ); + + /** + * Minimum value + * + * @var mixed + */ + protected $_min; + + /** + * Sets validator options + * + * @param mixed|Zend_Config $min + * @throws Zend_Validate_Exception + */ + public function __construct($min) + { + if ($min instanceof Zend_Config) { + $min = $min->toArray(); + } + + if (is_array($min)) { + if (array_key_exists('min', $min)) { + $min = $min['min']; + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Missing option 'min'"); + } + } + + $this->setMin($min); + } + + /** + * Returns the min option + * + * @return mixed + */ + public function getMin() + { + return $this->_min; + } + + /** + * Sets the min option + * + * @param mixed $min + * @return Zend_Validate_GreaterThan Provides a fluent interface + */ + public function setMin($min) + { + $this->_min = $min; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is greater than min option + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + + if ($this->_min >= $value) { + $this->_error(self::NOT_GREATER); + return false; + } + return true; + } + +} diff --git a/library/Zend/Validate/Hex.php b/library/Zend/Validate/Hex.php new file mode 100755 index 000000000..c6f780974 --- /dev/null +++ b/library/Zend/Validate/Hex.php @@ -0,0 +1,72 @@ + "Invalid type given. String expected", + self::NOT_HEX => "'%value%' has not only hexadecimal digit characters", + ); + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value contains only hexadecimal digit characters + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + if (!ctype_xdigit((string) $value)) { + $this->_error(self::NOT_HEX); + return false; + } + + return true; + } + +} diff --git a/library/Zend/Validate/Hostname.php b/library/Zend/Validate/Hostname.php new file mode 100755 index 000000000..05d4d0fe3 --- /dev/null +++ b/library/Zend/Validate/Hostname.php @@ -0,0 +1,1989 @@ + "'%value%' appears to be a DNS hostname but the given punycode notation cannot be decoded", + self::INVALID => "Invalid type given. String expected", + self::INVALID_DASH => "'%value%' appears to be a DNS hostname but contains a dash in an invalid position", + self::INVALID_HOSTNAME => "'%value%' does not match the expected structure for a DNS hostname", + self::INVALID_HOSTNAME_SCHEMA => "'%value%' appears to be a DNS hostname but cannot match against hostname schema for TLD '%tld%'", + self::INVALID_LOCAL_NAME => "'%value%' does not appear to be a valid local network name", + self::INVALID_URI => "'%value%' does not appear to be a valid URI hostname", + self::IP_ADDRESS_NOT_ALLOWED => "'%value%' appears to be an IP address, but IP addresses are not allowed", + self::LOCAL_NAME_NOT_ALLOWED => "'%value%' appears to be a local network name but local network names are not allowed", + self::UNDECIPHERABLE_TLD => "'%value%' appears to be a DNS hostname but cannot extract TLD part", + self::UNKNOWN_TLD => "'%value%' appears to be a DNS hostname but cannot match TLD against known list", + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'tld' => '_tld' + ); + + /** + * Allows Internet domain names (e.g., example.com) + */ + const ALLOW_DNS = 1; + + /** + * Allows IP addresses + */ + const ALLOW_IP = 2; + + /** + * Allows local network names (e.g., localhost, www.localdomain) + */ + const ALLOW_LOCAL = 4; + + /** + * Allows all types of hostnames + */ + const ALLOW_URI = 8; + + /** + * Allows all types of hostnames + */ + const ALLOW_ALL = 15; + + /** + * Array of valid top-level-domains + * + * Version 2015091800, Last Updated Fri Sep 18 07:07:01 2015 UTC + * + * @see http://data.iana.org/TLD/tlds-alpha-by-domain.txt List of all TLDs by domain + * @see http://www.iana.org/domains/root/db/ Official list of supported TLDs + * @var array + */ + protected $_validTlds = array( + 'aaa', + 'abb', + 'abbott', + 'abogado', + 'ac', + 'academy', + 'accenture', + 'accountant', + 'accountants', + 'aco', + 'active', + 'actor', + 'ad', + 'ads', + 'adult', + 'ae', + 'aeg', + 'aero', + 'af', + 'afl', + 'ag', + 'agency', + 'ai', + 'aig', + 'airforce', + 'airtel', + 'al', + 'allfinanz', + 'alsace', + 'am', + 'amica', + 'amsterdam', + 'android', + 'ao', + 'apartments', + 'app', + 'aq', + 'aquarelle', + 'ar', + 'aramco', + 'archi', + 'army', + 'arpa', + 'arte', + 'as', + 'asia', + 'associates', + 'at', + 'attorney', + 'au', + 'auction', + 'audio', + 'auto', + 'autos', + 'aw', + 'ax', + 'axa', + 'az', + 'azure', + 'ba', + 'band', + 'bank', + 'bar', + 'barcelona', + 'barclaycard', + 'barclays', + 'bargains', + 'bauhaus', + 'bayern', + 'bb', + 'bbc', + 'bbva', + 'bcn', + 'bd', + 'be', + 'beer', + 'bentley', + 'berlin', + 'best', + 'bet', + 'bf', + 'bg', + 'bh', + 'bharti', + 'bi', + 'bible', + 'bid', + 'bike', + 'bing', + 'bingo', + 'bio', + 'biz', + 'bj', + 'black', + 'blackfriday', + 'bloomberg', + 'blue', + 'bm', + 'bms', + 'bmw', + 'bn', + 'bnl', + 'bnpparibas', + 'bo', + 'boats', + 'bom', + 'bond', + 'boo', + 'boots', + 'boutique', + 'br', + 'bradesco', + 'bridgestone', + 'broker', + 'brother', + 'brussels', + 'bs', + 'bt', + 'budapest', + 'build', + 'builders', + 'business', + 'buzz', + 'bv', + 'bw', + 'by', + 'bz', + 'bzh', + 'ca', + 'cab', + 'cafe', + 'cal', + 'camera', + 'camp', + 'cancerresearch', + 'canon', + 'capetown', + 'capital', + 'car', + 'caravan', + 'cards', + 'care', + 'career', + 'careers', + 'cars', + 'cartier', + 'casa', + 'cash', + 'casino', + 'cat', + 'catering', + 'cba', + 'cbn', + 'cc', + 'cd', + 'ceb', + 'center', + 'ceo', + 'cern', + 'cf', + 'cfa', + 'cfd', + 'cg', + 'ch', + 'chanel', + 'channel', + 'chat', + 'cheap', + 'chloe', + 'christmas', + 'chrome', + 'church', + 'ci', + 'cipriani', + 'cisco', + 'citic', + 'city', + 'ck', + 'cl', + 'claims', + 'cleaning', + 'click', + 'clinic', + 'clothing', + 'cloud', + 'club', + 'clubmed', + 'cm', + 'cn', + 'co', + 'coach', + 'codes', + 'coffee', + 'college', + 'cologne', + 'com', + 'commbank', + 'community', + 'company', + 'computer', + 'condos', + 'construction', + 'consulting', + 'contractors', + 'cooking', + 'cool', + 'coop', + 'corsica', + 'country', + 'coupons', + 'courses', + 'cr', + 'credit', + 'creditcard', + 'cricket', + 'crown', + 'crs', + 'cruises', + 'csc', + 'cu', + 'cuisinella', + 'cv', + 'cw', + 'cx', + 'cy', + 'cymru', + 'cyou', + 'cz', + 'dabur', + 'dad', + 'dance', + 'date', + 'dating', + 'datsun', + 'day', + 'dclk', + 'de', + 'deals', + 'degree', + 'delivery', + 'dell', + 'delta', + 'democrat', + 'dental', + 'dentist', + 'desi', + 'design', + 'dev', + 'diamonds', + 'diet', + 'digital', + 'direct', + 'directory', + 'discount', + 'dj', + 'dk', + 'dm', + 'dnp', + 'do', + 'docs', + 'dog', + 'doha', + 'domains', + 'doosan', + 'download', + 'drive', + 'durban', + 'dvag', + 'dz', + 'earth', + 'eat', + 'ec', + 'edu', + 'education', + 'ee', + 'eg', + 'email', + 'emerck', + 'energy', + 'engineer', + 'engineering', + 'enterprises', + 'epson', + 'equipment', + 'er', + 'erni', + 'es', + 'esq', + 'estate', + 'et', + 'eu', + 'eurovision', + 'eus', + 'events', + 'everbank', + 'exchange', + 'expert', + 'exposed', + 'express', + 'fage', + 'fail', + 'faith', + 'family', + 'fan', + 'fans', + 'farm', + 'fashion', + 'feedback', + 'fi', + 'film', + 'final', + 'finance', + 'financial', + 'firmdale', + 'fish', + 'fishing', + 'fit', + 'fitness', + 'fj', + 'fk', + 'flights', + 'florist', + 'flowers', + 'flsmidth', + 'fly', + 'fm', + 'fo', + 'foo', + 'football', + 'forex', + 'forsale', + 'forum', + 'foundation', + 'fr', + 'frl', + 'frogans', + 'fund', + 'furniture', + 'futbol', + 'fyi', + 'ga', + 'gal', + 'gallery', + 'game', + 'garden', + 'gb', + 'gbiz', + 'gd', + 'gdn', + 'ge', + 'gea', + 'gent', + 'genting', + 'gf', + 'gg', + 'ggee', + 'gh', + 'gi', + 'gift', + 'gifts', + 'gives', + 'giving', + 'gl', + 'glass', + 'gle', + 'global', + 'globo', + 'gm', + 'gmail', + 'gmo', + 'gmx', + 'gn', + 'gold', + 'goldpoint', + 'golf', + 'goo', + 'goog', + 'google', + 'gop', + 'gov', + 'gp', + 'gq', + 'gr', + 'graphics', + 'gratis', + 'green', + 'gripe', + 'group', + 'gs', + 'gt', + 'gu', + 'gucci', + 'guge', + 'guide', + 'guitars', + 'guru', + 'gw', + 'gy', + 'hamburg', + 'hangout', + 'haus', + 'healthcare', + 'help', + 'here', + 'hermes', + 'hiphop', + 'hitachi', + 'hiv', + 'hk', + 'hm', + 'hn', + 'hockey', + 'holdings', + 'holiday', + 'homedepot', + 'homes', + 'honda', + 'horse', + 'host', + 'hosting', + 'hoteles', + 'hotmail', + 'house', + 'how', + 'hr', + 'hsbc', + 'ht', + 'hu', + 'hyundai', + 'ibm', + 'icbc', + 'ice', + 'icu', + 'id', + 'ie', + 'ifm', + 'iinet', + 'il', + 'im', + 'immo', + 'immobilien', + 'in', + 'industries', + 'infiniti', + 'info', + 'ing', + 'ink', + 'institute', + 'insure', + 'int', + 'international', + 'investments', + 'io', + 'ipiranga', + 'iq', + 'ir', + 'irish', + 'is', + 'ist', + 'istanbul', + 'it', + 'itau', + 'iwc', + 'jaguar', + 'java', + 'jcb', + 'je', + 'jetzt', + 'jewelry', + 'jlc', + 'jll', + 'jm', + 'jo', + 'jobs', + 'joburg', + 'jp', + 'jprs', + 'juegos', + 'kaufen', + 'kddi', + 'ke', + 'kg', + 'kh', + 'ki', + 'kia', + 'kim', + 'kinder', + 'kitchen', + 'kiwi', + 'km', + 'kn', + 'koeln', + 'komatsu', + 'kp', + 'kr', + 'krd', + 'kred', + 'kw', + 'ky', + 'kyoto', + 'kz', + 'la', + 'lacaixa', + 'lancaster', + 'land', + 'landrover', + 'lasalle', + 'lat', + 'latrobe', + 'law', + 'lawyer', + 'lb', + 'lc', + 'lds', + 'lease', + 'leclerc', + 'legal', + 'lexus', + 'lgbt', + 'li', + 'liaison', + 'lidl', + 'life', + 'lighting', + 'limited', + 'limo', + 'linde', + 'link', + 'live', + 'lixil', + 'lk', + 'loan', + 'loans', + 'lol', + 'london', + 'lotte', + 'lotto', + 'love', + 'lr', + 'ls', + 'lt', + 'ltd', + 'ltda', + 'lu', + 'lupin', + 'luxe', + 'luxury', + 'lv', + 'ly', + 'ma', + 'madrid', + 'maif', + 'maison', + 'man', + 'management', + 'mango', + 'market', + 'marketing', + 'markets', + 'marriott', + 'mba', + 'mc', + 'md', + 'me', + 'media', + 'meet', + 'melbourne', + 'meme', + 'memorial', + 'men', + 'menu', + 'mg', + 'mh', + 'miami', + 'microsoft', + 'mil', + 'mini', + 'mk', + 'ml', + 'mm', + 'mma', + 'mn', + 'mo', + 'mobi', + 'moda', + 'moe', + 'moi', + 'mom', + 'monash', + 'money', + 'montblanc', + 'mormon', + 'mortgage', + 'moscow', + 'motorcycles', + 'mov', + 'movie', + 'movistar', + 'mp', + 'mq', + 'mr', + 'ms', + 'mt', + 'mtn', + 'mtpc', + 'mtr', + 'mu', + 'museum', + 'mutuelle', + 'mv', + 'mw', + 'mx', + 'my', + 'mz', + 'na', + 'nadex', + 'nagoya', + 'name', + 'navy', + 'nc', + 'ne', + 'nec', + 'net', + 'netbank', + 'network', + 'neustar', + 'new', + 'news', + 'nexus', + 'nf', + 'ng', + 'ngo', + 'nhk', + 'ni', + 'nico', + 'ninja', + 'nissan', + 'nl', + 'no', + 'nokia', + 'np', + 'nr', + 'nra', + 'nrw', + 'ntt', + 'nu', + 'nyc', + 'nz', + 'obi', + 'office', + 'okinawa', + 'om', + 'omega', + 'one', + 'ong', + 'onl', + 'online', + 'ooo', + 'oracle', + 'orange', + 'org', + 'organic', + 'osaka', + 'otsuka', + 'ovh', + 'pa', + 'page', + 'panerai', + 'paris', + 'partners', + 'parts', + 'party', + 'pe', + 'pet', + 'pf', + 'pg', + 'ph', + 'pharmacy', + 'philips', + 'photo', + 'photography', + 'photos', + 'physio', + 'piaget', + 'pics', + 'pictet', + 'pictures', + 'pink', + 'pizza', + 'pk', + 'pl', + 'place', + 'play', + 'plumbing', + 'plus', + 'pm', + 'pn', + 'pohl', + 'poker', + 'porn', + 'post', + 'pr', + 'praxi', + 'press', + 'pro', + 'prod', + 'productions', + 'prof', + 'properties', + 'property', + 'protection', + 'ps', + 'pt', + 'pub', + 'pw', + 'py', + 'qa', + 'qpon', + 'quebec', + 'racing', + 're', + 'realtor', + 'realty', + 'recipes', + 'red', + 'redstone', + 'rehab', + 'reise', + 'reisen', + 'reit', + 'ren', + 'rent', + 'rentals', + 'repair', + 'report', + 'republican', + 'rest', + 'restaurant', + 'review', + 'reviews', + 'rich', + 'ricoh', + 'rio', + 'rip', + 'ro', + 'rocks', + 'rodeo', + 'rs', + 'rsvp', + 'ru', + 'ruhr', + 'run', + 'rw', + 'rwe', + 'ryukyu', + 'sa', + 'saarland', + 'sakura', + 'sale', + 'samsung', + 'sandvik', + 'sandvikcoromant', + 'sanofi', + 'sap', + 'sarl', + 'saxo', + 'sb', + 'sc', + 'sca', + 'scb', + 'schmidt', + 'scholarships', + 'school', + 'schule', + 'schwarz', + 'science', + 'scor', + 'scot', + 'sd', + 'se', + 'seat', + 'security', + 'seek', + 'sener', + 'services', + 'seven', + 'sew', + 'sex', + 'sexy', + 'sg', + 'sh', + 'shiksha', + 'shoes', + 'show', + 'shriram', + 'si', + 'singles', + 'site', + 'sj', + 'sk', + 'ski', + 'sky', + 'skype', + 'sl', + 'sm', + 'sn', + 'sncf', + 'so', + 'soccer', + 'social', + 'software', + 'sohu', + 'solar', + 'solutions', + 'sony', + 'soy', + 'space', + 'spiegel', + 'spreadbetting', + 'sr', + 'srl', + 'st', + 'stada', + 'starhub', + 'statoil', + 'stc', + 'stcgroup', + 'stockholm', + 'studio', + 'study', + 'style', + 'su', + 'sucks', + 'supplies', + 'supply', + 'support', + 'surf', + 'surgery', + 'suzuki', + 'sv', + 'swatch', + 'swiss', + 'sx', + 'sy', + 'sydney', + 'systems', + 'sz', + 'taipei', + 'tatamotors', + 'tatar', + 'tattoo', + 'tax', + 'taxi', + 'tc', + 'td', + 'team', + 'tech', + 'technology', + 'tel', + 'telefonica', + 'temasek', + 'tennis', + 'tf', + 'tg', + 'th', + 'thd', + 'theater', + 'theatre', + 'tickets', + 'tienda', + 'tips', + 'tires', + 'tirol', + 'tj', + 'tk', + 'tl', + 'tm', + 'tn', + 'to', + 'today', + 'tokyo', + 'tools', + 'top', + 'toray', + 'toshiba', + 'tours', + 'town', + 'toyota', + 'toys', + 'tr', + 'trade', + 'trading', + 'training', + 'travel', + 'trust', + 'tt', + 'tui', + 'tv', + 'tw', + 'tz', + 'ua', + 'ubs', + 'ug', + 'uk', + 'university', + 'uno', + 'uol', + 'us', + 'uy', + 'uz', + 'va', + 'vacations', + 'vc', + 've', + 'vegas', + 'ventures', + 'versicherung', + 'vet', + 'vg', + 'vi', + 'viajes', + 'video', + 'villas', + 'vin', + 'virgin', + 'vision', + 'vista', + 'vistaprint', + 'viva', + 'vlaanderen', + 'vn', + 'vodka', + 'vote', + 'voting', + 'voto', + 'voyage', + 'vu', + 'wales', + 'walter', + 'wang', + 'watch', + 'webcam', + 'website', + 'wed', + 'wedding', + 'weir', + 'wf', + 'whoswho', + 'wien', + 'wiki', + 'williamhill', + 'win', + 'windows', + 'wine', + 'wme', + 'work', + 'works', + 'world', + 'ws', + 'wtc', + 'wtf', + 'xbox', + 'xerox', + 'xin', + 'xn--11b4c3d', + 'xn--1qqw23a', + 'xn--30rr7y', + 'xn--3bst00m', + 'xn--3ds443g', + 'xn--3e0b707e', + 'xn--3pxu8k', + 'xn--42c2d9a', + 'xn--45brj9c', + 'xn--45q11c', + 'xn--4gbrim', + 'xn--55qw42g', + 'xn--55qx5d', + 'xn--6frz82g', + 'xn--6qq986b3xl', + 'xn--80adxhks', + 'xn--80ao21a', + 'xn--80asehdb', + 'xn--80aswg', + 'xn--90a3ac', + 'xn--90ais', + 'xn--9dbq2a', + 'xn--9et52u', + 'xn--b4w605ferd', + 'xn--c1avg', + 'xn--c2br7g', + 'xn--cg4bki', + 'xn--clchc0ea0b2g2a9gcd', + 'xn--czr694b', + 'xn--czrs0t', + 'xn--czru2d', + 'xn--d1acj3b', + 'xn--d1alf', + 'xn--efvy88h', + 'xn--estv75g', + 'xn--fhbei', + 'xn--fiq228c5hs', + 'xn--fiq64b', + 'xn--fiqs8s', + 'xn--fiqz9s', + 'xn--fjq720a', + 'xn--flw351e', + 'xn--fpcrj9c3d', + 'xn--fzc2c9e2c', + 'xn--gecrj9c', + 'xn--h2brj9c', + 'xn--hxt814e', + 'xn--i1b6b1a6a2e', + 'xn--imr513n', + 'xn--io0a7i', + 'xn--j1aef', + 'xn--j1amh', + 'xn--j6w193g', + 'xn--kcrx77d1x4a', + 'xn--kprw13d', + 'xn--kpry57d', + 'xn--kput3i', + 'xn--l1acc', + 'xn--lgbbat1ad8j', + 'xn--mgb9awbf', + 'xn--mgba3a3ejt', + 'xn--mgba3a4f16a', + 'xn--mgbaam7a8h', + 'xn--mgbab2bd', + 'xn--mgbayh7gpa', + 'xn--mgbbh1a71e', + 'xn--mgbc0a9azcg', + 'xn--mgberp4a5d4ar', + 'xn--mgbpl2fh', + 'xn--mgbx4cd0ab', + 'xn--mk1bu44c', + 'xn--mxtq1m', + 'xn--ngbc5azd', + 'xn--node', + 'xn--nqv7f', + 'xn--nqv7fs00ema', + 'xn--nyqy26a', + 'xn--o3cw4h', + 'xn--ogbpf8fl', + 'xn--p1acf', + 'xn--p1ai', + 'xn--pgbs0dh', + 'xn--pssy2u', + 'xn--q9jyb4c', + 'xn--qcka1pmc', + 'xn--rhqv96g', + 'xn--s9brj9c', + 'xn--ses554g', + 'xn--t60b56a', + 'xn--tckwe', + 'xn--unup4y', + 'xn--vermgensberater-ctb', + 'xn--vermgensberatung-pwb', + 'xn--vhquv', + 'xn--vuq861b', + 'xn--wgbh1c', + 'xn--wgbl6a', + 'xn--xhq521b', + 'xn--xkc2al3hye2a', + 'xn--xkc2dl3a5ee0h', + 'xn--y9a3aq', + 'xn--yfro4i67o', + 'xn--ygbi2ammx', + 'xn--zfr164b', + 'xperia', + 'xxx', + 'xyz', + 'yachts', + 'yamaxun', + 'yandex', + 'ye', + 'yodobashi', + 'yoga', + 'yokohama', + 'youtube', + 'yt', + 'za', + 'zara', + 'zip', + 'zm', + 'zone', + 'zuerich', + 'zw', + '测试', + 'परीक्षा', + '佛山', + '集团', + '在线', + '한국', + 'ভারত', + '八卦', + 'موقع', + 'বাংলা', + '公益', + '公司', + '移动', + '我爱你', + 'москва', + 'испытание', + 'қаз', + 'онлайн', + 'сайт', + 'срб', + 'бел', + '테스트', + 'орг', + '삼성', + 'சிங்கப்பூர்', + '商标', + '商城', + 'дети', + 'мкд', + 'טעסט', + '中文网', + '中信', + '中国', + '中國', + '谷歌', + 'భారత్', + 'ලංකා', + '測試', + 'ભારત', + 'भारत', + 'آزمایشی', + 'பரிட்சை', + 'संगठन', + '网络', + 'укр', + '香港', + 'δοκιμή', + 'إختبار', + '台湾', + '台灣', + '手机', + 'мон', + 'الجزائر', + 'عمان', + 'ایران', + 'امارات', + 'بازار', + 'پاکستان', + 'الاردن', + 'بھارت', + 'المغرب', + 'السعودية', + 'سودان', + 'عراق', + 'مليسيا', + 'شبكة', + 'გე', + '机构', + '组织机构', + 'ไทย', + 'سورية', + 'рус', + 'рф', + 'تونس', + 'みんな', + 'グーグル', + '世界', + 'ਭਾਰਤ', + '网址', + '游戏', + 'vermögensberater', + 'vermögensberatung', + '企业', + 'مصر', + 'قطر', + '广东', + 'இலங்கை', + 'இந்தியா', + 'հայ', + '新加坡', + 'فلسطين', + 'テスト', + '政务', + ); + + /** + * @var string + */ + protected $_tld; + + /** + * Array for valid Idns + * @see http://www.iana.org/domains/idn-tables/ Official list of supported IDN Chars + * (.AC) Ascension Island http://www.nic.ac/pdf/AC-IDN-Policy.pdf + * (.AR) Argentinia http://www.nic.ar/faqidn.html + * (.AS) American Samoa http://www.nic.as/idn/chars.cfm + * (.AT) Austria http://www.nic.at/en/service/technical_information/idn/charset_converter/ + * (.BIZ) International http://www.iana.org/domains/idn-tables/ + * (.BR) Brazil http://registro.br/faq/faq6.html + * (.BV) Bouvett Island http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html + * (.CA) Canada http://www.iana.org/domains/idn-tables/tables/ca_fr_1.0.html + * (.CAT) Catalan http://www.iana.org/domains/idn-tables/tables/cat_ca_1.0.html + * (.CH) Switzerland https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1 + * (.CL) Chile http://www.iana.org/domains/idn-tables/tables/cl_latn_1.0.html + * (.COM) International http://www.verisign.com/information-services/naming-services/internationalized-domain-names/index.html + * (.DE) Germany http://www.denic.de/en/domains/idns/liste.html + * (.DK) Danmark http://www.dk-hostmaster.dk/index.php?id=151 + * (.ES) Spain https://www.nic.es/media/2008-05/1210147705287.pdf + * (.FI) Finland http://www.ficora.fi/en/index/palvelut/fiverkkotunnukset/aakkostenkaytto.html + * (.GR) Greece https://grweb.ics.forth.gr/CharacterTable1_en.jsp + * (.HU) Hungary http://www.domain.hu/domain/English/szabalyzat/szabalyzat.html + * (.INFO) International http://www.nic.info/info/idn + * (.IO) British Indian Ocean Territory http://www.nic.io/IO-IDN-Policy.pdf + * (.IR) Iran http://www.nic.ir/Allowable_Characters_dot-iran + * (.IS) Iceland http://www.isnic.is/domain/rules.php + * (.KR) Korea http://www.iana.org/domains/idn-tables/tables/kr_ko-kr_1.0.html + * (.LI) Liechtenstein https://nic.switch.ch/reg/ocView.action?res=EF6GW2JBPVTG67DLNIQXU234MN6SC33JNQQGI7L6#anhang1 + * (.LT) Lithuania http://www.domreg.lt/static/doc/public/idn_symbols-en.pdf + * (.MD) Moldova http://www.register.md/ + * (.MUSEUM) International http://www.iana.org/domains/idn-tables/tables/museum_latn_1.0.html + * (.NET) International http://www.verisign.com/information-services/naming-services/internationalized-domain-names/index.html + * (.NO) Norway http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html + * (.NU) Niue http://www.worldnames.net/ + * (.ORG) International http://www.pir.org/index.php?db=content/FAQs&tbl=FAQs_Registrant&id=2 + * (.PE) Peru https://www.nic.pe/nuevas_politicas_faq_2.php + * (.PL) Poland http://www.dns.pl/IDN/allowed_character_sets.pdf + * (.PR) Puerto Rico http://www.nic.pr/idn_rules.asp + * (.PT) Portugal https://online.dns.pt/dns_2008/do?com=DS;8216320233;111;+PAGE(4000058)+K-CAT-CODIGO(C.125)+RCNT(100); + * (.RU) Russia http://www.iana.org/domains/idn-tables/tables/ru_ru-ru_1.0.html + * (.RS) Serbia http://www.iana.org/domains/idn-tables/tables/rs_sr-rs_1.0.pdf + * (.SA) Saudi Arabia http://www.iana.org/domains/idn-tables/tables/sa_ar_1.0.html + * (.SE) Sweden http://www.iis.se/english/IDN_campaignsite.shtml?lang=en + * (.SH) Saint Helena http://www.nic.sh/SH-IDN-Policy.pdf + * (.SJ) Svalbard and Jan Mayen http://www.norid.no/domeneregistrering/idn/idn_nyetegn.en.html + * (.TH) Thailand http://www.iana.org/domains/idn-tables/tables/th_th-th_1.0.html + * (.TM) Turkmenistan http://www.nic.tm/TM-IDN-Policy.pdf + * (.TR) Turkey https://www.nic.tr/index.php + * (.UA) Ukraine http://www.iana.org/domains/idn-tables/tables/ua_cyrl_1.2.html + * (.VE) Venice http://www.iana.org/domains/idn-tables/tables/ve_es_1.0.html + * (.VN) Vietnam http://www.vnnic.vn/english/5-6-300-2-2-04-20071115.htm#1.%20Introduction + * + * @var array + */ + protected $_validIdns = array( + 'AC' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿāăąćĉċčďđēėęěĝġģĥħīįĵķĺļľŀłńņňŋőœŕŗřśŝşšţťŧūŭůűųŵŷźżž]{1,63}$/iu'), + 'AR' => array(1 => '/^[\x{002d}0-9a-zà-ãç-êìíñ-õü]{1,63}$/iu'), + 'AS' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıĵķĸĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźż]{1,63}$/iu'), + 'AT' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿœšž]{1,63}$/iu'), + 'BIZ' => 'Hostname/Biz.php', + 'BR' => array(1 => '/^[\x{002d}0-9a-zà-ãçéíó-õúü]{1,63}$/iu'), + 'BV' => array(1 => '/^[\x{002d}0-9a-zàáä-éêñ-ôöøüčđńŋšŧž]{1,63}$/iu'), + 'CA' => array(1 => '/^[\x{002d}0-9a-zàâæçéèêëîïôœùûüÿ\x{00E0}\x{00E2}\x{00E7}\x{00E8}\x{00E9}\x{00EA}\x{00EB}\x{00EE}\x{00EF}\x{00F4}\x{00F9}\x{00FB}\x{00FC}\x{00E6}\x{0153}\x{00FF}]{1,63}$/iu'), + 'CAT' => array(1 => '/^[\x{002d}0-9a-z·àç-éíïòóúü]{1,63}$/iu'), + 'CH' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿœ]{1,63}$/iu'), + 'CL' => array(1 => '/^[\x{002d}0-9a-záéíñóúü]{1,63}$/iu'), + 'CN' => 'Hostname/Cn.php', + 'COM' => 'Hostname/Com.php', + 'DE' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿăąāćĉčċďđĕěėęēğĝġģĥħĭĩįīıĵķĺľļłńňņŋŏőōœĸŕřŗśŝšşťßţŧŭůűũųūŵŷźžż]{1,63}$/iu'), + 'DK' => array(1 => '/^[\x{002d}0-9a-zäéöüæøå]{1,63}$/iu'), + 'ES' => array(1 => '/^[\x{002d}0-9a-zàáçèéíïñòóúü·]{1,63}$/iu'), + 'EU' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿ]{1,63}$/iu', + 2 => '/^[\x{002d}0-9a-zāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıĵķĺļľŀłńņňʼnŋōŏőœŕŗřśŝšťŧũūŭůűųŵŷźżž]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-zșț]{1,63}$/iu', + 4 => '/^[\x{002d}0-9a-zΐάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ]{1,63}$/iu', + 5 => '/^[\x{002d}0-9a-zабвгдежзийклмнопрстуфхцчшщъыьэюя]{1,63}$/iu', + 6 => '/^[\x{002d}0-9a-zἀ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ὼώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷῂῃῄῆῇῐ-ῒΐῖῗῠ-ῧῲῳῴῶῷ]{1,63}$/iu'), + 'FI' => array(1 => '/^[\x{002d}0-9a-zäåö]{1,63}$/iu'), + 'GR' => array(1 => '/^[\x{002d}0-9a-zΆΈΉΊΌΎ-ΡΣ-ώἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼῂῃῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲῳῴῶ-ῼ]{1,63}$/iu'), + 'HK' => 'Hostname/Cn.php', + 'HU' => array(1 => '/^[\x{002d}0-9a-záéíóöúüőű]{1,63}$/iu'), + 'IL' => array(1 => '/^[\x{002d}0-9\x{05D0}-\x{05EA}]{1,63}$/iu', + 2 => '/^[\x{002d}0-9a-z]{1,63}$/i'), + 'INFO'=> array(1 => '/^[\x{002d}0-9a-zäåæéöøü]{1,63}$/iu', + 2 => '/^[\x{002d}0-9a-záéíóöúüőű]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-záæéíðóöúýþ]{1,63}$/iu', + 4 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu', + 5 => '/^[\x{002d}0-9a-zāčēģīķļņōŗšūž]{1,63}$/iu', + 6 => '/^[\x{002d}0-9a-ząčėęįšūųž]{1,63}$/iu', + 7 => '/^[\x{002d}0-9a-zóąćęłńśźż]{1,63}$/iu', + 8 => '/^[\x{002d}0-9a-záéíñóúü]{1,63}$/iu'), + 'IO' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿăąāćĉčċďđĕěėęēğĝġģĥħĭĩįīıĵķĺľļłńňņŋŏőōœĸŕřŗśŝšşťţŧŭůűũųūŵŷźžż]{1,63}$/iu'), + 'IS' => array(1 => '/^[\x{002d}0-9a-záéýúíóþæöð]{1,63}$/iu'), + 'IT' => array(1 => '/^[\x{002d}0-9a-zàâäèéêëìîïòôöùûüæœçÿß-]{1,63}$/iu'), + 'JP' => 'Hostname/Jp.php', + 'KR' => array(1 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu'), + 'LI' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿœ]{1,63}$/iu'), + 'LT' => array(1 => '/^[\x{002d}0-9ąčęėįšųūž]{1,63}$/iu'), + 'MD' => array(1 => '/^[\x{002d}0-9ăâîşţ]{1,63}$/iu'), + 'MUSEUM' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿāăąćċčďđēėęěğġģħīįıķĺļľłńņňŋōőœŕŗřśşšţťŧūůűųŵŷźżžǎǐǒǔ\x{01E5}\x{01E7}\x{01E9}\x{01EF}ə\x{0292}ẁẃẅỳ]{1,63}$/iu'), + 'NET' => 'Hostname/Com.php', + 'NO' => array(1 => '/^[\x{002d}0-9a-zàáä-éêñ-ôöøüčđńŋšŧž]{1,63}$/iu'), + 'NU' => 'Hostname/Com.php', + 'ORG' => array(1 => '/^[\x{002d}0-9a-záéíñóúü]{1,63}$/iu', + 2 => '/^[\x{002d}0-9a-zóąćęłńśźż]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-záäåæéëíðóöøúüýþ]{1,63}$/iu', + 4 => '/^[\x{002d}0-9a-záéíóöúüőű]{1,63}$/iu', + 5 => '/^[\x{002d}0-9a-ząčėęįšūųž]{1,63}$/iu', + 6 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu', + 7 => '/^[\x{002d}0-9a-zāčēģīķļņōŗšūž]{1,63}$/iu'), + 'PE' => array(1 => '/^[\x{002d}0-9a-zñáéíóúü]{1,63}$/iu'), + 'PL' => array(1 => '/^[\x{002d}0-9a-zāčēģīķļņōŗšūž]{1,63}$/iu', + 2 => '/^[\x{002d}а-ик-ш\x{0450}ѓѕјљњќџ]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-zâîăşţ]{1,63}$/iu', + 4 => '/^[\x{002d}0-9а-яё\x{04C2}]{1,63}$/iu', + 5 => '/^[\x{002d}0-9a-zàáâèéêìíîòóôùúûċġħż]{1,63}$/iu', + 6 => '/^[\x{002d}0-9a-zàäåæéêòóôöøü]{1,63}$/iu', + 7 => '/^[\x{002d}0-9a-zóąćęłńśźż]{1,63}$/iu', + 8 => '/^[\x{002d}0-9a-zàáâãçéêíòóôõúü]{1,63}$/iu', + 9 => '/^[\x{002d}0-9a-zâîăşţ]{1,63}$/iu', + 10=> '/^[\x{002d}0-9a-záäéíóôúýčďĺľňŕšťž]{1,63}$/iu', + 11=> '/^[\x{002d}0-9a-zçë]{1,63}$/iu', + 12=> '/^[\x{002d}0-9а-ик-шђјљњћџ]{1,63}$/iu', + 13=> '/^[\x{002d}0-9a-zćčđšž]{1,63}$/iu', + 14=> '/^[\x{002d}0-9a-zâçöûüğış]{1,63}$/iu', + 15=> '/^[\x{002d}0-9a-záéíñóúü]{1,63}$/iu', + 16=> '/^[\x{002d}0-9a-zäõöüšž]{1,63}$/iu', + 17=> '/^[\x{002d}0-9a-zĉĝĥĵŝŭ]{1,63}$/iu', + 18=> '/^[\x{002d}0-9a-zâäéëîô]{1,63}$/iu', + 19=> '/^[\x{002d}0-9a-zàáâäåæçèéêëìíîïðñòôöøùúûüýćčłńřśš]{1,63}$/iu', + 20=> '/^[\x{002d}0-9a-zäåæõöøüšž]{1,63}$/iu', + 21=> '/^[\x{002d}0-9a-zàáçèéìíòóùú]{1,63}$/iu', + 22=> '/^[\x{002d}0-9a-zàáéíóöúüőű]{1,63}$/iu', + 23=> '/^[\x{002d}0-9ΐά-ώ]{1,63}$/iu', + 24=> '/^[\x{002d}0-9a-zàáâåæçèéêëðóôöøüþœ]{1,63}$/iu', + 25=> '/^[\x{002d}0-9a-záäéíóöúüýčďěňřšťůž]{1,63}$/iu', + 26=> '/^[\x{002d}0-9a-z·àçèéíïòóúü]{1,63}$/iu', + 27=> '/^[\x{002d}0-9а-ъьюя\x{0450}\x{045D}]{1,63}$/iu', + 28=> '/^[\x{002d}0-9а-яёіў]{1,63}$/iu', + 29=> '/^[\x{002d}0-9a-ząčėęįšūųž]{1,63}$/iu', + 30=> '/^[\x{002d}0-9a-záäåæéëíðóöøúüýþ]{1,63}$/iu', + 31=> '/^[\x{002d}0-9a-zàâæçèéêëîïñôùûüÿœ]{1,63}$/iu', + 32=> '/^[\x{002d}0-9а-щъыьэюяёєіїґ]{1,63}$/iu', + 33=> '/^[\x{002d}0-9א-ת]{1,63}$/iu'), + 'PR' => array(1 => '/^[\x{002d}0-9a-záéíóúñäëïüöâêîôûàèùæçœãõ]{1,63}$/iu'), + 'PT' => array(1 => '/^[\x{002d}0-9a-záàâãçéêíóôõú]{1,63}$/iu'), + 'RS' => array(1 => '/^[\x{002D}\x{0030}-\x{0039}\x{0061}-\x{007A}\x{0107}\x{010D}\x{0111}\x{0161}\x{017E}]{1,63}$/iu)'), + 'RU' => array(1 => '/^[\x{002d}0-9а-яё]{1,63}$/iu'), + 'SA' => array(1 => '/^[\x{002d}.0-9\x{0621}-\x{063A}\x{0641}-\x{064A}\x{0660}-\x{0669}]{1,63}$/iu'), + 'SE' => array(1 => '/^[\x{002d}0-9a-zäåéöü]{1,63}$/iu'), + 'SH' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿăąāćĉčċďđĕěėęēğĝġģĥħĭĩįīıĵķĺľļłńňņŋŏőōœĸŕřŗśŝšşťţŧŭůűũųūŵŷźžż]{1,63}$/iu'), + 'SI' => array( + 1 => '/^[\x{002d}0-9a-zà-öø-ÿ]{1,63}$/iu', + 2 => '/^[\x{002d}0-9a-zāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıĵķĺļľŀłńņňʼnŋōŏőœŕŗřśŝšťŧũūŭůűųŵŷźżž]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-zșț]{1,63}$/iu'), + 'SJ' => array(1 => '/^[\x{002d}0-9a-zàáä-éêñ-ôöøüčđńŋšŧž]{1,63}$/iu'), + 'TH' => array(1 => '/^[\x{002d}0-9a-z\x{0E01}-\x{0E3A}\x{0E40}-\x{0E4D}\x{0E50}-\x{0E59}]{1,63}$/iu'), + 'TM' => array(1 => '/^[\x{002d}0-9a-zà-öø-ÿāăąćĉċčďđēėęěĝġģĥħīįĵķĺļľŀłńņňŋőœŕŗřśŝşšţťŧūŭůűųŵŷźżž]{1,63}$/iu'), + 'TW' => 'Hostname/Cn.php', + 'TR' => array(1 => '/^[\x{002d}0-9a-zğıüşöç]{1,63}$/iu'), + 'UA' => array(1 => '/^[\x{002d}0-9a-zабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљњћќѝўџґӂʼ]{1,63}$/iu'), + 'VE' => array(1 => '/^[\x{002d}0-9a-záéíóúüñ]{1,63}$/iu'), + 'VN' => array(1 => '/^[ÀÁÂÃÈÉÊÌÍÒÓÔÕÙÚÝàáâãèéêìíòóôõùúýĂăĐđĨĩŨũƠơƯư\x{1EA0}-\x{1EF9}]{1,63}$/iu'), + 'мон' => array(1 => '/^[\x{002d}0-9\x{0430}-\x{044F}]{1,63}$/iu'), + 'срб' => array(1 => '/^[\x{002d}0-9а-ик-шђјљњћџ]{1,63}$/iu'), + 'сайт' => array(1 => '/^[\x{002d}0-9а-яёіїѝйўґг]{1,63}$/iu'), + 'онлайн' => array(1 => '/^[\x{002d}0-9а-яёіїѝйўґг]{1,63}$/iu'), + '中国' => 'Hostname/Cn.php', + '中國' => 'Hostname/Cn.php', + 'ලංකා' => array(1 => '/^[\x{0d80}-\x{0dff}]{1,63}$/iu'), + '香港' => 'Hostname/Cn.php', + '台湾' => 'Hostname/Cn.php', + '台灣' => 'Hostname/Cn.php', + 'امارات' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + 'الاردن' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + 'السعودية' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + 'ไทย' => array(1 => '/^[\x{002d}0-9a-z\x{0E01}-\x{0E3A}\x{0E40}-\x{0E4D}\x{0E50}-\x{0E59}]{1,63}$/iu'), + 'рф' => array(1 => '/^[\x{002d}0-9а-яё]{1,63}$/iu'), + 'تونس' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + 'مصر' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + 'இலங்கை' => array(1 => '/^[\x{0b80}-\x{0bff}]{1,63}$/iu'), + 'فلسطين' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + 'شبكة' => array(1 => '/^[\x{0621}-\x{0624}\x{0626}-\x{063A}\x{0641}\x{0642}\x{0644}-\x{0648}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06CC}\x{06F0}-\x{06F9}]{1,30}$/iu'), + ); + + protected $_idnLength = array( + 'BIZ' => array(5 => 17, 11 => 15, 12 => 20), + 'CN' => array(1 => 20), + 'COM' => array(3 => 17, 5 => 20), + 'HK' => array(1 => 15), + 'INFO'=> array(4 => 17), + 'KR' => array(1 => 17), + 'NET' => array(3 => 17, 5 => 20), + 'ORG' => array(6 => 17), + 'TW' => array(1 => 20), + 'ایران' => array(1 => 30), + '中国' => array(1 => 20), + '公司' => array(1 => 20), + '网络' => array(1 => 20), + ); + + protected $_options = array( + 'allow' => self::ALLOW_DNS, + 'idn' => true, + 'tld' => true, + 'ip' => null + ); + + /** + * Sets validator options + * + * @see http://www.iana.org/cctld/specifications-policies-cctlds-01apr02.htm Technical Specifications for ccTLDs + * @param array $options Validator options + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['allow'] = array_shift($options); + if (!empty($options)) { + $temp['idn'] = array_shift($options); + } + + if (!empty($options)) { + $temp['tld'] = array_shift($options); + } + + if (!empty($options)) { + $temp['ip'] = array_shift($options); + } + + $options = $temp; + } + + $options += $this->_options; + $this->setOptions($options); + } + + /** + * Returns all set options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets the options for this validator + * + * @param array $options + * @return Zend_Validate_Hostname + */ + public function setOptions($options) + { + if (array_key_exists('allow', $options)) { + $this->setAllow($options['allow']); + } + + if (array_key_exists('idn', $options)) { + $this->setValidateIdn($options['idn']); + } + + if (array_key_exists('tld', $options)) { + $this->setValidateTld($options['tld']); + } + + if (array_key_exists('ip', $options)) { + $this->setIpValidator($options['ip']); + } + + return $this; + } + + /** + * Returns the set ip validator + * + * @return Zend_Validate_Ip + */ + public function getIpValidator() + { + return $this->_options['ip']; + } + + /** + * @param Zend_Validate_Ip $ipValidator OPTIONAL + * @return Zend_Validate_Hostname + */ + public function setIpValidator(Zend_Validate_Ip $ipValidator = null) + { + if ($ipValidator === null) { + $ipValidator = new Zend_Validate_Ip(); + } + + $this->_options['ip'] = $ipValidator; + return $this; + } + + /** + * Returns the allow option + * + * @return integer + */ + public function getAllow() + { + return $this->_options['allow']; + } + + /** + * Sets the allow option + * + * @param integer $allow + * @return Zend_Validate_Hostname Provides a fluent interface + */ + public function setAllow($allow) + { + $this->_options['allow'] = $allow; + return $this; + } + + /** + * Returns the set idn option + * + * @return boolean + */ + public function getValidateIdn() + { + return $this->_options['idn']; + } + + /** + * Set whether IDN domains are validated + * + * This only applies when DNS hostnames are validated + * + * @param boolean $allowed Set allowed to true to validate IDNs, and false to not validate them + * @return $this + */ + public function setValidateIdn ($allowed) + { + $this->_options['idn'] = (bool) $allowed; + return $this; + } + + /** + * Returns the set tld option + * + * @return boolean + */ + public function getValidateTld() + { + return $this->_options['tld']; + } + + /** + * Set whether the TLD element of a hostname is validated + * + * This only applies when DNS hostnames are validated + * + * @param boolean $allowed Set allowed to true to validate TLDs, and false to not validate them + * @return $this + */ + public function setValidateTld ($allowed) + { + $this->_options['tld'] = (bool) $allowed; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the $value is a valid hostname with respect to the current allow option + * + * @param string $value + * @throws Zend_Validate_Exception if a fatal error occurs for validation process + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + // Check input against IP address schema + if (preg_match('/^[0-9a-f:.]*$/i', $value) && + $this->_options['ip']->setTranslator($this->getTranslator())->isValid($value)) { + if (!($this->_options['allow'] & self::ALLOW_IP)) { + $this->_error(self::IP_ADDRESS_NOT_ALLOWED); + return false; + } else { + return true; + } + } + + // RFC3986 3.2.2 states: + // + // The rightmost domain label of a fully qualified domain name + // in DNS may be followed by a single "." and should be if it is + // necessary to distinguish between the complete domain name and + // some local domain. + // + // (see ZF-6363) + + // Local hostnames are allowed to be partitial (ending '.') + if ($this->_options['allow'] & self::ALLOW_LOCAL) { + if (substr($value, -1) === '.') { + $value = substr($value, 0, -1); + if (substr($value, -1) === '.') { + // Empty hostnames (ending '..') are not allowed + $this->_error(self::INVALID_LOCAL_NAME); + return false; + } + } + } + + $domainParts = explode('.', $value); + + // Prevent partitial IP V4 adresses (ending '.') + if ((count($domainParts) == 4) && preg_match('/^[0-9.a-e:.]*$/i', $value) && + $this->_options['ip']->setTranslator($this->getTranslator())->isValid($value)) { + $this->_error(self::INVALID_LOCAL_NAME); + } + + // Check input against DNS hostname schema + if ((count($domainParts) > 1) && (strlen($value) >= 4) && (strlen($value) <= 254)) { + $status = false; + + $origenc = PHP_VERSION_ID < 50600 + ? iconv_get_encoding('internal_encoding') + : ini_get('default_charset'); + if (PHP_VERSION_ID < 50600) { + iconv_set_encoding('internal_encoding', 'UTF-8'); + } else { + ini_set('default_charset', 'UTF-8'); + } + do { + // First check TLD + $matches = array(); + if (preg_match('/([^.]{2,63})$/iu', end($domainParts), $matches) + || (array_key_exists(end($domainParts), $this->_validIdns))) { + reset($domainParts); + + // Hostname characters are: *(label dot)(label dot label); max 254 chars + // label: id-prefix [*ldh{61} id-prefix]; max 63 chars + // id-prefix: alpha / digit + // ldh: alpha / digit / dash + + // Match TLD against known list + $this->_tld = $matches[1]; + if ($this->_options['tld']) { + if (!in_array(strtolower($this->_tld), $this->_validTlds) + && !in_array($this->_tld, $this->_validTlds)) { + $this->_error(self::UNKNOWN_TLD); + $status = false; + break; + } + // We have already validated that the TLD is fine. We don't want it to go through the below + // checks as new UTF-8 TLDs will incorrectly fail if there is no IDN regex for it. + array_pop($domainParts); + } + + /** + * Match against IDN hostnames + * Note: Keep label regex short to avoid issues with long patterns when matching IDN hostnames + * @see Zend_Validate_Hostname_Interface + */ + $regexChars = array(0 => '/^[a-z0-9\x2d]{1,63}$/i'); + if ($this->_options['idn'] && isset($this->_validIdns[strtoupper($this->_tld)])) { + if (is_string($this->_validIdns[strtoupper($this->_tld)])) { + $regexChars += include($this->_validIdns[strtoupper($this->_tld)]); + } else { + $regexChars += $this->_validIdns[strtoupper($this->_tld)]; + } + } + + // Check each hostname part + $check = 0; + foreach ($domainParts as $domainPart) { + // If some domain part is empty (i.e. zend..com), it's invalid + if (empty($domainPart) && $domainPart !== '0') { + $this->_error(self::INVALID_HOSTNAME); + return false; + } + + // Decode Punycode domainnames to IDN + if (strpos($domainPart, 'xn--') === 0) { + $domainPart = $this->decodePunycode(substr($domainPart, 4)); + if ($domainPart === false) { + return false; + } + } + + // Check dash (-) does not start, end or appear in 3rd and 4th positions + if ((strpos($domainPart, '-') === 0) + || ((strlen($domainPart) > 2) && (strpos($domainPart, '-', 2) == 2) && (strpos($domainPart, '-', 3) == 3)) + || (strpos($domainPart, '-') === (strlen($domainPart) - 1))) { + $this->_error(self::INVALID_DASH); + $status = false; + break 2; + } + + // Check each domain part + $checked = false; + foreach($regexChars as $regexKey => $regexChar) { + $status = preg_match($regexChar, $domainPart); + if ($status > 0) { + $length = 63; + if (array_key_exists(strtoupper($this->_tld), $this->_idnLength) + && (array_key_exists($regexKey, $this->_idnLength[strtoupper($this->_tld)]))) { + $length = $this->_idnLength[strtoupper($this->_tld)]; + } + + if (iconv_strlen($domainPart, 'UTF-8') > $length) { + $this->_error(self::INVALID_HOSTNAME); + } else { + $checked = true; + break; + } + } + } + + if ($checked) { + ++$check; + } + } + + // If one of the labels doesn't match, the hostname is invalid + if ($check !== count($domainParts)) { + $this->_error(self::INVALID_HOSTNAME_SCHEMA); + $status = false; + } + } else { + // Hostname not long enough + $this->_error(self::UNDECIPHERABLE_TLD); + $status = false; + } + } while (false); + + if (PHP_VERSION_ID < 50600) { + iconv_set_encoding('internal_encoding', $origenc); + } else { + ini_set('default_charset', $origenc); + } + // If the input passes as an Internet domain name, and domain names are allowed, then the hostname + // passes validation + if ($status && ($this->_options['allow'] & self::ALLOW_DNS)) { + return true; + } + } else if ($this->_options['allow'] & self::ALLOW_DNS) { + $this->_error(self::INVALID_HOSTNAME); + } + + // Check for URI Syntax (RFC3986) + if ($this->_options['allow'] & self::ALLOW_URI) { + if (preg_match("/^([a-zA-Z0-9-._~!$&\'()*+,;=]|%[[:xdigit:]]{2}){1,254}$/i", $value)) { + return true; + } else { + $this->_error(self::INVALID_URI); + } + } + + // Check input against local network name schema; last chance to pass validation + $regexLocal = '/^(([a-zA-Z0-9\x2d]{1,63}\x2e)*[a-zA-Z0-9\x2d]{1,63}[\x2e]{0,1}){1,254}$/'; + $status = @preg_match($regexLocal, $value); + + // If the input passes as a local network name, and local network names are allowed, then the + // hostname passes validation + $allowLocal = $this->_options['allow'] & self::ALLOW_LOCAL; + if ($status && $allowLocal) { + return true; + } + + // If the input does not pass as a local network name, add a message + if (!$status) { + $this->_error(self::INVALID_LOCAL_NAME); + } + + // If local network names are not allowed, add a message + if ($status && !$allowLocal) { + $this->_error(self::LOCAL_NAME_NOT_ALLOWED); + } + + return false; + } + + /** + * Decodes a punycode encoded string to it's original utf8 string + * In case of a decoding failure the original string is returned + * + * @param string $encoded Punycode encoded string to decode + * @return string + */ + protected function decodePunycode($encoded) + { + if (!preg_match('/^[a-z0-9-]+$/i', $encoded)) { + // no punycode encoded string + $this->_error(self::CANNOT_DECODE_PUNYCODE); + return false; + } + + $decoded = array(); + $separator = strrpos($encoded, '-'); + if ($separator > 0) { + for ($x = 0; $x < $separator; ++$x) { + // prepare decoding matrix + $decoded[] = ord($encoded[$x]); + } + } + + $lengthd = count($decoded); + $lengthe = strlen($encoded); + + // decoding + $init = true; + $base = 72; + $index = 0; + $char = 0x80; + + for ($indexe = ($separator) ? ($separator + 1) : 0; $indexe < $lengthe; ++$lengthd) { + for ($old_index = $index, $pos = 1, $key = 36; 1 ; $key += 36) { + $hex = ord($encoded[$indexe++]); + $digit = ($hex - 48 < 10) ? $hex - 22 + : (($hex - 65 < 26) ? $hex - 65 + : (($hex - 97 < 26) ? $hex - 97 + : 36)); + + $index += $digit * $pos; + $tag = ($key <= $base) ? 1 : (($key >= $base + 26) ? 26 : ($key - $base)); + if ($digit < $tag) { + break; + } + + $pos = (int) ($pos * (36 - $tag)); + } + + $delta = intval($init ? (($index - $old_index) / 700) : (($index - $old_index) / 2)); + $delta += intval($delta / ($lengthd + 1)); + for ($key = 0; $delta > 910 / 2; $key += 36) { + $delta = intval($delta / 35); + } + + $base = intval($key + 36 * $delta / ($delta + 38)); + $init = false; + $char += (int) ($index / ($lengthd + 1)); + $index %= ($lengthd + 1); + if ($lengthd > 0) { + for ($i = $lengthd; $i > $index; $i--) { + $decoded[$i] = $decoded[($i - 1)]; + } + } + + $decoded[$index++] = $char; + } + + // convert decoded ucs4 to utf8 string + foreach ($decoded as $key => $value) { + if ($value < 128) { + $decoded[$key] = chr($value); + } elseif ($value < (1 << 11)) { + $decoded[$key] = chr(192 + ($value >> 6)); + $decoded[$key] .= chr(128 + ($value & 63)); + } elseif ($value < (1 << 16)) { + $decoded[$key] = chr(224 + ($value >> 12)); + $decoded[$key] .= chr(128 + (($value >> 6) & 63)); + $decoded[$key] .= chr(128 + ($value & 63)); + } elseif ($value < (1 << 21)) { + $decoded[$key] = chr(240 + ($value >> 18)); + $decoded[$key] .= chr(128 + (($value >> 12) & 63)); + $decoded[$key] .= chr(128 + (($value >> 6) & 63)); + $decoded[$key] .= chr(128 + ($value & 63)); + } else { + $this->_error(self::CANNOT_DECODE_PUNYCODE); + return false; + } + } + + return implode($decoded); + } +} diff --git a/library/Zend/Validate/Hostname/Biz.php b/library/Zend/Validate/Hostname/Biz.php new file mode 100755 index 000000000..eb1bea22d --- /dev/null +++ b/library/Zend/Validate/Hostname/Biz.php @@ -0,0 +1,2917 @@ + '/^[\x{002d}0-9a-zäåæéöøü]{1,63}$/iu', + 2 => '/^[\x{002d}0-9a-záéíñóúü]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-záéíóöúüőű]{1,63}$/iu', + 4 => '/^[\x{002d}0-9a-záæéíðóöúýþ]{1,63}$/iu', + 5 => '/^[\x{AC00}-\x{D7A3}]{1,17}$/iu', + 6 => '/^[\x{002d}0-9a-ząčėęįšūųž]{1,63}$/iu', + 7 => '/^[\x{002d}0-9a-zāčēģīķļņōŗšūž]{1,63}$/iu', + 8 => '/^[\x{002d}0-9a-zàáä-éêñ-ôöøüčđńŋšŧž]{1,63}$/iu', + 9 => '/^[\x{002d}0-9a-zóąćęłńśźż]{1,63}$/iu', + 10 => '/^[\x{002d}0-9a-záàâãçéêíóôõú]{1,63}$/iu', + 11 => '/^[\x{002d}0-9a-z\x{3005}-\x{3007}\x{3041}-\x{3093}\x{309D}\x{309E}\x{30A1}-\x{30F6}\x{30FC}' . +'\x{30FD}\x{30FE}\x{4E00}\x{4E01}\x{4E03}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' . +'\x{4E0B}\x{4E0D}\x{4E0E}\x{4E10}\x{4E11}\x{4E14}\x{4E15}\x{4E16}\x{4E17}' . +'\x{4E18}\x{4E19}\x{4E1E}\x{4E21}\x{4E26}\x{4E2A}\x{4E2D}\x{4E31}\x{4E32}' . +'\x{4E36}\x{4E38}\x{4E39}\x{4E3B}\x{4E3C}\x{4E3F}\x{4E42}\x{4E43}\x{4E45}' . +'\x{4E4B}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E55}\x{4E56}\x{4E57}\x{4E58}\x{4E59}' . +'\x{4E5D}\x{4E5E}\x{4E5F}\x{4E62}\x{4E71}\x{4E73}\x{4E7E}\x{4E80}\x{4E82}' . +'\x{4E85}\x{4E86}\x{4E88}\x{4E89}\x{4E8A}\x{4E8B}\x{4E8C}\x{4E8E}\x{4E91}' . +'\x{4E92}\x{4E94}\x{4E95}\x{4E98}\x{4E99}\x{4E9B}\x{4E9C}\x{4E9E}\x{4E9F}' . +'\x{4EA0}\x{4EA1}\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA8}\x{4EAB}\x{4EAC}' . +'\x{4EAD}\x{4EAE}\x{4EB0}\x{4EB3}\x{4EB6}\x{4EBA}\x{4EC0}\x{4EC1}\x{4EC2}' . +'\x{4EC4}\x{4EC6}\x{4EC7}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED4}' . +'\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE3}' . +'\x{4EE4}\x{4EE5}\x{4EED}\x{4EEE}\x{4EF0}\x{4EF2}\x{4EF6}\x{4EF7}\x{4EFB}' . +'\x{4F01}\x{4F09}\x{4F0A}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}\x{4F11}\x{4F1A}' . +'\x{4F1C}\x{4F1D}\x{4F2F}\x{4F30}\x{4F34}\x{4F36}\x{4F38}\x{4F3A}\x{4F3C}' . +'\x{4F3D}\x{4F43}\x{4F46}\x{4F47}\x{4F4D}\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}' . +'\x{4F53}\x{4F55}\x{4F57}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}' . +'\x{4F69}\x{4F6F}\x{4F70}\x{4F73}\x{4F75}\x{4F76}\x{4F7B}\x{4F7C}\x{4F7F}' . +'\x{4F83}\x{4F86}\x{4F88}\x{4F8B}\x{4F8D}\x{4F8F}\x{4F91}\x{4F96}\x{4F98}' . +'\x{4F9B}\x{4F9D}\x{4FA0}\x{4FA1}\x{4FAB}\x{4FAD}\x{4FAE}\x{4FAF}\x{4FB5}' . +'\x{4FB6}\x{4FBF}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FCA}\x{4FCE}\x{4FD0}\x{4FD1}' . +'\x{4FD4}\x{4FD7}\x{4FD8}\x{4FDA}\x{4FDB}\x{4FDD}\x{4FDF}\x{4FE1}\x{4FE3}' . +'\x{4FE4}\x{4FE5}\x{4FEE}\x{4FEF}\x{4FF3}\x{4FF5}\x{4FF6}\x{4FF8}\x{4FFA}' . +'\x{4FFE}\x{5005}\x{5006}\x{5009}\x{500B}\x{500D}\x{500F}\x{5011}\x{5012}' . +'\x{5014}\x{5016}\x{5019}\x{501A}\x{501F}\x{5021}\x{5023}\x{5024}\x{5025}' . +'\x{5026}\x{5028}\x{5029}\x{502A}\x{502B}\x{502C}\x{502D}\x{5036}\x{5039}' . +'\x{5043}\x{5047}\x{5048}\x{5049}\x{504F}\x{5050}\x{5055}\x{5056}\x{505A}' . +'\x{505C}\x{5065}\x{506C}\x{5072}\x{5074}\x{5075}\x{5076}\x{5078}\x{507D}' . +'\x{5080}\x{5085}\x{508D}\x{5091}\x{5098}\x{5099}\x{509A}\x{50AC}\x{50AD}' . +'\x{50B2}\x{50B3}\x{50B4}\x{50B5}\x{50B7}\x{50BE}\x{50C2}\x{50C5}\x{50C9}' . +'\x{50CA}\x{50CD}\x{50CF}\x{50D1}\x{50D5}\x{50D6}\x{50DA}\x{50DE}\x{50E3}' . +'\x{50E5}\x{50E7}\x{50ED}\x{50EE}\x{50F5}\x{50F9}\x{50FB}\x{5100}\x{5101}' . +'\x{5102}\x{5104}\x{5109}\x{5112}\x{5114}\x{5115}\x{5116}\x{5118}\x{511A}' . +'\x{511F}\x{5121}\x{512A}\x{5132}\x{5137}\x{513A}\x{513B}\x{513C}\x{513F}' . +'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' . +'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5152}\x{5154}\x{515A}\x{515C}' . +'\x{5162}\x{5165}\x{5168}\x{5169}\x{516A}\x{516B}\x{516C}\x{516D}\x{516E}' . +'\x{5171}\x{5175}\x{5176}\x{5177}\x{5178}\x{517C}\x{5180}\x{5182}\x{5185}' . +'\x{5186}\x{5189}\x{518A}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}' . +'\x{5193}\x{5195}\x{5196}\x{5197}\x{5199}\x{51A0}\x{51A2}\x{51A4}\x{51A5}' . +'\x{51A6}\x{51A8}\x{51A9}\x{51AA}\x{51AB}\x{51AC}\x{51B0}\x{51B1}\x{51B2}' . +'\x{51B3}\x{51B4}\x{51B5}\x{51B6}\x{51B7}\x{51BD}\x{51C4}\x{51C5}\x{51C6}' . +'\x{51C9}\x{51CB}\x{51CC}\x{51CD}\x{51D6}\x{51DB}\x{51DC}\x{51DD}\x{51E0}' . +'\x{51E1}\x{51E6}\x{51E7}\x{51E9}\x{51EA}\x{51ED}\x{51F0}\x{51F1}\x{51F5}' . +'\x{51F6}\x{51F8}\x{51F9}\x{51FA}\x{51FD}\x{51FE}\x{5200}\x{5203}\x{5204}' . +'\x{5206}\x{5207}\x{5208}\x{520A}\x{520B}\x{520E}\x{5211}\x{5214}\x{5217}' . +'\x{521D}\x{5224}\x{5225}\x{5227}\x{5229}\x{522A}\x{522E}\x{5230}\x{5233}' . +'\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{5243}\x{5244}\x{5247}' . +'\x{524A}\x{524B}\x{524C}\x{524D}\x{524F}\x{5254}\x{5256}\x{525B}\x{525E}' . +'\x{5263}\x{5264}\x{5265}\x{5269}\x{526A}\x{526F}\x{5270}\x{5271}\x{5272}' . +'\x{5273}\x{5274}\x{5275}\x{527D}\x{527F}\x{5283}\x{5287}\x{5288}\x{5289}' . +'\x{528D}\x{5291}\x{5292}\x{5294}\x{529B}\x{529F}\x{52A0}\x{52A3}\x{52A9}' . +'\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52B1}\x{52B4}\x{52B5}\x{52B9}\x{52BC}' . +'\x{52BE}\x{52C1}\x{52C3}\x{52C5}\x{52C7}\x{52C9}\x{52CD}\x{52D2}\x{52D5}' . +'\x{52D7}\x{52D8}\x{52D9}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}' . +'\x{52E4}\x{52E6}\x{52E7}\x{52F2}\x{52F3}\x{52F5}\x{52F8}\x{52F9}\x{52FA}' . +'\x{52FE}\x{52FF}\x{5301}\x{5302}\x{5305}\x{5306}\x{5308}\x{530D}\x{530F}' . +'\x{5310}\x{5315}\x{5316}\x{5317}\x{5319}\x{531A}\x{531D}\x{5320}\x{5321}' . +'\x{5323}\x{532A}\x{532F}\x{5331}\x{5333}\x{5338}\x{5339}\x{533A}\x{533B}' . +'\x{533F}\x{5340}\x{5341}\x{5343}\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}' . +'\x{534A}\x{534D}\x{5351}\x{5352}\x{5353}\x{5354}\x{5357}\x{5358}\x{535A}' . +'\x{535C}\x{535E}\x{5360}\x{5366}\x{5369}\x{536E}\x{536F}\x{5370}\x{5371}' . +'\x{5373}\x{5374}\x{5375}\x{5377}\x{5378}\x{537B}\x{537F}\x{5382}\x{5384}' . +'\x{5396}\x{5398}\x{539A}\x{539F}\x{53A0}\x{53A5}\x{53A6}\x{53A8}\x{53A9}' . +'\x{53AD}\x{53AE}\x{53B0}\x{53B3}\x{53B6}\x{53BB}\x{53C2}\x{53C3}\x{53C8}' . +'\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}\x{53D4}\x{53D6}\x{53D7}' . +'\x{53D9}\x{53DB}\x{53DF}\x{53E1}\x{53E2}\x{53E3}\x{53E4}\x{53E5}\x{53E8}' . +'\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}\x{53EF}\x{53F0}\x{53F1}' . +'\x{53F2}\x{53F3}\x{53F6}\x{53F7}\x{53F8}\x{53FA}\x{5401}\x{5403}\x{5404}' . +'\x{5408}\x{5409}\x{540A}\x{540B}\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}' . +'\x{5411}\x{541B}\x{541D}\x{541F}\x{5420}\x{5426}\x{5429}\x{542B}\x{542C}' . +'\x{542D}\x{542E}\x{5436}\x{5438}\x{5439}\x{543B}\x{543C}\x{543D}\x{543E}' . +'\x{5440}\x{5442}\x{5446}\x{5448}\x{5449}\x{544A}\x{544E}\x{5451}\x{545F}' . +'\x{5468}\x{546A}\x{5470}\x{5471}\x{5473}\x{5475}\x{5476}\x{5477}\x{547B}' . +'\x{547C}\x{547D}\x{5480}\x{5484}\x{5486}\x{548B}\x{548C}\x{548E}\x{548F}' . +'\x{5490}\x{5492}\x{54A2}\x{54A4}\x{54A5}\x{54A8}\x{54AB}\x{54AC}\x{54AF}' . +'\x{54B2}\x{54B3}\x{54B8}\x{54BC}\x{54BD}\x{54BE}\x{54C0}\x{54C1}\x{54C2}' . +'\x{54C4}\x{54C7}\x{54C8}\x{54C9}\x{54D8}\x{54E1}\x{54E2}\x{54E5}\x{54E6}' . +'\x{54E8}\x{54E9}\x{54ED}\x{54EE}\x{54F2}\x{54FA}\x{54FD}\x{5504}\x{5506}' . +'\x{5507}\x{550F}\x{5510}\x{5514}\x{5516}\x{552E}\x{552F}\x{5531}\x{5533}' . +'\x{5538}\x{5539}\x{553E}\x{5540}\x{5544}\x{5545}\x{5546}\x{554C}\x{554F}' . +'\x{5553}\x{5556}\x{5557}\x{555C}\x{555D}\x{5563}\x{557B}\x{557C}\x{557E}' . +'\x{5580}\x{5583}\x{5584}\x{5587}\x{5589}\x{558A}\x{558B}\x{5598}\x{5599}' . +'\x{559A}\x{559C}\x{559D}\x{559E}\x{559F}\x{55A7}\x{55A8}\x{55A9}\x{55AA}' . +'\x{55AB}\x{55AC}\x{55AE}\x{55B0}\x{55B6}\x{55C4}\x{55C5}\x{55C7}\x{55D4}' . +'\x{55DA}\x{55DC}\x{55DF}\x{55E3}\x{55E4}\x{55F7}\x{55F9}\x{55FD}\x{55FE}' . +'\x{5606}\x{5609}\x{5614}\x{5616}\x{5617}\x{5618}\x{561B}\x{5629}\x{562F}' . +'\x{5631}\x{5632}\x{5634}\x{5636}\x{5638}\x{5642}\x{564C}\x{564E}\x{5650}' . +'\x{565B}\x{5664}\x{5668}\x{566A}\x{566B}\x{566C}\x{5674}\x{5678}\x{567A}' . +'\x{5680}\x{5686}\x{5687}\x{568A}\x{568F}\x{5694}\x{56A0}\x{56A2}\x{56A5}' . +'\x{56AE}\x{56B4}\x{56B6}\x{56BC}\x{56C0}\x{56C1}\x{56C2}\x{56C3}\x{56C8}' . +'\x{56CE}\x{56D1}\x{56D3}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DE}\x{56E0}' . +'\x{56E3}\x{56EE}\x{56F0}\x{56F2}\x{56F3}\x{56F9}\x{56FA}\x{56FD}\x{56FF}' . +'\x{5700}\x{5703}\x{5704}\x{5708}\x{5709}\x{570B}\x{570D}\x{570F}\x{5712}' . +'\x{5713}\x{5716}\x{5718}\x{571C}\x{571F}\x{5726}\x{5727}\x{5728}\x{572D}' . +'\x{5730}\x{5737}\x{5738}\x{573B}\x{5740}\x{5742}\x{5747}\x{574A}\x{574E}' . +'\x{574F}\x{5750}\x{5751}\x{5761}\x{5764}\x{5766}\x{5769}\x{576A}\x{577F}' . +'\x{5782}\x{5788}\x{5789}\x{578B}\x{5793}\x{57A0}\x{57A2}\x{57A3}\x{57A4}' . +'\x{57AA}\x{57B0}\x{57B3}\x{57C0}\x{57C3}\x{57C6}\x{57CB}\x{57CE}\x{57D2}' . +'\x{57D3}\x{57D4}\x{57D6}\x{57DC}\x{57DF}\x{57E0}\x{57E3}\x{57F4}\x{57F7}' . +'\x{57F9}\x{57FA}\x{57FC}\x{5800}\x{5802}\x{5805}\x{5806}\x{580A}\x{580B}' . +'\x{5815}\x{5819}\x{581D}\x{5821}\x{5824}\x{582A}\x{582F}\x{5830}\x{5831}' . +'\x{5834}\x{5835}\x{583A}\x{583D}\x{5840}\x{5841}\x{584A}\x{584B}\x{5851}' . +'\x{5852}\x{5854}\x{5857}\x{5858}\x{5859}\x{585A}\x{585E}\x{5862}\x{5869}' . +'\x{586B}\x{5870}\x{5872}\x{5875}\x{5879}\x{587E}\x{5883}\x{5885}\x{5893}' . +'\x{5897}\x{589C}\x{589F}\x{58A8}\x{58AB}\x{58AE}\x{58B3}\x{58B8}\x{58B9}' . +'\x{58BA}\x{58BB}\x{58BE}\x{58C1}\x{58C5}\x{58C7}\x{58CA}\x{58CC}\x{58D1}' . +'\x{58D3}\x{58D5}\x{58D7}\x{58D8}\x{58D9}\x{58DC}\x{58DE}\x{58DF}\x{58E4}' . +'\x{58E5}\x{58EB}\x{58EC}\x{58EE}\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F7}' . +'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{5902}\x{5909}\x{590A}\x{590F}' . +'\x{5910}\x{5915}\x{5916}\x{5918}\x{5919}\x{591A}\x{591B}\x{591C}\x{5922}' . +'\x{5925}\x{5927}\x{5929}\x{592A}\x{592B}\x{592C}\x{592D}\x{592E}\x{5931}' . +'\x{5932}\x{5937}\x{5938}\x{593E}\x{5944}\x{5947}\x{5948}\x{5949}\x{594E}' . +'\x{594F}\x{5950}\x{5951}\x{5954}\x{5955}\x{5957}\x{5958}\x{595A}\x{5960}' . +'\x{5962}\x{5965}\x{5967}\x{5968}\x{5969}\x{596A}\x{596C}\x{596E}\x{5973}' . +'\x{5974}\x{5978}\x{597D}\x{5981}\x{5982}\x{5983}\x{5984}\x{598A}\x{598D}' . +'\x{5993}\x{5996}\x{5999}\x{599B}\x{599D}\x{59A3}\x{59A5}\x{59A8}\x{59AC}' . +'\x{59B2}\x{59B9}\x{59BB}\x{59BE}\x{59C6}\x{59C9}\x{59CB}\x{59D0}\x{59D1}' . +'\x{59D3}\x{59D4}\x{59D9}\x{59DA}\x{59DC}\x{59E5}\x{59E6}\x{59E8}\x{59EA}' . +'\x{59EB}\x{59F6}\x{59FB}\x{59FF}\x{5A01}\x{5A03}\x{5A09}\x{5A11}\x{5A18}' . +'\x{5A1A}\x{5A1C}\x{5A1F}\x{5A20}\x{5A25}\x{5A29}\x{5A2F}\x{5A35}\x{5A36}' . +'\x{5A3C}\x{5A40}\x{5A41}\x{5A46}\x{5A49}\x{5A5A}\x{5A62}\x{5A66}\x{5A6A}' . +'\x{5A6C}\x{5A7F}\x{5A92}\x{5A9A}\x{5A9B}\x{5ABC}\x{5ABD}\x{5ABE}\x{5AC1}' . +'\x{5AC2}\x{5AC9}\x{5ACB}\x{5ACC}\x{5AD0}\x{5AD6}\x{5AD7}\x{5AE1}\x{5AE3}' . +'\x{5AE6}\x{5AE9}\x{5AFA}\x{5AFB}\x{5B09}\x{5B0B}\x{5B0C}\x{5B16}\x{5B22}' . +'\x{5B2A}\x{5B2C}\x{5B30}\x{5B32}\x{5B36}\x{5B3E}\x{5B40}\x{5B43}\x{5B45}' . +'\x{5B50}\x{5B51}\x{5B54}\x{5B55}\x{5B57}\x{5B58}\x{5B5A}\x{5B5B}\x{5B5C}' . +'\x{5B5D}\x{5B5F}\x{5B63}\x{5B64}\x{5B65}\x{5B66}\x{5B69}\x{5B6B}\x{5B70}' . +'\x{5B71}\x{5B73}\x{5B75}\x{5B78}\x{5B7A}\x{5B80}\x{5B83}\x{5B85}\x{5B87}' . +'\x{5B88}\x{5B89}\x{5B8B}\x{5B8C}\x{5B8D}\x{5B8F}\x{5B95}\x{5B97}\x{5B98}' . +'\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9F}\x{5BA2}\x{5BA3}\x{5BA4}' . +'\x{5BA5}\x{5BA6}\x{5BAE}\x{5BB0}\x{5BB3}\x{5BB4}\x{5BB5}\x{5BB6}\x{5BB8}' . +'\x{5BB9}\x{5BBF}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BC9}' . +'\x{5BCC}\x{5BD0}\x{5BD2}\x{5BD3}\x{5BD4}\x{5BDB}\x{5BDD}\x{5BDE}\x{5BDF}' . +'\x{5BE1}\x{5BE2}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}\x{5BE8}\x{5BE9}\x{5BEB}' . +'\x{5BEE}\x{5BF0}\x{5BF3}\x{5BF5}\x{5BF6}\x{5BF8}\x{5BFA}\x{5BFE}\x{5BFF}' . +'\x{5C01}\x{5C02}\x{5C04}\x{5C05}\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}' . +'\x{5C0B}\x{5C0D}\x{5C0E}\x{5C0F}\x{5C11}\x{5C13}\x{5C16}\x{5C1A}\x{5C20}' . +'\x{5C22}\x{5C24}\x{5C28}\x{5C2D}\x{5C31}\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}' . +'\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}\x{5C41}\x{5C45}\x{5C46}\x{5C48}' . +'\x{5C4A}\x{5C4B}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C53}\x{5C55}' . +'\x{5C5E}\x{5C60}\x{5C61}\x{5C64}\x{5C65}\x{5C6C}\x{5C6E}\x{5C6F}\x{5C71}' . +'\x{5C76}\x{5C79}\x{5C8C}\x{5C90}\x{5C91}\x{5C94}\x{5CA1}\x{5CA8}\x{5CA9}' . +'\x{5CAB}\x{5CAC}\x{5CB1}\x{5CB3}\x{5CB6}\x{5CB7}\x{5CB8}\x{5CBB}\x{5CBC}' . +'\x{5CBE}\x{5CC5}\x{5CC7}\x{5CD9}\x{5CE0}\x{5CE1}\x{5CE8}\x{5CE9}\x{5CEA}' . +'\x{5CED}\x{5CEF}\x{5CF0}\x{5CF6}\x{5CFA}\x{5CFB}\x{5CFD}\x{5D07}\x{5D0B}' . +'\x{5D0E}\x{5D11}\x{5D14}\x{5D15}\x{5D16}\x{5D17}\x{5D18}\x{5D19}\x{5D1A}' . +'\x{5D1B}\x{5D1F}\x{5D22}\x{5D29}\x{5D4B}\x{5D4C}\x{5D4E}\x{5D50}\x{5D52}' . +'\x{5D5C}\x{5D69}\x{5D6C}\x{5D6F}\x{5D73}\x{5D76}\x{5D82}\x{5D84}\x{5D87}' . +'\x{5D8B}\x{5D8C}\x{5D90}\x{5D9D}\x{5DA2}\x{5DAC}\x{5DAE}\x{5DB7}\x{5DBA}' . +'\x{5DBC}\x{5DBD}\x{5DC9}\x{5DCC}\x{5DCD}\x{5DD2}\x{5DD3}\x{5DD6}\x{5DDB}' . +'\x{5DDD}\x{5DDE}\x{5DE1}\x{5DE3}\x{5DE5}\x{5DE6}\x{5DE7}\x{5DE8}\x{5DEB}' . +'\x{5DEE}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DFB}\x{5DFD}' . +'\x{5DFE}\x{5E02}\x{5E03}\x{5E06}\x{5E0B}\x{5E0C}\x{5E11}\x{5E16}\x{5E19}' . +'\x{5E1A}\x{5E1B}\x{5E1D}\x{5E25}\x{5E2B}\x{5E2D}\x{5E2F}\x{5E30}\x{5E33}' . +'\x{5E36}\x{5E37}\x{5E38}\x{5E3D}\x{5E40}\x{5E43}\x{5E44}\x{5E45}\x{5E47}' . +'\x{5E4C}\x{5E4E}\x{5E54}\x{5E55}\x{5E57}\x{5E5F}\x{5E61}\x{5E62}\x{5E63}' . +'\x{5E64}\x{5E72}\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E78}\x{5E79}\x{5E7A}' . +'\x{5E7B}\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E81}\x{5E83}\x{5E84}\x{5E87}' . +'\x{5E8A}\x{5E8F}\x{5E95}\x{5E96}\x{5E97}\x{5E9A}\x{5E9C}\x{5EA0}\x{5EA6}' . +'\x{5EA7}\x{5EAB}\x{5EAD}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EC1}\x{5EC2}' . +'\x{5EC3}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECF}\x{5ED0}\x{5ED3}\x{5ED6}\x{5EDA}' . +'\x{5EDB}\x{5EDD}\x{5EDF}\x{5EE0}\x{5EE1}\x{5EE2}\x{5EE3}\x{5EE8}\x{5EE9}' . +'\x{5EEC}\x{5EF0}\x{5EF1}\x{5EF3}\x{5EF4}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}' . +'\x{5EFB}\x{5EFC}\x{5EFE}\x{5EFF}\x{5F01}\x{5F03}\x{5F04}\x{5F09}\x{5F0A}' . +'\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F10}\x{5F11}\x{5F13}\x{5F14}\x{5F15}' . +'\x{5F16}\x{5F17}\x{5F18}\x{5F1B}\x{5F1F}\x{5F25}\x{5F26}\x{5F27}\x{5F29}' . +'\x{5F2D}\x{5F2F}\x{5F31}\x{5F35}\x{5F37}\x{5F38}\x{5F3C}\x{5F3E}\x{5F41}' . +'\x{5F48}\x{5F4A}\x{5F4C}\x{5F4E}\x{5F51}\x{5F53}\x{5F56}\x{5F57}\x{5F59}' . +'\x{5F5C}\x{5F5D}\x{5F61}\x{5F62}\x{5F66}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}' . +'\x{5F6D}\x{5F70}\x{5F71}\x{5F73}\x{5F77}\x{5F79}\x{5F7C}\x{5F7F}\x{5F80}' . +'\x{5F81}\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F87}\x{5F88}\x{5F8A}\x{5F8B}' . +'\x{5F8C}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F97}\x{5F98}\x{5F99}\x{5F9E}' . +'\x{5FA0}\x{5FA1}\x{5FA8}\x{5FA9}\x{5FAA}\x{5FAD}\x{5FAE}\x{5FB3}\x{5FB4}' . +'\x{5FB9}\x{5FBC}\x{5FBD}\x{5FC3}\x{5FC5}\x{5FCC}\x{5FCD}\x{5FD6}\x{5FD7}' . +'\x{5FD8}\x{5FD9}\x{5FDC}\x{5FDD}\x{5FE0}\x{5FE4}\x{5FEB}\x{5FF0}\x{5FF1}' . +'\x{5FF5}\x{5FF8}\x{5FFB}\x{5FFD}\x{5FFF}\x{600E}\x{600F}\x{6010}\x{6012}' . +'\x{6015}\x{6016}\x{6019}\x{601B}\x{601C}\x{601D}\x{6020}\x{6021}\x{6025}' . +'\x{6026}\x{6027}\x{6028}\x{6029}\x{602A}\x{602B}\x{602F}\x{6031}\x{603A}' . +'\x{6041}\x{6042}\x{6043}\x{6046}\x{604A}\x{604B}\x{604D}\x{6050}\x{6052}' . +'\x{6055}\x{6059}\x{605A}\x{605F}\x{6060}\x{6062}\x{6063}\x{6064}\x{6065}' . +'\x{6068}\x{6069}\x{606A}\x{606B}\x{606C}\x{606D}\x{606F}\x{6070}\x{6075}' . +'\x{6077}\x{6081}\x{6083}\x{6084}\x{6089}\x{608B}\x{608C}\x{608D}\x{6092}' . +'\x{6094}\x{6096}\x{6097}\x{609A}\x{609B}\x{609F}\x{60A0}\x{60A3}\x{60A6}' . +'\x{60A7}\x{60A9}\x{60AA}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B8}' . +'\x{60BC}\x{60BD}\x{60C5}\x{60C6}\x{60C7}\x{60D1}\x{60D3}\x{60D8}\x{60DA}' . +'\x{60DC}\x{60DF}\x{60E0}\x{60E1}\x{60E3}\x{60E7}\x{60E8}\x{60F0}\x{60F1}' . +'\x{60F3}\x{60F4}\x{60F6}\x{60F7}\x{60F9}\x{60FA}\x{60FB}\x{6100}\x{6101}' . +'\x{6103}\x{6106}\x{6108}\x{6109}\x{610D}\x{610E}\x{610F}\x{6115}\x{611A}' . +'\x{611B}\x{611F}\x{6121}\x{6127}\x{6128}\x{612C}\x{6134}\x{613C}\x{613D}' . +'\x{613E}\x{613F}\x{6142}\x{6144}\x{6147}\x{6148}\x{614A}\x{614B}\x{614C}' . +'\x{614D}\x{614E}\x{6153}\x{6155}\x{6158}\x{6159}\x{615A}\x{615D}\x{615F}' . +'\x{6162}\x{6163}\x{6165}\x{6167}\x{6168}\x{616B}\x{616E}\x{616F}\x{6170}' . +'\x{6171}\x{6173}\x{6174}\x{6175}\x{6176}\x{6177}\x{617E}\x{6182}\x{6187}' . +'\x{618A}\x{618E}\x{6190}\x{6191}\x{6194}\x{6196}\x{6199}\x{619A}\x{61A4}' . +'\x{61A7}\x{61A9}\x{61AB}\x{61AC}\x{61AE}\x{61B2}\x{61B6}\x{61BA}\x{61BE}' . +'\x{61C3}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' . +'\x{61D0}\x{61E3}\x{61E6}\x{61F2}\x{61F4}\x{61F6}\x{61F7}\x{61F8}\x{61FA}' . +'\x{61FC}\x{61FD}\x{61FE}\x{61FF}\x{6200}\x{6208}\x{6209}\x{620A}\x{620C}' . +'\x{620D}\x{620E}\x{6210}\x{6211}\x{6212}\x{6214}\x{6216}\x{621A}\x{621B}' . +'\x{621D}\x{621E}\x{621F}\x{6221}\x{6226}\x{622A}\x{622E}\x{622F}\x{6230}' . +'\x{6232}\x{6233}\x{6234}\x{6238}\x{623B}\x{623F}\x{6240}\x{6241}\x{6247}' . +'\x{6248}\x{6249}\x{624B}\x{624D}\x{624E}\x{6253}\x{6255}\x{6258}\x{625B}' . +'\x{625E}\x{6260}\x{6263}\x{6268}\x{626E}\x{6271}\x{6276}\x{6279}\x{627C}' . +'\x{627E}\x{627F}\x{6280}\x{6282}\x{6283}\x{6284}\x{6289}\x{628A}\x{6291}' . +'\x{6292}\x{6293}\x{6294}\x{6295}\x{6296}\x{6297}\x{6298}\x{629B}\x{629C}' . +'\x{629E}\x{62AB}\x{62AC}\x{62B1}\x{62B5}\x{62B9}\x{62BB}\x{62BC}\x{62BD}' . +'\x{62C2}\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CC}\x{62CD}' . +'\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D7}\x{62D8}\x{62D9}' . +'\x{62DB}\x{62DC}\x{62DD}\x{62E0}\x{62E1}\x{62EC}\x{62ED}\x{62EE}\x{62EF}' . +'\x{62F1}\x{62F3}\x{62F5}\x{62F6}\x{62F7}\x{62FE}\x{62FF}\x{6301}\x{6302}' . +'\x{6307}\x{6308}\x{6309}\x{630C}\x{6311}\x{6319}\x{631F}\x{6327}\x{6328}' . +'\x{632B}\x{632F}\x{633A}\x{633D}\x{633E}\x{633F}\x{6349}\x{634C}\x{634D}' . +'\x{634F}\x{6350}\x{6355}\x{6357}\x{635C}\x{6367}\x{6368}\x{6369}\x{636B}' . +'\x{636E}\x{6372}\x{6376}\x{6377}\x{637A}\x{637B}\x{6380}\x{6383}\x{6388}' . +'\x{6389}\x{638C}\x{638E}\x{638F}\x{6392}\x{6396}\x{6398}\x{639B}\x{639F}' . +'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A5}\x{63A7}\x{63A8}\x{63A9}\x{63AA}' . +'\x{63AB}\x{63AC}\x{63B2}\x{63B4}\x{63B5}\x{63BB}\x{63BE}\x{63C0}\x{63C3}' . +'\x{63C4}\x{63C6}\x{63C9}\x{63CF}\x{63D0}\x{63D2}\x{63D6}\x{63DA}\x{63DB}' . +'\x{63E1}\x{63E3}\x{63E9}\x{63EE}\x{63F4}\x{63F6}\x{63FA}\x{6406}\x{640D}' . +'\x{640F}\x{6413}\x{6416}\x{6417}\x{641C}\x{6426}\x{6428}\x{642C}\x{642D}' . +'\x{6434}\x{6436}\x{643A}\x{643E}\x{6442}\x{644E}\x{6458}\x{6467}\x{6469}' . +'\x{646F}\x{6476}\x{6478}\x{647A}\x{6483}\x{6488}\x{6492}\x{6493}\x{6495}' . +'\x{649A}\x{649E}\x{64A4}\x{64A5}\x{64A9}\x{64AB}\x{64AD}\x{64AE}\x{64B0}' . +'\x{64B2}\x{64B9}\x{64BB}\x{64BC}\x{64C1}\x{64C2}\x{64C5}\x{64C7}\x{64CD}' . +'\x{64D2}\x{64D4}\x{64D8}\x{64DA}\x{64E0}\x{64E1}\x{64E2}\x{64E3}\x{64E6}' . +'\x{64E7}\x{64EC}\x{64EF}\x{64F1}\x{64F2}\x{64F4}\x{64F6}\x{64FA}\x{64FD}' . +'\x{64FE}\x{6500}\x{6505}\x{6518}\x{651C}\x{651D}\x{6523}\x{6524}\x{652A}' . +'\x{652B}\x{652C}\x{652F}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}' . +'\x{653B}\x{653E}\x{653F}\x{6545}\x{6548}\x{654D}\x{654F}\x{6551}\x{6555}' . +'\x{6556}\x{6557}\x{6558}\x{6559}\x{655D}\x{655E}\x{6562}\x{6563}\x{6566}' . +'\x{656C}\x{6570}\x{6572}\x{6574}\x{6575}\x{6577}\x{6578}\x{6582}\x{6583}' . +'\x{6587}\x{6588}\x{6589}\x{658C}\x{658E}\x{6590}\x{6591}\x{6597}\x{6599}' . +'\x{659B}\x{659C}\x{659F}\x{65A1}\x{65A4}\x{65A5}\x{65A7}\x{65AB}\x{65AC}' . +'\x{65AD}\x{65AF}\x{65B0}\x{65B7}\x{65B9}\x{65BC}\x{65BD}\x{65C1}\x{65C3}' . +'\x{65C4}\x{65C5}\x{65C6}\x{65CB}\x{65CC}\x{65CF}\x{65D2}\x{65D7}\x{65D9}' . +'\x{65DB}\x{65E0}\x{65E1}\x{65E2}\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}' . +'\x{65EC}\x{65ED}\x{65F1}\x{65FA}\x{65FB}\x{6602}\x{6603}\x{6606}\x{6607}' . +'\x{660A}\x{660C}\x{660E}\x{660F}\x{6613}\x{6614}\x{661C}\x{661F}\x{6620}' . +'\x{6625}\x{6627}\x{6628}\x{662D}\x{662F}\x{6634}\x{6635}\x{6636}\x{663C}' . +'\x{663F}\x{6641}\x{6642}\x{6643}\x{6644}\x{6649}\x{664B}\x{664F}\x{6652}' . +'\x{665D}\x{665E}\x{665F}\x{6662}\x{6664}\x{6666}\x{6667}\x{6668}\x{6669}' . +'\x{666E}\x{666F}\x{6670}\x{6674}\x{6676}\x{667A}\x{6681}\x{6683}\x{6684}' . +'\x{6687}\x{6688}\x{6689}\x{668E}\x{6691}\x{6696}\x{6697}\x{6698}\x{669D}' . +'\x{66A2}\x{66A6}\x{66AB}\x{66AE}\x{66B4}\x{66B8}\x{66B9}\x{66BC}\x{66BE}' . +'\x{66C1}\x{66C4}\x{66C7}\x{66C9}\x{66D6}\x{66D9}\x{66DA}\x{66DC}\x{66DD}' . +'\x{66E0}\x{66E6}\x{66E9}\x{66F0}\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F7}' . +'\x{66F8}\x{66F9}\x{66FC}\x{66FD}\x{66FE}\x{66FF}\x{6700}\x{6703}\x{6708}' . +'\x{6709}\x{670B}\x{670D}\x{670F}\x{6714}\x{6715}\x{6716}\x{6717}\x{671B}' . +'\x{671D}\x{671E}\x{671F}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}' . +'\x{672D}\x{672E}\x{6731}\x{6734}\x{6736}\x{6737}\x{6738}\x{673A}\x{673D}' . +'\x{673F}\x{6741}\x{6746}\x{6749}\x{674E}\x{674F}\x{6750}\x{6751}\x{6753}' . +'\x{6756}\x{6759}\x{675C}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' . +'\x{6764}\x{6765}\x{676A}\x{676D}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}' . +'\x{6775}\x{6777}\x{677C}\x{677E}\x{677F}\x{6785}\x{6787}\x{6789}\x{678B}' . +'\x{678C}\x{6790}\x{6795}\x{6797}\x{679A}\x{679C}\x{679D}\x{67A0}\x{67A1}' . +'\x{67A2}\x{67A6}\x{67A9}\x{67AF}\x{67B3}\x{67B4}\x{67B6}\x{67B7}\x{67B8}' . +'\x{67B9}\x{67C1}\x{67C4}\x{67C6}\x{67CA}\x{67CE}\x{67CF}\x{67D0}\x{67D1}' . +'\x{67D3}\x{67D4}\x{67D8}\x{67DA}\x{67DD}\x{67DE}\x{67E2}\x{67E4}\x{67E7}' . +'\x{67E9}\x{67EC}\x{67EE}\x{67EF}\x{67F1}\x{67F3}\x{67F4}\x{67F5}\x{67FB}' . +'\x{67FE}\x{67FF}\x{6802}\x{6803}\x{6804}\x{6813}\x{6816}\x{6817}\x{681E}' . +'\x{6821}\x{6822}\x{6829}\x{682A}\x{682B}\x{6832}\x{6834}\x{6838}\x{6839}' . +'\x{683C}\x{683D}\x{6840}\x{6841}\x{6842}\x{6843}\x{6846}\x{6848}\x{684D}' . +'\x{684E}\x{6850}\x{6851}\x{6853}\x{6854}\x{6859}\x{685C}\x{685D}\x{685F}' . +'\x{6863}\x{6867}\x{6874}\x{6876}\x{6877}\x{687E}\x{687F}\x{6881}\x{6883}' . +'\x{6885}\x{688D}\x{688F}\x{6893}\x{6894}\x{6897}\x{689B}\x{689D}\x{689F}' . +'\x{68A0}\x{68A2}\x{68A6}\x{68A7}\x{68A8}\x{68AD}\x{68AF}\x{68B0}\x{68B1}' . +'\x{68B3}\x{68B5}\x{68B6}\x{68B9}\x{68BA}\x{68BC}\x{68C4}\x{68C6}\x{68C9}' . +'\x{68CA}\x{68CB}\x{68CD}\x{68D2}\x{68D4}\x{68D5}\x{68D7}\x{68D8}\x{68DA}' . +'\x{68DF}\x{68E0}\x{68E1}\x{68E3}\x{68E7}\x{68EE}\x{68EF}\x{68F2}\x{68F9}' . +'\x{68FA}\x{6900}\x{6901}\x{6904}\x{6905}\x{6908}\x{690B}\x{690C}\x{690D}' . +'\x{690E}\x{690F}\x{6912}\x{6919}\x{691A}\x{691B}\x{691C}\x{6921}\x{6922}' . +'\x{6923}\x{6925}\x{6926}\x{6928}\x{692A}\x{6930}\x{6934}\x{6936}\x{6939}' . +'\x{693D}\x{693F}\x{694A}\x{6953}\x{6954}\x{6955}\x{6959}\x{695A}\x{695C}' . +'\x{695D}\x{695E}\x{6960}\x{6961}\x{6962}\x{696A}\x{696B}\x{696D}\x{696E}' . +'\x{696F}\x{6973}\x{6974}\x{6975}\x{6977}\x{6978}\x{6979}\x{697C}\x{697D}' . +'\x{697E}\x{6981}\x{6982}\x{698A}\x{698E}\x{6991}\x{6994}\x{6995}\x{699B}' . +'\x{699C}\x{69A0}\x{69A7}\x{69AE}\x{69B1}\x{69B2}\x{69B4}\x{69BB}\x{69BE}' . +'\x{69BF}\x{69C1}\x{69C3}\x{69C7}\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}' . +'\x{69D0}\x{69D3}\x{69D8}\x{69D9}\x{69DD}\x{69DE}\x{69E7}\x{69E8}\x{69EB}' . +'\x{69ED}\x{69F2}\x{69F9}\x{69FB}\x{69FD}\x{69FF}\x{6A02}\x{6A05}\x{6A0A}' . +'\x{6A0B}\x{6A0C}\x{6A12}\x{6A13}\x{6A14}\x{6A17}\x{6A19}\x{6A1B}\x{6A1E}' . +'\x{6A1F}\x{6A21}\x{6A22}\x{6A23}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2E}\x{6A35}' . +'\x{6A36}\x{6A38}\x{6A39}\x{6A3A}\x{6A3D}\x{6A44}\x{6A47}\x{6A48}\x{6A4B}' . +'\x{6A58}\x{6A59}\x{6A5F}\x{6A61}\x{6A62}\x{6A66}\x{6A72}\x{6A78}\x{6A7F}' . +'\x{6A80}\x{6A84}\x{6A8D}\x{6A8E}\x{6A90}\x{6A97}\x{6A9C}\x{6AA0}\x{6AA2}' . +'\x{6AA3}\x{6AAA}\x{6AAC}\x{6AAE}\x{6AB3}\x{6AB8}\x{6ABB}\x{6AC1}\x{6AC2}' . +'\x{6AC3}\x{6AD1}\x{6AD3}\x{6ADA}\x{6ADB}\x{6ADE}\x{6ADF}\x{6AE8}\x{6AEA}' . +'\x{6AFA}\x{6AFB}\x{6B04}\x{6B05}\x{6B0A}\x{6B12}\x{6B16}\x{6B1D}\x{6B1F}' . +'\x{6B20}\x{6B21}\x{6B23}\x{6B27}\x{6B32}\x{6B37}\x{6B38}\x{6B39}\x{6B3A}' . +'\x{6B3D}\x{6B3E}\x{6B43}\x{6B47}\x{6B49}\x{6B4C}\x{6B4E}\x{6B50}\x{6B53}' . +'\x{6B54}\x{6B59}\x{6B5B}\x{6B5F}\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B66}' . +'\x{6B69}\x{6B6A}\x{6B6F}\x{6B73}\x{6B74}\x{6B78}\x{6B79}\x{6B7B}\x{6B7F}' . +'\x{6B80}\x{6B83}\x{6B84}\x{6B86}\x{6B89}\x{6B8A}\x{6B8B}\x{6B8D}\x{6B95}' . +'\x{6B96}\x{6B98}\x{6B9E}\x{6BA4}\x{6BAA}\x{6BAB}\x{6BAF}\x{6BB1}\x{6BB2}' . +'\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB7}\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBF}\x{6BC0}' . +'\x{6BC5}\x{6BC6}\x{6BCB}\x{6BCD}\x{6BCE}\x{6BD2}\x{6BD3}\x{6BD4}\x{6BD8}' . +'\x{6BDB}\x{6BDF}\x{6BEB}\x{6BEC}\x{6BEF}\x{6BF3}\x{6C08}\x{6C0F}\x{6C11}' . +'\x{6C13}\x{6C14}\x{6C17}\x{6C1B}\x{6C23}\x{6C24}\x{6C34}\x{6C37}\x{6C38}' . +'\x{6C3E}\x{6C40}\x{6C41}\x{6C42}\x{6C4E}\x{6C50}\x{6C55}\x{6C57}\x{6C5A}' . +'\x{6C5D}\x{6C5E}\x{6C5F}\x{6C60}\x{6C62}\x{6C68}\x{6C6A}\x{6C70}\x{6C72}' . +'\x{6C73}\x{6C7A}\x{6C7D}\x{6C7E}\x{6C81}\x{6C82}\x{6C83}\x{6C88}\x{6C8C}' . +'\x{6C8D}\x{6C90}\x{6C92}\x{6C93}\x{6C96}\x{6C99}\x{6C9A}\x{6C9B}\x{6CA1}' . +'\x{6CA2}\x{6CAB}\x{6CAE}\x{6CB1}\x{6CB3}\x{6CB8}\x{6CB9}\x{6CBA}\x{6CBB}' . +'\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC1}\x{6CC4}\x{6CC5}\x{6CC9}\x{6CCA}' . +'\x{6CCC}\x{6CD3}\x{6CD5}\x{6CD7}\x{6CD9}\x{6CDB}\x{6CDD}\x{6CE1}\x{6CE2}' . +'\x{6CE3}\x{6CE5}\x{6CE8}\x{6CEA}\x{6CEF}\x{6CF0}\x{6CF1}\x{6CF3}\x{6D0B}' . +'\x{6D0C}\x{6D12}\x{6D17}\x{6D19}\x{6D1B}\x{6D1E}\x{6D1F}\x{6D25}\x{6D29}' . +'\x{6D2A}\x{6D2B}\x{6D32}\x{6D33}\x{6D35}\x{6D36}\x{6D38}\x{6D3B}\x{6D3D}' . +'\x{6D3E}\x{6D41}\x{6D44}\x{6D45}\x{6D59}\x{6D5A}\x{6D5C}\x{6D63}\x{6D64}' . +'\x{6D66}\x{6D69}\x{6D6A}\x{6D6C}\x{6D6E}\x{6D74}\x{6D77}\x{6D78}\x{6D79}' . +'\x{6D85}\x{6D88}\x{6D8C}\x{6D8E}\x{6D93}\x{6D95}\x{6D99}\x{6D9B}\x{6D9C}' . +'\x{6DAF}\x{6DB2}\x{6DB5}\x{6DB8}\x{6DBC}\x{6DC0}\x{6DC5}\x{6DC6}\x{6DC7}' . +'\x{6DCB}\x{6DCC}\x{6DD1}\x{6DD2}\x{6DD5}\x{6DD8}\x{6DD9}\x{6DDE}\x{6DE1}' . +'\x{6DE4}\x{6DE6}\x{6DE8}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DEE}\x{6DF1}\x{6DF3}' . +'\x{6DF5}\x{6DF7}\x{6DF9}\x{6DFA}\x{6DFB}\x{6E05}\x{6E07}\x{6E08}\x{6E09}' . +'\x{6E0A}\x{6E0B}\x{6E13}\x{6E15}\x{6E19}\x{6E1A}\x{6E1B}\x{6E1D}\x{6E1F}' . +'\x{6E20}\x{6E21}\x{6E23}\x{6E24}\x{6E25}\x{6E26}\x{6E29}\x{6E2B}\x{6E2C}' . +'\x{6E2D}\x{6E2E}\x{6E2F}\x{6E38}\x{6E3A}\x{6E3E}\x{6E43}\x{6E4A}\x{6E4D}' . +'\x{6E4E}\x{6E56}\x{6E58}\x{6E5B}\x{6E5F}\x{6E67}\x{6E6B}\x{6E6E}\x{6E6F}' . +'\x{6E72}\x{6E76}\x{6E7E}\x{6E7F}\x{6E80}\x{6E82}\x{6E8C}\x{6E8F}\x{6E90}' . +'\x{6E96}\x{6E98}\x{6E9C}\x{6E9D}\x{6E9F}\x{6EA2}\x{6EA5}\x{6EAA}\x{6EAF}' . +'\x{6EB2}\x{6EB6}\x{6EB7}\x{6EBA}\x{6EBD}\x{6EC2}\x{6EC4}\x{6EC5}\x{6EC9}' . +'\x{6ECB}\x{6ECC}\x{6ED1}\x{6ED3}\x{6ED4}\x{6ED5}\x{6EDD}\x{6EDE}\x{6EEC}' . +'\x{6EEF}\x{6EF2}\x{6EF4}\x{6EF7}\x{6EF8}\x{6EFE}\x{6EFF}\x{6F01}\x{6F02}' . +'\x{6F06}\x{6F09}\x{6F0F}\x{6F11}\x{6F13}\x{6F14}\x{6F15}\x{6F20}\x{6F22}' . +'\x{6F23}\x{6F2B}\x{6F2C}\x{6F31}\x{6F32}\x{6F38}\x{6F3E}\x{6F3F}\x{6F41}' . +'\x{6F45}\x{6F54}\x{6F58}\x{6F5B}\x{6F5C}\x{6F5F}\x{6F64}\x{6F66}\x{6F6D}' . +'\x{6F6E}\x{6F6F}\x{6F70}\x{6F74}\x{6F78}\x{6F7A}\x{6F7C}\x{6F80}\x{6F81}' . +'\x{6F82}\x{6F84}\x{6F86}\x{6F8E}\x{6F91}\x{6F97}\x{6FA1}\x{6FA3}\x{6FA4}' . +'\x{6FAA}\x{6FB1}\x{6FB3}\x{6FB9}\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC6}' . +'\x{6FD4}\x{6FD5}\x{6FD8}\x{6FDB}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE4}\x{6FEB}' . +'\x{6FEC}\x{6FEE}\x{6FEF}\x{6FF1}\x{6FF3}\x{6FF6}\x{6FFA}\x{6FFE}\x{7001}' . +'\x{7009}\x{700B}\x{700F}\x{7011}\x{7015}\x{7018}\x{701A}\x{701B}\x{701D}' . +'\x{701E}\x{701F}\x{7026}\x{7027}\x{702C}\x{7030}\x{7032}\x{703E}\x{704C}' . +'\x{7051}\x{7058}\x{7063}\x{706B}\x{706F}\x{7070}\x{7078}\x{707C}\x{707D}' . +'\x{7089}\x{708A}\x{708E}\x{7092}\x{7099}\x{70AC}\x{70AD}\x{70AE}\x{70AF}' . +'\x{70B3}\x{70B8}\x{70B9}\x{70BA}\x{70C8}\x{70CB}\x{70CF}\x{70D9}\x{70DD}' . +'\x{70DF}\x{70F1}\x{70F9}\x{70FD}\x{7109}\x{7114}\x{7119}\x{711A}\x{711C}' . +'\x{7121}\x{7126}\x{7136}\x{713C}\x{7149}\x{714C}\x{714E}\x{7155}\x{7156}' . +'\x{7159}\x{7162}\x{7164}\x{7165}\x{7166}\x{7167}\x{7169}\x{716C}\x{716E}' . +'\x{717D}\x{7184}\x{7188}\x{718A}\x{718F}\x{7194}\x{7195}\x{7199}\x{719F}' . +'\x{71A8}\x{71AC}\x{71B1}\x{71B9}\x{71BE}\x{71C3}\x{71C8}\x{71C9}\x{71CE}' . +'\x{71D0}\x{71D2}\x{71D4}\x{71D5}\x{71D7}\x{71DF}\x{71E0}\x{71E5}\x{71E6}' . +'\x{71E7}\x{71EC}\x{71ED}\x{71EE}\x{71F5}\x{71F9}\x{71FB}\x{71FC}\x{71FF}' . +'\x{7206}\x{720D}\x{7210}\x{721B}\x{7228}\x{722A}\x{722C}\x{722D}\x{7230}' . +'\x{7232}\x{7235}\x{7236}\x{723A}\x{723B}\x{723C}\x{723D}\x{723E}\x{723F}' . +'\x{7240}\x{7246}\x{7247}\x{7248}\x{724B}\x{724C}\x{7252}\x{7258}\x{7259}' . +'\x{725B}\x{725D}\x{725F}\x{7261}\x{7262}\x{7267}\x{7269}\x{7272}\x{7274}' . +'\x{7279}\x{727D}\x{727E}\x{7280}\x{7281}\x{7282}\x{7287}\x{7292}\x{7296}' . +'\x{72A0}\x{72A2}\x{72A7}\x{72AC}\x{72AF}\x{72B2}\x{72B6}\x{72B9}\x{72C2}' . +'\x{72C3}\x{72C4}\x{72C6}\x{72CE}\x{72D0}\x{72D2}\x{72D7}\x{72D9}\x{72DB}' . +'\x{72E0}\x{72E1}\x{72E2}\x{72E9}\x{72EC}\x{72ED}\x{72F7}\x{72F8}\x{72F9}' . +'\x{72FC}\x{72FD}\x{730A}\x{7316}\x{7317}\x{731B}\x{731C}\x{731D}\x{731F}' . +'\x{7325}\x{7329}\x{732A}\x{732B}\x{732E}\x{732F}\x{7334}\x{7336}\x{7337}' . +'\x{733E}\x{733F}\x{7344}\x{7345}\x{734E}\x{734F}\x{7357}\x{7363}\x{7368}' . +'\x{736A}\x{7370}\x{7372}\x{7375}\x{7378}\x{737A}\x{737B}\x{7384}\x{7387}' . +'\x{7389}\x{738B}\x{7396}\x{73A9}\x{73B2}\x{73B3}\x{73BB}\x{73C0}\x{73C2}' . +'\x{73C8}\x{73CA}\x{73CD}\x{73CE}\x{73DE}\x{73E0}\x{73E5}\x{73EA}\x{73ED}' . +'\x{73EE}\x{73F1}\x{73F8}\x{73FE}\x{7403}\x{7405}\x{7406}\x{7409}\x{7422}' . +'\x{7425}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{743A}\x{743F}\x{7441}' . +'\x{7455}\x{7459}\x{745A}\x{745B}\x{745C}\x{745E}\x{745F}\x{7460}\x{7463}' . +'\x{7464}\x{7469}\x{746A}\x{746F}\x{7470}\x{7473}\x{7476}\x{747E}\x{7483}' . +'\x{748B}\x{749E}\x{74A2}\x{74A7}\x{74B0}\x{74BD}\x{74CA}\x{74CF}\x{74D4}' . +'\x{74DC}\x{74E0}\x{74E2}\x{74E3}\x{74E6}\x{74E7}\x{74E9}\x{74EE}\x{74F0}' . +'\x{74F1}\x{74F2}\x{74F6}\x{74F7}\x{74F8}\x{7503}\x{7504}\x{7505}\x{750C}' . +'\x{750D}\x{750E}\x{7511}\x{7513}\x{7515}\x{7518}\x{751A}\x{751C}\x{751E}' . +'\x{751F}\x{7523}\x{7525}\x{7526}\x{7528}\x{752B}\x{752C}\x{7530}\x{7531}' . +'\x{7532}\x{7533}\x{7537}\x{7538}\x{753A}\x{753B}\x{753C}\x{7544}\x{7546}' . +'\x{7549}\x{754A}\x{754B}\x{754C}\x{754D}\x{754F}\x{7551}\x{7554}\x{7559}' . +'\x{755A}\x{755B}\x{755C}\x{755D}\x{7560}\x{7562}\x{7564}\x{7565}\x{7566}' . +'\x{7567}\x{7569}\x{756A}\x{756B}\x{756D}\x{7570}\x{7573}\x{7574}\x{7576}' . +'\x{7577}\x{7578}\x{757F}\x{7582}\x{7586}\x{7587}\x{7589}\x{758A}\x{758B}' . +'\x{758E}\x{758F}\x{7591}\x{7594}\x{759A}\x{759D}\x{75A3}\x{75A5}\x{75AB}' . +'\x{75B1}\x{75B2}\x{75B3}\x{75B5}\x{75B8}\x{75B9}\x{75BC}\x{75BD}\x{75BE}' . +'\x{75C2}\x{75C3}\x{75C5}\x{75C7}\x{75CA}\x{75CD}\x{75D2}\x{75D4}\x{75D5}' . +'\x{75D8}\x{75D9}\x{75DB}\x{75DE}\x{75E2}\x{75E3}\x{75E9}\x{75F0}\x{75F2}' . +'\x{75F3}\x{75F4}\x{75FA}\x{75FC}\x{75FE}\x{75FF}\x{7601}\x{7609}\x{760B}' . +'\x{760D}\x{761F}\x{7620}\x{7621}\x{7622}\x{7624}\x{7627}\x{7630}\x{7634}' . +'\x{763B}\x{7642}\x{7646}\x{7647}\x{7648}\x{764C}\x{7652}\x{7656}\x{7658}' . +'\x{765C}\x{7661}\x{7662}\x{7667}\x{7668}\x{7669}\x{766A}\x{766C}\x{7670}' . +'\x{7672}\x{7676}\x{7678}\x{767A}\x{767B}\x{767C}\x{767D}\x{767E}\x{7680}' . +'\x{7683}\x{7684}\x{7686}\x{7687}\x{7688}\x{768B}\x{768E}\x{7690}\x{7693}' . +'\x{7696}\x{7699}\x{769A}\x{76AE}\x{76B0}\x{76B4}\x{76B7}\x{76B8}\x{76B9}' . +'\x{76BA}\x{76BF}\x{76C2}\x{76C3}\x{76C6}\x{76C8}\x{76CA}\x{76CD}\x{76D2}' . +'\x{76D6}\x{76D7}\x{76DB}\x{76DC}\x{76DE}\x{76DF}\x{76E1}\x{76E3}\x{76E4}' . +'\x{76E5}\x{76E7}\x{76EA}\x{76EE}\x{76F2}\x{76F4}\x{76F8}\x{76FB}\x{76FE}' . +'\x{7701}\x{7704}\x{7707}\x{7708}\x{7709}\x{770B}\x{770C}\x{771B}\x{771E}' . +'\x{771F}\x{7720}\x{7724}\x{7725}\x{7726}\x{7729}\x{7737}\x{7738}\x{773A}' . +'\x{773C}\x{7740}\x{7747}\x{775A}\x{775B}\x{7761}\x{7763}\x{7765}\x{7766}' . +'\x{7768}\x{776B}\x{7779}\x{777E}\x{777F}\x{778B}\x{778E}\x{7791}\x{779E}' . +'\x{77A0}\x{77A5}\x{77AC}\x{77AD}\x{77B0}\x{77B3}\x{77B6}\x{77B9}\x{77BB}' . +'\x{77BC}\x{77BD}\x{77BF}\x{77C7}\x{77CD}\x{77D7}\x{77DA}\x{77DB}\x{77DC}' . +'\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E9}\x{77ED}\x{77EE}\x{77EF}\x{77F3}' . +'\x{77FC}\x{7802}\x{780C}\x{7812}\x{7814}\x{7815}\x{7820}\x{7825}\x{7826}' . +'\x{7827}\x{7832}\x{7834}\x{783A}\x{783F}\x{7845}\x{785D}\x{786B}\x{786C}' . +'\x{786F}\x{7872}\x{7874}\x{787C}\x{7881}\x{7886}\x{7887}\x{788C}\x{788D}' . +'\x{788E}\x{7891}\x{7893}\x{7895}\x{7897}\x{789A}\x{78A3}\x{78A7}\x{78A9}' . +'\x{78AA}\x{78AF}\x{78B5}\x{78BA}\x{78BC}\x{78BE}\x{78C1}\x{78C5}\x{78C6}' . +'\x{78CA}\x{78CB}\x{78D0}\x{78D1}\x{78D4}\x{78DA}\x{78E7}\x{78E8}\x{78EC}' . +'\x{78EF}\x{78F4}\x{78FD}\x{7901}\x{7907}\x{790E}\x{7911}\x{7912}\x{7919}' . +'\x{7926}\x{792A}\x{792B}\x{792C}\x{793A}\x{793C}\x{793E}\x{7940}\x{7941}' . +'\x{7947}\x{7948}\x{7949}\x{7950}\x{7953}\x{7955}\x{7956}\x{7957}\x{795A}' . +'\x{795D}\x{795E}\x{795F}\x{7960}\x{7962}\x{7965}\x{7968}\x{796D}\x{7977}' . +'\x{797A}\x{797F}\x{7980}\x{7981}\x{7984}\x{7985}\x{798A}\x{798D}\x{798E}' . +'\x{798F}\x{799D}\x{79A6}\x{79A7}\x{79AA}\x{79AE}\x{79B0}\x{79B3}\x{79B9}' . +'\x{79BA}\x{79BD}\x{79BE}\x{79BF}\x{79C0}\x{79C1}\x{79C9}\x{79CB}\x{79D1}' . +'\x{79D2}\x{79D5}\x{79D8}\x{79DF}\x{79E1}\x{79E3}\x{79E4}\x{79E6}\x{79E7}' . +'\x{79E9}\x{79EC}\x{79F0}\x{79FB}\x{7A00}\x{7A08}\x{7A0B}\x{7A0D}\x{7A0E}' . +'\x{7A14}\x{7A17}\x{7A18}\x{7A19}\x{7A1A}\x{7A1C}\x{7A1F}\x{7A20}\x{7A2E}' . +'\x{7A31}\x{7A32}\x{7A37}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' . +'\x{7A42}\x{7A43}\x{7A46}\x{7A49}\x{7A4D}\x{7A4E}\x{7A4F}\x{7A50}\x{7A57}' . +'\x{7A61}\x{7A62}\x{7A63}\x{7A69}\x{7A6B}\x{7A70}\x{7A74}\x{7A76}\x{7A79}' . +'\x{7A7A}\x{7A7D}\x{7A7F}\x{7A81}\x{7A83}\x{7A84}\x{7A88}\x{7A92}\x{7A93}' . +'\x{7A95}\x{7A96}\x{7A97}\x{7A98}\x{7A9F}\x{7AA9}\x{7AAA}\x{7AAE}\x{7AAF}' . +'\x{7AB0}\x{7AB6}\x{7ABA}\x{7ABF}\x{7AC3}\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}' . +'\x{7ACA}\x{7ACB}\x{7ACD}\x{7ACF}\x{7AD2}\x{7AD3}\x{7AD5}\x{7AD9}\x{7ADA}' . +'\x{7ADC}\x{7ADD}\x{7ADF}\x{7AE0}\x{7AE1}\x{7AE2}\x{7AE3}\x{7AE5}\x{7AE6}' . +'\x{7AEA}\x{7AED}\x{7AEF}\x{7AF0}\x{7AF6}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFF}' . +'\x{7B02}\x{7B04}\x{7B06}\x{7B08}\x{7B0A}\x{7B0B}\x{7B0F}\x{7B11}\x{7B18}' . +'\x{7B19}\x{7B1B}\x{7B1E}\x{7B20}\x{7B25}\x{7B26}\x{7B28}\x{7B2C}\x{7B33}' . +'\x{7B35}\x{7B36}\x{7B39}\x{7B45}\x{7B46}\x{7B48}\x{7B49}\x{7B4B}\x{7B4C}' . +'\x{7B4D}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B56}\x{7B5D}\x{7B65}' . +'\x{7B67}\x{7B6C}\x{7B6E}\x{7B70}\x{7B71}\x{7B74}\x{7B75}\x{7B7A}\x{7B86}' . +'\x{7B87}\x{7B8B}\x{7B8D}\x{7B8F}\x{7B92}\x{7B94}\x{7B95}\x{7B97}\x{7B98}' . +'\x{7B99}\x{7B9A}\x{7B9C}\x{7B9D}\x{7B9F}\x{7BA1}\x{7BAA}\x{7BAD}\x{7BB1}' . +'\x{7BB4}\x{7BB8}\x{7BC0}\x{7BC1}\x{7BC4}\x{7BC6}\x{7BC7}\x{7BC9}\x{7BCB}' . +'\x{7BCC}\x{7BCF}\x{7BDD}\x{7BE0}\x{7BE4}\x{7BE5}\x{7BE6}\x{7BE9}\x{7BED}' . +'\x{7BF3}\x{7BF6}\x{7BF7}\x{7C00}\x{7C07}\x{7C0D}\x{7C11}\x{7C12}\x{7C13}' . +'\x{7C14}\x{7C17}\x{7C1F}\x{7C21}\x{7C23}\x{7C27}\x{7C2A}\x{7C2B}\x{7C37}' . +'\x{7C38}\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C43}\x{7C4C}\x{7C4D}\x{7C4F}' . +'\x{7C50}\x{7C54}\x{7C56}\x{7C58}\x{7C5F}\x{7C60}\x{7C64}\x{7C65}\x{7C6C}' . +'\x{7C73}\x{7C75}\x{7C7E}\x{7C81}\x{7C82}\x{7C83}\x{7C89}\x{7C8B}\x{7C8D}' . +'\x{7C90}\x{7C92}\x{7C95}\x{7C97}\x{7C98}\x{7C9B}\x{7C9F}\x{7CA1}\x{7CA2}' . +'\x{7CA4}\x{7CA5}\x{7CA7}\x{7CA8}\x{7CAB}\x{7CAD}\x{7CAE}\x{7CB1}\x{7CB2}' . +'\x{7CB3}\x{7CB9}\x{7CBD}\x{7CBE}\x{7CC0}\x{7CC2}\x{7CC5}\x{7CCA}\x{7CCE}' . +'\x{7CD2}\x{7CD6}\x{7CD8}\x{7CDC}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE7}' . +'\x{7CEF}\x{7CF2}\x{7CF4}\x{7CF6}\x{7CF8}\x{7CFA}\x{7CFB}\x{7CFE}\x{7D00}' . +'\x{7D02}\x{7D04}\x{7D05}\x{7D06}\x{7D0A}\x{7D0B}\x{7D0D}\x{7D10}\x{7D14}' . +'\x{7D15}\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D20}\x{7D21}' . +'\x{7D22}\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D32}\x{7D33}\x{7D35}' . +'\x{7D39}\x{7D3A}\x{7D3F}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}\x{7D4B}' . +'\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D56}\x{7D5B}\x{7D5E}\x{7D61}\x{7D62}' . +'\x{7D63}\x{7D66}\x{7D68}\x{7D6E}\x{7D71}\x{7D72}\x{7D73}\x{7D75}\x{7D76}' . +'\x{7D79}\x{7D7D}\x{7D89}\x{7D8F}\x{7D93}\x{7D99}\x{7D9A}\x{7D9B}\x{7D9C}' . +'\x{7D9F}\x{7DA2}\x{7DA3}\x{7DAB}\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}' . +'\x{7DB1}\x{7DB2}\x{7DB4}\x{7DB5}\x{7DB8}\x{7DBA}\x{7DBB}\x{7DBD}\x{7DBE}' . +'\x{7DBF}\x{7DC7}\x{7DCA}\x{7DCB}\x{7DCF}\x{7DD1}\x{7DD2}\x{7DD5}\x{7DD8}' . +'\x{7DDA}\x{7DDC}\x{7DDD}\x{7DDE}\x{7DE0}\x{7DE1}\x{7DE4}\x{7DE8}\x{7DE9}' . +'\x{7DEC}\x{7DEF}\x{7DF2}\x{7DF4}\x{7DFB}\x{7E01}\x{7E04}\x{7E05}\x{7E09}' . +'\x{7E0A}\x{7E0B}\x{7E12}\x{7E1B}\x{7E1E}\x{7E1F}\x{7E21}\x{7E22}\x{7E23}' . +'\x{7E26}\x{7E2B}\x{7E2E}\x{7E31}\x{7E32}\x{7E35}\x{7E37}\x{7E39}\x{7E3A}' . +'\x{7E3B}\x{7E3D}\x{7E3E}\x{7E41}\x{7E43}\x{7E46}\x{7E4A}\x{7E4B}\x{7E4D}' . +'\x{7E54}\x{7E55}\x{7E56}\x{7E59}\x{7E5A}\x{7E5D}\x{7E5E}\x{7E66}\x{7E67}' . +'\x{7E69}\x{7E6A}\x{7E6D}\x{7E70}\x{7E79}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7F}' . +'\x{7E82}\x{7E83}\x{7E88}\x{7E89}\x{7E8C}\x{7E8E}\x{7E8F}\x{7E90}\x{7E92}' . +'\x{7E93}\x{7E94}\x{7E96}\x{7E9B}\x{7E9C}\x{7F36}\x{7F38}\x{7F3A}\x{7F45}' . +'\x{7F4C}\x{7F4D}\x{7F4E}\x{7F50}\x{7F51}\x{7F54}\x{7F55}\x{7F58}\x{7F5F}' . +'\x{7F60}\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6E}\x{7F70}\x{7F72}' . +'\x{7F75}\x{7F77}\x{7F78}\x{7F79}\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}' . +'\x{7F88}\x{7F8A}\x{7F8C}\x{7F8E}\x{7F94}\x{7F9A}\x{7F9D}\x{7F9E}\x{7FA3}' . +'\x{7FA4}\x{7FA8}\x{7FA9}\x{7FAE}\x{7FAF}\x{7FB2}\x{7FB6}\x{7FB8}\x{7FB9}' . +'\x{7FBD}\x{7FC1}\x{7FC5}\x{7FC6}\x{7FCA}\x{7FCC}\x{7FD2}\x{7FD4}\x{7FD5}' . +'\x{7FE0}\x{7FE1}\x{7FE6}\x{7FE9}\x{7FEB}\x{7FF0}\x{7FF3}\x{7FF9}\x{7FFB}' . +'\x{7FFC}\x{8000}\x{8001}\x{8003}\x{8004}\x{8005}\x{8006}\x{800B}\x{800C}' . +'\x{8010}\x{8012}\x{8015}\x{8017}\x{8018}\x{8019}\x{801C}\x{8021}\x{8028}' . +'\x{8033}\x{8036}\x{803B}\x{803D}\x{803F}\x{8046}\x{804A}\x{8052}\x{8056}' . +'\x{8058}\x{805A}\x{805E}\x{805F}\x{8061}\x{8062}\x{8068}\x{806F}\x{8070}' . +'\x{8072}\x{8073}\x{8074}\x{8076}\x{8077}\x{8079}\x{807D}\x{807E}\x{807F}' . +'\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808B}\x{808C}\x{8093}\x{8096}' . +'\x{8098}\x{809A}\x{809B}\x{809D}\x{80A1}\x{80A2}\x{80A5}\x{80A9}\x{80AA}' . +'\x{80AC}\x{80AD}\x{80AF}\x{80B1}\x{80B2}\x{80B4}\x{80BA}\x{80C3}\x{80C4}' . +'\x{80C6}\x{80CC}\x{80CE}\x{80D6}\x{80D9}\x{80DA}\x{80DB}\x{80DD}\x{80DE}' . +'\x{80E1}\x{80E4}\x{80E5}\x{80EF}\x{80F1}\x{80F4}\x{80F8}\x{80FC}\x{80FD}' . +'\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{811A}\x{811B}' . +'\x{8123}\x{8129}\x{812F}\x{8131}\x{8133}\x{8139}\x{813E}\x{8146}\x{814B}' . +'\x{814E}\x{8150}\x{8151}\x{8153}\x{8154}\x{8155}\x{815F}\x{8165}\x{8166}' . +'\x{816B}\x{816E}\x{8170}\x{8171}\x{8174}\x{8178}\x{8179}\x{817A}\x{817F}' . +'\x{8180}\x{8182}\x{8183}\x{8188}\x{818A}\x{818F}\x{8193}\x{8195}\x{819A}' . +'\x{819C}\x{819D}\x{81A0}\x{81A3}\x{81A4}\x{81A8}\x{81A9}\x{81B0}\x{81B3}' . +'\x{81B5}\x{81B8}\x{81BA}\x{81BD}\x{81BE}\x{81BF}\x{81C0}\x{81C2}\x{81C6}' . +'\x{81C8}\x{81C9}\x{81CD}\x{81D1}\x{81D3}\x{81D8}\x{81D9}\x{81DA}\x{81DF}' . +'\x{81E0}\x{81E3}\x{81E5}\x{81E7}\x{81E8}\x{81EA}\x{81ED}\x{81F3}\x{81F4}' . +'\x{81FA}\x{81FB}\x{81FC}\x{81FE}\x{8201}\x{8202}\x{8205}\x{8207}\x{8208}' . +'\x{8209}\x{820A}\x{820C}\x{820D}\x{820E}\x{8210}\x{8212}\x{8216}\x{8217}' . +'\x{8218}\x{821B}\x{821C}\x{821E}\x{821F}\x{8229}\x{822A}\x{822B}\x{822C}' . +'\x{822E}\x{8233}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{8240}\x{8247}' . +'\x{8258}\x{8259}\x{825A}\x{825D}\x{825F}\x{8262}\x{8264}\x{8266}\x{8268}' . +'\x{826A}\x{826B}\x{826E}\x{826F}\x{8271}\x{8272}\x{8276}\x{8277}\x{8278}' . +'\x{827E}\x{828B}\x{828D}\x{8292}\x{8299}\x{829D}\x{829F}\x{82A5}\x{82A6}' . +'\x{82AB}\x{82AC}\x{82AD}\x{82AF}\x{82B1}\x{82B3}\x{82B8}\x{82B9}\x{82BB}' . +'\x{82BD}\x{82C5}\x{82D1}\x{82D2}\x{82D3}\x{82D4}\x{82D7}\x{82D9}\x{82DB}' . +'\x{82DC}\x{82DE}\x{82DF}\x{82E1}\x{82E3}\x{82E5}\x{82E6}\x{82E7}\x{82EB}' . +'\x{82F1}\x{82F3}\x{82F4}\x{82F9}\x{82FA}\x{82FB}\x{8302}\x{8303}\x{8304}' . +'\x{8305}\x{8306}\x{8309}\x{830E}\x{8316}\x{8317}\x{8318}\x{831C}\x{8323}' . +'\x{8328}\x{832B}\x{832F}\x{8331}\x{8332}\x{8334}\x{8335}\x{8336}\x{8338}' . +'\x{8339}\x{8340}\x{8345}\x{8349}\x{834A}\x{834F}\x{8350}\x{8352}\x{8358}' . +'\x{8373}\x{8375}\x{8377}\x{837B}\x{837C}\x{8385}\x{8387}\x{8389}\x{838A}' . +'\x{838E}\x{8393}\x{8396}\x{839A}\x{839E}\x{839F}\x{83A0}\x{83A2}\x{83A8}' . +'\x{83AA}\x{83AB}\x{83B1}\x{83B5}\x{83BD}\x{83C1}\x{83C5}\x{83CA}\x{83CC}' . +'\x{83CE}\x{83D3}\x{83D6}\x{83D8}\x{83DC}\x{83DF}\x{83E0}\x{83E9}\x{83EB}' . +'\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F4}\x{83F7}\x{83FB}\x{83FD}\x{8403}' . +'\x{8404}\x{8407}\x{840B}\x{840C}\x{840D}\x{840E}\x{8413}\x{8420}\x{8422}' . +'\x{8429}\x{842A}\x{842C}\x{8431}\x{8435}\x{8438}\x{843C}\x{843D}\x{8446}' . +'\x{8449}\x{844E}\x{8457}\x{845B}\x{8461}\x{8462}\x{8463}\x{8466}\x{8469}' . +'\x{846B}\x{846C}\x{846D}\x{846E}\x{846F}\x{8471}\x{8475}\x{8477}\x{8479}' . +'\x{847A}\x{8482}\x{8484}\x{848B}\x{8490}\x{8494}\x{8499}\x{849C}\x{849F}' . +'\x{84A1}\x{84AD}\x{84B2}\x{84B8}\x{84B9}\x{84BB}\x{84BC}\x{84BF}\x{84C1}' . +'\x{84C4}\x{84C6}\x{84C9}\x{84CA}\x{84CB}\x{84CD}\x{84D0}\x{84D1}\x{84D6}' . +'\x{84D9}\x{84DA}\x{84EC}\x{84EE}\x{84F4}\x{84FC}\x{84FF}\x{8500}\x{8506}' . +'\x{8511}\x{8513}\x{8514}\x{8515}\x{8517}\x{8518}\x{851A}\x{851F}\x{8521}' . +'\x{8526}\x{852C}\x{852D}\x{8535}\x{853D}\x{8540}\x{8541}\x{8543}\x{8548}' . +'\x{8549}\x{854A}\x{854B}\x{854E}\x{8555}\x{8557}\x{8558}\x{855A}\x{8563}' . +'\x{8568}\x{8569}\x{856A}\x{856D}\x{8577}\x{857E}\x{8580}\x{8584}\x{8587}' . +'\x{8588}\x{858A}\x{8590}\x{8591}\x{8594}\x{8597}\x{8599}\x{859B}\x{859C}' . +'\x{85A4}\x{85A6}\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AE}\x{85AF}' . +'\x{85B9}\x{85BA}\x{85C1}\x{85C9}\x{85CD}\x{85CF}\x{85D0}\x{85D5}\x{85DC}' . +'\x{85DD}\x{85E4}\x{85E5}\x{85E9}\x{85EA}\x{85F7}\x{85F9}\x{85FA}\x{85FB}' . +'\x{85FE}\x{8602}\x{8606}\x{8607}\x{860A}\x{860B}\x{8613}\x{8616}\x{8617}' . +'\x{861A}\x{8622}\x{862D}\x{862F}\x{8630}\x{863F}\x{864D}\x{864E}\x{8650}' . +'\x{8654}\x{8655}\x{865A}\x{865C}\x{865E}\x{865F}\x{8667}\x{866B}\x{8671}' . +'\x{8679}\x{867B}\x{868A}\x{868B}\x{868C}\x{8693}\x{8695}\x{86A3}\x{86A4}' . +'\x{86A9}\x{86AA}\x{86AB}\x{86AF}\x{86B0}\x{86B6}\x{86C4}\x{86C6}\x{86C7}' . +'\x{86C9}\x{86CB}\x{86CD}\x{86CE}\x{86D4}\x{86D9}\x{86DB}\x{86DE}\x{86DF}' . +'\x{86E4}\x{86E9}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F8}\x{86F9}\x{86FB}' . +'\x{86FE}\x{8700}\x{8702}\x{8703}\x{8706}\x{8708}\x{8709}\x{870A}\x{870D}' . +'\x{8711}\x{8712}\x{8718}\x{871A}\x{871C}\x{8725}\x{8729}\x{8734}\x{8737}' . +'\x{873B}\x{873F}\x{8749}\x{874B}\x{874C}\x{874E}\x{8753}\x{8755}\x{8757}' . +'\x{8759}\x{875F}\x{8760}\x{8763}\x{8766}\x{8768}\x{876A}\x{876E}\x{8774}' . +'\x{8776}\x{8778}\x{877F}\x{8782}\x{878D}\x{879F}\x{87A2}\x{87AB}\x{87AF}' . +'\x{87B3}\x{87BA}\x{87BB}\x{87BD}\x{87C0}\x{87C4}\x{87C6}\x{87C7}\x{87CB}' . +'\x{87D0}\x{87D2}\x{87E0}\x{87EF}\x{87F2}\x{87F6}\x{87F7}\x{87F9}\x{87FB}' . +'\x{87FE}\x{8805}\x{880D}\x{880E}\x{880F}\x{8811}\x{8815}\x{8816}\x{8821}' . +'\x{8822}\x{8823}\x{8827}\x{8831}\x{8836}\x{8839}\x{883B}\x{8840}\x{8842}' . +'\x{8844}\x{8846}\x{884C}\x{884D}\x{8852}\x{8853}\x{8857}\x{8859}\x{885B}' . +'\x{885D}\x{885E}\x{8861}\x{8862}\x{8863}\x{8868}\x{886B}\x{8870}\x{8872}' . +'\x{8875}\x{8877}\x{887D}\x{887E}\x{887F}\x{8881}\x{8882}\x{8888}\x{888B}' . +'\x{888D}\x{8892}\x{8896}\x{8897}\x{8899}\x{889E}\x{88A2}\x{88A4}\x{88AB}' . +'\x{88AE}\x{88B0}\x{88B1}\x{88B4}\x{88B5}\x{88B7}\x{88BF}\x{88C1}\x{88C2}' . +'\x{88C3}\x{88C4}\x{88C5}\x{88CF}\x{88D4}\x{88D5}\x{88D8}\x{88D9}\x{88DC}' . +'\x{88DD}\x{88DF}\x{88E1}\x{88E8}\x{88F2}\x{88F3}\x{88F4}\x{88F8}\x{88F9}' . +'\x{88FC}\x{88FD}\x{88FE}\x{8902}\x{8904}\x{8907}\x{890A}\x{890C}\x{8910}' . +'\x{8912}\x{8913}\x{891D}\x{891E}\x{8925}\x{892A}\x{892B}\x{8936}\x{8938}' . +'\x{893B}\x{8941}\x{8943}\x{8944}\x{894C}\x{894D}\x{8956}\x{895E}\x{895F}' . +'\x{8960}\x{8964}\x{8966}\x{896A}\x{896D}\x{896F}\x{8972}\x{8974}\x{8977}' . +'\x{897E}\x{897F}\x{8981}\x{8983}\x{8986}\x{8987}\x{8988}\x{898A}\x{898B}' . +'\x{898F}\x{8993}\x{8996}\x{8997}\x{8998}\x{899A}\x{89A1}\x{89A6}\x{89A7}' . +'\x{89A9}\x{89AA}\x{89AC}\x{89AF}\x{89B2}\x{89B3}\x{89BA}\x{89BD}\x{89BF}' . +'\x{89C0}\x{89D2}\x{89DA}\x{89DC}\x{89DD}\x{89E3}\x{89E6}\x{89E7}\x{89F4}' . +'\x{89F8}\x{8A00}\x{8A02}\x{8A03}\x{8A08}\x{8A0A}\x{8A0C}\x{8A0E}\x{8A10}' . +'\x{8A13}\x{8A16}\x{8A17}\x{8A18}\x{8A1B}\x{8A1D}\x{8A1F}\x{8A23}\x{8A25}' . +'\x{8A2A}\x{8A2D}\x{8A31}\x{8A33}\x{8A34}\x{8A36}\x{8A3A}\x{8A3B}\x{8A3C}' . +'\x{8A41}\x{8A46}\x{8A48}\x{8A50}\x{8A51}\x{8A52}\x{8A54}\x{8A55}\x{8A5B}' . +'\x{8A5E}\x{8A60}\x{8A62}\x{8A63}\x{8A66}\x{8A69}\x{8A6B}\x{8A6C}\x{8A6D}' . +'\x{8A6E}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A7C}\x{8A82}\x{8A84}\x{8A85}' . +'\x{8A87}\x{8A89}\x{8A8C}\x{8A8D}\x{8A91}\x{8A93}\x{8A95}\x{8A98}\x{8A9A}' . +'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA8}\x{8AAC}' . +'\x{8AAD}\x{8AB0}\x{8AB2}\x{8AB9}\x{8ABC}\x{8ABF}\x{8AC2}\x{8AC4}\x{8AC7}' . +'\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACF}\x{8AD2}\x{8AD6}\x{8ADA}\x{8ADB}\x{8ADC}' . +'\x{8ADE}\x{8AE0}\x{8AE1}\x{8AE2}\x{8AE4}\x{8AE6}\x{8AE7}\x{8AEB}\x{8AED}' . +'\x{8AEE}\x{8AF1}\x{8AF3}\x{8AF7}\x{8AF8}\x{8AFA}\x{8AFE}\x{8B00}\x{8B01}' . +'\x{8B02}\x{8B04}\x{8B07}\x{8B0C}\x{8B0E}\x{8B10}\x{8B14}\x{8B16}\x{8B17}' . +'\x{8B19}\x{8B1A}\x{8B1B}\x{8B1D}\x{8B20}\x{8B21}\x{8B26}\x{8B28}\x{8B2B}' . +'\x{8B2C}\x{8B33}\x{8B39}\x{8B3E}\x{8B41}\x{8B49}\x{8B4C}\x{8B4E}\x{8B4F}' . +'\x{8B56}\x{8B58}\x{8B5A}\x{8B5B}\x{8B5C}\x{8B5F}\x{8B66}\x{8B6B}\x{8B6C}' . +'\x{8B6F}\x{8B70}\x{8B71}\x{8B72}\x{8B74}\x{8B77}\x{8B7D}\x{8B80}\x{8B83}' . +'\x{8B8A}\x{8B8C}\x{8B8E}\x{8B90}\x{8B92}\x{8B93}\x{8B96}\x{8B99}\x{8B9A}' . +'\x{8C37}\x{8C3A}\x{8C3F}\x{8C41}\x{8C46}\x{8C48}\x{8C4A}\x{8C4C}\x{8C4E}' . +'\x{8C50}\x{8C55}\x{8C5A}\x{8C61}\x{8C62}\x{8C6A}\x{8C6B}\x{8C6C}\x{8C78}' . +'\x{8C79}\x{8C7A}\x{8C7C}\x{8C82}\x{8C85}\x{8C89}\x{8C8A}\x{8C8C}\x{8C8D}' . +'\x{8C8E}\x{8C94}\x{8C98}\x{8C9D}\x{8C9E}\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA7}' . +'\x{8CA8}\x{8CA9}\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}' . +'\x{8CB2}\x{8CB3}\x{8CB4}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CBB}\x{8CBC}\x{8CBD}' . +'\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}\x{8CC7}\x{8CC8}\x{8CCA}' . +'\x{8CCD}\x{8CCE}\x{8CD1}\x{8CD3}\x{8CDA}\x{8CDB}\x{8CDC}\x{8CDE}\x{8CE0}' . +'\x{8CE2}\x{8CE3}\x{8CE4}\x{8CE6}\x{8CEA}\x{8CED}\x{8CFA}\x{8CFB}\x{8CFC}' . +'\x{8CFD}\x{8D04}\x{8D05}\x{8D07}\x{8D08}\x{8D0A}\x{8D0B}\x{8D0D}\x{8D0F}' . +'\x{8D10}\x{8D13}\x{8D14}\x{8D16}\x{8D64}\x{8D66}\x{8D67}\x{8D6B}\x{8D6D}' . +'\x{8D70}\x{8D71}\x{8D73}\x{8D74}\x{8D77}\x{8D81}\x{8D85}\x{8D8A}\x{8D99}' . +'\x{8DA3}\x{8DA8}\x{8DB3}\x{8DBA}\x{8DBE}\x{8DC2}\x{8DCB}\x{8DCC}\x{8DCF}' . +'\x{8DD6}\x{8DDA}\x{8DDB}\x{8DDD}\x{8DDF}\x{8DE1}\x{8DE3}\x{8DE8}\x{8DEA}' . +'\x{8DEB}\x{8DEF}\x{8DF3}\x{8DF5}\x{8DFC}\x{8DFF}\x{8E08}\x{8E09}\x{8E0A}' . +'\x{8E0F}\x{8E10}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E2A}\x{8E30}\x{8E34}\x{8E35}' . +'\x{8E42}\x{8E44}\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4C}\x{8E50}\x{8E55}' . +'\x{8E59}\x{8E5F}\x{8E60}\x{8E63}\x{8E64}\x{8E72}\x{8E74}\x{8E76}\x{8E7C}' . +'\x{8E81}\x{8E84}\x{8E85}\x{8E87}\x{8E8A}\x{8E8B}\x{8E8D}\x{8E91}\x{8E93}' . +'\x{8E94}\x{8E99}\x{8EA1}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAF}\x{8EB0}\x{8EB1}' . +'\x{8EBE}\x{8EC5}\x{8EC6}\x{8EC8}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ED2}' . +'\x{8EDB}\x{8EDF}\x{8EE2}\x{8EE3}\x{8EEB}\x{8EF8}\x{8EFB}\x{8EFC}\x{8EFD}' . +'\x{8EFE}\x{8F03}\x{8F05}\x{8F09}\x{8F0A}\x{8F0C}\x{8F12}\x{8F13}\x{8F14}' . +'\x{8F15}\x{8F19}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1F}\x{8F26}\x{8F29}\x{8F2A}' . +'\x{8F2F}\x{8F33}\x{8F38}\x{8F39}\x{8F3B}\x{8F3E}\x{8F3F}\x{8F42}\x{8F44}' . +'\x{8F45}\x{8F46}\x{8F49}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F57}\x{8F5C}\x{8F5F}' . +'\x{8F61}\x{8F62}\x{8F63}\x{8F64}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA3}' . +'\x{8FA7}\x{8FA8}\x{8FAD}\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB7}' . +'\x{8FBA}\x{8FBB}\x{8FBC}\x{8FBF}\x{8FC2}\x{8FC4}\x{8FC5}\x{8FCE}\x{8FD1}' . +'\x{8FD4}\x{8FDA}\x{8FE2}\x{8FE5}\x{8FE6}\x{8FE9}\x{8FEA}\x{8FEB}\x{8FED}' . +'\x{8FEF}\x{8FF0}\x{8FF4}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}\x{8FFD}\x{9000}' . +'\x{9001}\x{9003}\x{9005}\x{9006}\x{900B}\x{900D}\x{900E}\x{900F}\x{9010}' . +'\x{9011}\x{9013}\x{9014}\x{9015}\x{9016}\x{9017}\x{9019}\x{901A}\x{901D}' . +'\x{901E}\x{901F}\x{9020}\x{9021}\x{9022}\x{9023}\x{9027}\x{902E}\x{9031}' . +'\x{9032}\x{9035}\x{9036}\x{9038}\x{9039}\x{903C}\x{903E}\x{9041}\x{9042}' . +'\x{9045}\x{9047}\x{9049}\x{904A}\x{904B}\x{904D}\x{904E}\x{904F}\x{9050}' . +'\x{9051}\x{9052}\x{9053}\x{9054}\x{9055}\x{9056}\x{9058}\x{9059}\x{905C}' . +'\x{905E}\x{9060}\x{9061}\x{9063}\x{9065}\x{9068}\x{9069}\x{906D}\x{906E}' . +'\x{906F}\x{9072}\x{9075}\x{9076}\x{9077}\x{9078}\x{907A}\x{907C}\x{907D}' . +'\x{907F}\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9087}\x{9089}\x{908A}' . +'\x{908F}\x{9091}\x{90A3}\x{90A6}\x{90A8}\x{90AA}\x{90AF}\x{90B1}\x{90B5}' . +'\x{90B8}\x{90C1}\x{90CA}\x{90CE}\x{90DB}\x{90E1}\x{90E2}\x{90E4}\x{90E8}' . +'\x{90ED}\x{90F5}\x{90F7}\x{90FD}\x{9102}\x{9112}\x{9119}\x{912D}\x{9130}' . +'\x{9132}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}\x{914E}\x{9152}\x{9154}' . +'\x{9156}\x{9158}\x{9162}\x{9163}\x{9165}\x{9169}\x{916A}\x{916C}\x{9172}' . +'\x{9173}\x{9175}\x{9177}\x{9178}\x{9182}\x{9187}\x{9189}\x{918B}\x{918D}' . +'\x{9190}\x{9192}\x{9197}\x{919C}\x{91A2}\x{91A4}\x{91AA}\x{91AB}\x{91AF}' . +'\x{91B4}\x{91B5}\x{91B8}\x{91BA}\x{91C0}\x{91C1}\x{91C6}\x{91C7}\x{91C8}' . +'\x{91C9}\x{91CB}\x{91CC}\x{91CD}\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D6}' . +'\x{91D8}\x{91DB}\x{91DC}\x{91DD}\x{91DF}\x{91E1}\x{91E3}\x{91E6}\x{91E7}' . +'\x{91F5}\x{91F6}\x{91FC}\x{91FF}\x{920D}\x{920E}\x{9211}\x{9214}\x{9215}' . +'\x{921E}\x{9229}\x{922C}\x{9234}\x{9237}\x{923F}\x{9244}\x{9245}\x{9248}' . +'\x{9249}\x{924B}\x{9250}\x{9257}\x{925A}\x{925B}\x{925E}\x{9262}\x{9264}' . +'\x{9266}\x{9271}\x{927E}\x{9280}\x{9283}\x{9285}\x{9291}\x{9293}\x{9295}' . +'\x{9296}\x{9298}\x{929A}\x{929B}\x{929C}\x{92AD}\x{92B7}\x{92B9}\x{92CF}' . +'\x{92D2}\x{92E4}\x{92E9}\x{92EA}\x{92ED}\x{92F2}\x{92F3}\x{92F8}\x{92FA}' . +'\x{92FC}\x{9306}\x{930F}\x{9310}\x{9318}\x{9319}\x{931A}\x{9320}\x{9322}' . +'\x{9323}\x{9326}\x{9328}\x{932B}\x{932C}\x{932E}\x{932F}\x{9332}\x{9335}' . +'\x{933A}\x{933B}\x{9344}\x{934B}\x{934D}\x{9354}\x{9356}\x{935B}\x{935C}' . +'\x{9360}\x{936C}\x{936E}\x{9375}\x{937C}\x{937E}\x{938C}\x{9394}\x{9396}' . +'\x{9397}\x{939A}\x{93A7}\x{93AC}\x{93AD}\x{93AE}\x{93B0}\x{93B9}\x{93C3}' . +'\x{93C8}\x{93D0}\x{93D1}\x{93D6}\x{93D7}\x{93D8}\x{93DD}\x{93E1}\x{93E4}' . +'\x{93E5}\x{93E8}\x{9403}\x{9407}\x{9410}\x{9413}\x{9414}\x{9418}\x{9419}' . +'\x{941A}\x{9421}\x{942B}\x{9435}\x{9436}\x{9438}\x{943A}\x{9441}\x{9444}' . +'\x{9451}\x{9452}\x{9453}\x{945A}\x{945B}\x{945E}\x{9460}\x{9462}\x{946A}' . +'\x{9470}\x{9475}\x{9477}\x{947C}\x{947D}\x{947E}\x{947F}\x{9481}\x{9577}' . +'\x{9580}\x{9582}\x{9583}\x{9587}\x{9589}\x{958A}\x{958B}\x{958F}\x{9591}' . +'\x{9593}\x{9594}\x{9596}\x{9598}\x{9599}\x{95A0}\x{95A2}\x{95A3}\x{95A4}' . +'\x{95A5}\x{95A7}\x{95A8}\x{95AD}\x{95B2}\x{95B9}\x{95BB}\x{95BC}\x{95BE}' . +'\x{95C3}\x{95C7}\x{95CA}\x{95CC}\x{95CD}\x{95D4}\x{95D5}\x{95D6}\x{95D8}' . +'\x{95DC}\x{95E1}\x{95E2}\x{95E5}\x{961C}\x{9621}\x{9628}\x{962A}\x{962E}' . +'\x{962F}\x{9632}\x{963B}\x{963F}\x{9640}\x{9642}\x{9644}\x{964B}\x{964C}' . +'\x{964D}\x{964F}\x{9650}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9662}' . +'\x{9663}\x{9664}\x{9665}\x{9666}\x{966A}\x{966C}\x{9670}\x{9672}\x{9673}' . +'\x{9675}\x{9676}\x{9677}\x{9678}\x{967A}\x{967D}\x{9685}\x{9686}\x{9688}' . +'\x{968A}\x{968B}\x{968D}\x{968E}\x{968F}\x{9694}\x{9695}\x{9697}\x{9698}' . +'\x{9699}\x{969B}\x{969C}\x{96A0}\x{96A3}\x{96A7}\x{96A8}\x{96AA}\x{96B0}' . +'\x{96B1}\x{96B2}\x{96B4}\x{96B6}\x{96B7}\x{96B8}\x{96B9}\x{96BB}\x{96BC}' . +'\x{96C0}\x{96C1}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C9}\x{96CB}\x{96CC}' . +'\x{96CD}\x{96CE}\x{96D1}\x{96D5}\x{96D6}\x{96D9}\x{96DB}\x{96DC}\x{96E2}' . +'\x{96E3}\x{96E8}\x{96EA}\x{96EB}\x{96F0}\x{96F2}\x{96F6}\x{96F7}\x{96F9}' . +'\x{96FB}\x{9700}\x{9704}\x{9706}\x{9707}\x{9708}\x{970A}\x{970D}\x{970E}' . +'\x{970F}\x{9711}\x{9713}\x{9716}\x{9719}\x{971C}\x{971E}\x{9724}\x{9727}' . +'\x{972A}\x{9730}\x{9732}\x{9738}\x{9739}\x{973D}\x{973E}\x{9742}\x{9744}' . +'\x{9746}\x{9748}\x{9749}\x{9752}\x{9756}\x{9759}\x{975C}\x{975E}\x{9760}' . +'\x{9761}\x{9762}\x{9764}\x{9766}\x{9768}\x{9769}\x{976B}\x{976D}\x{9771}' . +'\x{9774}\x{9779}\x{977A}\x{977C}\x{9781}\x{9784}\x{9785}\x{9786}\x{978B}' . +'\x{978D}\x{978F}\x{9790}\x{9798}\x{979C}\x{97A0}\x{97A3}\x{97A6}\x{97A8}' . +'\x{97AB}\x{97AD}\x{97B3}\x{97B4}\x{97C3}\x{97C6}\x{97C8}\x{97CB}\x{97D3}' . +'\x{97DC}\x{97ED}\x{97EE}\x{97F2}\x{97F3}\x{97F5}\x{97F6}\x{97FB}\x{97FF}' . +'\x{9801}\x{9802}\x{9803}\x{9805}\x{9806}\x{9808}\x{980C}\x{980F}\x{9810}' . +'\x{9811}\x{9812}\x{9813}\x{9817}\x{9818}\x{981A}\x{9821}\x{9824}\x{982C}' . +'\x{982D}\x{9834}\x{9837}\x{9838}\x{983B}\x{983C}\x{983D}\x{9846}\x{984B}' . +'\x{984C}\x{984D}\x{984E}\x{984F}\x{9854}\x{9855}\x{9858}\x{985B}\x{985E}' . +'\x{9867}\x{986B}\x{986F}\x{9870}\x{9871}\x{9873}\x{9874}\x{98A8}\x{98AA}' . +'\x{98AF}\x{98B1}\x{98B6}\x{98C3}\x{98C4}\x{98C6}\x{98DB}\x{98DC}\x{98DF}' . +'\x{98E2}\x{98E9}\x{98EB}\x{98ED}\x{98EE}\x{98EF}\x{98F2}\x{98F4}\x{98FC}' . +'\x{98FD}\x{98FE}\x{9903}\x{9905}\x{9909}\x{990A}\x{990C}\x{9910}\x{9912}' . +'\x{9913}\x{9914}\x{9918}\x{991D}\x{991E}\x{9920}\x{9921}\x{9924}\x{9928}' . +'\x{992C}\x{992E}\x{993D}\x{993E}\x{9942}\x{9945}\x{9949}\x{994B}\x{994C}' . +'\x{9950}\x{9951}\x{9952}\x{9955}\x{9957}\x{9996}\x{9997}\x{9998}\x{9999}' . +'\x{99A5}\x{99A8}\x{99AC}\x{99AD}\x{99AE}\x{99B3}\x{99B4}\x{99BC}\x{99C1}' . +'\x{99C4}\x{99C5}\x{99C6}\x{99C8}\x{99D0}\x{99D1}\x{99D2}\x{99D5}\x{99D8}' . +'\x{99DB}\x{99DD}\x{99DF}\x{99E2}\x{99ED}\x{99EE}\x{99F1}\x{99F2}\x{99F8}' . +'\x{99FB}\x{99FF}\x{9A01}\x{9A05}\x{9A0E}\x{9A0F}\x{9A12}\x{9A13}\x{9A19}' . +'\x{9A28}\x{9A2B}\x{9A30}\x{9A37}\x{9A3E}\x{9A40}\x{9A42}\x{9A43}\x{9A45}' . +'\x{9A4D}\x{9A55}\x{9A57}\x{9A5A}\x{9A5B}\x{9A5F}\x{9A62}\x{9A64}\x{9A65}' . +'\x{9A69}\x{9A6A}\x{9A6B}\x{9AA8}\x{9AAD}\x{9AB0}\x{9AB8}\x{9ABC}\x{9AC0}' . +'\x{9AC4}\x{9ACF}\x{9AD1}\x{9AD3}\x{9AD4}\x{9AD8}\x{9ADE}\x{9ADF}\x{9AE2}' . +'\x{9AE3}\x{9AE6}\x{9AEA}\x{9AEB}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF4}' . +'\x{9AF7}\x{9AFB}\x{9B06}\x{9B18}\x{9B1A}\x{9B1F}\x{9B22}\x{9B23}\x{9B25}' . +'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2E}\x{9B2F}\x{9B31}\x{9B32}\x{9B3B}' . +'\x{9B3C}\x{9B41}\x{9B42}\x{9B43}\x{9B44}\x{9B45}\x{9B4D}\x{9B4E}\x{9B4F}' . +'\x{9B51}\x{9B54}\x{9B58}\x{9B5A}\x{9B6F}\x{9B74}\x{9B83}\x{9B8E}\x{9B91}' . +'\x{9B92}\x{9B93}\x{9B96}\x{9B97}\x{9B9F}\x{9BA0}\x{9BA8}\x{9BAA}\x{9BAB}' . +'\x{9BAD}\x{9BAE}\x{9BB4}\x{9BB9}\x{9BC0}\x{9BC6}\x{9BC9}\x{9BCA}\x{9BCF}' . +'\x{9BD1}\x{9BD2}\x{9BD4}\x{9BD6}\x{9BDB}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}' . +'\x{9BE8}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF5}\x{9C04}\x{9C06}\x{9C08}\x{9C09}' . +'\x{9C0A}\x{9C0C}\x{9C0D}\x{9C10}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C1B}' . +'\x{9C21}\x{9C24}\x{9C25}\x{9C2D}\x{9C2E}\x{9C2F}\x{9C30}\x{9C32}\x{9C39}' . +'\x{9C3A}\x{9C3B}\x{9C3E}\x{9C46}\x{9C47}\x{9C48}\x{9C52}\x{9C57}\x{9C5A}' . +'\x{9C60}\x{9C67}\x{9C76}\x{9C78}\x{9CE5}\x{9CE7}\x{9CE9}\x{9CEB}\x{9CEC}' . +'\x{9CF0}\x{9CF3}\x{9CF4}\x{9CF6}\x{9D03}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' . +'\x{9D0E}\x{9D12}\x{9D15}\x{9D1B}\x{9D1F}\x{9D23}\x{9D26}\x{9D28}\x{9D2A}' . +'\x{9D2B}\x{9D2C}\x{9D3B}\x{9D3E}\x{9D3F}\x{9D41}\x{9D44}\x{9D46}\x{9D48}' . +'\x{9D50}\x{9D51}\x{9D59}\x{9D5C}\x{9D5D}\x{9D5E}\x{9D60}\x{9D61}\x{9D64}' . +'\x{9D6C}\x{9D6F}\x{9D72}\x{9D7A}\x{9D87}\x{9D89}\x{9D8F}\x{9D9A}\x{9DA4}' . +'\x{9DA9}\x{9DAB}\x{9DAF}\x{9DB2}\x{9DB4}\x{9DB8}\x{9DBA}\x{9DBB}\x{9DC1}' . +'\x{9DC2}\x{9DC4}\x{9DC6}\x{9DCF}\x{9DD3}\x{9DD9}\x{9DE6}\x{9DED}\x{9DEF}' . +'\x{9DF2}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFD}\x{9E1A}\x{9E1B}\x{9E1E}\x{9E75}' . +'\x{9E78}\x{9E79}\x{9E7D}\x{9E7F}\x{9E81}\x{9E88}\x{9E8B}\x{9E8C}\x{9E91}' . +'\x{9E92}\x{9E93}\x{9E95}\x{9E97}\x{9E9D}\x{9E9F}\x{9EA5}\x{9EA6}\x{9EA9}' . +'\x{9EAA}\x{9EAD}\x{9EB8}\x{9EB9}\x{9EBA}\x{9EBB}\x{9EBC}\x{9EBE}\x{9EBF}' . +'\x{9EC4}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED2}\x{9ED4}\x{9ED8}' . +'\x{9ED9}\x{9EDB}\x{9EDC}\x{9EDD}\x{9EDE}\x{9EE0}\x{9EE5}\x{9EE8}\x{9EEF}' . +'\x{9EF4}\x{9EF6}\x{9EF7}\x{9EF9}\x{9EFB}\x{9EFC}\x{9EFD}\x{9F07}\x{9F08}' . +'\x{9F0E}\x{9F13}\x{9F15}\x{9F20}\x{9F21}\x{9F2C}\x{9F3B}\x{9F3E}\x{9F4A}' . +'\x{9F4B}\x{9F4E}\x{9F4F}\x{9F52}\x{9F54}\x{9F5F}\x{9F60}\x{9F61}\x{9F62}' . +'\x{9F63}\x{9F66}\x{9F67}\x{9F6A}\x{9F6C}\x{9F72}\x{9F76}\x{9F77}\x{9F8D}' . +'\x{9F95}\x{9F9C}\x{9F9D}\x{9FA0}]{1,15}$/iu', + 12 => '/^[\x{002d}0-9a-z\x{3447}\x{3473}\x{359E}\x{360E}\x{361A}\x{3918}\x{396E}\x{39CF}\x{39D0}' . +'\x{39DF}\x{3A73}\x{3B4E}\x{3C6E}\x{3CE0}\x{4056}\x{415F}\x{4337}\x{43AC}' . +'\x{43B1}\x{43DD}\x{44D6}\x{464C}\x{4661}\x{4723}\x{4729}\x{477C}\x{478D}' . +'\x{4947}\x{497A}\x{497D}\x{4982}\x{4983}\x{4985}\x{4986}\x{499B}\x{499F}' . +'\x{49B6}\x{49B7}\x{4C77}\x{4C9F}\x{4CA0}\x{4CA1}\x{4CA2}\x{4CA3}\x{4D13}' . +'\x{4D14}\x{4D15}\x{4D16}\x{4D17}\x{4D18}\x{4D19}\x{4DAE}\x{4E00}\x{4E01}' . +'\x{4E02}\x{4E03}\x{4E04}\x{4E05}\x{4E06}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' . +'\x{4E0B}\x{4E0C}\x{4E0D}\x{4E0E}\x{4E0F}\x{4E10}\x{4E11}\x{4E13}\x{4E14}' . +'\x{4E15}\x{4E16}\x{4E17}\x{4E18}\x{4E19}\x{4E1A}\x{4E1B}\x{4E1C}\x{4E1D}' . +'\x{4E1E}\x{4E1F}\x{4E20}\x{4E21}\x{4E22}\x{4E23}\x{4E24}\x{4E25}\x{4E26}' . +'\x{4E27}\x{4E28}\x{4E2A}\x{4E2B}\x{4E2C}\x{4E2D}\x{4E2E}\x{4E2F}\x{4E30}' . +'\x{4E31}\x{4E32}\x{4E33}\x{4E34}\x{4E35}\x{4E36}\x{4E37}\x{4E38}\x{4E39}' . +'\x{4E3A}\x{4E3B}\x{4E3C}\x{4E3D}\x{4E3E}\x{4E3F}\x{4E40}\x{4E41}\x{4E42}' . +'\x{4E43}\x{4E44}\x{4E45}\x{4E46}\x{4E47}\x{4E48}\x{4E49}\x{4E4A}\x{4E4B}' . +'\x{4E4C}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E50}\x{4E51}\x{4E52}\x{4E53}\x{4E54}' . +'\x{4E56}\x{4E57}\x{4E58}\x{4E59}\x{4E5A}\x{4E5B}\x{4E5C}\x{4E5D}\x{4E5E}' . +'\x{4E5F}\x{4E60}\x{4E61}\x{4E62}\x{4E63}\x{4E64}\x{4E65}\x{4E66}\x{4E67}' . +'\x{4E69}\x{4E6A}\x{4E6B}\x{4E6C}\x{4E6D}\x{4E6E}\x{4E6F}\x{4E70}\x{4E71}' . +'\x{4E72}\x{4E73}\x{4E74}\x{4E75}\x{4E76}\x{4E77}\x{4E78}\x{4E7A}\x{4E7B}' . +'\x{4E7C}\x{4E7D}\x{4E7E}\x{4E7F}\x{4E80}\x{4E81}\x{4E82}\x{4E83}\x{4E84}' . +'\x{4E85}\x{4E86}\x{4E87}\x{4E88}\x{4E89}\x{4E8B}\x{4E8C}\x{4E8D}\x{4E8E}' . +'\x{4E8F}\x{4E90}\x{4E91}\x{4E92}\x{4E93}\x{4E94}\x{4E95}\x{4E97}\x{4E98}' . +'\x{4E99}\x{4E9A}\x{4E9B}\x{4E9C}\x{4E9D}\x{4E9E}\x{4E9F}\x{4EA0}\x{4EA1}' . +'\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA7}\x{4EA8}\x{4EA9}\x{4EAA}\x{4EAB}' . +'\x{4EAC}\x{4EAD}\x{4EAE}\x{4EAF}\x{4EB0}\x{4EB1}\x{4EB2}\x{4EB3}\x{4EB4}' . +'\x{4EB5}\x{4EB6}\x{4EB7}\x{4EB8}\x{4EB9}\x{4EBA}\x{4EBB}\x{4EBD}\x{4EBE}' . +'\x{4EBF}\x{4EC0}\x{4EC1}\x{4EC2}\x{4EC3}\x{4EC4}\x{4EC5}\x{4EC6}\x{4EC7}' . +'\x{4EC8}\x{4EC9}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED0}\x{4ED1}' . +'\x{4ED2}\x{4ED3}\x{4ED4}\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDA}' . +'\x{4EDB}\x{4EDC}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE0}\x{4EE1}\x{4EE2}\x{4EE3}' . +'\x{4EE4}\x{4EE5}\x{4EE6}\x{4EE8}\x{4EE9}\x{4EEA}\x{4EEB}\x{4EEC}\x{4EEF}' . +'\x{4EF0}\x{4EF1}\x{4EF2}\x{4EF3}\x{4EF4}\x{4EF5}\x{4EF6}\x{4EF7}\x{4EFB}' . +'\x{4EFD}\x{4EFF}\x{4F00}\x{4F01}\x{4F02}\x{4F03}\x{4F04}\x{4F05}\x{4F06}' . +'\x{4F08}\x{4F09}\x{4F0A}\x{4F0B}\x{4F0C}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}' . +'\x{4F11}\x{4F12}\x{4F13}\x{4F14}\x{4F15}\x{4F17}\x{4F18}\x{4F19}\x{4F1A}' . +'\x{4F1B}\x{4F1C}\x{4F1D}\x{4F1E}\x{4F1F}\x{4F20}\x{4F21}\x{4F22}\x{4F23}' . +'\x{4F24}\x{4F25}\x{4F26}\x{4F27}\x{4F29}\x{4F2A}\x{4F2B}\x{4F2C}\x{4F2D}' . +'\x{4F2E}\x{4F2F}\x{4F30}\x{4F32}\x{4F33}\x{4F34}\x{4F36}\x{4F38}\x{4F39}' . +'\x{4F3A}\x{4F3B}\x{4F3C}\x{4F3D}\x{4F3E}\x{4F3F}\x{4F41}\x{4F42}\x{4F43}' . +'\x{4F45}\x{4F46}\x{4F47}\x{4F48}\x{4F49}\x{4F4A}\x{4F4B}\x{4F4C}\x{4F4D}' . +'\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}\x{4F52}\x{4F53}\x{4F54}\x{4F55}\x{4F56}' . +'\x{4F57}\x{4F58}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}\x{4F5F}' . +'\x{4F60}\x{4F61}\x{4F62}\x{4F63}\x{4F64}\x{4F65}\x{4F66}\x{4F67}\x{4F68}' . +'\x{4F69}\x{4F6A}\x{4F6B}\x{4F6C}\x{4F6D}\x{4F6E}\x{4F6F}\x{4F70}\x{4F72}' . +'\x{4F73}\x{4F74}\x{4F75}\x{4F76}\x{4F77}\x{4F78}\x{4F79}\x{4F7A}\x{4F7B}' . +'\x{4F7C}\x{4F7D}\x{4F7E}\x{4F7F}\x{4F80}\x{4F81}\x{4F82}\x{4F83}\x{4F84}' . +'\x{4F85}\x{4F86}\x{4F87}\x{4F88}\x{4F89}\x{4F8A}\x{4F8B}\x{4F8D}\x{4F8F}' . +'\x{4F90}\x{4F91}\x{4F92}\x{4F93}\x{4F94}\x{4F95}\x{4F96}\x{4F97}\x{4F98}' . +'\x{4F99}\x{4F9A}\x{4F9B}\x{4F9C}\x{4F9D}\x{4F9E}\x{4F9F}\x{4FA0}\x{4FA1}' . +'\x{4FA3}\x{4FA4}\x{4FA5}\x{4FA6}\x{4FA7}\x{4FA8}\x{4FA9}\x{4FAA}\x{4FAB}' . +'\x{4FAC}\x{4FAE}\x{4FAF}\x{4FB0}\x{4FB1}\x{4FB2}\x{4FB3}\x{4FB4}\x{4FB5}' . +'\x{4FB6}\x{4FB7}\x{4FB8}\x{4FB9}\x{4FBA}\x{4FBB}\x{4FBC}\x{4FBE}\x{4FBF}' . +'\x{4FC0}\x{4FC1}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FC5}\x{4FC7}\x{4FC9}\x{4FCA}' . +'\x{4FCB}\x{4FCD}\x{4FCE}\x{4FCF}\x{4FD0}\x{4FD1}\x{4FD2}\x{4FD3}\x{4FD4}' . +'\x{4FD5}\x{4FD6}\x{4FD7}\x{4FD8}\x{4FD9}\x{4FDA}\x{4FDB}\x{4FDC}\x{4FDD}' . +'\x{4FDE}\x{4FDF}\x{4FE0}\x{4FE1}\x{4FE3}\x{4FE4}\x{4FE5}\x{4FE6}\x{4FE7}' . +'\x{4FE8}\x{4FE9}\x{4FEA}\x{4FEB}\x{4FEC}\x{4FED}\x{4FEE}\x{4FEF}\x{4FF0}' . +'\x{4FF1}\x{4FF2}\x{4FF3}\x{4FF4}\x{4FF5}\x{4FF6}\x{4FF7}\x{4FF8}\x{4FF9}' . +'\x{4FFA}\x{4FFB}\x{4FFE}\x{4FFF}\x{5000}\x{5001}\x{5002}\x{5003}\x{5004}' . +'\x{5005}\x{5006}\x{5007}\x{5008}\x{5009}\x{500A}\x{500B}\x{500C}\x{500D}' . +'\x{500E}\x{500F}\x{5011}\x{5012}\x{5013}\x{5014}\x{5015}\x{5016}\x{5017}' . +'\x{5018}\x{5019}\x{501A}\x{501B}\x{501C}\x{501D}\x{501E}\x{501F}\x{5020}' . +'\x{5021}\x{5022}\x{5023}\x{5024}\x{5025}\x{5026}\x{5027}\x{5028}\x{5029}' . +'\x{502A}\x{502B}\x{502C}\x{502D}\x{502E}\x{502F}\x{5030}\x{5031}\x{5032}' . +'\x{5033}\x{5035}\x{5036}\x{5037}\x{5039}\x{503A}\x{503B}\x{503C}\x{503E}' . +'\x{503F}\x{5040}\x{5041}\x{5043}\x{5044}\x{5045}\x{5046}\x{5047}\x{5048}' . +'\x{5049}\x{504A}\x{504B}\x{504C}\x{504D}\x{504E}\x{504F}\x{5051}\x{5053}' . +'\x{5054}\x{5055}\x{5056}\x{5057}\x{5059}\x{505A}\x{505B}\x{505C}\x{505D}' . +'\x{505E}\x{505F}\x{5060}\x{5061}\x{5062}\x{5063}\x{5064}\x{5065}\x{5066}' . +'\x{5067}\x{5068}\x{5069}\x{506A}\x{506B}\x{506C}\x{506D}\x{506E}\x{506F}' . +'\x{5070}\x{5071}\x{5072}\x{5073}\x{5074}\x{5075}\x{5076}\x{5077}\x{5078}' . +'\x{5079}\x{507A}\x{507B}\x{507D}\x{507E}\x{507F}\x{5080}\x{5082}\x{5083}' . +'\x{5084}\x{5085}\x{5086}\x{5087}\x{5088}\x{5089}\x{508A}\x{508B}\x{508C}' . +'\x{508D}\x{508E}\x{508F}\x{5090}\x{5091}\x{5092}\x{5094}\x{5095}\x{5096}' . +'\x{5098}\x{5099}\x{509A}\x{509B}\x{509C}\x{509D}\x{509E}\x{50A2}\x{50A3}' . +'\x{50A4}\x{50A5}\x{50A6}\x{50A7}\x{50A8}\x{50A9}\x{50AA}\x{50AB}\x{50AC}' . +'\x{50AD}\x{50AE}\x{50AF}\x{50B0}\x{50B1}\x{50B2}\x{50B3}\x{50B4}\x{50B5}' . +'\x{50B6}\x{50B7}\x{50B8}\x{50BA}\x{50BB}\x{50BC}\x{50BD}\x{50BE}\x{50BF}' . +'\x{50C0}\x{50C1}\x{50C2}\x{50C4}\x{50C5}\x{50C6}\x{50C7}\x{50C8}\x{50C9}' . +'\x{50CA}\x{50CB}\x{50CC}\x{50CD}\x{50CE}\x{50CF}\x{50D0}\x{50D1}\x{50D2}' . +'\x{50D3}\x{50D4}\x{50D5}\x{50D6}\x{50D7}\x{50D9}\x{50DA}\x{50DB}\x{50DC}' . +'\x{50DD}\x{50DE}\x{50E0}\x{50E3}\x{50E4}\x{50E5}\x{50E6}\x{50E7}\x{50E8}' . +'\x{50E9}\x{50EA}\x{50EC}\x{50ED}\x{50EE}\x{50EF}\x{50F0}\x{50F1}\x{50F2}' . +'\x{50F3}\x{50F5}\x{50F6}\x{50F8}\x{50F9}\x{50FA}\x{50FB}\x{50FC}\x{50FD}' . +'\x{50FE}\x{50FF}\x{5100}\x{5101}\x{5102}\x{5103}\x{5104}\x{5105}\x{5106}' . +'\x{5107}\x{5108}\x{5109}\x{510A}\x{510B}\x{510C}\x{510D}\x{510E}\x{510F}' . +'\x{5110}\x{5111}\x{5112}\x{5113}\x{5114}\x{5115}\x{5116}\x{5117}\x{5118}' . +'\x{5119}\x{511A}\x{511C}\x{511D}\x{511E}\x{511F}\x{5120}\x{5121}\x{5122}' . +'\x{5123}\x{5124}\x{5125}\x{5126}\x{5127}\x{5129}\x{512A}\x{512C}\x{512D}' . +'\x{512E}\x{512F}\x{5130}\x{5131}\x{5132}\x{5133}\x{5134}\x{5135}\x{5136}' . +'\x{5137}\x{5138}\x{5139}\x{513A}\x{513B}\x{513C}\x{513D}\x{513E}\x{513F}' . +'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' . +'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5151}\x{5152}\x{5154}\x{5155}' . +'\x{5156}\x{5157}\x{5159}\x{515A}\x{515B}\x{515C}\x{515D}\x{515E}\x{515F}' . +'\x{5161}\x{5162}\x{5163}\x{5165}\x{5166}\x{5167}\x{5168}\x{5169}\x{516A}' . +'\x{516B}\x{516C}\x{516D}\x{516E}\x{516F}\x{5170}\x{5171}\x{5173}\x{5174}' . +'\x{5175}\x{5176}\x{5177}\x{5178}\x{5179}\x{517A}\x{517B}\x{517C}\x{517D}' . +'\x{517F}\x{5180}\x{5181}\x{5182}\x{5185}\x{5186}\x{5187}\x{5188}\x{5189}' . +'\x{518A}\x{518B}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}\x{5193}' . +'\x{5194}\x{5195}\x{5196}\x{5197}\x{5198}\x{5199}\x{519A}\x{519B}\x{519C}' . +'\x{519D}\x{519E}\x{519F}\x{51A0}\x{51A2}\x{51A4}\x{51A5}\x{51A6}\x{51A7}' . +'\x{51A8}\x{51AA}\x{51AB}\x{51AC}\x{51AE}\x{51AF}\x{51B0}\x{51B1}\x{51B2}' . +'\x{51B3}\x{51B5}\x{51B6}\x{51B7}\x{51B9}\x{51BB}\x{51BC}\x{51BD}\x{51BE}' . +'\x{51BF}\x{51C0}\x{51C1}\x{51C3}\x{51C4}\x{51C5}\x{51C6}\x{51C7}\x{51C8}' . +'\x{51C9}\x{51CA}\x{51CB}\x{51CC}\x{51CD}\x{51CE}\x{51CF}\x{51D0}\x{51D1}' . +'\x{51D4}\x{51D5}\x{51D6}\x{51D7}\x{51D8}\x{51D9}\x{51DA}\x{51DB}\x{51DC}' . +'\x{51DD}\x{51DE}\x{51E0}\x{51E1}\x{51E2}\x{51E3}\x{51E4}\x{51E5}\x{51E7}' . +'\x{51E8}\x{51E9}\x{51EA}\x{51EB}\x{51ED}\x{51EF}\x{51F0}\x{51F1}\x{51F3}' . +'\x{51F4}\x{51F5}\x{51F6}\x{51F7}\x{51F8}\x{51F9}\x{51FA}\x{51FB}\x{51FC}' . +'\x{51FD}\x{51FE}\x{51FF}\x{5200}\x{5201}\x{5202}\x{5203}\x{5204}\x{5205}' . +'\x{5206}\x{5207}\x{5208}\x{5209}\x{520A}\x{520B}\x{520C}\x{520D}\x{520E}' . +'\x{520F}\x{5210}\x{5211}\x{5212}\x{5213}\x{5214}\x{5215}\x{5216}\x{5217}' . +'\x{5218}\x{5219}\x{521A}\x{521B}\x{521C}\x{521D}\x{521E}\x{521F}\x{5220}' . +'\x{5221}\x{5222}\x{5223}\x{5224}\x{5225}\x{5226}\x{5228}\x{5229}\x{522A}' . +'\x{522B}\x{522C}\x{522D}\x{522E}\x{522F}\x{5230}\x{5231}\x{5232}\x{5233}' . +'\x{5234}\x{5235}\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{523C}' . +'\x{523D}\x{523E}\x{523F}\x{5240}\x{5241}\x{5242}\x{5243}\x{5244}\x{5245}' . +'\x{5246}\x{5247}\x{5248}\x{5249}\x{524A}\x{524B}\x{524C}\x{524D}\x{524E}' . +'\x{5250}\x{5251}\x{5252}\x{5254}\x{5255}\x{5256}\x{5257}\x{5258}\x{5259}' . +'\x{525A}\x{525B}\x{525C}\x{525D}\x{525E}\x{525F}\x{5260}\x{5261}\x{5262}' . +'\x{5263}\x{5264}\x{5265}\x{5267}\x{5268}\x{5269}\x{526A}\x{526B}\x{526C}' . +'\x{526D}\x{526E}\x{526F}\x{5270}\x{5272}\x{5273}\x{5274}\x{5275}\x{5276}' . +'\x{5277}\x{5278}\x{527A}\x{527B}\x{527C}\x{527D}\x{527E}\x{527F}\x{5280}' . +'\x{5281}\x{5282}\x{5283}\x{5284}\x{5286}\x{5287}\x{5288}\x{5289}\x{528A}' . +'\x{528B}\x{528C}\x{528D}\x{528F}\x{5290}\x{5291}\x{5292}\x{5293}\x{5294}' . +'\x{5295}\x{5296}\x{5297}\x{5298}\x{5299}\x{529A}\x{529B}\x{529C}\x{529D}' . +'\x{529E}\x{529F}\x{52A0}\x{52A1}\x{52A2}\x{52A3}\x{52A5}\x{52A6}\x{52A7}' . +'\x{52A8}\x{52A9}\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52AE}\x{52AF}\x{52B0}' . +'\x{52B1}\x{52B2}\x{52B3}\x{52B4}\x{52B5}\x{52B6}\x{52B7}\x{52B8}\x{52B9}' . +'\x{52BA}\x{52BB}\x{52BC}\x{52BD}\x{52BE}\x{52BF}\x{52C0}\x{52C1}\x{52C2}' . +'\x{52C3}\x{52C6}\x{52C7}\x{52C9}\x{52CA}\x{52CB}\x{52CD}\x{52CF}\x{52D0}' . +'\x{52D2}\x{52D3}\x{52D5}\x{52D6}\x{52D7}\x{52D8}\x{52D9}\x{52DA}\x{52DB}' . +'\x{52DC}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}\x{52E4}\x{52E6}' . +'\x{52E7}\x{52E8}\x{52E9}\x{52EA}\x{52EB}\x{52EC}\x{52ED}\x{52EF}\x{52F0}' . +'\x{52F1}\x{52F2}\x{52F3}\x{52F4}\x{52F5}\x{52F6}\x{52F7}\x{52F8}\x{52F9}' . +'\x{52FA}\x{52FB}\x{52FC}\x{52FD}\x{52FE}\x{52FF}\x{5300}\x{5301}\x{5302}' . +'\x{5305}\x{5306}\x{5307}\x{5308}\x{5309}\x{530A}\x{530B}\x{530C}\x{530D}' . +'\x{530E}\x{530F}\x{5310}\x{5311}\x{5312}\x{5313}\x{5314}\x{5315}\x{5316}' . +'\x{5317}\x{5319}\x{531A}\x{531C}\x{531D}\x{531F}\x{5320}\x{5321}\x{5322}' . +'\x{5323}\x{5324}\x{5325}\x{5326}\x{5328}\x{532A}\x{532B}\x{532C}\x{532D}' . +'\x{532E}\x{532F}\x{5330}\x{5331}\x{5333}\x{5334}\x{5337}\x{5339}\x{533A}' . +'\x{533B}\x{533C}\x{533D}\x{533E}\x{533F}\x{5340}\x{5341}\x{5343}\x{5344}' . +'\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}\x{534A}\x{534B}\x{534C}\x{534D}' . +'\x{534E}\x{534F}\x{5350}\x{5351}\x{5352}\x{5353}\x{5354}\x{5355}\x{5356}' . +'\x{5357}\x{5358}\x{5359}\x{535A}\x{535C}\x{535E}\x{535F}\x{5360}\x{5361}' . +'\x{5362}\x{5363}\x{5364}\x{5365}\x{5366}\x{5367}\x{5369}\x{536B}\x{536C}' . +'\x{536E}\x{536F}\x{5370}\x{5371}\x{5372}\x{5373}\x{5374}\x{5375}\x{5376}' . +'\x{5377}\x{5378}\x{5379}\x{537A}\x{537B}\x{537C}\x{537D}\x{537E}\x{537F}' . +'\x{5381}\x{5382}\x{5383}\x{5384}\x{5385}\x{5386}\x{5387}\x{5388}\x{5389}' . +'\x{538A}\x{538B}\x{538C}\x{538D}\x{538E}\x{538F}\x{5390}\x{5391}\x{5392}' . +'\x{5393}\x{5394}\x{5395}\x{5396}\x{5397}\x{5398}\x{5399}\x{539A}\x{539B}' . +'\x{539C}\x{539D}\x{539E}\x{539F}\x{53A0}\x{53A2}\x{53A3}\x{53A4}\x{53A5}' . +'\x{53A6}\x{53A7}\x{53A8}\x{53A9}\x{53AC}\x{53AD}\x{53AE}\x{53B0}\x{53B1}' . +'\x{53B2}\x{53B3}\x{53B4}\x{53B5}\x{53B6}\x{53B7}\x{53B8}\x{53B9}\x{53BB}' . +'\x{53BC}\x{53BD}\x{53BE}\x{53BF}\x{53C0}\x{53C1}\x{53C2}\x{53C3}\x{53C4}' . +'\x{53C6}\x{53C7}\x{53C8}\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}' . +'\x{53D0}\x{53D1}\x{53D2}\x{53D3}\x{53D4}\x{53D5}\x{53D6}\x{53D7}\x{53D8}' . +'\x{53D9}\x{53DB}\x{53DC}\x{53DF}\x{53E0}\x{53E1}\x{53E2}\x{53E3}\x{53E4}' . +'\x{53E5}\x{53E6}\x{53E8}\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}' . +'\x{53EF}\x{53F0}\x{53F1}\x{53F2}\x{53F3}\x{53F4}\x{53F5}\x{53F6}\x{53F7}' . +'\x{53F8}\x{53F9}\x{53FA}\x{53FB}\x{53FC}\x{53FD}\x{53FE}\x{5401}\x{5402}' . +'\x{5403}\x{5404}\x{5405}\x{5406}\x{5407}\x{5408}\x{5409}\x{540A}\x{540B}' . +'\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}\x{5411}\x{5412}\x{5413}\x{5414}' . +'\x{5415}\x{5416}\x{5417}\x{5418}\x{5419}\x{541B}\x{541C}\x{541D}\x{541E}' . +'\x{541F}\x{5420}\x{5421}\x{5423}\x{5424}\x{5425}\x{5426}\x{5427}\x{5428}' . +'\x{5429}\x{542A}\x{542B}\x{542C}\x{542D}\x{542E}\x{542F}\x{5430}\x{5431}' . +'\x{5432}\x{5433}\x{5434}\x{5435}\x{5436}\x{5437}\x{5438}\x{5439}\x{543A}' . +'\x{543B}\x{543C}\x{543D}\x{543E}\x{543F}\x{5440}\x{5441}\x{5442}\x{5443}' . +'\x{5444}\x{5445}\x{5446}\x{5447}\x{5448}\x{5449}\x{544A}\x{544B}\x{544D}' . +'\x{544E}\x{544F}\x{5450}\x{5451}\x{5452}\x{5453}\x{5454}\x{5455}\x{5456}' . +'\x{5457}\x{5458}\x{5459}\x{545A}\x{545B}\x{545C}\x{545E}\x{545F}\x{5460}' . +'\x{5461}\x{5462}\x{5463}\x{5464}\x{5465}\x{5466}\x{5467}\x{5468}\x{546A}' . +'\x{546B}\x{546C}\x{546D}\x{546E}\x{546F}\x{5470}\x{5471}\x{5472}\x{5473}' . +'\x{5474}\x{5475}\x{5476}\x{5477}\x{5478}\x{5479}\x{547A}\x{547B}\x{547C}' . +'\x{547D}\x{547E}\x{547F}\x{5480}\x{5481}\x{5482}\x{5483}\x{5484}\x{5485}' . +'\x{5486}\x{5487}\x{5488}\x{5489}\x{548B}\x{548C}\x{548D}\x{548E}\x{548F}' . +'\x{5490}\x{5491}\x{5492}\x{5493}\x{5494}\x{5495}\x{5496}\x{5497}\x{5498}' . +'\x{5499}\x{549A}\x{549B}\x{549C}\x{549D}\x{549E}\x{549F}\x{54A0}\x{54A1}' . +'\x{54A2}\x{54A3}\x{54A4}\x{54A5}\x{54A6}\x{54A7}\x{54A8}\x{54A9}\x{54AA}' . +'\x{54AB}\x{54AC}\x{54AD}\x{54AE}\x{54AF}\x{54B0}\x{54B1}\x{54B2}\x{54B3}' . +'\x{54B4}\x{54B6}\x{54B7}\x{54B8}\x{54B9}\x{54BA}\x{54BB}\x{54BC}\x{54BD}' . +'\x{54BE}\x{54BF}\x{54C0}\x{54C1}\x{54C2}\x{54C3}\x{54C4}\x{54C5}\x{54C6}' . +'\x{54C7}\x{54C8}\x{54C9}\x{54CA}\x{54CB}\x{54CC}\x{54CD}\x{54CE}\x{54CF}' . +'\x{54D0}\x{54D1}\x{54D2}\x{54D3}\x{54D4}\x{54D5}\x{54D6}\x{54D7}\x{54D8}' . +'\x{54D9}\x{54DA}\x{54DB}\x{54DC}\x{54DD}\x{54DE}\x{54DF}\x{54E0}\x{54E1}' . +'\x{54E2}\x{54E3}\x{54E4}\x{54E5}\x{54E6}\x{54E7}\x{54E8}\x{54E9}\x{54EA}' . +'\x{54EB}\x{54EC}\x{54ED}\x{54EE}\x{54EF}\x{54F0}\x{54F1}\x{54F2}\x{54F3}' . +'\x{54F4}\x{54F5}\x{54F7}\x{54F8}\x{54F9}\x{54FA}\x{54FB}\x{54FC}\x{54FD}' . +'\x{54FE}\x{54FF}\x{5500}\x{5501}\x{5502}\x{5503}\x{5504}\x{5505}\x{5506}' . +'\x{5507}\x{5508}\x{5509}\x{550A}\x{550B}\x{550C}\x{550D}\x{550E}\x{550F}' . +'\x{5510}\x{5511}\x{5512}\x{5513}\x{5514}\x{5516}\x{5517}\x{551A}\x{551B}' . +'\x{551C}\x{551D}\x{551E}\x{551F}\x{5520}\x{5521}\x{5522}\x{5523}\x{5524}' . +'\x{5525}\x{5526}\x{5527}\x{5528}\x{5529}\x{552A}\x{552B}\x{552C}\x{552D}' . +'\x{552E}\x{552F}\x{5530}\x{5531}\x{5532}\x{5533}\x{5534}\x{5535}\x{5536}' . +'\x{5537}\x{5538}\x{5539}\x{553A}\x{553B}\x{553C}\x{553D}\x{553E}\x{553F}' . +'\x{5540}\x{5541}\x{5542}\x{5543}\x{5544}\x{5545}\x{5546}\x{5548}\x{5549}' . +'\x{554A}\x{554B}\x{554C}\x{554D}\x{554E}\x{554F}\x{5550}\x{5551}\x{5552}' . +'\x{5553}\x{5554}\x{5555}\x{5556}\x{5557}\x{5558}\x{5559}\x{555A}\x{555B}' . +'\x{555C}\x{555D}\x{555E}\x{555F}\x{5561}\x{5562}\x{5563}\x{5564}\x{5565}' . +'\x{5566}\x{5567}\x{5568}\x{5569}\x{556A}\x{556B}\x{556C}\x{556D}\x{556E}' . +'\x{556F}\x{5570}\x{5571}\x{5572}\x{5573}\x{5574}\x{5575}\x{5576}\x{5577}' . +'\x{5578}\x{5579}\x{557B}\x{557C}\x{557D}\x{557E}\x{557F}\x{5580}\x{5581}' . +'\x{5582}\x{5583}\x{5584}\x{5585}\x{5586}\x{5587}\x{5588}\x{5589}\x{558A}' . +'\x{558B}\x{558C}\x{558D}\x{558E}\x{558F}\x{5590}\x{5591}\x{5592}\x{5593}' . +'\x{5594}\x{5595}\x{5596}\x{5597}\x{5598}\x{5599}\x{559A}\x{559B}\x{559C}' . +'\x{559D}\x{559E}\x{559F}\x{55A0}\x{55A1}\x{55A2}\x{55A3}\x{55A4}\x{55A5}' . +'\x{55A6}\x{55A7}\x{55A8}\x{55A9}\x{55AA}\x{55AB}\x{55AC}\x{55AD}\x{55AE}' . +'\x{55AF}\x{55B0}\x{55B1}\x{55B2}\x{55B3}\x{55B4}\x{55B5}\x{55B6}\x{55B7}' . +'\x{55B8}\x{55B9}\x{55BA}\x{55BB}\x{55BC}\x{55BD}\x{55BE}\x{55BF}\x{55C0}' . +'\x{55C1}\x{55C2}\x{55C3}\x{55C4}\x{55C5}\x{55C6}\x{55C7}\x{55C8}\x{55C9}' . +'\x{55CA}\x{55CB}\x{55CC}\x{55CD}\x{55CE}\x{55CF}\x{55D0}\x{55D1}\x{55D2}' . +'\x{55D3}\x{55D4}\x{55D5}\x{55D6}\x{55D7}\x{55D8}\x{55D9}\x{55DA}\x{55DB}' . +'\x{55DC}\x{55DD}\x{55DE}\x{55DF}\x{55E1}\x{55E2}\x{55E3}\x{55E4}\x{55E5}' . +'\x{55E6}\x{55E7}\x{55E8}\x{55E9}\x{55EA}\x{55EB}\x{55EC}\x{55ED}\x{55EE}' . +'\x{55EF}\x{55F0}\x{55F1}\x{55F2}\x{55F3}\x{55F4}\x{55F5}\x{55F6}\x{55F7}' . +'\x{55F9}\x{55FA}\x{55FB}\x{55FC}\x{55FD}\x{55FE}\x{55FF}\x{5600}\x{5601}' . +'\x{5602}\x{5603}\x{5604}\x{5606}\x{5607}\x{5608}\x{5609}\x{560C}\x{560D}' . +'\x{560E}\x{560F}\x{5610}\x{5611}\x{5612}\x{5613}\x{5614}\x{5615}\x{5616}' . +'\x{5617}\x{5618}\x{5619}\x{561A}\x{561B}\x{561C}\x{561D}\x{561E}\x{561F}' . +'\x{5621}\x{5622}\x{5623}\x{5624}\x{5625}\x{5626}\x{5627}\x{5628}\x{5629}' . +'\x{562A}\x{562C}\x{562D}\x{562E}\x{562F}\x{5630}\x{5631}\x{5632}\x{5633}' . +'\x{5634}\x{5635}\x{5636}\x{5638}\x{5639}\x{563A}\x{563B}\x{563D}\x{563E}' . +'\x{563F}\x{5640}\x{5641}\x{5642}\x{5643}\x{5645}\x{5646}\x{5647}\x{5648}' . +'\x{5649}\x{564A}\x{564C}\x{564D}\x{564E}\x{564F}\x{5650}\x{5652}\x{5653}' . +'\x{5654}\x{5655}\x{5657}\x{5658}\x{5659}\x{565A}\x{565B}\x{565C}\x{565D}' . +'\x{565E}\x{5660}\x{5662}\x{5663}\x{5664}\x{5665}\x{5666}\x{5667}\x{5668}' . +'\x{5669}\x{566A}\x{566B}\x{566C}\x{566D}\x{566E}\x{566F}\x{5670}\x{5671}' . +'\x{5672}\x{5673}\x{5674}\x{5676}\x{5677}\x{5678}\x{5679}\x{567A}\x{567B}' . +'\x{567C}\x{567E}\x{567F}\x{5680}\x{5681}\x{5682}\x{5683}\x{5684}\x{5685}' . +'\x{5686}\x{5687}\x{568A}\x{568C}\x{568D}\x{568E}\x{568F}\x{5690}\x{5691}' . +'\x{5692}\x{5693}\x{5694}\x{5695}\x{5697}\x{5698}\x{5699}\x{569A}\x{569B}' . +'\x{569C}\x{569D}\x{569F}\x{56A0}\x{56A1}\x{56A3}\x{56A4}\x{56A5}\x{56A6}' . +'\x{56A7}\x{56A8}\x{56A9}\x{56AA}\x{56AB}\x{56AC}\x{56AD}\x{56AE}\x{56AF}' . +'\x{56B0}\x{56B1}\x{56B2}\x{56B3}\x{56B4}\x{56B5}\x{56B6}\x{56B7}\x{56B8}' . +'\x{56B9}\x{56BB}\x{56BC}\x{56BD}\x{56BE}\x{56BF}\x{56C0}\x{56C1}\x{56C2}' . +'\x{56C3}\x{56C4}\x{56C5}\x{56C6}\x{56C7}\x{56C8}\x{56C9}\x{56CA}\x{56CB}' . +'\x{56CC}\x{56CD}\x{56CE}\x{56D0}\x{56D1}\x{56D2}\x{56D3}\x{56D4}\x{56D5}' . +'\x{56D6}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DC}\x{56DD}\x{56DE}\x{56DF}' . +'\x{56E0}\x{56E1}\x{56E2}\x{56E3}\x{56E4}\x{56E5}\x{56E7}\x{56E8}\x{56E9}' . +'\x{56EA}\x{56EB}\x{56EC}\x{56ED}\x{56EE}\x{56EF}\x{56F0}\x{56F1}\x{56F2}' . +'\x{56F3}\x{56F4}\x{56F5}\x{56F7}\x{56F9}\x{56FA}\x{56FD}\x{56FE}\x{56FF}' . +'\x{5700}\x{5701}\x{5702}\x{5703}\x{5704}\x{5706}\x{5707}\x{5708}\x{5709}' . +'\x{570A}\x{570B}\x{570C}\x{570D}\x{570E}\x{570F}\x{5710}\x{5712}\x{5713}' . +'\x{5714}\x{5715}\x{5716}\x{5718}\x{5719}\x{571A}\x{571B}\x{571C}\x{571D}' . +'\x{571E}\x{571F}\x{5720}\x{5722}\x{5723}\x{5725}\x{5726}\x{5727}\x{5728}' . +'\x{5729}\x{572A}\x{572B}\x{572C}\x{572D}\x{572E}\x{572F}\x{5730}\x{5731}' . +'\x{5732}\x{5733}\x{5734}\x{5735}\x{5736}\x{5737}\x{5738}\x{5739}\x{573A}' . +'\x{573B}\x{573C}\x{573E}\x{573F}\x{5740}\x{5741}\x{5742}\x{5744}\x{5745}' . +'\x{5746}\x{5747}\x{5749}\x{574A}\x{574B}\x{574C}\x{574D}\x{574E}\x{574F}' . +'\x{5750}\x{5751}\x{5752}\x{5753}\x{5754}\x{5757}\x{5759}\x{575A}\x{575B}' . +'\x{575C}\x{575D}\x{575E}\x{575F}\x{5760}\x{5761}\x{5762}\x{5764}\x{5765}' . +'\x{5766}\x{5767}\x{5768}\x{5769}\x{576A}\x{576B}\x{576C}\x{576D}\x{576F}' . +'\x{5770}\x{5771}\x{5772}\x{5773}\x{5774}\x{5775}\x{5776}\x{5777}\x{5779}' . +'\x{577A}\x{577B}\x{577C}\x{577D}\x{577E}\x{577F}\x{5780}\x{5782}\x{5783}' . +'\x{5784}\x{5785}\x{5786}\x{5788}\x{5789}\x{578A}\x{578B}\x{578C}\x{578D}' . +'\x{578E}\x{578F}\x{5790}\x{5791}\x{5792}\x{5793}\x{5794}\x{5795}\x{5797}' . +'\x{5798}\x{5799}\x{579A}\x{579B}\x{579C}\x{579D}\x{579E}\x{579F}\x{57A0}' . +'\x{57A1}\x{57A2}\x{57A3}\x{57A4}\x{57A5}\x{57A6}\x{57A7}\x{57A9}\x{57AA}' . +'\x{57AB}\x{57AC}\x{57AD}\x{57AE}\x{57AF}\x{57B0}\x{57B1}\x{57B2}\x{57B3}' . +'\x{57B4}\x{57B5}\x{57B6}\x{57B7}\x{57B8}\x{57B9}\x{57BA}\x{57BB}\x{57BC}' . +'\x{57BD}\x{57BE}\x{57BF}\x{57C0}\x{57C1}\x{57C2}\x{57C3}\x{57C4}\x{57C5}' . +'\x{57C6}\x{57C7}\x{57C8}\x{57C9}\x{57CB}\x{57CC}\x{57CD}\x{57CE}\x{57CF}' . +'\x{57D0}\x{57D2}\x{57D3}\x{57D4}\x{57D5}\x{57D6}\x{57D8}\x{57D9}\x{57DA}' . +'\x{57DC}\x{57DD}\x{57DF}\x{57E0}\x{57E1}\x{57E2}\x{57E3}\x{57E4}\x{57E5}' . +'\x{57E6}\x{57E7}\x{57E8}\x{57E9}\x{57EA}\x{57EB}\x{57EC}\x{57ED}\x{57EE}' . +'\x{57EF}\x{57F0}\x{57F1}\x{57F2}\x{57F3}\x{57F4}\x{57F5}\x{57F6}\x{57F7}' . +'\x{57F8}\x{57F9}\x{57FA}\x{57FB}\x{57FC}\x{57FD}\x{57FE}\x{57FF}\x{5800}' . +'\x{5801}\x{5802}\x{5803}\x{5804}\x{5805}\x{5806}\x{5807}\x{5808}\x{5809}' . +'\x{580A}\x{580B}\x{580C}\x{580D}\x{580E}\x{580F}\x{5810}\x{5811}\x{5812}' . +'\x{5813}\x{5814}\x{5815}\x{5816}\x{5819}\x{581A}\x{581B}\x{581C}\x{581D}' . +'\x{581E}\x{581F}\x{5820}\x{5821}\x{5822}\x{5823}\x{5824}\x{5825}\x{5826}' . +'\x{5827}\x{5828}\x{5829}\x{582A}\x{582B}\x{582C}\x{582D}\x{582E}\x{582F}' . +'\x{5830}\x{5831}\x{5832}\x{5833}\x{5834}\x{5835}\x{5836}\x{5837}\x{5838}' . +'\x{5839}\x{583A}\x{583B}\x{583C}\x{583D}\x{583E}\x{583F}\x{5840}\x{5842}' . +'\x{5843}\x{5844}\x{5845}\x{5846}\x{5847}\x{5848}\x{5849}\x{584A}\x{584B}' . +'\x{584C}\x{584D}\x{584E}\x{584F}\x{5851}\x{5852}\x{5853}\x{5854}\x{5855}' . +'\x{5857}\x{5858}\x{5859}\x{585A}\x{585B}\x{585C}\x{585D}\x{585E}\x{585F}' . +'\x{5861}\x{5862}\x{5863}\x{5864}\x{5865}\x{5868}\x{5869}\x{586A}\x{586B}' . +'\x{586C}\x{586D}\x{586E}\x{586F}\x{5870}\x{5871}\x{5872}\x{5873}\x{5874}' . +'\x{5875}\x{5876}\x{5878}\x{5879}\x{587A}\x{587B}\x{587C}\x{587D}\x{587E}' . +'\x{587F}\x{5880}\x{5881}\x{5882}\x{5883}\x{5884}\x{5885}\x{5886}\x{5887}' . +'\x{5888}\x{5889}\x{588A}\x{588B}\x{588C}\x{588D}\x{588E}\x{588F}\x{5890}' . +'\x{5891}\x{5892}\x{5893}\x{5894}\x{5896}\x{5897}\x{5898}\x{5899}\x{589A}' . +'\x{589B}\x{589C}\x{589D}\x{589E}\x{589F}\x{58A0}\x{58A1}\x{58A2}\x{58A3}' . +'\x{58A4}\x{58A5}\x{58A6}\x{58A7}\x{58A8}\x{58A9}\x{58AB}\x{58AC}\x{58AD}' . +'\x{58AE}\x{58AF}\x{58B0}\x{58B1}\x{58B2}\x{58B3}\x{58B4}\x{58B7}\x{58B8}' . +'\x{58B9}\x{58BA}\x{58BB}\x{58BC}\x{58BD}\x{58BE}\x{58BF}\x{58C1}\x{58C2}' . +'\x{58C5}\x{58C6}\x{58C7}\x{58C8}\x{58C9}\x{58CA}\x{58CB}\x{58CE}\x{58CF}' . +'\x{58D1}\x{58D2}\x{58D3}\x{58D4}\x{58D5}\x{58D6}\x{58D7}\x{58D8}\x{58D9}' . +'\x{58DA}\x{58DB}\x{58DD}\x{58DE}\x{58DF}\x{58E0}\x{58E2}\x{58E3}\x{58E4}' . +'\x{58E5}\x{58E7}\x{58E8}\x{58E9}\x{58EA}\x{58EB}\x{58EC}\x{58ED}\x{58EE}' . +'\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F3}\x{58F4}\x{58F6}\x{58F7}\x{58F8}' . +'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{58FE}\x{58FF}\x{5900}\x{5902}' . +'\x{5903}\x{5904}\x{5906}\x{5907}\x{5909}\x{590A}\x{590B}\x{590C}\x{590D}' . +'\x{590E}\x{590F}\x{5910}\x{5912}\x{5914}\x{5915}\x{5916}\x{5917}\x{5918}' . +'\x{5919}\x{591A}\x{591B}\x{591C}\x{591D}\x{591E}\x{591F}\x{5920}\x{5921}' . +'\x{5922}\x{5924}\x{5925}\x{5926}\x{5927}\x{5928}\x{5929}\x{592A}\x{592B}' . +'\x{592C}\x{592D}\x{592E}\x{592F}\x{5930}\x{5931}\x{5932}\x{5934}\x{5935}' . +'\x{5937}\x{5938}\x{5939}\x{593A}\x{593B}\x{593C}\x{593D}\x{593E}\x{593F}' . +'\x{5940}\x{5941}\x{5942}\x{5943}\x{5944}\x{5945}\x{5946}\x{5947}\x{5948}' . +'\x{5949}\x{594A}\x{594B}\x{594C}\x{594D}\x{594E}\x{594F}\x{5950}\x{5951}' . +'\x{5952}\x{5953}\x{5954}\x{5955}\x{5956}\x{5957}\x{5958}\x{595A}\x{595C}' . +'\x{595D}\x{595E}\x{595F}\x{5960}\x{5961}\x{5962}\x{5963}\x{5964}\x{5965}' . +'\x{5966}\x{5967}\x{5968}\x{5969}\x{596A}\x{596B}\x{596C}\x{596D}\x{596E}' . +'\x{596F}\x{5970}\x{5971}\x{5972}\x{5973}\x{5974}\x{5975}\x{5976}\x{5977}' . +'\x{5978}\x{5979}\x{597A}\x{597B}\x{597C}\x{597D}\x{597E}\x{597F}\x{5980}' . +'\x{5981}\x{5982}\x{5983}\x{5984}\x{5985}\x{5986}\x{5987}\x{5988}\x{5989}' . +'\x{598A}\x{598B}\x{598C}\x{598D}\x{598E}\x{598F}\x{5990}\x{5991}\x{5992}' . +'\x{5993}\x{5994}\x{5995}\x{5996}\x{5997}\x{5998}\x{5999}\x{599A}\x{599C}' . +'\x{599D}\x{599E}\x{599F}\x{59A0}\x{59A1}\x{59A2}\x{59A3}\x{59A4}\x{59A5}' . +'\x{59A6}\x{59A7}\x{59A8}\x{59A9}\x{59AA}\x{59AB}\x{59AC}\x{59AD}\x{59AE}' . +'\x{59AF}\x{59B0}\x{59B1}\x{59B2}\x{59B3}\x{59B4}\x{59B5}\x{59B6}\x{59B8}' . +'\x{59B9}\x{59BA}\x{59BB}\x{59BC}\x{59BD}\x{59BE}\x{59BF}\x{59C0}\x{59C1}' . +'\x{59C2}\x{59C3}\x{59C4}\x{59C5}\x{59C6}\x{59C7}\x{59C8}\x{59C9}\x{59CA}' . +'\x{59CB}\x{59CC}\x{59CD}\x{59CE}\x{59CF}\x{59D0}\x{59D1}\x{59D2}\x{59D3}' . +'\x{59D4}\x{59D5}\x{59D6}\x{59D7}\x{59D8}\x{59D9}\x{59DA}\x{59DB}\x{59DC}' . +'\x{59DD}\x{59DE}\x{59DF}\x{59E0}\x{59E1}\x{59E2}\x{59E3}\x{59E4}\x{59E5}' . +'\x{59E6}\x{59E8}\x{59E9}\x{59EA}\x{59EB}\x{59EC}\x{59ED}\x{59EE}\x{59EF}' . +'\x{59F0}\x{59F1}\x{59F2}\x{59F3}\x{59F4}\x{59F5}\x{59F6}\x{59F7}\x{59F8}' . +'\x{59F9}\x{59FA}\x{59FB}\x{59FC}\x{59FD}\x{59FE}\x{59FF}\x{5A00}\x{5A01}' . +'\x{5A02}\x{5A03}\x{5A04}\x{5A05}\x{5A06}\x{5A07}\x{5A08}\x{5A09}\x{5A0A}' . +'\x{5A0B}\x{5A0C}\x{5A0D}\x{5A0E}\x{5A0F}\x{5A10}\x{5A11}\x{5A12}\x{5A13}' . +'\x{5A14}\x{5A15}\x{5A16}\x{5A17}\x{5A18}\x{5A19}\x{5A1A}\x{5A1B}\x{5A1C}' . +'\x{5A1D}\x{5A1E}\x{5A1F}\x{5A20}\x{5A21}\x{5A22}\x{5A23}\x{5A25}\x{5A27}' . +'\x{5A28}\x{5A29}\x{5A2A}\x{5A2B}\x{5A2D}\x{5A2E}\x{5A2F}\x{5A31}\x{5A32}' . +'\x{5A33}\x{5A34}\x{5A35}\x{5A36}\x{5A37}\x{5A38}\x{5A39}\x{5A3A}\x{5A3B}' . +'\x{5A3C}\x{5A3D}\x{5A3E}\x{5A3F}\x{5A40}\x{5A41}\x{5A42}\x{5A43}\x{5A44}' . +'\x{5A45}\x{5A46}\x{5A47}\x{5A48}\x{5A49}\x{5A4A}\x{5A4B}\x{5A4C}\x{5A4D}' . +'\x{5A4E}\x{5A4F}\x{5A50}\x{5A51}\x{5A52}\x{5A53}\x{5A55}\x{5A56}\x{5A57}' . +'\x{5A58}\x{5A5A}\x{5A5B}\x{5A5C}\x{5A5D}\x{5A5E}\x{5A5F}\x{5A60}\x{5A61}' . +'\x{5A62}\x{5A63}\x{5A64}\x{5A65}\x{5A66}\x{5A67}\x{5A68}\x{5A69}\x{5A6A}' . +'\x{5A6B}\x{5A6C}\x{5A6D}\x{5A6E}\x{5A70}\x{5A72}\x{5A73}\x{5A74}\x{5A75}' . +'\x{5A76}\x{5A77}\x{5A78}\x{5A79}\x{5A7A}\x{5A7B}\x{5A7C}\x{5A7D}\x{5A7E}' . +'\x{5A7F}\x{5A80}\x{5A81}\x{5A82}\x{5A83}\x{5A84}\x{5A85}\x{5A86}\x{5A88}' . +'\x{5A89}\x{5A8A}\x{5A8B}\x{5A8C}\x{5A8E}\x{5A8F}\x{5A90}\x{5A91}\x{5A92}' . +'\x{5A93}\x{5A94}\x{5A95}\x{5A96}\x{5A97}\x{5A98}\x{5A99}\x{5A9A}\x{5A9B}' . +'\x{5A9C}\x{5A9D}\x{5A9E}\x{5A9F}\x{5AA0}\x{5AA1}\x{5AA2}\x{5AA3}\x{5AA4}' . +'\x{5AA5}\x{5AA6}\x{5AA7}\x{5AA8}\x{5AA9}\x{5AAA}\x{5AAC}\x{5AAD}\x{5AAE}' . +'\x{5AAF}\x{5AB0}\x{5AB1}\x{5AB2}\x{5AB3}\x{5AB4}\x{5AB5}\x{5AB6}\x{5AB7}' . +'\x{5AB8}\x{5AB9}\x{5ABA}\x{5ABB}\x{5ABC}\x{5ABD}\x{5ABE}\x{5ABF}\x{5AC0}' . +'\x{5AC1}\x{5AC2}\x{5AC3}\x{5AC4}\x{5AC5}\x{5AC6}\x{5AC7}\x{5AC8}\x{5AC9}' . +'\x{5ACA}\x{5ACB}\x{5ACC}\x{5ACD}\x{5ACE}\x{5ACF}\x{5AD1}\x{5AD2}\x{5AD4}' . +'\x{5AD5}\x{5AD6}\x{5AD7}\x{5AD8}\x{5AD9}\x{5ADA}\x{5ADB}\x{5ADC}\x{5ADD}' . +'\x{5ADE}\x{5ADF}\x{5AE0}\x{5AE1}\x{5AE2}\x{5AE3}\x{5AE4}\x{5AE5}\x{5AE6}' . +'\x{5AE7}\x{5AE8}\x{5AE9}\x{5AEA}\x{5AEB}\x{5AEC}\x{5AED}\x{5AEE}\x{5AF1}' . +'\x{5AF2}\x{5AF3}\x{5AF4}\x{5AF5}\x{5AF6}\x{5AF7}\x{5AF8}\x{5AF9}\x{5AFA}' . +'\x{5AFB}\x{5AFC}\x{5AFD}\x{5AFE}\x{5AFF}\x{5B00}\x{5B01}\x{5B02}\x{5B03}' . +'\x{5B04}\x{5B05}\x{5B06}\x{5B07}\x{5B08}\x{5B09}\x{5B0B}\x{5B0C}\x{5B0E}' . +'\x{5B0F}\x{5B10}\x{5B11}\x{5B12}\x{5B13}\x{5B14}\x{5B15}\x{5B16}\x{5B17}' . +'\x{5B18}\x{5B19}\x{5B1A}\x{5B1B}\x{5B1C}\x{5B1D}\x{5B1E}\x{5B1F}\x{5B20}' . +'\x{5B21}\x{5B22}\x{5B23}\x{5B24}\x{5B25}\x{5B26}\x{5B27}\x{5B28}\x{5B29}' . +'\x{5B2A}\x{5B2B}\x{5B2C}\x{5B2D}\x{5B2E}\x{5B2F}\x{5B30}\x{5B31}\x{5B32}' . +'\x{5B33}\x{5B34}\x{5B35}\x{5B36}\x{5B37}\x{5B38}\x{5B3A}\x{5B3B}\x{5B3C}' . +'\x{5B3D}\x{5B3E}\x{5B3F}\x{5B40}\x{5B41}\x{5B42}\x{5B43}\x{5B44}\x{5B45}' . +'\x{5B47}\x{5B48}\x{5B49}\x{5B4A}\x{5B4B}\x{5B4C}\x{5B4D}\x{5B4E}\x{5B50}' . +'\x{5B51}\x{5B53}\x{5B54}\x{5B55}\x{5B56}\x{5B57}\x{5B58}\x{5B59}\x{5B5A}' . +'\x{5B5B}\x{5B5C}\x{5B5D}\x{5B5E}\x{5B5F}\x{5B62}\x{5B63}\x{5B64}\x{5B65}' . +'\x{5B66}\x{5B67}\x{5B68}\x{5B69}\x{5B6A}\x{5B6B}\x{5B6C}\x{5B6D}\x{5B6E}' . +'\x{5B70}\x{5B71}\x{5B72}\x{5B73}\x{5B74}\x{5B75}\x{5B76}\x{5B77}\x{5B78}' . +'\x{5B7A}\x{5B7B}\x{5B7C}\x{5B7D}\x{5B7F}\x{5B80}\x{5B81}\x{5B82}\x{5B83}' . +'\x{5B84}\x{5B85}\x{5B87}\x{5B88}\x{5B89}\x{5B8A}\x{5B8B}\x{5B8C}\x{5B8D}' . +'\x{5B8E}\x{5B8F}\x{5B91}\x{5B92}\x{5B93}\x{5B94}\x{5B95}\x{5B96}\x{5B97}' . +'\x{5B98}\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9E}\x{5B9F}\x{5BA0}' . +'\x{5BA1}\x{5BA2}\x{5BA3}\x{5BA4}\x{5BA5}\x{5BA6}\x{5BA7}\x{5BA8}\x{5BAA}' . +'\x{5BAB}\x{5BAC}\x{5BAD}\x{5BAE}\x{5BAF}\x{5BB0}\x{5BB1}\x{5BB3}\x{5BB4}' . +'\x{5BB5}\x{5BB6}\x{5BB8}\x{5BB9}\x{5BBA}\x{5BBB}\x{5BBD}\x{5BBE}\x{5BBF}' . +'\x{5BC0}\x{5BC1}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BCA}' . +'\x{5BCB}\x{5BCC}\x{5BCD}\x{5BCE}\x{5BCF}\x{5BD0}\x{5BD1}\x{5BD2}\x{5BD3}' . +'\x{5BD4}\x{5BD5}\x{5BD6}\x{5BD8}\x{5BD9}\x{5BDB}\x{5BDC}\x{5BDD}\x{5BDE}' . +'\x{5BDF}\x{5BE0}\x{5BE1}\x{5BE2}\x{5BE3}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}' . +'\x{5BE8}\x{5BE9}\x{5BEA}\x{5BEB}\x{5BEC}\x{5BED}\x{5BEE}\x{5BEF}\x{5BF0}' . +'\x{5BF1}\x{5BF2}\x{5BF3}\x{5BF4}\x{5BF5}\x{5BF6}\x{5BF7}\x{5BF8}\x{5BF9}' . +'\x{5BFA}\x{5BFB}\x{5BFC}\x{5BFD}\x{5BFF}\x{5C01}\x{5C03}\x{5C04}\x{5C05}' . +'\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}\x{5C0B}\x{5C0C}\x{5C0D}\x{5C0E}' . +'\x{5C0F}\x{5C10}\x{5C11}\x{5C12}\x{5C13}\x{5C14}\x{5C15}\x{5C16}\x{5C17}' . +'\x{5C18}\x{5C19}\x{5C1A}\x{5C1C}\x{5C1D}\x{5C1E}\x{5C1F}\x{5C20}\x{5C21}' . +'\x{5C22}\x{5C24}\x{5C25}\x{5C27}\x{5C28}\x{5C2A}\x{5C2B}\x{5C2C}\x{5C2D}' . +'\x{5C2E}\x{5C2F}\x{5C30}\x{5C31}\x{5C32}\x{5C33}\x{5C34}\x{5C35}\x{5C37}' . +'\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}' . +'\x{5C41}\x{5C42}\x{5C43}\x{5C44}\x{5C45}\x{5C46}\x{5C47}\x{5C48}\x{5C49}' . +'\x{5C4A}\x{5C4B}\x{5C4C}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C52}' . +'\x{5C53}\x{5C54}\x{5C55}\x{5C56}\x{5C57}\x{5C58}\x{5C59}\x{5C5B}\x{5C5C}' . +'\x{5C5D}\x{5C5E}\x{5C5F}\x{5C60}\x{5C61}\x{5C62}\x{5C63}\x{5C64}\x{5C65}' . +'\x{5C66}\x{5C67}\x{5C68}\x{5C69}\x{5C6A}\x{5C6B}\x{5C6C}\x{5C6D}\x{5C6E}' . +'\x{5C6F}\x{5C70}\x{5C71}\x{5C72}\x{5C73}\x{5C74}\x{5C75}\x{5C76}\x{5C77}' . +'\x{5C78}\x{5C79}\x{5C7A}\x{5C7B}\x{5C7C}\x{5C7D}\x{5C7E}\x{5C7F}\x{5C80}' . +'\x{5C81}\x{5C82}\x{5C83}\x{5C84}\x{5C86}\x{5C87}\x{5C88}\x{5C89}\x{5C8A}' . +'\x{5C8B}\x{5C8C}\x{5C8D}\x{5C8E}\x{5C8F}\x{5C90}\x{5C91}\x{5C92}\x{5C93}' . +'\x{5C94}\x{5C95}\x{5C96}\x{5C97}\x{5C98}\x{5C99}\x{5C9A}\x{5C9B}\x{5C9C}' . +'\x{5C9D}\x{5C9E}\x{5C9F}\x{5CA0}\x{5CA1}\x{5CA2}\x{5CA3}\x{5CA4}\x{5CA5}' . +'\x{5CA6}\x{5CA7}\x{5CA8}\x{5CA9}\x{5CAA}\x{5CAB}\x{5CAC}\x{5CAD}\x{5CAE}' . +'\x{5CAF}\x{5CB0}\x{5CB1}\x{5CB2}\x{5CB3}\x{5CB5}\x{5CB6}\x{5CB7}\x{5CB8}' . +'\x{5CBA}\x{5CBB}\x{5CBC}\x{5CBD}\x{5CBE}\x{5CBF}\x{5CC1}\x{5CC2}\x{5CC3}' . +'\x{5CC4}\x{5CC5}\x{5CC6}\x{5CC7}\x{5CC8}\x{5CC9}\x{5CCA}\x{5CCB}\x{5CCC}' . +'\x{5CCD}\x{5CCE}\x{5CCF}\x{5CD0}\x{5CD1}\x{5CD2}\x{5CD3}\x{5CD4}\x{5CD6}' . +'\x{5CD7}\x{5CD8}\x{5CD9}\x{5CDA}\x{5CDB}\x{5CDC}\x{5CDE}\x{5CDF}\x{5CE0}' . +'\x{5CE1}\x{5CE2}\x{5CE3}\x{5CE4}\x{5CE5}\x{5CE6}\x{5CE7}\x{5CE8}\x{5CE9}' . +'\x{5CEA}\x{5CEB}\x{5CEC}\x{5CED}\x{5CEE}\x{5CEF}\x{5CF0}\x{5CF1}\x{5CF2}' . +'\x{5CF3}\x{5CF4}\x{5CF6}\x{5CF7}\x{5CF8}\x{5CF9}\x{5CFA}\x{5CFB}\x{5CFC}' . +'\x{5CFD}\x{5CFE}\x{5CFF}\x{5D00}\x{5D01}\x{5D02}\x{5D03}\x{5D04}\x{5D05}' . +'\x{5D06}\x{5D07}\x{5D08}\x{5D09}\x{5D0A}\x{5D0B}\x{5D0C}\x{5D0D}\x{5D0E}' . +'\x{5D0F}\x{5D10}\x{5D11}\x{5D12}\x{5D13}\x{5D14}\x{5D15}\x{5D16}\x{5D17}' . +'\x{5D18}\x{5D19}\x{5D1A}\x{5D1B}\x{5D1C}\x{5D1D}\x{5D1E}\x{5D1F}\x{5D20}' . +'\x{5D21}\x{5D22}\x{5D23}\x{5D24}\x{5D25}\x{5D26}\x{5D27}\x{5D28}\x{5D29}' . +'\x{5D2A}\x{5D2C}\x{5D2D}\x{5D2E}\x{5D30}\x{5D31}\x{5D32}\x{5D33}\x{5D34}' . +'\x{5D35}\x{5D36}\x{5D37}\x{5D38}\x{5D39}\x{5D3A}\x{5D3C}\x{5D3D}\x{5D3E}' . +'\x{5D3F}\x{5D40}\x{5D41}\x{5D42}\x{5D43}\x{5D44}\x{5D45}\x{5D46}\x{5D47}' . +'\x{5D48}\x{5D49}\x{5D4A}\x{5D4B}\x{5D4C}\x{5D4D}\x{5D4E}\x{5D4F}\x{5D50}' . +'\x{5D51}\x{5D52}\x{5D54}\x{5D55}\x{5D56}\x{5D58}\x{5D59}\x{5D5A}\x{5D5B}' . +'\x{5D5D}\x{5D5E}\x{5D5F}\x{5D61}\x{5D62}\x{5D63}\x{5D64}\x{5D65}\x{5D66}' . +'\x{5D67}\x{5D68}\x{5D69}\x{5D6A}\x{5D6B}\x{5D6C}\x{5D6D}\x{5D6E}\x{5D6F}' . +'\x{5D70}\x{5D71}\x{5D72}\x{5D73}\x{5D74}\x{5D75}\x{5D76}\x{5D77}\x{5D78}' . +'\x{5D79}\x{5D7A}\x{5D7B}\x{5D7C}\x{5D7D}\x{5D7E}\x{5D7F}\x{5D80}\x{5D81}' . +'\x{5D82}\x{5D84}\x{5D85}\x{5D86}\x{5D87}\x{5D88}\x{5D89}\x{5D8A}\x{5D8B}' . +'\x{5D8C}\x{5D8D}\x{5D8E}\x{5D8F}\x{5D90}\x{5D91}\x{5D92}\x{5D93}\x{5D94}' . +'\x{5D95}\x{5D97}\x{5D98}\x{5D99}\x{5D9A}\x{5D9B}\x{5D9C}\x{5D9D}\x{5D9E}' . +'\x{5D9F}\x{5DA0}\x{5DA1}\x{5DA2}\x{5DA5}\x{5DA6}\x{5DA7}\x{5DA8}\x{5DA9}' . +'\x{5DAA}\x{5DAC}\x{5DAD}\x{5DAE}\x{5DAF}\x{5DB0}\x{5DB1}\x{5DB2}\x{5DB4}' . +'\x{5DB5}\x{5DB6}\x{5DB7}\x{5DB8}\x{5DBA}\x{5DBB}\x{5DBC}\x{5DBD}\x{5DBE}' . +'\x{5DBF}\x{5DC0}\x{5DC1}\x{5DC2}\x{5DC3}\x{5DC5}\x{5DC6}\x{5DC7}\x{5DC8}' . +'\x{5DC9}\x{5DCA}\x{5DCB}\x{5DCC}\x{5DCD}\x{5DCE}\x{5DCF}\x{5DD0}\x{5DD1}' . +'\x{5DD2}\x{5DD3}\x{5DD4}\x{5DD5}\x{5DD6}\x{5DD8}\x{5DD9}\x{5DDB}\x{5DDD}' . +'\x{5DDE}\x{5DDF}\x{5DE0}\x{5DE1}\x{5DE2}\x{5DE3}\x{5DE4}\x{5DE5}\x{5DE6}' . +'\x{5DE7}\x{5DE8}\x{5DE9}\x{5DEA}\x{5DEB}\x{5DEC}\x{5DED}\x{5DEE}\x{5DEF}' . +'\x{5DF0}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DF8}\x{5DF9}' . +'\x{5DFA}\x{5DFB}\x{5DFC}\x{5DFD}\x{5DFE}\x{5DFF}\x{5E00}\x{5E01}\x{5E02}' . +'\x{5E03}\x{5E04}\x{5E05}\x{5E06}\x{5E07}\x{5E08}\x{5E09}\x{5E0A}\x{5E0B}' . +'\x{5E0C}\x{5E0D}\x{5E0E}\x{5E0F}\x{5E10}\x{5E11}\x{5E13}\x{5E14}\x{5E15}' . +'\x{5E16}\x{5E17}\x{5E18}\x{5E19}\x{5E1A}\x{5E1B}\x{5E1C}\x{5E1D}\x{5E1E}' . +'\x{5E1F}\x{5E20}\x{5E21}\x{5E22}\x{5E23}\x{5E24}\x{5E25}\x{5E26}\x{5E27}' . +'\x{5E28}\x{5E29}\x{5E2A}\x{5E2B}\x{5E2C}\x{5E2D}\x{5E2E}\x{5E2F}\x{5E30}' . +'\x{5E31}\x{5E32}\x{5E33}\x{5E34}\x{5E35}\x{5E36}\x{5E37}\x{5E38}\x{5E39}' . +'\x{5E3A}\x{5E3B}\x{5E3C}\x{5E3D}\x{5E3E}\x{5E40}\x{5E41}\x{5E42}\x{5E43}' . +'\x{5E44}\x{5E45}\x{5E46}\x{5E47}\x{5E49}\x{5E4A}\x{5E4B}\x{5E4C}\x{5E4D}' . +'\x{5E4E}\x{5E4F}\x{5E50}\x{5E52}\x{5E53}\x{5E54}\x{5E55}\x{5E56}\x{5E57}' . +'\x{5E58}\x{5E59}\x{5E5A}\x{5E5B}\x{5E5C}\x{5E5D}\x{5E5E}\x{5E5F}\x{5E60}' . +'\x{5E61}\x{5E62}\x{5E63}\x{5E64}\x{5E65}\x{5E66}\x{5E67}\x{5E68}\x{5E69}' . +'\x{5E6A}\x{5E6B}\x{5E6C}\x{5E6D}\x{5E6E}\x{5E6F}\x{5E70}\x{5E71}\x{5E72}' . +'\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E77}\x{5E78}\x{5E79}\x{5E7A}\x{5E7B}' . +'\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E80}\x{5E81}\x{5E82}\x{5E83}\x{5E84}' . +'\x{5E85}\x{5E86}\x{5E87}\x{5E88}\x{5E89}\x{5E8A}\x{5E8B}\x{5E8C}\x{5E8D}' . +'\x{5E8E}\x{5E8F}\x{5E90}\x{5E91}\x{5E93}\x{5E94}\x{5E95}\x{5E96}\x{5E97}' . +'\x{5E98}\x{5E99}\x{5E9A}\x{5E9B}\x{5E9C}\x{5E9D}\x{5E9E}\x{5E9F}\x{5EA0}' . +'\x{5EA1}\x{5EA2}\x{5EA3}\x{5EA4}\x{5EA5}\x{5EA6}\x{5EA7}\x{5EA8}\x{5EA9}' . +'\x{5EAA}\x{5EAB}\x{5EAC}\x{5EAD}\x{5EAE}\x{5EAF}\x{5EB0}\x{5EB1}\x{5EB2}' . +'\x{5EB3}\x{5EB4}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EB9}\x{5EBB}\x{5EBC}' . +'\x{5EBD}\x{5EBE}\x{5EBF}\x{5EC1}\x{5EC2}\x{5EC3}\x{5EC4}\x{5EC5}\x{5EC6}' . +'\x{5EC7}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECB}\x{5ECC}\x{5ECD}\x{5ECE}\x{5ECF}' . +'\x{5ED0}\x{5ED1}\x{5ED2}\x{5ED3}\x{5ED4}\x{5ED5}\x{5ED6}\x{5ED7}\x{5ED8}' . +'\x{5ED9}\x{5EDA}\x{5EDB}\x{5EDC}\x{5EDD}\x{5EDE}\x{5EDF}\x{5EE0}\x{5EE1}' . +'\x{5EE2}\x{5EE3}\x{5EE4}\x{5EE5}\x{5EE6}\x{5EE7}\x{5EE8}\x{5EE9}\x{5EEA}' . +'\x{5EEC}\x{5EED}\x{5EEE}\x{5EEF}\x{5EF0}\x{5EF1}\x{5EF2}\x{5EF3}\x{5EF4}' . +'\x{5EF5}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}\x{5EFB}\x{5EFC}\x{5EFD}\x{5EFE}' . +'\x{5EFF}\x{5F00}\x{5F01}\x{5F02}\x{5F03}\x{5F04}\x{5F05}\x{5F06}\x{5F07}' . +'\x{5F08}\x{5F0A}\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F11}\x{5F12}\x{5F13}' . +'\x{5F14}\x{5F15}\x{5F16}\x{5F17}\x{5F18}\x{5F19}\x{5F1A}\x{5F1B}\x{5F1C}' . +'\x{5F1D}\x{5F1E}\x{5F1F}\x{5F20}\x{5F21}\x{5F22}\x{5F23}\x{5F24}\x{5F25}' . +'\x{5F26}\x{5F27}\x{5F28}\x{5F29}\x{5F2A}\x{5F2B}\x{5F2C}\x{5F2D}\x{5F2E}' . +'\x{5F2F}\x{5F30}\x{5F31}\x{5F32}\x{5F33}\x{5F34}\x{5F35}\x{5F36}\x{5F37}' . +'\x{5F38}\x{5F39}\x{5F3A}\x{5F3C}\x{5F3E}\x{5F3F}\x{5F40}\x{5F41}\x{5F42}' . +'\x{5F43}\x{5F44}\x{5F45}\x{5F46}\x{5F47}\x{5F48}\x{5F49}\x{5F4A}\x{5F4B}' . +'\x{5F4C}\x{5F4D}\x{5F4E}\x{5F4F}\x{5F50}\x{5F51}\x{5F52}\x{5F53}\x{5F54}' . +'\x{5F55}\x{5F56}\x{5F57}\x{5F58}\x{5F59}\x{5F5A}\x{5F5B}\x{5F5C}\x{5F5D}' . +'\x{5F5E}\x{5F5F}\x{5F60}\x{5F61}\x{5F62}\x{5F63}\x{5F64}\x{5F65}\x{5F66}' . +'\x{5F67}\x{5F68}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}\x{5F6D}\x{5F6E}\x{5F6F}' . +'\x{5F70}\x{5F71}\x{5F72}\x{5F73}\x{5F74}\x{5F75}\x{5F76}\x{5F77}\x{5F78}' . +'\x{5F79}\x{5F7A}\x{5F7B}\x{5F7C}\x{5F7D}\x{5F7E}\x{5F7F}\x{5F80}\x{5F81}' . +'\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F86}\x{5F87}\x{5F88}\x{5F89}\x{5F8A}' . +'\x{5F8B}\x{5F8C}\x{5F8D}\x{5F8E}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F94}' . +'\x{5F95}\x{5F96}\x{5F97}\x{5F98}\x{5F99}\x{5F9B}\x{5F9C}\x{5F9D}\x{5F9E}' . +'\x{5F9F}\x{5FA0}\x{5FA1}\x{5FA2}\x{5FA5}\x{5FA6}\x{5FA7}\x{5FA8}\x{5FA9}' . +'\x{5FAA}\x{5FAB}\x{5FAC}\x{5FAD}\x{5FAE}\x{5FAF}\x{5FB1}\x{5FB2}\x{5FB3}' . +'\x{5FB4}\x{5FB5}\x{5FB6}\x{5FB7}\x{5FB8}\x{5FB9}\x{5FBA}\x{5FBB}\x{5FBC}' . +'\x{5FBD}\x{5FBE}\x{5FBF}\x{5FC0}\x{5FC1}\x{5FC3}\x{5FC4}\x{5FC5}\x{5FC6}' . +'\x{5FC7}\x{5FC8}\x{5FC9}\x{5FCA}\x{5FCB}\x{5FCC}\x{5FCD}\x{5FCF}\x{5FD0}' . +'\x{5FD1}\x{5FD2}\x{5FD3}\x{5FD4}\x{5FD5}\x{5FD6}\x{5FD7}\x{5FD8}\x{5FD9}' . +'\x{5FDA}\x{5FDC}\x{5FDD}\x{5FDE}\x{5FE0}\x{5FE1}\x{5FE3}\x{5FE4}\x{5FE5}' . +'\x{5FE6}\x{5FE7}\x{5FE8}\x{5FE9}\x{5FEA}\x{5FEB}\x{5FED}\x{5FEE}\x{5FEF}' . +'\x{5FF0}\x{5FF1}\x{5FF2}\x{5FF3}\x{5FF4}\x{5FF5}\x{5FF6}\x{5FF7}\x{5FF8}' . +'\x{5FF9}\x{5FFA}\x{5FFB}\x{5FFD}\x{5FFE}\x{5FFF}\x{6000}\x{6001}\x{6002}' . +'\x{6003}\x{6004}\x{6005}\x{6006}\x{6007}\x{6008}\x{6009}\x{600A}\x{600B}' . +'\x{600C}\x{600D}\x{600E}\x{600F}\x{6010}\x{6011}\x{6012}\x{6013}\x{6014}' . +'\x{6015}\x{6016}\x{6017}\x{6018}\x{6019}\x{601A}\x{601B}\x{601C}\x{601D}' . +'\x{601E}\x{601F}\x{6020}\x{6021}\x{6022}\x{6024}\x{6025}\x{6026}\x{6027}' . +'\x{6028}\x{6029}\x{602A}\x{602B}\x{602C}\x{602D}\x{602E}\x{602F}\x{6030}' . +'\x{6031}\x{6032}\x{6033}\x{6034}\x{6035}\x{6036}\x{6037}\x{6038}\x{6039}' . +'\x{603A}\x{603B}\x{603C}\x{603D}\x{603E}\x{603F}\x{6040}\x{6041}\x{6042}' . +'\x{6043}\x{6044}\x{6045}\x{6046}\x{6047}\x{6048}\x{6049}\x{604A}\x{604B}' . +'\x{604C}\x{604D}\x{604E}\x{604F}\x{6050}\x{6051}\x{6052}\x{6053}\x{6054}' . +'\x{6055}\x{6057}\x{6058}\x{6059}\x{605A}\x{605B}\x{605C}\x{605D}\x{605E}' . +'\x{605F}\x{6062}\x{6063}\x{6064}\x{6065}\x{6066}\x{6067}\x{6068}\x{6069}' . +'\x{606A}\x{606B}\x{606C}\x{606D}\x{606E}\x{606F}\x{6070}\x{6072}\x{6073}' . +'\x{6075}\x{6076}\x{6077}\x{6078}\x{6079}\x{607A}\x{607B}\x{607C}\x{607D}' . +'\x{607E}\x{607F}\x{6080}\x{6081}\x{6082}\x{6083}\x{6084}\x{6085}\x{6086}' . +'\x{6087}\x{6088}\x{6089}\x{608A}\x{608B}\x{608C}\x{608D}\x{608E}\x{608F}' . +'\x{6090}\x{6092}\x{6094}\x{6095}\x{6096}\x{6097}\x{6098}\x{6099}\x{609A}' . +'\x{609B}\x{609C}\x{609D}\x{609E}\x{609F}\x{60A0}\x{60A1}\x{60A2}\x{60A3}' . +'\x{60A4}\x{60A6}\x{60A7}\x{60A8}\x{60AA}\x{60AB}\x{60AC}\x{60AD}\x{60AE}' . +'\x{60AF}\x{60B0}\x{60B1}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B7}' . +'\x{60B8}\x{60B9}\x{60BA}\x{60BB}\x{60BC}\x{60BD}\x{60BE}\x{60BF}\x{60C0}' . +'\x{60C1}\x{60C2}\x{60C3}\x{60C4}\x{60C5}\x{60C6}\x{60C7}\x{60C8}\x{60C9}' . +'\x{60CA}\x{60CB}\x{60CC}\x{60CD}\x{60CE}\x{60CF}\x{60D0}\x{60D1}\x{60D3}' . +'\x{60D4}\x{60D5}\x{60D7}\x{60D8}\x{60D9}\x{60DA}\x{60DB}\x{60DC}\x{60DD}' . +'\x{60DF}\x{60E0}\x{60E1}\x{60E2}\x{60E4}\x{60E6}\x{60E7}\x{60E8}\x{60E9}' . +'\x{60EA}\x{60EB}\x{60EC}\x{60ED}\x{60EE}\x{60EF}\x{60F0}\x{60F1}\x{60F2}' . +'\x{60F3}\x{60F4}\x{60F5}\x{60F6}\x{60F7}\x{60F8}\x{60F9}\x{60FA}\x{60FB}' . +'\x{60FC}\x{60FE}\x{60FF}\x{6100}\x{6101}\x{6103}\x{6104}\x{6105}\x{6106}' . +'\x{6108}\x{6109}\x{610A}\x{610B}\x{610C}\x{610D}\x{610E}\x{610F}\x{6110}' . +'\x{6112}\x{6113}\x{6114}\x{6115}\x{6116}\x{6117}\x{6118}\x{6119}\x{611A}' . +'\x{611B}\x{611C}\x{611D}\x{611F}\x{6120}\x{6122}\x{6123}\x{6124}\x{6125}' . +'\x{6126}\x{6127}\x{6128}\x{6129}\x{612A}\x{612B}\x{612C}\x{612D}\x{612E}' . +'\x{612F}\x{6130}\x{6132}\x{6134}\x{6136}\x{6137}\x{613A}\x{613B}\x{613C}' . +'\x{613D}\x{613E}\x{613F}\x{6140}\x{6141}\x{6142}\x{6143}\x{6144}\x{6145}' . +'\x{6146}\x{6147}\x{6148}\x{6149}\x{614A}\x{614B}\x{614C}\x{614D}\x{614E}' . +'\x{614F}\x{6150}\x{6151}\x{6152}\x{6153}\x{6154}\x{6155}\x{6156}\x{6157}' . +'\x{6158}\x{6159}\x{615A}\x{615B}\x{615C}\x{615D}\x{615E}\x{615F}\x{6161}' . +'\x{6162}\x{6163}\x{6164}\x{6165}\x{6166}\x{6167}\x{6168}\x{6169}\x{616A}' . +'\x{616B}\x{616C}\x{616D}\x{616E}\x{6170}\x{6171}\x{6172}\x{6173}\x{6174}' . +'\x{6175}\x{6176}\x{6177}\x{6178}\x{6179}\x{617A}\x{617C}\x{617E}\x{6180}' . +'\x{6181}\x{6182}\x{6183}\x{6184}\x{6185}\x{6187}\x{6188}\x{6189}\x{618A}' . +'\x{618B}\x{618C}\x{618D}\x{618E}\x{618F}\x{6190}\x{6191}\x{6192}\x{6193}' . +'\x{6194}\x{6195}\x{6196}\x{6198}\x{6199}\x{619A}\x{619B}\x{619D}\x{619E}' . +'\x{619F}\x{61A0}\x{61A1}\x{61A2}\x{61A3}\x{61A4}\x{61A5}\x{61A6}\x{61A7}' . +'\x{61A8}\x{61A9}\x{61AA}\x{61AB}\x{61AC}\x{61AD}\x{61AE}\x{61AF}\x{61B0}' . +'\x{61B1}\x{61B2}\x{61B3}\x{61B4}\x{61B5}\x{61B6}\x{61B7}\x{61B8}\x{61BA}' . +'\x{61BC}\x{61BD}\x{61BE}\x{61BF}\x{61C0}\x{61C1}\x{61C2}\x{61C3}\x{61C4}' . +'\x{61C5}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' . +'\x{61CE}\x{61CF}\x{61D0}\x{61D1}\x{61D2}\x{61D4}\x{61D6}\x{61D7}\x{61D8}' . +'\x{61D9}\x{61DA}\x{61DB}\x{61DC}\x{61DD}\x{61DE}\x{61DF}\x{61E0}\x{61E1}' . +'\x{61E2}\x{61E3}\x{61E4}\x{61E5}\x{61E6}\x{61E7}\x{61E8}\x{61E9}\x{61EA}' . +'\x{61EB}\x{61ED}\x{61EE}\x{61F0}\x{61F1}\x{61F2}\x{61F3}\x{61F5}\x{61F6}' . +'\x{61F7}\x{61F8}\x{61F9}\x{61FA}\x{61FB}\x{61FC}\x{61FD}\x{61FE}\x{61FF}' . +'\x{6200}\x{6201}\x{6202}\x{6203}\x{6204}\x{6206}\x{6207}\x{6208}\x{6209}' . +'\x{620A}\x{620B}\x{620C}\x{620D}\x{620E}\x{620F}\x{6210}\x{6211}\x{6212}' . +'\x{6213}\x{6214}\x{6215}\x{6216}\x{6217}\x{6218}\x{6219}\x{621A}\x{621B}' . +'\x{621C}\x{621D}\x{621E}\x{621F}\x{6220}\x{6221}\x{6222}\x{6223}\x{6224}' . +'\x{6225}\x{6226}\x{6227}\x{6228}\x{6229}\x{622A}\x{622B}\x{622C}\x{622D}' . +'\x{622E}\x{622F}\x{6230}\x{6231}\x{6232}\x{6233}\x{6234}\x{6236}\x{6237}' . +'\x{6238}\x{623A}\x{623B}\x{623C}\x{623D}\x{623E}\x{623F}\x{6240}\x{6241}' . +'\x{6242}\x{6243}\x{6244}\x{6245}\x{6246}\x{6247}\x{6248}\x{6249}\x{624A}' . +'\x{624B}\x{624C}\x{624D}\x{624E}\x{624F}\x{6250}\x{6251}\x{6252}\x{6253}' . +'\x{6254}\x{6255}\x{6256}\x{6258}\x{6259}\x{625A}\x{625B}\x{625C}\x{625D}' . +'\x{625E}\x{625F}\x{6260}\x{6261}\x{6262}\x{6263}\x{6264}\x{6265}\x{6266}' . +'\x{6267}\x{6268}\x{6269}\x{626A}\x{626B}\x{626C}\x{626D}\x{626E}\x{626F}' . +'\x{6270}\x{6271}\x{6272}\x{6273}\x{6274}\x{6275}\x{6276}\x{6277}\x{6278}' . +'\x{6279}\x{627A}\x{627B}\x{627C}\x{627D}\x{627E}\x{627F}\x{6280}\x{6281}' . +'\x{6283}\x{6284}\x{6285}\x{6286}\x{6287}\x{6288}\x{6289}\x{628A}\x{628B}' . +'\x{628C}\x{628E}\x{628F}\x{6290}\x{6291}\x{6292}\x{6293}\x{6294}\x{6295}' . +'\x{6296}\x{6297}\x{6298}\x{6299}\x{629A}\x{629B}\x{629C}\x{629E}\x{629F}' . +'\x{62A0}\x{62A1}\x{62A2}\x{62A3}\x{62A4}\x{62A5}\x{62A7}\x{62A8}\x{62A9}' . +'\x{62AA}\x{62AB}\x{62AC}\x{62AD}\x{62AE}\x{62AF}\x{62B0}\x{62B1}\x{62B2}' . +'\x{62B3}\x{62B4}\x{62B5}\x{62B6}\x{62B7}\x{62B8}\x{62B9}\x{62BA}\x{62BB}' . +'\x{62BC}\x{62BD}\x{62BE}\x{62BF}\x{62C0}\x{62C1}\x{62C2}\x{62C3}\x{62C4}' . +'\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CB}\x{62CC}\x{62CD}' . +'\x{62CE}\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D5}\x{62D6}' . +'\x{62D7}\x{62D8}\x{62D9}\x{62DA}\x{62DB}\x{62DC}\x{62DD}\x{62DF}\x{62E0}' . +'\x{62E1}\x{62E2}\x{62E3}\x{62E4}\x{62E5}\x{62E6}\x{62E7}\x{62E8}\x{62E9}' . +'\x{62EB}\x{62EC}\x{62ED}\x{62EE}\x{62EF}\x{62F0}\x{62F1}\x{62F2}\x{62F3}' . +'\x{62F4}\x{62F5}\x{62F6}\x{62F7}\x{62F8}\x{62F9}\x{62FA}\x{62FB}\x{62FC}' . +'\x{62FD}\x{62FE}\x{62FF}\x{6300}\x{6301}\x{6302}\x{6303}\x{6304}\x{6305}' . +'\x{6306}\x{6307}\x{6308}\x{6309}\x{630B}\x{630C}\x{630D}\x{630E}\x{630F}' . +'\x{6310}\x{6311}\x{6312}\x{6313}\x{6314}\x{6315}\x{6316}\x{6318}\x{6319}' . +'\x{631A}\x{631B}\x{631C}\x{631D}\x{631E}\x{631F}\x{6320}\x{6321}\x{6322}' . +'\x{6323}\x{6324}\x{6325}\x{6326}\x{6327}\x{6328}\x{6329}\x{632A}\x{632B}' . +'\x{632C}\x{632D}\x{632E}\x{632F}\x{6330}\x{6332}\x{6333}\x{6334}\x{6336}' . +'\x{6338}\x{6339}\x{633A}\x{633B}\x{633C}\x{633D}\x{633E}\x{6340}\x{6341}' . +'\x{6342}\x{6343}\x{6344}\x{6345}\x{6346}\x{6347}\x{6348}\x{6349}\x{634A}' . +'\x{634B}\x{634C}\x{634D}\x{634E}\x{634F}\x{6350}\x{6351}\x{6352}\x{6353}' . +'\x{6354}\x{6355}\x{6356}\x{6357}\x{6358}\x{6359}\x{635A}\x{635C}\x{635D}' . +'\x{635E}\x{635F}\x{6360}\x{6361}\x{6362}\x{6363}\x{6364}\x{6365}\x{6366}' . +'\x{6367}\x{6368}\x{6369}\x{636A}\x{636B}\x{636C}\x{636D}\x{636E}\x{636F}' . +'\x{6370}\x{6371}\x{6372}\x{6373}\x{6374}\x{6375}\x{6376}\x{6377}\x{6378}' . +'\x{6379}\x{637A}\x{637B}\x{637C}\x{637D}\x{637E}\x{6380}\x{6381}\x{6382}' . +'\x{6383}\x{6384}\x{6385}\x{6386}\x{6387}\x{6388}\x{6389}\x{638A}\x{638C}' . +'\x{638D}\x{638E}\x{638F}\x{6390}\x{6391}\x{6392}\x{6394}\x{6395}\x{6396}' . +'\x{6397}\x{6398}\x{6399}\x{639A}\x{639B}\x{639C}\x{639D}\x{639E}\x{639F}' . +'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A4}\x{63A5}\x{63A6}\x{63A7}\x{63A8}' . +'\x{63A9}\x{63AA}\x{63AB}\x{63AC}\x{63AD}\x{63AE}\x{63AF}\x{63B0}\x{63B1}' . +'\x{63B2}\x{63B3}\x{63B4}\x{63B5}\x{63B6}\x{63B7}\x{63B8}\x{63B9}\x{63BA}' . +'\x{63BC}\x{63BD}\x{63BE}\x{63BF}\x{63C0}\x{63C1}\x{63C2}\x{63C3}\x{63C4}' . +'\x{63C5}\x{63C6}\x{63C7}\x{63C8}\x{63C9}\x{63CA}\x{63CB}\x{63CC}\x{63CD}' . +'\x{63CE}\x{63CF}\x{63D0}\x{63D2}\x{63D3}\x{63D4}\x{63D5}\x{63D6}\x{63D7}' . +'\x{63D8}\x{63D9}\x{63DA}\x{63DB}\x{63DC}\x{63DD}\x{63DE}\x{63DF}\x{63E0}' . +'\x{63E1}\x{63E2}\x{63E3}\x{63E4}\x{63E5}\x{63E6}\x{63E7}\x{63E8}\x{63E9}' . +'\x{63EA}\x{63EB}\x{63EC}\x{63ED}\x{63EE}\x{63EF}\x{63F0}\x{63F1}\x{63F2}' . +'\x{63F3}\x{63F4}\x{63F5}\x{63F6}\x{63F7}\x{63F8}\x{63F9}\x{63FA}\x{63FB}' . +'\x{63FC}\x{63FD}\x{63FE}\x{63FF}\x{6400}\x{6401}\x{6402}\x{6403}\x{6404}' . +'\x{6405}\x{6406}\x{6408}\x{6409}\x{640A}\x{640B}\x{640C}\x{640D}\x{640E}' . +'\x{640F}\x{6410}\x{6411}\x{6412}\x{6413}\x{6414}\x{6415}\x{6416}\x{6417}' . +'\x{6418}\x{6419}\x{641A}\x{641B}\x{641C}\x{641D}\x{641E}\x{641F}\x{6420}' . +'\x{6421}\x{6422}\x{6423}\x{6424}\x{6425}\x{6426}\x{6427}\x{6428}\x{6429}' . +'\x{642A}\x{642B}\x{642C}\x{642D}\x{642E}\x{642F}\x{6430}\x{6431}\x{6432}' . +'\x{6433}\x{6434}\x{6435}\x{6436}\x{6437}\x{6438}\x{6439}\x{643A}\x{643D}' . +'\x{643E}\x{643F}\x{6440}\x{6441}\x{6443}\x{6444}\x{6445}\x{6446}\x{6447}' . +'\x{6448}\x{644A}\x{644B}\x{644C}\x{644D}\x{644E}\x{644F}\x{6450}\x{6451}' . +'\x{6452}\x{6453}\x{6454}\x{6455}\x{6456}\x{6457}\x{6458}\x{6459}\x{645B}' . +'\x{645C}\x{645D}\x{645E}\x{645F}\x{6460}\x{6461}\x{6462}\x{6463}\x{6464}' . +'\x{6465}\x{6466}\x{6467}\x{6468}\x{6469}\x{646A}\x{646B}\x{646C}\x{646D}' . +'\x{646E}\x{646F}\x{6470}\x{6471}\x{6472}\x{6473}\x{6474}\x{6475}\x{6476}' . +'\x{6477}\x{6478}\x{6479}\x{647A}\x{647B}\x{647C}\x{647D}\x{647F}\x{6480}' . +'\x{6481}\x{6482}\x{6483}\x{6484}\x{6485}\x{6487}\x{6488}\x{6489}\x{648A}' . +'\x{648B}\x{648C}\x{648D}\x{648E}\x{648F}\x{6490}\x{6491}\x{6492}\x{6493}' . +'\x{6494}\x{6495}\x{6496}\x{6497}\x{6498}\x{6499}\x{649A}\x{649B}\x{649C}' . +'\x{649D}\x{649E}\x{649F}\x{64A0}\x{64A2}\x{64A3}\x{64A4}\x{64A5}\x{64A6}' . +'\x{64A7}\x{64A8}\x{64A9}\x{64AA}\x{64AB}\x{64AC}\x{64AD}\x{64AE}\x{64B0}' . +'\x{64B1}\x{64B2}\x{64B3}\x{64B4}\x{64B5}\x{64B7}\x{64B8}\x{64B9}\x{64BA}' . +'\x{64BB}\x{64BC}\x{64BD}\x{64BE}\x{64BF}\x{64C0}\x{64C1}\x{64C2}\x{64C3}' . +'\x{64C4}\x{64C5}\x{64C6}\x{64C7}\x{64C9}\x{64CA}\x{64CB}\x{64CC}\x{64CD}' . +'\x{64CE}\x{64CF}\x{64D0}\x{64D1}\x{64D2}\x{64D3}\x{64D4}\x{64D6}\x{64D7}' . +'\x{64D8}\x{64D9}\x{64DA}\x{64DB}\x{64DC}\x{64DD}\x{64DE}\x{64DF}\x{64E0}' . +'\x{64E2}\x{64E3}\x{64E4}\x{64E6}\x{64E7}\x{64E8}\x{64E9}\x{64EA}\x{64EB}' . +'\x{64EC}\x{64ED}\x{64EF}\x{64F0}\x{64F1}\x{64F2}\x{64F3}\x{64F4}\x{64F6}' . +'\x{64F7}\x{64F8}\x{64FA}\x{64FB}\x{64FC}\x{64FD}\x{64FE}\x{64FF}\x{6500}' . +'\x{6501}\x{6503}\x{6504}\x{6505}\x{6506}\x{6507}\x{6508}\x{6509}\x{650B}' . +'\x{650C}\x{650D}\x{650E}\x{650F}\x{6510}\x{6511}\x{6512}\x{6513}\x{6514}' . +'\x{6515}\x{6516}\x{6517}\x{6518}\x{6519}\x{651A}\x{651B}\x{651C}\x{651D}' . +'\x{651E}\x{6520}\x{6521}\x{6522}\x{6523}\x{6524}\x{6525}\x{6526}\x{6527}' . +'\x{6529}\x{652A}\x{652B}\x{652C}\x{652D}\x{652E}\x{652F}\x{6530}\x{6531}' . +'\x{6532}\x{6533}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}\x{653A}' . +'\x{653B}\x{653C}\x{653D}\x{653E}\x{653F}\x{6541}\x{6543}\x{6544}\x{6545}' . +'\x{6546}\x{6547}\x{6548}\x{6549}\x{654A}\x{654B}\x{654C}\x{654D}\x{654E}' . +'\x{654F}\x{6550}\x{6551}\x{6552}\x{6553}\x{6554}\x{6555}\x{6556}\x{6557}' . +'\x{6558}\x{6559}\x{655B}\x{655C}\x{655D}\x{655E}\x{6560}\x{6561}\x{6562}' . +'\x{6563}\x{6564}\x{6565}\x{6566}\x{6567}\x{6568}\x{6569}\x{656A}\x{656B}' . +'\x{656C}\x{656E}\x{656F}\x{6570}\x{6571}\x{6572}\x{6573}\x{6574}\x{6575}' . +'\x{6576}\x{6577}\x{6578}\x{6579}\x{657A}\x{657B}\x{657C}\x{657E}\x{657F}' . +'\x{6580}\x{6581}\x{6582}\x{6583}\x{6584}\x{6585}\x{6586}\x{6587}\x{6588}' . +'\x{6589}\x{658B}\x{658C}\x{658D}\x{658E}\x{658F}\x{6590}\x{6591}\x{6592}' . +'\x{6593}\x{6594}\x{6595}\x{6596}\x{6597}\x{6598}\x{6599}\x{659B}\x{659C}' . +'\x{659D}\x{659E}\x{659F}\x{65A0}\x{65A1}\x{65A2}\x{65A3}\x{65A4}\x{65A5}' . +'\x{65A6}\x{65A7}\x{65A8}\x{65A9}\x{65AA}\x{65AB}\x{65AC}\x{65AD}\x{65AE}' . +'\x{65AF}\x{65B0}\x{65B1}\x{65B2}\x{65B3}\x{65B4}\x{65B6}\x{65B7}\x{65B8}' . +'\x{65B9}\x{65BA}\x{65BB}\x{65BC}\x{65BD}\x{65BF}\x{65C0}\x{65C1}\x{65C2}' . +'\x{65C3}\x{65C4}\x{65C5}\x{65C6}\x{65C7}\x{65CA}\x{65CB}\x{65CC}\x{65CD}' . +'\x{65CE}\x{65CF}\x{65D0}\x{65D2}\x{65D3}\x{65D4}\x{65D5}\x{65D6}\x{65D7}' . +'\x{65DA}\x{65DB}\x{65DD}\x{65DE}\x{65DF}\x{65E0}\x{65E1}\x{65E2}\x{65E3}' . +'\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}\x{65EB}\x{65EC}\x{65ED}\x{65EE}' . +'\x{65EF}\x{65F0}\x{65F1}\x{65F2}\x{65F3}\x{65F4}\x{65F5}\x{65F6}\x{65F7}' . +'\x{65F8}\x{65FA}\x{65FB}\x{65FC}\x{65FD}\x{6600}\x{6601}\x{6602}\x{6603}' . +'\x{6604}\x{6605}\x{6606}\x{6607}\x{6608}\x{6609}\x{660A}\x{660B}\x{660C}' . +'\x{660D}\x{660E}\x{660F}\x{6610}\x{6611}\x{6612}\x{6613}\x{6614}\x{6615}' . +'\x{6616}\x{6618}\x{6619}\x{661A}\x{661B}\x{661C}\x{661D}\x{661F}\x{6620}' . +'\x{6621}\x{6622}\x{6623}\x{6624}\x{6625}\x{6626}\x{6627}\x{6628}\x{6629}' . +'\x{662A}\x{662B}\x{662D}\x{662E}\x{662F}\x{6630}\x{6631}\x{6632}\x{6633}' . +'\x{6634}\x{6635}\x{6636}\x{6639}\x{663A}\x{663C}\x{663D}\x{663E}\x{6640}' . +'\x{6641}\x{6642}\x{6643}\x{6644}\x{6645}\x{6646}\x{6647}\x{6649}\x{664A}' . +'\x{664B}\x{664C}\x{664E}\x{664F}\x{6650}\x{6651}\x{6652}\x{6653}\x{6654}' . +'\x{6655}\x{6656}\x{6657}\x{6658}\x{6659}\x{665A}\x{665B}\x{665C}\x{665D}' . +'\x{665E}\x{665F}\x{6661}\x{6662}\x{6664}\x{6665}\x{6666}\x{6668}\x{6669}' . +'\x{666A}\x{666B}\x{666C}\x{666D}\x{666E}\x{666F}\x{6670}\x{6671}\x{6672}' . +'\x{6673}\x{6674}\x{6675}\x{6676}\x{6677}\x{6678}\x{6679}\x{667A}\x{667B}' . +'\x{667C}\x{667D}\x{667E}\x{667F}\x{6680}\x{6681}\x{6682}\x{6683}\x{6684}' . +'\x{6685}\x{6686}\x{6687}\x{6688}\x{6689}\x{668A}\x{668B}\x{668C}\x{668D}' . +'\x{668E}\x{668F}\x{6690}\x{6691}\x{6693}\x{6694}\x{6695}\x{6696}\x{6697}' . +'\x{6698}\x{6699}\x{669A}\x{669B}\x{669D}\x{669F}\x{66A0}\x{66A1}\x{66A2}' . +'\x{66A3}\x{66A4}\x{66A5}\x{66A6}\x{66A7}\x{66A8}\x{66A9}\x{66AA}\x{66AB}' . +'\x{66AE}\x{66AF}\x{66B0}\x{66B1}\x{66B2}\x{66B3}\x{66B4}\x{66B5}\x{66B6}' . +'\x{66B7}\x{66B8}\x{66B9}\x{66BA}\x{66BB}\x{66BC}\x{66BD}\x{66BE}\x{66BF}' . +'\x{66C0}\x{66C1}\x{66C2}\x{66C3}\x{66C4}\x{66C5}\x{66C6}\x{66C7}\x{66C8}' . +'\x{66C9}\x{66CA}\x{66CB}\x{66CC}\x{66CD}\x{66CE}\x{66CF}\x{66D1}\x{66D2}' . +'\x{66D4}\x{66D5}\x{66D6}\x{66D8}\x{66D9}\x{66DA}\x{66DB}\x{66DC}\x{66DD}' . +'\x{66DE}\x{66E0}\x{66E1}\x{66E2}\x{66E3}\x{66E4}\x{66E5}\x{66E6}\x{66E7}' . +'\x{66E8}\x{66E9}\x{66EA}\x{66EB}\x{66EC}\x{66ED}\x{66EE}\x{66F0}\x{66F1}' . +'\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F6}\x{66F7}\x{66F8}\x{66F9}\x{66FA}' . +'\x{66FB}\x{66FC}\x{66FE}\x{66FF}\x{6700}\x{6701}\x{6703}\x{6704}\x{6705}' . +'\x{6706}\x{6708}\x{6709}\x{670A}\x{670B}\x{670C}\x{670D}\x{670E}\x{670F}' . +'\x{6710}\x{6711}\x{6712}\x{6713}\x{6714}\x{6715}\x{6716}\x{6717}\x{6718}' . +'\x{671A}\x{671B}\x{671C}\x{671D}\x{671E}\x{671F}\x{6720}\x{6721}\x{6722}' . +'\x{6723}\x{6725}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}\x{672D}' . +'\x{672E}\x{672F}\x{6730}\x{6731}\x{6732}\x{6733}\x{6734}\x{6735}\x{6736}' . +'\x{6737}\x{6738}\x{6739}\x{673A}\x{673B}\x{673C}\x{673D}\x{673E}\x{673F}' . +'\x{6740}\x{6741}\x{6742}\x{6743}\x{6744}\x{6745}\x{6746}\x{6747}\x{6748}' . +'\x{6749}\x{674A}\x{674B}\x{674C}\x{674D}\x{674E}\x{674F}\x{6750}\x{6751}' . +'\x{6752}\x{6753}\x{6754}\x{6755}\x{6756}\x{6757}\x{6758}\x{6759}\x{675A}' . +'\x{675B}\x{675C}\x{675D}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' . +'\x{6764}\x{6765}\x{6766}\x{6768}\x{6769}\x{676A}\x{676B}\x{676C}\x{676D}' . +'\x{676E}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}\x{6774}\x{6775}\x{6776}' . +'\x{6777}\x{6778}\x{6779}\x{677A}\x{677B}\x{677C}\x{677D}\x{677E}\x{677F}' . +'\x{6780}\x{6781}\x{6782}\x{6783}\x{6784}\x{6785}\x{6786}\x{6787}\x{6789}' . +'\x{678A}\x{678B}\x{678C}\x{678D}\x{678E}\x{678F}\x{6790}\x{6791}\x{6792}' . +'\x{6793}\x{6794}\x{6795}\x{6797}\x{6798}\x{6799}\x{679A}\x{679B}\x{679C}' . +'\x{679D}\x{679E}\x{679F}\x{67A0}\x{67A1}\x{67A2}\x{67A3}\x{67A4}\x{67A5}' . +'\x{67A6}\x{67A7}\x{67A8}\x{67AA}\x{67AB}\x{67AC}\x{67AD}\x{67AE}\x{67AF}' . +'\x{67B0}\x{67B1}\x{67B2}\x{67B3}\x{67B4}\x{67B5}\x{67B6}\x{67B7}\x{67B8}' . +'\x{67B9}\x{67BA}\x{67BB}\x{67BC}\x{67BE}\x{67C0}\x{67C1}\x{67C2}\x{67C3}' . +'\x{67C4}\x{67C5}\x{67C6}\x{67C7}\x{67C8}\x{67C9}\x{67CA}\x{67CB}\x{67CC}' . +'\x{67CD}\x{67CE}\x{67CF}\x{67D0}\x{67D1}\x{67D2}\x{67D3}\x{67D4}\x{67D6}' . +'\x{67D8}\x{67D9}\x{67DA}\x{67DB}\x{67DC}\x{67DD}\x{67DE}\x{67DF}\x{67E0}' . +'\x{67E1}\x{67E2}\x{67E3}\x{67E4}\x{67E5}\x{67E6}\x{67E7}\x{67E8}\x{67E9}' . +'\x{67EA}\x{67EB}\x{67EC}\x{67ED}\x{67EE}\x{67EF}\x{67F0}\x{67F1}\x{67F2}' . +'\x{67F3}\x{67F4}\x{67F5}\x{67F6}\x{67F7}\x{67F8}\x{67FA}\x{67FB}\x{67FC}' . +'\x{67FD}\x{67FE}\x{67FF}\x{6800}\x{6802}\x{6803}\x{6804}\x{6805}\x{6806}' . +'\x{6807}\x{6808}\x{6809}\x{680A}\x{680B}\x{680C}\x{680D}\x{680E}\x{680F}' . +'\x{6810}\x{6811}\x{6812}\x{6813}\x{6814}\x{6816}\x{6817}\x{6818}\x{6819}' . +'\x{681A}\x{681B}\x{681C}\x{681D}\x{681F}\x{6820}\x{6821}\x{6822}\x{6823}' . +'\x{6824}\x{6825}\x{6826}\x{6828}\x{6829}\x{682A}\x{682B}\x{682C}\x{682D}' . +'\x{682E}\x{682F}\x{6831}\x{6832}\x{6833}\x{6834}\x{6835}\x{6836}\x{6837}' . +'\x{6838}\x{6839}\x{683A}\x{683B}\x{683C}\x{683D}\x{683E}\x{683F}\x{6840}' . +'\x{6841}\x{6842}\x{6843}\x{6844}\x{6845}\x{6846}\x{6847}\x{6848}\x{6849}' . +'\x{684A}\x{684B}\x{684C}\x{684D}\x{684E}\x{684F}\x{6850}\x{6851}\x{6852}' . +'\x{6853}\x{6854}\x{6855}\x{6856}\x{6857}\x{685B}\x{685D}\x{6860}\x{6861}' . +'\x{6862}\x{6863}\x{6864}\x{6865}\x{6866}\x{6867}\x{6868}\x{6869}\x{686A}' . +'\x{686B}\x{686C}\x{686D}\x{686E}\x{686F}\x{6870}\x{6871}\x{6872}\x{6873}' . +'\x{6874}\x{6875}\x{6876}\x{6877}\x{6878}\x{6879}\x{687B}\x{687C}\x{687D}' . +'\x{687E}\x{687F}\x{6880}\x{6881}\x{6882}\x{6883}\x{6884}\x{6885}\x{6886}' . +'\x{6887}\x{6888}\x{6889}\x{688A}\x{688B}\x{688C}\x{688D}\x{688E}\x{688F}' . +'\x{6890}\x{6891}\x{6892}\x{6893}\x{6894}\x{6896}\x{6897}\x{6898}\x{689A}' . +'\x{689B}\x{689C}\x{689D}\x{689E}\x{689F}\x{68A0}\x{68A1}\x{68A2}\x{68A3}' . +'\x{68A4}\x{68A6}\x{68A7}\x{68A8}\x{68A9}\x{68AA}\x{68AB}\x{68AC}\x{68AD}' . +'\x{68AE}\x{68AF}\x{68B0}\x{68B1}\x{68B2}\x{68B3}\x{68B4}\x{68B5}\x{68B6}' . +'\x{68B7}\x{68B9}\x{68BB}\x{68BC}\x{68BD}\x{68BE}\x{68BF}\x{68C0}\x{68C1}' . +'\x{68C2}\x{68C4}\x{68C6}\x{68C7}\x{68C8}\x{68C9}\x{68CA}\x{68CB}\x{68CC}' . +'\x{68CD}\x{68CE}\x{68CF}\x{68D0}\x{68D1}\x{68D2}\x{68D3}\x{68D4}\x{68D5}' . +'\x{68D6}\x{68D7}\x{68D8}\x{68DA}\x{68DB}\x{68DC}\x{68DD}\x{68DE}\x{68DF}' . +'\x{68E0}\x{68E1}\x{68E3}\x{68E4}\x{68E6}\x{68E7}\x{68E8}\x{68E9}\x{68EA}' . +'\x{68EB}\x{68EC}\x{68ED}\x{68EE}\x{68EF}\x{68F0}\x{68F1}\x{68F2}\x{68F3}' . +'\x{68F4}\x{68F5}\x{68F6}\x{68F7}\x{68F8}\x{68F9}\x{68FA}\x{68FB}\x{68FC}' . +'\x{68FD}\x{68FE}\x{68FF}\x{6901}\x{6902}\x{6903}\x{6904}\x{6905}\x{6906}' . +'\x{6907}\x{6908}\x{690A}\x{690B}\x{690C}\x{690D}\x{690E}\x{690F}\x{6910}' . +'\x{6911}\x{6912}\x{6913}\x{6914}\x{6915}\x{6916}\x{6917}\x{6918}\x{6919}' . +'\x{691A}\x{691B}\x{691C}\x{691D}\x{691E}\x{691F}\x{6920}\x{6921}\x{6922}' . +'\x{6923}\x{6924}\x{6925}\x{6926}\x{6927}\x{6928}\x{6929}\x{692A}\x{692B}' . +'\x{692C}\x{692D}\x{692E}\x{692F}\x{6930}\x{6931}\x{6932}\x{6933}\x{6934}' . +'\x{6935}\x{6936}\x{6937}\x{6938}\x{6939}\x{693A}\x{693B}\x{693C}\x{693D}' . +'\x{693F}\x{6940}\x{6941}\x{6942}\x{6943}\x{6944}\x{6945}\x{6946}\x{6947}' . +'\x{6948}\x{6949}\x{694A}\x{694B}\x{694C}\x{694E}\x{694F}\x{6950}\x{6951}' . +'\x{6952}\x{6953}\x{6954}\x{6955}\x{6956}\x{6957}\x{6958}\x{6959}\x{695A}' . +'\x{695B}\x{695C}\x{695D}\x{695E}\x{695F}\x{6960}\x{6961}\x{6962}\x{6963}' . +'\x{6964}\x{6965}\x{6966}\x{6967}\x{6968}\x{6969}\x{696A}\x{696B}\x{696C}' . +'\x{696D}\x{696E}\x{696F}\x{6970}\x{6971}\x{6972}\x{6973}\x{6974}\x{6975}' . +'\x{6976}\x{6977}\x{6978}\x{6979}\x{697A}\x{697B}\x{697C}\x{697D}\x{697E}' . +'\x{697F}\x{6980}\x{6981}\x{6982}\x{6983}\x{6984}\x{6985}\x{6986}\x{6987}' . +'\x{6988}\x{6989}\x{698A}\x{698B}\x{698C}\x{698D}\x{698E}\x{698F}\x{6990}' . +'\x{6991}\x{6992}\x{6993}\x{6994}\x{6995}\x{6996}\x{6997}\x{6998}\x{6999}' . +'\x{699A}\x{699B}\x{699C}\x{699D}\x{699E}\x{69A0}\x{69A1}\x{69A3}\x{69A4}' . +'\x{69A5}\x{69A6}\x{69A7}\x{69A8}\x{69A9}\x{69AA}\x{69AB}\x{69AC}\x{69AD}' . +'\x{69AE}\x{69AF}\x{69B0}\x{69B1}\x{69B2}\x{69B3}\x{69B4}\x{69B5}\x{69B6}' . +'\x{69B7}\x{69B8}\x{69B9}\x{69BA}\x{69BB}\x{69BC}\x{69BD}\x{69BE}\x{69BF}' . +'\x{69C1}\x{69C2}\x{69C3}\x{69C4}\x{69C5}\x{69C6}\x{69C7}\x{69C8}\x{69C9}' . +'\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}\x{69CF}\x{69D0}\x{69D3}\x{69D4}' . +'\x{69D8}\x{69D9}\x{69DA}\x{69DB}\x{69DC}\x{69DD}\x{69DE}\x{69DF}\x{69E0}' . +'\x{69E1}\x{69E2}\x{69E3}\x{69E4}\x{69E5}\x{69E6}\x{69E7}\x{69E8}\x{69E9}' . +'\x{69EA}\x{69EB}\x{69EC}\x{69ED}\x{69EE}\x{69EF}\x{69F0}\x{69F1}\x{69F2}' . +'\x{69F3}\x{69F4}\x{69F5}\x{69F6}\x{69F7}\x{69F8}\x{69FA}\x{69FB}\x{69FC}' . +'\x{69FD}\x{69FE}\x{69FF}\x{6A00}\x{6A01}\x{6A02}\x{6A04}\x{6A05}\x{6A06}' . +'\x{6A07}\x{6A08}\x{6A09}\x{6A0A}\x{6A0B}\x{6A0D}\x{6A0E}\x{6A0F}\x{6A10}' . +'\x{6A11}\x{6A12}\x{6A13}\x{6A14}\x{6A15}\x{6A16}\x{6A17}\x{6A18}\x{6A19}' . +'\x{6A1A}\x{6A1B}\x{6A1D}\x{6A1E}\x{6A1F}\x{6A20}\x{6A21}\x{6A22}\x{6A23}' . +'\x{6A25}\x{6A26}\x{6A27}\x{6A28}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2C}\x{6A2D}' . +'\x{6A2E}\x{6A2F}\x{6A30}\x{6A31}\x{6A32}\x{6A33}\x{6A34}\x{6A35}\x{6A36}' . +'\x{6A38}\x{6A39}\x{6A3A}\x{6A3B}\x{6A3C}\x{6A3D}\x{6A3E}\x{6A3F}\x{6A40}' . +'\x{6A41}\x{6A42}\x{6A43}\x{6A44}\x{6A45}\x{6A46}\x{6A47}\x{6A48}\x{6A49}' . +'\x{6A4B}\x{6A4C}\x{6A4D}\x{6A4E}\x{6A4F}\x{6A50}\x{6A51}\x{6A52}\x{6A54}' . +'\x{6A55}\x{6A56}\x{6A57}\x{6A58}\x{6A59}\x{6A5A}\x{6A5B}\x{6A5D}\x{6A5E}' . +'\x{6A5F}\x{6A60}\x{6A61}\x{6A62}\x{6A63}\x{6A64}\x{6A65}\x{6A66}\x{6A67}' . +'\x{6A68}\x{6A69}\x{6A6A}\x{6A6B}\x{6A6C}\x{6A6D}\x{6A6F}\x{6A71}\x{6A72}' . +'\x{6A73}\x{6A74}\x{6A75}\x{6A76}\x{6A77}\x{6A78}\x{6A79}\x{6A7A}\x{6A7B}' . +'\x{6A7C}\x{6A7D}\x{6A7E}\x{6A7F}\x{6A80}\x{6A81}\x{6A82}\x{6A83}\x{6A84}' . +'\x{6A85}\x{6A87}\x{6A88}\x{6A89}\x{6A8B}\x{6A8C}\x{6A8D}\x{6A8E}\x{6A90}' . +'\x{6A91}\x{6A92}\x{6A93}\x{6A94}\x{6A95}\x{6A96}\x{6A97}\x{6A98}\x{6A9A}' . +'\x{6A9B}\x{6A9C}\x{6A9E}\x{6A9F}\x{6AA0}\x{6AA1}\x{6AA2}\x{6AA3}\x{6AA4}' . +'\x{6AA5}\x{6AA6}\x{6AA7}\x{6AA8}\x{6AA9}\x{6AAB}\x{6AAC}\x{6AAD}\x{6AAE}' . +'\x{6AAF}\x{6AB0}\x{6AB2}\x{6AB3}\x{6AB4}\x{6AB5}\x{6AB6}\x{6AB7}\x{6AB8}' . +'\x{6AB9}\x{6ABA}\x{6ABB}\x{6ABC}\x{6ABD}\x{6ABF}\x{6AC1}\x{6AC2}\x{6AC3}' . +'\x{6AC5}\x{6AC6}\x{6AC7}\x{6ACA}\x{6ACB}\x{6ACC}\x{6ACD}\x{6ACE}\x{6ACF}' . +'\x{6AD0}\x{6AD1}\x{6AD2}\x{6AD3}\x{6AD4}\x{6AD5}\x{6AD6}\x{6AD7}\x{6AD9}' . +'\x{6ADA}\x{6ADB}\x{6ADC}\x{6ADD}\x{6ADE}\x{6ADF}\x{6AE0}\x{6AE1}\x{6AE2}' . +'\x{6AE3}\x{6AE4}\x{6AE5}\x{6AE6}\x{6AE7}\x{6AE8}\x{6AEA}\x{6AEB}\x{6AEC}' . +'\x{6AED}\x{6AEE}\x{6AEF}\x{6AF0}\x{6AF1}\x{6AF2}\x{6AF3}\x{6AF4}\x{6AF5}' . +'\x{6AF6}\x{6AF7}\x{6AF8}\x{6AF9}\x{6AFA}\x{6AFB}\x{6AFC}\x{6AFD}\x{6AFE}' . +'\x{6AFF}\x{6B00}\x{6B01}\x{6B02}\x{6B03}\x{6B04}\x{6B05}\x{6B06}\x{6B07}' . +'\x{6B08}\x{6B09}\x{6B0A}\x{6B0B}\x{6B0C}\x{6B0D}\x{6B0F}\x{6B10}\x{6B11}' . +'\x{6B12}\x{6B13}\x{6B14}\x{6B15}\x{6B16}\x{6B17}\x{6B18}\x{6B19}\x{6B1A}' . +'\x{6B1C}\x{6B1D}\x{6B1E}\x{6B1F}\x{6B20}\x{6B21}\x{6B22}\x{6B23}\x{6B24}' . +'\x{6B25}\x{6B26}\x{6B27}\x{6B28}\x{6B29}\x{6B2A}\x{6B2B}\x{6B2C}\x{6B2D}' . +'\x{6B2F}\x{6B30}\x{6B31}\x{6B32}\x{6B33}\x{6B34}\x{6B36}\x{6B37}\x{6B38}' . +'\x{6B39}\x{6B3A}\x{6B3B}\x{6B3C}\x{6B3D}\x{6B3E}\x{6B3F}\x{6B41}\x{6B42}' . +'\x{6B43}\x{6B44}\x{6B45}\x{6B46}\x{6B47}\x{6B48}\x{6B49}\x{6B4A}\x{6B4B}' . +'\x{6B4C}\x{6B4D}\x{6B4E}\x{6B4F}\x{6B50}\x{6B51}\x{6B52}\x{6B53}\x{6B54}' . +'\x{6B55}\x{6B56}\x{6B59}\x{6B5A}\x{6B5B}\x{6B5C}\x{6B5E}\x{6B5F}\x{6B60}' . +'\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B65}\x{6B66}\x{6B67}\x{6B69}\x{6B6A}' . +'\x{6B6B}\x{6B6D}\x{6B6F}\x{6B70}\x{6B72}\x{6B73}\x{6B74}\x{6B76}\x{6B77}' . +'\x{6B78}\x{6B79}\x{6B7A}\x{6B7B}\x{6B7C}\x{6B7E}\x{6B7F}\x{6B80}\x{6B81}' . +'\x{6B82}\x{6B83}\x{6B84}\x{6B85}\x{6B86}\x{6B87}\x{6B88}\x{6B89}\x{6B8A}' . +'\x{6B8B}\x{6B8C}\x{6B8D}\x{6B8E}\x{6B8F}\x{6B90}\x{6B91}\x{6B92}\x{6B93}' . +'\x{6B94}\x{6B95}\x{6B96}\x{6B97}\x{6B98}\x{6B99}\x{6B9A}\x{6B9B}\x{6B9C}' . +'\x{6B9D}\x{6B9E}\x{6B9F}\x{6BA0}\x{6BA1}\x{6BA2}\x{6BA3}\x{6BA4}\x{6BA5}' . +'\x{6BA6}\x{6BA7}\x{6BA8}\x{6BA9}\x{6BAA}\x{6BAB}\x{6BAC}\x{6BAD}\x{6BAE}' . +'\x{6BAF}\x{6BB0}\x{6BB2}\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB6}\x{6BB7}\x{6BB9}' . +'\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBD}\x{6BBE}\x{6BBF}\x{6BC0}\x{6BC1}\x{6BC2}' . +'\x{6BC3}\x{6BC4}\x{6BC5}\x{6BC6}\x{6BC7}\x{6BC8}\x{6BC9}\x{6BCA}\x{6BCB}' . +'\x{6BCC}\x{6BCD}\x{6BCE}\x{6BCF}\x{6BD0}\x{6BD1}\x{6BD2}\x{6BD3}\x{6BD4}' . +'\x{6BD5}\x{6BD6}\x{6BD7}\x{6BD8}\x{6BD9}\x{6BDA}\x{6BDB}\x{6BDC}\x{6BDD}' . +'\x{6BDE}\x{6BDF}\x{6BE0}\x{6BE1}\x{6BE2}\x{6BE3}\x{6BE4}\x{6BE5}\x{6BE6}' . +'\x{6BE7}\x{6BE8}\x{6BEA}\x{6BEB}\x{6BEC}\x{6BED}\x{6BEE}\x{6BEF}\x{6BF0}' . +'\x{6BF2}\x{6BF3}\x{6BF5}\x{6BF6}\x{6BF7}\x{6BF8}\x{6BF9}\x{6BFB}\x{6BFC}' . +'\x{6BFD}\x{6BFE}\x{6BFF}\x{6C00}\x{6C01}\x{6C02}\x{6C03}\x{6C04}\x{6C05}' . +'\x{6C06}\x{6C07}\x{6C08}\x{6C09}\x{6C0B}\x{6C0C}\x{6C0D}\x{6C0E}\x{6C0F}' . +'\x{6C10}\x{6C11}\x{6C12}\x{6C13}\x{6C14}\x{6C15}\x{6C16}\x{6C18}\x{6C19}' . +'\x{6C1A}\x{6C1B}\x{6C1D}\x{6C1E}\x{6C1F}\x{6C20}\x{6C21}\x{6C22}\x{6C23}' . +'\x{6C24}\x{6C25}\x{6C26}\x{6C27}\x{6C28}\x{6C29}\x{6C2A}\x{6C2B}\x{6C2C}' . +'\x{6C2E}\x{6C2F}\x{6C30}\x{6C31}\x{6C32}\x{6C33}\x{6C34}\x{6C35}\x{6C36}' . +'\x{6C37}\x{6C38}\x{6C3A}\x{6C3B}\x{6C3D}\x{6C3E}\x{6C3F}\x{6C40}\x{6C41}' . +'\x{6C42}\x{6C43}\x{6C44}\x{6C46}\x{6C47}\x{6C48}\x{6C49}\x{6C4A}\x{6C4B}' . +'\x{6C4C}\x{6C4D}\x{6C4E}\x{6C4F}\x{6C50}\x{6C51}\x{6C52}\x{6C53}\x{6C54}' . +'\x{6C55}\x{6C56}\x{6C57}\x{6C58}\x{6C59}\x{6C5A}\x{6C5B}\x{6C5C}\x{6C5D}' . +'\x{6C5E}\x{6C5F}\x{6C60}\x{6C61}\x{6C62}\x{6C63}\x{6C64}\x{6C65}\x{6C66}' . +'\x{6C67}\x{6C68}\x{6C69}\x{6C6A}\x{6C6B}\x{6C6D}\x{6C6F}\x{6C70}\x{6C71}' . +'\x{6C72}\x{6C73}\x{6C74}\x{6C75}\x{6C76}\x{6C77}\x{6C78}\x{6C79}\x{6C7A}' . +'\x{6C7B}\x{6C7C}\x{6C7D}\x{6C7E}\x{6C7F}\x{6C80}\x{6C81}\x{6C82}\x{6C83}' . +'\x{6C84}\x{6C85}\x{6C86}\x{6C87}\x{6C88}\x{6C89}\x{6C8A}\x{6C8B}\x{6C8C}' . +'\x{6C8D}\x{6C8E}\x{6C8F}\x{6C90}\x{6C91}\x{6C92}\x{6C93}\x{6C94}\x{6C95}' . +'\x{6C96}\x{6C97}\x{6C98}\x{6C99}\x{6C9A}\x{6C9B}\x{6C9C}\x{6C9D}\x{6C9E}' . +'\x{6C9F}\x{6CA1}\x{6CA2}\x{6CA3}\x{6CA4}\x{6CA5}\x{6CA6}\x{6CA7}\x{6CA8}' . +'\x{6CA9}\x{6CAA}\x{6CAB}\x{6CAC}\x{6CAD}\x{6CAE}\x{6CAF}\x{6CB0}\x{6CB1}' . +'\x{6CB2}\x{6CB3}\x{6CB4}\x{6CB5}\x{6CB6}\x{6CB7}\x{6CB8}\x{6CB9}\x{6CBA}' . +'\x{6CBB}\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC0}\x{6CC1}\x{6CC2}\x{6CC3}' . +'\x{6CC4}\x{6CC5}\x{6CC6}\x{6CC7}\x{6CC8}\x{6CC9}\x{6CCA}\x{6CCB}\x{6CCC}' . +'\x{6CCD}\x{6CCE}\x{6CCF}\x{6CD0}\x{6CD1}\x{6CD2}\x{6CD3}\x{6CD4}\x{6CD5}' . +'\x{6CD6}\x{6CD7}\x{6CD9}\x{6CDA}\x{6CDB}\x{6CDC}\x{6CDD}\x{6CDE}\x{6CDF}' . +'\x{6CE0}\x{6CE1}\x{6CE2}\x{6CE3}\x{6CE4}\x{6CE5}\x{6CE6}\x{6CE7}\x{6CE8}' . +'\x{6CE9}\x{6CEA}\x{6CEB}\x{6CEC}\x{6CED}\x{6CEE}\x{6CEF}\x{6CF0}\x{6CF1}' . +'\x{6CF2}\x{6CF3}\x{6CF5}\x{6CF6}\x{6CF7}\x{6CF8}\x{6CF9}\x{6CFA}\x{6CFB}' . +'\x{6CFC}\x{6CFD}\x{6CFE}\x{6CFF}\x{6D00}\x{6D01}\x{6D03}\x{6D04}\x{6D05}' . +'\x{6D06}\x{6D07}\x{6D08}\x{6D09}\x{6D0A}\x{6D0B}\x{6D0C}\x{6D0D}\x{6D0E}' . +'\x{6D0F}\x{6D10}\x{6D11}\x{6D12}\x{6D13}\x{6D14}\x{6D15}\x{6D16}\x{6D17}' . +'\x{6D18}\x{6D19}\x{6D1A}\x{6D1B}\x{6D1D}\x{6D1E}\x{6D1F}\x{6D20}\x{6D21}' . +'\x{6D22}\x{6D23}\x{6D25}\x{6D26}\x{6D27}\x{6D28}\x{6D29}\x{6D2A}\x{6D2B}' . +'\x{6D2C}\x{6D2D}\x{6D2E}\x{6D2F}\x{6D30}\x{6D31}\x{6D32}\x{6D33}\x{6D34}' . +'\x{6D35}\x{6D36}\x{6D37}\x{6D38}\x{6D39}\x{6D3A}\x{6D3B}\x{6D3C}\x{6D3D}' . +'\x{6D3E}\x{6D3F}\x{6D40}\x{6D41}\x{6D42}\x{6D43}\x{6D44}\x{6D45}\x{6D46}' . +'\x{6D47}\x{6D48}\x{6D49}\x{6D4A}\x{6D4B}\x{6D4C}\x{6D4D}\x{6D4E}\x{6D4F}' . +'\x{6D50}\x{6D51}\x{6D52}\x{6D53}\x{6D54}\x{6D55}\x{6D56}\x{6D57}\x{6D58}' . +'\x{6D59}\x{6D5A}\x{6D5B}\x{6D5C}\x{6D5D}\x{6D5E}\x{6D5F}\x{6D60}\x{6D61}' . +'\x{6D62}\x{6D63}\x{6D64}\x{6D65}\x{6D66}\x{6D67}\x{6D68}\x{6D69}\x{6D6A}' . +'\x{6D6B}\x{6D6C}\x{6D6D}\x{6D6E}\x{6D6F}\x{6D70}\x{6D72}\x{6D73}\x{6D74}' . +'\x{6D75}\x{6D76}\x{6D77}\x{6D78}\x{6D79}\x{6D7A}\x{6D7B}\x{6D7C}\x{6D7D}' . +'\x{6D7E}\x{6D7F}\x{6D80}\x{6D82}\x{6D83}\x{6D84}\x{6D85}\x{6D86}\x{6D87}' . +'\x{6D88}\x{6D89}\x{6D8A}\x{6D8B}\x{6D8C}\x{6D8D}\x{6D8E}\x{6D8F}\x{6D90}' . +'\x{6D91}\x{6D92}\x{6D93}\x{6D94}\x{6D95}\x{6D97}\x{6D98}\x{6D99}\x{6D9A}' . +'\x{6D9B}\x{6D9D}\x{6D9E}\x{6D9F}\x{6DA0}\x{6DA1}\x{6DA2}\x{6DA3}\x{6DA4}' . +'\x{6DA5}\x{6DA6}\x{6DA7}\x{6DA8}\x{6DA9}\x{6DAA}\x{6DAB}\x{6DAC}\x{6DAD}' . +'\x{6DAE}\x{6DAF}\x{6DB2}\x{6DB3}\x{6DB4}\x{6DB5}\x{6DB7}\x{6DB8}\x{6DB9}' . +'\x{6DBA}\x{6DBB}\x{6DBC}\x{6DBD}\x{6DBE}\x{6DBF}\x{6DC0}\x{6DC1}\x{6DC2}' . +'\x{6DC3}\x{6DC4}\x{6DC5}\x{6DC6}\x{6DC7}\x{6DC8}\x{6DC9}\x{6DCA}\x{6DCB}' . +'\x{6DCC}\x{6DCD}\x{6DCE}\x{6DCF}\x{6DD0}\x{6DD1}\x{6DD2}\x{6DD3}\x{6DD4}' . +'\x{6DD5}\x{6DD6}\x{6DD7}\x{6DD8}\x{6DD9}\x{6DDA}\x{6DDB}\x{6DDC}\x{6DDD}' . +'\x{6DDE}\x{6DDF}\x{6DE0}\x{6DE1}\x{6DE2}\x{6DE3}\x{6DE4}\x{6DE5}\x{6DE6}' . +'\x{6DE7}\x{6DE8}\x{6DE9}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DED}\x{6DEE}\x{6DEF}' . +'\x{6DF0}\x{6DF1}\x{6DF2}\x{6DF3}\x{6DF4}\x{6DF5}\x{6DF6}\x{6DF7}\x{6DF8}' . +'\x{6DF9}\x{6DFA}\x{6DFB}\x{6DFC}\x{6DFD}\x{6E00}\x{6E03}\x{6E04}\x{6E05}' . +'\x{6E07}\x{6E08}\x{6E09}\x{6E0A}\x{6E0B}\x{6E0C}\x{6E0D}\x{6E0E}\x{6E0F}' . +'\x{6E10}\x{6E11}\x{6E14}\x{6E15}\x{6E16}\x{6E17}\x{6E19}\x{6E1A}\x{6E1B}' . +'\x{6E1C}\x{6E1D}\x{6E1E}\x{6E1F}\x{6E20}\x{6E21}\x{6E22}\x{6E23}\x{6E24}' . +'\x{6E25}\x{6E26}\x{6E27}\x{6E28}\x{6E29}\x{6E2B}\x{6E2C}\x{6E2D}\x{6E2E}' . +'\x{6E2F}\x{6E30}\x{6E31}\x{6E32}\x{6E33}\x{6E34}\x{6E35}\x{6E36}\x{6E37}' . +'\x{6E38}\x{6E39}\x{6E3A}\x{6E3B}\x{6E3C}\x{6E3D}\x{6E3E}\x{6E3F}\x{6E40}' . +'\x{6E41}\x{6E42}\x{6E43}\x{6E44}\x{6E45}\x{6E46}\x{6E47}\x{6E48}\x{6E49}' . +'\x{6E4A}\x{6E4B}\x{6E4D}\x{6E4E}\x{6E4F}\x{6E50}\x{6E51}\x{6E52}\x{6E53}' . +'\x{6E54}\x{6E55}\x{6E56}\x{6E57}\x{6E58}\x{6E59}\x{6E5A}\x{6E5B}\x{6E5C}' . +'\x{6E5D}\x{6E5E}\x{6E5F}\x{6E60}\x{6E61}\x{6E62}\x{6E63}\x{6E64}\x{6E65}' . +'\x{6E66}\x{6E67}\x{6E68}\x{6E69}\x{6E6A}\x{6E6B}\x{6E6D}\x{6E6E}\x{6E6F}' . +'\x{6E70}\x{6E71}\x{6E72}\x{6E73}\x{6E74}\x{6E75}\x{6E77}\x{6E78}\x{6E79}' . +'\x{6E7E}\x{6E7F}\x{6E80}\x{6E81}\x{6E82}\x{6E83}\x{6E84}\x{6E85}\x{6E86}' . +'\x{6E87}\x{6E88}\x{6E89}\x{6E8A}\x{6E8D}\x{6E8E}\x{6E8F}\x{6E90}\x{6E91}' . +'\x{6E92}\x{6E93}\x{6E94}\x{6E96}\x{6E97}\x{6E98}\x{6E99}\x{6E9A}\x{6E9B}' . +'\x{6E9C}\x{6E9D}\x{6E9E}\x{6E9F}\x{6EA0}\x{6EA1}\x{6EA2}\x{6EA3}\x{6EA4}' . +'\x{6EA5}\x{6EA6}\x{6EA7}\x{6EA8}\x{6EA9}\x{6EAA}\x{6EAB}\x{6EAC}\x{6EAD}' . +'\x{6EAE}\x{6EAF}\x{6EB0}\x{6EB1}\x{6EB2}\x{6EB3}\x{6EB4}\x{6EB5}\x{6EB6}' . +'\x{6EB7}\x{6EB8}\x{6EB9}\x{6EBA}\x{6EBB}\x{6EBC}\x{6EBD}\x{6EBE}\x{6EBF}' . +'\x{6EC0}\x{6EC1}\x{6EC2}\x{6EC3}\x{6EC4}\x{6EC5}\x{6EC6}\x{6EC7}\x{6EC8}' . +'\x{6EC9}\x{6ECA}\x{6ECB}\x{6ECC}\x{6ECD}\x{6ECE}\x{6ECF}\x{6ED0}\x{6ED1}' . +'\x{6ED2}\x{6ED3}\x{6ED4}\x{6ED5}\x{6ED6}\x{6ED7}\x{6ED8}\x{6ED9}\x{6EDA}' . +'\x{6EDC}\x{6EDE}\x{6EDF}\x{6EE0}\x{6EE1}\x{6EE2}\x{6EE4}\x{6EE5}\x{6EE6}' . +'\x{6EE7}\x{6EE8}\x{6EE9}\x{6EEA}\x{6EEB}\x{6EEC}\x{6EED}\x{6EEE}\x{6EEF}' . +'\x{6EF0}\x{6EF1}\x{6EF2}\x{6EF3}\x{6EF4}\x{6EF5}\x{6EF6}\x{6EF7}\x{6EF8}' . +'\x{6EF9}\x{6EFA}\x{6EFB}\x{6EFC}\x{6EFD}\x{6EFE}\x{6EFF}\x{6F00}\x{6F01}' . +'\x{6F02}\x{6F03}\x{6F05}\x{6F06}\x{6F07}\x{6F08}\x{6F09}\x{6F0A}\x{6F0C}' . +'\x{6F0D}\x{6F0E}\x{6F0F}\x{6F10}\x{6F11}\x{6F12}\x{6F13}\x{6F14}\x{6F15}' . +'\x{6F16}\x{6F17}\x{6F18}\x{6F19}\x{6F1A}\x{6F1B}\x{6F1C}\x{6F1D}\x{6F1E}' . +'\x{6F1F}\x{6F20}\x{6F21}\x{6F22}\x{6F23}\x{6F24}\x{6F25}\x{6F26}\x{6F27}' . +'\x{6F28}\x{6F29}\x{6F2A}\x{6F2B}\x{6F2C}\x{6F2D}\x{6F2E}\x{6F2F}\x{6F30}' . +'\x{6F31}\x{6F32}\x{6F33}\x{6F34}\x{6F35}\x{6F36}\x{6F37}\x{6F38}\x{6F39}' . +'\x{6F3A}\x{6F3B}\x{6F3C}\x{6F3D}\x{6F3E}\x{6F3F}\x{6F40}\x{6F41}\x{6F43}' . +'\x{6F44}\x{6F45}\x{6F46}\x{6F47}\x{6F49}\x{6F4B}\x{6F4C}\x{6F4D}\x{6F4E}' . +'\x{6F4F}\x{6F50}\x{6F51}\x{6F52}\x{6F53}\x{6F54}\x{6F55}\x{6F56}\x{6F57}' . +'\x{6F58}\x{6F59}\x{6F5A}\x{6F5B}\x{6F5C}\x{6F5D}\x{6F5E}\x{6F5F}\x{6F60}' . +'\x{6F61}\x{6F62}\x{6F63}\x{6F64}\x{6F65}\x{6F66}\x{6F67}\x{6F68}\x{6F69}' . +'\x{6F6A}\x{6F6B}\x{6F6C}\x{6F6D}\x{6F6E}\x{6F6F}\x{6F70}\x{6F71}\x{6F72}' . +'\x{6F73}\x{6F74}\x{6F75}\x{6F76}\x{6F77}\x{6F78}\x{6F7A}\x{6F7B}\x{6F7C}' . +'\x{6F7D}\x{6F7E}\x{6F7F}\x{6F80}\x{6F81}\x{6F82}\x{6F83}\x{6F84}\x{6F85}' . +'\x{6F86}\x{6F87}\x{6F88}\x{6F89}\x{6F8A}\x{6F8B}\x{6F8C}\x{6F8D}\x{6F8E}' . +'\x{6F8F}\x{6F90}\x{6F91}\x{6F92}\x{6F93}\x{6F94}\x{6F95}\x{6F96}\x{6F97}' . +'\x{6F99}\x{6F9B}\x{6F9C}\x{6F9D}\x{6F9E}\x{6FA0}\x{6FA1}\x{6FA2}\x{6FA3}' . +'\x{6FA4}\x{6FA5}\x{6FA6}\x{6FA7}\x{6FA8}\x{6FA9}\x{6FAA}\x{6FAB}\x{6FAC}' . +'\x{6FAD}\x{6FAE}\x{6FAF}\x{6FB0}\x{6FB1}\x{6FB2}\x{6FB3}\x{6FB4}\x{6FB5}' . +'\x{6FB6}\x{6FB8}\x{6FB9}\x{6FBA}\x{6FBB}\x{6FBC}\x{6FBD}\x{6FBE}\x{6FBF}' . +'\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC4}\x{6FC6}\x{6FC7}\x{6FC8}\x{6FC9}' . +'\x{6FCA}\x{6FCB}\x{6FCC}\x{6FCD}\x{6FCE}\x{6FCF}\x{6FD1}\x{6FD2}\x{6FD4}' . +'\x{6FD5}\x{6FD6}\x{6FD7}\x{6FD8}\x{6FD9}\x{6FDA}\x{6FDB}\x{6FDC}\x{6FDD}' . +'\x{6FDE}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE2}\x{6FE3}\x{6FE4}\x{6FE5}\x{6FE6}' . +'\x{6FE7}\x{6FE8}\x{6FE9}\x{6FEA}\x{6FEB}\x{6FEC}\x{6FED}\x{6FEE}\x{6FEF}' . +'\x{6FF0}\x{6FF1}\x{6FF2}\x{6FF3}\x{6FF4}\x{6FF6}\x{6FF7}\x{6FF8}\x{6FF9}' . +'\x{6FFA}\x{6FFB}\x{6FFC}\x{6FFE}\x{6FFF}\x{7000}\x{7001}\x{7002}\x{7003}' . +'\x{7004}\x{7005}\x{7006}\x{7007}\x{7008}\x{7009}\x{700A}\x{700B}\x{700C}' . +'\x{700D}\x{700E}\x{700F}\x{7011}\x{7012}\x{7014}\x{7015}\x{7016}\x{7017}' . +'\x{7018}\x{7019}\x{701A}\x{701B}\x{701C}\x{701D}\x{701F}\x{7020}\x{7021}' . +'\x{7022}\x{7023}\x{7024}\x{7025}\x{7026}\x{7027}\x{7028}\x{7029}\x{702A}' . +'\x{702B}\x{702C}\x{702D}\x{702E}\x{702F}\x{7030}\x{7031}\x{7032}\x{7033}' . +'\x{7034}\x{7035}\x{7036}\x{7037}\x{7038}\x{7039}\x{703A}\x{703B}\x{703C}' . +'\x{703D}\x{703E}\x{703F}\x{7040}\x{7041}\x{7042}\x{7043}\x{7044}\x{7045}' . +'\x{7046}\x{7048}\x{7049}\x{704A}\x{704C}\x{704D}\x{704F}\x{7050}\x{7051}' . +'\x{7052}\x{7053}\x{7054}\x{7055}\x{7056}\x{7057}\x{7058}\x{7059}\x{705A}' . +'\x{705B}\x{705C}\x{705D}\x{705E}\x{705F}\x{7060}\x{7061}\x{7062}\x{7063}' . +'\x{7064}\x{7065}\x{7066}\x{7067}\x{7068}\x{7069}\x{706A}\x{706B}\x{706C}' . +'\x{706D}\x{706E}\x{706F}\x{7070}\x{7071}\x{7074}\x{7075}\x{7076}\x{7077}' . +'\x{7078}\x{7079}\x{707A}\x{707C}\x{707D}\x{707E}\x{707F}\x{7080}\x{7082}' . +'\x{7083}\x{7084}\x{7085}\x{7086}\x{7087}\x{7088}\x{7089}\x{708A}\x{708B}' . +'\x{708C}\x{708E}\x{708F}\x{7090}\x{7091}\x{7092}\x{7093}\x{7094}\x{7095}' . +'\x{7096}\x{7098}\x{7099}\x{709A}\x{709C}\x{709D}\x{709E}\x{709F}\x{70A0}' . +'\x{70A1}\x{70A2}\x{70A3}\x{70A4}\x{70A5}\x{70A6}\x{70A7}\x{70A8}\x{70A9}' . +'\x{70AB}\x{70AC}\x{70AD}\x{70AE}\x{70AF}\x{70B0}\x{70B1}\x{70B3}\x{70B4}' . +'\x{70B5}\x{70B7}\x{70B8}\x{70B9}\x{70BA}\x{70BB}\x{70BC}\x{70BD}\x{70BE}' . +'\x{70BF}\x{70C0}\x{70C1}\x{70C2}\x{70C3}\x{70C4}\x{70C5}\x{70C6}\x{70C7}' . +'\x{70C8}\x{70C9}\x{70CA}\x{70CB}\x{70CC}\x{70CD}\x{70CE}\x{70CF}\x{70D0}' . +'\x{70D1}\x{70D2}\x{70D3}\x{70D4}\x{70D6}\x{70D7}\x{70D8}\x{70D9}\x{70DA}' . +'\x{70DB}\x{70DC}\x{70DD}\x{70DE}\x{70DF}\x{70E0}\x{70E1}\x{70E2}\x{70E3}' . +'\x{70E4}\x{70E5}\x{70E6}\x{70E7}\x{70E8}\x{70E9}\x{70EA}\x{70EB}\x{70EC}' . +'\x{70ED}\x{70EE}\x{70EF}\x{70F0}\x{70F1}\x{70F2}\x{70F3}\x{70F4}\x{70F5}' . +'\x{70F6}\x{70F7}\x{70F8}\x{70F9}\x{70FA}\x{70FB}\x{70FC}\x{70FD}\x{70FF}' . +'\x{7100}\x{7101}\x{7102}\x{7103}\x{7104}\x{7105}\x{7106}\x{7107}\x{7109}' . +'\x{710A}\x{710B}\x{710C}\x{710D}\x{710E}\x{710F}\x{7110}\x{7111}\x{7112}' . +'\x{7113}\x{7115}\x{7116}\x{7117}\x{7118}\x{7119}\x{711A}\x{711B}\x{711C}' . +'\x{711D}\x{711E}\x{711F}\x{7120}\x{7121}\x{7122}\x{7123}\x{7125}\x{7126}' . +'\x{7127}\x{7128}\x{7129}\x{712A}\x{712B}\x{712C}\x{712D}\x{712E}\x{712F}' . +'\x{7130}\x{7131}\x{7132}\x{7135}\x{7136}\x{7137}\x{7138}\x{7139}\x{713A}' . +'\x{713B}\x{713D}\x{713E}\x{713F}\x{7140}\x{7141}\x{7142}\x{7143}\x{7144}' . +'\x{7145}\x{7146}\x{7147}\x{7148}\x{7149}\x{714A}\x{714B}\x{714C}\x{714D}' . +'\x{714E}\x{714F}\x{7150}\x{7151}\x{7152}\x{7153}\x{7154}\x{7156}\x{7158}' . +'\x{7159}\x{715A}\x{715B}\x{715C}\x{715D}\x{715E}\x{715F}\x{7160}\x{7161}' . +'\x{7162}\x{7163}\x{7164}\x{7165}\x{7166}\x{7167}\x{7168}\x{7169}\x{716A}' . +'\x{716C}\x{716E}\x{716F}\x{7170}\x{7171}\x{7172}\x{7173}\x{7174}\x{7175}' . +'\x{7176}\x{7177}\x{7178}\x{7179}\x{717A}\x{717B}\x{717C}\x{717D}\x{717E}' . +'\x{717F}\x{7180}\x{7181}\x{7182}\x{7183}\x{7184}\x{7185}\x{7186}\x{7187}' . +'\x{7188}\x{7189}\x{718A}\x{718B}\x{718C}\x{718E}\x{718F}\x{7190}\x{7191}' . +'\x{7192}\x{7193}\x{7194}\x{7195}\x{7197}\x{7198}\x{7199}\x{719A}\x{719B}' . +'\x{719C}\x{719D}\x{719E}\x{719F}\x{71A0}\x{71A1}\x{71A2}\x{71A3}\x{71A4}' . +'\x{71A5}\x{71A7}\x{71A8}\x{71A9}\x{71AA}\x{71AC}\x{71AD}\x{71AE}\x{71AF}' . +'\x{71B0}\x{71B1}\x{71B2}\x{71B3}\x{71B4}\x{71B5}\x{71B7}\x{71B8}\x{71B9}' . +'\x{71BA}\x{71BB}\x{71BC}\x{71BD}\x{71BE}\x{71BF}\x{71C0}\x{71C1}\x{71C2}' . +'\x{71C3}\x{71C4}\x{71C5}\x{71C6}\x{71C7}\x{71C8}\x{71C9}\x{71CA}\x{71CB}' . +'\x{71CD}\x{71CE}\x{71CF}\x{71D0}\x{71D1}\x{71D2}\x{71D4}\x{71D5}\x{71D6}' . +'\x{71D7}\x{71D8}\x{71D9}\x{71DA}\x{71DB}\x{71DC}\x{71DD}\x{71DE}\x{71DF}' . +'\x{71E0}\x{71E1}\x{71E2}\x{71E3}\x{71E4}\x{71E5}\x{71E6}\x{71E7}\x{71E8}' . +'\x{71E9}\x{71EA}\x{71EB}\x{71EC}\x{71ED}\x{71EE}\x{71EF}\x{71F0}\x{71F1}' . +'\x{71F2}\x{71F4}\x{71F5}\x{71F6}\x{71F7}\x{71F8}\x{71F9}\x{71FB}\x{71FC}' . +'\x{71FD}\x{71FE}\x{71FF}\x{7201}\x{7202}\x{7203}\x{7204}\x{7205}\x{7206}' . +'\x{7207}\x{7208}\x{7209}\x{720A}\x{720C}\x{720D}\x{720E}\x{720F}\x{7210}' . +'\x{7212}\x{7213}\x{7214}\x{7216}\x{7218}\x{7219}\x{721A}\x{721B}\x{721C}' . +'\x{721D}\x{721E}\x{721F}\x{7221}\x{7222}\x{7223}\x{7226}\x{7227}\x{7228}' . +'\x{7229}\x{722A}\x{722B}\x{722C}\x{722D}\x{722E}\x{7230}\x{7231}\x{7232}' . +'\x{7233}\x{7235}\x{7236}\x{7237}\x{7238}\x{7239}\x{723A}\x{723B}\x{723C}' . +'\x{723D}\x{723E}\x{723F}\x{7240}\x{7241}\x{7242}\x{7243}\x{7244}\x{7246}' . +'\x{7247}\x{7248}\x{7249}\x{724A}\x{724B}\x{724C}\x{724D}\x{724F}\x{7251}' . +'\x{7252}\x{7253}\x{7254}\x{7256}\x{7257}\x{7258}\x{7259}\x{725A}\x{725B}' . +'\x{725C}\x{725D}\x{725E}\x{725F}\x{7260}\x{7261}\x{7262}\x{7263}\x{7264}' . +'\x{7265}\x{7266}\x{7267}\x{7268}\x{7269}\x{726A}\x{726B}\x{726C}\x{726D}' . +'\x{726E}\x{726F}\x{7270}\x{7271}\x{7272}\x{7273}\x{7274}\x{7275}\x{7276}' . +'\x{7277}\x{7278}\x{7279}\x{727A}\x{727B}\x{727C}\x{727D}\x{727E}\x{727F}' . +'\x{7280}\x{7281}\x{7282}\x{7283}\x{7284}\x{7285}\x{7286}\x{7287}\x{7288}' . +'\x{7289}\x{728A}\x{728B}\x{728C}\x{728D}\x{728E}\x{728F}\x{7290}\x{7291}' . +'\x{7292}\x{7293}\x{7294}\x{7295}\x{7296}\x{7297}\x{7298}\x{7299}\x{729A}' . +'\x{729B}\x{729C}\x{729D}\x{729E}\x{729F}\x{72A1}\x{72A2}\x{72A3}\x{72A4}' . +'\x{72A5}\x{72A6}\x{72A7}\x{72A8}\x{72A9}\x{72AA}\x{72AC}\x{72AD}\x{72AE}' . +'\x{72AF}\x{72B0}\x{72B1}\x{72B2}\x{72B3}\x{72B4}\x{72B5}\x{72B6}\x{72B7}' . +'\x{72B8}\x{72B9}\x{72BA}\x{72BB}\x{72BC}\x{72BD}\x{72BF}\x{72C0}\x{72C1}' . +'\x{72C2}\x{72C3}\x{72C4}\x{72C5}\x{72C6}\x{72C7}\x{72C8}\x{72C9}\x{72CA}' . +'\x{72CB}\x{72CC}\x{72CD}\x{72CE}\x{72CF}\x{72D0}\x{72D1}\x{72D2}\x{72D3}' . +'\x{72D4}\x{72D5}\x{72D6}\x{72D7}\x{72D8}\x{72D9}\x{72DA}\x{72DB}\x{72DC}' . +'\x{72DD}\x{72DE}\x{72DF}\x{72E0}\x{72E1}\x{72E2}\x{72E3}\x{72E4}\x{72E5}' . +'\x{72E6}\x{72E7}\x{72E8}\x{72E9}\x{72EA}\x{72EB}\x{72EC}\x{72ED}\x{72EE}' . +'\x{72EF}\x{72F0}\x{72F1}\x{72F2}\x{72F3}\x{72F4}\x{72F5}\x{72F6}\x{72F7}' . +'\x{72F8}\x{72F9}\x{72FA}\x{72FB}\x{72FC}\x{72FD}\x{72FE}\x{72FF}\x{7300}' . +'\x{7301}\x{7303}\x{7304}\x{7305}\x{7306}\x{7307}\x{7308}\x{7309}\x{730A}' . +'\x{730B}\x{730C}\x{730D}\x{730E}\x{730F}\x{7311}\x{7312}\x{7313}\x{7314}' . +'\x{7315}\x{7316}\x{7317}\x{7318}\x{7319}\x{731A}\x{731B}\x{731C}\x{731D}' . +'\x{731E}\x{7320}\x{7321}\x{7322}\x{7323}\x{7324}\x{7325}\x{7326}\x{7327}' . +'\x{7329}\x{732A}\x{732B}\x{732C}\x{732D}\x{732E}\x{7330}\x{7331}\x{7332}' . +'\x{7333}\x{7334}\x{7335}\x{7336}\x{7337}\x{7338}\x{7339}\x{733A}\x{733B}' . +'\x{733C}\x{733D}\x{733E}\x{733F}\x{7340}\x{7341}\x{7342}\x{7343}\x{7344}' . +'\x{7345}\x{7346}\x{7347}\x{7348}\x{7349}\x{734A}\x{734B}\x{734C}\x{734D}' . +'\x{734E}\x{7350}\x{7351}\x{7352}\x{7354}\x{7355}\x{7356}\x{7357}\x{7358}' . +'\x{7359}\x{735A}\x{735B}\x{735C}\x{735D}\x{735E}\x{735F}\x{7360}\x{7361}' . +'\x{7362}\x{7364}\x{7365}\x{7366}\x{7367}\x{7368}\x{7369}\x{736A}\x{736B}' . +'\x{736C}\x{736D}\x{736E}\x{736F}\x{7370}\x{7371}\x{7372}\x{7373}\x{7374}' . +'\x{7375}\x{7376}\x{7377}\x{7378}\x{7379}\x{737A}\x{737B}\x{737C}\x{737D}' . +'\x{737E}\x{737F}\x{7380}\x{7381}\x{7382}\x{7383}\x{7384}\x{7385}\x{7386}' . +'\x{7387}\x{7388}\x{7389}\x{738A}\x{738B}\x{738C}\x{738D}\x{738E}\x{738F}' . +'\x{7390}\x{7391}\x{7392}\x{7393}\x{7394}\x{7395}\x{7396}\x{7397}\x{7398}' . +'\x{7399}\x{739A}\x{739B}\x{739D}\x{739E}\x{739F}\x{73A0}\x{73A1}\x{73A2}' . +'\x{73A3}\x{73A4}\x{73A5}\x{73A6}\x{73A7}\x{73A8}\x{73A9}\x{73AA}\x{73AB}' . +'\x{73AC}\x{73AD}\x{73AE}\x{73AF}\x{73B0}\x{73B1}\x{73B2}\x{73B3}\x{73B4}' . +'\x{73B5}\x{73B6}\x{73B7}\x{73B8}\x{73B9}\x{73BA}\x{73BB}\x{73BC}\x{73BD}' . +'\x{73BE}\x{73BF}\x{73C0}\x{73C2}\x{73C3}\x{73C4}\x{73C5}\x{73C6}\x{73C7}' . +'\x{73C8}\x{73C9}\x{73CA}\x{73CB}\x{73CC}\x{73CD}\x{73CE}\x{73CF}\x{73D0}' . +'\x{73D1}\x{73D2}\x{73D3}\x{73D4}\x{73D5}\x{73D6}\x{73D7}\x{73D8}\x{73D9}' . +'\x{73DA}\x{73DB}\x{73DC}\x{73DD}\x{73DE}\x{73DF}\x{73E0}\x{73E2}\x{73E3}' . +'\x{73E5}\x{73E6}\x{73E7}\x{73E8}\x{73E9}\x{73EA}\x{73EB}\x{73EC}\x{73ED}' . +'\x{73EE}\x{73EF}\x{73F0}\x{73F1}\x{73F2}\x{73F4}\x{73F5}\x{73F6}\x{73F7}' . +'\x{73F8}\x{73F9}\x{73FA}\x{73FC}\x{73FD}\x{73FE}\x{73FF}\x{7400}\x{7401}' . +'\x{7402}\x{7403}\x{7404}\x{7405}\x{7406}\x{7407}\x{7408}\x{7409}\x{740A}' . +'\x{740B}\x{740C}\x{740D}\x{740E}\x{740F}\x{7410}\x{7411}\x{7412}\x{7413}' . +'\x{7414}\x{7415}\x{7416}\x{7417}\x{7419}\x{741A}\x{741B}\x{741C}\x{741D}' . +'\x{741E}\x{741F}\x{7420}\x{7421}\x{7422}\x{7423}\x{7424}\x{7425}\x{7426}' . +'\x{7427}\x{7428}\x{7429}\x{742A}\x{742B}\x{742C}\x{742D}\x{742E}\x{742F}' . +'\x{7430}\x{7431}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{7437}\x{7438}' . +'\x{743A}\x{743B}\x{743C}\x{743D}\x{743F}\x{7440}\x{7441}\x{7442}\x{7443}' . +'\x{7444}\x{7445}\x{7446}\x{7448}\x{744A}\x{744B}\x{744C}\x{744D}\x{744E}' . +'\x{744F}\x{7450}\x{7451}\x{7452}\x{7453}\x{7454}\x{7455}\x{7456}\x{7457}' . +'\x{7459}\x{745A}\x{745B}\x{745C}\x{745D}\x{745E}\x{745F}\x{7461}\x{7462}' . +'\x{7463}\x{7464}\x{7465}\x{7466}\x{7467}\x{7468}\x{7469}\x{746A}\x{746B}' . +'\x{746C}\x{746D}\x{746E}\x{746F}\x{7470}\x{7471}\x{7472}\x{7473}\x{7474}' . +'\x{7475}\x{7476}\x{7477}\x{7478}\x{7479}\x{747A}\x{747C}\x{747D}\x{747E}' . +'\x{747F}\x{7480}\x{7481}\x{7482}\x{7483}\x{7485}\x{7486}\x{7487}\x{7488}' . +'\x{7489}\x{748A}\x{748B}\x{748C}\x{748D}\x{748E}\x{748F}\x{7490}\x{7491}' . +'\x{7492}\x{7493}\x{7494}\x{7495}\x{7497}\x{7498}\x{7499}\x{749A}\x{749B}' . +'\x{749C}\x{749E}\x{749F}\x{74A0}\x{74A1}\x{74A3}\x{74A4}\x{74A5}\x{74A6}' . +'\x{74A7}\x{74A8}\x{74A9}\x{74AA}\x{74AB}\x{74AC}\x{74AD}\x{74AE}\x{74AF}' . +'\x{74B0}\x{74B1}\x{74B2}\x{74B3}\x{74B4}\x{74B5}\x{74B6}\x{74B7}\x{74B8}' . +'\x{74B9}\x{74BA}\x{74BB}\x{74BC}\x{74BD}\x{74BE}\x{74BF}\x{74C0}\x{74C1}' . +'\x{74C2}\x{74C3}\x{74C4}\x{74C5}\x{74C6}\x{74CA}\x{74CB}\x{74CD}\x{74CE}' . +'\x{74CF}\x{74D0}\x{74D1}\x{74D2}\x{74D3}\x{74D4}\x{74D5}\x{74D6}\x{74D7}' . +'\x{74D8}\x{74D9}\x{74DA}\x{74DB}\x{74DC}\x{74DD}\x{74DE}\x{74DF}\x{74E0}' . +'\x{74E1}\x{74E2}\x{74E3}\x{74E4}\x{74E5}\x{74E6}\x{74E7}\x{74E8}\x{74E9}' . +'\x{74EA}\x{74EC}\x{74ED}\x{74EE}\x{74EF}\x{74F0}\x{74F1}\x{74F2}\x{74F3}' . +'\x{74F4}\x{74F5}\x{74F6}\x{74F7}\x{74F8}\x{74F9}\x{74FA}\x{74FB}\x{74FC}' . +'\x{74FD}\x{74FE}\x{74FF}\x{7500}\x{7501}\x{7502}\x{7503}\x{7504}\x{7505}' . +'\x{7506}\x{7507}\x{7508}\x{7509}\x{750A}\x{750B}\x{750C}\x{750D}\x{750F}' . +'\x{7510}\x{7511}\x{7512}\x{7513}\x{7514}\x{7515}\x{7516}\x{7517}\x{7518}' . +'\x{7519}\x{751A}\x{751B}\x{751C}\x{751D}\x{751E}\x{751F}\x{7521}\x{7522}' . +'\x{7523}\x{7524}\x{7525}\x{7526}\x{7527}\x{7528}\x{7529}\x{752A}\x{752B}' . +'\x{752C}\x{752D}\x{752E}\x{752F}\x{7530}\x{7531}\x{7532}\x{7533}\x{7535}' . +'\x{7536}\x{7537}\x{7538}\x{7539}\x{753A}\x{753B}\x{753C}\x{753D}\x{753E}' . +'\x{753F}\x{7540}\x{7542}\x{7543}\x{7544}\x{7545}\x{7546}\x{7547}\x{7548}' . +'\x{7549}\x{754B}\x{754C}\x{754D}\x{754E}\x{754F}\x{7550}\x{7551}\x{7553}' . +'\x{7554}\x{7556}\x{7557}\x{7558}\x{7559}\x{755A}\x{755B}\x{755C}\x{755D}' . +'\x{755F}\x{7560}\x{7562}\x{7563}\x{7564}\x{7565}\x{7566}\x{7567}\x{7568}' . +'\x{7569}\x{756A}\x{756B}\x{756C}\x{756D}\x{756E}\x{756F}\x{7570}\x{7572}' . +'\x{7574}\x{7575}\x{7576}\x{7577}\x{7578}\x{7579}\x{757C}\x{757D}\x{757E}' . +'\x{757F}\x{7580}\x{7581}\x{7582}\x{7583}\x{7584}\x{7586}\x{7587}\x{7588}' . +'\x{7589}\x{758A}\x{758B}\x{758C}\x{758D}\x{758F}\x{7590}\x{7591}\x{7592}' . +'\x{7593}\x{7594}\x{7595}\x{7596}\x{7597}\x{7598}\x{7599}\x{759A}\x{759B}' . +'\x{759C}\x{759D}\x{759E}\x{759F}\x{75A0}\x{75A1}\x{75A2}\x{75A3}\x{75A4}' . +'\x{75A5}\x{75A6}\x{75A7}\x{75A8}\x{75AA}\x{75AB}\x{75AC}\x{75AD}\x{75AE}' . +'\x{75AF}\x{75B0}\x{75B1}\x{75B2}\x{75B3}\x{75B4}\x{75B5}\x{75B6}\x{75B8}' . +'\x{75B9}\x{75BA}\x{75BB}\x{75BC}\x{75BD}\x{75BE}\x{75BF}\x{75C0}\x{75C1}' . +'\x{75C2}\x{75C3}\x{75C4}\x{75C5}\x{75C6}\x{75C7}\x{75C8}\x{75C9}\x{75CA}' . +'\x{75CB}\x{75CC}\x{75CD}\x{75CE}\x{75CF}\x{75D0}\x{75D1}\x{75D2}\x{75D3}' . +'\x{75D4}\x{75D5}\x{75D6}\x{75D7}\x{75D8}\x{75D9}\x{75DA}\x{75DB}\x{75DD}' . +'\x{75DE}\x{75DF}\x{75E0}\x{75E1}\x{75E2}\x{75E3}\x{75E4}\x{75E5}\x{75E6}' . +'\x{75E7}\x{75E8}\x{75EA}\x{75EB}\x{75EC}\x{75ED}\x{75EF}\x{75F0}\x{75F1}' . +'\x{75F2}\x{75F3}\x{75F4}\x{75F5}\x{75F6}\x{75F7}\x{75F8}\x{75F9}\x{75FA}' . +'\x{75FB}\x{75FC}\x{75FD}\x{75FE}\x{75FF}\x{7600}\x{7601}\x{7602}\x{7603}' . +'\x{7604}\x{7605}\x{7606}\x{7607}\x{7608}\x{7609}\x{760A}\x{760B}\x{760C}' . +'\x{760D}\x{760E}\x{760F}\x{7610}\x{7611}\x{7612}\x{7613}\x{7614}\x{7615}' . +'\x{7616}\x{7617}\x{7618}\x{7619}\x{761A}\x{761B}\x{761C}\x{761D}\x{761E}' . +'\x{761F}\x{7620}\x{7621}\x{7622}\x{7623}\x{7624}\x{7625}\x{7626}\x{7627}' . +'\x{7628}\x{7629}\x{762A}\x{762B}\x{762D}\x{762E}\x{762F}\x{7630}\x{7631}' . +'\x{7632}\x{7633}\x{7634}\x{7635}\x{7636}\x{7637}\x{7638}\x{7639}\x{763A}' . +'\x{763B}\x{763C}\x{763D}\x{763E}\x{763F}\x{7640}\x{7641}\x{7642}\x{7643}' . +'\x{7646}\x{7647}\x{7648}\x{7649}\x{764A}\x{764B}\x{764C}\x{764D}\x{764F}' . +'\x{7650}\x{7652}\x{7653}\x{7654}\x{7656}\x{7657}\x{7658}\x{7659}\x{765A}' . +'\x{765B}\x{765C}\x{765D}\x{765E}\x{765F}\x{7660}\x{7661}\x{7662}\x{7663}' . +'\x{7664}\x{7665}\x{7666}\x{7667}\x{7668}\x{7669}\x{766A}\x{766B}\x{766C}' . +'\x{766D}\x{766E}\x{766F}\x{7670}\x{7671}\x{7672}\x{7674}\x{7675}\x{7676}' . +'\x{7677}\x{7678}\x{7679}\x{767B}\x{767C}\x{767D}\x{767E}\x{767F}\x{7680}' . +'\x{7681}\x{7682}\x{7683}\x{7684}\x{7685}\x{7686}\x{7687}\x{7688}\x{7689}' . +'\x{768A}\x{768B}\x{768C}\x{768E}\x{768F}\x{7690}\x{7691}\x{7692}\x{7693}' . +'\x{7694}\x{7695}\x{7696}\x{7697}\x{7698}\x{7699}\x{769A}\x{769B}\x{769C}' . +'\x{769D}\x{769E}\x{769F}\x{76A0}\x{76A3}\x{76A4}\x{76A6}\x{76A7}\x{76A9}' . +'\x{76AA}\x{76AB}\x{76AC}\x{76AD}\x{76AE}\x{76AF}\x{76B0}\x{76B1}\x{76B2}' . +'\x{76B4}\x{76B5}\x{76B7}\x{76B8}\x{76BA}\x{76BB}\x{76BC}\x{76BD}\x{76BE}' . +'\x{76BF}\x{76C0}\x{76C2}\x{76C3}\x{76C4}\x{76C5}\x{76C6}\x{76C7}\x{76C8}' . +'\x{76C9}\x{76CA}\x{76CD}\x{76CE}\x{76CF}\x{76D0}\x{76D1}\x{76D2}\x{76D3}' . +'\x{76D4}\x{76D5}\x{76D6}\x{76D7}\x{76D8}\x{76DA}\x{76DB}\x{76DC}\x{76DD}' . +'\x{76DE}\x{76DF}\x{76E0}\x{76E1}\x{76E2}\x{76E3}\x{76E4}\x{76E5}\x{76E6}' . +'\x{76E7}\x{76E8}\x{76E9}\x{76EA}\x{76EC}\x{76ED}\x{76EE}\x{76EF}\x{76F0}' . +'\x{76F1}\x{76F2}\x{76F3}\x{76F4}\x{76F5}\x{76F6}\x{76F7}\x{76F8}\x{76F9}' . +'\x{76FA}\x{76FB}\x{76FC}\x{76FD}\x{76FE}\x{76FF}\x{7701}\x{7703}\x{7704}' . +'\x{7705}\x{7706}\x{7707}\x{7708}\x{7709}\x{770A}\x{770B}\x{770C}\x{770D}' . +'\x{770F}\x{7710}\x{7711}\x{7712}\x{7713}\x{7714}\x{7715}\x{7716}\x{7717}' . +'\x{7718}\x{7719}\x{771A}\x{771B}\x{771C}\x{771D}\x{771E}\x{771F}\x{7720}' . +'\x{7722}\x{7723}\x{7725}\x{7726}\x{7727}\x{7728}\x{7729}\x{772A}\x{772C}' . +'\x{772D}\x{772E}\x{772F}\x{7730}\x{7731}\x{7732}\x{7733}\x{7734}\x{7735}' . +'\x{7736}\x{7737}\x{7738}\x{7739}\x{773A}\x{773B}\x{773C}\x{773D}\x{773E}' . +'\x{7740}\x{7741}\x{7743}\x{7744}\x{7745}\x{7746}\x{7747}\x{7748}\x{7749}' . +'\x{774A}\x{774B}\x{774C}\x{774D}\x{774E}\x{774F}\x{7750}\x{7751}\x{7752}' . +'\x{7753}\x{7754}\x{7755}\x{7756}\x{7757}\x{7758}\x{7759}\x{775A}\x{775B}' . +'\x{775C}\x{775D}\x{775E}\x{775F}\x{7760}\x{7761}\x{7762}\x{7763}\x{7765}' . +'\x{7766}\x{7767}\x{7768}\x{7769}\x{776A}\x{776B}\x{776C}\x{776D}\x{776E}' . +'\x{776F}\x{7770}\x{7771}\x{7772}\x{7773}\x{7774}\x{7775}\x{7776}\x{7777}' . +'\x{7778}\x{7779}\x{777A}\x{777B}\x{777C}\x{777D}\x{777E}\x{777F}\x{7780}' . +'\x{7781}\x{7782}\x{7783}\x{7784}\x{7785}\x{7786}\x{7787}\x{7788}\x{7789}' . +'\x{778A}\x{778B}\x{778C}\x{778D}\x{778E}\x{778F}\x{7790}\x{7791}\x{7792}' . +'\x{7793}\x{7794}\x{7795}\x{7797}\x{7798}\x{7799}\x{779A}\x{779B}\x{779C}' . +'\x{779D}\x{779E}\x{779F}\x{77A0}\x{77A1}\x{77A2}\x{77A3}\x{77A5}\x{77A6}' . +'\x{77A7}\x{77A8}\x{77A9}\x{77AA}\x{77AB}\x{77AC}\x{77AD}\x{77AE}\x{77AF}' . +'\x{77B0}\x{77B1}\x{77B2}\x{77B3}\x{77B4}\x{77B5}\x{77B6}\x{77B7}\x{77B8}' . +'\x{77B9}\x{77BA}\x{77BB}\x{77BC}\x{77BD}\x{77BF}\x{77C0}\x{77C2}\x{77C3}' . +'\x{77C4}\x{77C5}\x{77C6}\x{77C7}\x{77C8}\x{77C9}\x{77CA}\x{77CB}\x{77CC}' . +'\x{77CD}\x{77CE}\x{77CF}\x{77D0}\x{77D1}\x{77D3}\x{77D4}\x{77D5}\x{77D6}' . +'\x{77D7}\x{77D8}\x{77D9}\x{77DA}\x{77DB}\x{77DC}\x{77DE}\x{77DF}\x{77E0}' . +'\x{77E1}\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E8}\x{77E9}\x{77EA}\x{77EB}' . +'\x{77EC}\x{77ED}\x{77EE}\x{77EF}\x{77F0}\x{77F1}\x{77F2}\x{77F3}\x{77F6}' . +'\x{77F7}\x{77F8}\x{77F9}\x{77FA}\x{77FB}\x{77FC}\x{77FD}\x{77FE}\x{77FF}' . +'\x{7800}\x{7801}\x{7802}\x{7803}\x{7804}\x{7805}\x{7806}\x{7808}\x{7809}' . +'\x{780A}\x{780B}\x{780C}\x{780D}\x{780E}\x{780F}\x{7810}\x{7811}\x{7812}' . +'\x{7813}\x{7814}\x{7815}\x{7816}\x{7817}\x{7818}\x{7819}\x{781A}\x{781B}' . +'\x{781C}\x{781D}\x{781E}\x{781F}\x{7820}\x{7821}\x{7822}\x{7823}\x{7825}' . +'\x{7826}\x{7827}\x{7828}\x{7829}\x{782A}\x{782B}\x{782C}\x{782D}\x{782E}' . +'\x{782F}\x{7830}\x{7831}\x{7832}\x{7833}\x{7834}\x{7835}\x{7837}\x{7838}' . +'\x{7839}\x{783A}\x{783B}\x{783C}\x{783D}\x{783E}\x{7840}\x{7841}\x{7843}' . +'\x{7844}\x{7845}\x{7847}\x{7848}\x{7849}\x{784A}\x{784C}\x{784D}\x{784E}' . +'\x{7850}\x{7851}\x{7852}\x{7853}\x{7854}\x{7855}\x{7856}\x{7857}\x{7858}' . +'\x{7859}\x{785A}\x{785B}\x{785C}\x{785D}\x{785E}\x{785F}\x{7860}\x{7861}' . +'\x{7862}\x{7863}\x{7864}\x{7865}\x{7866}\x{7867}\x{7868}\x{7869}\x{786A}' . +'\x{786B}\x{786C}\x{786D}\x{786E}\x{786F}\x{7870}\x{7871}\x{7872}\x{7873}' . +'\x{7874}\x{7875}\x{7877}\x{7878}\x{7879}\x{787A}\x{787B}\x{787C}\x{787D}' . +'\x{787E}\x{787F}\x{7880}\x{7881}\x{7882}\x{7883}\x{7884}\x{7885}\x{7886}' . +'\x{7887}\x{7889}\x{788A}\x{788B}\x{788C}\x{788D}\x{788E}\x{788F}\x{7890}' . +'\x{7891}\x{7892}\x{7893}\x{7894}\x{7895}\x{7896}\x{7897}\x{7898}\x{7899}' . +'\x{789A}\x{789B}\x{789C}\x{789D}\x{789E}\x{789F}\x{78A0}\x{78A1}\x{78A2}' . +'\x{78A3}\x{78A4}\x{78A5}\x{78A6}\x{78A7}\x{78A8}\x{78A9}\x{78AA}\x{78AB}' . +'\x{78AC}\x{78AD}\x{78AE}\x{78AF}\x{78B0}\x{78B1}\x{78B2}\x{78B3}\x{78B4}' . +'\x{78B5}\x{78B6}\x{78B7}\x{78B8}\x{78B9}\x{78BA}\x{78BB}\x{78BC}\x{78BD}' . +'\x{78BE}\x{78BF}\x{78C0}\x{78C1}\x{78C3}\x{78C4}\x{78C5}\x{78C6}\x{78C8}' . +'\x{78C9}\x{78CA}\x{78CB}\x{78CC}\x{78CD}\x{78CE}\x{78CF}\x{78D0}\x{78D1}' . +'\x{78D3}\x{78D4}\x{78D5}\x{78D6}\x{78D7}\x{78D8}\x{78D9}\x{78DA}\x{78DB}' . +'\x{78DC}\x{78DD}\x{78DE}\x{78DF}\x{78E0}\x{78E1}\x{78E2}\x{78E3}\x{78E4}' . +'\x{78E5}\x{78E6}\x{78E7}\x{78E8}\x{78E9}\x{78EA}\x{78EB}\x{78EC}\x{78ED}' . +'\x{78EE}\x{78EF}\x{78F1}\x{78F2}\x{78F3}\x{78F4}\x{78F5}\x{78F6}\x{78F7}' . +'\x{78F9}\x{78FA}\x{78FB}\x{78FC}\x{78FD}\x{78FE}\x{78FF}\x{7901}\x{7902}' . +'\x{7903}\x{7904}\x{7905}\x{7906}\x{7907}\x{7909}\x{790A}\x{790B}\x{790C}' . +'\x{790E}\x{790F}\x{7910}\x{7911}\x{7912}\x{7913}\x{7914}\x{7916}\x{7917}' . +'\x{7918}\x{7919}\x{791A}\x{791B}\x{791C}\x{791D}\x{791E}\x{7921}\x{7922}' . +'\x{7923}\x{7924}\x{7925}\x{7926}\x{7927}\x{7928}\x{7929}\x{792A}\x{792B}' . +'\x{792C}\x{792D}\x{792E}\x{792F}\x{7930}\x{7931}\x{7933}\x{7934}\x{7935}' . +'\x{7937}\x{7938}\x{7939}\x{793A}\x{793B}\x{793C}\x{793D}\x{793E}\x{793F}' . +'\x{7940}\x{7941}\x{7942}\x{7943}\x{7944}\x{7945}\x{7946}\x{7947}\x{7948}' . +'\x{7949}\x{794A}\x{794B}\x{794C}\x{794D}\x{794E}\x{794F}\x{7950}\x{7951}' . +'\x{7952}\x{7953}\x{7954}\x{7955}\x{7956}\x{7957}\x{7958}\x{795A}\x{795B}' . +'\x{795C}\x{795D}\x{795E}\x{795F}\x{7960}\x{7961}\x{7962}\x{7963}\x{7964}' . +'\x{7965}\x{7966}\x{7967}\x{7968}\x{7969}\x{796A}\x{796B}\x{796D}\x{796F}' . +'\x{7970}\x{7971}\x{7972}\x{7973}\x{7974}\x{7977}\x{7978}\x{7979}\x{797A}' . +'\x{797B}\x{797C}\x{797D}\x{797E}\x{797F}\x{7980}\x{7981}\x{7982}\x{7983}' . +'\x{7984}\x{7985}\x{7988}\x{7989}\x{798A}\x{798B}\x{798C}\x{798D}\x{798E}' . +'\x{798F}\x{7990}\x{7991}\x{7992}\x{7993}\x{7994}\x{7995}\x{7996}\x{7997}' . +'\x{7998}\x{7999}\x{799A}\x{799B}\x{799C}\x{799F}\x{79A0}\x{79A1}\x{79A2}' . +'\x{79A3}\x{79A4}\x{79A5}\x{79A6}\x{79A7}\x{79A8}\x{79AA}\x{79AB}\x{79AC}' . +'\x{79AD}\x{79AE}\x{79AF}\x{79B0}\x{79B1}\x{79B2}\x{79B3}\x{79B4}\x{79B5}' . +'\x{79B6}\x{79B7}\x{79B8}\x{79B9}\x{79BA}\x{79BB}\x{79BD}\x{79BE}\x{79BF}' . +'\x{79C0}\x{79C1}\x{79C2}\x{79C3}\x{79C5}\x{79C6}\x{79C8}\x{79C9}\x{79CA}' . +'\x{79CB}\x{79CD}\x{79CE}\x{79CF}\x{79D0}\x{79D1}\x{79D2}\x{79D3}\x{79D5}' . +'\x{79D6}\x{79D8}\x{79D9}\x{79DA}\x{79DB}\x{79DC}\x{79DD}\x{79DE}\x{79DF}' . +'\x{79E0}\x{79E1}\x{79E2}\x{79E3}\x{79E4}\x{79E5}\x{79E6}\x{79E7}\x{79E8}' . +'\x{79E9}\x{79EA}\x{79EB}\x{79EC}\x{79ED}\x{79EE}\x{79EF}\x{79F0}\x{79F1}' . +'\x{79F2}\x{79F3}\x{79F4}\x{79F5}\x{79F6}\x{79F7}\x{79F8}\x{79F9}\x{79FA}' . +'\x{79FB}\x{79FC}\x{79FD}\x{79FE}\x{79FF}\x{7A00}\x{7A02}\x{7A03}\x{7A04}' . +'\x{7A05}\x{7A06}\x{7A08}\x{7A0A}\x{7A0B}\x{7A0C}\x{7A0D}\x{7A0E}\x{7A0F}' . +'\x{7A10}\x{7A11}\x{7A12}\x{7A13}\x{7A14}\x{7A15}\x{7A16}\x{7A17}\x{7A18}' . +'\x{7A19}\x{7A1A}\x{7A1B}\x{7A1C}\x{7A1D}\x{7A1E}\x{7A1F}\x{7A20}\x{7A21}' . +'\x{7A22}\x{7A23}\x{7A24}\x{7A25}\x{7A26}\x{7A27}\x{7A28}\x{7A29}\x{7A2A}' . +'\x{7A2B}\x{7A2D}\x{7A2E}\x{7A2F}\x{7A30}\x{7A31}\x{7A32}\x{7A33}\x{7A34}' . +'\x{7A35}\x{7A37}\x{7A39}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' . +'\x{7A41}\x{7A42}\x{7A43}\x{7A44}\x{7A45}\x{7A46}\x{7A47}\x{7A48}\x{7A49}' . +'\x{7A4A}\x{7A4B}\x{7A4C}\x{7A4D}\x{7A4E}\x{7A50}\x{7A51}\x{7A52}\x{7A53}' . +'\x{7A54}\x{7A55}\x{7A56}\x{7A57}\x{7A58}\x{7A59}\x{7A5A}\x{7A5B}\x{7A5C}' . +'\x{7A5D}\x{7A5E}\x{7A5F}\x{7A60}\x{7A61}\x{7A62}\x{7A65}\x{7A66}\x{7A67}' . +'\x{7A68}\x{7A69}\x{7A6B}\x{7A6C}\x{7A6D}\x{7A6E}\x{7A70}\x{7A71}\x{7A72}' . +'\x{7A73}\x{7A74}\x{7A75}\x{7A76}\x{7A77}\x{7A78}\x{7A79}\x{7A7A}\x{7A7B}' . +'\x{7A7C}\x{7A7D}\x{7A7E}\x{7A7F}\x{7A80}\x{7A81}\x{7A83}\x{7A84}\x{7A85}' . +'\x{7A86}\x{7A87}\x{7A88}\x{7A89}\x{7A8A}\x{7A8B}\x{7A8C}\x{7A8D}\x{7A8E}' . +'\x{7A8F}\x{7A90}\x{7A91}\x{7A92}\x{7A93}\x{7A94}\x{7A95}\x{7A96}\x{7A97}' . +'\x{7A98}\x{7A99}\x{7A9C}\x{7A9D}\x{7A9E}\x{7A9F}\x{7AA0}\x{7AA1}\x{7AA2}' . +'\x{7AA3}\x{7AA4}\x{7AA5}\x{7AA6}\x{7AA7}\x{7AA8}\x{7AA9}\x{7AAA}\x{7AAB}' . +'\x{7AAC}\x{7AAD}\x{7AAE}\x{7AAF}\x{7AB0}\x{7AB1}\x{7AB2}\x{7AB3}\x{7AB4}' . +'\x{7AB5}\x{7AB6}\x{7AB7}\x{7AB8}\x{7ABA}\x{7ABE}\x{7ABF}\x{7AC0}\x{7AC1}' . +'\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}\x{7AC9}\x{7ACA}\x{7ACB}\x{7ACC}\x{7ACD}' . +'\x{7ACE}\x{7ACF}\x{7AD0}\x{7AD1}\x{7AD2}\x{7AD3}\x{7AD4}\x{7AD5}\x{7AD6}' . +'\x{7AD8}\x{7AD9}\x{7ADB}\x{7ADC}\x{7ADD}\x{7ADE}\x{7ADF}\x{7AE0}\x{7AE1}' . +'\x{7AE2}\x{7AE3}\x{7AE4}\x{7AE5}\x{7AE6}\x{7AE7}\x{7AE8}\x{7AEA}\x{7AEB}' . +'\x{7AEC}\x{7AED}\x{7AEE}\x{7AEF}\x{7AF0}\x{7AF1}\x{7AF2}\x{7AF3}\x{7AF4}' . +'\x{7AF6}\x{7AF7}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFB}\x{7AFD}\x{7AFE}\x{7AFF}' . +'\x{7B00}\x{7B01}\x{7B02}\x{7B03}\x{7B04}\x{7B05}\x{7B06}\x{7B08}\x{7B09}' . +'\x{7B0A}\x{7B0B}\x{7B0C}\x{7B0D}\x{7B0E}\x{7B0F}\x{7B10}\x{7B11}\x{7B12}' . +'\x{7B13}\x{7B14}\x{7B15}\x{7B16}\x{7B17}\x{7B18}\x{7B19}\x{7B1A}\x{7B1B}' . +'\x{7B1C}\x{7B1D}\x{7B1E}\x{7B20}\x{7B21}\x{7B22}\x{7B23}\x{7B24}\x{7B25}' . +'\x{7B26}\x{7B28}\x{7B2A}\x{7B2B}\x{7B2C}\x{7B2D}\x{7B2E}\x{7B2F}\x{7B30}' . +'\x{7B31}\x{7B32}\x{7B33}\x{7B34}\x{7B35}\x{7B36}\x{7B37}\x{7B38}\x{7B39}' . +'\x{7B3A}\x{7B3B}\x{7B3C}\x{7B3D}\x{7B3E}\x{7B3F}\x{7B40}\x{7B41}\x{7B43}' . +'\x{7B44}\x{7B45}\x{7B46}\x{7B47}\x{7B48}\x{7B49}\x{7B4A}\x{7B4B}\x{7B4C}' . +'\x{7B4D}\x{7B4E}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B55}\x{7B56}' . +'\x{7B57}\x{7B58}\x{7B59}\x{7B5A}\x{7B5B}\x{7B5C}\x{7B5D}\x{7B5E}\x{7B5F}' . +'\x{7B60}\x{7B61}\x{7B62}\x{7B63}\x{7B64}\x{7B65}\x{7B66}\x{7B67}\x{7B68}' . +'\x{7B69}\x{7B6A}\x{7B6B}\x{7B6C}\x{7B6D}\x{7B6E}\x{7B70}\x{7B71}\x{7B72}' . +'\x{7B73}\x{7B74}\x{7B75}\x{7B76}\x{7B77}\x{7B78}\x{7B79}\x{7B7B}\x{7B7C}' . +'\x{7B7D}\x{7B7E}\x{7B7F}\x{7B80}\x{7B81}\x{7B82}\x{7B83}\x{7B84}\x{7B85}' . +'\x{7B87}\x{7B88}\x{7B89}\x{7B8A}\x{7B8B}\x{7B8C}\x{7B8D}\x{7B8E}\x{7B8F}' . +'\x{7B90}\x{7B91}\x{7B93}\x{7B94}\x{7B95}\x{7B96}\x{7B97}\x{7B98}\x{7B99}' . +'\x{7B9A}\x{7B9B}\x{7B9C}\x{7B9D}\x{7B9E}\x{7B9F}\x{7BA0}\x{7BA1}\x{7BA2}' . +'\x{7BA4}\x{7BA6}\x{7BA7}\x{7BA8}\x{7BA9}\x{7BAA}\x{7BAB}\x{7BAC}\x{7BAD}' . +'\x{7BAE}\x{7BAF}\x{7BB1}\x{7BB3}\x{7BB4}\x{7BB5}\x{7BB6}\x{7BB7}\x{7BB8}' . +'\x{7BB9}\x{7BBA}\x{7BBB}\x{7BBC}\x{7BBD}\x{7BBE}\x{7BBF}\x{7BC0}\x{7BC1}' . +'\x{7BC2}\x{7BC3}\x{7BC4}\x{7BC5}\x{7BC6}\x{7BC7}\x{7BC8}\x{7BC9}\x{7BCA}' . +'\x{7BCB}\x{7BCC}\x{7BCD}\x{7BCE}\x{7BD0}\x{7BD1}\x{7BD2}\x{7BD3}\x{7BD4}' . +'\x{7BD5}\x{7BD6}\x{7BD7}\x{7BD8}\x{7BD9}\x{7BDA}\x{7BDB}\x{7BDC}\x{7BDD}' . +'\x{7BDE}\x{7BDF}\x{7BE0}\x{7BE1}\x{7BE2}\x{7BE3}\x{7BE4}\x{7BE5}\x{7BE6}' . +'\x{7BE7}\x{7BE8}\x{7BE9}\x{7BEA}\x{7BEB}\x{7BEC}\x{7BED}\x{7BEE}\x{7BEF}' . +'\x{7BF0}\x{7BF1}\x{7BF2}\x{7BF3}\x{7BF4}\x{7BF5}\x{7BF6}\x{7BF7}\x{7BF8}' . +'\x{7BF9}\x{7BFB}\x{7BFC}\x{7BFD}\x{7BFE}\x{7BFF}\x{7C00}\x{7C01}\x{7C02}' . +'\x{7C03}\x{7C04}\x{7C05}\x{7C06}\x{7C07}\x{7C08}\x{7C09}\x{7C0A}\x{7C0B}' . +'\x{7C0C}\x{7C0D}\x{7C0E}\x{7C0F}\x{7C10}\x{7C11}\x{7C12}\x{7C13}\x{7C15}' . +'\x{7C16}\x{7C17}\x{7C18}\x{7C19}\x{7C1A}\x{7C1C}\x{7C1D}\x{7C1E}\x{7C1F}' . +'\x{7C20}\x{7C21}\x{7C22}\x{7C23}\x{7C24}\x{7C25}\x{7C26}\x{7C27}\x{7C28}' . +'\x{7C29}\x{7C2A}\x{7C2B}\x{7C2C}\x{7C2D}\x{7C30}\x{7C31}\x{7C32}\x{7C33}' . +'\x{7C34}\x{7C35}\x{7C36}\x{7C37}\x{7C38}\x{7C39}\x{7C3A}\x{7C3B}\x{7C3C}' . +'\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C41}\x{7C42}\x{7C43}\x{7C44}\x{7C45}' . +'\x{7C46}\x{7C47}\x{7C48}\x{7C49}\x{7C4A}\x{7C4B}\x{7C4C}\x{7C4D}\x{7C4E}' . +'\x{7C50}\x{7C51}\x{7C53}\x{7C54}\x{7C56}\x{7C57}\x{7C58}\x{7C59}\x{7C5A}' . +'\x{7C5B}\x{7C5C}\x{7C5E}\x{7C5F}\x{7C60}\x{7C61}\x{7C62}\x{7C63}\x{7C64}' . +'\x{7C65}\x{7C66}\x{7C67}\x{7C68}\x{7C69}\x{7C6A}\x{7C6B}\x{7C6C}\x{7C6D}' . +'\x{7C6E}\x{7C6F}\x{7C70}\x{7C71}\x{7C72}\x{7C73}\x{7C74}\x{7C75}\x{7C77}' . +'\x{7C78}\x{7C79}\x{7C7A}\x{7C7B}\x{7C7C}\x{7C7D}\x{7C7E}\x{7C7F}\x{7C80}' . +'\x{7C81}\x{7C82}\x{7C84}\x{7C85}\x{7C86}\x{7C88}\x{7C89}\x{7C8A}\x{7C8B}' . +'\x{7C8C}\x{7C8D}\x{7C8E}\x{7C8F}\x{7C90}\x{7C91}\x{7C92}\x{7C94}\x{7C95}' . +'\x{7C96}\x{7C97}\x{7C98}\x{7C99}\x{7C9B}\x{7C9C}\x{7C9D}\x{7C9E}\x{7C9F}' . +'\x{7CA0}\x{7CA1}\x{7CA2}\x{7CA3}\x{7CA4}\x{7CA5}\x{7CA6}\x{7CA7}\x{7CA8}' . +'\x{7CA9}\x{7CAA}\x{7CAD}\x{7CAE}\x{7CAF}\x{7CB0}\x{7CB1}\x{7CB2}\x{7CB3}' . +'\x{7CB4}\x{7CB5}\x{7CB6}\x{7CB7}\x{7CB8}\x{7CB9}\x{7CBA}\x{7CBB}\x{7CBC}' . +'\x{7CBD}\x{7CBE}\x{7CBF}\x{7CC0}\x{7CC1}\x{7CC2}\x{7CC3}\x{7CC4}\x{7CC5}' . +'\x{7CC6}\x{7CC7}\x{7CC8}\x{7CC9}\x{7CCA}\x{7CCB}\x{7CCC}\x{7CCD}\x{7CCE}' . +'\x{7CCF}\x{7CD0}\x{7CD1}\x{7CD2}\x{7CD4}\x{7CD5}\x{7CD6}\x{7CD7}\x{7CD8}' . +'\x{7CD9}\x{7CDC}\x{7CDD}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE4}\x{7CE7}' . +'\x{7CE8}\x{7CE9}\x{7CEA}\x{7CEB}\x{7CEC}\x{7CED}\x{7CEE}\x{7CEF}\x{7CF0}' . +'\x{7CF1}\x{7CF2}\x{7CF3}\x{7CF4}\x{7CF5}\x{7CF6}\x{7CF7}\x{7CF8}\x{7CF9}' . +'\x{7CFA}\x{7CFB}\x{7CFD}\x{7CFE}\x{7D00}\x{7D01}\x{7D02}\x{7D03}\x{7D04}' . +'\x{7D05}\x{7D06}\x{7D07}\x{7D08}\x{7D09}\x{7D0A}\x{7D0B}\x{7D0C}\x{7D0D}' . +'\x{7D0E}\x{7D0F}\x{7D10}\x{7D11}\x{7D12}\x{7D13}\x{7D14}\x{7D15}\x{7D16}' . +'\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D1D}\x{7D1E}\x{7D1F}' . +'\x{7D20}\x{7D21}\x{7D22}\x{7D24}\x{7D25}\x{7D26}\x{7D27}\x{7D28}\x{7D29}' . +'\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D31}\x{7D32}\x{7D33}\x{7D34}' . +'\x{7D35}\x{7D36}\x{7D37}\x{7D38}\x{7D39}\x{7D3A}\x{7D3B}\x{7D3C}\x{7D3D}' . +'\x{7D3E}\x{7D3F}\x{7D40}\x{7D41}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}' . +'\x{7D47}\x{7D49}\x{7D4A}\x{7D4B}\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D51}' . +'\x{7D52}\x{7D53}\x{7D54}\x{7D55}\x{7D56}\x{7D57}\x{7D58}\x{7D59}\x{7D5B}' . +'\x{7D5C}\x{7D5D}\x{7D5E}\x{7D5F}\x{7D60}\x{7D61}\x{7D62}\x{7D63}\x{7D65}' . +'\x{7D66}\x{7D67}\x{7D68}\x{7D69}\x{7D6A}\x{7D6B}\x{7D6C}\x{7D6D}\x{7D6E}' . +'\x{7D6F}\x{7D70}\x{7D71}\x{7D72}\x{7D73}\x{7D74}\x{7D75}\x{7D76}\x{7D77}' . +'\x{7D79}\x{7D7A}\x{7D7B}\x{7D7C}\x{7D7D}\x{7D7E}\x{7D7F}\x{7D80}\x{7D81}' . +'\x{7D83}\x{7D84}\x{7D85}\x{7D86}\x{7D87}\x{7D88}\x{7D89}\x{7D8A}\x{7D8B}' . +'\x{7D8C}\x{7D8D}\x{7D8E}\x{7D8F}\x{7D90}\x{7D91}\x{7D92}\x{7D93}\x{7D94}' . +'\x{7D96}\x{7D97}\x{7D99}\x{7D9B}\x{7D9C}\x{7D9D}\x{7D9E}\x{7D9F}\x{7DA0}' . +'\x{7DA1}\x{7DA2}\x{7DA3}\x{7DA5}\x{7DA6}\x{7DA7}\x{7DA9}\x{7DAA}\x{7DAB}' . +'\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}\x{7DB1}\x{7DB2}\x{7DB3}\x{7DB4}' . +'\x{7DB5}\x{7DB6}\x{7DB7}\x{7DB8}\x{7DB9}\x{7DBA}\x{7DBB}\x{7DBC}\x{7DBD}' . +'\x{7DBE}\x{7DBF}\x{7DC0}\x{7DC1}\x{7DC2}\x{7DC3}\x{7DC4}\x{7DC5}\x{7DC6}' . +'\x{7DC7}\x{7DC8}\x{7DC9}\x{7DCA}\x{7DCB}\x{7DCC}\x{7DCE}\x{7DCF}\x{7DD0}' . +'\x{7DD1}\x{7DD2}\x{7DD4}\x{7DD5}\x{7DD6}\x{7DD7}\x{7DD8}\x{7DD9}\x{7DDA}' . +'\x{7DDB}\x{7DDD}\x{7DDE}\x{7DDF}\x{7DE0}\x{7DE1}\x{7DE2}\x{7DE3}\x{7DE6}' . +'\x{7DE7}\x{7DE8}\x{7DE9}\x{7DEA}\x{7DEC}\x{7DED}\x{7DEE}\x{7DEF}\x{7DF0}' . +'\x{7DF1}\x{7DF2}\x{7DF3}\x{7DF4}\x{7DF5}\x{7DF6}\x{7DF7}\x{7DF8}\x{7DF9}' . +'\x{7DFA}\x{7DFB}\x{7DFC}\x{7E00}\x{7E01}\x{7E02}\x{7E03}\x{7E04}\x{7E05}' . +'\x{7E06}\x{7E07}\x{7E08}\x{7E09}\x{7E0A}\x{7E0B}\x{7E0C}\x{7E0D}\x{7E0E}' . +'\x{7E0F}\x{7E10}\x{7E11}\x{7E12}\x{7E13}\x{7E14}\x{7E15}\x{7E16}\x{7E17}' . +'\x{7E19}\x{7E1A}\x{7E1B}\x{7E1C}\x{7E1D}\x{7E1E}\x{7E1F}\x{7E20}\x{7E21}' . +'\x{7E22}\x{7E23}\x{7E24}\x{7E25}\x{7E26}\x{7E27}\x{7E28}\x{7E29}\x{7E2A}' . +'\x{7E2B}\x{7E2C}\x{7E2D}\x{7E2E}\x{7E2F}\x{7E30}\x{7E31}\x{7E32}\x{7E33}' . +'\x{7E34}\x{7E35}\x{7E36}\x{7E37}\x{7E38}\x{7E39}\x{7E3A}\x{7E3B}\x{7E3C}' . +'\x{7E3D}\x{7E3E}\x{7E3F}\x{7E40}\x{7E41}\x{7E42}\x{7E43}\x{7E44}\x{7E45}' . +'\x{7E46}\x{7E47}\x{7E48}\x{7E49}\x{7E4C}\x{7E4D}\x{7E4E}\x{7E4F}\x{7E50}' . +'\x{7E51}\x{7E52}\x{7E53}\x{7E54}\x{7E55}\x{7E56}\x{7E57}\x{7E58}\x{7E59}' . +'\x{7E5A}\x{7E5C}\x{7E5D}\x{7E5E}\x{7E5F}\x{7E60}\x{7E61}\x{7E62}\x{7E63}' . +'\x{7E65}\x{7E66}\x{7E67}\x{7E68}\x{7E69}\x{7E6A}\x{7E6B}\x{7E6C}\x{7E6D}' . +'\x{7E6E}\x{7E6F}\x{7E70}\x{7E71}\x{7E72}\x{7E73}\x{7E74}\x{7E75}\x{7E76}' . +'\x{7E77}\x{7E78}\x{7E79}\x{7E7A}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7E}\x{7E7F}' . +'\x{7E80}\x{7E81}\x{7E82}\x{7E83}\x{7E84}\x{7E85}\x{7E86}\x{7E87}\x{7E88}' . +'\x{7E89}\x{7E8A}\x{7E8B}\x{7E8C}\x{7E8D}\x{7E8E}\x{7E8F}\x{7E90}\x{7E91}' . +'\x{7E92}\x{7E93}\x{7E94}\x{7E95}\x{7E96}\x{7E97}\x{7E98}\x{7E99}\x{7E9A}' . +'\x{7E9B}\x{7E9C}\x{7E9E}\x{7E9F}\x{7EA0}\x{7EA1}\x{7EA2}\x{7EA3}\x{7EA4}' . +'\x{7EA5}\x{7EA6}\x{7EA7}\x{7EA8}\x{7EA9}\x{7EAA}\x{7EAB}\x{7EAC}\x{7EAD}' . +'\x{7EAE}\x{7EAF}\x{7EB0}\x{7EB1}\x{7EB2}\x{7EB3}\x{7EB4}\x{7EB5}\x{7EB6}' . +'\x{7EB7}\x{7EB8}\x{7EB9}\x{7EBA}\x{7EBB}\x{7EBC}\x{7EBD}\x{7EBE}\x{7EBF}' . +'\x{7EC0}\x{7EC1}\x{7EC2}\x{7EC3}\x{7EC4}\x{7EC5}\x{7EC6}\x{7EC7}\x{7EC8}' . +'\x{7EC9}\x{7ECA}\x{7ECB}\x{7ECC}\x{7ECD}\x{7ECE}\x{7ECF}\x{7ED0}\x{7ED1}' . +'\x{7ED2}\x{7ED3}\x{7ED4}\x{7ED5}\x{7ED6}\x{7ED7}\x{7ED8}\x{7ED9}\x{7EDA}' . +'\x{7EDB}\x{7EDC}\x{7EDD}\x{7EDE}\x{7EDF}\x{7EE0}\x{7EE1}\x{7EE2}\x{7EE3}' . +'\x{7EE4}\x{7EE5}\x{7EE6}\x{7EE7}\x{7EE8}\x{7EE9}\x{7EEA}\x{7EEB}\x{7EEC}' . +'\x{7EED}\x{7EEE}\x{7EEF}\x{7EF0}\x{7EF1}\x{7EF2}\x{7EF3}\x{7EF4}\x{7EF5}' . +'\x{7EF6}\x{7EF7}\x{7EF8}\x{7EF9}\x{7EFA}\x{7EFB}\x{7EFC}\x{7EFD}\x{7EFE}' . +'\x{7EFF}\x{7F00}\x{7F01}\x{7F02}\x{7F03}\x{7F04}\x{7F05}\x{7F06}\x{7F07}' . +'\x{7F08}\x{7F09}\x{7F0A}\x{7F0B}\x{7F0C}\x{7F0D}\x{7F0E}\x{7F0F}\x{7F10}' . +'\x{7F11}\x{7F12}\x{7F13}\x{7F14}\x{7F15}\x{7F16}\x{7F17}\x{7F18}\x{7F19}' . +'\x{7F1A}\x{7F1B}\x{7F1C}\x{7F1D}\x{7F1E}\x{7F1F}\x{7F20}\x{7F21}\x{7F22}' . +'\x{7F23}\x{7F24}\x{7F25}\x{7F26}\x{7F27}\x{7F28}\x{7F29}\x{7F2A}\x{7F2B}' . +'\x{7F2C}\x{7F2D}\x{7F2E}\x{7F2F}\x{7F30}\x{7F31}\x{7F32}\x{7F33}\x{7F34}' . +'\x{7F35}\x{7F36}\x{7F37}\x{7F38}\x{7F39}\x{7F3A}\x{7F3D}\x{7F3E}\x{7F3F}' . +'\x{7F40}\x{7F42}\x{7F43}\x{7F44}\x{7F45}\x{7F47}\x{7F48}\x{7F49}\x{7F4A}' . +'\x{7F4B}\x{7F4C}\x{7F4D}\x{7F4E}\x{7F4F}\x{7F50}\x{7F51}\x{7F52}\x{7F53}' . +'\x{7F54}\x{7F55}\x{7F56}\x{7F57}\x{7F58}\x{7F5A}\x{7F5B}\x{7F5C}\x{7F5D}' . +'\x{7F5E}\x{7F5F}\x{7F60}\x{7F61}\x{7F62}\x{7F63}\x{7F64}\x{7F65}\x{7F66}' . +'\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6C}\x{7F6D}\x{7F6E}\x{7F6F}' . +'\x{7F70}\x{7F71}\x{7F72}\x{7F73}\x{7F74}\x{7F75}\x{7F76}\x{7F77}\x{7F78}' . +'\x{7F79}\x{7F7A}\x{7F7B}\x{7F7C}\x{7F7D}\x{7F7E}\x{7F7F}\x{7F80}\x{7F81}' . +'\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}\x{7F88}\x{7F89}\x{7F8A}\x{7F8B}' . +'\x{7F8C}\x{7F8D}\x{7F8E}\x{7F8F}\x{7F91}\x{7F92}\x{7F93}\x{7F94}\x{7F95}' . +'\x{7F96}\x{7F98}\x{7F9A}\x{7F9B}\x{7F9C}\x{7F9D}\x{7F9E}\x{7F9F}\x{7FA0}' . +'\x{7FA1}\x{7FA2}\x{7FA3}\x{7FA4}\x{7FA5}\x{7FA6}\x{7FA7}\x{7FA8}\x{7FA9}' . +'\x{7FAA}\x{7FAB}\x{7FAC}\x{7FAD}\x{7FAE}\x{7FAF}\x{7FB0}\x{7FB1}\x{7FB2}' . +'\x{7FB3}\x{7FB5}\x{7FB6}\x{7FB7}\x{7FB8}\x{7FB9}\x{7FBA}\x{7FBB}\x{7FBC}' . +'\x{7FBD}\x{7FBE}\x{7FBF}\x{7FC0}\x{7FC1}\x{7FC2}\x{7FC3}\x{7FC4}\x{7FC5}' . +'\x{7FC6}\x{7FC7}\x{7FC8}\x{7FC9}\x{7FCA}\x{7FCB}\x{7FCC}\x{7FCD}\x{7FCE}' . +'\x{7FCF}\x{7FD0}\x{7FD1}\x{7FD2}\x{7FD3}\x{7FD4}\x{7FD5}\x{7FD7}\x{7FD8}' . +'\x{7FD9}\x{7FDA}\x{7FDB}\x{7FDC}\x{7FDE}\x{7FDF}\x{7FE0}\x{7FE1}\x{7FE2}' . +'\x{7FE3}\x{7FE5}\x{7FE6}\x{7FE7}\x{7FE8}\x{7FE9}\x{7FEA}\x{7FEB}\x{7FEC}' . +'\x{7FED}\x{7FEE}\x{7FEF}\x{7FF0}\x{7FF1}\x{7FF2}\x{7FF3}\x{7FF4}\x{7FF5}' . +'\x{7FF6}\x{7FF7}\x{7FF8}\x{7FF9}\x{7FFA}\x{7FFB}\x{7FFC}\x{7FFD}\x{7FFE}' . +'\x{7FFF}\x{8000}\x{8001}\x{8002}\x{8003}\x{8004}\x{8005}\x{8006}\x{8007}' . +'\x{8008}\x{8009}\x{800B}\x{800C}\x{800D}\x{800E}\x{800F}\x{8010}\x{8011}' . +'\x{8012}\x{8013}\x{8014}\x{8015}\x{8016}\x{8017}\x{8018}\x{8019}\x{801A}' . +'\x{801B}\x{801C}\x{801D}\x{801E}\x{801F}\x{8020}\x{8021}\x{8022}\x{8023}' . +'\x{8024}\x{8025}\x{8026}\x{8027}\x{8028}\x{8029}\x{802A}\x{802B}\x{802C}' . +'\x{802D}\x{802E}\x{8030}\x{8031}\x{8032}\x{8033}\x{8034}\x{8035}\x{8036}' . +'\x{8037}\x{8038}\x{8039}\x{803A}\x{803B}\x{803D}\x{803E}\x{803F}\x{8041}' . +'\x{8042}\x{8043}\x{8044}\x{8045}\x{8046}\x{8047}\x{8048}\x{8049}\x{804A}' . +'\x{804B}\x{804C}\x{804D}\x{804E}\x{804F}\x{8050}\x{8051}\x{8052}\x{8053}' . +'\x{8054}\x{8055}\x{8056}\x{8057}\x{8058}\x{8059}\x{805A}\x{805B}\x{805C}' . +'\x{805D}\x{805E}\x{805F}\x{8060}\x{8061}\x{8062}\x{8063}\x{8064}\x{8065}' . +'\x{8067}\x{8068}\x{8069}\x{806A}\x{806B}\x{806C}\x{806D}\x{806E}\x{806F}' . +'\x{8070}\x{8071}\x{8072}\x{8073}\x{8074}\x{8075}\x{8076}\x{8077}\x{8078}' . +'\x{8079}\x{807A}\x{807B}\x{807C}\x{807D}\x{807E}\x{807F}\x{8080}\x{8081}' . +'\x{8082}\x{8083}\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808A}\x{808B}' . +'\x{808C}\x{808D}\x{808F}\x{8090}\x{8091}\x{8092}\x{8093}\x{8095}\x{8096}' . +'\x{8097}\x{8098}\x{8099}\x{809A}\x{809B}\x{809C}\x{809D}\x{809E}\x{809F}' . +'\x{80A0}\x{80A1}\x{80A2}\x{80A3}\x{80A4}\x{80A5}\x{80A9}\x{80AA}\x{80AB}' . +'\x{80AD}\x{80AE}\x{80AF}\x{80B0}\x{80B1}\x{80B2}\x{80B4}\x{80B5}\x{80B6}' . +'\x{80B7}\x{80B8}\x{80BA}\x{80BB}\x{80BC}\x{80BD}\x{80BE}\x{80BF}\x{80C0}' . +'\x{80C1}\x{80C2}\x{80C3}\x{80C4}\x{80C5}\x{80C6}\x{80C7}\x{80C8}\x{80C9}' . +'\x{80CA}\x{80CB}\x{80CC}\x{80CD}\x{80CE}\x{80CF}\x{80D0}\x{80D1}\x{80D2}' . +'\x{80D3}\x{80D4}\x{80D5}\x{80D6}\x{80D7}\x{80D8}\x{80D9}\x{80DA}\x{80DB}' . +'\x{80DC}\x{80DD}\x{80DE}\x{80E0}\x{80E1}\x{80E2}\x{80E3}\x{80E4}\x{80E5}' . +'\x{80E6}\x{80E7}\x{80E8}\x{80E9}\x{80EA}\x{80EB}\x{80EC}\x{80ED}\x{80EE}' . +'\x{80EF}\x{80F0}\x{80F1}\x{80F2}\x{80F3}\x{80F4}\x{80F5}\x{80F6}\x{80F7}' . +'\x{80F8}\x{80F9}\x{80FA}\x{80FB}\x{80FC}\x{80FD}\x{80FE}\x{80FF}\x{8100}' . +'\x{8101}\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{810B}' . +'\x{810C}\x{810D}\x{810E}\x{810F}\x{8110}\x{8111}\x{8112}\x{8113}\x{8114}' . +'\x{8115}\x{8116}\x{8118}\x{8119}\x{811A}\x{811B}\x{811C}\x{811D}\x{811E}' . +'\x{811F}\x{8120}\x{8121}\x{8122}\x{8123}\x{8124}\x{8125}\x{8126}\x{8127}' . +'\x{8128}\x{8129}\x{812A}\x{812B}\x{812C}\x{812D}\x{812E}\x{812F}\x{8130}' . +'\x{8131}\x{8132}\x{8136}\x{8137}\x{8138}\x{8139}\x{813A}\x{813B}\x{813C}' . +'\x{813D}\x{813E}\x{813F}\x{8140}\x{8141}\x{8142}\x{8143}\x{8144}\x{8145}' . +'\x{8146}\x{8147}\x{8148}\x{8149}\x{814A}\x{814B}\x{814C}\x{814D}\x{814E}' . +'\x{814F}\x{8150}\x{8151}\x{8152}\x{8153}\x{8154}\x{8155}\x{8156}\x{8157}' . +'\x{8158}\x{8159}\x{815A}\x{815B}\x{815C}\x{815D}\x{815E}\x{8160}\x{8161}' . +'\x{8162}\x{8163}\x{8164}\x{8165}\x{8166}\x{8167}\x{8168}\x{8169}\x{816A}' . +'\x{816B}\x{816C}\x{816D}\x{816E}\x{816F}\x{8170}\x{8171}\x{8172}\x{8173}' . +'\x{8174}\x{8175}\x{8176}\x{8177}\x{8178}\x{8179}\x{817A}\x{817B}\x{817C}' . +'\x{817D}\x{817E}\x{817F}\x{8180}\x{8181}\x{8182}\x{8183}\x{8185}\x{8186}' . +'\x{8187}\x{8188}\x{8189}\x{818A}\x{818B}\x{818C}\x{818D}\x{818E}\x{818F}' . +'\x{8191}\x{8192}\x{8193}\x{8194}\x{8195}\x{8197}\x{8198}\x{8199}\x{819A}' . +'\x{819B}\x{819C}\x{819D}\x{819E}\x{819F}\x{81A0}\x{81A1}\x{81A2}\x{81A3}' . +'\x{81A4}\x{81A5}\x{81A6}\x{81A7}\x{81A8}\x{81A9}\x{81AA}\x{81AB}\x{81AC}' . +'\x{81AD}\x{81AE}\x{81AF}\x{81B0}\x{81B1}\x{81B2}\x{81B3}\x{81B4}\x{81B5}' . +'\x{81B6}\x{81B7}\x{81B8}\x{81B9}\x{81BA}\x{81BB}\x{81BC}\x{81BD}\x{81BE}' . +'\x{81BF}\x{81C0}\x{81C1}\x{81C2}\x{81C3}\x{81C4}\x{81C5}\x{81C6}\x{81C7}' . +'\x{81C8}\x{81C9}\x{81CA}\x{81CC}\x{81CD}\x{81CE}\x{81CF}\x{81D0}\x{81D1}' . +'\x{81D2}\x{81D4}\x{81D5}\x{81D6}\x{81D7}\x{81D8}\x{81D9}\x{81DA}\x{81DB}' . +'\x{81DC}\x{81DD}\x{81DE}\x{81DF}\x{81E0}\x{81E1}\x{81E2}\x{81E3}\x{81E5}' . +'\x{81E6}\x{81E7}\x{81E8}\x{81E9}\x{81EA}\x{81EB}\x{81EC}\x{81ED}\x{81EE}' . +'\x{81F1}\x{81F2}\x{81F3}\x{81F4}\x{81F5}\x{81F6}\x{81F7}\x{81F8}\x{81F9}' . +'\x{81FA}\x{81FB}\x{81FC}\x{81FD}\x{81FE}\x{81FF}\x{8200}\x{8201}\x{8202}' . +'\x{8203}\x{8204}\x{8205}\x{8206}\x{8207}\x{8208}\x{8209}\x{820A}\x{820B}' . +'\x{820C}\x{820D}\x{820E}\x{820F}\x{8210}\x{8211}\x{8212}\x{8214}\x{8215}' . +'\x{8216}\x{8218}\x{8219}\x{821A}\x{821B}\x{821C}\x{821D}\x{821E}\x{821F}' . +'\x{8220}\x{8221}\x{8222}\x{8223}\x{8225}\x{8226}\x{8227}\x{8228}\x{8229}' . +'\x{822A}\x{822B}\x{822C}\x{822D}\x{822F}\x{8230}\x{8231}\x{8232}\x{8233}' . +'\x{8234}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{823A}\x{823B}\x{823C}' . +'\x{823D}\x{823E}\x{823F}\x{8240}\x{8242}\x{8243}\x{8244}\x{8245}\x{8246}' . +'\x{8247}\x{8248}\x{8249}\x{824A}\x{824B}\x{824C}\x{824D}\x{824E}\x{824F}' . +'\x{8250}\x{8251}\x{8252}\x{8253}\x{8254}\x{8255}\x{8256}\x{8257}\x{8258}' . +'\x{8259}\x{825A}\x{825B}\x{825C}\x{825D}\x{825E}\x{825F}\x{8260}\x{8261}' . +'\x{8263}\x{8264}\x{8266}\x{8267}\x{8268}\x{8269}\x{826A}\x{826B}\x{826C}' . +'\x{826D}\x{826E}\x{826F}\x{8270}\x{8271}\x{8272}\x{8273}\x{8274}\x{8275}' . +'\x{8276}\x{8277}\x{8278}\x{8279}\x{827A}\x{827B}\x{827C}\x{827D}\x{827E}' . +'\x{827F}\x{8280}\x{8281}\x{8282}\x{8283}\x{8284}\x{8285}\x{8286}\x{8287}' . +'\x{8288}\x{8289}\x{828A}\x{828B}\x{828D}\x{828E}\x{828F}\x{8290}\x{8291}' . +'\x{8292}\x{8293}\x{8294}\x{8295}\x{8296}\x{8297}\x{8298}\x{8299}\x{829A}' . +'\x{829B}\x{829C}\x{829D}\x{829E}\x{829F}\x{82A0}\x{82A1}\x{82A2}\x{82A3}' . +'\x{82A4}\x{82A5}\x{82A6}\x{82A7}\x{82A8}\x{82A9}\x{82AA}\x{82AB}\x{82AC}' . +'\x{82AD}\x{82AE}\x{82AF}\x{82B0}\x{82B1}\x{82B3}\x{82B4}\x{82B5}\x{82B6}' . +'\x{82B7}\x{82B8}\x{82B9}\x{82BA}\x{82BB}\x{82BC}\x{82BD}\x{82BE}\x{82BF}' . +'\x{82C0}\x{82C1}\x{82C2}\x{82C3}\x{82C4}\x{82C5}\x{82C6}\x{82C7}\x{82C8}' . +'\x{82C9}\x{82CA}\x{82CB}\x{82CC}\x{82CD}\x{82CE}\x{82CF}\x{82D0}\x{82D1}' . +'\x{82D2}\x{82D3}\x{82D4}\x{82D5}\x{82D6}\x{82D7}\x{82D8}\x{82D9}\x{82DA}' . +'\x{82DB}\x{82DC}\x{82DD}\x{82DE}\x{82DF}\x{82E0}\x{82E1}\x{82E3}\x{82E4}' . +'\x{82E5}\x{82E6}\x{82E7}\x{82E8}\x{82E9}\x{82EA}\x{82EB}\x{82EC}\x{82ED}' . +'\x{82EE}\x{82EF}\x{82F0}\x{82F1}\x{82F2}\x{82F3}\x{82F4}\x{82F5}\x{82F6}' . +'\x{82F7}\x{82F8}\x{82F9}\x{82FA}\x{82FB}\x{82FD}\x{82FE}\x{82FF}\x{8300}' . +'\x{8301}\x{8302}\x{8303}\x{8304}\x{8305}\x{8306}\x{8307}\x{8308}\x{8309}' . +'\x{830B}\x{830C}\x{830D}\x{830E}\x{830F}\x{8311}\x{8312}\x{8313}\x{8314}' . +'\x{8315}\x{8316}\x{8317}\x{8318}\x{8319}\x{831A}\x{831B}\x{831C}\x{831D}' . +'\x{831E}\x{831F}\x{8320}\x{8321}\x{8322}\x{8323}\x{8324}\x{8325}\x{8326}' . +'\x{8327}\x{8328}\x{8329}\x{832A}\x{832B}\x{832C}\x{832D}\x{832E}\x{832F}' . +'\x{8331}\x{8332}\x{8333}\x{8334}\x{8335}\x{8336}\x{8337}\x{8338}\x{8339}' . +'\x{833A}\x{833B}\x{833C}\x{833D}\x{833E}\x{833F}\x{8340}\x{8341}\x{8342}' . +'\x{8343}\x{8344}\x{8345}\x{8346}\x{8347}\x{8348}\x{8349}\x{834A}\x{834B}' . +'\x{834C}\x{834D}\x{834E}\x{834F}\x{8350}\x{8351}\x{8352}\x{8353}\x{8354}' . +'\x{8356}\x{8357}\x{8358}\x{8359}\x{835A}\x{835B}\x{835C}\x{835D}\x{835E}' . +'\x{835F}\x{8360}\x{8361}\x{8362}\x{8363}\x{8364}\x{8365}\x{8366}\x{8367}' . +'\x{8368}\x{8369}\x{836A}\x{836B}\x{836C}\x{836D}\x{836E}\x{836F}\x{8370}' . +'\x{8371}\x{8372}\x{8373}\x{8374}\x{8375}\x{8376}\x{8377}\x{8378}\x{8379}' . +'\x{837A}\x{837B}\x{837C}\x{837D}\x{837E}\x{837F}\x{8380}\x{8381}\x{8382}' . +'\x{8383}\x{8384}\x{8385}\x{8386}\x{8387}\x{8388}\x{8389}\x{838A}\x{838B}' . +'\x{838C}\x{838D}\x{838E}\x{838F}\x{8390}\x{8391}\x{8392}\x{8393}\x{8394}' . +'\x{8395}\x{8396}\x{8397}\x{8398}\x{8399}\x{839A}\x{839B}\x{839C}\x{839D}' . +'\x{839E}\x{83A0}\x{83A1}\x{83A2}\x{83A3}\x{83A4}\x{83A5}\x{83A6}\x{83A7}' . +'\x{83A8}\x{83A9}\x{83AA}\x{83AB}\x{83AC}\x{83AD}\x{83AE}\x{83AF}\x{83B0}' . +'\x{83B1}\x{83B2}\x{83B3}\x{83B4}\x{83B6}\x{83B7}\x{83B8}\x{83B9}\x{83BA}' . +'\x{83BB}\x{83BC}\x{83BD}\x{83BF}\x{83C0}\x{83C1}\x{83C2}\x{83C3}\x{83C4}' . +'\x{83C5}\x{83C6}\x{83C7}\x{83C8}\x{83C9}\x{83CA}\x{83CB}\x{83CC}\x{83CD}' . +'\x{83CE}\x{83CF}\x{83D0}\x{83D1}\x{83D2}\x{83D3}\x{83D4}\x{83D5}\x{83D6}' . +'\x{83D7}\x{83D8}\x{83D9}\x{83DA}\x{83DB}\x{83DC}\x{83DD}\x{83DE}\x{83DF}' . +'\x{83E0}\x{83E1}\x{83E2}\x{83E3}\x{83E4}\x{83E5}\x{83E7}\x{83E8}\x{83E9}' . +'\x{83EA}\x{83EB}\x{83EC}\x{83EE}\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F3}' . +'\x{83F4}\x{83F5}\x{83F6}\x{83F7}\x{83F8}\x{83F9}\x{83FA}\x{83FB}\x{83FC}' . +'\x{83FD}\x{83FE}\x{83FF}\x{8400}\x{8401}\x{8402}\x{8403}\x{8404}\x{8405}' . +'\x{8406}\x{8407}\x{8408}\x{8409}\x{840A}\x{840B}\x{840C}\x{840D}\x{840E}' . +'\x{840F}\x{8410}\x{8411}\x{8412}\x{8413}\x{8415}\x{8418}\x{8419}\x{841A}' . +'\x{841B}\x{841C}\x{841D}\x{841E}\x{8421}\x{8422}\x{8423}\x{8424}\x{8425}' . +'\x{8426}\x{8427}\x{8428}\x{8429}\x{842A}\x{842B}\x{842C}\x{842D}\x{842E}' . +'\x{842F}\x{8430}\x{8431}\x{8432}\x{8433}\x{8434}\x{8435}\x{8436}\x{8437}' . +'\x{8438}\x{8439}\x{843A}\x{843B}\x{843C}\x{843D}\x{843E}\x{843F}\x{8440}' . +'\x{8441}\x{8442}\x{8443}\x{8444}\x{8445}\x{8446}\x{8447}\x{8448}\x{8449}' . +'\x{844A}\x{844B}\x{844C}\x{844D}\x{844E}\x{844F}\x{8450}\x{8451}\x{8452}' . +'\x{8453}\x{8454}\x{8455}\x{8456}\x{8457}\x{8459}\x{845A}\x{845B}\x{845C}' . +'\x{845D}\x{845E}\x{845F}\x{8460}\x{8461}\x{8462}\x{8463}\x{8464}\x{8465}' . +'\x{8466}\x{8467}\x{8468}\x{8469}\x{846A}\x{846B}\x{846C}\x{846D}\x{846E}' . +'\x{846F}\x{8470}\x{8471}\x{8472}\x{8473}\x{8474}\x{8475}\x{8476}\x{8477}' . +'\x{8478}\x{8479}\x{847A}\x{847B}\x{847C}\x{847D}\x{847E}\x{847F}\x{8480}' . +'\x{8481}\x{8482}\x{8484}\x{8485}\x{8486}\x{8487}\x{8488}\x{8489}\x{848A}' . +'\x{848B}\x{848C}\x{848D}\x{848E}\x{848F}\x{8490}\x{8491}\x{8492}\x{8493}' . +'\x{8494}\x{8496}\x{8497}\x{8498}\x{8499}\x{849A}\x{849B}\x{849C}\x{849D}' . +'\x{849E}\x{849F}\x{84A0}\x{84A1}\x{84A2}\x{84A3}\x{84A4}\x{84A5}\x{84A6}' . +'\x{84A7}\x{84A8}\x{84A9}\x{84AA}\x{84AB}\x{84AC}\x{84AE}\x{84AF}\x{84B0}' . +'\x{84B1}\x{84B2}\x{84B3}\x{84B4}\x{84B5}\x{84B6}\x{84B8}\x{84B9}\x{84BA}' . +'\x{84BB}\x{84BC}\x{84BD}\x{84BE}\x{84BF}\x{84C0}\x{84C1}\x{84C2}\x{84C4}' . +'\x{84C5}\x{84C6}\x{84C7}\x{84C8}\x{84C9}\x{84CA}\x{84CB}\x{84CC}\x{84CD}' . +'\x{84CE}\x{84CF}\x{84D0}\x{84D1}\x{84D2}\x{84D3}\x{84D4}\x{84D5}\x{84D6}' . +'\x{84D7}\x{84D8}\x{84D9}\x{84DB}\x{84DC}\x{84DD}\x{84DE}\x{84DF}\x{84E0}' . +'\x{84E1}\x{84E2}\x{84E3}\x{84E4}\x{84E5}\x{84E6}\x{84E7}\x{84E8}\x{84E9}' . +'\x{84EA}\x{84EB}\x{84EC}\x{84EE}\x{84EF}\x{84F0}\x{84F1}\x{84F2}\x{84F3}' . +'\x{84F4}\x{84F5}\x{84F6}\x{84F7}\x{84F8}\x{84F9}\x{84FA}\x{84FB}\x{84FC}' . +'\x{84FD}\x{84FE}\x{84FF}\x{8500}\x{8501}\x{8502}\x{8503}\x{8504}\x{8506}' . +'\x{8507}\x{8508}\x{8509}\x{850A}\x{850B}\x{850C}\x{850D}\x{850E}\x{850F}' . +'\x{8511}\x{8512}\x{8513}\x{8514}\x{8515}\x{8516}\x{8517}\x{8518}\x{8519}' . +'\x{851A}\x{851B}\x{851C}\x{851D}\x{851E}\x{851F}\x{8520}\x{8521}\x{8522}' . +'\x{8523}\x{8524}\x{8525}\x{8526}\x{8527}\x{8528}\x{8529}\x{852A}\x{852B}' . +'\x{852C}\x{852D}\x{852E}\x{852F}\x{8530}\x{8531}\x{8534}\x{8535}\x{8536}' . +'\x{8537}\x{8538}\x{8539}\x{853A}\x{853B}\x{853C}\x{853D}\x{853E}\x{853F}' . +'\x{8540}\x{8541}\x{8542}\x{8543}\x{8544}\x{8545}\x{8546}\x{8547}\x{8548}' . +'\x{8549}\x{854A}\x{854B}\x{854D}\x{854E}\x{854F}\x{8551}\x{8552}\x{8553}' . +'\x{8554}\x{8555}\x{8556}\x{8557}\x{8558}\x{8559}\x{855A}\x{855B}\x{855C}' . +'\x{855D}\x{855E}\x{855F}\x{8560}\x{8561}\x{8562}\x{8563}\x{8564}\x{8565}' . +'\x{8566}\x{8567}\x{8568}\x{8569}\x{856A}\x{856B}\x{856C}\x{856D}\x{856E}' . +'\x{856F}\x{8570}\x{8571}\x{8572}\x{8573}\x{8574}\x{8575}\x{8576}\x{8577}' . +'\x{8578}\x{8579}\x{857A}\x{857B}\x{857C}\x{857D}\x{857E}\x{8580}\x{8581}' . +'\x{8582}\x{8583}\x{8584}\x{8585}\x{8586}\x{8587}\x{8588}\x{8589}\x{858A}' . +'\x{858B}\x{858C}\x{858D}\x{858E}\x{858F}\x{8590}\x{8591}\x{8592}\x{8594}' . +'\x{8595}\x{8596}\x{8598}\x{8599}\x{859A}\x{859B}\x{859C}\x{859D}\x{859E}' . +'\x{859F}\x{85A0}\x{85A1}\x{85A2}\x{85A3}\x{85A4}\x{85A5}\x{85A6}\x{85A7}' . +'\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AD}\x{85AE}\x{85AF}\x{85B0}' . +'\x{85B1}\x{85B3}\x{85B4}\x{85B5}\x{85B6}\x{85B7}\x{85B8}\x{85B9}\x{85BA}' . +'\x{85BC}\x{85BD}\x{85BE}\x{85BF}\x{85C0}\x{85C1}\x{85C2}\x{85C3}\x{85C4}' . +'\x{85C5}\x{85C6}\x{85C7}\x{85C8}\x{85C9}\x{85CA}\x{85CB}\x{85CD}\x{85CE}' . +'\x{85CF}\x{85D0}\x{85D1}\x{85D2}\x{85D3}\x{85D4}\x{85D5}\x{85D6}\x{85D7}' . +'\x{85D8}\x{85D9}\x{85DA}\x{85DB}\x{85DC}\x{85DD}\x{85DE}\x{85DF}\x{85E0}' . +'\x{85E1}\x{85E2}\x{85E3}\x{85E4}\x{85E5}\x{85E6}\x{85E7}\x{85E8}\x{85E9}' . +'\x{85EA}\x{85EB}\x{85EC}\x{85ED}\x{85EF}\x{85F0}\x{85F1}\x{85F2}\x{85F4}' . +'\x{85F5}\x{85F6}\x{85F7}\x{85F8}\x{85F9}\x{85FA}\x{85FB}\x{85FD}\x{85FE}' . +'\x{85FF}\x{8600}\x{8601}\x{8602}\x{8604}\x{8605}\x{8606}\x{8607}\x{8608}' . +'\x{8609}\x{860A}\x{860B}\x{860C}\x{860F}\x{8611}\x{8612}\x{8613}\x{8614}' . +'\x{8616}\x{8617}\x{8618}\x{8619}\x{861A}\x{861B}\x{861C}\x{861E}\x{861F}' . +'\x{8620}\x{8621}\x{8622}\x{8623}\x{8624}\x{8625}\x{8626}\x{8627}\x{8628}' . +'\x{8629}\x{862A}\x{862B}\x{862C}\x{862D}\x{862E}\x{862F}\x{8630}\x{8631}' . +'\x{8632}\x{8633}\x{8634}\x{8635}\x{8636}\x{8638}\x{8639}\x{863A}\x{863B}' . +'\x{863C}\x{863D}\x{863E}\x{863F}\x{8640}\x{8641}\x{8642}\x{8643}\x{8644}' . +'\x{8645}\x{8646}\x{8647}\x{8648}\x{8649}\x{864A}\x{864B}\x{864C}\x{864D}' . +'\x{864E}\x{864F}\x{8650}\x{8651}\x{8652}\x{8653}\x{8654}\x{8655}\x{8656}' . +'\x{8658}\x{8659}\x{865A}\x{865B}\x{865C}\x{865D}\x{865E}\x{865F}\x{8660}' . +'\x{8661}\x{8662}\x{8663}\x{8664}\x{8665}\x{8666}\x{8667}\x{8668}\x{8669}' . +'\x{866A}\x{866B}\x{866C}\x{866D}\x{866E}\x{866F}\x{8670}\x{8671}\x{8672}' . +'\x{8673}\x{8674}\x{8676}\x{8677}\x{8678}\x{8679}\x{867A}\x{867B}\x{867C}' . +'\x{867D}\x{867E}\x{867F}\x{8680}\x{8681}\x{8682}\x{8683}\x{8684}\x{8685}' . +'\x{8686}\x{8687}\x{8688}\x{868A}\x{868B}\x{868C}\x{868D}\x{868E}\x{868F}' . +'\x{8690}\x{8691}\x{8693}\x{8694}\x{8695}\x{8696}\x{8697}\x{8698}\x{8699}' . +'\x{869A}\x{869B}\x{869C}\x{869D}\x{869E}\x{869F}\x{86A1}\x{86A2}\x{86A3}' . +'\x{86A4}\x{86A5}\x{86A7}\x{86A8}\x{86A9}\x{86AA}\x{86AB}\x{86AC}\x{86AD}' . +'\x{86AE}\x{86AF}\x{86B0}\x{86B1}\x{86B2}\x{86B3}\x{86B4}\x{86B5}\x{86B6}' . +'\x{86B7}\x{86B8}\x{86B9}\x{86BA}\x{86BB}\x{86BC}\x{86BD}\x{86BE}\x{86BF}' . +'\x{86C0}\x{86C1}\x{86C2}\x{86C3}\x{86C4}\x{86C5}\x{86C6}\x{86C7}\x{86C8}' . +'\x{86C9}\x{86CA}\x{86CB}\x{86CC}\x{86CE}\x{86CF}\x{86D0}\x{86D1}\x{86D2}' . +'\x{86D3}\x{86D4}\x{86D6}\x{86D7}\x{86D8}\x{86D9}\x{86DA}\x{86DB}\x{86DC}' . +'\x{86DD}\x{86DE}\x{86DF}\x{86E1}\x{86E2}\x{86E3}\x{86E4}\x{86E5}\x{86E6}' . +'\x{86E8}\x{86E9}\x{86EA}\x{86EB}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F0}' . +'\x{86F1}\x{86F2}\x{86F3}\x{86F4}\x{86F5}\x{86F6}\x{86F7}\x{86F8}\x{86F9}' . +'\x{86FA}\x{86FB}\x{86FC}\x{86FE}\x{86FF}\x{8700}\x{8701}\x{8702}\x{8703}' . +'\x{8704}\x{8705}\x{8706}\x{8707}\x{8708}\x{8709}\x{870A}\x{870B}\x{870C}' . +'\x{870D}\x{870E}\x{870F}\x{8710}\x{8711}\x{8712}\x{8713}\x{8714}\x{8715}' . +'\x{8716}\x{8717}\x{8718}\x{8719}\x{871A}\x{871B}\x{871C}\x{871E}\x{871F}' . +'\x{8720}\x{8721}\x{8722}\x{8723}\x{8724}\x{8725}\x{8726}\x{8727}\x{8728}' . +'\x{8729}\x{872A}\x{872B}\x{872C}\x{872D}\x{872E}\x{8730}\x{8731}\x{8732}' . +'\x{8733}\x{8734}\x{8735}\x{8736}\x{8737}\x{8738}\x{8739}\x{873A}\x{873B}' . +'\x{873C}\x{873E}\x{873F}\x{8740}\x{8741}\x{8742}\x{8743}\x{8744}\x{8746}' . +'\x{8747}\x{8748}\x{8749}\x{874A}\x{874C}\x{874D}\x{874E}\x{874F}\x{8750}' . +'\x{8751}\x{8752}\x{8753}\x{8754}\x{8755}\x{8756}\x{8757}\x{8758}\x{8759}' . +'\x{875A}\x{875B}\x{875C}\x{875D}\x{875E}\x{875F}\x{8760}\x{8761}\x{8762}' . +'\x{8763}\x{8764}\x{8765}\x{8766}\x{8767}\x{8768}\x{8769}\x{876A}\x{876B}' . +'\x{876C}\x{876D}\x{876E}\x{876F}\x{8770}\x{8772}\x{8773}\x{8774}\x{8775}' . +'\x{8776}\x{8777}\x{8778}\x{8779}\x{877A}\x{877B}\x{877C}\x{877D}\x{877E}' . +'\x{8780}\x{8781}\x{8782}\x{8783}\x{8784}\x{8785}\x{8786}\x{8787}\x{8788}' . +'\x{8789}\x{878A}\x{878B}\x{878C}\x{878D}\x{878F}\x{8790}\x{8791}\x{8792}' . +'\x{8793}\x{8794}\x{8795}\x{8796}\x{8797}\x{8798}\x{879A}\x{879B}\x{879C}' . +'\x{879D}\x{879E}\x{879F}\x{87A0}\x{87A1}\x{87A2}\x{87A3}\x{87A4}\x{87A5}' . +'\x{87A6}\x{87A7}\x{87A8}\x{87A9}\x{87AA}\x{87AB}\x{87AC}\x{87AD}\x{87AE}' . +'\x{87AF}\x{87B0}\x{87B1}\x{87B2}\x{87B3}\x{87B4}\x{87B5}\x{87B6}\x{87B7}' . +'\x{87B8}\x{87B9}\x{87BA}\x{87BB}\x{87BC}\x{87BD}\x{87BE}\x{87BF}\x{87C0}' . +'\x{87C1}\x{87C2}\x{87C3}\x{87C4}\x{87C5}\x{87C6}\x{87C7}\x{87C8}\x{87C9}' . +'\x{87CA}\x{87CB}\x{87CC}\x{87CD}\x{87CE}\x{87CF}\x{87D0}\x{87D1}\x{87D2}' . +'\x{87D3}\x{87D4}\x{87D5}\x{87D6}\x{87D7}\x{87D8}\x{87D9}\x{87DB}\x{87DC}' . +'\x{87DD}\x{87DE}\x{87DF}\x{87E0}\x{87E1}\x{87E2}\x{87E3}\x{87E4}\x{87E5}' . +'\x{87E6}\x{87E7}\x{87E8}\x{87E9}\x{87EA}\x{87EB}\x{87EC}\x{87ED}\x{87EE}' . +'\x{87EF}\x{87F1}\x{87F2}\x{87F3}\x{87F4}\x{87F5}\x{87F6}\x{87F7}\x{87F8}' . +'\x{87F9}\x{87FA}\x{87FB}\x{87FC}\x{87FD}\x{87FE}\x{87FF}\x{8800}\x{8801}' . +'\x{8802}\x{8803}\x{8804}\x{8805}\x{8806}\x{8808}\x{8809}\x{880A}\x{880B}' . +'\x{880C}\x{880D}\x{880E}\x{880F}\x{8810}\x{8811}\x{8813}\x{8814}\x{8815}' . +'\x{8816}\x{8817}\x{8818}\x{8819}\x{881A}\x{881B}\x{881C}\x{881D}\x{881E}' . +'\x{881F}\x{8820}\x{8821}\x{8822}\x{8823}\x{8824}\x{8825}\x{8826}\x{8827}' . +'\x{8828}\x{8829}\x{882A}\x{882B}\x{882C}\x{882E}\x{882F}\x{8830}\x{8831}' . +'\x{8832}\x{8833}\x{8834}\x{8835}\x{8836}\x{8837}\x{8838}\x{8839}\x{883B}' . +'\x{883C}\x{883D}\x{883E}\x{883F}\x{8840}\x{8841}\x{8842}\x{8843}\x{8844}' . +'\x{8845}\x{8846}\x{8848}\x{8849}\x{884A}\x{884B}\x{884C}\x{884D}\x{884E}' . +'\x{884F}\x{8850}\x{8851}\x{8852}\x{8853}\x{8854}\x{8855}\x{8856}\x{8857}' . +'\x{8859}\x{885A}\x{885B}\x{885D}\x{885E}\x{8860}\x{8861}\x{8862}\x{8863}' . +'\x{8864}\x{8865}\x{8866}\x{8867}\x{8868}\x{8869}\x{886A}\x{886B}\x{886C}' . +'\x{886D}\x{886E}\x{886F}\x{8870}\x{8871}\x{8872}\x{8873}\x{8874}\x{8875}' . +'\x{8876}\x{8877}\x{8878}\x{8879}\x{887B}\x{887C}\x{887D}\x{887E}\x{887F}' . +'\x{8880}\x{8881}\x{8882}\x{8883}\x{8884}\x{8885}\x{8886}\x{8887}\x{8888}' . +'\x{8889}\x{888A}\x{888B}\x{888C}\x{888D}\x{888E}\x{888F}\x{8890}\x{8891}' . +'\x{8892}\x{8893}\x{8894}\x{8895}\x{8896}\x{8897}\x{8898}\x{8899}\x{889A}' . +'\x{889B}\x{889C}\x{889D}\x{889E}\x{889F}\x{88A0}\x{88A1}\x{88A2}\x{88A3}' . +'\x{88A4}\x{88A5}\x{88A6}\x{88A7}\x{88A8}\x{88A9}\x{88AA}\x{88AB}\x{88AC}' . +'\x{88AD}\x{88AE}\x{88AF}\x{88B0}\x{88B1}\x{88B2}\x{88B3}\x{88B4}\x{88B6}' . +'\x{88B7}\x{88B8}\x{88B9}\x{88BA}\x{88BB}\x{88BC}\x{88BD}\x{88BE}\x{88BF}' . +'\x{88C0}\x{88C1}\x{88C2}\x{88C3}\x{88C4}\x{88C5}\x{88C6}\x{88C7}\x{88C8}' . +'\x{88C9}\x{88CA}\x{88CB}\x{88CC}\x{88CD}\x{88CE}\x{88CF}\x{88D0}\x{88D1}' . +'\x{88D2}\x{88D3}\x{88D4}\x{88D5}\x{88D6}\x{88D7}\x{88D8}\x{88D9}\x{88DA}' . +'\x{88DB}\x{88DC}\x{88DD}\x{88DE}\x{88DF}\x{88E0}\x{88E1}\x{88E2}\x{88E3}' . +'\x{88E4}\x{88E5}\x{88E7}\x{88E8}\x{88EA}\x{88EB}\x{88EC}\x{88EE}\x{88EF}' . +'\x{88F0}\x{88F1}\x{88F2}\x{88F3}\x{88F4}\x{88F5}\x{88F6}\x{88F7}\x{88F8}' . +'\x{88F9}\x{88FA}\x{88FB}\x{88FC}\x{88FD}\x{88FE}\x{88FF}\x{8900}\x{8901}' . +'\x{8902}\x{8904}\x{8905}\x{8906}\x{8907}\x{8908}\x{8909}\x{890A}\x{890B}' . +'\x{890C}\x{890D}\x{890E}\x{8910}\x{8911}\x{8912}\x{8913}\x{8914}\x{8915}' . +'\x{8916}\x{8917}\x{8918}\x{8919}\x{891A}\x{891B}\x{891C}\x{891D}\x{891E}' . +'\x{891F}\x{8920}\x{8921}\x{8922}\x{8923}\x{8925}\x{8926}\x{8927}\x{8928}' . +'\x{8929}\x{892A}\x{892B}\x{892C}\x{892D}\x{892E}\x{892F}\x{8930}\x{8931}' . +'\x{8932}\x{8933}\x{8934}\x{8935}\x{8936}\x{8937}\x{8938}\x{8939}\x{893A}' . +'\x{893B}\x{893C}\x{893D}\x{893E}\x{893F}\x{8940}\x{8941}\x{8942}\x{8943}' . +'\x{8944}\x{8945}\x{8946}\x{8947}\x{8948}\x{8949}\x{894A}\x{894B}\x{894C}' . +'\x{894E}\x{894F}\x{8950}\x{8951}\x{8952}\x{8953}\x{8954}\x{8955}\x{8956}' . +'\x{8957}\x{8958}\x{8959}\x{895A}\x{895B}\x{895C}\x{895D}\x{895E}\x{895F}' . +'\x{8960}\x{8961}\x{8962}\x{8963}\x{8964}\x{8966}\x{8967}\x{8968}\x{8969}' . +'\x{896A}\x{896B}\x{896C}\x{896D}\x{896E}\x{896F}\x{8970}\x{8971}\x{8972}' . +'\x{8973}\x{8974}\x{8976}\x{8977}\x{8978}\x{8979}\x{897A}\x{897B}\x{897C}' . +'\x{897E}\x{897F}\x{8980}\x{8981}\x{8982}\x{8983}\x{8984}\x{8985}\x{8986}' . +'\x{8987}\x{8988}\x{8989}\x{898A}\x{898B}\x{898C}\x{898E}\x{898F}\x{8991}' . +'\x{8992}\x{8993}\x{8995}\x{8996}\x{8997}\x{8998}\x{899A}\x{899B}\x{899C}' . +'\x{899D}\x{899E}\x{899F}\x{89A0}\x{89A1}\x{89A2}\x{89A3}\x{89A4}\x{89A5}' . +'\x{89A6}\x{89A7}\x{89A8}\x{89AA}\x{89AB}\x{89AC}\x{89AD}\x{89AE}\x{89AF}' . +'\x{89B1}\x{89B2}\x{89B3}\x{89B5}\x{89B6}\x{89B7}\x{89B8}\x{89B9}\x{89BA}' . +'\x{89BD}\x{89BE}\x{89BF}\x{89C0}\x{89C1}\x{89C2}\x{89C3}\x{89C4}\x{89C5}' . +'\x{89C6}\x{89C7}\x{89C8}\x{89C9}\x{89CA}\x{89CB}\x{89CC}\x{89CD}\x{89CE}' . +'\x{89CF}\x{89D0}\x{89D1}\x{89D2}\x{89D3}\x{89D4}\x{89D5}\x{89D6}\x{89D7}' . +'\x{89D8}\x{89D9}\x{89DA}\x{89DB}\x{89DC}\x{89DD}\x{89DE}\x{89DF}\x{89E0}' . +'\x{89E1}\x{89E2}\x{89E3}\x{89E4}\x{89E5}\x{89E6}\x{89E7}\x{89E8}\x{89E9}' . +'\x{89EA}\x{89EB}\x{89EC}\x{89ED}\x{89EF}\x{89F0}\x{89F1}\x{89F2}\x{89F3}' . +'\x{89F4}\x{89F6}\x{89F7}\x{89F8}\x{89FA}\x{89FB}\x{89FC}\x{89FE}\x{89FF}' . +'\x{8A00}\x{8A01}\x{8A02}\x{8A03}\x{8A04}\x{8A07}\x{8A08}\x{8A09}\x{8A0A}' . +'\x{8A0B}\x{8A0C}\x{8A0D}\x{8A0E}\x{8A0F}\x{8A10}\x{8A11}\x{8A12}\x{8A13}' . +'\x{8A15}\x{8A16}\x{8A17}\x{8A18}\x{8A1A}\x{8A1B}\x{8A1C}\x{8A1D}\x{8A1E}' . +'\x{8A1F}\x{8A22}\x{8A23}\x{8A24}\x{8A25}\x{8A26}\x{8A27}\x{8A28}\x{8A29}' . +'\x{8A2A}\x{8A2C}\x{8A2D}\x{8A2E}\x{8A2F}\x{8A30}\x{8A31}\x{8A32}\x{8A34}' . +'\x{8A35}\x{8A36}\x{8A37}\x{8A38}\x{8A39}\x{8A3A}\x{8A3B}\x{8A3C}\x{8A3E}' . +'\x{8A3F}\x{8A40}\x{8A41}\x{8A42}\x{8A43}\x{8A44}\x{8A45}\x{8A46}\x{8A47}' . +'\x{8A48}\x{8A49}\x{8A4A}\x{8A4C}\x{8A4D}\x{8A4E}\x{8A4F}\x{8A50}\x{8A51}' . +'\x{8A52}\x{8A53}\x{8A54}\x{8A55}\x{8A56}\x{8A57}\x{8A58}\x{8A59}\x{8A5A}' . +'\x{8A5B}\x{8A5C}\x{8A5D}\x{8A5E}\x{8A5F}\x{8A60}\x{8A61}\x{8A62}\x{8A63}' . +'\x{8A65}\x{8A66}\x{8A67}\x{8A68}\x{8A69}\x{8A6A}\x{8A6B}\x{8A6C}\x{8A6D}' . +'\x{8A6E}\x{8A6F}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A74}\x{8A75}\x{8A76}' . +'\x{8A77}\x{8A79}\x{8A7A}\x{8A7B}\x{8A7C}\x{8A7E}\x{8A7F}\x{8A80}\x{8A81}' . +'\x{8A82}\x{8A83}\x{8A84}\x{8A85}\x{8A86}\x{8A87}\x{8A89}\x{8A8A}\x{8A8B}' . +'\x{8A8C}\x{8A8D}\x{8A8E}\x{8A8F}\x{8A90}\x{8A91}\x{8A92}\x{8A93}\x{8A94}' . +'\x{8A95}\x{8A96}\x{8A97}\x{8A98}\x{8A99}\x{8A9A}\x{8A9B}\x{8A9C}\x{8A9D}' . +'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA2}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA7}' . +'\x{8AA8}\x{8AA9}\x{8AAA}\x{8AAB}\x{8AAC}\x{8AAE}\x{8AB0}\x{8AB1}\x{8AB2}' . +'\x{8AB3}\x{8AB4}\x{8AB5}\x{8AB6}\x{8AB8}\x{8AB9}\x{8ABA}\x{8ABB}\x{8ABC}' . +'\x{8ABD}\x{8ABE}\x{8ABF}\x{8AC0}\x{8AC1}\x{8AC2}\x{8AC3}\x{8AC4}\x{8AC5}' . +'\x{8AC6}\x{8AC7}\x{8AC8}\x{8AC9}\x{8ACA}\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACE}' . +'\x{8ACF}\x{8AD1}\x{8AD2}\x{8AD3}\x{8AD4}\x{8AD5}\x{8AD6}\x{8AD7}\x{8AD8}' . +'\x{8AD9}\x{8ADA}\x{8ADB}\x{8ADC}\x{8ADD}\x{8ADE}\x{8ADF}\x{8AE0}\x{8AE1}' . +'\x{8AE2}\x{8AE3}\x{8AE4}\x{8AE5}\x{8AE6}\x{8AE7}\x{8AE8}\x{8AE9}\x{8AEA}' . +'\x{8AEB}\x{8AED}\x{8AEE}\x{8AEF}\x{8AF0}\x{8AF1}\x{8AF2}\x{8AF3}\x{8AF4}' . +'\x{8AF5}\x{8AF6}\x{8AF7}\x{8AF8}\x{8AF9}\x{8AFA}\x{8AFB}\x{8AFC}\x{8AFD}' . +'\x{8AFE}\x{8AFF}\x{8B00}\x{8B01}\x{8B02}\x{8B03}\x{8B04}\x{8B05}\x{8B06}' . +'\x{8B07}\x{8B08}\x{8B09}\x{8B0A}\x{8B0B}\x{8B0D}\x{8B0E}\x{8B0F}\x{8B10}' . +'\x{8B11}\x{8B12}\x{8B13}\x{8B14}\x{8B15}\x{8B16}\x{8B17}\x{8B18}\x{8B19}' . +'\x{8B1A}\x{8B1B}\x{8B1C}\x{8B1D}\x{8B1E}\x{8B1F}\x{8B20}\x{8B21}\x{8B22}' . +'\x{8B23}\x{8B24}\x{8B25}\x{8B26}\x{8B27}\x{8B28}\x{8B2A}\x{8B2B}\x{8B2C}' . +'\x{8B2D}\x{8B2E}\x{8B2F}\x{8B30}\x{8B31}\x{8B33}\x{8B34}\x{8B35}\x{8B36}' . +'\x{8B37}\x{8B39}\x{8B3A}\x{8B3B}\x{8B3C}\x{8B3D}\x{8B3E}\x{8B40}\x{8B41}' . +'\x{8B42}\x{8B43}\x{8B44}\x{8B45}\x{8B46}\x{8B47}\x{8B48}\x{8B49}\x{8B4A}' . +'\x{8B4B}\x{8B4C}\x{8B4D}\x{8B4E}\x{8B4F}\x{8B50}\x{8B51}\x{8B52}\x{8B53}' . +'\x{8B54}\x{8B55}\x{8B56}\x{8B57}\x{8B58}\x{8B59}\x{8B5A}\x{8B5B}\x{8B5C}' . +'\x{8B5D}\x{8B5E}\x{8B5F}\x{8B60}\x{8B63}\x{8B64}\x{8B65}\x{8B66}\x{8B67}' . +'\x{8B68}\x{8B6A}\x{8B6B}\x{8B6C}\x{8B6D}\x{8B6E}\x{8B6F}\x{8B70}\x{8B71}' . +'\x{8B73}\x{8B74}\x{8B76}\x{8B77}\x{8B78}\x{8B79}\x{8B7A}\x{8B7B}\x{8B7D}' . +'\x{8B7E}\x{8B7F}\x{8B80}\x{8B82}\x{8B83}\x{8B84}\x{8B85}\x{8B86}\x{8B88}' . +'\x{8B89}\x{8B8A}\x{8B8B}\x{8B8C}\x{8B8E}\x{8B90}\x{8B91}\x{8B92}\x{8B93}' . +'\x{8B94}\x{8B95}\x{8B96}\x{8B97}\x{8B98}\x{8B99}\x{8B9A}\x{8B9C}\x{8B9D}' . +'\x{8B9E}\x{8B9F}\x{8BA0}\x{8BA1}\x{8BA2}\x{8BA3}\x{8BA4}\x{8BA5}\x{8BA6}' . +'\x{8BA7}\x{8BA8}\x{8BA9}\x{8BAA}\x{8BAB}\x{8BAC}\x{8BAD}\x{8BAE}\x{8BAF}' . +'\x{8BB0}\x{8BB1}\x{8BB2}\x{8BB3}\x{8BB4}\x{8BB5}\x{8BB6}\x{8BB7}\x{8BB8}' . +'\x{8BB9}\x{8BBA}\x{8BBB}\x{8BBC}\x{8BBD}\x{8BBE}\x{8BBF}\x{8BC0}\x{8BC1}' . +'\x{8BC2}\x{8BC3}\x{8BC4}\x{8BC5}\x{8BC6}\x{8BC7}\x{8BC8}\x{8BC9}\x{8BCA}' . +'\x{8BCB}\x{8BCC}\x{8BCD}\x{8BCE}\x{8BCF}\x{8BD0}\x{8BD1}\x{8BD2}\x{8BD3}' . +'\x{8BD4}\x{8BD5}\x{8BD6}\x{8BD7}\x{8BD8}\x{8BD9}\x{8BDA}\x{8BDB}\x{8BDC}' . +'\x{8BDD}\x{8BDE}\x{8BDF}\x{8BE0}\x{8BE1}\x{8BE2}\x{8BE3}\x{8BE4}\x{8BE5}' . +'\x{8BE6}\x{8BE7}\x{8BE8}\x{8BE9}\x{8BEA}\x{8BEB}\x{8BEC}\x{8BED}\x{8BEE}' . +'\x{8BEF}\x{8BF0}\x{8BF1}\x{8BF2}\x{8BF3}\x{8BF4}\x{8BF5}\x{8BF6}\x{8BF7}' . +'\x{8BF8}\x{8BF9}\x{8BFA}\x{8BFB}\x{8BFC}\x{8BFD}\x{8BFE}\x{8BFF}\x{8C00}' . +'\x{8C01}\x{8C02}\x{8C03}\x{8C04}\x{8C05}\x{8C06}\x{8C07}\x{8C08}\x{8C09}' . +'\x{8C0A}\x{8C0B}\x{8C0C}\x{8C0D}\x{8C0E}\x{8C0F}\x{8C10}\x{8C11}\x{8C12}' . +'\x{8C13}\x{8C14}\x{8C15}\x{8C16}\x{8C17}\x{8C18}\x{8C19}\x{8C1A}\x{8C1B}' . +'\x{8C1C}\x{8C1D}\x{8C1E}\x{8C1F}\x{8C20}\x{8C21}\x{8C22}\x{8C23}\x{8C24}' . +'\x{8C25}\x{8C26}\x{8C27}\x{8C28}\x{8C29}\x{8C2A}\x{8C2B}\x{8C2C}\x{8C2D}' . +'\x{8C2E}\x{8C2F}\x{8C30}\x{8C31}\x{8C32}\x{8C33}\x{8C34}\x{8C35}\x{8C36}' . +'\x{8C37}\x{8C39}\x{8C3A}\x{8C3B}\x{8C3C}\x{8C3D}\x{8C3E}\x{8C3F}\x{8C41}' . +'\x{8C42}\x{8C43}\x{8C45}\x{8C46}\x{8C47}\x{8C48}\x{8C49}\x{8C4A}\x{8C4B}' . +'\x{8C4C}\x{8C4D}\x{8C4E}\x{8C4F}\x{8C50}\x{8C54}\x{8C55}\x{8C56}\x{8C57}' . +'\x{8C59}\x{8C5A}\x{8C5B}\x{8C5C}\x{8C5D}\x{8C5E}\x{8C5F}\x{8C60}\x{8C61}' . +'\x{8C62}\x{8C63}\x{8C64}\x{8C65}\x{8C66}\x{8C67}\x{8C68}\x{8C69}\x{8C6A}' . +'\x{8C6B}\x{8C6C}\x{8C6D}\x{8C6E}\x{8C6F}\x{8C70}\x{8C71}\x{8C72}\x{8C73}' . +'\x{8C75}\x{8C76}\x{8C77}\x{8C78}\x{8C79}\x{8C7A}\x{8C7B}\x{8C7D}\x{8C7E}' . +'\x{8C80}\x{8C81}\x{8C82}\x{8C84}\x{8C85}\x{8C86}\x{8C88}\x{8C89}\x{8C8A}' . +'\x{8C8C}\x{8C8D}\x{8C8F}\x{8C90}\x{8C91}\x{8C92}\x{8C93}\x{8C94}\x{8C95}' . +'\x{8C96}\x{8C97}\x{8C98}\x{8C99}\x{8C9A}\x{8C9C}\x{8C9D}\x{8C9E}\x{8C9F}' . +'\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA3}\x{8CA4}\x{8CA5}\x{8CA7}\x{8CA8}\x{8CA9}' . +'\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}\x{8CB1}\x{8CB2}' . +'\x{8CB3}\x{8CB4}\x{8CB5}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CB9}\x{8CBA}\x{8CBB}' . +'\x{8CBC}\x{8CBD}\x{8CBE}\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}' . +'\x{8CC5}\x{8CC6}\x{8CC7}\x{8CC8}\x{8CC9}\x{8CCA}\x{8CCC}\x{8CCE}\x{8CCF}' . +'\x{8CD0}\x{8CD1}\x{8CD2}\x{8CD3}\x{8CD4}\x{8CD5}\x{8CD7}\x{8CD9}\x{8CDA}' . +'\x{8CDB}\x{8CDC}\x{8CDD}\x{8CDE}\x{8CDF}\x{8CE0}\x{8CE1}\x{8CE2}\x{8CE3}' . +'\x{8CE4}\x{8CE5}\x{8CE6}\x{8CE7}\x{8CE8}\x{8CEA}\x{8CEB}\x{8CEC}\x{8CED}' . +'\x{8CEE}\x{8CEF}\x{8CF0}\x{8CF1}\x{8CF2}\x{8CF3}\x{8CF4}\x{8CF5}\x{8CF6}' . +'\x{8CF8}\x{8CF9}\x{8CFA}\x{8CFB}\x{8CFC}\x{8CFD}\x{8CFE}\x{8CFF}\x{8D00}' . +'\x{8D02}\x{8D03}\x{8D04}\x{8D05}\x{8D06}\x{8D07}\x{8D08}\x{8D09}\x{8D0A}' . +'\x{8D0B}\x{8D0C}\x{8D0D}\x{8D0E}\x{8D0F}\x{8D10}\x{8D13}\x{8D14}\x{8D15}' . +'\x{8D16}\x{8D17}\x{8D18}\x{8D19}\x{8D1A}\x{8D1B}\x{8D1C}\x{8D1D}\x{8D1E}' . +'\x{8D1F}\x{8D20}\x{8D21}\x{8D22}\x{8D23}\x{8D24}\x{8D25}\x{8D26}\x{8D27}' . +'\x{8D28}\x{8D29}\x{8D2A}\x{8D2B}\x{8D2C}\x{8D2D}\x{8D2E}\x{8D2F}\x{8D30}' . +'\x{8D31}\x{8D32}\x{8D33}\x{8D34}\x{8D35}\x{8D36}\x{8D37}\x{8D38}\x{8D39}' . +'\x{8D3A}\x{8D3B}\x{8D3C}\x{8D3D}\x{8D3E}\x{8D3F}\x{8D40}\x{8D41}\x{8D42}' . +'\x{8D43}\x{8D44}\x{8D45}\x{8D46}\x{8D47}\x{8D48}\x{8D49}\x{8D4A}\x{8D4B}' . +'\x{8D4C}\x{8D4D}\x{8D4E}\x{8D4F}\x{8D50}\x{8D51}\x{8D52}\x{8D53}\x{8D54}' . +'\x{8D55}\x{8D56}\x{8D57}\x{8D58}\x{8D59}\x{8D5A}\x{8D5B}\x{8D5C}\x{8D5D}' . +'\x{8D5E}\x{8D5F}\x{8D60}\x{8D61}\x{8D62}\x{8D63}\x{8D64}\x{8D65}\x{8D66}' . +'\x{8D67}\x{8D68}\x{8D69}\x{8D6A}\x{8D6B}\x{8D6C}\x{8D6D}\x{8D6E}\x{8D6F}' . +'\x{8D70}\x{8D71}\x{8D72}\x{8D73}\x{8D74}\x{8D75}\x{8D76}\x{8D77}\x{8D78}' . +'\x{8D79}\x{8D7A}\x{8D7B}\x{8D7D}\x{8D7E}\x{8D7F}\x{8D80}\x{8D81}\x{8D82}' . +'\x{8D83}\x{8D84}\x{8D85}\x{8D86}\x{8D87}\x{8D88}\x{8D89}\x{8D8A}\x{8D8B}' . +'\x{8D8C}\x{8D8D}\x{8D8E}\x{8D8F}\x{8D90}\x{8D91}\x{8D92}\x{8D93}\x{8D94}' . +'\x{8D95}\x{8D96}\x{8D97}\x{8D98}\x{8D99}\x{8D9A}\x{8D9B}\x{8D9C}\x{8D9D}' . +'\x{8D9E}\x{8D9F}\x{8DA0}\x{8DA1}\x{8DA2}\x{8DA3}\x{8DA4}\x{8DA5}\x{8DA7}' . +'\x{8DA8}\x{8DA9}\x{8DAA}\x{8DAB}\x{8DAC}\x{8DAD}\x{8DAE}\x{8DAF}\x{8DB0}' . +'\x{8DB1}\x{8DB2}\x{8DB3}\x{8DB4}\x{8DB5}\x{8DB6}\x{8DB7}\x{8DB8}\x{8DB9}' . +'\x{8DBA}\x{8DBB}\x{8DBC}\x{8DBD}\x{8DBE}\x{8DBF}\x{8DC1}\x{8DC2}\x{8DC3}' . +'\x{8DC4}\x{8DC5}\x{8DC6}\x{8DC7}\x{8DC8}\x{8DC9}\x{8DCA}\x{8DCB}\x{8DCC}' . +'\x{8DCD}\x{8DCE}\x{8DCF}\x{8DD0}\x{8DD1}\x{8DD2}\x{8DD3}\x{8DD4}\x{8DD5}' . +'\x{8DD6}\x{8DD7}\x{8DD8}\x{8DD9}\x{8DDA}\x{8DDB}\x{8DDC}\x{8DDD}\x{8DDE}' . +'\x{8DDF}\x{8DE0}\x{8DE1}\x{8DE2}\x{8DE3}\x{8DE4}\x{8DE6}\x{8DE7}\x{8DE8}' . +'\x{8DE9}\x{8DEA}\x{8DEB}\x{8DEC}\x{8DED}\x{8DEE}\x{8DEF}\x{8DF0}\x{8DF1}' . +'\x{8DF2}\x{8DF3}\x{8DF4}\x{8DF5}\x{8DF6}\x{8DF7}\x{8DF8}\x{8DF9}\x{8DFA}' . +'\x{8DFB}\x{8DFC}\x{8DFD}\x{8DFE}\x{8DFF}\x{8E00}\x{8E02}\x{8E03}\x{8E04}' . +'\x{8E05}\x{8E06}\x{8E07}\x{8E08}\x{8E09}\x{8E0A}\x{8E0C}\x{8E0D}\x{8E0E}' . +'\x{8E0F}\x{8E10}\x{8E11}\x{8E12}\x{8E13}\x{8E14}\x{8E15}\x{8E16}\x{8E17}' . +'\x{8E18}\x{8E19}\x{8E1A}\x{8E1B}\x{8E1C}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E20}' . +'\x{8E21}\x{8E22}\x{8E23}\x{8E24}\x{8E25}\x{8E26}\x{8E27}\x{8E28}\x{8E29}' . +'\x{8E2A}\x{8E2B}\x{8E2C}\x{8E2D}\x{8E2E}\x{8E2F}\x{8E30}\x{8E31}\x{8E33}' . +'\x{8E34}\x{8E35}\x{8E36}\x{8E37}\x{8E38}\x{8E39}\x{8E3A}\x{8E3B}\x{8E3C}' . +'\x{8E3D}\x{8E3E}\x{8E3F}\x{8E40}\x{8E41}\x{8E42}\x{8E43}\x{8E44}\x{8E45}' . +'\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4B}\x{8E4C}\x{8E4D}\x{8E4E}\x{8E50}' . +'\x{8E51}\x{8E52}\x{8E53}\x{8E54}\x{8E55}\x{8E56}\x{8E57}\x{8E58}\x{8E59}' . +'\x{8E5A}\x{8E5B}\x{8E5C}\x{8E5D}\x{8E5E}\x{8E5F}\x{8E60}\x{8E61}\x{8E62}' . +'\x{8E63}\x{8E64}\x{8E65}\x{8E66}\x{8E67}\x{8E68}\x{8E69}\x{8E6A}\x{8E6B}' . +'\x{8E6C}\x{8E6D}\x{8E6F}\x{8E70}\x{8E71}\x{8E72}\x{8E73}\x{8E74}\x{8E76}' . +'\x{8E78}\x{8E7A}\x{8E7B}\x{8E7C}\x{8E7D}\x{8E7E}\x{8E7F}\x{8E80}\x{8E81}' . +'\x{8E82}\x{8E83}\x{8E84}\x{8E85}\x{8E86}\x{8E87}\x{8E88}\x{8E89}\x{8E8A}' . +'\x{8E8B}\x{8E8C}\x{8E8D}\x{8E8E}\x{8E8F}\x{8E90}\x{8E91}\x{8E92}\x{8E93}' . +'\x{8E94}\x{8E95}\x{8E96}\x{8E97}\x{8E98}\x{8E9A}\x{8E9C}\x{8E9D}\x{8E9E}' . +'\x{8E9F}\x{8EA0}\x{8EA1}\x{8EA3}\x{8EA4}\x{8EA5}\x{8EA6}\x{8EA7}\x{8EA8}' . +'\x{8EA9}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAD}\x{8EAE}\x{8EAF}\x{8EB0}\x{8EB1}' . +'\x{8EB2}\x{8EB4}\x{8EB5}\x{8EB8}\x{8EB9}\x{8EBA}\x{8EBB}\x{8EBC}\x{8EBD}' . +'\x{8EBE}\x{8EBF}\x{8EC0}\x{8EC2}\x{8EC3}\x{8EC5}\x{8EC6}\x{8EC7}\x{8EC8}' . +'\x{8EC9}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ECE}\x{8ECF}\x{8ED0}\x{8ED1}' . +'\x{8ED2}\x{8ED3}\x{8ED4}\x{8ED5}\x{8ED6}\x{8ED7}\x{8ED8}\x{8EDA}\x{8EDB}' . +'\x{8EDC}\x{8EDD}\x{8EDE}\x{8EDF}\x{8EE0}\x{8EE1}\x{8EE4}\x{8EE5}\x{8EE6}' . +'\x{8EE7}\x{8EE8}\x{8EE9}\x{8EEA}\x{8EEB}\x{8EEC}\x{8EED}\x{8EEE}\x{8EEF}' . +'\x{8EF1}\x{8EF2}\x{8EF3}\x{8EF4}\x{8EF5}\x{8EF6}\x{8EF7}\x{8EF8}\x{8EF9}' . +'\x{8EFA}\x{8EFB}\x{8EFC}\x{8EFD}\x{8EFE}\x{8EFF}\x{8F00}\x{8F01}\x{8F02}' . +'\x{8F03}\x{8F04}\x{8F05}\x{8F06}\x{8F07}\x{8F08}\x{8F09}\x{8F0A}\x{8F0B}' . +'\x{8F0D}\x{8F0E}\x{8F10}\x{8F11}\x{8F12}\x{8F13}\x{8F14}\x{8F15}\x{8F16}' . +'\x{8F17}\x{8F18}\x{8F1A}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1E}\x{8F1F}\x{8F20}' . +'\x{8F21}\x{8F22}\x{8F23}\x{8F24}\x{8F25}\x{8F26}\x{8F27}\x{8F28}\x{8F29}' . +'\x{8F2A}\x{8F2B}\x{8F2C}\x{8F2E}\x{8F2F}\x{8F30}\x{8F31}\x{8F32}\x{8F33}' . +'\x{8F34}\x{8F35}\x{8F36}\x{8F37}\x{8F38}\x{8F39}\x{8F3B}\x{8F3C}\x{8F3D}' . +'\x{8F3E}\x{8F3F}\x{8F40}\x{8F42}\x{8F43}\x{8F44}\x{8F45}\x{8F46}\x{8F47}' . +'\x{8F48}\x{8F49}\x{8F4A}\x{8F4B}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F4F}\x{8F50}' . +'\x{8F51}\x{8F52}\x{8F53}\x{8F54}\x{8F55}\x{8F56}\x{8F57}\x{8F58}\x{8F59}' . +'\x{8F5A}\x{8F5B}\x{8F5D}\x{8F5E}\x{8F5F}\x{8F60}\x{8F61}\x{8F62}\x{8F63}' . +'\x{8F64}\x{8F65}\x{8F66}\x{8F67}\x{8F68}\x{8F69}\x{8F6A}\x{8F6B}\x{8F6C}' . +'\x{8F6D}\x{8F6E}\x{8F6F}\x{8F70}\x{8F71}\x{8F72}\x{8F73}\x{8F74}\x{8F75}' . +'\x{8F76}\x{8F77}\x{8F78}\x{8F79}\x{8F7A}\x{8F7B}\x{8F7C}\x{8F7D}\x{8F7E}' . +'\x{8F7F}\x{8F80}\x{8F81}\x{8F82}\x{8F83}\x{8F84}\x{8F85}\x{8F86}\x{8F87}' . +'\x{8F88}\x{8F89}\x{8F8A}\x{8F8B}\x{8F8C}\x{8F8D}\x{8F8E}\x{8F8F}\x{8F90}' . +'\x{8F91}\x{8F92}\x{8F93}\x{8F94}\x{8F95}\x{8F96}\x{8F97}\x{8F98}\x{8F99}' . +'\x{8F9A}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA0}\x{8FA1}\x{8FA2}\x{8FA3}' . +'\x{8FA5}\x{8FA6}\x{8FA7}\x{8FA8}\x{8FA9}\x{8FAA}\x{8FAB}\x{8FAC}\x{8FAD}' . +'\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB4}\x{8FB5}\x{8FB6}\x{8FB7}' . +'\x{8FB8}\x{8FB9}\x{8FBB}\x{8FBC}\x{8FBD}\x{8FBE}\x{8FBF}\x{8FC0}\x{8FC1}' . +'\x{8FC2}\x{8FC4}\x{8FC5}\x{8FC6}\x{8FC7}\x{8FC8}\x{8FC9}\x{8FCB}\x{8FCC}' . +'\x{8FCD}\x{8FCE}\x{8FCF}\x{8FD0}\x{8FD1}\x{8FD2}\x{8FD3}\x{8FD4}\x{8FD5}' . +'\x{8FD6}\x{8FD7}\x{8FD8}\x{8FD9}\x{8FDA}\x{8FDB}\x{8FDC}\x{8FDD}\x{8FDE}' . +'\x{8FDF}\x{8FE0}\x{8FE1}\x{8FE2}\x{8FE3}\x{8FE4}\x{8FE5}\x{8FE6}\x{8FE8}' . +'\x{8FE9}\x{8FEA}\x{8FEB}\x{8FEC}\x{8FED}\x{8FEE}\x{8FEF}\x{8FF0}\x{8FF1}' . +'\x{8FF2}\x{8FF3}\x{8FF4}\x{8FF5}\x{8FF6}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}' . +'\x{8FFB}\x{8FFC}\x{8FFD}\x{8FFE}\x{8FFF}\x{9000}\x{9001}\x{9002}\x{9003}' . +'\x{9004}\x{9005}\x{9006}\x{9007}\x{9008}\x{9009}\x{900A}\x{900B}\x{900C}' . +'\x{900D}\x{900F}\x{9010}\x{9011}\x{9012}\x{9013}\x{9014}\x{9015}\x{9016}' . +'\x{9017}\x{9018}\x{9019}\x{901A}\x{901B}\x{901C}\x{901D}\x{901E}\x{901F}' . +'\x{9020}\x{9021}\x{9022}\x{9023}\x{9024}\x{9025}\x{9026}\x{9027}\x{9028}' . +'\x{9029}\x{902B}\x{902D}\x{902E}\x{902F}\x{9030}\x{9031}\x{9032}\x{9033}' . +'\x{9034}\x{9035}\x{9036}\x{9038}\x{903A}\x{903B}\x{903C}\x{903D}\x{903E}' . +'\x{903F}\x{9041}\x{9042}\x{9043}\x{9044}\x{9045}\x{9047}\x{9048}\x{9049}' . +'\x{904A}\x{904B}\x{904C}\x{904D}\x{904E}\x{904F}\x{9050}\x{9051}\x{9052}' . +'\x{9053}\x{9054}\x{9055}\x{9056}\x{9057}\x{9058}\x{9059}\x{905A}\x{905B}' . +'\x{905C}\x{905D}\x{905E}\x{905F}\x{9060}\x{9061}\x{9062}\x{9063}\x{9064}' . +'\x{9065}\x{9066}\x{9067}\x{9068}\x{9069}\x{906A}\x{906B}\x{906C}\x{906D}' . +'\x{906E}\x{906F}\x{9070}\x{9071}\x{9072}\x{9073}\x{9074}\x{9075}\x{9076}' . +'\x{9077}\x{9078}\x{9079}\x{907A}\x{907B}\x{907C}\x{907D}\x{907E}\x{907F}' . +'\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9085}\x{9086}\x{9087}\x{9088}' . +'\x{9089}\x{908A}\x{908B}\x{908C}\x{908D}\x{908E}\x{908F}\x{9090}\x{9091}' . +'\x{9092}\x{9093}\x{9094}\x{9095}\x{9096}\x{9097}\x{9098}\x{9099}\x{909A}' . +'\x{909B}\x{909C}\x{909D}\x{909E}\x{909F}\x{90A0}\x{90A1}\x{90A2}\x{90A3}' . +'\x{90A4}\x{90A5}\x{90A6}\x{90A7}\x{90A8}\x{90A9}\x{90AA}\x{90AC}\x{90AD}' . +'\x{90AE}\x{90AF}\x{90B0}\x{90B1}\x{90B2}\x{90B3}\x{90B4}\x{90B5}\x{90B6}' . +'\x{90B7}\x{90B8}\x{90B9}\x{90BA}\x{90BB}\x{90BC}\x{90BD}\x{90BE}\x{90BF}' . +'\x{90C0}\x{90C1}\x{90C2}\x{90C3}\x{90C4}\x{90C5}\x{90C6}\x{90C7}\x{90C8}' . +'\x{90C9}\x{90CA}\x{90CB}\x{90CE}\x{90CF}\x{90D0}\x{90D1}\x{90D3}\x{90D4}' . +'\x{90D5}\x{90D6}\x{90D7}\x{90D8}\x{90D9}\x{90DA}\x{90DB}\x{90DC}\x{90DD}' . +'\x{90DE}\x{90DF}\x{90E0}\x{90E1}\x{90E2}\x{90E3}\x{90E4}\x{90E5}\x{90E6}' . +'\x{90E7}\x{90E8}\x{90E9}\x{90EA}\x{90EB}\x{90EC}\x{90ED}\x{90EE}\x{90EF}' . +'\x{90F0}\x{90F1}\x{90F2}\x{90F3}\x{90F4}\x{90F5}\x{90F7}\x{90F8}\x{90F9}' . +'\x{90FA}\x{90FB}\x{90FC}\x{90FD}\x{90FE}\x{90FF}\x{9100}\x{9101}\x{9102}' . +'\x{9103}\x{9104}\x{9105}\x{9106}\x{9107}\x{9108}\x{9109}\x{910B}\x{910C}' . +'\x{910D}\x{910E}\x{910F}\x{9110}\x{9111}\x{9112}\x{9113}\x{9114}\x{9115}' . +'\x{9116}\x{9117}\x{9118}\x{9119}\x{911A}\x{911B}\x{911C}\x{911D}\x{911E}' . +'\x{911F}\x{9120}\x{9121}\x{9122}\x{9123}\x{9124}\x{9125}\x{9126}\x{9127}' . +'\x{9128}\x{9129}\x{912A}\x{912B}\x{912C}\x{912D}\x{912E}\x{912F}\x{9130}' . +'\x{9131}\x{9132}\x{9133}\x{9134}\x{9135}\x{9136}\x{9137}\x{9138}\x{9139}' . +'\x{913A}\x{913B}\x{913E}\x{913F}\x{9140}\x{9141}\x{9142}\x{9143}\x{9144}' . +'\x{9145}\x{9146}\x{9147}\x{9148}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}' . +'\x{914E}\x{914F}\x{9150}\x{9151}\x{9152}\x{9153}\x{9154}\x{9155}\x{9156}' . +'\x{9157}\x{9158}\x{915A}\x{915B}\x{915C}\x{915D}\x{915E}\x{915F}\x{9160}' . +'\x{9161}\x{9162}\x{9163}\x{9164}\x{9165}\x{9166}\x{9167}\x{9168}\x{9169}' . +'\x{916A}\x{916B}\x{916C}\x{916D}\x{916E}\x{916F}\x{9170}\x{9171}\x{9172}' . +'\x{9173}\x{9174}\x{9175}\x{9176}\x{9177}\x{9178}\x{9179}\x{917A}\x{917C}' . +'\x{917D}\x{917E}\x{917F}\x{9180}\x{9181}\x{9182}\x{9183}\x{9184}\x{9185}' . +'\x{9186}\x{9187}\x{9188}\x{9189}\x{918A}\x{918B}\x{918C}\x{918D}\x{918E}' . +'\x{918F}\x{9190}\x{9191}\x{9192}\x{9193}\x{9194}\x{9196}\x{9199}\x{919A}' . +'\x{919B}\x{919C}\x{919D}\x{919E}\x{919F}\x{91A0}\x{91A1}\x{91A2}\x{91A3}' . +'\x{91A5}\x{91A6}\x{91A7}\x{91A8}\x{91AA}\x{91AB}\x{91AC}\x{91AD}\x{91AE}' . +'\x{91AF}\x{91B0}\x{91B1}\x{91B2}\x{91B3}\x{91B4}\x{91B5}\x{91B6}\x{91B7}' . +'\x{91B9}\x{91BA}\x{91BB}\x{91BC}\x{91BD}\x{91BE}\x{91C0}\x{91C1}\x{91C2}' . +'\x{91C3}\x{91C5}\x{91C6}\x{91C7}\x{91C9}\x{91CA}\x{91CB}\x{91CC}\x{91CD}' . +'\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D2}\x{91D3}\x{91D4}\x{91D5}\x{91D7}' . +'\x{91D8}\x{91D9}\x{91DA}\x{91DB}\x{91DC}\x{91DD}\x{91DE}\x{91DF}\x{91E2}' . +'\x{91E3}\x{91E4}\x{91E5}\x{91E6}\x{91E7}\x{91E8}\x{91E9}\x{91EA}\x{91EB}' . +'\x{91EC}\x{91ED}\x{91EE}\x{91F0}\x{91F1}\x{91F2}\x{91F3}\x{91F4}\x{91F5}' . +'\x{91F7}\x{91F8}\x{91F9}\x{91FA}\x{91FB}\x{91FD}\x{91FE}\x{91FF}\x{9200}' . +'\x{9201}\x{9202}\x{9203}\x{9204}\x{9205}\x{9206}\x{9207}\x{9208}\x{9209}' . +'\x{920A}\x{920B}\x{920C}\x{920D}\x{920E}\x{920F}\x{9210}\x{9211}\x{9212}' . +'\x{9214}\x{9215}\x{9216}\x{9217}\x{9218}\x{9219}\x{921A}\x{921B}\x{921C}' . +'\x{921D}\x{921E}\x{9220}\x{9221}\x{9223}\x{9224}\x{9225}\x{9226}\x{9227}' . +'\x{9228}\x{9229}\x{922A}\x{922B}\x{922D}\x{922E}\x{922F}\x{9230}\x{9231}' . +'\x{9232}\x{9233}\x{9234}\x{9235}\x{9236}\x{9237}\x{9238}\x{9239}\x{923A}' . +'\x{923B}\x{923C}\x{923D}\x{923E}\x{923F}\x{9240}\x{9241}\x{9242}\x{9245}' . +'\x{9246}\x{9247}\x{9248}\x{9249}\x{924A}\x{924B}\x{924C}\x{924D}\x{924E}' . +'\x{924F}\x{9250}\x{9251}\x{9252}\x{9253}\x{9254}\x{9255}\x{9256}\x{9257}' . +'\x{9258}\x{9259}\x{925A}\x{925B}\x{925C}\x{925D}\x{925E}\x{925F}\x{9260}' . +'\x{9261}\x{9262}\x{9263}\x{9264}\x{9265}\x{9266}\x{9267}\x{9268}\x{926B}' . +'\x{926C}\x{926D}\x{926E}\x{926F}\x{9270}\x{9272}\x{9273}\x{9274}\x{9275}' . +'\x{9276}\x{9277}\x{9278}\x{9279}\x{927A}\x{927B}\x{927C}\x{927D}\x{927E}' . +'\x{927F}\x{9280}\x{9282}\x{9283}\x{9285}\x{9286}\x{9287}\x{9288}\x{9289}' . +'\x{928A}\x{928B}\x{928C}\x{928D}\x{928E}\x{928F}\x{9290}\x{9291}\x{9292}' . +'\x{9293}\x{9294}\x{9295}\x{9296}\x{9297}\x{9298}\x{9299}\x{929A}\x{929B}' . +'\x{929C}\x{929D}\x{929F}\x{92A0}\x{92A1}\x{92A2}\x{92A3}\x{92A4}\x{92A5}' . +'\x{92A6}\x{92A7}\x{92A8}\x{92A9}\x{92AA}\x{92AB}\x{92AC}\x{92AD}\x{92AE}' . +'\x{92AF}\x{92B0}\x{92B1}\x{92B2}\x{92B3}\x{92B4}\x{92B5}\x{92B6}\x{92B7}' . +'\x{92B8}\x{92B9}\x{92BA}\x{92BB}\x{92BC}\x{92BE}\x{92BF}\x{92C0}\x{92C1}' . +'\x{92C2}\x{92C3}\x{92C4}\x{92C5}\x{92C6}\x{92C7}\x{92C8}\x{92C9}\x{92CA}' . +'\x{92CB}\x{92CC}\x{92CD}\x{92CE}\x{92CF}\x{92D0}\x{92D1}\x{92D2}\x{92D3}' . +'\x{92D5}\x{92D6}\x{92D7}\x{92D8}\x{92D9}\x{92DA}\x{92DC}\x{92DD}\x{92DE}' . +'\x{92DF}\x{92E0}\x{92E1}\x{92E3}\x{92E4}\x{92E5}\x{92E6}\x{92E7}\x{92E8}' . +'\x{92E9}\x{92EA}\x{92EB}\x{92EC}\x{92ED}\x{92EE}\x{92EF}\x{92F0}\x{92F1}' . +'\x{92F2}\x{92F3}\x{92F4}\x{92F5}\x{92F6}\x{92F7}\x{92F8}\x{92F9}\x{92FA}' . +'\x{92FB}\x{92FC}\x{92FD}\x{92FE}\x{92FF}\x{9300}\x{9301}\x{9302}\x{9303}' . +'\x{9304}\x{9305}\x{9306}\x{9307}\x{9308}\x{9309}\x{930A}\x{930B}\x{930C}' . +'\x{930D}\x{930E}\x{930F}\x{9310}\x{9311}\x{9312}\x{9313}\x{9314}\x{9315}' . +'\x{9316}\x{9317}\x{9318}\x{9319}\x{931A}\x{931B}\x{931D}\x{931E}\x{931F}' . +'\x{9320}\x{9321}\x{9322}\x{9323}\x{9324}\x{9325}\x{9326}\x{9327}\x{9328}' . +'\x{9329}\x{932A}\x{932B}\x{932D}\x{932E}\x{932F}\x{9332}\x{9333}\x{9334}' . +'\x{9335}\x{9336}\x{9337}\x{9338}\x{9339}\x{933A}\x{933B}\x{933C}\x{933D}' . +'\x{933E}\x{933F}\x{9340}\x{9341}\x{9342}\x{9343}\x{9344}\x{9345}\x{9346}' . +'\x{9347}\x{9348}\x{9349}\x{934A}\x{934B}\x{934C}\x{934D}\x{934E}\x{934F}' . +'\x{9350}\x{9351}\x{9352}\x{9353}\x{9354}\x{9355}\x{9356}\x{9357}\x{9358}' . +'\x{9359}\x{935A}\x{935B}\x{935C}\x{935D}\x{935E}\x{935F}\x{9360}\x{9361}' . +'\x{9363}\x{9364}\x{9365}\x{9366}\x{9367}\x{9369}\x{936A}\x{936C}\x{936D}' . +'\x{936E}\x{9370}\x{9371}\x{9372}\x{9374}\x{9375}\x{9376}\x{9377}\x{9379}' . +'\x{937A}\x{937B}\x{937C}\x{937D}\x{937E}\x{9380}\x{9382}\x{9383}\x{9384}' . +'\x{9385}\x{9386}\x{9387}\x{9388}\x{9389}\x{938A}\x{938C}\x{938D}\x{938E}' . +'\x{938F}\x{9390}\x{9391}\x{9392}\x{9393}\x{9394}\x{9395}\x{9396}\x{9397}' . +'\x{9398}\x{9399}\x{939A}\x{939B}\x{939D}\x{939E}\x{939F}\x{93A1}\x{93A2}' . +'\x{93A3}\x{93A4}\x{93A5}\x{93A6}\x{93A7}\x{93A8}\x{93A9}\x{93AA}\x{93AC}' . +'\x{93AD}\x{93AE}\x{93AF}\x{93B0}\x{93B1}\x{93B2}\x{93B3}\x{93B4}\x{93B5}' . +'\x{93B6}\x{93B7}\x{93B8}\x{93B9}\x{93BA}\x{93BC}\x{93BD}\x{93BE}\x{93BF}' . +'\x{93C0}\x{93C1}\x{93C2}\x{93C3}\x{93C4}\x{93C5}\x{93C6}\x{93C7}\x{93C8}' . +'\x{93C9}\x{93CA}\x{93CB}\x{93CC}\x{93CD}\x{93CE}\x{93CF}\x{93D0}\x{93D1}' . +'\x{93D2}\x{93D3}\x{93D4}\x{93D5}\x{93D6}\x{93D7}\x{93D8}\x{93D9}\x{93DA}' . +'\x{93DB}\x{93DC}\x{93DD}\x{93DE}\x{93DF}\x{93E1}\x{93E2}\x{93E3}\x{93E4}' . +'\x{93E6}\x{93E7}\x{93E8}\x{93E9}\x{93EA}\x{93EB}\x{93EC}\x{93ED}\x{93EE}' . +'\x{93EF}\x{93F0}\x{93F1}\x{93F2}\x{93F4}\x{93F5}\x{93F6}\x{93F7}\x{93F8}' . +'\x{93F9}\x{93FA}\x{93FB}\x{93FC}\x{93FD}\x{93FE}\x{93FF}\x{9400}\x{9401}' . +'\x{9403}\x{9404}\x{9405}\x{9406}\x{9407}\x{9408}\x{9409}\x{940A}\x{940B}' . +'\x{940C}\x{940D}\x{940E}\x{940F}\x{9410}\x{9411}\x{9412}\x{9413}\x{9414}' . +'\x{9415}\x{9416}\x{9418}\x{9419}\x{941B}\x{941D}\x{9420}\x{9422}\x{9423}' . +'\x{9425}\x{9426}\x{9427}\x{9428}\x{9429}\x{942A}\x{942B}\x{942C}\x{942D}' . +'\x{942E}\x{942F}\x{9430}\x{9431}\x{9432}\x{9433}\x{9434}\x{9435}\x{9436}' . +'\x{9437}\x{9438}\x{9439}\x{943A}\x{943B}\x{943C}\x{943D}\x{943E}\x{943F}' . +'\x{9440}\x{9441}\x{9442}\x{9444}\x{9445}\x{9446}\x{9447}\x{9448}\x{9449}' . +'\x{944A}\x{944B}\x{944C}\x{944D}\x{944F}\x{9450}\x{9451}\x{9452}\x{9453}' . +'\x{9454}\x{9455}\x{9456}\x{9457}\x{9458}\x{9459}\x{945B}\x{945C}\x{945D}' . +'\x{945E}\x{945F}\x{9460}\x{9461}\x{9462}\x{9463}\x{9464}\x{9465}\x{9466}' . +'\x{9467}\x{9468}\x{9469}\x{946A}\x{946B}\x{946D}\x{946E}\x{946F}\x{9470}' . +'\x{9471}\x{9472}\x{9473}\x{9474}\x{9475}\x{9476}\x{9477}\x{9478}\x{9479}' . +'\x{947A}\x{947C}\x{947D}\x{947E}\x{947F}\x{9480}\x{9481}\x{9482}\x{9483}' . +'\x{9484}\x{9485}\x{9486}\x{9487}\x{9488}\x{9489}\x{948A}\x{948B}\x{948C}' . +'\x{948D}\x{948E}\x{948F}\x{9490}\x{9491}\x{9492}\x{9493}\x{9494}\x{9495}' . +'\x{9496}\x{9497}\x{9498}\x{9499}\x{949A}\x{949B}\x{949C}\x{949D}\x{949E}' . +'\x{949F}\x{94A0}\x{94A1}\x{94A2}\x{94A3}\x{94A4}\x{94A5}\x{94A6}\x{94A7}' . +'\x{94A8}\x{94A9}\x{94AA}\x{94AB}\x{94AC}\x{94AD}\x{94AE}\x{94AF}\x{94B0}' . +'\x{94B1}\x{94B2}\x{94B3}\x{94B4}\x{94B5}\x{94B6}\x{94B7}\x{94B8}\x{94B9}' . +'\x{94BA}\x{94BB}\x{94BC}\x{94BD}\x{94BE}\x{94BF}\x{94C0}\x{94C1}\x{94C2}' . +'\x{94C3}\x{94C4}\x{94C5}\x{94C6}\x{94C7}\x{94C8}\x{94C9}\x{94CA}\x{94CB}' . +'\x{94CC}\x{94CD}\x{94CE}\x{94CF}\x{94D0}\x{94D1}\x{94D2}\x{94D3}\x{94D4}' . +'\x{94D5}\x{94D6}\x{94D7}\x{94D8}\x{94D9}\x{94DA}\x{94DB}\x{94DC}\x{94DD}' . +'\x{94DE}\x{94DF}\x{94E0}\x{94E1}\x{94E2}\x{94E3}\x{94E4}\x{94E5}\x{94E6}' . +'\x{94E7}\x{94E8}\x{94E9}\x{94EA}\x{94EB}\x{94EC}\x{94ED}\x{94EE}\x{94EF}' . +'\x{94F0}\x{94F1}\x{94F2}\x{94F3}\x{94F4}\x{94F5}\x{94F6}\x{94F7}\x{94F8}' . +'\x{94F9}\x{94FA}\x{94FB}\x{94FC}\x{94FD}\x{94FE}\x{94FF}\x{9500}\x{9501}' . +'\x{9502}\x{9503}\x{9504}\x{9505}\x{9506}\x{9507}\x{9508}\x{9509}\x{950A}' . +'\x{950B}\x{950C}\x{950D}\x{950E}\x{950F}\x{9510}\x{9511}\x{9512}\x{9513}' . +'\x{9514}\x{9515}\x{9516}\x{9517}\x{9518}\x{9519}\x{951A}\x{951B}\x{951C}' . +'\x{951D}\x{951E}\x{951F}\x{9520}\x{9521}\x{9522}\x{9523}\x{9524}\x{9525}' . +'\x{9526}\x{9527}\x{9528}\x{9529}\x{952A}\x{952B}\x{952C}\x{952D}\x{952E}' . +'\x{952F}\x{9530}\x{9531}\x{9532}\x{9533}\x{9534}\x{9535}\x{9536}\x{9537}' . +'\x{9538}\x{9539}\x{953A}\x{953B}\x{953C}\x{953D}\x{953E}\x{953F}\x{9540}' . +'\x{9541}\x{9542}\x{9543}\x{9544}\x{9545}\x{9546}\x{9547}\x{9548}\x{9549}' . +'\x{954A}\x{954B}\x{954C}\x{954D}\x{954E}\x{954F}\x{9550}\x{9551}\x{9552}' . +'\x{9553}\x{9554}\x{9555}\x{9556}\x{9557}\x{9558}\x{9559}\x{955A}\x{955B}' . +'\x{955C}\x{955D}\x{955E}\x{955F}\x{9560}\x{9561}\x{9562}\x{9563}\x{9564}' . +'\x{9565}\x{9566}\x{9567}\x{9568}\x{9569}\x{956A}\x{956B}\x{956C}\x{956D}' . +'\x{956E}\x{956F}\x{9570}\x{9571}\x{9572}\x{9573}\x{9574}\x{9575}\x{9576}' . +'\x{9577}\x{957A}\x{957B}\x{957C}\x{957D}\x{957F}\x{9580}\x{9581}\x{9582}' . +'\x{9583}\x{9584}\x{9586}\x{9587}\x{9588}\x{9589}\x{958A}\x{958B}\x{958C}' . +'\x{958D}\x{958E}\x{958F}\x{9590}\x{9591}\x{9592}\x{9593}\x{9594}\x{9595}' . +'\x{9596}\x{9598}\x{9599}\x{959A}\x{959B}\x{959C}\x{959D}\x{959E}\x{959F}' . +'\x{95A1}\x{95A2}\x{95A3}\x{95A4}\x{95A5}\x{95A6}\x{95A7}\x{95A8}\x{95A9}' . +'\x{95AA}\x{95AB}\x{95AC}\x{95AD}\x{95AE}\x{95AF}\x{95B0}\x{95B1}\x{95B2}' . +'\x{95B5}\x{95B6}\x{95B7}\x{95B9}\x{95BA}\x{95BB}\x{95BC}\x{95BD}\x{95BE}' . +'\x{95BF}\x{95C0}\x{95C2}\x{95C3}\x{95C4}\x{95C5}\x{95C6}\x{95C7}\x{95C8}' . +'\x{95C9}\x{95CA}\x{95CB}\x{95CC}\x{95CD}\x{95CE}\x{95CF}\x{95D0}\x{95D1}' . +'\x{95D2}\x{95D3}\x{95D4}\x{95D5}\x{95D6}\x{95D7}\x{95D8}\x{95DA}\x{95DB}' . +'\x{95DC}\x{95DE}\x{95DF}\x{95E0}\x{95E1}\x{95E2}\x{95E3}\x{95E4}\x{95E5}' . +'\x{95E6}\x{95E7}\x{95E8}\x{95E9}\x{95EA}\x{95EB}\x{95EC}\x{95ED}\x{95EE}' . +'\x{95EF}\x{95F0}\x{95F1}\x{95F2}\x{95F3}\x{95F4}\x{95F5}\x{95F6}\x{95F7}' . +'\x{95F8}\x{95F9}\x{95FA}\x{95FB}\x{95FC}\x{95FD}\x{95FE}\x{95FF}\x{9600}' . +'\x{9601}\x{9602}\x{9603}\x{9604}\x{9605}\x{9606}\x{9607}\x{9608}\x{9609}' . +'\x{960A}\x{960B}\x{960C}\x{960D}\x{960E}\x{960F}\x{9610}\x{9611}\x{9612}' . +'\x{9613}\x{9614}\x{9615}\x{9616}\x{9617}\x{9618}\x{9619}\x{961A}\x{961B}' . +'\x{961C}\x{961D}\x{961E}\x{961F}\x{9620}\x{9621}\x{9622}\x{9623}\x{9624}' . +'\x{9627}\x{9628}\x{962A}\x{962B}\x{962C}\x{962D}\x{962E}\x{962F}\x{9630}' . +'\x{9631}\x{9632}\x{9633}\x{9634}\x{9635}\x{9636}\x{9637}\x{9638}\x{9639}' . +'\x{963A}\x{963B}\x{963C}\x{963D}\x{963F}\x{9640}\x{9641}\x{9642}\x{9643}' . +'\x{9644}\x{9645}\x{9646}\x{9647}\x{9648}\x{9649}\x{964A}\x{964B}\x{964C}' . +'\x{964D}\x{964E}\x{964F}\x{9650}\x{9651}\x{9652}\x{9653}\x{9654}\x{9655}' . +'\x{9658}\x{9659}\x{965A}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9660}' . +'\x{9661}\x{9662}\x{9663}\x{9664}\x{9666}\x{9667}\x{9668}\x{9669}\x{966A}' . +'\x{966B}\x{966C}\x{966D}\x{966E}\x{966F}\x{9670}\x{9671}\x{9672}\x{9673}' . +'\x{9674}\x{9675}\x{9676}\x{9677}\x{9678}\x{967C}\x{967D}\x{967E}\x{9680}' . +'\x{9683}\x{9684}\x{9685}\x{9686}\x{9687}\x{9688}\x{9689}\x{968A}\x{968B}' . +'\x{968D}\x{968E}\x{968F}\x{9690}\x{9691}\x{9692}\x{9693}\x{9694}\x{9695}' . +'\x{9697}\x{9698}\x{9699}\x{969B}\x{969C}\x{969E}\x{96A0}\x{96A1}\x{96A2}' . +'\x{96A3}\x{96A4}\x{96A5}\x{96A6}\x{96A7}\x{96A8}\x{96A9}\x{96AA}\x{96AC}' . +'\x{96AD}\x{96AE}\x{96B0}\x{96B1}\x{96B3}\x{96B4}\x{96B6}\x{96B7}\x{96B8}' . +'\x{96B9}\x{96BA}\x{96BB}\x{96BC}\x{96BD}\x{96BE}\x{96BF}\x{96C0}\x{96C1}' . +'\x{96C2}\x{96C3}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C8}\x{96C9}\x{96CA}' . +'\x{96CB}\x{96CC}\x{96CD}\x{96CE}\x{96CF}\x{96D0}\x{96D1}\x{96D2}\x{96D3}' . +'\x{96D4}\x{96D5}\x{96D6}\x{96D7}\x{96D8}\x{96D9}\x{96DA}\x{96DB}\x{96DC}' . +'\x{96DD}\x{96DE}\x{96DF}\x{96E0}\x{96E1}\x{96E2}\x{96E3}\x{96E5}\x{96E8}' . +'\x{96E9}\x{96EA}\x{96EB}\x{96EC}\x{96ED}\x{96EE}\x{96EF}\x{96F0}\x{96F1}' . +'\x{96F2}\x{96F3}\x{96F4}\x{96F5}\x{96F6}\x{96F7}\x{96F8}\x{96F9}\x{96FA}' . +'\x{96FB}\x{96FD}\x{96FE}\x{96FF}\x{9700}\x{9701}\x{9702}\x{9703}\x{9704}' . +'\x{9705}\x{9706}\x{9707}\x{9708}\x{9709}\x{970A}\x{970B}\x{970C}\x{970D}' . +'\x{970E}\x{970F}\x{9710}\x{9711}\x{9712}\x{9713}\x{9715}\x{9716}\x{9718}' . +'\x{9719}\x{971C}\x{971D}\x{971E}\x{971F}\x{9720}\x{9721}\x{9722}\x{9723}' . +'\x{9724}\x{9725}\x{9726}\x{9727}\x{9728}\x{9729}\x{972A}\x{972B}\x{972C}' . +'\x{972D}\x{972E}\x{972F}\x{9730}\x{9731}\x{9732}\x{9735}\x{9736}\x{9738}' . +'\x{9739}\x{973A}\x{973B}\x{973C}\x{973D}\x{973E}\x{973F}\x{9742}\x{9743}' . +'\x{9744}\x{9745}\x{9746}\x{9747}\x{9748}\x{9749}\x{974A}\x{974B}\x{974C}' . +'\x{974E}\x{974F}\x{9750}\x{9751}\x{9752}\x{9753}\x{9754}\x{9755}\x{9756}' . +'\x{9758}\x{9759}\x{975A}\x{975B}\x{975C}\x{975D}\x{975E}\x{975F}\x{9760}' . +'\x{9761}\x{9762}\x{9765}\x{9766}\x{9767}\x{9768}\x{9769}\x{976A}\x{976B}' . +'\x{976C}\x{976D}\x{976E}\x{976F}\x{9770}\x{9772}\x{9773}\x{9774}\x{9776}' . +'\x{9777}\x{9778}\x{9779}\x{977A}\x{977B}\x{977C}\x{977D}\x{977E}\x{977F}' . +'\x{9780}\x{9781}\x{9782}\x{9783}\x{9784}\x{9785}\x{9786}\x{9788}\x{978A}' . +'\x{978B}\x{978C}\x{978D}\x{978E}\x{978F}\x{9790}\x{9791}\x{9792}\x{9793}' . +'\x{9794}\x{9795}\x{9796}\x{9797}\x{9798}\x{9799}\x{979A}\x{979C}\x{979D}' . +'\x{979E}\x{979F}\x{97A0}\x{97A1}\x{97A2}\x{97A3}\x{97A4}\x{97A5}\x{97A6}' . +'\x{97A7}\x{97A8}\x{97AA}\x{97AB}\x{97AC}\x{97AD}\x{97AE}\x{97AF}\x{97B2}' . +'\x{97B3}\x{97B4}\x{97B6}\x{97B7}\x{97B8}\x{97B9}\x{97BA}\x{97BB}\x{97BC}' . +'\x{97BD}\x{97BF}\x{97C1}\x{97C2}\x{97C3}\x{97C4}\x{97C5}\x{97C6}\x{97C7}' . +'\x{97C8}\x{97C9}\x{97CA}\x{97CB}\x{97CC}\x{97CD}\x{97CE}\x{97CF}\x{97D0}' . +'\x{97D1}\x{97D3}\x{97D4}\x{97D5}\x{97D6}\x{97D7}\x{97D8}\x{97D9}\x{97DA}' . +'\x{97DB}\x{97DC}\x{97DD}\x{97DE}\x{97DF}\x{97E0}\x{97E1}\x{97E2}\x{97E3}' . +'\x{97E4}\x{97E5}\x{97E6}\x{97E7}\x{97E8}\x{97E9}\x{97EA}\x{97EB}\x{97EC}' . +'\x{97ED}\x{97EE}\x{97EF}\x{97F0}\x{97F1}\x{97F2}\x{97F3}\x{97F4}\x{97F5}' . +'\x{97F6}\x{97F7}\x{97F8}\x{97F9}\x{97FA}\x{97FB}\x{97FD}\x{97FE}\x{97FF}' . +'\x{9800}\x{9801}\x{9802}\x{9803}\x{9804}\x{9805}\x{9806}\x{9807}\x{9808}' . +'\x{9809}\x{980A}\x{980B}\x{980C}\x{980D}\x{980E}\x{980F}\x{9810}\x{9811}' . +'\x{9812}\x{9813}\x{9814}\x{9815}\x{9816}\x{9817}\x{9818}\x{9819}\x{981A}' . +'\x{981B}\x{981C}\x{981D}\x{981E}\x{9820}\x{9821}\x{9822}\x{9823}\x{9824}' . +'\x{9826}\x{9827}\x{9828}\x{9829}\x{982B}\x{982D}\x{982E}\x{982F}\x{9830}' . +'\x{9831}\x{9832}\x{9834}\x{9835}\x{9836}\x{9837}\x{9838}\x{9839}\x{983B}' . +'\x{983C}\x{983D}\x{983F}\x{9840}\x{9841}\x{9843}\x{9844}\x{9845}\x{9846}' . +'\x{9848}\x{9849}\x{984A}\x{984C}\x{984D}\x{984E}\x{984F}\x{9850}\x{9851}' . +'\x{9852}\x{9853}\x{9854}\x{9855}\x{9857}\x{9858}\x{9859}\x{985A}\x{985B}' . +'\x{985C}\x{985D}\x{985E}\x{985F}\x{9860}\x{9861}\x{9862}\x{9863}\x{9864}' . +'\x{9865}\x{9867}\x{9869}\x{986A}\x{986B}\x{986C}\x{986D}\x{986E}\x{986F}' . +'\x{9870}\x{9871}\x{9872}\x{9873}\x{9874}\x{9875}\x{9876}\x{9877}\x{9878}' . +'\x{9879}\x{987A}\x{987B}\x{987C}\x{987D}\x{987E}\x{987F}\x{9880}\x{9881}' . +'\x{9882}\x{9883}\x{9884}\x{9885}\x{9886}\x{9887}\x{9888}\x{9889}\x{988A}' . +'\x{988B}\x{988C}\x{988D}\x{988E}\x{988F}\x{9890}\x{9891}\x{9892}\x{9893}' . +'\x{9894}\x{9895}\x{9896}\x{9897}\x{9898}\x{9899}\x{989A}\x{989B}\x{989C}' . +'\x{989D}\x{989E}\x{989F}\x{98A0}\x{98A1}\x{98A2}\x{98A3}\x{98A4}\x{98A5}' . +'\x{98A6}\x{98A7}\x{98A8}\x{98A9}\x{98AA}\x{98AB}\x{98AC}\x{98AD}\x{98AE}' . +'\x{98AF}\x{98B0}\x{98B1}\x{98B2}\x{98B3}\x{98B4}\x{98B5}\x{98B6}\x{98B8}' . +'\x{98B9}\x{98BA}\x{98BB}\x{98BC}\x{98BD}\x{98BE}\x{98BF}\x{98C0}\x{98C1}' . +'\x{98C2}\x{98C3}\x{98C4}\x{98C5}\x{98C6}\x{98C8}\x{98C9}\x{98CB}\x{98CC}' . +'\x{98CD}\x{98CE}\x{98CF}\x{98D0}\x{98D1}\x{98D2}\x{98D3}\x{98D4}\x{98D5}' . +'\x{98D6}\x{98D7}\x{98D8}\x{98D9}\x{98DA}\x{98DB}\x{98DC}\x{98DD}\x{98DE}' . +'\x{98DF}\x{98E0}\x{98E2}\x{98E3}\x{98E5}\x{98E6}\x{98E7}\x{98E8}\x{98E9}' . +'\x{98EA}\x{98EB}\x{98ED}\x{98EF}\x{98F0}\x{98F2}\x{98F3}\x{98F4}\x{98F5}' . +'\x{98F6}\x{98F7}\x{98F9}\x{98FA}\x{98FC}\x{98FD}\x{98FE}\x{98FF}\x{9900}' . +'\x{9901}\x{9902}\x{9903}\x{9904}\x{9905}\x{9906}\x{9907}\x{9908}\x{9909}' . +'\x{990A}\x{990B}\x{990C}\x{990D}\x{990E}\x{990F}\x{9910}\x{9911}\x{9912}' . +'\x{9913}\x{9914}\x{9915}\x{9916}\x{9917}\x{9918}\x{991A}\x{991B}\x{991C}' . +'\x{991D}\x{991E}\x{991F}\x{9920}\x{9921}\x{9922}\x{9923}\x{9924}\x{9925}' . +'\x{9926}\x{9927}\x{9928}\x{9929}\x{992A}\x{992B}\x{992C}\x{992D}\x{992E}' . +'\x{992F}\x{9930}\x{9931}\x{9932}\x{9933}\x{9934}\x{9935}\x{9936}\x{9937}' . +'\x{9938}\x{9939}\x{993A}\x{993C}\x{993D}\x{993E}\x{993F}\x{9940}\x{9941}' . +'\x{9942}\x{9943}\x{9945}\x{9946}\x{9947}\x{9948}\x{9949}\x{994A}\x{994B}' . +'\x{994C}\x{994E}\x{994F}\x{9950}\x{9951}\x{9952}\x{9953}\x{9954}\x{9955}' . +'\x{9956}\x{9957}\x{9958}\x{9959}\x{995B}\x{995C}\x{995E}\x{995F}\x{9960}' . +'\x{9961}\x{9962}\x{9963}\x{9964}\x{9965}\x{9966}\x{9967}\x{9968}\x{9969}' . +'\x{996A}\x{996B}\x{996C}\x{996D}\x{996E}\x{996F}\x{9970}\x{9971}\x{9972}' . +'\x{9973}\x{9974}\x{9975}\x{9976}\x{9977}\x{9978}\x{9979}\x{997A}\x{997B}' . +'\x{997C}\x{997D}\x{997E}\x{997F}\x{9980}\x{9981}\x{9982}\x{9983}\x{9984}' . +'\x{9985}\x{9986}\x{9987}\x{9988}\x{9989}\x{998A}\x{998B}\x{998C}\x{998D}' . +'\x{998E}\x{998F}\x{9990}\x{9991}\x{9992}\x{9993}\x{9994}\x{9995}\x{9996}' . +'\x{9997}\x{9998}\x{9999}\x{999A}\x{999B}\x{999C}\x{999D}\x{999E}\x{999F}' . +'\x{99A0}\x{99A1}\x{99A2}\x{99A3}\x{99A4}\x{99A5}\x{99A6}\x{99A7}\x{99A8}' . +'\x{99A9}\x{99AA}\x{99AB}\x{99AC}\x{99AD}\x{99AE}\x{99AF}\x{99B0}\x{99B1}' . +'\x{99B2}\x{99B3}\x{99B4}\x{99B5}\x{99B6}\x{99B7}\x{99B8}\x{99B9}\x{99BA}' . +'\x{99BB}\x{99BC}\x{99BD}\x{99BE}\x{99C0}\x{99C1}\x{99C2}\x{99C3}\x{99C4}' . +'\x{99C6}\x{99C7}\x{99C8}\x{99C9}\x{99CA}\x{99CB}\x{99CC}\x{99CD}\x{99CE}' . +'\x{99CF}\x{99D0}\x{99D1}\x{99D2}\x{99D3}\x{99D4}\x{99D5}\x{99D6}\x{99D7}' . +'\x{99D8}\x{99D9}\x{99DA}\x{99DB}\x{99DC}\x{99DD}\x{99DE}\x{99DF}\x{99E1}' . +'\x{99E2}\x{99E3}\x{99E4}\x{99E5}\x{99E7}\x{99E8}\x{99E9}\x{99EA}\x{99EC}' . +'\x{99ED}\x{99EE}\x{99EF}\x{99F0}\x{99F1}\x{99F2}\x{99F3}\x{99F4}\x{99F6}' . +'\x{99F7}\x{99F8}\x{99F9}\x{99FA}\x{99FB}\x{99FC}\x{99FD}\x{99FE}\x{99FF}' . +'\x{9A00}\x{9A01}\x{9A02}\x{9A03}\x{9A04}\x{9A05}\x{9A06}\x{9A07}\x{9A08}' . +'\x{9A09}\x{9A0A}\x{9A0B}\x{9A0C}\x{9A0D}\x{9A0E}\x{9A0F}\x{9A11}\x{9A14}' . +'\x{9A15}\x{9A16}\x{9A19}\x{9A1A}\x{9A1B}\x{9A1C}\x{9A1D}\x{9A1E}\x{9A1F}' . +'\x{9A20}\x{9A21}\x{9A22}\x{9A23}\x{9A24}\x{9A25}\x{9A26}\x{9A27}\x{9A29}' . +'\x{9A2A}\x{9A2B}\x{9A2C}\x{9A2D}\x{9A2E}\x{9A2F}\x{9A30}\x{9A31}\x{9A32}' . +'\x{9A33}\x{9A34}\x{9A35}\x{9A36}\x{9A37}\x{9A38}\x{9A39}\x{9A3A}\x{9A3C}' . +'\x{9A3D}\x{9A3E}\x{9A3F}\x{9A40}\x{9A41}\x{9A42}\x{9A43}\x{9A44}\x{9A45}' . +'\x{9A46}\x{9A47}\x{9A48}\x{9A49}\x{9A4A}\x{9A4B}\x{9A4C}\x{9A4D}\x{9A4E}' . +'\x{9A4F}\x{9A50}\x{9A52}\x{9A53}\x{9A54}\x{9A55}\x{9A56}\x{9A57}\x{9A59}' . +'\x{9A5A}\x{9A5B}\x{9A5C}\x{9A5E}\x{9A5F}\x{9A60}\x{9A61}\x{9A62}\x{9A64}' . +'\x{9A65}\x{9A66}\x{9A67}\x{9A68}\x{9A69}\x{9A6A}\x{9A6B}\x{9A6C}\x{9A6D}' . +'\x{9A6E}\x{9A6F}\x{9A70}\x{9A71}\x{9A72}\x{9A73}\x{9A74}\x{9A75}\x{9A76}' . +'\x{9A77}\x{9A78}\x{9A79}\x{9A7A}\x{9A7B}\x{9A7C}\x{9A7D}\x{9A7E}\x{9A7F}' . +'\x{9A80}\x{9A81}\x{9A82}\x{9A83}\x{9A84}\x{9A85}\x{9A86}\x{9A87}\x{9A88}' . +'\x{9A89}\x{9A8A}\x{9A8B}\x{9A8C}\x{9A8D}\x{9A8E}\x{9A8F}\x{9A90}\x{9A91}' . +'\x{9A92}\x{9A93}\x{9A94}\x{9A95}\x{9A96}\x{9A97}\x{9A98}\x{9A99}\x{9A9A}' . +'\x{9A9B}\x{9A9C}\x{9A9D}\x{9A9E}\x{9A9F}\x{9AA0}\x{9AA1}\x{9AA2}\x{9AA3}' . +'\x{9AA4}\x{9AA5}\x{9AA6}\x{9AA7}\x{9AA8}\x{9AAA}\x{9AAB}\x{9AAC}\x{9AAD}' . +'\x{9AAE}\x{9AAF}\x{9AB0}\x{9AB1}\x{9AB2}\x{9AB3}\x{9AB4}\x{9AB5}\x{9AB6}' . +'\x{9AB7}\x{9AB8}\x{9AB9}\x{9ABA}\x{9ABB}\x{9ABC}\x{9ABE}\x{9ABF}\x{9AC0}' . +'\x{9AC1}\x{9AC2}\x{9AC3}\x{9AC4}\x{9AC5}\x{9AC6}\x{9AC7}\x{9AC9}\x{9ACA}' . +'\x{9ACB}\x{9ACC}\x{9ACD}\x{9ACE}\x{9ACF}\x{9AD0}\x{9AD1}\x{9AD2}\x{9AD3}' . +'\x{9AD4}\x{9AD5}\x{9AD6}\x{9AD8}\x{9AD9}\x{9ADA}\x{9ADB}\x{9ADC}\x{9ADD}' . +'\x{9ADE}\x{9ADF}\x{9AE1}\x{9AE2}\x{9AE3}\x{9AE5}\x{9AE6}\x{9AE7}\x{9AEA}' . +'\x{9AEB}\x{9AEC}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF2}\x{9AF3}\x{9AF4}' . +'\x{9AF5}\x{9AF6}\x{9AF7}\x{9AF8}\x{9AF9}\x{9AFA}\x{9AFB}\x{9AFC}\x{9AFD}' . +'\x{9AFE}\x{9AFF}\x{9B01}\x{9B03}\x{9B04}\x{9B05}\x{9B06}\x{9B07}\x{9B08}' . +'\x{9B0A}\x{9B0B}\x{9B0C}\x{9B0D}\x{9B0E}\x{9B0F}\x{9B10}\x{9B11}\x{9B12}' . +'\x{9B13}\x{9B15}\x{9B16}\x{9B17}\x{9B18}\x{9B19}\x{9B1A}\x{9B1C}\x{9B1D}' . +'\x{9B1E}\x{9B1F}\x{9B20}\x{9B21}\x{9B22}\x{9B23}\x{9B24}\x{9B25}\x{9B26}' . +'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2B}\x{9B2C}\x{9B2D}\x{9B2E}\x{9B2F}' . +'\x{9B30}\x{9B31}\x{9B32}\x{9B33}\x{9B35}\x{9B36}\x{9B37}\x{9B38}\x{9B39}' . +'\x{9B3A}\x{9B3B}\x{9B3C}\x{9B3E}\x{9B3F}\x{9B41}\x{9B42}\x{9B43}\x{9B44}' . +'\x{9B45}\x{9B46}\x{9B47}\x{9B48}\x{9B49}\x{9B4A}\x{9B4B}\x{9B4C}\x{9B4D}' . +'\x{9B4E}\x{9B4F}\x{9B51}\x{9B52}\x{9B53}\x{9B54}\x{9B55}\x{9B56}\x{9B58}' . +'\x{9B59}\x{9B5A}\x{9B5B}\x{9B5C}\x{9B5D}\x{9B5E}\x{9B5F}\x{9B60}\x{9B61}' . +'\x{9B63}\x{9B64}\x{9B65}\x{9B66}\x{9B67}\x{9B68}\x{9B69}\x{9B6A}\x{9B6B}' . +'\x{9B6C}\x{9B6D}\x{9B6E}\x{9B6F}\x{9B70}\x{9B71}\x{9B73}\x{9B74}\x{9B75}' . +'\x{9B76}\x{9B77}\x{9B78}\x{9B79}\x{9B7A}\x{9B7B}\x{9B7C}\x{9B7D}\x{9B7E}' . +'\x{9B7F}\x{9B80}\x{9B81}\x{9B82}\x{9B83}\x{9B84}\x{9B85}\x{9B86}\x{9B87}' . +'\x{9B88}\x{9B8A}\x{9B8B}\x{9B8D}\x{9B8E}\x{9B8F}\x{9B90}\x{9B91}\x{9B92}' . +'\x{9B93}\x{9B94}\x{9B95}\x{9B96}\x{9B97}\x{9B98}\x{9B9A}\x{9B9B}\x{9B9C}' . +'\x{9B9D}\x{9B9E}\x{9B9F}\x{9BA0}\x{9BA1}\x{9BA2}\x{9BA3}\x{9BA4}\x{9BA5}' . +'\x{9BA6}\x{9BA7}\x{9BA8}\x{9BA9}\x{9BAA}\x{9BAB}\x{9BAC}\x{9BAD}\x{9BAE}' . +'\x{9BAF}\x{9BB0}\x{9BB1}\x{9BB2}\x{9BB3}\x{9BB4}\x{9BB5}\x{9BB6}\x{9BB7}' . +'\x{9BB8}\x{9BB9}\x{9BBA}\x{9BBB}\x{9BBC}\x{9BBD}\x{9BBE}\x{9BBF}\x{9BC0}' . +'\x{9BC1}\x{9BC3}\x{9BC4}\x{9BC5}\x{9BC6}\x{9BC7}\x{9BC8}\x{9BC9}\x{9BCA}' . +'\x{9BCB}\x{9BCC}\x{9BCD}\x{9BCE}\x{9BCF}\x{9BD0}\x{9BD1}\x{9BD2}\x{9BD3}' . +'\x{9BD4}\x{9BD5}\x{9BD6}\x{9BD7}\x{9BD8}\x{9BD9}\x{9BDA}\x{9BDB}\x{9BDC}' . +'\x{9BDD}\x{9BDE}\x{9BDF}\x{9BE0}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}\x{9BE5}' . +'\x{9BE6}\x{9BE7}\x{9BE8}\x{9BE9}\x{9BEA}\x{9BEB}\x{9BEC}\x{9BED}\x{9BEE}' . +'\x{9BEF}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF3}\x{9BF4}\x{9BF5}\x{9BF7}\x{9BF8}' . +'\x{9BF9}\x{9BFA}\x{9BFB}\x{9BFC}\x{9BFD}\x{9BFE}\x{9BFF}\x{9C02}\x{9C05}' . +'\x{9C06}\x{9C07}\x{9C08}\x{9C09}\x{9C0A}\x{9C0B}\x{9C0C}\x{9C0D}\x{9C0E}' . +'\x{9C0F}\x{9C10}\x{9C11}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C16}\x{9C17}' . +'\x{9C18}\x{9C19}\x{9C1A}\x{9C1B}\x{9C1C}\x{9C1D}\x{9C1E}\x{9C1F}\x{9C20}' . +'\x{9C21}\x{9C22}\x{9C23}\x{9C24}\x{9C25}\x{9C26}\x{9C27}\x{9C28}\x{9C29}' . +'\x{9C2A}\x{9C2B}\x{9C2C}\x{9C2D}\x{9C2F}\x{9C30}\x{9C31}\x{9C32}\x{9C33}' . +'\x{9C34}\x{9C35}\x{9C36}\x{9C37}\x{9C38}\x{9C39}\x{9C3A}\x{9C3B}\x{9C3C}' . +'\x{9C3D}\x{9C3E}\x{9C3F}\x{9C40}\x{9C41}\x{9C43}\x{9C44}\x{9C45}\x{9C46}' . +'\x{9C47}\x{9C48}\x{9C49}\x{9C4A}\x{9C4B}\x{9C4C}\x{9C4D}\x{9C4E}\x{9C50}' . +'\x{9C52}\x{9C53}\x{9C54}\x{9C55}\x{9C56}\x{9C57}\x{9C58}\x{9C59}\x{9C5A}' . +'\x{9C5B}\x{9C5C}\x{9C5D}\x{9C5E}\x{9C5F}\x{9C60}\x{9C62}\x{9C63}\x{9C65}' . +'\x{9C66}\x{9C67}\x{9C68}\x{9C69}\x{9C6A}\x{9C6B}\x{9C6C}\x{9C6D}\x{9C6E}' . +'\x{9C6F}\x{9C70}\x{9C71}\x{9C72}\x{9C73}\x{9C74}\x{9C75}\x{9C77}\x{9C78}' . +'\x{9C79}\x{9C7A}\x{9C7C}\x{9C7D}\x{9C7E}\x{9C7F}\x{9C80}\x{9C81}\x{9C82}' . +'\x{9C83}\x{9C84}\x{9C85}\x{9C86}\x{9C87}\x{9C88}\x{9C89}\x{9C8A}\x{9C8B}' . +'\x{9C8C}\x{9C8D}\x{9C8E}\x{9C8F}\x{9C90}\x{9C91}\x{9C92}\x{9C93}\x{9C94}' . +'\x{9C95}\x{9C96}\x{9C97}\x{9C98}\x{9C99}\x{9C9A}\x{9C9B}\x{9C9C}\x{9C9D}' . +'\x{9C9E}\x{9C9F}\x{9CA0}\x{9CA1}\x{9CA2}\x{9CA3}\x{9CA4}\x{9CA5}\x{9CA6}' . +'\x{9CA7}\x{9CA8}\x{9CA9}\x{9CAA}\x{9CAB}\x{9CAC}\x{9CAD}\x{9CAE}\x{9CAF}' . +'\x{9CB0}\x{9CB1}\x{9CB2}\x{9CB3}\x{9CB4}\x{9CB5}\x{9CB6}\x{9CB7}\x{9CB8}' . +'\x{9CB9}\x{9CBA}\x{9CBB}\x{9CBC}\x{9CBD}\x{9CBE}\x{9CBF}\x{9CC0}\x{9CC1}' . +'\x{9CC2}\x{9CC3}\x{9CC4}\x{9CC5}\x{9CC6}\x{9CC7}\x{9CC8}\x{9CC9}\x{9CCA}' . +'\x{9CCB}\x{9CCC}\x{9CCD}\x{9CCE}\x{9CCF}\x{9CD0}\x{9CD1}\x{9CD2}\x{9CD3}' . +'\x{9CD4}\x{9CD5}\x{9CD6}\x{9CD7}\x{9CD8}\x{9CD9}\x{9CDA}\x{9CDB}\x{9CDC}' . +'\x{9CDD}\x{9CDE}\x{9CDF}\x{9CE0}\x{9CE1}\x{9CE2}\x{9CE3}\x{9CE4}\x{9CE5}' . +'\x{9CE6}\x{9CE7}\x{9CE8}\x{9CE9}\x{9CEA}\x{9CEB}\x{9CEC}\x{9CED}\x{9CEE}' . +'\x{9CEF}\x{9CF0}\x{9CF1}\x{9CF2}\x{9CF3}\x{9CF4}\x{9CF5}\x{9CF6}\x{9CF7}' . +'\x{9CF8}\x{9CF9}\x{9CFA}\x{9CFB}\x{9CFC}\x{9CFD}\x{9CFE}\x{9CFF}\x{9D00}' . +'\x{9D01}\x{9D02}\x{9D03}\x{9D04}\x{9D05}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' . +'\x{9D0A}\x{9D0B}\x{9D0F}\x{9D10}\x{9D12}\x{9D13}\x{9D14}\x{9D15}\x{9D16}' . +'\x{9D17}\x{9D18}\x{9D19}\x{9D1A}\x{9D1B}\x{9D1C}\x{9D1D}\x{9D1E}\x{9D1F}' . +'\x{9D20}\x{9D21}\x{9D22}\x{9D23}\x{9D24}\x{9D25}\x{9D26}\x{9D28}\x{9D29}' . +'\x{9D2B}\x{9D2D}\x{9D2E}\x{9D2F}\x{9D30}\x{9D31}\x{9D32}\x{9D33}\x{9D34}' . +'\x{9D36}\x{9D37}\x{9D38}\x{9D39}\x{9D3A}\x{9D3B}\x{9D3D}\x{9D3E}\x{9D3F}' . +'\x{9D40}\x{9D41}\x{9D42}\x{9D43}\x{9D45}\x{9D46}\x{9D47}\x{9D48}\x{9D49}' . +'\x{9D4A}\x{9D4B}\x{9D4C}\x{9D4D}\x{9D4E}\x{9D4F}\x{9D50}\x{9D51}\x{9D52}' . +'\x{9D53}\x{9D54}\x{9D55}\x{9D56}\x{9D57}\x{9D58}\x{9D59}\x{9D5A}\x{9D5B}' . +'\x{9D5C}\x{9D5D}\x{9D5E}\x{9D5F}\x{9D60}\x{9D61}\x{9D62}\x{9D63}\x{9D64}' . +'\x{9D65}\x{9D66}\x{9D67}\x{9D68}\x{9D69}\x{9D6A}\x{9D6B}\x{9D6C}\x{9D6E}' . +'\x{9D6F}\x{9D70}\x{9D71}\x{9D72}\x{9D73}\x{9D74}\x{9D75}\x{9D76}\x{9D77}' . +'\x{9D78}\x{9D79}\x{9D7A}\x{9D7B}\x{9D7C}\x{9D7D}\x{9D7E}\x{9D7F}\x{9D80}' . +'\x{9D81}\x{9D82}\x{9D83}\x{9D84}\x{9D85}\x{9D86}\x{9D87}\x{9D88}\x{9D89}' . +'\x{9D8A}\x{9D8B}\x{9D8C}\x{9D8D}\x{9D8E}\x{9D90}\x{9D91}\x{9D92}\x{9D93}' . +'\x{9D94}\x{9D96}\x{9D97}\x{9D98}\x{9D99}\x{9D9A}\x{9D9B}\x{9D9C}\x{9D9D}' . +'\x{9D9E}\x{9D9F}\x{9DA0}\x{9DA1}\x{9DA2}\x{9DA3}\x{9DA4}\x{9DA5}\x{9DA6}' . +'\x{9DA7}\x{9DA8}\x{9DA9}\x{9DAA}\x{9DAB}\x{9DAC}\x{9DAD}\x{9DAF}\x{9DB0}' . +'\x{9DB1}\x{9DB2}\x{9DB3}\x{9DB4}\x{9DB5}\x{9DB6}\x{9DB7}\x{9DB8}\x{9DB9}' . +'\x{9DBA}\x{9DBB}\x{9DBC}\x{9DBE}\x{9DBF}\x{9DC1}\x{9DC2}\x{9DC3}\x{9DC4}' . +'\x{9DC5}\x{9DC7}\x{9DC8}\x{9DC9}\x{9DCA}\x{9DCB}\x{9DCC}\x{9DCD}\x{9DCE}' . +'\x{9DCF}\x{9DD0}\x{9DD1}\x{9DD2}\x{9DD3}\x{9DD4}\x{9DD5}\x{9DD6}\x{9DD7}' . +'\x{9DD8}\x{9DD9}\x{9DDA}\x{9DDB}\x{9DDC}\x{9DDD}\x{9DDE}\x{9DDF}\x{9DE0}' . +'\x{9DE1}\x{9DE2}\x{9DE3}\x{9DE4}\x{9DE5}\x{9DE6}\x{9DE7}\x{9DE8}\x{9DE9}' . +'\x{9DEB}\x{9DEC}\x{9DED}\x{9DEE}\x{9DEF}\x{9DF0}\x{9DF1}\x{9DF2}\x{9DF3}' . +'\x{9DF4}\x{9DF5}\x{9DF6}\x{9DF7}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFB}\x{9DFD}' . +'\x{9DFE}\x{9DFF}\x{9E00}\x{9E01}\x{9E02}\x{9E03}\x{9E04}\x{9E05}\x{9E06}' . +'\x{9E07}\x{9E08}\x{9E09}\x{9E0A}\x{9E0B}\x{9E0C}\x{9E0D}\x{9E0F}\x{9E10}' . +'\x{9E11}\x{9E12}\x{9E13}\x{9E14}\x{9E15}\x{9E17}\x{9E18}\x{9E19}\x{9E1A}' . +'\x{9E1B}\x{9E1D}\x{9E1E}\x{9E1F}\x{9E20}\x{9E21}\x{9E22}\x{9E23}\x{9E24}' . +'\x{9E25}\x{9E26}\x{9E27}\x{9E28}\x{9E29}\x{9E2A}\x{9E2B}\x{9E2C}\x{9E2D}' . +'\x{9E2E}\x{9E2F}\x{9E30}\x{9E31}\x{9E32}\x{9E33}\x{9E34}\x{9E35}\x{9E36}' . +'\x{9E37}\x{9E38}\x{9E39}\x{9E3A}\x{9E3B}\x{9E3C}\x{9E3D}\x{9E3E}\x{9E3F}' . +'\x{9E40}\x{9E41}\x{9E42}\x{9E43}\x{9E44}\x{9E45}\x{9E46}\x{9E47}\x{9E48}' . +'\x{9E49}\x{9E4A}\x{9E4B}\x{9E4C}\x{9E4D}\x{9E4E}\x{9E4F}\x{9E50}\x{9E51}' . +'\x{9E52}\x{9E53}\x{9E54}\x{9E55}\x{9E56}\x{9E57}\x{9E58}\x{9E59}\x{9E5A}' . +'\x{9E5B}\x{9E5C}\x{9E5D}\x{9E5E}\x{9E5F}\x{9E60}\x{9E61}\x{9E62}\x{9E63}' . +'\x{9E64}\x{9E65}\x{9E66}\x{9E67}\x{9E68}\x{9E69}\x{9E6A}\x{9E6B}\x{9E6C}' . +'\x{9E6D}\x{9E6E}\x{9E6F}\x{9E70}\x{9E71}\x{9E72}\x{9E73}\x{9E74}\x{9E75}' . +'\x{9E76}\x{9E77}\x{9E79}\x{9E7A}\x{9E7C}\x{9E7D}\x{9E7E}\x{9E7F}\x{9E80}' . +'\x{9E81}\x{9E82}\x{9E83}\x{9E84}\x{9E85}\x{9E86}\x{9E87}\x{9E88}\x{9E89}' . +'\x{9E8A}\x{9E8B}\x{9E8C}\x{9E8D}\x{9E8E}\x{9E91}\x{9E92}\x{9E93}\x{9E94}' . +'\x{9E96}\x{9E97}\x{9E99}\x{9E9A}\x{9E9B}\x{9E9C}\x{9E9D}\x{9E9F}\x{9EA0}' . +'\x{9EA1}\x{9EA3}\x{9EA4}\x{9EA5}\x{9EA6}\x{9EA7}\x{9EA8}\x{9EA9}\x{9EAA}' . +'\x{9EAD}\x{9EAE}\x{9EAF}\x{9EB0}\x{9EB2}\x{9EB3}\x{9EB4}\x{9EB5}\x{9EB6}' . +'\x{9EB7}\x{9EB8}\x{9EBB}\x{9EBC}\x{9EBD}\x{9EBE}\x{9EBF}\x{9EC0}\x{9EC1}' . +'\x{9EC2}\x{9EC3}\x{9EC4}\x{9EC5}\x{9EC6}\x{9EC7}\x{9EC8}\x{9EC9}\x{9ECA}' . +'\x{9ECB}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED1}\x{9ED2}\x{9ED3}' . +'\x{9ED4}\x{9ED5}\x{9ED6}\x{9ED7}\x{9ED8}\x{9ED9}\x{9EDA}\x{9EDB}\x{9EDC}' . +'\x{9EDD}\x{9EDE}\x{9EDF}\x{9EE0}\x{9EE1}\x{9EE2}\x{9EE3}\x{9EE4}\x{9EE5}' . +'\x{9EE6}\x{9EE7}\x{9EE8}\x{9EE9}\x{9EEA}\x{9EEB}\x{9EED}\x{9EEE}\x{9EEF}' . +'\x{9EF0}\x{9EF2}\x{9EF3}\x{9EF4}\x{9EF5}\x{9EF6}\x{9EF7}\x{9EF8}\x{9EF9}' . +'\x{9EFA}\x{9EFB}\x{9EFC}\x{9EFD}\x{9EFE}\x{9EFF}\x{9F00}\x{9F01}\x{9F02}' . +'\x{9F04}\x{9F05}\x{9F06}\x{9F07}\x{9F08}\x{9F09}\x{9F0A}\x{9F0B}\x{9F0C}' . +'\x{9F0D}\x{9F0E}\x{9F0F}\x{9F10}\x{9F12}\x{9F13}\x{9F15}\x{9F16}\x{9F17}' . +'\x{9F18}\x{9F19}\x{9F1A}\x{9F1B}\x{9F1C}\x{9F1D}\x{9F1E}\x{9F1F}\x{9F20}' . +'\x{9F22}\x{9F23}\x{9F24}\x{9F25}\x{9F27}\x{9F28}\x{9F29}\x{9F2A}\x{9F2B}' . +'\x{9F2C}\x{9F2D}\x{9F2E}\x{9F2F}\x{9F30}\x{9F31}\x{9F32}\x{9F33}\x{9F34}' . +'\x{9F35}\x{9F36}\x{9F37}\x{9F38}\x{9F39}\x{9F3A}\x{9F3B}\x{9F3C}\x{9F3D}' . +'\x{9F3E}\x{9F3F}\x{9F40}\x{9F41}\x{9F42}\x{9F43}\x{9F44}\x{9F46}\x{9F47}' . +'\x{9F48}\x{9F49}\x{9F4A}\x{9F4B}\x{9F4C}\x{9F4D}\x{9F4E}\x{9F4F}\x{9F50}' . +'\x{9F51}\x{9F52}\x{9F54}\x{9F55}\x{9F56}\x{9F57}\x{9F58}\x{9F59}\x{9F5A}' . +'\x{9F5B}\x{9F5C}\x{9F5D}\x{9F5E}\x{9F5F}\x{9F60}\x{9F61}\x{9F63}\x{9F64}' . +'\x{9F65}\x{9F66}\x{9F67}\x{9F68}\x{9F69}\x{9F6A}\x{9F6B}\x{9F6C}\x{9F6E}' . +'\x{9F6F}\x{9F70}\x{9F71}\x{9F72}\x{9F73}\x{9F74}\x{9F75}\x{9F76}\x{9F77}' . +'\x{9F78}\x{9F79}\x{9F7A}\x{9F7B}\x{9F7C}\x{9F7D}\x{9F7E}\x{9F7F}\x{9F80}' . +'\x{9F81}\x{9F82}\x{9F83}\x{9F84}\x{9F85}\x{9F86}\x{9F87}\x{9F88}\x{9F89}' . +'\x{9F8A}\x{9F8B}\x{9F8C}\x{9F8D}\x{9F8E}\x{9F8F}\x{9F90}\x{9F91}\x{9F92}' . +'\x{9F93}\x{9F94}\x{9F95}\x{9F96}\x{9F97}\x{9F98}\x{9F99}\x{9F9A}\x{9F9B}' . +'\x{9F9C}\x{9F9D}\x{9F9E}\x{9F9F}\x{9FA0}\x{9FA2}\x{9FA4}\x{9FA5}]{1,20}$/iu'); diff --git a/library/Zend/Validate/Hostname/Cn.php b/library/Zend/Validate/Hostname/Cn.php new file mode 100755 index 000000000..816e499a9 --- /dev/null +++ b/library/Zend/Validate/Hostname/Cn.php @@ -0,0 +1,2199 @@ + '/^[\x{002d}0-9a-z\x{3447}\x{3473}\x{359E}\x{360E}\x{361A}\x{3918}\x{396E}\x{39CF}\x{39D0}' . +'\x{39DF}\x{3A73}\x{3B4E}\x{3C6E}\x{3CE0}\x{4056}\x{415F}\x{4337}\x{43AC}' . +'\x{43B1}\x{43DD}\x{44D6}\x{464C}\x{4661}\x{4723}\x{4729}\x{477C}\x{478D}' . +'\x{4947}\x{497A}\x{497D}\x{4982}\x{4983}\x{4985}\x{4986}\x{499B}\x{499F}' . +'\x{49B6}\x{49B7}\x{4C77}\x{4C9F}\x{4CA0}\x{4CA1}\x{4CA2}\x{4CA3}\x{4D13}' . +'\x{4D14}\x{4D15}\x{4D16}\x{4D17}\x{4D18}\x{4D19}\x{4DAE}\x{4E00}\x{4E01}' . +'\x{4E02}\x{4E03}\x{4E04}\x{4E05}\x{4E06}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' . +'\x{4E0B}\x{4E0C}\x{4E0D}\x{4E0E}\x{4E0F}\x{4E10}\x{4E11}\x{4E13}\x{4E14}' . +'\x{4E15}\x{4E16}\x{4E17}\x{4E18}\x{4E19}\x{4E1A}\x{4E1B}\x{4E1C}\x{4E1D}' . +'\x{4E1E}\x{4E1F}\x{4E20}\x{4E21}\x{4E22}\x{4E23}\x{4E24}\x{4E25}\x{4E26}' . +'\x{4E27}\x{4E28}\x{4E2A}\x{4E2B}\x{4E2C}\x{4E2D}\x{4E2E}\x{4E2F}\x{4E30}' . +'\x{4E31}\x{4E32}\x{4E33}\x{4E34}\x{4E35}\x{4E36}\x{4E37}\x{4E38}\x{4E39}' . +'\x{4E3A}\x{4E3B}\x{4E3C}\x{4E3D}\x{4E3E}\x{4E3F}\x{4E40}\x{4E41}\x{4E42}' . +'\x{4E43}\x{4E44}\x{4E45}\x{4E46}\x{4E47}\x{4E48}\x{4E49}\x{4E4A}\x{4E4B}' . +'\x{4E4C}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E50}\x{4E51}\x{4E52}\x{4E53}\x{4E54}' . +'\x{4E56}\x{4E57}\x{4E58}\x{4E59}\x{4E5A}\x{4E5B}\x{4E5C}\x{4E5D}\x{4E5E}' . +'\x{4E5F}\x{4E60}\x{4E61}\x{4E62}\x{4E63}\x{4E64}\x{4E65}\x{4E66}\x{4E67}' . +'\x{4E69}\x{4E6A}\x{4E6B}\x{4E6C}\x{4E6D}\x{4E6E}\x{4E6F}\x{4E70}\x{4E71}' . +'\x{4E72}\x{4E73}\x{4E74}\x{4E75}\x{4E76}\x{4E77}\x{4E78}\x{4E7A}\x{4E7B}' . +'\x{4E7C}\x{4E7D}\x{4E7E}\x{4E7F}\x{4E80}\x{4E81}\x{4E82}\x{4E83}\x{4E84}' . +'\x{4E85}\x{4E86}\x{4E87}\x{4E88}\x{4E89}\x{4E8B}\x{4E8C}\x{4E8D}\x{4E8E}' . +'\x{4E8F}\x{4E90}\x{4E91}\x{4E92}\x{4E93}\x{4E94}\x{4E95}\x{4E97}\x{4E98}' . +'\x{4E99}\x{4E9A}\x{4E9B}\x{4E9C}\x{4E9D}\x{4E9E}\x{4E9F}\x{4EA0}\x{4EA1}' . +'\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA7}\x{4EA8}\x{4EA9}\x{4EAA}\x{4EAB}' . +'\x{4EAC}\x{4EAD}\x{4EAE}\x{4EAF}\x{4EB0}\x{4EB1}\x{4EB2}\x{4EB3}\x{4EB4}' . +'\x{4EB5}\x{4EB6}\x{4EB7}\x{4EB8}\x{4EB9}\x{4EBA}\x{4EBB}\x{4EBD}\x{4EBE}' . +'\x{4EBF}\x{4EC0}\x{4EC1}\x{4EC2}\x{4EC3}\x{4EC4}\x{4EC5}\x{4EC6}\x{4EC7}' . +'\x{4EC8}\x{4EC9}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED0}\x{4ED1}' . +'\x{4ED2}\x{4ED3}\x{4ED4}\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDA}' . +'\x{4EDB}\x{4EDC}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE0}\x{4EE1}\x{4EE2}\x{4EE3}' . +'\x{4EE4}\x{4EE5}\x{4EE6}\x{4EE8}\x{4EE9}\x{4EEA}\x{4EEB}\x{4EEC}\x{4EEF}' . +'\x{4EF0}\x{4EF1}\x{4EF2}\x{4EF3}\x{4EF4}\x{4EF5}\x{4EF6}\x{4EF7}\x{4EFB}' . +'\x{4EFD}\x{4EFF}\x{4F00}\x{4F01}\x{4F02}\x{4F03}\x{4F04}\x{4F05}\x{4F06}' . +'\x{4F08}\x{4F09}\x{4F0A}\x{4F0B}\x{4F0C}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}' . +'\x{4F11}\x{4F12}\x{4F13}\x{4F14}\x{4F15}\x{4F17}\x{4F18}\x{4F19}\x{4F1A}' . +'\x{4F1B}\x{4F1C}\x{4F1D}\x{4F1E}\x{4F1F}\x{4F20}\x{4F21}\x{4F22}\x{4F23}' . +'\x{4F24}\x{4F25}\x{4F26}\x{4F27}\x{4F29}\x{4F2A}\x{4F2B}\x{4F2C}\x{4F2D}' . +'\x{4F2E}\x{4F2F}\x{4F30}\x{4F32}\x{4F33}\x{4F34}\x{4F36}\x{4F38}\x{4F39}' . +'\x{4F3A}\x{4F3B}\x{4F3C}\x{4F3D}\x{4F3E}\x{4F3F}\x{4F41}\x{4F42}\x{4F43}' . +'\x{4F45}\x{4F46}\x{4F47}\x{4F48}\x{4F49}\x{4F4A}\x{4F4B}\x{4F4C}\x{4F4D}' . +'\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}\x{4F52}\x{4F53}\x{4F54}\x{4F55}\x{4F56}' . +'\x{4F57}\x{4F58}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}\x{4F5F}' . +'\x{4F60}\x{4F61}\x{4F62}\x{4F63}\x{4F64}\x{4F65}\x{4F66}\x{4F67}\x{4F68}' . +'\x{4F69}\x{4F6A}\x{4F6B}\x{4F6C}\x{4F6D}\x{4F6E}\x{4F6F}\x{4F70}\x{4F72}' . +'\x{4F73}\x{4F74}\x{4F75}\x{4F76}\x{4F77}\x{4F78}\x{4F79}\x{4F7A}\x{4F7B}' . +'\x{4F7C}\x{4F7D}\x{4F7E}\x{4F7F}\x{4F80}\x{4F81}\x{4F82}\x{4F83}\x{4F84}' . +'\x{4F85}\x{4F86}\x{4F87}\x{4F88}\x{4F89}\x{4F8A}\x{4F8B}\x{4F8D}\x{4F8F}' . +'\x{4F90}\x{4F91}\x{4F92}\x{4F93}\x{4F94}\x{4F95}\x{4F96}\x{4F97}\x{4F98}' . +'\x{4F99}\x{4F9A}\x{4F9B}\x{4F9C}\x{4F9D}\x{4F9E}\x{4F9F}\x{4FA0}\x{4FA1}' . +'\x{4FA3}\x{4FA4}\x{4FA5}\x{4FA6}\x{4FA7}\x{4FA8}\x{4FA9}\x{4FAA}\x{4FAB}' . +'\x{4FAC}\x{4FAE}\x{4FAF}\x{4FB0}\x{4FB1}\x{4FB2}\x{4FB3}\x{4FB4}\x{4FB5}' . +'\x{4FB6}\x{4FB7}\x{4FB8}\x{4FB9}\x{4FBA}\x{4FBB}\x{4FBC}\x{4FBE}\x{4FBF}' . +'\x{4FC0}\x{4FC1}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FC5}\x{4FC7}\x{4FC9}\x{4FCA}' . +'\x{4FCB}\x{4FCD}\x{4FCE}\x{4FCF}\x{4FD0}\x{4FD1}\x{4FD2}\x{4FD3}\x{4FD4}' . +'\x{4FD5}\x{4FD6}\x{4FD7}\x{4FD8}\x{4FD9}\x{4FDA}\x{4FDB}\x{4FDC}\x{4FDD}' . +'\x{4FDE}\x{4FDF}\x{4FE0}\x{4FE1}\x{4FE3}\x{4FE4}\x{4FE5}\x{4FE6}\x{4FE7}' . +'\x{4FE8}\x{4FE9}\x{4FEA}\x{4FEB}\x{4FEC}\x{4FED}\x{4FEE}\x{4FEF}\x{4FF0}' . +'\x{4FF1}\x{4FF2}\x{4FF3}\x{4FF4}\x{4FF5}\x{4FF6}\x{4FF7}\x{4FF8}\x{4FF9}' . +'\x{4FFA}\x{4FFB}\x{4FFE}\x{4FFF}\x{5000}\x{5001}\x{5002}\x{5003}\x{5004}' . +'\x{5005}\x{5006}\x{5007}\x{5008}\x{5009}\x{500A}\x{500B}\x{500C}\x{500D}' . +'\x{500E}\x{500F}\x{5011}\x{5012}\x{5013}\x{5014}\x{5015}\x{5016}\x{5017}' . +'\x{5018}\x{5019}\x{501A}\x{501B}\x{501C}\x{501D}\x{501E}\x{501F}\x{5020}' . +'\x{5021}\x{5022}\x{5023}\x{5024}\x{5025}\x{5026}\x{5027}\x{5028}\x{5029}' . +'\x{502A}\x{502B}\x{502C}\x{502D}\x{502E}\x{502F}\x{5030}\x{5031}\x{5032}' . +'\x{5033}\x{5035}\x{5036}\x{5037}\x{5039}\x{503A}\x{503B}\x{503C}\x{503E}' . +'\x{503F}\x{5040}\x{5041}\x{5043}\x{5044}\x{5045}\x{5046}\x{5047}\x{5048}' . +'\x{5049}\x{504A}\x{504B}\x{504C}\x{504D}\x{504E}\x{504F}\x{5051}\x{5053}' . +'\x{5054}\x{5055}\x{5056}\x{5057}\x{5059}\x{505A}\x{505B}\x{505C}\x{505D}' . +'\x{505E}\x{505F}\x{5060}\x{5061}\x{5062}\x{5063}\x{5064}\x{5065}\x{5066}' . +'\x{5067}\x{5068}\x{5069}\x{506A}\x{506B}\x{506C}\x{506D}\x{506E}\x{506F}' . +'\x{5070}\x{5071}\x{5072}\x{5073}\x{5074}\x{5075}\x{5076}\x{5077}\x{5078}' . +'\x{5079}\x{507A}\x{507B}\x{507D}\x{507E}\x{507F}\x{5080}\x{5082}\x{5083}' . +'\x{5084}\x{5085}\x{5086}\x{5087}\x{5088}\x{5089}\x{508A}\x{508B}\x{508C}' . +'\x{508D}\x{508E}\x{508F}\x{5090}\x{5091}\x{5092}\x{5094}\x{5095}\x{5096}' . +'\x{5098}\x{5099}\x{509A}\x{509B}\x{509C}\x{509D}\x{509E}\x{50A2}\x{50A3}' . +'\x{50A4}\x{50A5}\x{50A6}\x{50A7}\x{50A8}\x{50A9}\x{50AA}\x{50AB}\x{50AC}' . +'\x{50AD}\x{50AE}\x{50AF}\x{50B0}\x{50B1}\x{50B2}\x{50B3}\x{50B4}\x{50B5}' . +'\x{50B6}\x{50B7}\x{50B8}\x{50BA}\x{50BB}\x{50BC}\x{50BD}\x{50BE}\x{50BF}' . +'\x{50C0}\x{50C1}\x{50C2}\x{50C4}\x{50C5}\x{50C6}\x{50C7}\x{50C8}\x{50C9}' . +'\x{50CA}\x{50CB}\x{50CC}\x{50CD}\x{50CE}\x{50CF}\x{50D0}\x{50D1}\x{50D2}' . +'\x{50D3}\x{50D4}\x{50D5}\x{50D6}\x{50D7}\x{50D9}\x{50DA}\x{50DB}\x{50DC}' . +'\x{50DD}\x{50DE}\x{50E0}\x{50E3}\x{50E4}\x{50E5}\x{50E6}\x{50E7}\x{50E8}' . +'\x{50E9}\x{50EA}\x{50EC}\x{50ED}\x{50EE}\x{50EF}\x{50F0}\x{50F1}\x{50F2}' . +'\x{50F3}\x{50F5}\x{50F6}\x{50F8}\x{50F9}\x{50FA}\x{50FB}\x{50FC}\x{50FD}' . +'\x{50FE}\x{50FF}\x{5100}\x{5101}\x{5102}\x{5103}\x{5104}\x{5105}\x{5106}' . +'\x{5107}\x{5108}\x{5109}\x{510A}\x{510B}\x{510C}\x{510D}\x{510E}\x{510F}' . +'\x{5110}\x{5111}\x{5112}\x{5113}\x{5114}\x{5115}\x{5116}\x{5117}\x{5118}' . +'\x{5119}\x{511A}\x{511C}\x{511D}\x{511E}\x{511F}\x{5120}\x{5121}\x{5122}' . +'\x{5123}\x{5124}\x{5125}\x{5126}\x{5127}\x{5129}\x{512A}\x{512C}\x{512D}' . +'\x{512E}\x{512F}\x{5130}\x{5131}\x{5132}\x{5133}\x{5134}\x{5135}\x{5136}' . +'\x{5137}\x{5138}\x{5139}\x{513A}\x{513B}\x{513C}\x{513D}\x{513E}\x{513F}' . +'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' . +'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5151}\x{5152}\x{5154}\x{5155}' . +'\x{5156}\x{5157}\x{5159}\x{515A}\x{515B}\x{515C}\x{515D}\x{515E}\x{515F}' . +'\x{5161}\x{5162}\x{5163}\x{5165}\x{5166}\x{5167}\x{5168}\x{5169}\x{516A}' . +'\x{516B}\x{516C}\x{516D}\x{516E}\x{516F}\x{5170}\x{5171}\x{5173}\x{5174}' . +'\x{5175}\x{5176}\x{5177}\x{5178}\x{5179}\x{517A}\x{517B}\x{517C}\x{517D}' . +'\x{517F}\x{5180}\x{5181}\x{5182}\x{5185}\x{5186}\x{5187}\x{5188}\x{5189}' . +'\x{518A}\x{518B}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}\x{5193}' . +'\x{5194}\x{5195}\x{5196}\x{5197}\x{5198}\x{5199}\x{519A}\x{519B}\x{519C}' . +'\x{519D}\x{519E}\x{519F}\x{51A0}\x{51A2}\x{51A4}\x{51A5}\x{51A6}\x{51A7}' . +'\x{51A8}\x{51AA}\x{51AB}\x{51AC}\x{51AE}\x{51AF}\x{51B0}\x{51B1}\x{51B2}' . +'\x{51B3}\x{51B5}\x{51B6}\x{51B7}\x{51B9}\x{51BB}\x{51BC}\x{51BD}\x{51BE}' . +'\x{51BF}\x{51C0}\x{51C1}\x{51C3}\x{51C4}\x{51C5}\x{51C6}\x{51C7}\x{51C8}' . +'\x{51C9}\x{51CA}\x{51CB}\x{51CC}\x{51CD}\x{51CE}\x{51CF}\x{51D0}\x{51D1}' . +'\x{51D4}\x{51D5}\x{51D6}\x{51D7}\x{51D8}\x{51D9}\x{51DA}\x{51DB}\x{51DC}' . +'\x{51DD}\x{51DE}\x{51E0}\x{51E1}\x{51E2}\x{51E3}\x{51E4}\x{51E5}\x{51E7}' . +'\x{51E8}\x{51E9}\x{51EA}\x{51EB}\x{51ED}\x{51EF}\x{51F0}\x{51F1}\x{51F3}' . +'\x{51F4}\x{51F5}\x{51F6}\x{51F7}\x{51F8}\x{51F9}\x{51FA}\x{51FB}\x{51FC}' . +'\x{51FD}\x{51FE}\x{51FF}\x{5200}\x{5201}\x{5202}\x{5203}\x{5204}\x{5205}' . +'\x{5206}\x{5207}\x{5208}\x{5209}\x{520A}\x{520B}\x{520C}\x{520D}\x{520E}' . +'\x{520F}\x{5210}\x{5211}\x{5212}\x{5213}\x{5214}\x{5215}\x{5216}\x{5217}' . +'\x{5218}\x{5219}\x{521A}\x{521B}\x{521C}\x{521D}\x{521E}\x{521F}\x{5220}' . +'\x{5221}\x{5222}\x{5223}\x{5224}\x{5225}\x{5226}\x{5228}\x{5229}\x{522A}' . +'\x{522B}\x{522C}\x{522D}\x{522E}\x{522F}\x{5230}\x{5231}\x{5232}\x{5233}' . +'\x{5234}\x{5235}\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{523C}' . +'\x{523D}\x{523E}\x{523F}\x{5240}\x{5241}\x{5242}\x{5243}\x{5244}\x{5245}' . +'\x{5246}\x{5247}\x{5248}\x{5249}\x{524A}\x{524B}\x{524C}\x{524D}\x{524E}' . +'\x{5250}\x{5251}\x{5252}\x{5254}\x{5255}\x{5256}\x{5257}\x{5258}\x{5259}' . +'\x{525A}\x{525B}\x{525C}\x{525D}\x{525E}\x{525F}\x{5260}\x{5261}\x{5262}' . +'\x{5263}\x{5264}\x{5265}\x{5267}\x{5268}\x{5269}\x{526A}\x{526B}\x{526C}' . +'\x{526D}\x{526E}\x{526F}\x{5270}\x{5272}\x{5273}\x{5274}\x{5275}\x{5276}' . +'\x{5277}\x{5278}\x{527A}\x{527B}\x{527C}\x{527D}\x{527E}\x{527F}\x{5280}' . +'\x{5281}\x{5282}\x{5283}\x{5284}\x{5286}\x{5287}\x{5288}\x{5289}\x{528A}' . +'\x{528B}\x{528C}\x{528D}\x{528F}\x{5290}\x{5291}\x{5292}\x{5293}\x{5294}' . +'\x{5295}\x{5296}\x{5297}\x{5298}\x{5299}\x{529A}\x{529B}\x{529C}\x{529D}' . +'\x{529E}\x{529F}\x{52A0}\x{52A1}\x{52A2}\x{52A3}\x{52A5}\x{52A6}\x{52A7}' . +'\x{52A8}\x{52A9}\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52AE}\x{52AF}\x{52B0}' . +'\x{52B1}\x{52B2}\x{52B3}\x{52B4}\x{52B5}\x{52B6}\x{52B7}\x{52B8}\x{52B9}' . +'\x{52BA}\x{52BB}\x{52BC}\x{52BD}\x{52BE}\x{52BF}\x{52C0}\x{52C1}\x{52C2}' . +'\x{52C3}\x{52C6}\x{52C7}\x{52C9}\x{52CA}\x{52CB}\x{52CD}\x{52CF}\x{52D0}' . +'\x{52D2}\x{52D3}\x{52D5}\x{52D6}\x{52D7}\x{52D8}\x{52D9}\x{52DA}\x{52DB}' . +'\x{52DC}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}\x{52E4}\x{52E6}' . +'\x{52E7}\x{52E8}\x{52E9}\x{52EA}\x{52EB}\x{52EC}\x{52ED}\x{52EF}\x{52F0}' . +'\x{52F1}\x{52F2}\x{52F3}\x{52F4}\x{52F5}\x{52F6}\x{52F7}\x{52F8}\x{52F9}' . +'\x{52FA}\x{52FB}\x{52FC}\x{52FD}\x{52FE}\x{52FF}\x{5300}\x{5301}\x{5302}' . +'\x{5305}\x{5306}\x{5307}\x{5308}\x{5309}\x{530A}\x{530B}\x{530C}\x{530D}' . +'\x{530E}\x{530F}\x{5310}\x{5311}\x{5312}\x{5313}\x{5314}\x{5315}\x{5316}' . +'\x{5317}\x{5319}\x{531A}\x{531C}\x{531D}\x{531F}\x{5320}\x{5321}\x{5322}' . +'\x{5323}\x{5324}\x{5325}\x{5326}\x{5328}\x{532A}\x{532B}\x{532C}\x{532D}' . +'\x{532E}\x{532F}\x{5330}\x{5331}\x{5333}\x{5334}\x{5337}\x{5339}\x{533A}' . +'\x{533B}\x{533C}\x{533D}\x{533E}\x{533F}\x{5340}\x{5341}\x{5343}\x{5344}' . +'\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}\x{534A}\x{534B}\x{534C}\x{534D}' . +'\x{534E}\x{534F}\x{5350}\x{5351}\x{5352}\x{5353}\x{5354}\x{5355}\x{5356}' . +'\x{5357}\x{5358}\x{5359}\x{535A}\x{535C}\x{535E}\x{535F}\x{5360}\x{5361}' . +'\x{5362}\x{5363}\x{5364}\x{5365}\x{5366}\x{5367}\x{5369}\x{536B}\x{536C}' . +'\x{536E}\x{536F}\x{5370}\x{5371}\x{5372}\x{5373}\x{5374}\x{5375}\x{5376}' . +'\x{5377}\x{5378}\x{5379}\x{537A}\x{537B}\x{537C}\x{537D}\x{537E}\x{537F}' . +'\x{5381}\x{5382}\x{5383}\x{5384}\x{5385}\x{5386}\x{5387}\x{5388}\x{5389}' . +'\x{538A}\x{538B}\x{538C}\x{538D}\x{538E}\x{538F}\x{5390}\x{5391}\x{5392}' . +'\x{5393}\x{5394}\x{5395}\x{5396}\x{5397}\x{5398}\x{5399}\x{539A}\x{539B}' . +'\x{539C}\x{539D}\x{539E}\x{539F}\x{53A0}\x{53A2}\x{53A3}\x{53A4}\x{53A5}' . +'\x{53A6}\x{53A7}\x{53A8}\x{53A9}\x{53AC}\x{53AD}\x{53AE}\x{53B0}\x{53B1}' . +'\x{53B2}\x{53B3}\x{53B4}\x{53B5}\x{53B6}\x{53B7}\x{53B8}\x{53B9}\x{53BB}' . +'\x{53BC}\x{53BD}\x{53BE}\x{53BF}\x{53C0}\x{53C1}\x{53C2}\x{53C3}\x{53C4}' . +'\x{53C6}\x{53C7}\x{53C8}\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}' . +'\x{53D0}\x{53D1}\x{53D2}\x{53D3}\x{53D4}\x{53D5}\x{53D6}\x{53D7}\x{53D8}' . +'\x{53D9}\x{53DB}\x{53DC}\x{53DF}\x{53E0}\x{53E1}\x{53E2}\x{53E3}\x{53E4}' . +'\x{53E5}\x{53E6}\x{53E8}\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}' . +'\x{53EF}\x{53F0}\x{53F1}\x{53F2}\x{53F3}\x{53F4}\x{53F5}\x{53F6}\x{53F7}' . +'\x{53F8}\x{53F9}\x{53FA}\x{53FB}\x{53FC}\x{53FD}\x{53FE}\x{5401}\x{5402}' . +'\x{5403}\x{5404}\x{5405}\x{5406}\x{5407}\x{5408}\x{5409}\x{540A}\x{540B}' . +'\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}\x{5411}\x{5412}\x{5413}\x{5414}' . +'\x{5415}\x{5416}\x{5417}\x{5418}\x{5419}\x{541B}\x{541C}\x{541D}\x{541E}' . +'\x{541F}\x{5420}\x{5421}\x{5423}\x{5424}\x{5425}\x{5426}\x{5427}\x{5428}' . +'\x{5429}\x{542A}\x{542B}\x{542C}\x{542D}\x{542E}\x{542F}\x{5430}\x{5431}' . +'\x{5432}\x{5433}\x{5434}\x{5435}\x{5436}\x{5437}\x{5438}\x{5439}\x{543A}' . +'\x{543B}\x{543C}\x{543D}\x{543E}\x{543F}\x{5440}\x{5441}\x{5442}\x{5443}' . +'\x{5444}\x{5445}\x{5446}\x{5447}\x{5448}\x{5449}\x{544A}\x{544B}\x{544D}' . +'\x{544E}\x{544F}\x{5450}\x{5451}\x{5452}\x{5453}\x{5454}\x{5455}\x{5456}' . +'\x{5457}\x{5458}\x{5459}\x{545A}\x{545B}\x{545C}\x{545E}\x{545F}\x{5460}' . +'\x{5461}\x{5462}\x{5463}\x{5464}\x{5465}\x{5466}\x{5467}\x{5468}\x{546A}' . +'\x{546B}\x{546C}\x{546D}\x{546E}\x{546F}\x{5470}\x{5471}\x{5472}\x{5473}' . +'\x{5474}\x{5475}\x{5476}\x{5477}\x{5478}\x{5479}\x{547A}\x{547B}\x{547C}' . +'\x{547D}\x{547E}\x{547F}\x{5480}\x{5481}\x{5482}\x{5483}\x{5484}\x{5485}' . +'\x{5486}\x{5487}\x{5488}\x{5489}\x{548B}\x{548C}\x{548D}\x{548E}\x{548F}' . +'\x{5490}\x{5491}\x{5492}\x{5493}\x{5494}\x{5495}\x{5496}\x{5497}\x{5498}' . +'\x{5499}\x{549A}\x{549B}\x{549C}\x{549D}\x{549E}\x{549F}\x{54A0}\x{54A1}' . +'\x{54A2}\x{54A3}\x{54A4}\x{54A5}\x{54A6}\x{54A7}\x{54A8}\x{54A9}\x{54AA}' . +'\x{54AB}\x{54AC}\x{54AD}\x{54AE}\x{54AF}\x{54B0}\x{54B1}\x{54B2}\x{54B3}' . +'\x{54B4}\x{54B6}\x{54B7}\x{54B8}\x{54B9}\x{54BA}\x{54BB}\x{54BC}\x{54BD}' . +'\x{54BE}\x{54BF}\x{54C0}\x{54C1}\x{54C2}\x{54C3}\x{54C4}\x{54C5}\x{54C6}' . +'\x{54C7}\x{54C8}\x{54C9}\x{54CA}\x{54CB}\x{54CC}\x{54CD}\x{54CE}\x{54CF}' . +'\x{54D0}\x{54D1}\x{54D2}\x{54D3}\x{54D4}\x{54D5}\x{54D6}\x{54D7}\x{54D8}' . +'\x{54D9}\x{54DA}\x{54DB}\x{54DC}\x{54DD}\x{54DE}\x{54DF}\x{54E0}\x{54E1}' . +'\x{54E2}\x{54E3}\x{54E4}\x{54E5}\x{54E6}\x{54E7}\x{54E8}\x{54E9}\x{54EA}' . +'\x{54EB}\x{54EC}\x{54ED}\x{54EE}\x{54EF}\x{54F0}\x{54F1}\x{54F2}\x{54F3}' . +'\x{54F4}\x{54F5}\x{54F7}\x{54F8}\x{54F9}\x{54FA}\x{54FB}\x{54FC}\x{54FD}' . +'\x{54FE}\x{54FF}\x{5500}\x{5501}\x{5502}\x{5503}\x{5504}\x{5505}\x{5506}' . +'\x{5507}\x{5508}\x{5509}\x{550A}\x{550B}\x{550C}\x{550D}\x{550E}\x{550F}' . +'\x{5510}\x{5511}\x{5512}\x{5513}\x{5514}\x{5516}\x{5517}\x{551A}\x{551B}' . +'\x{551C}\x{551D}\x{551E}\x{551F}\x{5520}\x{5521}\x{5522}\x{5523}\x{5524}' . +'\x{5525}\x{5526}\x{5527}\x{5528}\x{5529}\x{552A}\x{552B}\x{552C}\x{552D}' . +'\x{552E}\x{552F}\x{5530}\x{5531}\x{5532}\x{5533}\x{5534}\x{5535}\x{5536}' . +'\x{5537}\x{5538}\x{5539}\x{553A}\x{553B}\x{553C}\x{553D}\x{553E}\x{553F}' . +'\x{5540}\x{5541}\x{5542}\x{5543}\x{5544}\x{5545}\x{5546}\x{5548}\x{5549}' . +'\x{554A}\x{554B}\x{554C}\x{554D}\x{554E}\x{554F}\x{5550}\x{5551}\x{5552}' . +'\x{5553}\x{5554}\x{5555}\x{5556}\x{5557}\x{5558}\x{5559}\x{555A}\x{555B}' . +'\x{555C}\x{555D}\x{555E}\x{555F}\x{5561}\x{5562}\x{5563}\x{5564}\x{5565}' . +'\x{5566}\x{5567}\x{5568}\x{5569}\x{556A}\x{556B}\x{556C}\x{556D}\x{556E}' . +'\x{556F}\x{5570}\x{5571}\x{5572}\x{5573}\x{5574}\x{5575}\x{5576}\x{5577}' . +'\x{5578}\x{5579}\x{557B}\x{557C}\x{557D}\x{557E}\x{557F}\x{5580}\x{5581}' . +'\x{5582}\x{5583}\x{5584}\x{5585}\x{5586}\x{5587}\x{5588}\x{5589}\x{558A}' . +'\x{558B}\x{558C}\x{558D}\x{558E}\x{558F}\x{5590}\x{5591}\x{5592}\x{5593}' . +'\x{5594}\x{5595}\x{5596}\x{5597}\x{5598}\x{5599}\x{559A}\x{559B}\x{559C}' . +'\x{559D}\x{559E}\x{559F}\x{55A0}\x{55A1}\x{55A2}\x{55A3}\x{55A4}\x{55A5}' . +'\x{55A6}\x{55A7}\x{55A8}\x{55A9}\x{55AA}\x{55AB}\x{55AC}\x{55AD}\x{55AE}' . +'\x{55AF}\x{55B0}\x{55B1}\x{55B2}\x{55B3}\x{55B4}\x{55B5}\x{55B6}\x{55B7}' . +'\x{55B8}\x{55B9}\x{55BA}\x{55BB}\x{55BC}\x{55BD}\x{55BE}\x{55BF}\x{55C0}' . +'\x{55C1}\x{55C2}\x{55C3}\x{55C4}\x{55C5}\x{55C6}\x{55C7}\x{55C8}\x{55C9}' . +'\x{55CA}\x{55CB}\x{55CC}\x{55CD}\x{55CE}\x{55CF}\x{55D0}\x{55D1}\x{55D2}' . +'\x{55D3}\x{55D4}\x{55D5}\x{55D6}\x{55D7}\x{55D8}\x{55D9}\x{55DA}\x{55DB}' . +'\x{55DC}\x{55DD}\x{55DE}\x{55DF}\x{55E1}\x{55E2}\x{55E3}\x{55E4}\x{55E5}' . +'\x{55E6}\x{55E7}\x{55E8}\x{55E9}\x{55EA}\x{55EB}\x{55EC}\x{55ED}\x{55EE}' . +'\x{55EF}\x{55F0}\x{55F1}\x{55F2}\x{55F3}\x{55F4}\x{55F5}\x{55F6}\x{55F7}' . +'\x{55F9}\x{55FA}\x{55FB}\x{55FC}\x{55FD}\x{55FE}\x{55FF}\x{5600}\x{5601}' . +'\x{5602}\x{5603}\x{5604}\x{5606}\x{5607}\x{5608}\x{5609}\x{560C}\x{560D}' . +'\x{560E}\x{560F}\x{5610}\x{5611}\x{5612}\x{5613}\x{5614}\x{5615}\x{5616}' . +'\x{5617}\x{5618}\x{5619}\x{561A}\x{561B}\x{561C}\x{561D}\x{561E}\x{561F}' . +'\x{5621}\x{5622}\x{5623}\x{5624}\x{5625}\x{5626}\x{5627}\x{5628}\x{5629}' . +'\x{562A}\x{562C}\x{562D}\x{562E}\x{562F}\x{5630}\x{5631}\x{5632}\x{5633}' . +'\x{5634}\x{5635}\x{5636}\x{5638}\x{5639}\x{563A}\x{563B}\x{563D}\x{563E}' . +'\x{563F}\x{5640}\x{5641}\x{5642}\x{5643}\x{5645}\x{5646}\x{5647}\x{5648}' . +'\x{5649}\x{564A}\x{564C}\x{564D}\x{564E}\x{564F}\x{5650}\x{5652}\x{5653}' . +'\x{5654}\x{5655}\x{5657}\x{5658}\x{5659}\x{565A}\x{565B}\x{565C}\x{565D}' . +'\x{565E}\x{5660}\x{5662}\x{5663}\x{5664}\x{5665}\x{5666}\x{5667}\x{5668}' . +'\x{5669}\x{566A}\x{566B}\x{566C}\x{566D}\x{566E}\x{566F}\x{5670}\x{5671}' . +'\x{5672}\x{5673}\x{5674}\x{5676}\x{5677}\x{5678}\x{5679}\x{567A}\x{567B}' . +'\x{567C}\x{567E}\x{567F}\x{5680}\x{5681}\x{5682}\x{5683}\x{5684}\x{5685}' . +'\x{5686}\x{5687}\x{568A}\x{568C}\x{568D}\x{568E}\x{568F}\x{5690}\x{5691}' . +'\x{5692}\x{5693}\x{5694}\x{5695}\x{5697}\x{5698}\x{5699}\x{569A}\x{569B}' . +'\x{569C}\x{569D}\x{569F}\x{56A0}\x{56A1}\x{56A3}\x{56A4}\x{56A5}\x{56A6}' . +'\x{56A7}\x{56A8}\x{56A9}\x{56AA}\x{56AB}\x{56AC}\x{56AD}\x{56AE}\x{56AF}' . +'\x{56B0}\x{56B1}\x{56B2}\x{56B3}\x{56B4}\x{56B5}\x{56B6}\x{56B7}\x{56B8}' . +'\x{56B9}\x{56BB}\x{56BC}\x{56BD}\x{56BE}\x{56BF}\x{56C0}\x{56C1}\x{56C2}' . +'\x{56C3}\x{56C4}\x{56C5}\x{56C6}\x{56C7}\x{56C8}\x{56C9}\x{56CA}\x{56CB}' . +'\x{56CC}\x{56CD}\x{56CE}\x{56D0}\x{56D1}\x{56D2}\x{56D3}\x{56D4}\x{56D5}' . +'\x{56D6}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DC}\x{56DD}\x{56DE}\x{56DF}' . +'\x{56E0}\x{56E1}\x{56E2}\x{56E3}\x{56E4}\x{56E5}\x{56E7}\x{56E8}\x{56E9}' . +'\x{56EA}\x{56EB}\x{56EC}\x{56ED}\x{56EE}\x{56EF}\x{56F0}\x{56F1}\x{56F2}' . +'\x{56F3}\x{56F4}\x{56F5}\x{56F7}\x{56F9}\x{56FA}\x{56FD}\x{56FE}\x{56FF}' . +'\x{5700}\x{5701}\x{5702}\x{5703}\x{5704}\x{5706}\x{5707}\x{5708}\x{5709}' . +'\x{570A}\x{570B}\x{570C}\x{570D}\x{570E}\x{570F}\x{5710}\x{5712}\x{5713}' . +'\x{5714}\x{5715}\x{5716}\x{5718}\x{5719}\x{571A}\x{571B}\x{571C}\x{571D}' . +'\x{571E}\x{571F}\x{5720}\x{5722}\x{5723}\x{5725}\x{5726}\x{5727}\x{5728}' . +'\x{5729}\x{572A}\x{572B}\x{572C}\x{572D}\x{572E}\x{572F}\x{5730}\x{5731}' . +'\x{5732}\x{5733}\x{5734}\x{5735}\x{5736}\x{5737}\x{5738}\x{5739}\x{573A}' . +'\x{573B}\x{573C}\x{573E}\x{573F}\x{5740}\x{5741}\x{5742}\x{5744}\x{5745}' . +'\x{5746}\x{5747}\x{5749}\x{574A}\x{574B}\x{574C}\x{574D}\x{574E}\x{574F}' . +'\x{5750}\x{5751}\x{5752}\x{5753}\x{5754}\x{5757}\x{5759}\x{575A}\x{575B}' . +'\x{575C}\x{575D}\x{575E}\x{575F}\x{5760}\x{5761}\x{5762}\x{5764}\x{5765}' . +'\x{5766}\x{5767}\x{5768}\x{5769}\x{576A}\x{576B}\x{576C}\x{576D}\x{576F}' . +'\x{5770}\x{5771}\x{5772}\x{5773}\x{5774}\x{5775}\x{5776}\x{5777}\x{5779}' . +'\x{577A}\x{577B}\x{577C}\x{577D}\x{577E}\x{577F}\x{5780}\x{5782}\x{5783}' . +'\x{5784}\x{5785}\x{5786}\x{5788}\x{5789}\x{578A}\x{578B}\x{578C}\x{578D}' . +'\x{578E}\x{578F}\x{5790}\x{5791}\x{5792}\x{5793}\x{5794}\x{5795}\x{5797}' . +'\x{5798}\x{5799}\x{579A}\x{579B}\x{579C}\x{579D}\x{579E}\x{579F}\x{57A0}' . +'\x{57A1}\x{57A2}\x{57A3}\x{57A4}\x{57A5}\x{57A6}\x{57A7}\x{57A9}\x{57AA}' . +'\x{57AB}\x{57AC}\x{57AD}\x{57AE}\x{57AF}\x{57B0}\x{57B1}\x{57B2}\x{57B3}' . +'\x{57B4}\x{57B5}\x{57B6}\x{57B7}\x{57B8}\x{57B9}\x{57BA}\x{57BB}\x{57BC}' . +'\x{57BD}\x{57BE}\x{57BF}\x{57C0}\x{57C1}\x{57C2}\x{57C3}\x{57C4}\x{57C5}' . +'\x{57C6}\x{57C7}\x{57C8}\x{57C9}\x{57CB}\x{57CC}\x{57CD}\x{57CE}\x{57CF}' . +'\x{57D0}\x{57D2}\x{57D3}\x{57D4}\x{57D5}\x{57D6}\x{57D8}\x{57D9}\x{57DA}' . +'\x{57DC}\x{57DD}\x{57DF}\x{57E0}\x{57E1}\x{57E2}\x{57E3}\x{57E4}\x{57E5}' . +'\x{57E6}\x{57E7}\x{57E8}\x{57E9}\x{57EA}\x{57EB}\x{57EC}\x{57ED}\x{57EE}' . +'\x{57EF}\x{57F0}\x{57F1}\x{57F2}\x{57F3}\x{57F4}\x{57F5}\x{57F6}\x{57F7}' . +'\x{57F8}\x{57F9}\x{57FA}\x{57FB}\x{57FC}\x{57FD}\x{57FE}\x{57FF}\x{5800}' . +'\x{5801}\x{5802}\x{5803}\x{5804}\x{5805}\x{5806}\x{5807}\x{5808}\x{5809}' . +'\x{580A}\x{580B}\x{580C}\x{580D}\x{580E}\x{580F}\x{5810}\x{5811}\x{5812}' . +'\x{5813}\x{5814}\x{5815}\x{5816}\x{5819}\x{581A}\x{581B}\x{581C}\x{581D}' . +'\x{581E}\x{581F}\x{5820}\x{5821}\x{5822}\x{5823}\x{5824}\x{5825}\x{5826}' . +'\x{5827}\x{5828}\x{5829}\x{582A}\x{582B}\x{582C}\x{582D}\x{582E}\x{582F}' . +'\x{5830}\x{5831}\x{5832}\x{5833}\x{5834}\x{5835}\x{5836}\x{5837}\x{5838}' . +'\x{5839}\x{583A}\x{583B}\x{583C}\x{583D}\x{583E}\x{583F}\x{5840}\x{5842}' . +'\x{5843}\x{5844}\x{5845}\x{5846}\x{5847}\x{5848}\x{5849}\x{584A}\x{584B}' . +'\x{584C}\x{584D}\x{584E}\x{584F}\x{5851}\x{5852}\x{5853}\x{5854}\x{5855}' . +'\x{5857}\x{5858}\x{5859}\x{585A}\x{585B}\x{585C}\x{585D}\x{585E}\x{585F}' . +'\x{5861}\x{5862}\x{5863}\x{5864}\x{5865}\x{5868}\x{5869}\x{586A}\x{586B}' . +'\x{586C}\x{586D}\x{586E}\x{586F}\x{5870}\x{5871}\x{5872}\x{5873}\x{5874}' . +'\x{5875}\x{5876}\x{5878}\x{5879}\x{587A}\x{587B}\x{587C}\x{587D}\x{587E}' . +'\x{587F}\x{5880}\x{5881}\x{5882}\x{5883}\x{5884}\x{5885}\x{5886}\x{5887}' . +'\x{5888}\x{5889}\x{588A}\x{588B}\x{588C}\x{588D}\x{588E}\x{588F}\x{5890}' . +'\x{5891}\x{5892}\x{5893}\x{5894}\x{5896}\x{5897}\x{5898}\x{5899}\x{589A}' . +'\x{589B}\x{589C}\x{589D}\x{589E}\x{589F}\x{58A0}\x{58A1}\x{58A2}\x{58A3}' . +'\x{58A4}\x{58A5}\x{58A6}\x{58A7}\x{58A8}\x{58A9}\x{58AB}\x{58AC}\x{58AD}' . +'\x{58AE}\x{58AF}\x{58B0}\x{58B1}\x{58B2}\x{58B3}\x{58B4}\x{58B7}\x{58B8}' . +'\x{58B9}\x{58BA}\x{58BB}\x{58BC}\x{58BD}\x{58BE}\x{58BF}\x{58C1}\x{58C2}' . +'\x{58C5}\x{58C6}\x{58C7}\x{58C8}\x{58C9}\x{58CA}\x{58CB}\x{58CE}\x{58CF}' . +'\x{58D1}\x{58D2}\x{58D3}\x{58D4}\x{58D5}\x{58D6}\x{58D7}\x{58D8}\x{58D9}' . +'\x{58DA}\x{58DB}\x{58DD}\x{58DE}\x{58DF}\x{58E0}\x{58E2}\x{58E3}\x{58E4}' . +'\x{58E5}\x{58E7}\x{58E8}\x{58E9}\x{58EA}\x{58EB}\x{58EC}\x{58ED}\x{58EE}' . +'\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F3}\x{58F4}\x{58F6}\x{58F7}\x{58F8}' . +'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{58FE}\x{58FF}\x{5900}\x{5902}' . +'\x{5903}\x{5904}\x{5906}\x{5907}\x{5909}\x{590A}\x{590B}\x{590C}\x{590D}' . +'\x{590E}\x{590F}\x{5910}\x{5912}\x{5914}\x{5915}\x{5916}\x{5917}\x{5918}' . +'\x{5919}\x{591A}\x{591B}\x{591C}\x{591D}\x{591E}\x{591F}\x{5920}\x{5921}' . +'\x{5922}\x{5924}\x{5925}\x{5926}\x{5927}\x{5928}\x{5929}\x{592A}\x{592B}' . +'\x{592C}\x{592D}\x{592E}\x{592F}\x{5930}\x{5931}\x{5932}\x{5934}\x{5935}' . +'\x{5937}\x{5938}\x{5939}\x{593A}\x{593B}\x{593C}\x{593D}\x{593E}\x{593F}' . +'\x{5940}\x{5941}\x{5942}\x{5943}\x{5944}\x{5945}\x{5946}\x{5947}\x{5948}' . +'\x{5949}\x{594A}\x{594B}\x{594C}\x{594D}\x{594E}\x{594F}\x{5950}\x{5951}' . +'\x{5952}\x{5953}\x{5954}\x{5955}\x{5956}\x{5957}\x{5958}\x{595A}\x{595C}' . +'\x{595D}\x{595E}\x{595F}\x{5960}\x{5961}\x{5962}\x{5963}\x{5964}\x{5965}' . +'\x{5966}\x{5967}\x{5968}\x{5969}\x{596A}\x{596B}\x{596C}\x{596D}\x{596E}' . +'\x{596F}\x{5970}\x{5971}\x{5972}\x{5973}\x{5974}\x{5975}\x{5976}\x{5977}' . +'\x{5978}\x{5979}\x{597A}\x{597B}\x{597C}\x{597D}\x{597E}\x{597F}\x{5980}' . +'\x{5981}\x{5982}\x{5983}\x{5984}\x{5985}\x{5986}\x{5987}\x{5988}\x{5989}' . +'\x{598A}\x{598B}\x{598C}\x{598D}\x{598E}\x{598F}\x{5990}\x{5991}\x{5992}' . +'\x{5993}\x{5994}\x{5995}\x{5996}\x{5997}\x{5998}\x{5999}\x{599A}\x{599C}' . +'\x{599D}\x{599E}\x{599F}\x{59A0}\x{59A1}\x{59A2}\x{59A3}\x{59A4}\x{59A5}' . +'\x{59A6}\x{59A7}\x{59A8}\x{59A9}\x{59AA}\x{59AB}\x{59AC}\x{59AD}\x{59AE}' . +'\x{59AF}\x{59B0}\x{59B1}\x{59B2}\x{59B3}\x{59B4}\x{59B5}\x{59B6}\x{59B8}' . +'\x{59B9}\x{59BA}\x{59BB}\x{59BC}\x{59BD}\x{59BE}\x{59BF}\x{59C0}\x{59C1}' . +'\x{59C2}\x{59C3}\x{59C4}\x{59C5}\x{59C6}\x{59C7}\x{59C8}\x{59C9}\x{59CA}' . +'\x{59CB}\x{59CC}\x{59CD}\x{59CE}\x{59CF}\x{59D0}\x{59D1}\x{59D2}\x{59D3}' . +'\x{59D4}\x{59D5}\x{59D6}\x{59D7}\x{59D8}\x{59D9}\x{59DA}\x{59DB}\x{59DC}' . +'\x{59DD}\x{59DE}\x{59DF}\x{59E0}\x{59E1}\x{59E2}\x{59E3}\x{59E4}\x{59E5}' . +'\x{59E6}\x{59E8}\x{59E9}\x{59EA}\x{59EB}\x{59EC}\x{59ED}\x{59EE}\x{59EF}' . +'\x{59F0}\x{59F1}\x{59F2}\x{59F3}\x{59F4}\x{59F5}\x{59F6}\x{59F7}\x{59F8}' . +'\x{59F9}\x{59FA}\x{59FB}\x{59FC}\x{59FD}\x{59FE}\x{59FF}\x{5A00}\x{5A01}' . +'\x{5A02}\x{5A03}\x{5A04}\x{5A05}\x{5A06}\x{5A07}\x{5A08}\x{5A09}\x{5A0A}' . +'\x{5A0B}\x{5A0C}\x{5A0D}\x{5A0E}\x{5A0F}\x{5A10}\x{5A11}\x{5A12}\x{5A13}' . +'\x{5A14}\x{5A15}\x{5A16}\x{5A17}\x{5A18}\x{5A19}\x{5A1A}\x{5A1B}\x{5A1C}' . +'\x{5A1D}\x{5A1E}\x{5A1F}\x{5A20}\x{5A21}\x{5A22}\x{5A23}\x{5A25}\x{5A27}' . +'\x{5A28}\x{5A29}\x{5A2A}\x{5A2B}\x{5A2D}\x{5A2E}\x{5A2F}\x{5A31}\x{5A32}' . +'\x{5A33}\x{5A34}\x{5A35}\x{5A36}\x{5A37}\x{5A38}\x{5A39}\x{5A3A}\x{5A3B}' . +'\x{5A3C}\x{5A3D}\x{5A3E}\x{5A3F}\x{5A40}\x{5A41}\x{5A42}\x{5A43}\x{5A44}' . +'\x{5A45}\x{5A46}\x{5A47}\x{5A48}\x{5A49}\x{5A4A}\x{5A4B}\x{5A4C}\x{5A4D}' . +'\x{5A4E}\x{5A4F}\x{5A50}\x{5A51}\x{5A52}\x{5A53}\x{5A55}\x{5A56}\x{5A57}' . +'\x{5A58}\x{5A5A}\x{5A5B}\x{5A5C}\x{5A5D}\x{5A5E}\x{5A5F}\x{5A60}\x{5A61}' . +'\x{5A62}\x{5A63}\x{5A64}\x{5A65}\x{5A66}\x{5A67}\x{5A68}\x{5A69}\x{5A6A}' . +'\x{5A6B}\x{5A6C}\x{5A6D}\x{5A6E}\x{5A70}\x{5A72}\x{5A73}\x{5A74}\x{5A75}' . +'\x{5A76}\x{5A77}\x{5A78}\x{5A79}\x{5A7A}\x{5A7B}\x{5A7C}\x{5A7D}\x{5A7E}' . +'\x{5A7F}\x{5A80}\x{5A81}\x{5A82}\x{5A83}\x{5A84}\x{5A85}\x{5A86}\x{5A88}' . +'\x{5A89}\x{5A8A}\x{5A8B}\x{5A8C}\x{5A8E}\x{5A8F}\x{5A90}\x{5A91}\x{5A92}' . +'\x{5A93}\x{5A94}\x{5A95}\x{5A96}\x{5A97}\x{5A98}\x{5A99}\x{5A9A}\x{5A9B}' . +'\x{5A9C}\x{5A9D}\x{5A9E}\x{5A9F}\x{5AA0}\x{5AA1}\x{5AA2}\x{5AA3}\x{5AA4}' . +'\x{5AA5}\x{5AA6}\x{5AA7}\x{5AA8}\x{5AA9}\x{5AAA}\x{5AAC}\x{5AAD}\x{5AAE}' . +'\x{5AAF}\x{5AB0}\x{5AB1}\x{5AB2}\x{5AB3}\x{5AB4}\x{5AB5}\x{5AB6}\x{5AB7}' . +'\x{5AB8}\x{5AB9}\x{5ABA}\x{5ABB}\x{5ABC}\x{5ABD}\x{5ABE}\x{5ABF}\x{5AC0}' . +'\x{5AC1}\x{5AC2}\x{5AC3}\x{5AC4}\x{5AC5}\x{5AC6}\x{5AC7}\x{5AC8}\x{5AC9}' . +'\x{5ACA}\x{5ACB}\x{5ACC}\x{5ACD}\x{5ACE}\x{5ACF}\x{5AD1}\x{5AD2}\x{5AD4}' . +'\x{5AD5}\x{5AD6}\x{5AD7}\x{5AD8}\x{5AD9}\x{5ADA}\x{5ADB}\x{5ADC}\x{5ADD}' . +'\x{5ADE}\x{5ADF}\x{5AE0}\x{5AE1}\x{5AE2}\x{5AE3}\x{5AE4}\x{5AE5}\x{5AE6}' . +'\x{5AE7}\x{5AE8}\x{5AE9}\x{5AEA}\x{5AEB}\x{5AEC}\x{5AED}\x{5AEE}\x{5AF1}' . +'\x{5AF2}\x{5AF3}\x{5AF4}\x{5AF5}\x{5AF6}\x{5AF7}\x{5AF8}\x{5AF9}\x{5AFA}' . +'\x{5AFB}\x{5AFC}\x{5AFD}\x{5AFE}\x{5AFF}\x{5B00}\x{5B01}\x{5B02}\x{5B03}' . +'\x{5B04}\x{5B05}\x{5B06}\x{5B07}\x{5B08}\x{5B09}\x{5B0B}\x{5B0C}\x{5B0E}' . +'\x{5B0F}\x{5B10}\x{5B11}\x{5B12}\x{5B13}\x{5B14}\x{5B15}\x{5B16}\x{5B17}' . +'\x{5B18}\x{5B19}\x{5B1A}\x{5B1B}\x{5B1C}\x{5B1D}\x{5B1E}\x{5B1F}\x{5B20}' . +'\x{5B21}\x{5B22}\x{5B23}\x{5B24}\x{5B25}\x{5B26}\x{5B27}\x{5B28}\x{5B29}' . +'\x{5B2A}\x{5B2B}\x{5B2C}\x{5B2D}\x{5B2E}\x{5B2F}\x{5B30}\x{5B31}\x{5B32}' . +'\x{5B33}\x{5B34}\x{5B35}\x{5B36}\x{5B37}\x{5B38}\x{5B3A}\x{5B3B}\x{5B3C}' . +'\x{5B3D}\x{5B3E}\x{5B3F}\x{5B40}\x{5B41}\x{5B42}\x{5B43}\x{5B44}\x{5B45}' . +'\x{5B47}\x{5B48}\x{5B49}\x{5B4A}\x{5B4B}\x{5B4C}\x{5B4D}\x{5B4E}\x{5B50}' . +'\x{5B51}\x{5B53}\x{5B54}\x{5B55}\x{5B56}\x{5B57}\x{5B58}\x{5B59}\x{5B5A}' . +'\x{5B5B}\x{5B5C}\x{5B5D}\x{5B5E}\x{5B5F}\x{5B62}\x{5B63}\x{5B64}\x{5B65}' . +'\x{5B66}\x{5B67}\x{5B68}\x{5B69}\x{5B6A}\x{5B6B}\x{5B6C}\x{5B6D}\x{5B6E}' . +'\x{5B70}\x{5B71}\x{5B72}\x{5B73}\x{5B74}\x{5B75}\x{5B76}\x{5B77}\x{5B78}' . +'\x{5B7A}\x{5B7B}\x{5B7C}\x{5B7D}\x{5B7F}\x{5B80}\x{5B81}\x{5B82}\x{5B83}' . +'\x{5B84}\x{5B85}\x{5B87}\x{5B88}\x{5B89}\x{5B8A}\x{5B8B}\x{5B8C}\x{5B8D}' . +'\x{5B8E}\x{5B8F}\x{5B91}\x{5B92}\x{5B93}\x{5B94}\x{5B95}\x{5B96}\x{5B97}' . +'\x{5B98}\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9E}\x{5B9F}\x{5BA0}' . +'\x{5BA1}\x{5BA2}\x{5BA3}\x{5BA4}\x{5BA5}\x{5BA6}\x{5BA7}\x{5BA8}\x{5BAA}' . +'\x{5BAB}\x{5BAC}\x{5BAD}\x{5BAE}\x{5BAF}\x{5BB0}\x{5BB1}\x{5BB3}\x{5BB4}' . +'\x{5BB5}\x{5BB6}\x{5BB8}\x{5BB9}\x{5BBA}\x{5BBB}\x{5BBD}\x{5BBE}\x{5BBF}' . +'\x{5BC0}\x{5BC1}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BCA}' . +'\x{5BCB}\x{5BCC}\x{5BCD}\x{5BCE}\x{5BCF}\x{5BD0}\x{5BD1}\x{5BD2}\x{5BD3}' . +'\x{5BD4}\x{5BD5}\x{5BD6}\x{5BD8}\x{5BD9}\x{5BDB}\x{5BDC}\x{5BDD}\x{5BDE}' . +'\x{5BDF}\x{5BE0}\x{5BE1}\x{5BE2}\x{5BE3}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}' . +'\x{5BE8}\x{5BE9}\x{5BEA}\x{5BEB}\x{5BEC}\x{5BED}\x{5BEE}\x{5BEF}\x{5BF0}' . +'\x{5BF1}\x{5BF2}\x{5BF3}\x{5BF4}\x{5BF5}\x{5BF6}\x{5BF7}\x{5BF8}\x{5BF9}' . +'\x{5BFA}\x{5BFB}\x{5BFC}\x{5BFD}\x{5BFF}\x{5C01}\x{5C03}\x{5C04}\x{5C05}' . +'\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}\x{5C0B}\x{5C0C}\x{5C0D}\x{5C0E}' . +'\x{5C0F}\x{5C10}\x{5C11}\x{5C12}\x{5C13}\x{5C14}\x{5C15}\x{5C16}\x{5C17}' . +'\x{5C18}\x{5C19}\x{5C1A}\x{5C1C}\x{5C1D}\x{5C1E}\x{5C1F}\x{5C20}\x{5C21}' . +'\x{5C22}\x{5C24}\x{5C25}\x{5C27}\x{5C28}\x{5C2A}\x{5C2B}\x{5C2C}\x{5C2D}' . +'\x{5C2E}\x{5C2F}\x{5C30}\x{5C31}\x{5C32}\x{5C33}\x{5C34}\x{5C35}\x{5C37}' . +'\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}' . +'\x{5C41}\x{5C42}\x{5C43}\x{5C44}\x{5C45}\x{5C46}\x{5C47}\x{5C48}\x{5C49}' . +'\x{5C4A}\x{5C4B}\x{5C4C}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C52}' . +'\x{5C53}\x{5C54}\x{5C55}\x{5C56}\x{5C57}\x{5C58}\x{5C59}\x{5C5B}\x{5C5C}' . +'\x{5C5D}\x{5C5E}\x{5C5F}\x{5C60}\x{5C61}\x{5C62}\x{5C63}\x{5C64}\x{5C65}' . +'\x{5C66}\x{5C67}\x{5C68}\x{5C69}\x{5C6A}\x{5C6B}\x{5C6C}\x{5C6D}\x{5C6E}' . +'\x{5C6F}\x{5C70}\x{5C71}\x{5C72}\x{5C73}\x{5C74}\x{5C75}\x{5C76}\x{5C77}' . +'\x{5C78}\x{5C79}\x{5C7A}\x{5C7B}\x{5C7C}\x{5C7D}\x{5C7E}\x{5C7F}\x{5C80}' . +'\x{5C81}\x{5C82}\x{5C83}\x{5C84}\x{5C86}\x{5C87}\x{5C88}\x{5C89}\x{5C8A}' . +'\x{5C8B}\x{5C8C}\x{5C8D}\x{5C8E}\x{5C8F}\x{5C90}\x{5C91}\x{5C92}\x{5C93}' . +'\x{5C94}\x{5C95}\x{5C96}\x{5C97}\x{5C98}\x{5C99}\x{5C9A}\x{5C9B}\x{5C9C}' . +'\x{5C9D}\x{5C9E}\x{5C9F}\x{5CA0}\x{5CA1}\x{5CA2}\x{5CA3}\x{5CA4}\x{5CA5}' . +'\x{5CA6}\x{5CA7}\x{5CA8}\x{5CA9}\x{5CAA}\x{5CAB}\x{5CAC}\x{5CAD}\x{5CAE}' . +'\x{5CAF}\x{5CB0}\x{5CB1}\x{5CB2}\x{5CB3}\x{5CB5}\x{5CB6}\x{5CB7}\x{5CB8}' . +'\x{5CBA}\x{5CBB}\x{5CBC}\x{5CBD}\x{5CBE}\x{5CBF}\x{5CC1}\x{5CC2}\x{5CC3}' . +'\x{5CC4}\x{5CC5}\x{5CC6}\x{5CC7}\x{5CC8}\x{5CC9}\x{5CCA}\x{5CCB}\x{5CCC}' . +'\x{5CCD}\x{5CCE}\x{5CCF}\x{5CD0}\x{5CD1}\x{5CD2}\x{5CD3}\x{5CD4}\x{5CD6}' . +'\x{5CD7}\x{5CD8}\x{5CD9}\x{5CDA}\x{5CDB}\x{5CDC}\x{5CDE}\x{5CDF}\x{5CE0}' . +'\x{5CE1}\x{5CE2}\x{5CE3}\x{5CE4}\x{5CE5}\x{5CE6}\x{5CE7}\x{5CE8}\x{5CE9}' . +'\x{5CEA}\x{5CEB}\x{5CEC}\x{5CED}\x{5CEE}\x{5CEF}\x{5CF0}\x{5CF1}\x{5CF2}' . +'\x{5CF3}\x{5CF4}\x{5CF6}\x{5CF7}\x{5CF8}\x{5CF9}\x{5CFA}\x{5CFB}\x{5CFC}' . +'\x{5CFD}\x{5CFE}\x{5CFF}\x{5D00}\x{5D01}\x{5D02}\x{5D03}\x{5D04}\x{5D05}' . +'\x{5D06}\x{5D07}\x{5D08}\x{5D09}\x{5D0A}\x{5D0B}\x{5D0C}\x{5D0D}\x{5D0E}' . +'\x{5D0F}\x{5D10}\x{5D11}\x{5D12}\x{5D13}\x{5D14}\x{5D15}\x{5D16}\x{5D17}' . +'\x{5D18}\x{5D19}\x{5D1A}\x{5D1B}\x{5D1C}\x{5D1D}\x{5D1E}\x{5D1F}\x{5D20}' . +'\x{5D21}\x{5D22}\x{5D23}\x{5D24}\x{5D25}\x{5D26}\x{5D27}\x{5D28}\x{5D29}' . +'\x{5D2A}\x{5D2C}\x{5D2D}\x{5D2E}\x{5D30}\x{5D31}\x{5D32}\x{5D33}\x{5D34}' . +'\x{5D35}\x{5D36}\x{5D37}\x{5D38}\x{5D39}\x{5D3A}\x{5D3C}\x{5D3D}\x{5D3E}' . +'\x{5D3F}\x{5D40}\x{5D41}\x{5D42}\x{5D43}\x{5D44}\x{5D45}\x{5D46}\x{5D47}' . +'\x{5D48}\x{5D49}\x{5D4A}\x{5D4B}\x{5D4C}\x{5D4D}\x{5D4E}\x{5D4F}\x{5D50}' . +'\x{5D51}\x{5D52}\x{5D54}\x{5D55}\x{5D56}\x{5D58}\x{5D59}\x{5D5A}\x{5D5B}' . +'\x{5D5D}\x{5D5E}\x{5D5F}\x{5D61}\x{5D62}\x{5D63}\x{5D64}\x{5D65}\x{5D66}' . +'\x{5D67}\x{5D68}\x{5D69}\x{5D6A}\x{5D6B}\x{5D6C}\x{5D6D}\x{5D6E}\x{5D6F}' . +'\x{5D70}\x{5D71}\x{5D72}\x{5D73}\x{5D74}\x{5D75}\x{5D76}\x{5D77}\x{5D78}' . +'\x{5D79}\x{5D7A}\x{5D7B}\x{5D7C}\x{5D7D}\x{5D7E}\x{5D7F}\x{5D80}\x{5D81}' . +'\x{5D82}\x{5D84}\x{5D85}\x{5D86}\x{5D87}\x{5D88}\x{5D89}\x{5D8A}\x{5D8B}' . +'\x{5D8C}\x{5D8D}\x{5D8E}\x{5D8F}\x{5D90}\x{5D91}\x{5D92}\x{5D93}\x{5D94}' . +'\x{5D95}\x{5D97}\x{5D98}\x{5D99}\x{5D9A}\x{5D9B}\x{5D9C}\x{5D9D}\x{5D9E}' . +'\x{5D9F}\x{5DA0}\x{5DA1}\x{5DA2}\x{5DA5}\x{5DA6}\x{5DA7}\x{5DA8}\x{5DA9}' . +'\x{5DAA}\x{5DAC}\x{5DAD}\x{5DAE}\x{5DAF}\x{5DB0}\x{5DB1}\x{5DB2}\x{5DB4}' . +'\x{5DB5}\x{5DB6}\x{5DB7}\x{5DB8}\x{5DBA}\x{5DBB}\x{5DBC}\x{5DBD}\x{5DBE}' . +'\x{5DBF}\x{5DC0}\x{5DC1}\x{5DC2}\x{5DC3}\x{5DC5}\x{5DC6}\x{5DC7}\x{5DC8}' . +'\x{5DC9}\x{5DCA}\x{5DCB}\x{5DCC}\x{5DCD}\x{5DCE}\x{5DCF}\x{5DD0}\x{5DD1}' . +'\x{5DD2}\x{5DD3}\x{5DD4}\x{5DD5}\x{5DD6}\x{5DD8}\x{5DD9}\x{5DDB}\x{5DDD}' . +'\x{5DDE}\x{5DDF}\x{5DE0}\x{5DE1}\x{5DE2}\x{5DE3}\x{5DE4}\x{5DE5}\x{5DE6}' . +'\x{5DE7}\x{5DE8}\x{5DE9}\x{5DEA}\x{5DEB}\x{5DEC}\x{5DED}\x{5DEE}\x{5DEF}' . +'\x{5DF0}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DF8}\x{5DF9}' . +'\x{5DFA}\x{5DFB}\x{5DFC}\x{5DFD}\x{5DFE}\x{5DFF}\x{5E00}\x{5E01}\x{5E02}' . +'\x{5E03}\x{5E04}\x{5E05}\x{5E06}\x{5E07}\x{5E08}\x{5E09}\x{5E0A}\x{5E0B}' . +'\x{5E0C}\x{5E0D}\x{5E0E}\x{5E0F}\x{5E10}\x{5E11}\x{5E13}\x{5E14}\x{5E15}' . +'\x{5E16}\x{5E17}\x{5E18}\x{5E19}\x{5E1A}\x{5E1B}\x{5E1C}\x{5E1D}\x{5E1E}' . +'\x{5E1F}\x{5E20}\x{5E21}\x{5E22}\x{5E23}\x{5E24}\x{5E25}\x{5E26}\x{5E27}' . +'\x{5E28}\x{5E29}\x{5E2A}\x{5E2B}\x{5E2C}\x{5E2D}\x{5E2E}\x{5E2F}\x{5E30}' . +'\x{5E31}\x{5E32}\x{5E33}\x{5E34}\x{5E35}\x{5E36}\x{5E37}\x{5E38}\x{5E39}' . +'\x{5E3A}\x{5E3B}\x{5E3C}\x{5E3D}\x{5E3E}\x{5E40}\x{5E41}\x{5E42}\x{5E43}' . +'\x{5E44}\x{5E45}\x{5E46}\x{5E47}\x{5E49}\x{5E4A}\x{5E4B}\x{5E4C}\x{5E4D}' . +'\x{5E4E}\x{5E4F}\x{5E50}\x{5E52}\x{5E53}\x{5E54}\x{5E55}\x{5E56}\x{5E57}' . +'\x{5E58}\x{5E59}\x{5E5A}\x{5E5B}\x{5E5C}\x{5E5D}\x{5E5E}\x{5E5F}\x{5E60}' . +'\x{5E61}\x{5E62}\x{5E63}\x{5E64}\x{5E65}\x{5E66}\x{5E67}\x{5E68}\x{5E69}' . +'\x{5E6A}\x{5E6B}\x{5E6C}\x{5E6D}\x{5E6E}\x{5E6F}\x{5E70}\x{5E71}\x{5E72}' . +'\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E77}\x{5E78}\x{5E79}\x{5E7A}\x{5E7B}' . +'\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E80}\x{5E81}\x{5E82}\x{5E83}\x{5E84}' . +'\x{5E85}\x{5E86}\x{5E87}\x{5E88}\x{5E89}\x{5E8A}\x{5E8B}\x{5E8C}\x{5E8D}' . +'\x{5E8E}\x{5E8F}\x{5E90}\x{5E91}\x{5E93}\x{5E94}\x{5E95}\x{5E96}\x{5E97}' . +'\x{5E98}\x{5E99}\x{5E9A}\x{5E9B}\x{5E9C}\x{5E9D}\x{5E9E}\x{5E9F}\x{5EA0}' . +'\x{5EA1}\x{5EA2}\x{5EA3}\x{5EA4}\x{5EA5}\x{5EA6}\x{5EA7}\x{5EA8}\x{5EA9}' . +'\x{5EAA}\x{5EAB}\x{5EAC}\x{5EAD}\x{5EAE}\x{5EAF}\x{5EB0}\x{5EB1}\x{5EB2}' . +'\x{5EB3}\x{5EB4}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EB9}\x{5EBB}\x{5EBC}' . +'\x{5EBD}\x{5EBE}\x{5EBF}\x{5EC1}\x{5EC2}\x{5EC3}\x{5EC4}\x{5EC5}\x{5EC6}' . +'\x{5EC7}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECB}\x{5ECC}\x{5ECD}\x{5ECE}\x{5ECF}' . +'\x{5ED0}\x{5ED1}\x{5ED2}\x{5ED3}\x{5ED4}\x{5ED5}\x{5ED6}\x{5ED7}\x{5ED8}' . +'\x{5ED9}\x{5EDA}\x{5EDB}\x{5EDC}\x{5EDD}\x{5EDE}\x{5EDF}\x{5EE0}\x{5EE1}' . +'\x{5EE2}\x{5EE3}\x{5EE4}\x{5EE5}\x{5EE6}\x{5EE7}\x{5EE8}\x{5EE9}\x{5EEA}' . +'\x{5EEC}\x{5EED}\x{5EEE}\x{5EEF}\x{5EF0}\x{5EF1}\x{5EF2}\x{5EF3}\x{5EF4}' . +'\x{5EF5}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}\x{5EFB}\x{5EFC}\x{5EFD}\x{5EFE}' . +'\x{5EFF}\x{5F00}\x{5F01}\x{5F02}\x{5F03}\x{5F04}\x{5F05}\x{5F06}\x{5F07}' . +'\x{5F08}\x{5F0A}\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F11}\x{5F12}\x{5F13}' . +'\x{5F14}\x{5F15}\x{5F16}\x{5F17}\x{5F18}\x{5F19}\x{5F1A}\x{5F1B}\x{5F1C}' . +'\x{5F1D}\x{5F1E}\x{5F1F}\x{5F20}\x{5F21}\x{5F22}\x{5F23}\x{5F24}\x{5F25}' . +'\x{5F26}\x{5F27}\x{5F28}\x{5F29}\x{5F2A}\x{5F2B}\x{5F2C}\x{5F2D}\x{5F2E}' . +'\x{5F2F}\x{5F30}\x{5F31}\x{5F32}\x{5F33}\x{5F34}\x{5F35}\x{5F36}\x{5F37}' . +'\x{5F38}\x{5F39}\x{5F3A}\x{5F3C}\x{5F3E}\x{5F3F}\x{5F40}\x{5F41}\x{5F42}' . +'\x{5F43}\x{5F44}\x{5F45}\x{5F46}\x{5F47}\x{5F48}\x{5F49}\x{5F4A}\x{5F4B}' . +'\x{5F4C}\x{5F4D}\x{5F4E}\x{5F4F}\x{5F50}\x{5F51}\x{5F52}\x{5F53}\x{5F54}' . +'\x{5F55}\x{5F56}\x{5F57}\x{5F58}\x{5F59}\x{5F5A}\x{5F5B}\x{5F5C}\x{5F5D}' . +'\x{5F5E}\x{5F5F}\x{5F60}\x{5F61}\x{5F62}\x{5F63}\x{5F64}\x{5F65}\x{5F66}' . +'\x{5F67}\x{5F68}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}\x{5F6D}\x{5F6E}\x{5F6F}' . +'\x{5F70}\x{5F71}\x{5F72}\x{5F73}\x{5F74}\x{5F75}\x{5F76}\x{5F77}\x{5F78}' . +'\x{5F79}\x{5F7A}\x{5F7B}\x{5F7C}\x{5F7D}\x{5F7E}\x{5F7F}\x{5F80}\x{5F81}' . +'\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F86}\x{5F87}\x{5F88}\x{5F89}\x{5F8A}' . +'\x{5F8B}\x{5F8C}\x{5F8D}\x{5F8E}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F94}' . +'\x{5F95}\x{5F96}\x{5F97}\x{5F98}\x{5F99}\x{5F9B}\x{5F9C}\x{5F9D}\x{5F9E}' . +'\x{5F9F}\x{5FA0}\x{5FA1}\x{5FA2}\x{5FA5}\x{5FA6}\x{5FA7}\x{5FA8}\x{5FA9}' . +'\x{5FAA}\x{5FAB}\x{5FAC}\x{5FAD}\x{5FAE}\x{5FAF}\x{5FB1}\x{5FB2}\x{5FB3}' . +'\x{5FB4}\x{5FB5}\x{5FB6}\x{5FB7}\x{5FB8}\x{5FB9}\x{5FBA}\x{5FBB}\x{5FBC}' . +'\x{5FBD}\x{5FBE}\x{5FBF}\x{5FC0}\x{5FC1}\x{5FC3}\x{5FC4}\x{5FC5}\x{5FC6}' . +'\x{5FC7}\x{5FC8}\x{5FC9}\x{5FCA}\x{5FCB}\x{5FCC}\x{5FCD}\x{5FCF}\x{5FD0}' . +'\x{5FD1}\x{5FD2}\x{5FD3}\x{5FD4}\x{5FD5}\x{5FD6}\x{5FD7}\x{5FD8}\x{5FD9}' . +'\x{5FDA}\x{5FDC}\x{5FDD}\x{5FDE}\x{5FE0}\x{5FE1}\x{5FE3}\x{5FE4}\x{5FE5}' . +'\x{5FE6}\x{5FE7}\x{5FE8}\x{5FE9}\x{5FEA}\x{5FEB}\x{5FED}\x{5FEE}\x{5FEF}' . +'\x{5FF0}\x{5FF1}\x{5FF2}\x{5FF3}\x{5FF4}\x{5FF5}\x{5FF6}\x{5FF7}\x{5FF8}' . +'\x{5FF9}\x{5FFA}\x{5FFB}\x{5FFD}\x{5FFE}\x{5FFF}\x{6000}\x{6001}\x{6002}' . +'\x{6003}\x{6004}\x{6005}\x{6006}\x{6007}\x{6008}\x{6009}\x{600A}\x{600B}' . +'\x{600C}\x{600D}\x{600E}\x{600F}\x{6010}\x{6011}\x{6012}\x{6013}\x{6014}' . +'\x{6015}\x{6016}\x{6017}\x{6018}\x{6019}\x{601A}\x{601B}\x{601C}\x{601D}' . +'\x{601E}\x{601F}\x{6020}\x{6021}\x{6022}\x{6024}\x{6025}\x{6026}\x{6027}' . +'\x{6028}\x{6029}\x{602A}\x{602B}\x{602C}\x{602D}\x{602E}\x{602F}\x{6030}' . +'\x{6031}\x{6032}\x{6033}\x{6034}\x{6035}\x{6036}\x{6037}\x{6038}\x{6039}' . +'\x{603A}\x{603B}\x{603C}\x{603D}\x{603E}\x{603F}\x{6040}\x{6041}\x{6042}' . +'\x{6043}\x{6044}\x{6045}\x{6046}\x{6047}\x{6048}\x{6049}\x{604A}\x{604B}' . +'\x{604C}\x{604D}\x{604E}\x{604F}\x{6050}\x{6051}\x{6052}\x{6053}\x{6054}' . +'\x{6055}\x{6057}\x{6058}\x{6059}\x{605A}\x{605B}\x{605C}\x{605D}\x{605E}' . +'\x{605F}\x{6062}\x{6063}\x{6064}\x{6065}\x{6066}\x{6067}\x{6068}\x{6069}' . +'\x{606A}\x{606B}\x{606C}\x{606D}\x{606E}\x{606F}\x{6070}\x{6072}\x{6073}' . +'\x{6075}\x{6076}\x{6077}\x{6078}\x{6079}\x{607A}\x{607B}\x{607C}\x{607D}' . +'\x{607E}\x{607F}\x{6080}\x{6081}\x{6082}\x{6083}\x{6084}\x{6085}\x{6086}' . +'\x{6087}\x{6088}\x{6089}\x{608A}\x{608B}\x{608C}\x{608D}\x{608E}\x{608F}' . +'\x{6090}\x{6092}\x{6094}\x{6095}\x{6096}\x{6097}\x{6098}\x{6099}\x{609A}' . +'\x{609B}\x{609C}\x{609D}\x{609E}\x{609F}\x{60A0}\x{60A1}\x{60A2}\x{60A3}' . +'\x{60A4}\x{60A6}\x{60A7}\x{60A8}\x{60AA}\x{60AB}\x{60AC}\x{60AD}\x{60AE}' . +'\x{60AF}\x{60B0}\x{60B1}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B7}' . +'\x{60B8}\x{60B9}\x{60BA}\x{60BB}\x{60BC}\x{60BD}\x{60BE}\x{60BF}\x{60C0}' . +'\x{60C1}\x{60C2}\x{60C3}\x{60C4}\x{60C5}\x{60C6}\x{60C7}\x{60C8}\x{60C9}' . +'\x{60CA}\x{60CB}\x{60CC}\x{60CD}\x{60CE}\x{60CF}\x{60D0}\x{60D1}\x{60D3}' . +'\x{60D4}\x{60D5}\x{60D7}\x{60D8}\x{60D9}\x{60DA}\x{60DB}\x{60DC}\x{60DD}' . +'\x{60DF}\x{60E0}\x{60E1}\x{60E2}\x{60E4}\x{60E6}\x{60E7}\x{60E8}\x{60E9}' . +'\x{60EA}\x{60EB}\x{60EC}\x{60ED}\x{60EE}\x{60EF}\x{60F0}\x{60F1}\x{60F2}' . +'\x{60F3}\x{60F4}\x{60F5}\x{60F6}\x{60F7}\x{60F8}\x{60F9}\x{60FA}\x{60FB}' . +'\x{60FC}\x{60FE}\x{60FF}\x{6100}\x{6101}\x{6103}\x{6104}\x{6105}\x{6106}' . +'\x{6108}\x{6109}\x{610A}\x{610B}\x{610C}\x{610D}\x{610E}\x{610F}\x{6110}' . +'\x{6112}\x{6113}\x{6114}\x{6115}\x{6116}\x{6117}\x{6118}\x{6119}\x{611A}' . +'\x{611B}\x{611C}\x{611D}\x{611F}\x{6120}\x{6122}\x{6123}\x{6124}\x{6125}' . +'\x{6126}\x{6127}\x{6128}\x{6129}\x{612A}\x{612B}\x{612C}\x{612D}\x{612E}' . +'\x{612F}\x{6130}\x{6132}\x{6134}\x{6136}\x{6137}\x{613A}\x{613B}\x{613C}' . +'\x{613D}\x{613E}\x{613F}\x{6140}\x{6141}\x{6142}\x{6143}\x{6144}\x{6145}' . +'\x{6146}\x{6147}\x{6148}\x{6149}\x{614A}\x{614B}\x{614C}\x{614D}\x{614E}' . +'\x{614F}\x{6150}\x{6151}\x{6152}\x{6153}\x{6154}\x{6155}\x{6156}\x{6157}' . +'\x{6158}\x{6159}\x{615A}\x{615B}\x{615C}\x{615D}\x{615E}\x{615F}\x{6161}' . +'\x{6162}\x{6163}\x{6164}\x{6165}\x{6166}\x{6167}\x{6168}\x{6169}\x{616A}' . +'\x{616B}\x{616C}\x{616D}\x{616E}\x{6170}\x{6171}\x{6172}\x{6173}\x{6174}' . +'\x{6175}\x{6176}\x{6177}\x{6178}\x{6179}\x{617A}\x{617C}\x{617E}\x{6180}' . +'\x{6181}\x{6182}\x{6183}\x{6184}\x{6185}\x{6187}\x{6188}\x{6189}\x{618A}' . +'\x{618B}\x{618C}\x{618D}\x{618E}\x{618F}\x{6190}\x{6191}\x{6192}\x{6193}' . +'\x{6194}\x{6195}\x{6196}\x{6198}\x{6199}\x{619A}\x{619B}\x{619D}\x{619E}' . +'\x{619F}\x{61A0}\x{61A1}\x{61A2}\x{61A3}\x{61A4}\x{61A5}\x{61A6}\x{61A7}' . +'\x{61A8}\x{61A9}\x{61AA}\x{61AB}\x{61AC}\x{61AD}\x{61AE}\x{61AF}\x{61B0}' . +'\x{61B1}\x{61B2}\x{61B3}\x{61B4}\x{61B5}\x{61B6}\x{61B7}\x{61B8}\x{61BA}' . +'\x{61BC}\x{61BD}\x{61BE}\x{61BF}\x{61C0}\x{61C1}\x{61C2}\x{61C3}\x{61C4}' . +'\x{61C5}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' . +'\x{61CE}\x{61CF}\x{61D0}\x{61D1}\x{61D2}\x{61D4}\x{61D6}\x{61D7}\x{61D8}' . +'\x{61D9}\x{61DA}\x{61DB}\x{61DC}\x{61DD}\x{61DE}\x{61DF}\x{61E0}\x{61E1}' . +'\x{61E2}\x{61E3}\x{61E4}\x{61E5}\x{61E6}\x{61E7}\x{61E8}\x{61E9}\x{61EA}' . +'\x{61EB}\x{61ED}\x{61EE}\x{61F0}\x{61F1}\x{61F2}\x{61F3}\x{61F5}\x{61F6}' . +'\x{61F7}\x{61F8}\x{61F9}\x{61FA}\x{61FB}\x{61FC}\x{61FD}\x{61FE}\x{61FF}' . +'\x{6200}\x{6201}\x{6202}\x{6203}\x{6204}\x{6206}\x{6207}\x{6208}\x{6209}' . +'\x{620A}\x{620B}\x{620C}\x{620D}\x{620E}\x{620F}\x{6210}\x{6211}\x{6212}' . +'\x{6213}\x{6214}\x{6215}\x{6216}\x{6217}\x{6218}\x{6219}\x{621A}\x{621B}' . +'\x{621C}\x{621D}\x{621E}\x{621F}\x{6220}\x{6221}\x{6222}\x{6223}\x{6224}' . +'\x{6225}\x{6226}\x{6227}\x{6228}\x{6229}\x{622A}\x{622B}\x{622C}\x{622D}' . +'\x{622E}\x{622F}\x{6230}\x{6231}\x{6232}\x{6233}\x{6234}\x{6236}\x{6237}' . +'\x{6238}\x{623A}\x{623B}\x{623C}\x{623D}\x{623E}\x{623F}\x{6240}\x{6241}' . +'\x{6242}\x{6243}\x{6244}\x{6245}\x{6246}\x{6247}\x{6248}\x{6249}\x{624A}' . +'\x{624B}\x{624C}\x{624D}\x{624E}\x{624F}\x{6250}\x{6251}\x{6252}\x{6253}' . +'\x{6254}\x{6255}\x{6256}\x{6258}\x{6259}\x{625A}\x{625B}\x{625C}\x{625D}' . +'\x{625E}\x{625F}\x{6260}\x{6261}\x{6262}\x{6263}\x{6264}\x{6265}\x{6266}' . +'\x{6267}\x{6268}\x{6269}\x{626A}\x{626B}\x{626C}\x{626D}\x{626E}\x{626F}' . +'\x{6270}\x{6271}\x{6272}\x{6273}\x{6274}\x{6275}\x{6276}\x{6277}\x{6278}' . +'\x{6279}\x{627A}\x{627B}\x{627C}\x{627D}\x{627E}\x{627F}\x{6280}\x{6281}' . +'\x{6283}\x{6284}\x{6285}\x{6286}\x{6287}\x{6288}\x{6289}\x{628A}\x{628B}' . +'\x{628C}\x{628E}\x{628F}\x{6290}\x{6291}\x{6292}\x{6293}\x{6294}\x{6295}' . +'\x{6296}\x{6297}\x{6298}\x{6299}\x{629A}\x{629B}\x{629C}\x{629E}\x{629F}' . +'\x{62A0}\x{62A1}\x{62A2}\x{62A3}\x{62A4}\x{62A5}\x{62A7}\x{62A8}\x{62A9}' . +'\x{62AA}\x{62AB}\x{62AC}\x{62AD}\x{62AE}\x{62AF}\x{62B0}\x{62B1}\x{62B2}' . +'\x{62B3}\x{62B4}\x{62B5}\x{62B6}\x{62B7}\x{62B8}\x{62B9}\x{62BA}\x{62BB}' . +'\x{62BC}\x{62BD}\x{62BE}\x{62BF}\x{62C0}\x{62C1}\x{62C2}\x{62C3}\x{62C4}' . +'\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CB}\x{62CC}\x{62CD}' . +'\x{62CE}\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D5}\x{62D6}' . +'\x{62D7}\x{62D8}\x{62D9}\x{62DA}\x{62DB}\x{62DC}\x{62DD}\x{62DF}\x{62E0}' . +'\x{62E1}\x{62E2}\x{62E3}\x{62E4}\x{62E5}\x{62E6}\x{62E7}\x{62E8}\x{62E9}' . +'\x{62EB}\x{62EC}\x{62ED}\x{62EE}\x{62EF}\x{62F0}\x{62F1}\x{62F2}\x{62F3}' . +'\x{62F4}\x{62F5}\x{62F6}\x{62F7}\x{62F8}\x{62F9}\x{62FA}\x{62FB}\x{62FC}' . +'\x{62FD}\x{62FE}\x{62FF}\x{6300}\x{6301}\x{6302}\x{6303}\x{6304}\x{6305}' . +'\x{6306}\x{6307}\x{6308}\x{6309}\x{630B}\x{630C}\x{630D}\x{630E}\x{630F}' . +'\x{6310}\x{6311}\x{6312}\x{6313}\x{6314}\x{6315}\x{6316}\x{6318}\x{6319}' . +'\x{631A}\x{631B}\x{631C}\x{631D}\x{631E}\x{631F}\x{6320}\x{6321}\x{6322}' . +'\x{6323}\x{6324}\x{6325}\x{6326}\x{6327}\x{6328}\x{6329}\x{632A}\x{632B}' . +'\x{632C}\x{632D}\x{632E}\x{632F}\x{6330}\x{6332}\x{6333}\x{6334}\x{6336}' . +'\x{6338}\x{6339}\x{633A}\x{633B}\x{633C}\x{633D}\x{633E}\x{6340}\x{6341}' . +'\x{6342}\x{6343}\x{6344}\x{6345}\x{6346}\x{6347}\x{6348}\x{6349}\x{634A}' . +'\x{634B}\x{634C}\x{634D}\x{634E}\x{634F}\x{6350}\x{6351}\x{6352}\x{6353}' . +'\x{6354}\x{6355}\x{6356}\x{6357}\x{6358}\x{6359}\x{635A}\x{635C}\x{635D}' . +'\x{635E}\x{635F}\x{6360}\x{6361}\x{6362}\x{6363}\x{6364}\x{6365}\x{6366}' . +'\x{6367}\x{6368}\x{6369}\x{636A}\x{636B}\x{636C}\x{636D}\x{636E}\x{636F}' . +'\x{6370}\x{6371}\x{6372}\x{6373}\x{6374}\x{6375}\x{6376}\x{6377}\x{6378}' . +'\x{6379}\x{637A}\x{637B}\x{637C}\x{637D}\x{637E}\x{6380}\x{6381}\x{6382}' . +'\x{6383}\x{6384}\x{6385}\x{6386}\x{6387}\x{6388}\x{6389}\x{638A}\x{638C}' . +'\x{638D}\x{638E}\x{638F}\x{6390}\x{6391}\x{6392}\x{6394}\x{6395}\x{6396}' . +'\x{6397}\x{6398}\x{6399}\x{639A}\x{639B}\x{639C}\x{639D}\x{639E}\x{639F}' . +'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A4}\x{63A5}\x{63A6}\x{63A7}\x{63A8}' . +'\x{63A9}\x{63AA}\x{63AB}\x{63AC}\x{63AD}\x{63AE}\x{63AF}\x{63B0}\x{63B1}' . +'\x{63B2}\x{63B3}\x{63B4}\x{63B5}\x{63B6}\x{63B7}\x{63B8}\x{63B9}\x{63BA}' . +'\x{63BC}\x{63BD}\x{63BE}\x{63BF}\x{63C0}\x{63C1}\x{63C2}\x{63C3}\x{63C4}' . +'\x{63C5}\x{63C6}\x{63C7}\x{63C8}\x{63C9}\x{63CA}\x{63CB}\x{63CC}\x{63CD}' . +'\x{63CE}\x{63CF}\x{63D0}\x{63D2}\x{63D3}\x{63D4}\x{63D5}\x{63D6}\x{63D7}' . +'\x{63D8}\x{63D9}\x{63DA}\x{63DB}\x{63DC}\x{63DD}\x{63DE}\x{63DF}\x{63E0}' . +'\x{63E1}\x{63E2}\x{63E3}\x{63E4}\x{63E5}\x{63E6}\x{63E7}\x{63E8}\x{63E9}' . +'\x{63EA}\x{63EB}\x{63EC}\x{63ED}\x{63EE}\x{63EF}\x{63F0}\x{63F1}\x{63F2}' . +'\x{63F3}\x{63F4}\x{63F5}\x{63F6}\x{63F7}\x{63F8}\x{63F9}\x{63FA}\x{63FB}' . +'\x{63FC}\x{63FD}\x{63FE}\x{63FF}\x{6400}\x{6401}\x{6402}\x{6403}\x{6404}' . +'\x{6405}\x{6406}\x{6408}\x{6409}\x{640A}\x{640B}\x{640C}\x{640D}\x{640E}' . +'\x{640F}\x{6410}\x{6411}\x{6412}\x{6413}\x{6414}\x{6415}\x{6416}\x{6417}' . +'\x{6418}\x{6419}\x{641A}\x{641B}\x{641C}\x{641D}\x{641E}\x{641F}\x{6420}' . +'\x{6421}\x{6422}\x{6423}\x{6424}\x{6425}\x{6426}\x{6427}\x{6428}\x{6429}' . +'\x{642A}\x{642B}\x{642C}\x{642D}\x{642E}\x{642F}\x{6430}\x{6431}\x{6432}' . +'\x{6433}\x{6434}\x{6435}\x{6436}\x{6437}\x{6438}\x{6439}\x{643A}\x{643D}' . +'\x{643E}\x{643F}\x{6440}\x{6441}\x{6443}\x{6444}\x{6445}\x{6446}\x{6447}' . +'\x{6448}\x{644A}\x{644B}\x{644C}\x{644D}\x{644E}\x{644F}\x{6450}\x{6451}' . +'\x{6452}\x{6453}\x{6454}\x{6455}\x{6456}\x{6457}\x{6458}\x{6459}\x{645B}' . +'\x{645C}\x{645D}\x{645E}\x{645F}\x{6460}\x{6461}\x{6462}\x{6463}\x{6464}' . +'\x{6465}\x{6466}\x{6467}\x{6468}\x{6469}\x{646A}\x{646B}\x{646C}\x{646D}' . +'\x{646E}\x{646F}\x{6470}\x{6471}\x{6472}\x{6473}\x{6474}\x{6475}\x{6476}' . +'\x{6477}\x{6478}\x{6479}\x{647A}\x{647B}\x{647C}\x{647D}\x{647F}\x{6480}' . +'\x{6481}\x{6482}\x{6483}\x{6484}\x{6485}\x{6487}\x{6488}\x{6489}\x{648A}' . +'\x{648B}\x{648C}\x{648D}\x{648E}\x{648F}\x{6490}\x{6491}\x{6492}\x{6493}' . +'\x{6494}\x{6495}\x{6496}\x{6497}\x{6498}\x{6499}\x{649A}\x{649B}\x{649C}' . +'\x{649D}\x{649E}\x{649F}\x{64A0}\x{64A2}\x{64A3}\x{64A4}\x{64A5}\x{64A6}' . +'\x{64A7}\x{64A8}\x{64A9}\x{64AA}\x{64AB}\x{64AC}\x{64AD}\x{64AE}\x{64B0}' . +'\x{64B1}\x{64B2}\x{64B3}\x{64B4}\x{64B5}\x{64B7}\x{64B8}\x{64B9}\x{64BA}' . +'\x{64BB}\x{64BC}\x{64BD}\x{64BE}\x{64BF}\x{64C0}\x{64C1}\x{64C2}\x{64C3}' . +'\x{64C4}\x{64C5}\x{64C6}\x{64C7}\x{64C9}\x{64CA}\x{64CB}\x{64CC}\x{64CD}' . +'\x{64CE}\x{64CF}\x{64D0}\x{64D1}\x{64D2}\x{64D3}\x{64D4}\x{64D6}\x{64D7}' . +'\x{64D8}\x{64D9}\x{64DA}\x{64DB}\x{64DC}\x{64DD}\x{64DE}\x{64DF}\x{64E0}' . +'\x{64E2}\x{64E3}\x{64E4}\x{64E6}\x{64E7}\x{64E8}\x{64E9}\x{64EA}\x{64EB}' . +'\x{64EC}\x{64ED}\x{64EF}\x{64F0}\x{64F1}\x{64F2}\x{64F3}\x{64F4}\x{64F6}' . +'\x{64F7}\x{64F8}\x{64FA}\x{64FB}\x{64FC}\x{64FD}\x{64FE}\x{64FF}\x{6500}' . +'\x{6501}\x{6503}\x{6504}\x{6505}\x{6506}\x{6507}\x{6508}\x{6509}\x{650B}' . +'\x{650C}\x{650D}\x{650E}\x{650F}\x{6510}\x{6511}\x{6512}\x{6513}\x{6514}' . +'\x{6515}\x{6516}\x{6517}\x{6518}\x{6519}\x{651A}\x{651B}\x{651C}\x{651D}' . +'\x{651E}\x{6520}\x{6521}\x{6522}\x{6523}\x{6524}\x{6525}\x{6526}\x{6527}' . +'\x{6529}\x{652A}\x{652B}\x{652C}\x{652D}\x{652E}\x{652F}\x{6530}\x{6531}' . +'\x{6532}\x{6533}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}\x{653A}' . +'\x{653B}\x{653C}\x{653D}\x{653E}\x{653F}\x{6541}\x{6543}\x{6544}\x{6545}' . +'\x{6546}\x{6547}\x{6548}\x{6549}\x{654A}\x{654B}\x{654C}\x{654D}\x{654E}' . +'\x{654F}\x{6550}\x{6551}\x{6552}\x{6553}\x{6554}\x{6555}\x{6556}\x{6557}' . +'\x{6558}\x{6559}\x{655B}\x{655C}\x{655D}\x{655E}\x{6560}\x{6561}\x{6562}' . +'\x{6563}\x{6564}\x{6565}\x{6566}\x{6567}\x{6568}\x{6569}\x{656A}\x{656B}' . +'\x{656C}\x{656E}\x{656F}\x{6570}\x{6571}\x{6572}\x{6573}\x{6574}\x{6575}' . +'\x{6576}\x{6577}\x{6578}\x{6579}\x{657A}\x{657B}\x{657C}\x{657E}\x{657F}' . +'\x{6580}\x{6581}\x{6582}\x{6583}\x{6584}\x{6585}\x{6586}\x{6587}\x{6588}' . +'\x{6589}\x{658B}\x{658C}\x{658D}\x{658E}\x{658F}\x{6590}\x{6591}\x{6592}' . +'\x{6593}\x{6594}\x{6595}\x{6596}\x{6597}\x{6598}\x{6599}\x{659B}\x{659C}' . +'\x{659D}\x{659E}\x{659F}\x{65A0}\x{65A1}\x{65A2}\x{65A3}\x{65A4}\x{65A5}' . +'\x{65A6}\x{65A7}\x{65A8}\x{65A9}\x{65AA}\x{65AB}\x{65AC}\x{65AD}\x{65AE}' . +'\x{65AF}\x{65B0}\x{65B1}\x{65B2}\x{65B3}\x{65B4}\x{65B6}\x{65B7}\x{65B8}' . +'\x{65B9}\x{65BA}\x{65BB}\x{65BC}\x{65BD}\x{65BF}\x{65C0}\x{65C1}\x{65C2}' . +'\x{65C3}\x{65C4}\x{65C5}\x{65C6}\x{65C7}\x{65CA}\x{65CB}\x{65CC}\x{65CD}' . +'\x{65CE}\x{65CF}\x{65D0}\x{65D2}\x{65D3}\x{65D4}\x{65D5}\x{65D6}\x{65D7}' . +'\x{65DA}\x{65DB}\x{65DD}\x{65DE}\x{65DF}\x{65E0}\x{65E1}\x{65E2}\x{65E3}' . +'\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}\x{65EB}\x{65EC}\x{65ED}\x{65EE}' . +'\x{65EF}\x{65F0}\x{65F1}\x{65F2}\x{65F3}\x{65F4}\x{65F5}\x{65F6}\x{65F7}' . +'\x{65F8}\x{65FA}\x{65FB}\x{65FC}\x{65FD}\x{6600}\x{6601}\x{6602}\x{6603}' . +'\x{6604}\x{6605}\x{6606}\x{6607}\x{6608}\x{6609}\x{660A}\x{660B}\x{660C}' . +'\x{660D}\x{660E}\x{660F}\x{6610}\x{6611}\x{6612}\x{6613}\x{6614}\x{6615}' . +'\x{6616}\x{6618}\x{6619}\x{661A}\x{661B}\x{661C}\x{661D}\x{661F}\x{6620}' . +'\x{6621}\x{6622}\x{6623}\x{6624}\x{6625}\x{6626}\x{6627}\x{6628}\x{6629}' . +'\x{662A}\x{662B}\x{662D}\x{662E}\x{662F}\x{6630}\x{6631}\x{6632}\x{6633}' . +'\x{6634}\x{6635}\x{6636}\x{6639}\x{663A}\x{663C}\x{663D}\x{663E}\x{6640}' . +'\x{6641}\x{6642}\x{6643}\x{6644}\x{6645}\x{6646}\x{6647}\x{6649}\x{664A}' . +'\x{664B}\x{664C}\x{664E}\x{664F}\x{6650}\x{6651}\x{6652}\x{6653}\x{6654}' . +'\x{6655}\x{6656}\x{6657}\x{6658}\x{6659}\x{665A}\x{665B}\x{665C}\x{665D}' . +'\x{665E}\x{665F}\x{6661}\x{6662}\x{6664}\x{6665}\x{6666}\x{6668}\x{6669}' . +'\x{666A}\x{666B}\x{666C}\x{666D}\x{666E}\x{666F}\x{6670}\x{6671}\x{6672}' . +'\x{6673}\x{6674}\x{6675}\x{6676}\x{6677}\x{6678}\x{6679}\x{667A}\x{667B}' . +'\x{667C}\x{667D}\x{667E}\x{667F}\x{6680}\x{6681}\x{6682}\x{6683}\x{6684}' . +'\x{6685}\x{6686}\x{6687}\x{6688}\x{6689}\x{668A}\x{668B}\x{668C}\x{668D}' . +'\x{668E}\x{668F}\x{6690}\x{6691}\x{6693}\x{6694}\x{6695}\x{6696}\x{6697}' . +'\x{6698}\x{6699}\x{669A}\x{669B}\x{669D}\x{669F}\x{66A0}\x{66A1}\x{66A2}' . +'\x{66A3}\x{66A4}\x{66A5}\x{66A6}\x{66A7}\x{66A8}\x{66A9}\x{66AA}\x{66AB}' . +'\x{66AE}\x{66AF}\x{66B0}\x{66B1}\x{66B2}\x{66B3}\x{66B4}\x{66B5}\x{66B6}' . +'\x{66B7}\x{66B8}\x{66B9}\x{66BA}\x{66BB}\x{66BC}\x{66BD}\x{66BE}\x{66BF}' . +'\x{66C0}\x{66C1}\x{66C2}\x{66C3}\x{66C4}\x{66C5}\x{66C6}\x{66C7}\x{66C8}' . +'\x{66C9}\x{66CA}\x{66CB}\x{66CC}\x{66CD}\x{66CE}\x{66CF}\x{66D1}\x{66D2}' . +'\x{66D4}\x{66D5}\x{66D6}\x{66D8}\x{66D9}\x{66DA}\x{66DB}\x{66DC}\x{66DD}' . +'\x{66DE}\x{66E0}\x{66E1}\x{66E2}\x{66E3}\x{66E4}\x{66E5}\x{66E6}\x{66E7}' . +'\x{66E8}\x{66E9}\x{66EA}\x{66EB}\x{66EC}\x{66ED}\x{66EE}\x{66F0}\x{66F1}' . +'\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F6}\x{66F7}\x{66F8}\x{66F9}\x{66FA}' . +'\x{66FB}\x{66FC}\x{66FE}\x{66FF}\x{6700}\x{6701}\x{6703}\x{6704}\x{6705}' . +'\x{6706}\x{6708}\x{6709}\x{670A}\x{670B}\x{670C}\x{670D}\x{670E}\x{670F}' . +'\x{6710}\x{6711}\x{6712}\x{6713}\x{6714}\x{6715}\x{6716}\x{6717}\x{6718}' . +'\x{671A}\x{671B}\x{671C}\x{671D}\x{671E}\x{671F}\x{6720}\x{6721}\x{6722}' . +'\x{6723}\x{6725}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}\x{672D}' . +'\x{672E}\x{672F}\x{6730}\x{6731}\x{6732}\x{6733}\x{6734}\x{6735}\x{6736}' . +'\x{6737}\x{6738}\x{6739}\x{673A}\x{673B}\x{673C}\x{673D}\x{673E}\x{673F}' . +'\x{6740}\x{6741}\x{6742}\x{6743}\x{6744}\x{6745}\x{6746}\x{6747}\x{6748}' . +'\x{6749}\x{674A}\x{674B}\x{674C}\x{674D}\x{674E}\x{674F}\x{6750}\x{6751}' . +'\x{6752}\x{6753}\x{6754}\x{6755}\x{6756}\x{6757}\x{6758}\x{6759}\x{675A}' . +'\x{675B}\x{675C}\x{675D}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' . +'\x{6764}\x{6765}\x{6766}\x{6768}\x{6769}\x{676A}\x{676B}\x{676C}\x{676D}' . +'\x{676E}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}\x{6774}\x{6775}\x{6776}' . +'\x{6777}\x{6778}\x{6779}\x{677A}\x{677B}\x{677C}\x{677D}\x{677E}\x{677F}' . +'\x{6780}\x{6781}\x{6782}\x{6783}\x{6784}\x{6785}\x{6786}\x{6787}\x{6789}' . +'\x{678A}\x{678B}\x{678C}\x{678D}\x{678E}\x{678F}\x{6790}\x{6791}\x{6792}' . +'\x{6793}\x{6794}\x{6795}\x{6797}\x{6798}\x{6799}\x{679A}\x{679B}\x{679C}' . +'\x{679D}\x{679E}\x{679F}\x{67A0}\x{67A1}\x{67A2}\x{67A3}\x{67A4}\x{67A5}' . +'\x{67A6}\x{67A7}\x{67A8}\x{67AA}\x{67AB}\x{67AC}\x{67AD}\x{67AE}\x{67AF}' . +'\x{67B0}\x{67B1}\x{67B2}\x{67B3}\x{67B4}\x{67B5}\x{67B6}\x{67B7}\x{67B8}' . +'\x{67B9}\x{67BA}\x{67BB}\x{67BC}\x{67BE}\x{67C0}\x{67C1}\x{67C2}\x{67C3}' . +'\x{67C4}\x{67C5}\x{67C6}\x{67C7}\x{67C8}\x{67C9}\x{67CA}\x{67CB}\x{67CC}' . +'\x{67CD}\x{67CE}\x{67CF}\x{67D0}\x{67D1}\x{67D2}\x{67D3}\x{67D4}\x{67D6}' . +'\x{67D8}\x{67D9}\x{67DA}\x{67DB}\x{67DC}\x{67DD}\x{67DE}\x{67DF}\x{67E0}' . +'\x{67E1}\x{67E2}\x{67E3}\x{67E4}\x{67E5}\x{67E6}\x{67E7}\x{67E8}\x{67E9}' . +'\x{67EA}\x{67EB}\x{67EC}\x{67ED}\x{67EE}\x{67EF}\x{67F0}\x{67F1}\x{67F2}' . +'\x{67F3}\x{67F4}\x{67F5}\x{67F6}\x{67F7}\x{67F8}\x{67FA}\x{67FB}\x{67FC}' . +'\x{67FD}\x{67FE}\x{67FF}\x{6800}\x{6802}\x{6803}\x{6804}\x{6805}\x{6806}' . +'\x{6807}\x{6808}\x{6809}\x{680A}\x{680B}\x{680C}\x{680D}\x{680E}\x{680F}' . +'\x{6810}\x{6811}\x{6812}\x{6813}\x{6814}\x{6816}\x{6817}\x{6818}\x{6819}' . +'\x{681A}\x{681B}\x{681C}\x{681D}\x{681F}\x{6820}\x{6821}\x{6822}\x{6823}' . +'\x{6824}\x{6825}\x{6826}\x{6828}\x{6829}\x{682A}\x{682B}\x{682C}\x{682D}' . +'\x{682E}\x{682F}\x{6831}\x{6832}\x{6833}\x{6834}\x{6835}\x{6836}\x{6837}' . +'\x{6838}\x{6839}\x{683A}\x{683B}\x{683C}\x{683D}\x{683E}\x{683F}\x{6840}' . +'\x{6841}\x{6842}\x{6843}\x{6844}\x{6845}\x{6846}\x{6847}\x{6848}\x{6849}' . +'\x{684A}\x{684B}\x{684C}\x{684D}\x{684E}\x{684F}\x{6850}\x{6851}\x{6852}' . +'\x{6853}\x{6854}\x{6855}\x{6856}\x{6857}\x{685B}\x{685D}\x{6860}\x{6861}' . +'\x{6862}\x{6863}\x{6864}\x{6865}\x{6866}\x{6867}\x{6868}\x{6869}\x{686A}' . +'\x{686B}\x{686C}\x{686D}\x{686E}\x{686F}\x{6870}\x{6871}\x{6872}\x{6873}' . +'\x{6874}\x{6875}\x{6876}\x{6877}\x{6878}\x{6879}\x{687B}\x{687C}\x{687D}' . +'\x{687E}\x{687F}\x{6880}\x{6881}\x{6882}\x{6883}\x{6884}\x{6885}\x{6886}' . +'\x{6887}\x{6888}\x{6889}\x{688A}\x{688B}\x{688C}\x{688D}\x{688E}\x{688F}' . +'\x{6890}\x{6891}\x{6892}\x{6893}\x{6894}\x{6896}\x{6897}\x{6898}\x{689A}' . +'\x{689B}\x{689C}\x{689D}\x{689E}\x{689F}\x{68A0}\x{68A1}\x{68A2}\x{68A3}' . +'\x{68A4}\x{68A6}\x{68A7}\x{68A8}\x{68A9}\x{68AA}\x{68AB}\x{68AC}\x{68AD}' . +'\x{68AE}\x{68AF}\x{68B0}\x{68B1}\x{68B2}\x{68B3}\x{68B4}\x{68B5}\x{68B6}' . +'\x{68B7}\x{68B9}\x{68BB}\x{68BC}\x{68BD}\x{68BE}\x{68BF}\x{68C0}\x{68C1}' . +'\x{68C2}\x{68C4}\x{68C6}\x{68C7}\x{68C8}\x{68C9}\x{68CA}\x{68CB}\x{68CC}' . +'\x{68CD}\x{68CE}\x{68CF}\x{68D0}\x{68D1}\x{68D2}\x{68D3}\x{68D4}\x{68D5}' . +'\x{68D6}\x{68D7}\x{68D8}\x{68DA}\x{68DB}\x{68DC}\x{68DD}\x{68DE}\x{68DF}' . +'\x{68E0}\x{68E1}\x{68E3}\x{68E4}\x{68E6}\x{68E7}\x{68E8}\x{68E9}\x{68EA}' . +'\x{68EB}\x{68EC}\x{68ED}\x{68EE}\x{68EF}\x{68F0}\x{68F1}\x{68F2}\x{68F3}' . +'\x{68F4}\x{68F5}\x{68F6}\x{68F7}\x{68F8}\x{68F9}\x{68FA}\x{68FB}\x{68FC}' . +'\x{68FD}\x{68FE}\x{68FF}\x{6901}\x{6902}\x{6903}\x{6904}\x{6905}\x{6906}' . +'\x{6907}\x{6908}\x{690A}\x{690B}\x{690C}\x{690D}\x{690E}\x{690F}\x{6910}' . +'\x{6911}\x{6912}\x{6913}\x{6914}\x{6915}\x{6916}\x{6917}\x{6918}\x{6919}' . +'\x{691A}\x{691B}\x{691C}\x{691D}\x{691E}\x{691F}\x{6920}\x{6921}\x{6922}' . +'\x{6923}\x{6924}\x{6925}\x{6926}\x{6927}\x{6928}\x{6929}\x{692A}\x{692B}' . +'\x{692C}\x{692D}\x{692E}\x{692F}\x{6930}\x{6931}\x{6932}\x{6933}\x{6934}' . +'\x{6935}\x{6936}\x{6937}\x{6938}\x{6939}\x{693A}\x{693B}\x{693C}\x{693D}' . +'\x{693F}\x{6940}\x{6941}\x{6942}\x{6943}\x{6944}\x{6945}\x{6946}\x{6947}' . +'\x{6948}\x{6949}\x{694A}\x{694B}\x{694C}\x{694E}\x{694F}\x{6950}\x{6951}' . +'\x{6952}\x{6953}\x{6954}\x{6955}\x{6956}\x{6957}\x{6958}\x{6959}\x{695A}' . +'\x{695B}\x{695C}\x{695D}\x{695E}\x{695F}\x{6960}\x{6961}\x{6962}\x{6963}' . +'\x{6964}\x{6965}\x{6966}\x{6967}\x{6968}\x{6969}\x{696A}\x{696B}\x{696C}' . +'\x{696D}\x{696E}\x{696F}\x{6970}\x{6971}\x{6972}\x{6973}\x{6974}\x{6975}' . +'\x{6976}\x{6977}\x{6978}\x{6979}\x{697A}\x{697B}\x{697C}\x{697D}\x{697E}' . +'\x{697F}\x{6980}\x{6981}\x{6982}\x{6983}\x{6984}\x{6985}\x{6986}\x{6987}' . +'\x{6988}\x{6989}\x{698A}\x{698B}\x{698C}\x{698D}\x{698E}\x{698F}\x{6990}' . +'\x{6991}\x{6992}\x{6993}\x{6994}\x{6995}\x{6996}\x{6997}\x{6998}\x{6999}' . +'\x{699A}\x{699B}\x{699C}\x{699D}\x{699E}\x{69A0}\x{69A1}\x{69A3}\x{69A4}' . +'\x{69A5}\x{69A6}\x{69A7}\x{69A8}\x{69A9}\x{69AA}\x{69AB}\x{69AC}\x{69AD}' . +'\x{69AE}\x{69AF}\x{69B0}\x{69B1}\x{69B2}\x{69B3}\x{69B4}\x{69B5}\x{69B6}' . +'\x{69B7}\x{69B8}\x{69B9}\x{69BA}\x{69BB}\x{69BC}\x{69BD}\x{69BE}\x{69BF}' . +'\x{69C1}\x{69C2}\x{69C3}\x{69C4}\x{69C5}\x{69C6}\x{69C7}\x{69C8}\x{69C9}' . +'\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}\x{69CF}\x{69D0}\x{69D3}\x{69D4}' . +'\x{69D8}\x{69D9}\x{69DA}\x{69DB}\x{69DC}\x{69DD}\x{69DE}\x{69DF}\x{69E0}' . +'\x{69E1}\x{69E2}\x{69E3}\x{69E4}\x{69E5}\x{69E6}\x{69E7}\x{69E8}\x{69E9}' . +'\x{69EA}\x{69EB}\x{69EC}\x{69ED}\x{69EE}\x{69EF}\x{69F0}\x{69F1}\x{69F2}' . +'\x{69F3}\x{69F4}\x{69F5}\x{69F6}\x{69F7}\x{69F8}\x{69FA}\x{69FB}\x{69FC}' . +'\x{69FD}\x{69FE}\x{69FF}\x{6A00}\x{6A01}\x{6A02}\x{6A04}\x{6A05}\x{6A06}' . +'\x{6A07}\x{6A08}\x{6A09}\x{6A0A}\x{6A0B}\x{6A0D}\x{6A0E}\x{6A0F}\x{6A10}' . +'\x{6A11}\x{6A12}\x{6A13}\x{6A14}\x{6A15}\x{6A16}\x{6A17}\x{6A18}\x{6A19}' . +'\x{6A1A}\x{6A1B}\x{6A1D}\x{6A1E}\x{6A1F}\x{6A20}\x{6A21}\x{6A22}\x{6A23}' . +'\x{6A25}\x{6A26}\x{6A27}\x{6A28}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2C}\x{6A2D}' . +'\x{6A2E}\x{6A2F}\x{6A30}\x{6A31}\x{6A32}\x{6A33}\x{6A34}\x{6A35}\x{6A36}' . +'\x{6A38}\x{6A39}\x{6A3A}\x{6A3B}\x{6A3C}\x{6A3D}\x{6A3E}\x{6A3F}\x{6A40}' . +'\x{6A41}\x{6A42}\x{6A43}\x{6A44}\x{6A45}\x{6A46}\x{6A47}\x{6A48}\x{6A49}' . +'\x{6A4B}\x{6A4C}\x{6A4D}\x{6A4E}\x{6A4F}\x{6A50}\x{6A51}\x{6A52}\x{6A54}' . +'\x{6A55}\x{6A56}\x{6A57}\x{6A58}\x{6A59}\x{6A5A}\x{6A5B}\x{6A5D}\x{6A5E}' . +'\x{6A5F}\x{6A60}\x{6A61}\x{6A62}\x{6A63}\x{6A64}\x{6A65}\x{6A66}\x{6A67}' . +'\x{6A68}\x{6A69}\x{6A6A}\x{6A6B}\x{6A6C}\x{6A6D}\x{6A6F}\x{6A71}\x{6A72}' . +'\x{6A73}\x{6A74}\x{6A75}\x{6A76}\x{6A77}\x{6A78}\x{6A79}\x{6A7A}\x{6A7B}' . +'\x{6A7C}\x{6A7D}\x{6A7E}\x{6A7F}\x{6A80}\x{6A81}\x{6A82}\x{6A83}\x{6A84}' . +'\x{6A85}\x{6A87}\x{6A88}\x{6A89}\x{6A8B}\x{6A8C}\x{6A8D}\x{6A8E}\x{6A90}' . +'\x{6A91}\x{6A92}\x{6A93}\x{6A94}\x{6A95}\x{6A96}\x{6A97}\x{6A98}\x{6A9A}' . +'\x{6A9B}\x{6A9C}\x{6A9E}\x{6A9F}\x{6AA0}\x{6AA1}\x{6AA2}\x{6AA3}\x{6AA4}' . +'\x{6AA5}\x{6AA6}\x{6AA7}\x{6AA8}\x{6AA9}\x{6AAB}\x{6AAC}\x{6AAD}\x{6AAE}' . +'\x{6AAF}\x{6AB0}\x{6AB2}\x{6AB3}\x{6AB4}\x{6AB5}\x{6AB6}\x{6AB7}\x{6AB8}' . +'\x{6AB9}\x{6ABA}\x{6ABB}\x{6ABC}\x{6ABD}\x{6ABF}\x{6AC1}\x{6AC2}\x{6AC3}' . +'\x{6AC5}\x{6AC6}\x{6AC7}\x{6ACA}\x{6ACB}\x{6ACC}\x{6ACD}\x{6ACE}\x{6ACF}' . +'\x{6AD0}\x{6AD1}\x{6AD2}\x{6AD3}\x{6AD4}\x{6AD5}\x{6AD6}\x{6AD7}\x{6AD9}' . +'\x{6ADA}\x{6ADB}\x{6ADC}\x{6ADD}\x{6ADE}\x{6ADF}\x{6AE0}\x{6AE1}\x{6AE2}' . +'\x{6AE3}\x{6AE4}\x{6AE5}\x{6AE6}\x{6AE7}\x{6AE8}\x{6AEA}\x{6AEB}\x{6AEC}' . +'\x{6AED}\x{6AEE}\x{6AEF}\x{6AF0}\x{6AF1}\x{6AF2}\x{6AF3}\x{6AF4}\x{6AF5}' . +'\x{6AF6}\x{6AF7}\x{6AF8}\x{6AF9}\x{6AFA}\x{6AFB}\x{6AFC}\x{6AFD}\x{6AFE}' . +'\x{6AFF}\x{6B00}\x{6B01}\x{6B02}\x{6B03}\x{6B04}\x{6B05}\x{6B06}\x{6B07}' . +'\x{6B08}\x{6B09}\x{6B0A}\x{6B0B}\x{6B0C}\x{6B0D}\x{6B0F}\x{6B10}\x{6B11}' . +'\x{6B12}\x{6B13}\x{6B14}\x{6B15}\x{6B16}\x{6B17}\x{6B18}\x{6B19}\x{6B1A}' . +'\x{6B1C}\x{6B1D}\x{6B1E}\x{6B1F}\x{6B20}\x{6B21}\x{6B22}\x{6B23}\x{6B24}' . +'\x{6B25}\x{6B26}\x{6B27}\x{6B28}\x{6B29}\x{6B2A}\x{6B2B}\x{6B2C}\x{6B2D}' . +'\x{6B2F}\x{6B30}\x{6B31}\x{6B32}\x{6B33}\x{6B34}\x{6B36}\x{6B37}\x{6B38}' . +'\x{6B39}\x{6B3A}\x{6B3B}\x{6B3C}\x{6B3D}\x{6B3E}\x{6B3F}\x{6B41}\x{6B42}' . +'\x{6B43}\x{6B44}\x{6B45}\x{6B46}\x{6B47}\x{6B48}\x{6B49}\x{6B4A}\x{6B4B}' . +'\x{6B4C}\x{6B4D}\x{6B4E}\x{6B4F}\x{6B50}\x{6B51}\x{6B52}\x{6B53}\x{6B54}' . +'\x{6B55}\x{6B56}\x{6B59}\x{6B5A}\x{6B5B}\x{6B5C}\x{6B5E}\x{6B5F}\x{6B60}' . +'\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B65}\x{6B66}\x{6B67}\x{6B69}\x{6B6A}' . +'\x{6B6B}\x{6B6D}\x{6B6F}\x{6B70}\x{6B72}\x{6B73}\x{6B74}\x{6B76}\x{6B77}' . +'\x{6B78}\x{6B79}\x{6B7A}\x{6B7B}\x{6B7C}\x{6B7E}\x{6B7F}\x{6B80}\x{6B81}' . +'\x{6B82}\x{6B83}\x{6B84}\x{6B85}\x{6B86}\x{6B87}\x{6B88}\x{6B89}\x{6B8A}' . +'\x{6B8B}\x{6B8C}\x{6B8D}\x{6B8E}\x{6B8F}\x{6B90}\x{6B91}\x{6B92}\x{6B93}' . +'\x{6B94}\x{6B95}\x{6B96}\x{6B97}\x{6B98}\x{6B99}\x{6B9A}\x{6B9B}\x{6B9C}' . +'\x{6B9D}\x{6B9E}\x{6B9F}\x{6BA0}\x{6BA1}\x{6BA2}\x{6BA3}\x{6BA4}\x{6BA5}' . +'\x{6BA6}\x{6BA7}\x{6BA8}\x{6BA9}\x{6BAA}\x{6BAB}\x{6BAC}\x{6BAD}\x{6BAE}' . +'\x{6BAF}\x{6BB0}\x{6BB2}\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB6}\x{6BB7}\x{6BB9}' . +'\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBD}\x{6BBE}\x{6BBF}\x{6BC0}\x{6BC1}\x{6BC2}' . +'\x{6BC3}\x{6BC4}\x{6BC5}\x{6BC6}\x{6BC7}\x{6BC8}\x{6BC9}\x{6BCA}\x{6BCB}' . +'\x{6BCC}\x{6BCD}\x{6BCE}\x{6BCF}\x{6BD0}\x{6BD1}\x{6BD2}\x{6BD3}\x{6BD4}' . +'\x{6BD5}\x{6BD6}\x{6BD7}\x{6BD8}\x{6BD9}\x{6BDA}\x{6BDB}\x{6BDC}\x{6BDD}' . +'\x{6BDE}\x{6BDF}\x{6BE0}\x{6BE1}\x{6BE2}\x{6BE3}\x{6BE4}\x{6BE5}\x{6BE6}' . +'\x{6BE7}\x{6BE8}\x{6BEA}\x{6BEB}\x{6BEC}\x{6BED}\x{6BEE}\x{6BEF}\x{6BF0}' . +'\x{6BF2}\x{6BF3}\x{6BF5}\x{6BF6}\x{6BF7}\x{6BF8}\x{6BF9}\x{6BFB}\x{6BFC}' . +'\x{6BFD}\x{6BFE}\x{6BFF}\x{6C00}\x{6C01}\x{6C02}\x{6C03}\x{6C04}\x{6C05}' . +'\x{6C06}\x{6C07}\x{6C08}\x{6C09}\x{6C0B}\x{6C0C}\x{6C0D}\x{6C0E}\x{6C0F}' . +'\x{6C10}\x{6C11}\x{6C12}\x{6C13}\x{6C14}\x{6C15}\x{6C16}\x{6C18}\x{6C19}' . +'\x{6C1A}\x{6C1B}\x{6C1D}\x{6C1E}\x{6C1F}\x{6C20}\x{6C21}\x{6C22}\x{6C23}' . +'\x{6C24}\x{6C25}\x{6C26}\x{6C27}\x{6C28}\x{6C29}\x{6C2A}\x{6C2B}\x{6C2C}' . +'\x{6C2E}\x{6C2F}\x{6C30}\x{6C31}\x{6C32}\x{6C33}\x{6C34}\x{6C35}\x{6C36}' . +'\x{6C37}\x{6C38}\x{6C3A}\x{6C3B}\x{6C3D}\x{6C3E}\x{6C3F}\x{6C40}\x{6C41}' . +'\x{6C42}\x{6C43}\x{6C44}\x{6C46}\x{6C47}\x{6C48}\x{6C49}\x{6C4A}\x{6C4B}' . +'\x{6C4C}\x{6C4D}\x{6C4E}\x{6C4F}\x{6C50}\x{6C51}\x{6C52}\x{6C53}\x{6C54}' . +'\x{6C55}\x{6C56}\x{6C57}\x{6C58}\x{6C59}\x{6C5A}\x{6C5B}\x{6C5C}\x{6C5D}' . +'\x{6C5E}\x{6C5F}\x{6C60}\x{6C61}\x{6C62}\x{6C63}\x{6C64}\x{6C65}\x{6C66}' . +'\x{6C67}\x{6C68}\x{6C69}\x{6C6A}\x{6C6B}\x{6C6D}\x{6C6F}\x{6C70}\x{6C71}' . +'\x{6C72}\x{6C73}\x{6C74}\x{6C75}\x{6C76}\x{6C77}\x{6C78}\x{6C79}\x{6C7A}' . +'\x{6C7B}\x{6C7C}\x{6C7D}\x{6C7E}\x{6C7F}\x{6C80}\x{6C81}\x{6C82}\x{6C83}' . +'\x{6C84}\x{6C85}\x{6C86}\x{6C87}\x{6C88}\x{6C89}\x{6C8A}\x{6C8B}\x{6C8C}' . +'\x{6C8D}\x{6C8E}\x{6C8F}\x{6C90}\x{6C91}\x{6C92}\x{6C93}\x{6C94}\x{6C95}' . +'\x{6C96}\x{6C97}\x{6C98}\x{6C99}\x{6C9A}\x{6C9B}\x{6C9C}\x{6C9D}\x{6C9E}' . +'\x{6C9F}\x{6CA1}\x{6CA2}\x{6CA3}\x{6CA4}\x{6CA5}\x{6CA6}\x{6CA7}\x{6CA8}' . +'\x{6CA9}\x{6CAA}\x{6CAB}\x{6CAC}\x{6CAD}\x{6CAE}\x{6CAF}\x{6CB0}\x{6CB1}' . +'\x{6CB2}\x{6CB3}\x{6CB4}\x{6CB5}\x{6CB6}\x{6CB7}\x{6CB8}\x{6CB9}\x{6CBA}' . +'\x{6CBB}\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC0}\x{6CC1}\x{6CC2}\x{6CC3}' . +'\x{6CC4}\x{6CC5}\x{6CC6}\x{6CC7}\x{6CC8}\x{6CC9}\x{6CCA}\x{6CCB}\x{6CCC}' . +'\x{6CCD}\x{6CCE}\x{6CCF}\x{6CD0}\x{6CD1}\x{6CD2}\x{6CD3}\x{6CD4}\x{6CD5}' . +'\x{6CD6}\x{6CD7}\x{6CD9}\x{6CDA}\x{6CDB}\x{6CDC}\x{6CDD}\x{6CDE}\x{6CDF}' . +'\x{6CE0}\x{6CE1}\x{6CE2}\x{6CE3}\x{6CE4}\x{6CE5}\x{6CE6}\x{6CE7}\x{6CE8}' . +'\x{6CE9}\x{6CEA}\x{6CEB}\x{6CEC}\x{6CED}\x{6CEE}\x{6CEF}\x{6CF0}\x{6CF1}' . +'\x{6CF2}\x{6CF3}\x{6CF5}\x{6CF6}\x{6CF7}\x{6CF8}\x{6CF9}\x{6CFA}\x{6CFB}' . +'\x{6CFC}\x{6CFD}\x{6CFE}\x{6CFF}\x{6D00}\x{6D01}\x{6D03}\x{6D04}\x{6D05}' . +'\x{6D06}\x{6D07}\x{6D08}\x{6D09}\x{6D0A}\x{6D0B}\x{6D0C}\x{6D0D}\x{6D0E}' . +'\x{6D0F}\x{6D10}\x{6D11}\x{6D12}\x{6D13}\x{6D14}\x{6D15}\x{6D16}\x{6D17}' . +'\x{6D18}\x{6D19}\x{6D1A}\x{6D1B}\x{6D1D}\x{6D1E}\x{6D1F}\x{6D20}\x{6D21}' . +'\x{6D22}\x{6D23}\x{6D25}\x{6D26}\x{6D27}\x{6D28}\x{6D29}\x{6D2A}\x{6D2B}' . +'\x{6D2C}\x{6D2D}\x{6D2E}\x{6D2F}\x{6D30}\x{6D31}\x{6D32}\x{6D33}\x{6D34}' . +'\x{6D35}\x{6D36}\x{6D37}\x{6D38}\x{6D39}\x{6D3A}\x{6D3B}\x{6D3C}\x{6D3D}' . +'\x{6D3E}\x{6D3F}\x{6D40}\x{6D41}\x{6D42}\x{6D43}\x{6D44}\x{6D45}\x{6D46}' . +'\x{6D47}\x{6D48}\x{6D49}\x{6D4A}\x{6D4B}\x{6D4C}\x{6D4D}\x{6D4E}\x{6D4F}' . +'\x{6D50}\x{6D51}\x{6D52}\x{6D53}\x{6D54}\x{6D55}\x{6D56}\x{6D57}\x{6D58}' . +'\x{6D59}\x{6D5A}\x{6D5B}\x{6D5C}\x{6D5D}\x{6D5E}\x{6D5F}\x{6D60}\x{6D61}' . +'\x{6D62}\x{6D63}\x{6D64}\x{6D65}\x{6D66}\x{6D67}\x{6D68}\x{6D69}\x{6D6A}' . +'\x{6D6B}\x{6D6C}\x{6D6D}\x{6D6E}\x{6D6F}\x{6D70}\x{6D72}\x{6D73}\x{6D74}' . +'\x{6D75}\x{6D76}\x{6D77}\x{6D78}\x{6D79}\x{6D7A}\x{6D7B}\x{6D7C}\x{6D7D}' . +'\x{6D7E}\x{6D7F}\x{6D80}\x{6D82}\x{6D83}\x{6D84}\x{6D85}\x{6D86}\x{6D87}' . +'\x{6D88}\x{6D89}\x{6D8A}\x{6D8B}\x{6D8C}\x{6D8D}\x{6D8E}\x{6D8F}\x{6D90}' . +'\x{6D91}\x{6D92}\x{6D93}\x{6D94}\x{6D95}\x{6D97}\x{6D98}\x{6D99}\x{6D9A}' . +'\x{6D9B}\x{6D9D}\x{6D9E}\x{6D9F}\x{6DA0}\x{6DA1}\x{6DA2}\x{6DA3}\x{6DA4}' . +'\x{6DA5}\x{6DA6}\x{6DA7}\x{6DA8}\x{6DA9}\x{6DAA}\x{6DAB}\x{6DAC}\x{6DAD}' . +'\x{6DAE}\x{6DAF}\x{6DB2}\x{6DB3}\x{6DB4}\x{6DB5}\x{6DB7}\x{6DB8}\x{6DB9}' . +'\x{6DBA}\x{6DBB}\x{6DBC}\x{6DBD}\x{6DBE}\x{6DBF}\x{6DC0}\x{6DC1}\x{6DC2}' . +'\x{6DC3}\x{6DC4}\x{6DC5}\x{6DC6}\x{6DC7}\x{6DC8}\x{6DC9}\x{6DCA}\x{6DCB}' . +'\x{6DCC}\x{6DCD}\x{6DCE}\x{6DCF}\x{6DD0}\x{6DD1}\x{6DD2}\x{6DD3}\x{6DD4}' . +'\x{6DD5}\x{6DD6}\x{6DD7}\x{6DD8}\x{6DD9}\x{6DDA}\x{6DDB}\x{6DDC}\x{6DDD}' . +'\x{6DDE}\x{6DDF}\x{6DE0}\x{6DE1}\x{6DE2}\x{6DE3}\x{6DE4}\x{6DE5}\x{6DE6}' . +'\x{6DE7}\x{6DE8}\x{6DE9}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DED}\x{6DEE}\x{6DEF}' . +'\x{6DF0}\x{6DF1}\x{6DF2}\x{6DF3}\x{6DF4}\x{6DF5}\x{6DF6}\x{6DF7}\x{6DF8}' . +'\x{6DF9}\x{6DFA}\x{6DFB}\x{6DFC}\x{6DFD}\x{6E00}\x{6E03}\x{6E04}\x{6E05}' . +'\x{6E07}\x{6E08}\x{6E09}\x{6E0A}\x{6E0B}\x{6E0C}\x{6E0D}\x{6E0E}\x{6E0F}' . +'\x{6E10}\x{6E11}\x{6E14}\x{6E15}\x{6E16}\x{6E17}\x{6E19}\x{6E1A}\x{6E1B}' . +'\x{6E1C}\x{6E1D}\x{6E1E}\x{6E1F}\x{6E20}\x{6E21}\x{6E22}\x{6E23}\x{6E24}' . +'\x{6E25}\x{6E26}\x{6E27}\x{6E28}\x{6E29}\x{6E2B}\x{6E2C}\x{6E2D}\x{6E2E}' . +'\x{6E2F}\x{6E30}\x{6E31}\x{6E32}\x{6E33}\x{6E34}\x{6E35}\x{6E36}\x{6E37}' . +'\x{6E38}\x{6E39}\x{6E3A}\x{6E3B}\x{6E3C}\x{6E3D}\x{6E3E}\x{6E3F}\x{6E40}' . +'\x{6E41}\x{6E42}\x{6E43}\x{6E44}\x{6E45}\x{6E46}\x{6E47}\x{6E48}\x{6E49}' . +'\x{6E4A}\x{6E4B}\x{6E4D}\x{6E4E}\x{6E4F}\x{6E50}\x{6E51}\x{6E52}\x{6E53}' . +'\x{6E54}\x{6E55}\x{6E56}\x{6E57}\x{6E58}\x{6E59}\x{6E5A}\x{6E5B}\x{6E5C}' . +'\x{6E5D}\x{6E5E}\x{6E5F}\x{6E60}\x{6E61}\x{6E62}\x{6E63}\x{6E64}\x{6E65}' . +'\x{6E66}\x{6E67}\x{6E68}\x{6E69}\x{6E6A}\x{6E6B}\x{6E6D}\x{6E6E}\x{6E6F}' . +'\x{6E70}\x{6E71}\x{6E72}\x{6E73}\x{6E74}\x{6E75}\x{6E77}\x{6E78}\x{6E79}' . +'\x{6E7E}\x{6E7F}\x{6E80}\x{6E81}\x{6E82}\x{6E83}\x{6E84}\x{6E85}\x{6E86}' . +'\x{6E87}\x{6E88}\x{6E89}\x{6E8A}\x{6E8D}\x{6E8E}\x{6E8F}\x{6E90}\x{6E91}' . +'\x{6E92}\x{6E93}\x{6E94}\x{6E96}\x{6E97}\x{6E98}\x{6E99}\x{6E9A}\x{6E9B}' . +'\x{6E9C}\x{6E9D}\x{6E9E}\x{6E9F}\x{6EA0}\x{6EA1}\x{6EA2}\x{6EA3}\x{6EA4}' . +'\x{6EA5}\x{6EA6}\x{6EA7}\x{6EA8}\x{6EA9}\x{6EAA}\x{6EAB}\x{6EAC}\x{6EAD}' . +'\x{6EAE}\x{6EAF}\x{6EB0}\x{6EB1}\x{6EB2}\x{6EB3}\x{6EB4}\x{6EB5}\x{6EB6}' . +'\x{6EB7}\x{6EB8}\x{6EB9}\x{6EBA}\x{6EBB}\x{6EBC}\x{6EBD}\x{6EBE}\x{6EBF}' . +'\x{6EC0}\x{6EC1}\x{6EC2}\x{6EC3}\x{6EC4}\x{6EC5}\x{6EC6}\x{6EC7}\x{6EC8}' . +'\x{6EC9}\x{6ECA}\x{6ECB}\x{6ECC}\x{6ECD}\x{6ECE}\x{6ECF}\x{6ED0}\x{6ED1}' . +'\x{6ED2}\x{6ED3}\x{6ED4}\x{6ED5}\x{6ED6}\x{6ED7}\x{6ED8}\x{6ED9}\x{6EDA}' . +'\x{6EDC}\x{6EDE}\x{6EDF}\x{6EE0}\x{6EE1}\x{6EE2}\x{6EE4}\x{6EE5}\x{6EE6}' . +'\x{6EE7}\x{6EE8}\x{6EE9}\x{6EEA}\x{6EEB}\x{6EEC}\x{6EED}\x{6EEE}\x{6EEF}' . +'\x{6EF0}\x{6EF1}\x{6EF2}\x{6EF3}\x{6EF4}\x{6EF5}\x{6EF6}\x{6EF7}\x{6EF8}' . +'\x{6EF9}\x{6EFA}\x{6EFB}\x{6EFC}\x{6EFD}\x{6EFE}\x{6EFF}\x{6F00}\x{6F01}' . +'\x{6F02}\x{6F03}\x{6F05}\x{6F06}\x{6F07}\x{6F08}\x{6F09}\x{6F0A}\x{6F0C}' . +'\x{6F0D}\x{6F0E}\x{6F0F}\x{6F10}\x{6F11}\x{6F12}\x{6F13}\x{6F14}\x{6F15}' . +'\x{6F16}\x{6F17}\x{6F18}\x{6F19}\x{6F1A}\x{6F1B}\x{6F1C}\x{6F1D}\x{6F1E}' . +'\x{6F1F}\x{6F20}\x{6F21}\x{6F22}\x{6F23}\x{6F24}\x{6F25}\x{6F26}\x{6F27}' . +'\x{6F28}\x{6F29}\x{6F2A}\x{6F2B}\x{6F2C}\x{6F2D}\x{6F2E}\x{6F2F}\x{6F30}' . +'\x{6F31}\x{6F32}\x{6F33}\x{6F34}\x{6F35}\x{6F36}\x{6F37}\x{6F38}\x{6F39}' . +'\x{6F3A}\x{6F3B}\x{6F3C}\x{6F3D}\x{6F3E}\x{6F3F}\x{6F40}\x{6F41}\x{6F43}' . +'\x{6F44}\x{6F45}\x{6F46}\x{6F47}\x{6F49}\x{6F4B}\x{6F4C}\x{6F4D}\x{6F4E}' . +'\x{6F4F}\x{6F50}\x{6F51}\x{6F52}\x{6F53}\x{6F54}\x{6F55}\x{6F56}\x{6F57}' . +'\x{6F58}\x{6F59}\x{6F5A}\x{6F5B}\x{6F5C}\x{6F5D}\x{6F5E}\x{6F5F}\x{6F60}' . +'\x{6F61}\x{6F62}\x{6F63}\x{6F64}\x{6F65}\x{6F66}\x{6F67}\x{6F68}\x{6F69}' . +'\x{6F6A}\x{6F6B}\x{6F6C}\x{6F6D}\x{6F6E}\x{6F6F}\x{6F70}\x{6F71}\x{6F72}' . +'\x{6F73}\x{6F74}\x{6F75}\x{6F76}\x{6F77}\x{6F78}\x{6F7A}\x{6F7B}\x{6F7C}' . +'\x{6F7D}\x{6F7E}\x{6F7F}\x{6F80}\x{6F81}\x{6F82}\x{6F83}\x{6F84}\x{6F85}' . +'\x{6F86}\x{6F87}\x{6F88}\x{6F89}\x{6F8A}\x{6F8B}\x{6F8C}\x{6F8D}\x{6F8E}' . +'\x{6F8F}\x{6F90}\x{6F91}\x{6F92}\x{6F93}\x{6F94}\x{6F95}\x{6F96}\x{6F97}' . +'\x{6F99}\x{6F9B}\x{6F9C}\x{6F9D}\x{6F9E}\x{6FA0}\x{6FA1}\x{6FA2}\x{6FA3}' . +'\x{6FA4}\x{6FA5}\x{6FA6}\x{6FA7}\x{6FA8}\x{6FA9}\x{6FAA}\x{6FAB}\x{6FAC}' . +'\x{6FAD}\x{6FAE}\x{6FAF}\x{6FB0}\x{6FB1}\x{6FB2}\x{6FB3}\x{6FB4}\x{6FB5}' . +'\x{6FB6}\x{6FB8}\x{6FB9}\x{6FBA}\x{6FBB}\x{6FBC}\x{6FBD}\x{6FBE}\x{6FBF}' . +'\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC4}\x{6FC6}\x{6FC7}\x{6FC8}\x{6FC9}' . +'\x{6FCA}\x{6FCB}\x{6FCC}\x{6FCD}\x{6FCE}\x{6FCF}\x{6FD1}\x{6FD2}\x{6FD4}' . +'\x{6FD5}\x{6FD6}\x{6FD7}\x{6FD8}\x{6FD9}\x{6FDA}\x{6FDB}\x{6FDC}\x{6FDD}' . +'\x{6FDE}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE2}\x{6FE3}\x{6FE4}\x{6FE5}\x{6FE6}' . +'\x{6FE7}\x{6FE8}\x{6FE9}\x{6FEA}\x{6FEB}\x{6FEC}\x{6FED}\x{6FEE}\x{6FEF}' . +'\x{6FF0}\x{6FF1}\x{6FF2}\x{6FF3}\x{6FF4}\x{6FF6}\x{6FF7}\x{6FF8}\x{6FF9}' . +'\x{6FFA}\x{6FFB}\x{6FFC}\x{6FFE}\x{6FFF}\x{7000}\x{7001}\x{7002}\x{7003}' . +'\x{7004}\x{7005}\x{7006}\x{7007}\x{7008}\x{7009}\x{700A}\x{700B}\x{700C}' . +'\x{700D}\x{700E}\x{700F}\x{7011}\x{7012}\x{7014}\x{7015}\x{7016}\x{7017}' . +'\x{7018}\x{7019}\x{701A}\x{701B}\x{701C}\x{701D}\x{701F}\x{7020}\x{7021}' . +'\x{7022}\x{7023}\x{7024}\x{7025}\x{7026}\x{7027}\x{7028}\x{7029}\x{702A}' . +'\x{702B}\x{702C}\x{702D}\x{702E}\x{702F}\x{7030}\x{7031}\x{7032}\x{7033}' . +'\x{7034}\x{7035}\x{7036}\x{7037}\x{7038}\x{7039}\x{703A}\x{703B}\x{703C}' . +'\x{703D}\x{703E}\x{703F}\x{7040}\x{7041}\x{7042}\x{7043}\x{7044}\x{7045}' . +'\x{7046}\x{7048}\x{7049}\x{704A}\x{704C}\x{704D}\x{704F}\x{7050}\x{7051}' . +'\x{7052}\x{7053}\x{7054}\x{7055}\x{7056}\x{7057}\x{7058}\x{7059}\x{705A}' . +'\x{705B}\x{705C}\x{705D}\x{705E}\x{705F}\x{7060}\x{7061}\x{7062}\x{7063}' . +'\x{7064}\x{7065}\x{7066}\x{7067}\x{7068}\x{7069}\x{706A}\x{706B}\x{706C}' . +'\x{706D}\x{706E}\x{706F}\x{7070}\x{7071}\x{7074}\x{7075}\x{7076}\x{7077}' . +'\x{7078}\x{7079}\x{707A}\x{707C}\x{707D}\x{707E}\x{707F}\x{7080}\x{7082}' . +'\x{7083}\x{7084}\x{7085}\x{7086}\x{7087}\x{7088}\x{7089}\x{708A}\x{708B}' . +'\x{708C}\x{708E}\x{708F}\x{7090}\x{7091}\x{7092}\x{7093}\x{7094}\x{7095}' . +'\x{7096}\x{7098}\x{7099}\x{709A}\x{709C}\x{709D}\x{709E}\x{709F}\x{70A0}' . +'\x{70A1}\x{70A2}\x{70A3}\x{70A4}\x{70A5}\x{70A6}\x{70A7}\x{70A8}\x{70A9}' . +'\x{70AB}\x{70AC}\x{70AD}\x{70AE}\x{70AF}\x{70B0}\x{70B1}\x{70B3}\x{70B4}' . +'\x{70B5}\x{70B7}\x{70B8}\x{70B9}\x{70BA}\x{70BB}\x{70BC}\x{70BD}\x{70BE}' . +'\x{70BF}\x{70C0}\x{70C1}\x{70C2}\x{70C3}\x{70C4}\x{70C5}\x{70C6}\x{70C7}' . +'\x{70C8}\x{70C9}\x{70CA}\x{70CB}\x{70CC}\x{70CD}\x{70CE}\x{70CF}\x{70D0}' . +'\x{70D1}\x{70D2}\x{70D3}\x{70D4}\x{70D6}\x{70D7}\x{70D8}\x{70D9}\x{70DA}' . +'\x{70DB}\x{70DC}\x{70DD}\x{70DE}\x{70DF}\x{70E0}\x{70E1}\x{70E2}\x{70E3}' . +'\x{70E4}\x{70E5}\x{70E6}\x{70E7}\x{70E8}\x{70E9}\x{70EA}\x{70EB}\x{70EC}' . +'\x{70ED}\x{70EE}\x{70EF}\x{70F0}\x{70F1}\x{70F2}\x{70F3}\x{70F4}\x{70F5}' . +'\x{70F6}\x{70F7}\x{70F8}\x{70F9}\x{70FA}\x{70FB}\x{70FC}\x{70FD}\x{70FF}' . +'\x{7100}\x{7101}\x{7102}\x{7103}\x{7104}\x{7105}\x{7106}\x{7107}\x{7109}' . +'\x{710A}\x{710B}\x{710C}\x{710D}\x{710E}\x{710F}\x{7110}\x{7111}\x{7112}' . +'\x{7113}\x{7115}\x{7116}\x{7117}\x{7118}\x{7119}\x{711A}\x{711B}\x{711C}' . +'\x{711D}\x{711E}\x{711F}\x{7120}\x{7121}\x{7122}\x{7123}\x{7125}\x{7126}' . +'\x{7127}\x{7128}\x{7129}\x{712A}\x{712B}\x{712C}\x{712D}\x{712E}\x{712F}' . +'\x{7130}\x{7131}\x{7132}\x{7135}\x{7136}\x{7137}\x{7138}\x{7139}\x{713A}' . +'\x{713B}\x{713D}\x{713E}\x{713F}\x{7140}\x{7141}\x{7142}\x{7143}\x{7144}' . +'\x{7145}\x{7146}\x{7147}\x{7148}\x{7149}\x{714A}\x{714B}\x{714C}\x{714D}' . +'\x{714E}\x{714F}\x{7150}\x{7151}\x{7152}\x{7153}\x{7154}\x{7156}\x{7158}' . +'\x{7159}\x{715A}\x{715B}\x{715C}\x{715D}\x{715E}\x{715F}\x{7160}\x{7161}' . +'\x{7162}\x{7163}\x{7164}\x{7165}\x{7166}\x{7167}\x{7168}\x{7169}\x{716A}' . +'\x{716C}\x{716E}\x{716F}\x{7170}\x{7171}\x{7172}\x{7173}\x{7174}\x{7175}' . +'\x{7176}\x{7177}\x{7178}\x{7179}\x{717A}\x{717B}\x{717C}\x{717D}\x{717E}' . +'\x{717F}\x{7180}\x{7181}\x{7182}\x{7183}\x{7184}\x{7185}\x{7186}\x{7187}' . +'\x{7188}\x{7189}\x{718A}\x{718B}\x{718C}\x{718E}\x{718F}\x{7190}\x{7191}' . +'\x{7192}\x{7193}\x{7194}\x{7195}\x{7197}\x{7198}\x{7199}\x{719A}\x{719B}' . +'\x{719C}\x{719D}\x{719E}\x{719F}\x{71A0}\x{71A1}\x{71A2}\x{71A3}\x{71A4}' . +'\x{71A5}\x{71A7}\x{71A8}\x{71A9}\x{71AA}\x{71AC}\x{71AD}\x{71AE}\x{71AF}' . +'\x{71B0}\x{71B1}\x{71B2}\x{71B3}\x{71B4}\x{71B5}\x{71B7}\x{71B8}\x{71B9}' . +'\x{71BA}\x{71BB}\x{71BC}\x{71BD}\x{71BE}\x{71BF}\x{71C0}\x{71C1}\x{71C2}' . +'\x{71C3}\x{71C4}\x{71C5}\x{71C6}\x{71C7}\x{71C8}\x{71C9}\x{71CA}\x{71CB}' . +'\x{71CD}\x{71CE}\x{71CF}\x{71D0}\x{71D1}\x{71D2}\x{71D4}\x{71D5}\x{71D6}' . +'\x{71D7}\x{71D8}\x{71D9}\x{71DA}\x{71DB}\x{71DC}\x{71DD}\x{71DE}\x{71DF}' . +'\x{71E0}\x{71E1}\x{71E2}\x{71E3}\x{71E4}\x{71E5}\x{71E6}\x{71E7}\x{71E8}' . +'\x{71E9}\x{71EA}\x{71EB}\x{71EC}\x{71ED}\x{71EE}\x{71EF}\x{71F0}\x{71F1}' . +'\x{71F2}\x{71F4}\x{71F5}\x{71F6}\x{71F7}\x{71F8}\x{71F9}\x{71FB}\x{71FC}' . +'\x{71FD}\x{71FE}\x{71FF}\x{7201}\x{7202}\x{7203}\x{7204}\x{7205}\x{7206}' . +'\x{7207}\x{7208}\x{7209}\x{720A}\x{720C}\x{720D}\x{720E}\x{720F}\x{7210}' . +'\x{7212}\x{7213}\x{7214}\x{7216}\x{7218}\x{7219}\x{721A}\x{721B}\x{721C}' . +'\x{721D}\x{721E}\x{721F}\x{7221}\x{7222}\x{7223}\x{7226}\x{7227}\x{7228}' . +'\x{7229}\x{722A}\x{722B}\x{722C}\x{722D}\x{722E}\x{7230}\x{7231}\x{7232}' . +'\x{7233}\x{7235}\x{7236}\x{7237}\x{7238}\x{7239}\x{723A}\x{723B}\x{723C}' . +'\x{723D}\x{723E}\x{723F}\x{7240}\x{7241}\x{7242}\x{7243}\x{7244}\x{7246}' . +'\x{7247}\x{7248}\x{7249}\x{724A}\x{724B}\x{724C}\x{724D}\x{724F}\x{7251}' . +'\x{7252}\x{7253}\x{7254}\x{7256}\x{7257}\x{7258}\x{7259}\x{725A}\x{725B}' . +'\x{725C}\x{725D}\x{725E}\x{725F}\x{7260}\x{7261}\x{7262}\x{7263}\x{7264}' . +'\x{7265}\x{7266}\x{7267}\x{7268}\x{7269}\x{726A}\x{726B}\x{726C}\x{726D}' . +'\x{726E}\x{726F}\x{7270}\x{7271}\x{7272}\x{7273}\x{7274}\x{7275}\x{7276}' . +'\x{7277}\x{7278}\x{7279}\x{727A}\x{727B}\x{727C}\x{727D}\x{727E}\x{727F}' . +'\x{7280}\x{7281}\x{7282}\x{7283}\x{7284}\x{7285}\x{7286}\x{7287}\x{7288}' . +'\x{7289}\x{728A}\x{728B}\x{728C}\x{728D}\x{728E}\x{728F}\x{7290}\x{7291}' . +'\x{7292}\x{7293}\x{7294}\x{7295}\x{7296}\x{7297}\x{7298}\x{7299}\x{729A}' . +'\x{729B}\x{729C}\x{729D}\x{729E}\x{729F}\x{72A1}\x{72A2}\x{72A3}\x{72A4}' . +'\x{72A5}\x{72A6}\x{72A7}\x{72A8}\x{72A9}\x{72AA}\x{72AC}\x{72AD}\x{72AE}' . +'\x{72AF}\x{72B0}\x{72B1}\x{72B2}\x{72B3}\x{72B4}\x{72B5}\x{72B6}\x{72B7}' . +'\x{72B8}\x{72B9}\x{72BA}\x{72BB}\x{72BC}\x{72BD}\x{72BF}\x{72C0}\x{72C1}' . +'\x{72C2}\x{72C3}\x{72C4}\x{72C5}\x{72C6}\x{72C7}\x{72C8}\x{72C9}\x{72CA}' . +'\x{72CB}\x{72CC}\x{72CD}\x{72CE}\x{72CF}\x{72D0}\x{72D1}\x{72D2}\x{72D3}' . +'\x{72D4}\x{72D5}\x{72D6}\x{72D7}\x{72D8}\x{72D9}\x{72DA}\x{72DB}\x{72DC}' . +'\x{72DD}\x{72DE}\x{72DF}\x{72E0}\x{72E1}\x{72E2}\x{72E3}\x{72E4}\x{72E5}' . +'\x{72E6}\x{72E7}\x{72E8}\x{72E9}\x{72EA}\x{72EB}\x{72EC}\x{72ED}\x{72EE}' . +'\x{72EF}\x{72F0}\x{72F1}\x{72F2}\x{72F3}\x{72F4}\x{72F5}\x{72F6}\x{72F7}' . +'\x{72F8}\x{72F9}\x{72FA}\x{72FB}\x{72FC}\x{72FD}\x{72FE}\x{72FF}\x{7300}' . +'\x{7301}\x{7303}\x{7304}\x{7305}\x{7306}\x{7307}\x{7308}\x{7309}\x{730A}' . +'\x{730B}\x{730C}\x{730D}\x{730E}\x{730F}\x{7311}\x{7312}\x{7313}\x{7314}' . +'\x{7315}\x{7316}\x{7317}\x{7318}\x{7319}\x{731A}\x{731B}\x{731C}\x{731D}' . +'\x{731E}\x{7320}\x{7321}\x{7322}\x{7323}\x{7324}\x{7325}\x{7326}\x{7327}' . +'\x{7329}\x{732A}\x{732B}\x{732C}\x{732D}\x{732E}\x{7330}\x{7331}\x{7332}' . +'\x{7333}\x{7334}\x{7335}\x{7336}\x{7337}\x{7338}\x{7339}\x{733A}\x{733B}' . +'\x{733C}\x{733D}\x{733E}\x{733F}\x{7340}\x{7341}\x{7342}\x{7343}\x{7344}' . +'\x{7345}\x{7346}\x{7347}\x{7348}\x{7349}\x{734A}\x{734B}\x{734C}\x{734D}' . +'\x{734E}\x{7350}\x{7351}\x{7352}\x{7354}\x{7355}\x{7356}\x{7357}\x{7358}' . +'\x{7359}\x{735A}\x{735B}\x{735C}\x{735D}\x{735E}\x{735F}\x{7360}\x{7361}' . +'\x{7362}\x{7364}\x{7365}\x{7366}\x{7367}\x{7368}\x{7369}\x{736A}\x{736B}' . +'\x{736C}\x{736D}\x{736E}\x{736F}\x{7370}\x{7371}\x{7372}\x{7373}\x{7374}' . +'\x{7375}\x{7376}\x{7377}\x{7378}\x{7379}\x{737A}\x{737B}\x{737C}\x{737D}' . +'\x{737E}\x{737F}\x{7380}\x{7381}\x{7382}\x{7383}\x{7384}\x{7385}\x{7386}' . +'\x{7387}\x{7388}\x{7389}\x{738A}\x{738B}\x{738C}\x{738D}\x{738E}\x{738F}' . +'\x{7390}\x{7391}\x{7392}\x{7393}\x{7394}\x{7395}\x{7396}\x{7397}\x{7398}' . +'\x{7399}\x{739A}\x{739B}\x{739D}\x{739E}\x{739F}\x{73A0}\x{73A1}\x{73A2}' . +'\x{73A3}\x{73A4}\x{73A5}\x{73A6}\x{73A7}\x{73A8}\x{73A9}\x{73AA}\x{73AB}' . +'\x{73AC}\x{73AD}\x{73AE}\x{73AF}\x{73B0}\x{73B1}\x{73B2}\x{73B3}\x{73B4}' . +'\x{73B5}\x{73B6}\x{73B7}\x{73B8}\x{73B9}\x{73BA}\x{73BB}\x{73BC}\x{73BD}' . +'\x{73BE}\x{73BF}\x{73C0}\x{73C2}\x{73C3}\x{73C4}\x{73C5}\x{73C6}\x{73C7}' . +'\x{73C8}\x{73C9}\x{73CA}\x{73CB}\x{73CC}\x{73CD}\x{73CE}\x{73CF}\x{73D0}' . +'\x{73D1}\x{73D2}\x{73D3}\x{73D4}\x{73D5}\x{73D6}\x{73D7}\x{73D8}\x{73D9}' . +'\x{73DA}\x{73DB}\x{73DC}\x{73DD}\x{73DE}\x{73DF}\x{73E0}\x{73E2}\x{73E3}' . +'\x{73E5}\x{73E6}\x{73E7}\x{73E8}\x{73E9}\x{73EA}\x{73EB}\x{73EC}\x{73ED}' . +'\x{73EE}\x{73EF}\x{73F0}\x{73F1}\x{73F2}\x{73F4}\x{73F5}\x{73F6}\x{73F7}' . +'\x{73F8}\x{73F9}\x{73FA}\x{73FC}\x{73FD}\x{73FE}\x{73FF}\x{7400}\x{7401}' . +'\x{7402}\x{7403}\x{7404}\x{7405}\x{7406}\x{7407}\x{7408}\x{7409}\x{740A}' . +'\x{740B}\x{740C}\x{740D}\x{740E}\x{740F}\x{7410}\x{7411}\x{7412}\x{7413}' . +'\x{7414}\x{7415}\x{7416}\x{7417}\x{7419}\x{741A}\x{741B}\x{741C}\x{741D}' . +'\x{741E}\x{741F}\x{7420}\x{7421}\x{7422}\x{7423}\x{7424}\x{7425}\x{7426}' . +'\x{7427}\x{7428}\x{7429}\x{742A}\x{742B}\x{742C}\x{742D}\x{742E}\x{742F}' . +'\x{7430}\x{7431}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{7437}\x{7438}' . +'\x{743A}\x{743B}\x{743C}\x{743D}\x{743F}\x{7440}\x{7441}\x{7442}\x{7443}' . +'\x{7444}\x{7445}\x{7446}\x{7448}\x{744A}\x{744B}\x{744C}\x{744D}\x{744E}' . +'\x{744F}\x{7450}\x{7451}\x{7452}\x{7453}\x{7454}\x{7455}\x{7456}\x{7457}' . +'\x{7459}\x{745A}\x{745B}\x{745C}\x{745D}\x{745E}\x{745F}\x{7461}\x{7462}' . +'\x{7463}\x{7464}\x{7465}\x{7466}\x{7467}\x{7468}\x{7469}\x{746A}\x{746B}' . +'\x{746C}\x{746D}\x{746E}\x{746F}\x{7470}\x{7471}\x{7472}\x{7473}\x{7474}' . +'\x{7475}\x{7476}\x{7477}\x{7478}\x{7479}\x{747A}\x{747C}\x{747D}\x{747E}' . +'\x{747F}\x{7480}\x{7481}\x{7482}\x{7483}\x{7485}\x{7486}\x{7487}\x{7488}' . +'\x{7489}\x{748A}\x{748B}\x{748C}\x{748D}\x{748E}\x{748F}\x{7490}\x{7491}' . +'\x{7492}\x{7493}\x{7494}\x{7495}\x{7497}\x{7498}\x{7499}\x{749A}\x{749B}' . +'\x{749C}\x{749E}\x{749F}\x{74A0}\x{74A1}\x{74A3}\x{74A4}\x{74A5}\x{74A6}' . +'\x{74A7}\x{74A8}\x{74A9}\x{74AA}\x{74AB}\x{74AC}\x{74AD}\x{74AE}\x{74AF}' . +'\x{74B0}\x{74B1}\x{74B2}\x{74B3}\x{74B4}\x{74B5}\x{74B6}\x{74B7}\x{74B8}' . +'\x{74B9}\x{74BA}\x{74BB}\x{74BC}\x{74BD}\x{74BE}\x{74BF}\x{74C0}\x{74C1}' . +'\x{74C2}\x{74C3}\x{74C4}\x{74C5}\x{74C6}\x{74CA}\x{74CB}\x{74CD}\x{74CE}' . +'\x{74CF}\x{74D0}\x{74D1}\x{74D2}\x{74D3}\x{74D4}\x{74D5}\x{74D6}\x{74D7}' . +'\x{74D8}\x{74D9}\x{74DA}\x{74DB}\x{74DC}\x{74DD}\x{74DE}\x{74DF}\x{74E0}' . +'\x{74E1}\x{74E2}\x{74E3}\x{74E4}\x{74E5}\x{74E6}\x{74E7}\x{74E8}\x{74E9}' . +'\x{74EA}\x{74EC}\x{74ED}\x{74EE}\x{74EF}\x{74F0}\x{74F1}\x{74F2}\x{74F3}' . +'\x{74F4}\x{74F5}\x{74F6}\x{74F7}\x{74F8}\x{74F9}\x{74FA}\x{74FB}\x{74FC}' . +'\x{74FD}\x{74FE}\x{74FF}\x{7500}\x{7501}\x{7502}\x{7503}\x{7504}\x{7505}' . +'\x{7506}\x{7507}\x{7508}\x{7509}\x{750A}\x{750B}\x{750C}\x{750D}\x{750F}' . +'\x{7510}\x{7511}\x{7512}\x{7513}\x{7514}\x{7515}\x{7516}\x{7517}\x{7518}' . +'\x{7519}\x{751A}\x{751B}\x{751C}\x{751D}\x{751E}\x{751F}\x{7521}\x{7522}' . +'\x{7523}\x{7524}\x{7525}\x{7526}\x{7527}\x{7528}\x{7529}\x{752A}\x{752B}' . +'\x{752C}\x{752D}\x{752E}\x{752F}\x{7530}\x{7531}\x{7532}\x{7533}\x{7535}' . +'\x{7536}\x{7537}\x{7538}\x{7539}\x{753A}\x{753B}\x{753C}\x{753D}\x{753E}' . +'\x{753F}\x{7540}\x{7542}\x{7543}\x{7544}\x{7545}\x{7546}\x{7547}\x{7548}' . +'\x{7549}\x{754B}\x{754C}\x{754D}\x{754E}\x{754F}\x{7550}\x{7551}\x{7553}' . +'\x{7554}\x{7556}\x{7557}\x{7558}\x{7559}\x{755A}\x{755B}\x{755C}\x{755D}' . +'\x{755F}\x{7560}\x{7562}\x{7563}\x{7564}\x{7565}\x{7566}\x{7567}\x{7568}' . +'\x{7569}\x{756A}\x{756B}\x{756C}\x{756D}\x{756E}\x{756F}\x{7570}\x{7572}' . +'\x{7574}\x{7575}\x{7576}\x{7577}\x{7578}\x{7579}\x{757C}\x{757D}\x{757E}' . +'\x{757F}\x{7580}\x{7581}\x{7582}\x{7583}\x{7584}\x{7586}\x{7587}\x{7588}' . +'\x{7589}\x{758A}\x{758B}\x{758C}\x{758D}\x{758F}\x{7590}\x{7591}\x{7592}' . +'\x{7593}\x{7594}\x{7595}\x{7596}\x{7597}\x{7598}\x{7599}\x{759A}\x{759B}' . +'\x{759C}\x{759D}\x{759E}\x{759F}\x{75A0}\x{75A1}\x{75A2}\x{75A3}\x{75A4}' . +'\x{75A5}\x{75A6}\x{75A7}\x{75A8}\x{75AA}\x{75AB}\x{75AC}\x{75AD}\x{75AE}' . +'\x{75AF}\x{75B0}\x{75B1}\x{75B2}\x{75B3}\x{75B4}\x{75B5}\x{75B6}\x{75B8}' . +'\x{75B9}\x{75BA}\x{75BB}\x{75BC}\x{75BD}\x{75BE}\x{75BF}\x{75C0}\x{75C1}' . +'\x{75C2}\x{75C3}\x{75C4}\x{75C5}\x{75C6}\x{75C7}\x{75C8}\x{75C9}\x{75CA}' . +'\x{75CB}\x{75CC}\x{75CD}\x{75CE}\x{75CF}\x{75D0}\x{75D1}\x{75D2}\x{75D3}' . +'\x{75D4}\x{75D5}\x{75D6}\x{75D7}\x{75D8}\x{75D9}\x{75DA}\x{75DB}\x{75DD}' . +'\x{75DE}\x{75DF}\x{75E0}\x{75E1}\x{75E2}\x{75E3}\x{75E4}\x{75E5}\x{75E6}' . +'\x{75E7}\x{75E8}\x{75EA}\x{75EB}\x{75EC}\x{75ED}\x{75EF}\x{75F0}\x{75F1}' . +'\x{75F2}\x{75F3}\x{75F4}\x{75F5}\x{75F6}\x{75F7}\x{75F8}\x{75F9}\x{75FA}' . +'\x{75FB}\x{75FC}\x{75FD}\x{75FE}\x{75FF}\x{7600}\x{7601}\x{7602}\x{7603}' . +'\x{7604}\x{7605}\x{7606}\x{7607}\x{7608}\x{7609}\x{760A}\x{760B}\x{760C}' . +'\x{760D}\x{760E}\x{760F}\x{7610}\x{7611}\x{7612}\x{7613}\x{7614}\x{7615}' . +'\x{7616}\x{7617}\x{7618}\x{7619}\x{761A}\x{761B}\x{761C}\x{761D}\x{761E}' . +'\x{761F}\x{7620}\x{7621}\x{7622}\x{7623}\x{7624}\x{7625}\x{7626}\x{7627}' . +'\x{7628}\x{7629}\x{762A}\x{762B}\x{762D}\x{762E}\x{762F}\x{7630}\x{7631}' . +'\x{7632}\x{7633}\x{7634}\x{7635}\x{7636}\x{7637}\x{7638}\x{7639}\x{763A}' . +'\x{763B}\x{763C}\x{763D}\x{763E}\x{763F}\x{7640}\x{7641}\x{7642}\x{7643}' . +'\x{7646}\x{7647}\x{7648}\x{7649}\x{764A}\x{764B}\x{764C}\x{764D}\x{764F}' . +'\x{7650}\x{7652}\x{7653}\x{7654}\x{7656}\x{7657}\x{7658}\x{7659}\x{765A}' . +'\x{765B}\x{765C}\x{765D}\x{765E}\x{765F}\x{7660}\x{7661}\x{7662}\x{7663}' . +'\x{7664}\x{7665}\x{7666}\x{7667}\x{7668}\x{7669}\x{766A}\x{766B}\x{766C}' . +'\x{766D}\x{766E}\x{766F}\x{7670}\x{7671}\x{7672}\x{7674}\x{7675}\x{7676}' . +'\x{7677}\x{7678}\x{7679}\x{767B}\x{767C}\x{767D}\x{767E}\x{767F}\x{7680}' . +'\x{7681}\x{7682}\x{7683}\x{7684}\x{7685}\x{7686}\x{7687}\x{7688}\x{7689}' . +'\x{768A}\x{768B}\x{768C}\x{768E}\x{768F}\x{7690}\x{7691}\x{7692}\x{7693}' . +'\x{7694}\x{7695}\x{7696}\x{7697}\x{7698}\x{7699}\x{769A}\x{769B}\x{769C}' . +'\x{769D}\x{769E}\x{769F}\x{76A0}\x{76A3}\x{76A4}\x{76A6}\x{76A7}\x{76A9}' . +'\x{76AA}\x{76AB}\x{76AC}\x{76AD}\x{76AE}\x{76AF}\x{76B0}\x{76B1}\x{76B2}' . +'\x{76B4}\x{76B5}\x{76B7}\x{76B8}\x{76BA}\x{76BB}\x{76BC}\x{76BD}\x{76BE}' . +'\x{76BF}\x{76C0}\x{76C2}\x{76C3}\x{76C4}\x{76C5}\x{76C6}\x{76C7}\x{76C8}' . +'\x{76C9}\x{76CA}\x{76CD}\x{76CE}\x{76CF}\x{76D0}\x{76D1}\x{76D2}\x{76D3}' . +'\x{76D4}\x{76D5}\x{76D6}\x{76D7}\x{76D8}\x{76DA}\x{76DB}\x{76DC}\x{76DD}' . +'\x{76DE}\x{76DF}\x{76E0}\x{76E1}\x{76E2}\x{76E3}\x{76E4}\x{76E5}\x{76E6}' . +'\x{76E7}\x{76E8}\x{76E9}\x{76EA}\x{76EC}\x{76ED}\x{76EE}\x{76EF}\x{76F0}' . +'\x{76F1}\x{76F2}\x{76F3}\x{76F4}\x{76F5}\x{76F6}\x{76F7}\x{76F8}\x{76F9}' . +'\x{76FA}\x{76FB}\x{76FC}\x{76FD}\x{76FE}\x{76FF}\x{7701}\x{7703}\x{7704}' . +'\x{7705}\x{7706}\x{7707}\x{7708}\x{7709}\x{770A}\x{770B}\x{770C}\x{770D}' . +'\x{770F}\x{7710}\x{7711}\x{7712}\x{7713}\x{7714}\x{7715}\x{7716}\x{7717}' . +'\x{7718}\x{7719}\x{771A}\x{771B}\x{771C}\x{771D}\x{771E}\x{771F}\x{7720}' . +'\x{7722}\x{7723}\x{7725}\x{7726}\x{7727}\x{7728}\x{7729}\x{772A}\x{772C}' . +'\x{772D}\x{772E}\x{772F}\x{7730}\x{7731}\x{7732}\x{7733}\x{7734}\x{7735}' . +'\x{7736}\x{7737}\x{7738}\x{7739}\x{773A}\x{773B}\x{773C}\x{773D}\x{773E}' . +'\x{7740}\x{7741}\x{7743}\x{7744}\x{7745}\x{7746}\x{7747}\x{7748}\x{7749}' . +'\x{774A}\x{774B}\x{774C}\x{774D}\x{774E}\x{774F}\x{7750}\x{7751}\x{7752}' . +'\x{7753}\x{7754}\x{7755}\x{7756}\x{7757}\x{7758}\x{7759}\x{775A}\x{775B}' . +'\x{775C}\x{775D}\x{775E}\x{775F}\x{7760}\x{7761}\x{7762}\x{7763}\x{7765}' . +'\x{7766}\x{7767}\x{7768}\x{7769}\x{776A}\x{776B}\x{776C}\x{776D}\x{776E}' . +'\x{776F}\x{7770}\x{7771}\x{7772}\x{7773}\x{7774}\x{7775}\x{7776}\x{7777}' . +'\x{7778}\x{7779}\x{777A}\x{777B}\x{777C}\x{777D}\x{777E}\x{777F}\x{7780}' . +'\x{7781}\x{7782}\x{7783}\x{7784}\x{7785}\x{7786}\x{7787}\x{7788}\x{7789}' . +'\x{778A}\x{778B}\x{778C}\x{778D}\x{778E}\x{778F}\x{7790}\x{7791}\x{7792}' . +'\x{7793}\x{7794}\x{7795}\x{7797}\x{7798}\x{7799}\x{779A}\x{779B}\x{779C}' . +'\x{779D}\x{779E}\x{779F}\x{77A0}\x{77A1}\x{77A2}\x{77A3}\x{77A5}\x{77A6}' . +'\x{77A7}\x{77A8}\x{77A9}\x{77AA}\x{77AB}\x{77AC}\x{77AD}\x{77AE}\x{77AF}' . +'\x{77B0}\x{77B1}\x{77B2}\x{77B3}\x{77B4}\x{77B5}\x{77B6}\x{77B7}\x{77B8}' . +'\x{77B9}\x{77BA}\x{77BB}\x{77BC}\x{77BD}\x{77BF}\x{77C0}\x{77C2}\x{77C3}' . +'\x{77C4}\x{77C5}\x{77C6}\x{77C7}\x{77C8}\x{77C9}\x{77CA}\x{77CB}\x{77CC}' . +'\x{77CD}\x{77CE}\x{77CF}\x{77D0}\x{77D1}\x{77D3}\x{77D4}\x{77D5}\x{77D6}' . +'\x{77D7}\x{77D8}\x{77D9}\x{77DA}\x{77DB}\x{77DC}\x{77DE}\x{77DF}\x{77E0}' . +'\x{77E1}\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E8}\x{77E9}\x{77EA}\x{77EB}' . +'\x{77EC}\x{77ED}\x{77EE}\x{77EF}\x{77F0}\x{77F1}\x{77F2}\x{77F3}\x{77F6}' . +'\x{77F7}\x{77F8}\x{77F9}\x{77FA}\x{77FB}\x{77FC}\x{77FD}\x{77FE}\x{77FF}' . +'\x{7800}\x{7801}\x{7802}\x{7803}\x{7804}\x{7805}\x{7806}\x{7808}\x{7809}' . +'\x{780A}\x{780B}\x{780C}\x{780D}\x{780E}\x{780F}\x{7810}\x{7811}\x{7812}' . +'\x{7813}\x{7814}\x{7815}\x{7816}\x{7817}\x{7818}\x{7819}\x{781A}\x{781B}' . +'\x{781C}\x{781D}\x{781E}\x{781F}\x{7820}\x{7821}\x{7822}\x{7823}\x{7825}' . +'\x{7826}\x{7827}\x{7828}\x{7829}\x{782A}\x{782B}\x{782C}\x{782D}\x{782E}' . +'\x{782F}\x{7830}\x{7831}\x{7832}\x{7833}\x{7834}\x{7835}\x{7837}\x{7838}' . +'\x{7839}\x{783A}\x{783B}\x{783C}\x{783D}\x{783E}\x{7840}\x{7841}\x{7843}' . +'\x{7844}\x{7845}\x{7847}\x{7848}\x{7849}\x{784A}\x{784C}\x{784D}\x{784E}' . +'\x{7850}\x{7851}\x{7852}\x{7853}\x{7854}\x{7855}\x{7856}\x{7857}\x{7858}' . +'\x{7859}\x{785A}\x{785B}\x{785C}\x{785D}\x{785E}\x{785F}\x{7860}\x{7861}' . +'\x{7862}\x{7863}\x{7864}\x{7865}\x{7866}\x{7867}\x{7868}\x{7869}\x{786A}' . +'\x{786B}\x{786C}\x{786D}\x{786E}\x{786F}\x{7870}\x{7871}\x{7872}\x{7873}' . +'\x{7874}\x{7875}\x{7877}\x{7878}\x{7879}\x{787A}\x{787B}\x{787C}\x{787D}' . +'\x{787E}\x{787F}\x{7880}\x{7881}\x{7882}\x{7883}\x{7884}\x{7885}\x{7886}' . +'\x{7887}\x{7889}\x{788A}\x{788B}\x{788C}\x{788D}\x{788E}\x{788F}\x{7890}' . +'\x{7891}\x{7892}\x{7893}\x{7894}\x{7895}\x{7896}\x{7897}\x{7898}\x{7899}' . +'\x{789A}\x{789B}\x{789C}\x{789D}\x{789E}\x{789F}\x{78A0}\x{78A1}\x{78A2}' . +'\x{78A3}\x{78A4}\x{78A5}\x{78A6}\x{78A7}\x{78A8}\x{78A9}\x{78AA}\x{78AB}' . +'\x{78AC}\x{78AD}\x{78AE}\x{78AF}\x{78B0}\x{78B1}\x{78B2}\x{78B3}\x{78B4}' . +'\x{78B5}\x{78B6}\x{78B7}\x{78B8}\x{78B9}\x{78BA}\x{78BB}\x{78BC}\x{78BD}' . +'\x{78BE}\x{78BF}\x{78C0}\x{78C1}\x{78C3}\x{78C4}\x{78C5}\x{78C6}\x{78C8}' . +'\x{78C9}\x{78CA}\x{78CB}\x{78CC}\x{78CD}\x{78CE}\x{78CF}\x{78D0}\x{78D1}' . +'\x{78D3}\x{78D4}\x{78D5}\x{78D6}\x{78D7}\x{78D8}\x{78D9}\x{78DA}\x{78DB}' . +'\x{78DC}\x{78DD}\x{78DE}\x{78DF}\x{78E0}\x{78E1}\x{78E2}\x{78E3}\x{78E4}' . +'\x{78E5}\x{78E6}\x{78E7}\x{78E8}\x{78E9}\x{78EA}\x{78EB}\x{78EC}\x{78ED}' . +'\x{78EE}\x{78EF}\x{78F1}\x{78F2}\x{78F3}\x{78F4}\x{78F5}\x{78F6}\x{78F7}' . +'\x{78F9}\x{78FA}\x{78FB}\x{78FC}\x{78FD}\x{78FE}\x{78FF}\x{7901}\x{7902}' . +'\x{7903}\x{7904}\x{7905}\x{7906}\x{7907}\x{7909}\x{790A}\x{790B}\x{790C}' . +'\x{790E}\x{790F}\x{7910}\x{7911}\x{7912}\x{7913}\x{7914}\x{7916}\x{7917}' . +'\x{7918}\x{7919}\x{791A}\x{791B}\x{791C}\x{791D}\x{791E}\x{7921}\x{7922}' . +'\x{7923}\x{7924}\x{7925}\x{7926}\x{7927}\x{7928}\x{7929}\x{792A}\x{792B}' . +'\x{792C}\x{792D}\x{792E}\x{792F}\x{7930}\x{7931}\x{7933}\x{7934}\x{7935}' . +'\x{7937}\x{7938}\x{7939}\x{793A}\x{793B}\x{793C}\x{793D}\x{793E}\x{793F}' . +'\x{7940}\x{7941}\x{7942}\x{7943}\x{7944}\x{7945}\x{7946}\x{7947}\x{7948}' . +'\x{7949}\x{794A}\x{794B}\x{794C}\x{794D}\x{794E}\x{794F}\x{7950}\x{7951}' . +'\x{7952}\x{7953}\x{7954}\x{7955}\x{7956}\x{7957}\x{7958}\x{795A}\x{795B}' . +'\x{795C}\x{795D}\x{795E}\x{795F}\x{7960}\x{7961}\x{7962}\x{7963}\x{7964}' . +'\x{7965}\x{7966}\x{7967}\x{7968}\x{7969}\x{796A}\x{796B}\x{796D}\x{796F}' . +'\x{7970}\x{7971}\x{7972}\x{7973}\x{7974}\x{7977}\x{7978}\x{7979}\x{797A}' . +'\x{797B}\x{797C}\x{797D}\x{797E}\x{797F}\x{7980}\x{7981}\x{7982}\x{7983}' . +'\x{7984}\x{7985}\x{7988}\x{7989}\x{798A}\x{798B}\x{798C}\x{798D}\x{798E}' . +'\x{798F}\x{7990}\x{7991}\x{7992}\x{7993}\x{7994}\x{7995}\x{7996}\x{7997}' . +'\x{7998}\x{7999}\x{799A}\x{799B}\x{799C}\x{799F}\x{79A0}\x{79A1}\x{79A2}' . +'\x{79A3}\x{79A4}\x{79A5}\x{79A6}\x{79A7}\x{79A8}\x{79AA}\x{79AB}\x{79AC}' . +'\x{79AD}\x{79AE}\x{79AF}\x{79B0}\x{79B1}\x{79B2}\x{79B3}\x{79B4}\x{79B5}' . +'\x{79B6}\x{79B7}\x{79B8}\x{79B9}\x{79BA}\x{79BB}\x{79BD}\x{79BE}\x{79BF}' . +'\x{79C0}\x{79C1}\x{79C2}\x{79C3}\x{79C5}\x{79C6}\x{79C8}\x{79C9}\x{79CA}' . +'\x{79CB}\x{79CD}\x{79CE}\x{79CF}\x{79D0}\x{79D1}\x{79D2}\x{79D3}\x{79D5}' . +'\x{79D6}\x{79D8}\x{79D9}\x{79DA}\x{79DB}\x{79DC}\x{79DD}\x{79DE}\x{79DF}' . +'\x{79E0}\x{79E1}\x{79E2}\x{79E3}\x{79E4}\x{79E5}\x{79E6}\x{79E7}\x{79E8}' . +'\x{79E9}\x{79EA}\x{79EB}\x{79EC}\x{79ED}\x{79EE}\x{79EF}\x{79F0}\x{79F1}' . +'\x{79F2}\x{79F3}\x{79F4}\x{79F5}\x{79F6}\x{79F7}\x{79F8}\x{79F9}\x{79FA}' . +'\x{79FB}\x{79FC}\x{79FD}\x{79FE}\x{79FF}\x{7A00}\x{7A02}\x{7A03}\x{7A04}' . +'\x{7A05}\x{7A06}\x{7A08}\x{7A0A}\x{7A0B}\x{7A0C}\x{7A0D}\x{7A0E}\x{7A0F}' . +'\x{7A10}\x{7A11}\x{7A12}\x{7A13}\x{7A14}\x{7A15}\x{7A16}\x{7A17}\x{7A18}' . +'\x{7A19}\x{7A1A}\x{7A1B}\x{7A1C}\x{7A1D}\x{7A1E}\x{7A1F}\x{7A20}\x{7A21}' . +'\x{7A22}\x{7A23}\x{7A24}\x{7A25}\x{7A26}\x{7A27}\x{7A28}\x{7A29}\x{7A2A}' . +'\x{7A2B}\x{7A2D}\x{7A2E}\x{7A2F}\x{7A30}\x{7A31}\x{7A32}\x{7A33}\x{7A34}' . +'\x{7A35}\x{7A37}\x{7A39}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' . +'\x{7A41}\x{7A42}\x{7A43}\x{7A44}\x{7A45}\x{7A46}\x{7A47}\x{7A48}\x{7A49}' . +'\x{7A4A}\x{7A4B}\x{7A4C}\x{7A4D}\x{7A4E}\x{7A50}\x{7A51}\x{7A52}\x{7A53}' . +'\x{7A54}\x{7A55}\x{7A56}\x{7A57}\x{7A58}\x{7A59}\x{7A5A}\x{7A5B}\x{7A5C}' . +'\x{7A5D}\x{7A5E}\x{7A5F}\x{7A60}\x{7A61}\x{7A62}\x{7A65}\x{7A66}\x{7A67}' . +'\x{7A68}\x{7A69}\x{7A6B}\x{7A6C}\x{7A6D}\x{7A6E}\x{7A70}\x{7A71}\x{7A72}' . +'\x{7A73}\x{7A74}\x{7A75}\x{7A76}\x{7A77}\x{7A78}\x{7A79}\x{7A7A}\x{7A7B}' . +'\x{7A7C}\x{7A7D}\x{7A7E}\x{7A7F}\x{7A80}\x{7A81}\x{7A83}\x{7A84}\x{7A85}' . +'\x{7A86}\x{7A87}\x{7A88}\x{7A89}\x{7A8A}\x{7A8B}\x{7A8C}\x{7A8D}\x{7A8E}' . +'\x{7A8F}\x{7A90}\x{7A91}\x{7A92}\x{7A93}\x{7A94}\x{7A95}\x{7A96}\x{7A97}' . +'\x{7A98}\x{7A99}\x{7A9C}\x{7A9D}\x{7A9E}\x{7A9F}\x{7AA0}\x{7AA1}\x{7AA2}' . +'\x{7AA3}\x{7AA4}\x{7AA5}\x{7AA6}\x{7AA7}\x{7AA8}\x{7AA9}\x{7AAA}\x{7AAB}' . +'\x{7AAC}\x{7AAD}\x{7AAE}\x{7AAF}\x{7AB0}\x{7AB1}\x{7AB2}\x{7AB3}\x{7AB4}' . +'\x{7AB5}\x{7AB6}\x{7AB7}\x{7AB8}\x{7ABA}\x{7ABE}\x{7ABF}\x{7AC0}\x{7AC1}' . +'\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}\x{7AC9}\x{7ACA}\x{7ACB}\x{7ACC}\x{7ACD}' . +'\x{7ACE}\x{7ACF}\x{7AD0}\x{7AD1}\x{7AD2}\x{7AD3}\x{7AD4}\x{7AD5}\x{7AD6}' . +'\x{7AD8}\x{7AD9}\x{7ADB}\x{7ADC}\x{7ADD}\x{7ADE}\x{7ADF}\x{7AE0}\x{7AE1}' . +'\x{7AE2}\x{7AE3}\x{7AE4}\x{7AE5}\x{7AE6}\x{7AE7}\x{7AE8}\x{7AEA}\x{7AEB}' . +'\x{7AEC}\x{7AED}\x{7AEE}\x{7AEF}\x{7AF0}\x{7AF1}\x{7AF2}\x{7AF3}\x{7AF4}' . +'\x{7AF6}\x{7AF7}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFB}\x{7AFD}\x{7AFE}\x{7AFF}' . +'\x{7B00}\x{7B01}\x{7B02}\x{7B03}\x{7B04}\x{7B05}\x{7B06}\x{7B08}\x{7B09}' . +'\x{7B0A}\x{7B0B}\x{7B0C}\x{7B0D}\x{7B0E}\x{7B0F}\x{7B10}\x{7B11}\x{7B12}' . +'\x{7B13}\x{7B14}\x{7B15}\x{7B16}\x{7B17}\x{7B18}\x{7B19}\x{7B1A}\x{7B1B}' . +'\x{7B1C}\x{7B1D}\x{7B1E}\x{7B20}\x{7B21}\x{7B22}\x{7B23}\x{7B24}\x{7B25}' . +'\x{7B26}\x{7B28}\x{7B2A}\x{7B2B}\x{7B2C}\x{7B2D}\x{7B2E}\x{7B2F}\x{7B30}' . +'\x{7B31}\x{7B32}\x{7B33}\x{7B34}\x{7B35}\x{7B36}\x{7B37}\x{7B38}\x{7B39}' . +'\x{7B3A}\x{7B3B}\x{7B3C}\x{7B3D}\x{7B3E}\x{7B3F}\x{7B40}\x{7B41}\x{7B43}' . +'\x{7B44}\x{7B45}\x{7B46}\x{7B47}\x{7B48}\x{7B49}\x{7B4A}\x{7B4B}\x{7B4C}' . +'\x{7B4D}\x{7B4E}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B55}\x{7B56}' . +'\x{7B57}\x{7B58}\x{7B59}\x{7B5A}\x{7B5B}\x{7B5C}\x{7B5D}\x{7B5E}\x{7B5F}' . +'\x{7B60}\x{7B61}\x{7B62}\x{7B63}\x{7B64}\x{7B65}\x{7B66}\x{7B67}\x{7B68}' . +'\x{7B69}\x{7B6A}\x{7B6B}\x{7B6C}\x{7B6D}\x{7B6E}\x{7B70}\x{7B71}\x{7B72}' . +'\x{7B73}\x{7B74}\x{7B75}\x{7B76}\x{7B77}\x{7B78}\x{7B79}\x{7B7B}\x{7B7C}' . +'\x{7B7D}\x{7B7E}\x{7B7F}\x{7B80}\x{7B81}\x{7B82}\x{7B83}\x{7B84}\x{7B85}' . +'\x{7B87}\x{7B88}\x{7B89}\x{7B8A}\x{7B8B}\x{7B8C}\x{7B8D}\x{7B8E}\x{7B8F}' . +'\x{7B90}\x{7B91}\x{7B93}\x{7B94}\x{7B95}\x{7B96}\x{7B97}\x{7B98}\x{7B99}' . +'\x{7B9A}\x{7B9B}\x{7B9C}\x{7B9D}\x{7B9E}\x{7B9F}\x{7BA0}\x{7BA1}\x{7BA2}' . +'\x{7BA4}\x{7BA6}\x{7BA7}\x{7BA8}\x{7BA9}\x{7BAA}\x{7BAB}\x{7BAC}\x{7BAD}' . +'\x{7BAE}\x{7BAF}\x{7BB1}\x{7BB3}\x{7BB4}\x{7BB5}\x{7BB6}\x{7BB7}\x{7BB8}' . +'\x{7BB9}\x{7BBA}\x{7BBB}\x{7BBC}\x{7BBD}\x{7BBE}\x{7BBF}\x{7BC0}\x{7BC1}' . +'\x{7BC2}\x{7BC3}\x{7BC4}\x{7BC5}\x{7BC6}\x{7BC7}\x{7BC8}\x{7BC9}\x{7BCA}' . +'\x{7BCB}\x{7BCC}\x{7BCD}\x{7BCE}\x{7BD0}\x{7BD1}\x{7BD2}\x{7BD3}\x{7BD4}' . +'\x{7BD5}\x{7BD6}\x{7BD7}\x{7BD8}\x{7BD9}\x{7BDA}\x{7BDB}\x{7BDC}\x{7BDD}' . +'\x{7BDE}\x{7BDF}\x{7BE0}\x{7BE1}\x{7BE2}\x{7BE3}\x{7BE4}\x{7BE5}\x{7BE6}' . +'\x{7BE7}\x{7BE8}\x{7BE9}\x{7BEA}\x{7BEB}\x{7BEC}\x{7BED}\x{7BEE}\x{7BEF}' . +'\x{7BF0}\x{7BF1}\x{7BF2}\x{7BF3}\x{7BF4}\x{7BF5}\x{7BF6}\x{7BF7}\x{7BF8}' . +'\x{7BF9}\x{7BFB}\x{7BFC}\x{7BFD}\x{7BFE}\x{7BFF}\x{7C00}\x{7C01}\x{7C02}' . +'\x{7C03}\x{7C04}\x{7C05}\x{7C06}\x{7C07}\x{7C08}\x{7C09}\x{7C0A}\x{7C0B}' . +'\x{7C0C}\x{7C0D}\x{7C0E}\x{7C0F}\x{7C10}\x{7C11}\x{7C12}\x{7C13}\x{7C15}' . +'\x{7C16}\x{7C17}\x{7C18}\x{7C19}\x{7C1A}\x{7C1C}\x{7C1D}\x{7C1E}\x{7C1F}' . +'\x{7C20}\x{7C21}\x{7C22}\x{7C23}\x{7C24}\x{7C25}\x{7C26}\x{7C27}\x{7C28}' . +'\x{7C29}\x{7C2A}\x{7C2B}\x{7C2C}\x{7C2D}\x{7C30}\x{7C31}\x{7C32}\x{7C33}' . +'\x{7C34}\x{7C35}\x{7C36}\x{7C37}\x{7C38}\x{7C39}\x{7C3A}\x{7C3B}\x{7C3C}' . +'\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C41}\x{7C42}\x{7C43}\x{7C44}\x{7C45}' . +'\x{7C46}\x{7C47}\x{7C48}\x{7C49}\x{7C4A}\x{7C4B}\x{7C4C}\x{7C4D}\x{7C4E}' . +'\x{7C50}\x{7C51}\x{7C53}\x{7C54}\x{7C56}\x{7C57}\x{7C58}\x{7C59}\x{7C5A}' . +'\x{7C5B}\x{7C5C}\x{7C5E}\x{7C5F}\x{7C60}\x{7C61}\x{7C62}\x{7C63}\x{7C64}' . +'\x{7C65}\x{7C66}\x{7C67}\x{7C68}\x{7C69}\x{7C6A}\x{7C6B}\x{7C6C}\x{7C6D}' . +'\x{7C6E}\x{7C6F}\x{7C70}\x{7C71}\x{7C72}\x{7C73}\x{7C74}\x{7C75}\x{7C77}' . +'\x{7C78}\x{7C79}\x{7C7A}\x{7C7B}\x{7C7C}\x{7C7D}\x{7C7E}\x{7C7F}\x{7C80}' . +'\x{7C81}\x{7C82}\x{7C84}\x{7C85}\x{7C86}\x{7C88}\x{7C89}\x{7C8A}\x{7C8B}' . +'\x{7C8C}\x{7C8D}\x{7C8E}\x{7C8F}\x{7C90}\x{7C91}\x{7C92}\x{7C94}\x{7C95}' . +'\x{7C96}\x{7C97}\x{7C98}\x{7C99}\x{7C9B}\x{7C9C}\x{7C9D}\x{7C9E}\x{7C9F}' . +'\x{7CA0}\x{7CA1}\x{7CA2}\x{7CA3}\x{7CA4}\x{7CA5}\x{7CA6}\x{7CA7}\x{7CA8}' . +'\x{7CA9}\x{7CAA}\x{7CAD}\x{7CAE}\x{7CAF}\x{7CB0}\x{7CB1}\x{7CB2}\x{7CB3}' . +'\x{7CB4}\x{7CB5}\x{7CB6}\x{7CB7}\x{7CB8}\x{7CB9}\x{7CBA}\x{7CBB}\x{7CBC}' . +'\x{7CBD}\x{7CBE}\x{7CBF}\x{7CC0}\x{7CC1}\x{7CC2}\x{7CC3}\x{7CC4}\x{7CC5}' . +'\x{7CC6}\x{7CC7}\x{7CC8}\x{7CC9}\x{7CCA}\x{7CCB}\x{7CCC}\x{7CCD}\x{7CCE}' . +'\x{7CCF}\x{7CD0}\x{7CD1}\x{7CD2}\x{7CD4}\x{7CD5}\x{7CD6}\x{7CD7}\x{7CD8}' . +'\x{7CD9}\x{7CDC}\x{7CDD}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE4}\x{7CE7}' . +'\x{7CE8}\x{7CE9}\x{7CEA}\x{7CEB}\x{7CEC}\x{7CED}\x{7CEE}\x{7CEF}\x{7CF0}' . +'\x{7CF1}\x{7CF2}\x{7CF3}\x{7CF4}\x{7CF5}\x{7CF6}\x{7CF7}\x{7CF8}\x{7CF9}' . +'\x{7CFA}\x{7CFB}\x{7CFD}\x{7CFE}\x{7D00}\x{7D01}\x{7D02}\x{7D03}\x{7D04}' . +'\x{7D05}\x{7D06}\x{7D07}\x{7D08}\x{7D09}\x{7D0A}\x{7D0B}\x{7D0C}\x{7D0D}' . +'\x{7D0E}\x{7D0F}\x{7D10}\x{7D11}\x{7D12}\x{7D13}\x{7D14}\x{7D15}\x{7D16}' . +'\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D1D}\x{7D1E}\x{7D1F}' . +'\x{7D20}\x{7D21}\x{7D22}\x{7D24}\x{7D25}\x{7D26}\x{7D27}\x{7D28}\x{7D29}' . +'\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D31}\x{7D32}\x{7D33}\x{7D34}' . +'\x{7D35}\x{7D36}\x{7D37}\x{7D38}\x{7D39}\x{7D3A}\x{7D3B}\x{7D3C}\x{7D3D}' . +'\x{7D3E}\x{7D3F}\x{7D40}\x{7D41}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}' . +'\x{7D47}\x{7D49}\x{7D4A}\x{7D4B}\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D51}' . +'\x{7D52}\x{7D53}\x{7D54}\x{7D55}\x{7D56}\x{7D57}\x{7D58}\x{7D59}\x{7D5B}' . +'\x{7D5C}\x{7D5D}\x{7D5E}\x{7D5F}\x{7D60}\x{7D61}\x{7D62}\x{7D63}\x{7D65}' . +'\x{7D66}\x{7D67}\x{7D68}\x{7D69}\x{7D6A}\x{7D6B}\x{7D6C}\x{7D6D}\x{7D6E}' . +'\x{7D6F}\x{7D70}\x{7D71}\x{7D72}\x{7D73}\x{7D74}\x{7D75}\x{7D76}\x{7D77}' . +'\x{7D79}\x{7D7A}\x{7D7B}\x{7D7C}\x{7D7D}\x{7D7E}\x{7D7F}\x{7D80}\x{7D81}' . +'\x{7D83}\x{7D84}\x{7D85}\x{7D86}\x{7D87}\x{7D88}\x{7D89}\x{7D8A}\x{7D8B}' . +'\x{7D8C}\x{7D8D}\x{7D8E}\x{7D8F}\x{7D90}\x{7D91}\x{7D92}\x{7D93}\x{7D94}' . +'\x{7D96}\x{7D97}\x{7D99}\x{7D9B}\x{7D9C}\x{7D9D}\x{7D9E}\x{7D9F}\x{7DA0}' . +'\x{7DA1}\x{7DA2}\x{7DA3}\x{7DA5}\x{7DA6}\x{7DA7}\x{7DA9}\x{7DAA}\x{7DAB}' . +'\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}\x{7DB1}\x{7DB2}\x{7DB3}\x{7DB4}' . +'\x{7DB5}\x{7DB6}\x{7DB7}\x{7DB8}\x{7DB9}\x{7DBA}\x{7DBB}\x{7DBC}\x{7DBD}' . +'\x{7DBE}\x{7DBF}\x{7DC0}\x{7DC1}\x{7DC2}\x{7DC3}\x{7DC4}\x{7DC5}\x{7DC6}' . +'\x{7DC7}\x{7DC8}\x{7DC9}\x{7DCA}\x{7DCB}\x{7DCC}\x{7DCE}\x{7DCF}\x{7DD0}' . +'\x{7DD1}\x{7DD2}\x{7DD4}\x{7DD5}\x{7DD6}\x{7DD7}\x{7DD8}\x{7DD9}\x{7DDA}' . +'\x{7DDB}\x{7DDD}\x{7DDE}\x{7DDF}\x{7DE0}\x{7DE1}\x{7DE2}\x{7DE3}\x{7DE6}' . +'\x{7DE7}\x{7DE8}\x{7DE9}\x{7DEA}\x{7DEC}\x{7DED}\x{7DEE}\x{7DEF}\x{7DF0}' . +'\x{7DF1}\x{7DF2}\x{7DF3}\x{7DF4}\x{7DF5}\x{7DF6}\x{7DF7}\x{7DF8}\x{7DF9}' . +'\x{7DFA}\x{7DFB}\x{7DFC}\x{7E00}\x{7E01}\x{7E02}\x{7E03}\x{7E04}\x{7E05}' . +'\x{7E06}\x{7E07}\x{7E08}\x{7E09}\x{7E0A}\x{7E0B}\x{7E0C}\x{7E0D}\x{7E0E}' . +'\x{7E0F}\x{7E10}\x{7E11}\x{7E12}\x{7E13}\x{7E14}\x{7E15}\x{7E16}\x{7E17}' . +'\x{7E19}\x{7E1A}\x{7E1B}\x{7E1C}\x{7E1D}\x{7E1E}\x{7E1F}\x{7E20}\x{7E21}' . +'\x{7E22}\x{7E23}\x{7E24}\x{7E25}\x{7E26}\x{7E27}\x{7E28}\x{7E29}\x{7E2A}' . +'\x{7E2B}\x{7E2C}\x{7E2D}\x{7E2E}\x{7E2F}\x{7E30}\x{7E31}\x{7E32}\x{7E33}' . +'\x{7E34}\x{7E35}\x{7E36}\x{7E37}\x{7E38}\x{7E39}\x{7E3A}\x{7E3B}\x{7E3C}' . +'\x{7E3D}\x{7E3E}\x{7E3F}\x{7E40}\x{7E41}\x{7E42}\x{7E43}\x{7E44}\x{7E45}' . +'\x{7E46}\x{7E47}\x{7E48}\x{7E49}\x{7E4C}\x{7E4D}\x{7E4E}\x{7E4F}\x{7E50}' . +'\x{7E51}\x{7E52}\x{7E53}\x{7E54}\x{7E55}\x{7E56}\x{7E57}\x{7E58}\x{7E59}' . +'\x{7E5A}\x{7E5C}\x{7E5D}\x{7E5E}\x{7E5F}\x{7E60}\x{7E61}\x{7E62}\x{7E63}' . +'\x{7E65}\x{7E66}\x{7E67}\x{7E68}\x{7E69}\x{7E6A}\x{7E6B}\x{7E6C}\x{7E6D}' . +'\x{7E6E}\x{7E6F}\x{7E70}\x{7E71}\x{7E72}\x{7E73}\x{7E74}\x{7E75}\x{7E76}' . +'\x{7E77}\x{7E78}\x{7E79}\x{7E7A}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7E}\x{7E7F}' . +'\x{7E80}\x{7E81}\x{7E82}\x{7E83}\x{7E84}\x{7E85}\x{7E86}\x{7E87}\x{7E88}' . +'\x{7E89}\x{7E8A}\x{7E8B}\x{7E8C}\x{7E8D}\x{7E8E}\x{7E8F}\x{7E90}\x{7E91}' . +'\x{7E92}\x{7E93}\x{7E94}\x{7E95}\x{7E96}\x{7E97}\x{7E98}\x{7E99}\x{7E9A}' . +'\x{7E9B}\x{7E9C}\x{7E9E}\x{7E9F}\x{7EA0}\x{7EA1}\x{7EA2}\x{7EA3}\x{7EA4}' . +'\x{7EA5}\x{7EA6}\x{7EA7}\x{7EA8}\x{7EA9}\x{7EAA}\x{7EAB}\x{7EAC}\x{7EAD}' . +'\x{7EAE}\x{7EAF}\x{7EB0}\x{7EB1}\x{7EB2}\x{7EB3}\x{7EB4}\x{7EB5}\x{7EB6}' . +'\x{7EB7}\x{7EB8}\x{7EB9}\x{7EBA}\x{7EBB}\x{7EBC}\x{7EBD}\x{7EBE}\x{7EBF}' . +'\x{7EC0}\x{7EC1}\x{7EC2}\x{7EC3}\x{7EC4}\x{7EC5}\x{7EC6}\x{7EC7}\x{7EC8}' . +'\x{7EC9}\x{7ECA}\x{7ECB}\x{7ECC}\x{7ECD}\x{7ECE}\x{7ECF}\x{7ED0}\x{7ED1}' . +'\x{7ED2}\x{7ED3}\x{7ED4}\x{7ED5}\x{7ED6}\x{7ED7}\x{7ED8}\x{7ED9}\x{7EDA}' . +'\x{7EDB}\x{7EDC}\x{7EDD}\x{7EDE}\x{7EDF}\x{7EE0}\x{7EE1}\x{7EE2}\x{7EE3}' . +'\x{7EE4}\x{7EE5}\x{7EE6}\x{7EE7}\x{7EE8}\x{7EE9}\x{7EEA}\x{7EEB}\x{7EEC}' . +'\x{7EED}\x{7EEE}\x{7EEF}\x{7EF0}\x{7EF1}\x{7EF2}\x{7EF3}\x{7EF4}\x{7EF5}' . +'\x{7EF6}\x{7EF7}\x{7EF8}\x{7EF9}\x{7EFA}\x{7EFB}\x{7EFC}\x{7EFD}\x{7EFE}' . +'\x{7EFF}\x{7F00}\x{7F01}\x{7F02}\x{7F03}\x{7F04}\x{7F05}\x{7F06}\x{7F07}' . +'\x{7F08}\x{7F09}\x{7F0A}\x{7F0B}\x{7F0C}\x{7F0D}\x{7F0E}\x{7F0F}\x{7F10}' . +'\x{7F11}\x{7F12}\x{7F13}\x{7F14}\x{7F15}\x{7F16}\x{7F17}\x{7F18}\x{7F19}' . +'\x{7F1A}\x{7F1B}\x{7F1C}\x{7F1D}\x{7F1E}\x{7F1F}\x{7F20}\x{7F21}\x{7F22}' . +'\x{7F23}\x{7F24}\x{7F25}\x{7F26}\x{7F27}\x{7F28}\x{7F29}\x{7F2A}\x{7F2B}' . +'\x{7F2C}\x{7F2D}\x{7F2E}\x{7F2F}\x{7F30}\x{7F31}\x{7F32}\x{7F33}\x{7F34}' . +'\x{7F35}\x{7F36}\x{7F37}\x{7F38}\x{7F39}\x{7F3A}\x{7F3D}\x{7F3E}\x{7F3F}' . +'\x{7F40}\x{7F42}\x{7F43}\x{7F44}\x{7F45}\x{7F47}\x{7F48}\x{7F49}\x{7F4A}' . +'\x{7F4B}\x{7F4C}\x{7F4D}\x{7F4E}\x{7F4F}\x{7F50}\x{7F51}\x{7F52}\x{7F53}' . +'\x{7F54}\x{7F55}\x{7F56}\x{7F57}\x{7F58}\x{7F5A}\x{7F5B}\x{7F5C}\x{7F5D}' . +'\x{7F5E}\x{7F5F}\x{7F60}\x{7F61}\x{7F62}\x{7F63}\x{7F64}\x{7F65}\x{7F66}' . +'\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6C}\x{7F6D}\x{7F6E}\x{7F6F}' . +'\x{7F70}\x{7F71}\x{7F72}\x{7F73}\x{7F74}\x{7F75}\x{7F76}\x{7F77}\x{7F78}' . +'\x{7F79}\x{7F7A}\x{7F7B}\x{7F7C}\x{7F7D}\x{7F7E}\x{7F7F}\x{7F80}\x{7F81}' . +'\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}\x{7F88}\x{7F89}\x{7F8A}\x{7F8B}' . +'\x{7F8C}\x{7F8D}\x{7F8E}\x{7F8F}\x{7F91}\x{7F92}\x{7F93}\x{7F94}\x{7F95}' . +'\x{7F96}\x{7F98}\x{7F9A}\x{7F9B}\x{7F9C}\x{7F9D}\x{7F9E}\x{7F9F}\x{7FA0}' . +'\x{7FA1}\x{7FA2}\x{7FA3}\x{7FA4}\x{7FA5}\x{7FA6}\x{7FA7}\x{7FA8}\x{7FA9}' . +'\x{7FAA}\x{7FAB}\x{7FAC}\x{7FAD}\x{7FAE}\x{7FAF}\x{7FB0}\x{7FB1}\x{7FB2}' . +'\x{7FB3}\x{7FB5}\x{7FB6}\x{7FB7}\x{7FB8}\x{7FB9}\x{7FBA}\x{7FBB}\x{7FBC}' . +'\x{7FBD}\x{7FBE}\x{7FBF}\x{7FC0}\x{7FC1}\x{7FC2}\x{7FC3}\x{7FC4}\x{7FC5}' . +'\x{7FC6}\x{7FC7}\x{7FC8}\x{7FC9}\x{7FCA}\x{7FCB}\x{7FCC}\x{7FCD}\x{7FCE}' . +'\x{7FCF}\x{7FD0}\x{7FD1}\x{7FD2}\x{7FD3}\x{7FD4}\x{7FD5}\x{7FD7}\x{7FD8}' . +'\x{7FD9}\x{7FDA}\x{7FDB}\x{7FDC}\x{7FDE}\x{7FDF}\x{7FE0}\x{7FE1}\x{7FE2}' . +'\x{7FE3}\x{7FE5}\x{7FE6}\x{7FE7}\x{7FE8}\x{7FE9}\x{7FEA}\x{7FEB}\x{7FEC}' . +'\x{7FED}\x{7FEE}\x{7FEF}\x{7FF0}\x{7FF1}\x{7FF2}\x{7FF3}\x{7FF4}\x{7FF5}' . +'\x{7FF6}\x{7FF7}\x{7FF8}\x{7FF9}\x{7FFA}\x{7FFB}\x{7FFC}\x{7FFD}\x{7FFE}' . +'\x{7FFF}\x{8000}\x{8001}\x{8002}\x{8003}\x{8004}\x{8005}\x{8006}\x{8007}' . +'\x{8008}\x{8009}\x{800B}\x{800C}\x{800D}\x{800E}\x{800F}\x{8010}\x{8011}' . +'\x{8012}\x{8013}\x{8014}\x{8015}\x{8016}\x{8017}\x{8018}\x{8019}\x{801A}' . +'\x{801B}\x{801C}\x{801D}\x{801E}\x{801F}\x{8020}\x{8021}\x{8022}\x{8023}' . +'\x{8024}\x{8025}\x{8026}\x{8027}\x{8028}\x{8029}\x{802A}\x{802B}\x{802C}' . +'\x{802D}\x{802E}\x{8030}\x{8031}\x{8032}\x{8033}\x{8034}\x{8035}\x{8036}' . +'\x{8037}\x{8038}\x{8039}\x{803A}\x{803B}\x{803D}\x{803E}\x{803F}\x{8041}' . +'\x{8042}\x{8043}\x{8044}\x{8045}\x{8046}\x{8047}\x{8048}\x{8049}\x{804A}' . +'\x{804B}\x{804C}\x{804D}\x{804E}\x{804F}\x{8050}\x{8051}\x{8052}\x{8053}' . +'\x{8054}\x{8055}\x{8056}\x{8057}\x{8058}\x{8059}\x{805A}\x{805B}\x{805C}' . +'\x{805D}\x{805E}\x{805F}\x{8060}\x{8061}\x{8062}\x{8063}\x{8064}\x{8065}' . +'\x{8067}\x{8068}\x{8069}\x{806A}\x{806B}\x{806C}\x{806D}\x{806E}\x{806F}' . +'\x{8070}\x{8071}\x{8072}\x{8073}\x{8074}\x{8075}\x{8076}\x{8077}\x{8078}' . +'\x{8079}\x{807A}\x{807B}\x{807C}\x{807D}\x{807E}\x{807F}\x{8080}\x{8081}' . +'\x{8082}\x{8083}\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808A}\x{808B}' . +'\x{808C}\x{808D}\x{808F}\x{8090}\x{8091}\x{8092}\x{8093}\x{8095}\x{8096}' . +'\x{8097}\x{8098}\x{8099}\x{809A}\x{809B}\x{809C}\x{809D}\x{809E}\x{809F}' . +'\x{80A0}\x{80A1}\x{80A2}\x{80A3}\x{80A4}\x{80A5}\x{80A9}\x{80AA}\x{80AB}' . +'\x{80AD}\x{80AE}\x{80AF}\x{80B0}\x{80B1}\x{80B2}\x{80B4}\x{80B5}\x{80B6}' . +'\x{80B7}\x{80B8}\x{80BA}\x{80BB}\x{80BC}\x{80BD}\x{80BE}\x{80BF}\x{80C0}' . +'\x{80C1}\x{80C2}\x{80C3}\x{80C4}\x{80C5}\x{80C6}\x{80C7}\x{80C8}\x{80C9}' . +'\x{80CA}\x{80CB}\x{80CC}\x{80CD}\x{80CE}\x{80CF}\x{80D0}\x{80D1}\x{80D2}' . +'\x{80D3}\x{80D4}\x{80D5}\x{80D6}\x{80D7}\x{80D8}\x{80D9}\x{80DA}\x{80DB}' . +'\x{80DC}\x{80DD}\x{80DE}\x{80E0}\x{80E1}\x{80E2}\x{80E3}\x{80E4}\x{80E5}' . +'\x{80E6}\x{80E7}\x{80E8}\x{80E9}\x{80EA}\x{80EB}\x{80EC}\x{80ED}\x{80EE}' . +'\x{80EF}\x{80F0}\x{80F1}\x{80F2}\x{80F3}\x{80F4}\x{80F5}\x{80F6}\x{80F7}' . +'\x{80F8}\x{80F9}\x{80FA}\x{80FB}\x{80FC}\x{80FD}\x{80FE}\x{80FF}\x{8100}' . +'\x{8101}\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{810B}' . +'\x{810C}\x{810D}\x{810E}\x{810F}\x{8110}\x{8111}\x{8112}\x{8113}\x{8114}' . +'\x{8115}\x{8116}\x{8118}\x{8119}\x{811A}\x{811B}\x{811C}\x{811D}\x{811E}' . +'\x{811F}\x{8120}\x{8121}\x{8122}\x{8123}\x{8124}\x{8125}\x{8126}\x{8127}' . +'\x{8128}\x{8129}\x{812A}\x{812B}\x{812C}\x{812D}\x{812E}\x{812F}\x{8130}' . +'\x{8131}\x{8132}\x{8136}\x{8137}\x{8138}\x{8139}\x{813A}\x{813B}\x{813C}' . +'\x{813D}\x{813E}\x{813F}\x{8140}\x{8141}\x{8142}\x{8143}\x{8144}\x{8145}' . +'\x{8146}\x{8147}\x{8148}\x{8149}\x{814A}\x{814B}\x{814C}\x{814D}\x{814E}' . +'\x{814F}\x{8150}\x{8151}\x{8152}\x{8153}\x{8154}\x{8155}\x{8156}\x{8157}' . +'\x{8158}\x{8159}\x{815A}\x{815B}\x{815C}\x{815D}\x{815E}\x{8160}\x{8161}' . +'\x{8162}\x{8163}\x{8164}\x{8165}\x{8166}\x{8167}\x{8168}\x{8169}\x{816A}' . +'\x{816B}\x{816C}\x{816D}\x{816E}\x{816F}\x{8170}\x{8171}\x{8172}\x{8173}' . +'\x{8174}\x{8175}\x{8176}\x{8177}\x{8178}\x{8179}\x{817A}\x{817B}\x{817C}' . +'\x{817D}\x{817E}\x{817F}\x{8180}\x{8181}\x{8182}\x{8183}\x{8185}\x{8186}' . +'\x{8187}\x{8188}\x{8189}\x{818A}\x{818B}\x{818C}\x{818D}\x{818E}\x{818F}' . +'\x{8191}\x{8192}\x{8193}\x{8194}\x{8195}\x{8197}\x{8198}\x{8199}\x{819A}' . +'\x{819B}\x{819C}\x{819D}\x{819E}\x{819F}\x{81A0}\x{81A1}\x{81A2}\x{81A3}' . +'\x{81A4}\x{81A5}\x{81A6}\x{81A7}\x{81A8}\x{81A9}\x{81AA}\x{81AB}\x{81AC}' . +'\x{81AD}\x{81AE}\x{81AF}\x{81B0}\x{81B1}\x{81B2}\x{81B3}\x{81B4}\x{81B5}' . +'\x{81B6}\x{81B7}\x{81B8}\x{81B9}\x{81BA}\x{81BB}\x{81BC}\x{81BD}\x{81BE}' . +'\x{81BF}\x{81C0}\x{81C1}\x{81C2}\x{81C3}\x{81C4}\x{81C5}\x{81C6}\x{81C7}' . +'\x{81C8}\x{81C9}\x{81CA}\x{81CC}\x{81CD}\x{81CE}\x{81CF}\x{81D0}\x{81D1}' . +'\x{81D2}\x{81D4}\x{81D5}\x{81D6}\x{81D7}\x{81D8}\x{81D9}\x{81DA}\x{81DB}' . +'\x{81DC}\x{81DD}\x{81DE}\x{81DF}\x{81E0}\x{81E1}\x{81E2}\x{81E3}\x{81E5}' . +'\x{81E6}\x{81E7}\x{81E8}\x{81E9}\x{81EA}\x{81EB}\x{81EC}\x{81ED}\x{81EE}' . +'\x{81F1}\x{81F2}\x{81F3}\x{81F4}\x{81F5}\x{81F6}\x{81F7}\x{81F8}\x{81F9}' . +'\x{81FA}\x{81FB}\x{81FC}\x{81FD}\x{81FE}\x{81FF}\x{8200}\x{8201}\x{8202}' . +'\x{8203}\x{8204}\x{8205}\x{8206}\x{8207}\x{8208}\x{8209}\x{820A}\x{820B}' . +'\x{820C}\x{820D}\x{820E}\x{820F}\x{8210}\x{8211}\x{8212}\x{8214}\x{8215}' . +'\x{8216}\x{8218}\x{8219}\x{821A}\x{821B}\x{821C}\x{821D}\x{821E}\x{821F}' . +'\x{8220}\x{8221}\x{8222}\x{8223}\x{8225}\x{8226}\x{8227}\x{8228}\x{8229}' . +'\x{822A}\x{822B}\x{822C}\x{822D}\x{822F}\x{8230}\x{8231}\x{8232}\x{8233}' . +'\x{8234}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{823A}\x{823B}\x{823C}' . +'\x{823D}\x{823E}\x{823F}\x{8240}\x{8242}\x{8243}\x{8244}\x{8245}\x{8246}' . +'\x{8247}\x{8248}\x{8249}\x{824A}\x{824B}\x{824C}\x{824D}\x{824E}\x{824F}' . +'\x{8250}\x{8251}\x{8252}\x{8253}\x{8254}\x{8255}\x{8256}\x{8257}\x{8258}' . +'\x{8259}\x{825A}\x{825B}\x{825C}\x{825D}\x{825E}\x{825F}\x{8260}\x{8261}' . +'\x{8263}\x{8264}\x{8266}\x{8267}\x{8268}\x{8269}\x{826A}\x{826B}\x{826C}' . +'\x{826D}\x{826E}\x{826F}\x{8270}\x{8271}\x{8272}\x{8273}\x{8274}\x{8275}' . +'\x{8276}\x{8277}\x{8278}\x{8279}\x{827A}\x{827B}\x{827C}\x{827D}\x{827E}' . +'\x{827F}\x{8280}\x{8281}\x{8282}\x{8283}\x{8284}\x{8285}\x{8286}\x{8287}' . +'\x{8288}\x{8289}\x{828A}\x{828B}\x{828D}\x{828E}\x{828F}\x{8290}\x{8291}' . +'\x{8292}\x{8293}\x{8294}\x{8295}\x{8296}\x{8297}\x{8298}\x{8299}\x{829A}' . +'\x{829B}\x{829C}\x{829D}\x{829E}\x{829F}\x{82A0}\x{82A1}\x{82A2}\x{82A3}' . +'\x{82A4}\x{82A5}\x{82A6}\x{82A7}\x{82A8}\x{82A9}\x{82AA}\x{82AB}\x{82AC}' . +'\x{82AD}\x{82AE}\x{82AF}\x{82B0}\x{82B1}\x{82B3}\x{82B4}\x{82B5}\x{82B6}' . +'\x{82B7}\x{82B8}\x{82B9}\x{82BA}\x{82BB}\x{82BC}\x{82BD}\x{82BE}\x{82BF}' . +'\x{82C0}\x{82C1}\x{82C2}\x{82C3}\x{82C4}\x{82C5}\x{82C6}\x{82C7}\x{82C8}' . +'\x{82C9}\x{82CA}\x{82CB}\x{82CC}\x{82CD}\x{82CE}\x{82CF}\x{82D0}\x{82D1}' . +'\x{82D2}\x{82D3}\x{82D4}\x{82D5}\x{82D6}\x{82D7}\x{82D8}\x{82D9}\x{82DA}' . +'\x{82DB}\x{82DC}\x{82DD}\x{82DE}\x{82DF}\x{82E0}\x{82E1}\x{82E3}\x{82E4}' . +'\x{82E5}\x{82E6}\x{82E7}\x{82E8}\x{82E9}\x{82EA}\x{82EB}\x{82EC}\x{82ED}' . +'\x{82EE}\x{82EF}\x{82F0}\x{82F1}\x{82F2}\x{82F3}\x{82F4}\x{82F5}\x{82F6}' . +'\x{82F7}\x{82F8}\x{82F9}\x{82FA}\x{82FB}\x{82FD}\x{82FE}\x{82FF}\x{8300}' . +'\x{8301}\x{8302}\x{8303}\x{8304}\x{8305}\x{8306}\x{8307}\x{8308}\x{8309}' . +'\x{830B}\x{830C}\x{830D}\x{830E}\x{830F}\x{8311}\x{8312}\x{8313}\x{8314}' . +'\x{8315}\x{8316}\x{8317}\x{8318}\x{8319}\x{831A}\x{831B}\x{831C}\x{831D}' . +'\x{831E}\x{831F}\x{8320}\x{8321}\x{8322}\x{8323}\x{8324}\x{8325}\x{8326}' . +'\x{8327}\x{8328}\x{8329}\x{832A}\x{832B}\x{832C}\x{832D}\x{832E}\x{832F}' . +'\x{8331}\x{8332}\x{8333}\x{8334}\x{8335}\x{8336}\x{8337}\x{8338}\x{8339}' . +'\x{833A}\x{833B}\x{833C}\x{833D}\x{833E}\x{833F}\x{8340}\x{8341}\x{8342}' . +'\x{8343}\x{8344}\x{8345}\x{8346}\x{8347}\x{8348}\x{8349}\x{834A}\x{834B}' . +'\x{834C}\x{834D}\x{834E}\x{834F}\x{8350}\x{8351}\x{8352}\x{8353}\x{8354}' . +'\x{8356}\x{8357}\x{8358}\x{8359}\x{835A}\x{835B}\x{835C}\x{835D}\x{835E}' . +'\x{835F}\x{8360}\x{8361}\x{8362}\x{8363}\x{8364}\x{8365}\x{8366}\x{8367}' . +'\x{8368}\x{8369}\x{836A}\x{836B}\x{836C}\x{836D}\x{836E}\x{836F}\x{8370}' . +'\x{8371}\x{8372}\x{8373}\x{8374}\x{8375}\x{8376}\x{8377}\x{8378}\x{8379}' . +'\x{837A}\x{837B}\x{837C}\x{837D}\x{837E}\x{837F}\x{8380}\x{8381}\x{8382}' . +'\x{8383}\x{8384}\x{8385}\x{8386}\x{8387}\x{8388}\x{8389}\x{838A}\x{838B}' . +'\x{838C}\x{838D}\x{838E}\x{838F}\x{8390}\x{8391}\x{8392}\x{8393}\x{8394}' . +'\x{8395}\x{8396}\x{8397}\x{8398}\x{8399}\x{839A}\x{839B}\x{839C}\x{839D}' . +'\x{839E}\x{83A0}\x{83A1}\x{83A2}\x{83A3}\x{83A4}\x{83A5}\x{83A6}\x{83A7}' . +'\x{83A8}\x{83A9}\x{83AA}\x{83AB}\x{83AC}\x{83AD}\x{83AE}\x{83AF}\x{83B0}' . +'\x{83B1}\x{83B2}\x{83B3}\x{83B4}\x{83B6}\x{83B7}\x{83B8}\x{83B9}\x{83BA}' . +'\x{83BB}\x{83BC}\x{83BD}\x{83BF}\x{83C0}\x{83C1}\x{83C2}\x{83C3}\x{83C4}' . +'\x{83C5}\x{83C6}\x{83C7}\x{83C8}\x{83C9}\x{83CA}\x{83CB}\x{83CC}\x{83CD}' . +'\x{83CE}\x{83CF}\x{83D0}\x{83D1}\x{83D2}\x{83D3}\x{83D4}\x{83D5}\x{83D6}' . +'\x{83D7}\x{83D8}\x{83D9}\x{83DA}\x{83DB}\x{83DC}\x{83DD}\x{83DE}\x{83DF}' . +'\x{83E0}\x{83E1}\x{83E2}\x{83E3}\x{83E4}\x{83E5}\x{83E7}\x{83E8}\x{83E9}' . +'\x{83EA}\x{83EB}\x{83EC}\x{83EE}\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F3}' . +'\x{83F4}\x{83F5}\x{83F6}\x{83F7}\x{83F8}\x{83F9}\x{83FA}\x{83FB}\x{83FC}' . +'\x{83FD}\x{83FE}\x{83FF}\x{8400}\x{8401}\x{8402}\x{8403}\x{8404}\x{8405}' . +'\x{8406}\x{8407}\x{8408}\x{8409}\x{840A}\x{840B}\x{840C}\x{840D}\x{840E}' . +'\x{840F}\x{8410}\x{8411}\x{8412}\x{8413}\x{8415}\x{8418}\x{8419}\x{841A}' . +'\x{841B}\x{841C}\x{841D}\x{841E}\x{8421}\x{8422}\x{8423}\x{8424}\x{8425}' . +'\x{8426}\x{8427}\x{8428}\x{8429}\x{842A}\x{842B}\x{842C}\x{842D}\x{842E}' . +'\x{842F}\x{8430}\x{8431}\x{8432}\x{8433}\x{8434}\x{8435}\x{8436}\x{8437}' . +'\x{8438}\x{8439}\x{843A}\x{843B}\x{843C}\x{843D}\x{843E}\x{843F}\x{8440}' . +'\x{8441}\x{8442}\x{8443}\x{8444}\x{8445}\x{8446}\x{8447}\x{8448}\x{8449}' . +'\x{844A}\x{844B}\x{844C}\x{844D}\x{844E}\x{844F}\x{8450}\x{8451}\x{8452}' . +'\x{8453}\x{8454}\x{8455}\x{8456}\x{8457}\x{8459}\x{845A}\x{845B}\x{845C}' . +'\x{845D}\x{845E}\x{845F}\x{8460}\x{8461}\x{8462}\x{8463}\x{8464}\x{8465}' . +'\x{8466}\x{8467}\x{8468}\x{8469}\x{846A}\x{846B}\x{846C}\x{846D}\x{846E}' . +'\x{846F}\x{8470}\x{8471}\x{8472}\x{8473}\x{8474}\x{8475}\x{8476}\x{8477}' . +'\x{8478}\x{8479}\x{847A}\x{847B}\x{847C}\x{847D}\x{847E}\x{847F}\x{8480}' . +'\x{8481}\x{8482}\x{8484}\x{8485}\x{8486}\x{8487}\x{8488}\x{8489}\x{848A}' . +'\x{848B}\x{848C}\x{848D}\x{848E}\x{848F}\x{8490}\x{8491}\x{8492}\x{8493}' . +'\x{8494}\x{8496}\x{8497}\x{8498}\x{8499}\x{849A}\x{849B}\x{849C}\x{849D}' . +'\x{849E}\x{849F}\x{84A0}\x{84A1}\x{84A2}\x{84A3}\x{84A4}\x{84A5}\x{84A6}' . +'\x{84A7}\x{84A8}\x{84A9}\x{84AA}\x{84AB}\x{84AC}\x{84AE}\x{84AF}\x{84B0}' . +'\x{84B1}\x{84B2}\x{84B3}\x{84B4}\x{84B5}\x{84B6}\x{84B8}\x{84B9}\x{84BA}' . +'\x{84BB}\x{84BC}\x{84BD}\x{84BE}\x{84BF}\x{84C0}\x{84C1}\x{84C2}\x{84C4}' . +'\x{84C5}\x{84C6}\x{84C7}\x{84C8}\x{84C9}\x{84CA}\x{84CB}\x{84CC}\x{84CD}' . +'\x{84CE}\x{84CF}\x{84D0}\x{84D1}\x{84D2}\x{84D3}\x{84D4}\x{84D5}\x{84D6}' . +'\x{84D7}\x{84D8}\x{84D9}\x{84DB}\x{84DC}\x{84DD}\x{84DE}\x{84DF}\x{84E0}' . +'\x{84E1}\x{84E2}\x{84E3}\x{84E4}\x{84E5}\x{84E6}\x{84E7}\x{84E8}\x{84E9}' . +'\x{84EA}\x{84EB}\x{84EC}\x{84EE}\x{84EF}\x{84F0}\x{84F1}\x{84F2}\x{84F3}' . +'\x{84F4}\x{84F5}\x{84F6}\x{84F7}\x{84F8}\x{84F9}\x{84FA}\x{84FB}\x{84FC}' . +'\x{84FD}\x{84FE}\x{84FF}\x{8500}\x{8501}\x{8502}\x{8503}\x{8504}\x{8506}' . +'\x{8507}\x{8508}\x{8509}\x{850A}\x{850B}\x{850C}\x{850D}\x{850E}\x{850F}' . +'\x{8511}\x{8512}\x{8513}\x{8514}\x{8515}\x{8516}\x{8517}\x{8518}\x{8519}' . +'\x{851A}\x{851B}\x{851C}\x{851D}\x{851E}\x{851F}\x{8520}\x{8521}\x{8522}' . +'\x{8523}\x{8524}\x{8525}\x{8526}\x{8527}\x{8528}\x{8529}\x{852A}\x{852B}' . +'\x{852C}\x{852D}\x{852E}\x{852F}\x{8530}\x{8531}\x{8534}\x{8535}\x{8536}' . +'\x{8537}\x{8538}\x{8539}\x{853A}\x{853B}\x{853C}\x{853D}\x{853E}\x{853F}' . +'\x{8540}\x{8541}\x{8542}\x{8543}\x{8544}\x{8545}\x{8546}\x{8547}\x{8548}' . +'\x{8549}\x{854A}\x{854B}\x{854D}\x{854E}\x{854F}\x{8551}\x{8552}\x{8553}' . +'\x{8554}\x{8555}\x{8556}\x{8557}\x{8558}\x{8559}\x{855A}\x{855B}\x{855C}' . +'\x{855D}\x{855E}\x{855F}\x{8560}\x{8561}\x{8562}\x{8563}\x{8564}\x{8565}' . +'\x{8566}\x{8567}\x{8568}\x{8569}\x{856A}\x{856B}\x{856C}\x{856D}\x{856E}' . +'\x{856F}\x{8570}\x{8571}\x{8572}\x{8573}\x{8574}\x{8575}\x{8576}\x{8577}' . +'\x{8578}\x{8579}\x{857A}\x{857B}\x{857C}\x{857D}\x{857E}\x{8580}\x{8581}' . +'\x{8582}\x{8583}\x{8584}\x{8585}\x{8586}\x{8587}\x{8588}\x{8589}\x{858A}' . +'\x{858B}\x{858C}\x{858D}\x{858E}\x{858F}\x{8590}\x{8591}\x{8592}\x{8594}' . +'\x{8595}\x{8596}\x{8598}\x{8599}\x{859A}\x{859B}\x{859C}\x{859D}\x{859E}' . +'\x{859F}\x{85A0}\x{85A1}\x{85A2}\x{85A3}\x{85A4}\x{85A5}\x{85A6}\x{85A7}' . +'\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AD}\x{85AE}\x{85AF}\x{85B0}' . +'\x{85B1}\x{85B3}\x{85B4}\x{85B5}\x{85B6}\x{85B7}\x{85B8}\x{85B9}\x{85BA}' . +'\x{85BC}\x{85BD}\x{85BE}\x{85BF}\x{85C0}\x{85C1}\x{85C2}\x{85C3}\x{85C4}' . +'\x{85C5}\x{85C6}\x{85C7}\x{85C8}\x{85C9}\x{85CA}\x{85CB}\x{85CD}\x{85CE}' . +'\x{85CF}\x{85D0}\x{85D1}\x{85D2}\x{85D3}\x{85D4}\x{85D5}\x{85D6}\x{85D7}' . +'\x{85D8}\x{85D9}\x{85DA}\x{85DB}\x{85DC}\x{85DD}\x{85DE}\x{85DF}\x{85E0}' . +'\x{85E1}\x{85E2}\x{85E3}\x{85E4}\x{85E5}\x{85E6}\x{85E7}\x{85E8}\x{85E9}' . +'\x{85EA}\x{85EB}\x{85EC}\x{85ED}\x{85EF}\x{85F0}\x{85F1}\x{85F2}\x{85F4}' . +'\x{85F5}\x{85F6}\x{85F7}\x{85F8}\x{85F9}\x{85FA}\x{85FB}\x{85FD}\x{85FE}' . +'\x{85FF}\x{8600}\x{8601}\x{8602}\x{8604}\x{8605}\x{8606}\x{8607}\x{8608}' . +'\x{8609}\x{860A}\x{860B}\x{860C}\x{860F}\x{8611}\x{8612}\x{8613}\x{8614}' . +'\x{8616}\x{8617}\x{8618}\x{8619}\x{861A}\x{861B}\x{861C}\x{861E}\x{861F}' . +'\x{8620}\x{8621}\x{8622}\x{8623}\x{8624}\x{8625}\x{8626}\x{8627}\x{8628}' . +'\x{8629}\x{862A}\x{862B}\x{862C}\x{862D}\x{862E}\x{862F}\x{8630}\x{8631}' . +'\x{8632}\x{8633}\x{8634}\x{8635}\x{8636}\x{8638}\x{8639}\x{863A}\x{863B}' . +'\x{863C}\x{863D}\x{863E}\x{863F}\x{8640}\x{8641}\x{8642}\x{8643}\x{8644}' . +'\x{8645}\x{8646}\x{8647}\x{8648}\x{8649}\x{864A}\x{864B}\x{864C}\x{864D}' . +'\x{864E}\x{864F}\x{8650}\x{8651}\x{8652}\x{8653}\x{8654}\x{8655}\x{8656}' . +'\x{8658}\x{8659}\x{865A}\x{865B}\x{865C}\x{865D}\x{865E}\x{865F}\x{8660}' . +'\x{8661}\x{8662}\x{8663}\x{8664}\x{8665}\x{8666}\x{8667}\x{8668}\x{8669}' . +'\x{866A}\x{866B}\x{866C}\x{866D}\x{866E}\x{866F}\x{8670}\x{8671}\x{8672}' . +'\x{8673}\x{8674}\x{8676}\x{8677}\x{8678}\x{8679}\x{867A}\x{867B}\x{867C}' . +'\x{867D}\x{867E}\x{867F}\x{8680}\x{8681}\x{8682}\x{8683}\x{8684}\x{8685}' . +'\x{8686}\x{8687}\x{8688}\x{868A}\x{868B}\x{868C}\x{868D}\x{868E}\x{868F}' . +'\x{8690}\x{8691}\x{8693}\x{8694}\x{8695}\x{8696}\x{8697}\x{8698}\x{8699}' . +'\x{869A}\x{869B}\x{869C}\x{869D}\x{869E}\x{869F}\x{86A1}\x{86A2}\x{86A3}' . +'\x{86A4}\x{86A5}\x{86A7}\x{86A8}\x{86A9}\x{86AA}\x{86AB}\x{86AC}\x{86AD}' . +'\x{86AE}\x{86AF}\x{86B0}\x{86B1}\x{86B2}\x{86B3}\x{86B4}\x{86B5}\x{86B6}' . +'\x{86B7}\x{86B8}\x{86B9}\x{86BA}\x{86BB}\x{86BC}\x{86BD}\x{86BE}\x{86BF}' . +'\x{86C0}\x{86C1}\x{86C2}\x{86C3}\x{86C4}\x{86C5}\x{86C6}\x{86C7}\x{86C8}' . +'\x{86C9}\x{86CA}\x{86CB}\x{86CC}\x{86CE}\x{86CF}\x{86D0}\x{86D1}\x{86D2}' . +'\x{86D3}\x{86D4}\x{86D6}\x{86D7}\x{86D8}\x{86D9}\x{86DA}\x{86DB}\x{86DC}' . +'\x{86DD}\x{86DE}\x{86DF}\x{86E1}\x{86E2}\x{86E3}\x{86E4}\x{86E5}\x{86E6}' . +'\x{86E8}\x{86E9}\x{86EA}\x{86EB}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F0}' . +'\x{86F1}\x{86F2}\x{86F3}\x{86F4}\x{86F5}\x{86F6}\x{86F7}\x{86F8}\x{86F9}' . +'\x{86FA}\x{86FB}\x{86FC}\x{86FE}\x{86FF}\x{8700}\x{8701}\x{8702}\x{8703}' . +'\x{8704}\x{8705}\x{8706}\x{8707}\x{8708}\x{8709}\x{870A}\x{870B}\x{870C}' . +'\x{870D}\x{870E}\x{870F}\x{8710}\x{8711}\x{8712}\x{8713}\x{8714}\x{8715}' . +'\x{8716}\x{8717}\x{8718}\x{8719}\x{871A}\x{871B}\x{871C}\x{871E}\x{871F}' . +'\x{8720}\x{8721}\x{8722}\x{8723}\x{8724}\x{8725}\x{8726}\x{8727}\x{8728}' . +'\x{8729}\x{872A}\x{872B}\x{872C}\x{872D}\x{872E}\x{8730}\x{8731}\x{8732}' . +'\x{8733}\x{8734}\x{8735}\x{8736}\x{8737}\x{8738}\x{8739}\x{873A}\x{873B}' . +'\x{873C}\x{873E}\x{873F}\x{8740}\x{8741}\x{8742}\x{8743}\x{8744}\x{8746}' . +'\x{8747}\x{8748}\x{8749}\x{874A}\x{874C}\x{874D}\x{874E}\x{874F}\x{8750}' . +'\x{8751}\x{8752}\x{8753}\x{8754}\x{8755}\x{8756}\x{8757}\x{8758}\x{8759}' . +'\x{875A}\x{875B}\x{875C}\x{875D}\x{875E}\x{875F}\x{8760}\x{8761}\x{8762}' . +'\x{8763}\x{8764}\x{8765}\x{8766}\x{8767}\x{8768}\x{8769}\x{876A}\x{876B}' . +'\x{876C}\x{876D}\x{876E}\x{876F}\x{8770}\x{8772}\x{8773}\x{8774}\x{8775}' . +'\x{8776}\x{8777}\x{8778}\x{8779}\x{877A}\x{877B}\x{877C}\x{877D}\x{877E}' . +'\x{8780}\x{8781}\x{8782}\x{8783}\x{8784}\x{8785}\x{8786}\x{8787}\x{8788}' . +'\x{8789}\x{878A}\x{878B}\x{878C}\x{878D}\x{878F}\x{8790}\x{8791}\x{8792}' . +'\x{8793}\x{8794}\x{8795}\x{8796}\x{8797}\x{8798}\x{879A}\x{879B}\x{879C}' . +'\x{879D}\x{879E}\x{879F}\x{87A0}\x{87A1}\x{87A2}\x{87A3}\x{87A4}\x{87A5}' . +'\x{87A6}\x{87A7}\x{87A8}\x{87A9}\x{87AA}\x{87AB}\x{87AC}\x{87AD}\x{87AE}' . +'\x{87AF}\x{87B0}\x{87B1}\x{87B2}\x{87B3}\x{87B4}\x{87B5}\x{87B6}\x{87B7}' . +'\x{87B8}\x{87B9}\x{87BA}\x{87BB}\x{87BC}\x{87BD}\x{87BE}\x{87BF}\x{87C0}' . +'\x{87C1}\x{87C2}\x{87C3}\x{87C4}\x{87C5}\x{87C6}\x{87C7}\x{87C8}\x{87C9}' . +'\x{87CA}\x{87CB}\x{87CC}\x{87CD}\x{87CE}\x{87CF}\x{87D0}\x{87D1}\x{87D2}' . +'\x{87D3}\x{87D4}\x{87D5}\x{87D6}\x{87D7}\x{87D8}\x{87D9}\x{87DB}\x{87DC}' . +'\x{87DD}\x{87DE}\x{87DF}\x{87E0}\x{87E1}\x{87E2}\x{87E3}\x{87E4}\x{87E5}' . +'\x{87E6}\x{87E7}\x{87E8}\x{87E9}\x{87EA}\x{87EB}\x{87EC}\x{87ED}\x{87EE}' . +'\x{87EF}\x{87F1}\x{87F2}\x{87F3}\x{87F4}\x{87F5}\x{87F6}\x{87F7}\x{87F8}' . +'\x{87F9}\x{87FA}\x{87FB}\x{87FC}\x{87FD}\x{87FE}\x{87FF}\x{8800}\x{8801}' . +'\x{8802}\x{8803}\x{8804}\x{8805}\x{8806}\x{8808}\x{8809}\x{880A}\x{880B}' . +'\x{880C}\x{880D}\x{880E}\x{880F}\x{8810}\x{8811}\x{8813}\x{8814}\x{8815}' . +'\x{8816}\x{8817}\x{8818}\x{8819}\x{881A}\x{881B}\x{881C}\x{881D}\x{881E}' . +'\x{881F}\x{8820}\x{8821}\x{8822}\x{8823}\x{8824}\x{8825}\x{8826}\x{8827}' . +'\x{8828}\x{8829}\x{882A}\x{882B}\x{882C}\x{882E}\x{882F}\x{8830}\x{8831}' . +'\x{8832}\x{8833}\x{8834}\x{8835}\x{8836}\x{8837}\x{8838}\x{8839}\x{883B}' . +'\x{883C}\x{883D}\x{883E}\x{883F}\x{8840}\x{8841}\x{8842}\x{8843}\x{8844}' . +'\x{8845}\x{8846}\x{8848}\x{8849}\x{884A}\x{884B}\x{884C}\x{884D}\x{884E}' . +'\x{884F}\x{8850}\x{8851}\x{8852}\x{8853}\x{8854}\x{8855}\x{8856}\x{8857}' . +'\x{8859}\x{885A}\x{885B}\x{885D}\x{885E}\x{8860}\x{8861}\x{8862}\x{8863}' . +'\x{8864}\x{8865}\x{8866}\x{8867}\x{8868}\x{8869}\x{886A}\x{886B}\x{886C}' . +'\x{886D}\x{886E}\x{886F}\x{8870}\x{8871}\x{8872}\x{8873}\x{8874}\x{8875}' . +'\x{8876}\x{8877}\x{8878}\x{8879}\x{887B}\x{887C}\x{887D}\x{887E}\x{887F}' . +'\x{8880}\x{8881}\x{8882}\x{8883}\x{8884}\x{8885}\x{8886}\x{8887}\x{8888}' . +'\x{8889}\x{888A}\x{888B}\x{888C}\x{888D}\x{888E}\x{888F}\x{8890}\x{8891}' . +'\x{8892}\x{8893}\x{8894}\x{8895}\x{8896}\x{8897}\x{8898}\x{8899}\x{889A}' . +'\x{889B}\x{889C}\x{889D}\x{889E}\x{889F}\x{88A0}\x{88A1}\x{88A2}\x{88A3}' . +'\x{88A4}\x{88A5}\x{88A6}\x{88A7}\x{88A8}\x{88A9}\x{88AA}\x{88AB}\x{88AC}' . +'\x{88AD}\x{88AE}\x{88AF}\x{88B0}\x{88B1}\x{88B2}\x{88B3}\x{88B4}\x{88B6}' . +'\x{88B7}\x{88B8}\x{88B9}\x{88BA}\x{88BB}\x{88BC}\x{88BD}\x{88BE}\x{88BF}' . +'\x{88C0}\x{88C1}\x{88C2}\x{88C3}\x{88C4}\x{88C5}\x{88C6}\x{88C7}\x{88C8}' . +'\x{88C9}\x{88CA}\x{88CB}\x{88CC}\x{88CD}\x{88CE}\x{88CF}\x{88D0}\x{88D1}' . +'\x{88D2}\x{88D3}\x{88D4}\x{88D5}\x{88D6}\x{88D7}\x{88D8}\x{88D9}\x{88DA}' . +'\x{88DB}\x{88DC}\x{88DD}\x{88DE}\x{88DF}\x{88E0}\x{88E1}\x{88E2}\x{88E3}' . +'\x{88E4}\x{88E5}\x{88E7}\x{88E8}\x{88EA}\x{88EB}\x{88EC}\x{88EE}\x{88EF}' . +'\x{88F0}\x{88F1}\x{88F2}\x{88F3}\x{88F4}\x{88F5}\x{88F6}\x{88F7}\x{88F8}' . +'\x{88F9}\x{88FA}\x{88FB}\x{88FC}\x{88FD}\x{88FE}\x{88FF}\x{8900}\x{8901}' . +'\x{8902}\x{8904}\x{8905}\x{8906}\x{8907}\x{8908}\x{8909}\x{890A}\x{890B}' . +'\x{890C}\x{890D}\x{890E}\x{8910}\x{8911}\x{8912}\x{8913}\x{8914}\x{8915}' . +'\x{8916}\x{8917}\x{8918}\x{8919}\x{891A}\x{891B}\x{891C}\x{891D}\x{891E}' . +'\x{891F}\x{8920}\x{8921}\x{8922}\x{8923}\x{8925}\x{8926}\x{8927}\x{8928}' . +'\x{8929}\x{892A}\x{892B}\x{892C}\x{892D}\x{892E}\x{892F}\x{8930}\x{8931}' . +'\x{8932}\x{8933}\x{8934}\x{8935}\x{8936}\x{8937}\x{8938}\x{8939}\x{893A}' . +'\x{893B}\x{893C}\x{893D}\x{893E}\x{893F}\x{8940}\x{8941}\x{8942}\x{8943}' . +'\x{8944}\x{8945}\x{8946}\x{8947}\x{8948}\x{8949}\x{894A}\x{894B}\x{894C}' . +'\x{894E}\x{894F}\x{8950}\x{8951}\x{8952}\x{8953}\x{8954}\x{8955}\x{8956}' . +'\x{8957}\x{8958}\x{8959}\x{895A}\x{895B}\x{895C}\x{895D}\x{895E}\x{895F}' . +'\x{8960}\x{8961}\x{8962}\x{8963}\x{8964}\x{8966}\x{8967}\x{8968}\x{8969}' . +'\x{896A}\x{896B}\x{896C}\x{896D}\x{896E}\x{896F}\x{8970}\x{8971}\x{8972}' . +'\x{8973}\x{8974}\x{8976}\x{8977}\x{8978}\x{8979}\x{897A}\x{897B}\x{897C}' . +'\x{897E}\x{897F}\x{8980}\x{8981}\x{8982}\x{8983}\x{8984}\x{8985}\x{8986}' . +'\x{8987}\x{8988}\x{8989}\x{898A}\x{898B}\x{898C}\x{898E}\x{898F}\x{8991}' . +'\x{8992}\x{8993}\x{8995}\x{8996}\x{8997}\x{8998}\x{899A}\x{899B}\x{899C}' . +'\x{899D}\x{899E}\x{899F}\x{89A0}\x{89A1}\x{89A2}\x{89A3}\x{89A4}\x{89A5}' . +'\x{89A6}\x{89A7}\x{89A8}\x{89AA}\x{89AB}\x{89AC}\x{89AD}\x{89AE}\x{89AF}' . +'\x{89B1}\x{89B2}\x{89B3}\x{89B5}\x{89B6}\x{89B7}\x{89B8}\x{89B9}\x{89BA}' . +'\x{89BD}\x{89BE}\x{89BF}\x{89C0}\x{89C1}\x{89C2}\x{89C3}\x{89C4}\x{89C5}' . +'\x{89C6}\x{89C7}\x{89C8}\x{89C9}\x{89CA}\x{89CB}\x{89CC}\x{89CD}\x{89CE}' . +'\x{89CF}\x{89D0}\x{89D1}\x{89D2}\x{89D3}\x{89D4}\x{89D5}\x{89D6}\x{89D7}' . +'\x{89D8}\x{89D9}\x{89DA}\x{89DB}\x{89DC}\x{89DD}\x{89DE}\x{89DF}\x{89E0}' . +'\x{89E1}\x{89E2}\x{89E3}\x{89E4}\x{89E5}\x{89E6}\x{89E7}\x{89E8}\x{89E9}' . +'\x{89EA}\x{89EB}\x{89EC}\x{89ED}\x{89EF}\x{89F0}\x{89F1}\x{89F2}\x{89F3}' . +'\x{89F4}\x{89F6}\x{89F7}\x{89F8}\x{89FA}\x{89FB}\x{89FC}\x{89FE}\x{89FF}' . +'\x{8A00}\x{8A01}\x{8A02}\x{8A03}\x{8A04}\x{8A07}\x{8A08}\x{8A09}\x{8A0A}' . +'\x{8A0B}\x{8A0C}\x{8A0D}\x{8A0E}\x{8A0F}\x{8A10}\x{8A11}\x{8A12}\x{8A13}' . +'\x{8A15}\x{8A16}\x{8A17}\x{8A18}\x{8A1A}\x{8A1B}\x{8A1C}\x{8A1D}\x{8A1E}' . +'\x{8A1F}\x{8A22}\x{8A23}\x{8A24}\x{8A25}\x{8A26}\x{8A27}\x{8A28}\x{8A29}' . +'\x{8A2A}\x{8A2C}\x{8A2D}\x{8A2E}\x{8A2F}\x{8A30}\x{8A31}\x{8A32}\x{8A34}' . +'\x{8A35}\x{8A36}\x{8A37}\x{8A38}\x{8A39}\x{8A3A}\x{8A3B}\x{8A3C}\x{8A3E}' . +'\x{8A3F}\x{8A40}\x{8A41}\x{8A42}\x{8A43}\x{8A44}\x{8A45}\x{8A46}\x{8A47}' . +'\x{8A48}\x{8A49}\x{8A4A}\x{8A4C}\x{8A4D}\x{8A4E}\x{8A4F}\x{8A50}\x{8A51}' . +'\x{8A52}\x{8A53}\x{8A54}\x{8A55}\x{8A56}\x{8A57}\x{8A58}\x{8A59}\x{8A5A}' . +'\x{8A5B}\x{8A5C}\x{8A5D}\x{8A5E}\x{8A5F}\x{8A60}\x{8A61}\x{8A62}\x{8A63}' . +'\x{8A65}\x{8A66}\x{8A67}\x{8A68}\x{8A69}\x{8A6A}\x{8A6B}\x{8A6C}\x{8A6D}' . +'\x{8A6E}\x{8A6F}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A74}\x{8A75}\x{8A76}' . +'\x{8A77}\x{8A79}\x{8A7A}\x{8A7B}\x{8A7C}\x{8A7E}\x{8A7F}\x{8A80}\x{8A81}' . +'\x{8A82}\x{8A83}\x{8A84}\x{8A85}\x{8A86}\x{8A87}\x{8A89}\x{8A8A}\x{8A8B}' . +'\x{8A8C}\x{8A8D}\x{8A8E}\x{8A8F}\x{8A90}\x{8A91}\x{8A92}\x{8A93}\x{8A94}' . +'\x{8A95}\x{8A96}\x{8A97}\x{8A98}\x{8A99}\x{8A9A}\x{8A9B}\x{8A9C}\x{8A9D}' . +'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA2}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA7}' . +'\x{8AA8}\x{8AA9}\x{8AAA}\x{8AAB}\x{8AAC}\x{8AAE}\x{8AB0}\x{8AB1}\x{8AB2}' . +'\x{8AB3}\x{8AB4}\x{8AB5}\x{8AB6}\x{8AB8}\x{8AB9}\x{8ABA}\x{8ABB}\x{8ABC}' . +'\x{8ABD}\x{8ABE}\x{8ABF}\x{8AC0}\x{8AC1}\x{8AC2}\x{8AC3}\x{8AC4}\x{8AC5}' . +'\x{8AC6}\x{8AC7}\x{8AC8}\x{8AC9}\x{8ACA}\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACE}' . +'\x{8ACF}\x{8AD1}\x{8AD2}\x{8AD3}\x{8AD4}\x{8AD5}\x{8AD6}\x{8AD7}\x{8AD8}' . +'\x{8AD9}\x{8ADA}\x{8ADB}\x{8ADC}\x{8ADD}\x{8ADE}\x{8ADF}\x{8AE0}\x{8AE1}' . +'\x{8AE2}\x{8AE3}\x{8AE4}\x{8AE5}\x{8AE6}\x{8AE7}\x{8AE8}\x{8AE9}\x{8AEA}' . +'\x{8AEB}\x{8AED}\x{8AEE}\x{8AEF}\x{8AF0}\x{8AF1}\x{8AF2}\x{8AF3}\x{8AF4}' . +'\x{8AF5}\x{8AF6}\x{8AF7}\x{8AF8}\x{8AF9}\x{8AFA}\x{8AFB}\x{8AFC}\x{8AFD}' . +'\x{8AFE}\x{8AFF}\x{8B00}\x{8B01}\x{8B02}\x{8B03}\x{8B04}\x{8B05}\x{8B06}' . +'\x{8B07}\x{8B08}\x{8B09}\x{8B0A}\x{8B0B}\x{8B0D}\x{8B0E}\x{8B0F}\x{8B10}' . +'\x{8B11}\x{8B12}\x{8B13}\x{8B14}\x{8B15}\x{8B16}\x{8B17}\x{8B18}\x{8B19}' . +'\x{8B1A}\x{8B1B}\x{8B1C}\x{8B1D}\x{8B1E}\x{8B1F}\x{8B20}\x{8B21}\x{8B22}' . +'\x{8B23}\x{8B24}\x{8B25}\x{8B26}\x{8B27}\x{8B28}\x{8B2A}\x{8B2B}\x{8B2C}' . +'\x{8B2D}\x{8B2E}\x{8B2F}\x{8B30}\x{8B31}\x{8B33}\x{8B34}\x{8B35}\x{8B36}' . +'\x{8B37}\x{8B39}\x{8B3A}\x{8B3B}\x{8B3C}\x{8B3D}\x{8B3E}\x{8B40}\x{8B41}' . +'\x{8B42}\x{8B43}\x{8B44}\x{8B45}\x{8B46}\x{8B47}\x{8B48}\x{8B49}\x{8B4A}' . +'\x{8B4B}\x{8B4C}\x{8B4D}\x{8B4E}\x{8B4F}\x{8B50}\x{8B51}\x{8B52}\x{8B53}' . +'\x{8B54}\x{8B55}\x{8B56}\x{8B57}\x{8B58}\x{8B59}\x{8B5A}\x{8B5B}\x{8B5C}' . +'\x{8B5D}\x{8B5E}\x{8B5F}\x{8B60}\x{8B63}\x{8B64}\x{8B65}\x{8B66}\x{8B67}' . +'\x{8B68}\x{8B6A}\x{8B6B}\x{8B6C}\x{8B6D}\x{8B6E}\x{8B6F}\x{8B70}\x{8B71}' . +'\x{8B73}\x{8B74}\x{8B76}\x{8B77}\x{8B78}\x{8B79}\x{8B7A}\x{8B7B}\x{8B7D}' . +'\x{8B7E}\x{8B7F}\x{8B80}\x{8B82}\x{8B83}\x{8B84}\x{8B85}\x{8B86}\x{8B88}' . +'\x{8B89}\x{8B8A}\x{8B8B}\x{8B8C}\x{8B8E}\x{8B90}\x{8B91}\x{8B92}\x{8B93}' . +'\x{8B94}\x{8B95}\x{8B96}\x{8B97}\x{8B98}\x{8B99}\x{8B9A}\x{8B9C}\x{8B9D}' . +'\x{8B9E}\x{8B9F}\x{8BA0}\x{8BA1}\x{8BA2}\x{8BA3}\x{8BA4}\x{8BA5}\x{8BA6}' . +'\x{8BA7}\x{8BA8}\x{8BA9}\x{8BAA}\x{8BAB}\x{8BAC}\x{8BAD}\x{8BAE}\x{8BAF}' . +'\x{8BB0}\x{8BB1}\x{8BB2}\x{8BB3}\x{8BB4}\x{8BB5}\x{8BB6}\x{8BB7}\x{8BB8}' . +'\x{8BB9}\x{8BBA}\x{8BBB}\x{8BBC}\x{8BBD}\x{8BBE}\x{8BBF}\x{8BC0}\x{8BC1}' . +'\x{8BC2}\x{8BC3}\x{8BC4}\x{8BC5}\x{8BC6}\x{8BC7}\x{8BC8}\x{8BC9}\x{8BCA}' . +'\x{8BCB}\x{8BCC}\x{8BCD}\x{8BCE}\x{8BCF}\x{8BD0}\x{8BD1}\x{8BD2}\x{8BD3}' . +'\x{8BD4}\x{8BD5}\x{8BD6}\x{8BD7}\x{8BD8}\x{8BD9}\x{8BDA}\x{8BDB}\x{8BDC}' . +'\x{8BDD}\x{8BDE}\x{8BDF}\x{8BE0}\x{8BE1}\x{8BE2}\x{8BE3}\x{8BE4}\x{8BE5}' . +'\x{8BE6}\x{8BE7}\x{8BE8}\x{8BE9}\x{8BEA}\x{8BEB}\x{8BEC}\x{8BED}\x{8BEE}' . +'\x{8BEF}\x{8BF0}\x{8BF1}\x{8BF2}\x{8BF3}\x{8BF4}\x{8BF5}\x{8BF6}\x{8BF7}' . +'\x{8BF8}\x{8BF9}\x{8BFA}\x{8BFB}\x{8BFC}\x{8BFD}\x{8BFE}\x{8BFF}\x{8C00}' . +'\x{8C01}\x{8C02}\x{8C03}\x{8C04}\x{8C05}\x{8C06}\x{8C07}\x{8C08}\x{8C09}' . +'\x{8C0A}\x{8C0B}\x{8C0C}\x{8C0D}\x{8C0E}\x{8C0F}\x{8C10}\x{8C11}\x{8C12}' . +'\x{8C13}\x{8C14}\x{8C15}\x{8C16}\x{8C17}\x{8C18}\x{8C19}\x{8C1A}\x{8C1B}' . +'\x{8C1C}\x{8C1D}\x{8C1E}\x{8C1F}\x{8C20}\x{8C21}\x{8C22}\x{8C23}\x{8C24}' . +'\x{8C25}\x{8C26}\x{8C27}\x{8C28}\x{8C29}\x{8C2A}\x{8C2B}\x{8C2C}\x{8C2D}' . +'\x{8C2E}\x{8C2F}\x{8C30}\x{8C31}\x{8C32}\x{8C33}\x{8C34}\x{8C35}\x{8C36}' . +'\x{8C37}\x{8C39}\x{8C3A}\x{8C3B}\x{8C3C}\x{8C3D}\x{8C3E}\x{8C3F}\x{8C41}' . +'\x{8C42}\x{8C43}\x{8C45}\x{8C46}\x{8C47}\x{8C48}\x{8C49}\x{8C4A}\x{8C4B}' . +'\x{8C4C}\x{8C4D}\x{8C4E}\x{8C4F}\x{8C50}\x{8C54}\x{8C55}\x{8C56}\x{8C57}' . +'\x{8C59}\x{8C5A}\x{8C5B}\x{8C5C}\x{8C5D}\x{8C5E}\x{8C5F}\x{8C60}\x{8C61}' . +'\x{8C62}\x{8C63}\x{8C64}\x{8C65}\x{8C66}\x{8C67}\x{8C68}\x{8C69}\x{8C6A}' . +'\x{8C6B}\x{8C6C}\x{8C6D}\x{8C6E}\x{8C6F}\x{8C70}\x{8C71}\x{8C72}\x{8C73}' . +'\x{8C75}\x{8C76}\x{8C77}\x{8C78}\x{8C79}\x{8C7A}\x{8C7B}\x{8C7D}\x{8C7E}' . +'\x{8C80}\x{8C81}\x{8C82}\x{8C84}\x{8C85}\x{8C86}\x{8C88}\x{8C89}\x{8C8A}' . +'\x{8C8C}\x{8C8D}\x{8C8F}\x{8C90}\x{8C91}\x{8C92}\x{8C93}\x{8C94}\x{8C95}' . +'\x{8C96}\x{8C97}\x{8C98}\x{8C99}\x{8C9A}\x{8C9C}\x{8C9D}\x{8C9E}\x{8C9F}' . +'\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA3}\x{8CA4}\x{8CA5}\x{8CA7}\x{8CA8}\x{8CA9}' . +'\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}\x{8CB1}\x{8CB2}' . +'\x{8CB3}\x{8CB4}\x{8CB5}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CB9}\x{8CBA}\x{8CBB}' . +'\x{8CBC}\x{8CBD}\x{8CBE}\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}' . +'\x{8CC5}\x{8CC6}\x{8CC7}\x{8CC8}\x{8CC9}\x{8CCA}\x{8CCC}\x{8CCE}\x{8CCF}' . +'\x{8CD0}\x{8CD1}\x{8CD2}\x{8CD3}\x{8CD4}\x{8CD5}\x{8CD7}\x{8CD9}\x{8CDA}' . +'\x{8CDB}\x{8CDC}\x{8CDD}\x{8CDE}\x{8CDF}\x{8CE0}\x{8CE1}\x{8CE2}\x{8CE3}' . +'\x{8CE4}\x{8CE5}\x{8CE6}\x{8CE7}\x{8CE8}\x{8CEA}\x{8CEB}\x{8CEC}\x{8CED}' . +'\x{8CEE}\x{8CEF}\x{8CF0}\x{8CF1}\x{8CF2}\x{8CF3}\x{8CF4}\x{8CF5}\x{8CF6}' . +'\x{8CF8}\x{8CF9}\x{8CFA}\x{8CFB}\x{8CFC}\x{8CFD}\x{8CFE}\x{8CFF}\x{8D00}' . +'\x{8D02}\x{8D03}\x{8D04}\x{8D05}\x{8D06}\x{8D07}\x{8D08}\x{8D09}\x{8D0A}' . +'\x{8D0B}\x{8D0C}\x{8D0D}\x{8D0E}\x{8D0F}\x{8D10}\x{8D13}\x{8D14}\x{8D15}' . +'\x{8D16}\x{8D17}\x{8D18}\x{8D19}\x{8D1A}\x{8D1B}\x{8D1C}\x{8D1D}\x{8D1E}' . +'\x{8D1F}\x{8D20}\x{8D21}\x{8D22}\x{8D23}\x{8D24}\x{8D25}\x{8D26}\x{8D27}' . +'\x{8D28}\x{8D29}\x{8D2A}\x{8D2B}\x{8D2C}\x{8D2D}\x{8D2E}\x{8D2F}\x{8D30}' . +'\x{8D31}\x{8D32}\x{8D33}\x{8D34}\x{8D35}\x{8D36}\x{8D37}\x{8D38}\x{8D39}' . +'\x{8D3A}\x{8D3B}\x{8D3C}\x{8D3D}\x{8D3E}\x{8D3F}\x{8D40}\x{8D41}\x{8D42}' . +'\x{8D43}\x{8D44}\x{8D45}\x{8D46}\x{8D47}\x{8D48}\x{8D49}\x{8D4A}\x{8D4B}' . +'\x{8D4C}\x{8D4D}\x{8D4E}\x{8D4F}\x{8D50}\x{8D51}\x{8D52}\x{8D53}\x{8D54}' . +'\x{8D55}\x{8D56}\x{8D57}\x{8D58}\x{8D59}\x{8D5A}\x{8D5B}\x{8D5C}\x{8D5D}' . +'\x{8D5E}\x{8D5F}\x{8D60}\x{8D61}\x{8D62}\x{8D63}\x{8D64}\x{8D65}\x{8D66}' . +'\x{8D67}\x{8D68}\x{8D69}\x{8D6A}\x{8D6B}\x{8D6C}\x{8D6D}\x{8D6E}\x{8D6F}' . +'\x{8D70}\x{8D71}\x{8D72}\x{8D73}\x{8D74}\x{8D75}\x{8D76}\x{8D77}\x{8D78}' . +'\x{8D79}\x{8D7A}\x{8D7B}\x{8D7D}\x{8D7E}\x{8D7F}\x{8D80}\x{8D81}\x{8D82}' . +'\x{8D83}\x{8D84}\x{8D85}\x{8D86}\x{8D87}\x{8D88}\x{8D89}\x{8D8A}\x{8D8B}' . +'\x{8D8C}\x{8D8D}\x{8D8E}\x{8D8F}\x{8D90}\x{8D91}\x{8D92}\x{8D93}\x{8D94}' . +'\x{8D95}\x{8D96}\x{8D97}\x{8D98}\x{8D99}\x{8D9A}\x{8D9B}\x{8D9C}\x{8D9D}' . +'\x{8D9E}\x{8D9F}\x{8DA0}\x{8DA1}\x{8DA2}\x{8DA3}\x{8DA4}\x{8DA5}\x{8DA7}' . +'\x{8DA8}\x{8DA9}\x{8DAA}\x{8DAB}\x{8DAC}\x{8DAD}\x{8DAE}\x{8DAF}\x{8DB0}' . +'\x{8DB1}\x{8DB2}\x{8DB3}\x{8DB4}\x{8DB5}\x{8DB6}\x{8DB7}\x{8DB8}\x{8DB9}' . +'\x{8DBA}\x{8DBB}\x{8DBC}\x{8DBD}\x{8DBE}\x{8DBF}\x{8DC1}\x{8DC2}\x{8DC3}' . +'\x{8DC4}\x{8DC5}\x{8DC6}\x{8DC7}\x{8DC8}\x{8DC9}\x{8DCA}\x{8DCB}\x{8DCC}' . +'\x{8DCD}\x{8DCE}\x{8DCF}\x{8DD0}\x{8DD1}\x{8DD2}\x{8DD3}\x{8DD4}\x{8DD5}' . +'\x{8DD6}\x{8DD7}\x{8DD8}\x{8DD9}\x{8DDA}\x{8DDB}\x{8DDC}\x{8DDD}\x{8DDE}' . +'\x{8DDF}\x{8DE0}\x{8DE1}\x{8DE2}\x{8DE3}\x{8DE4}\x{8DE6}\x{8DE7}\x{8DE8}' . +'\x{8DE9}\x{8DEA}\x{8DEB}\x{8DEC}\x{8DED}\x{8DEE}\x{8DEF}\x{8DF0}\x{8DF1}' . +'\x{8DF2}\x{8DF3}\x{8DF4}\x{8DF5}\x{8DF6}\x{8DF7}\x{8DF8}\x{8DF9}\x{8DFA}' . +'\x{8DFB}\x{8DFC}\x{8DFD}\x{8DFE}\x{8DFF}\x{8E00}\x{8E02}\x{8E03}\x{8E04}' . +'\x{8E05}\x{8E06}\x{8E07}\x{8E08}\x{8E09}\x{8E0A}\x{8E0C}\x{8E0D}\x{8E0E}' . +'\x{8E0F}\x{8E10}\x{8E11}\x{8E12}\x{8E13}\x{8E14}\x{8E15}\x{8E16}\x{8E17}' . +'\x{8E18}\x{8E19}\x{8E1A}\x{8E1B}\x{8E1C}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E20}' . +'\x{8E21}\x{8E22}\x{8E23}\x{8E24}\x{8E25}\x{8E26}\x{8E27}\x{8E28}\x{8E29}' . +'\x{8E2A}\x{8E2B}\x{8E2C}\x{8E2D}\x{8E2E}\x{8E2F}\x{8E30}\x{8E31}\x{8E33}' . +'\x{8E34}\x{8E35}\x{8E36}\x{8E37}\x{8E38}\x{8E39}\x{8E3A}\x{8E3B}\x{8E3C}' . +'\x{8E3D}\x{8E3E}\x{8E3F}\x{8E40}\x{8E41}\x{8E42}\x{8E43}\x{8E44}\x{8E45}' . +'\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4B}\x{8E4C}\x{8E4D}\x{8E4E}\x{8E50}' . +'\x{8E51}\x{8E52}\x{8E53}\x{8E54}\x{8E55}\x{8E56}\x{8E57}\x{8E58}\x{8E59}' . +'\x{8E5A}\x{8E5B}\x{8E5C}\x{8E5D}\x{8E5E}\x{8E5F}\x{8E60}\x{8E61}\x{8E62}' . +'\x{8E63}\x{8E64}\x{8E65}\x{8E66}\x{8E67}\x{8E68}\x{8E69}\x{8E6A}\x{8E6B}' . +'\x{8E6C}\x{8E6D}\x{8E6F}\x{8E70}\x{8E71}\x{8E72}\x{8E73}\x{8E74}\x{8E76}' . +'\x{8E78}\x{8E7A}\x{8E7B}\x{8E7C}\x{8E7D}\x{8E7E}\x{8E7F}\x{8E80}\x{8E81}' . +'\x{8E82}\x{8E83}\x{8E84}\x{8E85}\x{8E86}\x{8E87}\x{8E88}\x{8E89}\x{8E8A}' . +'\x{8E8B}\x{8E8C}\x{8E8D}\x{8E8E}\x{8E8F}\x{8E90}\x{8E91}\x{8E92}\x{8E93}' . +'\x{8E94}\x{8E95}\x{8E96}\x{8E97}\x{8E98}\x{8E9A}\x{8E9C}\x{8E9D}\x{8E9E}' . +'\x{8E9F}\x{8EA0}\x{8EA1}\x{8EA3}\x{8EA4}\x{8EA5}\x{8EA6}\x{8EA7}\x{8EA8}' . +'\x{8EA9}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAD}\x{8EAE}\x{8EAF}\x{8EB0}\x{8EB1}' . +'\x{8EB2}\x{8EB4}\x{8EB5}\x{8EB8}\x{8EB9}\x{8EBA}\x{8EBB}\x{8EBC}\x{8EBD}' . +'\x{8EBE}\x{8EBF}\x{8EC0}\x{8EC2}\x{8EC3}\x{8EC5}\x{8EC6}\x{8EC7}\x{8EC8}' . +'\x{8EC9}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ECE}\x{8ECF}\x{8ED0}\x{8ED1}' . +'\x{8ED2}\x{8ED3}\x{8ED4}\x{8ED5}\x{8ED6}\x{8ED7}\x{8ED8}\x{8EDA}\x{8EDB}' . +'\x{8EDC}\x{8EDD}\x{8EDE}\x{8EDF}\x{8EE0}\x{8EE1}\x{8EE4}\x{8EE5}\x{8EE6}' . +'\x{8EE7}\x{8EE8}\x{8EE9}\x{8EEA}\x{8EEB}\x{8EEC}\x{8EED}\x{8EEE}\x{8EEF}' . +'\x{8EF1}\x{8EF2}\x{8EF3}\x{8EF4}\x{8EF5}\x{8EF6}\x{8EF7}\x{8EF8}\x{8EF9}' . +'\x{8EFA}\x{8EFB}\x{8EFC}\x{8EFD}\x{8EFE}\x{8EFF}\x{8F00}\x{8F01}\x{8F02}' . +'\x{8F03}\x{8F04}\x{8F05}\x{8F06}\x{8F07}\x{8F08}\x{8F09}\x{8F0A}\x{8F0B}' . +'\x{8F0D}\x{8F0E}\x{8F10}\x{8F11}\x{8F12}\x{8F13}\x{8F14}\x{8F15}\x{8F16}' . +'\x{8F17}\x{8F18}\x{8F1A}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1E}\x{8F1F}\x{8F20}' . +'\x{8F21}\x{8F22}\x{8F23}\x{8F24}\x{8F25}\x{8F26}\x{8F27}\x{8F28}\x{8F29}' . +'\x{8F2A}\x{8F2B}\x{8F2C}\x{8F2E}\x{8F2F}\x{8F30}\x{8F31}\x{8F32}\x{8F33}' . +'\x{8F34}\x{8F35}\x{8F36}\x{8F37}\x{8F38}\x{8F39}\x{8F3B}\x{8F3C}\x{8F3D}' . +'\x{8F3E}\x{8F3F}\x{8F40}\x{8F42}\x{8F43}\x{8F44}\x{8F45}\x{8F46}\x{8F47}' . +'\x{8F48}\x{8F49}\x{8F4A}\x{8F4B}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F4F}\x{8F50}' . +'\x{8F51}\x{8F52}\x{8F53}\x{8F54}\x{8F55}\x{8F56}\x{8F57}\x{8F58}\x{8F59}' . +'\x{8F5A}\x{8F5B}\x{8F5D}\x{8F5E}\x{8F5F}\x{8F60}\x{8F61}\x{8F62}\x{8F63}' . +'\x{8F64}\x{8F65}\x{8F66}\x{8F67}\x{8F68}\x{8F69}\x{8F6A}\x{8F6B}\x{8F6C}' . +'\x{8F6D}\x{8F6E}\x{8F6F}\x{8F70}\x{8F71}\x{8F72}\x{8F73}\x{8F74}\x{8F75}' . +'\x{8F76}\x{8F77}\x{8F78}\x{8F79}\x{8F7A}\x{8F7B}\x{8F7C}\x{8F7D}\x{8F7E}' . +'\x{8F7F}\x{8F80}\x{8F81}\x{8F82}\x{8F83}\x{8F84}\x{8F85}\x{8F86}\x{8F87}' . +'\x{8F88}\x{8F89}\x{8F8A}\x{8F8B}\x{8F8C}\x{8F8D}\x{8F8E}\x{8F8F}\x{8F90}' . +'\x{8F91}\x{8F92}\x{8F93}\x{8F94}\x{8F95}\x{8F96}\x{8F97}\x{8F98}\x{8F99}' . +'\x{8F9A}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA0}\x{8FA1}\x{8FA2}\x{8FA3}' . +'\x{8FA5}\x{8FA6}\x{8FA7}\x{8FA8}\x{8FA9}\x{8FAA}\x{8FAB}\x{8FAC}\x{8FAD}' . +'\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB4}\x{8FB5}\x{8FB6}\x{8FB7}' . +'\x{8FB8}\x{8FB9}\x{8FBB}\x{8FBC}\x{8FBD}\x{8FBE}\x{8FBF}\x{8FC0}\x{8FC1}' . +'\x{8FC2}\x{8FC4}\x{8FC5}\x{8FC6}\x{8FC7}\x{8FC8}\x{8FC9}\x{8FCB}\x{8FCC}' . +'\x{8FCD}\x{8FCE}\x{8FCF}\x{8FD0}\x{8FD1}\x{8FD2}\x{8FD3}\x{8FD4}\x{8FD5}' . +'\x{8FD6}\x{8FD7}\x{8FD8}\x{8FD9}\x{8FDA}\x{8FDB}\x{8FDC}\x{8FDD}\x{8FDE}' . +'\x{8FDF}\x{8FE0}\x{8FE1}\x{8FE2}\x{8FE3}\x{8FE4}\x{8FE5}\x{8FE6}\x{8FE8}' . +'\x{8FE9}\x{8FEA}\x{8FEB}\x{8FEC}\x{8FED}\x{8FEE}\x{8FEF}\x{8FF0}\x{8FF1}' . +'\x{8FF2}\x{8FF3}\x{8FF4}\x{8FF5}\x{8FF6}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}' . +'\x{8FFB}\x{8FFC}\x{8FFD}\x{8FFE}\x{8FFF}\x{9000}\x{9001}\x{9002}\x{9003}' . +'\x{9004}\x{9005}\x{9006}\x{9007}\x{9008}\x{9009}\x{900A}\x{900B}\x{900C}' . +'\x{900D}\x{900F}\x{9010}\x{9011}\x{9012}\x{9013}\x{9014}\x{9015}\x{9016}' . +'\x{9017}\x{9018}\x{9019}\x{901A}\x{901B}\x{901C}\x{901D}\x{901E}\x{901F}' . +'\x{9020}\x{9021}\x{9022}\x{9023}\x{9024}\x{9025}\x{9026}\x{9027}\x{9028}' . +'\x{9029}\x{902B}\x{902D}\x{902E}\x{902F}\x{9030}\x{9031}\x{9032}\x{9033}' . +'\x{9034}\x{9035}\x{9036}\x{9038}\x{903A}\x{903B}\x{903C}\x{903D}\x{903E}' . +'\x{903F}\x{9041}\x{9042}\x{9043}\x{9044}\x{9045}\x{9047}\x{9048}\x{9049}' . +'\x{904A}\x{904B}\x{904C}\x{904D}\x{904E}\x{904F}\x{9050}\x{9051}\x{9052}' . +'\x{9053}\x{9054}\x{9055}\x{9056}\x{9057}\x{9058}\x{9059}\x{905A}\x{905B}' . +'\x{905C}\x{905D}\x{905E}\x{905F}\x{9060}\x{9061}\x{9062}\x{9063}\x{9064}' . +'\x{9065}\x{9066}\x{9067}\x{9068}\x{9069}\x{906A}\x{906B}\x{906C}\x{906D}' . +'\x{906E}\x{906F}\x{9070}\x{9071}\x{9072}\x{9073}\x{9074}\x{9075}\x{9076}' . +'\x{9077}\x{9078}\x{9079}\x{907A}\x{907B}\x{907C}\x{907D}\x{907E}\x{907F}' . +'\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9085}\x{9086}\x{9087}\x{9088}' . +'\x{9089}\x{908A}\x{908B}\x{908C}\x{908D}\x{908E}\x{908F}\x{9090}\x{9091}' . +'\x{9092}\x{9093}\x{9094}\x{9095}\x{9096}\x{9097}\x{9098}\x{9099}\x{909A}' . +'\x{909B}\x{909C}\x{909D}\x{909E}\x{909F}\x{90A0}\x{90A1}\x{90A2}\x{90A3}' . +'\x{90A4}\x{90A5}\x{90A6}\x{90A7}\x{90A8}\x{90A9}\x{90AA}\x{90AC}\x{90AD}' . +'\x{90AE}\x{90AF}\x{90B0}\x{90B1}\x{90B2}\x{90B3}\x{90B4}\x{90B5}\x{90B6}' . +'\x{90B7}\x{90B8}\x{90B9}\x{90BA}\x{90BB}\x{90BC}\x{90BD}\x{90BE}\x{90BF}' . +'\x{90C0}\x{90C1}\x{90C2}\x{90C3}\x{90C4}\x{90C5}\x{90C6}\x{90C7}\x{90C8}' . +'\x{90C9}\x{90CA}\x{90CB}\x{90CE}\x{90CF}\x{90D0}\x{90D1}\x{90D3}\x{90D4}' . +'\x{90D5}\x{90D6}\x{90D7}\x{90D8}\x{90D9}\x{90DA}\x{90DB}\x{90DC}\x{90DD}' . +'\x{90DE}\x{90DF}\x{90E0}\x{90E1}\x{90E2}\x{90E3}\x{90E4}\x{90E5}\x{90E6}' . +'\x{90E7}\x{90E8}\x{90E9}\x{90EA}\x{90EB}\x{90EC}\x{90ED}\x{90EE}\x{90EF}' . +'\x{90F0}\x{90F1}\x{90F2}\x{90F3}\x{90F4}\x{90F5}\x{90F7}\x{90F8}\x{90F9}' . +'\x{90FA}\x{90FB}\x{90FC}\x{90FD}\x{90FE}\x{90FF}\x{9100}\x{9101}\x{9102}' . +'\x{9103}\x{9104}\x{9105}\x{9106}\x{9107}\x{9108}\x{9109}\x{910B}\x{910C}' . +'\x{910D}\x{910E}\x{910F}\x{9110}\x{9111}\x{9112}\x{9113}\x{9114}\x{9115}' . +'\x{9116}\x{9117}\x{9118}\x{9119}\x{911A}\x{911B}\x{911C}\x{911D}\x{911E}' . +'\x{911F}\x{9120}\x{9121}\x{9122}\x{9123}\x{9124}\x{9125}\x{9126}\x{9127}' . +'\x{9128}\x{9129}\x{912A}\x{912B}\x{912C}\x{912D}\x{912E}\x{912F}\x{9130}' . +'\x{9131}\x{9132}\x{9133}\x{9134}\x{9135}\x{9136}\x{9137}\x{9138}\x{9139}' . +'\x{913A}\x{913B}\x{913E}\x{913F}\x{9140}\x{9141}\x{9142}\x{9143}\x{9144}' . +'\x{9145}\x{9146}\x{9147}\x{9148}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}' . +'\x{914E}\x{914F}\x{9150}\x{9151}\x{9152}\x{9153}\x{9154}\x{9155}\x{9156}' . +'\x{9157}\x{9158}\x{915A}\x{915B}\x{915C}\x{915D}\x{915E}\x{915F}\x{9160}' . +'\x{9161}\x{9162}\x{9163}\x{9164}\x{9165}\x{9166}\x{9167}\x{9168}\x{9169}' . +'\x{916A}\x{916B}\x{916C}\x{916D}\x{916E}\x{916F}\x{9170}\x{9171}\x{9172}' . +'\x{9173}\x{9174}\x{9175}\x{9176}\x{9177}\x{9178}\x{9179}\x{917A}\x{917C}' . +'\x{917D}\x{917E}\x{917F}\x{9180}\x{9181}\x{9182}\x{9183}\x{9184}\x{9185}' . +'\x{9186}\x{9187}\x{9188}\x{9189}\x{918A}\x{918B}\x{918C}\x{918D}\x{918E}' . +'\x{918F}\x{9190}\x{9191}\x{9192}\x{9193}\x{9194}\x{9196}\x{9199}\x{919A}' . +'\x{919B}\x{919C}\x{919D}\x{919E}\x{919F}\x{91A0}\x{91A1}\x{91A2}\x{91A3}' . +'\x{91A5}\x{91A6}\x{91A7}\x{91A8}\x{91AA}\x{91AB}\x{91AC}\x{91AD}\x{91AE}' . +'\x{91AF}\x{91B0}\x{91B1}\x{91B2}\x{91B3}\x{91B4}\x{91B5}\x{91B6}\x{91B7}' . +'\x{91B9}\x{91BA}\x{91BB}\x{91BC}\x{91BD}\x{91BE}\x{91C0}\x{91C1}\x{91C2}' . +'\x{91C3}\x{91C5}\x{91C6}\x{91C7}\x{91C9}\x{91CA}\x{91CB}\x{91CC}\x{91CD}' . +'\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D2}\x{91D3}\x{91D4}\x{91D5}\x{91D7}' . +'\x{91D8}\x{91D9}\x{91DA}\x{91DB}\x{91DC}\x{91DD}\x{91DE}\x{91DF}\x{91E2}' . +'\x{91E3}\x{91E4}\x{91E5}\x{91E6}\x{91E7}\x{91E8}\x{91E9}\x{91EA}\x{91EB}' . +'\x{91EC}\x{91ED}\x{91EE}\x{91F0}\x{91F1}\x{91F2}\x{91F3}\x{91F4}\x{91F5}' . +'\x{91F7}\x{91F8}\x{91F9}\x{91FA}\x{91FB}\x{91FD}\x{91FE}\x{91FF}\x{9200}' . +'\x{9201}\x{9202}\x{9203}\x{9204}\x{9205}\x{9206}\x{9207}\x{9208}\x{9209}' . +'\x{920A}\x{920B}\x{920C}\x{920D}\x{920E}\x{920F}\x{9210}\x{9211}\x{9212}' . +'\x{9214}\x{9215}\x{9216}\x{9217}\x{9218}\x{9219}\x{921A}\x{921B}\x{921C}' . +'\x{921D}\x{921E}\x{9220}\x{9221}\x{9223}\x{9224}\x{9225}\x{9226}\x{9227}' . +'\x{9228}\x{9229}\x{922A}\x{922B}\x{922D}\x{922E}\x{922F}\x{9230}\x{9231}' . +'\x{9232}\x{9233}\x{9234}\x{9235}\x{9236}\x{9237}\x{9238}\x{9239}\x{923A}' . +'\x{923B}\x{923C}\x{923D}\x{923E}\x{923F}\x{9240}\x{9241}\x{9242}\x{9245}' . +'\x{9246}\x{9247}\x{9248}\x{9249}\x{924A}\x{924B}\x{924C}\x{924D}\x{924E}' . +'\x{924F}\x{9250}\x{9251}\x{9252}\x{9253}\x{9254}\x{9255}\x{9256}\x{9257}' . +'\x{9258}\x{9259}\x{925A}\x{925B}\x{925C}\x{925D}\x{925E}\x{925F}\x{9260}' . +'\x{9261}\x{9262}\x{9263}\x{9264}\x{9265}\x{9266}\x{9267}\x{9268}\x{926B}' . +'\x{926C}\x{926D}\x{926E}\x{926F}\x{9270}\x{9272}\x{9273}\x{9274}\x{9275}' . +'\x{9276}\x{9277}\x{9278}\x{9279}\x{927A}\x{927B}\x{927C}\x{927D}\x{927E}' . +'\x{927F}\x{9280}\x{9282}\x{9283}\x{9285}\x{9286}\x{9287}\x{9288}\x{9289}' . +'\x{928A}\x{928B}\x{928C}\x{928D}\x{928E}\x{928F}\x{9290}\x{9291}\x{9292}' . +'\x{9293}\x{9294}\x{9295}\x{9296}\x{9297}\x{9298}\x{9299}\x{929A}\x{929B}' . +'\x{929C}\x{929D}\x{929F}\x{92A0}\x{92A1}\x{92A2}\x{92A3}\x{92A4}\x{92A5}' . +'\x{92A6}\x{92A7}\x{92A8}\x{92A9}\x{92AA}\x{92AB}\x{92AC}\x{92AD}\x{92AE}' . +'\x{92AF}\x{92B0}\x{92B1}\x{92B2}\x{92B3}\x{92B4}\x{92B5}\x{92B6}\x{92B7}' . +'\x{92B8}\x{92B9}\x{92BA}\x{92BB}\x{92BC}\x{92BE}\x{92BF}\x{92C0}\x{92C1}' . +'\x{92C2}\x{92C3}\x{92C4}\x{92C5}\x{92C6}\x{92C7}\x{92C8}\x{92C9}\x{92CA}' . +'\x{92CB}\x{92CC}\x{92CD}\x{92CE}\x{92CF}\x{92D0}\x{92D1}\x{92D2}\x{92D3}' . +'\x{92D5}\x{92D6}\x{92D7}\x{92D8}\x{92D9}\x{92DA}\x{92DC}\x{92DD}\x{92DE}' . +'\x{92DF}\x{92E0}\x{92E1}\x{92E3}\x{92E4}\x{92E5}\x{92E6}\x{92E7}\x{92E8}' . +'\x{92E9}\x{92EA}\x{92EB}\x{92EC}\x{92ED}\x{92EE}\x{92EF}\x{92F0}\x{92F1}' . +'\x{92F2}\x{92F3}\x{92F4}\x{92F5}\x{92F6}\x{92F7}\x{92F8}\x{92F9}\x{92FA}' . +'\x{92FB}\x{92FC}\x{92FD}\x{92FE}\x{92FF}\x{9300}\x{9301}\x{9302}\x{9303}' . +'\x{9304}\x{9305}\x{9306}\x{9307}\x{9308}\x{9309}\x{930A}\x{930B}\x{930C}' . +'\x{930D}\x{930E}\x{930F}\x{9310}\x{9311}\x{9312}\x{9313}\x{9314}\x{9315}' . +'\x{9316}\x{9317}\x{9318}\x{9319}\x{931A}\x{931B}\x{931D}\x{931E}\x{931F}' . +'\x{9320}\x{9321}\x{9322}\x{9323}\x{9324}\x{9325}\x{9326}\x{9327}\x{9328}' . +'\x{9329}\x{932A}\x{932B}\x{932D}\x{932E}\x{932F}\x{9332}\x{9333}\x{9334}' . +'\x{9335}\x{9336}\x{9337}\x{9338}\x{9339}\x{933A}\x{933B}\x{933C}\x{933D}' . +'\x{933E}\x{933F}\x{9340}\x{9341}\x{9342}\x{9343}\x{9344}\x{9345}\x{9346}' . +'\x{9347}\x{9348}\x{9349}\x{934A}\x{934B}\x{934C}\x{934D}\x{934E}\x{934F}' . +'\x{9350}\x{9351}\x{9352}\x{9353}\x{9354}\x{9355}\x{9356}\x{9357}\x{9358}' . +'\x{9359}\x{935A}\x{935B}\x{935C}\x{935D}\x{935E}\x{935F}\x{9360}\x{9361}' . +'\x{9363}\x{9364}\x{9365}\x{9366}\x{9367}\x{9369}\x{936A}\x{936C}\x{936D}' . +'\x{936E}\x{9370}\x{9371}\x{9372}\x{9374}\x{9375}\x{9376}\x{9377}\x{9379}' . +'\x{937A}\x{937B}\x{937C}\x{937D}\x{937E}\x{9380}\x{9382}\x{9383}\x{9384}' . +'\x{9385}\x{9386}\x{9387}\x{9388}\x{9389}\x{938A}\x{938C}\x{938D}\x{938E}' . +'\x{938F}\x{9390}\x{9391}\x{9392}\x{9393}\x{9394}\x{9395}\x{9396}\x{9397}' . +'\x{9398}\x{9399}\x{939A}\x{939B}\x{939D}\x{939E}\x{939F}\x{93A1}\x{93A2}' . +'\x{93A3}\x{93A4}\x{93A5}\x{93A6}\x{93A7}\x{93A8}\x{93A9}\x{93AA}\x{93AC}' . +'\x{93AD}\x{93AE}\x{93AF}\x{93B0}\x{93B1}\x{93B2}\x{93B3}\x{93B4}\x{93B5}' . +'\x{93B6}\x{93B7}\x{93B8}\x{93B9}\x{93BA}\x{93BC}\x{93BD}\x{93BE}\x{93BF}' . +'\x{93C0}\x{93C1}\x{93C2}\x{93C3}\x{93C4}\x{93C5}\x{93C6}\x{93C7}\x{93C8}' . +'\x{93C9}\x{93CA}\x{93CB}\x{93CC}\x{93CD}\x{93CE}\x{93CF}\x{93D0}\x{93D1}' . +'\x{93D2}\x{93D3}\x{93D4}\x{93D5}\x{93D6}\x{93D7}\x{93D8}\x{93D9}\x{93DA}' . +'\x{93DB}\x{93DC}\x{93DD}\x{93DE}\x{93DF}\x{93E1}\x{93E2}\x{93E3}\x{93E4}' . +'\x{93E6}\x{93E7}\x{93E8}\x{93E9}\x{93EA}\x{93EB}\x{93EC}\x{93ED}\x{93EE}' . +'\x{93EF}\x{93F0}\x{93F1}\x{93F2}\x{93F4}\x{93F5}\x{93F6}\x{93F7}\x{93F8}' . +'\x{93F9}\x{93FA}\x{93FB}\x{93FC}\x{93FD}\x{93FE}\x{93FF}\x{9400}\x{9401}' . +'\x{9403}\x{9404}\x{9405}\x{9406}\x{9407}\x{9408}\x{9409}\x{940A}\x{940B}' . +'\x{940C}\x{940D}\x{940E}\x{940F}\x{9410}\x{9411}\x{9412}\x{9413}\x{9414}' . +'\x{9415}\x{9416}\x{9418}\x{9419}\x{941B}\x{941D}\x{9420}\x{9422}\x{9423}' . +'\x{9425}\x{9426}\x{9427}\x{9428}\x{9429}\x{942A}\x{942B}\x{942C}\x{942D}' . +'\x{942E}\x{942F}\x{9430}\x{9431}\x{9432}\x{9433}\x{9434}\x{9435}\x{9436}' . +'\x{9437}\x{9438}\x{9439}\x{943A}\x{943B}\x{943C}\x{943D}\x{943E}\x{943F}' . +'\x{9440}\x{9441}\x{9442}\x{9444}\x{9445}\x{9446}\x{9447}\x{9448}\x{9449}' . +'\x{944A}\x{944B}\x{944C}\x{944D}\x{944F}\x{9450}\x{9451}\x{9452}\x{9453}' . +'\x{9454}\x{9455}\x{9456}\x{9457}\x{9458}\x{9459}\x{945B}\x{945C}\x{945D}' . +'\x{945E}\x{945F}\x{9460}\x{9461}\x{9462}\x{9463}\x{9464}\x{9465}\x{9466}' . +'\x{9467}\x{9468}\x{9469}\x{946A}\x{946B}\x{946D}\x{946E}\x{946F}\x{9470}' . +'\x{9471}\x{9472}\x{9473}\x{9474}\x{9475}\x{9476}\x{9477}\x{9478}\x{9479}' . +'\x{947A}\x{947C}\x{947D}\x{947E}\x{947F}\x{9480}\x{9481}\x{9482}\x{9483}' . +'\x{9484}\x{9485}\x{9486}\x{9487}\x{9488}\x{9489}\x{948A}\x{948B}\x{948C}' . +'\x{948D}\x{948E}\x{948F}\x{9490}\x{9491}\x{9492}\x{9493}\x{9494}\x{9495}' . +'\x{9496}\x{9497}\x{9498}\x{9499}\x{949A}\x{949B}\x{949C}\x{949D}\x{949E}' . +'\x{949F}\x{94A0}\x{94A1}\x{94A2}\x{94A3}\x{94A4}\x{94A5}\x{94A6}\x{94A7}' . +'\x{94A8}\x{94A9}\x{94AA}\x{94AB}\x{94AC}\x{94AD}\x{94AE}\x{94AF}\x{94B0}' . +'\x{94B1}\x{94B2}\x{94B3}\x{94B4}\x{94B5}\x{94B6}\x{94B7}\x{94B8}\x{94B9}' . +'\x{94BA}\x{94BB}\x{94BC}\x{94BD}\x{94BE}\x{94BF}\x{94C0}\x{94C1}\x{94C2}' . +'\x{94C3}\x{94C4}\x{94C5}\x{94C6}\x{94C7}\x{94C8}\x{94C9}\x{94CA}\x{94CB}' . +'\x{94CC}\x{94CD}\x{94CE}\x{94CF}\x{94D0}\x{94D1}\x{94D2}\x{94D3}\x{94D4}' . +'\x{94D5}\x{94D6}\x{94D7}\x{94D8}\x{94D9}\x{94DA}\x{94DB}\x{94DC}\x{94DD}' . +'\x{94DE}\x{94DF}\x{94E0}\x{94E1}\x{94E2}\x{94E3}\x{94E4}\x{94E5}\x{94E6}' . +'\x{94E7}\x{94E8}\x{94E9}\x{94EA}\x{94EB}\x{94EC}\x{94ED}\x{94EE}\x{94EF}' . +'\x{94F0}\x{94F1}\x{94F2}\x{94F3}\x{94F4}\x{94F5}\x{94F6}\x{94F7}\x{94F8}' . +'\x{94F9}\x{94FA}\x{94FB}\x{94FC}\x{94FD}\x{94FE}\x{94FF}\x{9500}\x{9501}' . +'\x{9502}\x{9503}\x{9504}\x{9505}\x{9506}\x{9507}\x{9508}\x{9509}\x{950A}' . +'\x{950B}\x{950C}\x{950D}\x{950E}\x{950F}\x{9510}\x{9511}\x{9512}\x{9513}' . +'\x{9514}\x{9515}\x{9516}\x{9517}\x{9518}\x{9519}\x{951A}\x{951B}\x{951C}' . +'\x{951D}\x{951E}\x{951F}\x{9520}\x{9521}\x{9522}\x{9523}\x{9524}\x{9525}' . +'\x{9526}\x{9527}\x{9528}\x{9529}\x{952A}\x{952B}\x{952C}\x{952D}\x{952E}' . +'\x{952F}\x{9530}\x{9531}\x{9532}\x{9533}\x{9534}\x{9535}\x{9536}\x{9537}' . +'\x{9538}\x{9539}\x{953A}\x{953B}\x{953C}\x{953D}\x{953E}\x{953F}\x{9540}' . +'\x{9541}\x{9542}\x{9543}\x{9544}\x{9545}\x{9546}\x{9547}\x{9548}\x{9549}' . +'\x{954A}\x{954B}\x{954C}\x{954D}\x{954E}\x{954F}\x{9550}\x{9551}\x{9552}' . +'\x{9553}\x{9554}\x{9555}\x{9556}\x{9557}\x{9558}\x{9559}\x{955A}\x{955B}' . +'\x{955C}\x{955D}\x{955E}\x{955F}\x{9560}\x{9561}\x{9562}\x{9563}\x{9564}' . +'\x{9565}\x{9566}\x{9567}\x{9568}\x{9569}\x{956A}\x{956B}\x{956C}\x{956D}' . +'\x{956E}\x{956F}\x{9570}\x{9571}\x{9572}\x{9573}\x{9574}\x{9575}\x{9576}' . +'\x{9577}\x{957A}\x{957B}\x{957C}\x{957D}\x{957F}\x{9580}\x{9581}\x{9582}' . +'\x{9583}\x{9584}\x{9586}\x{9587}\x{9588}\x{9589}\x{958A}\x{958B}\x{958C}' . +'\x{958D}\x{958E}\x{958F}\x{9590}\x{9591}\x{9592}\x{9593}\x{9594}\x{9595}' . +'\x{9596}\x{9598}\x{9599}\x{959A}\x{959B}\x{959C}\x{959D}\x{959E}\x{959F}' . +'\x{95A1}\x{95A2}\x{95A3}\x{95A4}\x{95A5}\x{95A6}\x{95A7}\x{95A8}\x{95A9}' . +'\x{95AA}\x{95AB}\x{95AC}\x{95AD}\x{95AE}\x{95AF}\x{95B0}\x{95B1}\x{95B2}' . +'\x{95B5}\x{95B6}\x{95B7}\x{95B9}\x{95BA}\x{95BB}\x{95BC}\x{95BD}\x{95BE}' . +'\x{95BF}\x{95C0}\x{95C2}\x{95C3}\x{95C4}\x{95C5}\x{95C6}\x{95C7}\x{95C8}' . +'\x{95C9}\x{95CA}\x{95CB}\x{95CC}\x{95CD}\x{95CE}\x{95CF}\x{95D0}\x{95D1}' . +'\x{95D2}\x{95D3}\x{95D4}\x{95D5}\x{95D6}\x{95D7}\x{95D8}\x{95DA}\x{95DB}' . +'\x{95DC}\x{95DE}\x{95DF}\x{95E0}\x{95E1}\x{95E2}\x{95E3}\x{95E4}\x{95E5}' . +'\x{95E6}\x{95E7}\x{95E8}\x{95E9}\x{95EA}\x{95EB}\x{95EC}\x{95ED}\x{95EE}' . +'\x{95EF}\x{95F0}\x{95F1}\x{95F2}\x{95F3}\x{95F4}\x{95F5}\x{95F6}\x{95F7}' . +'\x{95F8}\x{95F9}\x{95FA}\x{95FB}\x{95FC}\x{95FD}\x{95FE}\x{95FF}\x{9600}' . +'\x{9601}\x{9602}\x{9603}\x{9604}\x{9605}\x{9606}\x{9607}\x{9608}\x{9609}' . +'\x{960A}\x{960B}\x{960C}\x{960D}\x{960E}\x{960F}\x{9610}\x{9611}\x{9612}' . +'\x{9613}\x{9614}\x{9615}\x{9616}\x{9617}\x{9618}\x{9619}\x{961A}\x{961B}' . +'\x{961C}\x{961D}\x{961E}\x{961F}\x{9620}\x{9621}\x{9622}\x{9623}\x{9624}' . +'\x{9627}\x{9628}\x{962A}\x{962B}\x{962C}\x{962D}\x{962E}\x{962F}\x{9630}' . +'\x{9631}\x{9632}\x{9633}\x{9634}\x{9635}\x{9636}\x{9637}\x{9638}\x{9639}' . +'\x{963A}\x{963B}\x{963C}\x{963D}\x{963F}\x{9640}\x{9641}\x{9642}\x{9643}' . +'\x{9644}\x{9645}\x{9646}\x{9647}\x{9648}\x{9649}\x{964A}\x{964B}\x{964C}' . +'\x{964D}\x{964E}\x{964F}\x{9650}\x{9651}\x{9652}\x{9653}\x{9654}\x{9655}' . +'\x{9658}\x{9659}\x{965A}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9660}' . +'\x{9661}\x{9662}\x{9663}\x{9664}\x{9666}\x{9667}\x{9668}\x{9669}\x{966A}' . +'\x{966B}\x{966C}\x{966D}\x{966E}\x{966F}\x{9670}\x{9671}\x{9672}\x{9673}' . +'\x{9674}\x{9675}\x{9676}\x{9677}\x{9678}\x{967C}\x{967D}\x{967E}\x{9680}' . +'\x{9683}\x{9684}\x{9685}\x{9686}\x{9687}\x{9688}\x{9689}\x{968A}\x{968B}' . +'\x{968D}\x{968E}\x{968F}\x{9690}\x{9691}\x{9692}\x{9693}\x{9694}\x{9695}' . +'\x{9697}\x{9698}\x{9699}\x{969B}\x{969C}\x{969E}\x{96A0}\x{96A1}\x{96A2}' . +'\x{96A3}\x{96A4}\x{96A5}\x{96A6}\x{96A7}\x{96A8}\x{96A9}\x{96AA}\x{96AC}' . +'\x{96AD}\x{96AE}\x{96B0}\x{96B1}\x{96B3}\x{96B4}\x{96B6}\x{96B7}\x{96B8}' . +'\x{96B9}\x{96BA}\x{96BB}\x{96BC}\x{96BD}\x{96BE}\x{96BF}\x{96C0}\x{96C1}' . +'\x{96C2}\x{96C3}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C8}\x{96C9}\x{96CA}' . +'\x{96CB}\x{96CC}\x{96CD}\x{96CE}\x{96CF}\x{96D0}\x{96D1}\x{96D2}\x{96D3}' . +'\x{96D4}\x{96D5}\x{96D6}\x{96D7}\x{96D8}\x{96D9}\x{96DA}\x{96DB}\x{96DC}' . +'\x{96DD}\x{96DE}\x{96DF}\x{96E0}\x{96E1}\x{96E2}\x{96E3}\x{96E5}\x{96E8}' . +'\x{96E9}\x{96EA}\x{96EB}\x{96EC}\x{96ED}\x{96EE}\x{96EF}\x{96F0}\x{96F1}' . +'\x{96F2}\x{96F3}\x{96F4}\x{96F5}\x{96F6}\x{96F7}\x{96F8}\x{96F9}\x{96FA}' . +'\x{96FB}\x{96FD}\x{96FE}\x{96FF}\x{9700}\x{9701}\x{9702}\x{9703}\x{9704}' . +'\x{9705}\x{9706}\x{9707}\x{9708}\x{9709}\x{970A}\x{970B}\x{970C}\x{970D}' . +'\x{970E}\x{970F}\x{9710}\x{9711}\x{9712}\x{9713}\x{9715}\x{9716}\x{9718}' . +'\x{9719}\x{971C}\x{971D}\x{971E}\x{971F}\x{9720}\x{9721}\x{9722}\x{9723}' . +'\x{9724}\x{9725}\x{9726}\x{9727}\x{9728}\x{9729}\x{972A}\x{972B}\x{972C}' . +'\x{972D}\x{972E}\x{972F}\x{9730}\x{9731}\x{9732}\x{9735}\x{9736}\x{9738}' . +'\x{9739}\x{973A}\x{973B}\x{973C}\x{973D}\x{973E}\x{973F}\x{9742}\x{9743}' . +'\x{9744}\x{9745}\x{9746}\x{9747}\x{9748}\x{9749}\x{974A}\x{974B}\x{974C}' . +'\x{974E}\x{974F}\x{9750}\x{9751}\x{9752}\x{9753}\x{9754}\x{9755}\x{9756}' . +'\x{9758}\x{9759}\x{975A}\x{975B}\x{975C}\x{975D}\x{975E}\x{975F}\x{9760}' . +'\x{9761}\x{9762}\x{9765}\x{9766}\x{9767}\x{9768}\x{9769}\x{976A}\x{976B}' . +'\x{976C}\x{976D}\x{976E}\x{976F}\x{9770}\x{9772}\x{9773}\x{9774}\x{9776}' . +'\x{9777}\x{9778}\x{9779}\x{977A}\x{977B}\x{977C}\x{977D}\x{977E}\x{977F}' . +'\x{9780}\x{9781}\x{9782}\x{9783}\x{9784}\x{9785}\x{9786}\x{9788}\x{978A}' . +'\x{978B}\x{978C}\x{978D}\x{978E}\x{978F}\x{9790}\x{9791}\x{9792}\x{9793}' . +'\x{9794}\x{9795}\x{9796}\x{9797}\x{9798}\x{9799}\x{979A}\x{979C}\x{979D}' . +'\x{979E}\x{979F}\x{97A0}\x{97A1}\x{97A2}\x{97A3}\x{97A4}\x{97A5}\x{97A6}' . +'\x{97A7}\x{97A8}\x{97AA}\x{97AB}\x{97AC}\x{97AD}\x{97AE}\x{97AF}\x{97B2}' . +'\x{97B3}\x{97B4}\x{97B6}\x{97B7}\x{97B8}\x{97B9}\x{97BA}\x{97BB}\x{97BC}' . +'\x{97BD}\x{97BF}\x{97C1}\x{97C2}\x{97C3}\x{97C4}\x{97C5}\x{97C6}\x{97C7}' . +'\x{97C8}\x{97C9}\x{97CA}\x{97CB}\x{97CC}\x{97CD}\x{97CE}\x{97CF}\x{97D0}' . +'\x{97D1}\x{97D3}\x{97D4}\x{97D5}\x{97D6}\x{97D7}\x{97D8}\x{97D9}\x{97DA}' . +'\x{97DB}\x{97DC}\x{97DD}\x{97DE}\x{97DF}\x{97E0}\x{97E1}\x{97E2}\x{97E3}' . +'\x{97E4}\x{97E5}\x{97E6}\x{97E7}\x{97E8}\x{97E9}\x{97EA}\x{97EB}\x{97EC}' . +'\x{97ED}\x{97EE}\x{97EF}\x{97F0}\x{97F1}\x{97F2}\x{97F3}\x{97F4}\x{97F5}' . +'\x{97F6}\x{97F7}\x{97F8}\x{97F9}\x{97FA}\x{97FB}\x{97FD}\x{97FE}\x{97FF}' . +'\x{9800}\x{9801}\x{9802}\x{9803}\x{9804}\x{9805}\x{9806}\x{9807}\x{9808}' . +'\x{9809}\x{980A}\x{980B}\x{980C}\x{980D}\x{980E}\x{980F}\x{9810}\x{9811}' . +'\x{9812}\x{9813}\x{9814}\x{9815}\x{9816}\x{9817}\x{9818}\x{9819}\x{981A}' . +'\x{981B}\x{981C}\x{981D}\x{981E}\x{9820}\x{9821}\x{9822}\x{9823}\x{9824}' . +'\x{9826}\x{9827}\x{9828}\x{9829}\x{982B}\x{982D}\x{982E}\x{982F}\x{9830}' . +'\x{9831}\x{9832}\x{9834}\x{9835}\x{9836}\x{9837}\x{9838}\x{9839}\x{983B}' . +'\x{983C}\x{983D}\x{983F}\x{9840}\x{9841}\x{9843}\x{9844}\x{9845}\x{9846}' . +'\x{9848}\x{9849}\x{984A}\x{984C}\x{984D}\x{984E}\x{984F}\x{9850}\x{9851}' . +'\x{9852}\x{9853}\x{9854}\x{9855}\x{9857}\x{9858}\x{9859}\x{985A}\x{985B}' . +'\x{985C}\x{985D}\x{985E}\x{985F}\x{9860}\x{9861}\x{9862}\x{9863}\x{9864}' . +'\x{9865}\x{9867}\x{9869}\x{986A}\x{986B}\x{986C}\x{986D}\x{986E}\x{986F}' . +'\x{9870}\x{9871}\x{9872}\x{9873}\x{9874}\x{9875}\x{9876}\x{9877}\x{9878}' . +'\x{9879}\x{987A}\x{987B}\x{987C}\x{987D}\x{987E}\x{987F}\x{9880}\x{9881}' . +'\x{9882}\x{9883}\x{9884}\x{9885}\x{9886}\x{9887}\x{9888}\x{9889}\x{988A}' . +'\x{988B}\x{988C}\x{988D}\x{988E}\x{988F}\x{9890}\x{9891}\x{9892}\x{9893}' . +'\x{9894}\x{9895}\x{9896}\x{9897}\x{9898}\x{9899}\x{989A}\x{989B}\x{989C}' . +'\x{989D}\x{989E}\x{989F}\x{98A0}\x{98A1}\x{98A2}\x{98A3}\x{98A4}\x{98A5}' . +'\x{98A6}\x{98A7}\x{98A8}\x{98A9}\x{98AA}\x{98AB}\x{98AC}\x{98AD}\x{98AE}' . +'\x{98AF}\x{98B0}\x{98B1}\x{98B2}\x{98B3}\x{98B4}\x{98B5}\x{98B6}\x{98B8}' . +'\x{98B9}\x{98BA}\x{98BB}\x{98BC}\x{98BD}\x{98BE}\x{98BF}\x{98C0}\x{98C1}' . +'\x{98C2}\x{98C3}\x{98C4}\x{98C5}\x{98C6}\x{98C8}\x{98C9}\x{98CB}\x{98CC}' . +'\x{98CD}\x{98CE}\x{98CF}\x{98D0}\x{98D1}\x{98D2}\x{98D3}\x{98D4}\x{98D5}' . +'\x{98D6}\x{98D7}\x{98D8}\x{98D9}\x{98DA}\x{98DB}\x{98DC}\x{98DD}\x{98DE}' . +'\x{98DF}\x{98E0}\x{98E2}\x{98E3}\x{98E5}\x{98E6}\x{98E7}\x{98E8}\x{98E9}' . +'\x{98EA}\x{98EB}\x{98ED}\x{98EF}\x{98F0}\x{98F2}\x{98F3}\x{98F4}\x{98F5}' . +'\x{98F6}\x{98F7}\x{98F9}\x{98FA}\x{98FC}\x{98FD}\x{98FE}\x{98FF}\x{9900}' . +'\x{9901}\x{9902}\x{9903}\x{9904}\x{9905}\x{9906}\x{9907}\x{9908}\x{9909}' . +'\x{990A}\x{990B}\x{990C}\x{990D}\x{990E}\x{990F}\x{9910}\x{9911}\x{9912}' . +'\x{9913}\x{9914}\x{9915}\x{9916}\x{9917}\x{9918}\x{991A}\x{991B}\x{991C}' . +'\x{991D}\x{991E}\x{991F}\x{9920}\x{9921}\x{9922}\x{9923}\x{9924}\x{9925}' . +'\x{9926}\x{9927}\x{9928}\x{9929}\x{992A}\x{992B}\x{992C}\x{992D}\x{992E}' . +'\x{992F}\x{9930}\x{9931}\x{9932}\x{9933}\x{9934}\x{9935}\x{9936}\x{9937}' . +'\x{9938}\x{9939}\x{993A}\x{993C}\x{993D}\x{993E}\x{993F}\x{9940}\x{9941}' . +'\x{9942}\x{9943}\x{9945}\x{9946}\x{9947}\x{9948}\x{9949}\x{994A}\x{994B}' . +'\x{994C}\x{994E}\x{994F}\x{9950}\x{9951}\x{9952}\x{9953}\x{9954}\x{9955}' . +'\x{9956}\x{9957}\x{9958}\x{9959}\x{995B}\x{995C}\x{995E}\x{995F}\x{9960}' . +'\x{9961}\x{9962}\x{9963}\x{9964}\x{9965}\x{9966}\x{9967}\x{9968}\x{9969}' . +'\x{996A}\x{996B}\x{996C}\x{996D}\x{996E}\x{996F}\x{9970}\x{9971}\x{9972}' . +'\x{9973}\x{9974}\x{9975}\x{9976}\x{9977}\x{9978}\x{9979}\x{997A}\x{997B}' . +'\x{997C}\x{997D}\x{997E}\x{997F}\x{9980}\x{9981}\x{9982}\x{9983}\x{9984}' . +'\x{9985}\x{9986}\x{9987}\x{9988}\x{9989}\x{998A}\x{998B}\x{998C}\x{998D}' . +'\x{998E}\x{998F}\x{9990}\x{9991}\x{9992}\x{9993}\x{9994}\x{9995}\x{9996}' . +'\x{9997}\x{9998}\x{9999}\x{999A}\x{999B}\x{999C}\x{999D}\x{999E}\x{999F}' . +'\x{99A0}\x{99A1}\x{99A2}\x{99A3}\x{99A4}\x{99A5}\x{99A6}\x{99A7}\x{99A8}' . +'\x{99A9}\x{99AA}\x{99AB}\x{99AC}\x{99AD}\x{99AE}\x{99AF}\x{99B0}\x{99B1}' . +'\x{99B2}\x{99B3}\x{99B4}\x{99B5}\x{99B6}\x{99B7}\x{99B8}\x{99B9}\x{99BA}' . +'\x{99BB}\x{99BC}\x{99BD}\x{99BE}\x{99C0}\x{99C1}\x{99C2}\x{99C3}\x{99C4}' . +'\x{99C6}\x{99C7}\x{99C8}\x{99C9}\x{99CA}\x{99CB}\x{99CC}\x{99CD}\x{99CE}' . +'\x{99CF}\x{99D0}\x{99D1}\x{99D2}\x{99D3}\x{99D4}\x{99D5}\x{99D6}\x{99D7}' . +'\x{99D8}\x{99D9}\x{99DA}\x{99DB}\x{99DC}\x{99DD}\x{99DE}\x{99DF}\x{99E1}' . +'\x{99E2}\x{99E3}\x{99E4}\x{99E5}\x{99E7}\x{99E8}\x{99E9}\x{99EA}\x{99EC}' . +'\x{99ED}\x{99EE}\x{99EF}\x{99F0}\x{99F1}\x{99F2}\x{99F3}\x{99F4}\x{99F6}' . +'\x{99F7}\x{99F8}\x{99F9}\x{99FA}\x{99FB}\x{99FC}\x{99FD}\x{99FE}\x{99FF}' . +'\x{9A00}\x{9A01}\x{9A02}\x{9A03}\x{9A04}\x{9A05}\x{9A06}\x{9A07}\x{9A08}' . +'\x{9A09}\x{9A0A}\x{9A0B}\x{9A0C}\x{9A0D}\x{9A0E}\x{9A0F}\x{9A11}\x{9A14}' . +'\x{9A15}\x{9A16}\x{9A19}\x{9A1A}\x{9A1B}\x{9A1C}\x{9A1D}\x{9A1E}\x{9A1F}' . +'\x{9A20}\x{9A21}\x{9A22}\x{9A23}\x{9A24}\x{9A25}\x{9A26}\x{9A27}\x{9A29}' . +'\x{9A2A}\x{9A2B}\x{9A2C}\x{9A2D}\x{9A2E}\x{9A2F}\x{9A30}\x{9A31}\x{9A32}' . +'\x{9A33}\x{9A34}\x{9A35}\x{9A36}\x{9A37}\x{9A38}\x{9A39}\x{9A3A}\x{9A3C}' . +'\x{9A3D}\x{9A3E}\x{9A3F}\x{9A40}\x{9A41}\x{9A42}\x{9A43}\x{9A44}\x{9A45}' . +'\x{9A46}\x{9A47}\x{9A48}\x{9A49}\x{9A4A}\x{9A4B}\x{9A4C}\x{9A4D}\x{9A4E}' . +'\x{9A4F}\x{9A50}\x{9A52}\x{9A53}\x{9A54}\x{9A55}\x{9A56}\x{9A57}\x{9A59}' . +'\x{9A5A}\x{9A5B}\x{9A5C}\x{9A5E}\x{9A5F}\x{9A60}\x{9A61}\x{9A62}\x{9A64}' . +'\x{9A65}\x{9A66}\x{9A67}\x{9A68}\x{9A69}\x{9A6A}\x{9A6B}\x{9A6C}\x{9A6D}' . +'\x{9A6E}\x{9A6F}\x{9A70}\x{9A71}\x{9A72}\x{9A73}\x{9A74}\x{9A75}\x{9A76}' . +'\x{9A77}\x{9A78}\x{9A79}\x{9A7A}\x{9A7B}\x{9A7C}\x{9A7D}\x{9A7E}\x{9A7F}' . +'\x{9A80}\x{9A81}\x{9A82}\x{9A83}\x{9A84}\x{9A85}\x{9A86}\x{9A87}\x{9A88}' . +'\x{9A89}\x{9A8A}\x{9A8B}\x{9A8C}\x{9A8D}\x{9A8E}\x{9A8F}\x{9A90}\x{9A91}' . +'\x{9A92}\x{9A93}\x{9A94}\x{9A95}\x{9A96}\x{9A97}\x{9A98}\x{9A99}\x{9A9A}' . +'\x{9A9B}\x{9A9C}\x{9A9D}\x{9A9E}\x{9A9F}\x{9AA0}\x{9AA1}\x{9AA2}\x{9AA3}' . +'\x{9AA4}\x{9AA5}\x{9AA6}\x{9AA7}\x{9AA8}\x{9AAA}\x{9AAB}\x{9AAC}\x{9AAD}' . +'\x{9AAE}\x{9AAF}\x{9AB0}\x{9AB1}\x{9AB2}\x{9AB3}\x{9AB4}\x{9AB5}\x{9AB6}' . +'\x{9AB7}\x{9AB8}\x{9AB9}\x{9ABA}\x{9ABB}\x{9ABC}\x{9ABE}\x{9ABF}\x{9AC0}' . +'\x{9AC1}\x{9AC2}\x{9AC3}\x{9AC4}\x{9AC5}\x{9AC6}\x{9AC7}\x{9AC9}\x{9ACA}' . +'\x{9ACB}\x{9ACC}\x{9ACD}\x{9ACE}\x{9ACF}\x{9AD0}\x{9AD1}\x{9AD2}\x{9AD3}' . +'\x{9AD4}\x{9AD5}\x{9AD6}\x{9AD8}\x{9AD9}\x{9ADA}\x{9ADB}\x{9ADC}\x{9ADD}' . +'\x{9ADE}\x{9ADF}\x{9AE1}\x{9AE2}\x{9AE3}\x{9AE5}\x{9AE6}\x{9AE7}\x{9AEA}' . +'\x{9AEB}\x{9AEC}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF2}\x{9AF3}\x{9AF4}' . +'\x{9AF5}\x{9AF6}\x{9AF7}\x{9AF8}\x{9AF9}\x{9AFA}\x{9AFB}\x{9AFC}\x{9AFD}' . +'\x{9AFE}\x{9AFF}\x{9B01}\x{9B03}\x{9B04}\x{9B05}\x{9B06}\x{9B07}\x{9B08}' . +'\x{9B0A}\x{9B0B}\x{9B0C}\x{9B0D}\x{9B0E}\x{9B0F}\x{9B10}\x{9B11}\x{9B12}' . +'\x{9B13}\x{9B15}\x{9B16}\x{9B17}\x{9B18}\x{9B19}\x{9B1A}\x{9B1C}\x{9B1D}' . +'\x{9B1E}\x{9B1F}\x{9B20}\x{9B21}\x{9B22}\x{9B23}\x{9B24}\x{9B25}\x{9B26}' . +'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2B}\x{9B2C}\x{9B2D}\x{9B2E}\x{9B2F}' . +'\x{9B30}\x{9B31}\x{9B32}\x{9B33}\x{9B35}\x{9B36}\x{9B37}\x{9B38}\x{9B39}' . +'\x{9B3A}\x{9B3B}\x{9B3C}\x{9B3E}\x{9B3F}\x{9B41}\x{9B42}\x{9B43}\x{9B44}' . +'\x{9B45}\x{9B46}\x{9B47}\x{9B48}\x{9B49}\x{9B4A}\x{9B4B}\x{9B4C}\x{9B4D}' . +'\x{9B4E}\x{9B4F}\x{9B51}\x{9B52}\x{9B53}\x{9B54}\x{9B55}\x{9B56}\x{9B58}' . +'\x{9B59}\x{9B5A}\x{9B5B}\x{9B5C}\x{9B5D}\x{9B5E}\x{9B5F}\x{9B60}\x{9B61}' . +'\x{9B63}\x{9B64}\x{9B65}\x{9B66}\x{9B67}\x{9B68}\x{9B69}\x{9B6A}\x{9B6B}' . +'\x{9B6C}\x{9B6D}\x{9B6E}\x{9B6F}\x{9B70}\x{9B71}\x{9B73}\x{9B74}\x{9B75}' . +'\x{9B76}\x{9B77}\x{9B78}\x{9B79}\x{9B7A}\x{9B7B}\x{9B7C}\x{9B7D}\x{9B7E}' . +'\x{9B7F}\x{9B80}\x{9B81}\x{9B82}\x{9B83}\x{9B84}\x{9B85}\x{9B86}\x{9B87}' . +'\x{9B88}\x{9B8A}\x{9B8B}\x{9B8D}\x{9B8E}\x{9B8F}\x{9B90}\x{9B91}\x{9B92}' . +'\x{9B93}\x{9B94}\x{9B95}\x{9B96}\x{9B97}\x{9B98}\x{9B9A}\x{9B9B}\x{9B9C}' . +'\x{9B9D}\x{9B9E}\x{9B9F}\x{9BA0}\x{9BA1}\x{9BA2}\x{9BA3}\x{9BA4}\x{9BA5}' . +'\x{9BA6}\x{9BA7}\x{9BA8}\x{9BA9}\x{9BAA}\x{9BAB}\x{9BAC}\x{9BAD}\x{9BAE}' . +'\x{9BAF}\x{9BB0}\x{9BB1}\x{9BB2}\x{9BB3}\x{9BB4}\x{9BB5}\x{9BB6}\x{9BB7}' . +'\x{9BB8}\x{9BB9}\x{9BBA}\x{9BBB}\x{9BBC}\x{9BBD}\x{9BBE}\x{9BBF}\x{9BC0}' . +'\x{9BC1}\x{9BC3}\x{9BC4}\x{9BC5}\x{9BC6}\x{9BC7}\x{9BC8}\x{9BC9}\x{9BCA}' . +'\x{9BCB}\x{9BCC}\x{9BCD}\x{9BCE}\x{9BCF}\x{9BD0}\x{9BD1}\x{9BD2}\x{9BD3}' . +'\x{9BD4}\x{9BD5}\x{9BD6}\x{9BD7}\x{9BD8}\x{9BD9}\x{9BDA}\x{9BDB}\x{9BDC}' . +'\x{9BDD}\x{9BDE}\x{9BDF}\x{9BE0}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}\x{9BE5}' . +'\x{9BE6}\x{9BE7}\x{9BE8}\x{9BE9}\x{9BEA}\x{9BEB}\x{9BEC}\x{9BED}\x{9BEE}' . +'\x{9BEF}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF3}\x{9BF4}\x{9BF5}\x{9BF7}\x{9BF8}' . +'\x{9BF9}\x{9BFA}\x{9BFB}\x{9BFC}\x{9BFD}\x{9BFE}\x{9BFF}\x{9C02}\x{9C05}' . +'\x{9C06}\x{9C07}\x{9C08}\x{9C09}\x{9C0A}\x{9C0B}\x{9C0C}\x{9C0D}\x{9C0E}' . +'\x{9C0F}\x{9C10}\x{9C11}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C16}\x{9C17}' . +'\x{9C18}\x{9C19}\x{9C1A}\x{9C1B}\x{9C1C}\x{9C1D}\x{9C1E}\x{9C1F}\x{9C20}' . +'\x{9C21}\x{9C22}\x{9C23}\x{9C24}\x{9C25}\x{9C26}\x{9C27}\x{9C28}\x{9C29}' . +'\x{9C2A}\x{9C2B}\x{9C2C}\x{9C2D}\x{9C2F}\x{9C30}\x{9C31}\x{9C32}\x{9C33}' . +'\x{9C34}\x{9C35}\x{9C36}\x{9C37}\x{9C38}\x{9C39}\x{9C3A}\x{9C3B}\x{9C3C}' . +'\x{9C3D}\x{9C3E}\x{9C3F}\x{9C40}\x{9C41}\x{9C43}\x{9C44}\x{9C45}\x{9C46}' . +'\x{9C47}\x{9C48}\x{9C49}\x{9C4A}\x{9C4B}\x{9C4C}\x{9C4D}\x{9C4E}\x{9C50}' . +'\x{9C52}\x{9C53}\x{9C54}\x{9C55}\x{9C56}\x{9C57}\x{9C58}\x{9C59}\x{9C5A}' . +'\x{9C5B}\x{9C5C}\x{9C5D}\x{9C5E}\x{9C5F}\x{9C60}\x{9C62}\x{9C63}\x{9C65}' . +'\x{9C66}\x{9C67}\x{9C68}\x{9C69}\x{9C6A}\x{9C6B}\x{9C6C}\x{9C6D}\x{9C6E}' . +'\x{9C6F}\x{9C70}\x{9C71}\x{9C72}\x{9C73}\x{9C74}\x{9C75}\x{9C77}\x{9C78}' . +'\x{9C79}\x{9C7A}\x{9C7C}\x{9C7D}\x{9C7E}\x{9C7F}\x{9C80}\x{9C81}\x{9C82}' . +'\x{9C83}\x{9C84}\x{9C85}\x{9C86}\x{9C87}\x{9C88}\x{9C89}\x{9C8A}\x{9C8B}' . +'\x{9C8C}\x{9C8D}\x{9C8E}\x{9C8F}\x{9C90}\x{9C91}\x{9C92}\x{9C93}\x{9C94}' . +'\x{9C95}\x{9C96}\x{9C97}\x{9C98}\x{9C99}\x{9C9A}\x{9C9B}\x{9C9C}\x{9C9D}' . +'\x{9C9E}\x{9C9F}\x{9CA0}\x{9CA1}\x{9CA2}\x{9CA3}\x{9CA4}\x{9CA5}\x{9CA6}' . +'\x{9CA7}\x{9CA8}\x{9CA9}\x{9CAA}\x{9CAB}\x{9CAC}\x{9CAD}\x{9CAE}\x{9CAF}' . +'\x{9CB0}\x{9CB1}\x{9CB2}\x{9CB3}\x{9CB4}\x{9CB5}\x{9CB6}\x{9CB7}\x{9CB8}' . +'\x{9CB9}\x{9CBA}\x{9CBB}\x{9CBC}\x{9CBD}\x{9CBE}\x{9CBF}\x{9CC0}\x{9CC1}' . +'\x{9CC2}\x{9CC3}\x{9CC4}\x{9CC5}\x{9CC6}\x{9CC7}\x{9CC8}\x{9CC9}\x{9CCA}' . +'\x{9CCB}\x{9CCC}\x{9CCD}\x{9CCE}\x{9CCF}\x{9CD0}\x{9CD1}\x{9CD2}\x{9CD3}' . +'\x{9CD4}\x{9CD5}\x{9CD6}\x{9CD7}\x{9CD8}\x{9CD9}\x{9CDA}\x{9CDB}\x{9CDC}' . +'\x{9CDD}\x{9CDE}\x{9CDF}\x{9CE0}\x{9CE1}\x{9CE2}\x{9CE3}\x{9CE4}\x{9CE5}' . +'\x{9CE6}\x{9CE7}\x{9CE8}\x{9CE9}\x{9CEA}\x{9CEB}\x{9CEC}\x{9CED}\x{9CEE}' . +'\x{9CEF}\x{9CF0}\x{9CF1}\x{9CF2}\x{9CF3}\x{9CF4}\x{9CF5}\x{9CF6}\x{9CF7}' . +'\x{9CF8}\x{9CF9}\x{9CFA}\x{9CFB}\x{9CFC}\x{9CFD}\x{9CFE}\x{9CFF}\x{9D00}' . +'\x{9D01}\x{9D02}\x{9D03}\x{9D04}\x{9D05}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' . +'\x{9D0A}\x{9D0B}\x{9D0F}\x{9D10}\x{9D12}\x{9D13}\x{9D14}\x{9D15}\x{9D16}' . +'\x{9D17}\x{9D18}\x{9D19}\x{9D1A}\x{9D1B}\x{9D1C}\x{9D1D}\x{9D1E}\x{9D1F}' . +'\x{9D20}\x{9D21}\x{9D22}\x{9D23}\x{9D24}\x{9D25}\x{9D26}\x{9D28}\x{9D29}' . +'\x{9D2B}\x{9D2D}\x{9D2E}\x{9D2F}\x{9D30}\x{9D31}\x{9D32}\x{9D33}\x{9D34}' . +'\x{9D36}\x{9D37}\x{9D38}\x{9D39}\x{9D3A}\x{9D3B}\x{9D3D}\x{9D3E}\x{9D3F}' . +'\x{9D40}\x{9D41}\x{9D42}\x{9D43}\x{9D45}\x{9D46}\x{9D47}\x{9D48}\x{9D49}' . +'\x{9D4A}\x{9D4B}\x{9D4C}\x{9D4D}\x{9D4E}\x{9D4F}\x{9D50}\x{9D51}\x{9D52}' . +'\x{9D53}\x{9D54}\x{9D55}\x{9D56}\x{9D57}\x{9D58}\x{9D59}\x{9D5A}\x{9D5B}' . +'\x{9D5C}\x{9D5D}\x{9D5E}\x{9D5F}\x{9D60}\x{9D61}\x{9D62}\x{9D63}\x{9D64}' . +'\x{9D65}\x{9D66}\x{9D67}\x{9D68}\x{9D69}\x{9D6A}\x{9D6B}\x{9D6C}\x{9D6E}' . +'\x{9D6F}\x{9D70}\x{9D71}\x{9D72}\x{9D73}\x{9D74}\x{9D75}\x{9D76}\x{9D77}' . +'\x{9D78}\x{9D79}\x{9D7A}\x{9D7B}\x{9D7C}\x{9D7D}\x{9D7E}\x{9D7F}\x{9D80}' . +'\x{9D81}\x{9D82}\x{9D83}\x{9D84}\x{9D85}\x{9D86}\x{9D87}\x{9D88}\x{9D89}' . +'\x{9D8A}\x{9D8B}\x{9D8C}\x{9D8D}\x{9D8E}\x{9D90}\x{9D91}\x{9D92}\x{9D93}' . +'\x{9D94}\x{9D96}\x{9D97}\x{9D98}\x{9D99}\x{9D9A}\x{9D9B}\x{9D9C}\x{9D9D}' . +'\x{9D9E}\x{9D9F}\x{9DA0}\x{9DA1}\x{9DA2}\x{9DA3}\x{9DA4}\x{9DA5}\x{9DA6}' . +'\x{9DA7}\x{9DA8}\x{9DA9}\x{9DAA}\x{9DAB}\x{9DAC}\x{9DAD}\x{9DAF}\x{9DB0}' . +'\x{9DB1}\x{9DB2}\x{9DB3}\x{9DB4}\x{9DB5}\x{9DB6}\x{9DB7}\x{9DB8}\x{9DB9}' . +'\x{9DBA}\x{9DBB}\x{9DBC}\x{9DBE}\x{9DBF}\x{9DC1}\x{9DC2}\x{9DC3}\x{9DC4}' . +'\x{9DC5}\x{9DC7}\x{9DC8}\x{9DC9}\x{9DCA}\x{9DCB}\x{9DCC}\x{9DCD}\x{9DCE}' . +'\x{9DCF}\x{9DD0}\x{9DD1}\x{9DD2}\x{9DD3}\x{9DD4}\x{9DD5}\x{9DD6}\x{9DD7}' . +'\x{9DD8}\x{9DD9}\x{9DDA}\x{9DDB}\x{9DDC}\x{9DDD}\x{9DDE}\x{9DDF}\x{9DE0}' . +'\x{9DE1}\x{9DE2}\x{9DE3}\x{9DE4}\x{9DE5}\x{9DE6}\x{9DE7}\x{9DE8}\x{9DE9}' . +'\x{9DEB}\x{9DEC}\x{9DED}\x{9DEE}\x{9DEF}\x{9DF0}\x{9DF1}\x{9DF2}\x{9DF3}' . +'\x{9DF4}\x{9DF5}\x{9DF6}\x{9DF7}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFB}\x{9DFD}' . +'\x{9DFE}\x{9DFF}\x{9E00}\x{9E01}\x{9E02}\x{9E03}\x{9E04}\x{9E05}\x{9E06}' . +'\x{9E07}\x{9E08}\x{9E09}\x{9E0A}\x{9E0B}\x{9E0C}\x{9E0D}\x{9E0F}\x{9E10}' . +'\x{9E11}\x{9E12}\x{9E13}\x{9E14}\x{9E15}\x{9E17}\x{9E18}\x{9E19}\x{9E1A}' . +'\x{9E1B}\x{9E1D}\x{9E1E}\x{9E1F}\x{9E20}\x{9E21}\x{9E22}\x{9E23}\x{9E24}' . +'\x{9E25}\x{9E26}\x{9E27}\x{9E28}\x{9E29}\x{9E2A}\x{9E2B}\x{9E2C}\x{9E2D}' . +'\x{9E2E}\x{9E2F}\x{9E30}\x{9E31}\x{9E32}\x{9E33}\x{9E34}\x{9E35}\x{9E36}' . +'\x{9E37}\x{9E38}\x{9E39}\x{9E3A}\x{9E3B}\x{9E3C}\x{9E3D}\x{9E3E}\x{9E3F}' . +'\x{9E40}\x{9E41}\x{9E42}\x{9E43}\x{9E44}\x{9E45}\x{9E46}\x{9E47}\x{9E48}' . +'\x{9E49}\x{9E4A}\x{9E4B}\x{9E4C}\x{9E4D}\x{9E4E}\x{9E4F}\x{9E50}\x{9E51}' . +'\x{9E52}\x{9E53}\x{9E54}\x{9E55}\x{9E56}\x{9E57}\x{9E58}\x{9E59}\x{9E5A}' . +'\x{9E5B}\x{9E5C}\x{9E5D}\x{9E5E}\x{9E5F}\x{9E60}\x{9E61}\x{9E62}\x{9E63}' . +'\x{9E64}\x{9E65}\x{9E66}\x{9E67}\x{9E68}\x{9E69}\x{9E6A}\x{9E6B}\x{9E6C}' . +'\x{9E6D}\x{9E6E}\x{9E6F}\x{9E70}\x{9E71}\x{9E72}\x{9E73}\x{9E74}\x{9E75}' . +'\x{9E76}\x{9E77}\x{9E79}\x{9E7A}\x{9E7C}\x{9E7D}\x{9E7E}\x{9E7F}\x{9E80}' . +'\x{9E81}\x{9E82}\x{9E83}\x{9E84}\x{9E85}\x{9E86}\x{9E87}\x{9E88}\x{9E89}' . +'\x{9E8A}\x{9E8B}\x{9E8C}\x{9E8D}\x{9E8E}\x{9E91}\x{9E92}\x{9E93}\x{9E94}' . +'\x{9E96}\x{9E97}\x{9E99}\x{9E9A}\x{9E9B}\x{9E9C}\x{9E9D}\x{9E9F}\x{9EA0}' . +'\x{9EA1}\x{9EA3}\x{9EA4}\x{9EA5}\x{9EA6}\x{9EA7}\x{9EA8}\x{9EA9}\x{9EAA}' . +'\x{9EAD}\x{9EAE}\x{9EAF}\x{9EB0}\x{9EB2}\x{9EB3}\x{9EB4}\x{9EB5}\x{9EB6}' . +'\x{9EB7}\x{9EB8}\x{9EBB}\x{9EBC}\x{9EBD}\x{9EBE}\x{9EBF}\x{9EC0}\x{9EC1}' . +'\x{9EC2}\x{9EC3}\x{9EC4}\x{9EC5}\x{9EC6}\x{9EC7}\x{9EC8}\x{9EC9}\x{9ECA}' . +'\x{9ECB}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED1}\x{9ED2}\x{9ED3}' . +'\x{9ED4}\x{9ED5}\x{9ED6}\x{9ED7}\x{9ED8}\x{9ED9}\x{9EDA}\x{9EDB}\x{9EDC}' . +'\x{9EDD}\x{9EDE}\x{9EDF}\x{9EE0}\x{9EE1}\x{9EE2}\x{9EE3}\x{9EE4}\x{9EE5}' . +'\x{9EE6}\x{9EE7}\x{9EE8}\x{9EE9}\x{9EEA}\x{9EEB}\x{9EED}\x{9EEE}\x{9EEF}' . +'\x{9EF0}\x{9EF2}\x{9EF3}\x{9EF4}\x{9EF5}\x{9EF6}\x{9EF7}\x{9EF8}\x{9EF9}' . +'\x{9EFA}\x{9EFB}\x{9EFC}\x{9EFD}\x{9EFE}\x{9EFF}\x{9F00}\x{9F01}\x{9F02}' . +'\x{9F04}\x{9F05}\x{9F06}\x{9F07}\x{9F08}\x{9F09}\x{9F0A}\x{9F0B}\x{9F0C}' . +'\x{9F0D}\x{9F0E}\x{9F0F}\x{9F10}\x{9F12}\x{9F13}\x{9F15}\x{9F16}\x{9F17}' . +'\x{9F18}\x{9F19}\x{9F1A}\x{9F1B}\x{9F1C}\x{9F1D}\x{9F1E}\x{9F1F}\x{9F20}' . +'\x{9F22}\x{9F23}\x{9F24}\x{9F25}\x{9F27}\x{9F28}\x{9F29}\x{9F2A}\x{9F2B}' . +'\x{9F2C}\x{9F2D}\x{9F2E}\x{9F2F}\x{9F30}\x{9F31}\x{9F32}\x{9F33}\x{9F34}' . +'\x{9F35}\x{9F36}\x{9F37}\x{9F38}\x{9F39}\x{9F3A}\x{9F3B}\x{9F3C}\x{9F3D}' . +'\x{9F3E}\x{9F3F}\x{9F40}\x{9F41}\x{9F42}\x{9F43}\x{9F44}\x{9F46}\x{9F47}' . +'\x{9F48}\x{9F49}\x{9F4A}\x{9F4B}\x{9F4C}\x{9F4D}\x{9F4E}\x{9F4F}\x{9F50}' . +'\x{9F51}\x{9F52}\x{9F54}\x{9F55}\x{9F56}\x{9F57}\x{9F58}\x{9F59}\x{9F5A}' . +'\x{9F5B}\x{9F5C}\x{9F5D}\x{9F5E}\x{9F5F}\x{9F60}\x{9F61}\x{9F63}\x{9F64}' . +'\x{9F65}\x{9F66}\x{9F67}\x{9F68}\x{9F69}\x{9F6A}\x{9F6B}\x{9F6C}\x{9F6E}' . +'\x{9F6F}\x{9F70}\x{9F71}\x{9F72}\x{9F73}\x{9F74}\x{9F75}\x{9F76}\x{9F77}' . +'\x{9F78}\x{9F79}\x{9F7A}\x{9F7B}\x{9F7C}\x{9F7D}\x{9F7E}\x{9F7F}\x{9F80}' . +'\x{9F81}\x{9F82}\x{9F83}\x{9F84}\x{9F85}\x{9F86}\x{9F87}\x{9F88}\x{9F89}' . +'\x{9F8A}\x{9F8B}\x{9F8C}\x{9F8D}\x{9F8E}\x{9F8F}\x{9F90}\x{9F91}\x{9F92}' . +'\x{9F93}\x{9F94}\x{9F95}\x{9F96}\x{9F97}\x{9F98}\x{9F99}\x{9F9A}\x{9F9B}' . +'\x{9F9C}\x{9F9D}\x{9F9E}\x{9F9F}\x{9FA0}\x{9FA2}\x{9FA4}\x{9FA5}]{1,20}$/iu'); diff --git a/library/Zend/Validate/Hostname/Com.php b/library/Zend/Validate/Hostname/Com.php new file mode 100755 index 000000000..873dd522b --- /dev/null +++ b/library/Zend/Validate/Hostname/Com.php @@ -0,0 +1,196 @@ + '/^[\x{002d}0-9\x{0400}-\x{052f}]{1,63}$/iu', + 2 => '/^[\x{002d}0-9\x{0370}-\x{03ff}]{1,63}$/iu', + 3 => '/^[\x{002d}0-9a-z\x{ac00}-\x{d7a3}]{1,17}$/iu', + 4 => '/^[\x{002d}0-9a-z·à-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıĵķĸĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž]{1,63}$/iu', + 5 => '/^[\x{002d}0-9A-Za-z\x{3400}-\x{3401}\x{3404}-\x{3406}\x{340C}\x{3416}\x{341C}' . +'\x{3421}\x{3424}\x{3428}-\x{3429}\x{342B}-\x{342E}\x{3430}-\x{3434}\x{3436}' . +'\x{3438}-\x{343C}\x{343E}\x{3441}-\x{3445}\x{3447}\x{3449}-\x{3451}\x{3453}' . +'\x{3457}-\x{345F}\x{3463}-\x{3467}\x{346E}-\x{3471}\x{3473}-\x{3477}\x{3479}-\x{348E}\x{3491}-\x{3497}' . +'\x{3499}-\x{34A1}\x{34A4}-\x{34AD}\x{34AF}-\x{34B0}\x{34B2}-\x{34BF}\x{34C2}-\x{34C5}\x{34C7}-\x{34CC}' . +'\x{34CE}-\x{34D1}\x{34D3}-\x{34D8}\x{34DA}-\x{34E4}\x{34E7}-\x{34E9}\x{34EC}-\x{34EF}\x{34F1}-\x{34FE}' . +'\x{3500}-\x{3507}\x{350A}-\x{3513}\x{3515}\x{3517}-\x{351A}\x{351C}-\x{351E}\x{3520}-\x{352A}' . +'\x{352C}-\x{3552}\x{3554}-\x{355C}\x{355E}-\x{3567}\x{3569}-\x{3573}\x{3575}-\x{357C}\x{3580}-\x{3588}' . +'\x{358F}-\x{3598}\x{359E}-\x{35AB}\x{35B4}-\x{35CD}\x{35D0}\x{35D3}-\x{35DC}\x{35E2}-\x{35ED}' . +'\x{35F0}-\x{35F6}\x{35FB}-\x{3602}\x{3605}-\x{360E}\x{3610}-\x{3611}\x{3613}-\x{3616}\x{3619}-\x{362D}' . +'\x{362F}-\x{3634}\x{3636}-\x{363B}\x{363F}-\x{3645}\x{3647}-\x{364B}\x{364D}-\x{3653}\x{3655}' . +'\x{3659}-\x{365E}\x{3660}-\x{3665}\x{3667}-\x{367C}\x{367E}\x{3680}-\x{3685}\x{3687}' . +'\x{3689}-\x{3690}\x{3692}-\x{3698}\x{369A}\x{369C}-\x{36AE}\x{36B0}-\x{36BF}\x{36C1}-\x{36C5}' . +'\x{36C9}-\x{36CA}\x{36CD}-\x{36DE}\x{36E1}-\x{36E2}\x{36E5}-\x{36FE}\x{3701}-\x{3713}\x{3715}-\x{371E}' . +'\x{3720}-\x{372C}\x{372E}-\x{3745}\x{3747}-\x{3748}\x{374A}\x{374C}-\x{3759}\x{375B}-\x{3760}' . +'\x{3762}-\x{3767}\x{3769}-\x{3772}\x{3774}-\x{378C}\x{378F}-\x{379C}\x{379F}\x{37A1}-\x{37AD}' . +'\x{37AF}-\x{37B7}\x{37B9}-\x{37C1}\x{37C3}-\x{37C5}\x{37C7}-\x{37D4}\x{37D6}-\x{37E0}\x{37E2}' . +'\x{37E5}-\x{37ED}\x{37EF}-\x{37F6}\x{37F8}-\x{3802}\x{3804}-\x{381D}\x{3820}-\x{3822}\x{3825}-\x{382A}' . +'\x{382D}-\x{382F}\x{3831}-\x{3832}\x{3834}-\x{384C}\x{384E}-\x{3860}\x{3862}-\x{3863}\x{3865}-\x{386B}' . +'\x{386D}-\x{3886}\x{3888}-\x{38A1}\x{38A3}\x{38A5}-\x{38AA}\x{38AC}\x{38AE}-\x{38B0}' . +'\x{38B2}-\x{38B6}\x{38B8}\x{38BA}-\x{38BE}\x{38C0}-\x{38C9}\x{38CB}-\x{38D4}\x{38D8}-\x{38E0}' . +'\x{38E2}-\x{38E6}\x{38EB}-\x{38ED}\x{38EF}-\x{38F2}\x{38F5}-\x{38F7}\x{38FA}-\x{38FF}\x{3901}-\x{392A}' . +'\x{392C}\x{392E}-\x{393B}\x{393E}-\x{3956}\x{395A}-\x{3969}\x{396B}-\x{397A}\x{397C}-\x{3987}' . +'\x{3989}-\x{3998}\x{399A}-\x{39B0}\x{39B2}\x{39B4}-\x{39D0}\x{39D2}-\x{39DA}\x{39DE}-\x{39DF}' . +'\x{39E1}-\x{39EF}\x{39F1}-\x{3A17}\x{3A19}-\x{3A2A}\x{3A2D}-\x{3A40}\x{3A43}-\x{3A4E}\x{3A50}' . +'\x{3A52}-\x{3A5E}\x{3A60}-\x{3A6D}\x{3A6F}-\x{3A77}\x{3A79}-\x{3A82}\x{3A84}-\x{3A85}\x{3A87}-\x{3A89}' . +'\x{3A8B}-\x{3A8F}\x{3A91}-\x{3A93}\x{3A95}-\x{3A96}\x{3A9A}\x{3A9C}-\x{3AA6}\x{3AA8}-\x{3AA9}' . +'\x{3AAB}-\x{3AB1}\x{3AB4}-\x{3ABC}\x{3ABE}-\x{3AC5}\x{3ACA}-\x{3ACB}\x{3ACD}-\x{3AD5}\x{3AD7}-\x{3AE1}' . +'\x{3AE4}-\x{3AE7}\x{3AE9}-\x{3AEC}\x{3AEE}-\x{3AFD}\x{3B01}-\x{3B10}\x{3B12}-\x{3B15}\x{3B17}-\x{3B1E}' . +'\x{3B20}-\x{3B23}\x{3B25}-\x{3B27}\x{3B29}-\x{3B36}\x{3B38}-\x{3B39}\x{3B3B}-\x{3B3C}\x{3B3F}' . +'\x{3B41}-\x{3B44}\x{3B47}-\x{3B4C}\x{3B4E}\x{3B51}-\x{3B55}\x{3B58}-\x{3B62}\x{3B68}-\x{3B72}' . +'\x{3B78}-\x{3B88}\x{3B8B}-\x{3B9F}\x{3BA1}\x{3BA3}-\x{3BBA}\x{3BBC}\x{3BBF}-\x{3BD0}' . +'\x{3BD3}-\x{3BE6}\x{3BEA}-\x{3BFB}\x{3BFE}-\x{3C12}\x{3C14}-\x{3C1B}\x{3C1D}-\x{3C37}\x{3C39}-\x{3C4F}' . +'\x{3C52}\x{3C54}-\x{3C5C}\x{3C5E}-\x{3C68}\x{3C6A}-\x{3C76}\x{3C78}-\x{3C8F}\x{3C91}-\x{3CA8}' . +'\x{3CAA}-\x{3CAD}\x{3CAF}-\x{3CBE}\x{3CC0}-\x{3CC8}\x{3CCA}-\x{3CD3}\x{3CD6}-\x{3CE0}\x{3CE4}-\x{3CEE}' . +'\x{3CF3}-\x{3D0A}\x{3D0E}-\x{3D1E}\x{3D20}-\x{3D21}\x{3D25}-\x{3D38}\x{3D3B}-\x{3D46}\x{3D4A}-\x{3D59}' . +'\x{3D5D}-\x{3D7B}\x{3D7D}-\x{3D81}\x{3D84}-\x{3D88}\x{3D8C}-\x{3D8F}\x{3D91}-\x{3D98}\x{3D9A}-\x{3D9C}' . +'\x{3D9E}-\x{3DA1}\x{3DA3}-\x{3DB0}\x{3DB2}-\x{3DB5}\x{3DB9}-\x{3DBC}\x{3DBE}-\x{3DCB}\x{3DCD}-\x{3DDB}' . +'\x{3DDF}-\x{3DE8}\x{3DEB}-\x{3DF0}\x{3DF3}-\x{3DF9}\x{3DFB}-\x{3DFC}\x{3DFE}-\x{3E05}\x{3E08}-\x{3E33}' . +'\x{3E35}-\x{3E3E}\x{3E40}-\x{3E47}\x{3E49}-\x{3E67}\x{3E6B}-\x{3E6F}\x{3E71}-\x{3E85}\x{3E87}-\x{3E8C}' . +'\x{3E8E}-\x{3E98}\x{3E9A}-\x{3EA1}\x{3EA3}-\x{3EAE}\x{3EB0}-\x{3EB5}\x{3EB7}-\x{3EBA}\x{3EBD}' . +'\x{3EBF}-\x{3EC4}\x{3EC7}-\x{3ECE}\x{3ED1}-\x{3ED7}\x{3ED9}-\x{3EDA}\x{3EDD}-\x{3EE3}\x{3EE7}-\x{3EE8}' . +'\x{3EEB}-\x{3EF2}\x{3EF5}-\x{3EFF}\x{3F01}-\x{3F02}\x{3F04}-\x{3F07}\x{3F09}-\x{3F44}\x{3F46}-\x{3F4E}' . +'\x{3F50}-\x{3F53}\x{3F55}-\x{3F72}\x{3F74}-\x{3F75}\x{3F77}-\x{3F7B}\x{3F7D}-\x{3FB0}\x{3FB6}-\x{3FBF}' . +'\x{3FC1}-\x{3FCF}\x{3FD1}-\x{3FD3}\x{3FD5}-\x{3FDF}\x{3FE1}-\x{400B}\x{400D}-\x{401C}\x{401E}-\x{4024}' . +'\x{4027}-\x{403F}\x{4041}-\x{4060}\x{4062}-\x{4069}\x{406B}-\x{408A}\x{408C}-\x{40A7}\x{40A9}-\x{40B4}' . +'\x{40B6}-\x{40C2}\x{40C7}-\x{40CF}\x{40D1}-\x{40DE}\x{40E0}-\x{40E7}\x{40E9}-\x{40EE}\x{40F0}-\x{40FB}' . +'\x{40FD}-\x{4109}\x{410B}-\x{4115}\x{4118}-\x{411D}\x{411F}-\x{4122}\x{4124}-\x{4133}\x{4136}-\x{4138}' . +'\x{413A}-\x{4148}\x{414A}-\x{4169}\x{416C}-\x{4185}\x{4188}-\x{418B}\x{418D}-\x{41AD}\x{41AF}-\x{41B3}' . +'\x{41B5}-\x{41C3}\x{41C5}-\x{41C9}\x{41CB}-\x{41F2}\x{41F5}-\x{41FE}\x{4200}-\x{4227}\x{422A}-\x{4246}' . +'\x{4248}-\x{4263}\x{4265}-\x{428B}\x{428D}-\x{42A1}\x{42A3}-\x{42C4}\x{42C8}-\x{42DC}\x{42DE}-\x{430A}' . +'\x{430C}-\x{4335}\x{4337}\x{4342}-\x{435F}\x{4361}-\x{439A}\x{439C}-\x{439D}\x{439F}-\x{43A4}' . +'\x{43A6}-\x{43EC}\x{43EF}-\x{4405}\x{4407}-\x{4429}\x{442B}-\x{4455}\x{4457}-\x{4468}\x{446A}-\x{446D}' . +'\x{446F}-\x{4476}\x{4479}-\x{447D}\x{447F}-\x{4486}\x{4488}-\x{4490}\x{4492}-\x{4498}\x{449A}-\x{44AD}' . +'\x{44B0}-\x{44BD}\x{44C1}-\x{44D3}\x{44D6}-\x{44E7}\x{44EA}\x{44EC}-\x{44FA}\x{44FC}-\x{4541}' . +'\x{4543}-\x{454F}\x{4551}-\x{4562}\x{4564}-\x{4575}\x{4577}-\x{45AB}\x{45AD}-\x{45BD}\x{45BF}-\x{45D5}' . +'\x{45D7}-\x{45EC}\x{45EE}-\x{45F2}\x{45F4}-\x{45FA}\x{45FC}-\x{461A}\x{461C}-\x{461D}\x{461F}-\x{4631}' . +'\x{4633}-\x{4649}\x{464C}\x{464E}-\x{4652}\x{4654}-\x{466A}\x{466C}-\x{4675}\x{4677}-\x{467A}' . +'\x{467C}-\x{4694}\x{4696}-\x{46A3}\x{46A5}-\x{46AB}\x{46AD}-\x{46D2}\x{46D4}-\x{4723}\x{4729}-\x{4732}' . +'\x{4734}-\x{4758}\x{475A}\x{475C}-\x{478B}\x{478D}\x{4791}-\x{47B1}\x{47B3}-\x{47F1}' . +'\x{47F3}-\x{480B}\x{480D}-\x{4815}\x{4817}-\x{4839}\x{483B}-\x{4870}\x{4872}-\x{487A}\x{487C}-\x{487F}' . +'\x{4883}-\x{488E}\x{4890}-\x{4896}\x{4899}-\x{48A2}\x{48A4}-\x{48B9}\x{48BB}-\x{48C8}\x{48CA}-\x{48D1}' . +'\x{48D3}-\x{48E5}\x{48E7}-\x{48F2}\x{48F4}-\x{48FF}\x{4901}-\x{4922}\x{4924}-\x{4928}\x{492A}-\x{4931}' . +'\x{4933}-\x{495B}\x{495D}-\x{4978}\x{497A}\x{497D}\x{4982}-\x{4983}\x{4985}-\x{49A8}' . +'\x{49AA}-\x{49AF}\x{49B1}-\x{49B7}\x{49B9}-\x{49BD}\x{49C1}-\x{49C7}\x{49C9}-\x{49CE}\x{49D0}-\x{49E8}' . +'\x{49EA}\x{49EC}\x{49EE}-\x{4A19}\x{4A1B}-\x{4A43}\x{4A45}-\x{4A4D}\x{4A4F}-\x{4A9E}' . +'\x{4AA0}-\x{4AA9}\x{4AAB}-\x{4B4E}\x{4B50}-\x{4B5B}\x{4B5D}-\x{4B69}\x{4B6B}-\x{4BC2}\x{4BC6}-\x{4BE8}' . +'\x{4BEA}-\x{4BFA}\x{4BFC}-\x{4C06}\x{4C08}-\x{4C2D}\x{4C2F}-\x{4C32}\x{4C34}-\x{4C35}\x{4C37}-\x{4C69}' . +'\x{4C6B}-\x{4C73}\x{4C75}-\x{4C86}\x{4C88}-\x{4C97}\x{4C99}-\x{4C9C}\x{4C9F}-\x{4CA3}\x{4CA5}-\x{4CB5}' . +'\x{4CB7}-\x{4CF8}\x{4CFA}-\x{4D27}\x{4D29}-\x{4DAC}\x{4DAE}-\x{4DB1}\x{4DB3}-\x{4DB5}\x{4E00}-\x{4E54}' . +'\x{4E56}-\x{4E89}\x{4E8B}-\x{4EEC}\x{4EEE}-\x{4FAC}\x{4FAE}-\x{503C}\x{503E}-\x{51E5}\x{51E7}-\x{5270}' . +'\x{5272}-\x{56A1}\x{56A3}-\x{5840}\x{5842}-\x{58B5}\x{58B7}-\x{58CB}\x{58CD}-\x{5BC8}\x{5BCA}-\x{5C01}' . +'\x{5C03}-\x{5C25}\x{5C27}-\x{5D5B}\x{5D5D}-\x{5F08}\x{5F0A}-\x{61F3}\x{61F5}-\x{63BA}\x{63BC}-\x{6441}' . +'\x{6443}-\x{657C}\x{657E}-\x{663E}\x{6640}-\x{66FC}\x{66FE}-\x{6728}\x{672A}-\x{6766}\x{6768}-\x{67A8}' . +'\x{67AA}-\x{685B}\x{685D}-\x{685E}\x{6860}-\x{68B9}\x{68BB}-\x{6AC8}\x{6ACA}-\x{6BB0}\x{6BB2}-\x{6C16}' . +'\x{6C18}-\x{6D9B}\x{6D9D}-\x{6E12}\x{6E14}-\x{6E8B}\x{6E8D}-\x{704D}\x{704F}-\x{7113}\x{7115}-\x{713B}' . +'\x{713D}-\x{7154}\x{7156}-\x{729F}\x{72A1}-\x{731E}\x{7320}-\x{7362}\x{7364}-\x{7533}\x{7535}-\x{7551}' . +'\x{7553}-\x{7572}\x{7574}-\x{75E8}\x{75EA}-\x{7679}\x{767B}-\x{783E}\x{7840}-\x{7A62}\x{7A64}-\x{7AC2}' . +'\x{7AC4}-\x{7B06}\x{7B08}-\x{7B79}\x{7B7B}-\x{7BCE}\x{7BD0}-\x{7D99}\x{7D9B}-\x{7E49}\x{7E4C}-\x{8132}' . +'\x{8134}\x{8136}-\x{81D2}\x{81D4}-\x{8216}\x{8218}-\x{822D}\x{822F}-\x{83B4}\x{83B6}-\x{841F}' . +'\x{8421}-\x{86CC}\x{86CE}-\x{874A}\x{874C}-\x{877E}\x{8780}-\x{8A32}\x{8A34}-\x{8B71}\x{8B73}-\x{8B8E}' . +'\x{8B90}-\x{8DE4}\x{8DE6}-\x{8E9A}\x{8E9C}-\x{8EE1}\x{8EE4}-\x{8F0B}\x{8F0D}-\x{8FB9}\x{8FBB}-\x{9038}' . +'\x{903A}-\x{9196}\x{9198}-\x{91A3}\x{91A5}-\x{91B7}\x{91B9}-\x{91C7}\x{91C9}-\x{91E0}\x{91E2}-\x{91FB}' . +'\x{91FD}-\x{922B}\x{922D}-\x{9270}\x{9272}-\x{9420}\x{9422}-\x{9664}\x{9666}-\x{9679}\x{967B}-\x{9770}' . +'\x{9772}-\x{982B}\x{982D}-\x{98ED}\x{98EF}-\x{99C4}\x{99C6}-\x{9A11}\x{9A14}-\x{9A27}\x{9A29}-\x{9D0D}' . +'\x{9D0F}-\x{9D2B}\x{9D2D}-\x{9D8E}\x{9D90}-\x{9DC5}\x{9DC7}-\x{9E77}\x{9E79}-\x{9EB8}\x{9EBB}-\x{9F20}' . +'\x{9F22}-\x{9F61}\x{9F63}-\x{9FA5}\x{FA28}]{1,20}$/iu', + 6 => '/^[\x{002d}0-9A-Za-z]{1,63}$/iu', + 7 => '/^[\x{00A1}-\x{00FF}]{1,63}$/iu', + 8 => '/^[\x{0100}-\x{017f}]{1,63}$/iu', + 9 => '/^[\x{0180}-\x{024f}]{1,63}$/iu', + 10 => '/^[\x{0250}-\x{02af}]{1,63}$/iu', + 11 => '/^[\x{02b0}-\x{02ff}]{1,63}$/iu', + 12 => '/^[\x{0300}-\x{036f}]{1,63}$/iu', + 13 => '/^[\x{0370}-\x{03ff}]{1,63}$/iu', + 14 => '/^[\x{0400}-\x{04ff}]{1,63}$/iu', + 15 => '/^[\x{0500}-\x{052f}]{1,63}$/iu', + 16 => '/^[\x{0530}-\x{058F}]{1,63}$/iu', + 17 => '/^[\x{0590}-\x{05FF}]{1,63}$/iu', + 18 => '/^[\x{0600}-\x{06FF}]{1,63}$/iu', + 19 => '/^[\x{0700}-\x{074F}]{1,63}$/iu', + 20 => '/^[\x{0780}-\x{07BF}]{1,63}$/iu', + 21 => '/^[\x{0900}-\x{097F}]{1,63}$/iu', + 22 => '/^[\x{0980}-\x{09FF}]{1,63}$/iu', + 23 => '/^[\x{0A00}-\x{0A7F}]{1,63}$/iu', + 24 => '/^[\x{0A80}-\x{0AFF}]{1,63}$/iu', + 25 => '/^[\x{0B00}-\x{0B7F}]{1,63}$/iu', + 26 => '/^[\x{0B80}-\x{0BFF}]{1,63}$/iu', + 27 => '/^[\x{0C00}-\x{0C7F}]{1,63}$/iu', + 28 => '/^[\x{0C80}-\x{0CFF}]{1,63}$/iu', + 29 => '/^[\x{0D00}-\x{0D7F}]{1,63}$/iu', + 30 => '/^[\x{0D80}-\x{0DFF}]{1,63}$/iu', + 31 => '/^[\x{0E00}-\x{0E7F}]{1,63}$/iu', + 32 => '/^[\x{0E80}-\x{0EFF}]{1,63}$/iu', + 33 => '/^[\x{0F00}-\x{0FFF}]{1,63}$/iu', + 34 => '/^[\x{1000}-\x{109F}]{1,63}$/iu', + 35 => '/^[\x{10A0}-\x{10FF}]{1,63}$/iu', + 36 => '/^[\x{1100}-\x{11FF}]{1,63}$/iu', + 37 => '/^[\x{1200}-\x{137F}]{1,63}$/iu', + 38 => '/^[\x{13A0}-\x{13FF}]{1,63}$/iu', + 39 => '/^[\x{1400}-\x{167F}]{1,63}$/iu', + 40 => '/^[\x{1680}-\x{169F}]{1,63}$/iu', + 41 => '/^[\x{16A0}-\x{16FF}]{1,63}$/iu', + 42 => '/^[\x{1700}-\x{171F}]{1,63}$/iu', + 43 => '/^[\x{1720}-\x{173F}]{1,63}$/iu', + 44 => '/^[\x{1740}-\x{175F}]{1,63}$/iu', + 45 => '/^[\x{1760}-\x{177F}]{1,63}$/iu', + 46 => '/^[\x{1780}-\x{17FF}]{1,63}$/iu', + 47 => '/^[\x{1800}-\x{18AF}]{1,63}$/iu', + 48 => '/^[\x{1E00}-\x{1EFF}]{1,63}$/iu', + 49 => '/^[\x{1F00}-\x{1FFF}]{1,63}$/iu', + 50 => '/^[\x{2070}-\x{209F}]{1,63}$/iu', + 51 => '/^[\x{2100}-\x{214F}]{1,63}$/iu', + 52 => '/^[\x{2150}-\x{218F}]{1,63}$/iu', + 53 => '/^[\x{2460}-\x{24FF}]{1,63}$/iu', + 54 => '/^[\x{2E80}-\x{2EFF}]{1,63}$/iu', + 55 => '/^[\x{2F00}-\x{2FDF}]{1,63}$/iu', + 56 => '/^[\x{2FF0}-\x{2FFF}]{1,63}$/iu', + 57 => '/^[\x{3040}-\x{309F}]{1,63}$/iu', + 58 => '/^[\x{30A0}-\x{30FF}]{1,63}$/iu', + 59 => '/^[\x{3100}-\x{312F}]{1,63}$/iu', + 60 => '/^[\x{3130}-\x{318F}]{1,63}$/iu', + 61 => '/^[\x{3190}-\x{319F}]{1,63}$/iu', + 62 => '/^[\x{31A0}-\x{31BF}]{1,63}$/iu', + 63 => '/^[\x{31F0}-\x{31FF}]{1,63}$/iu', + 64 => '/^[\x{3200}-\x{32FF}]{1,63}$/iu', + 65 => '/^[\x{3300}-\x{33FF}]{1,63}$/iu', + 66 => '/^[\x{3400}-\x{4DBF}]{1,63}$/iu', + 67 => '/^[\x{4E00}-\x{9FFF}]{1,63}$/iu', + 68 => '/^[\x{A000}-\x{A48F}]{1,63}$/iu', + 69 => '/^[\x{A490}-\x{A4CF}]{1,63}$/iu', + 70 => '/^[\x{AC00}-\x{D7AF}]{1,63}$/iu', + 73 => '/^[\x{F900}-\x{FAFF}]{1,63}$/iu', + 74 => '/^[\x{FB00}-\x{FB4F}]{1,63}$/iu', + 75 => '/^[\x{FB50}-\x{FDFF}]{1,63}$/iu', + 76 => '/^[\x{FE20}-\x{FE2F}]{1,63}$/iu', + 77 => '/^[\x{FE70}-\x{FEFF}]{1,63}$/iu', + 78 => '/^[\x{FF00}-\x{FFEF}]{1,63}$/iu', + 79 => '/^[\x{20000}-\x{2A6DF}]{1,63}$/iu', + 80 => '/^[\x{2F800}-\x{2FA1F}]{1,63}$/iu' + +); diff --git a/library/Zend/Validate/Hostname/Jp.php b/library/Zend/Validate/Hostname/Jp.php new file mode 100755 index 000000000..caca994b9 --- /dev/null +++ b/library/Zend/Validate/Hostname/Jp.php @@ -0,0 +1,739 @@ + '/^[\x{002d}0-9a-z\x{3005}-\x{3007}\x{3041}-\x{3093}\x{309D}\x{309E}' . +'\x{30A1}-\x{30F6}\x{30FC}' . +'\x{30FD}\x{30FE}\x{4E00}\x{4E01}\x{4E03}\x{4E07}\x{4E08}\x{4E09}\x{4E0A}' . +'\x{4E0B}\x{4E0D}\x{4E0E}\x{4E10}\x{4E11}\x{4E14}\x{4E15}\x{4E16}\x{4E17}' . +'\x{4E18}\x{4E19}\x{4E1E}\x{4E21}\x{4E26}\x{4E2A}\x{4E2D}\x{4E31}\x{4E32}' . +'\x{4E36}\x{4E38}\x{4E39}\x{4E3B}\x{4E3C}\x{4E3F}\x{4E42}\x{4E43}\x{4E45}' . +'\x{4E4B}\x{4E4D}\x{4E4E}\x{4E4F}\x{4E55}\x{4E56}\x{4E57}\x{4E58}\x{4E59}' . +'\x{4E5D}\x{4E5E}\x{4E5F}\x{4E62}\x{4E71}\x{4E73}\x{4E7E}\x{4E80}\x{4E82}' . +'\x{4E85}\x{4E86}\x{4E88}\x{4E89}\x{4E8A}\x{4E8B}\x{4E8C}\x{4E8E}\x{4E91}' . +'\x{4E92}\x{4E94}\x{4E95}\x{4E98}\x{4E99}\x{4E9B}\x{4E9C}\x{4E9E}\x{4E9F}' . +'\x{4EA0}\x{4EA1}\x{4EA2}\x{4EA4}\x{4EA5}\x{4EA6}\x{4EA8}\x{4EAB}\x{4EAC}' . +'\x{4EAD}\x{4EAE}\x{4EB0}\x{4EB3}\x{4EB6}\x{4EBA}\x{4EC0}\x{4EC1}\x{4EC2}' . +'\x{4EC4}\x{4EC6}\x{4EC7}\x{4ECA}\x{4ECB}\x{4ECD}\x{4ECE}\x{4ECF}\x{4ED4}' . +'\x{4ED5}\x{4ED6}\x{4ED7}\x{4ED8}\x{4ED9}\x{4EDD}\x{4EDE}\x{4EDF}\x{4EE3}' . +'\x{4EE4}\x{4EE5}\x{4EED}\x{4EEE}\x{4EF0}\x{4EF2}\x{4EF6}\x{4EF7}\x{4EFB}' . +'\x{4F01}\x{4F09}\x{4F0A}\x{4F0D}\x{4F0E}\x{4F0F}\x{4F10}\x{4F11}\x{4F1A}' . +'\x{4F1C}\x{4F1D}\x{4F2F}\x{4F30}\x{4F34}\x{4F36}\x{4F38}\x{4F3A}\x{4F3C}' . +'\x{4F3D}\x{4F43}\x{4F46}\x{4F47}\x{4F4D}\x{4F4E}\x{4F4F}\x{4F50}\x{4F51}' . +'\x{4F53}\x{4F55}\x{4F57}\x{4F59}\x{4F5A}\x{4F5B}\x{4F5C}\x{4F5D}\x{4F5E}' . +'\x{4F69}\x{4F6F}\x{4F70}\x{4F73}\x{4F75}\x{4F76}\x{4F7B}\x{4F7C}\x{4F7F}' . +'\x{4F83}\x{4F86}\x{4F88}\x{4F8B}\x{4F8D}\x{4F8F}\x{4F91}\x{4F96}\x{4F98}' . +'\x{4F9B}\x{4F9D}\x{4FA0}\x{4FA1}\x{4FAB}\x{4FAD}\x{4FAE}\x{4FAF}\x{4FB5}' . +'\x{4FB6}\x{4FBF}\x{4FC2}\x{4FC3}\x{4FC4}\x{4FCA}\x{4FCE}\x{4FD0}\x{4FD1}' . +'\x{4FD4}\x{4FD7}\x{4FD8}\x{4FDA}\x{4FDB}\x{4FDD}\x{4FDF}\x{4FE1}\x{4FE3}' . +'\x{4FE4}\x{4FE5}\x{4FEE}\x{4FEF}\x{4FF3}\x{4FF5}\x{4FF6}\x{4FF8}\x{4FFA}' . +'\x{4FFE}\x{5005}\x{5006}\x{5009}\x{500B}\x{500D}\x{500F}\x{5011}\x{5012}' . +'\x{5014}\x{5016}\x{5019}\x{501A}\x{501F}\x{5021}\x{5023}\x{5024}\x{5025}' . +'\x{5026}\x{5028}\x{5029}\x{502A}\x{502B}\x{502C}\x{502D}\x{5036}\x{5039}' . +'\x{5043}\x{5047}\x{5048}\x{5049}\x{504F}\x{5050}\x{5055}\x{5056}\x{505A}' . +'\x{505C}\x{5065}\x{506C}\x{5072}\x{5074}\x{5075}\x{5076}\x{5078}\x{507D}' . +'\x{5080}\x{5085}\x{508D}\x{5091}\x{5098}\x{5099}\x{509A}\x{50AC}\x{50AD}' . +'\x{50B2}\x{50B3}\x{50B4}\x{50B5}\x{50B7}\x{50BE}\x{50C2}\x{50C5}\x{50C9}' . +'\x{50CA}\x{50CD}\x{50CF}\x{50D1}\x{50D5}\x{50D6}\x{50DA}\x{50DE}\x{50E3}' . +'\x{50E5}\x{50E7}\x{50ED}\x{50EE}\x{50F5}\x{50F9}\x{50FB}\x{5100}\x{5101}' . +'\x{5102}\x{5104}\x{5109}\x{5112}\x{5114}\x{5115}\x{5116}\x{5118}\x{511A}' . +'\x{511F}\x{5121}\x{512A}\x{5132}\x{5137}\x{513A}\x{513B}\x{513C}\x{513F}' . +'\x{5140}\x{5141}\x{5143}\x{5144}\x{5145}\x{5146}\x{5147}\x{5148}\x{5149}' . +'\x{514B}\x{514C}\x{514D}\x{514E}\x{5150}\x{5152}\x{5154}\x{515A}\x{515C}' . +'\x{5162}\x{5165}\x{5168}\x{5169}\x{516A}\x{516B}\x{516C}\x{516D}\x{516E}' . +'\x{5171}\x{5175}\x{5176}\x{5177}\x{5178}\x{517C}\x{5180}\x{5182}\x{5185}' . +'\x{5186}\x{5189}\x{518A}\x{518C}\x{518D}\x{518F}\x{5190}\x{5191}\x{5192}' . +'\x{5193}\x{5195}\x{5196}\x{5197}\x{5199}\x{51A0}\x{51A2}\x{51A4}\x{51A5}' . +'\x{51A6}\x{51A8}\x{51A9}\x{51AA}\x{51AB}\x{51AC}\x{51B0}\x{51B1}\x{51B2}' . +'\x{51B3}\x{51B4}\x{51B5}\x{51B6}\x{51B7}\x{51BD}\x{51C4}\x{51C5}\x{51C6}' . +'\x{51C9}\x{51CB}\x{51CC}\x{51CD}\x{51D6}\x{51DB}\x{51DC}\x{51DD}\x{51E0}' . +'\x{51E1}\x{51E6}\x{51E7}\x{51E9}\x{51EA}\x{51ED}\x{51F0}\x{51F1}\x{51F5}' . +'\x{51F6}\x{51F8}\x{51F9}\x{51FA}\x{51FD}\x{51FE}\x{5200}\x{5203}\x{5204}' . +'\x{5206}\x{5207}\x{5208}\x{520A}\x{520B}\x{520E}\x{5211}\x{5214}\x{5217}' . +'\x{521D}\x{5224}\x{5225}\x{5227}\x{5229}\x{522A}\x{522E}\x{5230}\x{5233}' . +'\x{5236}\x{5237}\x{5238}\x{5239}\x{523A}\x{523B}\x{5243}\x{5244}\x{5247}' . +'\x{524A}\x{524B}\x{524C}\x{524D}\x{524F}\x{5254}\x{5256}\x{525B}\x{525E}' . +'\x{5263}\x{5264}\x{5265}\x{5269}\x{526A}\x{526F}\x{5270}\x{5271}\x{5272}' . +'\x{5273}\x{5274}\x{5275}\x{527D}\x{527F}\x{5283}\x{5287}\x{5288}\x{5289}' . +'\x{528D}\x{5291}\x{5292}\x{5294}\x{529B}\x{529F}\x{52A0}\x{52A3}\x{52A9}' . +'\x{52AA}\x{52AB}\x{52AC}\x{52AD}\x{52B1}\x{52B4}\x{52B5}\x{52B9}\x{52BC}' . +'\x{52BE}\x{52C1}\x{52C3}\x{52C5}\x{52C7}\x{52C9}\x{52CD}\x{52D2}\x{52D5}' . +'\x{52D7}\x{52D8}\x{52D9}\x{52DD}\x{52DE}\x{52DF}\x{52E0}\x{52E2}\x{52E3}' . +'\x{52E4}\x{52E6}\x{52E7}\x{52F2}\x{52F3}\x{52F5}\x{52F8}\x{52F9}\x{52FA}' . +'\x{52FE}\x{52FF}\x{5301}\x{5302}\x{5305}\x{5306}\x{5308}\x{530D}\x{530F}' . +'\x{5310}\x{5315}\x{5316}\x{5317}\x{5319}\x{531A}\x{531D}\x{5320}\x{5321}' . +'\x{5323}\x{532A}\x{532F}\x{5331}\x{5333}\x{5338}\x{5339}\x{533A}\x{533B}' . +'\x{533F}\x{5340}\x{5341}\x{5343}\x{5345}\x{5346}\x{5347}\x{5348}\x{5349}' . +'\x{534A}\x{534D}\x{5351}\x{5352}\x{5353}\x{5354}\x{5357}\x{5358}\x{535A}' . +'\x{535C}\x{535E}\x{5360}\x{5366}\x{5369}\x{536E}\x{536F}\x{5370}\x{5371}' . +'\x{5373}\x{5374}\x{5375}\x{5377}\x{5378}\x{537B}\x{537F}\x{5382}\x{5384}' . +'\x{5396}\x{5398}\x{539A}\x{539F}\x{53A0}\x{53A5}\x{53A6}\x{53A8}\x{53A9}' . +'\x{53AD}\x{53AE}\x{53B0}\x{53B3}\x{53B6}\x{53BB}\x{53C2}\x{53C3}\x{53C8}' . +'\x{53C9}\x{53CA}\x{53CB}\x{53CC}\x{53CD}\x{53CE}\x{53D4}\x{53D6}\x{53D7}' . +'\x{53D9}\x{53DB}\x{53DF}\x{53E1}\x{53E2}\x{53E3}\x{53E4}\x{53E5}\x{53E8}' . +'\x{53E9}\x{53EA}\x{53EB}\x{53EC}\x{53ED}\x{53EE}\x{53EF}\x{53F0}\x{53F1}' . +'\x{53F2}\x{53F3}\x{53F6}\x{53F7}\x{53F8}\x{53FA}\x{5401}\x{5403}\x{5404}' . +'\x{5408}\x{5409}\x{540A}\x{540B}\x{540C}\x{540D}\x{540E}\x{540F}\x{5410}' . +'\x{5411}\x{541B}\x{541D}\x{541F}\x{5420}\x{5426}\x{5429}\x{542B}\x{542C}' . +'\x{542D}\x{542E}\x{5436}\x{5438}\x{5439}\x{543B}\x{543C}\x{543D}\x{543E}' . +'\x{5440}\x{5442}\x{5446}\x{5448}\x{5449}\x{544A}\x{544E}\x{5451}\x{545F}' . +'\x{5468}\x{546A}\x{5470}\x{5471}\x{5473}\x{5475}\x{5476}\x{5477}\x{547B}' . +'\x{547C}\x{547D}\x{5480}\x{5484}\x{5486}\x{548B}\x{548C}\x{548E}\x{548F}' . +'\x{5490}\x{5492}\x{54A2}\x{54A4}\x{54A5}\x{54A8}\x{54AB}\x{54AC}\x{54AF}' . +'\x{54B2}\x{54B3}\x{54B8}\x{54BC}\x{54BD}\x{54BE}\x{54C0}\x{54C1}\x{54C2}' . +'\x{54C4}\x{54C7}\x{54C8}\x{54C9}\x{54D8}\x{54E1}\x{54E2}\x{54E5}\x{54E6}' . +'\x{54E8}\x{54E9}\x{54ED}\x{54EE}\x{54F2}\x{54FA}\x{54FD}\x{5504}\x{5506}' . +'\x{5507}\x{550F}\x{5510}\x{5514}\x{5516}\x{552E}\x{552F}\x{5531}\x{5533}' . +'\x{5538}\x{5539}\x{553E}\x{5540}\x{5544}\x{5545}\x{5546}\x{554C}\x{554F}' . +'\x{5553}\x{5556}\x{5557}\x{555C}\x{555D}\x{5563}\x{557B}\x{557C}\x{557E}' . +'\x{5580}\x{5583}\x{5584}\x{5587}\x{5589}\x{558A}\x{558B}\x{5598}\x{5599}' . +'\x{559A}\x{559C}\x{559D}\x{559E}\x{559F}\x{55A7}\x{55A8}\x{55A9}\x{55AA}' . +'\x{55AB}\x{55AC}\x{55AE}\x{55B0}\x{55B6}\x{55C4}\x{55C5}\x{55C7}\x{55D4}' . +'\x{55DA}\x{55DC}\x{55DF}\x{55E3}\x{55E4}\x{55F7}\x{55F9}\x{55FD}\x{55FE}' . +'\x{5606}\x{5609}\x{5614}\x{5616}\x{5617}\x{5618}\x{561B}\x{5629}\x{562F}' . +'\x{5631}\x{5632}\x{5634}\x{5636}\x{5638}\x{5642}\x{564C}\x{564E}\x{5650}' . +'\x{565B}\x{5664}\x{5668}\x{566A}\x{566B}\x{566C}\x{5674}\x{5678}\x{567A}' . +'\x{5680}\x{5686}\x{5687}\x{568A}\x{568F}\x{5694}\x{56A0}\x{56A2}\x{56A5}' . +'\x{56AE}\x{56B4}\x{56B6}\x{56BC}\x{56C0}\x{56C1}\x{56C2}\x{56C3}\x{56C8}' . +'\x{56CE}\x{56D1}\x{56D3}\x{56D7}\x{56D8}\x{56DA}\x{56DB}\x{56DE}\x{56E0}' . +'\x{56E3}\x{56EE}\x{56F0}\x{56F2}\x{56F3}\x{56F9}\x{56FA}\x{56FD}\x{56FF}' . +'\x{5700}\x{5703}\x{5704}\x{5708}\x{5709}\x{570B}\x{570D}\x{570F}\x{5712}' . +'\x{5713}\x{5716}\x{5718}\x{571C}\x{571F}\x{5726}\x{5727}\x{5728}\x{572D}' . +'\x{5730}\x{5737}\x{5738}\x{573B}\x{5740}\x{5742}\x{5747}\x{574A}\x{574E}' . +'\x{574F}\x{5750}\x{5751}\x{5761}\x{5764}\x{5766}\x{5769}\x{576A}\x{577F}' . +'\x{5782}\x{5788}\x{5789}\x{578B}\x{5793}\x{57A0}\x{57A2}\x{57A3}\x{57A4}' . +'\x{57AA}\x{57B0}\x{57B3}\x{57C0}\x{57C3}\x{57C6}\x{57CB}\x{57CE}\x{57D2}' . +'\x{57D3}\x{57D4}\x{57D6}\x{57DC}\x{57DF}\x{57E0}\x{57E3}\x{57F4}\x{57F7}' . +'\x{57F9}\x{57FA}\x{57FC}\x{5800}\x{5802}\x{5805}\x{5806}\x{580A}\x{580B}' . +'\x{5815}\x{5819}\x{581D}\x{5821}\x{5824}\x{582A}\x{582F}\x{5830}\x{5831}' . +'\x{5834}\x{5835}\x{583A}\x{583D}\x{5840}\x{5841}\x{584A}\x{584B}\x{5851}' . +'\x{5852}\x{5854}\x{5857}\x{5858}\x{5859}\x{585A}\x{585E}\x{5862}\x{5869}' . +'\x{586B}\x{5870}\x{5872}\x{5875}\x{5879}\x{587E}\x{5883}\x{5885}\x{5893}' . +'\x{5897}\x{589C}\x{589F}\x{58A8}\x{58AB}\x{58AE}\x{58B3}\x{58B8}\x{58B9}' . +'\x{58BA}\x{58BB}\x{58BE}\x{58C1}\x{58C5}\x{58C7}\x{58CA}\x{58CC}\x{58D1}' . +'\x{58D3}\x{58D5}\x{58D7}\x{58D8}\x{58D9}\x{58DC}\x{58DE}\x{58DF}\x{58E4}' . +'\x{58E5}\x{58EB}\x{58EC}\x{58EE}\x{58EF}\x{58F0}\x{58F1}\x{58F2}\x{58F7}' . +'\x{58F9}\x{58FA}\x{58FB}\x{58FC}\x{58FD}\x{5902}\x{5909}\x{590A}\x{590F}' . +'\x{5910}\x{5915}\x{5916}\x{5918}\x{5919}\x{591A}\x{591B}\x{591C}\x{5922}' . +'\x{5925}\x{5927}\x{5929}\x{592A}\x{592B}\x{592C}\x{592D}\x{592E}\x{5931}' . +'\x{5932}\x{5937}\x{5938}\x{593E}\x{5944}\x{5947}\x{5948}\x{5949}\x{594E}' . +'\x{594F}\x{5950}\x{5951}\x{5954}\x{5955}\x{5957}\x{5958}\x{595A}\x{5960}' . +'\x{5962}\x{5965}\x{5967}\x{5968}\x{5969}\x{596A}\x{596C}\x{596E}\x{5973}' . +'\x{5974}\x{5978}\x{597D}\x{5981}\x{5982}\x{5983}\x{5984}\x{598A}\x{598D}' . +'\x{5993}\x{5996}\x{5999}\x{599B}\x{599D}\x{59A3}\x{59A5}\x{59A8}\x{59AC}' . +'\x{59B2}\x{59B9}\x{59BB}\x{59BE}\x{59C6}\x{59C9}\x{59CB}\x{59D0}\x{59D1}' . +'\x{59D3}\x{59D4}\x{59D9}\x{59DA}\x{59DC}\x{59E5}\x{59E6}\x{59E8}\x{59EA}' . +'\x{59EB}\x{59F6}\x{59FB}\x{59FF}\x{5A01}\x{5A03}\x{5A09}\x{5A11}\x{5A18}' . +'\x{5A1A}\x{5A1C}\x{5A1F}\x{5A20}\x{5A25}\x{5A29}\x{5A2F}\x{5A35}\x{5A36}' . +'\x{5A3C}\x{5A40}\x{5A41}\x{5A46}\x{5A49}\x{5A5A}\x{5A62}\x{5A66}\x{5A6A}' . +'\x{5A6C}\x{5A7F}\x{5A92}\x{5A9A}\x{5A9B}\x{5ABC}\x{5ABD}\x{5ABE}\x{5AC1}' . +'\x{5AC2}\x{5AC9}\x{5ACB}\x{5ACC}\x{5AD0}\x{5AD6}\x{5AD7}\x{5AE1}\x{5AE3}' . +'\x{5AE6}\x{5AE9}\x{5AFA}\x{5AFB}\x{5B09}\x{5B0B}\x{5B0C}\x{5B16}\x{5B22}' . +'\x{5B2A}\x{5B2C}\x{5B30}\x{5B32}\x{5B36}\x{5B3E}\x{5B40}\x{5B43}\x{5B45}' . +'\x{5B50}\x{5B51}\x{5B54}\x{5B55}\x{5B57}\x{5B58}\x{5B5A}\x{5B5B}\x{5B5C}' . +'\x{5B5D}\x{5B5F}\x{5B63}\x{5B64}\x{5B65}\x{5B66}\x{5B69}\x{5B6B}\x{5B70}' . +'\x{5B71}\x{5B73}\x{5B75}\x{5B78}\x{5B7A}\x{5B80}\x{5B83}\x{5B85}\x{5B87}' . +'\x{5B88}\x{5B89}\x{5B8B}\x{5B8C}\x{5B8D}\x{5B8F}\x{5B95}\x{5B97}\x{5B98}' . +'\x{5B99}\x{5B9A}\x{5B9B}\x{5B9C}\x{5B9D}\x{5B9F}\x{5BA2}\x{5BA3}\x{5BA4}' . +'\x{5BA5}\x{5BA6}\x{5BAE}\x{5BB0}\x{5BB3}\x{5BB4}\x{5BB5}\x{5BB6}\x{5BB8}' . +'\x{5BB9}\x{5BBF}\x{5BC2}\x{5BC3}\x{5BC4}\x{5BC5}\x{5BC6}\x{5BC7}\x{5BC9}' . +'\x{5BCC}\x{5BD0}\x{5BD2}\x{5BD3}\x{5BD4}\x{5BDB}\x{5BDD}\x{5BDE}\x{5BDF}' . +'\x{5BE1}\x{5BE2}\x{5BE4}\x{5BE5}\x{5BE6}\x{5BE7}\x{5BE8}\x{5BE9}\x{5BEB}' . +'\x{5BEE}\x{5BF0}\x{5BF3}\x{5BF5}\x{5BF6}\x{5BF8}\x{5BFA}\x{5BFE}\x{5BFF}' . +'\x{5C01}\x{5C02}\x{5C04}\x{5C05}\x{5C06}\x{5C07}\x{5C08}\x{5C09}\x{5C0A}' . +'\x{5C0B}\x{5C0D}\x{5C0E}\x{5C0F}\x{5C11}\x{5C13}\x{5C16}\x{5C1A}\x{5C20}' . +'\x{5C22}\x{5C24}\x{5C28}\x{5C2D}\x{5C31}\x{5C38}\x{5C39}\x{5C3A}\x{5C3B}' . +'\x{5C3C}\x{5C3D}\x{5C3E}\x{5C3F}\x{5C40}\x{5C41}\x{5C45}\x{5C46}\x{5C48}' . +'\x{5C4A}\x{5C4B}\x{5C4D}\x{5C4E}\x{5C4F}\x{5C50}\x{5C51}\x{5C53}\x{5C55}' . +'\x{5C5E}\x{5C60}\x{5C61}\x{5C64}\x{5C65}\x{5C6C}\x{5C6E}\x{5C6F}\x{5C71}' . +'\x{5C76}\x{5C79}\x{5C8C}\x{5C90}\x{5C91}\x{5C94}\x{5CA1}\x{5CA8}\x{5CA9}' . +'\x{5CAB}\x{5CAC}\x{5CB1}\x{5CB3}\x{5CB6}\x{5CB7}\x{5CB8}\x{5CBB}\x{5CBC}' . +'\x{5CBE}\x{5CC5}\x{5CC7}\x{5CD9}\x{5CE0}\x{5CE1}\x{5CE8}\x{5CE9}\x{5CEA}' . +'\x{5CED}\x{5CEF}\x{5CF0}\x{5CF6}\x{5CFA}\x{5CFB}\x{5CFD}\x{5D07}\x{5D0B}' . +'\x{5D0E}\x{5D11}\x{5D14}\x{5D15}\x{5D16}\x{5D17}\x{5D18}\x{5D19}\x{5D1A}' . +'\x{5D1B}\x{5D1F}\x{5D22}\x{5D29}\x{5D4B}\x{5D4C}\x{5D4E}\x{5D50}\x{5D52}' . +'\x{5D5C}\x{5D69}\x{5D6C}\x{5D6F}\x{5D73}\x{5D76}\x{5D82}\x{5D84}\x{5D87}' . +'\x{5D8B}\x{5D8C}\x{5D90}\x{5D9D}\x{5DA2}\x{5DAC}\x{5DAE}\x{5DB7}\x{5DBA}' . +'\x{5DBC}\x{5DBD}\x{5DC9}\x{5DCC}\x{5DCD}\x{5DD2}\x{5DD3}\x{5DD6}\x{5DDB}' . +'\x{5DDD}\x{5DDE}\x{5DE1}\x{5DE3}\x{5DE5}\x{5DE6}\x{5DE7}\x{5DE8}\x{5DEB}' . +'\x{5DEE}\x{5DF1}\x{5DF2}\x{5DF3}\x{5DF4}\x{5DF5}\x{5DF7}\x{5DFB}\x{5DFD}' . +'\x{5DFE}\x{5E02}\x{5E03}\x{5E06}\x{5E0B}\x{5E0C}\x{5E11}\x{5E16}\x{5E19}' . +'\x{5E1A}\x{5E1B}\x{5E1D}\x{5E25}\x{5E2B}\x{5E2D}\x{5E2F}\x{5E30}\x{5E33}' . +'\x{5E36}\x{5E37}\x{5E38}\x{5E3D}\x{5E40}\x{5E43}\x{5E44}\x{5E45}\x{5E47}' . +'\x{5E4C}\x{5E4E}\x{5E54}\x{5E55}\x{5E57}\x{5E5F}\x{5E61}\x{5E62}\x{5E63}' . +'\x{5E64}\x{5E72}\x{5E73}\x{5E74}\x{5E75}\x{5E76}\x{5E78}\x{5E79}\x{5E7A}' . +'\x{5E7B}\x{5E7C}\x{5E7D}\x{5E7E}\x{5E7F}\x{5E81}\x{5E83}\x{5E84}\x{5E87}' . +'\x{5E8A}\x{5E8F}\x{5E95}\x{5E96}\x{5E97}\x{5E9A}\x{5E9C}\x{5EA0}\x{5EA6}' . +'\x{5EA7}\x{5EAB}\x{5EAD}\x{5EB5}\x{5EB6}\x{5EB7}\x{5EB8}\x{5EC1}\x{5EC2}' . +'\x{5EC3}\x{5EC8}\x{5EC9}\x{5ECA}\x{5ECF}\x{5ED0}\x{5ED3}\x{5ED6}\x{5EDA}' . +'\x{5EDB}\x{5EDD}\x{5EDF}\x{5EE0}\x{5EE1}\x{5EE2}\x{5EE3}\x{5EE8}\x{5EE9}' . +'\x{5EEC}\x{5EF0}\x{5EF1}\x{5EF3}\x{5EF4}\x{5EF6}\x{5EF7}\x{5EF8}\x{5EFA}' . +'\x{5EFB}\x{5EFC}\x{5EFE}\x{5EFF}\x{5F01}\x{5F03}\x{5F04}\x{5F09}\x{5F0A}' . +'\x{5F0B}\x{5F0C}\x{5F0D}\x{5F0F}\x{5F10}\x{5F11}\x{5F13}\x{5F14}\x{5F15}' . +'\x{5F16}\x{5F17}\x{5F18}\x{5F1B}\x{5F1F}\x{5F25}\x{5F26}\x{5F27}\x{5F29}' . +'\x{5F2D}\x{5F2F}\x{5F31}\x{5F35}\x{5F37}\x{5F38}\x{5F3C}\x{5F3E}\x{5F41}' . +'\x{5F48}\x{5F4A}\x{5F4C}\x{5F4E}\x{5F51}\x{5F53}\x{5F56}\x{5F57}\x{5F59}' . +'\x{5F5C}\x{5F5D}\x{5F61}\x{5F62}\x{5F66}\x{5F69}\x{5F6A}\x{5F6B}\x{5F6C}' . +'\x{5F6D}\x{5F70}\x{5F71}\x{5F73}\x{5F77}\x{5F79}\x{5F7C}\x{5F7F}\x{5F80}' . +'\x{5F81}\x{5F82}\x{5F83}\x{5F84}\x{5F85}\x{5F87}\x{5F88}\x{5F8A}\x{5F8B}' . +'\x{5F8C}\x{5F90}\x{5F91}\x{5F92}\x{5F93}\x{5F97}\x{5F98}\x{5F99}\x{5F9E}' . +'\x{5FA0}\x{5FA1}\x{5FA8}\x{5FA9}\x{5FAA}\x{5FAD}\x{5FAE}\x{5FB3}\x{5FB4}' . +'\x{5FB9}\x{5FBC}\x{5FBD}\x{5FC3}\x{5FC5}\x{5FCC}\x{5FCD}\x{5FD6}\x{5FD7}' . +'\x{5FD8}\x{5FD9}\x{5FDC}\x{5FDD}\x{5FE0}\x{5FE4}\x{5FEB}\x{5FF0}\x{5FF1}' . +'\x{5FF5}\x{5FF8}\x{5FFB}\x{5FFD}\x{5FFF}\x{600E}\x{600F}\x{6010}\x{6012}' . +'\x{6015}\x{6016}\x{6019}\x{601B}\x{601C}\x{601D}\x{6020}\x{6021}\x{6025}' . +'\x{6026}\x{6027}\x{6028}\x{6029}\x{602A}\x{602B}\x{602F}\x{6031}\x{603A}' . +'\x{6041}\x{6042}\x{6043}\x{6046}\x{604A}\x{604B}\x{604D}\x{6050}\x{6052}' . +'\x{6055}\x{6059}\x{605A}\x{605F}\x{6060}\x{6062}\x{6063}\x{6064}\x{6065}' . +'\x{6068}\x{6069}\x{606A}\x{606B}\x{606C}\x{606D}\x{606F}\x{6070}\x{6075}' . +'\x{6077}\x{6081}\x{6083}\x{6084}\x{6089}\x{608B}\x{608C}\x{608D}\x{6092}' . +'\x{6094}\x{6096}\x{6097}\x{609A}\x{609B}\x{609F}\x{60A0}\x{60A3}\x{60A6}' . +'\x{60A7}\x{60A9}\x{60AA}\x{60B2}\x{60B3}\x{60B4}\x{60B5}\x{60B6}\x{60B8}' . +'\x{60BC}\x{60BD}\x{60C5}\x{60C6}\x{60C7}\x{60D1}\x{60D3}\x{60D8}\x{60DA}' . +'\x{60DC}\x{60DF}\x{60E0}\x{60E1}\x{60E3}\x{60E7}\x{60E8}\x{60F0}\x{60F1}' . +'\x{60F3}\x{60F4}\x{60F6}\x{60F7}\x{60F9}\x{60FA}\x{60FB}\x{6100}\x{6101}' . +'\x{6103}\x{6106}\x{6108}\x{6109}\x{610D}\x{610E}\x{610F}\x{6115}\x{611A}' . +'\x{611B}\x{611F}\x{6121}\x{6127}\x{6128}\x{612C}\x{6134}\x{613C}\x{613D}' . +'\x{613E}\x{613F}\x{6142}\x{6144}\x{6147}\x{6148}\x{614A}\x{614B}\x{614C}' . +'\x{614D}\x{614E}\x{6153}\x{6155}\x{6158}\x{6159}\x{615A}\x{615D}\x{615F}' . +'\x{6162}\x{6163}\x{6165}\x{6167}\x{6168}\x{616B}\x{616E}\x{616F}\x{6170}' . +'\x{6171}\x{6173}\x{6174}\x{6175}\x{6176}\x{6177}\x{617E}\x{6182}\x{6187}' . +'\x{618A}\x{618E}\x{6190}\x{6191}\x{6194}\x{6196}\x{6199}\x{619A}\x{61A4}' . +'\x{61A7}\x{61A9}\x{61AB}\x{61AC}\x{61AE}\x{61B2}\x{61B6}\x{61BA}\x{61BE}' . +'\x{61C3}\x{61C6}\x{61C7}\x{61C8}\x{61C9}\x{61CA}\x{61CB}\x{61CC}\x{61CD}' . +'\x{61D0}\x{61E3}\x{61E6}\x{61F2}\x{61F4}\x{61F6}\x{61F7}\x{61F8}\x{61FA}' . +'\x{61FC}\x{61FD}\x{61FE}\x{61FF}\x{6200}\x{6208}\x{6209}\x{620A}\x{620C}' . +'\x{620D}\x{620E}\x{6210}\x{6211}\x{6212}\x{6214}\x{6216}\x{621A}\x{621B}' . +'\x{621D}\x{621E}\x{621F}\x{6221}\x{6226}\x{622A}\x{622E}\x{622F}\x{6230}' . +'\x{6232}\x{6233}\x{6234}\x{6238}\x{623B}\x{623F}\x{6240}\x{6241}\x{6247}' . +'\x{6248}\x{6249}\x{624B}\x{624D}\x{624E}\x{6253}\x{6255}\x{6258}\x{625B}' . +'\x{625E}\x{6260}\x{6263}\x{6268}\x{626E}\x{6271}\x{6276}\x{6279}\x{627C}' . +'\x{627E}\x{627F}\x{6280}\x{6282}\x{6283}\x{6284}\x{6289}\x{628A}\x{6291}' . +'\x{6292}\x{6293}\x{6294}\x{6295}\x{6296}\x{6297}\x{6298}\x{629B}\x{629C}' . +'\x{629E}\x{62AB}\x{62AC}\x{62B1}\x{62B5}\x{62B9}\x{62BB}\x{62BC}\x{62BD}' . +'\x{62C2}\x{62C5}\x{62C6}\x{62C7}\x{62C8}\x{62C9}\x{62CA}\x{62CC}\x{62CD}' . +'\x{62CF}\x{62D0}\x{62D1}\x{62D2}\x{62D3}\x{62D4}\x{62D7}\x{62D8}\x{62D9}' . +'\x{62DB}\x{62DC}\x{62DD}\x{62E0}\x{62E1}\x{62EC}\x{62ED}\x{62EE}\x{62EF}' . +'\x{62F1}\x{62F3}\x{62F5}\x{62F6}\x{62F7}\x{62FE}\x{62FF}\x{6301}\x{6302}' . +'\x{6307}\x{6308}\x{6309}\x{630C}\x{6311}\x{6319}\x{631F}\x{6327}\x{6328}' . +'\x{632B}\x{632F}\x{633A}\x{633D}\x{633E}\x{633F}\x{6349}\x{634C}\x{634D}' . +'\x{634F}\x{6350}\x{6355}\x{6357}\x{635C}\x{6367}\x{6368}\x{6369}\x{636B}' . +'\x{636E}\x{6372}\x{6376}\x{6377}\x{637A}\x{637B}\x{6380}\x{6383}\x{6388}' . +'\x{6389}\x{638C}\x{638E}\x{638F}\x{6392}\x{6396}\x{6398}\x{639B}\x{639F}' . +'\x{63A0}\x{63A1}\x{63A2}\x{63A3}\x{63A5}\x{63A7}\x{63A8}\x{63A9}\x{63AA}' . +'\x{63AB}\x{63AC}\x{63B2}\x{63B4}\x{63B5}\x{63BB}\x{63BE}\x{63C0}\x{63C3}' . +'\x{63C4}\x{63C6}\x{63C9}\x{63CF}\x{63D0}\x{63D2}\x{63D6}\x{63DA}\x{63DB}' . +'\x{63E1}\x{63E3}\x{63E9}\x{63EE}\x{63F4}\x{63F6}\x{63FA}\x{6406}\x{640D}' . +'\x{640F}\x{6413}\x{6416}\x{6417}\x{641C}\x{6426}\x{6428}\x{642C}\x{642D}' . +'\x{6434}\x{6436}\x{643A}\x{643E}\x{6442}\x{644E}\x{6458}\x{6467}\x{6469}' . +'\x{646F}\x{6476}\x{6478}\x{647A}\x{6483}\x{6488}\x{6492}\x{6493}\x{6495}' . +'\x{649A}\x{649E}\x{64A4}\x{64A5}\x{64A9}\x{64AB}\x{64AD}\x{64AE}\x{64B0}' . +'\x{64B2}\x{64B9}\x{64BB}\x{64BC}\x{64C1}\x{64C2}\x{64C5}\x{64C7}\x{64CD}' . +'\x{64D2}\x{64D4}\x{64D8}\x{64DA}\x{64E0}\x{64E1}\x{64E2}\x{64E3}\x{64E6}' . +'\x{64E7}\x{64EC}\x{64EF}\x{64F1}\x{64F2}\x{64F4}\x{64F6}\x{64FA}\x{64FD}' . +'\x{64FE}\x{6500}\x{6505}\x{6518}\x{651C}\x{651D}\x{6523}\x{6524}\x{652A}' . +'\x{652B}\x{652C}\x{652F}\x{6534}\x{6535}\x{6536}\x{6537}\x{6538}\x{6539}' . +'\x{653B}\x{653E}\x{653F}\x{6545}\x{6548}\x{654D}\x{654F}\x{6551}\x{6555}' . +'\x{6556}\x{6557}\x{6558}\x{6559}\x{655D}\x{655E}\x{6562}\x{6563}\x{6566}' . +'\x{656C}\x{6570}\x{6572}\x{6574}\x{6575}\x{6577}\x{6578}\x{6582}\x{6583}' . +'\x{6587}\x{6588}\x{6589}\x{658C}\x{658E}\x{6590}\x{6591}\x{6597}\x{6599}' . +'\x{659B}\x{659C}\x{659F}\x{65A1}\x{65A4}\x{65A5}\x{65A7}\x{65AB}\x{65AC}' . +'\x{65AD}\x{65AF}\x{65B0}\x{65B7}\x{65B9}\x{65BC}\x{65BD}\x{65C1}\x{65C3}' . +'\x{65C4}\x{65C5}\x{65C6}\x{65CB}\x{65CC}\x{65CF}\x{65D2}\x{65D7}\x{65D9}' . +'\x{65DB}\x{65E0}\x{65E1}\x{65E2}\x{65E5}\x{65E6}\x{65E7}\x{65E8}\x{65E9}' . +'\x{65EC}\x{65ED}\x{65F1}\x{65FA}\x{65FB}\x{6602}\x{6603}\x{6606}\x{6607}' . +'\x{660A}\x{660C}\x{660E}\x{660F}\x{6613}\x{6614}\x{661C}\x{661F}\x{6620}' . +'\x{6625}\x{6627}\x{6628}\x{662D}\x{662F}\x{6634}\x{6635}\x{6636}\x{663C}' . +'\x{663F}\x{6641}\x{6642}\x{6643}\x{6644}\x{6649}\x{664B}\x{664F}\x{6652}' . +'\x{665D}\x{665E}\x{665F}\x{6662}\x{6664}\x{6666}\x{6667}\x{6668}\x{6669}' . +'\x{666E}\x{666F}\x{6670}\x{6674}\x{6676}\x{667A}\x{6681}\x{6683}\x{6684}' . +'\x{6687}\x{6688}\x{6689}\x{668E}\x{6691}\x{6696}\x{6697}\x{6698}\x{669D}' . +'\x{66A2}\x{66A6}\x{66AB}\x{66AE}\x{66B4}\x{66B8}\x{66B9}\x{66BC}\x{66BE}' . +'\x{66C1}\x{66C4}\x{66C7}\x{66C9}\x{66D6}\x{66D9}\x{66DA}\x{66DC}\x{66DD}' . +'\x{66E0}\x{66E6}\x{66E9}\x{66F0}\x{66F2}\x{66F3}\x{66F4}\x{66F5}\x{66F7}' . +'\x{66F8}\x{66F9}\x{66FC}\x{66FD}\x{66FE}\x{66FF}\x{6700}\x{6703}\x{6708}' . +'\x{6709}\x{670B}\x{670D}\x{670F}\x{6714}\x{6715}\x{6716}\x{6717}\x{671B}' . +'\x{671D}\x{671E}\x{671F}\x{6726}\x{6727}\x{6728}\x{672A}\x{672B}\x{672C}' . +'\x{672D}\x{672E}\x{6731}\x{6734}\x{6736}\x{6737}\x{6738}\x{673A}\x{673D}' . +'\x{673F}\x{6741}\x{6746}\x{6749}\x{674E}\x{674F}\x{6750}\x{6751}\x{6753}' . +'\x{6756}\x{6759}\x{675C}\x{675E}\x{675F}\x{6760}\x{6761}\x{6762}\x{6763}' . +'\x{6764}\x{6765}\x{676A}\x{676D}\x{676F}\x{6770}\x{6771}\x{6772}\x{6773}' . +'\x{6775}\x{6777}\x{677C}\x{677E}\x{677F}\x{6785}\x{6787}\x{6789}\x{678B}' . +'\x{678C}\x{6790}\x{6795}\x{6797}\x{679A}\x{679C}\x{679D}\x{67A0}\x{67A1}' . +'\x{67A2}\x{67A6}\x{67A9}\x{67AF}\x{67B3}\x{67B4}\x{67B6}\x{67B7}\x{67B8}' . +'\x{67B9}\x{67C1}\x{67C4}\x{67C6}\x{67CA}\x{67CE}\x{67CF}\x{67D0}\x{67D1}' . +'\x{67D3}\x{67D4}\x{67D8}\x{67DA}\x{67DD}\x{67DE}\x{67E2}\x{67E4}\x{67E7}' . +'\x{67E9}\x{67EC}\x{67EE}\x{67EF}\x{67F1}\x{67F3}\x{67F4}\x{67F5}\x{67FB}' . +'\x{67FE}\x{67FF}\x{6802}\x{6803}\x{6804}\x{6813}\x{6816}\x{6817}\x{681E}' . +'\x{6821}\x{6822}\x{6829}\x{682A}\x{682B}\x{6832}\x{6834}\x{6838}\x{6839}' . +'\x{683C}\x{683D}\x{6840}\x{6841}\x{6842}\x{6843}\x{6846}\x{6848}\x{684D}' . +'\x{684E}\x{6850}\x{6851}\x{6853}\x{6854}\x{6859}\x{685C}\x{685D}\x{685F}' . +'\x{6863}\x{6867}\x{6874}\x{6876}\x{6877}\x{687E}\x{687F}\x{6881}\x{6883}' . +'\x{6885}\x{688D}\x{688F}\x{6893}\x{6894}\x{6897}\x{689B}\x{689D}\x{689F}' . +'\x{68A0}\x{68A2}\x{68A6}\x{68A7}\x{68A8}\x{68AD}\x{68AF}\x{68B0}\x{68B1}' . +'\x{68B3}\x{68B5}\x{68B6}\x{68B9}\x{68BA}\x{68BC}\x{68C4}\x{68C6}\x{68C9}' . +'\x{68CA}\x{68CB}\x{68CD}\x{68D2}\x{68D4}\x{68D5}\x{68D7}\x{68D8}\x{68DA}' . +'\x{68DF}\x{68E0}\x{68E1}\x{68E3}\x{68E7}\x{68EE}\x{68EF}\x{68F2}\x{68F9}' . +'\x{68FA}\x{6900}\x{6901}\x{6904}\x{6905}\x{6908}\x{690B}\x{690C}\x{690D}' . +'\x{690E}\x{690F}\x{6912}\x{6919}\x{691A}\x{691B}\x{691C}\x{6921}\x{6922}' . +'\x{6923}\x{6925}\x{6926}\x{6928}\x{692A}\x{6930}\x{6934}\x{6936}\x{6939}' . +'\x{693D}\x{693F}\x{694A}\x{6953}\x{6954}\x{6955}\x{6959}\x{695A}\x{695C}' . +'\x{695D}\x{695E}\x{6960}\x{6961}\x{6962}\x{696A}\x{696B}\x{696D}\x{696E}' . +'\x{696F}\x{6973}\x{6974}\x{6975}\x{6977}\x{6978}\x{6979}\x{697C}\x{697D}' . +'\x{697E}\x{6981}\x{6982}\x{698A}\x{698E}\x{6991}\x{6994}\x{6995}\x{699B}' . +'\x{699C}\x{69A0}\x{69A7}\x{69AE}\x{69B1}\x{69B2}\x{69B4}\x{69BB}\x{69BE}' . +'\x{69BF}\x{69C1}\x{69C3}\x{69C7}\x{69CA}\x{69CB}\x{69CC}\x{69CD}\x{69CE}' . +'\x{69D0}\x{69D3}\x{69D8}\x{69D9}\x{69DD}\x{69DE}\x{69E7}\x{69E8}\x{69EB}' . +'\x{69ED}\x{69F2}\x{69F9}\x{69FB}\x{69FD}\x{69FF}\x{6A02}\x{6A05}\x{6A0A}' . +'\x{6A0B}\x{6A0C}\x{6A12}\x{6A13}\x{6A14}\x{6A17}\x{6A19}\x{6A1B}\x{6A1E}' . +'\x{6A1F}\x{6A21}\x{6A22}\x{6A23}\x{6A29}\x{6A2A}\x{6A2B}\x{6A2E}\x{6A35}' . +'\x{6A36}\x{6A38}\x{6A39}\x{6A3A}\x{6A3D}\x{6A44}\x{6A47}\x{6A48}\x{6A4B}' . +'\x{6A58}\x{6A59}\x{6A5F}\x{6A61}\x{6A62}\x{6A66}\x{6A72}\x{6A78}\x{6A7F}' . +'\x{6A80}\x{6A84}\x{6A8D}\x{6A8E}\x{6A90}\x{6A97}\x{6A9C}\x{6AA0}\x{6AA2}' . +'\x{6AA3}\x{6AAA}\x{6AAC}\x{6AAE}\x{6AB3}\x{6AB8}\x{6ABB}\x{6AC1}\x{6AC2}' . +'\x{6AC3}\x{6AD1}\x{6AD3}\x{6ADA}\x{6ADB}\x{6ADE}\x{6ADF}\x{6AE8}\x{6AEA}' . +'\x{6AFA}\x{6AFB}\x{6B04}\x{6B05}\x{6B0A}\x{6B12}\x{6B16}\x{6B1D}\x{6B1F}' . +'\x{6B20}\x{6B21}\x{6B23}\x{6B27}\x{6B32}\x{6B37}\x{6B38}\x{6B39}\x{6B3A}' . +'\x{6B3D}\x{6B3E}\x{6B43}\x{6B47}\x{6B49}\x{6B4C}\x{6B4E}\x{6B50}\x{6B53}' . +'\x{6B54}\x{6B59}\x{6B5B}\x{6B5F}\x{6B61}\x{6B62}\x{6B63}\x{6B64}\x{6B66}' . +'\x{6B69}\x{6B6A}\x{6B6F}\x{6B73}\x{6B74}\x{6B78}\x{6B79}\x{6B7B}\x{6B7F}' . +'\x{6B80}\x{6B83}\x{6B84}\x{6B86}\x{6B89}\x{6B8A}\x{6B8B}\x{6B8D}\x{6B95}' . +'\x{6B96}\x{6B98}\x{6B9E}\x{6BA4}\x{6BAA}\x{6BAB}\x{6BAF}\x{6BB1}\x{6BB2}' . +'\x{6BB3}\x{6BB4}\x{6BB5}\x{6BB7}\x{6BBA}\x{6BBB}\x{6BBC}\x{6BBF}\x{6BC0}' . +'\x{6BC5}\x{6BC6}\x{6BCB}\x{6BCD}\x{6BCE}\x{6BD2}\x{6BD3}\x{6BD4}\x{6BD8}' . +'\x{6BDB}\x{6BDF}\x{6BEB}\x{6BEC}\x{6BEF}\x{6BF3}\x{6C08}\x{6C0F}\x{6C11}' . +'\x{6C13}\x{6C14}\x{6C17}\x{6C1B}\x{6C23}\x{6C24}\x{6C34}\x{6C37}\x{6C38}' . +'\x{6C3E}\x{6C40}\x{6C41}\x{6C42}\x{6C4E}\x{6C50}\x{6C55}\x{6C57}\x{6C5A}' . +'\x{6C5D}\x{6C5E}\x{6C5F}\x{6C60}\x{6C62}\x{6C68}\x{6C6A}\x{6C70}\x{6C72}' . +'\x{6C73}\x{6C7A}\x{6C7D}\x{6C7E}\x{6C81}\x{6C82}\x{6C83}\x{6C88}\x{6C8C}' . +'\x{6C8D}\x{6C90}\x{6C92}\x{6C93}\x{6C96}\x{6C99}\x{6C9A}\x{6C9B}\x{6CA1}' . +'\x{6CA2}\x{6CAB}\x{6CAE}\x{6CB1}\x{6CB3}\x{6CB8}\x{6CB9}\x{6CBA}\x{6CBB}' . +'\x{6CBC}\x{6CBD}\x{6CBE}\x{6CBF}\x{6CC1}\x{6CC4}\x{6CC5}\x{6CC9}\x{6CCA}' . +'\x{6CCC}\x{6CD3}\x{6CD5}\x{6CD7}\x{6CD9}\x{6CDB}\x{6CDD}\x{6CE1}\x{6CE2}' . +'\x{6CE3}\x{6CE5}\x{6CE8}\x{6CEA}\x{6CEF}\x{6CF0}\x{6CF1}\x{6CF3}\x{6D0B}' . +'\x{6D0C}\x{6D12}\x{6D17}\x{6D19}\x{6D1B}\x{6D1E}\x{6D1F}\x{6D25}\x{6D29}' . +'\x{6D2A}\x{6D2B}\x{6D32}\x{6D33}\x{6D35}\x{6D36}\x{6D38}\x{6D3B}\x{6D3D}' . +'\x{6D3E}\x{6D41}\x{6D44}\x{6D45}\x{6D59}\x{6D5A}\x{6D5C}\x{6D63}\x{6D64}' . +'\x{6D66}\x{6D69}\x{6D6A}\x{6D6C}\x{6D6E}\x{6D74}\x{6D77}\x{6D78}\x{6D79}' . +'\x{6D85}\x{6D88}\x{6D8C}\x{6D8E}\x{6D93}\x{6D95}\x{6D99}\x{6D9B}\x{6D9C}' . +'\x{6DAF}\x{6DB2}\x{6DB5}\x{6DB8}\x{6DBC}\x{6DC0}\x{6DC5}\x{6DC6}\x{6DC7}' . +'\x{6DCB}\x{6DCC}\x{6DD1}\x{6DD2}\x{6DD5}\x{6DD8}\x{6DD9}\x{6DDE}\x{6DE1}' . +'\x{6DE4}\x{6DE6}\x{6DE8}\x{6DEA}\x{6DEB}\x{6DEC}\x{6DEE}\x{6DF1}\x{6DF3}' . +'\x{6DF5}\x{6DF7}\x{6DF9}\x{6DFA}\x{6DFB}\x{6E05}\x{6E07}\x{6E08}\x{6E09}' . +'\x{6E0A}\x{6E0B}\x{6E13}\x{6E15}\x{6E19}\x{6E1A}\x{6E1B}\x{6E1D}\x{6E1F}' . +'\x{6E20}\x{6E21}\x{6E23}\x{6E24}\x{6E25}\x{6E26}\x{6E29}\x{6E2B}\x{6E2C}' . +'\x{6E2D}\x{6E2E}\x{6E2F}\x{6E38}\x{6E3A}\x{6E3E}\x{6E43}\x{6E4A}\x{6E4D}' . +'\x{6E4E}\x{6E56}\x{6E58}\x{6E5B}\x{6E5F}\x{6E67}\x{6E6B}\x{6E6E}\x{6E6F}' . +'\x{6E72}\x{6E76}\x{6E7E}\x{6E7F}\x{6E80}\x{6E82}\x{6E8C}\x{6E8F}\x{6E90}' . +'\x{6E96}\x{6E98}\x{6E9C}\x{6E9D}\x{6E9F}\x{6EA2}\x{6EA5}\x{6EAA}\x{6EAF}' . +'\x{6EB2}\x{6EB6}\x{6EB7}\x{6EBA}\x{6EBD}\x{6EC2}\x{6EC4}\x{6EC5}\x{6EC9}' . +'\x{6ECB}\x{6ECC}\x{6ED1}\x{6ED3}\x{6ED4}\x{6ED5}\x{6EDD}\x{6EDE}\x{6EEC}' . +'\x{6EEF}\x{6EF2}\x{6EF4}\x{6EF7}\x{6EF8}\x{6EFE}\x{6EFF}\x{6F01}\x{6F02}' . +'\x{6F06}\x{6F09}\x{6F0F}\x{6F11}\x{6F13}\x{6F14}\x{6F15}\x{6F20}\x{6F22}' . +'\x{6F23}\x{6F2B}\x{6F2C}\x{6F31}\x{6F32}\x{6F38}\x{6F3E}\x{6F3F}\x{6F41}' . +'\x{6F45}\x{6F54}\x{6F58}\x{6F5B}\x{6F5C}\x{6F5F}\x{6F64}\x{6F66}\x{6F6D}' . +'\x{6F6E}\x{6F6F}\x{6F70}\x{6F74}\x{6F78}\x{6F7A}\x{6F7C}\x{6F80}\x{6F81}' . +'\x{6F82}\x{6F84}\x{6F86}\x{6F8E}\x{6F91}\x{6F97}\x{6FA1}\x{6FA3}\x{6FA4}' . +'\x{6FAA}\x{6FB1}\x{6FB3}\x{6FB9}\x{6FC0}\x{6FC1}\x{6FC2}\x{6FC3}\x{6FC6}' . +'\x{6FD4}\x{6FD5}\x{6FD8}\x{6FDB}\x{6FDF}\x{6FE0}\x{6FE1}\x{6FE4}\x{6FEB}' . +'\x{6FEC}\x{6FEE}\x{6FEF}\x{6FF1}\x{6FF3}\x{6FF6}\x{6FFA}\x{6FFE}\x{7001}' . +'\x{7009}\x{700B}\x{700F}\x{7011}\x{7015}\x{7018}\x{701A}\x{701B}\x{701D}' . +'\x{701E}\x{701F}\x{7026}\x{7027}\x{702C}\x{7030}\x{7032}\x{703E}\x{704C}' . +'\x{7051}\x{7058}\x{7063}\x{706B}\x{706F}\x{7070}\x{7078}\x{707C}\x{707D}' . +'\x{7089}\x{708A}\x{708E}\x{7092}\x{7099}\x{70AC}\x{70AD}\x{70AE}\x{70AF}' . +'\x{70B3}\x{70B8}\x{70B9}\x{70BA}\x{70C8}\x{70CB}\x{70CF}\x{70D9}\x{70DD}' . +'\x{70DF}\x{70F1}\x{70F9}\x{70FD}\x{7109}\x{7114}\x{7119}\x{711A}\x{711C}' . +'\x{7121}\x{7126}\x{7136}\x{713C}\x{7149}\x{714C}\x{714E}\x{7155}\x{7156}' . +'\x{7159}\x{7162}\x{7164}\x{7165}\x{7166}\x{7167}\x{7169}\x{716C}\x{716E}' . +'\x{717D}\x{7184}\x{7188}\x{718A}\x{718F}\x{7194}\x{7195}\x{7199}\x{719F}' . +'\x{71A8}\x{71AC}\x{71B1}\x{71B9}\x{71BE}\x{71C3}\x{71C8}\x{71C9}\x{71CE}' . +'\x{71D0}\x{71D2}\x{71D4}\x{71D5}\x{71D7}\x{71DF}\x{71E0}\x{71E5}\x{71E6}' . +'\x{71E7}\x{71EC}\x{71ED}\x{71EE}\x{71F5}\x{71F9}\x{71FB}\x{71FC}\x{71FF}' . +'\x{7206}\x{720D}\x{7210}\x{721B}\x{7228}\x{722A}\x{722C}\x{722D}\x{7230}' . +'\x{7232}\x{7235}\x{7236}\x{723A}\x{723B}\x{723C}\x{723D}\x{723E}\x{723F}' . +'\x{7240}\x{7246}\x{7247}\x{7248}\x{724B}\x{724C}\x{7252}\x{7258}\x{7259}' . +'\x{725B}\x{725D}\x{725F}\x{7261}\x{7262}\x{7267}\x{7269}\x{7272}\x{7274}' . +'\x{7279}\x{727D}\x{727E}\x{7280}\x{7281}\x{7282}\x{7287}\x{7292}\x{7296}' . +'\x{72A0}\x{72A2}\x{72A7}\x{72AC}\x{72AF}\x{72B2}\x{72B6}\x{72B9}\x{72C2}' . +'\x{72C3}\x{72C4}\x{72C6}\x{72CE}\x{72D0}\x{72D2}\x{72D7}\x{72D9}\x{72DB}' . +'\x{72E0}\x{72E1}\x{72E2}\x{72E9}\x{72EC}\x{72ED}\x{72F7}\x{72F8}\x{72F9}' . +'\x{72FC}\x{72FD}\x{730A}\x{7316}\x{7317}\x{731B}\x{731C}\x{731D}\x{731F}' . +'\x{7325}\x{7329}\x{732A}\x{732B}\x{732E}\x{732F}\x{7334}\x{7336}\x{7337}' . +'\x{733E}\x{733F}\x{7344}\x{7345}\x{734E}\x{734F}\x{7357}\x{7363}\x{7368}' . +'\x{736A}\x{7370}\x{7372}\x{7375}\x{7378}\x{737A}\x{737B}\x{7384}\x{7387}' . +'\x{7389}\x{738B}\x{7396}\x{73A9}\x{73B2}\x{73B3}\x{73BB}\x{73C0}\x{73C2}' . +'\x{73C8}\x{73CA}\x{73CD}\x{73CE}\x{73DE}\x{73E0}\x{73E5}\x{73EA}\x{73ED}' . +'\x{73EE}\x{73F1}\x{73F8}\x{73FE}\x{7403}\x{7405}\x{7406}\x{7409}\x{7422}' . +'\x{7425}\x{7432}\x{7433}\x{7434}\x{7435}\x{7436}\x{743A}\x{743F}\x{7441}' . +'\x{7455}\x{7459}\x{745A}\x{745B}\x{745C}\x{745E}\x{745F}\x{7460}\x{7463}' . +'\x{7464}\x{7469}\x{746A}\x{746F}\x{7470}\x{7473}\x{7476}\x{747E}\x{7483}' . +'\x{748B}\x{749E}\x{74A2}\x{74A7}\x{74B0}\x{74BD}\x{74CA}\x{74CF}\x{74D4}' . +'\x{74DC}\x{74E0}\x{74E2}\x{74E3}\x{74E6}\x{74E7}\x{74E9}\x{74EE}\x{74F0}' . +'\x{74F1}\x{74F2}\x{74F6}\x{74F7}\x{74F8}\x{7503}\x{7504}\x{7505}\x{750C}' . +'\x{750D}\x{750E}\x{7511}\x{7513}\x{7515}\x{7518}\x{751A}\x{751C}\x{751E}' . +'\x{751F}\x{7523}\x{7525}\x{7526}\x{7528}\x{752B}\x{752C}\x{7530}\x{7531}' . +'\x{7532}\x{7533}\x{7537}\x{7538}\x{753A}\x{753B}\x{753C}\x{7544}\x{7546}' . +'\x{7549}\x{754A}\x{754B}\x{754C}\x{754D}\x{754F}\x{7551}\x{7554}\x{7559}' . +'\x{755A}\x{755B}\x{755C}\x{755D}\x{7560}\x{7562}\x{7564}\x{7565}\x{7566}' . +'\x{7567}\x{7569}\x{756A}\x{756B}\x{756D}\x{7570}\x{7573}\x{7574}\x{7576}' . +'\x{7577}\x{7578}\x{757F}\x{7582}\x{7586}\x{7587}\x{7589}\x{758A}\x{758B}' . +'\x{758E}\x{758F}\x{7591}\x{7594}\x{759A}\x{759D}\x{75A3}\x{75A5}\x{75AB}' . +'\x{75B1}\x{75B2}\x{75B3}\x{75B5}\x{75B8}\x{75B9}\x{75BC}\x{75BD}\x{75BE}' . +'\x{75C2}\x{75C3}\x{75C5}\x{75C7}\x{75CA}\x{75CD}\x{75D2}\x{75D4}\x{75D5}' . +'\x{75D8}\x{75D9}\x{75DB}\x{75DE}\x{75E2}\x{75E3}\x{75E9}\x{75F0}\x{75F2}' . +'\x{75F3}\x{75F4}\x{75FA}\x{75FC}\x{75FE}\x{75FF}\x{7601}\x{7609}\x{760B}' . +'\x{760D}\x{761F}\x{7620}\x{7621}\x{7622}\x{7624}\x{7627}\x{7630}\x{7634}' . +'\x{763B}\x{7642}\x{7646}\x{7647}\x{7648}\x{764C}\x{7652}\x{7656}\x{7658}' . +'\x{765C}\x{7661}\x{7662}\x{7667}\x{7668}\x{7669}\x{766A}\x{766C}\x{7670}' . +'\x{7672}\x{7676}\x{7678}\x{767A}\x{767B}\x{767C}\x{767D}\x{767E}\x{7680}' . +'\x{7683}\x{7684}\x{7686}\x{7687}\x{7688}\x{768B}\x{768E}\x{7690}\x{7693}' . +'\x{7696}\x{7699}\x{769A}\x{76AE}\x{76B0}\x{76B4}\x{76B7}\x{76B8}\x{76B9}' . +'\x{76BA}\x{76BF}\x{76C2}\x{76C3}\x{76C6}\x{76C8}\x{76CA}\x{76CD}\x{76D2}' . +'\x{76D6}\x{76D7}\x{76DB}\x{76DC}\x{76DE}\x{76DF}\x{76E1}\x{76E3}\x{76E4}' . +'\x{76E5}\x{76E7}\x{76EA}\x{76EE}\x{76F2}\x{76F4}\x{76F8}\x{76FB}\x{76FE}' . +'\x{7701}\x{7704}\x{7707}\x{7708}\x{7709}\x{770B}\x{770C}\x{771B}\x{771E}' . +'\x{771F}\x{7720}\x{7724}\x{7725}\x{7726}\x{7729}\x{7737}\x{7738}\x{773A}' . +'\x{773C}\x{7740}\x{7747}\x{775A}\x{775B}\x{7761}\x{7763}\x{7765}\x{7766}' . +'\x{7768}\x{776B}\x{7779}\x{777E}\x{777F}\x{778B}\x{778E}\x{7791}\x{779E}' . +'\x{77A0}\x{77A5}\x{77AC}\x{77AD}\x{77B0}\x{77B3}\x{77B6}\x{77B9}\x{77BB}' . +'\x{77BC}\x{77BD}\x{77BF}\x{77C7}\x{77CD}\x{77D7}\x{77DA}\x{77DB}\x{77DC}' . +'\x{77E2}\x{77E3}\x{77E5}\x{77E7}\x{77E9}\x{77ED}\x{77EE}\x{77EF}\x{77F3}' . +'\x{77FC}\x{7802}\x{780C}\x{7812}\x{7814}\x{7815}\x{7820}\x{7825}\x{7826}' . +'\x{7827}\x{7832}\x{7834}\x{783A}\x{783F}\x{7845}\x{785D}\x{786B}\x{786C}' . +'\x{786F}\x{7872}\x{7874}\x{787C}\x{7881}\x{7886}\x{7887}\x{788C}\x{788D}' . +'\x{788E}\x{7891}\x{7893}\x{7895}\x{7897}\x{789A}\x{78A3}\x{78A7}\x{78A9}' . +'\x{78AA}\x{78AF}\x{78B5}\x{78BA}\x{78BC}\x{78BE}\x{78C1}\x{78C5}\x{78C6}' . +'\x{78CA}\x{78CB}\x{78D0}\x{78D1}\x{78D4}\x{78DA}\x{78E7}\x{78E8}\x{78EC}' . +'\x{78EF}\x{78F4}\x{78FD}\x{7901}\x{7907}\x{790E}\x{7911}\x{7912}\x{7919}' . +'\x{7926}\x{792A}\x{792B}\x{792C}\x{793A}\x{793C}\x{793E}\x{7940}\x{7941}' . +'\x{7947}\x{7948}\x{7949}\x{7950}\x{7953}\x{7955}\x{7956}\x{7957}\x{795A}' . +'\x{795D}\x{795E}\x{795F}\x{7960}\x{7962}\x{7965}\x{7968}\x{796D}\x{7977}' . +'\x{797A}\x{797F}\x{7980}\x{7981}\x{7984}\x{7985}\x{798A}\x{798D}\x{798E}' . +'\x{798F}\x{799D}\x{79A6}\x{79A7}\x{79AA}\x{79AE}\x{79B0}\x{79B3}\x{79B9}' . +'\x{79BA}\x{79BD}\x{79BE}\x{79BF}\x{79C0}\x{79C1}\x{79C9}\x{79CB}\x{79D1}' . +'\x{79D2}\x{79D5}\x{79D8}\x{79DF}\x{79E1}\x{79E3}\x{79E4}\x{79E6}\x{79E7}' . +'\x{79E9}\x{79EC}\x{79F0}\x{79FB}\x{7A00}\x{7A08}\x{7A0B}\x{7A0D}\x{7A0E}' . +'\x{7A14}\x{7A17}\x{7A18}\x{7A19}\x{7A1A}\x{7A1C}\x{7A1F}\x{7A20}\x{7A2E}' . +'\x{7A31}\x{7A32}\x{7A37}\x{7A3B}\x{7A3C}\x{7A3D}\x{7A3E}\x{7A3F}\x{7A40}' . +'\x{7A42}\x{7A43}\x{7A46}\x{7A49}\x{7A4D}\x{7A4E}\x{7A4F}\x{7A50}\x{7A57}' . +'\x{7A61}\x{7A62}\x{7A63}\x{7A69}\x{7A6B}\x{7A70}\x{7A74}\x{7A76}\x{7A79}' . +'\x{7A7A}\x{7A7D}\x{7A7F}\x{7A81}\x{7A83}\x{7A84}\x{7A88}\x{7A92}\x{7A93}' . +'\x{7A95}\x{7A96}\x{7A97}\x{7A98}\x{7A9F}\x{7AA9}\x{7AAA}\x{7AAE}\x{7AAF}' . +'\x{7AB0}\x{7AB6}\x{7ABA}\x{7ABF}\x{7AC3}\x{7AC4}\x{7AC5}\x{7AC7}\x{7AC8}' . +'\x{7ACA}\x{7ACB}\x{7ACD}\x{7ACF}\x{7AD2}\x{7AD3}\x{7AD5}\x{7AD9}\x{7ADA}' . +'\x{7ADC}\x{7ADD}\x{7ADF}\x{7AE0}\x{7AE1}\x{7AE2}\x{7AE3}\x{7AE5}\x{7AE6}' . +'\x{7AEA}\x{7AED}\x{7AEF}\x{7AF0}\x{7AF6}\x{7AF8}\x{7AF9}\x{7AFA}\x{7AFF}' . +'\x{7B02}\x{7B04}\x{7B06}\x{7B08}\x{7B0A}\x{7B0B}\x{7B0F}\x{7B11}\x{7B18}' . +'\x{7B19}\x{7B1B}\x{7B1E}\x{7B20}\x{7B25}\x{7B26}\x{7B28}\x{7B2C}\x{7B33}' . +'\x{7B35}\x{7B36}\x{7B39}\x{7B45}\x{7B46}\x{7B48}\x{7B49}\x{7B4B}\x{7B4C}' . +'\x{7B4D}\x{7B4F}\x{7B50}\x{7B51}\x{7B52}\x{7B54}\x{7B56}\x{7B5D}\x{7B65}' . +'\x{7B67}\x{7B6C}\x{7B6E}\x{7B70}\x{7B71}\x{7B74}\x{7B75}\x{7B7A}\x{7B86}' . +'\x{7B87}\x{7B8B}\x{7B8D}\x{7B8F}\x{7B92}\x{7B94}\x{7B95}\x{7B97}\x{7B98}' . +'\x{7B99}\x{7B9A}\x{7B9C}\x{7B9D}\x{7B9F}\x{7BA1}\x{7BAA}\x{7BAD}\x{7BB1}' . +'\x{7BB4}\x{7BB8}\x{7BC0}\x{7BC1}\x{7BC4}\x{7BC6}\x{7BC7}\x{7BC9}\x{7BCB}' . +'\x{7BCC}\x{7BCF}\x{7BDD}\x{7BE0}\x{7BE4}\x{7BE5}\x{7BE6}\x{7BE9}\x{7BED}' . +'\x{7BF3}\x{7BF6}\x{7BF7}\x{7C00}\x{7C07}\x{7C0D}\x{7C11}\x{7C12}\x{7C13}' . +'\x{7C14}\x{7C17}\x{7C1F}\x{7C21}\x{7C23}\x{7C27}\x{7C2A}\x{7C2B}\x{7C37}' . +'\x{7C38}\x{7C3D}\x{7C3E}\x{7C3F}\x{7C40}\x{7C43}\x{7C4C}\x{7C4D}\x{7C4F}' . +'\x{7C50}\x{7C54}\x{7C56}\x{7C58}\x{7C5F}\x{7C60}\x{7C64}\x{7C65}\x{7C6C}' . +'\x{7C73}\x{7C75}\x{7C7E}\x{7C81}\x{7C82}\x{7C83}\x{7C89}\x{7C8B}\x{7C8D}' . +'\x{7C90}\x{7C92}\x{7C95}\x{7C97}\x{7C98}\x{7C9B}\x{7C9F}\x{7CA1}\x{7CA2}' . +'\x{7CA4}\x{7CA5}\x{7CA7}\x{7CA8}\x{7CAB}\x{7CAD}\x{7CAE}\x{7CB1}\x{7CB2}' . +'\x{7CB3}\x{7CB9}\x{7CBD}\x{7CBE}\x{7CC0}\x{7CC2}\x{7CC5}\x{7CCA}\x{7CCE}' . +'\x{7CD2}\x{7CD6}\x{7CD8}\x{7CDC}\x{7CDE}\x{7CDF}\x{7CE0}\x{7CE2}\x{7CE7}' . +'\x{7CEF}\x{7CF2}\x{7CF4}\x{7CF6}\x{7CF8}\x{7CFA}\x{7CFB}\x{7CFE}\x{7D00}' . +'\x{7D02}\x{7D04}\x{7D05}\x{7D06}\x{7D0A}\x{7D0B}\x{7D0D}\x{7D10}\x{7D14}' . +'\x{7D15}\x{7D17}\x{7D18}\x{7D19}\x{7D1A}\x{7D1B}\x{7D1C}\x{7D20}\x{7D21}' . +'\x{7D22}\x{7D2B}\x{7D2C}\x{7D2E}\x{7D2F}\x{7D30}\x{7D32}\x{7D33}\x{7D35}' . +'\x{7D39}\x{7D3A}\x{7D3F}\x{7D42}\x{7D43}\x{7D44}\x{7D45}\x{7D46}\x{7D4B}' . +'\x{7D4C}\x{7D4E}\x{7D4F}\x{7D50}\x{7D56}\x{7D5B}\x{7D5E}\x{7D61}\x{7D62}' . +'\x{7D63}\x{7D66}\x{7D68}\x{7D6E}\x{7D71}\x{7D72}\x{7D73}\x{7D75}\x{7D76}' . +'\x{7D79}\x{7D7D}\x{7D89}\x{7D8F}\x{7D93}\x{7D99}\x{7D9A}\x{7D9B}\x{7D9C}' . +'\x{7D9F}\x{7DA2}\x{7DA3}\x{7DAB}\x{7DAC}\x{7DAD}\x{7DAE}\x{7DAF}\x{7DB0}' . +'\x{7DB1}\x{7DB2}\x{7DB4}\x{7DB5}\x{7DB8}\x{7DBA}\x{7DBB}\x{7DBD}\x{7DBE}' . +'\x{7DBF}\x{7DC7}\x{7DCA}\x{7DCB}\x{7DCF}\x{7DD1}\x{7DD2}\x{7DD5}\x{7DD8}' . +'\x{7DDA}\x{7DDC}\x{7DDD}\x{7DDE}\x{7DE0}\x{7DE1}\x{7DE4}\x{7DE8}\x{7DE9}' . +'\x{7DEC}\x{7DEF}\x{7DF2}\x{7DF4}\x{7DFB}\x{7E01}\x{7E04}\x{7E05}\x{7E09}' . +'\x{7E0A}\x{7E0B}\x{7E12}\x{7E1B}\x{7E1E}\x{7E1F}\x{7E21}\x{7E22}\x{7E23}' . +'\x{7E26}\x{7E2B}\x{7E2E}\x{7E31}\x{7E32}\x{7E35}\x{7E37}\x{7E39}\x{7E3A}' . +'\x{7E3B}\x{7E3D}\x{7E3E}\x{7E41}\x{7E43}\x{7E46}\x{7E4A}\x{7E4B}\x{7E4D}' . +'\x{7E54}\x{7E55}\x{7E56}\x{7E59}\x{7E5A}\x{7E5D}\x{7E5E}\x{7E66}\x{7E67}' . +'\x{7E69}\x{7E6A}\x{7E6D}\x{7E70}\x{7E79}\x{7E7B}\x{7E7C}\x{7E7D}\x{7E7F}' . +'\x{7E82}\x{7E83}\x{7E88}\x{7E89}\x{7E8C}\x{7E8E}\x{7E8F}\x{7E90}\x{7E92}' . +'\x{7E93}\x{7E94}\x{7E96}\x{7E9B}\x{7E9C}\x{7F36}\x{7F38}\x{7F3A}\x{7F45}' . +'\x{7F4C}\x{7F4D}\x{7F4E}\x{7F50}\x{7F51}\x{7F54}\x{7F55}\x{7F58}\x{7F5F}' . +'\x{7F60}\x{7F67}\x{7F68}\x{7F69}\x{7F6A}\x{7F6B}\x{7F6E}\x{7F70}\x{7F72}' . +'\x{7F75}\x{7F77}\x{7F78}\x{7F79}\x{7F82}\x{7F83}\x{7F85}\x{7F86}\x{7F87}' . +'\x{7F88}\x{7F8A}\x{7F8C}\x{7F8E}\x{7F94}\x{7F9A}\x{7F9D}\x{7F9E}\x{7FA3}' . +'\x{7FA4}\x{7FA8}\x{7FA9}\x{7FAE}\x{7FAF}\x{7FB2}\x{7FB6}\x{7FB8}\x{7FB9}' . +'\x{7FBD}\x{7FC1}\x{7FC5}\x{7FC6}\x{7FCA}\x{7FCC}\x{7FD2}\x{7FD4}\x{7FD5}' . +'\x{7FE0}\x{7FE1}\x{7FE6}\x{7FE9}\x{7FEB}\x{7FF0}\x{7FF3}\x{7FF9}\x{7FFB}' . +'\x{7FFC}\x{8000}\x{8001}\x{8003}\x{8004}\x{8005}\x{8006}\x{800B}\x{800C}' . +'\x{8010}\x{8012}\x{8015}\x{8017}\x{8018}\x{8019}\x{801C}\x{8021}\x{8028}' . +'\x{8033}\x{8036}\x{803B}\x{803D}\x{803F}\x{8046}\x{804A}\x{8052}\x{8056}' . +'\x{8058}\x{805A}\x{805E}\x{805F}\x{8061}\x{8062}\x{8068}\x{806F}\x{8070}' . +'\x{8072}\x{8073}\x{8074}\x{8076}\x{8077}\x{8079}\x{807D}\x{807E}\x{807F}' . +'\x{8084}\x{8085}\x{8086}\x{8087}\x{8089}\x{808B}\x{808C}\x{8093}\x{8096}' . +'\x{8098}\x{809A}\x{809B}\x{809D}\x{80A1}\x{80A2}\x{80A5}\x{80A9}\x{80AA}' . +'\x{80AC}\x{80AD}\x{80AF}\x{80B1}\x{80B2}\x{80B4}\x{80BA}\x{80C3}\x{80C4}' . +'\x{80C6}\x{80CC}\x{80CE}\x{80D6}\x{80D9}\x{80DA}\x{80DB}\x{80DD}\x{80DE}' . +'\x{80E1}\x{80E4}\x{80E5}\x{80EF}\x{80F1}\x{80F4}\x{80F8}\x{80FC}\x{80FD}' . +'\x{8102}\x{8105}\x{8106}\x{8107}\x{8108}\x{8109}\x{810A}\x{811A}\x{811B}' . +'\x{8123}\x{8129}\x{812F}\x{8131}\x{8133}\x{8139}\x{813E}\x{8146}\x{814B}' . +'\x{814E}\x{8150}\x{8151}\x{8153}\x{8154}\x{8155}\x{815F}\x{8165}\x{8166}' . +'\x{816B}\x{816E}\x{8170}\x{8171}\x{8174}\x{8178}\x{8179}\x{817A}\x{817F}' . +'\x{8180}\x{8182}\x{8183}\x{8188}\x{818A}\x{818F}\x{8193}\x{8195}\x{819A}' . +'\x{819C}\x{819D}\x{81A0}\x{81A3}\x{81A4}\x{81A8}\x{81A9}\x{81B0}\x{81B3}' . +'\x{81B5}\x{81B8}\x{81BA}\x{81BD}\x{81BE}\x{81BF}\x{81C0}\x{81C2}\x{81C6}' . +'\x{81C8}\x{81C9}\x{81CD}\x{81D1}\x{81D3}\x{81D8}\x{81D9}\x{81DA}\x{81DF}' . +'\x{81E0}\x{81E3}\x{81E5}\x{81E7}\x{81E8}\x{81EA}\x{81ED}\x{81F3}\x{81F4}' . +'\x{81FA}\x{81FB}\x{81FC}\x{81FE}\x{8201}\x{8202}\x{8205}\x{8207}\x{8208}' . +'\x{8209}\x{820A}\x{820C}\x{820D}\x{820E}\x{8210}\x{8212}\x{8216}\x{8217}' . +'\x{8218}\x{821B}\x{821C}\x{821E}\x{821F}\x{8229}\x{822A}\x{822B}\x{822C}' . +'\x{822E}\x{8233}\x{8235}\x{8236}\x{8237}\x{8238}\x{8239}\x{8240}\x{8247}' . +'\x{8258}\x{8259}\x{825A}\x{825D}\x{825F}\x{8262}\x{8264}\x{8266}\x{8268}' . +'\x{826A}\x{826B}\x{826E}\x{826F}\x{8271}\x{8272}\x{8276}\x{8277}\x{8278}' . +'\x{827E}\x{828B}\x{828D}\x{8292}\x{8299}\x{829D}\x{829F}\x{82A5}\x{82A6}' . +'\x{82AB}\x{82AC}\x{82AD}\x{82AF}\x{82B1}\x{82B3}\x{82B8}\x{82B9}\x{82BB}' . +'\x{82BD}\x{82C5}\x{82D1}\x{82D2}\x{82D3}\x{82D4}\x{82D7}\x{82D9}\x{82DB}' . +'\x{82DC}\x{82DE}\x{82DF}\x{82E1}\x{82E3}\x{82E5}\x{82E6}\x{82E7}\x{82EB}' . +'\x{82F1}\x{82F3}\x{82F4}\x{82F9}\x{82FA}\x{82FB}\x{8302}\x{8303}\x{8304}' . +'\x{8305}\x{8306}\x{8309}\x{830E}\x{8316}\x{8317}\x{8318}\x{831C}\x{8323}' . +'\x{8328}\x{832B}\x{832F}\x{8331}\x{8332}\x{8334}\x{8335}\x{8336}\x{8338}' . +'\x{8339}\x{8340}\x{8345}\x{8349}\x{834A}\x{834F}\x{8350}\x{8352}\x{8358}' . +'\x{8373}\x{8375}\x{8377}\x{837B}\x{837C}\x{8385}\x{8387}\x{8389}\x{838A}' . +'\x{838E}\x{8393}\x{8396}\x{839A}\x{839E}\x{839F}\x{83A0}\x{83A2}\x{83A8}' . +'\x{83AA}\x{83AB}\x{83B1}\x{83B5}\x{83BD}\x{83C1}\x{83C5}\x{83CA}\x{83CC}' . +'\x{83CE}\x{83D3}\x{83D6}\x{83D8}\x{83DC}\x{83DF}\x{83E0}\x{83E9}\x{83EB}' . +'\x{83EF}\x{83F0}\x{83F1}\x{83F2}\x{83F4}\x{83F7}\x{83FB}\x{83FD}\x{8403}' . +'\x{8404}\x{8407}\x{840B}\x{840C}\x{840D}\x{840E}\x{8413}\x{8420}\x{8422}' . +'\x{8429}\x{842A}\x{842C}\x{8431}\x{8435}\x{8438}\x{843C}\x{843D}\x{8446}' . +'\x{8449}\x{844E}\x{8457}\x{845B}\x{8461}\x{8462}\x{8463}\x{8466}\x{8469}' . +'\x{846B}\x{846C}\x{846D}\x{846E}\x{846F}\x{8471}\x{8475}\x{8477}\x{8479}' . +'\x{847A}\x{8482}\x{8484}\x{848B}\x{8490}\x{8494}\x{8499}\x{849C}\x{849F}' . +'\x{84A1}\x{84AD}\x{84B2}\x{84B8}\x{84B9}\x{84BB}\x{84BC}\x{84BF}\x{84C1}' . +'\x{84C4}\x{84C6}\x{84C9}\x{84CA}\x{84CB}\x{84CD}\x{84D0}\x{84D1}\x{84D6}' . +'\x{84D9}\x{84DA}\x{84EC}\x{84EE}\x{84F4}\x{84FC}\x{84FF}\x{8500}\x{8506}' . +'\x{8511}\x{8513}\x{8514}\x{8515}\x{8517}\x{8518}\x{851A}\x{851F}\x{8521}' . +'\x{8526}\x{852C}\x{852D}\x{8535}\x{853D}\x{8540}\x{8541}\x{8543}\x{8548}' . +'\x{8549}\x{854A}\x{854B}\x{854E}\x{8555}\x{8557}\x{8558}\x{855A}\x{8563}' . +'\x{8568}\x{8569}\x{856A}\x{856D}\x{8577}\x{857E}\x{8580}\x{8584}\x{8587}' . +'\x{8588}\x{858A}\x{8590}\x{8591}\x{8594}\x{8597}\x{8599}\x{859B}\x{859C}' . +'\x{85A4}\x{85A6}\x{85A8}\x{85A9}\x{85AA}\x{85AB}\x{85AC}\x{85AE}\x{85AF}' . +'\x{85B9}\x{85BA}\x{85C1}\x{85C9}\x{85CD}\x{85CF}\x{85D0}\x{85D5}\x{85DC}' . +'\x{85DD}\x{85E4}\x{85E5}\x{85E9}\x{85EA}\x{85F7}\x{85F9}\x{85FA}\x{85FB}' . +'\x{85FE}\x{8602}\x{8606}\x{8607}\x{860A}\x{860B}\x{8613}\x{8616}\x{8617}' . +'\x{861A}\x{8622}\x{862D}\x{862F}\x{8630}\x{863F}\x{864D}\x{864E}\x{8650}' . +'\x{8654}\x{8655}\x{865A}\x{865C}\x{865E}\x{865F}\x{8667}\x{866B}\x{8671}' . +'\x{8679}\x{867B}\x{868A}\x{868B}\x{868C}\x{8693}\x{8695}\x{86A3}\x{86A4}' . +'\x{86A9}\x{86AA}\x{86AB}\x{86AF}\x{86B0}\x{86B6}\x{86C4}\x{86C6}\x{86C7}' . +'\x{86C9}\x{86CB}\x{86CD}\x{86CE}\x{86D4}\x{86D9}\x{86DB}\x{86DE}\x{86DF}' . +'\x{86E4}\x{86E9}\x{86EC}\x{86ED}\x{86EE}\x{86EF}\x{86F8}\x{86F9}\x{86FB}' . +'\x{86FE}\x{8700}\x{8702}\x{8703}\x{8706}\x{8708}\x{8709}\x{870A}\x{870D}' . +'\x{8711}\x{8712}\x{8718}\x{871A}\x{871C}\x{8725}\x{8729}\x{8734}\x{8737}' . +'\x{873B}\x{873F}\x{8749}\x{874B}\x{874C}\x{874E}\x{8753}\x{8755}\x{8757}' . +'\x{8759}\x{875F}\x{8760}\x{8763}\x{8766}\x{8768}\x{876A}\x{876E}\x{8774}' . +'\x{8776}\x{8778}\x{877F}\x{8782}\x{878D}\x{879F}\x{87A2}\x{87AB}\x{87AF}' . +'\x{87B3}\x{87BA}\x{87BB}\x{87BD}\x{87C0}\x{87C4}\x{87C6}\x{87C7}\x{87CB}' . +'\x{87D0}\x{87D2}\x{87E0}\x{87EF}\x{87F2}\x{87F6}\x{87F7}\x{87F9}\x{87FB}' . +'\x{87FE}\x{8805}\x{880D}\x{880E}\x{880F}\x{8811}\x{8815}\x{8816}\x{8821}' . +'\x{8822}\x{8823}\x{8827}\x{8831}\x{8836}\x{8839}\x{883B}\x{8840}\x{8842}' . +'\x{8844}\x{8846}\x{884C}\x{884D}\x{8852}\x{8853}\x{8857}\x{8859}\x{885B}' . +'\x{885D}\x{885E}\x{8861}\x{8862}\x{8863}\x{8868}\x{886B}\x{8870}\x{8872}' . +'\x{8875}\x{8877}\x{887D}\x{887E}\x{887F}\x{8881}\x{8882}\x{8888}\x{888B}' . +'\x{888D}\x{8892}\x{8896}\x{8897}\x{8899}\x{889E}\x{88A2}\x{88A4}\x{88AB}' . +'\x{88AE}\x{88B0}\x{88B1}\x{88B4}\x{88B5}\x{88B7}\x{88BF}\x{88C1}\x{88C2}' . +'\x{88C3}\x{88C4}\x{88C5}\x{88CF}\x{88D4}\x{88D5}\x{88D8}\x{88D9}\x{88DC}' . +'\x{88DD}\x{88DF}\x{88E1}\x{88E8}\x{88F2}\x{88F3}\x{88F4}\x{88F8}\x{88F9}' . +'\x{88FC}\x{88FD}\x{88FE}\x{8902}\x{8904}\x{8907}\x{890A}\x{890C}\x{8910}' . +'\x{8912}\x{8913}\x{891D}\x{891E}\x{8925}\x{892A}\x{892B}\x{8936}\x{8938}' . +'\x{893B}\x{8941}\x{8943}\x{8944}\x{894C}\x{894D}\x{8956}\x{895E}\x{895F}' . +'\x{8960}\x{8964}\x{8966}\x{896A}\x{896D}\x{896F}\x{8972}\x{8974}\x{8977}' . +'\x{897E}\x{897F}\x{8981}\x{8983}\x{8986}\x{8987}\x{8988}\x{898A}\x{898B}' . +'\x{898F}\x{8993}\x{8996}\x{8997}\x{8998}\x{899A}\x{89A1}\x{89A6}\x{89A7}' . +'\x{89A9}\x{89AA}\x{89AC}\x{89AF}\x{89B2}\x{89B3}\x{89BA}\x{89BD}\x{89BF}' . +'\x{89C0}\x{89D2}\x{89DA}\x{89DC}\x{89DD}\x{89E3}\x{89E6}\x{89E7}\x{89F4}' . +'\x{89F8}\x{8A00}\x{8A02}\x{8A03}\x{8A08}\x{8A0A}\x{8A0C}\x{8A0E}\x{8A10}' . +'\x{8A13}\x{8A16}\x{8A17}\x{8A18}\x{8A1B}\x{8A1D}\x{8A1F}\x{8A23}\x{8A25}' . +'\x{8A2A}\x{8A2D}\x{8A31}\x{8A33}\x{8A34}\x{8A36}\x{8A3A}\x{8A3B}\x{8A3C}' . +'\x{8A41}\x{8A46}\x{8A48}\x{8A50}\x{8A51}\x{8A52}\x{8A54}\x{8A55}\x{8A5B}' . +'\x{8A5E}\x{8A60}\x{8A62}\x{8A63}\x{8A66}\x{8A69}\x{8A6B}\x{8A6C}\x{8A6D}' . +'\x{8A6E}\x{8A70}\x{8A71}\x{8A72}\x{8A73}\x{8A7C}\x{8A82}\x{8A84}\x{8A85}' . +'\x{8A87}\x{8A89}\x{8A8C}\x{8A8D}\x{8A91}\x{8A93}\x{8A95}\x{8A98}\x{8A9A}' . +'\x{8A9E}\x{8AA0}\x{8AA1}\x{8AA3}\x{8AA4}\x{8AA5}\x{8AA6}\x{8AA8}\x{8AAC}' . +'\x{8AAD}\x{8AB0}\x{8AB2}\x{8AB9}\x{8ABC}\x{8ABF}\x{8AC2}\x{8AC4}\x{8AC7}' . +'\x{8ACB}\x{8ACC}\x{8ACD}\x{8ACF}\x{8AD2}\x{8AD6}\x{8ADA}\x{8ADB}\x{8ADC}' . +'\x{8ADE}\x{8AE0}\x{8AE1}\x{8AE2}\x{8AE4}\x{8AE6}\x{8AE7}\x{8AEB}\x{8AED}' . +'\x{8AEE}\x{8AF1}\x{8AF3}\x{8AF7}\x{8AF8}\x{8AFA}\x{8AFE}\x{8B00}\x{8B01}' . +'\x{8B02}\x{8B04}\x{8B07}\x{8B0C}\x{8B0E}\x{8B10}\x{8B14}\x{8B16}\x{8B17}' . +'\x{8B19}\x{8B1A}\x{8B1B}\x{8B1D}\x{8B20}\x{8B21}\x{8B26}\x{8B28}\x{8B2B}' . +'\x{8B2C}\x{8B33}\x{8B39}\x{8B3E}\x{8B41}\x{8B49}\x{8B4C}\x{8B4E}\x{8B4F}' . +'\x{8B56}\x{8B58}\x{8B5A}\x{8B5B}\x{8B5C}\x{8B5F}\x{8B66}\x{8B6B}\x{8B6C}' . +'\x{8B6F}\x{8B70}\x{8B71}\x{8B72}\x{8B74}\x{8B77}\x{8B7D}\x{8B80}\x{8B83}' . +'\x{8B8A}\x{8B8C}\x{8B8E}\x{8B90}\x{8B92}\x{8B93}\x{8B96}\x{8B99}\x{8B9A}' . +'\x{8C37}\x{8C3A}\x{8C3F}\x{8C41}\x{8C46}\x{8C48}\x{8C4A}\x{8C4C}\x{8C4E}' . +'\x{8C50}\x{8C55}\x{8C5A}\x{8C61}\x{8C62}\x{8C6A}\x{8C6B}\x{8C6C}\x{8C78}' . +'\x{8C79}\x{8C7A}\x{8C7C}\x{8C82}\x{8C85}\x{8C89}\x{8C8A}\x{8C8C}\x{8C8D}' . +'\x{8C8E}\x{8C94}\x{8C98}\x{8C9D}\x{8C9E}\x{8CA0}\x{8CA1}\x{8CA2}\x{8CA7}' . +'\x{8CA8}\x{8CA9}\x{8CAA}\x{8CAB}\x{8CAC}\x{8CAD}\x{8CAE}\x{8CAF}\x{8CB0}' . +'\x{8CB2}\x{8CB3}\x{8CB4}\x{8CB6}\x{8CB7}\x{8CB8}\x{8CBB}\x{8CBC}\x{8CBD}' . +'\x{8CBF}\x{8CC0}\x{8CC1}\x{8CC2}\x{8CC3}\x{8CC4}\x{8CC7}\x{8CC8}\x{8CCA}' . +'\x{8CCD}\x{8CCE}\x{8CD1}\x{8CD3}\x{8CDA}\x{8CDB}\x{8CDC}\x{8CDE}\x{8CE0}' . +'\x{8CE2}\x{8CE3}\x{8CE4}\x{8CE6}\x{8CEA}\x{8CED}\x{8CFA}\x{8CFB}\x{8CFC}' . +'\x{8CFD}\x{8D04}\x{8D05}\x{8D07}\x{8D08}\x{8D0A}\x{8D0B}\x{8D0D}\x{8D0F}' . +'\x{8D10}\x{8D13}\x{8D14}\x{8D16}\x{8D64}\x{8D66}\x{8D67}\x{8D6B}\x{8D6D}' . +'\x{8D70}\x{8D71}\x{8D73}\x{8D74}\x{8D77}\x{8D81}\x{8D85}\x{8D8A}\x{8D99}' . +'\x{8DA3}\x{8DA8}\x{8DB3}\x{8DBA}\x{8DBE}\x{8DC2}\x{8DCB}\x{8DCC}\x{8DCF}' . +'\x{8DD6}\x{8DDA}\x{8DDB}\x{8DDD}\x{8DDF}\x{8DE1}\x{8DE3}\x{8DE8}\x{8DEA}' . +'\x{8DEB}\x{8DEF}\x{8DF3}\x{8DF5}\x{8DFC}\x{8DFF}\x{8E08}\x{8E09}\x{8E0A}' . +'\x{8E0F}\x{8E10}\x{8E1D}\x{8E1E}\x{8E1F}\x{8E2A}\x{8E30}\x{8E34}\x{8E35}' . +'\x{8E42}\x{8E44}\x{8E47}\x{8E48}\x{8E49}\x{8E4A}\x{8E4C}\x{8E50}\x{8E55}' . +'\x{8E59}\x{8E5F}\x{8E60}\x{8E63}\x{8E64}\x{8E72}\x{8E74}\x{8E76}\x{8E7C}' . +'\x{8E81}\x{8E84}\x{8E85}\x{8E87}\x{8E8A}\x{8E8B}\x{8E8D}\x{8E91}\x{8E93}' . +'\x{8E94}\x{8E99}\x{8EA1}\x{8EAA}\x{8EAB}\x{8EAC}\x{8EAF}\x{8EB0}\x{8EB1}' . +'\x{8EBE}\x{8EC5}\x{8EC6}\x{8EC8}\x{8ECA}\x{8ECB}\x{8ECC}\x{8ECD}\x{8ED2}' . +'\x{8EDB}\x{8EDF}\x{8EE2}\x{8EE3}\x{8EEB}\x{8EF8}\x{8EFB}\x{8EFC}\x{8EFD}' . +'\x{8EFE}\x{8F03}\x{8F05}\x{8F09}\x{8F0A}\x{8F0C}\x{8F12}\x{8F13}\x{8F14}' . +'\x{8F15}\x{8F19}\x{8F1B}\x{8F1C}\x{8F1D}\x{8F1F}\x{8F26}\x{8F29}\x{8F2A}' . +'\x{8F2F}\x{8F33}\x{8F38}\x{8F39}\x{8F3B}\x{8F3E}\x{8F3F}\x{8F42}\x{8F44}' . +'\x{8F45}\x{8F46}\x{8F49}\x{8F4C}\x{8F4D}\x{8F4E}\x{8F57}\x{8F5C}\x{8F5F}' . +'\x{8F61}\x{8F62}\x{8F63}\x{8F64}\x{8F9B}\x{8F9C}\x{8F9E}\x{8F9F}\x{8FA3}' . +'\x{8FA7}\x{8FA8}\x{8FAD}\x{8FAE}\x{8FAF}\x{8FB0}\x{8FB1}\x{8FB2}\x{8FB7}' . +'\x{8FBA}\x{8FBB}\x{8FBC}\x{8FBF}\x{8FC2}\x{8FC4}\x{8FC5}\x{8FCE}\x{8FD1}' . +'\x{8FD4}\x{8FDA}\x{8FE2}\x{8FE5}\x{8FE6}\x{8FE9}\x{8FEA}\x{8FEB}\x{8FED}' . +'\x{8FEF}\x{8FF0}\x{8FF4}\x{8FF7}\x{8FF8}\x{8FF9}\x{8FFA}\x{8FFD}\x{9000}' . +'\x{9001}\x{9003}\x{9005}\x{9006}\x{900B}\x{900D}\x{900E}\x{900F}\x{9010}' . +'\x{9011}\x{9013}\x{9014}\x{9015}\x{9016}\x{9017}\x{9019}\x{901A}\x{901D}' . +'\x{901E}\x{901F}\x{9020}\x{9021}\x{9022}\x{9023}\x{9027}\x{902E}\x{9031}' . +'\x{9032}\x{9035}\x{9036}\x{9038}\x{9039}\x{903C}\x{903E}\x{9041}\x{9042}' . +'\x{9045}\x{9047}\x{9049}\x{904A}\x{904B}\x{904D}\x{904E}\x{904F}\x{9050}' . +'\x{9051}\x{9052}\x{9053}\x{9054}\x{9055}\x{9056}\x{9058}\x{9059}\x{905C}' . +'\x{905E}\x{9060}\x{9061}\x{9063}\x{9065}\x{9068}\x{9069}\x{906D}\x{906E}' . +'\x{906F}\x{9072}\x{9075}\x{9076}\x{9077}\x{9078}\x{907A}\x{907C}\x{907D}' . +'\x{907F}\x{9080}\x{9081}\x{9082}\x{9083}\x{9084}\x{9087}\x{9089}\x{908A}' . +'\x{908F}\x{9091}\x{90A3}\x{90A6}\x{90A8}\x{90AA}\x{90AF}\x{90B1}\x{90B5}' . +'\x{90B8}\x{90C1}\x{90CA}\x{90CE}\x{90DB}\x{90E1}\x{90E2}\x{90E4}\x{90E8}' . +'\x{90ED}\x{90F5}\x{90F7}\x{90FD}\x{9102}\x{9112}\x{9119}\x{912D}\x{9130}' . +'\x{9132}\x{9149}\x{914A}\x{914B}\x{914C}\x{914D}\x{914E}\x{9152}\x{9154}' . +'\x{9156}\x{9158}\x{9162}\x{9163}\x{9165}\x{9169}\x{916A}\x{916C}\x{9172}' . +'\x{9173}\x{9175}\x{9177}\x{9178}\x{9182}\x{9187}\x{9189}\x{918B}\x{918D}' . +'\x{9190}\x{9192}\x{9197}\x{919C}\x{91A2}\x{91A4}\x{91AA}\x{91AB}\x{91AF}' . +'\x{91B4}\x{91B5}\x{91B8}\x{91BA}\x{91C0}\x{91C1}\x{91C6}\x{91C7}\x{91C8}' . +'\x{91C9}\x{91CB}\x{91CC}\x{91CD}\x{91CE}\x{91CF}\x{91D0}\x{91D1}\x{91D6}' . +'\x{91D8}\x{91DB}\x{91DC}\x{91DD}\x{91DF}\x{91E1}\x{91E3}\x{91E6}\x{91E7}' . +'\x{91F5}\x{91F6}\x{91FC}\x{91FF}\x{920D}\x{920E}\x{9211}\x{9214}\x{9215}' . +'\x{921E}\x{9229}\x{922C}\x{9234}\x{9237}\x{923F}\x{9244}\x{9245}\x{9248}' . +'\x{9249}\x{924B}\x{9250}\x{9257}\x{925A}\x{925B}\x{925E}\x{9262}\x{9264}' . +'\x{9266}\x{9271}\x{927E}\x{9280}\x{9283}\x{9285}\x{9291}\x{9293}\x{9295}' . +'\x{9296}\x{9298}\x{929A}\x{929B}\x{929C}\x{92AD}\x{92B7}\x{92B9}\x{92CF}' . +'\x{92D2}\x{92E4}\x{92E9}\x{92EA}\x{92ED}\x{92F2}\x{92F3}\x{92F8}\x{92FA}' . +'\x{92FC}\x{9306}\x{930F}\x{9310}\x{9318}\x{9319}\x{931A}\x{9320}\x{9322}' . +'\x{9323}\x{9326}\x{9328}\x{932B}\x{932C}\x{932E}\x{932F}\x{9332}\x{9335}' . +'\x{933A}\x{933B}\x{9344}\x{934B}\x{934D}\x{9354}\x{9356}\x{935B}\x{935C}' . +'\x{9360}\x{936C}\x{936E}\x{9375}\x{937C}\x{937E}\x{938C}\x{9394}\x{9396}' . +'\x{9397}\x{939A}\x{93A7}\x{93AC}\x{93AD}\x{93AE}\x{93B0}\x{93B9}\x{93C3}' . +'\x{93C8}\x{93D0}\x{93D1}\x{93D6}\x{93D7}\x{93D8}\x{93DD}\x{93E1}\x{93E4}' . +'\x{93E5}\x{93E8}\x{9403}\x{9407}\x{9410}\x{9413}\x{9414}\x{9418}\x{9419}' . +'\x{941A}\x{9421}\x{942B}\x{9435}\x{9436}\x{9438}\x{943A}\x{9441}\x{9444}' . +'\x{9451}\x{9452}\x{9453}\x{945A}\x{945B}\x{945E}\x{9460}\x{9462}\x{946A}' . +'\x{9470}\x{9475}\x{9477}\x{947C}\x{947D}\x{947E}\x{947F}\x{9481}\x{9577}' . +'\x{9580}\x{9582}\x{9583}\x{9587}\x{9589}\x{958A}\x{958B}\x{958F}\x{9591}' . +'\x{9593}\x{9594}\x{9596}\x{9598}\x{9599}\x{95A0}\x{95A2}\x{95A3}\x{95A4}' . +'\x{95A5}\x{95A7}\x{95A8}\x{95AD}\x{95B2}\x{95B9}\x{95BB}\x{95BC}\x{95BE}' . +'\x{95C3}\x{95C7}\x{95CA}\x{95CC}\x{95CD}\x{95D4}\x{95D5}\x{95D6}\x{95D8}' . +'\x{95DC}\x{95E1}\x{95E2}\x{95E5}\x{961C}\x{9621}\x{9628}\x{962A}\x{962E}' . +'\x{962F}\x{9632}\x{963B}\x{963F}\x{9640}\x{9642}\x{9644}\x{964B}\x{964C}' . +'\x{964D}\x{964F}\x{9650}\x{965B}\x{965C}\x{965D}\x{965E}\x{965F}\x{9662}' . +'\x{9663}\x{9664}\x{9665}\x{9666}\x{966A}\x{966C}\x{9670}\x{9672}\x{9673}' . +'\x{9675}\x{9676}\x{9677}\x{9678}\x{967A}\x{967D}\x{9685}\x{9686}\x{9688}' . +'\x{968A}\x{968B}\x{968D}\x{968E}\x{968F}\x{9694}\x{9695}\x{9697}\x{9698}' . +'\x{9699}\x{969B}\x{969C}\x{96A0}\x{96A3}\x{96A7}\x{96A8}\x{96AA}\x{96B0}' . +'\x{96B1}\x{96B2}\x{96B4}\x{96B6}\x{96B7}\x{96B8}\x{96B9}\x{96BB}\x{96BC}' . +'\x{96C0}\x{96C1}\x{96C4}\x{96C5}\x{96C6}\x{96C7}\x{96C9}\x{96CB}\x{96CC}' . +'\x{96CD}\x{96CE}\x{96D1}\x{96D5}\x{96D6}\x{96D9}\x{96DB}\x{96DC}\x{96E2}' . +'\x{96E3}\x{96E8}\x{96EA}\x{96EB}\x{96F0}\x{96F2}\x{96F6}\x{96F7}\x{96F9}' . +'\x{96FB}\x{9700}\x{9704}\x{9706}\x{9707}\x{9708}\x{970A}\x{970D}\x{970E}' . +'\x{970F}\x{9711}\x{9713}\x{9716}\x{9719}\x{971C}\x{971E}\x{9724}\x{9727}' . +'\x{972A}\x{9730}\x{9732}\x{9738}\x{9739}\x{973D}\x{973E}\x{9742}\x{9744}' . +'\x{9746}\x{9748}\x{9749}\x{9752}\x{9756}\x{9759}\x{975C}\x{975E}\x{9760}' . +'\x{9761}\x{9762}\x{9764}\x{9766}\x{9768}\x{9769}\x{976B}\x{976D}\x{9771}' . +'\x{9774}\x{9779}\x{977A}\x{977C}\x{9781}\x{9784}\x{9785}\x{9786}\x{978B}' . +'\x{978D}\x{978F}\x{9790}\x{9798}\x{979C}\x{97A0}\x{97A3}\x{97A6}\x{97A8}' . +'\x{97AB}\x{97AD}\x{97B3}\x{97B4}\x{97C3}\x{97C6}\x{97C8}\x{97CB}\x{97D3}' . +'\x{97DC}\x{97ED}\x{97EE}\x{97F2}\x{97F3}\x{97F5}\x{97F6}\x{97FB}\x{97FF}' . +'\x{9801}\x{9802}\x{9803}\x{9805}\x{9806}\x{9808}\x{980C}\x{980F}\x{9810}' . +'\x{9811}\x{9812}\x{9813}\x{9817}\x{9818}\x{981A}\x{9821}\x{9824}\x{982C}' . +'\x{982D}\x{9834}\x{9837}\x{9838}\x{983B}\x{983C}\x{983D}\x{9846}\x{984B}' . +'\x{984C}\x{984D}\x{984E}\x{984F}\x{9854}\x{9855}\x{9858}\x{985B}\x{985E}' . +'\x{9867}\x{986B}\x{986F}\x{9870}\x{9871}\x{9873}\x{9874}\x{98A8}\x{98AA}' . +'\x{98AF}\x{98B1}\x{98B6}\x{98C3}\x{98C4}\x{98C6}\x{98DB}\x{98DC}\x{98DF}' . +'\x{98E2}\x{98E9}\x{98EB}\x{98ED}\x{98EE}\x{98EF}\x{98F2}\x{98F4}\x{98FC}' . +'\x{98FD}\x{98FE}\x{9903}\x{9905}\x{9909}\x{990A}\x{990C}\x{9910}\x{9912}' . +'\x{9913}\x{9914}\x{9918}\x{991D}\x{991E}\x{9920}\x{9921}\x{9924}\x{9928}' . +'\x{992C}\x{992E}\x{993D}\x{993E}\x{9942}\x{9945}\x{9949}\x{994B}\x{994C}' . +'\x{9950}\x{9951}\x{9952}\x{9955}\x{9957}\x{9996}\x{9997}\x{9998}\x{9999}' . +'\x{99A5}\x{99A8}\x{99AC}\x{99AD}\x{99AE}\x{99B3}\x{99B4}\x{99BC}\x{99C1}' . +'\x{99C4}\x{99C5}\x{99C6}\x{99C8}\x{99D0}\x{99D1}\x{99D2}\x{99D5}\x{99D8}' . +'\x{99DB}\x{99DD}\x{99DF}\x{99E2}\x{99ED}\x{99EE}\x{99F1}\x{99F2}\x{99F8}' . +'\x{99FB}\x{99FF}\x{9A01}\x{9A05}\x{9A0E}\x{9A0F}\x{9A12}\x{9A13}\x{9A19}' . +'\x{9A28}\x{9A2B}\x{9A30}\x{9A37}\x{9A3E}\x{9A40}\x{9A42}\x{9A43}\x{9A45}' . +'\x{9A4D}\x{9A55}\x{9A57}\x{9A5A}\x{9A5B}\x{9A5F}\x{9A62}\x{9A64}\x{9A65}' . +'\x{9A69}\x{9A6A}\x{9A6B}\x{9AA8}\x{9AAD}\x{9AB0}\x{9AB8}\x{9ABC}\x{9AC0}' . +'\x{9AC4}\x{9ACF}\x{9AD1}\x{9AD3}\x{9AD4}\x{9AD8}\x{9ADE}\x{9ADF}\x{9AE2}' . +'\x{9AE3}\x{9AE6}\x{9AEA}\x{9AEB}\x{9AED}\x{9AEE}\x{9AEF}\x{9AF1}\x{9AF4}' . +'\x{9AF7}\x{9AFB}\x{9B06}\x{9B18}\x{9B1A}\x{9B1F}\x{9B22}\x{9B23}\x{9B25}' . +'\x{9B27}\x{9B28}\x{9B29}\x{9B2A}\x{9B2E}\x{9B2F}\x{9B31}\x{9B32}\x{9B3B}' . +'\x{9B3C}\x{9B41}\x{9B42}\x{9B43}\x{9B44}\x{9B45}\x{9B4D}\x{9B4E}\x{9B4F}' . +'\x{9B51}\x{9B54}\x{9B58}\x{9B5A}\x{9B6F}\x{9B74}\x{9B83}\x{9B8E}\x{9B91}' . +'\x{9B92}\x{9B93}\x{9B96}\x{9B97}\x{9B9F}\x{9BA0}\x{9BA8}\x{9BAA}\x{9BAB}' . +'\x{9BAD}\x{9BAE}\x{9BB4}\x{9BB9}\x{9BC0}\x{9BC6}\x{9BC9}\x{9BCA}\x{9BCF}' . +'\x{9BD1}\x{9BD2}\x{9BD4}\x{9BD6}\x{9BDB}\x{9BE1}\x{9BE2}\x{9BE3}\x{9BE4}' . +'\x{9BE8}\x{9BF0}\x{9BF1}\x{9BF2}\x{9BF5}\x{9C04}\x{9C06}\x{9C08}\x{9C09}' . +'\x{9C0A}\x{9C0C}\x{9C0D}\x{9C10}\x{9C12}\x{9C13}\x{9C14}\x{9C15}\x{9C1B}' . +'\x{9C21}\x{9C24}\x{9C25}\x{9C2D}\x{9C2E}\x{9C2F}\x{9C30}\x{9C32}\x{9C39}' . +'\x{9C3A}\x{9C3B}\x{9C3E}\x{9C46}\x{9C47}\x{9C48}\x{9C52}\x{9C57}\x{9C5A}' . +'\x{9C60}\x{9C67}\x{9C76}\x{9C78}\x{9CE5}\x{9CE7}\x{9CE9}\x{9CEB}\x{9CEC}' . +'\x{9CF0}\x{9CF3}\x{9CF4}\x{9CF6}\x{9D03}\x{9D06}\x{9D07}\x{9D08}\x{9D09}' . +'\x{9D0E}\x{9D12}\x{9D15}\x{9D1B}\x{9D1F}\x{9D23}\x{9D26}\x{9D28}\x{9D2A}' . +'\x{9D2B}\x{9D2C}\x{9D3B}\x{9D3E}\x{9D3F}\x{9D41}\x{9D44}\x{9D46}\x{9D48}' . +'\x{9D50}\x{9D51}\x{9D59}\x{9D5C}\x{9D5D}\x{9D5E}\x{9D60}\x{9D61}\x{9D64}' . +'\x{9D6C}\x{9D6F}\x{9D72}\x{9D7A}\x{9D87}\x{9D89}\x{9D8F}\x{9D9A}\x{9DA4}' . +'\x{9DA9}\x{9DAB}\x{9DAF}\x{9DB2}\x{9DB4}\x{9DB8}\x{9DBA}\x{9DBB}\x{9DC1}' . +'\x{9DC2}\x{9DC4}\x{9DC6}\x{9DCF}\x{9DD3}\x{9DD9}\x{9DE6}\x{9DED}\x{9DEF}' . +'\x{9DF2}\x{9DF8}\x{9DF9}\x{9DFA}\x{9DFD}\x{9E1A}\x{9E1B}\x{9E1E}\x{9E75}' . +'\x{9E78}\x{9E79}\x{9E7D}\x{9E7F}\x{9E81}\x{9E88}\x{9E8B}\x{9E8C}\x{9E91}' . +'\x{9E92}\x{9E93}\x{9E95}\x{9E97}\x{9E9D}\x{9E9F}\x{9EA5}\x{9EA6}\x{9EA9}' . +'\x{9EAA}\x{9EAD}\x{9EB8}\x{9EB9}\x{9EBA}\x{9EBB}\x{9EBC}\x{9EBE}\x{9EBF}' . +'\x{9EC4}\x{9ECC}\x{9ECD}\x{9ECE}\x{9ECF}\x{9ED0}\x{9ED2}\x{9ED4}\x{9ED8}' . +'\x{9ED9}\x{9EDB}\x{9EDC}\x{9EDD}\x{9EDE}\x{9EE0}\x{9EE5}\x{9EE8}\x{9EEF}' . +'\x{9EF4}\x{9EF6}\x{9EF7}\x{9EF9}\x{9EFB}\x{9EFC}\x{9EFD}\x{9F07}\x{9F08}' . +'\x{9F0E}\x{9F13}\x{9F15}\x{9F20}\x{9F21}\x{9F2C}\x{9F3B}\x{9F3E}\x{9F4A}' . +'\x{9F4B}\x{9F4E}\x{9F4F}\x{9F52}\x{9F54}\x{9F5F}\x{9F60}\x{9F61}\x{9F62}' . +'\x{9F63}\x{9F66}\x{9F67}\x{9F6A}\x{9F6C}\x{9F72}\x{9F76}\x{9F77}\x{9F8D}' . +'\x{9F95}\x{9F9C}\x{9F9D}\x{9FA0}]{1,15}$/iu'); diff --git a/library/Zend/Validate/Iban.php b/library/Zend/Validate/Iban.php new file mode 100755 index 000000000..eea78aae3 --- /dev/null +++ b/library/Zend/Validate/Iban.php @@ -0,0 +1,250 @@ + "Unknown country within the IBAN '%value%'", + self::FALSEFORMAT => "'%value%' has a false IBAN format", + self::CHECKFAILED => "'%value%' has failed the IBAN check", + ); + + /** + * Optional locale + * + * @var string|Zend_Locale|null + */ + protected $_locale; + + /** + * IBAN regexes by region + * + * @var array + */ + protected $_ibanregex = array( + 'AD' => '/^AD[0-9]{2}[0-9]{8}[A-Z0-9]{12}$/', + 'AE' => '/^AE[0-9]{2}[0-9]{3}[0-9]{16}$/', + 'AL' => '/^AL[0-9]{2}[0-9]{8}[A-Z0-9]{16}$/', + 'AT' => '/^AT[0-9]{2}[0-9]{5}[0-9]{11}$/', + 'AZ' => '/^AZ[0-9]{2}[0-9]{4}[A-Z0-9]{20}$/', + 'BA' => '/^BA[0-9]{2}[0-9]{6}[0-9]{10}$/', + 'BE' => '/^BE[0-9]{2}[0-9]{3}[0-9]{9}$/', + 'BG' => '/^BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}$/', + 'BH' => '/^BH[0-9]{2}[A-Z]{4}[A-Z0-9]{14}$/', + 'BR' => '/^BR[0-9]{2}[0-9]{8}[0-9]{5}[0-9]{10}[A-Z]{1}[A-Z0-9]{1}$/', + 'CH' => '/^CH[0-9]{2}[0-9]{5}[A-Z0-9]{12}$/', + 'CR' => '/^CR[0-9]{2}[0-9]{3}[0-9]{14}$/', + 'CS' => '/^CS[0-9]{2}[0-9]{3}[0-9]{15}$/', + 'CY' => '/^CY[0-9]{2}[0-9]{8}[A-Z0-9]{16}$/', + 'CZ' => '/^CZ[0-9]{2}[0-9]{4}[0-9]{16}$/', + 'DE' => '/^DE[0-9]{2}[0-9]{8}[0-9]{10}$/', + 'DK' => '/^DK[0-9]{2}[0-9]{4}[0-9]{10}$/', + 'DO' => '/^DO[0-9]{2}[A-Z0-9]{4}[0-9]{20}$/', + 'EE' => '/^EE[0-9]{2}[0-9]{4}[0-9]{12}$/', + 'ES' => '/^ES[0-9]{2}[0-9]{8}[0-9]{12}$/', + 'FR' => '/^FR[0-9]{2}[0-9]{10}[A-Z0-9]{11}[0-9]{2}$/', + 'FI' => '/^FI[0-9]{2}[0-9]{6}[0-9]{8}$/', + 'FO' => '/^FO[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}$/', + 'GB' => '/^GB[0-9]{2}[A-Z]{4}[0-9]{14}$/', + 'GE' => '/^GE[0-9]{2}[A-Z]{2}[0-9]{16}$/', + 'GI' => '/^GI[0-9]{2}[A-Z]{4}[A-Z0-9]{15}$/', + 'GL' => '/^GL[0-9]{2}[0-9]{4}[0-9]{9}[0-9]{1}$/', + 'GR' => '/^GR[0-9]{2}[0-9]{7}[A-Z0-9]{16}$/', + 'GT' => '/^GT[0-9]{2}[A-Z0-9]{4}[A-Z0-9]{20}$/', + 'HR' => '/^HR[0-9]{2}[0-9]{7}[0-9]{10}$/', + 'HU' => '/^HU[0-9]{2}[0-9]{7}[0-9]{1}[0-9]{15}[0-9]{1}$/', + 'IE' => '/^IE[0-9]{2}[A-Z0-9]{4}[0-9]{6}[0-9]{8}$/', + 'IL' => '/^IL[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{13}$/', + 'IS' => '/^IS[0-9]{2}[0-9]{4}[0-9]{18}$/', + 'IT' => '/^IT[0-9]{2}[A-Z]{1}[0-9]{10}[A-Z0-9]{12}$/', + 'KW' => '/^KW[0-9]{2}[A-Z]{4}[0-9]{3}[0-9]{22}$/', + 'KZ' => '/^KZ[A-Z]{2}[0-9]{2}[0-9]{3}[A-Z0-9]{13}$/', + 'LB' => '/^LB[0-9]{2}[0-9]{4}[A-Z0-9]{20}$/', + 'LI' => '/^LI[0-9]{2}[0-9]{5}[A-Z0-9]{12}$/', + 'LU' => '/^LU[0-9]{2}[0-9]{3}[A-Z0-9]{13}$/', + 'LT' => '/^LT[0-9]{2}[0-9]{5}[0-9]{11}$/', + 'LV' => '/^LV[0-9]{2}[A-Z]{4}[A-Z0-9]{13}$/', + 'MC' => '/^MC[0-9]{2}[0-9]{5}[0-9]{5}[A-Z0-9]{11}[0-9]{2}$/', + 'MD' => '/^MD[0-9]{2}[A-Z0-9]{20}$/', + 'ME' => '/^ME[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}$/', + 'MK' => '/^MK[0-9]{2}[0-9]{3}[A-Z0-9]{10}[0-9]{2}$/', + 'MR' => '/^MR13[0-9]{5}[0-9]{5}[0-9]{11}[0-9]{2}$/', + 'MU' => '/^MU[0-9]{2}[A-Z]{4}[0-9]{2}[0-9]{2}[0-9]{12}[0-9]{3}[A-Z]{2}$/', + 'MT' => '/^MT[0-9]{2}[A-Z]{4}[0-9]{5}[A-Z0-9]{18}$/', + 'NL' => '/^NL[0-9]{2}[A-Z]{4}[0-9]{10}$/', + 'NO' => '/^NO[0-9]{2}[0-9]{4}[0-9]{7}$/', + 'PK' => '/^PK[0-9]{2}[A-Z]{4}[0-9]{16}$/', + 'PL' => '/^PL[0-9]{2}[0-9]{8}[0-9]{16}$/', + 'PS' => '/^PS[0-9]{2}[A-Z]{4}[0-9]{21}$/', + 'PT' => '/^PT[0-9]{2}[0-9]{8}[0-9]{13}$/', + 'RO' => '/^RO[0-9]{2}[A-Z]{4}[A-Z0-9]{16}$/', + 'RS' => '/^RS[0-9]{2}[0-9]{3}[0-9]{13}[0-9]{2}$/', + 'SA' => '/^SA[0-9]{2}[0-9]{2}[A-Z0-9]{18}$/', + 'SE' => '/^SE[0-9]{2}[0-9]{3}[0-9]{17}$/', + 'SI' => '/^SI[0-9]{2}[0-9]{5}[0-9]{8}[0-9]{2}$/', + 'SK' => '/^SK[0-9]{2}[0-9]{4}[0-9]{16}$/', + 'SM' => '/^SM[0-9]{2}[A-Z]{1}[0-9]{5}[0-9]{5}[A-Z0-9]{12}$/', + 'TN' => '/^TN[0-9]{2}[0-9]{5}[0-9]{15}$/', + 'TR' => '/^TR[0-9]{2}[0-9]{5}[A-Z0-9]{17}$/', + 'VG' => '/^VG[0-9]{2}[A-Z]{4}[0-9]{16}$/' + ); + + /** + * Sets validator options + * + * @param string|Zend_Config|Zend_Locale $locale OPTIONAL + */ + public function __construct($locale = null) + { + if ($locale instanceof Zend_Config) { + $locale = $locale->toArray(); + } + + if (is_array($locale)) { + if (array_key_exists('locale', $locale)) { + $locale = $locale['locale']; + } else { + $locale = null; + } + } + + if (empty($locale)) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Locale')) { + $locale = Zend_Registry::get('Zend_Locale'); + } + } + + if ($locale !== null) { + $this->setLocale($locale); + } + } + + /** + * Returns the locale option + * + * @return string|Zend_Locale|null + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Sets the locale option + * + * @param string|Zend_Locale $locale + * @throws Zend_Locale_Exception + * @throws Zend_Validate_Exception + * @return Zend_Validate_Date provides a fluent interface + */ + public function setLocale($locale = null) + { + if ($locale !== false) { + require_once 'Zend/Locale.php'; + $locale = Zend_Locale::findLocale($locale); + if (strlen($locale) < 4) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Region must be given for IBAN validation'); + } + } + + $this->_locale = $locale; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if $value is a valid IBAN + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + $value = strtoupper($value); + $this->_setValue($value); + + if (empty($this->_locale)) { + $region = substr($value, 0, 2); + } else { + $region = new Zend_Locale($this->_locale); + $region = $region->getRegion(); + } + + if (!array_key_exists($region, $this->_ibanregex)) { + $this->_setValue($region); + $this->_error(self::NOTSUPPORTED); + return false; + } + + if (!preg_match($this->_ibanregex[$region], $value)) { + $this->_error(self::FALSEFORMAT); + return false; + } + + $format = substr($value, 4) . substr($value, 0, 4); + $format = str_replace( + array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'), + array('10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', + '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35'), + $format); + + $temp = intval(substr($format, 0, 1)); + $len = strlen($format); + for ($x = 1; $x < $len; ++$x) { + $temp *= 10; + $temp += intval(substr($format, $x, 1)); + $temp %= 97; + } + + if ($temp != 1) { + $this->_error(self::CHECKFAILED); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Identical.php b/library/Zend/Validate/Identical.php new file mode 100755 index 000000000..97f3b8cce --- /dev/null +++ b/library/Zend/Validate/Identical.php @@ -0,0 +1,164 @@ + "The two given tokens do not match", + self::MISSING_TOKEN => 'No token was provided to match against', + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'token' => '_tokenString' + ); + + /** + * Original token against which to validate + * @var string + */ + protected $_tokenString; + protected $_token; + protected $_strict = true; + + /** + * Sets validator options + * + * @param mixed $token + */ + public function __construct($token = null) + { + if ($token instanceof Zend_Config) { + $token = $token->toArray(); + } + + if (is_array($token) && array_key_exists('token', $token)) { + if (array_key_exists('strict', $token)) { + $this->setStrict($token['strict']); + } + + $this->setToken($token['token']); + } else if (null !== $token) { + $this->setToken($token); + } + } + + /** + * Retrieve token + * + * @return string + */ + public function getToken() + { + return $this->_token; + } + + /** + * Set token against which to compare + * + * @param mixed $token + * @return Zend_Validate_Identical + */ + public function setToken($token) + { + $this->_tokenString = $token; + $this->_token = $token; + return $this; + } + + /** + * Returns the strict parameter + * + * @return boolean + */ + public function getStrict() + { + return $this->_strict; + } + + /** + * Sets the strict parameter + * + * @param Zend_Validate_Identical + * @return $this + */ + public function setStrict($strict) + { + $this->_strict = (boolean) $strict; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if a token has been set and the provided value + * matches that token. + * + * @param mixed $value + * @param array $context + * @return boolean + */ + public function isValid($value, $context = null) + { + $this->_setValue($value); + + if (($context !== null) && isset($context) && array_key_exists($this->getToken(), $context)) { + $token = $context[$this->getToken()]; + } else { + $token = $this->getToken(); + } + + if ($token === null) { + $this->_error(self::MISSING_TOKEN); + return false; + } + + $strict = $this->getStrict(); + if (($strict && ($value !== $token)) || (!$strict && ($value != $token))) { + $this->_error(self::NOT_SAME); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/InArray.php b/library/Zend/Validate/InArray.php new file mode 100755 index 000000000..3f3ec243a --- /dev/null +++ b/library/Zend/Validate/InArray.php @@ -0,0 +1,204 @@ + "'%value%' was not found in the haystack", + ); + + /** + * Haystack of possible values + * + * @var array + */ + protected $_haystack; + + /** + * Whether a strict in_array() invocation is used + * + * @var boolean + */ + protected $_strict = false; + + /** + * Whether a recursive search should be done + * + * @var boolean + */ + protected $_recursive = false; + + /** + * Sets validator options + * + * @param array|Zend_Config $options Validator options + * @throws Zend_Validate_Exception + */ + public function __construct($options) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Array expected as parameter'); + } else { + $count = func_num_args(); + $temp = array(); + if ($count > 1) { + $temp['haystack'] = func_get_arg(0); + $temp['strict'] = func_get_arg(1); + $options = $temp; + } else { + $temp = func_get_arg(0); + if (!array_key_exists('haystack', $options)) { + $options = array(); + $options['haystack'] = $temp; + } else { + $options = $temp; + } + } + } + + $this->setHaystack($options['haystack']); + if (array_key_exists('strict', $options)) { + $this->setStrict($options['strict']); + } + + if (array_key_exists('recursive', $options)) { + $this->setRecursive($options['recursive']); + } + } + + /** + * Returns the haystack option + * + * @return mixed + */ + public function getHaystack() + { + return $this->_haystack; + } + + /** + * Sets the haystack option + * + * @param mixed $haystack + * @return Zend_Validate_InArray Provides a fluent interface + */ + public function setHaystack(array $haystack) + { + $this->_haystack = $haystack; + return $this; + } + + /** + * Returns the strict option + * + * @return boolean + */ + public function getStrict() + { + return $this->_strict; + } + + /** + * Sets the strict option + * + * @param boolean $strict + * @return Zend_Validate_InArray Provides a fluent interface + */ + public function setStrict($strict) + { + $this->_strict = (boolean) $strict; + return $this; + } + + /** + * Returns the recursive option + * + * @return boolean + */ + public function getRecursive() + { + return $this->_recursive; + } + + /** + * Sets the recursive option + * + * @param boolean $recursive + * @return Zend_Validate_InArray Provides a fluent interface + */ + public function setRecursive($recursive) + { + $this->_recursive = (boolean) $recursive; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is contained in the haystack option. If the strict + * option is true, then the type of $value is also checked. + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + if ($this->getRecursive()) { + $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($this->_haystack)); + foreach($iterator as $element) { + if ($this->_strict) { + if ($element === $value) { + return true; + } + } else if ($element == $value) { + return true; + } + } + } else { + if (in_array($value, $this->_haystack, $this->_strict)) { + return true; + } + } + + $this->_error(self::NOT_IN_ARRAY); + return false; + } +} diff --git a/library/Zend/Validate/Int.php b/library/Zend/Validate/Int.php new file mode 100755 index 000000000..1bcf31dba --- /dev/null +++ b/library/Zend/Validate/Int.php @@ -0,0 +1,149 @@ + "Invalid type given. String or integer expected", + self::NOT_INT => "'%value%' does not appear to be an integer", + ); + + protected $_locale; + + /** + * Constructor for the integer validator + * + * @param string|Zend_Config|Zend_Locale $locale + */ + public function __construct($locale = null) + { + if ($locale instanceof Zend_Config) { + $locale = $locale->toArray(); + } + + if (is_array($locale)) { + if (array_key_exists('locale', $locale)) { + $locale = $locale['locale']; + } else { + $locale = null; + } + } + + if (empty($locale)) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Locale')) { + $locale = Zend_Registry::get('Zend_Locale'); + } + } + + if ($locale !== null) { + $this->setLocale($locale); + } + } + + /** + * Returns the set locale + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Sets the locale to use + * + * @param string|Zend_Locale $locale + * @return $this + */ + public function setLocale($locale = null) + { + require_once 'Zend/Locale.php'; + $this->_locale = Zend_Locale::findLocale($locale); + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is a valid integer + * + * @param string|integer $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value) && !is_float($value)) { + $this->_error(self::INVALID); + return false; + } + + if (is_int($value)) { + return true; + } + + $this->_setValue($value); + if ($this->_locale === null) { + $locale = localeconv(); + $valueFiltered = str_replace($locale['decimal_point'], '.', $value); + $valueFiltered = str_replace($locale['thousands_sep'], '', $valueFiltered); + + if (strval(intval($valueFiltered)) != $valueFiltered) { + $this->_error(self::NOT_INT); + return false; + } + + } else { + try { + if (!Zend_Locale_Format::isInteger($value, array('locale' => $this->_locale))) { + $this->_error(self::NOT_INT); + return false; + } + } catch (Zend_Locale_Exception $e) { + $this->_error(self::NOT_INT); + return false; + } + } + + return true; + } +} diff --git a/library/Zend/Validate/Interface.php b/library/Zend/Validate/Interface.php new file mode 100755 index 000000000..f1d0883c3 --- /dev/null +++ b/library/Zend/Validate/Interface.php @@ -0,0 +1,54 @@ + "Invalid type given. String expected", + self::NOT_IP_ADDRESS => "'%value%' does not appear to be a valid IP address", + ); + + /** + * internal options + * + * @var array + */ + protected $_options = array( + 'allowipv6' => true, + 'allowipv4' => true + ); + + /** + * Sets validator options + * + * @param array $options OPTIONAL Options to set, see the manual for all available options + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['allowipv6'] = array_shift($options); + if (!empty($options)) { + $temp['allowipv4'] = array_shift($options); + } + + $options = $temp; + } + + $options += $this->_options; + $this->setOptions($options); + } + + /** + * Returns all set options + * + * @return array + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Sets the options for this validator + * + * @param array $options + * @throws Zend_Validate_Exception + * @return Zend_Validate_Ip + */ + public function setOptions($options) + { + if (array_key_exists('allowipv6', $options)) { + $this->_options['allowipv6'] = (boolean) $options['allowipv6']; + } + + if (array_key_exists('allowipv4', $options)) { + $this->_options['allowipv4'] = (boolean) $options['allowipv4']; + } + + if (!$this->_options['allowipv4'] && !$this->_options['allowipv6']) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Nothing to validate. Check your options'); + } + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is a valid IP address + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + if (($this->_options['allowipv4'] && !$this->_options['allowipv6'] && !$this->_validateIPv4($value)) || + (!$this->_options['allowipv4'] && $this->_options['allowipv6'] && !$this->_validateIPv6($value)) || + ($this->_options['allowipv4'] && $this->_options['allowipv6'] && !$this->_validateIPv4($value) && !$this->_validateIPv6($value))) { + $this->_error(self::NOT_IP_ADDRESS); + return false; + } + + return true; + } + + /** + * Validates an IPv4 address + * + * @param string $value + * @return bool + */ + protected function _validateIPv4($value) { + $ip2long = ip2long($value); + if($ip2long === false) { + return false; + } + + return $value == long2ip($ip2long); + } + + /** + * Validates an IPv6 address + * + * @param string $value Value to check against + * @return boolean True when $value is a valid ipv6 address + * False otherwise + */ + protected function _validateIPv6($value) { + if (strlen($value) < 3) { + return $value == '::'; + } + + if (strpos($value, '.')) { + $lastcolon = strrpos($value, ':'); + if (!($lastcolon && $this->_validateIPv4(substr($value, $lastcolon + 1)))) { + return false; + } + + $value = substr($value, 0, $lastcolon) . ':0:0'; + } + + if (strpos($value, '::') === false) { + return preg_match('/\A(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}\z/i', $value); + } + + $colonCount = substr_count($value, ':'); + if ($colonCount < 8) { + return preg_match('/\A(?::|(?:[a-f0-9]{1,4}:)+):(?:(?:[a-f0-9]{1,4}:)*[a-f0-9]{1,4})?\z/i', $value); + } + + // special case with ending or starting double colon + if ($colonCount == 8) { + return preg_match('/\A(?:::)?(?:[a-f0-9]{1,4}:){6}[a-f0-9]{1,4}(?:::)?\z/i', $value); + } + + return false; + } +} diff --git a/library/Zend/Validate/Isbn.php b/library/Zend/Validate/Isbn.php new file mode 100755 index 000000000..86c0c5c49 --- /dev/null +++ b/library/Zend/Validate/Isbn.php @@ -0,0 +1,278 @@ + "Invalid type given. String or integer expected", + self::NO_ISBN => "'%value%' is not a valid ISBN number", + ); + + /** + * Allowed type. + * + * @var string + */ + protected $_type = self::AUTO; + + /** + * Separator character. + * + * @var string + */ + protected $_separator = ''; + + /** + * Set up options. + * + * @param Zend_Config|array $options + * @throws Zend_Validate_Exception When $options is not valid + */ + public function __construct($options = array()) + { + // prepare options + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + if (!is_array($options)) { + /** + * @see Zend_Validate_Exception + */ + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid options provided.'); + } + + // set type + if (array_key_exists('type', $options)) { + $this->setType($options['type']); + } + + // set separator + if (array_key_exists('separator', $options)) { + $this->setSeparator($options['separator']); + } + } + + /** + * Detect input format. + * + * @return string + */ + protected function _detectFormat() + { + // prepare separator and pattern list + $sep = quotemeta($this->_separator); + $patterns = array(); + $lengths = array(); + + // check for ISBN-10 + if ($this->_type == self::ISBN10 || $this->_type == self::AUTO) { + if (empty($sep)) { + $pattern = '/^[0-9]{9}[0-9X]{1}$/'; + $length = 10; + } else { + $pattern = "/^[0-9]{1,7}[{$sep}]{1}[0-9]{1,7}[{$sep}]{1}[0-9]{1,7}[{$sep}]{1}[0-9X]{1}$/"; + $length = 13; + } + + $patterns[$pattern] = self::ISBN10; + $lengths[$pattern] = $length; + } + + // check for ISBN-13 + if ($this->_type == self::ISBN13 || $this->_type == self::AUTO) { + if (empty($sep)) { + $pattern = '/^[0-9]{13}$/'; + $length = 13; + } else { + $pattern = "/^[0-9]{1,9}[{$sep}]{1}[0-9]{1,5}[{$sep}]{1}[0-9]{1,9}[{$sep}]{1}[0-9]{1,9}[{$sep}]{1}[0-9]{1}$/"; + $length = 17; + } + + $patterns[$pattern] = self::ISBN13; + $lengths[$pattern] = $length; + } + + // check pattern list + foreach ($patterns as $pattern => $type) { + if ((strlen($this->_value) == $lengths[$pattern]) && preg_match($pattern, $this->_value)) { + return $type; + } + } + + return null; + } + + /** + * Defined by Zend_Validate_Interface. + * + * Returns true if and only if $value is a valid ISBN. + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value)) { + $this->_error(self::INVALID); + return false; + } + + $value = (string) $value; + $this->_setValue($value); + + switch ($this->_detectFormat()) { + case self::ISBN10: + // sum + $isbn10 = str_replace($this->_separator, '', $value); + $sum = 0; + for ($i = 0; $i < 9; $i++) { + $sum += (10 - $i) * $isbn10{$i}; + } + + // checksum + $checksum = 11 - ($sum % 11); + if ($checksum == 11) { + $checksum = '0'; + } elseif ($checksum == 10) { + $checksum = 'X'; + } + break; + + case self::ISBN13: + // sum + $isbn13 = str_replace($this->_separator, '', $value); + $sum = 0; + for ($i = 0; $i < 12; $i++) { + if ($i % 2 == 0) { + $sum += $isbn13{$i}; + } else { + $sum += 3 * $isbn13{$i}; + } + } + // checksum + $checksum = 10 - ($sum % 10); + if ($checksum == 10) { + $checksum = '0'; + } + break; + + default: + $this->_error(self::NO_ISBN); + return false; + } + + // validate + if (substr($this->_value, -1) != $checksum) { + $this->_error(self::NO_ISBN); + return false; + } + return true; + } + + /** + * Set separator characters. + * + * It is allowed only empty string, hyphen and space. + * + * @param string $separator + * @throws Zend_Validate_Exception When $separator is not valid + * @return Zend_Validate_Isbn Provides a fluent interface + */ + public function setSeparator($separator) + { + // check separator + if (!in_array($separator, array('-', ' ', ''))) { + /** + * @see Zend_Validate_Exception + */ + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid ISBN separator.'); + } + + $this->_separator = $separator; + return $this; + } + + /** + * Get separator characters. + * + * @return string + */ + public function getSeparator() + { + return $this->_separator; + } + + /** + * Set allowed ISBN type. + * + * @param string $type + * @throws Zend_Validate_Exception When $type is not valid + * @return Zend_Validate_Isbn Provides a fluent interface + */ + public function setType($type) + { + // check type + if (!in_array($type, array(self::AUTO, self::ISBN10, self::ISBN13))) { + /** + * @see Zend_Validate_Exception + */ + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Invalid ISBN type'); + } + + $this->_type = $type; + return $this; + } + + /** + * Get allowed ISBN type. + * + * @return string + */ + public function getType() + { + return $this->_type; + } +} diff --git a/library/Zend/Validate/Ldap/Dn.php b/library/Zend/Validate/Ldap/Dn.php new file mode 100755 index 000000000..3033cec1e --- /dev/null +++ b/library/Zend/Validate/Ldap/Dn.php @@ -0,0 +1,65 @@ + 'DN is malformed', + ); + + /** + * Defined by Zend_Validate_Interface. + * + * Returns true if and only if $value is a valid DN. + * + * @param string $value The value to be validated. + * + * @return boolean + */ + public function isValid($value) + { + $valid = Zend_Ldap_Dn::checkDn($value); + if ($valid === false) { + $this->_error(self::MALFORMED); + return false; + } + return true; + } +} diff --git a/library/Zend/Validate/LessThan.php b/library/Zend/Validate/LessThan.php new file mode 100755 index 000000000..41c28115b --- /dev/null +++ b/library/Zend/Validate/LessThan.php @@ -0,0 +1,122 @@ + "'%value%' is not less than '%max%'" + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'max' => '_max' + ); + + /** + * Maximum value + * + * @var mixed + */ + protected $_max; + + /** + * Sets validator options + * + * @param mixed|Zend_Config $max + * @throws Zend_Validate_Exception + */ + public function __construct($max) + { + if ($max instanceof Zend_Config) { + $max = $max->toArray(); + } + + if (is_array($max)) { + if (array_key_exists('max', $max)) { + $max = $max['max']; + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Missing option 'max'"); + } + } + + $this->setMax($max); + } + + /** + * Returns the max option + * + * @return mixed + */ + public function getMax() + { + return $this->_max; + } + + /** + * Sets the max option + * + * @param mixed $max + * @return Zend_Validate_LessThan Provides a fluent interface + */ + public function setMax($max) + { + $this->_max = $max; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is less than max option + * + * @param mixed $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + if ($this->_max <= $value) { + $this->_error(self::NOT_LESS); + return false; + } + return true; + } + +} diff --git a/library/Zend/Validate/NotEmpty.php b/library/Zend/Validate/NotEmpty.php new file mode 100755 index 000000000..1bb3ceb82 --- /dev/null +++ b/library/Zend/Validate/NotEmpty.php @@ -0,0 +1,279 @@ + 'boolean', + self::INTEGER => 'integer', + self::FLOAT => 'float', + self::STRING => 'string', + self::ZERO => 'zero', + self::EMPTY_ARRAY => 'array', + self::NULL => 'null', + self::PHP => 'php', + self::SPACE => 'space', + self::OBJECT => 'object', + self::OBJECT_STRING => 'objectstring', + self::OBJECT_COUNT => 'objectcount', + self::ALL => 'all', + ); + + /** + * @var array + */ + protected $_messageTemplates = array( + self::IS_EMPTY => "Value is required and can't be empty", + self::INVALID => "Invalid type given. String, integer, float, boolean or array expected", + ); + + /** + * Internal type to detect + * + * @var integer + */ + protected $_type = 493; + + /** + * Constructor + * + * @param string|array|Zend_Config $options OPTIONAL + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp = array(); + if (!empty($options)) { + $temp['type'] = array_shift($options); + } + + $options = $temp; + } + + if (is_array($options) && array_key_exists('type', $options)) { + $this->setType($options['type']); + } + } + + /** + * Returns the set types + * + * @return array + */ + public function getType() + { + return $this->_type; + } + + /** + * Set the types + * + * @param integer|array $type + * @throws Zend_Validate_Exception + * @return Zend_Validate_NotEmpty + */ + public function setType($type = null) + { + if (is_array($type)) { + $detected = 0; + foreach($type as $value) { + if (is_int($value)) { + $detected += $value; + } else if (in_array($value, $this->_constants)) { + $detected += array_search($value, $this->_constants); + } + } + + $type = $detected; + } else if (is_string($type) && in_array($type, $this->_constants)) { + $type = array_search($type, $this->_constants); + } + + if (!is_int($type) || ($type < 0) || ($type > self::ALL)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Unknown type'); + } + + $this->_type = $type; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is not an empty value. + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if ($value !== null && !is_string($value) && !is_int($value) && !is_float($value) && + !is_bool($value) && !is_array($value) && !is_object($value)) { + $this->_error(self::INVALID); + return false; + } + + $type = $this->getType(); + $this->_setValue($value); + $object = false; + + // OBJECT_COUNT (countable object) + if ($type >= self::OBJECT_COUNT) { + $type -= self::OBJECT_COUNT; + $object = true; + + if (is_object($value) && ($value instanceof Countable) && (count($value) == 0)) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // OBJECT_STRING (object's toString) + if ($type >= self::OBJECT_STRING) { + $type -= self::OBJECT_STRING; + $object = true; + + if ((is_object($value) && (!method_exists($value, '__toString'))) || + (is_object($value) && (method_exists($value, '__toString')) && (((string) $value) == ""))) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // OBJECT (object) + if ($type >= self::OBJECT) { + $type -= self::OBJECT; + // fall trough, objects are always not empty + } else if ($object === false) { + // object not allowed but object given -> return false + if (is_object($value)) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // SPACE (' ') + if ($type >= self::SPACE) { + $type -= self::SPACE; + if (is_string($value) && (preg_match('/^\s+$/s', $value))) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // NULL (null) + if ($type >= self::NULL) { + $type -= self::NULL; + if ($value === null) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // EMPTY_ARRAY (array()) + if ($type >= self::EMPTY_ARRAY) { + $type -= self::EMPTY_ARRAY; + if (is_array($value) && ($value == array())) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // ZERO ('0') + if ($type >= self::ZERO) { + $type -= self::ZERO; + if (is_string($value) && ($value == '0')) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // STRING ('') + if ($type >= self::STRING) { + $type -= self::STRING; + if (is_string($value) && ($value == '')) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // FLOAT (0.0) + if ($type >= self::FLOAT) { + $type -= self::FLOAT; + if (is_float($value) && ($value == 0.0)) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // INTEGER (0) + if ($type >= self::INTEGER) { + $type -= self::INTEGER; + if (is_int($value) && ($value == 0)) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + // BOOLEAN (false) + if ($type >= self::BOOLEAN) { + $type -= self::BOOLEAN; + if (is_bool($value) && ($value == false)) { + $this->_error(self::IS_EMPTY); + return false; + } + } + + return true; + } +} diff --git a/library/Zend/Validate/PostCode.php b/library/Zend/Validate/PostCode.php new file mode 100755 index 000000000..7f00d04db --- /dev/null +++ b/library/Zend/Validate/PostCode.php @@ -0,0 +1,210 @@ + "Invalid type given. String or integer expected", + self::NO_MATCH => "'%value%' does not appear to be a postal code", + ); + + /** + * Locale to use + * + * @var string + */ + protected $_locale; + + /** + * Manual postal code format + * + * @var unknown_type + */ + protected $_format; + + /** + * Constructor for the integer validator + * + * Accepts either a string locale, a Zend_Locale object, or an array or + * Zend_Config object containing the keys "locale" and/or "format". + * + * @param string|Zend_Locale|array|Zend_Config $options + * @throws Zend_Validate_Exception On empty format + */ + public function __construct($options = null) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (empty($options)) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Locale')) { + $this->setLocale(Zend_Registry::get('Zend_Locale')); + } + } elseif (is_array($options)) { + // Received + if (array_key_exists('locale', $options)) { + $this->setLocale($options['locale']); + } + + if (array_key_exists('format', $options)) { + $this->setFormat($options['format']); + } + } elseif ($options instanceof Zend_Locale || is_string($options)) { + // Received Locale object or string locale + $this->setLocale($options); + } + + $format = $this->getFormat(); + if (empty($format)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("A postcode-format string has to be given for validation"); + } + } + + /** + * Returns the set locale + * + * @return string|Zend_Locale The set locale + */ + public function getLocale() + { + return $this->_locale; + } + + /** + * Sets the locale to use + * + * @param string|Zend_Locale $locale + * @throws Zend_Validate_Exception On unrecognised region + * @throws Zend_Validate_Exception On not detected format + * @return Zend_Validate_PostCode Provides a fluent interface + */ + public function setLocale($locale = null) + { + require_once 'Zend/Locale.php'; + $this->_locale = Zend_Locale::findLocale($locale); + $locale = new Zend_Locale($this->_locale); + $region = $locale->getRegion(); + if (empty($region)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Unable to detect a region for the locale '$locale'"); + } + + $format = Zend_Locale::getTranslation( + $locale->getRegion(), + 'postaltoterritory', + $this->_locale + ); + + if (empty($format)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Unable to detect a postcode format for the region '{$locale->getRegion()}'"); + } + + $this->setFormat($format); + return $this; + } + + /** + * Returns the set postal code format + * + * @return string + */ + public function getFormat() + { + return $this->_format; + } + + /** + * Sets a self defined postal format as regex + * + * @param string $format + * @throws Zend_Validate_Exception On empty format + * @return Zend_Validate_PostCode Provides a fluent interface + */ + public function setFormat($format) + { + if (empty($format) || !is_string($format)) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("A postcode-format string has to be given for validation"); + } + + if ($format[0] !== '/') { + $format = '/^' . $format; + } + + if ($format[strlen($format) - 1] !== '/') { + $format .= '$/'; + } + + $this->_format = $format; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value is a valid postalcode + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + $this->_setValue($value); + if (!is_string($value) && !is_int($value)) { + $this->_error(self::INVALID); + return false; + } + + $format = $this->getFormat(); + if (!preg_match($format, $value)) { + $this->_error(self::NO_MATCH); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Regex.php b/library/Zend/Validate/Regex.php new file mode 100755 index 000000000..5b4360a22 --- /dev/null +++ b/library/Zend/Validate/Regex.php @@ -0,0 +1,146 @@ + "Invalid type given. String, integer or float expected", + self::NOT_MATCH => "'%value%' does not match against pattern '%pattern%'", + self::ERROROUS => "There was an internal error while using the pattern '%pattern%'", + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'pattern' => '_pattern' + ); + + /** + * Regular expression pattern + * + * @var string + */ + protected $_pattern; + + /** + * Sets validator options + * + * @param string|Zend_Config $pattern + * @throws Zend_Validate_Exception On missing 'pattern' parameter + */ + public function __construct($pattern) + { + if ($pattern instanceof Zend_Config) { + $pattern = $pattern->toArray(); + } + + if (is_array($pattern)) { + if (array_key_exists('pattern', $pattern)) { + $pattern = $pattern['pattern']; + } else { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Missing option 'pattern'"); + } + } + + $this->setPattern($pattern); + } + + /** + * Returns the pattern option + * + * @return string + */ + public function getPattern() + { + return $this->_pattern; + } + + /** + * Sets the pattern option + * + * @param string $pattern + * @throws Zend_Validate_Exception if there is a fatal error in pattern matching + * @return Zend_Validate_Regex Provides a fluent interface + */ + public function setPattern($pattern) + { + $this->_pattern = (string) $pattern; + $status = @preg_match($this->_pattern, "Test"); + + if (false === $status) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("Internal error while using the pattern '$this->_pattern'"); + } + + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if $value matches against the pattern option + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value) && !is_int($value) && !is_float($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + + $status = @preg_match($this->_pattern, $value); + if (false === $status) { + $this->_error(self::ERROROUS); + return false; + } + + if (!$status) { + $this->_error(self::NOT_MATCH); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Sitemap/Changefreq.php b/library/Zend/Validate/Sitemap/Changefreq.php new file mode 100755 index 000000000..b9f653f43 --- /dev/null +++ b/library/Zend/Validate/Sitemap/Changefreq.php @@ -0,0 +1,95 @@ + value + * + * @link http://www.sitemaps.org/protocol.php Sitemaps XML format + * + * @category Zend + * @package Zend_Validate + * @subpackage Sitemap + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Validate_Sitemap_Changefreq extends Zend_Validate_Abstract +{ + /** + * Validation key for not valid + * + */ + const NOT_VALID = 'sitemapChangefreqNotValid'; + const INVALID = 'sitemapChangefreqInvalid'; + + /** + * Validation failure message template definitions + * + * @var array + */ + protected $_messageTemplates = array( + self::NOT_VALID => "'%value%' is not a valid sitemap changefreq", + self::INVALID => "Invalid type given. String expected", + ); + + /** + * Valid change frequencies + * + * @var array + */ + protected $_changeFreqs = array( + 'always', 'hourly', 'daily', 'weekly', + 'monthly', 'yearly', 'never' + ); + + /** + * Validates if a string is valid as a sitemap changefreq + * + * @link http://www.sitemaps.org/protocol.php#changefreqdef + * + * @param string $value value to validate + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + if (!is_string($value)) { + return false; + } + + if (!in_array($value, $this->_changeFreqs, true)) { + $this->_error(self::NOT_VALID); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Sitemap/Lastmod.php b/library/Zend/Validate/Sitemap/Lastmod.php new file mode 100755 index 000000000..1e81828f1 --- /dev/null +++ b/library/Zend/Validate/Sitemap/Lastmod.php @@ -0,0 +1,88 @@ + value + * + * @link http://www.sitemaps.org/protocol.php Sitemaps XML format + * + * @category Zend + * @package Zend_Validate + * @subpackage Sitemap + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Validate_Sitemap_Lastmod extends Zend_Validate_Abstract +{ + /** + * Regular expression to use when validating + * + */ + const LASTMOD_REGEX = '/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])(T([0-1][0-9]|2[0-3])(:[0-5][0-9])(:[0-5][0-9])?(\\+|-)([0-1][0-9]|2[0-3]):[0-5][0-9])?$/'; + + /** + * Validation key for not valid + * + */ + const NOT_VALID = 'sitemapLastmodNotValid'; + const INVALID = 'sitemapLastmodInvalid'; + + /** + * Validation failure message template definitions + * + * @var array + */ + protected $_messageTemplates = array( + self::NOT_VALID => "'%value%' is not a valid sitemap lastmod", + self::INVALID => "Invalid type given. String expected", + ); + + /** + * Validates if a string is valid as a sitemap lastmod + * + * @link http://www.sitemaps.org/protocol.php#lastmoddef + * + * @param string $value value to validate + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + $result = @preg_match(self::LASTMOD_REGEX, $value); + if ($result != 1) { + $this->_error(self::NOT_VALID); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Sitemap/Loc.php b/library/Zend/Validate/Sitemap/Loc.php new file mode 100755 index 000000000..24c78ed8a --- /dev/null +++ b/library/Zend/Validate/Sitemap/Loc.php @@ -0,0 +1,87 @@ + value + * + * @link http://www.sitemaps.org/protocol.php Sitemaps XML format + * + * @category Zend + * @package Zend_Validate + * @subpackage Sitemap + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Validate_Sitemap_Loc extends Zend_Validate_Abstract +{ + /** + * Validation key for not valid + * + */ + const NOT_VALID = 'sitemapLocNotValid'; + const INVALID = 'sitemapLocInvalid'; + + /** + * Validation failure message template definitions + * + * @var array + */ + protected $_messageTemplates = array( + self::NOT_VALID => "'%value%' is not a valid sitemap location", + self::INVALID => "Invalid type given. String expected", + ); + + /** + * Validates if a string is valid as a sitemap location + * + * @link http://www.sitemaps.org/protocol.php#locdef + * + * @param string $value value to validate + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + $result = Zend_Uri::check($value); + if ($result !== true) { + $this->_error(self::NOT_VALID); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/Sitemap/Priority.php b/library/Zend/Validate/Sitemap/Priority.php new file mode 100755 index 000000000..0f85f0997 --- /dev/null +++ b/library/Zend/Validate/Sitemap/Priority.php @@ -0,0 +1,82 @@ + value + * + * @link http://www.sitemaps.org/protocol.php Sitemaps XML format + * + * @category Zend + * @package Zend_Validate + * @subpackage Sitemap + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_Validate_Sitemap_Priority extends Zend_Validate_Abstract +{ + /** + * Validation key for not valid + * + */ + const NOT_VALID = 'sitemapPriorityNotValid'; + const INVALID = 'sitemapPriorityInvalid'; + + /** + * Validation failure message template definitions + * + * @var array + */ + protected $_messageTemplates = array( + self::NOT_VALID => "'%value%' is not a valid sitemap priority", + self::INVALID => "Invalid type given. Numeric string, integer or float expected", + ); + + /** + * Validates if a string is valid as a sitemap priority + * + * @link http://www.sitemaps.org/protocol.php#prioritydef + * + * @param string $value value to validate + * @return boolean + */ + public function isValid($value) + { + if (!is_numeric($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + $value = (float) $value; + if ($value < 0 || $value > 1) { + $this->_error(self::NOT_VALID); + return false; + } + + return true; + } +} diff --git a/library/Zend/Validate/StringLength.php b/library/Zend/Validate/StringLength.php new file mode 100755 index 000000000..23dcac841 --- /dev/null +++ b/library/Zend/Validate/StringLength.php @@ -0,0 +1,267 @@ + "Invalid type given. String expected", + self::TOO_SHORT => "'%value%' is less than %min% characters long", + self::TOO_LONG => "'%value%' is more than %max% characters long", + ); + + /** + * @var array + */ + protected $_messageVariables = array( + 'min' => '_min', + 'max' => '_max' + ); + + /** + * Minimum length + * + * @var integer + */ + protected $_min; + + /** + * Maximum length + * + * If null, there is no maximum length + * + * @var integer|null + */ + protected $_max; + + /** + * Encoding to use + * + * @var string|null + */ + protected $_encoding; + + /** + * Sets validator options + * + * @param integer|array|Zend_Config $options + */ + public function __construct($options = array()) + { + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } else if (!is_array($options)) { + $options = func_get_args(); + $temp['min'] = array_shift($options); + if (!empty($options)) { + $temp['max'] = array_shift($options); + } + + if (!empty($options)) { + $temp['encoding'] = array_shift($options); + } + + $options = $temp; + } + + if (!array_key_exists('min', $options)) { + $options['min'] = 0; + } + + $this->setMin($options['min']); + if (array_key_exists('max', $options)) { + $this->setMax($options['max']); + } + + if (array_key_exists('encoding', $options)) { + $this->setEncoding($options['encoding']); + } + } + + /** + * Returns the min option + * + * @return integer + */ + public function getMin() + { + return $this->_min; + } + + /** + * Sets the min option + * + * @param integer $min + * @throws Zend_Validate_Exception + * @return Zend_Validate_StringLength Provides a fluent interface + */ + public function setMin($min) + { + if (null !== $this->_max && $min > $this->_max) { + /** + * @see Zend_Validate_Exception + */ + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The minimum must be less than or equal to the maximum length, but $min >" + . " $this->_max"); + } + $this->_min = max(0, (integer) $min); + return $this; + } + + /** + * Returns the max option + * + * @return integer|null + */ + public function getMax() + { + return $this->_max; + } + + /** + * Sets the max option + * + * @param integer|null $max + * @throws Zend_Validate_Exception + * @return Zend_Validate_StringLength Provides a fluent interface + */ + public function setMax($max) + { + if (null === $max) { + $this->_max = null; + } else if ($max < $this->_min) { + /** + * @see Zend_Validate_Exception + */ + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception("The maximum must be greater than or equal to the minimum length, but " + . "$max < $this->_min"); + } else { + $this->_max = (integer) $max; + } + + return $this; + } + + /** + * Returns the actual encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Sets a new encoding to use + * + * @param string $encoding + * @throws Zend_Validate_Exception + * @return Zend_Validate_StringLength + */ + public function setEncoding($encoding = null) + { + if ($encoding !== null) { + $orig = PHP_VERSION_ID < 50600 + ? iconv_get_encoding('internal_encoding') + : ini_get('default_charset'); + if (PHP_VERSION_ID < 50600) { + if ($encoding) { + $result = iconv_set_encoding('internal_encoding', $encoding); + } else { + $result = false; + } + } else { + ini_set('default_charset', $encoding); + $result = ini_get('default_charset'); + } + if (!$result) { + require_once 'Zend/Validate/Exception.php'; + throw new Zend_Validate_Exception('Given encoding not supported on this OS!'); + } + + if (PHP_VERSION_ID < 50600) { + iconv_set_encoding('internal_encoding', $orig); + } else { + ini_set('default_charset', $orig); + } + } + $this->_encoding = $encoding; + return $this; + } + + /** + * Defined by Zend_Validate_Interface + * + * Returns true if and only if the string length of $value is at least the min option and + * no greater than the max option (when the max option is not null). + * + * @param string $value + * @return boolean + */ + public function isValid($value) + { + if (!is_string($value)) { + $this->_error(self::INVALID); + return false; + } + + $this->_setValue($value); + if ($this->_encoding !== null) { + $length = iconv_strlen($value, $this->_encoding); + } else { + $length = iconv_strlen($value); + } + + if ($length < $this->_min) { + $this->_error(self::TOO_SHORT); + } + + if (null !== $this->_max && $this->_max < $length) { + $this->_error(self::TOO_LONG); + } + + if (count($this->_messages)) { + return false; + } else { + return true; + } + } +} diff --git a/library/Zend/Version.php b/library/Zend/Version.php new file mode 100755 index 000000000..0ee81c403 --- /dev/null +++ b/library/Zend/Version.php @@ -0,0 +1,81 @@ +\n") + * @method string formNote($name, $value = null) + * @method string formPassword($name, $value = null, $attribs = null) + * @method string formRadio($name, $value = null, $attribs = null, $options = null, $listsep = "
    \n") + * @method string formReset($name = '', $value = 'Reset', $attribs = null) + * @method string formSelect($name, $value = null, $attribs = null, $options = null, $listsep = "
    \n") + * @method string formSubmit($name, $value = null, $attribs = null) + * @method string formText($name, $value = null, $attribs = null) + * @method string formTextarea($name, $value = null, $attribs = null) + * @method Zend_View_Helper_Gravatar gravatar($email = "", $options = array(), $attribs = array()) + * @method Zend_View_Helper_HeadLink headLink(array $attributes = null, $placement = Zend_View_Helper_Placeholder_Container_Abstract::APPEND) + * @method Zend_View_Helper_HeadMeta headMeta($content = null, $keyValue = null, $keyType = 'name', $modifiers = array(), $placement = Zend_View_Helper_Placeholder_Container_Abstract::APPEND) + * @method Zend_View_Helper_HeadScript headScript($mode = Zend_View_Helper_HeadScript::FILE, $spec = null, $placement = 'APPEND', array $attrs = array(), $type = 'text/javascript') + * @method Zend_View_Helper_HeadStyle headStyle($content = null, $placement = 'APPEND', $attributes = array()) + * @method Zend_View_Helper_HeadTitle headTitle($title = null, $setType = null) + * @method string htmlFlash($data, array $attribs = array(), array $params = array(), $content = null) + * @method string htmlList(array $items, $ordered = false, $attribs = false, $escape = true) + * @method string htmlObject($data, $type, array $attribs = array(), array $params = array(), $content = null) + * @method string htmlPage($data, array $attribs = array(), array $params = array(), $content = null) + * @method string htmlQuicktime($data, array $attribs = array(), array $params = array(), $content = null) + * @method Zend_View_Helper_InlineScript inlineScript($mode = Zend_View_Helper_HeadScript::FILE, $spec = null, $placement = 'APPEND', array $attrs = array(), $type = 'text/javascript') + * @method string|void json($data, $keepLayouts = false, $encodeData = true) + * @method Zend_View_Helper_Layout layout() + * @method Zend_View_Helper_Navigation navigation(Zend_Navigation_Container $container = null) + * @method string paginationControl(Zend_Paginator $paginator = null, $scrollingStyle = null, $partial = null, $params = null) + * @method string partial($name = null, $module = null, $model = null) + * @method string partialLoop($name = null, $module = null, $model = null) + * @method Zend_View_Helper_Placeholder_Container_Abstract placeholder($name) + * @method void renderToPlaceholder($script, $placeholder) + * @method string serverUrl($requestUri = null) + * @method string translate($messageid = null) + * @method string url(array $urlOptions = array(), $name = null, $reset = false, $encode = true) + * @method Zend_Http_UserAgent userAgent(Zend_Http_UserAgent $userAgent = null) + */ +class Zend_View extends Zend_View_Abstract +{ + /** + * Whether or not to use streams to mimic short tags + * @var bool + */ + private $_useViewStream = false; + + /** + * Whether or not to use stream wrapper if short_open_tag is false + * @var bool + */ + private $_useStreamWrapper = false; + + /** + * Constructor + * + * Register Zend_View_Stream stream wrapper if short tags are disabled. + * + * @param array $config + * @return void + */ + public function __construct($config = array()) + { + $this->_useViewStream = (bool) ini_get('short_open_tag') ? false : true; + if ($this->_useViewStream) { + if (!in_array('zend.view', stream_get_wrappers())) { + require_once 'Zend/View/Stream.php'; + stream_wrapper_register('zend.view', 'Zend_View_Stream'); + } + } + + if (array_key_exists('useStreamWrapper', $config)) { + $this->setUseStreamWrapper($config['useStreamWrapper']); + } + + parent::__construct($config); + } + + /** + * Set flag indicating if stream wrapper should be used if short_open_tag is off + * + * @param bool $flag + * @return Zend_View + */ + public function setUseStreamWrapper($flag) + { + $this->_useStreamWrapper = (bool) $flag; + return $this; + } + + /** + * Should the stream wrapper be used if short_open_tag is off? + * + * @return bool + */ + public function useStreamWrapper() + { + return $this->_useStreamWrapper; + } + + /** + * Includes the view script in a scope with only public $this variables. + * + * @param string The view script to execute. + */ + protected function _run() + { + if ($this->_useViewStream && $this->useStreamWrapper()) { + include 'zend.view://' . func_get_arg(0); + } else { + include func_get_arg(0); + } + } +} diff --git a/library/Zend/View/Abstract.php b/library/Zend/View/Abstract.php new file mode 100755 index 000000000..ffcefee19 --- /dev/null +++ b/library/Zend/View/Abstract.php @@ -0,0 +1,1200 @@ + array(), + 'helper' => array(), + 'filter' => array(), + ); + + /** + * Script file name to execute + * + * @var string + */ + private $_file = null; + + /** + * Instances of helper objects. + * + * @var array + */ + private $_helper = array(); + + /** + * Map of helper => class pairs to help in determining helper class from + * name + * @var array + */ + private $_helperLoaded = array(); + + /** + * Map of helper => classfile pairs to aid in determining helper classfile + * @var array + */ + private $_helperLoadedDir = array(); + + /** + * Stack of Zend_View_Filter names to apply as filters. + * @var array + */ + private $_filter = array(); + + /** + * Stack of Zend_View_Filter objects that have been loaded + * @var array + */ + private $_filterClass = array(); + + /** + * Map of filter => class pairs to help in determining filter class from + * name + * @var array + */ + private $_filterLoaded = array(); + + /** + * Map of filter => classfile pairs to aid in determining filter classfile + * @var array + */ + private $_filterLoadedDir = array(); + + /** + * Callback for escaping. + * + * @var string + */ + private $_escape = 'htmlspecialchars'; + + /** + * Encoding to use in escaping mechanisms; defaults to utf-8 + * @var string + */ + private $_encoding = 'UTF-8'; + + /** + * Flag indicating whether or not LFI protection for rendering view scripts is enabled + * @var bool + */ + private $_lfiProtectionOn = true; + + /** + * Plugin loaders + * @var array + */ + private $_loaders = array(); + + /** + * Plugin types + * @var array + */ + private $_loaderTypes = array('filter', 'helper'); + + /** + * Strict variables flag; when on, undefined variables accessed in the view + * scripts will trigger notices + * @var boolean + */ + private $_strictVars = false; + + /** + * Constructor. + * + * @param array $config Configuration key-value pairs. + */ + public function __construct($config = array()) + { + // set inital paths and properties + $this->setScriptPath(null); + + // $this->setHelperPath(null); + $this->setFilterPath(null); + + // user-defined escaping callback + if (array_key_exists('escape', $config)) { + $this->setEscape($config['escape']); + } + + // encoding + if (array_key_exists('encoding', $config)) { + $this->setEncoding($config['encoding']); + } + + // base path + if (array_key_exists('basePath', $config)) { + $prefix = 'Zend_View'; + if (array_key_exists('basePathPrefix', $config)) { + $prefix = $config['basePathPrefix']; + } + $this->setBasePath($config['basePath'], $prefix); + } + + // user-defined view script path + if (array_key_exists('scriptPath', $config)) { + $this->addScriptPath($config['scriptPath']); + } + + // user-defined helper path + if (array_key_exists('helperPath', $config)) { + if (is_array($config['helperPath'])) { + foreach ($config['helperPath'] as $prefix => $path) { + $this->addHelperPath($path, $prefix); + } + } else { + $prefix = 'Zend_View_Helper'; + if (array_key_exists('helperPathPrefix', $config)) { + $prefix = $config['helperPathPrefix']; + } + $this->addHelperPath($config['helperPath'], $prefix); + } + } + + // user-defined filter path + if (array_key_exists('filterPath', $config)) { + if (is_array($config['filterPath'])) { + foreach ($config['filterPath'] as $prefix => $path) { + $this->addFilterPath($path, $prefix); + } + } else { + $prefix = 'Zend_View_Filter'; + if (array_key_exists('filterPathPrefix', $config)) { + $prefix = $config['filterPathPrefix']; + } + $this->addFilterPath($config['filterPath'], $prefix); + } + } + + // user-defined filters + if (array_key_exists('filter', $config)) { + $this->addFilter($config['filter']); + } + + // strict vars + if (array_key_exists('strictVars', $config)) { + $this->strictVars($config['strictVars']); + } + + // LFI protection flag + if (array_key_exists('lfiProtectionOn', $config)) { + $this->setLfiProtection($config['lfiProtectionOn']); + } + + if (array_key_exists('assign', $config) + && is_array($config['assign']) + ) { + foreach ($config['assign'] as $key => $value) { + $this->assign($key, $value); + } + } + + $this->init(); + } + + /** + * Return the template engine object + * + * Returns the object instance, as it is its own template engine + * + * @return Zend_View_Abstract + */ + public function getEngine() + { + return $this; + } + + /** + * Allow custom object initialization when extending Zend_View_Abstract or + * Zend_View + * + * Triggered by {@link __construct() the constructor} as its final action. + * + * @return void + */ + public function init() + { + } + + /** + * Prevent E_NOTICE for nonexistent values + * + * If {@link strictVars()} is on, raises a notice. + * + * @param string $key + * @return null + */ + public function __get($key) + { + if ($this->_strictVars) { + trigger_error('Key "' . $key . '" does not exist', E_USER_NOTICE); + } + + return null; + } + + /** + * Allows testing with empty() and isset() to work inside + * templates. + * + * @param string $key + * @return boolean + */ + public function __isset($key) + { + if ('_' != substr($key, 0, 1)) { + return isset($this->$key); + } + + return false; + } + + /** + * Directly assigns a variable to the view script. + * + * Checks first to ensure that the caller is not attempting to set a + * protected or private member (by checking for a prefixed underscore); if + * not, the public member is set; otherwise, an exception is raised. + * + * @param string $key The variable name. + * @param mixed $val The variable value. + * @return void + * @throws Zend_View_Exception if an attempt to set a private or protected + * member is detected + */ + public function __set($key, $val) + { + if ('_' != substr($key, 0, 1)) { + $this->$key = $val; + return; + } + + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Setting private or protected class members is not allowed'); + $e->setView($this); + throw $e; + } + + /** + * Allows unset() on object properties to work + * + * @param string $key + * @return void + */ + public function __unset($key) + { + if ('_' != substr($key, 0, 1) && isset($this->$key)) { + unset($this->$key); + } + } + + /** + * Accesses a helper object from within a script. + * + * If the helper class has a 'view' property, sets it with the current view + * object. + * + * @param string $name The helper name. + * @param array $args The parameters for the helper. + * @return string The result of the helper output. + */ + public function __call($name, $args) + { + // is the helper already loaded? + $helper = $this->getHelper($name); + + // call the helper method + return call_user_func_array( + array($helper, $name), + $args + ); + } + + /** + * Given a base path, sets the script, helper, and filter paths relative to it + * + * Assumes a directory structure of: + * + * basePath/ + * scripts/ + * helpers/ + * filters/ + * + * + * @param string $path + * @param string $prefix Prefix to use for helper and filter paths + * @return Zend_View_Abstract + */ + public function setBasePath($path, $classPrefix = 'Zend_View') + { + $path = rtrim($path, '/'); + $path = rtrim($path, '\\'); + $path .= DIRECTORY_SEPARATOR; + $classPrefix = rtrim($classPrefix, '_') . '_'; + $this->setScriptPath($path . 'scripts'); + $this->setHelperPath($path . 'helpers', $classPrefix . 'Helper'); + $this->setFilterPath($path . 'filters', $classPrefix . 'Filter'); + return $this; + } + + /** + * Given a base path, add script, helper, and filter paths relative to it + * + * Assumes a directory structure of: + * + * basePath/ + * scripts/ + * helpers/ + * filters/ + * + * + * @param string $path + * @param string $prefix Prefix to use for helper and filter paths + * @return Zend_View_Abstract + */ + public function addBasePath($path, $classPrefix = 'Zend_View') + { + $path = rtrim($path, '/'); + $path = rtrim($path, '\\'); + $path .= DIRECTORY_SEPARATOR; + $classPrefix = rtrim($classPrefix, '_') . '_'; + $this->addScriptPath($path . 'scripts'); + $this->addHelperPath($path . 'helpers', $classPrefix . 'Helper'); + $this->addFilterPath($path . 'filters', $classPrefix . 'Filter'); + return $this; + } + + /** + * Adds to the stack of view script paths in LIFO order. + * + * @param string|array The directory (-ies) to add. + * @return Zend_View_Abstract + */ + public function addScriptPath($path) + { + $this->_addPath('script', $path); + return $this; + } + + /** + * Resets the stack of view script paths. + * + * To clear all paths, use Zend_View::setScriptPath(null). + * + * @param string|array The directory (-ies) to set as the path. + * @return Zend_View_Abstract + */ + public function setScriptPath($path) + { + $this->_path['script'] = array(); + $this->_addPath('script', $path); + return $this; + } + + /** + * Return full path to a view script specified by $name + * + * @param string $name + * @return false|string False if script not found + * @throws Zend_View_Exception if no script directory set + */ + public function getScriptPath($name) + { + try { + $path = $this->_script($name); + return $path; + } catch (Zend_View_Exception $e) { + if (strstr($e->getMessage(), 'no view script directory set')) { + throw $e; + } + + return false; + } + } + + /** + * Returns an array of all currently set script paths + * + * @return array + */ + public function getScriptPaths() + { + return $this->_getPaths('script'); + } + + /** + * Set plugin loader for a particular plugin type + * + * @param Zend_Loader_PluginLoader $loader + * @param string $type + * @return Zend_View_Abstract + */ + public function setPluginLoader(Zend_Loader_PluginLoader $loader, $type) + { + $type = strtolower($type); + if (!in_array($type, $this->_loaderTypes)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Invalid plugin loader type "%s"', $type)); + $e->setView($this); + throw $e; + } + + $this->_loaders[$type] = $loader; + return $this; + } + + /** + * Retrieve plugin loader for a specific plugin type + * + * @param string $type + * @return Zend_Loader_PluginLoader + */ + public function getPluginLoader($type) + { + $type = strtolower($type); + if (!in_array($type, $this->_loaderTypes)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Invalid plugin loader type "%s"; cannot retrieve', $type)); + $e->setView($this); + throw $e; + } + + if (!array_key_exists($type, $this->_loaders)) { + $prefix = 'Zend_View_'; + $pathPrefix = 'Zend/View/'; + + $pType = ucfirst($type); + switch ($type) { + case 'filter': + case 'helper': + default: + $prefix .= $pType; + $pathPrefix .= $pType; + $loader = new Zend_Loader_PluginLoader(array( + $prefix => $pathPrefix + )); + $this->_loaders[$type] = $loader; + break; + } + } + return $this->_loaders[$type]; + } + + /** + * Adds to the stack of helper paths in LIFO order. + * + * @param string|array The directory (-ies) to add. + * @param string $classPrefix Class prefix to use with classes in this + * directory; defaults to Zend_View_Helper + * @return Zend_View_Abstract + */ + public function addHelperPath($path, $classPrefix = 'Zend_View_Helper_') + { + return $this->_addPluginPath('helper', $classPrefix, (array) $path); + } + + /** + * Resets the stack of helper paths. + * + * To clear all paths, use Zend_View::setHelperPath(null). + * + * @param string|array $path The directory (-ies) to set as the path. + * @param string $classPrefix The class prefix to apply to all elements in + * $path; defaults to Zend_View_Helper + * @return Zend_View_Abstract + */ + public function setHelperPath($path, $classPrefix = 'Zend_View_Helper_') + { + unset($this->_loaders['helper']); + return $this->addHelperPath($path, $classPrefix); + } + + /** + * Get full path to a helper class file specified by $name + * + * @param string $name + * @return string|false False on failure, path on success + */ + public function getHelperPath($name) + { + return $this->_getPluginPath('helper', $name); + } + + /** + * Returns an array of all currently set helper paths + * + * @return array + */ + public function getHelperPaths() + { + return $this->getPluginLoader('helper')->getPaths(); + } + + /** + * Registers a helper object, bypassing plugin loader + * + * @param Zend_View_Helper_Abstract|object $helper + * @param string $name + * @return Zend_View_Abstract + * @throws Zend_View_Exception + */ + public function registerHelper($helper, $name) + { + if (!is_object($helper)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('View helper must be an object'); + $e->setView($this); + throw $e; + } + + if (!$helper instanceof Zend_View_Interface) { + if (!method_exists($helper, $name)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception( + 'View helper must implement Zend_View_Interface or have a method matching the name provided' + ); + $e->setView($this); + throw $e; + } + } + + if (method_exists($helper, 'setView')) { + $helper->setView($this); + } + + $name = ucfirst($name); + $this->_helper[$name] = $helper; + return $this; + } + + /** + * Get a helper by name + * + * @param string $name + * @return object + */ + public function getHelper($name) + { + return $this->_getPlugin('helper', $name); + } + + /** + * Get array of all active helpers + * + * Only returns those that have already been instantiated. + * + * @return array + */ + public function getHelpers() + { + return $this->_helper; + } + + /** + * Adds to the stack of filter paths in LIFO order. + * + * @param string|array The directory (-ies) to add. + * @param string $classPrefix Class prefix to use with classes in this + * directory; defaults to Zend_View_Filter + * @return Zend_View_Abstract + */ + public function addFilterPath($path, $classPrefix = 'Zend_View_Filter_') + { + return $this->_addPluginPath('filter', $classPrefix, (array) $path); + } + + /** + * Resets the stack of filter paths. + * + * To clear all paths, use Zend_View::setFilterPath(null). + * + * @param string|array The directory (-ies) to set as the path. + * @param string $classPrefix The class prefix to apply to all elements in + * $path; defaults to Zend_View_Filter + * @return Zend_View_Abstract + */ + public function setFilterPath($path, $classPrefix = 'Zend_View_Filter_') + { + unset($this->_loaders['filter']); + return $this->addFilterPath($path, $classPrefix); + } + + /** + * Get full path to a filter class file specified by $name + * + * @param string $name + * @return string|false False on failure, path on success + */ + public function getFilterPath($name) + { + return $this->_getPluginPath('filter', $name); + } + + /** + * Get a filter object by name + * + * @param string $name + * @return object + */ + public function getFilter($name) + { + return $this->_getPlugin('filter', $name); + } + + /** + * Return array of all currently active filters + * + * Only returns those that have already been instantiated. + * + * @return array + */ + public function getFilters() + { + return $this->_filter; + } + + /** + * Returns an array of all currently set filter paths + * + * @return array + */ + public function getFilterPaths() + { + return $this->getPluginLoader('filter')->getPaths(); + } + + /** + * Return associative array of path types => paths + * + * @return array + */ + public function getAllPaths() + { + $paths = $this->_path; + $paths['helper'] = $this->getHelperPaths(); + $paths['filter'] = $this->getFilterPaths(); + return $paths; + } + + /** + * Add one or more filters to the stack in FIFO order. + * + * @param string|array One or more filters to add. + * @return Zend_View_Abstract + */ + public function addFilter($name) + { + foreach ((array) $name as $val) { + $this->_filter[] = $val; + } + return $this; + } + + /** + * Resets the filter stack. + * + * To clear all filters, use Zend_View::setFilter(null). + * + * @param string|array One or more filters to set. + * @return Zend_View_Abstract + */ + public function setFilter($name) + { + $this->_filter = array(); + $this->addFilter($name); + return $this; + } + + /** + * Sets the _escape() callback. + * + * @param mixed $spec The callback for _escape() to use. + * @return Zend_View_Abstract + */ + public function setEscape($spec) + { + $this->_escape = $spec; + return $this; + } + + /** + * Set LFI protection flag + * + * @param bool $flag + * @return Zend_View_Abstract + */ + public function setLfiProtection($flag) + { + $this->_lfiProtectionOn = (bool) $flag; + return $this; + } + + /** + * Return status of LFI protection flag + * + * @return bool + */ + public function isLfiProtectionOn() + { + return $this->_lfiProtectionOn; + } + + /** + * Assigns variables to the view script via differing strategies. + * + * Zend_View::assign('name', $value) assigns a variable called 'name' + * with the corresponding $value. + * + * Zend_View::assign($array) assigns the array keys as variable + * names (with the corresponding array values). + * + * @see __set() + * @param string|array The assignment strategy to use. + * @param mixed (Optional) If assigning a named variable, use this + * as the value. + * @return Zend_View_Abstract Fluent interface + * @throws Zend_View_Exception if $spec is neither a string nor an array, + * or if an attempt to set a private or protected member is detected + */ + public function assign($spec, $value = null) + { + // which strategy to use? + if (is_string($spec)) { + // assign by name and value + if ('_' == substr($spec, 0, 1)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Setting private or protected class members is not allowed'); + $e->setView($this); + throw $e; + } + $this->$spec = $value; + } elseif (is_array($spec)) { + // assign from associative array + $error = false; + foreach ($spec as $key => $val) { + if ('_' == substr($key, 0, 1)) { + $error = true; + break; + } + $this->$key = $val; + } + if ($error) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Setting private or protected class members is not allowed'); + $e->setView($this); + throw $e; + } + } else { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('assign() expects a string or array, received ' . gettype($spec)); + $e->setView($this); + throw $e; + } + + return $this; + } + + /** + * Return list of all assigned variables + * + * Returns all public properties of the object. Reflection is not used + * here as testing reflection properties for visibility is buggy. + * + * @return array + */ + public function getVars() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if ('_' == substr($key, 0, 1)) { + unset($vars[$key]); + } + } + + return $vars; + } + + /** + * Clear all assigned variables + * + * Clears all variables assigned to Zend_View either via {@link assign()} or + * property overloading ({@link __set()}). + * + * @return void + */ + public function clearVars() + { + $vars = get_object_vars($this); + foreach ($vars as $key => $value) { + if ('_' != substr($key, 0, 1)) { + unset($this->$key); + } + } + } + + /** + * Processes a view script and returns the output. + * + * @param string $name The script name to process. + * @return string The script output. + */ + public function render($name) + { + // find the script file name using the parent private method + $this->_file = $this->_script($name); + unset($name); // remove $name from local scope + + ob_start(); + $this->_run($this->_file); + + return $this->_filter(ob_get_clean()); // filter output + } + + /** + * Escapes a value for output in a view script. + * + * If escaping mechanism is one of htmlspecialchars or htmlentities, uses + * {@link $_encoding} setting. + * + * @param mixed $var The output to escape. + * @return mixed The escaped value. + */ + public function escape($var) + { + if (in_array($this->_escape, array('htmlspecialchars', 'htmlentities'))) { + return call_user_func($this->_escape, $var, ENT_COMPAT, $this->_encoding); + } + + if (1 == func_num_args()) { + return call_user_func($this->_escape, $var); + } + $args = func_get_args(); + return call_user_func_array($this->_escape, $args); + } + + /** + * Set encoding to use with htmlentities() and htmlspecialchars() + * + * @param string $encoding + * @return Zend_View_Abstract + */ + public function setEncoding($encoding) + { + $this->_encoding = $encoding; + return $this; + } + + /** + * Return current escape encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Enable or disable strict vars + * + * If strict variables are enabled, {@link __get()} will raise a notice + * when a variable is not defined. + * + * Use in conjunction with {@link Zend_View_Helper_DeclareVars the declareVars() helper} + * to enforce strict variable handling in your view scripts. + * + * @param boolean $flag + * @return Zend_View_Abstract + */ + public function strictVars($flag = true) + { + $this->_strictVars = ($flag) ? true : false; + + return $this; + } + + /** + * Finds a view script from the available directories. + * + * @param string $name The base name of the script. + * @return void + */ + protected function _script($name) + { + if ($this->isLfiProtectionOn() && preg_match('#\.\.[\\\/]#', $name)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Requested scripts may not include parent directory traversal ("../", "..\\" notation)'); + $e->setView($this); + throw $e; + } + + if (0 == count($this->_path['script'])) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('no view script directory set; unable to determine location for view script'); + $e->setView($this); + throw $e; + } + + foreach ($this->_path['script'] as $dir) { + if (is_readable($dir . $name)) { + return $dir . $name; + } + } + + require_once 'Zend/View/Exception.php'; + $message = "script '$name' not found in path (" + . implode(PATH_SEPARATOR, $this->_path['script']) + . ")"; + $e = new Zend_View_Exception($message); + $e->setView($this); + throw $e; + } + + /** + * Applies the filter callback to a buffer. + * + * @param string $buffer The buffer contents. + * @return string The filtered buffer. + */ + private function _filter($buffer) + { + // loop through each filter class + foreach ($this->_filter as $name) { + // load and apply the filter class + $filter = $this->getFilter($name); + $buffer = call_user_func(array($filter, 'filter'), $buffer); + } + + // done! + return $buffer; + } + + /** + * Adds paths to the path stack in LIFO order. + * + * Zend_View::_addPath($type, 'dirname') adds one directory + * to the path stack. + * + * Zend_View::_addPath($type, $array) adds one directory for + * each array element value. + * + * In the case of filter and helper paths, $prefix should be used to + * specify what class prefix to use with the given path. + * + * @param string $type The path type ('script', 'helper', or 'filter'). + * @param string|array $path The path specification. + * @param string $prefix Class prefix to use with path (helpers and filters + * only) + * @return void + */ + private function _addPath($type, $path, $prefix = null) + { + foreach ((array) $path as $dir) { + // attempt to strip any possible separator and + // append the system directory separator + $dir = rtrim($dir, '/'); + $dir = rtrim($dir, '\\'); + $dir .= '/'; + + switch ($type) { + case 'script': + // add to the top of the stack. + array_unshift($this->_path[$type], $dir); + break; + case 'filter': + case 'helper': + default: + // add as array with prefix and dir keys + array_unshift($this->_path[$type], array('prefix' => $prefix, 'dir' => $dir)); + break; + } + } + } + + /** + * Resets the path stack for helpers and filters. + * + * @param string $type The path type ('helper' or 'filter'). + * @param string|array $path The directory (-ies) to set as the path. + * @param string $classPrefix Class prefix to apply to elements of $path + */ + private function _setPath($type, $path, $classPrefix = null) + { + $dir = DIRECTORY_SEPARATOR . ucfirst($type) . DIRECTORY_SEPARATOR; + + switch ($type) { + case 'script': + $this->_path[$type] = array(dirname(__FILE__) . $dir); + $this->_addPath($type, $path); + break; + case 'filter': + case 'helper': + default: + $this->_path[$type] = array(array( + 'prefix' => 'Zend_View_' . ucfirst($type) . '_', + 'dir' => dirname(__FILE__) . $dir + )); + $this->_addPath($type, $path, $classPrefix); + break; + } + } + + /** + * Return all paths for a given path type + * + * @param string $type The path type ('helper', 'filter', 'script') + * @return array + */ + private function _getPaths($type) + { + return $this->_path[$type]; + } + + /** + * Register helper class as loaded + * + * @param string $name + * @param string $class + * @param string $file path to class file + * @return void + */ + private function _setHelperClass($name, $class, $file) + { + $this->_helperLoadedDir[$name] = $file; + $this->_helperLoaded[$name] = $class; + } + + /** + * Register filter class as loaded + * + * @param string $name + * @param string $class + * @param string $file path to class file + * @return void + */ + private function _setFilterClass($name, $class, $file) + { + $this->_filterLoadedDir[$name] = $file; + $this->_filterLoaded[$name] = $class; + } + + /** + * Add a prefixPath for a plugin type + * + * @param string $type + * @param string $classPrefix + * @param array $paths + * @return Zend_View_Abstract + */ + private function _addPluginPath($type, $classPrefix, array $paths) + { + $loader = $this->getPluginLoader($type); + foreach ($paths as $path) { + $loader->addPrefixPath($classPrefix, $path); + } + return $this; + } + + /** + * Get a path to a given plugin class of a given type + * + * @param string $type + * @param string $name + * @return string|false + */ + private function _getPluginPath($type, $name) + { + $loader = $this->getPluginLoader($type); + if ($loader->isLoaded($name)) { + return $loader->getClassPath($name); + } + + try { + $loader->load($name); + return $loader->getClassPath($name); + } catch (Zend_Loader_Exception $e) { + return false; + } + } + + /** + * Retrieve a plugin object + * + * @param string $type + * @param string $name + * @return object + */ + private function _getPlugin($type, $name) + { + $name = ucfirst($name); + switch ($type) { + case 'filter': + $storeVar = '_filterClass'; + $store = $this->_filterClass; + break; + case 'helper': + $storeVar = '_helper'; + $store = $this->_helper; + break; + } + + if (!isset($store[$name])) { + $class = $this->getPluginLoader($type)->load($name); + $store[$name] = new $class(); + if (method_exists($store[$name], 'setView')) { + $store[$name]->setView($this); + } + } + + $this->$storeVar = $store; + return $store[$name]; + } + + /** + * Use to include the view script in a scope that only allows public + * members. + * + * @return mixed + */ + abstract protected function _run(); +} diff --git a/library/Zend/View/Exception.php b/library/Zend/View/Exception.php new file mode 100755 index 000000000..93078bcf8 --- /dev/null +++ b/library/Zend/View/Exception.php @@ -0,0 +1,51 @@ +view = $view; + return $this; + } + + public function getView() + { + return $this->view; + } +} diff --git a/library/Zend/View/Helper/Abstract.php b/library/Zend/View/Helper/Abstract.php new file mode 100755 index 000000000..da481bbe3 --- /dev/null +++ b/library/Zend/View/Helper/Abstract.php @@ -0,0 +1,64 @@ +view = $view; + return $this; + } + + /** + * Strategy pattern: currently unutilized + * + * @return void + */ + public function direct() + { + } +} diff --git a/library/Zend/View/Helper/Action.php b/library/Zend/View/Helper/Action.php new file mode 100755 index 000000000..a4b83af58 --- /dev/null +++ b/library/Zend/View/Helper/Action.php @@ -0,0 +1,164 @@ +getControllerDirectory(); + if (empty($modules)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Action helper depends on valid front controller instance'); + $e->setView($this->view); + throw $e; + } + + $request = $front->getRequest(); + $response = $front->getResponse(); + + if (empty($request) || empty($response)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Action view helper requires both a registered request and response object in the front controller instance'); + $e->setView($this->view); + throw $e; + } + + $this->request = clone $request; + $this->response = clone $response; + $this->dispatcher = clone $front->getDispatcher(); + $this->defaultModule = $front->getDefaultModule(); + } + + /** + * Reset object states + * + * @return void + */ + public function resetObjects() + { + $params = $this->request->getUserParams(); + foreach (array_keys($params) as $key) { + $this->request->setParam($key, null); + } + + $this->response->clearBody(); + $this->response->clearHeaders() + ->clearRawHeaders(); + } + + /** + * Retrieve rendered contents of a controller action + * + * If the action results in a forward or redirect, returns empty string. + * + * @param string $action + * @param string $controller + * @param string $module Defaults to default module + * @param array $params + * @return string + */ + public function action($action, $controller, $module = null, array $params = array()) + { + $this->resetObjects(); + if (null === $module) { + $module = $this->defaultModule; + } + + // clone the view object to prevent over-writing of view variables + $viewRendererObj = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); + Zend_Controller_Action_HelperBroker::addHelper(clone $viewRendererObj); + + $this->request->setParams($params) + ->setModuleName($module) + ->setControllerName($controller) + ->setActionName($action) + ->setDispatched(true); + + $this->dispatcher->dispatch($this->request, $this->response); + + // reset the viewRenderer object to it's original state + Zend_Controller_Action_HelperBroker::addHelper($viewRendererObj); + + + if (!$this->request->isDispatched() + || $this->response->isRedirect()) + { + // forwards and redirects render nothing + return ''; + } + + $return = $this->response->getBody(); + $this->resetObjects(); + return $return; + } + + /** + * Clone the current View + * + * @return Zend_View_Interface + */ + public function cloneView() + { + $view = clone $this->view; + $view->clearVars(); + return $view; + } +} diff --git a/library/Zend/View/Helper/BaseUrl.php b/library/Zend/View/Helper/BaseUrl.php new file mode 100755 index 000000000..8af36bbdd --- /dev/null +++ b/library/Zend/View/Helper/BaseUrl.php @@ -0,0 +1,116 @@ +getBaseUrl(); + + // Remove trailing slashes + if (null !== $file) { + $file = '/' . ltrim($file, '/\\'); + } + + return $baseUrl . $file; + } + + /** + * Set BaseUrl + * + * @param string $base + * @return Zend_View_Helper_BaseUrl + */ + public function setBaseUrl($base) + { + $this->_baseUrl = rtrim($base, '/\\'); + return $this; + } + + /** + * Get BaseUrl + * + * @return string + */ + public function getBaseUrl() + { + if ($this->_baseUrl === null) { + /** @see Zend_Controller_Front */ + require_once 'Zend/Controller/Front.php'; + $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl(); + + // Remove scriptname, eg. index.php from baseUrl + $baseUrl = $this->_removeScriptName($baseUrl); + + $this->setBaseUrl($baseUrl); + } + + return $this->_baseUrl; + } + + /** + * Remove Script filename from baseurl + * + * @param string $url + * @return string + */ + protected function _removeScriptName($url) + { + if (!isset($_SERVER['SCRIPT_NAME'])) { + // We can't do much now can we? (Well, we could parse out by ".") + return $url; + } + + if (($pos = strripos($url, basename($_SERVER['SCRIPT_NAME']))) !== false) { + $url = substr($url, 0, $pos); + } + + return $url; + } +} diff --git a/library/Zend/View/Helper/Currency.php b/library/Zend/View/Helper/Currency.php new file mode 100755 index 000000000..592185f71 --- /dev/null +++ b/library/Zend/View/Helper/Currency.php @@ -0,0 +1,120 @@ +setCurrency($currency); + } + + /** + * Output a formatted currency + * + * @param integer|float $value Currency value to output + * @param string|Zend_Locale|array $currency OPTIONAL Currency to use for + * this call + * @return string Formatted currency + */ + public function currency($value = null, $currency = null) + { + if ($value === null) { + return $this; + } + + if (is_string($currency) || ($currency instanceof Zend_Locale)) { + require_once 'Zend/Locale.php'; + if (Zend_Locale::isLocale($currency)) { + $currency = array('locale' => $currency); + } + } + + if (is_string($currency)) { + $currency = array('currency' => $currency); + } + + if (is_array($currency)) { + return $this->_currency->toCurrency($value, $currency); + } + + return $this->_currency->toCurrency($value); + } + + /** + * Sets a currency to use + * + * @param Zend_Currency|String|Zend_Locale $currency Currency to use + * @throws Zend_View_Exception When no or a false currency was set + * @return Zend_View_Helper_Currency + */ + public function setCurrency($currency = null) + { + if (!$currency instanceof Zend_Currency) { + require_once 'Zend/Currency.php'; + $currency = new Zend_Currency($currency); + } + $this->_currency = $currency; + + return $this; + } + + /** + * Retrieve currency object + * + * @return Zend_Currency|null + */ + public function getCurrency() + { + return $this->_currency; + } +} diff --git a/library/Zend/View/Helper/Cycle.php b/library/Zend/View/Helper/Cycle.php new file mode 100755 index 000000000..eb5fd5132 --- /dev/null +++ b/library/Zend/View/Helper/Cycle.php @@ -0,0 +1,225 @@ +-1) ; + + /** + * Array of values + * + * @var array + */ + protected $_data = array(self::DEFAULT_NAME=>array()); + + /** + * Actual name of cycle + * + * @var string + */ + protected $_name = self::DEFAULT_NAME; + + /** + * Add elements to alternate + * + * @param array $data + * @param string $name + * @return Zend_View_Helper_Cycle + */ + public function cycle(array $data = array(), $name = self::DEFAULT_NAME) + { + if(!empty($data)) + $this->_data[$name] = $data; + + $this->setName($name); + return $this; + } + + /** + * Add elements to alternate + * + * @param array $data + * @param string $name + * @return Zend_View_Helper_Cycle + */ + public function assign(Array $data , $name = self::DEFAULT_NAME) + { + $this->setName($name); + $this->_data[$name] = $data; + $this->rewind(); + return $this; + } + + /** + * Sets actual name of cycle + * + * @param string $name + * @return Zend_View_Helper_Cycle + */ + public function setName($name = self::DEFAULT_NAME) + { + $this->_name = $name; + + if(!isset($this->_data[$this->_name])) + $this->_data[$this->_name] = array(); + + if(!isset($this->_pointers[$this->_name])) + $this->rewind(); + + return $this; + } + + /** + * Gets actual name of cycle + * + * @return string + */ + public function getName() + { + return $this->_name; + } + + + /** + * Return all elements + * + * @return array + */ + public function getAll() + { + return $this->_data[$this->_name]; + } + + /** + * Turn helper into string + * + * @return string + */ + public function toString() + { + return (string) $this->_data[$this->_name][$this->key()]; + } + + /** + * Cast to string + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Move to next value + * + * @return Zend_View_Helper_Cycle + */ + public function next() + { + $count = count($this->_data[$this->_name]); + if ($this->_pointers[$this->_name] == ($count - 1)) + $this->_pointers[$this->_name] = 0; + else + $this->_pointers[$this->_name] = ++$this->_pointers[$this->_name]; + return $this; + } + + /** + * Move to previous value + * + * @return Zend_View_Helper_Cycle + */ + public function prev() + { + $count = count($this->_data[$this->_name]); + if ($this->_pointers[$this->_name] <= 0) + $this->_pointers[$this->_name] = $count - 1; + else + $this->_pointers[$this->_name] = --$this->_pointers[$this->_name]; + return $this; + } + + /** + * Return iteration number + * + * @return int + */ + public function key() + { + if ($this->_pointers[$this->_name] < 0) + return 0; + else + return $this->_pointers[$this->_name]; + } + + /** + * Rewind pointer + * + * @return Zend_View_Helper_Cycle + */ + public function rewind() + { + $this->_pointers[$this->_name] = -1; + return $this; + } + + /** + * Check if element is valid + * + * @return bool + */ + public function valid() + { + return isset($this->_data[$this->_name][$this->key()]); + } + + /** + * Return current element + * + * @return mixed + */ + public function current() + { + return $this->_data[$this->_name][$this->key()]; + } +} diff --git a/library/Zend/View/Helper/DeclareVars.php b/library/Zend/View/Helper/DeclareVars.php new file mode 100755 index 000000000..4663d4a41 --- /dev/null +++ b/library/Zend/View/Helper/DeclareVars.php @@ -0,0 +1,95 @@ + + * $this->declareVars( + * 'varName1', + * 'varName2', + * array('varName3' => 'defaultValue', + * 'varName4' => array() + * ) + * ); + * + * + * @param string|array variable number of arguments, all string names of variables to test + * @return void + */ + public function declareVars() + { + $args = func_get_args(); + foreach($args as $key) { + if (is_array($key)) { + foreach ($key as $name => $value) { + $this->_declareVar($name, $value); + } + } else if (!isset($view->$key)) { + $this->_declareVar($key); + } + } + } + + /** + * Set a view variable + * + * Checks to see if a $key is set in the view object; if not, sets it to $value. + * + * @param string $key + * @param string $value Defaults to an empty string + * @return void + */ + protected function _declareVar($key, $value = '') + { + if (!isset($this->view->$key)) { + $this->view->$key = $value; + } + } +} diff --git a/library/Zend/View/Helper/Doctype.php b/library/Zend/View/Helper/Doctype.php new file mode 100755 index 000000000..ca63b4dea --- /dev/null +++ b/library/Zend/View/Helper/Doctype.php @@ -0,0 +1,242 @@ +_regKey)) { + $this->_registry = new ArrayObject(array( + 'doctypes' => array( + self::XHTML11 => '', + self::XHTML1_STRICT => '', + self::XHTML1_TRANSITIONAL => '', + self::XHTML1_FRAMESET => '', + self::XHTML1_RDFA => '', + self::XHTML1_RDFA11 => '', + self::XHTML_BASIC1 => '', + self::XHTML5 => '', + self::HTML4_STRICT => '', + self::HTML4_LOOSE => '', + self::HTML4_FRAMESET => '', + self::HTML5 => '', + ) + )); + Zend_Registry::set($this->_regKey, $this->_registry); + $this->setDoctype($this->_defaultDoctype); + } else { + $this->_registry = Zend_Registry::get($this->_regKey); + } + } + + /** + * Set or retrieve doctype + * + * @param string $doctype + * @return Zend_View_Helper_Doctype + */ + public function doctype($doctype = null) + { + if (null !== $doctype) { + switch ($doctype) { + case self::XHTML11: + case self::XHTML1_STRICT: + case self::XHTML1_TRANSITIONAL: + case self::XHTML1_FRAMESET: + case self::XHTML_BASIC1: + case self::XHTML1_RDFA: + case self::XHTML1_RDFA11: + case self::XHTML5: + case self::HTML4_STRICT: + case self::HTML4_LOOSE: + case self::HTML4_FRAMESET: + case self::HTML5: + $this->setDoctype($doctype); + break; + default: + if (substr($doctype, 0, 9) != 'setView($this->view); + throw $e; + } + if (stristr($doctype, 'xhtml')) { + $type = self::CUSTOM_XHTML; + } else { + $type = self::CUSTOM; + } + $this->setDoctype($type); + $this->_registry['doctypes'][$type] = $doctype; + break; + } + } + + return $this; + } + + /** + * Set doctype + * + * @param string $doctype + * @return Zend_View_Helper_Doctype + */ + public function setDoctype($doctype) + { + $this->_registry['doctype'] = $doctype; + return $this; + } + + /** + * Retrieve doctype + * + * @return string + */ + public function getDoctype() + { + return $this->_registry['doctype']; + } + + /** + * Get doctype => string mappings + * + * @return array + */ + public function getDoctypes() + { + return $this->_registry['doctypes']; + } + + /** + * Is doctype XHTML? + * + * @return boolean + */ + public function isXhtml() + { + return (stristr($this->getDoctype(), 'xhtml') ? true : false); + } + + /** + * Is doctype strict? + * + * @return boolean + */ + public function isStrict() + { + switch ( $this->getDoctype() ) + { + case self::XHTML1_STRICT: + case self::XHTML11: + case self::HTML4_STRICT: + return true; + default: + return false; + } + } + + /** + * Is doctype HTML5? (HeadMeta uses this for validation) + * + * @return booleean + */ + public function isHtml5() { + return (stristr($this->doctype(), '') ? true : false); + } + + /** + * Is doctype RDFa? + * + * @return booleean + */ + public function isRdfa() { + return (stristr($this->getDoctype(), 'rdfa') ? true : false); + } + + /** + * String representation of doctype + * + * @return string + */ + public function __toString() + { + $doctypes = $this->getDoctypes(); + return $doctypes[$this->getDoctype()]; + } +} diff --git a/library/Zend/View/Helper/Fieldset.php b/library/Zend/View/Helper/Fieldset.php new file mode 100755 index 000000000..fce37b934 --- /dev/null +++ b/library/Zend/View/Helper/Fieldset.php @@ -0,0 +1,79 @@ +_getInfo($name, $content, $attribs); + extract($info); + + // get legend + $legend = ''; + if (isset($attribs['legend'])) { + $legendString = trim($attribs['legend']); + if (!empty($legendString)) { + $legend = '' + . (($escape) ? $this->view->escape($legendString) : $legendString) + . '' . PHP_EOL; + } + unset($attribs['legend']); + } + + // get id + if (!empty($id)) { + $id = ' id="' . $this->view->escape($id) . '"'; + } else { + $id = ''; + } + + // render fieldset + $xhtml = '_htmlAttribs($attribs) + . '>' + . $legend + . $content + . ''; + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/Form.php b/library/Zend/View/Helper/Form.php new file mode 100755 index 000000000..514bdd901 --- /dev/null +++ b/library/Zend/View/Helper/Form.php @@ -0,0 +1,86 @@ +_getInfo($name, $content, $attribs); + extract($info); + + if (!empty($id)) { + $id = ' id="' . $this->view->escape($id) . '"'; + } else { + $id = ''; + } + + if (array_key_exists('id', $attribs) && empty($attribs['id'])) { + unset($attribs['id']); + } + + if (!empty($name) && !($this->_isXhtml() && $this->_isStrictDoctype())) { + $name = ' name="' . $this->view->escape($name) . '"'; + } else { + $name = ''; + } + + if ($this->_isHtml5() && array_key_exists('action', $attribs) && !$attribs['action']) { + unset($attribs['action']); + } + + if ( array_key_exists('name', $attribs) && empty($attribs['id'])) { + unset($attribs['id']); + } + + $xhtml = '_htmlAttribs($attribs) + . '>'; + + if (false !== $content) { + $xhtml .= $content + . ''; + } + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormButton.php b/library/Zend/View/Helper/FormButton.php new file mode 100755 index 000000000..abdd9f8f3 --- /dev/null +++ b/library/Zend/View/Helper/FormButton.php @@ -0,0 +1,105 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, id, value, attribs, options, listsep, disable, escape + + // Get content + $content = ''; + if (isset($attribs['content'])) { + $content = $attribs['content']; + unset($attribs['content']); + } else { + $content = $value; + } + + // Ensure type is sane + $type = 'button'; + if (isset($attribs['type'])) { + $attribs['type'] = strtolower($attribs['type']); + if (in_array($attribs['type'], array('submit', 'reset', 'button'))) { + $type = $attribs['type']; + } + unset($attribs['type']); + } + + // build the element + if ($disable) { + $attribs['disabled'] = 'disabled'; + } + + $content = ($escape) ? $this->view->escape($content) : $content; + + $xhtml = 'view->escape($value) . '"'; + } + + // add attributes and close start tag + $xhtml .= $this->_htmlAttribs($attribs) . '>'; + + // add content and end tag + $xhtml .= $content . ''; + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormCheckbox.php b/library/Zend/View/Helper/FormCheckbox.php new file mode 100755 index 000000000..fd6f4ae5b --- /dev/null +++ b/library/Zend/View/Helper/FormCheckbox.php @@ -0,0 +1,164 @@ + '1', + 'uncheckedValue' => '0' + ); + + /** + * Generates a 'checkbox' element. + * + * @access public + * + * @param string|array $name If a string, the element name. If an + * array, all other parameters are ignored, and the array elements + * are extracted in place of added parameters. + * @param mixed $value The element value. + * @param array $attribs Attributes for the element tag. + * @return string The element XHTML. + */ + public function formCheckbox($name, $value = null, $attribs = null, array $checkedOptions = null) + { + $info = $this->_getInfo($name, $value, $attribs); + extract($info); // name, id, value, attribs, options, listsep, disable + + $checked = false; + if (isset($attribs['checked']) && $attribs['checked']) { + $checked = true; + unset($attribs['checked']); + } elseif (isset($attribs['checked'])) { + $checked = false; + unset($attribs['checked']); + } + + $checkedOptions = self::determineCheckboxInfo($value, $checked, $checkedOptions); + + // is the element disabled? + $disabled = ''; + if ($disable) { + $disabled = ' disabled="disabled"'; + } + + // build the element + $xhtml = ''; + if ((!$disable && !strstr($name, '[]')) + && (empty($attribs['disableHidden']) || !$attribs['disableHidden']) + ) { + $xhtml = $this->_hidden($name, $checkedOptions['uncheckedValue']); + } + + if (array_key_exists('disableHidden', $attribs)) { + unset($attribs['disableHidden']); + } + + $xhtml .= '_htmlAttribs($attribs) + . $this->getClosingBracket(); + + return $xhtml; + } + + /** + * Determine checkbox information + * + * @param string $value + * @param bool $checked + * @param array|null $checkedOptions + * @return array + */ + public static function determineCheckboxInfo($value, $checked, array $checkedOptions = null) + { + // Checked/unchecked values + $checkedValue = null; + $uncheckedValue = null; + if (is_array($checkedOptions)) { + if (array_key_exists('checkedValue', $checkedOptions)) { + $checkedValue = (string) $checkedOptions['checkedValue']; + unset($checkedOptions['checkedValue']); + } + if (array_key_exists('uncheckedValue', $checkedOptions)) { + $uncheckedValue = (string) $checkedOptions['uncheckedValue']; + unset($checkedOptions['uncheckedValue']); + } + if (null === $checkedValue) { + $checkedValue = (string) array_shift($checkedOptions); + } + if (null === $uncheckedValue) { + $uncheckedValue = (string) array_shift($checkedOptions); + } + } elseif ($value !== null) { + $uncheckedValue = self::$_defaultCheckedOptions['uncheckedValue']; + } else { + $checkedValue = self::$_defaultCheckedOptions['checkedValue']; + $uncheckedValue = self::$_defaultCheckedOptions['uncheckedValue']; + } + + // is the element checked? + $checkedString = ''; + if ($checked || ((string) $value === $checkedValue)) { + $checkedString = ' checked="checked"'; + $checked = true; + } else { + $checked = false; + } + + // Checked value should be value if no checked options provided + if ($checkedValue == null) { + $checkedValue = $value; + } + + return array( + 'checked' => $checked, + 'checkedString' => $checkedString, + 'checkedValue' => $checkedValue, + 'uncheckedValue' => $uncheckedValue, + ); + } +} diff --git a/library/Zend/View/Helper/FormElement.php b/library/Zend/View/Helper/FormElement.php new file mode 100755 index 000000000..8c1373b38 --- /dev/null +++ b/library/Zend/View/Helper/FormElement.php @@ -0,0 +1,204 @@ +_translator; + } + + /** + * Set translator + * + * @param Zend_Translate|Zend_Translate_Adapter|null $translator + * @return Zend_View_Helper_FormElement + */ + public function setTranslator($translator = null) + { + if (null === $translator) { + $this->_translator = null; + } elseif ($translator instanceof Zend_Translate_Adapter) { + $this->_translator = $translator; + } elseif ($translator instanceof Zend_Translate) { + $this->_translator = $translator->getAdapter(); + } else { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid translator specified'); + $e->setView($this->view); + throw $e; + } + return $this; + } + + /** + * Converts parameter arguments to an element info array. + * + * E.g, formExample($name, $value, $attribs, $options, $listsep) is + * the same thing as formExample(array('name' => ...)). + * + * Note that you cannot pass a 'disable' param; you need to pass + * it as an 'attribs' key. + * + * @access protected + * + * @return array An element info array with keys for name, value, + * attribs, options, listsep, disable, and escape. + */ + protected function _getInfo($name, $value = null, $attribs = null, + $options = null, $listsep = null + ) { + // the baseline info. note that $name serves a dual purpose; + // if an array, it's an element info array that will override + // these baseline values. as such, ignore it for the 'name' + // if it's an array. + $info = array( + 'name' => is_array($name) ? '' : $name, + 'id' => is_array($name) ? '' : $name, + 'value' => $value, + 'attribs' => $attribs, + 'options' => $options, + 'listsep' => $listsep, + 'disable' => false, + 'escape' => true, + ); + + // override with named args + if (is_array($name)) { + // only set keys that are already in info + foreach ($info as $key => $val) { + if (isset($name[$key])) { + $info[$key] = $name[$key]; + } + } + + // If all helper options are passed as an array, attribs may have + // been as well + if (null === $attribs) { + $attribs = $info['attribs']; + } + } + + $attribs = (array)$attribs; + + // Normalize readonly tag + if (array_key_exists('readonly', $attribs)) { + $attribs['readonly'] = 'readonly'; + } + + // Disable attribute + if (array_key_exists('disable', $attribs)) { + if (is_scalar($attribs['disable'])) { + // disable the element + $info['disable'] = (bool)$attribs['disable']; + } else if (is_array($attribs['disable'])) { + $info['disable'] = $attribs['disable']; + } + } + + // Set ID for element + if (array_key_exists('id', $attribs)) { + $info['id'] = (string)$attribs['id']; + } else if ('' !== $info['name']) { + $info['id'] = trim(strtr($info['name'], + array('[' => '-', ']' => '')), '-'); + } + + // Remove NULL name attribute override + if (array_key_exists('name', $attribs) && is_null($attribs['name'])) { + unset($attribs['name']); + } + + // Override name in info if specified in attribs + if (array_key_exists('name', $attribs) && $attribs['name'] != $info['name']) { + $info['name'] = $attribs['name']; + } + + // Determine escaping from attributes + if (array_key_exists('escape', $attribs)) { + $info['escape'] = (bool)$attribs['escape']; + } + + // Determine listsetp from attributes + if (array_key_exists('listsep', $attribs)) { + $info['listsep'] = (string)$attribs['listsep']; + } + + // Remove attribs that might overwrite the other keys. We do this LAST + // because we needed the other attribs values earlier. + foreach ($info as $key => $val) { + if (array_key_exists($key, $attribs)) { + unset($attribs[$key]); + } + } + $info['attribs'] = $attribs; + + // done! + return $info; + } + + /** + * Creates a hidden element. + * + * We have this as a common method because other elements often + * need hidden elements for their operation. + * + * @access protected + * + * @param string $name The element name. + * @param string $value The element value. + * @param array $attribs Attributes for the element. + * + * @return string A hidden element. + */ + protected function _hidden($name, $value = null, $attribs = null) + { + return '_htmlAttribs($attribs) . $this->getClosingBracket(); + } +} diff --git a/library/Zend/View/Helper/FormErrors.php b/library/Zend/View/Helper/FormErrors.php new file mode 100755 index 000000000..4e092b115 --- /dev/null +++ b/library/Zend/View/Helper/FormErrors.php @@ -0,0 +1,167 @@ +'; + protected $_htmlElementStart = '
  • '; + protected $_htmlElementSeparator = '
  • '; + /**#@-*/ + + /** + * Render form errors + * + * @param string|array $errors Error(s) to render + * @param array $options + * @return string + */ + public function formErrors($errors, array $options = null) + { + $escape = true; + if (isset($options['escape'])) { + $escape = (bool) $options['escape']; + unset($options['escape']); + } + + if (empty($options['class'])) { + $options['class'] = 'errors'; + } + + if (isset($options['elementStart'])) { + $this->setElementStart($options['elementStart']); + } + if (isset($options['elementEnd'])) { + $this->setElementEnd($options['elementEnd']); + } + if (isset($options['elementSeparator'])) { + $this->setElementSeparator($options['elementSeparator']); + } + + $start = $this->getElementStart(); + if (strstr($start, '%s')) { + $attribs = $this->_htmlAttribs($options); + $start = sprintf($start, $attribs); + } + + if ($escape) { + foreach ($errors as $key => $error) { + $errors[$key] = $this->view->escape($error); + } + } + + $html = $start + . implode($this->getElementSeparator(), (array) $errors) + . $this->getElementEnd(); + + return $html; + } + + /** + * Set end string for displaying errors + * + * @param string $string + * @return Zend_View_Helper_FormErrors + */ + public function setElementEnd($string) + { + $this->_htmlElementEnd = (string) $string; + return $this; + } + + /** + * Retrieve end string for displaying errors + * + * @return string + */ + public function getElementEnd() + { + return $this->_htmlElementEnd; + } + + /** + * Set separator string for displaying errors + * + * @param string $string + * @return Zend_View_Helper_FormErrors + */ + public function setElementSeparator($string) + { + $this->_htmlElementSeparator = (string) $string; + return $this; + } + + /** + * Retrieve separator string for displaying errors + * + * @return string + */ + public function getElementSeparator() + { + return $this->_htmlElementSeparator; + } + + /** + * Set start string for displaying errors + * + * @param string $string + * @return Zend_View_Helper_FormErrors + */ + public function setElementStart($string) + { + $this->_htmlElementStart = (string) $string; + return $this; + } + + /** + * Retrieve start string for displaying errors + * + * @return string + */ + public function getElementStart() + { + return $this->_htmlElementStart; + } + +} diff --git a/library/Zend/View/Helper/FormFile.php b/library/Zend/View/Helper/FormFile.php new file mode 100755 index 000000000..1ea7bfc85 --- /dev/null +++ b/library/Zend/View/Helper/FormFile.php @@ -0,0 +1,75 @@ +_getInfo($name, null, $attribs); + extract($info); // name, id, value, attribs, options, listsep, disable + + // is it disabled? + $disabled = ''; + if ($disable) { + $disabled = ' disabled="disabled"'; + } + + // build the element + $xhtml = '_htmlAttribs($attribs) + . $this->getClosingBracket(); + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormHidden.php b/library/Zend/View/Helper/FormHidden.php new file mode 100755 index 000000000..fbd2b7396 --- /dev/null +++ b/library/Zend/View/Helper/FormHidden.php @@ -0,0 +1,66 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable + if (isset($id)) { + if (isset($attribs) && is_array($attribs)) { + $attribs['id'] = $id; + } else { + $attribs = array('id' => $id); + } + } + return $this->_hidden($name, $value, $attribs); + } +} diff --git a/library/Zend/View/Helper/FormImage.php b/library/Zend/View/Helper/FormImage.php new file mode 100755 index 000000000..be3daa3d0 --- /dev/null +++ b/library/Zend/View/Helper/FormImage.php @@ -0,0 +1,95 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable + + // Determine if we should use the value or the src attribute + if (isset($attribs['src'])) { + $src = ' src="' . $this->view->escape($attribs['src']) . '"'; + unset($attribs['src']); + } else { + $src = ' src="' . $this->view->escape($value) . '"'; + unset($value); + } + + // Do we have a value? + if (isset($value) && !empty($value)) { + $value = ' value="' . $this->view->escape($value) . '"'; + } else { + $value = ''; + } + + // Disabled? + $disabled = ''; + if ($disable) { + $disabled = ' disabled="disabled"'; + } + + // build the element + $xhtml = '_htmlAttribs($attribs) + . $this->getClosingBracket(); + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormLabel.php b/library/Zend/View/Helper/FormLabel.php new file mode 100755 index 000000000..f4e034f9b --- /dev/null +++ b/library/Zend/View/Helper/FormLabel.php @@ -0,0 +1,72 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable, escape + + // build the element + if ($disable) { + // disabled; display nothing + return ''; + } + + $value = ($escape) ? $this->view->escape($value) : $value; + $for = (empty($attribs['disableFor']) || !$attribs['disableFor']) + ? ' for="' . $this->view->escape($id) . '"' + : ''; + if (array_key_exists('disableFor', $attribs)) { + unset($attribs['disableFor']); + } + + // enabled; display label + $xhtml = '_htmlAttribs($attribs) + . '>' . $value . ''; + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormMultiCheckbox.php b/library/Zend/View/Helper/FormMultiCheckbox.php new file mode 100755 index 000000000..49386cc45 --- /dev/null +++ b/library/Zend/View/Helper/FormMultiCheckbox.php @@ -0,0 +1,74 @@ +\n") + { + return $this->formRadio($name, $value, $attribs, $options, $listsep); + } +} diff --git a/library/Zend/View/Helper/FormNote.php b/library/Zend/View/Helper/FormNote.php new file mode 100755 index 000000000..e051fdcc3 --- /dev/null +++ b/library/Zend/View/Helper/FormNote.php @@ -0,0 +1,61 @@ +_getInfo($name, $value); + extract($info); // name, value, attribs, options, listsep, disable + return $value; + } +} diff --git a/library/Zend/View/Helper/FormPassword.php b/library/Zend/View/Helper/FormPassword.php new file mode 100755 index 000000000..cb42c4b75 --- /dev/null +++ b/library/Zend/View/Helper/FormPassword.php @@ -0,0 +1,89 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable + + // is it disabled? + $disabled = ''; + if ($disable) { + // disabled + $disabled = ' disabled="disabled"'; + } + + // determine the XHTML value + $valueString = ' value=""'; + if (array_key_exists('renderPassword', $attribs)) { + if ($attribs['renderPassword']) { + $valueString = ' value="' . $this->view->escape($value) . '"'; + } + unset($attribs['renderPassword']); + } + + // render the element + $xhtml = '_htmlAttribs($attribs) + . $this->getClosingBracket(); + + return $xhtml; + } + +} diff --git a/library/Zend/View/Helper/FormRadio.php b/library/Zend/View/Helper/FormRadio.php new file mode 100755 index 000000000..fa26a076b --- /dev/null +++ b/library/Zend/View/Helper/FormRadio.php @@ -0,0 +1,187 @@ +\n") + { + + $info = $this->_getInfo($name, $value, $attribs, $options, $listsep); + extract($info); // name, value, attribs, options, listsep, disable + + // retrieve attributes for labels (prefixed with 'label_' or 'label') + $label_attribs = array(); + foreach ($attribs as $key => $val) { + $tmp = false; + $keyLen = strlen($key); + if ((6 < $keyLen) && (substr($key, 0, 6) == 'label_')) { + $tmp = substr($key, 6); + } elseif ((5 < $keyLen) && (substr($key, 0, 5) == 'label')) { + $tmp = substr($key, 5); + } + + if ($tmp) { + // make sure first char is lowercase + $tmp[0] = strtolower($tmp[0]); + $label_attribs[$tmp] = $val; + unset($attribs[$key]); + } + } + + $labelPlacement = 'append'; + foreach ($label_attribs as $key => $val) { + switch (strtolower($key)) { + case 'placement': + unset($label_attribs[$key]); + $val = strtolower($val); + if (in_array($val, array('prepend', 'append'))) { + $labelPlacement = $val; + } + break; + } + } + + // the radio button values and labels + $options = (array) $options; + + // build the element + $xhtml = ''; + $list = array(); + + // should the name affect an array collection? + $name = $this->view->escape($name); + if ($this->_isArray && ('[]' != substr($name, -2))) { + $name .= '[]'; + } + + // ensure value is an array to allow matching multiple times + $value = (array) $value; + + // Set up the filter - Alnum + hyphen + underscore + require_once 'Zend/Filter/PregReplace.php'; + $pattern = @preg_match('/\pL/u', 'a') + ? '/[^\p{L}\p{N}\-\_]/u' // Unicode + : '/[^a-zA-Z0-9\-\_]/'; // No Unicode + $filter = new Zend_Filter_PregReplace($pattern, ""); + + // add radio buttons to the list. + foreach ($options as $opt_value => $opt_label) { + + // Should the label be escaped? + if ($escape) { + $opt_label = $this->view->escape($opt_label); + } + + // is it disabled? + $disabled = ''; + if (true === $disable) { + $disabled = ' disabled="disabled"'; + } elseif (is_array($disable) && in_array($opt_value, $disable)) { + $disabled = ' disabled="disabled"'; + } + + // is it checked? + $checked = ''; + if (in_array($opt_value, $value)) { + $checked = ' checked="checked"'; + } + + // generate ID + $optId = $id . '-' . $filter->filter($opt_value); + + // Wrap the radios in labels + $radio = '_htmlAttribs($label_attribs) . '>' + . (('prepend' == $labelPlacement) ? $opt_label : '') + . '_htmlAttribs($attribs) + . $this->getClosingBracket() + . (('append' == $labelPlacement) ? $opt_label : '') + . ''; + + // add to the array of radio buttons + $list[] = $radio; + } + + // XHTML or HTML for standard list separator? + if (!$this->_isXhtml() && false !== strpos($listsep, '
    ')) { + $listsep = str_replace('
    ', '
    ', $listsep); + } + + // done! + $xhtml .= implode($listsep, $list); + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormReset.php b/library/Zend/View/Helper/FormReset.php new file mode 100755 index 000000000..a4e62826d --- /dev/null +++ b/library/Zend/View/Helper/FormReset.php @@ -0,0 +1,82 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable + + // check if disabled + $disabled = ''; + if ($disable) { + $disabled = ' disabled="disabled"'; + } + + // Render button + $xhtml = 'view->escape($value) . '"'; + } + + // add attributes, close, and return + $xhtml .= $this->_htmlAttribs($attribs) . $this->getClosingBracket(); + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormSelect.php b/library/Zend/View/Helper/FormSelect.php new file mode 100755 index 000000000..8654f3d0e --- /dev/null +++ b/library/Zend/View/Helper/FormSelect.php @@ -0,0 +1,200 @@ +\n") + { + $info = $this->_getInfo($name, $value, $attribs, $options, $listsep); + extract($info); // name, id, value, attribs, options, listsep, disable + + // force $value to array so we can compare multiple values to multiple + // options; also ensure it's a string for comparison purposes. + $value = array_map('strval', (array) $value); + + // check if element may have multiple values + $multiple = ''; + + if (substr($name, -2) == '[]') { + // multiple implied by the name + $multiple = ' multiple="multiple"'; + } + + if (isset($attribs['multiple'])) { + // Attribute set + if ($attribs['multiple']) { + // True attribute; set multiple attribute + $multiple = ' multiple="multiple"'; + + // Make sure name indicates multiple values are allowed + if (!empty($multiple) && (substr($name, -2) != '[]')) { + $name .= '[]'; + } + } else { + // False attribute; ensure attribute not set + $multiple = ''; + } + unset($attribs['multiple']); + } + + // handle the options classes + $optionClasses = array(); + if (isset($attribs['optionClasses'])) { + $optionClasses = $attribs['optionClasses']; + unset($attribs['optionClasses']); + } + + // now start building the XHTML. + $disabled = ''; + if (true === $disable) { + $disabled = ' disabled="disabled"'; + } + + // Build the surrounding select element first. + $xhtml = '_htmlAttribs($attribs) + . ">\n "; + + // build the list of options + $list = array(); + $translator = $this->getTranslator(); + foreach ((array) $options as $opt_value => $opt_label) { + if (is_array($opt_label)) { + $opt_disable = ''; + if (is_array($disable) && in_array($opt_value, $disable)) { + $opt_disable = ' disabled="disabled"'; + } + if (null !== $translator) { + $opt_value = $translator->translate($opt_value); + } + $opt_id = ' id="' . $this->view->escape($id) . '-optgroup-' + . $this->view->escape($opt_value) . '"'; + $list[] = ''; + foreach ($opt_label as $val => $lab) { + $list[] = $this->_build($val, $lab, $value, $disable, $optionClasses); + } + $list[] = ''; + } else { + $list[] = $this->_build($opt_value, $opt_label, $value, $disable, $optionClasses); + } + } + + // add the options to the xhtml and close the select + $xhtml .= implode("\n ", $list) . "\n"; + + return $xhtml; + } + + /** + * Builds the actual "; + + return $opt; + } + +} diff --git a/library/Zend/View/Helper/FormSubmit.php b/library/Zend/View/Helper/FormSubmit.php new file mode 100755 index 000000000..72223e203 --- /dev/null +++ b/library/Zend/View/Helper/FormSubmit.php @@ -0,0 +1,81 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable, id + // check if disabled + $disabled = ''; + if ($disable) { + $disabled = ' disabled="disabled"'; + } + + if ($id) { + $id = ' id="' . $this->view->escape($id) . '"'; + } + + // Render the button. + $xhtml = '_htmlAttribs($attribs) + . $this->getClosingBracket(); + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormText.php b/library/Zend/View/Helper/FormText.php new file mode 100755 index 000000000..9b9f58135 --- /dev/null +++ b/library/Zend/View/Helper/FormText.php @@ -0,0 +1,78 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable + + // build the element + $disabled = ''; + if ($disable) { + // disabled + $disabled = ' disabled="disabled"'; + } + + $xhtml = '_htmlAttribs($attribs) + . $this->getClosingBracket(); + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/FormTextarea.php b/library/Zend/View/Helper/FormTextarea.php new file mode 100755 index 000000000..c384fc4da --- /dev/null +++ b/library/Zend/View/Helper/FormTextarea.php @@ -0,0 +1,104 @@ +_getInfo($name, $value, $attribs); + extract($info); // name, value, attribs, options, listsep, disable + + // is it disabled? + $disabled = ''; + if ($disable) { + // disabled. + $disabled = ' disabled="disabled"'; + } + + // Make sure that there are 'rows' and 'cols' values + // as required by the spec. noted by Orjan Persson. + if (empty($attribs['rows'])) { + $attribs['rows'] = (int) $this->rows; + } + if (empty($attribs['cols'])) { + $attribs['cols'] = (int) $this->cols; + } + + // build the element + $xhtml = ''; + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/Gravatar.php b/library/Zend/View/Helper/Gravatar.php new file mode 100755 index 000000000..dab1f799f --- /dev/null +++ b/library/Zend/View/Helper/Gravatar.php @@ -0,0 +1,363 @@ + 80, + 'default_img' => self::DEFAULT_MM, + 'rating' => self::RATING_G, + 'secure' => null, + ); + + /** + * Email Adress + * + * @var string + */ + protected $_email; + + /** + * Attributes for HTML image tag + * + * @var array + */ + protected $_attribs; + + /** + * Returns an avatar from gravatar's service. + * + * $options may include the following: + * - 'img_size' int height of img to return + * - 'default_img' string img to return if email adress has not found + * - 'rating' string rating parameter for avatar + * - 'secure' bool load from the SSL or Non-SSL location + * + * @see http://pl.gravatar.com/site/implement/url + * @see http://pl.gravatar.com/site/implement/url More information about gravatar's service. + * @param string|null $email Email adress. + * @param null|array $options Options + * @param array $attribs Attributes for image tag (title, alt etc.) + * @return Zend_View_Helper_Gravatar + */ + public function gravatar($email = "", $options = array(), $attribs = array()) + { + $this->setEmail($email); + $this->setOptions($options); + $this->setAttribs($attribs); + return $this; + } + + /** + * Configure state + * + * @param array $options + * @return Zend_View_Helper_Gravatar + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $method = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))); + if (method_exists($this, $method)) { + $this->{$method}($value); + } + } + return $this; + } + + /** + * Get img size + * + * @return int The img size + */ + public function getImgSize() + { + return $this->_options['img_size']; + } + + /** + * Set img size in pixels + * + * @param int $imgSize Size of img must be between 1 and 512 + * @return Zend_View_Helper_Gravatar + */ + public function setImgSize($imgSize) + { + $this->_options['img_size'] = (int) $imgSize; + return $this; + } + + /** + * Get default img + * + * @return string + */ + public function getDefaultImg() + { + return $this->_options['default_img']; + } + + /** + * Set default img + * + * Can be either an absolute URL to an image, or one of the DEFAULT_* constants + * + * @param string $defaultImg + * @link http://pl.gravatar.com/site/implement/url More information about default image. + * @return Zend_View_Helper_Gravatar + */ + public function setDefaultImg($defaultImg) + { + $this->_options['default_img'] = urlencode($defaultImg); + return $this; + } + + /** + * Set rating value + * + * Must be one of the RATING_* constants + * + * @param string $rating Value for rating. Allowed values are: g, px, r,x + * @link http://pl.gravatar.com/site/implement/url More information about rating. + * @throws Zend_View_Exception + */ + public function setRating($rating) + { + switch ($rating) { + case self::RATING_G: + case self::RATING_PG: + case self::RATING_R: + case self::RATING_X: + $this->_options['rating'] = $rating; + break; + default: + require_once 'Zend/View/Exception.php'; + throw new Zend_View_Exception(sprintf( + 'The rating value "%s" is not allowed', + $rating + )); + } + return $this; + } + + /** + * Get rating value + * + * @return string + */ + public function getRating() + { + return $this->_options['rating']; + } + + /** + * Set email adress + * + * @param string $email + * @return Zend_View_Helper_Gravatar + */ + public function setEmail( $email ) + { + $this->_email = $email; + return $this; + } + + /** + * Get email adress + * + * @return string + */ + public function getEmail() + { + return $this->_email; + } + + /** + * Load from an SSL or No-SSL location? + * + * @param bool $flag + * @return Zend_View_Helper_Gravatar + */ + public function setSecure($flag) + { + $this->_options['secure'] = ($flag === null) ? null : (bool) $flag; + return $this; + } + + /** + * Get an SSL or a No-SSL location + * + * @return bool + */ + public function getSecure() + { + if ($this->_options['secure'] === null) { + return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'); + } + return $this->_options['secure']; + } + + /** + * Get attribs of image + * + * Warning! + * If you set src attrib, you get it, but this value will be overwritten in + * protected method _setSrcAttribForImg(). And finally your get other src + * value! + * + * @return array + */ + public function getAttribs() + { + return $this->_attribs; + } + + /** + * Set attribs for image tag + * + * Warning! You shouldn't set src attrib for image tag. + * This attrib is overwritten in protected method _setSrcAttribForImg(). + * This method(_setSrcAttribForImg) is called in public method getImgTag(). + + * @param array $attribs + * @return Zend_View_Helper_Gravatar + */ + public function setAttribs(array $attribs) + { + $this->_attribs = $attribs; + return $this; + } + + /** + * Get URL to gravatar's service. + * + * @return string URL + */ + protected function _getGravatarUrl() + { + return ($this->getSecure() === false) ? self::GRAVATAR_URL : self::GRAVATAR_URL_SECURE; + } + + /** + * Get avatar url (including size, rating and default image oprions) + * + * @return string + */ + protected function _getAvatarUrl() + { + $src = $this->_getGravatarUrl() + . '/' + . md5(strtolower(trim($this->getEmail()))) + . '?s=' + . $this->getImgSize() + . '&d=' + . $this->getDefaultImg() + . '&r=' + . $this->getRating(); + return $src; + } + + /** + * Set src attrib for image. + * + * You shouldn't set a own url value! + * It sets value, uses protected method _getAvatarUrl. + * + * If already exsist overwritten. + */ + protected function _setSrcAttribForImg() + { + $attribs = $this->getAttribs(); + $attribs['src'] = $this->_getAvatarUrl(); + $this->setAttribs($attribs); + } + + /** + * Return valid image tag + * + * @return string + */ + public function getImgTag() + { + $this->_setSrcAttribForImg(); + $html = '_htmlAttribs($this->getAttribs()) + . $this->getClosingBracket(); + + return $html; + } + + /** + * Return valid image tag + * + * @return string + */ + public function __toString() + { + return $this->getImgTag(); + + } +} diff --git a/library/Zend/View/Helper/HeadLink.php b/library/Zend/View/Helper/HeadLink.php new file mode 100755 index 000000000..61bf0a29d --- /dev/null +++ b/library/Zend/View/Helper/HeadLink.php @@ -0,0 +1,478 @@ +setSeparator(PHP_EOL); + } + + /** + * headLink() - View Helper Method + * + * Returns current object instance. Optionally, allows passing array of + * values to build link. + * + * @return Zend_View_Helper_HeadLink + */ + public function headLink(array $attributes = null, $placement = Zend_View_Helper_Placeholder_Container_Abstract::APPEND) + { + if (null !== $attributes) { + $item = $this->createData($attributes); + switch ($placement) { + case Zend_View_Helper_Placeholder_Container_Abstract::SET: + $this->set($item); + break; + case Zend_View_Helper_Placeholder_Container_Abstract::PREPEND: + $this->prepend($item); + break; + case Zend_View_Helper_Placeholder_Container_Abstract::APPEND: + default: + $this->append($item); + break; + } + } + return $this; + } + + /** + * Overload method access + * + * Creates the following virtual methods: + * - appendStylesheet($href, $media, $conditionalStylesheet, $extras) + * - offsetSetStylesheet($index, $href, $media, $conditionalStylesheet, $extras) + * - prependStylesheet($href, $media, $conditionalStylesheet, $extras) + * - setStylesheet($href, $media, $conditionalStylesheet, $extras) + * - appendAlternate($href, $type, $title, $extras) + * - offsetSetAlternate($index, $href, $type, $title, $extras) + * - prependAlternate($href, $type, $title, $extras) + * - setAlternate($href, $type, $title, $extras) + * + * Items that may be added in the future: + * - Navigation? need to find docs on this + * - public function appendStart() + * - public function appendContents() + * - public function appendPrev() + * - public function appendNext() + * - public function appendIndex() + * - public function appendEnd() + * - public function appendGlossary() + * - public function appendAppendix() + * - public function appendHelp() + * - public function appendBookmark() + * - Other? + * - public function appendCopyright() + * - public function appendChapter() + * - public function appendSection() + * - public function appendSubsection() + * + * @param mixed $method + * @param mixed $args + * @return void + */ + public function __call($method, $args) + { + if (preg_match('/^(?Pset|(ap|pre)pend|offsetSet)(?PStylesheet|Alternate)$/', $method, $matches)) { + $argc = count($args); + $action = $matches['action']; + $type = $matches['type']; + $index = null; + + if ('offsetSet' == $action) { + if (0 < $argc) { + $index = array_shift($args); + --$argc; + } + } + + if (1 > $argc) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('%s requires at least one argument', $method)); + $e->setView($this->view); + throw $e; + } + + if (is_array($args[0])) { + $item = $this->createData($args[0]); + } else { + $dataMethod = 'createData' . $type; + $item = $this->$dataMethod($args); + } + + if ($item) { + if ('offsetSet' == $action) { + $this->offsetSet($index, $item); + } else { + $this->$action($item); + } + } + + return $this; + } + + return parent::__call($method, $args); + } + + /** + * Check if value is valid + * + * @param mixed $value + * @return boolean + */ + protected function _isValid($value) + { + if (!$value instanceof stdClass) { + return false; + } + + $vars = get_object_vars($value); + $keys = array_keys($vars); + $intersection = array_intersect($this->_itemKeys, $keys); + if (empty($intersection)) { + return false; + } + + return true; + } + + /** + * append() + * + * @param array $value + * @return void + */ + public function append($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('append() expects a data token; please use one of the custom append*() methods'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->append($value); + } + + /** + * offsetSet() + * + * @param string|int $index + * @param array $value + * @return void + */ + public function offsetSet($index, $value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('offsetSet() expects a data token; please use one of the custom offsetSet*() methods'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->offsetSet($index, $value); + } + + /** + * prepend() + * + * @param array $value + * @return Zend_Layout_ViewHelper_HeadLink + */ + public function prepend($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('prepend() expects a data token; please use one of the custom prepend*() methods'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->prepend($value); + } + + /** + * set() + * + * @param array $value + * @return Zend_Layout_ViewHelper_HeadLink + */ + public function set($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('set() expects a data token; please use one of the custom set*() methods'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->set($value); + } + + + /** + * Create HTML link element from data item + * + * @param stdClass $item + * @return string + */ + public function itemToString(stdClass $item) + { + $attributes = (array) $item; + $link = '_itemKeys as $itemKey) { + if (isset($attributes[$itemKey])) { + if(is_array($attributes[$itemKey])) { + foreach($attributes[$itemKey] as $key => $value) { + $link .= sprintf('%s="%s" ', $key, ($this->_autoEscape) ? $this->_escape($value) : $value); + } + } else { + $link .= sprintf('%s="%s" ', $itemKey, ($this->_autoEscape) ? $this->_escape($attributes[$itemKey]) : $attributes[$itemKey]); + } + } + } + + if ($this->view instanceof Zend_View_Abstract) { + $link .= ($this->view->doctype()->isXhtml()) ? '/>' : '>'; + } else { + $link .= '/>'; + } + + if (($link == '') || ($link == '')) { + return ''; + } + + if (isset($attributes['conditionalStylesheet']) + && !empty($attributes['conditionalStylesheet']) + && is_string($attributes['conditionalStylesheet'])) + { + if (str_replace(' ', '', $attributes['conditionalStylesheet']) === '!IE') { + $link = '' . $link . ''; + } + + return $link; + } + + /** + * Render link elements as string + * + * @param string|int $indent + * @return string + */ + public function toString($indent = null) + { + $indent = (null !== $indent) + ? $this->getWhitespace($indent) + : $this->getIndent(); + + $items = array(); + $this->getContainer()->ksort(); + foreach ($this as $item) { + $items[] = $this->itemToString($item); + } + + return $indent . implode($this->_escape($this->getSeparator()) . $indent, $items); + } + + /** + * Create data item for stack + * + * @param array $attributes + * @return stdClass + */ + public function createData(array $attributes) + { + $data = (object) $attributes; + return $data; + } + + /** + * Create item for stylesheet link item + * + * @param array $args + * @return stdClass|false Returns fals if stylesheet is a duplicate + */ + public function createDataStylesheet(array $args) + { + $rel = 'stylesheet'; + $type = 'text/css'; + $media = 'screen'; + $conditionalStylesheet = false; + $href = array_shift($args); + + if ($this->_isDuplicateStylesheet($href)) { + return false; + } + + if (0 < count($args)) { + $media = array_shift($args); + if(is_array($media)) { + $media = implode(',', $media); + } else { + $media = (string) $media; + } + } + if (0 < count($args)) { + $conditionalStylesheet = array_shift($args); + if(!empty($conditionalStylesheet) && is_string($conditionalStylesheet)) { + $conditionalStylesheet = (string) $conditionalStylesheet; + } else { + $conditionalStylesheet = null; + } + } + + if(0 < count($args) && is_array($args[0])) { + $extras = array_shift($args); + $extras = (array) $extras; + } + + $attributes = compact('rel', 'type', 'href', 'media', 'conditionalStylesheet', 'extras'); + return $this->createData($this->_applyExtras($attributes)); + } + + /** + * Is the linked stylesheet a duplicate? + * + * @param string $uri + * @return bool + */ + protected function _isDuplicateStylesheet($uri) + { + foreach ($this->getContainer() as $item) { + if (($item->rel == 'stylesheet') && ($item->href == $uri)) { + return true; + } + } + return false; + } + + /** + * Create item for alternate link item + * + * @param array $args + * @return stdClass + */ + public function createDataAlternate(array $args) + { + if (3 > count($args)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Alternate tags require 3 arguments; %s provided', count($args))); + $e->setView($this->view); + throw $e; + } + + $rel = 'alternate'; + $href = array_shift($args); + $type = array_shift($args); + $title = array_shift($args); + + if(0 < count($args) && is_array($args[0])) { + $extras = array_shift($args); + $extras = (array) $extras; + + if(isset($extras['media']) && is_array($extras['media'])) { + $extras['media'] = implode(',', $extras['media']); + } + } + + $href = (string) $href; + $type = (string) $type; + $title = (string) $title; + + $attributes = compact('rel', 'href', 'type', 'title', 'extras'); + return $this->createData($this->_applyExtras($attributes)); + } + + /** + * Apply any overrides specified in the 'extras' array + * @param array $attributes + * @return array + */ + protected function _applyExtras($attributes) + { + if (isset($attributes['extras'])) { + foreach ($attributes['extras'] as $eKey=>$eVal) { + if (isset($attributes[$eKey])) { + $attributes[$eKey] = $eVal; + unset($attributes['extras'][$eKey]); + } + } + } + return $attributes; + } +} diff --git a/library/Zend/View/Helper/HeadMeta.php b/library/Zend/View/Helper/HeadMeta.php new file mode 100755 index 000000000..de58edd5d --- /dev/null +++ b/library/Zend/View/Helper/HeadMeta.php @@ -0,0 +1,449 @@ +setSeparator(PHP_EOL); + } + + /** + * Retrieve object instance; optionally add meta tag + * + * @param string $content + * @param string $keyValue + * @param string $keyType + * @param array $modifiers + * @param string $placement + * @return Zend_View_Helper_HeadMeta + */ + public function headMeta($content = null, $keyValue = null, $keyType = 'name', $modifiers = array(), $placement = Zend_View_Helper_Placeholder_Container_Abstract::APPEND) + { + if ((null !== $content) && (null !== $keyValue)) { + $item = $this->createData($keyType, $keyValue, $content, $modifiers); + $action = strtolower($placement); + switch ($action) { + case 'append': + case 'prepend': + case 'set': + $this->$action($item); + break; + default: + $this->append($item); + break; + } + } + + return $this; + } + + protected function _normalizeType($type) + { + switch ($type) { + case 'Name': + return 'name'; + case 'HttpEquiv': + return 'http-equiv'; + case 'Property': + return 'property'; + default: + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Invalid type "%s" passed to _normalizeType', $type)); + $e->setView($this->view); + throw $e; + } + } + + /** + * Overload method access + * + * Allows the following 'virtual' methods: + * - appendName($keyValue, $content, $modifiers = array()) + * - offsetGetName($index, $keyValue, $content, $modifers = array()) + * - prependName($keyValue, $content, $modifiers = array()) + * - setName($keyValue, $content, $modifiers = array()) + * - appendHttpEquiv($keyValue, $content, $modifiers = array()) + * - offsetGetHttpEquiv($index, $keyValue, $content, $modifers = array()) + * - prependHttpEquiv($keyValue, $content, $modifiers = array()) + * - setHttpEquiv($keyValue, $content, $modifiers = array()) + * - appendProperty($keyValue, $content, $modifiers = array()) + * - offsetGetProperty($index, $keyValue, $content, $modifiers = array()) + * - prependProperty($keyValue, $content, $modifiers = array()) + * - setProperty($keyValue, $content, $modifiers = array()) + * + * @param string $method + * @param array $args + * @return Zend_View_Helper_HeadMeta + */ + public function __call($method, $args) + { + if (preg_match('/^(?Pset|(pre|ap)pend|offsetSet)(?PName|HttpEquiv|Property)$/', $method, $matches)) { + $action = $matches['action']; + $type = $this->_normalizeType($matches['type']); + $argc = count($args); + $index = null; + + if ('offsetSet' == $action) { + if (0 < $argc) { + $index = array_shift($args); + --$argc; + } + } + + if (2 > $argc) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Too few arguments provided; requires key value, and content'); + $e->setView($this->view); + throw $e; + } + + if (3 > $argc) { + $args[] = array(); + } + + $item = $this->createData($type, $args[0], $args[1], $args[2]); + + if ('offsetSet' == $action) { + return $this->offsetSet($index, $item); + } + + $this->$action($item); + return $this; + } + + return parent::__call($method, $args); + } + + /** + * Create an HTML5-style meta charset tag. Something like + * + * Not valid in a non-HTML5 doctype + * + * @param string $charset + * @return Zend_View_Helper_HeadMeta Provides a fluent interface + */ + public function setCharset($charset) + { + $item = new stdClass; + $item->type = 'charset'; + $item->charset = $charset; + $item->content = null; + $item->modifiers = array(); + $this->set($item); + return $this; + } + + /** + * Determine if item is valid + * + * @param mixed $item + * @return boolean + */ + protected function _isValid($item) + { + if ((!$item instanceof stdClass) + || !isset($item->type) + || !isset($item->modifiers)) + { + return false; + } + + $isHtml5 = is_null($this->view) ? false : $this->view->doctype()->isHtml5(); + + if (!isset($item->content) + && (! $isHtml5 || (! $isHtml5 && $item->type !== 'charset'))) { + return false; + } + + // is only supported with doctype RDFa + if ( !is_null($this->view) && !$this->view->doctype()->isRdfa() + && $item->type === 'property') { + return false; + } + + return true; + } + + /** + * Append + * + * @param string $value + * @return void + * @throws Zend_View_Exception + */ + public function append($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to append; please use appendMeta()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->append($value); + } + + /** + * OffsetSet + * + * @param string|int $index + * @param string $value + * @return void + * @throws Zend_View_Exception + */ + public function offsetSet($index, $value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to offsetSet; please use offsetSetName() or offsetSetHttpEquiv()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->offsetSet($index, $value); + } + + /** + * OffsetUnset + * + * @param string|int $index + * @return void + * @throws Zend_View_Exception + */ + public function offsetUnset($index) + { + if (!in_array($index, $this->getContainer()->getKeys())) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid index passed to offsetUnset()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->offsetUnset($index); + } + + /** + * Prepend + * + * @param string $value + * @return void + * @throws Zend_View_Exception + */ + public function prepend($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to prepend; please use prependMeta()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->prepend($value); + } + + /** + * Set + * + * @param string $value + * @return void + * @throws Zend_View_Exception + */ + public function set($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to set; please use setMeta()'); + $e->setView($this->view); + throw $e; + } + + $container = $this->getContainer(); + foreach ($container->getArrayCopy() as $index => $item) { + if ($item->type == $value->type && $item->{$item->type} == $value->{$value->type}) { + $this->offsetUnset($index); + } + } + + return $this->append($value); + } + + /** + * Build meta HTML string + * + * @param string $type + * @param string $typeValue + * @param string $content + * @param array $modifiers + * @return string + */ + public function itemToString(stdClass $item) + { + if (!in_array($item->type, $this->_typeKeys)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Invalid type "%s" provided for meta', $item->type)); + $e->setView($this->view); + throw $e; + } + $type = $item->type; + + $modifiersString = ''; + foreach ($item->modifiers as $key => $value) { + if (!is_null($this->view) && $this->view->doctype()->isHtml5() + && $key == 'scheme') { + require_once 'Zend/View/Exception.php'; + throw new Zend_View_Exception('Invalid modifier ' + . '"scheme" provided; not supported by HTML5'); + } + if (!in_array($key, $this->_modifierKeys)) { + continue; + } + $modifiersString .= $key . '="' . $this->_escape($value) . '" '; + } + + if ($this->view instanceof Zend_View_Abstract) { + if ($this->view->doctype()->isHtml5() + && $type == 'charset') { + $tpl = ($this->view->doctype()->isXhtml()) + ? '' + : ''; + } elseif ($this->view->doctype()->isXhtml()) { + $tpl = ''; + } else { + $tpl = ''; + } + } else { + $tpl = ''; + } + + $meta = sprintf( + $tpl, + $type, + $this->_escape($item->$type), + $this->_escape($item->content), + $modifiersString + ); + + if (isset($item->modifiers['conditional']) + && !empty($item->modifiers['conditional']) + && is_string($item->modifiers['conditional'])) + { + if (str_replace(' ', '', $item->modifiers['conditional']) === '!IE') { + $meta = '' . $meta . ''; + } + + return $meta; + } + + /** + * Render placeholder as string + * + * @param string|int $indent + * @return string + */ + public function toString($indent = null) + { + $indent = (null !== $indent) + ? $this->getWhitespace($indent) + : $this->getIndent(); + + $items = array(); + $this->getContainer()->ksort(); + try { + foreach ($this as $item) { + $items[] = $this->itemToString($item); + } + } catch (Zend_View_Exception $e) { + trigger_error($e->getMessage(), E_USER_WARNING); + return ''; + } + return $indent . implode($this->_escape($this->getSeparator()) . $indent, $items); + } + + /** + * Create data item for inserting into stack + * + * @param string $type + * @param string $typeValue + * @param string $content + * @param array $modifiers + * @return stdClass + */ + public function createData($type, $typeValue, $content, array $modifiers) + { + $data = new stdClass; + $data->type = $type; + $data->$type = $typeValue; + $data->content = $content; + $data->modifiers = $modifiers; + return $data; + } +} diff --git a/library/Zend/View/Helper/HeadScript.php b/library/Zend/View/Helper/HeadScript.php new file mode 100755 index 000000000..062bed1b0 --- /dev/null +++ b/library/Zend/View/Helper/HeadScript.php @@ -0,0 +1,520 @@ +setSeparator(PHP_EOL); + } + + /** + * Return headScript object + * + * Returns headScript helper object; optionally, allows specifying a script + * or script file to include. + * + * @param string $mode Script or file + * @param string $spec Script/url + * @param string $placement Append, prepend, or set + * @param array $attrs Array of script attributes + * @param string $type Script type and/or array of script attributes + * @return Zend_View_Helper_HeadScript + */ + public function headScript($mode = Zend_View_Helper_HeadScript::FILE, $spec = null, $placement = 'APPEND', array $attrs = array(), $type = 'text/javascript') + { + if ((null !== $spec) && is_string($spec)) { + $action = ucfirst(strtolower($mode)); + $placement = strtolower($placement); + switch ($placement) { + case 'set': + case 'prepend': + case 'append': + $action = $placement . $action; + break; + default: + $action = 'append' . $action; + break; + } + $this->$action($spec, $type, $attrs); + } + + return $this; + } + + /** + * Start capture action + * + * @param mixed $captureType + * @param string $typeOrAttrs + * @return void + */ + public function captureStart($captureType = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $type = 'text/javascript', $attrs = array()) + { + if ($this->_captureLock) { + require_once 'Zend/View/Helper/Placeholder/Container/Exception.php'; + $e = new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest headScript captures'); + $e->setView($this->view); + throw $e; + } + + $this->_captureLock = true; + $this->_captureType = $captureType; + $this->_captureScriptType = $type; + $this->_captureScriptAttrs = $attrs; + ob_start(); + } + + /** + * End capture action and store + * + * @return void + */ + public function captureEnd() + { + $content = ob_get_clean(); + $type = $this->_captureScriptType; + $attrs = $this->_captureScriptAttrs; + $this->_captureScriptType = null; + $this->_captureScriptAttrs = null; + $this->_captureLock = false; + + switch ($this->_captureType) { + case Zend_View_Helper_Placeholder_Container_Abstract::SET: + case Zend_View_Helper_Placeholder_Container_Abstract::PREPEND: + case Zend_View_Helper_Placeholder_Container_Abstract::APPEND: + $action = strtolower($this->_captureType) . 'Script'; + break; + default: + $action = 'appendScript'; + break; + } + $this->$action($content, $type, $attrs); + } + + /** + * Overload method access + * + * Allows the following method calls: + * - appendFile($src, $type = 'text/javascript', $attrs = array()) + * - offsetSetFile($index, $src, $type = 'text/javascript', $attrs = array()) + * - prependFile($src, $type = 'text/javascript', $attrs = array()) + * - setFile($src, $type = 'text/javascript', $attrs = array()) + * - appendScript($script, $type = 'text/javascript', $attrs = array()) + * - offsetSetScript($index, $src, $type = 'text/javascript', $attrs = array()) + * - prependScript($script, $type = 'text/javascript', $attrs = array()) + * - setScript($script, $type = 'text/javascript', $attrs = array()) + * + * @param string $method + * @param array $args + * @return Zend_View_Helper_HeadScript + * @throws Zend_View_Exception if too few arguments or invalid method + */ + public function __call($method, $args) + { + if (preg_match('/^(?Pset|(ap|pre)pend|offsetSet)(?PFile|Script)$/', $method, $matches)) { + if (1 > count($args)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Method "%s" requires at least one argument', $method)); + $e->setView($this->view); + throw $e; + } + + $action = $matches['action']; + $mode = strtolower($matches['mode']); + $type = 'text/javascript'; + $attrs = array(); + + if ('offsetSet' == $action) { + $index = array_shift($args); + if (1 > count($args)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Method "%s" requires at least two arguments, an index and source', $method)); + $e->setView($this->view); + throw $e; + } + } + + $content = $args[0]; + + if (isset($args[1])) { + $type = (string) $args[1]; + } + if (isset($args[2])) { + $attrs = (array) $args[2]; + } + + switch ($mode) { + case 'script': + $item = $this->createData($type, $attrs, $content); + if ('offsetSet' == $action) { + $this->offsetSet($index, $item); + } else { + $this->$action($item); + } + break; + case 'file': + default: + if (!$this->_isDuplicate($content) || $action=='set') { + $attrs['src'] = $content; + $item = $this->createData($type, $attrs); + if ('offsetSet' == $action) { + $this->offsetSet($index, $item); + } else { + $this->$action($item); + } + } + break; + } + + return $this; + } + + return parent::__call($method, $args); + } + + /** + * Is the file specified a duplicate? + * + * @param string $file + * @return bool + */ + protected function _isDuplicate($file) + { + foreach ($this->getContainer() as $item) { + if (($item->source === null) + && array_key_exists('src', $item->attributes) + && ($file == $item->attributes['src'])) + { + return true; + } + } + return false; + } + + /** + * Is the script provided valid? + * + * @param mixed $value + * @param string $method + * @return bool + */ + protected function _isValid($value) + { + if ((!$value instanceof stdClass) + || !isset($value->type) + || (!isset($value->source) && !isset($value->attributes))) + { + return false; + } + + return true; + } + + /** + * Override append + * + * @param string $value + * @return void + */ + public function append($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid argument passed to append(); please use one of the helper methods, appendScript() or appendFile()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->append($value); + } + + /** + * Override prepend + * + * @param string $value + * @return void + */ + public function prepend($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid argument passed to prepend(); please use one of the helper methods, prependScript() or prependFile()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->prepend($value); + } + + /** + * Override set + * + * @param string $value + * @return void + */ + public function set($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid argument passed to set(); please use one of the helper methods, setScript() or setFile()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->set($value); + } + + /** + * Override offsetSet + * + * @param string|int $index + * @param mixed $value + * @return void + */ + public function offsetSet($index, $value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid argument passed to offsetSet(); please use one of the helper methods, offsetSetScript() or offsetSetFile()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->offsetSet($index, $value); + } + + /** + * Set flag indicating if arbitrary attributes are allowed + * + * @param bool $flag + * @return Zend_View_Helper_HeadScript + */ + public function setAllowArbitraryAttributes($flag) + { + $this->_arbitraryAttributes = (bool) $flag; + return $this; + } + + /** + * Are arbitrary attributes allowed? + * + * @return bool + */ + public function arbitraryAttributesAllowed() + { + return $this->_arbitraryAttributes; + } + + /** + * Create script HTML + * + * @param string $type + * @param array $attributes + * @param string $content + * @param string|int $indent + * @return string + */ + public function itemToString($item, $indent, $escapeStart, $escapeEnd) + { + $attrString = ''; + if (!empty($item->attributes)) { + foreach ($item->attributes as $key => $value) { + if ((!$this->arbitraryAttributesAllowed() && !in_array($key, $this->_optionalAttributes)) + || in_array($key, array('conditional', 'noescape'))) + { + continue; + } + if ('defer' == $key) { + $value = 'defer'; + } + $attrString .= sprintf(' %s="%s"', $key, ($this->_autoEscape) ? $this->_escape($value) : $value); + } + } + + $addScriptEscape = !(isset($item->attributes['noescape']) && filter_var($item->attributes['noescape'], FILTER_VALIDATE_BOOLEAN)); + + $type = ($this->_autoEscape) ? $this->_escape($item->type) : $item->type; + $html = ''; + + if (isset($item->attributes['conditional']) + && !empty($item->attributes['conditional']) + && is_string($item->attributes['conditional'])) + { + // inner wrap with comment end and start if !IE + if (str_replace(' ', '', $item->attributes['conditional']) === '!IE') { + $html = '' . $html . ''; + } else { + $html = $indent . $html; + } + + return $html; + } + + /** + * Retrieve string representation + * + * @param string|int $indent + * @return string + */ + public function toString($indent = null) + { + $indent = (null !== $indent) + ? $this->getWhitespace($indent) + : $this->getIndent(); + + if ($this->view) { + $useCdata = $this->view->doctype()->isXhtml() ? true : false; + } else { + $useCdata = $this->useCdata ? true : false; + } + $escapeStart = ($useCdata) ? '//' : '//-->'; + + $items = array(); + $this->getContainer()->ksort(); + foreach ($this as $item) { + if (!$this->_isValid($item)) { + continue; + } + + $items[] = $this->itemToString($item, $indent, $escapeStart, $escapeEnd); + } + + $return = implode($this->getSeparator(), $items); + return $return; + } + + /** + * Create data item containing all necessary components of script + * + * @param string $type + * @param array $attributes + * @param string $content + * @return stdClass + */ + public function createData($type, array $attributes, $content = null) + { + $data = new stdClass(); + $data->type = $type; + $data->attributes = $attributes; + $data->source = $content; + return $data; + } +} diff --git a/library/Zend/View/Helper/HeadStyle.php b/library/Zend/View/Helper/HeadStyle.php new file mode 100755 index 000000000..fc571bc9e --- /dev/null +++ b/library/Zend/View/Helper/HeadStyle.php @@ -0,0 +1,433 @@ +setSeparator(PHP_EOL); + } + + /** + * Return headStyle object + * + * Returns headStyle helper object; optionally, allows specifying + * + * @param string $content Stylesheet contents + * @param string $placement Append, prepend, or set + * @param string|array $attributes Optional attributes to utilize + * @return Zend_View_Helper_HeadStyle + */ + public function headStyle($content = null, $placement = 'APPEND', $attributes = array()) + { + if ((null !== $content) && is_string($content)) { + switch (strtoupper($placement)) { + case 'SET': + $action = 'setStyle'; + break; + case 'PREPEND': + $action = 'prependStyle'; + break; + case 'APPEND': + default: + $action = 'appendStyle'; + break; + } + $this->$action($content, $attributes); + } + + return $this; + } + + /** + * Overload method calls + * + * Allows the following method calls: + * - appendStyle($content, $attributes = array()) + * - offsetSetStyle($index, $content, $attributes = array()) + * - prependStyle($content, $attributes = array()) + * - setStyle($content, $attributes = array()) + * + * @param string $method + * @param array $args + * @return void + * @throws Zend_View_Exception When no $content provided or invalid method + */ + public function __call($method, $args) + { + if (preg_match('/^(?Pset|(ap|pre)pend|offsetSet)(Style)$/', $method, $matches)) { + $index = null; + $argc = count($args); + $action = $matches['action']; + + if ('offsetSet' == $action) { + if (0 < $argc) { + $index = array_shift($args); + --$argc; + } + } + + if (1 > $argc) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf('Method "%s" requires minimally content for the stylesheet', $method)); + $e->setView($this->view); + throw $e; + } + + $content = $args[0]; + $attrs = array(); + if (isset($args[1])) { + $attrs = (array) $args[1]; + } + + $item = $this->createData($content, $attrs); + + if ('offsetSet' == $action) { + $this->offsetSet($index, $item); + } else { + $this->$action($item); + } + + return $this; + } + + return parent::__call($method, $args); + } + + /** + * Determine if a value is a valid style tag + * + * @param mixed $value + * @param string $method + * @return boolean + */ + protected function _isValid($value) + { + if ((!$value instanceof stdClass) + || !isset($value->content) + || !isset($value->attributes)) + { + return false; + } + + return true; + } + + /** + * Override append to enforce style creation + * + * @param mixed $value + * @return void + */ + public function append($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to append; please use appendStyle()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->append($value); + } + + /** + * Override offsetSet to enforce style creation + * + * @param string|int $index + * @param mixed $value + * @return void + */ + public function offsetSet($index, $value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to offsetSet; please use offsetSetStyle()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->offsetSet($index, $value); + } + + /** + * Override prepend to enforce style creation + * + * @param mixed $value + * @return void + */ + public function prepend($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to prepend; please use prependStyle()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->prepend($value); + } + + /** + * Override set to enforce style creation + * + * @param mixed $value + * @return void + */ + public function set($value) + { + if (!$this->_isValid($value)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Invalid value passed to set; please use setStyle()'); + $e->setView($this->view); + throw $e; + } + + return $this->getContainer()->set($value); + } + + /** + * Start capture action + * + * @param mixed $captureType + * @param string $typeOrAttrs + * @return void + */ + public function captureStart($type = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $attrs = null) + { + if ($this->_captureLock) { + require_once 'Zend/View/Helper/Placeholder/Container/Exception.php'; + $e = new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest headStyle captures'); + $e->setView($this->view); + throw $e; + } + + $this->_captureLock = true; + $this->_captureAttrs = $attrs; + $this->_captureType = $type; + ob_start(); + } + + /** + * End capture action and store + * + * @return void + */ + public function captureEnd() + { + $content = ob_get_clean(); + $attrs = $this->_captureAttrs; + $this->_captureAttrs = null; + $this->_captureLock = false; + + switch ($this->_captureType) { + case Zend_View_Helper_Placeholder_Container_Abstract::SET: + $this->setStyle($content, $attrs); + break; + case Zend_View_Helper_Placeholder_Container_Abstract::PREPEND: + $this->prependStyle($content, $attrs); + break; + case Zend_View_Helper_Placeholder_Container_Abstract::APPEND: + default: + $this->appendStyle($content, $attrs); + break; + } + } + + /** + * Convert content and attributes into valid style tag + * + * @param stdClass $item Item to render + * @param string $indent Indentation to use + * @return string + */ + public function itemToString(stdClass $item, $indent) + { + $attrString = ''; + if (!empty($item->attributes)) { + $enc = 'UTF-8'; + if ($this->view instanceof Zend_View_Interface + && method_exists($this->view, 'getEncoding') + ) { + $enc = $this->view->getEncoding(); + } + foreach ($item->attributes as $key => $value) { + if (!in_array($key, $this->_optionalAttributes)) { + continue; + } + if ('media' == $key) { + if(false === strpos($value, ',')) { + if (!in_array($value, $this->_mediaTypes)) { + continue; + } + } else { + $media_types = explode(',', $value); + $value = ''; + foreach($media_types as $type) { + $type = trim($type); + if (!in_array($type, $this->_mediaTypes)) { + continue; + } + $value .= $type .','; + } + $value = substr($value, 0, -1); + } + } + $attrString .= sprintf(' %s="%s"', $key, htmlspecialchars($value, ENT_COMPAT, $enc)); + } + } + + $escapeStart = $indent . ''. PHP_EOL; + if (isset($item->attributes['conditional']) + && !empty($item->attributes['conditional']) + && is_string($item->attributes['conditional']) + ) { + $escapeStart = null; + $escapeEnd = null; + } + + $html = ''; + + if (null == $escapeStart && null == $escapeEnd) { + if (str_replace(' ', '', $item->attributes['conditional']) === '!IE') { + $html = '' . $html . ''; + } + + return $html; + } + + /** + * Create string representation of placeholder + * + * @param string|int $indent + * @return string + */ + public function toString($indent = null) + { + $indent = (null !== $indent) + ? $this->getWhitespace($indent) + : $this->getIndent(); + + $items = array(); + $this->getContainer()->ksort(); + foreach ($this as $item) { + if (!$this->_isValid($item)) { + continue; + } + $items[] = $this->itemToString($item, $indent); + } + + $return = $indent . implode($this->getSeparator() . $indent, $items); + $return = preg_replace("/(\r\n?|\n)/", '$1' . $indent, $return); + return $return; + } + + /** + * Create data item for use in stack + * + * @param string $content + * @param array $attributes + * @return stdClass + */ + public function createData($content, array $attributes) + { + if (!isset($attributes['media'])) { + $attributes['media'] = 'screen'; + } else if(is_array($attributes['media'])) { + $attributes['media'] = implode(',', $attributes['media']); + } + + $data = new stdClass(); + $data->content = $content; + $data->attributes = $attributes; + + return $data; + } +} diff --git a/library/Zend/View/Helper/HeadTitle.php b/library/Zend/View/Helper/HeadTitle.php new file mode 100755 index 000000000..8f3d9d0db --- /dev/null +++ b/library/Zend/View/Helper/HeadTitle.php @@ -0,0 +1,222 @@ +getDefaultAttachOrder()) + ? Zend_View_Helper_Placeholder_Container_Abstract::APPEND + : $this->getDefaultAttachOrder(); + } + $title = (string) $title; + if ($title !== '') { + if ($setType == Zend_View_Helper_Placeholder_Container_Abstract::SET) { + $this->set($title); + } elseif ($setType == Zend_View_Helper_Placeholder_Container_Abstract::PREPEND) { + $this->prepend($title); + } else { + $this->append($title); + } + } + + return $this; + } + + /** + * Set a default order to add titles + * + * @param string $setType + */ + public function setDefaultAttachOrder($setType) + { + if (!in_array($setType, array( + Zend_View_Helper_Placeholder_Container_Abstract::APPEND, + Zend_View_Helper_Placeholder_Container_Abstract::SET, + Zend_View_Helper_Placeholder_Container_Abstract::PREPEND + ))) { + require_once 'Zend/View/Exception.php'; + throw new Zend_View_Exception("You must use a valid attach order: 'PREPEND', 'APPEND' or 'SET'"); + } + + $this->_defaultAttachOrder = $setType; + return $this; + } + + /** + * Get the default attach order, if any. + * + * @return mixed + */ + public function getDefaultAttachOrder() + { + return $this->_defaultAttachOrder; + } + + /** + * Sets a translation Adapter for translation + * + * @param Zend_Translate|Zend_Translate_Adapter $translate + * @return Zend_View_Helper_HeadTitle + */ + public function setTranslator($translate) + { + if ($translate instanceof Zend_Translate_Adapter) { + $this->_translator = $translate; + } elseif ($translate instanceof Zend_Translate) { + $this->_translator = $translate->getAdapter(); + } else { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception("You must set an instance of Zend_Translate or Zend_Translate_Adapter"); + $e->setView($this->view); + throw $e; + } + return $this; + } + + /** + * Retrieve translation object + * + * If none is currently registered, attempts to pull it from the registry + * using the key 'Zend_Translate'. + * + * @return Zend_Translate_Adapter|null + */ + public function getTranslator() + { + if (null === $this->_translator) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Translate')) { + $this->setTranslator(Zend_Registry::get('Zend_Translate')); + } + } + return $this->_translator; + } + + /** + * Enables translation + * + * @return Zend_View_Helper_HeadTitle + */ + public function enableTranslation() + { + $this->_translate = true; + return $this; + } + + /** + * Disables translation + * + * @return Zend_View_Helper_HeadTitle + */ + public function disableTranslation() + { + $this->_translate = false; + return $this; + } + + /** + * Turn helper into string + * + * @param string|null $indent + * @param string|null $locale + * @return string + */ + public function toString($indent = null, $locale = null) + { + $indent = (null !== $indent) + ? $this->getWhitespace($indent) + : $this->getIndent(); + + $items = array(); + + if($this->_translate && $translator = $this->getTranslator()) { + foreach ($this as $item) { + $items[] = $translator->translate($item, $locale); + } + } else { + foreach ($this as $item) { + $items[] = $item; + } + } + + $separator = $this->getSeparator(); + $output = ''; + if(($prefix = $this->getPrefix())) { + $output .= $prefix; + } + $output .= implode($separator, $items); + if(($postfix = $this->getPostfix())) { + $output .= $postfix; + } + + $output = ($this->_autoEscape) ? $this->_escape($output) : $output; + + return $indent . '' . $output . ''; + } +} diff --git a/library/Zend/View/Helper/HtmlElement.php b/library/Zend/View/Helper/HtmlElement.php new file mode 100755 index 000000000..263fcd32d --- /dev/null +++ b/library/Zend/View/Helper/HtmlElement.php @@ -0,0 +1,167 @@ +_closingBracket) { + if ($this->_isXhtml()) { + $this->_closingBracket = ' />'; + } else { + $this->_closingBracket = '>'; + } + } + + return $this->_closingBracket; + } + + /** + * Is doctype XHTML? + * + * @return boolean + */ + protected function _isXhtml() + { + $doctype = $this->view->doctype(); + return $doctype->isXhtml(); + } + + /** + * Is doctype HTML5? + * + * @return boolean + */ + protected function _isHtml5() + { + $doctype = $this->view->doctype(); + return $doctype->isHtml5(); + } + + /** + * Is doctype strict? + * + * @return boolean + */ + protected function _isStrictDoctype() + { + $doctype = $this->view->doctype(); + return $doctype->isStrict(); + } + + /** + * Converts an associative array to a string of tag attributes. + * + * @access public + * + * @param array $attribs From this array, each key-value pair is + * converted to an attribute name and value. + * + * @return string The XHTML for the attributes. + */ + protected function _htmlAttribs($attribs) + { + $xhtml = ''; + foreach ((array) $attribs as $key => $val) { + $key = $this->view->escape($key); + + if (('on' == substr($key, 0, 2)) || ('constraints' == $key)) { + // Don't escape event attributes; _do_ substitute double quotes with singles + if (!is_scalar($val)) { + // non-scalar data should be cast to JSON first + require_once 'Zend/Json.php'; + $val = Zend_Json::encode($val); + } + // Escape single quotes inside event attribute values. + // This will create html, where the attribute value has + // single quotes around it, and escaped single quotes or + // non-escaped double quotes inside of it + $val = str_replace('\'', ''', $val); + } else { + if (is_array($val)) { + $val = implode(' ', $val); + } + $val = $this->view->escape($val); + } + + if ('id' == $key) { + $val = $this->_normalizeId($val); + } + + if (strpos($val, '"') !== false) { + $xhtml .= " $key='$val'"; + } else { + $xhtml .= " $key=\"$val\""; + } + + } + return $xhtml; + } + + /** + * Normalize an ID + * + * @param string $value + * @return string + */ + protected function _normalizeId($value) + { + if (strstr($value, '[')) { + if ('[]' == substr($value, -2)) { + $value = substr($value, 0, strlen($value) - 2); + } + $value = trim($value, ']'); + $value = str_replace('][', '-', $value); + $value = str_replace('[', '-', $value); + } + return $value; + } +} diff --git a/library/Zend/View/Helper/HtmlFlash.php b/library/Zend/View/Helper/HtmlFlash.php new file mode 100755 index 000000000..3edcf1afc --- /dev/null +++ b/library/Zend/View/Helper/HtmlFlash.php @@ -0,0 +1,60 @@ + $data, + 'quality' => 'high'), $params); + + return $this->htmlObject($data, self::TYPE, $attribs, $params, $content); + } +} diff --git a/library/Zend/View/Helper/HtmlList.php b/library/Zend/View/Helper/HtmlList.php new file mode 100755 index 000000000..471ade480 --- /dev/null +++ b/library/Zend/View/Helper/HtmlList.php @@ -0,0 +1,90 @@ +setView($this->view); + throw $e; + } + + $list = ''; + + foreach ($items as $item) { + if (!is_array($item)) { + if ($escape) { + $item = $this->view->escape($item); + } + $list .= '
  • ' . $item . '
  • ' . self::EOL; + } else { + if (6 < strlen($list)) { + $list = substr($list, 0, strlen($list) - 6) + . $this->htmlList($item, $ordered, $attribs, $escape) . '' . self::EOL; + } else { + $list .= '
  • ' . $this->htmlList($item, $ordered, $attribs, $escape) . '
  • ' . self::EOL; + } + } + } + + if ($attribs) { + $attribs = $this->_htmlAttribs($attribs); + } else { + $attribs = ''; + } + + $tag = 'ul'; + if ($ordered) { + $tag = 'ol'; + } + + return '<' . $tag . $attribs . '>' . self::EOL . $list . '' . self::EOL; + } +} diff --git a/library/Zend/View/Helper/HtmlObject.php b/library/Zend/View/Helper/HtmlObject.php new file mode 100755 index 000000000..1eddfea5e --- /dev/null +++ b/library/Zend/View/Helper/HtmlObject.php @@ -0,0 +1,80 @@ + $data, + 'type' => $type), $attribs); + + // Params + $paramHtml = array(); + $closingBracket = $this->getClosingBracket(); + + foreach ($params as $param => $options) { + if (is_string($options)) { + $options = array('value' => $options); + } + + $options = array_merge(array('name' => $param), $options); + + $paramHtml[] = '_htmlAttribs($options) . $closingBracket; + } + + // Content + if (is_array($content)) { + $content = implode(self::EOL, $content); + } + + // Object header + $xhtml = '_htmlAttribs($attribs) . '>' . self::EOL + . implode(self::EOL, $paramHtml) . self::EOL + . ($content ? $content . self::EOL : '') + . ''; + + return $xhtml; + } +} diff --git a/library/Zend/View/Helper/HtmlPage.php b/library/Zend/View/Helper/HtmlPage.php new file mode 100755 index 000000000..e7b8b0f20 --- /dev/null +++ b/library/Zend/View/Helper/HtmlPage.php @@ -0,0 +1,75 @@ + self::ATTRIB_CLASSID); + + /** + * Output a html object tag + * + * @param string $data The html url + * @param array $attribs Attribs for the object tag + * @param array $params Params for in the object tag + * @param string $content Alternative content + * @return string + */ + public function htmlPage($data, array $attribs = array(), array $params = array(), $content = null) + { + // Attrs + $attribs = array_merge($this->_attribs, $attribs); + + // Params + $params = array_merge(array('data' => $data), $params); + + return $this->htmlObject($data, self::TYPE, $attribs, $params, $content); + } +} diff --git a/library/Zend/View/Helper/HtmlQuicktime.php b/library/Zend/View/Helper/HtmlQuicktime.php new file mode 100755 index 000000000..6c200dbce --- /dev/null +++ b/library/Zend/View/Helper/HtmlQuicktime.php @@ -0,0 +1,82 @@ + self::ATTRIB_CLASSID, + 'codebase' => self::ATTRIB_CODEBASE); + + /** + * Output a quicktime movie object tag + * + * @param string $data The quicktime file + * @param array $attribs Attribs for the object tag + * @param array $params Params for in the object tag + * @param string $content Alternative content + * @return string + */ + public function htmlQuicktime($data, array $attribs = array(), array $params = array(), $content = null) + { + // Attrs + $attribs = array_merge($this->_attribs, $attribs); + + // Params + $params = array_merge(array('src' => $data), $params); + + return $this->htmlObject($data, self::TYPE, $attribs, $params, $content); + } +} diff --git a/library/Zend/View/Helper/InlineScript.php b/library/Zend/View/Helper/InlineScript.php new file mode 100755 index 000000000..978c6b812 --- /dev/null +++ b/library/Zend/View/Helper/InlineScript.php @@ -0,0 +1,61 @@ +headScript($mode, $spec, $placement, $attrs, $type); + } +} diff --git a/library/Zend/View/Helper/Interface.php b/library/Zend/View/Helper/Interface.php new file mode 100755 index 000000000..c7e761b2a --- /dev/null +++ b/library/Zend/View/Helper/Interface.php @@ -0,0 +1,46 @@ +true|false + * this array can contains a 'keepLayout'=>true|false and/or 'encodeData'=>true|false + * that will not be passed to Zend_Json::encode method but will be used here + * @param bool $encodeData + * @return string|void + */ + public function json($data, $keepLayouts = false, $encodeData = true) + { + $options = array(); + if (is_array($keepLayouts)) { + $options = $keepLayouts; + + $keepLayouts = false; + if (array_key_exists('keepLayouts', $options)) { + $keepLayouts = $options['keepLayouts']; + unset($options['keepLayouts']); + } + + if (array_key_exists('encodeData', $options)) { + $encodeData = $options['encodeData']; + unset($options['encodeData']); + } + } + + if ($encodeData) { + $data = Zend_Json::encode($data, null, $options); + } + if (!$keepLayouts) { + require_once 'Zend/Layout.php'; + $layout = Zend_Layout::getMvcInstance(); + if ($layout instanceof Zend_Layout) { + $layout->disableLayout(); + } + } + + $response = Zend_Controller_Front::getInstance()->getResponse(); + $response->setHeader('Content-Type', 'application/json', true); + return $data; + } +} diff --git a/library/Zend/View/Helper/Layout.php b/library/Zend/View/Helper/Layout.php new file mode 100755 index 000000000..286a9e38e --- /dev/null +++ b/library/Zend/View/Helper/Layout.php @@ -0,0 +1,81 @@ +_layout) { + require_once 'Zend/Layout.php'; + $this->_layout = Zend_Layout::getMvcInstance(); + if (null === $this->_layout) { + // Implicitly creates layout object + $this->_layout = new Zend_Layout(); + } + } + + return $this->_layout; + } + + /** + * Set layout object + * + * @param Zend_Layout $layout + * @return Zend_Layout_Controller_Action_Helper_Layout + */ + public function setLayout(Zend_Layout $layout) + { + $this->_layout = $layout; + return $this; + } + + /** + * Return layout object + * + * Usage: $this->layout()->setLayout('alternate'); + * + * @return Zend_Layout + */ + public function layout() + { + return $this->getLayout(); + } +} diff --git a/library/Zend/View/Helper/Navigation.php b/library/Zend/View/Helper/Navigation.php new file mode 100755 index 000000000..2e82ef6a2 --- /dev/null +++ b/library/Zend/View/Helper/Navigation.php @@ -0,0 +1,350 @@ +setContainer($container); + } + + return $this; + } + + /** + * Magic overload: Proxy to other navigation helpers or the container + * + * Examples of usage from a view script or layout: + * + * // proxy to Menu helper and render container: + * echo $this->navigation()->menu(); + * + * // proxy to Breadcrumbs helper and set indentation: + * $this->navigation()->breadcrumbs()->setIndent(8); + * + * // proxy to container and find all pages with 'blog' route: + * $blogPages = $this->navigation()->findAllByRoute('blog'); + * + * + * @param string $method helper name or method name in + * container + * @param array $arguments [optional] arguments to pass + * @return mixed returns what the proxied call returns + * @throws Zend_View_Exception if proxying to a helper, and the + * helper is not an instance of the + * interface specified in + * {@link findHelper()} + * @throws Zend_Navigation_Exception if method does not exist in container + */ + public function __call($method, array $arguments = array()) + { + // check if call should proxy to another helper + if ($helper = $this->findHelper($method, false)) { + return call_user_func_array(array($helper, $method), $arguments); + } + + // default behaviour: proxy call to container + return parent::__call($method, $arguments); + } + + /** + * Returns the helper matching $proxy + * + * The helper must implement the interface + * {@link Zend_View_Helper_Navigation_Helper}. + * + * @param string $proxy helper name + * @param bool $strict [optional] whether + * exceptions should be + * thrown if something goes + * wrong. Default is true. + * @return Zend_View_Helper_Navigation_Helper helper instance + * @throws Zend_Loader_PluginLoader_Exception if $strict is true and + * helper cannot be found + * @throws Zend_View_Exception if $strict is true and + * helper does not implement + * the specified interface + */ + public function findHelper($proxy, $strict = true) + { + if (isset($this->_helpers[$proxy])) { + return $this->_helpers[$proxy]; + } + + if (!$this->view->getPluginLoader('helper')->getPaths(self::NS)) { + // Add navigation helper path at the beginning + $paths = $this->view->getHelperPaths(); + $this->view->setHelperPath(null); + + $this->view->addHelperPath( + str_replace('_', '/', self::NS), + self::NS); + + foreach ($paths as $ns => $path) { + $this->view->addHelperPath($path, $ns); + } + } + + if ($strict) { + $helper = $this->view->getHelper($proxy); + } else { + try { + $helper = $this->view->getHelper($proxy); + } catch (Zend_Loader_PluginLoader_Exception $e) { + return null; + } + } + + if (!$helper instanceof Zend_View_Helper_Navigation_Helper) { + if ($strict) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf( + 'Proxy helper "%s" is not an instance of ' . + 'Zend_View_Helper_Navigation_Helper', + get_class($helper))); + $e->setView($this->view); + throw $e; + } + + return null; + } + + $this->_inject($helper); + $this->_helpers[$proxy] = $helper; + + return $helper; + } + + /** + * Injects container, ACL, and translator to the given $helper if this + * helper is configured to do so + * + * @param Zend_View_Helper_Navigation_Helper $helper helper instance + * @return void + */ + protected function _inject(Zend_View_Helper_Navigation_Helper $helper) + { + if ($this->getInjectContainer() && !$helper->hasContainer()) { + $helper->setContainer($this->getContainer()); + } + + if ($this->getInjectAcl()) { + if (!$helper->hasAcl()) { + $helper->setAcl($this->getAcl()); + } + if (!$helper->hasRole()) { + $helper->setRole($this->getRole()); + } + } + + if ($this->getInjectTranslator() && !$helper->hasTranslator()) { + $helper->setTranslator($this->getTranslator()); + } + } + + // Accessors: + + /** + * Sets the default proxy to use in {@link render()} + * + * @param string $proxy default proxy + * @return Zend_View_Helper_Navigation fluent interface, returns self + */ + public function setDefaultProxy($proxy) + { + $this->_defaultProxy = (string) $proxy; + return $this; + } + + /** + * Returns the default proxy to use in {@link render()} + * + * @return string the default proxy to use in {@link render()} + */ + public function getDefaultProxy() + { + return $this->_defaultProxy; + } + + /** + * Sets whether container should be injected when proxying + * + * @param bool $injectContainer [optional] whether container should + * be injected when proxying. Default + * is true. + * @return Zend_View_Helper_Navigation fluent interface, returns self + */ + public function setInjectContainer($injectContainer = true) + { + $this->_injectContainer = (bool) $injectContainer; + return $this; + } + + /** + * Returns whether container should be injected when proxying + * + * @return bool whether container should be injected when proxying + */ + public function getInjectContainer() + { + return $this->_injectContainer; + } + + /** + * Sets whether ACL should be injected when proxying + * + * @param bool $injectAcl [optional] whether ACL should be + * injected when proxying. Default is + * true. + * @return Zend_View_Helper_Navigation fluent interface, returns self + */ + public function setInjectAcl($injectAcl = true) + { + $this->_injectAcl = (bool) $injectAcl; + return $this; + } + + /** + * Returns whether ACL should be injected when proxying + * + * @return bool whether ACL should be injected when proxying + */ + public function getInjectAcl() + { + return $this->_injectAcl; + } + + /** + * Sets whether translator should be injected when proxying + * + * @param bool $injectTranslator [optional] whether translator should + * be injected when proxying. Default + * is true. + * @return Zend_View_Helper_Navigation fluent interface, returns self + */ + public function setInjectTranslator($injectTranslator = true) + { + $this->_injectTranslator = (bool) $injectTranslator; + return $this; + } + + /** + * Returns whether translator should be injected when proxying + * + * @return bool whether translator should be injected when proxying + */ + public function getInjectTranslator() + { + return $this->_injectTranslator; + } + + // Zend_View_Helper_Navigation_Helper: + + /** + * Renders helper + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to + * render the container + * registered in the helper. + * @return string helper output + * @throws Zend_Loader_PluginLoader_Exception if helper cannot be found + * @throws Zend_View_Exception if helper doesn't implement + * the interface specified in + * {@link findHelper()} + */ + public function render(Zend_Navigation_Container $container = null) + { + $helper = $this->findHelper($this->getDefaultProxy()); + return $helper->render($container); + } +} diff --git a/library/Zend/View/Helper/Navigation/Breadcrumbs.php b/library/Zend/View/Helper/Navigation/Breadcrumbs.php new file mode 100755 index 000000000..10755c3df --- /dev/null +++ b/library/Zend/View/Helper/Navigation/Breadcrumbs.php @@ -0,0 +1,331 @@ +setContainer($container); + } + + return $this; + } + + // Accessors: + + /** + * Sets breadcrumb separator + * + * @param string $separator separator string + * @return Zend_View_Helper_Navigation_Breadcrumbs fluent interface, + * returns self + */ + public function setSeparator($separator) + { + if (is_string($separator)) { + $this->_separator = $separator; + } + + return $this; + } + + /** + * Returns breadcrumb separator + * + * @return string breadcrumb separator + */ + public function getSeparator() + { + return $this->_separator; + } + + /** + * Sets whether last page in breadcrumbs should be hyperlinked + * + * @param bool $linkLast whether last page should + * be hyperlinked + * @return Zend_View_Helper_Navigation_Breadcrumbs fluent interface, + * returns self + */ + public function setLinkLast($linkLast) + { + $this->_linkLast = (bool) $linkLast; + return $this; + } + + /** + * Returns whether last page in breadcrumbs should be hyperlinked + * + * @return bool whether last page in breadcrumbs should be hyperlinked + */ + public function getLinkLast() + { + return $this->_linkLast; + } + + /** + * Sets which partial view script to use for rendering menu + * + * @param string|array $partial partial view script or + * null. If an array is + * given, it is expected to + * contain two values; + * the partial view script + * to use, and the module + * where the script can be + * found. + * @return Zend_View_Helper_Navigation_Breadcrumbs fluent interface, + * returns self + */ + public function setPartial($partial) + { + if (null === $partial || is_string($partial) || is_array($partial)) { + $this->_partial = $partial; + } + + return $this; + } + + /** + * Returns partial view script to use for rendering menu + * + * @return string|array|null + */ + public function getPartial() + { + return $this->_partial; + } + + // Render methods: + + /** + * Renders breadcrumbs by chaining 'a' elements with the separator + * registered in the helper + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to + * render the container + * registered in the helper. + * @return string helper output + */ + public function renderStraight(Zend_Navigation_Container $container = null) + { + if (null === $container) { + $container = $this->getContainer(); + } + + // find deepest active + if (!$active = $this->findActive($container)) { + return ''; + } + + $active = $active['page']; + + // put the deepest active page last in breadcrumbs + if ($this->getLinkLast()) { + $html = $this->htmlify($active); + } else { + $html = $active->getLabel(); + if ($this->getUseTranslator() && $t = $this->getTranslator()) { + $html = $t->translate($html); + } + $html = $this->view->escape($html); + } + + // walk back to root + while ($parent = $active->getParent()) { + if ($parent instanceof Zend_Navigation_Page) { + // prepend crumb to html + $html = $this->htmlify($parent) + . $this->getSeparator() + . $html; + } + + if ($parent === $container) { + // at the root of the given container + break; + } + + $active = $parent; + } + + return strlen($html) ? $this->getIndent() . $html : ''; + } + + /** + * Renders the given $container by invoking the partial view helper + * + * The container will simply be passed on as a model to the view script, + * so in the script it will be available in $this->container. + * + * @param Zend_Navigation_Container $container [optional] container to + * pass to view script. + * Default is to use the + * container registered in the + * helper. + * @param string|array $partial [optional] partial view + * script to use. Default is + * to use the partial + * registered in the helper. + * If an array is given, it is + * expected to contain two + * values; the partial view + * script to use, and the + * module where the script can + * be found. + * @return string helper output + */ + public function renderPartial(Zend_Navigation_Container $container = null, + $partial = null) + { + if (null === $container) { + $container = $this->getContainer(); + } + + if (null === $partial) { + $partial = $this->getPartial(); + } + + if (empty($partial)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception( + 'Unable to render menu: No partial view script provided' + ); + $e->setView($this->view); + throw $e; + } + + // put breadcrumb pages in model + $model = array('pages' => array()); + if ($active = $this->findActive($container)) { + $active = $active['page']; + $model['pages'][] = $active; + while ($parent = $active->getParent()) { + if ($parent instanceof Zend_Navigation_Page) { + $model['pages'][] = $parent; + } else { + break; + } + + if ($parent === $container) { + // break if at the root of the given container + break; + } + + $active = $parent; + } + $model['pages'] = array_reverse($model['pages']); + } + + if (is_array($partial)) { + if (count($partial) != 2) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception( + 'Unable to render menu: A view partial supplied as ' + . 'an array must contain two values: partial view ' + . 'script and module where script can be found' + ); + $e->setView($this->view); + throw $e; + } + + return $this->view->partial($partial[0], $partial[1], $model); + } + + return $this->view->partial($partial, null, $model); + } + + // Zend_View_Helper_Navigation_Helper: + + /** + * Renders helper + * + * Implements {@link Zend_View_Helper_Navigation_Helper::render()}. + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to + * render the container + * registered in the helper. + * @return string helper output + */ + public function render(Zend_Navigation_Container $container = null) + { + if ($partial = $this->getPartial()) { + return $this->renderPartial($container, $partial); + } else { + return $this->renderStraight($container); + } + } +} diff --git a/library/Zend/View/Helper/Navigation/Helper.php b/library/Zend/View/Helper/Navigation/Helper.php new file mode 100755 index 000000000..e7d587816 --- /dev/null +++ b/library/Zend/View/Helper/Navigation/Helper.php @@ -0,0 +1,212 @@ +_container = $container; + return $this; + } + + /** + * Returns the navigation container helper operates on by default + * + * Implements {@link Zend_View_Helper_Navigation_Interface::getContainer()}. + * + * If a helper is not explicitly set in this helper instance by calling + * {@link setContainer()} or by passing it through the helper entry point, + * this method will look in {@link Zend_Registry} for a container by using + * the key 'Zend_Navigation'. + * + * If no container is set, and nothing is found in Zend_Registry, a new + * container will be instantiated and stored in the helper. + * + * @return Zend_Navigation_Container navigation container + */ + public function getContainer() + { + if (null === $this->_container) { + // try to fetch from registry first + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Navigation')) { + $nav = Zend_Registry::get('Zend_Navigation'); + if ($nav instanceof Zend_Navigation_Container) { + return $this->_container = $nav; + } + } + + // nothing found in registry, create new container + require_once 'Zend/Navigation.php'; + $this->_container = new Zend_Navigation(); + } + + return $this->_container; + } + + /** + * Sets the minimum depth a page must have to be included when rendering + * + * @param int $minDepth [optional] minimum + * depth. Default is + * null, which sets + * no minimum depth. + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setMinDepth($minDepth = null) + { + if (null === $minDepth || is_int($minDepth)) { + $this->_minDepth = $minDepth; + } else { + $this->_minDepth = (int) $minDepth; + } + return $this; + } + + /** + * Returns minimum depth a page must have to be included when rendering + * + * @return int|null minimum depth or null + */ + public function getMinDepth() + { + if (!is_int($this->_minDepth) || $this->_minDepth < 0) { + return 0; + } + return $this->_minDepth; + } + + /** + * Sets the maximum depth a page can have to be included when rendering + * + * @param int $maxDepth [optional] maximum + * depth. Default is + * null, which sets no + * maximum depth. + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setMaxDepth($maxDepth = null) + { + if (null === $maxDepth || is_int($maxDepth)) { + $this->_maxDepth = $maxDepth; + } else { + $this->_maxDepth = (int) $maxDepth; + } + return $this; + } + + /** + * Returns maximum depth a page can have to be included when rendering + * + * @return int|null maximum depth or null + */ + public function getMaxDepth() + { + return $this->_maxDepth; + } + + /** + * Set the indentation string for using in {@link render()}, optionally a + * number of spaces to indent with + * + * @param string|int $indent indentation string or + * number of spaces + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setIndent($indent) + { + $this->_indent = $this->_getWhitespace($indent); + return $this; + } + + /** + * Returns indentation (format output is respected) + * + * @return string indentation string or an empty string + */ + public function getIndent() + { + if (false === $this->getFormatOutput()) { + return ''; + } + + return $this->_indent; + } + + /** + * Returns the EOL character (format output is respected) + * + * @see self::EOL + * @see getFormatOutput() + * + * @return string standard EOL charater or an empty string + */ + public function getEOL() + { + if (false === $this->getFormatOutput()) { + return ''; + } + + return self::EOL; + } + + /** + * Sets whether HTML/XML output should be formatted + * + * @param bool $formatOutput [optional] whether output + * should be formatted. Default + * is true. + * + * @return Zend_View_Helper_Navigation_Sitemap fluent interface, returns + * self + */ + public function setFormatOutput($formatOutput = true) + { + $this->_formatOutput = (bool)$formatOutput; + + return $this; + } + + /** + * Returns whether HTML/XML output should be formatted + * + * @return bool whether HTML/XML output should be formatted + */ + public function getFormatOutput() + { + return $this->_formatOutput; + } + + /** + * Sets prefix for IDs when they are normalized + * + * @param string $prefix Prefix for IDs + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, returns self + */ + public function setPrefixForId($prefix) + { + if (is_string($prefix)) { + $this->_prefixForId = trim($prefix); + } + + return $this; + } + + /** + * Returns prefix for IDs when they are normalized + * + * @return string Prefix for + */ + public function getPrefixForId() + { + if (null === $this->_prefixForId) { + $prefix = get_class($this); + $this->_prefixForId = strtolower( + trim(substr($prefix, strrpos($prefix, '_')), '_') + ) . '-'; + } + + return $this->_prefixForId; + } + + /** + * Skip the current prefix for IDs when they are normalized + * + * @param bool $flag + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, returns self + */ + public function skipPrefixForId($flag = true) + { + $this->_skipPrefixForId = (bool) $flag; + return $this; + } + + /** + * Sets translator to use in helper + * + * Implements {@link Zend_View_Helper_Navigation_Helper::setTranslator()}. + * + * @param mixed $translator [optional] translator. + * Expects an object of + * type + * {@link Zend_Translate_Adapter} + * or {@link Zend_Translate}, + * or null. Default is + * null, which sets no + * translator. + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setTranslator($translator = null) + { + if (null == $translator || + $translator instanceof Zend_Translate_Adapter) { + $this->_translator = $translator; + } elseif ($translator instanceof Zend_Translate) { + $this->_translator = $translator->getAdapter(); + } + + return $this; + } + + /** + * Returns translator used in helper + * + * Implements {@link Zend_View_Helper_Navigation_Helper::getTranslator()}. + * + * @return Zend_Translate_Adapter|null translator or null + */ + public function getTranslator() + { + if (null === $this->_translator) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Translate')) { + $this->setTranslator(Zend_Registry::get('Zend_Translate')); + } + } + + return $this->_translator; + } + + /** + * Sets ACL to use when iterating pages + * + * Implements {@link Zend_View_Helper_Navigation_Helper::setAcl()}. + * + * @param Zend_Acl $acl [optional] ACL object. + * Default is null. + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setAcl(Zend_Acl $acl = null) + { + $this->_acl = $acl; + return $this; + } + + /** + * Returns ACL or null if it isn't set using {@link setAcl()} or + * {@link setDefaultAcl()} + * + * Implements {@link Zend_View_Helper_Navigation_Helper::getAcl()}. + * + * @return Zend_Acl|null ACL object or null + */ + public function getAcl() + { + if ($this->_acl === null && self::$_defaultAcl !== null) { + return self::$_defaultAcl; + } + + return $this->_acl; + } + + /** + * Sets ACL role(s) to use when iterating pages + * + * Implements {@link Zend_View_Helper_Navigation_Helper::setRole()}. + * + * @param mixed $role [optional] role to + * set. Expects a string, + * an instance of type + * {@link Zend_Acl_Role_Interface}, + * or null. Default is + * null, which will set + * no role. + * @throws Zend_View_Exception if $role is invalid + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setRole($role = null) + { + if (null === $role || is_string($role) || + $role instanceof Zend_Acl_Role_Interface) { + $this->_role = $role; + } else { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf( + '$role must be a string, null, or an instance of ' + . 'Zend_Acl_Role_Interface; %s given', + gettype($role) + )); + $e->setView($this->view); + throw $e; + } + + return $this; + } + + /** + * Returns ACL role to use when iterating pages, or null if it isn't set + * using {@link setRole()} or {@link setDefaultRole()} + * + * Implements {@link Zend_View_Helper_Navigation_Helper::getRole()}. + * + * @return string|Zend_Acl_Role_Interface|null role or null + */ + public function getRole() + { + if ($this->_role === null && self::$_defaultRole !== null) { + return self::$_defaultRole; + } + + return $this->_role; + } + + /** + * Sets whether ACL should be used + * + * Implements {@link Zend_View_Helper_Navigation_Helper::setUseAcl()}. + * + * @param bool $useAcl [optional] whether ACL + * should be used. + * Default is true. + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setUseAcl($useAcl = true) + { + $this->_useAcl = (bool) $useAcl; + return $this; + } + + /** + * Returns whether ACL should be used + * + * Implements {@link Zend_View_Helper_Navigation_Helper::getUseAcl()}. + * + * @return bool whether ACL should be used + */ + public function getUseAcl() + { + return $this->_useAcl; + } + + /** + * Return renderInvisible flag + * + * @return bool + */ + public function getRenderInvisible() + { + return $this->_renderInvisible; + } + + /** + * Render invisible items? + * + * @param bool $renderInvisible [optional] boolean flag + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface + * returns self + */ + public function setRenderInvisible($renderInvisible = true) + { + $this->_renderInvisible = (bool) $renderInvisible; + return $this; + } + + /** + * Sets whether translator should be used + * + * Implements {@link Zend_View_Helper_Navigation_Helper::setUseTranslator()}. + * + * @param bool $useTranslator [optional] whether + * translator should be + * used. Default is true. + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setUseTranslator($useTranslator = true) + { + $this->_useTranslator = (bool) $useTranslator; + return $this; + } + + /** + * Returns whether translator should be used + * + * Implements {@link Zend_View_Helper_Navigation_Helper::getUseTranslator()}. + * + * @return bool whether translator should be used + */ + public function getUseTranslator() + { + return $this->_useTranslator; + } + + // Magic overloads: + + /** + * Magic overload: Proxy calls to the navigation container + * + * @param string $method method name in container + * @param array $arguments [optional] arguments to pass + * @return mixed returns what the container returns + * @throws Zend_Navigation_Exception if method does not exist in container + */ + public function __call($method, array $arguments = array()) + { + return call_user_func_array( + array($this->getContainer(), $method), + $arguments); + } + + /** + * Magic overload: Proxy to {@link render()}. + * + * This method will trigger an E_USER_ERROR if rendering the helper causes + * an exception to be thrown. + * + * Implements {@link Zend_View_Helper_Navigation_Helper::__toString()}. + * + * @return string + */ + public function __toString() + { + try { + return $this->render(); + } catch (Exception $e) { + $msg = get_class($e) . ': ' . $e->getMessage(); + trigger_error($msg, E_USER_ERROR); + return ''; + } + } + + // Public methods: + + /** + * Finds the deepest active page in the given container + * + * @param Zend_Navigation_Container $container container to search + * @param int|null $minDepth [optional] minimum depth + * required for page to be + * valid. Default is to use + * {@link getMinDepth()}. A + * null value means no minimum + * depth required. + * @param int|null $minDepth [optional] maximum depth + * a page can have to be + * valid. Default is to use + * {@link getMaxDepth()}. A + * null value means no maximum + * depth required. + * @return array an associative array with + * the values 'depth' and + * 'page', or an empty array + * if not found + */ + public function findActive(Zend_Navigation_Container $container, + $minDepth = null, + $maxDepth = -1) + { + if (!is_int($minDepth)) { + $minDepth = $this->getMinDepth(); + } + if ((!is_int($maxDepth) || $maxDepth < 0) && null !== $maxDepth) { + $maxDepth = $this->getMaxDepth(); + } + + $found = null; + $foundDepth = -1; + $iterator = new RecursiveIteratorIterator($container, + RecursiveIteratorIterator::CHILD_FIRST); + + foreach ($iterator as $page) { + $currDepth = $iterator->getDepth(); + if ($currDepth < $minDepth || !$this->accept($page)) { + // page is not accepted + continue; + } + + if ($page->isActive(false) && $currDepth > $foundDepth) { + // found an active page at a deeper level than before + $found = $page; + $foundDepth = $currDepth; + } + } + + if (is_int($maxDepth) && $foundDepth > $maxDepth) { + while ($foundDepth > $maxDepth) { + if (--$foundDepth < $minDepth) { + $found = null; + break; + } + + $found = $found->getParent(); + if (!$found instanceof Zend_Navigation_Page) { + $found = null; + break; + } + } + } + + if ($found) { + return array('page' => $found, 'depth' => $foundDepth); + } else { + return array(); + } + } + + /** + * Checks if the helper has a container + * + * Implements {@link Zend_View_Helper_Navigation_Helper::hasContainer()}. + * + * @return bool whether the helper has a container or not + */ + public function hasContainer() + { + return null !== $this->_container; + } + + /** + * Checks if the helper has an ACL instance + * + * Implements {@link Zend_View_Helper_Navigation_Helper::hasAcl()}. + * + * @return bool whether the helper has a an ACL instance or not + */ + public function hasAcl() + { + return null !== $this->_acl; + } + + /** + * Checks if the helper has an ACL role + * + * Implements {@link Zend_View_Helper_Navigation_Helper::hasRole()}. + * + * @return bool whether the helper has a an ACL role or not + */ + public function hasRole() + { + return null !== $this->_role; + } + + /** + * Checks if the helper has a translator + * + * Implements {@link Zend_View_Helper_Navigation_Helper::hasTranslator()}. + * + * @return bool whether the helper has a translator or not + */ + public function hasTranslator() + { + return null !== $this->_translator; + } + + /** + * Returns an HTML string containing an 'a' element for the given page + * + * @param Zend_Navigation_Page $page page to generate HTML for + * @return string HTML string for the given page + */ + public function htmlify(Zend_Navigation_Page $page) + { + // get label and title for translating + $label = $page->getLabel(); + $title = $page->getTitle(); + + if ($this->getUseTranslator() && $t = $this->getTranslator()) { + if (is_string($label) && !empty($label)) { + $label = $t->translate($label); + } + if (is_string($title) && !empty($title)) { + $title = $t->translate($title); + } + } + + // get attribs for anchor element + $attribs = array_merge( + array( + 'id' => $page->getId(), + 'title' => $title, + 'class' => $page->getClass(), + 'href' => $page->getHref(), + 'target' => $page->getTarget() + ), + $page->getCustomHtmlAttribs() + ); + + return '_htmlAttribs($attribs) . '>' + . $this->view->escape($label) + . ''; + } + + // Iterator filter methods: + + /** + * Determines whether a page should be accepted when iterating + * + * Rules: + * - If a page is not visible it is not accepted, unless RenderInvisible has + * been set to true. + * - If helper has no ACL, page is accepted + * - If helper has ACL, but no role, page is not accepted + * - If helper has ACL and role: + * - Page is accepted if it has no resource or privilege + * - Page is accepted if ACL allows page's resource or privilege + * - If page is accepted by the rules above and $recursive is true, the page + * will not be accepted if it is the descendant of a non-accepted page. + * + * @param Zend_Navigation_Page $page page to check + * @param bool $recursive [optional] if true, page will not + * be accepted if it is the + * descendant of a page that is not + * accepted. Default is true. + * @return bool whether page should be accepted + */ + public function accept(Zend_Navigation_Page $page, $recursive = true) + { + // accept by default + $accept = true; + + if (!$page->isVisible(false) && !$this->getRenderInvisible()) { + // don't accept invisible pages + $accept = false; + } elseif ($this->getUseAcl() && !$this->_acceptAcl($page)) { + // acl is not amused + $accept = false; + } + + if ($accept && $recursive) { + $parent = $page->getParent(); + if ($parent instanceof Zend_Navigation_Page) { + $accept = $this->accept($parent, true); + } + } + + return $accept; + } + + /** + * Determines whether a page should be accepted by ACL when iterating + * + * Rules: + * - If helper has no ACL, page is accepted + * - If page has a resource or privilege defined, page is accepted + * if the ACL allows access to it using the helper's role + * - If page has no resource or privilege, page is accepted + * + * @param Zend_Navigation_Page $page page to check + * @return bool whether page is accepted by ACL + */ + protected function _acceptAcl(Zend_Navigation_Page $page) + { + if (!$acl = $this->getAcl()) { + // no acl registered means don't use acl + return true; + } + + $role = $this->getRole(); + $resource = $page->getResource(); + $privilege = $page->getPrivilege(); + + if ($resource || $privilege) { + // determine using helper role and page resource/privilege + return $acl->isAllowed($role, $resource, $privilege); + } + + return true; + } + + // Util methods: + + /** + * Retrieve whitespace representation of $indent + * + * @param int|string $indent + * @return string + */ + protected function _getWhitespace($indent) + { + if (is_int($indent)) { + $indent = str_repeat(' ', $indent); + } + + return (string) $indent; + } + + /** + * Converts an associative array to a string of tag attributes. + * + * Overloads {@link Zend_View_Helper_HtmlElement::_htmlAttribs()}. + * + * @param array $attribs an array where each key-value pair is converted + * to an attribute name and value + * @return string an attribute string + */ + protected function _htmlAttribs($attribs) + { + // filter out null values and empty string values + foreach ($attribs as $key => $value) { + if ($value === null || (is_string($value) && !strlen($value))) { + unset($attribs[$key]); + } + } + + return parent::_htmlAttribs($attribs); + } + + /** + * Normalize an ID + * + * Extends {@link Zend_View_Helper_HtmlElement::_normalizeId()}. + * + * @param string $value ID + * @return string Normalized ID + */ + protected function _normalizeId($value) + { + if (false === $this->_skipPrefixForId) { + $prefix = $this->getPrefixForId(); + + if (strlen($prefix)) { + return $prefix . $value; + } + } + + return parent::_normalizeId($value); + } + + // Static methods: + + /** + * Sets default ACL to use if another ACL is not explicitly set + * + * @param Zend_Acl $acl [optional] ACL object. Default is null, which + * sets no ACL object. + * @return void + */ + public static function setDefaultAcl(Zend_Acl $acl = null) + { + self::$_defaultAcl = $acl; + } + + /** + * Sets default ACL role(s) to use when iterating pages if not explicitly + * set later with {@link setRole()} + * + * @param mixed $role [optional] role to set. Expects null, + * string, or an instance of + * {@link Zend_Acl_Role_Interface}. + * Default is null, which sets no default + * role. + * @throws Zend_View_Exception if role is invalid + * @return void + */ + public static function setDefaultRole($role = null) + { + if (null === $role || + is_string($role) || + $role instanceof Zend_Acl_Role_Interface) { + self::$_defaultRole = $role; + } else { + require_once 'Zend/View/Exception.php'; + throw new Zend_View_Exception( + '$role must be null|string|Zend_Acl_Role_Interface' + ); + } + } +} diff --git a/library/Zend/View/Helper/Navigation/Links.php b/library/Zend/View/Helper/Navigation/Links.php new file mode 100755 index 000000000..5d05c1008 --- /dev/null +++ b/library/Zend/View/Helper/Navigation/Links.php @@ -0,0 +1,783 @@ + elements + * + * @category Zend + * @package Zend_View + * @subpackage Helper + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_View_Helper_Navigation_Links + extends Zend_View_Helper_Navigation_HelperAbstract +{ + /**#@+ + * Constants used for specifying which link types to find and render + * + * @var int + */ + const RENDER_ALTERNATE = 0x0001; + const RENDER_STYLESHEET = 0x0002; + const RENDER_START = 0x0004; + const RENDER_NEXT = 0x0008; + const RENDER_PREV = 0x0010; + const RENDER_CONTENTS = 0x0020; + const RENDER_INDEX = 0x0040; + const RENDER_GLOSSARY = 0x0080; + const RENDER_COPYRIGHT = 0x0100; + const RENDER_CHAPTER = 0x0200; + const RENDER_SECTION = 0x0400; + const RENDER_SUBSECTION = 0x0800; + const RENDER_APPENDIX = 0x1000; + const RENDER_HELP = 0x2000; + const RENDER_BOOKMARK = 0x4000; + const RENDER_CUSTOM = 0x8000; + const RENDER_ALL = 0xffff; + /**#@+**/ + + /** + * Maps render constants to W3C link types + * + * @var array + */ + protected static $_RELATIONS = array( + self::RENDER_ALTERNATE => 'alternate', + self::RENDER_STYLESHEET => 'stylesheet', + self::RENDER_START => 'start', + self::RENDER_NEXT => 'next', + self::RENDER_PREV => 'prev', + self::RENDER_CONTENTS => 'contents', + self::RENDER_INDEX => 'index', + self::RENDER_GLOSSARY => 'glossary', + self::RENDER_COPYRIGHT => 'copyright', + self::RENDER_CHAPTER => 'chapter', + self::RENDER_SECTION => 'section', + self::RENDER_SUBSECTION => 'subsection', + self::RENDER_APPENDIX => 'appendix', + self::RENDER_HELP => 'help', + self::RENDER_BOOKMARK => 'bookmark' + ); + + /** + * The helper's render flag + * + * @see render() + * @see setRenderFlag() + * @var int + */ + protected $_renderFlag = self::RENDER_ALL; + + /** + * Root container + * + * Used for preventing methods to traverse above the container given to + * the {@link render()} method. + * + * @see _findRoot() + * + * @var Zend_Navigation_Container + */ + protected $_root; + + /** + * View helper entry point: + * Retrieves helper and optionally sets container to operate on + * + * @param Zend_Navigation_Container $container [optional] container to + * operate on + * @return Zend_View_Helper_Navigation_Links fluent interface, returns + * self + */ + public function links(Zend_Navigation_Container $container = null) + { + if (null !== $container) { + $this->setContainer($container); + } + + return $this; + } + + /** + * Magic overload: Proxy calls to {@link findRelation()} or container + * + * Examples of finder calls: + * + * // METHOD // SAME AS + * $h->findRelNext($page); // $h->findRelation($page, 'rel', 'next') + * $h->findRevSection($page); // $h->findRelation($page, 'rev', 'section'); + * $h->findRelFoo($page); // $h->findRelation($page, 'rel', 'foo'); + * + * + * @param string $method method name + * @param array $arguments method arguments + * @throws Zend_Navigation_Exception if method does not exist in container + */ + public function __call($method, array $arguments = array()) + { + if (@preg_match('/find(Rel|Rev)(.+)/', $method, $match)) { + return $this->findRelation($arguments[0], + strtolower($match[1]), + strtolower($match[2])); + } + + return parent::__call($method, $arguments); + } + + // Accessors: + + /** + * Sets the helper's render flag + * + * The helper uses the bitwise '&' operator against the hex values of the + * render constants. This means that the flag can is "bitwised" value of + * the render constants. Examples: + * + * // render all links except glossary + * $flag = Zend_View_Helper_Navigation_Links:RENDER_ALL ^ + * Zend_View_Helper_Navigation_Links:RENDER_GLOSSARY; + * $helper->setRenderFlag($flag); + * + * // render only chapters and sections + * $flag = Zend_View_Helper_Navigation_Links:RENDER_CHAPTER | + * Zend_View_Helper_Navigation_Links:RENDER_SECTION; + * $helper->setRenderFlag($flag); + * + * // render only relations that are not native W3C relations + * $helper->setRenderFlag(Zend_View_Helper_Navigation_Links:RENDER_CUSTOM); + * + * // render all relations (default) + * $helper->setRenderFlag(Zend_View_Helper_Navigation_Links:RENDER_ALL); + * + * + * Note that custom relations can also be rendered directly using the + * {@link renderLink()} method. + * + * @param int $renderFlag render flag + * @return Zend_View_Helper_Navigation_Links fluent interface, returns self + */ + public function setRenderFlag($renderFlag) + { + $this->_renderFlag = (int) $renderFlag; + return $this; + } + + /** + * Returns the helper's render flag + * + * @return int render flag + */ + public function getRenderFlag() + { + return $this->_renderFlag; + } + + // Finder methods: + + /** + * Finds all relations (forward and reverse) for the given $page + * + * The form of the returned array: + * + * // $page denotes an instance of Zend_Navigation_Page + * $returned = array( + * 'rel' => array( + * 'alternate' => array($page, $page, $page), + * 'start' => array($page), + * 'next' => array($page), + * 'prev' => array($page), + * 'canonical' => array($page) + * ), + * 'rev' => array( + * 'section' => array($page) + * ) + * ); + * + * + * @param Zend_Navigation_Page $page page to find links for + * @return array related pages + */ + public function findAllRelations(Zend_Navigation_Page $page, + $flag = null) + { + if (!is_int($flag)) { + $flag = self::RENDER_ALL; + } + + $result = array('rel' => array(), 'rev' => array()); + $native = array_values(self::$_RELATIONS); + + foreach (array_keys($result) as $rel) { + $meth = 'getDefined' . ucfirst($rel); + $types = array_merge($native, array_diff($page->$meth(), $native)); + + foreach ($types as $type) { + if (!$relFlag = array_search($type, self::$_RELATIONS)) { + $relFlag = self::RENDER_CUSTOM; + } + if (!($flag & $relFlag)) { + continue; + } + if ($found = $this->findRelation($page, $rel, $type)) { + if (!is_array($found)) { + $found = array($found); + } + $result[$rel][$type] = $found; + } + } + } + + return $result; + } + + /** + * Finds relations of the given $rel=$type from $page + * + * This method will first look for relations in the page instance, then + * by searching the root container if nothing was found in the page. + * + * @param Zend_Navigation_Page $page page to find relations for + * @param string $rel relation, "rel" or "rev" + * @param string $type link type, e.g. 'start', 'next' + * @return Zend_Navigaiton_Page|array|null page(s), or null if not found + * @throws Zend_View_Exception if $rel is not "rel" or "rev" + */ + public function findRelation(Zend_Navigation_Page $page, $rel, $type) + { + if (!in_array($rel, array('rel', 'rev'))) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf( + 'Invalid argument: $rel must be "rel" or "rev"; "%s" given', + $rel)); + $e->setView($this->view); + throw $e; + } + + if (!$result = $this->_findFromProperty($page, $rel, $type)) { + $result = $this->_findFromSearch($page, $rel, $type); + } + + return $result; + } + + /** + * Finds relations of given $type for $page by checking if the + * relation is specified as a property of $page + * + * @param Zend_Navigation_Page $page page to find relations for + * @param string $rel relation, 'rel' or 'rev' + * @param string $type link type, e.g. 'start', 'next' + * @return Zend_Navigation_Page|array|null page(s), or null if not found + */ + protected function _findFromProperty(Zend_Navigation_Page $page, $rel, $type) + { + $method = 'get' . ucfirst($rel); + if ($result = $page->$method($type)) { + if ($result = $this->_convertToPages($result)) { + if (!is_array($result)) { + $result = array($result); + } + + foreach ($result as $key => $page) { + if (!$this->accept($page)) { + unset($result[$key]); + } + } + + return count($result) == 1 ? $result[0] : $result; + } + } + + return null; + } + + /** + * Finds relations of given $rel=$type for $page by using the helper to + * search for the relation in the root container + * + * @param Zend_Navigation_Page $page page to find relations for + * @param string $rel relation, 'rel' or 'rev' + * @param string $type link type, e.g. 'start', 'next', etc + * @return array|null array of pages, or null if not found + */ + protected function _findFromSearch(Zend_Navigation_Page $page, $rel, $type) + { + $found = null; + + $method = 'search' . ucfirst($rel) . ucfirst($type); + if (method_exists($this, $method)) { + $found = $this->$method($page); + } + + return $found; + } + + // Search methods: + + /** + * Searches the root container for the forward 'start' relation of the given + * $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to the first document in a collection of documents. This link type + * tells search engines which document is considered by the author to be the + * starting point of the collection. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|null page or null + */ + public function searchRelStart(Zend_Navigation_Page $page) + { + $found = $this->_findRoot($page); + if (!$found instanceof Zend_Navigation_Page) { + $found->rewind(); + $found = $found->current(); + } + + if ($found === $page || !$this->accept($found)) { + $found = null; + } + + return $found; + } + + /** + * Searches the root container for the forward 'next' relation of the given + * $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to the next document in a linear sequence of documents. User + * agents may choose to preload the "next" document, to reduce the perceived + * load time. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|null page(s) or null + */ + public function searchRelNext(Zend_Navigation_Page $page) + { + $found = null; + $break = false; + $iterator = new RecursiveIteratorIterator($this->_findRoot($page), + RecursiveIteratorIterator::SELF_FIRST); + foreach ($iterator as $intermediate) { + if ($intermediate === $page) { + // current page; break at next accepted page + $break = true; + continue; + } + + if ($break && $this->accept($intermediate)) { + $found = $intermediate; + break; + } + } + + return $found; + } + + /** + * Searches the root container for the forward 'prev' relation of the given + * $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to the previous document in an ordered series of documents. Some + * user agents also support the synonym "Previous". + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|null page or null + */ + public function searchRelPrev(Zend_Navigation_Page $page) + { + $found = null; + $prev = null; + $iterator = new RecursiveIteratorIterator( + $this->_findRoot($page), + RecursiveIteratorIterator::SELF_FIRST); + foreach ($iterator as $intermediate) { + if (!$this->accept($intermediate)) { + continue; + } + if ($intermediate === $page) { + $found = $prev; + break; + } + + $prev = $intermediate; + } + + return $found; + } + + /** + * Searches the root container for forward 'chapter' relations of the given + * $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to a document serving as a chapter in a collection of documents. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|array|null page(s) or null + */ + public function searchRelChapter(Zend_Navigation_Page $page) + { + $found = array(); + + // find first level of pages + $root = $this->_findRoot($page); + + // find start page(s) + $start = $this->findRelation($page, 'rel', 'start'); + if (!is_array($start)) { + $start = array($start); + } + + foreach ($root as $chapter) { + // exclude self and start page from chapters + if ($chapter !== $page && + !in_array($chapter, $start) && + $this->accept($chapter)) { + $found[] = $chapter; + } + } + + switch (count($found)) { + case 0: + return null; + case 1: + return $found[0]; + default: + return $found; + } + } + + /** + * Searches the root container for forward 'section' relations of the given + * $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to a document serving as a section in a collection of documents. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|array|null page(s) or null + */ + public function searchRelSection(Zend_Navigation_Page $page) + { + $found = array(); + + // check if given page has pages and is a chapter page + if ($page->hasPages() && $this->_findRoot($page)->hasPage($page)) { + foreach ($page as $section) { + if ($this->accept($section)) { + $found[] = $section; + } + } + } + + switch (count($found)) { + case 0: + return null; + case 1: + return $found[0]; + default: + return $found; + } + } + + /** + * Searches the root container for forward 'subsection' relations of the + * given $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to a document serving as a subsection in a collection of + * documents. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|array|null page(s) or null + */ + public function searchRelSubsection(Zend_Navigation_Page $page) + { + $found = array(); + + if ($page->hasPages()) { + // given page has child pages, loop chapters + foreach ($this->_findRoot($page) as $chapter) { + // is page a section? + if ($chapter->hasPage($page)) { + foreach ($page as $subsection) { + if ($this->accept($subsection)) { + $found[] = $subsection; + } + } + } + } + } + + switch (count($found)) { + case 0: + return null; + case 1: + return $found[0]; + default: + return $found; + } + } + + /** + * Searches the root container for the reverse 'section' relation of the + * given $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to a document serving as a section in a collection of documents. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|null page(s) or null + */ + public function searchRevSection(Zend_Navigation_Page $page) + { + $found = null; + + if ($parent = $page->getParent()) { + if ($parent instanceof Zend_Navigation_Page && + $this->_findRoot($page)->hasPage($parent)) { + $found = $parent; + } + } + + return $found; + } + + /** + * Searches the root container for the reverse 'section' relation of the + * given $page + * + * From {@link http://www.w3.org/TR/html4/types.html#type-links}: + * Refers to a document serving as a subsection in a collection of + * documents. + * + * @param Zend_Navigation_Page $page page to find relation for + * @return Zend_Navigation_Page|null page(s) or null + */ + public function searchRevSubsection(Zend_Navigation_Page $page) + { + $found = null; + + if ($parent = $page->getParent()) { + if ($parent instanceof Zend_Navigation_Page) { + $root = $this->_findRoot($page); + foreach ($root as $chapter) { + if ($chapter->hasPage($parent)) { + $found = $parent; + break; + } + } + } + } + + return $found; + } + + // Util methods: + + /** + * Returns the root container of the given page + * + * When rendering a container, the render method still store the given + * container as the root container, and unset it when done rendering. This + * makes sure finder methods will not traverse above the container given + * to the render method. + * + * @param Zend_Navigaiton_Page $page page to find root for + * @return Zend_Navigation_Container the root container of the given page + */ + protected function _findRoot(Zend_Navigation_Page $page) + { + if ($this->_root) { + return $this->_root; + } + + $root = $page; + + while ($parent = $page->getParent()) { + $root = $parent; + if ($parent instanceof Zend_Navigation_Page) { + $page = $parent; + } else { + break; + } + } + + return $root; + } + + /** + * Converts a $mixed value to an array of pages + * + * @param mixed $mixed mixed value to get page(s) from + * @param bool $recursive whether $value should be looped + * if it is an array or a config + * @return Zend_Navigation_Page|array|null empty if unable to convert + */ + protected function _convertToPages($mixed, $recursive = true) + { + if (is_object($mixed)) { + if ($mixed instanceof Zend_Navigation_Page) { + // value is a page instance; return directly + return $mixed; + } elseif ($mixed instanceof Zend_Navigation_Container) { + // value is a container; return pages in it + $pages = array(); + foreach ($mixed as $page) { + $pages[] = $page; + } + return $pages; + } elseif ($mixed instanceof Zend_Config) { + // convert config object to array and extract + return $this->_convertToPages($mixed->toArray(), $recursive); + } + } elseif (is_string($mixed)) { + // value is a string; make an URI page + return Zend_Navigation_Page::factory(array( + 'type' => 'uri', + 'uri' => $mixed + )); + } elseif (is_array($mixed) && !empty($mixed)) { + if ($recursive && is_numeric(key($mixed))) { + // first key is numeric; assume several pages + $pages = array(); + foreach ($mixed as $value) { + if ($value = $this->_convertToPages($value, false)) { + $pages[] = $value; + } + } + return $pages; + } else { + // pass array to factory directly + try { + $page = Zend_Navigation_Page::factory($mixed); + return $page; + } catch (Exception $e) { + } + } + } + + // nothing found + return null; + } + + // Render methods: + + /** + * Renders the given $page as a link element, with $attrib = $relation + * + * @param Zend_Navigation_Page $page the page to render the link for + * @param string $attrib the attribute to use for $type, + * either 'rel' or 'rev' + * @param string $relation relation type, muse be one of; + * alternate, appendix, bookmark, + * chapter, contents, copyright, + * glossary, help, home, index, next, + * prev, section, start, stylesheet, + * subsection + * @return string rendered link element + * @throws Zend_View_Exception if $attrib is invalid + */ + public function renderLink(Zend_Navigation_Page $page, $attrib, $relation) + { + if (!in_array($attrib, array('rel', 'rev'))) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf( + 'Invalid relation attribute "%s", must be "rel" or "rev"', + $attrib)); + $e->setView($this->view); + throw $e; + } + + if (!$href = $page->getHref()) { + return ''; + } + + // TODO: add more attribs + // http://www.w3.org/TR/html401/struct/links.html#h-12.2 + $attribs = array( + $attrib => $relation, + 'href' => $href, + 'title' => $page->getLabel() + ); + + return '_htmlAttribs($attribs) . + $this->getClosingBracket(); + } + + // Zend_View_Helper_Navigation_Helper: + + /** + * Renders helper + * + * Implements {@link Zend_View_Helper_Navigation_Helper::render()}. + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to + * render the container + * registered in the helper. + * @return string helper output + */ + public function render(Zend_Navigation_Container $container = null) + { + if (null === $container) { + $container = $this->getContainer(); + } + + if ($active = $this->findActive($container)) { + $active = $active['page']; + } else { + // no active page + return ''; + } + + $output = ''; + $indent = $this->getIndent(); + $this->_root = $container; + + $result = $this->findAllRelations($active, $this->getRenderFlag()); + foreach ($result as $attrib => $types) { + foreach ($types as $relation => $pages) { + foreach ($pages as $page) { + if ($r = $this->renderLink($page, $attrib, $relation)) { + $output .= $indent . $r . $this->getEOL(); + } + } + } + } + + $this->_root = null; + + // return output (trim last newline by spec) + return strlen($output) ? rtrim($output, self::EOL) : ''; + } +} diff --git a/library/Zend/View/Helper/Navigation/Menu.php b/library/Zend/View/Helper/Navigation/Menu.php new file mode 100755 index 000000000..da3faee84 --- /dev/null +++ b/library/Zend/View/Helper/Navigation/Menu.php @@ -0,0 +1,1099 @@ +setContainer($container); + } + + return $this; + } + + // Accessors: + + /** + * Sets CSS class to use for the first 'ul' element when rendering + * + * @param string $ulClass CSS class to set + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setUlClass($ulClass) + { + if (is_string($ulClass)) { + $this->_ulClass = $ulClass; + } + + return $this; + } + + /** + * Returns CSS class to use for the first 'ul' element when rendering + * + * @return string CSS class + */ + public function getUlClass() + { + return $this->_ulClass; + } + + /** + * Sets unique identifier (id) to use for the first 'ul' element when + * rendering + * + * @param string|null $ulId Unique identifier (id) to set + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setUlId($ulId) + { + if (is_string($ulId)) { + $this->_ulId = $ulId; + } + + return $this; + } + + /** + * Returns unique identifier (id) to use for the first 'ul' element when + * rendering + * + * @return string|null Unique identifier (id); Default is 'null' + */ + public function getUlId() + { + return $this->_ulId; + } + + /** + * Sets CSS class to use for the active elements when rendering + * + * @param string $activeClass CSS class to set + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setActiveClass($activeClass) + { + if (is_string($activeClass)) { + $this->_activeClass = $activeClass; + } + + return $this; + } + + /** + * Returns CSS class to use for the active elements when rendering + * + * @return string CSS class + */ + public function getActiveClass() + { + return $this->_activeClass; + } + + /** + * Sets CSS class to use for the parent li elements when rendering + * + * @param string $parentClass CSS class to set to parents + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setParentClass($parentClass) + { + if (is_string($parentClass)) { + $this->_parentClass = $parentClass; + } + + return $this; + } + + /** + * Returns CSS class to use for the parent lie elements when rendering + * + * @return string CSS class + */ + public function getParentClass() + { + return $this->_parentClass; + } + + /** + * Enables/disables rendering of parent class to the li element + * + * @param bool $flag [optional] render with parent + * class. Default is true. + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setRenderParentClass($flag = true) + { + $this->_renderParentClass = (bool) $flag; + return $this; + } + + /** + * Returns flag indicating whether parent class should be rendered to the li + * element + * + * @return bool whether parent class should be rendered + */ + public function getRenderParentClass() + { + return $this->_renderParentClass; + } + + /** + * Sets a flag indicating whether only active branch should be rendered + * + * @param bool $flag [optional] render only active + * branch. Default is true. + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setOnlyActiveBranch($flag = true) + { + $this->_onlyActiveBranch = (bool) $flag; + return $this; + } + + /** + * Returns a flag indicating whether only active branch should be rendered + * + * By default, this value is false, meaning the entire menu will be + * be rendered. + * + * @return bool whether only active branch should be rendered + */ + public function getOnlyActiveBranch() + { + return $this->_onlyActiveBranch; + } + + /** + * Sets a flag indicating whether to expand all sibling nodes of the active branch + * + * @param bool $flag [optional] expand all siblings of + * nodes in the active branch. Default is true. + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setExpandSiblingNodesOfActiveBranch($flag = true) + { + $this->_expandSiblingNodesOfActiveBranch = (bool) $flag; + return $this; + } + + /** + * Returns a flag indicating whether to expand all sibling nodes of the active branch + * + * By default, this value is false, meaning the entire menu will be + * be rendered. + * + * @return bool whether siblings of nodes in the active branch should be expanded + */ + public function getExpandSiblingNodesOfActiveBranch() + { + return $this->_expandSiblingNodesOfActiveBranch; + } + + /** + * Enables/disables rendering of parents when only rendering active branch + * + * See {@link setOnlyActiveBranch()} for more information. + * + * @param bool $flag [optional] render parents when + * rendering active branch. + * Default is true. + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setRenderParents($flag = true) + { + $this->_renderParents = (bool) $flag; + return $this; + } + + /** + * Returns flag indicating whether parents should be rendered when rendering + * only the active branch + * + * By default, this value is true. + * + * @return bool whether parents should be rendered + */ + public function getRenderParents() + { + return $this->_renderParents; + } + + /** + * Sets which partial view script to use for rendering menu + * + * @param string|array $partial partial view script or null. If + * an array is given, it is + * expected to contain two values; + * the partial view script to use, + * and the module where the script + * can be found. + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function setPartial($partial) + { + if (null === $partial || is_string($partial) || is_array($partial)) { + $this->_partial = $partial; + } + + return $this; + } + + /** + * Returns partial view script to use for rendering menu + * + * @return string|array|null + */ + public function getPartial() + { + return $this->_partial; + } + + /** + * Adds CSS class from page to li element + * + * Before: + * + *
  • + * Bar + *
  • + *
    + * + * After: + * + *
  • + * Bar + *
  • + *
    + * + * @param bool $flag [optional] adds CSS class from + * page to li element + * + * @return Zend_View_Helper_Navigation_Menu fluent interface, returns self + */ + public function addPageClassToLi($flag = true) + { + $this->_addPageClassToLi = (bool) $flag; + + return $this; + } + + /** + * Returns a flag indicating whether the CSS class from page to be added to + * li element + * + * @return bool + */ + public function getAddPageClassToLi() + { + return $this->_addPageClassToLi; + } + + /** + * Set the inner indentation string for using in {@link render()}, optionally + * a number of spaces to indent with + * + * @param string|int $indent indentation string or + * number of spaces + * @return Zend_View_Helper_Navigation_HelperAbstract fluent interface, + * returns self + */ + public function setInnerIndent($indent) + { + $this->_innerIndent = $this->_getWhitespace($indent); + + return $this; + } + + /** + * Returns inner indentation (format output is respected) + * + * @see getFormatOutput() + * + * @return string indentation string or an empty string + */ + public function getInnerIndent() + { + if (false === $this->getFormatOutput()) { + return ''; + } + + return $this->_innerIndent; + } + + // Public methods: + + /** + * Returns an HTML string containing an 'a' element for the given page if + * the page's href is not empty, and a 'span' element if it is empty + * + * Overrides {@link Zend_View_Helper_Navigation_Abstract::htmlify()}. + * + * @param Zend_Navigation_Page $page page to generate HTML for + * @return string HTML string for the given page + */ + public function htmlify(Zend_Navigation_Page $page) + { + // get label and title for translating + $label = $page->getLabel(); + $title = $page->getTitle(); + + // translate label and title? + if ($this->getUseTranslator() && $t = $this->getTranslator()) { + if (is_string($label) && !empty($label)) { + $label = $t->translate($label); + } + if (is_string($title) && !empty($title)) { + $title = $t->translate($title); + } + } + + // get attribs for element + $attribs = array( + 'id' => $page->getId(), + 'title' => $title, + ); + + if (false === $this->getAddPageClassToLi()) { + $attribs['class'] = $page->getClass(); + } + + // does page have a href? + if ($href = $page->getHref()) { + $element = 'a'; + $attribs['href'] = $href; + $attribs['target'] = $page->getTarget(); + $attribs['accesskey'] = $page->getAccessKey(); + } else { + $element = 'span'; + } + + // Add custom HTML attributes + $attribs = array_merge($attribs, $page->getCustomHtmlAttribs()); + + return '<' . $element . $this->_htmlAttribs($attribs) . '>' + . $this->view->escape($label) + . ''; + } + + /** + * Normalizes given render options + * + * @param array $options [optional] options to normalize + * @return array normalized options + */ + protected function _normalizeOptions(array $options = array()) + { + // Ident + if (isset($options['indent'])) { + $options['indent'] = $this->_getWhitespace($options['indent']); + } else { + $options['indent'] = $this->getIndent(); + } + + // Inner ident + if (isset($options['innerIndent'])) { + $options['innerIndent'] = + $this->_getWhitespace($options['innerIndent']); + } else { + $options['innerIndent'] = $this->getInnerIndent(); + } + + // UL class + if (isset($options['ulClass']) && $options['ulClass'] !== null) { + $options['ulClass'] = (string) $options['ulClass']; + } else { + $options['ulClass'] = $this->getUlClass(); + } + + // UL id + if (isset($options['ulId']) && $options['ulId'] !== null) { + $options['ulId'] = (string) $options['ulId']; + } else { + $options['ulId'] = $this->getUlId(); + } + + // Active class + if (isset($options['activeClass']) && $options['activeClass'] !== null + ) { + $options['activeClass'] = (string) $options['activeClass']; + } else { + $options['activeClass'] = $this->getActiveClass(); + } + + // Parent class + if (isset($options['parentClass']) && $options['parentClass'] !== null) { + $options['parentClass'] = (string) $options['parentClass']; + } else { + $options['parentClass'] = $this->getParentClass(); + } + + // Minimum depth + if (array_key_exists('minDepth', $options)) { + if (null !== $options['minDepth']) { + $options['minDepth'] = (int) $options['minDepth']; + } + } else { + $options['minDepth'] = $this->getMinDepth(); + } + + if ($options['minDepth'] < 0 || $options['minDepth'] === null) { + $options['minDepth'] = 0; + } + + // Maximum depth + if (array_key_exists('maxDepth', $options)) { + if (null !== $options['maxDepth']) { + $options['maxDepth'] = (int) $options['maxDepth']; + } + } else { + $options['maxDepth'] = $this->getMaxDepth(); + } + + // Only active branch + if (!isset($options['onlyActiveBranch'])) { + $options['onlyActiveBranch'] = $this->getOnlyActiveBranch(); + } + + // Expand sibling nodes of active branch + if (!isset($options['expandSiblingNodesOfActiveBranch'])) { + $options['expandSiblingNodesOfActiveBranch'] = $this->getExpandSiblingNodesOfActiveBranch(); + } + + // Render parents? + if (!isset($options['renderParents'])) { + $options['renderParents'] = $this->getRenderParents(); + } + + // Render parent class? + if (!isset($options['renderParentClass'])) { + $options['renderParentClass'] = $this->getRenderParentClass(); + } + + // Add page CSS class to LI element + if (!isset($options['addPageClassToLi'])) { + $options['addPageClassToLi'] = $this->getAddPageClassToLi(); + } + + return $options; + } + + // Render methods: + + /** + * Renders the deepest active menu within [$minDepth, $maxDeth], (called + * from {@link renderMenu()}) + * + * @param Zend_Navigation_Container $container container to render + * @param string $ulClass CSS class for first UL + * @param string $indent initial indentation + * @param string $innerIndent inner indentation + * @param int|null $minDepth minimum depth + * @param int|null $maxDepth maximum depth + * @param string|null $ulId unique identifier (id) + * for first UL + * @param bool $addPageClassToLi adds CSS class from + * page to li element + * @param string|null $activeClass CSS class for active + * element + * @param string $parentClass CSS class for parent + * li's + * @param bool $renderParentClass Render parent class? + * @return string rendered menu (HTML) + */ + protected function _renderDeepestMenu(Zend_Navigation_Container $container, + $ulClass, + $indent, + $innerIndent, + $minDepth, + $maxDepth, + $ulId, + $addPageClassToLi, + $activeClass, + $parentClass, + $renderParentClass) + { + if (!$active = $this->findActive($container, $minDepth - 1, $maxDepth)) { + return ''; + } + + // special case if active page is one below minDepth + if ($active['depth'] < $minDepth) { + if (!$active['page']->hasPages()) { + return ''; + } + } else if (!$active['page']->hasPages()) { + // found pages has no children; render siblings + $active['page'] = $active['page']->getParent(); + } else if (is_int($maxDepth) && $active['depth'] + 1 > $maxDepth) { + // children are below max depth; render siblings + $active['page'] = $active['page']->getParent(); + } + + $attribs = array( + 'class' => $ulClass, + 'id' => $ulId, + ); + + // We don't need a prefix for the menu ID (backup) + $skipValue = $this->_skipPrefixForId; + $this->skipPrefixForId(); + + $html = $indent . '_htmlAttribs($attribs) + . '>' + . $this->getEOL(); + + // Reset prefix for IDs + $this->_skipPrefixForId = $skipValue; + + foreach ($active['page'] as $subPage) { + if (!$this->accept($subPage)) { + continue; + } + + $liClass = ''; + if ($subPage->isActive(true) && $addPageClassToLi) { + $liClass = $this->_htmlAttribs( + array('class' => $activeClass . ' ' . $subPage->getClass()) + ); + } else if ($subPage->isActive(true)) { + $liClass = $this->_htmlAttribs(array('class' => $activeClass)); + } else if ($addPageClassToLi) { + $liClass = $this->_htmlAttribs( + array('class' => $subPage->getClass()) + ); + } + $html .= $indent . $innerIndent . '' . $this->getEOL(); + $html .= $indent . str_repeat($innerIndent, 2) . $this->htmlify($subPage) + . $this->getEOL(); + $html .= $indent . $innerIndent . '' . $this->getEOL(); + } + + $html .= $indent . ''; + + return $html; + } + + /** + * Renders a normal menu (called from {@link renderMenu()}) + * + * @param Zend_Navigation_Container $container container to render + * @param string $ulClass CSS class for first UL + * @param string $indent initial indentation + * @param string $innerIndent inner indentation + * @param int|null $minDepth minimum depth + * @param int|null $maxDepth maximum depth + * @param bool $onlyActive render only active branch? + * @param bool $expandSibs render siblings of active + * branch nodes? + * @param string|null $ulId unique identifier (id) + * for first UL + * @param bool $addPageClassToLi adds CSS class from + * page to li element + * @param string|null $activeClass CSS class for active + * element + * @param string $parentClass CSS class for parent + * li's + * @param bool $renderParentClass Render parent class? + * @return string rendered menu (HTML) + */ + protected function _renderMenu(Zend_Navigation_Container $container, + $ulClass, + $indent, + $innerIndent, + $minDepth, + $maxDepth, + $onlyActive, + $expandSibs, + $ulId, + $addPageClassToLi, + $activeClass, + $parentClass, + $renderParentClass) + { + $html = ''; + + // find deepest active + if ($found = $this->findActive($container, $minDepth, $maxDepth)) { + $foundPage = $found['page']; + $foundDepth = $found['depth']; + } else { + $foundPage = null; + } + + // create iterator + $iterator = new RecursiveIteratorIterator($container, + RecursiveIteratorIterator::SELF_FIRST); + if (is_int($maxDepth)) { + $iterator->setMaxDepth($maxDepth); + } + + // iterate container + $prevDepth = -1; + foreach ($iterator as $page) { + $depth = $iterator->getDepth(); + $isActive = $page->isActive(true); + if ($depth < $minDepth || !$this->accept($page)) { + // page is below minDepth or not accepted by acl/visibilty + continue; + } else if ($expandSibs && $depth > $minDepth) { + // page is not active itself, but might be in the active branch + $accept = false; + if ($foundPage) { + if ($foundPage->hasPage($page)) { + // accept if page is a direct child of the active page + $accept = true; + } else if ($page->getParent()->isActive(true)) { + // page is a sibling of the active branch... + $accept = true; + } + } + if (!$isActive && !$accept) { + continue; + } + } else if ($onlyActive && !$isActive) { + // page is not active itself, but might be in the active branch + $accept = false; + if ($foundPage) { + if ($foundPage->hasPage($page)) { + // accept if page is a direct child of the active page + $accept = true; + } else if ($foundPage->getParent()->hasPage($page)) { + // page is a sibling of the active page... + if (!$foundPage->hasPages() || + is_int($maxDepth) && $foundDepth + 1 > $maxDepth) { + // accept if active page has no children, or the + // children are too deep to be rendered + $accept = true; + } + } + } + + if (!$accept) { + continue; + } + } + + // make sure indentation is correct + $depth -= $minDepth; + $myIndent = $indent . str_repeat($innerIndent, $depth * 2); + + if ($depth > $prevDepth) { + $attribs = array(); + + // start new ul tag + if (0 == $depth) { + $attribs = array( + 'class' => $ulClass, + 'id' => $ulId, + ); + } + + // We don't need a prefix for the menu ID (backup) + $skipValue = $this->_skipPrefixForId; + $this->skipPrefixForId(); + + $html .= $myIndent . '_htmlAttribs($attribs) + . '>' + . $this->getEOL(); + + // Reset prefix for IDs + $this->_skipPrefixForId = $skipValue; + } else if ($prevDepth > $depth) { + // close li/ul tags until we're at current depth + for ($i = $prevDepth; $i > $depth; $i--) { + $ind = $indent . str_repeat($innerIndent, $i * 2); + $html .= $ind . $innerIndent . '' . $this->getEOL(); + $html .= $ind . '' . $this->getEOL(); + } + // close previous li tag + $html .= $myIndent . $innerIndent . '' . $this->getEOL(); + } else { + // close previous li tag + $html .= $myIndent . $innerIndent . '' . $this->getEOL(); + } + + // render li tag and page + $liClasses = array(); + // Is page active? + if ($isActive) { + $liClasses[] = $activeClass; + } + // Add CSS class from page to LI? + if ($addPageClassToLi) { + $liClasses[] = $page->getClass(); + } + // Add CSS class for parents to LI? + if ($renderParentClass && $page->hasChildren()) { + // Check max depth + if ((is_int($maxDepth) && ($depth + 1 < $maxDepth)) + || !is_int($maxDepth) + ) { + $liClasses[] = $parentClass; + } + } + + $html .= $myIndent . $innerIndent . '_htmlAttribs(array('class' => implode(' ', $liClasses))) + . '>' . $this->getEOL() + . $myIndent . str_repeat($innerIndent, 2) + . $this->htmlify($page) + . $this->getEOL(); + + // store as previous depth for next iteration + $prevDepth = $depth; + } + + if ($html) { + // done iterating container; close open ul/li tags + for ($i = $prevDepth+1; $i > 0; $i--) { + $myIndent = $indent . str_repeat($innerIndent . $innerIndent, $i - 1); + $html .= $myIndent . $innerIndent . '' . $this->getEOL() + . $myIndent . '' . $this->getEOL(); + } + $html = rtrim($html, $this->getEOL()); + } + + return $html; + } + + /** + * Renders helper + * + * Renders a HTML 'ul' for the given $container. If $container is not given, + * the container registered in the helper will be used. + * + * Available $options: + * + * + * @param Zend_Navigation_Container $container [optional] container to + * create menu from. Default + * is to use the container + * retrieved from + * {@link getContainer()}. + * @param array $options [optional] options for + * controlling rendering + * @return string rendered menu + */ + public function renderMenu(Zend_Navigation_Container $container = null, + array $options = array()) + { + if (null === $container) { + $container = $this->getContainer(); + } + + $options = $this->_normalizeOptions($options); + + if ($options['onlyActiveBranch'] && !$options['renderParents']) { + $html = $this->_renderDeepestMenu( + $container, + $options['ulClass'], + $options['indent'], + $options['innerIndent'], + $options['minDepth'], + $options['maxDepth'], + $options['ulId'], + $options['addPageClassToLi'], + $options['activeClass'], + $options['parentClass'], + $options['renderParentClass'] + ); + } else { + $html = $this->_renderMenu( + $container, + $options['ulClass'], + $options['indent'], + $options['innerIndent'], + $options['minDepth'], + $options['maxDepth'], + $options['onlyActiveBranch'], + $options['expandSiblingNodesOfActiveBranch'], + $options['ulId'], + $options['addPageClassToLi'], + $options['activeClass'], + $options['parentClass'], + $options['renderParentClass'] + ); + } + + return $html; + } + + /** + * Renders the inner-most sub menu for the active page in the $container + * + * This is a convenience method which is equivalent to the following call: + * + * renderMenu($container, array( + * 'indent' => $indent, + * 'ulClass' => $ulClass, + * 'minDepth' => null, + * 'maxDepth' => null, + * 'onlyActiveBranch' => true, + * 'renderParents' => false + * )); + * + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to render + * the container registered in + * the helper. + * @param string|null $ulClass [optional] CSS class to + * use for UL element. Default + * is to use the value from + * {@link getUlClass()}. + * @param string|int $indent [optional] indentation as + * a string or number of + * spaces. Default is to use + * the value retrieved from + * {@link getIndent()}. + * @param string|null $ulId [optional] Unique identifier + * (id) use for UL element + * @param bool $addPageClassToLi adds CSS class from + * page to li element + * @param string|int $innerIndent [optional] inner + * indentation as a string + * or number of spaces. + * Default is to use the + * {@link getInnerIndent()}. + * @return string rendered content + */ + public function renderSubMenu(Zend_Navigation_Container $container = null, + $ulClass = null, + $indent = null, + $ulId = null, + $addPageClassToLi = false, + $innerIndent = null) + { + return $this->renderMenu($container, array( + 'indent' => $indent, + 'innerIndent' => $innerIndent, + 'ulClass' => $ulClass, + 'minDepth' => null, + 'maxDepth' => null, + 'onlyActiveBranch' => true, + 'renderParents' => false, + 'ulId' => $ulId, + 'addPageClassToLi' => $addPageClassToLi, + )); + } + + /** + * Renders the given $container by invoking the partial view helper + * + * The container will simply be passed on as a model to the view script + * as-is, and will be available in the partial script as 'container', e.g. + * echo 'Number of pages: ', count($this->container);. + * + * @param Zend_Navigation_Container $container [optional] container to + * pass to view script. Default + * is to use the container + * registered in the helper. + * @param string|array $partial [optional] partial view + * script to use. Default is to + * use the partial registered + * in the helper. If an array + * is given, it is expected to + * contain two values; the + * partial view script to use, + * and the module where the + * script can be found. + * @return string helper output + * + * @throws Zend_View_Exception When no partial script is set + */ + public function renderPartial(Zend_Navigation_Container $container = null, + $partial = null) + { + if (null === $container) { + $container = $this->getContainer(); + } + + if (null === $partial) { + $partial = $this->getPartial(); + } + + if (empty($partial)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception( + 'Unable to render menu: No partial view script provided' + ); + $e->setView($this->view); + throw $e; + } + + $model = array( + 'container' => $container + ); + + if (is_array($partial)) { + if (count($partial) != 2) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception( + 'Unable to render menu: A view partial supplied as ' + . 'an array must contain two values: partial view ' + . 'script and module where script can be found' + ); + $e->setView($this->view); + throw $e; + } + + return $this->view->partial($partial[0], $partial[1], $model); + } + + return $this->view->partial($partial, null, $model); + } + + // Zend_View_Helper_Navigation_Helper: + + /** + * Renders menu + * + * Implements {@link Zend_View_Helper_Navigation_Helper::render()}. + * + * If a partial view is registered in the helper, the menu will be rendered + * using the given partial script. If no partial is registered, the menu + * will be rendered as an 'ul' element by the helper's internal method. + * + * @see renderPartial() + * @see renderMenu() + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to + * render the container + * registered in the helper. + * @return string helper output + */ + public function render(Zend_Navigation_Container $container = null) + { + if ($partial = $this->getPartial()) { + return $this->renderPartial($container, $partial); + } else { + return $this->renderMenu($container); + } + } +} diff --git a/library/Zend/View/Helper/Navigation/Sitemap.php b/library/Zend/View/Helper/Navigation/Sitemap.php new file mode 100755 index 000000000..b93808a2c --- /dev/null +++ b/library/Zend/View/Helper/Navigation/Sitemap.php @@ -0,0 +1,444 @@ + tag + * + * @var string + */ + const SITEMAP_NS = 'http://www.sitemaps.org/schemas/sitemap/0.9'; + + /** + * Schema URL + * + * @var string + */ + const SITEMAP_XSD = 'http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'; + + /** + * Whether the XML declaration should be included in XML output + * + * @var bool + */ + protected $_useXmlDeclaration = true; + + /** + * Whether sitemap should be validated using Zend_Validate_Sitemap_* + * + * @var bool + */ + protected $_useSitemapValidators = true; + + /** + * Whether sitemap should be schema validated when generated + * + * @var bool + */ + protected $_useSchemaValidation = false; + + /** + * Server url + * + * @var string + */ + protected $_serverUrl; + + /** + * View helper entry point: + * Retrieves helper and optionally sets container to operate on + * + * @param Zend_Navigation_Container $container [optional] container to + * operate on + * @return Zend_View_Helper_Navigation_Sitemap fluent interface, returns + * self + */ + public function sitemap(Zend_Navigation_Container $container = null) + { + if (null !== $container) { + $this->setContainer($container); + } + + return $this; + } + + // Accessors: + + /** + * Sets whether the XML declaration should be used in output + * + * @param bool $useXmlDecl whether XML delcaration + * should be rendered + * @return Zend_View_Helper_Navigation_Sitemap fluent interface, returns + * self + */ + public function setUseXmlDeclaration($useXmlDecl) + { + $this->_useXmlDeclaration = (bool) $useXmlDecl; + return $this; + } + + /** + * Returns whether the XML declaration should be used in output + * + * @return bool whether the XML declaration should be used in output + */ + public function getUseXmlDeclaration() + { + return $this->_useXmlDeclaration; + } + + /** + * Sets whether sitemap should be validated using Zend_Validate_Sitemap_* + * + * @param bool $useSitemapValidators whether sitemap validators + * should be used + * @return Zend_View_Helper_Navigation_Sitemap fluent interface, returns + * self + */ + public function setUseSitemapValidators($useSitemapValidators) + { + $this->_useSitemapValidators = (bool) $useSitemapValidators; + return $this; + } + + /** + * Returns whether sitemap should be validated using Zend_Validate_Sitemap_* + * + * @return bool whether sitemap should be validated using validators + */ + public function getUseSitemapValidators() + { + return $this->_useSitemapValidators; + } + + /** + * Sets whether sitemap should be schema validated when generated + * + * @param bool $schemaValidation whether sitemap should + * validated using XSD Schema + * @return Zend_View_Helper_Navigation_Sitemap fluent interface, returns + * self + */ + public function setUseSchemaValidation($schemaValidation) + { + $this->_useSchemaValidation = (bool) $schemaValidation; + return $this; + } + + /** + * Returns true if sitemap should be schema validated when generated + * + * @return bool + */ + public function getUseSchemaValidation() + { + return $this->_useSchemaValidation; + } + + /** + * Sets server url (scheme and host-related stuff without request URI) + * + * E.g. http://www.example.com + * + * @param string $serverUrl server URL to set (only + * scheme and host) + * @throws Zend_Uri_Exception if invalid server URL + * @return Zend_View_Helper_Navigation_Sitemap fluent interface, returns + * self + */ + public function setServerUrl($serverUrl) + { + require_once 'Zend/Uri.php'; + $uri = Zend_Uri::factory($serverUrl); + $uri->setFragment(''); + $uri->setPath(''); + $uri->setQuery(''); + + if ($uri->valid()) { + $this->_serverUrl = $uri->getUri(); + } else { + require_once 'Zend/Uri/Exception.php'; + $e = new Zend_Uri_Exception(sprintf( + 'Invalid server URL: "%s"', + $serverUrl)); + $e->setView($this->view); + throw $e; + } + + return $this; + } + + /** + * Returns server URL + * + * @return string server URL + */ + public function getServerUrl() + { + if (!isset($this->_serverUrl)) { + $this->_serverUrl = $this->view->serverUrl(); + } + + return $this->_serverUrl; + } + + // Helper methods: + + /** + * Escapes string for XML usage + * + * @param string $string string to escape + * @return string escaped string + */ + protected function _xmlEscape($string) + { + $enc = 'UTF-8'; + if ($this->view instanceof Zend_View_Interface + && method_exists($this->view, 'getEncoding') + ) { + $enc = $this->view->getEncoding(); + } + + // do not encode existing HTML entities + return htmlspecialchars($string, ENT_QUOTES, $enc, false); + } + + // Public methods: + + /** + * Returns an escaped absolute URL for the given page + * + * @param Zend_Navigation_Page $page page to get URL from + * @return string + */ + public function url(Zend_Navigation_Page $page) + { + $href = $page->getHref(); + + if (!isset($href{0})) { + // no href + return ''; + } elseif ($href{0} == '/') { + // href is relative to root; use serverUrl helper + $url = $this->getServerUrl() . $href; + } elseif (preg_match('/^[a-z]+:/im', (string) $href)) { + // scheme is given in href; assume absolute URL already + $url = (string) $href; + } else { + // href is relative to current document; use url helpers + $url = $this->getServerUrl() + . rtrim($this->view->url(), '/') . '/' + . $href; + } + + return $this->_xmlEscape($url); + } + + /** + * Returns a DOMDocument containing the Sitemap XML for the given container + * + * @param Zend_Navigation_Container $container [optional] container to get + * breadcrumbs from, defaults + * to what is registered in the + * helper + * @return DOMDocument DOM representation of the + * container + * @throws Zend_View_Exception if schema validation is on + * and the sitemap is invalid + * according to the sitemap + * schema, or if sitemap + * validators are used and the + * loc element fails validation + */ + public function getDomSitemap(Zend_Navigation_Container $container = null) + { + if (null === $container) { + $container = $this->getContainer(); + } + + // check if we should validate using our own validators + if ($this->getUseSitemapValidators()) { + require_once 'Zend/Validate/Sitemap/Changefreq.php'; + require_once 'Zend/Validate/Sitemap/Lastmod.php'; + require_once 'Zend/Validate/Sitemap/Loc.php'; + require_once 'Zend/Validate/Sitemap/Priority.php'; + + // create validators + $locValidator = new Zend_Validate_Sitemap_Loc(); + $lastmodValidator = new Zend_Validate_Sitemap_Lastmod(); + $changefreqValidator = new Zend_Validate_Sitemap_Changefreq(); + $priorityValidator = new Zend_Validate_Sitemap_Priority(); + } + + // create document + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = $this->getFormatOutput(); + + // ...and urlset (root) element + $urlSet = $dom->createElementNS(self::SITEMAP_NS, 'urlset'); + $dom->appendChild($urlSet); + + // create iterator + $iterator = new RecursiveIteratorIterator($container, + RecursiveIteratorIterator::SELF_FIRST); + + $maxDepth = $this->getMaxDepth(); + if (is_int($maxDepth)) { + $iterator->setMaxDepth($maxDepth); + } + $minDepth = $this->getMinDepth(); + if (!is_int($minDepth) || $minDepth < 0) { + $minDepth = 0; + } + + // iterate container + foreach ($iterator as $page) { + if ($iterator->getDepth() < $minDepth || !$this->accept($page)) { + // page should not be included + continue; + } + + // get absolute url from page + if (!$url = $this->url($page)) { + // skip page if it has no url (rare case) + continue; + } + + // create url node for this page + $urlNode = $dom->createElementNS(self::SITEMAP_NS, 'url'); + $urlSet->appendChild($urlNode); + + if ($this->getUseSitemapValidators() && + !$locValidator->isValid($url)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf( + 'Encountered an invalid URL for Sitemap XML: "%s"', + $url)); + $e->setView($this->view); + throw $e; + } + + // put url in 'loc' element + $urlNode->appendChild($dom->createElementNS(self::SITEMAP_NS, + 'loc', $url)); + + // add 'lastmod' element if a valid lastmod is set in page + if (isset($page->lastmod)) { + $lastmod = strtotime((string) $page->lastmod); + + // prevent 1970-01-01... + if ($lastmod !== false) { + $lastmod = date('c', $lastmod); + } + + if (!$this->getUseSitemapValidators() || + $lastmodValidator->isValid($lastmod)) { + $urlNode->appendChild( + $dom->createElementNS(self::SITEMAP_NS, 'lastmod', + $lastmod) + ); + } + } + + // add 'changefreq' element if a valid changefreq is set in page + if (isset($page->changefreq)) { + $changefreq = $page->changefreq; + if (!$this->getUseSitemapValidators() || + $changefreqValidator->isValid($changefreq)) { + $urlNode->appendChild( + $dom->createElementNS(self::SITEMAP_NS, 'changefreq', + $changefreq) + ); + } + } + + // add 'priority' element if a valid priority is set in page + if (isset($page->priority)) { + $priority = $page->priority; + if (!$this->getUseSitemapValidators() || + $priorityValidator->isValid($priority)) { + $urlNode->appendChild( + $dom->createElementNS(self::SITEMAP_NS, 'priority', + $priority) + ); + } + } + } + + // validate using schema if specified + if ($this->getUseSchemaValidation()) { + if (!@$dom->schemaValidate(self::SITEMAP_XSD)) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception(sprintf( + 'Sitemap is invalid according to XML Schema at "%s"', + self::SITEMAP_XSD)); + $e->setView($this->view); + throw $e; + } + } + + return $dom; + } + + // Zend_View_Helper_Navigation_Helper: + + /** + * Renders helper + * + * Implements {@link Zend_View_Helper_Navigation_Helper::render()}. + * + * @param Zend_Navigation_Container $container [optional] container to + * render. Default is to + * render the container + * registered in the helper. + * @return string helper output + */ + public function render(Zend_Navigation_Container $container = null) + { + $dom = $this->getDomSitemap($container); + + $xml = $this->getUseXmlDeclaration() ? + $dom->saveXML() : + $dom->saveXML($dom->documentElement); + + return rtrim($xml, self::EOL); + } +} diff --git a/library/Zend/View/Helper/PaginationControl.php b/library/Zend/View/Helper/PaginationControl.php new file mode 100755 index 000000000..6f5929a22 --- /dev/null +++ b/library/Zend/View/Helper/PaginationControl.php @@ -0,0 +1,145 @@ +view = $view; + return $this; + } + + /** + * Sets the default view partial. + * + * @param string|array $partial View partial + */ + public static function setDefaultViewPartial($partial) + { + self::$_defaultViewPartial = $partial; + } + + /** + * Gets the default view partial + * + * @return string|array + */ + public static function getDefaultViewPartial() + { + return self::$_defaultViewPartial; + } + + /** + * Render the provided pages. This checks if $view->paginator is set and, + * if so, uses that. Also, if no scrolling style or partial are specified, + * the defaults will be used (if set). + * + * @param Zend_Paginator (Optional) $paginator + * @param string $scrollingStyle (Optional) Scrolling style + * @param string $partial (Optional) View partial + * @param array|string $params (Optional) params to pass to the partial + * @return string + * @throws Zend_View_Exception + */ + public function paginationControl(Zend_Paginator $paginator = null, $scrollingStyle = null, $partial = null, $params = null) + { + if ($paginator === null) { + if (isset($this->view->paginator) and $this->view->paginator !== null and $this->view->paginator instanceof Zend_Paginator) { + $paginator = $this->view->paginator; + } else { + /** + * @see Zend_View_Exception + */ + require_once 'Zend/View/Exception.php'; + + $e = new Zend_View_Exception('No paginator instance provided or incorrect type'); + $e->setView($this->view); + throw $e; + } + } + + if ($partial === null) { + if (self::$_defaultViewPartial === null) { + /** + * @see Zend_View_Exception + */ + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('No view partial provided and no default set'); + $e->setView($this->view); + throw $e; + } + + $partial = self::$_defaultViewPartial; + } + + $pages = get_object_vars($paginator->getPages($scrollingStyle)); + + if ($params !== null) { + $pages = array_merge($pages, (array) $params); + } + + if (is_array($partial)) { + if (count($partial) != 2) { + /** + * @see Zend_View_Exception + */ + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('A view partial supplied as an array must contain two values: the filename and its module'); + $e->setView($this->view); + throw $e; + } + + if ($partial[1] !== null) { + return $this->view->partial($partial[0], $partial[1], $pages); + } + + $partial = $partial[0]; + } + + return $this->view->partial($partial, $pages); + } +} diff --git a/library/Zend/View/Helper/Partial.php b/library/Zend/View/Helper/Partial.php new file mode 100755 index 000000000..733f563b9 --- /dev/null +++ b/library/Zend/View/Helper/Partial.php @@ -0,0 +1,153 @@ +cloneView(); + if (isset($this->partialCounter)) { + $view->partialCounter = $this->partialCounter; + } + if (isset($this->partialTotalCount)) { + $view->partialTotalCount = $this->partialTotalCount; + } + + if ((null !== $module) && is_string($module)) { + require_once 'Zend/Controller/Front.php'; + $moduleDir = Zend_Controller_Front::getInstance()->getControllerDirectory($module); + if (null === $moduleDir) { + require_once 'Zend/View/Helper/Partial/Exception.php'; + $e = new Zend_View_Helper_Partial_Exception('Cannot render partial; module does not exist'); + $e->setView($this->view); + throw $e; + } + $viewsDir = dirname($moduleDir) . '/views'; + $view->addBasePath($viewsDir); + } elseif ((null == $model) && (null !== $module) + && (is_array($module) || is_object($module))) + { + $model = $module; + } + + if (!empty($model)) { + if (is_array($model)) { + $view->assign($model); + } elseif (is_object($model)) { + if (null !== ($objectKey = $this->getObjectKey())) { + $view->assign($objectKey, $model); + } elseif (method_exists($model, 'toArray')) { + $view->assign($model->toArray()); + } else { + $view->assign(get_object_vars($model)); + } + } + } + + return $view->render($name); + } + + /** + * Clone the current View + * + * @return Zend_View_Interface + */ + public function cloneView() + { + $view = clone $this->view; + $view->clearVars(); + return $view; + } + + /** + * Set object key + * + * @param string $key + * @return Zend_View_Helper_Partial + */ + public function setObjectKey($key) + { + if (null === $key) { + $this->_objectKey = null; + } else { + $this->_objectKey = (string) $key; + } + + return $this; + } + + /** + * Retrieve object key + * + * The objectKey is the variable to which an object in the iterator will be + * assigned. + * + * @return null|string + */ + public function getObjectKey() + { + return $this->_objectKey; + } +} diff --git a/library/Zend/View/Helper/Partial/Exception.php b/library/Zend/View/Helper/Partial/Exception.php new file mode 100755 index 000000000..9355fd352 --- /dev/null +++ b/library/Zend/View/Helper/Partial/Exception.php @@ -0,0 +1,39 @@ +setView($this->view); + throw $e; + } + + if (is_object($model) + && (!$model instanceof Traversable) + && method_exists($model, 'toArray') + ) { + $model = $model->toArray(); + } + + $content = ''; + // reset the counter if it's call again + $this->partialCounter = 0; + $this->partialTotalCount = count($model); + + foreach ($model as $item) { + // increment the counter variable + $this->partialCounter++; + + $content .= $this->partial($name, $module, $item); + } + + return $content; + } +} diff --git a/library/Zend/View/Helper/Placeholder.php b/library/Zend/View/Helper/Placeholder.php new file mode 100755 index 000000000..c726b401d --- /dev/null +++ b/library/Zend/View/Helper/Placeholder.php @@ -0,0 +1,87 @@ +_registry = Zend_View_Helper_Placeholder_Registry::getRegistry(); + } + + + /** + * Placeholder helper + * + * @param string $name + * @return Zend_View_Helper_Placeholder_Container_Abstract + */ + public function placeholder($name) + { + $name = (string) $name; + return $this->_registry->getContainer($name); + } + + /** + * Retrieve the registry + * + * @return Zend_View_Helper_Placeholder_Registry + */ + public function getRegistry() + { + return $this->_registry; + } +} diff --git a/library/Zend/View/Helper/Placeholder/Container.php b/library/Zend/View/Helper/Placeholder/Container.php new file mode 100755 index 000000000..10e706d3b --- /dev/null +++ b/library/Zend/View/Helper/Placeholder/Container.php @@ -0,0 +1,36 @@ +exchangeArray(array($value)); + } + + /** + * Prepend a value to the top of the container + * + * @param mixed $value + * @return void + */ + public function prepend($value) + { + $values = $this->getArrayCopy(); + array_unshift($values, $value); + $this->exchangeArray($values); + } + + /** + * Retrieve container value + * + * If single element registered, returns that element; otherwise, + * serializes to array. + * + * @return mixed + */ + public function getValue() + { + if (1 == count($this)) { + $keys = $this->getKeys(); + $key = array_shift($keys); + return $this[$key]; + } + + return $this->getArrayCopy(); + } + + /** + * Set prefix for __toString() serialization + * + * @param string $prefix + * @return Zend_View_Helper_Placeholder_Container + */ + public function setPrefix($prefix) + { + $this->_prefix = (string) $prefix; + return $this; + } + + /** + * Retrieve prefix + * + * @return string + */ + public function getPrefix() + { + return $this->_prefix; + } + + /** + * Set postfix for __toString() serialization + * + * @param string $postfix + * @return Zend_View_Helper_Placeholder_Container + */ + public function setPostfix($postfix) + { + $this->_postfix = (string) $postfix; + return $this; + } + + /** + * Retrieve postfix + * + * @return string + */ + public function getPostfix() + { + return $this->_postfix; + } + + /** + * Set separator for __toString() serialization + * + * Used to implode elements in container + * + * @param string $separator + * @return Zend_View_Helper_Placeholder_Container + */ + public function setSeparator($separator) + { + $this->_separator = (string) $separator; + return $this; + } + + /** + * Retrieve separator + * + * @return string + */ + public function getSeparator() + { + return $this->_separator; + } + + /** + * Set the indentation string for __toString() serialization, + * optionally, if a number is passed, it will be the number of spaces + * + * @param string|int $indent + * @return Zend_View_Helper_Placeholder_Container_Abstract + */ + public function setIndent($indent) + { + $this->_indent = $this->getWhitespace($indent); + return $this; + } + + /** + * Retrieve indentation + * + * @return string + */ + public function getIndent() + { + return $this->_indent; + } + + /** + * Retrieve whitespace representation of $indent + * + * @param int|string $indent + * @return string + */ + public function getWhitespace($indent) + { + if (is_int($indent)) { + $indent = str_repeat(' ', $indent); + } + + return (string) $indent; + } + + /** + * Start capturing content to push into placeholder + * + * @param int|string $type How to capture content into placeholder; append, prepend, or set + * @param null $key + * @throws Zend_View_Helper_Placeholder_Container_Exception + * @return void + */ + public function captureStart($type = Zend_View_Helper_Placeholder_Container_Abstract::APPEND, $key = null) + { + if ($this->_captureLock) { + require_once 'Zend/View/Helper/Placeholder/Container/Exception.php'; + $e = new Zend_View_Helper_Placeholder_Container_Exception('Cannot nest placeholder captures for the same placeholder'); + $e->setView($this->view); + throw $e; + } + + $this->_captureLock = true; + $this->_captureType = $type; + if ((null !== $key) && is_scalar($key)) { + $this->_captureKey = (string) $key; + } + ob_start(); + } + + /** + * End content capture + * + * @return void + */ + public function captureEnd() + { + $data = ob_get_clean(); + $key = null; + $this->_captureLock = false; + if (null !== $this->_captureKey) { + $key = $this->_captureKey; + } + switch ($this->_captureType) { + case self::SET: + if (null !== $key) { + $this[$key] = $data; + } else { + $this->exchangeArray(array($data)); + } + break; + case self::PREPEND: + if (null !== $key) { + $array = array($key => $data); + $values = $this->getArrayCopy(); + $final = $array + $values; + $this->exchangeArray($final); + } else { + $this->prepend($data); + } + break; + case self::APPEND: + default: + if (null !== $key) { + if (empty($this[$key])) { + $this[$key] = $data; + } else { + $this[$key] .= $data; + } + } else { + $this[$this->nextIndex()] = $data; + } + break; + } + } + + /** + * Get keys + * + * @return array + */ + public function getKeys() + { + $array = $this->getArrayCopy(); + return array_keys($array); + } + + /** + * Next Index + * + * as defined by the PHP manual + * @return int + */ + public function nextIndex() + { + $keys = $this->getKeys(); + if (0 == count($keys)) { + return 0; + } + + return $nextIndex = max($keys) + 1; + } + + /** + * Render the placeholder + * + * @param null $indent + * @return string + */ + public function toString($indent = null) + { + // Check items + if (0 === $this->count()) { + return ''; + } + + $indent = ($indent !== null) + ? $this->getWhitespace($indent) + : $this->getIndent(); + + $items = $this->getArrayCopy(); + $return = $indent + . $this->getPrefix() + . implode($this->getSeparator(), $items) + . $this->getPostfix(); + $return = preg_replace("/(\r\n?|\n)/", '$1' . $indent, $return); + return $return; + } + + /** + * Serialize object to string + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } +} diff --git a/library/Zend/View/Helper/Placeholder/Container/Exception.php b/library/Zend/View/Helper/Placeholder/Container/Exception.php new file mode 100755 index 000000000..da15f6e74 --- /dev/null +++ b/library/Zend/View/Helper/Placeholder/Container/Exception.php @@ -0,0 +1,39 @@ +setRegistry(Zend_View_Helper_Placeholder_Registry::getRegistry()); + $this->setContainer($this->getRegistry()->getContainer($this->_regKey)); + } + + /** + * Retrieve registry + * + * @return Zend_View_Helper_Placeholder_Registry + */ + public function getRegistry() + { + return $this->_registry; + } + + /** + * Set registry object + * + * @param Zend_View_Helper_Placeholder_Registry $registry + * @return Zend_View_Helper_Placeholder_Container_Standalone + */ + public function setRegistry(Zend_View_Helper_Placeholder_Registry $registry) + { + $this->_registry = $registry; + return $this; + } + + /** + * Set whether or not auto escaping should be used + * + * @param bool $autoEscape whether or not to auto escape output + * @return Zend_View_Helper_Placeholder_Container_Standalone + */ + public function setAutoEscape($autoEscape = true) + { + $this->_autoEscape = ($autoEscape) ? true : false; + return $this; + } + + /** + * Return whether autoEscaping is enabled or disabled + * + * return bool + */ + public function getAutoEscape() + { + return $this->_autoEscape; + } + + /** + * Escape a string + * + * @param string $string + * @return string + */ + protected function _escape($string) + { + $enc = 'UTF-8'; + if ($this->view instanceof Zend_View_Interface + && method_exists($this->view, 'getEncoding') + ) { + $enc = $this->view->getEncoding(); + } + + return htmlspecialchars((string) $string, ENT_COMPAT, $enc); + } + + /** + * Set container on which to operate + * + * @param Zend_View_Helper_Placeholder_Container_Abstract $container + * @return Zend_View_Helper_Placeholder_Container_Standalone + */ + public function setContainer(Zend_View_Helper_Placeholder_Container_Abstract $container) + { + $this->_container = $container; + return $this; + } + + /** + * Retrieve placeholder container + * + * @return Zend_View_Helper_Placeholder_Container_Abstract + */ + public function getContainer() + { + return $this->_container; + } + + /** + * Overloading: set property value + * + * @param string $key + * @param mixed $value + * @return void + */ + public function __set($key, $value) + { + $container = $this->getContainer(); + $container[$key] = $value; + } + + /** + * Overloading: retrieve property + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + $container = $this->getContainer(); + if (isset($container[$key])) { + return $container[$key]; + } + + return null; + } + + /** + * Overloading: check if property is set + * + * @param string $key + * @return bool + */ + public function __isset($key) + { + $container = $this->getContainer(); + return isset($container[$key]); + } + + /** + * Overloading: unset property + * + * @param string $key + * @return void + */ + public function __unset($key) + { + $container = $this->getContainer(); + if (isset($container[$key])) { + unset($container[$key]); + } + } + + /** + * Overload + * + * Proxy to container methods + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + $container = $this->getContainer(); + if (method_exists($container, $method)) { + $return = call_user_func_array(array($container, $method), $args); + if ($return === $container) { + // If the container is returned, we really want the current object + return $this; + } + return $return; + } + + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('Method "' . $method . '" does not exist'); + $e->setView($this->view); + throw $e; + } + + /** + * String representation + * + * @return string + */ + public function toString() + { + return $this->getContainer()->toString(); + } + + /** + * Cast to string representation + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Countable + * + * @return int + */ + public function count() + { + $container = $this->getContainer(); + return count($container); + } + + /** + * ArrayAccess: offsetExists + * + * @param string|int $offset + * @return bool + */ + public function offsetExists($offset) + { + return $this->getContainer()->offsetExists($offset); + } + + /** + * ArrayAccess: offsetGet + * + * @param string|int $offset + * @return mixed + */ + public function offsetGet($offset) + { + return $this->getContainer()->offsetGet($offset); + } + + /** + * ArrayAccess: offsetSet + * + * @param string|int $offset + * @param mixed $value + * @return void + */ + public function offsetSet($offset, $value) + { + return $this->getContainer()->offsetSet($offset, $value); + } + + /** + * ArrayAccess: offsetUnset + * + * @param string|int $offset + * @return void + */ + public function offsetUnset($offset) + { + return $this->getContainer()->offsetUnset($offset); + } + + /** + * IteratorAggregate: get Iterator + * + * @return Iterator + */ + public function getIterator() + { + return $this->getContainer()->getIterator(); + } +} diff --git a/library/Zend/View/Helper/Placeholder/Registry.php b/library/Zend/View/Helper/Placeholder/Registry.php new file mode 100755 index 000000000..b4a10c8c8 --- /dev/null +++ b/library/Zend/View/Helper/Placeholder/Registry.php @@ -0,0 +1,188 @@ +_items[$key] = new $this->_containerClass($value); + return $this->_items[$key]; + } + + /** + * Retrieve a placeholder container + * + * @param string $key + * @return Zend_View_Helper_Placeholder_Container_Abstract + */ + public function getContainer($key) + { + $key = (string) $key; + if (isset($this->_items[$key])) { + return $this->_items[$key]; + } + + $container = $this->createContainer($key); + + return $container; + } + + /** + * Does a particular container exist? + * + * @param string $key + * @return bool + */ + public function containerExists($key) + { + $key = (string) $key; + $return = array_key_exists($key, $this->_items); + return $return; + } + + /** + * Set the container for an item in the registry + * + * @param string $key + * @param Zend_View_Placeholder_Container_Abstract $container + * @return Zend_View_Placeholder_Registry + */ + public function setContainer($key, Zend_View_Helper_Placeholder_Container_Abstract $container) + { + $key = (string) $key; + $this->_items[$key] = $container; + return $this; + } + + /** + * Delete a container + * + * @param string $key + * @return bool + */ + public function deleteContainer($key) + { + $key = (string) $key; + if (isset($this->_items[$key])) { + unset($this->_items[$key]); + return true; + } + + return false; + } + + /** + * Set the container class to use + * + * @param string $name + * @return Zend_View_Helper_Placeholder_Registry + */ + public function setContainerClass($name) + { + if (!class_exists($name)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($name); + } + + $reflection = new ReflectionClass($name); + if (!$reflection->isSubclassOf(new ReflectionClass('Zend_View_Helper_Placeholder_Container_Abstract'))) { + require_once 'Zend/View/Helper/Placeholder/Registry/Exception.php'; + $e = new Zend_View_Helper_Placeholder_Registry_Exception('Invalid Container class specified'); + $e->setView($this->view); + throw $e; + } + + $this->_containerClass = $name; + return $this; + } + + /** + * Retrieve the container class + * + * @return string + */ + public function getContainerClass() + { + return $this->_containerClass; + } +} diff --git a/library/Zend/View/Helper/Placeholder/Registry/Exception.php b/library/Zend/View/Helper/Placeholder/Registry/Exception.php new file mode 100755 index 000000000..6bffa198a --- /dev/null +++ b/library/Zend/View/Helper/Placeholder/Registry/Exception.php @@ -0,0 +1,39 @@ +view->placeholder($placeholder)->captureStart(); + echo $this->view->render($script); + $this->view->placeholder($placeholder)->captureEnd(); + } +} diff --git a/library/Zend/View/Helper/ServerUrl.php b/library/Zend/View/Helper/ServerUrl.php new file mode 100755 index 000000000..c38ec8bc8 --- /dev/null +++ b/library/Zend/View/Helper/ServerUrl.php @@ -0,0 +1,148 @@ +setScheme($scheme); + + if (isset($_SERVER['HTTP_HOST']) && !empty($_SERVER['HTTP_HOST'])) { + $this->setHost($_SERVER['HTTP_HOST']); + } else if (isset($_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'])) { + $name = $_SERVER['SERVER_NAME']; + $port = $_SERVER['SERVER_PORT']; + + if (($scheme == 'http' && $port == 80) || + ($scheme == 'https' && $port == 443)) { + $this->setHost($name); + } else { + $this->setHost($name . ':' . $port); + } + } + } + + /** + * View helper entry point: + * Returns the current host's URL like http://site.com + * + * @param string|boolean $requestUri [optional] if true, the request URI + * found in $_SERVER will be appended + * as a path. If a string is given, it + * will be appended as a path. Default + * is to not append any path. + * @return string server url + */ + public function serverUrl($requestUri = null) + { + if ($requestUri === true) { + $path = $_SERVER['REQUEST_URI']; + } else if (is_string($requestUri)) { + $path = $requestUri; + } else { + $path = ''; + } + + return $this->getScheme() . '://' . $this->getHost() . $path; + } + + /** + * Returns host + * + * @return string host + */ + public function getHost() + { + return $this->_host; + } + + /** + * Sets host + * + * @param string $host new host + * @return Zend_View_Helper_ServerUrl fluent interface, returns self + */ + public function setHost($host) + { + $this->_host = $host; + return $this; + } + + /** + * Returns scheme (typically http or https) + * + * @return string scheme (typically http or https) + */ + public function getScheme() + { + return $this->_scheme; + } + + /** + * Sets scheme (typically http or https) + * + * @param string $scheme new scheme (typically http or https) + * @return Zend_View_Helper_ServerUrl fluent interface, returns self + */ + public function setScheme($scheme) + { + $this->_scheme = $scheme; + return $this; + } +} diff --git a/library/Zend/View/Helper/Translate.php b/library/Zend/View/Helper/Translate.php new file mode 100755 index 000000000..f66a560b0 --- /dev/null +++ b/library/Zend/View/Helper/Translate.php @@ -0,0 +1,180 @@ +setTranslator($translate); + } + } + + /** + * Translate a message + * You can give multiple params or an array of params. + * If you want to output another locale just set it as last single parameter + * Example 1: translate('%1\$s + %2\$s', $value1, $value2, $locale); + * Example 2: translate('%1\$s + %2\$s', array($value1, $value2), $locale); + * + * @param string $messageid Id of the message to be translated + * @return string|Zend_View_Helper_Translate Translated message + */ + public function translate($messageid = null) + { + if ($messageid === null) { + return $this; + } + + $translate = $this->getTranslator(); + $options = func_get_args(); + + array_shift($options); + $count = count($options); + $locale = null; + if ($count > 0) { + if (Zend_Locale::isLocale($options[($count - 1)], null, false) !== false) { + $locale = array_pop($options); + } + } + + if ((count($options) === 1) and (is_array($options[0]) === true)) { + $options = $options[0]; + } + + if ($translate !== null) { + $messageid = $translate->translate($messageid, $locale); + } + + if (count($options) === 0) { + return $messageid; + } + + return vsprintf($messageid, $options); + } + + /** + * Sets a translation Adapter for translation + * + * @param Zend_Translate|Zend_Translate_Adapter $translate Instance of Zend_Translate + * @throws Zend_View_Exception When no or a false instance was set + * @return Zend_View_Helper_Translate + */ + public function setTranslator($translate) + { + if ($translate instanceof Zend_Translate_Adapter) { + $this->_translator = $translate; + } else if ($translate instanceof Zend_Translate) { + $this->_translator = $translate->getAdapter(); + } else { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); + $e->setView($this->view); + throw $e; + } + + return $this; + } + + /** + * Retrieve translation object + * + * @return Zend_Translate_Adapter|null + */ + public function getTranslator() + { + if ($this->_translator === null) { + require_once 'Zend/Registry.php'; + if (Zend_Registry::isRegistered('Zend_Translate')) { + $this->setTranslator(Zend_Registry::get('Zend_Translate')); + } + } + + return $this->_translator; + } + + /** + * Set's an new locale for all further translations + * + * @param string|Zend_Locale $locale New locale to set + * @throws Zend_View_Exception When no Zend_Translate instance was set + * @return Zend_View_Helper_Translate + */ + public function setLocale($locale = null) + { + $translate = $this->getTranslator(); + if ($translate === null) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); + $e->setView($this->view); + throw $e; + } + + $translate->setLocale($locale); + return $this; + } + + /** + * Returns the set locale for translations + * + * @throws Zend_View_Exception When no Zend_Translate instance was set + * @return string|Zend_Locale + */ + public function getLocale() + { + $translate = $this->getTranslator(); + if ($translate === null) { + require_once 'Zend/View/Exception.php'; + $e = new Zend_View_Exception('You must set an instance of Zend_Translate or Zend_Translate_Adapter'); + $e->setView($this->view); + throw $e; + } + + return $translate->getLocale(); + } +} diff --git a/library/Zend/View/Helper/Url.php b/library/Zend/View/Helper/Url.php new file mode 100755 index 000000000..fbf7b690e --- /dev/null +++ b/library/Zend/View/Helper/Url.php @@ -0,0 +1,51 @@ +getRouter(); + return $router->assemble($urlOptions, $name, $reset, $encode); + } +} diff --git a/library/Zend/View/Helper/UserAgent.php b/library/Zend/View/Helper/UserAgent.php new file mode 100755 index 000000000..708ccda65 --- /dev/null +++ b/library/Zend/View/Helper/UserAgent.php @@ -0,0 +1,83 @@ +setUserAgent($userAgent); + } + return $this->getUserAgent(); + } + + /** + * Set UserAgent instance + * + * @param Zend_Http_UserAgent $userAgent + * @return Zend_View_Helper_UserAgent + */ + public function setUserAgent(Zend_Http_UserAgent $userAgent) + { + $this->_userAgent = $userAgent; + return $this; + } + + /** + * Retrieve UserAgent instance + * + * If none set, instantiates one using no configuration + * + * @return Zend_Http_UserAgent + */ + public function getUserAgent() + { + if (null === $this->_userAgent) { + require_once 'Zend/Http/UserAgent.php'; + $this->setUserAgent(new Zend_Http_UserAgent()); + } + return $this->_userAgent; + } +} diff --git a/library/Zend/View/Interface.php b/library/Zend/View/Interface.php new file mode 100755 index 000000000..496ec7108 --- /dev/null +++ b/library/Zend/View/Interface.php @@ -0,0 +1,137 @@ + value pairs to set en + * masse. + * + * @see __set() + * @param string|array $spec The assignment strategy to use (key or array of key + * => value pairs) + * @param mixed $value (Optional) If assigning a named variable, use this + * as the value. + * @return void + */ + public function assign($spec, $value = null); + + /** + * Clear all assigned variables + * + * Clears all variables assigned to Zend_View either via {@link assign()} or + * property overloading ({@link __get()}/{@link __set()}). + * + * @return void + */ + public function clearVars(); + + /** + * Processes a view script and returns the output. + * + * @param string $name The script name to process. + * @return string The script output. + */ + public function render($name); +} diff --git a/library/Zend/View/Stream.php b/library/Zend/View/Stream.php new file mode 100755 index 000000000..ae8d52419 --- /dev/null +++ b/library/Zend/View/Stream.php @@ -0,0 +1,183 @@ +_data = file_get_contents($path); + + /** + * If reading the file failed, update our local stat store + * to reflect the real stat of the file, then return on failure + */ + if ($this->_data === false) { + $this->_stat = stat($path); + return false; + } + + /** + * Convert to long-form and to + * + */ + $this->_data = preg_replace('/\<\?\=/', "_data); + $this->_data = preg_replace('/<\?(?!xml|php)/s', '_data); + + /** + * file_get_contents() won't update PHP's stat cache, so we grab a stat + * of the file to prevent additional reads should the script be + * requested again, which will make include() happy. + */ + $this->_stat = stat($path); + + return true; + } + + /** + * Included so that __FILE__ returns the appropriate info + * + * @return array + */ + public function url_stat() + { + return $this->_stat; + } + + /** + * Reads from the stream. + */ + public function stream_read($count) + { + $ret = substr($this->_data, $this->_pos, $count); + $this->_pos += strlen($ret); + return $ret; + } + + + /** + * Tells the current position in the stream. + */ + public function stream_tell() + { + return $this->_pos; + } + + + /** + * Tells if we are at the end of the stream. + */ + public function stream_eof() + { + return $this->_pos >= strlen($this->_data); + } + + + /** + * Stream statistics. + */ + public function stream_stat() + { + return $this->_stat; + } + + + /** + * Seek to a specific point in the stream. + */ + public function stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($this->_data) && $offset >= 0) { + $this->_pos = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->_pos += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($this->_data) + $offset >= 0) { + $this->_pos = strlen($this->_data) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } +} diff --git a/library/Zend/Wildfire/Channel/HttpHeaders.php b/library/Zend/Wildfire/Channel/HttpHeaders.php new file mode 100755 index 000000000..383808948 --- /dev/null +++ b/library/Zend/Wildfire/Channel/HttpHeaders.php @@ -0,0 +1,343 @@ +_protocols[$uri])) { + $this->_protocols[$uri] = $this->_initProtocol($uri); + } + + $this->_registerControllerPlugin(); + + return $this->_protocols[$uri]; + } + + /** + * Initialize a new protocol + * + * @param string $uri The URI for the protocol to be initialized + * @return object Returns the new initialized protocol instance + * @throws Zend_Wildfire_Exception + */ + protected function _initProtocol($uri) + { + switch ($uri) { + case Zend_Wildfire_Protocol_JsonStream::PROTOCOL_URI; + return new Zend_Wildfire_Protocol_JsonStream(); + } + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Tyring to initialize unknown protocol for URI "'.$uri.'".'); + } + + + /** + * Flush all data from all protocols and send all data to response headers. + * + * @return boolean Returns TRUE if data was flushed + */ + public function flush() + { + if (!$this->_protocols || !$this->isReady()) { + return false; + } + + foreach ( $this->_protocols as $protocol ) { + + $payload = $protocol->getPayload($this); + + if ($payload) { + foreach( $payload as $message ) { + + $this->getResponse()->setHeader(self::$_headerPrefix.$message[0], + $message[1], true); + } + } + } + return true; + } + + /** + * Set the index of the plugin in the controller dispatch loop plugin stack + * + * @param integer $index The index of the plugin in the stack + * @return integer The previous index. + */ + public static function setControllerPluginStackIndex($index) + { + $previous = self::$_controllerPluginStackIndex; + self::$_controllerPluginStackIndex = $index; + return $previous; + } + + /** + * Register this object as a controller plugin. + * + * @return void + */ + protected function _registerControllerPlugin() + { + $controller = Zend_Controller_Front::getInstance(); + if (!$controller->hasPlugin(get_class($this))) { + $controller->registerPlugin($this, self::$_controllerPluginStackIndex); + } + } + + + /* + * Zend_Wildfire_Channel_Interface + */ + + /** + * Determine if channel is ready. + * + * The channel is ready as long as the request and response objects are initialized, + * can send headers and the FirePHP header exists in the User-Agent. + * + * If the header does not exist in the User-Agent, no appropriate client + * is making this request and the messages should not be sent. + * + * A timing issue arises when messages are logged before the request/response + * objects are initialized. In this case we do not yet know if the client + * will be able to accept the messages. If we consequently indicate that + * the channel is not ready, these messages will be dropped which is in + * most cases not the intended behaviour. The intent is to send them at the + * end of the request when the request/response objects will be available + * for sure. + * + * If the request/response objects are not yet initialized we assume if messages are + * logged, the client will be able to receive them. As soon as the request/response + * objects are availoable and a message is logged this assumption is challenged. + * If the client cannot accept the messages any further messages are dropped + * and messages sent prior are kept but discarded when the channel is finally + * flushed at the end of the request. + * + * When the channel is flushed the $forceCheckRequest option is used to force + * a check of the request/response objects. This is the last verification to ensure + * messages are only sent when the client can accept them. + * + * @param boolean $forceCheckRequest OPTIONAL Set to TRUE if the request must be checked + * @return boolean Returns TRUE if channel is ready. + */ + public function isReady($forceCheckRequest=false) + { + if (!$forceCheckRequest + && !$this->_request + && !$this->_response + ) { + return true; + } + + if (!($this->getRequest() instanceof Zend_Controller_Request_Http)) { + return false; + } + + return ($this->getResponse()->canSendHeaders() + && (preg_match_all( + '/\s?FirePHP\/([\.\d]*)\s?/si', + $this->getRequest()->getHeader('User-Agent'), + $m + ) || + (($header = $this->getRequest()->getHeader('X-FirePHP-Version')) + && preg_match_all('/^([\.\d]*)$/si', $header, $m) + )) + ); + } + + + /* + * Zend_Controller_Plugin_Abstract + */ + + /** + * Flush messages to headers as late as possible but before headers have been sent. + * + * @return void + */ + public function dispatchLoopShutdown() + { + $this->flush(); + } + + /** + * Get the request object + * + * @return Zend_Controller_Request_Abstract + * @throws Zend_Wildfire_Exception + */ + public function getRequest() + { + if (!$this->_request) { + $controller = Zend_Controller_Front::getInstance(); + $this->setRequest($controller->getRequest()); + } + if (!$this->_request) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Request objects not initialized.'); + } + return $this->_request; + } + + /** + * Get the response object + * + * @return Zend_Controller_Response_Abstract + * @throws Zend_Wildfire_Exception + */ + public function getResponse() + { + if (!$this->_response) { + $response = Zend_Controller_Front::getInstance()->getResponse(); + if ($response) { + $this->setResponse($response); + } + } + if (!$this->_response) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Response objects not initialized.'); + } + return $this->_response; + } +} diff --git a/library/Zend/Wildfire/Channel/Interface.php b/library/Zend/Wildfire/Channel/Interface.php new file mode 100755 index 000000000..fccec351c --- /dev/null +++ b/library/Zend/Wildfire/Channel/Interface.php @@ -0,0 +1,38 @@ + 1, /* The offset in the trace which identifies the source of the message */ + 'maxTraceDepth' => 99, /* Maximum depth for stack traces */ + 'maxObjectDepth' => 10, /* The maximum depth to traverse objects when encoding */ + 'maxArrayDepth' => 20, /* The maximum depth to traverse nested arrays when encoding */ + 'includeLineNumbers' => true /* Whether to include line and file info for each message */ + ); + + /** + * Filters used to exclude object members when encoding + * @var array + */ + protected $_objectFilters = array(); + + /** + * A stack of objects used during encoding to detect recursion + * @var array + */ + protected $_objectStack = array(); + + /** + * Create singleton instance. + * + * @param string $class OPTIONAL Subclass of Zend_Wildfire_Plugin_FirePhp + * @return Zend_Wildfire_Plugin_FirePhp Returns the singleton Zend_Wildfire_Plugin_FirePhp instance + * @throws Zend_Wildfire_Exception + */ + public static function init($class = null) + { + if (self::$_instance !== null) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Singleton instance of Zend_Wildfire_Plugin_FirePhp already exists!'); + } + if ($class !== null) { + if (!is_string($class)) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Third argument is not a class string'); + } + + if (!class_exists($class)) { + require_once 'Zend/Loader.php'; + Zend_Loader::loadClass($class); + } + self::$_instance = new $class(); + if (!self::$_instance instanceof Zend_Wildfire_Plugin_FirePhp) { + self::$_instance = null; + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Invalid class to third argument. Must be subclass of Zend_Wildfire_Plugin_FirePhp.'); + } + } else { + self::$_instance = new self(); + } + + return self::$_instance; + } + + /** + * Constructor + * @return void + */ + protected function __construct() + { + $this->_channel = Zend_Wildfire_Channel_HttpHeaders::getInstance(); + $this->_channel->getProtocol(self::PROTOCOL_URI)->registerPlugin($this); + } + + /** + * Get or create singleton instance + * + * @param bool $skipCreate True if an instance should not be created + * @return Zend_Wildfire_Plugin_FirePhp + */ + public static function getInstance($skipCreate=false) + { + if (self::$_instance===null && $skipCreate!==true) { + return self::init(); + } + return self::$_instance; + } + + /** + * Destroys the singleton instance + * + * Primarily used for testing. + * + * @return void + */ + public static function destroyInstance() + { + self::$_instance = null; + } + + /** + * Enable or disable sending of messages to user-agent. + * If disabled all headers to be sent will be removed. + * + * @param boolean $enabled Set to TRUE to enable sending of messages. + * @return boolean The previous value. + */ + public function setEnabled($enabled) + { + $previous = $this->_enabled; + $this->_enabled = $enabled; + if (!$this->_enabled) { + $this->_messages = array(); + $this->_channel->getProtocol(self::PROTOCOL_URI)->clearMessages($this); + } + return $previous; + } + + /** + * Determine if logging to user-agent is enabled. + * + * @return boolean Returns TRUE if logging is enabled. + */ + public function getEnabled() + { + return $this->_enabled; + } + + /** + * Set a single option + * + * @param string $key The name of the option + * @param mixed $value The value of the option + * @return mixed The previous value of the option + */ + public function setOption($key, $value) + { + if (!array_key_exists($key,$this->_options)) { + throw new Zend_Wildfire_Exception('Option with name "'.$key.'" does not exist!'); + } + $previous = $this->_options[$key]; + $this->_options[$key] = $value; + return $previous; + } + + /** + * Retrieve a single option + * + * @param string $key The name of the option + * @return mixed The value of the option + */ + public function getOption($key) + { + if (!array_key_exists($key,$this->_options)) { + throw new Zend_Wildfire_Exception('Option with name "'.$key.'" does not exist!'); + } + return $this->_options[$key]; + } + + /** + * Retrieve all options + * + * @return array All options + */ + public function getOptions() + { + return $this->_options; + } + + /** + * Specify a filter to be used when encoding an object + * + * Filters are used to exclude object members. + * + * @param string $Class The class name of the object + * @param array $Filter An array of members to exclude + * @return void + */ + public function setObjectFilter($class, $filter) { + $this->_objectFilters[$class] = $filter; + } + + /** + * Starts a group in the Firebug Console + * + * @param string $title The title of the group + * @param array $options OPTIONAL Setting 'Collapsed' to true will initialize group collapsed instead of expanded + * @return TRUE if the group instruction was added to the response headers or buffered. + */ + public static function group($title, $options=array()) + { + return self::send(null, $title, self::GROUP_START, $options); + } + + /** + * Ends a group in the Firebug Console + * + * @return TRUE if the group instruction was added to the response headers or buffered. + */ + public static function groupEnd() + { + return self::send(null, null, self::GROUP_END); + } + + /** + * Logs variables to the Firebug Console + * via HTTP response headers and the FirePHP Firefox Extension. + * + * @param mixed $var The variable to log. + * @param string $label OPTIONAL Label to prepend to the log event. + * @param string $style OPTIONAL Style of the log event. + * @param array $options OPTIONAL Options to change how messages are processed and sent + * @return boolean Returns TRUE if the variable was added to the response headers or buffered. + * @throws Zend_Wildfire_Exception + */ + public static function send($var, $label=null, $style=null, $options=array()) + { + $firephp = self::getInstance(); + + if (!$firephp->getEnabled()) { + return false; + } + + if ($var instanceof Zend_Wildfire_Plugin_FirePhp_Message) { + + if ($var->getBuffered()) { + if (!in_array($var, self::$_instance->_messages)) { + self::$_instance->_messages[] = $var; + } + return true; + } + + if ($var->getDestroy()) { + return false; + } + + $style = $var->getStyle(); + $label = $var->getLabel(); + $options = $var->getOptions(); + $var = $var->getMessage(); + } + + if (!self::$_instance->_channel->isReady()) { + return false; + } + + foreach ($options as $name => $value) { + if ($value===null) { + unset($options[$name]); + } + } + $options = array_merge($firephp->getOptions(), $options); + + $trace = null; + + $skipFinalEncode = false; + + $meta = array(); + $meta['Type'] = $style; + + if ($var instanceof Exception) { + + $eTrace = $var->getTrace(); + $eTrace = array_splice($eTrace, 0, $options['maxTraceDepth']); + + $var = array('Class'=>get_class($var), + 'Message'=>$var->getMessage(), + 'File'=>$var->getFile(), + 'Line'=>$var->getLine(), + 'Type'=>'throw', + 'Trace'=>$firephp->_encodeTrace($eTrace)); + + $meta['Type'] = self::EXCEPTION; + + $skipFinalEncode = true; + + } else + if ($meta['Type']==self::TRACE) { + + if (!$label && $var) { + $label = $var; + $var = null; + } + + if (!$trace) { + $trace = $firephp->_getStackTrace(array_merge($options, + array('maxTraceDepth'=>$options['maxTraceDepth']+1))); + } + + $var = array('Class'=>$trace[0]['class'], + 'Type'=>$trace[0]['type'], + 'Function'=>$trace[0]['function'], + 'Message'=>$label, + 'File'=>isset($trace[0]['file'])?$trace[0]['file']:'', + 'Line'=>isset($trace[0]['line'])?$trace[0]['line']:'', + 'Args'=>isset($trace[0]['args'])?$firephp->_encodeObject($trace[0]['args']):'', + 'Trace'=>$firephp->_encodeTrace(array_splice($trace,1))); + + $skipFinalEncode = true; + + } else + if ($meta['Type']==self::TABLE) { + + $var = $firephp->_encodeTable($var); + + $skipFinalEncode = true; + + } else { + if ($meta['Type']===null) { + $meta['Type'] = self::LOG; + } + } + + if ($label!=null) { + $meta['Label'] = $label; + } + + switch ($meta['Type']) { + case self::LOG: + case self::INFO: + case self::WARN: + case self::ERROR: + case self::EXCEPTION: + case self::TRACE: + case self::TABLE: + case self::DUMP: + case self::GROUP_START: + case self::GROUP_END: + break; + default: + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Log style "'.$meta['Type'].'" not recognized!'); + break; + } + + if ($meta['Type'] != self::DUMP && $options['includeLineNumbers']) { + if (!isset($meta['File']) || !isset($meta['Line'])) { + + if (!$trace) { + $trace = $firephp->_getStackTrace(array_merge($options, + array('maxTraceDepth'=>$options['maxTraceDepth']+1))); + } + + $meta['File'] = isset($trace[0]['file'])?$trace[0]['file']:''; + $meta['Line'] = isset($trace[0]['line'])?$trace[0]['line']:''; + + } + } else { + unset($meta['File']); + unset($meta['Line']); + } + + if ($meta['Type'] == self::GROUP_START) { + if (isset($options['Collapsed'])) { + $meta['Collapsed'] = ($options['Collapsed'])?'true':'false'; + } + } + + if ($meta['Type'] == self::DUMP) { + + return $firephp->_recordMessage(self::STRUCTURE_URI_DUMP, + array('key'=>$meta['Label'], + 'data'=>$var), + $skipFinalEncode); + + } else { + + return $firephp->_recordMessage(self::STRUCTURE_URI_FIREBUGCONSOLE, + array('data'=>$var, + 'meta'=>$meta), + $skipFinalEncode); + } + } + + /** + * Gets a stack trace + * + * @param array $options Options to change how the stack trace is returned + * @return array The stack trace + */ + protected function _getStackTrace($options) + { + $trace = debug_backtrace(); + + $trace = array_splice($trace, $options['traceOffset']); + + if (!count($trace)) { + return $trace; + } + + if (isset($options['fixZendLogOffsetIfApplicable']) && $options['fixZendLogOffsetIfApplicable']) { + if (count($trace) >=3 && + isset($trace[0]['file']) && substr($trace[0]['file'], -7, 7)=='Log.php' && + isset($trace[1]['function']) && $trace[1]['function']=='__call') { + + $spliceOffset = 2; + //Debug backtrace changed in PHP 7.0.0 + if (version_compare(PHP_VERSION, '7.0.0', '>=')) { + $spliceOffset = 1; + } + $trace = array_splice($trace, $spliceOffset); + } + } + + return array_splice($trace, 0, $options['maxTraceDepth']); + } + + /** + * Record a message with the given data in the given structure + * + * @param string $structure The structure to be used for the data + * @param array $data The data to be recorded + * @param boolean $skipEncode TRUE if variable encoding should be skipped + * @return boolean Returns TRUE if message was recorded + * @throws Zend_Wildfire_Exception + */ + protected function _recordMessage($structure, $data, $skipEncode=false) + { + switch($structure) { + + case self::STRUCTURE_URI_DUMP: + + if (!isset($data['key'])) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('You must supply a key.'); + } + if (!array_key_exists('data',$data)) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('You must supply data.'); + } + + $value = $data['data']; + if (!$skipEncode) { + $value = $this->_encodeObject($data['data']); + } + + return $this->_channel->getProtocol(self::PROTOCOL_URI)-> + recordMessage($this, + $structure, + array($data['key']=>$value)); + + case self::STRUCTURE_URI_FIREBUGCONSOLE: + + if (!isset($data['meta']) || + !is_array($data['meta']) || + !array_key_exists('Type',$data['meta'])) { + + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('You must supply a "Type" in the meta information.'); + } + if (!array_key_exists('data',$data)) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('You must supply data.'); + } + + $value = $data['data']; + if (!$skipEncode) { + $value = $this->_encodeObject($data['data']); + } + + return $this->_channel->getProtocol(self::PROTOCOL_URI)-> + recordMessage($this, + $structure, + array($data['meta'], + $value)); + + default: + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Structure of name "'.$structure.'" is not recognized.'); + break; + } + return false; + } + + /** + * Encodes a table by encoding each row and column with _encodeObject() + * + * @param array $Table The table to be encoded + * @return array + */ + protected function _encodeTable($table) + { + if (!$table) { + return $table; + } + for ($i=0 ; $i_encodeObject($table[$i][$j]); + } + } + } + return $table; + } + + /** + * Encodes a trace by encoding all "args" with _encodeObject() + * + * @param array $Trace The trace to be encoded + * @return array The encoded trace + */ + protected function _encodeTrace($trace) + { + if (!$trace) { + return $trace; + } + for ($i=0 ; $i_encodeObject($trace[$i]['args']); + } + } + return $trace; + } + + /** + * Encode an object by generating an array containing all object members. + * + * All private and protected members are included. Some meta info about + * the object class is added. + * + * @param mixed $object The object/array/value to be encoded + * @return array The encoded object + */ + protected function _encodeObject($object, $objectDepth = 1, $arrayDepth = 1) + { + $return = array(); + + if (is_resource($object)) { + + return '** '.(string)$object.' **'; + + } else + if (is_object($object)) { + + if ($objectDepth > $this->_options['maxObjectDepth']) { + return '** Max Object Depth ('.$this->_options['maxObjectDepth'].') **'; + } + + foreach ($this->_objectStack as $refVal) { + if ($refVal === $object) { + return '** Recursion ('.get_class($object).') **'; + } + } + array_push($this->_objectStack, $object); + + $return['__className'] = $class = get_class($object); + + $reflectionClass = new ReflectionClass($class); + $properties = array(); + foreach ( $reflectionClass->getProperties() as $property) { + $properties[$property->getName()] = $property; + } + + $members = (array)$object; + + foreach ($properties as $just_name => $property) { + + $name = $raw_name = $just_name; + + if ($property->isStatic()) { + $name = 'static:'.$name; + } + if ($property->isPublic()) { + $name = 'public:'.$name; + } else + if ($property->isPrivate()) { + $name = 'private:'.$name; + $raw_name = "\0".$class."\0".$raw_name; + } else + if ($property->isProtected()) { + $name = 'protected:'.$name; + $raw_name = "\0".'*'."\0".$raw_name; + } + + if (!(isset($this->_objectFilters[$class]) + && is_array($this->_objectFilters[$class]) + && in_array($just_name,$this->_objectFilters[$class]))) { + + if (array_key_exists($raw_name,$members) + && !$property->isStatic()) { + + $return[$name] = $this->_encodeObject($members[$raw_name], $objectDepth + 1, 1); + + } else { + if (method_exists($property,'setAccessible')) { + $property->setAccessible(true); + $return[$name] = $this->_encodeObject($property->getValue($object), $objectDepth + 1, 1); + } else + if ($property->isPublic()) { + $return[$name] = $this->_encodeObject($property->getValue($object), $objectDepth + 1, 1); + } else { + $return[$name] = '** Need PHP 5.3 to get value **'; + } + } + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + + // Include all members that are not defined in the class + // but exist in the object + foreach($members as $just_name => $value) { + + $name = $raw_name = $just_name; + + if ($name{0} == "\0") { + $parts = explode("\0", $name); + $name = $parts[2]; + } + if (!isset($properties[$name])) { + $name = 'undeclared:'.$name; + + if (!(isset($this->objectFilters[$class]) + && is_array($this->objectFilters[$class]) + && in_array($just_name,$this->objectFilters[$class]))) { + + $return[$name] = $this->_encodeObject($value, $objectDepth + 1, 1); + } else { + $return[$name] = '** Excluded by Filter **'; + } + } + } + + array_pop($this->_objectStack); + + } elseif (is_array($object)) { + + if ($arrayDepth > $this->_options['maxArrayDepth']) { + return '** Max Array Depth ('.$this->_options['maxArrayDepth'].') **'; + } + + foreach ($object as $key => $val) { + + // Encoding the $GLOBALS PHP array causes an infinite loop + // if the recursion is not reset here as it contains + // a reference to itself. This is the only way I have come up + // with to stop infinite recursion in this case. + if ($key=='GLOBALS' + && is_array($val) + && array_key_exists('GLOBALS',$val)) { + + $val['GLOBALS'] = '** Recursion (GLOBALS) **'; + } + $return[$key] = $this->_encodeObject($val, 1, $arrayDepth + 1); + } + } else { + return $object; + } + return $return; + } + + /* + * Zend_Wildfire_Plugin_Interface + */ + + /** + * Get the unique indentifier for this plugin. + * + * @return string Returns the URI of the plugin. + */ + public function getUri() + { + return self::PLUGIN_URI; + } + + /** + * Flush any buffered data. + * + * @param string $protocolUri The URI of the protocol that should be flushed to + * @return void + */ + public function flushMessages($protocolUri) + { + if (!$this->_messages || $protocolUri!=self::PROTOCOL_URI) { + return; + } + + foreach( $this->_messages as $message ) { + if (!$message->getDestroy()) { + $this->send($message->getMessage(), + $message->getLabel(), + $message->getStyle(), + $message->getOptions()); + } + } + + $this->_messages = array(); + } +} diff --git a/library/Zend/Wildfire/Plugin/FirePhp/Message.php b/library/Zend/Wildfire/Plugin/FirePhp/Message.php new file mode 100755 index 000000000..78e98005a --- /dev/null +++ b/library/Zend/Wildfire/Plugin/FirePhp/Message.php @@ -0,0 +1,246 @@ + null, /* The offset in the trace which identifies the source of the message */ + 'includeLineNumbers' => null /* Whether to include line and file info for this message */ + ); + + /** + * Creates a new message with the given style and message + * + * @param string $style Style of the message. + * @param mixed $message The message + * @return void + */ + function __construct($style, $message) + { + $this->_style = $style; + $this->_message = $message; + $this->_ruid = md5(microtime().mt_rand()); + } + + /** + * Set the label of the message + * + * @param string $label The label to be set + * @return void + */ + public function setLabel($label) + { + $this->_label = $label; + } + + /** + * Get the label of the message + * + * @return string The label of the message + */ + public function getLabel() + { + return $this->_label; + } + + /** + * Enable or disable message buffering + * + * If a message is buffered it can be updated for the duration of the + * request and is only flushed at the end of the request. + * + * @param boolean $buffered TRUE to enable buffering FALSE otherwise + * @return boolean Returns previous buffering value + */ + public function setBuffered($buffered) + { + $previous = $this->_buffered; + $this->_buffered = $buffered; + return $previous; + } + + /** + * Determine if buffering is enabled or disabled + * + * @return boolean Returns TRUE if buffering is enabled, FALSE otherwise. + */ + public function getBuffered() + { + return $this->_buffered; + } + + /** + * Destroy the message to prevent delivery + * + * @param boolean $destroy TRUE to destroy FALSE otherwise + * @return boolean Returns previous destroy value + */ + public function setDestroy($destroy) + { + $previous = $this->_destroy; + $this->_destroy = $destroy; + return $previous; + } + + /** + * Determine if message should be destroyed + * + * @return boolean Returns TRUE if message should be destroyed, FALSE otherwise. + */ + public function getDestroy() + { + return $this->_destroy; + } + + /** + * Set the style of the message + * + * @return void + */ + public function setStyle($style) + { + $this->_style = $style; + } + + /** + * Get the style of the message + * + * @return string The style of the message + */ + public function getStyle() + { + return $this->_style; + } + + /** + * Set the actual message to be sent in its final format. + * + * @return void + */ + public function setMessage($message) + { + $this->_message = $message; + } + + /** + * Get the actual message to be sent in its final format. + * + * @return mixed Returns the message to be sent. + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set a single option + * + * @param string $key The name of the option + * @param mixed $value The value of the option + * @return mixed The previous value of the option + */ + public function setOption($key, $value) + { + if(!array_key_exists($key,$this->_options)) { + throw new Zend_Wildfire_Exception('Option with name "'.$key.'" does not exist!'); + } + $previous = $this->_options[$key]; + $this->_options[$key] = $value; + return $previous; + } + + /** + * Retrieve a single option + * + * @param string $key The name of the option + * @return mixed The value of the option + */ + public function getOption($key) + { + if(!array_key_exists($key,$this->_options)) { + throw new Zend_Wildfire_Exception('Option with name "'.$key.'" does not exist!'); + } + return $this->_options[$key]; + } + + /** + * Retrieve all options + * + * @return array All options + */ + public function getOptions() + { + return $this->_options; + } +} + diff --git a/library/Zend/Wildfire/Plugin/FirePhp/TableMessage.php b/library/Zend/Wildfire/Plugin/FirePhp/TableMessage.php new file mode 100755 index 000000000..c4366df8d --- /dev/null +++ b/library/Zend/Wildfire/Plugin/FirePhp/TableMessage.php @@ -0,0 +1,165 @@ +setLabel($label); + } + + /** + * Set the table header + * + * @param array $header The header columns + * @return void + */ + public function setHeader($header) + { + $this->_header = $header; + } + + /** + * Append a row to the end of the table. + * + * @param array $row An array of column values representing a row. + * @return void + */ + public function addRow($row) + { + $this->_rows[] = $row; + } + + /** + * Get the actual message to be sent in its final format. + * + * @return mixed Returns the message to be sent. + */ + public function getMessage() + { + $table = $this->_rows; + if($this->_header) { + array_unshift($table,$this->_header); + } + return $table; + } + + /** + * Returns the row at the given index + * + * @param integer $index The index of the row + * @return array Returns the row + * @throws Zend_Wildfire_Exception + */ + public function getRowAt($index) + { + $count = $this->getRowCount(); + + if($index < 0 || $index > $count-1) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Row index('.$index.') out of bounds('.$count.')!'); + } + + return $this->_rows[$index]; + } + + /** + * Sets the row on the given index to a new row + * + * @param integer $index The index of the row + * @param array $row The new data for the row + * @throws Zend_Wildfire_Exception + */ + public function setRowAt($index, $row) + { + $count = $this->getRowCount(); + + if($index < 0 || $index > $count-1) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Row index('.$index.') out of bounds('.$count.')!'); + } + + $this->_rows[$index] = $row; + } + + /** + * Returns the number of rows + * + * @return integer + */ + public function getRowCount() + { + return count($this->_rows); + } + + /** + * Returns the last row of the table + * + * @return array Returns the last row + * @throws Zend_Wildfire_Exception + */ + public function getLastRow() + { + $count = $this->getRowCount(); + + if($count==0) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Cannot get last row as no rows exist!'); + } + + return $this->_rows[$count-1]; + } +} diff --git a/library/Zend/Wildfire/Plugin/Interface.php b/library/Zend/Wildfire/Plugin/Interface.php new file mode 100755 index 000000000..2943ca8e8 --- /dev/null +++ b/library/Zend/Wildfire/Plugin/Interface.php @@ -0,0 +1,48 @@ +_plugins)) { + return false; + } + $this->_plugins[] = $plugin; + return true; + } + + /** + * Record a message with the given data in the given structure + * + * @param Zend_Wildfire_Plugin_Interface $plugin The plugin recording the message + * @param string $structure The structure to be used for the data + * @param array $data The data to be recorded + * @return boolean Returns TRUE if message was recorded + */ + public function recordMessage(Zend_Wildfire_Plugin_Interface $plugin, $structure, $data) + { + if(!isset($this->_messages[$structure])) { + $this->_messages[$structure] = array(); + } + + $uri = $plugin->getUri(); + + if(!isset($this->_messages[$structure][$uri])) { + $this->_messages[$structure][$uri] = array(); + } + + $this->_messages[$structure][$uri][] = $this->_encode($data); + return true; + } + + /** + * Remove all qued messages + * + * @param Zend_Wildfire_Plugin_Interface $plugin The plugin for which to clear messages + * @return boolean Returns TRUE if messages were present + */ + public function clearMessages(Zend_Wildfire_Plugin_Interface $plugin) + { + $uri = $plugin->getUri(); + + $present = false; + foreach ($this->_messages as $structure => $messages) { + + if(!isset($this->_messages[$structure][$uri])) { + continue; + } + + $present = true; + + unset($this->_messages[$structure][$uri]); + + if (!$this->_messages[$structure]) { + unset($this->_messages[$structure]); + } + } + return $present; + } + + /** + * Get all qued messages + * + * @return mixed Returns qued messages or FALSE if no messages are qued + */ + public function getMessages() + { + if (!$this->_messages) { + return false; + } + return $this->_messages; + } + + /** + * Use the JSON encoding scheme for the value specified + * + * @param mixed $value The value to be encoded + * @return string The encoded value + */ + protected function _encode($value) + { + return Zend_Json::encode($value, true, array('silenceCyclicalExceptions'=>true)); + } + + /** + * Retrieves all formatted data ready to be sent by the channel. + * + * @param Zend_Wildfire_Channel_Interface $channel The instance of the channel that will be transmitting the data + * @return mixed Returns the data to be sent by the channel. + * @throws Zend_Wildfire_Exception + */ + public function getPayload(Zend_Wildfire_Channel_Interface $channel) + { + if (!$channel instanceof Zend_Wildfire_Channel_HttpHeaders) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('The '.get_class($channel).' channel is not supported by the '.get_class($this).' protocol.'); + } + + if ($this->_plugins) { + foreach ($this->_plugins as $plugin) { + $plugin->flushMessages(self::PROTOCOL_URI); + } + } + + if (!$this->_messages) { + return false; + } + + $protocol_index = 1; + $structure_index = 1; + $plugin_index = 1; + $message_index = 1; + + $payload = array(); + + $payload[] = array('Protocol-'.$protocol_index, self::PROTOCOL_URI); + + foreach ($this->_messages as $structure_uri => $plugin_messages ) { + + $payload[] = array($protocol_index.'-Structure-'.$structure_index, $structure_uri); + + foreach ($plugin_messages as $plugin_uri => $messages ) { + + $payload[] = array($protocol_index.'-Plugin-'.$plugin_index, $plugin_uri); + + foreach ($messages as $message) { + + $parts = explode("\n",chunk_split($message, 5000, "\n")); + + for ($i=0 ; $i2) { + $msg = (($i==0)?strlen($message):'') + . '|' . $part . '|' + . (($i 99999) { + require_once 'Zend/Wildfire/Exception.php'; + throw new Zend_Wildfire_Exception('Maximum number (99,999) of messages reached!'); + } + } + } + } + $plugin_index++; + } + $structure_index++; + } + + return $payload; + } + +} + diff --git a/library/Zend/Xml/Exception.php b/library/Zend/Xml/Exception.php new file mode 100755 index 000000000..b58c24951 --- /dev/null +++ b/library/Zend/Xml/Exception.php @@ -0,0 +1,36 @@ + 0) { + return true; + } + return false; + } + + /** + * Scan XML string for potential XXE and XEE attacks + * + * @param string $xml + * @param DomDocument $dom + * @throws Zend_Xml_Exception + * @return SimpleXMLElement|DomDocument|boolean + */ + public static function scan($xml, DOMDocument $dom = null) + { + // If running with PHP-FPM we perform an heuristic scan + // We cannot use libxml_disable_entity_loader because of this bug + // @see https://bugs.php.net/bug.php?id=64938 + if (self::isPhpFpm()) { + self::heuristicScan($xml); + } + + if (null === $dom) { + $simpleXml = true; + $dom = new DOMDocument(); + } + + if (!self::isPhpFpm()) { + $loadEntities = libxml_disable_entity_loader(true); + $useInternalXmlErrors = libxml_use_internal_errors(true); + } + + // Load XML with network access disabled (LIBXML_NONET) + // error disabled with @ for PHP-FPM scenario + set_error_handler(array('Zend_Xml_Security', 'loadXmlErrorHandler'), E_WARNING); + + $result = $dom->loadXml($xml, LIBXML_NONET); + restore_error_handler(); + + if (!$result) { + // Entity load to previous setting + if (!self::isPhpFpm()) { + libxml_disable_entity_loader($loadEntities); + libxml_use_internal_errors($useInternalXmlErrors); + } + return false; + } + + // Scan for potential XEE attacks using ENTITY, if not PHP-FPM + if (!self::isPhpFpm()) { + foreach ($dom->childNodes as $child) { + if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) { + if ($child->entities->length > 0) { + require_once 'Exception.php'; + throw new Zend_Xml_Exception(self::ENTITY_DETECT); + } + } + } + } + + // Entity load to previous setting + if (!self::isPhpFpm()) { + libxml_disable_entity_loader($loadEntities); + libxml_use_internal_errors($useInternalXmlErrors); + } + + if (isset($simpleXml)) { + $result = simplexml_import_dom($dom); + if (!$result instanceof SimpleXMLElement) { + return false; + } + return $result; + } + return $dom; + } + + /** + * Scan XML file for potential XXE/XEE attacks + * + * @param string $file + * @param DOMDocument $dom + * @throws Zend_Xml_Exception + * @return SimpleXMLElement|DomDocument + */ + public static function scanFile($file, DOMDocument $dom = null) + { + if (!file_exists($file)) { + require_once 'Exception.php'; + throw new Zend_Xml_Exception( + "The file $file specified doesn't exist" + ); + } + return self::scan(file_get_contents($file), $dom); + } + + /** + * Return true if PHP is running with PHP-FPM + * + * This method is mainly used to determine whether or not heuristic checks + * (vs libxml checks) should be made, due to threading issues in libxml; + * under php-fpm, threading becomes a concern. + * + * However, PHP versions 5.5.22+ and 5.6.6+ contain a patch to the + * libxml support in PHP that makes the libxml checks viable; in such + * versions, this method will return false to enforce those checks, which + * are more strict and accurate than the heuristic checks. + * + * @return boolean + */ + public static function isPhpFpm() + { + $isVulnerableVersion = ( + version_compare(PHP_VERSION, '5.5.22', 'lt') + || ( + version_compare(PHP_VERSION, '5.6', 'gte') + && version_compare(PHP_VERSION, '5.6.6', 'lt') + ) + ); + + if (substr(php_sapi_name(), 0, 3) === 'fpm' && $isVulnerableVersion) { + return true; + } + return false; + } + + /** + * Determine and return the string(s) to use for the $generator) { + $prefix = call_user_func($generator, '<' . '?xml'); + if (0 === strncmp($xml, $prefix, strlen($prefix))) { + return $encoding; + } + } + + // Fallback + return 'UTF-8'; + } + + /** + * Attempt to detect the specified XML encoding. + * + * Using the file's encoding, determines if an "encoding" attribute is + * present and well-formed in the XML declaration; if so, it returns a + * list with both the ASCII representation of that declaration and the + * original file encoding. + * + * If not, a list containing only the provided file encoding is returned. + * + * @param string $xml + * @param string $fileEncoding + * @return string[] Potential XML encodings + */ + protected static function detectXmlEncoding($xml, $fileEncoding) + { + $encodingMap = self::getAsciiEncodingMap(); + $generator = $encodingMap[$fileEncoding]; + $encAttr = call_user_func($generator, 'encoding="'); + $quote = call_user_func($generator, '"'); + $close = call_user_func($generator, '>'); + + $closePos = strpos($xml, $close); + if (false === $closePos) { + return array($fileEncoding); + } + + $encPos = strpos($xml, $encAttr); + if (false === $encPos + || $encPos > $closePos + ) { + return array($fileEncoding); + } + + $encPos += strlen($encAttr); + $quotePos = strpos($xml, $quote, $encPos); + if (false === $quotePos) { + return array($fileEncoding); + } + + $encoding = self::substr($xml, $encPos, $quotePos); + return array( + // Following line works because we're only supporting 8-bit safe encodings at this time. + str_replace('\0', '', $encoding), // detected encoding + $fileEncoding, // file encoding + ); + } + + /** + * Return a list of BOM maps. + * + * Returns a list of common encoding -> BOM maps, along with the character + * length to compare against. + * + * @link https://en.wikipedia.org/wiki/Byte_order_mark + * @return array + */ + protected static function getBomMap() + { + return array( + array( + 'encoding' => 'UTF-32BE', + 'bom' => pack('CCCC', 0x00, 0x00, 0xfe, 0xff), + 'length' => 4, + ), + array( + 'encoding' => 'UTF-32LE', + 'bom' => pack('CCCC', 0xff, 0xfe, 0x00, 0x00), + 'length' => 4, + ), + array( + 'encoding' => 'GB-18030', + 'bom' => pack('CCCC', 0x84, 0x31, 0x95, 0x33), + 'length' => 4, + ), + array( + 'encoding' => 'UTF-16BE', + 'bom' => pack('CC', 0xfe, 0xff), + 'length' => 2, + ), + array( + 'encoding' => 'UTF-16LE', + 'bom' => pack('CC', 0xff, 0xfe), + 'length' => 2, + ), + array( + 'encoding' => 'UTF-8', + 'bom' => pack('CCC', 0xef, 0xbb, 0xbf), + 'length' => 3, + ), + ); + } + + /** + * Return a map of encoding => generator pairs. + * + * Returns a map of encoding => generator pairs, where the generator is a + * callable that accepts a string and returns the appropriate byte order + * sequence of that string for the encoding. + * + * @return array + */ + protected static function getAsciiEncodingMap() + { + return array( + 'UTF-32BE' => array(__CLASS__, 'encodeToUTF32BE'), + 'UTF-32LE' => array(__CLASS__, 'encodeToUTF32LE'), + 'UTF-32odd1' => array(__CLASS__, 'encodeToUTF32odd1'), + 'UTF-32odd2' => array(__CLASS__, 'encodeToUTF32odd2'), + 'UTF-16BE' => array(__CLASS__, 'encodeToUTF16BE'), + 'UTF-16LE' => array(__CLASS__, 'encodeToUTF16LE'), + 'UTF-8' => array(__CLASS__, 'encodeToUTF8'), + 'GB-18030' => array(__CLASS__, 'encodeToUTF8'), + ); + } + + /** + * Binary-safe substr. + * + * substr() is not binary-safe; this method loops by character to ensure + * multi-byte characters are aggregated correctly. + * + * @param string $string + * @param int $start + * @param int $end + * @return string + */ + protected static function substr($string, $start, $end) + { + $substr = ''; + for ($i = $start; $i < $end; $i += 1) { + $substr .= $string[$i]; + } + return $substr; + } + + /** + * Generate an entity comparison based on the given encoding. + * + * This patch is internal only, and public only so it can be used as a + * callable to pass to array_map. + * + * @internal + * @param string $encoding + * @return string + */ + public static function generateEntityComparison($encoding) + { + $encodingMap = self::getAsciiEncodingMap(); + $generator = isset($encodingMap[$encoding]) ? $encodingMap[$encoding] : $encodingMap['UTF-8']; + return call_user_func($generator, '_httpClient = new Zend_Http_Client(); + } else { + $this->_httpClient = $httpClient; + } + + $this->_introspector = new Zend_XmlRpc_Client_ServerIntrospection($this); + $this->_serverAddress = $server; + } + + + /** + * Sets the HTTP client object to use for connecting the XML-RPC server. + * + * @param Zend_Http_Client $httpClient + * @return Zend_Http_Client + */ + public function setHttpClient(Zend_Http_Client $httpClient) + { + return $this->_httpClient = $httpClient; + } + + + /** + * Gets the HTTP client object. + * + * @return Zend_Http_Client + */ + public function getHttpClient() + { + return $this->_httpClient; + } + + + /** + * Sets the object used to introspect remote servers + * + * @param Zend_XmlRpc_Client_ServerIntrospection + * @return Zend_XmlRpc_Client_ServerIntrospection + */ + public function setIntrospector(Zend_XmlRpc_Client_ServerIntrospection $introspector) + { + return $this->_introspector = $introspector; + } + + + /** + * Gets the introspection object. + * + * @return Zend_XmlRpc_Client_ServerIntrospection + */ + public function getIntrospector() + { + return $this->_introspector; + } + + + /** + * The request of the last method call + * + * @return Zend_XmlRpc_Request + */ + public function getLastRequest() + { + return $this->_lastRequest; + } + + + /** + * The response received from the last method call + * + * @return Zend_XmlRpc_Response + */ + public function getLastResponse() + { + return $this->_lastResponse; + } + + + /** + * Returns a proxy object for more convenient method calls + * + * @param string $namespace Namespace to proxy or empty string for none + * @return Zend_XmlRpc_Client_ServerProxy + */ + public function getProxy($namespace = '') + { + if (empty($this->_proxyCache[$namespace])) { + $proxy = new Zend_XmlRpc_Client_ServerProxy($this, $namespace); + $this->_proxyCache[$namespace] = $proxy; + } + return $this->_proxyCache[$namespace]; + } + + /** + * Set skip system lookup flag + * + * @param bool $flag + * @return Zend_XmlRpc_Client + */ + public function setSkipSystemLookup($flag = true) + { + $this->_skipSystemLookup = (bool) $flag; + return $this; + } + + /** + * Skip system lookup when determining if parameter should be array or struct? + * + * @return bool + */ + public function skipSystemLookup() + { + return $this->_skipSystemLookup; + } + + /** + * Perform an XML-RPC request and return a response. + * + * @param Zend_XmlRpc_Request $request + * @param null|Zend_XmlRpc_Response $response + * @return void + * @throws Zend_XmlRpc_Client_HttpException + */ + public function doRequest($request, $response = null) + { + $this->_lastRequest = $request; + + if (PHP_VERSION_ID < 50600) { + iconv_set_encoding('input_encoding', 'UTF-8'); + iconv_set_encoding('output_encoding', 'UTF-8'); + iconv_set_encoding('internal_encoding', 'UTF-8'); + } else { + ini_set('input_encoding', 'UTF-8'); + ini_set('output_encoding', 'UTF-8'); + ini_set('default_charset', 'UTF-8'); + } + + $http = $this->getHttpClient(); + if($http->getUri() === null) { + $http->setUri($this->_serverAddress); + } + + $http->setHeaders(array( + 'Content-Type: text/xml; charset=utf-8', + 'Accept: text/xml', + )); + + if ($http->getHeader('user-agent') === null) { + $http->setHeaders(array('User-Agent: Zend_XmlRpc_Client')); + } + + $xml = $this->_lastRequest->__toString(); + $http->setRawData($xml); + $httpResponse = $http->request(Zend_Http_Client::POST); + + if (! $httpResponse->isSuccessful()) { + /** + * Exception thrown when an HTTP error occurs + * @see Zend_XmlRpc_Client_HttpException + */ + require_once 'Zend/XmlRpc/Client/HttpException.php'; + throw new Zend_XmlRpc_Client_HttpException( + $httpResponse->getMessage(), + $httpResponse->getStatus()); + } + + if ($response === null) { + $response = new Zend_XmlRpc_Response(); + } + $this->_lastResponse = $response; + $this->_lastResponse->loadXml(trim($httpResponse->getBody())); + } + + /** + * Send an XML-RPC request to the service (for a specific method) + * + * @param string $method Name of the method we want to call + * @param array $params Array of parameters for the method + * @return mixed + * @throws Zend_XmlRpc_Client_FaultException + */ + public function call($method, $params=array()) + { + if (!$this->skipSystemLookup() && ('system.' != substr($method, 0, 7))) { + // Ensure empty array/struct params are cast correctly + // If system.* methods are not available, bypass. (ZF-2978) + $success = true; + try { + $signatures = $this->getIntrospector()->getMethodSignature($method); + } catch (Zend_XmlRpc_Exception $e) { + $success = false; + } + if ($success) { + $validTypes = array( + Zend_XmlRpc_Value::XMLRPC_TYPE_ARRAY, + Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64, + Zend_XmlRpc_Value::XMLRPC_TYPE_BOOLEAN, + Zend_XmlRpc_Value::XMLRPC_TYPE_DATETIME, + Zend_XmlRpc_Value::XMLRPC_TYPE_DOUBLE, + Zend_XmlRpc_Value::XMLRPC_TYPE_I4, + Zend_XmlRpc_Value::XMLRPC_TYPE_INTEGER, + Zend_XmlRpc_Value::XMLRPC_TYPE_NIL, + Zend_XmlRpc_Value::XMLRPC_TYPE_STRING, + Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT, + ); + + if (!is_array($params)) { + $params = array($params); + } + + foreach ($params as $key => $param) + { + if ($param instanceof Zend_XmlRpc_Value) { + continue; + } + + if (count($signatures) > 1) { + $type = Zend_XmlRpc_Value::getXmlRpcTypeByValue($param); + foreach ($signatures as $signature) { + if (!is_array($signature)) { + continue; + } + if (isset($signature['parameters'][$key])) { + if ($signature['parameters'][$key] == $type) { + break; + } + } + } + } elseif (isset($signatures[0]['parameters'][$key])) { + $type = $signatures[0]['parameters'][$key]; + } else { + $type = null; + } + + if (empty($type) || !in_array($type, $validTypes)) { + $type = Zend_XmlRpc_Value::AUTO_DETECT_TYPE; + } + + $params[$key] = Zend_XmlRpc_Value::getXmlRpcValue($param, $type); + } + } + } + + $request = $this->_createRequest($method, $params); + + $this->doRequest($request); + + if ($this->_lastResponse->isFault()) { + $fault = $this->_lastResponse->getFault(); + /** + * Exception thrown when an XML-RPC fault is returned + * @see Zend_XmlRpc_Client_FaultException + */ + require_once 'Zend/XmlRpc/Client/FaultException.php'; + throw new Zend_XmlRpc_Client_FaultException($fault->getMessage(), + $fault->getCode()); + } + + return $this->_lastResponse->getReturnValue(); + } + + /** + * Create request object + * + * @return Zend_XmlRpc_Request + */ + protected function _createRequest($method, $params) + { + return new Zend_XmlRpc_Request($method, $params); + } +} diff --git a/library/Zend/XmlRpc/Client/Exception.php b/library/Zend/XmlRpc/Client/Exception.php new file mode 100755 index 000000000..d82601da6 --- /dev/null +++ b/library/Zend/XmlRpc/Client/Exception.php @@ -0,0 +1,40 @@ +_system = $client->getProxy('system'); + } + + /** + * Returns the signature for each method on the server, + * autodetecting whether system.multicall() is supported and + * using it if so. + * + * @return array + */ + public function getSignatureForEachMethod() + { + $methods = $this->listMethods(); + + require_once 'Zend/XmlRpc/Client/FaultException.php'; + try { + $signatures = $this->getSignatureForEachMethodByMulticall($methods); + } catch (Zend_XmlRpc_Client_FaultException $e) { + // degrade to looping + } + + if (empty($signatures)) { + $signatures = $this->getSignatureForEachMethodByLooping($methods); + } + + return $signatures; + } + + /** + * Attempt to get the method signatures in one request via system.multicall(). + * This is a boxcar feature of XML-RPC and is found on fewer servers. However, + * can significantly improve performance if present. + * + * @param array $methods + * @return array array(array(return, param, param, param...)) + */ + public function getSignatureForEachMethodByMulticall($methods = null) + { + if ($methods === null) { + $methods = $this->listMethods(); + } + + $multicallParams = array(); + foreach ($methods as $method) { + $multicallParams[] = array('methodName' => 'system.methodSignature', + 'params' => array($method)); + } + + $serverSignatures = $this->_system->multicall($multicallParams); + + if (! is_array($serverSignatures)) { + $type = gettype($serverSignatures); + $error = "Multicall return is malformed. Expected array, got $type"; + require_once 'Zend/XmlRpc/Client/IntrospectException.php'; + throw new Zend_XmlRpc_Client_IntrospectException($error); + } + + if (count($serverSignatures) != count($methods)) { + $error = 'Bad number of signatures received from multicall'; + require_once 'Zend/XmlRpc/Client/IntrospectException.php'; + throw new Zend_XmlRpc_Client_IntrospectException($error); + } + + // Create a new signatures array with the methods name as keys and the signature as value + $signatures = array(); + foreach ($serverSignatures as $i => $signature) { + $signatures[$methods[$i]] = $signature; + } + + return $signatures; + } + + /** + * Get the method signatures for every method by + * successively calling system.methodSignature + * + * @param array $methods + * @return array + */ + public function getSignatureForEachMethodByLooping($methods = null) + { + if ($methods === null) { + $methods = $this->listMethods(); + } + + $signatures = array(); + foreach ($methods as $method) { + $signatures[$method] = $this->getMethodSignature($method); + } + + return $signatures; + } + + /** + * Call system.methodSignature() for the given method + * + * @param array $method + * @return array array(array(return, param, param, param...)) + */ + public function getMethodSignature($method) + { + $signature = $this->_system->methodSignature($method); + if (!is_array($signature)) { + $error = 'Invalid signature for method "' . $method . '"'; + require_once 'Zend/XmlRpc/Client/IntrospectException.php'; + throw new Zend_XmlRpc_Client_IntrospectException($error); + } + return $signature; + } + + /** + * Call system.listMethods() + * + * @param array $method + * @return array array(method, method, method...) + */ + public function listMethods() + { + return $this->_system->listMethods(); + } + +} diff --git a/library/Zend/XmlRpc/Client/ServerProxy.php b/library/Zend/XmlRpc/Client/ServerProxy.php new file mode 100755 index 000000000..516619773 --- /dev/null +++ b/library/Zend/XmlRpc/Client/ServerProxy.php @@ -0,0 +1,95 @@ +foo->bar->baz()". + * + * @category Zend + * @package Zend_XmlRpc + * @subpackage Client + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_XmlRpc_Client_ServerProxy +{ + /** + * @var Zend_XmlRpc_Client + */ + private $_client = null; + + /** + * @var string + */ + private $_namespace = ''; + + + /** + * @var array of Zend_XmlRpc_Client_ServerProxy + */ + private $_cache = array(); + + + /** + * Class constructor + * + * @param string $namespace + * @param Zend_XmlRpc_Client $client + */ + public function __construct($client, $namespace = '') + { + $this->_namespace = $namespace; + $this->_client = $client; + } + + + /** + * Get the next successive namespace + * + * @param string $name + * @return Zend_XmlRpc_Client_ServerProxy + */ + public function __get($namespace) + { + $namespace = ltrim("$this->_namespace.$namespace", '.'); + if (!isset($this->_cache[$namespace])) { + $this->_cache[$namespace] = new $this($this->_client, $namespace); + } + return $this->_cache[$namespace]; + } + + + /** + * Call a method in this namespace. + * + * @param string $methodN + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + $method = ltrim("$this->_namespace.$method", '.'); + return $this->_client->call($method, $args); + } +} diff --git a/library/Zend/XmlRpc/Exception.php b/library/Zend/XmlRpc/Exception.php new file mode 100755 index 000000000..d3350515a --- /dev/null +++ b/library/Zend/XmlRpc/Exception.php @@ -0,0 +1,37 @@ + messages + * @var array + */ + protected $_internal = array( + 404 => 'Unknown Error', + + // 610 - 619 reflection errors + 610 => 'Invalid method class', + 611 => 'Unable to attach function or callback; not callable', + 612 => 'Unable to load array; not an array', + 613 => 'One or more method records are corrupt or otherwise unusable', + + // 620 - 629 dispatch errors + 620 => 'Method does not exist', + 621 => 'Error instantiating class to invoke method', + 622 => 'Method missing implementation', + 623 => 'Calling parameters do not match signature', + + // 630 - 639 request errors + 630 => 'Unable to read request', + 631 => 'Failed to parse request', + 632 => 'Invalid request, no method passed; request must contain a \'methodName\' tag', + 633 => 'Param must contain a value', + 634 => 'Invalid method name', + 635 => 'Invalid XML provided to request', + 636 => 'Error creating xmlrpc value', + + // 640 - 649 system.* errors + 640 => 'Method does not exist', + + // 650 - 659 response errors + 650 => 'Invalid XML provided for response', + 651 => 'Failed to parse response', + 652 => 'Invalid response', + 653 => 'Invalid XMLRPC value in response', + ); + + /** + * Constructor + * + * @return Zend_XmlRpc_Fault + */ + public function __construct($code = 404, $message = '') + { + $this->setCode($code); + $code = $this->getCode(); + + if (empty($message) && isset($this->_internal[$code])) { + $message = $this->_internal[$code]; + } elseif (empty($message)) { + $message = 'Unknown error'; + } + $this->setMessage($message); + } + + /** + * Set the fault code + * + * @param int $code + * @return Zend_XmlRpc_Fault + */ + public function setCode($code) + { + $this->_code = (int) $code; + return $this; + } + + /** + * Return fault code + * + * @return int + */ + public function getCode() + { + return $this->_code; + } + + /** + * Retrieve fault message + * + * @param string + * @return Zend_XmlRpc_Fault + */ + public function setMessage($message) + { + $this->_message = (string) $message; + return $this; + } + + /** + * Retrieve fault message + * + * @return string + */ + public function getMessage() + { + return $this->_message; + } + + /** + * Set encoding to use in fault response + * + * @param string $encoding + * @return Zend_XmlRpc_Fault + */ + public function setEncoding($encoding) + { + $this->_encoding = $encoding; + Zend_XmlRpc_Value::setEncoding($encoding); + return $this; + } + + /** + * Retrieve current fault encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Load an XMLRPC fault from XML + * + * @param string $fault + * @return boolean Returns true if successfully loaded fault response, false + * if response was not a fault response + * @throws Zend_XmlRpc_Exception if no or faulty XML provided, or if fault + * response does not contain either code or message + */ + public function loadXml($fault) + { + if (!is_string($fault)) { + require_once 'Zend/XmlRpc/Exception.php'; + throw new Zend_XmlRpc_Exception('Invalid XML provided to fault'); + } + + try { + $xml = @new SimpleXMLElement($fault); + } catch (Exception $e) { + // Not valid XML + require_once 'Zend/XmlRpc/Exception.php'; + throw new Zend_XmlRpc_Exception('Failed to parse XML fault: ' . $e->getMessage(), 500, $e); + } + + // Check for fault + if (!$xml->fault) { + // Not a fault + return false; + } + + if (!$xml->fault->value->struct) { + // not a proper fault + require_once 'Zend/XmlRpc/Exception.php'; + throw new Zend_XmlRpc_Exception('Invalid fault structure', 500); + } + + $structXml = $xml->fault->value->asXML(); + $struct = Zend_XmlRpc_Value::getXmlRpcValue($structXml, Zend_XmlRpc_Value::XML_STRING); + $struct = $struct->getValue(); + + if (isset($struct['faultCode'])) { + $code = $struct['faultCode']; + } + if (isset($struct['faultString'])) { + $message = $struct['faultString']; + } + + if (empty($code) && empty($message)) { + require_once 'Zend/XmlRpc/Exception.php'; + throw new Zend_XmlRpc_Exception('Fault code and string required'); + } + + if (empty($code)) { + $code = '404'; + } + + if (empty($message)) { + if (isset($this->_internal[$code])) { + $message = $this->_internal[$code]; + } else { + $message = 'Unknown Error'; + } + } + + $this->setCode($code); + $this->setMessage($message); + + return true; + } + + /** + * Determine if an XML response is an XMLRPC fault + * + * @param string $xml + * @return boolean + */ + public static function isFault($xml) + { + $fault = new self(); + require_once 'Zend/XmlRpc/Exception.php'; + try { + $isFault = $fault->loadXml($xml); + } catch (Zend_XmlRpc_Exception $e) { + $isFault = false; + } + + return $isFault; + } + + /** + * Serialize fault to XML + * + * @return string + */ + public function saveXml() + { + // Create fault value + $faultStruct = array( + 'faultCode' => $this->getCode(), + 'faultString' => $this->getMessage() + ); + $value = Zend_XmlRpc_Value::getXmlRpcValue($faultStruct); + + $generator = Zend_XmlRpc_Value::getGenerator(); + $generator->openElement('methodResponse') + ->openElement('fault'); + $value->generateXml(); + $generator->closeElement('fault') + ->closeElement('methodResponse'); + + return $generator->flush(); + } + + /** + * Return XML fault response + * + * @return string + */ + public function __toString() + { + return $this->saveXML(); + } +} diff --git a/library/Zend/XmlRpc/Generator/DomDocument.php b/library/Zend/XmlRpc/Generator/DomDocument.php new file mode 100755 index 000000000..88bc05fa0 --- /dev/null +++ b/library/Zend/XmlRpc/Generator/DomDocument.php @@ -0,0 +1,101 @@ +_dom->createElement($name); + + $this->_currentElement = $this->_currentElement->appendChild($newElement); + } + + /** + * Write XML text data into the currently opened XML element + * + * @param string $text + */ + protected function _writeTextData($text) + { + $this->_currentElement->appendChild($this->_dom->createTextNode($text)); + } + + /** + * Close an previously opened XML element + * + * Resets $_currentElement to the next parent node in the hierarchy + * + * @param string $name + * @return void + */ + protected function _closeElement($name) + { + if (isset($this->_currentElement->parentNode)) { + $this->_currentElement = $this->_currentElement->parentNode; + } + } + + /** + * Save XML as a string + * + * @return string + */ + public function saveXml() + { + return $this->_dom->saveXml(); + } + + /** + * Initializes internal objects + * + * @return void + */ + protected function _init() + { + $this->_dom = new DOMDocument('1.0', $this->_encoding); + $this->_currentElement = $this->_dom; + } +} diff --git a/library/Zend/XmlRpc/Generator/GeneratorAbstract.php b/library/Zend/XmlRpc/Generator/GeneratorAbstract.php new file mode 100755 index 000000000..03afcd696 --- /dev/null +++ b/library/Zend/XmlRpc/Generator/GeneratorAbstract.php @@ -0,0 +1,150 @@ +_encoding = $encoding; + $this->_init(); + } + + /** + * Start XML element + * + * Method opens a new XML element with an element name and an optional value + * + * @param string $name XML tag name + * @param string $value Optional value of the XML tag + * @return Zend_XmlRpc_Generator_Abstract Fluent interface + */ + public function openElement($name, $value = null) + { + $this->_openElement($name); + if ($value !== null) { + $this->_writeTextData($value); + } + + return $this; + } + + /** + * End of an XML element + * + * Method marks the end of an XML element + * + * @param string $name XML tag name + * @return Zend_XmlRpc_Generator_Abstract Fluent interface + */ + public function closeElement($name) + { + $this->_closeElement($name); + + return $this; + } + + /** + * Return XML as a string + * + * @return string + */ + abstract public function saveXml(); + + /** + * Return encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Returns the XML as a string and flushes all internal buffers + * + * @return string + */ + public function flush() + { + $xml = $this->saveXml(); + $this->_init(); + return $xml; + } + + /** + * Returns XML without document declaration + * + * @return string + */ + public function __toString() + { + return $this->stripDeclaration($this->saveXml()); + } + + /** + * Removes XML declaration from a string + * + * @param string $xml + * @return string + */ + public function stripDeclaration($xml) + { + return preg_replace('/<\?xml version="1.0"( encoding="[^\"]*")?\?>\n/u', '', $xml); + } + + /** + * Start XML element + * + * @param string $name XML element name + */ + abstract protected function _openElement($name); + + /** + * Write XML text data into the currently opened XML element + * + * @param string $text + */ + abstract protected function _writeTextData($text); + + /** + * End XML element + * + * @param string $name + */ + abstract protected function _closeElement($name); +} diff --git a/library/Zend/XmlRpc/Generator/XmlWriter.php b/library/Zend/XmlRpc/Generator/XmlWriter.php new file mode 100755 index 000000000..a84e11d3b --- /dev/null +++ b/library/Zend/XmlRpc/Generator/XmlWriter.php @@ -0,0 +1,93 @@ +_xmlWriter = new XMLWriter(); + $this->_xmlWriter->openMemory(); + $this->_xmlWriter->startDocument('1.0', $this->_encoding); + } + + + /** + * Open a new XML element + * + * @param string $name XML element name + * @return void + */ + protected function _openElement($name) + { + $this->_xmlWriter->startElement($name); + } + + /** + * Write XML text data into the currently opened XML element + * + * @param string $text XML text data + * @return void + */ + protected function _writeTextData($text) + { + $this->_xmlWriter->text($text); + } + + /** + * Close an previously opened XML element + * + * @param string $name + * @return void + */ + protected function _closeElement($name) + { + $this->_xmlWriter->endElement(); + + return $this; + } + + public function saveXml() + { + $xml = $this->_xmlWriter->flush(false); + return $xml; + } +} diff --git a/library/Zend/XmlRpc/Request.php b/library/Zend/XmlRpc/Request.php new file mode 100755 index 000000000..73bb9670a --- /dev/null +++ b/library/Zend/XmlRpc/Request.php @@ -0,0 +1,445 @@ +setMethod($method); + } + + if ($params !== null) { + $this->setParams($params); + } + } + + + /** + * Set encoding to use in request + * + * @param string $encoding + * @return Zend_XmlRpc_Request + */ + public function setEncoding($encoding) + { + $this->_encoding = $encoding; + Zend_XmlRpc_Value::setEncoding($encoding); + return $this; + } + + /** + * Retrieve current request encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set method to call + * + * @param string $method + * @return boolean Returns true on success, false if method name is invalid + */ + public function setMethod($method) + { + if (!is_string($method) || !preg_match('/^[a-z0-9_.:\/]+$/i', $method)) { + $this->_fault = new Zend_XmlRpc_Fault(634, 'Invalid method name ("' . $method . '")'); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + $this->_method = $method; + return true; + } + + /** + * Retrieve call method + * + * @return string + */ + public function getMethod() + { + return $this->_method; + } + + /** + * Add a parameter to the parameter stack + * + * Adds a parameter to the parameter stack, associating it with the type + * $type if provided + * + * @param mixed $value + * @param string $type Optional; type hinting + * @return void + */ + public function addParam($value, $type = null) + { + $this->_params[] = $value; + if (null === $type) { + // Detect type if not provided explicitly + if ($value instanceof Zend_XmlRpc_Value) { + $type = $value->getType(); + } else { + $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($value); + $type = $xmlRpcValue->getType(); + } + } + $this->_types[] = $type; + $this->_xmlRpcParams[] = array('value' => $value, 'type' => $type); + } + + /** + * Set the parameters array + * + * If called with a single, array value, that array is used to set the + * parameters stack. If called with multiple values or a single non-array + * value, the arguments are used to set the parameters stack. + * + * Best is to call with array of the format, in order to allow type hinting + * when creating the XMLRPC values for each parameter: + * + * $array = array( + * array( + * 'value' => $value, + * 'type' => $type + * )[, ... ] + * ); + * + * + * @access public + * @return void + */ + public function setParams() + { + $argc = func_num_args(); + $argv = func_get_args(); + if (0 == $argc) { + return; + } + + if ((1 == $argc) && is_array($argv[0])) { + $params = array(); + $types = array(); + $wellFormed = true; + foreach ($argv[0] as $arg) { + if (!is_array($arg) || !isset($arg['value'])) { + $wellFormed = false; + break; + } + $params[] = $arg['value']; + + if (!isset($arg['type'])) { + $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($arg['value']); + $arg['type'] = $xmlRpcValue->getType(); + } + $types[] = $arg['type']; + } + if ($wellFormed) { + $this->_xmlRpcParams = $argv[0]; + $this->_params = $params; + $this->_types = $types; + } else { + $this->_params = $argv[0]; + $this->_types = array(); + $xmlRpcParams = array(); + foreach ($argv[0] as $arg) { + if ($arg instanceof Zend_XmlRpc_Value) { + $type = $arg->getType(); + } else { + $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($arg); + $type = $xmlRpcValue->getType(); + } + $xmlRpcParams[] = array('value' => $arg, 'type' => $type); + $this->_types[] = $type; + } + $this->_xmlRpcParams = $xmlRpcParams; + } + return; + } + + $this->_params = $argv; + $this->_types = array(); + $xmlRpcParams = array(); + foreach ($argv as $arg) { + if ($arg instanceof Zend_XmlRpc_Value) { + $type = $arg->getType(); + } else { + $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($arg); + $type = $xmlRpcValue->getType(); + } + $xmlRpcParams[] = array('value' => $arg, 'type' => $type); + $this->_types[] = $type; + } + $this->_xmlRpcParams = $xmlRpcParams; + } + + /** + * Retrieve the array of parameters + * + * @return array + */ + public function getParams() + { + return $this->_params; + } + + /** + * Return parameter types + * + * @return array + */ + public function getTypes() + { + return $this->_types; + } + + /** + * Load XML and parse into request components + * + * @param string $request + * @return boolean True on success, false if an error occurred. + */ + public function loadXml($request) + { + if (!is_string($request)) { + $this->_fault = new Zend_XmlRpc_Fault(635); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + try { + $xml = Zend_Xml_Security::scan($request); + } catch (Zend_Xml_Exception $e) { + // Not valid XML + $this->_fault = new Zend_XmlRpc_Fault(631); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + // Check for method name + if (empty($xml->methodName)) { + // Missing method name + $this->_fault = new Zend_XmlRpc_Fault(632); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + $this->_method = (string) $xml->methodName; + + // Check for parameters + if (!empty($xml->params)) { + $types = array(); + $argv = array(); + foreach ($xml->params->children() as $param) { + if (!isset($param->value)) { + $this->_fault = new Zend_XmlRpc_Fault(633); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + try { + $param = Zend_XmlRpc_Value::getXmlRpcValue($param->value, Zend_XmlRpc_Value::XML_STRING); + $types[] = $param->getType(); + $argv[] = $param->getValue(); + } catch (Exception $e) { + $this->_fault = new Zend_XmlRpc_Fault(636); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + } + + $this->_types = $types; + $this->_params = $argv; + } + + $this->_xml = $request; + + return true; + } + + /** + * Does the current request contain errors and should it return a fault + * response? + * + * @return boolean + */ + public function isFault() + { + return $this->_fault instanceof Zend_XmlRpc_Fault; + } + + /** + * Retrieve the fault response, if any + * + * @return null|Zend_XmlRpc_Fault + */ + public function getFault() + { + return $this->_fault; + } + + /** + * Retrieve method parameters as XMLRPC values + * + * @return array + */ + protected function _getXmlRpcParams() + { + $params = array(); + if (is_array($this->_xmlRpcParams)) { + foreach ($this->_xmlRpcParams as $param) { + $value = $param['value']; + $type = isset($param['type']) ? $param['type'] : Zend_XmlRpc_Value::AUTO_DETECT_TYPE; + + if (!$value instanceof Zend_XmlRpc_Value) { + $value = Zend_XmlRpc_Value::getXmlRpcValue($value, $type); + } + $params[] = $value; + } + } + + return $params; + } + + /** + * Create XML request + * + * @return string + */ + public function saveXml() + { + $args = $this->_getXmlRpcParams(); + $method = $this->getMethod(); + + $generator = Zend_XmlRpc_Value::getGenerator(); + $generator->openElement('methodCall') + ->openElement('methodName', $method) + ->closeElement('methodName'); + + if (is_array($args) && count($args)) { + $generator->openElement('params'); + + foreach ($args as $arg) { + $generator->openElement('param'); + $arg->generateXml(); + $generator->closeElement('param'); + } + $generator->closeElement('params'); + } + $generator->closeElement('methodCall'); + + return $generator->flush(); + } + + /** + * Return XML request + * + * @return string + */ + public function __toString() + { + return $this->saveXML(); + } +} diff --git a/library/Zend/XmlRpc/Request/Http.php b/library/Zend/XmlRpc/Request/Http.php new file mode 100755 index 000000000..df058a1a8 --- /dev/null +++ b/library/Zend/XmlRpc/Request/Http.php @@ -0,0 +1,124 @@ +_fault = new Zend_XmlRpc_Fault(630); + return; + } + + $this->_xml = $xml; + + $this->loadXml($xml); + } + + /** + * Retrieve the raw XML request + * + * @return string + */ + public function getRawRequest() + { + return $this->_xml; + } + + /** + * Get headers + * + * Gets all headers as key => value pairs and returns them. + * + * @return array + */ + public function getHeaders() + { + if (null === $this->_headers) { + $this->_headers = array(); + foreach ($_SERVER as $key => $value) { + if ('HTTP_' == substr($key, 0, 5)) { + $header = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($key, 5))))); + $this->_headers[$header] = $value; + } + } + } + + return $this->_headers; + } + + /** + * Retrieve the full HTTP request, including headers and XML + * + * @return string + */ + public function getFullRequest() + { + $request = ''; + foreach ($this->getHeaders() as $key => $value) { + $request .= $key . ': ' . $value . "\n"; + } + + $request .= $this->_xml; + + return $request; + } +} diff --git a/library/Zend/XmlRpc/Request/Stdin.php b/library/Zend/XmlRpc/Request/Stdin.php new file mode 100755 index 000000000..d6bb539e1 --- /dev/null +++ b/library/Zend/XmlRpc/Request/Stdin.php @@ -0,0 +1,84 @@ +_fault = new Zend_XmlRpc_Server_Exception(630); + return; + } + + $xml = ''; + while (!feof($fh)) { + $xml .= fgets($fh); + } + fclose($fh); + + $this->_xml = $xml; + + $this->loadXml($xml); + } + + /** + * Retrieve the raw XML request + * + * @return string + */ + public function getRawRequest() + { + return $this->_xml; + } +} diff --git a/library/Zend/XmlRpc/Response.php b/library/Zend/XmlRpc/Response.php new file mode 100755 index 000000000..be5a6cbb4 --- /dev/null +++ b/library/Zend/XmlRpc/Response.php @@ -0,0 +1,255 @@ +setReturnValue($return, $type); + } + + /** + * Set encoding to use in response + * + * @param string $encoding + * @return Zend_XmlRpc_Response + */ + public function setEncoding($encoding) + { + $this->_encoding = $encoding; + Zend_XmlRpc_Value::setEncoding($encoding); + return $this; + } + + /** + * Retrieve current response encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Set the return value + * + * Sets the return value, with optional type hinting if provided. + * + * @param mixed $value + * @param string $type + * @return void + */ + public function setReturnValue($value, $type = null) + { + $this->_return = $value; + $this->_type = (string) $type; + } + + /** + * Retrieve the return value + * + * @return mixed + */ + public function getReturnValue() + { + return $this->_return; + } + + /** + * Retrieve the XMLRPC value for the return value + * + * @return Zend_XmlRpc_Value + */ + protected function _getXmlRpcReturn() + { + return Zend_XmlRpc_Value::getXmlRpcValue($this->_return); + } + + /** + * Is the response a fault response? + * + * @return boolean + */ + public function isFault() + { + return $this->_fault instanceof Zend_XmlRpc_Fault; + } + + /** + * Returns the fault, if any. + * + * @return null|Zend_XmlRpc_Fault + */ + public function getFault() + { + return $this->_fault; + } + + /** + * Load a response from an XML response + * + * Attempts to load a response from an XMLRPC response, autodetecting if it + * is a fault response. + * + * @param string $response + * @return boolean True if a valid XMLRPC response, false if a fault + * response or invalid input + */ + public function loadXml($response) + { + if (!is_string($response)) { + $this->_fault = new Zend_XmlRpc_Fault(650); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + try { + $xml = Zend_Xml_Security::scan($response); + } catch (Zend_Xml_Exception $e) { + // Not valid XML + $this->_fault = new Zend_XmlRpc_Fault(651); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + if (!empty($xml->fault)) { + // fault response + $this->_fault = new Zend_XmlRpc_Fault(); + $this->_fault->setEncoding($this->getEncoding()); + $this->_fault->loadXml($response); + return false; + } + + if (empty($xml->params)) { + // Invalid response + $this->_fault = new Zend_XmlRpc_Fault(652); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + try { + if (!isset($xml->params) || !isset($xml->params->param) || !isset($xml->params->param->value)) { + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Missing XML-RPC value in XML'); + } + $valueXml = $xml->params->param->value->asXML(); + $value = Zend_XmlRpc_Value::getXmlRpcValue($valueXml, Zend_XmlRpc_Value::XML_STRING); + } catch (Zend_XmlRpc_Value_Exception $e) { + $this->_fault = new Zend_XmlRpc_Fault(653); + $this->_fault->setEncoding($this->getEncoding()); + return false; + } + + $this->setReturnValue($value->getValue()); + return true; + } + + /** + * Return response as XML + * + * @return string + */ + public function saveXml() + { + $value = $this->_getXmlRpcReturn(); + $generator = Zend_XmlRpc_Value::getGenerator(); + $generator->openElement('methodResponse') + ->openElement('params') + ->openElement('param'); + $value->generateXml(); + $generator->closeElement('param') + ->closeElement('params') + ->closeElement('methodResponse'); + + return $generator->flush(); + } + + /** + * Return XML response + * + * @return string + */ + public function __toString() + { + return $this->saveXML(); + } +} diff --git a/library/Zend/XmlRpc/Response/Http.php b/library/Zend/XmlRpc/Response/Http.php new file mode 100755 index 000000000..5bc246ba6 --- /dev/null +++ b/library/Zend/XmlRpc/Response/Http.php @@ -0,0 +1,51 @@ +getEncoding())); + } + + return parent::__toString(); + } +} diff --git a/library/Zend/XmlRpc/Server.php b/library/Zend/XmlRpc/Server.php new file mode 100755 index 000000000..1c747084b --- /dev/null +++ b/library/Zend/XmlRpc/Server.php @@ -0,0 +1,615 @@ + + * require_once 'Zend/XmlRpc/Server.php'; + * require_once 'Zend/XmlRpc/Server/Cache.php'; + * require_once 'Zend/XmlRpc/Server/Fault.php'; + * require_once 'My/Exception.php'; + * require_once 'My/Fault/Observer.php'; + * + * // Instantiate server + * $server = new Zend_XmlRpc_Server(); + * + * // Allow some exceptions to report as fault responses: + * Zend_XmlRpc_Server_Fault::attachFaultException('My_Exception'); + * Zend_XmlRpc_Server_Fault::attachObserver('My_Fault_Observer'); + * + * // Get or build dispatch table: + * if (!Zend_XmlRpc_Server_Cache::get($filename, $server)) { + * require_once 'Some/Service/Class.php'; + * require_once 'Another/Service/Class.php'; + * + * // Attach Some_Service_Class in 'some' namespace + * $server->setClass('Some_Service_Class', 'some'); + * + * // Attach Another_Service_Class in 'another' namespace + * $server->setClass('Another_Service_Class', 'another'); + * + * // Create dispatch table cache file + * Zend_XmlRpc_Server_Cache::save($filename, $server); + * } + * + * $response = $server->handle(); + * echo $response; + * + * + * @category Zend + * @package Zend_XmlRpc + * @subpackage Server + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_XmlRpc_Server extends Zend_Server_Abstract +{ + /** + * Character encoding + * @var string + */ + protected $_encoding = 'UTF-8'; + + /** + * Request processed + * @var null|Zend_XmlRpc_Request + */ + protected $_request = null; + + /** + * Class to use for responses; defaults to {@link Zend_XmlRpc_Response_Http} + * @var string + */ + protected $_responseClass = 'Zend_XmlRpc_Response_Http'; + + /** + * Dispatch table of name => method pairs + * @var Zend_Server_Definition + */ + protected $_table; + + /** + * PHP types => XML-RPC types + * @var array + */ + protected $_typeMap = array( + 'i4' => 'i4', + 'int' => 'int', + 'integer' => 'int', + 'Zend_Crypt_Math_BigInteger' => 'i8', + 'i8' => 'i8', + 'ex:i8' => 'i8', + 'double' => 'double', + 'float' => 'double', + 'real' => 'double', + 'boolean' => 'boolean', + 'bool' => 'boolean', + 'true' => 'boolean', + 'false' => 'boolean', + 'string' => 'string', + 'str' => 'string', + 'base64' => 'base64', + 'dateTime.iso8601' => 'dateTime.iso8601', + 'date' => 'dateTime.iso8601', + 'time' => 'dateTime.iso8601', + 'time' => 'dateTime.iso8601', + 'Zend_Date' => 'dateTime.iso8601', + 'DateTime' => 'dateTime.iso8601', + 'array' => 'array', + 'struct' => 'struct', + 'null' => 'nil', + 'nil' => 'nil', + 'ex:nil' => 'nil', + 'void' => 'void', + 'mixed' => 'struct', + ); + + /** + * Send arguments to all methods or just constructor? + * + * @var bool + */ + protected $_sendArgumentsToAllMethods = true; + + /** + * Constructor + * + * Creates system.* methods. + * + * @return void + */ + public function __construct() + { + $this->_table = new Zend_Server_Definition(); + $this->_registerSystemMethods(); + } + + /** + * Proxy calls to system object + * + * @param string $method + * @param array $params + * @return mixed + * @throws Zend_XmlRpc_Server_Exception + */ + public function __call($method, $params) + { + $system = $this->getSystem(); + if (!method_exists($system, $method)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Unknown instance method called on server: ' . $method); + } + return call_user_func_array(array($system, $method), $params); + } + + /** + * Attach a callback as an XMLRPC method + * + * Attaches a callback as an XMLRPC method, prefixing the XMLRPC method name + * with $namespace, if provided. Reflection is done on the callback's + * docblock to create the methodHelp for the XMLRPC method. + * + * Additional arguments to pass to the function at dispatch may be passed; + * any arguments following the namespace will be aggregated and passed at + * dispatch time. + * + * @param string|array $function Valid callback + * @param string $namespace Optional namespace prefix + * @return void + * @throws Zend_XmlRpc_Server_Exception + */ + public function addFunction($function, $namespace = '') + { + if (!is_string($function) && !is_array($function)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Unable to attach function; invalid', 611); + } + + $argv = null; + if (2 < func_num_args()) { + $argv = func_get_args(); + $argv = array_slice($argv, 2); + } + + $function = (array) $function; + foreach ($function as $func) { + if (!is_string($func) || !function_exists($func)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Unable to attach function; invalid', 611); + } + $reflection = Zend_Server_Reflection::reflectFunction($func, $argv, $namespace); + $this->_buildSignature($reflection); + } + } + + /** + * Attach class methods as XMLRPC method handlers + * + * $class may be either a class name or an object. Reflection is done on the + * class or object to determine the available public methods, and each is + * attached to the server as an available method; if a $namespace has been + * provided, that namespace is used to prefix the XMLRPC method names. + * + * Any additional arguments beyond $namespace will be passed to a method at + * invocation. + * + * @param string|object $class + * @param string $namespace Optional + * @param mixed $argv Optional arguments to pass to methods + * @return void + * @throws Zend_XmlRpc_Server_Exception on invalid input + */ + public function setClass($class, $namespace = '', $argv = null) + { + if (is_string($class) && !class_exists($class)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Invalid method class', 610); + } + + $args = null; + if (2 < func_num_args()) { + $args = func_get_args(); + $args = array_slice($args, 2); + } + + $dispatchable = Zend_Server_Reflection::reflectClass($class, $args, $namespace); + foreach ($dispatchable->getMethods() as $reflection) { + $this->_buildSignature($reflection, $class); + } + } + + /** + * Raise an xmlrpc server fault + * + * @param string|Exception $fault + * @param int $code + * @return Zend_XmlRpc_Server_Fault + */ + public function fault($fault = null, $code = 404) + { + if (!$fault instanceof Exception) { + $fault = (string) $fault; + if (empty($fault)) { + $fault = 'Unknown Error'; + } + require_once 'Zend/XmlRpc/Server/Exception.php'; + $fault = new Zend_XmlRpc_Server_Exception($fault, $code); + } + + return Zend_XmlRpc_Server_Fault::getInstance($fault); + } + + /** + * Handle an xmlrpc call + * + * @param Zend_XmlRpc_Request $request Optional + * @return Zend_XmlRpc_Response|Zend_XmlRpc_Fault + */ + public function handle($request = false) + { + // Get request + if ((!$request || !$request instanceof Zend_XmlRpc_Request) + && (null === ($request = $this->getRequest())) + ) { + require_once 'Zend/XmlRpc/Request/Http.php'; + $request = new Zend_XmlRpc_Request_Http(); + $request->setEncoding($this->getEncoding()); + } + + $this->setRequest($request); + + if ($request->isFault()) { + $response = $request->getFault(); + } else { + try { + $response = $this->_handle($request); + } catch (Exception $e) { + $response = $this->fault($e); + } + } + + // Set output encoding + $response->setEncoding($this->getEncoding()); + + return $response; + } + + /** + * Load methods as returned from {@link getFunctions} + * + * Typically, you will not use this method; it will be called using the + * results pulled from {@link Zend_XmlRpc_Server_Cache::get()}. + * + * @param array|Zend_Server_Definition $definition + * @return void + * @throws Zend_XmlRpc_Server_Exception on invalid input + */ + public function loadFunctions($definition) + { + if (!is_array($definition) && (!$definition instanceof Zend_Server_Definition)) { + if (is_object($definition)) { + $type = get_class($definition); + } else { + $type = gettype($definition); + } + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Unable to load server definition; must be an array or Zend_Server_Definition, received ' . $type, 612); + } + + $this->_table->clearMethods(); + $this->_registerSystemMethods(); + + if ($definition instanceof Zend_Server_Definition) { + $definition = $definition->getMethods(); + } + + foreach ($definition as $key => $method) { + if ('system.' == substr($key, 0, 7)) { + continue; + } + $this->_table->addMethod($method, $key); + } + } + + /** + * Set encoding + * + * @param string $encoding + * @return Zend_XmlRpc_Server + */ + public function setEncoding($encoding) + { + $this->_encoding = $encoding; + Zend_XmlRpc_Value::setEncoding($encoding); + return $this; + } + + /** + * Retrieve current encoding + * + * @return string + */ + public function getEncoding() + { + return $this->_encoding; + } + + /** + * Do nothing; persistence is handled via {@link Zend_XmlRpc_Server_Cache} + * + * @param mixed $mode + * @return void + */ + public function setPersistence($mode) + { + } + + /** + * Set the request object + * + * @param string|Zend_XmlRpc_Request $request + * @return Zend_XmlRpc_Server + * @throws Zend_XmlRpc_Server_Exception on invalid request class or object + */ + public function setRequest($request) + { + if (is_string($request) && class_exists($request)) { + $request = new $request(); + if (!$request instanceof Zend_XmlRpc_Request) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Invalid request class'); + } + $request->setEncoding($this->getEncoding()); + } elseif (!$request instanceof Zend_XmlRpc_Request) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Invalid request object'); + } + + $this->_request = $request; + return $this; + } + + /** + * Return currently registered request object + * + * @return null|Zend_XmlRpc_Request + */ + public function getRequest() + { + return $this->_request; + } + + /** + * Set the class to use for the response + * + * @param string $class + * @return boolean True if class was set, false if not + */ + public function setResponseClass($class) + { + if (!class_exists($class) or + ($c = new ReflectionClass($class) and !$c->isSubclassOf('Zend_XmlRpc_Response'))) { + + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Invalid response class'); + } + $this->_responseClass = $class; + return true; + } + + /** + * Retrieve current response class + * + * @return string + */ + public function getResponseClass() + { + return $this->_responseClass; + } + + /** + * Retrieve dispatch table + * + * @return array + */ + public function getDispatchTable() + { + return $this->_table; + } + + /** + * Returns a list of registered methods + * + * Returns an array of dispatchables (Zend_Server_Reflection_Function, + * _Method, and _Class items). + * + * @return array + */ + public function getFunctions() + { + return $this->_table->toArray(); + } + + /** + * Retrieve system object + * + * @return Zend_XmlRpc_Server_System + */ + public function getSystem() + { + return $this->_system; + } + + /** + * Send arguments to all methods? + * + * If setClass() is used to add classes to the server, this flag defined + * how to handle arguments. If set to true, all methods including constructor + * will receive the arguments. If set to false, only constructor will receive the + * arguments + */ + public function sendArgumentsToAllMethods($flag = null) + { + if ($flag === null) { + return $this->_sendArgumentsToAllMethods; + } + + $this->_sendArgumentsToAllMethods = (bool)$flag; + return $this; + } + + /** + * Map PHP type to XML-RPC type + * + * @param string $type + * @return string + */ + protected function _fixType($type) + { + if (isset($this->_typeMap[$type])) { + return $this->_typeMap[$type]; + } + return 'void'; + } + + /** + * Handle an xmlrpc call (actual work) + * + * @param Zend_XmlRpc_Request $request + * @return Zend_XmlRpc_Response + * @throws Zend_XmlRpcServer_Exception|Exception + * Zend_XmlRpcServer_Exceptions are thrown for internal errors; otherwise, + * any other exception may be thrown by the callback + */ + protected function _handle(Zend_XmlRpc_Request $request) + { + $method = $request->getMethod(); + + // Check for valid method + if (!$this->_table->hasMethod($method)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Method "' . $method . '" does not exist', 620); + } + + $info = $this->_table->getMethod($method); + $params = $request->getParams(); + $argv = $info->getInvokeArguments(); + if (0 < count($argv) and $this->sendArgumentsToAllMethods()) { + $params = array_merge($params, $argv); + } + + // Check calling parameters against signatures + $matched = false; + $sigCalled = $request->getTypes(); + + $sigLength = count($sigCalled); + $paramsLen = count($params); + if ($sigLength < $paramsLen) { + for ($i = $sigLength; $i < $paramsLen; ++$i) { + $xmlRpcValue = Zend_XmlRpc_Value::getXmlRpcValue($params[$i]); + $sigCalled[] = $xmlRpcValue->getType(); + } + } + + $signatures = $info->getPrototypes(); + foreach ($signatures as $signature) { + $sigParams = $signature->getParameters(); + if ($sigCalled === $sigParams) { + $matched = true; + break; + } + } + if (!$matched) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Calling parameters do not match signature', 623); + } + + $return = $this->_dispatch($info, $params); + $responseClass = $this->getResponseClass(); + return new $responseClass($return); + } + + /** + * Register system methods with the server + * + * @return void + */ + protected function _registerSystemMethods() + { + $system = new Zend_XmlRpc_Server_System($this); + $this->_system = $system; + $this->setClass($system, 'system'); + } +} diff --git a/library/Zend/XmlRpc/Server/Cache.php b/library/Zend/XmlRpc/Server/Cache.php new file mode 100755 index 000000000..7c52902b6 --- /dev/null +++ b/library/Zend/XmlRpc/Server/Cache.php @@ -0,0 +1,46 @@ + true); + + /** + * @var array Array of fault observers + */ + protected static $_observers = array(); + + /** + * Constructor + * + * @param Exception $e + * @return Zend_XmlRpc_Server_Fault + */ + public function __construct(Exception $e) + { + $this->_exception = $e; + $code = 404; + $message = 'Unknown error'; + $exceptionClass = get_class($e); + + foreach (array_keys(self::$_faultExceptionClasses) as $class) { + if ($e instanceof $class) { + $code = $e->getCode(); + $message = $e->getMessage(); + break; + } + } + + parent::__construct($code, $message); + + // Notify exception observers, if present + if (!empty(self::$_observers)) { + foreach (array_keys(self::$_observers) as $observer) { + call_user_func(array($observer, 'observe'), $this); + } + } + } + + /** + * Return Zend_XmlRpc_Server_Fault instance + * + * @param Exception $e + * @return Zend_XmlRpc_Server_Fault + */ + public static function getInstance(Exception $e) + { + return new self($e); + } + + /** + * Attach valid exceptions that can be used to define xmlrpc faults + * + * @param string|array $classes Class name or array of class names + * @return void + */ + public static function attachFaultException($classes) + { + if (!is_array($classes)) { + $classes = (array) $classes; + } + + foreach ($classes as $class) { + if (is_string($class) && class_exists($class)) { + self::$_faultExceptionClasses[$class] = true; + } + } + } + + /** + * Detach fault exception classes + * + * @param string|array $classes Class name or array of class names + * @return void + */ + public static function detachFaultException($classes) + { + if (!is_array($classes)) { + $classes = (array) $classes; + } + + foreach ($classes as $class) { + if (is_string($class) && isset(self::$_faultExceptionClasses[$class])) { + unset(self::$_faultExceptionClasses[$class]); + } + } + } + + /** + * Attach an observer class + * + * Allows observation of xmlrpc server faults, thus allowing logging or mail + * notification of fault responses on the xmlrpc server. + * + * Expects a valid class name; that class must have a public static method + * 'observe' that accepts an exception as its sole argument. + * + * @param string $class + * @return boolean + */ + public static function attachObserver($class) + { + if (!is_string($class) + || !class_exists($class) + || !is_callable(array($class, 'observe'))) + { + return false; + } + + if (!isset(self::$_observers[$class])) { + self::$_observers[$class] = true; + } + + return true; + } + + /** + * Detach an observer + * + * @param string $class + * @return boolean + */ + public static function detachObserver($class) + { + if (!isset(self::$_observers[$class])) { + return false; + } + + unset(self::$_observers[$class]); + return true; + } + + /** + * Retrieve the exception + * + * @access public + * @return Exception + */ + public function getException() + { + return $this->_exception; + } +} diff --git a/library/Zend/XmlRpc/Server/System.php b/library/Zend/XmlRpc/Server/System.php new file mode 100755 index 000000000..340eb1cd7 --- /dev/null +++ b/library/Zend/XmlRpc/Server/System.php @@ -0,0 +1,162 @@ +_server = $server; + } + + /** + * List all available XMLRPC methods + * + * Returns an array of methods. + * + * @return array + */ + public function listMethods() + { + $table = $this->_server->getDispatchTable()->getMethods(); + return array_keys($table); + } + + /** + * Display help message for an XMLRPC method + * + * @param string $method + * @return string + */ + public function methodHelp($method) + { + $table = $this->_server->getDispatchTable(); + if (!$table->hasMethod($method)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Method "' . $method . '" does not exist', 640); + } + + return $table->getMethod($method)->getMethodHelp(); + } + + /** + * Return a method signature + * + * @param string $method + * @return array + */ + public function methodSignature($method) + { + $table = $this->_server->getDispatchTable(); + if (!$table->hasMethod($method)) { + require_once 'Zend/XmlRpc/Server/Exception.php'; + throw new Zend_XmlRpc_Server_Exception('Method "' . $method . '" does not exist', 640); + } + $method = $table->getMethod($method)->toArray(); + return $method['prototypes']; + } + + /** + * Multicall - boxcar feature of XML-RPC for calling multiple methods + * in a single request. + * + * Expects a an array of structs representing method calls, each element + * having the keys: + * - methodName + * - params + * + * Returns an array of responses, one for each method called, with the value + * returned by the method. If an error occurs for a given method, returns a + * struct with a fault response. + * + * @see http://www.xmlrpc.com/discuss/msgReader$1208 + * @param array $methods + * @return array + */ + public function multicall($methods) + { + $responses = array(); + foreach ($methods as $method) { + $fault = false; + if (!is_array($method)) { + $fault = $this->_server->fault('system.multicall expects each method to be a struct', 601); + } elseif (!isset($method['methodName'])) { + $fault = $this->_server->fault('Missing methodName: ' . var_export($methods, 1), 602); + } elseif (!isset($method['params'])) { + $fault = $this->_server->fault('Missing params', 603); + } elseif (!is_array($method['params'])) { + $fault = $this->_server->fault('Params must be an array', 604); + } else { + if ('system.multicall' == $method['methodName']) { + // don't allow recursive calls to multicall + $fault = $this->_server->fault('Recursive system.multicall forbidden', 605); + } + } + + if (!$fault) { + try { + $request = new Zend_XmlRpc_Request(); + $request->setMethod($method['methodName']); + $request->setParams($method['params']); + $response = $this->_server->handle($request); + if ($response instanceof Zend_XmlRpc_Fault + || $response->isFault() + ) { + $fault = $response; + } else { + $responses[] = $response->getReturnValue(); + } + } catch (Exception $e) { + $fault = $this->_server->fault($e); + } + } + + if ($fault) { + $responses[] = array( + 'faultCode' => $fault->getCode(), + 'faultString' => $fault->getMessage() + ); + } + } + + return $responses; + } +} diff --git a/library/Zend/XmlRpc/Value.php b/library/Zend/XmlRpc/Value.php new file mode 100755 index 000000000..e4d043554 --- /dev/null +++ b/library/Zend/XmlRpc/Value.php @@ -0,0 +1,529 @@ +_type; + } + + /** + * Get XML generator instance + * + * @return Zend_XmlRpc_Generator_GeneratorAbstract + */ + public static function getGenerator() + { + if (!self::$_generator) { + if (extension_loaded('xmlwriter')) { + require_once 'Zend/XmlRpc/Generator/XmlWriter.php'; + self::$_generator = new Zend_XmlRpc_Generator_XmlWriter(); + } else { + require_once 'Zend/XmlRpc/Generator/DomDocument.php'; + self::$_generator = new Zend_XmlRpc_Generator_DomDocument(); + } + } + + return self::$_generator; + } + + /** + * Sets XML generator instance + * + * @param Zend_XmlRpc_Generator_GeneratorAbstract $generator + * @return void + */ + public static function setGenerator(Zend_XmlRpc_Generator_GeneratorAbstract $generator) + { + self::$_generator = $generator; + } + + /** + * Changes the encoding of the generator + * + * @param string $encoding + * @return void + */ + public static function setEncoding($encoding) + { + $generator = self::getGenerator(); + $newGenerator = new $generator($encoding); + self::setGenerator($newGenerator); + } + + /** + * Return the value of this object, convert the XML-RPC native value into a PHP variable + * + * @return mixed + */ + abstract public function getValue(); + + + /** + * Return the XML code that represent a native MXL-RPC value + * + * @return string + */ + public function saveXml() + { + if (!$this->_xml) { + $this->generateXml(); + $this->_xml = (string) $this->getGenerator(); + } + return $this->_xml; + } + + /** + * Generate XML code that represent a native XML/RPC value + * + * @return void + */ + public function generateXml() + { + $this->_generateXml(); + } + + /** + * Creates a Zend_XmlRpc_Value* object, representing a native XML-RPC value + * A XmlRpcValue object can be created in 3 ways: + * 1. Autodetecting the native type out of a PHP variable + * (if $type is not set or equal to Zend_XmlRpc_Value::AUTO_DETECT_TYPE) + * 2. By specifing the native type ($type is one of the Zend_XmlRpc_Value::XMLRPC_TYPE_* constants) + * 3. From a XML string ($type is set to Zend_XmlRpc_Value::XML_STRING) + * + * By default the value type is autodetected according to it's PHP type + * + * @param mixed $value + * @param Zend_XmlRpc_Value::constant $type + * + * @return Zend_XmlRpc_Value + * @static + */ + public static function getXmlRpcValue($value, $type = self::AUTO_DETECT_TYPE) + { + switch ($type) { + case self::AUTO_DETECT_TYPE: + // Auto detect the XML-RPC native type from the PHP type of $value + return self::_phpVarToNativeXmlRpc($value); + + case self::XML_STRING: + // Parse the XML string given in $value and get the XML-RPC value in it + return self::_xmlStringToNativeXmlRpc($value); + + case self::XMLRPC_TYPE_I4: + // fall through to the next case + case self::XMLRPC_TYPE_INTEGER: + require_once 'Zend/XmlRpc/Value/Integer.php'; + return new Zend_XmlRpc_Value_Integer($value); + + case self::XMLRPC_TYPE_I8: + // fall through to the next case + case self::XMLRPC_TYPE_APACHEI8: + require_once 'Zend/XmlRpc/Value/BigInteger.php'; + return new Zend_XmlRpc_Value_BigInteger($value); + + case self::XMLRPC_TYPE_DOUBLE: + require_once 'Zend/XmlRpc/Value/Double.php'; + return new Zend_XmlRpc_Value_Double($value); + + case self::XMLRPC_TYPE_BOOLEAN: + require_once 'Zend/XmlRpc/Value/Boolean.php'; + return new Zend_XmlRpc_Value_Boolean($value); + + case self::XMLRPC_TYPE_STRING: + require_once 'Zend/XmlRpc/Value/String.php'; + return new Zend_XmlRpc_Value_String($value); + + case self::XMLRPC_TYPE_BASE64: + require_once 'Zend/XmlRpc/Value/Base64.php'; + return new Zend_XmlRpc_Value_Base64($value); + + case self::XMLRPC_TYPE_NIL: + // fall through to the next case + case self::XMLRPC_TYPE_APACHENIL: + require_once 'Zend/XmlRpc/Value/Nil.php'; + return new Zend_XmlRpc_Value_Nil(); + + case self::XMLRPC_TYPE_DATETIME: + require_once 'Zend/XmlRpc/Value/DateTime.php'; + return new Zend_XmlRpc_Value_DateTime($value); + + case self::XMLRPC_TYPE_ARRAY: + require_once 'Zend/XmlRpc/Value/Array.php'; + return new Zend_XmlRpc_Value_Array($value); + + case self::XMLRPC_TYPE_STRUCT: + require_once 'Zend/XmlRpc/Value/Struct.php'; + return new Zend_XmlRpc_Value_Struct($value); + + default: + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Given type is not a '. __CLASS__ .' constant'); + } + } + + /** + * Get XML-RPC type for a PHP native variable + * + * @static + * @param mixed $value + * @return string + */ + public static function getXmlRpcTypeByValue($value) + { + if (is_object($value)) { + if ($value instanceof Zend_XmlRpc_Value) { + return $value->getType(); + } elseif (($value instanceof Zend_Date) || ($value instanceof DateTime)) { + return self::XMLRPC_TYPE_DATETIME; + } + return self::getXmlRpcTypeByValue(get_object_vars($value)); + } elseif (is_array($value)) { + if (!empty($value) && is_array($value) && (array_keys($value) !== range(0, count($value) - 1))) { + return self::XMLRPC_TYPE_STRUCT; + } + return self::XMLRPC_TYPE_ARRAY; + } elseif (is_int($value)) { + return ($value > PHP_INT_MAX) ? self::XMLRPC_TYPE_I8 : self::XMLRPC_TYPE_INTEGER; + } elseif (is_double($value)) { + return self::XMLRPC_TYPE_DOUBLE; + } elseif (is_bool($value)) { + return self::XMLRPC_TYPE_BOOLEAN; + } elseif (is_null($value)) { + return self::XMLRPC_TYPE_NIL; + } elseif (is_string($value)) { + return self::XMLRPC_TYPE_STRING; + } + throw new Zend_XmlRpc_Value_Exception(sprintf( + 'No matching XMLRPC type found for php type %s.', + gettype($value) + )); + } + + /** + * Transform a PHP native variable into a XML-RPC native value + * + * @param mixed $value The PHP variable for convertion + * + * @return Zend_XmlRpc_Value + * @static + */ + protected static function _phpVarToNativeXmlRpc($value) + { + // @see http://framework.zend.com/issues/browse/ZF-8623 + if (is_object($value)) { + if ($value instanceof Zend_XmlRpc_Value) { + return $value; + } + if ($value instanceof Zend_Crypt_Math_BigInteger) { + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception( + 'Using Zend_Crypt_Math_BigInteger to get an ' . + 'instance of Zend_XmlRpc_Value_BigInteger is not ' . + 'available anymore.' + ); + } + } + + switch (self::getXmlRpcTypeByValue($value)) + { + case self::XMLRPC_TYPE_DATETIME: + require_once 'Zend/XmlRpc/Value/DateTime.php'; + return new Zend_XmlRpc_Value_DateTime($value); + + case self::XMLRPC_TYPE_ARRAY: + require_once 'Zend/XmlRpc/Value/Array.php'; + return new Zend_XmlRpc_Value_Array($value); + + case self::XMLRPC_TYPE_STRUCT: + require_once 'Zend/XmlRpc/Value/Struct.php'; + return new Zend_XmlRpc_Value_Struct($value); + + case self::XMLRPC_TYPE_INTEGER: + require_once 'Zend/XmlRpc/Value/Integer.php'; + return new Zend_XmlRpc_Value_Integer($value); + + case self::XMLRPC_TYPE_DOUBLE: + require_once 'Zend/XmlRpc/Value/Double.php'; + return new Zend_XmlRpc_Value_Double($value); + + case self::XMLRPC_TYPE_BOOLEAN: + require_once 'Zend/XmlRpc/Value/Boolean.php'; + return new Zend_XmlRpc_Value_Boolean($value); + + case self::XMLRPC_TYPE_NIL: + require_once 'Zend/XmlRpc/Value/Nil.php'; + return new Zend_XmlRpc_Value_Nil; + + case self::XMLRPC_TYPE_STRING: + // Fall through to the next case + default: + // If type isn't identified (or identified as string), it treated as string + require_once 'Zend/XmlRpc/Value/String.php'; + return new Zend_XmlRpc_Value_String($value); + } + } + + + /** + * Transform an XML string into a XML-RPC native value + * + * @param string|SimpleXMLElement $xml A SimpleXMLElement object represent the XML string + * It can be also a valid XML string for convertion + * + * @return Zend_XmlRpc_Value + * @static + */ + protected static function _xmlStringToNativeXmlRpc($xml) + { + self::_createSimpleXMLElement($xml); + + self::_extractTypeAndValue($xml, $type, $value); + + switch ($type) { + // All valid and known XML-RPC native values + case self::XMLRPC_TYPE_I4: + // Fall through to the next case + case self::XMLRPC_TYPE_INTEGER: + require_once 'Zend/XmlRpc/Value/Integer.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Integer($value); + break; + case self::XMLRPC_TYPE_APACHEI8: + // Fall through to the next case + case self::XMLRPC_TYPE_I8: + require_once 'Zend/XmlRpc/Value/BigInteger.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_BigInteger($value); + break; + case self::XMLRPC_TYPE_DOUBLE: + require_once 'Zend/XmlRpc/Value/Double.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Double($value); + break; + case self::XMLRPC_TYPE_BOOLEAN: + require_once 'Zend/XmlRpc/Value/Boolean.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Boolean($value); + break; + case self::XMLRPC_TYPE_STRING: + require_once 'Zend/XmlRpc/Value/String.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_String($value); + break; + case self::XMLRPC_TYPE_DATETIME: // The value should already be in a iso8601 format + require_once 'Zend/XmlRpc/Value/DateTime.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_DateTime($value); + break; + case self::XMLRPC_TYPE_BASE64: // The value should already be base64 encoded + require_once 'Zend/XmlRpc/Value/Base64.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Base64($value, true); + break; + case self::XMLRPC_TYPE_NIL: + // Fall through to the next case + case self::XMLRPC_TYPE_APACHENIL: + // The value should always be NULL + require_once 'Zend/XmlRpc/Value/Nil.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Nil(); + break; + case self::XMLRPC_TYPE_ARRAY: + // PHP 5.2.4 introduced a regression in how empty($xml->value) + // returns; need to look for the item specifically + $data = null; + foreach ($value->children() as $key => $value) { + if ('data' == $key) { + $data = $value; + break; + } + } + + if (null === $data) { + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Invalid XML for XML-RPC native '. self::XMLRPC_TYPE_ARRAY .' type: ARRAY tag must contain DATA tag'); + } + $values = array(); + // Parse all the elements of the array from the XML string + // (simple xml element) to Zend_XmlRpc_Value objects + foreach ($data->value as $element) { + $values[] = self::_xmlStringToNativeXmlRpc($element); + } + require_once 'Zend/XmlRpc/Value/Array.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Array($values); + break; + case self::XMLRPC_TYPE_STRUCT: + $values = array(); + // Parse all the memebers of the struct from the XML string + // (simple xml element) to Zend_XmlRpc_Value objects + foreach ($value->member as $member) { + // @todo? If a member doesn't have a tag, we don't add it to the struct + // Maybe we want to throw an exception here ? + if (!isset($member->value) or !isset($member->name)) { + continue; + //throw new Zend_XmlRpc_Value_Exception('Member of the '. self::XMLRPC_TYPE_STRUCT .' XML-RPC native type must contain a VALUE tag'); + } + $values[(string)$member->name] = self::_xmlStringToNativeXmlRpc($member->value); + } + require_once 'Zend/XmlRpc/Value/Struct.php'; + $xmlrpcValue = new Zend_XmlRpc_Value_Struct($values); + break; + default: + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Value type \''. $type .'\' parsed from the XML string is not a known XML-RPC native type'); + break; + } + $xmlrpcValue->_setXML($xml->asXML()); + + return $xmlrpcValue; + } + + protected static function _createSimpleXMLElement(&$xml) + { + if ($xml instanceof SimpleXMLElement) { + return; + } + + try { + $xml = new SimpleXMLElement($xml); + } catch (Exception $e) { + // The given string is not a valid XML + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Failed to create XML-RPC value from XML string: ' . $e->getMessage(), $e->getCode(), $e); + } + } + + /** + * Extract XML/RPC type and value from SimpleXMLElement object + * + * @param SimpleXMLElement $xml + * @param string &$type Type bind variable + * @param string &$value Value bind variable + * @return void + */ + protected static function _extractTypeAndValue(SimpleXMLElement $xml, &$type, &$value) + { + $type = key($xml); + $value = current($xml); + next($xml); + + if ($type === null && $value === false) { + $namespaces = array('ex' => 'http://ws.apache.org/xmlrpc/namespaces/extensions'); + foreach ($namespaces as $namespaceName => $namespaceUri) { + $namespaceXml = $xml->children($namespaceUri); + $type = key($namespaceXml); + $value = current($namespaceXml); + next($namespaceXml); + if ($type !== null) { + $type = $namespaceName . ':' . $type; + break; + } + } + } + + //if there is a child element, try to parse type for it + if (!$type && $value instanceof SimpleXMLElement) { + self::_extractTypeAndValue($value->children(), $type, $value); + } + + // If no type was specified, the default is string + if (!$type) { + $type = self::XMLRPC_TYPE_STRING; + if (preg_match('#^.*$#', $xml->asXML())) { + $value = str_replace(array('', ''), '', $xml->asXML()); + } + } + } + + /** + * @param string $xml + * @return void + */ + protected function _setXML($xml) + { + $this->_xml = $this->getGenerator()->stripDeclaration($xml); + } +} diff --git a/library/Zend/XmlRpc/Value/Array.php b/library/Zend/XmlRpc/Value/Array.php new file mode 100755 index 000000000..60f68b296 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Array.php @@ -0,0 +1,73 @@ +_type = self::XMLRPC_TYPE_ARRAY; + parent::__construct($value); + } + + + /** + * Generate the XML code that represent an array native MXL-RPC value + * + * @return void + */ + protected function _generateXml() + { + $generator = $this->getGenerator(); + $generator->openElement('value') + ->openElement('array') + ->openElement('data'); + + if (is_array($this->_value)) { + foreach ($this->_value as $val) { + $val->generateXml(); + } + } + $generator->closeElement('data') + ->closeElement('array') + ->closeElement('value'); + } +} + diff --git a/library/Zend/XmlRpc/Value/Base64.php b/library/Zend/XmlRpc/Value/Base64.php new file mode 100755 index 000000000..eee61bae5 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Base64.php @@ -0,0 +1,68 @@ +_type = self::XMLRPC_TYPE_BASE64; + + $value = (string)$value; // Make sure this value is string + if (!$alreadyEncoded) { + $value = base64_encode($value); // We encode it in base64 + } + $this->_value = $value; + } + + /** + * Return the value of this object, convert the XML-RPC native base64 value into a PHP string + * We return this value decoded (a normal string) + * + * @return string + */ + public function getValue() + { + return base64_decode($this->_value); + } +} diff --git a/library/Zend/XmlRpc/Value/BigInteger.php b/library/Zend/XmlRpc/Value/BigInteger.php new file mode 100755 index 000000000..b636a5814 --- /dev/null +++ b/library/Zend/XmlRpc/Value/BigInteger.php @@ -0,0 +1,58 @@ +_value = $integer->init($value); + $this->_type = self::XMLRPC_TYPE_I8; + } + + /** + * Return bigint value + * + * @return string + */ + public function getValue() + { + return $this->_value; + } +} diff --git a/library/Zend/XmlRpc/Value/Boolean.php b/library/Zend/XmlRpc/Value/Boolean.php new file mode 100755 index 000000000..1a91872ca --- /dev/null +++ b/library/Zend/XmlRpc/Value/Boolean.php @@ -0,0 +1,63 @@ +_type = self::XMLRPC_TYPE_BOOLEAN; + // Make sure the value is boolean and then convert it into a integer + // The double convertion is because a bug in the ZendOptimizer in PHP version 5.0.4 + $this->_value = (int)(bool)$value; + } + + /** + * Return the value of this object, convert the XML-RPC native boolean value into a PHP boolean + * + * @return bool + */ + public function getValue() + { + return (bool)$this->_value; + } +} diff --git a/library/Zend/XmlRpc/Value/Collection.php b/library/Zend/XmlRpc/Value/Collection.php new file mode 100755 index 000000000..2ef9a9a3d --- /dev/null +++ b/library/Zend/XmlRpc/Value/Collection.php @@ -0,0 +1,73 @@ + $value) { + // If the elements of the given array are not Zend_XmlRpc_Value objects, + // we need to convert them as such (using auto-detection from PHP value) + if (!$value instanceof parent) { + $value = self::getXmlRpcValue($value, self::AUTO_DETECT_TYPE); + } + $this->_value[$key] = $value; + } + } + + + /** + * Return the value of this object, convert the XML-RPC native collection values into a PHP array + * + * @return arary + */ + public function getValue() + { + $values = (array)$this->_value; + foreach ($values as $key => $value) { + /* @var $value Zend_XmlRpc_Value */ + $values[$key] = $value->getValue(); + } + return $values; + } +} diff --git a/library/Zend/XmlRpc/Value/DateTime.php b/library/Zend/XmlRpc/Value/DateTime.php new file mode 100755 index 000000000..18d9991dc --- /dev/null +++ b/library/Zend/XmlRpc/Value/DateTime.php @@ -0,0 +1,91 @@ +_type = self::XMLRPC_TYPE_DATETIME; + + if ($value instanceof Zend_Date) { + $this->_value = $value->toString($this->_isoFormatString); + } elseif ($value instanceof DateTime) { + $this->_value = $value->format($this->_phpFormatString); + } elseif (is_numeric($value)) { // The value is numeric, we make sure it is an integer + $this->_value = date($this->_phpFormatString, (int)$value); + } else { + $timestamp = new DateTime($value); + if ($timestamp === false) { // cannot convert the value to a timestamp + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Cannot convert given value \''. $value .'\' to a timestamp'); + } + + $this->_value = $timestamp->format($this->_phpFormatString); // Convert the timestamp to iso8601 format + } + } + + /** + * Return the value of this object as iso8601 dateTime value + * + * @return int As a Unix timestamp + */ + public function getValue() + { + return $this->_value; + } +} diff --git a/library/Zend/XmlRpc/Value/Double.php b/library/Zend/XmlRpc/Value/Double.php new file mode 100755 index 000000000..6251879f0 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Double.php @@ -0,0 +1,62 @@ +_type = self::XMLRPC_TYPE_DOUBLE; + $precision = (int)ini_get('precision'); + $formatString = '%1.' . $precision . 'F'; + $this->_value = rtrim(sprintf($formatString, (float)$value), '0'); + } + + /** + * Return the value of this object, convert the XML-RPC native double value into a PHP float + * + * @return float + */ + public function getValue() + { + return (float)$this->_value; + } +} diff --git a/library/Zend/XmlRpc/Value/Exception.php b/library/Zend/XmlRpc/Value/Exception.php new file mode 100755 index 000000000..3a18f28e7 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Exception.php @@ -0,0 +1,39 @@ + PHP_INT_MAX) { + require_once 'Zend/XmlRpc/Value/Exception.php'; + throw new Zend_XmlRpc_Value_Exception('Overlong integer given'); + } + + $this->_type = self::XMLRPC_TYPE_INTEGER; + $this->_value = (int)$value; // Make sure this value is integer + } + + /** + * Return the value of this object, convert the XML-RPC native integer value into a PHP integer + * + * @return int + */ + public function getValue() + { + return $this->_value; + } +} diff --git a/library/Zend/XmlRpc/Value/Nil.php b/library/Zend/XmlRpc/Value/Nil.php new file mode 100755 index 000000000..67305d0d8 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Nil.php @@ -0,0 +1,60 @@ +_type = self::XMLRPC_TYPE_NIL; + $this->_value = null; + } + + /** + * Return the value of this object, convert the XML-RPC native nill value into a PHP NULL + * + * @return null + */ + public function getValue() + { + return null; + } +} + diff --git a/library/Zend/XmlRpc/Value/Scalar.php b/library/Zend/XmlRpc/Value/Scalar.php new file mode 100755 index 000000000..86397d209 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Scalar.php @@ -0,0 +1,53 @@ +getGenerator(); + + $generator->openElement('value') + ->openElement($this->_type, $this->_value) + ->closeElement($this->_type) + ->closeElement('value'); + } +} diff --git a/library/Zend/XmlRpc/Value/String.php b/library/Zend/XmlRpc/Value/String.php new file mode 100755 index 000000000..37ac5b832 --- /dev/null +++ b/library/Zend/XmlRpc/Value/String.php @@ -0,0 +1,60 @@ +_type = self::XMLRPC_TYPE_STRING; + + // Make sure this value is string and all XML characters are encoded + $this->_value = (string)$value; + } + + /** + * Return the value of this object, convert the XML-RPC native string value into a PHP string + * + * @return string + */ + public function getValue() + { + return (string)$this->_value; + } +} diff --git a/library/Zend/XmlRpc/Value/Struct.php b/library/Zend/XmlRpc/Value/Struct.php new file mode 100755 index 000000000..5272eb508 --- /dev/null +++ b/library/Zend/XmlRpc/Value/Struct.php @@ -0,0 +1,75 @@ +_type = self::XMLRPC_TYPE_STRUCT; + parent::__construct($value); + } + + + /** + * Generate the XML code that represent struct native MXL-RPC value + * + * @return void + */ + protected function _generateXML() + { + $generator = $this->getGenerator(); + $generator->openElement('value') + ->openElement('struct'); + + if (is_array($this->_value)) { + foreach ($this->_value as $name => $val) { + /* @var $val Zend_XmlRpc_Value */ + $generator->openElement('member') + ->openElement('name', $name) + ->closeElement('name'); + $val->generateXml(); + $generator->closeElement('member'); + } + } + $generator->closeElement('struct') + ->closeElement('value'); + } +} diff --git a/nbproject/private/config.properties b/nbproject/private/config.properties new file mode 100755 index 000000000..e69de29bb diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties new file mode 100755 index 000000000..9a80d18e4 --- /dev/null +++ b/nbproject/private/private.properties @@ -0,0 +1,6 @@ +copy.src.files=false +copy.src.on.open=false +copy.src.target= +index.file=index/index +run.as=LOCAL +url=http://192.168.1.1/webacula/ diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100755 index 000000000..9e7cd7bed --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,7 @@ +include.path=${php.global.include.path} +php.version=PHP_56 +source.encoding=UTF-8 +src.dir=. +tags.asp=false +tags.short=false +web.root=. diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100755 index 000000000..0d034c082 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,9 @@ + + + org.netbeans.modules.php.project + + + webacula + + + diff --git a/packaging/Fedora/webacula.spec b/packaging/Fedora/webacula.spec old mode 100644 new mode 100755 diff --git a/packaging/README b/packaging/README old mode 100644 new mode 100755 diff --git a/README b/readme-english old mode 100644 new mode 100755 similarity index 68% rename from README rename to readme-english index 140081d2f..681113efc --- a/README +++ b/readme-english @@ -1,7 +1,21 @@ +### Webacula - Interface Web para o Sistema de Backup Bacula http://www.bacula.org -Webacula - Web Bacula - web interface of a Bacula backup system http://www.bacula.org/ +Click the link below to open the installation tutorial: +[tutorial to install](https://github.com/wanderleihuttel/bacula-utils/blob/master/tutorial/tutorial_de_instalacao_do_webacula_debian9.txt) +This is a fork of webacula with some modifications that were not commited in original repository and some others: -Version: 7.0.0 +- Huge speed improvement in restore file selection (https://github.com/tim4dev/webacula/pull/4 and https://github.com/bareos/contrib-webacula/commit/cecacf944c57a3f4a966a3d6a9aab20d57ba6149) +- Minor changes in styles CSS +- A small changes in layout of volume/pools +- Better method to convert bytes to humanreadable +- Added new setting days_to_show_jobs_terminated feature (Terminated jobs can show more than 1 day) (https://github.com/tim4dev/webacula/pull/8) +- Added new setting date_format and and datetime_format (Option to modify date/time format) +- Better translation for Brazilian Portuguese (pt_BR) +- New field to show when volumes will expire. +- Set default password for root: bacula (just leave 'webacula_root_pwd' empty in db.conf) +- New feature. Menu option to show the schedules + +Version: 7.4.0 Major version number of Webacula will match the major version number of Bacula. WARNING! Webacula 7.x incompatible with prior versions! diff --git a/readme.md b/readme.md new file mode 100755 index 000000000..b5e28520f --- /dev/null +++ b/readme.md @@ -0,0 +1,69 @@ +### Webacula - Interface Web para o Sistema de Backup Bacula http://www.bacula.org + +Clique no link para abrir o tutorial de instalação: +[tutorial de instalação](https://github.com/wanderleihuttel/bacula-utils/blob/master/tutorial/tutorial_de_instalacao_do_webacula_debian9.txt) + +Este é um fork do webacula (cópia) com diversas modificações que não foram efetuadas na versão original e muitas outras: + +- Melhoria de velocidade na seleção de arquivos de restauração +- Alterações nos estilos (arquivos CSS) +- Alteração no layout das pool/volumes +- Método mais eficiente para converter número em bytes para um formato human readable. (Ex: 1024 para 1MB) +- Adicionada opção "setting days_to_show_jobs_terminated" para mostrar os jobs finalizados pelo número XXX de dias. +- Adicionada opção "date_format" e "datetime_format" para alterar a forma de visualização de horas e datas.(Ex: 2016-10-31 para 31/10/2016) +- Melhorias na tradução para o Português Brasil +- Adicionado novo campo na listagem de volumes que mostra quando o volume vai expirar +- Configuração de usuário e senha padrão (Usuário: root - Senha: bacula (quando configurar deixar o campo 'webacula_root_pwd' vazio no arquivo db.conf) +- Possibilidade de alterar a senha do usuário root do bacula na interface gráfica. +- Adicionado nova tela que mostra os agendamentos. + +Version: 7.5.4 +Esta versão é compatível com as versões 7.X e 9.X do Bacula e com PHP >= 5.6 e PHP <= 7.3.0 + +Para atualizar, leia o "Upgrade from prior version" em docs/txt/upgrade.txt + +http://webacula.tim4dev.com/ + +Característica e Funcionalidade do Webacula: + * Bacula e Webacula ACLs (Controle de Lista de Acessos) implementado. + * Suporte completo para MySQL e PostgreSQL (SQLite descontinuado) + * Executar Jobs + * Restaurar todos os arquivos ou selecionar arquivos de um determinado JobId + * Restaurar o backup mais recente de um cliente. + * Restaurar o backup de um cliente antes de uma data específica + * Linha do tempo para os Jobs + * Montar e Desmontar Storages + * Mostra Jobs com Erros + * Mostra o estados dos volumes + * Mostrar os Jobs agendados (próximas 24 horas) + * Mostra os Jobs em execução + * Mostra os Jobs finalizados + * Pesquisar Jobs + * Web (ajax) terminal para o Bacula Console + * Informações detalhadas das Pools, Volumes, Storages e Clientes + * Logbook. Logbook - é simples revista eletrônica de backups. + Os registros no logbook pode ser inseridos, modificados e excluidos manualmente pelo operador. + Os registros podem conter links para os Jobs do Bacula ou links para outros registros deste diário de bordo. + Em registros de inserção de diário de bordo, por exemplo, sobre Jobs, falhas do equipamento, situações supernumerárias, etc. + Logbook são armazenados em uma tabelas separadas do "webacula", atualmente suporta MySQL e PostgreSQL (SqlLite descontinuado) + * RSS feed + * Suporte à vários idiomas - gettext padrão (*.mo) files. Idiomas suportados atualmente: English, Czech, French, German, Italian, Portuguê Brasil, Russian, Spanish. + * Para os webdesigners: ficou muito fácil criar novos temas + * Esta versão é somente compatível com as versões 7.X do Bacula + + + +------- + +Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2014 Yuriy Timofeev + +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 3 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, see http://www.gnu.org/licenses/ diff --git a/screenshot/001.png b/screenshot/001.png new file mode 100755 index 000000000..aa02849c9 Binary files /dev/null and b/screenshot/001.png differ diff --git a/screenshot/002.png b/screenshot/002.png new file mode 100755 index 000000000..3ecb502d5 Binary files /dev/null and b/screenshot/002.png differ diff --git a/screenshot/003.png b/screenshot/003.png new file mode 100755 index 000000000..6725af2fc Binary files /dev/null and b/screenshot/003.png differ diff --git a/screenshot/004.png b/screenshot/004.png new file mode 100755 index 000000000..b13efd722 Binary files /dev/null and b/screenshot/004.png differ diff --git a/screenshot/005.png b/screenshot/005.png new file mode 100755 index 000000000..cff5d0be4 Binary files /dev/null and b/screenshot/005.png differ diff --git a/tests/AllTests.php b/tests/AllTests.php old mode 100644 new mode 100755 diff --git a/tests/README b/tests/README old mode 100644 new mode 100755 diff --git a/tests/application/ControllerTestCase.php b/tests/application/ControllerTestCase.php old mode 100644 new mode 100755 diff --git a/tests/application/ModelTestCase.php b/tests/application/ModelTestCase.php old mode 100644 new mode 100755 diff --git a/tests/application/bootstrap.php b/tests/application/bootstrap.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/AdminControllerTest.php b/tests/application/controllers/AdminControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/AllTests.php b/tests/application/controllers/AllTests.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/ChartControllerTest.php b/tests/application/controllers/ChartControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/ClientControllerTest.php b/tests/application/controllers/ClientControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/DirectorControllerTest.php b/tests/application/controllers/DirectorControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/ErrorControllerTest.php b/tests/application/controllers/ErrorControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/FeedControllerTest.php b/tests/application/controllers/FeedControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/FileControllerTest.php b/tests/application/controllers/FileControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/HelpControllerTest.php b/tests/application/controllers/HelpControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/IndexControllerTest.php b/tests/application/controllers/IndexControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/JobControllerTest.php b/tests/application/controllers/JobControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/LogControllerTest.php b/tests/application/controllers/LogControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/OtherControllerTest.php b/tests/application/controllers/OtherControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/PoolControllerTest.php b/tests/application/controllers/PoolControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/RestoreControllerTest.php b/tests/application/controllers/RestoreControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/StorageControllerTest.php b/tests/application/controllers/StorageControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/VolumeControllerTest.php b/tests/application/controllers/VolumeControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/WbjobdescControllerTest.php b/tests/application/controllers/WbjobdescControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/WblogbookControllerTest.php b/tests/application/controllers/WblogbookControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/controllers/WebaculaAclControllerTest.php b/tests/application/controllers/WebaculaAclControllerTest.php old mode 100644 new mode 100755 diff --git a/tests/application/models/AllTests.php b/tests/application/models/AllTests.php old mode 100644 new mode 100755 diff --git a/tests/application/models/JobTest.php b/tests/application/models/JobTest.php old mode 100644 new mode 100755 diff --git a/tests/application/models/WbTmpTableTest.php b/tests/application/models/WbTmpTableTest.php old mode 100644 new mode 100755 diff --git a/tests/application/models/WbjobdescTest.php b/tests/application/models/WbjobdescTest.php old mode 100644 new mode 100755 diff --git a/tests/application/models/WblogbookTest.php b/tests/application/models/WblogbookTest.php old mode 100644 new mode 100755 diff --git a/tests/application/models/WblogtypeTest.php b/tests/application/models/WblogtypeTest.php old mode 100644 new mode 100755 diff --git a/tests/conf/.htaccess_development b/tests/conf/.htaccess_development old mode 100644 new mode 100755 diff --git a/tests/conf/config.ini.mysql b/tests/conf/config.ini.mysql old mode 100644 new mode 100755 diff --git a/tests/conf/config.ini.pgsql b/tests/conf/config.ini.pgsql old mode 100644 new mode 100755 diff --git a/tests/conf/config.ini.sqlite b/tests/conf/config.ini.sqlite old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.cs b/tests/conf/locale/config.ini.cs old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.de b/tests/conf/locale/config.ini.de old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.en b/tests/conf/locale/config.ini.en old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.es b/tests/conf/locale/config.ini.es old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.fake_locale b/tests/conf/locale/config.ini.fake_locale old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.fr b/tests/conf/locale/config.ini.fr old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.it b/tests/conf/locale/config.ini.it old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.pt_BR b/tests/conf/locale/config.ini.pt_BR old mode 100644 new mode 100755 diff --git a/tests/conf/locale/config.ini.ru b/tests/conf/locale/config.ini.ru old mode 100644 new mode 100755 diff --git a/tests/locale-test.sh b/tests/locale-test.sh old mode 100644 new mode 100755 diff --git a/tests/phpunit_report.xml b/tests/phpunit_report.xml old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/MySql/10_bacula_make_tables b/tests/prepare_tests/MySql/10_bacula_make_tables old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/MySql/20_webacula_fill_logbook b/tests/prepare_tests/MySql/20_webacula_fill_logbook old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/MySql/25_webacula_fill_jobdesc b/tests/prepare_tests/MySql/25_webacula_fill_jobdesc old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/MySql/30_webacula_fill_acl b/tests/prepare_tests/MySql/30_webacula_fill_acl old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/MySql/40_bacula_fill_log b/tests/prepare_tests/MySql/40_bacula_fill_log old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/PostgreSql/10_bacula_make_tables b/tests/prepare_tests/PostgreSql/10_bacula_make_tables old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/PostgreSql/20_bacula_grant_privileges b/tests/prepare_tests/PostgreSql/20_bacula_grant_privileges old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/PostgreSql/30_webacula_fill_logbook b/tests/prepare_tests/PostgreSql/30_webacula_fill_logbook old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/PostgreSql/35_webacula_fill_jobdesc b/tests/prepare_tests/PostgreSql/35_webacula_fill_jobdesc old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/PostgreSql/40_webacula_fill_acl b/tests/prepare_tests/PostgreSql/40_webacula_fill_acl old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/SqLite/10_bacula_make_tables b/tests/prepare_tests/SqLite/10_bacula_make_tables old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/SqLite/20_webacula_fill_logbook b/tests/prepare_tests/SqLite/20_webacula_fill_logbook old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/SqLite/25_webacula_fill_jobdesc b/tests/prepare_tests/SqLite/25_webacula_fill_jobdesc old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/SqLite/30_webacula_fill_acl b/tests/prepare_tests/SqLite/30_webacula_fill_acl old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/bacula_DBcopy_MySQL2PGSQL.php b/tests/prepare_tests/bacula_DBcopy_MySQL2PGSQL.php old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/bacula_DBcopy_MySQL2sqlite.php b/tests/prepare_tests/bacula_DBcopy_MySQL2sqlite.php old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/catalog/bacula.mysql.dump b/tests/prepare_tests/catalog/bacula.mysql.dump old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/create_dir_tree.php b/tests/prepare_tests/create_dir_tree.php old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/dev/devchanger/conf b/tests/prepare_tests/dev/devchanger/conf old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/dev/pool.file.7d.0001 b/tests/prepare_tests/dev/pool.file.7d.0001 old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/opt/bacula/etc/bacula-dir.conf b/tests/prepare_tests/opt/bacula/etc/bacula-dir.conf old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/opt/bacula/etc/bacula-fd.conf b/tests/prepare_tests/opt/bacula/etc/bacula-fd.conf old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/opt/bacula/etc/bacula-sd.conf b/tests/prepare_tests/opt/bacula/etc/bacula-sd.conf old mode 100644 new mode 100755 diff --git a/tests/prepare_tests/opt/bacula/etc/bconsole.conf b/tests/prepare_tests/opt/bacula/etc/bconsole.conf old mode 100644 new mode 100755